diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1b4cae3aaa8..0e42635244d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -37,7 +37,7 @@ src/MESONT/* @iafoss src/ML-HDNNP/* @singraber src/ML-IAP/* @athomps src/ML-PACE/* @yury-lysogorskiy -src/ML-POD/* @exapde @rohskopf +src/ML-POD/* @exapde src/MOFFF/* @hheenen src/MOLFILE/* @akohlmey src/NETCDF/* @pastewka @@ -65,9 +65,12 @@ src/MANYBODY/pair_nb3b_screened.* @flodesani src/REPLICA/*_grem.* @dstelter92 src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps +src/EXTRA-FIX/fix_deform_pressure.* @jtclemm src/MISC/*_tracker.* @jtclemm src/MC/fix_gcmc.* @athomps src/MC/fix_sgcmc.* @athomps +src/REAXFF/compute_reaxff_atom.* @rbberger +src/KOKKOS/compute_reaxff_atom_kokkos.* @rbberger src/REPLICA/fix_pimd_langevin.* @Yi-FanLi # core LAMMPS classes @@ -80,7 +83,7 @@ src/bond.* @sjplimp src/comm*.* @sjplimp src/compute.* @sjplimp src/dihedral.* @sjplimp -src/domain.* @sjplimp +src/domain.* @sjplimp @stanmoore1 src/dump*.* @sjplimp src/error.* @sjplimp src/finish.* @sjplimp diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 00a4596cc8b..c0c3e3f89a8 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -25,7 +25,7 @@ jobs: - name: Cache Coverity id: cache-coverity - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ./download/ key: ${{ runner.os }}-download-${{ hashFiles('**/coverity_tool.*') }} diff --git a/.github/workflows/unittest-macos.yml b/.github/workflows/unittest-macos.yml index 6970faceaab..f9c2a838d6d 100644 --- a/.github/workflows/unittest-macos.yml +++ b/.github/workflows/unittest-macos.yml @@ -32,7 +32,7 @@ jobs: run: mkdir build - name: Set up ccache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} key: macos-ccache-${{ github.sha }} diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index f7e9b314bd1..f87c92396f8 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -120,6 +120,19 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL " set(CMAKE_TUNE_DEFAULT "-Minform=severe") endif() +# this hack is required to compile fmt lib with CrayClang version 15.0.2 +# CrayClang is only directly recognized by version 3.28 and later +if(CMAKE_VERSION VERSION_LESS 3.28) + get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME) + if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC")) + set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR") + endif() +else() + if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") + set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR") + endif() +endif() + # silence nvcc warnings if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT} -Xcudafe --diag_suppress=unrecognized_pragma") @@ -209,6 +222,10 @@ endif() add_executable(lmp ${MAIN_SOURCES}) target_link_libraries(lmp PRIVATE lammps) set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) +# re-export all symbols for plugins +if(PKG_PLUGIN AND (NOT ((CMAKE_SYSTEM_NAME STREQUAL "Windows")))) + set_target_properties(lmp PROPERTIES ENABLE_EXPORTS TRUE) +endif() install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR}) option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) @@ -415,6 +432,7 @@ if(BUILD_OMP) (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") OR (CMAKE_CXX_COMPILER_ID STREQUAL "XLClang") OR ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0))) # GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts. # Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe. @@ -425,6 +443,21 @@ if(BUILD_OMP) target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=${LAMMPS_OMP_COMPAT_LEVEL}) target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX) target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX) + + # this hack is required to correctly link with OpenMP support when using CrayClang version 15.0.2 + # CrayClang is only directly recognized by version 3.28 and later + if(CMAKE_VERSION VERSION_LESS 3.28) + get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME) + if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC")) + set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp") + set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp") + endif() + else() + if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") + set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp") + set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp") + endif() + endif() endif() # lower C++ standard for fmtlib sources when using Intel classic compiler @@ -539,12 +572,12 @@ endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## -foreach(HEADER cmath) - check_include_file_cxx(${HEADER} FOUND_${HEADER}) - if(NOT FOUND_${HEADER}) - message(FATAL_ERROR "Could not find needed header - ${HEADER}") - endif(NOT FOUND_${HEADER}) -endforeach(HEADER) +if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))) + check_include_file_cxx(cmath FOUND_CMATH) + if(NOT FOUND_CMATH) + message(FATAL_ERROR "Could not find the required 'cmath' header") + endif(NOT FOUND_CMATH) +endif() # make the standard math library overrideable and autodetected (for systems that don't have it) find_library(STANDARD_MATH_LIB m DOC "Standard Math library") @@ -971,14 +1004,15 @@ if(PKG_KOKKOS) endif() endif() if(PKG_KSPACE) - if (LMP_HEFFTE) + if (FFT_USE_HEFFTE) message(STATUS "<<< FFT settings >>> -- Primary FFT lib: heFFTe") - if (HEFFTE_BACKEND) - message(STATUS "heFFTe backend: ${HEFFTE_BACKEND}") + if (FFT_HEFFTE_BACKEND) + message(STATUS "heFFTe backend: ${FFT_HEFFTE_BACKEND}") else() message(STATUS "heFFTe backend: stock (builtin FFT implementation, tested for corrected but not optimized for production)") endif() + message(STATUS "Using distributed FFT algorithms from heFTTe") if(FFT_SINGLE) message(STATUS "Using single precision FFTs") else() @@ -997,28 +1031,10 @@ if(PKG_KSPACE) else() message(STATUS "Using non-threaded FFTs") endif() - if (FFT_HEFFTE) - message(STATUS "Using distributed algorithms from heFTTe") - else() - message(STATUS "Using builtin distributed algorithms") - endif() - if(PKG_KOKKOS) - if(Kokkos_ENABLE_CUDA) - if(FFT STREQUAL "KISS") - message(STATUS "Kokkos FFT: KISS") - else() - message(STATUS "Kokkos FFT: cuFFT") - endif() - elseif(Kokkos_ENABLE_HIP) - if(FFT STREQUAL "KISS") - message(STATUS "Kokkos FFT: KISS") - else() - message(STATUS "Kokkos FFT: hipFFT") - endif() - else() - message(STATUS "Kokkos FFT: ${FFT}") - endif() - endif() + message(STATUS "Using builtin distributed FFT algorithms") + endif() + if(PKG_KOKKOS) + message(STATUS "Kokkos FFT: ${FFT_KOKKOS}") endif() endif() if(BUILD_DOC) diff --git a/cmake/Modules/DetectHIPInstallation.cmake b/cmake/Modules/DetectHIPInstallation.cmake index 0b425435b68..dfa99047231 100644 --- a/cmake/Modules/DetectHIPInstallation.cmake +++ b/cmake/Modules/DetectHIPInstallation.cmake @@ -1,11 +1,3 @@ -if(NOT DEFINED HIP_PATH) - if(NOT DEFINED ENV{HIP_PATH}) - message(FATAL_ERROR "HIP support requires HIP_PATH to be defined.\n" - "Either pass the HIP_PATH as a CMake option via -DHIP_PATH=... or set the HIP_PATH environment variable.") - else() - set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to HIP installation") - endif() -endif() if(NOT DEFINED ROCM_PATH) if(NOT DEFINED ENV{ROCM_PATH}) set(ROCM_PATH "/opt/rocm" CACHE PATH "Path to ROCm installation") @@ -13,4 +5,4 @@ if(NOT DEFINED ROCM_PATH) set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Path to ROCm installation") endif() endif() -list(APPEND CMAKE_PREFIX_PATH ${HIP_PATH} ${ROCM_PATH}) +list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH}) diff --git a/cmake/Modules/ExternalCMakeProject.cmake b/cmake/Modules/ExternalCMakeProject.cmake index 75c33ab99ec..7e3681dc282 100644 --- a/cmake/Modules/ExternalCMakeProject.cmake +++ b/cmake/Modules/ExternalCMakeProject.cmake @@ -43,5 +43,5 @@ function(ExternalCMakeProject target url hash basedir cmakedir cmakefile) "${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/CMakeLists.txt") endif() add_subdirectory("${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}" - "${CMAKE_BINARY_DIR}/_deps/${target}-build") + "${CMAKE_BINARY_DIR}/_deps/${target}-build" EXCLUDE_FROM_ALL) endfunction(ExternalCMakeProject) diff --git a/cmake/Modules/OpenCLLoader.cmake b/cmake/Modules/OpenCLLoader.cmake index 23ca81a5f27..4b5c5a12002 100644 --- a/cmake/Modules/OpenCLLoader.cmake +++ b/cmake/Modules/OpenCLLoader.cmake @@ -1,6 +1,6 @@ message(STATUS "Downloading and building OpenCL loader library") -set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2022.01.04.tar.gz" CACHE STRING "URL for OpenCL loader tarball") -set(OPENCL_LOADER_MD5 "8d3a801e87a2c6653bf0e27707063914" CACHE STRING "MD5 checksum of OpenCL loader tarball") +set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2024.02.09.tar.gz" CACHE STRING "URL for OpenCL loader tarball") +set(OPENCL_LOADER_MD5 "f3573cf9daa3558ba46fd5866517f38f" CACHE STRING "MD5 checksum of OpenCL loader tarball") mark_as_advanced(OPENCL_LOADER_URL) mark_as_advanced(OPENCL_LOADER_MD5) @@ -8,4 +8,3 @@ set(INSTALL_LIBOPENCL OFF CACHE BOOL "" FORCE) include(ExternalCMakeProject) ExternalCMakeProject(opencl_loader ${OPENCL_LOADER_URL} ${OPENCL_LOADER_MD5} opencl-loader . "") -add_library(OpenCL::OpenCL ALIAS OpenCL) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 4c3288df842..6d0ce303a5d 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -1,3 +1,10 @@ + +# Silence CMake warnings about FindCUDA being obsolete. +# We may need to eventually rewrite this section to use enable_language(CUDA) +if(POLICY CMP0146) + cmake_policy(SET CMP0146 OLD) +endif() + set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h ${GPU_SOURCES_DIR}/fix_gpu.h diff --git a/cmake/Modules/Packages/INTEL.cmake b/cmake/Modules/Packages/INTEL.cmake index 006a23e7ac0..e6755bf23be 100644 --- a/cmake/Modules/Packages/INTEL.cmake +++ b/cmake/Modules/Packages/INTEL.cmake @@ -111,6 +111,9 @@ if(PKG_KSPACE) list(APPEND INTEL_SOURCES ${INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp) RegisterIntegrateStyle(${INTEL_SOURCES_DIR}/verlet_lrt_intel.h) endif() +if(PKG_ML-SNAP) + list(APPEND INTEL_SOURCES ${INTEL_SOURCES_DIR}/sna_intel.cpp) +endif() target_sources(lammps PRIVATE ${INTEL_SOURCES}) target_include_directories(lammps PRIVATE ${INTEL_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 0edd9a3baad..a2f462905a7 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -16,11 +16,6 @@ endif() if(Kokkos_ENABLE_OPENMP) if(NOT BUILD_OMP) message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP") - else() - # NVHPC/(AMD)Clang does not seem to provide a detectable OpenMP version, but is far beyond version 3.1 - if((OpenMP_CXX_VERSION VERSION_LESS 3.1) AND NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))) - message(FATAL_ERROR "Compiler must support OpenMP 3.1 or later with Kokkos_ENABLE_OPENMP") - endif() endif() endif() ######################################################################## @@ -50,8 +45,8 @@ if(DOWNLOAD_KOKKOS) list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}") list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") include(ExternalProject) - set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.2.00.tar.gz" CACHE STRING "URL for KOKKOS tarball") - set(KOKKOS_MD5 "731647b61a4233f568d583702e9cd6d1" CACHE STRING "MD5 checksum of KOKKOS tarball") + set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.3.00.tar.gz" CACHE STRING "URL for KOKKOS tarball") + set(KOKKOS_MD5 "889dcea2b5ced3debdc5b0820044bdc4" CACHE STRING "MD5 checksum of KOKKOS tarball") mark_as_advanced(KOKKOS_URL) mark_as_advanced(KOKKOS_MD5) GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK) @@ -76,7 +71,7 @@ if(DOWNLOAD_KOKKOS) add_dependencies(LAMMPS::KOKKOSCORE kokkos_build) add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build) elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 4.2.00 REQUIRED CONFIG) + find_package(Kokkos 4.3.00 REQUIRED CONFIG) target_link_libraries(lammps PRIVATE Kokkos::kokkos) else() set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) @@ -131,16 +126,33 @@ if(PKG_KSPACE) list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) + set(FFT_KOKKOS "KISS" CACHE STRING "FFT library for Kokkos-enabled KSPACE package") + set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT) + set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES}) + validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES) + string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS) + if(Kokkos_ENABLE_CUDA) - if(NOT (FFT STREQUAL "KISS")) - target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) - target_link_libraries(lammps PRIVATE cufft) + if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "CUFFT"))) + message(FATAL_ERROR "The CUDA backend of Kokkos requires either KISS FFT or CUFFT.") + elseif(FFT_KOKKOS STREQUAL "KISS") + message(WARNING "Using KISS FFT with the CUDA backend of Kokkos may be sub-optimal.") + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS) + elseif(FFT_KOKKOS STREQUAL "CUFFT") + find_package(CUDAToolkit REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_CUFFT) + target_link_libraries(lammps PRIVATE CUDA::cufft) endif() elseif(Kokkos_ENABLE_HIP) - if(NOT (FFT STREQUAL "KISS")) + if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "HIPFFT"))) + message(FATAL_ERROR "The HIP backend of Kokkos requires either KISS FFT or HIPFFT.") + elseif(FFT_KOKKOS STREQUAL "KISS") + message(WARNING "Using KISS FFT with the HIP backend of Kokkos may be sub-optimal.") + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS) + elseif(FFT_KOKKOS STREQUAL "HIPFFT") include(DetectHIPInstallation) find_package(hipfft REQUIRED) - target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT) target_link_libraries(lammps PRIVATE hip::hipfft) endif() endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 9c9c879cd4a..1fdd8981441 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -48,10 +48,15 @@ endif() option(FFT_USE_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF) if(FFT_USE_HEFFTE) - # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte - set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL) - set(FFT_HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") + # if FFT_HEFFTE is enabled, use the heFFTe parallel engine instead of the builtin fftMPI engine + + # map standard FFT choices to available heFFTe backends: FFTW3 -> FFTW, KISS -> BUILTIN + set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL BUILTIN) + string(REPLACE FFTW3 FFTW FFT_HEFFTE_BACKEND_DEFAULT ${FFT}) + string(REPLACE KISS BUILTIN FFT_HEFFTE_BACKEND_DEFAULT ${FFT_HEFFTE_BACKEND_DEFAULT}) + set(FFT_HEFFTE_BACKEND "${FFT_HEFFTE_BACKEND_DEFAULT}" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") set_property(CACHE FFT_HEFFTE_BACKEND PROPERTY STRINGS ${FFT_HEFFTE_BACKEND_VALUES}) + validate_option(FFT_HEFFTE_BACKEND FFT_HEFFTE_BACKEND_VALUES) if(FFT_HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL set(HEFFTE_COMPONENTS "FFTW") @@ -60,24 +65,38 @@ if(FFT_USE_HEFFTE) set(HEFFTE_COMPONENTS "MKL") set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe") else() + set(HEFFTE_COMPONENTS "BUILTIN") message(WARNING "FFT_HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs") endif() find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) if (NOT Heffte_FOUND) # download and build + if(BUILD_SHARED_LIBS) + set(BUILD_SHARED_LIBS_WAS_ON YES) + set(BUILD_SHARED_LIBS OFF) + endif() + if(CMAKE_REQUEST_PIC) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif() + set(Heffte_ENABLE_${FFT_HEFFTE_BACKEND} ON) include(FetchContent) FetchContent_Declare(HEFFTE_PROJECT # using v2.4.0 URL "https://github.com/icl-utk-edu/heffte/archive/refs/tags/v2.4.0.tar.gz" URL_HASH SHA256=02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d ) FetchContent_Populate(HEFFTE_PROJECT) - add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR}) - set_target_properties(lmp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") - set_target_properties(lammps PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") - add_library(Heffte::Heffte INTERFACE IMPORTED GLOBAL) - target_link_libraries(Heffte::Heffte INTERFACE Heffte) - endif() + # fixup git hash to show "(unknown)" to avoid compilation failures. + file(READ ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h HEFFTE_CFG_FILE_TEXT) + string(REPLACE "@Heffte_GIT_HASH@" "(unknown)" HEFFTE_CFG_FILE_TEXT "${HEFFTE_CFG_FILE_TEXT}") + file(WRITE ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h "${HEFFTE_CFG_FILE_TEXT}") + + add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR} EXCLUDE_FROM_ALL) + add_library(Heffte::Heffte ALIAS Heffte) + if(BUILD_SHARED_LIBS_WAS_ON) + set(BUILD_SHARED_LIBS ON) + endif() + endif() target_compile_definitions(lammps PRIVATE -DFFT_HEFFTE "-DFFT_HEFFTE_${FFT_HEFFTE_BACKEND}") target_link_libraries(lammps PRIVATE Heffte::Heffte) endif() diff --git a/cmake/Modules/Packages/MDI.cmake b/cmake/Modules/Packages/MDI.cmake index 447b941d990..b21e508b87f 100644 --- a/cmake/Modules/Packages/MDI.cmake +++ b/cmake/Modules/Packages/MDI.cmake @@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al if(DOWNLOAD_MDI) message(STATUS "MDI download requested - we will build our own") - set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.16.tar.gz" CACHE STRING "URL for MDI tarball") - set(MDI_MD5 "407db44e2d79447ab5c1233af1965f65" CACHE STRING "MD5 checksum for MDI tarball") + set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.26.tar.gz" CACHE STRING "URL for MDI tarball") + set(MDI_MD5 "3124bb85259471e2a53a891f04bf697a" CACHE STRING "MD5 checksum for MDI tarball") mark_as_advanced(MDI_URL) mark_as_advanced(MDI_MD5) GetFallbackURL(MDI_URL MDI_FALLBACK) diff --git a/cmake/Modules/Packages/ML-IAP.cmake b/cmake/Modules/Packages/ML-IAP.cmake index d6059c44b8b..91b772efb57 100644 --- a/cmake/Modules/Packages/ML-IAP.cmake +++ b/cmake/Modules/Packages/ML-IAP.cmake @@ -10,6 +10,14 @@ endif() option(MLIAP_ENABLE_PYTHON "Build ML-IAP package with Python support" ${MLIAP_ENABLE_PYTHON_DEFAULT}) +# if ML-PACE package *and* MLIAP with Python is enabled is included we may also include ML-PACE support in ML-IAP +set(MLIAP_ENABLE_ACE_DEFAULT OFF) +if(PKG_ML-PACE) + set(MLIAP_ENABLE_ACE_DEFAULT ON) +endif() + +option(MLIAP_ENABLE_ACE "Build ML-IAP package with ACE support" ${MLIAP_ENABLE_ACE_DEFAULT}) + if(MLIAP_ENABLE_PYTHON) find_package(Cythonize REQUIRED) find_package(Python COMPONENTS NumPy REQUIRED) @@ -36,3 +44,10 @@ if(MLIAP_ENABLE_PYTHON) target_compile_definitions(lammps PRIVATE -DMLIAP_PYTHON) target_include_directories(lammps PRIVATE ${MLIAP_BINARY_DIR}) endif() + +if(MLIAP_ENABLE_ACE) + if(NOT PKG_ML-PACE) + message(FATAL_ERROR "Must enable ML-PACE package for including ACE support in ML-IAP") + endif() + target_compile_definitions(lammps PRIVATE -DMLIAP_ACE) +endif() diff --git a/cmake/Modules/Packages/ML-QUIP.cmake b/cmake/Modules/Packages/ML-QUIP.cmake index a90b77190f5..5cb5a0967e0 100644 --- a/cmake/Modules/Packages/ML-QUIP.cmake +++ b/cmake/Modules/Packages/ML-QUIP.cmake @@ -18,7 +18,9 @@ if(DOWNLOAD_QUIP) set(temp "${temp}F77FLAGS += -fpp -fixed -fPIC\n") set(temp "${temp}F95_PRE_FILENAME_FLAG = -Tf\n") elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) - set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${CMAKE_Fortran_FLAGS_${BTYPE}}\n") + # quip library uses GNU fortran extensions. If any more restrictive standards are set, reset them + string(REGEX REPLACE -std=f[0-9]+ -std=gnu _fopt "${CMAKE_Fortran_FLAGS_${BTYPE}}") + set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${_fopt} -fmax-stack-var-size=6553600\n") set(temp "${temp}DEFINES += -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE\n") set(temp "${temp}F95FLAGS += -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC\n") set(temp "${temp}F77FLAGS += -x f77-cpp-input -fno-second-underscore -fPIC\n") @@ -56,7 +58,7 @@ if(DOWNLOAD_QUIP) GIT_SUBMODULES "src/fox;src/GAP" PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config /arch/Makefile.lammps CONFIGURE_COMMAND env QUIP_ARCH=lammps make config - BUILD_COMMAND env QUIP_ARCH=lammps make libquip + BUILD_COMMAND env QUIP_ARCH=lammps make -j1 libquip INSTALL_COMMAND "" BUILD_IN_SOURCE YES BUILD_BYPRODUCTS /build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX} diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index b90bff4b9ca..b1a4f3cc72f 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -21,9 +21,9 @@ else() set(PLUMED_CONFIG_OMP "--disable-openmp") endif() -set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.2/plumed-src-2.8.2.tgz" +set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.3/plumed-src-2.8.3.tgz" CACHE STRING "URL for PLUMED tarball") -set(PLUMED_MD5 "599092b6a0aa6fff992612537ad98994" CACHE STRING "MD5 checksum of PLUMED tarball") +set(PLUMED_MD5 "76d23cd394eba9e6530316ed1184e219" CACHE STRING "MD5 checksum of PLUMED tarball") mark_as_advanced(PLUMED_URL) mark_as_advanced(PLUMED_MD5) diff --git a/cmake/presets/kokkos-cuda.cmake b/cmake/presets/kokkos-cuda.cmake index c3ee081898f..878ce0c5667 100644 --- a/cmake/presets/kokkos-cuda.cmake +++ b/cmake/presets/kokkos-cuda.cmake @@ -9,5 +9,8 @@ set(BUILD_OMP ON CACHE BOOL "" FORCE) get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE) set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE) +# If KSPACE is also enabled, use CUFFT for FFTs +set(FFT_KOKKOS "CUFFT" CACHE STRING "" FORCE) + # hide deprecation warnings temporarily for stable release set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE) diff --git a/cmake/presets/kokkos-hip.cmake b/cmake/presets/kokkos-hip.cmake index 827a37152b3..38bf27092f9 100644 --- a/cmake/presets/kokkos-hip.cmake +++ b/cmake/presets/kokkos-hip.cmake @@ -12,6 +12,9 @@ set(BUILD_OMP ON CACHE BOOL "" FORCE) set(CMAKE_CXX_COMPILER hipcc CACHE STRING "" FORCE) set(CMAKE_TUNE_FLAGS "-munsafe-fp-atomics" CACHE STRING "" FORCE) +# If KSPACE is also enabled, use CUFFT for FFTs +set(FFT_KOKKOS "HIPFFT" CACHE STRING "" FORCE) + # hide deprecation warnings temporarily for stable release set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE) diff --git a/doc/Makefile b/doc/Makefile index b652c515e1f..f9f8336665f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -100,6 +100,7 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\ env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\ env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\ + env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\ $(PYTHON) $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\ echo "############################################" ;\ deactivate ;\ @@ -182,6 +183,7 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\ env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\ env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\ + env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\ $(PYTHON) utils/check-styles.py -s ../src -d src ;\ echo "############################################" ;\ deactivate ;\ @@ -231,6 +233,7 @@ role_check : @( env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst && exit 1 || : ) @( env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst && exit 1 || : ) @( env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst && exit 1 || : ) + @( env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst && exit 1 || : ) link_check : $(VENV) html @(\ diff --git a/doc/lammps.1 b/doc/lammps.1 index 100ea9b6633..27ec20b1d30 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,7 +1,7 @@ -.TH LAMMPS "1" "21 November 2023" "2023-11-21" +.TH LAMMPS "1" "17 April 2024" "2024-04-17" .SH NAME .B LAMMPS -\- Molecular Dynamics Simulator. Version 21 November 2023 +\- Molecular Dynamics Simulator. Version 17 April 2024 .SH SYNOPSIS .B lmp @@ -297,7 +297,7 @@ the chapter on errors in the manual gives some additional information about error messages, if possible. .SH COPYRIGHT -© 2003--2022 Sandia Corporation +© 2003--2024 Sandia Corporation This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index 4ed8e73dfea..9778340c942 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -877,6 +877,9 @@ Bibliography **(PLUMED)** G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) +**(Pavlov)** +D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Journal of High Performance Computing Applications, 38, 34-49 (2024). + **(Paquay)** Paquay and Kusters, Biophys. J., 110, 6, (2016). preprint available at `arXiv:1411.3019 `_. diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index c674b2c2585..4d8bf0d07f7 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -122,32 +122,39 @@ Code Coverage and Unit Testing (CMake only) ------------------------------------------- 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 `_. +during development: + +- Integration testing (i.e. whether the code compiles + on various platforms and with a variety of compilers and settings), +- Unit testing (i.e. whether certain functions or classes of the code + produce the expected results for given inputs), +- Run testing (i.e. whether selected input decks can run to completion + without crashing for multiple configurations), +- 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 scripts and inputs for integration, run, and regression testing are maintained in a `separate repository `_ -of the LAMMPS project on GitHub. +of the LAMMPS project on GitHub. A few tests are also run as GitHub +Actions and their configuration files are in the ``.github/workflows/`` +folder of the LAMMPS git tree. -The unit testing facility is integrated into the CMake build process -of the LAMMPS source code distribution itself. It can be enabled by +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 (if those are not found locally a recent version will be -downloaded and compiled along with LAMMPS and the test program) to -compile and will download and compile a specific recent version of the -`Googletest `_ C++ test framework -for implementing the tests. - -.. admonition:: Software version requirements for testing +It requires the `YAML `_ library and matching +development headers to compile (if those are not found locally a recent +version of that library will be downloaded and compiled along with +LAMMPS and the test programs) and will download and compile a specific +version of the `GoogleTest `_ C++ +test framework that is used to implement the tests. + +.. admonition:: Software version and LAMMPS configuration requirements :class: note The compiler and library version requirements for the testing @@ -155,7 +162,7 @@ for implementing the tests. example the default GNU C++ and Fortran compilers of RHEL/CentOS 7.x (version 4.8.x) are not sufficient. The CMake configuration will try to detect incompatible versions and either skip incompatible tests or - stop with an error. Also the number of tests will depend on + stop with an error. Also the number of available tests will depend on installed LAMMPS packages, development environment, operating system, and configuration settings. @@ -234,12 +241,31 @@ will be skipped if prerequisite features are not available in LAMMPS. time. Preference is given to parts of the code base that are easy to test or commonly used. -Tests for styles of the same kind of style (e.g. pair styles or bond -styles) are performed with the same test executable using different -input files in YAML format. So to add a test for another style of the -same kind it may be sufficient to add a suitable YAML file. -:doc:`Detailed instructions for adding tests ` are -provided in the Programmer Guide part of the manual. +Tests as shown by the ``ctest`` program are command lines defined in the +``CMakeLists.txt`` files in the ``unittest`` directory tree. A few +tests simply execute LAMMPS with specific command line flags and check +the output to the screen for expected content. A large number of unit +tests are special tests programs using the `GoogleTest framework +`_ and linked to the LAMMPS +library that test individual functions or create a LAMMPS class +instance, execute one or more commands and check data inside the LAMMPS +class hierarchy. There are also tests for the C-library, Fortran, and +Python module interfaces to LAMMPS. The Python tests use the Python +"unittest" module in a similar fashion than the others use `GoogleTest`. +These special test programs are structured to perform multiple +individual tests internally and each of those contains several checks +(aka assertions) for internal data being changed as expected. + +Tests for force computing or modifying styles (e.g. styles for non-bonded +and bonded interactions and selected fixes) are run by using a more generic +test program that reads its input from files in YAML format. The YAML file +provides the information on how to customized the test program to test +a specific style and - if needed - with specific settings. +To add a test for another, similar style (e.g. a new pair style) it is +usually sufficient to add a suitable YAML file. :doc:`Detailed +instructions for adding tests ` are provided in the +Programmer Guide part of the manual. A description of what happens +during the tests is given below. Unit tests for force styles ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1f643a9d149..f66238c3c91 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -533,9 +533,6 @@ They must be specified in uppercase. * - A64FX - HOST - ARMv8.2 with SVE Support - * - WSM - - HOST - - Intel Westmere CPU (SSE 4.2) * - SNB - HOST - Intel Sandy/Ivy Bridge CPU (AVX 1) @@ -566,18 +563,15 @@ They must be specified in uppercase. * - KNL - HOST - Intel Knights Landing Xeon Phi - * - BGQ - - HOST - - IBM Blue Gene/Q CPU - * - POWER7 - - HOST - - IBM POWER7 CPU * - POWER8 - HOST - IBM POWER8 CPU * - POWER9 - HOST - IBM POWER9 CPU + * - RISCV_SG2042 + - HOST + - SG2042 (RISC-V) CPU * - KEPLER30 - GPU - NVIDIA Kepler generation CC 3.0 GPU @@ -666,7 +660,7 @@ They must be specified in uppercase. - GPU - Intel GPU Ponte Vecchio -This list was last updated for version 4.2 of the Kokkos library. +This list was last updated for version 4.3.0 of the Kokkos library. .. tabs:: diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 7fb75395066..34100871ce9 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -44,7 +44,7 @@ require use of an FFT library to compute 1d FFTs. The KISS FFT library is included with LAMMPS, but other libraries can be faster. LAMMPS can use them if they are available on your system. -.. versionadded:: TBD +.. versionadded:: 7Feb2024 Alternatively, LAMMPS can use the `heFFTe `_ library for the MPI @@ -59,15 +59,19 @@ libraries and better pipelining for packing and communication. .. code-block:: bash -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS + -D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT, default is KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy -D FFT_USE_HEFFTE=value # yes or no (default), yes links to heFFTe .. note:: - The values for the FFT variable must be in upper-case. This is - an exception to the rule that all CMake variables can be specified - with lower-case values. + When the Kokkos variant of a package is compiled and selected at run time, + the FFT library selected by the FFT_KOKKOS variable applies. Otherwise, + the FFT library selected by the FFT variable applies. + The same FFT settings apply to both. FFT_KOKKOS must be compatible with the + Kokkos back end - for example, when using the CUDA back end of Kokkos, + you must use either CUFFT or KISS. Usually these settings are all that is needed. If FFTW3 is selected, then CMake will try to detect, if threaded FFTW @@ -106,6 +110,8 @@ libraries and better pipelining for packing and communication. FFT_INC = -DFFT_FFTW3 # -DFFT_FFTW3, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS # default is KISS if not specified + FFT_INC = -DFFT_KOKKOS_CUFFT # -DFFT_KOKKOS_{FFTW,FFTW3,MKL,CUFFT,HIPFFT,KISS} + # default is KISS if not specified FFT_INC = -DFFT_SINGLE # do not specify for double precision FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries @@ -116,6 +122,8 @@ libraries and better pipelining for packing and communication. FFT_INC = -I/usr/local/include FFT_PATH = -L/usr/local/lib + FFT_LIB = -lhipfft # hipFFT either precision + FFT_LIB = -lcufft # cuFFT either precision FFT_LIB = -lfftw3 # FFTW3 double precision FFT_LIB = -lfftw3 -lfftw3_omp # FFTW3 double precision with threads (needs -DFFT_FFTW_THREADS) FFT_LIB = -lfftw3 -lfftw3f # FFTW3 single precision @@ -178,6 +186,11 @@ The Intel MKL math library is part of the Intel compiler suite. It can be used with the Intel or GNU compiler (see the ``FFT_LIB`` setting above). +The cuFFT and hipFFT FFT libraries are packaged with NVIDIA's CUDA and +AMD's HIP installations, respectively. These FFT libraries require the +Kokkos acceleration package to be enabled and the Kokkos back end to be +GPU-resident (i.e., HIP or CUDA). + Performing 3d FFTs in parallel can be time-consuming due to data access and required communication. This cost can be reduced by performing single-precision FFTs instead of double precision. Single precision @@ -189,11 +202,11 @@ generally less than the difference in precision. Using the ``-DFFT_SINGLE`` setting trades off a little accuracy for reduced memory use and parallel communication costs for transposing 3d FFT data. -When using ``-DFFT_SINGLE`` with FFTW3, you may need to build the FFTW -library a second time with support for single-precision. +When using ``-DFFT_SINGLE`` with FFTW3, you may need to ensure that +the FFTW3 installation includes support for single-precision. -For FFTW3, do the following, which should produce the additional -library ``libfftw3f.a`` or ``libfftw3f.so``\ . +When compiler FFTW3 from source, you can do the following, which should +produce the additional libraries ``libfftw3f.a`` and/or ``libfftw3f.so``\ . .. code-block:: bash diff --git a/doc/src/Commands_bond.rst b/doc/src/Commands_bond.rst index aaf706b5df5..0c389df3994 100644 --- a/doc/src/Commands_bond.rst +++ b/doc/src/Commands_bond.rst @@ -89,6 +89,7 @@ OPT. * :doc:`cosine/shift (o) ` * :doc:`cosine/shift/exp (o) ` * :doc:`cosine/squared (o) ` + * :doc:`cosine/squared/restricted (o) ` * :doc:`cross ` * :doc:`dipole (o) ` * :doc:`fourier (o) ` @@ -124,9 +125,10 @@ OPT. * * * :doc:`charmm (iko) ` - * :doc:`charmmfsw ` + * :doc:`charmmfsw (k) ` * :doc:`class2 (ko) ` * :doc:`cosine/shift/exp (o) ` + * :doc:`cosine/squared/restricted ` * :doc:`fourier (io) ` * :doc:`harmonic (iko) ` * :doc:`helix (o) ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index e89e302673a..a7648218faa 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -61,6 +61,7 @@ OPT. * :doc:`controller ` * :doc:`damping/cundall ` * :doc:`deform (k) ` + * :doc:`deform/pressure ` * :doc:`deposit ` * :doc:`dpd/energy (k) ` * :doc:`drag ` @@ -262,6 +263,7 @@ OPT. * :doc:`wall/body/polyhedron ` * :doc:`wall/colloid ` * :doc:`wall/ees ` + * :doc:`wall/flow (k) ` * :doc:`wall/gran (k) ` * :doc:`wall/gran/region ` * :doc:`wall/harmonic ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index e7761e7bee7..514785c15c7 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -146,7 +146,7 @@ OPT. * :doc:`lj/charmm/coul/long/soft (o) ` * :doc:`lj/charmm/coul/msm (o) ` * :doc:`lj/charmmfsw/coul/charmmfsh ` - * :doc:`lj/charmmfsw/coul/long ` + * :doc:`lj/charmmfsw/coul/long (k) ` * :doc:`lj/class2 (gko) ` * :doc:`lj/class2/coul/cut (ko) ` * :doc:`lj/class2/coul/cut/soft ` @@ -245,6 +245,7 @@ OPT. * :doc:`oxrna2/coaxstk ` * :doc:`pace (k) ` * :doc:`pace/extrapolation (k) ` + * :doc:`pedone (o) ` * :doc:`pod ` * :doc:`peri/eps ` * :doc:`peri/lps (o) ` @@ -256,6 +257,7 @@ OPT. * :doc:`rann ` * :doc:`reaxff (ko) ` * :doc:`rebo (io) ` + * :doc:`rebomos (o) ` * :doc:`resquared (go) ` * :doc:`saip/metal (t) ` * :doc:`sdpd/taitwater/isothermal ` diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index 98a52fc2d77..0ade07af641 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -129,7 +129,7 @@ USER-REAXC. USER-REAXC package ------------------ -.. deprecated:: TBD +.. deprecated:: 7Feb2024 The USER-REAXC package has been renamed to :ref:`REAXFF `. In the process also the pair style and related fixes were renamed to use diff --git a/doc/src/Developer_updating.rst b/doc/src/Developer_updating.rst index 36c6974b303..83491ac0956 100644 --- a/doc/src/Developer_updating.rst +++ b/doc/src/Developer_updating.rst @@ -18,8 +18,10 @@ Available topics in mostly chronological order are: - `Setting flags in the constructor`_ - `Rename of pack/unpack_comm() to pack/unpack_forward_comm()`_ - `Use ev_init() to initialize variables derived from eflag and vflag`_ +- `Use utils::count_words() functions instead of atom->count_words()`_ - `Use utils::numeric() functions instead of force->numeric()`_ - `Use utils::open_potential() function to open potential files`_ +- `Use symbolic Atom and AtomVec constants instead of numerical values`_ - `Simplify customized error messages`_ - `Use of "override" instead of "virtual"`_ - `Simplified and more compact neighbor list requests`_ @@ -129,6 +131,41 @@ Not applying this change will not cause a compilation error, but can lead to inconsistent behavior and incorrect tallying of energy or virial. +Use utils::count_words() functions instead of atom->count_words() +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionchanged:: 2Jun2020 + +The "count_words()" functions for parsing text have been moved from the +Atom class to the :doc:`utils namespace `. The +"count_words()" function in "utils" uses the Tokenizer class internally +to split a line into words and count them, thus it will not modify the +argument string as the function in the Atoms class did and thus had a +variant using a copy buffer. Unlike the old version, the new version +does not remove comments. For that you can use the +:cpp:func:`utils::trim_comment() function +` as shown in the example below. + +Old: + +.. code-block:: c++ + + nwords = atom->count_words(line); + int nwords = atom->count_words(buf); + +New: + +.. code-block:: c++ + + nwords = utils::count_words(line); + int nwords = utils::count_words(utils::trim_comment(buf)); + +.. seealso:: + + :cpp:func:`utils::count_words() `, + :cpp:func:`utils::trim_comments() ` + + Use utils::numeric() functions instead of force->numeric() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -136,11 +173,12 @@ Use utils::numeric() functions instead of force->numeric() The "numeric()" conversion functions (including "inumeric()", "bnumeric()", and "tnumeric()") have been moved from the Force class to -the utils namespace. Also they take an additional argument that selects -whether the ``Error::all()`` or ``Error::one()`` function should be -called in case of an error. The former should be used when *all* MPI -processes call the conversion function and the latter *must* be used -when they are called from only one or a subset of the MPI processes. +the :doc:`utils namespace `. Also they take an +additional argument that selects whether the ``Error::all()`` or +``Error::one()`` function should be called in case of an error. The +former should be used when *all* MPI processes call the conversion +function and the latter *must* be used when they are called from only +one or a subset of the MPI processes. Old: @@ -196,6 +234,71 @@ New: fp = utils::open_potential(filename, lmp); +Use symbolic Atom and AtomVec constants instead of numerical values +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionchanged:: 18Sep2020 + +Properties in LAMMPS that were represented by integer values (0, 1, +2, 3) to indicate settings in the ``Atom`` and ``AtomVec`` classes (or +classes derived from it) (and its derived classes) have been converted +to use scoped enumerators instead. + +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Symbolic Constant + - Value + - Symbolic Constant + - Value + * - Atom::GROW + - 0 + - Atom::MAP_NONE + - 0 + * - Atom::RESTART + - 1 + - Atom::MAP_ARRAY + - 1 + * - Atom::BORDER + - 2 + - Atom::MAP_HASH + - 2 + * - Atom::ATOMIC + - 0 + - Atom::MAP_YES + - 3 + * - Atom::MOLECULAR + - 1 + - AtomVec::PER_ATOM + - 0 + * - Atom::TEMPLATE + - 2 + - AtomVec::PER_TYPE + - 1 + +Old: + +.. code-block:: c++ + + molecular = 0; + mass_type = 1; + if (atom->molecular == 2) + if (atom->map_style == 2) + atom->add_callback(0); + atom->delete_callback(id,1); + +New: + +.. code-block:: c++ + + molecular = Atom::ATOMIC; + mass_type = AtomVec::PER_TYPE; + if (atom->molecular == Atom::TEMPLATE) + if (atom->map_style == Atom::MAP_HASH) + atom->add_callback(Atom::GROW); + atom->delete_callback(id,Atom::RESTART); + Simplify customized error messages ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Developer_utils.rst b/doc/src/Developer_utils.rst index 625ce152021..76e90e17ba5 100644 --- a/doc/src/Developer_utils.rst +++ b/doc/src/Developer_utils.rst @@ -635,10 +635,10 @@ Tohoku University (under MIT license) ---------- -.. doxygenfunction:: MathEigen::jacobi3(double const *const *mat, double *eval, double **evec) +.. doxygenfunction:: MathEigen::jacobi3(double const *const *mat, double *eval, double **evec, int sort) :project: progguide -.. doxygenfunction:: MathEigen::jacobi3(double const mat[3][3], double *eval, double evec[3][3]) +.. doxygenfunction:: MathEigen::jacobi3(double const mat[3][3], double *eval, double evec[3][3], int sort) :project: progguide --------------------------- diff --git a/doc/src/Errors_details.rst b/doc/src/Errors_details.rst index b63d80a9ae4..c798784106d 100644 --- a/doc/src/Errors_details.rst +++ b/doc/src/Errors_details.rst @@ -13,15 +13,44 @@ discussions of such cases. Unknown identifier in data file ------------------------------- -This error happens when LAMMPS encounters a line of text in an unexpected format -while reading a data file. This is most commonly cause by inconsistent header and -section data. The header section informs LAMMPS how many entries or lines are expected in the -various sections (like Atoms, Masses, Pair Coeffs, *etc.*\ ) of the data file. -If there is a mismatch, LAMMPS will either keep reading beyond the end of a section -or stop reading before the section has ended. - -Such a mismatch can happen unexpectedly when the first line of the data -is *not* a comment as required by the format. That would result in -LAMMPS expecting, for instance, 0 atoms because the "atoms" header line -is treated as a comment. +This error happens when LAMMPS encounters a line of text with an +unexpected keyword while :doc:`reading a data file `. This +would be either header keywords or section header keywords. This is +most commonly due to a mistyped keyword or due to a keyword that is +inconsistent with the :doc:`atom style ` used. +The header section informs LAMMPS how many entries or lines are expected +in the various sections (like Atoms, Masses, Pair Coeffs, *etc.*\ ) of +the data file. If there is a mismatch, LAMMPS will either keep reading +beyond the end of a section or stop reading before the section has +ended. In that case the next line will not contain a recognized keyword. + +Such a mismatch can also happen when the first line of the data +is *not* a comment as required by the format, but a line with a valid +header keyword. That would result in LAMMPS expecting, for instance, +0 atoms because the "atoms" header line is the first line and thus +treated as a comment. + +Another possibility to trigger this error is to have a keyword in the +data file that corresponds to a fix (e.g. :doc:`fix cmap `) +but the :doc:`read_data ` command is missing the (optional) +arguments that identify the fix and the header keyword and section +keyword or those arguments are inconsistent with the keywords in the +data file. + +.. _err0002: + +Incorrect format in ... section of data file +-------------------------------------------- + +This error happens when LAMMPS reads the contents of a section of a +:doc:`data file ` and the number of parameters in the line +differs from what is expected. This most commonly happens, when the +atom style is different from what is expected for a specific data file +since changing the atom style usually changes the format of the line. + +This error can also happen when the number of entries indicated in the +header of a data file (e.g. the number of atoms) is larger than the +number of lines provided (e.g. in the corresponding Atoms section) +and then LAMMPS will continue reading into the next section and that +would have a completely different format. diff --git a/doc/src/Errors_messages.rst b/doc/src/Errors_messages.rst index bfdba4f6a1a..2a146a91845 100644 --- a/doc/src/Errors_messages.rst +++ b/doc/src/Errors_messages.rst @@ -7883,12 +7883,6 @@ keyword to allow for additional bonds to be formed Fix poems cannot (yet) work with coupled bodies whose joints connect the bodies in a tree structure. -*Triclinic box skew is too large* - The displacement in a skewed direction must be less than half the box - length in that dimension. E.g. the xy tilt must be between -half and - +half of the x box length. This constraint can be relaxed by using - the box tilt command. - *Tried to convert a double to int, but input_double > INT_MAX* Self-explanatory. diff --git a/doc/src/Errors_warnings.rst b/doc/src/Errors_warnings.rst index b0fa2e21739..d244818cc97 100644 --- a/doc/src/Errors_warnings.rst +++ b/doc/src/Errors_warnings.rst @@ -752,13 +752,6 @@ This will most likely cause errors in kinetic fluctuations. More than the maximum # of neighbors was found multiple times. This was unexpected. -*Triclinic box skew is large* - The displacement in a skewed direction is normally required to be less - than half the box length in that dimension. E.g. the xy tilt must be - between -half and +half of the x box length. You have relaxed the - constraint using the box tilt command, but the warning means that a - LAMMPS simulation may be inefficient as a result. - *Use special bonds = 0,1,1 with bond style fene* Most FENE models need this setting for the special_bonds command. diff --git a/doc/src/Fortran.rst b/doc/src/Fortran.rst index 76fdff753a8..e9976b9032e 100644 --- a/doc/src/Fortran.rst +++ b/doc/src/Fortran.rst @@ -315,6 +315,10 @@ of the contents of the :f:mod:`LIBLAMMPS` Fortran interface to LAMMPS. :ftype extract_variable: function :f set_variable: :f:subr:`set_variable` :ftype set_variable: subroutine + :f set_string_variable: :f:subr:`set_set_string_variable` + :ftype set_string_variable: subroutine + :f set_internal_variable: :f:subr:`set_internal_variable` + :ftype set_internal_variable: subroutine :f gather_atoms: :f:subr:`gather_atoms` :ftype gather_atoms: subroutine :f gather_atoms_concat: :f:subr:`gather_atoms_concat` @@ -1251,8 +1255,8 @@ Procedures Bound to the :f:type:`lammps` Derived Type three elements of the global vector calculated by fix recenter into the variables *dx*, *dy*, and *dz*, respectively. - If asked for per-atom or local data, :f:func:`extract_compute` returns a - pointer to actual LAMMPS data. The pointer so returned will have the + If asked for per-atom or local data, :f:func:`extract_fix` returns a + pointer to actual LAMMPS data. The pointer returned will have the appropriate size to match the internal data, and will be type/kind/rank-checked at the time of the assignment. For example, @@ -1398,18 +1402,55 @@ Procedures Bound to the :f:type:`lammps` Derived Type Set the value of a string-style variable. - .. versionadded:: 3Nov2022 + .. deprecated:: 7Feb2024 This function assigns a new value from the string *str* to the string-style variable *name*\ . If *name* does not exist or is not a string-style variable, an error is generated. + .. warning:: + + This subroutine is deprecated and :f:subr:`set_string_variable` + should be used instead. + :p character(len=*) name: name of the variable :p character(len=*) str: new value to assign to the variable :to: :cpp:func:`lammps_set_variable` -------- +.. f:subroutine:: set_string_variable(name, str) + + Set the value of a string-style variable. + + .. versionadded:: 7Feb2024 + + This function assigns a new value from the string *str* to the string-style + variable *name*\ . If *name* does not exist or is not a string-style + variable, an error is generated. + + :p character(len=*) name: name of the variable + :p character(len=*) str: new value to assign to the variable + :to: :cpp:func:`lammps_set_string_variable` + +-------- + +.. f:subroutine:: set_internal_variable(name, val) + + Set the value of a internal-style variable. + + .. versionadded:: 7Feb2024 + + This function assigns a new value from the floating-point number *val* to + the internal-style variable *name*\ . If *name* does not exist or is not + an internal-style variable, an error is generated. + + :p character(len=*) name: name of the variable + :p read(c_double) val: new value to assign to the variable + :to: :cpp:func:`lammps_set_internal_variable` + +-------- + .. f:subroutine:: gather_atoms(name, count, data) This function calls :cpp:func:`lammps_gather_atoms` to gather the named diff --git a/doc/src/Howto_2d.rst b/doc/src/Howto_2d.rst index ae58711063a..d02cfc0814e 100644 --- a/doc/src/Howto_2d.rst +++ b/doc/src/Howto_2d.rst @@ -1,42 +1,112 @@ -2d simulations -============== +================ + 2d simulations +================ -Use the :doc:`dimension ` command to specify a 2d simulation. +You must use the :doc:`dimension ` command to specify a 2d +simulation. The default is 3d. -Make the simulation box periodic in z via the :doc:`boundary ` -command. This is the default. +A 2d simulation box must be periodic in z as set by the :doc:`boundary +` command. This is the default. -If using the :doc:`create_box ` command to define a -simulation box, set the z dimensions narrow, but finite, so that the -:doc:`create_atoms ` command will fill the 3d simulation -box with a single z plane of atoms - e.g. +Simulation boxes in LAMMPS can be either orthogonal or triclinic in +shape. Orthogonal boxes in 2d are a rectangle with 4 edges that are +each perpendicular to either the x or y coordinate axes. Triclinic +boxes in 2d are a parallelogram with opposite pairs of faces parallel +to each other. LAMMPS supports two forms of triclinic boxes, +restricted and general, which for 2d differ in how the box is oriented +with respect to the xy coordinate axes. See the :doc:`Howto triclinic +` for a detailed description of all 3 kinds of +simulation boxes. + +Here are examples of using the :doc:`create_box ` command +to define the simulation box for a 2d system. + +.. code-block:: LAMMPS + + # 2d orthogonal box using a block-style region + region mybox block -10 10 0 10 -0.5 0.5 + create_box 1 mybox + + # 2d restricted triclinic box using a prism-style region with only xy tilt + region mybox prism 0 10 0 10 -0.5 0.5 2.0 0.0 0.0 + create_box 1 mybox + + # 2d general triclinic box using a primitive cell for a 2d hex lattice + lattice custom 1.0 a1 1.0 0.0 0.0 a2 0.5 0.86602540378 0.0 & + a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general + create_box 1 NULL 0 5 0 5 -0.5 0.5 + +Note that for 2d orthogonal or restricted triclinic boxes, the box has +a 3rd dimension which must straddle z = 0.0 in the z dimension. +Typically the width of box in the z dimension should be narrow, +e.g. -0.5 to 0.5, but that is not required. For a 2d general +triclinic box, the *a3* vector defined by the :doc:`lattice ` +command must be (0.0,0.0,1.0), which is its default value. Also the +*clo* and *chi* arguments of the :doc:`create_box ` +command must be -0.5 and 0.5. + +Here are examples of using the :doc:`read_data ` command +to define the simulation box for a 2d system via keywords in the +header section of the data file. These are the same boxes as the examples +for the :doc:`create_box ` command .. code-block:: LAMMPS - create_box 1 -10 10 -10 10 -0.25 0.25 + # 2d orthogonal box + -10 10 xlo xhi + 0 10 ylo yhi + -0.5 0.5 zlo zhi # this is the default, so no need to specify + + # 2d restricted triclinic box with only xy tilt + -10 10 xlo xhi + 0 10 ylo yhi + -0.5 0.5 zlo zhi # this is the default, so no need to specify + 2.0 0.0 0.0 xy xz yz + + # 3d general triclinic box using a primitive cell for a 2d hex lattice + 5 0 0 avec + 2.5 4.3301270189 0 bvec + 0 0 1 cvec # this is the default, so no need to specify + 0 0 -0.5 abc origin # this is the default for 2d, so no need to specify + +Note that for 2d orthogonal or restricted triclinic boxes, the box has +a 3rd dimension specified by the *zlo zhi* values, which must straddle +z = 0.0. Typically the width of box in the z dimension should be +narrow, e.g. -0.5 to 0.5, but that is not required. For a 2d general +triclinic box, the z component of *avec* and *bvec* must be zero, and +*cvec* must be (0,0,1), which is the default. The z component of *abc +origin* must also be -0.5, which is the default. + +If using the :doc:`create_atoms ` command to create +atoms in the 2d simulation box, all the z coordinates of created atoms +will be zero. -If using the :doc:`read_data ` command to read in a file of -atom coordinates, set the "zlo zhi" values to be finite but narrow, -similar to the create_box command settings just described. For each -atom in the file, assign a z coordinate so it falls inside the -z-boundaries of the box - e.g. 0.0. +If using the :doc:`read_data ` command to read in a data +file of atom coordinates for a 2d system, the z coordinates of all +atoms should be zero. A value within epsilon of zero is also allowed +in case the data file was generated by another program with finite +numeric precision, in which case the z coord for the atom will be set +to zero. -Use the :doc:`fix enforce2d ` command as the last -defined fix to ensure that the z-components of velocities and forces -are zeroed out every timestep. The reason to make it the last fix is -so that any forces induced by other fixes will be zeroed out. +Use the :doc:`fix enforce2d ` command as the last fix +defined in the input script. It ensures that the z-components of +velocities and forces are zeroed out every timestep. The reason to +make it the last fix is so that any forces added by other fixes will +also be zeroed out. -Many of the example input scripts included in the LAMMPS distribution +Many of the example input scripts included in the examples directory are for 2d models. .. note:: Some models in LAMMPS treat particles as finite-size spheres, as - opposed to point particles. See the :doc:`atom_style sphere ` and :doc:`fix nve/sphere ` - commands for details. By default, for 2d simulations, such particles - will still be modeled as 3d spheres, not 2d discs (circles), meaning + opposed to point particles. See the :doc:`atom_style sphere + ` and :doc:`fix nve/sphere ` commands + for details. By default, for 2d simulations, such particles will + still be modeled as 3d spheres, not 2d discs (circles), meaning their moment of inertia will be that of a sphere. If you wish to - model them as 2d discs, see the :doc:`set density/disc ` command - and the *disc* option for the :doc:`fix nve/sphere `, - :doc:`fix nvt/sphere `, :doc:`fix nph/sphere `, :doc:`fix npt/sphere ` - commands. + model them as 2d discs, see the :doc:`set density/disc ` + command and the *disc* option for the :doc:`fix nve/sphere + `, :doc:`fix nvt/sphere `, + :doc:`fix nph/sphere `, :doc:`fix npt/sphere + ` commands. diff --git a/doc/src/Howto_body.rst b/doc/src/Howto_body.rst index 968e10edd8a..23d0e1019d8 100644 --- a/doc/src/Howto_body.rst +++ b/doc/src/Howto_body.rst @@ -102,8 +102,19 @@ particles of different styles | :doc:`dump image ` | output body particle attributes as an image | +------------------------------------------------+-----------------------------------------------------+ -The pair styles defined for use with specific body styles are listed -in the sections below. +The pair styles currently defined for use with specific body styles +are listed in the sections below. + +Note that for all the body styles, if the data file defines a general +triclinic box, then the orientation of the body particle and its +corresponding 6 moments of inertia and other orientation-dependent +values should reflect the fact the body is defined withing a general +triclinic box with edge vectors **A**,**B**,**C**. LAMMPS will rotate +the box to convert it to a restricted triclinic box. This operation +will also rotate the orientation of the body particles. See the +:doc:`Howto triclinic ` doc page for more details. +The sections below highlight the orientation-dependent values specific +to each body style. ---------- @@ -154,12 +165,18 @@ values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the principal axes of the rigid body itself. LAMMPS performs the latter calculation internally. + The coordinates of each sub-particle are specified as its x,y,z displacement from the center-of-mass of the body particle. The center-of-mass position of the particle is specified by the x,y,z values in the *Atoms* section of the data file, as is the total mass of the body particle. +Note that if the data file defines a general triclinic simulation box, +these sub-particle displacements are orientation-dependent and, as +mentioned above, should reflect the body particle's orientation within +the general triclinic box. + The :doc:`pair_style body/nparticle ` command can be used with this body style to compute body/body and body/non-body interactions. @@ -226,6 +243,7 @@ values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the principal axes of the rigid body itself. LAMMPS performs the latter calculation internally. + The coordinates of each vertex are specified as its x,y,z displacement from the center-of-mass of the body particle. The center-of-mass position of the particle is specified by the x,y,z values in the @@ -270,6 +288,11 @@ A disk, whose diameter is 3.0, mass 1.0, is specified as follows: 0 0 0 3.0 +Note that if the data file defines a general triclinic simulation box, +these polygon vertex displacements are orientation-dependent and, as +mentioned above, should reflect the body particle's orientation within +the general triclinic box. + The :doc:`pair_style body/rounded/polygon ` command can be used with this body style to compute body/body interactions. The :doc:`fix wall/body/polygon ` @@ -366,6 +389,7 @@ values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the principal axes of the rigid body itself. LAMMPS performs the latter calculation internally. + The coordinates of each vertex are specified as its x,y,z displacement from the center-of-mass of the body particle. The center-of-mass position of the particle is specified by the x,y,z values in the @@ -435,6 +459,11 @@ A sphere whose diameter is 3.0 and mass 1.0, is specified as follows: The number of edges and faces for a rod or sphere must be listed, but is ignored. +Note that if the data file defines a general triclinic simulation box, +these polyhedron vertex displacements are orientation-dependent and, +as mentioned above, should reflect the body particle's orientation +within the general triclinic box. + The :doc:`pair_style body/rounded/polhedron ` command can be used with this body style to compute body/body interactions. The :doc:`fix diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 42324cf2f10..8b710d10650 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -349,6 +349,8 @@ Some common LAMMPS specific variables - when set to ``name`` the LAMMPS executable and library will be called ``lmp_name`` and ``liblammps_name.a`` * - ``FFT`` - select which FFT library to use: ``FFTW3``, ``MKL``, ``KISS`` (default, unless FFTW3 is found) + * - ``FFT_KOKKOS`` + - select which FFT library to use in Kokkos-enabled styles: ``FFTW3``, ``MKL``, ``HIPFFT``, ``CUFFT``, ``KISS`` (default) * - ``FFT_SINGLE`` - select whether to use single precision FFTs (default: ``off``) * - ``WITH_JPEG`` diff --git a/doc/src/Howto_granular.rst b/doc/src/Howto_granular.rst index c22cab66bc1..b0c801be112 100644 --- a/doc/src/Howto_granular.rst +++ b/doc/src/Howto_granular.rst @@ -45,10 +45,15 @@ atoms, and should be used for granular system instead of the fix style To model heat conduction, one must add the temperature and heatflow atom variables with: + * :doc:`fix property/atom ` + a temperature integration fix + * :doc:`fix heat/flow ` + and a heat conduction option defined in both + * :doc:`pair_style granular ` * :doc:`fix wall/gran ` diff --git a/doc/src/Howto_structured_data.rst b/doc/src/Howto_structured_data.rst index 29c65a7a347..8b9c3dbc80d 100644 --- a/doc/src/Howto_structured_data.rst +++ b/doc/src/Howto_structured_data.rst @@ -52,8 +52,8 @@ JSON "ke": 2.4962152903997174569 } -YAML format thermo_style output -=============================== +YAML format thermo_style or dump_style output +============================================= Extracting data from log file ----------------------------- @@ -112,6 +112,9 @@ of that run: Number of runs: 2 TotEng = -4.62140097780047 +Extracting data from dump file +------------------------------ + .. versionadded:: 4May2022 YAML format output has been added to multiple commands in LAMMPS, diff --git a/doc/src/Howto_triclinic.rst b/doc/src/Howto_triclinic.rst index 2983d013c6f..3529579d653 100644 --- a/doc/src/Howto_triclinic.rst +++ b/doc/src/Howto_triclinic.rst @@ -2,43 +2,195 @@ Triclinic (non-orthogonal) simulation boxes =========================================== By default, LAMMPS uses an orthogonal simulation box to encompass the -particles. The :doc:`boundary ` command sets the boundary -conditions of the box (periodic, non-periodic, etc). The orthogonal -box has its "origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors -starting from the origin given by **a** = (xhi-xlo,0,0); **b** = -(0,yhi-ylo,0); **c** = (0,0,zhi-zlo). The 6 parameters +particles. The orthogonal box has its "origin" at (xlo,ylo,zlo) and +extends to (xhi,yhi,zhi). Conceptually it is defined by 3 edge +vectors starting from the origin given by **A** = (xhi-xlo,0,0); **B** += (0,yhi-ylo,0); **C** = (0,0,zhi-zlo). The :doc:`boundary +` command sets the boundary conditions for the 6 faces of +the box (periodic, non-periodic, etc). The 6 parameters (xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simulation box -is created, e.g. by the :doc:`create_box ` or -:doc:`read_data ` or :doc:`read_restart ` -commands. Additionally, LAMMPS defines box size parameters lx,ly,lz -where lx = xhi-xlo, and similarly in the y and z dimensions. The 6 -parameters, as well as lx,ly,lz, can be output via the -:doc:`thermo_style custom ` command. - -LAMMPS also allows simulations to be performed in triclinic -(non-orthogonal) simulation boxes shaped as a parallelepiped with -triclinic symmetry. The parallelepiped has its "origin" at -(xlo,ylo,zlo) and is defined by 3 edge vectors starting from the -origin given by **a** = (xhi-xlo,0,0); **b** = (xy,yhi-ylo,0); **c** = -(xz,yz,zhi-zlo). *xy,xz,yz* can be 0.0 or positive or negative values -and are called "tilt factors" because they are the amount of -displacement applied to faces of an originally orthogonal box to -transform it into the parallelepiped. In LAMMPS the triclinic -simulation box edge vectors **a**, **b**, and **c** cannot be arbitrary -vectors. As indicated, **a** must lie on the positive x axis. **b** must -lie in the xy plane, with strictly positive y component. **c** may have -any orientation with strictly positive z component. The requirement -that **a**, **b**, and **c** have strictly positive x, y, and z components, -respectively, ensures that **a**, **b**, and **c** form a complete -right-handed basis. These restrictions impose no loss of generality, -since it is possible to rotate/invert any set of 3 crystal basis -vectors so that they conform to the restrictions. - -For example, assume that the 3 vectors **A**,\ **B**,\ **C** are the edge -vectors of a general parallelepiped, where there is no restriction on -**A**,\ **B**,\ **C** other than they form a complete right-handed basis i.e. -**A** x **B** . **C** > 0. The equivalent LAMMPS **a**,\ **b**,\ **c** are a linear -rotation of **A**, **B**, and **C** and can be computed as follows: +is created by one of these commands: + +* :doc:`create_box ` +* :doc:`read_data ` +* :doc:`read_restart ` +* :doc:`read_dump ` + +Internally, LAMMPS defines box size parameters lx,ly,lz where lx = +xhi-xlo, and similarly in the y and z dimensions. The 6 parameters, as +well as lx,ly,lz, can be output via the :doc:`thermo_style custom +` command. See the :doc:`Howto 2d ` doc page +for info on how zlo and zhi are defined for 2d simulations. + +---------- + +Triclinic simulation boxes +"""""""""""""""""""""""""" + +LAMMPS also allows simulations to be performed using triclinic +(non-orthogonal) simulation boxes shaped as a 3d parallelepiped with +triclinic symmetry. For 2d simulations a triclinic simulation box is +effectively a parallelogram; see the :doc:`Howto 2d ` doc +page for details. + +One use of triclinic simulation boxes is to model solid-state crystals +with triclinic symmetry. The :doc:`lattice ` command can be +used with non-orthogonal basis vectors to define a lattice that will +tile a triclinic simulation box via the :doc:`create_atoms +` command. + +A second use is to run Parrinello-Rahman dynamics via the :doc:`fix +npt ` command, which will adjust the xy, xz, yz tilt factors +to compensate for off-diagonal components of the pressure tensor. The +analog for an :doc:`energy minimization ` is the :doc:`fix +box/relax ` command. + +A third use is to shear a bulk solid to study the response of the +material. The :doc:`fix deform ` command can be used for +this purpose. It allows dynamic control of the xy, xz, yz tilt +factors as a simulation runs. This is discussed in the :doc:`Howto +NEMD ` doc page on non-equilibrium MD (NEMD) simulations. + +Conceptually, a triclinic parallelepiped is defined with an "origin" +at (xlo,ylo,zhi) and 3 edge vectors **A** = (ax,ay,az), **B** = +(bx,by,bz), **C** = (cx,cy,cz) which can be arbitrary vectors, so long +as they are non-zero, distinct, and not co-planar. In addition, they +must define a right-handed system, such that (**A** cross **B**) +points in the direction of **C**. Note that a left-handed system can +be converted to a right-handed system by simply swapping the order of +any pair of the **A**, **B**, **C** vectors. + +The 4 commands listed above for defining orthogonal simulation boxes +have triclinic options which allow for specification of the origin and +edge vectors **A**, **B**, **C**. For each command, this can be done +in one of two ways, for what LAMMPS calls a *general* triclinic box or +a *restricted* triclinic box. + +A *general* triclinic box is specified by an origin (xlo, ylo, zlo) +and arbitrary edge vectors **A** = (ax,ay,az), **B** = (bx,by,bz), and +**C** = (cx,cy,cz). So there are 12 parameters in total. + +A *restricted* triclinic box also has an origin (xlo,ylo,zlo), but its +edge vectors are of the following restricted form: **A** = +(xhi-xlo,0,0), **B** = (xy,yhi-ylo,0), **C** = (xz,yz,zhi-zlo). So +there are 9 parameters in total. Note that the restricted form +requires **A** to be along the x-axis, **B** to be in the xy plane +with a y-component in the +y direction, and **C** to have its +z-component in the +z direction. Note that a restricted triclinic box +is *right-handed* by construction since (**A** cross **B**) points in +the direction of **C**. + +The *xy,xz,yz* values can be zero or positive or negative. They are +called "tilt factors" because they are the amount of displacement +applied to edges of faces of an orthogonal box to change it into a +restricted triclinic parallelepiped. + +.. note:: + + Any right-handed general triclinic box (i.e. solid-state crystal + basis vectors) can be rotated in 3d around its origin in order to + conform to the LAMMPS definition of a restricted triclinic box. + See the discussion in the next sub-section about general triclinic + simulation boxes in LAMMPS. + +Note that the :doc:`thermo_style custom ` command has +keywords for outputting the various parameters that define the size +and shape of orthogonal, restricted triclinic, and general triclinic +simulation boxes. + +For orthogonal boxes there 6 thermo keywords (xlo,ylo,zlo) and +(xhi,yhi,zhi). + +For restricted triclinic boxes there are 9 thermo keywords for +(xlo,ylo,zlo), (xhi,yhi,zhi), and the (xy,xz,yz) tilt factors. + +For general triclinic boxes there are 12 thermo keywords for +(xlo,ylo,zhi) and the components of the **A**, **B**, **C** edge +vectors, namely (avecx,avecy,avecz), (bvecx,bvecy,bvecz), and +(cvecx,cvecy,cvecz), + +The remainder of this doc page explains (a) how LAMMPS operates with +general triclinic simulation boxes, (b) mathematical transformations +between general and restricted triclinic boxes which may be useful +when creating LAMMPS inputs or interpreting outputs for triclinic +simulations, and (c) how LAMMPS uses tilt factors for restricted +triclinic simulation boxes. + +---------- + +General triclinic simulation boxes in LAMMPS +"""""""""""""""""""""""""""""""""""""""""""" + +LAMMPS allows specification of general triclinic simulation boxes with +their atoms as a convenience for users who may be converting data from +solid-state crystallographic representations or from DFT codes for +input to LAMMPS. Likewise it allows output of dump files, data files, +and thermodynamic data (e.g. pressure tensor) in a general triclinic +format. + +However internally, LAMMPS only uses restricted triclinic simulation +boxes. This is for parallel efficiency and to formulate partitioning +of the simulation box across processors, neighbor list building, and +inter-processor communication of per-atom data with methods similar to +those used for orthogonal boxes. + +This means 4 things which are important to understand: + +* Input of a general triclinic system is immediately converted to a + restricted triclinic system. +* If output of per-atom data for a general triclinic system is + requested (e.g. for atom coordinates in a dump file), + conversion from a restricted to general triclinic system is done at + the time of output. +* The conversion of the simulation box and per-atom data from general + triclinic to restricted triclinic (and vice versa) is a 3d rotation + operation around an origin, which is the lower left corner of the + simulation box. This means an input data file for a general + triclinic system should specify all per-atom quantities consistent + with the general triclinic box and its orientation relative to the + standard x,y,z coordinate axes. For example, atom coordinates + should be inside the general triclinic simulation box defined by the + edge vectors **A**, **B**, **C** and its origin. Likewise per-atom + velocities should be in directions consistent with the general + triclinic box orientation. E.g. a velocity vector which will be in + the +x direction once LAMMPS converts from a general to restricted + triclinic box, should be specified in the data file in the direction + of the **A** edge vector. See the :doc:`read_data ` doc + page for info on all the per-atom vector quantities to which this + rule applies when a data file for a general triclinic box is input. +* If commands such as :doc:`write_data ` or :doc:`dump + custom ` are used to output general triclinic information, it + is effectively the inverse of the operation described in the + preceding bullet. +* Other LAMMPS commands such as :doc:`region ` or + :doc:`velocity ` or :doc:`set `, operate on a + restricted triclinic system even if a general triclinic system was + defined initially. + +This is the list of commands which have general triclinic options: + +* :doc:`create_box ` - define a general triclinic box +* :doc:`create_atoms ` - add atoms to a general triclinic box +* :doc:`lattice ` - define a custom lattice consistent with the **A**, **B**, **C** edge vectors of a general triclinic box +* :doc:`read_data ` - read a data file for a general triclinic system +* :doc:`write_data ` - write a data file for a general triclinic system +* :doc:`dump atom, dump custom ` - output dump snapshots in general triclinic format +* :doc:`dump_modify triclinic/general ` - select general triclinic format for dump output +* :doc:`thermo_style ` - output the pressure tensor in + general triclinic format +* :doc:`thermo_modify triclinic/general ` - select general triclinic format for thermo output +* :doc:`read_restart ` - read a restart file for a general triclinic system +* :doc:`write_restart ` - write a restart file for a general triclinic system + +---------- + +Transformation from general to restricted triclinic boxes +""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +Let **A**,\ **B**,\ **C** be the right-handed edge vectors of a +general triclinic simulation box. The equivalent LAMMPS **a**,\ +**b**,\ **c** for a restricted triclinic box are a 3d rotation of +**A**, **B**, and **C** and can be computed as follows: .. math:: @@ -55,23 +207,17 @@ rotation of **A**, **B**, and **C** and can be computed as follows: c_y = & \mathbf{C} \cdot \widehat{(\mathbf{A} \times \mathbf{B})} \times \mathbf{\hat{A}} \quad = \quad \frac{\mathbf{B} \cdot \mathbf{C} - b_x c_x}{b_y} \\ c_z = & |\mathbf{C} \cdot \widehat{(\mathbf{A} \times \mathbf{B})}|\quad = \quad \sqrt{C^2 - {c_x}^2 - {c_y}^2} -where A = \| **A** \| indicates the scalar length of **A**\ . The hat symbol (\^) -indicates the corresponding unit vector. :math:`\beta` and :math:`\gamma` are angles -between the vectors described below. Note that by construction, -**a**, **b**, and **c** have strictly positive x, y, and z components, respectively. -If it should happen that -**A**, **B**, and **C** form a left-handed basis, then the above equations -are not valid for **c**\ . In this case, it is necessary -to first apply an inversion. This can be achieved -by interchanging two basis vectors or by changing the sign of one of them. - -For consistency, the same rotation/inversion applied to the basis vectors -must also be applied to atom positions, velocities, -and any other vector quantities. -This can be conveniently achieved by first converting to -fractional coordinates in the -old basis and then converting to distance coordinates in the new basis. -The transformation is given by the following equation: +where A = \| **A** \| indicates the scalar length of **A**\ . The hat +symbol (\^) indicates the corresponding unit vector. :math:`\beta` and +:math:`\gamma` are angles between the **A**, **B**, **C** vectors +as described below. + +For consistency, the same rotation applied to the triclinic box edge +vectors can also be applied to atom positions, velocities, and other +vector quantities. This can be conveniently achieved by first +converting to fractional coordinates in the general triclinic +coordinates and then converting to coordinates in the restricted +triclinic basis. The transformation is given by the following equation: .. math:: @@ -82,87 +228,24 @@ The transformation is given by the following equation: \mathbf{A \times B} \end{pmatrix} \cdot \mathbf{X} -where *V* is the volume of the box, **X** is the original vector quantity and -**x** is the vector in the LAMMPS basis. +where *V* is the volume of the box (same in either basis), **X** is +the fractional vector in the general triclinic basis and **x** is the +resulting vector in the restricted triclinic basis. -There is no requirement that a triclinic box be periodic in any -dimension, though it typically should be in at least the second dimension -of the tilt (y in xy) if you want to enforce a shift in periodic -boundary conditions across that boundary. Some commands that work -with triclinic boxes, e.g. the :doc:`fix deform ` and :doc:`fix npt ` commands, require periodicity or non-shrink-wrap -boundary conditions in specific dimensions. See the command doc pages -for details. - -The 9 parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) are defined at the -time the simulation box is created. This happens in one of 3 ways. -If the :doc:`create_box ` command is used with a region of -style *prism*, then a triclinic box is setup. See the -:doc:`region ` command for details. If the -:doc:`read_data ` command is used to define the simulation -box, and the header of the data file contains a line with the "xy xz -yz" keyword, then a triclinic box is setup. See the -:doc:`read_data ` command for details. Finally, if the -:doc:`read_restart ` command reads a restart file which -was written from a simulation using a triclinic box, then a triclinic -box will be setup for the restarted simulation. - -Note that you can define a triclinic box with all 3 tilt factors = -0.0, so that it is initially orthogonal. This is necessary if the box -will become non-orthogonal, e.g. due to the :doc:`fix npt ` or -:doc:`fix deform ` commands. Alternatively, you can use the -:doc:`change_box ` command to convert a simulation box from -orthogonal to triclinic and vice versa. - -As with orthogonal boxes, LAMMPS defines triclinic box size parameters -lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions. -The 9 parameters, as well as lx,ly,lz, can be output via the -:doc:`thermo_style custom ` command. - -To avoid extremely tilted boxes (which would be computationally -inefficient), LAMMPS normally requires that no tilt factor can skew -the box more than half the distance of the parallel box length, which -is the first dimension in the tilt factor (x for xz). This is required -both when the simulation box is created, e.g. via the -:doc:`create_box ` or :doc:`read_data ` commands, -as well as when the box shape changes dynamically during a simulation, -e.g. via the :doc:`fix deform ` or :doc:`fix npt ` -commands. +---------- -For example, if xlo = 2 and xhi = 12, then the x box length is 10 and -the xy tilt factor must be between -5 and 5. Similarly, both xz and -yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is -not a limitation, since if the maximum tilt factor is 5 (as in this -example), then configurations with tilt = ..., -15, -5, 5, 15, 25, -... are geometrically all equivalent. If the box tilt exceeds this -limit during a dynamics run (e.g. via the :doc:`fix deform ` -command), then the box is "flipped" to an equivalent shape with a tilt -factor within the bounds, so the run can continue. See the :doc:`fix deform ` page for further details. - -One exception to this rule is if the first dimension in the tilt -factor (x for xy) is non-periodic. In that case, the limits on the -tilt factor are not enforced, since flipping the box in that dimension -does not change the atom positions due to non-periodicity. In this -mode, if you tilt the system to extreme angles, the simulation will -simply become inefficient, due to the highly skewed simulation box. +Crystallographic general triclinic representation of a simulation box +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -Box flips that may occur using the :doc:`fix deform ` or -:doc:`fix npt ` commands can be turned off using the *flip no* -option with either of the commands. - -Note that if a simulation box has a large tilt factor, LAMMPS will run -less efficiently, due to the large volume of communication needed to -acquire ghost atoms around a processor's irregular-shaped subdomain. -For extreme values of tilt, LAMMPS may also lose atoms and generate an -error. - -Triclinic crystal structures are often defined using three lattice -constants *a*, *b*, and *c*, and three angles :math:`\alpha`, -:math:`\beta`, and :math:`\gamma`. Note that in this nomenclature, -the a, b, and c lattice constants are the scalar lengths of the edge +General triclinic crystal structures are often defined using three +lattice constants *a*, *b*, and *c*, and three angles :math:`\alpha`, +:math:`\beta`, and :math:`\gamma`. Note that in this nomenclature, the +a, b, and c lattice constants are the scalar lengths of the edge vectors **a**, **b**, and **c** defined above. The relationship between these 6 quantities (a, b, c, :math:`\alpha`, :math:`\beta`, -:math:`\gamma`) and the LAMMPS box sizes (lx,ly,lz) = -(xhi-xlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) is as follows: +:math:`\gamma`) and the LAMMPS restricted triclinic box sizes +(lx,ly,lz) = (xhi-xlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) is +as follows: .. math:: @@ -186,15 +269,19 @@ The inverse relationship can be written as follows: The values of *a*, *b*, *c*, :math:`\alpha` , :math:`\beta`, and :math:`\gamma` can be printed out or accessed by computes using the -:doc:`thermo_style custom ` keywords -*cella*, *cellb*, *cellc*, *cellalpha*, *cellbeta*, *cellgamma*, -respectively. +:doc:`thermo_style custom ` keywords *cella*, *cellb*, +*cellc*, *cellalpha*, *cellbeta*, *cellgamma*, respectively. + +---------- + +Output of restricted and general triclinic boxes in a dump file +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" As discussed on the :doc:`dump ` command doc page, when the BOX -BOUNDS for a snapshot is written to a dump file for a triclinic box, -an orthogonal bounding box which encloses the triclinic simulation box -is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic -box, formatted as follows: +BOUNDS for a snapshot is written to a dump file for a restricted +triclinic box, an orthogonal bounding box which encloses the triclinic +simulation box is output, along with the 3 tilt factors (xy, xz, yz) of +the restricted triclinic box, formatted as follows: .. parsed-literal:: @@ -204,7 +291,7 @@ box, formatted as follows: zlo_bound zhi_bound yz This bounding box is convenient for many visualization programs and is -calculated from the 9 triclinic box parameters +calculated from the 9 restricted triclinic box parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) as follows: .. parsed-literal:: @@ -217,22 +304,66 @@ calculated from the 9 triclinic box parameters zhi_bound = zhi These formulas can be inverted if you need to convert the bounding box -back into the triclinic box parameters, e.g. xlo = xlo_bound - -MIN(0.0,xy,xz,xy+xz). +back into the restricted triclinic box parameters, e.g. xlo = +xlo_bound - MIN(0.0,xy,xz,xy+xz). -One use of triclinic simulation boxes is to model solid-state crystals -with triclinic symmetry. The :doc:`lattice ` command can be -used with non-orthogonal basis vectors to define a lattice that will -tile a triclinic simulation box via the -:doc:`create_atoms ` command. +---------- -A second use is to run Parrinello-Rahman dynamics via the :doc:`fix npt ` command, which will adjust the xy, xz, yz tilt -factors to compensate for off-diagonal components of the pressure -tensor. The analog for an :doc:`energy minimization ` is -the :doc:`fix box/relax ` command. +Periodicity and tilt factors for triclinic simulation boxes +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -A third use is to shear a bulk solid to study the response of the -material. The :doc:`fix deform ` command can be used for -this purpose. It allows dynamic control of the xy, xz, yz tilt -factors as a simulation runs. This is discussed in the next section -on non-equilibrium MD (NEMD) simulations. +There is no requirement that a triclinic box be periodic in any +dimension, though it typically should be in y or z if you wish to +enforce a shift in coordinates due to periodic boundary conditions +across the y or z boundaries. See the doc page for the :doc:`boundary +` command for an explanation of shifted coordinates for +restricted triclinic boxes which are periodic. + +Some commands that work with triclinic boxes, e.g. the :doc:`fix +deform ` and :doc:`fix npt ` commands, require +periodicity or non-shrink-wrap boundary conditions in specific +dimensions. See the command doc pages for details. + +A restricted triclinic box can be defined with all 3 tilt factors = +0.0, so that it is initially orthogonal. This is necessary if the box +will become non-orthogonal, e.g. due to use of the :doc:`fix npt +` or :doc:`fix deform ` commands. Alternatively, +you can use the :doc:`change_box ` command to convert a +simulation box from orthogonal to restricted triclinic and vice versa. + +.. note:: + + Highly tilted restricted triclinic simulation boxes can be + computationally inefficient. This is due to the large volume of + communication needed to acquire ghost atoms around a processor's + irregular-shaped subdomain. For extreme values of tilt, LAMMPS may + also lose atoms and generate an error. + +LAMMPS will issue a warning if you define a restricted triclinic box +with a tilt factor which skews the box more than half the distance of +the parallel box length, which is the first dimension in the tilt +factor (e.g. x for xz). + +For example, if xlo = 2 and xhi = 12, then the x box length is 10 and +the xy tilt factor should be between -5 and 5 to avoid the warning. +Similarly, both xz and yz should be between -(xhi-xlo)/2 and ++(yhi-ylo)/2. Note that these are not limitations, since if the +maximum tilt factor is 5 (as in this example), then simulations boxes +and atom configurations with tilt = ..., -15, -5, 5, 15, 25, ... are +all geometrically equivalent. + +If the box tilt exceeds this limit during a dynamics run (e.g. due to +the :doc:`fix deform ` command), then by default the box +is "flipped" to an equivalent shape with a tilt factor within the +warning bounds, and the run continues. See the :doc:`fix deform +` page for further details. Box flips that would normally +occur using the :doc:`fix deform ` or :doc:`fix npt +` commands can be suppressed using the *flip no* option with +either of the commands. + +One exception to box flipping is if the first dimension in the tilt +factor (e.g. x for xy) is non-periodic. In that case, the limits on +the tilt factor are not enforced, since flipping the box in that +dimension would not change the atom positions due to non-periodicity. +In this mode, if the system tilts to large angles, the simulation will +simply become inefficient, due to the highly skewed simulation box. diff --git a/doc/src/Howto_type_labels.rst b/doc/src/Howto_type_labels.rst index 8f03f45ef96..6b734f5c8de 100644 --- a/doc/src/Howto_type_labels.rst +++ b/doc/src/Howto_type_labels.rst @@ -14,16 +14,17 @@ wherever they appear in LAMMPS input or output files. The total number Ntypes for each interaction is "locked in" when the simulation box is created. -A recent addition to LAMMPS is the option to use strings - referred -to as type labels - as an alternative. Using type labels instead of +A recent addition to LAMMPS is the option to use strings - referred to +as type labels - as an alternative. Using type labels instead of numeric types can be advantageous in various scenarios. For example, -type labels can make inputs more readable and generic (i.e. usable through -the :doc:`include command ` for different systems with different -numerical values assigned to types. This generality also applies to -other inputs like data files read by :doc:`read_data ` or -molecule template files read by the :doc:`molecule ` -command. See below for a list of other commands that can use -type labels in different ways. +type labels can make inputs more readable and generic (i.e. usable +through the :doc:`include command ` for different systems with +different numerical values assigned to types. This generality also +applies to other inputs like data files read by :doc:`read_data +` or molecule template files read by the :doc:`molecule +` command. A discussion of the current type label support can +be found in :ref:`(Gissinger) `. See below for a list of +other commands that can use type labels in different ways. LAMMPS will *internally* continue to use numeric types, which means that many previous restrictions still apply. For example, the total @@ -124,3 +125,9 @@ between the files. The creation of simulation-ready reaction templates for :doc:`fix bond/react ` is much simpler when using type labels, and results in templates that can be used without modification in multiple simulations or different systems. + +----------- + +.. _Typelabel24: + +**(Gissinger)** J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024). diff --git a/doc/src/Intro_citing.rst b/doc/src/Intro_citing.rst index 69ccab61626..8b906bb7259 100644 --- a/doc/src/Intro_citing.rst +++ b/doc/src/Intro_citing.rst @@ -47,6 +47,8 @@ In addition there are DOIs generated for individual stable releases: - 3 March 2020 version: `DOI:10.5281/zenodo.3726417 `_ - 29 October 2020 version: `DOI:10.5281/zenodo.4157471 `_ - 29 September 2021 version: `DOI:10.5281/zenodo.6386596 `_ +- 23 June 2022 version: `DOI:10.5281/zenodo.10806836 `_ +- 2 August 2023 version: `DOI:10.5281/zenodo.10806852 `_ Home page ^^^^^^^^^ diff --git a/doc/src/Intro_features.rst b/doc/src/Intro_features.rst index f7b4dd319bc..98e9d981ed4 100644 --- a/doc/src/Intro_features.rst +++ b/doc/src/Intro_features.rst @@ -29,7 +29,7 @@ General features * spatial decomposition of simulation domain for MPI parallelism * particle decomposition inside spatial decomposition for OpenMP and GPU parallelism * GPLv2 licensed open-source distribution -* highly portable C++-11 +* highly portable C++-11 (optional packages may require C++17) * modular code with most functionality in optional packages * only depends on MPI library for basic parallel functionality, MPI stub for serial compilation * other libraries are optional and only required for specific packages @@ -81,7 +81,7 @@ commands) * pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, Yukawa, soft, Class II (COMPASS), hydrogen bond, harmonic, gaussian, tabulated, scripted * charged pairwise potentials: Coulombic, point-dipole * many-body potentials: EAM, Finnis/Sinclair, MEAM, MEAM+SW, EIM, EDIP, ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB, Streitz-Mintmire, 3-body polymorphic, BOP, Vashishta -* machine learning potentials: ACE, AGNI, GAP, Behler-Parrinello (N2P2), POD, RANN +* machine learning potentials: ACE, AGNI, GAP, Behler-Parrinello (N2P2), POD, RANN, SNAP * interfaces to ML potentials distributed by external groups: ANI, ChIMES, DeepPot, HIPNN, MTP * long-range interactions for charge, point-dipoles, and LJ dispersion: Ewald, Wolf, PPPM (similar to particle-mesh Ewald), MSM, ScaFaCoS * polarization models: :doc:`QEq `, :doc:`core/shell model `, :doc:`Drude dipole model ` diff --git a/doc/src/Library_objects.rst b/doc/src/Library_objects.rst index db21817cfd7..7c0ca824d7a 100644 --- a/doc/src/Library_objects.rst +++ b/doc/src/Library_objects.rst @@ -9,6 +9,8 @@ fixes, or variables in LAMMPS using the following functions: - :cpp:func:`lammps_extract_variable_datatype` - :cpp:func:`lammps_extract_variable` - :cpp:func:`lammps_set_variable` +- :cpp:func:`lammps_set_string_variable` +- :cpp:func:`lammps_set_internal_variable` - :cpp:func:`lammps_variable_info` ----------------------- @@ -38,6 +40,16 @@ fixes, or variables in LAMMPS using the following functions: ----------------------- +.. doxygenfunction:: lammps_set_string_variable + :project: progguide + +----------------------- + +.. doxygenfunction:: lammps_set_internal_variable + :project: progguide + +----------------------- + .. doxygenfunction:: lammps_variable_info :project: progguide diff --git a/doc/src/Modify_style.rst b/doc/src/Modify_style.rst index e02c2ce59f3..496415237c5 100644 --- a/doc/src/Modify_style.rst +++ b/doc/src/Modify_style.rst @@ -96,6 +96,39 @@ list all non-conforming lines. By adding the `-f` flag to the command line, they will modify the flagged files to try to remove the detected issues. +Constants (strongly preferred) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Global or per-file constants should be declared as `static constexpr` +variables rather than via the pre-processor with `#define`. The name of +constants should be all uppercase. This has multiple advantages: + +- constants are easily identified as such by their all upper case name +- rather than a pure text substitution during pre-processing, `constexpr + variables` have a type associated with them and are processed later in + the parsing process where the syntax checks and type specific + processing (e.g. via overloads) can be applied to them. +- compilers can emit a warning if the constant is not used and thus can + be removed (we regularly check for and remove dead code like this) +- there are no unexpected substitutions and thus confusing syntax errors + when compiling leading to, for instance, conflicts so that LAMMPS + cannot be compiled with certain combinations of packages (this *has* + happened multiple times in the past). + +Pre-processor defines should be limited to macros (but consider C++ +templates) and conditional compilation. If a per-processor define must +be used, it should be defined at the top of the .cpp file after the +include statements and at all cost it should be avoided to put them into +header files. + +Some sets of commonly used constants are provided in the ``MathConst`` +and ``EwaldConst`` namespaces and implemented in the files +``math_const.h`` and ``ewald_const.h``, respectively. + +There are always exceptions, special cases, and legacy code in LAMMPS, +so please contact the LAMMPS developers if you are not sure. + + Placement of braces (strongly preferred) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Python_scatter.rst b/doc/src/Python_scatter.rst index 002a36cc980..e4444fabe7a 100644 --- a/doc/src/Python_scatter.rst +++ b/doc/src/Python_scatter.rst @@ -54,8 +54,21 @@ like this: x[3] = x coord of atom with ID 2 ... x[n3-1] = z coord of atom with ID natoms - lmp.scatter_atoms("x",1,3,x) + lmp.scatter_atoms("x", 1, 3, x) + +The coordinates can also be provided as arguments to the initializer of x: + +.. code-block:: python + + from ctypes import c_double + natoms = 2 + n3 = 3*natoms + # init in constructor + x = (n3*c_double)(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) + lmp.scatter_atoms("x", 1, 3, x) + # or using a list + coords = [1.0, 2.0, 3.0, -3.0, -2.0, -1.0] + x = (c_double*len(coords))(*coords) Alternatively, you can just change values in the vector returned by the gather methods, since they are also ctypes vectors. - diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 1cae518f96b..41ae4a4dfb6 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -20,11 +20,28 @@ including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez (Sandia). For more information on developing using Kokkos abstractions see the `Kokkos Wiki `_. -Kokkos currently provides support for 4 modes of execution (per MPI +.. note:: + + The Kokkos library is under active development and tracking the + availability of accelerator hardware, so is the KOKKOS package in + LAMMPS. This means that only a certain range of versions of the + Kokkos library are compatible with the KOKKOS package of a certain + range of LAMMPS versions. For that reason LAMMPS comes with a + bundled version of the Kokkos library that has been validated on + multiple platforms and may contain selected back-ported bug fixes + from upstream Kokkos versions. While it is possible to build LAMMPS + with an external version of Kokkos, it is untested and may result in + incorrect execution or crashes. + +Kokkos currently provides full support for 4 modes of execution (per MPI task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP -(threading for many-core CPUs and Intel Phi), CUDA (for NVIDIA -GPUs) and HIP (for AMD GPUs). You choose the mode at build time to -produce an executable compatible with a specific hardware. +(threading for many-core CPUs and Intel Phi), CUDA (for NVIDIA GPUs) and +HIP (for AMD GPUs). Additional modes (e.g. OpenMP target, Intel data +center GPUs) are under development. You choose the mode at build time +to produce an executable compatible with a specific hardware. + +The following compatibility notes have been last updated for LAMMPS +version 23 November 2023 and Kokkos version 4.2. .. admonition:: C++17 support :class: note @@ -54,22 +71,22 @@ produce an executable compatible with a specific hardware. :class: note Kokkos with CUDA currently implicitly assumes that the MPI library is - GPU-aware. This is not always the case, especially when using + GPU-aware. This is not always the case, especially when using pre-compiled MPI libraries provided by a Linux distribution. This is not a problem when using only a single GPU with a single MPI - rank. When running with multiple MPI ranks, you may see segmentation + rank. When running with multiple MPI ranks, you may see segmentation faults without GPU-aware MPI support. These can be avoided by adding the flags :doc:`-pk kokkos gpu/aware off ` to the LAMMPS command line or by using the command :doc:`package kokkos gpu/aware off ` in the input file. -.. admonition:: AMD GPU support +.. admonition:: Intel Data Center GPU support :class: note - To build with Kokkos the HIPCC compiler from the AMD ROCm software - version 3.5 or later is required. Supporting this Kokkos mode in - LAMMPS is still work in progress. Please contact the LAMMPS developers - if you run into problems. + Support for Kokkos with Intel Data Center GPU accelerators (formerly + known under the code name "Ponte Vecchio") in LAMMPS is still a work + in progress. Only a subset of the functionality works correctly. + Please contact the LAMMPS developers if you run into problems. Building LAMMPS with the KOKKOS package """"""""""""""""""""""""""""""""""""""" @@ -292,6 +309,10 @@ one or more nodes, each with two GPUs: settings. Experimenting with its options can provide a speed-up for specific calculations. For example: +.. code-block:: bash + + mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff + .. note:: The default binsize for :doc:`atom sorting ` on GPUs @@ -302,9 +323,15 @@ one or more nodes, each with two GPUs: frequent sorting than default (e.g. sorting every 100 time steps instead of 1000) may improve performance. -.. code-block:: bash +.. note:: - mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff + When running on GPUs with many MPI ranks (tens of thousands and + more), the creation of the atom map (required for molecular systems) + on the GPU can slow down significantly or run out of GPU memory and + thus slow down the whole calculation or cause a crash. You can use + the "-pk kokkos atom/map no" :doc:`command-line switch ` + of the :doc:`package kokkos atom/map no ` command to create + the atom map on the CPU instead. .. note:: @@ -416,15 +443,22 @@ Generally speaking, the following rules of thumb apply: performance of a KOKKOS style is a bit slower than the OPENMP package. * When running large number of atoms per GPU, KOKKOS is typically faster - than the GPU package when compiled for double precision. The benefit + than the GPU package when compiled for double precision. The benefit of using single or mixed precision with the GPU package depends significantly on the hardware in use and the simulated system and pair style. -* When running on Intel hardware, KOKKOS is not as fast as +* When running on Intel Phi hardware, KOKKOS is not as fast as the INTEL package, which is optimized for x86 hardware (not just from Intel) and compilation with the Intel compilers. The INTEL package also can increase the vector length of vector instructions by switching to single or mixed precision mode. +* The KOKKOS package by default assumes that you are using exactly one + MPI rank per GPU. When trying to use multiple MPI ranks per GPU it is + mandatory to enable `CUDA Multi-Process Service (MPS) + `_ to get good + performance. In this case it is better to not use all available + MPI ranks in order to avoid competing with the MPS daemon for + CPU resources. See the `Benchmark page `_ of the LAMMPS website for performance of the KOKKOS package on different diff --git a/doc/src/angle_charmm.rst b/doc/src/angle_charmm.rst index 425ed7e4f1a..655b860a282 100644 --- a/doc/src/angle_charmm.rst +++ b/doc/src/angle_charmm.rst @@ -70,7 +70,9 @@ for more info. Related commands """""""""""""""" -:doc:`angle_coeff ` +:doc:`angle_coeff `, :doc:`pair_style lj/charmm variants `, +:doc:`dihedral_style charmm `, +:doc:`dihedral_style charmmfsw `, :doc:`fix cmap ` Default """"""" diff --git a/doc/src/angle_cosine_squared_restricted.rst b/doc/src/angle_cosine_squared_restricted.rst new file mode 100644 index 00000000000..008ebfebeb0 --- /dev/null +++ b/doc/src/angle_cosine_squared_restricted.rst @@ -0,0 +1,80 @@ +.. index:: angle_style cosine/squared/restricted +.. index:: angle_style cosine/squared/restricted/omp + +angle_style cosine/squared/restricted command +============================================= + +Accelerator Variants: *cosine/squared/restricted/omp* + +Syntax +"""""" + +.. code-block:: LAMMPS + + angle_style cosine/squared/restricted + +Examples +"""""""" + +.. code-block:: LAMMPS + + angle_style cosine/squared/restricted + angle_coeff 2*4 75.0 100.0 + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +The *cosine/squared/restricted* angle style uses the potential + +.. math:: + + E = K [\cos(\theta) - \cos(\theta_0)]^2 / \sin^2(\theta) + +, which is commonly used in the MARTINI force field, +where :math:`\theta_0` is the equilibrium value of the angle, and :math:`K` +is a prefactor. Note that the usual 1/2 factor is included in :math:`K`. + +See :ref:`(Bulacu) ` for a description of the restricted angle for the MARTINI force field. + +The following coefficients must be defined for each angle type via the +:doc:`angle_coeff ` command as in the example above, or in +the data file or restart files read by the :doc:`read_data ` +or :doc:`read_restart ` commands: + +* :math:`K` (energy) +* :math:`\theta_0` (degrees) + +:math:`\theta_0` is specified in degrees, but LAMMPS converts it to radians +internally. + +---------- + +.. include:: accel_styles.rst + +---------- + +Restrictions +"""""""""""" + +This angle style can only be used if LAMMPS was built with the +EXTRA-MOLECULE package. See the :doc:`Build package ` doc page +for more info. + +Related commands +"""""""""""""""" + +:doc:`angle_coeff ` + +Default +""""""" + +none + +---------- + +.. _restricted-Bulacu: + +**(Bulacu)** Bulacu, Goga, Zhao, Rossi, Monticelli, Periole, Tieleman, Marrink, J Chem Theory Comput, 9, 3282-3292 +(2013). diff --git a/doc/src/angle_lepton.rst b/doc/src/angle_lepton.rst index 20fa5b1fee5..e03e5cf456a 100644 --- a/doc/src/angle_lepton.rst +++ b/doc/src/angle_lepton.rst @@ -11,7 +11,16 @@ Syntax .. code-block:: LAMMPS - angle_style lepton + angle_style style args + +* style = *lepton* +* args = optional arguments + +.. parsed-literal:: + + args = *auto_offset* or *no_offset* + *auto_offset* = offset the potential energy so that the value at theta0 is 0.0 (default) + *no_offset* = do not offset the potential energy Examples """""""" @@ -19,6 +28,7 @@ Examples .. code-block:: LAMMPS angle_style lepton + angle_style lepton no_offset angle_coeff 1 120.0 "k*theta^2; k=250.0" angle_coeff 2 90.0 "k2*theta^2 + k3*theta^3 + k4*theta^4; k2=300.0; k3=-100.0; k4=50.0" @@ -41,6 +51,13 @@ angle coefficient. For example `"200.0*theta^2"` represents a U_{angle,i} = K (\theta_i - \theta_0)^2 = K \theta^2 \qquad \theta = \theta_i - \theta_0 +.. versionchanged:: 7Feb2024 + +By default the potential energy U is shifted so that the value U is 0.0 +for $theta = theta_0$. This is equivalent to using the optional keyword +*auto_offset*. When using the keyword *no_offset* instead, the +potential energy is not shifted. + The `Lepton library `_, that the *lepton* angle style interfaces with, evaluates this expression string at run time to compute the pairwise energy. It also creates an diff --git a/doc/src/angle_style.rst b/doc/src/angle_style.rst index 1f1ae72647e..eeb174e7725 100644 --- a/doc/src/angle_style.rst +++ b/doc/src/angle_style.rst @@ -10,7 +10,7 @@ Syntax angle_style style -* style = *none* or *zero* or *hybrid* or *amoeba* or *charmm* or *class2* or *class2/p6* or *cosine* or *cosine/buck6d* or *cosine/delta* or *cosine/periodic* or *cosine/shift* or *cosine/shift/exp* or *cosine/squared* or *cross* or *dipole* or *fourier* or *fourier/simple* or *gaussian* or *harmonic* or *lepton* or *mm3* or *quartic* or *spica* or *table* +* style = *none* or *zero* or *hybrid* or *amoeba* or *charmm* or *class2* or *class2/p6* or *cosine* or *cosine/buck6d* or *cosine/delta* or *cosine/periodic* or *cosine/shift* or *cosine/shift/exp* or *cosine/squared* or *cosine/squared/restricted* or *cross* or *dipole* or *fourier* or *fourier/simple* or *gaussian* or *harmonic* or *lepton* or *mm3* or *quartic* or *spica* or *table* Examples """""""" @@ -84,6 +84,7 @@ of (g,i,k,o,t) to indicate which accelerated styles exist. * :doc:`cosine/shift ` - angle cosine with a shift * :doc:`cosine/shift/exp ` - cosine with shift and exponential term in spring constant * :doc:`cosine/squared ` - angle with cosine squared term +* :doc:`cosine/squared/restricted ` - angle with restricted cosine squared term * :doc:`cross ` - cross term coupling angle and bond lengths * :doc:`dipole ` - angle that controls orientation of a point dipole * :doc:`fourier ` - angle with multiple cosine terms diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index b5ee0f07ff8..f11cdf54b91 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -49,233 +49,360 @@ Examples Description """"""""""" -Define what style of atoms to use in a simulation. This determines -what attributes are associated with the atoms. This command must be -used before a simulation is setup via a :doc:`read_data `, -:doc:`read_restart `, or :doc:`create_box ` -command. +The *atom_style* command selects which per-atom attributes are +associated with atoms in a LAMMPS simulation and thus stored and +communicated with those atoms as well as read from and stored in data +and restart files. Different models (e.g. :doc:`pair styles +`) require access to specific per-atom attributes and thus +require a specific atom style. For example, to compute Coulomb +interactions, the atom must have a "charge" (aka "q") attribute. + +A number of distinct atom styles exist that combine attributes. Some +atom styles are a superset of other atom styles. Further attributes +may be added to atoms either via using a hybrid style which provides a +union of the attributes of the sub-styles, or via the :doc:`fix +property/atom ` command. The *atom_style* command +must be used before a simulation is setup via a :doc:`read_data +`, :doc:`read_restart `, or :doc:`create_box +` command. .. note:: - Many of the atom styles discussed here are only enabled if - LAMMPS was built with a specific package, as listed below in the - Restrictions section. + Many of the atom styles discussed here are only enabled if LAMMPS was + built with a specific package, as listed below in the Restrictions + section. + +Once a style is selected and the simulation box defined, it cannot be +changed but only augmented with the :doc:`fix property/atom +` command. So one should select an atom style +general enough to encompass all attributes required. E.g. with atom +style *bond*, it is not possible to define angles and use angle styles. + +It is OK to use a style more general than needed, though it may be +slightly inefficient because it will allocate and communicate +additional unused data. + +Atom style attributes +""""""""""""""""""""" + +The atom style *atomic* has the minimum subset of per-atom attributes +and is also the default setting. It encompasses the following per-atom +attributes (name of the vector or array in the :doc:`Atom class +` is given in parenthesis): atom-ID (tag), type (type), +position (x), velocities (v), forces (f), image flags (image), group +membership (mask). Since all atom styles are a superset of atom style +*atomic*\ , they all include these attributes. + +This table lists all the available atom styles, which attributes they +provide, which :doc:`package ` is required to use them, and +what the typical applications are that use them. See the +:doc:`read_data `, :doc:`create_atoms `, and +:doc:`set ` commands for details on how to set these various +quantities. More information about many of the styles is provided in +the Additional Information section below. + +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Atom style + - Attributes + - Required package + - Applications + * - *amoeba* + - *full* + "1-5 special neighbor data" + - :ref:`AMOEBA ` + - AMOEBA/HIPPO force fields + * - *angle* + - *bond* + "angle data" + - :ref:`MOLECULE ` + - bead-spring polymers with stiffness + * - *atomic* + - tag, type, x, v, f, image, mask + - + - atomic liquids, solids, metals + * - *body* + - *atomic* + radius, rmass, angmom, torque, body + - :ref:`BODY ` + - arbitrary bodies, see :doc:`body howto ` + * - *bond* + - *atomic* + molecule, nspecial, special + "bond data" + - :ref:`MOLECULE ` + - bead-spring polymers + * - *bpm/sphere* + - *bond* + radius, rmass, omega, torque, quat + - :ref:`BPM ` + - granular bonded particle models, see :doc:`BPM howto ` + * - *charge* + - *atomic* + q + - + - atomic systems with charges + * - *dielectric* + - *full* + mu, area, ed, em, epsilon, curvature, q_scaled + - :ref:`DIELECTRIC ` + - systems with surface polarization + * - *dipole* + - *charge* + mu + - :ref:`DIPOLE ` + - atomic systems with charges and point dipoles + * - *dpd* + - *atomic* + rho + "reactive DPD data" + - :ref:`DPD-REACT ` + - reactive DPD + * - *edpd* + - *atomic* + "eDPD data" + - :ref:`DPD-MESO ` + - Energy conservative DPD (eDPD) + * - *electron* + - *charge* + espin, eradius, ervel, erforce + - :ref:`EFF ` + - Electron force field systems + * - *ellipsoid* + - *atomic* + rmass, angmom, torque, ellipsoid + - + - aspherical particles + * - *full* + - *molecular* + q + - :ref:`MOLECULE ` + - molecular force fields + * - *line* + - *atomic* + molecule, radius, rmass, omega, torque, line + - + - 2-d rigid body particles + * - *mdpd* + - *atomic* + rho, drho, vest + - :ref:`DPD-MESO ` + - Many-body DPD (mDPD) + * - *molecular* + - *angle* + "dihedral and improper data" + - :ref:`MOLECULE ` + - apolar and uncharged molecules + * - *oxdna* + - *atomic* + id5p + - :ref:`CG-DNA ` + - coarse-grained DNA and RNA models + * - *peri* + - *atomic* + rmass, vfrac, s0, x0 + - :ref:`PERI ` + - mesoscopic Peridynamics models + * - *smd* + - *atomic* + molecule, radius, rmass + "smd data" + - :ref:`MACHDYN ` + - Smooth Mach Dynamics models + * - *sph* + - *atomic* + "sph data" + - :ref:`SPH ` + - Smoothed particle hydrodynamics models + * - *sphere* + - *atomic* + radius, rmass, omega, torque + - + - finite size spherical particles, e.g. granular models + * - *spin* + - *atomic* + "magnetic moment data" + - :ref:`SPIN ` + - magnetic particles + * - *tdpd* + - *atomic* + cc, cc_flux, vest + - :ref:`DPD-MESO ` + - Transport DPD (tDPD) + * - *template* + - *atomic* + molecule, molindex, molatom + - :ref:`MOLECULE ` + - molecular systems where attributes are taken from :doc:`molecule files ` + * - *tri* + - *sphere* + molecule, angmom, tri + - + - 3-d triangulated rigid body LJ particles + * - *wavepacket* + - *charge* + "wavepacket data" + - :ref:`AWPMD ` + - Antisymmetrized wave packet MD -Once a style is assigned, it cannot be changed, so use a style general -enough to encompass all attributes. E.g. with style *bond*, angular -terms cannot be used or added later to the model. It is OK to use a -style more general than needed, though it may be slightly inefficient. +.. note:: -The choice of style affects what quantities are stored by each atom, -what quantities are communicated between processors to enable forces -to be computed, and what quantities are listed in the data file read -by the :doc:`read_data ` command. + It is possible to add some attributes, such as a molecule ID and + charge, to atom styles that do not have them built in using the + :doc:`fix property/atom ` command. This command + also allows new custom-named attributes consisting of extra integer + or floating-point values or vectors to be added to atoms. See the + :doc:`fix property/atom ` page for examples of + cases where this is useful and details on how to initialize, + access, and output these custom values. -These are the additional attributes of each style and the typical -kinds of physical systems they are used to model. All styles store -coordinates, velocities, atom IDs and types. See the -:doc:`read_data `, :doc:`create_atoms `, and -:doc:`set ` commands for info on how to set these various -quantities. - -+--------------+-----------------------------------------------------+--------------------------------------+ -| *amoeba* | molecular + charge + 1/5 neighbors | AMOEBA/HIPPO polarized force fields | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *angle* | bonds and angles | bead-spring polymers with stiffness | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *atomic* | only the default values | coarse-grain liquids, solids, metals | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *body* | mass, inertia moments, quaternion, angular momentum | arbitrary bodies | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *bond* | bonds | bead-spring polymers | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *charge* | charge | atomic system with charges | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *dielectric* | normx normy normz area/patch ed em epsilon curv | system with surface polarization | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *dipole* | charge and dipole moment | system with dipolar particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *dpd* | internal temperature and internal energies | DPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *edpd* | temperature and heat capacity | eDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *electron* | charge and spin and eradius | electronic force field | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *ellipsoid* | shape, quaternion, angular momentum | aspherical particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *full* | molecular + charge | bio-molecules | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *line* | end points, angular velocity | rigid bodies | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *mdpd* | density | mDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *molecular* | bonds, angles, dihedrals, impropers | uncharged molecules | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *oxdna* | nucleotide polarity | coarse-grained DNA and RNA models | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *peri* | mass, volume | mesoscopic Peridynamic models | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *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 | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *bpm/sphere* | diameter, mass, angular velocity, quaternion | granular bonded particle models (BPM)| -+--------------+-----------------------------------------------------+--------------------------------------+ -| *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 | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *wavepacket* | charge, spin, eradius, etag, cs_re, cs_im | AWPMD | -+--------------+-----------------------------------------------------+--------------------------------------+ +---------- -.. note:: +Particle size and mass +"""""""""""""""""""""" + +All of the atom styles define point particles unless they (1) define +finite-size spherical particles via the *radius* attribute, or (2) +define finite-size aspherical particles (e.g. the *body*, *ellipsoid*, +*line*, and *tri* styles). Most of these styles can also be used with +mixtures of point and finite-size particles. + +Note that the *radius* property may need to be provided as a +*diameter* (e.g. in :doc:`molecule files ` or :doc:`data +files `). See the :doc:`Howto spherical ` +page for an overview of using finite-size spherical and aspherical +particle models with LAMMPS. + +Unless an atom style defines the per-atom *rmass* attribute, particle +masses are defined on a per-type basis, using the :doc:`mass ` +command. This means each particle's mass is indexed by its atom +*type*. + +A few styles define the per-atom *rmass* attribute which can also be +added using the :doc:`fix property/atom ` command. +In this case each particle stores its own mass. Atom styles that have +a per-atom rmass may define it indirectly through setting particle +diameter and density on a per-particle basis. If both per-type mass +and per-atom *rmass* are defined (e.g. in a hybrid style), the +per-atom mass will take precedence in any operation which which works +with both flavors of mass. - 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 - ` page for examples of cases where this is - useful and details on how to initialize, access, and output the - custom values. - -All of the above styles define point particles, except the *sphere*, -*bpm/sphere*, *ellipsoid*, *electron*, *peri*, *wavepacket*, *line*, -*tri*, and *body* styles, which define finite-size particles. See the -:doc:`Howto spherical ` page for an overview of using -finite-size particle models with LAMMPS. - -All of the point-particle styles assign mass to particles on a -per-type basis, using the :doc:`mass ` command, The finite-size -particle styles assign mass to individual particles on a per-particle -basis. - -For the *sphere* and *bpm/sphere* styles, 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 for the *sphere* style, -spheres can be effectively treated as 2d discs for a 2d simulation if -desired. See also the :doc:`set density/disc ` command. These -styles take 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 -a point particle. If it is an ellipsoid, it also stores a shape -vector with the 3 diameters of the ellipsoid and a quaternion 4-vector -with its orientation. +---------- + +Additional information about specific atom styles +""""""""""""""""""""""""""""""""""""""""""""""""" + +For the *body* style, the particles are arbitrary bodies with internal +attributes defined by the "style" of the bodies, which is specified by +the *bstyle* argument. Body particles can represent complex entities, +such as surface meshes of discrete points, collections of +sub-particles, deformable objects, etc. + +The :doc:`Howto body ` page describes the body styles +LAMMPS currently supports, and provides more details as to the kind of +body particles they represent. For all styles, each body particle +stores moments of inertia and a quaternion 4-vector, so that its +orientation and position can be time integrated due to forces and +torques. + +Note that there may be additional arguments required along with the +*bstyle* specification, in the atom_style body command. These +arguments are described on the :doc:`Howto body ` doc page. For the *dielectric* style, each particle can be either a physical -particle (e.g. an ion), or an interface particle representing a boundary -element between two regions of different dielectric constant. For -interface particles, in addition to the properties associated with -atom_style full, each particle also should be assigned a normal unit -vector (defined by normx, normy, normz), an area (area/patch), the +particle (e.g. an ion), or an interface particle representing a +boundary element between two regions of different dielectric +constant. For interface particles, in addition to the properties +associated with atom_style full, each particle also should be assigned +a unit dipole vector (mu) representing the direction of the induced +dipole moment at each interface particle, an area (area/patch), the difference and mean of the dielectric constants of two sides of the interface along the direction of the normal vector (ed and em), the -local dielectric constant at the boundary element (epsilon), and a mean -local curvature (curv). Physical particles must be assigned these -values, as well, but only their local dielectric constants will be used; -see documentation for associated :doc:`pair styles ` -and :doc:`fixes `. The distinction between the physical -and interface particles is only meaningful when :doc:`fix polarize -` commands are applied to the interface particles. This -style is part of the DIELECTRIC package. - -For the *dipole* style, a point dipole is defined for each point -particle. Note that if you wish the particles to be finite-size +local dielectric constant at the boundary element (epsilon), and a +mean local curvature (curv). Physical particles must be assigned +these values, as well, but only their local dielectric constants will +be used; see documentation for associated :doc:`pair styles +` and :doc:`fixes `. The distinction +between the physical and interface particles is only meaningful when +:doc:`fix polarize ` commands are applied to the +interface particles. This style is part of the DIELECTRIC package. + +For the *dipole* style, a point dipole vector mu is defined for each +point particle. Note that if you wish the particles to be finite-size spheres as in a Stockmayer potential for a dipolar fluid, so that the particles can rotate due to dipole-dipole interactions, then you need -to use atom_style hybrid sphere dipole, which will assign both a -diameter and dipole moment to each particle. +to use the command `atom_style hybrid sphere dipole`, which will +assign both a diameter and dipole moment to each particle. This also +requires using an integrator with a "/sphere" suffix like :doc:`fix +nve/sphere ` or :doc:`fix nvt/sphere ` +and the "update dipole" or "update dlm" parameters to the fix +commands. + +The *dpd* style is for reactive dissipative particle dynamics (DPD) +particles. Note that it is part of the DPD-REACT package, and is not +required for use with the :doc:`pair_style dpd or dpd/stat ` +commands, which only require the attributes from atom_style *atomic*. +Atom_style *dpd* extends DPD particle properties with internal +temperature (dpdTheta), internal conductive energy (uCond), internal +mechanical energy (uMech), and internal chemical energy (uChem). + +The *edpd* style is for energy-conserving dissipative particle +dynamics (eDPD) particles which store a temperature (edpd_temp), and +heat capacity (edpd_cv). For the *electron* style, the particles representing electrons are 3d Gaussians with a specified position and bandwidth or uncertainty in position, which is represented by the eradius = electron size. -For the *peri* style, the particles are spherical and each stores a -per-particle mass and volume. +For the *ellipsoid* style, particles can be ellipsoids which each +stores a shape vector with the 3 diameters of the ellipsoid and a +quaternion 4-vector with its orientation. Each particle stores a flag +in the ellipsoid vector which indicates whether it is an ellipsoid (1) +or a point particle (0). + +For the *line* style, particles can be are idealized line segments +which store a per-particle mass and length and orientation (i.e. the +end points of the line segment). Each particle stores a flag in the +line vector which indicates whether it is a line segment (1) or a +point particle (0). -The *bpm/sphere* style is part of the BPM package. +The *mdpd* style is for many-body dissipative particle dynamics (mDPD) +particles which store a density (rho) for considering density-dependent +many-body interactions. The *oxdna* style is for coarse-grained nucleotides and stores the 3'-to-5' polarity of the nucleotide strand, which is set through the bond topology in the data file. The first (second) atom in a bond definition is understood to point towards the 3'-end (5'-end) -of the strand. Note that this style is part of the CG-DNA package. +of the strand. -The *dpd* style is for dissipative particle dynamics (DPD) particles. -Note that it is part of the DPD-REACT package, and is not for use with -the :doc:`pair_style dpd or dpd/stat ` commands, which can -simply use atom_style atomic. Atom_style dpd extends DPD particle -properties with internal temperature (dpdTheta), internal conductive -energy (uCond), internal mechanical energy (uMech), and internal -chemical energy (uChem). +For the *peri* style, the particles are spherical and each stores a +per-particle mass and volume. -The *edpd* style is for energy-conserving dissipative particle -dynamics (eDPD) particles which store a temperature (edpd_temp), and -heat capacity(edpd_cv). +The *smd* style is for Smooth Particle Mach dynamics. Both fluids and +solids can be modeled. Particles store the mass and volume of an +integration point, a kernel diameter used for calculating the field +variables (e.g. stress and deformation) and a contact radius for +calculating repulsive forces which prevent individual physical bodies +from penetrating each other. -The *mdpd* style is for many-body dissipative particle dynamics (mDPD) -particles which store a density (rho) for considering -density-dependent many-body interactions. +The *sph* style is for smoothed particle hydrodynamics (SPH) particles +which store a density (rho), energy (esph), and heat capacity (cv). + +For the *spin* style, a magnetic spin is associated with each atom. +Those spins have a norm (their magnetic moment) and a direction. The *tdpd* style is for transport dissipative particle dynamics (tDPD) 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 *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 -Hydrodynamics. Both fluids and solids can be modeled. Particles -store the mass and volume of an integration point, a kernel diameter -used for calculating the field variables (e.g. stress and deformation) -and a contact radius for calculating repulsive forces which prevent -individual physical bodies from penetrating each other. - -For the *spin* style, a magnetic spin is associated to each atom. -Those spins have a norm (their magnetic moment) and a direction. - -The *wavepacket* style is similar to *electron*, but the electrons may -consist of several Gaussian wave packets, summed up with coefficients -cs= (cs_re,cs_im). Each of the wave packets is treated as a separate -particle in LAMMPS, wave packets belonging to the same electron must -have identical *etag* values. +The *wavepacket* style is similar to the *electron* style, but the +electrons may consist of several Gaussian wave packets, summed up with +coefficients cs= (cs_re,cs_im). Each of the wave packets is treated +as a separate particle in LAMMPS, wave packets belonging to the same +electron must have identical *etag* values. -For the *line* style, the particles are idealized line segments and -each stores a per-particle mass and length and orientation (i.e. the -end points of the line segment). - -For the *tri* style, the particles are planar triangles and each -stores a per-particle mass and size and orientation (i.e. the corner -points of the triangle). +The *sphere* and *bpm/sphere* styles allow particles to be either point +particles or finite-size particles. If the *radius* attribute is > +0.0, the particle is a finite-size sphere. If the diameter = 0.0, it +is a point particle. Note that by using the *disc* keyword with the +:doc:`fix nve/sphere `, :doc:`fix nvt/sphere +`, :doc:`fix nph/sphere `, :doc:`fix +npt/sphere ` commands for the *sphere* style, spheres +can be effectively treated as 2d discs for a 2d simulation if desired. +See also the :doc:`set density/disc ` command. These styles also +take an optional 0 or 1 argument. A value of 0 means the radius of +each sphere is constant for the duration of the simulation (this is +the default). A value of 1 means the radii may vary dynamically +during the simulation, e.g. due to use of the :doc:`fix adapt +` command. The *template* style allows molecular topology (bonds,angles,etc) to be defined via a molecule template using the :doc:`molecule ` command. The template stores one or more molecules with a single copy -of the topology info (bonds,angles,etc) of each. Individual atoms -only store a template index and template atom to identify which -molecule and which atom-within-the-molecule they represent. Using the -*template* style instead of the *bond*, *angle*, *molecular* styles -can save memory for systems comprised of a large number of small -molecules, all of a single type (or small number of types). See the -paper by Grime and Voth, in :ref:`(Grime) `, for examples of how this -can be advantageous for large-scale coarse-grained systems. -The ``examples/template`` directory has a few demo inputs and examples +of the topology info (bonds,angles,etc) of each. Individual atoms only +store a template index and template atom to identify which molecule and +which atom-within-the-molecule they represent. Using the *template* +style instead of the *bond*, *angle*, *molecular* styles can save memory +for systems comprised of a large number of small molecules, all of a +single type (or small number of types). See the paper by Grime and +Voth, in :ref:`(Grime) `, for examples of how this can be +advantageous for large-scale coarse-grained systems. The +``examples/template`` directory has a few demo inputs and examples showing the use of the *template* atom style versus *molecular*. .. note:: @@ -292,22 +419,11 @@ showing the use of the *template* atom style versus *molecular*. the CO2 molecule should define atom types 3 and 4 (or atom types 3 and 2 if a single oxygen type is desired), and bond type 2. -For the *body* style, the particles are arbitrary bodies with internal -attributes defined by the "style" of the bodies, which is specified by -the *bstyle* argument. Body particles can represent complex entities, -such as surface meshes of discrete points, collections of -sub-particles, deformable objects, etc. - -The :doc:`Howto body ` page describes the body styles -LAMMPS currently supports, and provides more details as to the kind of -body particles they represent. For all styles, each body particle -stores moments of inertia and a quaternion 4-vector, so that its -orientation and position can be time integrated due to forces and -torques. - -Note that there may be additional arguments required along with the -*bstyle* specification, in the atom_style body command. These -arguments are described on the :doc:`Howto body ` doc page. +For the *tri* style, particles can be planar triangles which each +stores a per-particle mass and size and orientation (i.e. the corner +points of the triangle). Each particle stores a flag in the tri +vector which indicates whether it is a triangle (1) or a point +particle (0). ---------- @@ -326,11 +442,12 @@ dipole". When a hybrid style is used, atoms store and communicate the union of all quantities implied by the individual styles. When using the *hybrid* style, you cannot combine the *template* style -with another molecular style that stores bond,angle,etc info on a +with another molecular style that stores bond, angle, etc info on a per-atom basis. -LAMMPS can be extended with new atom styles as well as new body -styles; see the :doc:`Modify ` doc page. +LAMMPS can be extended with new atom styles as well as new body styles; +see the corresponding manual page on :doc:`modifying & extending LAMMPS +`. ---------- @@ -346,54 +463,20 @@ This command cannot be used after the simulation box is defined by a Many of the styles listed above are only enabled if LAMMPS was built with a specific package, as listed below. See the :doc:`Build package -` page for more info. - -The *amoeba* style is part of the AMOEBA package. - -The *angle*, *bond*, *full*, *molecular*, and *template* styles are -part of the MOLECULE package. - -The *line* and *tri* styles are part of the ASPHERE package. - -The *body* style is part of the BODY package. - -The *dipole* style is part of the DIPOLE package. - -The *peri* style is part of the PERI package for Peridynamics. - -The *oxdna* style is part of the CG-DNA package for coarse-grained -simulation of DNA and RNA. - -The *electron* style is part of the EFF package for :doc:`electronic -force fields `. - -The *dpd* style is part of the DPD-REACT package for dissipative -particle dynamics (DPD). - -The *edpd*, *mdpd*, and *tdpd* styles are part of the DPD-MESO package -for energy-conserving dissipative particle dynamics (eDPD), many-body -dissipative particle dynamics (mDPD), and transport dissipative particle -dynamics (tDPD), respectively. - -The *sph* style is part of the 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. - -The *wavepacket* style is part of the AWPMD package for the -:doc:`antisymmetrized wave packet MD method `. +` page for more info. The table above lists which package +is required for individual atom styles. Related commands """""""""""""""" -:doc:`read_data `, :doc:`pair_style ` +:doc:`read_data `, :doc:`pair_style `, +:doc:`fix property/atom `, :doc:`set ` Default """"""" -The default atom style is atomic. If atom_style sphere is used its -default argument is 0. +The default atom style is *atomic*. If atom_style *sphere* or +*bpm/sphere* is used, its default argument is 0. ---------- diff --git a/doc/src/bond_bpm_rotational.rst b/doc/src/bond_bpm_rotational.rst index 7459d491d60..6734bd7bfee 100644 --- a/doc/src/bond_bpm_rotational.rst +++ b/doc/src/bond_bpm_rotational.rst @@ -147,8 +147,8 @@ By default, pair forces are not calculated between bonded particles. Pair forces can alternatively be overlaid on top of bond forces by setting the *overlay/pair* keyword to *yes*. These settings require specific :doc:`special_bonds ` settings described in the -restrictions. Further details can be found in the :doc:`how to -` page on BPMs. +restrictions. Further details can be found in the :doc:`how to ` +page on BPMs. .. versionadded:: 28Mar2023 diff --git a/doc/src/bond_bpm_spring.rst b/doc/src/bond_bpm_spring.rst index 04ff4d59912..a03c8322494 100644 --- a/doc/src/bond_bpm_spring.rst +++ b/doc/src/bond_bpm_spring.rst @@ -113,8 +113,8 @@ By default, pair forces are not calculated between bonded particles. Pair forces can alternatively be overlaid on top of bond forces by setting the *overlay/pair* keyword to *yes*. These settings require specific :doc:`special_bonds ` settings described in the -restrictions. Further details can be found in the :doc:`how to -` page on BPMs. +restrictions. Further details can be found in the :doc:`how to ` +page on BPMs. .. versionadded:: 28Mar2023 diff --git a/doc/src/bond_lepton.rst b/doc/src/bond_lepton.rst index adfd30627d2..5425b8695c5 100644 --- a/doc/src/bond_lepton.rst +++ b/doc/src/bond_lepton.rst @@ -11,7 +11,16 @@ Syntax .. code-block:: LAMMPS - bond_style lepton + bond_style style args + +* style = *lepton* +* args = optional arguments + +.. parsed-literal:: + + args = *auto_offset* or *no_offset* + *auto_offset* = offset the potential energy so that the value at r0 is 0.0 (default) + *no_offset* = do not offset the potential energy Examples """""""" @@ -19,6 +28,7 @@ Examples .. code-block:: LAMMPS bond_style lepton + bond_style lepton no_offset bond_coeff 1 1.5 "k*r^2; k=250.0" bond_coeff 2 1.1 "k2*r^2 + k3*r^3 + k4*r^4; k2=300.0; k3=-100.0; k4=50.0" @@ -40,6 +50,13 @@ constant *K* of 200.0 energy units: U_{bond,i} = K (r_i - r_0)^2 = K r^2 \qquad r = r_i - r_0 +.. versionchanged:: 7Feb2024 + +By default the potential energy U is shifted so that he value U is 0.0 +for $r = r_0$. This is equivalent to using the optional keyword +*auto_offset*. When using the keyword *no_offset* instead, the +potential energy is not shifted. + The `Lepton library `_, that the *lepton* bond style interfaces with, evaluates this expression string at run time to compute the pairwise energy. It also creates an analytical diff --git a/doc/src/boundary.rst b/doc/src/boundary.rst index 8e019e801c9..06f125ed4f7 100644 --- a/doc/src/boundary.rst +++ b/doc/src/boundary.rst @@ -42,8 +42,10 @@ commands. The style *p* means the box is periodic, so that particles interact across the boundary, and they can exit one end of the box and re-enter the other end. A periodic dimension can change in size due to -constant pressure boundary conditions or box deformation (see the :doc:`fix npt ` and :doc:`fix deform ` commands). The *p* -style must be applied to both faces of a dimension. +constant pressure boundary conditions or box deformation (see the +:doc:`fix npt ` and :doc:`fix deform ` commands). +The *p* style must be applied to both faces of a dimension. For 2d +simulations the z dimension must be periodic (which is the default). The styles *f*, *s*, and *m* mean the box is non-periodic, so that particles do not interact across the boundary and do not move from one @@ -76,28 +78,44 @@ atoms becomes less than 50.0. This can be useful if you start a simulation with an empty box or if you wish to leave room on one side of the box, e.g. for atoms to evaporate from a surface. -For triclinic (non-orthogonal) simulation boxes, if the second dimension -of a tilt factor (e.g. y for xy) is periodic, then the periodicity is -enforced with the tilt factor offset. If the first dimension is -shrink-wrapped, then the shrink wrapping is applied to the tilted box -face, to encompass the atoms. E.g. for a positive xy tilt, the xlo -and xhi faces of the box are planes tilting in the +y direction as y -increases. These tilted planes are shrink-wrapped around the atoms to -determine the x extent of the box. - +LAMMPS also allows use of triclinic (non-orthogonal) simulation boxes. See the :doc:`Howto triclinic ` page for a -geometric description of triclinic boxes, as defined by LAMMPS, and -how to transform these parameters to and from other commonly used -triclinic representations. +description of both general and restricted triclinic boxes and how to +define them. General triclinic boxes (arbitrary edge vectors **A**, +**B**, and **C**) are converted internally to restricted triclinic +boxes with tilt factors (xy,xz,yz) which skew an otherwise orthogonal +box. + +The boundary command settings explained above for the 6 +faces of an orthogonal box also apply in similar manner to the 6 faces +of a restricted triclinic box (and thus to the corresponding 6 faces +of a general triclinic box), with the following context. + +if the second dimension of a tilt factor (e.g. y for xy) is periodic, +then the periodicity is enforced with the tilt factor offset. This +means that for y periodicity a particle which exits the lower y +boundary is displaced in the x-direction by xy before it re-enters the +upper y boundary. And vice versa if a particle exits the upper y +boundary. Likewise the ghost atoms surrounding a particle near the +lower y boundary include images of particles near the upper y-boundary +which are displaced in the x-direction by xy. Similar rules apply for +z-periodicity and the xz and/or yz tilt factors. + +If the first dimension of a tilt factor is shrink-wrapped, then the +shrink wrapping is applied to the tilted box face, to encompass the +atoms. E.g. for a positive xy tilt, the xlo and xhi faces of the box +are planes tilting in the +y direction as y increases. The position +of these tilted planes are adjusted dynamically to shrink-wrap around +the atoms to determine the xlo and xhi extents of the box. Restrictions """""""""""" This command cannot be used after the simulation box is defined by a -:doc:`read_data ` or :doc:`create_box ` command or -:doc:`read_restart ` command. See the -:doc:`change_box ` command for how to change the simulation -box boundaries after it has been defined. +:doc:`read_data ` or :doc:`create_box ` command +or :doc:`read_restart ` command. See the +:doc:`change_box ` command for how to change the +simulation box boundaries after it has been defined. For 2d simulations, the z dimension must be periodic. diff --git a/doc/src/compute_adf.rst b/doc/src/compute_adf.rst index fc1ad1ae0ae..a43a10207c4 100644 --- a/doc/src/compute_adf.rst +++ b/doc/src/compute_adf.rst @@ -204,8 +204,23 @@ angles per atom satisfying the ADF criteria. Restrictions """""""""""" -This compute is part of the EXTRA-COMPUTE package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +This compute is part of the EXTRA-COMPUTE package. It is only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +By default, the ADF is not computed for distances longer than the +largest force cutoff, since the neighbor list creation will only contain +pairs up to that distance (plus neighbor list skin). If you use outer +cutoffs larger than that, you must use :doc:`neighbor style 'bin' or +'nsq' `. + +If you want an ADF for a larger outer cutoff, you can also use the +:doc:`rerun ` command to post-process a dump file, use :doc:`pair +style zero ` and set the force cutoff to be larger in the +rerun script. Note that in the rerun context, the force cutoff is +arbitrary and with pair style zero you are not computing any forces, and +since you are not running dynamics you are not changing the model that +generated the trajectory. The ADF is not computed for neighbors outside the force cutoff, since processors (in parallel) don't know about atom coordinates for diff --git a/doc/src/compute_ave_sphere_atom.rst b/doc/src/compute_ave_sphere_atom.rst index ecb67ae7b5a..4640b8534ac 100644 --- a/doc/src/compute_ave_sphere_atom.rst +++ b/doc/src/compute_ave_sphere_atom.rst @@ -102,6 +102,8 @@ This compute is part of the EXTRA-COMPUTE package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +This compute requires :doc:`neighbor styles 'bin' or 'nsq' `. + Related commands """""""""""""""" diff --git a/doc/src/compute_composition_atom.rst b/doc/src/compute_composition_atom.rst index e973eaa234c..c3e6fb7c603 100644 --- a/doc/src/compute_composition_atom.rst +++ b/doc/src/compute_composition_atom.rst @@ -107,6 +107,8 @@ This compute is part of the EXTRA-COMPUTE package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +This compute requires :doc:`neighbor styles 'bin' or 'nsq' `. + Related commands """""""""""""""" diff --git a/doc/src/compute_efield_wolf_atom.rst b/doc/src/compute_efield_wolf_atom.rst index 1a709dc9f2e..93bfa55151d 100644 --- a/doc/src/compute_efield_wolf_atom.rst +++ b/doc/src/compute_efield_wolf_atom.rst @@ -106,6 +106,8 @@ Restrictions This compute is part of the EXTRA-COMPUTE package. It is only enabled if LAMMPS was built with that package. +This compute requires :doc:`neighbor styles 'bin' or 'nsq' `. + Related commands """""""""""""""" diff --git a/doc/src/compute_fabric.rst b/doc/src/compute_fabric.rst index b38ffafa48a..77586e617a1 100644 --- a/doc/src/compute_fabric.rst +++ b/doc/src/compute_fabric.rst @@ -64,7 +64,7 @@ tangential force tensor. The contact tensor is calculated as .. math:: - C_{ab} = \frac{15}{2} (\phi_{ab} - \mathrm{Tr}(\phi) \delta_{ab}) + C_{ab} = \frac{15}{2} (\phi_{ab} - \frac{1}{3} \mathrm{Tr}(\phi) \delta_{ab}) where :math:`a` and :math:`b` are the :math:`x`, :math:`y`, :math:`z` directions, :math:`\delta_{ab}` is the Kronecker delta function, and @@ -83,7 +83,7 @@ The branch tensor is calculated as .. math:: - B_{ab} = \frac{15}{6 \mathrm{Tr}(D)} (D_{ab} - \mathrm{Tr}(D) \delta_{ab}) + B_{ab} = \frac{15}{2\, \mathrm{Tr}(D)} (D_{ab} - \frac{1}{3} \mathrm{Tr}(D) \delta_{ab}) where the tensor :math:`D` is defined as @@ -101,7 +101,7 @@ The normal force fabric tensor is calculated as .. math:: - F^n_{ab} = \frac{15}{6\, \mathrm{Tr}(N)} (N_{ab} - \mathrm{Tr}(N) \delta_{ab}) + F^n_{ab} = \frac{15}{2\, \mathrm{Tr}(N)} (N_{ab} - \frac{1}{3} \mathrm{Tr}(N) \delta_{ab}) where the tensor :math:`N` is defined as @@ -119,7 +119,7 @@ as .. math:: - F^t_{ab} = \frac{15}{9\, \mathrm{Tr}(N)} (T_{ab} - \mathrm{Tr}(T) \delta_{ab}) + F^t_{ab} = \frac{5}{\mathrm{Tr}(N)} (T_{ab} - \frac{1}{3} \mathrm{Tr}(T) \delta_{ab}) where the tensor :math:`T` is defined as diff --git a/doc/src/compute_mliap.rst b/doc/src/compute_mliap.rst index 6abd3e5a6b7..4bd5194bfd6 100644 --- a/doc/src/compute_mliap.rst +++ b/doc/src/compute_mliap.rst @@ -20,7 +20,7 @@ Syntax *model* values = style style = *linear* or *quadratic* or *mliappy* *descriptor* values = style filename - style = *sna* + style = *sna* or *ace* filename = name of file containing descriptor definitions *gradgradflag* value = 0/1 toggle gradgrad method for force gradient @@ -31,6 +31,7 @@ Examples .. code-block:: LAMMPS compute mliap model linear descriptor sna Ta06A.mliap.descriptor + compute mliap model linear descriptor ace H_N_O_ccs.yace gradgradflag 1 Description """"""""""" @@ -40,18 +41,15 @@ of machine-learning interatomic potentials with respect to model parameters. It is used primarily for calculating the gradient of energy, force, and stress components with respect to model parameters, which is useful when training :doc:`mliap pair_style ` models to match target data. -It provides separate -definitions of the interatomic potential functional form (*model*) -and the geometric quantities that characterize the atomic positions -(*descriptor*). By defining *model* and *descriptor* separately, +It provides separate definitions of the interatomic potential functional +form (*model*) and the geometric quantities that characterize the atomic +positions (*descriptor*). By defining *model* and *descriptor* separately, it is possible to use many different models with a given descriptor, -or many different descriptors with a given model. Currently, the -compute supports just two models, *linear* and *quadratic*, -and one descriptor, *sna*, the SNAP descriptor used by -:doc:`pair_style snap `, including the linear, quadratic, -and chem variants. Work is currently underway to extend -the interface to handle neural network energy models, -and it is also straightforward to add new descriptor styles. +or many different descriptors with a given model. Currently, the compute +supports *linear* and *quadratic* SNAP descriptor computes used in +:doc:`pair_style snap `, *linear* SO3 descriptor computes, and +*linear* ACE descriptor computes used in :doc:`pair_style pace `, +and it is straightforward to add new descriptor styles. The compute *mliap* command must be followed by two keywords *model* and *descriptor* in either order. @@ -60,19 +58,31 @@ The *model* keyword is followed by the model style (*linear*, *quadratic* or *mliappy*). The *mliappy* model is only available if LAMMPS is built with the *mliappy* Python module. There are :ref:`specific installation instructions ` for that module. +For the *mliap* compute, specifying a *linear* model will compute the +specified descriptors and gradients with respect to linear model parameters +whereas *quadratic* will do the same, but for the quadratic products of +descriptors. The *descriptor* keyword is followed by a descriptor style, and -additional arguments. The compute currently supports two descriptor -styles *sna* and *so3*, but it is is straightforward to add additional -descriptor styles. The SNAP descriptor style *sna* is the same as that -used by :doc:`pair_style snap `, including the linear, -quadratic, and chem variants. A single additional argument specifies -the descriptor filename containing the parameters and setting used by -the SNAP descriptor. The descriptor filename usually ends in the +additional arguments. The compute currently supports three descriptor +styles: *sna*, *so3*, and *ace*, but it is is straightforward to add +additional descriptor styles. The SNAP descriptor style *sna* is the +same as that used by :doc:`pair_style snap `, including the +linear, quadratic, and chem variants. A single additional argument +specifies the descriptor filename containing the parameters and setting used +by the SNAP descriptor. The descriptor filename usually ends in the *.mliap.descriptor* extension. The format of this file is identical to the descriptor file in the :doc:`pair_style mliap `, and is described in detail there. +The ACE descriptor style *ace* is the same as :doc:`pair_style pace `. +A single additional argument specifies the *ace* descriptor filename +that contains parameters and settings for the ACE descriptors. This file +format differs from the SNAP or SO3 descriptor files, and has a *.yace* or +*.ace* extension. However, as with other mliap descriptor styles, this file +is identical to the ace descriptor file in :doc:`pair_style mliap `, +where it is described in further detail. + .. note:: The number of LAMMPS atom types (and the value of *nelems* in the model) @@ -172,8 +182,10 @@ This compute is part of the ML-IAP package. It is only enabled if LAMMPS was built with that package. In addition, building LAMMPS with the ML-IAP package requires building LAMMPS with the ML-SNAP package. The *mliappy* model also requires building LAMMPS with the PYTHON -package. See the :doc:`Build package ` page for more -info. +package. The *ace* descriptor also requires building LAMMPS with the +ML-PACE package. See the :doc:`Build package ` page for +more info. Note that `kk` (KOKKOS) accelerated variants of SNAP and +ACE descriptors are not compatible with `mliap descriptor`. Related commands """""""""""""""" diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index c510319dfca..b18903f5540 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -36,7 +36,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 7Feb2024 This compute calculates a set of quantities related to the atomic cluster expansion (ACE) descriptors of the atoms in a group. ACE diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index 52195ec5f81..03dfbb841bd 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -153,7 +153,8 @@ Related commands Default """"""" -none +By default the compute includes contributions from the keywords: +``ke pair bond angle dihedral improper kspace fix`` ---------- diff --git a/doc/src/compute_property_atom.rst b/doc/src/compute_property_atom.rst index b03d6eb74e2..4484c3b6975 100644 --- a/doc/src/compute_property_atom.rst +++ b/doc/src/compute_property_atom.rst @@ -23,8 +23,9 @@ Syntax spx, spy, spz, sp, fmx, fmy, fmz, nbonds, radius, diameter, omegax, omegay, omegaz, + temperature, heatflow, angmomx, angmomy, angmomz, - shapex,shapey, shapez, + shapex, shapey, shapez, quatw, quati, quatj, quatk, tqx, tqy, tqz, end1x, end1y, end1z, end2x, end2y, end2z, corner1x, corner1y, corner1z, @@ -56,6 +57,8 @@ Syntax *nbonds* = number of bonds assigned to an atom *radius,diameter* = radius,diameter of spherical particle *omegax,omegay,omegaz* = angular velocity of spherical particle + *temperature* = internal temperature of spherical particle + *heatflow* = internal heat flow of spherical particle *angmomx,angmomy,angmomz* = angular momentum of aspherical particle *shapex,shapey,shapez* = 3 diameters of aspherical particle *quatw,quati,quatj,quatk* = quaternion components for aspherical or body particles diff --git a/doc/src/compute_rattlers_atom.rst b/doc/src/compute_rattlers_atom.rst index cf4e888657e..ba14a1fd448 100644 --- a/doc/src/compute_rattlers_atom.rst +++ b/doc/src/compute_rattlers_atom.rst @@ -32,7 +32,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 7Feb2024 Define a compute that identifies rattlers in a system. Rattlers are often identified in granular or glassy packings as under-coordinated atoms that diff --git a/doc/src/compute_rdf.rst b/doc/src/compute_rdf.rst index ed73800f822..85e758016e8 100644 --- a/doc/src/compute_rdf.rst +++ b/doc/src/compute_rdf.rst @@ -176,22 +176,29 @@ also numbers :math:`\ge 0.0`. Restrictions """""""""""" -The RDF is not computed for distances longer than the force cutoff, -since processors (in parallel) do not know about atom coordinates for -atoms further away than that distance. If you want an RDF for larger -distances, you can use the :doc:`rerun ` command to post-process -a dump file and set the cutoff for the potential to be longer in the +By default, the RDF is not computed for distances longer than the +largest force cutoff, since the neighbor list creation will only contain +pairs up to that distance (plus neighbor list skin). This distance can +be increased using the *cutoff* keyword but this keyword is only valid +with :doc:`neighbor styles 'bin' and 'nsq' `. + +If you want an RDF for larger distances, you can also use the +:doc:`rerun ` command to post-process a dump file, use :doc:`pair +style zero ` and set the force cutoff to be longer in the rerun script. Note that in the rerun context, the force cutoff is -arbitrary, since you are not running dynamics and thus are not changing -your model. The definition of :math:`g(r)` used by LAMMPS is only appropriate -for characterizing atoms that are uniformly distributed throughout the -simulation cell. In such cases, the coordination number is still -correct and meaningful. As an example, if a large simulation cell -contains only one atom of type *itypeN* and one of *jtypeN*, then :math:`g(r)` -will register an arbitrarily large spike at whatever distance they -happen to be at, and zero everywhere else. -The function :math:`\text{coord}(r)` will show a step -change from zero to one at the location of the spike in :math:`g(r)`. +arbitrary and with pair style zero you are not computing any forces, and +you are not running dynamics you are not changing the model that +generated the trajectory. + +The definition of :math:`g(r)` used by LAMMPS is only appropriate for +characterizing atoms that are uniformly distributed throughout the +simulation cell. In such cases, the coordination number is still correct +and meaningful. As an example, if a large simulation cell contains only +one atom of type *itypeN* and one of *jtypeN*, then :math:`g(r)` will +register an arbitrarily large spike at whatever distance they happen to +be at, and zero everywhere else. The function :math:`\text{coord}(r)` +will show a step change from zero to one at the location of the spike in +:math:`g(r)`. .. note:: diff --git a/doc/src/compute_reaxff_atom.rst b/doc/src/compute_reaxff_atom.rst index 997ad02e9fa..deab29feea5 100644 --- a/doc/src/compute_reaxff_atom.rst +++ b/doc/src/compute_reaxff_atom.rst @@ -40,7 +40,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 7Feb2024 Define a computation that extracts bond information computed by the ReaxFF potential specified by :doc:`pair_style reaxff `. diff --git a/doc/src/compute_reduce.rst b/doc/src/compute_reduce.rst index 604b1c15714..c599761c39f 100644 --- a/doc/src/compute_reduce.rst +++ b/doc/src/compute_reduce.rst @@ -56,8 +56,9 @@ Examples compute 1 all reduce sum c_force compute 1 all reduce/region subbox sum c_force compute 2 all reduce min c_press[2] f_ave v_myKE - compute 2 all reduce min c_press[*] f_ave v_myKE + compute 2 all reduce min c_press[*] f_ave v_myKE inputs peratom compute 3 fluid reduce max c_index[1] c_index[2] c_dist replace 1 3 replace 2 3 + compute 4 all reduce max c_bond inputs local Description """"""""""" diff --git a/doc/src/compute_slcsa_atom.rst b/doc/src/compute_slcsa_atom.rst index 6b2708c4d93..7338b92d593 100644 --- a/doc/src/compute_slcsa_atom.rst +++ b/doc/src/compute_slcsa_atom.rst @@ -32,7 +32,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 7Feb2024 Define a computation that performs the Supervised Learning Crystal Structure Analysis (SL-CSA) from :ref:`(Lafourcade) ` diff --git a/doc/src/compute_stress_atom.rst b/doc/src/compute_stress_atom.rst index ffd0d2ffb46..0fac47a6c08 100644 --- a/doc/src/compute_stress_atom.rst +++ b/doc/src/compute_stress_atom.rst @@ -289,7 +289,8 @@ Related commands Default """"""" -none +By default the compute includes contributions from the keywords: +``ke pair bond angle dihedral improper kspace fix`` ---------- diff --git a/doc/src/compute_stress_mop.rst b/doc/src/compute_stress_mop.rst index 74d4c618e76..6630c7171f1 100644 --- a/doc/src/compute_stress_mop.rst +++ b/doc/src/compute_stress_mop.rst @@ -132,10 +132,13 @@ size does not change in time, and axis-aligned planes. The method only works with two-body pair interactions, because it requires the class method ``Pair::single()`` to be implemented, which is not possible for manybody potentials. In particular, compute -*stress/mop/profile* and *stress/mop* do not work with more than two-body pair -interactions, long range (kspace) interactions and +*stress/mop/profile* and *stress/mop* do not work with more than two-body +pair interactions, long range (kspace) interactions and improper intramolecular interactions. +The impact of fixes that affect the stress (e.g. fix langevin) is +also not included in the stress computed here. + Related commands """""""""""""""" diff --git a/doc/src/create_atoms.rst b/doc/src/create_atoms.rst index 5d1e7c872c8..7935c676efd 100644 --- a/doc/src/create_atoms.rst +++ b/doc/src/create_atoms.rst @@ -86,25 +86,46 @@ Description """"""""""" This command creates atoms (or molecules) within the simulation box, -either on a lattice, or a single atom (or molecule), or on a surface -defined by a triangulated mesh, or a random collection of atoms (or -molecules). It is an alternative to reading in atom coordinates +either on a lattice, or at random points, or on a surface defined by a +triangulated mesh. Or it creates a single atom (or molecule) at a +specified point. It is an alternative to reading in atom coordinates explicitly via a :doc:`read_data ` or :doc:`read_restart -` command. A simulation box must already exist, which is +` command. + +To use this command a simulation box must already exist, which is typically created via the :doc:`create_box ` command. -Before using this command, a lattice must also be defined using the -:doc:`lattice ` command, unless you specify the *single* style -with units = box or the *random* style. For the remainder of this doc -page, a created atom or molecule is referred to as a "particle". +Before using this command, a lattice must typically also be defined +using the :doc:`lattice ` command, unless you specify the +*single* or *mesh* style with units = box or the *random* style. To +create atoms on a lattice for general triclinic boxes, see the +discussion below. + +For the remainder of this doc page, a created atom or molecule is +referred to as a "particle". If created particles are individual atoms, they are assigned the specified atom *type*, though this can be altered via the *basis* keyword as discussed below. If molecules are being created, the type -of each atom in the created molecule is specified in the file read by -the :doc:`molecule ` command, and those values are added to -the specified atom *type* (e.g., if *type* = 2 and the file specifies -atom types 1, 2, and 3, then each created molecule will have atom types -3, 4, and 5). +of each atom in the created molecule is specified in a specified file +read by the :doc:`molecule ` command, and those values are +added to the specified atom *type* (e.g., if *type* = 2 and the file +specifies atom types 1, 2, and 3, then each created molecule will have +atom types 3, 4, and 5). + +.. note:: + + You cannot use this command to create atoms that are outside the + simulation box; they will just be ignored by LAMMPS. This is true + even if you are using shrink-wrapped box boundaries, as specified + by the :doc:`boundary ` command. However, you can first + use the :doc:`change_box ` command to temporarily + expand the box, then add atoms via create_atoms, then finally use + change_box command again if needed to re-shrink-wrap the new atoms. + See the :doc:`change_box ` doc page for an example of + how to do this, using the create_atoms *single* style to insert a + new atom outside the current simulation box. + +---------- For the *box* style, the create_atoms command fills the entire simulation box with particles on the lattice. If your simulation box @@ -126,10 +147,117 @@ periodic boundaries. If this is desired, you should either use the *box* style, or tweak the region size to get precisely the particles you want. +---------- + +If the simulation box is formulated as a general triclinic box defined +by arbitrary edge vectors **A**, **B**, **C**, then the *box* and +*region* styles will create atoms on a lattice commensurate with those +edge vectors. See the :doc:`Howto_triclinic ` doc +page for a detailed explanation of orthogonal, restricted triclinic, +and general triclinic simulation boxes. As with the :doc:`create_box +` command, the :doc:`lattice ` command used by +this command must be of style *custom* and use its *triclinic/general* +option. The *a1, *a2*, *a3* settings of the :doc:`lattice ` +command define the edge vectors of a unit cell of the general +triclinic lattice. The :doc:`create_box ` command creates +a simulation box which replicates that unit cell along each of the +**A**, **B**, **C** edge vectors. + +.. note:: + + LAMMPS allows specification of general triclinic simulation boxes + as a convenience for users who may be converting data from + solid-state crystallographic representations or from DFT codes for + input to LAMMPS. However, as explained on the + :doc:`Howto_triclinic ` doc page, internally, + LAMMPS only uses restricted triclinic simulation boxes. This means + the box created by the :doc:`create_box ` command as + well as the atoms created by this command with their per-atom + information (e.g. coordinates, velocities) are converted (rotated) + from general to restricted triclinic form when the two commands are + invoked. The ` doc page also discusses other + LAMMPS commands which can input/output general triclinic + representations of the simulation box and per-atom data. + +The *box* style will fill the entire general triclinic box with +particles on the lattice, as explained above. + +.. note:: + + The *region* style also operates as explained above, but the check + for particles inside the region is performed *after* the particle + coordinates have been converted to the restricted triclinic box. + This means the region must also be defined with respect to the + restricted triclinic box, not the general triclinic box. + +If the simulation box is general triclinic, the *single*, *random*, +and *mesh* styles described next operate on the box *after* it has +been converted to restricted triclinic. So all the settings for those +styles should be made in that context. + +---------- + For the *single* style, a single particle is added to the system at the specified coordinates. This can be useful for debugging purposes or to create a tiny system with a handful of particles at specified -positions. +positions. For a 2d simulation the specified z coordinate must be +0.0. + +.. versionchanged:: 2Jun2022 + +The *porosity* style has been renamed to *random* with added functionality. + +For the *random* style, *N* particles are added to the system at +randomly generated coordinates, which can be useful for generating an +amorphous system. For 2d simulations, the z coordinates of all added +atoms will be 0.0. + +The particles are created one by one using the specified random number +*seed*, resulting in the same set of particle coordinates, independent +of how many processors are being used in the simulation. Unless the +*overlap* keyword is specified, particles created by the *random* +style will typically be highly overlapped. Various additional +criteria can be used to accept or reject a random particle insertion; +see the keyword discussion below. Multiple attempts per particle are +made (see the *maxtry* keyword) until the insertion is either +successful or fails. If this command fails to add all requested *N* +particles, a warning will be output. + +If the *region-ID* argument is specified as NULL, then the randomly +created particles will be anywhere in the simulation box. If a +*region-ID* is specified, a geometric volume is filled that is both +inside the simulation box and is also consistent with the region +volume. See the :doc:`region ` command for details. Note +that a region can be specified so that its "volume" is either inside +or outside its geometric boundary. + +Note that the create_atoms command adds particles to those that +already exist. This means it can be used to add particles to a system +previously read in from a data or restart file. Or the create_atoms +command can be used multiple times, to add multiple sets of particles +to the simulation. For example, grain boundaries can be created, by +interleaving the create_atoms command with :doc:`lattice ` +commands specifying different orientations. + +When this command is used, care should be taken to ensure the +resulting system does not contain particles that are highly +overlapped. Such overlaps will cause many interatomic potentials to +compute huge energies and forces, leading to bad dynamics. There are +several strategies to avoid this problem: + +* Use the :doc:`delete_atoms overlap ` command after + create_atoms. For example, this strategy can be used to overlay and + surround a large protein molecule with a volume of water molecules, + then delete water molecules that overlap with the protein atoms. + +* For the *random* style, use the optional *overlap* keyword to avoid + overlaps when each new particle is created. + +* Before running dynamics on an overlapped system, perform an + :doc:`energy minimization `. Or run initial dynamics with + :doc:`pair_style soft ` or with :doc:`fix nve/limit + ` to un-overlap the particles, before running normal + dynamics. .. figure:: img/marble_race.jpg :figwidth: 33% @@ -189,73 +317,6 @@ to the area of that triangle. beneficial to exclude computing interactions between the created particles using :doc:`neigh_modify exclude `. -.. versionchanged:: 2Jun2022 - -The *porosity* style has been renamed to *random* with added functionality. - -For the *random* style, *N* particles are added to the system at -randomly generated coordinates, which can be useful for generating an -amorphous system. The particles are created one by one using the -specified random number *seed*, resulting in the same set of particle -coordinates, independent of how many processors are being used in the -simulation. Unless the *overlap* keyword is specified, particles -created by the *random* style will typically be highly overlapped. -Various additional criteria can be used to accept or reject a random -particle insertion; see the keyword discussion below. Multiple -attempts per particle are made (see the *maxtry* keyword) until the -insertion is either successful or fails. If this command fails to add -all requested *N* particles, a warning will be output. - -If the *region-ID* argument is specified as NULL, then the randomly -created particles will be anywhere in the simulation box. If a -*region-ID* is specified, a geometric volume is filled that is both -inside the simulation box and is also consistent with the region -volume. See the :doc:`region ` command for details. Note -that a region can be specified so that its "volume" is either inside -or outside its geometric boundary. - -Note that the create_atoms command adds particles to those that -already exist. This means it can be used to add particles to a system -previously read in from a data or restart file. Or the create_atoms -command can be used multiple times, to add multiple sets of particles -to the simulation. For example, grain boundaries can be created, by -interleaving the create_atoms command with :doc:`lattice ` -commands specifying different orientations. - -When this command is used, care should be taken to ensure the -resulting system does not contain particles that are highly -overlapped. Such overlaps will cause many interatomic potentials to -compute huge energies and forces, leading to bad dynamics. There are -several strategies to avoid this problem: - -* Use the :doc:`delete_atoms overlap ` command after - create_atoms. For example, this strategy can be used to overlay and - surround a large protein molecule with a volume of water molecules, - then delete water molecules that overlap with the protein atoms. - -* For the *random* style, use the optional *overlap* keyword to avoid - overlaps when each new particle is created. - -* Before running dynamics on an overlapped system, perform an - :doc:`energy minimization `. Or run initial dynamics with - :doc:`pair_style soft ` or with :doc:`fix nve/limit - ` to un-overlap the particles, before running normal - dynamics. - -.. note:: - - You cannot use any of the styles explained above to create atoms - that are outside the simulation box; they will just be ignored by - LAMMPS. This is true even if you are using shrink-wrapped box - boundaries, as specified by the :doc:`boundary ` command. - However, you can first use the :doc:`change_box ` - command to temporarily expand the box, then add atoms via - create_atoms, then finally use change_box command again if needed - to re-shrink-wrap the new atoms. See the :doc:`change_box - ` doc page for an example of how to do this, using the - create_atoms *single* style to insert a new atom outside the - current simulation box. - ---------- Individual atoms are inserted by this command, unless the *mol* @@ -268,6 +329,12 @@ molecule can be specified in the molecule file. See the required to be in this file are the coordinates and types of atoms in the molecule. +.. note:: + + If you are using the *mol* keyword in combination with the + :doc:`atom style template ` command, they must use + the same molecule template-ID. + Using a lattice to add molecules, e.g. via the *box* or *region* or *single* styles, is exactly the same as adding atoms on lattice points, except that entire molecules are added at each point, i.e. on @@ -463,12 +530,19 @@ on a single CPU core. ----- The *units* keyword determines the meaning of the distance units used -to specify the coordinates of the one particle created by the *single* -style, or the overlap distance *Doverlap* by the *overlap* keyword. A -*box* value selects standard distance units as defined by the -:doc:`units ` command (e.g., :math:`\AA` for -units = *real* or *metal*\ . A *lattice* value means the distance units are in -lattice spacings. +by parameters for various styles. A *box* value selects standard +distance units as defined by the :doc:`units ` command (e.g., +:math:`\AA` for units = *real* or *metal*\ . A *lattice* value means +the distance units are in lattice spacings. These are affected settings: + +* for *single* style: coordinates of the particle created +* for *random* style: overlap distance *Doverlap* by the *overlap* keyword +* for *mesh* style: *bisect* threshold value for *meshmode* = *bisect* +* for *mesh* style: *radthresh* value for *meshmode* = *bisect* +* for *mesh* style: *density* value for *meshmode* = *qrand* + +Since *density* represents an area (distance ^2), the lattice spacing +factor is also squared. ---------- @@ -536,6 +610,11 @@ command. A rotation vector specified for a single molecule must be in the z-direction for a 2d model. +For :doc:`molecule templates ` that are created from multiple +files, i.e. contain multiple molecule *sets*, only the first set is +used. To create multiple molecules the files currently need to be +merged and different molecule IDs assigned with a Molecules section. + Related commands """""""""""""""" diff --git a/doc/src/create_box.rst b/doc/src/create_box.rst index f930ecea83a..062fa2b3600 100644 --- a/doc/src/create_box.rst +++ b/doc/src/create_box.rst @@ -9,9 +9,11 @@ Syntax .. code-block:: LAMMPS create_box N region-ID keyword value ... + create_box N NULL alo ahi blo bhi clo chi keyword value ... * N = # of atom types to use in this simulation -* region-ID = ID of region to use as simulation domain +* region-ID = ID of region to use as simulation domain or NULL for general triclinic box +* alo,ahi,blo,bhi,clo,chi = multipliers on a1,a2,a3 vectors defined by :doc"`lattice ` command (only when region-ID = NULL) * zero or more keyword/value pairs may be appended * keyword = *bond/types* or *angle/types* or *dihedral/types* or *improper/types* or *extra/bond/per/atom* or *extra/angle/per/atom* or *extra/dihedral/per/atom* or *extra/improper/per/atom* or *extra/special/per/atom* @@ -32,121 +34,204 @@ Examples .. code-block:: LAMMPS + # orthogonal or restricted triclinic box using regionID = mybox create_box 2 mybox create_box 2 mybox bond/types 2 extra/bond/per/atom 1 +.. code-block:: LAMMPS + + # 2d general triclinic box using primitive cell for 2d hex lattice + lattice custom 1.0 a1 1.0 0.0 0.0 a2 0.5 0.86602540378 0.0 & + a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general + create_box 1 NULL 0 5 0 5 -0.5 0.5 + +.. code-block:: LAMMPS + + # 3d general triclinic box using primitive cell for 3d fcc lattice + lattice custom 1.0 a2 0.0 0.5 0.5 a1 0.5 0.0 0.5 a3 0.5 0.5 0.0 basis 0.0 0.0 0.0 triclinic/general + create box 1 NULL -5 5 -10 10 0 20 + Description """"""""""" -This command creates a simulation box based on the specified region. -Thus a :doc:`region ` command must first be used to define a -geometric domain. It also partitions the simulation box into a -regular 3d grid of rectangular bricks, one per processor, based on the -number of processors being used and the settings of the -:doc:`processors ` command. The partitioning can later be -changed by the :doc:`balance ` or :doc:`fix balance ` commands. - -The argument N is the number of atom types that will be used in the +This command creates a simulation box. It also partitions the box into +a regular 3d grid of smaller sub-boxes, one per processor (MPI task). +The geometry of the partitioning is based on the size and shape of the +simulation box, the number of processors being used and the settings +of the :doc:`processors ` command. The partitioning can +later be changed by the :doc:`balance ` or :doc:`fix balance +` commands. + +Simulation boxes in LAMMPS can be either orthogonal or triclinic in +shape. Orthogonal boxes are a brick in 3d (rectangle in 2d) with 6 +faces that are each perpendicular to one of the standard xyz +coordinate axes. Triclinic boxes are a parallelepiped in 3d +(parallelogram in 2d) with opposite pairs of faces parallel to each +other. LAMMPS supports two forms of triclinic boxes, restricted and +general, which differ in how the box is oriented with respect to the +xyz coordinate axes. See the :doc:`Howto triclinic ` +for a detailed description of all 3 kinds of simulation boxes. + +The argument *N* is the number of atom types that will be used in the simulation. +Orthogonal and restricted triclinic boxes are created by specifying a +region ID previously defined by the :doc:`region ` command. +General triclinic boxes are discussed below. + If the region is not of style *prism*, then LAMMPS encloses the region (block, sphere, etc.) with an axis-aligned orthogonal bounding box -which becomes the simulation domain. +which becomes the simulation domain. For a 2d simulation, the zlo and +zhi values of the simulation box must straddle zero. If the region is of style *prism*, LAMMPS creates a non-orthogonal simulation domain shaped as a parallelepiped with triclinic symmetry. As defined by the :doc:`region prism ` command, the -parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by three -edge vectors starting from the origin given by -:math:`\vec a = (x_\text{hi}-x_\text{lo},0,0)`; -:math:`\vec b = (xy,y_\text{hi}-y_\text{lo},0)`; and -:math:`\vec c = (xz,yz,z_\text{hi}-z_\text{lo})`. -The parameters *xy*\ , *xz*\ , and *yz* can be 0.0 or -positive or negative values and are called "tilt factors" because they -are the amount of displacement applied to faces of an originally -orthogonal box to transform it into the parallelepiped. - -By default, a *prism* region used with the create_box command must have -tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half -the distance of the parallel box length. For example, if -:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` -box length is 10 and the :math:`xy` tilt factor must be between -:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` -must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and +parallelepiped has an "origin" at (xlo,ylo,zlo) and three edge vectors +starting from the origin given by :math:`\vec a = +(x_\text{hi}-x_\text{lo},0,0)`; :math:`\vec b = +(xy,y_\text{hi}-y_\text{lo},0)`; and :math:`\vec c = +(xz,yz,z_\text{hi}-z_\text{lo})`. In LAMMPS lingo, this is a +restricted triclinic box because the three edge vectors cannot be +defined in arbitrary (general) directions. The parameters *xy*\ , +*xz*\ , and *yz* can be 0.0 or positive or negative values and are +called "tilt factors" because they are the amount of displacement +applied to faces of an originally orthogonal box to transform it into +the parallelepiped. For a 2d simulation, the zlo and zhi values of +the simulation box must straddle zero. + +Typically a *prism* region used with the create_box command should +have tilt factors :math:`(xy,xz,yz)` that do not skew the box more +than half the distance of the parallel box length. For example, if +:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the +:math:`x` box length is 10 and the :math:`xy` tilt factor must be +between :math:`-5` and :math:`5`. Similarly, both :math:`xz` and +:math:`yz` must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and :math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a -limitation, since if the maximum tilt factor is 5 (as in this example), -then configurations with tilt :math:`= \dots, -15`, :math:`-5`, -:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically -equivalent. Simulations with large tilt factors will run inefficiently, -since they require more ghost atoms and thus more communication. With -very large tilt factors, LAMMPS will eventually produce incorrect -trajectories and stop with errors due to lost atoms or similar. - -See the :doc:`Howto triclinic ` page for a -geometric description of triclinic boxes, as defined by LAMMPS, and -how to transform these parameters to and from other commonly used -triclinic representations. - -When a prism region is used, the simulation domain should normally be periodic -in the dimension that the tilt is applied to, which is given by the second -dimension of the tilt factor (e.g., :math:`y` for :math:`xy` tilt). This is so -that pairs of atoms interacting across that boundary will have one of them -shifted by the tilt factor. Periodicity is set by the -:doc:`boundary ` command. For example, if the :math:`xy` tilt factor -is non-zero, then the :math:`y` dimension should be periodic. Similarly, the -:math:`z` dimension should be periodic if :math:`xz` or :math:`yz` is non-zero. -LAMMPS does not require this periodicity, but you may lose atoms if this is not -the case. +limitation, since if the maximum tilt factor is 5 (as in this +example), then configurations with tilt :math:`= \dots, -15`, +:math:`-5`, :math:`5`, :math:`15`, :math:`25, \dots` are all +geometrically equivalent. + +LAMMPS will issue a warning if the tilt factors of the created box do +not meet this criterion. This is because simulations with large tilt +factors may run inefficiently, since they require more ghost atoms and +thus more communication. With very large tilt factors, LAMMPS may +eventually produce incorrect trajectories and stop with errors due to +lost atoms or similar issues. + +See the :doc:`Howto triclinic ` page for geometric +descriptions of triclinic boxes and tilt factors, as well as how to +transform the restricted triclinic parameters to and from other +commonly used triclinic representations. + +When a prism region is used, the simulation domain should normally be +periodic in the dimension that the tilt is applied to, which is given +by the second dimension of the tilt factor (e.g., :math:`y` for +:math:`xy` tilt). This is so that pairs of atoms interacting across +that boundary will have one of them shifted by the tilt factor. +Periodicity is set by the :doc:`boundary ` command. For +example, if the :math:`xy` tilt factor is non-zero, then the :math:`y` +dimension should be periodic. Similarly, the :math:`z` dimension +should be periodic if :math:`xz` or :math:`yz` is non-zero. LAMMPS +does not require this periodicity, but you may lose atoms if this is +not the case. Note that if your simulation will tilt the box (e.g., via the -:doc:`fix deform ` command), the simulation box must be set up to -be triclinic, even if the tilt factors are initially 0.0. You can -also change an orthogonal box to a triclinic box or vice versa by +:doc:`fix deform ` command), the simulation box must be +created as triclinic, even if the tilt factors are initially 0.0. You +can also change an orthogonal box to a triclinic box or vice versa by using the :doc:`change box ` command with its *ortho* and *triclinic* options. .. note:: - If the system is non-periodic (in a dimension), then you should - not make the lo/hi box dimensions (as defined in your - :doc:`region ` command) radically smaller/larger than the extent - of the atoms you eventually plan to create (e.g., via the - :doc:`create_atoms ` command). For example, if your atoms - extend from 0 to 50, you should not specify the box bounds as :math:`-10000` - and :math:`10000`. This is because as described above, LAMMPS uses the - specified box size to lay out the 3d grid of processors. A huge - (mostly empty) box will be sub-optimal for performance when using - "fixed" boundary conditions (see the :doc:`boundary ` - command). When using "shrink-wrap" boundary conditions (see the - :doc:`boundary ` command), a huge (mostly empty) box may cause - a parallel simulation to lose atoms the first time that LAMMPS - shrink-wraps the box around the atoms. + If the system is non-periodic (in a dimension), then you should not + make the lo/hi box dimensions (as defined in your :doc:`region + ` command) radically smaller/larger than the extent of the + atoms you eventually plan to create (e.g., via the + :doc:`create_atoms ` command). For example, if your + atoms extend from 0 to 50, you should not specify the box bounds as + :math:`-10000` and :math:`10000`. This is because as described + above, LAMMPS uses the specified box size to lay out the 3d grid of + processors. A huge (mostly empty) box will be sub-optimal for + performance when using "fixed" boundary conditions (see the + :doc:`boundary ` command). When using "shrink-wrap" + boundary conditions (see the :doc:`boundary ` command), a + huge (mostly empty) box may cause a parallel simulation to lose + atoms the first time that LAMMPS shrink-wraps the box around the + atoms. + +---------- + +As noted above, general triclinic boxes in LAMMPS allow the box to +have arbitrary edge vectors **A**, **B**, **C**. The only +restrictions are that the three vectors be distinct, non-zero, and not +co-planar. They must also define a right-handed system such that +(**A** x **B**) points in the direction of **C**. Note that a +left-handed system can be converted to a right-handed system by simply +swapping the order of any pair of the **A**, **B**, **C** vectors. + +To create a general triclinic boxes, the region is specified as NULL +and the next 6 parameters (alo,ahi,blo,bhi,clo,chi) define the three +edge vectors **A**, **B**, **C** using additional information +previously defined by the :doc:`lattice ` command. + +The lattice must be of style *custom* and use its *triclinic/general* +option. This insures the lattice satisfies the restrictions listed +above. The *a1, *a2*, *a3* settings of the :doc:`lattice ` +command define the edge vectors of a unit cell of the general +triclinic lattice. This command uses them to define the three edge +vectors and origin of the general triclinic box as: + +* **A** = (ahi-alo) * *a1* +* **B** = (bhi-blo) * *a2* +* **C** = (chi-clo) * *a3* +* origin = (alo*a1 + blo*a2 + clo*a3) + +For 2d general triclinic boxes, clo = -0.5 and chi = 0.5 is required. + +.. note:: + + LAMMPS allows specification of general triclinic simulation boxes + as a convenience for users who may be converting data from + solid-state crystallographic representations or from DFT codes for + input to LAMMPS. However, as explained on the + :doc:`Howto_triclinic ` doc page, internally, + LAMMPS only uses restricted triclinic simulation boxes. This means + the box defined by this command and per-atom information + (e.g. coordinates, velocities) defined by the :doc:`create_atoms + ` command are converted (rotated) from general to + restricted triclinic form when the two commands are invoked. The + ` doc page also discusses other LAMMPS commands + which can input/output general triclinic representations of the + simulation box and per-atom data. ---------- The optional keywords can be used to create a system that allows for bond (angle, dihedral, improper) interactions, or for molecules with -special 1--2, 1--3, or 1--4 neighbors to be added later. These optional -keywords serve the same purpose as the analogous keywords that can be -used in a data file which are recognized by the +special 1--2, 1--3, or 1--4 neighbors to be added later. These +optional keywords serve the same purpose as the analogous keywords +that can be used in a data file which are recognized by the :doc:`read_data ` command when it sets up a system. Note that if these keywords are not used, then the create_box command creates an atomic (non-molecular) simulation that does not allow bonds -between pairs of atoms to be defined, or a -:doc:`bond potential ` to be specified, or for molecules with -special neighbors to be added to the system by commands such as -:doc:`create_atoms mol `, :doc:`fix deposit ` -or :doc:`fix pour `. +between pairs of atoms to be defined, or a :doc:`bond potential +` to be specified, or for molecules with special neighbors +to be added to the system by commands such as :doc:`create_atoms mol +`, :doc:`fix deposit ` or :doc:`fix pour +`. As an example, see the examples/deposit/in.deposit.molecule script, which deposits molecules onto a substrate. Initially there are no -molecules in the system, but they are added later by the -:doc:`fix deposit ` command. The create_box command in the -script uses the bond/types and extra/bond/per/atom keywords to allow -this. If the added molecule contained more than one special bond -(allowed by default), an extra/special/per/atom keyword would also -need to be specified. +molecules in the system, but they are added later by the :doc:`fix +deposit ` command. The create_box command in the script +uses the bond/types and extra/bond/per/atom keywords to allow this. +If the added molecule contained more than one special bond (allowed by +default), an extra/special/per/atom keyword would also need to be +specified. ---------- diff --git a/doc/src/dihedral_charmm.rst b/doc/src/dihedral_charmm.rst index cc792693a21..a5652bc74e2 100644 --- a/doc/src/dihedral_charmm.rst +++ b/doc/src/dihedral_charmm.rst @@ -3,6 +3,7 @@ .. index:: dihedral_style charmm/kk .. index:: dihedral_style charmm/omp .. index:: dihedral_style charmmfsw +.. index:: dihedral_style charmmfsw/kk dihedral_style charmm command ============================= @@ -12,6 +13,8 @@ Accelerator Variants: *charmm/intel*, *charmm/kk*, *charmm/omp* dihedral_style charmmfsw command ================================ +Accelerator Variants: *charmmfsw/kk* + Syntax """""" @@ -144,7 +147,9 @@ for more info. Related commands """""""""""""""" -:doc:`dihedral_coeff ` +:doc:`dihedral_coeff `, +:doc:`pair_style lj/charmm variants `, +:doc:`angle_style charmm `, :doc:`fix cmap ` Default """"""" diff --git a/doc/src/dihedral_cosine_squared_restricted.rst b/doc/src/dihedral_cosine_squared_restricted.rst new file mode 100644 index 00000000000..c402c983aba --- /dev/null +++ b/doc/src/dihedral_cosine_squared_restricted.rst @@ -0,0 +1,71 @@ +.. index:: dihedral_style cosine/squared/restricted + +dihedral_style cosine/squared/restricted command +================================================ + + +Syntax +"""""" + +.. code-block:: LAMMPS + + dihedral_style cosine/squared/restricted + +Examples +"""""""" + +.. code-block:: LAMMPS + + dihedral_style cosine/squared/restricted + dihedral_coeff 1 10.0 120 + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +The *cosine/squared/restricted* dihedral style uses the potential + +.. math:: + + E = K [\cos(\phi) - \cos(\phi_0)]^2 / \sin^2(\phi) + +, which is commonly used in the MARTINI force field. + +See :ref:`(Bulacu) ` for a description of the restricted dihedral for the MARTINI force field. + +The following coefficients must be defined for each dihedral type via the +:doc:`dihedral_coeff ` command as in the example above, or in +the data file or restart files read by the :doc:`read_data ` +or :doc:`read_restart ` commands: + +* :math:`K` (energy) +* :math:`\phi_0` (degrees) + +:math:`\phi_0` is specified in degrees, but LAMMPS converts it to radians internally. + +---------- + +Restrictions +"""""""""""" + +This dihedral style can only be used if LAMMPS was built with the +EXTRA-MOLECULE package. See the :doc:`Build package ` doc page +for more info. + +Related commands +"""""""""""""""" + +:doc:`dihedral_coeff ` + +Default +""""""" + +none + +---------- + +.. _restricted-Bul: + +**(Bulacu)** Bulacu, Goga, Zhao, Rossi, Monticelli, Periole, Tieleman, Marrink, J Chem Theory Comput, 9, 3282-3292 +(2013). diff --git a/doc/src/dihedral_style.rst b/doc/src/dihedral_style.rst index 45dd66e7506..56b8ff52265 100644 --- a/doc/src/dihedral_style.rst +++ b/doc/src/dihedral_style.rst @@ -10,7 +10,7 @@ Syntax dihedral_style style -* style = *none* or *zero* or *hybrid* or *charmm* or *charmmfsw* or *class2* or *cosine/shift/exp* or *fourier* or *harmonic* or *helix* or *lepton* or *multi/harmonic* or *nharmonic* or *opls* or *spherical* or *table* or *table/cut* +* style = *none* or *zero* or *hybrid* or *charmm* or *charmmfsw* or *class2* or *cosine/shift/exp* or *cosine/squared/restricted* or *fourier* or *harmonic* or *helix* or *lepton* or *multi/harmonic* or *nharmonic* or *opls* or *spherical* or *table* or *table/cut* Examples """""""" @@ -105,6 +105,7 @@ exist. * :doc:`charmmfsw ` - CHARMM dihedral with force switching * :doc:`class2 ` - COMPASS (class 2) dihedral * :doc:`cosine/shift/exp ` - dihedral with exponential in spring constant +* :doc:`cosine/squared/restricted ` - squared cosine dihedral with restricted term * :doc:`fourier ` - dihedral with multiple cosine terms * :doc:`harmonic ` - harmonic dihedral * :doc:`helix ` - helix dihedral diff --git a/doc/src/dump.rst b/doc/src/dump.rst index 2d1598e4938..2e61ad9921a 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -104,7 +104,6 @@ Syntax q, mux, muy, muz, mu, radius, diameter, omegax, omegay, omegaz, angmomx, angmomy, angmomz, tqx, tqy, tqz, - heatflow, temperature, c_ID, c_ID[I], f_ID, f_ID[I], v_name, i_name, d_name, i2_name[I], d2_name[I] @@ -131,8 +130,6 @@ Syntax omegax,omegay,omegaz = angular velocity of spherical particle angmomx,angmomy,angmomz = angular momentum of aspherical particle tqx,tqy,tqz = torque on finite-size particles - heatflow = rate of heat flow into particle - temperature = temperature of particle c_ID = per-atom vector calculated by a compute with ID c_ID[I] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID @@ -278,16 +275,20 @@ format ` command and its options. Format of native LAMMPS format dump files: The *atom*, *custom*, *grid*, and *local* styles create files in a -simple LAMMPS-specific text format that is self-explanatory when -viewing a dump file. Many post-processing tools either included with -LAMMPS or third-party tools can read this format, as does the +simple LAMMPS-specific text format that is mostly self-explanatory +when viewing a dump file. Many post-processing tools either included +with LAMMPS or third-party tools can read this format, as does the :doc:`rerun ` command. See tools described on the :doc:`Tools ` doc page for examples, including `Pizza.py `_. For all these styles, the dimensions of the simulation box are -included in each snapshot. For an orthogonal simulation box this -information is formatted as: +included in each snapshot. The simulation box in LAMMPS can be +defined in one of 3 ways: orthogonal, restricted triclinic, and +general triclinic. See the :doc:`Howto triclinic ` +doc page for a detailed description of all 3 options. + +For an orthogonal simulation box the box information is formatted as: .. parsed-literal:: @@ -304,10 +305,10 @@ the six characters is one of *p* (periodic), *f* (fixed), *s* (shrink wrap), or *m* (shrink wrapped with a minimum value). See the :doc:`boundary ` command for details. -For triclinic simulation boxes (non-orthogonal), an orthogonal -bounding box which encloses the triclinic simulation box is output, -along with the three tilt factors (*xy*, *xz*, *yz*) of the triclinic box, -formatted as follows: +For a restricted triclinic simulation box, an orthogonal bounding box +which encloses the restricted triclinic simulation box is output, +along with the three tilt factors (*xy*, *xz*, *yz*) of the triclinic +box, formatted as follows: .. parsed-literal:: @@ -329,6 +330,10 @@ bounding box extents (xlo_bound, xhi_bound, etc.) are calculated from the triclinic parameters, and how to transform those parameters to and from other commonly used triclinic representations. +For a general triclinic simulation box, see the "General triclinic" +section below for a description of the ITEM: BOX BOUNDS format as well +as how per-atom coordinates and per-atom vector quantities are output. + The *atom* and *custom* styles output a "ITEM: NUMBER OF ATOMS" line with the count of atoms in the snapshot. Likewise they output an "ITEM: ATOMS" line which includes column descriptors for the per-atom @@ -400,7 +405,6 @@ command. Dump files in other popular formats: - .. note:: This section only discusses file formats relevant to this doc page. @@ -656,6 +660,87 @@ how to control the compression level in both variants. ---------- +General triclinic simulation box output for the *atom* and *custom* styles: + +As mentioned above, the simulation box can be defined as a general +triclinic box, which means that 3 arbitrary box edge vectors **A**, +**B**, **C** can be specified. See the :doc:`Howto triclinic +` doc page for a detailed description of general +triclinic boxes. + +This option is provided as a convenience for users who may be +converting data from solid-state crystallographic representations or +from DFT codes for input to LAMMPS. However, as explained on the +:doc:`Howto_triclinic ` doc page, internally, LAMMPS +only uses restricted triclinic simulation boxes. This means the box +and per-atom information (e.g. coordinates, velocities) LAMMPS stores +are converted (rotated) from general to restricted triclinic form when +the system is created. + +For dump output, if the :doc:`dump_modify triclinic/general +` command is used, the box description and per-atom +coordinates and other per-atom vectors will be converted (rotated) +from restricted to general form when each dump file snapshots is +output. This option can only be used if the simulation box was +initially created as general triclinic. If the option is not used, +and the simulation box is general triclinic, then the dump file +snapshots will reflect the internal restricted triclinic geometry. + +The dump_modify triclinic/general option affects 3 aspects of the dump +file output. + +First, the format for the BOX BOUNDS is as follows + +.. parsed-literal:: + + ITEM: BOX BOUNDS abc origin + ax ay az originx + bx by bz originy + cx cy cz originz + +where the **A** edge vector of the box is (ax,ay,az) and similarly +for **B** and **C**. The origin of all 3 edge vectors is (originx, +originy, originz). + +Second, the coordinates of each atom are converted (rotated) so that +the atom is inside (or near) the general triclinic box defined by the +**A**, **B**, **C** edge vectors. For style *atom*, this only alters +output for unscaled atom coords, via the :doc:`dump_modify scaled no +` setting. For style *custom*, this alters output for +either unscaled or unwrapped output of atom coords, via the *x,y,z* or +*xu,yu,zu* attributes. For output of scaled atom coords by both +styles, there is no difference between restricted and general +triclinic values. + +Third, the output for any attribute of the *custom* style which +represents a per-atom vector quantity will be converted (rotated) to +be oriented consistent with the general triclinic box and its +orientation relative to the standard xyz coordinate axes. + +This applies to the following *custom* style attributes: + +* vx,vy,vz = atom velocities +* fx,fy,fz = forces on atoms +* mux,muy,muz = orientation of dipole moment of atom +* omegax,omegay,omegaz = angular velocity of spherical particle +* angmomx,angmomy,angmomz = angular momentum of aspherical particle +* tqx,tqy,tqz = torque on finite-size particles + +For example, if the velocity of an atom in a restricted triclinic box +is along the x-axis, then it will be output for a general triclinic +box as a vector along the **A** edge vector of the box. + +.. note:: + + For style *custom*, the :doc:`dump_modify thresh ` + command may access per-atom attributes either directly or + indirectly through a compute or variable. If the attribute is an + atom coordinate or one of the vectors mentioned above, its value + will *NOT* be a general triclinic (rotated) value. Rather it will + be a restricted triclinic value. + +---------- + Arguments for different styles: The sections below describe per-atom, local, and per grid cell diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index 2d84f28836b..a9b71a98e2b 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -17,7 +17,7 @@ Syntax * one or more keyword/value pairs may be appended * these keywords apply to various dump styles -* keyword = *append* or *at* or *balance* or *buffer* or *colname* or *delay* or *element* or *every* or *every/time* or *fileper* or *first* or *flush* or *format* or *header* or *image* or *label* or *maxfiles* or *nfile* or *pad* or *pbc* or *precision* or *region* or *refresh* or *scale* or *sfactor* or *skip* or *sort* or *tfactor* or *thermo* or *thresh* or *time* or *units* or *unwrap* +* keyword = *append* or *at* or *balance* or *buffer* or *colname* or *delay* or *element* or *every* or *every/time* or *fileper* or *first* or *flush* or *format* or *header* or *image* or *label* or *maxfiles* or *nfile* or *pad* or *pbc* or *precision* or *region* or *refresh* or *scale* or *sfactor* or *skip* or *sort* or *tfactor* or *thermo* or *thresh* or *time* or *triclinic/general* or *units* or *unwrap* .. parsed-literal:: @@ -74,12 +74,13 @@ Syntax -N = sort per-atom lines in descending order by the Nth column *tfactor* arg = time scaling factor (> 0.0) *thermo* arg = *yes* or *no* - *time* arg = *yes* or *no* *thresh* args = attribute operator value attribute = same attributes (x,fy,etotal,sxx,etc) used by dump custom style operator = "<" or "<=" or ">" or ">=" or "==" or "!=" or "\|\^" value = numeric value to compare to, or LAST these 3 args can be replaced by the word "none" to turn off thresholding + *time* arg = *yes* or *no* + *triclinic/general* arg = *yes* or *no* *units* arg = *yes* or *no* *unwrap* arg = *yes* or *no* @@ -802,8 +803,9 @@ region since the last dump. dump_modify ... thresh v_charge |^ LAST This will dump atoms whose charge has changed from an absolute value -less than :math:`\frac12` to greater than :math:`\frac12` (or vice versa) since the last dump (e.g., due to reactions and subsequent charge equilibration in a -reactive force field). +less than :math:`\frac12` to greater than :math:`\frac12` (or vice +versa) since the last dump (e.g., due to reactions and subsequent +charge equilibration in a reactive force field). The choice of operators listed above are the usual comparison operators. The XOR operation (exclusive or) is also included as "\|\^". @@ -811,6 +813,18 @@ In this context, XOR means that if either the attribute or value is 0.0 and the other is non-zero, then the result is "true" and the threshold criterion is met. Otherwise it is not met. +.. note:: + + For style *custom*, the *triclinic/general* keyword can alter dump + output for general triclinic simulation boxes and their atoms. See + the :doc:`dump ` command for details of how this changes the + format of dump file snapshots. The thresh keyword may access + per-atom attributes either directly or indirectly through a compute + or variable. If the attribute is an atom coordinate or a per-atom + vector (such as velocity, force, or dipole moment), its value will + *NOT* be a general triclinic (rotated) value. Rather it will be a + restricted triclinic value. + ---------- The *time* keyword only applies to the dump *atom*, *custom*, *local*, @@ -835,6 +849,29 @@ The default setting is *no*\ . ---------- +The *triclinic/general* keyword only applies to the dump *atom* and +*custom* styles. It can only be used with a value of *yes* if the +simulation box was created as a general triclinic box. See the +:doc:`Howto_triclinic ` doc page for a detailed +explanation of orthogonal, restricted triclinic, and general triclinic +simulation boxes. + +If this keyword is used with a value of *yes*, the box information at +the beginning of each snapshot will include information about the 3 +arbitrary edge vectors **A**, **B**, **C** that define the general +triclinic box as well as their origin. The format is described on the +:doc:`dump ` doc page. + +The coordinates of each atom will likewise be output as values in (or +near) the general triclinic box. Likewise, per-atom vector quantities +such as velocity, omega, dipole moment, etc will have orientations +consistent with the general triclinic box, meaning they will be +rotated relative to the standard xyz coordinate axes. See the +:doc:`dump ` doc page for a full list of which dump attributes +this affects. + +---------- + The *units* keyword only applies to the dump *atom*, *custom*, and *local* styles (and their COMPRESS package versions *atom/gz*, *custom/gz* and *local/gz*\ ). If set to *yes*, each individual dump @@ -922,6 +959,8 @@ The option defaults are * sort = off for dump styles *atom*, *custom*, *cfg*, and *local* * sort = id for dump styles *dcd*, *xtc*, and *xyz* * thresh = none +* time = no +* triclinic/general no * units = no * unwrap = no diff --git a/doc/src/fix.rst b/doc/src/fix.rst index 69a72124875..4cd21353c70 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -226,6 +226,7 @@ accelerated styles exist. * :doc:`controller ` - apply control loop feedback mechanism * :doc:`damping/cundall ` - Cundall non-viscous damping for granular simulations * :doc:`deform ` - change the simulation box size/shape +* :doc:`deform/pressure ` - change the simulation box size/shape with additional loading conditions * :doc:`deposit ` - add new atoms above a surface * :doc:`dpd/energy ` - constant energy dissipative particle dynamics * :doc:`drag ` - drag atoms towards a defined coordinate @@ -427,6 +428,7 @@ accelerated styles exist. * :doc:`wall/body/polyhedron ` - time integration for body particles of style :doc:`rounded/polyhedron ` * :doc:`wall/colloid ` - Lennard-Jones wall interacting with finite-size particles * :doc:`wall/ees ` - wall for ellipsoidal particles +* :doc:`wall/flow ` - flow boundary conditions * :doc:`wall/gran ` - frictional wall(s) for granular simulations * :doc:`wall/gran/region ` - :doc:`fix wall/region ` equivalent for use with granular particles * :doc:`wall/harmonic ` - harmonic spring wall diff --git a/doc/src/fix_ave_chunk.rst b/doc/src/fix_ave_chunk.rst index adbfb43d725..449b9b8208d 100644 --- a/doc/src/fix_ave_chunk.rst +++ b/doc/src/fix_ave_chunk.rst @@ -31,7 +31,7 @@ Syntax v_name = per-atom vector calculated by an atom-style variable with name * zero or more keyword/arg pairs may be appended -* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *format* or *title1* or *title2* or *title3* +* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *append* or *overwrite* or *format* or *title1* or *title2* or *title3* .. parsed-literal:: @@ -51,6 +51,8 @@ Syntax dof_per_chunk = define this many degrees-of-freedom per chunk for temperature calculation *file* arg = filename filename = file to write results to + *append* arg = filename + filename = file to append results to *overwrite* arg = none = overwrite output file with only latest output *format* arg = string string = C-style format string @@ -433,15 +435,21 @@ molecule. ---------- -The *file* keyword allows a filename to be specified. Every -:math:`N_\text{freq}` timesteps, a section of chunk info will be written to a -text file in the following format. A line with the timestep and number of -chunks is written. Then one line per chunk is written, containing the chunk -ID :math:`(1-N_\text{chunk}),` an optional original ID value, optional -coordinate values for chunks that represent spatial bins, the number of atoms -in the chunk, and one or more calculated values. More explanation of the -optional values is given below. The number of values in each line -corresponds to the number of values specified in the fix ave/chunk +.. versionadded:: 17Apr2024 + new keyword *append* + +The *file* or *append* keywords allow a filename to be specified. If +*file* is used, then the filename is overwritten if it already exists. +If *append* is used, then the filename is appended to if it already +exists, or created if it does not exist. Every :math:`N_\text{freq}` +timesteps, a section of chunk info will be written to a text file in the +following format. A line with the timestep and number of chunks is +written. Then one line per chunk is written, containing the chunk ID +:math:`(1-N_\text{chunk}),` an optional original ID value, optional +coordinate values for chunks that represent spatial bins, the number of +atoms in the chunk, and one or more calculated values. More explanation +of the optional values is given below. The number of values in each +line corresponds to the number of values specified in the fix ave/chunk command. The number of atoms and the value(s) are summed or average quantities, as explained above. diff --git a/doc/src/fix_ave_correlate.rst b/doc/src/fix_ave_correlate.rst index 1aff7490486..659e15105c7 100644 --- a/doc/src/fix_ave_correlate.rst +++ b/doc/src/fix_ave_correlate.rst @@ -65,7 +65,6 @@ Examples fix 1 all ave/correlate 1 50 10000 & c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] & type upper ave running title1 "My correlation data" - fix 1 all ave/correlate 1 50 10000 c_thermo_press[*] Description diff --git a/doc/src/fix_ave_correlate_long.rst b/doc/src/fix_ave_correlate_long.rst index e2b23248f2d..003bdf897db 100644 --- a/doc/src/fix_ave_correlate_long.rst +++ b/doc/src/fix_ave_correlate_long.rst @@ -20,11 +20,11 @@ Syntax .. parsed-literal:: c_ID = global scalar calculated by a compute with ID - c_ID[I] = Ith component of global vector calculated by a compute with ID + c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) f_ID = global scalar calculated by a fix with ID - f_ID[I] = Ith component of global vector calculated by a fix with ID + f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) v_name = global value calculated by an equal-style variable with name - v_name[I] = Ith component of global vector calculated by a vector-style variable with name + v_name[I] = Ith component of a vector-style variable with name, I can include wildcard (see below) * zero or more keyword/arg pairs may be appended * keyword = *type* or *start* or *file* or *overwrite* or *title1* or *title2* or *ncorr* or *nlen* or *ncount* @@ -63,6 +63,7 @@ Examples fix 1 all ave/correlate/long 1 10000 & c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] & type upper title1 "My correlation data" nlen 15 ncount 3 + fix 1 all ave/correlate/long 1 10000 c_thermo_press[*] Description """"""""""" @@ -80,8 +81,10 @@ specified values may represent calculations performed by computes and fixes which store their own "group" definitions. Each listed value can be the result of a compute or fix or the -evaluation of an equal-style variable. See the -:doc:`fix ave/correlate ` page for details. +evaluation of an equal-style or vector-style variable. For +vector-style variables, the specified indices can include a wildcard +character. See the :doc:`fix ave/correlate ` page +for details. The *Nevery* and *Nfreq* arguments specify on what time steps the input values will be used to calculate correlation data and the frequency diff --git a/doc/src/fix_ave_histo.rst b/doc/src/fix_ave_histo.rst index 9699e4238cb..ac3b77086ee 100644 --- a/doc/src/fix_ave_histo.rst +++ b/doc/src/fix_ave_histo.rst @@ -35,7 +35,7 @@ Syntax v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below) * zero or more keyword/arg pairs may be appended -* keyword = *mode* or *kind* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3* +* keyword = *mode* or *kind* or *file* or *append* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: @@ -45,6 +45,8 @@ Syntax *kind* arg = *global* or *peratom* or *local* *file* arg = filename filename = name of file to output histogram(s) to + *append* arg = filename + filename = name of file to append histogram(s) to *ave* args = *one* or *running* or *window* one = output a new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps @@ -317,19 +319,25 @@ on. The default is step 0. Often input values can be 0.0 at time 0, so setting *start* to a larger value can avoid including a 0.0 in a running or windowed histogram. -The *file* keyword allows a filename to be specified. Every *Nfreq* -steps, one histogram is written to the file. This includes a leading -line that contains the timestep, number of bins, the total count of -values contributing to the histogram, the count of values that were -not histogrammed (see the *beyond* keyword), the minimum value -encountered, and the maximum value encountered. The min/max values -include values that were not histogrammed. Following the leading -line, one line per bin is written into the file. Each line contains -the bin #, the coordinate for the center of the bin (between *lo* and -*hi*\ ), the count of values in the bin, and the normalized count. The -normalized count is the bin count divided by the total count (not -including values not histogrammed), so that the normalized values sum -to 1.0 across all bins. +.. versionadded:: 17Apr2024 + new keyword *append* + +The *file* or *append* keywords allow a filename to be specified. If +*file* is used, then the filename is overwritten if it already exists. +If *append* is used, then the filename is appended to if it already +exists, or created if it does not exist. Every *Nfreq* steps, one +histogram is written to the file. This includes a leading line that +contains the timestep, number of bins, the total count of values +contributing to the histogram, the count of values that were not +histogrammed (see the *beyond* keyword), the minimum value encountered, +and the maximum value encountered. The min/max values include values +that were not histogrammed. Following the leading line, one line per +bin is written into the file. Each line contains the bin #, the +coordinate for the center of the bin (between *lo* and *hi*\ ), the +count of values in the bin, and the normalized count. The normalized +count is the bin count divided by the total count (not including values +not histogrammed), so that the normalized values sum to 1.0 across all +bins. The *overwrite* keyword will continuously overwrite the output file with the latest output, so that it only contains one timestep worth of diff --git a/doc/src/fix_ave_time.rst b/doc/src/fix_ave_time.rst index aa82e676eaa..cb05b8a5abc 100644 --- a/doc/src/fix_ave_time.rst +++ b/doc/src/fix_ave_time.rst @@ -28,7 +28,7 @@ Syntax v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below) * zero or more keyword/arg pairs may be appended -* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *format* or *title1* or *title2* or *title3* +* keyword = *mode* or *file* or *append* or *ave* or *start* or *off* or *overwrite* or *format* or *title1* or *title2* or *title3* .. parsed-literal:: @@ -45,6 +45,8 @@ Syntax M = value # from 1 to Nvalues *file* arg = filename filename = name of file to output time averages to + *append* arg = filename + filename = name of file to append time averages to *overwrite* arg = none = overwrite output file with only latest output *format* arg = string string = C-style format string @@ -270,16 +272,21 @@ are effectively constant or are simply current values (e.g., they are being written to a file with other time-averaged values for purposes of creating well-formatted output). -The *file* keyword allows a filename to be specified. Every *Nfreq* -steps, one quantity or vector of quantities is written to the file for -each input value specified in the fix ave/time command. For *mode* = -scalar, this means a single line is written each time output is -performed. Thus the file ends up to be a series of lines, i.e. one -column of numbers for each input value. For *mode* = vector, an array -of numbers is written each time output is performed. The number of rows -is the length of the input vectors, and the number of columns is the -number of values. Thus the file ends up to be a series of these array -sections. +.. versionadded:: 17Apr2024 + new keyword *append* + +The *file* or *append* keywords allow a filename to be specified. If +*file* is used, then the filename is overwritten if it already exists. +If *append* is used, then the filename is appended to if it already +exists, or created if it does not exist. Every *Nfreq* steps, one +quantity or vector of quantities is written to the file for each input +value specified in the fix ave/time command. For *mode* = scalar, this +means a single line is written each time output is performed. Thus the +file ends up to be a series of lines, i.e. one column of numbers for +each input value. For *mode* = vector, an array of numbers is written +each time output is performed. The number of rows is the length of the +input vectors, and the number of columns is the number of values. Thus +the file ends up to be a series of these array sections. .. versionadded:: 4May2022 diff --git a/doc/src/fix_balance.rst b/doc/src/fix_balance.rst index 0672a054706..3065707dc79 100644 --- a/doc/src/fix_balance.rst +++ b/doc/src/fix_balance.rst @@ -14,15 +14,15 @@ Syntax * balance = style name of this fix command * Nfreq = perform dynamic load balancing every this many steps * thresh = imbalance threshold that must be exceeded to perform a re-balance -* style = *shift* or *rcb* - +* style = *shift* or *rcb* or *report* .. parsed-literal:: - shift args = dimstr Niter stopthresh + *shift* args = dimstr Niter stopthresh dimstr = sequence of letters containing *x* or *y* or *z*, each not more than once Niter = # of times to iterate within each dimension of dimstr sequence stopthresh = stop balancing when this imbalance threshold is reached *rcb* args = none + *report* args = none * zero or more keyword/arg pairs may be appended * keyword = *weight* or *out* @@ -70,6 +70,13 @@ re-balancing is performed periodically during the simulation. To perform "static" balancing, before or between runs, see the :doc:`balance ` command. +.. versionadded:: 17Apr2024 + +The *report* balance style only computes the load imbalance but +does not attempt any re-balancing. This way the load imbalance +information can be used otherwise, for instance for stopping a +run with :doc:`fix halt `. + Load-balancing is typically most useful if the particles in the simulation box have a spatially-varying density distribution or where the computational cost varies significantly between different diff --git a/doc/src/fix_charge_regulation.rst b/doc/src/fix_charge_regulation.rst index bc2651a55bd..091eeae417d 100644 --- a/doc/src/fix_charge_regulation.rst +++ b/doc/src/fix_charge_regulation.rst @@ -253,11 +253,11 @@ built with that package. See the :doc:`Build package ` page for more info. The :doc:`atom_style `, used must contain the charge -property, for example, the style could be *charge* or *full*. Only -usable for 3D simulations. Atoms specified as free ions cannot be part -of rigid bodies or molecules and cannot have bonding interactions. The -scheme is limited to integer charges, any atoms with non-integer charges -will not be considered by the fix. +property and have per atom type masses, for example, the style could be +*charge* or *full*. Only usable for 3D simulations. Atoms specified as +free ions cannot be part of rigid bodies or molecules and cannot have +bonding interactions. The scheme is limited to integer charges, any +atoms with non-integer charges will not be considered by the fix. All interaction potentials used must be continuous, otherwise the MD integration and the particle exchange MC moves do not correspond to the diff --git a/doc/src/fix_deform.rst b/doc/src/fix_deform.rst index ee010f5645c..9146b987c86 100644 --- a/doc/src/fix_deform.rst +++ b/doc/src/fix_deform.rst @@ -4,6 +4,9 @@ fix deform command ================== +:doc:`fix deform/pressure ` command +======================================================== + Accelerator Variants: *deform/kk* Syntax @@ -11,18 +14,18 @@ Syntax .. code-block:: LAMMPS - fix ID group-ID deform N parameter args ... keyword value ... + fix ID group-ID fix_style N parameter style args ... keyword value ... * ID, group-ID are documented in :doc:`fix ` command -* deform = style name of this fix command +* fix_style = *deform* or *deform/pressure* * N = perform box deformation every this many timesteps -* one or more parameter/arg pairs may be appended +* one or more parameter/style/args sequences of arguments may be appended .. parsed-literal:: parameter = *x* or *y* or *z* or *xy* or *xz* or *yz* *x*, *y*, *z* args = style value(s) - style = *final* or *delta* or *scale* or *vel* or *erate* or *trate* or *volume* or *wiggle* or *variable* + style = *final* or *delta* or *scale* or *vel* or *erate* or *trate* or *volume* or *wiggle* or *variable* or *pressure* or *pressure/mean* *final* values = lo hi lo hi = box boundaries at end of run (distance units) *delta* values = dlo dhi @@ -43,8 +46,15 @@ Syntax *variable* values = v_name1 v_name2 v_name1 = variable with name1 for box length change as function of time v_name2 = variable with name2 for change rate as function of time + *pressure* values = target gain (ONLY available in :doc:`fix deform/pressure ` command) + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + *pressure/mean* values = target gain (ONLY available in :doc:`fix deform/pressure ` command) + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + *xy*, *xz*, *yz* args = style value - style = *final* or *delta* or *vel* or *erate* or *trate* or *wiggle* + style = *final* or *delta* or *vel* or *erate* or *trate* or *wiggle* or *variable* *final* value = tilt tilt = tilt factor at end of run (distance units) *delta* value = dtilt @@ -62,9 +72,12 @@ Syntax *variable* values = v_name1 v_name2 v_name1 = variable with name1 for tilt change as function of time v_name2 = variable with name2 for change rate as function of time + *pressure* values = target gain (ONLY available in :doc:`fix deform/pressure ` command) + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) * zero or more keyword/value pairs may be appended -* keyword = *remap* or *flip* or *units* +* keyword = *remap* or *flip* or *units* or *couple* or *vol/balance/p* or *max/rate* or *normalize/pressure* .. parsed-literal:: @@ -77,6 +90,15 @@ Syntax *units* value = *lattice* or *box* lattice = distances are defined in lattice units box = distances are defined in simulation box units + *couple* value = *none* or *xyz* or *xy* or *yz* or *xz* (ONLY available in :doc:`fix deform/pressure ` command) + couple pressure values of various dimensions + *vol/balance/p* value = *yes* or *no* (ONLY available in :doc:`fix deform/pressure ` command) + Modifies the behavior of the *volume* option to try and balance pressures + *max/rate* value = *rate* (ONLY available in :doc:`fix deform/pressure ` command) + rate = maximum strain rate for pressure control + *normalize/pressure* value = *yes* or *no* (ONLY available in :doc:`fix deform/pressure ` command) + Modifies pressure controls such that the deviation in pressure is normalized by the target pressure + Examples """""""" @@ -88,6 +110,8 @@ Examples fix 1 all deform 1 xy erate 0.001 remap v fix 1 all deform 10 y delta -0.5 0.5 xz vel 1.0 +See examples for :doc:`fix deform/pressure ` on its doc page + Description """"""""""" @@ -95,29 +119,46 @@ Change the volume and/or shape of the simulation box during a dynamics run. Orthogonal simulation boxes have 3 adjustable parameters (x,y,z). Triclinic (non-orthogonal) simulation boxes have 6 adjustable parameters (x,y,z,xy,xz,yz). Any or all of them can be -adjusted independently and simultaneously by this command. - -This fix can be used to perform non-equilibrium MD (NEMD) simulations -of a continuously strained system. See the :doc:`fix nvt/sllod ` and :doc:`compute temp/deform ` commands for more details. Note -that simulation of a continuously extended system (extensional flow) -can be modeled using the :ref:`UEF package ` and its :doc:`fix commands `. +adjusted independently and simultaneously. + +The fix deform command allows use of all the arguments listed above, +except those flagged as available ONLY for the :doc:`fix +deform/pressure ` command, which are +pressure-based controls. The fix deform/pressure command allows use +of all the arguments listed above. + +The rest of this doc page explains the options common to both +commands. The :doc:`fix deform/pressure ` doc +page explains the options available ONLY with the fix deform/pressure +command. Note that a simulation can define only a single deformation +command: fix deform or fix deform/pressure. + +Both these fixes can be used to perform non-equilibrium MD (NEMD) +simulations of a continuously strained system. See the :doc:`fix +nvt/sllod ` and :doc:`compute temp/deform +` commands for more details. Note that +simulation of a continuously extended system (extensional flow) can be +modeled using the :ref:`UEF package ` and its :doc:`fix +commands `. For the *x*, *y*, *z* parameters, the associated dimension cannot be shrink-wrapped. For the *xy*, *yz*, *xz* parameters, the associated -second dimension cannot be shrink-wrapped. Dimensions not varied by this -command can be periodic or non-periodic. Dimensions corresponding to -unspecified parameters can also be controlled by a :doc:`fix npt ` or :doc:`fix nph ` command. +second dimension cannot be shrink-wrapped. Dimensions not varied by +this command can be periodic or non-periodic. Dimensions +corresponding to unspecified parameters can also be controlled by a +:doc:`fix npt ` or :doc:`fix nph ` command. The size and shape of the simulation box at the beginning of the -simulation run were either specified by the -:doc:`create_box ` or :doc:`read_data ` or -:doc:`read_restart ` command used to setup the simulation -initially if it is the first run, or they are the values from the end -of the previous run. The :doc:`create_box `, :doc:`read data `, and :doc:`read_restart ` commands -specify whether the simulation box is orthogonal or non-orthogonal -(triclinic) and explain the meaning of the xy,xz,yz tilt factors. If -fix deform changes the xy,xz,yz tilt factors, then the simulation box -must be triclinic, even if its initial tilt factors are 0.0. +simulation run were either specified by the :doc:`create_box +` or :doc:`read_data ` or :doc:`read_restart +` command used to setup the simulation initially if it +is the first run, or they are the values from the end of the previous +run. The :doc:`create_box `, :doc:`read data +`, and :doc:`read_restart ` commands specify +whether the simulation box is orthogonal or non-orthogonal (triclinic) +and explain the meaning of the xy,xz,yz tilt factors. If fix deform +changes the xy,xz,yz tilt factors, then the simulation box must be +triclinic, even if its initial tilt factors are 0.0. As described below, the desired simulation box size and shape at the end of the run are determined by the parameters of the fix deform @@ -258,21 +299,22 @@ of the units keyword below. The *variable* style changes the specified box length dimension by evaluating a variable, which presumably is a function of time. The -variable with *name1* must be an :doc:`equal-style variable ` -and should calculate a change in box length in units of distance. -Note that this distance is in box units, not lattice units; see the -discussion of the *units* keyword below. The formula associated with -variable *name1* can reference the current timestep. Note that it -should return the "change" in box length, not the absolute box length. -This means it should evaluate to 0.0 when invoked on the initial -timestep of the run following the definition of fix deform. It should -evaluate to a value > 0.0 to dilate the box at future times, or a -value < 0.0 to compress the box. - -The variable *name2* must also be an :doc:`equal-style variable ` and should calculate the rate of box length -change, in units of distance/time, i.e. the time-derivative of the -*name1* variable. This quantity is used internally by LAMMPS to reset -atom velocities when they cross periodic boundaries. It is computed +variable with *name1* must be an :doc:`equal-style variable +` and should calculate a change in box length in units of +distance. Note that this distance is in box units, not lattice units; +see the discussion of the *units* keyword below. The formula +associated with variable *name1* can reference the current timestep. +Note that it should return the "change" in box length, not the +absolute box length. This means it should evaluate to 0.0 when +invoked on the initial timestep of the run following the definition of +fix deform. It should evaluate to a value > 0.0 to dilate the box at +future times, or a value < 0.0 to compress the box. + +The variable *name2* must also be an :doc:`equal-style variable +` and should calculate the rate of box length change, in +units of distance/time, i.e. the time-derivative of the *name1* +variable. This quantity is used internally by LAMMPS to reset atom +velocities when they cross periodic boundaries. It is computed internally for the other styles, but you must provide it when using an arbitrary variable. @@ -414,12 +456,13 @@ can reference the current timestep. Note that it should return the should evaluate to 0.0 when invoked on the initial timestep of the run following the definition of fix deform. -The variable *name2* must also be an :doc:`equal-style variable ` and should calculate the rate of tilt change, -in units of distance/time, i.e. the time-derivative of the *name1* -variable. This quantity is used internally by LAMMPS to reset atom -velocities when they cross periodic boundaries. It is computed -internally for the other styles, but you must provide it when using an -arbitrary variable. +The variable *name2* must also be an :doc:`equal-style variable +` and should calculate the rate of tilt change, in units of +distance/time, i.e. the time-derivative of the *name1* variable. This +quantity is used internally by LAMMPS to reset atom velocities when +they cross periodic boundaries. It is computed internally for the +other styles, but you must provide it when using an arbitrary +variable. Here is an example of using the *variable* style to perform the same box deformation as the *wiggle* style formula listed above, where we @@ -510,33 +553,40 @@ box without explicit remapping of their coordinates. .. note:: For non-equilibrium MD (NEMD) simulations using "remap v" it is - usually desirable that the fluid (or flowing material, e.g. granular - particles) stream with a velocity profile consistent with the - deforming box. As mentioned above, using a thermostat such as :doc:`fix nvt/sllod ` or :doc:`fix lavgevin ` - (with a bias provided by :doc:`compute temp/deform `), will typically accomplish - that. If you do not use a thermostat, then there is no driving force - pushing the atoms to flow in a manner consistent with the deforming - box. E.g. for a shearing system the box deformation velocity may vary + usually desirable that the fluid (or flowing material, + e.g. granular particles) stream with a velocity profile consistent + with the deforming box. As mentioned above, using a thermostat + such as :doc:`fix nvt/sllod ` or :doc:`fix lavgevin + ` (with a bias provided by :doc:`compute temp/deform + `), will typically accomplish that. If you do + not use a thermostat, then there is no driving force pushing the + atoms to flow in a manner consistent with the deforming box. + E.g. for a shearing system the box deformation velocity may vary from 0 at the bottom to 10 at the top of the box. But the stream - velocity profile of the atoms may vary from -5 at the bottom to +5 at - the top. You can monitor these effects using the :doc:`fix ave/chunk `, :doc:`compute temp/deform `, and :doc:`compute temp/profile ` commands. One way to induce - atoms to stream consistent with the box deformation is to give them an + velocity profile of the atoms may vary from -5 at the bottom to +5 + at the top. You can monitor these effects using the :doc:`fix + ave/chunk `, :doc:`compute temp/deform + `, and :doc:`compute temp/profile + ` commands. One way to induce atoms to + stream consistent with the box deformation is to give them an initial velocity profile, via the :doc:`velocity ramp ` - command, that matches the box deformation rate. This also typically - helps the system come to equilibrium more quickly, even if a - thermostat is used. + command, that matches the box deformation rate. This also + typically helps the system come to equilibrium more quickly, even + if a thermostat is used. .. note:: If a :doc:`fix rigid ` is defined for rigid bodies, and *remap* is set to *x*, then the center-of-mass coordinates of rigid - bodies will be remapped to the changing simulation box. This will be - done regardless of whether atoms in the rigid bodies are in the fix - deform group or not. The velocity of the centers of mass are not - remapped even if *remap* is set to *v*, since :doc:`fix nvt/sllod ` does not currently do anything special + bodies will be remapped to the changing simulation box. This will + be done regardless of whether atoms in the rigid bodies are in the + fix deform group or not. The velocity of the centers of mass are + not remapped even if *remap* is set to *v*, since :doc:`fix + nvt/sllod ` does not currently do anything special for rigid particles. If you wish to perform a NEMD simulation of rigid particles, you can either thermostat them independently or - include a background fluid and thermostat the fluid via :doc:`fix nvt/sllod `. + include a background fluid and thermostat the fluid via :doc:`fix + nvt/sllod `. The *flip* keyword allows the tilt factors for a triclinic box to exceed half the distance of the parallel box length, as discussed @@ -568,7 +618,8 @@ command if you want to include lattice spacings in a variable formula. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This fix will restore the initial box settings from :doc:`binary restart files `, which allows the fix to be properly continue +This fix will restore the initial box settings from :doc:`binary +restart files `, which allows the fix to be properly continue deformation, when using the start/stop options of the :doc:`run ` command. None of the :doc:`fix_modify ` options are relevant to this fix. No global or per-atom quantities are stored by @@ -586,12 +637,14 @@ Restrictions You cannot apply x, y, or z deformations to a dimension that is shrink-wrapped via the :doc:`boundary ` command. -You cannot apply xy, yz, or xz deformations to a second dimension (y in -xy) that is shrink-wrapped via the :doc:`boundary ` command. +You cannot apply xy, yz, or xz deformations to a second dimension (y +in xy) that is shrink-wrapped via the :doc:`boundary ` +command. Related commands """""""""""""""" +:doc:`fix deform/pressure `, :doc:`change_box ` Default diff --git a/doc/src/fix_deform_pressure.rst b/doc/src/fix_deform_pressure.rst new file mode 100644 index 00000000000..8e848b3969d --- /dev/null +++ b/doc/src/fix_deform_pressure.rst @@ -0,0 +1,319 @@ +.. index:: fix deform/pressure + +fix deform/pressure command +=========================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID deform/pressure N parameter style args ... keyword value ... + +* ID, group-ID are documented in :doc:`fix ` command +* deform/pressure = style name of this fix command +* N = perform box deformation every this many timesteps +* one or more parameter/arg sequences may be appended + + .. parsed-literal:: + + parameter = *x* or *y* or *z* or *xy* or *xz* or *yz* or *box* + *x*, *y*, *z* args = style value(s) + style = *final* or *delta* or *scale* or *vel* or *erate* or *trate* or *volume* or *wiggle* or *variable* or *pressure* or *pressure/mean* + *pressure* values = target gain + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + *pressure/mean* values = target gain + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + NOTE: All other styles are documented by the :doc:`fix deform ` command + + *xy*, *xz*, *yz* args = style value + style = *final* or *delta* or *vel* or *erate* or *trate* or *wiggle* or *variable* or *pressure* + *pressure* values = target gain + target = target pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + NOTE: All other styles are documented by the :doc:`fix deform ` command + + *box* = style value + style = *volume* or *pressure* + *volume* value = none = isotropically adjust system to preserve volume of system + *pressure* values = target gain + target = target mean pressure (pressure units) + gain = proportional gain constant (1/(time * pressure) or 1/time units) + +* zero or more keyword/value pairs may be appended +* keyword = *remap* or *flip* or *units* or *couple* or *vol/balance/p* or *max/rate* or *normalize/pressure* + + .. parsed-literal:: + + *couple* value = *none* or *xyz* or *xy* or *yz* or *xz* + couple pressure values of various dimensions + *vol/balance/p* value = *yes* or *no* + Modifies the behavior of the *volume* option to try and balance pressures + *max/rate* value = *rate* + rate = maximum strain rate for pressure control + *normalize/pressure* value = *yes* or *no* + Modifies pressure controls such that the deviation in pressure is normalized by the target pressure + NOTE: All other keywords are documented by the :doc:`fix deform ` command + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all deform/pressure 1 x pressure 2.0 0.1 normalize/pressure yes max/rate 0.001 + fix 1 all deform/pressure 1 x trate 0.1 y volume z volume vol/balance/p yes + fix 1 all deform/pressure 1 x trate 0.1 y pressure/mean 0.0 1.0 z pressure/mean 0.0 1.0 + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +This fix is an extension of the :doc:`fix deform ` +command, which allows all of its options to be used as well as new +pressure-based controls implemented by this command. + +All arguments described on the :doc:`fix deform ` doc page +also apply to this fix unless otherwise noted below. The rest of this +doc page explains the arguments specific to this fix. Note that a +simulation can define only a single deformation command: fix deform or +fix deform/pressure. + +---------- + +For the *x*, *y*, and *z* parameters, this is the meaning of the +styles and values provided by this fix. + +The *pressure* style adjusts a dimension's box length to control the +corresponding component of the pressure tensor. This option attempts to +maintain a specified target pressure using a linear controller where the +box length :math:`L` evolves according to the equation + +.. math:: + + \frac{d L(t)}{dt} = L(t) k (P_t - P) + +where :math:`k` is a proportional gain constant, :math:`P_t` is the target +pressure, and :math:`P` is the current pressure along that dimension. This +approach is similar to the method used to control the pressure by +:doc:`fix press/berendsen `. The target pressure +accepts either a constant numeric value or a LAMMPS :ref:`variable `. +Notably, this variable can be a function of time or other components of +the pressure tensor. By default, :math:`k` has units of 1/(time * pressure) +although this will change if the *normalize/pressure* option is set as +:ref:`discussed below `. There is no proven method +to choosing an appropriate value of :math:`k` as it will depend on the +specific details of a simulation. Testing different values is recommended. + +By default, there is no limit on the resulting strain rate in any dimension. +A maximum limit can be applied using the :ref:`max/rate ` +option. Akin to :doc:`fix nh `, pressures in different dimensions +can be coupled using the :ref:`couple ` option. This means +the instantaneous pressure along coupled dimensions are averaged and the box +strains identically along the coupled dimensions. + +The *pressure/mean* style changes a dimension's box length to maintain +a constant mean pressure defined as the trace of the pressure tensor. +This option has identical arguments to the *pressure* style and a similar +functional equation, except the current and target pressures refer to the +mean trace of the pressure tensor. All options for the *pressure* style +also apply to the *pressure/mean* style except for the +:ref:`couple ` option. + +Note that while this style can be identical to coupled *pressure* styles, +it is generally not the same. For instance in 2D, a coupled *pressure* +style in the *x* and *y* dimensions would be equivalent to using the +*pressure/mean* style with identical settings in each dimension. However, +it would not be the same if settings (e.g. gain constants) were used in +the *x* and *y* dimensions or if the *pressure/mean* command was only applied +along one dimension. + +---------- + +For the *xy*, *xz*, and *yz* parameters, this is the meaning of the +styles and values provided by this fix. Note that changing the +tilt factors of a triclinic box does not change its volume. + +The *pressure* style adjusts a tilt factor to control the corresponding +off-diagonal component of the pressure tensor. This option attempts to +maintain a specified target value using a linear controller where the +tilt factor T evolves according to the equation + +.. parsed-literal:: + + \frac{d T(t)}{dt} = L(t) k (P - P_t) + +where :math:`k` is a proportional gain constant, :math:`P_t` is the +target pressure, :math:`P` is the current pressure, and :math:`L` is +the perpendicular box length. The target pressure accepts either a +constant numeric value or a LAMMPS :ref:`variable +`. Notably, this variable can be a function of time or other +components of the pressure tensor. By default, :math:`k` has units of +1/(time * pressure) although this will change if the +*normalize/pessure* option is set as :ref:`discussed below +`. There is no proven method to choosing an +appropriate value of :math:`k` as it will depend on the specific +details of a simulation and testing different values is +recommended. One can also apply a maximum limit to the magnitude of +the applied strain using the :ref:`max/rate ` option. + +---------- + +The *box* parameter provides an additional control over the *x*, *y*, +and *z* box lengths by isotropically dilating or contracting the box +to either maintain a fixed mean pressure or volume. This isotropic +scaling is applied after the box is deformed by the above *x*, *y*, +*z*, *xy*, *xz*, and *yz* styles, acting as a second deformation +step. This parameter will change the overall strain rate in the *x*, +*y*, or *z* dimensions. This parameter can only be used in +combination with the *x*, *y*, or *z* commands: *vel*, *erate*, +*trate*, *pressure*, or *wiggle*. This is the meaning of its styles +and values. + +The *volume* style isotropically scales box lengths to maintain a constant +box volume in response to deformation from other parameters. This style +may be useful in scenarios where one wants to apply a constant deviatoric +pressure using *pressure* styles in the *x*, *y*, and *z* dimensions ( +deforming the shape of the box), while maintaining a constant volume. + +The *pressure* style isotropically scales box lengths in an attempt to +maintain a target mean pressure (the trace of the pressure tensor) of the +system. This is accomplished by isotropically scaling all box lengths +:math:`L` by an additional factor of :math:`k (P_t - P_m)` where :math:`k` +is the proportional gain constant, :math:`P_t` is the target pressure, and +:math:`P_m` is the current mean pressure. This style may be useful in +scenarios where one wants to apply a constant deviatoric strain rate +using various strain-based styles (e.g. *trate*) along the *x*, *y*, and *z* +dimensions (deforming the shape of the box), while maintaining a mean pressure. + +---------- + +The optional keywords provided by this fix are described below. + +.. _deform_normalize: + +The *normalize/pressure* keyword changes how box dimensions evolve when +using the *pressure* or *pressure/mean* deformation styles. If the +*deform/normalize* value is set to *yes*, then the deviation from the +target pressure is normalized by the absolute value of the target +pressure such that the proportional gain constant scales a percentage +error and has units of 1/time. If the target pressure is ever zero, this +will produce an error unless the *max/rate* keyword is defined, +described below, which will cap the divergence. + +.. _deform_max_rate: + +The *max/rate* keyword sets an upper threshold, *rate*, that limits the +maximum magnitude of the instantaneous strain rate applied in any dimension. +This keyword only applies to the *pressure* and *pressure/mean* options. If +a pressure-controlled rate is used for both *box* and either *x*, *y*, or +*z*, then this threshold will apply separately to each individual controller +such that the cumulative strain rate on a box dimension may be up to twice +the value of *rate*. + +.. _deform_couple: + +The *couple* keyword allows two or three of the diagonal components of +the pressure tensor to be "coupled" together for the *pressure* option. +The value specified with the keyword determines which are coupled. For +example, *xz* means the *Pxx* and *Pzz* components of the stress tensor +are coupled. *Xyz* means all 3 diagonal components are coupled. Coupling +means two things: the instantaneous stress will be computed as an average +of the corresponding diagonal components, and the coupled box dimensions +will be changed together in lockstep, meaning coupled dimensions will be +dilated or contracted by the same percentage every timestep. If a *pressure* +style is defined for more than one coupled dimension, the target pressures +and gain constants must be identical. Alternatively, if a *pressure* +style is only defined for one of the coupled dimensions, its settings are +copied to other dimensions with undefined styles. *Couple xyz* can be used +for a 2d simulation; the *z* dimension is simply ignored. + +.. _deform_balance: + +The *vol/balance/p* keyword modifies the behavior of the *volume* style when +applied to two of the *x*, *y*, and *z* dimensions. Instead of straining +the two dimensions in lockstep, the two dimensions are allowed to +separately dilate or contract in a manner to maintain a constant +volume while simultaneously trying to keep the pressure along each +dimension equal using a method described in :ref:`(Huang2014) `. + +---------- + +If any pressure controls are used, this fix computes a temperature and +pressure each timestep. To do this, the fix creates its own computes +of style "temp" and "pressure", as if these commands had been issued: + +.. code-block:: LAMMPS + + compute fix-ID_temp group-ID temp + compute fix-ID_press group-ID pressure fix-ID_temp + +See the :doc:`compute temp ` and :doc:`compute pressure +` commands for details. Note that the IDs of the +new computes are the fix-ID + underscore + "temp" or fix_ID ++ underscore + "press", and the group for the new computes is the same +as the fix group. + +Note that these are NOT the computes used by thermodynamic output (see +the :doc:`thermo_style ` command) with ID = +*thermo_temp* and *thermo_press*. This means you can change the +attributes of this fix's temperature or pressure via the +:doc:`compute_modify ` command or print this +temperature or pressure during thermodynamic output via the +:doc:`thermo_style custom ` command using the +appropriate compute-ID. It also means that changing attributes of +*thermo_temp* or *thermo_press* will have no effect on this fix. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This fix will restore the initial box settings from :doc:`binary +restart files `, which allows the fix to be properly continue +deformation, when using the start/stop options of the :doc:`run ` +command. No global or per-atom quantities are stored by this fix for +access by various :doc:`output commands `. + +If any pressure controls are used, the :doc:`fix_modify ` +*temp* and *press* options are supported by this fix, unlike in +:doc:`fix deform `. You can use them to assign a +:doc:`compute ` you have defined to this fix which will be +used in its temperature and pressure calculations. If you do this, +note that the kinetic energy derived from the compute temperature +should be consistent with the virial term computed using all atoms for +the pressure. LAMMPS will warn you if you choose to compute +temperature on a subset of atoms. + +This fix can perform deformation over multiple runs, using the *start* +and *stop* keywords of the :doc:`run ` command. See the +:doc:`run ` command for details of how to do this. + +This fix is not invoked during :doc:`energy minimization `. + +Restrictions +"""""""""""" + +You cannot apply x, y, or z deformations to a dimension that is +shrink-wrapped via the :doc:`boundary ` command. + +You cannot apply xy, yz, or xz deformations to a second dimension (y +in xy) that is shrink-wrapped via the :doc:`boundary ` +command. + +Related commands +"""""""""""""""" + +:doc:`fix deform `, :doc:`change_box ` + +Default +""""""" + +The option defaults are normalize/pressure = no. + +---------- + +.. _Huang2014: + +**(Huang2014)** X. Huang, "Exploring critical-state behavior using DEM", +Doctoral dissertation, Imperial College. (2014). https://doi.org/10.25560/25316 diff --git a/doc/src/fix_electrode.rst b/doc/src/fix_electrode.rst index 3d543f08d2b..a60380fe7ee 100644 --- a/doc/src/fix_electrode.rst +++ b/doc/src/fix_electrode.rst @@ -45,7 +45,7 @@ Syntax rng_v = integer used to initialize random number generator * zero or more keyword/value pairs may be appended -* keyword = *algo* or *symm* or *couple* or *etypes* or *ffield* or *write_mat* or *write_inv* or *read_mat* or *read_inv* +* keyword = *algo* or *symm* or *couple* or *etypes* or *ffield* or *write_mat* or *write_inv* or *read_mat* or *read_inv* or *qtotal* or *eta* .. parsed-literal:: @@ -68,6 +68,10 @@ Syntax filename = file from which to read elastance matrix *read_inv* value = filename filename = file from which to read inverted matrix + *qtotal* value = number or *v_* equal-style variable + add overall potential so that all electrode charges add up to *qtotal* + *eta* value = d_propname + d_propname = a custom double vector defined via fix property/atom Examples """""""" @@ -249,6 +253,27 @@ be enabled if any electrode particle has the same type as any electrolyte particle (which would be unusual in a typical simulation) and the fix will issue an error in that case. +.. versionadded:: 17Apr2024 + +The keyword *qtotal* causes *fix electrode/conp* and *fix +electrode/thermo* to add an overall potential to all electrodes so that +the total charge on the electrodes is a specified amount (which may be +an equal-style variable). For example, if a user wanted to simulate a +solution of excess cations such that the total electrolyte charge is +2, +setting *qtotal -2* would cause the total electrode charge to be -2, so +that the simulation box remains overall electroneutral. Since *fix +electrode/conq* constrains the total charges of individual electrodes, +and since *symm on* constrains the total charge of all electrodes to be +zero, either option is incompatible with the *qtotal* keyword (even if +*qtotal* is set to zero). + +.. versionadded:: 17Apr2024 + +The keyword *eta* takes the name of a custom double vector defined via +fix property/atom. The values will be used instead of the standard eta +value. The property/atom fix must be for vector of double values and +use the *ghost on* option. + Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/doc/src/fix_gcmc.rst b/doc/src/fix_gcmc.rst index 13ae509684c..a21e85d8031 100644 --- a/doc/src/fix_gcmc.rst +++ b/doc/src/fix_gcmc.rst @@ -440,8 +440,11 @@ This fix is part of the MC package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +This fix style requires an :doc:`atom style ` with per atom +type masses. + Do not set "neigh_modify once yes" or else this fix will never be -called. Reneighboring is required. +called. Reneighboring is **required**. Only usable for 3D simulations. diff --git a/doc/src/fix_indent.rst b/doc/src/fix_indent.rst index 15790e15d02..e041f9f29b1 100644 --- a/doc/src/fix_indent.rst +++ b/doc/src/fix_indent.rst @@ -8,33 +8,44 @@ Syntax .. code-block:: LAMMPS - fix ID group-ID indent K keyword values ... + fix ID group-ID indent K gstyle args keyword value ... * ID, group-ID are documented in :doc:`fix ` command * indent = style name of this fix command * K = force constant for indenter surface (force/distance\^2 units) -* one or more keyword/value pairs may be appended -* keyword = *sphere* or *cylinder* or *plane* or *side* or *units* +* gstyle = *sphere* or *cylinder* or *cone* or *plane* .. parsed-literal:: *sphere* args = x y z R - x,y,z = position of center of indenter (distance units) + x, y, z = position of center of indenter (distance units) R = sphere radius of indenter (distance units) - any of x,y,z,R can be a variable (see below) + any of x, y, z, R can be a variable (see below) *cylinder* args = dim c1 c2 R dim = *x* or *y* or *z* = axis of cylinder - c1,c2 = coords of cylinder axis in other 2 dimensions (distance units) + c1, c2 = coords of cylinder axis in other 2 dimensions (distance units) R = cylinder radius of indenter (distance units) any of c1,c2,R can be a variable (see below) + *cone* args = dim c1 c2 radlo radhi lo hi + dim = *x* or *y* or *z* = axis of cone + c1, c2 = coords of cone axis in other 2 dimensions (distance units) + radlo,radhi = cone radii at lo and hi end (distance units) + lo,hi = bounds of cone in dim (distance units) + any of c1, c2, radlo, radhi, lo, hi can be a variable (see below) *plane* args = dim pos side dim = *x* or *y* or *z* = plane perpendicular to this dimension pos = position of plane in dimension x, y, or z (distance units) pos can be a variable (see below) side = *lo* or *hi* + +* zero or more keyword/value pairs may be appended +* keyword = *side* or *units* + + .. parsed-literal:: + *side* value = *in* or *out* - *in* = the indenter acts on particles inside the sphere or cylinder - *out* = the indenter acts on particles outside the sphere or cylinder + *in* = the indenter acts on particles inside the sphere or cylinder or cone + *out* = the indenter acts on particles outside the sphere or cylinder or cone *units* value = *lattice* or *box* lattice = the geometry is defined in lattice units box = the geometry is defined in simulation box units @@ -53,12 +64,12 @@ Description Insert an indenter within a simulation box. The indenter repels all atoms in the group that touch it, so it can be used to push into a -material or as an obstacle in a flow. Or it can be used as a +material or as an obstacle in a flow. Alternatively, it can be used as a constraining wall around a simulation; see the discussion of the *side* keyword below. -The indenter can either be spherical or cylindrical or planar. You -must set one of those 3 keywords. +The *gstyle* geometry of the indenter can either be a sphere, a +cylinder, a cone, or a plane. A spherical indenter exerts a force of magnitude @@ -75,15 +86,20 @@ A cylindrical indenter exerts the same force, except that *r* is the distance from the atom to the center axis of the cylinder. The cylinder extends infinitely along its axis. -Spherical and cylindrical indenters account for periodic boundaries in -two ways. First, the center point of a spherical indenter (x,y,z) or -axis of a cylindrical indenter (c1,c2) is remapped back into the -simulation box, if the box is periodic in a particular dimension. -This occurs every timestep if the indenter geometry is specified with -a variable (see below), e.g. it is moving over time. Second, the -calculation of distance to the indenter center or axis accounts for -periodic boundaries. Both of these mean that an indenter can -effectively move through and straddle one or more periodic boundaries. +A conical indenter is similar to a cylindrical indenter except that it +has a finite length (between *lo* and *hi*), and that two different +radii (one at each end, *radlo* and *radhi*) can be defined. + +Spherical, cylindrical, and conical indenters account for periodic +boundaries in two ways. First, the center point of a spherical +indenter (x,y,z) or axis of a cylindrical/conical indenter (c1,c2) is +remapped back into the simulation box, if the box is periodic in a +particular dimension. This occurs every timestep if the indenter +geometry is specified with a variable (see below), e.g. it is moving +over time. Second, the calculation of distance to the indenter center +or axis accounts for periodic boundaries. Both of these mean that an +indenter can effectively move through and straddle one or more +periodic boundaries. A planar indenter is really an axis-aligned infinite-extent wall exerting the same force on atoms in the system, where *R* is the @@ -97,9 +113,13 @@ is specified as *hi*\ . Any of the 4 quantities defining a spherical indenter's geometry can be specified as an equal-style :doc:`variable `, namely *x*, -*y*, *z*, or *R*\ . Similarly, for a cylindrical indenter, any of *c1*, -*c2*, or *R*, can be a variable. For a planar indenter, *pos* can be -a variable. If the value is a variable, it should be specified as +*y*, *z*, or *R*\ . For a cylindrical indenter, any of the 3 +quantities *c1*, *c2*, or *R*, can be a variable. For a conical +indenter, any of the 6 quantities *c1*, *c2*, *radlo*, *radhi*, *lo*, +or *hi* can be a variable. For a planar indenter, the single value +*pos* can be a variable. + +If any of these values is a variable, it should be specified as v_name, where name is the variable name. In this case, the variable will be evaluated each timestep, and its value used to define the indenter geometry. @@ -110,7 +130,8 @@ command keywords for the simulation box parameters and timestep and elapsed time. Thus it is easy to specify indenter properties that change as a function of time or span consecutive runs in a continuous fashion. For the latter, see the *start* and *stop* keywords of the -:doc:`run ` command and the *elaplong* keyword of :doc:`thermo_style custom ` for details. +:doc:`run ` command and the *elaplong* keyword of +:doc:`thermo_style custom ` for details. For example, if a spherical indenter's x-position is specified as v_x, then this variable definition will keep it's center at a relative @@ -141,12 +162,13 @@ rate. If the *side* keyword is specified as *out*, which is the default, then particles outside the indenter are pushed away from its outer -surface, as described above. This only applies to spherical or -cylindrical indenters. If the *side* keyword is specified as *in*, -the action of the indenter is reversed. Particles inside the indenter -are pushed away from its inner surface. In other words, the indenter -is now a containing wall that traps the particles inside it. If the -radius shrinks over time, it will squeeze the particles. +surface, as described above. This only applies to spherical, +cylindrical, and conical indenters. If the *side* keyword is +specified as *in*, the action of the indenter is reversed. Particles +inside the indenter are pushed away from its inner surface. In other +words, the indenter is now a containing wall that traps the particles +inside it. If the radius shrinks over time, it will squeeze the +particles. The *units* keyword determines the meaning of the distance units used to define the indenter geometry. A *box* value selects standard @@ -166,10 +188,10 @@ lattice spacings in a variable formula. The force constant *K* is not affected by the *units* keyword. It is always in force/distance\^2 units where force and distance are defined -by the :doc:`units ` command. If you wish K to be scaled by the -lattice spacing, you can define K with a variable whose formula -contains *xlat*, *ylat*, *zlat* keywords of the -:doc:`thermo_style ` command, e.g. +by the :doc:`units ` command. If you wish K to be scaled by +the lattice spacing, you can define K with a variable whose formula +contains *xlat*, *ylat*, *zlat* keywords of the :doc:`thermo_style +` command, e.g. .. code-block:: LAMMPS diff --git a/doc/src/fix_neb.rst b/doc/src/fix_neb.rst index ccd0f9b83df..51066675b8e 100644 --- a/doc/src/fix_neb.rst +++ b/doc/src/fix_neb.rst @@ -109,7 +109,7 @@ Note that in this case the specified *Kspring* is in force/distance units. With a value of *ideal*, the spring force is computed as suggested in -ref`(WeinanE) ` +:ref:`(WeinanE) ` .. math:: @@ -120,18 +120,18 @@ and :math:`RD_{ideal}` is the ideal *RD* for which all the images are equally spaced. I.e. :math:`RD_{ideal} = (i-1) \cdot meanDist` when the climbing replica is off, where *i* is the replica number). The *meanDist* is the average distance between replicas. Note that in this -case the specified *Kspring* is in force units. When the climbing replica -is on, :math:`RD_{ideal}` and :math:`meanDist` are calculated separately -each side of the climbing image. Note that the *ideal* form of nudging -can often be more effective at keeping the replicas equally spaced before -climbing, then equally spaced either side of the climbing image whilst -climbing. - -With a value of *equal* the spring force is computed as for *ideal* -when the climbing replica is off, promoting equidistance. When the climbing +case the specified *Kspring* is in force units. When the climbing +replica is on, :math:`RD_{ideal}` and :math:`meanDist` are calculated +separately each side of the climbing image. Note that the *ideal* form +of nudging can often be more effective at keeping the replicas equally +spaced before climbing, then equally spaced either side of the climbing +image whilst climbing. + +With a value of *equal* the spring force is computed as for *ideal* when +the climbing replica is off, promoting equidistance. When the climbing replica is on, the spring force is computed to promote equidistant -absolute differences in energy, rather than distance, each side of -the climbing image: +absolute differences in energy, rather than distance, each side of the +climbing image: .. math:: @@ -143,23 +143,22 @@ where *ED* is the cumulative sum of absolute energy differences: ED = \sum_{i`. +*meanEdist* is the average absolute energy difference between replicas +up to the climbing image or from the climbing image to the final image, +for images before or after the climbing image +respectively. :math:`ED_{ideal}` is the corresponding cumulative sum of +average absolute energy differences in each case, in close analogy to +*ideal*. This form of nudging is to aid schemes which integrate forces +along, or near to, NEB pathways such as :doc:`fix_pafi `. ---------- -The keyword *perp* specifies if and how a perpendicular nudging force -is computed. It adds a spring force perpendicular to the path in -order to prevent the path from becoming too strongly kinked. It can +The keyword *perp* specifies if and how a perpendicular nudging force is +computed. It adds a spring force perpendicular to the path in order to +prevent the path from becoming too strongly kinked. It can significantly improve the convergence of the NEB calculation when the -resolution is poor. I.e. when few replicas are used; see -:ref:`(Maras) ` for details. +resolution is poor. I.e. when few replicas are used; see :ref:`(Maras) +` for details. The perpendicular spring force is given by @@ -181,10 +180,10 @@ force is added. By default, no additional forces act on the first and last replicas during the NEB relaxation, so these replicas simply relax toward their -respective local minima. By using the key word *end*, additional -forces can be applied to the first and/or last replicas, to enable -them to relax toward a MEP while constraining their energy E to the -target energy ETarget. +respective local minima. By using the key word *end*, additional forces +can be applied to the first and/or last replicas, to enable them to +relax toward a MEP while constraining their energy E to the target +energy ETarget. If :math:`E_{Target} > E`, the interatomic force :math:`F_i` for the specified replica becomes: @@ -197,33 +196,33 @@ specified replica becomes: The "spring" constant on the difference in energies is the specified *Kspring3* value. -When *estyle* is specified as *first*, the force is applied to the -first replica. When *estyle* is specified as *last*, the force is -applied to the last replica. Note that the *end* keyword can be used -twice to add forces to both the first and last replicas. +When *estyle* is specified as *first*, the force is applied to the first +replica. When *estyle* is specified as *last*, the force is applied to +the last replica. Note that the *end* keyword can be used twice to add +forces to both the first and last replicas. For both these *estyle* settings, the target energy *ETarget* is set to the initial energy of the replica (at the start of the NEB calculation). If the *estyle* is specified as *last/efirst* or *last/efirst/middle*, -force is applied to the last replica, but the target energy *ETarget* -is continuously set to the energy of the first replica, as it evolves +force is applied to the last replica, but the target energy *ETarget* is +continuously set to the energy of the first replica, as it evolves during the NEB relaxation. The difference between these two *estyle* options is as follows. When *estyle* is specified as *last/efirst*, no change is made to the -inter-replica force applied to the intermediate replicas (neither -first or last). If the initial path is too far from the MEP, an -intermediate replica may relax "faster" and reach a lower energy than -the last replica. In this case the intermediate replica will be -relaxing toward its own local minima. This behavior can be prevented -by specifying *estyle* as *last/efirst/middle* which will alter the -inter-replica force applied to intermediate replicas by removing the -contribution of the gradient to the inter-replica force. This will -only be done if a particular intermediate replica has a lower energy -than the first replica. This should effectively prevent the -intermediate replicas from over-relaxing. +inter-replica force applied to the intermediate replicas (neither first +or last). If the initial path is too far from the MEP, an intermediate +replica may relax "faster" and reach a lower energy than the last +replica. In this case the intermediate replica will be relaxing toward +its own local minima. This behavior can be prevented by specifying +*estyle* as *last/efirst/middle* which will alter the inter-replica +force applied to intermediate replicas by removing the contribution of +the gradient to the inter-replica force. This will only be done if a +particular intermediate replica has a lower energy than the first +replica. This should effectively prevent the intermediate replicas from +over-relaxing. After converging a NEB calculation using an *estyle* of *last/efirst/middle*, you should check that all intermediate replicas @@ -237,9 +236,10 @@ target energy. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -No information about this fix is written to :doc:`binary restart files `. None of the :doc:`fix_modify ` options -are relevant to this fix. No global or per-atom quantities are stored -by this fix for access by various :doc:`output commands `. +No information about this fix is written to :doc:`binary restart files +`. 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. diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 363b0a747a6..0a271ebc32a 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -44,7 +44,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 7Feb2024 This fix computes different metrics of the nonaffine displacement of particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}` @@ -86,8 +86,8 @@ Both of these methods require defining a reference state. With the *fixed* refer style, the user picks a specific timestep *nstep* at which particle positions are saved. If peratom data is accessed from this compute prior to this timestep, it will simply be zeroed. The *update* reference style implies the reference state will be updated every -*nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will -update the reference state *nstep* timesteps before a multiple of *nevery* timesteps. +*nstep* timesteps. The *offset* reference will update the reference state *nstep* +timesteps before a multiple of *nevery* timesteps. ---------- diff --git a/doc/src/fix_property_atom.rst b/doc/src/fix_property_atom.rst index b177fe9a967..d20358b7a7a 100644 --- a/doc/src/fix_property_atom.rst +++ b/doc/src/fix_property_atom.rst @@ -22,6 +22,8 @@ Syntax *mol* = molecule IDs *q* = charge *rmass* = per-atom mass + *temperature* = internal temperature of atom + *heatflow* = internal heat flow of atom i_name = new integer vector referenced by name d_name = new floating-point vector referenced by name i2_name = new integer array referenced by name @@ -59,14 +61,18 @@ these properties for each atom in the system when a data file is read. This fix augments the set of per-atom properties with new custom ones. This can be useful in several scenarios. -If the atom style does not define molecule IDs, per-atom charge, or -per-atom mass, they can be added using the *mol*\ , *q* or *rmass* +If the atom style does not define molecule IDs, per-atom charge, +per-atom mass, internal temperature, or internal heat flow, they can +be added using the *mol*\ , *q*, *rmass*, *temperature*, or *heatflow* keywords. This could be useful to define "molecules" to use as rigid bodies with the :doc:`fix rigid ` command, or to carry around an extra flag with atoms (stored as a molecule ID) that can be used by various commands like :doc:`compute chunk/atom ` to group atoms without having to use the group command (which is limited to a total of 32 groups including *all*\ ). +For finite-size particles, an internal temperature and heat flow can +be used to model heat conduction as in the +:doc:`GRANULAR package `. Another application is to use the *rmass* flag in order to have per-atom masses instead of per-type masses. This could be used to @@ -85,9 +91,10 @@ properties that are not needed such as bond lists, which incurs some overhead when there are no bonds. In the future, we may add additional existing per-atom properties to -fix property/atom, similar to *mol*\ , *q* or *rmass*\ , which -"turn-on" specific properties defined by some atom styles, so they can -be easily used by atom styles that do not define them. +fix property/atom, similar to *mol*\ , *q*, *rmass*\ , *temperature*\ , +or *heatflow* which "turn-on" specific properties defined by some atom +styles, so they can be easily used by atom styles that do not define +them. More generally, the *i_name* and *d_name* options allow one or more new custom per-atom vectors to be defined. Likewise the *i2_name* and diff --git a/doc/src/fix_qeq.rst b/doc/src/fix_qeq.rst index bace7af0ca9..f353e9a9981 100644 --- a/doc/src/fix_qeq.rst +++ b/doc/src/fix_qeq.rst @@ -232,8 +232,6 @@ These fixes are part of the QEQ package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -These qeq fixes are not compatible with the GPU and USER-INTEL packages. - These qeq fixes will ignore electric field contributions from :doc:`fix efield `. diff --git a/doc/src/fix_rigid.rst b/doc/src/fix_rigid.rst index 3174a0929ce..0277793d0f6 100644 --- a/doc/src/fix_rigid.rst +++ b/doc/src/fix_rigid.rst @@ -171,14 +171,15 @@ Examples of large rigid bodies are a colloidal particle, or portions of a biomolecule such as a protein. Example of small rigid bodies are patchy nanoparticles, such as those -modeled in :ref:`this paper ` by Sharon Glotzer's group, clumps of -granular particles, lipid molecules consisting of one or more point -dipoles connected to other spheroids or ellipsoids, irregular -particles built from line segments (2d) or triangles (3d), and -coarse-grain models of nano or colloidal particles consisting of a -small number of constituent particles. Note that the :doc:`fix shake ` command can also be used to rigidify small -molecules of 2, 3, or 4 atoms, e.g. water molecules. That fix treats -the constituent atoms as point masses. +modeled in :ref:`this paper ` by Sharon Glotzer's group, +clumps of granular particles, lipid molecules consisting of one or +more point dipoles connected to other spheroids or ellipsoids, +irregular particles built from line segments (2d) or triangles (3d), +and coarse-grain models of nano or colloidal particles consisting of a +small number of constituent particles. Note that the :doc:`fix shake +` command can also be used to rigidify small molecules of +2, 3, or 4 atoms, e.g. water molecules. That fix treats the +constituent atoms as point masses. These fixes also update the positions and velocities of the atoms in each rigid body via time integration, in the NVE, NVT, NPT, or NPH @@ -212,13 +213,14 @@ processors when ghost atom info is accumulated. .. note:: - To use the *rigid/small* styles the ghost atom cutoff must be - large enough to span the distance between the atom that owns the body - and every other atom in the body. This distance value is printed out - when the rigid bodies are defined. If the - :doc:`pair_style ` cutoff plus neighbor skin does not span - this distance, then you should use the :doc:`comm_modify cutoff ` command with a setting epsilon larger than - the distance. + To use the *rigid/small* styles the ghost atom cutoff must be large + enough to span the distance between the atom that owns the body and + every other atom in the body. This distance value is printed out + when the rigid bodies are defined. If the :doc:`pair_style + ` cutoff plus neighbor skin does not span this + distance, then you should use the :doc:`comm_modify cutoff + ` command with a setting epsilon larger than the + distance. Which of the two variants is faster for a particular problem is hard to predict. The best way to decide is to perform a short test run. @@ -229,49 +231,54 @@ differences may accumulate to produce divergent trajectories. .. note:: You should not update the atoms in rigid bodies via other - time-integration fixes (e.g. :doc:`fix nve `, :doc:`fix nvt `, :doc:`fix npt `, :doc:`fix move `), - 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 nve ` or :doc:`fix nvt ` should be used for the non-rigid particles. + time-integration fixes (e.g. :doc:`fix nve `, :doc:`fix + nvt `, :doc:`fix npt `, :doc:`fix move + `), 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 nve + ` or :doc:`fix nvt ` should be used for the + non-rigid particles. .. note:: - These fixes are overkill if you simply want to hold a collection - of atoms stationary or have them move with a constant velocity. A - simpler way to hold atoms stationary is to not include those atoms in - your time integration fix. E.g. use "fix 1 mobile nve" instead of - "fix 1 all nve", where "mobile" is the group of atoms that you want to - move. You can move atoms with a constant velocity by assigning them - an initial velocity (via the :doc:`velocity ` command), - setting the force on them to 0.0 (via the :doc:`fix setforce ` command), and integrating them as usual - (e.g. via the :doc:`fix nve ` command). + These fixes are overkill if you simply want to hold a collection of + atoms stationary or have them move with a constant velocity. A + simpler way to hold atoms stationary is to not include those atoms + in your time integration fix. E.g. use "fix 1 mobile nve" instead + of "fix 1 all nve", where "mobile" is the group of atoms that you + want to move. You can move atoms with a constant velocity by + assigning them an initial velocity (via the :doc:`velocity + ` command), setting the force on them to 0.0 (via the + :doc:`fix setforce ` command), and integrating them + as usual (e.g. via the :doc:`fix nve ` command). .. warning:: - The aggregate properties of each rigid body are - calculated at the start of a simulation run and are maintained in - internal data structures. The properties include the position and - velocity of the center-of-mass of the body, its moments of inertia, and - its angular momentum. This is done using the properties of the - constituent atoms of the body at that point in time (or see the *infile* - keyword option). Thereafter, changing these properties of individual - atoms in the body will have no effect on a rigid body's dynamics, unless - they effect any computation of per-atom forces or torques. If the - keyword *reinit* is set to *yes* (the default), the rigid body data - structures will be recreated at the beginning of each *run* command; - if the keyword *reinit* is set to *no*, the rigid body data structures - will be built only at the very first *run* command and maintained for - as long as the rigid fix is defined. For example, you might think you - could displace the atoms in a body or add a large velocity to each atom - in a body to make it move in a desired direction before a second run is - performed, using the :doc:`set ` or - :doc:`displace_atoms ` or :doc:`velocity ` - commands. But these commands will not affect the internal attributes - of the body unless *reinit* is set to *yes*\ . With *reinit* set to *no* - (or using the *infile* option, which implies *reinit* *no*\ ) the position - and velocity of individual atoms in the body will be reset when time - integration starts again. + The aggregate properties of each rigid body are calculated at the + start of a simulation run and are maintained in internal data + structures. The properties include the position and velocity of the + center-of-mass of the body, its moments of inertia, and its angular + momentum. This is done using the properties of the constituent + atoms of the body at that point in time (or see the *infile* + keyword option). Thereafter, changing these properties of + individual atoms in the body will have no effect on a rigid body's + dynamics, unless they effect any computation of per-atom forces or + torques. If the keyword *reinit* is set to *yes* (the default), the + rigid body data structures will be recreated at the beginning of + each *run* command; if the keyword *reinit* is set to *no*, the + rigid body data structures will be built only at the very first + *run* command and maintained for as long as the rigid fix is + defined. For example, you might think you could displace the atoms + in a body or add a large velocity to each atom in a body to make it + move in a desired direction before a second run is performed, using + the :doc:`set ` or :doc:`displace_atoms ` or + :doc:`velocity ` commands. But these commands will not + affect the internal attributes of the body unless *reinit* is set + to *yes*\ . With *reinit* set to *no* (or using the *infile* + option, which implies *reinit* *no*\ ) the position and velocity of + individual atoms in the body will be reset when time integration + starts again. ---------- @@ -316,17 +323,17 @@ to be part of rigid bodies. .. note:: - To compute the initial center-of-mass position and other - properties of each rigid body, the image flags for each atom in the - body are used to "unwrap" the atom coordinates. Thus you must ensure - that these image flags are consistent so that the unwrapping creates a + To compute the initial center-of-mass position and other properties + of each rigid body, the image flags for each atom in the body are + used to "unwrap" the atom coordinates. Thus you must ensure that + these image flags are consistent so that the unwrapping creates a valid rigid body (one where the atoms are close together), - particularly if the atoms in a single rigid body straddle a periodic - boundary. This means the input data file or restart file must define - the image flags for each atom consistently or that you have used the - :doc:`set ` command to specify them correctly. If a dimension is - non-periodic then the image flag of each atom must be 0 in that - dimension, else an error is generated. + particularly if the atoms in a single rigid body straddle a + periodic boundary. This means the input data file or restart file + must define the image flags for each atom consistently or that you + have used the :doc:`set ` command to specify them correctly. + If a dimension is non-periodic then the image flag of each atom + must be 0 in that dimension, else an error is generated. The *force* and *torque* keywords discussed next are only allowed for the *rigid* styles. @@ -362,12 +369,13 @@ settings from the final keyword are used. .. note:: - For computational efficiency, you may wish to turn off pairwise - and bond interactions within each rigid body, as they no longer - contribute to the motion. The :doc:`neigh_modify exclude ` and :doc:`delete_bonds ` - commands are used to do this. If the rigid bodies have strongly - overlapping atoms, you may need to turn off these interactions to - avoid numerical problems due to large equal/opposite intra-body forces + For computational efficiency, you may wish to turn off pairwise and + bond interactions within each rigid body, as they no longer + contribute to the motion. The :doc:`neigh_modify exclude + ` and :doc:`delete_bonds ` commands are + used to do this. If the rigid bodies have strongly overlapping + atoms, you may need to turn off these interactions to avoid + numerical problems due to large equal/opposite intra-body forces swamping the contribution of small inter-body forces. For computational efficiency, you should typically define one fix @@ -379,7 +387,8 @@ is more expensive. The constituent particles within a rigid body can be point particles (the default in LAMMPS) or finite-size particles, such as spheres or -ellipsoids or line segments or triangles. See the :doc:`atom_style sphere and ellipsoid and line and tri ` commands for more +ellipsoids or line segments or triangles. See the :doc:`atom_style +sphere and ellipsoid and line and tri ` commands for more details on these kinds of particles. Finite-size particles contribute differently to the moment of inertia of a rigid body than do point particles. Finite-size particles can also experience torque (e.g. due @@ -389,7 +398,8 @@ orientation. These contributions are accounted for by these fixes. Forces between particles within a body do not contribute to the external force or torque on the body. Thus for computational efficiency, you may wish to turn off pairwise and bond interactions -between particles within each rigid body. The :doc:`neigh_modify exclude ` and :doc:`delete_bonds ` +between particles within each rigid body. The :doc:`neigh_modify +exclude ` and :doc:`delete_bonds ` commands are used to do this. For finite-size particles this also means the particles can be highly overlapped when creating the rigid body. @@ -401,16 +411,17 @@ perform constant NVE time integration. They are referred to below as the 4 NVE rigid styles. The only difference is that the *rigid* and *rigid/small* styles use an integration technique based on Richardson iterations. The *rigid/nve* and *rigid/small/nve* styles uses the -methods described in the paper by :ref:`Miller `, which are thought -to provide better energy conservation than an iterative approach. +methods described in the paper by :ref:`Miller `, which are +thought to provide better energy conservation than an iterative +approach. The *rigid/nvt* and *rigid/nvt/small* styles performs constant NVT integration using a Nose/Hoover thermostat with chains as described -originally in :ref:`(Hoover) ` and :ref:`(Martyna) `, which -thermostats both the translational and rotational degrees of freedom -of the rigid bodies. They are referred to below as the 2 NVT rigid -styles. The rigid-body algorithm used by *rigid/nvt* is described in -the paper by :ref:`Kamberaj `. +originally in :ref:`(Hoover) ` and :ref:`(Martyna) +`, which thermostats both the translational and rotational +degrees of freedom of the rigid bodies. They are referred to below as +the 2 NVT rigid styles. The rigid-body algorithm used by *rigid/nvt* +is described in the paper by :ref:`Kamberaj `. The *rigid/npt*, *rigid/nph*, *rigid/npt/small*, and *rigid/nph/small* styles perform constant NPT or NPH integration using a Nose/Hoover @@ -436,12 +447,12 @@ The target pressures for each of the 6 components of the stress tensor can be specified independently via the *x*, *y*, *z* keywords, which correspond to the 3 simulation box dimensions. For each component, the external pressure or tensor component at each timestep is a ramped -value during the run from *Pstart* to *Pstop*\ . If a target pressure is -specified for a component, then the corresponding box dimension will -change during a simulation. For example, if the *y* keyword is used, -the y-box length will change. A box dimension will not change if that -component is not specified, although you have the option to change -that dimension via the :doc:`fix deform ` command. +value during the run from *Pstart* to *Pstop*\ . If a target pressure +is specified for a component, then the corresponding box dimension +will change during a simulation. For example, if the *y* keyword is +used, the y-box length will change. A box dimension will not change +if that component is not specified, although you have the option to +change 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 @@ -525,11 +536,11 @@ discussed below. The *langevin* keyword applies a Langevin thermostat to the constant NVE time integration performed by any of the 4 NVE rigid styles: -*rigid*, *rigid/nve*, *rigid/small*, *rigid/small/nve*\ . It cannot be -used with the 2 NVT rigid styles: *rigid/nvt*, *rigid/small/nvt*\ . 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 +*rigid*, *rigid/nve*, *rigid/small*, *rigid/small/nve*\ . It cannot +be used with the 2 NVT rigid styles: *rigid/nvt*, *rigid/small/nvt*\ . +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 (:math:`\tau` or fs or ps - see the :doc:`units ` command). The random # *seed* must be a positive @@ -564,29 +575,30 @@ used. *Tchain* is the number of thermostats in the Nose Hoover chain. This value, along with *Tdamp* can be varied to dampen undesirable oscillations in temperature that can occur in a simulation. As a rule of thumb, increasing the chain length should lead to smaller -oscillations. The keyword *pchain* specifies the number of -thermostats in the chain thermostatting the barostat degrees of -freedom. +oscillations. The keyword *pchain* specifies the number of thermostats +in the chain thermostatting the barostat degrees of freedom. .. note:: There are alternate ways to thermostat a system of rigid bodies. - You can use :doc:`fix langevin ` to treat the individual - particles in the rigid bodies as effectively immersed in an implicit - solvent, e.g. a Brownian dynamics model. For hybrid systems with both - rigid bodies and solvent particles, you can thermostat only the - solvent particles that surround one or more rigid bodies by - appropriate choice of groups in the compute and fix commands for - temperature and thermostatting. The solvent interactions with the - rigid bodies should then effectively thermostat the rigid body - temperature as well without use of the Langevin or Nose/Hoover options - associated with the fix rigid commands. + You can use :doc:`fix langevin ` to treat the + individual particles in the rigid bodies as effectively immersed in + an implicit solvent, e.g. a Brownian dynamics model. For hybrid + systems with both rigid bodies and solvent particles, you can + thermostat only the solvent particles that surround one or more + rigid bodies by appropriate choice of groups in the compute and fix + commands for temperature and thermostatting. The solvent + interactions with the rigid bodies should then effectively + thermostat the rigid body temperature as well without use of the + Langevin or Nose/Hoover options associated with the fix rigid + commands. ---------- The *mol* keyword can only be used with the *rigid/small* styles. It -must be used when other commands, such as :doc:`fix deposit ` or :doc:`fix pour `, add rigid -bodies on-the-fly during a simulation. You specify a *template-ID* +must be used when other commands, such as :doc:`fix deposit +` or :doc:`fix pour `, add rigid bodies +on-the-fly during a simulation. You specify a *template-ID* previously defined using the :doc:`molecule ` command, which reads a file that defines the molecule. You must use the same *template-ID* that the other fix which is adding rigid bodies uses. @@ -670,16 +682,16 @@ cross periodic boundaries during the simulation. .. note:: - If you use the *infile* or *mol* keywords and write restart - files during a simulation, then each time a restart file is written, - the fix also write an auxiliary restart file with the name - rfile.rigid, where "rfile" is the name of the restart file, + If you use the *infile* or *mol* keywords and write restart files + during a simulation, then each time a restart file is written, the + fix also write an auxiliary restart file with the name rfile.rigid, + where "rfile" is the name of the restart file, e.g. tmp.restart.10000 and tmp.restart.10000.rigid. This auxiliary - file is in the same format described above. Thus it can be used in a - new input script that restarts the run and re-specifies a rigid fix - using an *infile* keyword and the appropriate filename. Note that the - auxiliary file will contain one line for every rigid body, even if the - original file only listed a subset of the rigid bodies. + file is in the same format described above. Thus it can be used in + a new input script that restarts the run and re-specifies a rigid + fix using an *infile* keyword and the appropriate filename. Note + that the auxiliary file will contain one line for every rigid body, + even if the original file only listed a subset of the rigid bodies. If the system has rigid bodies with finite-size overlapping particles and the model uses the :doc:`fix gravity ` command to @@ -728,10 +740,11 @@ also accounted for by this fix. ---------- -If your simulation is a hybrid model with a mixture of rigid bodies and -non-rigid particles (e.g. solvent) there are several ways these rigid -fixes can be used in tandem with :doc:`fix nve `, :doc:`fix nvt -`, :doc:`fix npt `, and :doc:`fix nph `. +If your simulation is a hybrid model with a mixture of rigid bodies +and non-rigid particles (e.g. solvent) there are several ways these +rigid fixes can be used in tandem with :doc:`fix nve `, +:doc:`fix nvt `, :doc:`fix npt `, and :doc:`fix nph +`. If you wish to perform NVE dynamics (no thermostatting or barostatting), use one of 4 NVE rigid styles to integrate the rigid @@ -741,14 +754,14 @@ particles. If you wish to perform NVT dynamics (thermostatting, but no barostatting), you can use one of the 2 NVT rigid styles for the rigid bodies, and any thermostatting fix for the non-rigid particles -(:doc:`fix nvt `, :doc:`fix langevin `, :doc:`fix -temp/berendsen `). You can also use one of the 4 -NVE rigid styles for the rigid bodies and thermostat them using -:doc:`fix langevin ` on the group that contains all the -particles in the rigid bodies. The net force added by :doc:`fix -langevin ` to each rigid body effectively thermostats its -translational center-of-mass motion. Not sure how well it does at -thermostatting its rotational motion. +(:doc:`fix nvt `, :doc:`fix langevin `, +:doc:`fix temp/berendsen `). You can also use one +of the 4 NVE rigid styles for the rigid bodies and thermostat them +using :doc:`fix langevin ` on the group that contains +all the particles in the rigid bodies. The net force added by +:doc:`fix langevin ` to each rigid body effectively +thermostats its translational center-of-mass motion. Not sure how +well it does at thermostatting its rotational motion. If you wish to perform NPT or NPH dynamics (barostatting), you cannot use both :doc:`fix npt ` and the NPT or NPH rigid styles. This @@ -774,12 +787,12 @@ to the global pressure and the box is scaled the same by any of the barostatting fixes. You could even use the second and third options for a non-hybrid -simulation consisting of only rigid bodies, assuming you give :doc:`fix -npt ` an empty group, though it's an odd thing to do. The -barostatting fixes (:doc:`fix npt ` and :doc:`fix press/berensen -`) will monitor the pressure and change the box -dimensions, but not time integrate any particles. The integration of -the rigid bodies will be performed by fix rigid/nvt. +simulation consisting of only rigid bodies, assuming you give +:doc:`fix npt ` an empty group, though it's an odd thing to +do. The barostatting fixes (:doc:`fix npt ` and :doc:`fix +press/berensen `) will monitor the pressure and +change the box dimensions, but not time integrate any particles. The +integration of the rigid bodies will be performed by fix rigid/nvt. ---------- @@ -824,10 +837,10 @@ various :doc:`output commands `. The scalar value calculated by these fixes is "intensive". The scalar is the current temperature of the collection of rigid bodies. This is averaged over all rigid bodies and their translational and rotational degrees of -freedom. The translational energy of a rigid body is 1/2 m v\^2, where -m = total mass of the body and v = the velocity of its center of mass. -The rotational energy of a rigid body is 1/2 I w\^2, where I = the -moment of inertia tensor of the body and w = its angular velocity. +freedom. The translational energy of a rigid body is 1/2 m v\^2, +where m = total mass of the body and v = the velocity of its center of +mass. The rotational energy of a rigid body is 1/2 I w\^2, where I = +the moment of inertia tensor of the body and w = its angular velocity. Degrees of freedom constrained by the *force* and *torque* keywords are removed from this calculation, but only for the *rigid* and *rigid/nve* fixes. diff --git a/doc/src/fix_sgcmc.rst b/doc/src/fix_sgcmc.rst index 63cfaf22da3..bcdbdf2736c 100644 --- a/doc/src/fix_sgcmc.rst +++ b/doc/src/fix_sgcmc.rst @@ -155,6 +155,9 @@ This fix is part of the MC package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +This fix style requires an :doc:`atom style ` with per atom +type masses. + At present the fix provides optimized subroutines for EAM type potentials (see above) that calculate potential energy changes due to *local* atom type swaps very efficiently. Other potentials are diff --git a/doc/src/fix_ttm.rst b/doc/src/fix_ttm.rst index ccf7f16554b..f3e6a08d61b 100644 --- a/doc/src/fix_ttm.rst +++ b/doc/src/fix_ttm.rst @@ -96,11 +96,11 @@ each processor, which is acceptable when the overall grid is reasonably small. For larger grids you should use fix *ttm/grid* instead. Fix *ttm/mod* adds options to account for external heat sources (e.g. at -a surface) and for specifying parameters that allow the electronic -heat capacity to depend strongly on electronic temperature. It is -more expensive computationally than fix *ttm* because it treats the -thermal diffusion equation as non-linear. More details on fix *ttm/mod* -are given below. +a surface) and for specifying parameters that allow the electronic heat +capacity to depend strongly on electronic temperature. It is more +expensive computationally than fix *ttm* because it treats the thermal +diffusion equation as non-linear. More details on fix *ttm/mod* are +given below. Heat transfer between the electronic and atomic subsystems is carried out via an inhomogeneous Langevin thermostat. Only atoms in the fix @@ -136,23 +136,23 @@ transfer between the subsystems: \bigtriangledown (\kappa_e \bigtriangledown T_e) - g_p (T_e - T_a) + g_s T_a' -where C_e is the specific heat, rho_e is the density, kappa_e is the -thermal conductivity, T is temperature, the "e" and "a" subscripts -represent electronic and atomic subsystems respectively, g_p is the -coupling constant for the electron-ion interaction, and g_s is the -electron stopping coupling parameter. C_e, rho_e, and kappa_e are -specified as parameters to the fix. The other quantities are derived. -The form of the heat diffusion equation used here is almost the same -as that in equation 6 of :ref:`(Duffy) `, with the exception that the -electronic density is explicitly represented, rather than being part -of the specific heat parameter. +where :math:`C_e` is the specific heat, :math:`\rho_e` is the density, +:math:`\kappa_e` is the thermal conductivity, *T* is temperature, the +"e" and "a" subscripts represent electronic and atomic subsystems +respectively, :math:`g_p` is the coupling constant for the electron-ion +interaction, and :math:`g_s` is the electron stopping coupling +parameter. :math:`C_e`, :math:`\rho_e`, and :math:`\kappa_e` are +specified as parameters to the fix *ttm* or *ttm/grid*. The other +quantities are derived. The form of the heat diffusion equation used +here is almost the same as that in equation 6 of :ref:`(Duffy) `, +with the exception that the electronic density is explicitly +represented, rather than being part of the specific heat parameter. Currently, the TTM fixes assume that none of the user-supplied -parameters will vary with temperature. Note that :ref:`(Duffy) -` used a tanh() functional form for the temperature dependence -of the electronic specific heat, but ignored temperature dependencies -of any of the other parameters. See more discussion below for fix -ttm/mod. +parameters will vary with temperature. Note that :ref:`(Duffy) ` +used a tanh() functional form for the temperature dependence of the +electronic specific heat, but ignored temperature dependencies of any of +the other parameters. See more discussion below for fix *ttm/mod*. .. note:: @@ -265,27 +265,27 @@ heat sources (e.g. laser heating in ablation simulations): \bigtriangledown (\kappa_e \bigtriangledown T_e) - g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) -where theta is the Heaviside step function, I_0 is the (absorbed) -laser pulse intensity for ablation simulations, l_skin is the depth -of skin-layer, and all other designations have the same meaning as in -the former equation. The duration of the pulse is set by the parameter -*tau* in the *init_file*. +where :math:`\theta` is the Heaviside step function, :math:`I_0` is the +(absorbed) laser pulse intensity for ablation simulations, +:math:`l_{skin}` is the depth of the skin-layer, and all other +designations have the same meaning as in the former equation. The +duration of the pulse is set by the parameter *tau* in the *init_file*. -Fix ttm/mod also allows users to specify the dependencies of C_e and -kappa_e on the electronic temperature. The specific heat is expressed -as +Fix *ttm/mod* also allows users to specify the dependencies of +:math:`C_e` and :math:`\kappa_e` on the electronic temperature. The +specific heat is expressed as .. math:: C_e = C_0 + (a_0 + a_1 X + a_2 X^2 + a_3 X^3 + a_4 X^4) \exp (-(AX)^2) -where *X* = T_e/1000, and the thermal conductivity is defined as -kappa_e = D_e\*rho_e\*C_e, where D_e is the thermal diffusion -coefficient. +where :math:`X = \frac{T_e}{1000}`, and the thermal conductivity is +defined as :math:`\kappa_e = D_e \cdot rho_e \cdot C_e`, where +:math:`D_e` is the thermal diffusion coefficient. -Electronic pressure effects are included in the TTM model to account -for the blast force acting on ions because of electronic pressure -gradient (see :ref:`(Chen) `, :ref:`(Norman) `). The total force +Electronic pressure effects are included in the TTM model to account for +the blast force acting on ions because of electronic pressure gradient +(see :ref:`(Chen) `, :ref:`(Norman) `). The total force acting on an ion is: .. math:: @@ -293,25 +293,26 @@ acting on an ion is: {\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion} -where F_langevin is a force from Langevin thermostat simulating -electron-phonon coupling, and nabla P_e/n_ion is the electron blast -force. +where :math:`F_{langevin}` is a force from Langevin thermostat +simulating electron-phonon coupling, and :math:`\nabla P_e/n_{ion}` is +the electron blast force. -The electronic pressure is taken to be P_e = B\*rho_e\*C_e\*T_e +The electronic pressure is taken to be :math:`P_e = B \cdot rho_e \cdot +C_e \cdot T_e` -The current fix ttm/mod implementation allows TTM simulations with a +The current fix *ttm/mod* implementation allows TTM simulations with a vacuum. The vacuum region is defined as the grid cells with zero electronic temperature. The numerical scheme does not allow energy exchange with such cells. Since the material can expand to previously -unoccupied region in some simulations, the vacuum border can be -allowed to move. It is controlled by the *surface_movement* parameter -in the *init_file*. If it is set to 1, then "vacuum" cells can be -changed to "electron-filled" cells with the temperature *T_e_min* if -atoms move into them (currently only implemented for the case of -1-dimensional motion of flat surface normal to the X axis). The -initial borders of vacuum can be set in the *init_file* via *lsurface* -and *rsurface* parameters. In this case, electronic pressure gradient -is calculated as +unoccupied region in some simulations, the vacuum border can be allowed +to move. It is controlled by the *surface_movement* parameter in the +*init_file*. If it is set to 1, then "vacuum" cells can be changed to +"electron-filled" cells with the temperature *T_e_min* if atoms move +into them (currently only implemented for the case of 1-dimensional +motion of a flat surface normal to the X axis). The initial locations of +the interfaces of the electron density to the vacuum can be set in the +*init_file* via *lsurface* and *rsurface* parameters. In this case, +electronic pressure gradient is calculated as .. math:: @@ -319,10 +320,10 @@ is calculated as \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right] -where lambda is the electron mean free path (see :ref:`(Norman) `, -:ref:`(Pisarev) `) +where :math:`\lambda` is the electron mean free path (see :ref:`(Norman) +`, :ref:`(Pisarev) `) -The fix ttm/mod parameter file *init_file* has the following syntax. +The fix *ttm/mod* parameter file *init_file* has the following syntax. Every line with an odd number is considered as a comment and ignored. The lines with the even numbers are treated as follows: diff --git a/doc/src/fix_wall_flow.rst b/doc/src/fix_wall_flow.rst new file mode 100644 index 00000000000..d498e57c63b --- /dev/null +++ b/doc/src/fix_wall_flow.rst @@ -0,0 +1,175 @@ +.. index:: fix wall/flow +.. index:: fix wall/flow/kk + +fix wall/flow command +===================== + +Accelerator Variants: *wall/flow/kk* + +Syntax +"""""" + +.. code-block:: LAMMPS + + fix ID group-ID wall/flow axis vflow T seed N coords ... keyword value + +* ID, group-ID are documented in :doc:`fix ` command +* wall/flow = style name of this fix command +* axis = flow axis (*x*, *y*, or *z*) +* vflow = generated flow velocity in *axis* direction (velocity units) +* T = flow temperature (temperature units) +* seed = random seed for stochasticity (positive integer) +* N = number of walls +* coords = list of N wall positions along the *axis* direction in ascending order (distance units) +* zero or more keyword/value pairs may be appended +* keyword = *units* + + .. parsed-literal:: + + *units* value = *lattice* or *box* + *lattice* = wall positions are defined in lattice units + *box* = the wall positions are defined in simulation box units + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all wall/flow x 0.4 1.5 593894 4 2.0 4.0 6.0 8.0 + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +This fix implements flow boundary conditions (FBC) introduced in +:ref:`(Pavlov1) ` and :ref:`(Pavlov2) `. +The goal is to generate a stationary flow with a shifted Maxwell +velocity distribution: + +.. math:: + + f_a(v_a) \propto \exp{\left(-\frac{m (v_a-v_{\text{flow}})^2}{2 kB T}\right)} + +where :math:`v_a` is the component of velocity along the specified +*axis* argument (a = x,y,z), :math:`v_{\text{flow}}` is the flow +velocity specified as the *vflow* argument, *T* is the specified flow +temperature, *m* is the particle mass, and *kB* is the Boltzmann +constant. + +This is achieved by defining a series of *N* transparent walls along +the flow *axis* direction. Each wall is at the specified position +listed in the *coords* argument. Note that an additional transparent +wall is defined by the code at the boundary of the (periodic) +simulation domain in the *axis* direction. So there are effectively +N+1 walls. + +Each time a particle in the specified group passes through one of the +transparent walls, its velocity is re-assigned. Particles not in the +group do not interact with the wall. This can be used, for example, to +add obstacles composed of atoms, or to simulate a solution of complex +molecules in a one-atom liquid (note that the fix has been tested for +one-atom systems only). + +Conceptually, the velocity re-assignment represents creation of a new +particle within the system with simultaneous removal of the particle +which passed through the wall. The velocity components in directions +parallel to the wall are re-assigned according to the standard Maxwell +velocity distribution for the specified temperature *T*. The velocity +component perpendicular to the wall is re-assigned according to the +shifted Maxwell distribution defined above: + +.. math:: + + f_{\text{a generated}}(v_a) \propto v_a f_a(v_a) + +It can be shown that for an ideal-gas scenario this procedure makes +the velocity distribution of particles between walls exactly as +desired. + +Since in most cases simulated systems are not an ideal gas, multiple +walls can be defined, since a single wall may not be sufficient for +maintaining a stationary flow without "congestion" which can manifest +itself as regions in the flow with increased particle density located +upstream from static obstacles. + +For the same reason, the actual temperature and velocity of the +generated flow may differ from what is requested. The degree of +discrepancy is determined by how different from an ideal gas the +simulated system is. Therefore, a calibration procedure may be +required for such a system as described in :ref:`(Pavlov) +`. + +Note that the interactions between particles on different sides of a +transparent wall are not disabled or neglected. Likewise particle +positions are not altered by the velocity reassignment. This removes +the need to modify the force field to work correctly in cases when a +particle is close to a wall. + +For example, if particle positions were uniformly redistributed across +the surface of a wall, two particles could end up too close to each +other, potentially causing the simulation to explode. However due to +this compromise, some collective phenomena such as regions with +increased/decreased density or collective movements are not fully +removed when particles cross a wall. This unwanted consequence can +also be potentially mitigated by using more multiple walls. + +.. note:: + + When the specified flow has a high velocity, a lost atoms error can + occur (see :doc:`error messages `). If this + happens, you should ensure the checks for neighbor list rebuilds, + set via the :doc:`neigh_modify ` command, are as + conservative as possible (every timestep if needed). Those are the + default settings. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +No information about this fix is written to :doc:`binary restart files +`. + +None of the :doc:`fix_modify ` options are relevant to +this fix. + +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 `. + +Restrictions +"""""""""""" + +Fix *wall_flow* is part of the EXTRA-FIX package. It is only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +Flow boundary conditions should not be used with rigid bodies such as +those defined by a "fix rigid" command. + +This fix can only be used with periodic boundary conditions along the +flow axis. The size of the box in this direction must not change. Also, +the fix is designed to work only in an orthogonal simulation box. + +Related commands +"""""""""""""""" + +:doc:`fix wall/reflect ` command + +Default +""""""" + +The default for the units keyword is lattice. + +---------- + +.. _fbc-Pavlov1: + +**(Pavlov1)** Pavlov, Kolotinskii, Stegailov, "GPU-Based Molecular Dynamics of Turbulent Liquid Flows with OpenMM", Proceedings of PPAM-2022, LNCS (Springer), vol. 13826, pp. 346-358 (2023) + +.. _fbc-Pavlov2: + +**(Pavlov2)** Pavlov, Galigerov, Kolotinskii, Nikolskiy, Stegailov, "GPU-based Molecular Dynamics of Fluid Flows: Reaching for Turbulence", Int. J. High Perf. Comp. Appl., (2024) diff --git a/doc/src/fix_widom.rst b/doc/src/fix_widom.rst index ff66095db52..43e081800f4 100644 --- a/doc/src/fix_widom.rst +++ b/doc/src/fix_widom.rst @@ -195,8 +195,11 @@ doc page for more info. Do not set "neigh_modify once yes" or else this fix will never be called. Reneighboring is **required**. -Can be run in parallel, but aspects of the GCMC part will not scale well -in parallel. Only usable for 3D simulations. +This fix style requires an :doc:`atom style ` with per atom +type masses. + +Can be run in parallel, but some aspects of the insertion procedure +will not scale well in parallel. Only usable for 3D simulations. Related commands diff --git a/doc/src/info.rst b/doc/src/info.rst index 958542e3c84..b06fa4fc5dc 100644 --- a/doc/src/info.rst +++ b/doc/src/info.rst @@ -10,7 +10,7 @@ Syntax info args -* args = one or more of the following keywords: *out*, *all*, *system*, *memory*, *communication*, *computes*, *dumps*, *fixes*, *groups*, *regions*, *variables*, *coeffs*, *styles*, *time*, *accelerator*, or *configuration* +* args = one or more of the following keywords: *out*, *all*, *system*, *memory*, *communication*, *computes*, *dumps*, *fixes*, *groups*, *regions*, *variables*, *coeffs*, *styles*, *time*, *accelerator*, *fft* or *configuration* * *out* values = *screen*, *log*, *append* filename, *overwrite* filename * *styles* values = *all*, *angle*, *atom*, *bond*, *compute*, *command*, *dump*, *dihedral*, *fix*, *improper*, *integrate*, *kspace*, *minimize*, *pair*, *region* @@ -92,6 +92,13 @@ The *accelerator* category prints out information about compile time settings of included accelerator support for the GPU, KOKKOS, INTEL, and OPENMP packages. +.. versionadded:: 7Feb2024 + +The *fft* category prints out information about the included 3d-FFT +support. This lists the 3d-FFT engine, FFT precision, FFT library +used by the FFT engine. If the KOKKOS package is included, the settings +used for the KOKKOS package are displayed as well. + The *styles* category prints the list of styles available in the current LAMMPS binary. It supports one of the following options to control which category of styles is printed out: diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index 38a6fce375a..e7d5e93d72f 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -450,7 +450,10 @@ relative RMS error. For the KOKKOS package, the *pppm/kk* style performs charge assignment and force interpolation calculations, along with the FFTs themselves, on the GPU or (optionally) threaded on the CPU when - using OpenMP and FFTW3. + using OpenMP and FFTW3. The specific FFT library is selected using + the FFT_KOKKOS CMake parameter. See the + :doc:`Build settings ` doc page for how to select a + 3rd-party FFT library. ---------- diff --git a/doc/src/labelmap.rst b/doc/src/labelmap.rst index 9e3d7051016..70ca9262daf 100644 --- a/doc/src/labelmap.rst +++ b/doc/src/labelmap.rst @@ -43,7 +43,8 @@ The label map can also be defined by the :doc:`read_data ` command when it reads these sections in a data file: Atom Type Labels, Bond Type Labels, etc. See the :doc:`Howto type labels ` doc page for a general discussion of how type -labels can be used. +labels can be used. See :ref:`(Gissinger) ` for a discussion +of the type label implementation in LAMMPS and its uses. Valid type labels can contain any alphanumeric character, but must not start with a number, a '#', or a '*' character. They can contain other @@ -98,3 +99,9 @@ Default """"""" none + +----------- + +.. _Typelabel: + +**(Gissinger)** J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024). diff --git a/doc/src/lattice.rst b/doc/src/lattice.rst index 7dc9c579e53..99d954e43d5 100644 --- a/doc/src/lattice.rst +++ b/doc/src/lattice.rst @@ -19,7 +19,7 @@ Syntax scale = lattice constant in distance units (for all other units) * zero or more keyword/value pairs may be appended -* keyword = *origin* or *orient* or *spacing* or *a1* or *a2* or *a3* or *basis* +* keyword = *origin* or *orient* or *spacing* or *a1* or *a2* or *a3* or *basis* or *triclinic/general* .. parsed-literal:: @@ -34,6 +34,7 @@ Syntax x,y,z = primitive vector components that define unit cell *basis* values = x y z x,y,z = fractional coords of a basis atom (0 <= x,y,z < 1) + *triclinic/general* values = no values Examples """""""" @@ -44,7 +45,7 @@ Examples lattice hex 0.85 lattice sq 0.8 origin 0.0 0.5 0.0 orient x 1 1 0 orient y -1 1 0 lattice custom 3.52 a1 1.0 0.0 0.0 a2 0.5 1.0 0.0 a3 0.0 0.0 0.5 & - basis 0.0 0.0 0.0 basis 0.5 0.5 0.5 + basis 0.0 0.0 0.0 basis 0.5 0.5 0.5 triclinic/general lattice none 2.0 Description @@ -129,10 +130,13 @@ and a3 are 3 orthogonal unit vectors (edges of a unit cube). But you can specify them to be of any length and non-orthogonal to each other, so that they describe a tilted parallelepiped. Via the *basis* keyword you add atoms, one at a time, to the unit cell. Its arguments -are fractional coordinates (0.0 <= x,y,z < 1.0). The position vector -x of a basis atom within the unit cell is thus a linear combination of -the unit cell's 3 edge vectors, i.e. x = bx a1 + by a2 + bz a3, -where bx,by,bz are the 3 values specified for the *basis* keyword. +are fractional coordinates (0.0 <= x,y,z < 1.0). For 2d simulations, +the fractional z coordinate for any basis atom must be 0.0. + +The position vector x of a basis atom within the unit cell is a linear +combination of the unit cell's 3 edge vectors, i.e. x = bx a1 + by +a2 + bz a3, where bx,by,bz are the 3 values specified for the *basis* +keyword. ---------- @@ -168,18 +172,21 @@ The *origin* option specifies how the unit cell will be shifted or translated when mapping it into the simulation box. The x,y,z values are fractional values (0.0 <= x,y,z < 1.0) meaning shift the lattice by a fraction of the lattice spacing in each dimension. The meaning -of "lattice spacing" is discussed below. +of "lattice spacing" is discussed below. For 2d simulations, the +*origin* z value must be 0.0. The *orient* option specifies how the unit cell will be rotated when mapping it into the simulation box. The *dim* argument is one of the 3 coordinate axes in the simulation box. The other 3 arguments are the crystallographic direction in the lattice that you want to orient along that axis, specified as integers. E.g. "orient x 2 1 0" means -the x-axis in the simulation box will be the [210] lattice -direction, and similarly for y and z. The 3 lattice directions you -specify do not have to be unit vectors, but they must be mutually -orthogonal and obey the right-hand rule, i.e. (X cross Y) points in -the Z direction. +the x-axis in the simulation box will be the [210] lattice direction, +and similarly for y and z. The 3 lattice directions you specify do +not have to be unit vectors, but they must be mutually orthogonal and +obey the right-hand rule, i.e. (X cross Y) points in the Z direction. +For 2d simulations, the *orient* x and y vectors must define 0 for +their 3rd component. Similarly the *orient* z vector must define 0 +for its 1st and 2nd components. .. note:: @@ -193,6 +200,59 @@ the Z direction. ---------- +The *triclinic/general* option specifies that the defined lattice is +for use with a general triclinic simulation box, as opposed to an +orthogonal or restricted triclinic box. The :doc:`Howto triclinic +` doc page explains all 3 kinds of simulation boxes +LAMMPS supports. + +If this option is specified, a *custom* lattice style must be used. +The *a1*, *a2*, *a3* vectors should define the edge vectors of a +single unit cell of the lattice with one or more basis atoms. They +edge vectors can be arbitrary so long as they are non-zero, distinct, +and not co-planar. In addition, they must define a right-handed +system, such that (*a1* cross *a2*) points in the direction of *a3*. +Note that a left-handed system can be converted to a right-handed +system by simply swapping the order of any pair of the *a1*, *a2*, +*a3* vectors. For 2d simulations, the *a3* vector must be specified +as (0.0,0.0,1.0), which is its default value. + +If this option is used, the *origin* and *orient* settings must have +their default values. Namely (0.0,0.0,0.0) for the *origin* and +(100), (010), (001) for the *orient* vectors. + +The :doc:`create_box ` command can be used to create a +general triclinic box that replicates the *a1*, *a2*, *a3* unit cell +vectors in each direction to create the 3 arbitrary edge vectors of +the overall simulation box. It requires a lattice with the +*triclinic/general* option. + +Likewise, the :doc:`create_atoms ` command can be used +to add atoms (or molecules) to a general triclinic box which lie on +the lattice points defined by *a1*, *a2*, *a3* and the unit cell basis +atoms. To do this, it also requires a lattice with the +*triclinic/general* option. + +.. note:: + + LAMMPS allows specification of general triclinic lattices and + simulation boxes as a convenience for users who may be converting + data from solid-state crystallographic representations or from DFT + codes for input to LAMMPS. However, as explained on the + :doc:`Howto_triclinic ` doc page, internally, + LAMMPS only uses restricted triclinic simulation boxes. This means + the box and per-atom information (e.g. coordinates, velocities) + defined by the :doc:`create_box ` and + :doc:`create_atoms ` commands are converted from + general to restricted triclinic form when the two commands are + invoked. It also means that any other commands which use lattice + spacings from this command (e.g. the region command), will be + operating on a restricted triclinic simulation box, even if the + *triclinic/general* option was used to define the lattice. See the + next section for details. + +---------- + Several LAMMPS commands have the option to use distance units that are inferred from "lattice spacings" in the x,y,z box directions. E.g. the :doc:`region ` command can create a block of size @@ -216,6 +276,18 @@ coordinates of the 8 corner points of the modified unit cell (4 in 2d). Similarly, the Y and Z lattice spacings are defined as the difference in the min/max of the y and z coordinates. +.. note:: + + If the *triclinic/general* option is specified, the unit cell + defined by *a1*, *a2*, *a3* edge vectors is first converted to a + restricted triclinic orientation, which is a rotation operation. + The min/max extent of the 8 corner points is then determined, as + described in the preceding paragraph, to set the lattice + spacings. As explained for the *triclinic/general* option above, + this is because any use of the lattice spacings by other commands + will be for a restricted triclinic simulation box, not a general + triclinic box. + Note that if the unit cell is orthogonal with axis-aligned edges (no rotation via the *orient* keyword), then the lattice spacings in each dimension are simply the scale factor (described above) multiplied by diff --git a/doc/src/molecule.rst b/doc/src/molecule.rst index b930a9fc653..1fe3f36eaad 100644 --- a/doc/src/molecule.rst +++ b/doc/src/molecule.rst @@ -126,14 +126,50 @@ molecule (header keyword = inertia). Format of a molecule file """"""""""""""""""""""""" -The format of an individual molecule file is similar but -(not identical) to the data file read by the :doc:`read_data ` -commands, and is as follows. +The format of an individual molecule file looks similar but is +different than that of a data file read by the :doc:`read_data ` +commands. Here is a simple example for a TIP3P water molecule: + +.. code-block:: + + # Water molecule. TIP3P geometry + # header section: + 3 atoms + 2 bonds + 1 angles + + # body section: + Coords + + 1 0.00000 -0.06556 0.00000 + 2 0.75695 0.52032 0.00000 + 3 -0.75695 0.52032 0.00000 + + Types + + 1 1 # O + 2 2 # H + 3 2 # H + + Charges + + 1 -0.834 + 2 0.417 + 3 0.417 + + Bonds + + 1 1 1 2 + 2 1 1 3 + + Angles + + 1 1 2 1 3 A molecule file has a header and a body. The header appears first. The -first line of the header and thus of the molecule file is *always* skipped; -it typically contains a description of the file or a comment from the software -that created the file. +first line of the header and thus of the molecule file is *always* +skipped; it typically contains a description of the file or a comment +from the software that created the file. Then lines are read one line at a time. Lines can have a trailing comment starting with '#' that is ignored. There *must* be at least one @@ -158,25 +194,62 @@ appear if the value(s) are different than the default, except when defining a *body* particle, which requires setting the number of *atoms* to 1, and setting the *inertia* in a specific section (see below). -* N *atoms* = # of atoms N in molecule, default = 0 -* Nb *bonds* = # of bonds Nb in molecule, default = 0 -* Na *angles* = # of angles Na in molecule, default = 0 -* Nd *dihedrals* = # of dihedrals Nd in molecule, default = 0 -* Ni *impropers* = # of impropers Ni in molecule, default = 0 -* Nf *fragments* = # of fragments Nf in molecule, default = 0 -* Ninteger Ndouble *body* = # of integer and floating-point values - in body particle, default = 0 -* Mtotal *mass* = total mass of molecule -* Xc Yc Zc *com* = coordinates of center-of-mass of molecule -* Ixx Iyy Izz Ixy Ixz Iyz *inertia* = 6 components of inertia tensor of molecule - -For *mass*, *com*, and *inertia*, the default is for LAMMPS to -calculate this quantity itself if needed, assuming the molecules -consist of a set of point particles or finite-size particles (with a -non-zero diameter) that do not overlap. If finite-size particles in -the molecule do overlap, LAMMPS will not account for the overlap -effects when calculating any of these 3 quantities, so you should -pre-compute them yourself and list the values in the file. + .. list-table:: + :header-rows: 1 + :widths: auto + + * - Number(s) + - Keyword + - Meaning + - Default Value + * - N + - atoms + - # of atoms N in molecule + - 0 + * - Nb + - bonds + - # of bonds Nb in molecule + - 0 + * - Na + - angles + - # of angles Na in molecule + - 0 + * - Nd + - dihedrals + - # of dihedrals Nd in molecule + - 0 + * - Ni + - impropers + - # of impropers Ni in molecule + - 0 + * - Nf + - fragments + - # of fragments Nf in molecule + - 0 + * - Ninteger Ndouble + - body + - # of integer and floating-point values in body particle + - 0 + * - Mtotal + - mass + - total mass of molecule + - computed + * - Xc Yc Zc + - com + - coordinates of center-of-mass of molecule + - computed + * - Ixx Iyy Izz Ixy Ixz Iyz + - inertia + - 6 components of inertia tensor of molecule + - computed + +For *mass*, *com*, and *inertia*, the default is for LAMMPS to calculate +this quantity itself if needed, assuming the molecules consist of a set +of point particles or finite-size particles (with a non-zero diameter) +that do **not** overlap. If finite-size particles in the molecule +**do** overlap, LAMMPS will not account for the overlap effects when +calculating any of these 3 quantities, so you should pre-compute them +yourself and list the values in the file. The mass and center-of-mass coordinates (Xc,Yc,Zc) are self-explanatory. The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) @@ -188,7 +261,7 @@ internally. These are the allowed section keywords for the body of the file. -* *Coords, Types, Molecules, Fragments, Charges, Diameters, Masses* = atom-property sections +* *Coords, Types, Molecules, Fragments, Charges, Diameters, Dipoles, Masses* = atom-property sections * *Bonds, Angles, Dihedrals, Impropers* = molecular topology sections * *Special Bond Counts, Special Bonds* = special neighbor info * *Shake Flags, Shake Atoms, Shake Bond Types* = SHAKE info @@ -303,6 +376,21 @@ not listed, the default diameter of each atom in the molecule is 1.0. ---------- +.. versionadded:: 7Feb2024 + +*Dipoles* section: + +* one line per atom +* line syntax: ID mux muy muz +* mux,muy,muz = x-, y-, and z-component of point dipole vector of atom + +This section is only allowed for :doc:`atom styles ` that +support particles with point dipoles, e.g. atom_style dipole. If not +listed, the default dipole component of each atom in the molecule is set +to 0.0. + +---------- + *Masses* section: * one line per atom diff --git a/doc/src/neb.rst b/doc/src/neb.rst index 0bc5de010be..b626796b6bd 100644 --- a/doc/src/neb.rst +++ b/doc/src/neb.rst @@ -10,7 +10,7 @@ Syntax neb etol ftol N1 N2 Nevery file-style arg keyword values -* etol = stopping tolerance for energy (energy units) +* etol = stopping tolerance for energy (dimensionless) * ftol = stopping tolerance for force (force units) * N1 = max # of iterations (timesteps) to run initial NEB * N2 = max # of iterations (timesteps) to run barrier-climbing NEB @@ -89,10 +89,11 @@ potentials, and the starting configuration when the neb command is issued should be the same for every replica. In a NEB calculation each replica is connected to other replicas by -inter-replica nudging forces. These forces are imposed by the :doc:`fix neb ` command, which must be used in conjunction with the -neb command. The group used to define the fix neb command defines the -NEB atoms which are the only ones that inter-replica springs are -applied to. If the group does not include all atoms, then non-NEB +inter-replica nudging forces. These forces are imposed by the +:doc:`fix neb ` command, which must be used in conjunction +with the neb command. The group used to define the fix neb command +defines the NEB atoms which are the only ones that inter-replica springs +are applied to. If the group does not include all atoms, then non-NEB atoms have no inter-replica springs and the forces they feel and their motion is computed in the usual way due only to other atoms within their replica. Conceptually, the non-NEB atoms provide a background @@ -445,7 +446,7 @@ Related commands """""""""""""""" :doc:`prd `, :doc:`temper `, :doc:`fix langevin `, -:doc:`fix viscous ` +:doc:`fix viscous `, :doc:`fix neb ` Default """"""" diff --git a/doc/src/package.rst b/doc/src/package.rst index 212a06258c0..8be6639e72b 100644 --- a/doc/src/package.rst +++ b/doc/src/package.rst @@ -74,7 +74,7 @@ Syntax *no_affinity* values = none *kokkos* args = keyword value ... zero or more keyword/value pairs may be appended - keywords = *neigh* or *neigh/qeq* or *neigh/thread* or *neigh/transpose* or *newton* or *binsize* or *comm* or *comm/exchange* or *comm/forward* or *comm/pair/forward* or *comm/fix/forward* or *comm/reverse* or *comm/pair/reverse* or *sort* or *gpu/aware* or *pair/only* + keywords = *neigh* or *neigh/qeq* or *neigh/thread* or *neigh/transpose* or *newton* or *binsize* or *comm* or *comm/exchange* or *comm/forward* or *comm/pair/forward* or *comm/fix/forward* or *comm/reverse* or *comm/pair/reverse* or *sort* or *atom/map* or *gpu/aware* or *pair/only* *neigh* value = *full* or *half* full = full neighbor list half = half neighbor list built in thread-safe manner @@ -108,6 +108,9 @@ Syntax *sort* value = *no* or *device* *no* = perform atom sorting in non-KOKKOS mode *device* = perform atom sorting on device (e.g. on GPU) + *atom/map* value = *no* or *device* + *no* = build atom map in non-KOKKOS mode + *device* = build atom map on device (e.g. on GPU) *gpu/aware* = *off* or *on* *off* = do not use GPU-aware MPI *on* = use GPU-aware MPI (default) @@ -566,15 +569,19 @@ performing the exchange pack/unpack on the host CPU can give speedup since it reduces the number of CUDA kernel launches. The *sort* keyword determines whether the host or device performs atom -sorting, see the :doc:`atom_modify sort ` command. The -value options for the *sort* keyword are *no* or *device* similar to the -*comm* keywords above. If a value of *host* is used it will be -automatically be changed to *no* since the *sort* keyword does not -support *host* mode. The value of *no* will also always be used when -running on the CPU, i.e. setting the value to *device* will have no -effect if the simulation is running on the CPU. Not all fix styles with -extra atom data support *device* mode and in that case a warning will be -given and atom sorting will run in *no* mode instead. +sorting, see the :doc:`atom_modify sort ` command. The value +options for the *sort* keyword are *no* or *device* similar to the *comm* +keywords above. If a value of *host* is used it will be automatically be +changed to *no* since the *sort* keyword does not support *host* mode. Not +all fix styles with extra atom data support *device* mode and in that case +a warning will be given and atom sorting will run in *no* mode instead. + +.. versionadded:: 17Apr2024 + +The *atom/map* keyword determines whether the host or device builds the +atom_map, see the :doc:`atom_modify map ` command. The +value options for the *atom/map* keyword are identical to the *sort* +keyword above. The *gpu/aware* keyword chooses whether GPU-aware MPI will be used. When this keyword is set to *on*, buffers in GPU memory are passed directly @@ -593,12 +600,13 @@ for OpenMPI 1.8 (or later versions), Mvapich2 1.9 (or later) when the Spectrum MPI when the "-gpu" flag is used. The *pair/only* keyword can change how the KOKKOS suffix "kk" is applied -when using an accelerator device. By default device acceleration is -always used for all available styles. With *pair/only* set to *on* the -suffix setting will choose device acceleration only for pair styles and -run all other force computations on the host CPU. -The *comm* flags will also automatically be changed to *no*\ . This can -result in better performance for certain configurations and system sizes. +when using an accelerator device. By default device acceleration is always +used for all available styles. With *pair/only* set to *on* the suffix +setting will choose device acceleration only for pair styles and run all +other force computations on the host CPU. The *comm* flags, along with the +*sort* and *atom/map* keywords will also automatically be changed to *no*\ . +This can result in better performance for certain configurations and +system sizes. ---------- @@ -684,18 +692,18 @@ Restrictions This command cannot be used after the simulation box is defined by a :doc:`read_data ` or :doc:`create_box ` command. -The gpu style of this command can only be invoked if LAMMPS was built +The *gpu* style of this command can only be invoked if LAMMPS was built with the GPU package. See the :doc:`Build package ` doc page for more info. -The intel style of this command can only be invoked if LAMMPS was +The *intel* style of this command can only be invoked if LAMMPS was built with the INTEL package. See the :doc:`Build package ` page for more info. -The kk style of this command can only be invoked if LAMMPS was built +The *kokkos* style of this command can only be invoked if LAMMPS was built with the KOKKOS package. See the :doc:`Build package ` doc page for more info. -The omp style of this command can only be invoked if LAMMPS was built +The *omp* style of this command can only be invoked if LAMMPS was built with the OPENMP package. See the :doc:`Build package ` doc page for more info. @@ -704,19 +712,27 @@ Related commands :doc:`suffix `, :doc:`-pk command-line switch ` -Default -""""""" +Defaults +"""""""" + +For the GPU package, the default parameters and settings are: + +.. parsed-literal:: -For the GPU package, the default is Ngpu = 0 and the option defaults are neigh -= yes, newton = off, binsize = 0.0, split = 1.0, gpuID = 0 to Ngpu-1, tpa = 1, -omp = 0, and platform=-1. These settings are made automatically if the "-sf -gpu" :doc:`command-line switch ` is used. If it is not used, you -must invoke the package gpu command in your input script or via the "-pk gpu" -:doc:`command-line switch `. + Ngpu = 0, neigh = yes, newton = off, binsize = 0.0, split = 1.0, gpuID = 0 to Ngpu-1, tpa = 1, omp = 0, platform=-1. -For the INTEL package, the default is Nphi = 1 and the option defaults are omp -= 0, mode = mixed, lrt = no, balance = -1, tpc = 4, tptask = 240, pppm_table = -yes. The default ghost option is determined by the pair style being used. +These settings are made automatically if the "-sf gpu" +:doc:`command-line switch ` is used. If it is not used, +you must invoke the package gpu command in your input script or via the +"-pk gpu" :doc:`command-line switch `. + +For the INTEL package, the default parameters and settings are: + +.. parsed-literal:: + + Nphi = 1, omp = 0, mode = mixed, lrt = no, balance = -1, tpc = 4, tptask = 240, pppm_table = yes + +The default ghost option is determined by the pair style being used. This value is output to the screen in the offload report at the end of each run. Note that all of these settings, except "omp" and "mode", are ignored if LAMMPS was not built with Xeon Phi co-processor support. These settings are @@ -724,20 +740,35 @@ made automatically if the "-sf intel" :doc:`command-line switch ` is used. If it is not used, you must invoke the package intel command in your input script or via the "-pk intel" :doc:`command-line switch `. -For the KOKKOS package, the option defaults for GPUs are neigh = full, -neigh/qeq = full, newton = off, binsize for GPUs = 2x LAMMPS default value, -comm = device, sort = device, neigh/transpose = off, gpu/aware = on. When -LAMMPS can safely detect that GPU-aware MPI is not available, the default value -of gpu/aware becomes "off". For CPUs or Xeon Phis, the option defaults are -neigh = half, neigh/qeq = half, newton = on, binsize = 0.0, comm = no, and sort -= no. For GPUs, option neigh/thread = on when there are 16k atoms or less on an MPI -rank, otherwise it is "off". These settings are made automatically by the -required "-k on" :doc:`command-line switch `. You can change them -by using the package kokkos command in your input script or via the :doc:`-pk -kokkos command-line switch `. - -For the OMP package, the default is Nthreads = 0 and the option defaults are -neigh = yes. These settings are made automatically if the "-sf omp" -:doc:`command-line switch ` is used. If it is not used, you must -invoke the package omp command in your input script or via the "-pk omp" -:doc:`command-line switch `. +For the KOKKOS package when using GPUs, the option defaults are: + +.. parsed-literal:: + + neigh = full, neigh/qeq = full, newton = off, binsize = 2x LAMMPS default value, comm = device, sort = device, atom/map = device, neigh/transpose = off, gpu/aware = on + +For GPUs, option neigh/thread = on when there are 16k atoms or less on +an MPI rank, otherwise it is "off". When LAMMPS can safely detect that +GPU-aware MPI is not available, the default value of gpu/aware becomes +"off". + +For the KOKKOS package when using CPUs or Xeon Phis, the option defaults are: + +.. parsed-literal:: + + neigh = half, neigh/qeq = half, newton = on, binsize = 0.0, comm = no, sort = no, atom/map = no + +These settings are made automatically by +the required "-k on" :doc:`command-line switch `. You can +change them by using the package kokkos command in your input script or +via the :doc:`-pk kokkos command-line switch `. + +For the OMP package, the defaults are + +.. parsed-literal:: + + Nthreads = 0, neigh = yes + +These settings are made automatically if the "-sf omp" +:doc:`command-line switch ` is used. If it is not used, +you must invoke the package omp command in your input script or via the +"-pk omp" :doc:`command-line switch `. diff --git a/doc/src/pair_airebo.rst b/doc/src/pair_airebo.rst index 9a1e4e5518c..ce574cc7341 100644 --- a/doc/src/pair_airebo.rst +++ b/doc/src/pair_airebo.rst @@ -156,7 +156,7 @@ pair_coeff command: The first 2 arguments must be \* \* so as to span all LAMMPS atom types. The first three C arguments map LAMMPS atom types 1,2,3 to the C element in the AIREBO file. The final H argument maps LAMMPS atom -type 4 to the H element in the SW file. If a mapping value is +type 4 to the H element in the AIREBO file. If a mapping value is specified as NULL, the mapping is not performed. This can be used when a *airebo* potential is used as part of the *hybrid* pair style. The NULL values are placeholders for atom types that will be used with @@ -222,12 +222,12 @@ enabled if LAMMPS was built with that package. See the :doc:`Build package ` setting to be "on" for pair interactions. -The CH.airebo and CH.airebo-m potential files provided with LAMMPS -(see the potentials directory) are parameterized for metal :doc:`units `. -You can use the AIREBO, AIREBO-M or REBO potential with any LAMMPS units, -but you would need to create your own AIREBO or AIREBO-M potential file -with coefficients listed in the appropriate units, if your simulation -does not use "metal" units. +The CH.airebo and CH.airebo-m potential files provided with LAMMPS (see +the potentials directory) are parameterized for metal :doc:`units +`. You can use the pair styles with *any* LAMMPS units, but you +would need to create your own AIREBO or AIREBO-M potential file with +coefficients listed in the appropriate units, if your simulation does +not use "metal" units. The pair styles provided here **only** support potential files parameterized for the elements carbon and hydrogen (designated with "C" and "H" in the diff --git a/doc/src/pair_charmm.rst b/doc/src/pair_charmm.rst index 8ff6508dea9..30b03ad8724 100644 --- a/doc/src/pair_charmm.rst +++ b/doc/src/pair_charmm.rst @@ -16,6 +16,7 @@ .. index:: pair_style lj/charmm/coul/msm/omp .. index:: pair_style lj/charmmfsw/coul/charmmfsh .. index:: pair_style lj/charmmfsw/coul/long +.. index:: pair_style lj/charmmfsw/coul/long/kk pair_style lj/charmm/coul/charmm command ======================================== @@ -43,6 +44,8 @@ pair_style lj/charmmfsw/coul/charmmfsh command pair_style lj/charmmfsw/coul/long command ========================================= +Accelerator Variants: *lj/charmmfsw/coul/long/kk* + Syntax """""" @@ -281,7 +284,9 @@ page for more info. Related commands """""""""""""""" -:doc:`pair_coeff ` +:doc:`pair_coeff `, :doc:`angle_style charmm `, +:doc:`dihedral_style charmm `, +:doc:`dihedral_style charmmfsw `, :doc:`fix cmap ` Default """"""" diff --git a/doc/src/pair_dsmc.rst b/doc/src/pair_dsmc.rst index edac1d7a656..09bb5d90af1 100644 --- a/doc/src/pair_dsmc.rst +++ b/doc/src/pair_dsmc.rst @@ -138,8 +138,12 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" -This style is part of the MC package. It is only enabled if LAMMPS -was built with that package. See the :doc:`Build package ` page for more info. +This pair style is part of the MC package. It is only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` page for more info. + +This pair style requires an :doc:`atom style ` with per +atom type masses. Related commands """""""""""""""" diff --git a/doc/src/pair_eam.rst b/doc/src/pair_eam.rst index 654f49c166d..cdb6487981f 100644 --- a/doc/src/pair_eam.rst +++ b/doc/src/pair_eam.rst @@ -140,6 +140,21 @@ The OpenKIM Project at provides EAM potentials that can be used directly in LAMMPS with the :doc:`kim command ` interface. +.. warning:: + + The EAM potential files tabulate the embedding energy as a function + of the local electron density :math:`\rho`. When atoms get too + close, this electron density may exceed the range for which the + embedding energy was tabulated for. To avoid crashes, LAMMPS will + assume a linearly increasing embedding energy for electron densities + beyond the maximum tabulated value. LAMMPS will print a warning when + this happens. It may be acceptable at the beginning of an + equilibration (e.g. when using randomized coordinates) but would be a + big concern for accuracy if it happens during production runs. The + EAM potential file triggering the warning during production is thus + not a good choice, and the EAM model in general not likely a good + model for the kind of system under investigation. + ---------- For style *eam*, potential values are read from a file that is in the diff --git a/doc/src/pair_lepton.rst b/doc/src/pair_lepton.rst index 21e619a3d93..5b5dc698e76 100644 --- a/doc/src/pair_lepton.rst +++ b/doc/src/pair_lepton.rst @@ -72,7 +72,7 @@ interactions between particles which depend on the distance and have a cutoff. The potential function must be provided as an expression string using "r" as the distance variable. With pair style *lepton/coul* one may additionally reference the charges of the two atoms of the pair with -"qi" and "qj", respectively. With pair style *lepton/coul* one may +"qi" and "qj", respectively. With pair style *lepton/sphere* one may instead reference the radii of the two atoms of the pair with "radi" and "radj", respectively; this is half of the diameter that can be set in :doc:`data files ` or the :doc:`set command `. @@ -166,8 +166,8 @@ mixing. Thus, expressions for *all* I,J pairs must be specified explicitly. Only pair style *lepton* supports the :doc:`pair_modify shift ` -option for shifting the energy of the pair interaction so that it is -0 at the cutoff, pair styles *lepton/coul* and *lepton/sphere* do *not*. +option for shifting the potential energy of the pair interaction so that +it is 0 at the cutoff, pair styles *lepton/coul* and *lepton/sphere* do *not*. The :doc:`pair_modify table ` options are not relevant for the these pair styles. diff --git a/doc/src/pair_meam.rst b/doc/src/pair_meam.rst index 57c40aa6ee6..bafa9fb3c9e 100644 --- a/doc/src/pair_meam.rst +++ b/doc/src/pair_meam.rst @@ -427,8 +427,8 @@ package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. The maximum number of elements, that can be read from the MEAM library -file, is determined at compile time. The default is 5. If you need -support for more elements, you have to change the the constant 'maxelt' +file, is determined at compile time. The default is 8. If you need +support for more elements, you have to change the the constant 'MAXELT' at the beginning of the file ``src/MEAM/meam.h`` and update/recompile LAMMPS. There is no limit on the number of atoms types. diff --git a/doc/src/pair_mliap.rst b/doc/src/pair_mliap.rst index fcb9c7881e5..e325de0aa65 100644 --- a/doc/src/pair_mliap.rst +++ b/doc/src/pair_mliap.rst @@ -22,7 +22,7 @@ Syntax style = *linear* or *quadratic* or *nn* or *mliappy* filename = name of file containing model definitions *descriptor* values = style filename - style = *sna* or *so3* + style = *sna* or *so3* or *ace* filename = name of file containing descriptor definitions *unified* values = filename ghostneigh_flag filename = name of file containing serialized unified Python object @@ -36,6 +36,7 @@ Examples pair_style mliap model linear InP.mliap.model descriptor sna InP.mliap.descriptor pair_style mliap model quadratic W.mliap.model descriptor sna W.mliap.descriptor pair_style mliap model nn Si.nn.mliap.model descriptor so3 Si.nn.mliap.descriptor + pair_style mliap model mliappy ACE_NN_Pytorch.pt descriptor ace ccs_single_element.yace pair_style mliap unified mliap_unified_lj_Ar.pkl 0 pair_coeff * * In P @@ -49,8 +50,8 @@ quantities that characterize the atomic positions (*descriptor*). By defining *model* and *descriptor* separately, it is possible to use many different models with a given descriptor, or many different -descriptors with a given model. The pair style currently supports only -*sna* and *so3* descriptor styles, but it is straightforward to add new +descriptors with a given model. The pair style currently supports *sna*, +*so3* and *ace* descriptor styles, but it is straightforward to add new descriptor styles. By using the *unified* keyword, it is possible to define a Python model that combines functionalities of both *model* and *descriptor*. @@ -72,6 +73,26 @@ the smooth SO(3) power spectrum with the explicit inclusion of a radial basis :ref:`(Bartok) ` and :ref:`(Zagaceta) `. The available models are *linear* and *nn*. +.. versionadded:: 17Apr2024 + +The descriptor style *ace* is a class of highly general atomic +descriptors, atomic cluster expansion descriptors (ACE) from +:ref:`(Drautz) `, that include a radial basis, an angular +basis, and bases for other variables (such as chemical species) if +relevant. In descriptor style *ace*, the *ace* descriptors may be +defined up to an arbitrary body order. This descriptor style is the same +as that used in :doc:`pair_style pace ` and :doc:`compute +pace `. The available models with *ace* in ML-IAP are +*linear* and *mliappy*. The *ace* descriptors and models require +building LAMMPS with the ML-PACE package (see below). The *mliappy* +model style may be used with *ace* descriptors, but it requires that +LAMMPS is also built with the PYTHON package. As with other model +styles, the *mliappy* model style can be used to couple arbitrary python +models that use the *ace* descriptors such as Pytorch NNs. Note that +*ALL* mliap model styles with *ace* descriptors require that descriptors +and hyperparameters are supplied in a `.yace` or `.ace` file, similar to +:doc:`compute pace `. + The pair_style *mliap* command must be followed by two keywords *model* and *descriptor* in either order, or the one keyword *unified*. A single *pair_coeff* command is also required. The first 2 arguments @@ -136,7 +157,7 @@ The detail of *nn* module implementation can be found at :ref:`(Yanxon) `. Note that unlike the potential file, the + Clebsch-Gordan coefficients in the descriptor file supplied should *NOT* be + multiplied by linear or square root embedding terms. + + The SNAP descriptor file closely follows the format of the :doc:`pair_style snap ` parameter file. The file can contain blank and comment lines (start with #) anywhere. Each non-blank @@ -169,6 +200,24 @@ contains a few more arguments (e.g., *nmax* and *alpha*). The preparation of SO3 descriptor and model files can be done with the `Pyxtal_FF `_ package. +The ACE descriptor file differs from the SNAP and SO3 files. It more +closely resembles the potential file format for linear or square-root +embedding ACE potentials used in the :doc:`pair_style pace `. +As noted above, the key difference is that the Clebsch-Gordan +coefficients in the descriptor file with *mliap descriptor ace* are +*NOT* multiplied by linear or square root embedding terms. In other +words,the model is separated from the descriptor definitions and +hyperparameters. In :doc:`pair_style pace `, they are +combined. The ACE descriptor files required by *mliap* are generated +automatically in `FitSNAP `_ during +linear, pytorch, etc. ACE model fitting. Additional tools are provided +there to prepare *ace* descriptor files and hyperparameters before model +fitting. The *ace* descriptor files can also be extracted from ACE +model fits in `python-ace. `_. It +is important to note that order of the types listed in :doc:`pair_coeff +` must match the order of the elements/types listed in the +ACE descriptor file for all *mliap* styles when using *ace* descriptors. + See the :doc:`pair_coeff ` page for alternate ways to specify the path for these *model* and *descriptor* files. @@ -245,7 +294,10 @@ This pair style is part of the ML-IAP package. It is only enabled if LAMMPS was built with that package. In addition, building LAMMPS with the ML-IAP package requires building LAMMPS with the ML-SNAP package. The *mliappy* model requires building LAMMPS with the PYTHON package. -See the :doc:`Build package ` page for more info. +The *ace* descriptor requires building LAMMPS with the ML-PACE package. +See the :doc:`Build package ` page for more info. Note +that `pair_mliap/kk` acceleration will *not* invoke the `kk` +accelerated variants of SNAP or ACE descriptors. Related commands @@ -271,5 +323,3 @@ none .. _Yanxon2020: **(Yanxon2020)** Yanxon, Zagaceta, Tang, Matteson, Zhu, Mach. Learn.: Sci. Technol. 2, 027001 (2020). - - diff --git a/doc/src/pair_pedone.rst b/doc/src/pair_pedone.rst new file mode 100644 index 00000000000..10fcb63e2e6 --- /dev/null +++ b/doc/src/pair_pedone.rst @@ -0,0 +1,137 @@ +.. index:: pair_style pedone +.. index:: pair_style pedone/omp + +pair_style pedone command +========================= + +Accelerator Variants: *pedone/omp* + + +Syntax +"""""" + +.. code-block:: LAMMPS + + pair_style style args + +* style = pedone* +* args = list of arguments for a particular style + +.. parsed-literal:: + + *pedone* args = cutoff + cutoff = global cutoff for Pedone interactions (distance units) + +Examples +"""""""" + +.. code-block:: LAMMPS + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-5 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +Used in input scripts: + + .. parsed-literal:: + + examples/PACKAGES/pedone/in.pedone.relax + examples/PACKAGES/pedone/in.pedone.melt + + + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +Pair style *pedone* computes the **non-Coulomb** interactions of the Pedone +(or PMMCS) potential :ref:`(Pedone) ` which combines Coulomb +interactions, Morse potential, and repulsive :math:`r^{-12}` +Lennard-Jones terms (see below). The *pedone* pair style is meant +to be used in addition to a :doc:`Coulomb pair style ` via +pair style :doc:`hybrid/overlay ` (see example above). +Using *coul/long* or *could/dsf* (for solids) is recommended. + +The full Pedone potential function from :ref:`(Pedone) ` for each +pair of atoms is: + +.. math:: + + E = \frac{C q_i q_j}{\epsilon r} + + D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + + \frac{B_0}{r^{12}} \qquad r < r_c + +:math:`r_c` is the cutoff and :math:`C` is a conversion factor that is +specific to the choice of :doc:`units ` so that the entire +Coulomb term is in energy units with :math:`q_i` and :math:`q_j` as the +assigned charges in multiples of the elementary charge. + +The following coefficients must be defined for the selected pairs of +atom types via the :doc:`pair_coeff ` command as in the +example above: + +* :math:`D_0` (energy units) +* :math:`\alpha` (1/distance units) +* :math:`r_0` (distance units) +* :math:`C_0` (energy units) +* cutoff (distance units) + +The last coefficient is optional. If not specified, the global *pedone* +cutoff is used. + +---------- + +.. include:: accel_styles.rst + +---------- + +Mixing, shift, table, tail correction, restart, rRESPA info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This pair style does not support mixing. + +This pair style support the :doc:`pair_modify ` shift +option for the energy of the pair interaction. + +This pair style does not support the :doc:`pair_modify ` +tail option for adding long-range tail corrections to energy and +pressure. + +This pair style writes its information to :doc:`binary restart files `, +so pair_style and pair_coeff commands does not need to be specified in an input +script that reads a restart file. + +This pair style can only be used via the *pair* keyword of the +:doc:`run_style respa ` command. It does not support the +*inner*, *middle*, or *outer* keywords. + +---------- + +Restrictions +"""""""""""" + +The *pedone* pair style is only enabled if LAMMPS was built with the +EXTRA-PAIR package. See the :doc:`Build package ` page +for more info. + +Related commands +"""""""""""""""" + +:doc:`pair_coeff `, :doc:`pair_style `, +:doc:`pair style coul/long and coul/dsf `, +:doc:`pair style morse ` + +Default +""""""" + +none + +------------- + +.. _Pedone: + +**(Pedone)** A. Pedone, G. Malavasi, M. C. Menziani, A. N. Cormack, and U. Segre, J. Phys. Chem. B, 110, 11780 (2006) diff --git a/doc/src/pair_rebomos.rst b/doc/src/pair_rebomos.rst new file mode 100644 index 00000000000..05be4732568 --- /dev/null +++ b/doc/src/pair_rebomos.rst @@ -0,0 +1,150 @@ +.. index:: pair_style rebomos +.. index:: pair_style rebomos/omp + +pair_style rebomos command +========================== + +Accelerator Variants: *rebomos/omp* + +Syntax +"""""" + +.. code-block:: LAMMPS + + pair_style rebomos + +* rebomos = name of this pair style + +Examples +"""""""" + +.. code-block:: LAMMPS + + pair_style rebomos + pair_coeff * * ../potentials/MoS.rebomos Mo S + +Example input scripts available: examples/threebody/ + +Description +""""""""""" + +.. versionadded:: 17Apr2024 + +The *rebomos* pair style computes the interactions between molybdenum +and sulfur atoms :ref:`(Stewart) ` utilizing an adaptive +interatomic reactive empirical bond order potential that is similar in +form to the AIREBO potential :ref:`(Stuart) `. The potential +is based on an earlier parameterizations for :math:`\text{MoS}_2` +developed by :ref:`(Liang) `. + +The REBOMoS potential consists of two terms: + +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} + \left[ E^{\text{REBO}}_{ij} + E^{\text{LJ}}_{ij} \right] \\ + +The :math:`E^{\text{REBO}}` term describes the covalently bonded +interactions between Mo and S atoms while the :math:`E^{\text{LJ}}` term +describes longer range dispersion forces between layers. A cubic spline +function is applied to smoothly switch between covalent bonding at short +distances to dispersion interactions at longer distances. This allows +the model to capture bond formation and breaking events which may occur +between adjacent MoS2 layers, edges, defects, and more. + +---------- + +Only a single pair_coeff command is used with the *rebomos* pair style +which specifies an REBOMoS potential file with parameters for Mo and S. +These are mapped to LAMMPS atom types by specifying N additional +arguments after the filename in the pair_coeff command, where N is the +number of LAMMPS atom types: + +* filename +* :math:`N` element names = mapping of REBOMoS elements to atom types + +See the :doc:`pair_coeff ` page for alternate ways +to specify the path for the potential file. + +As an example, if your LAMMPS simulation has three atom types and you want +the first two to be Mo, and the third to be S, you would use the following +pair_coeff command: + +.. code-block:: LAMMPS + + pair_coeff * * MoS.rebomos Mo Mo S + +The first 2 arguments must be \* \* so as to span all LAMMPS atom types. +The first two Mo arguments map LAMMPS atom types 1 and 2 to the Mo +element in the REBOMoS file. The final S argument maps LAMMPS atom type +3 to the S element in the REBOMoS file. If a mapping value is specified +as NULL, the mapping is not performed. This can be used when a +*rebomos* potential is used as part of the *hybrid* pair style. The +NULL values are placeholders for atom types that will be used with other +potentials. + +---------- + +.. include:: accel_styles.rst + +---------- + +Mixing, shift, table, tail correction, restart, rRESPA info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This pair style does not support the :doc:`pair_modify ` +mix, shift, table, and tail options. + +This pair style does not write their information to :doc:`binary restart +files `, since it is stored in potential files. Thus, you need +to re-specify the pair_style and pair_coeff commands in an input script +that reads a restart file. + +This pair styles can only be used via the *pair* keyword of the +:doc:`run_style respa ` command. It does not support the +*inner*, *middle*, *outer* keywords. + +Restrictions +"""""""""""" + +This pair style is part of the MANYBODY package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +These pair potentials require the :doc:`newton ` setting to be +"on" for pair interactions. + +The MoS.rebomos potential file provided with LAMMPS (see the potentials +directory) is parameterized for metal :doc:`units `. You can use +the *rebomos* pair style with any LAMMPS units setting, but you would +need to create your own REBOMoS potential file with coefficients listed +in the appropriate units. + +The pair style provided here **only** supports potential files parameterized +for the elements molybdenum and sulfur (designated with "Mo" and "S" in the +*pair_coeff* command. Using potential files for other elements will trigger +an error. + +Related commands +"""""""""""""""" + +:doc:`pair_coeff `, :doc:`pair style rebo ` + +Default +""""""" + +none + +---------- + +.. _Stewart: + +**(Steward)** Stewart, Spearot, Modelling Simul. Mater. Sci. Eng. 21, 045003, (2013). + +.. _Stuart2: + +**(Stuart)** Stuart, Tutein, Harrison, J Chem Phys, 112, 6472-6486, (2000). + +.. _Liang: + +**(Liang)** Liang, Phillpot, Sinnott Phys. Rev. B79 245110, (2009), Erratum: Phys. Rev. B85 199903(E), (2012) diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index a2467bff2b7..74dfce6b01d 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -275,30 +275,30 @@ accelerated styles exist. * :doc:`lj/smooth/linear ` - linear smoothed LJ potential * :doc:`lj/switch3/coulgauss/long ` - smoothed LJ vdW potential with Gaussian electrostatics * :doc:`lj96/cut ` - Lennard-Jones 9/6 potential -* :doc:`local/density ` - generalized basic local density potential -* :doc:`lubricate ` - hydrodynamic lubrication forces -* :doc:`lubricate/poly ` - hydrodynamic lubrication forces with polydispersity -* :doc:`lubricateU ` - hydrodynamic lubrication forces for Fast Lubrication Dynamics -* :doc:`lubricateU/poly ` - hydrodynamic lubrication forces for Fast Lubrication with polydispersity +* :doc:`local/density ` - Generalized basic local density potential +* :doc:`lubricate ` - Hydrodynamic lubrication forces +* :doc:`lubricate/poly ` - Hydrodynamic lubrication forces with polydispersity +* :doc:`lubricateU ` - Hydrodynamic lubrication forces for Fast Lubrication Dynamics +* :doc:`lubricateU/poly ` - Hydrodynamic lubrication forces for Fast Lubrication with polydispersity * :doc:`mdpd ` - mDPD particle interactions * :doc:`mdpd/rhosum ` - mDPD particle interactions for mass density -* :doc:`meam ` - modified embedded atom method (MEAM) -* :doc:`meam/ms ` - multi-state modified embedded atom method (MS-MEAM) -* :doc:`meam/spline ` - splined version of MEAM -* :doc:`meam/sw/spline ` - splined version of MEAM with a Stillinger-Weber term -* :doc:`mesocnt ` - mesoscopic vdW potential for (carbon) nanotubes -* :doc:`mesocnt/viscous ` - mesoscopic vdW potential for (carbon) nanotubes with friction -* :doc:`mgpt ` - simplified model generalized pseudopotential theory (MGPT) potential +* :doc:`meam ` - Modified embedded atom method (MEAM) +* :doc:`meam/ms ` - Multi-state modified embedded atom method (MS-MEAM) +* :doc:`meam/spline ` - Splined version of MEAM +* :doc:`meam/sw/spline ` - Splined version of MEAM with a Stillinger-Weber term +* :doc:`mesocnt ` - Mesoscopic vdW potential for (carbon) nanotubes +* :doc:`mesocnt/viscous ` - Mesoscopic vdW potential for (carbon) nanotubes with friction +* :doc:`mgpt ` - Simplified model generalized pseudopotential theory (MGPT) potential * :doc:`mie/cut ` - Mie potential -* :doc:`mm3/switch3/coulgauss/long ` - smoothed MM3 vdW potential with Gaussian electrostatics +* :doc:`mm3/switch3/coulgauss/long ` - Smoothed MM3 vdW potential with Gaussian electrostatics * :doc:`momb ` - Many-Body Metal-Organic (MOMB) force field * :doc:`morse ` - Morse potential -* :doc:`morse/smooth/linear ` - linear smoothed Morse potential +* :doc:`morse/smooth/linear ` - Linear smoothed Morse potential * :doc:`morse/soft ` - Morse potential with a soft core * :doc:`multi/lucy ` - DPD potential with density-dependent force * :doc:`multi/lucy/rx ` - reactive DPD potential with density-dependent force -* :doc:`nb3b/harmonic ` - non-bonded 3-body harmonic potential -* :doc:`nb3b/screened ` - non-bonded 3-body screened harmonic potential +* :doc:`nb3b/harmonic ` - Non-bonded 3-body harmonic potential +* :doc:`nb3b/screened ` - Non-bonded 3-body screened harmonic potential * :doc:`nm/cut ` - N-M potential * :doc:`nm/cut/coul/cut ` - N-M potential with cutoff Coulomb * :doc:`nm/cut/coul/long ` - N-M potential with long-range Coulomb @@ -322,20 +322,22 @@ accelerated styles exist. * :doc:`oxrna2/xstk ` - * :doc:`pace ` - Atomic Cluster Expansion (ACE) machine-learning potential * :doc:`pace/extrapolation ` - Atomic Cluster Expansion (ACE) machine-learning potential with extrapolation grades +* :doc:`pedone ` - Pedone (PMMCS) potential (non-Coulomb part) * :doc:`pod ` - Proper orthogonal decomposition (POD) machine-learning potential -* :doc:`peri/eps ` - peridynamic EPS potential -* :doc:`peri/lps ` - peridynamic LPS potential -* :doc:`peri/pmb ` - peridynamic PMB potential -* :doc:`peri/ves ` - peridynamic VES potential -* :doc:`polymorphic ` - polymorphic 3-body potential +* :doc:`peri/eps ` - Peridynamic EPS potential +* :doc:`peri/lps ` - Peridynamic LPS potential +* :doc:`peri/pmb ` - Peridynamic PMB potential +* :doc:`peri/ves ` - Peridynamic VES potential +* :doc:`polymorphic ` - Polymorphic 3-body potential * :doc:`python ` - * :doc:`quip ` - * :doc:`rann ` - * :doc:`reaxff ` - ReaxFF potential -* :doc:`rebo ` - second generation REBO potential of Brenner +* :doc:`rebo ` - Second generation REBO potential of Brenner +* :doc:`rebomos ` - REBOMoS potential for MoS2 * :doc:`resquared ` - Everaers RE-Squared ellipsoidal potential -* :doc:`saip/metal ` - interlayer potential for hetero-junctions formed with hexagonal 2D materials and metal surfaces -* :doc:`sdpd/taitwater/isothermal ` - smoothed dissipative particle dynamics for water at isothermal conditions +* :doc:`saip/metal ` - Interlayer potential for hetero-junctions formed with hexagonal 2D materials and metal surfaces +* :doc:`sdpd/taitwater/isothermal ` - Smoothed dissipative particle dynamics for water at isothermal conditions * :doc:`smatb ` - Second Moment Approximation to the Tight Binding * :doc:`smatb/single ` - Second Moment Approximation to the Tight Binding for single-element systems * :doc:`smd/hertz ` - diff --git a/doc/src/processors.rst b/doc/src/processors.rst index 921bbcc667d..f9097903047 100644 --- a/doc/src/processors.rst +++ b/doc/src/processors.rst @@ -25,6 +25,8 @@ Syntax *numa* params = none *custom* params = infile infile = file containing grid layout + *numa_nodes* arg = Nn + Nn = number of numa domains per node *map* arg = *cart* or *cart/reorder* or *xyz* or *xzy* or *yxz* or *yzx* or *zxy* or *zyx* cart = use MPI_Cart() methods to map processors to 3d grid with reorder = 0 cart/reorder = use MPI_Cart() methods to map processors to 3d grid with reorder = 1 @@ -157,26 +159,30 @@ surface-to-volume ratio of each processor's subdomain. for most MPI implementations, but some MPIs provide options for this ordering, e.g. via environment variable settings. -The *numa* style operates similar to the *twolevel* keyword except -that it auto-detects which cores are running on which nodes. -Currently, it does this in only 2 levels, but it may be extended in -the future to account for socket topology and other non-uniform memory -access (NUMA) costs. It also uses a different algorithm than the -*twolevel* keyword for doing the two-level factorization of the -simulation box into a 3d processor grid to minimize off-node -communication, and it does its own MPI-based mapping of nodes and -cores to the regular 3d grid. Thus it may produce a different layout -of the processors than the *twolevel* options. +The *numa* style operates similar to the *twolevel* keyword except that +it auto-detects which cores are running on which nodes. It will also +subdivide the cores into numa domains. Currently, the number of numa +domains is not auto-detected and must be specified using the +*numa_nodes* keyword; otherwise, the default value is used. The *numa* +style uses a different algorithm than the *twolevel* keyword for doing +the two-level factorization of the simulation box into a 3d processor +grid to minimize off-node communication and communication across numa +domains. It does its own MPI-based mapping of nodes and cores to the +regular 3d grid. Thus it may produce a different layout of the +processors than the *twolevel* options. The *numa* style will give an error if the number of MPI processes is not divisible by the number of cores used per node, or any of the Px -or Py of Pz values is greater than 1. +or Py or Pz values is greater than 1. .. note:: Unlike the *twolevel* style, the *numa* style does not require - any particular ordering of MPI ranks i norder to work correctly. This + any particular ordering of MPI ranks in order to work correctly. This is because it auto-detects which processes are running on which nodes. + However, it assumes that the lowest ranks are in the first numa + domain, and so forth. MPI rank orderings that do not preserve this + property might result in more intra-node communication between CPUs. The *custom* style uses the file *infile* to define both the 3d factorization and the mapping of processors to the grid. @@ -207,6 +213,14 @@ any order, but no processor ID should appear more than once. ---------- +The *numa_nodes* keyword is used to specify the number of numa domains +per node. It is currently only used by the *numa* style for two-level +factorization to reduce the amount of MPI communications between CPUs. +A good setting for this will typically be equal to the number of CPU +sockets per node. + +---------- + The *map* keyword affects how the P processor IDs (from 0 to P-1) are mapped to the 3d grid of processors. It is only used by the *onelevel* and *twolevel* grid settings. @@ -356,5 +370,5 @@ Related commands Default """"""" -The option defaults are Px Py Pz = \* \* \*, grid = onelevel, and map = -cart. +The option defaults are Px Py Pz = \* \* \*, grid = onelevel, map = +cart, and numa_nodes = 2. diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 0ecd2b6fa23..dd2f42e2a8d 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -63,11 +63,16 @@ Description Read in a data file containing information LAMMPS needs to run a simulation. The file can be ASCII text or a gzipped text file -(detected by a .gz suffix). This is one of 3 ways to specify initial -atom coordinates; see the :doc:`read_restart ` and -:doc:`create_atoms ` commands for alternative methods. -Also see the explanation of the :doc:`-restart command-line switch -` which can convert a restart file to a data file. +(detected by a .gz suffix). + +This is one of 3 ways to specify the simulation box: see the +:doc:`create_box ` and :doc:`read_restart ` +and commands for alternative methods. It is also one of 3 ways to +specify initial atom coordinates: see the :doc:`create_atoms +` and :doc:`read_restart ` and commands +for alternative methods. Also see the explanation of the +:doc:`-restart command-line switch ` which can convert a +restart file to a data file. This command can be used multiple times to add new atoms and their properties to an existing system by using the *add*, *offset*, and @@ -122,37 +127,55 @@ keyword must be used. .. note:: - The simulation box size (xlo to xhi, ylo to yhi, zlo to zhi) in - the new data file will be merged with the existing simulation box to - create a large enough box in each dimension to contain both the - existing and new atoms. Each box dimension never shrinks due to this - merge operation, it only stays the same or grows. Care must be used if - you are growing the existing simulation box in a periodic dimension. - If there are existing atoms with bonds that straddle that periodic - boundary, then the atoms may become far apart if the box size grows. - This will separate the atoms in the bond, which can lead to "lost" - bond atoms or bad dynamics. + If the first read_data command defined an orthogonal or restricted + triclinic or general triclinic simulation box (see the sub-section + below on header keywords), then subsequent data files must define + the same kind of simulation box. For orthogonal boxes, the new box + can be a different size; see the next Note. For a restricted + triclinic box, the 3 new tilt factors ("xy xz yz" keyword) must + have the same values as in the original data file. For a general + triclinic box, the new avec, bvec, cvec, and "abc origin" keywords + must have the same values in the original data file. files. Also + the *shift* keyword cannot be used in subsequent read_data commands + for a general triclinic box. + +.. note:: + + For orthogonal boxes, the simulation box size in the new data file + will be merged with the existing simulation box to create a large + enough box in each dimension to contain both the existing and new + atoms. Each box dimension never shrinks due to this merge + operation, it only stays the same or grows. Care must be used if + you are growing the existing simulation box in a periodic + dimension. If there are existing atoms with bonds that straddle + that periodic boundary, then the atoms may become far apart if the + box size grows. This will separate the atoms in the bond, which + can lead to "lost" bond atoms or bad dynamics. The three choices for the *add* argument affect how the atom IDs and -molecule IDs of atoms in the data file are treated. If *append* is -specified, atoms in the data file are added to the current system, -with their atom IDs reset so that an atom-ID = M in the data file -becomes atom-ID = N+M, where N is the largest atom ID in the current -system. This rule is applied to all occurrences of atom IDs in the -data file, e.g. in the Velocity or Bonds section. This is also done -for molecule IDs, if the atom style does support molecule IDs or -they are enabled via fix property/atom. If *IDoffset* is specified, -then *IDoffset* is a numeric value is given, e.g. 1000, so that an -atom-ID = M in the data file becomes atom-ID = 1000+M. For systems -with enabled molecule IDs, another numerical argument *MOLoffset* -is required representing the equivalent offset for molecule IDs. -If *merge* is specified, the data file atoms -are added to the current system without changing their IDs. They are -assumed to merge (without duplication) with the currently defined -atoms. It is up to you to ensure there are no multiply defined atom -IDs, as LAMMPS only performs an incomplete check that this is the case -by ensuring the resulting max atom-ID >= the number of atoms. For -molecule IDs, there is no check done at all. +molecule IDs of atoms in the data file are treated. + +If *append* is specified, atoms in the data file are added to the +current system, with their atom IDs reset so that an atom-ID = M in +the data file becomes atom-ID = N+M, where N is the largest atom ID in +the current system. This rule is applied to all occurrences of atom +IDs in the data file, e.g. in the Velocity or Bonds section. This is +also done for molecule IDs, if the atom style does support molecule +IDs or they are enabled via fix property/atom. + +If *IDoffset* is specified, then *IDoffset* is a numeric value is +given, e.g. 1000, so that an atom-ID = M in the data file becomes +atom-ID = 1000+M. For systems with enabled molecule IDs, another +numerical argument *MOLoffset* is required representing the equivalent +offset for molecule IDs. + +If *merge* is specified, the data file atoms are added to the current +system without changing their IDs. They are assumed to merge (without +duplication) with the currently defined atoms. It is up to you to +ensure there are no multiply defined atom IDs, as LAMMPS only performs +an incomplete check that this is the case by ensuring the resulting +max atom-ID >= the number of atoms. For molecule IDs, there is no +check done at all. The *offset* and *shift* keywords can only be used if the *add* keyword is also specified. @@ -288,13 +311,16 @@ Format of the header of a data file """"""""""""""""""""""""""""""""""" These are the recognized header keywords. Header lines can come in -any order. The value(s) are read from the beginning of the line. +any order. Each keyword takes a single value unless noted in this +list. The value(s) are read from the beginning of the line. Thus the keyword *atoms* should be in a line like "1000 atoms"; the keyword *ylo yhi* should be in a line like "-10.0 10.0 ylo yhi"; the keyword *xy xz yz* should be in a line like "0.0 5.0 6.0 xy xz yz". -All these settings have a default value of 0, except the lo/hi box -size defaults are -0.5 and 0.5. A line need only appear if the value -is different than the default. + +All these settings have a default value of 0, except for the +simulation box size settings; their defaults are explained below. A +keyword line need only appear if its value is different than the +default. * *atoms* = # of atoms in system * *bonds* = # of bonds in system @@ -315,81 +341,178 @@ is different than the default. * *lines* = # of line segments in system * *triangles* = # of triangles in system * *bodies* = # of bodies in system -* *xlo xhi* = simulation box boundaries in x dimension -* *ylo yhi* = simulation box boundaries in y dimension -* *zlo zhi* = simulation box boundaries in z dimension -* *xy xz yz* = simulation box tilt factors for triclinic system - -The initial simulation box size is determined by the lo/hi settings. -In any dimension, the system may be periodic or non-periodic; see the -:doc:`boundary ` command. When the simulation box is created -it is also partitioned into a regular 3d grid of rectangular bricks, -one per processor, based on the number of processors being used and -the settings of the :doc:`processors ` command. The -partitioning can later be changed by the :doc:`balance ` or -:doc:`fix balance ` commands. - -If the *xy xz yz* line does not appear, LAMMPS will set up an -axis-aligned (orthogonal) simulation box. If the line does appear, -LAMMPS creates a non-orthogonal simulation domain shaped as a -parallelepiped with triclinic symmetry. The parallelepiped has its -"origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors starting -from the origin given by A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C = -(xz,yz,zhi-zlo). *Xy,xz,yz* can be 0.0 or positive or negative values -and are called "tilt factors" because they are the amount of -displacement applied to faces of an originally orthogonal box to -transform it into the parallelepiped. - -The tilt factors (xy,xz,yz) should not skew the box more than half the -distance of the corresponding parallel box length. For example, if -:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x` -box length is 10 and the :math:`xy` tilt factor must be between -:math:`-5` and :math:`5`. Similarly, both :math:`xz` and :math:`yz` -must be between :math:`-(x_\text{hi}-x_\text{lo})/2` and -:math:`+(y_\text{hi}-y_\text{lo})/2`. Note that this is not a -limitation, since if the maximum tilt factor is 5 (as in this example), -then configurations with tilt :math:`= \dots, -15`, :math:`-5`, -:math:`5`, :math:`15`, :math:`25, \dots` are all geometrically -equivalent. Simulations with large tilt factors will run inefficiently, -since they require more ghost atoms and thus more communication. With -very large tilt factors, LAMMPS will eventually produce incorrect -trajectories and stop with errors due to lost atoms or similar. - -See the :doc:`Howto triclinic ` page for a -geometric description of triclinic boxes, as defined by LAMMPS, and -how to transform these parameters to and from other commonly used -triclinic representations. - -When a triclinic system is used, the simulation domain should normally -be periodic in the dimension that the tilt is applied to, which is -given by the second dimension of the tilt factor (e.g. y for xy tilt). -This is so that pairs of atoms interacting across that boundary will -have one of them shifted by the tilt factor. Periodicity is set by -the :doc:`boundary ` command. For example, if the xy tilt -factor is non-zero, then the y dimension should be periodic. -Similarly, the z dimension should be periodic if xz or yz is non-zero. -LAMMPS does not require this periodicity, but you may lose atoms if -this is not the case. - -Also note that if your simulation will tilt the box, e.g. via the -:doc:`fix deform ` command, the simulation box must be setup -to be triclinic, even if the tilt factors are initially 0.0. You can -also change an orthogonal box to a triclinic box or vice versa by using -the :doc:`change box ` command with its *ortho* and -*triclinic* options. - -For 2d simulations, the *zlo zhi* values should be set to bound the z -coords for atoms that appear in the file; the default of -0.5 0.5 is -valid if all z coords are 0.0. For 2d triclinic simulations, the xz -and yz tilt factors must be 0.0. +* *xlo xhi* = simulation box boundaries in x dimension (2 values) +* *ylo yhi* = simulation box boundaries in y dimension (2 values) +* *zlo zhi* = simulation box boundaries in z dimension (2 values) +* *xy xz yz* = simulation box tilt factors for triclinic system (3 values) +* *avec* = first edge vector of a general triclinic simulation box (3 values) +* *bvec* = second edge vector of a general triclinic simulation box (3 values) +* *cvec* = third edge vector of a general triclinic simulation box (3 values) +* *abc origin* = origin of a general triclinic simulation box (3 values) + +---------- + +Header specification of the simulation box size and shape +""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +The last 8 keywords in the list of header keywords are for simulation +boxes of 3 kinds which LAMMPS supports: + +* orthogonal box = faces are perpendicular to the xyz coordinate axes +* restricted triclinic box = a parallelepiped defined by 3 edge vectors oriented in a constrained manner +* general triclinic box = a parallelepiped defined by 3 arbitrary edge vectors + +For restricted and general triclinic boxes, see the +:doc:`Howto_triclinic ` doc page for a fuller +description than is given here. + +The units of the values for all 8 keywords in in distance units; see +the :doc:`units ` command for details. + +For all 3 kinds of simulation boxes, the system may be periodic or +non-periodic in any dimension; see the :doc:`boundary ` +command for details. + +When the simulation box is created by the read_data command, it is +also partitioned into a regular 3d grid of subdomains, one per +processor, based on the number of processors being used and the +settings of the :doc:`processors ` command. For each kind +of simulation box the subdomains have the same shape as the simulation +box, i.e. smaller orthogonal bricks for orthogonal boxes, smaller +parallelepipeds for triclinic boxes. The partitioning can later be +changed by the :doc:`balance ` or :doc:`fix balance +` commands. + +For an orthogonal box, only the *xlo xhi*, *ylo yhi*, *zlo zhi* +keywords are used. They define the extent of the simulation box in +each dimension so that the resulting edge vectors of an orthogonal box +are: + +* **A** = (xhi-xlo,0,0) +* **B** = (0,yhi-ylo,0) +* **C** = (0,0,zhi-zlo) + +The origin (lower left corner) of the orthogonal box is at +(xlo,ylo,zlo). The default values for these 3 keywords are -0.5 and +0.5 for each lo/hi pair. For a 2d simulation, the zlo and zhi values +must straddle zero. The default zlo/zhi values do this, so that +keyword is not needed in 2d. + +For a restricted triclinic box, the *xy xz yz* keyword is used in +addition to the *xlo xhi*, *ylo yhi*, *zlo zhi* keywords. The three +*xy,xz,yz* values can be 0.0 or positive or negative, and are called +"tilt factors" because they are the amount of displacement applied to +edges of faces of an orthogonal box to transform it into a restricted +triclinic parallelepiped. + +The :doc:`Howto_triclinic ` doc page discusses the +tilt factors in detail and explains that the resulting edge vectors of +a restricted triclinic box are: + +* **A** = (xhi-xlo,0,0) +* **B** = (xy,yhi-ylo,0) +* **C** = (xz,yz,zhi-zlo) + +This restricted form of edge vectors requires that **A** be in the +direction of the x-axis, **B** be in the xy plane with its y-component +in the +y direction, and **C** have its z-component in the +z +direction. The origin (lower left corner) of the restricted triclinic +box is at (xlo,ylo,zlo). + +For a 2d simulation, the zlo and zhi values must straddle zero. The +default zlo/zhi values do this, so that keyword is not needed in 2d. +The xz and yz values must also be zero in 2d. The shape of the 2d +restricted triclinic simulation box is effectively a parallelogram. + +.. note:: + + When a restricted triclinic box is used, the simulation domain + should normally be periodic in any dimensions that tilt is applied + to, which is given by the second dimension of the tilt factor + (e.g. y for xy tilt). This is so that pairs of atoms interacting + across that boundary will have one of them shifted by the tilt + factor. Periodicity is set by the :doc:`boundary ` + command which also describes the shifting by the tilt factor. For + example, if the xy tilt factor is non-zero, then the y dimension + should be periodic. Similarly, the z dimension should be periodic + if xz or yz is non-zero. LAMMPS does not require this periodicity, + but you may lose atoms if this is not the case. + +.. note:: + + Normally, the specified tilt factors (xy,xz,yz) should not skew the + simulation box by more than half the distance of the corresponding + parallel box length for computational efficiency. For example, if + :math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the + :math:`x` box length is 10 and the :math:`xy` tilt factor should be + between :math:`-5` and :math:`5`. LAMMPS will issue a warning if + this is not the case. See the last sub-section of the + :doc:`Howto_triclinic ` doc page for more details. + +.. note:: + + If a simulation box is initially orthogonal, but will tilt during a + simulation, e.g. via the :doc:`fix deform ` command, + then the box should be defined as restricted triclinic with all 3 + tilt factors = 0.0. Alternatively, the :doc:`change box + ` command can be used to convert an orthogonal box to a + restricted triclinic box. + +For a general triclinic box, the *avec*, *bvec*, *cvec*, and *abc +origin* keywords are used. The *xlo xhi*, *ylo yhi*, *zlo zhi*, and +*xy xz yz* keywords are NOT used. The first 3 keywords define the 3 +edge vectors **A**, **B**, **C** of the general triclinic box. They +can be arbitrary vectors so long as they are distinct, non-zero, and +not co-planar. They must also define a right-handed system such that +(**A** x **B**) points in the direction of **C**. Note that a +left-handed system can be converted to a right-handed system by simply +swapping the order of any pair of the **A**, **B**, **C** vectors. +The origin of the box (origin of the 3 edge vectors) is set by the +*abc origin* keyword. + +The default values for these 4 keywords are as follows: + +* avec = (1,0,0) +* bvec = (0,1,0) +* cvec = (0,0,1) +* abc origin = (0,0,0) for 3d, (0,0,-0.5) for 2d + +For 2d simulations, *cvec* = (0,0,1) is required, and the 3rd value of +*abc origin* must be -0.5. These are the default values, so the +*cvec* keyword is not needed in 2d. + +.. note:: + + LAMMPS allows specification of general triclinic simulation boxes + as a convenience for users who may be converting data from + solid-state crystallographic representations or from DFT codes for + input to LAMMPS. However, as explained on the + :doc:`Howto_triclinic ` doc page, internally, + LAMMPS only uses restricted triclinic simulation boxes. This means + the box and per-atom information (e.g. coordinates, velocities) in + the data file are converted (rotated) from general to restricted + triclinic form when the file is read. Other sections of the data + file must also list their per-atom data appropriately if vector + quantities are specified. This requirement is explained below for + the relevant sections. The :doc:`Howto_triclinic + ` doc page also discusses other LAMMPS commands + which can input/output general triclinic representations of the + simulation box and per-atom data. + +The following explanations apply to all 3 kinds of simulation boxes: +orthogonal, restricted triclinic, and general triclinic. If the system is periodic (in a dimension), then atom coordinates can be outside the bounds (in that dimension); they will be remapped (in a -periodic sense) back inside the box. Note that if the *add* option is -being used to add atoms to a simulation box that already exists, this -periodic remapping will be performed using simulation box bounds that -are the union of the existing box and the box boundaries in the new -data file. +periodic sense) back inside the box. For triclinic boxes, periodicity +in x,y,z refers to the faces of the parallelepiped defined by the +**A**,**B**,**C** edge vectors of the simulation box. See the +:doc:`boundary ` command doc page for a fuller discussion. + +Note that if the *add* option is being used to add atoms to a +simulation box that already exists, this periodic remapping will be +performed using simulation box bounds that are the union of the +existing box and the box boundaries in the new data file. If the system is non-periodic (in a dimension), then an image flag for that direction has no meaning, since there cannot be periodic images @@ -406,7 +529,6 @@ individually back into the principal unit cell in that direction. This operation is equivalent to the behavior of the :doc:`change_box command ` when used to change periodicity. - If those atoms with non-zero image flags are involved in bonded interactions, this reset can lead to undesired changes, when the image flag values differ between the atoms, i.e. the bonded interaction @@ -421,73 +543,81 @@ needed, so that the image flag would be zero. .. note:: - If the system is non-periodic (in a dimension), then all atoms in the - data file must have coordinates (in that dimension) that are "greater - than or equal to" the lo value and "less than or equal to" the hi - value. If the non-periodic dimension is of style "fixed" (see the - :doc:`boundary ` command), then the atom coords must be - strictly "less than" the hi value, due to the way LAMMPS assign atoms - to processors. Note that you should not make the lo/hi values - radically smaller/larger than the extent of the atoms. For example, - if your atoms extend from 0 to 50, you should not specify the box - bounds as -10000 and 10000 unless you also use the :doc:`processors - command `. This is because LAMMPS uses the specified box - size to layout the 3d grid of processors. A huge (mostly empty) box - will be sub-optimal for performance when using "fixed" boundary - conditions (see the :doc:`boundary ` command). When using - "shrink-wrap" boundary conditions (see the :doc:`boundary ` - command), a huge (mostly empty) box may cause a parallel simulation - to lose atoms when LAMMPS shrink-wraps the box around the atoms. The - read_data command will generate an error in this case. + If the system is non-periodic (in a dimension), then all atoms in + the data file must have coordinates (in that dimension) that are + "greater than or equal to" the lo value and "less than or equal to" + the hi value. If the non-periodic dimension is of style "fixed" + (see the :doc:`boundary ` command), then the atom coords + must be strictly "less than" the hi value, due to the way LAMMPS + assign atoms to processors. Note that you should not make the + lo/hi values radically smaller/larger than the extent of the atoms. + For example, if atoms extend from 0 to 50, you should not specify + the box bounds as -10000 and 10000 unless you also use the + :doc:`processors command `. This is because LAMMPS + uses the specified box size to layout the 3d grid of processors. A + huge (mostly empty) box will be sub-optimal for performance when + using "fixed" boundary conditions (see the :doc:`boundary + ` command). When using "shrink-wrap" boundary conditions + (see the :doc:`boundary ` command), a huge (mostly empty) + box may cause a parallel simulation to lose atoms when LAMMPS + shrink-wraps the box around the atoms. The read_data command will + generate an error in this case. + +---------- + +Meaning of other header keywords +"""""""""""""""""""""""""""""""" The "extra bond per atom" setting (angle, dihedral, improper) is only needed if new bonds (angles, dihedrals, impropers) will be added to -the system when a simulation runs, e.g. by using the :doc:`fix bond/create ` command. Using this header flag -is deprecated; please use the *extra/bond/per/atom* keyword (and +the system when a simulation runs, e.g. by using the :doc:`fix +bond/create ` command. Using this header flag is +deprecated; please use the *extra/bond/per/atom* keyword (and correspondingly for angles, dihedrals and impropers) in the read_data command instead. Either will pre-allocate space in LAMMPS data structures for storing the new bonds (angles, dihedrals, impropers). The "extra special per atom" setting is typically only needed if new -bonds/angles/etc will be added to the system, e.g. by using the :doc:`fix bond/create ` command. Or if entire new molecules -will be added to the system, e.g. by using the -:doc:`fix deposit ` or :doc:`fix pour ` commands, -which will have more special 1-2,1-3,1-4 neighbors than any other -molecules defined in the data file. Using this header flag is -deprecated; please use the *extra/special/per/atom* keyword instead. -Using this setting will pre-allocate space in the LAMMPS data -structures for storing these neighbors. See the -:doc:`special_bonds ` and :doc:`molecule ` doc -pages for more discussion of 1-2,1-3,1-4 neighbors. +bonds/angles/etc will be added to the system, e.g. by using the +:doc:`fix bond/create ` command. Or if entire new +molecules will be added to the system, e.g. by using the :doc:`fix +deposit ` or :doc:`fix pour ` commands, which +will have more special 1-2,1-3,1-4 neighbors than any other molecules +defined in the data file. Using this header flag is deprecated; +please use the *extra/special/per/atom* keyword instead. Using this +setting will pre-allocate space in the LAMMPS data structures for +storing these neighbors. See the :doc:`special_bonds ` +and :doc:`molecule ` doc pages for more discussion of +1-2,1-3,1-4 neighbors. .. note:: - All of the "extra" settings are only applied in the first data - file read and when no simulation box has yet been created; as soon as + All of the "extra" settings are only applied in the first data file + read and when no simulation box has yet been created; as soon as the simulation box is created (and read_data implies that), these settings are *locked* and cannot be changed anymore. Please see the - description of the *add* keyword above for reading multiple data files. - If they appear in later data files, they are ignored. + description of the *add* keyword above for reading multiple data + files. If they appear in later data files, they are ignored. The "ellipsoids" and "lines" and "triangles" and "bodies" settings are -only used with :doc:`atom_style ellipsoid or line or tri or body ` and specify how many of the atoms are -finite-size ellipsoids or lines or triangles or bodies; the remainder -are point particles. See the discussion of ellipsoidflag and the -*Ellipsoids* section below. See the discussion of lineflag and the -*Lines* section below. See the discussion of triangleflag and the -*Triangles* section below. See the discussion of bodyflag and the -*Bodies* section below. +only used with :doc:`atom_style ellipsoid or line or tri or body +` and specify how many of the atoms are finite-size +ellipsoids or lines or triangles or bodies; the remainder are point +particles. See the discussion of ellipsoidflag and the *Ellipsoids* +section below. See the discussion of lineflag and the *Lines* section +below. See the discussion of triangleflag and the *Triangles* section +below. See the discussion of bodyflag and the *Bodies* section below. .. note:: - For :doc:`atom_style template `, the molecular - topology (bonds,angles,etc) is contained in the molecule templates - read-in by the :doc:`molecule ` command. This means you - cannot set the *bonds*, *angles*, etc header keywords in the data - file, nor can you define *Bonds*, *Angles*, etc sections as discussed + For :doc:`atom_style template `, the molecular topology + (bonds,angles,etc) is contained in the molecule templates read-in + by the :doc:`molecule ` command. This means you cannot + set the *bonds*, *angles*, etc header keywords in the data file, + nor can you define *Bonds*, *Angles*, etc sections as discussed below. You can set the *bond types*, *angle types*, etc header - keywords, though it is not necessary. If specified, they must match - the maximum values defined in any of the template molecules. + keywords, though it is not necessary. If specified, they must + match the maximum values defined in any of the template molecules. ---------- @@ -680,6 +810,19 @@ 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. +.. note:: + + For orthogonal and restricted and general triclinic simulation + boxes, the atom coordinates (x,y,z) listed in this section should + be inside the corresponding simulation box. For restricted + triclinic boxes that means the parallelepiped defined by the *xlo + xhi*, *ylo yhi*, *zlo zhi*, and *xy xz yz*, keywords. For general + triclinic boxes that means the parallelepiped defined by the 3 edge + vectors and origin specified by the *avec*, *bvec*, *cvec*, and + *abc origin* header keywords. See the discussion in the header + section above about how atom coordinates outside the simulation box + are (or are not) remapped to be inside the box. + .. list-table:: * - angle @@ -690,10 +833,12 @@ of analysis. - atom-ID atom-type bodyflag mass x y z * - bond - atom-ID molecule-ID atom-type x y z + * - bpm/sphere + - atom-ID molecule-ID atom-type diameter density x y z * - charge - atom-ID atom-type q x y z * - dielectric - - atom-ID atom-type q x y z normx normy normz area ed em epsilon curvature + - atom-ID atom-type q x y z mux muy muz area ed em epsilon curvature * - dipole - atom-ID atom-type q x y z mux muy muz * - dpd @@ -720,8 +865,6 @@ of analysis. - atom-ID atom-type rho esph cv x y z * - sphere - atom-ID atom-type diameter density x y z - * - bpm/sphere - - atom-ID molecule-ID atom-type diameter density x y z * - spin - atom-ID atom-type x y z spx spy spz sp * - tdpd @@ -757,24 +900,42 @@ The per-atom values have these meanings and units, listed alphabetically: * lineflag = 1 for line segment particles, 0 for point or spherical particles * mass = mass of particle (mass units) * molecule-ID = integer ID of molecule the atom belongs to -* mux,muy,muz = components of dipole moment of atom (dipole units) +* mux,muy,muz = components of dipole moment of atom (dipole units) (see general triclinic note below) * q = charge on atom (charge units) * rho = density (need units) for SPH particles * sp = magnitude of magnetic spin of atom (Bohr magnetons) -* spx,spy,spz = components of magnetic spin of atom (unit vector) +* spx,spy,spz = components of magnetic spin of atom (unit vector) (see general triclinic note below) * 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) +* x0,y0,z0 = original (strain-free) coordinates of atom (distance + units) (see general triclinic note below) The units for these quantities depend on the unit style; see the :doc:`units ` command for details. -For 2d simulations specify z as 0.0, or a value within the *zlo zhi* -setting in the data file header. +For 2d simulations, the atom coordinate z must be specified as 0.0. +If the data file is created by another program, then z values for a 2d +simulation can be within epsilon of 0.0, and LAMMPS will force them to +zero. + +.. note:: + + If the data file defines a general triclinic box, then the + following per-atom values in the list above are per-atom vectors + which imply an orientation: (mux,muy,muz) and (spx,spy,spz). This + means they should be specified consistent with the general + triclinic box and its orientation relative to the standard x,y,z + coordinate axes. For example a dipole moment vector which will be + in the +x direction once LAMMPS converts from a general to + restricted triclinic box, should be specified in the data file in + the direction of the **A** edge vector. Likewise the (x0,y0,z0) + per-atom strain-free coordinates should be inside the general + triclinic simulation box as explained in the note above. See the + :doc:`Howto triclinic ` doc page for more details. The atom-ID is used to identify the atom throughout the simulation and in dump files. Normally, it is a unique value from 1 to Natoms for @@ -922,9 +1083,8 @@ that use unwrapped coordinates internally are as follows: Atom velocities and other atom quantities not defined above are set to 0.0 when the *Atoms* section is read. Velocities can be set later by -a *Velocities* section in the data file or by a -:doc:`velocity ` or :doc:`set ` command in the input -script. +a *Velocities* section in the data file or by a :doc:`velocity +` or :doc:`set ` command in the input script. ---------- @@ -963,8 +1123,9 @@ the "bodies" keyword. Each body can have a variable number of integer and/or floating-point values. The number and meaning of the values is defined by the body -style, as described in the :doc:`Howto body ` doc page. The -body style is given as an argument to the :doc:`atom_style body ` command. +style, as described in the :doc:`Howto body ` doc page. +The body style is given as an argument to the :doc:`atom_style body +` command. The Ninteger and Ndouble values determine how many integer and floating-point values are specified for this particle. Ninteger and @@ -1179,10 +1340,10 @@ and a general discussion of how type labels can be used. 12 1 2 1 1 0 0 0 -The *Ellipsoids* section must appear if :doc:`atom_style ellipsoid ` is used and any atoms are listed in the -*Atoms* section with an ellipsoidflag = 1. The number of ellipsoids -should be specified in the header section via the "ellipsoids" -keyword. +The *Ellipsoids* section must appear if :doc:`atom_style ellipsoid +` is used and any atoms are listed in the *Atoms* section +with an ellipsoidflag = 1. The number of ellipsoids should be +specified in the header section via the "ellipsoids" keyword. The 3 shape values specify the 3 diameters or aspect ratios of a finite-size ellipsoidal particle, when it is oriented along the 3 @@ -1200,6 +1361,12 @@ the quaternion that represents its new orientation is given by LAMMPS normalizes each atom's quaternion in case (a,b,c) is not specified as a unit vector. +If the data file defines a general triclinic box, then the quaternion +for each ellipsoid should be specified for its orientation relative to +the standard x,y,z coordinate axes. When the system is converted to a +restricted triclinic box, the ellipsoid quaternions will be altered to +reflect the new orientation of the ellipsoid. + The *Ellipsoids* section must appear after the *Atoms* section. ---------- @@ -1316,13 +1483,24 @@ is used and any atoms are listed in the *Atoms* section with a lineflag = 1. The number of lines should be specified in the header section via the "lines" keyword. -The 2 end points are the end points of the line segment. The ordering -of the 2 points should be such that using a right-hand rule to cross -the line segment with a unit vector in the +z direction, gives an -"outward" normal vector perpendicular to the line segment. +The 2 end points are the end points of the line segment. They should +be values close to the center point of the line segment specified in +the Atoms section of the data file, even if individual end points are +outside the simulation box. + +The ordering of the 2 points should be such that using a right-hand +rule to cross the line segment with a unit vector in the +z direction, +gives an "outward" normal vector perpendicular to the line segment. I.e. normal = (c2-c1) x (0,0,1). This orientation may be important for defining some interactions. +If the data file defines a general triclinic box, then the x1,y1 and +x2,y2 values for each line segment should be specified for its +orientation relative to the standard x,y,z coordinate axes. When the +system is converted to a restricted triclinic box, the x1,y1,x2,y2 +values will be altered to reflect the new orientation of the line +segment. + The *Lines* section must appear after the *Atoms* section. ---------- @@ -1444,15 +1622,27 @@ via the :doc:`pair_coeff ` command in the input script. 12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 -The *Triangles* section must appear if :doc:`atom_style tri ` is used and any atoms are listed in the *Atoms* -section with a triangleflag = 1. The number of lines should be -specified in the header section via the "triangles" keyword. +The *Triangles* section must appear if :doc:`atom_style tri +` is used and any atoms are listed in the *Atoms* section +with a triangleflag = 1. The number of lines should be specified in +the header section via the "triangles" keyword. + +The 3 corner points are the corner points of the triangle. They +should be values close to the center point of the triangle specified +in the Atoms section of the data file, even if individual corner +points are outside the simulation box. -The 3 corner points are the corner points of the triangle. The -ordering of the 3 points should be such that using a right-hand rule -to go from point1 to point2 to point3 gives an "outward" normal vector -to the face of the triangle. I.e. normal = (c2-c1) x (c3-c1). This -orientation may be important for defining some interactions. +The ordering of the 3 points should be such that using a right-hand +rule to go from point1 to point2 to point3 gives an "outward" normal +vector to the face of the triangle. I.e. normal = (c2-c1) x (c3-c1). +This orientation may be important for defining some interactions. + +If the data file defines a general triclinic box, then the x1,y1,z1 +and x2,y2,z2 and x3,y3,z3 values for each triangle should be specified +for its orientation relative to the standard x,y,z coordinate axes. +When the system is converted to a restricted triclinic box, the +x1,y1,z1,x2,y2,z2,x3,y3,z3 values will be altered to reflect the new +orientation of the triangle. The *Triangles* section must appear after the *Atoms* section. @@ -1493,6 +1683,12 @@ Vx, vy, vz, and ervel are in :doc:`units ` of velocity. Lx, ly, lz are in units of angular momentum (distance-velocity-mass). Wx, Wy, Wz are in units of angular velocity (radians/time). +If the data file defines a general triclinic box, then each of the 3 +vectors (translational velocity, angular momentum, angular velocity) +should be specified for the rotated coordinate axes of the general +triclinic box. See the :doc:`Howto triclinic ` doc +page for more details. + For atom_style hybrid, following the 4 initial values (ID,vx,vy,vz), specific values for each sub-style must be listed. The order of the sub-styles is the same as they were listed in the @@ -1513,8 +1709,8 @@ fields: atom-ID vx vy vz ervel wx wy wz -Translational velocities can also be set by the -:doc:`velocity ` command in the input script. +Translational velocities can also be (re)set by the :doc:`velocity +` command in the input script. ---------- diff --git a/doc/src/thermo_modify.rst b/doc/src/thermo_modify.rst index 3d2c19614e8..dcbe3135081 100644 --- a/doc/src/thermo_modify.rst +++ b/doc/src/thermo_modify.rst @@ -11,7 +11,7 @@ Syntax thermo_modify keyword value ... * one or more keyword/value pairs may be listed -* keyword = *lost* or *lost/bond* or *warn* or *norm* or *flush* or *line* or *colname* or *format* or *temp* or *press* +* keyword = *lost* or *lost/bond* or *warn* or *norm* or *flush* or *line* or *colname* or *format* or *temp* or *press* or *triclinic/general* .. parsed-literal:: @@ -32,6 +32,8 @@ Syntax *or* a thermo keyword or reference to compute, fix, property or variable. *temp* value = compute ID that calculates a temperature *press* value = compute ID that calculates a pressure + *triclinic/general* arg = *yes* or *no* + Examples """""""" @@ -240,6 +242,19 @@ command, thermo output uses a default compute for pressure with ID = keyword, then the new pressure compute specified by the *press* keyword will be unaffected by the *temp* setting. +The *triclinic/general* keyword can only be used with a value of *yes* +if the simulation box was created as a general triclinic box. See the +:doc:`Howto_triclinic ` doc page for a detailed +explanation of orthogonal, restricted triclinic, and general triclinic +simulation boxes. + +If this keyword is *yes*, the output of the simulation box edge +vectors and the pressure tensor components for the system are +affected. These are specified by the *avec,bvec,cvec* and +*pxx,pyy,pzz,pxy,pxz,pyz* keywords of the :doc:`thermo_style +` command. See the :doc:`thermo_style ` +doc page for details. + Restrictions """""""""""" none @@ -253,8 +268,9 @@ Default """"""" The option defaults are lost = error, warn = 100, norm = yes for unit -style of *lj*, norm = no for unit style of *real* and *metal*, -flush = no, and temp/press = compute IDs defined by thermo_style. +style of *lj*, norm = no for unit style of *real* and *metal*, flush = +no, temp/press = compute IDs defined by thermo_style, and +triclinic/general = no. The defaults for the line and format options depend on the thermo style. For styles "one" and "custom", the line and format defaults are "one", diff --git a/doc/src/thermo_style.rst b/doc/src/thermo_style.rst index 89a2c0b7405..fa90a45b0eb 100644 --- a/doc/src/thermo_style.rst +++ b/doc/src/thermo_style.rst @@ -25,12 +25,18 @@ Syntax evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, enthalpy, ecouple, econserve, - vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, - xy, xz, yz, xlat, ylat, zlat, - bonds, angles, dihedrals, impropers, + vol, density, + xlo, xhi, ylo, yhi, zlo, zhi, + xy, xz, yz, + avecx, avecy, avecz, + bvecx, bvecy, bvecz, + cvecx, cvecy, cvecz, + lx, ly, lz, + xlat, ylat, zlat, + cella, cellb, cellc, cellalpha, cellbeta, cellgamma, pxx, pyy, pzz, pxy, pxz, pyz, + bonds, angles, dihedrals, impropers, fmax, fnorm, nbuild, ndanger, - cella, cellb, cellc, cellalpha, cellbeta, cellgamma, c_ID, c_ID[I], c_ID[I][J], f_ID, f_ID[I], f_ID[I][J], v_name, v_name[I] @@ -66,18 +72,21 @@ Syntax econserve = pe + ke + ecouple = etotal + ecouple vol = volume density = mass density of system - lx,ly,lz = box lengths in x,y,z xlo,xhi,ylo,yhi,zlo,zhi = box boundaries - xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes + xy,xz,yz = box tilt for restricted triclinic (non-orthogonal) simulation boxes + avecx,avecy,avecz = components of edge vector A of the simulation box + bvecx,bvecy,bvecz = components of edge vector B of the simulation box + cvecx,cvecy,cvecz = components of edge vector C of the simulation box + lx,ly,lz = box lengths in x,y,z xlat,ylat,zlat = lattice spacings as calculated by :doc:`lattice ` command - bonds,angles,dihedrals,impropers = # of these interactions defined + cella,cellb,cellc = periodic cell lattice constants a,b,c + cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor + bonds,angles,dihedrals,impropers = # of these interactions defined fmax = max component of force on any atom in any dimension fnorm = length of force vector for all atoms nbuild = # of neighbor list builds ndanger = # of dangerous neighbor list builds - cella,cellb,cellc = periodic cell lattice constants a,b,c - cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma c_ID = global scalar value calculated by a compute with ID c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) c_ID[I][J] = I,J component of global array calculated by a compute with ID @@ -102,8 +111,11 @@ Examples Description """"""""""" -Set the style and content for printing thermodynamic data to the screen -and log files. +Set the style and content for printing thermodynamic data to the +screen and log files. The units for each column of output +corresponding to the list of keywords is determined by the :doc:`units +` command for the simulation. E.g. energies will be in energy +units, temperature in temperature units, pressure in pressure units. Style *one* prints a single line of thermodynamic info that is the equivalent of "thermo_style custom step temp epair emol etotal press". @@ -245,7 +257,7 @@ and *pxx*, *pyy*, etc. ---------- Here is more information on other keywords whose meaning may not be -clear: +clear. The *step*, *elapsed*, and *elaplong* keywords refer to timestep count. *Step* is the current timestep, or iteration count when a @@ -319,6 +331,63 @@ thermostatting or barostatting to their coupling reservoirs -- that is, the NVT, NPH, or NPT ensembles, the *econserve* quantity should remain constant over time even though *etotal* may change. +In LAMMPS, the simulation box can be defined as orthogonal or +triclinic (non-orthogonal). See the :doc:`Howto_triclinic +` doc page for a detailed explanation of orthogonal, +restricted triclinic, and general triclinic simulation boxes and how +LAMMPS rotates a general triclinic box to be restricted triclinic +internally. + +The *lx*, *ly*, *lz* keywords are the extent of the simulation box in +each dimension. The *xlo*, *xhi*, *ylo*, *yhi*, *zlo*, *zhi* keywords +are the lower and upper bounds of the simulation box in each dimension. +I.e. *lx* = *xhi* - *xlo*). These 9 values are the same for all 3 kinds +of boxes. I.e. for a restricted triclinic box, they are the values as +if the box were not tilted. For a general triclinic box, they are the +values after it is internally rotated to be a restricted triclinic box. + +The *xy*, *xz*, *yz* are the current tilt factors for a triclinic box. +They are the same for restricted and general triclinic boxes. + +The *avecx*, *avecy*, *avecz*, *bvecx*, *bvecy*, *bvecz*, *cvecx*, +*cvecy*, *cvecz* are the components of the 3 edge vectors of the +current general simulation box. If it is an orthogonal box the +vectors are along the x, y, z coordinate axes. If it is a restricted +triclinic box, the **A** vector is along the x axis, the **B** vector +is in the xy plane with a +y coordinate, and the **C** vector has a +z +coordinate, as explained on the :doc:`Howto_triclinic +` doc page. If the :doc:`thermo_modify +triclinic/general ` option is set then they are the +**A**, **B**, **C** vector which define the general triclinic box. + +The *cella*, *cellb*, *cellc*, *cellalpha*, *cellbeta*, *cellgamma* +keywords correspond to the usual crystallographic quantities that +define the periodic simulation box of a crystalline system. See the +:doc:`Howto triclinic ` page for a precise definition +of these quantities in terms of the LAMMPS representation of a +restricted triclinic simulation box via *lx*, *ly*, *lz*, *yz*, *xz*, +*xy*\ . + +The *pxx,pyy,pzz,pxy,pxz,pyz* keywords are the 6 components of the +symmetric pressure tensor for the system. See the :doc:`compute +pressure ` command doc page for details of how it is +calculated. + +If the :doc:`thermo_modify triclinic/general ` option +is set then the 6 components will be output as values consistent with +the orientation of the general triclinic box relative to the standard +xyz coordinate axes. If this keyword is not used, the values will be +consistent with the orientation of the restricted triclinic box (which +aligns with the xyz coordinate axes). As explained on the +:doc:`Howto_triclinic ` doc page, even if the +simulation box is created as a general triclinic box, internally +LAMMPS uses a restricted triclinic box. + +Note that because the pressure tensor components are computed using +force vectors and atom coordinates, both of which are rotated in the +general versus restricted triclinic representation, the values will +typically be different for the two cases. + The *fmax* and *fnorm* keywords are useful for monitoring the progress of an :doc:`energy minimization `. The *fmax* keyword calculates the maximum force in any dimension on any atom in the @@ -338,14 +407,6 @@ to reduce the delay factor to ensure no force interactions are missed by atoms moving beyond the neighbor skin distance before a rebuild takes place. -The keywords *cella*, *cellb*, *cellc*, *cellalpha*, -*cellbeta*, *cellgamma*, correspond to the usual crystallographic -quantities that define the periodic unit cell of a crystal. See the -:doc:`Howto triclinic ` page for a geometric -description of triclinic periodic cells, including a precise -definition of these quantities in terms of the internal LAMMPS cell -dimensions *lx*, *ly*, *lz*, *yz*, *xz*, *xy*\ . - ---------- For output values from a compute or fix or variable, the bracketed diff --git a/doc/src/variable.rst b/doc/src/variable.rst index a70ac25836e..ba5e5efd395 100644 --- a/doc/src/variable.rst +++ b/doc/src/variable.rst @@ -279,9 +279,9 @@ This means the variable can then be evaluated as many times as desired and will return those values. There are two ways to cause the next set of per-atom values from the file to be read: use the :doc:`next ` command or the next() function in an atom-style -variable, as discussed below. Unlike most variable styles -atomfile-style variables are **deleted** during a :doc:`clear ` -command. +variable, as discussed below. Unlike most variable styles, which +remain defined, atomfile-style variables are **deleted** during a +:doc:`clear ` command. The rules for formatting the file are as follows. Each time a set of per-atom values is read, a non-blank line is searched for in the file. @@ -289,23 +289,37 @@ The file is read line by line but only up to 254 characters are used. The rest are ignored. A comment character "#" can be used anywhere on a line and all text following and the "#" character are ignored; text starting with the comment character is stripped. Blank lines -are skipped. The first "word" of a non-blank line, delimited by -white-space, is read as the count N of per-atom lines to immediately -follow. N can be the total number of atoms in the system, or only a -subset. The next N lines have the following format +are skipped. The first non-blank line is expected to contain a single +integer number as the count *N* of per-atom lines to follow. *N* can +be the total number of atoms in the system or less, indicating that data +for a subset is read. The next N lines must consist of two numbers, +the atom-ID of the atom for which a value is set followed by a floating +point number with the value. The atom-IDs may be listed in any order. -.. parsed-literal:: +.. note:: - ID value + Every time a set of per-atom lines is read, the value of the atomfile + variable for **all** atoms is first initialized to 0.0. Thus values + for atoms whose ID do not appear in the set in the file will remain + at 0.0. -where ID is an atom ID and value is the per-atom numeric value that -will be assigned to that atom. IDs can be listed in any order. +Below is a small example for the atomfile variable file format: -.. note:: + .. parsed-literal:: + + # first set + 4 + # atom-ID value + 3 1 + 4 -4 + 1 0.5 + 2 -0.5 + + # second set + 2 - Every time a set of per-atom lines is read, the value for all - atoms is first set to 0.0. Thus values for atoms whose ID does not - appear in the set, will remain 0.0. + 2 1.0 + 4 -1.0 ---------- @@ -706,7 +720,7 @@ library. Ceil() is the smallest integer not less than its argument. Floor() if the largest integer not greater than its argument. Round() is the nearest integer to its argument. -.. versionadded:: TBD +.. versionadded:: 7Feb2024 The ternary(x,y,z) function is the equivalent of the ternary operator (? and :) in C or C++. It takes 3 arguments. The first argument is a @@ -1155,7 +1169,7 @@ variable by using the :doc:`compute property/atom Custom atom properties ---------------------- -.. versionadded:: TBD +.. versionadded:: 7Feb2024 Custom atom properties refer to per-atom integer and floating point vectors or arrays that have been added via the :doc:`fix property/atom @@ -1174,12 +1188,17 @@ custom atom properties are the same; just replace the leading "i" with +--------+---------------+------------------------------------------+ | equal | i_name[I] | element of per-atom vector (I = atom ID) | ++--------+---------------+------------------------------------------+ | equal | i2_name[I][J] | element of per-atom array (I = atom ID) | +--------+---------------+------------------------------------------+ ++--------+---------------+------------------------------------------+ | vector | i_name[I] | element of per-atom vector (I = atom ID) | ++--------+---------------+------------------------------------------+ | vector | i2_name[I][J] | element of per-atom array (I = atom ID) | +--------+---------------+------------------------------------------+ ++--------+---------------+------------------------------------------+ | atom | i_name | per-atom vector | ++--------+---------------+------------------------------------------+ | atom | i2_name[I] | column of per-atom array | +--------+---------------+------------------------------------------+ @@ -1222,15 +1241,23 @@ table: +--------+------------+------------------------------------------+ | equal | c_ID | global scalar | ++--------+------------+------------------------------------------+ | equal | c_ID[I] | element of global vector | ++--------+------------+------------------------------------------+ | equal | c_ID[I][J] | element of global array | ++--------+------------+------------------------------------------+ | equal | C_ID[I] | element of per-atom vector (I = atom ID) | ++--------+------------+------------------------------------------+ | equal | C_ID[I][J] | element of per-atom array (I = atom ID) | +--------+------------+------------------------------------------+ ++--------+------------+------------------------------------------+ | vector | c_ID | global vector | ++--------+------------+------------------------------------------+ | vector | c_ID[I] | column of global array | +--------+------------+------------------------------------------+ ++--------+------------+------------------------------------------+ | atom | c_ID | per-atom vector | ++--------+------------+------------------------------------------+ | atom | c_ID[I] | column of per-atom array | +--------+------------+------------------------------------------+ @@ -1286,15 +1313,23 @@ and atom-style variables are listed in the following table: +--------+------------+------------------------------------------+ | equal | f_ID | global scalar | ++--------+------------+------------------------------------------+ | equal | f_ID[I] | element of global vector | ++--------+------------+------------------------------------------+ | equal | f_ID[I][J] | element of global array | ++--------+------------+------------------------------------------+ | equal | F_ID[I] | element of per-atom vector (I = atom ID) | ++--------+------------+------------------------------------------+ | equal | F_ID[I][J] | element of per-atom array (I = atom ID) | +--------+------------+------------------------------------------+ ++--------+------------+------------------------------------------+ | vector | f_ID | global vector | ++--------+------------+------------------------------------------+ | vector | f_ID[I] | column of global array | +--------+------------+------------------------------------------+ ++--------+------------+------------------------------------------+ | atom | f_ID | per-atom vector | ++--------+------------+------------------------------------------+ | atom | f_ID[I] | column of per-atom array | +--------+------------+------------------------------------------+ @@ -1365,17 +1400,27 @@ per-atom vector. +--------+-----------+-----------------------------------------------------------------------------------+ | equal | v_name | global scalar from an equal-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | equal | v_name[I] | element of global vector from a vector-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | equal | v_name[I] | element of per-atom vector (I = atom ID) from an atom- or atomfile-style variable | +--------+-----------+-----------------------------------------------------------------------------------+ ++--------+-----------+-----------------------------------------------------------------------------------+ | vector | v_name | global scalar from an equal-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | vector | v_name | global vector from a vector-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | vector | v_name[I] | element of global vector from a vector-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | vector | v_name[I] | element of per-atom vector (I = atom ID) from an atom- or atomfile-style variable | +--------+-----------+-----------------------------------------------------------------------------------+ ++--------+-----------+-----------------------------------------------------------------------------------+ | atom | v_name | global scalar from an equal-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | atom | v_name | per-atom vector from an atom-style or atomfile-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | atom | v_name[I] | element of global vector from a vector-style variable | ++--------+-----------+-----------------------------------------------------------------------------------+ | atom | v_name[I] | element of per-atom vector (I = atom ID) from an atom- or atomfile-style variable | +--------+-----------+-----------------------------------------------------------------------------------+ diff --git a/doc/src/write_data.rst b/doc/src/write_data.rst index c598ebe4810..516685f4fea 100644 --- a/doc/src/write_data.rst +++ b/doc/src/write_data.rst @@ -19,6 +19,7 @@ Syntax *nocoeff* = do not write out force field info *nofix* = do not write out extra sections read by fixes *nolabelmap* = do not write out type labels + *triclinic/general = write data file in general triclinic format *types* value = *numeric* or *labels* *pair* value = *ii* or *ij* *ii* = write one line of pair coefficient info per atom type @@ -31,6 +32,7 @@ Examples write_data data.polymer write_data data.* + write_data data.solid triclinic/general Description """"""""""" @@ -85,10 +87,11 @@ using the :doc:`-r command-line switch `. :doc:`fixes ` are stored. :doc:`Binary restart files ` store more information. -Bond interactions (angle, etc) that have been turned off by the :doc:`fix shake ` or :doc:`delete_bonds ` command will -be written to a data file as if they are turned on. This means they -will need to be turned off again in a new run after the data file is -read. +Bond interactions (angle, etc) that have been turned off by the +:doc:`fix shake ` or :doc:`delete_bonds ` +command will be written to a data file as if they are turned on. This +means they will need to be turned off again in a new run after the +data file is read. Bonds that are broken (e.g. by a bond-breaking potential) are not written to the data file. Thus these bonds will not exist when the @@ -122,6 +125,23 @@ not written to the data file. By default, they are written if they exist. A type label must be defined for every numeric type (within a given type-kind) to be written to the data file. +Use of the *triclinic/general* keyword will output a data file which +specifies a general triclinic simulation box as well as per-atom +quantities consistent with the general triclinic box. The latter means +that per-atom vectors, such as velocities and dipole moments will be +oriented consistent with the 3d rotation implied by the general +triclinic box (relative to the associated restricted triclinic box). + +This option can only be requested if the simulation box was initially +defined to be general triclinic. If if was and the +*triclinic/general* keyword is not used, then the data file will +specify a restricted triclinic box, since that is the internal format +LAMMPS uses for both general and restricted triclinic simulations. +See the :doc:`Howto triclinic ` doc page for more +explanation of how general triclinic simulation boxes are supported by +LAMMPS. And see the :doc:`read_data ` doc page for details +of how the format is altered for general triclinic data files. + The *types* keyword determines how atom types, bond types, angle types, etc are written into these data file sections: Atoms, Bonds, Angles, etc. The default is the *numeric* setting, even if type label diff --git a/doc/src/write_restart.rst b/doc/src/write_restart.rst index a35adffe567..6205f24faff 100644 --- a/doc/src/write_restart.rst +++ b/doc/src/write_restart.rst @@ -55,21 +55,22 @@ alter the number of files written. Restart files can be read by a :doc:`read_restart ` command to restart a simulation from a particular state. Because the file is binary (to enable exact restarts), it may not be readable on -another machine. In this case, you can use the :doc:`-r command-line switch ` to convert a restart file to a data file. +another machine. In this case, you can use the :doc:`-r command-line +switch ` to convert a restart file to a data file. .. note:: Although the purpose of restart files is to enable restarting a simulation from where it left off, not all information about a - simulation is stored in the file. For example, the list of fixes that - were specified during the initial run is not stored, which means the - new input script must specify any fixes you want to use. Even when - restart information is stored in the file, as it is for some fixes, - commands may need to be re-specified in the new input script, in order - to re-use that information. Details are usually given in the - documentation of the respective command. Also, see the - :doc:`read_restart ` command for general information about - what is stored in a restart file. + simulation is stored in the file. For example, the list of fixes + that were specified during the initial run is not stored, which + means the new input script must specify any fixes you want to use. + Even when restart information is stored in the file, as it is for + some fixes, commands may need to be re-specified in the new input + script, in order to re-use that information. Details are usually + given in the documentation of the respective command. Also, see the + :doc:`read_restart ` command for general information + about what is stored in a restart file. ---------- diff --git a/doc/utils/requirements.txt b/doc/utils/requirements.txt index 5bb8e3911db..816d52bf54d 100644 --- a/doc/utils/requirements.txt +++ b/doc/utils/requirements.txt @@ -1,4 +1,4 @@ -Sphinx >= 5.3.0, <8.0 +Sphinx >= 5.3.0, <7.3 sphinxcontrib-spelling sphinxcontrib-jquery git+https://github.com/akohlmey/sphinx-fortran@parallel-read diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 03e67b95cb6..20e0bd1f128 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -50,6 +50,7 @@ agilio Agilio agni Agnolin +ahi Ahrens Ai Aidan @@ -86,6 +87,7 @@ allocator allocators allosws AlO +alo Alonso Alperen alphak @@ -125,6 +127,7 @@ antisymmetry anton Antonelli api +apolar Apoorva Appl Appshaw @@ -151,6 +154,7 @@ asphericity Asq assignee assively +associativity Asta Astart Astop @@ -185,6 +189,10 @@ automagically Auvergne Avalos avalue +avec +avecx +avecy +avecz aveforce Avendano Averett @@ -192,11 +200,14 @@ avi AVX awpmd AWPMD +ax Axel Axilrod Ay +ay Ayton Az +az Azevedo azimuthal Azuri @@ -269,6 +280,7 @@ Bext Bfrac bgq Bh +bhi Bialke biaxial bicrystal @@ -305,6 +317,7 @@ Bkappa blabel Blaise blanchedalmond +blo blocksize blueviolet bn @@ -378,12 +391,17 @@ btype buckPlusAttr buf builtin +Bulacu Bulatov Bureekaew burlywood Bussi Buturigakkwaishi Buyl +bvec +bvecx +bvecy +bvecz Bybee bz Cadarache @@ -474,6 +492,7 @@ ChiralIDs chirality Cho Chodera +Choi ChooseOffset chris Christoph @@ -615,6 +634,7 @@ cstdlib cstring cstyle csvr +ctilde ctrl ctrn ctypes @@ -646,14 +666,21 @@ cv Cv Cval cvar +cvec +cvecx +cvecy +cvecz cvff cwiggle +cx +cy cygwin Cygwin cylindrically Cyrot cyrstals cython +cz Daivis Dammak dampflag @@ -798,6 +825,7 @@ dlabel dlambda DLAMMPS dll +dlm dlopen dm dmax @@ -944,6 +972,7 @@ elastance Electroneg electronegative electronegativity +electroneutral electroneutrality Eleftheriou ElementN @@ -1015,6 +1044,7 @@ Ercolessi Erdmann erf erfc +erforce Erhart erorate erose @@ -1297,6 +1327,7 @@ gmres gname gneb GNEB +Goga Goldfarb Gompper Gonzalez-Melchor @@ -1474,6 +1505,7 @@ hydroxyl Hynninen Hyoungki hyperdynamics +hyperparameters hyperplane hyperradius hyperspherical @@ -1766,6 +1798,7 @@ Kolafa Kollman kolmogorov Kolmogorov +Kolotinskii Kondor konglt Koning @@ -2034,6 +2067,7 @@ Makefiles makelist makepkg Makse +Malavasi malloc Malolepsza Manby @@ -2143,6 +2177,7 @@ membered memcheck Mendelev Menon +Menziani mer Meremianin Mersenne @@ -2235,8 +2270,10 @@ Mohd Mohles mol Mol +molatom molfile Molfile +molindex MolPairStyle moltemplate momb @@ -2251,6 +2288,7 @@ Montalenti Monterey Montero Monti +Monticelli Mora Morefoo Morfill @@ -2260,6 +2298,7 @@ morris Morriss morse Morteza +MoS Mosayebi Moseler Moskalev @@ -2569,6 +2608,7 @@ ns Ns Nsample Nskip +nspecial Nspecies nsq Nstart @@ -2676,6 +2716,9 @@ organometallic orientational orientationsFile orientorder +originx +originy +originz Orlikowski ornl Ornstein @@ -2719,6 +2762,7 @@ papayawhip paquay Paquay parallelepiped +parallelepipeds Parallelizable parallelization parallelized @@ -2762,11 +2806,14 @@ Peachey peachpuff Pearlman Pedersen +pedone +Pedone peID PEigenDense Peng peptide peratom +Perf Pergamon pergrid peri @@ -2774,6 +2821,7 @@ peridynamic Peridynamic peridynamics Peridynamics +Periole perl permittivity perp @@ -3063,6 +3111,7 @@ reaxff ReaxFF REAXFF rebo +rebomos recurse recursing Ree @@ -3188,6 +3237,7 @@ Ronevich Rosati Rosato Rosenberger +Rossi Rossky rosybrown rotationally @@ -3590,6 +3640,7 @@ tesselation tesselations Tetot tex +textrm tfac tfmc tfMC @@ -3630,6 +3681,7 @@ thrid ThunderX thylakoid THz +Tieleman Tigran Tij Tildesley @@ -3790,6 +3842,7 @@ unimodal uninstall unitarg unitless +unittest Universite unix unmaintained @@ -3876,7 +3929,10 @@ Verlet versa Verstraelen ves +vf vflag +vflow +vfrac vhi vibrational Vij diff --git a/examples/ASPHERE/dimer/in.dimer b/examples/ASPHERE/dimer/in.dimer index 224db9937d0..468ebffcdcf 100644 --- a/examples/ASPHERE/dimer/in.dimer +++ b/examples/ASPHERE/dimer/in.dimer @@ -1,104 +1,104 @@ # SRD diffusion demo - dimer particles -units lj -atom_style sphere -atom_modify map array first big -dimension 2 +units lj +atom_style sphere +atom_modify map array first big +dimension 2 # read in clusters of rigid bodies -fix molprop all property/atom mol -read_data data.dimer fix molprop NULL Molecules +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules + +set type 1 mass 1.0 +group big type 1 +velocity big create 1.44 87287 loop geom -set type 1 mass 1.0 -group big type 1 -velocity big create 1.44 87287 loop geom - # equilibrate big particles -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 variable prefactor equal ramp(0,60) fix soft all adapt 1 pair soft a * * v_prefactor -fix 1 big rigid molecule -fix 2 all enforce2d +fix 1 big rigid molecule +fix 2 all enforce2d -#dump 1 all atom 10 dump.dimer.equil +#dump 1 all atom 10 dump.dimer.equil -thermo 100 -run 1000 +thermo 100 +run 1000 -#undump 1 +#undump 1 unfix soft -unfix 1 -unfix 2 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -create_atoms 2 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +create_atoms 2 region plane -set type 2 mass 0.1 -group small type 2 -velocity small create 1.0 593849 loop geom +set type 2 mass 0.1 +group small type 2 +velocity small create 1.0 593849 loop geom # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 -delete_atoms overlap 0.5 small big +delete_atoms overlap 0.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid molecule -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & - search 0.2 collision slip inside ignore overlap yes -fix 3 all enforce2d +fix 1 big rigid molecule +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & + search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d # diagnostics -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 1000 dump.dimer +#dump 1 all atom 1000 dump.dimer -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 -run 100000 +run 10000 diff --git a/examples/ASPHERE/dimer/in.dimer.mp b/examples/ASPHERE/dimer/in.dimer.mp index a637acaf87e..1b54cc5eac4 100644 --- a/examples/ASPHERE/dimer/in.dimer.mp +++ b/examples/ASPHERE/dimer/in.dimer.mp @@ -1,105 +1,105 @@ # SRD viscosity demo - dimer particles -units lj -atom_style sphere -atom_modify map array first big -dimension 2 +units lj +atom_style sphere +atom_modify map array first big +dimension 2 # read in clusters of rigid bodies -fix molprop all property/atom mol -read_data data.dimer fix molprop NULL Molecules +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules -set type 1 mass 1.0 -group big type 1 -velocity big create 1.44 87287 loop geom +set type 1 mass 1.0 +group big type 1 +velocity big create 1.44 87287 loop geom # equilibrate big particles -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 variable prefactor equal ramp(0,60) fix soft all adapt 1 pair soft a * * v_prefactor -fix 1 big rigid molecule -fix 2 all enforce2d +fix 1 big rigid molecule +fix 2 all enforce2d -#dump 1 all atom 10 dump.dimer.equil +#dump 1 all atom 10 dump.dimer.equil -thermo 100 -run 1000 +thermo 100 +run 1000 -#undump 1 +#undump 1 unfix soft -unfix 1 -unfix 2 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -create_atoms 2 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +create_atoms 2 region plane -set type 2 mass 0.1 -group small type 2 -velocity small create 1.0 593849 loop geom +set type 2 mass 0.1 +group small type 2 +velocity small create 1.0 593849 loop geom # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 -delete_atoms overlap 0.5 small big +delete_atoms overlap 0.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid molecule -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & - search 0.2 collision slip inside ignore overlap yes -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d +fix 1 big rigid molecule +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & + search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d # diagnostics -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 500 dump.dimer.mp +#dump 1 all atom 500 dump.dimer.mp -#dump 1 all image 500 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 -run 50000 +run 25000 diff --git a/examples/ASPHERE/dimer/log.1Feb14.dimer.g++.8 b/examples/ASPHERE/dimer/log.1Feb14.dimer.g++.8 deleted file mode 100644 index e6cf1630dad..00000000000 --- a/examples/ASPHERE/dimer/log.1Feb14.dimer.g++.8 +++ /dev/null @@ -1,286 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD diffusion demo - dimer particles - -units lj -atom_style sphere -atom_modify map array first big -dimension 2 - -# read in clusters of rigid bodies - -fix molprop all property/atom mol -read_data data.dimer fix molprop NULL Molecules - orthogonal box = (-9.34165 -9.34165 -0.5) to (9.34165 9.34165 0.5) - 4 by 2 by 1 MPI processor grid - reading atoms ... - 200 atoms - -set type 1 mass 1.0 - 200 settings made for mass -group big type 1 -200 atoms in group big -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 - -variable prefactor equal ramp(0,60) -fix soft all adapt 1 pair soft a * * v_prefactor - -fix 1 big rigid molecule -100 rigid bodies with 200 atoms -fix 2 all enforce2d - -#dump 1 all atom 10 dump.dimer.equil - -thermo 100 -run 1000 -Memory usage per processor = 3.1029 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3.4028231 0 0 0.83369167 -0.55065517 - 100 9.5167872 2.392105 0 4.7237178 2.8319556 - 200 13.564465 3.0352634 0 6.3585572 3.6388732 - 300 13.133051 4.3835112 0 7.6011086 4.060051 - 400 14.584346 5.5141254 0 9.0872901 4.4231056 - 500 15.331515 6.6554832 0 10.411704 4.847642 - 600 16.953755 7.4794317 0 11.633102 5.2020696 - 700 16.503256 8.8572339 0 12.900532 5.6694613 - 800 17.006131 9.877343 0 14.043845 5.5483363 - 900 17.305927 11.081594 0 15.321546 6.2908201 - 1000 18.122491 12.126462 0 16.566472 5.7536055 -Loop time of 0.185949 on 8 procs for 1000 steps with 200 atoms - -Pair time (%) = 0.00187448 (1.00806) -Neigh time (%) = 0.000561714 (0.30208) -Comm time (%) = 0.0652371 (35.0833) -Outpt time (%) = 0.00209856 (1.12857) -Other time (%) = 0.116177 (62.4779) - -Nlocal: 25 ave 30 max 20 min -Histogram: 1 0 1 1 0 0 3 1 0 1 -Nghost: 28.375 ave 36 max 22 min -Histogram: 1 0 1 2 1 0 2 0 0 1 -Neighs: 33.125 ave 45 max 22 min -Histogram: 1 0 2 1 0 1 1 0 1 1 - -Total # of neighbors = 265 -Ave neighs/atom = 1.325 -Neighbor list builds = 99 -Dangerous builds = 96 - -#undump 1 -unfix soft -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -Lattice spacing in x,y,z = 0.108465 0.108465 0.108465 -create_atoms 2 region plane -Created 29929 atoms - -set type 2 mass 0.1 - 29929 settings made for mass -group small type 2 -29929 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 - -delete_atoms overlap 0.5 small big -Deleted 12759 atoms, new total = 17370 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid molecule -100 rigid bodies with 200 atoms -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes -fix 3 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 1000 dump.dimer - -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 100000 -SRD info: - SRD/big particles = 17170 200 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 75 75 1 - SRD grid size: request, actual (xyz) = 0.25, 0.249111 0.249111 1 - SRD per actual grid cell = 5.5499 - SRD viscosity = 0.235551 - big/SRD mass density ratio = 0.142367 - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.20347 7.72323 - ave/max big velocity = 2.64047 6.60911 -Memory usage per processor = 7.0395 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 6.9744766 0 0.30175295 21.011259 26.207244 2.7219331 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 1.1941672 3369 0.24718395 20.578272 21.467926 9.8944086 13658 56 56 2 664 40320 5625 3369 1.1358997 0 4 0 - 2000 1.3247909 3390 0.24717547 20.48022 21.467189 6.5341926 13389 48 48 3 1988 40320 5625 3390 1.1814916 0 144 0 - 3000 1.386904 3355 0.24769415 20.478993 21.512237 6.1207029 13507 45 45 0 2871 40320 5625 3355 1.1657697 0 144 0 - 4000 1.1567347 3376 0.24573733 20.48052 21.342287 3.5540965 13475 46 46 0 3731 40320 5625 3376 1.1485984 0 144 0 - 5000 1.2565155 3376 0.24620928 20.447172 21.383276 2.5808161 13267 55 55 0 4559 40320 5625 3376 1.1778096 0 144 0 - 6000 1.1489985 3375 0.24520477 20.440031 21.296035 7.8204262 13362 59 59 0 5354 40320 5625 3375 1.1530517 0 144 0 - 7000 1.1608248 3399 0.24587989 20.489854 21.354669 7.9622779 13333 59 59 2 6254 40320 5625 3399 1.1809325 0 144 0 - 8000 1.1749441 3374 0.24700359 20.576929 21.452262 6.7498405 13495 64 64 0 7134 40320 5625 3374 1.1445035 0 144 0 - 9000 1.1285085 3405 0.24536183 20.468936 21.309675 5.8959937 13333 60 60 0 8008 40320 5625 3405 1.162836 0 144 0 - 10000 1.1462675 3425 0.24564758 20.480523 21.334492 7.0047543 13487 45 45 0 8967 40320 5625 3425 1.1881074 0 144 0 - 11000 1.2854766 3388 0.246088 20.415062 21.372742 7.8508136 13491 60 60 1 9833 40320 5625 3388 1.1698514 0 144 0 - 12000 1.2926536 3360 0.24602616 20.404345 21.367372 7.9286141 13142 64 64 1 11029 40320 5625 3360 1.1658039 0 161 0 - 13000 1.2289767 3412 0.24595657 20.44574 21.361328 2.2809592 13162 56 56 1 12018 40320 5625 3412 1.1665531 0 161 0 - 14000 1.3518235 3380 0.24629055 20.383226 21.390334 8.0062608 13310 59 59 7 13146 40320 5625 3380 1.1733296 0 161 0 - 15000 1.2971143 3355 0.24671134 20.46053 21.42688 9.7871945 12967 60 60 3 14084 40320 5625 3355 1.1703643 0 161 0 - 16000 1.4160948 3384 0.2478594 20.471598 21.526589 7.3141215 13123 56 56 1 14929 40320 5625 3384 1.1666782 0 161 0 - 17000 1.3172038 3391 0.247377 20.503375 21.484692 6.1541908 12957 54 54 0 15778 40320 5625 3391 1.1639931 0 161 0 - 18000 0.98748293 3369 0.2443499 20.486114 21.221789 4.0981146 13355 50 50 1 17031 40320 5625 3369 1.2083414 0 192 0 - 19000 1.4619261 3367 0.24867817 20.508564 21.597699 11.68547 13519 58 58 0 18334 40320 5625 3367 1.1667505 0 192 0 - 20000 1.44087 3391 0.24747923 20.420123 21.493571 4.0409936 13594 67 67 0 19303 40320 5625 3391 1.1869387 0 192 0 - 21000 1.1155365 3377 0.24474418 20.424957 21.256032 8.4985692 13423 52 52 0 20245 40320 5625 3377 1.1726608 0 192 0 - 22000 1.2045785 3382 0.24466159 20.351448 21.248859 7.0518674 13271 62 62 0 21128 40320 5625 3382 1.1658557 0 192 0 - 23000 1.2634616 3378 0.24571326 20.398918 21.340197 6.8382109 13246 61 61 1 22067 40320 5625 3378 1.170196 0 192 0 - 24000 1.365723 3375 0.24749053 20.477089 21.494552 5.9584152 13017 46 46 1 23017 40320 5625 3375 1.1841192 0 192 0 - 25000 1.1421045 3367 0.24497142 20.4249 21.275768 10.381661 13049 66 66 1 23907 40320 5625 3367 1.1856767 0 192 0 - 26000 1.4008939 3340 0.24678624 20.389719 21.433385 7.3799658 12971 53 53 5 24850 40320 5625 3340 1.1713233 0 192 0 - 27000 1.1835022 3379 0.24522732 20.416284 21.297993 7.2251705 12717 46 46 1 25723 40320 5625 3379 1.1798333 0 192 0 - 28000 1.0496668 3398 0.24461816 20.463086 21.245087 6.5485338 13385 60 60 0 26990 40320 5625 3398 1.1765205 0 192 0 - 29000 1.1779927 3453 0.24501083 20.401586 21.27919 4.8540048 13157 77 77 2 28023 40320 5625 3453 1.1741595 0 192 0 - 30000 1.2277637 3375 0.24554215 20.410652 21.325336 10.087705 12939 72 72 1 28855 40320 5625 3375 1.1627414 0 192 0 - 31000 1.1575066 3397 0.24504213 20.419566 21.281909 6.4849648 12977 66 66 0 29745 40320 5625 3397 1.1575018 0 192 0 - 32000 1.1752733 3381 0.2451073 20.41199 21.287569 7.2784509 12971 48 48 0 30561 40320 5625 3381 1.1790395 0 192 0 - 33000 1.1743895 3370 0.24485514 20.390748 21.265669 9.084299 12810 64 64 0 31342 40320 5625 3370 1.1429061 0 192 0 - 34000 1.2975876 3377 0.24608262 20.405573 21.372276 10.624304 12610 60 60 1 32140 40320 5625 3377 1.1685718 0 192 0 - 35000 1.7701252 3356 0.2497356 20.370794 21.689537 7.107766 12983 45 45 8 33862 40320 5625 3356 1.1720964 0 242 0 - 36000 1.2711521 3393 0.24675748 20.483878 21.430887 8.7087273 13175 60 60 0 34920 40320 5625 3393 1.1796212 0 242 0 - 37000 1.1140649 3373 0.24450996 20.405711 21.23569 8.0025138 12964 50 50 1 35770 40320 5625 3373 1.1772234 0 242 0 - 38000 1.3128798 3379 0.24583813 20.372946 21.351041 5.0554655 12939 56 56 1 36679 40320 5625 3379 1.1702949 0 242 0 - 39000 1.2093703 3365 0.24536578 20.409037 21.310018 5.6243735 12873 62 62 3 37511 40320 5625 3365 1.1751064 0 242 0 - 40000 1.2095402 3365 0.24485106 20.364207 21.265315 3.9565189 12876 54 54 1 38503 40320 5625 3365 1.1637516 0 242 0 - 41000 1.1146238 3350 0.24476111 20.427107 21.257502 6.5033046 12656 53 53 0 39313 40320 5625 3350 1.1553197 0 242 0 - 42000 1.2302245 3370 0.24452048 20.320087 21.236604 10.7363 12676 52 52 1 40108 40320 5625 3370 1.1492163 0 242 0 - 43000 1.2749689 3404 0.24511103 20.338041 21.287893 9.18604 13057 72 72 1 41014 40320 5625 3404 1.1572511 0 242 0 - 44000 1.1989211 3385 0.24450633 20.342179 21.235375 7.6714085 13086 52 53 1 41840 40320 5625 3385 1.1530041 0 242 0 - 45000 1.6465972 3370 0.249994 20.485264 21.711979 7.4908607 12894 58 58 7 43545 40320 5625 3370 1.1978571 0 361 0 - 46000 1.3082316 3412 0.24665637 20.447473 21.422106 8.9900563 13136 53 53 4 44510 40320 5625 3412 1.1686573 0 361 0 - 47000 1.2163258 3355 0.24493724 20.366636 21.272799 6.9309438 13020 56 56 0 45414 40320 5625 3355 1.1620943 0 361 0 - 48000 1.349966 3362 0.24683156 20.431596 21.437321 8.8527164 13044 64 64 1 46260 40320 5625 3362 1.1683452 0 361 0 - 49000 1.3903769 3347 0.24726403 20.439051 21.474881 5.9250552 13103 58 59 2 49229 40320 5625 3347 1.1924538 0 578 0 - 50000 1.2737918 3349 0.24563843 20.384723 21.333698 7.2419874 12892 41 41 1 50225 40320 5625 3349 1.1803233 0 578 0 - 51000 1.2229799 3355 0.24504936 20.371417 21.282537 8.5556146 12912 63 63 0 51096 40320 5625 3355 1.1333843 0 578 0 - 52000 1.2326547 3386 0.24596384 20.443632 21.361959 6.1757404 12790 66 66 1 52114 40320 5625 3386 1.1685608 0 578 0 - 53000 1.3695441 3389 0.24696147 20.428294 21.448604 8.7464732 12997 60 60 1 53115 40320 5625 3389 1.1631228 0 578 0 - 54000 1.0711204 3400 0.24322154 20.325806 21.12379 8.7228921 13005 56 56 0 53913 40320 5625 3400 1.1250986 0 578 0 - 55000 1.3412565 3360 0.24617922 20.381429 21.380665 6.9489559 12960 46 46 0 55249 40320 5625 3360 1.176467 0 578 0 - 56000 1.3910761 3355 0.2467942 20.397725 21.434077 6.6762734 12966 65 65 2 56653 40320 5625 3355 1.1715559 0 578 0 - 57000 1.1177307 3388 0.24424738 20.380176 21.212885 5.5073089 13153 62 62 1 57550 40320 5625 3388 1.1576307 0 578 0 - 58000 1.3136279 3365 0.24661231 20.439627 21.418279 9.1390284 12799 52 52 1 58366 40320 5625 3365 1.159026 0 578 0 - 59000 1.2667621 3374 0.24556104 20.383238 21.326976 3.4246418 13127 54 54 1 59170 40320 5625 3374 1.1461442 0 578 0 - 60000 1.1903121 3326 0.24492127 20.384629 21.271412 6.9439977 13078 47 47 2 60105 40320 5625 3326 1.1665886 0 578 0 - 61000 1.209313 3362 0.2455341 20.423699 21.324637 9.1212002 13225 61 61 4 61358 40320 5625 3362 1.1725894 0 578 0 - 62000 1.1720074 3366 0.24476301 20.384522 21.257667 7.7592884 13187 53 54 2 62257 40320 5625 3366 1.1599665 0 578 0 - 63000 1.2155508 3386 0.24486685 20.361101 21.266686 5.7864126 13090 42 42 0 63137 40320 5625 3386 1.1724234 0 578 0 - 64000 1.1967326 3379 0.2451834 20.402613 21.294179 4.8815049 13033 48 48 4 64152 40320 5625 3379 1.1818756 0 578 0 - 65000 1.1732378 3386 0.24500733 20.404824 21.278887 11.381026 12998 59 59 0 65071 40320 5625 3386 1.1625543 0 578 0 - 66000 1.1960739 3385 0.24407516 20.306852 21.197927 12.17249 12994 61 61 0 65941 40320 5625 3385 1.1826516 0 578 0 - 67000 1.3468331 3366 0.24657491 20.41164 21.415031 7.8115623 12894 62 62 1 66788 40320 5625 3366 1.1750424 0 578 0 - 68000 1.0742924 3369 0.24347736 20.345661 21.146009 9.5240252 13065 68 68 2 67665 40320 5625 3369 1.1561575 0 578 0 - 69000 1.1411254 3380 0.2450544 20.432836 21.282975 8.0392218 13134 49 49 1 68471 40320 5625 3380 1.1405485 0 578 0 - 70000 1.1585312 3388 0.24435206 20.358871 21.221977 7.5303626 13113 59 59 0 69320 40320 5625 3388 1.1726416 0 578 0 - 71000 1.3418857 3382 0.24598802 20.364355 21.36406 9.2840877 13265 68 68 0 70522 40320 5625 3382 1.1696767 0 578 0 - 72000 1.1547857 3388 0.24328952 20.26938 21.129695 7.9643121 13270 50 50 1 71384 40320 5625 3388 1.1647353 0 578 0 - 73000 1.1114283 3385 0.24397276 20.36102 21.189034 13.168935 13110 62 62 0 72335 40320 5625 3385 1.1625358 0 578 0 - 74000 1.6120075 3370 0.25009739 20.520013 21.720959 12.065782 12902 51 51 9 73743 40320 5625 3370 1.1873738 0 578 0 - 75000 1.3271087 3353 0.24600453 20.376798 21.365493 7.5902315 13076 51 51 1 74746 40320 5625 3353 1.1706259 0 578 0 - 76000 1.1908626 3386 0.2451628 20.405197 21.292389 6.8084086 13124 58 58 1 75702 40320 5625 3386 1.1765809 0 578 0 - 77000 1.042536 3391 0.24320847 20.345966 21.122655 6.4883579 12846 57 57 0 76930 40320 5625 3391 1.1769829 0 578 0 - 78000 1.3791243 3355 0.24628683 20.362563 21.390011 9.2397346 12897 56 56 12 78068 40320 5625 3355 1.1905167 0 578 0 - 79000 1.2058397 3391 0.2453076 20.406614 21.304965 9.7949819 13020 51 51 1 79065 40320 5625 3391 1.1777257 0 578 0 - 80000 1.0634737 3383 0.24440921 20.434652 21.22694 7.5296946 12973 61 61 2 80029 40320 5625 3383 1.1648017 0 578 0 - 81000 1.3768966 3373 0.24730623 20.452758 21.478546 7.1508584 13297 56 56 1 81172 40320 5625 3373 1.1740603 0 578 0 - 82000 1.3348382 3375 0.24680945 20.440946 21.4354 9.3251946 12822 56 56 2 82447 40320 5625 3375 1.1573749 0 578 0 - 83000 1.2042501 3393 0.24484972 20.368032 21.265198 7.5283729 12990 51 51 0 83344 40320 5625 3393 1.1833162 0 578 0 - 84000 1.1985223 3405 0.24537841 20.418216 21.311115 7.848856 13189 60 60 0 84147 40320 5625 3405 1.173911 0 578 0 - 85000 1.1811593 3391 0.24418657 20.32764 21.207604 8.3169438 13303 51 51 0 85022 40320 5625 3391 1.1586027 0 578 0 - 86000 1.2595689 3385 0.24556774 20.389179 21.327558 8.3808674 12966 56 56 1 85962 40320 5625 3385 1.1617838 0 578 0 - 87000 1.1419322 3356 0.24399697 20.340397 21.191137 6.8911116 13166 63 63 0 86753 40320 5625 3356 1.1729274 0 578 0 - 88000 1.275219 3380 0.24586129 20.403015 21.353053 6.838563 12963 56 56 0 87729 40320 5625 3380 1.1511968 0 578 0 - 89000 1.2794858 3366 0.24507826 20.33183 21.285047 9.3370019 12889 64 64 1 88575 40320 5625 3366 1.1660311 0 578 0 - 90000 1.0549593 3402 0.24289618 20.309589 21.095533 4.9944605 13076 59 59 1 89560 40320 5625 3402 1.1744335 0 578 0 - 91000 1.214812 3402 0.24442304 20.323106 21.228141 7.5681019 13229 44 44 1 90440 40320 5625 3402 1.1696689 0 578 0 - 92000 1.2019714 3374 0.24469176 20.356011 21.25148 7.6728432 13331 64 64 2 91243 40320 5625 3374 1.1678246 0 578 0 - 93000 1.0964004 3364 0.24364709 20.343931 21.16075 5.9650235 13086 55 55 0 92088 40320 5625 3364 1.1570838 0 578 0 - 94000 1.1722133 3393 0.24332541 20.259513 21.132812 7.1743779 13206 66 66 0 92858 40320 5625 3393 1.154328 0 578 0 - 95000 1.2413711 3373 0.24549874 20.396744 21.321566 8.131371 12967 61 61 1 93789 40320 5625 3373 1.1635681 0 578 0 - 96000 1.1702409 3363 0.24528289 20.430989 21.302819 11.399295 12776 63 63 0 94571 40320 5625 3363 1.1367365 0 578 0 - 97000 1.0696537 3368 0.242673 20.279258 21.07615 8.537175 13054 55 55 0 95403 40320 5625 3368 1.1648141 0 578 0 - 98000 1.1635952 3369 0.24486659 20.399785 21.266664 8.6714443 12750 70 70 0 96296 40320 5625 3369 1.1686272 0 578 0 - 99000 1.1286255 3397 0.24343772 20.30174 21.142566 6.7153212 12810 44 45 1 97021 40320 5625 3397 1.137818 0 578 0 - 100000 1.2847818 3367 0.24509282 20.329149 21.286312 8.7486629 13260 64 64 0 97855 40320 5625 3367 1.1597138 0 578 0 -Loop time of 20.8136 on 8 procs for 100000 steps with 17370 atoms - -Pair time (%) = 0.322913 (1.55145) -Neigh time (%) = 1.11753 (5.36921) -Comm time (%) = 1.72335 (8.27991) -Outpt time (%) = 0.00594518 (0.0285638) -Other time (%) = 17.6439 (84.7709) - -Nlocal: 2171.25 ave 2428 max 1747 min -Histogram: 1 0 0 0 1 1 2 1 0 2 -Nghost: 61.25 ave 69 max 54 min -Histogram: 1 1 0 1 1 1 0 2 0 1 -Neighs: 175.625 ave 225 max 132 min -Histogram: 1 1 1 1 1 0 1 0 0 2 - -Total # of neighbors = 1405 -Ave neighs/atom = 0.0808866 -Neighbor list builds = 5156 -Dangerous builds = 1 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/dimer/log.1Feb14.dimer.mp.g++.8 b/examples/ASPHERE/dimer/log.1Feb14.dimer.mp.g++.8 deleted file mode 100644 index 78fce92b49e..00000000000 --- a/examples/ASPHERE/dimer/log.1Feb14.dimer.mp.g++.8 +++ /dev/null @@ -1,237 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD viscosity demo - dimer particles - -units lj -atom_style sphere -atom_modify map array first big -dimension 2 - -# read in clusters of rigid bodies - -fix molprop all property/atom mol -read_data data.dimer fix molprop NULL Molecules - orthogonal box = (-9.34165 -9.34165 -0.5) to (9.34165 9.34165 0.5) - 4 by 2 by 1 MPI processor grid - reading atoms ... - 200 atoms - -set type 1 mass 1.0 - 200 settings made for mass -group big type 1 -200 atoms in group big -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 - -variable prefactor equal ramp(0,60) -fix soft all adapt 1 pair soft a * * v_prefactor - -fix 1 big rigid molecule -100 rigid bodies with 200 atoms -fix 2 all enforce2d - -#dump 1 all atom 10 dump.dimer.equil - -thermo 100 -run 1000 -Memory usage per processor = 3.1029 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3.4028231 0 0 0.83369167 -0.55065517 - 100 9.5167872 2.392105 0 4.7237178 2.8319556 - 200 13.564465 3.0352634 0 6.3585572 3.6388732 - 300 13.133051 4.3835112 0 7.6011086 4.060051 - 400 14.584346 5.5141254 0 9.0872901 4.4231056 - 500 15.331515 6.6554832 0 10.411704 4.847642 - 600 16.953755 7.4794317 0 11.633102 5.2020696 - 700 16.503256 8.8572339 0 12.900532 5.6694613 - 800 17.006131 9.877343 0 14.043845 5.5483363 - 900 17.305927 11.081594 0 15.321546 6.2908201 - 1000 18.122491 12.126462 0 16.566472 5.7536055 -Loop time of 0.0603173 on 8 procs for 1000 steps with 200 atoms - -Pair time (%) = 0.00182396 (3.02395) -Neigh time (%) = 0.000557959 (0.92504) -Comm time (%) = 0.0127766 (21.1823) -Outpt time (%) = 0.000280827 (0.465583) -Other time (%) = 0.0448779 (74.4031) - -Nlocal: 25 ave 30 max 20 min -Histogram: 1 0 1 1 0 0 3 1 0 1 -Nghost: 28.375 ave 36 max 22 min -Histogram: 1 0 1 2 1 0 2 0 0 1 -Neighs: 33.125 ave 45 max 22 min -Histogram: 1 0 2 1 0 1 1 0 1 1 - -Total # of neighbors = 265 -Ave neighs/atom = 1.325 -Neighbor list builds = 99 -Dangerous builds = 96 - -#undump 1 -unfix soft -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -Lattice spacing in x,y,z = 0.108465 0.108465 0.108465 -create_atoms 2 region plane -Created 29929 atoms - -set type 2 mass 0.1 - 29929 settings made for mass -group small type 2 -29929 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 - -delete_atoms overlap 0.5 small big -Deleted 12759 atoms, new total = 17370 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid molecule -100 rigid bodies with 200 atoms -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 500 dump.dimer.mp - -#dump 1 all image 500 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 50000 -SRD info: - SRD/big particles = 17170 200 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 75 75 1 - SRD grid size: request, actual (xyz) = 0.25, 0.249111 0.249111 1 - SRD per actual grid cell = 5.5499 - SRD viscosity = 0.235551 - big/SRD mass density ratio = 0.142367 - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.20347 7.72323 - ave/max big velocity = 2.64047 6.60911 -Memory usage per processor = 7.0395 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 6.9744766 0 0.30175295 21.011259 26.207244 2.7219331 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 1.906187 3319 0.25279446 20.53509 21.955199 9.3471734 14560 77 77 9 6051 40320 5625 3319 1.2073941 0 1062 0 - 2000 1.6009081 3420 0.25060769 20.572601 21.765278 12.835365 13521 63 63 1 7515 40320 5625 3420 1.1621445 0 1062 0 - 3000 1.8288965 3342 0.25195284 20.519576 21.882104 7.1720562 13550 62 62 1 8561 40320 5625 3342 1.1411375 0 1062 0 - 4000 1.8940522 3383 0.25185767 20.462769 21.873838 7.3011842 13210 55 55 0 9536 40320 5625 3383 1.1541274 0 1062 0 - 5000 1.7848964 3377 0.25063675 20.438054 21.767801 5.7235852 13258 60 60 1 10628 40320 5625 3377 1.1401366 0 1062 0 - 6000 2.0436442 3393 0.2528503 20.437534 21.960048 4.3266887 13369 65 65 1 11693 40320 5625 3393 1.1363335 0 1062 0 - 7000 2.0248598 3377 0.25304247 20.468218 21.976738 9.1535003 13126 69 69 2 12819 40320 5625 3377 1.1556137 0 1062 0 - 8000 1.9627172 3397 0.25201977 20.425693 21.887917 7.9563872 13216 58 58 3 14113 40320 5625 3397 1.144738 0 1062 0 - 9000 2.4805409 3385 0.25688024 20.462046 22.310049 6.0178529 13031 42 42 1 15329 40320 5625 3385 1.1667813 0 1062 0 - 10000 2.534712 3377 0.25802283 20.520922 22.409283 5.8494568 12804 49 50 1 16835 40320 5625 3377 1.1559636 0 1062 0 - 11000 2.4295377 3368 0.25671703 20.485869 22.295874 7.0797587 13097 56 56 2 18180 40320 5625 3368 1.1634145 0 1062 0 - 12000 2.5699389 3377 0.25784825 20.479516 22.39412 10.440503 13263 63 63 5 19848 40320 5625 3377 1.1714081 0 1062 0 - 13000 2.5416625 3359 0.25893582 20.595038 22.488576 6.823793 12926 57 57 1 21307 40320 5625 3359 1.1478982 0 1062 0 - 14000 2.9400702 3353 0.26140738 20.512878 22.703231 10.592709 12848 67 67 0 22782 40320 5625 3353 1.1642018 0 1062 0 - 15000 2.7315042 3364 0.26050572 20.589951 22.624922 7.6633608 12640 49 49 0 24273 40320 5625 3364 1.1532394 0 1062 0 - 16000 2.7176527 3389 0.25840703 20.418 22.442651 8.0150175 13019 59 59 1 25970 40320 5625 3389 1.1555937 0 1062 0 - 17000 2.883266 3355 0.26040537 20.468173 22.616206 6.053208 12916 54 54 1 27532 40320 5625 3355 1.1363169 0 1062 0 - 18000 2.8072496 3369 0.26013039 20.500924 22.592325 5.7179969 12989 45 45 0 29011 40320 5625 3369 1.1341799 0 1062 0 - 19000 2.8007066 3372 0.2602809 20.51887 22.605396 8.9063895 12817 59 59 1 30504 40320 5625 3372 1.1253001 0 1062 0 - 20000 3.0147455 3352 0.26233709 20.537991 22.783977 10.01786 13099 63 63 2 32100 40320 5625 3352 1.1263738 0 1062 0 - 21000 2.5502874 3354 0.25762968 20.475174 22.375138 7.4525361 12917 55 55 3 33904 40320 5625 3354 1.1432482 0 1062 0 - 22000 2.5643661 3357 0.25754499 20.45733 22.367782 9.5567227 12893 58 58 0 35500 40320 5625 3357 1.1309581 0 1062 0 - 23000 2.8451307 3387 0.26090715 20.540164 22.659786 7.8308779 12735 65 65 2 37080 40320 5625 3387 1.1666359 0 1062 0 - 24000 2.6241046 3341 0.25916876 20.553849 22.508807 9.7905794 12815 54 54 1 38864 40320 5625 3341 1.1422596 0 1062 0 - 25000 2.6054468 3374 0.25897446 20.550874 22.491932 9.4099539 13094 59 59 4 40505 40320 5625 3374 1.1887482 0 1062 0 - 26000 3.1370949 3356 0.26301193 20.50545 22.842586 9.930938 12785 59 59 0 42126 40320 5625 3356 1.1539158 0 1062 0 - 27000 2.757373 3361 0.26029623 20.552484 22.606727 7.4336931 12687 59 59 2 43728 40320 5625 3361 1.1408006 0 1062 0 - 28000 2.9939441 3393 0.26250984 20.568491 22.79898 9.201853 12802 66 66 0 45174 40320 5625 3393 1.1429688 0 1062 0 - 29000 3.1611971 3376 0.26252235 20.444974 22.800066 8.2146139 13042 48 48 0 46696 40320 5625 3376 1.1370708 0 1062 0 - 30000 2.2624796 3374 0.25475303 20.439753 22.125301 9.3304907 13249 53 53 1 48164 40320 5625 3374 1.1062325 0 1062 0 - 31000 2.6864602 3393 0.2607928 20.648442 22.649855 7.6108593 13028 58 58 0 49556 40320 5625 3393 1.1154125 0 1062 0 - 32000 2.8404087 3377 0.26037369 20.497351 22.613455 6.9017135 13055 63 63 1 51004 40320 5625 3377 1.1320087 0 1062 0 - 33000 2.8467378 3365 0.26095982 20.543541 22.664361 7.194747 13306 58 58 0 52481 40320 5625 3365 1.1312548 0 1062 0 - 34000 3.0833296 3382 0.26259198 20.509033 22.806114 7.44833 12988 59 60 1 54049 40320 5625 3382 1.1447344 0 1062 0 - 35000 3.1068536 3382 0.26441995 20.650266 22.964872 9.3804156 13139 54 54 0 55749 40320 5625 3382 1.1272861 0 1062 0 - 36000 2.6998442 3369 0.25864735 20.452138 22.463522 6.3327985 13317 52 52 0 57348 40320 5625 3369 1.1312386 0 1062 0 - 37000 2.600171 3376 0.25882039 20.541424 22.478551 9.3909788 12841 57 57 0 58880 40320 5625 3376 1.1319429 0 1062 0 - 38000 2.3962821 3367 0.25728672 20.560122 22.345352 7.4364329 13039 66 66 0 60627 40320 5625 3367 1.1468141 0 1062 0 - 39000 2.8548804 3422 0.26044489 20.492753 22.619638 6.0832552 13249 50 50 0 62327 40320 5625 3422 1.1442726 0 1062 0 - 40000 2.7721124 3375 0.25927374 20.452701 22.517924 10.368128 13197 55 55 1 63903 40320 5625 3375 1.140807 0 1062 0 - 41000 3.0463159 3378 0.26123216 20.418508 22.688013 10.179554 13030 64 64 0 65629 40320 5625 3378 1.1277894 0 1062 0 - 42000 2.9625288 3388 0.26205988 20.552817 22.759901 8.8326646 12958 64 64 0 67242 40320 5625 3388 1.159201 0 1062 0 - 43000 2.7524867 3347 0.2592403 20.464417 22.51502 10.30221 12815 65 65 2 68734 40320 5625 3347 1.1444123 0 1062 0 - 44000 2.8779981 3354 0.26009923 20.44551 22.589618 12.127509 12743 67 67 3 70309 40320 5625 3354 1.1467915 0 1062 0 - 45000 2.7833999 3365 0.25968205 20.479753 22.553386 8.6942365 12909 46 47 0 71846 40320 5625 3365 1.1480348 0 1062 0 - 46000 2.6564678 3370 0.25935897 20.546258 22.525327 9.2618375 12923 61 61 1 73491 40320 5625 3370 1.1528284 0 1062 0 - 47000 2.821625 3414 0.25999655 20.47859 22.5807 7.5359036 12861 55 55 2 75201 40320 5625 3414 1.1395745 0 1062 0 - 48000 2.9301623 3351 0.26139433 20.519127 22.702098 9.5177842 13037 49 49 2 76819 40320 5625 3351 1.1472505 0 1062 0 - 49000 2.528824 3390 0.25834586 20.553364 22.437338 8.953785 13127 49 49 0 78450 40320 5625 3390 1.1495903 0 1062 0 - 50000 3.0054471 3375 0.261046 20.432787 22.671845 7.9749959 13089 56 56 2 80717 40320 5625 3375 1.1574724 0 1062 0 -Loop time of 10.5055 on 8 procs for 50000 steps with 17370 atoms - -Pair time (%) = 0.156617 (1.49081) -Neigh time (%) = 0.556925 (5.30126) -Comm time (%) = 0.902042 (8.58637) -Outpt time (%) = 0.00305247 (0.0290559) -Other time (%) = 8.88688 (84.5925) - -Nlocal: 2171.25 ave 2567 max 1849 min -Histogram: 2 0 0 1 1 2 1 0 0 1 -Nghost: 62.625 ave 71 max 57 min -Histogram: 2 0 1 0 2 2 0 0 0 1 -Neighs: 168.25 ave 232 max 120 min -Histogram: 1 0 1 2 2 1 0 0 0 1 - -Total # of neighbors = 1346 -Ave neighs/atom = 0.0774899 -Neighbor list builds = 2599 -Dangerous builds = 17 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.1 b/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.1 new file mode 100644 index 00000000000..b74a5c42a99 --- /dev/null +++ b/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.1 @@ -0,0 +1,312 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - dimer particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 200 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 200 settings made for mass +group big type 1 +200 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.dimer.equil + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 27 27 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.557 | 5.557 | 5.557 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3.4028231 0 0 0.83369167 -0.55065517 + 100 9.5167872 2.392105 0 4.7237178 2.8319556 + 200 13.564465 3.0352634 0 6.3585572 3.6388732 + 300 13.133051 4.3835112 0 7.6011086 4.060051 + 400 14.576837 5.5141059 0 9.0854309 4.422762 + 500 15.227825 6.6472106 0 10.378028 4.8598912 + 600 16.93219 7.454865 0 11.603251 5.2908894 + 700 16.573769 8.7323442 0 12.792918 5.3544684 + 800 17.482599 9.7221047 0 14.005341 5.6200973 + 900 18.548144 10.739353 0 15.283649 4.7817995 + 1000 18.068079 12.058417 0 16.485096 6.5773091 +Loop time of 0.0511113 on 1 procs for 1000 steps with 200 atoms + +Performance: 8452141.519 tau/day, 19565.142 timesteps/s, 3.913 Matom-step/s +99.6% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0095507 | 0.0095507 | 0.0095507 | 0.0 | 18.69 +Neigh | 0.0042239 | 0.0042239 | 0.0042239 | 0.0 | 8.26 +Comm | 0.002203 | 0.002203 | 0.002203 | 0.0 | 4.31 +Output | 8.8531e-05 | 8.8531e-05 | 8.8531e-05 | 0.0 | 0.17 +Modify | 0.03336 | 0.03336 | 0.03336 | 0.0 | 65.27 +Other | | 0.001685 | | | 3.30 + +Nlocal: 200 ave 200 max 200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 64 ave 64 max 64 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 275 ave 275 max 275 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 275 +Ave neighs/atom = 1.375 +Neighbor list builds = 193 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 29929 atoms + using lattice units in orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + create_atoms CPU = 0.007 seconds + +set type 2 mass 0.1 +Setting atom values ... + 29929 settings made for mass +group small type 2 +29929 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 12776 atoms, new total = 17353 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.dimer + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 17153 200 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 75 75 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24911072 0.24911072 1 + SRD per actual grid cell = 5.544404 + SRD viscosity = 0.23553122 + big/SRD mass density ratio = 0.14250828 + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.191188 7.6900178 + ave/max big velocity = 2.6813242 7.1846104 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 18.683304, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 26.77 | 26.77 | 26.77 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 6.8392143 0 0.297476 20.71529 25.810505 4.0555741 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.2285566 3375 0.24673495 20.492683 21.407958 5.237464 13477 54 54 1 652 16900 5625 3375 1.1653557 0 15 0 + 2000 1.3561011 3395 0.24763991 20.476182 21.486477 9.2878509 13435 67 67 0 1504 16900 5625 3395 1.1651182 0 15 0 + 3000 1.2445369 3352 0.24713723 20.515681 21.442861 8.0289529 13186 62 63 2 2379 16900 5625 3352 1.1746721 0 15 0 + 4000 1.1058201 3389 0.24596239 20.51709 21.340926 10.003266 13466 66 66 0 3264 16900 5625 3389 1.1671415 0 15 0 + 5000 1.0584198 3407 0.24539623 20.503281 21.291804 9.1119405 13254 64 64 0 4189 16900 5625 3407 1.1687685 0 15 0 + 6000 1.3335611 3360 0.24737788 20.470239 21.463742 8.6885126 13281 62 62 1 5031 16900 5625 3360 1.1568996 0 15 0 + 7000 1.1384759 3401 0.24570869 20.47075 21.318914 9.1801119 13059 47 47 1 5878 16900 5625 3401 1.182474 0 15 0 + 8000 1.2982334 3397 0.24667224 20.435333 21.402517 6.5904007 13405 56 56 0 6729 16900 5625 3397 1.169017 0 24 0 + 9000 1.0456752 3381 0.24504517 20.482316 21.261344 10.497413 13205 81 81 2 7706 16900 5625 3381 1.1694675 0 24 0 + 10000 1.2222547 3394 0.24653264 20.479825 21.390405 8.7495888 13296 68 68 1 8581 16900 5625 3394 1.1613437 0 24 0 +Loop time of 7.18514 on 1 procs for 10000 steps with 17353 atoms + +Performance: 120248.165 tau/day, 1391.761 timesteps/s, 24.151 Matom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.14497 | 0.14497 | 0.14497 | 0.0 | 2.02 +Neigh | 0.031835 | 0.031835 | 0.031835 | 0.0 | 0.44 +Comm | 0.094201 | 0.094201 | 0.094201 | 0.0 | 1.31 +Output | 0.00082765 | 0.00082765 | 0.00082765 | 0.0 | 0.01 +Modify | 6.8507 | 6.8507 | 6.8507 | 0.0 | 95.35 +Other | | 0.06259 | | | 0.87 + +Nlocal: 17353 ave 17353 max 17353 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1334 ave 1334 max 1334 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1334 +Ave neighs/atom = 0.076874316 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:07 diff --git a/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.4 b/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.4 new file mode 100644 index 00000000000..447feb886d3 --- /dev/null +++ b/examples/ASPHERE/dimer/log.1Feb24.dimer.g++.4 @@ -0,0 +1,312 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - dimer particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 200 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 200 settings made for mass +group big type 1 +200 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.dimer.equil + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 27 27 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.553 | 5.553 | 5.553 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3.4028231 0 0 0.83369167 -0.55065517 + 100 9.5167872 2.392105 0 4.7237178 2.8319556 + 200 13.564465 3.0352634 0 6.3585572 3.6388732 + 300 13.133051 4.3835112 0 7.6011086 4.060051 + 400 14.576837 5.5141059 0 9.0854309 4.422762 + 500 15.227825 6.6472106 0 10.378028 4.8598912 + 600 16.93219 7.454865 0 11.603251 5.2908894 + 700 16.573769 8.7323442 0 12.792918 5.3544684 + 800 17.482599 9.7221047 0 14.005341 5.6200973 + 900 18.548144 10.739353 0 15.283649 4.7817995 + 1000 18.068079 12.058417 0 16.485096 6.5773093 +Loop time of 0.0424792 on 4 procs for 1000 steps with 200 atoms + +Performance: 10169676.521 tau/day, 23540.918 timesteps/s, 4.708 Matom-step/s +98.0% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0022758 | 0.0023448 | 0.002442 | 0.1 | 5.52 +Neigh | 0.0011082 | 0.0011236 | 0.0011582 | 0.1 | 2.64 +Comm | 0.0099484 | 0.010092 | 0.010247 | 0.1 | 23.76 +Output | 9.551e-05 | 0.00010604 | 0.00013381 | 0.0 | 0.25 +Modify | 0.026025 | 0.026222 | 0.026405 | 0.1 | 61.73 +Other | | 0.00259 | | | 6.10 + +Nlocal: 50 ave 55 max 47 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Nghost: 33.75 ave 38 max 32 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Neighs: 68.75 ave 77 max 64 min +Histogram: 2 0 0 1 0 0 0 0 0 1 + +Total # of neighbors = 275 +Ave neighs/atom = 1.375 +Neighbor list builds = 193 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 29929 atoms + using lattice units in orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + create_atoms CPU = 0.002 seconds + +set type 2 mass 0.1 +Setting atom values ... + 29929 settings made for mass +group small type 2 +29929 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 12776 atoms, new total = 17353 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.dimer + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 17153 200 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 75 75 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24911072 0.24911072 1 + SRD per actual grid cell = 5.544404 + SRD viscosity = 0.23553122 + big/SRD mass density ratio = 0.14250828 + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.191188 7.6900178 + ave/max big velocity = 2.6813242 7.1846103 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 18.683304, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 13.2 | 13.21 | 13.22 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 6.8392143 0 0.297476 20.71529 25.810505 4.0555746 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.1648085 3389 0.24643931 20.514525 21.382307 5.5927686 13390 59 59 0 1015 28224 5625 3389 1.1513276 0 111 0 + 2000 1.1870311 3385 0.24701637 20.548037 21.432375 5.9269821 13271 57 57 2 1878 28224 5625 3385 1.1619099 0 111 0 + 3000 1.1362839 3365 0.24577276 20.477942 21.324474 5.1621045 13244 59 60 1 2778 28224 5625 3365 1.1807679 0 111 0 + 4000 1.3023748 3390 0.24679509 20.442907 21.413176 5.6127077 13413 65 65 1 3705 28224 5625 3390 1.1726946 0 111 0 + 5000 1.195496 3387 0.2458055 20.43667 21.327314 6.1843476 13248 51 51 1 4638 28224 5625 3387 1.1730279 0 111 0 + 6000 1.2389419 3387 0.24546635 20.374876 21.297888 5.5909826 13184 54 54 1 5494 28224 5625 3387 1.1859134 0 111 0 + 7000 1.2068912 3378 0.24564722 20.414447 21.313581 8.5604547 13188 57 57 1 6428 28224 5625 3378 1.1499181 0 111 0 + 8000 1.1014154 3374 0.24514746 20.449665 21.270219 7.3483529 13179 63 63 0 7591 28224 5625 3374 1.1769322 0 121 0 + 9000 1.356464 3388 0.24749513 20.463349 21.473915 7.6809833 13138 50 50 2 8485 28224 5625 3388 1.1448659 0 121 0 + 10000 1.1632951 3402 0.24560819 20.44354 21.310195 9.5738599 13323 64 67 0 9304 28224 5625 3402 1.1550136 0 121 0 +Loop time of 2.47185 on 4 procs for 10000 steps with 17353 atoms + +Performance: 349536.432 tau/day, 4045.561 timesteps/s, 70.203 Matom-step/s +99.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.037524 | 0.039903 | 0.042215 | 1.1 | 1.61 +Neigh | 0.01053 | 0.010805 | 0.011068 | 0.2 | 0.44 +Comm | 0.14536 | 0.14822 | 0.15102 | 0.6 | 6.00 +Output | 0.00051847 | 0.00054674 | 0.0006272 | 0.0 | 0.02 +Modify | 2.2276 | 2.2334 | 2.2381 | 0.3 | 90.35 +Other | | 0.03895 | | | 1.58 + +Nlocal: 4338.25 ave 4488 max 4277 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Nghost: 76.75 ave 85 max 69 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 331.25 ave 355 max 306 min +Histogram: 1 0 0 1 0 0 1 0 0 1 + +Total # of neighbors = 1325 +Ave neighs/atom = 0.076355673 +Neighbor list builds = 507 +Dangerous builds = 0 +Total wall time: 0:00:02 diff --git a/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.1 b/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.1 new file mode 100644 index 00000000000..8c426db53c6 --- /dev/null +++ b/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.1 @@ -0,0 +1,328 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - dimer particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 200 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 200 settings made for mass +group big type 1 +200 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.dimer.equil + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 27 27 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.557 | 5.557 | 5.557 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3.4028231 0 0 0.83369167 -0.55065517 + 100 9.5167872 2.392105 0 4.7237178 2.8319556 + 200 13.564465 3.0352634 0 6.3585572 3.6388732 + 300 13.133051 4.3835112 0 7.6011086 4.060051 + 400 14.576837 5.5141059 0 9.0854309 4.422762 + 500 15.227825 6.6472106 0 10.378028 4.8598912 + 600 16.93219 7.454865 0 11.603251 5.2908894 + 700 16.573769 8.7323442 0 12.792918 5.3544684 + 800 17.482599 9.7221047 0 14.005341 5.6200973 + 900 18.548144 10.739353 0 15.283649 4.7817995 + 1000 18.068079 12.058417 0 16.485096 6.5773091 +Loop time of 0.0502552 on 1 procs for 1000 steps with 200 atoms + +Performance: 8596132.389 tau/day, 19898.455 timesteps/s, 3.980 Matom-step/s +99.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0095071 | 0.0095071 | 0.0095071 | 0.0 | 18.92 +Neigh | 0.0042809 | 0.0042809 | 0.0042809 | 0.0 | 8.52 +Comm | 0.0022049 | 0.0022049 | 0.0022049 | 0.0 | 4.39 +Output | 0.0001259 | 0.0001259 | 0.0001259 | 0.0 | 0.25 +Modify | 0.032467 | 0.032467 | 0.032467 | 0.0 | 64.60 +Other | | 0.00167 | | | 3.32 + +Nlocal: 200 ave 200 max 200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 64 ave 64 max 64 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 275 ave 275 max 275 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 275 +Ave neighs/atom = 1.375 +Neighbor list builds = 193 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 29929 atoms + using lattice units in orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + create_atoms CPU = 0.006 seconds + +set type 2 mass 0.1 +Setting atom values ... + 29929 settings made for mass +group small type 2 +29929 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 12776 atoms, new total = 17353 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 500 dump.dimer.mp + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 25000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 17153 200 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 75 75 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24911072 0.24911072 1 + SRD per actual grid cell = 5.544404 + SRD viscosity = 0.23553122 + big/SRD mass density ratio = 0.14250828 + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.191188 7.6900178 + ave/max big velocity = 2.6813242 7.1846104 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 18.683304, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 26.77 | 26.77 | 26.77 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 6.8392143 0 0.297476 20.71529 25.810505 4.0555741 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.3421139 3394 0.24797209 20.515424 21.515299 5.9986227 13474 52 52 1 704 16900 5625 3394 1.1328453 0 14 0 + 2000 1.3372296 3366 0.24694513 20.429958 21.426194 9.640193 13302 74 74 0 1516 16900 5625 3366 1.1634167 0 14 0 + 3000 1.4022742 3360 0.24799552 20.472637 21.517331 5.9446731 13483 47 47 0 2989 16900 5625 3360 1.1774442 0 217 0 + 4000 1.6325677 3376 0.25066282 20.532497 21.74876 6.9698781 13206 61 61 2 4198 16900 5625 3376 1.1749717 0 217 0 + 5000 2.0992887 3391 0.25484065 20.547279 22.111249 10.648531 13414 62 69 1 6389 16900 5625 3391 1.1862903 0 412 0 + 6000 1.7584548 3388 0.25126127 20.490636 21.800684 8.68036 13456 58 58 0 7672 16900 5625 3388 1.1553986 0 412 0 + 7000 2.2384486 3343 0.25650382 20.58791 22.255554 12.008146 13187 59 59 0 8879 16900 5625 3343 1.1728994 0 412 0 + 8000 2.4981644 3380 0.25734806 20.467672 22.328804 6.7156077 13383 51 51 0 10085 16900 5625 3380 1.156205 0 412 0 + 9000 2.4321991 3384 0.25838085 20.606426 22.418415 9.9820399 12847 55 55 0 11445 16900 5625 3384 1.156145 0 412 0 + 10000 2.2560205 3387 0.25541566 20.480404 22.161139 10.87418 13022 66 66 0 12863 16900 5625 3387 1.1559136 0 412 0 + 11000 2.2321955 3378 0.25533735 20.491359 22.154345 8.510825 13175 70 70 1 14273 16900 5625 3378 1.1470284 0 412 0 + 12000 2.2715125 3377 0.25469529 20.40636 22.098637 9.0604601 13146 68 68 0 15742 16900 5625 3377 1.171755 0 412 0 + 13000 2.3766974 3364 0.25667348 20.499635 22.270275 10.766786 12829 60 60 1 17214 16900 5625 3364 1.130354 0 412 0 + 14000 2.5659704 3347 0.25802994 20.47632 22.387967 8.2568074 13090 66 66 1 18767 16900 5625 3347 1.1609852 0 412 0 + 15000 2.3235671 3400 0.25603152 20.483517 22.214574 5.4785711 13389 50 50 0 20173 16900 5625 3400 1.149754 0 412 0 + 16000 2.6335413 3373 0.25956137 20.558854 22.520843 4.7121947 13027 58 58 1 21668 16900 5625 3373 1.1308267 0 412 0 + 17000 2.5603168 3410 0.25744829 20.430065 22.337501 6.1898616 13218 51 51 1 23170 16900 5625 3410 1.1285699 0 412 0 + 18000 2.7801428 3362 0.26002524 20.489884 22.56109 8.9919312 13002 57 57 3 24829 16900 5625 3362 1.1610153 0 412 0 + 19000 2.7869738 3364 0.26033026 20.51126 22.587555 9.6539159 13085 46 46 0 26476 16900 5625 3364 1.1431913 0 412 0 + 20000 2.678182 3383 0.2586317 20.444934 22.44018 7.3468277 12939 42 42 0 27992 16900 5625 3383 1.143534 0 412 0 + 21000 2.8094503 3375 0.26088069 20.542272 22.635313 8.2257869 13449 52 52 0 29570 16900 5625 3375 1.1375499 0 412 0 + 22000 3.2220363 3377 0.26464914 20.561866 22.962283 6.6329375 13178 65 65 6 31203 16900 5625 3377 1.1683184 0 412 0 + 23000 3.2268368 3339 0.26414495 20.514543 22.918536 4.6879815 12589 51 51 0 32929 16900 5625 3339 1.1378613 0 412 0 + 24000 2.6062461 3380 0.25967238 20.588821 22.530474 10.036449 12745 53 54 0 34460 16900 5625 3380 1.1396017 0 412 0 + 25000 3.2519674 3373 0.26376614 20.462953 22.885669 7.7592712 12856 52 52 1 36172 16900 5625 3373 1.1858891 0 412 0 +Loop time of 20.7208 on 1 procs for 25000 steps with 17353 atoms + +Performance: 104243.242 tau/day, 1206.519 timesteps/s, 20.937 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.39343 | 0.39343 | 0.39343 | 0.0 | 1.90 +Neigh | 0.09039 | 0.09039 | 0.09039 | 0.0 | 0.44 +Comm | 0.26483 | 0.26483 | 0.26483 | 0.0 | 1.28 +Output | 0.0021023 | 0.0021023 | 0.0021023 | 0.0 | 0.01 +Modify | 19.785 | 19.785 | 19.785 | 0.0 | 95.49 +Other | | 0.1847 | | | 0.89 + +Nlocal: 17353 ave 17353 max 17353 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 146 ave 146 max 146 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1326 ave 1326 max 1326 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1326 +Ave neighs/atom = 0.0764133 +Neighbor list builds = 1290 +Dangerous builds = 0 +Total wall time: 0:00:21 diff --git a/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.4 b/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.4 new file mode 100644 index 00000000000..0cced46f263 --- /dev/null +++ b/examples/ASPHERE/dimer/log.1Feb24.dimer.mp.g++.4 @@ -0,0 +1,328 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - dimer particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.dimer fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 200 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 200 settings made for mass +group big type 1 +200 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.dimer.equil + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 27 27 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.553 | 5.553 | 5.553 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3.4028231 0 0 0.83369167 -0.55065517 + 100 9.5167872 2.392105 0 4.7237178 2.8319556 + 200 13.564465 3.0352634 0 6.3585572 3.6388732 + 300 13.133051 4.3835112 0 7.6011086 4.060051 + 400 14.576837 5.5141059 0 9.0854309 4.422762 + 500 15.227825 6.6472106 0 10.378028 4.8598912 + 600 16.93219 7.454865 0 11.603251 5.2908894 + 700 16.573769 8.7323442 0 12.792918 5.3544684 + 800 17.482599 9.7221047 0 14.005341 5.6200973 + 900 18.548144 10.739353 0 15.283649 4.7817995 + 1000 18.068079 12.058417 0 16.485096 6.5773093 +Loop time of 0.0421376 on 4 procs for 1000 steps with 200 atoms + +Performance: 10252121.014 tau/day, 23731.762 timesteps/s, 4.746 Matom-step/s +99.2% 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.002222 | 0.0023177 | 0.0024199 | 0.2 | 5.50 +Neigh | 0.0010943 | 0.0011428 | 0.001174 | 0.1 | 2.71 +Comm | 0.0097533 | 0.009878 | 0.010001 | 0.1 | 23.44 +Output | 9.4323e-05 | 0.0001028 | 0.00012783 | 0.0 | 0.24 +Modify | 0.02557 | 0.026225 | 0.026638 | 0.3 | 62.24 +Other | | 0.002471 | | | 5.86 + +Nlocal: 50 ave 55 max 47 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Nghost: 33.75 ave 38 max 32 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Neighs: 68.75 ave 77 max 64 min +Histogram: 2 0 0 1 0 0 0 0 0 1 + +Total # of neighbors = 275 +Ave neighs/atom = 1.375 +Neighbor list builds = 193 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 29929 atoms + using lattice units in orthogonal box = (-9.341652 -9.341652 -0.5) to (9.341652 9.341652 0.5) + create_atoms CPU = 0.002 seconds + +set type 2 mass 0.1 +Setting atom values ... + 29929 settings made for mass +group small type 2 +29929 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 12776 atoms, new total = 17353 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 100 rigid bodies with 200 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 500 dump.dimer.mp + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 25000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 17153 200 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 75 75 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24911072 0.24911072 1 + SRD per actual grid cell = 5.544404 + SRD viscosity = 0.23553122 + big/SRD mass density ratio = 0.14250828 + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.191188 7.6900178 + ave/max big velocity = 2.6813242 7.1846103 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 18.683304, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 13.2 | 13.21 | 13.22 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 6.8392143 0 0.297476 20.71529 25.810505 4.0555746 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.2739082 3360 0.24704957 20.486195 21.435256 3.6693454 13497 46 46 2 816 28224 5625 3360 1.1564821 0 54 0 + 2000 1.3843858 3380 0.24759985 20.451634 21.483001 5.2299666 13363 70 70 0 1671 28224 5625 3380 1.170199 0 54 0 + 3000 1.3942166 3373 0.24823326 20.499268 21.537959 7.7943821 13214 59 59 2 2600 28224 5625 3373 1.1539593 0 54 0 + 4000 1.6387342 3366 0.24966206 20.441071 21.661928 4.3859226 13280 49 49 2 3568 28224 5625 3366 1.176006 0 54 0 + 5000 1.8677297 3388 0.25278915 20.541792 21.933251 5.9053775 13238 68 68 2 4553 28224 5625 3388 1.1728833 0 54 0 + 6000 1.8884914 3372 0.25216944 20.472555 21.879481 7.5864922 13142 62 62 1 5645 28224 5625 3372 1.1733967 0 54 0 + 7000 2.0575519 3387 0.25374609 20.483403 22.016279 6.9842803 13101 41 41 0 6805 28224 5625 3387 1.1503024 0 54 0 + 8000 1.9800593 3373 0.252975 20.474232 21.949376 8.3493951 13176 63 64 1 8166 28224 5625 3373 1.1621339 0 67 0 + 9000 2.2288114 3403 0.25526729 20.487802 22.148267 6.7676677 12866 61 61 1 9360 28224 5625 3403 1.1446891 0 67 0 + 10000 2.4854456 3339 0.25713924 20.45903 22.310687 9.3781009 12692 65 65 1 10680 28224 5625 3339 1.1417733 0 67 0 + 11000 2.5850677 3335 0.25820147 20.476975 22.402851 9.9421534 12954 70 70 2 11964 28224 5625 3335 1.1497985 0 67 0 + 12000 2.5087529 3358 0.25746572 20.469992 22.339013 9.9566718 12959 58 58 0 13462 28224 5625 3358 1.1365643 0 98 0 + 13000 2.5480838 3371 0.25761214 20.453395 22.351717 8.6628089 13142 54 54 3 14985 28224 5625 3371 1.1510123 0 98 0 + 14000 2.946645 3384 0.26176446 20.516743 22.711994 8.5668798 12579 53 53 0 16336 28224 5625 3384 1.1546089 0 98 0 + 15000 4.025292 3338 0.27188564 20.591315 23.590157 9.8722859 12824 50 50 15 18115 28224 5625 3338 1.164518 0 122 0 + 16000 2.2744945 3376 0.25598709 20.516221 22.21072 9.1890215 13020 52 52 0 19689 28224 5625 3376 1.1439385 0 122 0 + 17000 2.3857021 3353 0.25662954 20.489114 22.266462 10.24809 12776 51 51 0 21158 28224 5625 3353 1.1435041 0 122 0 + 18000 2.9678193 3330 0.26255063 20.56918 22.780206 8.6799225 12810 49 49 2 23066 28224 5625 3330 1.1567395 0 133 0 + 19000 2.7464034 3368 0.2613984 20.634162 22.680232 9.5420188 12746 47 47 3 24675 28224 5625 3368 1.1426658 0 133 0 + 20000 2.8228684 3367 0.26137363 20.575046 22.678083 8.0865322 12886 51 51 0 26119 28224 5625 3367 1.1484398 0 133 0 + 21000 2.8903033 3389 0.26173565 20.556218 22.709494 11.038294 13152 41 41 1 27685 28224 5625 3389 1.1398936 0 133 0 + 22000 2.8279828 3331 0.26058759 20.503035 22.609882 8.3647396 12895 57 57 1 29333 28224 5625 3331 1.1551348 0 133 0 + 23000 2.9320035 3376 0.26178899 20.529779 22.714121 7.1841698 13077 54 54 1 30908 28224 5625 3376 1.1453809 0 133 0 + 24000 2.8508425 3366 0.26104722 20.525884 22.649762 10.680819 13019 58 58 4 32831 28224 5625 3366 1.1391852 0 154 0 + 25000 2.7878254 3333 0.25961 20.448132 22.525062 11.149479 12960 57 57 1 34494 28224 5625 3333 1.172964 0 154 0 +Loop time of 6.5335 on 4 procs for 25000 steps with 17353 atoms + +Performance: 330603.792 tau/day, 3826.433 timesteps/s, 66.400 Matom-step/s +99.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.097519 | 0.10401 | 0.10744 | 1.2 | 1.59 +Neigh | 0.027038 | 0.028067 | 0.028678 | 0.4 | 0.43 +Comm | 0.39354 | 0.39697 | 0.40246 | 0.6 | 6.08 +Output | 0.0013442 | 0.0014045 | 0.0015827 | 0.3 | 0.02 +Modify | 5.8667 | 5.8905 | 5.9143 | 0.8 | 90.16 +Other | | 0.1126 | | | 1.72 + +Nlocal: 4338.25 ave 4476 max 4199 min +Histogram: 1 1 0 0 0 0 0 0 1 1 +Nghost: 78.5 ave 83 max 75 min +Histogram: 1 0 1 0 0 1 0 0 0 1 +Neighs: 328 ave 352 max 309 min +Histogram: 1 0 0 2 0 0 0 0 0 1 + +Total # of neighbors = 1312 +Ave neighs/atom = 0.075606523 +Neighbor list builds = 1274 +Dangerous builds = 0 +Total wall time: 0:00:06 diff --git a/examples/ASPHERE/ellipsoid/in.ellipsoid b/examples/ASPHERE/ellipsoid/in.ellipsoid index 1ee59597dab..de972e02f6a 100644 --- a/examples/ASPHERE/ellipsoid/in.ellipsoid +++ b/examples/ASPHERE/ellipsoid/in.ellipsoid @@ -116,4 +116,4 @@ thermo 1000 #dump 2 all image 1000 image.*.jpg type type zoom 1.6 #dump_modify 2 pad 6 adiam 1 1 adiam 2 0.2 -run 100000 +run 10000 diff --git a/examples/ASPHERE/ellipsoid/in.ellipsoid.mp b/examples/ASPHERE/ellipsoid/in.ellipsoid.mp index 31fe79eb58c..9af32cd2d5b 100644 --- a/examples/ASPHERE/ellipsoid/in.ellipsoid.mp +++ b/examples/ASPHERE/ellipsoid/in.ellipsoid.mp @@ -117,4 +117,4 @@ thermo 1000 #dump 1 all image 500 image.*.jpg type type zoom 1.6 #dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 -run 50000 +run 10000 diff --git a/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.g++.8 b/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.g++.8 deleted file mode 100644 index 1b9fc31a5a5..00000000000 --- a/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.g++.8 +++ /dev/null @@ -1,190 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD diffusion demo - ellipsoids - -units lj -atom_style ellipsoid -atom_modify first big -dimension 2 - -# create big ellipsoidal particles - -lattice sq 0.14 -Lattice spacing in x,y,z = 2.67261 2.67261 2.67261 -region box block 0 10 0 10 -0.5 0.5 -create_box 2 box -Created orthogonal box = (0 0 -1.33631) to (26.7261 26.7261 1.33631) - 4 by 2 by 1 MPI processor grid -create_atoms 1 region box -Created 100 atoms - -set type 1 mass 1.0 - 100 settings made for mass -set type 1 shape 3.0 1.0 1.0 - 100 settings made for shape -group big type 1 -100 atoms in group big -set group big quat/random 29898 - 100 settings made for quat/random - -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style gayberne 1.0 3.0 1.0 4.0 -pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 -pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 -pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big nve/asphere -fix 2 all enforce2d - -compute rot big temp/asphere - -#dump 1 all custom 10 dump.ellipsoid.equil id type x y z # quatw quati quatj quatk - -thermo_style custom step temp c_rot epair etotal press -thermo 100 - -run 1000 -Memory usage per processor = 3.31932 Mbytes -Step Temp rot E_pair TotEng Press - 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 - 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 - 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 - 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 - 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 - 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 - 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 - 700 2.9593679 2.8231211 -0.40051714 2.5292571 1.1630889 - 800 2.7632971 2.9060854 -0.52075339 2.2149107 0.77106814 - 900 2.9905601 2.8869672 -0.49099457 2.4696599 0.69616725 - 1000 2.8470146 2.9004954 -0.51281252 2.305732 0.68820531 -Loop time of 0.0485955 on 8 procs for 1000 steps with 100 atoms - -Pair time (%) = 0.0201517 (41.4682) -Neigh time (%) = 0.000492364 (1.01319) -Comm time (%) = 0.0191883 (39.4858) -Outpt time (%) = 0.000273198 (0.562188) -Other time (%) = 0.00848994 (17.4706) - -Nlocal: 12.5 ave 16 max 8 min -Histogram: 1 1 0 0 0 3 0 0 1 2 -Nghost: 34.125 ave 42 max 28 min -Histogram: 1 0 2 2 0 1 0 1 0 1 -Neighs: 46.125 ave 65 max 20 min -Histogram: 1 0 1 0 1 2 0 0 1 2 - -Total # of neighbors = 369 -Ave neighs/atom = 3.69 -Neighbor list builds = 174 -Dangerous builds = 0 - -#undump 1 -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 120.0 -Lattice spacing in x,y,z = 0.0912871 0.0912871 0.0912871 -create_atoms 2 region plane -Created 85849 atoms - -set type 2 mass 0.01 - 85849 settings made for mass -group small type 2 -85849 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 2.0 - -neigh_modify one 10000 - -delete_atoms overlap 1.6 small big -Deleted 71060 atoms, new total = 14889 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style gayberne 1.0 3.0 1.0 4.0 -pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 -pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 -pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.0005 - -fix 1 big nve/asphere -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 -fix 3 all enforce2d - -# diagnostics - -compute tbig big temp/asphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all custom 1000 dump.ellipsoid id type x y z # quatw quati quatj quatk - -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 100000 -SRD info: - SRD/big particles = 14789 100 - big particle diameter max/min = 3 1 - SRD temperature & lamda = 1 0.1 - SRD max distance & max velocity = 0.4 40 - SRD grid counts: 107 107 1 - SRD grid size: request, actual (xyz) = 0.25, 0.249777 0.249777 2.67261 - SRD per actual grid cell = 1.92757 - SRD viscosity = 0.688101 - big/SRD mass density ratio = 1.37367 - # of rescaled SRD velocities = 0 - ave/max small velocity = 13.3093 24.3359 - ave/max big velocity = 2.08028 5.05671 -Memory usage per processor = 10.9077 Mbytes -Step Temp rot 2[9] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 2.9004954 2.9004954 0 0.025582146 -0.51281252 3.8089257 0.89865242 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 3.3106106 3.3106106 1.0635866 0.029956176 -0.47263474 4.4601751 1.8111247 14000 35 160 0 224946 98040 11449 4182 1.0635866 1047 50 0 - 2000 2.2814487 2.2814487 1.2237286 0.017972589 -0.72341981 2.6759388 1.3454977 15318 47 276 0 528340 98040 11449 4136 1.2237286 2383 50 0 - 3000 4.2476485 4.2476485 1.2992612 0.038526442 -0.59279435 5.7362019 1.6896403 16506 63 410 0 830594 98040 11449 4172 1.2992612 3834 50 0 - 4000 2.4798681 2.4798681 1.3453264 0.022837826 -0.29467953 3.4003239 2.0765724 17201 51 403 0 1185573 98040 11449 4233 1.3453264 5456 50 0 - 5000 3.0852629 3.0852629 1.3915904 0.02760985 -0.48621111 4.1108305 1.2676357 17540 61 591 0 1594856 98040 11449 4306 1.3915904 7419 50 0 - 6000 6.7201122 6.7201122 1.3649223 0.064627842 -0.39052776 9.6224394 2.5524159 17997 59 564 0 2010250 98040 11449 4213 1.3649223 9280 50 0 - 7000 2.720343 2.720343 1.3909677 0.024282471 -0.43789405 3.6154171 1.5288376 17922 64 342 0 2392388 98040 11449 4228 1.3909677 10947 50 0 - 8000 1.9181626 1.9181626 1.3514483 0.014305579 -0.72810462 2.1299577 0.89423917 18188 42 260 0 2751626 98040 11449 4236 1.3514483 12556 50 0 - 9000 2.9090186 2.9090186 1.3688847 0.02558926 -0.52445278 3.8099849 1.1756318 18536 63 440 0 3112508 98040 11449 4227 1.3688847 14164 50 0 - 10000 1.9647403 1.9647403 1.3979066 0.015375037 -0.63827389 2.2891892 0.65597214 18817 60 466 0 3501352 98040 11449 4257 1.3979066 16016 50 0 - 11000 1.9989051 1.9989051 1.3872043 0.016191243 -0.56765443 2.4107142 0.80582429 18756 58 767 0 3856028 98040 11449 4254 1.3872043 17611 50 0 - 12000 1.7538755 1.7538755 1.4594883 0.013930543 -0.53915598 2.0741185 1.0563875 18602 58 335 0 4248666 98040 11449 4251 1.4594883 19350 50 0 - 13000 13.730871 13.730871 1.4864545 0.13447802 -0.43656501 20.022433 3.6701166 19144 74 681 0 4708523 98040 11449 4104 1.4864545 21589 50 0 - 14000 5.1078782 5.1078782 1.3637807 0.049721182 -0.20775172 7.4029868 2.559935 18494 65 713 0 5139143 98040 11449 4167 1.3637807 23555 50 0 - 15000 2.5843962 2.5843962 1.3450247 0.022294373 -0.53134114 3.3194092 1.1069147 18489 52 260 0 5489252 98040 11449 4262 1.3450247 25209 50 0 -ERROR: Lost atoms: original 14889 current 14819 (../thermo.cpp:392) diff --git a/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.mp.g++.8 b/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.mp.g++.8 deleted file mode 100644 index 052f3116f61..00000000000 --- a/examples/ASPHERE/ellipsoid/log.1Feb14.ellipsoid.mp.g++.8 +++ /dev/null @@ -1,247 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD viscosity demo - ellipsoids - -units lj -atom_style ellipsoid -atom_modify first big -dimension 2 - -# create big ellipsoidal particles - -lattice sq 0.14 -Lattice spacing in x,y,z = 2.67261 2.67261 2.67261 -region box block 0 10 0 10 -0.5 0.5 -create_box 2 box -Created orthogonal box = (0 0 -1.33631) to (26.7261 26.7261 1.33631) - 4 by 2 by 1 MPI processor grid -create_atoms 1 region box -Created 100 atoms - -set type 1 mass 1.0 - 100 settings made for mass -set type 1 shape 3.0 1.0 1.0 - 100 settings made for shape -group big type 1 -100 atoms in group big -set group big quat/random 29898 - 100 settings made for quat/random - -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style gayberne 1.0 3.0 1.0 4.0 -pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 -pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 -pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big nve/asphere -fix 2 all enforce2d - -compute rot big temp/asphere - -#dump 1 all custom 10 dump.ellipsoid.equil id type x y z # quatw quati quatj quatk - -thermo_style custom step temp c_rot epair etotal press -thermo 100 - -run 1000 -Memory usage per processor = 3.31932 Mbytes -Step Temp rot E_pair TotEng Press - 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 - 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 - 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 - 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 - 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 - 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 - 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 - 700 2.9593679 2.8231211 -0.40051714 2.5292571 1.1630889 - 800 2.7632971 2.9060854 -0.52075339 2.2149107 0.77106814 - 900 2.9905601 2.8869672 -0.49099457 2.4696599 0.69616725 - 1000 2.8470146 2.9004954 -0.51281252 2.305732 0.68820531 -Loop time of 0.0581853 on 8 procs for 1000 steps with 100 atoms - -Pair time (%) = 0.0202803 (34.8546) -Neigh time (%) = 0.000480682 (0.826122) -Comm time (%) = 0.0264942 (45.5342) -Outpt time (%) = 0.000326395 (0.560958) -Other time (%) = 0.0106037 (18.2241) - -Nlocal: 12.5 ave 16 max 8 min -Histogram: 1 1 0 0 0 3 0 0 1 2 -Nghost: 34.125 ave 42 max 28 min -Histogram: 1 0 2 2 0 1 0 1 0 1 -Neighs: 46.125 ave 65 max 20 min -Histogram: 1 0 1 0 1 2 0 0 1 2 - -Total # of neighbors = 369 -Ave neighs/atom = 3.69 -Neighbor list builds = 174 -Dangerous builds = 0 - -#undump 1 -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 120.0 -Lattice spacing in x,y,z = 0.0912871 0.0912871 0.0912871 -create_atoms 2 region plane -Created 85849 atoms - -set type 2 mass 0.01 - 85849 settings made for mass -group small type 2 -85849 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 2.0 - -neigh_modify one 10000 - -delete_atoms overlap 1.6 small big -Deleted 71060 atoms, new total = 14889 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style gayberne 1.0 3.0 1.0 4.0 -pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 -pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 -pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.0005 - -fix 1 big nve/asphere -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 -fix 3 small viscosity 20 x y 50 -fix 4 all enforce2d - -# diagnostics - -compute tbig big temp/asphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all custom 500 dump.ellipsoid.mp id type x y z # quatw quati quatj quatk - -#dump 1 all image 500 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 50000 -SRD info: - SRD/big particles = 14789 100 - big particle diameter max/min = 3 1 - SRD temperature & lamda = 1 0.1 - SRD max distance & max velocity = 0.4 40 - SRD grid counts: 107 107 1 - SRD grid size: request, actual (xyz) = 0.25, 0.249777 0.249777 2.67261 - SRD per actual grid cell = 1.92757 - SRD viscosity = 0.688101 - big/SRD mass density ratio = 1.37367 - # of rescaled SRD velocities = 0 - ave/max small velocity = 13.3093 24.3359 - ave/max big velocity = 2.08028 5.05671 -Memory usage per processor = 10.9077 Mbytes -Step Temp rot 2[9] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 2.9004954 2.9004954 0 0.025582146 -0.51281252 3.8089257 0.89865242 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 3.1663129 3.1663129 1.0612788 0.028825811 -0.42593131 4.291875 1.8917479 14347 45 319 0 247730 98040 11449 4128 1.0612788 1160 50 0 - 2000 2.3854865 2.3854865 1.2711805 0.019550917 -0.6434388 2.910936 1.4342405 15199 41 151 0 526468 98040 11449 4191 1.2711805 2321 50 0 - 3000 2.6796789 2.6796789 1.2494843 0.023573743 -0.48282696 3.5098946 1.6090734 16441 52 230 0 827117 98040 11449 4203 1.2494843 3659 50 0 - 4000 2.7945661 2.7945661 1.3021617 0.024256529 -0.5523488 3.6115547 1.2702377 16935 52 474 0 1127934 98040 11449 4215 1.3021617 4966 50 0 - 5000 2.7061959 2.7061959 1.338483 0.023736966 -0.498035 3.5341969 1.2801942 17578 49 277 0 1435089 98040 11449 4261 1.338483 6351 50 0 - 6000 3.2698703 3.2698703 1.3285507 0.029840303 -0.42918398 4.4429227 1.4528039 17882 63 228 0 1776449 98040 11449 4252 1.3285507 7935 50 0 - 7000 3.9340641 3.9340641 1.3823898 0.035368008 -0.59581277 5.2659427 1.1321242 18069 49 462 0 2090062 98040 11449 4265 1.3823898 9343 50 0 - 8000 3.6037728 3.6037728 1.4150583 0.032400676 -0.54548483 4.8241367 1.2091317 18275 56 369 0 2486575 98040 11449 4229 1.4150583 11121 50 0 - 9000 105.15275 105.15275 1.3630934 1.0504642 -0.27397996 156.40361 23.278069 18139 107 732 0 2861341 98040 11449 4217 1.3630934 12781 50 0 - 10000 3.5224307 3.5224307 1.3897056 0.0324883 -0.4112387 4.837183 1.6093705 19100 61 347 0 3248400 98040 11449 4204 1.3897056 14424 50 0 - 11000 4.1949959 4.1949959 1.421272 0.03853305 -0.51335814 5.7371858 1.3586332 18670 52 590 0 3722041 98040 11449 4263 1.421272 16373 50 0 - 12000 3.1692742 3.1692742 1.3999982 0.028463927 -0.48422456 4.237994 1.1713046 18787 61 323 0 4117517 98040 11449 4202 1.3999982 18125 50 0 - 13000 3.5868757 3.5868757 1.3193021 0.032298734 -0.53548629 4.8089585 1.0664078 18572 67 224 0 4417636 98040 11449 4277 1.3193021 19546 50 0 - 14000 3.708681 3.708681 1.317797 0.033355183 -0.55968141 4.9662533 1.3959088 18284 67 207 0 4675359 98040 11449 4253 1.317797 20631 50 0 - 15000 3.7410393 3.7410393 1.4017441 0.033377852 -0.60452027 4.9696283 1.2506767 18385 51 189 0 4956150 98040 11449 4275 1.4017441 21763 50 0 - 16000 5.3298522 5.3298522 1.3456075 0.049673767 -0.54555257 7.3959272 1.841432 18693 63 549 0 5301393 98040 11449 4196 1.3456075 23216 50 0 - 17000 3.7425275 3.7425275 1.321554 0.036608704 -0.12569607 5.4506699 2.3767421 18377 68 526 0 5637038 98040 11449 4261 1.321554 24829 50 0 - 18000 6.1904009 6.1904009 1.3905006 0.05857936 -0.50181651 8.7218809 1.7936734 18422 63 522 0 6049781 98040 11449 4280 1.3905006 26646 50 0 - 19000 3.1770374 3.1770374 1.3694174 0.028096405 -0.55051202 4.1832737 0.98036773 18342 54 343 0 6383253 98040 11449 4239 1.3694174 28038 50 0 - 20000 3.5793112 3.5793112 1.3160294 0.031413769 -0.65597761 4.677196 1.0713128 18739 60 272 0 6692090 98040 11449 4262 1.3160294 29389 50 0 - 21000 3.2300481 3.2300481 1.3407923 0.027955254 -0.65051393 4.1622578 0.89783071 18582 55 456 0 6999361 98040 11449 4237 1.3407923 30653 50 0 - 22000 3.5879886 3.5879886 1.3790201 0.031692391 -0.6274228 4.7186802 0.97752405 18768 63 552 0 7350833 98040 11449 4308 1.3790201 32120 50 0 - 23000 3.5666316 3.5666316 1.4123826 0.031275136 -0.6577261 4.656555 0.99950405 18864 49 231 0 7741276 98040 11449 4265 1.4123826 33939 50 0 - 24000 3.7306353 3.7306353 1.3854831 0.032426295 -0.7306956 4.827951 0.93575015 18488 63 552 0 8096740 98040 11449 4238 1.3854831 35503 50 0 - 25000 4.2971901 4.2971901 1.4207289 0.038358698 -0.69158669 5.7112265 1.0308127 18922 58 430 0 8518804 98040 11449 4254 1.4207289 37429 50 0 - 26000 9.514164 9.514164 1.4209186 0.09200552 -0.47740255 13.698702 2.4102159 18934 63 570 0 8931705 98040 11449 4233 1.4209186 39132 50 0 - 27000 3.9153535 3.9153535 1.3814961 0.036650525 -0.37698007 5.4568967 1.4531475 19153 65 553 0 9277922 98040 11449 4299 1.3814961 40660 50 0 - 28000 3.6560048 3.6560048 1.3520603 0.033100525 -0.51910991 4.9283372 1.3474705 19529 59 447 0 9642607 98040 11449 4278 1.3520603 42335 50 0 - 29000 14.835118 14.835118 1.3981622 0.14535835 -0.4619207 21.642405 3.6917556 19265 52 102 0 9937354 98040 11449 4224 1.3981622 43664 50 0 - 30000 5.3595251 5.3595251 1.3636194 0.050893845 -0.40810785 7.5775845 1.7023989 19065 43 131 0 10261222 98040 11449 4170 1.3636194 45193 50 0 - 31000 5.1821698 5.1821698 1.3180039 0.049074014 -0.41480304 7.30663 1.6943582 19142 58 282 0 10584027 98040 11449 4228 1.3180039 46636 50 0 - 32000 4.3056534 4.3056534 1.3508467 0.040670309 -0.36002116 6.0554024 1.7875405 19065 36 284 0 10933981 98040 11449 4286 1.3508467 48240 50 0 - 33000 3.8277999 3.8277999 1.3770405 0.034411971 -0.57982354 5.1235984 1.1046562 18838 71 729 0 11329901 98040 11449 4257 1.3770405 50046 50 0 - 34000 4.6562056 4.6562056 1.3938501 0.043777831 -0.41966518 6.5180812 1.3815841 18914 61 269 0 11758952 98040 11449 4221 1.3938501 51773 50 0 - 35000 3.4251492 3.4251492 1.3813031 0.031876928 -0.35731644 4.7461558 1.4152845 18838 60 283 0 12159425 98040 11449 4238 1.3813031 53477 50 0 - 36000 4.2565688 4.2565688 1.3474871 0.039214915 -0.5035788 5.8387088 1.1222014 18765 56 240 0 12568711 98040 11449 4249 1.3474871 55170 50 0 - 37000 5.3745505 5.3745505 1.4215553 0.053606226 -0.02664916 7.981431 2.8011643 19103 58 504 0 12941065 98040 11449 4270 1.4215553 56743 50 0 - 38000 4.0346121 4.0346121 1.4354472 0.036753623 -0.53932498 5.472247 1.1475792 18829 62 623 0 13351480 98040 11449 4226 1.4354472 58443 50 0 - 39000 4.0471971 4.0471971 1.417888 0.037884509 -0.3896991 5.6406246 1.3824278 19047 70 579 0 13752101 98040 11449 4219 1.417888 60208 50 0 - 40000 4.1611575 4.1611575 1.3712048 0.039505792 -0.31810741 5.8820173 1.6615204 18811 65 378 0 14143802 98040 11449 4313 1.3712048 61793 50 0 - 41000 4.852673 4.852673 1.3719985 0.044831688 -0.5554927 6.67499 1.2744313 18899 53 414 0 14505662 98040 11449 4274 1.3719985 63358 50 0 - 42000 4.8338875 4.8338875 1.3595624 0.045465888 -0.43307636 6.7694161 1.6297026 18708 46 360 0 14839866 98040 11449 4224 1.3595624 64895 50 0 - 43000 5.0243115 5.0243115 1.4371431 0.047111836 -0.47174292 7.0144813 1.5899963 18704 55 291 0 15195383 98040 11449 4209 1.4371431 66440 50 0 - 44000 7.2748224 7.2748224 1.3693754 0.069498669 -0.49182853 10.347657 1.9007074 18751 73 423 0 15572639 98040 11449 4253 1.3693754 68148 50 0 - 45000 5.4888002 5.4888002 1.3501677 0.050885254 -0.60200685 7.5763055 1.2841374 18662 51 314 0 15972088 98040 11449 4227 1.3501677 69998 50 0 - 46000 3.2144774 3.2144774 1.3342547 0.028194354 -0.59171403 4.1978573 0.9459541 18948 50 534 0 16308430 98040 11449 4253 1.3342547 71549 50 0 - 47000 4.0640905 4.0640905 1.3473081 0.036715084 -0.58898597 5.4665088 1.2043249 19188 57 236 0 16670321 98040 11449 4239 1.3473081 73216 50 0 - 48000 3.7843815 3.7843815 1.3413467 0.034360184 -0.52284075 5.1158877 1.1195984 19477 57 283 0 17000588 98040 11449 4307 1.3413467 74662 50 0 - 49000 4.3042567 4.3042567 1.354248 0.039635615 -0.51199566 5.9013468 1.410884 19628 68 456 0 17319627 98040 11449 4277 1.354248 75983 50 0 - 50000 4.015575 4.015575 1.3058373 0.036258162 -0.58472888 5.3984778 0.84500807 19257 63 416 0 17675269 98040 11449 4254 1.3058373 77468 50 0 -Loop time of 11.9502 on 8 procs for 50000 steps with 14889 atoms - -Pair time (%) = 1.09132 (9.13222) -Neigh time (%) = 0.959464 (8.02883) -Comm time (%) = 1.19057 (9.96277) -Outpt time (%) = 0.00310364 (0.0259714) -Other time (%) = 8.70577 (72.8502) - -Nlocal: 1861.12 ave 1979 max 1606 min -Histogram: 1 0 0 0 1 1 1 0 0 4 -Nghost: 35 ave 39 max 32 min -Histogram: 1 0 2 0 3 1 0 0 0 1 -Neighs: 46 ave 61 max 31 min -Histogram: 1 1 0 1 1 0 2 0 1 1 - -Total # of neighbors = 368 -Ave neighs/atom = 0.0247162 -Neighbor list builds = 2624 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.1 b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.1 new file mode 100644 index 00000000000..bb4e063020a --- /dev/null +++ b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.1 @@ -0,0 +1,346 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - ellipsoids + +units lj +atom_style ellipsoid +atom_modify first big +dimension 2 + +# create big ellipsoidal particles + +lattice sq 0.14 +Lattice spacing in x,y,z = 2.6726124 2.6726124 2.6726124 +region box block 0 10 0 10 -0.5 0.5 +create_box 2 box +Created orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.000 seconds + +set type 1 mass 1.0 +Setting atom values ... + 100 settings made for mass +set type 1 shape 3.0 1.0 1.0 +Setting atom values ... + 100 settings made for shape +group big type 1 +100 atoms in group big +set group big quat/random 29898 +Setting atom values ... + 100 settings made for quat/random + +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve/asphere +fix 2 all enforce2d + +compute rot big temp/asphere +compute 0 all property/atom quatw quati quatj quatk shapex shapey shapez + +#dump 1 all custom 10 dump.ellipsoid.equil id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +thermo_style custom step temp c_rot epair etotal press +thermo 100 + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair gayberne command: doi:10.1063/1.3058435 + +@Article{Brown09, + author = {W. M. Brown and M. K. Petersen and S. J. Plimpton and G. S. Grest}, + title = {Liquid Crystal Nanodroplets in Solution}, + journal = {J.~Chem.\ Phys.}, + year = 2009, + volume = 130, + number = 4, + pages = {044901} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 13 13 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.611 | 4.611 | 4.611 Mbytes + Step Temp c_rot E_pair TotEng Press + 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 + 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 + 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 + 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 + 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 + 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 + 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 + 700 2.9593679 2.8231211 -0.40051715 2.5292571 1.1630889 + 800 2.7632972 2.9060854 -0.52075351 2.2149107 0.7710678 + 900 2.9905597 2.8869667 -0.49099378 2.4696603 0.69616841 + 1000 2.8470138 2.9005012 -0.51282088 2.3057228 0.68817567 +Loop time of 0.192737 on 1 procs for 1000 steps with 100 atoms + +Performance: 2241395.423 tau/day, 5188.415 timesteps/s, 518.842 katom-step/s +99.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.17225 | 0.17225 | 0.17225 | 0.0 | 89.37 +Neigh | 0.0025287 | 0.0025287 | 0.0025287 | 0.0 | 1.31 +Comm | 0.0023396 | 0.0023396 | 0.0023396 | 0.0 | 1.21 +Output | 0.00025405 | 0.00025405 | 0.00025405 | 0.0 | 0.13 +Modify | 0.013955 | 0.013955 | 0.013955 | 0.0 | 7.24 +Other | | 0.001413 | | | 0.73 + +Nlocal: 100 ave 100 max 100 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 77 ave 77 max 77 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 369 ave 369 max 369 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 369 +Ave neighs/atom = 3.69 +Neighbor list builds = 174 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 120.0 +Lattice spacing in x,y,z = 0.091287093 0.091287093 0.091287093 +create_atoms 2 region plane +Created 85849 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.015 seconds + +set type 2 mass 0.01 +Setting atom values ... + 85849 settings made for mass +group small type 2 +85849 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 2.0 + +neigh_modify one 10000 + +delete_atoms overlap 1.6 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 20 20 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 71060 atoms, new total = 14889 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.0005 + +fix 1 big nve/asphere +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/asphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all custom 1000 dump.ellipsoid id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +#dump 2 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14789 100 + big particle diameter max/min = 3 1 + SRD temperature & lamda = 1 0.1 + SRD max distance & max velocity = 0.4 40 + SRD grid counts: 107 107 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24977686 0.24977686 2.6726124 + SRD per actual grid cell = 1.9275711 + SRD viscosity = 0.68810145 + big/SRD mass density ratio = 1.3736715 + # of rescaled SRD velocities = 0 + ave/max small velocity = 13.30933 24.335888 + ave/max big velocity = 2.0802836 5.05672 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 26.726124, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 43.23 | 43.23 | 43.23 Mbytes + Step Temp c_rot f_2[9] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 2.9005012 2.9005012 0 0.025582147 -0.51282088 3.8089259 0.8986241 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 2.1884096 2.1884096 0.81792923 0.016786763 -0.7613492 2.4993811 1.1765894 13834 35 35 0 241 38416 11449 4172 0.81792923 16 50 0 + 2000 1.2708697 1.2708697 0.90821156 0.0069438942 -0.8597194 1.0338764 0.9801188 14658 35 35 0 372 38416 11449 4281 0.90821156 16 50 0 + 3000 1.1130928 1.1130928 0.9590586 0.0052557024 -0.8759868 0.78252152 0.70461705 15267 28 28 0 519 38416 11449 4292 0.9590586 16 50 0 + 4000 0.8649005 0.8649005 0.9947477 0.0026217985 -0.89834217 0.39035958 0.77420962 15681 36 36 0 698 38416 11449 4339 0.9947477 16 50 0 + 5000 1.1743692 1.1743692 0.98116608 0.0069116456 -0.72073526 1.0290749 0.8829165 15974 37 37 0 881 38416 11449 4328 0.98116608 16 50 0 + 6000 1.0190814 1.0190814 1.0138428 0.0048088112 -0.80244733 0.7159839 0.79743882 16092 36 36 0 1090 38416 11449 4319 1.0138428 16 50 0 + 7000 1.0824823 1.0824823 1.0415165 0.0049127988 -0.88143205 0.73146661 0.48157537 16178 46 46 0 1328 38416 11449 4370 1.0415165 23 50 0 + 8000 1.0482457 1.0482457 1.0336952 0.0051802902 -0.79059275 0.7712934 0.75744414 16622 33 33 0 1579 38416 11449 4340 1.0336952 24 50 0 + 9000 0.98889815 0.98889815 1.0126005 0.00397567 -0.88152073 0.59193751 0.52056685 16877 41 41 0 1811 38416 11449 4370 1.0126005 27 50 0 + 10000 0.96559538 0.96559538 1.0234124 0.0045683795 -0.7585511 0.68018602 0.70666049 16833 32 32 0 2038 38416 11449 4330 1.0234124 27 50 0 +Loop time of 9.04639 on 1 procs for 10000 steps with 14889 atoms + +Performance: 47753.873 tau/day, 1105.414 timesteps/s, 16.459 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.862 | 1.862 | 1.862 | 0.0 | 20.58 +Neigh | 0.018395 | 0.018395 | 0.018395 | 0.0 | 0.20 +Comm | 0.060502 | 0.060502 | 0.060502 | 0.0 | 0.67 +Output | 0.00092704 | 0.00092704 | 0.00092704 | 0.0 | 0.01 +Modify | 7.0482 | 7.0482 | 7.0482 | 0.0 | 77.91 +Other | | 0.05636 | | | 0.62 + +Nlocal: 14889 ave 14889 max 14889 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 79 ave 79 max 79 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 416 ave 416 max 416 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 416 +Ave neighs/atom = 0.02794009 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.4 b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.4 new file mode 100644 index 00000000000..7a4f323cfe1 --- /dev/null +++ b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.g++.4 @@ -0,0 +1,346 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - ellipsoids + +units lj +atom_style ellipsoid +atom_modify first big +dimension 2 + +# create big ellipsoidal particles + +lattice sq 0.14 +Lattice spacing in x,y,z = 2.6726124 2.6726124 2.6726124 +region box block 0 10 0 10 -0.5 0.5 +create_box 2 box +Created orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + 2 by 2 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 100 settings made for mass +set type 1 shape 3.0 1.0 1.0 +Setting atom values ... + 100 settings made for shape +group big type 1 +100 atoms in group big +set group big quat/random 29898 +Setting atom values ... + 100 settings made for quat/random + +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve/asphere +fix 2 all enforce2d + +compute rot big temp/asphere +compute 0 all property/atom quatw quati quatj quatk shapex shapey shapez + +#dump 1 all custom 10 dump.ellipsoid.equil id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +thermo_style custom step temp c_rot epair etotal press +thermo 100 + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair gayberne command: doi:10.1063/1.3058435 + +@Article{Brown09, + author = {W. M. Brown and M. K. Petersen and S. J. Plimpton and G. S. Grest}, + title = {Liquid Crystal Nanodroplets in Solution}, + journal = {J.~Chem.\ Phys.}, + year = 2009, + volume = 130, + number = 4, + pages = {044901} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 13 13 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.61 | 4.61 | 4.61 Mbytes + Step Temp c_rot E_pair TotEng Press + 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 + 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 + 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 + 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 + 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 + 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 + 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 + 700 2.9593679 2.8231211 -0.40051715 2.5292571 1.1630889 + 800 2.7632972 2.9060855 -0.52075354 2.2149107 0.77106773 + 900 2.9905599 2.8869667 -0.49099386 2.4696604 0.69616823 + 1000 2.8470131 2.9005016 -0.51282147 2.3057215 0.68817329 +Loop time of 0.0666302 on 4 procs for 1000 steps with 100 atoms + +Performance: 6483542.632 tau/day, 15008.201 timesteps/s, 1.501 Matom-step/s +99.0% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.039208 | 0.042833 | 0.045871 | 1.2 | 64.29 +Neigh | 0.00065929 | 0.00071982 | 0.00076852 | 0.0 | 1.08 +Comm | 0.013998 | 0.017169 | 0.02087 | 1.9 | 25.77 +Output | 0.00018817 | 0.00020663 | 0.00025962 | 0.0 | 0.31 +Modify | 0.0035046 | 0.0035933 | 0.003701 | 0.1 | 5.39 +Other | | 0.002109 | | | 3.16 + +Nlocal: 25 ave 27 max 24 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Nghost: 42.25 ave 45 max 38 min +Histogram: 1 0 0 0 0 0 0 2 0 1 +Neighs: 92.25 ave 104 max 85 min +Histogram: 1 0 1 1 0 0 0 0 0 1 + +Total # of neighbors = 369 +Ave neighs/atom = 3.69 +Neighbor list builds = 174 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 120.0 +Lattice spacing in x,y,z = 0.091287093 0.091287093 0.091287093 +create_atoms 2 region plane +Created 85849 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.004 seconds + +set type 2 mass 0.01 +Setting atom values ... + 85849 settings made for mass +group small type 2 +85849 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 2.0 + +neigh_modify one 10000 + +delete_atoms overlap 1.6 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 20 20 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 71060 atoms, new total = 14889 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.0005 + +fix 1 big nve/asphere +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/asphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all custom 1000 dump.ellipsoid id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +#dump 2 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14789 100 + big particle diameter max/min = 3 1 + SRD temperature & lamda = 1 0.1 + SRD max distance & max velocity = 0.4 40 + SRD grid counts: 107 107 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24977686 0.24977686 2.6726124 + SRD per actual grid cell = 1.9275711 + SRD viscosity = 0.68810145 + big/SRD mass density ratio = 1.3736715 + # of rescaled SRD velocities = 0 + ave/max small velocity = 13.30933 24.335888 + ave/max big velocity = 2.080284 5.0567191 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 26.726124, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 16.89 | 16.9 | 16.91 Mbytes + Step Temp c_rot f_2[9] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 2.9005016 2.9005016 0 0.025582147 -0.51282147 3.8089259 0.89862191 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 2.7138279 2.7138279 0.82437872 0.023781703 -0.50274582 3.5408578 1.6816604 13758 32 34 0 274 66564 11449 4238 0.82437872 24 50 0 + 2000 1.3183118 1.3183118 0.91362053 0.0077748292 -0.80669023 1.1575943 1.1678425 14118 23 23 0 414 66564 11449 4269 0.91362053 24 50 0 + 3000 1.3117991 1.3117991 0.96889539 0.0065133847 -0.98480276 0.96977785 0.51801823 14675 35 36 0 588 66564 11449 4291 0.96889539 26 50 0 + 4000 1.1034132 1.1034132 0.95899765 0.0042496304 -1.0113582 0.63272747 0.6382343 15146 38 38 0 776 66564 11449 4309 0.95899765 26 50 0 + 5000 1.0814177 1.0814177 1.0037423 0.0047549676 -0.90334518 0.70796713 0.76138491 15275 40 40 0 973 66564 11449 4285 1.0037423 26 50 0 + 6000 1.0515425 1.0515425 0.98728204 0.0041039749 -0.95575757 0.61104083 0.61253791 15685 34 34 0 1205 66564 11449 4328 0.98728204 26 50 0 + 7000 0.96229389 0.96229389 1.0146054 0.0031968892 -0.95783307 0.47598483 0.4469161 15944 43 43 0 1412 66564 11449 4391 1.0146054 27 50 0 + 8000 0.98798058 0.98798058 0.99692702 0.0037348841 -0.91600418 0.55608689 0.50558822 16250 43 43 0 1637 66564 11449 4330 0.99692702 27 50 0 + 9000 1.0120554 1.0120554 1.0099521 0.0039518454 -0.91957229 0.58839026 0.4092229 16367 43 44 0 1899 66564 11449 4309 1.0099521 27 50 0 + 10000 1.104152 1.104152 0.9993147 0.0053713858 -0.84544079 0.79974564 0.5119979 16331 50 50 0 2108 66564 11449 4353 0.9993147 27 50 0 +Loop time of 2.95619 on 4 procs for 10000 steps with 14889 atoms + +Performance: 146134.205 tau/day, 3382.736 timesteps/s, 50.366 Matom-step/s +99.2% 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.48773 | 0.52727 | 0.62879 | 8.1 | 17.84 +Neigh | 0.0070094 | 0.0072204 | 0.0076255 | 0.3 | 0.24 +Comm | 0.12898 | 0.22553 | 0.265 | 11.8 | 7.63 +Output | 0.0005957 | 0.00064777 | 0.00075264 | 0.0 | 0.02 +Modify | 2.1317 | 2.1512 | 2.166 | 0.9 | 72.77 +Other | | 0.04427 | | | 1.50 + +Nlocal: 3722.25 ave 3968 max 3389 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 39.75 ave 44 max 35 min +Histogram: 1 0 0 0 1 0 1 0 0 1 +Neighs: 101 ave 125 max 86 min +Histogram: 1 0 1 1 0 0 0 0 0 1 + +Total # of neighbors = 404 +Ave neighs/atom = 0.027134126 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.1 b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.1 new file mode 100644 index 00000000000..d7d2b9831f6 --- /dev/null +++ b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.1 @@ -0,0 +1,347 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - ellipsoids + +units lj +atom_style ellipsoid +atom_modify first big +dimension 2 + +# create big ellipsoidal particles + +lattice sq 0.14 +Lattice spacing in x,y,z = 2.6726124 2.6726124 2.6726124 +region box block 0 10 0 10 -0.5 0.5 +create_box 2 box +Created orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.000 seconds + +set type 1 mass 1.0 +Setting atom values ... + 100 settings made for mass +set type 1 shape 3.0 1.0 1.0 +Setting atom values ... + 100 settings made for shape +group big type 1 +100 atoms in group big +set group big quat/random 29898 +Setting atom values ... + 100 settings made for quat/random + +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve/asphere +fix 2 all enforce2d + +compute rot big temp/asphere +compute 0 all property/atom quatw quati quatj quatk shapex shapey shapez + +#dump 1 all custom 10 dump.ellipsoid.equil id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +thermo_style custom step temp c_rot epair etotal press +thermo 100 + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair gayberne command: doi:10.1063/1.3058435 + +@Article{Brown09, + author = {W. M. Brown and M. K. Petersen and S. J. Plimpton and G. S. Grest}, + title = {Liquid Crystal Nanodroplets in Solution}, + journal = {J.~Chem.\ Phys.}, + year = 2009, + volume = 130, + number = 4, + pages = {044901} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 13 13 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.611 | 4.611 | 4.611 Mbytes + Step Temp c_rot E_pair TotEng Press + 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 + 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 + 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 + 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 + 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 + 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 + 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 + 700 2.9593679 2.8231211 -0.40051715 2.5292571 1.1630889 + 800 2.7632972 2.9060854 -0.52075351 2.2149107 0.7710678 + 900 2.9905597 2.8869667 -0.49099378 2.4696603 0.69616841 + 1000 2.8470138 2.9005012 -0.51282088 2.3057228 0.68817567 +Loop time of 0.192844 on 1 procs for 1000 steps with 100 atoms + +Performance: 2240155.241 tau/day, 5185.545 timesteps/s, 518.554 katom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.17225 | 0.17225 | 0.17225 | 0.0 | 89.32 +Neigh | 0.0025614 | 0.0025614 | 0.0025614 | 0.0 | 1.33 +Comm | 0.0024746 | 0.0024746 | 0.0024746 | 0.0 | 1.28 +Output | 0.0001406 | 0.0001406 | 0.0001406 | 0.0 | 0.07 +Modify | 0.014112 | 0.014112 | 0.014112 | 0.0 | 7.32 +Other | | 0.001306 | | | 0.68 + +Nlocal: 100 ave 100 max 100 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 77 ave 77 max 77 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 369 ave 369 max 369 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 369 +Ave neighs/atom = 3.69 +Neighbor list builds = 174 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 120.0 +Lattice spacing in x,y,z = 0.091287093 0.091287093 0.091287093 +create_atoms 2 region plane +Created 85849 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.015 seconds + +set type 2 mass 0.01 +Setting atom values ... + 85849 settings made for mass +group small type 2 +85849 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 2.0 + +neigh_modify one 10000 + +delete_atoms overlap 1.6 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 20 20 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 71060 atoms, new total = 14889 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.0005 + +fix 1 big nve/asphere +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 +fix 3 small viscosity 20 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/asphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all custom 500 dump.ellipsoid id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14789 100 + big particle diameter max/min = 3 1 + SRD temperature & lamda = 1 0.1 + SRD max distance & max velocity = 0.4 40 + SRD grid counts: 107 107 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24977686 0.24977686 2.6726124 + SRD per actual grid cell = 1.9275711 + SRD viscosity = 0.68810145 + big/SRD mass density ratio = 1.3736715 + # of rescaled SRD velocities = 0 + ave/max small velocity = 13.30933 24.335888 + ave/max big velocity = 2.0802836 5.05672 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 26.726124, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 43.23 | 43.23 | 43.23 Mbytes + Step Temp c_rot f_2[9] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 2.9005012 2.9005012 0 0.025582147 -0.51282088 3.8089259 0.8986241 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 2.3102693 2.3102693 0.82371999 0.019779507 -0.49733043 2.9449709 1.9807143 13954 30 30 0 277 38416 11449 4255 0.82371999 15 50 0 + 2000 1.5312119 1.5312119 0.90846884 0.008532096 -1.011162 1.2703438 0.58038663 14523 37 37 0 439 38416 11449 4257 0.90846884 20 50 0 + 3000 1.3603443 1.3603443 0.95241399 0.0085403252 -0.75534393 1.271569 1.2262133 14864 34 35 0 599 38416 11449 4287 0.95241399 20 50 0 + 4000 2.2408861 2.2408861 0.99089404 0.016876315 -0.82620566 2.5127146 1.2664088 15457 35 35 0 809 38416 11449 4272 0.99089404 21 50 0 + 5000 1.7110067 1.7110067 0.99729333 0.011146301 -0.88982716 1.6595728 0.97334407 15555 36 36 0 1026 38416 11449 4324 0.99729333 24 50 0 + 6000 1.684666 1.684666 1.0235606 0.009751253 -1.0582882 1.4518641 0.62435255 15752 45 46 0 1256 38416 11449 4303 1.0235606 24 50 0 + 7000 2.1142261 2.1142261 1.0160206 0.014786886 -0.94857757 2.2016194 0.7761903 16144 30 30 0 1492 38416 11449 4401 1.0160206 27 50 0 + 8000 2.5622926 2.5622926 1.0125365 0.019933518 -0.84991443 2.9679015 0.93716383 16302 43 43 0 1720 38416 11449 4346 1.0125365 27 50 0 + 9000 2.6593623 2.6593623 1.0110535 0.020725053 -0.87669675 3.0857531 0.97818336 16856 44 44 0 2000 38416 11449 4298 1.0110535 30 50 0 + 10000 2.7567851 2.7567851 1.0379053 0.021598993 -0.8917358 3.2158741 0.74950846 16770 50 53 0 2284 38416 11449 4316 1.0379053 30 50 0 +Loop time of 9.02679 on 1 procs for 10000 steps with 14889 atoms + +Performance: 47857.551 tau/day, 1107.814 timesteps/s, 16.494 Matom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.8454 | 1.8454 | 1.8454 | 0.0 | 20.44 +Neigh | 0.018708 | 0.018708 | 0.018708 | 0.0 | 0.21 +Comm | 0.059853 | 0.059853 | 0.059853 | 0.0 | 0.66 +Output | 0.00081453 | 0.00081453 | 0.00081453 | 0.0 | 0.01 +Modify | 7.0469 | 7.0469 | 7.0469 | 0.0 | 78.07 +Other | | 0.05507 | | | 0.61 + +Nlocal: 14889 ave 14889 max 14889 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 75 ave 75 max 75 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 382 ave 382 max 382 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 382 +Ave neighs/atom = 0.025656525 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.4 b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.4 new file mode 100644 index 00000000000..b5a10d08712 --- /dev/null +++ b/examples/ASPHERE/ellipsoid/log.1Feb24.ellipsoid.mp.g++.4 @@ -0,0 +1,347 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - ellipsoids + +units lj +atom_style ellipsoid +atom_modify first big +dimension 2 + +# create big ellipsoidal particles + +lattice sq 0.14 +Lattice spacing in x,y,z = 2.6726124 2.6726124 2.6726124 +region box block 0 10 0 10 -0.5 0.5 +create_box 2 box +Created orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + 2 by 2 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 100 settings made for mass +set type 1 shape 3.0 1.0 1.0 +Setting atom values ... + 100 settings made for shape +group big type 1 +100 atoms in group big +set group big quat/random 29898 +Setting atom values ... + 100 settings made for quat/random + +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve/asphere +fix 2 all enforce2d + +compute rot big temp/asphere +compute 0 all property/atom quatw quati quatj quatk shapex shapey shapez + +#dump 1 all custom 10 dump.ellipsoid.equil id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +thermo_style custom step temp c_rot epair etotal press +thermo 100 + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair gayberne command: doi:10.1063/1.3058435 + +@Article{Brown09, + author = {W. M. Brown and M. K. Petersen and S. J. Plimpton and G. S. Grest}, + title = {Liquid Crystal Nanodroplets in Solution}, + journal = {J.~Chem.\ Phys.}, + year = 2009, + volume = 130, + number = 4, + pages = {044901} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 13 13 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.61 | 4.61 | 4.61 Mbytes + Step Temp c_rot E_pair TotEng Press + 0 1.44 0.95677852 2.7038078 4.1294078 10.518912 + 100 2.5524145 2.801098 -0.37027046 2.1566199 0.84703874 + 200 2.6266386 2.7938164 -0.35322565 2.2471465 1.004886 + 300 2.9987557 2.9499545 -0.58917376 2.3795944 0.73081788 + 400 2.8557446 2.8208128 -0.39904801 2.4281391 0.91808964 + 500 2.4399047 2.8255746 -0.40056447 2.0149412 1.0538908 + 600 2.854258 2.9166789 -0.53424483 2.2914706 0.8117508 + 700 2.9593679 2.8231211 -0.40051715 2.5292571 1.1630889 + 800 2.7632972 2.9060855 -0.52075354 2.2149107 0.77106773 + 900 2.9905599 2.8869667 -0.49099386 2.4696604 0.69616823 + 1000 2.8470131 2.9005016 -0.51282147 2.3057215 0.68817329 +Loop time of 0.0905036 on 4 procs for 1000 steps with 100 atoms + +Performance: 4773291.472 tau/day, 11049.286 timesteps/s, 1.105 Matom-step/s +99.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.039039 | 0.053443 | 0.065528 | 5.0 | 59.05 +Neigh | 0.00068257 | 0.00086692 | 0.0010442 | 0.0 | 0.96 +Comm | 0.016567 | 0.028689 | 0.043189 | 6.8 | 31.70 +Output | 0.00016989 | 0.00018594 | 0.0002316 | 0.0 | 0.21 +Modify | 0.0035809 | 0.0043052 | 0.0050755 | 1.0 | 4.76 +Other | | 0.003013 | | | 3.33 + +Nlocal: 25 ave 27 max 24 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Nghost: 42.25 ave 45 max 38 min +Histogram: 1 0 0 0 0 0 0 2 0 1 +Neighs: 92.25 ave 104 max 85 min +Histogram: 1 0 1 1 0 0 0 0 0 1 + +Total # of neighbors = 369 +Ave neighs/atom = 3.69 +Neighbor list builds = 174 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 120.0 +Lattice spacing in x,y,z = 0.091287093 0.091287093 0.091287093 +create_atoms 2 region plane +Created 85849 atoms + using lattice units in orthogonal box = (0 0 -1.3363062) to (26.726124 26.726124 1.3363062) + create_atoms CPU = 0.007 seconds + +set type 2 mass 0.01 +Setting atom values ... + 85849 settings made for mass +group small type 2 +85849 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 2.0 + +neigh_modify one 10000 + +delete_atoms overlap 1.6 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 20 20 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 71060 atoms, new total = 14889 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style gayberne 1.0 3.0 1.0 4.0 +pair_coeff 1 1 1.0 1.0 1 1 1 1 1 1 +pair_coeff 1 2 1.0 1.0 1 1 1 1 1 1 0.0 +pair_coeff 2 2 1.0 1.0 1 1 1 1 1 1 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.0005 + +fix 1 big nve/asphere +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 collision noslip search 0.2 inside ignore exact no bounce 50 +fix 3 small viscosity 20 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/asphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp c_rot f_2[9] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all custom 500 dump.ellipsoid id type x y z c_0[*] +#dump_modify 1 colname c_0[1] quatw colname c_0[2] quati colname c_0[3] quatj colname c_0[4] quatk # colname c_0[5] shapex colname c_0[6] shapey colname c_0[7] shapez + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14789 100 + big particle diameter max/min = 3 1 + SRD temperature & lamda = 1 0.1 + SRD max distance & max velocity = 0.4 40 + SRD grid counts: 107 107 1 + SRD grid size: request, actual (xyz) = 0.25, 0.24977686 0.24977686 2.6726124 + SRD per actual grid cell = 1.9275711 + SRD viscosity = 0.68810145 + big/SRD mass density ratio = 1.3736715 + # of rescaled SRD velocities = 0 + ave/max small velocity = 13.30933 24.335888 + ave/max big velocity = 2.080284 5.0567191 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 26.726124, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gayberne, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 16.89 | 16.9 | 16.91 Mbytes + Step Temp c_rot f_2[9] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 2.9005016 2.9005016 0 0.025582147 -0.51282147 3.8089259 0.89862191 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 2.5269102 2.5269102 0.8207596 0.022784455 -0.37271861 3.3923775 2.0963085 13925 34 34 0 322 66564 11449 4235 0.8207596 24 50 0 + 2000 1.3685596 1.3685596 0.89115879 0.0089112146 -0.71236311 1.3267907 1.3970875 14444 25 25 0 454 66564 11449 4278 0.89115879 25 50 0 + 3000 1.5234001 1.5234001 0.9828293 0.0090168318 -0.92735003 1.3425161 0.70104224 14946 37 37 0 608 66564 11449 4331 0.9828293 27 50 0 + 4000 2.2536932 2.2536932 0.97648579 0.017005211 -0.82609701 2.5319058 1.190307 15428 43 43 0 827 66564 11449 4346 0.97648579 32 50 0 + 5000 1.8106358 1.8106358 1.0143347 0.012032652 -0.90630586 1.7915415 0.83451531 15438 26 26 0 1039 66564 11449 4314 1.0143347 32 50 0 + 6000 1.9880605 1.9880605 1.0142917 0.013767418 -0.91237924 2.0498309 0.87383026 15688 37 37 0 1279 66564 11449 4353 1.0142917 32 50 0 + 7000 2.4772098 2.4772098 0.99457682 0.018062012 -1.0017896 2.689253 0.74369504 15723 38 38 0 1521 66564 11449 4293 0.99457682 32 50 0 + 8000 2.5749419 2.5749419 1.0337514 0.019908918 -0.87242464 2.9642389 1.0460672 15932 33 34 0 1805 66564 11449 4320 1.0337514 32 50 0 + 9000 2.4877578 2.4877578 1.0366259 0.019125113 -0.85922105 2.847538 0.95616808 16292 52 53 0 2099 66564 11449 4291 1.0366259 33 50 0 + 10000 2.8498311 2.8498311 1.0117104 0.022669267 -0.87102125 3.3752271 0.98313087 16736 38 38 0 2415 66564 11449 4366 1.0117104 35 50 0 +Loop time of 3.0339 on 4 procs for 10000 steps with 14889 atoms + +Performance: 142390.919 tau/day, 3296.086 timesteps/s, 49.075 Matom-step/s +99.1% 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.46168 | 0.52303 | 0.69055 | 13.4 | 17.24 +Neigh | 0.0068493 | 0.0072892 | 0.0081958 | 0.6 | 0.24 +Comm | 0.12806 | 0.2911 | 0.34961 | 17.5 | 9.59 +Output | 0.00055286 | 0.00057977 | 0.00065772 | 0.0 | 0.02 +Modify | 2.1454 | 2.1674 | 2.1833 | 0.9 | 71.44 +Other | | 0.04447 | | | 1.47 + +Nlocal: 3722.25 ave 4163 max 3210 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 46.25 ave 49 max 43 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Neighs: 102.5 ave 143 max 79 min +Histogram: 2 0 0 0 1 0 0 0 0 1 + +Total # of neighbors = 410 +Ave neighs/atom = 0.027537108 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/examples/ASPHERE/line/in.line b/examples/ASPHERE/line/in.line index 815eacfa353..f4c672f19c6 100644 --- a/examples/ASPHERE/line/in.line +++ b/examples/ASPHERE/line/in.line @@ -1,44 +1,44 @@ # Aspherical shear demo - 2d line box and triangle mixture, implicit solvent -units lj -atom_style line -dimension 2 +units lj +atom_style line +dimension 2 -read_data data.line +read_data data.line -velocity all create 1.44 320984 loop geom +velocity all create 1.44 320984 loop geom -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule/intra all +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra all -pair_style line/lj 2.5 -pair_coeff * * 1.0 1.0 1.0 0.25 2.5 +pair_style line/lj 2.5 +pair_coeff * * 1.0 1.0 1.0 0.25 2.5 -fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983 +fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983 -fix 3 all deform 1 x scale 0.3 y scale 0.3 -fix 4 all enforce2d +fix 3 all deform 1 x scale 0.3 y scale 0.3 +fix 4 all enforce2d -compute 10 all property/atom end1x end1y end2x end2y +compute 10 all property/atom end1x end1y end2x end2y -#dump 1 all custom 500 dump1.atom id type x y z ix iy iz -#dump 2 all custom 500 dump1.line id type & -# c_10[1] c_10[2] c_10[3] c_10[4] +#dump 1 all custom 500 dump1.atom id type x y z ix iy iz +#dump 2 all custom 500 dump1.line id type & +# c_10[1] c_10[2] c_10[3] c_10[4] -timestep 0.004 +timestep 0.004 -compute 1 all erotate/asphere -compute 2 all ke -compute 3 all pe -variable toteng equal (c_1+c_2+c_3)/atoms +compute 1 all erotate/asphere +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 f_2 pe ke c_1 c_2 c_3 v_toteng +thermo 1000 +thermo_style custom step f_2 pe ke c_1 c_2 c_3 v_toteng -run 10000 +run 10000 #undump 1 #undump 2 @@ -46,10 +46,10 @@ unfix 3 change_box all triclinic -#dump 1 all custom 500 dump2.atom id type x y z ix iy iz -#dump 2 all custom 500 dump2.line id type & -# c_10[1] c_10[2] c_10[3] c_10[4] +#dump 1 all custom 500 dump2.atom id type x y z ix iy iz +#dump 2 all custom 500 dump2.line id type & +# c_10[1] c_10[2] c_10[3] c_10[4] -fix 3 all deform 1 xy erate 0.01 units box +fix 3 all deform 1 xy erate 0.01 units box -run 100000 +run 10000 diff --git a/examples/ASPHERE/line/in.line.srd b/examples/ASPHERE/line/in.line.srd index a32bde0b765..6a99ce6bb11 100644 --- a/examples/ASPHERE/line/in.line.srd +++ b/examples/ASPHERE/line/in.line.srd @@ -1,107 +1,107 @@ # Aspherical shear demo - 2d line boxes, solvated by SRD particles -units lj -atom_style line -atom_modify first big -dimension 2 +units lj +atom_style line +atom_modify first big +dimension 2 -read_data data.line.srd +read_data data.line.srd # add small particles as hi density lattice -lattice sq 0.4 -region plane block INF INF INF INF -0.001 0.001 -lattice sq 10.0 -create_atoms 2 region plane +lattice sq 0.4 +region plane block INF INF INF INF -0.001 0.001 +lattice sq 10.0 +create_atoms 2 region plane -group big type 1 -group small type 2 -set group small mass 0.01 +group big type 1 +group small type 2 +set group small mass 0.01 # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 1.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 +pair_style lj/cut 1.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 -delete_atoms overlap 1.5 small big +delete_atoms overlap 1.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -velocity small create 1.44 87287 loop geom +velocity small create 1.44 87287 loop geom -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule/intra big include big +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra big include big -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style line/lj 2.5 -pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5 -pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0 -pair_coeff 1 2 1.0 0.0 0.0 1.0 0.0 +pair_style line/lj 2.5 +pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5 +pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0 +pair_coeff 1 2 1.0 0.0 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid molecule -fix 2 small srd 20 big 1.0 0.25 49894 & - search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip +fix 1 big rigid molecule +fix 2 small srd 20 big 1.0 0.25 49894 & + search 0.2 cubic warn 0.0001 shift yes 49829 & + overlap yes collision noslip -fix 3 all deform 1 x scale 0.35 y scale 0.35 -fix 4 all enforce2d +fix 3 all deform 1 x scale 0.35 y scale 0.35 +fix 4 all enforce2d # diagnostics -compute tsmall small temp/deform -compute tbig big temp -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) +compute tsmall small temp/deform +compute tbig big temp +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) compute_modify tbig extra/dof -350 -compute 1 big erotate/asphere -compute 2 all ke -compute 3 all pe -variable toteng equal (c_1+c_2+c_3)/atoms +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 c_tsmall f_2[9] c_1 etotal & - v_pebig v_ebig press -thermo_modify temp tbig +thermo 1000 +thermo_style custom step c_tsmall f_2[9] c_1 etotal & + v_pebig v_ebig press +thermo_modify temp tbig -compute 10 big property/atom end1x end1y end2x end2y +compute 10 big property/atom end1x end1y end2x end2y -#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump1.line.srd id type & -# c_10[1] c_10[2] c_10[3] c_10[4] +#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump1.line.srd id type & +# c_10[1] c_10[2] c_10[3] c_10[4] -run 10000 +run 10000 #undump 1 #undump 2 -unfix 3 +unfix 3 change_box all triclinic -fix 2 small srd 20 big 1.0 0.25 49894 & - search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip tstat yes +fix 2 small srd 20 big 1.0 0.25 49894 & + search 0.2 cubic warn 0.0001 shift yes 49829 & + overlap yes collision noslip tstat yes -#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump2.line.srd id type & -# c_10[1] c_10[2] c_10[3] c_10[4] +#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump2.line.srd id type & +# c_10[1] c_10[2] c_10[3] c_10[4] -fix 3 all deform 1 xy erate 0.05 units box remap v +fix 3 all deform 1 xy erate 0.05 units box remap v -run 40000 +run 40000 diff --git a/examples/ASPHERE/poly/in.poly b/examples/ASPHERE/poly/in.poly index 68bd2a6bbcc..41bec14075f 100644 --- a/examples/ASPHERE/poly/in.poly +++ b/examples/ASPHERE/poly/in.poly @@ -1,114 +1,114 @@ # SRD diffusion demo - poydisperse spheres -units lj -atom_style sphere -atom_modify first big -dimension 2 +units lj +atom_style sphere +atom_modify first big +dimension 2 # create big particles with 3 different types and diameters -lattice sq 0.3 -region box block 0 10 0 10 -0.5 0.5 -create_box 4 box -create_atoms 1 region box +lattice sq 0.3 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +create_atoms 1 region box -group big type 1 -set group big type/fraction 2 0.33 394895 -set group big type/fraction 3 0.5 989894 -group big type 2 3 +group big type 1 +set group big type/fraction 2 0.33 394895 +set group big type/fraction 3 0.5 989894 +group big type 2 3 -set type 1*3 mass 1.0 -velocity big create 1.44 87287 loop geom +set type 1*3 mass 1.0 +velocity big create 1.44 87287 loop geom # equilibrate big particles, repulsive only to prevent aggregation -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes -fix 1 big nve -fix 2 all enforce2d +fix 1 big nve +fix 2 all enforce2d -#dump 1 all atom 10 dump.poly.equil +#dump 1 all atom 10 dump.poly.equil -run 1000 +run 1000 -#undump 1 -unfix 1 -unfix 2 +#undump 1 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 250.0 -create_atoms 4 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +create_atoms 4 region plane -set type 4 mass 0.1 -group small type 4 -velocity small create 1.0 593849 loop geom +set type 4 mass 0.1 +group small type 4 +velocity small create 1.0 593849 loop geom # delete overlaps # must set *-4 cutoffs to non-zero values -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 1.0 2.0 -pair_coeff 3 3 1.0 1.5 -pair_coeff 1 4 0.0 1.0 0.5 -pair_coeff 2 4 0.0 1.0 1.0 -pair_coeff 3 4 0.0 1.0 0.75 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 -delete_atoms overlap 1.0 small big +delete_atoms overlap 1.0 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big nve -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & search 0.2 inside ignore -fix 3 all enforce2d +fix 3 all enforce2d # diagnostics -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 1000 dump.poly +#dump 1 all atom 1000 dump.poly -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 -run 100000 +run 10000 diff --git a/examples/ASPHERE/poly/in.poly.mp b/examples/ASPHERE/poly/in.poly.mp index 8fa5d24a552..259ef2ab483 100644 --- a/examples/ASPHERE/poly/in.poly.mp +++ b/examples/ASPHERE/poly/in.poly.mp @@ -1,115 +1,115 @@ # SRD viscosity demo - poydisperse spheres -units lj -atom_style sphere -atom_modify first big -dimension 2 +units lj +atom_style sphere +atom_modify first big +dimension 2 # create big particles with 3 different types and diameters -lattice sq 0.3 -region box block 0 10 0 10 -0.5 0.5 -create_box 4 box -create_atoms 1 region box +lattice sq 0.3 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +create_atoms 1 region box -group big type 1 -set group big type/fraction 2 0.33 394895 -set group big type/fraction 3 0.5 989894 -group big type 2 3 +group big type 1 +set group big type/fraction 2 0.33 394895 +set group big type/fraction 3 0.5 989894 +group big type 2 3 -set type 1*3 mass 1.0 -velocity big create 1.44 87287 loop geom +set type 1*3 mass 1.0 +velocity big create 1.44 87287 loop geom # equilibrate big particles, repulsive only to prevent aggregation -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes -fix 1 big nve -fix 2 all enforce2d +fix 1 big nve +fix 2 all enforce2d -#dump 1 all atom 10 dump.poly.equil +#dump 1 all atom 10 dump.poly.equil -run 1000 +run 1000 -#undump 1 -unfix 1 -unfix 2 +#undump 1 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 250.0 -create_atoms 4 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +create_atoms 4 region plane -set type 4 mass 0.1 -group small type 4 -velocity small create 1.0 593849 loop geom +set type 4 mass 0.1 +group small type 4 +velocity small create 1.0 593849 loop geom # delete overlaps # must set *-4 cutoffs to non-zero values -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 1.0 2.0 -pair_coeff 3 3 1.0 1.5 -pair_coeff 1 4 0.0 1.0 0.5 -pair_coeff 2 4 0.0 1.0 1.0 -pair_coeff 3 4 0.0 1.0 0.75 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 -delete_atoms overlap 1.0 small big +delete_atoms overlap 1.0 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big nve -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & - search 0.2 inside ignore -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & + search 0.2 inside ignore +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d # diagnostics -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 500 dump.poly.mp +#dump 1 all atom 500 dump.poly.mp -#dump 1 all image 500 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 -run 50000 +run 10000 diff --git a/examples/ASPHERE/poly/log.1Feb14.poly.g++.8 b/examples/ASPHERE/poly/log.1Feb14.poly.g++.8 deleted file mode 100644 index 7a145a73db9..00000000000 --- a/examples/ASPHERE/poly/log.1Feb14.poly.g++.8 +++ /dev/null @@ -1,288 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD diffusion demo - poydisperse spheres - -units lj -atom_style sphere -atom_modify first big -dimension 2 - -# create big particles with 3 different types and diameters - -lattice sq 0.3 -Lattice spacing in x,y,z = 1.82574 1.82574 1.82574 -region box block 0 10 0 10 -0.5 0.5 -create_box 4 box -Created orthogonal box = (0 0 -0.912871) to (18.2574 18.2574 0.912871) - 2 by 4 by 1 MPI processor grid -create_atoms 1 region box -Created 100 atoms - -group big type 1 -100 atoms in group big -set group big type/fraction 2 0.33 394895 - 35 settings made for type/fraction -set group big type/fraction 3 0.5 989894 - 57 settings made for type/fraction -group big type 2 3 -100 atoms in group big - -set type 1*3 mass 1.0 - 100 settings made for mass -velocity big create 1.44 87287 loop geom - -# equilibrate big particles, repulsive only to prevent aggregation - -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big nve -fix 2 all enforce2d - -#dump 1 all atom 10 dump.poly.equil - -run 1000 -Memory usage per processor = 2.7472 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 1.44 -0.16013916 0 1.2654608 1.1298975 - 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 -Loop time of 0.0221665 on 8 procs for 1000 steps with 100 atoms - -Pair time (%) = 0.000323534 (1.45957) -Neigh time (%) = 0.000274181 (1.23692) -Comm time (%) = 0.0146933 (66.2864) -Outpt time (%) = 2.864e-05 (0.129204) -Other time (%) = 0.00684676 (30.8879) - -Nlocal: 12.5 ave 18 max 10 min -Histogram: 1 3 1 1 0 1 0 0 0 1 -Nghost: 27.75 ave 31 max 24 min -Histogram: 1 0 1 0 2 2 0 0 0 2 -Neighs: 19 ave 30 max 16 min -Histogram: 4 1 2 0 0 0 0 0 0 1 - -Total # of neighbors = 152 -Ave neighs/atom = 1.52 -Neighbor list builds = 115 -Dangerous builds = 0 - -#undump 1 -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 250.0 -Lattice spacing in x,y,z = 0.0632456 0.0632456 0.0632456 -create_atoms 4 region plane -Created 83521 atoms - -set type 4 mass 0.1 - 83521 settings made for mass -group small type 4 -83521 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set *-4 cutoffs to non-zero values - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 1.0 2.0 -pair_coeff 3 3 1.0 1.5 -pair_coeff 1 4 0.0 1.0 0.5 -pair_coeff 2 4 0.0 1.0 1.0 -pair_coeff 3 4 0.0 1.0 0.75 - -delete_atoms overlap 1.0 small big -Deleted 63410 atoms, new total = 20211 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big nve -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore -fix 3 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 1000 dump.poly - -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 - -run 100000 -SRD info: - SRD/big particles = 20111 100 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 73 73 1 - SRD grid size: request, actual (xyz) = 0.25, 0.250102 0.250102 1.82574 - SRD per actual grid cell = 4.93717 - SRD viscosity = 0.23322 - big/SRD mass density ratio = 0.161311 -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.19344 7.74495 - ave/max big velocity = 1.43991 3.5724 -Memory usage per processor = 11.8633 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] - 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 - 1000 0.84607633 3934 0.0065245151 0.058016014 1.3186697 4.2649214 7470 26 26 0 665 36480 5329 3934 0.95810956 0 2 - 2000 0.86586785 3944 0.0045898954 -0.36247933 0.92766376 2.1563866 7786 30 30 0 1374 36480 5329 3944 1.0799777 0 49 - 3000 0.78968677 4001 0.00417319 -0.33318986 0.84344343 1.9302042 7957 34 34 0 2129 36480 5329 4001 1.1247747 0 49 - 4000 0.7110667 4005 0.0031642256 -0.41996775 0.63952164 1.9679689 8188 24 24 0 2925 36480 5329 4005 1.1345941 0 49 - 5000 0.80379425 4052 0.0038912991 -0.41118297 0.78647047 1.6851034 8326 30 30 0 3794 36480 5329 4052 1.1310774 0 49 - 6000 0.96927432 4048 0.0054656969 -0.33954674 1.104672 1.8976158 8380 23 23 0 4643 36480 5329 4048 1.1861264 0 49 - 7000 0.75821666 4050 0.0036201309 -0.39807817 0.73166465 1.6087451 8450 51 51 0 5699 36480 5329 4050 1.1664119 0 49 - 8000 0.8712338 4035 0.0047243103 -0.343308 0.95483036 1.4707918 8458 42 42 0 6974 36480 5329 4035 1.1947807 0 91 - 9000 0.87995969 4048 0.0042778416 -0.44654537 0.86459457 1.5567027 8379 36 36 0 7965 36480 5329 4048 1.1675384 0 91 - 10000 0.83009098 4053 0.0042178709 -0.38436167 0.85247389 1.9119485 8373 34 34 0 8952 36480 5329 4053 1.1933986 0 91 - 11000 0.73595909 4015 0.0037439098 -0.33989742 0.75668162 1.6495307 8333 22 22 0 9983 36480 5329 4015 1.1959519 0 91 - 12000 0.84043443 4034 0.0041823741 -0.40694768 0.84529962 1.5115578 8566 31 31 0 11023 36480 5329 4034 1.2064988 0 91 - 13000 0.64253331 4044 0.0034868675 -0.25264383 0.7047308 1.739124 8528 31 31 0 12101 36480 5329 4044 1.1912336 0 91 - 14000 0.99330171 4042 0.0055047339 -0.36745778 1.1125618 1.8215191 8548 36 36 0 13098 36480 5329 4042 1.1819124 0 91 - 15000 0.90379859 4049 0.0049047446 -0.35536197 0.99129793 1.7159536 8459 37 37 0 14130 36480 5329 4049 1.1806762 0 91 - 16000 0.87446498 4034 0.0053318245 -0.22533777 1.0776151 2.0239395 8690 33 33 0 15176 36480 5329 4034 1.1912858 0 91 - 17000 0.95733995 4035 0.0053759665 -0.33989994 1.0865366 1.6243881 8518 27 27 0 16147 36480 5329 4035 1.2074487 0 91 - 18000 1.03543 4032 0.0052946469 -0.47268961 1.0701011 1.5444562 8464 28 28 0 17230 36480 5329 4032 1.1959755 0 91 - 19000 0.75997582 4051 0.0034371936 -0.43767278 0.6946912 1.4209137 8436 39 39 0 18276 36480 5329 4051 1.182461 0 91 - 20000 0.89615234 4037 0.0048910458 -0.34673773 0.98852926 1.5843879 8433 28 28 0 19275 36480 5329 4037 1.1850673 0 91 - 21000 0.85849578 4063 0.0044978314 -0.37010201 0.9090567 1.5445809 8504 40 40 0 20278 36480 5329 4063 1.1931031 0 91 - 22000 0.79050471 4066 0.0038260812 -0.40456274 0.77328927 1.6214277 8463 44 44 0 21287 36480 5329 4066 1.1948824 0 91 - 23000 0.89563532 4026 0.0051030186 -0.30312555 1.0313711 1.4848223 8548 35 35 0 22422 36480 5329 4026 1.1975081 0 91 - 24000 0.83528717 4036 0.0043136275 -0.37275064 0.87182725 1.5504059 8527 34 34 0 23404 36480 5329 4036 1.1755463 0 91 - 25000 0.64179358 4022 0.0035185741 -0.24513342 0.71113901 1.7238889 8452 47 47 0 24522 36480 5329 4022 1.2066339 0 91 - 26000 0.86710098 4028 0.0046099591 -0.36026164 0.93171883 1.4255297 8734 33 33 0 25524 36480 5329 4028 1.2001233 0 91 - 27000 0.8327003 4054 0.0045323379 -0.32469262 0.91603082 1.2654649 8468 34 34 0 26520 36480 5329 4054 1.1814901 0 91 - 28000 0.84396759 4049 0.0042805934 -0.39236096 0.86515074 1.2929473 8536 37 37 0 27657 36480 5329 4049 1.1897647 0 91 - 29000 0.77639299 4052 0.0038143413 -0.38590904 0.77091652 1.3627099 8637 36 36 0 28773 36480 5329 4052 1.1858017 0 91 - 30000 0.69994805 4046 0.0034430868 -0.34704032 0.69588228 1.5351247 8704 46 46 0 29818 36480 5329 4046 1.1724555 0 91 - 31000 0.73907898 4039 0.003034759 -0.48787254 0.61335514 1.2291035 8486 29 29 0 30848 36480 5329 4039 1.2063852 0 91 - 32000 0.84649298 4052 0.0044326201 -0.36539769 0.89587685 1.4591662 8513 28 28 0 31917 36480 5329 4052 1.1917883 0 91 - 33000 0.7188891 4031 0.0033440675 -0.39527528 0.67586949 1.2495703 8800 37 37 0 32938 36480 5329 4031 1.191087 0 91 - 34000 0.93588921 4054 0.0054112843 -0.30080024 1.0936747 1.3650172 8585 33 33 0 33913 36480 5329 4054 1.1840415 0 91 - 35000 0.86446961 4039 0.0053251497 -0.21179371 1.076266 1.3791947 8607 22 22 0 34865 36480 5329 4039 1.1916342 0 91 - 36000 0.90510006 4011 0.0054168442 -0.2538007 1.0947984 1.5747653 8479 31 31 0 35842 36480 5329 4011 1.1760305 0 91 - 37000 0.95332175 4058 0.0055020495 -0.30843018 1.1120192 1.4326924 8512 29 29 0 36751 36480 5329 4058 1.180738 0 91 - 38000 0.71413841 4043 0.0038380378 -0.2883604 0.77570582 1.4283837 8611 39 39 0 37689 36480 5329 4043 1.1693806 0 91 - 39000 0.81161335 4064 0.0044323475 -0.31348213 0.89582176 1.4378305 8697 28 28 0 38696 36480 5329 4064 1.1987209 0 91 - 40000 0.8294437 4062 0.0051262098 -0.19981285 1.0360583 1.6010501 8559 31 31 0 39743 36480 5329 4062 1.2092371 0 91 - 41000 0.79325147 4079 0.0045273868 -0.26691453 0.91503015 1.4080428 8775 53 53 0 40806 36480 5329 4079 1.1989619 0 91 - 42000 0.95693891 4027 0.005623893 -0.28919396 1.136645 1.5334192 8509 34 34 0 41793 36480 5329 4027 1.1931035 0 91 - 43000 0.66458435 4029 0.0035902162 -0.26461209 0.72561859 1.4253918 8559 44 44 0 42768 36480 5329 4029 1.2111853 0 91 - 44000 0.84442459 4022 0.0050980388 -0.22782802 1.0303646 1.4587515 8522 32 32 0 43812 36480 5329 4022 1.1943268 0 91 - 45000 0.96505326 4051 0.0057148128 -0.28290855 1.1550208 1.3014361 8496 32 32 0 44803 36480 5329 4051 1.1912109 0 91 - 46000 0.75345782 4064 0.0040245838 -0.30924351 0.81340864 1.7179797 8568 29 29 0 45795 36480 5329 4064 1.1975591 0 91 - 47000 0.87187806 4017 0.004406241 -0.40855293 0.89054538 1.3105257 8586 36 36 0 46822 36480 5329 4017 1.1834816 0 91 - 48000 0.83729235 4078 0.0045115864 -0.33572888 0.91183673 1.3856733 8513 38 38 0 47866 36480 5329 4078 1.1996374 0 91 - 49000 0.65112065 4048 0.0030445536 -0.35483503 0.61533473 1.2659451 8705 32 32 0 48907 36480 5329 4048 1.1907782 0 91 - 50000 0.82730473 4066 0.0045492584 -0.31323342 0.91945063 1.1803982 8562 41 41 0 49965 36480 5329 4066 1.1696702 0 91 - 51000 0.74252279 4048 0.0046741422 -0.16166808 0.94469088 1.5539445 8564 35 35 0 50948 36480 5329 4048 1.1748481 0 91 - 52000 0.85671386 4051 0.0058575179 -0.092640701 1.183863 1.6307333 8609 19 19 0 51894 36480 5329 4051 1.1770671 0 91 - 53000 0.7233951 4068 0.0043421658 -0.20026358 0.87759512 1.453924 8582 28 28 0 52893 36480 5329 4068 1.2027667 0 91 - 54000 0.72117217 4051 0.0040247209 -0.26111018 0.81343635 1.3496518 8679 25 25 0 53831 36480 5329 4051 1.1823115 0 91 - 55000 0.87940919 4044 0.0047057065 -0.35924936 0.95107033 1.240057 8559 34 34 0 54813 36480 5329 4044 1.1815144 0 91 - 56000 0.83192698 4044 0.0046298732 -0.30382753 0.93574367 1.547229 8441 37 37 0 55740 36480 5329 4044 1.1761232 0 91 - 57000 0.91043729 4058 0.0050029377 -0.34540782 1.0111437 1.4951603 8550 32 32 0 56678 36480 5329 4058 1.2024504 0 91 - 58000 0.97648852 4036 0.0053292287 -0.37787747 1.0770904 1.4058278 8554 31 31 0 57683 36480 5329 4036 1.1746239 0 91 - 59000 0.72239185 4018 0.0046615138 -0.1342253 0.94213856 1.8337414 8716 35 35 0 58640 36480 5329 4018 1.1697661 0 91 - 60000 0.73800253 4032 0.0037590001 -0.33989225 0.75973152 1.399426 8561 32 32 0 59593 36480 5329 4032 1.1958194 0 91 - 61000 0.72778603 4060 0.0042599892 -0.22341476 0.86098642 1.3778202 8541 31 31 0 60573 36480 5329 4060 1.1980875 0 91 - 62000 0.80350669 4044 0.0042316822 -0.34195968 0.85526529 1.4379455 8487 37 37 0 61608 36480 5329 4044 1.1942365 0 91 - 63000 0.90084181 4066 0.0043040273 -0.47236734 0.86988695 1.4672845 8504 32 32 0 62670 36480 5329 4066 1.1829834 0 91 - 64000 0.87220486 4059 0.0047840275 -0.33268544 0.9668998 1.5398216 8588 34 34 0 63605 36480 5329 4059 1.1884975 0 91 - 65000 0.82469157 4057 0.004405933 -0.33830733 0.89048312 1.5284565 8783 32 32 0 64693 36480 5329 4057 1.1952722 0 91 - 66000 0.88692288 4081 0.0047264561 -0.36625105 0.95526405 1.3151847 8745 36 36 0 65755 36480 5329 4081 1.1834684 0 91 - 67000 0.83322374 4031 0.0047732147 -0.27678896 0.96471442 1.5085732 8415 34 34 0 66796 36480 5329 4031 1.1969 0 91 - 68000 0.75375865 4020 0.0044379413 -0.22614806 0.89695233 1.6351001 8573 30 30 0 67876 36480 5329 4020 1.1911308 0 91 - 69000 0.91169697 4055 0.0050371842 -0.34036318 1.0180653 1.2495539 8625 20 20 0 68979 36480 5329 4055 1.1860768 0 91 - 70000 0.80502435 4075 0.0042565586 -0.33919322 0.86029306 1.3194042 8571 36 36 0 69947 36480 5329 4075 1.18994 0 91 - 71000 0.8928873 4055 0.0050586026 -0.3080079 1.0223942 1.3949364 8698 32 32 0 71037 36480 5329 4055 1.2154821 0 91 - 72000 0.95397384 4050 0.0052866702 -0.35293209 1.0684889 1.2950893 8613 35 35 0 72090 36480 5329 4050 1.1790804 0 91 - 73000 0.78742879 4053 0.004378612 -0.28830762 0.88496127 1.5168042 8624 30 30 0 73174 36480 5329 4053 1.2008591 0 91 - 74000 0.79498726 4046 0.0042999917 -0.31545969 0.86907133 1.3751647 8562 22 22 0 74250 36480 5329 4046 1.1921334 0 91 - 75000 0.88929145 4051 0.0048995187 -0.33480254 0.99024172 1.6589606 8393 33 33 0 75296 36480 5329 4051 1.1753137 0 91 - 76000 0.98366685 4045 0.0049217494 -0.47092883 0.99473478 1.5271346 8555 29 29 0 76301 36480 5329 4045 1.2031327 0 91 - 77000 0.72618119 4051 0.0035028638 -0.37404618 0.7079638 1.5178344 8565 37 37 0 77315 36480 5329 4051 1.1993308 0 91 - 78000 0.80445682 4028 0.003992176 -0.39178196 0.8068587 1.3682816 8624 32 32 0 78299 36480 5329 4028 1.2065456 0 91 - 79000 1.091703 4052 0.0063793569 -0.33730561 1.2893318 1.5717928 8677 39 39 0 79249 36480 5329 4052 1.1725194 0 91 - 80000 0.77212865 4052 0.0041275152 -0.31625959 0.8342121 1.5583982 8526 33 33 0 80284 36480 5329 4052 1.1981751 0 91 - 81000 0.80732682 4061 0.004618782 -0.26941493 0.93350203 1.5517327 8444 36 36 0 81331 36480 5329 4061 1.2095831 0 91 - 82000 0.80166933 4057 0.0042732734 -0.33081602 0.86367129 1.3937505 8476 29 29 0 82335 36480 5329 4057 1.2047807 0 91 - 83000 0.76980598 4049 0.0041331379 -0.31166241 0.83534851 1.1411979 8561 34 34 0 83375 36480 5329 4049 1.1810941 0 91 - 84000 0.85529188 4076 0.0046148117 -0.34168531 0.93269959 1.3284464 8664 27 27 0 84510 36480 5329 4076 1.192734 0 91 - 85000 0.96167157 4034 0.0053261317 -0.35642617 1.0764645 1.3195071 8557 36 36 0 85517 36480 5329 4034 1.2000123 0 91 - 86000 0.88130862 4047 0.0046646382 -0.37037981 0.94277003 1.3595079 8634 36 36 0 86578 36480 5329 4047 1.1654584 0 91 - 87000 0.68799517 4037 0.0042184867 -0.17251446 0.85259834 1.5087731 8363 40 40 0 87606 36480 5329 4037 1.1833599 0 91 - 88000 0.83191621 4041 0.0048307277 -0.26321678 0.97633838 1.4008912 8597 39 39 0 88490 36480 5329 4041 1.1607031 0 91 - 89000 0.71456519 4036 0.0039378285 -0.26882761 0.79587453 1.2251569 8397 36 36 0 89436 36480 5329 4036 1.1991362 0 91 - 90000 0.75198251 4048 0.0043377839 -0.24374445 0.87670949 1.4896261 8551 29 29 0 90453 36480 5329 4048 1.1899998 0 91 - 91000 0.83310145 4032 0.0049902932 -0.232733 1.0085882 1.4140378 8583 48 48 0 91563 36480 5329 4032 1.1953029 0 91 - 92000 0.8819465 4050 0.0058087956 -0.14008461 1.1740157 1.753218 8610 46 46 0 92618 36480 5329 4050 1.1972268 0 91 - 93000 0.76721608 4048 0.0041923848 -0.29582907 0.8473229 1.4126521 8671 32 32 0 93690 36480 5329 4048 1.2027935 0 91 - 94000 0.8942606 4050 0.0051973822 -0.28200539 1.0504429 1.5743434 8751 21 21 0 94750 36480 5329 4050 1.1804594 0 91 - 95000 0.73609582 4036 0.0035091666 -0.38754512 0.70923765 1.28494 8660 31 31 0 95713 36480 5329 4036 1.1883125 0 91 - 96000 0.79430429 4078 0.0043400156 -0.30635284 0.87716056 1.4351927 8600 38 38 0 96695 36480 5329 4078 1.1704833 0 91 - 97000 0.74817621 4044 0.0038163094 -0.34346826 0.77131429 1.255104 8377 36 36 0 97683 36480 5329 4044 1.1756023 0 91 - 98000 0.78160255 4048 0.0039385343 -0.36857064 0.79601716 1.5320263 8350 25 25 0 98631 36480 5329 4048 1.181196 0 91 - 99000 0.804448 4053 0.004503827 -0.28835905 0.91026848 1.7569548 8506 35 35 0 99687 36480 5329 4053 1.1950898 0 91 - 100000 0.74975993 4032 0.004263269 -0.255493 0.86164929 1.5983872 8621 33 33 0 100701 36480 5329 4032 1.1910217 0 91 -Loop time of 13.4746 on 8 procs for 100000 steps with 20211 atoms - -Pair time (%) = 0.0563478 (0.418178) -Neigh time (%) = 0.794382 (5.89541) -Comm time (%) = 1.23773 (9.18569) -Outpt time (%) = 0.00554895 (0.0411809) -Other time (%) = 11.3806 (84.4595) - -Nlocal: 2526.38 ave 2725 max 2337 min -Histogram: 2 0 0 1 1 1 1 0 1 1 -Nghost: 23.875 ave 27 max 21 min -Histogram: 1 1 0 2 0 2 0 0 0 2 -Neighs: 17 ave 25 max 12 min -Histogram: 3 1 0 1 1 0 0 0 0 2 - -Total # of neighbors = 136 -Ave neighs/atom = 0.00672901 -Neighbor list builds = 5008 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/poly/log.1Feb14.poly.mp.g++.8 b/examples/ASPHERE/poly/log.1Feb14.poly.mp.g++.8 deleted file mode 100644 index 388c629b17f..00000000000 --- a/examples/ASPHERE/poly/log.1Feb14.poly.mp.g++.8 +++ /dev/null @@ -1,239 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD viscosity demo - poydisperse spheres - -units lj -atom_style sphere -atom_modify first big -dimension 2 - -# create big particles with 3 different types and diameters - -lattice sq 0.3 -Lattice spacing in x,y,z = 1.82574 1.82574 1.82574 -region box block 0 10 0 10 -0.5 0.5 -create_box 4 box -Created orthogonal box = (0 0 -0.912871) to (18.2574 18.2574 0.912871) - 2 by 4 by 1 MPI processor grid -create_atoms 1 region box -Created 100 atoms - -group big type 1 -100 atoms in group big -set group big type/fraction 2 0.33 394895 - 35 settings made for type/fraction -set group big type/fraction 3 0.5 989894 - 57 settings made for type/fraction -group big type 2 3 -100 atoms in group big - -set type 1*3 mass 1.0 - 100 settings made for mass -velocity big create 1.44 87287 loop geom - -# equilibrate big particles, repulsive only to prevent aggregation - -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big nve -fix 2 all enforce2d - -#dump 1 all atom 10 dump.poly.equil - -run 1000 -Memory usage per processor = 2.7472 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 1.44 -0.16013916 0 1.2654608 1.1298975 - 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 -Loop time of 0.0173425 on 8 procs for 1000 steps with 100 atoms - -Pair time (%) = 0.00033614 (1.93825) -Neigh time (%) = 0.000266045 (1.53407) -Comm time (%) = 0.0115004 (66.3132) -Outpt time (%) = 2.78056e-05 (0.160332) -Other time (%) = 0.00521213 (30.0541) - -Nlocal: 12.5 ave 18 max 10 min -Histogram: 1 3 1 1 0 1 0 0 0 1 -Nghost: 27.75 ave 31 max 24 min -Histogram: 1 0 1 0 2 2 0 0 0 2 -Neighs: 19 ave 30 max 16 min -Histogram: 4 1 2 0 0 0 0 0 0 1 - -Total # of neighbors = 152 -Ave neighs/atom = 1.52 -Neighbor list builds = 115 -Dangerous builds = 0 - -#undump 1 -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 250.0 -Lattice spacing in x,y,z = 0.0632456 0.0632456 0.0632456 -create_atoms 4 region plane -Created 83521 atoms - -set type 4 mass 0.1 - 83521 settings made for mass -group small type 4 -83521 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set *-4 cutoffs to non-zero values - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 1.0 2.0 -pair_coeff 3 3 1.0 1.5 -pair_coeff 1 4 0.0 1.0 0.5 -pair_coeff 2 4 0.0 1.0 1.0 -pair_coeff 3 4 0.0 1.0 0.75 - -delete_atoms overlap 1.0 small big -Deleted 63410 atoms, new total = 20211 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 1.12 -pair_coeff 1 1 1.0 1.0 1.12 -pair_coeff 2 2 1.0 2.0 2.24 -pair_coeff 3 3 1.0 1.5 1.68 -pair_coeff 4 4 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big nve -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 500 dump.poly.mp - -#dump 1 all image 500 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 - -run 50000 -SRD info: - SRD/big particles = 20111 100 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 73 73 1 - SRD grid size: request, actual (xyz) = 0.25, 0.250102 0.250102 1.82574 - SRD per actual grid cell = 4.93717 - SRD viscosity = 0.23322 - big/SRD mass density ratio = 0.161311 -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.19344 7.74495 - ave/max big velocity = 1.43991 3.5724 -Memory usage per processor = 11.8633 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] - 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 - 1000 0.76223471 3964 0.0058318994 0.042955471 1.1786852 3.9611295 7412 29 29 0 611 36480 5329 3964 0.97424113 0 1 - 2000 0.83394503 3951 0.0050432506 -0.22328672 1.0192914 2.7492771 7829 30 30 0 1225 36480 5329 3951 1.0832295 0 3 - 3000 0.86856945 3991 0.0048205728 -0.31988251 0.97428597 2.4105317 7961 34 34 0 2000 36480 5329 3991 1.1243219 0 6 - 4000 0.88106888 4009 0.0066731082 0.035909261 1.3487019 3.025346 8002 33 33 0 2895 36480 5329 4009 1.1359575 0 6 - 5000 1.0764198 4036 0.0070136315 -0.18634051 1.4175251 2.7617336 8117 36 36 0 3808 36480 5329 4036 1.1147743 0 6 - 6000 1.0433139 4004 0.0059532709 -0.35132214 1.2032156 2.3597383 8004 23 23 0 4845 36480 5329 4004 1.1192873 0 6 - 7000 1.1551053 4026 0.0074766715 -0.20999681 1.5111101 2.280806 8269 36 36 0 5873 36480 5329 4026 1.1704244 0 6 - 8000 1.2222713 4008 0.0078175708 -0.24117508 1.5800092 1.967726 8218 33 33 0 7077 36480 5329 4008 1.1496529 0 6 - 9000 1.2240884 4012 0.0081583857 -0.17500037 1.6488913 2.3684675 8502 27 27 0 8359 36480 5329 4012 1.1664455 0 6 - 10000 1.2071315 4035 0.0073838443 -0.30627724 1.4923488 2.124366 8376 33 33 0 9778 36480 5329 4035 1.1942304 0 6 - 11000 1.1694272 4036 0.0077950192 -0.16699527 1.5754513 2.4203067 8623 40 40 0 11210 36480 5329 4036 1.1802896 0 42 - 12000 1.0911561 4044 0.0074117515 -0.12783343 1.4979891 2.4859591 8490 30 30 0 12647 36480 5329 4044 1.171701 0 42 - 13000 1.3535072 4023 0.0091503262 -0.16735325 1.8493724 2.7718999 8320 33 33 0 14082 36480 5329 4023 1.1841757 0 42 - 14000 1.4191753 4043 0.0095368758 -0.18707328 1.927498 2.8442438 8422 25 25 0 15462 36480 5329 4043 1.1567854 0 42 - 15000 1.703769 4053 0.010892787 -0.33707457 2.2015412 2.4160876 8123 34 34 0 16985 36480 5329 4053 1.1875794 0 42 - 16000 1.4270161 4032 0.010142553 -0.076342616 2.0499114 2.9568071 8360 34 34 0 18487 36480 5329 4032 1.164586 0 42 - 17000 1.2267528 4013 0.0080642511 -0.19799584 1.6298658 2.5084784 8477 27 27 0 20101 36480 5329 4013 1.1529604 0 42 - 18000 1.4228586 4050 0.01009573 -0.079611446 2.0404479 2.8013833 8519 33 33 0 21633 36480 5329 4050 1.1549291 0 42 - 19000 1.3041379 4040 0.0082901927 -0.26763462 1.6755308 1.9403854 8483 30 30 0 23194 36480 5329 4040 1.1592747 0 42 - 20000 1.3837406 4030 0.0092446911 -0.19332904 1.8684445 2.4550531 8425 25 25 0 24761 36480 5329 4030 1.1757648 0 42 - 21000 1.7882552 4031 0.012076007 -0.22381856 2.4406817 2.4206092 8581 40 40 0 26371 36480 5329 4031 1.1591574 0 42 - 22000 1.5079803 4015 0.010373742 -0.15025377 2.0966369 2.6321039 8383 33 33 0 27989 36480 5329 4015 1.1495522 0 42 - 23000 1.3835348 4044 0.0087922321 -0.28446888 1.776998 2.2729548 8441 30 30 0 29575 36480 5329 4044 1.1616377 0 42 - 24000 1.5854836 4044 0.0099174248 -0.35795983 2.0044107 2.2250073 8462 35 35 0 31298 36480 5329 4044 1.1796851 0 42 - 25000 1.5314412 4062 0.010880793 -0.082730301 2.1991171 2.6858232 8473 28 28 0 33079 36480 5329 4062 1.1726593 0 54 - 26000 1.2896316 4070 0.0090198232 -0.098554631 1.8229965 2.3437649 8453 40 40 0 34816 36480 5329 4070 1.1764482 0 54 - 27000 1.6956611 4035 0.012064024 -0.088275024 2.43826 2.8138661 8380 32 32 0 36453 36480 5329 4035 1.1622504 0 54 - 28000 1.3560979 4043 0.0088193796 -0.23810107 1.7824848 2.1799536 8611 30 30 0 38202 36480 5329 4043 1.1681248 0 54 - 29000 1.5837646 4029 0.010790526 -0.17893612 2.1808731 2.3116753 8480 26 26 0 39846 36480 5329 4029 1.1774511 0 54 - 30000 1.6549448 4035 0.01137773 -0.16631482 2.2995529 2.6236656 8637 30 30 0 41461 36480 5329 4035 1.1538405 0 54 - 31000 1.445315 4050 0.01013447 -0.1052417 2.0482777 2.4440312 8504 38 38 0 43099 36480 5329 4050 1.1690375 0 54 - 32000 1.5572315 4037 0.010828477 -0.13173155 2.1885434 2.5911192 8453 30 30 0 44760 36480 5329 4037 1.1612147 0 54 - 33000 2.018109 4068 0.013467519 -0.28506208 2.7219203 2.5784978 8701 40 40 0 46462 36480 5329 4068 1.1727186 0 54 - 34000 1.2455134 4066 0.0083640288 -0.16536113 1.6904539 2.3054829 8428 32 32 0 48055 36480 5329 4066 1.1712016 0 54 - 35000 1.6248596 4012 0.011213824 -0.15461501 2.2664259 2.8697537 8453 31 31 0 49658 36480 5329 4012 1.1693962 0 54 - 36000 1.5485873 4039 0.01112737 -0.058442367 2.2489527 3.0386676 8529 42 42 0 51330 36480 5329 4039 1.1750818 0 54 - 37000 1.5561543 4024 0.011313246 -0.032149816 2.2865202 2.7583779 8484 45 45 0 52981 36480 5329 4024 1.1613247 0 54 - 38000 1.5174762 4043 0.010120957 -0.21549294 2.0455467 2.2489655 8528 37 37 0 54637 36480 5329 4043 1.1692017 0 54 - 39000 1.5936544 4045 0.010946409 -0.16216642 2.2123787 2.7579117 8460 35 35 0 56452 36480 5329 4045 1.1670575 0 54 - 40000 1.7884514 4051 0.011913021 -0.2570519 2.4077408 2.494169 8539 37 37 0 58163 36480 5329 4051 1.1744075 0 54 - 41000 1.4173685 4042 0.0096196931 -0.16764288 1.9442362 1.9949409 8511 42 42 0 59967 36480 5329 4042 1.1747318 0 54 - 42000 1.4946304 4055 0.0098254549 -0.24117659 1.9858227 1.9958514 8395 39 39 0 61697 36480 5329 4055 1.1745062 0 54 - 43000 1.6486882 4041 0.011190255 -0.19488288 2.2616625 2.2173122 8473 28 28 0 63447 36480 5329 4041 1.1631975 0 54 - 44000 1.7473914 4055 0.011743128 -0.23020951 2.3734036 2.3913609 8421 30 30 0 65095 36480 5329 4055 1.1567659 0 54 - 45000 1.7826681 4027 0.011993913 -0.23208563 2.4240898 2.4582759 8539 35 35 0 66749 36480 5329 4027 1.1513285 0 54 - 46000 1.3988187 4049 0.0091738733 -0.23010838 1.8541315 2.3866226 8447 38 38 0 68459 36480 5329 4049 1.1728215 0 54 - 47000 1.8402398 4064 0.01271321 -0.17249031 2.569467 2.7748374 8524 33 33 0 70139 36480 5329 4064 1.1555276 0 54 - 48000 1.5634287 4042 0.011047794 -0.096639164 2.2328696 2.7173437 8561 33 33 0 71923 36480 5329 4042 1.177462 0 54 - 49000 1.789207 4058 0.012453079 -0.14902655 2.5168918 2.9310418 8545 38 38 0 73721 36480 5329 4058 1.1581934 0 54 - 50000 1.3475703 4010 0.0092484369 -0.13867816 1.8692016 2.1619389 8664 32 32 0 75439 36480 5329 4010 1.1589691 0 54 -Loop time of 6.84 on 8 procs for 50000 steps with 20211 atoms - -Pair time (%) = 0.0295508 (0.432029) -Neigh time (%) = 0.400359 (5.8532) -Comm time (%) = 0.622996 (9.10813) -Outpt time (%) = 0.00241029 (0.0352382) -Other time (%) = 5.78468 (84.5714) - -Nlocal: 2526.38 ave 2651 max 2342 min -Histogram: 1 0 0 2 1 0 0 1 1 2 -Nghost: 24.5 ave 27 max 23 min -Histogram: 1 0 4 0 0 2 0 0 0 1 -Neighs: 17.375 ave 24 max 13 min -Histogram: 2 2 0 1 1 0 0 0 0 2 - -Total # of neighbors = 139 -Ave neighs/atom = 0.00687744 -Neighbor list builds = 2502 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/poly/log.1Feb24.poly.g++.1 b/examples/ASPHERE/poly/log.1Feb24.poly.g++.1 new file mode 100644 index 00000000000..f29a3d2a3c9 --- /dev/null +++ b/examples/ASPHERE/poly/log.1Feb24.poly.g++.1 @@ -0,0 +1,317 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - poydisperse spheres + +units lj +atom_style sphere +atom_modify first big +dimension 2 + +# create big particles with 3 different types and diameters + +lattice sq 0.3 +Lattice spacing in x,y,z = 1.8257419 1.8257419 1.8257419 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +Created orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.000 seconds + +group big type 1 +100 atoms in group big +set group big type/fraction 2 0.33 394895 +Setting atom values ... + 35 settings made for type/fraction +set group big type/fraction 3 0.5 989894 +Setting atom values ... + 57 settings made for type/fraction +group big type 2 3 +100 atoms in group big + +set type 1*3 mass 1.0 +Setting atom values ... + 100 settings made for mass +velocity big create 1.44 87287 loop geom + +# equilibrate big particles, repulsive only to prevent aggregation + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve +fix 2 all enforce2d + +#dump 1 all atom 10 dump.poly.equil + +run 1000 +Generated 6 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 1.27, bins = 15 15 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.174 | 4.174 | 4.174 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.44 -0.16013916 0 1.2654608 1.1298975 + 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 +Loop time of 0.00622873 on 1 procs for 1000 steps with 100 atoms + +Performance: 69356032.450 tau/day, 160546.371 timesteps/s, 16.055 Matom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0015709 | 0.0015709 | 0.0015709 | 0.0 | 25.22 +Neigh | 0.0014016 | 0.0014016 | 0.0014016 | 0.0 | 22.50 +Comm | 0.0012066 | 0.0012066 | 0.0012066 | 0.0 | 19.37 +Output | 6.169e-06 | 6.169e-06 | 6.169e-06 | 0.0 | 0.10 +Modify | 0.0013508 | 0.0013508 | 0.0013508 | 0.0 | 21.69 +Other | | 0.0006926 | | | 11.12 + +Nlocal: 100 ave 100 max 100 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 60 ave 60 max 60 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 152 ave 152 max 152 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 152 +Ave neighs/atom = 1.52 +Neighbor list builds = 115 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +Lattice spacing in x,y,z = 0.063245553 0.063245553 0.063245553 +create_atoms 4 region plane +Created 83521 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.016 seconds + +set type 4 mass 0.1 +Setting atom values ... + 83521 settings made for mass +group small type 4 +83521 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set *-4 cutoffs to non-zero values + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 + +delete_atoms overlap 1.0 small big +System init for delete_atoms ... +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 63410 atoms, new total = 20211 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.poly + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 20111 100 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 73 73 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25010162 0.25010162 1.8257419 + SRD per actual grid cell = 4.9371727 + SRD viscosity = 0.23321983 + big/SRD mass density ratio = 0.16131131 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1934421 7.74495 + ave/max big velocity = 1.4399093 3.5724039 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 18.257419, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 42 | 42 | 42 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.0181191 3924 0.0076572255 0.030604433 1.5476019 3.7992573 7242 26 26 0 635 15876 5329 3924 0.98110339 0 3 + 2000 0.69783736 3992 0.0027817464 -0.47755891 0.56221876 1.9887267 7740 34 34 1 1186 15876 5329 3992 1.0611575 0 24 + 3000 0.89084297 3981 0.004323119 -0.45361044 0.87374558 1.7342893 7775 24 24 0 1923 15876 5329 3981 1.1207371 0 24 + 4000 0.84391846 4036 0.0045581483 -0.33619115 0.92124735 1.8456288 8060 43 43 0 2734 15876 5329 4036 1.1481354 0 24 + 5000 0.69548234 4056 0.0030033315 -0.42926535 0.60700333 1.6113509 8260 33 33 0 3638 15876 5329 4056 1.148749 0 24 + 6000 0.71729125 4023 0.0035318938 -0.35493291 0.71383106 1.673491 8224 29 29 0 4528 15876 5329 4023 1.1602572 0 24 + 7000 0.90145513 4032 0.0047423524 -0.38469129 0.95847685 1.7537778 8382 31 31 0 5395 15876 5329 4032 1.1543513 0 24 + 8000 0.6739295 4026 0.0029910322 -0.39963744 0.60451751 1.646528 8409 35 35 0 6293 15876 5329 4026 1.1540519 0 24 + 9000 0.80563959 4041 0.0042947965 -0.33238166 0.86802133 1.6597032 8429 29 29 0 7164 15876 5329 4041 1.1880521 0 24 + 10000 0.90407954 4022 0.0046865656 -0.39987673 0.94720178 1.445708 8349 30 30 0 8189 15876 5329 4022 1.171667 0 24 +Loop time of 5.64963 on 1 procs for 10000 steps with 20211 atoms + +Performance: 152930.340 tau/day, 1770.027 timesteps/s, 35.774 Matom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.019832 | 0.019832 | 0.019832 | 0.0 | 0.35 +Neigh | 0.020738 | 0.020738 | 0.020738 | 0.0 | 0.37 +Comm | 0.056875 | 0.056875 | 0.056875 | 0.0 | 1.01 +Output | 0.00083247 | 0.00083247 | 0.00083247 | 0.0 | 0.01 +Modify | 5.4828 | 5.4828 | 5.4828 | 0.0 | 97.05 +Other | | 0.06854 | | | 1.21 + +Nlocal: 20211 ave 20211 max 20211 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 49 ave 49 max 49 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 160 ave 160 max 160 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 160 +Ave neighs/atom = 0.0079164811 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/ASPHERE/poly/log.1Feb24.poly.g++.4 b/examples/ASPHERE/poly/log.1Feb24.poly.g++.4 new file mode 100644 index 00000000000..f3f42580aa0 --- /dev/null +++ b/examples/ASPHERE/poly/log.1Feb24.poly.g++.4 @@ -0,0 +1,317 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - poydisperse spheres + +units lj +atom_style sphere +atom_modify first big +dimension 2 + +# create big particles with 3 different types and diameters + +lattice sq 0.3 +Lattice spacing in x,y,z = 1.8257419 1.8257419 1.8257419 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +Created orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + 2 by 2 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.000 seconds + +group big type 1 +100 atoms in group big +set group big type/fraction 2 0.33 394895 +Setting atom values ... + 35 settings made for type/fraction +set group big type/fraction 3 0.5 989894 +Setting atom values ... + 57 settings made for type/fraction +group big type 2 3 +100 atoms in group big + +set type 1*3 mass 1.0 +Setting atom values ... + 100 settings made for mass +velocity big create 1.44 87287 loop geom + +# equilibrate big particles, repulsive only to prevent aggregation + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve +fix 2 all enforce2d + +#dump 1 all atom 10 dump.poly.equil + +run 1000 +Generated 6 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 1.27, bins = 15 15 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.172 | 4.172 | 4.172 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.44 -0.16013916 0 1.2654608 1.1298975 + 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 +Loop time of 0.00891987 on 4 procs for 1000 steps with 100 atoms + +Performance: 48431181.463 tau/day, 112109.216 timesteps/s, 11.211 Matom-step/s +98.2% 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.00039835 | 0.00043547 | 0.00047558 | 0.0 | 4.88 +Neigh | 0.00033856 | 0.00036829 | 0.00038548 | 0.0 | 4.13 +Comm | 0.0065535 | 0.0065882 | 0.0066353 | 0.0 | 73.86 +Output | 1.0991e-05 | 1.2359e-05 | 1.4677e-05 | 0.0 | 0.14 +Modify | 0.00043639 | 0.00045662 | 0.00050811 | 0.0 | 5.12 +Other | | 0.001059 | | | 11.87 + +Nlocal: 25 ave 29 max 23 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Nghost: 33.75 ave 35 max 31 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Neighs: 38 ave 46 max 34 min +Histogram: 1 2 0 0 0 0 0 0 0 1 + +Total # of neighbors = 152 +Ave neighs/atom = 1.52 +Neighbor list builds = 115 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +Lattice spacing in x,y,z = 0.063245553 0.063245553 0.063245553 +create_atoms 4 region plane +Created 83521 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.006 seconds + +set type 4 mass 0.1 +Setting atom values ... + 83521 settings made for mass +group small type 4 +83521 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set *-4 cutoffs to non-zero values + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 + +delete_atoms overlap 1.0 small big +System init for delete_atoms ... +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 63410 atoms, new total = 20211 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore +fix 3 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.poly + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 20111 100 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 73 73 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25010162 0.25010162 1.8257419 + SRD per actual grid cell = 4.9371727 + SRD viscosity = 0.23321983 + big/SRD mass density ratio = 0.16131131 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1934421 7.74495 + ave/max big velocity = 1.4399093 3.5724039 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 18.257419, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 19.17 | 19.17 | 19.18 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 + 1000 0.98459665 3968 0.0086216557 0.27547381 1.7425228 4.4010488 7403 34 34 0 663 25600 5329 3968 0.98292304 0 5 + 2000 0.74381104 4003 0.0041077507 -0.27806095 0.8302175 2.6170187 7746 32 32 0 1272 25600 5329 4003 1.0631936 0 5 + 3000 0.86305095 3969 0.0048953507 -0.29654658 0.98939933 2.1215334 7834 35 35 0 1974 25600 5329 3969 1.1209619 0 5 + 4000 0.8262932 4022 0.0049907905 -0.2224882 1.0086887 2.079935 8196 27 27 0 2753 25600 5329 4022 1.1040604 0 5 + 5000 0.85908819 4038 0.0043301633 -0.40487209 0.87516931 1.7917343 8347 28 28 0 3622 25600 5329 4038 1.1575336 0 5 + 6000 0.8048766 4024 0.0047529981 -0.2386377 0.96062844 1.8195477 8103 26 26 0 4536 25600 5329 4024 1.1818796 0 5 + 7000 0.84561126 4047 0.0039459142 -0.46245206 0.79750871 1.4432235 8154 20 20 0 5483 25600 5329 4047 1.1817402 0 5 + 8000 0.81543891 4037 0.0037591562 -0.45524091 0.75976306 1.7501338 8377 27 27 0 6472 25600 5329 4037 1.168956 0 5 + 9000 0.71960112 4045 0.0035243955 -0.3598901 0.71231557 1.7333111 8440 30 30 0 7386 25600 5329 4045 1.1765277 0 5 + 10000 1.0831334 4043 0.0053045911 -0.54175788 1.0721109 1.7434822 8283 33 33 0 8331 25600 5329 4043 1.1696048 0 5 +Loop time of 1.82855 on 4 procs for 10000 steps with 20211 atoms + +Performance: 472504.837 tau/day, 5468.806 timesteps/s, 110.530 Matom-step/s +99.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0057481 | 0.0069625 | 0.0087051 | 1.3 | 0.38 +Neigh | 0.0067658 | 0.0070766 | 0.0076303 | 0.4 | 0.39 +Comm | 0.10613 | 0.10693 | 0.10786 | 0.2 | 5.85 +Output | 0.00053606 | 0.00059075 | 0.00063891 | 0.0 | 0.03 +Modify | 1.6117 | 1.6525 | 1.6763 | 1.9 | 90.37 +Other | | 0.05449 | | | 2.98 + +Nlocal: 5052.75 ave 5483 max 4509 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 27 ave 28 max 26 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 39.5 ave 55 max 26 min +Histogram: 1 0 0 1 0 1 0 0 0 1 + +Total # of neighbors = 158 +Ave neighs/atom = 0.0078175251 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.1 b/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.1 new file mode 100644 index 00000000000..1804a3220d9 --- /dev/null +++ b/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.1 @@ -0,0 +1,318 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - poydisperse spheres + +units lj +atom_style sphere +atom_modify first big +dimension 2 + +# create big particles with 3 different types and diameters + +lattice sq 0.3 +Lattice spacing in x,y,z = 1.8257419 1.8257419 1.8257419 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +Created orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.000 seconds + +group big type 1 +100 atoms in group big +set group big type/fraction 2 0.33 394895 +Setting atom values ... + 35 settings made for type/fraction +set group big type/fraction 3 0.5 989894 +Setting atom values ... + 57 settings made for type/fraction +group big type 2 3 +100 atoms in group big + +set type 1*3 mass 1.0 +Setting atom values ... + 100 settings made for mass +velocity big create 1.44 87287 loop geom + +# equilibrate big particles, repulsive only to prevent aggregation + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve +fix 2 all enforce2d + +#dump 1 all atom 10 dump.poly.equil + +run 1000 +Generated 6 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 1.27, bins = 15 15 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.174 | 4.174 | 4.174 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.44 -0.16013916 0 1.2654608 1.1298975 + 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 +Loop time of 0.00627198 on 1 procs for 1000 steps with 100 atoms + +Performance: 68877814.583 tau/day, 159439.386 timesteps/s, 15.944 Matom-step/s +97.2% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0016224 | 0.0016224 | 0.0016224 | 0.0 | 25.87 +Neigh | 0.0014238 | 0.0014238 | 0.0014238 | 0.0 | 22.70 +Comm | 0.0011671 | 0.0011671 | 0.0011671 | 0.0 | 18.61 +Output | 6.058e-06 | 6.058e-06 | 6.058e-06 | 0.0 | 0.10 +Modify | 0.0013659 | 0.0013659 | 0.0013659 | 0.0 | 21.78 +Other | | 0.0006868 | | | 10.95 + +Nlocal: 100 ave 100 max 100 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 60 ave 60 max 60 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 152 ave 152 max 152 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 152 +Ave neighs/atom = 1.52 +Neighbor list builds = 115 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +Lattice spacing in x,y,z = 0.063245553 0.063245553 0.063245553 +create_atoms 4 region plane +Created 83521 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.017 seconds + +set type 4 mass 0.1 +Setting atom values ... + 83521 settings made for mass +group small type 4 +83521 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set *-4 cutoffs to non-zero values + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 + +delete_atoms overlap 1.0 small big +System init for delete_atoms ... +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 63410 atoms, new total = 20211 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 500 dump.poly.mp + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 20111 100 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 73 73 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25010162 0.25010162 1.8257419 + SRD per actual grid cell = 4.9371727 + SRD viscosity = 0.23321983 + big/SRD mass density ratio = 0.16131131 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1934421 7.74495 + ave/max big velocity = 1.4399093 3.5724039 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 18.257419, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 42 | 42 | 42 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 + 1000 0.9260989 3936 0.007125623 0.060272296 1.4401597 3.9323 7454 34 34 0 666 15876 5329 3936 0.98459206 0 28 + 2000 0.90353395 4000 0.0052889652 -0.27731283 1.0689528 2.6405627 7698 23 23 0 1382 15876 5329 4000 1.0797162 0 46 + 3000 0.90859187 3993 0.0052873224 -0.28518115 1.0686207 2.2965966 7968 31 31 0 2142 15876 5329 3993 1.1267833 0 46 + 4000 0.84755099 4048 0.005174979 -0.21693597 1.045915 2.3794577 8137 36 36 0 3087 15876 5329 4048 1.1357649 0 46 + 5000 0.970415 4034 0.0070498808 -0.021066942 1.4248514 2.7424457 8202 29 29 0 4119 15876 5329 4034 1.1354594 0 46 + 6000 1.3230208 4023 0.0094580142 -0.059741745 1.9115593 3.1405056 8259 36 36 0 5151 15876 5329 4023 1.1508111 0 46 + 7000 1.2356555 4022 0.0076141503 -0.30223075 1.5388959 2.2740088 8336 33 33 0 6277 15876 5329 4022 1.1814599 0 46 + 8000 1.0470467 4044 0.0077098735 -0.001857114 1.5582425 2.97413 8285 40 40 0 7399 15876 5329 4044 1.1644871 0 46 + 9000 1.0827168 4054 0.0062150407 -0.35712609 1.2561219 2.0991523 8454 31 31 0 8664 15876 5329 4054 1.1744383 0 46 + 10000 1.3953419 4031 0.0091083246 -0.23817595 1.8408835 2.4493963 8468 34 34 0 10227 15876 5329 4031 1.1657737 0 62 +Loop time of 5.74914 on 1 procs for 10000 steps with 20211 atoms + +Performance: 150283.390 tau/day, 1739.391 timesteps/s, 35.155 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.021224 | 0.021224 | 0.021224 | 0.0 | 0.37 +Neigh | 0.020586 | 0.020586 | 0.020586 | 0.0 | 0.36 +Comm | 0.057881 | 0.057881 | 0.057881 | 0.0 | 1.01 +Output | 0.00093386 | 0.00093386 | 0.00093386 | 0.0 | 0.02 +Modify | 5.579 | 5.579 | 5.579 | 0.0 | 97.04 +Other | | 0.06951 | | | 1.21 + +Nlocal: 20211 ave 20211 max 20211 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 50 ave 50 max 50 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 141 ave 141 max 141 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 141 +Ave neighs/atom = 0.006976399 +Neighbor list builds = 503 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.4 b/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.4 new file mode 100644 index 00000000000..a0a63e284cf --- /dev/null +++ b/examples/ASPHERE/poly/log.1Feb24.poly.mp.g++.4 @@ -0,0 +1,318 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - poydisperse spheres + +units lj +atom_style sphere +atom_modify first big +dimension 2 + +# create big particles with 3 different types and diameters + +lattice sq 0.3 +Lattice spacing in x,y,z = 1.8257419 1.8257419 1.8257419 +region box block 0 10 0 10 -0.5 0.5 +create_box 4 box +Created orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + 2 by 2 by 1 MPI processor grid +create_atoms 1 region box +Created 100 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.000 seconds + +group big type 1 +100 atoms in group big +set group big type/fraction 2 0.33 394895 +Setting atom values ... + 35 settings made for type/fraction +set group big type/fraction 3 0.5 989894 +Setting atom values ... + 57 settings made for type/fraction +group big type 2 3 +100 atoms in group big + +set type 1*3 mass 1.0 +Setting atom values ... + 100 settings made for mass +velocity big create 1.44 87287 loop geom + +# equilibrate big particles, repulsive only to prevent aggregation + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big nve +fix 2 all enforce2d + +#dump 1 all atom 10 dump.poly.equil + +run 1000 +Generated 6 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 1.27, bins = 15 15 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.172 | 4.172 | 4.172 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.44 -0.16013916 0 1.2654608 1.1298975 + 1000 1.3367862 -0.30816328 0 1.0152551 1.5440006 +Loop time of 0.00883083 on 4 procs for 1000 steps with 100 atoms + +Performance: 48919544.759 tau/day, 113239.687 timesteps/s, 11.324 Matom-step/s +99.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.00040021 | 0.00044336 | 0.00050371 | 0.0 | 5.02 +Neigh | 0.00033682 | 0.00036617 | 0.00038566 | 0.0 | 4.15 +Comm | 0.006519 | 0.0065578 | 0.0066015 | 0.0 | 74.26 +Output | 1.1215e-05 | 1.2252e-05 | 1.4089e-05 | 0.0 | 0.14 +Modify | 0.00043326 | 0.00044482 | 0.00046058 | 0.0 | 5.04 +Other | | 0.001006 | | | 11.40 + +Nlocal: 25 ave 29 max 23 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Nghost: 33.75 ave 35 max 31 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Neighs: 38 ave 46 max 34 min +Histogram: 1 2 0 0 0 0 0 0 0 1 + +Total # of neighbors = 152 +Ave neighs/atom = 1.52 +Neighbor list builds = 115 +Dangerous builds = 0 + +#undump 1 +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 250.0 +Lattice spacing in x,y,z = 0.063245553 0.063245553 0.063245553 +create_atoms 4 region plane +Created 83521 atoms + using lattice units in orthogonal box = (0 0 -0.91287093) to (18.257419 18.257419 0.91287093) + create_atoms CPU = 0.006 seconds + +set type 4 mass 0.1 +Setting atom values ... + 83521 settings made for mass +group small type 4 +83521 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set *-4 cutoffs to non-zero values + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 1.0 2.0 +pair_coeff 3 3 1.0 1.5 +pair_coeff 1 4 0.0 1.0 0.5 +pair_coeff 2 4 0.0 1.0 1.0 +pair_coeff 3 4 0.0 1.0 0.75 +pair_coeff 4 4 0.0 1.0 0.0 + +delete_atoms overlap 1.0 small big +System init for delete_atoms ... +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 14 14 2 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 63410 atoms, new total = 20211 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 1.12 +pair_coeff 1 1 1.0 1.0 1.12 +pair_coeff 2 2 1.0 2.0 2.24 +pair_coeff 3 3 1.0 1.5 1.68 +pair_coeff 4 4 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big nve +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 inside ignore +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 500 dump.poly.mp + +#dump 1 all image 500 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 2.0 adiam 3 1.5 adiam 4 0.1 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 3 of 6 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 20111 100 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 73 73 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25010162 0.25010162 1.8257419 + SRD per actual grid cell = 4.9371727 + SRD viscosity = 0.23321983 + big/SRD mass density ratio = 0.16131131 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1934421 7.74495 + ave/max big velocity = 1.4399093 3.5724039 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.54 + ghost atom cutoff = 2.54 + binsize = 18.257419, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 19.17 | 19.17 | 19.18 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] + 0 0.88820023 0 0.0050232797 -0.30816328 1.0152551 1.5440006 0 0 0 0 0 0 0 0 0 0 0 + 1000 0.83735494 3964 0.0071370659 0.19481352 1.4424724 3.9770741 7472 25 25 0 603 25600 5329 3964 0.96475118 0 2 + 2000 0.89694821 3981 0.0057098818 -0.18242861 1.1540242 3.1251883 7672 28 28 0 1238 25600 5329 3981 1.0589985 0 2 + 3000 0.99778172 3975 0.0051822049 -0.43931933 1.0473754 1.8970896 7814 24 24 0 1968 25600 5329 3975 1.1192504 0 3 + 4000 0.90067439 4030 0.0045096255 -0.43056442 0.91144042 1.8769981 8104 33 33 0 2911 25600 5329 4030 1.1382082 0 3 + 5000 0.90625848 4018 0.0055622776 -0.22613322 1.1241919 2.1866405 8287 26 26 0 3900 25600 5329 4018 1.1429442 0 3 + 6000 1.1284139 4022 0.0065653291 -0.354418 1.3269187 2.0312152 8268 35 35 0 5013 25600 5329 4022 1.1559733 0 3 + 7000 1.0073477 4043 0.0063924548 -0.2089691 1.291979 2.3332058 8433 39 39 0 6093 25600 5329 4043 1.1308958 0 3 + 8000 1.0621801 4050 0.00731979 -0.10324558 1.4794028 2.6610716 8353 40 40 0 7194 25600 5329 4050 1.1539521 0 3 + 9000 1.3173319 4046 0.0085268497 -0.23946297 1.7233616 2.4074596 8290 33 33 0 8498 25600 5329 4046 1.1601502 0 3 + 10000 1.1754738 4009 0.0074264713 -0.25049186 1.5009641 2.4237351 8305 30 30 0 9811 25600 5329 4009 1.1489476 0 43 +Loop time of 1.85719 on 4 procs for 10000 steps with 20211 atoms + +Performance: 465218.852 tau/day, 5384.477 timesteps/s, 108.826 Matom-step/s +99.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0056791 | 0.0069765 | 0.0089852 | 1.6 | 0.38 +Neigh | 0.006991 | 0.0073805 | 0.0079507 | 0.4 | 0.40 +Comm | 0.10756 | 0.10836 | 0.10942 | 0.2 | 5.83 +Output | 0.00052479 | 0.0005511 | 0.00062567 | 0.0 | 0.03 +Modify | 1.6443 | 1.6772 | 1.7031 | 1.7 | 90.31 +Other | | 0.0567 | | | 3.05 + +Nlocal: 5052.75 ave 5381 max 4651 min +Histogram: 1 0 0 0 1 0 0 1 0 1 +Nghost: 28.5 ave 30 max 26 min +Histogram: 1 0 0 0 0 0 0 2 0 1 +Neighs: 34.75 ave 55 max 26 min +Histogram: 2 0 1 0 0 0 0 0 0 1 + +Total # of neighbors = 139 +Ave neighs/atom = 0.006877443 +Neighbor list builds = 501 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/examples/ASPHERE/star/in.star b/examples/ASPHERE/star/in.star index a0988101997..db76c890e80 100644 --- a/examples/ASPHERE/star/in.star +++ b/examples/ASPHERE/star/in.star @@ -1,111 +1,111 @@ # SRD diffusion demo - rigid star particles -units lj -atom_style sphere -atom_modify map array first big -dimension 2 +units lj +atom_style sphere +atom_modify map array first big +dimension 2 # read in clusters of rigid bodies -fix molprop all property/atom mol -read_data data.star fix molprop NULL Molecules +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules + +set type 1 mass 1.0 +group big type 1 +velocity big create 1.44 87287 loop geom -set type 1 mass 1.0 -group big type 1 -velocity big create 1.44 87287 loop geom - # equilibrate big particles -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 variable prefactor equal ramp(0,60) fix soft all adapt 1 pair soft a * * v_prefactor -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes -fix 1 big rigid molecule -fix 2 all enforce2d +fix 1 big rigid molecule +fix 2 all enforce2d -#dump 1 all atom 10 dump.star.equil +#dump 1 all atom 10 dump.star.equil -compute tbig all temp/sphere -thermo_modify temp tbig +compute tbig all temp/sphere +thermo_modify temp tbig -thermo 100 -run 1000 +thermo 100 +run 1000 -#undump 1 +#undump 1 unfix soft -unfix 1 -unfix 2 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -create_atoms 2 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +create_atoms 2 region plane -set type 2 mass 0.1 -group small type 2 -velocity small create 1.0 593849 loop geom +set type 2 mass 0.1 +group small type 2 +velocity small create 1.0 593849 loop geom # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 -delete_atoms overlap 0.5 small big +delete_atoms overlap 0.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid molecule -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & - search 0.2 collision slip inside ignore overlap yes -fix 3 all enforce2d +fix 1 big rigid molecule +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & + search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d # diagnostics uncompute tbig -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 1000 dump.star +#dump 1 all atom 1000 dump.star -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 -run 100000 +run 10000 diff --git a/examples/ASPHERE/star/in.star.mp b/examples/ASPHERE/star/in.star.mp index 53cb924e429..781b2f48fd6 100644 --- a/examples/ASPHERE/star/in.star.mp +++ b/examples/ASPHERE/star/in.star.mp @@ -1,112 +1,112 @@ # SRD viscosity demo - rigid star particles -units lj -atom_style sphere -atom_modify map array first big -dimension 2 +units lj +atom_style sphere +atom_modify map array first big +dimension 2 # read in clusters of rigid bodies -fix molprop all property/atom mol -read_data data.star fix molprop NULL Molecules +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules + +set type 1 mass 1.0 +group big type 1 +velocity big create 1.44 87287 loop geom -set type 1 mass 1.0 -group big type 1 -velocity big create 1.44 87287 loop geom - # equilibrate big particles -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 variable prefactor equal ramp(0,60) fix soft all adapt 1 pair soft a * * v_prefactor -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes -fix 1 big rigid molecule -fix 2 all enforce2d +fix 1 big rigid molecule +fix 2 all enforce2d -#dump 1 all atom 10 dump.star.equil +#dump 1 all atom 10 dump.star.equil -compute tbig all temp/sphere -thermo_modify temp tbig +compute tbig all temp/sphere +thermo_modify temp tbig -thermo 100 -run 1000 +thermo 100 +run 1000 -#undump 1 +#undump 1 unfix soft -unfix 1 -unfix 2 +unfix 1 +unfix 2 # add small particles as hi density lattice -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -create_atoms 2 region plane +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +create_atoms 2 region plane -set type 2 mass 0.1 -group small type 2 -velocity small create 1.0 593849 loop geom +set type 2 mass 0.1 +group small type 2 +velocity small create 1.0 593849 loop geom # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 -delete_atoms overlap 0.5 small big +delete_atoms overlap 0.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid molecule -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & - search 0.2 collision slip inside ignore overlap yes -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d +fix 1 big rigid molecule +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 & + search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d # diagnostics uncompute tbig -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & - f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & - f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press & + f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] & + f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] -thermo_modify temp tbig -thermo 1000 +thermo_modify temp tbig +thermo 1000 -#dump 1 all atom 1000 dump.star.mp +#dump 1 all atom 1000 dump.star.mp -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 -run 100000 +run 10000 diff --git a/examples/ASPHERE/star/log.1Feb14.star.g++.8 b/examples/ASPHERE/star/log.1Feb14.star.g++.8 deleted file mode 100644 index 3ccc04ff263..00000000000 --- a/examples/ASPHERE/star/log.1Feb14.star.g++.8 +++ /dev/null @@ -1,290 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD diffusion demo - rigid star particles - -units lj -atom_style sphere -atom_modify map array first big -dimension 2 - -# read in clusters of rigid bodies - -fix molprop all property/atom mol -read_data data.star fix molprop NULL Molecules - orthogonal box = (-13.2934 -13.2934 -0.5) to (13.2934 13.2934 0.5) - 4 by 2 by 1 MPI processor grid - reading atoms ... - 270 atoms - -set type 1 mass 1.0 - 270 settings made for mass -group big type 1 -270 atoms in group big -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 - -variable prefactor equal ramp(0,60) -fix soft all adapt 1 pair soft a * * v_prefactor - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big rigid molecule -30 rigid bodies with 270 atoms -fix 2 all enforce2d - -#dump 1 all atom 10 dump.star.equil - -thermo 100 -run 1000 -Memory usage per processor = 2.64859 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 0 0 0 0.24721146 - 100 0 3.291475 0 3.291475 0.69158089 - 200 0 4.6176595 0 4.6176595 0.71737945 - 300 0 7.0921814 0 7.0921814 1.2163497 - 400 0 8.3666709 0 8.3666709 0.50645957 - 500 0 10.630838 0 10.630838 0.72764487 - 600 0 12.42157 0 12.42157 1.0130599 - 700 0 14.349074 0 14.349074 0.74795509 - 800 0 16.464746 0 16.464746 1.054549 - 900 0 18.253108 0 18.253108 0.51551753 - 1000 0 20.699563 0 20.699563 1.8084662 -Loop time of 0.040709 on 8 procs for 1000 steps with 270 atoms - -Pair time (%) = 0.00249004 (6.11668) -Neigh time (%) = 0.000995547 (2.44552) -Comm time (%) = 0.0116902 (28.7165) -Outpt time (%) = 0.000232756 (0.571755) -Other time (%) = 0.0253005 (62.1496) - -Nlocal: 33.75 ave 42 max 22 min -Histogram: 1 0 1 0 0 2 0 1 1 2 -Nghost: 23.375 ave 30 max 14 min -Histogram: 1 0 1 0 0 2 1 0 1 2 -Neighs: 52.25 ave 69 max 27 min -Histogram: 1 0 1 0 1 0 1 1 1 2 - -Total # of neighbors = 418 -Ave neighs/atom = 1.54815 -Neighbor list builds = 176 -Dangerous builds = 0 - -#undump 1 -unfix soft -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -Lattice spacing in x,y,z = 0.108465 0.108465 0.108465 -create_atoms 2 region plane -Created 60025 atoms - -set type 2 mass 0.1 - 60025 settings made for mass -group small type 2 -60025 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 - -delete_atoms overlap 0.5 small big -Deleted 16305 atoms, new total = 43990 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid molecule -30 rigid bodies with 270 atoms -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes -fix 3 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 1000 dump.star - -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 100000 -SRD info: - SRD/big particles = 43720 270 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 106 106 1 - SRD grid size: request, actual (xyz) = 0.25, 0.250819 0.250819 1 - SRD per actual grid cell = 5.55866 - SRD viscosity = 0.235582 - big/SRD mass density ratio = 0.144099 -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.19085 7.72582 - ave/max big velocity = 2.20262 5.4168 -Memory usage per processor = 7.83759 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 1.3155168 8201 0.22979575 37.225304 37.439685 8.9588433 14577 56 56 0 687 57680 11236 8201 1.0283377 0 5 0 - 2000 0.82290815 8187 0.22918912 37.206746 37.340849 6.0607727 14326 56 56 0 1524 57680 11236 8187 1.0127464 0 5 0 - 3000 0.99928391 8168 0.22921842 37.182777 37.345623 10.268998 14389 68 68 0 2274 57680 11236 8168 1.023497 0 5 0 - 4000 1.0348458 8200 0.22920437 37.174693 37.343335 9.8954805 14335 51 51 0 3047 57680 11236 8200 1.0156984 0 5 0 - 5000 1.1496765 8199 0.22939095 37.186379 37.373733 8.0143223 14444 74 74 0 3868 57680 11236 8199 1.0104858 0 5 0 - 6000 0.91767381 8225 0.2292466 37.200668 37.350215 8.6189298 14131 61 61 0 4594 57680 11236 8225 1.0147272 0 5 0 - 7000 0.74806752 8203 0.22888634 37.169611 37.291518 9.8613421 14121 53 53 1 5322 57680 11236 8203 1.0198289 0 19 0 - 8000 1.1177867 8213 0.22924801 37.168286 37.350444 7.911691 14380 62 62 0 6024 57680 11236 8213 1.0066799 0 19 0 - 9000 1.1258411 8209 0.22939703 37.191253 37.374723 6.7377179 14350 51 51 0 6821 57680 11236 8209 1.0081225 0 19 0 - 10000 1.0597344 8182 0.22919436 37.169006 37.341703 9.7769156 14372 48 48 0 7543 57680 11236 8182 1.0099373 0 19 0 - 11000 1.3337199 8159 0.22943046 37.162823 37.38017 6.0897666 14359 58 58 0 8245 57680 11236 8159 1.0046221 0 19 0 - 12000 1.0280975 8184 0.22894286 37.133186 37.300728 2.555317 14162 51 51 0 8935 57680 11236 8184 1.0010306 0 19 0 - 13000 1.2318533 8190 0.22921487 37.144299 37.345045 6.1739989 14285 64 64 0 9634 57680 11236 8190 1.0138112 0 19 0 - 14000 1.1851991 8215 0.22915708 37.142485 37.335629 7.8380175 14151 66 66 0 10407 57680 11236 8215 1.0008011 0 19 0 - 15000 0.89853218 8214 0.22897294 37.159201 37.305628 4.0743953 14077 61 61 0 11069 57680 11236 8214 1.0041341 0 19 0 - 16000 1.0295974 8176 0.22891205 37.127921 37.295708 8.7527117 14000 48 48 0 11832 57680 11236 8176 1.0089653 0 23 0 - 17000 1.1793664 8219 0.22906268 37.128056 37.320249 5.2583304 14268 57 57 0 12490 57680 11236 8219 1.0157079 0 23 0 - 18000 0.90486919 8180 0.22891008 37.147927 37.295387 4.8498125 13939 64 64 0 13154 57680 11236 8180 0.99700921 0 23 0 - 19000 0.81486319 8219 0.22881911 37.147773 37.280566 1.6338041 13934 59 59 1 13861 57680 11236 8219 1.0099189 0 23 0 - 20000 1.0146287 8180 0.22896254 37.138587 37.303934 2.1682593 14057 45 45 0 14593 57680 11236 8180 1.0009466 0 23 0 - 21000 1.3031463 8164 0.22920646 37.131309 37.343674 6.570906 13944 65 65 0 15323 57680 11236 8164 0.98955239 0 23 0 - 22000 1.1258162 8174 0.22915084 37.151147 37.334613 9.0817519 14052 56 56 0 16042 57680 11236 8174 1.0083228 0 23 0 - 23000 1.1421222 8217 0.22906722 37.134865 37.320989 8.0529401 14143 66 66 0 16797 57680 11236 8217 1.0111161 0 23 0 - 24000 0.77402445 8168 0.22883056 37.156294 37.282431 6.8609899 14258 62 62 0 17559 57680 11236 8168 1.0080535 0 23 0 - 25000 0.94006632 8215 0.22879533 37.123496 37.276692 3.8570839 14446 48 48 0 18267 57680 11236 8215 1.0087899 0 23 0 - 26000 1.2808563 8192 0.22933112 37.155253 37.363985 5.3591484 13960 54 54 1 19004 57680 11236 8192 1.0101851 0 79 0 - 27000 1.0266075 8171 0.22898652 37.140542 37.307841 2.9961422 14049 56 56 1 19683 57680 11236 8171 0.99950217 0 79 0 - 28000 0.98185838 8199 0.22867129 37.096475 37.256481 12.080529 14106 61 62 0 20417 57680 11236 8199 1.0026548 0 79 0 - 29000 0.96921352 8192 0.22861802 37.089856 37.247802 8.257635 13891 63 64 0 21169 57680 11236 8192 1.0128041 0 79 0 - 30000 1.0107665 8223 0.22866616 37.090929 37.255646 9.4280788 14021 61 61 1 21863 57680 11236 8223 1.0034994 0 79 0 - 31000 1.1859435 8195 0.22877222 37.079661 37.272926 7.3863353 14093 78 78 0 22480 57680 11236 8195 0.9945582 0 79 0 - 32000 1.2951374 8172 0.22897044 37.094161 37.30522 6.4322363 13792 52 52 0 23151 57680 11236 8172 1.0026092 0 79 0 - 33000 0.82899919 8176 0.22823894 37.050944 37.186041 0.60210493 13797 62 62 0 23903 57680 11236 8176 1.0051075 0 79 0 - 34000 0.96685714 8165 0.22828901 37.036637 37.194199 8.1409866 13837 50 50 0 24591 57680 11236 8165 1.0157895 0 79 0 - 35000 0.95645753 8206 0.22833008 37.045022 37.200889 8.9956195 14130 63 63 0 25340 57680 11236 8206 1.0030424 0 79 0 - 36000 1.2933379 8197 0.22879201 37.065383 37.27615 8.3938627 13978 80 80 0 26085 57680 11236 8197 1.0094497 0 79 0 - 37000 1.1511434 8176 0.22861016 37.058929 37.246523 4.9481995 13856 49 49 1 26759 57680 11236 8176 1.0063722 0 79 0 - 38000 0.93310274 8181 0.22837532 37.056199 37.20826 5.9575015 13949 51 51 0 27445 57680 11236 8181 1.0152607 0 79 0 - 39000 1.0352467 8215 0.22861437 37.078501 37.247208 9.8519532 14109 69 69 0 28245 57680 11236 8215 1.005523 0 79 0 - 40000 1.2696427 8193 0.22885162 37.078957 37.285862 8.4680587 13931 54 55 0 28960 57680 11236 8193 1.0014074 0 79 0 - 41000 1.3270531 8193 0.22909573 37.109374 37.325634 4.3731598 14115 62 62 0 29668 57680 11236 8193 1.0022493 0 79 0 - 42000 1.3650738 8183 0.22911257 37.105921 37.328377 6.6345101 13659 52 52 0 30400 57680 11236 8183 1.0145834 0 79 0 - 43000 1.0780084 8209 0.22855316 37.06156 37.237235 5.5147087 14062 52 52 0 31092 57680 11236 8209 1.0031365 0 79 0 - 44000 0.96146724 8193 0.22846546 37.066263 37.222946 9.7967735 13699 56 56 0 31771 57680 11236 8193 1.0072364 0 79 0 - 45000 1.1733618 8200 0.2286481 37.061489 37.252703 9.8058881 13967 51 52 0 32532 57680 11236 8200 1.0068663 0 79 0 - 46000 0.94784989 8211 0.22845052 37.066048 37.220513 5.8834756 13944 34 35 0 33213 57680 11236 8211 1.0080225 0 79 0 - 47000 1.2354771 8207 0.22859598 37.042876 37.244213 6.1458407 13851 56 56 0 33886 57680 11236 8207 1.0151781 0 79 0 - 48000 1.0834097 8164 0.22835968 37.029157 37.205712 6.7378814 13944 56 56 0 34578 57680 11236 8164 1.0128575 0 79 0 - 49000 0.9386786 8208 0.22837254 37.054838 37.207808 5.0809383 13618 53 53 0 35328 57680 11236 8208 1.0045622 0 79 0 - 50000 1.047176 8154 0.22859126 37.072791 37.243442 4.8016981 13847 55 55 0 36059 57680 11236 8154 1.0005378 0 79 0 - 51000 1.0943417 8222 0.22844191 37.040773 37.21911 7.9359541 13897 61 61 0 36711 57680 11236 8222 1.0036343 0 79 0 - 52000 1.2811259 8200 0.22871149 37.054255 37.263031 4.9958687 13744 56 56 0 37402 57680 11236 8200 1.0049188 0 79 0 - 53000 1.0997162 8218 0.22853173 37.05453 37.233743 4.6772882 13967 65 65 0 38082 57680 11236 8218 1.0054533 0 79 0 - 54000 0.97625718 8185 0.2283994 37.05309 37.212184 5.9026406 13741 69 69 0 38761 57680 11236 8185 0.99393606 0 79 0 - 55000 0.97919465 8192 0.22835234 37.044944 37.204516 6.8419755 13990 58 58 0 39453 57680 11236 8192 1.0103052 0 79 0 - 56000 0.86300824 8181 0.22842164 37.075169 37.215808 6.8288348 13751 57 57 0 40118 57680 11236 8181 0.99683099 0 79 0 - 57000 0.89429559 8181 0.22851743 37.085677 37.231414 9.378853 13746 72 72 0 40730 57680 11236 8181 1.0086882 0 79 0 - 58000 1.0853441 8172 0.22857719 37.064279 37.24115 7.4580035 13869 58 58 1 41462 57680 11236 8172 1.0092141 0 79 0 - 59000 1.0149632 8199 0.22868187 37.092803 37.258205 8.2913359 13720 54 54 0 42159 57680 11236 8199 1.0082738 0 79 0 - 60000 0.99214038 8241 0.22871146 37.101344 37.263026 7.9905647 13776 67 67 0 42858 57680 11236 8241 1.0027929 0 79 0 - 61000 0.95721926 8211 0.2285241 37.07651 37.232501 11.837258 13907 62 62 0 43565 57680 11236 8211 1.0201117 0 79 0 - 62000 1.1457294 8195 0.22866514 37.068769 37.25548 9.7934944 13796 40 40 1 44292 57680 11236 8195 1.005192 0 79 0 - 63000 1.1096177 8193 0.22863037 37.068989 37.249815 8.0809047 13984 54 55 0 44986 57680 11236 8193 1.0076438 0 79 0 - 64000 1.1643495 8168 0.22860016 37.055147 37.244893 4.7376475 13857 50 50 1 45657 57680 11236 8168 1.002011 0 79 0 - 65000 1.2172585 8201 0.22845803 37.023368 37.221736 8.9744616 13610 53 53 0 46295 57680 11236 8201 1.0033999 0 79 0 - 66000 0.99924611 8189 0.22807344 36.996237 37.159077 8.5854786 13849 49 49 0 46944 57680 11236 8189 1.015528 0 79 0 - 67000 1.2543542 8165 0.22831075 36.993327 37.19774 5.0081411 13906 57 58 1 47666 57680 11236 8165 1.0189753 0 79 0 - 68000 1.0360874 8205 0.22812149 36.99806 37.166904 2.2431831 13650 52 52 0 48363 57680 11236 8205 1.0076864 0 79 0 - 69000 0.69755552 8218 0.22766249 36.978446 37.092121 4.2769033 13654 51 51 0 49044 57680 11236 8218 1.009863 0 79 0 - 70000 0.90921994 8167 0.22796236 36.992809 37.140978 9.3555738 13927 52 52 0 49793 57680 11236 8167 1.0015807 0 79 0 - 71000 0.95608837 8177 0.22797832 36.987772 37.143579 8.0740708 13612 63 63 0 50464 57680 11236 8177 1.0097491 0 79 0 - 72000 1.0374855 8192 0.22803745 36.98414 37.153212 4.4789755 13561 52 52 0 51127 57680 11236 8192 0.99496724 0 79 0 - 73000 0.90636338 8214 0.22783374 36.97232 37.120024 9.3364171 13598 53 53 0 51799 57680 11236 8214 1.0078219 0 79 0 - 74000 1.1869638 8179 0.22834625 37.010094 37.203525 4.8292929 13771 51 51 0 52500 57680 11236 8179 0.98865277 0 79 0 - 75000 1.0177351 8188 0.22826506 37.024443 37.190296 5.1808505 13508 55 55 0 53183 57680 11236 8188 0.99903558 0 79 0 - 76000 1.062496 8230 0.22820987 37.008158 37.181305 8.1032524 13769 58 58 0 53864 57680 11236 8230 0.99397021 0 79 0 - 77000 0.9762027 8131 0.22831271 37.038975 37.19806 10.309798 13787 47 47 0 54553 57680 11236 8131 1.0066289 0 79 0 - 78000 1.0688533 8160 0.22855677 37.06364 37.237824 7.4800503 13224 58 58 0 55248 57680 11236 8160 1.0073477 0 79 0 - 79000 1.2598513 8151 0.22844942 37.015024 37.220333 7.4724924 13859 63 63 0 55911 57680 11236 8151 1.0065168 0 79 0 - 80000 1.1044575 8176 0.22834306 37.023019 37.203005 3.0142586 13579 62 62 0 56611 57680 11236 8176 1.0008704 0 79 0 - 81000 1.2756491 8205 0.22853748 37.026797 37.23468 6.434309 13702 52 52 0 57313 57680 11236 8205 1.0058366 0 79 0 - 82000 1.1276926 8193 0.22857049 37.056287 37.240059 11.825248 13621 63 63 0 58011 57680 11236 8193 1.0113537 0 79 0 - 83000 0.96941691 8173 0.22824759 37.029471 37.18745 2.9152799 13478 48 49 0 58712 57680 11236 8173 1.0168819 0 79 0 - 84000 1.0770325 8186 0.22821292 37.006285 37.181802 5.0626072 13733 60 61 0 59433 57680 11236 8186 1.0177757 0 79 0 - 85000 1.1959489 8175 0.2284266 37.021719 37.216615 5.3844747 13964 55 55 0 60226 57680 11236 8175 1.007371 0 79 0 - 86000 1.035779 8204 0.22845952 37.053185 37.221979 7.5428558 13713 64 64 0 60982 57680 11236 8204 1.0110801 0 79 0 - 87000 1.1878573 8204 0.22836412 37.012859 37.206436 3.1124447 13655 47 47 0 61668 57680 11236 8204 1.0034968 0 79 0 - 88000 0.98402924 8206 0.22815704 37.012337 37.172698 10.613422 13947 56 56 0 62325 57680 11236 8206 1.0081468 0 79 0 - 89000 0.83763529 8199 0.22807071 37.022127 37.158631 5.4628281 13966 50 50 0 63012 57680 11236 8199 0.99956322 0 79 0 - 90000 1.1976672 8187 0.22849599 37.032745 37.227921 5.5583762 13903 43 43 0 63697 57680 11236 8187 1.0047573 0 79 0 - 91000 0.94863742 8188 0.22818061 37.021945 37.176537 5.157692 13859 46 46 0 64382 57680 11236 8188 1.0041894 0 79 0 - 92000 1.2038427 8172 0.22846103 37.026042 37.222224 6.685059 13675 57 57 0 65081 57680 11236 8172 1.0036906 0 79 0 - 93000 0.95835618 8210 0.22828548 37.037446 37.193622 8.0038227 13826 57 58 0 65761 57680 11236 8210 1.0076646 0 79 0 - 94000 1.2451267 8197 0.22856138 37.035665 37.238575 3.6305666 13918 62 62 0 66462 57680 11236 8197 1.0110913 0 79 0 - 95000 0.82128549 8206 0.22809174 37.028218 37.162057 8.7024273 13817 44 44 0 67185 57680 11236 8206 1.0032224 0 79 0 - 96000 0.83473128 8199 0.22820935 37.04519 37.18122 8.1258155 14167 54 54 0 67912 57680 11236 8199 1.0035561 0 79 0 - 97000 0.98924493 8196 0.22847944 37.064014 37.225225 8.9964529 14039 48 51 0 68608 57680 11236 8196 1.0007515 0 79 0 - 98000 1.1749668 8211 0.22879851 37.085733 37.27721 7.0283734 13850 58 59 0 69305 57680 11236 8211 0.99525651 0 79 0 - 99000 1.3269705 8163 0.22890919 37.078994 37.295241 9.7962294 13885 63 63 0 69994 57680 11236 8163 1.011015 0 107 0 - 100000 1.0020436 8171 0.22867221 37.093336 37.256632 4.9455304 14102 55 56 0 70707 57680 11236 8171 1.0072865 0 107 0 -Loop time of 33.9872 on 8 procs for 100000 steps with 43990 atoms - -Pair time (%) = 0.379981 (1.11801) -Neigh time (%) = 2.01801 (5.93757) -Comm time (%) = 2.30255 (6.77476) -Outpt time (%) = 0.00694308 (0.0204285) -Other time (%) = 29.2797 (86.1492) - -Nlocal: 5498.75 ave 6445 max 4431 min -Histogram: 1 0 0 2 1 1 0 1 1 1 -Nghost: 62.5 ave 70 max 57 min -Histogram: 3 0 0 1 1 0 1 0 1 1 -Neighs: 207 ave 365 max 92 min -Histogram: 1 1 1 1 2 0 1 0 0 1 - -Total # of neighbors = 1656 -Ave neighs/atom = 0.0376449 -Neighbor list builds = 5000 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/star/log.1Feb14.star.mp.g++.8 b/examples/ASPHERE/star/log.1Feb14.star.mp.g++.8 deleted file mode 100644 index b53b8961e39..00000000000 --- a/examples/ASPHERE/star/log.1Feb14.star.mp.g++.8 +++ /dev/null @@ -1,291 +0,0 @@ -LAMMPS (1 Feb 2014) -# SRD viscosity demo - rigid star particles - -units lj -atom_style sphere -atom_modify map array first big -dimension 2 - -# read in clusters of rigid bodies - -fix molprop all property/atom mol -read_data data.star fix molprop NULL Molecules - orthogonal box = (-13.2934 -13.2934 -0.5) to (13.2934 13.2934 0.5) - 4 by 2 by 1 MPI processor grid - reading atoms ... - 270 atoms - -set type 1 mass 1.0 - 270 settings made for mass -group big type 1 -270 atoms in group big -velocity big create 1.44 87287 loop geom - -# equilibrate big particles - -pair_style soft 1.12 -pair_coeff 1 1 0.0 -pair_coeff 2 2 0.0 0.0 -pair_coeff 1 2 0.0 0.0 - -variable prefactor equal ramp(0,60) -fix soft all adapt 1 pair soft a * * v_prefactor - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -fix 1 big rigid molecule -30 rigid bodies with 270 atoms -fix 2 all enforce2d - -#dump 1 all atom 10 dump.star.equil - -thermo 100 -run 1000 -Memory usage per processor = 2.64859 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 0 0 0 0.24721146 - 100 0 3.291475 0 3.291475 0.69158089 - 200 0 4.6176595 0 4.6176595 0.71737945 - 300 0 7.0921814 0 7.0921814 1.2163497 - 400 0 8.3666709 0 8.3666709 0.50645957 - 500 0 10.630838 0 10.630838 0.72764487 - 600 0 12.42157 0 12.42157 1.0130599 - 700 0 14.349074 0 14.349074 0.74795509 - 800 0 16.464746 0 16.464746 1.054549 - 900 0 18.253108 0 18.253108 0.51551753 - 1000 0 20.699563 0 20.699563 1.8084662 -Loop time of 0.0484946 on 8 procs for 1000 steps with 270 atoms - -Pair time (%) = 0.00250834 (5.17242) -Neigh time (%) = 0.000999629 (2.06132) -Comm time (%) = 0.0154877 (31.9369) -Outpt time (%) = 0.000273734 (0.564464) -Other time (%) = 0.0292252 (60.2649) - -Nlocal: 33.75 ave 42 max 22 min -Histogram: 1 0 1 0 0 2 0 1 1 2 -Nghost: 23.375 ave 30 max 14 min -Histogram: 1 0 1 0 0 2 1 0 1 2 -Neighs: 52.25 ave 69 max 27 min -Histogram: 1 0 1 0 1 0 1 1 1 2 - -Total # of neighbors = 418 -Ave neighs/atom = 1.54815 -Neighbor list builds = 176 -Dangerous builds = 0 - -#undump 1 -unfix soft -unfix 1 -unfix 2 - -# add small particles as hi density lattice - -region plane block INF INF INF INF -0.001 0.001 units box -lattice sq 85.0 -Lattice spacing in x,y,z = 0.108465 0.108465 0.108465 -create_atoms 2 region plane -Created 60025 atoms - -set type 2 mass 0.1 - 60025 settings made for mass -group small type 2 -60025 atoms in group small -velocity small create 1.0 593849 loop geom - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.5 - -delete_atoms overlap 0.5 small big -Deleted 16305 atoms, new total = 43990 - -# SRD run - -reset_timestep 0 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes - -communicate multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid molecule -30 rigid bodies with 270 atoms -fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes -fix 3 small viscosity 10 x y 50 -fix 4 all enforce2d - -# diagnostics - -compute tbig big temp/sphere -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) -thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] - -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439) -thermo 1000 - -#dump 1 all atom 1000 dump.star.mp - -#dump 1 all image 1000 image.*.jpg type type zoom 1.6 -#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 - -run 100000 -SRD info: - SRD/big particles = 43720 270 - big particle diameter max/min = 1 1 - SRD temperature & lamda = 1 0.0632456 - SRD max distance & max velocity = 0.252982 12.6491 - SRD grid counts: 106 106 1 - SRD grid size: request, actual (xyz) = 0.25, 0.250819 0.250819 1 - SRD per actual grid cell = 5.55866 - SRD viscosity = 0.235582 - big/SRD mass density ratio = 0.144099 -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875) - # of rescaled SRD velocities = 0 - ave/max small velocity = 4.19085 7.72582 - ave/max big velocity = 2.20262 5.4168 -Memory usage per processor = 7.83759 Mbytes -Step Temp 2[8] TotEng pebig ebig Press 2[1] 2[2] 2[3] 2[4] 2[5] 2[6] 2[7] 2[8] 2[9] 2[10] 2[11] 2[12] - 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 - 1000 1.3197888 8196 0.2296966 37.208454 37.42353 7.4694369 14388 59 59 0 707 57680 11236 8196 1.0259754 0 5 0 - 2000 1.5789784 8192 0.22993088 37.204387 37.461702 7.6252927 14352 56 56 0 1521 57680 11236 8192 1.0168955 0 7 0 - 3000 1.286186 8153 0.2296947 37.213621 37.423222 8.8624394 14533 73 73 0 2299 57680 11236 8153 1.0109574 0 7 0 - 4000 2.0862082 8194 0.23044604 37.20566 37.545635 7.8064365 14228 48 48 0 3068 57680 11236 8194 1.0046224 0 7 0 - 5000 1.892401 8172 0.23019301 37.196017 37.504409 7.9041579 14290 55 55 0 3866 57680 11236 8172 1.005673 0 7 0 - 6000 2.1063411 8138 0.23041636 37.197543 37.540799 4.8468885 13803 47 47 0 4638 57680 11236 8138 1.0083722 0 7 0 - 7000 2.3549938 8174 0.23071159 37.205123 37.5889 6.5703154 13773 58 58 0 5398 57680 11236 8174 1.0039365 0 7 0 - 8000 3.0660305 8216 0.23155654 37.226914 37.726563 11.977404 13898 65 65 0 6180 57680 11236 8216 0.99586836 0 7 0 - 9000 3.1510761 8203 0.23143756 37.19367 37.707178 7.2978028 13815 54 54 0 6985 57680 11236 8203 0.99794556 0 7 0 - 10000 2.7472522 8196 0.23096076 37.181796 37.629496 11.336568 14012 59 59 0 7812 57680 11236 8196 0.99210203 0 11 0 - 11000 2.1776587 8186 0.23038876 37.181424 37.536302 9.2106614 14063 64 64 0 8627 57680 11236 8186 1.003993 0 11 0 - 12000 3.0146734 8196 0.2312123 37.179198 37.670478 5.9303705 14077 60 60 0 9436 57680 11236 8196 0.98496016 0 23 0 - 13000 3.0029829 8179 0.23150759 37.229214 37.718589 7.3329148 14116 74 74 0 10339 57680 11236 8179 1.0039911 0 23 0 - 14000 3.2942972 8191 0.23166868 37.207985 37.744833 9.6428846 14019 56 57 0 11290 57680 11236 8191 0.99410574 0 23 0 - 15000 3.8480961 8213 0.23228155 37.217589 37.844686 2.1025549 13746 68 68 0 12175 57680 11236 8213 1.0011325 0 23 0 - 16000 3.2573043 8195 0.2316418 37.209634 37.740454 8.1255708 13682 55 55 0 13104 57680 11236 8195 1.0061399 0 23 0 - 17000 3.3579037 8186 0.2315443 37.177356 37.72457 9.8606039 13833 54 54 0 14034 57680 11236 8186 1.004156 0 23 0 - 18000 4.7903055 8194 0.23307181 37.192799 37.973441 3.8090185 13914 55 55 1 15012 57680 11236 8194 0.98633014 0 23 0 - 19000 4.4696839 8183 0.23293212 37.222288 37.950681 7.1931333 13499 54 54 0 15960 57680 11236 8183 0.98359656 0 23 0 - 20000 5.0239019 8126 0.23355887 37.234085 38.052794 5.1504203 13600 58 58 0 16972 57680 11236 8126 0.98555755 0 23 0 - 21000 4.6595948 8155 0.23275722 37.162845 37.922186 9.0375076 13965 73 74 0 17966 57680 11236 8155 0.99574348 0 23 0 - 22000 4.043444 8124 0.23247599 37.217434 37.876366 3.9265975 13584 53 53 2 18989 57680 11236 8124 0.9943952 0 23 0 - 23000 4.9981028 8127 0.23314549 37.170939 37.985445 4.2352191 13589 47 47 0 19958 57680 11236 8127 0.99276741 0 47 0 - 24000 4.7542655 8145 0.23295434 37.179533 37.954302 7.365415 13753 51 51 0 20955 57680 11236 8145 0.99024306 0 47 0 - 25000 4.2987054 8177 0.23252979 37.184601 37.885131 10.735771 13536 58 58 0 21994 57680 11236 8177 0.99215977 0 47 0 - 26000 4.4136261 8170 0.23331629 37.294015 38.013272 14.25925 13842 58 58 0 22979 57680 11236 8170 0.99283174 0 47 0 - 27000 4.0546007 8173 0.23283443 37.274016 37.934766 6.22969 13877 51 51 0 23997 57680 11236 8173 0.98496361 0 47 0 - 28000 4.5919614 8151 0.23364384 37.318319 38.066638 4.9917488 13836 60 61 1 25071 57680 11236 8151 0.99390956 0 47 0 - 29000 4.8025535 8189 0.23313849 37.201667 37.984305 4.7895172 13978 46 47 0 26121 57680 11236 8189 0.99018295 0 47 0 - 30000 4.2835226 8139 0.23247583 37.178284 37.87634 8.994878 13988 61 61 0 27141 57680 11236 8139 0.98735471 0 47 0 - 31000 5.4049428 8133 0.23373767 37.201121 38.081927 7.6419291 13771 58 58 0 28207 57680 11236 8133 0.98354883 0 47 0 - 32000 5.0299584 8177 0.23336211 37.201041 38.020738 8.1206741 14036 55 55 0 29303 57680 11236 8177 0.98239013 0 47 0 - 33000 4.2993816 8158 0.23320229 37.29406 37.9947 10.745167 13583 51 51 0 30344 57680 11236 8158 0.98952524 0 47 0 - 34000 5.8334257 8179 0.23458355 37.269109 38.219741 11.094625 13921 62 62 0 31432 57680 11236 8179 0.98822406 0 47 0 - 35000 6.481318 8168 0.23501133 37.233224 38.289439 7.9397445 13942 56 56 0 32518 57680 11236 8168 0.98830425 0 47 0 - 36000 4.967891 8186 0.23366927 37.261199 38.070782 8.3979019 13952 51 51 0 33626 57680 11236 8186 0.99579665 0 47 0 - 37000 5.3458808 8145 0.2337339 37.210132 38.081312 5.4177865 13659 55 55 0 34715 57680 11236 8145 1.0009582 0 47 0 - 38000 6.3597955 8159 0.23479285 37.217431 38.253842 6.1408411 13754 55 56 0 35754 57680 11236 8159 0.98853252 0 47 0 - 39000 6.1217173 8195 0.23447066 37.203737 38.20135 9.6016075 13756 70 70 0 36807 57680 11236 8195 0.98652299 0 47 0 - 40000 5.0218059 8159 0.23370899 37.258886 38.077254 6.6460004 13603 56 56 1 37933 57680 11236 8159 0.98674585 0 47 0 - 41000 5.5873722 8138 0.23429215 37.26173 38.172265 1.4183057 13634 51 52 1 39050 57680 11236 8138 0.98833769 0 47 0 - 42000 5.5502013 8170 0.23405343 37.228895 38.133372 7.8338637 13913 72 72 0 40105 57680 11236 8170 0.99124609 0 47 0 - 43000 4.6854143 8161 0.23326283 37.241013 38.004562 7.857085 13759 48 48 0 41187 57680 11236 8161 0.99649848 0 47 0 - 44000 6.3172352 8180 0.2348893 37.240081 38.269557 12.59288 13810 55 55 0 42292 57680 11236 8180 0.99164669 0 47 0 - 45000 6.1213322 8166 0.23449878 37.208381 38.205931 6.3760889 13854 48 49 0 43406 57680 11236 8166 0.98981447 0 47 0 - 46000 5.0015874 8195 0.23354809 37.235965 38.051038 10.992836 13962 62 62 0 44527 57680 11236 8195 0.99128184 0 47 0 - 47000 5.0499615 8190 0.23376151 37.262854 38.085811 8.7985849 14105 64 64 0 45653 57680 11236 8190 0.99020272 0 47 0 - 48000 5.202255 8170 0.23400688 37.278013 38.125788 4.7389097 13754 51 51 0 46705 57680 11236 8170 0.98792999 0 47 0 - 49000 5.6144741 8167 0.23429848 37.258346 38.173297 6.3247626 13953 51 51 1 47846 57680 11236 8167 0.99270232 0 47 0 - 50000 6.3027505 8145 0.2347122 37.213588 38.240703 6.4424496 13843 59 59 0 49061 57680 11236 8145 0.99810926 0 47 0 - 51000 5.2050769 8154 0.23390178 37.26043 38.108665 6.6143765 13999 51 51 0 50075 57680 11236 8154 0.99525977 0 47 0 - 52000 5.4749884 8175 0.23418567 37.262697 38.154917 8.7256782 13916 51 51 0 51249 57680 11236 8175 0.99508289 0 47 0 - 53000 5.1367735 8158 0.23393299 37.276645 38.113748 9.3248422 13910 41 41 0 52381 57680 11236 8158 0.98956839 0 47 0 - 54000 4.8680584 8211 0.23402832 37.335968 38.129281 4.8979582 14214 63 64 0 53439 57680 11236 8211 0.98838908 0 47 0 - 55000 4.6223848 8167 0.23347097 37.285196 38.038473 6.1898955 14162 46 46 0 54504 57680 11236 8167 0.97935238 0 47 0 - 56000 4.9075747 8168 0.23409393 37.340218 38.139971 12.20686 13980 60 60 0 55540 57680 11236 8168 0.99885966 0 47 0 - 57000 4.8736147 8143 0.23354696 37.256636 38.050854 3.9348529 13857 59 59 0 56680 57680 11236 8143 0.98434054 0 47 0 - 58000 5.6134201 8162 0.23393276 37.198932 38.113711 3.7493067 13866 55 55 2 57767 57680 11236 8162 0.99041155 0 47 0 - 59000 5.440371 8197 0.23353392 37.162151 38.04873 4.1297786 13748 67 67 0 58894 57680 11236 8197 0.98824623 0 47 0 - 60000 5.2754075 8148 0.23359083 37.198307 38.058003 7.1427242 13781 55 55 0 60028 57680 11236 8148 0.9831827 0 47 0 - 61000 5.8228233 8153 0.23438274 37.23812 38.187025 8.8839625 14019 48 48 0 61204 57680 11236 8153 0.98566731 0 47 0 - 62000 5.7623285 8129 0.23480056 37.316052 38.255098 9.992341 13791 67 68 0 62385 57680 11236 8129 0.97338459 0 47 0 - 63000 6.095315 8178 0.23455792 37.222257 38.215567 10.722535 14210 54 54 0 63448 57680 11236 8178 0.98135973 0 47 0 - 64000 5.2494942 8189 0.23380158 37.236866 38.092339 4.4010329 13869 51 51 0 64538 57680 11236 8189 0.98071569 0 47 0 - 65000 5.6534858 8151 0.23405328 37.212039 38.133348 8.9144953 14065 53 53 0 65661 57680 11236 8151 0.99589337 0 47 0 - 66000 5.3999138 8165 0.23453061 37.33113 38.211116 7.3102657 13994 61 62 0 66785 57680 11236 8165 0.98715854 0 47 0 - 67000 6.3619419 8183 0.23459518 37.184875 38.221636 4.0425684 13859 49 49 0 67944 57680 11236 8183 0.98479883 0 47 0 - 68000 6.2170116 8157 0.23470153 37.225822 38.238965 9.3090925 13598 50 50 0 69121 57680 11236 8157 0.98683618 0 47 0 - 69000 6.8545121 8179 0.23542272 37.239433 38.356465 9.4175179 13911 59 59 0 70316 57680 11236 8179 0.99828763 0 47 0 - 70000 5.1476232 8154 0.23389653 37.268937 38.107809 7.6438157 13882 55 55 0 71380 57680 11236 8154 0.99088995 0 47 0 - 71000 5.9284504 8161 0.23499148 37.320087 38.286205 9.1242845 13968 60 60 0 72478 57680 11236 8161 0.98627289 0 47 0 - 72000 5.8044136 8180 0.23473312 37.298207 38.244111 6.6084298 14066 56 56 0 73653 57680 11236 8180 0.97959812 0 47 0 - 73000 5.3690655 8148 0.23424676 37.289911 38.16487 8.7025002 14433 55 55 1 74740 57680 11236 8148 0.97949605 0 47 0 - 74000 4.8144157 8192 0.23361625 37.277572 38.062144 7.6685178 14425 58 58 1 75918 57680 11236 8192 0.98949387 0 47 0 - 75000 4.9424688 8143 0.23362551 37.258213 38.063652 5.5882668 13938 42 42 0 77080 57680 11236 8143 0.99602516 0 47 0 - 76000 6.3017203 8178 0.23500247 37.261048 38.287995 5.2760401 13952 47 47 0 78240 57680 11236 8178 0.98484281 0 47 0 - 77000 5.3086333 8208 0.23389726 37.242817 38.107928 4.034731 14052 47 47 0 79331 57680 11236 8208 0.9896033 0 47 0 - 78000 6.1152265 8157 0.23546115 37.366171 38.362726 11.521489 13980 58 58 0 80446 57680 11236 8157 0.98562154 0 47 0 - 79000 6.5034669 8173 0.23569944 37.341726 38.40155 5.0939756 14030 74 74 0 81663 57680 11236 8173 0.98837711 0 47 0 - 80000 6.1688245 8182 0.23495003 37.274162 38.279451 6.3337593 14292 50 50 0 82872 57680 11236 8182 0.99316806 0 47 0 - 81000 6.3818913 8189 0.23516767 37.274899 38.314911 9.0232294 14259 56 56 0 84072 57680 11236 8189 0.98467136 0 47 0 - 82000 6.502454 8171 0.23498158 37.224932 38.284591 7.6685939 13970 63 63 0 85190 57680 11236 8171 0.99511647 0 47 0 - 83000 7.2245962 8142 0.23564338 37.215075 38.392416 6.0363083 13789 61 61 0 86416 57680 11236 8142 0.99223565 0 47 0 - 84000 6.3529888 8192 0.23477435 37.215526 38.250828 7.2109855 14062 52 52 0 87555 57680 11236 8192 0.98623425 0 47 0 - 85000 6.5185235 8177 0.23516364 37.251976 38.314254 5.266764 14325 52 53 0 88732 57680 11236 8177 0.97895516 0 47 0 - 86000 5.742959 8170 0.23432816 37.242243 38.178133 6.0834874 13922 48 48 0 89836 57680 11236 8170 0.99203022 0 47 0 - 87000 6.548676 8177 0.23495538 37.213132 38.280324 6.2502744 14147 48 48 0 91035 57680 11236 8177 0.98829721 0 47 0 - 88000 5.9500587 8193 0.23446634 37.231006 38.200645 6.2196893 13960 44 44 0 92206 57680 11236 8193 0.98956808 0 47 0 - 89000 5.0591447 8174 0.23386574 37.278339 38.102793 11.164066 14071 54 54 0 93437 57680 11236 8174 0.99827748 0 47 0 - 90000 6.4930795 8181 0.23544182 37.301445 38.359576 6.6167028 14183 63 63 1 94640 57680 11236 8181 0.99559871 0 47 0 - 91000 6.489104 8187 0.23523152 37.267829 38.325313 6.4932786 14223 51 51 1 95718 57680 11236 8187 0.99090796 0 47 0 - 92000 6.3543839 8184 0.23502776 37.256587 38.292116 7.1553807 14265 66 66 1 96903 57680 11236 8184 0.98979354 0 47 0 - 93000 5.3818591 8195 0.23393122 37.236417 38.11346 7.9445503 14327 70 70 0 98138 57680 11236 8195 1.0030252 0 47 0 - 94000 5.6818206 8171 0.2343696 37.258958 38.184885 5.7311019 13943 63 63 0 99306 57680 11236 8171 0.99691591 0 47 0 - 95000 4.8295204 8160 0.23371941 37.291918 38.078951 4.5703653 13682 48 48 1 100491 57680 11236 8160 1.0078235 0 47 0 - 96000 6.7415726 8191 0.23539566 37.253429 38.352056 11.837168 13783 53 53 1 101761 57680 11236 8191 1.0010125 0 49 0 - 97000 6.5298825 8160 0.2354153 37.291126 38.355255 7.6012271 13688 65 65 0 103010 57680 11236 8160 0.99694671 0 49 0 - 98000 6.2804965 8175 0.23496877 37.259015 38.282504 5.4636503 14041 55 55 0 104259 57680 11236 8175 1.0042653 0 49 0 - 99000 5.7684681 8173 0.2344998 37.26605 38.206096 1.7807753 14082 58 59 0 105418 57680 11236 8173 0.99124491 0 49 0 - 100000 6.1371898 8170 0.23495644 37.28036 38.280495 7.7665232 13908 53 53 0 106633 57680 11236 8170 0.98281247 0 49 0 -Loop time of 34.1892 on 8 procs for 100000 steps with 43990 atoms - -Pair time (%) = 0.361362 (1.05695) -Neigh time (%) = 2.01143 (5.88324) -Comm time (%) = 2.27139 (6.64359) -Outpt time (%) = 0.00694269 (0.0203067) -Other time (%) = 29.5381 (86.3959) - -Nlocal: 5498.75 ave 6478 max 4726 min -Histogram: 2 0 1 0 1 2 1 0 0 1 -Nghost: 52.875 ave 59 max 44 min -Histogram: 1 0 1 0 1 0 1 0 2 2 -Neighs: 186.25 ave 293 max 81 min -Histogram: 1 0 1 3 0 0 1 0 0 2 - -Total # of neighbors = 1490 -Ave neighs/atom = 0.0338713 -Neighbor list builds = 5000 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/ASPHERE/star/log.1Feb24.star.g++.1 b/examples/ASPHERE/star/log.1Feb24.star.g++.1 new file mode 100644 index 00000000000..0fa1492dc60 --- /dev/null +++ b/examples/ASPHERE/star/log.1Feb24.star.g++.1 @@ -0,0 +1,321 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - rigid star particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 270 atoms + read_data CPU = 0.011 seconds + +set type 1 mass 1.0 +Setting atom values ... + 270 settings made for mass +group big type 1 +270 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.star.equil + +compute tbig all temp/sphere +thermo_modify temp tbig + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 38 38 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.562 | 5.562 | 5.562 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.3101488 0 0 0.21350573 0.32876464 + 100 5.0954142 3.291475 0 4.1218387 1.0087565 + 200 13.041252 4.6176595 0 6.7429006 1.5291618 + 300 11.912727 7.0921814 0 9.0335147 1.9578844 + 400 17.60886 8.3666709 0 11.236263 1.602563 + 500 16.786375 10.630838 0 13.366396 1.7725508 + 600 18.470347 12.42157 0 15.431552 2.1627885 + 700 19.39794 14.349074 0 17.510219 1.9554238 + 800 19.082984 16.464746 0 19.574566 2.2424126 + 900 20.702091 18.253108 0 21.626782 1.8041661 + 1000 18.299191 20.699563 0 23.681654 2.9475408 +Loop time of 0.0585091 on 1 procs for 1000 steps with 270 atoms + +Performance: 7383466.593 tau/day, 17091.358 timesteps/s, 4.615 Matom-step/s +99.1% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.017165 | 0.017165 | 0.017165 | 0.0 | 29.34 +Neigh | 0.0058479 | 0.0058479 | 0.0058479 | 0.0 | 9.99 +Comm | 0.0028221 | 0.0028221 | 0.0028221 | 0.0 | 4.82 +Output | 0.00017384 | 0.00017384 | 0.00017384 | 0.0 | 0.30 +Modify | 0.03015 | 0.03015 | 0.03015 | 0.0 | 51.53 +Other | | 0.00235 | | | 4.02 + +Nlocal: 270 ave 270 max 270 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 73 ave 73 max 73 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 418 ave 418 max 418 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 418 +Ave neighs/atom = 1.5481481 +Neighbor list builds = 176 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 60025 atoms + using lattice units in orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + create_atoms CPU = 0.013 seconds + +set type 2 mass 0.1 +Setting atom values ... + 60025 settings made for mass +group small type 2 +60025 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 19 19 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 16305 atoms, new total = 43990 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d + +# diagnostics + +uncompute tbig +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:904) + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.star + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 43720 270 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 106 106 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25081894 0.25081894 1 + SRD per actual grid cell = 5.5586635 + SRD viscosity = 0.23558168 + big/SRD mass density ratio = 0.14409881 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1908497 7.725824 + ave/max big velocity = 2.202625 5.4167964 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 26.586808, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 41.29 | 41.29 | 41.29 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.2074332 8227 0.22959643 37.210444 37.407211 7.9007359 14317 47 47 0 649 28900 11236 8227 1.0260288 0 3 0 + 2000 1.2044605 8206 0.22945824 37.188414 37.384697 5.8738384 14470 63 63 0 1423 28900 11236 8206 1.018589 0 4 0 + 3000 1.1060368 8226 0.22936549 37.189341 37.369584 4.7013136 14255 51 51 0 2207 28900 11236 8226 1.0007203 0 4 0 + 4000 1.2395587 8236 0.2294891 37.187723 37.389725 5.7916781 14371 56 56 0 2916 28900 11236 8236 1.0229966 0 4 0 + 5000 1.3332555 8236 0.22962818 37.195112 37.412383 10.662157 14373 61 61 0 3740 28900 11236 8236 1.0094713 0 4 0 + 6000 1.2991744 8192 0.22957221 37.191547 37.403264 1.2016626 14145 56 58 0 4425 28900 11236 8192 1.0215234 0 4 0 + 7000 1.0110737 8147 0.22923336 37.18329 37.348057 6.2493424 14200 59 59 0 5102 28900 11236 8147 1.0163405 0 4 0 + 8000 0.79508387 8168 0.22908516 37.194343 37.323912 9.832591 14355 45 45 0 5839 28900 11236 8168 1.0063207 0 4 0 + 9000 1.0340542 8207 0.2292515 37.1825 37.351013 11.458942 14220 54 54 0 6606 28900 11236 8207 1.0074421 0 4 0 + 10000 0.96342976 8202 0.22912995 37.174206 37.33121 1.7523017 14308 53 53 0 7379 28900 11236 8202 1.0126923 0 4 0 +Loop time of 18.5504 on 1 procs for 10000 steps with 43990 atoms + +Performance: 46575.737 tau/day, 539.071 timesteps/s, 23.714 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.21961 | 0.21961 | 0.21961 | 0.0 | 1.18 +Neigh | 0.055763 | 0.055763 | 0.055763 | 0.0 | 0.30 +Comm | 0.22073 | 0.22073 | 0.22073 | 0.0 | 1.19 +Output | 0.0013822 | 0.0013822 | 0.0013822 | 0.0 | 0.01 +Modify | 17.872 | 17.872 | 17.872 | 0.0 | 96.34 +Other | | 0.1812 | | | 0.98 + +Nlocal: 43990 ave 43990 max 43990 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 138 ave 138 max 138 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1587 ave 1587 max 1587 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1587 +Ave neighs/atom = 0.036076381 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:20 diff --git a/examples/ASPHERE/star/log.1Feb24.star.g++.4 b/examples/ASPHERE/star/log.1Feb24.star.g++.4 new file mode 100644 index 00000000000..66b9b04e63b --- /dev/null +++ b/examples/ASPHERE/star/log.1Feb24.star.g++.4 @@ -0,0 +1,321 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD diffusion demo - rigid star particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 270 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 270 settings made for mass +group big type 1 +270 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.star.equil + +compute tbig all temp/sphere +thermo_modify temp tbig + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 38 38 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.554 | 5.554 | 5.555 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.3101488 0 0 0.21350573 0.32876464 + 100 5.0954142 3.291475 0 4.1218387 1.0087565 + 200 13.041252 4.6176595 0 6.7429006 1.5291618 + 300 11.912727 7.0921814 0 9.0335147 1.9578844 + 400 17.60886 8.3666709 0 11.236263 1.602563 + 500 16.786375 10.630838 0 13.366396 1.7725508 + 600 18.470347 12.42157 0 15.431552 2.1627885 + 700 19.39794 14.349074 0 17.510219 1.9554238 + 800 19.082984 16.464746 0 19.574566 2.2424126 + 900 20.702091 18.253108 0 21.626782 1.8041661 + 1000 18.299191 20.699563 0 23.681654 2.9475408 +Loop time of 0.0312248 on 4 procs for 1000 steps with 270 atoms + +Performance: 13835169.963 tau/day, 32025.856 timesteps/s, 8.647 Matom-step/s +98.2% 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.0026978 | 0.0031211 | 0.0033489 | 0.5 | 10.00 +Neigh | 0.0011292 | 0.0013054 | 0.0014446 | 0.3 | 4.18 +Comm | 0.010095 | 0.010474 | 0.010975 | 0.3 | 33.54 +Output | 0.00019592 | 0.00021948 | 0.00027642 | 0.0 | 0.70 +Modify | 0.013333 | 0.013668 | 0.013952 | 0.2 | 43.77 +Other | | 0.002437 | | | 7.80 + +Nlocal: 67.5 ave 80 max 54 min +Histogram: 1 1 0 0 0 0 0 0 1 1 +Nghost: 29.75 ave 33 max 26 min +Histogram: 1 0 0 0 1 0 0 1 0 1 +Neighs: 104.5 ave 135 max 72 min +Histogram: 1 0 0 1 0 0 0 1 0 1 + +Total # of neighbors = 418 +Ave neighs/atom = 1.5481481 +Neighbor list builds = 176 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 60025 atoms + using lattice units in orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + create_atoms CPU = 0.003 seconds + +set type 2 mass 0.1 +Setting atom values ... + 60025 settings made for mass +group small type 2 +60025 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 19 19 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 16305 atoms, new total = 43990 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 all enforce2d + +# diagnostics + +uncompute tbig +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:904) + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.star + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 43720 270 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 106 106 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25081894 0.25081894 1 + SRD per actual grid cell = 5.5586635 + SRD viscosity = 0.23558168 + big/SRD mass density ratio = 0.14409881 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1908497 7.725824 + ave/max big velocity = 2.202625 5.4167964 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 26.586808, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 14.19 | 14.19 | 14.2 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.4057114 8217 0.22974151 37.20177 37.430849 11.548865 14197 56 57 0 682 42436 11236 8217 1.0187465 0 3 0 + 2000 1.0468288 8223 0.22932205 37.191914 37.362508 4.8322766 14185 60 60 0 1452 42436 11236 8223 1.0271433 0 64 0 + 3000 0.89541606 8240 0.22921893 37.199787 37.345707 9.7555289 14770 60 60 0 2175 42436 11236 8240 1.0157844 0 64 0 + 4000 1.021344 8222 0.22920858 37.177579 37.344021 6.2834235 14480 50 50 0 2951 42436 11236 8222 1.0130315 0 64 0 + 5000 1.045809 8222 0.2294309 37.209813 37.380241 2.8847497 14109 59 60 0 3667 42436 11236 8222 1.0126872 0 64 0 + 6000 1.1527336 8227 0.22933212 37.176296 37.364149 5.4760843 14597 42 42 0 4418 42436 11236 8227 1.0188272 0 64 0 + 7000 1.1799559 8216 0.22941075 37.18467 37.376959 10.243848 14281 57 57 0 5154 42436 11236 8216 1.0063617 0 64 0 + 8000 1.1913762 8188 0.22940126 37.181263 37.375413 5.7338518 14497 47 47 0 5878 42436 11236 8188 1.0076169 0 64 0 + 9000 1.0587094 8230 0.22928172 37.183406 37.355936 5.7323116 14267 62 62 0 6550 42436 11236 8230 1.0108237 0 64 0 + 10000 1.0359117 8165 0.22944086 37.21305 37.381865 9.4246373 14016 52 52 0 7246 42436 11236 8165 1.0147132 0 64 0 +Loop time of 6.61179 on 4 procs for 10000 steps with 43990 atoms + +Performance: 130675.562 tau/day, 1512.449 timesteps/s, 66.533 Matom-step/s +99.2% 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.041077 | 0.059027 | 0.07409 | 4.8 | 0.89 +Neigh | 0.015706 | 0.017829 | 0.019903 | 1.1 | 0.27 +Comm | 0.23742 | 0.25326 | 0.26722 | 2.1 | 3.83 +Output | 0.00073333 | 0.00077549 | 0.00084859 | 0.0 | 0.01 +Modify | 6.1477 | 6.174 | 6.2149 | 1.0 | 93.38 +Other | | 0.1069 | | | 1.62 + +Nlocal: 10997.5 ave 11924 max 10204 min +Histogram: 1 0 1 0 0 1 0 0 0 1 +Nghost: 64.25 ave 71 max 56 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Neighs: 395.5 ave 497 max 271 min +Histogram: 1 0 0 0 0 1 1 0 0 1 + +Total # of neighbors = 1582 +Ave neighs/atom = 0.035962719 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:07 diff --git a/examples/ASPHERE/star/log.1Feb24.star.mp.g++.1 b/examples/ASPHERE/star/log.1Feb24.star.mp.g++.1 new file mode 100644 index 00000000000..4952b0bd30f --- /dev/null +++ b/examples/ASPHERE/star/log.1Feb24.star.mp.g++.1 @@ -0,0 +1,322 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - rigid star particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 270 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 270 settings made for mass +group big type 1 +270 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.star.equil + +compute tbig all temp/sphere +thermo_modify temp tbig + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 38 38 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.562 | 5.562 | 5.562 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.3101488 0 0 0.21350573 0.32876464 + 100 5.0954142 3.291475 0 4.1218387 1.0087565 + 200 13.041252 4.6176595 0 6.7429006 1.5291618 + 300 11.912727 7.0921814 0 9.0335147 1.9578844 + 400 17.60886 8.3666709 0 11.236263 1.602563 + 500 16.786375 10.630838 0 13.366396 1.7725508 + 600 18.470347 12.42157 0 15.431552 2.1627885 + 700 19.39794 14.349074 0 17.510219 1.9554238 + 800 19.082984 16.464746 0 19.574566 2.2424126 + 900 20.702091 18.253108 0 21.626782 1.8041661 + 1000 18.299191 20.699563 0 23.681654 2.9475408 +Loop time of 0.0474374 on 1 procs for 1000 steps with 270 atoms + +Performance: 9106745.092 tau/day, 21080.428 timesteps/s, 5.692 Matom-step/s +98.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.01287 | 0.01287 | 0.01287 | 0.0 | 27.13 +Neigh | 0.0050573 | 0.0050573 | 0.0050573 | 0.0 | 10.66 +Comm | 0.0024616 | 0.0024616 | 0.0024616 | 0.0 | 5.19 +Output | 0.00025461 | 0.00025461 | 0.00025461 | 0.0 | 0.54 +Modify | 0.024714 | 0.024714 | 0.024714 | 0.0 | 52.10 +Other | | 0.00208 | | | 4.38 + +Nlocal: 270 ave 270 max 270 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 73 ave 73 max 73 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 418 ave 418 max 418 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 418 +Ave neighs/atom = 1.5481481 +Neighbor list builds = 176 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 60025 atoms + using lattice units in orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + create_atoms CPU = 0.014 seconds + +set type 2 mass 0.1 +Setting atom values ... + 60025 settings made for mass +group small type 2 +60025 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 19 19 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 16305 atoms, new total = 43990 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +uncompute tbig +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:904) + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.star.mp + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 43720 270 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 106 106 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25081894 0.25081894 1 + SRD per actual grid cell = 5.5586635 + SRD viscosity = 0.23558168 + big/SRD mass density ratio = 0.14409881 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1908497 7.725824 + ave/max big velocity = 2.202625 5.4167964 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 26.586808, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 41.29 | 41.29 | 41.29 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 0.82328749 8250 0.22908506 37.18973 37.323895 6.0611499 14546 54 54 0 691 28900 11236 8250 1.025654 0 3 0 + 2000 1.314397 8198 0.22953802 37.183497 37.397695 7.6050033 14165 65 65 0 1503 28900 11236 8198 1.0137885 0 3 0 + 3000 1.4327928 8174 0.22973765 37.196727 37.430219 4.8441566 14378 43 43 0 2274 28900 11236 8174 1.0052401 0 5 0 + 4000 1.9637993 8194 0.23036966 37.213164 37.533191 4.9697216 14203 51 51 1 3241 28900 11236 8194 1.0129187 0 245 0 + 5000 1.6886675 8206 0.22987561 37.177507 37.452697 10.972628 14155 56 56 0 4073 28900 11236 8206 1.0024406 0 245 0 + 6000 1.7377657 8197 0.23000322 37.190296 37.473487 6.3971042 14331 57 57 0 4929 28900 11236 8197 1.0094945 0 245 0 + 7000 2.4106224 8199 0.23083719 37.216521 37.609363 5.1070917 14144 49 49 0 5822 28900 11236 8199 1.0074275 0 245 0 + 8000 2.5161884 8202 0.2306663 37.171475 37.581521 12.156127 14263 67 67 0 6667 28900 11236 8202 1.006502 0 245 0 + 9000 2.9100148 8188 0.23124828 37.202115 37.67634 6.1326598 14171 66 67 0 7443 28900 11236 8188 0.99544201 0 245 0 + 10000 3.4714177 8206 0.23192306 37.220567 37.78628 5.1293943 14100 48 49 0 8272 28900 11236 8206 1.0022763 0 245 0 +Loop time of 17.933 on 1 procs for 10000 steps with 43990 atoms + +Performance: 48179.444 tau/day, 557.632 timesteps/s, 24.530 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.22008 | 0.22008 | 0.22008 | 0.0 | 1.23 +Neigh | 0.054046 | 0.054046 | 0.054046 | 0.0 | 0.30 +Comm | 0.20917 | 0.20917 | 0.20917 | 0.0 | 1.17 +Output | 0.001317 | 0.001317 | 0.001317 | 0.0 | 0.01 +Modify | 17.275 | 17.275 | 17.275 | 0.0 | 96.33 +Other | | 0.1731 | | | 0.97 + +Nlocal: 43990 ave 43990 max 43990 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 122 ave 122 max 122 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1569 ave 1569 max 1569 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1569 +Ave neighs/atom = 0.035667197 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:19 diff --git a/examples/ASPHERE/star/log.1Feb24.star.mp.g++.4 b/examples/ASPHERE/star/log.1Feb24.star.mp.g++.4 new file mode 100644 index 00000000000..b4482fd530d --- /dev/null +++ b/examples/ASPHERE/star/log.1Feb24.star.mp.g++.4 @@ -0,0 +1,322 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# SRD viscosity demo - rigid star particles + +units lj +atom_style sphere +atom_modify map array first big +dimension 2 + +# read in clusters of rigid bodies + +fix molprop all property/atom mol ghost yes +read_data data.star fix molprop NULL Molecules +Reading data file ... + orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 270 atoms + read_data CPU = 0.001 seconds + +set type 1 mass 1.0 +Setting atom values ... + 270 settings made for mass +group big type 1 +270 atoms in group big +velocity big create 1.44 87287 loop geom + +# equilibrate big particles + +pair_style soft 1.12 +pair_coeff 1 1 0.0 +pair_coeff 2 2 0.0 0.0 +pair_coeff 1 2 0.0 0.0 + +variable prefactor equal ramp(0,60) +fix soft all adapt 1 pair soft a * * v_prefactor + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 all enforce2d + +#dump 1 all atom 10 dump.star.equil + +compute tbig all temp/sphere +thermo_modify temp tbig + +thermo 100 +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42 + ghost atom cutoff = 1.42 + binsize = 0.71, bins = 38 38 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.554 | 5.554 | 5.555 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 1.3101488 0 0 0.21350573 0.32876464 + 100 5.0954142 3.291475 0 4.1218387 1.0087565 + 200 13.041252 4.6176595 0 6.7429006 1.5291618 + 300 11.912727 7.0921814 0 9.0335147 1.9578844 + 400 17.60886 8.3666709 0 11.236263 1.602563 + 500 16.786375 10.630838 0 13.366396 1.7725508 + 600 18.470347 12.42157 0 15.431552 2.1627885 + 700 19.39794 14.349074 0 17.510219 1.9554238 + 800 19.082984 16.464746 0 19.574566 2.2424126 + 900 20.702091 18.253108 0 21.626782 1.8041661 + 1000 18.299191 20.699563 0 23.681654 2.9475408 +Loop time of 0.0311841 on 4 procs for 1000 steps with 270 atoms + +Performance: 13853197.664 tau/day, 32067.587 timesteps/s, 8.658 Matom-step/s +97.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0027957 | 0.0031644 | 0.0035219 | 0.5 | 10.15 +Neigh | 0.001171 | 0.0012862 | 0.0014036 | 0.3 | 4.12 +Comm | 0.0099068 | 0.010544 | 0.011053 | 0.4 | 33.81 +Output | 0.00014281 | 0.00016091 | 0.00020823 | 0.0 | 0.52 +Modify | 0.013319 | 0.013618 | 0.014047 | 0.2 | 43.67 +Other | | 0.002411 | | | 7.73 + +Nlocal: 67.5 ave 80 max 54 min +Histogram: 1 1 0 0 0 0 0 0 1 1 +Nghost: 29.75 ave 33 max 26 min +Histogram: 1 0 0 0 1 0 0 1 0 1 +Neighs: 104.5 ave 135 max 72 min +Histogram: 1 0 0 1 0 0 0 1 0 1 + +Total # of neighbors = 418 +Ave neighs/atom = 1.5481481 +Neighbor list builds = 176 +Dangerous builds = 0 + +#undump 1 +unfix soft +unfix 1 +unfix 2 + +# add small particles as hi density lattice + +region plane block INF INF INF INF -0.001 0.001 units box +lattice sq 85.0 +Lattice spacing in x,y,z = 0.10846523 0.10846523 0.10846523 +create_atoms 2 region plane +Created 60025 atoms + using lattice units in orthogonal box = (-13.293404 -13.293404 -0.5) to (13.293404 13.293404 0.5) + create_atoms CPU = 0.003 seconds + +set type 2 mass 0.1 +Setting atom values ... + 60025 settings made for mass +group small type 2 +60025 atoms in group small +velocity small create 1.0 593849 loop geom + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.5 + +delete_atoms overlap 0.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 19 19 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 16305 atoms, new total = 43990 + +# SRD run + +reset_timestep 0 + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid molecule + 30 rigid bodies with 270 atoms +fix 2 small srd 20 big 1.0 0.25 49894 shift yes 54979 search 0.2 collision slip inside ignore overlap yes +fix 3 small viscosity 10 x y 50 +fix 4 all enforce2d + +# diagnostics + +uncompute tbig +compute tbig big temp/sphere +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) +thermo_style custom step temp f_2[8] etotal v_pebig v_ebig press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (src/output.cpp:904) + +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) +thermo 1000 + +#dump 1 all atom 1000 dump.star.mp + +#dump 1 all image 1000 image.*.jpg type type zoom 1.6 +#dump_modify 1 pad 6 adiam 1 1 adiam 2 0.2 + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 43720 270 + big particle diameter max/min = 1 1 + SRD temperature & lamda = 1 0.063245553 + SRD max distance & max velocity = 0.25298221 12.649111 + SRD grid counts: 106 106 1 + SRD grid size: request, actual (xyz) = 0.25, 0.25081894 0.25081894 1 + SRD per actual grid cell = 5.5586635 + SRD viscosity = 0.23558168 + big/SRD mass density ratio = 0.14409881 +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) + # of rescaled SRD velocities = 0 + ave/max small velocity = 4.1908497 7.725824 + ave/max big velocity = 2.202625 5.4167964 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 26.586808, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/2d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 14.19 | 14.19 | 14.2 Mbytes + Step Temp f_2[8] TotEng v_pebig v_ebig Press f_2[1] f_2[2] f_2[3] f_2[4] f_2[5] f_2[6] f_2[7] f_2[8] f_2[9] f_2[10] f_2[11] f_2[12] + 0 18.299191 0 0.25067776 37.859815 40.841906 5.7680841 0 0 0 0 0 0 0 0 0 0 0 0 + 1000 1.3506473 8186 0.22968182 37.201018 37.421123 5.6398923 14572 54 54 0 654 42436 11236 8186 1.0228728 0 3 0 + 2000 0.99412905 8212 0.22952823 37.234094 37.3961 8.5863689 14257 69 69 0 1394 42436 11236 8212 1.0206297 0 12 0 + 3000 1.4469134 8192 0.22970951 37.189841 37.425634 8.0408437 14439 53 53 0 2178 42436 11236 8192 1.0121272 0 12 0 + 4000 1.6112802 8172 0.2303679 37.270324 37.532903 8.3379947 14098 57 57 0 2992 42436 11236 8172 1.0171443 0 12 0 + 5000 2.0436283 8191 0.23016186 37.166298 37.499334 7.1370191 14030 49 49 0 3804 42436 11236 8191 1.0054513 0 12 0 + 6000 2.2894073 8184 0.2303867 37.162878 37.535967 7.6496143 13970 50 50 0 4662 42436 11236 8184 1.0084738 0 12 0 + 7000 2.1640822 8183 0.23045121 37.193812 37.546477 7.1526683 13926 56 57 0 5445 42436 11236 8183 1.0046108 0 15 0 + 8000 2.8851243 8199 0.23121762 37.201176 37.671344 9.1644504 13849 58 58 0 6237 42436 11236 8199 1.0081629 0 15 0 + 9000 2.6422092 8180 0.23070839 37.157795 37.588377 2.4816571 13651 70 70 0 7007 42436 11236 8180 1.0089869 0 15 0 + 10000 2.7121051 8189 0.23087145 37.172972 37.614945 11.176036 13901 63 64 0 7845 42436 11236 8189 1.0023484 0 15 0 +Loop time of 6.56969 on 4 procs for 10000 steps with 43990 atoms + +Performance: 131513.146 tau/day, 1522.143 timesteps/s, 66.959 Matom-step/s +99.1% 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.037869 | 0.059232 | 0.073664 | 5.4 | 0.90 +Neigh | 0.015688 | 0.017835 | 0.019891 | 1.1 | 0.27 +Comm | 0.22905 | 0.24375 | 0.26098 | 2.3 | 3.71 +Output | 0.00069058 | 0.00071614 | 0.00078869 | 0.0 | 0.01 +Modify | 6.1124 | 6.1385 | 6.1881 | 1.2 | 93.44 +Other | | 0.1096 | | | 1.67 + +Nlocal: 10997.5 ave 12305 max 10259 min +Histogram: 1 1 0 1 0 0 0 0 0 1 +Nghost: 58.25 ave 73 max 48 min +Histogram: 1 0 1 0 1 0 0 0 0 1 +Neighs: 402.75 ave 520 max 207 min +Histogram: 1 0 0 0 0 0 0 2 0 1 + +Total # of neighbors = 1611 +Ave neighs/atom = 0.03662196 +Neighbor list builds = 500 +Dangerous builds = 0 +Total wall time: 0:00:06 diff --git a/examples/ASPHERE/tri/in.tri.srd b/examples/ASPHERE/tri/in.tri.srd index 7878b9ecc27..b09ff05503e 100644 --- a/examples/ASPHERE/tri/in.tri.srd +++ b/examples/ASPHERE/tri/in.tri.srd @@ -1,107 +1,107 @@ # Aspherical shear demo - 3d triangle boxes, solvated by SRD particles -units lj -atom_style tri -atom_modify first big map yes +units lj +atom_style tri +atom_modify first big map yes -read_data data.tri.srd +read_data data.tri.srd # add small particles as hi density lattice -lattice sc 0.4 -region box block INF INF INF INF INF INF -lattice sc 20.0 -create_atoms 2 region box +lattice sc 0.4 +region box block INF INF INF INF INF INF +lattice sc 20.0 +create_atoms 2 region box -group big type 1 -group small type 2 -set group small mass 0.01 +group big type 1 +group small type 2 +set group small mass 0.01 # delete overlaps # must set 1-2 cutoff to non-zero value -pair_style lj/cut 1.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 +pair_style lj/cut 1.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 -delete_atoms overlap 1.5 small big +delete_atoms overlap 1.5 small big # SRD run -reset_timestep 0 +reset_timestep 0 -velocity small create 1.44 87287 loop geom +velocity small create 1.44 87287 loop geom -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule/intra big include big +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra big include big -comm_modify mode multi group big vel yes -neigh_modify include big +comm_modify mode multi group big vel yes +neigh_modify include big # no pairwise interactions with small particles -pair_style tri/lj 3.5 -pair_coeff 1 1 0.1 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 +pair_style tri/lj 3.5 +pair_coeff 1 1 0.1 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 # use fix SRD to push small particles out from inside big ones # if comment out, big particles won't see SRD particles -timestep 0.001 +timestep 0.001 -fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 -fix 2 small srd 20 big 1.0 1.0 49894 & - search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip inside ignore +fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 +fix 2 small srd 20 big 1.0 1.0 49894 & + search 0.2 cubic warn 0.0001 shift yes 49829 & + overlap yes collision noslip inside ignore -fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 +fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 # diagnostics -compute tsmall small temp/deform -compute tbig big temp -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) +compute tsmall small temp/deform +compute tbig big temp +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) compute_modify tbig extra/dof -4500 -compute 1 big erotate/asphere -compute 2 all ke -compute 3 all pe -variable toteng equal (c_1+c_2+c_3)/atoms +compute 1 big erotate/asphere +compute 2 all ke +compute 3 all pe +variable toteng equal (c_1+c_2+c_3)/atoms -thermo 100 -thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] -thermo_modify temp tbig +thermo 100 +thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] +thermo_modify temp tbig -compute 10 all property/atom corner1x corner1y corner1z & - corner2x corner2y corner2z corner3x corner3y corner3z +compute 10 all property/atom corner1x corner1y corner1z & + corner2x corner2y corner2z corner3x corner3y corner3z -#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump1.tri.srd id type & -# c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & -# c_10[7] c_10[8] c_10[9] +#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump1.tri.srd id type & +# c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & +# c_10[7] c_10[8] c_10[9] -run 10000 +run 1000 #undump 1 #undump 2 -unfix 3 +unfix 3 change_box all triclinic -fix 2 small srd 20 big 1.0 1.0 49894 & - search 0.2 cubic warn 0.0001 shift yes 49829 & - overlap yes collision noslip tstat yes inside ignore +fix 2 small srd 20 big 1.0 1.0 49894 & + search 0.2 cubic warn 0.0001 shift yes 49829 & + overlap yes collision noslip tstat yes inside ignore -#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump2.tri.srd id type & -# c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & -# c_10[7] c_10[8] c_10[9] +#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump2.tri.srd id type & +# c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & +# c_10[7] c_10[8] c_10[9] -fix 3 all deform 1 xy erate 0.05 units box remap v +fix 3 all deform 1 xy erate 0.05 units box remap v -run 40000 +run 2000 diff --git a/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 b/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 deleted file mode 100644 index 6103a5c9c96..00000000000 --- a/examples/ASPHERE/tri/log.15Aug23.tri.srd.g++.8 +++ /dev/null @@ -1,812 +0,0 @@ -LAMMPS (2 Aug 2023 - Development - patch_2Aug2023-114-gdad8081d55-modified) -WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:537) -# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles - -units lj -atom_style tri -atom_modify first big map yes - -read_data data.tri.srd -Reading data file ... - orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) - 2 by 2 by 2 MPI processor grid - reading atoms ... - 1500 atoms - 1500 triangles - read_data CPU = 0.007 seconds - -# add small particles as hi density lattice - -lattice sc 0.4 -Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088 -region box block INF INF INF INF INF INF -lattice sc 20.0 -Lattice spacing in x,y,z = 0.36840315 0.36840315 0.36840315 -create_atoms 2 region box -Created 91125 atoms - using lattice units in orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) - create_atoms CPU = 0.002 seconds - -group big type 1 -1500 atoms in group big -group small type 2 -91125 atoms in group small -set group small mass 0.01 -Setting atom values ... - 91125 settings made for mass - -# delete overlaps -# must set 1-2 cutoff to non-zero value - -pair_style lj/cut 1.5 -pair_coeff 1 1 1.0 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 - -delete_atoms overlap 1.5 small big -System init for delete_atoms ... -Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.8 - ghost atom cutoff = 1.8 - binsize = 0.9, bins = 19 19 19 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) command delete_atoms, occasional - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard - (2) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d - bin: standard -WARNING: Delete_atoms cutoff > minimum neighbor cutoff (../delete_atoms.cpp:312) -Deleted 76354 atoms, new total = 16271 - -# SRD run - -reset_timestep 0 - -velocity small create 1.44 87287 loop geom - -neighbor 0.3 multi -neigh_modify delay 0 every 1 check yes -neigh_modify exclude molecule/intra big include big - -comm_modify mode multi group big vel yes -neigh_modify include big - -# no pairwise interactions with small particles - -pair_style tri/lj 3.5 -pair_coeff 1 1 0.1 1.0 -pair_coeff 2 2 0.0 1.0 0.0 -pair_coeff 1 2 0.0 1.0 0.0 - -# use fix SRD to push small particles out from inside big ones -# if comment out, big particles won't see SRD particles - -timestep 0.001 - -fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 - create bodies CPU = 0.000 seconds - 125 rigid bodies with 1500 atoms - 1.8601881 = max distance from body owner to body atom -fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip inside ignore - -fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 - -# diagnostics - -compute tsmall small temp/deform -compute tbig big temp -variable pebig equal pe*atoms/count(big) -variable ebig equal etotal*atoms/count(big) - -compute_modify tbig extra/dof -4500 - -compute 1 big erotate/asphere -compute 2 all ke -compute 3 all pe -variable toteng equal (c_1+c_2+c_3)/atoms - -thermo 100 -thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] -thermo_modify temp tbig -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:527) - -compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z - -#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] - -run 10000 - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Your simulation uses code contributions which should be cited: - -- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 - -@Article{Intveld08, - author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, - title = {Accurate and Efficient Methods for Modeling Colloidal - Mixtures in an Explicit Solvent using Molecular Dynamics}, - journal = {Comput.\ Phys.\ Commut.}, - year = 2008, - volume = 179, - pages = {320--329} -} - -@article{Shire2020, - author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, - title = {{DEM} Simulations of Polydisperse Media: Efficient Contact - Detection Applied to Investigate the Quasi-Static Limit}, - journal = {Computational Particle Mechanics}, - year = {2020} -@article{Monti2022, - author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, - Ishan and Silbert, Leonardo E. and Grest, Gary S. - and Lechman, Jeremy B.}, - title = {Large-scale frictionless jamming with power-law particle - size distributions}, - journal = {Phys. Rev. E}, - volume = {106} - issue = {3} - year = {2022} -} - -- fix srd command: doi:10.1063/1.3419070 - -@Article{Petersen10, - author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and - G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, - title = {Mesoscale Hydrodynamics via Stochastic Rotation - Dynamics: Comparison with {L}ennard-{J}ones Fluid}, - journal = {J.~Chem.\ Phys.}, - year = 2010, - volume = 132, - pages = 174106 -} - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule -WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:71) -WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:405) -SRD info: - SRD/big particles = 14771 1500 - big particle diameter max/min = 2.9202881 0.87320391 - SRD temperature & lamda = 1 0.2 - SRD max distance & max velocity = 0.8 40 - SRD grid counts: 17 17 17 - SRD grid size: request, actual (xyz) = 1, 0.99262829 0.99262829 0.99262829 - SRD per actual grid cell = -3.9971745 - SRD viscosity = -34.162587 - big/SRD mass density ratio = -3.3753691 -WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805) -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826) -WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828) - # of rescaled SRD velocities = 0 - ave/max small velocity = 19.970837 35.150443 - ave/max big velocity = 0 0 -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.8 - ghost atom cutoff = 3.8 - binsize = 16.874681, bins = 1 1 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair tri/lj, perpetual - attributes: half, newton on - pair build: half/multi/newton - stencil: half/multi/3d - bin: multi -Per MPI rank memory allocation (min/avg/max) = 125.9 | 126.4 | 126.7 Mbytes - Step f_1 c_tsmall Temp Press f_2[9] f_2[4] - 0 0 1.4401779 0 -0.15917996 0 0 - 100 0.36662911 1.1475389 0.24585067 1.0290503 1.1382325 18 - 200 0.73133134 1.0558153 0.49986673 0.73932383 1.049638 34 - 300 1.1229361 1.0218621 0.82641583 0.7589689 1.0205369 40 - 400 1.5826262 0.99541508 1.2201293 0.69171726 0.99190857 52 - 500 1.8834563 0.99351667 1.4778822 1.0147794 1.0005581 63 - 600 2.4225372 0.98954834 1.8740966 1.1362893 0.99760042 61 - 700 3.0172772 0.99153625 2.3351502 1.3284877 0.98731355 39 - 800 3.5307913 1.0012521 2.6477224 1.1404922 0.9846605 52 - 900 3.757064 0.99743944 2.7220653 1.4078087 0.97538456 55 - 1000 4.3165268 1.002214 3.055501 1.2252972 0.99123745 63 - 1100 4.2796945 1.0075233 3.1022956 1.1893685 1.0139864 69 - 1200 4.3719315 1.0037271 3.0054509 1.3886162 1.002661 64 - 1300 4.5628012 0.99368316 3.2690604 1.3621012 0.9810568 56 - 1400 4.6954389 0.99365088 3.1940001 1.8485712 0.99571089 71 - 1500 5.0270163 0.99455258 3.4120396 1.5992539 0.98294263 77 - 1600 5.5897797 1.0021621 3.647347 1.7796904 0.98967622 66 - 1700 5.5330194 1.0130853 3.6407996 1.8005429 1.0068955 62 - 1800 5.3606928 1.0090284 3.5863618 1.3308757 1.0214092 59 - 1900 5.6086195 1.0071865 3.7427101 1.5296314 0.99886937 55 - 2000 5.3726474 1.0064207 3.603621 1.9473142 0.99999816 54 - 2100 5.836183 1.0124553 3.7321841 1.7889397 1.0188986 59 - 2200 5.5090061 1.0113832 3.5884963 1.6617781 1.0071583 59 - 2300 5.4011211 1.0095947 3.520406 1.8937582 0.99689983 61 - 2400 5.2219281 1.0053246 3.3699458 1.7231672 0.99899754 59 - 2500 5.7695275 1.0141459 3.6211469 1.7767598 1.0143133 65 - 2600 5.4206253 1.0182828 3.521774 2.0800518 1.0081603 70 - 2700 5.1401099 1.0085209 3.4200563 2.4019836 1.0107652 59 - 2800 6.5420721 1.0159876 4.1996904 1.863842 1.0160738 61 - 2900 5.9082962 1.0106921 3.7223419 2.0586998 1.0073885 67 - 3000 5.6556123 1.0099021 3.6768976 1.921987 1.0068962 76 - 3100 5.2913762 1.0008567 3.4103831 1.9831969 0.99187526 80 - 3200 5.1032361 0.99756662 3.1967156 2.2448433 0.99743574 93 - 3300 5.2622386 1.0024934 3.3325614 2.0078097 1.0047789 86 - 3400 5.1247527 0.99810102 3.1363556 1.8907269 0.98936508 82 - 3500 4.9424333 1.0009344 3.2153968 1.9002728 0.99161849 71 - 3600 5.1243735 1.0037377 3.3117313 2.1267438 1.0078943 65 - 3700 5.5045819 1.0006119 3.5686193 2.3466538 0.99876164 68 - 3800 5.5355384 1.0022639 3.6701457 2.0383269 1.0008683 76 - 3900 6.4915796 1.0137733 4.3225864 2.6996933 1.0064787 79 - 4000 6.6631737 1.0236248 4.3057163 2.6352666 1.0255232 75 - 4100 6.2999507 1.0263876 4.0101385 2.5479077 1.0168303 79 - 4200 6.7902489 1.0247392 4.4616158 2.4926177 1.0191403 91 - 4300 6.505908 1.0182073 4.0675428 2.168754 1.0177101 74 - 4400 5.9554283 1.0115938 3.5787297 2.9258144 1.0133896 72 - 4500 6.2276609 1.0202416 3.8211204 2.5308249 1.0174385 74 - 4600 6.0485727 1.0195757 3.8217434 2.6421797 1.0201441 78 - 4700 6.511063 1.0220764 3.933486 2.8591093 1.0147269 83 - 4800 6.9478172 1.0106414 4.345402 3.3257663 1.00469 85 - 4900 6.7547045 1.0211842 4.1874576 3.6503845 1.022873 94 - 5000 7.2603949 1.0234313 4.5393985 3.4667806 1.0222306 105 - 5100 7.1899652 1.0256566 4.5421834 3.8137207 1.0317242 99 - 5200 7.1960739 1.026746 4.4288606 3.5523675 1.0242269 97 - 5300 7.1294458 1.017883 4.5799808 3.3917274 1.0145317 99 - 5400 6.2810892 1.0291953 4.0109229 2.8604571 1.0289438 97 - 5500 6.15246 1.0288734 3.8714587 3.2760394 1.0210757 89 - 5600 6.5860526 1.0192882 4.0272883 3.3124298 1.0096258 93 - 5700 7.0296116 1.0097293 4.2652722 3.6049788 1.012463 82 - 5800 6.8372302 1.0140065 4.2205065 4.3686183 1.0088542 93 - 5900 7.8887098 1.0090612 4.9724078 4.457317 1.0045137 92 - 6000 10.120663 1.0312443 6.3025192 4.72018 1.0374722 91 - 6100 9.1318265 1.0304199 5.7084296 4.244548 1.0259056 97 - 6200 8.9758903 1.0295285 5.1842704 4.870955 1.0178851 95 - 6300 9.0088218 1.022484 5.3742805 5.1554352 1.0138365 101 - 6400 10.470322 1.0287848 6.4602103 4.5461489 1.0335978 105 - 6500 11.100779 1.0347405 6.9630121 4.9840664 1.0339044 99 - 6600 10.139333 1.0476079 6.4284839 4.5523893 1.0433517 104 - 6700 8.9706766 1.0386262 5.8387485 4.247024 1.0408151 101 - 6800 7.7799532 1.0362651 4.9946283 4.6093924 1.0274763 102 - 6900 8.0866551 1.0337743 4.9942769 4.1679939 1.0454805 102 - 7000 8.0224277 1.0193598 4.9380527 3.9173115 1.0185001 109 - 7100 7.8361001 1.0211143 4.872673 5.3471479 1.024779 110 - 7200 7.8542147 1.0057183 4.8666653 4.668317 0.99980296 122 - 7300 7.9313852 1.0159181 5.0062527 4.1410294 1.0195705 114 - 7400 7.2769846 1.0155245 4.6349779 4.9138895 1.0005886 119 - 7500 7.5974523 1.0196295 4.7918247 4.2525935 1.0211412 124 - 7600 6.7835063 1.0203187 4.2674694 4.9251624 1.0218296 113 - 7700 6.4039017 1.0119494 4.1086667 5.5240525 1.0078246 118 - 7800 7.0715134 1.0149015 4.2450776 4.8796778 1.0164737 125 - 7900 6.3626535 1.02294 4.202778 4.482164 1.0235878 136 - 8000 6.2423869 1.0212553 4.0460303 5.2753307 1.0124884 132 - 8100 6.550891 1.0223318 4.2993545 5.2634985 1.0163244 143 - 8200 6.9122202 1.008347 4.3551124 5.4108909 1.0084913 142 - 8300 6.9104634 1.0103936 4.4622206 5.6762373 0.99559355 143 - 8400 6.4918879 1.0084381 4.1050732 5.8389788 1.0036021 135 - 8500 7.4377218 1.0216662 4.5229841 5.5431311 1.0260799 123 - 8600 7.572198 1.0228381 4.9058913 7.1028185 1.0015164 116 - 8700 8.204675 1.03457 5.2231696 6.4790244 1.0214635 132 - 8800 8.3118914 1.0381333 5.1795799 6.7437722 1.0290086 132 - 8900 8.2559198 1.0268665 5.218352 7.2191395 1.019804 138 - 9000 8.0403128 1.0339414 4.9310394 6.4942331 1.041527 156 - 9100 7.1773079 1.0397062 4.4993688 7.0272109 1.0388012 167 - 9200 7.1793935 1.0373589 4.3481663 7.4894459 1.0078785 157 - 9300 8.3705146 1.0248112 5.1036971 8.2173072 1.010168 156 - 9400 9.4935002 1.0252907 5.7846951 9.7466018 1.028941 170 - 9500 9.5208037 1.0371093 5.9635099 7.6444933 1.022673 165 - 9600 8.9992217 1.0292895 5.6224192 8.8071452 1.0101362 169 - 9700 8.682661 1.0422224 5.3997636 8.6827834 1.0337928 149 - 9800 7.6191562 1.0350948 4.7198842 8.6125595 1.0300395 151 - 9900 8.0910913 1.0319432 4.8843183 7.9013334 1.0272495 167 - 10000 7.4438347 1.0186098 4.7184985 8.999795 0.99762661 177 -Loop time of 162.325 on 8 procs for 10000 steps with 16271 atoms - -Performance: 5322.658 tau/day, 61.605 timesteps/s, 1.002 Matom-step/s -99.3% CPU use with 8 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 33.647 | 64.106 | 79.639 | 169.5 | 39.49 -Neigh | 0.30808 | 0.44033 | 0.50863 | 9.8 | 0.27 -Comm | 26.611 | 43.438 | 74.998 | 215.7 | 26.76 -Output | 0.0072573 | 0.0087791 | 0.0097993 | 0.9 | 0.01 -Modify | 53.171 | 54.121 | 55.362 | 12.3 | 33.34 -Other | | 0.2104 | | | 0.13 - -Nlocal: 2033.88 ave 2601 max 1413 min -Histogram: 1 2 0 0 0 0 2 1 1 1 -Nghost: 1647.25 ave 1714 max 1617 min -Histogram: 4 0 1 0 0 1 1 0 0 1 -Neighs: 12482.8 ave 17009 max 8679 min -Histogram: 1 1 1 0 1 1 2 0 0 1 - -Total # of neighbors = 99862 -Ave neighs/atom = 6.1374224 -Neighbor list builds = 562 -Dangerous builds = 0 - -#undump 1 -#undump 2 -unfix 3 - -change_box all triclinic -Changing box ... - triclinic box = (-6.7498724 -6.7498724 -6.7498724) to (6.7498724 6.7498724 6.7498724) with tilt (0 0 0) - -fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes inside ignore - -#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz -#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] - -fix 3 all deform 1 xy erate 0.05 units box remap v - -run 40000 -Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule -SRD info: - SRD/big particles = 14771 1500 - big particle diameter max/min = 2.9202881 0.87320391 - SRD temperature & lamda = 1 0.2 - SRD max distance & max velocity = 0.8 40 - SRD grid counts: 13 13 13 - SRD grid size: request, actual (xyz) = 1, 1.0384419 1.0384419 1.0384419 - SRD per actual grid cell = -2.775698 - SRD viscosity = -12.180602 - big/SRD mass density ratio = -5.5653033 -WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2805) -WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2826) -WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2828) - # of rescaled SRD velocities = 1 - ave/max small velocity = 16.14994 40 - ave/max big velocity = 1.6952661 5.2200074 -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.8 - ghost atom cutoff = 3.8 - binsize = 13.499745, bins = 1 1 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair tri/lj, perpetual - attributes: half, newton on - pair build: half/multi/newton/tri - stencil: half/multi/3d/tri - bin: multi -Per MPI rank memory allocation (min/avg/max) = 106.9 | 107.5 | 107.7 Mbytes - Step f_1 c_tsmall Temp Press f_2[9] f_2[4] - 10000 7.4438347 1.0189789 4.7184481 7.9505614 0 0 - 10100 7.0770142 1.0021471 4.4491455 6.606701 1 141 - 10200 6.7628072 1.002308 4.152988 8.5190386 1 125 - 10300 6.5333319 1.0007472 4.1295404 8.2341747 1 109 - 10400 6.3237519 1.0024029 3.8636034 9.4058128 1 95 - 10500 6.6411054 1.0026261 4.2975997 7.6122304 1 82 - 10600 5.7470775 1.0004827 3.7959947 7.3091777 1 67 - 10700 5.9744919 1.0014977 3.6885649 7.5517197 1 59 - 10800 5.8028731 1.0029627 3.7553961 6.2787087 1 49 - 10900 5.3755286 1.0019318 3.5334739 7.1318348 1 41 - 11000 5.3915962 1.001463 3.483172 7.6362496 1 40 - 11100 5.8683672 1.0022459 3.6697589 6.9711866 1 33 - 11200 5.4351801 0.99956703 3.4548447 7.0745257 1 29 - 11300 4.9397513 1.0008287 3.1990325 6.0917337 1 27 - 11400 4.9159845 1.0017862 3.0005677 7.653817 1 26 - 11500 4.9243103 1.0013135 3.1799841 7.744414 1 23 - 11600 5.2036357 1.0017984 3.2963749 7.540477 1 22 - 11700 4.8991892 1.0020757 3.1773032 8.7218471 1 27 - 11800 4.9489399 1.003438 3.1679764 7.1605486 1 26 - 11900 4.82398 1.0019946 3.1939566 7.1397869 1 21 - 12000 4.3531411 1.000532 2.8321416 7.6672501 1 23 - 12100 4.8226081 1.0018898 3.0382137 6.8343432 1 25 - 12200 4.7456418 1.0032116 2.9186038 7.3067818 1 20 - 12300 4.4280468 1.0005857 2.734593 8.0365684 1 22 - 12400 4.7311239 1.0000982 2.8898839 7.9231831 1 22 - 12500 4.7261054 1.0016127 2.9090517 7.6085854 1 24 - 12600 4.7719025 1.0016702 2.9736761 7.6101796 1 26 - 12700 4.386248 1.001394 2.8508378 6.4765102 1 28 - 12800 4.3313538 1.0019737 2.6258221 6.3164681 1 19 - 12900 4.2219861 1.0007469 2.5345699 7.0901077 1 22 - 13000 4.1775643 1.0011891 2.5807017 7.3579938 1 25 - 13100 4.3060837 1.0008671 2.5974066 6.9301328 1 22 - 13200 4.3529062 0.99996469 2.7571632 6.7806287 1 21 - 13300 4.2178709 1.000673 2.7819091 7.6449064 1 18 - 13400 4.2714169 1.0021294 2.7280794 8.0986691 1 18 - 13500 4.3430969 1.0037732 2.6768429 8.1267941 1 18 - 13600 4.3664374 1.0016083 2.6470186 6.2797727 1 20 - 13700 4.4904769 1.0008993 2.7885718 7.7410193 1 22 - 13800 4.2966193 1.001532 2.73862 7.9651302 1 21 - 13900 4.4003185 1.0009984 2.7484129 8.7160439 1 24 - 14000 4.5948292 1.0011748 2.9051777 7.842121 1 22 - 14100 4.6901122 1.0001265 2.9404111 8.9953816 1 20 - 14200 4.8517518 0.99998743 2.9647625 6.6450509 1 22 - 14300 4.889628 1.0018051 3.0891097 7.2671824 1 20 - 14400 4.578862 1.0010629 2.8239776 6.1317183 1 23 - 14500 4.0865406 1.0013917 2.5119661 6.864665 1 19 - 14600 4.30688 1.0009041 2.6817814 6.9007433 1 18 - 14700 4.1295726 1.002342 2.6032093 7.1441648 1 15 - 14800 4.2176021 1.0015157 2.7332903 6.8394683 1 16 - 14900 4.2012664 0.99986345 2.6498409 7.4568241 1 15 - 15000 4.6124269 1.0014751 2.9584178 7.9341875 1 16 - 15100 4.947327 1.0010615 3.0784409 7.6241305 1 21 - 15200 5.253281 1.002095 3.3093754 8.1872718 1 25 - 15300 5.2642369 1.0017799 3.1511136 7.4668389 1 25 - 15400 5.1967916 1.0029407 3.247548 8.0840111 1 23 - 15500 5.7465412 1.001896 3.468834 9.5990471 1 15 - 15600 6.2245772 1.0021086 3.6127689 7.8242016 1 19 - 15700 5.5626191 0.99984979 3.3893723 7.8124588 1 20 - 15800 5.5945727 1.0010291 3.3442448 7.0116922 1 17 - 15900 5.4450219 1.0006248 3.3132381 8.4803413 1 15 - 16000 5.7800459 1.001449 3.5002534 8.7989456 1 19 - 16100 6.1168718 1.0008109 3.8081142 8.0119729 1 18 - 16200 5.4901649 1.0020643 3.3673653 7.3483134 1 17 - 16300 5.4051694 1.0015652 3.3560012 7.4641983 1 19 - 16400 5.4237612 1.0012686 3.3816406 7.3845086 1 14 - 16500 5.1935593 1.001754 3.3340381 7.8607712 1 16 - 16600 5.539343 1.0021073 3.4164309 8.1541097 1 12 - 16700 5.8922923 1.0013792 3.553426 7.5220576 1 14 - 16800 5.956937 1.0005959 3.7630589 8.7417987 1 13 - 16900 5.469721 1.0016219 3.5531223 8.6721994 1 13 - 17000 5.3110154 1.001142 3.4167244 7.4644182 1 15 - 17100 5.9226035 0.99918238 4.0244287 6.5172028 1 16 - 17200 5.4897042 0.99981565 3.4350691 5.6840394 1 20 - 17300 5.4302636 1.0021571 3.421473 6.4317025 1 21 - 17400 5.5559131 1.0013807 3.4951403 6.874191 1 24 - 17500 5.4068006 1.0010448 3.4506835 7.7069504 1 22 - 17600 4.9283792 1.0007628 3.1736308 7.3098058 1 20 - 17700 4.9319722 0.99935896 3.0956257 8.2120111 1 15 - 17800 4.6842391 1.00037 2.9602433 7.4116352 1 17 - 17900 4.7714682 1.0009332 2.9666778 7.5925131 1 17 - 18000 4.7233188 1.0035687 3.0991778 7.1636357 1 10 - 18100 4.6487958 1.0020255 3.10781 6.8468658 1 12 - 18200 4.6284129 1.0012617 3.089724 6.3082275 1 13 - 18300 4.7136404 0.99962415 3.1261978 7.3359556 1 15 - 18400 5.0367681 1.0011016 3.2413493 8.3910633 1 14 - 18500 4.9658104 1.0025407 3.2420827 7.4701216 1 17 - 18600 4.6100059 1.0014508 3.0216884 6.553483 1 17 - 18700 4.3246452 1.0016721 2.7810363 6.7450293 1 19 - 18800 4.9415788 1.0012406 3.1661907 7.5544034 1 18 - 18900 5.3930915 1.000138 3.2557456 7.350955 1 21 - 19000 5.1938599 1.0007364 3.2398733 6.5397956 1 22 - 19100 5.4433048 1.0019191 3.2699245 8.3625772 1 22 - 19200 6.1303261 1.0004005 3.7823203 8.0537369 1 22 - 19300 5.5762518 1.0008117 3.5689121 8.3714373 1 22 - 19400 5.1316743 0.9999834 3.099381 7.405287 1 23 - 19500 5.2064799 1.0012007 3.3059455 7.3499127 1 25 - 19600 5.1650099 1.0023314 3.3759492 7.3637616 1 21 - 19700 5.8316278 1.0023317 3.601564 7.153887 1 19 - 19800 5.6435147 1.0010657 3.4967581 6.8899334 1 21 - 19900 5.4071193 0.99961357 3.4977894 6.1068438 1 20 - 20000 5.5058495 1.000982 3.5185057 8.5657603 1 19 - 20100 5.6551271 1.0025852 3.5672369 7.8242273 1 20 - 20200 5.7196886 1.002283 3.6010925 7.1449072 1 22 - 20300 5.5593553 1.0009987 3.4363398 8.4141755 1 21 - 20400 5.5550247 1.001081 3.3950874 8.0222131 1 20 - 20500 5.4510415 0.99997273 3.5505093 7.5243655 1 18 - 20600 5.8014064 1.0007611 3.8084579 7.6583499 1 18 - 20700 5.7337315 1.0020309 3.7973684 8.7376766 1 17 - 20800 5.2512898 0.99901254 3.5027763 7.8902791 1 14 - 20900 5.3245034 1.0014504 3.3354615 6.7030716 1 17 - 21000 5.2071731 1.0020459 3.3881369 5.8616999 1 20 - 21100 5.3187535 1.0010762 3.2845672 8.1422146 1 21 - 21200 5.5298545 0.99942313 3.4393978 7.1183144 1 22 - 21300 5.8430744 1.0008652 3.719408 7.8522038 1 20 - 21400 5.8190457 1.0017046 3.5624252 7.8150165 1 20 - 21500 6.004585 1.0035276 3.9161914 7.7719377 1 21 - 21600 6.7202635 0.99970072 3.9642141 8.7934294 1 18 - 21700 6.8590346 1.0007883 4.4285217 8.9014638 1 20 - 21800 6.627638 1.0012117 4.1154082 8.3153026 1 22 - 21900 7.8281047 1.0008299 4.8842343 8.4016227 1 20 - 22000 7.200038 1.0014681 4.4141419 9.4091956 1 18 - 22100 7.7442011 1.0018051 4.7850371 8.9885489 1 15 - 22200 7.4770203 1.0033558 4.7512643 8.4898148 1 17 - 22300 8.1080801 1.0000019 5.2725185 9.2314625 1 14 - 22400 7.8068311 1.0020672 4.9055683 8.4064748 1 12 - 22500 7.4594636 1.0008427 4.6586396 8.5102986 1 11 - 22600 6.9380609 1.0024634 4.2435619 10.395118 1 16 - 22700 6.9338066 1.001056 4.3436179 7.9126284 1 18 - 22800 6.8049493 1.0020052 4.1443407 7.8228868 1 18 - 22900 6.2280158 1.0021474 3.7695343 7.3179647 1 20 - 23000 5.649403 1.0017128 3.5941976 7.2964709 1 19 - 23100 5.3203116 1.001912 3.3807399 6.6454551 1 15 - 23200 5.8172882 1.0005742 3.6625896 8.4256312 1 15 - 23300 5.9647182 1.0015466 3.9106019 8.3303303 1 14 - 23400 5.9784055 1.0034542 3.7229235 7.7934273 1 14 - 23500 5.377627 1.00192 3.5481778 6.8195124 1 17 - 23600 5.4807136 1.0014662 3.563123 7.6356376 1 18 - 23700 5.8896329 1.0013553 3.7990694 8.5513408 1 13 - 23800 6.3463707 0.9999403 3.9609397 8.5741923 1 11 - 23900 6.656669 1.0014998 4.1993183 9.0862996 1 13 - 24000 7.583723 1.0025057 4.7628652 7.5007245 1 20 - 24100 6.9868359 1.0014089 4.4369841 7.692833 1 25 - 24200 7.1966062 1.0013149 4.4384528 9.5264821 1 18 - 24300 6.7765706 1.0007065 4.3500477 9.4974154 1 16 - 24400 7.0853466 1.0013246 4.409163 9.2215823 1 17 - 24500 6.9603823 1.0004247 4.4866051 7.7870058 1 20 - 24600 6.9208291 0.99953329 4.2298144 6.5732392 1 21 - 24700 6.5005518 1.0026848 4.0003505 7.8094715 1 22 - 24800 5.8421948 1.0012055 3.6686768 7.6078157 1 26 - 24900 5.8410604 1.0023428 3.746177 6.8971309 1 22 - 25000 5.8728511 1.0001747 3.7170134 7.4456816 1 19 - 25100 6.0217168 1.000624 3.7756108 6.6542452 1 20 - 25200 6.1939015 1.0017861 3.8943084 9.395821 1 25 - 25300 6.161998 1.0010373 3.9255122 6.2228884 1 28 - 25400 5.5850406 1.0018505 3.5129832 7.2551309 1 24 - 25500 6.0286276 1.0009028 3.8580887 6.8065265 1 24 - 25600 5.6262228 1.0005097 3.4574446 7.5061246 1 21 - 25700 6.1348187 1.0009828 3.8073512 7.4818375 1 17 - 25800 6.09781 1.0026426 3.9585383 9.0915939 1 21 - 25900 6.2673667 1.0002269 3.8182813 9.2134822 1 21 - 26000 6.6001776 1.0020444 4.041386 8.0403555 1 18 - 26100 6.3063025 1.0016633 3.8649839 8.8149734 1 19 - 26200 6.0046983 1.002332 3.5380766 8.6145656 1 17 - 26300 5.9627788 1.0005401 3.56864 6.7821213 1 15 - 26400 5.0547314 0.9998295 3.2106781 9.2935351 1 15 - 26500 5.256781 1.0013131 3.2946631 8.8590275 1 15 - 26600 5.6250355 1.0023929 3.5243033 8.8985058 1 17 - 26700 6.0197165 1.0018323 3.7973947 7.3093402 1 17 - 26800 5.4556541 1.0015309 3.4295107 8.2342049 1 18 - 26900 5.420428 1.0024996 3.4374201 7.1444636 1 16 - 27000 6.165624 1.0019174 3.8726016 8.6588275 1 20 - 27100 6.7131697 1.0006541 4.266264 8.7063389 1 24 - 27200 6.4855163 1.0016139 4.2029778 7.667611 1 29 - 27300 6.0525608 1.000478 3.9169723 7.4515279 1 25 - 27400 6.1426194 1.0014522 3.9176108 6.8689671 1 24 - 27500 6.5981349 1.0001143 4.0620686 8.6804552 1 27 - 27600 6.7827138 1.0016694 4.2764286 9.3912843 1 21 - 27700 6.6368902 1.0025149 4.1452128 9.1814523 1 24 - 27800 6.9791025 1.0019486 4.3989933 7.9446882 1 24 - 27900 6.617142 1.0015736 4.360571 9.3732108 1 26 - 28000 7.2818263 1.0014101 4.6041512 8.2398587 1 28 - 28100 7.2543709 1.0007625 4.5724787 7.7373488 1 22 - 28200 7.0631847 1.0023922 4.4021705 8.3290554 1 29 - 28300 7.2999952 1.0012593 4.4655563 8.612666 1 27 - 28400 7.4124538 1.0014043 4.5011335 8.379391 1 29 - 28500 7.0350937 1.0011392 4.3528091 7.8167375 1 24 - 28600 7.9659642 1.0031684 4.8732467 8.0661929 1 30 - 28700 7.2865919 1.0010958 4.6650146 8.0325989 1 32 - 28800 7.7039529 1.0027912 4.8299888 9.5471747 1 30 - 28900 8.3288847 1.0012438 5.0785288 8.8964877 1 31 - 29000 7.9348665 1.0021794 4.9393968 9.5531767 1 31 - 29100 8.2473389 1.0013795 4.9890359 9.7697184 1 29 - 29200 8.6383362 1.0018356 4.9856954 7.6402719 1 25 - 29300 8.2504592 1.0011048 4.9631793 7.9466724 1 24 - 29400 8.0502922 1.0010516 5.2521065 8.4515028 1 26 - 29500 7.9475896 1.0012951 4.8584644 9.1225463 1 19 - 29600 8.5641641 1.0016228 5.4361335 9.2045399 1 23 - 29700 8.9932021 1.0011848 5.5727205 8.6045729 1 23 - 29800 8.0320178 1.0019073 5.2837013 8.9335413 1 22 - 29900 8.2676522 1.0012734 5.2213798 8.8966896 1 24 - 30000 9.1848984 1.001747 5.9147628 12.096129 1 27 - 30100 10.184519 0.99977427 6.4260136 11.140491 1 27 - 30200 9.271472 1.0023983 6.0252189 9.6954338 1 30 - 30300 9.0751572 1.000851 5.6010295 9.734426 1 28 - 30400 9.4581261 1.0018449 5.6987258 9.70456 1 34 - 30500 9.1574751 0.99944001 5.582217 9.300318 1 27 - 30600 8.619312 1.001388 5.3503985 8.2759155 1 26 - 30700 7.9370031 1.0026674 5.0702831 8.5368014 1 28 - 30800 7.9221619 1.0019077 5.1278637 11.046922 1 26 - 30900 9.9722884 1.0025903 6.4055506 10.167311 1 25 - 31000 8.8648667 0.99962676 5.4777514 10.142102 1 21 - 31100 8.576344 1.000906 5.3216342 8.7984921 1 18 - 31200 7.8480974 1.0010341 4.9584917 9.0696437 1 16 - 31300 8.3536183 1.0005758 5.208516 9.7971514 1 15 - 31400 8.5301933 1.0007603 5.2241536 9.0257241 1 17 - 31500 8.5196226 1.0018215 5.0576064 8.8847294 1 19 - 31600 8.1470823 1.0023147 4.9182956 9.0205413 1 20 - 31700 8.1475888 1.0005764 5.1814113 9.0603162 1 16 - 31800 7.8629717 1.0014194 4.9221218 9.366291 1 16 - 31900 7.7206559 1.0021082 4.9167636 7.4136735 1 16 - 32000 7.5152809 1.0004752 4.6330638 8.830959 1 16 - 32100 8.2693974 1.0011751 4.9094804 9.427636 1 13 - 32200 8.3067661 0.9997006 4.9036865 9.0374633 1 17 - 32300 7.2068514 1.0007866 4.3580755 8.6445065 1 17 - 32400 6.885063 1.0011887 4.1528011 8.1199454 1 16 - 32500 6.9147014 1.0020825 4.160405 7.5398034 1 19 - 32600 6.8809668 1.000971 4.3312782 8.2157688 1 16 - 32700 6.4818892 1.0000885 3.9433899 7.309605 1 22 - 32800 6.6875555 1.0018674 4.1017504 7.2327183 1 22 - 32900 7.6118502 0.99975736 4.4498951 8.5072395 1 19 - 33000 7.7576909 1.0022061 4.7239551 9.2132467 1 22 - 33100 7.8616235 1.000482 5.0031322 9.349805 1 20 - 33200 8.2620563 1.0015059 5.2482188 10.286446 1 17 - 33300 8.0217099 1.0015466 5.1166876 9.1381844 1 20 - 33400 7.6565746 1.0024855 4.7594208 9.2646824 1 22 - 33500 7.9633887 1.0010334 4.6754116 9.1085184 1 23 - 33600 7.9566834 1.0024542 4.6712679 9.2046594 1 25 - 33700 8.2639384 1.0003021 5.1326892 8.0930215 1 24 - 33800 8.5648917 1.0000947 5.2099387 8.8127486 1 21 - 33900 8.3593557 1.0002488 5.1291354 8.5938391 1 25 - 34000 8.1922068 1.0030011 5.1441189 7.1529563 1 24 - 34100 8.4260308 1.0004639 5.5876122 9.0450303 1 28 - 34200 8.3014654 1.0002204 5.1964772 8.4920822 1 33 - 34300 7.4736545 1.0010306 4.7932244 7.8442244 1 30 - 34400 7.0023126 1.0024002 4.5665168 8.4702188 1 29 - 34500 7.3797703 1.000813 4.7224014 8.4098954 1 30 - 34600 7.7158761 0.99973161 4.7441628 8.5818592 1 29 - 34700 7.6135895 1.0015768 4.6612844 7.2195952 1 28 - 34800 7.0458078 0.99992638 4.2805357 7.4162305 1 32 - 34900 7.6190708 1.0007146 4.8064968 8.2709405 1 27 - 35000 7.4614294 1.0006051 4.7807207 7.7137359 1 28 - 35100 7.7008336 1.0008263 4.6823621 7.0208513 1 26 - 35200 8.1510766 1.000271 5.1781834 7.3231692 1 24 - 35300 7.5106275 1.0010438 4.6988185 8.9418343 1 25 - 35400 7.8116652 1.0009688 4.8622216 7.4624002 1 17 - 35500 7.2159785 1.0027484 4.543984 8.3177043 1 21 - 35600 7.6978875 1.0004834 4.7021203 8.3706905 1 20 - 35700 7.7827655 1.0019919 4.775879 8.6083292 1 15 - 35800 7.8433537 1.001844 4.7506574 7.3250009 1 15 - 35900 7.9456497 1.0004336 4.7925775 7.9824359 1 18 - 36000 8.1044513 1.0022261 5.1213755 9.211699 1 16 - 36100 7.6657532 1.0025661 4.751804 8.9770412 1 19 - 36200 7.909323 1.0035462 4.8435293 10.232493 1 21 - 36300 8.4188244 1.0016775 5.4337725 9.2060079 1 24 - 36400 8.7352689 1.0011274 5.6313351 8.6202832 1 24 - 36500 8.3459273 1.0005659 5.187336 6.9333716 1 21 - 36600 7.7118105 1.0018769 4.9293347 8.2789615 1 14 - 36700 7.8069879 1.0014021 4.7782709 8.4841233 1 15 - 36800 7.862085 1.0005342 4.8680692 8.1055023 1 16 - 36900 7.9469362 1.0027815 4.9339095 9.157722 1 16 - 37000 7.9085375 1.0024851 5.0921374 8.9374239 1 16 - 37100 8.9464869 1.0005734 5.6837772 8.806998 1 16 - 37200 8.1482632 1.0021175 5.1266453 8.5772094 1 18 - 37300 7.7958072 1.0026336 4.788431 8.3233372 1 19 - 37400 7.3647655 1.0015482 4.4786134 9.6606112 1 23 - 37500 7.3071882 1.0003912 4.681549 8.6319438 1 17 - 37600 7.8672509 1.0000478 4.7981944 8.3051478 1 14 - 37700 7.9306696 0.99923102 4.9316544 9.3672856 1 15 - 37800 7.7397949 0.99948557 5.1168552 8.5978047 1 17 - 37900 7.9121039 1.0020122 4.9866234 7.640888 1 14 - 38000 7.433451 1.0007901 4.6254894 8.0853539 1 14 - 38100 7.4636908 1.0021552 4.8472833 8.1975615 1 10 - 38200 7.4453077 1.0010305 4.6910943 7.8192603 1 13 - 38300 7.0488536 1.0012587 4.5490462 8.190036 1 16 - 38400 8.0686748 1.0016782 5.0747029 7.7242015 1 15 - 38500 7.9575875 1.0007137 4.8361776 8.05268 1 15 - 38600 7.6690498 1.0027522 4.8823286 9.1926516 1 20 - 38700 7.1567 1.002374 4.5600354 10.098089 1 19 - 38800 6.9100518 1.0008695 4.4101446 7.8832032 1 19 - 38900 6.8021882 1.0017647 4.1844125 8.1858761 1 21 - 39000 8.3996464 1.0010263 4.8183813 8.0997387 1 16 - 39100 8.4533834 1.0021643 5.074254 11.291904 1 19 - 39200 8.2406701 1.002062 5.0117425 8.778159 1 24 - 39300 8.3134114 1.0008218 5.0067136 7.9871787 1 22 - 39400 7.4307571 1.0014205 4.5858283 8.8596594 1 25 - 39500 7.1146821 1.0016367 4.5021057 7.4890018 1 22 - 39600 8.0048978 0.99992107 4.9235747 7.8770845 1 24 - 39700 8.070853 1.0029024 5.0842957 9.020664 1 21 - 39800 7.6939108 1.0012543 4.8986595 8.3306129 1 20 - 39900 7.2915444 1.00267 4.5038291 8.3844384 1 20 - 40000 7.3023994 1.0020441 4.4960911 8.1023709 1 18 - 40100 7.0221648 1.0033695 4.6374149 8.3756822 1 24 - 40200 7.4114756 1.0019246 4.6733475 7.6547258 1 23 - 40300 7.5323108 1.0005472 4.8284493 8.2820085 1 26 - 40400 7.3890772 1.0010491 4.6599273 8.9203575 1 19 - 40500 7.5786764 1.0016114 4.8166885 8.6760107 1 25 - 40600 8.165763 1.0006961 5.1488995 7.9321524 1 22 - 40700 8.1277597 0.99933464 5.0441567 10.069551 1 16 - 40800 8.1050904 1.0024705 5.4408599 8.3244459 1 21 - 40900 7.805318 1.0022992 4.9965408 9.7193723 1 21 - 41000 9.0130932 1.0006842 5.7931112 6.1646073 1 20 - 41100 8.0387975 1.0017359 5.3355655 9.6123191 1 21 - 41200 8.4484723 1.0014151 5.4461007 8.5146504 1 27 - 41300 8.6181909 1.0007562 5.2963876 9.1122306 1 30 - 41400 9.6762899 1.0010931 5.950456 9.2851025 1 25 - 41500 9.9414226 1.0016186 6.1433384 10.741453 1 24 - 41600 9.3348435 1.0003483 5.9291766 11.460717 1 20 - 41700 9.6125587 1.0013661 5.8530052 9.2105722 1 19 - 41800 11.383056 1.0032034 7.1988684 10.312945 1 22 - 41900 10.884524 1.0034888 6.9126707 10.775457 1 20 - 42000 11.071218 1.0026753 7.0004189 10.740627 1 20 - 42100 11.054304 1.0008347 6.9602414 8.9885498 1 22 - 42200 22.478691 1.0020466 14.997099 12.72513 1 19 - 42300 18.303508 1.0027626 11.336523 12.638769 1 18 - 42400 15.998712 1.0030312 9.4092725 11.070501 1 24 - 42500 15.034488 1.0024472 9.3543751 11.48052 1 28 - 42600 14.538257 1.0033153 9.2523745 10.909576 1 27 - 42700 13.986613 1.001458 8.5544184 10.765136 1 29 - 42800 13.240256 1.0027899 8.2014429 10.506497 1 32 - 42900 12.784336 1.0001406 8.0823431 12.258209 1 33 - 43000 13.374145 1.0012996 8.4207155 10.32817 1 31 - 43100 13.142334 1.0022503 8.5908808 10.152205 1 32 - 43200 12.669284 1.0018944 7.8511966 10.580104 1 32 - 43300 13.155032 1.001144 8.0337768 10.6652 1 39 - 43400 12.155928 1.0019472 7.5886584 11.234772 1 35 - 43500 12.385603 1.0007639 7.8865245 9.3868914 1 32 - 43600 12.236179 1.0027456 7.7521353 10.456701 1 42 - 43700 11.49535 1.0008758 7.3633144 8.8490079 1 40 - 43800 11.469157 1.0015845 7.0035577 10.594522 1 41 - 43900 11.228266 1.0013014 7.0137223 8.0653711 1 38 - 44000 10.56742 1.0016631 6.6908938 8.1094154 1 35 - 44100 9.8964699 1.0008351 6.3550438 8.6578181 1 36 - 44200 9.041539 1.0019541 5.6721401 8.6518043 1 38 - 44300 9.0767434 1.0034191 5.7446596 8.3838528 1 38 - 44400 9.2299608 1.0019526 5.7117964 8.3106491 1 37 - 44500 9.458981 1.0030409 5.7612138 7.7679755 1 37 - 44600 8.9611997 1.0014848 5.6490756 6.9224078 1 37 - 44700 8.0853184 1.0018894 5.2288749 8.0910912 1 32 - 44800 7.9999755 1.0015853 4.8088312 7.1854304 1 30 - 44900 7.6598023 1.0009751 4.6690664 7.1999858 1 28 - 45000 7.4939315 1.0010307 4.8119666 7.9615769 1 26 - 45100 7.4690079 0.99913423 4.9704428 7.6026835 1 32 - 45200 7.7001199 1.001626 4.9315953 7.4926686 1 25 - 45300 7.8794405 1.0011648 4.8624857 8.0804457 1 26 - 45400 7.493909 1.0016257 4.7631808 8.0330626 1 26 - 45500 7.5963141 1.0005825 4.7220659 7.0971298 1 23 - 45600 7.9028612 1.0017008 4.9561022 8.440428 1 23 - 45700 7.2285584 1.0006033 4.5521456 9.385579 1 23 - 45800 7.5687284 1.0024318 4.8557498 8.3052658 1 23 - 45900 7.8938604 1.0013937 5.1393944 5.5323667 1 26 - 46000 8.318466 1.0020803 5.4761811 8.2227801 1 25 - 46100 7.9169512 1.0024598 5.0406355 8.64365 1 27 - 46200 7.5535458 1.0016318 4.8010133 9.370726 1 26 - 46300 7.8926896 1.0001525 5.18463 7.9830196 1 27 - 46400 7.487145 1.002671 4.7718312 8.300134 1 29 - 46500 7.3564658 1.0006114 4.6762189 7.34947 1 26 - 46600 7.2261291 1.0005569 4.4751221 6.5847138 1 27 - 46700 7.2943203 1.0020164 4.3335327 7.7296507 1 25 - 46800 8.5849411 1.0014634 5.4501531 9.0933014 1 25 - 46900 10.176752 1.0023799 6.0456779 9.4050423 1 16 - 47000 9.1913098 1.0029076 5.7577256 9.1826215 1 22 - 47100 9.5479771 1.0022102 6.1100973 8.9440056 1 28 - 47200 9.9944172 1.0004924 6.3649417 9.1507264 1 25 - 47300 9.3543283 1.0013246 6.0873147 10.41657 1 24 - 47400 8.594101 1.0020068 5.6864295 9.2388304 1 24 - 47500 9.3191964 1.002411 6.0537511 9.3506828 1 23 - 47600 8.1615734 1.001364 5.3757905 10.303962 1 30 - 47700 8.3615046 1.0003075 5.2727936 9.3162209 1 32 - 47800 8.3566467 1.0026031 5.4379524 7.7644422 1 33 - 47900 8.4062556 1.0006471 5.3098736 8.0181121 1 33 - 48000 8.2233307 1.0012304 4.9650027 9.2644288 1 34 - 48100 8.4495256 1.000088 4.9940422 10.01023 1 27 - 48200 8.8068097 1.0014275 5.4732649 8.410093 1 31 - 48300 8.0008187 1.0017459 4.7732764 9.25726 1 27 - 48400 7.7242529 1.0026909 4.9084505 8.7147295 1 30 - 48500 8.3752816 1.001333 5.1071228 8.2267308 1 32 - 48600 9.0777805 1.0019328 5.7331841 9.6679383 1 29 - 48700 9.3623061 1.0001767 5.7117062 8.396895 1 25 - 48800 8.1186637 1.0013185 5.2697427 8.6058372 1 27 - 48900 7.3685497 1.0007173 4.6097553 7.8047228 1 24 - 49000 7.1661421 1.0023152 4.5389038 8.8759552 1 22 - 49100 6.9857144 1.0016394 4.6489319 8.2022359 1 24 - 49200 6.7160336 1.0018413 4.2488082 8.3393245 1 25 - 49300 7.9703755 1.0010628 5.2328567 7.968278 1 28 - 49400 8.2628465 1.0010877 5.2292977 8.0196533 1 27 - 49500 8.1436558 1.0015175 5.0344712 8.0712037 1 30 - 49600 8.5182498 1.0021589 5.1029028 8.6869789 1 28 - 49700 8.3604444 1.0015016 5.0333696 9.4861656 1 25 - 49800 7.336335 1.0020055 4.6365173 8.7210022 1 30 - 49900 7.432996 1.0016415 4.7090587 8.7033033 1 29 - 50000 7.4937053 1.001014 4.7212573 9.0890363 1 29 -Loop time of 999.576 on 8 procs for 40000 steps with 16271 atoms - -Performance: 3457.466 tau/day, 40.017 timesteps/s, 651.116 katom-step/s -99.3% CPU use with 8 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 293.48 | 403.7 | 545.29 | 357.5 | 40.39 -Neigh | 2.4176 | 3.2721 | 3.8303 | 25.2 | 0.33 -Comm | 163.58 | 305.88 | 419.83 | 416.7 | 30.60 -Output | 0.032483 | 0.034794 | 0.040514 | 1.2 | 0.00 -Modify | 281.15 | 285.67 | 293.8 | 24.3 | 28.58 -Other | | 1.023 | | | 0.10 - -Nlocal: 2033.88 ave 2657 max 1198 min -Histogram: 2 0 0 0 0 2 1 0 1 2 -Nghost: 1628.12 ave 1719 max 1569 min -Histogram: 2 0 1 1 2 1 0 0 0 1 -Neighs: 13566 ave 18212 max 8488 min -Histogram: 1 0 0 1 2 1 2 0 0 1 - -Total # of neighbors = 108528 -Ave neighs/atom = 6.6700264 -Neighbor list builds = 2447 -Dangerous builds = 2 -Total wall time: 0:19:22 diff --git a/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.1 b/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.1 new file mode 100644 index 00000000000..26860708328 --- /dev/null +++ b/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.1 @@ -0,0 +1,343 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles + +units lj +atom_style tri +atom_modify first big map yes + +read_data data.tri.srd +Reading data file ... + orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 1500 atoms + 1500 triangles + read_data CPU = 0.013 seconds + +# add small particles as hi density lattice + +lattice sc 0.4 +Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088 +region box block INF INF INF INF INF INF +lattice sc 20.0 +Lattice spacing in x,y,z = 0.36840315 0.36840315 0.36840315 +create_atoms 2 region box +Created 91125 atoms + using lattice units in orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + create_atoms CPU = 0.014 seconds + +group big type 1 +1500 atoms in group big +group small type 2 +91125 atoms in group small +set group small mass 0.01 +Setting atom values ... + 91125 settings made for mass + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 1.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 + +delete_atoms overlap 1.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.8 + ghost atom cutoff = 1.8 + binsize = 0.9, bins = 19 19 19 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 76354 atoms, new total = 16271 + +# SRD run + +reset_timestep 0 + +velocity small create 1.44 87287 loop geom + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra big include big + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style tri/lj 3.5 +pair_coeff 1 1 0.1 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 + create bodies CPU = 0.000 seconds + 125 rigid bodies with 1500 atoms + 1.8601881 = max distance from body owner to body atom +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip inside ignore + +fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 + +# diagnostics + +compute tsmall small temp/deform +compute tbig big temp +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) + +compute_modify tbig extra/dof -4500 + +compute 1 big erotate/asphere +compute 2 all ke +compute 3 all pe +variable toteng equal (c_1+c_2+c_3)/atoms + +thermo 100 +thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) + +compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z + +#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +WARNING: Using compute temp/deform with inconsistent fix deform remap option (src/compute_temp_deform.cpp:71) +WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405) +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 17 17 17 + SRD grid size: request, actual (xyz) = 1, 0.99262829 0.99262829 0.99262829 + SRD per actual grid cell = -3.9971745 + SRD viscosity = -34.162587 + big/SRD mass density ratio = -3.3753691 +WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809) +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (src/SRD/fix_srd.cpp:2832) + # of rescaled SRD velocities = 0 + ave/max small velocity = 19.970837 35.150443 + ave/max big velocity = 0 0 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 16.874681, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/3d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 381.8 | 381.8 | 381.8 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 0 0 1.4502537 0 -0.15976045 0 0 + 100 0.41802172 1.152223 0.27557714 1.0421065 1.1470081 283 + 200 0.79710339 1.0669332 0.5813323 0.97699684 1.0361619 534 + 300 1.3739181 1.0275476 1.0869716 0.81001536 1.0211312 658 + 400 1.9355117 1.0155457 1.5813236 1.7798798 0.99354559 831 + 500 2.8557382 1.0005021 2.267698 3.3903849 0.98597972 927 + 600 4.7851916 1.0156689 3.730334 2.838776 0.99140534 1053 + 700 5.3647697 1.0176657 3.9593121 5.1189107 0.9972029 1218 + 800 8.23688 1.0268086 5.899689 6.8199153 0.99310516 1349 + 900 9.9330758 1.0356047 7.0260595 7.2596589 0.98360014 1607 + 1000 9.8719995 1.043178 6.9903792 10.05101 1.0045416 1805 +Loop time of 79.2664 on 1 procs for 1000 steps with 16271 atoms + +Performance: 1089.995 tau/day, 12.616 timesteps/s, 205.270 katom-step/s +99.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 57.961 | 57.961 | 57.961 | 0.0 | 73.12 +Neigh | 0.34589 | 0.34589 | 0.34589 | 0.0 | 0.44 +Comm | 0.28615 | 0.28615 | 0.28615 | 0.0 | 0.36 +Output | 0.0022784 | 0.0022784 | 0.0022784 | 0.0 | 0.00 +Modify | 20.644 | 20.644 | 20.644 | 0.0 | 26.04 +Other | | 0.02724 | | | 0.03 + +Nlocal: 16271 ave 16271 max 16271 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 4612 ave 4612 max 4612 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 99463 ave 99463 max 99463 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 99463 +Ave neighs/atom = 6.1129003 +Neighbor list builds = 72 +Dangerous builds = 0 + +#undump 1 +#undump 2 +unfix 3 + +change_box all triclinic +Changing box ... + triclinic box = (-6.7498724 -6.7498724 -6.7498724) to (6.7498724 6.7498724 6.7498724) with tilt (0 0 0) + +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes inside ignore + +#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +fix 3 all deform 1 xy erate 0.05 units box remap v + +run 2000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 13 13 13 + SRD grid size: request, actual (xyz) = 1, 1.0384419 1.0384419 1.0384419 + SRD per actual grid cell = -2.775698 + SRD viscosity = -12.180602 + big/SRD mass density ratio = -5.5653033 +WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809) +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (src/SRD/fix_srd.cpp:2832) + # of rescaled SRD velocities = 3 + ave/max small velocity = 16.23763 40 + ave/max big velocity = 1.9825234 5.257255 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 13.499745, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton/tri + stencil: half/multi/3d/tri + bin: multi +Per MPI rank memory allocation (min/avg/max) = 278.4 | 278.4 | 278.4 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 1000 9.8719995 1.0317167 6.98982 4.0948969 0 0 + 1100 7.6460335 1.0028444 5.2446585 6.6348814 1 1320 + 1200 6.2789381 1.0012003 4.5257435 6.3278972 1 1024 + 1300 5.5060209 1.002182 3.7063549 7.0004503 1 794 + 1400 5.4107119 1.002291 3.594515 7.9511695 1 621 + 1500 5.072582 1.0001037 3.2501353 8.6993671 1 503 + 1600 4.7912016 0.99982803 3.1208274 6.464157 1 416 + 1700 4.5518848 1.0030059 2.9084074 6.3278992 1 346 + 1800 4.368682 1.000831 2.807184 6.7382017 1 282 + 1900 4.458655 1.0012568 2.7966515 6.0124309 1 246 + 2000 4.1256128 1.0004032 2.763649 6.3707442 1 208 + 2100 3.7040346 1.0004125 2.4398152 5.4213931 1 181 + 2200 4.2347861 1.002625 2.6206986 6.6832437 1 151 + 2300 4.254984 1.0028871 2.6794167 7.1661525 1 127 + 2400 4.1017692 1.0028508 2.6371178 8.388599 1 105 + 2500 3.9285571 1.0002888 2.5002741 6.0806187 1 95 + 2600 3.6239964 1.0012152 2.2573993 6.7863124 1 80 + 2700 3.4085702 1.0023974 2.1179914 6.7351139 1 68 + 2800 3.1399303 1.0005349 2.0163219 6.4502765 1 61 + 2900 3.1277562 1.0004013 2.0453134 6.6485498 1 51 + 3000 3.0737732 1.0022962 1.997382 6.797214 1 44 +Loop time of 206.387 on 1 procs for 2000 steps with 16271 atoms + +Performance: 837.264 tau/day, 9.691 timesteps/s, 157.675 katom-step/s +99.3% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 173.6 | 173.6 | 173.6 | 0.0 | 84.12 +Neigh | 1.0077 | 1.0077 | 1.0077 | 0.0 | 0.49 +Comm | 0.58656 | 0.58656 | 0.58656 | 0.0 | 0.28 +Output | 0.0042824 | 0.0042824 | 0.0042824 | 0.0 | 0.00 +Modify | 31.128 | 31.128 | 31.128 | 0.0 | 15.08 +Other | | 0.05664 | | | 0.03 + +Nlocal: 16271 ave 16271 max 16271 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 4521 ave 4521 max 4521 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 94777 ave 94777 max 94777 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 94777 +Ave neighs/atom = 5.8249032 +Neighbor list builds = 100 +Dangerous builds = 0 +Total wall time: 0:04:47 diff --git a/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.4 b/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.4 new file mode 100644 index 00000000000..c698c9e8db2 --- /dev/null +++ b/examples/ASPHERE/tri/log.1Feb24.tri.srd.g++.4 @@ -0,0 +1,343 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-665-g17f869bf5e) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Aspherical shear demo - 3d triangle boxes, solvated by SRD particles + +units lj +atom_style tri +atom_modify first big map yes + +read_data data.tri.srd +Reading data file ... + orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 1500 atoms + 1500 triangles + read_data CPU = 0.010 seconds + +# add small particles as hi density lattice + +lattice sc 0.4 +Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088 +region box block INF INF INF INF INF INF +lattice sc 20.0 +Lattice spacing in x,y,z = 0.36840315 0.36840315 0.36840315 +create_atoms 2 region box +Created 91125 atoms + using lattice units in orthogonal box = (-8.4373405 -8.4373405 -8.4373405) to (8.4373405 8.4373405 8.4373405) + create_atoms CPU = 0.005 seconds + +group big type 1 +1500 atoms in group big +group small type 2 +91125 atoms in group small +set group small mass 0.01 +Setting atom values ... + 91125 settings made for mass + +# delete overlaps +# must set 1-2 cutoff to non-zero value + +pair_style lj/cut 1.5 +pair_coeff 1 1 1.0 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 + +delete_atoms overlap 1.5 small big +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.8 + ghost atom cutoff = 1.8 + binsize = 0.9, bins = 19 19 19 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:312) +Deleted 76354 atoms, new total = 16271 + +# SRD run + +reset_timestep 0 + +velocity small create 1.44 87287 loop geom + +neighbor 0.3 multi +neigh_modify delay 0 every 1 check yes +neigh_modify exclude molecule/intra big include big + +comm_modify mode multi group big vel yes +neigh_modify include big + +# no pairwise interactions with small particles + +pair_style tri/lj 3.5 +pair_coeff 1 1 0.1 1.0 +pair_coeff 2 2 0.0 1.0 0.0 +pair_coeff 1 2 0.0 1.0 0.0 + +# use fix SRD to push small particles out from inside big ones +# if comment out, big particles won't see SRD particles + +timestep 0.001 + +fix 1 big rigid/small molecule #langevin 1.0 1.0 0.1 12398 + create bodies CPU = 0.000 seconds + 125 rigid bodies with 1500 atoms + 1.8601881 = max distance from body owner to body atom +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip inside ignore + +fix 3 all deform 1 x scale 0.8 y scale 0.8 z scale 0.8 + +# diagnostics + +compute tsmall small temp/deform +compute tbig big temp +variable pebig equal pe*atoms/count(big) +variable ebig equal etotal*atoms/count(big) + +compute_modify tbig extra/dof -4500 + +compute 1 big erotate/asphere +compute 2 all ke +compute 3 all pe +variable toteng equal (c_1+c_2+c_3)/atoms + +thermo 100 +thermo_style custom step f_1 c_tsmall temp press f_2[9] f_2[4] +thermo_modify temp tbig +WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:530) + +compute 10 all property/atom corner1x corner1y corner1z corner2x corner2y corner2z corner3x corner3y corner3z + +#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump1.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2 + +@Article{Intveld08, + author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest}, + title = {Accurate and Efficient Methods for Modeling Colloidal + Mixtures in an Explicit Solvent using Molecular Dynamics}, + journal = {Comput.\ Phys.\ Commut.}, + year = 2008, + volume = 179, + pages = {320--329} +} + +@article{Shire2020, + author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin}, + title = {{DEM} Simulations of Polydisperse Media: Efficient Contact + Detection Applied to Investigate the Quasi-Static Limit}, + journal = {Computational Particle Mechanics}, + year = {2020} +@article{Monti2022, + author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava, + Ishan and Silbert, Leonardo E. and Grest, Gary S. + and Lechman, Jeremy B.}, + title = {Large-scale frictionless jamming with power-law particle + size distributions}, + journal = {Phys. Rev. E}, + volume = {106} + issue = {3} + year = {2022} +} + +- fix srd command: doi:10.1063/1.3419070 + +@Article{Petersen10, + author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and + G. S. Grest and in 't Veld, P. J. and P. R. Schunk}, + title = {Mesoscale Hydrodynamics via Stochastic Rotation + Dynamics: Comparison with {L}ennard-{J}ones Fluid}, + journal = {J.~Chem.\ Phys.}, + year = 2010, + volume = 132, + pages = 174106 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +WARNING: Using compute temp/deform with inconsistent fix deform remap option (src/compute_temp_deform.cpp:71) +WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405) +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 17 17 17 + SRD grid size: request, actual (xyz) = 1, 0.99262829 0.99262829 0.99262829 + SRD per actual grid cell = -3.9971745 + SRD viscosity = -34.162587 + big/SRD mass density ratio = -3.3753691 +WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809) +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (src/SRD/fix_srd.cpp:2832) + # of rescaled SRD velocities = 0 + ave/max small velocity = 19.970837 35.150443 + ave/max big velocity = 0 0 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 16.874681, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton + stencil: half/multi/3d + bin: multi +Per MPI rank memory allocation (min/avg/max) = 184.3 | 184.9 | 185.4 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 0 0 1.4502537 0 -0.15949051 0 0 + 100 0.39689465 1.1495173 0.26931663 1.0004927 1.1170389 279 + 200 0.82155086 1.0684809 0.60689485 0.81307973 1.0433122 467 + 300 1.3210872 1.0334277 1.0368935 1.0853416 0.99443391 621 + 400 1.9755695 1.0149146 1.6438403 1.7258285 0.9925525 788 + 500 3.0111365 1.0121291 2.4285289 2.5210058 0.99688885 922 + 600 4.5413799 1.014305 3.4727946 3.8290233 0.99002027 1063 + 700 6.6071849 1.0062952 4.9025772 3.9595327 0.99573591 1186 + 800 7.6256618 1.0151252 5.3662442 5.0088255 0.99640985 1371 + 900 8.1578206 1.0148959 5.7716683 6.6059298 0.96053165 1555 + 1000 10.749617 1.0282309 7.6209538 11.277602 1.0012602 1844 +Loop time of 28.4136 on 4 procs for 1000 steps with 16271 atoms + +Performance: 3040.793 tau/day, 35.194 timesteps/s, 572.647 katom-step/s +98.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 12.454 | 15.242 | 17.781 | 48.4 | 53.64 +Neigh | 0.093078 | 0.094516 | 0.097759 | 0.6 | 0.33 +Comm | 0.48732 | 2.9927 | 5.7363 | 107.5 | 10.53 +Output | 0.00080706 | 0.0008431 | 0.00086933 | 0.0 | 0.00 +Modify | 10.015 | 10.063 | 10.111 | 1.4 | 35.42 +Other | | 0.02046 | | | 0.07 + +Nlocal: 4067.75 ave 4467 max 3606 min +Histogram: 1 0 0 0 1 0 1 0 0 1 +Nghost: 2313.5 ave 2327 max 2296 min +Histogram: 1 0 0 0 0 1 0 1 0 1 +Neighs: 24883 ave 26066 max 24145 min +Histogram: 2 0 0 0 0 1 0 0 0 1 + +Total # of neighbors = 99532 +Ave neighs/atom = 6.1171409 +Neighbor list builds = 70 +Dangerous builds = 0 + +#undump 1 +#undump 2 +unfix 3 + +change_box all triclinic +Changing box ... + triclinic box = (-6.7498724 -6.7498724 -6.7498724) to (6.7498724 6.7498724 6.7498724) with tilt (0 0 0) + +fix 2 small srd 20 big 1.0 1.0 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes inside ignore + +#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz +#dump 2 all custom 500 dump2.tri.srd id type # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] # c_10[7] c_10[8] c_10[9] + +fix 3 all deform 1 xy erate 0.05 units box remap v + +run 2000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +SRD info: + SRD/big particles = 14771 1500 + big particle diameter max/min = 2.9202881 0.87320391 + SRD temperature & lamda = 1 0.2 + SRD max distance & max velocity = 0.8 40 + SRD grid counts: 13 13 13 + SRD grid size: request, actual (xyz) = 1, 1.0384419 1.0384419 1.0384419 + SRD per actual grid cell = -2.775698 + SRD viscosity = -12.180602 + big/SRD mass density ratio = -5.5653033 +WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809) +WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830) +WARNING: Fix srd viscosity < 0.0 due to low SRD density (src/SRD/fix_srd.cpp:2832) + # of rescaled SRD velocities = 3 + ave/max small velocity = 16.10299 40 + ave/max big velocity = 2.0311414 11.34118 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.8 + ghost atom cutoff = 3.8 + binsize = 13.499745, bins = 1 1 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tri/lj, perpetual + attributes: half, newton on + pair build: half/multi/atomonly/newton/tri + stencil: half/multi/3d/tri + bin: multi +Per MPI rank memory allocation (min/avg/max) = 148.8 | 149.5 | 150 Mbytes + Step f_1 c_tsmall Temp Press f_2[9] f_2[4] + 1000 10.749616 1.0167438 7.6203704 5.4893075 0 0 + 1100 9.0727748 1.003438 6.1822573 8.6707036 1 1339 + 1200 7.1960998 1.0003968 4.8077632 6.7809972 1 1039 + 1300 6.2680889 1.0011134 4.3139658 8.2260362 1 861 + 1400 5.8199503 1.0024475 3.9876867 7.0322957 1 692 + 1500 5.399935 0.99757802 3.4552534 7.905565 1 577 + 1600 5.0830248 1.0023727 3.1330433 7.6897887 1 479 + 1700 4.8728937 1.0027203 3.0838267 7.606406 1 389 + 1800 4.8443541 1.0018057 3.115321 7.4547572 1 317 + 1900 5.0622362 1.0007126 2.9336473 6.514338 1 268 + 2000 5.022699 1.0030275 3.1244763 7.2999286 1 223 + 2100 4.4605894 1.0019457 2.9262733 8.3475145 1 196 + 2200 4.6544992 1.0023701 3.0140329 7.3670747 1 164 + 2300 4.1954825 1.0012089 2.5802739 7.5553707 1 142 + 2400 4.0806819 1.0000292 2.6492187 7.5648723 1 122 + 2500 3.7437189 0.99949605 2.3660722 8.2155316 1 104 + 2600 4.2333926 1.0002823 2.5704515 7.2839635 1 106 + 2700 3.7542455 1.001394 2.4146222 6.3785983 1 86 + 2800 3.4011329 0.99832028 2.141193 6.3869497 1 78 + 2900 3.4579019 1.0007319 2.1839274 6.241817 1 64 + 3000 3.6128019 1.0017345 2.2982426 5.8975992 1 55 +Loop time of 67.0194 on 4 procs for 2000 steps with 16271 atoms + +Performance: 2578.358 tau/day, 29.842 timesteps/s, 485.561 katom-step/s +98.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 | 36.774 | 43.583 | 50.126 | 71.5 | 65.03 +Neigh | 0.29299 | 0.3134 | 0.32399 | 2.2 | 0.47 +Comm | 0.75102 | 7.2688 | 14.075 | 174.8 | 10.85 +Output | 0.0016347 | 0.0017229 | 0.0018802 | 0.2 | 0.00 +Modify | 15.794 | 15.808 | 15.828 | 0.3 | 23.59 +Other | | 0.04379 | | | 0.07 + +Nlocal: 4067.75 ave 4560 max 3583 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 2256.75 ave 2292 max 2241 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Neighs: 23706 ave 24669 max 22450 min +Histogram: 1 0 0 0 0 0 2 0 0 1 + +Total # of neighbors = 94824 +Ave neighs/atom = 5.8277918 +Neighbor list builds = 108 +Dangerous builds = 0 +Total wall time: 0:01:36 diff --git a/examples/COUPLE/plugin/liblammpsplugin.c b/examples/COUPLE/plugin/liblammpsplugin.c index 5228e07e9c2..011c3202546 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.c +++ b/examples/COUPLE/plugin/liblammpsplugin.c @@ -110,6 +110,8 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(extract_variable); ADDSYM(extract_variable_datatype); ADDSYM(set_variable); + ADDSYM(set_string_variable); + ADDSYM(set_internal_variable); ADDSYM(variable_info); ADDSYM(gather_atoms); diff --git a/examples/COUPLE/plugin/liblammpsplugin.h b/examples/COUPLE/plugin/liblammpsplugin.h index 92398dfb271..1d647e8e934 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.h +++ b/examples/COUPLE/plugin/liblammpsplugin.h @@ -152,9 +152,11 @@ struct _liblammpsplugin { void *(*extract_compute)(void *, const char *, int, int); void *(*extract_fix)(void *, const char *, int, int, int, int); - void *(*extract_variable)(void *, const char *, char *); + void *(*extract_variable)(void *, const char *, const char *); int (*extract_variable_datatype)(void *, const char *); - int (*set_variable)(void *, char *, char *); + int (*set_variable)(void *, const char *, const char *); + int (*set_string_variable)(void *, const char *, const char *); + int (*set_internal_variable)(void *, const char *, double); int (*variable_info)(void *, int, char *, int); void (*gather_atoms)(void *, const char *, int, int, void *); diff --git a/examples/PACKAGES/cgdna/util/generate.py b/examples/PACKAGES/cgdna/util/generate.py index cd7465acdb9..e85661abb1e 100644 --- a/examples/PACKAGES/cgdna/util/generate.py +++ b/examples/PACKAGES/cgdna/util/generate.py @@ -22,22 +22,26 @@ """ Import basic modules """ + +# for python2/3 compatibility +from __future__ import print_function + import sys, os, timeit from timeit import default_timer as timer start_time = timer() """ -Try to import numpy; if failed, import a local version mynumpy +Try to import numpy; if failed, import a local version mynumpy which needs to be provided """ try: import numpy as np except: - print >> sys.stderr, "numpy not found. Exiting." + print("numpy not found. Exiting.", file=sys.stderr) sys.exit(1) """ -Check that the required arguments (box offset and size in simulation units +Check that the required arguments (box offset and size in simulation units and the sequence file were provided """ try: @@ -45,8 +49,8 @@ box_length = float(sys.argv[2]) infile = sys.argv[3] except: - print >> sys.stderr, "Usage: %s <%s> <%s> <%s>" % (sys.argv[0], \ - "box offset", "box length", "file with sequences") + print( "Usage: %s <%s> <%s> <%s>" % (sys.argv[0], \ + "box offset", "box length", "file with sequences"), file=sys.stderr) sys.exit(1) box = np.array ([box_length, box_length, box_length]) @@ -57,8 +61,7 @@ inp = open (infile, 'r') inp.close() except: - print >> sys.stderr, "Could not open file '%s' for reading. \ - Aborting." % infile + print( "Could not open file '%s' for reading. Aborting." % infile, file=sys.stderr) sys.exit(2) # return parts of a string @@ -86,7 +89,7 @@ def partition(s, d): # center of the double strand CM_CENTER_DS = POS_BASE + 0.2 -# ideal distance between base sites of two nucleotides +# ideal distance between base sites of two nucleotides # which are to be base paired in a duplex BASE_BASE = 0.3897628551303122 @@ -118,7 +121,7 @@ def partition(s, d): bonds = [] -""" +""" Convert local body frame to quaternion DOF """ def exyz_to_quat (mya1, mya3): @@ -135,25 +138,25 @@ def exyz_to_quat (mya1, mya3): # compute other components from it if q0sq >= 0.25: - myquat[0] = np.sqrt(q0sq) - myquat[1] = (mya2[2] - mya3[1]) / (4.0*myquat[0]) - myquat[2] = (mya3[0] - mya1[2]) / (4.0*myquat[0]) - myquat[3] = (mya1[1] - mya2[0]) / (4.0*myquat[0]) + myquat[0] = np.sqrt(q0sq) + myquat[1] = (mya2[2] - mya3[1]) / (4.0*myquat[0]) + myquat[2] = (mya3[0] - mya1[2]) / (4.0*myquat[0]) + myquat[3] = (mya1[1] - mya2[0]) / (4.0*myquat[0]) elif q1sq >= 0.25: - myquat[1] = np.sqrt(q1sq) - myquat[0] = (mya2[2] - mya3[1]) / (4.0*myquat[1]) - myquat[2] = (mya2[0] + mya1[1]) / (4.0*myquat[1]) - myquat[3] = (mya1[2] + mya3[0]) / (4.0*myquat[1]) + myquat[1] = np.sqrt(q1sq) + myquat[0] = (mya2[2] - mya3[1]) / (4.0*myquat[1]) + myquat[2] = (mya2[0] + mya1[1]) / (4.0*myquat[1]) + myquat[3] = (mya1[2] + mya3[0]) / (4.0*myquat[1]) elif q2sq >= 0.25: - myquat[2] = np.sqrt(q2sq) - myquat[0] = (mya3[0] - mya1[2]) / (4.0*myquat[2]) - myquat[1] = (mya2[0] + mya1[1]) / (4.0*myquat[2]) - myquat[3] = (mya3[1] + mya2[2]) / (4.0*myquat[2]) + myquat[2] = np.sqrt(q2sq) + myquat[0] = (mya3[0] - mya1[2]) / (4.0*myquat[2]) + myquat[1] = (mya2[0] + mya1[1]) / (4.0*myquat[2]) + myquat[3] = (mya3[1] + mya2[2]) / (4.0*myquat[2]) elif q3sq >= 0.25: - myquat[3] = np.sqrt(q3sq) - myquat[0] = (mya1[1] - mya2[0]) / (4.0*myquat[3]) - myquat[1] = (mya3[0] + mya1[2]) / (4.0*myquat[3]) - myquat[2] = (mya3[1] + mya2[2]) / (4.0*myquat[3]) + myquat[3] = np.sqrt(q3sq) + myquat[0] = (mya1[1] - mya2[0]) / (4.0*myquat[3]) + myquat[1] = (mya3[0] + mya1[2]) / (4.0*myquat[3]) + myquat[2] = (mya3[1] + mya2[2]) / (4.0*myquat[3]) norm = 1.0/np.sqrt(myquat[0]*myquat[0] + myquat[1]*myquat[1] + \ myquat[2]*myquat[2] + myquat[3]*myquat[3]) @@ -169,62 +172,62 @@ def exyz_to_quat (mya1, mya3): """ def add_strands (mynewpositions, mynewa1s, mynewa3s): overlap = False - - # This is a simple check for each of the particles where for previously - # placed particles i we check whether it overlaps with any of the + + # This is a simple check for each of the particles where for previously + # placed particles i we check whether it overlaps with any of the # newly created particles j - print >> sys.stdout, "## Checking for overlaps" + print( "## Checking for overlaps", file=sys.stdout) - for i in xrange(len(positions)): + for i in range(len(positions)): - p = positions[i] - pa1 = a1s[i] + p = positions[i] + pa1 = a1s[i] - for j in xrange (len(mynewpositions)): + for j in range (len(mynewpositions)): - q = mynewpositions[j] - qa1 = mynewa1s[j] + q = mynewpositions[j] + qa1 = mynewa1s[j] - # skip particles that are anyway too far away - dr = p - q - dr -= box * np.rint (dr / box) - if np.dot(dr, dr) > RC2: - continue + # skip particles that are anyway too far away + dr = p - q + dr -= box * np.rint(dr / box) + if np.dot(dr, dr) > RC2: + continue - # base site and backbone site of the two particles + # base site and backbone site of the two particles p_pos_back = p + pa1 * POS_BACK p_pos_base = p + pa1 * POS_BASE q_pos_back = q + qa1 * POS_BACK q_pos_base = q + qa1 * POS_BASE - # check for no overlap between the two backbone sites + # check for no overlap between the two backbone sites dr = p_pos_back - q_pos_back - dr -= box * np.rint (dr / box) + dr -= box * np.rint(dr / box) if np.dot(dr, dr) < RC2_BACK: overlap = True - # check for no overlap between the two base sites + # check for no overlap between the two base sites dr = p_pos_base - q_pos_base - dr -= box * np.rint (dr / box) + dr -= box * np.rint(dr / box) if np.dot(dr, dr) < RC2_BASE: overlap = True - # check for no overlap between backbone site of particle p - # with base site of particle q + # check for no overlap between backbone site of particle p + # with base site of particle q dr = p_pos_back - q_pos_base dr -= box * np.rint (dr / box) if np.dot(dr, dr) < RC2_BACK_BASE: overlap = True - # check for no overlap between base site of particle p and - # backbone site of particle q + # check for no overlap between base site of particle p and + # backbone site of particle q dr = p_pos_base - q_pos_back dr -= box * np.rint (dr / box) if np.dot(dr, dr) < RC2_BACK_BASE: overlap = True - # exit if there is an overlap + # exit if there is an overlap if overlap: return False @@ -237,10 +240,10 @@ def add_strands (mynewpositions, mynewa1s, mynewa3s): a1s.append (p) for p in mynewa3s: a3s.append (p) - # calculate quaternion from local body frame and append - for ia in xrange(len(mynewpositions)): - mynewquaternions = exyz_to_quat(mynewa1s[ia],mynewa3s[ia]) - quaternions.append(mynewquaternions) + # calculate quaternion from local body frame and append + for ia in range(len(mynewpositions)): + mynewquaternions = exyz_to_quat(mynewa1s[ia],mynewa3s[ia]) + quaternions.append(mynewquaternions) return True @@ -281,7 +284,7 @@ def get_rotation_matrix(axis, anglest): [olc*x*z-st*y, olc*y*z+st*x, olc*z*z+ct]]) """ -Generates the position and orientation vectors of a +Generates the position and orientation vectors of a (single or double) strand from a sequence string """ def generate_strand(bp, sequence=None, start_pos=np.array([0, 0, 0]), \ @@ -295,76 +298,75 @@ def generate_strand(bp, sequence=None, start_pos=np.array([0, 0, 0]), \ # overall direction of the helix dir = np.array(dir, dtype=float) if sequence == None: - sequence = np.random.randint(1, 5, bp) + sequence = np.random.randint(1, 5, bp) - # the elseif here is most likely redundant + # the elseif here is most likely redundant elif len(sequence) != bp: - n = bp - len(sequence) - sequence += np.random.randint(1, 5, n) - print >> sys.stderr, "sequence is too short, adding %d random bases" % n + n = bp - len(sequence) + sequence += np.random.randint(1, 5, n) + print( "sequence is too short, adding %d random bases" % n, file=sys.stderr) # normalize direction dir_norm = np.sqrt(np.dot(dir,dir)) if dir_norm < 1e-10: - print >> sys.stderr, "direction must be a valid vector, \ - defaulting to (0, 0, 1)" - dir = np.array([0, 0, 1]) + print( "direction must be a valid vector, defaulting to (0, 0, 1)", file=sys.stderr) + dir = np.array([0, 0, 1]) else: dir /= dir_norm # find a vector orthogonal to dir to act as helix direction, # if not provided switch off random orientation if perp is None or perp is False: - v1 = np.random.random_sample(3) - v1 -= dir * (np.dot(dir, v1)) - v1 /= np.sqrt(sum(v1*v1)) + v1 = np.random.random_sample(3) + v1 -= dir * (np.dot(dir, v1)) + v1 /= np.sqrt(sum(v1*v1)) else: - v1 = perp; + v1 = perp; # generate rotational matrix representing the overall rotation of the helix R0 = get_rotation_matrix(dir, rot) - + # rotation matrix corresponding to one step along the helix R = get_rotation_matrix(dir, [1, "bp"]) - # set the vector a1 (backbone to base) to v1 + # set the vector a1 (backbone to base) to v1 a1 = v1 - - # apply the global rotation to a1 + + # apply the global rotation to a1 a1 = np.dot(R0, a1) - + # set the position of the fist backbone site to start_pos rb = np.array(start_pos) - + # set a3 to the direction of the helix a3 = dir for i in range(bp): # work out the position of the centre of mass of the nucleotide - rcdm = rb - CM_CENTER_DS * a1 - - # append to newpositions - mynewpositions.append(rcdm) - mynewa1s.append(a1) - mynewa3s.append(a3) - - # if we are not at the end of the helix, we work out a1 and rb for the - # next nucleotide along the helix - if i != bp - 1: - a1 = np.dot(R, a1) - rb += a3 * BASE_BASE - - # if we are working on a double strand, we do a cycle similar + rcdm = rb - CM_CENTER_DS * a1 + + # append to newpositions + mynewpositions.append(rcdm) + mynewa1s.append(a1) + mynewa3s.append(a3) + + # if we are not at the end of the helix, we work out a1 and rb for the + # next nucleotide along the helix + if i != bp - 1: + a1 = np.dot(R, a1) + rb += a3 * BASE_BASE + + # if we are working on a double strand, we do a cycle similar # to the previous one but backwards if double == True: - a1 = -a1 - a3 = -dir - R = R.transpose() - for i in range(bp): - rcdm = rb - CM_CENTER_DS * a1 - mynewpositions.append (rcdm) - mynewa1s.append (a1) - mynewa3s.append (a3) - a1 = np.dot(R, a1) - rb += a3 * BASE_BASE + a1 = -a1 + a3 = -dir + R = R.transpose() + for i in range(bp): + rcdm = rb - CM_CENTER_DS * a1 + mynewpositions.append (rcdm) + mynewa1s.append (a1) + mynewa3s.append (a3) + a1 = np.dot(R, a1) + rb += a3 * BASE_BASE assert (len (mynewpositions) > 0) @@ -391,10 +393,10 @@ def read_strands(filename): try: infile = open (filename) except: - print >> sys.stderr, "Could not open file '%s'. Aborting." % filename + print( "Could not open file '%s'. Aborting." % filename, file=sys.stderr ) sys.exit(2) - # This block works out the number of nucleotides and strands by reading + # This block works out the number of nucleotides and strands by reading # the number of non-empty lines in the input file and the number of letters, # taking the possible DOUBLE keyword into account. nstrands, nnucl, nbonds = 0, 0, 0 @@ -406,30 +408,29 @@ def read_strands(filename): if line[:6] == 'DOUBLE': line = line.split()[1] length = len(line) - print >> sys.stdout, "## Found duplex of %i base pairs" % length + print( "## Found duplex of %i base pairs" % length, file=sys.stdout) nnucl += 2*length nstrands += 2 - nbonds += (2*length-2) + nbonds += (2*length-2) else: line = line.split()[0] length = len(line) - print >> sys.stdout, \ - "## Found single strand of %i bases" % length + print( "## Found single strand of %i bases" % length, file=sys.stdout) nnucl += length nstrands += 1 - nbonds += length-1 + nbonds += length-1 # rewind the sequence input file infile.seek(0) - print >> sys.stdout, "## nstrands, nnucl = ", nstrands, nnucl + print( "## nstrands, nnucl = ", nstrands, nnucl, file=sys.stdout) # generate the data file in LAMMPS format try: out = open ("data.oxdna", "w") except: - print >> sys.stderr, "Could not open data file for writing. Aborting." + print( "Could not open data file for writing. Aborting.", file=sys.stderr) sys.exit(2) - + lines = infile.readlines() nlines = len(lines) i = 1 @@ -440,115 +441,114 @@ def read_strands(filename): line = line.upper().strip() # skip empty lines - if len(line) == 0: - i += 1 - continue + if len(line) == 0: + i += 1 + continue - # block for duplexes: last argument of the generate function - # is set to 'True' + # block for duplexes: last argument of the generate function + # is set to 'True' if line[:6] == 'DOUBLE': line = line.split()[1] length = len(line) seq = [(base_to_number[x]) for x in line] - myns += 1 - for b in xrange(length): - basetype.append(seq[b]) - strandnum.append(myns) - - for b in xrange(length-1): - bondpair = [noffset + b, noffset + b + 1] - bonds.append(bondpair) - noffset += length - - # create the sequence of the second strand as made of - # complementary bases - seq2 = [5-s for s in seq] - seq2.reverse() - - myns += 1 - for b in xrange(length): - basetype.append(seq2[b]) - strandnum.append(myns) - - for b in xrange(length-1): - bondpair = [noffset + b, noffset + b + 1] - bonds.append(bondpair) - noffset += length - - print >> sys.stdout, "## Created duplex of %i bases" % (2*length) - - # generate random position of the first nucleotide + myns += 1 + for b in range(length): + basetype.append(seq[b]) + strandnum.append(myns) + + for b in range(length-1): + bondpair = [noffset + b, noffset + b + 1] + bonds.append(bondpair) + noffset += length + + # create the sequence of the second strand as made of + # complementary bases + seq2 = [5-s for s in seq] + seq2.reverse() + + myns += 1 + for b in range(length): + basetype.append(seq2[b]) + strandnum.append(myns) + + for b in range(length-1): + bondpair = [noffset + b, noffset + b + 1] + bonds.append(bondpair) + noffset += length + + print( "## Created duplex of %i bases" % (2*length), file=sys.stdout) + + # generate random position of the first nucleotide cdm = box_offset + np.random.random_sample(3) * box - # generate the random direction of the helix + # generate the random direction of the helix axis = np.random.random_sample(3) axis /= np.sqrt(np.dot(axis, axis)) - # use the generate function defined above to create - # the position and orientation vector of the strand + # use the generate function defined above to create + # the position and orientation vector of the strand newpositions, newa1s, newa3s = generate_strand(len(line), \ - sequence=seq, dir=axis, start_pos=cdm, double=True) + sequence=seq, dir=axis, start_pos=cdm, double=True) # generate a new position for the strand until it does not overlap - # with anything already present - start = timer() + # with anything already present + start = timer() while not add_strands(newpositions, newa1s, newa3s): cdm = box_offset + np.random.random_sample(3) * box axis = np.random.random_sample(3) axis /= np.sqrt(np.dot(axis, axis)) newpositions, newa1s, newa3s = generate_strand(len(line), \ - sequence=seq, dir=axis, start_pos=cdm, double=True) - print >> sys.stdout, "## Trying %i" % i - end = timer() - print >> sys.stdout, "## Added duplex of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \ - (2*length, i, nlines, end-start, len(positions), nnucl) - - # block for single strands: last argument of the generate function - # is set to 'False' + sequence=seq, dir=axis, start_pos=cdm, double=True) + print( "## Trying %i" % i, file=sys.stdout) + end = timer() + print( "## Added duplex of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \ + (2*length, i, nlines, end-start, len(positions), nnucl), file=sys.stdout) + + # block for single strands: last argument of the generate function + # is set to 'False' else: length = len(line) seq = [(base_to_number[x]) for x in line] - myns += 1 - for b in xrange(length): - basetype.append(seq[b]) - strandnum.append(myns) + myns += 1 + for b in range(length): + basetype.append(seq[b]) + strandnum.append(myns) - for b in xrange(length-1): - bondpair = [noffset + b, noffset + b + 1] - bonds.append(bondpair) - noffset += length + for b in range(length-1): + bondpair = [noffset + b, noffset + b + 1] + bonds.append(bondpair) + noffset += length - # generate random position of the first nucleotide + # generate random position of the first nucleotide cdm = box_offset + np.random.random_sample(3) * box - # generate the random direction of the helix + # generate the random direction of the helix axis = np.random.random_sample(3) axis /= np.sqrt(np.dot(axis, axis)) - print >> sys.stdout, \ - "## Created single strand of %i bases" % length + print("## Created single strand of %i bases" % length, file=sys.stdout) newpositions, newa1s, newa3s = generate_strand(length, \ sequence=seq, dir=axis, start_pos=cdm, double=False) - start = timer() + start = timer() while not add_strands(newpositions, newa1s, newa3s): cdm = box_offset + np.random.random_sample(3) * box axis = np.random.random_sample(3) - axis /= np.sqrt(np.dot(axis, axis)) + axis /= np.sqrt(np.dot(axis, axis)) newpositions, newa1s, newa3s = generate_strand(length, \ - sequence=seq, dir=axis, start_pos=cdm, double=False) + sequence=seq, dir=axis, start_pos=cdm, double=False) print >> sys.stdout, "## Trying %i" % (i) - end = timer() - print >> sys.stdout, "## Added single strand of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \ - (length, i, nlines, end-start,len(positions), nnucl) + end = timer() + print( "## Added single strand of %i bases (line %i/%i) in %.2fs, now at %i/%i" % \ + (length, i, nlines, end-start,len(positions), nnucl), file=sys.stdout) i += 1 # sanity check if not len(positions) == nnucl: - print len(positions), nnucl + print( len(positions), nnucl ) raise AssertionError out.write('# LAMMPS data file\n') @@ -580,44 +580,41 @@ def read_strands(filename): out.write('Atoms\n') out.write('\n') - for i in xrange(nnucl): - out.write('%d %d %22.15le %22.15le %22.15le %d 1 1\n' \ - % (i+1, basetype[i], \ - positions[i][0], positions[i][1], positions[i][2], \ - strandnum[i])) + for i in range(nnucl): + out.write('%d %d %22.15le %22.15le %22.15le %d 1 1\n' \ + % (i+1, basetype[i], positions[i][0], positions[i][1], positions[i][2], strandnum[i])) out.write('\n') out.write('# Atom-ID, translational, rotational velocity\n') out.write('Velocities\n') out.write('\n') - for i in xrange(nnucl): - out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \ - % (i+1,0.0,0.0,0.0,0.0,0.0,0.0)) + for i in range(nnucl): + out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \ + % (i+1,0.0,0.0,0.0,0.0,0.0,0.0)) out.write('\n') out.write('# Atom-ID, shape, quaternion\n') out.write('Ellipsoids\n') out.write('\n') - for i in xrange(nnucl): - out.write(\ - "%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \ - % (i+1,1.1739845031423408,1.1739845031423408,1.1739845031423408, \ - quaternions[i][0],quaternions[i][1], quaternions[i][2],quaternions[i][3])) - + for i in range(nnucl): + out.write("%d %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le %22.15le\n" \ + % (i+1,1.1739845031423408,1.1739845031423408,1.1739845031423408, \ + quaternions[i][0],quaternions[i][1], quaternions[i][2],quaternions[i][3])) + out.write('\n') out.write('# Bond topology\n') out.write('Bonds\n') out.write('\n') - for i in xrange(nbonds): - out.write("%d %d %d %d\n" % (i+1,1,bonds[i][0],bonds[i][1])) + for i in range(nbonds): + out.write("%d %d %d %d\n" % (i+1,1,bonds[i][0],bonds[i][1])) out.close() - print >> sys.stdout, "## Wrote data to 'data.oxdna'" - print >> sys.stdout, "## DONE" + print("## Wrote data to 'data.oxdna'", file=sys.stdout) + print("## DONE", file=sys.stdout) # call the above main() function, which executes the program read_strands (infile) @@ -627,4 +624,6 @@ def read_strands(filename): hours = runtime/3600 minutes = (runtime-np.rint(hours)*3600)/60 seconds = (runtime-np.rint(hours)*3600-np.rint(minutes)*60)%60 -print >> sys.stdout, "## Total runtime %ih:%im:%.2fs" % (hours,minutes,seconds) +print( "## Total runtime %ih:%im:%.2fs" % (hours,minutes,seconds), file=sys.stdout) + + diff --git a/examples/PACKAGES/cgdna/util/generate_simple.py b/examples/PACKAGES/cgdna/util/generate_simple.py index 33cf1ee7f5f..7702bfc7f54 100644 --- a/examples/PACKAGES/cgdna/util/generate_simple.py +++ b/examples/PACKAGES/cgdna/util/generate_simple.py @@ -1,5 +1,8 @@ # Setup tool for oxDNA input in LAMMPS format. +# for python2/3 compatibility +from __future__ import print_function + import math,numpy as np,sys,os # system size @@ -250,59 +253,59 @@ def duplex_array(): qrot3=math.sin(0.5*twist) for letter in strand[2]: - temp1=[] - temp2=[] + temp1=[] + temp2=[] - temp1.append(nt2num[letter]) - temp2.append(compnt2num[letter]) + temp1.append(nt2num[letter]) + temp2.append(compnt2num[letter]) - temp1.append([posx1,posy1,posz1]) - temp2.append([posx2,posy2,posz2]) + temp1.append([posx1,posy1,posz1]) + temp2.append([posx2,posy2,posz2]) - vel=[0,0,0,0,0,0] - temp1.append(vel) - temp2.append(vel) + vel=[0,0,0,0,0,0] + temp1.append(vel) + temp2.append(vel) - temp1.append(shape) - temp2.append(shape) + temp1.append(shape) + temp2.append(shape) - temp1.append(quat1) - temp2.append(quat2) + temp1.append(quat1) + temp2.append(quat2) - quat1_0 = quat1[0]*qrot0 - quat1[1]*qrot1 - quat1[2]*qrot2 - quat1[3]*qrot3 - quat1_1 = quat1[0]*qrot1 + quat1[1]*qrot0 + quat1[2]*qrot3 - quat1[3]*qrot2 - quat1_2 = quat1[0]*qrot2 + quat1[2]*qrot0 + quat1[3]*qrot1 - quat1[1]*qrot3 - quat1_3 = quat1[0]*qrot3 + quat1[3]*qrot0 + quat1[1]*qrot2 + quat1[2]*qrot1 + quat1_0 = quat1[0]*qrot0 - quat1[1]*qrot1 - quat1[2]*qrot2 - quat1[3]*qrot3 + quat1_1 = quat1[0]*qrot1 + quat1[1]*qrot0 + quat1[2]*qrot3 - quat1[3]*qrot2 + quat1_2 = quat1[0]*qrot2 + quat1[2]*qrot0 + quat1[3]*qrot1 - quat1[1]*qrot3 + quat1_3 = quat1[0]*qrot3 + quat1[3]*qrot0 + quat1[1]*qrot2 + quat1[2]*qrot1 - quat1 = [quat1_0,quat1_1,quat1_2,quat1_3] + quat1 = [quat1_0,quat1_1,quat1_2,quat1_3] - posx1=axisx - dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2) - posy1=axisy - dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3])) - posz1=posz1+risez + posx1=axisx - dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2) + posy1=axisy - dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3])) + posz1=posz1+risez - quat2_0 = quat2[0]*qrot0 - quat2[1]*qrot1 - quat2[2]*qrot2 + quat2[3]*qrot3 - quat2_1 = quat2[0]*qrot1 + quat2[1]*qrot0 - quat2[2]*qrot3 - quat2[3]*qrot2 - quat2_2 = quat2[0]*qrot2 + quat2[2]*qrot0 + quat2[3]*qrot1 + quat2[1]*qrot3 - quat2_3 =-quat2[0]*qrot3 + quat2[3]*qrot0 + quat2[1]*qrot2 + quat2[2]*qrot1 + quat2_0 = quat2[0]*qrot0 - quat2[1]*qrot1 - quat2[2]*qrot2 + quat2[3]*qrot3 + quat2_1 = quat2[0]*qrot1 + quat2[1]*qrot0 - quat2[2]*qrot3 - quat2[3]*qrot2 + quat2_2 = quat2[0]*qrot2 + quat2[2]*qrot0 + quat2[3]*qrot1 + quat2[1]*qrot3 + quat2_3 =-quat2[0]*qrot3 + quat2[3]*qrot0 + quat2[1]*qrot2 + quat2[2]*qrot1 - quat2 = [quat2_0,quat2_1,quat2_2,quat2_3] + quat2 = [quat2_0,quat2_1,quat2_2,quat2_3] - posx2=axisx + dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2) - posy2=axisy + dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3])) - posz2=posz1 + posx2=axisx + dcomh*(quat1[0]**2+quat1[1]**2-quat1[2]**2-quat1[3]**2) + posy2=axisy + dcomh*(2*(quat1[1]*quat1[2]+quat1[0]*quat1[3])) + posz2=posz1 - if (len(nucleotide)+1 > strandstart): - topology.append([1,len(nucleotide),len(nucleotide)+1]) - comptopo.append([1,len(nucleotide)+len(strand[2]),len(nucleotide)+len(strand[2])+1]) + if (len(nucleotide)+1 > strandstart): + topology.append([1,len(nucleotide),len(nucleotide)+1]) + comptopo.append([1,len(nucleotide)+len(strand[2]),len(nucleotide)+len(strand[2])+1]) - nucleotide.append(temp1) - compstrand.append(temp2) + nucleotide.append(temp1) + compstrand.append(temp2) for ib in range(len(compstrand)): - nucleotide.append(compstrand[len(compstrand)-1-ib]) + nucleotide.append(compstrand[len(compstrand)-1-ib]) for ib in range(len(comptopo)): - topology.append(comptopo[ib]) + topology.append(comptopo[ib]) return diff --git a/examples/PACKAGES/electrode/madelung/eval.py b/examples/PACKAGES/electrode/madelung/eval.py index 2f5a355d9bc..feda0e384ed 100644 --- a/examples/PACKAGES/electrode/madelung/eval.py +++ b/examples/PACKAGES/electrode/madelung/eval.py @@ -1,7 +1,7 @@ #!/usr/env/python3 -import sys import os.path as op +import sys def rel_error(out, ref): @@ -49,5 +49,5 @@ def rel_error(out, ref): error = rel_error(out, ref) lines.append(f"{label}: {out:.5f}, {error:.5f}\n") -with open("madelung.txt", 'a') as f: +with open("madelung.txt", "a") as f: f.writelines(lines) diff --git a/examples/PACKAGES/electrode/madelung/in.eta b/examples/PACKAGES/electrode/madelung/in.eta new file mode 100644 index 00000000000..3a45bb1bf5d --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.eta @@ -0,0 +1,14 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 2.0 +set group top d_eta 2.0 +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.eta_cg b/examples/PACKAGES/electrode/madelung/in.eta_cg new file mode 100644 index 00000000000..5ac8cddf17d --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.eta_cg @@ -0,0 +1,14 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 0.5 +set group top d_eta 3.0 +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta algo cg 1e-6 + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/in.eta_mix b/examples/PACKAGES/electrode/madelung/in.eta_mix new file mode 100644 index 00000000000..d00e008fa43 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/in.eta_mix @@ -0,0 +1,14 @@ +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 0.5 +set group top d_eta 3.0 +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv + +run 0 + diff --git a/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta.g++.1 b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta.g++.1 new file mode 100644 index 00000000000..daf0563799c --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta.g++.1 @@ -0,0 +1,138 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-668-g5b6c0c6b56) + using 1 OpenMP thread(s) per MPI task +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 2.0 +Setting atom values ... + 1 settings made for d_eta +set group top d_eta 2.0 +Setting atom values ... + 1 settings made for d_eta +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 3.8272011e-06 + estimated relative force accuracy = 1.1525502e-08 + KSpace vectors: actual max1d max3d = 52 50 515150 + kxmax kymax kzmax = 1 1 50 +Generated 3 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:965) +139.943964815502, 0.279214485147238 +Per MPI rank memory allocation (min/avg/max) = 144.2 | 144.2 | 144.2 Mbytes + Step PotEng c_qbot c_qtop + 0 139.94396 -0.27921449 0.27921449 +Loop time of 2.191e-06 on 1 procs for 0 steps with 4 atoms + +91.3% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.191e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_cg.g++.1 b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_cg.g++.1 new file mode 100644 index 00000000000..edb2e434e66 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_cg.g++.1 @@ -0,0 +1,139 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-668-g5b6c0c6b56) + using 1 OpenMP thread(s) per MPI task +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 0.5 +Setting atom values ... + 1 settings made for d_eta +set group top d_eta 3.0 +Setting atom values ... + 1 settings made for d_eta +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta algo cg 1e-6 +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 3.8272011e-06 + estimated relative force accuracy = 1.1525502e-08 + KSpace vectors: actual max1d max3d = 52 50 515150 + kxmax kymax kzmax = 1 1 50 +Generated 3 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:965) +165.519373910316, 0.29521534552818 +Per MPI rank memory allocation (min/avg/max) = 144.2 | 144.2 | 144.2 Mbytes + Step PotEng c_qbot c_qtop + 0 165.51937 -0.29521535 0.29521535 +Loop time of 2.797e-06 on 1 procs for 0 steps with 4 atoms + +71.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.797e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Average conjugate gradient steps: 1 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_mix.g++.1 b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_mix.g++.1 new file mode 100644 index 00000000000..51eda0d8703 --- /dev/null +++ b/examples/PACKAGES/electrode/madelung/log.19Feb2024.eta_mix.g++.1 @@ -0,0 +1,138 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-668-g5b6c0c6b56) + using 1 OpenMP thread(s) per MPI task +boundary p p f +kspace_style ewald/electrode 1.0e-8 +kspace_modify slab 8.0 # ew3dc + +include "settings.mod" # styles, computes, groups and fixes +# set boundary in main script because ffield is periodic +units real +# distribute electrode atoms among all processors: +if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2" + +atom_style full +pair_style lj/cut/coul/long 12 + +read_data "data.au-elyt" +Reading data file ... + orthogonal box = (0 0 -10) to (1 1 10) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 4 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.003 seconds + +group bot type 1 +1 atoms in group bot +group top type 2 +1 atoms in group top + +# get electrode charges +variable q atom q +compute qbot bot reduce sum v_q +compute qtop top reduce sum v_q + +compute compute_pe all pe +variable vpe equal c_compute_pe +variable charge equal c_qtop +fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv" + +thermo_style custom step pe c_qbot c_qtop +fix feta all property/atom d_eta ghost on +set group bot d_eta 0.5 +Setting atom values ... + 1 settings made for d_eta +set group top d_eta 3.0 +Setting atom values ... + 1 settings made for d_eta +fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv +2 atoms in group conp_group + +run 0 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix electrode command: + +@article{Ahrens2022 +author = {Ahrens-Iwers, Ludwig J.V. and Janssen, Mahijs and Tee, Shern R. and Mei{\ss}ner, Robert H.}, +doi = {10.1063/5.0099239}, +title = {{ELECTRODE: An electrochemistry package for LAMMPS}}, +journal = {The Journal of Chemical Physics}, +year = {2022} +volume = {157}, +pages = {084801}, +} +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Ewald/electrode initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) +WARNING: For better accuracy use 'pair_modify table 0' (src/kspace.cpp:365) + G vector (1/distance) = 0.32261103 + estimated absolute RMS force accuracy = 3.8272011e-06 + estimated relative force accuracy = 1.1525502e-08 + KSpace vectors: actual max1d max3d = 52 50 515150 + kxmax kymax kzmax = 1 1 50 +Generated 3 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 1 1 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard + (2) fix electrode/conp, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:965) +165.519373910316, 0.295215345528172 +Per MPI rank memory allocation (min/avg/max) = 144.2 | 144.2 | 144.2 Mbytes + Step PotEng c_qbot c_qtop + 0 165.51937 -0.29521535 0.29521535 +Loop time of 2.18e-06 on 1 procs for 0 steps with 4 atoms + +91.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0 | 0 | 0 | 0.0 | 0.00 +Kspace | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.18e-06 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3596 ave 3596 max 3596 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4790 ave 4790 max 4790 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4790 +Ave neighs/atom = 1197.5 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/electrode/madelung/plate_cap.py b/examples/PACKAGES/electrode/madelung/plate_cap.py index 62d52fe102a..fcca1668691 100755 --- a/examples/PACKAGES/electrode/madelung/plate_cap.py +++ b/examples/PACKAGES/electrode/madelung/plate_cap.py @@ -3,7 +3,6 @@ import numpy as np from scipy.special import erf -ETA = 2 SQRT2 = np.sqrt(2) COULOMB = 332.06371 # Coulomb constant in Lammps 'real' units QE2F = 23.060549 @@ -17,14 +16,14 @@ def lattice(length): return np.array(np.meshgrid(x, y)).T.reshape(-1, 2) -def a_element(r): +def a_element(r, eta): """Coulomb contribution of two Gaussians""" - return erf(ETA / SQRT2 * r) / r + return erf(eta * r) / r -def b_element(r, q): +def b_element(r, q, eta): """Coulomb contribution of a Gaussian with a point charge""" - return q * erf(ETA * r) / r + return q * erf(eta * r) / r a = 1 # nearest neighbor distance i.e. lattice constant / sqrt(2) @@ -36,59 +35,65 @@ def b_element(r, q): # distances to images within electrode and to opposite electrode distances = a * np.linalg.norm(lattice(LENGTH), axis=1) -opposite_distances = np.sqrt(np.square(distances) + distance_plates ** 2) - -# self interaction and within original box -A_11 = np.sqrt(2 / np.pi) * ETA -A_12 = erf(ETA * distance_plates / SQRT2) / distance_plates - -# interaction with periodic images -A_11 += 4 * np.sum(a_element(distances)) -A_12 += 4 * np.sum(a_element(opposite_distances)) -A = np.array([[A_11, A_12], [A_12, A_11]]) -inv = np.linalg.inv(A) -e = np.array([1, 1]) -inv -= np.matmul(inv, np.matmul(np.outer(e, e), inv)) / np.dot(e, np.dot(inv, e)) - -# electrode-electrolyte interaction -b = [] -for x in x_elec: - bi = 0 - for y, q in zip(x_elyt, q_elyt): - d = abs(y - x) - bi += b_element(d, q) - image_distances = np.sqrt(np.square(distances) + d ** 2) - bi += 4 * np.sum(b_element(image_distances, q)) - b.append(bi) -b = np.array(b) - -# electrolyte-electrolyte energy -elyt_11 = 4 * np.sum(1 / distances) -distance_elyt = x_elyt[1] - x_elyt[0] -elyt_12 = 1 / distance_elyt + 4 * np.sum( - 1 / np.sqrt(np.square(distances) + distance_elyt ** 2) -) -elyt = np.array([[elyt_11, elyt_12], [elyt_12, elyt_11]]) -energy_elyt = 0.5 * np.dot(q_elyt, np.dot(elyt, q_elyt)) - -# electrode charges and energy -q = np.dot(inv, v - b) -energy = COULOMB * (0.5 * np.dot(q, np.dot(A, q)) + np.dot(b, q) + energy_elyt) - -print( - "length, energy / kcal/mol, q1 / e, q2 / e, inv11 / A, inv12 / A, b1 / e/A, b2 / e/A" -) -print( - ", ".join( - [ - str(LENGTH), - f"{energy:.8f}", - f"{q[0]:.10f}", - f"{q[1]:.10f}", - f"{inv[0, 0]:.10f}", - f"{inv[0, 1]:.10f}", - f"{b[0]:.8f}", - f"{b[1]:.8f}", - ] +opposite_distances = np.sqrt(np.square(distances) + distance_plates**2) + +for name, eta_elec in [("", [2.0, 2.0]), ("_eta_mix", [0.5, 3.0])]: + eta_mix = np.prod(eta_elec) / np.sqrt(np.sum(np.square(eta_elec))) + # self interaction and within original box + A_11 = np.sqrt(2 / np.pi) * eta_elec[0] + A_22 = np.sqrt(2 / np.pi) * eta_elec[1] + A_12 = erf(eta_mix * distance_plates) / distance_plates + + # interaction with periodic images + A_11 += 4 * np.sum(a_element(distances, eta_elec[0] / SQRT2)) + A_22 += 4 * np.sum(a_element(distances, eta_elec[1] / SQRT2)) + A_12 += 4 * np.sum(a_element(opposite_distances, eta_mix)) + A = np.array([[A_11, A_12], [A_12, A_22]]) + inv = np.linalg.inv(A) + e = np.array([1, 1]) + inv -= np.matmul(inv, np.matmul(np.outer(e, e), inv)) / np.dot(e, np.dot(inv, e)) + + # electrode-electrolyte interaction + b = [] + for x, eta in zip(x_elec, eta_elec): + bi = 0 + for y, q in zip(x_elyt, q_elyt): + d = abs(y - x) + bi += b_element(d, q, eta) + image_distances = np.sqrt(np.square(distances) + d**2) + bi += 4 * np.sum(b_element(image_distances, q, eta)) + b.append(bi) + b = np.array(b) + + # electrolyte-electrolyte energy + elyt_11 = 4 * np.sum(1 / distances) + distance_elyt = x_elyt[1] - x_elyt[0] + elyt_12 = 1 / distance_elyt + 4 * np.sum( + 1 / np.sqrt(np.square(distances) + distance_elyt**2) ) -) + elyt = np.array([[elyt_11, elyt_12], [elyt_12, elyt_11]]) + energy_elyt = 0.5 * np.dot(q_elyt, np.dot(elyt, q_elyt)) + + # electrode charges and energy + q = np.dot(inv, v - b) + energy = COULOMB * (0.5 * np.dot(q, np.dot(A, q)) + np.dot(b, q) + energy_elyt) + + with open(f"plate_cap{name}.csv", "w") as f: + f.write( + "length, energy / kcal/mol, q1 / e, q2 / e, inv11 / A, inv12 / A, b1 / e/A, b2 / e/A\n" + ) + f.write( + ", ".join( + [ + str(LENGTH), + f"{energy:.8f}", + f"{q[0]:.10f}", + f"{q[1]:.10f}", + f"{inv[0, 0]:.10f}", + f"{inv[0, 1]:.10f}", + f"{b[0]:.8f}", + f"{b[1]:.8f}", + ] + ) + + "\n" + ) diff --git a/examples/PACKAGES/electrode/madelung/test.sh b/examples/PACKAGES/electrode/madelung/test.sh index edac04f5b1f..a558ee67110 100644 --- a/examples/PACKAGES/electrode/madelung/test.sh +++ b/examples/PACKAGES/electrode/madelung/test.sh @@ -7,17 +7,27 @@ if [ ! -f $lmpbin ]; then fi ref_out="plate_cap.csv" -if [ ! -f $ref_out ]; then +ref_mix_out="plate_cap_eta_mix.csv" +if [ ! -f $ref_out ] || [ ! -f $ref_mix_out ]; then echo "Generating reference data" - python3 plate_cap.py > $ref_out + python3 plate_cap.py fi echo "Running Lammps inputs" +# w/o eta mixing rm -rf madelung.txt && touch madelung.txt -for file in in.*; do +for file in in.eta in.ewald-ew3dc in.ewald-ew2d in.pppm-ew3dc in.cg; do printf "\n$file\n" >> madelung.txt rm -f out.csv inv.csv vec.csv $lmpbin -i $file &> /dev/null python3 eval.py $ref_out out.csv inv.csv vec.csv done + +# with eta mixing +for file in in.eta_mix in.eta_cg; do + printf "\n$file\n" >> madelung.txt + rm -f out.csv inv.csv vec.csv + $lmpbin -i $file &> /dev/null + python3 eval.py $ref_mix_out out.csv inv.csv vec.csv +done cat madelung.txt diff --git a/examples/PACKAGES/flow_gauss/in.GD b/examples/PACKAGES/flow_gauss/in.GD index bcff4d4c57b..a22b440eb67 100644 --- a/examples/PACKAGES/flow_gauss/in.GD +++ b/examples/PACKAGES/flow_gauss/in.GD @@ -68,7 +68,7 @@ variable Lx1 equal round(${Lx}/${aWall})*${aWall} #create simulation box variable lx2 equal ${Lx1}/2 variable ly2 equal ${Ly1}/2 -region simbox block -${lx2} ${lx2} -${ly2} ${ly2} 0 0.1 units box +region simbox block -${lx2} ${lx2} -${ly2} ${ly2} -0.1 0.1 units box create_box 2 simbox ##################################################################### diff --git a/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.1 b/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.1 new file mode 100644 index 00000000000..566ef572bc8 --- /dev/null +++ b/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.1 @@ -0,0 +1,941 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#LAMMPS input script +#in.GD +#see README for details + +############################################################################### +#initialize variables +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task + +#frequency for outputting info (timesteps) +variable dump_rate equal 50 +variable thermo_rate equal 10 + +#equilibration time (timesteps) +variable equil equal 1000 + +#stabilization time (timesteps to reach steady-state) +variable stabil equal 1000 + +#data collection time (timesteps) +variable run equal 2000 + +#length of pipe +variable L equal 30 + +#width of pipe +variable d equal 20 + +#flux (mass/sigma*tau) +variable J equal 0.1 + +#simulation box dimensions +variable Lx equal 100 +variable Ly equal 40 + +#bulk fluid density +variable dens equal 0.8 + +#lattice spacing for wall atoms +variable aWall equal 1.0 #1.7472 + +#timestep +variable ts equal 0.001 + +#temperature +variable T equal 2.0 + +#thermostat damping constant +variable tdamp equal ${ts}*100 +variable tdamp equal 0.001*100 + +units lj +dimension 2 +atom_style atomic + + +############################################################################### +#create box + +#create lattice with the spacing aWall +variable rhoWall equal ${aWall}^(-2) +variable rhoWall equal 1^(-2) +lattice sq ${rhoWall} +lattice sq 1 +Lattice spacing in x,y,z = 1 1 1 + +#modify input dimensions to be multiples of aWall +variable L1 equal round($L/${aWall})*${aWall} +variable L1 equal round(30/${aWall})*${aWall} +variable L1 equal round(30/1)*${aWall} +variable L1 equal round(30/1)*1 +variable d1 equal round($d/${aWall})*${aWall} +variable d1 equal round(20/${aWall})*${aWall} +variable d1 equal round(20/1)*${aWall} +variable d1 equal round(20/1)*1 +variable Ly1 equal round(${Ly}/${aWall})*${aWall} +variable Ly1 equal round(40/${aWall})*${aWall} +variable Ly1 equal round(40/1)*${aWall} +variable Ly1 equal round(40/1)*1 +variable Lx1 equal round(${Lx}/${aWall})*${aWall} +variable Lx1 equal round(100/${aWall})*${aWall} +variable Lx1 equal round(100/1)*${aWall} +variable Lx1 equal round(100/1)*1 + +#create simulation box +variable lx2 equal ${Lx1}/2 +variable lx2 equal 100/2 +variable ly2 equal ${Ly1}/2 +variable ly2 equal 40/2 +region simbox block -${lx2} ${lx2} -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 ${lx2} -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 50 -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 50 -20 ${ly2} -0.1 0.1 units box +region simbox block -50 50 -20 20 -0.1 0.1 units box +create_box 2 simbox +Created orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + 1 by 1 by 1 MPI processor grid + +##################################################################### +#set up potential + +mass 1 1.0 #fluid atoms +mass 2 1.0 #wall atoms + +pair_style lj/cut 2.5 +pair_modify shift yes +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 1.12246 +pair_coeff 2 2 0.0 0.0 + +neigh_modify exclude type 2 2 + +timestep ${ts} +timestep 0.001 + +##################################################################### +#create atoms + +#create wall atoms everywhere +create_atoms 2 box +Created 4000 atoms + using lattice units in orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + create_atoms CPU = 0.002 seconds + +#define region which is "walled off" +variable dhalf equal ${d1}/2 +variable dhalf equal 20/2 +variable Lhalf equal ${L1}/2 +variable Lhalf equal 30/2 +region walltop block -${Lhalf} ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 15 ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 15 10 EDGE -0.1 0.1 units box +region wallbot block -${Lhalf} ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 15 EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 15 EDGE -10 -0.1 0.1 units box +region outsidewall union 2 walltop wallbot side out + +#remove wall atoms outside wall region +group outside region outsidewall +3349 atoms in group outside +delete_atoms group outside +Deleted 3349 atoms, new total = 651 + +#remove wall atoms that aren't on edge of wall region +variable x1 equal ${Lhalf}-${aWall} +variable x1 equal 15-${aWall} +variable x1 equal 15-1 +variable y1 equal ${dhalf}+${aWall} +variable y1 equal 10+${aWall} +variable y1 equal 10+1 +region insideTop block -${x1} ${x1} ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 ${x1} ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 14 ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 14 11 EDGE -0.1 0.1 units box +region insideBot block -${x1} ${x1} EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 ${x1} EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 14 EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 14 EDGE -11 -0.1 0.1 units box +region insideWall union 2 insideTop insideBot +group insideWall region insideWall +551 atoms in group insideWall +delete_atoms group insideWall +Deleted 551 atoms, new total = 100 + +#define new lattice, to give correct fluid density +#y lattice const must be a multiple of aWall +variable atrue equal ${dens}^(-1/2) +variable atrue equal 0.8^(-1/2) +variable ay equal round(${atrue}/${aWall})*${aWall} +variable ay equal round(1.11803398874989/${aWall})*${aWall} +variable ay equal round(1.11803398874989/1)*${aWall} +variable ay equal round(1.11803398874989/1)*1 + +#choose x lattice const to give correct density +variable ax equal (${ay}*${dens})^(-1) +variable ax equal (1*${dens})^(-1) +variable ax equal (1*0.8)^(-1) + +#change Lx to be multiple of ax +variable Lx1 equal round(${Lx}/${ax})*${ax} +variable Lx1 equal round(100/${ax})*${ax} +variable Lx1 equal round(100/1.25)*${ax} +variable Lx1 equal round(100/1.25)*1.25 +variable lx2 equal ${Lx1}/2 +variable lx2 equal 100/2 +change_box all x final -${lx2} ${lx2} units box +change_box all x final -50 ${lx2} units box +change_box all x final -50 50 units box +Changing box ... + orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + +#define new lattice +lattice custom ${dens} a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 1 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +Lattice spacing in x,y,z = 1.25 1 1 + +#fill in rest of box with bulk particles +variable delta equal 0.001 +variable Ldelt equal ${Lhalf}+${delta} +variable Ldelt equal 15+${delta} +variable Ldelt equal 15+0.001 +variable dDelt equal ${dhalf}-${delta} +variable dDelt equal 10-${delta} +variable dDelt equal 10-0.001 +region left block EDGE -${Ldelt} EDGE EDGE -0.1 0.1 units box +region left block EDGE -15.001 EDGE EDGE -0.1 0.1 units box +region right block ${Ldelt} EDGE EDGE EDGE -0.1 0.1 units box +region right block 15.001 EDGE EDGE EDGE -0.1 0.1 units box +region pipe block -${Ldelt} ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -9.999 ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -9.999 9.999 -0.1 0.1 units box + +region bulk union 3 left pipe right +create_atoms 1 region bulk +Created 2675 atoms + using lattice units in orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + create_atoms CPU = 0.002 seconds + +group bulk type 1 +2675 atoms in group bulk +group wall type 2 +100 atoms in group wall + +#remove atoms that are too close to wall +delete_atoms overlap 0.9 bulk wall +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 72 29 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Deleted 0 atoms, new total = 2775 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes +neigh_modify exclude group wall wall + +velocity bulk create $T 78915 dist gaussian rot yes mom yes loop geom +velocity bulk create 2 78915 dist gaussian rot yes mom yes loop geom + +##################################################################### +#set up PUT +#see Evans and Morriss, Phys. Rev. Lett. 56(20) 1986, p. 2172 + +#average number of particles per box, Evans and Morriss used 2.0 +variable NperBox equal 8.0 + +#calculate box sizes +variable boxSide equal sqrt(${NperBox}/${dens}) +variable boxSide equal sqrt(8/${dens}) +variable boxSide equal sqrt(8/0.8) +variable nX equal round(lx/${boxSide}) +variable nX equal round(lx/3.16227766016838) +variable nY equal round(ly/${boxSide}) +variable nY equal round(ly/3.16227766016838) +variable dX equal lx/${nX} +variable dX equal lx/32 +variable dY equal ly/${nY} +variable dY equal ly/13 + +#temperature of fluid (excluding wall) +compute myT bulk temp + +#profile-unbiased temperature of fluid +compute myTp bulk temp/profile 1 1 0 xy ${nX} ${nY} +compute myTp bulk temp/profile 1 1 0 xy 32 ${nY} +compute myTp bulk temp/profile 1 1 0 xy 32 13 + +#thermo setup +thermo ${thermo_rate} +thermo 10 +thermo_style custom step c_myT c_myTp etotal press + +#dump initial configuration +# dump 55 all custom 1 all.init.lammpstrj id type x y z vx vy vz +# dump 56 wall custom 1 wall.init.lammpstrj id type x y z +# dump_modify 55 sort id +# dump_modify 56 sort id +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 72 29 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.104 | 3.104 | 3.104 Mbytes + Step c_myT c_myTp TotEng Press + 0 2 2.054601 0.77892922 7.3417096 +Loop time of 6.85e-07 on 1 procs for 0 steps with 2775 atoms + +146.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 6.85e-07 | | |100.00 + +Nlocal: 2775 ave 2775 max 2775 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 510 ave 510 max 510 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 26406 ave 26406 max 26406 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 26406 +Ave neighs/atom = 9.5156757 +Neighbor list builds = 0 +Dangerous builds = 0 +# undump 55 +# undump 56 + +##################################################################### +#equilibrate without GD + +fix nvt bulk nvt temp $T $T ${tdamp} +fix nvt bulk nvt temp 2 $T ${tdamp} +fix nvt bulk nvt temp 2 2 ${tdamp} +fix nvt bulk nvt temp 2 2 0.1 +fix_modify nvt temp myTp +WARNING: Temperature for fix modify is not for group all (src/fix_nh.cpp:1391) +fix 2 bulk enforce2d + +run ${equil} +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 3.166 | 3.166 | 3.166 Mbytes + Step c_myT c_myTp TotEng Press + 0 2 2.054601 0.77892922 7.3417096 + 10 1.9173668 1.9381538 0.77877698 7.6702283 + 20 1.7033651 1.6967466 0.7798044 8.5615039 + 30 1.5026644 1.4718046 0.78461914 9.4308883 + 40 1.4881235 1.4586031 0.79494919 9.6135307 + 50 1.6193439 1.6144665 0.81119835 9.2594114 + 60 1.7405127 1.7576881 0.82966956 8.9525458 + 70 1.7758506 1.7999706 0.84538866 8.9719793 + 80 1.7574736 1.7806782 0.85780732 9.1938511 + 90 1.7492232 1.7720284 0.86895259 9.3714617 + 100 1.7800292 1.807315 0.88044504 9.3874107 + 110 1.8442295 1.878681 0.89278276 9.2585436 + 120 1.9193695 1.9667163 0.90556381 9.0683654 + 130 1.9885753 2.0478097 0.91782871 8.8815507 + 140 2.04662 2.1105827 0.92850319 8.718882 + 150 2.0957046 2.1672706 0.93677238 8.5718869 + 160 2.144595 2.2210801 0.94188484 8.4089161 + 170 2.1802133 2.2626399 0.9429713 8.2775682 + 180 2.1868284 2.2696504 0.93931537 8.2321283 + 190 2.1838369 2.2706873 0.93069783 8.1970105 + 200 2.1943436 2.2865542 0.91717737 8.0854148 + 210 2.2029439 2.2912731 0.89906796 7.9589187 + 220 2.1891494 2.2768232 0.87764254 7.9016509 + 230 2.1677848 2.2493747 0.85497463 7.8690125 + 240 2.156695 2.2377486 0.83255207 7.8020978 + 250 2.142758 2.2237662 0.81090722 7.7510242 + 260 2.1177881 2.1967699 0.79016944 7.7477503 + 270 2.0862408 2.1669583 0.77040874 7.7740216 + 280 2.0676515 2.1446262 0.75157955 7.7544068 + 290 2.0645498 2.1425534 0.73343008 7.6746729 + 300 2.0563664 2.1358776 0.71562279 7.6114783 + 310 2.0390115 2.1198472 0.69809211 7.581719 + 320 2.0209035 2.1063385 0.68093855 7.5540946 + 330 2.012488 2.1037583 0.66418283 7.4896097 + 340 2.0166095 2.1094212 0.64762479 7.3779677 + 350 2.0172861 2.1072653 0.63109595 7.2807114 + 360 2.0065768 2.0803788 0.6147802 7.2283814 + 370 1.9970858 2.0639903 0.59905362 7.1747592 + 380 1.9925189 2.056563 0.58395055 7.103506 + 390 1.9935388 2.0546596 0.56945318 7.010305 + 400 2.0020199 2.0632095 0.55532013 6.8883647 + 410 2.009157 2.0732883 0.54128082 6.771521 + 420 2.0081687 2.0785184 0.52711525 6.6868076 + 430 1.9990498 2.0705469 0.51283203 6.6343482 + 440 1.9891528 2.0586814 0.4986104 6.5888679 + 450 1.9829175 2.0465778 0.4846738 6.5332233 + 460 1.9745599 2.031067 0.4711878 6.4903915 + 470 1.9581101 2.006674 0.45837961 6.4836654 + 480 1.9367964 1.9732882 0.44656667 6.501731 + 490 1.9258333 1.9561395 0.43605676 6.4879447 + 500 1.9287 1.9571319 0.42678362 6.4296036 + 510 1.9274696 1.9569118 0.41856553 6.3949919 + 520 1.9100149 1.9392424 0.41134511 6.4307452 + 530 1.8827127 1.9059412 0.40536565 6.5126603 + 540 1.8660696 1.8912024 0.40096324 6.5610607 + 550 1.8701883 1.9043254 0.3982457 6.536251 + 560 1.8842923 1.9289528 0.39698123 6.4785367 + 570 1.8906147 1.9462124 0.39684504 6.4547374 + 580 1.8895472 1.9472747 0.39763233 6.4630103 + 590 1.895375 1.9551336 0.39926725 6.449517 + 600 1.9115711 1.9737109 0.40163655 6.3995241 + 610 1.92823 1.9851787 0.404506 6.3499339 + 620 1.9360678 1.9889572 0.40767569 6.3367514 + 630 1.9346853 1.9836719 0.41105958 6.3637995 + 640 1.9266095 1.9757908 0.41472954 6.4212842 + 650 1.9213863 1.9719496 0.41879537 6.4707692 + 660 1.922962 1.9702923 0.42332926 6.4949933 + 670 1.9238956 1.9707534 0.42836303 6.5212631 + 680 1.9212675 1.9740379 0.43388709 6.5608915 + 690 1.9210314 1.976311 0.43982007 6.5904702 + 700 1.928081 1.9868449 0.44610463 6.5915021 + 710 1.9428895 2.0044235 0.45257857 6.5616141 + 720 1.9554783 2.0176139 0.45898384 6.5367529 + 730 1.969838 2.0327907 0.46505662 6.5017635 + 740 1.9840204 2.0467126 0.47058703 6.4649226 + 750 1.9946633 2.0526929 0.47535832 6.4399342 + 760 2.0018048 2.0535606 0.47924291 6.4280737 + 770 1.9991703 2.0483426 0.48222842 6.4537535 + 780 1.9850797 2.0312444 0.48443072 6.5234271 + 790 1.9691589 2.0154006 0.4861158 6.5995894 + 800 1.9612641 2.0031407 0.48754831 6.6430968 + 810 1.9637155 2.0074142 0.48891261 6.6444644 + 820 1.9691691 2.0110229 0.49018604 6.6304512 + 830 1.9763962 2.0190998 0.49130448 6.6060594 + 840 1.9908278 2.0352615 0.49213189 6.5510683 + 850 2.0105715 2.0558403 0.49238435 6.4743276 + 860 2.0227982 2.0645732 0.49173076 6.4260863 + 870 2.015555 2.064081 0.48998228 6.4528588 + 880 1.9889672 2.0320831 0.48722022 6.5532269 + 890 1.9632172 2.0025881 0.48392295 6.6494723 + 900 1.9527429 1.9887196 0.48054642 6.6846937 + 910 1.9567815 1.9953408 0.47726539 6.6606541 + 920 1.9666996 2.0084955 0.47397593 6.6100666 + 930 1.9702885 2.014774 0.47048741 6.5805871 + 940 1.9661802 2.0116846 0.46671831 6.579539 + 950 1.9576953 1.9960728 0.46273983 6.5967841 + 960 1.9428073 1.9802284 0.45879028 6.6395002 + 970 1.9256011 1.9584581 0.45515059 6.6916425 + 980 1.913512 1.9478848 0.45214528 6.7233279 + 990 1.9174938 1.9449699 0.44994026 6.6943867 + 1000 1.9365527 1.9663901 0.44852349 6.6101761 +Loop time of 0.324261 on 1 procs for 1000 steps with 2775 atoms + +Performance: 266452.077 tau/day, 3083.936 timesteps/s, 8.558 Matom-step/s +99.2% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.19361 | 0.19361 | 0.19361 | 0.0 | 59.71 +Neigh | 0.025544 | 0.025544 | 0.025544 | 0.0 | 7.88 +Comm | 0.0023292 | 0.0023292 | 0.0023292 | 0.0 | 0.72 +Output | 0.0046269 | 0.0046269 | 0.0046269 | 0.0 | 1.43 +Modify | 0.092779 | 0.092779 | 0.092779 | 0.0 | 28.61 +Other | | 0.005374 | | | 1.66 + +Nlocal: 2775 ave 2775 max 2775 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 527 ave 527 max 527 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 24332 ave 24332 max 24332 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 24332 +Ave neighs/atom = 8.7682883 +Neighbor list builds = 38 +Dangerous builds = 0 + +##################################################################### +#initialize the COM velocity and run to achieve steady-state + +#calculate velocity to add: V=J/rho_total +variable Vadd equal $J*lx*ly/count(bulk) +variable Vadd equal 0.1*lx*ly/count(bulk) + +#first remove any COM velocity, then add back the streaming velocity +velocity bulk zero linear +velocity bulk set ${Vadd} 0.0 0.0 units box sum yes mom no +velocity bulk set 0.149532710280374 0.0 0.0 units box sum yes mom no + +fix GD bulk flow/gauss 1 0 0 #energy yes +#fix_modify GD energy yes + +run ${stabil} +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Gaussian dynamics package: doi:10.1021/acs.jpcb.6b09387 + +@Article{strong_water_2017, +title = {The Dynamics of Water in Porous Two-Dimensional Crystals}, +volume = {121}, +number = {1}, +url = {https://doi.org/10.1021/acs.jpcb.6b09387}, +doi = {10.1021/acs.jpcb.6b09387}, +urldate = {2016-12-07}, +journal = {J.~Phys.\ Chem.~B}, +author = {Strong, Steven E. and Eaves, Joel D.}, +year = {2017}, +pages = {189--207} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 3.166 | 3.166 | 3.166 Mbytes + Step c_myT c_myTp TotEng Press + 1000 1.9477212 1.9663901 0.45928547 6.6176422 + 1010 1.9617328 1.9828061 0.45840963 6.555968 + 1020 1.9570976 1.9825696 0.45782895 6.5690613 + 1030 1.9356292 1.9690101 0.45753984 6.6493822 + 1040 1.9174914 1.9448868 0.4577768 6.7171474 + 1050 1.9202482 1.9432766 0.4588733 6.7039634 + 1060 1.9419998 1.9718217 0.46086407 6.617366 + 1070 1.9666048 1.996346 0.46339522 6.5207175 + 1080 1.9775489 2.0078489 0.46608862 6.4794239 + 1090 1.9725172 2.0005028 0.46876174 6.5044299 + 1100 1.9659582 1.9931537 0.47147394 6.5409107 + 1110 1.9670607 1.9965504 0.47432892 6.5527414 + 1120 1.9716302 1.9984924 0.47732198 6.5530022 + 1130 1.9752703 2.0057031 0.48043914 6.5579379 + 1140 1.976368 2.0061152 0.48358744 6.5719123 + 1150 1.9748014 2.0056689 0.48673155 6.5957896 + 1160 1.9729115 2.0036854 0.48986563 6.6200102 + 1170 1.9702742 2.0016461 0.49302426 6.6455948 + 1180 1.9680418 1.9978705 0.49625385 6.6697165 + 1190 1.9640159 1.9937501 0.49962311 6.7004634 + 1200 1.9616719 1.9932085 0.50320747 6.7253219 + 1210 1.9658831 1.9985624 0.50702861 6.7242078 + 1220 1.9790884 2.0132679 0.51100573 6.688483 + 1230 1.9946749 2.0324782 0.51491484 6.6422423 + 1240 2.0039182 2.0484588 0.5184382 6.6190292 + 1250 2.0033685 2.0545791 0.52130299 6.6322608 + 1260 1.9991533 2.0533011 0.52339221 6.6590872 + 1270 1.9969511 2.0571182 0.5246505 6.6789676 + 1280 1.9911353 2.0488281 0.52501304 6.7125634 + 1290 1.9712819 2.0209437 0.52460315 6.7967237 + 1300 1.9486195 1.9967749 0.5238106 6.886265 + 1310 1.951612 2.0051749 0.52294383 6.8723332 + 1320 1.9800953 2.0397207 0.52186525 6.7537937 + 1330 2.0084961 2.0723584 0.52001894 6.6279995 + 1340 2.021654 2.085105 0.51675149 6.554461 + 1350 2.0193685 2.0672662 0.5117514 6.5349176 + 1360 2.0084017 2.0471065 0.50518646 6.5453141 + 1370 1.994978 2.030683 0.49737164 6.5627932 + 1380 1.9781978 2.0044236 0.48871071 6.5903683 + 1390 1.9572368 1.9833426 0.47978207 6.6326472 + 1400 1.9400481 1.956474 0.47117436 6.6600696 + 1410 1.9380218 1.9552501 0.46336325 6.6314231 + 1420 1.9494747 1.9681145 0.45642218 6.5527615 + 1430 1.9610978 1.9824506 0.4501938 6.4763851 + 1440 1.9639503 1.9890985 0.44452289 6.4375535 + 1450 1.9560428 1.9821594 0.43936988 6.4453654 + 1460 1.9399344 1.9627639 0.43486138 6.488055 + 1470 1.9247229 1.9440629 0.43123378 6.5292381 + 1480 1.9213375 1.9369273 0.42866841 6.5271097 + 1490 1.9265729 1.9383637 0.42719968 6.4940959 + 1500 1.930987 1.9416689 0.4267225 6.4673585 + 1510 1.9303444 1.9418498 0.42714462 6.4648027 + 1520 1.9258423 1.940384 0.42844066 6.4834098 + 1530 1.9131202 1.9296653 0.4306338 6.5390881 + 1540 1.8990016 1.9101025 0.43386405 6.6052091 + 1550 1.9012878 1.9120047 0.43834036 6.6147792 + 1560 1.9153287 1.9388751 0.44404054 6.5851781 + 1570 1.9266928 1.9596147 0.45057056 6.5705776 + 1580 1.9358289 1.9745564 0.45744022 6.5674622 + 1590 1.9415248 1.9818707 0.46425451 6.5778534 + 1600 1.9466876 1.98498 0.47075833 6.5878483 + 1610 1.9557175 1.9930268 0.47674103 6.5777205 + 1620 1.9712902 2.0112337 0.48200984 6.5367922 + 1630 1.9900646 2.0303946 0.48631888 6.4790095 + 1640 1.9960901 2.039173 0.48947508 6.4661574 + 1650 1.9879046 2.0329046 0.49151173 6.504063 + 1660 1.9832967 2.0325843 0.49266284 6.5255647 + 1670 1.9875656 2.034783 0.49313513 6.5093662 + 1680 1.9967654 2.0492931 0.49299896 6.4699787 + 1690 2.0025957 2.0532539 0.49216931 6.4389613 + 1700 2.0022202 2.0424508 0.49070612 6.4276702 + 1710 2.0083188 2.0437945 0.48879489 6.3909243 + 1720 2.0178792 2.0439212 0.48646135 6.3411063 + 1730 2.0210944 2.0444299 0.48367905 6.3141106 + 1740 2.0170566 2.0337564 0.48044951 6.3158785 + 1750 2.0099049 2.0231598 0.47693196 6.3313851 + 1760 1.9990395 2.0132651 0.47329842 6.3631889 + 1770 1.9823237 1.9969291 0.46970233 6.4208124 + 1780 1.9640169 1.9798655 0.4663519 6.4879798 + 1790 1.9457657 1.9626633 0.46348315 6.557165 + 1800 1.9253222 1.9443136 0.46134123 6.6365286 + 1810 1.9123385 1.9339816 0.46011796 6.6879846 + 1820 1.9098744 1.9287702 0.45993599 6.7001355 + 1830 1.9096278 1.9220243 0.460898 6.7020982 + 1840 1.9223081 1.9378963 0.46303724 6.6558132 + 1850 1.9481113 1.9718786 0.46616351 6.5618175 + 1860 1.9704143 1.9931969 0.46987208 6.484088 + 1870 1.9864974 2.017655 0.47377416 6.4360445 + 1880 1.993165 2.0276398 0.47750238 6.4296162 + 1890 1.9852177 2.0249022 0.48088382 6.4843765 + 1900 1.9692398 2.0101062 0.4839255 6.5735477 + 1910 1.9516968 1.9893586 0.48689095 6.6692995 + 1920 1.9380452 1.9750949 0.49014596 6.7488323 + 1930 1.9323223 1.9719977 0.49399992 6.7947629 + 1940 1.9402144 1.9786701 0.49859677 6.7846787 + 1950 1.9589972 1.9956447 0.50392573 6.7291499 + 1960 1.979631 2.0201087 0.50984934 6.6648708 + 1970 2.0002749 2.0392081 0.51605302 6.6026647 + 1980 2.0143746 2.0524405 0.52221277 6.5687042 + 1990 2.0166553 2.0466885 0.5281276 6.5835144 + 2000 2.0130617 2.0424179 0.53381506 6.6234083 +Loop time of 0.33442 on 1 procs for 1000 steps with 2775 atoms + +Performance: 258357.633 tau/day, 2990.250 timesteps/s, 8.298 Matom-step/s +99.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.19616 | 0.19616 | 0.19616 | 0.0 | 58.66 +Neigh | 0.023799 | 0.023799 | 0.023799 | 0.0 | 7.12 +Comm | 0.0022819 | 0.0022819 | 0.0022819 | 0.0 | 0.68 +Output | 0.0046967 | 0.0046967 | 0.0046967 | 0.0 | 1.40 +Modify | 0.10212 | 0.10212 | 0.10212 | 0.0 | 30.54 +Other | | 0.005366 | | | 1.60 + +Nlocal: 2775 ave 2775 max 2775 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 530 ave 530 max 530 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 24370 ave 24370 max 24370 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 24370 +Ave neighs/atom = 8.781982 +Neighbor list builds = 35 +Dangerous builds = 0 + +##################################################################### +#collect data + +#print the applied force and total flux to ensure conservation of Jx +variable Fapp equal f_GD[1] +compute vxBulk bulk reduce sum vx +compute vyBulk bulk reduce sum vy +variable invVol equal 1.0/(lx*ly) +variable jx equal c_vxBulk*${invVol} +variable jx equal c_vxBulk*0.00025 +variable jy equal c_vyBulk*${invVol} +variable jy equal c_vyBulk*0.00025 +variable curr_step equal step +variable p_Fapp format Fapp %.3f +variable p_jx format jx %.5g +variable p_jy format jy %.5g +fix print_vCOM all print ${dump_rate} "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" +fix print_vCOM all print 50 "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" + +#compute IK1 pressure profile +#see Todd, Evans, and Davis, Phys. Rev. E 52(2) 1995, p. 1627 +#use profile-unbiased temperature to remove the streaming velocity +#from the kinetic part of the pressure +compute spa bulk stress/atom myTp + +#for the pressure profile, use the same grid as the PUT +compute chunkX bulk chunk/atom bin/1d x lower ${dX} units box +compute chunkX bulk chunk/atom bin/1d x lower 3.125 units box + +#output pressure profile and other profiles +#the pressure profile is (-1/2V)*(c_spa[1] + c_spa[2]), where +#V is the volume of a slice +fix profiles bulk ave/chunk 1 1 ${dump_rate} chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite +fix profiles bulk ave/chunk 1 1 50 chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite + +#compute velocity profile across the pipe with a finer grid +variable dYnew equal ${dY}/10 +variable dYnew equal 3.07692307692308/10 +compute chunkY bulk chunk/atom bin/1d y center ${dYnew} units box region pipe +compute chunkY bulk chunk/atom bin/1d y center 0.307692307692308 units box region pipe +fix velYprof bulk ave/chunk 1 1 ${dump_rate} chunkY vx file Vy_profile ave running overwrite +fix velYprof bulk ave/chunk 1 1 50 chunkY vx file Vy_profile ave running overwrite + +#full trajectory +# dump 7 bulk custom ${dump_rate} bulk.lammpstrj id type x y z +# dump_modify 7 sort id + +run ${run} +run 2000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 5.175 | 5.175 | 5.175 Mbytes + Step c_myT c_myTp TotEng Press + 2000 2.0130617 2.0424179 0.53381506 6.6234083 + 2010 2.011712 2.0399428 0.53937165 6.6546944 + 2020 2.0177252 2.0516588 0.54483848 6.6575988 + 2030 2.0192267 2.054258 0.55012466 6.6761208 + 2040 2.0155308 2.0513866 0.55518707 6.7132509 + 2050 2.016831 2.0539288 0.56007247 6.7306192 + 2060 2.0213378 2.0690043 0.56479732 6.7330132 + 2070 2.0292987 2.0799825 0.56913353 6.7186216 + 2080 2.0342188 2.0900923 0.57283821 6.7098434 + 2090 2.0376411 2.096351 0.57566175 6.6998818 + 2100 2.053128 2.1238481 0.57727694 6.637431 + 2110 2.0783941 2.1609599 0.5768993 6.5304031 + 2120 2.0887269 2.1760645 0.57341638 6.4706853 + 2130 2.06944 2.1522354 0.5659988 6.5099284 + 2140 2.0380605 2.115767 0.55466476 6.5802578 + 2150 2.0195872 2.0868424 0.54025148 6.5885111 + 2160 2.0061251 2.069266 0.52417244 6.5682875 + 2170 1.992682 2.0526743 0.50812177 6.5470052 + 2180 1.9816004 2.0352692 0.49354583 6.5244099 + 2190 1.9688265 2.0226679 0.4811848 6.5185172 + 2200 1.9574266 2.000155 0.47107703 6.5176047 + 2210 1.9502736 1.9925522 0.46298224 6.5078398 + 2220 1.9475332 1.9936032 0.45641728 6.4850252 + 2230 1.9545128 2.0045053 0.45087489 6.4291405 + 2240 1.9627871 2.0112148 0.44588526 6.3715676 + 2250 1.9617694 2.0073769 0.44121477 6.3541518 + 2260 1.9579423 2.0079137 0.43675541 6.3542735 + 2270 1.9475845 1.998983 0.43243494 6.3854071 + 2280 1.9253275 1.9715083 0.42839782 6.464845 + 2290 1.8996763 1.9456257 0.42496367 6.5591177 + 2300 1.8823546 1.9240543 0.42247729 6.6211062 + 2310 1.8844318 1.9216768 0.42116372 6.6085376 + 2320 1.8965287 1.933936 0.42103218 6.5584198 + 2330 1.902103 1.9433708 0.421956 6.5350698 + 2340 1.9061826 1.950462 0.42378825 6.5228738 + 2350 1.9180306 1.961141 0.42644522 6.489172 + 2360 1.9296124 1.9748542 0.42981448 6.4628168 + 2370 1.9328566 1.9718181 0.43373762 6.4721746 + 2380 1.9360042 1.9769998 0.43819906 6.4840942 + 2390 1.9387073 1.9778749 0.44317927 6.49778 + 2400 1.9445619 1.9882647 0.4486142 6.4971899 + 2410 1.9553344 1.9997412 0.45435544 6.4749774 + 2420 1.9710783 2.0211926 0.46019236 6.4320181 + 2430 1.9903873 2.046553 0.46575694 6.3751343 + 2440 2.0041158 2.0721071 0.47060398 6.3415121 + 2450 2.0020392 2.0728953 0.47431806 6.3708096 + 2460 1.9839851 2.0568906 0.47681718 6.465129 + 2470 1.9566365 2.0258852 0.47838596 6.5966256 + 2480 1.929674 2.0032606 0.47952215 6.7260074 + 2490 1.9153613 1.990031 0.48061628 6.8035919 + 2500 1.9188373 1.9920514 0.4819225 6.8075788 + 2510 1.9371656 2.0138698 0.48343533 6.7492701 + 2520 1.9566481 2.0340995 0.48485699 6.6821181 + 2530 1.9636141 2.0389496 0.48583392 6.6581326 + 2540 1.9585172 2.0207113 0.48622314 6.6762792 + 2550 1.9516934 2.0024186 0.48621721 6.6980104 + 2560 1.9509543 1.9960852 0.48612286 6.6946311 + 2570 1.9601672 2.0072552 0.48602872 6.6528934 + 2580 1.973804 2.0230879 0.48576601 6.5942862 + 2590 1.9788378 2.034436 0.48505027 6.5689819 + 2600 1.9716493 2.0208578 0.48368043 6.5897554 + 2610 1.9618006 2.007098 0.48174365 6.6188626 + 2620 1.9631458 2.0075461 0.4793429 6.6026194 + 2630 1.9706918 2.0174955 0.47638698 6.5591053 + 2640 1.9759585 2.0213828 0.47264742 6.5198595 + 2650 1.9761708 2.0225139 0.46794373 6.4977306 + 2660 1.9611574 2.0083871 0.46221598 6.5299021 + 2670 1.9342882 1.9720247 0.45576624 6.6034695 + 2680 1.9142009 1.9520382 0.44913109 6.6474082 + 2690 1.9052096 1.9428107 0.4426988 6.645123 + 2700 1.902446 1.9459937 0.43672046 6.6152926 + 2710 1.9099036 1.9594727 0.43120889 6.5473804 + 2720 1.9180788 1.9767479 0.42599739 6.4792536 + 2730 1.9142892 1.9798275 0.42092791 6.4604982 + 2740 1.9019844 1.9674244 0.41601841 6.4795855 + 2750 1.8895632 1.958412 0.41144638 6.5037424 + 2760 1.8824401 1.9494985 0.40739848 6.5113925 + 2770 1.8852759 1.9525073 0.40398809 6.484535 + 2780 1.8998168 1.9664907 0.40114076 6.4159782 + 2790 1.9153937 1.9810349 0.39863439 6.346934 + 2800 1.9162707 1.9824285 0.39627973 6.3364828 + 2810 1.9087999 1.9666258 0.39408314 6.360755 + 2820 1.9073152 1.956153 0.39226387 6.3655719 + 2830 1.9091743 1.9493705 0.39098546 6.3595054 + 2840 1.9042021 1.9424118 0.39036698 6.381752 + 2850 1.8901401 1.9353495 0.39057524 6.4417859 + 2860 1.872943 1.915215 0.39190057 6.5158585 + 2870 1.8732626 1.9181551 0.39474702 6.5269257 + 2880 1.8931021 1.9396049 0.39938934 6.467715 + 2890 1.9217069 1.9733171 0.40581935 6.3811936 + 2900 1.9452213 1.9949806 0.41374968 6.3217226 + 2910 1.9591065 2.0105363 0.42280483 6.3087055 + 2920 1.9649158 2.0234068 0.43256139 6.3353204 + 2930 1.9647653 2.0265233 0.4425691 6.3902862 + 2940 1.9623876 2.0281154 0.45237409 6.4560778 + 2950 1.9591057 2.0276078 0.46164197 6.5239614 + 2960 1.9556907 2.0254377 0.47016674 6.5883236 + 2970 1.9524475 2.0203546 0.47782337 6.6457078 + 2980 1.9556442 2.0212175 0.48459527 6.6731473 + 2990 1.9663638 2.0285202 0.49047217 6.667322 + 3000 1.976263 2.0326354 0.49540098 6.6601492 + 3010 1.9734917 2.0251301 0.49938916 6.6970878 + 3020 1.955368 1.9974693 0.50265656 6.7865104 + 3030 1.9476644 1.9780945 0.50564273 6.8327176 + 3040 1.9584769 1.9887952 0.50867872 6.8046262 + 3050 1.9705616 2.0030557 0.51168699 6.7669575 + 3060 1.9766986 2.0112576 0.51444822 6.74919 + 3070 1.9766671 2.0076853 0.51685838 6.7523339 + 3080 1.9763383 2.0045916 0.51896849 6.7532253 + 3090 1.9855877 2.0260371 0.52081442 6.7160131 + 3100 2.0011042 2.042205 0.52215192 6.653598 + 3110 2.0039819 2.0511266 0.52275172 6.6355885 + 3120 1.9958773 2.0457899 0.52253307 6.6565817 + 3130 1.9933925 2.04521 0.52158082 6.6543706 + 3140 1.9936643 2.0477262 0.51996279 6.639564 + 3150 1.9921223 2.0455965 0.51768794 6.6291901 + 3160 1.9914788 2.0365842 0.51483187 6.6154874 + 3170 1.9922866 2.0422451 0.51144092 6.5976334 + 3180 1.9872806 2.0376593 0.50747923 6.6043774 + 3190 1.9708577 2.0198422 0.50308657 6.6551127 + 3200 1.9534272 1.9982319 0.49857904 6.7093718 + 3210 1.9423425 1.9876311 0.49429833 6.7370529 + 3220 1.941974 1.984738 0.49043179 6.7218879 + 3230 1.9456357 1.9916666 0.48697785 6.6917144 + 3240 1.9392412 1.9874858 0.48388805 6.7004046 + 3250 1.9312152 1.9814714 0.4812083 6.7175714 + 3260 1.9364393 1.9840125 0.47897357 6.6870787 + 3270 1.9490184 1.9871802 0.47715672 6.6308261 + 3280 1.9578901 1.9917218 0.47568803 6.589659 + 3290 1.9598612 1.9918098 0.47449561 6.5756965 + 3300 1.9538424 1.9845316 0.47357576 6.5931068 + 3310 1.944957 1.9676243 0.47302774 6.6211221 + 3320 1.9479975 1.9720828 0.47296613 6.6058089 + 3330 1.9569283 1.98719 0.47330356 6.5698601 + 3340 1.9558114 1.9861834 0.47383928 6.5729191 + 3350 1.9461606 1.9777192 0.47452365 6.6090135 + 3360 1.942095 1.9776297 0.47540879 6.6255417 + 3370 1.9482423 1.981145 0.47643851 6.6032207 + 3380 1.9564098 1.992645 0.47752314 6.5736007 + 3390 1.9607986 2.0006048 0.47852085 6.5587348 + 3400 1.9595637 2.0047228 0.47933656 6.5656692 + 3410 1.9628181 2.013785 0.47991082 6.5570579 + 3420 1.9698466 2.0200788 0.48018617 6.536373 + 3430 1.969877 2.0210764 0.48013786 6.543084 + 3440 1.96327 2.0103631 0.47979187 6.5761448 + 3450 1.9566516 1.9996494 0.47933398 6.6098616 + 3460 1.9511915 1.9976175 0.47891646 6.6401481 + 3470 1.9410601 1.9950284 0.47859124 6.6862584 + 3480 1.9307395 1.98193 0.47840998 6.7307929 + 3490 1.9206678 1.9678856 0.47853003 6.7702613 + 3500 1.9139405 1.955324 0.47914241 6.7934071 + 3510 1.9206383 1.957176 0.48041531 6.763312 + 3520 1.9449301 1.9816996 0.4823109 6.6651453 + 3530 1.9752924 2.0115126 0.48452681 6.5438659 + 3540 1.9951599 2.037759 0.48660439 6.463461 + 3550 2.00071 2.0413872 0.48813252 6.4405933 + 3560 1.9939017 2.0277566 0.48901382 6.4684771 + 3570 1.9766844 2.0031366 0.48946452 6.5392906 + 3580 1.9600495 1.9790718 0.48988281 6.6106541 + 3590 1.9522334 1.9727673 0.49062615 6.6517495 + 3600 1.9522007 1.9829458 0.49183552 6.6635632 + 3610 1.9614098 1.9992781 0.49340617 6.6407777 + 3620 1.9739926 2.0159629 0.49511752 6.6062456 + 3630 1.9726539 2.0152219 0.49675445 6.6254361 + 3640 1.9613098 2.0017247 0.49829011 6.6828523 + 3650 1.9577727 2.0000723 0.49991877 6.7111788 + 3660 1.9626403 2.0037309 0.50175296 6.7072182 + 3670 1.9603974 1.9937256 0.50383808 6.7277464 + 3680 1.9532611 1.9846903 0.50638428 6.766139 + 3690 1.9541656 1.9798331 0.50962883 6.7752527 + 3700 1.9656726 1.9951191 0.51377056 6.7462001 + 3710 1.9834474 2.0193011 0.5187681 6.6957856 + 3720 2.0017372 2.0396413 0.52433682 6.6470375 + 3730 2.0109702 2.0469463 0.53011728 6.6363717 + 3740 2.0096859 2.0458572 0.53588234 6.6682277 + 3750 2.0066189 2.0519843 0.54153099 6.7085484 + 3760 2.0096126 2.0561094 0.54689937 6.7250788 + 3770 2.0117777 2.0668795 0.55183559 6.7400961 + 3780 2.0154601 2.0763941 0.55607392 6.7423369 + 3790 2.0313954 2.0972106 0.55930714 6.6920109 + 3800 2.0496133 2.1176374 0.56110467 6.6271089 + 3810 2.0553084 2.1205041 0.56098738 6.6034667 + 3820 2.0478771 2.1131255 0.5587031 6.6239895 + 3830 2.0342107 2.0991257 0.55418078 6.6632309 + 3840 2.0142205 2.0767164 0.5475632 6.7196407 + 3850 1.9879527 2.0516847 0.53919956 6.7932756 + 3860 1.9593315 2.0232738 0.52966135 6.8686984 + 3870 1.9362884 1.9952027 0.51970091 6.9156688 + 3880 1.9292997 1.988308 0.50996281 6.8957697 + 3890 1.9372437 1.9978667 0.50073928 6.8160964 + 3900 1.949918 2.0107188 0.49208883 6.7186535 + 3910 1.9547594 2.0160936 0.48397839 6.6537347 + 3920 1.9543568 2.0191268 0.47640162 6.6136066 + 3930 1.9582199 2.020036 0.46933873 6.5629723 + 3940 1.9644632 2.0304626 0.4627222 6.5077173 + 3950 1.9645883 2.030183 0.45644411 6.4795254 + 3960 1.9546999 2.0197243 0.45050582 6.4943661 + 3970 1.9424307 2.0063453 0.44500624 6.5237706 + 3980 1.9281472 1.9910524 0.44010499 6.5640156 + 3990 1.9168821 1.976369 0.43594016 6.592621 + 4000 1.9150056 1.9752502 0.43256473 6.5855641 +Loop time of 0.696491 on 1 procs for 2000 steps with 2775 atoms + +Performance: 248100.709 tau/day, 2871.536 timesteps/s, 7.969 Matom-step/s +99.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.39664 | 0.39664 | 0.39664 | 0.0 | 56.95 +Neigh | 0.051502 | 0.051502 | 0.051502 | 0.0 | 7.39 +Comm | 0.0047546 | 0.0047546 | 0.0047546 | 0.0 | 0.68 +Output | 0.0095092 | 0.0095092 | 0.0095092 | 0.0 | 1.37 +Modify | 0.22322 | 0.22322 | 0.22322 | 0.0 | 32.05 +Other | | 0.01087 | | | 1.56 + +Nlocal: 2775 ave 2775 max 2775 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 512 ave 512 max 512 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 24313 ave 24313 max 24313 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 24313 +Ave neighs/atom = 8.7614414 +Neighbor list builds = 75 +Dangerous builds = 0 +Total wall time: 0:00:01 diff --git a/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.4 b/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.4 new file mode 100644 index 00000000000..089e8d003de --- /dev/null +++ b/examples/PACKAGES/flow_gauss/log.6Dec23.GD.g++.4 @@ -0,0 +1,941 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#LAMMPS input script +#in.GD +#see README for details + +############################################################################### +#initialize variables +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task + +#frequency for outputting info (timesteps) +variable dump_rate equal 50 +variable thermo_rate equal 10 + +#equilibration time (timesteps) +variable equil equal 1000 + +#stabilization time (timesteps to reach steady-state) +variable stabil equal 1000 + +#data collection time (timesteps) +variable run equal 2000 + +#length of pipe +variable L equal 30 + +#width of pipe +variable d equal 20 + +#flux (mass/sigma*tau) +variable J equal 0.1 + +#simulation box dimensions +variable Lx equal 100 +variable Ly equal 40 + +#bulk fluid density +variable dens equal 0.8 + +#lattice spacing for wall atoms +variable aWall equal 1.0 #1.7472 + +#timestep +variable ts equal 0.001 + +#temperature +variable T equal 2.0 + +#thermostat damping constant +variable tdamp equal ${ts}*100 +variable tdamp equal 0.001*100 + +units lj +dimension 2 +atom_style atomic + + +############################################################################### +#create box + +#create lattice with the spacing aWall +variable rhoWall equal ${aWall}^(-2) +variable rhoWall equal 1^(-2) +lattice sq ${rhoWall} +lattice sq 1 +Lattice spacing in x,y,z = 1 1 1 + +#modify input dimensions to be multiples of aWall +variable L1 equal round($L/${aWall})*${aWall} +variable L1 equal round(30/${aWall})*${aWall} +variable L1 equal round(30/1)*${aWall} +variable L1 equal round(30/1)*1 +variable d1 equal round($d/${aWall})*${aWall} +variable d1 equal round(20/${aWall})*${aWall} +variable d1 equal round(20/1)*${aWall} +variable d1 equal round(20/1)*1 +variable Ly1 equal round(${Ly}/${aWall})*${aWall} +variable Ly1 equal round(40/${aWall})*${aWall} +variable Ly1 equal round(40/1)*${aWall} +variable Ly1 equal round(40/1)*1 +variable Lx1 equal round(${Lx}/${aWall})*${aWall} +variable Lx1 equal round(100/${aWall})*${aWall} +variable Lx1 equal round(100/1)*${aWall} +variable Lx1 equal round(100/1)*1 + +#create simulation box +variable lx2 equal ${Lx1}/2 +variable lx2 equal 100/2 +variable ly2 equal ${Ly1}/2 +variable ly2 equal 40/2 +region simbox block -${lx2} ${lx2} -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 ${lx2} -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 50 -${ly2} ${ly2} -0.1 0.1 units box +region simbox block -50 50 -20 ${ly2} -0.1 0.1 units box +region simbox block -50 50 -20 20 -0.1 0.1 units box +create_box 2 simbox +Created orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + 4 by 1 by 1 MPI processor grid + +##################################################################### +#set up potential + +mass 1 1.0 #fluid atoms +mass 2 1.0 #wall atoms + +pair_style lj/cut 2.5 +pair_modify shift yes +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 1.12246 +pair_coeff 2 2 0.0 0.0 + +neigh_modify exclude type 2 2 + +timestep ${ts} +timestep 0.001 + +##################################################################### +#create atoms + +#create wall atoms everywhere +create_atoms 2 box +Created 4000 atoms + using lattice units in orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + create_atoms CPU = 0.000 seconds + +#define region which is "walled off" +variable dhalf equal ${d1}/2 +variable dhalf equal 20/2 +variable Lhalf equal ${L1}/2 +variable Lhalf equal 30/2 +region walltop block -${Lhalf} ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 15 ${dhalf} EDGE -0.1 0.1 units box +region walltop block -15 15 10 EDGE -0.1 0.1 units box +region wallbot block -${Lhalf} ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 15 EDGE -${dhalf} -0.1 0.1 units box +region wallbot block -15 15 EDGE -10 -0.1 0.1 units box +region outsidewall union 2 walltop wallbot side out + +#remove wall atoms outside wall region +group outside region outsidewall +3349 atoms in group outside +delete_atoms group outside +Deleted 3349 atoms, new total = 651 + +#remove wall atoms that aren't on edge of wall region +variable x1 equal ${Lhalf}-${aWall} +variable x1 equal 15-${aWall} +variable x1 equal 15-1 +variable y1 equal ${dhalf}+${aWall} +variable y1 equal 10+${aWall} +variable y1 equal 10+1 +region insideTop block -${x1} ${x1} ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 ${x1} ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 14 ${y1} EDGE -0.1 0.1 units box +region insideTop block -14 14 11 EDGE -0.1 0.1 units box +region insideBot block -${x1} ${x1} EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 ${x1} EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 14 EDGE -${y1} -0.1 0.1 units box +region insideBot block -14 14 EDGE -11 -0.1 0.1 units box +region insideWall union 2 insideTop insideBot +group insideWall region insideWall +551 atoms in group insideWall +delete_atoms group insideWall +Deleted 551 atoms, new total = 100 + +#define new lattice, to give correct fluid density +#y lattice const must be a multiple of aWall +variable atrue equal ${dens}^(-1/2) +variable atrue equal 0.8^(-1/2) +variable ay equal round(${atrue}/${aWall})*${aWall} +variable ay equal round(1.11803398874989/${aWall})*${aWall} +variable ay equal round(1.11803398874989/1)*${aWall} +variable ay equal round(1.11803398874989/1)*1 + +#choose x lattice const to give correct density +variable ax equal (${ay}*${dens})^(-1) +variable ax equal (1*${dens})^(-1) +variable ax equal (1*0.8)^(-1) + +#change Lx to be multiple of ax +variable Lx1 equal round(${Lx}/${ax})*${ax} +variable Lx1 equal round(100/${ax})*${ax} +variable Lx1 equal round(100/1.25)*${ax} +variable Lx1 equal round(100/1.25)*1.25 +variable lx2 equal ${Lx1}/2 +variable lx2 equal 100/2 +change_box all x final -${lx2} ${lx2} units box +change_box all x final -50 ${lx2} units box +change_box all x final -50 50 units box +Changing box ... + orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + +#define new lattice +lattice custom ${dens} a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 1 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 +Lattice spacing in x,y,z = 1.25 1 1 + +#fill in rest of box with bulk particles +variable delta equal 0.001 +variable Ldelt equal ${Lhalf}+${delta} +variable Ldelt equal 15+${delta} +variable Ldelt equal 15+0.001 +variable dDelt equal ${dhalf}-${delta} +variable dDelt equal 10-${delta} +variable dDelt equal 10-0.001 +region left block EDGE -${Ldelt} EDGE EDGE -0.1 0.1 units box +region left block EDGE -15.001 EDGE EDGE -0.1 0.1 units box +region right block ${Ldelt} EDGE EDGE EDGE -0.1 0.1 units box +region right block 15.001 EDGE EDGE EDGE -0.1 0.1 units box +region pipe block -${Ldelt} ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -${dDelt} ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -9.999 ${dDelt} -0.1 0.1 units box +region pipe block -15.001 15.001 -9.999 9.999 -0.1 0.1 units box + +region bulk union 3 left pipe right +create_atoms 1 region bulk +Created 2675 atoms + using lattice units in orthogonal box = (-50 -20 -0.1) to (50 20 0.1) + create_atoms CPU = 0.000 seconds + +group bulk type 1 +2675 atoms in group bulk +group wall type 2 +100 atoms in group wall + +#remove atoms that are too close to wall +delete_atoms overlap 0.9 bulk wall +System init for delete_atoms ... +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 72 29 1 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command delete_atoms, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/2d + bin: standard + (2) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Deleted 0 atoms, new total = 2775 + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes +neigh_modify exclude group wall wall + +velocity bulk create $T 78915 dist gaussian rot yes mom yes loop geom +velocity bulk create 2 78915 dist gaussian rot yes mom yes loop geom + +##################################################################### +#set up PUT +#see Evans and Morriss, Phys. Rev. Lett. 56(20) 1986, p. 2172 + +#average number of particles per box, Evans and Morriss used 2.0 +variable NperBox equal 8.0 + +#calculate box sizes +variable boxSide equal sqrt(${NperBox}/${dens}) +variable boxSide equal sqrt(8/${dens}) +variable boxSide equal sqrt(8/0.8) +variable nX equal round(lx/${boxSide}) +variable nX equal round(lx/3.16227766016838) +variable nY equal round(ly/${boxSide}) +variable nY equal round(ly/3.16227766016838) +variable dX equal lx/${nX} +variable dX equal lx/32 +variable dY equal ly/${nY} +variable dY equal ly/13 + +#temperature of fluid (excluding wall) +compute myT bulk temp + +#profile-unbiased temperature of fluid +compute myTp bulk temp/profile 1 1 0 xy ${nX} ${nY} +compute myTp bulk temp/profile 1 1 0 xy 32 ${nY} +compute myTp bulk temp/profile 1 1 0 xy 32 13 + +#thermo setup +thermo ${thermo_rate} +thermo 10 +thermo_style custom step c_myT c_myTp etotal press + +#dump initial configuration +# dump 55 all custom 1 all.init.lammpstrj id type x y z vx vy vz +# dump 56 wall custom 1 wall.init.lammpstrj id type x y z +# dump_modify 55 sort id +# dump_modify 56 sort id +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 72 29 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.068 | 3.069 | 3.071 Mbytes + Step c_myT c_myTp TotEng Press + 0 2 2.054601 0.77892922 7.3417096 +Loop time of 1.90125e-06 on 4 procs for 0 steps with 2775 atoms + +26.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.901e-06 | | |100.00 + +Nlocal: 693.75 ave 800 max 578 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 266.25 ave 325 max 198 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Neighs: 6601.5 ave 8000 max 5147 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 26406 +Ave neighs/atom = 9.5156757 +Neighbor list builds = 0 +Dangerous builds = 0 +# undump 55 +# undump 56 + +##################################################################### +#equilibrate without GD + +fix nvt bulk nvt temp $T $T ${tdamp} +fix nvt bulk nvt temp 2 $T ${tdamp} +fix nvt bulk nvt temp 2 2 ${tdamp} +fix nvt bulk nvt temp 2 2 0.1 +fix_modify nvt temp myTp +WARNING: Temperature for fix modify is not for group all (src/fix_nh.cpp:1391) +fix 2 bulk enforce2d + +run ${equil} +run 1000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 3.131 | 3.132 | 3.133 Mbytes + Step c_myT c_myTp TotEng Press + 0 2 2.054601 0.77892922 7.3417096 + 10 1.9173668 1.9381538 0.77877698 7.6702283 + 20 1.7033651 1.6967466 0.7798044 8.5615039 + 30 1.5026644 1.4718046 0.78461914 9.4308883 + 40 1.4881235 1.4586031 0.79494919 9.6135307 + 50 1.6193439 1.6144665 0.81119835 9.2594114 + 60 1.7405127 1.7576881 0.82966956 8.9525458 + 70 1.7758506 1.7999706 0.84538866 8.9719793 + 80 1.7574736 1.7806782 0.85780732 9.1938511 + 90 1.7492232 1.7720284 0.86895259 9.3714617 + 100 1.7800292 1.807315 0.88044504 9.3874107 + 110 1.8442295 1.878681 0.89278276 9.2585436 + 120 1.9193695 1.9667163 0.90556381 9.0683654 + 130 1.9885753 2.0478097 0.91782871 8.8815507 + 140 2.04662 2.1105827 0.92850319 8.718882 + 150 2.0957046 2.1672706 0.93677238 8.5718869 + 160 2.144595 2.2210801 0.94188484 8.4089161 + 170 2.1802133 2.2626399 0.9429713 8.2775682 + 180 2.1868284 2.2696504 0.93931537 8.2321283 + 190 2.1838369 2.2706873 0.93069783 8.1970105 + 200 2.1943436 2.2865542 0.91717737 8.0854148 + 210 2.2029439 2.2912731 0.89906796 7.9589187 + 220 2.1891494 2.2768232 0.87764254 7.9016509 + 230 2.1677848 2.2493747 0.85497463 7.8690125 + 240 2.156695 2.2377486 0.83255207 7.8020978 + 250 2.142758 2.2237662 0.81090722 7.7510242 + 260 2.1177881 2.1967699 0.79016944 7.7477503 + 270 2.0862408 2.1669583 0.77040874 7.7740216 + 280 2.0676515 2.1446262 0.75157955 7.7544068 + 290 2.0645498 2.1425534 0.73343008 7.6746729 + 300 2.0563664 2.1358776 0.71562279 7.6114783 + 310 2.0390115 2.1198472 0.69809211 7.581719 + 320 2.0209035 2.1063385 0.68093855 7.5540946 + 330 2.012488 2.1037583 0.66418283 7.4896097 + 340 2.0166095 2.1094212 0.64762479 7.3779677 + 350 2.0172861 2.1072653 0.63109595 7.2807114 + 360 2.0065768 2.0803788 0.6147802 7.2283814 + 370 1.9970858 2.0639903 0.59905362 7.1747592 + 380 1.9925189 2.056563 0.58395055 7.103506 + 390 1.9935388 2.0546596 0.56945318 7.010305 + 400 2.0020199 2.0632095 0.55532013 6.8883647 + 410 2.009157 2.0732883 0.54128082 6.771521 + 420 2.0081687 2.0785184 0.52711525 6.6868076 + 430 1.9990498 2.0705469 0.51283203 6.6343482 + 440 1.9891528 2.0586814 0.4986104 6.5888679 + 450 1.9829175 2.0465778 0.4846738 6.5332233 + 460 1.9745599 2.031067 0.4711878 6.4903915 + 470 1.9581101 2.006674 0.45837961 6.4836654 + 480 1.9367964 1.9732882 0.44656667 6.501731 + 490 1.9258333 1.9561395 0.43605676 6.4879447 + 500 1.9287 1.9571319 0.42678362 6.4296036 + 510 1.9274696 1.9569118 0.41856553 6.3949919 + 520 1.9100149 1.9392424 0.41134511 6.4307452 + 530 1.8827127 1.9059412 0.40536565 6.5126603 + 540 1.8660696 1.8912024 0.40096324 6.5610607 + 550 1.8701883 1.9043254 0.3982457 6.536251 + 560 1.8842923 1.9289528 0.39698123 6.4785367 + 570 1.8906147 1.9462124 0.39684504 6.4547374 + 580 1.8895472 1.9472747 0.39763233 6.4630103 + 590 1.895375 1.9551336 0.39926725 6.449517 + 600 1.9115711 1.9737109 0.40163655 6.3995241 + 610 1.92823 1.9851787 0.404506 6.3499339 + 620 1.9360678 1.9889572 0.40767569 6.3367514 + 630 1.9346853 1.9836719 0.41105958 6.3637995 + 640 1.9266095 1.9757908 0.41472954 6.4212842 + 650 1.9213863 1.9719496 0.41879537 6.4707692 + 660 1.922962 1.9702923 0.42332926 6.4949933 + 670 1.9238956 1.9707534 0.42836303 6.5212631 + 680 1.9212675 1.9740379 0.43388709 6.5608915 + 690 1.9210314 1.976311 0.43982007 6.5904702 + 700 1.928081 1.9868449 0.44610463 6.5915021 + 710 1.9428895 2.0044235 0.45257857 6.5616141 + 720 1.9554783 2.0176139 0.45898384 6.5367529 + 730 1.969838 2.0327907 0.46505662 6.5017635 + 740 1.9840204 2.0467126 0.47058703 6.4649226 + 750 1.9946633 2.0526929 0.47535832 6.4399342 + 760 2.0018048 2.0535606 0.47924291 6.4280737 + 770 1.9991703 2.0483426 0.48222842 6.4537535 + 780 1.9850797 2.0312444 0.48443072 6.5234271 + 790 1.9691589 2.0154006 0.4861158 6.5995894 + 800 1.9612641 2.0031407 0.48754831 6.6430968 + 810 1.9637155 2.0074142 0.48891261 6.6444644 + 820 1.9691691 2.0110229 0.49018604 6.6304512 + 830 1.9763962 2.0190998 0.49130448 6.6060594 + 840 1.9908278 2.0352615 0.49213189 6.5510683 + 850 2.0105715 2.0558403 0.49238435 6.4743276 + 860 2.0227982 2.0645732 0.49173076 6.4260863 + 870 2.015555 2.064081 0.48998228 6.4528588 + 880 1.9889672 2.0320831 0.48722022 6.5532269 + 890 1.9632172 2.0025881 0.48392295 6.6494723 + 900 1.9527429 1.9887196 0.48054642 6.6846937 + 910 1.9567815 1.9953408 0.47726539 6.6606541 + 920 1.9666996 2.0084955 0.47397593 6.6100666 + 930 1.9702885 2.014774 0.47048741 6.5805871 + 940 1.9661802 2.0116846 0.46671831 6.579539 + 950 1.9576953 1.9960728 0.46273983 6.5967841 + 960 1.9428073 1.9802284 0.45879028 6.6395002 + 970 1.9256011 1.9584581 0.45515059 6.6916425 + 980 1.913512 1.9478848 0.45214528 6.7233279 + 990 1.9174938 1.9449699 0.44994026 6.6943867 + 1000 1.9365527 1.9663901 0.44852349 6.6101761 +Loop time of 0.136245 on 4 procs for 1000 steps with 2775 atoms + +Performance: 634150.810 tau/day, 7339.708 timesteps/s, 20.368 Matom-step/s +98.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.05652 | 0.058835 | 0.061144 | 0.7 | 43.18 +Neigh | 0.0077706 | 0.0082387 | 0.0086435 | 0.4 | 6.05 +Comm | 0.0079304 | 0.010631 | 0.013709 | 2.5 | 7.80 +Output | 0.003516 | 0.0036313 | 0.0038326 | 0.2 | 2.67 +Modify | 0.045283 | 0.048616 | 0.052008 | 1.3 | 35.68 +Other | | 0.006293 | | | 4.62 + +Nlocal: 693.75 ave 800 max 584 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 255.25 ave 323 max 192 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 6083 ave 7383 max 4741 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 24332 +Ave neighs/atom = 8.7682883 +Neighbor list builds = 38 +Dangerous builds = 0 + +##################################################################### +#initialize the COM velocity and run to achieve steady-state + +#calculate velocity to add: V=J/rho_total +variable Vadd equal $J*lx*ly/count(bulk) +variable Vadd equal 0.1*lx*ly/count(bulk) + +#first remove any COM velocity, then add back the streaming velocity +velocity bulk zero linear +velocity bulk set ${Vadd} 0.0 0.0 units box sum yes mom no +velocity bulk set 0.149532710280374 0.0 0.0 units box sum yes mom no + +fix GD bulk flow/gauss 1 0 0 #energy yes +#fix_modify GD energy yes + +run ${stabil} +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Gaussian dynamics package: doi:10.1021/acs.jpcb.6b09387 + +@Article{strong_water_2017, +title = {The Dynamics of Water in Porous Two-Dimensional Crystals}, +volume = {121}, +number = {1}, +url = {https://doi.org/10.1021/acs.jpcb.6b09387}, +doi = {10.1021/acs.jpcb.6b09387}, +urldate = {2016-12-07}, +journal = {J.~Phys.\ Chem.~B}, +author = {Strong, Steven E. and Eaves, Joel D.}, +year = {2017}, +pages = {189--207} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 3.131 | 3.132 | 3.133 Mbytes + Step c_myT c_myTp TotEng Press + 1000 1.9477212 1.9663901 0.45928547 6.6176422 + 1010 1.9617328 1.9828061 0.45840963 6.555968 + 1020 1.9570976 1.9825696 0.45782895 6.5690613 + 1030 1.9356292 1.9690101 0.45753984 6.6493822 + 1040 1.9174914 1.9448868 0.4577768 6.7171474 + 1050 1.9202482 1.9432766 0.4588733 6.7039634 + 1060 1.9419998 1.9718217 0.46086407 6.617366 + 1070 1.9666048 1.996346 0.46339522 6.5207175 + 1080 1.9775489 2.0078489 0.46608862 6.4794239 + 1090 1.9725172 2.0005028 0.46876174 6.5044299 + 1100 1.9659582 1.9931537 0.47147394 6.5409107 + 1110 1.9670607 1.9965504 0.47432892 6.5527414 + 1120 1.9716302 1.9984924 0.47732198 6.5530022 + 1130 1.9752703 2.0057031 0.48043914 6.5579379 + 1140 1.976368 2.0061152 0.48358744 6.5719123 + 1150 1.9748014 2.0056689 0.48673155 6.5957896 + 1160 1.9729115 2.0036854 0.48986563 6.6200102 + 1170 1.9702742 2.0016461 0.49302426 6.6455948 + 1180 1.9680418 1.9978705 0.49625385 6.6697165 + 1190 1.9640159 1.9937501 0.49962311 6.7004634 + 1200 1.9616719 1.9932085 0.50320747 6.7253219 + 1210 1.9658831 1.9985624 0.50702861 6.7242078 + 1220 1.9790884 2.0132679 0.51100573 6.688483 + 1230 1.9946749 2.0324782 0.51491484 6.6422423 + 1240 2.0039182 2.0484588 0.5184382 6.6190292 + 1250 2.0033685 2.0545791 0.52130299 6.6322608 + 1260 1.9991533 2.0533011 0.52339221 6.6590872 + 1270 1.9969511 2.0571182 0.5246505 6.6789676 + 1280 1.9911353 2.0488281 0.52501304 6.7125634 + 1290 1.9712819 2.0209437 0.52460315 6.7967237 + 1300 1.9486195 1.9967749 0.5238106 6.886265 + 1310 1.951612 2.0051749 0.52294383 6.8723332 + 1320 1.9800953 2.0397207 0.52186525 6.7537937 + 1330 2.0084961 2.0723584 0.52001894 6.6279995 + 1340 2.021654 2.085105 0.51675149 6.554461 + 1350 2.0193685 2.0672662 0.5117514 6.5349176 + 1360 2.0084017 2.0471065 0.50518646 6.5453141 + 1370 1.994978 2.030683 0.49737164 6.5627932 + 1380 1.9781978 2.0044236 0.48871071 6.5903683 + 1390 1.9572368 1.9833426 0.47978207 6.6326472 + 1400 1.9400481 1.956474 0.47117436 6.6600696 + 1410 1.9380218 1.9552501 0.46336325 6.6314231 + 1420 1.9494747 1.9681145 0.45642218 6.5527615 + 1430 1.9610978 1.9824506 0.4501938 6.4763851 + 1440 1.9639503 1.9890985 0.44452289 6.4375535 + 1450 1.9560428 1.9821594 0.43936988 6.4453654 + 1460 1.9399344 1.9627639 0.43486138 6.488055 + 1470 1.9247229 1.9440629 0.43123378 6.5292381 + 1480 1.9213375 1.9369273 0.42866841 6.5271097 + 1490 1.9265729 1.9383637 0.42719968 6.4940959 + 1500 1.930987 1.9416689 0.4267225 6.4673585 + 1510 1.9303444 1.9418498 0.42714462 6.4648027 + 1520 1.9258423 1.940384 0.42844066 6.4834098 + 1530 1.9131202 1.9296653 0.4306338 6.5390881 + 1540 1.8990016 1.9101025 0.43386405 6.6052091 + 1550 1.9012878 1.9120047 0.43834036 6.6147792 + 1560 1.9153287 1.9388751 0.44404054 6.5851781 + 1570 1.9266928 1.9596147 0.45057056 6.5705776 + 1580 1.9358289 1.9745564 0.45744022 6.5674622 + 1590 1.9415248 1.9818707 0.46425451 6.5778534 + 1600 1.9466876 1.98498 0.47075833 6.5878483 + 1610 1.9557175 1.9930268 0.47674103 6.5777205 + 1620 1.9712902 2.0112337 0.48200984 6.5367922 + 1630 1.9900646 2.0303946 0.48631888 6.4790095 + 1640 1.9960901 2.039173 0.48947508 6.4661574 + 1650 1.9879046 2.0329046 0.49151173 6.504063 + 1660 1.9832967 2.0325843 0.49266284 6.5255647 + 1670 1.9875656 2.034783 0.49313513 6.5093662 + 1680 1.9967654 2.0492931 0.49299896 6.4699787 + 1690 2.0025957 2.0532539 0.49216931 6.4389613 + 1700 2.0022202 2.0424508 0.49070612 6.4276702 + 1710 2.0083188 2.0437945 0.48879489 6.3909243 + 1720 2.0178792 2.0439212 0.48646135 6.3411063 + 1730 2.0210944 2.0444299 0.48367905 6.3141106 + 1740 2.0170566 2.0337564 0.48044951 6.3158785 + 1750 2.0099049 2.0231598 0.47693196 6.3313851 + 1760 1.9990395 2.0132651 0.47329842 6.3631889 + 1770 1.9823237 1.9969291 0.46970233 6.4208124 + 1780 1.9640169 1.9798655 0.4663519 6.4879798 + 1790 1.9457657 1.9626633 0.46348315 6.557165 + 1800 1.9253222 1.9443136 0.46134123 6.6365286 + 1810 1.9123385 1.9339816 0.46011796 6.6879846 + 1820 1.9098744 1.9287702 0.45993599 6.7001355 + 1830 1.9096278 1.9220243 0.460898 6.7020982 + 1840 1.9223081 1.9378963 0.46303724 6.6558132 + 1850 1.9481113 1.9718786 0.46616351 6.5618175 + 1860 1.9704143 1.9931969 0.46987208 6.484088 + 1870 1.9864974 2.017655 0.47377416 6.4360445 + 1880 1.993165 2.0276398 0.47750238 6.4296162 + 1890 1.9852177 2.0249022 0.48088382 6.4843765 + 1900 1.9692398 2.0101062 0.4839255 6.5735477 + 1910 1.9516968 1.9893586 0.48689095 6.6692995 + 1920 1.9380452 1.9750949 0.49014596 6.7488323 + 1930 1.9323223 1.9719977 0.49399992 6.7947629 + 1940 1.9402144 1.9786701 0.49859677 6.7846787 + 1950 1.9589972 1.9956447 0.50392573 6.7291499 + 1960 1.979631 2.0201087 0.50984934 6.6648708 + 1970 2.0002749 2.0392081 0.51605302 6.6026647 + 1980 2.0143746 2.0524405 0.52221277 6.5687042 + 1990 2.0166553 2.0466885 0.5281276 6.5835144 + 2000 2.0130617 2.0424179 0.53381506 6.6234083 +Loop time of 0.141455 on 4 procs for 1000 steps with 2775 atoms + +Performance: 610793.635 tau/day, 7069.371 timesteps/s, 19.618 Matom-step/s +99.7% 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.05683 | 0.060353 | 0.062989 | 1.0 | 42.67 +Neigh | 0.0072596 | 0.0077408 | 0.0081397 | 0.4 | 5.47 +Comm | 0.0075975 | 0.010647 | 0.014725 | 3.0 | 7.53 +Output | 0.0035631 | 0.0036749 | 0.0038919 | 0.2 | 2.60 +Modify | 0.050043 | 0.052936 | 0.05613 | 1.2 | 37.42 +Other | | 0.006104 | | | 4.32 + +Nlocal: 693.75 ave 799 max 589 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 259 ave 320 max 196 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 6092.5 ave 7344 max 4845 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 24370 +Ave neighs/atom = 8.781982 +Neighbor list builds = 35 +Dangerous builds = 0 + +##################################################################### +#collect data + +#print the applied force and total flux to ensure conservation of Jx +variable Fapp equal f_GD[1] +compute vxBulk bulk reduce sum vx +compute vyBulk bulk reduce sum vy +variable invVol equal 1.0/(lx*ly) +variable jx equal c_vxBulk*${invVol} +variable jx equal c_vxBulk*0.00025 +variable jy equal c_vyBulk*${invVol} +variable jy equal c_vyBulk*0.00025 +variable curr_step equal step +variable p_Fapp format Fapp %.3f +variable p_jx format jx %.5g +variable p_jy format jy %.5g +fix print_vCOM all print ${dump_rate} "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" +fix print_vCOM all print 50 "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" + +#compute IK1 pressure profile +#see Todd, Evans, and Davis, Phys. Rev. E 52(2) 1995, p. 1627 +#use profile-unbiased temperature to remove the streaming velocity +#from the kinetic part of the pressure +compute spa bulk stress/atom myTp + +#for the pressure profile, use the same grid as the PUT +compute chunkX bulk chunk/atom bin/1d x lower ${dX} units box +compute chunkX bulk chunk/atom bin/1d x lower 3.125 units box + +#output pressure profile and other profiles +#the pressure profile is (-1/2V)*(c_spa[1] + c_spa[2]), where +#V is the volume of a slice +fix profiles bulk ave/chunk 1 1 ${dump_rate} chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite +fix profiles bulk ave/chunk 1 1 50 chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite + +#compute velocity profile across the pipe with a finer grid +variable dYnew equal ${dY}/10 +variable dYnew equal 3.07692307692308/10 +compute chunkY bulk chunk/atom bin/1d y center ${dYnew} units box region pipe +compute chunkY bulk chunk/atom bin/1d y center 0.307692307692308 units box region pipe +fix velYprof bulk ave/chunk 1 1 ${dump_rate} chunkY vx file Vy_profile ave running overwrite +fix velYprof bulk ave/chunk 1 1 50 chunkY vx file Vy_profile ave running overwrite + +#full trajectory +# dump 7 bulk custom ${dump_rate} bulk.lammpstrj id type x y z +# dump_modify 7 sort id + +run ${run} +run 2000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 5.139 | 5.14 | 5.141 Mbytes + Step c_myT c_myTp TotEng Press + 2000 2.0130617 2.0424179 0.53381506 6.6234083 + 2010 2.011712 2.0399428 0.53937165 6.6546944 + 2020 2.0177252 2.0516588 0.54483848 6.6575988 + 2030 2.0192267 2.054258 0.55012466 6.6761208 + 2040 2.0155308 2.0513866 0.55518707 6.7132509 + 2050 2.016831 2.0539288 0.56007247 6.7306192 + 2060 2.0213378 2.0690043 0.56479732 6.7330132 + 2070 2.0292987 2.0799825 0.56913353 6.7186216 + 2080 2.0342188 2.0900923 0.57283821 6.7098434 + 2090 2.0376411 2.096351 0.57566175 6.6998818 + 2100 2.053128 2.1238481 0.57727694 6.637431 + 2110 2.0783941 2.1609599 0.5768993 6.5304031 + 2120 2.0887269 2.1760645 0.57341638 6.4706853 + 2130 2.06944 2.1522354 0.5659988 6.5099284 + 2140 2.0380605 2.115767 0.55466476 6.5802578 + 2150 2.0195872 2.0868424 0.54025148 6.5885111 + 2160 2.0061251 2.069266 0.52417244 6.5682875 + 2170 1.992682 2.0526743 0.50812177 6.5470052 + 2180 1.9816004 2.0352692 0.49354583 6.5244099 + 2190 1.9688265 2.0226679 0.4811848 6.5185172 + 2200 1.9574266 2.000155 0.47107703 6.5176047 + 2210 1.9502736 1.9925522 0.46298224 6.5078398 + 2220 1.9475332 1.9936032 0.45641728 6.4850252 + 2230 1.9545128 2.0045053 0.45087489 6.4291405 + 2240 1.9627871 2.0112148 0.44588526 6.3715676 + 2250 1.9617694 2.0073769 0.44121477 6.3541518 + 2260 1.9579423 2.0079137 0.43675541 6.3542735 + 2270 1.9475845 1.998983 0.43243494 6.3854071 + 2280 1.9253275 1.9715083 0.42839782 6.464845 + 2290 1.8996763 1.9456257 0.42496367 6.5591177 + 2300 1.8823546 1.9240543 0.42247729 6.6211062 + 2310 1.8844318 1.9216768 0.42116372 6.6085376 + 2320 1.8965287 1.933936 0.42103218 6.5584198 + 2330 1.902103 1.9433708 0.421956 6.5350698 + 2340 1.9061826 1.950462 0.42378825 6.5228738 + 2350 1.9180306 1.961141 0.42644522 6.489172 + 2360 1.9296124 1.9748542 0.42981448 6.4628168 + 2370 1.9328566 1.9718181 0.43373762 6.4721746 + 2380 1.9360042 1.9769998 0.43819906 6.4840942 + 2390 1.9387073 1.9778749 0.44317927 6.49778 + 2400 1.9445619 1.9882647 0.4486142 6.4971899 + 2410 1.9553344 1.9997412 0.45435544 6.4749774 + 2420 1.9710783 2.0211926 0.46019236 6.4320181 + 2430 1.9903873 2.046553 0.46575694 6.3751343 + 2440 2.0041158 2.0721071 0.47060398 6.3415121 + 2450 2.0020392 2.0728953 0.47431806 6.3708096 + 2460 1.9839851 2.0568906 0.47681718 6.465129 + 2470 1.9566365 2.0258852 0.47838596 6.5966256 + 2480 1.929674 2.0032606 0.47952215 6.7260074 + 2490 1.9153613 1.990031 0.48061628 6.8035919 + 2500 1.9188373 1.9920514 0.4819225 6.8075788 + 2510 1.9371656 2.0138698 0.48343533 6.7492701 + 2520 1.9566481 2.0340995 0.48485699 6.6821181 + 2530 1.9636141 2.0389496 0.48583392 6.6581326 + 2540 1.9585172 2.0207113 0.48622314 6.6762792 + 2550 1.9516934 2.0024186 0.48621721 6.6980104 + 2560 1.9509543 1.9960852 0.48612286 6.6946311 + 2570 1.9601672 2.0072552 0.48602872 6.6528934 + 2580 1.973804 2.0230879 0.48576601 6.5942862 + 2590 1.9788378 2.034436 0.48505027 6.5689819 + 2600 1.9716493 2.0208578 0.48368043 6.5897554 + 2610 1.9618006 2.007098 0.48174365 6.6188626 + 2620 1.9631458 2.0075461 0.4793429 6.6026194 + 2630 1.9706918 2.0174955 0.47638698 6.5591053 + 2640 1.9759585 2.0213828 0.47264742 6.5198595 + 2650 1.9761708 2.0225139 0.46794373 6.4977306 + 2660 1.9611574 2.0083871 0.46221598 6.5299021 + 2670 1.9342882 1.9720247 0.45576624 6.6034695 + 2680 1.9142009 1.9520382 0.44913109 6.6474082 + 2690 1.9052096 1.9428107 0.4426988 6.645123 + 2700 1.902446 1.9459937 0.43672046 6.6152926 + 2710 1.9099036 1.9594727 0.43120889 6.5473804 + 2720 1.9180788 1.9767479 0.42599739 6.4792536 + 2730 1.9142892 1.9798275 0.42092791 6.4604982 + 2740 1.9019844 1.9674244 0.41601841 6.4795855 + 2750 1.8895632 1.958412 0.41144638 6.5037424 + 2760 1.8824401 1.9494985 0.40739848 6.5113925 + 2770 1.8852759 1.9525073 0.40398809 6.484535 + 2780 1.8998168 1.9664907 0.40114076 6.4159782 + 2790 1.9153937 1.9810349 0.39863439 6.346934 + 2800 1.9162707 1.9824285 0.39627973 6.3364828 + 2810 1.9087999 1.9666258 0.39408314 6.360755 + 2820 1.9073152 1.956153 0.39226387 6.3655719 + 2830 1.9091743 1.9493705 0.39098546 6.3595054 + 2840 1.9042021 1.9424118 0.39036698 6.381752 + 2850 1.8901401 1.9353495 0.39057524 6.4417859 + 2860 1.872943 1.915215 0.39190057 6.5158585 + 2870 1.8732626 1.9181551 0.39474702 6.5269257 + 2880 1.8931021 1.9396049 0.39938934 6.467715 + 2890 1.9217069 1.9733171 0.40581935 6.3811936 + 2900 1.9452213 1.9949806 0.41374968 6.3217226 + 2910 1.9591065 2.0105363 0.42280483 6.3087055 + 2920 1.9649158 2.0234068 0.43256139 6.3353204 + 2930 1.9647653 2.0265233 0.4425691 6.3902862 + 2940 1.9623876 2.0281154 0.45237409 6.4560778 + 2950 1.9591057 2.0276078 0.46164197 6.5239614 + 2960 1.9556907 2.0254377 0.47016674 6.5883236 + 2970 1.9524475 2.0203546 0.47782337 6.6457078 + 2980 1.9556442 2.0212175 0.48459527 6.6731473 + 2990 1.9663638 2.0285202 0.49047217 6.667322 + 3000 1.976263 2.0326354 0.49540098 6.6601492 + 3010 1.9734917 2.0251301 0.49938916 6.6970878 + 3020 1.955368 1.9974693 0.50265656 6.7865104 + 3030 1.9476644 1.9780945 0.50564273 6.8327176 + 3040 1.9584769 1.9887952 0.50867872 6.8046262 + 3050 1.9705616 2.0030557 0.51168699 6.7669575 + 3060 1.9766986 2.0112576 0.51444822 6.74919 + 3070 1.9766671 2.0076853 0.51685838 6.7523339 + 3080 1.9763383 2.0045916 0.51896849 6.7532253 + 3090 1.9855877 2.0260371 0.52081441 6.7160131 + 3100 2.0011042 2.042205 0.52215192 6.653598 + 3110 2.0039819 2.0511266 0.52275172 6.6355885 + 3120 1.9958773 2.0457899 0.52253307 6.6565817 + 3130 1.9933925 2.04521 0.52158082 6.6543706 + 3140 1.9936643 2.0477262 0.51996279 6.639564 + 3150 1.9921223 2.0455965 0.51768794 6.6291901 + 3160 1.9914788 2.0365842 0.51483187 6.6154874 + 3170 1.9922866 2.0422451 0.51144091 6.5976334 + 3180 1.9872806 2.0376593 0.50747923 6.6043774 + 3190 1.9708577 2.0198422 0.50308657 6.6551127 + 3200 1.9534272 1.9982319 0.49857904 6.7093718 + 3210 1.9423425 1.9876311 0.49429833 6.7370529 + 3220 1.941974 1.984738 0.49043179 6.7218879 + 3230 1.9456357 1.9916666 0.48697785 6.6917144 + 3240 1.9392412 1.9874858 0.48388805 6.7004046 + 3250 1.9312152 1.9814714 0.4812083 6.7175714 + 3260 1.9364393 1.9840125 0.47897357 6.6870787 + 3270 1.9490184 1.9871802 0.47715672 6.6308261 + 3280 1.9578901 1.9917218 0.47568803 6.5896589 + 3290 1.9598612 1.9918098 0.47449561 6.5756965 + 3300 1.9538424 1.9845316 0.47357576 6.5931068 + 3310 1.944957 1.9676243 0.47302774 6.6211221 + 3320 1.9479975 1.9720828 0.47296613 6.6058089 + 3330 1.9569283 1.98719 0.47330356 6.5698601 + 3340 1.9558114 1.9861834 0.47383928 6.5729191 + 3350 1.9461606 1.9777192 0.47452365 6.6090135 + 3360 1.942095 1.9776297 0.47540879 6.6255417 + 3370 1.9482423 1.981145 0.47643851 6.6032207 + 3380 1.9564098 1.992645 0.47752314 6.5736007 + 3390 1.9607986 2.0006048 0.47852085 6.5587349 + 3400 1.9595637 2.0047228 0.47933656 6.5656692 + 3410 1.9628181 2.013785 0.47991082 6.5570579 + 3420 1.9698466 2.0200788 0.48018617 6.536373 + 3430 1.969877 2.0210764 0.48013786 6.543084 + 3440 1.96327 2.0103631 0.47979187 6.5761448 + 3450 1.9566516 1.9996494 0.47933398 6.6098616 + 3460 1.9511915 1.9976175 0.47891646 6.6401481 + 3470 1.9410601 1.9950284 0.47859124 6.6862584 + 3480 1.9307395 1.98193 0.47840998 6.7307929 + 3490 1.9206678 1.9678856 0.47853003 6.7702613 + 3500 1.9139405 1.955324 0.47914241 6.7934071 + 3510 1.9206383 1.9571761 0.48041531 6.763312 + 3520 1.9449301 1.9816996 0.4823109 6.6651452 + 3530 1.9752924 2.0115126 0.48452681 6.5438659 + 3540 1.9951599 2.037759 0.48660438 6.463461 + 3550 2.00071 2.0413872 0.48813252 6.4405933 + 3560 1.9939017 2.0277566 0.48901382 6.4684771 + 3570 1.9766844 2.0031366 0.48946452 6.5392906 + 3580 1.9600494 1.9790718 0.48988281 6.6106542 + 3590 1.9522334 1.9727673 0.49062615 6.6517495 + 3600 1.9522007 1.9829458 0.49183552 6.6635632 + 3610 1.9614098 1.9992781 0.49340617 6.6407777 + 3620 1.9739926 2.0159629 0.49511752 6.6062456 + 3630 1.9726539 2.0152219 0.49675445 6.6254361 + 3640 1.9613098 2.0017247 0.49829012 6.6828523 + 3650 1.9577727 2.0000723 0.49991877 6.7111789 + 3660 1.9626403 2.0037309 0.50175296 6.7072182 + 3670 1.9603974 1.9937256 0.50383808 6.7277464 + 3680 1.9532611 1.9846903 0.50638429 6.766139 + 3690 1.9541656 1.9798331 0.50962883 6.7752527 + 3700 1.9656726 1.9951191 0.51377056 6.7462001 + 3710 1.9834474 2.0193011 0.5187681 6.6957856 + 3720 2.0017373 2.0396413 0.52433682 6.6470375 + 3730 2.0109702 2.0469463 0.53011728 6.6363717 + 3740 2.0096858 2.0458572 0.53588234 6.6682278 + 3750 2.0066189 2.0519842 0.54153099 6.7085484 + 3760 2.0096126 2.0561094 0.54689937 6.7250789 + 3770 2.0117777 2.0668795 0.55183559 6.7400962 + 3780 2.0154601 2.0763941 0.55607392 6.7423369 + 3790 2.0313954 2.0972106 0.55930714 6.6920109 + 3800 2.0496133 2.1176374 0.56110467 6.6271089 + 3810 2.0553084 2.1205041 0.56098738 6.6034668 + 3820 2.0478771 2.1131255 0.5587031 6.6239896 + 3830 2.0342107 2.0991257 0.55418078 6.6632309 + 3840 2.0142205 2.0767165 0.54756321 6.7196407 + 3850 1.9879527 2.0516847 0.53919957 6.7932756 + 3860 1.9593315 2.0232738 0.52966136 6.8686983 + 3870 1.9362884 1.9952027 0.51970092 6.9156687 + 3880 1.9292997 1.9883081 0.50996282 6.8957696 + 3890 1.9372438 1.9978667 0.50073929 6.8160963 + 3900 1.949918 2.0107188 0.49208883 6.7186535 + 3910 1.9547594 2.0160936 0.48397839 6.6537348 + 3920 1.9543567 2.0191268 0.47640162 6.6136067 + 3930 1.9582199 2.0200359 0.46933873 6.5629726 + 3940 1.9644631 2.0304625 0.4627222 6.5077177 + 3950 1.9645882 2.0301829 0.45644411 6.4795258 + 3960 1.9546999 2.0197242 0.45050583 6.4943664 + 3970 1.9424307 2.0063453 0.44500625 6.5237707 + 3980 1.9281472 1.9910524 0.440105 6.5640156 + 3990 1.9168821 1.9763691 0.43594018 6.592621 + 4000 1.9150056 1.9752502 0.43256475 6.585564 +Loop time of 0.29535 on 4 procs for 2000 steps with 2775 atoms + +Performance: 585068.702 tau/day, 6771.628 timesteps/s, 18.791 Matom-step/s +98.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.11499 | 0.12105 | 0.12753 | 1.6 | 40.99 +Neigh | 0.015593 | 0.01655 | 0.017426 | 0.6 | 5.60 +Comm | 0.011343 | 0.020696 | 0.029105 | 5.0 | 7.01 +Output | 0.0076551 | 0.010557 | 0.01165 | 1.6 | 3.57 +Modify | 0.10677 | 0.11421 | 0.1196 | 1.4 | 38.67 +Other | | 0.01228 | | | 4.16 + +Nlocal: 693.75 ave 801 max 584 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 256.25 ave 313 max 200 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 6078.25 ave 7398 max 4746 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 24313 +Ave neighs/atom = 8.7614414 +Neighbor list builds = 75 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.1 b/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.1 deleted file mode 100644 index bb9167f4901..00000000000 --- a/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.1 +++ /dev/null @@ -1,909 +0,0 @@ -LAMMPS (6 Jul 2017) - using 1 OpenMP thread(s) per MPI task -#LAMMPS input script -#in.GD -#see README for details - -############################################################################### -#initialize variables -clear - using 1 OpenMP thread(s) per MPI task - -#frequency for outputting info (timesteps) -variable dump_rate equal 50 -variable thermo_rate equal 10 - -#equilibration time (timesteps) -variable equil equal 1000 - -#stabilization time (timesteps to reach steady-state) -variable stabil equal 1000 - -#data collection time (timesteps) -variable run equal 2000 - -#length of pipe -variable L equal 30 - -#width of pipe -variable d equal 20 - -#flux (mass/sigma*tau) -variable J equal 0.1 - -#simulation box dimensions -variable Lx equal 100 -variable Ly equal 40 - -#bulk fluid density -variable dens equal 0.8 - -#lattice spacing for wall atoms -variable aWall equal 1.0 #1.7472 - -#timestep -variable ts equal 0.001 - -#temperature -variable T equal 2.0 - -#thermostat damping constant -variable tdamp equal ${ts}*100 -variable tdamp equal 0.001*100 - -units lj -dimension 2 -atom_style atomic - - -############################################################################### -#create box - -#create lattice with the spacing aWall -variable rhoWall equal ${aWall}^(-2) -variable rhoWall equal 1^(-2) -lattice sq ${rhoWall} -lattice sq 1 -Lattice spacing in x,y,z = 1 1 1 - -#modify input dimensions to be multiples of aWall -variable L1 equal round($L/${aWall})*${aWall} -variable L1 equal round(30/${aWall})*${aWall} -variable L1 equal round(30/1)*${aWall} -variable L1 equal round(30/1)*1 -variable d1 equal round($d/${aWall})*${aWall} -variable d1 equal round(20/${aWall})*${aWall} -variable d1 equal round(20/1)*${aWall} -variable d1 equal round(20/1)*1 -variable Ly1 equal round(${Ly}/${aWall})*${aWall} -variable Ly1 equal round(40/${aWall})*${aWall} -variable Ly1 equal round(40/1)*${aWall} -variable Ly1 equal round(40/1)*1 -variable Lx1 equal round(${Lx}/${aWall})*${aWall} -variable Lx1 equal round(100/${aWall})*${aWall} -variable Lx1 equal round(100/1)*${aWall} -variable Lx1 equal round(100/1)*1 - -#create simulation box -variable lx2 equal ${Lx1}/2 -variable lx2 equal 100/2 -variable ly2 equal ${Ly1}/2 -variable ly2 equal 40/2 -region simbox block -${lx2} ${lx2} -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 ${lx2} -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 50 -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 50 -20 ${ly2} 0 0.1 units box -region simbox block -50 50 -20 20 0 0.1 units box -create_box 2 simbox -Created orthogonal box = (-50 -20 0) to (50 20 0.1) - 1 by 1 by 1 MPI processor grid - -##################################################################### -#set up potential - -mass 1 1.0 #fluid atoms -mass 2 1.0 #wall atoms - -pair_style lj/cut 2.5 -pair_modify shift yes -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 1.12246 -pair_coeff 2 2 0.0 0.0 - -neigh_modify exclude type 2 2 - -timestep ${ts} -timestep 0.001 - -##################################################################### -#create atoms - -#create wall atoms everywhere -create_atoms 2 box -Created 4000 atoms - -#define region which is "walled off" -variable dhalf equal ${d1}/2 -variable dhalf equal 20/2 -variable Lhalf equal ${L1}/2 -variable Lhalf equal 30/2 -region walltop block -${Lhalf} ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 15 ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 15 10 EDGE -0.1 0.1 units box -region wallbot block -${Lhalf} ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 15 EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 15 EDGE -10 -0.1 0.1 units box -region outsidewall union 2 walltop wallbot side out - -#remove wall atoms outside wall region -group outside region outsidewall -3349 atoms in group outside -delete_atoms group outside -Deleted 3349 atoms, new total = 651 - -#remove wall atoms that aren't on edge of wall region -variable x1 equal ${Lhalf}-${aWall} -variable x1 equal 15-${aWall} -variable x1 equal 15-1 -variable y1 equal ${dhalf}+${aWall} -variable y1 equal 10+${aWall} -variable y1 equal 10+1 -region insideTop block -${x1} ${x1} ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 ${x1} ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 14 ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 14 11 EDGE -0.1 0.1 units box -region insideBot block -${x1} ${x1} EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 ${x1} EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 14 EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 14 EDGE -11 -0.1 0.1 units box -region insideWall union 2 insideTop insideBot -group insideWall region insideWall -551 atoms in group insideWall -delete_atoms group insideWall -Deleted 551 atoms, new total = 100 - -#define new lattice, to give correct fluid density -#y lattice const must be a multiple of aWall -variable atrue equal ${dens}^(-1/2) -variable atrue equal 0.8^(-1/2) -variable ay equal round(${atrue}/${aWall})*${aWall} -variable ay equal round(1.11803398874989/${aWall})*${aWall} -variable ay equal round(1.11803398874989/1)*${aWall} -variable ay equal round(1.11803398874989/1)*1 - -#choose x lattice const to give correct density -variable ax equal (${ay}*${dens})^(-1) -variable ax equal (1*${dens})^(-1) -variable ax equal (1*0.8)^(-1) - -#change Lx to be multiple of ax -variable Lx1 equal round(${Lx}/${ax})*${ax} -variable Lx1 equal round(100/${ax})*${ax} -variable Lx1 equal round(100/1.25)*${ax} -variable Lx1 equal round(100/1.25)*1.25 -variable lx2 equal ${Lx1}/2 -variable lx2 equal 100/2 -change_box all x final -${lx2} ${lx2} units box -change_box all x final -50 ${lx2} units box -change_box all x final -50 50 units box - orthogonal box = (-50 -20 0) to (50 20 0.1) - -#define new lattice -lattice custom ${dens} a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 1 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -Lattice spacing in x,y,z = 1.25 1 1 - -#fill in rest of box with bulk particles -variable delta equal 0.001 -variable Ldelt equal ${Lhalf}+${delta} -variable Ldelt equal 15+${delta} -variable Ldelt equal 15+0.001 -variable dDelt equal ${dhalf}-${delta} -variable dDelt equal 10-${delta} -variable dDelt equal 10-0.001 -region left block EDGE -${Ldelt} EDGE EDGE -0.1 0.1 units box -region left block EDGE -15.001 EDGE EDGE -0.1 0.1 units box -region right block ${Ldelt} EDGE EDGE EDGE -0.1 0.1 units box -region right block 15.001 EDGE EDGE EDGE -0.1 0.1 units box -region pipe block -${Ldelt} ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -9.999 ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -9.999 9.999 -0.1 0.1 units box - -region bulk union 3 left pipe right -create_atoms 1 region bulk -Created 2675 atoms - -group bulk type 1 -2675 atoms in group bulk -group wall type 2 -100 atoms in group wall - -#remove atoms that are too close to wall -delete_atoms overlap 0.9 bulk wall -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 72 29 1 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) command delete_atoms, occasional - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/2d - bin: standard - (2) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/2d/newton - bin: standard -Deleted 0 atoms, new total = 2775 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes -neigh_modify exclude group wall wall - -velocity bulk create $T 78915 dist gaussian rot yes mom yes loop geom -velocity bulk create 2 78915 dist gaussian rot yes mom yes loop geom - -##################################################################### -#set up PUT -#see Evans and Morriss, Phys. Rev. Lett. 56(20) 1986, p. 2172 - -#average number of particles per box, Evans and Morriss used 2.0 -variable NperBox equal 8.0 - -#calculate box sizes -variable boxSide equal sqrt(${NperBox}/${dens}) -variable boxSide equal sqrt(8/${dens}) -variable boxSide equal sqrt(8/0.8) -variable nX equal round(lx/${boxSide}) -variable nX equal round(lx/3.16227766016838) -variable nY equal round(ly/${boxSide}) -variable nY equal round(ly/3.16227766016838) -variable dX equal lx/${nX} -variable dX equal lx/32 -variable dY equal ly/${nY} -variable dY equal ly/13 - -#temperature of fluid (excluding wall) -compute myT bulk temp - -#profile-unbiased temperature of fluid -compute myTp bulk temp/profile 1 1 0 xy ${nX} ${nY} -compute myTp bulk temp/profile 1 1 0 xy 32 ${nY} -compute myTp bulk temp/profile 1 1 0 xy 32 13 - -#thermo setup -thermo ${thermo_rate} -thermo 10 -thermo_style custom step c_myT c_myTp etotal press - -#dump initial configuration -# dump 55 all custom 1 all.init.lammpstrj id type x y z vx vy vz -# dump 56 wall custom 1 wall.init.lammpstrj id type x y z -# dump_modify 55 sort id -# dump_modify 56 sort id -run 0 -WARNING: No fixes defined, atoms won't move (../verlet.cpp:55) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 72 29 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.103 | 3.103 | 3.103 Mbytes -Step c_myT c_myTp TotEng Press - 0 2 2.0555109 0.77892922 7.3417096 -Loop time of 9.53674e-07 on 1 procs for 0 steps with 2775 atoms - -314.6% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 9.537e-07 | | |100.00 - -Nlocal: 2775 ave 2775 max 2775 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 510 ave 510 max 510 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 26406 ave 26406 max 26406 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 26406 -Ave neighs/atom = 9.51568 -Neighbor list builds = 0 -Dangerous builds = 0 -# undump 55 -# undump 56 - -##################################################################### -#equilibrate without GD - -fix nvt bulk nvt temp $T $T ${tdamp} -fix nvt bulk nvt temp 2 $T ${tdamp} -fix nvt bulk nvt temp 2 2 ${tdamp} -fix nvt bulk nvt temp 2 2 0.1 -fix_modify nvt temp myTp -WARNING: Temperature for fix modify is not for group all (../fix_nh.cpp:1395) -fix 2 bulk enforce2d - -run ${equil} -run 1000 -Per MPI rank memory allocation (min/avg/max) = 3.166 | 3.166 | 3.166 Mbytes -Step c_myT c_myTp TotEng Press - 0 2 2.0555109 0.77892922 7.3417096 - 10 1.9173594 1.9390034 0.77876976 7.6702228 - 20 1.7033394 1.6974676 0.77977799 8.5614784 - 30 1.5026161 1.4723993 0.78456655 9.4308258 - 40 1.4880481 1.4591602 0.79486693 9.6134304 - 50 1.6192437 1.6150635 0.81109069 9.2592835 - 60 1.7404087 1.7583444 0.82955456 8.952392 - 70 1.7757591 1.8006606 0.8452778 8.9717917 - 80 1.7573847 1.7813629 0.85769389 9.1936368 - 90 1.7491183 1.7726908 0.86882429 9.3712357 - 100 1.7798944 1.8079583 0.88029084 9.3871755 - 110 1.8440582 1.8793133 0.89259397 9.2582848 - 120 1.9191606 1.9673434 0.90533438 9.0680574 - 130 1.9883299 2.0484299 0.91755461 8.88117 - 140 2.0463366 2.1111872 0.92818114 8.7184178 - 150 2.0953769 2.167849 0.93639789 8.5713408 - 160 2.1442147 2.2216228 0.94145082 8.4082835 - 170 2.1797848 2.2631458 0.94246877 8.2767903 - 180 2.1863476 2.2700986 0.93873326 8.2311689 - 190 2.1832866 2.2710551 0.93003012 8.1959062 - 200 2.1937154 2.2868403 0.91642537 8.0842007 - 210 2.2022708 2.2915142 0.89824533 7.9575312 - 220 2.1884715 2.2770564 0.87677613 7.9000591 - 230 2.1671124 2.2496063 0.85409501 7.8673156 - 240 2.1560417 2.2379998 0.83167878 7.8003228 - 250 2.1421449 2.2240624 0.81004723 7.7491508 - 260 2.1172164 2.1971044 0.78931978 7.7457415 - 270 2.0856847 2.1672998 0.76956352 7.7719788 - 280 2.0670685 2.1449303 0.75073364 7.7524614 - 290 2.0639481 2.1428374 0.73258016 7.6727716 - 300 2.055776 2.1361719 0.7147669 7.6095248 - 310 2.038425 2.1209353 0.69722853 7.5797085 - 320 2.0203023 2.1066031 0.68006634 7.5521081 - 330 2.0118478 2.1039797 0.66330302 7.4877535 - 340 2.0159442 2.1096258 0.64673694 7.3761703 - 350 2.0166408 2.1075061 0.63020017 7.2788 - 360 2.0059407 2.0806316 0.61387618 7.2263941 - 370 1.9964281 2.0642074 0.59814148 7.1728041 - 380 1.9918446 2.0567527 0.58303017 7.101597 - 390 1.992835 2.0548138 0.56852431 7.0084774 - 400 2.0012934 2.0615016 0.55438401 6.8865948 - 410 2.0084291 2.073418 0.54034073 6.7697478 - 420 2.007464 2.0786717 0.52617041 6.6849032 - 430 1.9983712 2.0704366 0.51188183 6.6323103 - 440 1.9884651 2.0588515 0.49765394 6.5868356 - 450 1.982221 2.0467396 0.4837102 6.5311681 - 460 1.9738673 2.031238 0.47021649 6.4882783 - 470 1.9574246 2.0060447 0.45740021 6.4814923 - 480 1.9361065 1.9734507 0.44557947 6.4995199 - 490 1.9251024 1.9562469 0.43506067 6.4858343 - 500 1.9279545 1.9572145 0.42577835 6.4274765 - 510 1.9267504 1.9570246 0.41755013 6.3927027 - 520 1.9093405 1.9393872 0.41031829 6.4281888 - 530 1.8820555 1.9060756 0.40432569 6.5099401 - 540 1.86537 1.8912682 0.3999087 6.55843 - 550 1.8694252 1.9043192 0.39717519 6.5337875 - 560 1.8835224 1.9294105 0.39589322 6.4760141 - 570 1.8898719 1.9462433 0.39573596 6.4520041 - 580 1.8887698 1.9472764 0.39649878 6.4602989 - 590 1.8945125 1.9550624 0.39810844 6.4470226 - 600 1.9106571 1.9735939 0.40045321 6.3971026 - 610 1.9273243 1.98509 0.40330026 6.3474421 - 620 1.9351802 1.9888986 0.4064498 6.3340566 - 630 1.9337889 1.9846794 0.40981479 6.3610556 - 640 1.9257018 1.9757153 0.4134641 6.4184721 - 650 1.9204429 1.9718256 0.41750942 6.4679594 - 660 1.9220449 1.9701963 0.42202455 6.4919724 - 670 1.9230578 1.9707406 0.4270412 6.5178484 - 680 1.9204554 1.9740485 0.43255127 6.5572507 - 690 1.9201811 1.9762854 0.43847123 6.5869126 - 700 1.9271511 1.9867455 0.44474356 6.5882669 - 710 1.9418851 2.0042477 0.45120727 6.558573 - 720 1.9544547 2.0186724 0.4576061 6.5338329 - 730 1.9687971 2.0326169 0.46367507 6.4988775 - 740 1.9830308 2.0466267 0.46920367 6.4618136 - 750 1.9936981 2.0526606 0.47397868 6.4367349 - 760 2.0008431 2.0535449 0.47786748 6.4249001 - 770 1.9982133 2.0483219 0.48085757 6.4504786 - 780 1.9841544 2.0311693 0.48306488 6.5200512 - 790 1.9683122 2.0158738 0.48475632 6.5959263 - 800 1.9604618 2.003224 0.48619405 6.6392559 - 810 1.9629155 2.0075077 0.48756075 6.6406486 - 820 1.9683056 2.0110554 0.48883443 6.6269424 - 830 1.975409 2.0189161 0.48995399 6.6030215 - 840 1.9897264 2.035016 0.4907852 6.5485575 - 850 2.0094338 2.0555358 0.49104505 6.4719926 - 860 2.0217589 2.0643603 0.49040437 6.4233305 - 870 2.0147718 2.0641627 0.48866908 6.4491964 - 880 1.9883859 2.0324092 0.48592007 6.5488061 - 890 1.9625853 2.0028776 0.48263002 6.6452734 - 900 1.9520401 1.9889124 0.47925524 6.6808078 - 910 1.9559583 1.9952984 0.47597346 6.6573059 - 920 1.9657244 2.0083503 0.47268726 6.6073704 - 930 1.969288 2.0152339 0.4692054 6.5780416 - 940 1.9652206 2.0116384 0.4654438 6.5769812 - 950 1.9567495 1.9960693 0.46147541 6.5942022 - 960 1.9418452 1.980858 0.45753557 6.6369454 - 970 1.9247196 1.9585585 0.45390337 6.6888821 - 980 1.9128262 1.9481721 0.45090045 6.7198221 - 990 1.9167211 1.9451096 0.44869731 6.6912394 - 1000 1.935529 1.9662384 0.44728238 6.6079829 -Loop time of 1.307 on 1 procs for 1000 steps with 2775 atoms - -Performance: 66105.601 tau/day, 765.111 timesteps/s -98.7% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.7676 | 0.7676 | 0.7676 | 0.0 | 58.73 -Neigh | 0.088947 | 0.088947 | 0.088947 | 0.0 | 6.81 -Comm | 0.0094135 | 0.0094135 | 0.0094135 | 0.0 | 0.72 -Output | 0.019547 | 0.019547 | 0.019547 | 0.0 | 1.50 -Modify | 0.39755 | 0.39755 | 0.39755 | 0.0 | 30.42 -Other | | 0.02394 | | | 1.83 - -Nlocal: 2775 ave 2775 max 2775 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 527 ave 527 max 527 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 24332 ave 24332 max 24332 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 24332 -Ave neighs/atom = 8.76829 -Neighbor list builds = 38 -Dangerous builds = 0 - -##################################################################### -#initialize the COM velocity and run to achieve steady-state - -#calculate velocity to add: V=J/rho_total -variable Vadd equal $J*lx*ly/count(bulk) -variable Vadd equal 0.1*lx*ly/count(bulk) - -#first remove any COM velocity, then add back the streaming velocity -velocity bulk zero linear -velocity bulk set ${Vadd} 0.0 0.0 units box sum yes mom no -velocity bulk set 0.149532710280374 0.0 0.0 units box sum yes mom no - -fix GD bulk flow/gauss 1 0 0 #energy yes -#fix_modify GD energy yes - -run ${stabil} -run 1000 -Per MPI rank memory allocation (min/avg/max) = 3.166 | 3.166 | 3.166 Mbytes -Step c_myT c_myTp TotEng Press - 1000 1.9466974 1.9662384 0.45804438 6.615449 - 1010 1.9605467 1.9815754 0.45717241 6.5545496 - 1020 1.9560139 1.9823875 0.45660431 6.5672421 - 1030 1.9348326 1.9691606 0.45633148 6.6463667 - 1040 1.9167809 1.9449522 0.45657707 6.7139486 - 1050 1.9193541 1.943342 0.45767968 6.7014054 - 1060 1.9410751 1.9720491 0.45967742 6.6150379 - 1070 1.9658493 1.9964883 0.46221539 6.5178418 - 1080 1.9767205 2.0074304 0.46491236 6.4768594 - 1090 1.9714544 2.0003054 0.46759126 6.5026957 - 1100 1.9647035 1.9927455 0.4703109 6.5400181 - 1110 1.9657667 1.9959656 0.47317481 6.5519094 - 1120 1.9706062 1.9980802 0.476185 6.5512675 - 1130 1.9747655 2.0062292 0.47932281 6.554091 - 1140 1.9761245 2.0075076 0.48248327 6.5670381 - 1150 1.9744197 2.0073027 0.48562483 6.5914441 - 1160 1.9722698 2.0046687 0.48874207 6.6165575 - 1170 1.9692145 2.0013845 0.49187442 6.6438115 - 1180 1.9665609 1.9970724 0.49508053 6.6693821 - 1190 1.9625031 1.9908427 0.49843816 6.7002606 - 1200 1.960528 1.993084 0.50203044 6.7237076 - 1210 1.9649156 1.9981485 0.50587066 6.7217755 - 1220 1.9788059 2.0134511 0.50987442 6.6833452 - 1230 1.9952283 2.0343101 0.51379781 6.6340278 - 1240 2.0039391 2.0494196 0.51730872 6.6129751 - 1250 2.0019006 2.0526773 0.52014603 6.6320217 - 1260 1.9974025 2.0528914 0.52221385 6.6601786 - 1270 1.9953949 2.0561121 0.5234754 6.6796142 - 1280 1.9893864 2.0470375 0.5238632 6.7140134 - 1290 1.9694951 2.019253 0.5235093 6.798442 - 1300 1.9473901 1.9965919 0.52280384 6.8863369 - 1310 1.9511151 2.006161 0.52203882 6.8700917 - 1320 1.979341 2.0388959 0.52106938 6.7529595 - 1330 2.0073235 2.0720045 0.51935291 6.6297731 - 1340 2.0202482 2.0841419 0.51624273 6.55803 - 1350 2.0177489 2.0669046 0.51142591 6.5401753 - 1360 2.0069274 2.04717 0.50505824 6.5506533 - 1370 1.994854 2.0311383 0.49743042 6.5633001 - 1380 1.9793176 2.0077184 0.48890503 6.5859072 - 1390 1.9580907 1.9839831 0.48004316 6.6288992 - 1400 1.9415542 1.9594192 0.47143599 6.6534105 - 1410 1.9405188 1.9591825 0.46353105 6.620549 - 1420 1.9504784 1.9730647 0.45640199 6.5471784 - 1430 1.9594158 1.9819854 0.44995052 6.4802874 - 1440 1.9615108 1.9863792 0.44406411 6.44391 - 1450 1.9544127 1.9806249 0.43873409 6.4484818 - 1460 1.9384927 1.9614953 0.43408605 6.4905259 - 1470 1.9214711 1.9425515 0.43035972 6.5390434 - 1480 1.9170761 1.9300809 0.42775046 6.5409502 - 1490 1.9242904 1.9385731 0.42631007 6.5005057 - 1500 1.9307133 1.9446119 0.4258836 6.4660754 - 1510 1.9303576 1.9435389 0.42633976 6.4616415 - 1520 1.9248382 1.9408306 0.42765441 6.4832059 - 1530 1.9120794 1.9278123 0.42986958 6.5380951 - 1540 1.899122 1.9125029 0.4331459 6.5987181 - 1550 1.9030956 1.9187821 0.43765067 6.6012019 - 1560 1.9182961 1.9453782 0.44330842 6.5674222 - 1570 1.9272863 1.9613129 0.44971962 6.5619794 - 1580 1.931679 1.9698134 0.45643436 6.5780809 - 1590 1.9336692 1.9728684 0.46314752 6.6035675 - 1600 1.938895 1.9823104 0.46964519 6.6138411 - 1610 1.9510838 1.9937914 0.47568807 6.5916989 - 1620 1.9685387 2.0087314 0.48102339 6.5424432 - 1630 1.9894416 2.0295715 0.48539861 6.4757743 - 1640 1.9982699 2.0426949 0.48860411 6.4512418 - 1650 1.9901677 2.0363837 0.49062424 6.4879985 - 1660 1.9814216 2.0291326 0.49172203 6.5248034 - 1670 1.9812111 2.0293629 0.49218297 6.5253876 - 1680 1.9903906 2.0408376 0.49211747 6.4852787 - 1690 2.0015983 2.0538843 0.4914581 6.4325081 - 1700 2.009727 2.0503407 0.49011163 6.3878577 - 1710 2.0167822 2.0531002 0.4881688 6.3477054 - 1720 2.0189021 2.0445033 0.48564798 6.3273063 - 1730 2.0129713 2.0354734 0.48270666 6.3385541 - 1740 2.0048763 2.0199836 0.47950943 6.3587586 - 1750 1.9994843 2.0085942 0.47624908 6.3694119 - 1760 1.9940025 2.0072098 0.47305283 6.3816295 - 1770 1.9817431 1.9974066 0.46994486 6.4224295 - 1780 1.965171 1.9805421 0.4670779 6.4832371 - 1790 1.9474078 1.9662605 0.46466823 6.5516524 - 1800 1.9286009 1.9507751 0.46292015 6.6263366 - 1810 1.9168087 1.9437961 0.46199899 6.6759834 - 1820 1.9107555 1.9306323 0.46204129 6.7029857 - 1830 1.9135569 1.930819 0.46316484 6.6949737 - 1840 1.9345342 1.9553413 0.46532704 6.6178988 - 1850 1.9630349 1.9929548 0.46822932 6.5137866 - 1860 1.9820746 2.0188839 0.47135068 6.4489028 - 1870 1.9834959 2.0217145 0.47427805 6.4552721 - 1880 1.9731564 2.0120293 0.47692755 6.5100251 - 1890 1.9653605 2.0070624 0.47943307 6.5594235 - 1900 1.9630631 2.0095488 0.48192185 6.5912876 - 1910 1.9556778 2.0035006 0.48443107 6.6437189 - 1920 1.9408788 1.9828296 0.48710124 6.7228731 - 1930 1.9292393 1.9732376 0.49025327 6.7880112 - 1940 1.9263081 1.9708942 0.49416086 6.8162477 - 1950 1.9358375 1.976323 0.49899895 6.7946964 - 1960 1.9520543 1.9936542 0.50485961 6.7467481 - 1970 1.9709064 2.0108957 0.51165586 6.6909455 - 1980 1.9940026 2.0375428 0.51918913 6.6250463 - 1990 2.0171261 2.0646948 0.52705638 6.5649879 - 2000 2.0302713 2.0802515 0.53472229 6.5470853 -Loop time of 1.34877 on 1 procs for 1000 steps with 2775 atoms - -Performance: 64058.154 tau/day, 741.414 timesteps/s -98.7% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.77091 | 0.77091 | 0.77091 | 0.0 | 57.16 -Neigh | 0.085835 | 0.085835 | 0.085835 | 0.0 | 6.36 -Comm | 0.0093472 | 0.0093472 | 0.0093472 | 0.0 | 0.69 -Output | 0.019047 | 0.019047 | 0.019047 | 0.0 | 1.41 -Modify | 0.43949 | 0.43949 | 0.43949 | 0.0 | 32.58 -Other | | 0.02415 | | | 1.79 - -Nlocal: 2775 ave 2775 max 2775 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 530 ave 530 max 530 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 24404 ave 24404 max 24404 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 24404 -Ave neighs/atom = 8.79423 -Neighbor list builds = 36 -Dangerous builds = 0 - -##################################################################### -#collect data - -#print the applied force and total flux to ensure conservation of Jx -variable Fapp equal f_GD[1] -compute vxBulk bulk reduce sum vx -compute vyBulk bulk reduce sum vy -variable invVol equal 1.0/(lx*ly) -variable jx equal c_vxBulk*${invVol} -variable jx equal c_vxBulk*0.00025 -variable jy equal c_vyBulk*${invVol} -variable jy equal c_vyBulk*0.00025 -variable curr_step equal step -variable p_Fapp format Fapp %.3f -variable p_jx format jx %.5g -variable p_jy format jy %.5g -fix print_vCOM all print ${dump_rate} "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" -fix print_vCOM all print 50 "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" - -#compute IK1 pressure profile -#see Todd, Evans, and Davis, Phys. Rev. E 52(2) 1995, p. 1627 -#use profile-unbiased temperature to remove the streaming velocity -#from the kinetic part of the pressure -compute spa bulk stress/atom myTp - -#for the pressure profile, use the same grid as the PUT -compute chunkX bulk chunk/atom bin/1d x lower ${dX} units box -compute chunkX bulk chunk/atom bin/1d x lower 3.125 units box - -#output pressure profile and other profiles -#the pressure profile is (-1/2V)*(c_spa[1] + c_spa[2]), where -#V is the volume of a slice -fix profiles bulk ave/chunk 1 1 ${dump_rate} chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite -fix profiles bulk ave/chunk 1 1 50 chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite - -#compute velocity profile across the pipe with a finer grid -variable dYnew equal ${dY}/10 -variable dYnew equal 3.07692307692308/10 -compute chunkY bulk chunk/atom bin/1d y center ${dYnew} units box region pipe -compute chunkY bulk chunk/atom bin/1d y center 0.307692307692308 units box region pipe -fix velYprof bulk ave/chunk 1 1 ${dump_rate} chunkY vx file Vy_profile ave running overwrite -fix velYprof bulk ave/chunk 1 1 50 chunkY vx file Vy_profile ave running overwrite - -#full trajectory -# dump 7 bulk custom ${dump_rate} bulk.lammpstrj id type x y z -# dump_modify 7 sort id - -run ${run} -run 2000 -Per MPI rank memory allocation (min/avg/max) = 5.174 | 5.174 | 5.174 Mbytes -Step c_myT c_myTp TotEng Press - 2000 2.0302713 2.0802515 0.53472229 6.5470853 - 2010 2.0303419 2.0806129 0.54177821 6.5808527 - 2020 2.0245167 2.0792991 0.54803523 6.6381758 - 2030 2.0169072 2.065404 0.55345227 6.7008962 - 2040 2.0052526 2.0513817 0.55818432 6.7755868 - 2050 1.9953625 2.0366564 0.56245299 6.8382569 - 2060 2.0003667 2.0462109 0.56649798 6.8390557 - 2070 2.0238288 2.0834553 0.57023651 6.7637821 - 2080 2.045765 2.1173867 0.5730944 6.6861321 - 2090 2.0563925 2.1370313 0.57430831 6.6422581 - 2100 2.0620437 2.1480293 0.57319824 6.6080678 - 2110 2.0584437 2.1473173 0.56913597 6.5969671 - 2120 2.0532825 2.1393006 0.56154606 6.5799417 - 2130 2.0450143 2.1234905 0.55009479 6.5616931 - 2140 2.0229537 2.1004507 0.53511912 6.5854627 - 2150 1.9832556 2.0554119 0.51812599 6.6700591 - 2160 1.9444027 2.0110758 0.50163049 6.7534263 - 2170 1.9267473 1.9904528 0.48759542 6.76469 - 2180 1.9262232 1.9809353 0.47662199 6.7188048 - 2190 1.9359331 1.9854626 0.46836289 6.6406985 - 2200 1.9530728 1.9971865 0.4620366 6.5409943 - 2210 1.9657099 2.0056761 0.45692542 6.4639397 - 2220 1.9661008 2.0046161 0.45253504 6.4388081 - 2230 1.9574696 1.9947839 0.44864257 6.4528687 - 2240 1.9522284 1.9922663 0.44518111 6.4584458 - 2250 1.9518203 1.9950044 0.44206844 6.4491722 - 2260 1.9527908 1.9989603 0.4391804 6.4377912 - 2270 1.9452231 1.9932538 0.43643529 6.4607516 - 2280 1.9249341 1.9759145 0.43392742 6.5320897 - 2290 1.9087464 1.960985 0.43186869 6.5875176 - 2300 1.9103289 1.964731 0.43039882 6.5765021 - 2310 1.9182062 1.9783814 0.4294628 6.5434488 - 2320 1.9204281 1.9796609 0.42889381 6.5351629 - 2330 1.916279 1.9720659 0.42866391 6.5562619 - 2340 1.9062866 1.9587628 0.42890166 6.6033936 - 2350 1.9024117 1.9566812 0.42979475 6.6297969 - 2360 1.908153 1.960687 0.43141898 6.6215148 - 2370 1.9115944 1.9663337 0.43376668 6.6236491 - 2380 1.9086193 1.9637867 0.4367911 6.6529568 - 2390 1.9039907 1.9610268 0.44053991 6.6926343 - 2400 1.9034944 1.9609406 0.44508818 6.7193441 - 2410 1.9151521 1.9753641 0.4504458 6.7015957 - 2420 1.9314517 1.9925924 0.45644382 6.6669864 - 2430 1.9433933 2.0062001 0.46277215 6.6481527 - 2440 1.9504631 2.0087015 0.46917209 6.6475757 - 2450 1.9550092 2.0094957 0.47550077 6.6556459 - 2460 1.9609689 2.0147997 0.48170141 6.6568282 - 2470 1.9730726 2.0328127 0.48763131 6.6337545 - 2480 1.9838562 2.0466643 0.49303443 6.6143423 - 2490 1.9862031 2.0473388 0.49767532 6.6245587 - 2500 1.9817565 2.0455432 0.50152131 6.6573893 - 2510 1.9785788 2.0423176 0.50460561 6.6808042 - 2520 1.9823006 2.0505106 0.50696374 6.6726698 - 2530 1.9907178 2.0553736 0.50852885 6.6402082 - 2540 2.0005205 2.0690408 0.50919421 6.5966469 - 2550 2.0079727 2.0809816 0.50872954 6.5568419 - 2560 2.0133128 2.096271 0.50682742 6.5199915 - 2570 2.0141298 2.0990846 0.50314491 6.4951991 - 2580 2.0048768 2.0874319 0.49750096 6.5025454 - 2590 1.9876498 2.0638834 0.4900201 6.5333038 - 2600 1.9720479 2.0474479 0.48105263 6.5527157 - 2610 1.9596324 2.0355764 0.4710001 6.5547867 - 2620 1.9439039 2.0106405 0.46046644 6.5646889 - 2630 1.9321714 1.9924346 0.45021207 6.5589454 - 2640 1.9349378 1.9923889 0.44082833 6.5012762 - 2650 1.9448459 2.0069955 0.43251999 6.4228945 - 2660 1.9446852 2.0050346 0.42525857 6.3921645 - 2670 1.9325594 1.9884937 0.41913362 6.4169726 - 2680 1.9121687 1.9606084 0.41434428 6.4821267 - 2690 1.8923613 1.9339385 0.41105831 6.5517615 - 2700 1.8807238 1.9191801 0.40933203 6.5949447 - 2710 1.8797367 1.918758 0.40906826 6.6001309 - 2720 1.8852961 1.9225996 0.41005611 6.58191 - 2730 1.8937478 1.9357751 0.41204348 6.5541946 - 2740 1.9019279 1.9449374 0.41476104 6.5278575 - 2750 1.9134396 1.9614415 0.41800066 6.4890769 - 2760 1.9339551 1.9913779 0.42150554 6.4159805 - 2770 1.9597826 2.0220988 0.42487614 6.3232273 - 2780 1.9753466 2.0414907 0.42771704 6.2715489 - 2790 1.9720423 2.0402016 0.42976012 6.2949288 - 2800 1.9512893 2.0172711 0.43109201 6.3878056 - 2810 1.9232302 1.9870212 0.4320928 6.5101822 - 2820 1.9026913 1.959286 0.43326424 6.6024967 - 2830 1.9033802 1.9621601 0.43500785 6.6114274 - 2840 1.9214292 1.9833838 0.43733454 6.5508757 - 2850 1.9440563 2.0087358 0.43995473 6.4713496 - 2860 1.9589136 2.0211107 0.44250821 6.4232961 - 2870 1.9588429 2.022232 0.44477492 6.4355861 - 2880 1.9456751 2.0009513 0.44676532 6.5021746 - 2890 1.9269155 1.9782929 0.44877858 6.5926531 - 2900 1.9125262 1.9554653 0.45121196 6.6657808 - 2910 1.9187855 1.9572583 0.45438665 6.6589954 - 2920 1.9416112 1.9784518 0.45839212 6.5888253 - 2930 1.9613579 1.9975032 0.46305788 6.5317424 - 2940 1.9711529 2.0102501 0.46812715 6.5148943 - 2950 1.9707865 2.0133283 0.47345305 6.5389543 - 2960 1.9732526 2.0170219 0.47898306 6.5537092 - 2970 1.9871126 2.0282309 0.48465048 6.5273492 - 2980 1.9953449 2.0404164 0.49032615 6.5227325 - 2990 1.9909136 2.037246 0.49581423 6.5664662 - 3000 1.9872474 2.0307896 0.5011051 6.6060698 - 3010 1.9944885 2.0457308 0.5062755 6.6031811 - 3020 2.0103461 2.0599491 0.51116655 6.5654871 - 3030 2.0240275 2.077342 0.5154921 6.5358852 - 3040 2.0205953 2.0704954 0.51898871 6.5708937 - 3050 2.0032184 2.0463036 0.52167438 6.657741 - 3060 1.9889341 2.0265284 0.52385964 6.7329171 - 3070 1.9795143 2.0201081 0.52588914 6.7881407 - 3080 1.9713362 2.0123964 0.52797238 6.8362858 - 3090 1.9692592 2.0106467 0.53025538 6.8616268 - 3100 1.9722487 2.0259566 0.53277635 6.8689898 - 3110 1.9703322 2.0314028 0.53541462 6.895271 - 3120 1.9594359 2.0217586 0.53808512 6.954362 - 3130 1.9524729 2.0148628 0.5409094 6.9965233 - 3140 1.9630381 2.0260807 0.54400259 6.968082 - 3150 1.9902598 2.0549364 0.54720142 6.8698796 - 3160 2.029715 2.0923999 0.54995378 6.7193678 - 3170 2.0581544 2.1137995 0.55150021 6.6053728 - 3180 2.0590739 2.1156535 0.55123668 6.5919337 - 3190 2.0400682 2.0904721 0.54894762 6.6505757 - 3200 2.0211594 2.0682597 0.54484887 6.7046468 - 3210 2.012712 2.0573114 0.53922056 6.7130909 - 3220 2.0102377 2.0554701 0.53219251 6.6919068 - 3230 2.0017671 2.0505068 0.52386898 6.6867054 - 3240 1.9854941 2.0308454 0.51458791 6.7051085 - 3250 1.9767009 2.0187664 0.50486784 6.6916859 - 3260 1.9771733 2.0186148 0.49510721 6.6424305 - 3270 1.974003 2.0136039 0.48556818 6.6078903 - 3280 1.9627665 1.9989122 0.47654147 6.6067904 - 3290 1.9491247 1.9826247 0.46834865 6.6186709 - 3300 1.9414093 1.9724941 0.4612122 6.6119543 - 3310 1.9433901 1.9715482 0.45518879 6.570612 - 3320 1.9518837 1.9872717 0.45010165 6.5057947 - 3330 1.9603874 1.9957995 0.44566728 6.4428221 - 3340 1.9615962 1.9945224 0.44167201 6.4099339 - 3350 1.955918 1.9882866 0.4380303 6.4070811 - 3360 1.9463445 1.9763654 0.43480086 6.4241178 - 3370 1.9411187 1.9683081 0.4320639 6.4296577 - 3380 1.9407224 1.9580074 0.42991627 6.4210217 - 3390 1.9402479 1.9530447 0.42850635 6.4170536 - 3400 1.9451337 1.9555771 0.42787382 6.3990336 - 3410 1.9475586 1.9612432 0.42797178 6.3953251 - 3420 1.9434927 1.960532 0.4286887 6.4210681 - 3430 1.9339054 1.9516935 0.43003682 6.4707071 - 3440 1.9234014 1.9464343 0.43214965 6.5248205 - 3450 1.9191846 1.9444777 0.43516361 6.5558451 - 3460 1.923218 1.9594606 0.43915611 6.5549213 - 3470 1.9328953 1.9792053 0.44397878 6.5327637 - 3480 1.9466227 1.9997841 0.44940599 6.4954965 - 3490 1.9672374 2.0323219 0.45511091 6.4358811 - 3500 1.9799622 2.0479841 0.46061029 6.4100217 - 3510 1.97942 2.0493411 0.46551964 6.4368108 - 3520 1.9725674 2.0389602 0.46976379 6.4892049 - 3530 1.9716429 2.0389798 0.47344292 6.5200899 - 3540 1.9789254 2.0486162 0.47659268 6.5198212 - 3550 1.9872455 2.0577517 0.47908145 6.5144586 - 3560 1.9808834 2.0545963 0.48076562 6.5633282 - 3570 1.9637165 2.0335394 0.4816783 6.6519124 - 3580 1.9407948 2.0067763 0.48212406 6.7605224 - 3590 1.9226532 1.9825887 0.482523 6.8486041 - 3600 1.9135067 1.9700999 0.48328349 6.8977859 - 3610 1.9157516 1.9720028 0.48470695 6.8977759 - 3620 1.9328644 2.0001154 0.48688778 6.8361569 - 3630 1.9568208 2.0243053 0.48963934 6.7442107 - 3640 1.9824587 2.0569223 0.49259174 6.6452535 - 3650 1.9934906 2.0686357 0.49529039 6.6020218 - 3660 1.9996281 2.0747054 0.49732231 6.5808905 - 3670 2.0038801 2.0772777 0.49838834 6.5691351 - 3680 1.9941342 2.0712365 0.49826732 6.6088108 - 3690 1.9762631 2.0486045 0.49689109 6.6739003 - 3700 1.9667284 2.034939 0.49438991 6.7010266 - 3710 1.9615089 2.0168112 0.49093736 6.7040385 - 3720 1.9613068 2.014749 0.48673789 6.6813041 - 3730 1.9731234 2.0290151 0.48175562 6.6096756 - 3740 1.9829764 2.0461907 0.47575174 6.5424752 - 3750 1.9792839 2.0454423 0.4685271 6.5237752 - 3760 1.9599692 2.0287015 0.46022485 6.5616271 - 3770 1.935975 2.0000948 0.45138017 6.6136471 - 3780 1.9236713 1.9834802 0.44262437 6.6187463 - 3790 1.9268004 1.9875324 0.43430113 6.5632772 - 3800 1.932601 1.9872595 0.42649564 6.4984765 - 3810 1.9322506 1.9814946 0.41928856 6.4617054 - 3820 1.9245737 1.9712821 0.4128224 6.461378 - 3830 1.9148568 1.9555602 0.40721003 6.4774474 - 3840 1.9049961 1.9457058 0.4026118 6.5029211 - 3850 1.8915137 1.9265199 0.39914962 6.5483592 - 3860 1.8784768 1.9058055 0.39700153 6.5962113 - 3870 1.8755236 1.9045158 0.39632769 6.6079033 - 3880 1.8841415 1.9140314 0.39710038 6.5777071 - 3890 1.8958027 1.9331148 0.39918951 6.5359786 - 3900 1.9064085 1.948805 0.40238576 6.4998591 - 3910 1.9185092 1.9675732 0.40647523 6.4610682 - 3920 1.9342595 1.9933225 0.41115392 6.4122308 - 3930 1.9482664 2.007614 0.41603495 6.373684 - 3940 1.9557759 2.0161573 0.42084462 6.3636707 - 3950 1.9573687 2.016612 0.42540421 6.3804123 - 3960 1.9486354 1.9998027 0.42974612 6.4404943 - 3970 1.936214 1.980721 0.43412037 6.5176787 - 3980 1.9274292 1.9595259 0.43885103 6.5846211 - 3990 1.9233082 1.953436 0.44425085 6.6354275 - 4000 1.9289165 1.9522097 0.45042645 6.6513836 -Loop time of 2.49114 on 1 procs for 2000 steps with 2775 atoms - -Performance: 69365.902 tau/day, 802.846 timesteps/s -98.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 | 1.4257 | 1.4257 | 1.4257 | 0.0 | 57.23 -Neigh | 0.15501 | 0.15501 | 0.15501 | 0.0 | 6.22 -Comm | 0.017206 | 0.017206 | 0.017206 | 0.0 | 0.69 -Output | 0.034183 | 0.034183 | 0.034183 | 0.0 | 1.37 -Modify | 0.81531 | 0.81531 | 0.81531 | 0.0 | 32.73 -Other | | 0.04374 | | | 1.76 - -Nlocal: 2775 ave 2775 max 2775 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 517 ave 517 max 517 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 24366 ave 24366 max 24366 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 24366 -Ave neighs/atom = 8.78054 -Neighbor list builds = 72 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:05 diff --git a/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.4 b/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.4 deleted file mode 100644 index 6171c0da5cf..00000000000 --- a/examples/PACKAGES/flow_gauss/log.6Jul17.GD.g++.4 +++ /dev/null @@ -1,909 +0,0 @@ -LAMMPS (6 Jul 2017) - using 1 OpenMP thread(s) per MPI task -#LAMMPS input script -#in.GD -#see README for details - -############################################################################### -#initialize variables -clear - using 1 OpenMP thread(s) per MPI task - -#frequency for outputting info (timesteps) -variable dump_rate equal 50 -variable thermo_rate equal 10 - -#equilibration time (timesteps) -variable equil equal 1000 - -#stabilization time (timesteps to reach steady-state) -variable stabil equal 1000 - -#data collection time (timesteps) -variable run equal 2000 - -#length of pipe -variable L equal 30 - -#width of pipe -variable d equal 20 - -#flux (mass/sigma*tau) -variable J equal 0.1 - -#simulation box dimensions -variable Lx equal 100 -variable Ly equal 40 - -#bulk fluid density -variable dens equal 0.8 - -#lattice spacing for wall atoms -variable aWall equal 1.0 #1.7472 - -#timestep -variable ts equal 0.001 - -#temperature -variable T equal 2.0 - -#thermostat damping constant -variable tdamp equal ${ts}*100 -variable tdamp equal 0.001*100 - -units lj -dimension 2 -atom_style atomic - - -############################################################################### -#create box - -#create lattice with the spacing aWall -variable rhoWall equal ${aWall}^(-2) -variable rhoWall equal 1^(-2) -lattice sq ${rhoWall} -lattice sq 1 -Lattice spacing in x,y,z = 1 1 1 - -#modify input dimensions to be multiples of aWall -variable L1 equal round($L/${aWall})*${aWall} -variable L1 equal round(30/${aWall})*${aWall} -variable L1 equal round(30/1)*${aWall} -variable L1 equal round(30/1)*1 -variable d1 equal round($d/${aWall})*${aWall} -variable d1 equal round(20/${aWall})*${aWall} -variable d1 equal round(20/1)*${aWall} -variable d1 equal round(20/1)*1 -variable Ly1 equal round(${Ly}/${aWall})*${aWall} -variable Ly1 equal round(40/${aWall})*${aWall} -variable Ly1 equal round(40/1)*${aWall} -variable Ly1 equal round(40/1)*1 -variable Lx1 equal round(${Lx}/${aWall})*${aWall} -variable Lx1 equal round(100/${aWall})*${aWall} -variable Lx1 equal round(100/1)*${aWall} -variable Lx1 equal round(100/1)*1 - -#create simulation box -variable lx2 equal ${Lx1}/2 -variable lx2 equal 100/2 -variable ly2 equal ${Ly1}/2 -variable ly2 equal 40/2 -region simbox block -${lx2} ${lx2} -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 ${lx2} -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 50 -${ly2} ${ly2} 0 0.1 units box -region simbox block -50 50 -20 ${ly2} 0 0.1 units box -region simbox block -50 50 -20 20 0 0.1 units box -create_box 2 simbox -Created orthogonal box = (-50 -20 0) to (50 20 0.1) - 4 by 1 by 1 MPI processor grid - -##################################################################### -#set up potential - -mass 1 1.0 #fluid atoms -mass 2 1.0 #wall atoms - -pair_style lj/cut 2.5 -pair_modify shift yes -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 1.12246 -pair_coeff 2 2 0.0 0.0 - -neigh_modify exclude type 2 2 - -timestep ${ts} -timestep 0.001 - -##################################################################### -#create atoms - -#create wall atoms everywhere -create_atoms 2 box -Created 4000 atoms - -#define region which is "walled off" -variable dhalf equal ${d1}/2 -variable dhalf equal 20/2 -variable Lhalf equal ${L1}/2 -variable Lhalf equal 30/2 -region walltop block -${Lhalf} ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 ${Lhalf} ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 15 ${dhalf} EDGE -0.1 0.1 units box -region walltop block -15 15 10 EDGE -0.1 0.1 units box -region wallbot block -${Lhalf} ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 ${Lhalf} EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 15 EDGE -${dhalf} -0.1 0.1 units box -region wallbot block -15 15 EDGE -10 -0.1 0.1 units box -region outsidewall union 2 walltop wallbot side out - -#remove wall atoms outside wall region -group outside region outsidewall -3349 atoms in group outside -delete_atoms group outside -Deleted 3349 atoms, new total = 651 - -#remove wall atoms that aren't on edge of wall region -variable x1 equal ${Lhalf}-${aWall} -variable x1 equal 15-${aWall} -variable x1 equal 15-1 -variable y1 equal ${dhalf}+${aWall} -variable y1 equal 10+${aWall} -variable y1 equal 10+1 -region insideTop block -${x1} ${x1} ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 ${x1} ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 14 ${y1} EDGE -0.1 0.1 units box -region insideTop block -14 14 11 EDGE -0.1 0.1 units box -region insideBot block -${x1} ${x1} EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 ${x1} EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 14 EDGE -${y1} -0.1 0.1 units box -region insideBot block -14 14 EDGE -11 -0.1 0.1 units box -region insideWall union 2 insideTop insideBot -group insideWall region insideWall -551 atoms in group insideWall -delete_atoms group insideWall -Deleted 551 atoms, new total = 100 - -#define new lattice, to give correct fluid density -#y lattice const must be a multiple of aWall -variable atrue equal ${dens}^(-1/2) -variable atrue equal 0.8^(-1/2) -variable ay equal round(${atrue}/${aWall})*${aWall} -variable ay equal round(1.11803398874989/${aWall})*${aWall} -variable ay equal round(1.11803398874989/1)*${aWall} -variable ay equal round(1.11803398874989/1)*1 - -#choose x lattice const to give correct density -variable ax equal (${ay}*${dens})^(-1) -variable ax equal (1*${dens})^(-1) -variable ax equal (1*0.8)^(-1) - -#change Lx to be multiple of ax -variable Lx1 equal round(${Lx}/${ax})*${ax} -variable Lx1 equal round(100/${ax})*${ax} -variable Lx1 equal round(100/1.25)*${ax} -variable Lx1 equal round(100/1.25)*1.25 -variable lx2 equal ${Lx1}/2 -variable lx2 equal 100/2 -change_box all x final -${lx2} ${lx2} units box -change_box all x final -50 ${lx2} units box -change_box all x final -50 50 units box - orthogonal box = (-50 -20 0) to (50 20 0.1) - -#define new lattice -lattice custom ${dens} a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 ${ax} 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 ${ay} 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -lattice custom 0.8 a1 1.25 0.0 0.0 a2 0.0 1 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 -Lattice spacing in x,y,z = 1.25 1 1 - -#fill in rest of box with bulk particles -variable delta equal 0.001 -variable Ldelt equal ${Lhalf}+${delta} -variable Ldelt equal 15+${delta} -variable Ldelt equal 15+0.001 -variable dDelt equal ${dhalf}-${delta} -variable dDelt equal 10-${delta} -variable dDelt equal 10-0.001 -region left block EDGE -${Ldelt} EDGE EDGE -0.1 0.1 units box -region left block EDGE -15.001 EDGE EDGE -0.1 0.1 units box -region right block ${Ldelt} EDGE EDGE EDGE -0.1 0.1 units box -region right block 15.001 EDGE EDGE EDGE -0.1 0.1 units box -region pipe block -${Ldelt} ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 ${Ldelt} -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -${dDelt} ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -9.999 ${dDelt} -0.1 0.1 units box -region pipe block -15.001 15.001 -9.999 9.999 -0.1 0.1 units box - -region bulk union 3 left pipe right -create_atoms 1 region bulk -Created 2675 atoms - -group bulk type 1 -2675 atoms in group bulk -group wall type 2 -100 atoms in group wall - -#remove atoms that are too close to wall -delete_atoms overlap 0.9 bulk wall -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 72 29 1 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) command delete_atoms, occasional - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/2d - bin: standard - (2) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/2d/newton - bin: standard -Deleted 0 atoms, new total = 2775 - -neighbor 0.3 bin -neigh_modify delay 0 every 1 check yes -neigh_modify exclude group wall wall - -velocity bulk create $T 78915 dist gaussian rot yes mom yes loop geom -velocity bulk create 2 78915 dist gaussian rot yes mom yes loop geom - -##################################################################### -#set up PUT -#see Evans and Morriss, Phys. Rev. Lett. 56(20) 1986, p. 2172 - -#average number of particles per box, Evans and Morriss used 2.0 -variable NperBox equal 8.0 - -#calculate box sizes -variable boxSide equal sqrt(${NperBox}/${dens}) -variable boxSide equal sqrt(8/${dens}) -variable boxSide equal sqrt(8/0.8) -variable nX equal round(lx/${boxSide}) -variable nX equal round(lx/3.16227766016838) -variable nY equal round(ly/${boxSide}) -variable nY equal round(ly/3.16227766016838) -variable dX equal lx/${nX} -variable dX equal lx/32 -variable dY equal ly/${nY} -variable dY equal ly/13 - -#temperature of fluid (excluding wall) -compute myT bulk temp - -#profile-unbiased temperature of fluid -compute myTp bulk temp/profile 1 1 0 xy ${nX} ${nY} -compute myTp bulk temp/profile 1 1 0 xy 32 ${nY} -compute myTp bulk temp/profile 1 1 0 xy 32 13 - -#thermo setup -thermo ${thermo_rate} -thermo 10 -thermo_style custom step c_myT c_myTp etotal press - -#dump initial configuration -# dump 55 all custom 1 all.init.lammpstrj id type x y z vx vy vz -# dump 56 wall custom 1 wall.init.lammpstrj id type x y z -# dump_modify 55 sort id -# dump_modify 56 sort id -run 0 -WARNING: No fixes defined, atoms won't move (../verlet.cpp:55) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 72 29 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.067 | 3.068 | 3.07 Mbytes -Step c_myT c_myTp TotEng Press - 0 2 2.0555109 0.77892922 7.3417096 -Loop time of 4.35114e-06 on 4 procs for 0 steps with 2775 atoms - -114.9% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 4.351e-06 | | |100.00 - -Nlocal: 693.75 ave 800 max 578 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 266.25 ave 325 max 198 min -Histogram: 1 1 0 0 0 0 0 0 0 2 -Neighs: 6601.5 ave 8000 max 5147 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 26406 -Ave neighs/atom = 9.51568 -Neighbor list builds = 0 -Dangerous builds = 0 -# undump 55 -# undump 56 - -##################################################################### -#equilibrate without GD - -fix nvt bulk nvt temp $T $T ${tdamp} -fix nvt bulk nvt temp 2 $T ${tdamp} -fix nvt bulk nvt temp 2 2 ${tdamp} -fix nvt bulk nvt temp 2 2 0.1 -fix_modify nvt temp myTp -WARNING: Temperature for fix modify is not for group all (../fix_nh.cpp:1395) -fix 2 bulk enforce2d - -run ${equil} -run 1000 -Per MPI rank memory allocation (min/avg/max) = 3.13 | 3.131 | 3.132 Mbytes -Step c_myT c_myTp TotEng Press - 0 2 2.0555109 0.77892922 7.3417096 - 10 1.9173594 1.9390034 0.77876976 7.6702228 - 20 1.7033394 1.6974676 0.77977799 8.5614784 - 30 1.5026161 1.4723993 0.78456655 9.4308258 - 40 1.4880481 1.4591602 0.79486693 9.6134304 - 50 1.6192437 1.6150635 0.81109069 9.2592835 - 60 1.7404087 1.7583444 0.82955456 8.952392 - 70 1.7757591 1.8006606 0.8452778 8.9717917 - 80 1.7573847 1.7813629 0.85769389 9.1936368 - 90 1.7491183 1.7726908 0.86882429 9.3712357 - 100 1.7798944 1.8079583 0.88029084 9.3871755 - 110 1.8440582 1.8793133 0.89259397 9.2582848 - 120 1.9191606 1.9673434 0.90533438 9.0680574 - 130 1.9883299 2.0484299 0.91755461 8.88117 - 140 2.0463366 2.1111872 0.92818114 8.7184178 - 150 2.0953769 2.167849 0.93639789 8.5713408 - 160 2.1442147 2.2216228 0.94145082 8.4082835 - 170 2.1797848 2.2631458 0.94246877 8.2767903 - 180 2.1863476 2.2700986 0.93873326 8.2311689 - 190 2.1832866 2.2710551 0.93003012 8.1959062 - 200 2.1937154 2.2868403 0.91642537 8.0842007 - 210 2.2022708 2.2915142 0.89824533 7.9575312 - 220 2.1884715 2.2770564 0.87677613 7.9000591 - 230 2.1671124 2.2496063 0.85409501 7.8673156 - 240 2.1560417 2.2379998 0.83167878 7.8003228 - 250 2.1421449 2.2240624 0.81004723 7.7491508 - 260 2.1172164 2.1971044 0.78931978 7.7457415 - 270 2.0856847 2.1672998 0.76956352 7.7719788 - 280 2.0670685 2.1449303 0.75073364 7.7524614 - 290 2.0639481 2.1428374 0.73258016 7.6727716 - 300 2.055776 2.1361719 0.7147669 7.6095248 - 310 2.038425 2.1209353 0.69722853 7.5797085 - 320 2.0203023 2.1066031 0.68006634 7.5521081 - 330 2.0118478 2.1039797 0.66330302 7.4877535 - 340 2.0159442 2.1096258 0.64673694 7.3761703 - 350 2.0166408 2.1075061 0.63020017 7.2788 - 360 2.0059407 2.0806316 0.61387618 7.2263941 - 370 1.9964281 2.0642074 0.59814148 7.1728041 - 380 1.9918446 2.0567527 0.58303017 7.101597 - 390 1.992835 2.0548138 0.56852431 7.0084774 - 400 2.0012934 2.0615016 0.55438401 6.8865948 - 410 2.0084291 2.073418 0.54034073 6.7697478 - 420 2.007464 2.0786717 0.52617041 6.6849032 - 430 1.9983712 2.0704366 0.51188183 6.6323103 - 440 1.9884651 2.0588515 0.49765394 6.5868356 - 450 1.982221 2.0467396 0.4837102 6.5311681 - 460 1.9738673 2.031238 0.47021649 6.4882783 - 470 1.9574246 2.0060447 0.45740021 6.4814923 - 480 1.9361065 1.9734507 0.44557947 6.4995199 - 490 1.9251024 1.9562469 0.43506067 6.4858343 - 500 1.9279545 1.9572145 0.42577835 6.4274765 - 510 1.9267504 1.9570246 0.41755013 6.3927027 - 520 1.9093405 1.9393872 0.41031829 6.4281888 - 530 1.8820555 1.9060756 0.40432569 6.5099401 - 540 1.86537 1.8912682 0.3999087 6.55843 - 550 1.8694252 1.9043192 0.39717519 6.5337875 - 560 1.8835224 1.9294105 0.39589322 6.4760141 - 570 1.8898719 1.9462433 0.39573596 6.4520041 - 580 1.8887698 1.9472764 0.39649878 6.4602989 - 590 1.8945125 1.9550624 0.39810844 6.4470226 - 600 1.9106571 1.9735939 0.40045321 6.3971026 - 610 1.9273243 1.98509 0.40330026 6.3474421 - 620 1.9351802 1.9888986 0.4064498 6.3340566 - 630 1.9337889 1.9846794 0.40981479 6.3610556 - 640 1.9257018 1.9757153 0.4134641 6.4184721 - 650 1.9204429 1.9718256 0.41750942 6.4679594 - 660 1.9220449 1.9701963 0.42202455 6.4919724 - 670 1.9230578 1.9707406 0.4270412 6.5178484 - 680 1.9204554 1.9740485 0.43255127 6.5572507 - 690 1.9201811 1.9762854 0.43847123 6.5869126 - 700 1.9271511 1.9867455 0.44474356 6.5882669 - 710 1.9418851 2.0042477 0.45120727 6.558573 - 720 1.9544547 2.0186724 0.4576061 6.5338329 - 730 1.9687971 2.0326169 0.46367507 6.4988775 - 740 1.9830308 2.0466267 0.46920367 6.4618136 - 750 1.9936981 2.0526606 0.47397868 6.4367349 - 760 2.0008431 2.0535449 0.47786748 6.4249001 - 770 1.9982133 2.0483219 0.48085757 6.4504786 - 780 1.9841544 2.0311693 0.48306488 6.5200512 - 790 1.9683122 2.0158738 0.48475632 6.5959263 - 800 1.9604618 2.003224 0.48619405 6.6392559 - 810 1.9629155 2.0075077 0.48756075 6.6406486 - 820 1.9683056 2.0110554 0.48883443 6.6269424 - 830 1.975409 2.0189161 0.48995399 6.6030215 - 840 1.9897264 2.035016 0.4907852 6.5485575 - 850 2.0094338 2.0555358 0.49104505 6.4719926 - 860 2.0217589 2.0643603 0.49040437 6.4233305 - 870 2.0147718 2.0641627 0.48866908 6.4491964 - 880 1.9883859 2.0324092 0.48592007 6.5488061 - 890 1.9625853 2.0028776 0.48263002 6.6452734 - 900 1.9520401 1.9889124 0.47925524 6.6808078 - 910 1.9559583 1.9952984 0.47597346 6.6573059 - 920 1.9657244 2.0083503 0.47268726 6.6073704 - 930 1.969288 2.0152339 0.4692054 6.5780416 - 940 1.9652206 2.0116384 0.4654438 6.5769812 - 950 1.9567495 1.9960693 0.46147541 6.5942022 - 960 1.9418452 1.980858 0.45753557 6.6369454 - 970 1.9247196 1.9585585 0.45390337 6.6888821 - 980 1.9128262 1.9481721 0.45090045 6.7198221 - 990 1.9167211 1.9451096 0.44869731 6.6912394 - 1000 1.935529 1.9662384 0.44728238 6.6079829 -Loop time of 0.474418 on 4 procs for 1000 steps with 2775 atoms - -Performance: 182118.045 tau/day, 2107.848 timesteps/s -98.4% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.13953 | 0.19068 | 0.23764 | 10.4 | 40.19 -Neigh | 0.016439 | 0.022345 | 0.027069 | 3.2 | 4.71 -Comm | 0.018215 | 0.068071 | 0.12178 | 18.6 | 14.35 -Output | 0.011982 | 0.012633 | 0.013047 | 0.4 | 2.66 -Modify | 0.14494 | 0.15597 | 0.16628 | 2.4 | 32.88 -Other | | 0.02472 | | | 5.21 - -Nlocal: 693.75 ave 800 max 584 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 255.5 ave 323 max 192 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Neighs: 6083 ave 7384 max 4742 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 24332 -Ave neighs/atom = 8.76829 -Neighbor list builds = 38 -Dangerous builds = 0 - -##################################################################### -#initialize the COM velocity and run to achieve steady-state - -#calculate velocity to add: V=J/rho_total -variable Vadd equal $J*lx*ly/count(bulk) -variable Vadd equal 0.1*lx*ly/count(bulk) - -#first remove any COM velocity, then add back the streaming velocity -velocity bulk zero linear -velocity bulk set ${Vadd} 0.0 0.0 units box sum yes mom no -velocity bulk set 0.149532710280374 0.0 0.0 units box sum yes mom no - -fix GD bulk flow/gauss 1 0 0 #energy yes -#fix_modify GD energy yes - -run ${stabil} -run 1000 -Per MPI rank memory allocation (min/avg/max) = 3.13 | 3.131 | 3.132 Mbytes -Step c_myT c_myTp TotEng Press - 1000 1.9466974 1.9662384 0.45804438 6.615449 - 1010 1.9605467 1.9815754 0.45717241 6.5545496 - 1020 1.9560139 1.9823875 0.45660431 6.5672421 - 1030 1.9348326 1.9691606 0.45633148 6.6463667 - 1040 1.9167809 1.9449522 0.45657707 6.7139486 - 1050 1.9193541 1.943342 0.45767968 6.7014054 - 1060 1.9410751 1.9720491 0.45967742 6.6150379 - 1070 1.9658493 1.9964883 0.46221539 6.5178418 - 1080 1.9767205 2.0074304 0.46491236 6.4768594 - 1090 1.9714544 2.0003054 0.46759126 6.5026957 - 1100 1.9647035 1.9927455 0.4703109 6.5400181 - 1110 1.9657667 1.9959656 0.47317481 6.5519094 - 1120 1.9706062 1.9980802 0.476185 6.5512675 - 1130 1.9747655 2.0062292 0.47932281 6.554091 - 1140 1.9761245 2.0075076 0.48248327 6.5670381 - 1150 1.9744197 2.0073027 0.48562483 6.5914441 - 1160 1.9722698 2.0046687 0.48874207 6.6165575 - 1170 1.9692145 2.0013845 0.49187442 6.6438115 - 1180 1.9665609 1.9970724 0.49508053 6.6693821 - 1190 1.9625031 1.9908427 0.49843816 6.7002606 - 1200 1.960528 1.993084 0.50203044 6.7237076 - 1210 1.9649156 1.9981485 0.50587066 6.7217755 - 1220 1.9788059 2.0134511 0.50987442 6.6833452 - 1230 1.9952283 2.0343101 0.51379781 6.6340278 - 1240 2.0039391 2.0494196 0.51730872 6.6129751 - 1250 2.0019006 2.0526773 0.52014603 6.6320217 - 1260 1.9974025 2.0528914 0.52221385 6.6601786 - 1270 1.9953949 2.0561121 0.5234754 6.6796142 - 1280 1.9893864 2.0470375 0.5238632 6.7140134 - 1290 1.9694951 2.019253 0.5235093 6.798442 - 1300 1.9473901 1.9965919 0.52280384 6.8863369 - 1310 1.9511151 2.006161 0.52203882 6.8700917 - 1320 1.979341 2.0388959 0.52106938 6.7529595 - 1330 2.0073235 2.0720045 0.51935291 6.6297731 - 1340 2.0202482 2.0841419 0.51624273 6.55803 - 1350 2.0177489 2.0669046 0.51142591 6.5401753 - 1360 2.0069274 2.04717 0.50505824 6.5506533 - 1370 1.994854 2.0311383 0.49743042 6.5633001 - 1380 1.9793176 2.0077184 0.48890503 6.5859072 - 1390 1.9580907 1.9839831 0.48004316 6.6288992 - 1400 1.9415542 1.9594192 0.47143599 6.6534105 - 1410 1.9405188 1.9591825 0.46353105 6.620549 - 1420 1.9504784 1.9730647 0.45640199 6.5471784 - 1430 1.9594158 1.9819854 0.44995052 6.4802874 - 1440 1.9615108 1.9863792 0.44406411 6.44391 - 1450 1.9544127 1.9806249 0.43873409 6.4484818 - 1460 1.9384927 1.9614953 0.43408605 6.4905259 - 1470 1.9214711 1.9425515 0.43035972 6.5390434 - 1480 1.9170761 1.9300809 0.42775046 6.5409502 - 1490 1.9242904 1.9385731 0.42631007 6.5005057 - 1500 1.9307133 1.9446119 0.4258836 6.4660754 - 1510 1.9303576 1.9435389 0.42633976 6.4616415 - 1520 1.9248382 1.9408306 0.42765441 6.4832059 - 1530 1.9120794 1.9278123 0.42986958 6.5380951 - 1540 1.899122 1.9125029 0.4331459 6.5987181 - 1550 1.9030956 1.9187821 0.43765067 6.6012019 - 1560 1.9182961 1.9453782 0.44330842 6.5674222 - 1570 1.9272863 1.9613129 0.44971962 6.5619794 - 1580 1.931679 1.9698134 0.45643436 6.5780809 - 1590 1.9336692 1.9728684 0.46314752 6.6035675 - 1600 1.938895 1.9823104 0.46964519 6.6138411 - 1610 1.9510838 1.9937914 0.47568807 6.5916989 - 1620 1.9685387 2.0087314 0.48102339 6.5424432 - 1630 1.9894416 2.0295715 0.48539861 6.4757743 - 1640 1.9982699 2.0426949 0.48860411 6.4512418 - 1650 1.9901677 2.0363837 0.49062424 6.4879985 - 1660 1.9814216 2.0291326 0.49172203 6.5248034 - 1670 1.9812111 2.0293629 0.49218297 6.5253876 - 1680 1.9903906 2.0408376 0.49211747 6.4852787 - 1690 2.0015983 2.0538843 0.4914581 6.4325081 - 1700 2.009727 2.0503407 0.49011163 6.3878577 - 1710 2.0167822 2.0531002 0.4881688 6.3477054 - 1720 2.0189021 2.0445033 0.48564798 6.3273063 - 1730 2.0129713 2.0354734 0.48270666 6.3385541 - 1740 2.0048763 2.0199836 0.47950943 6.3587586 - 1750 1.9994843 2.0085942 0.47624908 6.3694119 - 1760 1.9940025 2.0072098 0.47305283 6.3816295 - 1770 1.9817431 1.9974066 0.46994486 6.4224295 - 1780 1.965171 1.9805421 0.4670779 6.4832371 - 1790 1.9474078 1.9662605 0.46466823 6.5516524 - 1800 1.9286009 1.9507751 0.46292015 6.6263366 - 1810 1.9168087 1.9437961 0.46199899 6.6759834 - 1820 1.9107555 1.9306323 0.46204129 6.7029857 - 1830 1.9135569 1.930819 0.46316484 6.6949737 - 1840 1.9345342 1.9553413 0.46532704 6.6178988 - 1850 1.9630349 1.9929548 0.46822932 6.5137866 - 1860 1.9820746 2.0188839 0.47135068 6.4489028 - 1870 1.9834959 2.0217145 0.47427805 6.4552721 - 1880 1.9731564 2.0120293 0.47692755 6.5100251 - 1890 1.9653605 2.0070624 0.47943307 6.5594235 - 1900 1.9630631 2.0095488 0.48192185 6.5912876 - 1910 1.9556778 2.0035006 0.48443107 6.6437189 - 1920 1.9408788 1.9828296 0.48710124 6.7228731 - 1930 1.9292393 1.9732376 0.49025327 6.7880112 - 1940 1.9263081 1.9708942 0.49416086 6.8162477 - 1950 1.9358375 1.976323 0.49899895 6.7946964 - 1960 1.9520543 1.9936542 0.50485961 6.7467481 - 1970 1.9709064 2.0108957 0.51165586 6.6909455 - 1980 1.9940026 2.0375428 0.51918913 6.6250463 - 1990 2.0171261 2.0646948 0.52705638 6.5649879 - 2000 2.0302713 2.0802515 0.53472229 6.5470853 -Loop time of 0.482133 on 4 procs for 1000 steps with 2775 atoms - -Performance: 179203.608 tau/day, 2074.116 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 | 0.1081 | 0.18228 | 0.23471 | 12.7 | 37.81 -Neigh | 0.011443 | 0.019967 | 0.025651 | 4.1 | 4.14 -Comm | 0.01639 | 0.073615 | 0.15634 | 21.8 | 15.27 -Output | 0.011851 | 0.012603 | 0.013287 | 0.5 | 2.61 -Modify | 0.14306 | 0.16634 | 0.18018 | 3.6 | 34.50 -Other | | 0.02733 | | | 5.67 - -Nlocal: 693.75 ave 797 max 590 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 259 ave 320 max 195 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 6101 ave 7360 max 4853 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 24404 -Ave neighs/atom = 8.79423 -Neighbor list builds = 36 -Dangerous builds = 0 - -##################################################################### -#collect data - -#print the applied force and total flux to ensure conservation of Jx -variable Fapp equal f_GD[1] -compute vxBulk bulk reduce sum vx -compute vyBulk bulk reduce sum vy -variable invVol equal 1.0/(lx*ly) -variable jx equal c_vxBulk*${invVol} -variable jx equal c_vxBulk*0.00025 -variable jy equal c_vyBulk*${invVol} -variable jy equal c_vyBulk*0.00025 -variable curr_step equal step -variable p_Fapp format Fapp %.3f -variable p_jx format jx %.5g -variable p_jy format jy %.5g -fix print_vCOM all print ${dump_rate} "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" -fix print_vCOM all print 50 "${curr_step} ${p_Fapp} ${p_jx} ${p_jy}" file GD.out screen no title "timestep Fapp Jx Jy" - -#compute IK1 pressure profile -#see Todd, Evans, and Davis, Phys. Rev. E 52(2) 1995, p. 1627 -#use profile-unbiased temperature to remove the streaming velocity -#from the kinetic part of the pressure -compute spa bulk stress/atom myTp - -#for the pressure profile, use the same grid as the PUT -compute chunkX bulk chunk/atom bin/1d x lower ${dX} units box -compute chunkX bulk chunk/atom bin/1d x lower 3.125 units box - -#output pressure profile and other profiles -#the pressure profile is (-1/2V)*(c_spa[1] + c_spa[2]), where -#V is the volume of a slice -fix profiles bulk ave/chunk 1 1 ${dump_rate} chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite -fix profiles bulk ave/chunk 1 1 50 chunkX vx density/mass c_spa[1] c_spa[2] file x_profiles ave running overwrite - -#compute velocity profile across the pipe with a finer grid -variable dYnew equal ${dY}/10 -variable dYnew equal 3.07692307692308/10 -compute chunkY bulk chunk/atom bin/1d y center ${dYnew} units box region pipe -compute chunkY bulk chunk/atom bin/1d y center 0.307692307692308 units box region pipe -fix velYprof bulk ave/chunk 1 1 ${dump_rate} chunkY vx file Vy_profile ave running overwrite -fix velYprof bulk ave/chunk 1 1 50 chunkY vx file Vy_profile ave running overwrite - -#full trajectory -# dump 7 bulk custom ${dump_rate} bulk.lammpstrj id type x y z -# dump_modify 7 sort id - -run ${run} -run 2000 -Per MPI rank memory allocation (min/avg/max) = 5.138 | 5.139 | 5.14 Mbytes -Step c_myT c_myTp TotEng Press - 2000 2.0302713 2.0802515 0.53472229 6.5470853 - 2010 2.0303419 2.0806129 0.54177821 6.5808527 - 2020 2.0245167 2.0792991 0.54803523 6.6381758 - 2030 2.0169072 2.065404 0.55345227 6.7008962 - 2040 2.0052526 2.0513817 0.55818432 6.7755868 - 2050 1.9953625 2.0366564 0.56245299 6.8382569 - 2060 2.0003667 2.0462109 0.56649798 6.8390557 - 2070 2.0238288 2.0834553 0.57023651 6.7637821 - 2080 2.045765 2.1173867 0.5730944 6.6861321 - 2090 2.0563925 2.1370313 0.57430831 6.6422581 - 2100 2.0620437 2.1480293 0.57319824 6.6080678 - 2110 2.0584437 2.1473173 0.56913597 6.5969671 - 2120 2.0532825 2.1393006 0.56154606 6.5799417 - 2130 2.0450143 2.1234905 0.55009479 6.5616931 - 2140 2.0229537 2.1004507 0.53511912 6.5854627 - 2150 1.9832556 2.0554119 0.51812599 6.6700591 - 2160 1.9444027 2.0110758 0.50163049 6.7534263 - 2170 1.9267473 1.9904528 0.48759542 6.76469 - 2180 1.9262232 1.9809353 0.47662199 6.7188048 - 2190 1.9359331 1.9854626 0.46836289 6.6406985 - 2200 1.9530728 1.9971865 0.4620366 6.5409943 - 2210 1.9657099 2.0056761 0.45692542 6.4639397 - 2220 1.9661008 2.0046161 0.45253504 6.4388081 - 2230 1.9574696 1.9947839 0.44864257 6.4528687 - 2240 1.9522284 1.9922663 0.44518111 6.4584458 - 2250 1.9518203 1.9950044 0.44206844 6.4491722 - 2260 1.9527908 1.9989603 0.4391804 6.4377912 - 2270 1.9452231 1.9932538 0.43643529 6.4607516 - 2280 1.9249341 1.9759145 0.43392742 6.5320897 - 2290 1.9087464 1.960985 0.43186869 6.5875176 - 2300 1.9103289 1.964731 0.43039882 6.5765021 - 2310 1.9182062 1.9783814 0.4294628 6.5434488 - 2320 1.9204281 1.9796609 0.42889381 6.5351629 - 2330 1.916279 1.9720659 0.42866391 6.5562619 - 2340 1.9062866 1.9587628 0.42890166 6.6033936 - 2350 1.9024117 1.9566812 0.42979475 6.6297969 - 2360 1.908153 1.960687 0.43141898 6.6215148 - 2370 1.9115944 1.9663337 0.43376668 6.6236491 - 2380 1.9086193 1.9637867 0.4367911 6.6529568 - 2390 1.9039907 1.9610268 0.44053991 6.6926343 - 2400 1.9034944 1.9609406 0.44508818 6.7193441 - 2410 1.9151521 1.9753641 0.4504458 6.7015957 - 2420 1.9314517 1.9925924 0.45644382 6.6669864 - 2430 1.9433933 2.0062001 0.46277215 6.6481527 - 2440 1.9504631 2.0087015 0.46917209 6.6475757 - 2450 1.9550092 2.0094957 0.47550077 6.6556459 - 2460 1.9609689 2.0147997 0.48170141 6.6568282 - 2470 1.9730726 2.0328127 0.48763131 6.6337545 - 2480 1.9838562 2.0466643 0.49303443 6.6143423 - 2490 1.9862031 2.0473388 0.49767532 6.6245587 - 2500 1.9817565 2.0455432 0.50152131 6.6573893 - 2510 1.9785788 2.0423176 0.50460561 6.6808042 - 2520 1.9823006 2.0505106 0.50696374 6.6726698 - 2530 1.9907178 2.0553736 0.50852885 6.6402082 - 2540 2.0005205 2.0690408 0.50919421 6.5966469 - 2550 2.0079727 2.0809816 0.50872954 6.5568419 - 2560 2.0133128 2.096271 0.50682742 6.5199915 - 2570 2.0141298 2.0990846 0.50314491 6.4951991 - 2580 2.0048768 2.0874319 0.49750096 6.5025454 - 2590 1.9876498 2.0638834 0.4900201 6.5333038 - 2600 1.9720479 2.0474479 0.48105263 6.5527157 - 2610 1.9596324 2.0355764 0.4710001 6.5547867 - 2620 1.9439039 2.0106405 0.46046644 6.5646889 - 2630 1.9321714 1.9924346 0.45021207 6.5589454 - 2640 1.9349378 1.9923889 0.44082833 6.5012762 - 2650 1.9448459 2.0069955 0.43251999 6.4228945 - 2660 1.9446852 2.0050346 0.42525857 6.3921645 - 2670 1.9325594 1.9884937 0.41913362 6.4169726 - 2680 1.9121687 1.9606084 0.41434428 6.4821267 - 2690 1.8923613 1.9339385 0.41105831 6.5517615 - 2700 1.8807238 1.9191801 0.40933203 6.5949447 - 2710 1.8797367 1.918758 0.40906826 6.6001309 - 2720 1.8852961 1.9225996 0.41005611 6.58191 - 2730 1.8937478 1.9357751 0.41204348 6.5541946 - 2740 1.9019279 1.9449374 0.41476104 6.5278575 - 2750 1.9134396 1.9614415 0.41800066 6.4890769 - 2760 1.9339551 1.9913779 0.42150554 6.4159805 - 2770 1.9597826 2.0220988 0.42487614 6.3232273 - 2780 1.9753466 2.0414907 0.42771704 6.2715489 - 2790 1.9720423 2.0402016 0.42976012 6.2949288 - 2800 1.9512893 2.0172711 0.43109201 6.3878056 - 2810 1.9232302 1.9870212 0.4320928 6.5101822 - 2820 1.9026913 1.959286 0.43326424 6.6024967 - 2830 1.9033802 1.9621601 0.43500785 6.6114274 - 2840 1.9214292 1.9833838 0.43733454 6.5508757 - 2850 1.9440563 2.0087358 0.43995473 6.4713496 - 2860 1.9589136 2.0211107 0.44250821 6.4232961 - 2870 1.9588429 2.022232 0.44477492 6.4355861 - 2880 1.9456751 2.0009513 0.44676532 6.5021746 - 2890 1.9269155 1.9782929 0.44877858 6.5926531 - 2900 1.9125262 1.9554653 0.45121196 6.6657808 - 2910 1.9187855 1.9572583 0.45438665 6.6589954 - 2920 1.9416112 1.9784518 0.45839212 6.5888253 - 2930 1.9613579 1.9975032 0.46305788 6.5317424 - 2940 1.9711529 2.0102501 0.46812715 6.5148943 - 2950 1.9707865 2.0133283 0.47345305 6.5389543 - 2960 1.9732526 2.0170219 0.47898306 6.5537092 - 2970 1.9871126 2.0282309 0.48465048 6.5273492 - 2980 1.9953449 2.0404164 0.49032615 6.5227325 - 2990 1.9909136 2.037246 0.49581423 6.5664662 - 3000 1.9872474 2.0307896 0.50110509 6.6060698 - 3010 1.9944885 2.0457308 0.5062755 6.6031811 - 3020 2.0103461 2.0599491 0.51116655 6.5654871 - 3030 2.0240275 2.077342 0.5154921 6.5358852 - 3040 2.0205953 2.0704954 0.51898871 6.5708937 - 3050 2.0032184 2.0463036 0.52167438 6.657741 - 3060 1.9889341 2.0265284 0.52385964 6.7329171 - 3070 1.9795143 2.0201081 0.52588914 6.7881407 - 3080 1.9713362 2.0123964 0.52797238 6.8362858 - 3090 1.9692592 2.0106467 0.53025538 6.8616268 - 3100 1.9722487 2.0259566 0.53277635 6.8689898 - 3110 1.9703322 2.0314028 0.53541462 6.895271 - 3120 1.9594359 2.0217586 0.53808512 6.954362 - 3130 1.9524729 2.0148628 0.5409094 6.9965233 - 3140 1.9630381 2.0260807 0.54400259 6.968082 - 3150 1.9902598 2.0549364 0.54720142 6.8698796 - 3160 2.029715 2.0923999 0.54995378 6.7193678 - 3170 2.0581544 2.1137995 0.55150021 6.6053728 - 3180 2.059074 2.1156535 0.55123668 6.5919337 - 3190 2.0400682 2.0904721 0.54894762 6.6505757 - 3200 2.0211594 2.0682597 0.54484887 6.7046468 - 3210 2.012712 2.0573114 0.53922057 6.7130909 - 3220 2.0102377 2.0554701 0.53219251 6.6919069 - 3230 2.0017671 2.0505068 0.52386898 6.6867054 - 3240 1.9854941 2.0308454 0.51458792 6.7051085 - 3250 1.9767009 2.0187664 0.50486785 6.6916859 - 3260 1.9771733 2.0186148 0.49510722 6.6424305 - 3270 1.974003 2.0136039 0.48556819 6.6078903 - 3280 1.9627665 1.9989122 0.47654147 6.6067904 - 3290 1.9491247 1.9826248 0.46834866 6.6186709 - 3300 1.9414093 1.9724941 0.4612122 6.6119543 - 3310 1.9433901 1.9715482 0.45518879 6.570612 - 3320 1.9518837 1.9872717 0.45010165 6.5057947 - 3330 1.9603874 1.9957995 0.44566728 6.4428221 - 3340 1.9615962 1.9945224 0.44167201 6.4099339 - 3350 1.955918 1.9882866 0.4380303 6.4070811 - 3360 1.9463445 1.9763654 0.43480086 6.4241178 - 3370 1.9411187 1.9683081 0.43206391 6.4296577 - 3380 1.9407224 1.9580074 0.42991627 6.4210217 - 3390 1.9402479 1.9530447 0.42850635 6.4170536 - 3400 1.9451337 1.9555771 0.42787382 6.3990336 - 3410 1.9475586 1.9612432 0.42797178 6.3953251 - 3420 1.9434927 1.960532 0.4286887 6.4210681 - 3430 1.9339054 1.9516935 0.43003682 6.4707071 - 3440 1.9234014 1.9464343 0.43214965 6.5248205 - 3450 1.9191846 1.9444777 0.43516361 6.5558451 - 3460 1.923218 1.9594606 0.43915611 6.5549213 - 3470 1.9328953 1.9792053 0.44397878 6.5327637 - 3480 1.9466227 1.9997841 0.44940599 6.4954965 - 3490 1.9672374 2.0323219 0.45511091 6.4358811 - 3500 1.9799622 2.0479841 0.46061029 6.4100217 - 3510 1.97942 2.0493411 0.46551964 6.4368108 - 3520 1.9725674 2.0389602 0.46976378 6.4892049 - 3530 1.9716429 2.0389798 0.47344292 6.5200899 - 3540 1.9789254 2.0486162 0.47659268 6.5198212 - 3550 1.9872455 2.0577517 0.47908145 6.5144586 - 3560 1.9808834 2.0545962 0.48076561 6.5633282 - 3570 1.9637165 2.0335394 0.4816783 6.6519124 - 3580 1.9407948 2.0067763 0.48212405 6.7605224 - 3590 1.9226532 1.9825887 0.48252299 6.8486041 - 3600 1.9135067 1.9700999 0.48328348 6.8977858 - 3610 1.9157516 1.9720028 0.48470695 6.8977759 - 3620 1.9328644 2.0001154 0.48688777 6.8361569 - 3630 1.9568208 2.0243053 0.48963933 6.7442107 - 3640 1.9824587 2.0569223 0.49259173 6.6452535 - 3650 1.9934906 2.0686356 0.49529038 6.6020218 - 3660 1.9996281 2.0747054 0.4973223 6.5808904 - 3670 2.0038801 2.0772777 0.49838833 6.5691351 - 3680 1.9941342 2.0712365 0.49826732 6.6088107 - 3690 1.9762631 2.0486045 0.49689108 6.6739002 - 3700 1.9667284 2.0349391 0.4943899 6.7010265 - 3710 1.9615089 2.0168112 0.49093735 6.7040384 - 3720 1.9613068 2.0147489 0.48673788 6.6813041 - 3730 1.9731234 2.0290151 0.48175561 6.6096757 - 3740 1.9829764 2.0461907 0.47575173 6.5424752 - 3750 1.9792839 2.0454423 0.46852709 6.5237753 - 3760 1.9599692 2.0287014 0.46022484 6.5616271 - 3770 1.935975 2.0000948 0.45138016 6.6136471 - 3780 1.9236713 1.9834802 0.44262435 6.6187463 - 3790 1.9268004 1.9875324 0.43430112 6.5632772 - 3800 1.932601 1.9872595 0.42649563 6.4984764 - 3810 1.9322506 1.9814946 0.41928855 6.4617054 - 3820 1.9245737 1.9712821 0.4128224 6.4613779 - 3830 1.9148568 1.9555602 0.40721003 6.4774474 - 3840 1.9049961 1.9457058 0.40261179 6.5029211 - 3850 1.8915137 1.9265199 0.39914961 6.5483592 - 3860 1.8784768 1.9058055 0.39700153 6.5962113 - 3870 1.8755236 1.9045158 0.39632768 6.6079033 - 3880 1.8841415 1.9140314 0.39710037 6.577707 - 3890 1.8958027 1.9331149 0.39918951 6.5359785 - 3900 1.9064085 1.948805 0.40238576 6.499859 - 3910 1.9185092 1.9675733 0.40647523 6.4610682 - 3920 1.9342595 1.9933225 0.41115392 6.4122308 - 3930 1.9482664 2.0076139 0.41603495 6.3736841 - 3940 1.9557759 2.0161573 0.42084462 6.3636708 - 3950 1.9573687 2.016612 0.42540421 6.3804124 - 3960 1.9486354 1.9998027 0.42974612 6.4404944 - 3970 1.936214 1.9807209 0.43412037 6.5176788 - 3980 1.9274292 1.9595259 0.43885103 6.5846212 - 3990 1.9233082 1.953436 0.44425085 6.6354276 - 4000 1.9289166 1.9522097 0.45042645 6.6513835 -Loop time of 0.998413 on 4 procs for 2000 steps with 2775 atoms - -Performance: 173074.634 tau/day, 2003.179 timesteps/s -98.9% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.25646 | 0.3672 | 0.47947 | 15.7 | 36.78 -Neigh | 0.027925 | 0.039163 | 0.050221 | 4.5 | 3.92 -Comm | 0.032807 | 0.14565 | 0.27684 | 25.4 | 14.59 -Output | 0.025572 | 0.032272 | 0.035355 | 2.2 | 3.23 -Modify | 0.31519 | 0.35781 | 0.375 | 4.1 | 35.84 -Other | | 0.05632 | | | 5.64 - -Nlocal: 693.75 ave 805 max 582 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 255.5 ave 312 max 199 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 6091.5 ave 7423 max 4780 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 24366 -Ave neighs/atom = 8.78054 -Neighbor list builds = 72 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:01 diff --git a/examples/PACKAGES/mgpt/in.bcc0 b/examples/PACKAGES/mgpt/in.bcc0 index 2e20888fd55..c00a1ba3b28 100644 --- a/examples/PACKAGES/mgpt/in.bcc0 +++ b/examples/PACKAGES/mgpt/in.bcc0 @@ -1,9 +1,7 @@ # script for mgpt t=0 eos in bulk bcc structure -echo screen - -units electron -atom_style atomic +units electron +atom_style atomic # Atomic volume for MGPT potential in a.u. variable atomic_vol equal 121.6 @@ -12,10 +10,10 @@ variable atomic_vol equal 121.6 variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0) # Create bcc lattice with 5x5x5 unit cells (250 atoms) -lattice bcc ${lattice_constant} -region box block 0 5 0 5 0 5 -create_box 1 box -create_atoms 1 box +lattice bcc ${lattice_constant} +region box block 0 5 0 5 0 5 +create_box 1 box +create_atoms 1 box # Define potential for use in simulation pair_style mgpt @@ -26,20 +24,20 @@ pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} # Create velocities at 0 K -velocity all create 0.0 87287 +velocity all create 0.0 87287 # Set neighbor list parameters -neighbor 0.1 bin -neigh_modify every 1 delay 0 check yes +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes # Set up microcanonical integrator -fix 1 all nve +fix 1 all nve # Dump coordinates to file every 50 timesteps -dump id all atom 50 dump.bcc0 +#dump id all atom 50 dump.bcc0 # Output thermodynamical data every 10 timesteps -thermo 10 +thermo 10 # Set output quantities and output format thermo_style custom step vol temp pe etotal press @@ -48,7 +46,7 @@ thermo_style custom step vol temp pe etotal press #thermo_modify format float %15.5e # Run 0 timesteps -run 0 +run 0 # Convert energy to rydbergs and pressure to gpa diff --git a/examples/PACKAGES/mgpt/in.vac0-bcc b/examples/PACKAGES/mgpt/in.vac0-bcc index 529506ab645..5be9e168e9a 100644 --- a/examples/PACKAGES/mgpt/in.vac0-bcc +++ b/examples/PACKAGES/mgpt/in.vac0-bcc @@ -1,10 +1,8 @@ # script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice: # input for unrelaxed vacancy formation energy at constant atomic volume -echo screen - -units electron -atom_style atomic +units electron +atom_style atomic # Atomic volume for MGPT potential in a.u. variable atomic_vol equal 121.6 @@ -16,10 +14,10 @@ variable lat_vol equal ${atomic_vol}*249/250 variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) # Create bcc lattice with 5x5x5 unit cells (250 atoms) -lattice bcc ${lattice_constant} -region box block 0 5 0 5 0 5 -create_box 1 box -create_atoms 1 box +lattice bcc ${lattice_constant} +region box block 0 5 0 5 0 5 +create_box 1 box +create_atoms 1 box # Remove central atom from bcc lattice to create vacancy region vacancy sphere 2.5 2.5 2.5 0.1 units lattice @@ -34,20 +32,20 @@ pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} # Create velocities at 0 K -velocity all create 0.0 87287 +velocity all create 0.0 87287 # Set neighbor list parameters -neighbor 0.1 bin -neigh_modify every 1 delay 0 check yes +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes # Set up microcanonical integrator -fix 1 all nve +fix 1 all nve # Dump coordinates to file every 50 timesteps -dump id all atom 50 dump.vac0-bcc +# dump id all atom 50 dump.vac0-bcc # Output thermodynamical data every 10 timesteps -thermo 10 +thermo 10 # Set output quantities and output format thermo_style custom step vol temp pe etotal press @@ -56,7 +54,7 @@ thermo_style custom step vol temp pe etotal press #thermo_modify format float %15.5e # Run 0 timesteps -run 0 +run 0 # Convert energy to rydbergs and pressure to gpa diff --git a/examples/PACKAGES/mgpt/in.vacmin-bcc b/examples/PACKAGES/mgpt/in.vacmin-bcc index 85fc72ff631..abd6cd3a7f5 100644 --- a/examples/PACKAGES/mgpt/in.vacmin-bcc +++ b/examples/PACKAGES/mgpt/in.vacmin-bcc @@ -1,10 +1,8 @@ # script for mgpt t=0 eos with relaxed vacancy in bcc structure: # input for relaxed vacancy formation energy at constant pressure -echo screen - -units electron -atom_style atomic +units electron +atom_style atomic # Atomic volume for MGPT potential variable atomic_vol equal 121.863 @@ -16,10 +14,10 @@ variable lat_vol equal ${atomic_vol}*249/250 variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) # Create bcc lattice with 5x5x5 unit cells (250 atoms) -lattice bcc ${lattice_constant} -region box block 0 5 0 5 0 5 -create_box 1 box -create_atoms 1 box +lattice bcc ${lattice_constant} +region box block 0 5 0 5 0 5 +create_box 1 box +create_atoms 1 box # Remove central atom from bcc lattice to create vacancy region vacancy sphere 2.5 2.5 2.5 0.1 units lattice @@ -34,14 +32,14 @@ pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} # Set neighbor list parameters -neighbor 0.1 bin -neigh_modify every 1 delay 0 check yes +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes # Dump coordinates to file every 50 timesteps -dump id all atom 50 dump.vacmin-bcc +# dump id all atom 50 dump.vacmin-bcc # Output thermodynamical data every 10 timesteps -thermo 10 +thermo 10 # Set output quantities and output format thermo_style custom step vol temp pe etotal press diff --git a/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.1 b/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.1 new file mode 100644 index 00000000000..0425bce75f7 --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.1 @@ -0,0 +1,134 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos in bulk bcc structure + +units electron +atom_style atomic + +# Atomic volume for MGPT potential in a.u. +variable atomic_vol equal 121.6 + +# Derive lattice constant from volume +variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.6*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.24196300283154 +Lattice spacing in x,y,z = 6.241963 6.241963 6.241963 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815) + create_atoms CPU = 0.000 seconds + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Create velocities at 0 K +velocity all create 0.0 87287 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Set up microcanonical integrator +fix 1 all nve + +# Dump coordinates to file every 50 timesteps +#dump id all atom 50 dump.bcc0 + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# Run 0 timesteps +run 0 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.161827 + ghost atom cutoff = 13.161827 + binsize = 6.5809134, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.755 | 3.755 | 3.755 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30400 0 -74.412503 -74.412503 -1.1594626e+09 +Loop time of 1.019e-06 on 1 procs for 0 steps with 250 atoms + +98.1% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.019e-06 | | |100.00 + +Nlocal: 250 ave 250 max 250 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1479 ave 1479 max 1479 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 8000 ave 8000 max 8000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 16000 +Ave neighs/atom = 64 +Neighbor list builds = 0 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 250 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.6 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.59530002488734 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -1.15946260887554 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +250 121.6 -148.825006221835 -1.15946260887554 +print "${atvol} ${etotry} ${ptotgpa}" +121.6 -0.59530002488734 -1.15946260887554 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.4 b/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.4 new file mode 100644 index 00000000000..03195ca9c31 --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.4 @@ -0,0 +1,134 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos in bulk bcc structure + +units electron +atom_style atomic + +# Atomic volume for MGPT potential in a.u. +variable atomic_vol equal 121.6 + +# Derive lattice constant from volume +variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.6*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.24196300283154 +Lattice spacing in x,y,z = 6.241963 6.241963 6.241963 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815) + create_atoms CPU = 0.000 seconds + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Create velocities at 0 K +velocity all create 0.0 87287 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Set up microcanonical integrator +fix 1 all nve + +# Dump coordinates to file every 50 timesteps +#dump id all atom 50 dump.bcc0 + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# Run 0 timesteps +run 0 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.161827 + ghost atom cutoff = 13.161827 + binsize = 6.5809134, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.73 | 3.73 | 3.73 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30400 0 -74.412503 -74.412503 -1.1594626e+09 +Loop time of 3.56525e-06 on 4 procs for 0 steps with 250 atoms + +119.2% 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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 3.565e-06 | | |100.00 + +Nlocal: 62.5 ave 65 max 60 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 868.5 ave 871 max 866 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 2000 ave 2110 max 1890 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +FullNghs: 4000 ave 4160 max 3840 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 16000 +Ave neighs/atom = 64 +Neighbor list builds = 0 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 250 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.6 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.595300024887348 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -1.15946260887575 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +250 121.6 -148.825006221837 -1.15946260887575 +print "${atvol} ${etotry} ${ptotgpa}" +121.6 -0.595300024887348 -1.15946260887575 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.1 b/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.1 new file mode 100644 index 00000000000..88d7e11a8bc --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.1 @@ -0,0 +1,144 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice: +# input for unrelaxed vacancy formation energy at constant atomic volume + +units electron +atom_style atomic + +# Atomic volume for MGPT potential in a.u. +variable atomic_vol equal 121.6 + +# Derive effective lattice volume from atomic volume for 249-site cell +variable lat_vol equal ${atomic_vol}*249/250 +variable lat_vol equal 121.6*249/250 + +# Derive lattice constant from lattice volume +variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.1136*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.23362926394575 +Lattice spacing in x,y,z = 6.2336293 6.2336293 6.2336293 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146) + create_atoms CPU = 0.000 seconds + +# Remove central atom from bcc lattice to create vacancy +region vacancy sphere 2.5 2.5 2.5 0.1 units lattice +delete_atoms region vacancy +Deleted 1 atoms, new total = 249 + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Create velocities at 0 K +velocity all create 0.0 87287 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Set up microcanonical integrator +fix 1 all nve + +# Dump coordinates to file every 50 timesteps +# dump id all atom 50 dump.vac0-bcc + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# Run 0 timesteps +run 0 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.161827 + ghost atom cutoff = 13.161827 + binsize = 6.5809134, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.755 | 3.755 | 3.755 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08 +Loop time of 1.016e-06 on 1 procs for 0 steps with 249 atoms + +98.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.016e-06 | | |100.00 + +Nlocal: 249 ave 249 max 249 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1479 ave 1479 max 1479 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 7936 ave 7936 max 7936 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 15872 ave 15872 max 15872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 15872 +Ave neighs/atom = 63.742972 +Neighbor list builds = 0 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 249 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.6 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.594348488796036 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -0.634267307139553 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +249 121.6 -147.992773710213 -0.634267307139553 +print "${atvol} ${etotry} ${ptotgpa}" +121.6 -0.594348488796036 -0.634267307139553 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.4 b/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.4 new file mode 100644 index 00000000000..f78e0f1f4f1 --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.4 @@ -0,0 +1,144 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice: +# input for unrelaxed vacancy formation energy at constant atomic volume + +units electron +atom_style atomic + +# Atomic volume for MGPT potential in a.u. +variable atomic_vol equal 121.6 + +# Derive effective lattice volume from atomic volume for 249-site cell +variable lat_vol equal ${atomic_vol}*249/250 +variable lat_vol equal 121.6*249/250 + +# Derive lattice constant from lattice volume +variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.1136*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.23362926394575 +Lattice spacing in x,y,z = 6.2336293 6.2336293 6.2336293 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146) + create_atoms CPU = 0.000 seconds + +# Remove central atom from bcc lattice to create vacancy +region vacancy sphere 2.5 2.5 2.5 0.1 units lattice +delete_atoms region vacancy +Deleted 1 atoms, new total = 249 + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Create velocities at 0 K +velocity all create 0.0 87287 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Set up microcanonical integrator +fix 1 all nve + +# Dump coordinates to file every 50 timesteps +# dump id all atom 50 dump.vac0-bcc + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# Run 0 timesteps +run 0 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.161827 + ghost atom cutoff = 13.161827 + binsize = 6.5809134, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.73 | 3.73 | 3.73 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08 +Loop time of 2.64725e-06 on 4 procs for 0 steps with 249 atoms + +37.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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.647e-06 | | |100.00 + +Nlocal: 62.25 ave 65 max 60 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 867.75 ave 870 max 865 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Neighs: 1984 ave 2099 max 1875 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +FullNghs: 3968 ave 4149 max 3825 min +Histogram: 2 0 0 0 0 0 0 1 0 1 + +Total # of neighbors = 15872 +Ave neighs/atom = 63.742972 +Neighbor list builds = 0 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 249 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.6 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.594348488795831 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -0.634267307088164 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +249 121.6 -147.992773710162 -0.634267307088164 +print "${atvol} ${etotry} ${ptotgpa}" +121.6 -0.594348488795831 -0.634267307088164 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.1 b/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.1 new file mode 100644 index 00000000000..0e68bd08027 --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.1 @@ -0,0 +1,162 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos with relaxed vacancy in bcc structure: +# input for relaxed vacancy formation energy at constant pressure + +units electron +atom_style atomic + +# Atomic volume for MGPT potential +variable atomic_vol equal 121.863 + +# Derive effective lattice volume from atomic volume for 249-site cell +variable lat_vol equal ${atomic_vol}*249/250 +variable lat_vol equal 121.863*249/250 + +# Derive lattice constant from lattice volume +variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.375548*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.23812011912273 +Lattice spacing in x,y,z = 6.2381201 6.2381201 6.2381201 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601) + create_atoms CPU = 0.000 seconds + +# Remove central atom from bcc lattice to create vacancy +region vacancy sphere 2.5 2.5 2.5 0.1 units lattice +delete_atoms region vacancy +Deleted 1 atoms, new total = 249 + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.863 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Dump coordinates to file every 50 timesteps +# dump id all atom 50 dump.vacmin-bcc + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# minimize total energy +min_style cg +minimize 1.0e-10 1.0e-10 5000 10000 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.171237 + ghost atom cutoff = 13.171237 + binsize = 6.5856184, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.88 | 4.88 | 4.88 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09 + 10 30343.887 0 -74.002332 -74.002332 -1.107516e+09 + 20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09 + 30 30343.887 0 -74.005762 -74.005762 -1.143304e+09 + 40 30343.887 0 -74.006116 -74.006116 -1.149395e+09 + 50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09 + 60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09 + 70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09 + 80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09 + 90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09 + 100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09 + 110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09 + 120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09 + 130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09 + 139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09 +Loop time of 2.58636 on 1 procs for 139 steps with 249 atoms + +90.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + -73.9945109564338 -74.0063705487283 -74.0063705557007 + Force two-norm initial, final = 0.036622686 8.090814e-05 + Force max component initial, final = 0.0073094815 8.0524205e-06 + Final line search alpha, max atom move = 1 8.0524205e-06 + Iterations, force evaluations = 139 139 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.5671 | 2.5671 | 2.5671 | 0.0 | 99.26 +Neigh | 0.015241 | 0.015241 | 0.015241 | 0.0 | 0.59 +Comm | 0.001446 | 0.001446 | 0.001446 | 0.0 | 0.06 +Output | 0.00038428 | 0.00038428 | 0.00038428 | 0.0 | 0.01 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.002161 | | | 0.08 + +Nlocal: 249 ave 249 max 249 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1479 ave 1479 max 1479 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 7936 ave 7936 max 7936 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 15872 ave 15872 max 15872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 15872 +Ave neighs/atom = 63.742972 +Neighbor list builds = 4 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 249 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.863 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.594428679162253 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -1.15783109516516 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +249 121.863 -148.012741111401 -1.15783109516516 +print "${atvol} ${etotry} ${ptotgpa}" +121.863 -0.594428679162253 -1.15783109516516 +Total wall time: 0:00:02 diff --git a/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.4 b/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.4 new file mode 100644 index 00000000000..50af5c02e15 --- /dev/null +++ b/examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.4 @@ -0,0 +1,162 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# script for mgpt t=0 eos with relaxed vacancy in bcc structure: +# input for relaxed vacancy formation energy at constant pressure + +units electron +atom_style atomic + +# Atomic volume for MGPT potential +variable atomic_vol equal 121.863 + +# Derive effective lattice volume from atomic volume for 249-site cell +variable lat_vol equal ${atomic_vol}*249/250 +variable lat_vol equal 121.863*249/250 + +# Derive lattice constant from lattice volume +variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) +variable lattice_constant equal (121.375548*2.0)^(1.0/3.0) + +# Create bcc lattice with 5x5x5 unit cells (250 atoms) +lattice bcc ${lattice_constant} +lattice bcc 6.23812011912273 +Lattice spacing in x,y,z = 6.2381201 6.2381201 6.2381201 +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 250 atoms + using lattice units in orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601) + create_atoms CPU = 0.000 seconds + +# Remove central atom from bcc lattice to create vacancy +region vacancy sphere 2.5 2.5 2.5 0.1 units lattice +delete_atoms region vacancy +Deleted 1 atoms, new total = 249 + +# Define potential for use in simulation +pair_style mgpt + +# Set parameters for potential: +# parameter files atomic volume +#pair_coeff * * parmin potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} +pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.863 +Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 + +# Set neighbor list parameters +neighbor 0.1 bin +neigh_modify every 1 delay 0 check yes + +# Dump coordinates to file every 50 timesteps +# dump id all atom 50 dump.vacmin-bcc + +# Output thermodynamical data every 10 timesteps +thermo 10 + +# Set output quantities and output format +thermo_style custom step vol temp pe etotal press + +## Example: Output floating point number with 5 digits exponential notation. +#thermo_modify format float %15.5e + +# minimize total energy +min_style cg +minimize 1.0e-10 1.0e-10 5000 10000 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.171237 + ghost atom cutoff = 13.171237 + binsize = 6.5856184, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mgpt, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair mgpt, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.855 | 4.855 | 4.855 Mbytes + Step Volume Temp PotEng TotEng Press + 0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09 + 10 30343.887 0 -74.002332 -74.002332 -1.107516e+09 + 20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09 + 30 30343.887 0 -74.005762 -74.005762 -1.143304e+09 + 40 30343.887 0 -74.006116 -74.006116 -1.149395e+09 + 50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09 + 60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09 + 70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09 + 80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09 + 90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09 + 100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09 + 110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09 + 120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09 + 130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09 + 139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09 +Loop time of 0.972735 on 4 procs for 139 steps with 249 atoms + +89.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + -73.9945109564331 -74.0063705487423 -74.0063705556773 + Force two-norm initial, final = 0.036622686 8.090814e-05 + Force max component initial, final = 0.0073094815 8.0524207e-06 + Final line search alpha, max atom move = 1 8.0524207e-06 + Iterations, force evaluations = 139 139 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.9418 | 0.94514 | 0.9488 | 0.3 | 97.16 +Neigh | 0.0083827 | 0.0084423 | 0.0085002 | 0.0 | 0.87 +Comm | 0.011833 | 0.015482 | 0.01882 | 2.0 | 1.59 +Output | 0.0002579 | 0.00029089 | 0.000389 | 0.0 | 0.03 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.003376 | | | 0.35 + +Nlocal: 62.25 ave 68 max 59 min +Histogram: 1 1 0 1 0 0 0 0 0 1 +Nghost: 867.75 ave 871 max 862 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Neighs: 1984 ave 2211 max 1853 min +Histogram: 1 1 1 0 0 0 0 0 0 1 +FullNghs: 3968 ave 4334 max 3761 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 15872 +Ave neighs/atom = 63.742972 +Neighbor list builds = 4 +Dangerous builds = 0 + +# Convert energy to rydbergs and pressure to gpa + +variable natoms equal "count(all)" +variable voltot equal "vol" +variable atvol equal "v_voltot/v_natoms" +variable etot equal "2.0*pe" +variable etotry equal "v_etot/v_natoms" +variable ptot equal "press" +variable ptotgpa equal "v_ptot/1.0e+09" + +print "number of atoms = ${natoms}" +number of atoms = 249 +print "atomic volume (a.u.) = ${atvol}" +atomic volume (a.u.) = 121.863 +print "total energy (ry/atom) = ${etotry}" +total energy (ry/atom) = -0.594428679162068 +print "pressure (gpa) = ${ptotgpa}" +pressure (gpa) = -1.15783109519336 +print "${natoms} ${atvol} ${etot} ${ptotgpa}" +249 121.863 -148.012741111355 -1.15783109519336 +print "${atvol} ${etotry} ${ptotgpa}" +121.863 -0.594428679162068 -1.15783109519336 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.bcc0 b/examples/PACKAGES/mgpt/log.bcc0 deleted file mode 100644 index 4e4df5da4f7..00000000000 --- a/examples/PACKAGES/mgpt/log.bcc0 +++ /dev/null @@ -1,53 +0,0 @@ -LAMMPS (23 Oct 2015) -# script for mgpt t=0 eos in bulk bcc structure - -echo screen -Lattice spacing in x,y,z = 6.24196 6.24196 6.24196 -Created orthogonal box = (0 0 0) to (31.2098 31.2098 31.2098) - 1 by 1 by 1 MPI processor grid -Created 250 atoms -Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 -Neighbor list info ... - 2 neighbor list requests - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 13.1618 - ghost atom cutoff = 13.1618 - binsize = 6.58091 -> bins = 5 5 5 -Memory usage per processor = 3.54482 Mbytes -Step Volume Temp PotEng TotEng Press - 0 30400 0 -74.412503 -74.412503 -1.1594626e+09 -Loop time of 1.90735e-06 on 1 procs for 0 steps with 250 atoms - -0.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 1.907e-06 | | |100.00 - -Nlocal: 250 ave 250 max 250 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1479 ave 1479 max 1479 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8000 ave 8000 max 8000 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 16000 ave 16000 max 16000 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 16000 -Ave neighs/atom = 64 -Neighbor list builds = 0 -Dangerous builds = 0 -number of atoms = 250 -atomic volume (a.u.) = 121.6 -total energy (ry/atom) = -0.59530002488734 -pressure (gpa) = -1.15946260887556 -250 121.6 -148.825006221835 -1.15946260887556 -121.6 -0.59530002488734 -1.15946260887556 -Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.vac0-bcc b/examples/PACKAGES/mgpt/log.vac0-bcc deleted file mode 100644 index 63880de450c..00000000000 --- a/examples/PACKAGES/mgpt/log.vac0-bcc +++ /dev/null @@ -1,55 +0,0 @@ -LAMMPS (23 Oct 2015) -# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice: -# input for unrelaxed vacancy formation energy at constant atomic volume - -echo screen -Lattice spacing in x,y,z = 6.23363 6.23363 6.23363 -Created orthogonal box = (0 0 0) to (31.1681 31.1681 31.1681) - 1 by 1 by 1 MPI processor grid -Created 250 atoms -Deleted 1 atoms, new total = 249 -Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 -Neighbor list info ... - 2 neighbor list requests - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 13.1618 - ghost atom cutoff = 13.1618 - binsize = 6.58091 -> bins = 5 5 5 -Memory usage per processor = 3.54478 Mbytes -Step Volume Temp PotEng TotEng Press - 0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08 -Loop time of 1.90735e-06 on 1 procs for 0 steps with 249 atoms - -0.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 1.907e-06 | | |100.00 - -Nlocal: 249 ave 249 max 249 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1479 ave 1479 max 1479 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7936 ave 7936 max 7936 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 15872 ave 15872 max 15872 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 15872 -Ave neighs/atom = 63.743 -Neighbor list builds = 0 -Dangerous builds = 0 -number of atoms = 249 -atomic volume (a.u.) = 121.6 -total energy (ry/atom) = -0.594348488796036 -pressure (gpa) = -0.634267307139601 -249 121.6 -147.992773710213 -0.634267307139601 -121.6 -0.594348488796036 -0.634267307139601 -Total wall time: 0:00:00 diff --git a/examples/PACKAGES/mgpt/log.vacmin-bcc b/examples/PACKAGES/mgpt/log.vacmin-bcc deleted file mode 100644 index 876b34eb1e5..00000000000 --- a/examples/PACKAGES/mgpt/log.vacmin-bcc +++ /dev/null @@ -1,78 +0,0 @@ -LAMMPS (23 Oct 2015) -# script for mgpt t=0 eos with relaxed vacancy in bcc structure: -# input for relaxed vacancy formation energy at constant pressure - -echo screen -Lattice spacing in x,y,z = 6.23812 6.23812 6.23812 -Created orthogonal box = (0 0 0) to (31.1906 31.1906 31.1906) - 1 by 1 by 1 MPI processor grid -Created 250 atoms -Deleted 1 atoms, new total = 249 -Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 -Neighbor list info ... - 2 neighbor list requests - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 13.1712 - ghost atom cutoff = 13.1712 - binsize = 6.58562 -> bins = 5 5 5 -Memory usage per processor = 4.66978 Mbytes -Step Volume Temp PotEng TotEng Press - 0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09 - 10 30343.887 0 -74.002332 -74.002332 -1.107516e+09 - 20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09 - 30 30343.887 0 -74.005762 -74.005762 -1.143304e+09 - 40 30343.887 0 -74.006116 -74.006116 -1.149395e+09 - 50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09 - 60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09 - 70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09 - 80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09 - 90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09 - 100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09 - 110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09 - 120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09 - 130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09 - 139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09 -Loop time of 4.22107 on 1 procs for 139 steps with 249 atoms - -92.1% CPU use with 1 MPI tasks x no OpenMP threads - -Minimization stats: - Stopping criterion = energy tolerance - Energy initial, next-to-last, final = - -73.9945109564 -74.0063705487 -74.0063705557 - Force two-norm initial, final = 0.0366227 8.09081e-05 - Force max component initial, final = 0.00730948 8.05242e-06 - Final line search alpha, max atom move = 1 8.05242e-06 - Iterations, force evaluations = 139 139 - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 4.1973 | 4.1973 | 4.1973 | 0.0 | 99.44 -Neigh | 0.018799 | 0.018799 | 0.018799 | 0.0 | 0.45 -Comm | 0.0017059 | 0.0017059 | 0.0017059 | 0.0 | 0.04 -Output | 0.00080252 | 0.00080252 | 0.00080252 | 0.0 | 0.02 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 0.002477 | | | 0.06 - -Nlocal: 249 ave 249 max 249 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1479 ave 1479 max 1479 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7936 ave 7936 max 7936 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 15872 ave 15872 max 15872 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 15872 -Ave neighs/atom = 63.743 -Neighbor list builds = 4 -Dangerous builds = 0 -number of atoms = 249 -atomic volume (a.u.) = 121.863 -total energy (ry/atom) = -0.594428679162064 -pressure (gpa) = -1.15783109519801 -249 121.863 -148.012741111354 -1.15783109519801 -121.863 -0.594428679162064 -1.15783109519801 -Total wall time: 0:00:04 diff --git a/examples/PACKAGES/pedone/in.pedone.melt b/examples/PACKAGES/pedone/in.pedone.melt new file mode 100644 index 00000000000..a2b1c3a71e6 --- /dev/null +++ b/examples/PACKAGES/pedone/in.pedone.melt @@ -0,0 +1,38 @@ +# Ca-O melt with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations + +region box block 0 4 0 4 0 4 +create_box 2 box +create_atoms 1 box + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +create_atoms 2 box + +mass 1 40.078 +mass 2 15.999 + +set type 1 charge 1.2 +set type 2 charge -1.2 + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +velocity all create 6000.0 98347 + +fix 1 all nvt temp 3000.0 3000.0 0.1 + +# dump 1 all atom 500 Ca-O-melt.lammpstrj + +thermo 100 +run 1000 diff --git a/examples/PACKAGES/pedone/in.pedone.relax b/examples/PACKAGES/pedone/in.pedone.relax new file mode 100644 index 00000000000..38ccd651e7a --- /dev/null +++ b/examples/PACKAGES/pedone/in.pedone.relax @@ -0,0 +1,38 @@ +# Ca-O crystal with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations + +region box block 0 4 0 4 0 4 +create_box 2 box +create_atoms 1 box + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +create_atoms 2 box + +mass 1 40.078 +mass 2 15.999 + +displace_atoms all random 0.01 0.01 0.01 9084544 +set type 1 charge 1.2 +set type 2 charge -1.2 + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +variable len equal lx*0.25 +thermo_style custom step v_len lx pe press +thermo 100 +fix 1 all box/relax iso 0.0 +minimize 0.0 0.0 1000 10000 + +print "Expected lattice parameter: 4.7748, computed: $(v_len:%6.4f)" diff --git a/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.1 b/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.1 new file mode 100644 index 00000000000..dc33289391b --- /dev/null +++ b/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.1 @@ -0,0 +1,122 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-373-g7ac84e18dd) + using 1 OpenMP thread(s) per MPI task +# Ca-O melt with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 + +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (19.242 19.242 19.242) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 +create_atoms 2 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +mass 1 40.078 +mass 2 15.999 + +set type 1 charge 1.2 +Setting atom values ... + 256 settings made for charge +set type 2 charge -1.2 +Setting atom values ... + 256 settings made for charge + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +velocity all create 6000.0 98347 + +fix 1 all nvt temp 3000.0 3000.0 0.1 + +# dump 1 all atom 500 Ca-O-melt.lammpstrj + +thermo 100 +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.23676226 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 1.3089053e-05 + estimated relative force accuracy = 9.089844e-07 + using double precision FFTW3 + 3d grid and FFT values/proc = 29791 13824 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17 + ghost atom cutoff = 17 + binsize = 8.5, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair pedone, perpetual, skip from (2) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (2) pair coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.239 | 9.239 | 9.239 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 6000 -3771.5568 0 -3375.2452 34213.185 + 100 2894.1756 -3562.491 0 -3371.3251 114640.32 + 200 2980.3531 -3570.2657 0 -3373.4076 123673.56 + 300 2783.0437 -3574.5809 0 -3390.7554 119791.27 + 400 3021.6581 -3568.2149 0 -3368.6285 116032.29 + 500 3112.0438 -3580.0178 0 -3374.4613 114798.18 + 600 2973.4609 -3577.0582 0 -3380.6553 111843.46 + 700 3180.1687 -3568.4542 0 -3358.3979 121008.83 + 800 2923.7803 -3573.3023 0 -3380.181 111459.55 + 900 2940.3133 -3572.1322 0 -3377.9188 118177.36 + 1000 3070.2584 -3575.5655 0 -3372.769 114175.52 +Loop time of 13.683 on 1 procs for 1000 steps with 512 atoms + +Performance: 12.629 ns/day, 1.900 hours/ns, 73.084 timesteps/s, 37.419 katom-step/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 11.545 | 11.545 | 11.545 | 0.0 | 84.37 +Kspace | 1.4121 | 1.4121 | 1.4121 | 0.0 | 10.32 +Neigh | 0.65265 | 0.65265 | 0.65265 | 0.0 | 4.77 +Comm | 0.056036 | 0.056036 | 0.056036 | 0.0 | 0.41 +Output | 0.00022945 | 0.00022945 | 0.00022945 | 0.0 | 0.00 +Modify | 0.0090252 | 0.0090252 | 0.0090252 | 0.0 | 0.07 +Other | | 0.00801 | | | 0.06 + +Nlocal: 512 ave 512 max 512 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 10901 ave 10901 max 10901 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 374419 ave 374419 max 374419 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 374419 +Ave neighs/atom = 731.28711 +Neighbor list builds = 71 +Dangerous builds = 0 +Total wall time: 0:00:13 diff --git a/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.4 b/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.4 new file mode 100644 index 00000000000..693b8b30502 --- /dev/null +++ b/examples/PACKAGES/pedone/log.9Apr24.pedone.melt.g++.4 @@ -0,0 +1,122 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-373-g7ac84e18dd) + using 1 OpenMP thread(s) per MPI task +# Ca-O melt with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 + +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (19.242 19.242 19.242) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 +create_atoms 2 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +mass 1 40.078 +mass 2 15.999 + +set type 1 charge 1.2 +Setting atom values ... + 256 settings made for charge +set type 2 charge -1.2 +Setting atom values ... + 256 settings made for charge + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +velocity all create 6000.0 98347 + +fix 1 all nvt temp 3000.0 3000.0 0.1 + +# dump 1 all atom 500 Ca-O-melt.lammpstrj + +thermo 100 +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.23676226 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 1.3089053e-05 + estimated relative force accuracy = 9.089844e-07 + using double precision FFTW3 + 3d grid and FFT values/proc = 11191 3456 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17 + ghost atom cutoff = 17 + binsize = 8.5, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair pedone, perpetual, skip from (2) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (2) pair coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.315 | 5.315 | 5.315 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 6000 -3771.5568 0 -3375.2452 34213.185 + 100 3050.0106 -3571.4712 0 -3370.0121 118480.04 + 200 3100.0073 -3571.2534 0 -3366.492 120618.37 + 300 2959.7127 -3580.0883 0 -3384.5935 109184.72 + 400 2922.7083 -3563.9803 0 -3370.9298 120165.71 + 500 3145.0439 -3571.3828 0 -3363.6465 115057.51 + 600 2741.7439 -3563.5077 0 -3382.4102 115504.31 + 700 2906.3636 -3567.3604 0 -3375.3895 119518.5 + 800 2995.3864 -3567.3838 0 -3369.5327 117975.22 + 900 2965.24 -3565.7983 0 -3369.9385 123362.35 + 1000 2916.6485 -3578.7471 0 -3386.0968 115624.78 +Loop time of 4.50395 on 4 procs for 1000 steps with 512 atoms + +Performance: 38.366 ns/day, 0.626 hours/ns, 222.028 timesteps/s, 113.678 katom-step/s +99.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.2703 | 3.2983 | 3.3259 | 1.3 | 73.23 +Kspace | 0.79815 | 0.82633 | 0.85342 | 2.6 | 18.35 +Neigh | 0.18328 | 0.18398 | 0.18472 | 0.1 | 4.08 +Comm | 0.17423 | 0.17508 | 0.17592 | 0.2 | 3.89 +Output | 0.00019336 | 0.0002167 | 0.00028554 | 0.0 | 0.00 +Modify | 0.0089842 | 0.0091093 | 0.0092205 | 0.1 | 0.20 +Other | | 0.01096 | | | 0.24 + +Nlocal: 128 ave 143 max 118 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Nghost: 7622.75 ave 7651 max 7598 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Neighs: 93581.8 ave 106456 max 84898 min +Histogram: 1 1 0 0 1 0 0 0 0 1 + +Total # of neighbors = 374327 +Ave neighs/atom = 731.10742 +Neighbor list builds = 71 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.1 b/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.1 new file mode 100644 index 00000000000..bf58a8da9bd --- /dev/null +++ b/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.1 @@ -0,0 +1,134 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-373-g7ac84e18dd) + using 1 OpenMP thread(s) per MPI task +# Ca-O crystal with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 + +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (19.242 19.242 19.242) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 +create_atoms 2 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +mass 1 40.078 +mass 2 15.999 + +displace_atoms all random 0.01 0.01 0.01 9084544 +Displacing atoms ... +set type 1 charge 1.2 +Setting atom values ... + 256 settings made for charge +set type 2 charge -1.2 +Setting atom values ... + 256 settings made for charge + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +variable len equal lx*0.25 +thermo_style custom step v_len lx pe press +thermo 100 +fix 1 all box/relax iso 0.0 +minimize 0.0 0.0 1000 10000 +Switching to 'neigh_modify every 1 delay 0 check yes' setting during minimization +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.23676226 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 1.3089053e-05 + estimated relative force accuracy = 9.089844e-07 + using double precision FFTW3 + 3d grid and FFT values/proc = 29791 13824 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17 + ghost atom cutoff = 17 + binsize = 8.5, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair pedone, perpetual, skip from (2) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (2) pair coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +WARNING: Energy due to 1 extra global DOFs will be included in minimizer energies + (src/min.cpp:219) +Per MPI rank memory allocation (min/avg/max) = 10.33 | 10.33 | 10.33 Mbytes + Step v_len Lx PotEng Press + 0 4.8105 19.242 -3765.9116 -21299.914 + 100 4.7797128 19.118851 -3767.814 -164.13101 + 200 4.7787507 19.115003 -3769.1366 -373.58797 + 300 4.7768265 19.107306 -3770.5634 48.944709 + 400 4.7768265 19.107306 -3770.9879 -258.56116 + 500 4.7758644 19.103458 -3771.3898 173.91894 + 600 4.7758644 19.103458 -3771.7586 -91.813678 + 700 4.7758644 19.103458 -3771.9842 -252.52883 + 800 4.7749023 19.099609 -3772.3526 216.83318 + 857 4.7747927 19.099171 -3772.8223 32.586251 +Loop time of 18.0592 on 1 procs for 857 steps with 512 atoms + +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = linesearch alpha is zero + Energy initial, next-to-last, final = + -3765.91161156884 -3772.82226663623 -3772.82226663623 + Force two-norm initial, final = 284.3967 0.46963871 + Force max component initial, final = 284.14458 0.42827677 + Final line search alpha, max atom move = 2.8580337e-08 1.2240294e-08 + Iterations, force evaluations = 857 894 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 13.907 | 13.907 | 13.907 | 0.0 | 77.01 +Kspace | 1.3809 | 1.3809 | 1.3809 | 0.0 | 7.65 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.045871 | 0.045871 | 0.045871 | 0.0 | 0.25 +Output | 0.0002809 | 0.0002809 | 0.0002809 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.726 | | | 15.09 + +Nlocal: 512 ave 512 max 512 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11655 ave 11655 max 11655 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 372155 ave 372155 max 372155 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 372155 +Ave neighs/atom = 726.86523 +Neighbor list builds = 0 +Dangerous builds = 0 + +print "Expected lattice parameter: 4.7748, computed: $(v_len:%6.4f)" +Expected lattice parameter: 4.7748, computed: 4.7748 +Total wall time: 0:00:18 diff --git a/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.4 b/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.4 new file mode 100644 index 00000000000..95a84f81e0b --- /dev/null +++ b/examples/PACKAGES/pedone/log.9Apr24.pedone.relax.g++.4 @@ -0,0 +1,134 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-373-g7ac84e18dd) + using 1 OpenMP thread(s) per MPI task +# Ca-O crystal with Pedone potential + +units metal +atom_style charge + +lattice fcc 4.8105 # experimental lattice parameter for fcc-lattice Ca cations +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 + +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (19.242 19.242 19.242) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +lattice fcc 4.8105 origin 0.5 0.5 0.5 # O anion lattice shifted by half a unit cell +Lattice spacing in x,y,z = 4.8105 4.8105 4.8105 +create_atoms 2 box +Created 256 atoms + using lattice units in orthogonal box = (0 0 0) to (19.242 19.242 19.242) + create_atoms CPU = 0.000 seconds + +mass 1 40.078 +mass 2 15.999 + +displace_atoms all random 0.01 0.01 0.01 9084544 +Displacing atoms ... +set type 1 charge 1.2 +Setting atom values ... + 256 settings made for charge +set type 2 charge -1.2 +Setting atom values ... + 256 settings made for charge + +timestep 0.002 +neigh_modify delay 5 every 1 check yes + +pair_style hybrid/overlay pedone 15.0 coul/long 15.0 +kspace_style pppm 1.0e-6 + +pair_coeff * * coul/long +pair_coeff 1 2 pedone 0.030211 2.241334 2.923245 5.0 +pair_coeff 2 2 pedone 0.042395 1.379316 3.618701 22.0 + +variable len equal lx*0.25 +thermo_style custom step v_len lx pe press +thermo 100 +fix 1 all box/relax iso 0.0 +minimize 0.0 0.0 1000 10000 +Switching to 'neigh_modify every 1 delay 0 check yes' setting during minimization +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:342) + G vector (1/distance) = 0.23676226 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 1.3089053e-05 + estimated relative force accuracy = 9.089844e-07 + using double precision FFTW3 + 3d grid and FFT values/proc = 11191 3456 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17 + ghost atom cutoff = 17 + binsize = 8.5, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair pedone, perpetual, skip from (2) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (2) pair coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +WARNING: Energy due to 1 extra global DOFs will be included in minimizer energies + (src/min.cpp:219) +Per MPI rank memory allocation (min/avg/max) = 6.44 | 6.44 | 6.44 Mbytes + Step v_len Lx PotEng Press + 0 4.8105 19.242 -3765.9116 -21299.914 + 100 4.7797128 19.118851 -3767.814 -164.13101 + 200 4.7787507 19.115003 -3769.1367 -373.59489 + 300 4.7768265 19.107306 -3770.5868 32.046893 + 400 4.7768265 19.107306 -3771.0322 -290.69703 + 500 4.7758644 19.103458 -3771.4223 150.34606 + 600 4.7758644 19.103458 -3771.7941 -117.26938 + 700 4.7758644 19.103458 -3772.0193 -277.34372 + 800 4.7749023 19.099609 -3772.42 171.95177 + 860 4.7748339 19.099336 -3772.8237 1.0976356 +Loop time of 5.65601 on 4 procs for 860 steps with 512 atoms + +99.5% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = linesearch alpha is zero + Energy initial, next-to-last, final = + -3765.91161156888 -3772.82365446552 -3772.82365446552 + Force two-norm initial, final = 284.3967 0.067746634 + Force max component initial, final = 284.14458 0.014426328 + Final line search alpha, max atom move = 1.9073486e-06 2.7516038e-08 + Iterations, force evaluations = 860 922 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.7408 | 3.8442 | 4.0543 | 6.5 | 67.97 +Kspace | 0.60187 | 0.81211 | 0.91543 | 14.1 | 14.36 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.14969 | 0.15017 | 0.15071 | 0.1 | 2.66 +Output | 0.00019203 | 0.00020711 | 0.0002511 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.8494 | | | 15.02 + +Nlocal: 128 ave 135 max 123 min +Histogram: 1 0 1 0 1 0 0 0 0 1 +Nghost: 8175 ave 8180 max 8168 min +Histogram: 1 0 0 0 0 1 0 1 0 1 +Neighs: 93038.8 ave 98164 max 89373 min +Histogram: 1 0 1 0 1 0 0 0 0 1 + +Total # of neighbors = 372155 +Ave neighs/atom = 726.86523 +Neighbor list builds = 0 +Dangerous builds = 0 + +print "Expected lattice parameter: 4.7748, computed: $(v_len:%6.4f)" +Expected lattice parameter: 4.7748, computed: 4.7748 +Total wall time: 0:00:05 diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/data.pos b/examples/PACKAGES/phonon/2-1D-diatomic/data.pos index cba35b49c94..3ab4033aee5 100644 --- a/examples/PACKAGES/phonon/2-1D-diatomic/data.pos +++ b/examples/PACKAGES/phonon/2-1D-diatomic/data.pos @@ -8,7 +8,7 @@ 0.00000000 64.00000000 xlo xhi 0.00000000 1.00000000 ylo yhi - 0.00000000 1.00000000 zlo zhi + -0.50000000 0.50000000 zlo zhi Atoms diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/in.Ana b/examples/PACKAGES/phonon/2-1D-diatomic/in.Ana index ca49cd50c6c..5209adeb4a4 100644 --- a/examples/PACKAGES/phonon/2-1D-diatomic/in.Ana +++ b/examples/PACKAGES/phonon/2-1D-diatomic/in.Ana @@ -1,4 +1,5 @@ -# 3D simple cubic lattice simulation +# 2D slice of 3D simple cubic lattice simulation + dimension 2 boundary p f p diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.1 b/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.1 new file mode 100644 index 00000000000..e84bcf8dfff --- /dev/null +++ b/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.1 @@ -0,0 +1,20125 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# 3D simple cubic lattice simulation +dimension 2 +boundary p f p + +units lj +atom_style bond +atom_modify sort 0 1. +bond_style harmonic +pair_style none +comm_modify cutoff 2.0 + +# geometry +read_data data.pos +Reading data file ... + orthogonal box = (0 0 -0.5) to (64 1 0.5) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 64 atoms + scanning bonds ... + 2 = max bonds/atom + reading bonds ... + 64 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.002 seconds + +# +neighbor 1.0 nsq +neigh_modify delay 0 check no + +#Langevin random seed +variable r equal 571101 + +#Langevin Temperature +variable t equal 0.005 + +# Langevin Damping variable +variable d equal 0.5 + +# Create velocities and equilibrate +compute MyTemp all temp/partial 1 0 0 +velocity all create $t 28711 mom yes rot yes dist gaussian temp MyTemp +velocity all create 0.005 28711 mom yes rot yes dist gaussian temp MyTemp +velocity all set NULL 0.0 0.0 units box +# +fix 1 all langevin $t $t $d $r +fix 1 all langevin 0.005 $t $d $r +fix 1 all langevin 0.005 0.005 $d $r +fix 1 all langevin 0.005 0.005 0.5 $r +fix 1 all langevin 0.005 0.005 0.5 571101 +fix_modify 1 temp MyTemp +fix 2 all setforce NULL 0. 0. +fix 3 all nve +fix 4 all phonon 10 50000 500000 map.in phonon sysdim 1 +fix_modify 4 temp MyTemp + +# 1 2 3 4 +thermo_style custom step temp pe etotal +thermo_modify temp MyTemp +thermo 100 + +# +run 2000000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix phonon command: doi:10.1016/j.cpc.2011.04.019 + +@Article{Kong11, + author = {L. T. Kong}, + title = {Phonon Dispersion Measured Directly from Molecular Dynamics Simulations}, + journal = {Comput.\ Phys.\ Commun.}, + year = 2011, + volume = 182, + pages = {2201--2207} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: Communication cutoff 2 is shorter than a bond length based estimate of 2.5. This may lead to errors. (src/comm.cpp:723) +WARNING: Communication cutoff 2 is shorter than a bond length based estimate of 2.5. This may lead to errors. (src/comm.cpp:723) +WARNING: Inconsistent image flags (src/domain.cpp:815) +Per MPI rank memory allocation (min/avg/max) = 3.24 | 3.24 | 3.24 Mbytes + Step Temp PotEng TotEng + 0 0.005 0 0.0024609375 + 100 0.0043574392 0.00069805582 0.0028427329 + 200 0.0050747182 0.001248215 0.0037459279 + 300 0.0042939525 0.0012759486 0.0033893784 + 400 0.0047484976 0.001437393 0.0037745442 + 500 0.004627561 0.0016348645 0.0039124922 + 600 0.0053777922 0.0016710534 0.0043179355 + 700 0.0052695823 0.001835953 0.0044295755 + 800 0.0058609694 0.0019759698 0.0048606657 + 900 0.0041391777 0.0023023409 0.0043395924 + 1000 0.0056759231 0.0025899311 0.0053835496 + 1100 0.0040035566 0.0026989975 0.004669498 + 1200 0.0046087446 0.0024368196 0.004705186 + 1300 0.0044194669 0.0024664612 0.0046416676 + 1400 0.0073096222 0.001870287 0.0054679916 + 1500 0.0051897883 0.0017108961 0.004265245 + 1600 0.0044584884 0.001752323 0.0039467352 + 1700 0.005428529 0.0021271098 0.0047989639 + 1800 0.0051009277 0.0024399413 0.0049505541 + 1900 0.0051964843 0.0024877492 0.0050453939 + 2000 0.0055793788 0.0023282122 0.0050743127 + 2100 0.0056652876 0.0021449654 0.0049333492 + 2200 0.0038066338 0.0021519385 0.004025516 + 2300 0.0057120344 0.0023205208 0.0051319127 + 2400 0.0048840732 0.0021352142 0.004539094 + 2500 0.0046857988 0.0019440455 0.0042503371 + 2600 0.0040103298 0.002513002 0.0044868362 + 2700 0.0057128095 0.002876904 0.0056886774 + 2800 0.0046716608 0.0030252203 0.0053245534 + 2900 0.0051838165 0.0019962325 0.0045476421 + 3000 0.0069632545 0.0012651 0.0046923269 + 3100 0.0048263268 0.0019062765 0.0042817343 + 3200 0.0045447528 0.0022519705 0.004488841 + 3300 0.0046649601 0.0022379997 0.0045340347 + 3400 0.0044544129 0.0019164476 0.0041088539 + 3500 0.0039472772 0.0018036276 0.0037464281 + 3600 0.0046102247 0.0022598943 0.0045289892 + 3700 0.0044370266 0.0024312133 0.0046150624 + 3800 0.0051412618 0.0029112044 0.0054416692 + 3900 0.0061568023 0.0026148329 0.005645134 + 4000 0.006119091 0.0026007629 0.0056125029 + 4100 0.0064752671 0.0026929514 0.0058799969 + 4200 0.0065751558 0.0023915745 0.005627784 + 4300 0.0061381444 0.0022725727 0.0052936906 + 4400 0.0058224538 0.0022860937 0.0051518327 + 4500 0.0061726521 0.0026253408 0.005663443 + 4600 0.0039716434 0.0030400687 0.004994862 + 4700 0.0040469864 0.002831765 0.0048236411 + 4800 0.0048440766 0.0026333078 0.0050175017 + 4900 0.0052442362 0.0023348669 0.0049160145 + 5000 0.0051295286 0.0020219063 0.0045465961 + 5100 0.0057879072 0.0021999673 0.0050487028 + 5200 0.0051142738 0.0018998498 0.0044170315 + 5300 0.0057863143 0.0019625202 0.0048104717 + 5400 0.0058678081 0.0021442684 0.0050323302 + 5500 0.0058645814 0.0023505736 0.0052370472 + 5600 0.0030307183 0.0029662202 0.0044579019 + 5700 0.0055602694 0.0030961043 0.0058327995 + 5800 0.004501128 0.0024716441 0.004687043 + 5900 0.0060587191 0.0021550846 0.0051371104 + 6000 0.007430971 0.0021537443 0.0058111754 + 6100 0.0062865463 0.0024185097 0.0055126692 + 6200 0.0040867151 0.0027590127 0.0047704428 + 6300 0.0052219679 0.0025648111 0.0051349984 + 6400 0.0059641115 0.0027159368 0.005651398 + 6500 0.0055556193 0.0030946318 0.0058290382 + 6600 0.0040555581 0.0033636584 0.0053597534 + 6700 0.0045118142 0.0028218699 0.0050425285 + 6800 0.0058601637 0.0023227311 0.0052070304 + 6900 0.0039481052 0.0023341289 0.004277337 + 7000 0.0042144559 0.0023350045 0.0044093071 + 7100 0.0054929735 0.0020343767 0.0047379496 + 7200 0.0046609622 0.0021430473 0.0044371146 + 7300 0.004585171 0.0021899849 0.0044467487 + 7400 0.0054609862 0.002436333 0.0051241621 + 7500 0.0061609286 0.002218384 0.0052507161 + 7600 0.0069910986 0.0023618412 0.0058027725 + 7700 0.0049048939 0.0028163949 0.0052305224 + 7800 0.0059777828 0.0028555032 0.0057976932 + 7900 0.0056747441 0.0026868768 0.005479915 + 8000 0.0054592173 0.0026213233 0.0053082818 + 8100 0.0060248934 0.0024665402 0.0054319174 + 8200 0.0034740925 0.0022766833 0.0039865882 + 8300 0.0046311032 0.0020748438 0.0043542149 + 8400 0.0055686859 0.0025104548 0.0052512924 + 8500 0.0052091911 0.0031335015 0.0056974002 + 8600 0.0067050757 0.0031081221 0.0064082765 + 8700 0.005609584 0.003129452 0.0058904192 + 8800 0.0062972892 0.0029939671 0.0060934141 + 8900 0.0050003322 0.0033860259 0.0058471269 + 9000 0.0057945805 0.0027651923 0.0056172124 + 9100 0.0050460043 0.0025437242 0.0050273045 + 9200 0.0042363075 0.0024518661 0.0045369237 + 9300 0.0065605566 0.0021761918 0.0054052158 + 9400 0.0046266128 0.0027272818 0.0050044428 + 9500 0.005093908 0.0035739754 0.0060811332 + 9600 0.0056811868 0.0032402711 0.0060364802 + 9700 0.0054339481 0.0027984612 0.0054729825 + 9800 0.0046290197 0.0029933479 0.0052716935 + 9900 0.0040932968 0.0030192789 0.0050339484 + 10000 0.0046184332 0.0027902298 0.0050633649 + 10100 0.0054785105 0.0024845081 0.0051809625 + 10200 0.0036508441 0.0027718363 0.0045687361 + 10300 0.0058397664 0.0024143777 0.0052886377 + 10400 0.0061316511 0.0023004298 0.0053183519 + 10500 0.0063671891 0.002358583 0.0054924339 + 10600 0.0055673068 0.0024652813 0.0052054401 + 10700 0.0044767567 0.0022108097 0.0044142133 + 10800 0.0038516362 0.0021290553 0.0040247825 + 10900 0.0059622925 0.0014383539 0.0043729198 + 11000 0.0047015528 0.0017109579 0.0040250034 + 11100 0.0048324377 0.0022149034 0.0045933689 + 11200 0.0045895327 0.0023331633 0.0045920739 + 11300 0.0057685631 0.0023070843 0.005146299 + 11400 0.0057175293 0.0021263437 0.0049404401 + 11500 0.0042261386 0.0014448706 0.0035249232 + 11600 0.0040073938 0.0016123955 0.0035847846 + 11700 0.0052509295 0.0021014322 0.0046858741 + 11800 0.0046129007 0.0021548504 0.0044252624 + 11900 0.006252411 0.0019672111 0.0050445697 + 12000 0.0042706578 0.0022585261 0.0043604904 + 12100 0.0052386215 0.0021427965 0.0047211805 + 12200 0.0048033303 0.0020771704 0.0044413095 + 12300 0.0054123556 0.0021925501 0.0048564439 + 12400 0.0056958095 0.0024101247 0.005213531 + 12500 0.003936961 0.0025784348 0.0045161578 + 12600 0.005806319 0.0023774483 0.005235246 + 12700 0.0050246058 0.002138577 0.0046116252 + 12800 0.0046466499 0.002353937 0.00464096 + 12900 0.0040697576 0.0026153486 0.0046184324 + 13000 0.0051077455 0.0025926649 0.0051066334 + 13100 0.0059238162 0.0023754973 0.0052911256 + 13200 0.0050262601 0.0027866217 0.005260484 + 13300 0.0046837193 0.0028305953 0.0051358633 + 13400 0.0060702275 0.0026578378 0.0056455279 + 13500 0.0070941669 0.0028599331 0.0063515934 + 13600 0.0049383135 0.0027511174 0.0051816936 + 13700 0.0058137233 0.0022787622 0.0051402041 + 13800 0.0050900322 0.0023292658 0.004834516 + 13900 0.0056035425 0.0020847497 0.0048427433 + 14000 0.0048421321 0.0020643753 0.0044476122 + 14100 0.0040120734 0.0020900085 0.0040647008 + 14200 0.0059974558 0.0018489433 0.004800816 + 14300 0.0053519842 0.0020061349 0.0046403146 + 14400 0.0052577077 0.0021811748 0.0047689528 + 14500 0.0057442141 0.0024358113 0.0052630417 + 14600 0.0053705754 0.0023154331 0.0049587632 + 14700 0.0055287223 0.0023659441 0.0050871121 + 14800 0.0063853093 0.0020824722 0.0052252416 + 14900 0.0056650971 0.0021430137 0.0049313037 + 15000 0.0046222911 0.0026066063 0.0048816402 + 15100 0.0046457835 0.003285206 0.0055718026 + 15200 0.0040692184 0.0029406222 0.0049434406 + 15300 0.0065218196 0.0024823014 0.0056922595 + 15400 0.0061524606 0.002338872 0.0053670362 + 15500 0.0062325672 0.0025187092 0.0055863008 + 15600 0.0037374849 0.0029118315 0.0047513748 + 15700 0.0059601316 0.0031529096 0.0060864119 + 15800 0.0042898257 0.004230945 0.0063423436 + 15900 0.0054123635 0.0039736962 0.0066375938 + 16000 0.0040378221 0.0027442226 0.0047315882 + 16100 0.0041917268 0.0024148012 0.0044779167 + 16200 0.0042305682 0.0023259363 0.0044081691 + 16300 0.0040641612 0.0022020665 0.0042023958 + 16400 0.0060958857 0.0022393112 0.00523963 + 16500 0.0047586325 0.0025539716 0.004896111 + 16600 0.0037833567 0.0027341016 0.0045962225 + 16700 0.0060242296 0.0026077144 0.0055727649 + 16800 0.0047023675 0.002547006 0.0048614525 + 16900 0.0038554174 0.0029582913 0.0048558795 + 17000 0.006008217 0.0026384653 0.0055956347 + 17100 0.0067006887 0.002296129 0.0055941243 + 17200 0.0054133465 0.0019429878 0.0046073693 + 17300 0.0054890427 0.0016767747 0.0043784129 + 17400 0.0045449859 0.0014176576 0.0036546428 + 17500 0.0054955486 0.0017163541 0.0044211944 + 17600 0.0058078136 0.0020150777 0.004873611 + 17700 0.0049416351 0.002080061 0.004512272 + 17800 0.0038131568 0.0018465223 0.0037233104 + 17900 0.0052006166 0.0016009024 0.0041605809 + 18000 0.0034856127 0.0019176235 0.0036331985 + 18100 0.0050435836 0.0021592134 0.0046416022 + 18200 0.0050454556 0.0024104341 0.0048937443 + 18300 0.0043581658 0.0029787385 0.0051237732 + 18400 0.0053312898 0.0033614164 0.0059854106 + 18500 0.0048966937 0.0036187995 0.0060288909 + 18600 0.0048182169 0.00292895 0.0053004161 + 18700 0.0054267617 0.0025620849 0.0052330692 + 18800 0.0050943475 0.0026813135 0.0051886876 + 18900 0.0039869876 0.0032543936 0.005216739 + 19000 0.0043626198 0.0029896235 0.0051368504 + 19100 0.0045877519 0.002750391 0.0050084251 + 19200 0.006579538 0.0029501522 0.0061885185 + 19300 0.0056048184 0.0032254909 0.0059841125 + 19400 0.0053903909 0.0030408147 0.0056938977 + 19500 0.005771061 0.0028106681 0.0056511122 + 19600 0.0050787056 0.0032741651 0.0057738405 + 19700 0.0062354423 0.0039768846 0.0070458913 + 19800 0.0058671063 0.0038051942 0.0066929106 + 19900 0.0049825744 0.0031770943 0.0056294551 + 20000 0.0047919255 0.0031410517 0.0054995776 + 20100 0.0050407583 0.0035424658 0.0060234641 + 20200 0.0058757475 0.0034199356 0.0063119051 + 20300 0.006334621 0.0037184005 0.0068362218 + 20400 0.0034952831 0.0040343948 0.0057547294 + 20500 0.0066970618 0.0032583121 0.0065545222 + 20600 0.0058642918 0.0028310331 0.0057173642 + 20700 0.0042924271 0.0031799111 0.00529259 + 20800 0.0056142768 0.0033570129 0.0061202898 + 20900 0.0079429254 0.002630942 0.0065403506 + 21000 0.0058092966 0.0023584059 0.005217669 + 21100 0.0051128755 0.0027720768 0.0052885702 + 21200 0.0056039589 0.0029475615 0.00570576 + 21300 0.0049123632 0.003310519 0.0057283228 + 21400 0.0060294589 0.002649009 0.0056166333 + 21500 0.0063442688 0.0020375075 0.0051600773 + 21600 0.0041018738 0.0025317231 0.0045506141 + 21700 0.0049487689 0.0027899206 0.0052256427 + 21800 0.0053324851 0.0028817412 0.0055063237 + 21900 0.005635867 0.0030079436 0.0057818469 + 22000 0.0053407066 0.0029636439 0.005592273 + 22100 0.0066422576 0.0027743155 0.0060435516 + 22200 0.0045173653 0.0027470486 0.0049704393 + 22300 0.0058282909 0.0031696141 0.006038226 + 22400 0.0048138406 0.0035294177 0.0058987298 + 22500 0.0040163512 0.0031258619 0.0051026598 + 22600 0.005497944 0.0029409361 0.0056469554 + 22700 0.0035751831 0.0028083674 0.0045680278 + 22800 0.0050463085 0.0028518322 0.0053355621 + 22900 0.0050976468 0.0031764332 0.0056854312 + 23000 0.0062732751 0.003343365 0.0064309926 + 23100 0.0059831671 0.0033794992 0.0063243392 + 23200 0.0068515269 0.0038534344 0.0072256703 + 23300 0.0053723963 0.0040804729 0.0067246992 + 23400 0.0038984421 0.0037090769 0.0056278414 + 23500 0.0043842159 0.0033244792 0.0054823355 + 23600 0.0053604598 0.0030350809 0.0056734322 + 23700 0.0049866894 0.0033867784 0.0058411646 + 23800 0.0055185061 0.0035940384 0.0063101782 + 23900 0.0060509926 0.0035528583 0.0065310813 + 24000 0.0052942519 0.0032618388 0.0058676035 + 24100 0.0046515919 0.0022780225 0.0045674779 + 24200 0.0048312594 0.0021154079 0.0044932934 + 24300 0.0046075168 0.0026012561 0.0048690183 + 24400 0.0055975784 0.0026241897 0.0053792478 + 24500 0.0048762345 0.0023024667 0.0047024884 + 24600 0.005792076 0.0020312863 0.0048820737 + 24700 0.0056289998 0.0018654626 0.004635986 + 24800 0.0045177675 0.0018953833 0.004118972 + 24900 0.0053059202 0.0018988041 0.0045103117 + 25000 0.0052083277 0.0019125631 0.0044760369 + 25100 0.0054212234 0.0022550518 0.0049233102 + 25200 0.0049555615 0.0025207197 0.0049597851 + 25300 0.0061774688 0.0026896502 0.0057301232 + 25400 0.005059164 0.0026353207 0.005125378 + 25500 0.0048688444 0.0020352551 0.0044316395 + 25600 0.0048712222 0.001728894 0.0041264487 + 25700 0.0038212296 0.0017067335 0.003587495 + 25800 0.0040380906 0.0016554804 0.0036429781 + 25900 0.0043263076 0.0019219823 0.0040513368 + 26000 0.0054074945 0.001997128 0.0046586292 + 26100 0.0049600073 0.002519319 0.0049605726 + 26200 0.0056113617 0.0025971664 0.0053590085 + 26300 0.0049320056 0.0026140545 0.005041526 + 26400 0.0053954553 0.0030303057 0.0056858814 + 26500 0.0045835433 0.003211243 0.0054672057 + 26600 0.0048864138 0.0034010771 0.0058061089 + 26700 0.0060285599 0.0030244588 0.0059916407 + 26800 0.0058859498 0.0023446802 0.0052416711 + 26900 0.005913359 0.0021342138 0.0050446952 + 27000 0.0047430396 0.0022132581 0.0045477229 + 27100 0.0046058289 0.0022268681 0.0044937995 + 27200 0.0047747041 0.0018880948 0.0042381445 + 27300 0.0048497295 0.0019983256 0.0043853018 + 27400 0.0055509596 0.0022895952 0.0050217081 + 27500 0.0034907328 0.0020011735 0.0037192685 + 27600 0.00456077 0.0015742 0.003818954 + 27700 0.0054887852 0.0020371585 0.00473867 + 27800 0.0043722682 0.0021848794 0.0043368552 + 27900 0.0059444464 0.0021015692 0.0050273514 + 28000 0.0061640368 0.0020122197 0.0050460815 + 28100 0.0040434039 0.0020061319 0.0039962447 + 28200 0.0056980091 0.0018915625 0.0046960514 + 28300 0.0043620541 0.0016827876 0.0038297361 + 28400 0.0050075312 0.0020823888 0.0045470331 + 28500 0.0048597403 0.0021669915 0.0045588949 + 28600 0.0049462088 0.0024610391 0.0048955013 + 28700 0.0048715233 0.0019898566 0.0043875595 + 28800 0.0049953675 0.0020809044 0.0045395618 + 28900 0.0039609176 0.0027204082 0.0046699223 + 29000 0.0046405152 0.0026787007 0.0049627043 + 29100 0.0040307692 0.0024111027 0.0043949969 + 29200 0.0055622707 0.0021787345 0.0049164146 + 29300 0.004691948 0.0023987771 0.0047080952 + 29400 0.0054522045 0.0021773926 0.0048608995 + 29500 0.0049082269 0.0023485497 0.0047643176 + 29600 0.0044234756 0.0027077731 0.0048849524 + 29700 0.0044703753 0.0030638593 0.0052641221 + 29800 0.0057738402 0.0032529547 0.0060947666 + 29900 0.0048025121 0.0027421539 0.0051058903 + 30000 0.0055909846 0.0023093322 0.0050611449 + 30100 0.0046734595 0.0021724983 0.0044727167 + 30200 0.0048364088 0.0019816822 0.0043621022 + 30300 0.0056588503 0.0021027804 0.0048879957 + 30400 0.0042038264 0.0025429615 0.0046120323 + 30500 0.0066456506 0.0028193285 0.0060902347 + 30600 0.0057051527 0.0027646569 0.0055726618 + 30700 0.0045781261 0.0021712769 0.0044245733 + 30800 0.0061563885 0.0024026535 0.0054327509 + 30900 0.006137954 0.0028131351 0.0058341594 + 31000 0.0057865932 0.0033815486 0.0062296375 + 31100 0.0055236249 0.0032625501 0.0059812092 + 31200 0.0058766132 0.0032343848 0.0061267804 + 31300 0.0038290884 0.0033710206 0.0052556501 + 31400 0.0052004617 0.002375254 0.0049348563 + 31500 0.0046165465 0.0022371838 0.0045093903 + 31600 0.0054296383 0.0022328305 0.0049052306 + 31700 0.0052948911 0.0023888817 0.0049949609 + 31800 0.0037717404 0.0033449354 0.0052013389 + 31900 0.0036596704 0.0034627591 0.0052640032 + 32000 0.004879604 0.003315021 0.0057167011 + 32100 0.0052479579 0.003748086 0.0063310653 + 32200 0.0056643196 0.0037741937 0.006562101 + 32300 0.0050576031 0.0033843274 0.0058736164 + 32400 0.0063975521 0.0030393025 0.0061880977 + 32500 0.0044808357 0.0030148443 0.0052202556 + 32600 0.0071966777 0.0024360099 0.0059781247 + 32700 0.0054322363 0.0020534184 0.0047270972 + 32800 0.0045356839 0.00243665 0.004669057 + 32900 0.0043858911 0.0025665673 0.0047252481 + 33000 0.0061873012 0.0024854763 0.0055307886 + 33100 0.0060590587 0.0029373982 0.0059195912 + 33200 0.0051938061 0.0029602147 0.0055165412 + 33300 0.0046116034 0.0026471722 0.0049169457 + 33400 0.0048636673 0.0024079508 0.004801787 + 33500 0.0050727071 0.0025147355 0.0050114585 + 33600 0.0044766618 0.0025390206 0.0047423776 + 33700 0.0054448159 0.0022224231 0.0049022935 + 33800 0.005215128 0.0025358883 0.0051027091 + 33900 0.0056592959 0.0023395036 0.0051249383 + 34000 0.0057721678 0.0023020667 0.0051430555 + 34100 0.0060950158 0.0021174573 0.0051173479 + 34200 0.0045799007 0.0025894827 0.0048436526 + 34300 0.0041966686 0.0028745785 0.0049401263 + 34400 0.0041694325 0.0028783655 0.004930508 + 34500 0.0056157964 0.0022336284 0.0049976532 + 34600 0.0056673546 0.0025029817 0.0052923827 + 34700 0.0049042486 0.0027922823 0.0052060922 + 34800 0.0051478697 0.0028121309 0.0053458481 + 34900 0.0057709291 0.0025933891 0.0054337683 + 35000 0.0043881389 0.002579542 0.0047393291 + 35100 0.0032504434 0.0027300489 0.0043298766 + 35200 0.0043606937 0.0026993947 0.0048456736 + 35300 0.0050154596 0.0023707094 0.0048392559 + 35400 0.0039021657 0.0020705451 0.0039911423 + 35500 0.0045254366 0.0021294437 0.004356807 + 35600 0.0059918603 0.0019210225 0.0048701413 + 35700 0.0050307505 0.002146211 0.0046222835 + 35800 0.0061508274 0.0022475827 0.005274943 + 35900 0.0044662784 0.0025734008 0.0047716472 + 36000 0.0045982898 0.0024962582 0.004759479 + 36100 0.0054398466 0.0026323868 0.0053098112 + 36200 0.0034912201 0.0024770526 0.0041953875 + 36300 0.0039933997 0.0023731091 0.0043386105 + 36400 0.004960091 0.0020253619 0.0044666567 + 36500 0.0045110156 0.0020062164 0.0042264819 + 36600 0.0047338422 0.0020225667 0.0043525046 + 36700 0.0051109762 0.0018959322 0.0044114909 + 36800 0.0049331699 0.0020565315 0.0044845761 + 36900 0.0052401292 0.0020928006 0.0046719267 + 37000 0.005287103 0.0027874805 0.0053897265 + 37100 0.004868352 0.0031870581 0.0055832001 + 37200 0.0067231239 0.00288397 0.0061930076 + 37300 0.0062597497 0.0026862645 0.005767235 + 37400 0.0053918913 0.0025141209 0.0051679424 + 37500 0.0053173824 0.0026456735 0.0052628227 + 37600 0.0038746543 0.0025561048 0.0044631612 + 37700 0.0065020086 0.0020765991 0.0052768065 + 37800 0.0032280816 0.0020763865 0.0036652079 + 37900 0.0040683435 0.0026674628 0.0046698506 + 38000 0.0054937396 0.0032666628 0.0059706127 + 38100 0.0058787749 0.0035272261 0.0064206856 + 38200 0.006491445 0.0031632827 0.0063582908 + 38300 0.0040342657 0.0030945317 0.0050801468 + 38400 0.0055346487 0.0026509169 0.0053750019 + 38500 0.0053730018 0.0024468445 0.0050913688 + 38600 0.0046714509 0.0024470565 0.0047462863 + 38700 0.0050771096 0.0024852017 0.0049840915 + 38800 0.0039674348 0.0023424886 0.0042952104 + 38900 0.0054613945 0.0024739221 0.0051619523 + 39000 0.0056216656 0.002904291 0.0056712046 + 39100 0.0046869654 0.0031164961 0.0054233619 + 39200 0.0044473466 0.003477994 0.0056669223 + 39300 0.0052660574 0.0032816242 0.0058735119 + 39400 0.0065133824 0.0027647611 0.0059705665 + 39500 0.0046125617 0.0027430479 0.0050132931 + 39600 0.0039969338 0.0027835016 0.0047507425 + 39700 0.0042943571 0.0028185467 0.0049321756 + 39800 0.0041154251 0.002668955 0.0046945158 + 39900 0.0043943625 0.0026446077 0.004807458 + 40000 0.0043163581 0.0029722164 0.0050966739 + 40100 0.0048135281 0.0035377036 0.005906862 + 40200 0.0054013832 0.0034219724 0.0060804657 + 40300 0.0048106871 0.0033130657 0.0056808258 + 40400 0.0044925317 0.0026630956 0.0048742636 + 40500 0.0031533565 0.0025591451 0.0041111878 + 40600 0.0036964261 0.0024499732 0.004269308 + 40700 0.0049820802 0.0023781378 0.0048302554 + 40800 0.0049579201 0.0028466837 0.00528691 + 40900 0.0040527787 0.0026961648 0.0046908918 + 41000 0.0035012779 0.0024444294 0.0041677146 + 41100 0.0040248161 0.002045673 0.0040266371 + 41200 0.0060529986 0.0023638815 0.0053430917 + 41300 0.0058827269 0.0025750101 0.0054704148 + 41400 0.005686629 0.0026284143 0.0054273021 + 41500 0.0053967299 0.0029007499 0.0055569529 + 41600 0.005260624 0.0029715136 0.005560727 + 41700 0.0048897694 0.002828442 0.0052351254 + 41800 0.0053090345 0.0028582381 0.0054712785 + 41900 0.0061650184 0.0027138328 0.0057481778 + 42000 0.004885107 0.0025881829 0.0049925715 + 42100 0.0051536326 0.002449614 0.0049861675 + 42200 0.0054647197 0.002102733 0.0047923998 + 42300 0.0063220645 0.002358084 0.0054697251 + 42400 0.0047802288 0.002569246 0.0049220148 + 42500 0.0054277597 0.0025061238 0.0051775993 + 42600 0.0052555022 0.0025186371 0.0051053296 + 42700 0.0055016559 0.0027428163 0.0054506626 + 42800 0.0041685106 0.0025491297 0.0046008186 + 42900 0.0061125797 0.0024253938 0.0054339291 + 43000 0.0057603695 0.0024727145 0.0053078963 + 43100 0.0063647582 0.0021505758 0.0052832303 + 43200 0.0075452737 0.0020239728 0.0057376622 + 43300 0.0058871336 0.0025064254 0.0054039989 + 43400 0.0037365189 0.0028834155 0.0047224834 + 43500 0.0049943981 0.0028538701 0.0053120504 + 43600 0.0047787112 0.0027304531 0.005082475 + 43700 0.0050896025 0.0030697396 0.0055747783 + 43800 0.0051233927 0.0033858892 0.0059075591 + 43900 0.0056288699 0.0025229392 0.0052933986 + 44000 0.0066140005 0.0018883198 0.0051436482 + 44100 0.0041710492 0.0020011146 0.0040540529 + 44200 0.0052870161 0.0022571029 0.0048593061 + 44300 0.0043572528 0.0025009952 0.0046455805 + 44400 0.0042329947 0.0022262181 0.0043096452 + 44500 0.0060125135 0.0019067588 0.0048660428 + 44600 0.0050525298 0.0017708024 0.0042575944 + 44700 0.004844732 0.0019484927 0.0043330092 + 44800 0.0046475175 0.0024205819 0.0047080319 + 44900 0.0052083032 0.0025880249 0.0051514866 + 45000 0.0063883863 0.0028052659 0.0059495498 + 45100 0.0058661416 0.0025994969 0.0054867385 + 45200 0.0046619959 0.0028173792 0.0051119554 + 45300 0.004539417 0.0030325813 0.0052668256 + 45400 0.003464538 0.003007959 0.0047131613 + 45500 0.0048671256 0.0027041963 0.0050997347 + 45600 0.0062309309 0.0024492554 0.0055160417 + 45700 0.0060378046 0.0026753974 0.0056471293 + 45800 0.0048164271 0.0024666541 0.0048372393 + 45900 0.004633461 0.002422791 0.0047033225 + 46000 0.0048803427 0.0025580295 0.0049600732 + 46100 0.0051120808 0.0020052381 0.0045213403 + 46200 0.0051368641 0.0023940681 0.0049223684 + 46300 0.0047506314 0.0022936906 0.004631892 + 46400 0.0043825732 0.0020112923 0.00416834 + 46500 0.0033617453 0.0022722015 0.0039268105 + 46600 0.0048341791 0.002040599 0.0044199216 + 46700 0.0063786571 0.0019302017 0.005069697 + 46800 0.0044382804 0.0018962544 0.0040807206 + 46900 0.0061459049 0.0022291541 0.0052540917 + 47000 0.0034570347 0.0024280735 0.0041295828 + 47100 0.0063890193 0.0021365518 0.0052811472 + 47200 0.0041531248 0.0022357291 0.0042798453 + 47300 0.0062192703 0.0022819697 0.0053430168 + 47400 0.0042734377 0.0024638024 0.004567135 + 47500 0.0050057491 0.0024792104 0.0049429775 + 47600 0.0054308495 0.0024967244 0.0051697206 + 47700 0.004795058 0.0027333028 0.0050933704 + 47800 0.0053092366 0.0026147226 0.0052278625 + 47900 0.0057996794 0.0024898333 0.005344363 + 48000 0.004083384 0.002442603 0.0044523935 + 48100 0.0058859086 0.0023673621 0.0052643328 + 48200 0.0057436163 0.0022471262 0.0050740624 + 48300 0.0039847824 0.0019009417 0.0038622018 + 48400 0.0060841313 0.0017955454 0.0047900787 + 48500 0.0060832498 0.0020093656 0.0050034651 + 48600 0.0053065092 0.0025090423 0.0051208398 + 48700 0.004519689 0.0024532933 0.0046778278 + 48800 0.0049853304 0.0026800268 0.0051337441 + 48900 0.0051309595 0.0028925872 0.0054179813 + 49000 0.0037338752 0.002916775 0.0047545417 + 49100 0.0076271765 0.0023703752 0.0061243761 + 49200 0.0054014004 0.002376085 0.0050345867 + 49300 0.0045413047 0.0022238611 0.0044590346 + 49400 0.0050404956 0.0019930702 0.0044739391 + 49500 0.0056868245 0.0022009304 0.0049999143 + 49600 0.0046266325 0.0023248458 0.0046020165 + 49700 0.0046008386 0.0024799721 0.0047444474 + 49800 0.0034618229 0.0025689053 0.0042727712 + 49900 0.0050223145 0.0022472734 0.0047191938 + 50000 0.0046566625 0.0022400796 0.0045320307 + 50100 0.0054325612 0.0031067422 0.0057805809 + 50200 0.006858666 0.0033680554 0.0067438051 + 50300 0.0040035106 0.0031412712 0.0051117491 + 50400 0.0057337968 0.00284367 0.0056657731 + 50500 0.007507619 0.0025569325 0.0062520887 + 50600 0.0049285427 0.0026449117 0.0050706788 + 50700 0.0047659918 0.0024425403 0.0047883019 + 50800 0.005932462 0.0027364349 0.0056563185 + 50900 0.0048604465 0.002459088 0.004851339 + 51000 0.0049567903 0.0025554686 0.0049951388 + 51100 0.0052298647 0.0027915668 0.0053656408 + 51200 0.0048228203 0.0030843559 0.0054580877 + 51300 0.0052937706 0.0028158945 0.0054214223 + 51400 0.0042256923 0.0029417794 0.0050216123 + 51500 0.0042397619 0.0027751361 0.0048618939 + 51600 0.0086703699 0.0023316669 0.0065991146 + 51700 0.0051975483 0.0026402393 0.0051984076 + 51800 0.0045309646 0.002327158 0.0045572421 + 51900 0.0056945005 0.0017470247 0.0045497867 + 52000 0.0056746551 0.0018312247 0.004624219 + 52100 0.0060274955 0.001584361 0.0045510189 + 52200 0.0070584359 0.0017511833 0.0052252572 + 52300 0.0045526492 0.0022794573 0.0045202143 + 52400 0.0047397043 0.0026170444 0.0049498676 + 52500 0.0048802002 0.0025467898 0.0049487633 + 52600 0.0053555521 0.0022110128 0.0048469486 + 52700 0.004155959 0.0019178431 0.0039633542 + 52800 0.0045271029 0.0016801495 0.0039083329 + 52900 0.0048364152 0.0018046894 0.0041851125 + 53000 0.0046245354 0.0019851757 0.0042613142 + 53100 0.0041962232 0.00232427 0.0043895986 + 53200 0.0044352054 0.0025471811 0.0047301338 + 53300 0.0046783987 0.0019829965 0.0042856459 + 53400 0.0046732282 0.001932398 0.0042325025 + 53500 0.0047320742 0.0017693598 0.0040984276 + 53600 0.0064591399 0.002160751 0.0053398589 + 53700 0.004057231 0.002109613 0.0041065314 + 53800 0.0064624019 0.0018590077 0.0050397211 + 53900 0.0042991227 0.0023654354 0.0044814098 + 54000 0.0065145769 0.0020896392 0.0052960325 + 54100 0.0055718362 0.0024751896 0.0052175777 + 54200 0.0055799919 0.0029135269 0.0056599292 + 54300 0.0064098847 0.0022601397 0.0054150048 + 54400 0.0051473943 0.0022743466 0.0048078297 + 54500 0.0038405976 0.0025482454 0.0044385395 + 54600 0.0041340136 0.0023858965 0.0044206063 + 54700 0.0048224443 0.001779929 0.0041534758 + 54800 0.0062185119 0.0019720205 0.0050326944 + 54900 0.0038219702 0.0027179375 0.0045990635 + 55000 0.0046925314 0.0023564326 0.0046660379 + 55100 0.0049004981 0.0022132009 0.0046251648 + 55200 0.0045099089 0.0025256504 0.0047453712 + 55300 0.00488843 0.0024701874 0.0048762116 + 55400 0.0056295334 0.0025342729 0.0053050589 + 55500 0.0062733484 0.0030385714 0.0061262351 + 55600 0.0045348142 0.0033291404 0.0055611192 + 55700 0.0053572156 0.0029024455 0.0055392001 + 55800 0.0039165882 0.0025810875 0.0045087833 + 55900 0.0047797649 0.0021527728 0.0045053133 + 56000 0.0039636008 0.0022058564 0.0041566911 + 56100 0.006015081 0.0021592146 0.0051197622 + 56200 0.0056216802 0.0025617557 0.0053286765 + 56300 0.0045461276 0.0025573633 0.0047949104 + 56400 0.003881642 0.0023640821 0.0042745777 + 56500 0.0038047322 0.0027581068 0.0046307484 + 56600 0.0031812951 0.0033548977 0.0049206913 + 56700 0.0056019878 0.003122135 0.0058793633 + 56800 0.0059683588 0.0030141077 0.0059516593 + 56900 0.0060186134 0.0033342235 0.0062965098 + 57000 0.0053019534 0.0029808991 0.0055904543 + 57100 0.0053655993 0.0024928666 0.0051337475 + 57200 0.0030903095 0.002510627 0.0040316387 + 57300 0.0046503159 0.0019448429 0.0042336703 + 57400 0.0056832453 0.0014821649 0.0042793872 + 57500 0.0043618694 0.0015605523 0.0037074098 + 57600 0.004355549 0.002029913 0.0041736598 + 57700 0.0074486931 0.0022067964 0.00587295 + 57800 0.0044953483 0.0022477899 0.0044603441 + 57900 0.0057286533 0.0021932761 0.0050128476 + 58000 0.0038486039 0.0023496967 0.0042439314 + 58100 0.0042966245 0.0023985851 0.00451333 + 58200 0.0051973238 0.0025795924 0.0051376502 + 58300 0.0059952343 0.0025554289 0.0055062082 + 58400 0.005863812 0.0024175166 0.0053036115 + 58500 0.0047580459 0.0027857691 0.0051276198 + 58600 0.0046580313 0.0029995897 0.0052922145 + 58700 0.0044696211 0.0033203457 0.0055202373 + 58800 0.0051971274 0.0030393697 0.0055973309 + 58900 0.0042007846 0.0024982321 0.0045658058 + 59000 0.0048165335 0.0023499589 0.0047205965 + 59100 0.0044510328 0.0021725446 0.0043632873 + 59200 0.0039790554 0.0020297611 0.0039882025 + 59300 0.0041472183 0.0021916245 0.0042328335 + 59400 0.0048415751 0.0023702643 0.004753227 + 59500 0.0040848813 0.0026243058 0.0046348333 + 59600 0.0036309558 0.0023204813 0.0041075923 + 59700 0.0052566509 0.0022056726 0.0047929305 + 59800 0.0059097472 0.0021506132 0.0050593169 + 59900 0.0049447811 0.0025159524 0.0049497119 + 60000 0.0051589732 0.0025078382 0.0050470203 + 60100 0.0035345424 0.0023423012 0.0040819588 + 60200 0.005047709 0.0019083619 0.0043927812 + 60300 0.0042431547 0.0018644587 0.0039528864 + 60400 0.0044403051 0.0021517218 0.0043371845 + 60500 0.004607211 0.0021488641 0.0044164758 + 60600 0.0047289648 0.0020429433 0.0043704807 + 60700 0.0049324282 0.0023182005 0.00474588 + 60800 0.00489705 0.0019843842 0.004394651 + 60900 0.0044769737 0.0020072136 0.0042107241 + 61000 0.004109862 0.0021053447 0.0041281674 + 61100 0.0064116235 0.0017252325 0.0048809535 + 61200 0.0064107564 0.0022325069 0.0053878011 + 61300 0.0046012223 0.0023997852 0.0046644493 + 61400 0.0055067679 0.0025219734 0.0052323357 + 61500 0.0058420921 0.0024926611 0.0053680658 + 61600 0.0058705346 0.0023901087 0.0052795124 + 61700 0.0051933603 0.0026384175 0.0051945246 + 61800 0.0052888102 0.0027089145 0.0053120008 + 61900 0.0041280831 0.0025417011 0.004573492 + 62000 0.0054631486 0.0022903599 0.0049792533 + 62100 0.0036128989 0.0022867586 0.0040649823 + 62200 0.0050756708 0.0022097986 0.0047079803 + 62300 0.0062976921 0.0026185046 0.00571815 + 62400 0.0047501282 0.0034547786 0.0057927323 + 62500 0.005162038 0.0030296029 0.0055702935 + 62600 0.0054428494 0.0026198422 0.0052987447 + 62700 0.0060713089 0.0027054633 0.0056936856 + 62800 0.0039143993 0.0025686941 0.0044953125 + 62900 0.0049595559 0.002726404 0.0051674355 + 63000 0.0041579951 0.0026460154 0.0046925286 + 63100 0.0068307559 0.0024275303 0.005789543 + 63200 0.0039460015 0.0028749914 0.004817164 + 63300 0.0042264764 0.0029661685 0.0050463873 + 63400 0.0050204424 0.0027802305 0.0052512295 + 63500 0.0055164912 0.0028154461 0.0055305941 + 63600 0.005161699 0.0028559525 0.0053964762 + 63700 0.0033062703 0.0026309733 0.0042582782 + 63800 0.0047080373 0.0023940691 0.0047113062 + 63900 0.0043705464 0.0021801685 0.0043312968 + 64000 0.0054694982 0.002782993 0.0054750117 + 64100 0.0039843774 0.0028515998 0.0048126606 + 64200 0.0044130133 0.0026711692 0.0048431992 + 64300 0.0046388151 0.0022843931 0.0045675599 + 64400 0.0048919995 0.0025534187 0.0049611997 + 64500 0.004704658 0.00303344 0.0053490139 + 64600 0.0056511259 0.0036739479 0.0064553615 + 64700 0.0060055237 0.0037429103 0.006698754 + 64800 0.0047635713 0.0031406158 0.0054851861 + 64900 0.0039548478 0.0031754309 0.0051219576 + 65000 0.005657253 0.0026695177 0.005453947 + 65100 0.0061205326 0.0025335014 0.0055459511 + 65200 0.0046671326 0.0027193057 0.00501641 + 65300 0.0052360497 0.002621423 0.0051985412 + 65400 0.0042775661 0.0028623923 0.0049677569 + 65500 0.0038290334 0.0032448845 0.0051294868 + 65600 0.0047897898 0.0025113144 0.0048687891 + 65700 0.0072519522 0.0020844713 0.0056537915 + 65800 0.0038574141 0.0026456812 0.0045442522 + 65900 0.0054619875 0.0030361849 0.0057245069 + 66000 0.0044844056 0.0034902966 0.0056974649 + 66100 0.0073333231 0.0033760228 0.0069853928 + 66200 0.0064737517 0.0030425259 0.0062288255 + 66300 0.0045465925 0.002910365 0.0051481409 + 66400 0.0040001457 0.0029633395 0.0049321612 + 66500 0.0044286124 0.002895338 0.0050750457 + 66600 0.0050666686 0.0031211344 0.0056148854 + 66700 0.0039709252 0.0031688431 0.0051232829 + 66800 0.0048092911 0.0032769568 0.0056440298 + 66900 0.0066782693 0.0035137615 0.0068007222 + 67000 0.0057340541 0.0034412595 0.0062634893 + 67100 0.0051797906 0.0034055628 0.005954991 + 67200 0.0063264576 0.00323944 0.0063532433 + 67300 0.0026571859 0.0035506348 0.0048584685 + 67400 0.0049363432 0.0028996939 0.0053293004 + 67500 0.0048694959 0.0020429836 0.0044396886 + 67600 0.0053695266 0.0018739865 0.0045168004 + 67700 0.0050585843 0.0024470249 0.0049367968 + 67800 0.0053639135 0.0025875156 0.0052275667 + 67900 0.0049179882 0.0027785574 0.0051991297 + 68000 0.0045402842 0.0025744153 0.0048090864 + 68100 0.0057967719 0.0025091074 0.005362206 + 68200 0.0064221589 0.0027752522 0.0059361585 + 68300 0.0061344175 0.0032944883 0.0063137719 + 68400 0.0038173951 0.0031191006 0.0049979748 + 68500 0.0062441907 0.002798019 0.0058713316 + 68600 0.0058607479 0.0029377482 0.005822335 + 68700 0.006431081 0.0024723228 0.0056376205 + 68800 0.0049039475 0.002649586 0.0050632477 + 68900 0.005431878 0.0026376678 0.0053111703 + 69000 0.0051651551 0.0027441425 0.0052863673 + 69100 0.0060035502 0.0025242284 0.0054791008 + 69200 0.0055191023 0.0026158299 0.005332263 + 69300 0.0046187596 0.0031978221 0.0054711179 + 69400 0.004408629 0.0033121127 0.0054819848 + 69500 0.0040185911 0.0027978949 0.0047757952 + 69600 0.0045530075 0.0024383877 0.0046793211 + 69700 0.0056612034 0.0024217084 0.005208082 + 69800 0.0035367508 0.0030663867 0.0048071312 + 69900 0.0062264056 0.003153623 0.006218182 + 70000 0.0049367337 0.0031688777 0.0055986764 + 70100 0.0064529077 0.0026073081 0.0057833487 + 70200 0.0066516934 0.0028884494 0.0061623297 + 70300 0.005171732 0.0029803969 0.0055258587 + 70400 0.0039133942 0.0021870222 0.0041131459 + 70500 0.0033231584 0.0022690118 0.0039046288 + 70600 0.0042634846 0.0028274597 0.0049258935 + 70700 0.0038989616 0.0026013453 0.0045203655 + 70800 0.0045767543 0.0025616195 0.0048142408 + 70900 0.0048963265 0.0027637426 0.0051736533 + 71000 0.0061687231 0.0025706396 0.005606808 + 71100 0.0049546986 0.0027204503 0.005159091 + 71200 0.0037004223 0.0027686575 0.0045899591 + 71300 0.0035115093 0.002325089 0.00405341 + 71400 0.0059298256 0.0017401421 0.0046587282 + 71500 0.0049818732 0.0022541547 0.0047061704 + 71600 0.0047579769 0.0022714051 0.0046132219 + 71700 0.0054674726 0.0023434468 0.0050344685 + 71800 0.0052597208 0.0027155959 0.0053043647 + 71900 0.0077876387 0.002781227 0.0066142054 + 72000 0.005328724 0.0027339749 0.0053567062 + 72100 0.0046399613 0.0025977106 0.0048814415 + 72200 0.0049484417 0.0021100154 0.0045455766 + 72300 0.0061550343 0.001978573 0.0050080039 + 72400 0.0071739579 0.0020219935 0.0055529259 + 72500 0.0045413518 0.002429107 0.0046643036 + 72600 0.0068602056 0.0022660854 0.0056425929 + 72700 0.0053650603 0.002557966 0.0051985816 + 72800 0.0045295893 0.0027741909 0.0050035982 + 72900 0.0063473806 0.0030699971 0.0061940985 + 73000 0.0038458045 0.0030667595 0.0049596164 + 73100 0.0055269058 0.0027168414 0.0054371153 + 73200 0.0066978955 0.0029699129 0.0062665334 + 73300 0.0054099557 0.0028514907 0.0055142033 + 73400 0.0049033096 0.0028217138 0.0052350615 + 73500 0.0056213097 0.0024973732 0.0052641115 + 73600 0.0046251514 0.0020906145 0.0043670562 + 73700 0.0049435343 0.002064038 0.0044971838 + 73800 0.0041278653 0.0022356204 0.0042673042 + 73900 0.0045242841 0.0023048989 0.0045316949 + 74000 0.0046307708 0.0019601779 0.0042393854 + 74100 0.0041359632 0.0022902385 0.0043259079 + 74200 0.0058341051 0.0025191454 0.005390619 + 74300 0.0057842203 0.0029029173 0.0057498382 + 74400 0.0068842308 0.0034254593 0.0068137916 + 74500 0.0069787237 0.0039348195 0.0073696601 + 74600 0.0049509151 0.0036515239 0.0060883024 + 74700 0.0046609104 0.0033218989 0.0056159408 + 74800 0.0052509783 0.0036256752 0.0062101411 + 74900 0.0067548043 0.0031790466 0.0065036768 + 75000 0.0054915414 0.0027386179 0.0054414859 + 75100 0.0077387991 0.0026344795 0.0064434197 + 75200 0.0040323338 0.002557427 0.0045420914 + 75300 0.0053215788 0.0026065085 0.0052257231 + 75400 0.0051715521 0.0028002423 0.0053456156 + 75500 0.0044010246 0.0028930485 0.0050591778 + 75600 0.0059897248 0.0026520721 0.0056001397 + 75700 0.0065050515 0.0027123862 0.0059140912 + 75800 0.0037756281 0.0024724201 0.0043307371 + 75900 0.0049951252 0.0025125686 0.0049711068 + 76000 0.0053569279 0.002614864 0.0052514769 + 76100 0.0050761598 0.0029510914 0.0054495138 + 76200 0.005625419 0.0026737784 0.0054425393 + 76300 0.0042964782 0.0027971646 0.0049118374 + 76400 0.0034067399 0.0026831606 0.0043599154 + 76500 0.0048873194 0.002123852 0.0045293295 + 76600 0.0050909588 0.0018829923 0.0043886986 + 76700 0.0043692437 0.0020428126 0.0041932998 + 76800 0.0038824511 0.0022134189 0.0041243128 + 76900 0.0035674747 0.0021533034 0.0039091698 + 77000 0.003952723 0.002483092 0.0044285728 + 77100 0.0045947679 0.0026370462 0.0048985335 + 77200 0.006304843 0.00219173 0.0052948949 + 77300 0.0057665241 0.0020535231 0.0048917342 + 77400 0.0047945405 0.0021226991 0.004482512 + 77500 0.0059543709 0.0023264065 0.0052570734 + 77600 0.0064000043 0.0024305916 0.0055805937 + 77700 0.005549834 0.0027113324 0.0054428913 + 77800 0.0030266988 0.0029568223 0.0044465256 + 77900 0.0056389477 0.0021610721 0.0049364916 + 78000 0.0044697506 0.0021009116 0.004300867 + 78100 0.0048360668 0.001930554 0.0043108056 + 78200 0.0040638827 0.0020459033 0.0040460956 + 78300 0.0052111665 0.0023708291 0.0049357001 + 78400 0.0043869222 0.0026233899 0.0047825782 + 78500 0.0068897999 0.0021413073 0.0055323807 + 78600 0.0060264097 0.002367303 0.0053334265 + 78700 0.0052865173 0.0025820316 0.0051839893 + 78800 0.0059676856 0.0021566562 0.0050938764 + 78900 0.0040595524 0.0021847787 0.0041828397 + 79000 0.0056159649 0.0023157435 0.0050798512 + 79100 0.0041881315 0.0024410569 0.0045024029 + 79200 0.005902251 0.0021755489 0.005080563 + 79300 0.0054239454 0.0020889545 0.0047585526 + 79400 0.0055094841 0.0021016543 0.0048133534 + 79500 0.0081129 0.0021285737 0.0061216416 + 79600 0.0049664878 0.0021368709 0.0045813141 + 79700 0.0068350093 0.0018334829 0.005197589 + 79800 0.0055592278 0.0024177916 0.005153974 + 79900 0.0051450868 0.0030449145 0.0055772619 + 80000 0.0040457894 0.0032288253 0.0052201123 + 80100 0.0056459226 0.0027293979 0.0055082505 + 80200 0.0052924253 0.0028405508 0.0054454163 + 80300 0.0045846607 0.003155238 0.0054117507 + 80400 0.0050326177 0.0029396066 0.0054165981 + 80500 0.0058456879 0.0029858201 0.0058629946 + 80600 0.0047299091 0.0032012364 0.0055292385 + 80700 0.0050276877 0.0028181036 0.0052926686 + 80800 0.0047330326 0.0027996354 0.0051291749 + 80900 0.0049002397 0.0020527168 0.0044645536 + 81000 0.004831739 0.0024235305 0.0048016521 + 81100 0.005832189 0.0025178467 0.0053883772 + 81200 0.0050462525 0.0027751024 0.0052588048 + 81300 0.0053509421 0.0028985157 0.0055321825 + 81400 0.0056863543 0.0025358515 0.005334604 + 81500 0.0040373417 0.0028027535 0.0047898826 + 81600 0.0044877975 0.0025630405 0.0047718784 + 81700 0.0062880718 0.0021933064 0.0052882167 + 81800 0.0063704954 0.0018812545 0.0050167327 + 81900 0.0065419346 0.0017587634 0.0049786219 + 82000 0.0048395566 0.0019244245 0.0043063937 + 82100 0.0044184877 0.001922235 0.0040969594 + 82200 0.0055185676 0.0025398909 0.0052560609 + 82300 0.0058309514 0.0026875061 0.0055574276 + 82400 0.0047596296 0.0023776519 0.0047202821 + 82500 0.005199539 0.0026663032 0.0052254513 + 82600 0.005671707 0.0029563441 0.0057478874 + 82700 0.0050044714 0.0030043161 0.0054674544 + 82800 0.0040552546 0.0034284118 0.0054243574 + 82900 0.0035054726 0.0030847761 0.0048101259 + 83000 0.0040750045 0.0029260192 0.0049316854 + 83100 0.0053548668 0.0030196593 0.0056552578 + 83200 0.0045107197 0.0032571882 0.005477308 + 83300 0.0054238812 0.0023589597 0.0050285262 + 83400 0.0068076688 0.0017824972 0.0051331467 + 83500 0.0060884188 0.0016827582 0.0046794018 + 83600 0.0042844971 0.0019381461 0.004046922 + 83700 0.0049393584 0.0018789469 0.0043100373 + 83800 0.0040877597 0.0021615848 0.004173529 + 83900 0.0058244102 0.0021545204 0.0050212223 + 84000 0.0036747663 0.002472265 0.0042809391 + 84100 0.004923974 0.0026976906 0.005121209 + 84200 0.0048168015 0.0024718686 0.0048426381 + 84300 0.0041335198 0.0021077387 0.0041422054 + 84400 0.0048671332 0.00150733 0.0039028721 + 84500 0.0044010818 0.0016117782 0.0037779356 + 84600 0.0051515287 0.0015177749 0.0040532929 + 84700 0.004429886 0.0017618332 0.0039421677 + 84800 0.0048327943 0.0013961526 0.0037747935 + 84900 0.0042798583 0.0013498344 0.0034563271 + 85000 0.0063966504 0.00204566 0.0051940113 + 85100 0.0048077926 0.0021624498 0.0045287852 + 85200 0.0044763876 0.001888131 0.004091353 + 85300 0.0049849768 0.0020477162 0.0045012595 + 85400 0.0048910444 0.0023741293 0.0047814402 + 85500 0.0044768704 0.0023015593 0.004505019 + 85600 0.0059835689 0.0020008653 0.0049459032 + 85700 0.0058859084 0.0020764231 0.0049733937 + 85800 0.0052145597 0.0021174036 0.0046839447 + 85900 0.0056760112 0.0019953279 0.0047889897 + 86000 0.0038896582 0.0022732101 0.0041876512 + 86100 0.0049623396 0.0026499309 0.0050923324 + 86200 0.003265905 0.0023325833 0.003940021 + 86300 0.0058359372 0.0019402434 0.0048126188 + 86400 0.0069203906 0.0019441596 0.0053502893 + 86500 0.0051995372 0.002470674 0.0050298212 + 86600 0.0055003904 0.0025374986 0.005244722 + 86700 0.0056463262 0.0022411491 0.0050202003 + 86800 0.0055863225 0.0021929928 0.004942511 + 86900 0.0047275021 0.0021964933 0.0045233107 + 87000 0.00515286 0.0020543532 0.0045905265 + 87100 0.0045830922 0.0017134346 0.0039691752 + 87200 0.0050435257 0.0013363644 0.0038187247 + 87300 0.0046254827 0.001519273 0.0037958777 + 87400 0.0040535099 0.0015514181 0.003546505 + 87500 0.0057770924 0.0017537596 0.0045971723 + 87600 0.0043865341 0.0018585318 0.0040175291 + 87700 0.0041021582 0.0016429139 0.0036619449 + 87800 0.0057585243 0.0019633801 0.0047976537 + 87900 0.0060155595 0.0022856244 0.0052464076 + 88000 0.006588077 0.0021441592 0.0053867284 + 88100 0.0038631267 0.0023167479 0.0042181306 + 88200 0.0067500017 0.0024739251 0.0057961915 + 88300 0.0067961069 0.0022886799 0.0056336387 + 88400 0.005340475 0.0022548621 0.0048833772 + 88500 0.0051237863 0.0020090884 0.004530952 + 88600 0.0051930941 0.0019089144 0.0044648904 + 88700 0.004177133 0.0021549205 0.0042108532 + 88800 0.0061815481 0.0017994785 0.0048419592 + 88900 0.0058203717 0.0018745228 0.004739237 + 89000 0.0043001396 0.0019744427 0.0040909177 + 89100 0.0051281538 0.0019301505 0.0044541637 + 89200 0.0056236553 0.002104435 0.0048723278 + 89300 0.0042891184 0.0024466976 0.0045577481 + 89400 0.0047260765 0.0020949838 0.0044210996 + 89500 0.004731804 0.0019284431 0.0042573778 + 89600 0.0046883512 0.0019304495 0.0042379974 + 89700 0.0045314138 0.0023376169 0.0045679222 + 89800 0.0056960294 0.0022949682 0.0050984827 + 89900 0.0052106411 0.0024926017 0.0050572141 + 90000 0.0054499426 0.0024039462 0.0050863398 + 90100 0.0057752781 0.0028806515 0.0057231712 + 90200 0.0054642327 0.0032169162 0.0059063432 + 90300 0.0052991173 0.0031744335 0.0057825928 + 90400 0.0074619752 0.0026547637 0.0063274547 + 90500 0.0067139448 0.0021741871 0.0054787068 + 90600 0.0056494907 0.0018564478 0.0046370565 + 90700 0.0060946257 0.0022094808 0.0052091794 + 90800 0.0050144214 0.0023266747 0.0047947102 + 90900 0.0038996968 0.0023297231 0.0042491051 + 91000 0.0062401283 0.0021713998 0.0052427129 + 91100 0.0051259388 0.0020914339 0.0046143569 + 91200 0.0053322697 0.0015990933 0.0042235698 + 91300 0.0056411509 0.001677453 0.0044539569 + 91400 0.0049641078 0.0020159401 0.004459212 + 91500 0.0037072359 0.0023718395 0.0041964946 + 91600 0.0049173378 0.0026391501 0.0050594023 + 91700 0.0046701106 0.0027592393 0.0050578093 + 91800 0.0052170261 0.0024995558 0.0050673108 + 91900 0.0055720207 0.0021128411 0.0048553201 + 92000 0.0061110303 0.002425278 0.0054330508 + 92100 0.0062168402 0.0025200701 0.0055799212 + 92200 0.0055228783 0.0017711948 0.0044894865 + 92300 0.0057451625 0.0019380888 0.004765786 + 92400 0.0041664642 0.0018008115 0.0038514931 + 92500 0.0041697872 0.0022072195 0.0042595366 + 92600 0.0042549074 0.0024379155 0.0045321278 + 92700 0.0044167057 0.0024475712 0.0046214185 + 92800 0.0057900625 0.0023251145 0.0051749109 + 92900 0.0056646757 0.0024066615 0.005194744 + 93000 0.0043829111 0.002537387 0.0046946011 + 93100 0.0051144478 0.0026852632 0.0052025305 + 93200 0.0037089287 0.0026114294 0.0044369177 + 93300 0.0057572243 0.0021886482 0.005022282 + 93400 0.0045656932 0.0022539211 0.0045010982 + 93500 0.0060022188 0.0020735372 0.0050277542 + 93600 0.0056984889 0.0022677441 0.0050724691 + 93700 0.0039758199 0.0024796698 0.0044365187 + 93800 0.0039490308 0.0026040217 0.0045476853 + 93900 0.0054471842 0.0021933789 0.0048744149 + 94000 0.00574019 0.0018346489 0.0046598987 + 94100 0.0069869523 0.0025435685 0.0059824591 + 94200 0.0049866757 0.0034214717 0.0058758512 + 94300 0.0043100331 0.0029994346 0.005120779 + 94400 0.005183815 0.0026593986 0.0052108075 + 94500 0.0050995733 0.0030455123 0.0055554586 + 94600 0.0064655045 0.0024956955 0.0056779359 + 94700 0.0068982024 0.0024252999 0.0058205089 + 94800 0.0054045728 0.0027604725 0.0054205357 + 94900 0.0065070172 0.0028869374 0.0060896099 + 95000 0.0055490081 0.002982987 0.0057141394 + 95100 0.0050184061 0.002867958 0.0053379548 + 95200 0.0057923907 0.0022729183 0.0051238607 + 95300 0.0061966484 0.0018579204 0.0049078333 + 95400 0.0043903283 0.002083568 0.0042444327 + 95500 0.006230005 0.0022082537 0.0052745843 + 95600 0.0051017863 0.0021347587 0.0046457942 + 95700 0.0048179341 0.0020223788 0.0043937058 + 95800 0.0045368369 0.0021281546 0.004361129 + 95900 0.0032147881 0.0018612367 0.0034435152 + 96000 0.0059523166 0.0014379151 0.0043675709 + 96100 0.004085428 0.0017725769 0.0037833735 + 96200 0.004515215 0.0019493696 0.0041717019 + 96300 0.005865527 0.0019194071 0.0048063462 + 96400 0.0043184624 0.0022762097 0.0044017029 + 96500 0.0041141746 0.0022317397 0.004256685 + 96600 0.0048036261 0.0023583893 0.004722674 + 96700 0.0052007626 0.002291294 0.0048510444 + 96800 0.0047205319 0.0020744378 0.0043978246 + 96900 0.0049730906 0.0021496487 0.0045973418 + 97000 0.0044398487 0.0025113024 0.0046965404 + 97100 0.005377641 0.002686405 0.0053332127 + 97200 0.0042563439 0.0025447136 0.0046396329 + 97300 0.00658641 0.0020899964 0.0053317451 + 97400 0.0057978787 0.0016239494 0.0044775928 + 97500 0.0052807037 0.0021217762 0.0047208726 + 97600 0.0035973133 0.0025763508 0.0043469035 + 97700 0.0042705453 0.0022880661 0.0043899751 + 97800 0.0055320169 0.0018992576 0.0046220471 + 97900 0.0053928356 0.0021919455 0.0048462317 + 98000 0.0048723155 0.0019962603 0.0043943531 + 98100 0.0042111221 0.0018628012 0.0039354629 + 98200 0.0036807996 0.0017788347 0.0035904783 + 98300 0.0067393203 0.0015246823 0.0048416916 + 98400 0.0038578889 0.0017635258 0.0036623305 + 98500 0.0054096221 0.001644316 0.0043068644 + 98600 0.0040713518 0.0019667286 0.0039705971 + 98700 0.0051986774 0.0026388436 0.0051975676 + 98800 0.0039406054 0.0028434791 0.0047829958 + 98900 0.0064130888 0.0023111873 0.0054676295 + 99000 0.006365471 0.0020668147 0.00519982 + 99100 0.0062146746 0.001901955 0.0049607402 + 99200 0.0048531445 0.0019410233 0.0043296803 + 99300 0.0045759129 0.0023414428 0.0045936499 + 99400 0.0038262214 0.0022197041 0.0041029224 + 99500 0.0049764631 0.0021887097 0.0046380626 + 99600 0.0055657014 0.00220067 0.0049400387 + 99700 0.0048065322 0.002111321 0.0044770361 + 99800 0.0057309762 0.0021126277 0.0049333425 + 99900 0.0046862803 0.002125927 0.0044324555 + 100000 0.0075740421 0.0024388428 0.0061666916 + 100100 0.0071945677 0.0023243395 0.0058654158 + 100200 0.0059205683 0.0029521541 0.0058661838 + 100300 0.0054396453 0.0031697826 0.005847108 + 100400 0.0052544975 0.0034314166 0.0060176146 + 100500 0.0061961273 0.0031182911 0.0061679475 + 100600 0.0069085538 0.0024920074 0.0058923112 + 100700 0.0050233317 0.0029020682 0.0053744892 + 100800 0.0037718638 0.0026239078 0.004480372 + 100900 0.0056243954 0.0019074327 0.0046756898 + 101000 0.0056618834 0.00161539 0.0044020982 + 101100 0.0040148592 0.0018178956 0.0037939591 + 101200 0.004686887 0.0019289111 0.0042357383 + 101300 0.0050226523 0.0018719051 0.0043439918 + 101400 0.0064710008 0.0015822105 0.0047671562 + 101500 0.0039196035 0.002020307 0.0039494869 + 101600 0.0045994095 0.0018433778 0.0041071496 + 101700 0.0048933629 0.0019188202 0.0043272723 + 101800 0.0047457387 0.0023774608 0.0047132541 + 101900 0.0053300823 0.002537087 0.0051604869 + 102000 0.0047353334 0.0024001234 0.0047307953 + 102100 0.0045816122 0.0022769948 0.0045320071 + 102200 0.006548821 0.0022551445 0.0054783924 + 102300 0.0046796488 0.0020009913 0.004304256 + 102400 0.0053817487 0.0018656497 0.0045144792 + 102500 0.005902113 0.0016290352 0.0045339815 + 102600 0.0039148607 0.0017456336 0.0036724791 + 102700 0.0041956368 0.0020866253 0.0041516653 + 102800 0.0030868067 0.0026861306 0.0042054183 + 102900 0.0049776165 0.002482385 0.0049323056 + 103000 0.0046073238 0.0026508944 0.0049185615 + 103100 0.0055816265 0.002952218 0.0056994247 + 103200 0.0053077341 0.0033957747 0.006008175 + 103300 0.00427159 0.0030780079 0.0051804311 + 103400 0.007366732 0.0021918569 0.0058176703 + 103500 0.0061032372 0.0020714792 0.0050754163 + 103600 0.0054342128 0.0026433843 0.005318036 + 103700 0.0058615812 0.0028396745 0.0057246715 + 103800 0.0059214514 0.0032316647 0.006146129 + 103900 0.0048150657 0.0033080454 0.0056779606 + 104000 0.0055601892 0.0029920686 0.0057287242 + 104100 0.0065798773 0.0022159613 0.0054544946 + 104200 0.0057114079 0.0023438106 0.0051548942 + 104300 0.004117166 0.0033470191 0.0053734368 + 104400 0.0056173528 0.0029430163 0.0057078072 + 104500 0.0058432017 0.0024492781 0.005325229 + 104600 0.0047449049 0.0018531835 0.0041885664 + 104700 0.0051941398 0.0017432431 0.0042997338 + 104800 0.0048082738 0.0018834519 0.0042500242 + 104900 0.0056599738 0.0016220784 0.0044078468 + 105000 0.0052147482 0.0021380169 0.0047046508 + 105100 0.0057898373 0.0019673109 0.0048169964 + 105200 0.0052626706 0.0019948558 0.0045850765 + 105300 0.0040740317 0.0020907974 0.0040959848 + 105400 0.0045063453 0.0020310338 0.0042490006 + 105500 0.0043028912 0.0021508495 0.0042686788 + 105600 0.0045336197 0.0024228712 0.0046542622 + 105700 0.0049384943 0.0020805263 0.0045111915 + 105800 0.0051912228 0.0022413219 0.0047963769 + 105900 0.0075738845 0.0024406885 0.0061684598 + 106000 0.0044914878 0.00262105 0.0048317042 + 106100 0.0037898261 0.0024808243 0.0043461293 + 106200 0.0039418552 0.0021623494 0.0041024812 + 106300 0.0038493597 0.0021949395 0.0040895462 + 106400 0.0051448448 0.0024897627 0.005021991 + 106500 0.0044670022 0.0025443571 0.0047429598 + 106600 0.0060055696 0.0022728956 0.0052287619 + 106700 0.005070969 0.00246141 0.0049572776 + 106800 0.0051355516 0.002699783 0.0052274373 + 106900 0.0055198339 0.0023585697 0.0050753629 + 107000 0.004536935 0.0024816535 0.0047146762 + 107100 0.0043970244 0.0022694283 0.0044335888 + 107200 0.0045132262 0.0019392947 0.0041606482 + 107300 0.0057868767 0.0019804932 0.0048287215 + 107400 0.0048858491 0.00206472 0.0044694738 + 107500 0.0051778097 0.0023954217 0.0049438749 + 107600 0.0042508936 0.0024957496 0.0045879863 + 107700 0.0065311396 0.0028354253 0.0060499706 + 107800 0.0041842378 0.0025732076 0.0046326371 + 107900 0.0051588338 0.0019576867 0.0044968002 + 108000 0.0050152206 0.0018965959 0.0043650248 + 108100 0.0066858224 0.0019144208 0.005205099 + 108200 0.0052317457 0.0022588338 0.0048338336 + 108300 0.0044587185 0.0026376825 0.004832208 + 108400 0.006281365 0.0024520244 0.0055436337 + 108500 0.0045935686 0.00249095 0.004751847 + 108600 0.0050600068 0.0021937068 0.0046841789 + 108700 0.0063839425 0.0016906411 0.0048327378 + 108800 0.0039523381 0.0020567261 0.0040020175 + 108900 0.0035000667 0.0023242907 0.0040469798 + 109000 0.0035936437 0.0022500273 0.0040187738 + 109100 0.0036929064 0.0018657814 0.0036833838 + 109200 0.0036039238 0.0017786923 0.0035524985 + 109300 0.0042909775 0.0017838776 0.0038958431 + 109400 0.0053226935 0.0023048771 0.0049246403 + 109500 0.0073675997 0.0021898533 0.0058160938 + 109600 0.0065062358 0.0024873918 0.0056896797 + 109700 0.0044880848 0.0027054044 0.0049143836 + 109800 0.0038966546 0.0024113885 0.0043292732 + 109900 0.0046587563 0.0021033679 0.0043963495 + 110000 0.0055376345 0.0026746075 0.0054001619 + 110100 0.003595138 0.0032054332 0.0049749152 + 110200 0.0047894761 0.0030104663 0.0053677866 + 110300 0.0060705417 0.0030602282 0.0060480729 + 110400 0.0041098312 0.0030911613 0.0051139688 + 110500 0.005815262 0.0025982459 0.0054604452 + 110600 0.0044655662 0.0022431262 0.004441022 + 110700 0.0056780783 0.0023805446 0.0051752238 + 110800 0.0045910253 0.0030865698 0.0053462151 + 110900 0.0042363196 0.0027951661 0.0048802296 + 111000 0.0041569535 0.0021821539 0.0042281544 + 111100 0.0047554436 0.0019847226 0.0043252925 + 111200 0.0049997579 0.0021981102 0.0046589286 + 111300 0.0063404411 0.0022849675 0.0054056533 + 111400 0.0035386805 0.0021962954 0.0039379897 + 111500 0.0064119467 0.0021400604 0.0052959404 + 111600 0.0073674229 0.0028302735 0.006456427 + 111700 0.0057579053 0.003150227 0.005984196 + 111800 0.0035087838 0.0028608096 0.0045877891 + 111900 0.0058310038 0.0027263155 0.0055962626 + 112000 0.00575128 0.0029221646 0.0057528728 + 112100 0.0047469845 0.0028232611 0.0051596675 + 112200 0.0069476002 0.0025463774 0.0059658994 + 112300 0.0045230832 0.0022749129 0.0045011179 + 112400 0.0055897749 0.0022098615 0.0049610788 + 112500 0.0053941782 0.0022190778 0.0048740249 + 112600 0.0044327925 0.0026816887 0.0048634538 + 112700 0.0061565018 0.0029466921 0.0059768454 + 112800 0.004858252 0.0029908185 0.0053819894 + 112900 0.0065426083 0.0027347496 0.0059549396 + 113000 0.0051449224 0.0027963561 0.0053286226 + 113100 0.0041554958 0.0031620628 0.0052073459 + 113200 0.0040102218 0.0027371677 0.0047109487 + 113300 0.0048220753 0.0021637853 0.0045371505 + 113400 0.0034694019 0.0017261755 0.0034337718 + 113500 0.0028555001 0.0017978107 0.0032032522 + 113600 0.0038160864 0.0019394441 0.0038176741 + 113700 0.0051026834 0.0019772327 0.0044887097 + 113800 0.0057202246 0.0017174698 0.0045328929 + 113900 0.0036459749 0.0017787702 0.0035732735 + 114000 0.004100491 0.0020308459 0.0040490563 + 114100 0.0060683705 0.0026381085 0.0056248846 + 114200 0.0042356838 0.002653225 0.0047379756 + 114300 0.0049689339 0.0022522125 0.0046978597 + 114400 0.0055981488 0.002042049 0.0047973879 + 114500 0.0051720217 0.0020784013 0.0046240058 + 114600 0.0037907359 0.002648379 0.0045141318 + 114700 0.0050725561 0.0029475317 0.0054441804 + 114800 0.0057804717 0.0029875435 0.0058326194 + 114900 0.0040782502 0.0023984127 0.0044056765 + 115000 0.0050217842 0.0022201833 0.0046918428 + 115100 0.0034091961 0.0023163763 0.00399434 + 115200 0.0060320476 0.0024178117 0.0053867101 + 115300 0.0052912661 0.0020885258 0.0046928208 + 115400 0.003422844 0.0021764592 0.0038611402 + 115500 0.004730411 0.0023055035 0.0046337527 + 115600 0.0053242819 0.0023760269 0.0049965719 + 115700 0.0043921937 0.0022184318 0.0043802147 + 115800 0.0044492301 0.0018593868 0.0040492423 + 115900 0.0037998759 0.0021626528 0.0040329043 + 116000 0.0048662605 0.0025678506 0.0049629632 + 116100 0.0050899396 0.0029651278 0.0054703324 + 116200 0.0067846398 0.002614727 0.005954042 + 116300 0.0053199105 0.0028143115 0.005432705 + 116400 0.0056888891 0.002941603 0.0057416031 + 116500 0.0056748975 0.0023509903 0.0051441039 + 116600 0.0050680727 0.0018616206 0.0043560626 + 116700 0.0050659574 0.0022472854 0.0047406863 + 116800 0.0062534126 0.0024037116 0.0054815632 + 116900 0.0056687805 0.0025620235 0.0053521264 + 117000 0.0054114843 0.0021147099 0.0047781748 + 117100 0.0051686178 0.0018913607 0.0044352897 + 117200 0.0044496981 0.0015938859 0.0037839716 + 117300 0.0046085236 0.0018861793 0.004154437 + 117400 0.0043476439 0.0022807209 0.0044205769 + 117500 0.0073424858 0.0024627708 0.0060766506 + 117600 0.0055513198 0.0027237688 0.005456059 + 117700 0.0060147829 0.0021693187 0.0051297197 + 117800 0.0054780927 0.0023697107 0.0050659594 + 117900 0.0049942153 0.0024835948 0.0049416852 + 118000 0.0067394914 0.002396785 0.0057138784 + 118100 0.0041565241 0.0025090079 0.0045547971 + 118200 0.0038904858 0.0025537339 0.0044685824 + 118300 0.0053778988 0.0027956823 0.0054426169 + 118400 0.005001805 0.0029863762 0.0054482021 + 118500 0.0053349547 0.0025003834 0.0051261814 + 118600 0.0043108555 0.0029519907 0.0050737399 + 118700 0.0055457226 0.0028630136 0.005592549 + 118800 0.0065623386 0.0024374146 0.0056673157 + 118900 0.0054821589 0.0019361448 0.0046343949 + 119000 0.0042126433 0.0020391273 0.0041125377 + 119100 0.0055694156 0.0026603463 0.005401543 + 119200 0.0051168374 0.0030146285 0.005533072 + 119300 0.0051990231 0.0028050804 0.0053639746 + 119400 0.0058599787 0.0021309785 0.0050151867 + 119500 0.0055486418 0.0021205394 0.0048515116 + 119600 0.0046034986 0.0020266335 0.0042924179 + 119700 0.0058636782 0.0021689642 0.0050549933 + 119800 0.0060113491 0.0022955208 0.0052542317 + 119900 0.0044097161 0.0022726831 0.0044430903 + 120000 0.0054976009 0.0026431129 0.0053489634 + 120100 0.0068618634 0.0025349271 0.0059122505 + 120200 0.005155887 0.0026784678 0.0052161309 + 120300 0.0035259762 0.0026037182 0.0043391596 + 120400 0.0047606948 0.0027079384 0.0050510929 + 120500 0.0061725787 0.0025611608 0.0055992269 + 120600 0.0042758509 0.0026487464 0.0047532668 + 120700 0.0060094104 0.0020413633 0.00499912 + 120800 0.0044404898 0.0022386235 0.004424177 + 120900 0.0031601524 0.0026053147 0.0041607022 + 121000 0.0043943974 0.0020954127 0.0042582802 + 121100 0.0055018004 0.0021312545 0.0048391719 + 121200 0.0058663316 0.0022997006 0.0051870356 + 121300 0.0057914138 0.0020347143 0.0048851758 + 121400 0.0038209397 0.0017813147 0.0036619335 + 121500 0.0051777711 0.001722084 0.0042705182 + 121600 0.0048730656 0.0021784829 0.0045769448 + 121700 0.0044372061 0.0024613885 0.0046453259 + 121800 0.0054916576 0.0021942862 0.0048972114 + 121900 0.0050096428 0.0025205746 0.0049862582 + 122000 0.0059852727 0.0028956349 0.0058415113 + 122100 0.004876778 0.0025629894 0.0049632786 + 122200 0.0064582388 0.0024590799 0.0056377443 + 122300 0.005207537 0.0023167614 0.004879846 + 122400 0.0060788289 0.0023721426 0.0053640662 + 122500 0.007036895 0.0020375471 0.0055010188 + 122600 0.0057464298 0.0023298968 0.0051582177 + 122700 0.0054505133 0.0025179164 0.005200591 + 122800 0.0048440548 0.0022975971 0.0046817804 + 122900 0.0061158921 0.0018251917 0.0048353573 + 123000 0.0050629404 0.0019396872 0.0044316032 + 123100 0.0049535351 0.0025734189 0.0050114869 + 123200 0.0050030272 0.0032938609 0.0057562884 + 123300 0.0063478896 0.0031506764 0.0062750283 + 123400 0.0048523397 0.0032083216 0.0055965825 + 123500 0.0054905205 0.002810325 0.0055126905 + 123600 0.0036159645 0.0028206132 0.0046003457 + 123700 0.0054577593 0.0023946437 0.0050808846 + 123800 0.0065929329 0.0028619959 0.006106955 + 123900 0.0054631382 0.0031282967 0.005817185 + 124000 0.0051049964 0.0024910788 0.0050036942 + 124100 0.0062730758 0.0020778036 0.0051653331 + 124200 0.0069350405 0.0024365781 0.0058499183 + 124300 0.0039574666 0.0028721492 0.0048199648 + 124400 0.0056091341 0.0022874944 0.0050482401 + 124500 0.0049213303 0.0022836227 0.0047058399 + 124600 0.0065327543 0.0023508048 0.0055661448 + 124700 0.0045150727 0.0026262552 0.0048485176 + 124800 0.0040655283 0.0032282185 0.0052292207 + 124900 0.0046462522 0.0027416975 0.0050285248 + 125000 0.0066115552 0.0020427052 0.00529683 + 125100 0.0046068614 0.0021241219 0.0043915615 + 125200 0.0062828661 0.0022294456 0.0053217938 + 125300 0.0048188048 0.0022377497 0.0046095052 + 125400 0.0035050634 0.0029051619 0.0046303103 + 125500 0.0058003241 0.0033189801 0.0061738271 + 125600 0.0058217882 0.0030288913 0.0058943027 + 125700 0.0043775348 0.0027651852 0.0049197531 + 125800 0.0049623733 0.0029785912 0.0054210093 + 125900 0.0041056727 0.002909505 0.0049302658 + 126000 0.0050888102 0.0027874523 0.005292101 + 126100 0.004465322 0.0024920223 0.0046897979 + 126200 0.0056908625 0.002483521 0.0052844924 + 126300 0.0034215635 0.0024732619 0.0041573127 + 126400 0.0055211923 0.001927754 0.0046452158 + 126500 0.0054829423 0.0021818526 0.0048804883 + 126600 0.0041891637 0.0027751961 0.0048370501 + 126700 0.0053075452 0.0029052252 0.0055175326 + 126800 0.0055542975 0.0028716565 0.0056054123 + 126900 0.0053818397 0.0025559248 0.005204799 + 127000 0.0047724154 0.0027848479 0.0051337712 + 127100 0.0060588083 0.0030663033 0.006048373 + 127200 0.0069062275 0.003046809 0.0064459678 + 127300 0.0057357435 0.0025238685 0.0053469298 + 127400 0.0062464204 0.0025990457 0.0056734557 + 127500 0.0056152073 0.0031367784 0.0059005132 + 127600 0.0055890314 0.0033984448 0.0061492962 + 127700 0.005081292 0.0030074347 0.0055083831 + 127800 0.0075319421 0.0019689345 0.0056760623 + 127900 0.0074698731 0.00191041 0.0055869882 + 128000 0.0048861371 0.0020599078 0.0044648034 + 128100 0.0051769531 0.0021126761 0.0046607077 + 128200 0.0043320482 0.0022472325 0.0043794124 + 128300 0.0049999537 0.0020540965 0.0045150113 + 128400 0.0046618541 0.00201134 0.0043058463 + 128500 0.0042929242 0.0023161351 0.0044290587 + 128600 0.0050364663 0.0025994483 0.0050783341 + 128700 0.0060486235 0.0026905622 0.0056676191 + 128800 0.0058387175 0.0028499394 0.0057236831 + 128900 0.0059321943 0.0024285937 0.0053483456 + 129000 0.004044847 0.0025625415 0.0045533647 + 129100 0.0052119231 0.0027574849 0.0053227283 + 129200 0.0058499672 0.0023214853 0.005200766 + 129300 0.0039899488 0.0026966156 0.0046604185 + 129400 0.0045442292 0.0024916553 0.0047282681 + 129500 0.0047372678 0.0028084949 0.0051401189 + 129600 0.0028060662 0.0033409997 0.0047221103 + 129700 0.0047194486 0.0027549832 0.0050778368 + 129800 0.0046831219 0.0020609588 0.0043659329 + 129900 0.0053354582 0.0018842442 0.00451029 + 130000 0.0061633004 0.0020731218 0.0051066212 + 130100 0.0051133952 0.0026241038 0.0051408529 + 130200 0.0051791812 0.0024846841 0.0050338124 + 130300 0.0044298086 0.0023899425 0.0045702389 + 130400 0.0065336964 0.002260248 0.0054760517 + 130500 0.0048874643 0.0025500898 0.0049556387 + 130600 0.0049265868 0.002771278 0.0051960824 + 130700 0.0056303972 0.0025719422 0.0053431533 + 130800 0.0046228583 0.0028413255 0.0051166386 + 130900 0.0055856956 0.0027935096 0.0055427191 + 131000 0.0058177224 0.0027127038 0.005576114 + 131100 0.0057808569 0.0022982475 0.005143513 + 131200 0.0044260922 0.0023774704 0.0045559377 + 131300 0.0045073072 0.0025689318 0.004787372 + 131400 0.0055932398 0.0029619637 0.0057148865 + 131500 0.0045891646 0.0031582302 0.0054169596 + 131600 0.0057742996 0.0026092867 0.0054513248 + 131700 0.0052629691 0.0023478076 0.0049381752 + 131800 0.0040266758 0.0020894678 0.0040713473 + 131900 0.0053909026 0.0018078888 0.0044612236 + 132000 0.0040260131 0.0021097088 0.0040912621 + 132100 0.0048898157 0.0020752573 0.0044819635 + 132200 0.004626272 0.0018997496 0.0041767428 + 132300 0.0050406912 0.0021240114 0.0046049766 + 132400 0.0029452407 0.0022202725 0.0036698831 + 132500 0.0061935129 0.0020373788 0.0050857484 + 132600 0.0058120052 0.0020049159 0.0048655122 + 132700 0.0053977922 0.0024189374 0.0050756633 + 132800 0.0048711453 0.0030761394 0.0054736562 + 132900 0.0059117495 0.0024504002 0.0053600894 + 133000 0.0059669865 0.0019646343 0.0049015104 + 133100 0.0039427728 0.0025435799 0.0044841634 + 133200 0.0064706356 0.0028405334 0.0060252993 + 133300 0.0057146231 0.003138638 0.0059513041 + 133400 0.0065503105 0.0027114011 0.005935382 + 133500 0.0037840325 0.0022161743 0.0040786278 + 133600 0.0055606164 0.0020836098 0.0048204757 + 133700 0.0045414349 0.0023213883 0.0045566258 + 133800 0.0044653486 0.0023564968 0.0045542856 + 133900 0.004733574 0.0026987709 0.0050285769 + 134000 0.0053029481 0.0027682111 0.0053782559 + 134100 0.0061319922 0.0029554406 0.0059735305 + 134200 0.0056081365 0.0030222152 0.0057824699 + 134300 0.0034037678 0.0033750914 0.0050503833 + 134400 0.0055665721 0.0030824779 0.0058222751 + 134500 0.0043160383 0.0029930636 0.0051173637 + 134600 0.0048231237 0.0032451515 0.0056190327 + 134700 0.0050626034 0.0033158102 0.0058075603 + 134800 0.0050625978 0.0032756731 0.0057674205 + 134900 0.0045849215 0.0032892909 0.0055459319 + 135000 0.0052736405 0.0035369115 0.0061325315 + 135100 0.0054321458 0.0032571947 0.005930829 + 135200 0.0054925156 0.0030434903 0.0057468379 + 135300 0.0043735617 0.0031685348 0.0053211472 + 135400 0.0034969695 0.0027639024 0.0044850671 + 135500 0.0057137539 0.0024396305 0.0052518688 + 135600 0.0044765157 0.0019475889 0.0041508739 + 135700 0.0040812298 0.0021127334 0.0041214637 + 135800 0.0046856109 0.0024689695 0.0047751687 + 135900 0.0049962108 0.0027340059 0.0051930784 + 136000 0.0048193068 0.002522858 0.0048948605 + 136100 0.005870423 0.0025362551 0.005425604 + 136200 0.0041325019 0.0023371721 0.0043711379 + 136300 0.006241746 0.0020084824 0.0050805918 + 136400 0.0041903692 0.0020927141 0.0041551615 + 136500 0.006166484 0.0020801095 0.0051151758 + 136600 0.0049149818 0.0022305961 0.0046496887 + 136700 0.0055636976 0.002695324 0.0054337064 + 136800 0.005442451 0.0024611479 0.0051398543 + 136900 0.0058805175 0.0019086884 0.0048030056 + 137000 0.0043049695 0.0022763366 0.0043951887 + 137100 0.004934833 0.0025196875 0.0049485506 + 137200 0.0043020894 0.0023049504 0.004422385 + 137300 0.0041280661 0.0021135578 0.0041453403 + 137400 0.0041516031 0.0023681843 0.0044115514 + 137500 0.0054093119 0.0021891235 0.0048515192 + 137600 0.0041270752 0.0021033593 0.0041346541 + 137700 0.0049015261 0.0020122757 0.0044247456 + 137800 0.0037433563 0.0017927659 0.0036351991 + 137900 0.004834452 0.0017033404 0.0040827972 + 138000 0.0043063554 0.0020785304 0.0041980647 + 138100 0.0055768244 0.0023714152 0.0051162585 + 138200 0.0040591339 0.0022178718 0.0042157268 + 138300 0.0055555362 0.0019974996 0.0047318651 + 138400 0.0054244654 0.0017079486 0.0043778027 + 138500 0.0054201271 0.0020796639 0.0047473827 + 138600 0.004600143 0.002201537 0.0044656699 + 138700 0.004695058 0.0021651919 0.0044760408 + 138800 0.0052203067 0.002585019 0.0051543887 + 138900 0.0042650019 0.0027784499 0.0048776306 + 139000 0.0042931545 0.0025036698 0.0046167068 + 139100 0.004535431 0.0024286944 0.0046609769 + 139200 0.0047371456 0.0033003593 0.0056319231 + 139300 0.0053935666 0.0033301444 0.0059847904 + 139400 0.0041361254 0.002717869 0.0047536182 + 139500 0.0043344344 0.0019977906 0.004131145 + 139600 0.0047656207 0.0022821326 0.0046277115 + 139700 0.0061558522 0.001929459 0.0049592926 + 139800 0.0051091434 0.0018323778 0.0043470343 + 139900 0.0048341955 0.0022556154 0.004634946 + 140000 0.0044517964 0.0024630025 0.004654121 + 140100 0.0049872425 0.0027743964 0.0052290548 + 140200 0.0072650145 0.0028178962 0.0063936456 + 140300 0.0052021186 0.0028341116 0.0053945293 + 140400 0.0063391101 0.0027307079 0.0058507387 + 140500 0.0049561053 0.0025924474 0.0050317804 + 140600 0.0060877403 0.0023847349 0.0053810446 + 140700 0.0064043849 0.0021052841 0.0052574423 + 140800 0.0047195156 0.0023749768 0.0046978634 + 140900 0.007208189 0.0024139204 0.0059617009 + 141000 0.004350346 0.0023799695 0.0045211554 + 141100 0.0050733663 0.0023011971 0.0047982446 + 141200 0.0052066066 0.0020279046 0.0045905313 + 141300 0.0040437095 0.001786611 0.0037768743 + 141400 0.0034312779 0.0019499367 0.0036387688 + 141500 0.0049743593 0.0019635914 0.0044119089 + 141600 0.0056646822 0.0021824926 0.0049705783 + 141700 0.0048801102 0.0023978828 0.0047998121 + 141800 0.0056664508 0.0022673822 0.0050563384 + 141900 0.0049605395 0.0027058251 0.0051473406 + 142000 0.0045537731 0.0028562507 0.0050975609 + 142100 0.0043863223 0.0027280266 0.0048869197 + 142200 0.0068364968 0.0019940679 0.0053589061 + 142300 0.0045264526 0.0019318108 0.0041596742 + 142400 0.0053183442 0.0020891196 0.0047067421 + 142500 0.0048517516 0.0024431134 0.0048310848 + 142600 0.0049335618 0.0024489846 0.0048772221 + 142700 0.0047899531 0.002363138 0.004720693 + 142800 0.0050512064 0.0027941457 0.0052802863 + 142900 0.005271055 0.0026083642 0.0052027116 + 143000 0.0055108297 0.0025999314 0.0053122929 + 143100 0.003849698 0.0023040891 0.0041988623 + 143200 0.005076521 0.0022889912 0.0047875914 + 143300 0.0063388741 0.0026773883 0.0057973028 + 143400 0.005074048 0.0029735912 0.0054709742 + 143500 0.0045658087 0.0028406423 0.0050878763 + 143600 0.0042178797 0.0029264081 0.0050023958 + 143700 0.006071139 0.0029937276 0.0059818663 + 143800 0.0038548674 0.0028961012 0.0047934187 + 143900 0.0047907539 0.0029521182 0.0053100674 + 144000 0.004051006 0.0029744773 0.0049683318 + 144100 0.0041696486 0.002326428 0.0043786769 + 144200 0.0040776937 0.0024514021 0.004458392 + 144300 0.0044547426 0.0023645995 0.0045571681 + 144400 0.0063429704 0.0023171288 0.0054390596 + 144500 0.0049405097 0.0029854552 0.0054171123 + 144600 0.0063985728 0.0034607391 0.0066100366 + 144700 0.0053398454 0.0031138728 0.005742078 + 144800 0.0053244541 0.0027970502 0.0054176799 + 144900 0.0066019182 0.002481707 0.0057310886 + 145000 0.0065963027 0.0025945723 0.0058411901 + 145100 0.0047295012 0.0033560526 0.005683854 + 145200 0.0044692256 0.003122228 0.0053219249 + 145300 0.0040984959 0.002968483 0.0049857115 + 145400 0.0045752692 0.0029314615 0.0051833518 + 145500 0.0051731723 0.0031541417 0.0057003124 + 145600 0.0062176177 0.0030547501 0.0061149838 + 145700 0.0052082572 0.0026764417 0.0052398808 + 145800 0.0055928923 0.0025357027 0.0052884543 + 145900 0.0052465821 0.0024035239 0.004985826 + 146000 0.0045127164 0.002324651 0.0045457536 + 146100 0.0061511005 0.0025600045 0.0055874992 + 146200 0.0044868288 0.0023141282 0.0045224893 + 146300 0.0044099885 0.0021588465 0.0043293877 + 146400 0.0053827902 0.0020057928 0.0046551348 + 146500 0.0045209212 0.0020148068 0.0042399477 + 146600 0.0041805669 0.0023147522 0.004372375 + 146700 0.003009313 0.0024294754 0.0039106217 + 146800 0.0033295842 0.0019653883 0.003604168 + 146900 0.0045428791 0.0018298706 0.004065819 + 147000 0.0044569555 0.0018626668 0.0040563245 + 147100 0.0062009018 0.0017128779 0.0047648842 + 147200 0.006695771 0.0016677826 0.0049633574 + 147300 0.0043740872 0.0019195177 0.0040723887 + 147400 0.0046416205 0.0025261182 0.0048106658 + 147500 0.0049006603 0.0026090649 0.0050211087 + 147600 0.0047928407 0.0025958463 0.0049548226 + 147700 0.0038757774 0.0027752482 0.0046828574 + 147800 0.0067788432 0.0023115491 0.005648011 + 147900 0.0056646527 0.002535687 0.0053237583 + 148000 0.0037195421 0.0027412867 0.0045719988 + 148100 0.0049094754 0.00257115 0.0049875324 + 148200 0.0053425902 0.002708271 0.0053378271 + 148300 0.0047196359 0.0026062418 0.0049291876 + 148400 0.0052669312 0.0027087036 0.0053010213 + 148500 0.0043674145 0.0029363391 0.005085926 + 148600 0.0039953601 0.0029548068 0.0049212731 + 148700 0.0041804859 0.0028292585 0.0048868414 + 148800 0.0049284935 0.0022032755 0.0046290184 + 148900 0.0048773529 0.00223882 0.0046393921 + 149000 0.0052299321 0.0024087809 0.0049828881 + 149100 0.0043195952 0.0024744105 0.0046004613 + 149200 0.0049246643 0.0025886379 0.0050124961 + 149300 0.0037258049 0.0030963076 0.0049301022 + 149400 0.0045833493 0.0029329696 0.0051888368 + 149500 0.0051001373 0.0022291766 0.0047394004 + 149600 0.0050224004 0.0026458062 0.0051177689 + 149700 0.0061461834 0.0027452009 0.0057702755 + 149800 0.0039368717 0.0031180447 0.0050557238 + 149900 0.0051744347 0.0034325976 0.0059793897 + 150000 0.005478931 0.0031025499 0.0057992112 + 150100 0.0041451731 0.0033666076 0.00540681 + 150200 0.0046261991 0.0028921689 0.0051691263 + 150300 0.0063338932 0.0021398637 0.0052573267 + 150400 0.003885173 0.0021817416 0.0040939752 + 150500 0.0036090351 0.0021634344 0.0039397564 + 150600 0.0037674098 0.0022922468 0.0041465189 + 150700 0.0048951807 0.0024764564 0.0048858031 + 150800 0.0052566645 0.0028145934 0.005401858 + 150900 0.0044200651 0.0029924094 0.0051679102 + 151000 0.0046559319 0.0028749819 0.0051665733 + 151100 0.0053568603 0.0029239319 0.0055605116 + 151200 0.00438384 0.0027202226 0.0048778938 + 151300 0.0051180403 0.0026043869 0.0051234223 + 151400 0.0046021348 0.0024565274 0.0047216406 + 151500 0.0063719135 0.0022237415 0.0053599177 + 151600 0.0045268292 0.0024988364 0.0047268852 + 151700 0.0046030069 0.0026060672 0.0048716097 + 151800 0.0041367387 0.0022417345 0.0042777856 + 151900 0.0053458171 0.0020370252 0.0046681696 + 152000 0.0046837685 0.0021594738 0.0044647662 + 152100 0.0059287559 0.0018982533 0.0048163128 + 152200 0.0056580692 0.0021586751 0.004943506 + 152300 0.0062376802 0.0022354487 0.0053055569 + 152400 0.0048410283 0.0026941635 0.0050768571 + 152500 0.0036130579 0.0027742061 0.004552508 + 152600 0.005296117 0.0024932441 0.0050999267 + 152700 0.0044105828 0.0019686232 0.0041394569 + 152800 0.0051597759 0.0018338518 0.004373429 + 152900 0.0054753218 0.0021054607 0.0048003457 + 153000 0.0038103663 0.0024007227 0.0042761374 + 153100 0.004349676 0.0027341886 0.0048750447 + 153200 0.0040984428 0.0024886931 0.0045058954 + 153300 0.0065740841 0.0021850546 0.0054207367 + 153400 0.0065390155 0.0030123788 0.0062308005 + 153500 0.0045930074 0.0027962789 0.0050568998 + 153600 0.0049767159 0.002395308 0.0048447853 + 153700 0.0055676754 0.0024891743 0.0052295146 + 153800 0.0051864306 0.0023535226 0.0049062189 + 153900 0.0050812584 0.0022715339 0.0047724657 + 154000 0.0041665572 0.0021679581 0.0042186855 + 154100 0.0054047477 0.0021899048 0.0048500541 + 154200 0.0046916586 0.0026594283 0.004968604 + 154300 0.00709988 0.0023794077 0.0058738799 + 154400 0.0051739573 0.0021848026 0.0047313597 + 154500 0.0048287756 0.0023323465 0.0047090095 + 154600 0.0048546674 0.0020242185 0.0044136251 + 154700 0.0044028069 0.0023567209 0.0045237274 + 154800 0.0068848862 0.0025653502 0.0059540051 + 154900 0.0053814084 0.0024833808 0.0051320427 + 155000 0.0042974001 0.0024252693 0.0045403959 + 155100 0.0047740781 0.0024326592 0.0047824007 + 155200 0.0052722761 0.0021590458 0.0047539942 + 155300 0.0038102207 0.0022326493 0.0041079923 + 155400 0.0043368363 0.0022416372 0.0043761739 + 155500 0.0047901291 0.0025992452 0.0049568869 + 155600 0.0061440399 0.0022925367 0.0053165564 + 155700 0.0064257107 0.0020888036 0.005251458 + 155800 0.006364827 0.001929953 0.0050626413 + 155900 0.0048658197 0.0018346731 0.0042295688 + 156000 0.0045378492 0.0022421703 0.004475643 + 156100 0.0034760259 0.0028460724 0.0045569289 + 156200 0.0050559735 0.0029886802 0.0054771672 + 156300 0.0044664065 0.0035289166 0.005727226 + 156400 0.007330828 0.0030849775 0.0066931194 + 156500 0.0057106066 0.0025212587 0.0053319479 + 156600 0.0047179648 0.0025330558 0.0048551791 + 156700 0.0045706978 0.0024802105 0.0047298508 + 156800 0.0036103554 0.0024427188 0.0042196905 + 156900 0.0056311258 0.0020886615 0.0048602312 + 157000 0.0044592956 0.0023553977 0.0045502073 + 157100 0.0048863433 0.0023599959 0.004764993 + 157200 0.0055586349 0.0019587662 0.0046946569 + 157300 0.0050101445 0.0018901937 0.0043561242 + 157400 0.0051078039 0.0017647673 0.0042787646 + 157500 0.0050884728 0.0013979148 0.0039023975 + 157600 0.0047904364 0.0013188242 0.0036766171 + 157700 0.004473834 0.0015970236 0.0037989888 + 157800 0.0048866482 0.0017060372 0.0041111844 + 157900 0.0049971645 0.0019306386 0.0043901805 + 158000 0.0054533856 0.0022015876 0.0048856758 + 158100 0.0059719786 0.0017923387 0.0047316719 + 158200 0.0051158298 0.0016303549 0.0041483024 + 158300 0.004939208 0.0016466873 0.0040777037 + 158400 0.0041910374 0.0019458286 0.0040086048 + 158500 0.0038395899 0.0022304381 0.0041202363 + 158600 0.005808132 0.0020963887 0.0049550786 + 158700 0.0044401755 0.0026484119 0.0048338108 + 158800 0.0038897891 0.0025377605 0.0044522661 + 158900 0.0052671644 0.0026255883 0.0052180208 + 159000 0.0051135594 0.0030255949 0.0055424249 + 159100 0.00539122 0.0028587238 0.0055122149 + 159200 0.0035233599 0.0027664795 0.0045006332 + 159300 0.0042749225 0.0026956346 0.004799698 + 159400 0.0063871833 0.0022900883 0.0054337801 + 159500 0.0060905803 0.0021283002 0.0051260077 + 159600 0.0053658299 0.0028752196 0.005516214 + 159700 0.0043152511 0.0028030278 0.0049269405 + 159800 0.0051012181 0.0025268671 0.0050376229 + 159900 0.0057182172 0.0020428749 0.0048573099 + 160000 0.0050126733 0.0021823979 0.0046495731 + 160100 0.0044349787 0.0018609664 0.0040438075 + 160200 0.0064211381 0.0019719653 0.0051323692 + 160300 0.0042516827 0.0025761229 0.004668748 + 160400 0.0037132174 0.002968183 0.0047957822 + 160500 0.0047315582 0.0027838288 0.0051126427 + 160600 0.0055756794 0.0025140677 0.0052583474 + 160700 0.0047145297 0.0025004353 0.0048208679 + 160800 0.0058541546 0.0027451935 0.0056265352 + 160900 0.0068074307 0.0025777998 0.0059283321 + 161000 0.0045200766 0.0027572056 0.0049819309 + 161100 0.0049959779 0.0022732305 0.0047321884 + 161200 0.004789949 0.0021224027 0.0044799558 + 161300 0.0083001242 0.0017979301 0.0058831475 + 161400 0.0042403272 0.0020939602 0.0041809962 + 161500 0.0047361322 0.0019393958 0.0042704609 + 161600 0.0060869439 0.0018939921 0.0048899098 + 161700 0.0048044462 0.0017452644 0.0041099528 + 161800 0.0052501157 0.0017629979 0.0043470392 + 161900 0.0058240045 0.0020049893 0.0048714915 + 162000 0.005579153 0.0026945042 0.0054404936 + 162100 0.0061340591 0.0028188378 0.005837945 + 162200 0.0064368144 0.0028653411 0.0060334607 + 162300 0.0047164735 0.00279588 0.0051172692 + 162400 0.0042258895 0.0024094173 0.0044893473 + 162500 0.0046004169 0.0020342274 0.004298495 + 162600 0.0047946731 0.0018968496 0.0042567277 + 162700 0.0046286024 0.0020574682 0.0043356084 + 162800 0.006249979 0.0024420843 0.0055182458 + 162900 0.004575863 0.002191549 0.0044437316 + 163000 0.0051335888 0.0019197887 0.0044464769 + 163100 0.0041945108 0.0017866343 0.0038511201 + 163200 0.00385167 0.0022974184 0.0041931622 + 163300 0.0042937394 0.0022760167 0.0043893416 + 163400 0.0059745671 0.0022716059 0.0052122131 + 163500 0.0045679375 0.002503683 0.0047519647 + 163600 0.0070550429 0.0024717409 0.0059441449 + 163700 0.0050841587 0.0024036662 0.0049060255 + 163800 0.0063055556 0.002303933 0.0054074486 + 163900 0.0048710114 0.0029762409 0.0053736918 + 164000 0.0055180222 0.002607834 0.0053237356 + 164100 0.0048878151 0.002887293 0.0052930145 + 164200 0.0057255377 0.0025532425 0.0053712806 + 164300 0.0056228798 0.0022370041 0.0050045152 + 164400 0.0039057823 0.001856004 0.0037783812 + 164500 0.0051347261 0.0018823902 0.0044096382 + 164600 0.0053132465 0.0027528138 0.0053679273 + 164700 0.0051767116 0.0024845248 0.0050324375 + 164800 0.0060031276 0.0017206864 0.0046753508 + 164900 0.0071640224 0.0019280943 0.0054541366 + 165000 0.0045053217 0.002176289 0.004393752 + 165100 0.006525895 0.0021178544 0.0053298183 + 165200 0.0052201631 0.0024129547 0.0049822537 + 165300 0.0049704285 0.0021934612 0.004639844 + 165400 0.0052599443 0.0023196235 0.0049085023 + 165500 0.0051850026 0.0024356092 0.0049876027 + 165600 0.0036473995 0.0022874995 0.0040827039 + 165700 0.0063998806 0.0018203652 0.0049703065 + 165800 0.004187435 0.0022655196 0.0043265227 + 165900 0.0048269326 0.0028658605 0.0052416164 + 166000 0.0042092167 0.0029349026 0.0050066264 + 166100 0.0044106734 0.0027142028 0.0048850811 + 166200 0.0053084381 0.0022853969 0.0048981438 + 166300 0.0040167274 0.0023739161 0.0043508992 + 166400 0.0053774108 0.0025217374 0.0051684318 + 166500 0.0050736182 0.0030905574 0.0055877289 + 166600 0.0047610532 0.0025567807 0.0049001116 + 166700 0.0082823707 0.0021640545 0.0062405338 + 166800 0.0039416167 0.0026447451 0.0045847596 + 166900 0.0039626863 0.0026342526 0.0045846372 + 167000 0.004866166 0.0027660682 0.0051611342 + 167100 0.0053119133 0.0026433191 0.0052577764 + 167200 0.0039450686 0.0024036588 0.0043453722 + 167300 0.0044687107 0.0022339266 0.0044333702 + 167400 0.0042207279 0.0021276579 0.0042050475 + 167500 0.0048726315 0.0023172746 0.0047155229 + 167600 0.0065045148 0.0021664512 0.0053678921 + 167700 0.0054189373 0.0026266296 0.0052937628 + 167800 0.006270399 0.0025261558 0.0056123678 + 167900 0.0059603734 0.0023051317 0.005238753 + 168000 0.004601902 0.0029428973 0.0052078959 + 168100 0.0042038409 0.0034805486 0.0055496265 + 168200 0.004503682 0.0031735391 0.0053901951 + 168300 0.0051434476 0.0027643564 0.005295897 + 168400 0.0055251656 0.0026517178 0.0053711353 + 168500 0.0044693906 0.0026239062 0.0048236844 + 168600 0.0043003172 0.002428672 0.0045452344 + 168700 0.0046529056 0.0022579688 0.0045480708 + 168800 0.0057803935 0.0022428146 0.005087852 + 168900 0.0041531811 0.0022505248 0.0042946687 + 169000 0.0050114607 0.0022707168 0.0047372951 + 169100 0.0049966688 0.0020877112 0.0045470092 + 169200 0.0042695869 0.0020589752 0.0041604124 + 169300 0.0037850657 0.0020456992 0.0039086613 + 169400 0.0037505561 0.0018595978 0.0037055746 + 169500 0.0053129535 0.0019227939 0.0045377631 + 169600 0.0033123446 0.0026934075 0.0043237021 + 169700 0.0046691056 0.0025662952 0.0048643706 + 169800 0.0056972682 0.0021446054 0.0049487296 + 169900 0.0043762076 0.0022621432 0.0044160579 + 170000 0.0039978915 0.0024490911 0.0044168033 + 170100 0.0058259515 0.0020086851 0.0048761456 + 170200 0.004594842 0.0023685841 0.0046301079 + 170300 0.0058961466 0.0028317685 0.0057337782 + 170400 0.0040240349 0.0031981825 0.0051787622 + 170500 0.0052319462 0.0030502171 0.0056253156 + 170600 0.0043770639 0.003263595 0.0054179311 + 170700 0.0071224529 0.0032582279 0.0067638102 + 170800 0.0056266609 0.0029927657 0.0057621378 + 170900 0.0050764454 0.0030367724 0.0055353354 + 171000 0.0046774974 0.0028672401 0.0051694458 + 171100 0.0066544699 0.0027897136 0.0060649606 + 171200 0.0060287432 0.0029634817 0.0059307538 + 171300 0.0050675228 0.0032023654 0.0056965368 + 171400 0.0047701271 0.0024037362 0.0047515332 + 171500 0.004755523 0.002034303 0.004374912 + 171600 0.0047696466 0.0021079117 0.0044554722 + 171700 0.0049800606 0.0023483311 0.0047994547 + 171800 0.0059610068 0.0028178422 0.0057517752 + 171900 0.0052571939 0.0029103835 0.0054979086 + 172000 0.0054211066 0.0025834827 0.0052516836 + 172100 0.0047057055 0.0026764178 0.0049925072 + 172200 0.0056367952 0.0024734452 0.0052478053 + 172300 0.0050380179 0.0027374153 0.0052170647 + 172400 0.0055075265 0.003091689 0.0058024247 + 172500 0.0041610728 0.0029650193 0.0050130473 + 172600 0.0048153312 0.002699441 0.0050694868 + 172700 0.004533881 0.0028262393 0.0050577588 + 172800 0.0044995632 0.0024372071 0.0046518359 + 172900 0.0041867305 0.002823669 0.0048843255 + 173000 0.0039560732 0.0025763664 0.0045234962 + 173100 0.0038019644 0.0024508006 0.00432208 + 173200 0.0050971882 0.0023386003 0.0048473726 + 173300 0.0044664584 0.0023440817 0.0045424167 + 173400 0.0037588818 0.0024128455 0.0042629201 + 173500 0.0037711143 0.0024929829 0.0043490782 + 173600 0.0040983229 0.0029191324 0.0049362757 + 173700 0.0037259616 0.0033559124 0.0051897841 + 173800 0.0052786962 0.003062025 0.0056601332 + 173900 0.0044701527 0.0025494271 0.0047495804 + 174000 0.0045908365 0.002151629 0.0044111813 + 174100 0.0041275566 0.0024077895 0.0044393213 + 174200 0.0064101762 0.0024841438 0.0056391525 + 174300 0.0069543965 0.0026349571 0.0060578242 + 174400 0.0049262888 0.0028193177 0.0052439755 + 174500 0.0046105499 0.0029546973 0.0052239523 + 174600 0.0060557522 0.0024333438 0.0054139093 + 174700 0.0046537648 0.0023150227 0.0046055476 + 174800 0.0045873518 0.0023306284 0.0045884656 + 174900 0.0058886673 0.0019996871 0.0048980156 + 175000 0.004833767 0.0021873666 0.0045664862 + 175100 0.0055592328 0.0026604655 0.0053966504 + 175200 0.0050455813 0.0023215866 0.0048049587 + 175300 0.004606741 0.0021657853 0.0044331656 + 175400 0.006714832 0.0025416883 0.0058466446 + 175500 0.0047361398 0.002521128 0.0048521968 + 175600 0.0058940042 0.0021432836 0.0050442388 + 175700 0.0060304384 0.0023581941 0.0053263005 + 175800 0.0055764904 0.0026984514 0.0054431302 + 175900 0.0061276647 0.0026334777 0.0056494376 + 176000 0.0036158989 0.0033117766 0.0050914768 + 176100 0.0049381256 0.0029069134 0.0053373972 + 176200 0.0045843308 0.002224221 0.0044805713 + 176300 0.0041040119 0.0020266982 0.0040466415 + 176400 0.0043250177 0.0022945117 0.0044232314 + 176500 0.0049515395 0.002327977 0.0047650628 + 176600 0.0066364019 0.0021558244 0.0054221785 + 176700 0.0056734508 0.0021036378 0.0048960394 + 176800 0.0044795284 0.0020718444 0.0042766123 + 176900 0.004429968 0.0023062702 0.0044866451 + 177000 0.0038843256 0.0021319862 0.0040438028 + 177100 0.0051287082 0.0017971015 0.0043213875 + 177200 0.0043456033 0.0019055318 0.0040443835 + 177300 0.0036938476 0.001864423 0.0036824886 + 177400 0.005353584 0.002009309 0.0046442762 + 177500 0.0056777496 0.002047976 0.0048424934 + 177600 0.0053362578 0.0022352067 0.004861646 + 177700 0.0072789445 0.0025067676 0.0060893731 + 177800 0.0052113639 0.0025605465 0.0051255147 + 177900 0.0040045986 0.0025763876 0.004547401 + 178000 0.0038106573 0.0023007795 0.0041763374 + 178100 0.0044620182 0.0022879155 0.0044840651 + 178200 0.0062205703 0.0025996041 0.0056612911 + 178300 0.0067057287 0.0023977689 0.0056982447 + 178400 0.0075872501 0.0025457545 0.0062801042 + 178500 0.0042827373 0.0027738367 0.0048817464 + 178600 0.0052678731 0.0024783095 0.0050710908 + 178700 0.0062825693 0.0022961499 0.005388352 + 178800 0.0056837357 0.0024095115 0.0052069752 + 178900 0.004457476 0.0025332332 0.0047271472 + 179000 0.0049634064 0.002830182 0.0052731086 + 179100 0.0054959026 0.0027675781 0.0054725926 + 179200 0.0038654607 0.0028319345 0.0047344659 + 179300 0.0040167055 0.0030000649 0.0049770372 + 179400 0.0061077779 0.0028575107 0.0058636826 + 179500 0.0051631883 0.002308434 0.0048496907 + 179600 0.0051899889 0.0022150614 0.004769509 + 179700 0.0041925552 0.0029507972 0.0050143204 + 179800 0.0049002251 0.003274906 0.0056867355 + 179900 0.0060377371 0.0031000603 0.0060717591 + 180000 0.0065510111 0.002826037 0.0060503628 + 180100 0.0063514487 0.0029894874 0.0061155911 + 180200 0.0045493787 0.0033606461 0.0055997934 + 180300 0.0057827409 0.0031954592 0.006041652 + 180400 0.0065345079 0.0028787109 0.006094914 + 180500 0.0047549838 0.003121697 0.0054620406 + 180600 0.0043301131 0.0031631363 0.0052943638 + 180700 0.0049337465 0.0029488794 0.0053772078 + 180800 0.0059950137 0.0031395829 0.0060902537 + 180900 0.0066493201 0.0031876322 0.0064603445 + 181000 0.0053891136 0.0034357306 0.0060881849 + 181100 0.0058842607 0.0031307692 0.0060269288 + 181200 0.0048833339 0.0027527817 0.0051562976 + 181300 0.0057245047 0.0025542483 0.0053717779 + 181400 0.0072948196 0.0027314426 0.0063218617 + 181500 0.0046649088 0.0025285219 0.0048245317 + 181600 0.0053007682 0.0027190872 0.005328059 + 181700 0.0053181346 0.002906578 0.0055240974 + 181800 0.0072169871 0.002873179 0.0064252898 + 181900 0.0063524561 0.0030008467 0.0061274462 + 182000 0.0055311329 0.0037176931 0.0064400476 + 182100 0.005916655 0.003172738 0.0060848416 + 182200 0.004317268 0.0025404025 0.0046653078 + 182300 0.0039859707 0.0026548697 0.0046167147 + 182400 0.0046525878 0.0024992361 0.0047891817 + 182500 0.0068298201 0.0021612304 0.0055227825 + 182600 0.0051816135 0.0021067384 0.0046570638 + 182700 0.004577366 0.0019013689 0.0041542913 + 182800 0.0039049143 0.0017224324 0.0036443824 + 182900 0.0059364798 0.001968622 0.0048904831 + 183000 0.0043608698 0.0024721181 0.0046184837 + 183100 0.0054687645 0.00247023 0.0051618875 + 183200 0.0044091431 0.0025738311 0.0047439562 + 183300 0.0038630263 0.0024419022 0.0043432355 + 183400 0.005404858 0.0025212654 0.0051814689 + 183500 0.0042603235 0.002774655 0.004871533 + 183600 0.0051783386 0.0025950382 0.0051437517 + 183700 0.0040947305 0.0033383664 0.0053537416 + 183800 0.0061874133 0.0033602129 0.0064055803 + 183900 0.0052489017 0.0031962783 0.0057797221 + 184000 0.0056580527 0.002915296 0.0057001188 + 184100 0.0033940657 0.0028402745 0.0045107912 + 184200 0.0051293755 0.0028174347 0.0053420493 + 184300 0.0046134319 0.0030045677 0.0052752412 + 184400 0.0059603719 0.0024850072 0.0054186277 + 184500 0.00469942 0.00213304 0.0044460357 + 184600 0.0044436188 0.0020452775 0.0042323711 + 184700 0.0051361213 0.0028027069 0.0053306416 + 184800 0.0043787859 0.0027977696 0.0049529534 + 184900 0.0044249915 0.0022585554 0.0044364808 + 185000 0.0048326374 0.0023633924 0.0047419561 + 185100 0.0056491402 0.0029314382 0.0057118744 + 185200 0.0051209681 0.0032472922 0.0057677687 + 185300 0.0043691487 0.0031022814 0.0052527217 + 185400 0.0054380692 0.0027084587 0.0053850084 + 185500 0.0058089931 0.0020049544 0.0048640682 + 185600 0.0039391585 0.0024818884 0.0044206929 + 185700 0.0052949764 0.0026164544 0.0052225756 + 185800 0.0038003913 0.0023225432 0.0041930483 + 185900 0.0052731989 0.0021537645 0.0047491671 + 186000 0.0045421972 0.0022786903 0.004514303 + 186100 0.004827638 0.0023179328 0.0046940359 + 186200 0.005201922 0.002107941 0.004668262 + 186300 0.005119858 0.0024076076 0.0049275377 + 186400 0.004780693 0.0023052774 0.0046582748 + 186500 0.0039594362 0.0021850756 0.0041338606 + 186600 0.0035581362 0.0022808127 0.0040320829 + 186700 0.0037967575 0.0027198361 0.0045885527 + 186800 0.0062666415 0.0025739634 0.0056583261 + 186900 0.0044507918 0.0024861421 0.0046767662 + 187000 0.0049044299 0.0020343572 0.0044482563 + 187100 0.0044600965 0.0021878789 0.0043830826 + 187200 0.003360217 0.0026306935 0.0042845503 + 187300 0.0038437438 0.0025134666 0.0044053092 + 187400 0.0057689062 0.0020707356 0.0049101191 + 187500 0.0063154767 0.0019263696 0.0050347683 + 187600 0.0052670558 0.001974805 0.0045671841 + 187700 0.0051346185 0.0020493724 0.0045765674 + 187800 0.0045461866 0.0023494119 0.0045869881 + 187900 0.0036310124 0.0021478625 0.0039350014 + 188000 0.0059009723 0.0017618549 0.0046662397 + 188100 0.0041159463 0.0017718226 0.0037976399 + 188200 0.0043154224 0.0019632334 0.0040872304 + 188300 0.0035779086 0.0019857745 0.0037467764 + 188400 0.0058579582 0.0016029935 0.0044862073 + 188500 0.0056020734 0.0018621948 0.0046194653 + 188600 0.0047280361 0.0024473049 0.0047743852 + 188700 0.0057392539 0.0022984869 0.0051232759 + 188800 0.0051359675 0.0026443293 0.0051721884 + 188900 0.0055223274 0.0025944314 0.0053124519 + 189000 0.0043606915 0.0022104396 0.0043567175 + 189100 0.0047106649 0.0025570602 0.0048755906 + 189200 0.0032613585 0.0028898329 0.0044950328 + 189300 0.0038298328 0.0030517534 0.0049367492 + 189400 0.0045315987 0.0023109761 0.0045413723 + 189500 0.0061909886 0.0017933752 0.0048405024 + 189600 0.004641608 0.0021168472 0.0044013887 + 189700 0.0043150368 0.002352628 0.0044764352 + 189800 0.006154956 0.0024680198 0.0054974122 + 189900 0.0053459845 0.0028654379 0.0054966647 + 190000 0.0052082735 0.0035150019 0.006078449 + 190100 0.0047430902 0.0033319609 0.0056664506 + 190200 0.004887137 0.0031083396 0.0055137273 + 190300 0.0048071 0.0026185451 0.0049845396 + 190400 0.0071258177 0.0025871556 0.006094394 + 190500 0.0050914699 0.0033501096 0.0058560675 + 190600 0.0039442331 0.0037742374 0.0057155396 + 190700 0.0065908696 0.0030399279 0.0062838716 + 190800 0.0053141749 0.0029342236 0.0055497941 + 190900 0.0049275942 0.0032378526 0.0056631528 + 191000 0.0044064466 0.0032919071 0.005460705 + 191100 0.0047727134 0.0029186749 0.0052677448 + 191200 0.0045675289 0.0026224655 0.0048705461 + 191300 0.005418831 0.0028360733 0.0055031542 + 191400 0.0042352988 0.0030423519 0.005126913 + 191500 0.0046802972 0.0028837477 0.0051873315 + 191600 0.0048869188 0.0031398504 0.0055451307 + 191700 0.0057046925 0.0027231337 0.005530912 + 191800 0.0045709151 0.0023950212 0.0046447685 + 191900 0.0059866266 0.0021788956 0.0051254384 + 192000 0.0049267653 0.0025966451 0.0050215374 + 192100 0.0042612651 0.0029248143 0.0050221557 + 192200 0.0054673406 0.002406585 0.0050975417 + 192300 0.0054162079 0.0023360789 0.0050018688 + 192400 0.0034457624 0.0024301489 0.00412611 + 192500 0.0039041182 0.0021160154 0.0040375736 + 192600 0.0053231595 0.0020258705 0.0046458631 + 192700 0.0042929759 0.0025770569 0.004690006 + 192800 0.0043487344 0.0025913283 0.0047317211 + 192900 0.0053884768 0.0025689318 0.0052210728 + 193000 0.0029888008 0.0026801674 0.0041512178 + 193100 0.0043399517 0.0022050316 0.0043411016 + 193200 0.0056842373 0.001896826 0.0046945365 + 193300 0.0042074364 0.0025307244 0.004601572 + 193400 0.0054310212 0.0031917307 0.0058648114 + 193500 0.0059742655 0.0030096506 0.0059501094 + 193600 0.0042257419 0.0026422739 0.0047221312 + 193700 0.0054991484 0.0026675501 0.0053741622 + 193800 0.0040917816 0.0032179287 0.0052318525 + 193900 0.0043598867 0.0028307052 0.0049765869 + 194000 0.0044813342 0.0026532526 0.0048589092 + 194100 0.0041400281 0.0024913321 0.0045290021 + 194200 0.0037101187 0.0026229088 0.0044489828 + 194300 0.0036826624 0.0026526487 0.0044652091 + 194400 0.0038169305 0.0026486051 0.0045272506 + 194500 0.0046252405 0.0024972183 0.0047737039 + 194600 0.007326443 0.0023454917 0.0059514753 + 194700 0.003505101 0.0025592495 0.0042844164 + 194800 0.0043837455 0.0026486597 0.0048062844 + 194900 0.0040718306 0.003128906 0.0051330101 + 195000 0.0054968758 0.002381834 0.0050873276 + 195100 0.0049199604 0.0022307915 0.0046523345 + 195200 0.0050094729 0.002487821 0.0049534209 + 195300 0.0052049959 0.0028110953 0.0053729292 + 195400 0.0068117937 0.0026928515 0.0060455312 + 195500 0.0055754331 0.0028165243 0.0055606827 + 195600 0.0067078071 0.0033075575 0.0066090563 + 195700 0.0038275563 0.0033528897 0.0052367651 + 195800 0.0049965235 0.0029442901 0.0054035165 + 195900 0.0048885328 0.0024786058 0.0048846805 + 196000 0.0044646045 0.0023858466 0.0045832691 + 196100 0.0033719088 0.0023407875 0.0040003988 + 196200 0.0079409663 0.0021057959 0.0060142403 + 196300 0.0054939197 0.0026808234 0.005384862 + 196400 0.0057640215 0.0025960642 0.0054330435 + 196500 0.0048574977 0.0023874632 0.0047782628 + 196600 0.0056213421 0.0030756127 0.005842367 + 196700 0.0064244822 0.0036266354 0.0067886852 + 196800 0.0082350735 0.002787352 0.0068405522 + 196900 0.0052729442 0.0027321119 0.0053273891 + 197000 0.0050505058 0.0031094882 0.0055952841 + 197100 0.0051070217 0.0026560609 0.0051696731 + 197200 0.0056120085 0.0025227886 0.0052849491 + 197300 0.0056282957 0.0021218775 0.0048920543 + 197400 0.0053446496 0.0021085798 0.0047391495 + 197500 0.0060758412 0.0024553734 0.0054458264 + 197600 0.007246898 0.0034092875 0.0069761201 + 197700 0.0067717395 0.0038654933 0.0071984589 + 197800 0.004443783 0.0039055518 0.0060927263 + 197900 0.0057617168 0.0034661555 0.0063020005 + 198000 0.0061525572 0.0032547897 0.0062830014 + 198100 0.0046482249 0.002793406 0.0050812041 + 198200 0.0050179719 0.0024584711 0.0049282542 + 198300 0.0065396523 0.0021919551 0.0054106902 + 198400 0.0052152396 0.0027496606 0.0053165363 + 198500 0.004813808 0.0030021478 0.0053714439 + 198600 0.0045241292 0.0028914912 0.005118211 + 198700 0.0045343797 0.0028712899 0.0051030549 + 198800 0.0043320736 0.0030324068 0.0051645993 + 198900 0.0063951902 0.0028781393 0.006025772 + 199000 0.0042431107 0.0026259315 0.0047143376 + 199100 0.0052087744 0.0030187476 0.0055824412 + 199200 0.0045426063 0.0034427247 0.0056785387 + 199300 0.0056909976 0.0033809448 0.0061819827 + 199400 0.0046354746 0.0030595402 0.0053410628 + 199500 0.0064743181 0.0026770435 0.0058636219 + 199600 0.0051103114 0.0026412003 0.0051564317 + 199700 0.0044607612 0.002729424 0.0049249549 + 199800 0.0047726834 0.0025053506 0.0048544057 + 199900 0.0053367905 0.0020631634 0.004689865 + 200000 0.0054908571 0.0018362396 0.0045387708 + 200100 0.0045527902 0.0020656818 0.0043065082 + 200200 0.0035701539 0.002270461 0.0040276462 + 200300 0.003786901 0.0021699999 0.0040338652 + 200400 0.0049324641 0.0022165511 0.0046442483 + 200500 0.0048392274 0.0023821328 0.00476394 + 200600 0.0036111716 0.0025848896 0.0043622631 + 200700 0.0040940365 0.0027527892 0.0047678228 + 200800 0.0044400524 0.0024639167 0.004649255 + 200900 0.0065276777 0.0025066311 0.0057194725 + 201000 0.0049502096 0.0032750441 0.0057114754 + 201100 0.0059029209 0.0034641722 0.0063695161 + 201200 0.005237711 0.0032550291 0.005832965 + 201300 0.0047049675 0.002781364 0.0050970901 + 201400 0.0046967018 0.0027331241 0.005044782 + 201500 0.0082175309 0.0026781662 0.0067227322 + 201600 0.0056158929 0.0026443481 0.0054084203 + 201700 0.0052424922 0.0031907546 0.0057710437 + 201800 0.0055871524 0.0027345723 0.0054844989 + 201900 0.0050738587 0.0026502169 0.0051475067 + 202000 0.0053523292 0.0024793186 0.0051136681 + 202100 0.0059753228 0.002756283 0.0056972622 + 202200 0.0039996256 0.0033367246 0.0053052904 + 202300 0.0045303057 0.0032436003 0.0054733601 + 202400 0.0041793619 0.0028810192 0.0049380489 + 202500 0.0057857916 0.002499571 0.0053472654 + 202600 0.0043598797 0.0030500945 0.0051959728 + 202700 0.0045115082 0.0028628962 0.0050834041 + 202800 0.0055379886 0.0031744944 0.0059002232 + 202900 0.0065498461 0.0030585341 0.0062822865 + 203000 0.0058438834 0.002848772 0.0057250584 + 203100 0.0050508159 0.0031227013 0.0056086498 + 203200 0.0054595256 0.0025834245 0.0052705347 + 203300 0.004891038 0.0025155738 0.0049228816 + 203400 0.0049302231 0.0023647757 0.0047913699 + 203500 0.0043411637 0.0023675147 0.0045041811 + 203600 0.0039622971 0.0027285663 0.0046787594 + 203700 0.0052280638 0.0032571745 0.0058303621 + 203800 0.0053886879 0.0030955706 0.0057478154 + 203900 0.006275199 0.0027558231 0.0058443976 + 204000 0.0062037759 0.0024937707 0.0055471917 + 204100 0.0049648954 0.0026723069 0.0051159664 + 204200 0.006645251 0.0025882075 0.0058589169 + 204300 0.0071872394 0.0026445385 0.0061820079 + 204400 0.004942669 0.0028104162 0.0052431361 + 204500 0.003711986 0.0030748871 0.0049018802 + 204600 0.0061027855 0.0032083552 0.00621207 + 204700 0.0053530051 0.002817621 0.0054523031 + 204800 0.0086929575 0.0024933171 0.0067718821 + 204900 0.0053086187 0.002517263 0.0051300988 + 205000 0.0037012644 0.0030769824 0.0048986985 + 205100 0.0062157834 0.0030003902 0.0060597211 + 205200 0.0041359838 0.0026769022 0.0047125817 + 205300 0.0057795073 0.0025895133 0.0054341146 + 205400 0.0066820247 0.002280175 0.005568984 + 205500 0.0054414762 0.0023198119 0.0049980385 + 205600 0.0051700645 0.0026419558 0.0051865969 + 205700 0.0043256138 0.0023659064 0.0044949195 + 205800 0.0044634077 0.0024362562 0.0046330897 + 205900 0.0030894595 0.0024728147 0.003993408 + 206000 0.0044867908 0.0023565824 0.0045649248 + 206100 0.0052797085 0.0021715152 0.0047701217 + 206200 0.0051006559 0.0019909107 0.0045013898 + 206300 0.0049565698 0.0026592196 0.0050987813 + 206400 0.0049287298 0.0028922527 0.0053181119 + 206500 0.0051912889 0.0029120353 0.0054671228 + 206600 0.0055025205 0.0023448261 0.0050530979 + 206700 0.0046235569 0.0021110841 0.004386741 + 206800 0.0057252499 0.0023570365 0.005174933 + 206900 0.00482237 0.0025485278 0.0049220381 + 207000 0.0049893005 0.0027048026 0.0051604739 + 207100 0.0050913284 0.0028153758 0.005321264 + 207200 0.0059363507 0.0024832344 0.005405032 + 207300 0.0056337907 0.0025824252 0.0053553066 + 207400 0.0038662024 0.003176055 0.0050789515 + 207500 0.0055711367 0.0027601611 0.0055022049 + 207600 0.0074563527 0.0025548447 0.0062247683 + 207700 0.0061700799 0.0026526673 0.0056895035 + 207800 0.0053852936 0.0026693192 0.0053198933 + 207900 0.0050848399 0.00226964 0.0047723347 + 208000 0.0055414418 0.0020367382 0.0047641666 + 208100 0.0043496399 0.0020936959 0.0042345343 + 208200 0.0046774521 0.0021909922 0.0044931756 + 208300 0.0049882981 0.0022296181 0.0046847961 + 208400 0.0047669865 0.0025091106 0.0048553617 + 208500 0.0053923483 0.0023856588 0.0050397052 + 208600 0.0044672122 0.0025997266 0.0047984327 + 208700 0.0068281204 0.0028903409 0.0062510564 + 208800 0.0050874741 0.0024669823 0.0049709735 + 208900 0.0047176879 0.0023494041 0.0046713911 + 209000 0.0057667965 0.0027101512 0.0055484963 + 209100 0.0033983784 0.0028632735 0.0045359129 + 209200 0.0043536863 0.0028221188 0.0049649487 + 209300 0.0040080908 0.0028257116 0.0047984438 + 209400 0.0048354184 0.0033985738 0.0057785063 + 209500 0.0041313286 0.0032123237 0.005245712 + 209600 0.0048715752 0.0030137417 0.0054114701 + 209700 0.0055724553 0.0031856917 0.0059283846 + 209800 0.0037167717 0.0031179054 0.0049472539 + 209900 0.0054006195 0.0030862798 0.0057443972 + 210000 0.0066165923 0.0032367515 0.0064933555 + 210100 0.0058979609 0.003536461 0.0064393636 + 210200 0.0058593019 0.0030089939 0.005892869 + 210300 0.0051339926 0.0027591187 0.0052860057 + 210400 0.0056666922 0.0023534861 0.0051425612 + 210500 0.0056970462 0.0019918595 0.0047958745 + 210600 0.0047886314 0.0022582872 0.0046151918 + 210700 0.0048265653 0.0027921781 0.0051677532 + 210800 0.0067759879 0.0028135306 0.0061485871 + 210900 0.0065061142 0.0031688192 0.0063710473 + 211000 0.0053574975 0.0030748371 0.0057117304 + 211100 0.0052535929 0.002923458 0.0055092108 + 211200 0.0067109467 0.0024696276 0.0057726717 + 211300 0.0056713066 0.0026758612 0.0054672074 + 211400 0.0044433901 0.0032959468 0.0054829278 + 211500 0.0059177107 0.0032466104 0.0061592336 + 211600 0.006104954 0.0034196784 0.0064244604 + 211700 0.0064519749 0.0034097503 0.0065853316 + 211800 0.004492356 0.0033793426 0.0055904241 + 211900 0.0032893006 0.0033912314 0.005010184 + 212000 0.0054149816 0.0033266011 0.0059917874 + 212100 0.0064323915 0.0031275866 0.0062935293 + 212200 0.0047984367 0.0032259848 0.0055877154 + 212300 0.0053987905 0.0029599287 0.0056171459 + 212400 0.0060292492 0.0023815262 0.0053490473 + 212500 0.005131728 0.0019900643 0.0045158367 + 212600 0.005658139 0.0019943961 0.0047792614 + 212700 0.0055345312 0.0020935129 0.0048175399 + 212800 0.0064516994 0.0021890214 0.0053644671 + 212900 0.0058864614 0.0023138673 0.00521111 + 213000 0.0043168561 0.0021044374 0.0042291401 + 213100 0.0051066672 0.0025328955 0.0050463333 + 213200 0.0050953843 0.002463333 0.0049712174 + 213300 0.0042347515 0.0023018408 0.0043861325 + 213400 0.0052399892 0.0023578099 0.0049368671 + 213500 0.0051238251 0.0024410246 0.0049629072 + 213600 0.0039431461 0.0023947828 0.00433555 + 213700 0.0049213729 0.0027064531 0.0051286913 + 213800 0.0053552066 0.0027049235 0.0053406893 + 213900 0.0039567705 0.0024956977 0.0044431706 + 214000 0.0050324157 0.0027462594 0.0052231515 + 214100 0.0042460823 0.0029988966 0.0050887653 + 214200 0.004588884 0.0029250366 0.005183628 + 214300 0.0055491463 0.0026121336 0.005343354 + 214400 0.005185528 0.0024649085 0.0050171606 + 214500 0.0052419292 0.0026753284 0.0052553404 + 214600 0.0050197502 0.0032636573 0.0057343156 + 214700 0.0043701899 0.002781045 0.0049319978 + 214800 0.0040632088 0.0021758059 0.0041756664 + 214900 0.004069539 0.0020965474 0.0040995236 + 215000 0.0058808349 0.0024289904 0.0053234639 + 215100 0.0062529562 0.0024425966 0.0055202235 + 215200 0.0043441995 0.0021936288 0.0043317895 + 215300 0.0052781365 0.0023117095 0.0049095424 + 215400 0.0041149417 0.0024621594 0.0044874822 + 215500 0.0038499303 0.0024418257 0.0043367133 + 215600 0.0048624414 0.00220125 0.0045944829 + 215700 0.0054969339 0.0018770519 0.0045825741 + 215800 0.0057231471 0.0018535929 0.0046704544 + 215900 0.0047102771 0.0022969919 0.0046153314 + 216000 0.0065062011 0.0024597459 0.0056620168 + 216100 0.0043673059 0.0032458339 0.0053953672 + 216200 0.0033378635 0.0030578885 0.0047007432 + 216300 0.0052699301 0.0027917743 0.005385568 + 216400 0.0056726956 0.0027734825 0.0055655124 + 216500 0.0035098157 0.0030744343 0.0048019217 + 216600 0.005237188 0.0028866088 0.0054642873 + 216700 0.0059513971 0.0025743011 0.0055035044 + 216800 0.0051895869 0.0024363595 0.0049906093 + 216900 0.0040620779 0.0028042388 0.0048035427 + 217000 0.0051684041 0.0027585673 0.0053023912 + 217100 0.0041226504 0.002285393 0.00431451 + 217200 0.0055854542 0.0024929201 0.0052420109 + 217300 0.0047378884 0.0034005243 0.0057324537 + 217400 0.005060388 0.0035189053 0.006009565 + 217500 0.0049352066 0.0033553475 0.0057843945 + 217600 0.0060798772 0.002547203 0.0055396425 + 217700 0.0045976766 0.002432101 0.0046950199 + 217800 0.0053537455 0.002252871 0.0048879176 + 217900 0.0051399169 0.0019611539 0.0044909567 + 218000 0.0041643487 0.0020871326 0.004136773 + 218100 0.0039709327 0.0023119025 0.0042663459 + 218200 0.0045233115 0.0025354837 0.0047618011 + 218300 0.0051716516 0.0029716303 0.0055170525 + 218400 0.0048542453 0.0025894048 0.0049786037 + 218500 0.0042735001 0.0024087677 0.004512131 + 218600 0.0045448337 0.0024001084 0.0046370188 + 218700 0.0062435895 0.0023319875 0.0054050042 + 218800 0.0062207118 0.0022924029 0.0053541595 + 218900 0.0043557086 0.0021614769 0.0043053022 + 219000 0.0052632766 0.0023158841 0.0049064031 + 219100 0.0047865641 0.0029258425 0.0052817295 + 219200 0.0055226923 0.0035876106 0.0063058107 + 219300 0.0053719567 0.0030469427 0.0056909527 + 219400 0.0042250955 0.0026438176 0.0047233568 + 219500 0.006391799 0.0019504604 0.005096424 + 219600 0.0057347957 0.0018366755 0.0046592702 + 219700 0.0058660838 0.0025572675 0.0054444806 + 219800 0.0050654195 0.0027081664 0.0052013026 + 219900 0.0062568978 0.0022763033 0.0053558702 + 220000 0.0050487779 0.0020347682 0.0045197136 + 220100 0.0051037987 0.0016477191 0.0041597451 + 220200 0.004003234 0.0016691769 0.0036395187 + 220300 0.0051892424 0.0016206199 0.0041747001 + 220400 0.0037764483 0.0019250383 0.003783759 + 220500 0.0030629582 0.0022007617 0.0037083114 + 220600 0.0037187945 0.002490714 0.0043210581 + 220700 0.0051350276 0.0022113515 0.0047387479 + 220800 0.0053842698 0.0021446464 0.0047947167 + 220900 0.0031488186 0.002460759 0.0040105681 + 221000 0.0044168143 0.0026779103 0.0048518111 + 221100 0.0040596241 0.0026335166 0.0046316129 + 221200 0.0061763463 0.0024871109 0.0055270314 + 221300 0.0064801719 0.0025336542 0.0057231138 + 221400 0.0061356873 0.0022829189 0.0053028275 + 221500 0.0031350483 0.0021569938 0.0037000254 + 221600 0.0052373364 0.001894653 0.0044724045 + 221700 0.0037653301 0.0022992967 0.0041525451 + 221800 0.00408639 0.0025537857 0.0045650558 + 221900 0.0041897072 0.0022230648 0.0042851863 + 222000 0.0030049646 0.0021013379 0.0035803439 + 222100 0.0054018405 0.0017796014 0.0044383198 + 222200 0.005528337 0.0021400948 0.0048610731 + 222300 0.0049832598 0.0029091587 0.0053618569 + 222400 0.0040708779 0.0029853026 0.0049889378 + 222500 0.0076521951 0.002877739 0.0066440538 + 222600 0.0055129327 0.003098359 0.0058117555 + 222700 0.0044788742 0.0030353627 0.0052398086 + 222800 0.005993645 0.0026433993 0.0055933964 + 222900 0.0066607842 0.0023094836 0.0055878383 + 223000 0.0060431283 0.0025118421 0.0054861943 + 223100 0.0046657844 0.0027534374 0.0050498781 + 223200 0.0059535229 0.0022710148 0.0052012643 + 223300 0.0045898262 0.0023831364 0.0046421915 + 223400 0.0038055593 0.0023398717 0.0042129205 + 223500 0.0038947329 0.0024278852 0.0043448241 + 223600 0.0040366663 0.0023349039 0.0043217006 + 223700 0.0042610971 0.0021836228 0.0042808815 + 223800 0.0053230667 0.0023133163 0.0049332632 + 223900 0.0044901982 0.00226968 0.0044796994 + 224000 0.0055957543 0.0018120732 0.0045662335 + 224100 0.00581247 0.0022074269 0.005068252 + 224200 0.0063230963 0.0026978111 0.0058099601 + 224300 0.005454513 0.0026783356 0.0053629787 + 224400 0.0073363099 0.002532855 0.006143695 + 224500 0.006378343 0.0027228129 0.0058621536 + 224600 0.0056500365 0.0028837995 0.0056646768 + 224700 0.0068640739 0.002626445 0.0060048564 + 224800 0.0051578147 0.0030167364 0.0055553483 + 224900 0.0058275043 0.0037691803 0.0066374051 + 225000 0.0053267076 0.0039626814 0.0065844203 + 225100 0.0062096032 0.002873764 0.0059300531 + 225200 0.0063608568 0.0024383209 0.0055690552 + 225300 0.0044686122 0.0022316281 0.0044310232 + 225400 0.0048702104 0.0022483346 0.0046453913 + 225500 0.0061340381 0.0023148405 0.0053339374 + 225600 0.0040577595 0.0026638542 0.0046610326 + 225700 0.0049936833 0.0025713821 0.0050292106 + 225800 0.0043599912 0.002625639 0.0047715721 + 225900 0.0055417245 0.0026817468 0.0054093144 + 226000 0.0066953426 0.0026113114 0.0059066753 + 226100 0.004326398 0.0028081533 0.0049375523 + 226200 0.0045409265 0.0031405349 0.0053755222 + 226300 0.0053654247 0.0027800413 0.0054208362 + 226400 0.0047704296 0.0024578235 0.0048057693 + 226500 0.0044471266 0.002632954 0.0048217742 + 226600 0.0056641204 0.0021998938 0.004987703 + 226700 0.0043397232 0.0022662964 0.0044022539 + 226800 0.0034631023 0.002404704 0.0041091997 + 226900 0.0030494681 0.0021289876 0.0036298977 + 227000 0.0046423333 0.001843954 0.0041288524 + 227100 0.0047339715 0.0024045572 0.0047345588 + 227200 0.0036705001 0.0027718793 0.0045784535 + 227300 0.0044726558 0.0026217218 0.0048231071 + 227400 0.0044293295 0.0023878149 0.0045678756 + 227500 0.0057397862 0.0023892561 0.0052143072 + 227600 0.0067101184 0.0022908112 0.0055934475 + 227700 0.0045021045 0.0026717485 0.0048876281 + 227800 0.0049380122 0.0026163612 0.0050467891 + 227900 0.003621218 0.0025454427 0.0043277609 + 228000 0.0048323883 0.0024189065 0.0047973476 + 228100 0.0054251081 0.0025724345 0.0052426048 + 228200 0.0041023409 0.0029127556 0.0049318765 + 228300 0.0050692842 0.002691423 0.0051864613 + 228400 0.0047096998 0.0021502661 0.0044683215 + 228500 0.0047894843 0.0019715287 0.004328853 + 228600 0.0050773786 0.0021102653 0.0046092876 + 228700 0.0048956484 0.0020757785 0.0044853555 + 228800 0.0035449903 0.0023614822 0.0041062821 + 228900 0.0058927166 0.0024416273 0.0053419487 + 229000 0.0042489512 0.0023997444 0.0044910251 + 229100 0.0041381971 0.0022650912 0.0043018601 + 229200 0.0064249999 0.0024941625 0.0056564672 + 229300 0.0055467913 0.0027213777 0.0054514391 + 229400 0.0050476078 0.0032792908 0.0057636603 + 229500 0.0065729096 0.0030820407 0.0063171446 + 229600 0.0058244215 0.0024901592 0.0053568667 + 229700 0.0057061932 0.0019707067 0.0047792236 + 229800 0.0049217423 0.0019480575 0.0043704775 + 229900 0.0042532246 0.0024300536 0.0045234376 + 230000 0.0035928833 0.0025123547 0.004280727 + 230100 0.0054224825 0.0022644256 0.0049333037 + 230200 0.0042817349 0.0026559437 0.0047633601 + 230300 0.0056760628 0.002935873 0.0057295602 + 230400 0.0047273578 0.0029227911 0.0052495375 + 230500 0.0036054855 0.0028767125 0.0046512873 + 230600 0.0053294692 0.0028489503 0.0054720484 + 230700 0.0044648036 0.0029584644 0.0051559849 + 230800 0.004442389 0.0031217305 0.0053082188 + 230900 0.0042698341 0.0028636053 0.0049651643 + 231000 0.0049963778 0.0027490447 0.0052081994 + 231100 0.0058486523 0.0028782866 0.0057569201 + 231200 0.0052202921 0.0032167665 0.005786129 + 231300 0.0049499037 0.0027882791 0.0052245599 + 231400 0.004501253 0.0026328275 0.004848288 + 231500 0.0045940417 0.0027775317 0.0050386616 + 231600 0.0051320671 0.0025689991 0.0050949384 + 231700 0.0042468272 0.0023895371 0.0044797724 + 231800 0.0060411556 0.0023294811 0.0053028623 + 231900 0.0048847182 0.0025419736 0.0049461708 + 232000 0.0041737476 0.0026458296 0.004700096 + 232100 0.0044714227 0.0023174672 0.0045182456 + 232200 0.0050376926 0.0020622948 0.0045417841 + 232300 0.0046666779 0.0022054833 0.0045023638 + 232400 0.0042436145 0.0024493519 0.0045380059 + 232500 0.0055358728 0.0022659705 0.0049906579 + 232600 0.0051822312 0.0030317175 0.0055823469 + 232700 0.0046164259 0.002986165 0.0052583122 + 232800 0.0054859041 0.0024753009 0.0051753944 + 232900 0.0065705993 0.0026818067 0.0059157735 + 233000 0.0061246252 0.0029064822 0.0059209461 + 233100 0.0069537328 0.00298508 0.0064076204 + 233200 0.0051339751 0.0032092191 0.0057360974 + 233300 0.005917003 0.003310663 0.0062229379 + 233400 0.0062810917 0.002877689 0.0059691638 + 233500 0.0059374155 0.0025431963 0.005465518 + 233600 0.00626338 0.0025974026 0.00568016 + 233700 0.0050809395 0.0027301294 0.0052309043 + 233800 0.0052302275 0.0027527733 0.0053270259 + 233900 0.0042520873 0.0029547997 0.005047624 + 234000 0.0058083399 0.0027340517 0.005592844 + 234100 0.0049268343 0.0022053915 0.0046303178 + 234200 0.0076861099 0.0017037524 0.0054867597 + 234300 0.0045428943 0.0019596845 0.0041956403 + 234400 0.0050136229 0.0018116473 0.0042792898 + 234500 0.0041957768 0.0023415798 0.0044066887 + 234600 0.0042182241 0.0028626145 0.0049387716 + 234700 0.0048895945 0.0027870743 0.0051936716 + 234800 0.0050567246 0.0022763268 0.0047651834 + 234900 0.0044596042 0.0020101416 0.004205103 + 235000 0.0048966833 0.001865674 0.0042757603 + 235100 0.0043212036 0.0017625108 0.0038893532 + 235200 0.0050978104 0.0020328043 0.0045418828 + 235300 0.0032156259 0.0021247859 0.0037074768 + 235400 0.0054392694 0.0017186322 0.0043957726 + 235500 0.0056555614 0.0019456801 0.0047292767 + 235600 0.0044362244 0.0021374415 0.0043208957 + 235700 0.004136126 0.0018902369 0.0039259864 + 235800 0.0050183716 0.0020037994 0.0044737792 + 235900 0.0032997741 0.0025725778 0.0041966854 + 236000 0.0053138199 0.0023464533 0.0049618491 + 236100 0.0044297678 0.0021930258 0.0043733022 + 236200 0.0048312324 0.0024386415 0.0048165137 + 236300 0.0068548285 0.0021055877 0.0054794486 + 236400 0.0046685614 0.002191106 0.0044889135 + 236500 0.0050727828 0.0022057975 0.0047025577 + 236600 0.0064070034 0.0025948825 0.0057483294 + 236700 0.0052351219 0.0024629037 0.0050395653 + 236800 0.0051928557 0.0020286716 0.0045845303 + 236900 0.0034535599 0.0021947359 0.003894535 + 237000 0.004126118 0.0024914122 0.0045222359 + 237100 0.0043575843 0.0020756908 0.0042204393 + 237200 0.0037731263 0.0019751776 0.0038322632 + 237300 0.0060241919 0.0017586037 0.0047236356 + 237400 0.0047532224 0.0022858637 0.0046253404 + 237500 0.0058699606 0.0021850845 0.0050742058 + 237600 0.0054400575 0.0022226734 0.0049002017 + 237700 0.0050639529 0.0024101977 0.004902612 + 237800 0.0049215833 0.0026858229 0.0051081647 + 237900 0.0070535314 0.0028339173 0.0063055773 + 238000 0.0050898743 0.0034742758 0.0059794484 + 238100 0.0051225961 0.0028177453 0.005339023 + 238200 0.0071526648 0.0021368651 0.0056573173 + 238300 0.0049993586 0.0020391323 0.0044997541 + 238400 0.0056579537 0.0024366378 0.0052214119 + 238500 0.0048786279 0.0025454837 0.0049466834 + 238600 0.0056321872 0.0020965612 0.0048686534 + 238700 0.0040273964 0.0018685808 0.003850815 + 238800 0.0039962552 0.0019959995 0.0039629064 + 238900 0.0033118044 0.0020618466 0.0036918753 + 239000 0.0051447773 0.001947857 0.0044800521 + 239100 0.0051397564 0.0018037079 0.0043334317 + 239200 0.0046624548 0.002079204 0.004374006 + 239300 0.0041581271 0.0022198799 0.004266458 + 239400 0.0056246643 0.0017859469 0.0045543363 + 239500 0.0045521947 0.0015505482 0.0037910816 + 239600 0.0055271837 0.0018025975 0.0045230082 + 239700 0.0035709951 0.0021637389 0.003921338 + 239800 0.0048455126 0.0019910557 0.0043759564 + 239900 0.005770437 0.0018882727 0.0047284097 + 240000 0.00655673 0.0019866389 0.0052137794 + 240100 0.00342689 0.0022488426 0.003935515 + 240200 0.0047430325 0.0018478163 0.0041822776 + 240300 0.0057061463 0.0021403004 0.0049487943 + 240400 0.0058177022 0.0026527908 0.0055161912 + 240500 0.0068673499 0.0030914402 0.006471464 + 240600 0.0083312635 0.0029081076 0.0070086513 + 240700 0.0046827847 0.0024661679 0.004770976 + 240800 0.0045093961 0.0021581281 0.0043775965 + 240900 0.0054875025 0.0020904098 0.00479129 + 241000 0.0040854661 0.0024897079 0.0045005232 + 241100 0.0051867789 0.0027482615 0.0053011292 + 241200 0.0044200609 0.0026331323 0.004808631 + 241300 0.0055799947 0.0023709389 0.0051173426 + 241400 0.0032799339 0.0019750103 0.0035893528 + 241500 0.0046228054 0.0020117951 0.0042870821 + 241600 0.0050571618 0.0022091048 0.0046981766 + 241700 0.0058218486 0.0019198664 0.0047853075 + 241800 0.0051358423 0.0019003955 0.0044281929 + 241900 0.0052241318 0.0020270637 0.0045983161 + 242000 0.0044889898 0.0017495966 0.0039590213 + 242100 0.0053119132 0.0017730035 0.0043874608 + 242200 0.0057352157 0.0020860274 0.0049088289 + 242300 0.0049690353 0.0022593649 0.004705062 + 242400 0.0047644947 0.0024018059 0.0047468307 + 242500 0.0051544758 0.0026273042 0.0051642727 + 242600 0.0059107688 0.0026127507 0.0055219572 + 242700 0.0058358368 0.0025155926 0.0053879185 + 242800 0.0053620185 0.0024640607 0.0051031792 + 242900 0.0046867895 0.0022967126 0.0046034918 + 243000 0.0062623293 0.0025207724 0.0056030126 + 243100 0.0044409162 0.0027099911 0.0048957545 + 243200 0.004728963 0.0027052514 0.0050327879 + 243300 0.0058808667 0.0024615983 0.0053560874 + 243400 0.0060612138 0.0022001482 0.0051834019 + 243500 0.0046394678 0.0021799781 0.0044634661 + 243600 0.0046309978 0.002280017 0.0045593362 + 243700 0.0058203484 0.002088018 0.0049527207 + 243800 0.0063118102 0.0020587055 0.0051652996 + 243900 0.0048041186 0.0024468302 0.0048113573 + 244000 0.0047311514 0.0033398974 0.005668511 + 244100 0.0045819999 0.0032487137 0.0055039168 + 244200 0.0054557002 0.0027289454 0.0054141729 + 244300 0.0069148751 0.0024818691 0.0058852841 + 244400 0.0050419973 0.0031479765 0.0056295846 + 244500 0.0055699666 0.0031698633 0.0059113312 + 244600 0.0056666623 0.0025725445 0.0053616049 + 244700 0.004831634 0.0025240119 0.0049020817 + 244800 0.005699391 0.0025613179 0.0053664869 + 244900 0.0040419483 0.0026003001 0.0045896965 + 245000 0.0046014814 0.0024115681 0.0046763597 + 245100 0.0055287975 0.0025698972 0.0052911022 + 245200 0.0033639788 0.0022096612 0.0038653695 + 245300 0.0046242549 0.0021797478 0.0044557483 + 245400 0.0048702643 0.0022804495 0.0046775327 + 245500 0.0040667937 0.0028051421 0.0048067671 + 245600 0.0046234898 0.0031284557 0.0054040796 + 245700 0.0055556256 0.0031059233 0.0058403328 + 245800 0.0053764667 0.0029054793 0.005551709 + 245900 0.0069553264 0.0025991735 0.0060224983 + 246000 0.0044759328 0.002713765 0.0049167631 + 246100 0.0053892029 0.002838905 0.0054914033 + 246200 0.0043620866 0.0029082788 0.0050552433 + 246300 0.0039708406 0.0025527822 0.0045071803 + 246400 0.0055894716 0.0029614703 0.0057125383 + 246500 0.0054312922 0.0036872424 0.0063604565 + 246600 0.0054647871 0.0035214146 0.0062111145 + 246700 0.0046411573 0.0029122144 0.005196534 + 246800 0.0058554474 0.0029536698 0.0058356478 + 246900 0.0075097835 0.0027956567 0.0064918783 + 247000 0.0054021736 0.0034634944 0.0061223767 + 247100 0.0060065 0.0031795797 0.0061359039 + 247200 0.0071464776 0.0028361754 0.0063535823 + 247300 0.00616436 0.0022991142 0.0053331351 + 247400 0.0037586713 0.0021797882 0.0040297593 + 247500 0.0054396149 0.0022985565 0.0049758669 + 247600 0.0036207685 0.0028005147 0.0045826117 + 247700 0.0047495396 0.0026802859 0.00501795 + 247800 0.0059507915 0.0028488157 0.0057777209 + 247900 0.0045286247 0.0029376218 0.0051665543 + 248000 0.0046029719 0.0026812415 0.0049467668 + 248100 0.0046192581 0.0026567359 0.004930277 + 248200 0.0050328799 0.0026949549 0.0051720754 + 248300 0.003207233 0.0026990052 0.0042775652 + 248400 0.0041991671 0.0023476545 0.004414432 + 248500 0.0066875435 0.002223205 0.0055147303 + 248600 0.0047559344 0.0025040377 0.0048448491 + 248700 0.0035982424 0.0029368388 0.0047078487 + 248800 0.004363101 0.0026584584 0.0048059222 + 248900 0.0037739489 0.0020077321 0.0038652226 + 249000 0.0050813621 0.0019388447 0.0044398276 + 249100 0.0043487559 0.0022355104 0.0043759138 + 249200 0.0058398458 0.0023080917 0.0051823908 + 249300 0.0067206903 0.0022267611 0.0055346009 + 249400 0.0075233098 0.0028285607 0.0065314397 + 249500 0.0054928953 0.0031030977 0.0058066321 + 249600 0.0040008821 0.0031745265 0.0051437107 + 249700 0.0047166677 0.0025014062 0.0048228911 + 249800 0.0046130293 0.0018758631 0.0041463385 + 249900 0.006137037 0.0016514892 0.0046720621 + 250000 0.0037794148 0.0018880815 0.0037482622 + 250100 0.0039990212 0.0022489827 0.0042172509 + 250200 0.0053823788 0.0023548205 0.0050039601 + 250300 0.0054616988 0.0025834027 0.0052715826 + 250400 0.0065909665 0.0023764244 0.0056204157 + 250500 0.0038529579 0.0026815481 0.0045779258 + 250600 0.0046969707 0.0025481248 0.0048599151 + 250700 0.0047318766 0.0024981614 0.0048271319 + 250800 0.0053146829 0.0024193937 0.0050352142 + 250900 0.0060634244 0.0023458564 0.0053301981 + 251000 0.0046424918 0.0024238345 0.0047088109 + 251100 0.0048005062 0.0022743684 0.0046371176 + 251200 0.0036861401 0.0022360787 0.0040503508 + 251300 0.0043073843 0.0020309995 0.0041510402 + 251400 0.0065492963 0.0019439852 0.005167467 + 251500 0.0050871896 0.0021034047 0.0046072558 + 251600 0.0054397611 0.0023233541 0.0050007365 + 251700 0.0055883339 0.0022824749 0.005032983 + 251800 0.0040523777 0.0026288716 0.0046234012 + 251900 0.0049252287 0.0023292218 0.0047533577 + 252000 0.0048267657 0.0022239019 0.0045995757 + 252100 0.0034381036 0.0024088095 0.0041010011 + 252200 0.0058644862 0.0024981153 0.0053845421 + 252300 0.0057100502 0.0026390522 0.0054494675 + 252400 0.0062260503 0.0021374725 0.0052018566 + 252500 0.0060086388 0.0020083595 0.0049657364 + 252600 0.0051855301 0.0021870563 0.0047393094 + 252700 0.0051784534 0.0016690214 0.0042177914 + 252800 0.0054176165 0.0017162671 0.0043827502 + 252900 0.0047007351 0.0026056407 0.0049192838 + 253000 0.0042453258 0.0026721077 0.004761604 + 253100 0.0062095845 0.0023078452 0.005364125 + 253200 0.0050565994 0.0029118372 0.0054006322 + 253300 0.0048289855 0.0029160442 0.0052928104 + 253400 0.0051821597 0.0027378806 0.0052884748 + 253500 0.0063761901 0.0028014605 0.0059397416 + 253600 0.0062903414 0.0027995185 0.0058955459 + 253700 0.0054475707 0.003517233 0.0061984592 + 253800 0.0056658062 0.0028000945 0.0055887335 + 253900 0.0044898934 0.0023374686 0.0045473381 + 254000 0.0057052691 0.0018763197 0.0046843819 + 254100 0.0045796217 0.0019720258 0.0042260584 + 254200 0.0061078013 0.0019539624 0.0049601458 + 254300 0.006413242 0.0021526598 0.0053091774 + 254400 0.0051807721 0.0025896362 0.0051395475 + 254500 0.0044507213 0.002663856 0.0048544454 + 254600 0.0030644707 0.0026644161 0.0041727103 + 254700 0.0058265795 0.0024847412 0.0053525108 + 254800 0.0046037808 0.0021741084 0.0044400317 + 254900 0.0034887605 0.002138803 0.0038559274 + 255000 0.0044401805 0.0018425626 0.0040279639 + 255100 0.0054237561 0.0018357124 0.0045052174 + 255200 0.0053618407 0.0020169785 0.0046560095 + 255300 0.0038760375 0.0021829327 0.0040906699 + 255400 0.0054311858 0.002469676 0.0051428378 + 255500 0.0038344292 0.002524664 0.0044119221 + 255600 0.0048883999 0.0019611145 0.0043671238 + 255700 0.0069271244 0.0019371039 0.005346548 + 255800 0.0045648143 0.0026255336 0.0048722782 + 255900 0.0047981963 0.002514425 0.0048760372 + 256000 0.0037732078 0.0027963867 0.0046535125 + 256100 0.0051018548 0.0023232548 0.004834324 + 256200 0.0055353036 0.0019116836 0.0046360909 + 256300 0.0045205624 0.0021885546 0.0044135189 + 256400 0.0055575643 0.0023536519 0.0050890156 + 256500 0.0066997229 0.0026539261 0.005951446 + 256600 0.0046659036 0.0033621029 0.0056586023 + 256700 0.0056651715 0.0026707423 0.0054590689 + 256800 0.0058501365 0.0022357307 0.0051150948 + 256900 0.005209156 0.0020825416 0.0046464231 + 257000 0.0039478577 0.0018494875 0.0037925737 + 257100 0.0042604305 0.0017512211 0.0038481517 + 257200 0.0051802103 0.0015998009 0.0041494357 + 257300 0.0033035505 0.0018494022 0.0034753685 + 257400 0.0060862117 0.0016072139 0.0046027713 + 257500 0.0046483744 0.001675834 0.0039637058 + 257600 0.0052337841 0.0017493488 0.0043253519 + 257700 0.005782468 0.001488303 0.0043343615 + 257800 0.0070891867 0.0016602539 0.005149463 + 257900 0.0079897527 0.0023863181 0.0063187745 + 258000 0.004642985 0.0024789512 0.0047641704 + 258100 0.0043811406 0.0019618209 0.0041181636 + 258200 0.0055365008 0.001769747 0.0044947435 + 258300 0.0067222823 0.0016124562 0.0049210795 + 258400 0.0049901859 0.0015726943 0.0040288014 + 258500 0.0051839004 0.0017788727 0.0043303237 + 258600 0.0041030137 0.0019043596 0.0039238117 + 258700 0.0049013389 0.001635183 0.0040475608 + 258800 0.0049948471 0.0019049336 0.0043633349 + 258900 0.0046237468 0.0019595431 0.0042352935 + 259000 0.0036820014 0.0017440126 0.0035562476 + 259100 0.0046607582 0.0016126097 0.0039065767 + 259200 0.0041415294 0.0013044756 0.0033428846 + 259300 0.0048536869 0.0015333003 0.0039222243 + 259400 0.0051329694 0.0019103729 0.0044367562 + 259500 0.0052403202 0.0022973331 0.0048765532 + 259600 0.0034531377 0.002532116 0.0042317072 + 259700 0.0037485029 0.0024491587 0.004294125 + 259800 0.006412697 0.0021674027 0.005323652 + 259900 0.00533141 0.0024208083 0.0050448617 + 260000 0.0052788045 0.0020315597 0.0046297213 + 260100 0.0055507928 0.0019157452 0.004647776 + 260200 0.0059146466 0.0018028916 0.0047140067 + 260300 0.0069174167 0.0013973019 0.0048019679 + 260400 0.0045720687 0.0015503526 0.0038006677 + 260500 0.0045463393 0.0018023304 0.0040399818 + 260600 0.0050411663 0.0020177918 0.0044989909 + 260700 0.0044043562 0.0024621842 0.0046299532 + 260800 0.0037925284 0.002254166 0.0041208011 + 260900 0.0063108165 0.0021229394 0.0052290444 + 261000 0.0058122747 0.002330416 0.005191145 + 261100 0.0043030894 0.0025450621 0.0046629889 + 261200 0.0041787849 0.0023467461 0.0044034918 + 261300 0.0035390669 0.0019028117 0.0036446962 + 261400 0.0042991055 0.0017323523 0.0038483183 + 261500 0.0044333732 0.0018762464 0.0040582972 + 261600 0.0046338167 0.0024625934 0.0047433 + 261700 0.0048334731 0.002860816 0.0052397911 + 261800 0.0052243152 0.0025889821 0.0051603248 + 261900 0.0068565951 0.0023205413 0.0056952718 + 262000 0.0053393384 0.0023912167 0.0050191723 + 262100 0.0045096244 0.0025509484 0.0047705292 + 262200 0.0052668126 0.0020984569 0.0046907162 + 262300 0.0048518295 0.0021408891 0.004528899 + 262400 0.0049174855 0.0026679141 0.005088239 + 262500 0.0049791675 0.0024939855 0.0049446695 + 262600 0.0046800219 0.0024875801 0.0047910284 + 262700 0.005194587 0.0022081259 0.0047648367 + 262800 0.0069141345 0.0016249948 0.0050280454 + 262900 0.0061815432 0.0017980907 0.004840569 + 263000 0.0051668016 0.0025614118 0.0051044469 + 263100 0.0051914746 0.002800492 0.0053556709 + 263200 0.0036553969 0.0030079981 0.0048071388 + 263300 0.0045798495 0.002704538 0.0049586827 + 263400 0.0039291864 0.0027309095 0.004664806 + 263500 0.0057202153 0.0029632684 0.0057786868 + 263600 0.0062276175 0.0023086316 0.005373787 + 263700 0.0048109097 0.0020311737 0.0043990433 + 263800 0.006159654 0.0019924897 0.0050241944 + 263900 0.0059146376 0.0029262333 0.005837344 + 264000 0.0059480275 0.0027627945 0.0056903392 + 264100 0.0057398176 0.0021963595 0.005021426 + 264200 0.0036201066 0.0020079338 0.0037897051 + 264300 0.0052320807 0.0020363199 0.0046114846 + 264400 0.0048747863 0.002359854 0.0047591629 + 264500 0.0039755867 0.0025499338 0.0045066679 + 264600 0.0067253 0.0022580579 0.0055681664 + 264700 0.0049458373 0.002173953 0.0046082323 + 264800 0.0060120888 0.0024530614 0.0054121364 + 264900 0.0057828258 0.0022871068 0.0051333413 + 265000 0.005185618 0.0025112506 0.0050635469 + 265100 0.0051948594 0.0026716069 0.0052284517 + 265200 0.0031530347 0.0024457032 0.0039975875 + 265300 0.0035588988 0.0027541053 0.0045057508 + 265400 0.0053086158 0.003153057 0.0057658914 + 265500 0.0067152778 0.0027737243 0.0060789001 + 265600 0.004428293 0.0027788115 0.0049583619 + 265700 0.0057329238 0.0026537883 0.0054754617 + 265800 0.0043737147 0.0027484698 0.0049011575 + 265900 0.0048127728 0.0024715874 0.004840374 + 266000 0.0049274901 0.0020938725 0.0045191215 + 266100 0.004699005 0.0019140342 0.0042268257 + 266200 0.0047342951 0.0021224453 0.0044526062 + 266300 0.0048862552 0.0021317683 0.004536722 + 266400 0.0043073674 0.0021909306 0.004310963 + 266500 0.0057851546 0.002003797 0.0048511778 + 266600 0.0044325384 0.0021315267 0.0043131667 + 266700 0.0053480081 0.0022362437 0.0048684664 + 266800 0.00433809 0.0023166886 0.0044518423 + 266900 0.0049331702 0.002206361 0.0046344057 + 267000 0.0063883601 0.0020625531 0.0052068241 + 267100 0.00502281 0.0021572166 0.0046293808 + 267200 0.00603001 0.0019306542 0.0048985498 + 267300 0.0048522949 0.0018258938 0.0042141327 + 267400 0.0057574486 0.0017260538 0.004559798 + 267500 0.0051959934 0.0022498456 0.0048072486 + 267600 0.004964041 0.0028620062 0.0053052451 + 267700 0.0056697678 0.0030081607 0.0057987496 + 267800 0.005390971 0.0026980058 0.0053513743 + 267900 0.0078288919 0.0025747908 0.0064280735 + 268000 0.003174694 0.0034479063 0.005010451 + 268100 0.0077840366 0.0029698565 0.006801062 + 268200 0.0061906903 0.0032786887 0.006325669 + 268300 0.0061645216 0.003549617 0.0065837175 + 268400 0.0044946772 0.0033094007 0.0055216246 + 268500 0.0040326395 0.0029663419 0.0049511566 + 268600 0.0047170932 0.0025829904 0.0049046847 + 268700 0.0048004762 0.0021015421 0.0044642765 + 268800 0.0049834111 0.0021027142 0.0045554869 + 268900 0.0055200551 0.0024495756 0.0051664777 + 269000 0.0039273036 0.0024452564 0.0043782262 + 269100 0.005158609 0.0027980796 0.0053370825 + 269200 0.0056523061 0.0021612498 0.0049432442 + 269300 0.0051335961 0.0020249492 0.004551641 + 269400 0.0047628458 0.0025649611 0.0049091742 + 269500 0.0053307736 0.0031129076 0.0057366477 + 269600 0.0047435009 0.0032376547 0.0055723465 + 269700 0.0069155155 0.002694701 0.0060984312 + 269800 0.0046690142 0.0025550695 0.0048531 + 269900 0.0044759796 0.0024033356 0.0046063569 + 270000 0.0048307539 0.002049567 0.0044272037 + 270100 0.0057973224 0.002296298 0.0051496676 + 270200 0.0035494737 0.0026432302 0.0043902368 + 270300 0.0057009279 0.0021974126 0.0050033381 + 270400 0.0049736951 0.002117784 0.0045657745 + 270500 0.0047978342 0.0022275081 0.0045889421 + 270600 0.0032180944 0.0024956806 0.0040795864 + 270700 0.0052087808 0.002535338 0.0050990348 + 270800 0.0054016194 0.002393166 0.0050517756 + 270900 0.0057376692 0.0020122872 0.0048362962 + 271000 0.0056400583 0.0022423199 0.0050182861 + 271100 0.0034414897 0.0023273248 0.0040211831 + 271200 0.0041793293 0.0019570576 0.0040140712 + 271300 0.0030627155 0.0017977342 0.0033051645 + 271400 0.0065420349 0.0016530551 0.0048729629 + 271500 0.0050560446 0.0017690674 0.0042575894 + 271600 0.0041136469 0.0017029926 0.0037276782 + 271700 0.0060963892 0.0014154488 0.0044160153 + 271800 0.004642829 0.0017953301 0.0040804725 + 271900 0.0054913689 0.0019350396 0.0046378227 + 272000 0.0061913883 0.0018971411 0.004944465 + 272100 0.0035116398 0.0022253612 0.0039537464 + 272200 0.0034300483 0.0020921556 0.0037803824 + 272300 0.0036153721 0.0022032472 0.0039826881 + 272400 0.0049545512 0.0019178182 0.0043563864 + 272500 0.0051608808 0.0019685078 0.0045086288 + 272600 0.0046482125 0.0021900194 0.0044778115 + 272700 0.0057369095 0.0020799348 0.00490357 + 272800 0.0042585867 0.0020678163 0.0041638394 + 272900 0.0038195269 0.002426714 0.0043066374 + 273000 0.0050583989 0.002649716 0.0051393967 + 273100 0.0052567208 0.0026965721 0.0052838643 + 273200 0.0062474164 0.0028196736 0.0058945739 + 273300 0.0046532846 0.0025522986 0.0048425871 + 273400 0.0056058717 0.0026374023 0.0053965422 + 273500 0.0041549062 0.0022958006 0.0043407935 + 273600 0.0035666381 0.002252609 0.0040080637 + 273700 0.0048041145 0.0021735547 0.0045380798 + 273800 0.0056170279 0.0026186479 0.0053832788 + 273900 0.0062730847 0.0025800389 0.0056675728 + 274000 0.0055451323 0.0026608726 0.0053901174 + 274100 0.0043466114 0.0028973892 0.005036737 + 274200 0.005656468 0.0031518094 0.0059358522 + 274300 0.005908843 0.0036299621 0.0065382207 + 274400 0.0062050562 0.0031482631 0.0062023142 + 274500 0.0058841607 0.0027668805 0.0056629909 + 274600 0.0056581076 0.0027634284 0.0055482782 + 274700 0.007180993 0.0029853976 0.0065197926 + 274800 0.0051164339 0.0029540255 0.0054722703 + 274900 0.0049359209 0.0025202834 0.0049496819 + 275000 0.0043202549 0.0026373259 0.0047637014 + 275100 0.0052377379 0.0024349246 0.0050128738 + 275200 0.0040010985 0.0022086715 0.0041779622 + 275300 0.0047455146 0.0020300751 0.004365758 + 275400 0.0034878216 0.0017625277 0.0034791899 + 275500 0.0038472765 0.0017268247 0.0036204062 + 275600 0.0055342671 0.0020717263 0.0047956234 + 275700 0.005517095 0.0024730979 0.0051885431 + 275800 0.0048482421 0.0023195304 0.0047057746 + 275900 0.0049034374 0.0023696041 0.0047830147 + 276000 0.0053832301 0.0026505187 0.0053000773 + 276100 0.004346808 0.002485561 0.0046250056 + 276200 0.0054703902 0.0023222053 0.005014663 + 276300 0.0052853241 0.0023236344 0.0049250048 + 276400 0.0059586381 0.0019992997 0.0049320669 + 276500 0.0045866796 0.0023984461 0.0046559524 + 276600 0.0059551052 0.0026341287 0.0055651571 + 276700 0.0039165048 0.0027619681 0.0046896229 + 276800 0.0054043806 0.0023263863 0.0049863549 + 276900 0.0047671128 0.0023136712 0.0046599845 + 277000 0.0043525344 0.0022648297 0.0044070927 + 277100 0.0038019366 0.0023099025 0.0041811682 + 277200 0.003783473 0.0021885764 0.0040507545 + 277300 0.005500501 0.00200039 0.0047076678 + 277400 0.0038613979 0.0020672236 0.0039677554 + 277500 0.0033515775 0.0020528058 0.0037024103 + 277600 0.0036348091 0.0021372399 0.0039262475 + 277700 0.004616167 0.0021499904 0.0044220101 + 277800 0.0059958133 0.0018436491 0.0047947135 + 277900 0.0048727507 0.0014812055 0.0038795125 + 278000 0.0029986782 0.0015995049 0.0030754168 + 278100 0.0033981311 0.0022277632 0.0039002808 + 278200 0.0042619267 0.0022844394 0.0043821064 + 278300 0.0053978261 0.0022335677 0.0048903103 + 278400 0.0056794273 0.0021207813 0.0049161244 + 278500 0.0038789198 0.0022412189 0.0041503748 + 278600 0.0034126428 0.0028701517 0.0045498118 + 278700 0.0061406015 0.0026863731 0.0057087004 + 278800 0.0056319239 0.0024608786 0.0052328412 + 278900 0.0050998397 0.0026300063 0.0051400837 + 279000 0.0058821043 0.0026068985 0.0055019968 + 279100 0.0044220462 0.002436609 0.0046130848 + 279200 0.0067896219 0.0024907889 0.0058325559 + 279300 0.0037022306 0.0026302171 0.0044524087 + 279400 0.0042854613 0.0024801557 0.0045894062 + 279500 0.0052746764 0.0027179644 0.0053140942 + 279600 0.0049614056 0.0027654488 0.0052073906 + 279700 0.0042233919 0.002860104 0.0049388047 + 279800 0.0039620568 0.0032152862 0.005165361 + 279900 0.0046898849 0.003024348 0.0053326507 + 280000 0.005321729 0.002854431 0.0054737195 + 280100 0.0044160764 0.0026352172 0.0048087548 + 280200 0.0048176522 0.0022515319 0.0046227201 + 280300 0.0045332924 0.002203738 0.0044349678 + 280400 0.004981162 0.0024758119 0.0049274776 + 280500 0.0042601887 0.0018776961 0.0039745077 + 280600 0.0047589866 0.0017671947 0.0041095084 + 280700 0.0033015747 0.0017203933 0.003345387 + 280800 0.0045627341 0.0018056279 0.0040513486 + 280900 0.0052966415 0.001947747 0.0045546878 + 281000 0.0064567885 0.0023163381 0.0054942887 + 281100 0.0054619469 0.0019422519 0.0046305539 + 281200 0.003606606 0.0018951106 0.003670237 + 281300 0.0061901804 0.0021375779 0.0051843073 + 281400 0.0046380842 0.0024670601 0.0047498672 + 281500 0.0034357188 0.0023968133 0.0040878312 + 281600 0.006019843 0.0018671526 0.0048300441 + 281700 0.0046180026 0.0024158832 0.0046888064 + 281800 0.0044871101 0.0025793598 0.0047878593 + 281900 0.0044178566 0.0023825569 0.0045569707 + 282000 0.0046890666 0.0021679186 0.0044758186 + 282100 0.0053929306 0.0020904725 0.0047448056 + 282200 0.0048768804 0.0017257586 0.0041260982 + 282300 0.0047405129 0.0015553754 0.0038885965 + 282400 0.0038034177 0.0014253842 0.0032973788 + 282500 0.0061451427 0.0013567628 0.0043813252 + 282600 0.0034957316 0.0016501699 0.0033707253 + 282700 0.0060028527 0.0017251985 0.0046797275 + 282800 0.0039298828 0.002120235 0.0040544742 + 282900 0.0049245674 0.0017605337 0.0041843443 + 283000 0.0046692256 0.0017664566 0.004064591 + 283100 0.0049247796 0.0022662518 0.0046901668 + 283200 0.0041298311 0.0024572062 0.0044898574 + 283300 0.00423418 0.0026301757 0.0047141862 + 283400 0.007013865 0.0026617284 0.0061138651 + 283500 0.0060485954 0.0023906432 0.0053676863 + 283600 0.0037632769 0.0024142001 0.0042664379 + 283700 0.0052141751 0.0023992979 0.0049656497 + 283800 0.0059176696 0.0024285988 0.0053412018 + 283900 0.0045432449 0.0023469424 0.0045830707 + 284000 0.0040102227 0.0024865387 0.0044603201 + 284100 0.0050210057 0.0025776225 0.0050488987 + 284200 0.0051004709 0.0029262901 0.0054366781 + 284300 0.0041803468 0.0033523499 0.0054098643 + 284400 0.0039511064 0.0026454073 0.0045900925 + 284500 0.005694329 0.001843288 0.0046459656 + 284600 0.0044778905 0.0018996267 0.0041035884 + 284700 0.0033607699 0.0021404735 0.0037946024 + 284800 0.0059371858 0.0019663475 0.0048885561 + 284900 0.005918851 0.0023801318 0.0052933163 + 285000 0.0050347941 0.0029107116 0.0053887743 + 285100 0.0050308917 0.0024212154 0.0048973574 + 285200 0.0046027942 0.0019142655 0.0041797033 + 285300 0.0060195365 0.0014248264 0.004387567 + 285400 0.0041798655 0.0019623022 0.0040195798 + 285500 0.0034978688 0.0019961643 0.0037177716 + 285600 0.0051718708 0.0016050934 0.0041506236 + 285700 0.006089721 0.0017956193 0.0047929039 + 285800 0.0055378442 0.0022742263 0.004999884 + 285900 0.0048483391 0.0023623824 0.0047486743 + 286000 0.0044359438 0.0024537118 0.0046370279 + 286100 0.0063184613 0.0020527595 0.0051626272 + 286200 0.005099011 0.0024050305 0.0049146999 + 286300 0.0051872157 0.0023959675 0.0049490502 + 286400 0.0050673214 0.0021706608 0.004664733 + 286500 0.004882268 0.0021289455 0.0045319368 + 286600 0.0049717609 0.0028283493 0.0052753878 + 286700 0.0036712961 0.0032208088 0.0050277748 + 286800 0.0060405443 0.00314277 0.0061158504 + 286900 0.0054182231 0.0030135494 0.0056803311 + 287000 0.0056516991 0.0026875092 0.0054692048 + 287100 0.0055781843 0.002612159 0.0053576715 + 287200 0.0055546327 0.0026079702 0.005341891 + 287300 0.0054151058 0.0026422114 0.0053074588 + 287400 0.0074576368 0.0023957024 0.0060662581 + 287500 0.0046591262 0.0022842036 0.0045773673 + 287600 0.0067459635 0.0021751278 0.0054954067 + 287700 0.0053785796 0.0025214308 0.0051687004 + 287800 0.0049057385 0.0028654939 0.0052800371 + 287900 0.004176115 0.0028334979 0.0048889295 + 288000 0.0055604985 0.0023412274 0.0050780352 + 288100 0.0037387113 0.0024017251 0.0042418721 + 288200 0.0056404075 0.0023093976 0.0050855357 + 288300 0.0045501538 0.0020671971 0.004306726 + 288400 0.0047281467 0.0019254614 0.004252596 + 288500 0.0052420169 0.0021301947 0.0047102499 + 288600 0.0049071112 0.0023332411 0.0047484599 + 288700 0.0055136404 0.0025692856 0.0052830305 + 288800 0.0041875311 0.002384965 0.0044460154 + 288900 0.0061062174 0.001874287 0.0048796908 + 289000 0.0048718227 0.0018319235 0.0042297737 + 289100 0.0041579011 0.0019319722 0.0039784391 + 289200 0.0053413023 0.0020533006 0.0046822228 + 289300 0.0048838928 0.0020780143 0.0044818053 + 289400 0.0048268538 0.0022827934 0.0046585105 + 289500 0.0052724478 0.0022592847 0.0048543176 + 289600 0.0037200203 0.0024930436 0.0043239912 + 289700 0.0036290274 0.0024109537 0.0041971156 + 289800 0.0033535047 0.0024153024 0.0040658556 + 289900 0.004899033 0.0022573918 0.0046686346 + 290000 0.0050403565 0.0019054861 0.0043862866 + 290100 0.0038143609 0.0021757956 0.0040531764 + 290200 0.0037962203 0.0017233103 0.0035917625 + 290300 0.0043023115 0.001874653 0.0039921969 + 290400 0.006700288 0.0016338544 0.0049316524 + 290500 0.0043624367 0.0019991164 0.0041462532 + 290600 0.0055329172 0.0020720495 0.0047952822 + 290700 0.0046564624 0.0020690296 0.0043608822 + 290800 0.0071000303 0.0020831749 0.005577721 + 290900 0.0041899293 0.002486584 0.0045488148 + 291000 0.0040808743 0.0027040414 0.0047125967 + 291100 0.0057499709 0.0026887317 0.0055187955 + 291200 0.0060481328 0.0028577565 0.0058345719 + 291300 0.0060448485 0.0028322277 0.0058074266 + 291400 0.0047044048 0.0023821025 0.0046975517 + 291500 0.0053481483 0.0020621014 0.0046943931 + 291600 0.0048968518 0.0019609843 0.0043711536 + 291700 0.0041199184 0.0020423124 0.0040700848 + 291800 0.0054915867 0.002335112 0.0050380023 + 291900 0.0055954496 0.0026243121 0.0053783224 + 292000 0.0056636134 0.0027465639 0.0055341236 + 292100 0.0041633477 0.0022289742 0.0042781219 + 292200 0.0059142867 0.0020208495 0.0049317875 + 292300 0.00513185 0.002127913 0.0046537454 + 292400 0.006132201 0.0017922222 0.0048104148 + 292500 0.0044070763 0.0020501831 0.004219291 + 292600 0.0057914118 0.0020830025 0.004933463 + 292700 0.0059532825 0.0020534976 0.0049836289 + 292800 0.0043464484 0.0022990952 0.0044383627 + 292900 0.0057856368 0.0022567445 0.0051043626 + 293000 0.0055726623 0.0020769191 0.0048197139 + 293100 0.0071085723 0.0022425997 0.0057413501 + 293200 0.0060260514 0.0031284991 0.0060944463 + 293300 0.0058306015 0.0033541554 0.0062239045 + 293400 0.0066032341 0.002950522 0.0062005513 + 293500 0.0055403059 0.0030218491 0.0057487185 + 293600 0.0039118003 0.0029699761 0.0048953153 + 293700 0.0064445288 0.0026244721 0.0057963886 + 293800 0.0072227602 0.0026925692 0.0062475215 + 293900 0.0056668148 0.0028094831 0.0055986186 + 294000 0.0044665037 0.0025095641 0.0047079213 + 294100 0.0043348479 0.0022007731 0.0043343311 + 294200 0.0052094433 0.0020390474 0.0046030702 + 294300 0.0060089519 0.0021158672 0.0050733982 + 294400 0.0049545533 0.002111353 0.0045499222 + 294500 0.0045082194 0.0023376689 0.0045565581 + 294600 0.0053350556 0.0022611612 0.0048870089 + 294700 0.0057154941 0.0020239705 0.0048370652 + 294800 0.0056675927 0.0021965197 0.004986038 + 294900 0.0049711373 0.002200315 0.0046470466 + 295000 0.0048296089 0.0022296148 0.0046066879 + 295100 0.0054522483 0.0024273575 0.0051108859 + 295200 0.0059775676 0.002159578 0.0051016621 + 295300 0.0037086401 0.0021293417 0.003954688 + 295400 0.0042428414 0.0019853384 0.004073612 + 295500 0.0044552027 0.00226977 0.0044625651 + 295600 0.0047171324 0.0025499174 0.004871631 + 295700 0.006141779 0.0022932063 0.0053161131 + 295800 0.0063097454 0.0019563074 0.0050618852 + 295900 0.0039351491 0.0023714684 0.0043082996 + 296000 0.0044891937 0.0024176892 0.0046272142 + 296100 0.0046578385 0.0025202436 0.0048127735 + 296200 0.0071997951 0.0027672246 0.0063108738 + 296300 0.0050790967 0.0028790672 0.0053789351 + 296400 0.0043131336 0.0022457621 0.0043686325 + 296500 0.0064163036 0.0022129579 0.0053709823 + 296600 0.0058362679 0.0021762536 0.0050487917 + 296700 0.0061486219 0.0023235059 0.0053497807 + 296800 0.0056663741 0.0026256777 0.0054145962 + 296900 0.0052070286 0.0023150718 0.0048779061 + 297000 0.0064119802 0.0022116379 0.0053675343 + 297100 0.0048454019 0.0023376146 0.0047224608 + 297200 0.0051476995 0.0024472342 0.0049808675 + 297300 0.0042355431 0.0026640543 0.0047487356 + 297400 0.0059068707 0.0027115783 0.0056188662 + 297500 0.0049975085 0.0026797758 0.005139487 + 297600 0.006256412 0.0030559719 0.0061352997 + 297700 0.0043550938 0.0029716451 0.0051151678 + 297800 0.0062387598 0.002836972 0.0059076116 + 297900 0.0061965858 0.0026240692 0.0056739512 + 298000 0.0038181371 0.002708795 0.0045880343 + 298100 0.0049090499 0.0023853755 0.0048015485 + 298200 0.0041383968 0.0021808958 0.004217763 + 298300 0.0037259549 0.0021775113 0.0040113797 + 298400 0.0049120211 0.0021294929 0.0045471283 + 298500 0.0046831496 0.0017965247 0.0041015124 + 298600 0.0047943649 0.0017142088 0.0040739353 + 298700 0.0055976617 0.0019625096 0.0047176087 + 298800 0.0051504533 0.0020504707 0.0045854594 + 298900 0.0057271189 0.0020448872 0.0048637036 + 299000 0.0047256555 0.0020833165 0.004409225 + 299100 0.0058824059 0.0018254253 0.0047206719 + 299200 0.0037472808 0.0018794951 0.0037238599 + 299300 0.0064574708 0.0019687146 0.005147001 + 299400 0.0050231423 0.0019767519 0.0044490797 + 299500 0.0063358131 0.0020033075 0.0051217155 + 299600 0.0052849648 0.0019924505 0.0045936441 + 299700 0.006421546 0.0020709075 0.0052315122 + 299800 0.0043568251 0.0020909698 0.0042353446 + 299900 0.0038241524 0.0022098234 0.0040920234 + 300000 0.0050877263 0.0023828085 0.0048869238 + 300100 0.0055949947 0.0026037288 0.0053575152 + 300200 0.0051542361 0.0022095345 0.0047463851 + 300300 0.0042019678 0.002476749 0.0045449051 + 300400 0.0039588075 0.0023191484 0.004267624 + 300500 0.0044932282 0.0021236546 0.0043351653 + 300600 0.0043580006 0.002274304 0.0044192575 + 300700 0.0066011597 0.0024061227 0.005655131 + 300800 0.0046364171 0.0024810001 0.0047629866 + 300900 0.0049303392 0.0023185448 0.0047451961 + 301000 0.004542763 0.0019968758 0.0042327669 + 301100 0.005291117 0.0017902761 0.0043944977 + 301200 0.0048559105 0.0018952059 0.0042852243 + 301300 0.0050116406 0.0021512483 0.0046179152 + 301400 0.0051376127 0.0020069282 0.004535597 + 301500 0.0046335404 0.0017361701 0.0040167408 + 301600 0.0047853856 0.0016964198 0.0040517267 + 301700 0.0043274036 0.0020556725 0.0041855664 + 301800 0.0035294959 0.0020547535 0.0037919273 + 301900 0.0068633601 0.0017763236 0.0051543837 + 302000 0.0030253886 0.0021111309 0.0036001893 + 302100 0.0061660107 0.0023596328 0.0053944662 + 302200 0.005387757 0.0026259514 0.0052777381 + 302300 0.0053280542 0.0020563705 0.0046787722 + 302400 0.0045577247 0.0022165395 0.0044597947 + 302500 0.0050421853 0.002539331 0.0050210315 + 302600 0.0041698153 0.0027944637 0.0048467946 + 302700 0.0046289657 0.0024697097 0.0047480288 + 302800 0.0049888272 0.0021658562 0.0046212946 + 302900 0.0043496517 0.0027203352 0.0048611794 + 303000 0.0048416624 0.0028570573 0.005240063 + 303100 0.0042699425 0.0025930338 0.0046946461 + 303200 0.0043969234 0.0020970145 0.0042611252 + 303300 0.0039597557 0.0017369248 0.003685867 + 303400 0.0048979443 0.0017071219 0.0041178289 + 303500 0.0048293406 0.0018950278 0.0042719688 + 303600 0.004307733 0.0019953642 0.0041155765 + 303700 0.004297622 0.0024568836 0.0045721195 + 303800 0.0042620239 0.0025459412 0.0046436561 + 303900 0.0041628853 0.0021400477 0.0041889678 + 304000 0.0051901739 0.0015509767 0.0041055154 + 304100 0.0045696459 0.0016978458 0.0039469684 + 304200 0.0036762216 0.0023674445 0.0041768349 + 304300 0.0045938445 0.0022864155 0.0045474483 + 304400 0.0048347706 0.002441079 0.0048206927 + 304500 0.004841752 0.0024822243 0.0048652741 + 304600 0.0033170164 0.0021655033 0.0037980974 + 304700 0.0043973833 0.0018748501 0.0040391872 + 304800 0.0047630254 0.0017818813 0.0041261829 + 304900 0.0056284957 0.0019196916 0.0046899668 + 305000 0.0053338011 0.0023417643 0.0049669945 + 305100 0.0055688311 0.0023636855 0.0051045946 + 305200 0.0063662198 0.0023452216 0.0054785954 + 305300 0.0059935567 0.0026367847 0.0055867384 + 305400 0.0033035103 0.002950183 0.0045761295 + 305500 0.0041495424 0.0027017899 0.0047441428 + 305600 0.0041828845 0.0026358116 0.0046945751 + 305700 0.0045792404 0.0022386206 0.0044924655 + 305800 0.0045192668 0.0022401023 0.0044644289 + 305900 0.0030179347 0.0025930679 0.0040784576 + 306000 0.0063316304 0.0025821997 0.0056985491 + 306100 0.0043898523 0.0027057962 0.0048664266 + 306200 0.0054384885 0.0024500126 0.0051267687 + 306300 0.0057237205 0.0018711084 0.0046882521 + 306400 0.0045052176 0.0019313204 0.0041487322 + 306500 0.0066178757 0.0023495259 0.0056067616 + 306600 0.0042655899 0.0024501066 0.0045495767 + 306700 0.0049793155 0.0020314932 0.0044822501 + 306800 0.0051383572 0.001448726 0.0039777612 + 306900 0.0034008114 0.0016509757 0.0033248126 + 307000 0.0044492934 0.0018402755 0.0040301621 + 307100 0.0040087196 0.0020185933 0.003991635 + 307200 0.0061402075 0.0018685076 0.004890641 + 307300 0.0046424429 0.0023319151 0.0046168674 + 307400 0.0044901318 0.0026460383 0.004856025 + 307500 0.0064256922 0.0024289335 0.0055915788 + 307600 0.006363528 0.0020303869 0.0051624358 + 307700 0.00551043 0.0018244231 0.0045365879 + 307800 0.0063290613 0.0023455805 0.0054606653 + 307900 0.0048031405 0.002790325 0.0051543707 + 308000 0.0043540539 0.0024212857 0.0045642966 + 308100 0.0044062169 0.0024033531 0.004572038 + 308200 0.0033854346 0.0026575497 0.0043238183 + 308300 0.0052398583 0.0025601051 0.0051390978 + 308400 0.0050621145 0.0026309937 0.0051225032 + 308500 0.004897464 0.0025213038 0.0049317743 + 308600 0.0054254659 0.002289802 0.0049601486 + 308700 0.0041624852 0.0023842388 0.004432962 + 308800 0.0038172406 0.0021722387 0.0040510368 + 308900 0.0043219295 0.0024504291 0.0045776287 + 309000 0.0037379847 0.0024222513 0.0042620407 + 309100 0.0056667484 0.0022771559 0.0050662586 + 309200 0.0049347804 0.0027918244 0.0052206616 + 309300 0.0047666107 0.0030118165 0.0053578828 + 309400 0.0054099852 0.0027303473 0.0053930744 + 309500 0.0044969047 0.0024562014 0.0046695217 + 309600 0.0054114589 0.002285602 0.0049490544 + 309700 0.0052115065 0.0024276711 0.0049927095 + 309800 0.003920764 0.0028000802 0.0047298312 + 309900 0.004430456 0.0025729224 0.0047535374 + 310000 0.0034037257 0.0021421198 0.003817391 + 310100 0.0037533032 0.0019081211 0.00375545 + 310200 0.0041147163 0.0021447348 0.0041699467 + 310300 0.0061358661 0.0020328314 0.005052828 + 310400 0.0073396599 0.001929583 0.0055420718 + 310500 0.0039534213 0.0023896367 0.0043354613 + 310600 0.0049657573 0.0025892376 0.0050333213 + 310700 0.0060803932 0.0024350177 0.0054277113 + 310800 0.0043081063 0.002663761 0.0047841571 + 310900 0.0063134605 0.0027828432 0.0058902495 + 311000 0.0043610297 0.0024267644 0.0045732087 + 311100 0.0066050831 0.0022425933 0.0054935326 + 311200 0.0066021127 0.0022356768 0.0054851542 + 311300 0.0047084248 0.0027619117 0.0050793395 + 311400 0.0046389742 0.0025079931 0.0047912382 + 311500 0.0031622451 0.0026945803 0.0042509978 + 311600 0.0054517843 0.0025155622 0.0051988623 + 311700 0.0053881383 0.0031895376 0.0058415119 + 311800 0.0060914508 0.0031564835 0.0061546195 + 311900 0.0062037131 0.0029239271 0.0059773171 + 312000 0.0057086156 0.0024698676 0.0052795768 + 312100 0.0048083843 0.0020722213 0.0044388479 + 312200 0.0051205344 0.0017145159 0.004234779 + 312300 0.0055713671 0.0020349418 0.0047770991 + 312400 0.0052638972 0.0024027484 0.0049935728 + 312500 0.0044872956 0.0023881514 0.0045967422 + 312600 0.0059714122 0.0021044295 0.0050434839 + 312700 0.0038477186 0.0024468248 0.0043406238 + 312800 0.0043416283 0.0027561858 0.004893081 + 312900 0.0040034086 0.0027926296 0.0047630573 + 313000 0.0041661203 0.0031291416 0.0051796539 + 313100 0.0055707833 0.0033573682 0.0060992381 + 313200 0.006533098 0.0027863831 0.0060018923 + 313300 0.0055834545 0.0020262082 0.0047743147 + 313400 0.0051034824 0.0019891572 0.0045010275 + 313500 0.0046922155 0.0019522172 0.0042616671 + 313600 0.0056864953 0.0021224279 0.0049212498 + 313700 0.0045755883 0.0019022253 0.0041542727 + 313800 0.0042415467 0.0017742298 0.0038618661 + 313900 0.0044090877 0.0018380443 0.0040081422 + 314000 0.004186704 0.0017837892 0.0038444326 + 314100 0.0076619885 0.0018297918 0.0056009268 + 314200 0.0065673577 0.0020146498 0.0052470212 + 314300 0.0061985942 0.002093505 0.0051443756 + 314400 0.0048993868 0.0018755836 0.0042870005 + 314500 0.0046955992 0.0016820375 0.0039931528 + 314600 0.0051369595 0.0016648187 0.004193166 + 314700 0.0060995719 0.0019535303 0.0049556634 + 314800 0.0048729345 0.0021285484 0.0045269459 + 314900 0.0044415989 0.0024654572 0.0046515566 + 315000 0.0047359747 0.0023122933 0.0046432808 + 315100 0.0050321094 0.0022380399 0.0047147812 + 315200 0.0038596322 0.0024031252 0.0043027879 + 315300 0.0082266899 0.0020531972 0.0061022712 + 315400 0.003180981 0.0026759524 0.0042415914 + 315500 0.0038791169 0.0027338557 0.0046431086 + 315600 0.0047490612 0.0025893627 0.0049267912 + 315700 0.0037016083 0.0025357777 0.004357663 + 315800 0.0050198048 0.0025375312 0.0050082163 + 315900 0.0048427155 0.0026820179 0.0050655419 + 316000 0.0044430825 0.002273303 0.0044601326 + 316100 0.004869985 0.0020010715 0.0043980173 + 316200 0.0037926404 0.0019222603 0.0037889505 + 316300 0.0037302168 0.0020680218 0.0039039878 + 316400 0.0067144773 0.001754487 0.0050592688 + 316500 0.0048562584 0.0021567765 0.0045469662 + 316600 0.0053173881 0.002486226 0.0051033779 + 316700 0.0050490097 0.0024481281 0.0049331876 + 316800 0.0047838599 0.0021662372 0.0045207932 + 316900 0.0051096434 0.0018025575 0.0043174601 + 317000 0.0046604458 0.0014142955 0.0037081087 + 317100 0.0046468917 0.0017572363 0.0040443783 + 317200 0.0046461758 0.0020307217 0.0043175114 + 317300 0.0042494802 0.0025274524 0.0046189935 + 317400 0.0049161581 0.00274476 0.0051644316 + 317500 0.004510538 0.0028351689 0.0050551994 + 317600 0.0035784648 0.0025288173 0.0042900929 + 317700 0.0050968232 0.0020476819 0.0045562746 + 317800 0.0048856452 0.0022254806 0.0046301341 + 317900 0.0065821567 0.0021698855 0.0054095408 + 318000 0.0045994376 0.0026543575 0.0049181432 + 318100 0.005647355 0.0029254513 0.0057050088 + 318200 0.0056003494 0.0030658225 0.0058222445 + 318300 0.0059744746 0.0030123288 0.0059528905 + 318400 0.0061899743 0.0028016736 0.0058483016 + 318500 0.0055990803 0.0028201688 0.0055759662 + 318600 0.0073876568 0.0021660664 0.0058021787 + 318700 0.0039737748 0.0026751665 0.0046310087 + 318800 0.0044129935 0.0027530534 0.0049250736 + 318900 0.0035481316 0.0032303001 0.0049766462 + 319000 0.0050778747 0.0031017347 0.0056010012 + 319100 0.0058117666 0.0024139919 0.0052744707 + 319200 0.0044064272 0.0028188262 0.0049876146 + 319300 0.0042073449 0.0024653575 0.0045361601 + 319400 0.0043908913 0.0021085314 0.0042696733 + 319500 0.003612737 0.0019352055 0.0037133494 + 319600 0.0035167444 0.0018392523 0.0035701499 + 319700 0.0035214825 0.0020374163 0.003770646 + 319800 0.0046569229 0.0023280946 0.0046201739 + 319900 0.0051299725 0.0025998089 0.0051247172 + 320000 0.0047614553 0.002521971 0.0048654998 + 320100 0.0047756501 0.002555655 0.0049061703 + 320200 0.0044812644 0.0026952903 0.0049009126 + 320300 0.0053129652 0.0028476172 0.0054625923 + 320400 0.0057140187 0.0025845147 0.0053968833 + 320500 0.0055579308 0.0019888275 0.0047243716 + 320600 0.0049282338 0.0023612727 0.0047868878 + 320700 0.0027523272 0.0026141655 0.0039688265 + 320800 0.0035113504 0.0024721848 0.0042004276 + 320900 0.0061723606 0.0024061905 0.0054441493 + 321000 0.0052538765 0.0025222783 0.0051081707 + 321100 0.0048574928 0.0027162489 0.0051070461 + 321200 0.0045901299 0.003070103 0.0053293075 + 321300 0.0062815553 0.003174217 0.00626592 + 321400 0.0068438625 0.003277907 0.0066463706 + 321500 0.0048596778 0.0030341535 0.0054260261 + 321600 0.0062151134 0.0030530562 0.0061120573 + 321700 0.0049686115 0.0035569926 0.006002481 + 321800 0.0057924155 0.0030888062 0.0059397607 + 321900 0.0045203019 0.0026922261 0.0049170622 + 322000 0.0060474503 0.0025908964 0.0055673758 + 322100 0.0049976658 0.0023956836 0.0048554722 + 322200 0.005529207 0.0019387862 0.0046601928 + 322300 0.0045219126 0.0020185655 0.0042441944 + 322400 0.0063986264 0.0022373029 0.0053866268 + 322500 0.0052143021 0.0022473441 0.0048137584 + 322600 0.0048151731 0.0022208701 0.0045908381 + 322700 0.0065976247 0.0023453208 0.0055925892 + 322800 0.0050594333 0.0024095215 0.0048997113 + 322900 0.0050661415 0.0023195699 0.0048130614 + 323000 0.0053727888 0.002369554 0.0050139735 + 323100 0.0065635308 0.0021823146 0.0054128024 + 323200 0.0058578296 0.0025005647 0.0053837152 + 323300 0.0023420641 0.0031890471 0.0043417818 + 323400 0.0059300115 0.0029678731 0.0058865506 + 323500 0.0054656754 0.0026135782 0.0053037153 + 323600 0.0049853207 0.0025802017 0.0050339142 + 323700 0.0039580198 0.0025862689 0.0045343568 + 323800 0.0062340757 0.0025661319 0.005634466 + 323900 0.0063222523 0.0028022616 0.0059139952 + 324000 0.0056103549 0.0028443509 0.0056056974 + 324100 0.0044755463 0.0027213016 0.0049241095 + 324200 0.0052108422 0.0021739587 0.0047386701 + 324300 0.0051489529 0.0023656516 0.0048999018 + 324400 0.0063955083 0.0022451234 0.0053929127 + 324500 0.0059078055 0.0023547615 0.0052625096 + 324600 0.0052741768 0.0026246296 0.0052205135 + 324700 0.0048073511 0.0023617383 0.0047278564 + 324800 0.0044543462 0.0024111153 0.0046034888 + 324900 0.0043568185 0.0024311096 0.0045754812 + 325000 0.0048427607 0.002278368 0.0046619143 + 325100 0.005611944 0.002268386 0.0050305147 + 325200 0.0056066709 0.0025565541 0.0053160875 + 325300 0.0052033355 0.002196078 0.0047570947 + 325400 0.0053136781 0.0018134539 0.0044287799 + 325500 0.0040255952 0.0023465549 0.0043279026 + 325600 0.0056330541 0.0019642634 0.0047367822 + 325700 0.0048215366 0.0016525164 0.0040256164 + 325800 0.0033960699 0.0018311046 0.0035026078 + 325900 0.0056530683 0.0020400663 0.0048224358 + 326000 0.0053621383 0.0023744641 0.0050136415 + 326100 0.0051029142 0.0022124474 0.004724038 + 326200 0.0045246833 0.0021126924 0.004339685 + 326300 0.0055334556 0.0021766027 0.0049001004 + 326400 0.004375118 0.002095216 0.0042485944 + 326500 0.0038348452 0.0020385025 0.0039259654 + 326600 0.0048607022 0.0017399901 0.004132367 + 326700 0.0050259246 0.0017263435 0.0042000407 + 326800 0.0047484659 0.0019122314 0.0042493669 + 326900 0.0044892457 0.0022371185 0.0044466691 + 327000 0.0052455045 0.0023392121 0.0049209838 + 327100 0.0045307383 0.0025215602 0.004751533 + 327200 0.0075367233 0.0025027662 0.0062122472 + 327300 0.0057807234 0.0030597491 0.0059049489 + 327400 0.0052337359 0.0030405807 0.0056165601 + 327500 0.0040433487 0.0026701575 0.0046602432 + 327600 0.0050409182 0.0025710618 0.0050521387 + 327700 0.0051837315 0.0025892793 0.0051406471 + 327800 0.004559664 0.0026371517 0.0048813614 + 327900 0.0041903046 0.0024764479 0.0045388635 + 328000 0.006036767 0.0021991582 0.0051703794 + 328100 0.0058355661 0.0024213867 0.0052935794 + 328200 0.0046557133 0.0022493503 0.0045408342 + 328300 0.0050284577 0.0020667015 0.0045416455 + 328400 0.0064661638 0.0023281587 0.0055107238 + 328500 0.0054592004 0.0026281844 0.0053151347 + 328600 0.0057328037 0.0027028114 0.0055244258 + 328700 0.0052120141 0.0028003225 0.0053656106 + 328800 0.0051565046 0.0028444497 0.0053824168 + 328900 0.0047588075 0.0028244208 0.0051666463 + 329000 0.0054260535 0.0030078858 0.0056785215 + 329100 0.0055192671 0.003015516 0.0057320303 + 329200 0.0053222785 0.0030536673 0.0056732263 + 329300 0.0057604214 0.0024746381 0.0053098455 + 329400 0.0053261764 0.0020666286 0.0046881061 + 329500 0.0029056155 0.0021124803 0.0035425879 + 329600 0.0055527804 0.0020353885 0.0047683976 + 329700 0.0062681711 0.0016034126 0.0046885281 + 329800 0.0051299621 0.0016826418 0.004207545 + 329900 0.0052347673 0.0019604342 0.0045369213 + 330000 0.0031277183 0.0025373046 0.0040767284 + 330100 0.0050956873 0.0022314481 0.0047394817 + 330200 0.0046240859 0.002493943 0.0047698603 + 330300 0.0051878959 0.0023932902 0.0049467077 + 330400 0.0059532315 0.0022028468 0.0051329529 + 330500 0.0048644614 0.0021978874 0.0045921146 + 330600 0.0058899435 0.0016749699 0.0045739265 + 330700 0.0047595022 0.0018933465 0.004235914 + 330800 0.004027909 0.0022445988 0.0042270853 + 330900 0.0047129772 0.0021104314 0.0044300999 + 331000 0.0034661128 0.0019528164 0.0036587937 + 331100 0.0040928543 0.0018828694 0.0038973211 + 331200 0.0048374832 0.0021225164 0.0045034652 + 331300 0.0055376301 0.002092528 0.0048180803 + 331400 0.0068219473 0.002104335 0.0054620122 + 331500 0.0064906914 0.0019441259 0.005138763 + 331600 0.0048569466 0.0019508262 0.0043413547 + 331700 0.0043494705 0.0023500908 0.0044908458 + 331800 0.0058385821 0.002849531 0.0057232081 + 331900 0.004379027 0.0037254644 0.0058807667 + 332000 0.0044210789 0.0034383169 0.0056143167 + 332100 0.0069856144 0.0022357875 0.0056740196 + 332200 0.004117182 0.002127037 0.0041534626 + 332300 0.0049098179 0.0019882428 0.0044047938 + 332400 0.0038269913 0.001898975 0.0037825723 + 332500 0.0045702698 0.00243781 0.0046872397 + 332600 0.0050348909 0.0023721101 0.0048502205 + 332700 0.0053653622 0.0020552574 0.0046960216 + 332800 0.0057681274 0.0023626353 0.0052016355 + 332900 0.0054042007 0.0024708062 0.0051306862 + 333000 0.0029103313 0.0023991226 0.0038315512 + 333100 0.0058431434 0.0018772889 0.004753211 + 333200 0.0052238336 0.0023503356 0.0049214412 + 333300 0.0046082591 0.0022904782 0.0045586057 + 333400 0.0037606014 0.0025509069 0.0044018279 + 333500 0.0057126124 0.0024241106 0.005235787 + 333600 0.00495877 0.0023256984 0.004766343 + 333700 0.0040516365 0.0025522257 0.0045463905 + 333800 0.0046056571 0.0024299347 0.0046967816 + 333900 0.0059936976 0.0025326404 0.0054826634 + 334000 0.0050090317 0.0026975778 0.0051629606 + 334100 0.0048224043 0.0023177325 0.0046912596 + 334200 0.0047465595 0.0022584313 0.0045946285 + 334300 0.0047383602 0.0020960949 0.0044282565 + 334400 0.00447418 0.0022295434 0.0044316788 + 334500 0.0046976152 0.0029920801 0.0053041876 + 334600 0.0095602281 0.0032108559 0.0079162807 + 334700 0.0060529118 0.0031333634 0.0061125309 + 334800 0.0054383168 0.0029627024 0.005639374 + 334900 0.0048297419 0.0030378469 0.0054149854 + 335000 0.0036255048 0.002854178 0.0046386061 + 335100 0.0049068023 0.0027093379 0.0051244046 + 335200 0.0037893703 0.0025810607 0.0044461415 + 335300 0.0048677778 0.0025528082 0.0049486676 + 335400 0.0048052576 0.0026368991 0.0050019869 + 335500 0.0061973496 0.0021259211 0.0051761791 + 335600 0.0044307101 0.0020506005 0.0042313406 + 335700 0.0049117556 0.0022228446 0.0046403493 + 335800 0.0054868214 0.0026098623 0.0053104072 + 335900 0.0039821512 0.0029354361 0.0048954012 + 336000 0.0043027398 0.003056659 0.0051744138 + 336100 0.0045869046 0.0029231263 0.0051807434 + 336200 0.0053314878 0.0026295653 0.005253657 + 336300 0.0042049316 0.0027406651 0.0048102799 + 336400 0.0046563857 0.0030293837 0.0053211985 + 336500 0.0047106991 0.0026620879 0.0049806351 + 336600 0.0057534888 0.0022922521 0.0051240474 + 336700 0.0051778049 0.0023354013 0.0048838522 + 336800 0.0055912129 0.0021341757 0.0048861008 + 336900 0.0047996664 0.0021274597 0.0044897955 + 337000 0.0044709326 0.0021509322 0.0043514694 + 337100 0.0043332075 0.0022204293 0.0043531799 + 337200 0.0035257608 0.002159089 0.0038944244 + 337300 0.0033144572 0.002168649 0.0037999834 + 337400 0.0047072305 0.0021443762 0.0044612162 + 337500 0.0067050056 0.0022543778 0.0055544978 + 337600 0.0047521822 0.0026662701 0.0050052348 + 337700 0.0034348624 0.0031406063 0.0048312026 + 337800 0.0054790001 0.0028961126 0.005592808 + 337900 0.0056778259 0.0029107969 0.0057053518 + 338000 0.0039245661 0.0027504317 0.004682054 + 338100 0.0046351085 0.0025734044 0.0048547468 + 338200 0.0054107495 0.002748859 0.0054119623 + 338300 0.0053390189 0.0029753608 0.0056031592 + 338400 0.00509162 0.0029896246 0.0054956564 + 338500 0.004864577 0.0023970071 0.0047912911 + 338600 0.0062691242 0.0019280978 0.0050136824 + 338700 0.004488453 0.0022345275 0.004443688 + 338800 0.0040229278 0.0027390889 0.0047191237 + 338900 0.0041779137 0.0027617773 0.0048180942 + 339000 0.0038402221 0.0022736811 0.0041637904 + 339100 0.0059319623 0.0020012805 0.0049209182 + 339200 0.0047081709 0.0024369507 0.0047542536 + 339300 0.004831549 0.0021615809 0.004539609 + 339400 0.0046498863 0.0024432647 0.0047318806 + 339500 0.0054773139 0.0024905582 0.0051864236 + 339600 0.0048419023 0.0025736213 0.0049567451 + 339700 0.0050719427 0.0023708671 0.0048672138 + 339800 0.0039626242 0.0026022442 0.0045525983 + 339900 0.0053190177 0.002840043 0.005457997 + 340000 0.0048975347 0.0029617319 0.0053722372 + 340100 0.0047643786 0.0029535907 0.0052985583 + 340200 0.0047083991 0.0025721134 0.0048895286 + 340300 0.0044987947 0.0024667346 0.0046809852 + 340400 0.0056653718 0.0024981086 0.0052865338 + 340500 0.0048766463 0.002449461 0.0048496853 + 340600 0.0049467875 0.002619603 0.00505435 + 340700 0.0044054964 0.0025233414 0.0046916716 + 340800 0.0056488889 0.0018868629 0.0046671754 + 340900 0.005264977 0.001848425 0.0044397808 + 341000 0.0047877173 0.0021560494 0.004512504 + 341100 0.0048495838 0.0027207665 0.005107671 + 341200 0.0056968798 0.0026844369 0.0054883699 + 341300 0.0045795437 0.0021707802 0.0044247744 + 341400 0.0045206116 0.0016889281 0.0039139167 + 341500 0.0055280808 0.0016024692 0.0043233215 + 341600 0.0044345839 0.0021855378 0.0043681846 + 341700 0.003608507 0.0026911594 0.0044672215 + 341800 0.004151767 0.0022562679 0.0042997157 + 341900 0.0047769889 0.001942429 0.0042936032 + 342000 0.0041524731 0.0021296657 0.004173461 + 342100 0.0028647543 0.0021059027 0.0035158989 + 342200 0.0052484293 0.0019954016 0.0045786129 + 342300 0.005968695 0.0021804442 0.0051181613 + 342400 0.0042671517 0.0022677725 0.0043680112 + 342500 0.0040885731 0.0017680067 0.0037803513 + 342600 0.0051378997 0.0014495201 0.0039783301 + 342700 0.0051843409 0.0015544321 0.0041060999 + 342800 0.0072454759 0.0019399491 0.0055060818 + 342900 0.0057104558 0.0021426528 0.0049532678 + 343000 0.0049272705 0.0027331706 0.0051583115 + 343100 0.0051642727 0.0029613203 0.0055031108 + 343200 0.0048997081 0.0027328761 0.0051444512 + 343300 0.0049256364 0.0023573651 0.0047817017 + 343400 0.0059173084 0.0023719069 0.0052843321 + 343500 0.0052049325 0.0022036854 0.0047654882 + 343600 0.0038260344 0.0023350414 0.0042181677 + 343700 0.0048167846 0.001950103 0.0043208642 + 343800 0.0049062574 0.0019470735 0.0043618721 + 343900 0.0058081465 0.0019419511 0.0048006482 + 344000 0.0044867913 0.0023470635 0.004555406 + 344100 0.0052542353 0.0023904809 0.0049765498 + 344200 0.0052471153 0.002341275 0.0049238395 + 344300 0.0049815192 0.0024256501 0.0048774916 + 344400 0.0068000025 0.0027064165 0.0060532927 + 344500 0.005022624 0.0030125909 0.0054846637 + 344600 0.0041423393 0.0025111974 0.0045500051 + 344700 0.0059137787 0.0021741884 0.0050848764 + 344800 0.0050459356 0.0019761752 0.0044597217 + 344900 0.0049236625 0.0022010453 0.0046244104 + 345000 0.0056778909 0.0020909775 0.0048855644 + 345100 0.0035307952 0.0017911028 0.003528916 + 345200 0.0035490531 0.0015365913 0.0032833909 + 345300 0.0031444625 0.0018936676 0.0034413327 + 345400 0.0034264023 0.0020222863 0.0037087186 + 345500 0.0037035799 0.0018916302 0.003714486 + 345600 0.0053211105 0.0020093516 0.0046283357 + 345700 0.0046483308 0.0018926229 0.0041804732 + 345800 0.0050995306 0.0017747194 0.0042846446 + 345900 0.0051391467 0.0018501831 0.0043796069 + 346000 0.0067484008 0.0017546441 0.0050761226 + 346100 0.0054252797 0.0024375968 0.0051078516 + 346200 0.0065942687 0.0029091755 0.0061547921 + 346300 0.0048100146 0.0025522466 0.0049196757 + 346400 0.0076446683 0.0021572703 0.0059198805 + 346500 0.0049077262 0.002161338 0.0045768595 + 346600 0.005448304 0.0021385044 0.0048200915 + 346700 0.004623322 0.0024720809 0.0047476222 + 346800 0.0043105114 0.0024128643 0.0045344441 + 346900 0.0043853963 0.0021908367 0.0043492739 + 347000 0.0050320419 0.0019562119 0.0044329201 + 347100 0.0059712453 0.0022186209 0.0051575932 + 347200 0.0044387626 0.0020556764 0.0042403799 + 347300 0.0060734002 0.0017531989 0.0047424506 + 347400 0.0051663533 0.0017929854 0.0043357999 + 347500 0.005894556 0.0018061399 0.0047073667 + 347600 0.0050329228 0.0016944753 0.004171617 + 347700 0.0054376242 0.0018751541 0.0045514848 + 347800 0.0039536921 0.002461334 0.0044072918 + 347900 0.0048609338 0.0024695234 0.0048620143 + 348000 0.0040711025 0.0026495435 0.0046532893 + 348100 0.0060186902 0.0024433118 0.0054056359 + 348200 0.0048265383 0.0022791081 0.0046546699 + 348300 0.0049066698 0.0019600822 0.0043750838 + 348400 0.0062615707 0.0021468968 0.0052287636 + 348500 0.0045795801 0.0028951452 0.0051491573 + 348600 0.0070489264 0.0028821057 0.0063514991 + 348700 0.0064167452 0.0028128891 0.0059711309 + 348800 0.0048404525 0.0036066777 0.005989088 + 348900 0.0042652747 0.0029956784 0.0050949933 + 349000 0.005152289 0.0021492665 0.0046851587 + 349100 0.0057726924 0.0021469576 0.0049882047 + 349200 0.0054107211 0.0026438918 0.0053069811 + 349300 0.005509818 0.0030374773 0.0057493408 + 349400 0.0049953139 0.003316595 0.0057752261 + 349500 0.0044357097 0.0030711644 0.0052543653 + 349600 0.0040615328 0.0022614423 0.004260478 + 349700 0.0061174351 0.0022995857 0.0053105107 + 349800 0.0051431454 0.0023036269 0.0048350188 + 349900 0.0039849913 0.0022545186 0.0042158815 + 350000 0.0069908919 0.0018332833 0.0052741129 + 350100 0.0061633262 0.0020781743 0.0051116864 + 350200 0.0048655639 0.0025683568 0.0049631266 + 350300 0.0051047733 0.0027938643 0.0053063699 + 350400 0.0048522167 0.0032151405 0.0056033409 + 350500 0.0047346071 0.0029305422 0.0052608567 + 350600 0.0072529494 0.0026251373 0.0061949483 + 350700 0.0060320232 0.0030161162 0.0059850026 + 350800 0.0064383866 0.0025701901 0.0057390835 + 350900 0.0055084542 0.0024246424 0.0051358347 + 351000 0.0040852459 0.0024112771 0.004421984 + 351100 0.0057153177 0.0021696598 0.0049826678 + 351200 0.0056691159 0.0024704788 0.0052607468 + 351300 0.004932526 0.0027125187 0.0051402463 + 351400 0.0065659099 0.0029859348 0.0062175936 + 351500 0.0049921463 0.0029548393 0.0054119113 + 351600 0.0058040193 0.0027070124 0.0055636782 + 351700 0.0059135131 0.0025527873 0.0054633445 + 351800 0.0037511056 0.002248325 0.0040945723 + 351900 0.0043618542 0.0018848968 0.0040317469 + 352000 0.0062789706 0.0019466299 0.0050370608 + 352100 0.0043694042 0.0027682395 0.0049188056 + 352200 0.0048511168 0.0030408162 0.0054284753 + 352300 0.0075216408 0.002495528 0.0061975856 + 352400 0.0049722096 0.0022966542 0.0047439137 + 352500 0.0056997896 0.0024724636 0.0052778287 + 352600 0.0041041173 0.0027577143 0.0047777095 + 352700 0.0049629672 0.0025352942 0.0049780046 + 352800 0.0050731903 0.0023089576 0.0048059185 + 352900 0.0046683112 0.0024820004 0.0047796848 + 353000 0.0047817848 0.0023511224 0.0047046572 + 353100 0.0062691888 0.0023922718 0.0054778882 + 353200 0.0042591318 0.0025672153 0.0046635068 + 353300 0.0049174096 0.0022859234 0.0047062109 + 353400 0.0064927484 0.0020531898 0.0052488394 + 353500 0.0051046722 0.0025204903 0.0050329461 + 353600 0.004026848 0.0031766428 0.005158607 + 353700 0.004556338 0.0033724672 0.0056150398 + 353800 0.0041610099 0.0026598791 0.0047078762 + 353900 0.0063368989 0.0019715779 0.0050905204 + 354000 0.0039447345 0.0025368843 0.0044784333 + 354100 0.0063793831 0.002335157 0.0054750096 + 354200 0.0046321709 0.0029898342 0.0052697308 + 354300 0.0040257457 0.002677269 0.0046586907 + 354400 0.0047729898 0.0020506704 0.0043998764 + 354500 0.0049241785 0.0018554385 0.0042790577 + 354600 0.0063233638 0.0017479398 0.0048602205 + 354700 0.0070308894 0.0017115622 0.0051720781 + 354800 0.0058603507 0.0020935265 0.0049779178 + 354900 0.0056541045 0.0026087668 0.0053916464 + 355000 0.0047183346 0.0030901189 0.0054124242 + 355100 0.0048192671 0.0030072783 0.0053792613 + 355200 0.0061848635 0.0025923697 0.0056364822 + 355300 0.0055835174 0.0023952385 0.0051433759 + 355400 0.0053214684 0.0022308495 0.0048500097 + 355500 0.0047528433 0.0024809614 0.0048202515 + 355600 0.0051611981 0.0022106924 0.0047509695 + 355700 0.0048213743 0.0026599844 0.0050330046 + 355800 0.0046925812 0.0031037627 0.0054133925 + 355900 0.0057470818 0.0030012694 0.0058299113 + 356000 0.005395717 0.0023742003 0.0050299048 + 356100 0.0053219035 0.0022962488 0.0049156232 + 356200 0.0061335231 0.0029818147 0.0060006581 + 356300 0.005078304 0.0033505044 0.0058499821 + 356400 0.0040332776 0.0026873388 0.0046724676 + 356500 0.0068302654 0.0021781972 0.0055399684 + 356600 0.0054316014 0.0021980462 0.0048714125 + 356700 0.0053657241 0.0025026558 0.0051435981 + 356800 0.0044306781 0.0030242858 0.0052050102 + 356900 0.0043437294 0.0035037082 0.0056416375 + 357000 0.0068950202 0.0029445345 0.0063381772 + 357100 0.0053775016 0.0017913948 0.0044381339 + 357200 0.0048996075 0.0016507557 0.0040622812 + 357300 0.0041225465 0.0019167914 0.0039458573 + 357400 0.0043866137 0.0020337826 0.004192819 + 357500 0.0046767287 0.002027514 0.0043293414 + 357600 0.0040868936 0.0021636151 0.0041751331 + 357700 0.0041755719 0.0023077562 0.0043629205 + 357800 0.006286349 0.0023709462 0.0054650086 + 357900 0.0059459605 0.0026718997 0.0055984271 + 358000 0.004517473 0.0032530542 0.0054764979 + 358100 0.0042423026 0.003083957 0.0051719653 + 358200 0.0050809038 0.002532991 0.0050337484 + 358300 0.0064961655 0.0027379971 0.0059353285 + 358400 0.0042767625 0.0027251581 0.0048301271 + 358500 0.0050050821 0.0026529481 0.0051163869 + 358600 0.0044933176 0.0030159922 0.005227547 + 358700 0.0045551551 0.0027097253 0.0049517158 + 358800 0.0052515108 0.0024109801 0.0049957081 + 358900 0.0050499794 0.0025756756 0.0050612123 + 359000 0.0040111689 0.0029600554 0.0049343026 + 359100 0.0029529561 0.0029732736 0.0044266817 + 359200 0.0058498228 0.0026677613 0.005546971 + 359300 0.0049405101 0.002785985 0.0052176424 + 359400 0.0057080697 0.0027232937 0.0055327342 + 359500 0.0042785569 0.0026200802 0.0047259324 + 359600 0.0044002583 0.0025859652 0.0047517173 + 359700 0.0053194942 0.0025298613 0.0051480498 + 359800 0.0054705103 0.0025683059 0.0052608227 + 359900 0.0046163064 0.0030372188 0.0053093071 + 360000 0.0050034411 0.0029792511 0.0054418823 + 360100 0.0047689521 0.0023198526 0.0046670712 + 360200 0.0062372734 0.0021607872 0.0052306952 + 360300 0.0059941845 0.0023085939 0.0052588565 + 360400 0.0055385683 0.0024335506 0.0051595647 + 360500 0.0047284982 0.0022144045 0.0045417122 + 360600 0.003786827 0.0020981483 0.0039619772 + 360700 0.0046426695 0.0023411493 0.0046262132 + 360800 0.0045262753 0.0023056363 0.0045334124 + 360900 0.0034172623 0.0023504914 0.0040324252 + 361000 0.0048579274 0.0024664559 0.004857467 + 361100 0.0049084596 0.002539045 0.0049549275 + 361200 0.003713698 0.0021145654 0.0039424012 + 361300 0.0050512959 0.0016573789 0.0041435636 + 361400 0.0038989616 0.0018880801 0.0038071003 + 361500 0.0055821784 0.0022020043 0.0049494827 + 361600 0.0041739129 0.002168579 0.0042229267 + 361700 0.0052884325 0.0022294721 0.0048323724 + 361800 0.0061369648 0.0026249477 0.005645485 + 361900 0.0037541672 0.0029447576 0.0047925118 + 362000 0.0048419108 0.0024012723 0.0047844003 + 362100 0.0046341022 0.0019604415 0.0042412887 + 362200 0.0047688902 0.0018643424 0.0042115305 + 362300 0.0036795228 0.0020104442 0.0038214593 + 362400 0.0040713944 0.0020303363 0.0040342257 + 362500 0.005405807 0.0023052905 0.0049659611 + 362600 0.0043052846 0.0026918773 0.0048108846 + 362700 0.0046192618 0.0025232953 0.0047968382 + 362800 0.0045531562 0.0022262412 0.0044672477 + 362900 0.0034816772 0.002279432 0.00399307 + 363000 0.0049848818 0.0024757112 0.0049292077 + 363100 0.0043716107 0.002188285 0.0043399371 + 363200 0.0064179081 0.0020451299 0.005203944 + 363300 0.0050416684 0.0023692514 0.0048506976 + 363400 0.0049780074 0.0024944749 0.004944588 + 363500 0.00424983 0.0028522618 0.004943975 + 363600 0.0064716739 0.0026348189 0.0058200959 + 363700 0.0049693429 0.0026059792 0.0050518276 + 363800 0.0040423797 0.0024742489 0.0044638577 + 363900 0.0052580146 0.0026835449 0.005271474 + 364000 0.0056973946 0.0028848043 0.0056889907 + 364100 0.0037984698 0.003085584 0.0049551433 + 364200 0.005096273 0.0026492794 0.0051576012 + 364300 0.0060072398 0.00256539 0.0055220784 + 364400 0.0051307279 0.0023526301 0.0048779103 + 364500 0.0054812084 0.0020512567 0.004749039 + 364600 0.0049248976 0.00165727 0.004081243 + 364700 0.0049631557 0.0018647915 0.0043075947 + 364800 0.0053233911 0.0022860253 0.0049061318 + 364900 0.0058731546 0.0025217211 0.0054124144 + 365000 0.0045610887 0.0024411733 0.0046860842 + 365100 0.0062012433 0.0023529687 0.0054051432 + 365200 0.0041430554 0.0030070804 0.0050462405 + 365300 0.004788213 0.0032252345 0.0055819331 + 365400 0.0052657782 0.0025832083 0.0051749585 + 365500 0.0063713464 0.0018436385 0.0049795356 + 365600 0.005342266 0.0020357949 0.0046651915 + 365700 0.004395547 0.0022757717 0.004439205 + 365800 0.00483366 0.0021504031 0.0045294701 + 365900 0.0052796219 0.002181384 0.0047799479 + 366000 0.0043482774 0.0017891216 0.0039292894 + 366100 0.0037959251 0.0016414144 0.0035097213 + 366200 0.0059586947 0.0016134145 0.0045462095 + 366300 0.0059386161 0.0018898606 0.0048127732 + 366400 0.0039131805 0.0021023088 0.0040283273 + 366500 0.003612664 0.0021205778 0.0038986859 + 366600 0.0056503693 0.0016959638 0.0044770049 + 366700 0.0060626751 0.0015514468 0.0045354197 + 366800 0.0049782728 0.0018181567 0.0042684004 + 366900 0.0046741276 0.0019097625 0.0042103097 + 367000 0.0041694629 0.0023680279 0.0044201854 + 367100 0.0046519103 0.0024953422 0.0047849543 + 367200 0.0045275358 0.002002682 0.0042310785 + 367300 0.0051246525 0.0021610142 0.0046833041 + 367400 0.0051788309 0.0021777395 0.0047266953 + 367500 0.0031733459 0.0023220385 0.0038839197 + 367600 0.003793482 0.0018498923 0.0037169967 + 367700 0.005722406 0.0018944611 0.0047109578 + 367800 0.0056969743 0.0019467003 0.0047506798 + 367900 0.00385982 0.0023457219 0.0042454771 + 368000 0.0043705918 0.0021265458 0.0042776965 + 368100 0.0061933464 0.0023995195 0.0054478072 + 368200 0.006055763 0.002295916 0.0052764869 + 368300 0.0047973581 0.0023846122 0.0047458119 + 368400 0.0046745006 0.0020328837 0.0043336145 + 368500 0.00547827 0.002231366 0.004927702 + 368600 0.0065459893 0.0023621722 0.0055840263 + 368700 0.0046276038 0.0025148733 0.0047925221 + 368800 0.0053575471 0.0025244477 0.0051613654 + 368900 0.0036641643 0.0027629527 0.0045664086 + 369000 0.0053052482 0.0023021472 0.0049133241 + 369100 0.0063268883 0.0022944389 0.0054084542 + 369200 0.0042983791 0.0025667496 0.004682358 + 369300 0.0048853909 0.002258639 0.0046631673 + 369400 0.0045407902 0.0018615144 0.0040964346 + 369500 0.0042767288 0.0017634153 0.0038683678 + 369600 0.004415793 0.001847204 0.0040206022 + 369700 0.0046471415 0.0021038108 0.0043910758 + 369800 0.003403951 0.0024939667 0.0041693489 + 369900 0.0035943965 0.0024143145 0.0041834315 + 370000 0.0056593536 0.0017899603 0.0045754234 + 370100 0.0054029352 0.0020198976 0.0046791547 + 370200 0.0042739984 0.0023431135 0.0044467221 + 370300 0.0042236376 0.0022614473 0.0043402689 + 370400 0.0038529813 0.0022290108 0.0041254 + 370500 0.005375131 0.0022246548 0.0048702271 + 370600 0.0071890816 0.0019328329 0.005471209 + 370700 0.0053284805 0.0020994082 0.0047220196 + 370800 0.0044253937 0.0021007026 0.004278826 + 370900 0.0063931186 0.0019075862 0.0050541993 + 371000 0.0051428379 0.0023972214 0.004928462 + 371100 0.0038097991 0.0029998612 0.0048749966 + 371200 0.0066779721 0.0025273485 0.0058141628 + 371300 0.0052765816 0.0026117922 0.0052088597 + 371400 0.0060013225 0.0023771463 0.0053309222 + 371500 0.006145138 0.0024052296 0.0054297897 + 371600 0.0037096422 0.0026567069 0.0044825464 + 371700 0.0037673836 0.0028248221 0.0046790812 + 371800 0.0045645792 0.002747291 0.0049939198 + 371900 0.0060856834 0.0020543151 0.0050496124 + 372000 0.006056169 0.0015782732 0.0045590439 + 372100 0.0044235888 0.0018586818 0.0040359169 + 372200 0.0054690979 0.0022335002 0.0049253218 + 372300 0.0050742986 0.0024337642 0.0049312705 + 372400 0.0071590501 0.0021669263 0.0056905213 + 372500 0.0063022327 0.0025302667 0.0056321468 + 372600 0.0055078358 0.0027668452 0.0054777331 + 372700 0.0048025773 0.0028855944 0.005249363 + 372800 0.005733082 0.0027342412 0.0055559926 + 372900 0.00534227 0.0027460207 0.0053754192 + 373000 0.0052076419 0.0026187749 0.0051819111 + 373100 0.005292538 0.0023993129 0.005004234 + 373200 0.0046548855 0.002396207 0.0046872835 + 373300 0.0035528207 0.0022315397 0.0039801936 + 373400 0.0039046778 0.0023413782 0.0042632118 + 373500 0.0057418007 0.0027150432 0.0055410858 + 373600 0.0052888441 0.0032718598 0.0058749627 + 373700 0.0058518709 0.0032376191 0.0061178368 + 373800 0.0051680819 0.002636538 0.0051802033 + 373900 0.0051848486 0.0025070229 0.0050589406 + 374000 0.0046552892 0.0029361147 0.0052273898 + 374100 0.0050345173 0.0027747754 0.0052527018 + 374200 0.0052647328 0.0026101415 0.0052013772 + 374300 0.0052966886 0.0026441055 0.0052510695 + 374400 0.0039764134 0.0031346793 0.0050918203 + 374500 0.0031850321 0.0038823843 0.0054500173 + 374600 0.0056956187 0.0028498786 0.005653191 + 374700 0.0057723284 0.0019901132 0.0048311811 + 374800 0.0069576073 0.0021374902 0.0055619375 + 374900 0.0039970251 0.0027342218 0.0047015076 + 375000 0.0065919988 0.0023997048 0.0056442042 + 375100 0.0057188793 0.0018238022 0.0046385631 + 375200 0.0049397965 0.0020900834 0.0045213895 + 375300 0.0049683629 0.0023687029 0.004814069 + 375400 0.005052738 0.001823478 0.0043103724 + 375500 0.0054574194 0.00188971 0.0045757836 + 375600 0.0041679172 0.0020340689 0.0040854657 + 375700 0.0074353072 0.0012575393 0.0049171046 + 375800 0.0044622677 0.0013084394 0.0035047118 + 375900 0.0048572159 0.0018762059 0.0042668669 + 376000 0.0052324756 0.0023391601 0.0049145192 + 376100 0.0046890883 0.0024492354 0.004757146 + 376200 0.004862978 0.0030966093 0.0054901062 + 376300 0.0068080196 0.0032253189 0.0065761411 + 376400 0.006450252 0.002952498 0.0061272314 + 376500 0.0062103745 0.0025513363 0.005608005 + 376600 0.006344159 0.0024227895 0.0055453053 + 376700 0.0055342216 0.0031489611 0.0058728358 + 376800 0.0055584873 0.0029914923 0.0057273103 + 376900 0.0059747098 0.0023550891 0.0052957665 + 377000 0.0054365361 0.0023326023 0.0050083974 + 377100 0.0027495342 0.0023253271 0.0036786134 + 377200 0.0060556918 0.0023041255 0.0052846613 + 377300 0.0055367677 0.0024538557 0.0051789835 + 377400 0.0051779028 0.0026941121 0.0052426111 + 377500 0.0048391988 0.0027265504 0.0051083435 + 377600 0.0049803823 0.0026552203 0.0051065022 + 377700 0.005930053 0.0023492576 0.0052679556 + 377800 0.0056840384 0.002235104 0.0050327166 + 377900 0.0049996855 0.002335883 0.0047966657 + 378000 0.005516994 0.002067762 0.0047831575 + 378100 0.0038166538 0.002020138 0.0038986473 + 378200 0.0046003431 0.0021004769 0.0043647083 + 378300 0.0041972956 0.0023083778 0.0043742342 + 378400 0.0049043006 0.0018573013 0.0042711367 + 378500 0.0048979268 0.0016000006 0.0040106989 + 378600 0.0055158263 0.0015140783 0.004228899 + 378700 0.0038619479 0.0017666103 0.0036674128 + 378800 0.0047934407 0.0019823689 0.0043416405 + 378900 0.0049506368 0.0025846749 0.0050213164 + 379000 0.0053903965 0.0024122646 0.0050653504 + 379100 0.0060886849 0.0023417189 0.0053384935 + 379200 0.0047873595 0.0021864277 0.0045427062 + 379300 0.0068990176 0.0017517107 0.0051473209 + 379400 0.0043430001 0.0020127606 0.004150331 + 379500 0.0049899859 0.0018277409 0.0042837496 + 379600 0.0041512168 0.0018277687 0.0038709457 + 379700 0.0040754688 0.0022538302 0.004259725 + 379800 0.0060638427 0.0022012626 0.0051858102 + 379900 0.0051988468 0.0023009708 0.0048597782 + 380000 0.0055681737 0.0023778932 0.0051184786 + 380100 0.0046557794 0.0025454752 0.0048369916 + 380200 0.0049802939 0.0027679147 0.0052191531 + 380300 0.0037852455 0.0030491767 0.0049122272 + 380400 0.0077945337 0.0025756766 0.0064120487 + 380500 0.0049592295 0.0024123021 0.0048531729 + 380600 0.0061718652 0.0019993478 0.0050370627 + 380700 0.0035368353 0.0017924416 0.0035332277 + 380800 0.0052533812 0.0018515882 0.0044372368 + 380900 0.0052364678 0.0021585338 0.0047358577 + 381000 0.0039662818 0.0025312432 0.0044833975 + 381100 0.0067445385 0.002523909 0.0058434866 + 381200 0.0061511318 0.0028462153 0.0058737255 + 381300 0.0042957779 0.003316295 0.0054306232 + 381400 0.0049001692 0.0035683594 0.0059801615 + 381500 0.0058691196 0.0030838404 0.0059725477 + 381600 0.0045051994 0.0021561014 0.0043735042 + 381700 0.0060352402 0.0020028053 0.0049732751 + 381800 0.0045084617 0.0021488781 0.0043678866 + 381900 0.0043043465 0.0021952623 0.0043138079 + 382000 0.0066417212 0.0023733459 0.005642318 + 382100 0.0069836347 0.0024034922 0.0058407499 + 382200 0.0039944385 0.0028906393 0.004856652 + 382300 0.0057580253 0.0026077955 0.0054418235 + 382400 0.0056379155 0.0029715217 0.0057464333 + 382500 0.0048762368 0.0035722102 0.005972233 + 382600 0.0054469629 0.0028582553 0.0055391824 + 382700 0.0051893996 0.0026933656 0.0052475232 + 382800 0.0057948841 0.0026275191 0.0054796886 + 382900 0.0056533273 0.0021744861 0.0049569831 + 383000 0.0044056446 0.0019377747 0.0041061779 + 383100 0.0066386671 0.002098154 0.0053656229 + 383200 0.0048462702 0.0021907757 0.0045760493 + 383300 0.0053288024 0.0019686603 0.0045914303 + 383400 0.0039227118 0.0020545081 0.0039852179 + 383500 0.0050734541 0.001989632 0.0044867227 + 383600 0.0049148405 0.0018146037 0.0042336267 + 383700 0.0054757625 0.0020982905 0.0047933924 + 383800 0.0053353354 0.0020343576 0.004660343 + 383900 0.0048133344 0.002086541 0.004455604 + 384000 0.0045156798 0.0023111713 0.0045337324 + 384100 0.0045613745 0.0024907068 0.0047357583 + 384200 0.0054893718 0.0019133513 0.0046151515 + 384300 0.0036917353 0.0016797465 0.0034967724 + 384400 0.0037939917 0.0019735948 0.0038409501 + 384500 0.0041532542 0.0021804138 0.0042245936 + 384600 0.0056181633 0.0023249016 0.0050900914 + 384700 0.0045716912 0.0023753019 0.0046254312 + 384800 0.0053876281 0.0021937988 0.004845522 + 384900 0.0044648108 0.0026965207 0.0048940448 + 385000 0.0041316453 0.0026933247 0.0047268688 + 385100 0.0047986577 0.0022167306 0.0045785699 + 385200 0.0052197139 0.0022225456 0.0047916236 + 385300 0.0038499995 0.0022315064 0.004126428 + 385400 0.0039761398 0.0019954894 0.0039524957 + 385500 0.0048323304 0.0023788166 0.0047572292 + 385600 0.004531424 0.002520907 0.0047512172 + 385700 0.0044185457 0.0024522163 0.0046269692 + 385800 0.0047873732 0.0021385086 0.0044947938 + 385900 0.003992811 0.002403983 0.0043691947 + 386000 0.0049229917 0.0023780241 0.004801059 + 386100 0.0058511462 0.0020115005 0.0048913615 + 386200 0.0051725242 0.0022580301 0.0048038819 + 386300 0.0051914345 0.0026572859 0.005212445 + 386400 0.0046113562 0.0029002823 0.0051699342 + 386500 0.0052070332 0.0030087102 0.0055715468 + 386600 0.0052571887 0.0031555865 0.005743109 + 386700 0.005457725 0.0027924329 0.005478657 + 386800 0.0067010088 0.0026024025 0.0059005553 + 386900 0.0058295922 0.0026913957 0.0055606481 + 387000 0.0049397939 0.0028113342 0.005242639 + 387100 0.0062861125 0.0027430051 0.0058369511 + 387200 0.0049608725 0.0024721569 0.0049138364 + 387300 0.0062293742 0.0020659062 0.0051319263 + 387400 0.0053114888 0.0021171443 0.0047313927 + 387500 0.0038275985 0.0020530897 0.0039369858 + 387600 0.0036263536 0.002025866 0.0038107119 + 387700 0.0047835152 0.0023081219 0.0046625083 + 387800 0.0048386834 0.0024678758 0.0048494154 + 387900 0.0052208798 0.0025032768 0.0050729286 + 388000 0.0067255194 0.0026636149 0.0059738315 + 388100 0.0059270339 0.0028259383 0.0057431502 + 388200 0.006984624 0.0025621982 0.0059999428 + 388300 0.0062295068 0.0024126507 0.0054787361 + 388400 0.005369456 0.0020461084 0.0046888875 + 388500 0.004391811 0.0020704919 0.0042320864 + 388600 0.0050578411 0.001994779 0.0044841852 + 388700 0.005236071 0.0018231985 0.0044003272 + 388800 0.0039818042 0.0019298473 0.0038896415 + 388900 0.005091194 0.0019418185 0.0044476405 + 389000 0.0054292867 0.001929991 0.0046022181 + 389100 0.0051844924 0.0023239737 0.0048757161 + 389200 0.0056774076 0.0024079422 0.0052022913 + 389300 0.0052686181 0.0026644447 0.0052575927 + 389400 0.0040051201 0.0024623992 0.0044336692 + 389500 0.0051515673 0.0024821789 0.0050177159 + 389600 0.0046315573 0.0024712313 0.0047508259 + 389700 0.0041053285 0.0023442407 0.0043648321 + 389800 0.0046652528 0.0021067988 0.0044029779 + 389900 0.0047043555 0.0020847983 0.0044002233 + 390000 0.0034667485 0.0024382367 0.004144527 + 390100 0.0034481618 0.0029083853 0.0046055275 + 390200 0.0041867276 0.0030030029 0.0050636578 + 390300 0.0053964775 0.0028489526 0.0055050313 + 390400 0.0045579754 0.0024568398 0.0047002184 + 390500 0.0066011114 0.002810293 0.0060592775 + 390600 0.0046546272 0.0027998309 0.0050907802 + 390700 0.0047537564 0.0023968629 0.0047366024 + 390800 0.0067948823 0.0020082828 0.0053526389 + 390900 0.0051806921 0.0021623094 0.0047121813 + 391000 0.0050895898 0.0021082264 0.0046132588 + 391100 0.0049289258 0.0021258905 0.0045518462 + 391200 0.0071812032 0.0018807664 0.0054152648 + 391300 0.0059149376 0.0024932569 0.0054045152 + 391400 0.0045640772 0.0030062456 0.0052526274 + 391500 0.006520887 0.0028858552 0.0060953543 + 391600 0.0047947284 0.002587929 0.0049478344 + 391700 0.0049429584 0.0023601446 0.0047930069 + 391800 0.0050083107 0.002024281 0.0044893089 + 391900 0.0045239426 0.0019641815 0.0041908095 + 392000 0.0053171528 0.0028547386 0.0054717747 + 392100 0.0050729984 0.0029750811 0.0054719475 + 392200 0.0050631027 0.0024835182 0.0049755141 + 392300 0.0060639024 0.0021270411 0.0051116181 + 392400 0.0061146076 0.0025841985 0.0055937319 + 392500 0.0056288059 0.0027630512 0.0055334791 + 392600 0.0050173084 0.002395108 0.0048645644 + 392700 0.004526819 0.0020559037 0.0042839474 + 392800 0.0049571748 0.002185177 0.0046250364 + 392900 0.0048045849 0.002119745 0.0044845017 + 393000 0.0044553976 0.0023212574 0.0045141484 + 393100 0.0048915817 0.0024117379 0.0048193133 + 393200 0.0051490936 0.0022862779 0.0048205974 + 393300 0.0034187569 0.0026210675 0.0043037369 + 393400 0.0053394872 0.0027963895 0.0054244184 + 393500 0.0054951027 0.0030730054 0.0057776262 + 393600 0.0055152693 0.0030140984 0.005728645 + 393700 0.0048907857 0.0026476292 0.0050548128 + 393800 0.0060757731 0.0025250727 0.0055154922 + 393900 0.0046899392 0.0024639269 0.0047722563 + 394000 0.0053978817 0.0022933224 0.0049500923 + 394100 0.0059286156 0.0024522707 0.0053702612 + 394200 0.0055836046 0.0024299001 0.0051780804 + 394300 0.0053629028 0.002227172 0.0048667258 + 394400 0.0046229184 0.0025945744 0.004869917 + 394500 0.0043652891 0.0026222774 0.0047708181 + 394600 0.0049710531 0.0024303806 0.0048770708 + 394700 0.0046495203 0.0022545045 0.0045429403 + 394800 0.0057319101 0.0021847231 0.0050058976 + 394900 0.0038486824 0.0022496547 0.0041439281 + 395000 0.0035543523 0.0023107703 0.004060178 + 395100 0.0035072689 0.0023290414 0.0040552753 + 395200 0.005159075 0.0023899765 0.0049292088 + 395300 0.004934709 0.0025214135 0.0049502156 + 395400 0.0059334745 0.0023454762 0.0052658582 + 395500 0.0040269827 0.0021419018 0.0041239323 + 395600 0.0054473985 0.0019628586 0.0046440001 + 395700 0.0040957501 0.0022744861 0.0042903631 + 395800 0.0050866645 0.0025634985 0.0050670912 + 395900 0.0056608017 0.002467681 0.0052538568 + 396000 0.0053457513 0.0027179065 0.0053490185 + 396100 0.0049069471 0.0025247159 0.0049398539 + 396200 0.0028618917 0.0024982393 0.0039068266 + 396300 0.0045918723 0.0019614311 0.0042214933 + 396400 0.0068556682 0.002048881 0.0054231552 + 396500 0.0048426341 0.0023979842 0.0047814682 + 396600 0.0052087237 0.0026543394 0.0052180081 + 396700 0.0046716267 0.0025058928 0.0048052091 + 396800 0.004179225 0.00197566 0.0040326223 + 396900 0.0043824885 0.0021057029 0.004262709 + 397000 0.0040360045 0.0022198619 0.0042063329 + 397100 0.0059691969 0.0023404235 0.0052783875 + 397200 0.0047745463 0.0021960725 0.0045460445 + 397300 0.0047859887 0.0025634242 0.004919028 + 397400 0.0054259672 0.0028094623 0.0054800555 + 397500 0.0061743654 0.0027608225 0.0057997679 + 397600 0.0053008933 0.0024085405 0.005017574 + 397700 0.0052392722 0.0025580334 0.0051367377 + 397800 0.0038018741 0.0026306729 0.0045019078 + 397900 0.0050972313 0.0023244451 0.0048332387 + 398000 0.0045799189 0.0024109718 0.0046651506 + 398100 0.0045780327 0.0021782077 0.0044314582 + 398200 0.0039299541 0.002250469 0.0041847433 + 398300 0.005447714 0.0023094689 0.0049907657 + 398400 0.0042414033 0.0021575463 0.004245112 + 398500 0.0042081854 0.0021373776 0.0042085939 + 398600 0.0054991185 0.0021958706 0.004902468 + 398700 0.004621849 0.0020186236 0.0042934399 + 398800 0.0052478809 0.0018961441 0.0044790855 + 398900 0.0048440865 0.0016968361 0.0040810349 + 399000 0.0036603417 0.0018952072 0.0036967816 + 399100 0.0040727321 0.0019039509 0.0039084988 + 399200 0.0061967387 0.0017337739 0.0047837313 + 399300 0.0046984457 0.0019824214 0.0042949376 + 399400 0.0046591628 0.0022855637 0.0045787454 + 399500 0.0051454199 0.0022776035 0.0048101148 + 399600 0.0038275693 0.0025003794 0.0043842611 + 399700 0.0041650099 0.0025865727 0.0046365385 + 399800 0.0053900069 0.0025327063 0.0051856004 + 399900 0.0048044488 0.0027764048 0.0051410945 + 400000 0.0054098607 0.0023154856 0.0049781514 + 400100 0.0048242615 0.0021193958 0.0044938371 + 400200 0.0050866892 0.0021615093 0.0046651141 + 400300 0.0051926718 0.0021081106 0.0046638787 + 400400 0.0037432938 0.0019309537 0.0037733561 + 400500 0.0056284689 0.0020251236 0.0047953856 + 400600 0.0036383352 0.0023841691 0.0041749123 + 400700 0.0041578848 0.0028010696 0.0048475286 + 400800 0.0058117982 0.0029165254 0.0057770199 + 400900 0.0053128429 0.0025694867 0.0051844016 + 401000 0.0067118825 0.0026167519 0.0059202565 + 401100 0.0056027138 0.0023914329 0.0051490186 + 401200 0.0067572125 0.0018792672 0.0052050827 + 401300 0.0043496772 0.0017516326 0.0038924893 + 401400 0.0045500421 0.0018906724 0.0041301463 + 401500 0.0049806283 0.0022426064 0.0046940094 + 401600 0.0058788163 0.0023131322 0.0052066121 + 401700 0.0060767002 0.0027018963 0.0056927721 + 401800 0.005624551 0.0030514406 0.0058197743 + 401900 0.0049336444 0.0032193984 0.0056476765 + 402000 0.006449055 0.0030194847 0.0061936289 + 402100 0.0061378967 0.0030409564 0.0060619524 + 402200 0.0055307954 0.0026922507 0.005414439 + 402300 0.0066382017 0.0022630871 0.005530327 + 402400 0.004722373 0.002244382 0.004568675 + 402500 0.0060010212 0.0025181611 0.0054717887 + 402600 0.0054691311 0.0025338672 0.0052257052 + 402700 0.0034532633 0.0022546149 0.0039542679 + 402800 0.0057332419 0.0021417565 0.0049635865 + 402900 0.00581705 0.0031117724 0.0059748517 + 403000 0.0060962227 0.0030161352 0.0060166198 + 403100 0.0070314255 0.0029555541 0.0064163338 + 403200 0.0064177672 0.0030648143 0.0062235591 + 403300 0.0057940188 0.0031999764 0.00605172 + 403400 0.0037940823 0.003065665 0.0049330649 + 403500 0.0057830112 0.0028519847 0.0056983105 + 403600 0.0051600278 0.0020336662 0.0045733674 + 403700 0.0049503497 0.0020708911 0.0045073914 + 403800 0.0040673774 0.002418934 0.0044208463 + 403900 0.0056415588 0.0026915509 0.0054682556 + 404000 0.0050843801 0.0031819552 0.0056844235 + 404100 0.0045939883 0.0035233367 0.0057844403 + 404200 0.0051575814 0.0031365336 0.0056750307 + 404300 0.0060218169 0.0025470623 0.0055109253 + 404400 0.0061774621 0.0020781822 0.0051186518 + 404500 0.0042307709 0.002337786 0.0044201186 + 404600 0.006279044 0.0022807019 0.0053711689 + 404700 0.0063170605 0.0019722942 0.0050814724 + 404800 0.0041622856 0.0024867613 0.0045353862 + 404900 0.0050944566 0.0028692213 0.0053766491 + 405000 0.0060904784 0.0023468958 0.0053445531 + 405100 0.0039955947 0.0024924714 0.0044590531 + 405200 0.005774655 0.002429123 0.005271336 + 405300 0.003835967 0.0028050427 0.0046930577 + 405400 0.004965569 0.0025069961 0.0049509871 + 405500 0.0049898848 0.0025318755 0.0049878344 + 405600 0.0054318945 0.0027307214 0.0054042319 + 405700 0.0076295073 0.0033918946 0.0071470427 + 405800 0.0058792591 0.0039859172 0.0068796151 + 405900 0.004975617 0.0040599616 0.0065088981 + 406000 0.0047255352 0.0034136432 0.0057394926 + 406100 0.0055718253 0.0032742701 0.0060166529 + 406200 0.0053159618 0.0032330536 0.0058495036 + 406300 0.0040741165 0.0030840517 0.0050892809 + 406400 0.0049362685 0.0026629252 0.0050924948 + 406500 0.0050951173 0.0027778068 0.0052855598 + 406600 0.0050077307 0.0027608661 0.0052256086 + 406700 0.0052619482 0.0024164542 0.0050063193 + 406800 0.007636206 0.0024724682 0.0062309134 + 406900 0.0059119496 0.0027856095 0.0056953972 + 407000 0.0047575908 0.0032969609 0.0056385876 + 407100 0.0059037145 0.0030699533 0.0059756877 + 407200 0.0061469871 0.0028453469 0.0058708171 + 407300 0.0064184349 0.0032590751 0.0064181485 + 407400 0.005914934 0.0029985241 0.0059097807 + 407500 0.0074630205 0.0028067776 0.006479983 + 407600 0.0058024978 0.002544011 0.0053999279 + 407700 0.0063038291 0.0024556961 0.005558362 + 407800 0.0060404256 0.002457669 0.005430691 + 407900 0.006610212 0.0022320898 0.0054855535 + 408000 0.005065336 0.0023989796 0.0048920747 + 408100 0.0051729119 0.0025811103 0.0051271529 + 408200 0.0066226843 0.0027950062 0.0060546087 + 408300 0.004770465 0.0032791903 0.0056271535 + 408400 0.0046466924 0.0022915074 0.0045785513 + 408500 0.0036898261 0.0020831624 0.0038992487 + 408600 0.0046403284 0.0023054264 0.004589338 + 408700 0.005370713 0.002606316 0.0052497138 + 408800 0.0058037835 0.0029486698 0.0058052195 + 408900 0.0045680352 0.0027660228 0.0050143526 + 409000 0.0033443468 0.0025031767 0.0041492224 + 409100 0.0049416087 0.0025931698 0.0050253679 + 409200 0.005770222 0.0020407526 0.0048807837 + 409300 0.0038705204 0.0020735755 0.0039785972 + 409400 0.0049742985 0.0018385851 0.0042868727 + 409500 0.0041033233 0.0018406818 0.0038602862 + 409600 0.0046580275 0.0020856873 0.0043783102 + 409700 0.0044347399 0.0027491171 0.0049318406 + 409800 0.0049047803 0.002876312 0.0052903835 + 409900 0.0065993058 0.0026319944 0.0058800902 + 410000 0.0052180224 0.0027157353 0.0052839807 + 410100 0.0036188682 0.0026342771 0.0044154388 + 410200 0.0049250319 0.0022930353 0.0047170744 + 410300 0.0052481734 0.0022350645 0.0048181499 + 410400 0.0051212121 0.0022547516 0.0047753482 + 410500 0.0045497683 0.0026848488 0.0049241879 + 410600 0.0036086036 0.0027466133 0.0045227228 + 410700 0.0059909101 0.0028886549 0.005837306 + 410800 0.0048113199 0.0030379813 0.0054060528 + 410900 0.0058247151 0.0029971645 0.0058640164 + 411000 0.004526535 0.003133785 0.005361689 + 411100 0.0047133142 0.0027800194 0.0050998537 + 411200 0.0077091799 0.002459971 0.006254333 + 411300 0.0047948091 0.0025801455 0.0049400906 + 411400 0.004336137 0.0028158106 0.004950003 + 411500 0.0047662791 0.0025460789 0.0048919819 + 411600 0.004267348 0.0024090159 0.0045093513 + 411700 0.005499359 0.0024752197 0.0051819355 + 411800 0.0054706185 0.0029273974 0.0056199674 + 411900 0.0061317355 0.0024680099 0.0054859735 + 412000 0.0034012105 0.002294824 0.0039688573 + 412100 0.0057975859 0.002018143 0.0048716423 + 412200 0.0036272335 0.0019992099 0.0037844889 + 412300 0.0055713367 0.0018969868 0.0046391292 + 412400 0.0041040615 0.0017962837 0.0038162514 + 412500 0.0040086295 0.0016011701 0.0035741674 + 412600 0.0048532496 0.0016077149 0.0039964236 + 412700 0.0046309485 0.0023026566 0.0045819516 + 412800 0.0042845297 0.0026561676 0.0047649595 + 412900 0.0063596219 0.0025224959 0.0056526223 + 413000 0.0060526599 0.0024735597 0.0054526032 + 413100 0.0061510993 0.0025919044 0.0056193986 + 413200 0.0041531987 0.0024676345 0.004511787 + 413300 0.005114212 0.002311848 0.0048289992 + 413400 0.0047029701 0.0019991814 0.0043139245 + 413500 0.005619082 0.0020898968 0.0048555388 + 413600 0.0047564352 0.00250417 0.0048452279 + 413700 0.0039187454 0.0024789338 0.0044076912 + 413800 0.0050572644 0.0026471798 0.0051363021 + 413900 0.0040607372 0.0024354133 0.0044340574 + 414000 0.0054504411 0.0025391182 0.0052217572 + 414100 0.0051879981 0.003008483 0.0055619508 + 414200 0.0052286957 0.0030561505 0.0056296492 + 414300 0.0034256225 0.0033891832 0.0050752318 + 414400 0.0053663612 0.0031374341 0.00577869 + 414500 0.0050932364 0.0028505565 0.0053573838 + 414600 0.0046395081 0.0022334857 0.0045169936 + 414700 0.005001831 0.0021198939 0.0045817326 + 414800 0.0051325601 0.0026020198 0.0051282018 + 414900 0.0049054015 0.0027269737 0.0051413511 + 415000 0.0055815783 0.0026061843 0.0053533674 + 415100 0.0043712445 0.0025407916 0.0046922635 + 415200 0.0058904012 0.0021892381 0.00508842 + 415300 0.0052414785 0.0019859315 0.0045657218 + 415400 0.0048776396 0.0023237552 0.0047244685 + 415500 0.0055300192 0.0026669823 0.0053887886 + 415600 0.0045033804 0.0026044317 0.0048209392 + 415700 0.0059212748 0.0023132048 0.0052275822 + 415800 0.0047024028 0.0024071717 0.0047216356 + 415900 0.0053570463 0.0024851075 0.0051217787 + 416000 0.0041072104 0.0028904634 0.004911981 + 416100 0.0043028648 0.0025678855 0.0046857017 + 416200 0.005488173 0.0024055417 0.0051067519 + 416300 0.0040213545 0.0026948418 0.0046741023 + 416400 0.0045204478 0.0025514985 0.0047764064 + 416500 0.0064487259 0.0022956923 0.0054696746 + 416600 0.0044989445 0.0027203572 0.0049346815 + 416700 0.0053498116 0.0028537378 0.0054868482 + 416800 0.0068743113 0.0024937377 0.0058771878 + 416900 0.0040635487 0.0030002283 0.0050002562 + 417000 0.00586072 0.0033220073 0.0062065804 + 417100 0.0061437285 0.0027337052 0.0057575716 + 417200 0.0051038885 0.0029679519 0.005480022 + 417300 0.004828786 0.0030618145 0.0054384826 + 417400 0.0042656796 0.0028716468 0.0049711609 + 417500 0.0038259749 0.0025501954 0.0044332924 + 417600 0.0051682503 0.0023687366 0.0049124848 + 417700 0.0050816586 0.0021993518 0.0047004807 + 417800 0.005602078 0.0022551085 0.0050123812 + 417900 0.0058126411 0.0021018132 0.0049627225 + 418000 0.0037843342 0.0024869163 0.0043495183 + 418100 0.0048846736 0.002891092 0.0052952673 + 418200 0.006870483 0.0023440499 0.0057256158 + 418300 0.0052069902 0.0027942901 0.0053571056 + 418400 0.0051441623 0.0028003248 0.0053322172 + 418500 0.0037930737 0.0027291812 0.0045960847 + 418600 0.0060293599 0.00262791 0.0055954855 + 418700 0.0052325676 0.0029543196 0.005529724 + 418800 0.0053475145 0.0032846555 0.0059166353 + 418900 0.0045238951 0.0030534002 0.0052800048 + 419000 0.0046549434 0.002837587 0.0051286919 + 419100 0.0043040963 0.0027147933 0.0048332157 + 419200 0.0059397088 0.0027265952 0.0056500456 + 419300 0.0048980772 0.0022958926 0.004706665 + 419400 0.005427832 0.0021487896 0.0048203007 + 419500 0.0054540223 0.0021098233 0.0047942249 + 419600 0.0057823643 0.0019564928 0.0048025003 + 419700 0.0046062779 0.0024650345 0.0047321869 + 419800 0.00494389 0.0028256537 0.0052589746 + 419900 0.0043337824 0.0028769026 0.0050099361 + 420000 0.0051975831 0.0025711406 0.0051293261 + 420100 0.0061423366 0.0024752554 0.0054984367 + 420200 0.0075582146 0.0024229543 0.006143013 + 420300 0.0053160334 0.0032648229 0.0058813081 + 420400 0.0048092857 0.0035074227 0.005874493 + 420500 0.0049601796 0.0039219815 0.0063633199 + 420600 0.0055451631 0.004028974 0.006758234 + 420700 0.0051276136 0.0033026835 0.0058264308 + 420800 0.0061657747 0.0023589166 0.0053936339 + 420900 0.0071285631 0.0020388105 0.0055474002 + 421000 0.0044487423 0.0022345536 0.0044241689 + 421100 0.0056118267 0.002471898 0.005233969 + 421200 0.004658896 0.0022362457 0.0045292961 + 421300 0.0057938806 0.0021517484 0.005003424 + 421400 0.0051367056 0.0027362553 0.0052644777 + 421500 0.0068096022 0.0028201261 0.0061717272 + 421600 0.0051614419 0.0025572255 0.0050976227 + 421700 0.004894478 0.002342406 0.0047514069 + 421800 0.0051517295 0.0021845593 0.0047201762 + 421900 0.0035872852 0.0022215208 0.0039871377 + 422000 0.0058267874 0.0022021457 0.0050700176 + 422100 0.0049663848 0.0023330637 0.0047774562 + 422200 0.0058871798 0.0022987102 0.0051963065 + 422300 0.0042326273 0.002695735 0.0047789813 + 422400 0.0049753499 0.0030041087 0.0054529137 + 422500 0.0045374362 0.0027468558 0.0049801251 + 422600 0.0042548913 0.0024039043 0.0044981086 + 422700 0.003821899 0.0023261931 0.004207284 + 422800 0.0047293443 0.0022759416 0.0046036657 + 422900 0.0052072582 0.0021744693 0.0047374167 + 423000 0.005066732 0.0022364306 0.0047302128 + 423100 0.0044992801 0.0024199036 0.004634393 + 423200 0.0039223265 0.0020349218 0.0039654419 + 423300 0.0038060561 0.0020257041 0.0038989973 + 423400 0.0047764523 0.0021005554 0.0044514655 + 423500 0.0038239919 0.0023685729 0.004250694 + 423600 0.0042737664 0.0023259277 0.0044294221 + 423700 0.0059701172 0.0022409901 0.0051794071 + 423800 0.0043246662 0.0028714746 0.0050000213 + 423900 0.0038297209 0.0028862597 0.0047712004 + 424000 0.0051889242 0.0029826157 0.0055365394 + 424100 0.0067939496 0.0030466699 0.006390567 + 424200 0.0048662715 0.0032745517 0.0056696697 + 424300 0.0060771974 0.0027763244 0.005767445 + 424400 0.0052163584 0.0029320464 0.0054994728 + 424500 0.0062285137 0.002828952 0.0058945486 + 424600 0.0051499737 0.0023325889 0.0048673416 + 424700 0.0040254211 0.0023907118 0.0043719737 + 424800 0.0057139975 0.0024713059 0.005283664 + 424900 0.0046484798 0.0023834412 0.0046713649 + 425000 0.0055267589 0.0027061662 0.0054263679 + 425100 0.0042488492 0.002883791 0.0049750215 + 425200 0.0047183367 0.0029740056 0.005296312 + 425300 0.0062983404 0.0022657341 0.0053656985 + 425400 0.004768754 0.0022264373 0.0045735584 + 425500 0.0057532013 0.0027136886 0.0055453423 + 425600 0.0058087943 0.0029539721 0.005812988 + 425700 0.0054790414 0.0024693588 0.0051660746 + 425800 0.0059844298 0.0021867195 0.0051321811 + 425900 0.0048344817 0.0020839004 0.0044633718 + 426000 0.0050580095 0.0020107873 0.0045002764 + 426100 0.0040020318 0.0019838212 0.0039535712 + 426200 0.0044062103 0.0019058982 0.0040745798 + 426300 0.0051855181 0.0019254648 0.004477712 + 426400 0.0053373056 0.0018184286 0.0044453836 + 426500 0.0040433779 0.0021685479 0.004158648 + 426600 0.0050238482 0.0024581195 0.0049307948 + 426700 0.005857132 0.0023957277 0.0052785349 + 426800 0.0057992489 0.0019747365 0.0048290543 + 426900 0.0050546105 0.0020515314 0.0045393475 + 427000 0.0052282113 0.0022327481 0.0048060083 + 427100 0.0036425333 0.0023368297 0.0041296391 + 427200 0.0044570847 0.0022680021 0.0044617234 + 427300 0.0065241279 0.0020564831 0.0052675773 + 427400 0.0052096522 0.0020965396 0.0046606652 + 427500 0.0039868604 0.002263469 0.0042257518 + 427600 0.0045710686 0.0021646374 0.0044144603 + 427700 0.0054364422 0.0023366476 0.0050123965 + 427800 0.0039236916 0.002419054 0.0043502459 + 427900 0.0045935021 0.0028077933 0.0050686576 + 428000 0.0062645632 0.0026707243 0.005754064 + 428100 0.0044048942 0.0028749574 0.0050429912 + 428200 0.0042517504 0.0029070374 0.0049996958 + 428300 0.0068203762 0.0024814858 0.0058383897 + 428400 0.0052661277 0.0023380709 0.0049299931 + 428500 0.0056326688 0.002218723 0.0049910521 + 428600 0.0060569633 0.002541028 0.0055221897 + 428700 0.0035981821 0.0031815054 0.0049524857 + 428800 0.0029706852 0.0032467613 0.0047088955 + 428900 0.0048205214 0.002231611 0.0046042114 + 429000 0.0041526614 0.0021338092 0.0041776973 + 429100 0.0057189182 0.0022229382 0.0050377183 + 429200 0.0054444565 0.0021004877 0.0047801811 + 429300 0.0036303805 0.0021099167 0.0038967445 + 429400 0.0046231933 0.0021825378 0.0044580158 + 429500 0.0062963825 0.0021049305 0.0052039312 + 429600 0.0045465535 0.0020562971 0.0042940539 + 429700 0.0047049011 0.0020649639 0.0043806574 + 429800 0.0037315079 0.0020722432 0.0039088448 + 429900 0.0069737567 0.002150397 0.0055827928 + 430000 0.00444147 0.0022617537 0.0044477897 + 430100 0.0038187653 0.0023696757 0.0042492242 + 430200 0.0041118169 0.0024766431 0.0045004279 + 430300 0.0051029414 0.0023023565 0.0048139605 + 430400 0.0070992454 0.0020312369 0.0055253968 + 430500 0.0046475309 0.002259334 0.0045467907 + 430600 0.0059531651 0.0024707881 0.0054008616 + 430700 0.0056320645 0.0021657656 0.0049377973 + 430800 0.0042616205 0.0023166549 0.0044141712 + 430900 0.0037532834 0.0027010052 0.0045483244 + 431000 0.0055218982 0.0021613031 0.0048791123 + 431100 0.005899622 0.0024452417 0.0053489619 + 431200 0.0034817613 0.0027658853 0.0044795647 + 431300 0.0049760961 0.002782238 0.0052314103 + 431400 0.0059909506 0.0024567353 0.0054054063 + 431500 0.006012465 0.0029285084 0.0058877685 + 431600 0.0052453566 0.0031103119 0.0056920108 + 431700 0.0063113079 0.002110841 0.0052171879 + 431800 0.0053879025 0.0025894508 0.005241309 + 431900 0.0025963791 0.0027952087 0.004073114 + 432000 0.0039789195 0.0025217746 0.004480149 + 432100 0.0048625521 0.0025327999 0.0049260872 + 432200 0.0051802236 0.0031393113 0.0056889527 + 432300 0.0040053694 0.0035648842 0.0055362769 + 432400 0.0063302477 0.0031847047 0.0063003735 + 432500 0.0059551155 0.0030822111 0.0060132445 + 432600 0.005074337 0.0031221833 0.0056197086 + 432700 0.0058231603 0.0030807324 0.0059468191 + 432800 0.0045951718 0.0027336936 0.0049953798 + 432900 0.0037762095 0.002577695 0.0044362981 + 433000 0.0050375754 0.0022520042 0.0047314358 + 433100 0.0061514152 0.0019394113 0.0049670609 + 433200 0.0046998558 0.0022321985 0.0045454087 + 433300 0.0059219493 0.0025902417 0.0055049512 + 433400 0.004638006 0.0028288272 0.0051115958 + 433500 0.0040482969 0.0028680726 0.0048605938 + 433600 0.0039164583 0.0027961467 0.0047237785 + 433700 0.0056143933 0.0026216451 0.0053849793 + 433800 0.0064650887 0.0027395172 0.005921553 + 433900 0.005863471 0.0032491162 0.0061350433 + 434000 0.0048906036 0.0035143711 0.0059214651 + 434100 0.0048669122 0.0033922509 0.0057876843 + 434200 0.0059220307 0.0031519151 0.0060666646 + 434300 0.0061462709 0.0029528089 0.0059779266 + 434400 0.0058586644 0.0031014937 0.0059850551 + 434500 0.0067501945 0.0032557575 0.0065781189 + 434600 0.006166904 0.0032967429 0.006332016 + 434700 0.0044578028 0.0035633733 0.0057574481 + 434800 0.0049558995 0.0034506554 0.0058898871 + 434900 0.0051763598 0.0025840729 0.0051318125 + 435000 0.0048985954 0.0027375581 0.0051485855 + 435100 0.0057554424 0.0027944561 0.0056272129 + 435200 0.0054018371 0.0024834132 0.0051421299 + 435300 0.0053934909 0.0022941315 0.0049487403 + 435400 0.0039813545 0.0021202448 0.0040798178 + 435500 0.0045021809 0.002254459 0.0044703762 + 435600 0.0053056485 0.0020819738 0.0046933477 + 435700 0.0050018662 0.0021037106 0.0045655667 + 435800 0.0059464527 0.0019772746 0.0049040443 + 435900 0.0060250185 0.002494565 0.0054600038 + 436000 0.0062781903 0.002229181 0.0053192278 + 436100 0.0056573995 0.0022536628 0.0050381642 + 436200 0.0050313931 0.0026623921 0.0051387809 + 436300 0.0050917272 0.0027121246 0.0052182091 + 436400 0.0049164914 0.0022705848 0.0046904204 + 436500 0.004828254 0.0023757266 0.0047521329 + 436600 0.0047950003 0.0026072779 0.0049673171 + 436700 0.0042946303 0.0019601846 0.0040739479 + 436800 0.0045874684 0.0020037994 0.004261694 + 436900 0.0063900964 0.001956936 0.0051020615 + 437000 0.0049431902 0.0021982673 0.0046312437 + 437100 0.0048705784 0.0020996176 0.0044968555 + 437200 0.0039495992 0.0023928802 0.0043368235 + 437300 0.0046570276 0.0021673 0.0044594307 + 437400 0.0038407612 0.0020617698 0.0039521444 + 437500 0.0052369024 0.0020560269 0.0046335648 + 437600 0.0039273308 0.0021539654 0.0040869485 + 437700 0.0055919651 0.0022516145 0.0050039099 + 437800 0.0056370821 0.0024107266 0.005185228 + 437900 0.0050424466 0.0025551038 0.005036933 + 438000 0.0044775484 0.0029150199 0.0051188132 + 438100 0.0046320611 0.002848558 0.0051284006 + 438200 0.0050462414 0.0026184025 0.0051020994 + 438300 0.0043345555 0.0024708694 0.0046042834 + 438400 0.0038120711 0.0024589185 0.0043351723 + 438500 0.0051673821 0.0026342595 0.0051775804 + 438600 0.0044331515 0.0025961379 0.0047780796 + 438700 0.0062404481 0.0023135992 0.0053850698 + 438800 0.005281507 0.0022526464 0.0048521381 + 438900 0.0050282444 0.0022752354 0.0047500745 + 439000 0.0044628532 0.0022672839 0.0044638445 + 439100 0.0045109512 0.0024623979 0.0046826318 + 439200 0.003833078 0.0027123931 0.0045989861 + 439300 0.0054514789 0.0023633942 0.005046544 + 439400 0.0045721538 0.002448944 0.004699301 + 439500 0.0048532692 0.0021856943 0.0045744128 + 439600 0.0054706642 0.0020184612 0.0047110537 + 439700 0.0044127492 0.0020780021 0.0042499021 + 439800 0.0057523251 0.0017566506 0.0045878731 + 439900 0.0065500135 0.0019478607 0.0051716955 + 440000 0.0038147952 0.0025927929 0.0044703874 + 440100 0.0039625026 0.0025847033 0.0045349975 + 440200 0.0042995908 0.0022345108 0.0043507156 + 440300 0.0044869462 0.0022591733 0.0044675921 + 440400 0.0053717143 0.0022702533 0.0049141439 + 440500 0.0057518858 0.0022950397 0.005126046 + 440600 0.0073319602 0.0022824376 0.0058911368 + 440700 0.0041840305 0.0025754742 0.0046348017 + 440800 0.0040064535 0.0024429413 0.0044148677 + 440900 0.0053037158 0.0024030798 0.0050135025 + 441000 0.0058146382 0.0023073074 0.0051691997 + 441100 0.0063264155 0.0025054599 0.0056192425 + 441200 0.004931855 0.0026423659 0.0050697633 + 441300 0.0055994696 0.0025674894 0.0053234784 + 441400 0.0035868397 0.0024668605 0.0042322581 + 441500 0.0054624458 0.0024682962 0.0051568437 + 441600 0.0053790731 0.0027970286 0.0054445411 + 441700 0.00356888 0.002600955 0.0043575131 + 441800 0.0059333128 0.0019727234 0.0048930258 + 441900 0.0060908008 0.0019004749 0.0048982909 + 442000 0.0062901424 0.0026094476 0.0057053771 + 442100 0.0053450352 0.0034459156 0.0060766752 + 442200 0.0056333466 0.0028559507 0.0056286135 + 442300 0.0049173772 0.002230205 0.0046504765 + 442400 0.0059418984 0.0020588152 0.0049833433 + 442500 0.0054218764 0.0028034627 0.0054720425 + 442600 0.0057519324 0.0034193739 0.0062504031 + 442700 0.004712852 0.0032285186 0.0055481254 + 442800 0.0055342789 0.0024926142 0.0052165171 + 442900 0.00460946 0.0020827057 0.0043514243 + 443000 0.0051954381 0.0019325022 0.0044896319 + 443100 0.0046888684 0.0024231877 0.0047309901 + 443200 0.0045740803 0.0029372724 0.0051885775 + 443300 0.0060768391 0.0032137013 0.0062046456 + 443400 0.005429541 0.0025889622 0.0052613144 + 443500 0.004406245 0.0025791405 0.0047478392 + 443600 0.0031703441 0.0031917051 0.0047521089 + 443700 0.0044100359 0.003031683 0.0052022475 + 443800 0.0040086996 0.0029690423 0.0049420741 + 443900 0.0068127158 0.002720051 0.0060731846 + 444000 0.005410474 0.0029129501 0.0055759177 + 444100 0.0052557744 0.0037313385 0.0063181649 + 444200 0.0064461976 0.0040549552 0.007227693 + 444300 0.0061003276 0.0038925499 0.0068950549 + 444400 0.0048240739 0.0036557519 0.0060301008 + 444500 0.0070113447 0.0034038307 0.0068547269 + 444600 0.0042218091 0.0031291384 0.0052070601 + 444700 0.0053441482 0.0027711153 0.0054014383 + 444800 0.0052983065 0.0025833022 0.0051910624 + 444900 0.0030046949 0.0026130436 0.0040919169 + 445000 0.004068924 0.0028126008 0.0048152743 + 445100 0.00499265 0.0030335352 0.0054908551 + 445200 0.0067588525 0.0027903903 0.006117013 + 445300 0.0040222697 0.0026925674 0.0046722783 + 445400 0.0046183496 0.002356826 0.00462992 + 445500 0.0059468358 0.0022303665 0.0051573248 + 445600 0.0042863449 0.0025763304 0.0046860158 + 445700 0.0053897116 0.0029944105 0.0056471591 + 445800 0.0050829728 0.0025696988 0.0050714745 + 445900 0.0048930273 0.0024780605 0.0048863474 + 446000 0.0057530648 0.0023196259 0.0051512124 + 446100 0.0042406176 0.0025248337 0.0046120126 + 446200 0.0037966132 0.0026222139 0.0044908594 + 446300 0.0054068673 0.0025485343 0.0052097268 + 446400 0.0053652453 0.0022344298 0.0048751365 + 446500 0.0057651589 0.0022655312 0.0051030703 + 446600 0.0058411355 0.0024510751 0.005326009 + 446700 0.0044456147 0.0023462854 0.0045343614 + 446800 0.0041191909 0.0025763069 0.0046037212 + 446900 0.005224972 0.0024233606 0.0049950265 + 447000 0.0042772582 0.0026704237 0.0047756367 + 447100 0.0046051428 0.0034471994 0.0057137931 + 447200 0.0050011181 0.0034844031 0.0059458909 + 447300 0.0048812306 0.0032981373 0.005700618 + 447400 0.0043061813 0.0034179081 0.0055373567 + 447500 0.0062499347 0.0031783937 0.0062545335 + 447600 0.005854922 0.0032156254 0.0060973448 + 447700 0.0054789353 0.0027750916 0.0054717551 + 447800 0.0042593763 0.0028954816 0.0049918934 + 447900 0.0067371739 0.0026950325 0.0060109853 + 448000 0.006356234 0.0031736977 0.0063021566 + 448100 0.0062547003 0.0032581095 0.0063365948 + 448200 0.0052489661 0.0030057102 0.0055891857 + 448300 0.004621474 0.0031478775 0.0054225092 + 448400 0.0049481416 0.0031663326 0.005601746 + 448500 0.0068961829 0.0028754151 0.0062696301 + 448600 0.0069725685 0.002653168 0.0060849791 + 448700 0.0055192458 0.0028270019 0.0055435057 + 448800 0.0050046094 0.0028400634 0.0053032696 + 448900 0.0039354815 0.002419021 0.0043560158 + 449000 0.0053570714 0.0020866002 0.0047232838 + 449100 0.0042324269 0.0018381771 0.0039213247 + 449200 0.0045887104 0.0021391119 0.0043976178 + 449300 0.0051355588 0.0029195625 0.0054472203 + 449400 0.0042495292 0.0030521885 0.0051437536 + 449500 0.0055481168 0.0024495885 0.0051803023 + 449600 0.0061010336 0.0021465085 0.005149361 + 449700 0.0053377877 0.0022025167 0.0048297091 + 449800 0.0046778288 0.0024468856 0.0047492545 + 449900 0.0063197525 0.0024803518 0.005590855 + 450000 0.0046724926 0.0023229784 0.0046227209 + 450100 0.0044896622 0.0021688282 0.0043785838 + 450200 0.0050719849 0.0021357496 0.0046321172 + 450300 0.006218636 0.0022942823 0.0053550172 + 450400 0.0049464557 0.002449932 0.0048845157 + 450500 0.0048030569 0.0028562847 0.0052202893 + 450600 0.0050395786 0.0029036995 0.0053841171 + 450700 0.0050842094 0.0028916655 0.0053940499 + 450800 0.0056503108 0.0025452145 0.0053262268 + 450900 0.0040251955 0.0023873882 0.0043685391 + 451000 0.0051426303 0.0027011919 0.0052323302 + 451100 0.005277807 0.0030474355 0.0056451062 + 451200 0.0045956272 0.0030776341 0.0053395443 + 451300 0.0056118088 0.0027807614 0.0055428236 + 451400 0.0054083047 0.0024054393 0.0050673393 + 451500 0.0047215022 0.0027607982 0.0050846626 + 451600 0.004308276 0.0029389681 0.0050594477 + 451700 0.0041140291 0.0030347883 0.005059662 + 451800 0.0057354538 0.0028832693 0.0057061879 + 451900 0.0061123384 0.0023703561 0.0053787726 + 452000 0.0049183622 0.0024844505 0.0049052069 + 452100 0.0049962309 0.0028267808 0.0052858632 + 452200 0.0044778338 0.0030756142 0.005279548 + 452300 0.00636978 0.0025437904 0.0056789165 + 452400 0.0071203952 0.0031611672 0.0066657367 + 452500 0.0049586214 0.0038626706 0.006303242 + 452600 0.0063185549 0.0033418523 0.006451766 + 452700 0.0061423373 0.0028506418 0.0058738234 + 452800 0.0053692135 0.0027473951 0.0053900549 + 452900 0.0039155263 0.0023745218 0.0043016949 + 453000 0.0046262838 0.00254688 0.0048238791 + 453100 0.0054664634 0.0025861957 0.0052767206 + 453200 0.0034610556 0.0028880904 0.0045915788 + 453300 0.0062496954 0.0030771007 0.0061531227 + 453400 0.0055406702 0.0030012693 0.0057283179 + 453500 0.0066125635 0.0024758652 0.0057304863 + 453600 0.0079311055 0.0025544191 0.0064580101 + 453700 0.0058063927 0.0029318987 0.0057897325 + 453800 0.0048084696 0.0028765247 0.0052431933 + 453900 0.0050241013 0.003172686 0.0056454858 + 454000 0.0053925766 0.0030538956 0.0057080544 + 454100 0.0055847234 0.0027650331 0.0055137641 + 454200 0.0056148518 0.0028350402 0.0055986 + 454300 0.0057145784 0.0027026965 0.0055153406 + 454400 0.005722363 0.0029583279 0.0057748034 + 454500 0.0057949788 0.0030421028 0.0058943189 + 454600 0.0046725847 0.0028260254 0.0051258132 + 454700 0.0061910526 0.0028095168 0.0058566755 + 454800 0.0048935639 0.0030430497 0.0054516007 + 454900 0.0057967225 0.0028166014 0.0056696758 + 455000 0.0055344628 0.0029832877 0.0057072811 + 455100 0.0037089483 0.0039480735 0.0057735715 + 455200 0.0070711585 0.003881456 0.0073617918 + 455300 0.0050710013 0.0035524373 0.0060483208 + 455400 0.0048161576 0.003083862 0.0054543146 + 455500 0.0053198241 0.0032024377 0.0058207887 + 455600 0.006939844 0.003020849 0.0064365534 + 455700 0.0043029648 0.0028930394 0.0050109049 + 455800 0.0047652943 0.0029360287 0.005281447 + 455900 0.0043386383 0.0030320833 0.0051675069 + 456000 0.0061697142 0.0028234294 0.0058600856 + 456100 0.0063914623 0.0027770244 0.0059228222 + 456200 0.0045662067 0.002835239 0.0050826689 + 456300 0.0054247811 0.0027002913 0.0053703007 + 456400 0.0045943167 0.0027225083 0.0049837736 + 456500 0.0061223388 0.0028579871 0.0058713258 + 456600 0.0075274292 0.0028041182 0.0065090247 + 456700 0.0061953093 0.0029791449 0.0060283987 + 456800 0.0050378761 0.0030421104 0.0055216901 + 456900 0.0052962551 0.0028118267 0.0054185773 + 457000 0.0044338331 0.002470759 0.0046530363 + 457100 0.0043107807 0.0026134604 0.0047351727 + 457200 0.0036492823 0.0028558331 0.0046519642 + 457300 0.0054171291 0.0026106633 0.0052769066 + 457400 0.0049744494 0.0026161506 0.0050645124 + 457500 0.003813683 0.0025188248 0.0043958719 + 457600 0.0051442107 0.0023608781 0.0048927942 + 457700 0.0041797398 0.0026022216 0.0046594373 + 457800 0.0044731759 0.0020820237 0.004283665 + 457900 0.005828421 0.0021974558 0.0050661318 + 458000 0.0047076296 0.0028747455 0.0051917819 + 458100 0.0053714072 0.0033037412 0.0059474807 + 458200 0.0068959047 0.0032106156 0.0066046937 + 458300 0.0058201099 0.0028762564 0.0057408418 + 458400 0.0055129343 0.002604292 0.0053176894 + 458500 0.006240043 0.0022052498 0.005276521 + 458600 0.0048469323 0.0024799383 0.0048655378 + 458700 0.0038278756 0.0026525316 0.0045365641 + 458800 0.0057898044 0.0030999513 0.0059496207 + 458900 0.0037542355 0.0033297579 0.0051775457 + 459000 0.0043664242 0.0032250401 0.0053741395 + 459100 0.0054696559 0.0028281511 0.0055202474 + 459200 0.0045092053 0.0025303804 0.0047497549 + 459300 0.004281595 0.0022661296 0.0043734772 + 459400 0.0042292818 0.0022762772 0.0043578768 + 459500 0.0029500479 0.0028355235 0.0042875003 + 459600 0.0034034849 0.0026951884 0.0043703411 + 459700 0.0058939967 0.002473296 0.0053742475 + 459800 0.0044073257 0.0020856324 0.004254863 + 459900 0.0043887776 0.0020551488 0.0042152503 + 460000 0.0052652366 0.0026182739 0.0052097576 + 460100 0.0033987288 0.0027610647 0.0044338765 + 460200 0.0043222921 0.0023457773 0.0044731555 + 460300 0.0048173408 0.0027266088 0.0050976437 + 460400 0.0047092011 0.0029612561 0.005279066 + 460500 0.0045859185 0.0028081637 0.0050652955 + 460600 0.0044450354 0.0022622012 0.004449992 + 460700 0.0071466117 0.0018863083 0.0054037812 + 460800 0.0059273811 0.0019881652 0.0049055481 + 460900 0.0054382396 0.0023352087 0.0050118422 + 461000 0.0058490009 0.0022813582 0.0051601633 + 461100 0.0044342268 0.0023737986 0.0045562696 + 461200 0.0041128656 0.002068705 0.0040930061 + 461300 0.0052826348 0.0026074736 0.0052075204 + 461400 0.0053555947 0.0030231227 0.0056590795 + 461500 0.0052392106 0.0031494026 0.0057280766 + 461600 0.0057458612 0.0027426333 0.0055706744 + 461700 0.0072800318 0.0024786139 0.0060617546 + 461800 0.0035325197 0.0024510088 0.0041896709 + 461900 0.004405811 0.0026161916 0.0047846768 + 462000 0.0054239635 0.0030533013 0.0057229083 + 462100 0.0046426301 0.0031423589 0.0054274033 + 462200 0.0051522087 0.0027731064 0.0053089591 + 462300 0.0048951149 0.0025537392 0.0049630536 + 462400 0.0048965389 0.0027822515 0.0051922668 + 462500 0.0052171558 0.0028200769 0.0053878958 + 462600 0.0042210831 0.0023978625 0.0044754268 + 462700 0.0035322935 0.0022184266 0.0039569773 + 462800 0.0046948557 0.0023837207 0.00469447 + 462900 0.0048764181 0.0024610334 0.0048611454 + 463000 0.0031214761 0.0030998244 0.0046361759 + 463100 0.004697624 0.0026613902 0.0049735021 + 463200 0.0044546745 0.0021014179 0.004293953 + 463300 0.0050956286 0.0022895959 0.0047976006 + 463400 0.0056368967 0.0024091346 0.0051835447 + 463500 0.0051031938 0.002446119 0.0049578472 + 463600 0.0057884516 0.0025018522 0.0053508557 + 463700 0.0041792746 0.0031120271 0.0051690138 + 463800 0.0065125839 0.0031451192 0.0063505316 + 463900 0.0063113756 0.0024892332 0.0055956134 + 464000 0.0043335691 0.0023699712 0.0045028997 + 464100 0.0045778794 0.0024455665 0.0046987416 + 464200 0.0044748974 0.0025966805 0.004799169 + 464300 0.0055191539 0.0026711557 0.0053876142 + 464400 0.0041096069 0.002669336 0.0046920332 + 464500 0.0064139421 0.0022740883 0.0054309504 + 464600 0.0047192501 0.0023085544 0.0046313103 + 464700 0.0059169457 0.0024667575 0.0053790042 + 464800 0.0060163178 0.0026939326 0.005655089 + 464900 0.0072806977 0.0026726401 0.0062561085 + 465000 0.0054300677 0.0025129761 0.0051855876 + 465100 0.0053148123 0.0021372197 0.0047531039 + 465200 0.0047607762 0.0024096319 0.0047528265 + 465300 0.0048732713 0.002238308 0.0046368713 + 465400 0.0044788313 0.0023216287 0.0045260535 + 465500 0.0040571733 0.0023034734 0.0043003634 + 465600 0.004202925 0.0019977614 0.0040663886 + 465700 0.0043469126 0.0019817908 0.0041212869 + 465800 0.0050555033 0.0023564534 0.0048447089 + 465900 0.0050094441 0.0025562218 0.0050218076 + 466000 0.0049780011 0.0031053103 0.0055554202 + 466100 0.0044210146 0.0029250103 0.0051009784 + 466200 0.0054218755 0.0028027457 0.0054713251 + 466300 0.0052195208 0.0028960263 0.0054650092 + 466400 0.0055964624 0.0030377418 0.0057922507 + 466500 0.0057318726 0.0028219046 0.0056430606 + 466600 0.0038447348 0.0022156433 0.0041079737 + 466700 0.0036289909 0.0022678153 0.0040539593 + 466800 0.005435508 0.0025775643 0.0052528534 + 466900 0.0054164813 0.0025838294 0.0052497538 + 467000 0.0051185322 0.0025630844 0.005082362 + 467100 0.0056432124 0.0028699829 0.0056475016 + 467200 0.0060142675 0.002948751 0.0059088983 + 467300 0.005104227 0.0027163 0.0052285368 + 467400 0.0051071573 0.0027321041 0.0052457831 + 467500 0.0035923841 0.0028480099 0.0046161365 + 467600 0.0047267625 0.0029583971 0.0052848505 + 467700 0.0036291987 0.0028107078 0.0045969541 + 467800 0.0065045938 0.0030059336 0.0062074133 + 467900 0.005102008 0.0026010533 0.0051121978 + 468000 0.0038772176 0.0023264183 0.0042347363 + 468100 0.0036643686 0.0023651877 0.0041687441 + 468200 0.0066724411 0.0025571048 0.0058411969 + 468300 0.0038144543 0.0029221067 0.0047995334 + 468400 0.0047435102 0.0030211112 0.0053558076 + 468500 0.0059524295 0.0030409125 0.0059706239 + 468600 0.0050410893 0.0025728844 0.0050540455 + 468700 0.0054033155 0.00252257 0.0051820144 + 468800 0.004931648 0.0024827574 0.0049100529 + 468900 0.0052558039 0.00249678 0.005083621 + 469000 0.0056169893 0.0029768292 0.0057414411 + 469100 0.0040486649 0.0033809821 0.0053736844 + 469200 0.0067254842 0.0026462172 0.0059564165 + 469300 0.0056399027 0.0022934808 0.0050693704 + 469400 0.0043209139 0.0026716699 0.0047983697 + 469500 0.004045031 0.0023651329 0.0043560466 + 469600 0.0049226037 0.0022355995 0.0046584435 + 469700 0.0047050267 0.0016936143 0.0040093696 + 469800 0.0052675838 0.001638886 0.0042315249 + 469900 0.0040003141 0.0017442947 0.0037131993 + 470000 0.0064627144 0.0021260069 0.0053068742 + 470100 0.0060586163 0.002619176 0.0056011512 + 470200 0.0054489535 0.0025622012 0.005244108 + 470300 0.0054259923 0.0022126659 0.0048832714 + 470400 0.004591247 0.0022566421 0.0045163965 + 470500 0.005694502 0.0026392313 0.005441994 + 470600 0.0056777588 0.0029498632 0.0057443851 + 470700 0.0052100997 0.0027606765 0.0053250225 + 470800 0.0062974466 0.0028790913 0.0059786158 + 470900 0.0046813902 0.0028435053 0.0051476271 + 471000 0.0067750069 0.0023150919 0.0056496656 + 471100 0.00460977 0.0022445526 0.0045134237 + 471200 0.0037451785 0.0027523206 0.0045956506 + 471300 0.004408116 0.0028532789 0.0050228985 + 471400 0.0060489915 0.0023009884 0.0052782264 + 471500 0.0061289265 0.0017097465 0.0047263275 + 471600 0.0060504861 0.002141529 0.0051195026 + 471700 0.0033170506 0.0031674207 0.0048000315 + 471800 0.0049358834 0.00292139 0.0053507701 + 471900 0.0059624789 0.0024881689 0.0054228265 + 472000 0.0061645755 0.0021995047 0.0052336317 + 472100 0.0053477856 0.0024308306 0.0050629438 + 472200 0.0039264984 0.0028188226 0.004751396 + 472300 0.0049161072 0.0027601455 0.005179792 + 472400 0.0051446352 0.0027333281 0.0052654532 + 472500 0.0057241984 0.0025059777 0.0053233566 + 472600 0.0056987657 0.0024657289 0.0052705901 + 472700 0.006832711 0.0024809943 0.0058439692 + 472800 0.005297124 0.0020544002 0.0046615785 + 472900 0.0047242194 0.0016298001 0.0039550018 + 473000 0.0049483411 0.0019650909 0.0044006026 + 473100 0.0033711874 0.0024144212 0.0040736775 + 473200 0.004982502 0.0023795654 0.0048318906 + 473300 0.0056876957 0.0024983032 0.005297716 + 473400 0.0044894257 0.0028688348 0.005078474 + 473500 0.0047743772 0.0026101497 0.0049600385 + 473600 0.0054477961 0.002498511 0.0051798482 + 473700 0.0052948258 0.0025464115 0.0051524586 + 473800 0.0050270977 0.0025319921 0.0050062668 + 473900 0.0050565908 0.0022146597 0.0047034505 + 474000 0.0060964021 0.0023603237 0.0053608966 + 474100 0.0039673532 0.0024041483 0.00435683 + 474200 0.0044034338 0.0028143051 0.0049816202 + 474300 0.0037671115 0.0025114087 0.0043655339 + 474400 0.0053268625 0.0021975254 0.0048193405 + 474500 0.0040501689 0.0023292419 0.0043226844 + 474600 0.0045732264 0.0025673108 0.0048181957 + 474700 0.0047447856 0.0029798254 0.0053151495 + 474800 0.004860589 0.0028280422 0.0052203633 + 474900 0.0068645741 0.0026281598 0.0060068173 + 475000 0.0037098816 0.0027662455 0.0045922029 + 475100 0.0039597654 0.0021722207 0.0041211678 + 475200 0.0050756659 0.0018508504 0.0043490297 + 475300 0.0030934016 0.0021764192 0.0036989528 + 475400 0.004911938 0.0023398656 0.0047574601 + 475500 0.0054535645 0.0027072592 0.0053914355 + 475600 0.004077581 0.0027500933 0.0047570277 + 475700 0.0051869731 0.002865657 0.0054186203 + 475800 0.0056038757 0.0025594595 0.0053176171 + 475900 0.0040238463 0.002201128 0.0041816148 + 476000 0.004153417 0.0020281487 0.0040724086 + 476100 0.005739244 0.0016574783 0.0044822625 + 476200 0.0057515297 0.0024371189 0.0052679499 + 476300 0.0052564389 0.0031334036 0.0057205571 + 476400 0.0058081865 0.0026057579 0.0054644747 + 476500 0.0047571441 0.0020527281 0.004394135 + 476600 0.0048147605 0.0019357911 0.004305556 + 476700 0.0043165033 0.0019441015 0.0040686305 + 476800 0.0044895082 0.0019501892 0.004159869 + 476900 0.0046796416 0.0014535839 0.003756845 + 477000 0.0060930891 0.0015592099 0.0045581522 + 477100 0.0055004423 0.002176388 0.0048836369 + 477200 0.0042849349 0.0024863996 0.004595391 + 477300 0.0037988853 0.0022787226 0.0041484865 + 477400 0.0048906807 0.0018644863 0.0042716182 + 477500 0.0047390399 0.0021441269 0.0044766231 + 477600 0.005423097 0.0020697639 0.0047389445 + 477700 0.0042845412 0.0020429499 0.0041517476 + 477800 0.0065775894 0.0022652205 0.0055026278 + 477900 0.0052522684 0.0026153529 0.0052004537 + 478000 0.0063348226 0.0021442077 0.0052621282 + 478100 0.0049868188 0.0021770221 0.004631472 + 478200 0.0038212315 0.0022036068 0.0040843692 + 478300 0.0062415134 0.0021303865 0.0052023813 + 478400 0.0059432449 0.0022127507 0.0051379415 + 478500 0.0038021183 0.0023748576 0.0042462127 + 478600 0.005402322 0.0023423196 0.005001275 + 478700 0.0049064492 0.0024445405 0.0048594334 + 478800 0.0061245893 0.0024455837 0.00546003 + 478900 0.0058571226 0.0026736669 0.0055564694 + 479000 0.0049807179 0.0027552864 0.0052067335 + 479100 0.0057793335 0.0025906534 0.0054351691 + 479200 0.006054264 0.0021153659 0.0050951989 + 479300 0.0051505345 0.0020207057 0.0045557344 + 479400 0.0054304196 0.0019533006 0.0046260853 + 479500 0.0041774513 0.0024134167 0.0044695061 + 479600 0.0045940704 0.0029527287 0.0052138728 + 479700 0.0046793729 0.0022224256 0.0045255544 + 479800 0.0038282686 0.0017235818 0.0036078078 + 479900 0.004851161 0.0021023951 0.0044900759 + 480000 0.0046756662 0.0026168286 0.004918133 + 480100 0.0042297508 0.0028063914 0.0048882219 + 480200 0.0045530214 0.0027966415 0.0050375817 + 480300 0.0051139768 0.0028133213 0.0053303567 + 480400 0.0054458642 0.0028171919 0.0054975782 + 480500 0.0062863506 0.0036253917 0.0067194549 + 480600 0.0055542986 0.0033820883 0.0061158447 + 480700 0.0052770352 0.0024628249 0.0050601157 + 480800 0.0047213137 0.00217778 0.0045015516 + 480900 0.0061516845 0.0023138143 0.0053415965 + 481000 0.0052900661 0.0027678286 0.005371533 + 481100 0.0035050701 0.0030472353 0.004772387 + 481200 0.0047106497 0.0024235187 0.0047420416 + 481300 0.0050638787 0.0022735106 0.0047658884 + 481400 0.0040582798 0.0022113623 0.0042087968 + 481500 0.0045576456 0.0020929481 0.0043361643 + 481600 0.0043359016 0.0019197726 0.0040538492 + 481700 0.0040436139 0.0020123232 0.0040025395 + 481800 0.0055218394 0.0028408442 0.0055586246 + 481900 0.0046622037 0.0033206808 0.0056153592 + 482000 0.0062225626 0.0030079055 0.006070573 + 482100 0.0057207717 0.0033215035 0.0061371958 + 482200 0.0076365413 0.0027019655 0.0064605756 + 482300 0.0064847925 0.0024973977 0.0056891315 + 482400 0.0039552029 0.0028641766 0.0048108781 + 482500 0.0048421046 0.0027526888 0.0051359122 + 482600 0.0054248725 0.0023734266 0.005043481 + 482700 0.0051952289 0.0026558566 0.0052128833 + 482800 0.0057811494 0.0023690474 0.0052144569 + 482900 0.0069107017 0.0022373664 0.0056387275 + 483000 0.003260059 0.0025439634 0.0041485237 + 483100 0.004342333 0.0024516572 0.0045888993 + 483200 0.0043941362 0.0027014088 0.0048641477 + 483300 0.004124676 0.0027619887 0.0047921027 + 483400 0.0054533137 0.0023540897 0.0050381425 + 483500 0.005444591 0.0026335591 0.0053133187 + 483600 0.005094068 0.0029242918 0.0054315284 + 483700 0.0072347163 0.0023795961 0.005940433 + 483800 0.005756363 0.0025639254 0.0053971353 + 483900 0.0043660948 0.0027681927 0.00491713 + 484000 0.0044291102 0.0030809363 0.005260889 + 484100 0.0068695076 0.0031873174 0.0065684032 + 484200 0.0068817691 0.0029874716 0.0063745923 + 484300 0.0052009642 0.0030180195 0.0055778691 + 484400 0.0043410323 0.0028691039 0.0050057058 + 484500 0.0039167736 0.002893732 0.004821519 + 484600 0.0061456096 0.0023519146 0.0053767068 + 484700 0.0054104649 0.0020609726 0.0047239358 + 484800 0.0057657668 0.0018428905 0.0046807289 + 484900 0.0069340659 0.0018226241 0.0052354847 + 485000 0.0047385565 0.0024355553 0.0047678135 + 485100 0.0060366298 0.0026951561 0.0056663098 + 485200 0.0042472182 0.0022598951 0.0043503228 + 485300 0.0044190897 0.0024462859 0.0046213066 + 485400 0.0049476161 0.0023231168 0.0047582716 + 485500 0.0048139763 0.0023777703 0.0047471493 + 485600 0.0061407819 0.002534779 0.0055571951 + 485700 0.0053065367 0.002458414 0.005070225 + 485800 0.0062604456 0.0025063479 0.0055876609 + 485900 0.004022574 0.0025754494 0.00455531 + 486000 0.0059455186 0.0023754748 0.0053017848 + 486100 0.0047916116 0.0026864735 0.0050448449 + 486200 0.0058380874 0.0024450211 0.0053184548 + 486300 0.0043179263 0.0023348433 0.0044600726 + 486400 0.0059843306 0.002134399 0.0050798117 + 486500 0.0043429014 0.0019195061 0.0040570279 + 486600 0.0062001503 0.0017271637 0.0047788001 + 486700 0.0045639685 0.0017990925 0.0040454208 + 486800 0.0047266863 0.0022103281 0.004536744 + 486900 0.0057053181 0.0025631719 0.0053712581 + 487000 0.0043585521 0.0028839957 0.0050292206 + 487100 0.0066372426 0.0029683185 0.0062350863 + 487200 0.0051197986 0.0028901392 0.0054100401 + 487300 0.0054817039 0.0027489451 0.0054469713 + 487400 0.0055781956 0.0025479244 0.0052934426 + 487500 0.0055702283 0.0025386846 0.0052802814 + 487600 0.0052191421 0.0025799102 0.0051487068 + 487700 0.0037740496 0.0029554471 0.0048129872 + 487800 0.0033748451 0.0027318193 0.0043928759 + 487900 0.0045339026 0.0025018369 0.004733367 + 488000 0.0068531729 0.0023022664 0.0056753124 + 488100 0.0036983625 0.0027982885 0.0046185763 + 488200 0.0055715419 0.0028352006 0.0055774439 + 488300 0.0063916214 0.0025897247 0.0057356008 + 488400 0.0054082376 0.0026168543 0.0052787212 + 488500 0.0054471595 0.0028524087 0.0055334326 + 488600 0.0049524024 0.00309312 0.0055306306 + 488700 0.0042883237 0.0031448059 0.0052554652 + 488800 0.0051150426 0.0030613534 0.0055789134 + 488900 0.0057905429 0.0026396949 0.0054897277 + 489000 0.0063396982 0.0021984565 0.0053187768 + 489100 0.0046222288 0.0020257794 0.0043007827 + 489200 0.0053824829 0.0023685484 0.0050177392 + 489300 0.0049662689 0.0028794102 0.0053237457 + 489400 0.0044178739 0.003181306 0.0053557283 + 489500 0.0045717937 0.0031940408 0.0054442205 + 489600 0.0064183492 0.0025912034 0.0057502346 + 489700 0.0050911954 0.0026077014 0.0051135241 + 489800 0.0035078411 0.0025546123 0.0042811278 + 489900 0.0038569539 0.0025915928 0.0044899373 + 490000 0.0040479319 0.0028041708 0.0047965123 + 490100 0.0054935317 0.0028368998 0.0055407474 + 490200 0.0047534647 0.0027130162 0.0050526121 + 490300 0.005589785 0.0026787901 0.0054300123 + 490400 0.0080711655 0.0027427555 0.0067152822 + 490500 0.0055769198 0.0026429724 0.0053878626 + 490600 0.0056232585 0.0024760455 0.0052437431 + 490700 0.004749365 0.0022843124 0.0046218905 + 490800 0.0048863929 0.0019312249 0.0043362464 + 490900 0.0030815303 0.0018946915 0.0034113822 + 491000 0.0046758169 0.0020526531 0.0043540317 + 491100 0.0050524573 0.0025687189 0.0050554752 + 491200 0.0048507316 0.00299753 0.0053849994 + 491300 0.0076948341 0.002631964 0.0064192652 + 491400 0.0047953952 0.002678362 0.0050385956 + 491500 0.0050465612 0.0024615657 0.0049454201 + 491600 0.0043681474 0.0020626901 0.0042126376 + 491700 0.0046942501 0.0024301759 0.0047406271 + 491800 0.0059764497 0.0028367656 0.0057782995 + 491900 0.005955461 0.0033275671 0.0062587706 + 492000 0.0042074061 0.0036966936 0.0057675263 + 492100 0.0045763908 0.0032003561 0.0054527985 + 492200 0.0042992556 0.0027508513 0.0048668912 + 492300 0.0059995649 0.0027585912 0.0057115021 + 492400 0.0045712157 0.0024397023 0.0046895975 + 492500 0.0036671272 0.0025491993 0.0043541135 + 492600 0.0059204401 0.0023798466 0.0052938132 + 492700 0.0064055209 0.0022733982 0.0054261155 + 492800 0.0050844378 0.0023954969 0.0048979936 + 492900 0.0058970641 0.0021306929 0.0050331541 + 493000 0.0038063094 0.0022277328 0.0041011507 + 493100 0.0041290243 0.0025727383 0.0046049924 + 493200 0.0069115479 0.0023435232 0.0057453007 + 493300 0.0053508119 0.0021532253 0.004786828 + 493400 0.0042859699 0.0022763165 0.0043858173 + 493500 0.0048584285 0.0022698571 0.0046611149 + 493600 0.0036742743 0.0025787193 0.0043871512 + 493700 0.0053463727 0.0027819426 0.0054133605 + 493800 0.005270076 0.0027033185 0.005297184 + 493900 0.0050352102 0.0026523102 0.0051305777 + 494000 0.0053507888 0.002983115 0.0056167064 + 494100 0.005284172 0.0030988999 0.0056997033 + 494200 0.0054460006 0.0030150907 0.0056955441 + 494300 0.0066284645 0.0029400985 0.0062025459 + 494400 0.0049997025 0.0031076738 0.0055684649 + 494500 0.0056949657 0.0029392056 0.0057421965 + 494600 0.0056694613 0.0028929604 0.0056833984 + 494700 0.0044373681 0.0031176949 0.005301712 + 494800 0.0047891062 0.003228167 0.0055853052 + 494900 0.0051700368 0.0027495147 0.0052941421 + 495000 0.0076329873 0.0026203896 0.0063772505 + 495100 0.0058871191 0.0036574487 0.0065550151 + 495200 0.0056006099 0.0039711075 0.0067276577 + 495300 0.0039883992 0.0033268043 0.0052898445 + 495400 0.0059989698 0.0030422516 0.0059948696 + 495500 0.0057113333 0.0028594082 0.0056704551 + 495600 0.0053833199 0.002743286 0.0053928888 + 495700 0.0046847886 0.0030076384 0.0053134328 + 495800 0.0049742745 0.0027340816 0.0051823573 + 495900 0.0058003851 0.0023361559 0.005191033 + 496000 0.006014056 0.0030029718 0.005963015 + 496100 0.0057919231 0.0033621921 0.0062129042 + 496200 0.0066180909 0.0028319212 0.0060892629 + 496300 0.0065917874 0.002770805 0.0060152003 + 496400 0.0063833453 0.0031447331 0.0062865359 + 496500 0.0060915137 0.003199935 0.0061981019 + 496600 0.005065513 0.0028675541 0.0053607363 + 496700 0.006281029 0.0025626756 0.0056541195 + 496800 0.0061063741 0.0027518023 0.0057572833 + 496900 0.0049136855 0.0025816073 0.0050000619 + 497000 0.0043476048 0.0020356099 0.0041754466 + 497100 0.0036032487 0.0019894594 0.0037629334 + 497200 0.0068945121 0.0022869125 0.0056803051 + 497300 0.0060057664 0.0028285276 0.0057844908 + 497400 0.0056761855 0.0033667937 0.0061605412 + 497500 0.0064192005 0.0031774545 0.0063369047 + 497600 0.0056383716 0.0023769947 0.0051521307 + 497700 0.005515897 0.0022468609 0.0049617164 + 497800 0.0038619146 0.0024076038 0.0043083899 + 497900 0.0050063366 0.0024470648 0.0049111211 + 498000 0.0045639683 0.0027283772 0.0049747053 + 498100 0.0041996928 0.0025705554 0.0046375917 + 498200 0.0059931823 0.0022674248 0.0052171943 + 498300 0.0070636315 0.0027975309 0.006274162 + 498400 0.0040476711 0.0029626355 0.0049548486 + 498500 0.0050962629 0.0031997129 0.0057080297 + 498600 0.0043324455 0.0028993885 0.005031764 + 498700 0.0046579414 0.0025855405 0.004878121 + 498800 0.0064937655 0.0018670715 0.0050632217 + 498900 0.0058547536 0.0017070008 0.0045886373 + 499000 0.006968326 0.0015857537 0.0050154767 + 499100 0.0066311815 0.0016622015 0.0049259862 + 499200 0.0058773904 0.0021384545 0.0050312327 + 499300 0.005102984 0.0020369556 0.0045485806 + 499400 0.0045382808 0.001874611 0.0041082961 + 499500 0.0043611391 0.001637688 0.0037841861 + 499600 0.0042185575 0.0018736111 0.0039499324 + 499700 0.0052279827 0.0018473267 0.0044204745 + 499800 0.0048289032 0.0017631609 0.0041398867 + 499900 0.0042484817 0.001667882 0.0037589316 + 500000 0.0032469482 0.001608823 0.0032069303 + 500100 0.0041684985 0.0016772916 0.0037289745 + 500200 0.0063146479 0.0016756118 0.0047836025 + 500300 0.0057499747 0.0018270082 0.0046570738 + 500400 0.0048892829 0.00214396 0.004550404 + 500500 0.0052483569 0.0017446589 0.0043278345 + 500600 0.0048035817 0.0018252984 0.0041895613 + 500700 0.0054303544 0.0019875371 0.0046602896 + 500800 0.0062160722 0.0022790737 0.0053385468 + 500900 0.0042694487 0.0020630132 0.0041643825 + 501000 0.0066740395 0.0020876045 0.0053724833 + 501100 0.0042743831 0.0026634376 0.0047672356 + 501200 0.004227969 0.0027911033 0.0048720568 + 501300 0.0050361713 0.0021797378 0.0046584783 + 501400 0.0054094057 0.0020433582 0.0047058001 + 501500 0.0058328899 0.0018618921 0.0047327676 + 501600 0.0055040116 0.0022180779 0.0049270836 + 501700 0.0053138004 0.0021221823 0.0047375684 + 501800 0.0050315584 0.0020865538 0.004563024 + 501900 0.0048183633 0.0020942046 0.0044657428 + 502000 0.0038068692 0.00259403 0.0044677234 + 502100 0.0042401358 0.002859221 0.0049461628 + 502200 0.0052821785 0.0025324398 0.005132262 + 502300 0.007103115 0.002002544 0.0054986084 + 502400 0.0044376999 0.0022813867 0.0044655671 + 502500 0.0051270104 0.0023251606 0.004848611 + 502600 0.0048951078 0.0022295801 0.0046388909 + 502700 0.0056944586 0.0022169832 0.0050197246 + 502800 0.0059145668 0.0019928939 0.0049039698 + 502900 0.0047619276 0.0023641772 0.0047079384 + 503000 0.0060103984 0.0028606656 0.0058189086 + 503100 0.0039635125 0.0028389299 0.0047897212 + 503200 0.005604083 0.0026483614 0.005406621 + 503300 0.0056630056 0.0024669462 0.0052542067 + 503400 0.005141557 0.0022540072 0.0047846173 + 503500 0.0058100886 0.0021992031 0.0050588561 + 503600 0.0059887229 0.0023168731 0.0052644477 + 503700 0.0066170524 0.0020783954 0.0053352259 + 503800 0.0063044689 0.0017827275 0.0048857083 + 503900 0.0041411764 0.0023148491 0.0043530843 + 504000 0.0059965634 0.002303571 0.0052550046 + 504100 0.0037128663 0.002495298 0.0043227244 + 504200 0.0054912246 0.0023454399 0.005048152 + 504300 0.0054243754 0.0020767092 0.0047465189 + 504400 0.0042831299 0.0018645119 0.0039726149 + 504500 0.0046474884 0.0020586461 0.0043460818 + 504600 0.0056123586 0.0021327978 0.0048951306 + 504700 0.0063476377 0.0019334898 0.0050577178 + 504800 0.0051602733 0.0018945815 0.0044344035 + 504900 0.005512996 0.0019536788 0.0046671065 + 505000 0.00481039 0.0018372793 0.0042048932 + 505100 0.0040018067 0.0014307809 0.0034004201 + 505200 0.0041438974 0.0015649617 0.0036045362 + 505300 0.0044726972 0.0013343663 0.003535772 + 505400 0.0055677795 0.0013886024 0.0041289939 + 505500 0.0069773527 0.0016637565 0.0050979223 + 505600 0.003983827 0.0023299536 0.0042907435 + 505700 0.0041425135 0.0024478238 0.0044867172 + 505800 0.0053674504 0.0020082786 0.0046500706 + 505900 0.0043740321 0.0022319756 0.0043848195 + 506000 0.0049973009 0.00239419 0.0048537991 + 506100 0.0054735012 0.0023060387 0.0050000276 + 506200 0.0048668127 0.0017253624 0.0041207468 + 506300 0.0045432536 0.0013407189 0.0035768515 + 506400 0.0045440944 0.0018982109 0.0041347574 + 506500 0.0050631037 0.0021955252 0.0046875215 + 506600 0.0037741881 0.0021778985 0.0040355067 + 506700 0.005303399 0.0022283549 0.0048386216 + 506800 0.0056137981 0.0021142348 0.004877276 + 506900 0.0040357696 0.0021726822 0.0041590376 + 507000 0.0060124666 0.002116832 0.0050760929 + 507100 0.0057655515 0.0024369803 0.0052747127 + 507200 0.00479659 0.0024024533 0.004763275 + 507300 0.0046806325 0.002519304 0.0048230528 + 507400 0.0063324016 0.0022637258 0.0053804547 + 507500 0.0058255419 0.0025663938 0.0054336528 + 507600 0.0048935774 0.0024661253 0.0048746829 + 507700 0.0049525394 0.002013263 0.004450841 + 507800 0.0050732749 0.0018199718 0.0043169743 + 507900 0.0033193558 0.0022862555 0.0039200009 + 508000 0.0049633151 0.0025749666 0.0050178482 + 508100 0.0035263498 0.0024158857 0.004151511 + 508200 0.0073414981 0.0020443429 0.0056577365 + 508300 0.0058321092 0.002683676 0.0055541673 + 508400 0.0058662703 0.0029674757 0.0058547806 + 508500 0.0042458961 0.0029347162 0.0050244932 + 508600 0.0056524687 0.0028869162 0.0056689906 + 508700 0.0054465357 0.0024124568 0.0050931736 + 508800 0.0046226438 0.0023144925 0.0045897 + 508900 0.0054298301 0.0026294877 0.0053019822 + 509000 0.0056857511 0.0028002115 0.0055986671 + 509100 0.0052352396 0.0026796271 0.0052563466 + 509200 0.0049448153 0.0028189534 0.0052527297 + 509300 0.0054189715 0.0030860361 0.0057531861 + 509400 0.0050998203 0.0035204776 0.0060305454 + 509500 0.0055692745 0.003207115 0.0059482423 + 509600 0.0040923869 0.0029289109 0.0049431326 + 509700 0.0050830436 0.0026571605 0.005158971 + 509800 0.0057367925 0.0026431534 0.005466731 + 509900 0.0047786728 0.0019842825 0.0043362856 + 510000 0.005041201 0.002272965 0.0047541812 + 510100 0.0050000867 0.0023745949 0.0048355751 + 510200 0.0051136554 0.0026978518 0.005214729 + 510300 0.0043890071 0.0030027027 0.0051629171 + 510400 0.0040282983 0.0029733033 0.0049559814 + 510500 0.0048358693 0.0031562324 0.0055363868 + 510600 0.0068379489 0.0032743482 0.0066399011 + 510700 0.004644749 0.0033558817 0.005641969 + 510800 0.0050862976 0.0034435438 0.005946956 + 510900 0.0045612673 0.0033150483 0.005560047 + 511000 0.0061312635 0.0028742535 0.0058919848 + 511100 0.0049613814 0.0025331935 0.0049751234 + 511200 0.0051122184 0.0024103631 0.0049265331 + 511300 0.004643579 0.0026058351 0.0048913466 + 511400 0.0053635895 0.0025748181 0.0052147098 + 511500 0.0044855148 0.0017762771 0.0039839914 + 511600 0.004891381 0.001599674 0.0040071506 + 511700 0.0049450592 0.00214128 0.0045751763 + 511800 0.005050872 0.0025174666 0.0050034427 + 511900 0.0046638932 0.002103458 0.004398968 + 512000 0.0043812316 0.0017788708 0.0039352582 + 512100 0.0048726072 0.0019213591 0.0043195955 + 512200 0.003739028 0.0025925316 0.0044328344 + 512300 0.0043435413 0.003154165 0.0052920017 + 512400 0.0040744773 0.0030853768 0.0050907836 + 512500 0.0049386467 0.00283652 0.0052672602 + 512600 0.0041706624 0.0024487124 0.0045014603 + 512700 0.0044824731 0.0020163616 0.0042225789 + 512800 0.0050295746 0.002003509 0.0044790027 + 512900 0.0042682567 0.0020885269 0.0041893095 + 513000 0.0040478534 0.0023995112 0.0043918141 + 513100 0.0052265809 0.0023586101 0.0049310679 + 513200 0.004949219 0.0020706313 0.004506575 + 513300 0.0046867551 0.0019348467 0.004241609 + 513400 0.0068490869 0.0017505745 0.0051216095 + 513500 0.0045799906 0.0021654951 0.0044197092 + 513600 0.0043129063 0.0026427366 0.0047654951 + 513700 0.0048967514 0.0021447029 0.0045548227 + 513800 0.0053472148 0.0026033851 0.0052352174 + 513900 0.006185189 0.0026074037 0.0056516764 + 514000 0.0068405001 0.0025719548 0.0059387634 + 514100 0.0064154445 0.0030267894 0.006184391 + 514200 0.0050172876 0.0034218581 0.0058913044 + 514300 0.004870182 0.0031817942 0.005578837 + 514400 0.0043362604 0.0027490446 0.0048832978 + 514500 0.0063249142 0.0024542652 0.0055673089 + 514600 0.0050015532 0.0027032718 0.0051649737 + 514700 0.0040293141 0.0025875443 0.0045707223 + 514800 0.0060249411 0.002139394 0.0051047946 + 514900 0.0071507686 0.0020340325 0.0055535514 + 515000 0.005716801 0.0024749012 0.0052886392 + 515100 0.0053174847 0.002551522 0.0051687215 + 515200 0.0051947708 0.0025564872 0.0051132885 + 515300 0.0047222194 0.0027508199 0.0050750372 + 515400 0.004210625 0.0025338003 0.0046062173 + 515500 0.0049869495 0.0019894325 0.0044439467 + 515600 0.004414836 0.002081796 0.0042547231 + 515700 0.0031984708 0.0021068181 0.0036810654 + 515800 0.0058958546 0.0021341952 0.0050360612 + 515900 0.0046004784 0.0017890336 0.0040533315 + 516000 0.0054333029 0.0020708156 0.0047450194 + 516100 0.0064946741 0.0022743588 0.0054709562 + 516200 0.0072920914 0.0020125602 0.0056016364 + 516300 0.006235203 0.002287745 0.005356634 + 516400 0.0047797244 0.0025736188 0.0049261394 + 516500 0.0063291833 0.00201034 0.0051254849 + 516600 0.0040104878 0.0020361769 0.0040100888 + 516700 0.0047916334 0.0020394246 0.0043978067 + 516800 0.004841152 0.002433234 0.0048159885 + 516900 0.0050924433 0.0027563148 0.0052627518 + 517000 0.0071828562 0.0028593399 0.0063946519 + 517100 0.0045204468 0.0030878862 0.0053127936 + 517200 0.0054865975 0.0027067367 0.0054071714 + 517300 0.0054176711 0.0021070531 0.0047735631 + 517400 0.0055818569 0.0017623465 0.0045096667 + 517500 0.0037427804 0.0018628454 0.0037049951 + 517600 0.0036249014 0.0019709456 0.0037550767 + 517700 0.0060298418 0.0020203165 0.0049881292 + 517800 0.0059585235 0.0024413626 0.0053740733 + 517900 0.00396165 0.0028285136 0.0047783882 + 518000 0.0049828048 0.002699403 0.0051518773 + 518100 0.0053711258 0.0026273924 0.0052709933 + 518200 0.0036397097 0.0025929924 0.004384412 + 518300 0.0039003547 0.0021709854 0.0040906912 + 518400 0.0054322306 0.0021706724 0.0048443484 + 518500 0.0034689422 0.0024582597 0.0041656296 + 518600 0.005893132 0.0023383408 0.0052388667 + 518700 0.0064739571 0.0023440884 0.0055304892 + 518800 0.0042404988 0.0026734737 0.0047605942 + 518900 0.0047150271 0.0023773425 0.0046980198 + 519000 0.0060309722 0.0024030049 0.005371374 + 519100 0.0051691631 0.0029440895 0.0054882869 + 519200 0.004550084 0.0029171888 0.0051566833 + 519300 0.0049287 0.0029163714 0.005342216 + 519400 0.0062757152 0.0027632127 0.0058520413 + 519500 0.0060581317 0.0023306795 0.0053124162 + 519600 0.0063656786 0.0026070135 0.0057401209 + 519700 0.0053117162 0.0027328971 0.0053472575 + 519800 0.0041265727 0.0028241892 0.0048552367 + 519900 0.0051900079 0.0023597445 0.0049142016 + 520000 0.0042985219 0.0021867615 0.0043024402 + 520100 0.0037317412 0.0023121052 0.0041488216 + 520200 0.0059593083 0.0023096823 0.0052427793 + 520300 0.0042025723 0.0024533441 0.0045217976 + 520400 0.005100883 0.0026934706 0.0052040614 + 520500 0.0040036714 0.0025176755 0.0044882325 + 520600 0.0055959958 0.002228791 0.0049830701 + 520700 0.0057800402 0.0022347786 0.0050796422 + 520800 0.0054229505 0.002255991 0.0049250994 + 520900 0.0027519827 0.0022621147 0.0036166063 + 521000 0.0060870806 0.0020585009 0.0050544859 + 521100 0.005275884 0.0023966648 0.0049933889 + 521200 0.004985165 0.0025323242 0.0049859601 + 521300 0.004745882 0.0025241414 0.0048600052 + 521400 0.0045168123 0.0027450743 0.0049681929 + 521500 0.0042613992 0.0028501055 0.0049475129 + 521600 0.0055874366 0.0027695238 0.0055195903 + 521700 0.0052514085 0.0025308467 0.0051155243 + 521800 0.0046462281 0.0027485948 0.0050354103 + 521900 0.0048423967 0.0027896047 0.0051729718 + 522000 0.003536898 0.00267229 0.004413107 + 522100 0.0046498775 0.0027422123 0.0050308238 + 522200 0.0057315982 0.0023953096 0.0052163306 + 522300 0.0051550961 0.002252974 0.0047902478 + 522400 0.0044560395 0.0019238053 0.0041170122 + 522500 0.0045801147 0.0018687635 0.0041230387 + 522600 0.0049379633 0.0020362121 0.0044666159 + 522700 0.003856883 0.002052654 0.0039509636 + 522800 0.0037052481 0.0024136507 0.0042373275 + 522900 0.0051549095 0.0023970329 0.0049342149 + 523000 0.0052094064 0.0022348659 0.0047988706 + 523100 0.0043440027 0.0026742949 0.0048123588 + 523200 0.0038819789 0.0027364646 0.0046471261 + 523300 0.0057097347 0.0030182347 0.0058284948 + 523400 0.004688672 0.0025753349 0.0048830407 + 523500 0.0050153379 0.0026421463 0.0051106329 + 523600 0.0041524383 0.0024307968 0.004474575 + 523700 0.0046921968 0.0027618331 0.0050712737 + 523800 0.0046100743 0.0026263306 0.0048953516 + 523900 0.0045292519 0.0024740574 0.0047032986 + 524000 0.0041283864 0.0028498556 0.0048817958 + 524100 0.0047512661 0.0023345719 0.0046730857 + 524200 0.0049604014 0.0028544728 0.0052959204 + 524300 0.0063588495 0.0030249036 0.0061546499 + 524400 0.0046049754 0.0031111465 0.0053776578 + 524500 0.0060426204 0.0021432673 0.0051173695 + 524600 0.0056650281 0.0020390119 0.0048272679 + 524700 0.0040365113 0.0025689606 0.004555681 + 524800 0.0068117415 0.0024188171 0.0057714711 + 524900 0.0043559445 0.0028725975 0.0050165389 + 525000 0.0051872044 0.00290703 0.0054601072 + 525100 0.0049799767 0.0026134293 0.0050645116 + 525200 0.0054391948 0.002518869 0.0051959727 + 525300 0.0045346431 0.0026939195 0.0049258142 + 525400 0.005455778 0.0027602664 0.0054455321 + 525500 0.004122265 0.0029035383 0.0049324656 + 525600 0.0056896109 0.0027885095 0.0055888649 + 525700 0.0055790052 0.0027608076 0.0055067242 + 525800 0.0049360084 0.0029108956 0.0053403372 + 525900 0.0054958142 0.0030354489 0.0057404199 + 526000 0.0060394677 0.0031595708 0.0061321213 + 526100 0.004654161 0.0028878349 0.0051785548 + 526200 0.0058024282 0.0028097507 0.0056656333 + 526300 0.004516592 0.0031987078 0.005421718 + 526400 0.0044744176 0.0031275745 0.0053298269 + 526500 0.0054707919 0.0030423327 0.0057349881 + 526600 0.0063397313 0.0029351996 0.0060555361 + 526700 0.0059458132 0.0032939947 0.0062204496 + 526800 0.0047610621 0.0029341459 0.0052774811 + 526900 0.0055426769 0.0025309015 0.0052589378 + 527000 0.0053573544 0.0021829688 0.0048197917 + 527100 0.0044065381 0.0025882043 0.0047570473 + 527200 0.0055483348 0.002616825 0.005347646 + 527300 0.0046625535 0.0022615187 0.0045563692 + 527400 0.0047462761 0.00212585 0.0044619077 + 527500 0.0037035005 0.0023241302 0.0041469469 + 527600 0.0047546615 0.002447901 0.004788086 + 527700 0.004243244 0.0024711283 0.0045596 + 527800 0.0042965109 0.0024952566 0.0046099456 + 527900 0.0035148546 0.0024969292 0.0042268967 + 528000 0.0046256433 0.0022032522 0.004479936 + 528100 0.0050241526 0.0023209632 0.0047937883 + 528200 0.0048042939 0.0023785122 0.0047431256 + 528300 0.0040111762 0.002595663 0.0045699138 + 528400 0.0052075117 0.0031980005 0.0057610727 + 528500 0.0066509911 0.0025388476 0.0058123822 + 528600 0.0057833453 0.0022449191 0.0050914093 + 528700 0.003141411 0.0027509498 0.0042971131 + 528800 0.0061147651 0.0027307251 0.0057403361 + 528900 0.0065917276 0.0023929775 0.0056373435 + 529000 0.0053274933 0.0026524197 0.0052745454 + 529100 0.0041656699 0.0026033952 0.0046536859 + 529200 0.0053048627 0.0027496564 0.0053606436 + 529300 0.0055711813 0.0030432251 0.0057852909 + 529400 0.0043375671 0.0036563439 0.0057912402 + 529500 0.0060002497 0.0033904348 0.0063436827 + 529600 0.0058643335 0.0023417613 0.005228113 + 529700 0.0052890527 0.0023981647 0.0050013703 + 529800 0.0040448076 0.0027147159 0.0047055196 + 529900 0.0042836603 0.0029683936 0.0050767577 + 530000 0.0033922109 0.003247984 0.0049175877 + 530100 0.0059472981 0.0027891952 0.005716381 + 530200 0.0078334691 0.0021011321 0.0059566676 + 530300 0.0055286158 0.0025370682 0.0052581838 + 530400 0.0058386281 0.0029956944 0.0058693941 + 530500 0.0060386349 0.0024922302 0.0054643708 + 530600 0.0055085944 0.0024131506 0.0051244119 + 530700 0.0050014195 0.0023386907 0.0048003268 + 530800 0.0043201889 0.0025794687 0.0047058117 + 530900 0.0057985851 0.0020376901 0.0048916812 + 531000 0.0040985896 0.0022086635 0.0042259381 + 531100 0.0062306482 0.0023063582 0.0053730054 + 531200 0.0044700291 0.0024370267 0.0046371192 + 531300 0.0051948906 0.0026721308 0.005228991 + 531400 0.004501166 0.0028191735 0.0050345911 + 531500 0.0053827469 0.0027645049 0.0054138257 + 531600 0.0046607623 0.0027416939 0.0050356628 + 531700 0.005520903 0.0029627744 0.0056800938 + 531800 0.0052995655 0.0029220142 0.0055303941 + 531900 0.004510458 0.0025194258 0.0047394168 + 532000 0.0047300362 0.0023408247 0.0046688894 + 532100 0.0050708958 0.002074624 0.0045704555 + 532200 0.0052805895 0.0019700955 0.0045691356 + 532300 0.0058233801 0.0019633779 0.0048295729 + 532400 0.0050464796 0.0019910645 0.0044748787 + 532500 0.0044506969 0.0024439173 0.0046344947 + 532600 0.0044145294 0.0027554372 0.0049282134 + 532700 0.0048702003 0.0025345837 0.0049316354 + 532800 0.0051986672 0.0023857729 0.004944492 + 532900 0.0046280833 0.0024816738 0.0047595586 + 533000 0.0061137099 0.0026632936 0.0056723852 + 533100 0.004894461 0.0030723643 0.0054813568 + 533200 0.0039281918 0.003372246 0.0053056528 + 533300 0.0044198305 0.0028831997 0.005058585 + 533400 0.0053107476 0.0029285286 0.0055424122 + 533500 0.0050078697 0.0025140144 0.0049788253 + 533600 0.004083409 0.0026412702 0.0046510731 + 533700 0.0053277006 0.0024986979 0.0051209256 + 533800 0.0060922184 0.0022164931 0.0052150068 + 533900 0.007221307 0.0022046518 0.0057588888 + 534000 0.0039455038 0.0024189944 0.0043609221 + 534100 0.0066650194 0.0027079106 0.0059883499 + 534200 0.0035169333 0.0024979908 0.0042289814 + 534300 0.0067727086 0.0020445816 0.0053780242 + 534400 0.0065992273 0.002220251 0.0054683083 + 534500 0.006034545 0.0026200407 0.0055901683 + 534600 0.0064488072 0.0029693524 0.0061433747 + 534700 0.004566734 0.003209905 0.0054575944 + 534800 0.0054862462 0.0024278335 0.0051280953 + 534900 0.0058746665 0.0024344037 0.0053258411 + 535000 0.0037101989 0.0023400032 0.0041661167 + 535100 0.0044899545 0.0022638721 0.0044737716 + 535200 0.0039293653 0.002451231 0.0043852155 + 535300 0.0059707031 0.0024403036 0.005379009 + 535400 0.0047715741 0.002337623 0.0046861321 + 535500 0.0056968076 0.0022999702 0.0051038677 + 535600 0.0055005585 0.0023917824 0.0050990885 + 535700 0.0066172578 0.0026262541 0.0058831857 + 535800 0.0063303568 0.0025380457 0.0056537682 + 535900 0.0043119755 0.0029904056 0.0051127061 + 536000 0.0050710354 0.0027175001 0.0052134003 + 536100 0.0052851009 0.0028556706 0.0054569312 + 536200 0.0055832093 0.0029379122 0.0056858981 + 536300 0.0071330465 0.0025030799 0.0060138762 + 536400 0.004772884 0.0027211814 0.0050703352 + 536500 0.0048670503 0.002674492 0.0050699933 + 536600 0.0042550111 0.002722026 0.0048162893 + 536700 0.0048017951 0.0032566543 0.0056200378 + 536800 0.0040137621 0.0034062068 0.0053817303 + 536900 0.0042090666 0.0030672294 0.0051388793 + 537000 0.0044330889 0.003072091 0.0052540019 + 537100 0.00538778 0.0029187715 0.0055705695 + 537200 0.0047807258 0.0032657387 0.0056187522 + 537300 0.0041752225 0.0035328063 0.0055877986 + 537400 0.0052036074 0.0030021833 0.0055633338 + 537500 0.0049433218 0.0026416536 0.0050746948 + 537600 0.0054757489 0.002219872 0.0049149671 + 537700 0.0040433649 0.0025016353 0.004491729 + 537800 0.0048463824 0.0023915509 0.0047768797 + 537900 0.0046674569 0.002450941 0.0047482049 + 538000 0.0052768044 0.0025597995 0.0051569766 + 538100 0.0051883515 0.0027714816 0.0053251234 + 538200 0.0057884998 0.0029899107 0.005838938 + 538300 0.0038155783 0.0028823677 0.0047603476 + 538400 0.0047409631 0.0026088135 0.0049422562 + 538500 0.0049743953 0.0027221434 0.0051704785 + 538600 0.0063827514 0.0021895159 0.0053310264 + 538700 0.0053987678 0.0017149738 0.0043721799 + 538800 0.0057761895 0.0018093993 0.0046523676 + 538900 0.0057790995 0.002409977 0.0052543776 + 539000 0.0054269065 0.0025692191 0.0052402746 + 539100 0.0055890008 0.0023069777 0.005057814 + 539200 0.0045296809 0.0025965173 0.0048259696 + 539300 0.0044041812 0.0027180412 0.0048857241 + 539400 0.0049388619 0.0023036925 0.0047345386 + 539500 0.0051781334 0.0022767507 0.0048253632 + 539600 0.0057047061 0.0029869117 0.0057946967 + 539700 0.0064197672 0.003283493 0.0064432222 + 539800 0.0056997079 0.0027382902 0.0055436152 + 539900 0.0061395624 0.002839082 0.0058608979 + 540000 0.004172512 0.0025290867 0.0045827449 + 540100 0.0050723646 0.0021387814 0.0046353359 + 540200 0.0040912306 0.0021274714 0.0041411239 + 540300 0.0053061865 0.0024025154 0.0050141541 + 540400 0.0040209217 0.002021617 0.0040006644 + 540500 0.0046911125 0.0015378008 0.0038467077 + 540600 0.0041986618 0.0015484675 0.0036149964 + 540700 0.003411373 0.0016797444 0.0033587796 + 540800 0.0034012576 0.0016935162 0.0033675726 + 540900 0.004688738 0.0019110343 0.0042187726 + 541000 0.0049923228 0.0021718839 0.0046290427 + 541100 0.0042131651 0.0024130893 0.0044867565 + 541200 0.0047726702 0.0028563414 0.00520539 + 541300 0.0049062067 0.0027095842 0.0051243577 + 541400 0.0047217764 0.0021403486 0.0044643479 + 541500 0.0069010297 0.0019429512 0.0053395518 + 541600 0.0050149784 0.0020924082 0.0045607179 + 541700 0.0061029766 0.0020082089 0.0050120177 + 541800 0.0061300378 0.0019066496 0.0049237776 + 541900 0.0054711471 0.0022653977 0.004958228 + 542000 0.0058465561 0.002100056 0.0049776578 + 542100 0.0053043107 0.0018001363 0.0044108517 + 542200 0.003615857 0.0017627849 0.0035424645 + 542300 0.0058390332 0.0016099044 0.0044838036 + 542400 0.0057773253 0.0017543757 0.004597903 + 542500 0.0048001508 0.0021754716 0.0045380458 + 542600 0.00622376 0.0021277654 0.0051910223 + 542700 0.0048845112 0.0022798731 0.0046839684 + 542800 0.0042866342 0.0026352364 0.0047450641 + 542900 0.0050707238 0.0025076471 0.0050033939 + 543000 0.0049373475 0.002181007 0.0046111078 + 543100 0.0037651517 0.0020574173 0.0039105779 + 543200 0.0043639276 0.0018112041 0.0039590747 + 543300 0.0059307662 0.0020397335 0.0049587825 + 543400 0.0054082148 0.0018406213 0.0045024771 + 543500 0.0064193344 0.0016899228 0.004849439 + 543600 0.005464159 0.0021284948 0.0048178855 + 543700 0.0044880458 0.002127948 0.004336908 + 543800 0.0052375653 0.0019926537 0.0045705179 + 543900 0.0060609177 0.0018268841 0.004809992 + 544000 0.0043874667 0.0021649635 0.0043244197 + 544100 0.0058677296 0.0022976386 0.0051856618 + 544200 0.005173481 0.0025356408 0.0050819635 + 544300 0.0065921299 0.0022820027 0.0055265666 + 544400 0.0046015111 0.0024797539 0.0047445601 + 544500 0.0069998789 0.0022473474 0.0056926004 + 544600 0.0048117212 0.0023939896 0.0047622586 + 544700 0.0053624797 0.0028634881 0.0055028336 + 544800 0.0047493213 0.0027948668 0.0051324234 + 544900 0.005503115 0.0028614048 0.0055699692 + 545000 0.0062593149 0.0029283287 0.0060090852 + 545100 0.0052691559 0.0030610758 0.0056544885 + 545200 0.0052818095 0.0029470335 0.0055466742 + 545300 0.0054292253 0.0025523012 0.005224498 + 545400 0.0056089753 0.0031139026 0.0058745702 + 545500 0.0048922849 0.0031339213 0.0055418428 + 545600 0.0066063142 0.0025305074 0.0057820526 + 545700 0.0047983489 0.0028043836 0.005166071 + 545800 0.0045148056 0.0025670638 0.0047891947 + 545900 0.0051301082 0.0023168105 0.0048417856 + 546000 0.0033826868 0.0019928599 0.0036577761 + 546100 0.0055179832 0.0021675362 0.0048834185 + 546200 0.0039621428 0.0024720319 0.004422149 + 546300 0.0066871966 0.0025877631 0.0058791176 + 546400 0.0036820236 0.0028748663 0.0046871123 + 546500 0.0039748762 0.0027047795 0.0046611639 + 546600 0.0052286406 0.0017738416 0.0043473131 + 546700 0.0055468372 0.0016238683 0.0043539522 + 546800 0.0045846791 0.0018591555 0.0041156772 + 546900 0.005579441 0.0015447616 0.0042908927 + 547000 0.0048787937 0.0021173359 0.0045186171 + 547100 0.0055832958 0.0026730733 0.0054211018 + 547200 0.0055723038 0.0029414848 0.0056841031 + 547300 0.0054435397 0.0026521003 0.0053313425 + 547400 0.0047153795 0.0028046766 0.0051255275 + 547500 0.006727448 0.0027378389 0.0060490047 + 547600 0.0046498262 0.0032162033 0.0055047896 + 547700 0.005928306 0.003290781 0.006208619 + 547800 0.0058130525 0.0033377135 0.0061988252 + 547900 0.004630868 0.0034838926 0.0057631479 + 548000 0.0051929985 0.0030846194 0.0056405483 + 548100 0.0059425482 0.0028032946 0.0057281425 + 548200 0.0056950043 0.0025618723 0.0053648823 + 548300 0.0050819178 0.0027179067 0.0052191631 + 548400 0.0047559311 0.0028127524 0.0051535622 + 548500 0.0050707414 0.0024394769 0.0049352324 + 548600 0.005441544 0.0029110203 0.0055892803 + 548700 0.0064282495 0.0029424413 0.0061063454 + 548800 0.0057536775 0.0027876145 0.0056195027 + 548900 0.004860627 0.0025658396 0.0049581795 + 549000 0.0045162108 0.0025049634 0.0047277859 + 549100 0.0054686988 0.0019885545 0.0046801797 + 549200 0.0062891155 0.0019840373 0.0050794613 + 549300 0.0073412289 0.0025135672 0.0061268283 + 549400 0.0052720081 0.0026304188 0.0052252353 + 549500 0.0058635323 0.0029910037 0.005876961 + 549600 0.0059043809 0.0036784752 0.0065845376 + 549700 0.006459184 0.0035407328 0.0067198624 + 549800 0.0051367376 0.0034048172 0.0059330552 + 549900 0.0056379672 0.0033532747 0.0061282116 + 550000 0.0052612352 0.0032148215 0.0058043357 + 550100 0.0040051755 0.002680677 0.0046519743 + 550200 0.0059483073 0.0023970957 0.0053247781 + 550300 0.00597669 0.0023659472 0.0053075993 + 550400 0.0052975781 0.0027085021 0.0053159039 + 550500 0.0048433916 0.0032069103 0.005590767 + 550600 0.0053652578 0.003274207 0.0059149198 + 550700 0.0084076824 0.0025334433 0.0066715995 + 550800 0.0029899822 0.0031491088 0.0046207407 + 550900 0.0042336515 0.003428497 0.0055122473 + 551000 0.005283475 0.0023712412 0.0049717016 + 551100 0.0048256567 0.0024837107 0.0048588386 + 551200 0.0048956097 0.0028061251 0.005215683 + 551300 0.0047922484 0.0026473504 0.0050060351 + 551400 0.0046763047 0.0024002048 0.0047018235 + 551500 0.0062325277 0.0020949948 0.005162567 + 551600 0.0047561274 0.0022455182 0.0045864246 + 551700 0.0041611195 0.0024611929 0.0045092439 + 551800 0.0065399293 0.0024614426 0.0056803141 + 551900 0.0057265115 0.0024700601 0.0052885775 + 552000 0.0051647802 0.0027316998 0.00527374 + 552100 0.0050789702 0.0030063072 0.0055061129 + 552200 0.0068276046 0.0031822037 0.0065426653 + 552300 0.0063933887 0.0027447964 0.0058915425 + 552400 0.0055592339 0.0023861342 0.0051223196 + 552500 0.005090299 0.002758018 0.0052633995 + 552600 0.0059660517 0.0028512502 0.0057876663 + 552700 0.0052661483 0.0023097979 0.0049017302 + 552800 0.0044378578 0.0019871691 0.0041714273 + 552900 0.004649709 0.0020072662 0.0042957949 + 553000 0.0051457166 0.0020893712 0.0046220286 + 553100 0.0047206971 0.0017615888 0.0040850569 + 553200 0.0059163797 0.0021291319 0.0050411 + 553300 0.0050380343 0.0028327505 0.005312408 + 553400 0.0060248519 0.0026817943 0.0056471511 + 553500 0.0047846306 0.0031680587 0.0055229941 + 553600 0.0048967395 0.0029539105 0.0053640245 + 553700 0.0062971028 0.0025574573 0.0056568126 + 553800 0.0062484031 0.0021123389 0.0051877248 + 553900 0.0034938271 0.0024234802 0.0041430982 + 554000 0.0045769748 0.0023025755 0.0045553053 + 554100 0.0050228385 0.0023614604 0.0048336387 + 554200 0.0045076951 0.0020769879 0.0042956191 + 554300 0.0037150055 0.0021486843 0.0039771635 + 554400 0.0057350658 0.002386078 0.0052088057 + 554500 0.0053590982 0.0025230376 0.0051607188 + 554600 0.004083642 0.0024906535 0.004500571 + 554700 0.004693368 0.0025086365 0.0048186536 + 554800 0.0046554728 0.0022737814 0.0045651469 + 554900 0.004722376 0.0019142053 0.0042384997 + 555000 0.0053130525 0.0018575384 0.0044725565 + 555100 0.0048709162 0.0022035226 0.0046009266 + 555200 0.0042605442 0.0026894089 0.0047863955 + 555300 0.0068981912 0.0022869527 0.0056821562 + 555400 0.0055653569 0.0025896651 0.0053288642 + 555500 0.0040889652 0.0024945708 0.0045071083 + 555600 0.0040737434 0.0020455779 0.0040506234 + 555700 0.0059735623 0.0022911545 0.0052312672 + 555800 0.0055521474 0.0027009029 0.0054336004 + 555900 0.0050250044 0.0024774947 0.004950739 + 556000 0.0042940219 0.0025630387 0.0046765026 + 556100 0.0037697961 0.0026185893 0.0044740358 + 556200 0.0052176628 0.0023434465 0.0049115149 + 556300 0.0053208859 0.0026663608 0.0052852344 + 556400 0.0038339366 0.0031066874 0.004993703 + 556500 0.0043924171 0.0033383817 0.0055002744 + 556600 0.0044071808 0.0036390777 0.005808237 + 556700 0.0058542847 0.0037976422 0.0066790479 + 556800 0.0043549591 0.0040839509 0.0062274073 + 556900 0.005586446 0.003422323 0.0061719019 + 557000 0.0058566016 0.0028719535 0.0057544996 + 557100 0.0053106269 0.0033076055 0.0059214297 + 557200 0.0043762197 0.0038077489 0.0059616695 + 557300 0.0052815447 0.0034013805 0.0060008908 + 557400 0.004228765 0.0032749134 0.0053562587 + 557500 0.0056720337 0.0033549242 0.0061466283 + 557600 0.0045194069 0.0035420806 0.0057664762 + 557700 0.004953766 0.0034669515 0.0059051332 + 557800 0.004431467 0.0034417716 0.0056228843 + 557900 0.0048308134 0.0035286255 0.0059062915 + 558000 0.0070531405 0.0034222098 0.0068936774 + 558100 0.0044092498 0.0035720869 0.0057422645 + 558200 0.0047334733 0.0033264889 0.0056562452 + 558300 0.0055752555 0.0029665022 0.0057105733 + 558400 0.0049289663 0.0028889195 0.0053148951 + 558500 0.004884959 0.0022276252 0.0046319409 + 558600 0.0046354663 0.0018273654 0.004108884 + 558700 0.0051234558 0.0022405643 0.0047622651 + 558800 0.0041887023 0.0024815709 0.0045431978 + 558900 0.0047561294 0.0027288284 0.0050697359 + 559000 0.0048719954 0.0034809715 0.0058789068 + 559100 0.0045663621 0.0028063872 0.0050538936 + 559200 0.0061018591 0.0025458413 0.0055491001 + 559300 0.0053012407 0.0025883249 0.0051975293 + 559400 0.0050162409 0.0023479295 0.0048168606 + 559500 0.0040913221 0.0022932205 0.0043069181 + 559600 0.005708868 0.0025664433 0.0053762768 + 559700 0.0045052077 0.0029491909 0.0051665978 + 559800 0.0053949 0.0028927039 0.0055480062 + 559900 0.0062425963 0.0028790588 0.0059515867 + 560000 0.0051856628 0.0031518026 0.005704121 + 560100 0.0046913864 0.0027430314 0.0050520731 + 560200 0.0058561766 0.0026132512 0.0054955881 + 560300 0.0044082541 0.002365114 0.0045348016 + 560400 0.0043159957 0.0027140097 0.0048382888 + 560500 0.0077319333 0.0019981387 0.0058036996 + 560600 0.0052557284 0.0019517182 0.004538522 + 560700 0.0042703502 0.0022451392 0.0043469522 + 560800 0.0041711497 0.0023081762 0.0043611639 + 560900 0.0048811154 0.0023038774 0.0047063014 + 561000 0.0057777293 0.0022256569 0.0050693831 + 561100 0.0055919155 0.0022213306 0.0049736015 + 561200 0.0055924893 0.0023658244 0.0051183777 + 561300 0.0041591514 0.0023014833 0.0043485656 + 561400 0.0052207303 0.0029730917 0.0055426699 + 561500 0.0054940766 0.0030928567 0.0057969726 + 561600 0.0052294643 0.0030017266 0.0055756035 + 561700 0.0051610515 0.0029462163 0.0054864213 + 561800 0.0045310351 0.0025334727 0.0047635916 + 561900 0.0044665658 0.0023110773 0.0045094652 + 562000 0.0040748372 0.002381026 0.0043866099 + 562100 0.0046117045 0.0023243365 0.0045941598 + 562200 0.0028664498 0.002627475 0.0040383058 + 562300 0.0057449343 0.0023399186 0.0051675034 + 562400 0.0057266663 0.0028734544 0.0056920479 + 562500 0.0047961631 0.0030178865 0.005378498 + 562600 0.0067242823 0.0026772317 0.0059868394 + 562700 0.0048112086 0.0024921787 0.0048601954 + 562800 0.0049786018 0.0023455174 0.0047959229 + 562900 0.0048883846 0.0025210562 0.004927058 + 563000 0.0051853622 0.002729622 0.0052817925 + 563100 0.0052668222 0.002843902 0.0054361661 + 563200 0.0053684028 0.0026374431 0.0052797039 + 563300 0.0063464526 0.0023001928 0.0054238374 + 563400 0.0046208026 0.002285711 0.0045600123 + 563500 0.0051130921 0.002079381 0.004595981 + 563600 0.0051941744 0.0017234271 0.0042799348 + 563700 0.0047212008 0.0020281315 0.0043518475 + 563800 0.0053754472 0.0025317577 0.0051774856 + 563900 0.0051105258 0.0028131926 0.0053285295 + 564000 0.0071214187 0.0020217117 0.0055267849 + 564100 0.0038528905 0.0019401062 0.0038364507 + 564200 0.0046134369 0.0027288067 0.0049994827 + 564300 0.0043396507 0.0028260808 0.0049620027 + 564400 0.0060394114 0.0025805866 0.0055531095 + 564500 0.0041160575 0.0025719321 0.0045978041 + 564600 0.0061083157 0.0023567258 0.0053631624 + 564700 0.0044389968 0.0021898751 0.0043746939 + 564800 0.0055857608 0.0017783342 0.0045275758 + 564900 0.0062324714 0.0019254818 0.0049930263 + 565000 0.0043071955 0.0020688561 0.0041888038 + 565100 0.0051464687 0.0019728707 0.0045058982 + 565200 0.0060922947 0.0023958362 0.0053943875 + 565300 0.0052468631 0.0028834002 0.0054658406 + 565400 0.0047675272 0.0032183002 0.0055648175 + 565500 0.0055543393 0.0029225231 0.0056562995 + 565600 0.0058230873 0.0032057072 0.0060717579 + 565700 0.0048095619 0.0032373109 0.0056045172 + 565800 0.0068980411 0.0024233164 0.005818446 + 565900 0.0053814146 0.0020229284 0.0046715934 + 566000 0.0040880497 0.0019968257 0.0040089126 + 566100 0.0053322881 0.0019209488 0.0045454344 + 566200 0.0036223619 0.0022040309 0.0039869122 + 566300 0.0044587059 0.0023012544 0.0044957737 + 566400 0.0034749126 0.0022710814 0.0039813899 + 566500 0.0052952902 0.0018619677 0.0044682433 + 566600 0.0058673687 0.0015829685 0.0044708141 + 566700 0.0054056046 0.0019137998 0.0045743708 + 566800 0.00523467 0.0022904636 0.0048669028 + 566900 0.0055326457 0.0026460591 0.0053691582 + 567000 0.0040140665 0.002427557 0.0044032303 + 567100 0.0058984605 0.0025448623 0.0054480108 + 567200 0.0040148235 0.0022714506 0.0042474965 + 567300 0.0052316574 0.0019406895 0.0045156459 + 567400 0.0034471854 0.0020375326 0.0037341942 + 567500 0.0034343973 0.0022624785 0.0039528459 + 567600 0.0044126839 0.002222508 0.0043943758 + 567700 0.0048408819 0.0019294352 0.0043120567 + 567800 0.0039272326 0.0019713002 0.003904235 + 567900 0.006121605 0.0019721982 0.0049851756 + 568000 0.0046860497 0.0015886092 0.0038950243 + 568100 0.004668631 0.0017862275 0.0040840693 + 568200 0.0056236091 0.0020805602 0.0048484303 + 568300 0.0049652151 0.0027774559 0.0052212727 + 568400 0.0054484153 0.0026913124 0.0053729543 + 568500 0.0045432462 0.0023774366 0.0046135656 + 568600 0.0057302038 0.0021804141 0.0050007488 + 568700 0.0041172322 0.0025424702 0.0045689204 + 568800 0.0034061499 0.0022805793 0.0039570437 + 568900 0.0044143554 0.0023788355 0.004551526 + 569000 0.0057477213 0.0023044837 0.0051334403 + 569100 0.0041719186 0.0024207024 0.0044740686 + 569200 0.0052386476 0.0021758782 0.004754275 + 569300 0.0057122909 0.0017940681 0.0046055862 + 569400 0.0054807143 0.0022604127 0.0049579517 + 569500 0.0056005201 0.0023315964 0.0050881024 + 569600 0.0052630777 0.0023778656 0.0049682867 + 569700 0.0048867185 0.0025284994 0.0049336812 + 569800 0.0043346832 0.0023244635 0.0044579404 + 569900 0.0035406354 0.0021046906 0.003847347 + 570000 0.0048102806 0.0017960988 0.0041636588 + 570100 0.0056252013 0.002115094 0.0048837477 + 570200 0.0056323529 0.002152781 0.0049249547 + 570300 0.0047800789 0.0021359817 0.0044886768 + 570400 0.0045896696 0.0018421515 0.0041011295 + 570500 0.0049672187 0.0016909525 0.0041357555 + 570600 0.0058184141 0.0018742998 0.0047380505 + 570700 0.0065092499 0.0023071467 0.0055109182 + 570800 0.0044939144 0.0021410171 0.0043528656 + 570900 0.0042323341 0.0018595665 0.0039426684 + 571000 0.0042964189 0.0018880743 0.004002718 + 571100 0.0053337162 0.0025447465 0.005169935 + 571200 0.0045293279 0.0026663425 0.0048956211 + 571300 0.0041461956 0.0028514873 0.004892193 + 571400 0.0052919898 0.003046215 0.0056508662 + 571500 0.0050697607 0.0029880663 0.0054833391 + 571600 0.0047491198 0.0025322004 0.0048696578 + 571700 0.007036695 0.0018950047 0.0053583781 + 571800 0.0037127642 0.0026406037 0.0044679798 + 571900 0.0050922528 0.0029719928 0.005478336 + 572000 0.0054836161 0.002755352 0.0054543193 + 572100 0.004927308 0.0026246089 0.0050497683 + 572200 0.0051669376 0.0026146423 0.0051577444 + 572300 0.0037879653 0.0031194786 0.0049838678 + 572400 0.0052081068 0.0029725435 0.0055359085 + 572500 0.0047483906 0.0028960781 0.0052331766 + 572600 0.0055617004 0.0026837898 0.0054211893 + 572700 0.0048672676 0.0023664883 0.0047620965 + 572800 0.0053337933 0.0023147184 0.0049399448 + 572900 0.0051061411 0.0024949148 0.0050080937 + 573000 0.0051039828 0.0023221056 0.0048342222 + 573100 0.0040596378 0.0019139735 0.0039120765 + 573200 0.0036095038 0.0023580012 0.0041345538 + 573300 0.0063561258 0.0027053822 0.0058337879 + 573400 0.0056557706 0.0030710761 0.0058547757 + 573500 0.0059650388 0.0024866911 0.0054226086 + 573600 0.0052122672 0.0022407624 0.0048061751 + 573700 0.0049540102 0.0024846172 0.0049229191 + 573800 0.0055963922 0.0019681328 0.004722607 + 573900 0.00504603 0.0019053087 0.0043889016 + 574000 0.0047882604 0.0023930987 0.0047498206 + 574100 0.0065630718 0.0023990055 0.0056292674 + 574200 0.0057668763 0.002262743 0.0051011274 + 574300 0.0075049448 0.0022129178 0.0059067578 + 574400 0.0049389956 0.0026119935 0.0050429054 + 574500 0.0044954443 0.0023577668 0.0045703683 + 574600 0.0049770248 0.0017981672 0.0042477965 + 574700 0.0047208017 0.0019949194 0.0043184389 + 574800 0.0049173942 0.002274167 0.004694447 + 574900 0.0055269915 0.0025614245 0.0052817406 + 575000 0.0047514744 0.0024793372 0.0048179535 + 575100 0.005066324 0.0022941684 0.0047877497 + 575200 0.0046467301 0.0022719963 0.0045590588 + 575300 0.0050212434 0.0025309176 0.0050023108 + 575400 0.00371883 0.0024546856 0.0042850472 + 575500 0.0046472002 0.002165322 0.0044526158 + 575600 0.0054423954 0.0020774921 0.0047561711 + 575700 0.0053243156 0.0018948057 0.0045153672 + 575800 0.005571133 0.0019362194 0.0046782614 + 575900 0.0041472772 0.0022593145 0.0043005525 + 576000 0.0039316178 0.0023162375 0.0042513306 + 576100 0.0050264524 0.0020628273 0.0045367843 + 576200 0.0039713287 0.0018711377 0.003825776 + 576300 0.0053012545 0.0018096085 0.0044188197 + 576400 0.0049147774 0.0024198997 0.0048388917 + 576500 0.00429681 0.0029810936 0.0050959298 + 576600 0.0063470935 0.0024125024 0.0055364625 + 576700 0.0045825945 0.0022207506 0.0044762463 + 576800 0.0049717313 0.0018216963 0.0042687203 + 576900 0.0067794998 0.0018001895 0.0051369745 + 577000 0.0044281774 0.0021451098 0.0043246034 + 577100 0.0052613364 0.0021973805 0.0047869445 + 577200 0.0042782876 0.0024903759 0.0045960956 + 577300 0.0054031438 0.002118658 0.0047780179 + 577400 0.0055903559 0.0017659191 0.0045174224 + 577500 0.0054753024 0.0015917143 0.0042865897 + 577600 0.0040299242 0.0019678584 0.0039513367 + 577700 0.0064697902 0.0018517993 0.0050361492 + 577800 0.0039544938 0.0020673864 0.0040137388 + 577900 0.0050654246 0.0021927783 0.004685917 + 578000 0.0047024711 0.0026254334 0.0049399309 + 578100 0.0052937225 0.0026928419 0.0052983459 + 578200 0.0053891087 0.0025707991 0.005223251 + 578300 0.0044006576 0.0027044734 0.0048704221 + 578400 0.007648846 0.0025363261 0.0063009925 + 578500 0.0051218658 0.0029307988 0.0054517171 + 578600 0.0052521771 0.0027898134 0.0053748694 + 578700 0.0062204544 0.0027058233 0.0057674532 + 578800 0.0045151563 0.0028044757 0.0050267792 + 578900 0.0050714475 0.0025437989 0.005039902 + 579000 0.0059796415 0.0022193309 0.0051624357 + 579100 0.0052507431 0.0022602309 0.004844581 + 579200 0.0069897945 0.0022644918 0.0057047813 + 579300 0.0056013419 0.0020917064 0.0048486169 + 579400 0.0051839911 0.0019895352 0.0045410308 + 579500 0.0043195979 0.0021754853 0.0043015374 + 579600 0.0058201341 0.00244846 0.0053130573 + 579700 0.0052484948 0.0022967025 0.0048799461 + 579800 0.0051259374 0.0023374885 0.0048604108 + 579900 0.0053401405 0.0023785446 0.005006895 + 580000 0.0047148455 0.0022496267 0.0045702147 + 580100 0.0039061436 0.0022101204 0.0041326755 + 580200 0.0041791474 0.0021550652 0.0042119893 + 580300 0.0054803644 0.0020470027 0.0047443695 + 580400 0.0062959307 0.0020796483 0.0051784267 + 580500 0.0044972867 0.0021203567 0.004333865 + 580600 0.0044846805 0.0022014054 0.0044087091 + 580700 0.0036229636 0.0018904147 0.0036735921 + 580800 0.0051397369 0.0018776943 0.0044074086 + 580900 0.0037191585 0.0022117553 0.0040422786 + 581000 0.0036800823 0.0022158315 0.004027122 + 581100 0.0061861078 0.0019365271 0.0049812521 + 581200 0.0068710378 0.0018671227 0.0052489616 + 581300 0.0049839784 0.0021483694 0.0046014212 + 581400 0.0064782496 0.00244155 0.0056300635 + 581500 0.0042874801 0.0026328181 0.0047430622 + 581600 0.005275553 0.0025549691 0.0051515303 + 581700 0.0046113567 0.0022514176 0.0045210697 + 581800 0.0064843181 0.0018657528 0.0050572531 + 581900 0.0034600945 0.0020216664 0.0037246816 + 582000 0.0048672131 0.0020693488 0.0044649303 + 582100 0.0055617492 0.0018261843 0.0045636077 + 582200 0.0054567675 0.0019666333 0.0046523861 + 582300 0.0046175665 0.0020912087 0.0043639172 + 582400 0.0058203802 0.0019985159 0.0048632343 + 582500 0.0038741525 0.002160278 0.0040670874 + 582600 0.0038312961 0.0022078573 0.0040935733 + 582700 0.0061504986 0.00229459 0.0053217885 + 582800 0.0042903342 0.0022361469 0.0043477957 + 582900 0.0051665011 0.0022092525 0.0047521398 + 583000 0.0062611995 0.0022527295 0.0053344136 + 583100 0.003943965 0.0025863269 0.0045274972 + 583200 0.0052836658 0.0017826092 0.0043831634 + 583300 0.0037413607 0.0018327198 0.0036741707 + 583400 0.0047660536 0.0020580946 0.0044038866 + 583500 0.005023292 0.0019083875 0.004380789 + 583600 0.0042296157 0.0019707394 0.0040525034 + 583700 0.0068829588 0.002251433 0.0056391393 + 583800 0.004790357 0.0027602343 0.0051179882 + 583900 0.0055430755 0.0024567127 0.0051849452 + 584000 0.0049064105 0.0023539679 0.0047688418 + 584100 0.0057904022 0.0024355611 0.0052855247 + 584200 0.0039627991 0.0023685215 0.0043189617 + 584300 0.0039670919 0.0024628353 0.0044153883 + 584400 0.0044560684 0.0021244603 0.0043176815 + 584500 0.0047580025 0.0021055119 0.0044473413 + 584600 0.0039909107 0.0025672857 0.004531562 + 584700 0.005494122 0.0024898033 0.0051939414 + 584800 0.0048010964 0.0022409179 0.0046039575 + 584900 0.004697053 0.0019586659 0.0042704967 + 585000 0.0036744971 0.0020502266 0.0038587681 + 585100 0.0043888762 0.0024199543 0.0045801043 + 585200 0.0055113683 0.0026780933 0.0053907199 + 585300 0.0052658163 0.0029041255 0.0054958945 + 585400 0.0057965981 0.0029864319 0.005839445 + 585500 0.0055687414 0.0028735227 0.0056143876 + 585600 0.0059057623 0.0022200333 0.0051267757 + 585700 0.0049908263 0.0021134884 0.0045699107 + 585800 0.0049584116 0.0025796999 0.0050201681 + 585900 0.0049630216 0.0026889603 0.0051316975 + 586000 0.0042902629 0.0031144241 0.0052260379 + 586100 0.0045407769 0.0030361977 0.0052711113 + 586200 0.0055861721 0.0026327688 0.0053822129 + 586300 0.0053549394 0.0025779401 0.0052135743 + 586400 0.0055825582 0.002508729 0.0052563943 + 586500 0.005385872 0.0025777079 0.0052285668 + 586600 0.0062731025 0.0029656339 0.0060531766 + 586700 0.0065060967 0.0033284206 0.00653064 + 586800 0.0051477044 0.0032797937 0.0058134294 + 586900 0.0051285029 0.0031464111 0.0056705962 + 587000 0.0050390633 0.0027282062 0.0052083702 + 587100 0.0053960089 0.0026759733 0.0053318214 + 587200 0.0047928743 0.0030480695 0.0054070624 + 587300 0.0072348846 0.002847786 0.0064087058 + 587400 0.0067143405 0.002809434 0.0061141485 + 587500 0.0033896996 0.002730412 0.0043987798 + 587600 0.0046313481 0.0025369559 0.0048164475 + 587700 0.0035504398 0.0027831397 0.0045306218 + 587800 0.0060914825 0.002450218 0.0054483695 + 587900 0.0044702977 0.0026826762 0.0048829009 + 588000 0.0053539542 0.0028441477 0.0054792971 + 588100 0.0048570144 0.0027585242 0.005149086 + 588200 0.0060906631 0.0029234407 0.0059211889 + 588300 0.0044786402 0.0032466398 0.0054509705 + 588400 0.0056623187 0.0027211011 0.0055080236 + 588500 0.0059386827 0.0025857625 0.0055087079 + 588600 0.0049186556 0.0024256673 0.0048465681 + 588700 0.0058475898 0.0021659919 0.0050441025 + 588800 0.0038412415 0.0022222871 0.0041128981 + 588900 0.0062474271 0.0019367782 0.0050116837 + 589000 0.0043397707 0.0020771987 0.0042131796 + 589100 0.0054408783 0.002443433 0.0051213653 + 589200 0.0059705709 0.0020685177 0.0050071581 + 589300 0.0036447655 0.00200943 0.003803338 + 589400 0.0040767637 0.0020240463 0.0040305785 + 589500 0.0061066253 0.0023596171 0.0053652217 + 589600 0.0043038416 0.0021106892 0.0042289862 + 589700 0.0040281263 0.001865429 0.0038480224 + 589800 0.0050022711 0.0016250203 0.0040870756 + 589900 0.0059696655 0.0015656779 0.0045038726 + 590000 0.0048412111 0.0018621855 0.0042449691 + 590100 0.004541917 0.0019554026 0.0041908774 + 590200 0.0045292314 0.0024321566 0.0046613877 + 590300 0.0045042493 0.0016620822 0.0038790174 + 590400 0.0046727908 0.0014528227 0.003752712 + 590500 0.0036574028 0.0016887921 0.0034889201 + 590600 0.0039095807 0.0022465013 0.0041707481 + 590700 0.0037135698 0.0023419013 0.0041696739 + 590800 0.0046582111 0.0025571155 0.0048498287 + 590900 0.0060714926 0.0024195091 0.0054078219 + 591000 0.0058695181 0.0024174285 0.005306332 + 591100 0.0067008525 0.002721689 0.0060197649 + 591200 0.0051033392 0.0028565289 0.0053683287 + 591300 0.0047343548 0.0027426459 0.0050728362 + 591400 0.0048242877 0.0022573702 0.0046318243 + 591500 0.0058176078 0.002284648 0.0051480018 + 591600 0.003996377 0.0023083381 0.0042753049 + 591700 0.0040328941 0.0027080069 0.004692947 + 591800 0.0058718858 0.0024603025 0.0053503712 + 591900 0.0056895402 0.0025990853 0.0053994059 + 592000 0.0038027225 0.0025206084 0.0043922609 + 592100 0.0048879531 0.0023860662 0.0047918556 + 592200 0.0050412917 0.0025910121 0.0050722728 + 592300 0.0051858346 0.0026585271 0.00521093 + 592400 0.0053515578 0.0025596623 0.0051936322 + 592500 0.0061562107 0.0024313702 0.0054613802 + 592600 0.0050147022 0.0022173185 0.0046854922 + 592700 0.0046365705 0.0024480802 0.0047301422 + 592800 0.0048624315 0.0024020534 0.0047952814 + 592900 0.0062281593 0.0024861758 0.0055515979 + 593000 0.0052913164 0.0021220622 0.004726382 + 593100 0.0046144435 0.0019018462 0.0041730176 + 593200 0.0041471355 0.0018336464 0.0038748146 + 593300 0.0064301688 0.0015470171 0.0047118658 + 593400 0.0063511282 0.0015625482 0.0046884941 + 593500 0.0050230515 0.0020374888 0.004509772 + 593600 0.0043166497 0.0027730001 0.0048976012 + 593700 0.0042177497 0.0029345919 0.0050105156 + 593800 0.0071594364 0.0018530304 0.0053768155 + 593900 0.0057125021 0.0017711364 0.0045827586 + 594000 0.0039885275 0.0021770611 0.0041401645 + 594100 0.0038108365 0.00221391 0.004089556 + 594200 0.0059318968 0.0020048264 0.0049244319 + 594300 0.0050987702 0.0018212388 0.0043307898 + 594400 0.0055291272 0.0021499802 0.0048713475 + 594500 0.0040100306 0.0022558408 0.0042295278 + 594600 0.0046954401 0.0018437442 0.0041547811 + 594700 0.004584253 0.0014142102 0.0036705222 + 594800 0.0038819627 0.0015819722 0.0034926256 + 594900 0.0053793887 0.0019707854 0.0046184533 + 595000 0.0060406289 0.0024011396 0.0053742616 + 595100 0.0055172545 0.0027481416 0.0054636652 + 595200 0.0049875445 0.0024913607 0.0049461677 + 595300 0.0051333162 0.002080179 0.0046067331 + 595400 0.0037941407 0.0018362256 0.0037036542 + 595500 0.0031190486 0.0016669144 0.0032020711 + 595600 0.0043816106 0.0015670139 0.0037235879 + 595700 0.0042261367 0.0015542919 0.0036343436 + 595800 0.0058839933 0.0018517215 0.0047477494 + 595900 0.0035973236 0.0020485162 0.003819074 + 596000 0.0052509714 0.0021727047 0.0047571672 + 596100 0.0045819418 0.0023158474 0.0045710218 + 596200 0.0051570833 0.0022562724 0.0047945244 + 596300 0.0050530649 0.0025507771 0.0050378325 + 596400 0.0043987683 0.0031747214 0.0053397402 + 596500 0.0062029992 0.0027841645 0.0058372032 + 596600 0.0068650319 0.0023681824 0.0057470653 + 596700 0.0043790641 0.0020447256 0.0042000462 + 596800 0.0044794382 0.0020404215 0.0042451449 + 596900 0.0035398466 0.0018840124 0.0036262807 + 597000 0.0036666275 0.0014483245 0.0032529928 + 597100 0.0058318505 0.0011014717 0.0039718357 + 597200 0.0037596077 0.0014159628 0.0032663947 + 597300 0.0053771876 0.0020757876 0.0047223721 + 597400 0.0054627824 0.0024530948 0.005141808 + 597500 0.0060002982 0.0027347671 0.0056880389 + 597600 0.0047138547 0.0031130306 0.005433131 + 597700 0.0047160127 0.002819026 0.0051401885 + 597800 0.0056457273 0.0024342385 0.0052129949 + 597900 0.0051183247 0.0023280547 0.0048472301 + 598000 0.0059825946 0.0022224971 0.0051670554 + 598100 0.0065396366 0.0027582806 0.005977008 + 598200 0.0056579644 0.0029968452 0.0057816245 + 598300 0.0049574917 0.0029906533 0.0054306687 + 598400 0.0046304325 0.0025070469 0.0047860879 + 598500 0.0072556128 0.0021858281 0.0057569501 + 598600 0.0062637936 0.0027452724 0.0058282333 + 598700 0.0059150566 0.0026152305 0.0055265474 + 598800 0.0041982555 0.0022141516 0.0042804805 + 598900 0.0038090976 0.0021315164 0.0040063066 + 599000 0.0040161285 0.0019868679 0.0039635562 + 599100 0.0051931614 0.0022817798 0.004837789 + 599200 0.0052327274 0.0025118948 0.0050873778 + 599300 0.005339576 0.0023001168 0.0049281894 + 599400 0.0053367413 0.0025721744 0.0051988518 + 599500 0.0061369494 0.002417204 0.0054377338 + 599600 0.0044631671 0.0029738275 0.0051705425 + 599700 0.0049970099 0.002684245 0.0051437108 + 599800 0.004984478 0.0022275391 0.0046808368 + 599900 0.0046198386 0.002135554 0.0044093808 + 600000 0.0047973597 0.0020071338 0.0043683343 + 600100 0.0054999639 0.0018407788 0.0045477922 + 600200 0.0057425594 0.0018871888 0.0047136048 + 600300 0.005240561 0.0023515371 0.0049308757 + 600400 0.0049741287 0.0026164485 0.0050646525 + 600500 0.0050194147 0.00206325 0.0045337432 + 600600 0.0035602778 0.0016838579 0.0034361821 + 600700 0.0048884327 0.0019065677 0.0043125932 + 600800 0.0042264707 0.0017929836 0.0038731996 + 600900 0.0043423856 0.0018286858 0.0039659538 + 601000 0.005468472 0.0020189989 0.0047105125 + 601100 0.0056302705 0.0024097924 0.0051809412 + 601200 0.0064865281 0.0024405002 0.0056330882 + 601300 0.0053581685 0.0022317553 0.0048689789 + 601400 0.0047104714 0.002222181 0.0045406161 + 601500 0.0055568515 0.0021247293 0.0048597422 + 601600 0.003697217 0.0024808978 0.0043006218 + 601700 0.0062098098 0.0025792352 0.005635626 + 601800 0.005825291 0.0023827215 0.0052498569 + 601900 0.0047008036 0.0023849748 0.0046986516 + 602000 0.0052946578 0.0025392025 0.0051451669 + 602100 0.00532964 0.0022077453 0.0048309275 + 602200 0.0044716066 0.0017201682 0.0039210371 + 602300 0.0023207518 0.0020646479 0.0032068929 + 602400 0.003825939 0.0025498183 0.0044328976 + 602500 0.0061184999 0.0023509631 0.0053624123 + 602600 0.004307415 0.002301513 0.0044215688 + 602700 0.004856362 0.0016964475 0.0040866882 + 602800 0.0050100749 0.0017507888 0.004216685 + 602900 0.0041936413 0.0019044076 0.0039684654 + 603000 0.0043252073 0.0018798754 0.0040086884 + 603100 0.0047547681 0.0019852753 0.0043255127 + 603200 0.0042949445 0.0023282332 0.0044421512 + 603300 0.005073905 0.0027632118 0.0052605244 + 603400 0.0060862122 0.0025066026 0.0055021601 + 603500 0.00458693 0.0022847999 0.0045424295 + 603600 0.0033161383 0.0025563924 0.0041885542 + 603700 0.0040161587 0.002544763 0.0045214661 + 603800 0.0060208008 0.002370599 0.0053339619 + 603900 0.0044502234 0.0026008307 0.0047911751 + 604000 0.0063329787 0.001996465 0.0051134779 + 604100 0.0049030136 0.0016284274 0.0040416294 + 604200 0.0034760485 0.001795098 0.0035059656 + 604300 0.0043661331 0.0018980504 0.0040470065 + 604400 0.0065554373 0.0017332138 0.0049597181 + 604500 0.0053324764 0.002029382 0.0046539602 + 604600 0.0049865748 0.002162919 0.0046172487 + 604700 0.0051852022 0.0023969963 0.004949088 + 604800 0.0048196113 0.0021697703 0.0045419227 + 604900 0.0043388263 0.0027876351 0.0049231511 + 605000 0.0056799808 0.0033970758 0.0061926913 + 605100 0.0050831288 0.0029561565 0.005458009 + 605200 0.0067914378 0.0024125512 0.005755212 + 605300 0.0046912826 0.0023245698 0.0046335604 + 605400 0.004255019 0.0024379013 0.0045321684 + 605500 0.0047697061 0.0022995594 0.0046471491 + 605600 0.0043791303 0.0022697388 0.004425092 + 605700 0.0029745664 0.0026421513 0.0041061957 + 605800 0.0051528176 0.0027525463 0.0052886987 + 605900 0.0052374139 0.0028680552 0.0054458448 + 606000 0.0041258545 0.0026707342 0.0047014282 + 606100 0.0053518083 0.0023711233 0.0050052164 + 606200 0.004539144 0.0019344863 0.0041685963 + 606300 0.0049517514 0.0021089642 0.0045461543 + 606400 0.0051892553 0.0019932211 0.0045473077 + 606500 0.0026600882 0.0020289367 0.0033381989 + 606600 0.0032258946 0.0023257194 0.0039134644 + 606700 0.0053104873 0.00220816 0.0048219154 + 606800 0.0040252194 0.0020302675 0.0040114302 + 606900 0.0055190475 0.0021432471 0.0048596533 + 607000 0.0060838311 0.0020380811 0.0050324667 + 607100 0.0036247978 0.0023800416 0.0041641217 + 607200 0.0058514796 0.0026246877 0.0055047128 + 607300 0.0052863005 0.0027345848 0.0053364358 + 607400 0.0077130097 0.0027998144 0.0065960614 + 607500 0.0044918898 0.0028804667 0.0050913187 + 607600 0.004883439 0.0024997918 0.0049033594 + 607700 0.0040621846 0.0024666813 0.0044660378 + 607800 0.0055127329 0.0024629267 0.0051762249 + 607900 0.0054136536 0.0022822899 0.0049468225 + 608000 0.0035079854 0.0027395243 0.0044661108 + 608100 0.004045702 0.0028614573 0.0048527013 + 608200 0.0056833693 0.002457851 0.0052551343 + 608300 0.0047893029 0.0022568586 0.0046140936 + 608400 0.0047857563 0.0023761253 0.0047316148 + 608500 0.003807688 0.0023095905 0.0041836869 + 608600 0.0049865491 0.0022197971 0.0046741143 + 608700 0.0051920032 0.002186054 0.0047414931 + 608800 0.0034027401 0.0020846226 0.0037594088 + 608900 0.0053313651 0.0021994456 0.0048234769 + 609000 0.0065682874 0.0022840277 0.0055168567 + 609100 0.0060541077 0.0023931156 0.0053728717 + 609200 0.0045553008 0.0022138782 0.0044559403 + 609300 0.0037148053 0.0020491822 0.0038775629 + 609400 0.003126031 0.0020181942 0.0035567876 + 609500 0.0038646184 0.0023734595 0.0042755764 + 609600 0.0057873619 0.0027651429 0.0056136101 + 609700 0.0048978714 0.0032489737 0.0056596448 + 609800 0.0062829299 0.0029459049 0.0060382845 + 609900 0.005712543 0.0024674666 0.0052791089 + 610000 0.0054318593 0.0020248242 0.0046983174 + 610100 0.0049431699 0.0019085419 0.0043415083 + 610200 0.0049279195 0.002141871 0.0045673314 + 610300 0.0045668019 0.0031249423 0.0053726651 + 610400 0.0051879404 0.0031306349 0.0056840743 + 610500 0.0063941467 0.0029696299 0.006116749 + 610600 0.0052611391 0.0025745357 0.0051640026 + 610700 0.0051735753 0.0026166633 0.0051630324 + 610800 0.0065729094 0.0029452789 0.0061803828 + 610900 0.0059512694 0.003004564 0.0059337044 + 611000 0.0058261333 0.0027356622 0.0056032122 + 611100 0.0061582281 0.0028911301 0.005922133 + 611200 0.0036986726 0.0028732128 0.0046936532 + 611300 0.0059981885 0.0027142313 0.0056664647 + 611400 0.0052332297 0.0021932164 0.0047689466 + 611500 0.0049565558 0.0019057165 0.0043452713 + 611600 0.0037491882 0.0019748334 0.003820137 + 611700 0.0043897339 0.0021256494 0.0042862216 + 611800 0.005086478 0.0023163913 0.0048198922 + 611900 0.0038984896 0.0025127458 0.0044315337 + 612000 0.0063062543 0.0030166932 0.0061205527 + 612100 0.0055583593 0.003019512 0.0057552669 + 612200 0.0045949203 0.0029198561 0.0051814185 + 612300 0.0055598668 0.0028206225 0.0055571194 + 612400 0.0051847334 0.0025215495 0.0050734105 + 612500 0.0043069657 0.0028677151 0.0049875497 + 612600 0.0047305105 0.003196749 0.0055250472 + 612700 0.0041425852 0.0031532786 0.0051922073 + 612800 0.0054191422 0.0028945235 0.0055617576 + 612900 0.004904162 0.0031854012 0.0055991684 + 613000 0.0048750203 0.0030987095 0.0054981336 + 613100 0.0051603207 0.002801174 0.0053410193 + 613200 0.0036402739 0.0031045472 0.0048962445 + 613300 0.0048134096 0.0027478364 0.0051169364 + 613400 0.0058379454 0.0026634493 0.005536813 + 613500 0.0052300279 0.002953302 0.0055274564 + 613600 0.0045514682 0.0030357275 0.0052759032 + 613700 0.0054837061 0.0033003207 0.0059993323 + 613800 0.0048132681 0.0033029937 0.0056720241 + 613900 0.004129811 0.0029993354 0.0050319768 + 614000 0.0048899064 0.0023300172 0.004736768 + 614100 0.0047156777 0.0020516828 0.0043726804 + 614200 0.0035217692 0.0024639203 0.0041972911 + 614300 0.0040876699 0.0028766013 0.0048885013 + 614400 0.0048045892 0.0028376523 0.0052024111 + 614500 0.0061387708 0.0026423372 0.0056637635 + 614600 0.0051715054 0.0024802607 0.005025611 + 614700 0.0053334682 0.0021043041 0.0047293705 + 614800 0.0046380815 0.0020498995 0.0043327052 + 614900 0.0055103106 0.0017388454 0.0044509515 + 615000 0.0052349715 0.0015924528 0.0041690403 + 615100 0.0046602165 0.0020494904 0.0043431907 + 615200 0.0057991668 0.0024588897 0.0053131671 + 615300 0.0045726361 0.0027834552 0.0050340495 + 615400 0.004567817 0.0027317377 0.0049799602 + 615500 0.0034025715 0.0023867994 0.0040615025 + 615600 0.0050123388 0.0021629293 0.0046299398 + 615700 0.004844807 0.0019916942 0.0043762477 + 615800 0.0052274392 0.0022224986 0.0047953789 + 615900 0.0039212891 0.002662029 0.0045920385 + 616000 0.006426361 0.0019979231 0.0051608977 + 616100 0.0062199138 0.0020304834 0.0050918473 + 616200 0.0064314428 0.001915805 0.0050812808 + 616300 0.006473801 0.0025804614 0.0057667853 + 616400 0.0062481106 0.0025710868 0.0056463287 + 616500 0.0051496376 0.0022704766 0.0048050638 + 616600 0.0048137041 0.0023485667 0.0047178116 + 616700 0.0064384473 0.0025848099 0.0057537332 + 616800 0.0057617655 0.002387942 0.0052238109 + 616900 0.0041341694 0.002116814 0.0041516005 + 617000 0.0051973058 0.001867439 0.0044254879 + 617100 0.0040949269 0.0020155051 0.0040309769 + 617200 0.0049754225 0.0019738319 0.0044226727 + 617300 0.0038359902 0.0022266424 0.0041146688 + 617400 0.004528084 0.0021923506 0.004421017 + 617500 0.0046090294 0.0020624888 0.0043309954 + 617600 0.0058748566 0.0021619725 0.0050535035 + 617700 0.0064066614 0.002793131 0.0059464096 + 617800 0.0046287317 0.0031199095 0.0053981133 + 617900 0.0069066172 0.0030188275 0.0064181782 + 618000 0.0053784422 0.0025897816 0.0052369836 + 618100 0.0043639761 0.0025003918 0.0046482863 + 618200 0.0048933758 0.0024652435 0.0048737019 + 618300 0.0047246797 0.0024438239 0.0047692522 + 618400 0.0066443965 0.0023571949 0.0056274838 + 618500 0.0048314033 0.0023338791 0.0047118354 + 618600 0.0036277887 0.0027801086 0.0045656608 + 618700 0.0062917424 0.002851233 0.0059479499 + 618800 0.0046374685 0.0028200536 0.0051025576 + 618900 0.0034744465 0.0028275992 0.0045376783 + 619000 0.0040631225 0.0026782452 0.0046780633 + 619100 0.0045014191 0.0029194595 0.0051350017 + 619200 0.0041521341 0.0030115484 0.0050551769 + 619300 0.0052466028 0.0029366558 0.0055189681 + 619400 0.005267153 0.0029125056 0.0055049325 + 619500 0.0059080281 0.0030257178 0.0059335754 + 619600 0.0057502517 0.0030648124 0.0058950144 + 619700 0.0052904847 0.0034239431 0.0060278535 + 619800 0.0060516362 0.0031701512 0.0061486909 + 619900 0.0037649377 0.0032681921 0.0051212474 + 620000 0.0056585917 0.00278742 0.0055725081 + 620100 0.0072822454 0.0026377902 0.0062220203 + 620200 0.0032312255 0.002553577 0.0041439458 + 620300 0.0066168217 0.0023477115 0.0056044284 + 620400 0.0067706245 0.0027762437 0.0061086605 + 620500 0.0052870208 0.0029271581 0.0055293636 + 620600 0.0068994102 0.0027605746 0.0061563781 + 620700 0.0052231984 0.0025517512 0.0051225442 + 620800 0.0044193585 0.0024814966 0.0046566496 + 620900 0.0043421756 0.0025883901 0.0047255547 + 621000 0.0054170534 0.0025960965 0.0052623025 + 621100 0.0036755959 0.0026990263 0.0045081087 + 621200 0.0041177618 0.0019390366 0.0039657474 + 621300 0.0052850128 0.0018683078 0.0044695251 + 621400 0.004608413 0.0024821464 0.0047503497 + 621500 0.0032036378 0.0029293424 0.0045061329 + 621600 0.0055356935 0.0022121287 0.0049367278 + 621700 0.0052508262 0.0025528185 0.0051372095 + 621800 0.0055247422 0.0029616762 0.0056808852 + 621900 0.0051215433 0.002507202 0.0050279616 + 622000 0.003784942 0.0024646415 0.0043275427 + 622100 0.0052259052 0.0023494945 0.0049216196 + 622200 0.0052558697 0.0021402416 0.004727115 + 622300 0.0059178995 0.0020082382 0.0049209543 + 622400 0.0056553038 0.0017641299 0.0045475998 + 622500 0.0040782733 0.0020403021 0.0040475773 + 622600 0.0053178547 0.0021693869 0.0047867685 + 622700 0.0050570456 0.0024482117 0.0049372263 + 622800 0.0049046827 0.0025556902 0.0049697137 + 622900 0.0047913125 0.0026593345 0.0050175586 + 623000 0.0060499551 0.0021392113 0.0051169235 + 623100 0.0056709446 0.0023107247 0.0051018928 + 623200 0.0048230344 0.0026229589 0.0049967962 + 623300 0.0043762933 0.0024302964 0.0045842533 + 623400 0.0055217851 0.0026983243 0.0054160779 + 623500 0.005485003 0.0028317319 0.0055313818 + 623600 0.0059581209 0.0029881227 0.0059206353 + 623700 0.0070311605 0.0033772984 0.0068379477 + 623800 0.0044187789 0.0035743549 0.0057492226 + 623900 0.0056617203 0.0024801593 0.0052667872 + 624000 0.0044311613 0.0023335392 0.0045145014 + 624100 0.0036177457 0.0024322088 0.004212818 + 624200 0.0051538862 0.0022798154 0.0048164937 + 624300 0.0056019298 0.0020539089 0.0048111087 + 624400 0.0045919862 0.0020280045 0.0042881227 + 624500 0.0056405919 0.0018557687 0.0046319975 + 624600 0.0035849024 0.0021510104 0.0039154546 + 624700 0.0062968471 0.0025790383 0.0056782677 + 624800 0.0046655721 0.0027501161 0.0050464523 + 624900 0.0057268257 0.0024231203 0.0052417923 + 625000 0.0045275128 0.0027703911 0.0049987763 + 625100 0.0043559272 0.0026501042 0.0047940371 + 625200 0.0048763826 0.0028058854 0.00520598 + 625300 0.0055680411 0.0029696101 0.0057101303 + 625400 0.0068858438 0.0025700942 0.0059592204 + 625500 0.0059701999 0.0025986927 0.0055371505 + 625600 0.0057447276 0.0024865746 0.0053140577 + 625700 0.0063834476 0.002056236 0.0051980891 + 625800 0.0055633308 0.0017298982 0.0044681 + 625900 0.0061917038 0.0022366251 0.0052841043 + 626000 0.0050116566 0.0028542946 0.0053209694 + 626100 0.0045883515 0.00271281 0.0049711393 + 626200 0.0050533529 0.0024870893 0.0049742865 + 626300 0.0047874694 0.0023213911 0.0046777237 + 626400 0.0054034865 0.0024105779 0.0050701064 + 626500 0.0053731413 0.0026026187 0.0052472117 + 626600 0.0055981231 0.0027111938 0.0054665201 + 626700 0.0047715999 0.0023931273 0.0047416491 + 626800 0.0060058737 0.0021594794 0.0051154954 + 626900 0.0041608215 0.002232961 0.0042808654 + 627000 0.0057965454 0.0025719736 0.0054249608 + 627100 0.0044012163 0.0029610814 0.005127305 + 627200 0.005115712 0.0027889563 0.0053068458 + 627300 0.0048630751 0.0030509928 0.0054445376 + 627400 0.0059887341 0.0027679946 0.0057155747 + 627500 0.00518381 0.0027472018 0.0052986083 + 627600 0.0042246939 0.0021784377 0.0042577793 + 627700 0.0057939947 0.001891201 0.0047429328 + 627800 0.0038471388 0.0021941946 0.0040877083 + 627900 0.0054911204 0.0028062552 0.0055089161 + 628000 0.0067270554 0.0030495206 0.0063604932 + 628100 0.0047633364 0.0031278611 0.0054723158 + 628200 0.0053824165 0.0024930113 0.0051421694 + 628300 0.0055852425 0.0024334811 0.0051824677 + 628400 0.0067486176 0.0029182884 0.0062398737 + 628500 0.0042973285 0.0030285597 0.0051436511 + 628600 0.0048774232 0.0026880101 0.0050886168 + 628700 0.0047941553 0.0021658821 0.0045255054 + 628800 0.0063600023 0.0017107986 0.0048411122 + 628900 0.0051494443 0.0015760162 0.0041105083 + 629000 0.0064505572 0.0016857281 0.0048606117 + 629100 0.004701789 0.0016975766 0.0040117384 + 629200 0.0047557031 0.0019075865 0.0042482841 + 629300 0.0048524342 0.001723074 0.0041113814 + 629400 0.0048815044 0.0017450372 0.0041476527 + 629500 0.0038068452 0.0015511167 0.0034247983 + 629600 0.0063601989 0.0019343707 0.0050647811 + 629700 0.0057626565 0.0021735815 0.0050098889 + 629800 0.0052728652 0.0021547466 0.0047499849 + 629900 0.0048437558 0.0020461756 0.0044302116 + 630000 0.0061803048 0.0016371053 0.0046789741 + 630100 0.005410265 0.0015974837 0.0042603485 + 630200 0.0037592912 0.0017306618 0.0035809379 + 630300 0.0056475518 0.0019858483 0.0047655027 + 630400 0.0031359763 0.0028659344 0.0044094227 + 630500 0.003877521 0.002853807 0.0047622744 + 630600 0.0045418119 0.0027036041 0.0049390271 + 630700 0.0049576769 0.0024288036 0.0048689102 + 630800 0.0054173848 0.0025578912 0.0052242602 + 630900 0.0059573925 0.002327708 0.0052598622 + 631000 0.0050904403 0.0020780083 0.0045834594 + 631100 0.0040367424 0.0022359015 0.0042227357 + 631200 0.0043852587 0.0024747023 0.0046330718 + 631300 0.0050275712 0.0022323999 0.0047069076 + 631400 0.0051089136 0.0020389331 0.0045534765 + 631500 0.0060643323 0.0023679372 0.0053527258 + 631600 0.0053875936 0.0028776466 0.0055293528 + 631700 0.0064258771 0.002200441 0.0053631774 + 631800 0.0054703286 0.0017262841 0.0044187114 + 631900 0.0038837291 0.0020326862 0.0039442091 + 632000 0.0056265266 0.0018812113 0.0046505174 + 632100 0.0049782617 0.0015742099 0.0040244481 + 632200 0.0046549206 0.0021514877 0.0044425815 + 632300 0.0051858258 0.0023481641 0.0049005627 + 632400 0.0062205227 0.0019694978 0.0050311613 + 632500 0.0035107255 0.0015993505 0.0033272857 + 632600 0.0050181312 0.001644455 0.0041143165 + 632700 0.004102952 0.0018980907 0.0039175124 + 632800 0.0032396109 0.0022724765 0.0038669725 + 632900 0.0039778788 0.0018994847 0.0038573469 + 633000 0.0053425963 0.0018757184 0.0045052775 + 633100 0.004168819 0.0026012857 0.0046531263 + 633200 0.0042765799 0.003022086 0.0051269651 + 633300 0.0047791809 0.0028752129 0.005227466 + 633400 0.0052699003 0.0022003587 0.0047941378 + 633500 0.0051904088 0.0025138555 0.0050685098 + 633600 0.0043488848 0.0026608225 0.0048012892 + 633700 0.004315331 0.0023786182 0.0045025702 + 633800 0.0060786423 0.0023331491 0.0053249808 + 633900 0.0087120747 0.0027226023 0.0070105766 + 634000 0.005520639 0.0037804422 0.0064976317 + 634100 0.0059655656 0.003193831 0.0061300078 + 634200 0.0038907873 0.0028626417 0.0047776385 + 634300 0.0058152556 0.0028060761 0.0056682722 + 634400 0.0045734986 0.0029562611 0.00520728 + 634500 0.0044468939 0.0026952576 0.0048839631 + 634600 0.0060339424 0.0022140264 0.0051838574 + 634700 0.0060585082 0.0022022194 0.0051841414 + 634800 0.0043131747 0.0020616123 0.004184503 + 634900 0.0047364638 0.0025007034 0.0048319317 + 635000 0.0063818119 0.0031499142 0.0062909623 + 635100 0.0040411976 0.0035147184 0.0055037453 + 635200 0.0058816194 0.0029388929 0.0058337524 + 635300 0.0071879868 0.0024250847 0.005962922 + 635400 0.0059638973 0.0024760171 0.0054113728 + 635500 0.0056557976 0.0030342223 0.0058179352 + 635600 0.0046701727 0.0030955946 0.0053941952 + 635700 0.0050872728 0.0029176509 0.0054215429 + 635800 0.0044309061 0.0027717603 0.0049525969 + 635900 0.0040106319 0.0027852955 0.0047592784 + 636000 0.0043383727 0.002507491 0.0046427838 + 636100 0.004237471 0.001820477 0.0039061073 + 636200 0.0062640437 0.0015277999 0.0046108839 + 636300 0.0049626058 0.0016900544 0.0041325869 + 636400 0.0048801264 0.0019033688 0.004305306 + 636500 0.005698214 0.0022092922 0.005013882 + 636600 0.0041195231 0.0024775314 0.0045051091 + 636700 0.0037437015 0.0022263207 0.0040689238 + 636800 0.0042400379 0.0018243316 0.0039112252 + 636900 0.0038375543 0.0017236301 0.0036124264 + 637000 0.0050349611 0.0015266561 0.004004801 + 637100 0.0058685165 0.0018561718 0.0047445823 + 637200 0.0050535425 0.002078083 0.0045653734 + 637300 0.0053878889 0.002089245 0.0047410966 + 637400 0.0042974443 0.0020342331 0.0041493815 + 637500 0.0056069247 0.0021073184 0.0048669766 + 637600 0.0041088251 0.0026542574 0.0046765698 + 637700 0.0060812031 0.002745641 0.0057387332 + 637800 0.0056421327 0.0025961205 0.0053731077 + 637900 0.0041253918 0.0025483633 0.0045788296 + 638000 0.0052105991 0.0023035016 0.0048680933 + 638100 0.0063840975 0.0019328689 0.0050750419 + 638200 0.0047429903 0.0016038068 0.0039382474 + 638300 0.0043627587 0.001610414 0.0037577093 + 638400 0.0051258597 0.0017607055 0.0042835895 + 638500 0.0048749638 0.0017793689 0.0041787652 + 638600 0.0045490435 0.0020689614 0.0043079437 + 638700 0.0042300786 0.0025444203 0.0046264121 + 638800 0.0037519871 0.0022338003 0.0040804815 + 638900 0.0051680283 0.0020647703 0.0046084093 + 639000 0.0066885785 0.0023641762 0.0056562109 + 639100 0.0052338962 0.0026339867 0.005210045 + 639200 0.0054277527 0.0025328994 0.0052043714 + 639300 0.0061135532 0.0022446323 0.0052536468 + 639400 0.0049837258 0.0022539557 0.0047068833 + 639500 0.0056645452 0.0029046959 0.0056927142 + 639600 0.0052819758 0.0027441501 0.0053438725 + 639700 0.0046485233 0.0018984967 0.0041864418 + 639800 0.0050554308 0.0019668202 0.00445504 + 639900 0.006192648 0.0021999826 0.0052479266 + 640000 0.0056598466 0.002506752 0.0052924577 + 640100 0.0048373985 0.0026473046 0.0050282117 + 640200 0.0047362875 0.0025176641 0.0048488056 + 640300 0.0044222857 0.0024960518 0.0046726455 + 640400 0.0067347792 0.0020052544 0.0053200285 + 640500 0.004510873 0.001953175 0.0041733703 + 640600 0.0038767276 0.0020652496 0.0039733264 + 640700 0.0046517707 0.0020139826 0.004303526 + 640800 0.003987596 0.0022327478 0.0041953927 + 640900 0.004086137 0.0023614187 0.0043725642 + 641000 0.005276618 0.00256691 0.0051639955 + 641100 0.0052587308 0.0028292284 0.00541751 + 641200 0.0074454168 0.0030415885 0.0067061296 + 641300 0.0052461616 0.0027276584 0.0053097535 + 641400 0.0046597243 0.0023506567 0.0046441148 + 641500 0.0042575862 0.0024170891 0.0045126198 + 641600 0.005674275 0.0026866723 0.0054794795 + 641700 0.0044065011 0.003128199 0.0052970238 + 641800 0.0039695678 0.0029748774 0.004928649 + 641900 0.0061892521 0.0026869569 0.0057332295 + 642000 0.0058590777 0.0025124595 0.0053962243 + 642100 0.004616029 0.0025410986 0.0048130503 + 642200 0.0052963584 0.002337803 0.0049446044 + 642300 0.0052834996 0.0019952094 0.0045956818 + 642400 0.0046751752 0.0018220118 0.0041230745 + 642500 0.0057135896 0.0016874929 0.0044996503 + 642600 0.0030171982 0.0016180681 0.0031030953 + 642700 0.0036379284 0.0017713105 0.0035618534 + 642800 0.0051675326 0.0023782125 0.0049216074 + 642900 0.0049109732 0.0021817129 0.0045988325 + 643000 0.0048513542 0.0018497522 0.0042375281 + 643100 0.0050744146 0.0018355722 0.0043331356 + 643200 0.0050798125 0.0019973384 0.0044975586 + 643300 0.0054367176 0.0020477734 0.0047236578 + 643400 0.0052914213 0.0022053729 0.0048097443 + 643500 0.0042794073 0.0023365469 0.0044428177 + 643600 0.0049090976 0.0025266936 0.0049428901 + 643700 0.0036970615 0.0023079415 0.0041275889 + 643800 0.0056075641 0.0019817678 0.0047417407 + 643900 0.0040765752 0.0023963407 0.0044027801 + 644000 0.0037310762 0.0024222865 0.0042586755 + 644100 0.0056689018 0.002101442 0.0048916046 + 644200 0.0052420803 0.002110891 0.0046909774 + 644300 0.0056283175 0.0020262215 0.004796409 + 644400 0.0043105341 0.0018601308 0.0039817218 + 644500 0.005338493 0.0019536585 0.004581198 + 644600 0.0051975545 0.0026610488 0.0052192202 + 644700 0.0064071721 0.0030431518 0.0061966819 + 644800 0.0059664881 0.0026206971 0.005557328 + 644900 0.0070897558 0.0022367692 0.0057262584 + 645000 0.003931278 0.0025027339 0.0044376598 + 645100 0.0041024169 0.0023142783 0.0043334366 + 645200 0.0046566313 0.0024040888 0.0046960246 + 645300 0.0066913273 0.0021872851 0.0054806728 + 645400 0.0049056437 0.001611568 0.0040260645 + 645500 0.0043845521 0.0020202222 0.0041782439 + 645600 0.0054279399 0.0021567896 0.0048283538 + 645700 0.005546859 0.0022036445 0.0049337391 + 645800 0.0048994807 0.0019962464 0.0044077095 + 645900 0.0041422267 0.0018332818 0.003872034 + 646000 0.0060800335 0.0018658506 0.0048583671 + 646100 0.0038611257 0.0017647928 0.0036651906 + 646200 0.0054055887 0.0016453366 0.0043058998 + 646300 0.0053082839 0.0017874352 0.0044001062 + 646400 0.0059624497 0.0019088366 0.0048434798 + 646500 0.0047145172 0.0024876828 0.0048081093 + 646600 0.0048178187 0.0025217938 0.0048930639 + 646700 0.0046164055 0.0021415008 0.0044136379 + 646800 0.0054329644 0.0020183798 0.004692417 + 646900 0.0046447866 0.0023522788 0.0046383846 + 647000 0.005464461 0.0020173281 0.0047068674 + 647100 0.0047139937 0.0020948305 0.0044149993 + 647200 0.0038838116 0.0025422166 0.0044537801 + 647300 0.006993319 0.0021658687 0.0056078929 + 647400 0.0066386633 0.0021034903 0.0053709574 + 647500 0.004804442 0.0022831652 0.0046478515 + 647600 0.0037960992 0.0020709541 0.0039393467 + 647700 0.0030984518 0.0022126625 0.0037376817 + 647800 0.0041780984 0.0025194612 0.004575869 + 647900 0.0063874672 0.0023994081 0.0055432396 + 648000 0.0038138021 0.0026297528 0.0045068585 + 648100 0.0055960681 0.002233484 0.0049877988 + 648200 0.0066924316 0.002049273 0.0053432042 + 648300 0.0048447396 0.0027597797 0.0051442999 + 648400 0.0058012736 0.0033134619 0.0061687762 + 648500 0.0043485846 0.0035694988 0.0057098178 + 648600 0.0048172406 0.0037049491 0.0060759347 + 648700 0.004661885 0.0032176095 0.005512131 + 648800 0.0066046926 0.0025373004 0.0057880475 + 648900 0.0049831565 0.0025289941 0.0049816414 + 649000 0.0043399073 0.0023883548 0.0045244029 + 649100 0.0047666818 0.0021324996 0.0044786008 + 649200 0.006195426 0.0018395101 0.0048888213 + 649300 0.0056233426 0.0017273488 0.0044950877 + 649400 0.0045485831 0.0019399734 0.0041787292 + 649500 0.0049113101 0.0020640816 0.0044813671 + 649600 0.0031299397 0.002003618 0.0035441352 + 649700 0.0041686748 0.0018474485 0.0038992182 + 649800 0.0067378972 0.0019491861 0.0052654949 + 649900 0.0050614573 0.002608293 0.0050994791 + 650000 0.0055740155 0.0025385806 0.0052820413 + 650100 0.0050579115 0.002552119 0.0050415598 + 650200 0.0045674432 0.0025305983 0.0047786367 + 650300 0.0042849106 0.0024243567 0.0045333361 + 650400 0.0053773381 0.0022720191 0.0049186777 + 650500 0.0048012808 0.0026291645 0.0049922949 + 650600 0.0069413913 0.0028568861 0.0062733521 + 650700 0.0055506933 0.0029314141 0.0056633959 + 650800 0.0039004734 0.0028581039 0.0047778682 + 650900 0.0048257278 0.0025752015 0.0049503644 + 651000 0.0043276212 0.0025016429 0.004631644 + 651100 0.0053643312 0.0025367073 0.0051769641 + 651200 0.0059449802 0.0026193911 0.005545436 + 651300 0.0066308367 0.0027126697 0.0059762846 + 651400 0.004571972 0.0026466361 0.0048969036 + 651500 0.0068456756 0.0024836006 0.0058529565 + 651600 0.0057294831 0.002398065 0.005218045 + 651700 0.0038264869 0.0023190403 0.0042023893 + 651800 0.005205172 0.0023576551 0.0049195757 + 651900 0.0058418875 0.0023180711 0.0051933752 + 652000 0.0049031867 0.002723253 0.0051365402 + 652100 0.0046934353 0.0025777617 0.0048878119 + 652200 0.0035364381 0.0023214278 0.0040620184 + 652300 0.0065508643 0.0019705312 0.0051947847 + 652400 0.0054208429 0.0018146544 0.0044827255 + 652500 0.0044735689 0.0018222331 0.0040240678 + 652600 0.0042226228 0.0020565138 0.004134836 + 652700 0.0052078546 0.0026195994 0.0051828403 + 652800 0.0049575983 0.0031837901 0.005623858 + 652900 0.0068625341 0.0033649566 0.0067426101 + 653000 0.0052540252 0.0029891304 0.005575096 + 653100 0.0050447687 0.0026014038 0.0050843759 + 653200 0.005454582 0.0026917599 0.005376437 + 653300 0.0050676774 0.0027768342 0.0052710816 + 653400 0.0045926925 0.0028796715 0.0051401374 + 653500 0.004631351 0.0028268332 0.0051063263 + 653600 0.0055154652 0.0029280817 0.0056427248 + 653700 0.0037972517 0.002763066 0.0046320258 + 653800 0.0056799025 0.0028576027 0.0056531797 + 653900 0.0054473327 0.0028996208 0.0055807298 + 654000 0.0045293072 0.0024168021 0.0046460705 + 654100 0.0048993387 0.0022988069 0.0047102001 + 654200 0.004494637 0.0021763806 0.0043885847 + 654300 0.0048301719 0.001945487 0.0043228372 + 654400 0.0054165458 0.0019530808 0.004619037 + 654500 0.0052586366 0.0020517196 0.0046399548 + 654600 0.0063491794 0.0020262481 0.0051512348 + 654700 0.0053375543 0.0021331314 0.0047602089 + 654800 0.005792454 0.0025702839 0.0054212573 + 654900 0.0036993196 0.002832568 0.0046533268 + 655000 0.003950504 0.0026273239 0.0045717126 + 655100 0.0030344807 0.0024823978 0.0039759313 + 655200 0.0048653506 0.002359078 0.0047537428 + 655300 0.0052393273 0.0028080644 0.0053867958 + 655400 0.0038690693 0.0034448535 0.005349161 + 655500 0.0061948438 0.003003687 0.0060527117 + 655600 0.0057388499 0.0024507158 0.005275306 + 655700 0.0050221281 0.0027437667 0.0052155954 + 655800 0.0053065198 0.0027836714 0.0053954742 + 655900 0.0029940105 0.0028407348 0.0043143494 + 656000 0.0043630634 0.0027647513 0.0049121966 + 656100 0.0062122708 0.0026640428 0.0057216448 + 656200 0.0065975555 0.0024197087 0.0056669431 + 656300 0.0063569591 0.0031459207 0.0062747365 + 656400 0.0062141043 0.0040595144 0.0071180188 + 656500 0.0047076065 0.0038918809 0.006208906 + 656600 0.0060755798 0.0036461384 0.0066364629 + 656700 0.0059815192 0.0035508436 0.0064948725 + 656800 0.0050289573 0.0036661918 0.0061413818 + 656900 0.0044726999 0.0032612164 0.0054626233 + 657000 0.0041948258 0.0031360191 0.00520066 + 657100 0.0060799997 0.0028013427 0.0057938426 + 657200 0.0062821098 0.0030723427 0.0061643187 + 657300 0.0063954054 0.0030556917 0.0062034303 + 657400 0.0045755377 0.0027233375 0.00497536 + 657500 0.0038908542 0.0023789087 0.0042939384 + 657600 0.0039964644 0.0024138076 0.0043808174 + 657700 0.0056584384 0.002153922 0.0049389346 + 657800 0.0050173194 0.0022214829 0.0046909448 + 657900 0.0037956734 0.0021461622 0.0040143452 + 658000 0.00479855 0.0016817935 0.0040435798 + 658100 0.0052125385 0.0017318736 0.0042974199 + 658200 0.0035756342 0.0024492223 0.0042091048 + 658300 0.0054140839 0.0028560834 0.0055208278 + 658400 0.004767683 0.0026367831 0.004983377 + 658500 0.0042812392 0.0024185839 0.0045257564 + 658600 0.0051687736 0.0024774002 0.0050214059 + 658700 0.0056508858 0.0025360799 0.0053173753 + 658800 0.0044906761 0.0026801526 0.0048904072 + 658900 0.0049074859 0.002590223 0.0050056262 + 659000 0.004455564 0.0029992893 0.0051922622 + 659100 0.0070948942 0.0025473612 0.0060393795 + 659200 0.0050309958 0.0024476878 0.004923881 + 659300 0.0056309209 0.0026059033 0.0053773722 + 659400 0.0047612767 0.0026662877 0.0050097286 + 659500 0.0043180869 0.003044067 0.0051693754 + 659600 0.0055279543 0.0028647986 0.0055855886 + 659700 0.0037306206 0.0027043927 0.0045405576 + 659800 0.0051643372 0.0026988874 0.0052407096 + 659900 0.0070022562 0.0026892424 0.0061356653 + 660000 0.0050270475 0.0028144848 0.0052887347 + 660100 0.0045045725 0.0026756309 0.0048927252 + 660200 0.0055873838 0.0026207046 0.0053707451 + 660300 0.0048079044 0.0022776415 0.0046440319 + 660400 0.0072035767 0.0018182451 0.0053637555 + 660500 0.0060818166 0.0021687695 0.0051621636 + 660600 0.0032214965 0.0021423746 0.0037279549 + 660700 0.0058801373 0.0020075174 0.0049016475 + 660800 0.0055054487 0.0024850403 0.0051947533 + 660900 0.0038546298 0.0030655364 0.004962737 + 661000 0.0036350962 0.0028047689 0.0045939178 + 661100 0.0069755156 0.0022191658 0.0056524274 + 661200 0.0040644289 0.0022620895 0.0042625506 + 661300 0.0065039708 0.0022758094 0.0054769825 + 661400 0.004208787 0.0024043409 0.0044758532 + 661500 0.0036858231 0.0022768785 0.0040909946 + 661600 0.003919448 0.0020812471 0.0040103504 + 661700 0.0051875688 0.0022630614 0.0048163179 + 661800 0.0034742819 0.0024049235 0.0041149217 + 661900 0.0040398418 0.0026587881 0.0046471478 + 662000 0.0052204068 0.0027413493 0.0053107683 + 662100 0.0063386893 0.003098326 0.0062181497 + 662200 0.0047538468 0.0036770192 0.0060168031 + 662300 0.0058509521 0.0035500629 0.0064298283 + 662400 0.0057655289 0.0027763552 0.0056140764 + 662500 0.0075300498 0.0020899482 0.0057961446 + 662600 0.0060945712 0.0022959624 0.0052956342 + 662700 0.0034491472 0.0026848167 0.0043824439 + 662800 0.0039087583 0.0026594289 0.0045832709 + 662900 0.0060926997 0.00262631 0.0056250607 + 663000 0.0063906351 0.0029484641 0.0060938548 + 663100 0.0048108647 0.0029218466 0.005289694 + 663200 0.0051283331 0.0024708453 0.0049949468 + 663300 0.0048214481 0.0023383819 0.0047114384 + 663400 0.003927409 0.0027080232 0.0046410448 + 663500 0.0038615296 0.0027687968 0.0046693934 + 663600 0.0047503025 0.0023904833 0.0047285228 + 663700 0.0042655431 0.0022459179 0.0043453649 + 663800 0.0050834131 0.0017995455 0.0043015378 + 663900 0.005870636 0.0020627862 0.0049522398 + 664000 0.0056802069 0.0022683372 0.005064064 + 664100 0.0045430315 0.0022393083 0.0044753316 + 664200 0.003181205 0.0019707946 0.0035365439 + 664300 0.0044973463 0.0022761214 0.004489659 + 664400 0.0051514663 0.0025435159 0.0050790032 + 664500 0.0039339647 0.0024938858 0.0044301341 + 664600 0.0046170232 0.0022486292 0.0045210703 + 664700 0.003871775 0.0024992378 0.0044048771 + 664800 0.0049210845 0.0028348354 0.0052569317 + 664900 0.0049576216 0.0028845156 0.0053245949 + 665000 0.0049457496 0.0025445442 0.0049787803 + 665100 0.0053596656 0.0024663843 0.0051043447 + 665200 0.0059079902 0.0025972092 0.0055050482 + 665300 0.0051141423 0.0024782834 0.0049954003 + 665400 0.0049497085 0.0023870574 0.004823242 + 665500 0.0064059106 0.0027998044 0.0059527135 + 665600 0.0049158208 0.0033540077 0.0057735133 + 665700 0.0043917998 0.0031241047 0.0052856937 + 665800 0.0055305054 0.002527722 0.0052497677 + 665900 0.0044565373 0.0023701414 0.0045635933 + 666000 0.0045055118 0.0023526428 0.0045701994 + 666100 0.004430349 0.0024962708 0.0046768331 + 666200 0.0043395434 0.0026102522 0.0047461213 + 666300 0.0055741889 0.00220317 0.0049467161 + 666400 0.0042159779 0.0020539057 0.0041289573 + 666500 0.0049579669 0.0022393053 0.0046795547 + 666600 0.0042247187 0.002469051 0.0045484047 + 666700 0.0057256165 0.0022106921 0.005028769 + 666800 0.0055682181 0.0023105133 0.0050511206 + 666900 0.004010955 0.0024162372 0.0043903791 + 667000 0.0064801388 0.0027105478 0.0058999912 + 667100 0.0054565208 0.0028426254 0.0055282567 + 667200 0.0060430289 0.0027759535 0.0057502568 + 667300 0.0035340057 0.0024062949 0.0041456883 + 667400 0.0047274039 0.0020610535 0.0043878226 + 667500 0.0034031022 0.0019794819 0.0036544462 + 667600 0.0037596981 0.001968766 0.0038192424 + 667700 0.0031881715 0.0019771201 0.0035462982 + 667800 0.0043365073 0.0025733893 0.004707764 + 667900 0.0054589645 0.0023080042 0.0049948383 + 668000 0.0046356212 0.0023611953 0.0046427901 + 668100 0.0046074013 0.002491793 0.0047594984 + 668200 0.0062143524 0.0021554981 0.0052141247 + 668300 0.0055628815 0.0021614282 0.004899409 + 668400 0.0045339411 0.0021935806 0.0044251298 + 668500 0.0049690576 0.0021590651 0.0046047732 + 668600 0.0086980175 0.0018305981 0.0061116536 + 668700 0.0043696792 0.0023136281 0.0044643296 + 668800 0.0044264682 0.0024863303 0.0046649826 + 668900 0.0048614015 0.002252732 0.0046454531 + 669000 0.0059826482 0.0025346379 0.0054792226 + 669100 0.0044805159 0.002356554 0.0045618079 + 669200 0.0046616388 0.0021394846 0.004433885 + 669300 0.004992445 0.0020526462 0.0045098653 + 669400 0.004681903 0.0021275938 0.004431968 + 669500 0.0051255719 0.0022788136 0.0048015561 + 669600 0.0054260055 0.0021206537 0.0047912658 + 669700 0.0043293394 0.0017870453 0.003917892 + 669800 0.0056885939 0.001716041 0.0045158958 + 669900 0.005138037 0.0019883816 0.0045172592 + 670000 0.0047947355 0.0024860514 0.0048459603 + 670100 0.0051777829 0.0027424239 0.0052908639 + 670200 0.0046799514 0.0025028587 0.0048062723 + 670300 0.0068876718 0.0022817887 0.0056718146 + 670400 0.0056819799 0.0026996808 0.0054962803 + 670500 0.005378205 0.0028821895 0.0055292747 + 670600 0.0045073928 0.0030836457 0.0053021281 + 670700 0.0063222231 0.0030539157 0.0061656349 + 670800 0.004228824 0.0032665449 0.0053479193 + 670900 0.0073407048 0.0032366526 0.0068496558 + 671000 0.0059084951 0.003266237 0.0061743244 + 671100 0.0050212534 0.0032044483 0.0056758465 + 671200 0.004664005 0.003150356 0.005445921 + 671300 0.0047454837 0.0028274751 0.0051631428 + 671400 0.0048756828 0.0029732546 0.0053730047 + 671500 0.005351671 0.0032481333 0.0058821589 + 671600 0.0038978503 0.0033397411 0.0052582143 + 671700 0.0050387217 0.0028648786 0.0053448745 + 671800 0.0059998186 0.0028614991 0.0058145348 + 671900 0.0040175306 0.0029249817 0.00490236 + 672000 0.004745928 0.0028554703 0.0051913567 + 672100 0.0044722174 0.002951749 0.0051529185 + 672200 0.00558642 0.0023936426 0.0051432087 + 672300 0.003305726 0.001847507 0.003474544 + 672400 0.0046829593 0.0023142257 0.0046191197 + 672500 0.0056986721 0.0024139131 0.0052187282 + 672600 0.0044216927 0.0022105582 0.0043868601 + 672700 0.0055631748 0.0021606619 0.004898787 + 672800 0.0029368735 0.0024735124 0.0039190048 + 672900 0.0054301144 0.0024383986 0.005111033 + 673000 0.0057965952 0.002437771 0.0052907827 + 673100 0.0054675047 0.0029462787 0.0056373161 + 673200 0.0043772004 0.0031054349 0.0052598382 + 673300 0.0062502942 0.0032243219 0.0063006385 + 673400 0.0050341731 0.0025921229 0.00506988 + 673500 0.007528269 0.0019056578 0.0056109777 + 673600 0.0049644214 0.0021748386 0.0046182648 + 673700 0.0041774069 0.0021829548 0.0042390223 + 673800 0.0045256346 0.0025209503 0.0047484111 + 673900 0.0053837863 0.0026675827 0.005317415 + 674000 0.004886261 0.0025137742 0.0049187308 + 674100 0.0053467151 0.0020138869 0.0046454733 + 674200 0.0047868477 0.0019913979 0.0043474245 + 674300 0.0050051566 0.0019248412 0.0043883167 + 674400 0.0043893182 0.0020593264 0.0042196939 + 674500 0.0050114205 0.0019393671 0.0044059256 + 674600 0.0052016139 0.0022119747 0.0047721441 + 674700 0.005860037 0.0022713499 0.0051555869 + 674800 0.0054850293 0.0022645956 0.0049642584 + 674900 0.0043102958 0.0022470664 0.0043685401 + 675000 0.0050686219 0.002456838 0.0049515503 + 675100 0.0051421168 0.002752 0.0052828857 + 675200 0.0074497701 0.0023520192 0.0060187029 + 675300 0.0034849371 0.0025540116 0.0042692541 + 675400 0.0040097458 0.0024365958 0.0044101426 + 675500 0.0060492095 0.0021582575 0.0051356028 + 675600 0.0043556376 0.0026457176 0.0047895079 + 675700 0.0060969323 0.0025115971 0.005512431 + 675800 0.0051388376 0.0023770971 0.0049063687 + 675900 0.0041750246 0.0025823778 0.0046372727 + 676000 0.0048236404 0.002256747 0.0046308825 + 676100 0.0036732031 0.0025248464 0.0043327511 + 676200 0.0044960658 0.0023808197 0.0045937271 + 676300 0.004913098 0.002333082 0.0047512474 + 676400 0.0048187182 0.002360636 0.0047323489 + 676500 0.0046523584 0.0022093084 0.0044991411 + 676600 0.0039226868 0.0020733573 0.0040040547 + 676700 0.0056571048 0.0018608836 0.0046452398 + 676800 0.0056988755 0.0020612579 0.0048661732 + 676900 0.0040618688 0.0021948485 0.0041940496 + 677000 0.0043351274 0.0020142167 0.0041479122 + 677100 0.0053221985 0.0022972057 0.0049167253 + 677200 0.0048028452 0.0024456699 0.0048095703 + 677300 0.0056730787 0.0023249019 0.0051171203 + 677400 0.0053277184 0.002586122 0.0052083584 + 677500 0.0049660971 0.0023619758 0.0048062267 + 677600 0.0045623412 0.0018034277 0.004048955 + 677700 0.0040990764 0.0018005079 0.003818022 + 677800 0.0043796582 0.0020047214 0.0041603344 + 677900 0.0056915285 0.0024324326 0.0052337317 + 678000 0.0057191323 0.0026540691 0.0054689545 + 678100 0.0046453011 0.0023342639 0.0046206231 + 678200 0.0035325063 0.0020762461 0.0038149016 + 678300 0.0052106883 0.0021884505 0.0047530861 + 678400 0.0052215085 0.0025350042 0.0051049654 + 678500 0.0032756779 0.0026962737 0.0043085214 + 678600 0.0044179745 0.0020850169 0.0042594887 + 678700 0.0031648444 0.0023200238 0.0038777206 + 678800 0.0040915516 0.0026867478 0.0047005584 + 678900 0.005759063 0.003124892 0.0059594308 + 679000 0.004794972 0.002904829 0.0052648543 + 679100 0.0045171127 0.0026390094 0.0048622758 + 679200 0.0047793972 0.0022594594 0.004611819 + 679300 0.0058441959 0.0019245889 0.004801029 + 679400 0.0075962551 0.0021703106 0.0059090923 + 679500 0.0050867599 0.0026888859 0.0051925255 + 679600 0.0040060778 0.0028872213 0.0048589627 + 679700 0.0047578484 0.0029798607 0.0053216142 + 679800 0.0057679466 0.0028466624 0.0056855736 + 679900 0.0051641372 0.0030261892 0.005567913 + 680000 0.0075064736 0.0025858365 0.006280429 + 680100 0.0055100569 0.0024195857 0.0051315669 + 680200 0.0055483096 0.0021929221 0.0049237307 + 680300 0.005562335 0.0023102093 0.005047921 + 680400 0.0055858141 0.0025225486 0.0052718165 + 680500 0.0050320768 0.0026571143 0.0051338396 + 680600 0.006409659 0.0025316933 0.0056864473 + 680700 0.0057108081 0.0024899958 0.0053007841 + 680800 0.0048687257 0.0021309981 0.004527324 + 680900 0.0046184582 0.0022271788 0.0045003262 + 681000 0.0042918092 0.002533281 0.0046456559 + 681100 0.0038350347 0.0026932862 0.0045808423 + 681200 0.0041211497 0.0025821553 0.0046105337 + 681300 0.0050464341 0.0023649284 0.0048487202 + 681400 0.0058051397 0.0022149776 0.0050721948 + 681500 0.005865623 0.0029478383 0.0058348246 + 681600 0.0065985909 0.0034200323 0.0066677763 + 681700 0.0047289724 0.0037840072 0.0061115483 + 681800 0.0064556139 0.0028143517 0.0059917242 + 681900 0.0045839948 0.0024974117 0.0047535967 + 682000 0.0048828025 0.002466016 0.0048692704 + 682100 0.0047644183 0.0025752921 0.0049202792 + 682200 0.0047718098 0.0024238825 0.0047725076 + 682300 0.0044509985 0.0020818299 0.0042725557 + 682400 0.0052168314 0.0016715858 0.004239245 + 682500 0.005031353 0.0017264847 0.0042028538 + 682600 0.0043207398 0.0018105733 0.0039371874 + 682700 0.0053070536 0.0019181475 0.004530213 + 682800 0.0047546027 0.0022087878 0.0045489438 + 682900 0.0047225985 0.0027864544 0.0051108584 + 683000 0.0058173625 0.0024126045 0.0052758376 + 683100 0.0057075215 0.0025636252 0.005372796 + 683200 0.0066169236 0.0022166267 0.0054733938 + 683300 0.0049683531 0.0019651876 0.0044105489 + 683400 0.0064842655 0.0019511123 0.0051425867 + 683500 0.0044827101 0.0020965571 0.004302891 + 683600 0.0028287977 0.0022215432 0.0036138421 + 683700 0.0056039345 0.001929467 0.0046876535 + 683800 0.005590214 0.0020244787 0.0047759122 + 683900 0.0046800061 0.0019410179 0.0042444584 + 684000 0.0048742047 0.0020333643 0.0044323869 + 684100 0.004831439 0.0024540671 0.0048320409 + 684200 0.0051075725 0.0023308208 0.0048447042 + 684300 0.0058857622 0.0022141523 0.0051110509 + 684400 0.0024215425 0.0024779473 0.0036698003 + 684500 0.0053165458 0.0023591908 0.0049759282 + 684600 0.005475059 0.0028738941 0.0055686497 + 684700 0.0060332387 0.0030061541 0.0059756388 + 684800 0.0046758917 0.0025464458 0.0048478613 + 684900 0.0054225523 0.002691452 0.0053603645 + 685000 0.0046602063 0.0027147674 0.0050084627 + 685100 0.0057766375 0.0025501516 0.0053933404 + 685200 0.007767117 0.0032148157 0.0070376936 + 685300 0.0045127035 0.0039288576 0.0061499539 + 685400 0.0051752919 0.0033902472 0.0059374612 + 685500 0.0039492273 0.003204865 0.0051486253 + 685600 0.0051994445 0.002810966 0.0053700676 + 685700 0.0050636559 0.0025628998 0.005055168 + 685800 0.0044605363 0.0026705858 0.004866006 + 685900 0.0076528969 0.0026602773 0.0064269375 + 686000 0.0032783115 0.0025365934 0.0041501374 + 686100 0.0050273857 0.0028058989 0.0052803153 + 686200 0.0058652067 0.0024300372 0.0053168187 + 686300 0.005688628 0.002433187 0.0052330587 + 686400 0.0042703702 0.0026967121 0.0047985349 + 686500 0.0051675104 0.0026750609 0.005218445 + 686600 0.0055427984 0.0023164449 0.005044541 + 686700 0.0056572934 0.0021157315 0.0049001806 + 686800 0.0033687444 0.0025194249 0.0041774788 + 686900 0.0044852211 0.002295016 0.0045025858 + 687000 0.0045458439 0.0022850766 0.0045224841 + 687100 0.0045914176 0.0022283087 0.0044881471 + 687200 0.0047863567 0.0023487564 0.0047045413 + 687300 0.0060749509 0.002240496 0.0052305109 + 687400 0.0048818665 0.0023311927 0.0047339864 + 687500 0.0044534981 0.001962663 0.0041546191 + 687600 0.0038944946 0.0017706064 0.003687428 + 687700 0.0046273797 0.0025448263 0.0048223648 + 687800 0.0060705661 0.0026165334 0.0056043901 + 687900 0.0053226716 0.0027118165 0.0053315689 + 688000 0.0062006393 0.0032390254 0.0062909025 + 688100 0.0059473391 0.0029908844 0.0059180903 + 688200 0.0062549256 0.0021358221 0.0052144183 + 688300 0.0055845248 0.0016409605 0.0043895938 + 688400 0.0041395863 0.0014861797 0.0035236323 + 688500 0.0057194777 0.0016127107 0.0044277662 + 688600 0.0050414016 0.0019692893 0.0044506042 + 688700 0.0046486158 0.002250906 0.0045388966 + 688800 0.0048799866 0.0023860639 0.0047879323 + 688900 0.0072120571 0.0024628402 0.0060125245 + 689000 0.0062512322 0.0025219784 0.0055987567 + 689100 0.00626328 0.0026380952 0.0057208034 + 689200 0.0045055548 0.0022181105 0.0044356882 + 689300 0.0045064541 0.0020769127 0.004294933 + 689400 0.0043024576 0.0021233551 0.004240971 + 689500 0.0053693969 0.0018926329 0.0045353829 + 689600 0.0054839597 0.0019569141 0.0046560505 + 689700 0.0042657687 0.0021556018 0.0042551598 + 689800 0.0038317575 0.0023508292 0.0042367724 + 689900 0.0051182071 0.0023658891 0.0048850067 + 690000 0.0051729599 0.0020806806 0.0046267468 + 690100 0.0048221896 0.0020947318 0.0044681533 + 690200 0.0061737236 0.0018237452 0.0048623748 + 690300 0.0047453692 0.0017034242 0.0040390356 + 690400 0.004637416 0.0021077306 0.0043902088 + 690500 0.0046235167 0.0026692926 0.0049449297 + 690600 0.0070649802 0.0024391651 0.00591646 + 690700 0.005604354 0.0027471965 0.0055055894 + 690800 0.005684871 0.0027483369 0.0055463594 + 690900 0.005652759 0.0028271717 0.005609389 + 691000 0.0057216402 0.0025706292 0.005386749 + 691100 0.0051943266 0.0030115843 0.0055681669 + 691200 0.0044125767 0.003576585 0.0057484001 + 691300 0.0048581677 0.0035070865 0.005898216 + 691400 0.006152544 0.0031108732 0.0061390784 + 691500 0.0040076262 0.0032249173 0.0051974208 + 691600 0.0060049994 0.0031453214 0.006100907 + 691700 0.0058396939 0.0026904008 0.0055646252 + 691800 0.0054325745 0.002653074 0.0053269192 + 691900 0.0042940458 0.0023197013 0.0044331769 + 692000 0.0044613984 0.0020832707 0.0042791153 + 692100 0.0062665778 0.0019233611 0.0050076923 + 692200 0.0042000614 0.0021041334 0.0041713511 + 692300 0.005367531 0.001656117 0.0042979486 + 692400 0.0047550689 0.0024898739 0.0048302594 + 692500 0.0059521447 0.0029900424 0.0059196136 + 692600 0.0052896146 0.0031780219 0.0057815041 + 692700 0.0048772087 0.0028020917 0.0052025928 + 692800 0.0057178287 0.0028638218 0.0056780656 + 692900 0.0053370127 0.0026270138 0.0052538247 + 693000 0.0054665977 0.002490169 0.0051807601 + 693100 0.007304878 0.0025287077 0.0061240774 + 693200 0.004594935 0.0027059757 0.0049675453 + 693300 0.0050787663 0.0022748099 0.0047745152 + 693400 0.0053769615 0.0020126602 0.0046591335 + 693500 0.0054797919 0.0022273983 0.0049244834 + 693600 0.0041089287 0.0024957423 0.0045181056 + 693700 0.0041709341 0.0025918975 0.0046447792 + 693800 0.0044031612 0.0028116242 0.004978805 + 693900 0.0057319818 0.0026048594 0.0054260691 + 694000 0.0040898646 0.0023163249 0.0043293051 + 694100 0.0049226123 0.0022471803 0.0046700285 + 694200 0.0057345602 0.0024211746 0.0052436534 + 694300 0.0046634757 0.002571209 0.0048665134 + 694400 0.0060118561 0.0023734428 0.0053324033 + 694500 0.0053722931 0.0020365569 0.0046807324 + 694600 0.0062807402 0.0021100497 0.0052013515 + 694700 0.0054601901 0.0024067036 0.005094141 + 694800 0.006168047 0.0023689426 0.0054047782 + 694900 0.0095267718 0.0019935477 0.0066825057 + 695000 0.0047937031 0.0024501114 0.0048095122 + 695100 0.0037958042 0.0026339212 0.0045021686 + 695200 0.0056756004 0.0024888803 0.0052823399 + 695300 0.0065095419 0.0027993367 0.0060032519 + 695400 0.0051315665 0.0028904789 0.0054161717 + 695500 0.0069468732 0.0024182345 0.0058373986 + 695600 0.0056513997 0.0021734505 0.0049549988 + 695700 0.0056084497 0.0021237303 0.0048841392 + 695800 0.0060200507 0.0025549098 0.0055179035 + 695900 0.0051746085 0.0028852457 0.0054321233 + 696000 0.0049811221 0.0030283082 0.0054799542 + 696100 0.0047199585 0.0026645625 0.0049876671 + 696200 0.00609094 0.0024145045 0.005412389 + 696300 0.0057625866 0.0022909599 0.0051272329 + 696400 0.0061051549 0.0020355491 0.00504043 + 696500 0.0053089259 0.0018318959 0.0044448829 + 696600 0.0064647536 0.0020428696 0.0052247405 + 696700 0.0043270026 0.0026228024 0.004752499 + 696800 0.0047763797 0.0020895256 0.0044404 + 696900 0.0054960134 0.0015044996 0.0042095687 + 697000 0.0057412272 0.0021565543 0.0049823146 + 697100 0.0049822177 0.0022433303 0.0046955156 + 697200 0.0068859033 0.0019204202 0.0053095757 + 697300 0.0062941827 0.0021658064 0.0052637245 + 697400 0.0045259021 0.0027498639 0.0049774563 + 697500 0.0059815416 0.0029234193 0.0058674593 + 697600 0.0049262988 0.00293233 0.0053569926 + 697700 0.0041274099 0.0024610964 0.004492556 + 697800 0.0041750089 0.0027867136 0.0048416008 + 697900 0.0045170928 0.0028606019 0.0050838585 + 698000 0.004331817 0.0025704307 0.0047024969 + 698100 0.0041904627 0.00215044 0.0042129333 + 698200 0.0043342335 0.0023475741 0.0044808296 + 698300 0.004870833 0.0019581358 0.0043554989 + 698400 0.0037380592 0.0021331644 0.0039729904 + 698500 0.0054283175 0.0025001123 0.0051718623 + 698600 0.006453305 0.0027314198 0.0059076558 + 698700 0.0048603363 0.0023230356 0.0047152324 + 698800 0.0049545953 0.0022071756 0.0046457655 + 698900 0.0046959783 0.0023317987 0.0046431005 + 699000 0.0047527583 0.0024121938 0.004751442 + 699100 0.0045180861 0.0025376875 0.004761433 + 699200 0.0043257015 0.0023829204 0.0045119766 + 699300 0.0047456035 0.0024294355 0.0047651622 + 699400 0.0047533517 0.002467943 0.0048074833 + 699500 0.0043115788 0.0027106607 0.0048327659 + 699600 0.0051867351 0.0024916009 0.005044447 + 699700 0.0056673025 0.0023043241 0.0050936995 + 699800 0.0044158495 0.0023423374 0.0045157634 + 699900 0.0046553666 0.0020414022 0.0043327155 + 700000 0.0041124431 0.0021283157 0.0041524087 + 700100 0.0035489934 0.0025431083 0.0042898785 + 700200 0.0050448855 0.0025122709 0.0049953005 + 700300 0.0054042868 0.002226945 0.0048868674 + 700400 0.0041230462 0.0019509109 0.0039802227 + 700500 0.0059743586 0.0018257735 0.0047662781 + 700600 0.0042343442 0.0020288969 0.0041129882 + 700700 0.0041105205 0.0016857469 0.0037088937 + 700800 0.0062865817 0.0022266324 0.0053208094 + 700900 0.004335309 0.0025686507 0.0047024356 + 701000 0.0053919158 0.0020676298 0.0047214633 + 701100 0.0047248832 0.00199119 0.0043167185 + 701200 0.0061358404 0.0017184038 0.0047383877 + 701300 0.0064010297 0.0018401704 0.0049906772 + 701400 0.0044026875 0.0028332273 0.0050001751 + 701500 0.0055039738 0.002506155 0.0052151421 + 701600 0.0058657982 0.0017129648 0.0046000374 + 701700 0.005512614 0.0019616901 0.0046749298 + 701800 0.0049804685 0.0022307498 0.0046820741 + 701900 0.004527185 0.0019739656 0.0042021895 + 702000 0.0037503489 0.0025604899 0.0044063648 + 702100 0.0048388703 0.0026641501 0.0050457815 + 702200 0.00842595 0.0021639486 0.0063110959 + 702300 0.0048317886 0.0022283997 0.0046065457 + 702400 0.0066856856 0.0024463853 0.0057369961 + 702500 0.0052957529 0.0019627941 0.0045692975 + 702600 0.0046066664 0.001991516 0.0042588595 + 702700 0.0053227988 0.0022730097 0.0048928247 + 702800 0.0055194918 0.0025759436 0.0052925685 + 702900 0.0054546865 0.0026017016 0.0052864301 + 703000 0.0046440362 0.002794403 0.0050801396 + 703100 0.0045048082 0.002415893 0.0046331033 + 703200 0.0051427819 0.0021451707 0.0046763837 + 703300 0.0056120331 0.0022242361 0.0049864086 + 703400 0.0063663283 0.0023730992 0.0055065264 + 703500 0.0040871773 0.0027858813 0.0047975388 + 703600 0.0054408471 0.0026429566 0.0053208736 + 703700 0.0055280654 0.0026507208 0.0053715654 + 703800 0.0046446191 0.0027030308 0.0049890543 + 703900 0.005423383 0.0027462047 0.0054155261 + 704000 0.0045490363 0.0027388825 0.0049778613 + 704100 0.0052451111 0.00195107 0.0045326481 + 704200 0.0050362582 0.0020559212 0.0045347045 + 704300 0.0044703785 0.0025013062 0.0047015706 + 704400 0.0045926053 0.0025500648 0.0048104877 + 704500 0.0055480234 0.0029254977 0.0056561654 + 704600 0.005644265 0.0032640429 0.0060420796 + 704700 0.0053657478 0.0032827885 0.0059237426 + 704800 0.0068919234 0.0029405143 0.0063326329 + 704900 0.0062081319 0.0023411845 0.0053967494 + 705000 0.0053901515 0.0024367068 0.005089672 + 705100 0.0045181341 0.002352379 0.0045761481 + 705200 0.0055717973 0.0023450564 0.0050874254 + 705300 0.0039964757 0.0025280924 0.0044951078 + 705400 0.0037341906 0.0025931871 0.004431109 + 705500 0.004407595 0.0025880873 0.0047574504 + 705600 0.0063088336 0.0023408854 0.0054460145 + 705700 0.0060971276 0.001956196 0.004957126 + 705800 0.0053906804 0.0024576837 0.0051109092 + 705900 0.0044576264 0.0026511833 0.0048451714 + 706000 0.0063575066 0.0023223801 0.0054514654 + 706100 0.0041399754 0.0022495603 0.0042872044 + 706200 0.0050920438 0.0022777741 0.0047840144 + 706300 0.0051722633 0.0024797707 0.0050254941 + 706400 0.0041823215 0.002251837 0.0043103234 + 706500 0.005019291 0.0021288003 0.0045992326 + 706600 0.0036707039 0.0021225139 0.0039291885 + 706700 0.0052803471 0.0022394159 0.0048383367 + 706800 0.0033932937 0.0022469429 0.0039170797 + 706900 0.0065647802 0.0022409199 0.0054720227 + 707000 0.0055697408 0.0020052435 0.0047466003 + 707100 0.0038820202 0.002327033 0.0042377149 + 707200 0.0042424916 0.0025031611 0.0045912624 + 707300 0.0045999956 0.002655885 0.0049199453 + 707400 0.0053482788 0.00280855 0.005440906 + 707500 0.0052686058 0.002488227 0.0050813689 + 707600 0.0050425971 0.0023952979 0.0048772012 + 707700 0.0050357041 0.0027353397 0.0052138503 + 707800 0.0045516876 0.0030465967 0.0052868804 + 707900 0.0062894235 0.0027051759 0.0058007515 + 708000 0.0053615644 0.0025166826 0.0051555776 + 708100 0.0042173766 0.002730763 0.004806503 + 708200 0.0058437459 0.0027442805 0.0056204992 + 708300 0.0053165099 0.0025189229 0.0051356426 + 708400 0.0057854742 0.0024221046 0.0052696427 + 708500 0.0044358559 0.0024928195 0.0046760924 + 708600 0.0049065432 0.0023358504 0.0047507896 + 708700 0.0054328423 0.0026213505 0.0052953276 + 708800 0.0050072377 0.0028986757 0.0053631755 + 708900 0.005348434 0.0026172187 0.005249651 + 709000 0.0051595203 0.0026232354 0.0051626868 + 709100 0.0048022785 0.0025167894 0.0048804109 + 709200 0.0039447465 0.0022219025 0.0041634574 + 709300 0.0035085763 0.0017662253 0.0034931027 + 709400 0.0035828143 0.0017804123 0.0035438287 + 709500 0.0035354483 0.0018424879 0.0035825913 + 709600 0.0046372901 0.0020122145 0.0042946307 + 709700 0.0050452352 0.0020424767 0.0045256784 + 709800 0.0046675761 0.0017808349 0.0040781575 + 709900 0.0037001108 0.0017657161 0.0035868644 + 710000 0.0065363874 0.0017993057 0.0050164338 + 710100 0.0059855023 0.0024764488 0.0054224383 + 710200 0.0043159348 0.0028485729 0.004972822 + 710300 0.0063765716 0.0026963601 0.005834829 + 710400 0.0052497885 0.0022294512 0.0048133314 + 710500 0.0054433937 0.0022657644 0.0049449347 + 710600 0.0067197362 0.0024796327 0.0057870029 + 710700 0.0038089282 0.0025687053 0.0044434122 + 710800 0.0060832095 0.0022215143 0.005215594 + 710900 0.004459414 0.00251339 0.0047082578 + 711000 0.0044517026 0.00202264 0.0042137124 + 711100 0.0062632759 0.0017762558 0.0048589619 + 711200 0.0043874685 0.0018577366 0.0040171938 + 711300 0.0051016576 0.0024149878 0.0049259598 + 711400 0.0063741904 0.0025255185 0.0056628154 + 711500 0.0074623482 0.0021529086 0.0058257831 + 711600 0.0049821141 0.0021041466 0.0045562809 + 711700 0.0057093734 0.0024517783 0.0052618605 + 711800 0.0067393659 0.002462522 0.0057795536 + 711900 0.0053360461 0.0025731586 0.0051994938 + 712000 0.0066111574 0.0026344255 0.0058883546 + 712100 0.0050636734 0.002686562 0.0051788387 + 712200 0.0053661041 0.0026373189 0.0052784483 + 712300 0.0042890241 0.0023859562 0.0044969602 + 712400 0.0043056223 0.0018745419 0.0039937154 + 712500 0.0045816021 0.0018892455 0.0041442528 + 712600 0.0049557441 0.0020698643 0.0045090196 + 712700 0.0046435859 0.0024959341 0.004781449 + 712800 0.0049985468 0.002759856 0.0052200783 + 712900 0.0073024873 0.0031212529 0.0067154459 + 713000 0.0061775856 0.0034683118 0.0065088422 + 713100 0.0055424228 0.0039743641 0.0067022753 + 713200 0.0051023643 0.0033834126 0.0058947325 + 713300 0.0057721185 0.0028223214 0.005663286 + 713400 0.0046010023 0.0024177259 0.0046822817 + 713500 0.0060285562 0.0022293893 0.0051965692 + 713600 0.0045902477 0.0021263336 0.0043855961 + 713700 0.0055477156 0.0027043603 0.0054348766 + 713800 0.0049202633 0.0033824589 0.005804151 + 713900 0.006895644 0.0024378561 0.0058318058 + 714000 0.0061042245 0.002099055 0.005103478 + 714100 0.0034656688 0.0023217679 0.0040275268 + 714200 0.00541201 0.0027180656 0.0053817893 + 714300 0.0057647472 0.0030096041 0.0058469407 + 714400 0.0054150709 0.0026080412 0.0052732714 + 714500 0.0056831196 0.0026751069 0.0054722673 + 714600 0.0049162292 0.0025379785 0.0049576851 + 714700 0.0031498045 0.0028130535 0.0043633479 + 714800 0.00545143 0.0027983131 0.0054814388 + 714900 0.0048905488 0.0026166982 0.0050237652 + 715000 0.005885664 0.0024806119 0.0053774621 + 715100 0.006467298 0.0024302014 0.0056133246 + 715200 0.0087812527 0.0028459847 0.0071680075 + 715300 0.0052087795 0.0031428369 0.0057065331 + 715400 0.0056225549 0.0031519668 0.0059193181 + 715500 0.0039819868 0.0032436261 0.0052035102 + 715600 0.0058666377 0.0030884882 0.0059759739 + 715700 0.0062338929 0.0027913305 0.0058595747 + 715800 0.0045525082 0.0023895745 0.0046302621 + 715900 0.0052938307 0.0021756668 0.0047812241 + 716000 0.0056472881 0.0023385969 0.0051181215 + 716100 0.0054541796 0.0026878091 0.0053722881 + 716200 0.0055407071 0.0024158274 0.0051428942 + 716300 0.0049640727 0.0019328656 0.0043761201 + 716400 0.0058088534 0.0017314084 0.0045904535 + 716500 0.0056890085 0.0022435514 0.0050436103 + 716600 0.0043240217 0.0029567948 0.0050850243 + 716700 0.0046277893 0.0034130027 0.0056907427 + 716800 0.0045051508 0.0033550789 0.0055724578 + 716900 0.0058126669 0.00301146 0.005872382 + 717000 0.0045743094 0.0030216706 0.0052730885 + 717100 0.0067958552 0.0031217447 0.0064665796 + 717200 0.0053906717 0.0031696663 0.0058228875 + 717300 0.0050342389 0.003292638 0.0057704275 + 717400 0.0076211864 0.0027250486 0.0064761013 + 717500 0.0051690387 0.00256508 0.0051092162 + 717600 0.0047975015 0.0025907291 0.0049519994 + 717700 0.0046844889 0.0025672634 0.0048729103 + 717800 0.0053231834 0.00230352 0.0049235243 + 717900 0.0045879745 0.0020731011 0.0043312448 + 718000 0.0052448591 0.0018008467 0.0043823008 + 718100 0.0045429356 0.0018206496 0.0040566258 + 718200 0.0049206584 0.0016794416 0.0041013281 + 718300 0.0051049775 0.0021215089 0.004634115 + 718400 0.0050807417 0.0024075919 0.0049082695 + 718500 0.0035639364 0.002433216 0.0041873409 + 718600 0.0050235029 0.0023379762 0.0048104816 + 718700 0.0061955491 0.0023335726 0.0053829444 + 718800 0.0049554193 0.0022728486 0.004711844 + 718900 0.0046714294 0.0025205597 0.0048197789 + 719000 0.0038117596 0.0022713257 0.0041474262 + 719100 0.0046905025 0.0023954525 0.0047040592 + 719200 0.0050958528 0.0026623781 0.0051704932 + 719300 0.0045915375 0.0030847939 0.0053446912 + 719400 0.0068085819 0.0029502808 0.0063013797 + 719500 0.0054456235 0.0029425732 0.005622841 + 719600 0.0048403131 0.0029125595 0.0052949011 + 719700 0.0058555095 0.0032769089 0.0061589175 + 719800 0.0060905681 0.0030911611 0.0060888626 + 719900 0.0058961262 0.0028312971 0.0057332967 + 720000 0.0043571727 0.0029269585 0.0050715044 + 720100 0.0054155599 0.0026692124 0.0053346833 + 720200 0.0062924787 0.0022701919 0.0053672713 + 720300 0.0055472282 0.0024956361 0.0052259125 + 720400 0.0047645276 0.0027543861 0.005099427 + 720500 0.0048689123 0.0026370285 0.0050334462 + 720600 0.0040258723 0.002450589 0.004432073 + 720700 0.0043753624 0.0024159328 0.0045694315 + 720800 0.0044801103 0.0027966544 0.0050017087 + 720900 0.0055535713 0.0031534819 0.0058868803 + 721000 0.005812833 0.0031807245 0.0060417283 + 721100 0.0051099171 0.0027039451 0.0052189824 + 721200 0.0063757248 0.0028758243 0.0060138763 + 721300 0.0060608641 0.0028269129 0.0058099945 + 721400 0.0067521886 0.0022807146 0.0056040574 + 721500 0.0079775298 0.0024625907 0.0063890312 + 721600 0.0039595333 0.0025551384 0.0045039712 + 721700 0.0051557393 0.0028190221 0.0053566126 + 721800 0.006101579 0.0023274298 0.0053305507 + 721900 0.0053495227 0.0024741949 0.0051071631 + 722000 0.0037778411 0.0026506795 0.0045100857 + 722100 0.0048796583 0.0023802069 0.0047819137 + 722200 0.0056003531 0.002351271 0.0051076948 + 722300 0.0048781076 0.0025054283 0.0049063719 + 722400 0.0058940419 0.0029824551 0.0058834289 + 722500 0.0067482511 0.003371585 0.0066929898 + 722600 0.0055613959 0.0029229383 0.0056601878 + 722700 0.0039802842 0.0026627006 0.0046217467 + 722800 0.0046526748 0.0022822784 0.0045722668 + 722900 0.0047381021 0.001986105 0.0043181396 + 723000 0.0053752879 0.0019466744 0.004592324 + 723100 0.0039425773 0.0025296308 0.0044701181 + 723200 0.004727608 0.0025590709 0.0048859404 + 723300 0.0073695184 0.0021660182 0.0057932031 + 723400 0.0048304559 0.0021579121 0.0045354021 + 723500 0.0061126359 0.0021783702 0.0051869332 + 723600 0.006074724 0.0025749245 0.0055648277 + 723700 0.0062946709 0.0027922863 0.0058904446 + 723800 0.0044147643 0.0026529682 0.00482586 + 723900 0.0054172571 0.0021750135 0.0048413197 + 724000 0.0049762403 0.0018012154 0.0042504586 + 724100 0.0048305438 0.0022080456 0.0045855789 + 724200 0.0046239238 0.0026523124 0.0049281499 + 724300 0.0067624025 0.0022923772 0.0056207471 + 724400 0.0056220092 0.0027152326 0.0054823152 + 724500 0.0050009646 0.0029965363 0.0054579485 + 724600 0.0054870962 0.0032361909 0.005936871 + 724700 0.0050187457 0.0026581843 0.0051283482 + 724800 0.0046544014 0.0022998906 0.0045907288 + 724900 0.0053920848 0.002350356 0.0050042727 + 725000 0.0048176224 0.0022109548 0.0045821284 + 725100 0.0037855182 0.0019044002 0.003767585 + 725200 0.0051670731 0.0020034579 0.0045466267 + 725300 0.0036564652 0.0018571547 0.0036568211 + 725400 0.0049316408 0.0017600516 0.0041873436 + 725500 0.005391405 0.0020577438 0.004711326 + 725600 0.0048547394 0.0024695381 0.0048589801 + 725700 0.0054764526 0.0025517997 0.0052472412 + 725800 0.0056130748 0.0017989134 0.0045615987 + 725900 0.0036602449 0.0024376915 0.0042392183 + 726000 0.0050690937 0.0023964737 0.0048914182 + 726100 0.0060525038 0.0021742851 0.0051532518 + 726200 0.0062178868 0.0019830661 0.0050434322 + 726300 0.0046236524 0.0026372459 0.0049129498 + 726400 0.003790019 0.0029006239 0.0047660239 + 726500 0.0043260917 0.002509471 0.0046387193 + 726600 0.0042037323 0.0024953303 0.0045643548 + 726700 0.0047689363 0.0023768848 0.0047240956 + 726800 0.006275833 0.0024485501 0.0055374367 + 726900 0.0046647714 0.0029890736 0.0052850158 + 727000 0.0069551677 0.0028327918 0.0062560384 + 727100 0.0069696203 0.0029651394 0.0063954994 + 727200 0.0038853012 0.0026858343 0.0045981309 + 727300 0.0053146343 0.0019873831 0.0046031797 + 727400 0.0048533683 0.0021305775 0.0045193447 + 727500 0.006072952 0.0021613939 0.0051504249 + 727600 0.0054395518 0.0025956251 0.0052729045 + 727700 0.0038169876 0.0029926998 0.0048713733 + 727800 0.0052435152 0.0029926047 0.0055733974 + 727900 0.0053945224 0.0027662502 0.0054213667 + 728000 0.0056626036 0.002666976 0.0054540388 + 728100 0.0052738483 0.0025921523 0.0051878745 + 728200 0.0055300478 0.0023553162 0.0050771366 + 728300 0.0051754391 0.0020550223 0.0046023087 + 728400 0.0053233732 0.0018375977 0.0044576954 + 728500 0.0053986971 0.0020158551 0.0046730263 + 728600 0.005037911 0.0024437289 0.0049233257 + 728700 0.0052866587 0.0026498071 0.0052518344 + 728800 0.0045756934 0.0027278381 0.0049799372 + 728900 0.0047997375 0.0029355335 0.0052979043 + 729000 0.0053584238 0.0030578125 0.0056951617 + 729100 0.0052998165 0.00309945 0.0057079535 + 729200 0.0047966366 0.0025077498 0.0048685944 + 729300 0.0065071286 0.0022496715 0.0054523989 + 729400 0.0059490021 0.0023088178 0.0052368423 + 729500 0.0048248681 0.002701094 0.0050758338 + 729600 0.0044050735 0.0027181035 0.0048862256 + 729700 0.0046026409 0.0028727864 0.0051381487 + 729800 0.003560876 0.0035781064 0.0053307251 + 729900 0.004461158 0.0031313448 0.0053270711 + 730000 0.0053890941 0.0029534265 0.0056058712 + 730100 0.0042935205 0.0030523971 0.0051656142 + 730200 0.0032257172 0.0028982212 0.0044858789 + 730300 0.0074439041 0.0022146651 0.0058784616 + 730400 0.0066302477 0.0023302466 0.0055935717 + 730500 0.0044350622 0.0022213373 0.0044042194 + 730600 0.0051867733 0.0019390478 0.0044919128 + 730700 0.0058199266 0.0022802388 0.0051447339 + 730800 0.0049805003 0.0026025608 0.0050539007 + 730900 0.0061408259 0.0027097877 0.0057322254 + 731000 0.0046861566 0.0030275973 0.0053340649 + 731100 0.0046049774 0.0034529954 0.0057195077 + 731200 0.0050150619 0.0035170925 0.0059854433 + 731300 0.0049855196 0.0034050824 0.0058588928 + 731400 0.0052861771 0.0031989564 0.0058007467 + 731500 0.0050310569 0.0036221626 0.0060983859 + 731600 0.0032395858 0.0036360984 0.005230582 + 731700 0.0037136495 0.0035277316 0.0053555434 + 731800 0.0065306024 0.0028484347 0.0060627156 + 731900 0.0048792426 0.0022694499 0.0046709522 + 732000 0.0062621543 0.0021209446 0.0052030987 + 732100 0.0041617432 0.0023739762 0.0044223341 + 732200 0.0053433096 0.0024005795 0.0050304897 + 732300 0.0039638492 0.0022119968 0.0041629538 + 732400 0.0057739545 0.0022432964 0.0050851646 + 732500 0.003615163 0.0021578765 0.0039372145 + 732600 0.0041377534 0.00193757 0.0039741205 + 732700 0.0046678435 0.0024785032 0.0047759574 + 732800 0.0044238898 0.0028991998 0.0050765831 + 732900 0.0047571408 0.003438596 0.0057800012 + 733000 0.0062393169 0.002922159 0.0059930728 + 733100 0.0051008772 0.0026119494 0.0051225374 + 733200 0.0051860872 0.0027533717 0.005305899 + 733300 0.0041608991 0.002757402 0.0048053445 + 733400 0.0049023398 0.0032544518 0.0056673222 + 733500 0.0044042623 0.0024661513 0.0046338741 + 733600 0.0051237213 0.00224759 0.0047694215 + 733700 0.004958243 0.0018829762 0.0043233614 + 733800 0.0065488072 0.0024645099 0.005687751 + 733900 0.0065743009 0.0030030583 0.006238847 + 734000 0.0041830645 0.0035291224 0.0055879744 + 734100 0.0062302237 0.0031534516 0.0062198898 + 734200 0.0045841334 0.0027625536 0.0050188067 + 734300 0.0047000942 0.0027887309 0.0051020585 + 734400 0.0047438467 0.002524387 0.0048592491 + 734500 0.005478782 0.0025837948 0.0052803828 + 734600 0.0060552915 0.0022458698 0.0052262086 + 734700 0.005763035 0.0020677774 0.0049042712 + 734800 0.0056495959 0.0022955265 0.005076187 + 734900 0.0058075006 0.0021992038 0.005057583 + 735000 0.0062557296 0.0022259034 0.0053048953 + 735100 0.0056651852 0.0022854259 0.0050737593 + 735200 0.0054949466 0.0022336839 0.004938228 + 735300 0.0048756964 0.0023675736 0.0047673304 + 735400 0.0036222881 0.0024222398 0.0042050847 + 735500 0.0053908631 0.0024658539 0.0051191693 + 735600 0.0030034386 0.0028967815 0.0043750364 + 735700 0.0071945302 0.0025167039 0.0060577617 + 735800 0.0054558165 0.0024278822 0.0051131668 + 735900 0.0067603392 0.0022290848 0.0055564393 + 736000 0.0047265573 0.0025056309 0.0048319833 + 736100 0.0044704206 0.0024042116 0.0046044967 + 736200 0.0041850707 0.0026010843 0.0046609238 + 736300 0.0063893539 0.0021993545 0.0053441146 + 736400 0.0045777307 0.0021165602 0.004369662 + 736500 0.004325573 0.0018186068 0.0039475998 + 736600 0.0049985944 0.0016558183 0.004116064 + 736700 0.00430051 0.0019698061 0.0040864634 + 736800 0.0039391449 0.0024088807 0.0043476785 + 736900 0.0040325741 0.0027644994 0.004749282 + 737000 0.0040416708 0.0028900938 0.0048793536 + 737100 0.0062155903 0.0024556265 0.0055148624 + 737200 0.0053450033 0.0024243357 0.0050550795 + 737300 0.0058307614 0.0025342033 0.0054040312 + 737400 0.0055895344 0.0024188332 0.0051699322 + 737500 0.0043714497 0.0022944116 0.0044459845 + 737600 0.0045381665 0.0025849434 0.0048185723 + 737700 0.0066302948 0.0023813028 0.0056446511 + 737800 0.0046008071 0.0024699824 0.0047344421 + 737900 0.003913195 0.0025747852 0.0045008109 + 738000 0.0037010125 0.0023300044 0.0041515965 + 738100 0.0038412193 0.0019904941 0.0038810942 + 738200 0.0042539763 0.001900879 0.003994633 + 738300 0.0045636029 0.0023146899 0.0045608382 + 738400 0.0046277169 0.0022026998 0.0044804042 + 738500 0.0051787664 0.0021012261 0.0046501502 + 738600 0.0046321183 0.0024054083 0.0046852791 + 738700 0.0054400791 0.002171961 0.0048495 + 738800 0.0045390155 0.002473151 0.0047071977 + 738900 0.0044836442 0.002332265 0.0045390586 + 739000 0.0038996885 0.0024779491 0.0043973271 + 739100 0.0043533801 0.0025991656 0.0047418449 + 739200 0.0041081391 0.003076561 0.0050985357 + 739300 0.005031996 0.002866324 0.0053430095 + 739400 0.0047757045 0.0023808085 0.0047313506 + 739500 0.0058663541 0.0026254409 0.005512787 + 739600 0.0050470222 0.0026784955 0.0051625767 + 739700 0.0058752639 0.003273439 0.0061651704 + 739800 0.0048566495 0.0034952679 0.0058856501 + 739900 0.006215888 0.003178255 0.0062376374 + 740000 0.0049417915 0.003500517 0.005932805 + 740100 0.0044080348 0.0037168261 0.0058864058 + 740200 0.0050800868 0.0034217746 0.0059221299 + 740300 0.0051812591 0.0033173481 0.005867499 + 740400 0.005024248 0.0030848359 0.005557708 + 740500 0.0055736838 0.002711443 0.0054547406 + 740600 0.00620886 0.0024317647 0.005487688 + 740700 0.0059149596 0.0023786942 0.0052899634 + 740800 0.005038254 0.0025854687 0.0050652344 + 740900 0.0059433929 0.0021965562 0.0051218199 + 741000 0.0053422062 0.0023331421 0.0049625092 + 741100 0.0048811763 0.0025730253 0.0049754793 + 741200 0.0044945471 0.0026805109 0.0048926708 + 741300 0.0038977281 0.0026560074 0.0045744205 + 741400 0.0059444788 0.0026328527 0.0055586508 + 741500 0.0039109559 0.0027231264 0.00464805 + 741600 0.0059473599 0.0027643436 0.0056915598 + 741700 0.0063808245 0.0028111811 0.0059517431 + 741800 0.0075317435 0.0028429088 0.0065499388 + 741900 0.0050376954 0.0032586507 0.0057381414 + 742000 0.0046076322 0.0035386888 0.0058065078 + 742100 0.0050231375 0.0036295736 0.0061018991 + 742200 0.0056971003 0.0028306425 0.0056346841 + 742300 0.0056155328 0.0024026868 0.0051665819 + 742400 0.0051776238 0.0021069177 0.0046552794 + 742500 0.0039165373 0.0024740437 0.0044017145 + 742600 0.0038827006 0.002707852 0.0046188688 + 742700 0.0065912571 0.0025890346 0.005833169 + 742800 0.0046744755 0.0020913817 0.0043921001 + 742900 0.0052829139 0.0018372542 0.0044374384 + 743000 0.0034245 0.0018860329 0.003571529 + 743100 0.0054364377 0.0023034785 0.0049792252 + 743200 0.0056709347 0.0028859194 0.0056770826 + 743300 0.0035788732 0.0027915731 0.0045530498 + 743400 0.0051809408 0.0022671512 0.0048171454 + 743500 0.0061519087 0.0022775673 0.0053054598 + 743600 0.0055728292 0.0025409092 0.0052837861 + 743700 0.0040110257 0.0023474295 0.0043216062 + 743800 0.0045236389 0.0029579302 0.0051844087 + 743900 0.00507242 0.0025058832 0.0050024649 + 744000 0.0060754345 0.0025085221 0.005498775 + 744100 0.0043453663 0.0031359684 0.0052747034 + 744200 0.0061201432 0.0023755464 0.0053878044 + 744300 0.0068006124 0.0020440984 0.0053912748 + 744400 0.0044863279 0.0023369767 0.0045450912 + 744500 0.0044166841 0.0022783019 0.0044521387 + 744600 0.0054196832 0.0024048963 0.0050723967 + 744700 0.0058789234 0.0022449237 0.0051384563 + 744800 0.0060235933 0.0027785327 0.00574327 + 744900 0.0049282958 0.0025295672 0.0049552128 + 745000 0.0073444256 0.0024675969 0.0060824314 + 745100 0.0053334685 0.0024743236 0.0050993902 + 745200 0.0053036148 0.0017995255 0.0044098984 + 745300 0.004751301 0.0020036814 0.0043422124 + 745400 0.0040740204 0.0022696933 0.0042748752 + 745500 0.0045682493 0.0020256092 0.0042740444 + 745600 0.0043720325 0.0020537265 0.0042055863 + 745700 0.0046895032 0.0020931056 0.0044012204 + 745800 0.0053375506 0.0020263822 0.0046534579 + 745900 0.0047093802 0.0019938002 0.0043116982 + 746000 0.0059661229 0.0020429619 0.004979413 + 746100 0.0046268342 0.0025135848 0.0047908548 + 746200 0.0048871096 0.0024344046 0.0048397788 + 746300 0.005504434 0.002343357 0.0050525706 + 746400 0.0048484444 0.0021113809 0.0044977246 + 746500 0.0046896286 0.0019402465 0.0042484231 + 746600 0.0037950606 0.0018309787 0.0036988601 + 746700 0.0047575126 0.0019831078 0.004324696 + 746800 0.0056029243 0.0019735554 0.0047312447 + 746900 0.0041221344 0.0023945189 0.004423382 + 747000 0.0043905199 0.0027148872 0.0048758462 + 747100 0.0056947035 0.0023054795 0.0051083414 + 747200 0.0062053518 0.0024579913 0.0055121879 + 747300 0.0034084649 0.0023988042 0.004076408 + 747400 0.0063478579 0.0021514503 0.0052757866 + 747500 0.0047270566 0.0026462871 0.0049728853 + 747600 0.0040536248 0.0025815516 0.0045766951 + 747700 0.0056939936 0.0024797184 0.0052822309 + 747800 0.0045190332 0.0024305716 0.0046547832 + 747900 0.0057081561 0.0028026068 0.0056120899 + 748000 0.0052079075 0.0031069468 0.0056702138 + 748100 0.0064422379 0.0030200336 0.0061908225 + 748200 0.0062936878 0.0032524008 0.0063500752 + 748300 0.0064990017 0.0029102526 0.00610898 + 748400 0.0042020107 0.0022912265 0.0043594037 + 748500 0.005554158 0.0021802531 0.0049139402 + 748600 0.0048726589 0.0024454459 0.0048437077 + 748700 0.0044583874 0.0027310978 0.0049254604 + 748800 0.0046398083 0.0024759289 0.0047595846 + 748900 0.0059927376 0.0024500201 0.0053995706 + 749000 0.0059776515 0.0027602487 0.0057023741 + 749100 0.0050845647 0.0026116324 0.0051141916 + 749200 0.0052675439 0.0025882461 0.0051808654 + 749300 0.0053032921 0.0025634208 0.0051736348 + 749400 0.0038556079 0.0024934771 0.0043911591 + 749500 0.0058805967 0.0022399138 0.00513427 + 749600 0.0028192951 0.0024167983 0.0038044201 + 749700 0.0047248203 0.0020752415 0.004400739 + 749800 0.0040115932 0.0022194436 0.0041938997 + 749900 0.0035853693 0.0025568843 0.0043215583 + 750000 0.0050410636 0.0022636794 0.0047448279 + 750100 0.0054794259 0.0021985637 0.0048954686 + 750200 0.0064024623 0.0022547973 0.0054060092 + 750300 0.005376482 0.0023072157 0.0049534529 + 750400 0.0047962459 0.002499519 0.0048601713 + 750500 0.0044724466 0.0021143772 0.0043156595 + 750600 0.0049200178 0.001952963 0.0043745342 + 750700 0.0055917465 0.0019977134 0.0047499012 + 750800 0.0048829226 0.0023975306 0.004800844 + 750900 0.0043684722 0.0024066039 0.0045567113 + 751000 0.0059162342 0.0028109387 0.0057228352 + 751100 0.0051281991 0.0028238686 0.0053479041 + 751200 0.0036671249 0.0027795016 0.0045844146 + 751300 0.0053650263 0.0029350603 0.0055756592 + 751400 0.0051614801 0.0026386973 0.0051791133 + 751500 0.0036698054 0.0026517222 0.0044579545 + 751600 0.005230006 0.0026473018 0.0052214454 + 751700 0.0042948455 0.0026516604 0.0047655296 + 751800 0.0049211815 0.0027447694 0.0051669134 + 751900 0.0054049606 0.0024544434 0.0051146975 + 752000 0.0047101126 0.0020991973 0.0044174559 + 752100 0.0053080399 0.0025581267 0.0051706776 + 752200 0.0051231896 0.0028061856 0.0053277555 + 752300 0.0052431007 0.0031186998 0.0056992884 + 752400 0.0055311441 0.0026319277 0.0053542877 + 752500 0.0055759373 0.0025710355 0.0053154421 + 752600 0.0070882226 0.0023217371 0.0058104717 + 752700 0.0037822435 0.0023981565 0.0042597294 + 752800 0.0064595481 0.0019056435 0.0050849524 + 752900 0.006001784 0.0018743678 0.0048283709 + 753000 0.0056806338 0.0020573056 0.0048532426 + 753100 0.0051993062 0.0021980095 0.0047570431 + 753200 0.0052703141 0.0021525907 0.0047465734 + 753300 0.006061095 0.0023756162 0.0053588115 + 753400 0.0042581189 0.0021563941 0.004252187 + 753500 0.0035409367 0.0022225813 0.0039653861 + 753600 0.0059838835 0.0023276238 0.0052728165 + 753700 0.0048521911 0.002205605 0.0045937928 + 753800 0.0065212574 0.002533506 0.0057431874 + 753900 0.0052802306 0.0027791533 0.0053780168 + 754000 0.0041792787 0.0029996416 0.0050566304 + 754100 0.0053438109 0.0027544546 0.0053846115 + 754200 0.0043081926 0.0025675863 0.0046880248 + 754300 0.0050488657 0.002415471 0.0049004595 + 754400 0.0051731432 0.0026462188 0.0051923753 + 754500 0.0040613025 0.0030563532 0.0050552755 + 754600 0.0058039363 0.0028677897 0.0057244146 + 754700 0.0067187783 0.0028995498 0.0062064485 + 754800 0.0055422837 0.0028354888 0.0055633315 + 754900 0.0049553087 0.0029661539 0.0054050949 + 755000 0.0035124803 0.0031042698 0.0048330687 + 755100 0.0048451815 0.0030150711 0.0053998089 + 755200 0.0048912692 0.0027056074 0.005113029 + 755300 0.0070965382 0.0027659171 0.0062587445 + 755400 0.0056410203 0.0026131273 0.005389567 + 755500 0.0059494461 0.002740203 0.005668446 + 755600 0.0049091725 0.0036078526 0.0060240859 + 755700 0.0072584857 0.003442929 0.007015465 + 755800 0.0048473702 0.0030685589 0.0054543739 + 755900 0.0073939171 0.0027511586 0.0063903522 + 756000 0.0057388908 0.0023131334 0.0051377438 + 756100 0.0050025067 0.0024018327 0.0048640039 + 756200 0.0050290121 0.0032160797 0.0056912966 + 756300 0.0062154599 0.003100306 0.0061594777 + 756400 0.0057622524 0.0027757749 0.0056118835 + 756500 0.0033844677 0.0028984755 0.0045642682 + 756600 0.0030458187 0.0028122705 0.0043113844 + 756700 0.0049989125 0.002650893 0.0051112953 + 756800 0.005438774 0.0027177763 0.0053946729 + 756900 0.0064345215 0.0022873804 0.0054543715 + 757000 0.0054148869 0.0020434471 0.0047085868 + 757100 0.0039633454 0.0024719108 0.0044226198 + 757200 0.0035241136 0.002695377 0.0044299017 + 757300 0.0065294705 0.0027342805 0.0059480042 + 757400 0.0042787877 0.0028754261 0.0049813919 + 757500 0.004104069 0.0027873973 0.0048073688 + 757600 0.0052740168 0.0028180694 0.0054138746 + 757700 0.0053656197 0.0027859351 0.0054268261 + 757800 0.0045525894 0.0025376646 0.0047783922 + 757900 0.0063290616 0.0019950017 0.0051100867 + 758000 0.0038844859 0.0024018758 0.0043137712 + 758100 0.0046441449 0.0022817925 0.0045675826 + 758200 0.0059545957 0.0024595959 0.0053903735 + 758300 0.006348938 0.0027083457 0.0058332136 + 758400 0.0062705255 0.0025824607 0.005668735 + 758500 0.0057980351 0.0024169712 0.0052706916 + 758600 0.0045798014 0.0029309559 0.0051850769 + 758700 0.0050828037 0.0027650834 0.0052667759 + 758800 0.0052318444 0.0021738362 0.0047488846 + 758900 0.0050535392 0.0018826566 0.0043699454 + 759000 0.0040458336 0.001742928 0.0037342367 + 759100 0.0047766126 0.0016458146 0.0039968036 + 759200 0.0041806371 0.0020348014 0.0040924587 + 759300 0.0059263999 0.0024389562 0.0053558562 + 759400 0.0057406246 0.0027157682 0.0055412319 + 759500 0.0046955166 0.0025260977 0.0048371723 + 759600 0.0043048124 0.0017030151 0.0038217899 + 759700 0.0032057468 0.002141725 0.0037195535 + 759800 0.0036349477 0.0024476493 0.0042367251 + 759900 0.0058100312 0.0029378824 0.0057975071 + 760000 0.0040487116 0.00298536 0.0049780853 + 760100 0.0047696571 0.0025676484 0.004915214 + 760200 0.0057520227 0.0023933416 0.0052244153 + 760300 0.0049526266 0.0024624451 0.004900066 + 760400 0.0040818879 0.0026224419 0.0046314962 + 760500 0.0050064182 0.0027115628 0.0051756592 + 760600 0.0054542108 0.0024283168 0.0051128111 + 760700 0.0054060965 0.0026428738 0.0053036869 + 760800 0.0045562878 0.003240853 0.0054834009 + 760900 0.004705339 0.0027771494 0.0050930584 + 761000 0.0062196024 0.002028444 0.0050896545 + 761100 0.005343256 0.0019878905 0.0046177743 + 761200 0.0044437601 0.0021774757 0.0043646389 + 761300 0.0044676199 0.0018706437 0.0040695504 + 761400 0.0050833732 0.0016833531 0.0041853259 + 761500 0.0055111082 0.0015899286 0.0043024271 + 761600 0.0047315321 0.0020348496 0.0043636506 + 761700 0.0046728636 0.0021097505 0.0044096755 + 761800 0.0037639796 0.0018414955 0.0036940792 + 761900 0.0055925034 0.0016474277 0.004399988 + 762000 0.0056186726 0.0015420724 0.0043075128 + 762100 0.0044671065 0.0013602237 0.0035588777 + 762200 0.0044186913 0.0016686965 0.0038435211 + 762300 0.0045124216 0.0022528575 0.004473815 + 762400 0.0041912933 0.0025304091 0.0045933113 + 762500 0.0046561293 0.0021688453 0.0044605339 + 762600 0.0049547569 0.0021304441 0.0045691135 + 762700 0.0050426998 0.0022373005 0.0047192542 + 762800 0.0050627927 0.0018788635 0.0043707067 + 762900 0.0043173558 0.0019426454 0.004067594 + 763000 0.0050729305 0.0016757875 0.0041726205 + 763100 0.0044266849 0.0019305754 0.0041093344 + 763200 0.0045701982 0.0022114515 0.0044608459 + 763300 0.0035622242 0.002333305 0.0040865872 + 763400 0.0055983752 0.0023068945 0.0050623448 + 763500 0.005220618 0.0019912101 0.004560733 + 763600 0.0068164405 0.0017200815 0.0050750483 + 763700 0.0045274309 0.0020582521 0.0042865969 + 763800 0.0045881929 0.0023221987 0.0045804499 + 763900 0.0047914313 0.0019326067 0.0042908893 + 764000 0.0066713469 0.0021889297 0.0054724832 + 764100 0.0034570344 0.002483274 0.0041847832 + 764200 0.0044358856 0.0023041714 0.0044874589 + 764300 0.0062791694 0.002341384 0.0054319127 + 764400 0.0054512003 0.0026013616 0.0052843743 + 764500 0.0053834777 0.0023600216 0.005009702 + 764600 0.0057859146 0.0021133491 0.0049611039 + 764700 0.0044797817 0.0023204235 0.004525316 + 764800 0.0057279616 0.0019314854 0.0047507165 + 764900 0.0071114748 0.0015771483 0.0050773273 + 765000 0.0041250508 0.0018653523 0.0038956507 + 765100 0.0042379216 0.0025462814 0.0046321334 + 765200 0.003277532 0.0026985551 0.0043117154 + 765300 0.0039069868 0.0022315652 0.0041545353 + 765400 0.0046728578 0.0017876401 0.0040875623 + 765500 0.0038059289 0.0017415293 0.00361476 + 765600 0.0053695768 0.0016139741 0.0042568127 + 765700 0.0037796989 0.0015785869 0.0034389074 + 765800 0.0037577532 0.0016474664 0.0034969856 + 765900 0.005171328 0.0017919565 0.0043372195 + 766000 0.0051159984 0.0020601801 0.0045782106 + 766100 0.0041706243 0.0026218784 0.0046746076 + 766200 0.0049618483 0.0027996782 0.0052418379 + 766300 0.0061253269 0.0028392902 0.0058540995 + 766400 0.0051390303 0.0031309494 0.0056603159 + 766500 0.0045185968 0.0029361548 0.0051601516 + 766600 0.0059574167 0.0028461203 0.0057782863 + 766700 0.0063876278 0.0029992186 0.0061431292 + 766800 0.0058374947 0.0028198417 0.0056929837 + 766900 0.0061492005 0.0026499744 0.005676534 + 767000 0.0062394823 0.0027706011 0.0058415964 + 767100 0.0045045671 0.0034799406 0.0056970322 + 767200 0.0056609524 0.0032044323 0.0059906823 + 767300 0.0061616625 0.0024192544 0.0054519476 + 767400 0.0078428419 0.0021777674 0.0060379161 + 767500 0.0049328919 0.002129649 0.0045575567 + 767600 0.0040038292 0.0016102289 0.0035808635 + 767700 0.0052858555 0.0015707906 0.0041724227 + 767800 0.0055834071 0.0017966338 0.0045447169 + 767900 0.0057264517 0.0019611954 0.0047796834 + 768000 0.0074895839 0.0023318847 0.0060181643 + 768100 0.0050790617 0.0024465886 0.0049464392 + 768200 0.005498831 0.0024912298 0.0051976857 + 768300 0.0046840972 0.0022167908 0.0045222449 + 768400 0.005601693 0.0022247557 0.0049818389 + 768500 0.0054631867 0.0023712328 0.0050601449 + 768600 0.0042050966 0.0030495216 0.0051192176 + 768700 0.004034788 0.0031651913 0.0051510636 + 768800 0.0056113964 0.0036939395 0.0064557987 + 768900 0.0060330245 0.004016652 0.0069860313 + 769000 0.005010591 0.0034525733 0.0059187236 + 769100 0.0049290208 0.0033528847 0.0057788871 + 769200 0.0047824108 0.0029380505 0.0052918934 + 769300 0.0052976978 0.0026332593 0.0052407199 + 769400 0.0036757622 0.0027467781 0.0045559424 + 769500 0.0055698032 0.0023588059 0.0051001934 + 769600 0.0048850773 0.0026193113 0.0050236853 + 769700 0.0057866805 0.0027755263 0.0056236581 + 769800 0.0048404598 0.0029133649 0.0052957787 + 769900 0.0054614441 0.0033933876 0.0060814421 + 770000 0.0071164972 0.0035631031 0.0070657541 + 770100 0.0048872617 0.0034444712 0.0058499204 + 770200 0.0037418479 0.0037673844 0.0056090751 + 770300 0.0052927622 0.0036302366 0.006235268 + 770400 0.0069252069 0.0028442022 0.0062527024 + 770500 0.0068245528 0.0026336852 0.0059926448 + 770600 0.0044047187 0.0030408404 0.0052087879 + 770700 0.0037865108 0.0029697149 0.0048333882 + 770800 0.0040082221 0.0027753497 0.0047481465 + 770900 0.005261794 0.0028792354 0.0054690247 + 771000 0.0044745366 0.0030823496 0.0052846606 + 771100 0.0062453739 0.0025265989 0.0056004938 + 771200 0.0070664918 0.0023081993 0.0057862383 + 771300 0.0061150996 0.0025046709 0.0055144464 + 771400 0.0046616116 0.0026184791 0.004912866 + 771500 0.0057541491 0.0028931719 0.0057252921 + 771600 0.0045193861 0.0035144117 0.005738797 + 771700 0.0061133201 0.0029465701 0.0059554698 + 771800 0.0073853433 0.002348316 0.0059832896 + 771900 0.005120566 0.0024728731 0.0049931516 + 772000 0.0043146682 0.0022069377 0.0043305635 + 772100 0.0054310192 0.0023029587 0.0049760384 + 772200 0.0053461676 0.0023195224 0.0049508393 + 772300 0.0054430278 0.0025630966 0.0052420868 + 772400 0.0057083626 0.0025809632 0.0053905479 + 772500 0.0035438347 0.0019350198 0.0036792509 + 772600 0.0046287831 0.0016816952 0.0039599244 + 772700 0.0044193334 0.0018893042 0.0040644448 + 772800 0.0033888587 0.0024549315 0.0041228854 + 772900 0.005791275 0.0022318815 0.0050822747 + 773000 0.0047806999 0.001942489 0.0042954897 + 773100 0.0047627811 0.0024491423 0.0047933237 + 773200 0.0051135219 0.0025537678 0.0050705793 + 773300 0.0049413139 0.0026527471 0.0050848001 + 773400 0.0051107643 0.002619867 0.0051353213 + 773500 0.004782897 0.0029955685 0.0053496507 + 773600 0.0060372602 0.0034482659 0.0064197299 + 773700 0.0053380314 0.0030892889 0.0057166012 + 773800 0.0055653756 0.002416815 0.0051560233 + 773900 0.0030916014 0.0023677344 0.0038893819 + 774000 0.0041355133 0.0021140919 0.0041495399 + 774100 0.0066359835 0.0021443027 0.0054104508 + 774200 0.0040168005 0.002589673 0.004566692 + 774300 0.0074651958 0.0022858271 0.0059601031 + 774400 0.0056268822 0.0025224593 0.0052919403 + 774500 0.0044420161 0.0032333048 0.0054196096 + 774600 0.0051212229 0.0031053426 0.0056259445 + 774700 0.0057872412 0.0028883253 0.005736733 + 774800 0.0067296246 0.0028162281 0.0061284652 + 774900 0.0050515561 0.0031573072 0.00564362 + 775000 0.0045585719 0.0033635907 0.0056072628 + 775100 0.0056690095 0.0034379325 0.0062281481 + 775200 0.0064784959 0.0030264928 0.0062151274 + 775300 0.0061005469 0.0027139555 0.0057165684 + 775400 0.0042602139 0.0029518611 0.0050486851 + 775500 0.0041526223 0.0029703788 0.0050142476 + 775600 0.005423769 0.0032962412 0.0059657525 + 775700 0.0053311863 0.0030866034 0.0057105467 + 775800 0.005373447 0.0031831501 0.0058278936 + 775900 0.0046788564 0.003605209 0.0059080836 + 776000 0.0057052219 0.0034041003 0.0062121392 + 776100 0.006446656 0.0032086367 0.0063816002 + 776200 0.004553333 0.0033980772 0.0056391707 + 776300 0.0057542978 0.0030471992 0.0058793926 + 776400 0.0059448737 0.0031433282 0.0060693207 + 776500 0.0060484096 0.0028574333 0.0058343849 + 776600 0.004154231 0.0029027784 0.004947439 + 776700 0.0052993655 0.0029405997 0.0055488811 + 776800 0.0046852901 0.003401405 0.0057074463 + 776900 0.0049258076 0.003005481 0.0054299019 + 777000 0.0055054146 0.0026950137 0.00540471 + 777100 0.0043405707 0.002386982 0.0045233566 + 777200 0.0042409675 0.002394251 0.0044816022 + 777300 0.0065817312 0.002272038 0.0055114838 + 777400 0.0056607482 0.0021157524 0.0049019019 + 777500 0.0041294106 0.002441151 0.0044735953 + 777600 0.006498838 0.0028874357 0.0060860825 + 777700 0.0060521737 0.0031155066 0.0060943109 + 777800 0.0051404979 0.0036152428 0.0061453316 + 777900 0.0063332917 0.0029589116 0.0060760786 + 778000 0.0051965257 0.002707939 0.005265604 + 778100 0.0042727617 0.0026640603 0.0047670602 + 778200 0.0061537397 0.002782534 0.0058113277 + 778300 0.0048477829 0.0030307002 0.0054167184 + 778400 0.0041724837 0.0028110987 0.004864743 + 778500 0.00564923 0.0021069102 0.0048873906 + 778600 0.0046627621 0.0020266598 0.004321613 + 778700 0.0060718439 0.0021260553 0.005114541 + 778800 0.0047523535 0.0023258503 0.0046648993 + 778900 0.0037421333 0.0023862016 0.0042280329 + 779000 0.004884848 0.0022436361 0.0046478972 + 779100 0.0055688979 0.0018776125 0.0046185544 + 779200 0.0051061414 0.001737976 0.004251155 + 779300 0.0043585646 0.0021747248 0.0043199558 + 779400 0.0043501646 0.0023124029 0.0044534996 + 779500 0.004118827 0.0026123789 0.0046396141 + 779600 0.0043090283 0.0025600038 0.0046808536 + 779700 0.0050649677 0.00211242 0.0046053338 + 779800 0.0053072689 0.0023269039 0.0049390754 + 779900 0.0042408744 0.0025621266 0.004649432 + 780000 0.0060346419 0.002146481 0.0051166563 + 780100 0.003739092 0.002122117 0.0039624513 + 780200 0.0055827145 0.0022600386 0.0050077809 + 780300 0.0046634646 0.002763709 0.005059008 + 780400 0.0026967542 0.0026923316 0.0040196403 + 780500 0.0049594774 0.0028133382 0.005254331 + 780600 0.0053823747 0.0028716393 0.0055207769 + 780700 0.0060878499 0.0023984169 0.0053947805 + 780800 0.0047142225 0.0023238028 0.0046440842 + 780900 0.005270047 0.0022342833 0.0048281346 + 781000 0.0038407111 0.0023692796 0.0042596296 + 781100 0.0045012984 0.0020617424 0.0042772252 + 781200 0.0053465185 0.0021556443 0.0047871339 + 781300 0.0042500363 0.0025787618 0.0046705765 + 781400 0.0037205141 0.0028517752 0.0046829657 + 781500 0.0044388644 0.002617395 0.0048021486 + 781600 0.0050748999 0.0026570397 0.005154842 + 781700 0.0047359117 0.0025233215 0.004854278 + 781800 0.004224243 0.0023535142 0.0044326338 + 781900 0.0072352933 0.0019243201 0.005485441 + 782000 0.0052743495 0.0021839152 0.0047798841 + 782100 0.0049240549 0.0024937685 0.0049173268 + 782200 0.0069230745 0.0028054286 0.0062128793 + 782300 0.0041847808 0.002639807 0.0046995037 + 782400 0.006818361 0.002375895 0.0057318071 + 782500 0.0063670244 0.0022963202 0.00543009 + 782600 0.0040635322 0.0023164519 0.0043164717 + 782700 0.0042352772 0.0021345434 0.0042190939 + 782800 0.0050750297 0.0021508274 0.0046486936 + 782900 0.0040647317 0.0026853061 0.0046859162 + 783000 0.0049423638 0.0029409727 0.0053735423 + 783100 0.0060129567 0.0031032797 0.0060627819 + 783200 0.0052679035 0.0031694985 0.0057622947 + 783300 0.004996054 0.0028753798 0.0053343751 + 783400 0.0057492229 0.0024931283 0.0053228239 + 783500 0.0050144607 0.0024761415 0.0049441964 + 783600 0.0039037804 0.0025661282 0.0044875202 + 783700 0.0059263582 0.0022169923 0.0051338718 + 783800 0.0045569088 0.0026046009 0.0048474545 + 783900 0.0047499747 0.0025451026 0.0048829808 + 784000 0.0062050931 0.0025355689 0.0055896382 + 784100 0.0057049597 0.0027322558 0.0055401656 + 784200 0.0043360677 0.0027604817 0.0048946401 + 784300 0.0059896912 0.0024487098 0.005396761 + 784400 0.0066883505 0.0023379813 0.0056299038 + 784500 0.0057098171 0.0025348177 0.0053451183 + 784600 0.0056984917 0.0024636475 0.0052683739 + 784700 0.0048148104 0.002481917 0.0048517065 + 784800 0.0050110408 0.0026235301 0.0050899017 + 784900 0.0071122206 0.0025243451 0.0060248911 + 785000 0.0062730121 0.0025066148 0.005594113 + 785100 0.0053423027 0.002749544 0.0053789586 + 785200 0.0052966945 0.002482863 0.0050898298 + 785300 0.0058966441 0.0023745615 0.0052768161 + 785400 0.005349662 0.0024237914 0.0050568282 + 785500 0.0053245045 0.0021565967 0.0047772513 + 785600 0.0062025232 0.0023888144 0.0054416188 + 785700 0.0057476646 0.0031639769 0.0059929055 + 785800 0.0050135435 0.0034536552 0.0059212587 + 785900 0.0059035802 0.0035046578 0.0064103262 + 786000 0.0072488795 0.002823302 0.0063911099 + 786100 0.0058825427 0.0026193208 0.0055146348 + 786200 0.0066810852 0.0023828628 0.0056712094 + 786300 0.0047438769 0.0023224673 0.0046573442 + 786400 0.0055667647 0.0023624136 0.0051023057 + 786500 0.0044387359 0.0021360012 0.0043206915 + 786600 0.004939587 0.0017155007 0.0041467036 + 786700 0.0055381918 0.0023742941 0.0051001229 + 786800 0.0049005054 0.0032716907 0.0056836582 + 786900 0.0059208778 0.0033736329 0.0062878149 + 787000 0.0050205322 0.0029061632 0.0053772063 + 787100 0.0059254158 0.0028350614 0.005751477 + 787200 0.0037888528 0.0027990029 0.0046638288 + 787300 0.005494431 0.0028928335 0.0055971238 + 787400 0.0041124735 0.0032199135 0.0052440216 + 787500 0.0061408942 0.0029044215 0.0059268929 + 787600 0.0044178147 0.0030002263 0.0051746195 + 787700 0.0038114825 0.0030851533 0.0049611174 + 787800 0.0040585671 0.0031358287 0.0051334047 + 787900 0.0053484015 0.0027475833 0.0053799996 + 788000 0.0057236086 0.0025360746 0.0053531632 + 788100 0.006615705 0.0026364286 0.0058925959 + 788200 0.0038737022 0.0028674176 0.0047740054 + 788300 0.0049857595 0.0027480897 0.0052020182 + 788400 0.0062351905 0.0022750505 0.0053439333 + 788500 0.0079013893 0.0027454652 0.0066344302 + 788600 0.0063821778 0.0031200006 0.0062612287 + 788700 0.0051644658 0.0028632594 0.0054051449 + 788800 0.0062499621 0.0026100182 0.0056861715 + 788900 0.0050886789 0.0022791367 0.0047837208 + 789000 0.004877516 0.0023462195 0.0047468719 + 789100 0.007415058 0.0028996014 0.0065492003 + 789200 0.0046384968 0.0032678341 0.0055508443 + 789300 0.0035420278 0.0030768573 0.0048201992 + 789400 0.0060063496 0.0026794783 0.0056357285 + 789500 0.0039798274 0.0025375031 0.0044963244 + 789600 0.0060685579 0.0023631136 0.0053499819 + 789700 0.0036966722 0.0022183743 0.0040378301 + 789800 0.006091201 0.0019284215 0.0049264345 + 789900 0.0051047256 0.002191797 0.0047042792 + 790000 0.0046166541 0.0024566555 0.004728915 + 790100 0.0050791106 0.0022107976 0.0047106724 + 790200 0.0069192886 0.0023355758 0.0057411632 + 790300 0.0049355588 0.0024155135 0.0048447339 + 790400 0.0047386218 0.0030825666 0.005414857 + 790500 0.0033130422 0.003715539 0.0053461769 + 790600 0.0063663696 0.0034377822 0.0065712298 + 790700 0.0065053943 0.0024262 0.0056280737 + 790800 0.0059703203 0.00216567 0.005104187 + 790900 0.0047487783 0.0024571803 0.0047944696 + 791000 0.0045096402 0.0024203794 0.0046399679 + 791100 0.005429998 0.0021846406 0.0048572177 + 791200 0.0050114567 0.0025544083 0.0050209846 + 791300 0.0045034551 0.00247051 0.0046870543 + 791400 0.0054585123 0.0024334271 0.0051200386 + 791500 0.0050030505 0.0025317863 0.0049942252 + 791600 0.0052244909 0.002640896 0.0052123251 + 791700 0.0040226798 0.0023412963 0.004321209 + 791800 0.0045924878 0.0021708959 0.004431261 + 791900 0.0043186282 0.0025420913 0.0046676662 + 792000 0.0053132712 0.0023110929 0.0049262186 + 792100 0.0047158561 0.002471106 0.0047921914 + 792200 0.0055980551 0.0024642553 0.005219548 + 792300 0.0066931979 0.0025467801 0.0058410885 + 792400 0.0052863919 0.002740569 0.005342465 + 792500 0.0058339233 0.0023645531 0.0052359373 + 792600 0.0043108451 0.0023545515 0.0044762956 + 792700 0.0036710202 0.0024857876 0.0042926178 + 792800 0.0053586891 0.0026501033 0.0052875831 + 792900 0.0051921185 0.0025013372 0.0050568331 + 793000 0.0048767728 0.0026457917 0.0050460783 + 793100 0.0053051134 0.0025512692 0.0051623797 + 793200 0.0065672461 0.0025679801 0.0058002965 + 793300 0.0046219423 0.0027293009 0.0050041632 + 793400 0.0060965834 0.0021946091 0.0051952712 + 793500 0.0065864033 0.0020275373 0.0052692827 + 793600 0.0050157586 0.002443357 0.0049120507 + 793700 0.0041810537 0.0023193463 0.0043772086 + 793800 0.006568625 0.0025340148 0.00576701 + 793900 0.006942124 0.0025223119 0.0059391386 + 794000 0.0057082936 0.0022466743 0.0050562251 + 794100 0.0059048244 0.0020879807 0.0049942615 + 794200 0.0035989649 0.0021624611 0.0039338267 + 794300 0.0041442046 0.0019991982 0.0040389239 + 794400 0.0048127606 0.002301327 0.0046701076 + 794500 0.0063486005 0.0020550647 0.0051797665 + 794600 0.0045070108 0.0018709143 0.0040892087 + 794700 0.0066507173 0.0016562854 0.0049296853 + 794800 0.0058048917 0.0023543859 0.005211481 + 794900 0.0054157688 0.0030154153 0.005680989 + 795000 0.0059276703 0.0028694574 0.0057869826 + 795100 0.0049109105 0.0027053821 0.0051224708 + 795200 0.0052765477 0.0026213693 0.0052184201 + 795300 0.0075606573 0.0029623531 0.0066836141 + 795400 0.0041450742 0.0034530381 0.0054931918 + 795500 0.0046144959 0.0029879769 0.005259174 + 795600 0.0051332446 0.0022391611 0.00476568 + 795700 0.0046089651 0.0016673794 0.0039358544 + 795800 0.0037169058 0.001499013 0.0033284276 + 795900 0.0042338594 0.0017011868 0.0037850395 + 796000 0.0047201046 0.002013108 0.0043362845 + 796100 0.0042828264 0.0024872694 0.004595223 + 796200 0.0047956819 0.0022701394 0.0046305141 + 796300 0.0044971902 0.0019273391 0.0041407999 + 796400 0.0054526686 0.0020086141 0.0046923494 + 796500 0.0057514089 0.0017623916 0.0045931631 + 796600 0.0047767482 0.0021300292 0.004481085 + 796700 0.0052351174 0.0019603263 0.0045369857 + 796800 0.0046108841 0.0022430875 0.004512507 + 796900 0.0039835244 0.0024227966 0.0043834375 + 797000 0.0045117755 0.0026333979 0.0048540374 + 797100 0.0049184783 0.0028167795 0.005237593 + 797200 0.0035094799 0.0024404344 0.0041677565 + 797300 0.0040951748 0.002210263 0.0042258568 + 797400 0.0062310247 0.0021242358 0.0051910682 + 797500 0.0046360506 0.0024901344 0.0047719406 + 797600 0.0039049948 0.002775946 0.0046979357 + 797700 0.0059088421 0.0023484324 0.0052566906 + 797800 0.0039390928 0.0029875041 0.0049262763 + 797900 0.0050481228 0.0030263987 0.0055110216 + 798000 0.0048879554 0.0026418226 0.0050476132 + 798100 0.0055848185 0.0018637972 0.0046125751 + 798200 0.00436728 0.0016415176 0.0037910382 + 798300 0.0038378697 0.0016732375 0.003562189 + 798400 0.0047584344 0.0018440517 0.0041860936 + 798500 0.0053816518 0.0021918258 0.0048406076 + 798600 0.004981872 0.0022664717 0.0047184868 + 798700 0.0034324861 0.0023997354 0.0040891622 + 798800 0.0062448504 0.0026420358 0.0057156731 + 798900 0.0033279578 0.0026003388 0.004238318 + 799000 0.004577038 0.0024228237 0.0046755846 + 799100 0.0042761839 0.002680875 0.0047855592 + 799200 0.0059084499 0.0025517871 0.0054598522 + 799300 0.0054161602 0.0026729891 0.0053387554 + 799400 0.0049709566 0.002686959 0.0051336017 + 799500 0.005605919 0.0022016365 0.0049607998 + 799600 0.0062506681 0.0024087426 0.0054852433 + 799700 0.0043178901 0.0026511468 0.0047763583 + 799800 0.0036375592 0.0025332789 0.0043236401 + 799900 0.0088062659 0.0023210805 0.0066554145 + 800000 0.0047475792 0.0029766507 0.0053133498 + 800100 0.0053780285 0.0028408666 0.005487865 + 800200 0.0042561201 0.0023569362 0.0044517453 + 800300 0.0069726781 0.0020174042 0.0054492692 + 800400 0.0052429809 0.0020128999 0.0045934296 + 800500 0.0054623073 0.0022073302 0.0048958096 + 800600 0.005314341 0.002410543 0.0050261952 + 800700 0.0042491855 0.0023005844 0.0043919804 + 800800 0.0049304448 0.0022270827 0.004653786 + 800900 0.0042620778 0.0029943279 0.0050920693 + 801000 0.0070284168 0.0032012301 0.006660529 + 801100 0.0043419001 0.003283531 0.0054205599 + 801200 0.0053074932 0.0031962479 0.0058085297 + 801300 0.0045356164 0.0031324869 0.0053648606 + 801400 0.0047788237 0.002898965 0.0052510423 + 801500 0.005409293 0.0026962475 0.0053586338 + 801600 0.0045611518 0.0027814959 0.0050264378 + 801700 0.0059699307 0.0022734888 0.0052118141 + 801800 0.0063573833 0.0023274667 0.0054564912 + 801900 0.0078256952 0.0020824898 0.0059341991 + 802000 0.0046909175 0.0024332216 0.0047420326 + 802100 0.0059378072 0.0020841797 0.0050066942 + 802200 0.0037090308 0.0020819125 0.0039074511 + 802300 0.0048176338 0.002468559 0.0048397382 + 802400 0.0050513099 0.002269863 0.0047560546 + 802500 0.0063720925 0.0022055939 0.0053418582 + 802600 0.0038642556 0.002563091 0.0044650293 + 802700 0.0047377395 0.0024164156 0.0047482718 + 802800 0.0045090912 0.0023733639 0.0045926822 + 802900 0.0034084743 0.0020788953 0.0037565037 + 803000 0.0047517753 0.0016107118 0.0039494762 + 803100 0.0051862177 0.0013974394 0.003950031 + 803200 0.0048048391 0.001440539 0.0038054207 + 803300 0.0040942295 0.0016900505 0.0037051791 + 803400 0.0048167812 0.0022910621 0.0046618216 + 803500 0.0060066946 0.0025738369 0.0055302569 + 803600 0.0055102742 0.0024420685 0.0051541566 + 803700 0.0052848992 0.0023765241 0.0049776855 + 803800 0.005709186 0.0018933414 0.0047033314 + 803900 0.0058216256 0.0023422865 0.0052076179 + 804000 0.0063122542 0.0031504246 0.0062572372 + 804100 0.006478378 0.0034353101 0.0066238867 + 804200 0.0038158722 0.0030593907 0.0049375153 + 804300 0.0037935757 0.002892681 0.0047598315 + 804400 0.0041470966 0.002302636 0.0043437852 + 804500 0.0059814467 0.0021414117 0.005085405 + 804600 0.0057614408 0.0024938675 0.0053295766 + 804700 0.005877214 0.0026776589 0.0055703502 + 804800 0.0055448434 0.00267543 0.0054045326 + 804900 0.0041293169 0.0024365954 0.0044689936 + 805000 0.0052557462 0.0025304368 0.0051172493 + 805100 0.0044277353 0.0026069109 0.0047861868 + 805200 0.0042157058 0.0025428591 0.0046177768 + 805300 0.0051300504 0.0023518956 0.0048768423 + 805400 0.0056986628 0.0021446834 0.004949494 + 805500 0.0040862988 0.0026968416 0.0047080668 + 805600 0.0053445524 0.0024950014 0.0051255233 + 805700 0.0046328082 0.0030051671 0.0052853774 + 805800 0.0062901589 0.0031190659 0.0062150034 + 805900 0.005964964 0.0027166388 0.0056525196 + 806000 0.0052464263 0.0021056274 0.0046878529 + 806100 0.0038199743 0.0019579432 0.0038380868 + 806200 0.0045404433 0.0026710497 0.0049057992 + 806300 0.0047215893 0.0023336816 0.0046575888 + 806400 0.0051127189 0.0019755149 0.0044919312 + 806500 0.0046328784 0.0019514081 0.0042316529 + 806600 0.0050013177 0.0019632875 0.0044248736 + 806700 0.0045928939 0.0020581683 0.0043187332 + 806800 0.0040818027 0.0017416763 0.0037506885 + 806900 0.0062965566 0.001795272 0.0048943584 + 807000 0.0052785056 0.0027161842 0.0053141987 + 807100 0.0056615863 0.0025147737 0.0053013357 + 807200 0.0049192605 0.0018273876 0.0042485861 + 807300 0.0055783016 0.0018010432 0.0045466135 + 807400 0.0035032677 0.0024616454 0.00418591 + 807500 0.0049012879 0.0028477034 0.0052600561 + 807600 0.0028520803 0.0028793742 0.0042831324 + 807700 0.004303775 0.0024081686 0.0045264328 + 807800 0.0054848654 0.0023037616 0.0050033438 + 807900 0.0047227929 0.002316374 0.0046408736 + 808000 0.0060443814 0.0019980631 0.0049730321 + 808100 0.0042484719 0.0020577852 0.00414883 + 808200 0.0045498856 0.0019028098 0.0041422067 + 808300 0.0043817863 0.0021268768 0.0042835373 + 808400 0.004893314 0.0022953434 0.0047037714 + 808500 0.0039825614 0.0018311444 0.0037913113 + 808600 0.0045126259 0.0017467643 0.0039678223 + 808700 0.0043919712 0.0018715614 0.0040332347 + 808800 0.0052609423 0.0022691551 0.0048585251 + 808900 0.0051161885 0.0021620711 0.0046801951 + 809000 0.0053667381 0.0018102708 0.0044517122 + 809100 0.005964616 0.0013841888 0.0043198982 + 809200 0.0040015926 0.0017803551 0.003749889 + 809300 0.0048171329 0.0014959495 0.0038668821 + 809400 0.0044075759 0.0015185586 0.0036879124 + 809500 0.0039027367 0.0014976983 0.0034185765 + 809600 0.0044195582 0.0017383442 0.0039135955 + 809700 0.0060770082 0.0018944717 0.0048854991 + 809800 0.0052381287 0.0022708 0.0048489415 + 809900 0.0062331933 0.0025189983 0.0055868981 + 810000 0.0052117375 0.0027215971 0.0052867491 + 810100 0.0046860523 0.0027908366 0.0050972529 + 810200 0.0053440923 0.0030171718 0.0056474673 + 810300 0.0043816919 0.0031941878 0.0053508018 + 810400 0.0034803424 0.0030359691 0.0047489502 + 810500 0.0072014713 0.0029644726 0.0065089467 + 810600 0.0044413655 0.0029755527 0.0051615372 + 810700 0.0052998465 0.0021462294 0.0047547476 + 810800 0.0061169548 0.0018983025 0.0049089911 + 810900 0.0047811834 0.0018117879 0.0041650267 + 811000 0.0046845312 0.0017826443 0.004088312 + 811100 0.0041670635 0.0017290717 0.0037800483 + 811200 0.0050198172 0.0019897446 0.0044604359 + 811300 0.0051853226 0.0022833533 0.0048355043 + 811400 0.0050966148 0.0024110831 0.0049195732 + 811500 0.0055804791 0.0023328576 0.0050794996 + 811600 0.0053258148 0.0025396021 0.0051609016 + 811700 0.0053249565 0.0022864462 0.0049073232 + 811800 0.0074357436 0.001997445 0.005657225 + 811900 0.0054566987 0.00230139 0.0049871089 + 812000 0.0053086761 0.002590243 0.005203107 + 812100 0.0066516685 0.0025940667 0.0058679348 + 812200 0.0052612937 0.0025595601 0.0051491031 + 812300 0.0053119389 0.0026792054 0.0052936753 + 812400 0.0044530018 0.002899332 0.0050910438 + 812500 0.0049782329 0.0027971215 0.0052473455 + 812600 0.0041544663 0.0024650766 0.004509853 + 812700 0.0043272722 0.002361145 0.0044909743 + 812800 0.0059868133 0.0022479285 0.0051945632 + 812900 0.0057209786 0.0021884717 0.0050042659 + 813000 0.0065183814 0.002836232 0.0060444978 + 813100 0.0068191659 0.0031433991 0.0064997073 + 813200 0.0064719736 0.0030410795 0.006226504 + 813300 0.0049284472 0.0028699491 0.0052956693 + 813400 0.0044919842 0.0027430744 0.0049539729 + 813500 0.0051173392 0.0028019323 0.0053206227 + 813600 0.0062477193 0.0028319583 0.0059070076 + 813700 0.0038002523 0.0028423917 0.0047128284 + 813800 0.0052187647 0.0023853611 0.0049539719 + 813900 0.0040763885 0.0021021236 0.0041084711 + 814000 0.0049471091 0.0020561868 0.0044910921 + 814100 0.003625941 0.0023533644 0.0041380072 + 814200 0.0048865858 0.0022529463 0.0046580627 + 814300 0.0053670699 0.0021934848 0.0048350895 + 814400 0.0045343823 0.0018983617 0.004130128 + 814500 0.0047302833 0.0017752168 0.0041034031 + 814600 0.0040343339 0.0024690427 0.0044546914 + 814700 0.0078393139 0.0023152406 0.0061736529 + 814800 0.0043292364 0.0024007933 0.0045315893 + 814900 0.0054516583 0.00264252 0.0053257581 + 815000 0.0061987923 0.0028213425 0.0058723106 + 815100 0.0049267229 0.003216012 0.0056408834 + 815200 0.0050142325 0.0033079696 0.0057759122 + 815300 0.0063515445 0.002742085 0.0058682358 + 815400 0.0063216618 0.002094496 0.0052059389 + 815500 0.0052208889 0.0021351667 0.0047048229 + 815600 0.0067967001 0.0023045455 0.0056497963 + 815700 0.0059363882 0.0023675894 0.0052894054 + 815800 0.0064635183 0.0024314381 0.0056127011 + 815900 0.0033918578 0.0025807393 0.0042501694 + 816000 0.0052281302 0.0026352826 0.005208503 + 816100 0.0064384254 0.0023116137 0.0054805262 + 816200 0.0052823494 0.0028666974 0.0054666037 + 816300 0.0056536983 0.0027759716 0.0055586513 + 816400 0.005232194 0.0021723714 0.0047475919 + 816500 0.0054521773 0.0020055299 0.0046890234 + 816600 0.0049525723 0.0023088615 0.0047464557 + 816700 0.0044822504 0.0025013925 0.0047075002 + 816800 0.0055931002 0.0020522488 0.0048051028 + 816900 0.0047394923 0.0022739445 0.0046066634 + 817000 0.004790025 0.0025941683 0.0049517588 + 817100 0.0060721058 0.0024014536 0.0053900682 + 817200 0.0066498111 0.0018879019 0.0051608558 + 817300 0.0046942672 0.0023337634 0.004644223 + 817400 0.0041535318 0.0022243729 0.0042686893 + 817500 0.0050083085 0.0023099498 0.0047749766 + 817600 0.0053138156 0.0020555472 0.0046709408 + 817700 0.0055686653 0.0023506662 0.0050914936 + 817800 0.003943332 0.0027738289 0.0047146876 + 817900 0.0058334326 0.0022911699 0.0051623125 + 818000 0.0046847678 0.0021436879 0.004449472 + 818100 0.004099318 0.0025337735 0.0045514066 + 818200 0.0042056372 0.0021938012 0.0042637632 + 818300 0.0064749188 0.001542726 0.0047296001 + 818400 0.0051786814 0.0017699251 0.0043188074 + 818500 0.0051408584 0.0021898032 0.0047200695 + 818600 0.004121438 0.0023140823 0.0043426025 + 818700 0.0044892885 0.0022472322 0.0044568039 + 818800 0.0050032251 0.0024176008 0.0048801257 + 818900 0.0028147999 0.0026067491 0.0039921584 + 819000 0.006275873 0.0023904689 0.0054793752 + 819100 0.0063925544 0.0026430923 0.0057894277 + 819200 0.0063934897 0.0028862621 0.0060330578 + 819300 0.0049828966 0.002776409 0.0052289284 + 819400 0.0056207399 0.0025809281 0.005347386 + 819500 0.0059295357 0.0022263679 0.0051448113 + 819600 0.0039280849 0.002575696 0.0045090503 + 819700 0.0064394063 0.0029028869 0.0060722822 + 819800 0.0059596363 0.0029447287 0.0058779872 + 819900 0.005454314 0.0026225556 0.0053071008 + 820000 0.0032863185 0.0024233731 0.004040858 + 820100 0.0034544514 0.002490749 0.0041909868 + 820200 0.0037342183 0.0022334698 0.0040714053 + 820300 0.0047097579 0.0022799217 0.0045980057 + 820400 0.006298471 0.0024310187 0.0055310475 + 820500 0.0056236747 0.0023734809 0.0051413833 + 820600 0.0049822499 0.0021192712 0.0045714724 + 820700 0.0051497466 0.0020425149 0.0045771558 + 820800 0.0052409072 0.0020128773 0.0045923863 + 820900 0.0045375392 0.0023131901 0.0045465102 + 821000 0.005835879 0.0023645718 0.0052369185 + 821100 0.0050944061 0.0031304243 0.0056378273 + 821200 0.0046687899 0.0031335897 0.0054315097 + 821300 0.0051538559 0.0029940386 0.005530702 + 821400 0.0042803441 0.0029779325 0.0050846644 + 821500 0.0067925589 0.0025988339 0.0059420465 + 821600 0.0028485078 0.002193758 0.0035957579 + 821700 0.0045113484 0.0022284613 0.0044488906 + 821800 0.004641166 0.0022930871 0.004577411 + 821900 0.004908513 0.0019863048 0.0044022136 + 822000 0.0044790754 0.0021394762 0.0043440211 + 822100 0.0041527406 0.002150464 0.004194391 + 822200 0.0039382173 0.0018142528 0.0037525942 + 822300 0.0047251518 0.0018633444 0.004189005 + 822400 0.00600305 0.0021488861 0.0051035123 + 822500 0.0051710833 0.0021969756 0.0047421182 + 822600 0.0056878192 0.002034021 0.0048334945 + 822700 0.0045168558 0.0024494283 0.0046725682 + 822800 0.0040789547 0.0026608005 0.004668411 + 822900 0.004739958 0.0029775656 0.0053105136 + 823000 0.0059729749 0.0029476817 0.0058875053 + 823100 0.0067650107 0.0025658432 0.0058954969 + 823200 0.0052314851 0.002192046 0.0047669176 + 823300 0.0040783583 0.002466153 0.00447347 + 823400 0.0064299243 0.0022529207 0.0054176491 + 823500 0.0040169727 0.0020893023 0.0040664061 + 823600 0.0034851301 0.0022180494 0.0039333869 + 823700 0.003442318 0.0021319421 0.003826208 + 823800 0.0039552023 0.0023192821 0.0042659832 + 823900 0.0049648514 0.0027002211 0.0051438589 + 824000 0.0043366124 0.00241935 0.0045537764 + 824100 0.0049156068 0.0027630434 0.0051824437 + 824200 0.0051426228 0.0025264072 0.0050575419 + 824300 0.0033793613 0.0026672169 0.0043304963 + 824400 0.0039661342 0.0024379426 0.0043900243 + 824500 0.0043242487 0.0021353393 0.0042636805 + 824600 0.004528486 0.0023034962 0.0045323604 + 824700 0.0054241163 0.0019687488 0.004638431 + 824800 0.0056545864 0.0019137463 0.0046968631 + 824900 0.0060621153 0.0022012977 0.005184995 + 825000 0.0058859759 0.0025340696 0.0054310734 + 825100 0.0039747307 0.0026518289 0.0046081417 + 825200 0.0044321154 0.0026641868 0.0048456186 + 825300 0.0048411763 0.0026286721 0.0050114386 + 825400 0.0043036186 0.0027937184 0.0049119057 + 825500 0.0047147395 0.0028431576 0.0051636934 + 825600 0.0045183359 0.0028346942 0.0050585627 + 825700 0.0034065603 0.0024475823 0.0041242487 + 825800 0.0056514441 0.0025805558 0.0053621259 + 825900 0.0039169921 0.0025144349 0.0044423295 + 826000 0.0055954837 0.0020423031 0.0047963302 + 826100 0.0047235916 0.0018884482 0.0042133409 + 826200 0.0049052228 0.0018359854 0.0042502747 + 826300 0.0063796615 0.0021620584 0.0053020481 + 826400 0.0053076528 0.0023900746 0.005002435 + 826500 0.0059605629 0.0023642806 0.0052979952 + 826600 0.0061276731 0.002377576 0.0053935401 + 826700 0.004463508 0.0021999674 0.0043968502 + 826800 0.0049579362 0.0020220155 0.0044622497 + 826900 0.0045854046 0.0019770457 0.0042339245 + 827000 0.0049187745 0.0021686279 0.0045895872 + 827100 0.0048412302 0.0020620868 0.0044448798 + 827200 0.0045258524 0.0023080332 0.0045356011 + 827300 0.0045403643 0.0023329309 0.0045676415 + 827400 0.0053563989 0.0023947827 0.0050311353 + 827500 0.0055059291 0.0029717256 0.0056816751 + 827600 0.0056445815 0.0028960672 0.0056742596 + 827700 0.0038862168 0.0028574619 0.0047702092 + 827800 0.0053947431 0.0025028525 0.0051580776 + 827900 0.0056205063 0.0029706195 0.0057369625 + 828000 0.0057522619 0.0032386558 0.0060698471 + 828100 0.006124037 0.0033842814 0.0063984559 + 828200 0.0053191519 0.0036594447 0.0062774648 + 828300 0.0058128148 0.0032876541 0.0061486489 + 828400 0.0050973113 0.0025602192 0.0050690521 + 828500 0.0061241486 0.0026861668 0.0057003962 + 828600 0.0067686244 0.0023503301 0.0056817624 + 828700 0.0034951327 0.0027120034 0.004432264 + 828800 0.0050376014 0.0024464101 0.0049258545 + 828900 0.0042770024 0.0023968363 0.0045019235 + 829000 0.0047937908 0.0026423938 0.0050018377 + 829100 0.0048200701 0.0029040012 0.0052763794 + 829200 0.0057462808 0.0025143534 0.005342601 + 829300 0.0047155092 0.0025204788 0.0048413935 + 829400 0.0060979228 0.0029958507 0.0059971721 + 829500 0.0046614221 0.0030922363 0.00538653 + 829600 0.0039483563 0.0025893264 0.0045326581 + 829700 0.0052675191 0.0022548532 0.0048474602 + 829800 0.0045914765 0.0023244881 0.0045843554 + 829900 0.0050963435 0.0023708818 0.0048792383 + 830000 0.0048485953 0.0022590341 0.0046454521 + 830100 0.0033770571 0.0022996178 0.0039617632 + 830200 0.004267265 0.0020753282 0.0041756228 + 830300 0.0045525936 0.0022220398 0.0044627694 + 830400 0.0058820649 0.0024802649 0.0053753437 + 830500 0.0057424369 0.0022756619 0.0051020175 + 830600 0.0057107082 0.0020120768 0.004822816 + 830700 0.0054309165 0.0023972716 0.0050703008 + 830800 0.0058142446 0.0023178378 0.0051795364 + 830900 0.0044257683 0.0023351242 0.004513432 + 831000 0.0060781597 0.0025086881 0.0055002823 + 831100 0.003751226 0.0028707326 0.0047170391 + 831200 0.0050524455 0.0022681902 0.0047549407 + 831300 0.0039466858 0.0018099531 0.0037524625 + 831400 0.0059125187 0.0017692154 0.0046792832 + 831500 0.0054842851 0.0021407587 0.0048400553 + 831600 0.0039606615 0.0024121882 0.0043615763 + 831700 0.0056039831 0.0023282783 0.0050864887 + 831800 0.005234449 0.0024197897 0.0049961201 + 831900 0.006157045 0.0023068296 0.0053372502 + 832000 0.0051908539 0.002474497 0.0050293704 + 832100 0.003658663 0.0021889589 0.0039897071 + 832200 0.0078320258 0.0015772511 0.0054320763 + 832300 0.0045103458 0.0021184677 0.0043384035 + 832400 0.0060987044 0.0024167754 0.0054184815 + 832500 0.0053287941 0.0023379442 0.0049607101 + 832600 0.0044703193 0.002082179 0.0042824143 + 832700 0.00501286 0.0021369516 0.0046042186 + 832800 0.0036212691 0.0025341454 0.0043164888 + 832900 0.0049054842 0.0020885783 0.0045029964 + 833000 0.0054331569 0.0022813384 0.0049554704 + 833100 0.0050388331 0.0024835693 0.00496362 + 833200 0.0057896921 0.002816323 0.005665937 + 833300 0.0053278077 0.0029264813 0.0055487616 + 833400 0.0051050825 0.0028107166 0.0053233744 + 833500 0.0040338301 0.0026917799 0.0046771806 + 833600 0.0042338599 0.0021876737 0.0042715266 + 833700 0.0065107082 0.0014693206 0.0046738098 + 833800 0.0044644381 0.0017716483 0.0039689889 + 833900 0.0065565852 0.0019840621 0.0052111314 + 834000 0.0040339211 0.0024341347 0.0044195802 + 834100 0.0036872366 0.0024179441 0.0042327559 + 834200 0.0040614351 0.0025669429 0.0045659304 + 834300 0.0055123799 0.0021579695 0.004871094 + 834400 0.0057747153 0.0021478039 0.0049900466 + 834500 0.0046271185 0.0021682526 0.0044456625 + 834600 0.0054621496 0.0019675529 0.0046559547 + 834700 0.0052572987 0.0020092097 0.0045967864 + 834800 0.0045219659 0.0024704585 0.0046961136 + 834900 0.0042684786 0.0024703569 0.0045712487 + 835000 0.004470116 0.0028491574 0.0050492926 + 835100 0.0061930909 0.0025783793 0.0056265412 + 835200 0.005210814 0.0024411945 0.005005892 + 835300 0.0036568806 0.0026309993 0.0044308702 + 835400 0.0045184196 0.0023154577 0.0045393673 + 835500 0.0044480338 0.0021770982 0.0043663648 + 835600 0.005490461 0.0022450968 0.0049474331 + 835700 0.0053466726 0.0019989442 0.0046305097 + 835800 0.0052081136 0.0021705242 0.0047338926 + 835900 0.0045185849 0.0025838512 0.0048078423 + 836000 0.0047286416 0.002649399 0.0049767773 + 836100 0.0056849732 0.0021896471 0.0049877199 + 836200 0.0044277628 0.0022957362 0.0044750257 + 836300 0.0055613703 0.0025503386 0.0052875755 + 836400 0.004775201 0.0026181684 0.0049684626 + 836500 0.0071984565 0.0028265682 0.0063695585 + 836600 0.00573876 0.0031592187 0.0059837646 + 836700 0.0039550605 0.0027793702 0.0047260016 + 836800 0.0045246554 0.0025512495 0.0047782283 + 836900 0.0043012976 0.0023690972 0.0044861421 + 837000 0.005187605 0.002313835 0.0048671093 + 837100 0.0058732598 0.0023961018 0.0052868469 + 837200 0.0038082858 0.0025417435 0.0044161342 + 837300 0.0061705956 0.0025193594 0.0055564494 + 837400 0.0042735823 0.0025749844 0.0046783882 + 837500 0.007770958 0.0021384158 0.0059631842 + 837600 0.0062408411 0.0023705574 0.0054422214 + 837700 0.0047165518 0.0023893503 0.0047107781 + 837800 0.0055616203 0.0023528334 0.0050901934 + 837900 0.0054264137 0.0024624729 0.0051332859 + 838000 0.0048794242 0.002512766 0.0049143576 + 838100 0.0057731918 0.0023105879 0.0051520807 + 838200 0.0055200427 0.0023337216 0.0050506176 + 838300 0.0040363989 0.002127573 0.0041142381 + 838400 0.0055541428 0.0023825146 0.0051161943 + 838500 0.0041326425 0.0023708453 0.0044048803 + 838600 0.0049195455 0.0020697711 0.0044911099 + 838700 0.0052179656 0.0019570358 0.0045252532 + 838800 0.0050416794 0.0018582538 0.0043397054 + 838900 0.0038254488 0.0017116579 0.003594496 + 839000 0.0045339968 0.0018011569 0.0040327334 + 839100 0.0034792051 0.001936047 0.0036484683 + 839200 0.0043422409 0.0023337095 0.0044709062 + 839300 0.0070211968 0.0022619689 0.0057177141 + 839400 0.0045569859 0.0029365632 0.0051794547 + 839500 0.0035775053 0.0034120498 0.0051728531 + 839600 0.0040259719 0.0029285483 0.0049100813 + 839700 0.0051603533 0.0023147554 0.0048546168 + 839800 0.0028369066 0.0021162648 0.0035125548 + 839900 0.0053925541 0.0020162644 0.0046704121 + 840000 0.0048267114 0.0017858008 0.0041614478 + 840100 0.0037645962 0.002003736 0.0038566231 + 840200 0.0039738336 0.0021812672 0.0041371384 + 840300 0.0052570343 0.0024734887 0.0050609353 + 840400 0.0066241092 0.0030962639 0.0063565676 + 840500 0.0043609674 0.003124712 0.0052711257 + 840600 0.0045731418 0.0031021083 0.0053529515 + 840700 0.0044346001 0.0024353235 0.0046179782 + 840800 0.0033480902 0.0022570163 0.0039049045 + 840900 0.0046675844 0.0025826689 0.0048799956 + 841000 0.0040203632 0.0027812847 0.0047600572 + 841100 0.0048031692 0.0026939012 0.005057961 + 841200 0.0042992318 0.0024993002 0.0046153284 + 841300 0.0049062746 0.0022976992 0.0047125062 + 841400 0.0047030535 0.0022122699 0.0045270541 + 841500 0.0036737918 0.0022782194 0.0040864138 + 841600 0.0048798797 0.0020628673 0.0044646831 + 841700 0.0060230594 0.0019682301 0.0049327046 + 841800 0.0047416602 0.0021143409 0.0044481268 + 841900 0.005406667 0.0023905406 0.0050516345 + 842000 0.0053568623 0.0023828496 0.0050194302 + 842100 0.0047210217 0.0023132216 0.0046368495 + 842200 0.0053284994 0.0016615812 0.004284202 + 842300 0.0039875488 0.0014658586 0.0034284803 + 842400 0.0050846053 0.0018372752 0.0043398544 + 842500 0.0047145176 0.0021211996 0.0044416263 + 842600 0.0065741419 0.0020455703 0.0052812807 + 842700 0.0053824048 0.0022100907 0.004859243 + 842800 0.0070901323 0.0028864104 0.0063760849 + 842900 0.006261735 0.0031421571 0.0062241048 + 843000 0.0073970066 0.0024377602 0.0060784744 + 843100 0.0077186894 0.0021741203 0.0059731627 + 843200 0.0052520145 0.0023543176 0.0049392935 + 843300 0.0059851219 0.0022066505 0.0051524527 + 843400 0.0060267234 0.0022866255 0.0052529035 + 843500 0.0052625499 0.00251117 0.0051013313 + 843600 0.0064319778 0.0020490237 0.0052147628 + 843700 0.0055466806 0.0017052454 0.0044352523 + 843800 0.0048038209 0.0022678594 0.00463224 + 843900 0.0052426634 0.0027229423 0.0053033157 + 844000 0.0058352624 0.0025452792 0.0054173225 + 844100 0.0063911752 0.002198614 0.0053442705 + 844200 0.0052897833 0.0028066296 0.0054101948 + 844300 0.0045628879 0.0034054878 0.0056512842 + 844400 0.0042721335 0.0032769394 0.0053796301 + 844500 0.0076991753 0.00275888 0.0065483178 + 844600 0.005261308 0.0023630164 0.0049525664 + 844700 0.0055158389 0.0019556998 0.0046705268 + 844800 0.0043535408 0.0018393265 0.0039820849 + 844900 0.0056888057 0.0017300913 0.0045300504 + 845000 0.0035302541 0.0019901145 0.0037276614 + 845100 0.0055331086 0.0024746851 0.005198012 + 845200 0.0041853608 0.002868687 0.0049286693 + 845300 0.0049791719 0.0025666168 0.0050173029 + 845400 0.0057611345 0.0021362682 0.0049718266 + 845500 0.0054938149 0.0017349966 0.0044389836 + 845600 0.0030976192 0.002219519 0.0037441284 + 845700 0.0053988939 0.0022972851 0.0049545532 + 845800 0.0046649276 0.0023717831 0.0046678022 + 845900 0.0045254186 0.0020473423 0.0042746968 + 846000 0.0042981272 0.0017364579 0.0038519424 + 846100 0.0042372561 0.0018138571 0.0038993816 + 846200 0.0041472209 0.002067507 0.0041087173 + 846300 0.0046595519 0.0020638533 0.0043572265 + 846400 0.0056717714 0.0021146701 0.0049062451 + 846500 0.0056763232 0.0017697501 0.0045635654 + 846600 0.0055512485 0.0018700167 0.0046022718 + 846700 0.0044331811 0.0024373158 0.0046192722 + 846800 0.0047968819 0.0024873948 0.0048483601 + 846900 0.0060923246 0.0024314535 0.0054300195 + 847000 0.0065242233 0.0023046501 0.0055157913 + 847100 0.0058650057 0.0025653313 0.0054520138 + 847200 0.0059613498 0.0023033575 0.0052374594 + 847300 0.0052625035 0.0020083009 0.0045984393 + 847400 0.0045508044 0.0018274772 0.0040673262 + 847500 0.0046829842 0.0018791618 0.0041840681 + 847600 0.0065232685 0.0015820347 0.0047927059 + 847700 0.0048658844 0.0020828085 0.0044777359 + 847800 0.0044100869 0.0025104955 0.0046810851 + 847900 0.005612112 0.0022656499 0.0050278613 + 848000 0.0049533484 0.0021970468 0.004635023 + 848100 0.0064068971 0.0022228496 0.0053762443 + 848200 0.0052178494 0.0023642775 0.0049324378 + 848300 0.005242876 0.0021139618 0.0046944398 + 848400 0.005233945 0.0018275016 0.0044035838 + 848500 0.0047511328 0.0020952437 0.0044336919 + 848600 0.0062191378 0.0021583366 0.0052193185 + 848700 0.0050845735 0.0027331178 0.0052356813 + 848800 0.0046669288 0.0031194839 0.0054164879 + 848900 0.0057861867 0.0026998931 0.0055477818 + 849000 0.0040794109 0.0024759441 0.0044837791 + 849100 0.006964246 0.0021107849 0.0055384997 + 849200 0.0047003505 0.0020776899 0.0043911437 + 849300 0.0065568356 0.0020612993 0.0052884918 + 849400 0.0066980102 0.0021599752 0.0054566522 + 849500 0.0037843096 0.002101379 0.0039639689 + 849600 0.0059152337 0.0019559547 0.0048673588 + 849700 0.0044807194 0.0019320627 0.0041374167 + 849800 0.0049484543 0.0018207869 0.0042563542 + 849900 0.0046342405 0.0017501765 0.0040310917 + 850000 0.0042557518 0.0019558883 0.0040505161 + 850100 0.0055666851 0.0018933254 0.0046331782 + 850200 0.0051628926 0.0018375648 0.004378676 + 850300 0.0060539418 0.0021834358 0.0051631102 + 850400 0.0064220342 0.0017365857 0.0048974306 + 850500 0.00453956 0.0016723056 0.0039066203 + 850600 0.0044059863 0.0023173061 0.0044858774 + 850700 0.0062476039 0.0025545353 0.0056295279 + 850800 0.0054464162 0.0024077276 0.0050883856 + 850900 0.0048093473 0.0027211888 0.0050882894 + 851000 0.0059969987 0.0026640692 0.005615717 + 851100 0.0058810876 0.002279412 0.0051740098 + 851200 0.0053702511 0.0021773895 0.00482056 + 851300 0.0053551939 0.0021548459 0.0047906053 + 851400 0.0052382147 0.002165118 0.0047433018 + 851500 0.0048057351 0.0022932947 0.0046586174 + 851600 0.0055503277 0.0023176497 0.0050494516 + 851700 0.0048691341 0.0023908128 0.0047873397 + 851800 0.004261001 0.0025219515 0.0046191629 + 851900 0.0052498133 0.002362204 0.0049460965 + 852000 0.0055613528 0.0027253419 0.0054625702 + 852100 0.0051720638 0.0029110326 0.0054566577 + 852200 0.0067253331 0.002393966 0.0057040908 + 852300 0.006512127 0.0022001058 0.0054052933 + 852400 0.004502141 0.0024792577 0.0046951552 + 852500 0.0054091104 0.0026458971 0.0053081936 + 852600 0.005048736 0.0024514297 0.0049363545 + 852700 0.0046016059 0.0022307605 0.0044956134 + 852800 0.0053381637 0.0020245972 0.0046519747 + 852900 0.0055076737 0.0017909959 0.0045018041 + 853000 0.0046346044 0.0019958598 0.0042769542 + 853100 0.0038289196 0.0023574268 0.0042419732 + 853200 0.0044546887 0.002205101 0.0043976431 + 853300 0.0059651345 0.0017927315 0.0047286962 + 853400 0.003775182 0.0019044134 0.0037625108 + 853500 0.006837822 0.001961426 0.0053269165 + 853600 0.0060769501 0.0026702197 0.0056612186 + 853700 0.0039096869 0.0027154868 0.0046397858 + 853800 0.006133446 0.0023276151 0.0053464205 + 853900 0.0057418649 0.0025840553 0.0054101295 + 854000 0.0053203958 0.0027285542 0.0053471864 + 854100 0.0067636017 0.0024558042 0.0057847644 + 854200 0.0046752508 0.002789197 0.005090297 + 854300 0.0045754148 0.0027093244 0.0049612864 + 854400 0.0052798887 0.0026714527 0.0052701479 + 854500 0.0042314549 0.0026879602 0.0047706294 + 854600 0.0031615889 0.0024378487 0.0039939432 + 854700 0.0047602861 0.0021016679 0.0044446212 + 854800 0.0032091787 0.0020056082 0.0035851258 + 854900 0.0046902377 0.0019665593 0.0042750357 + 855000 0.0050625128 0.0019664955 0.004458201 + 855100 0.0044396621 0.0018055282 0.0039906745 + 855200 0.0047577589 0.0016857722 0.0040274816 + 855300 0.0058270854 0.0017305205 0.004598539 + 855400 0.0056623822 0.0019684333 0.004755387 + 855500 0.0046031268 0.0019018094 0.0041674108 + 855600 0.0055225927 0.001564644 0.0042827951 + 855700 0.0047352652 0.0020640989 0.0043947372 + 855800 0.0053739233 0.0023709866 0.0050159645 + 855900 0.0054566935 0.0019926245 0.0046783409 + 856000 0.0049259958 0.0020305152 0.0044550288 + 856100 0.0047612273 0.0020647083 0.0044081249 + 856200 0.0036754571 0.0025173661 0.0043263802 + 856300 0.0038839621 0.0030060816 0.0049177193 + 856400 0.005432569 0.0027180454 0.0053918879 + 856500 0.0045667639 0.0024800248 0.0047277289 + 856600 0.0045306126 0.0027250226 0.0049549335 + 856700 0.0065503734 0.0025893617 0.0058133736 + 856800 0.0039332615 0.0029387001 0.0048746023 + 856900 0.005232812 0.0026016934 0.0051772181 + 857000 0.0058396579 0.0027521462 0.0056263528 + 857100 0.0046618408 0.0026488803 0.00494338 + 857200 0.0044883409 0.0023662758 0.0045753812 + 857300 0.0058773936 0.002197875 0.0050906547 + 857400 0.0064193404 0.0024161879 0.005575707 + 857500 0.006102218 0.0028075766 0.0058110121 + 857600 0.0037756928 0.0028732953 0.0047316441 + 857700 0.0053214273 0.0021494542 0.0047685942 + 857800 0.0055117309 0.0019976169 0.004710422 + 857900 0.0057016658 0.0025047956 0.0053110842 + 858000 0.0050055554 0.0029010384 0.0053647102 + 858100 0.004916797 0.0026673228 0.0050873088 + 858200 0.0058578444 0.0023044549 0.0051876127 + 858300 0.00468587 0.0021864549 0.0044927816 + 858400 0.0048895434 0.0021119848 0.0045185569 + 858500 0.0056833216 0.0018307458 0.0046280056 + 858600 0.0065594176 0.0018144372 0.0050429005 + 858700 0.0060607374 0.0022876948 0.005270714 + 858800 0.0046204539 0.0025472064 0.0048213361 + 858900 0.0050119734 0.0024940559 0.0049608866 + 859000 0.004900692 0.0022765165 0.0046885759 + 859100 0.0055177781 0.0020718244 0.0047876058 + 859200 0.0053368728 0.0020380228 0.0046647649 + 859300 0.0039148796 0.0018189108 0.0037457656 + 859400 0.0041831284 0.001724247 0.0037831305 + 859500 0.0051793168 0.0016918975 0.0042410925 + 859600 0.0048196829 0.0024996152 0.0048718029 + 859700 0.0047215425 0.0023383387 0.0046622229 + 859800 0.0056792344 0.0018095158 0.004604764 + 859900 0.0063744758 0.0018962116 0.0050336489 + 860000 0.0033915695 0.0023083792 0.0039776674 + 860100 0.0061009431 0.0018095954 0.0048124033 + 860200 0.0056129262 0.0015984848 0.0043610969 + 860300 0.00572689 0.001697176 0.0045158796 + 860400 0.0048540608 0.0019389007 0.0043280088 + 860500 0.0053889216 0.0016975892 0.004349949 + 860600 0.0043571996 0.0015387656 0.0036833247 + 860700 0.0052913286 0.0018820538 0.0044863796 + 860800 0.0040162349 0.0023712742 0.0043480148 + 860900 0.0053015046 0.0017524227 0.004361757 + 861000 0.0044442009 0.0017887084 0.0039760886 + 861100 0.0049929858 0.0018720085 0.0043294938 + 861200 0.007230973 0.001434559 0.0049935535 + 861300 0.0030402733 0.001910658 0.0034070426 + 861400 0.0052795339 0.0022540369 0.0048525574 + 861500 0.007031134 0.0025223269 0.0059829632 + 861600 0.0056175692 0.0022294717 0.004994369 + 861700 0.0062873133 0.0019052813 0.0049998183 + 861800 0.0031757268 0.0020065916 0.0035696446 + 861900 0.0041443244 0.0018873598 0.0039271445 + 862000 0.0040901869 0.0015282853 0.0035414241 + 862100 0.0055378216 0.001517036 0.0042426825 + 862200 0.0041640274 0.0017120049 0.0037614871 + 862300 0.0049211552 0.0018080548 0.0042301858 + 862400 0.0053263809 0.0013855865 0.0040071646 + 862500 0.0053625043 0.0018658846 0.0045052422 + 862600 0.0040091614 0.0024948433 0.0044681024 + 862700 0.0039009463 0.002588913 0.00450891 + 862800 0.0069072564 0.0020004464 0.0054001117 + 862900 0.0045447073 0.0023952034 0.0046320516 + 863000 0.0052440606 0.0020605854 0.0046416465 + 863100 0.0047454052 0.0020788595 0.0044144886 + 863200 0.0045274319 0.0021816466 0.0044099919 + 863300 0.0058622872 0.0020204467 0.0049057911 + 863400 0.004728843 0.0022981038 0.0046255812 + 863500 0.0063289033 0.0023055222 0.0054205293 + 863600 0.0043024516 0.0018549647 0.0039725776 + 863700 0.0055863368 0.0015940985 0.0043436237 + 863800 0.0032080745 0.0018324503 0.0034114244 + 863900 0.0038162104 0.0020756202 0.0039539113 + 864000 0.0054232897 0.0022622969 0.0049315723 + 864100 0.0055621599 0.0029205846 0.0056582102 + 864200 0.0039541401 0.0031639942 0.0051101725 + 864300 0.0042795573 0.0026786517 0.0047849963 + 864400 0.005294057 0.0022325172 0.0048381859 + 864500 0.0059803353 0.0016320858 0.0045755321 + 864600 0.0043321502 0.0018533493 0.0039855794 + 864700 0.004870497 0.0022481836 0.0046453813 + 864800 0.0040797387 0.0023796275 0.0043876239 + 864900 0.0036852996 0.0029604778 0.0047743362 + 865000 0.004228458 0.0031483916 0.0052295858 + 865100 0.005741898 0.0032608653 0.0060869557 + 865200 0.0054088326 0.0031744876 0.0058366473 + 865300 0.0044293667 0.0032947914 0.0054748703 + 865400 0.0044928697 0.0030730639 0.0052843982 + 865500 0.0070835548 0.0026306075 0.0061170447 + 865600 0.0062447974 0.0028166189 0.0058902301 + 865700 0.0050104553 0.0028198794 0.0052859629 + 865800 0.0059349915 0.0024094242 0.0053305528 + 865900 0.0041056927 0.0023382874 0.0043590581 + 866000 0.0043647228 0.0020427447 0.0041910067 + 866100 0.0047058807 0.0016894987 0.0040056743 + 866200 0.0054758274 0.0018026637 0.0044977975 + 866300 0.0044327072 0.002469276 0.0046509991 + 866400 0.0058661307 0.0024847772 0.0053720134 + 866500 0.0053364286 0.0024807233 0.0051072467 + 866600 0.0054123609 0.0023395445 0.0050034409 + 866700 0.0056341947 0.0021726529 0.0049457331 + 866800 0.0057779168 0.0021315082 0.0049753266 + 866900 0.0046446923 0.0021038641 0.0043899236 + 867000 0.0049831953 0.0020815585 0.0045342249 + 867100 0.0055925917 0.0024987451 0.0052513489 + 867200 0.0050454174 0.0028326384 0.0053159298 + 867300 0.0056520958 0.002637855 0.0054197459 + 867400 0.0045085403 0.0026254513 0.0048444985 + 867500 0.0046164084 0.0027738758 0.0050460143 + 867600 0.0049550312 0.0023926967 0.0048315012 + 867700 0.0055007459 0.0021833812 0.0048907795 + 867800 0.0032439045 0.0021784017 0.0037750109 + 867900 0.0049303837 0.0023848044 0.0048114777 + 868000 0.0051482534 0.0026183719 0.0051522779 + 868100 0.0058235971 0.0025713594 0.0054376611 + 868200 0.0067331634 0.002708126 0.0060221049 + 868300 0.0062180198 0.0029442976 0.0060047292 + 868400 0.0056062568 0.0024823776 0.0052417071 + 868500 0.0052992728 0.0020218806 0.0046301164 + 868600 0.0056968958 0.0019590944 0.0047630353 + 868700 0.0058537535 0.001974104 0.0048552483 + 868800 0.0064018554 0.0018759743 0.0050268875 + 868900 0.0037320631 0.0019039411 0.0037408159 + 869000 0.0051336409 0.0025044649 0.0050311788 + 869100 0.0052989925 0.0024453599 0.0050534577 + 869200 0.0059004949 0.0019829856 0.0048871354 + 869300 0.0051521738 0.0017753918 0.0043112273 + 869400 0.0038814817 0.0016644951 0.0035749119 + 869500 0.0055610907 0.0013360053 0.0040731046 + 869600 0.003896468 0.0015651736 0.0034829664 + 869700 0.0049696563 0.0017194958 0.0041654985 + 869800 0.0044373944 0.0018625733 0.0040466033 + 869900 0.0040199572 0.0021729251 0.0041514978 + 870000 0.0052288107 0.002425373 0.0049989283 + 870100 0.0045659488 0.0029205034 0.0051678063 + 870200 0.0050877486 0.0031165061 0.0056206324 + 870300 0.0051785451 0.0026580498 0.005206865 + 870400 0.0043415 0.0025758166 0.0047126487 + 870500 0.0052591437 0.0022063411 0.0047948259 + 870600 0.0047385956 0.0022421613 0.0045744388 + 870700 0.004501467 0.0026258586 0.0048414243 + 870800 0.0057514675 0.0023316024 0.0051624028 + 870900 0.0045156359 0.0020398695 0.004262409 + 871000 0.0066385418 0.0023629332 0.0056303405 + 871100 0.0029263224 0.0029038651 0.0043441644 + 871200 0.0028713807 0.0027037768 0.0041170345 + 871300 0.0036431791 0.0024572035 0.0042503307 + 871400 0.0047186007 0.002195163 0.0045175993 + 871500 0.0039849165 0.0021832617 0.0041445879 + 871600 0.0040656116 0.0020976391 0.0040986823 + 871700 0.0035669364 0.0025006773 0.0042562788 + 871800 0.0049528465 0.0028469612 0.0052846903 + 871900 0.005880426 0.002640368 0.0055346401 + 872000 0.0070908751 0.0026021206 0.0060921607 + 872100 0.0053732993 0.003356316 0.0060009867 + 872200 0.0060517994 0.0034011473 0.0063797674 + 872300 0.0061228856 0.0029028621 0.0059164698 + 872400 0.005678469 0.002376346 0.0051712175 + 872500 0.0053738512 0.0017247568 0.0043696991 + 872600 0.0064027937 0.0019192938 0.0050706688 + 872700 0.0034367482 0.00214903 0.0038405545 + 872800 0.0045829283 0.001904314 0.0041599741 + 872900 0.0046754631 0.0018934728 0.0041946773 + 873000 0.0039354311 0.0023370909 0.0042740609 + 873100 0.0045384014 0.0024025697 0.0046363141 + 873200 0.0057435652 0.0024107606 0.0052376716 + 873300 0.0049257871 0.0021089349 0.0045333457 + 873400 0.0042557258 0.0018570149 0.0039516299 + 873500 0.0059458734 0.0017800661 0.0047065506 + 873600 0.0057361694 0.0016270908 0.0044503617 + 873700 0.0058559573 0.0016722526 0.0045544816 + 873800 0.0046452115 0.001502395 0.00378871 + 873900 0.0050823648 0.0019103465 0.0044118229 + 874000 0.0044007143 0.0019164247 0.0040824012 + 874100 0.0054333393 0.0016687887 0.0043430104 + 874200 0.0054533399 0.0017268129 0.0044108787 + 874300 0.0042717111 0.0018662017 0.0039686845 + 874400 0.0044943515 0.0020667351 0.0042787987 + 874500 0.0052575007 0.0021666657 0.0047543418 + 874600 0.0034961885 0.0024153898 0.0041361701 + 874700 0.0058594448 0.0024292206 0.0053131661 + 874800 0.0057504088 0.0024488044 0.0052790837 + 874900 0.0063041406 0.0024285904 0.0055314096 + 875000 0.0039887946 0.0020533357 0.0040165705 + 875100 0.0037327279 0.0019596841 0.0037968861 + 875200 0.0049896583 0.0021221614 0.0045780088 + 875300 0.0059751975 0.0017051027 0.0046460202 + 875400 0.004635557 0.0014137658 0.003695329 + 875500 0.0042647264 0.0016019138 0.0037009589 + 875600 0.0041358779 0.0018473997 0.0038830271 + 875700 0.0048275209 0.0017878385 0.0041638839 + 875800 0.0041234544 0.0019920418 0.0040215545 + 875900 0.0043716481 0.0024465964 0.0045982669 + 876000 0.00637227 0.0024625979 0.0055989496 + 876100 0.004575148 0.0024328187 0.0046846493 + 876200 0.0053816068 0.0026573109 0.0053060705 + 876300 0.0058994661 0.0025223652 0.0054260087 + 876400 0.0051808981 0.002009759 0.0045597323 + 876500 0.0046712528 0.0023134978 0.0046126301 + 876600 0.0038335533 0.0025319194 0.0044187464 + 876700 0.005868645 0.0024601723 0.005348646 + 876800 0.0051854021 0.0023696607 0.0049218508 + 876900 0.0050269278 0.0027025657 0.0051767568 + 877000 0.0052315131 0.0022440654 0.0048189508 + 877100 0.0042902602 0.0018305838 0.0039421963 + 877200 0.0048883524 0.0015844873 0.0039904732 + 877300 0.0038885182 0.0015694145 0.0034832945 + 877400 0.0038155618 0.0016423989 0.0035203707 + 877500 0.0044945802 0.0017279506 0.0039401268 + 877600 0.0043340863 0.0018076409 0.003940824 + 877700 0.0070850402 0.0015499751 0.0050371433 + 877800 0.0055533086 0.0021374626 0.0048707317 + 877900 0.0054442957 0.002384965 0.0050645793 + 878000 0.004292589 0.0021396002 0.0042523589 + 878100 0.0061006207 0.0018258514 0.0048285006 + 878200 0.0052554601 0.0019623311 0.0045490028 + 878300 0.0037881462 0.0021352829 0.0039997611 + 878400 0.0053848652 0.0018519674 0.0045023307 + 878500 0.0052122943 0.0023764019 0.004941828 + 878600 0.0043137259 0.002746165 0.0048693269 + 878700 0.0043460031 0.0022371139 0.0043761623 + 878800 0.0060921589 0.0018416638 0.0048401482 + 878900 0.0046575111 0.0022643587 0.0045567275 + 879000 0.005103517 0.0024106959 0.0049225832 + 879100 0.0078418922 0.0022448074 0.0061044887 + 879200 0.0050426604 0.0026982857 0.0051802201 + 879300 0.0046295211 0.0026877246 0.004966317 + 879400 0.0054498977 0.0023778524 0.005060224 + 879500 0.0054858084 0.0016449477 0.004344994 + 879600 0.0043865668 0.0014146499 0.0035736632 + 879700 0.0044885145 0.0019616657 0.0041708564 + 879800 0.0045934966 0.0020757603 0.0043366219 + 879900 0.0042547919 0.0019717256 0.004065881 + 880000 0.0058032528 0.0018146106 0.0046708991 + 880100 0.0054510795 0.0019235335 0.0046064867 + 880200 0.0038902292 0.0024218493 0.0043365715 + 880300 0.0045702429 0.0023837985 0.004633215 + 880400 0.0070791086 0.0023345259 0.0058187747 + 880500 0.0051838425 0.0021674933 0.0047189158 + 880600 0.0051650753 0.0018679768 0.0044101623 + 880700 0.0047834748 0.0020791383 0.0044335048 + 880800 0.0047736223 0.0024348835 0.0047844008 + 880900 0.004961226 0.002781054 0.0052229074 + 881000 0.0041957423 0.0029056002 0.0049706921 + 881100 0.0051496387 0.0025866147 0.0051212026 + 881200 0.0042921299 0.0027186653 0.004831198 + 881300 0.004081026 0.0026637517 0.0046723816 + 881400 0.0042134759 0.0026028388 0.004676659 + 881500 0.0037258812 0.00278726 0.0046210921 + 881600 0.005169823 0.0028894347 0.0054339569 + 881700 0.0056731988 0.0030157881 0.0058080656 + 881800 0.0055443186 0.0028247563 0.0055536006 + 881900 0.0042325475 0.0024057746 0.0044889815 + 882000 0.0046480482 0.0027151318 0.005002843 + 882100 0.0046009842 0.0027084039 0.0049729508 + 882200 0.0041320991 0.0025262908 0.0045600583 + 882300 0.0059715056 0.0023405991 0.0052796995 + 882400 0.0041832886 0.0024753505 0.0045343129 + 882500 0.0042191639 0.0028020391 0.0048786589 + 882600 0.0044618847 0.0021538453 0.0043499291 + 882700 0.0049045957 0.0016432505 0.0040572312 + 882800 0.0049792531 0.0015767053 0.0040274315 + 882900 0.0043665794 0.0019226743 0.0040718501 + 883000 0.0055970559 0.0022366066 0.0049914075 + 883100 0.0052964025 0.0030032195 0.0056100426 + 883200 0.0050087604 0.0036501023 0.0061153515 + 883300 0.003800907 0.0036312824 0.0055020413 + 883400 0.0073712506 0.0028521747 0.0064802121 + 883500 0.005583185 0.0027929712 0.0055409451 + 883600 0.0038454074 0.0034270502 0.0053197116 + 883700 0.0045294788 0.0030687325 0.0052980853 + 883800 0.0033481924 0.0028092021 0.0044571405 + 883900 0.006335359 0.0021370687 0.0052552532 + 884000 0.0066453247 0.0026539708 0.0059247165 + 884100 0.0035992967 0.0034490249 0.0052205538 + 884200 0.0051104653 0.00303347 0.0055487772 + 884300 0.0064144906 0.002426461 0.005583593 + 884400 0.0061912637 0.0022301253 0.005277388 + 884500 0.0033509665 0.0025816056 0.0042309094 + 884600 0.0063648116 0.0024211082 0.0055537889 + 884700 0.0045593775 0.0025708732 0.0048149418 + 884800 0.0071826593 0.0022377646 0.0057729797 + 884900 0.0037963517 0.0020324469 0.0039009637 + 885000 0.0049610031 0.0022163007 0.0046580444 + 885100 0.0043013309 0.0022736629 0.0043907242 + 885200 0.0040729266 0.0021482775 0.0041529211 + 885300 0.0039229869 0.002079799 0.0040106441 + 885400 0.0058615544 0.0020044921 0.0048894759 + 885500 0.005238322 0.0020141479 0.0045923845 + 885600 0.0058020785 0.0020864892 0.0049421997 + 885700 0.004915356 0.002453454 0.0048727308 + 885800 0.0055745575 0.002332643 0.0050763705 + 885900 0.0049911582 0.002964918 0.0054215036 + 886000 0.005318727 0.0025100331 0.0051278441 + 886100 0.0058932403 0.0020659526 0.0049665318 + 886200 0.006000053 0.0020023039 0.004955455 + 886300 0.0052490369 0.002271011 0.0048545214 + 886400 0.0051219422 0.0024073449 0.0049283008 + 886500 0.0048182765 0.0029383142 0.0053098096 + 886600 0.0045644134 0.0029994036 0.0052459508 + 886700 0.0044406701 0.002907806 0.0050934483 + 886800 0.0050892683 0.0024628951 0.0049677693 + 886900 0.0041769829 0.001928563 0.0039844217 + 887000 0.0027807268 0.0019292419 0.0032978809 + 887100 0.0067036261 0.0019577002 0.0052571411 + 887200 0.0044735396 0.0024212392 0.0046230595 + 887300 0.0057965495 0.0021755969 0.0050285861 + 887400 0.0061710672 0.0023322932 0.0053696153 + 887500 0.0054604069 0.0023313272 0.0050188713 + 887600 0.0053868022 0.0024643622 0.005115679 + 887700 0.0038836704 0.0024272924 0.0043387864 + 887800 0.0039290458 0.0021788804 0.0041127076 + 887900 0.0054464898 0.0016450099 0.0043257041 + 888000 0.0047158464 0.0016353844 0.003956465 + 888100 0.0048675246 0.0019212786 0.0043170133 + 888200 0.0058714902 0.0021576517 0.0050475258 + 888300 0.0048398445 0.0024993666 0.0048814775 + 888400 0.0035739208 0.0026611834 0.0044202225 + 888500 0.005726333 0.0027077724 0.0055262019 + 888600 0.0057564112 0.0029980904 0.005831324 + 888700 0.0063277324 0.0029913321 0.0061057628 + 888800 0.0069269292 0.0024357744 0.0058451223 + 888900 0.0056854397 0.0021590932 0.0049573955 + 889000 0.0043702213 0.0024799225 0.0046308908 + 889100 0.005372833 0.0023096099 0.0049540511 + 889200 0.0048311209 0.0021031621 0.0044809795 + 889300 0.0064323252 0.0021871981 0.0053531081 + 889400 0.0056015553 0.0028192648 0.0055762803 + 889500 0.0050881504 0.0030208834 0.0055252074 + 889600 0.0046941554 0.0024453573 0.0047557619 + 889700 0.0039326226 0.0021937929 0.0041293805 + 889800 0.0053555079 0.0019022418 0.0045381559 + 889900 0.0043253187 0.0020598343 0.0041887021 + 890000 0.0044051887 0.002387122 0.0045553008 + 890100 0.0042192 0.002504315 0.0045809525 + 890200 0.0054321407 0.0023429889 0.0050166207 + 890300 0.0055211794 0.0023759244 0.0050933799 + 890400 0.0049677026 0.0020259344 0.0044709755 + 890500 0.0051340332 0.0019840923 0.0045109993 + 890600 0.005570098 0.0019663242 0.0047078568 + 890700 0.0049545975 0.0024545533 0.0048931442 + 890800 0.0069151584 0.0026905877 0.0060941422 + 890900 0.0060920328 0.002874101 0.0058725234 + 891000 0.0056141305 0.0026272594 0.0053904642 + 891100 0.0042990932 0.0025106053 0.0046265652 + 891200 0.0059266684 0.0024555351 0.0053725672 + 891300 0.0040845397 0.0027426637 0.004753023 + 891400 0.0066876888 0.002646601 0.0059381979 + 891500 0.0054102572 0.0025001104 0.0051629714 + 891600 0.0049889697 0.0024447005 0.0049002091 + 891700 0.0037618031 0.0022549932 0.0041065057 + 891800 0.0035481744 0.0023547885 0.0041011556 + 891900 0.004449855 0.0021268917 0.0043170547 + 892000 0.0052946247 0.0018694963 0.0044754444 + 892100 0.0040410843 0.0020859348 0.0040749059 + 892200 0.0031859406 0.0021789853 0.0037470654 + 892300 0.0041546901 0.001770897 0.0038157836 + 892400 0.0051183366 0.0016918711 0.0042110524 + 892500 0.0035611444 0.0017684996 0.0035212504 + 892600 0.0044820746 0.0017652825 0.0039713036 + 892700 0.0047003108 0.0018555434 0.0041689776 + 892800 0.0063793262 0.0019634839 0.0051033085 + 892900 0.0050787255 0.0021953698 0.004695055 + 893000 0.0058979252 0.0024585912 0.0053614762 + 893100 0.005337962 0.0025574685 0.0051847467 + 893200 0.0029753717 0.0025515256 0.0040159664 + 893300 0.0041818094 0.002072348 0.0041305823 + 893400 0.0057482722 0.001823827 0.0046530548 + 893500 0.0050442951 0.0018506098 0.0043333488 + 893600 0.0035907864 0.002215258 0.0039825982 + 893700 0.004464363 0.0024568576 0.0046541613 + 893800 0.0055204461 0.0020533916 0.0047704861 + 893900 0.003363737 0.0022169955 0.0038725848 + 894000 0.0057091582 0.0019435341 0.0047535104 + 894100 0.0044225806 0.0019489307 0.0041256696 + 894200 0.0045870162 0.0017225125 0.0039801845 + 894300 0.004569446 0.0015357668 0.003784791 + 894400 0.0048037863 0.0016672496 0.0040316132 + 894500 0.0055513719 0.0017675592 0.004499875 + 894600 0.0049971638 0.0022585899 0.0047181315 + 894700 0.0041397949 0.0024203815 0.0044579369 + 894800 0.0061296066 0.0019149874 0.0049319032 + 894900 0.0044727222 0.0021619562 0.0043633741 + 895000 0.0055172206 0.0019612157 0.0046767228 + 895100 0.006474394 0.001983889 0.0051705049 + 895200 0.0066302238 0.0018369417 0.005100255 + 895300 0.0045781591 0.0020163795 0.0042696922 + 895400 0.004924365 0.0018940856 0.0043177965 + 895500 0.0047538134 0.002493375 0.0048331426 + 895600 0.0055543999 0.0027981961 0.0055320023 + 895700 0.0048477671 0.0024999227 0.0048859331 + 895800 0.0039817476 0.0020146088 0.0039743751 + 895900 0.0039379248 0.0018255828 0.0037637802 + 896000 0.0044390406 0.0020483397 0.00423318 + 896100 0.0045997363 0.0022489978 0.0045129306 + 896200 0.0054121129 0.0019130071 0.0045767814 + 896300 0.0062645971 0.0017611681 0.0048445245 + 896400 0.0043328878 0.0024713067 0.0046038999 + 896500 0.0043473212 0.0026651805 0.0048048777 + 896600 0.005137327 0.002545059 0.0050735872 + 896700 0.0045453051 0.0025037594 0.0047409017 + 896800 0.0051890299 0.0022104342 0.0047644098 + 896900 0.0033269203 0.00258318 0.0042206486 + 897000 0.005664746 0.0029572318 0.005745349 + 897100 0.0054757227 0.0027971872 0.0054922694 + 897200 0.0054973653 0.0020999322 0.0048056667 + 897300 0.0059167732 0.0019762244 0.0048883862 + 897400 0.0056448731 0.0020488708 0.0048272068 + 897500 0.0073239286 0.0020755737 0.0056803198 + 897600 0.0051859184 0.0022607462 0.0048131904 + 897700 0.0064476602 0.0020369783 0.005210436 + 897800 0.0045391759 0.0020223656 0.0042564913 + 897900 0.005495195 0.0021178249 0.0048224912 + 898000 0.0063620003 0.00221803 0.005349327 + 898100 0.004936327 0.0026882594 0.0051178579 + 898200 0.0064859882 0.0022600013 0.0054523236 + 898300 0.0048513829 0.0024263577 0.0048141477 + 898400 0.0051470919 0.0028008482 0.0053341825 + 898500 0.0044262625 0.0032755229 0.005454074 + 898600 0.005760994 0.0028076731 0.0056431624 + 898700 0.0044245701 0.0024642021 0.0046419202 + 898800 0.004831267 0.0021018413 0.0044797306 + 898900 0.0054885659 0.0023902317 0.0050916352 + 899000 0.0040741352 0.0023403177 0.0043455561 + 899100 0.0047377862 0.0021322023 0.0044640814 + 899200 0.0062227686 0.0020418595 0.0051046285 + 899300 0.0054801242 0.0022262928 0.0049235414 + 899400 0.0060651603 0.0020302209 0.005015417 + 899500 0.0061036074 0.0024865451 0.0054906644 + 899600 0.0050413767 0.0027278271 0.0052091297 + 899700 0.0042025724 0.0022399043 0.0043083579 + 899800 0.005808872 0.001767706 0.0046267602 + 899900 0.0042887066 0.0020483386 0.0041591864 + 900000 0.0041917722 0.0021364835 0.0041996214 + 900100 0.0053420365 0.0017004785 0.004329762 + 900200 0.00415238 0.0017787872 0.0038225367 + 900300 0.0046632434 0.0020132917 0.0043084818 + 900400 0.0057630955 0.0022871326 0.0051236561 + 900500 0.0067649326 0.0019033736 0.0052329889 + 900600 0.0060301219 0.0018686183 0.0048365689 + 900700 0.0048145621 0.0024524544 0.0048221217 + 900800 0.0059163234 0.0021581181 0.0050700585 + 900900 0.0044674979 0.0020258677 0.0042247143 + 901000 0.0042272722 0.0024485912 0.0045292017 + 901100 0.0064909475 0.0022540921 0.0054488553 + 901200 0.0048200979 0.0025596015 0.0049319934 + 901300 0.0040143832 0.0022668264 0.0042426557 + 901400 0.0049204181 0.0021101881 0.0045319563 + 901500 0.0039857744 0.0024226095 0.0043843579 + 901600 0.0070020822 0.0024922533 0.0059385906 + 901700 0.0048454022 0.0026210768 0.0050059232 + 901800 0.0047913524 0.0025609599 0.0049192037 + 901900 0.0043066118 0.0025170182 0.0046366787 + 902000 0.0064053039 0.0020525186 0.0052051291 + 902100 0.0045601859 0.002230444 0.0044749105 + 902200 0.0049520252 0.0024600463 0.0048973712 + 902300 0.0050135732 0.0020308522 0.0044984702 + 902400 0.004909696 0.0016579245 0.0040744156 + 902500 0.0054031805 0.0016660084 0.0043253863 + 902600 0.0042492433 0.0018904717 0.0039818962 + 902700 0.0061794135 0.0018594397 0.0049008697 + 902800 0.0031563856 0.0022846115 0.003838145 + 902900 0.0041926338 0.0021324935 0.0041960554 + 903000 0.0049067661 0.001727202 0.0041422509 + 903100 0.0053576833 0.001476138 0.0041131228 + 903200 0.005433155 0.0018628086 0.0045369396 + 903300 0.0044738824 0.0019234322 0.0041254211 + 903400 0.0056344598 0.0016142898 0.0043875005 + 903500 0.0044453518 0.0017783756 0.0039663222 + 903600 0.0035860224 0.0024402376 0.004205233 + 903700 0.0051368577 0.0023653566 0.0048936538 + 903800 0.0058476393 0.0016433414 0.0045214764 + 903900 0.0055669941 0.0019317653 0.0046717702 + 904000 0.0052096835 0.0021048981 0.0046690391 + 904100 0.0047317777 0.0018316583 0.0041605802 + 904200 0.0060002639 0.0018468035 0.0048000585 + 904300 0.0040764281 0.0021458098 0.0041521768 + 904400 0.0070332977 0.0016215836 0.0050832848 + 904500 0.0076641821 0.0014163473 0.0051885619 + 904600 0.0055787443 0.0023374203 0.0050832085 + 904700 0.0052841096 0.0024650056 0.0050657783 + 904800 0.005072283 0.001878347 0.0043748613 + 904900 0.0056782411 0.0017504915 0.0045452508 + 905000 0.0041034898 0.0018211408 0.0038408271 + 905100 0.004284038 0.0019840178 0.0040925678 + 905200 0.0057523898 0.0019799254 0.0048111798 + 905300 0.0053783507 0.0021764289 0.0048235859 + 905400 0.0056587172 0.0026637349 0.0054488847 + 905500 0.0056014896 0.003046413 0.0058033962 + 905600 0.0044035472 0.0038276114 0.0059949823 + 905700 0.0046671948 0.0038826027 0.0061797377 + 905800 0.0050125583 0.003193247 0.0056603655 + 905900 0.005977246 0.0027080366 0.0056499624 + 906000 0.0034481391 0.0028134255 0.0045105565 + 906100 0.0049909812 0.0027230573 0.0051795559 + 906200 0.0055224287 0.0023651339 0.0050832043 + 906300 0.0045266166 0.001853458 0.0040814021 + 906400 0.0035160019 0.0022892824 0.0040198146 + 906500 0.0033596067 0.0021799407 0.0038334971 + 906600 0.0036713123 0.0023158212 0.0041227953 + 906700 0.0044450677 0.0022119196 0.0043997263 + 906800 0.0039429055 0.0025050385 0.0044456873 + 906900 0.0046178418 0.0025804452 0.0048532892 + 907000 0.0042767448 0.002189401 0.0042943613 + 907100 0.0060766091 0.0016894069 0.0046802379 + 907200 0.0049601118 0.0018341432 0.0042754482 + 907300 0.0049768906 0.0019376799 0.0043872433 + 907400 0.004962911 0.0016542677 0.0040969505 + 907500 0.004815539 0.0019045592 0.0042747073 + 907600 0.0047191671 0.001759932 0.004082647 + 907700 0.0049474766 0.0014515635 0.0038866496 + 907800 0.0045766273 0.0018944389 0.0041469977 + 907900 0.0043705633 0.0018247923 0.0039759289 + 908000 0.0046019189 0.0016539908 0.0039189977 + 908100 0.0033464554 0.0019854184 0.0036325019 + 908200 0.0066964691 0.0018748429 0.0051707613 + 908300 0.0039707247 0.0019124011 0.0038667422 + 908400 0.0045938633 0.0018401347 0.0041011768 + 908500 0.0053718669 0.0019853505 0.0046293162 + 908600 0.0042613102 0.0021322935 0.0042296571 + 908700 0.004359695 0.0022972809 0.0044430683 + 908800 0.0046234079 0.002173199 0.0044487826 + 908900 0.0060738197 0.0023025761 0.0052920342 + 909000 0.0041196769 0.0026203846 0.0046480381 + 909100 0.0045265808 0.0027069095 0.004934836 + 909200 0.0051292828 0.0024671095 0.0049916783 + 909300 0.0051145577 0.002422193 0.0049395144 + 909400 0.0047761491 0.0024188656 0.0047696265 + 909500 0.003928106 0.0019779275 0.0039112922 + 909600 0.0055975408 0.0020939493 0.0048489889 + 909700 0.0055283996 0.0026174903 0.0053384995 + 909800 0.00686774 0.0020714194 0.0054516352 + 909900 0.0059177704 0.0021055463 0.0050181989 + 910000 0.0051034783 0.0022876334 0.0047995017 + 910100 0.0041206957 0.0026873841 0.0047155391 + 910200 0.0037730004 0.0027169581 0.0045739817 + 910300 0.0060666821 0.0023320838 0.0053180289 + 910400 0.0062811084 0.0021287008 0.0052201838 + 910500 0.0056483527 0.0022033969 0.0049834455 + 910600 0.0058270325 0.0022818269 0.0051498195 + 910700 0.0034147061 0.0022701182 0.0039507938 + 910800 0.0044193154 0.0021681536 0.0043432855 + 910900 0.0057858692 0.0019750787 0.0048228111 + 911000 0.0052705574 0.0022856094 0.0048797118 + 911100 0.0051312214 0.0023249692 0.0048504922 + 911200 0.0044973043 0.0022585285 0.0044720454 + 911300 0.006063427 0.0021085581 0.005092901 + 911400 0.0057825791 0.0022432827 0.0050893959 + 911500 0.0043329098 0.0027507593 0.0048833633 + 911600 0.0051328605 0.002696259 0.0052225888 + 911700 0.0062843189 0.0027295991 0.0058226624 + 911800 0.0055915291 0.0028727171 0.0056247978 + 911900 0.0062444112 0.002500619 0.0055740401 + 912000 0.0056461993 0.0027046381 0.0054836269 + 912100 0.0059050094 0.0030092083 0.0059155801 + 912200 0.0058481489 0.0024705787 0.0053489645 + 912300 0.0047092182 0.0023035004 0.0046213187 + 912400 0.0046506305 0.0023664881 0.0046554703 + 912500 0.0042369296 0.0021955463 0.0042809101 + 912600 0.0030943403 0.002479325 0.0040023206 + 912700 0.004548255 0.0022396193 0.0044782135 + 912800 0.0041876673 0.0018742801 0.0039353976 + 912900 0.0042010358 0.0021970494 0.0042647467 + 913000 0.0039634691 0.0023966575 0.0043474275 + 913100 0.0034384956 0.0025796824 0.0042720669 + 913200 0.0066742968 0.0027322256 0.0060172311 + 913300 0.0037723401 0.0030352932 0.0048919919 + 913400 0.0049788367 0.0029329178 0.005383439 + 913500 0.0050290452 0.0026816536 0.0051568868 + 913600 0.0045626178 0.0026826872 0.0049283506 + 913700 0.0038588012 0.002137312 0.0040365657 + 913800 0.0050345949 0.0023175874 0.004795552 + 913900 0.0047502795 0.0021036862 0.0044417144 + 914000 0.0044192504 0.0020587357 0.0042338355 + 914100 0.0044453336 0.0021239335 0.0043118711 + 914200 0.0043457239 0.0023683157 0.0045072266 + 914300 0.0054821298 0.0022064565 0.0049046923 + 914400 0.005994105 0.0016856105 0.0046358341 + 914500 0.0047956069 0.0021228839 0.0044832217 + 914600 0.0064425124 0.00241981 0.0055907341 + 914700 0.004583392 0.0025388147 0.0047947029 + 914800 0.0053379143 0.0027172833 0.005344538 + 914900 0.0056964269 0.0029735479 0.005777258 + 915000 0.0045080911 0.0027395684 0.0049583945 + 915100 0.0038069592 0.0023550161 0.0042287539 + 915200 0.0046286159 0.0018115949 0.0040897418 + 915300 0.0051043879 0.0020276543 0.0045399702 + 915400 0.003172412 0.0024626438 0.0040240653 + 915500 0.0040227523 0.0024397717 0.0044197201 + 915600 0.0072968152 0.002155763 0.0057471642 + 915700 0.004303084 0.0022494778 0.0043674019 + 915800 0.0052174779 0.0025366596 0.005104637 + 915900 0.0055963083 0.0026991698 0.0054536028 + 916000 0.0053598702 0.0029504799 0.005588541 + 916100 0.0049753265 0.0031390158 0.0055878093 + 916200 0.0070843553 0.0027097586 0.0061965898 + 916300 0.0059069554 0.0026426113 0.0055499409 + 916400 0.0052544534 0.0030975023 0.0056836786 + 916500 0.0050948323 0.0036593801 0.0061669928 + 916600 0.0066162331 0.0039288046 0.0071852318 + 916700 0.0053037906 0.0037001688 0.0063106283 + 916800 0.0058423211 0.0033425896 0.0062181071 + 916900 0.0073390043 0.0032091367 0.0068213029 + 917000 0.0049771665 0.0027750643 0.0052247634 + 917100 0.0053257719 0.0022393159 0.0048605943 + 917200 0.0060616274 0.0024190565 0.0054025138 + 917300 0.0066858298 0.0026052085 0.0058958904 + 917400 0.0056445145 0.0024771158 0.0052552753 + 917500 0.0049571548 0.0020639598 0.0045038094 + 917600 0.0049920379 0.001887216 0.0043442346 + 917700 0.0041929313 0.0024512378 0.0045149461 + 917800 0.006311993 0.0027059867 0.0058126708 + 917900 0.004183206 0.0029623601 0.0050212818 + 918000 0.003846379 0.0030945255 0.0049876652 + 918100 0.0057322137 0.0026456898 0.0054670137 + 918200 0.0055828132 0.0022751624 0.0050229533 + 918300 0.005410878 0.0024477511 0.0051109176 + 918400 0.0048241678 0.0026690499 0.005043445 + 918500 0.0060624749 0.0020866042 0.0050704786 + 918600 0.0062148799 0.0018891448 0.004948031 + 918700 0.0050370204 0.0019971801 0.0044763386 + 918800 0.0062960215 0.0023723127 0.0054711358 + 918900 0.0040786604 0.0026970552 0.0047045208 + 919000 0.0057120653 0.0024597086 0.0052711157 + 919100 0.0033452456 0.0019129039 0.003559392 + 919200 0.004320109 0.0022468364 0.00437314 + 919300 0.0057067538 0.0026871317 0.0054959246 + 919400 0.0045595104 0.00319299 0.0054371241 + 919500 0.0053637306 0.0030455807 0.0056855418 + 919600 0.0049156901 0.0025858498 0.005005291 + 919700 0.0051454119 0.0022286936 0.004761201 + 919800 0.0044944316 0.0019831564 0.0041952594 + 919900 0.0056763136 0.0021537537 0.0049475643 + 920000 0.005948842 0.0024163542 0.0053442999 + 920100 0.0040019118 0.002423536 0.0043932269 + 920200 0.005151228 0.0024604368 0.0049958068 + 920300 0.0053495065 0.0026202217 0.0052531819 + 920400 0.0066781473 0.0025088107 0.0057957113 + 920500 0.0051892439 0.002991958 0.005546039 + 920600 0.0042328157 0.0028094671 0.0048928061 + 920700 0.0057032286 0.0024490479 0.0052561057 + 920800 0.0059213699 0.0023668369 0.0052812611 + 920900 0.0057739435 0.0019157896 0.0047576524 + 921000 0.0037075537 0.0015371493 0.0033619609 + 921100 0.0030594242 0.0020596462 0.0035654565 + 921200 0.004212059 0.0023118854 0.0043850082 + 921300 0.0038434645 0.0021787667 0.0040704718 + 921400 0.0046629752 0.0021212198 0.0044162779 + 921500 0.0052508945 0.0020007995 0.0045852241 + 921600 0.0032887514 0.0019832992 0.0036019815 + 921700 0.0042578356 0.0020510336 0.0041466871 + 921800 0.0050398771 0.0019196867 0.0044002512 + 921900 0.0055026457 0.0018312269 0.0045395603 + 922000 0.0042670721 0.002234489 0.0043346885 + 922100 0.0045730734 0.0024925429 0.0047433524 + 922200 0.0041734043 0.0026368236 0.004690921 + 922300 0.0039979664 0.0026026131 0.0045703621 + 922400 0.005252319 0.0023605738 0.0049456995 + 922500 0.0041658553 0.002272125 0.0043225069 + 922600 0.0054958788 0.002173176 0.0048781788 + 922700 0.0061784761 0.0021570855 0.0051980542 + 922800 0.0060103942 0.0021422133 0.0051004542 + 922900 0.0041879292 0.0022539021 0.0043151485 + 923000 0.003535376 0.0027196989 0.0044597668 + 923100 0.0051297455 0.0029739745 0.0054987711 + 923200 0.0040690885 0.0036283332 0.0056310877 + 923300 0.0035981651 0.0037877734 0.0055587452 + 923400 0.0053241579 0.0027443176 0.0053648016 + 923500 0.0051511312 0.0026622469 0.0051975693 + 923600 0.0038058682 0.0025845211 0.0044577219 + 923700 0.0046278594 0.0023204832 0.0045982577 + 923800 0.0048332194 0.0026406177 0.0050194679 + 923900 0.0040149424 0.0025583441 0.0045344486 + 924000 0.0046906991 0.0022207037 0.0045294072 + 924100 0.0044156294 0.002828208 0.0050015256 + 924200 0.0048762272 0.0030483145 0.0054483326 + 924300 0.0080754981 0.0025911319 0.0065657911 + 924400 0.0050244501 0.002820739 0.0052937105 + 924500 0.0038225804 0.002818311 0.0046997373 + 924600 0.0042033114 0.0026089651 0.0046777824 + 924700 0.0057450926 0.0026266715 0.0054543342 + 924800 0.0059238521 0.0030570738 0.0059727198 + 924900 0.0051283715 0.0032506449 0.0057747652 + 925000 0.0052716584 0.0023863316 0.0049809759 + 925100 0.0047773212 0.0020251345 0.0043764723 + 925200 0.0041737531 0.0024322038 0.0044864729 + 925300 0.0044246933 0.002768516 0.0049462947 + 925400 0.0059104349 0.0025291227 0.0054381649 + 925500 0.0049053634 0.0019662695 0.0043806281 + 925600 0.0049689067 0.0018776896 0.0043233233 + 925700 0.0061993202 0.0022325223 0.0052837501 + 925800 0.0049045771 0.0022213381 0.0046353096 + 925900 0.0045901075 0.0024474086 0.0047066022 + 926000 0.0032032168 0.0029021561 0.0044787394 + 926100 0.0047464691 0.0029527108 0.0052888635 + 926200 0.0055226692 0.0025699743 0.0052881631 + 926300 0.0050931739 0.0023572425 0.004864039 + 926400 0.0050666756 0.0025076044 0.0050013588 + 926500 0.0060983438 0.0018575716 0.0048591002 + 926600 0.0070369613 0.0018387821 0.0053022865 + 926700 0.004790143 0.0024301001 0.0047877486 + 926800 0.0056776198 0.003027284 0.0058217375 + 926900 0.0052782695 0.0026781552 0.0052760534 + 927000 0.0064028501 0.0025474992 0.005698902 + 927100 0.005098237 0.0026992705 0.005208559 + 927200 0.0049125692 0.0024906806 0.0049085857 + 927300 0.0050709302 0.0024263638 0.0049222123 + 927400 0.0053046668 0.002445864 0.0050567546 + 927500 0.0048762409 0.002520241 0.0049202658 + 927600 0.0062952212 0.0022163214 0.0053147506 + 927700 0.0058713311 0.0020855771 0.0049753729 + 927800 0.00484224 0.0022184662 0.0046017562 + 927900 0.0042055554 0.0022094773 0.0042793991 + 928000 0.0051119611 0.0022818802 0.0047979235 + 928100 0.0037227827 0.0026725548 0.0045048619 + 928200 0.0056753422 0.0023255125 0.005118845 + 928300 0.0048119895 0.0022407986 0.0046091997 + 928400 0.0066309347 0.0021471449 0.0054108081 + 928500 0.0057506646 0.0025542447 0.0053846499 + 928600 0.0044036055 0.002593051 0.0047604505 + 928700 0.0045519803 0.0028466128 0.0050870406 + 928800 0.0056527821 0.0026235145 0.0054057432 + 928900 0.0057253452 0.0023592641 0.0051772075 + 929000 0.0061330074 0.0022942373 0.0053128268 + 929100 0.0054541305 0.0029425765 0.0056270313 + 929200 0.0050516168 0.0031922185 0.0056785612 + 929300 0.0038933737 0.002923185 0.0048394548 + 929400 0.0042267638 0.0024044956 0.0044848559 + 929500 0.0046338262 0.0023569925 0.0046377038 + 929600 0.004855963 0.0020820992 0.0044721435 + 929700 0.0046543957 0.0015832845 0.0038741199 + 929800 0.0056918364 0.0016239214 0.0044253721 + 929900 0.005477249 0.0022330285 0.004928862 + 930000 0.0049072174 0.0027601712 0.0051754422 + 930100 0.0050478913 0.0030517166 0.0055362256 + 930200 0.0056383782 0.0030946544 0.0058697936 + 930300 0.0050229672 0.0031148554 0.0055870971 + 930400 0.0037817665 0.0033508434 0.0052121816 + 930500 0.0051098348 0.0029043348 0.0054193316 + 930600 0.0052301565 0.0022133247 0.0047875423 + 930700 0.0033981485 0.0023477352 0.0040202614 + 930800 0.0045470471 0.0023255838 0.0045635836 + 930900 0.0052001199 0.0026095954 0.0051690294 + 931000 0.0064577268 0.0026381287 0.0058165411 + 931100 0.0042907282 0.0028267436 0.0049385864 + 931200 0.0035055681 0.0029160512 0.004641448 + 931300 0.0052553962 0.0026662148 0.0052528551 + 931400 0.0060823831 0.0028247452 0.0058184182 + 931500 0.0045202609 0.0027248582 0.0049496741 + 931600 0.0059186219 0.0026924976 0.0056055693 + 931700 0.0048264254 0.0026734892 0.0050489954 + 931800 0.0043595215 0.0028193181 0.0049650201 + 931900 0.0048167479 0.0027562625 0.0051270056 + 932000 0.007002518 0.0024511833 0.0058977351 + 932100 0.0037992537 0.0031107282 0.0049806734 + 932200 0.0067126302 0.0028945422 0.0061984149 + 932300 0.004610209 0.0026342887 0.0049033759 + 932400 0.0052430776 0.0027672522 0.0053478295 + 932500 0.0063955171 0.002241014 0.0053888076 + 932600 0.0050670201 0.0018146476 0.0043085716 + 932700 0.0042234903 0.0016016391 0.0036803882 + 932800 0.0041024233 0.0021902094 0.0042093709 + 932900 0.005124469 0.0024670542 0.0049892538 + 933000 0.0044399028 0.0023520526 0.0045373173 + 933100 0.0051807698 0.0020472923 0.0045972024 + 933200 0.0061967881 0.0021521319 0.0052021135 + 933300 0.00437241 0.0028898726 0.0050419181 + 933400 0.0048158902 0.0028798925 0.0052502135 + 933500 0.0051311887 0.0026799801 0.0052054871 + 933600 0.0068360781 0.0023720407 0.0057366729 + 933700 0.0065000989 0.0021761456 0.005375413 + 933800 0.0052513372 0.0029085199 0.0054931625 + 933900 0.0046927068 0.0035885992 0.0058982908 + 934000 0.005141826 0.002537406 0.0050681485 + 934100 0.0053757039 0.0021797338 0.004825588 + 934200 0.0044875983 0.0021010767 0.0043098165 + 934300 0.0057923932 0.002057112 0.0049080556 + 934400 0.003539634 0.0018614409 0.0036036045 + 934500 0.0048629115 0.0017813772 0.0041748415 + 934600 0.0047001369 0.0016350869 0.0039484355 + 934700 0.0037370662 0.0021312356 0.0039705729 + 934800 0.0049865936 0.0022912836 0.0047456226 + 934900 0.0047679903 0.0021616178 0.0045083631 + 935000 0.0043327027 0.0021219578 0.0042544599 + 935100 0.0058022834 0.0020132321 0.0048690435 + 935200 0.0036474558 0.001953819 0.0037490512 + 935300 0.0057597473 0.0018491855 0.0046840611 + 935400 0.0042165154 0.0021022821 0.0041775983 + 935500 0.0046960428 0.0021027694 0.004414103 + 935600 0.0039763821 0.0022639309 0.0042210565 + 935700 0.0052911305 0.0024574989 0.0050617272 + 935800 0.0048476307 0.0022476217 0.004633565 + 935900 0.005413363 0.0017809537 0.0044453433 + 936000 0.0064433749 0.0021087918 0.0052801404 + 936100 0.0043639766 0.0028015241 0.0049494188 + 936200 0.0060618064 0.0027402436 0.005723789 + 936300 0.00594717 0.0025683632 0.005495486 + 936400 0.0051159268 0.0027383144 0.0052563096 + 936500 0.0038651798 0.0024941812 0.0043965744 + 936600 0.006193285 0.0019471787 0.0049954362 + 936700 0.0042080915 0.0022225781 0.0042937481 + 936800 0.0040223867 0.0023745899 0.0043543584 + 936900 0.0048197812 0.0023378734 0.0047101095 + 937000 0.0031668364 0.0026585836 0.0042172609 + 937100 0.0051634363 0.0024809538 0.0050223326 + 937200 0.0062311544 0.0022425738 0.0053094701 + 937300 0.0043128254 0.0023939209 0.0045166397 + 937400 0.0037225137 0.0019736449 0.0038058196 + 937500 0.0068351536 0.001727082 0.0050912592 + 937600 0.0043326211 0.0019377315 0.0040701934 + 937700 0.0045267296 0.0021051691 0.0043331689 + 937800 0.0050589167 0.0017352909 0.0042252265 + 937900 0.0052060664 0.0016068988 0.0041692596 + 938000 0.0042990304 0.0022520078 0.0043679368 + 938100 0.0052475801 0.0023079194 0.0048907128 + 938200 0.0044052039 0.0020837585 0.0042519448 + 938300 0.0041451629 0.0021331489 0.0041733463 + 938400 0.004523871 0.0021254906 0.0043520834 + 938500 0.0052910304 0.0024403812 0.0050445602 + 938600 0.0046161622 0.002448163 0.0047201803 + 938700 0.0069822418 0.0023749902 0.0058115623 + 938800 0.0059608087 0.0022366681 0.0051705037 + 938900 0.0043438808 0.0021018629 0.0042398668 + 939000 0.0046428656 0.0022456193 0.0045307797 + 939100 0.0059846889 0.0024174248 0.0053630139 + 939200 0.0052336594 0.0030814073 0.005657349 + 939300 0.0056661002 0.0035168383 0.006305622 + 939400 0.004427191 0.0034419901 0.0056209982 + 939500 0.0066909193 0.0024250929 0.0057182798 + 939600 0.0056648475 0.0018577468 0.0046459139 + 939700 0.0044368301 0.0021324049 0.0043161572 + 939800 0.0052102776 0.0022828249 0.0048472584 + 939900 0.0057784803 0.0018424029 0.0046864986 + 940000 0.0054536862 0.0018416544 0.0045258906 + 940100 0.0030937018 0.0022041912 0.0037268726 + 940200 0.0054349055 0.0019159445 0.0045909371 + 940300 0.0054124261 0.0022909675 0.004954896 + 940400 0.0045552965 0.0022951016 0.0045371615 + 940500 0.0055008585 0.0018861739 0.0045936276 + 940600 0.0046927907 0.0022485015 0.0045582344 + 940700 0.0061175342 0.0024726269 0.0054836008 + 940800 0.004202996 0.0022847921 0.0043534542 + 940900 0.0065393529 0.0026329137 0.0058515015 + 941000 0.0050254276 0.0025892115 0.0050626642 + 941100 0.0039777349 0.0028100085 0.0047677999 + 941200 0.0037253763 0.0027129149 0.0045464986 + 941300 0.0045773355 0.0025333914 0.0047862987 + 941400 0.0044624405 0.0022348387 0.0044311962 + 941500 0.0050039354 0.0021555214 0.0046183958 + 941600 0.0049408619 0.0023537695 0.0047856 + 941700 0.0061528053 0.0022463079 0.0052746417 + 941800 0.0042181471 0.0021466886 0.0042228079 + 941900 0.0043224806 0.002190112 0.0043175829 + 942000 0.003380628 0.0019786369 0.0036425397 + 942100 0.0040337261 0.0018693301 0.0038546796 + 942200 0.0055407963 0.0017928489 0.0045199596 + 942300 0.00521851 0.0016426074 0.0042110928 + 942400 0.0035034165 0.0015657275 0.0032900653 + 942500 0.0045107976 0.0016203927 0.0038405509 + 942600 0.0052405026 0.0023007467 0.0048800566 + 942700 0.0047697183 0.0025985395 0.0049461352 + 942800 0.0045476421 0.0025038338 0.0047421264 + 942900 0.0066991869 0.0025411377 0.0058383938 + 943000 0.0053256396 0.0026705977 0.0052918109 + 943100 0.003621851 0.0027317137 0.0045143434 + 943200 0.0051288224 0.0028054444 0.0053297867 + 943300 0.0059278052 0.0027199325 0.0056375241 + 943400 0.0050664558 0.002571866 0.0050655122 + 943500 0.0043987569 0.0022288141 0.0043938273 + 943600 0.0055852297 0.0018073149 0.0045562951 + 943700 0.0051847526 0.0016124523 0.0041643227 + 943800 0.0062763246 0.0014874661 0.0045765946 + 943900 0.007831557 0.0020475722 0.0059021667 + 944000 0.0042912051 0.0029470757 0.0050591532 + 944100 0.0048956783 0.0027739785 0.0051835702 + 944200 0.0049659248 0.0024382669 0.004882433 + 944300 0.0041268149 0.0025049891 0.0045361558 + 944400 0.0049556934 0.0024802493 0.0049193796 + 944500 0.0038404218 0.0022275687 0.0041177763 + 944600 0.004759762 0.0023149804 0.0046576758 + 944700 0.003353855 0.0021403785 0.0037911041 + 944800 0.0038316685 0.0022816553 0.0041675546 + 944900 0.0049201012 0.0023964179 0.0048180302 + 945000 0.0050218196 0.0024058153 0.0048774922 + 945100 0.0040371277 0.0021579791 0.0041450029 + 945200 0.004802601 0.0018972421 0.0042610223 + 945300 0.0053181878 0.0018377338 0.0044552794 + 945400 0.002774182 0.0018746929 0.0032401106 + 945500 0.0060955724 0.0018988392 0.0048990037 + 945600 0.0040721932 0.0022335236 0.0042378062 + 945700 0.004438103 0.0023237851 0.004508164 + 945800 0.0051884124 0.0021733537 0.0047270255 + 945900 0.0032768907 0.0024562721 0.0040691167 + 946000 0.0055445854 0.0029726908 0.0057016665 + 946100 0.0040358051 0.0032302616 0.0052166344 + 946200 0.0050318868 0.0027650909 0.0052417227 + 946300 0.0055853094 0.0025245556 0.005273575 + 946400 0.0071347373 0.0029957017 0.0065073302 + 946500 0.0051162577 0.0038308286 0.0063489866 + 946600 0.0058325164 0.0043868597 0.0072575514 + 946700 0.0061111331 0.0034209343 0.0064287576 + 946800 0.0078680996 0.0025314299 0.0064040102 + 946900 0.0050528207 0.0026700614 0.0051569966 + 947000 0.0048330216 0.0034117973 0.0057905501 + 947100 0.004624695 0.0030929475 0.0053691646 + 947200 0.0042726555 0.00236724 0.0044701876 + 947300 0.0060348689 0.0017398769 0.004710164 + 947400 0.0048938658 0.0019178436 0.0043265432 + 947500 0.0063735976 0.002839243 0.005976248 + 947600 0.0043579398 0.0025117934 0.0046567169 + 947700 0.006717336 0.0020960784 0.0054022673 + 947800 0.003465116 0.0019985364 0.0037040232 + 947900 0.0058650975 0.0020234897 0.0049102174 + 948000 0.0049257553 0.0022069317 0.0046313269 + 948100 0.0038186141 0.0022964781 0.0041759522 + 948200 0.0050111579 0.0021104511 0.0045768804 + 948300 0.0032171137 0.0020940331 0.0036774562 + 948400 0.0054056193 0.0019917874 0.0046523656 + 948500 0.0062224969 0.0017077834 0.0047704186 + 948600 0.0052477952 0.0015879005 0.0041707997 + 948700 0.0041400917 0.0020733234 0.0041110248 + 948800 0.0051304587 0.0022764196 0.0048015672 + 948900 0.0046144637 0.0022654908 0.0045366722 + 949000 0.0060675396 0.0022942677 0.0052806348 + 949100 0.0044897531 0.0023463816 0.0045561819 + 949200 0.0049509486 0.0026853832 0.0051221783 + 949300 0.0061060287 0.0030100737 0.0060153848 + 949400 0.006130108 0.0030469915 0.006064154 + 949500 0.0064528392 0.0026823296 0.0058583364 + 949600 0.0055512213 0.0026618394 0.0053940811 + 949700 0.0061097374 0.0021954619 0.0052025983 + 949800 0.0051574025 0.0021203296 0.0046587387 + 949900 0.0032987063 0.0025513791 0.0041749611 + 950000 0.0052287899 0.0019912283 0.0045647733 + 950100 0.0049102761 0.0016561234 0.0040728999 + 950200 0.0052563362 0.0016456956 0.0042327985 + 950300 0.0039102131 0.0019581877 0.0038827457 + 950400 0.0058400157 0.0023727343 0.0052471171 + 950500 0.0056835899 0.0027487682 0.0055461601 + 950600 0.0056658571 0.002894755 0.005683419 + 950700 0.0055111602 0.0027801129 0.005492637 + 950800 0.0041420093 0.0028489361 0.0048875813 + 950900 0.0060755042 0.0028081964 0.0057984836 + 951000 0.0043120202 0.0031820963 0.0053044187 + 951100 0.0050844826 0.0029436207 0.0054461395 + 951200 0.0043623893 0.0024947531 0.0046418665 + 951300 0.0050892523 0.0026408234 0.0051456898 + 951400 0.0067653056 0.0029331053 0.0062629041 + 951500 0.0046851223 0.0033934423 0.005699401 + 951600 0.0036482855 0.0033728531 0.0051684937 + 951700 0.0053010362 0.0032247545 0.0058338583 + 951800 0.0048395167 0.0036315834 0.006013533 + 951900 0.0050960735 0.0038334192 0.0063416429 + 952000 0.0040192424 0.0031068683 0.0050850892 + 952100 0.0057657857 0.0027311967 0.0055690444 + 952200 0.004538001 0.002773444 0.0050069913 + 952300 0.0052673365 0.002912185 0.0055047022 + 952400 0.0064861336 0.003172013 0.0063644069 + 952500 0.0054791011 0.0029210535 0.0056177986 + 952600 0.0067987713 0.0028771526 0.0062234229 + 952700 0.005974488 0.0028515029 0.0057920713 + 952800 0.0068480767 0.0025188217 0.0058893594 + 952900 0.0047438999 0.002485112 0.0048200002 + 953000 0.0068326315 0.0028080094 0.0061709452 + 953100 0.0046717584 0.0028290936 0.0051284746 + 953200 0.0035479391 0.0028000619 0.0045463132 + 953300 0.0055773791 0.0030097582 0.0057548745 + 953400 0.0059363142 0.0032784386 0.0062002182 + 953500 0.0056272915 0.0034351563 0.0062048389 + 953600 0.0038299214 0.003025445 0.0049104845 + 953700 0.0072548661 0.0026030746 0.006173829 + 953800 0.0061603681 0.0028046327 0.0058366888 + 953900 0.0055464421 0.0024194409 0.0051493304 + 954000 0.00633578 0.0023126947 0.0054310864 + 954100 0.0048301483 0.0026652063 0.005042545 + 954200 0.0034047252 0.0024356395 0.0041114027 + 954300 0.0038129594 0.0022654954 0.0041421864 + 954400 0.0048720919 0.0026744576 0.0050724404 + 954500 0.0049893396 0.0027979152 0.0052536057 + 954600 0.0057412157 0.0025317718 0.0053575264 + 954700 0.0040208445 0.002203056 0.0041820654 + 954800 0.0054814906 0.0018720323 0.0045699535 + 954900 0.0047218583 0.0018126325 0.0041366721 + 955000 0.0055011696 0.0022302791 0.0049378861 + 955100 0.0052384633 0.0021141285 0.0046924346 + 955200 0.0046415544 0.0022851334 0.0045696484 + 955300 0.0052135274 0.002277011 0.0048430441 + 955400 0.0043963723 0.0025256492 0.0046894887 + 955500 0.003846713 0.0023362256 0.0042295297 + 955600 0.0039494673 0.002094189 0.0040380674 + 955700 0.0063899968 0.0015757988 0.0047208753 + 955800 0.0049743688 0.0017680817 0.0042164038 + 955900 0.0045021307 0.0019607462 0.0041766387 + 956000 0.0049385493 0.0024105161 0.0048412083 + 956100 0.0039500822 0.002189101 0.0041332822 + 956200 0.0060811596 0.0021681473 0.005161218 + 956300 0.005628396 0.0024544626 0.0052246887 + 956400 0.0047126221 0.0022090529 0.0045285466 + 956500 0.0055173012 0.0020619527 0.0047774994 + 956600 0.0052170098 0.0019516047 0.0045193517 + 956700 0.0058360698 0.002239956 0.0051123966 + 956800 0.0048090784 0.0025588454 0.0049258136 + 956900 0.003594931 0.0029422396 0.0047116196 + 957000 0.0055555335 0.0029132276 0.0056475917 + 957100 0.0069352122 0.0026443147 0.0060577395 + 957200 0.0039736857 0.0022018026 0.004157601 + 957300 0.0043944511 0.002212534 0.0043754279 + 957400 0.0055295107 0.0021741388 0.0048956948 + 957500 0.0039852773 0.0019940025 0.0039555062 + 957600 0.0047112142 0.0020116963 0.004330497 + 957700 0.0051884531 0.0020372776 0.0045909693 + 957800 0.0061859137 0.0025436691 0.0055882985 + 957900 0.0043003554 0.0026838986 0.0048004798 + 958000 0.0048632272 0.0026650965 0.0050587161 + 958100 0.0047237471 0.0027154956 0.0050404649 + 958200 0.004979077 0.0022163736 0.0046670131 + 958300 0.0045889307 0.0019513039 0.0042099183 + 958400 0.005790562 0.0025983195 0.0054483617 + 958500 0.0037456551 0.0026717825 0.0045153471 + 958600 0.0037374404 0.0020216229 0.0038611443 + 958700 0.0037323683 0.001969528 0.003806553 + 958800 0.0042273514 0.0014518741 0.0035325236 + 958900 0.0043098196 0.0017684281 0.0038896674 + 959000 0.0056458922 0.0022281857 0.0050070232 + 959100 0.0063724224 0.0025851078 0.0057215345 + 959200 0.0063686964 0.0022009826 0.0053355754 + 959300 0.0059344372 0.0023047435 0.0052255993 + 959400 0.0045083051 0.0025677903 0.0047867218 + 959500 0.0058597729 0.0026858088 0.0055699158 + 959600 0.0055782702 0.0022321446 0.0049776995 + 959700 0.0050130231 0.0022735076 0.0047408549 + 959800 0.0048238353 0.0018602921 0.0042345235 + 959900 0.00661553 0.0018380015 0.0050940827 + 960000 0.0033551664 0.0021628656 0.0038142365 + 960100 0.0041817224 0.0021001705 0.004158362 + 960200 0.004548918 0.0019667416 0.0042056622 + 960300 0.0035620969 0.0024447524 0.004197972 + 960400 0.0038908763 0.0026212194 0.0045362601 + 960500 0.005831879 0.0024468969 0.0053172749 + 960600 0.0048074682 0.0027166128 0.0050827886 + 960700 0.0039833739 0.0026169123 0.0045774791 + 960800 0.0060456346 0.0028528319 0.0058284177 + 960900 0.0051347215 0.0033753033 0.005902549 + 961000 0.0056692781 0.0038911803 0.0066815281 + 961100 0.0050415318 0.0036594519 0.0061408308 + 961200 0.0050833497 0.0034565846 0.0059585457 + 961300 0.0041820896 0.0039830906 0.0060414628 + 961400 0.0043978665 0.0037522314 0.0059168063 + 961500 0.0057236011 0.0033407056 0.0061577905 + 961600 0.0043905252 0.003477246 0.0056382076 + 961700 0.0053006981 0.0030882922 0.0056972296 + 961800 0.0048670496 0.0029627196 0.0053582206 + 961900 0.0053506268 0.002848965 0.0054824766 + 962000 0.0063577707 0.0028437102 0.0059729255 + 962100 0.0062930754 0.0023526109 0.0054499839 + 962200 0.0057442991 0.0021947195 0.0050219917 + 962300 0.0064988511 0.0021596896 0.0053583429 + 962400 0.0052910983 0.001943272 0.0045474844 + 962500 0.0047105574 0.0017216339 0.0040401114 + 962600 0.0037427834 0.0021001021 0.0039422533 + 962700 0.0039758232 0.0023889489 0.0043457994 + 962800 0.0056261432 0.0022548604 0.0050239778 + 962900 0.0045987811 0.0020505425 0.0043140051 + 963000 0.0049779223 0.0018664446 0.0043165158 + 963100 0.0070376887 0.0018459503 0.0053098127 + 963200 0.0046833922 0.0019341507 0.0042392578 + 963300 0.0042735983 0.0021516761 0.0042550878 + 963400 0.0048369848 0.002149957 0.0045306604 + 963500 0.0043767749 0.0022949989 0.0044491928 + 963600 0.0055391754 0.0023341139 0.0050604269 + 963700 0.0046213332 0.0024041639 0.0046787263 + 963800 0.0046922772 0.0023676483 0.0046771284 + 963900 0.004153204 0.0021342763 0.0041784314 + 964000 0.0052875685 0.0018726357 0.0044751109 + 964100 0.004326333 0.0024115831 0.0045409502 + 964200 0.0063897553 0.0021475366 0.0052924943 + 964300 0.0054193816 0.0023284356 0.0049957875 + 964400 0.0050141434 0.0024139679 0.0048818666 + 964500 0.0040371901 0.0024621087 0.0044491631 + 964600 0.0038907854 0.0026947947 0.0046097906 + 964700 0.0052096474 0.0022967198 0.0048608432 + 964800 0.0049516861 0.0022575097 0.0046946677 + 964900 0.0040273102 0.0022363905 0.0042185822 + 965000 0.0044173283 0.0022792882 0.004453442 + 965100 0.00446887 0.0022216162 0.0044211382 + 965200 0.0041350782 0.0021195251 0.0041547589 + 965300 0.003901114 0.0021926107 0.0041126902 + 965400 0.0043630964 0.0026161672 0.0047636288 + 965500 0.0045378054 0.0032256686 0.0054591197 + 965600 0.0048941154 0.0030283091 0.0054371316 + 965700 0.0057868016 0.002400504 0.0052486954 + 965800 0.0045999405 0.0020507299 0.0043147631 + 965900 0.004080903 0.0025946329 0.0046032023 + 966000 0.0049680952 0.0024024378 0.0048476721 + 966100 0.0045905785 0.0017780347 0.00403746 + 966200 0.0034919467 0.0018961322 0.0036148247 + 966300 0.0055175353 0.002354511 0.0050701729 + 966400 0.0050449491 0.0025615649 0.0050446258 + 966500 0.0046839905 0.0021873787 0.0044927802 + 966600 0.0051286088 0.0021902013 0.0047144385 + 966700 0.0050796817 0.0028715693 0.0053717252 + 966800 0.0050743594 0.0029199303 0.0054174666 + 966900 0.0044635829 0.0025349815 0.0047319012 + 967000 0.0057405875 0.0021280568 0.0049535022 + 967100 0.0059068058 0.0019397131 0.0048469691 + 967200 0.0050986118 0.0023787496 0.0048882226 + 967300 0.0049941624 0.0022780389 0.0047361032 + 967400 0.0050301198 0.0022006553 0.0046764174 + 967500 0.0054281152 0.001924989 0.0045966395 + 967600 0.0055042845 0.0018527671 0.0045619071 + 967700 0.0055172367 0.0019661198 0.0046816347 + 967800 0.0059922494 0.0022285445 0.0051778548 + 967900 0.0053927853 0.0025613281 0.0052155896 + 968000 0.0037833208 0.0022827109 0.0041448141 + 968100 0.0055354142 0.0017000515 0.0044245132 + 968200 0.0046079638 0.0016397629 0.003907745 + 968300 0.0038642814 0.0022635909 0.0041655419 + 968400 0.0042174773 0.0027002421 0.0047760317 + 968500 0.0052028175 0.0028617173 0.005422479 + 968600 0.0047564513 0.0022474225 0.0045884884 + 968700 0.0039876019 0.0019738994 0.0039365472 + 968800 0.0056931666 0.0015582885 0.004360394 + 968900 0.0047643391 0.0020793549 0.004424303 + 969000 0.0044013213 0.0025175534 0.0046838287 + 969100 0.0048710414 0.0023548657 0.0047523314 + 969200 0.0035362311 0.0022298021 0.0039702909 + 969300 0.0065761181 0.0018532983 0.0050899815 + 969400 0.0053707508 0.0019228919 0.0045663083 + 969500 0.0047368247 0.0018704082 0.0042018141 + 969600 0.0048424258 0.0019723359 0.0043557173 + 969700 0.0048179689 0.0022518534 0.0046231975 + 969800 0.0056799864 0.0023461999 0.0051418182 + 969900 0.0062692319 0.0023492566 0.0054348942 + 970000 0.0054003425 0.0023271783 0.0049851594 + 970100 0.0063574053 0.0021323502 0.0052613856 + 970200 0.006802899 0.0020025521 0.005350854 + 970300 0.005481144 0.0026123443 0.0053100949 + 970400 0.0054867563 0.0022515158 0.0049520286 + 970500 0.0044620897 0.0018256185 0.0040218032 + 970600 0.0045841586 0.0017761751 0.0040324406 + 970700 0.0062574056 0.0018913878 0.0049712046 + 970800 0.0059838128 0.0016933755 0.0046385333 + 970900 0.0040029713 0.0017244813 0.0036946937 + 971000 0.0049328482 0.0021135393 0.0045414256 + 971100 0.0049802933 0.0023659304 0.0048171685 + 971200 0.0062051729 0.0026184269 0.0056725354 + 971300 0.0053331524 0.0027364852 0.0053613962 + 971400 0.0053187381 0.0028213625 0.0054391789 + 971500 0.0076101929 0.0024044216 0.0061500634 + 971600 0.0046981401 0.0022373645 0.0045497303 + 971700 0.0054684068 0.0017801453 0.0044716268 + 971800 0.0051512731 0.0018126707 0.004348063 + 971900 0.0053899063 0.0021509283 0.0048037727 + 972000 0.0052533465 0.0020617765 0.004647408 + 972100 0.0066526227 0.0020485566 0.0053228943 + 972200 0.0038424674 0.0026390995 0.004530314 + 972300 0.0046064324 0.0023372425 0.004604471 + 972400 0.0065948082 0.0021606903 0.0054065725 + 972500 0.004671679 0.0021208545 0.0044201965 + 972600 0.0041464334 0.0014399456 0.0034807682 + 972700 0.0048389341 0.0013970871 0.00377875 + 972800 0.0033361919 0.0013416909 0.0029837228 + 972900 0.0033501478 0.0015178454 0.0031667463 + 973000 0.004177319 0.0018632652 0.0039192894 + 973100 0.0052238322 0.0023574145 0.0049285194 + 973200 0.0052669139 0.0024310562 0.0050233654 + 973300 0.0043109049 0.0027399221 0.0048616956 + 973400 0.0049375469 0.0029705252 0.0054007241 + 973500 0.0045090595 0.0032140553 0.0054333581 + 973600 0.0036012372 0.00308736 0.0048598439 + 973700 0.0040322096 0.0023760405 0.0043606437 + 973800 0.0049837362 0.0020923803 0.0045453129 + 973900 0.0044300996 0.0023680602 0.0045484999 + 974000 0.0047439065 0.0022864414 0.0046213329 + 974100 0.0050742384 0.0020707058 0.0045681825 + 974200 0.0059322879 0.001955475 0.0048752729 + 974300 0.0037757252 0.0022801636 0.0041385284 + 974400 0.0038964052 0.0023065004 0.0042242623 + 974500 0.003946768 0.0022297553 0.0041723051 + 974600 0.0052472066 0.0020914797 0.0046740892 + 974700 0.0057574955 0.0024939504 0.0053277177 + 974800 0.0049683854 0.0032573583 0.0057027355 + 974900 0.0067358965 0.0032466028 0.0065619269 + 975000 0.0064586613 0.0028270935 0.0060059658 + 975100 0.0059214927 0.0028585747 0.0057730594 + 975200 0.0048155941 0.0027797997 0.005149975 + 975300 0.0055549156 0.0027780836 0.0055121436 + 975400 0.005447297 0.0033663627 0.0060474542 + 975500 0.0052369267 0.0031887808 0.0057663307 + 975600 0.0068308524 0.0030508696 0.0064129298 + 975700 0.0045594562 0.003080082 0.0053241893 + 975800 0.0049653341 0.0029018929 0.0053457683 + 975900 0.0047907316 0.0028571501 0.0052150884 + 976000 0.005442417 0.0027703853 0.0054490749 + 976100 0.0041023992 0.002721175 0.0047403246 + 976200 0.0056522198 0.0023367878 0.0051187397 + 976300 0.0052686628 0.0023081854 0.0049013554 + 976400 0.0040245026 0.0027627095 0.0047435193 + 976500 0.0029703931 0.0024657537 0.003927744 + 976600 0.0038744042 0.0023823389 0.0042892722 + 976700 0.004844994 0.0022510183 0.0046356638 + 976800 0.0051016131 0.0022889363 0.0047998865 + 976900 0.0037197429 0.0029159468 0.0047467578 + 977000 0.0046342198 0.0027337466 0.0050146517 + 977100 0.0061343859 0.0020681056 0.0050873737 + 977200 0.0043998834 0.0019937729 0.0041593405 + 977300 0.0044019197 0.0017957091 0.0039622789 + 977400 0.0065277463 0.0018076326 0.0050205077 + 977500 0.0043562883 0.0028198862 0.0049639969 + 977600 0.006408156 0.0025534828 0.0057074971 + 977700 0.0063873189 0.0025028762 0.0056466347 + 977800 0.0054809089 0.0022845376 0.0049821725 + 977900 0.0042496299 0.0026889857 0.0047806004 + 978000 0.0042504347 0.0029497055 0.0050417163 + 978100 0.0059116672 0.0025654377 0.0054750864 + 978200 0.0063732707 0.0023437558 0.0054805999 + 978300 0.0049918714 0.0021510459 0.0046079826 + 978400 0.0055228477 0.0021307259 0.0048490025 + 978500 0.0047107809 0.0022562573 0.0045748447 + 978600 0.0039246428 0.0026199733 0.0045516335 + 978700 0.004827239 0.0024594011 0.0048353078 + 978800 0.0039717387 0.0022414028 0.0041962429 + 978900 0.005827548 0.0018829325 0.0047511788 + 979000 0.0048928117 0.002111431 0.0045196118 + 979100 0.0046299657 0.0020773071 0.0043561184 + 979200 0.0050679677 0.0021219768 0.0046163672 + 979300 0.0062981566 0.0018407598 0.0049406337 + 979400 0.003711235 0.0018396016 0.0036662251 + 979500 0.0051306059 0.0015330069 0.004058227 + 979600 0.0034966183 0.0014376514 0.0031586432 + 979700 0.0037980799 0.0012101149 0.0030794823 + 979800 0.0050584562 0.0016692327 0.0041589416 + 979900 0.0041092754 0.0018759758 0.0038985097 + 980000 0.0056234697 0.0018474672 0.0046152687 + 980100 0.0039990502 0.0016710327 0.0036393153 + 980200 0.0040111651 0.0018260053 0.0038002506 + 980300 0.0041605783 0.0020454007 0.0040931854 + 980400 0.0050844182 0.0023569629 0.00485945 + 980500 0.0058257257 0.0031162177 0.0059835671 + 980600 0.0041319049 0.0032641418 0.0052978137 + 980700 0.0067055918 0.0024877256 0.005788134 + 980800 0.0034249233 0.0027054452 0.0043911496 + 980900 0.0048446733 0.0028757806 0.0052602682 + 981000 0.0054802774 0.0024680185 0.0051653426 + 981100 0.0071551106 0.0024366666 0.0059583226 + 981200 0.0050907311 0.0026419647 0.0051475589 + 981300 0.0054428754 0.0024943223 0.0051732375 + 981400 0.0051276846 0.0023333708 0.0048571531 + 981500 0.0040197386 0.0025041816 0.0044826467 + 981600 0.0055899569 0.002924182 0.005675489 + 981700 0.0055991454 0.0027554171 0.0055112465 + 981800 0.005145761 0.0026502694 0.0051829486 + 981900 0.0061291229 0.0021750588 0.0051917365 + 982000 0.0035043802 0.0023668943 0.0040917064 + 982100 0.0046100402 0.0022972056 0.0045662098 + 982200 0.0049838512 0.0023734028 0.004826392 + 982300 0.0051026685 0.0023793118 0.0048907815 + 982400 0.0056825696 0.002574319 0.0053712088 + 982500 0.004897574 0.0028488026 0.0052593273 + 982600 0.0041026211 0.003227985 0.0052472439 + 982700 0.0042408094 0.0037344593 0.0058217327 + 982800 0.0047746582 0.0035613854 0.0059114125 + 982900 0.005268543 0.0028726144 0.0054657254 + 983000 0.0056785066 0.0029743286 0.0057692185 + 983100 0.0048849941 0.0028201132 0.0052244462 + 983200 0.0049311491 0.0027453406 0.0051723905 + 983300 0.0062676333 0.0023219668 0.0054068175 + 983400 0.0043930239 0.0023708038 0.0045329952 + 983500 0.0040724065 0.0019094296 0.0039138172 + 983600 0.0052150927 0.0024262577 0.0049930611 + 983700 0.0043433298 0.0026049554 0.004742688 + 983800 0.0050472052 0.0023722774 0.0048564487 + 983900 0.0043356683 0.0025840093 0.004717971 + 984000 0.0047622483 0.0026660006 0.0050099196 + 984100 0.0051684201 0.0024934895 0.0050373213 + 984200 0.0049709271 0.0024526566 0.0048992848 + 984300 0.0050391681 0.0027967948 0.0052770104 + 984400 0.0035256957 0.0029222764 0.0046575798 + 984500 0.0055981847 0.0027526784 0.0055080349 + 984600 0.0063161312 0.0027642814 0.0058730022 + 984700 0.0043520151 0.0029104482 0.0050524556 + 984800 0.0044681672 0.0031145431 0.0053137192 + 984900 0.0055034534 0.003055667 0.005764398 + 985000 0.0040358495 0.0033472978 0.0053336924 + 985100 0.0042397873 0.0030740969 0.0051608672 + 985200 0.0059205241 0.0032917994 0.0062058073 + 985300 0.0044841608 0.0033076654 0.0055147133 + 985400 0.0061132038 0.0033594401 0.0063682826 + 985500 0.0049492441 0.0032243699 0.005660326 + 985600 0.0049895883 0.0027963229 0.0052521359 + 985700 0.0050430015 0.0026648049 0.0051469072 + 985800 0.0063399199 0.0029352288 0.0060556581 + 985900 0.0058207205 0.0030297651 0.005894651 + 986000 0.0058527679 0.0030318393 0.0059124985 + 986100 0.0051390777 0.0029639791 0.005493369 + 986200 0.0049081039 0.0028562779 0.0052719853 + 986300 0.0063066229 0.0029136954 0.0060177363 + 986400 0.0074613207 0.0030321867 0.0067045555 + 986500 0.0047357109 0.0031939484 0.0055248061 + 986600 0.005585725 0.0029077879 0.0056570119 + 986700 0.0037630638 0.0031529826 0.0050051155 + 986800 0.0051417877 0.0029449946 0.0054757182 + 986900 0.0039352683 0.0027345012 0.0046713911 + 987000 0.0045042688 0.0027946598 0.0050116046 + 987100 0.0038858304 0.0025608629 0.00447342 + 987200 0.0052483828 0.0027178034 0.0053009919 + 987300 0.0037091999 0.0029005868 0.0047262086 + 987400 0.0070775587 0.0027798141 0.0062633 + 987500 0.0036270684 0.0028413445 0.0046265422 + 987600 0.0070489487 0.0024860097 0.0059554142 + 987700 0.0064193038 0.0024253988 0.0055848998 + 987800 0.0059584575 0.0027159338 0.0056486121 + 987900 0.0066438819 0.0026475906 0.0059176263 + 988000 0.006814268 0.0028980733 0.0062519708 + 988100 0.00736784 0.0028463305 0.0064726892 + 988200 0.0064268041 0.0028229601 0.0059861527 + 988300 0.0044890371 0.0028819666 0.0050914145 + 988400 0.0051428621 0.0028251015 0.0053563539 + 988500 0.0048952845 0.0028904207 0.0052998185 + 988600 0.0062151623 0.0023979318 0.005456957 + 988700 0.0075431601 0.0024812106 0.0061938597 + 988800 0.0052180115 0.0028687568 0.0054369968 + 988900 0.0067502349 0.002768468 0.0060908493 + 989000 0.0044121348 0.0028805115 0.0050521091 + 989100 0.0056502832 0.0028877942 0.005668793 + 989200 0.0056851794 0.0030672771 0.0058654513 + 989300 0.0064623776 0.002497555 0.0056782565 + 989400 0.0054174613 0.0022052964 0.0048717031 + 989500 0.0049095694 0.002719427 0.0051358557 + 989600 0.0038369342 0.0030875314 0.0049760224 + 989700 0.0045635278 0.0024280134 0.0046741247 + 989800 0.0062862646 0.0021870487 0.0052810696 + 989900 0.00401205 0.0022977586 0.0042724394 + 990000 0.0031665848 0.0024655837 0.0040241372 + 990100 0.0052668534 0.0024501974 0.0050424768 + 990200 0.0060699897 0.0023492996 0.0053368726 + 990300 0.0029925171 0.0026476097 0.0041204893 + 990400 0.0057224906 0.0028046956 0.0056212339 + 990500 0.0042043651 0.0031280593 0.0051973952 + 990600 0.0084965764 0.0026677063 0.006849615 + 990700 0.0056795836 0.0026465389 0.005441959 + 990800 0.0036923655 0.0029536112 0.0047709474 + 990900 0.0063791612 0.0030311292 0.0061708726 + 991000 0.0060970035 0.003375455 0.0063763239 + 991100 0.0062167722 0.0038461082 0.0069059257 + 991200 0.0044292718 0.0034323775 0.0056124098 + 991300 0.0047065641 0.00275659 0.005073102 + 991400 0.0060395958 0.002512749 0.0054853626 + 991500 0.0043901857 0.0026613919 0.0048221865 + 991600 0.0064734678 0.0021112289 0.0052973888 + 991700 0.0048135391 0.0021462033 0.004515367 + 991800 0.0057814017 0.0021097485 0.0049552822 + 991900 0.0047353231 0.002448547 0.0047792139 + 992000 0.0050574842 0.0021558063 0.0046450368 + 992100 0.004169629 0.0026219544 0.0046741936 + 992200 0.0035276661 0.0025554912 0.0042917644 + 992300 0.0073098816 0.0024056232 0.0060034556 + 992400 0.0044377561 0.0026966481 0.0048808562 + 992500 0.0047866419 0.0024237171 0.0047796424 + 992600 0.0041714639 0.0020709134 0.0041240558 + 992700 0.0057420447 0.0020567557 0.0048829183 + 992800 0.0047033206 0.0021638155 0.0044787311 + 992900 0.0049631861 0.0022831604 0.0047259786 + 993000 0.0057616199 0.0022022786 0.0050380759 + 993100 0.0059562378 0.0020840039 0.0050155897 + 993200 0.0060702991 0.0027081922 0.0056959175 + 993300 0.0036361257 0.0027494034 0.004539059 + 993400 0.0049969436 0.002264335 0.0047237682 + 993500 0.0051335965 0.0023020636 0.0048287556 + 993600 0.0038654824 0.0025151362 0.0044176783 + 993700 0.005012708 0.0022132214 0.0046804136 + 993800 0.004830921 0.0021669247 0.0045446437 + 993900 0.0042947553 0.0022723071 0.004386132 + 994000 0.0038885273 0.0023597147 0.0042735992 + 994100 0.0043382391 0.0026960218 0.0048312488 + 994200 0.0054540426 0.002690482 0.0053748936 + 994300 0.0050225585 0.0031918265 0.0056638671 + 994400 0.0043957731 0.0036362587 0.0057998033 + 994500 0.0047650441 0.0031226028 0.0054678979 + 994600 0.0051718966 0.0029700689 0.0055156117 + 994700 0.0052283593 0.0030852112 0.0056585443 + 994800 0.0041281262 0.0025849569 0.004616769 + 994900 0.0048214973 0.0025351245 0.0049082052 + 995000 0.0051733148 0.0023247117 0.0048709526 + 995100 0.005381231 0.0023076779 0.0049562526 + 995200 0.0055969207 0.0024085952 0.0051633296 + 995300 0.0069872125 0.0024732653 0.005912284 + 995400 0.0047278147 0.0023683595 0.0046953308 + 995500 0.0043343907 0.0023087316 0.0044420645 + 995600 0.0050105492 0.0022640307 0.0047301604 + 995700 0.0048086353 0.0023118181 0.0046785683 + 995800 0.0057734406 0.0027848978 0.005626513 + 995900 0.0054350316 0.0032062019 0.0058812565 + 996000 0.006762978 0.0027828838 0.006111537 + 996100 0.0056581903 0.0024266921 0.0052115826 + 996200 0.0050327909 0.0024579443 0.0049350211 + 996300 0.0042900558 0.0023953088 0.0045068207 + 996400 0.0046179612 0.0022902873 0.00456319 + 996500 0.0042966088 0.0020184398 0.004133177 + 996600 0.0029415555 0.0022717449 0.0037195418 + 996700 0.0044938326 0.0026969407 0.004908749 + 996800 0.005332524 0.0029500719 0.0055746735 + 996900 0.0059137513 0.0026772403 0.0055879147 + 997000 0.0038451959 0.0024993702 0.0043919276 + 997100 0.0052280212 0.0021697932 0.0047429599 + 997200 0.0048236494 0.0019825895 0.0043567295 + 997300 0.0063693807 0.0016866843 0.0048216139 + 997400 0.0057516255 0.002200832 0.0050317102 + 997500 0.0052275762 0.0028131674 0.005386115 + 997600 0.0056947647 0.002527966 0.005330858 + 997700 0.0038868155 0.0020253583 0.0039384003 + 997800 0.0047661771 0.0019361416 0.0042819944 + 997900 0.004279239 0.0019607491 0.004066937 + 998000 0.0040054342 0.0023530402 0.0043244649 + 998100 0.0042578307 0.0020690333 0.0041646844 + 998200 0.0063386793 0.0018058566 0.0049256753 + 998300 0.004628371 0.0017507567 0.004028783 + 998400 0.004452663 0.0018707626 0.0040623077 + 998500 0.0055945285 0.0017229935 0.0044765505 + 998600 0.0059954179 0.0019074388 0.0048583085 + 998700 0.0064770993 0.0020988255 0.0052867728 + 998800 0.0046488737 0.0022786743 0.0045667919 + 998900 0.0046555006 0.0021402839 0.0044316631 + 999000 0.0039118975 0.0023083816 0.0042337686 + 999100 0.0042809737 0.002498269 0.0046053107 + 999200 0.0053057226 0.0022375668 0.0048489771 + 999300 0.0045480807 0.0018447362 0.0040832446 + 999400 0.0070898057 0.0017386224 0.0052281361 + 999500 0.0040411188 0.00186204 0.0038510281 + 999600 0.0044541418 0.0017033787 0.0038956516 + 999700 0.0043493845 0.0020669123 0.0042076249 + 999800 0.0047713221 0.0025011758 0.0048495609 + 999900 0.0041651359 0.0023462542 0.004396282 + 1000000 0.0069081526 0.0020962934 0.0054963997 + 1000100 0.0051494955 0.0025812336 0.0051157509 + 1000200 0.0052849049 0.0026391364 0.0052403005 + 1000300 0.0064458921 0.0021817095 0.005354297 + 1000400 0.0040600774 0.0025574907 0.0045558101 + 1000500 0.0067448827 0.0020642998 0.0053840467 + 1000600 0.0046874103 0.0025446958 0.0048517805 + 1000700 0.0059312974 0.0024016652 0.0053209757 + 1000800 0.0046239503 0.0024313838 0.0047072344 + 1000900 0.0065969442 0.0025403247 0.0057872581 + 1001000 0.0039460555 0.0032729377 0.0052151369 + 1001100 0.0051649452 0.0034639203 0.0060060418 + 1001200 0.0059948639 0.0027361193 0.0056867163 + 1001300 0.005589125 0.0023643931 0.0051152905 + 1001400 0.0054033947 0.0024136607 0.005073144 + 1001500 0.0045560667 0.0026468889 0.004889328 + 1001600 0.0053637132 0.0028193046 0.0054592572 + 1001700 0.0051950158 0.0028894148 0.0054463367 + 1001800 0.0054701025 0.0033857366 0.0060780526 + 1001900 0.0046832559 0.003369221 0.005674261 + 1002000 0.005591551 0.0029473319 0.0056994234 + 1002100 0.0055488314 0.0026581838 0.0053892493 + 1002200 0.0063829728 0.0025746735 0.0057162929 + 1002300 0.0045372232 0.0027650586 0.0049982232 + 1002400 0.0058766876 0.0024222294 0.0053146616 + 1002500 0.0062297892 0.0021997444 0.0052659688 + 1002600 0.0044219521 0.0023220662 0.0044984958 + 1002700 0.0048317369 0.0024521597 0.0048302802 + 1002800 0.0062759314 0.0024211933 0.0055101283 + 1002900 0.0045704509 0.0022813492 0.0045308681 + 1003000 0.005296777 0.002286375 0.0048933824 + 1003100 0.0048296657 0.0018562121 0.0042333132 + 1003200 0.0064911666 0.001719224 0.0049140951 + 1003300 0.0039611249 0.002488262 0.0044378782 + 1003400 0.0045439444 0.0024646716 0.0047011443 + 1003500 0.0063899805 0.0019758945 0.0051209631 + 1003600 0.0039458851 0.0024768536 0.0044189689 + 1003700 0.0047814458 0.0030287471 0.0053821149 + 1003800 0.0060532711 0.0025724101 0.0055517545 + 1003900 0.0046427043 0.0021163149 0.004401396 + 1004000 0.0044523385 0.0021242432 0.0043156285 + 1004100 0.0046728132 0.0025187357 0.004818636 + 1004200 0.0065121434 0.0020720806 0.0052772762 + 1004300 0.0049568828 0.0018419125 0.0042816283 + 1004400 0.0050255803 0.0019006513 0.004374179 + 1004500 0.0038698921 0.0023159722 0.0042206847 + 1004600 0.0052165789 0.0022477189 0.0048152538 + 1004700 0.006485187 0.0020144991 0.0052064271 + 1004800 0.0054101366 0.0023697468 0.0050325484 + 1004900 0.0057697645 0.0026540284 0.0054938344 + 1005000 0.0040673673 0.0026888362 0.0046907435 + 1005100 0.0040597796 0.0023138106 0.0043119834 + 1005200 0.004857991 0.0024143357 0.0048053781 + 1005300 0.0044355987 0.0026901017 0.0048732479 + 1005400 0.0047749209 0.0026978177 0.0050479741 + 1005500 0.0063127851 0.0024478435 0.0055549174 + 1005600 0.0053648273 0.0023177772 0.0049582781 + 1005700 0.0044077178 0.001963008 0.0041324316 + 1005800 0.0052208121 0.0019798199 0.0045494383 + 1005900 0.0047169283 0.0020366258 0.0043582389 + 1006000 0.0064128383 0.0023037002 0.0054600191 + 1006100 0.0047984398 0.0021997989 0.004561531 + 1006200 0.0026655526 0.0022747815 0.0035867332 + 1006300 0.0066804415 0.001950608 0.0052386378 + 1006400 0.0058666955 0.0022863746 0.0051738887 + 1006500 0.004341811 0.002802581 0.0049395661 + 1006600 0.0041500243 0.0022632247 0.0043058147 + 1006700 0.005564904 0.0017322046 0.0044711808 + 1006800 0.0061869363 0.002003197 0.0050483297 + 1006900 0.0057017997 0.0021739543 0.0049803088 + 1007000 0.0034295544 0.0020343903 0.0037223741 + 1007100 0.0052637291 0.0021950729 0.0047858146 + 1007200 0.0047670014 0.0020535682 0.0043998266 + 1007300 0.0061460962 0.0022640794 0.0052891111 + 1007400 0.0051443437 0.0024503951 0.0049823768 + 1007500 0.0052616412 0.0024460091 0.0050357231 + 1007600 0.0046056557 0.002512578 0.0047794242 + 1007700 0.0071738755 0.0028336923 0.0063645842 + 1007800 0.0045768988 0.0024023875 0.0046550799 + 1007900 0.0050379534 0.0025190649 0.0049986826 + 1008000 0.0045811388 0.0029909017 0.005245681 + 1008100 0.0053127926 0.0025362398 0.0051511299 + 1008200 0.0042476206 0.0019302334 0.0040208591 + 1008300 0.0042836578 0.0019643249 0.0040726877 + 1008400 0.0033078123 0.0020162 0.0036442639 + 1008500 0.0062581726 0.0018061396 0.0048863339 + 1008600 0.0056370018 0.0023369356 0.0051113974 + 1008700 0.0056008725 0.0026669715 0.0054236509 + 1008800 0.0061580174 0.0023190033 0.0053499025 + 1008900 0.0045182173 0.0023248534 0.0045486635 + 1009000 0.0044815277 0.00246036 0.0046661119 + 1009100 0.0044086697 0.0019869571 0.0041568492 + 1009200 0.0052124838 0.0016599991 0.0042255184 + 1009300 0.0045232995 0.0023272984 0.0045536099 + 1009400 0.0050554729 0.0028127386 0.0053009792 + 1009500 0.0052842845 0.0025544086 0.0051552674 + 1009600 0.0045430244 0.0020260733 0.0042620931 + 1009700 0.005673776 0.0017984997 0.0045910613 + 1009800 0.0047587198 0.0015946763 0.0039368587 + 1009900 0.0040468251 0.0023055816 0.0042973783 + 1010000 0.005953619 0.0023587392 0.0052890361 + 1010100 0.0047879444 0.0026004243 0.0049569907 + 1010200 0.0065295538 0.0026431761 0.0058569409 + 1010300 0.005202315 0.0027032003 0.0052637147 + 1010400 0.0050212202 0.0023330273 0.0048044091 + 1010500 0.0050953324 0.0020150587 0.0045229176 + 1010600 0.0081267095 0.001539418 0.0055392828 + 1010700 0.00680933 0.0020209849 0.005372452 + 1010800 0.0059075345 0.0026247777 0.0055323923 + 1010900 0.0052125808 0.0027692911 0.0053348582 + 1011000 0.0068125903 0.0026458177 0.0059988895 + 1011100 0.005222571 0.0027163641 0.0052868483 + 1011200 0.0046131848 0.0030474854 0.0053180373 + 1011300 0.0056980831 0.0027832973 0.0055878226 + 1011400 0.0065363949 0.0025730008 0.0057901327 + 1011500 0.0052295321 0.0026094625 0.0051833728 + 1011600 0.005921081 0.0023032517 0.0052175337 + 1011700 0.0060874443 0.0020557481 0.0050519121 + 1011800 0.0065647908 0.0019218252 0.0051529331 + 1011900 0.0044574656 0.0023039189 0.0044978277 + 1012000 0.0056732516 0.002531751 0.0053240545 + 1012100 0.004911974 0.0022824955 0.0047001077 + 1012200 0.0050623369 0.0022418214 0.0047334403 + 1012300 0.0056473859 0.0023284362 0.0051080089 + 1012400 0.0065199063 0.0026167188 0.0058257352 + 1012500 0.0067617591 0.0025897903 0.0059178436 + 1012600 0.0050166194 0.0027880521 0.0052571694 + 1012700 0.0051878668 0.0025888901 0.0051422933 + 1012800 0.0051247679 0.0024156259 0.0049379726 + 1012900 0.0043340812 0.0027058371 0.0048390177 + 1013000 0.0051925601 0.0025897156 0.0051454288 + 1013100 0.0050816638 0.0020046097 0.0045057411 + 1013200 0.0049041631 0.0023956177 0.0048093855 + 1013300 0.0046185897 0.0026373177 0.0049105299 + 1013400 0.0065998507 0.0027374673 0.0059858313 + 1013500 0.0046498613 0.002877889 0.0051664927 + 1013600 0.0060784109 0.0023986205 0.0053903384 + 1013700 0.0064002554 0.0021889873 0.005339113 + 1013800 0.0043190584 0.0021668113 0.0042925979 + 1013900 0.0052377602 0.0024537634 0.0050317234 + 1014000 0.0064173927 0.0027566654 0.0059152259 + 1014100 0.0048549162 0.0023208718 0.0047104009 + 1014200 0.0037728476 0.0019617069 0.0038186553 + 1014300 0.0051090202 0.0019169924 0.0044315883 + 1014400 0.0046196552 0.0018816177 0.0041553542 + 1014500 0.00595051 0.0019279088 0.0048566754 + 1014600 0.0036306792 0.0017710766 0.0035580516 + 1014700 0.0053091504 0.0017358422 0.0043489396 + 1014800 0.004345447 0.0020296398 0.0041684145 + 1014900 0.0045563368 0.0025822178 0.0048247898 + 1015000 0.003611884 0.002841104 0.0046188282 + 1015100 0.0038028411 0.0027268024 0.0045985133 + 1015200 0.0032081943 0.002317249 0.0038962821 + 1015300 0.0040465971 0.0023775971 0.0043692816 + 1015400 0.00451567 0.0031171535 0.0053397098 + 1015500 0.0053399043 0.0031654748 0.0057937089 + 1015600 0.0046358011 0.0030056696 0.005287353 + 1015700 0.0050276469 0.0030577765 0.0055323214 + 1015800 0.0058920318 0.0031986424 0.0060986268 + 1015900 0.0063234226 0.0032086769 0.0063209865 + 1016000 0.0049639203 0.002408469 0.0048516485 + 1016100 0.0047852464 0.0020007332 0.0043559717 + 1016200 0.0043388345 0.0021621199 0.00429764 + 1016300 0.0054150804 0.0025066122 0.005171847 + 1016400 0.0038740651 0.0028599956 0.004766762 + 1016500 0.0053839571 0.0028846604 0.0055345768 + 1016600 0.0058427705 0.0024472741 0.0053230127 + 1016700 0.0068216223 0.0020347046 0.0053922219 + 1016800 0.0044496072 0.0025442309 0.0047342719 + 1016900 0.0034045704 0.0028401787 0.0045158657 + 1017000 0.0064196865 0.0021223617 0.0052820512 + 1017100 0.0050527322 0.0020001091 0.0044870008 + 1017200 0.0071625261 0.0022567284 0.0057820342 + 1017300 0.0057238708 0.0021464675 0.0049636852 + 1017400 0.0046574643 0.0023252538 0.0046175995 + 1017500 0.0042315296 0.0029184885 0.0050011944 + 1017600 0.0065763345 0.0026343497 0.0058711394 + 1017700 0.0043564062 0.0025660203 0.004710189 + 1017800 0.0061495216 0.003179033 0.0062057507 + 1017900 0.0053161625 0.0030382399 0.0056547886 + 1018000 0.005275079 0.0026615858 0.0052579138 + 1018100 0.0055893332 0.0024091544 0.0051601544 + 1018200 0.0045190621 0.0021240911 0.004348317 + 1018300 0.0042745726 0.0018917078 0.003995599 + 1018400 0.0033806443 0.002317108 0.0039810188 + 1018500 0.0053082998 0.002771873 0.0053845518 + 1018600 0.0057922195 0.0032101345 0.0060609926 + 1018700 0.0043773985 0.0033875564 0.0055420572 + 1018800 0.0056141785 0.0033283391 0.0060915676 + 1018900 0.0053861997 0.0026372475 0.0052882676 + 1019000 0.0041953238 0.0022800879 0.0043449738 + 1019100 0.0051250461 0.0022464353 0.0047689189 + 1019200 0.0050133577 0.0018721845 0.0043396965 + 1019300 0.0039904792 0.0018056177 0.0037696817 + 1019400 0.0044001996 0.0017214879 0.0038872111 + 1019500 0.0046730866 0.0018031314 0.0041031662 + 1019600 0.004091931 0.0020998886 0.0041138859 + 1019700 0.0045541016 0.0019312803 0.0041727522 + 1019800 0.0062520415 0.0021346335 0.0052118102 + 1019900 0.0041786442 0.003027595 0.0050842715 + 1020000 0.0042152554 0.002899557 0.004974253 + 1020100 0.0052615379 0.0028771418 0.005466805 + 1020200 0.0043527949 0.0028524105 0.0049948017 + 1020300 0.0046606154 0.0021806217 0.0044745183 + 1020400 0.004509421 0.0023735922 0.0045930728 + 1020500 0.0053905962 0.0021853522 0.0048385363 + 1020600 0.0040105125 0.0023345907 0.0043085148 + 1020700 0.0054631617 0.0022365656 0.0049254655 + 1020800 0.005373147 0.0025796584 0.0052242541 + 1020900 0.0034483927 0.0026447199 0.0043419757 + 1021000 0.0052299609 0.0026582772 0.0052323985 + 1021100 0.0054199012 0.0025363521 0.0052039597 + 1021200 0.0056811939 0.0023159916 0.0051122042 + 1021300 0.0072381191 0.0023251855 0.0058876972 + 1021400 0.0059544355 0.0030086748 0.0059393735 + 1021500 0.0060250021 0.0030706907 0.0060361214 + 1021600 0.0059738895 0.0026691374 0.0056094111 + 1021700 0.0050589416 0.0024112139 0.0049011617 + 1021800 0.0056891396 0.0022662419 0.0050663653 + 1021900 0.0047264291 0.0021260782 0.0044523675 + 1022000 0.0035780794 0.0020737877 0.0038348736 + 1022100 0.0050346015 0.0022228122 0.0047007802 + 1022200 0.0056637807 0.002668009 0.0054556511 + 1022300 0.005904378 0.0033110409 0.0062171019 + 1022400 0.0046914986 0.0032533003 0.0055623973 + 1022500 0.0053424309 0.0027284783 0.005357956 + 1022600 0.0051401498 0.0029468718 0.0054767892 + 1022700 0.0047892095 0.0031295435 0.0054867326 + 1022800 0.0043246395 0.002896219 0.0050247526 + 1022900 0.0042561235 0.0025882603 0.004683071 + 1023000 0.0048072995 0.0022677683 0.004633861 + 1023100 0.004839833 0.0025966102 0.0049787155 + 1023200 0.0032786493 0.0030363188 0.0046500291 + 1023300 0.0043315014 0.0029460343 0.0050779452 + 1023400 0.0052796031 0.0027550706 0.0053536253 + 1023500 0.0071848958 0.0030776823 0.0066139982 + 1023600 0.0064796615 0.0031133426 0.006302551 + 1023700 0.0055986917 0.0028873636 0.0056429697 + 1023800 0.0050849115 0.0028117141 0.0053144439 + 1023900 0.0047510433 0.0021873848 0.0045257889 + 1024000 0.0043157278 0.0020483858 0.004172533 + 1024100 0.0058249918 0.0021419052 0.0050088933 + 1024200 0.0054405727 0.0026150491 0.005292831 + 1024300 0.0060184726 0.0027077361 0.0056699531 + 1024400 0.0067669425 0.0026466595 0.005977264 + 1024500 0.0051101713 0.002561036 0.0050761984 + 1024600 0.0081017218 0.0020422552 0.0060298214 + 1024700 0.0057074749 0.0020187446 0.0048278924 + 1024800 0.0053143114 0.0025314144 0.0051470521 + 1024900 0.0043985987 0.0025731411 0.0047380764 + 1025000 0.0045223564 0.0024691567 0.004695004 + 1025100 0.0052202765 0.0023498442 0.0049191991 + 1025200 0.0049443189 0.0023510773 0.0047846093 + 1025300 0.0064663168 0.0019071369 0.0050897772 + 1025400 0.0047473286 0.001767191 0.0041037668 + 1025500 0.0054436208 0.0017209956 0.0044002777 + 1025600 0.0059363047 0.0017505847 0.0046723597 + 1025700 0.0038316662 0.0024498057 0.0043357039 + 1025800 0.0049491143 0.0028339978 0.00526989 + 1025900 0.0045190251 0.0023474646 0.0045716723 + 1026000 0.0043414686 0.0021050676 0.0042418842 + 1026100 0.0045586535 0.00221666 0.0044603723 + 1026200 0.0040173671 0.0023186665 0.0042959644 + 1026300 0.003670485 0.0022467572 0.0040533241 + 1026400 0.0051506827 0.0022928352 0.0048279369 + 1026500 0.0038804405 0.0022245955 0.0041344998 + 1026600 0.0053735593 0.0020235758 0.0046683745 + 1026700 0.0048322792 0.0014182042 0.0037965917 + 1026800 0.0052172623 0.0013866048 0.0039544761 + 1026900 0.0055616497 0.0018480663 0.0045854408 + 1027000 0.0044809551 0.0022905244 0.0044959945 + 1027100 0.0045581738 0.0023136766 0.0045571527 + 1027200 0.0050840198 0.001963923 0.004466214 + 1027300 0.0047624908 0.0018556331 0.0041996715 + 1027400 0.0066540731 0.0021984102 0.0054734618 + 1027500 0.0048924779 0.0022700187 0.0046780352 + 1027600 0.0036506264 0.0024084557 0.0042052484 + 1027700 0.0037740887 0.0021637889 0.0040213482 + 1027800 0.0048016359 0.0020022 0.0043655052 + 1027900 0.0044702053 0.0020654942 0.0042656734 + 1028000 0.0056374544 0.0020610393 0.0048357239 + 1028100 0.0060393584 0.0019742205 0.0049467172 + 1028200 0.0051933913 0.0023865824 0.0049427047 + 1028300 0.0054475384 0.0023787155 0.0050599258 + 1028400 0.0063837281 0.0020018412 0.0051438324 + 1028500 0.0040431458 0.0020369798 0.0040269656 + 1028600 0.0058267683 0.0019689878 0.0048368504 + 1028700 0.0066254415 0.0021136548 0.0053746143 + 1028800 0.0041376031 0.0022973977 0.0043338742 + 1028900 0.0052273241 0.002290996 0.0048638196 + 1029000 0.0048571078 0.0022147525 0.0046053603 + 1029100 0.0043989049 0.0025776517 0.0047427377 + 1029200 0.0046828904 0.0022950643 0.0045999244 + 1029300 0.0052052741 0.0018724979 0.0044344687 + 1029400 0.005394831 0.0017704023 0.0044256707 + 1029500 0.0037778725 0.0018927733 0.0037521949 + 1029600 0.0044926168 0.0019485516 0.0041597614 + 1029700 0.0035867927 0.0026707846 0.0044361591 + 1029800 0.0038064391 0.0033154554 0.0051889372 + 1029900 0.0047124004 0.002955111 0.0052744956 + 1030000 0.0063006324 0.0027724387 0.0058735311 + 1030100 0.005961229 0.00286997 0.0058040124 + 1030200 0.0043984334 0.0023823694 0.0045472234 + 1030300 0.003042998 0.0023227516 0.0038204771 + 1030400 0.0052620945 0.002197186 0.0047871232 + 1030500 0.0065037344 0.0018782556 0.0050793124 + 1030600 0.0051006447 0.0020068367 0.0045173103 + 1030700 0.0062066155 0.0025056412 0.0055604598 + 1030800 0.0055777996 0.0026663239 0.0054116471 + 1030900 0.0050159505 0.0024672351 0.0049360232 + 1031000 0.006631355 0.0023181787 0.0055820488 + 1031100 0.0058931173 0.0020466332 0.0049471519 + 1031200 0.0054780309 0.0021368423 0.0048330607 + 1031300 0.0033485512 0.0022124228 0.0038605379 + 1031400 0.0044909938 0.0017948023 0.0040052133 + 1031500 0.0043346628 0.0020297085 0.0041631753 + 1031600 0.0041056404 0.0019618614 0.0039826063 + 1031700 0.0057823322 0.0017305672 0.0045765589 + 1031800 0.0045001073 0.0018680982 0.0040829947 + 1031900 0.0041993773 0.0020754387 0.0041423197 + 1032000 0.0059501713 0.00278744 0.0057160399 + 1032100 0.0041868598 0.0033105136 0.0053712336 + 1032200 0.0056571674 0.0030131374 0.0057975245 + 1032300 0.0040200357 0.0024920976 0.0044707089 + 1032400 0.0045950838 0.002714266 0.0049759088 + 1032500 0.0058486047 0.0022159467 0.0050945569 + 1032600 0.0050381192 0.002368764 0.0048484633 + 1032700 0.0062373117 0.0022401018 0.0053100286 + 1032800 0.0083208585 0.0025119917 0.0066074143 + 1032900 0.0046853974 0.0027068607 0.0050129548 + 1033000 0.0057120289 0.0019943702 0.0048057594 + 1033100 0.0046222202 0.0020954505 0.0043704495 + 1033200 0.0047225671 0.0025848757 0.0049092642 + 1033300 0.0041544827 0.0024116275 0.004456412 + 1033400 0.0046626961 0.0020986235 0.0043935442 + 1033500 0.006102413 0.002276343 0.0052798744 + 1033600 0.0037912952 0.0027764324 0.0046424605 + 1033700 0.0040021818 0.0025559094 0.0045257333 + 1033800 0.0069202081 0.002408968 0.005815008 + 1033900 0.0056278757 0.0027291526 0.0054991227 + 1034000 0.0040659207 0.002980724 0.0049819193 + 1034100 0.005373725 0.0029034493 0.0055483296 + 1034200 0.005428904 0.0030485242 0.0057205629 + 1034300 0.0067244988 0.0024180015 0.0057277158 + 1034400 0.005465408 0.0021037621 0.0047937676 + 1034500 0.0050338923 0.0025129772 0.0049905961 + 1034600 0.0041388307 0.0030079548 0.0050450356 + 1034700 0.0047953138 0.0023807 0.0047408935 + 1034800 0.0039920369 0.0018694469 0.0038342775 + 1034900 0.0045857592 0.0014423714 0.0036994248 + 1035000 0.0047648616 0.0014394467 0.003784652 + 1035100 0.0038252093 0.0018775773 0.0037602974 + 1035200 0.0043855909 0.0021910738 0.0043496069 + 1035300 0.0058071527 0.0022340779 0.0050922859 + 1035400 0.0052509529 0.0025991782 0.0051836316 + 1035500 0.0057517417 0.0026273926 0.005458328 + 1035600 0.0046691429 0.0028242283 0.0051223221 + 1035700 0.0054653574 0.0026596127 0.0053495933 + 1035800 0.005732819 0.0027804829 0.0056021048 + 1035900 0.0049379175 0.0023998764 0.0048302577 + 1036000 0.0054859681 0.0025014985 0.0052016235 + 1036100 0.0056793226 0.0029080149 0.0057033065 + 1036200 0.0065481479 0.0026296507 0.0058525672 + 1036300 0.0051182245 0.0023603519 0.004879478 + 1036400 0.0064249003 0.0021221336 0.0052843892 + 1036500 0.0042645954 0.0024160752 0.0045150557 + 1036600 0.0045868057 0.0028951698 0.0051527383 + 1036700 0.0060927495 0.0027600601 0.0057588352 + 1036800 0.0049341583 0.0028037611 0.0052322922 + 1036900 0.0040140909 0.0030605631 0.0050362485 + 1037000 0.0043512813 0.0024932595 0.0046349057 + 1037100 0.0050273977 0.0020303693 0.0045047916 + 1037200 0.0029866832 0.0021146815 0.0035846897 + 1037300 0.0057217574 0.002246274 0.0050624514 + 1037400 0.0044323762 0.0024294542 0.0046110144 + 1037500 0.0038371926 0.002157604 0.0040462223 + 1037600 0.005464037 0.0017895905 0.0044789212 + 1037700 0.0039938984 0.0022472954 0.0042130423 + 1037800 0.005097935 0.0026879189 0.0051970588 + 1037900 0.0041331925 0.0026330274 0.0046673331 + 1038000 0.0033252611 0.0029466503 0.0045833023 + 1038100 0.0054785563 0.0030588649 0.0057553418 + 1038200 0.0053424201 0.0032098628 0.0058393352 + 1038300 0.0055235645 0.0025868315 0.0053054609 + 1038400 0.0056084206 0.0023028664 0.0050632609 + 1038500 0.0050902583 0.0019114659 0.0044168274 + 1038600 0.0040383589 0.0017290724 0.0037167021 + 1038700 0.00488052 0.0021875468 0.0045896778 + 1038800 0.0053080857 0.0028163553 0.0054289287 + 1038900 0.0057428064 0.002639329 0.0054658665 + 1039000 0.0049349618 0.0026121307 0.0050410572 + 1039100 0.0053523235 0.0026849777 0.0053193244 + 1039200 0.0047634116 0.0025755885 0.0049200802 + 1039300 0.005176473 0.0023768188 0.0049246141 + 1039400 0.0035636875 0.0024595735 0.0042135759 + 1039500 0.0052821912 0.0024711159 0.0050709443 + 1039600 0.0060125231 0.0022200131 0.0051793019 + 1039700 0.0048373358 0.0024831547 0.0048640309 + 1039800 0.0043262322 0.0027346177 0.0048639351 + 1039900 0.0044853832 0.0027471346 0.0049547841 + 1040000 0.004437379 0.0030803048 0.0052643273 + 1040100 0.0053302928 0.0033029735 0.005926477 + 1040200 0.0059216789 0.0033187059 0.0062332822 + 1040300 0.0057513889 0.0029577083 0.0057884701 + 1040400 0.0039270103 0.0030342981 0.0049671235 + 1040500 0.0043266993 0.003054063 0.0051836104 + 1040600 0.0034553986 0.0030924659 0.0047931699 + 1040700 0.0043640886 0.0027323146 0.0048802644 + 1040800 0.0040103892 0.002455651 0.0044295144 + 1040900 0.0055995724 0.0028733694 0.0056294089 + 1041000 0.0062393276 0.0030181983 0.0060891173 + 1041100 0.0055209016 0.0028785466 0.0055958653 + 1041200 0.0044961759 0.0022862077 0.0044991693 + 1041300 0.0047127296 0.0022941411 0.0046136877 + 1041400 0.0052946171 0.0023019229 0.0049078672 + 1041500 0.0070027889 0.002158894 0.0056055792 + 1041600 0.0060209486 0.0022994036 0.0052628392 + 1041700 0.0052175226 0.0021743767 0.0047423761 + 1041800 0.0057037399 0.0020731587 0.0048804682 + 1041900 0.0052663404 0.0020942794 0.0046863063 + 1042000 0.0058884592 0.0020764351 0.0049746611 + 1042100 0.0045236523 0.002599633 0.0048261181 + 1042200 0.0050188104 0.0030943349 0.0055645306 + 1042300 0.0060447486 0.0030520076 0.0060271573 + 1042400 0.0059002652 0.0026142224 0.0055182591 + 1042500 0.0050665735 0.0026071774 0.0051008816 + 1042600 0.0069495367 0.0026629009 0.006083376 + 1042700 0.0066366405 0.0027230907 0.0059895622 + 1042800 0.0045563657 0.003072998 0.0053155842 + 1042900 0.0049390266 0.0027021479 0.005133075 + 1043000 0.0050095718 0.0022409002 0.0047065488 + 1043100 0.0043881111 0.0024278795 0.0045876529 + 1043200 0.0051245602 0.0026102171 0.0051324616 + 1043300 0.0030349539 0.0027556461 0.0042494125 + 1043400 0.0058646987 0.002698681 0.0055852124 + 1043500 0.0050114619 0.0034398161 0.005906395 + 1043600 0.0037417469 0.0032725893 0.0051142303 + 1043700 0.0048621977 0.0029200179 0.0053131308 + 1043800 0.0060019128 0.0023572155 0.005311282 + 1043900 0.0039454535 0.0020428714 0.0039847743 + 1044000 0.005792518 0.0022271144 0.0050781194 + 1044100 0.0034663335 0.0028677327 0.0045738187 + 1044200 0.0044947874 0.0029862066 0.0051984848 + 1044300 0.0055344696 0.0030926997 0.0058166964 + 1044400 0.0046476639 0.0030008259 0.005288348 + 1044500 0.0045070637 0.0031397002 0.0053580206 + 1044600 0.0042031506 0.0033023234 0.0053710617 + 1044700 0.0055880568 0.0030103629 0.0057607346 + 1044800 0.0060589107 0.0029568962 0.0059390163 + 1044900 0.0040350385 0.0027493668 0.0047353623 + 1045000 0.0051689227 0.0027817665 0.0053258456 + 1045100 0.0039638153 0.0027064855 0.0046574258 + 1045200 0.0042941679 0.0026709197 0.0047844555 + 1045300 0.0057933736 0.0030714997 0.0059229257 + 1045400 0.0049670699 0.0033394996 0.0057842293 + 1045500 0.0057506661 0.0030523226 0.0058827286 + 1045600 0.0044800963 0.0024874115 0.0046924589 + 1045700 0.0043911027 0.0020011725 0.0041624184 + 1045800 0.0054703546 0.0025449897 0.0052374299 + 1045900 0.0039789625 0.0029213592 0.0048797548 + 1046000 0.0048116312 0.0026265189 0.0049947436 + 1046100 0.003690807 0.002481961 0.0042985301 + 1046200 0.0044159839 0.0022634926 0.0044369847 + 1046300 0.0046988911 0.0022874475 0.004600183 + 1046400 0.0060967126 0.0023911164 0.0053918421 + 1046500 0.0050914658 0.0023944166 0.0049003724 + 1046600 0.0042645365 0.0022191308 0.0043180824 + 1046700 0.0053885235 0.0023761788 0.0050283427 + 1046800 0.0050232642 0.0022944247 0.0047668125 + 1046900 0.0040760489 0.0019654933 0.0039716737 + 1047000 0.0043259531 0.001923832 0.004053012 + 1047100 0.0042616108 0.0023049735 0.0044024851 + 1047200 0.0047092137 0.0018690607 0.0041868768 + 1047300 0.0050339467 0.0017590889 0.0042367345 + 1047400 0.0047354725 0.0018008274 0.0041315677 + 1047500 0.0046552736 0.0019035053 0.0041947728 + 1047600 0.0064874274 0.0019855473 0.0051785779 + 1047700 0.0061589411 0.0023615578 0.0053929116 + 1047800 0.0047252628 0.0027926979 0.0051184131 + 1047900 0.0056473207 0.0032674862 0.0060470269 + 1048000 0.005889803 0.0030799753 0.0059788627 + 1048100 0.0049962306 0.0026382659 0.0050973481 + 1048200 0.004371669 0.0032793435 0.0054310243 + 1048300 0.0049397374 0.0037750581 0.0062063351 + 1048400 0.0061742705 0.003956149 0.0069950477 + 1048500 0.0061954599 0.0037226807 0.0067720087 + 1048600 0.0053379414 0.0033741468 0.0060014148 + 1048700 0.0068198433 0.00330614 0.0066627817 + 1048800 0.0034515465 0.0031158584 0.0048146665 + 1048900 0.0053671951 0.0028931217 0.005534788 + 1049000 0.0047418309 0.0032362375 0.0055701074 + 1049100 0.0058015798 0.0025658331 0.0054212981 + 1049200 0.0045474566 0.0020463783 0.0042845796 + 1049300 0.0031701079 0.0020255072 0.0035857947 + 1049400 0.0048435245 0.0023464476 0.0047303698 + 1049500 0.0049905069 0.0021575179 0.004613783 + 1049600 0.0041217748 0.0024114365 0.0044401225 + 1049700 0.0051061024 0.0031825664 0.0056957262 + 1049800 0.0044141544 0.0031304689 0.0053030605 + 1049900 0.0059748787 0.003068241 0.0060090016 + 1050000 0.0036460677 0.0034713129 0.0052658619 + 1050100 0.0061152325 0.0027698093 0.0057796503 + 1050200 0.0056863823 0.0019958669 0.0047946332 + 1050300 0.0044931211 0.0020439664 0.0042554244 + 1050400 0.0046162555 0.0025375955 0.0048096587 + 1050500 0.0038783694 0.0028274892 0.0047363741 + 1050600 0.0038576631 0.002950878 0.0048495715 + 1050700 0.0058826952 0.002684179 0.0055795681 + 1050800 0.0060543413 0.0023402862 0.0053201573 + 1050900 0.0032092626 0.0032720798 0.0048516387 + 1051000 0.0029675449 0.0031736418 0.0046342303 + 1051100 0.0053991666 0.0029361669 0.0055935692 + 1051200 0.0057586188 0.0027292874 0.0055636076 + 1051300 0.0059911245 0.00219913 0.0051478866 + 1051400 0.0056521787 0.0023417702 0.0051237019 + 1051500 0.0042278241 0.0029116988 0.0049925809 + 1051600 0.0045667327 0.0032794007 0.0055270895 + 1051700 0.0061753198 0.0029328392 0.0059722544 + 1051800 0.0060865631 0.0026417056 0.0056374359 + 1051900 0.0065886702 0.0022436035 0.0054864646 + 1052000 0.0068998765 0.0022360041 0.005632037 + 1052100 0.0054575129 0.0027194826 0.0054056022 + 1052200 0.0066388111 0.0031767594 0.0064442993 + 1052300 0.0066815151 0.0034247701 0.0067133284 + 1052400 0.0050492848 0.0037775062 0.006262701 + 1052500 0.0059456213 0.0032124949 0.0061388554 + 1052600 0.0066651858 0.0020240372 0.0053045583 + 1052700 0.0051987385 0.0016935366 0.0042522907 + 1052800 0.0054082653 0.0020682107 0.0047300913 + 1052900 0.0040962823 0.0023108258 0.0043269647 + 1053000 0.0043368821 0.0025164544 0.0046510136 + 1053100 0.0048697749 0.0024965868 0.0048934291 + 1053200 0.0050910235 0.0024294693 0.0049352075 + 1053300 0.0063328796 0.0025382805 0.0056552447 + 1053400 0.0058222884 0.0024864121 0.0053520696 + 1053500 0.0064086725 0.0023189527 0.0054732212 + 1053600 0.0056934859 0.002302472 0.0051047346 + 1053700 0.0055600687 0.0024376302 0.0051742265 + 1053800 0.0053602311 0.0026715737 0.0053098125 + 1053900 0.0049323115 0.0025753306 0.0050029527 + 1054000 0.006210277 0.002557761 0.0056143817 + 1054100 0.0069599582 0.0021673502 0.0055929547 + 1054200 0.0063058595 0.0023814499 0.0054851151 + 1054300 0.0043588855 0.0025413633 0.0046867522 + 1054400 0.0047798874 0.00275675 0.0051093509 + 1054500 0.003659586 0.002959103 0.0047603054 + 1054600 0.0044710396 0.0026088075 0.0048093974 + 1054700 0.0046960233 0.0025090238 0.0048203478 + 1054800 0.0042012702 0.0023342283 0.004402041 + 1054900 0.0063533342 0.0020389246 0.0051659563 + 1055000 0.006392193 0.0020231563 0.0051693138 + 1055100 0.0054748166 0.002830059 0.0055246953 + 1055200 0.0058358474 0.0033165703 0.0061889015 + 1055300 0.0053274433 0.0032224003 0.0058445013 + 1055400 0.0065979633 0.0035141798 0.0067616148 + 1055500 0.0064623669 0.0039308979 0.0071115941 + 1055600 0.0055512593 0.0042461384 0.0069783989 + 1055700 0.0049583532 0.0038020497 0.0062424892 + 1055800 0.0072128574 0.0029503413 0.0065004195 + 1055900 0.0047856689 0.0026550806 0.005010527 + 1056000 0.0055148774 0.0027748167 0.0054891704 + 1056100 0.0045738917 0.0032541372 0.0055053496 + 1056200 0.0041706814 0.0030272735 0.0050800307 + 1056300 0.0056687829 0.0025603505 0.0053504546 + 1056400 0.0061284795 0.002449477 0.005465838 + 1056500 0.0049895195 0.0030696623 0.0055254414 + 1056600 0.0053089628 0.0045063382 0.0071193434 + 1056700 0.0042309382 0.0046079341 0.006690349 + 1056800 0.0047912939 0.0039257182 0.0062839332 + 1056900 0.0056192189 0.0037414312 0.0065071405 + 1057000 0.0061075426 0.0037755561 0.0067816123 + 1057100 0.0064421477 0.0039003539 0.0070710985 + 1057200 0.0065264112 0.0032084111 0.0064206291 + 1057300 0.0057359477 0.0034881754 0.0063113372 + 1057400 0.0064406754 0.0033703576 0.0065403775 + 1057500 0.0057535585 0.0026365689 0.0054683985 + 1057600 0.0034232377 0.0024947119 0.0041795867 + 1057700 0.0056247851 0.0019677195 0.0047361684 + 1057800 0.004254431 0.0018008337 0.0038948115 + 1057900 0.0035345777 0.0018859172 0.0036255922 + 1058000 0.0059812839 0.0015778999 0.0045218131 + 1058100 0.0057870477 0.0019388495 0.004787162 + 1058200 0.0050670341 0.0024604192 0.0049543501 + 1058300 0.004313258 0.002756867 0.0048797986 + 1058400 0.0061697226 0.00220817 0.0052448304 + 1058500 0.0053358463 0.0025666724 0.0051929093 + 1058600 0.005491179 0.002608373 0.0053110627 + 1058700 0.0052154664 0.0027703229 0.0053373102 + 1058800 0.0072194714 0.0030646463 0.0066179799 + 1058900 0.004550959 0.0033812324 0.0056211575 + 1059000 0.0049061962 0.003233533 0.0056483014 + 1059100 0.0042060286 0.0029096613 0.004979816 + 1059200 0.0042236659 0.0029561942 0.0050350298 + 1059300 0.0040009846 0.0024745533 0.0044437879 + 1059400 0.0063952158 0.0019758052 0.0051234505 + 1059500 0.0052196957 0.0021747977 0.0047438667 + 1059600 0.0054383945 0.0027298097 0.0054065195 + 1059700 0.0045859365 0.0028093564 0.0050664971 + 1059800 0.0055176766 0.0025771745 0.005292906 + 1059900 0.0056292365 0.0025716419 0.0053422817 + 1060000 0.0040126907 0.0027644989 0.0047394951 + 1060100 0.0059426976 0.0029319419 0.0058568634 + 1060200 0.0043334723 0.0031743624 0.0053072433 + 1060300 0.0054897429 0.0027670858 0.0054690686 + 1060400 0.0051299733 0.0022694991 0.0047944079 + 1060500 0.0056586471 0.0018471167 0.0046322321 + 1060600 0.0037155739 0.0015496331 0.0033783921 + 1060700 0.0056103468 0.0014365452 0.0041978877 + 1060800 0.0056839808 0.0020766006 0.0048741848 + 1060900 0.0046553524 0.0020955578 0.0043868641 + 1061000 0.0052868761 0.001716578 0.0043187123 + 1061100 0.0060898976 0.0016818852 0.0046792567 + 1061200 0.0053120306 0.0016705273 0.0042850424 + 1061300 0.0053549546 0.001565074 0.0042007157 + 1061400 0.0061281949 0.0015772183 0.0045934392 + 1061500 0.0040948292 0.001645915 0.0036613388 + 1061600 0.0053393289 0.0016396001 0.0042675511 + 1061700 0.0050309686 0.0019411305 0.0044173104 + 1061800 0.0037588973 0.0026587595 0.0045088418 + 1061900 0.004582652 0.002804854 0.0050603781 + 1062000 0.0070984461 0.0025331379 0.0060269044 + 1062100 0.0057518364 0.0023355077 0.0051664897 + 1062200 0.0044895378 0.0026551988 0.0048648932 + 1062300 0.0046208707 0.0026782401 0.0049525749 + 1062400 0.0040858275 0.0023599309 0.0043709242 + 1062500 0.0039419753 0.0022044975 0.0041446885 + 1062600 0.0043323455 0.0022161696 0.0043484959 + 1062700 0.0051570874 0.0020015138 0.0045397677 + 1062800 0.0057958685 0.0017352069 0.0045878609 + 1062900 0.0042763753 0.0021104423 0.0042152208 + 1063000 0.0052149453 0.002310091 0.0048768219 + 1063100 0.0060593303 0.0019882184 0.004970545 + 1063200 0.0055513122 0.0018660051 0.0045982916 + 1063300 0.0041249339 0.0019360779 0.0039663188 + 1063400 0.0038831049 0.0020012734 0.0039124891 + 1063500 0.0050009244 0.0020923654 0.0045537579 + 1063600 0.0045351476 0.0026829683 0.0049151112 + 1063700 0.0047605745 0.0024757163 0.0048188116 + 1063800 0.0057277958 0.0024716145 0.005290764 + 1063900 0.00357918 0.0026853306 0.0044469582 + 1064000 0.0076795858 0.0023398396 0.0061196357 + 1064100 0.0055342751 0.0026643974 0.0053882984 + 1064200 0.0060313589 0.0031405553 0.0061091147 + 1064300 0.0065885679 0.0029835287 0.0062263395 + 1064400 0.0057632722 0.0025721444 0.005408755 + 1064500 0.0051223115 0.0027184014 0.0052395391 + 1064600 0.0059152499 0.0025434626 0.0054548747 + 1064700 0.0040735594 0.0025798194 0.0045847744 + 1064800 0.0041294043 0.0028008187 0.0048332599 + 1064900 0.0050424386 0.0026398529 0.0051216781 + 1065000 0.0050091902 0.0022007599 0.0046662207 + 1065100 0.0065982896 0.0020528636 0.0053004592 + 1065200 0.006649544 0.0019493579 0.0052221803 + 1065300 0.0048615553 0.0019026907 0.0042954875 + 1065400 0.0037654878 0.0021771459 0.0040304719 + 1065500 0.0052552894 0.0019820075 0.0045685952 + 1065600 0.0049672013 0.0017233238 0.0041681182 + 1065700 0.0041472755 0.001760672 0.0038019092 + 1065800 0.0044470919 0.0018128844 0.0040016875 + 1065900 0.0047786432 0.0022630805 0.0046150689 + 1066000 0.0060715482 0.0025067599 0.0054951001 + 1066100 0.0061635634 0.0025781844 0.0056118133 + 1066200 0.0053115237 0.0026271061 0.0052413717 + 1066300 0.0053717478 0.0024786217 0.0051225288 + 1066400 0.0065723857 0.0029599581 0.0061948042 + 1066500 0.0047507252 0.0031028566 0.0054411042 + 1066600 0.0074728911 0.0027159893 0.0063940528 + 1066700 0.004773774 0.0028648581 0.00521445 + 1066800 0.0053395957 0.0024405457 0.005068628 + 1066900 0.005866971 0.002494611 0.0053822608 + 1067000 0.0048421061 0.0026677185 0.0050509426 + 1067100 0.0047621588 0.0028802797 0.0052241547 + 1067200 0.0066201856 0.0022334361 0.0054918087 + 1067300 0.0041436223 0.0018509037 0.0038903428 + 1067400 0.0057628416 0.0019117902 0.0047481888 + 1067500 0.0047134507 0.0023249914 0.0046448929 + 1067600 0.0070157422 0.00197306 0.0054261206 + 1067700 0.0052496312 0.0021844588 0.0047682617 + 1067800 0.0045053071 0.0027827298 0.0050001856 + 1067900 0.004174388 0.0027237383 0.0047783199 + 1068000 0.0055886214 0.0024828195 0.0052334691 + 1068100 0.005841186 0.0028029681 0.0056779268 + 1068200 0.0044017724 0.002924487 0.0050909843 + 1068300 0.0057393656 0.0027612081 0.0055860521 + 1068400 0.0042842752 0.0026320975 0.0047407642 + 1068500 0.0056961496 0.0024978604 0.0053014341 + 1068600 0.0056455238 0.0020388752 0.0048175315 + 1068700 0.0052070783 0.0022031318 0.0047659906 + 1068800 0.0063627747 0.0028170835 0.0059487617 + 1068900 0.004514986 0.0032811689 0.0055033886 + 1069000 0.0049010255 0.0027801098 0.0051923333 + 1069100 0.0045939044 0.0025181876 0.0047792499 + 1069200 0.004390983 0.0017327119 0.0038938988 + 1069300 0.0037511432 0.0015180858 0.0033643516 + 1069400 0.0038711375 0.0018722093 0.0037775348 + 1069500 0.0050676779 0.001938108 0.0044323557 + 1069600 0.0043755418 0.0024778803 0.0046314673 + 1069700 0.006115464 0.0023860154 0.0053959703 + 1069800 0.0066026473 0.0022180703 0.0054678108 + 1069900 0.0049044111 0.0023402862 0.0047541761 + 1070000 0.0036244935 0.0025998111 0.0043837415 + 1070100 0.0043996482 0.0019022076 0.0040676595 + 1070200 0.0057514005 0.0019072231 0.0047379905 + 1070300 0.0050155128 0.002200525 0.0046690977 + 1070400 0.0048824211 0.0022761776 0.0046792442 + 1070500 0.0037710931 0.0028136051 0.00466969 + 1070600 0.0036147151 0.0028883859 0.0046675034 + 1070700 0.0055097087 0.0025701362 0.005281946 + 1070800 0.007366155 0.0022683349 0.0058938643 + 1070900 0.0042009789 0.0028643037 0.004931973 + 1071000 0.0045466703 0.0029875217 0.005225336 + 1071100 0.0054696936 0.0026213159 0.0053134307 + 1071200 0.0060052949 0.0022301124 0.0051858435 + 1071300 0.0053750765 0.0021597839 0.0048053294 + 1071400 0.0032221373 0.0022637534 0.0038496492 + 1071500 0.0043095853 0.0022033629 0.0043244869 + 1071600 0.0050467839 0.0021010726 0.0045850366 + 1071700 0.0043208035 0.0025936202 0.0047202657 + 1071800 0.0052540225 0.0030932876 0.0056792518 + 1071900 0.0064476848 0.0027998983 0.0059733682 + 1072000 0.0058607397 0.0027023453 0.0055869281 + 1072100 0.0058482496 0.0020332934 0.0049117288 + 1072200 0.0058519682 0.0020830808 0.0049633464 + 1072300 0.0057541972 0.0027795029 0.0056116468 + 1072400 0.0052000938 0.0028729709 0.005432392 + 1072500 0.0048532649 0.0027870366 0.005175753 + 1072600 0.005776632 0.0026447414 0.0054879274 + 1072700 0.0054252316 0.0025056931 0.0051759243 + 1072800 0.0062695443 0.0026674273 0.0057532187 + 1072900 0.0043475927 0.0024215995 0.0045614303 + 1073000 0.0042266052 0.0022283569 0.0043086391 + 1073100 0.0046162285 0.0022703413 0.0045423913 + 1073200 0.0046294715 0.0025142477 0.0047928157 + 1073300 0.0033966322 0.0026269133 0.0042986933 + 1073400 0.0064052188 0.0023934425 0.0055460112 + 1073500 0.0060203153 0.0026043912 0.0055675152 + 1073600 0.004719066 0.0030919927 0.005414658 + 1073700 0.0074794108 0.0026579508 0.0063392233 + 1073800 0.0068165206 0.002706163 0.0060611693 + 1073900 0.0045564188 0.0029257534 0.0051683658 + 1074000 0.0052822853 0.0034473729 0.0060472477 + 1074100 0.0038318879 0.0037577365 0.0056437438 + 1074200 0.0058850523 0.0034188257 0.0063153748 + 1074300 0.0050030393 0.0028437468 0.0053061802 + 1074400 0.0051725702 0.0022050832 0.0047509576 + 1074500 0.004841802 0.0023034264 0.0046865008 + 1074600 0.0044580393 0.0021370969 0.0043312881 + 1074700 0.0050403922 0.001780517 0.0042613351 + 1074800 0.0039254778 0.001806484 0.0037385551 + 1074900 0.0045695119 0.002014284 0.0042633406 + 1075000 0.0052673195 0.0024692315 0.0050617403 + 1075100 0.0042313269 0.0025792318 0.004661838 + 1075200 0.0055118661 0.0023316338 0.0050445054 + 1075300 0.0057189953 0.0025766208 0.0053914388 + 1075400 0.0036985005 0.0024082249 0.0042285806 + 1075500 0.0053209676 0.0024169922 0.005035906 + 1075600 0.0053020984 0.0026546878 0.0052643143 + 1075700 0.0046974494 0.0028792878 0.0051913137 + 1075800 0.0061760715 0.0030154041 0.0060551893 + 1075900 0.0052445354 0.0030932407 0.0056745354 + 1076000 0.0036857136 0.0025468615 0.0043609237 + 1076100 0.0054846777 0.0025652329 0.0052647227 + 1076200 0.0045802366 0.0028917112 0.0051460465 + 1076300 0.0047184285 0.0029389111 0.0052612627 + 1076400 0.0044655966 0.0030961292 0.00529404 + 1076500 0.0059289669 0.0030571803 0.0059753437 + 1076600 0.0064624467 0.0024033465 0.005584082 + 1076700 0.004387741 0.0020850858 0.004244677 + 1076800 0.0049461332 0.0021037503 0.0045381752 + 1076900 0.0044455142 0.0025253606 0.0047133871 + 1077000 0.0057261417 0.0029104177 0.005728753 + 1077100 0.0041892608 0.0031385046 0.0052004064 + 1077200 0.0045750366 0.0025823447 0.0048341205 + 1077300 0.0052304378 0.0024347093 0.0050090654 + 1077400 0.0048359497 0.0027841294 0.0051643233 + 1077500 0.0051900252 0.0032653728 0.0058198384 + 1077600 0.0048331423 0.0036155012 0.0059943134 + 1077700 0.0052589887 0.0035104136 0.0060988222 + 1077800 0.0054003997 0.0029817499 0.0056397592 + 1077900 0.00578198 0.0030208154 0.0058666336 + 1078000 0.0049427413 0.003602896 0.0060356515 + 1078100 0.0049502678 0.0035783781 0.0060148381 + 1078200 0.0049192747 0.0031954153 0.0056166208 + 1078300 0.0044424553 0.003561313 0.005747834 + 1078400 0.0048101978 0.0037896446 0.0061571638 + 1078500 0.0047609421 0.0034986031 0.0058418793 + 1078600 0.0046757811 0.0031997045 0.0055010655 + 1078700 0.0046495486 0.0030228882 0.0053113379 + 1078800 0.0048280262 0.0031776122 0.0055539064 + 1078900 0.0047690978 0.0032666028 0.0056138931 + 1079000 0.0046585043 0.0032013578 0.0054942154 + 1079100 0.0055452677 0.0031540874 0.0058833988 + 1079200 0.0062240997 0.0028355945 0.0058990185 + 1079300 0.0061222092 0.0029855291 0.0059988039 + 1079400 0.0048408835 0.0032107604 0.0055933827 + 1079500 0.0046238934 0.0028938558 0.0051696783 + 1079600 0.0070681444 0.0026490425 0.0061278948 + 1079700 0.0043256621 0.0032076955 0.0053367323 + 1079800 0.0061840187 0.0030542165 0.0060979132 + 1079900 0.0035235855 0.0030759134 0.0048101781 + 1080000 0.0040653203 0.0025929534 0.0045938532 + 1080100 0.0063693355 0.0022263148 0.0053612221 + 1080200 0.0048261047 0.002406281 0.0047816294 + 1080300 0.0057570943 0.002542893 0.0053764628 + 1080400 0.0067590039 0.0023637122 0.0056904094 + 1080500 0.0067346567 0.0023583301 0.005673044 + 1080600 0.0050233111 0.0023137969 0.0047862079 + 1080700 0.0035783958 0.0024553934 0.0042166351 + 1080800 0.0049882252 0.0025085116 0.0049636536 + 1080900 0.0055785807 0.0026168808 0.0053625885 + 1081000 0.0061853799 0.0027857389 0.0058301055 + 1081100 0.0065065598 0.002691254 0.0058937014 + 1081200 0.0046450132 0.0031120423 0.0053982598 + 1081300 0.0059068966 0.0028452056 0.0057525062 + 1081400 0.0058452637 0.0020962444 0.0049732101 + 1081500 0.0040851058 0.0020058129 0.0040164509 + 1081600 0.0046555945 0.0020368086 0.004328234 + 1081700 0.0041842364 0.0017678698 0.0038272987 + 1081800 0.0038214555 0.0016707911 0.0035516637 + 1081900 0.0060523789 0.0019014037 0.0048803089 + 1082000 0.0052227189 0.0024609679 0.0050315248 + 1082100 0.0060742062 0.0027669499 0.0057565983 + 1082200 0.0050696415 0.0033449617 0.0058401759 + 1082300 0.006828024 0.0025696723 0.0059303404 + 1082400 0.0057358634 0.0028981662 0.0057212864 + 1082500 0.0041852859 0.0031421766 0.005202122 + 1082600 0.0061914627 0.0029199973 0.0059673579 + 1082700 0.0062737743 0.0027457085 0.0058335818 + 1082800 0.0053012131 0.0024652256 0.0050744164 + 1082900 0.004454388 0.002508989 0.0047013831 + 1083000 0.0061231073 0.0024099527 0.0054236696 + 1083100 0.0038708456 0.0025421425 0.0044473244 + 1083200 0.005240578 0.0024543846 0.0050337316 + 1083300 0.0054296114 0.0024383084 0.0051106952 + 1083400 0.0071852183 0.0023249905 0.0058614652 + 1083500 0.0065204057 0.0022984878 0.0055077499 + 1083600 0.0041583091 0.0025105389 0.0045572066 + 1083700 0.0060062272 0.0022635761 0.005219766 + 1083800 0.0052791463 0.002501247 0.0050995769 + 1083900 0.0041701918 0.0029500561 0.0050025724 + 1084000 0.0069774098 0.0022117555 0.0056459493 + 1084100 0.0051981367 0.0016432927 0.0042017506 + 1084200 0.0034955542 0.0015223978 0.0032428659 + 1084300 0.0053507899 0.0020647973 0.0046983892 + 1084400 0.0051166858 0.0026951671 0.0052135359 + 1084500 0.004823597 0.0030029438 0.0053770579 + 1084600 0.004938037 0.0027900435 0.0052204836 + 1084700 0.0039981874 0.0026848518 0.0046527096 + 1084800 0.0050213885 0.0026899918 0.0051614565 + 1084900 0.0040706679 0.0027096805 0.0047132124 + 1085000 0.0051159481 0.0024818649 0.0049998706 + 1085100 0.0049087564 0.0027960061 0.0052120346 + 1085200 0.0050154735 0.0025423165 0.0050108698 + 1085300 0.0055909216 0.0023327391 0.0050845209 + 1085400 0.0038673268 0.0027566722 0.0046601221 + 1085500 0.0048876961 0.0027425427 0.0051482056 + 1085600 0.005449673 0.0021395541 0.004821815 + 1085700 0.0043152878 0.0018988622 0.0040227929 + 1085800 0.0065477569 0.0022316966 0.0054544207 + 1085900 0.0059218593 0.0034272297 0.0063418948 + 1086000 0.004828849 0.003172581 0.0055492801 + 1086100 0.0053369372 0.0021921553 0.0048189291 + 1086200 0.0050334788 0.0019398928 0.0044173081 + 1086300 0.0059141085 0.002334398 0.0052452482 + 1086400 0.0052784426 0.0023997769 0.0049977604 + 1086500 0.0064607796 0.0029721423 0.0061520573 + 1086600 0.0053644587 0.0029376332 0.0055779528 + 1086700 0.0066623286 0.002919432 0.0061985468 + 1086800 0.0038084122 0.0027073339 0.0045817868 + 1086900 0.0040804671 0.0025393404 0.0045476953 + 1087000 0.0038595577 0.0021702546 0.0040698807 + 1087100 0.0050207979 0.0021793002 0.0046504742 + 1087200 0.0046126151 0.0025643787 0.0048346502 + 1087300 0.0060035852 0.0027058036 0.0056606932 + 1087400 0.0044261941 0.003109418 0.0052879354 + 1087500 0.0048141176 0.0033787504 0.0057481989 + 1087600 0.0052779414 0.0029418973 0.0055396341 + 1087700 0.0036195879 0.0029262482 0.0047077641 + 1087800 0.004180247 0.0027759393 0.0048334046 + 1087900 0.0043625097 0.0027920923 0.004939265 + 1088000 0.0043745564 0.0030057364 0.0051588384 + 1088100 0.0033295615 0.0034892546 0.0051280231 + 1088200 0.0052028032 0.0032730449 0.0058337996 + 1088300 0.0052290525 0.0033817117 0.005955386 + 1088400 0.005123541 0.0030114041 0.005533147 + 1088500 0.0065177194 0.0023470256 0.0055549656 + 1088600 0.0054590785 0.00221387 0.0049007602 + 1088700 0.0051443304 0.0024938962 0.0050258713 + 1088800 0.0041590719 0.0027704328 0.004817476 + 1088900 0.0041239032 0.0028947435 0.0049244772 + 1089000 0.0063530118 0.0029244896 0.0060513626 + 1089100 0.004359733 0.0032489615 0.0053947676 + 1089200 0.0049166865 0.0035487045 0.0059686362 + 1089300 0.0060104603 0.0034910762 0.0064493497 + 1089400 0.0054945575 0.0030407135 0.0057450661 + 1089500 0.0057993887 0.0027509463 0.005605333 + 1089600 0.004620177 0.0028189206 0.005092914 + 1089700 0.0037092088 0.0028420626 0.0046676888 + 1089800 0.0043284144 0.0030437195 0.005174111 + 1089900 0.0056281012 0.0031449167 0.0059149978 + 1090000 0.0042124977 0.0032502663 0.005323605 + 1090100 0.0045506032 0.0028172726 0.0050570226 + 1090200 0.0053347953 0.002574581 0.0052003006 + 1090300 0.0043116512 0.0026126879 0.0047348287 + 1090400 0.0055920414 0.0024056565 0.0051579893 + 1090500 0.0044018555 0.0026230644 0.0047896026 + 1090600 0.005770624 0.0028425754 0.0056828044 + 1090700 0.0052082505 0.0032845389 0.0058479747 + 1090800 0.0058641799 0.0032711927 0.0061574688 + 1090900 0.0049626332 0.0029143158 0.0053568618 + 1091000 0.0065239534 0.0026128168 0.0058238251 + 1091100 0.0061425123 0.0030065233 0.006029791 + 1091200 0.0046643265 0.0033559212 0.0056516444 + 1091300 0.0059405598 0.0030735504 0.0059974197 + 1091400 0.0055261238 0.0026535724 0.0053734615 + 1091500 0.0053772605 0.0023296178 0.0049762382 + 1091600 0.0043481747 0.0023990736 0.0045391908 + 1091700 0.0042488852 0.0024249343 0.0045161825 + 1091800 0.0053273092 0.0024531886 0.0050752236 + 1091900 0.0038770329 0.002534241 0.0044424681 + 1092000 0.0053972015 0.0023192122 0.0049756473 + 1092100 0.0054179391 0.0027242549 0.0053908968 + 1092200 0.0052171407 0.0033752722 0.0059430836 + 1092300 0.0046485103 0.0035138794 0.0058018181 + 1092400 0.0063302805 0.003321107 0.0064367919 + 1092500 0.0053973039 0.0037079042 0.0063643897 + 1092600 0.0077126518 0.0030336152 0.006829686 + 1092700 0.0062439261 0.002613754 0.0056869364 + 1092800 0.0058687273 0.0028710929 0.0057596071 + 1092900 0.0069154545 0.0031533841 0.0065570843 + 1093000 0.0042310226 0.0029021803 0.0049846367 + 1093100 0.0059873554 0.0028782594 0.0058251609 + 1093200 0.0056089886 0.0030218662 0.0057825403 + 1093300 0.0050334535 0.0033306376 0.0058080405 + 1093400 0.0082327474 0.002656526 0.0067085814 + 1093500 0.0050960159 0.0026098689 0.0051180643 + 1093600 0.0064388129 0.0027739553 0.0059430585 + 1093700 0.0044725899 0.0029828382 0.005184191 + 1093800 0.0063083694 0.002605975 0.0057108756 + 1093900 0.0057683851 0.0024542958 0.0052934229 + 1094000 0.004222339 0.0025811201 0.0046593026 + 1094100 0.0055726724 0.0033440361 0.0060868358 + 1094200 0.0056866909 0.0036718478 0.0064707659 + 1094300 0.0054204759 0.0035276765 0.006195567 + 1094400 0.0055296174 0.0033436822 0.0060652908 + 1094500 0.0040030758 0.0031825821 0.005152846 + 1094600 0.0066659227 0.002647229 0.0059281128 + 1094700 0.005827733 0.002564425 0.0054327623 + 1094800 0.0056191491 0.0026486609 0.0054143358 + 1094900 0.0043307509 0.0032307565 0.005362298 + 1095000 0.0044171909 0.0027571699 0.004931256 + 1095100 0.0047728946 0.00280179 0.005150949 + 1095200 0.0062497328 0.0024003655 0.0054764058 + 1095300 0.0050437757 0.0025898814 0.0050723648 + 1095400 0.0036329235 0.0027482362 0.0045363158 + 1095500 0.005610335 0.0026220713 0.005383408 + 1095600 0.0055296798 0.0028694236 0.0055910629 + 1095700 0.005138995 0.0033289373 0.0058582864 + 1095800 0.0046301057 0.0032167767 0.0054956568 + 1095900 0.0046121916 0.003161965 0.0054320281 + 1096000 0.0054283467 0.0031809461 0.0058527105 + 1096100 0.0039459157 0.0032243972 0.0051665275 + 1096200 0.0043233236 0.0027103273 0.0048382132 + 1096300 0.0057331979 0.0025833607 0.0054051691 + 1096400 0.0046604104 0.0029756063 0.005269402 + 1096500 0.0062570315 0.0036096963 0.0066893289 + 1096600 0.0063306861 0.00379917 0.0069150546 + 1096700 0.0040155472 0.0033797392 0.0053561413 + 1096800 0.0048825688 0.002858169 0.0052613083 + 1096900 0.0049948954 0.0026693845 0.0051278095 + 1097000 0.0059394674 0.0027035402 0.0056268718 + 1097100 0.0069697487 0.0026357406 0.0060661638 + 1097200 0.0042927509 0.0030000695 0.0051129079 + 1097300 0.0049023496 0.0028316353 0.0052445105 + 1097400 0.0060011668 0.0029761349 0.0059298342 + 1097500 0.0053876896 0.0029114111 0.0055631646 + 1097600 0.0056382814 0.0026563798 0.0054314714 + 1097700 0.0070835505 0.0023953117 0.0058817468 + 1097800 0.0057231581 0.0023072287 0.0051240956 + 1097900 0.0053039709 0.0021798597 0.0047904078 + 1098000 0.004788489 0.0018576008 0.0042144353 + 1098100 0.0042013265 0.0018168772 0.0038847176 + 1098200 0.00446851 0.0019814854 0.0041808302 + 1098300 0.0047219557 0.0022366803 0.0045607679 + 1098400 0.004369189 0.0022386456 0.0043891058 + 1098500 0.0040052193 0.0018875362 0.0038588551 + 1098600 0.0047382816 0.002000718 0.004332841 + 1098700 0.005923213 0.0029066347 0.0058219661 + 1098800 0.0056778021 0.0035289047 0.0063234479 + 1098900 0.0070555044 0.002916203 0.0063888341 + 1099000 0.0072048016 0.0030789026 0.0066250159 + 1099100 0.0066365152 0.0029762179 0.0062426277 + 1099200 0.0047461465 0.0029145459 0.0052505398 + 1099300 0.0045724226 0.0029592078 0.0052096971 + 1099400 0.0068306551 0.0021730429 0.0055350059 + 1099500 0.0042358586 0.0019335274 0.0040183641 + 1099600 0.0035463419 0.00216291 0.0039083752 + 1099700 0.0038326747 0.0021533131 0.0040397077 + 1099800 0.005086479 0.0021102807 0.0046137821 + 1099900 0.0044673381 0.0022872039 0.0044859718 + 1100000 0.0058964972 0.0028215728 0.005723755 + 1100100 0.00498512 0.0029993638 0.0054529776 + 1100200 0.0055015243 0.0024816416 0.005189423 + 1100300 0.0073798308 0.0020600139 0.0056922744 + 1100400 0.0043084838 0.0027274697 0.0048480516 + 1100500 0.0048700778 0.0026323365 0.005029328 + 1100600 0.005626996 0.002607548 0.0053770851 + 1100700 0.0034720887 0.0030057222 0.0047146408 + 1100800 0.0051718192 0.0022842801 0.0048297848 + 1100900 0.0056709335 0.0019534868 0.0047446494 + 1101000 0.0064421999 0.0022116816 0.0053824519 + 1101100 0.0044019929 0.0027498418 0.0049164477 + 1101200 0.0052329331 0.0028275565 0.0054031408 + 1101300 0.0061940429 0.0027415691 0.0057901996 + 1101400 0.0059513597 0.0027084644 0.0056376493 + 1101500 0.0075495493 0.0024222086 0.0061380024 + 1101600 0.0054514444 0.0023420687 0.0050252015 + 1101700 0.0056783517 0.0027323685 0.0055271822 + 1101800 0.0055976512 0.0028914594 0.0056465533 + 1101900 0.0042131913 0.0030105743 0.0050842544 + 1102000 0.0061123043 0.0027505116 0.0057589114 + 1102100 0.0042087365 0.0034124381 0.0054839255 + 1102200 0.0069741817 0.0026569773 0.0060895823 + 1102300 0.0059008562 0.0021652996 0.0050696273 + 1102400 0.005976986 0.0025011958 0.0054429936 + 1102500 0.0066172381 0.0027330961 0.005990018 + 1102600 0.0056241259 0.0023671297 0.0051352542 + 1102700 0.0054706326 0.002208501 0.0049010779 + 1102800 0.0056374476 0.0024804578 0.005255139 + 1102900 0.0041726924 0.0021502968 0.0042040438 + 1103000 0.0055534963 0.0015586125 0.004291974 + 1103100 0.0050941586 0.0020368495 0.0045441307 + 1103200 0.0046570368 0.0020808634 0.0043729987 + 1103300 0.0043832222 0.002333621 0.0044909882 + 1103400 0.0044555119 0.0025516773 0.0047446246 + 1103500 0.0049642813 0.0026124683 0.0050558255 + 1103600 0.0060503425 0.0028957526 0.0058736556 + 1103700 0.0051577058 0.0026595735 0.0051981318 + 1103800 0.0058202784 0.0026558015 0.0055204698 + 1103900 0.0058956483 0.0029483244 0.0058500887 + 1104000 0.0049033871 0.0029546977 0.0053680835 + 1104100 0.0072433831 0.0023425188 0.0059076214 + 1104200 0.0056910615 0.0022520712 0.0050531405 + 1104300 0.005445554 0.0023419635 0.0050221971 + 1104400 0.0059358265 0.0022093135 0.0051308531 + 1104500 0.0046463945 0.0027605439 0.0050474412 + 1104600 0.0068434884 0.0028847 0.0062529794 + 1104700 0.0048378495 0.0035468761 0.0059280051 + 1104800 0.0059803738 0.0035000048 0.0064434701 + 1104900 0.0067999823 0.0033658437 0.00671271 + 1105000 0.0063224547 0.0025905511 0.0057023842 + 1105100 0.0045295977 0.0027842294 0.0050136408 + 1105200 0.0035810455 0.002994907 0.0047574528 + 1105300 0.0076634288 0.0025917826 0.0063636265 + 1105400 0.0056613079 0.0027424675 0.0055288925 + 1105500 0.0050584921 0.002753312 0.0052430386 + 1105600 0.0039391829 0.0026940899 0.0046329065 + 1105700 0.004129687 0.0029002116 0.0049327919 + 1105800 0.0043574441 0.0028368954 0.0049815749 + 1105900 0.0055898594 0.0030259142 0.0057771731 + 1106000 0.0046410503 0.0033293001 0.005613567 + 1106100 0.0052175084 0.0029800702 0.0055480627 + 1106200 0.0046835036 0.0022602746 0.0045654365 + 1106300 0.0050396388 0.0019345967 0.0044150439 + 1106400 0.004780182 0.0018998365 0.0042525823 + 1106500 0.0041076749 0.002232467 0.0042542133 + 1106600 0.0043883404 0.0025034246 0.0046633108 + 1106700 0.0055215868 0.0019190265 0.0046366825 + 1106800 0.0062645247 0.0019334817 0.0050168024 + 1106900 0.006776714 0.0024513237 0.0057867376 + 1107000 0.003939363 0.0025818941 0.0045207993 + 1107100 0.0054737708 0.0023053265 0.004999448 + 1107200 0.0053219687 0.0024843063 0.0051037127 + 1107300 0.0040140027 0.002713159 0.004688801 + 1107400 0.0048580946 0.0027653613 0.0051564547 + 1107500 0.0048401444 0.0027939281 0.0051761867 + 1107600 0.0062439962 0.0033471401 0.006420357 + 1107700 0.0053947284 0.0034237314 0.0060789493 + 1107800 0.0054506493 0.0029211627 0.0056039042 + 1107900 0.0054910513 0.0029718666 0.0056744934 + 1108000 0.0064025228 0.0029371454 0.006088387 + 1108100 0.0050482827 0.002561892 0.0050465937 + 1108200 0.0049785162 0.0024788572 0.0049292207 + 1108300 0.0047043281 0.002681684 0.0049970955 + 1108400 0.0062239695 0.0022674154 0.0053307754 + 1108500 0.0057116906 0.0019768639 0.0047880866 + 1108600 0.0040762258 0.0018362636 0.0038425309 + 1108700 0.004622507 0.0016418472 0.0039169874 + 1108800 0.0047270189 0.0018533547 0.0041799343 + 1108900 0.0051361483 0.0024763651 0.0050043131 + 1109000 0.0043596408 0.0028127601 0.0049585208 + 1109100 0.0051165492 0.0027628922 0.0052811937 + 1109200 0.0061456121 0.0031271589 0.0061519523 + 1109300 0.005156352 0.003407012 0.005944904 + 1109400 0.0060932994 0.0028100926 0.0058091384 + 1109500 0.0045957293 0.0021393798 0.0044013404 + 1109600 0.0052858143 0.0024599835 0.0050615953 + 1109700 0.0042785233 0.0030414075 0.0051472432 + 1109800 0.0048497987 0.0029226095 0.0053096198 + 1109900 0.0044277551 0.0028915679 0.0050708536 + 1110000 0.0041350881 0.0028794884 0.0049147271 + 1110100 0.0058940553 0.0028923404 0.0057933207 + 1110200 0.0060263875 0.0029086248 0.0058747374 + 1110300 0.005629684 0.0028717441 0.0056426042 + 1110400 0.005489766 0.0029003033 0.0056022975 + 1110500 0.0064972488 0.0023540105 0.0055518751 + 1110600 0.0045324099 0.0021596553 0.0043904508 + 1110700 0.0041372386 0.0025462803 0.0045825774 + 1110800 0.0058191921 0.0028137331 0.0056778667 + 1110900 0.0047363888 0.0030802342 0.0054114256 + 1111000 0.0061265045 0.0023251833 0.0053405722 + 1111100 0.0034962129 0.0020666596 0.0037874519 + 1111200 0.0053692045 0.0022146625 0.0048573179 + 1111300 0.0044633877 0.0024494886 0.0046463123 + 1111400 0.0043288452 0.0028053301 0.0049359336 + 1111500 0.0043235562 0.002867982 0.0049959823 + 1111600 0.0061192333 0.0026386135 0.0056504237 + 1111700 0.0050407607 0.0027601392 0.0052411386 + 1111800 0.0071418957 0.0030809078 0.0065960596 + 1111900 0.0044982726 0.0032789128 0.0054929064 + 1112000 0.007021251 0.0028967331 0.0063525051 + 1112100 0.0056399892 0.0026336111 0.0054095432 + 1112200 0.0054314115 0.0025008303 0.0051741031 + 1112300 0.0076602057 0.002888359 0.0066586165 + 1112400 0.0046123804 0.0030217336 0.0052918896 + 1112500 0.0060030652 0.0027859074 0.005740541 + 1112600 0.0041831262 0.0029630435 0.005021926 + 1112700 0.0056361783 0.0031149313 0.0058889878 + 1112800 0.0058998347 0.0029216089 0.0058254338 + 1112900 0.0037879987 0.0033003677 0.0051647733 + 1113000 0.0048227849 0.0029372453 0.0053109598 + 1113100 0.0073451483 0.0026301645 0.0062453547 + 1113200 0.0058483043 0.0032439437 0.006122406 + 1113300 0.0049723448 0.0037705819 0.0062179078 + 1113400 0.0060192937 0.0033813594 0.0063439806 + 1113500 0.0049577407 0.0033490719 0.0057892099 + 1113600 0.0063859482 0.002885276 0.0060283598 + 1113700 0.0052133104 0.0028426061 0.0054085323 + 1113800 0.0064925966 0.0026799041 0.005875479 + 1113900 0.0043910359 0.0029127513 0.0050739642 + 1114000 0.0046042381 0.0027714446 0.005037593 + 1114100 0.0051348718 0.002746836 0.0052741557 + 1114200 0.0052972324 0.0025609802 0.0051682118 + 1114300 0.0055321412 0.0025951344 0.0053179852 + 1114400 0.0064588287 0.0026482467 0.0058272014 + 1114500 0.0059946804 0.0024537136 0.0054042203 + 1114600 0.00506856 0.0025607417 0.0050554235 + 1114700 0.004079682 0.002518074 0.0045260425 + 1114800 0.0046252436 0.0020204196 0.0042969067 + 1114900 0.0055722192 0.0017501652 0.0044927418 + 1115000 0.0076493272 0.0021252153 0.0058901185 + 1115100 0.0033788461 0.0027088295 0.0043718553 + 1115200 0.004926402 0.0026338398 0.0050585533 + 1115300 0.0051135781 0.0023730127 0.004889852 + 1115400 0.0048765689 0.0025254066 0.0049255928 + 1115500 0.00561473 0.0025194608 0.0052829607 + 1115600 0.0052543377 0.0022372035 0.0048233228 + 1115700 0.0058937321 0.0020338894 0.0049347106 + 1115800 0.0050807833 0.0023646213 0.0048653193 + 1115900 0.0044916403 0.0025179668 0.004728696 + 1116000 0.0059594793 0.0022952809 0.0052284621 + 1116100 0.004125421 0.0026195274 0.0046500081 + 1116200 0.0050678136 0.0025018039 0.0049961184 + 1116300 0.0054322068 0.0022266146 0.0049002788 + 1116400 0.0050397955 0.0020035653 0.0044840897 + 1116500 0.0061988995 0.0022884472 0.005339468 + 1116600 0.0060118279 0.0024641851 0.0054231316 + 1116700 0.0045444305 0.0021939512 0.0044306631 + 1116800 0.0041106195 0.0019891339 0.0040123294 + 1116900 0.0060691141 0.0019083148 0.0048954569 + 1117000 0.004156578 0.0023301626 0.0043759784 + 1117100 0.0061771046 0.0023550938 0.0053953875 + 1117200 0.0070029615 0.001978103 0.005424873 + 1117300 0.0056788464 0.0018903744 0.0046854316 + 1117400 0.003265659 0.0019777585 0.003585075 + 1117500 0.0033510687 0.0025133751 0.0041627292 + 1117600 0.00447908 0.0021574214 0.0043619686 + 1117700 0.0052094981 0.0020450649 0.0046091147 + 1117800 0.0043277876 0.0022937522 0.0044238352 + 1117900 0.0062890176 0.0020517868 0.0051471627 + 1118000 0.005153367 0.0020489557 0.0045853785 + 1118100 0.0042477159 0.0018152976 0.0039059702 + 1118200 0.0046980551 0.0019587773 0.0042711013 + 1118300 0.0046819222 0.0025165433 0.0048209269 + 1118400 0.0047627684 0.0027462713 0.0050904463 + 1118500 0.0049225649 0.0024198526 0.0048426775 + 1118600 0.0035059263 0.0026980004 0.0044235735 + 1118700 0.0066539918 0.0029532848 0.0062282964 + 1118800 0.0046478547 0.0034329798 0.0057205958 + 1118900 0.0057493864 0.0029928159 0.005822592 + 1119000 0.0048789635 0.0023965506 0.0047979155 + 1119100 0.0033870021 0.0024797063 0.0041467464 + 1119200 0.004610672 0.0023303402 0.0045996553 + 1119300 0.0051251807 0.00183094 0.0043534898 + 1119400 0.0045706971 0.0016409615 0.0038906015 + 1119500 0.0045536989 0.0018955022 0.0041367759 + 1119600 0.0040804952 0.0020388906 0.0040472593 + 1119700 0.0047952081 0.0020397247 0.0043998662 + 1119800 0.0046072477 0.0018494379 0.0041170677 + 1119900 0.0052350998 0.0016650809 0.0042417315 + 1120000 0.0043929746 0.0020760454 0.0042382126 + 1120100 0.0043981373 0.0020868379 0.0042515461 + 1120200 0.0041669459 0.0018719823 0.003922901 + 1120300 0.0035808735 0.002030855 0.0037933162 + 1120400 0.0063245477 0.0020943397 0.005207203 + 1120500 0.0065534893 0.0022433355 0.005468881 + 1120600 0.0045049224 0.0022661987 0.0044834652 + 1120700 0.0045654013 0.0020878846 0.0043349181 + 1120800 0.0066367735 0.0020808827 0.0053474197 + 1120900 0.0058598018 0.001750714 0.0046348351 + 1121000 0.0060248892 0.0017307582 0.0046961334 + 1121100 0.0033126667 0.0020448046 0.0036752578 + 1121200 0.0053902812 0.0019817192 0.0046347482 + 1121300 0.0034962931 0.0021489675 0.0038697993 + 1121400 0.0050314858 0.0024042 0.0048806344 + 1121500 0.004362967 0.0026802185 0.0048276164 + 1121600 0.0048033787 0.0023961655 0.0047603284 + 1121700 0.0050219823 0.0024768871 0.004948644 + 1121800 0.004701928 0.0025316264 0.0048458566 + 1121900 0.0038487263 0.002762688 0.004656983 + 1122000 0.004214861 0.0026290946 0.0047035965 + 1122100 0.0057745307 0.0022950888 0.0051372406 + 1122200 0.0057709184 0.0022225089 0.0050628828 + 1122300 0.0039405328 0.002282767 0.004222248 + 1122400 0.0069420636 0.0020981883 0.0055149852 + 1122500 0.0041843108 0.0022902103 0.0043496758 + 1122600 0.0040754241 0.0026633962 0.004669269 + 1122700 0.0063408693 0.0027870392 0.0059079358 + 1122800 0.0047723338 0.0029201935 0.0052690766 + 1122900 0.0061735198 0.0029414558 0.0059799851 + 1123000 0.0047661558 0.0029907684 0.0053366107 + 1123100 0.0035069044 0.0035276685 0.005253723 + 1123200 0.0053133434 0.0033959872 0.0060111484 + 1123300 0.0047729218 0.0028202987 0.0051694711 + 1123400 0.0056341989 0.0027939386 0.0055670209 + 1123500 0.0061781229 0.0028752902 0.0059160851 + 1123600 0.0063177351 0.0030133771 0.0061228873 + 1123700 0.0063441414 0.0028294986 0.0059520057 + 1123800 0.0047412297 0.0032187242 0.0055522982 + 1123900 0.0052328431 0.003386106 0.005961646 + 1124000 0.0048749877 0.0031748826 0.0055742906 + 1124100 0.0042817748 0.0034000784 0.0055075145 + 1124200 0.0056239637 0.0030273085 0.0057953532 + 1124300 0.0047949377 0.0021931561 0.0045531645 + 1124400 0.0055639894 0.0021740404 0.0049125664 + 1124500 0.0037824277 0.0023524702 0.0042141338 + 1124600 0.005685599 0.0026292496 0.0054276304 + 1124700 0.004378164 0.0028939264 0.005048804 + 1124800 0.0051742806 0.0023432951 0.0048900114 + 1124900 0.0043603724 0.0019914533 0.0041375741 + 1125000 0.0048964594 0.0018164568 0.0042264329 + 1125100 0.0048159676 0.0018742551 0.0042446142 + 1125200 0.0045111937 0.0020350977 0.0042554509 + 1125300 0.0044224158 0.0019347001 0.0041113579 + 1125400 0.0044208554 0.0017968958 0.0039727856 + 1125500 0.0052659181 0.0015407948 0.0041326139 + 1125600 0.0054044667 0.001982856 0.0046428669 + 1125700 0.0039690693 0.0023768527 0.004330379 + 1125800 0.0056061459 0.0021504936 0.0049097685 + 1125900 0.0048826353 0.0018191145 0.0042222866 + 1126000 0.0050198074 0.0017902025 0.004260889 + 1126100 0.0048680893 0.0019919154 0.0043879281 + 1126200 0.0039176418 0.0021888208 0.0041170351 + 1126300 0.0057119062 0.0024938039 0.0053051328 + 1126400 0.0046799678 0.0024425025 0.0047459242 + 1126500 0.0048406079 0.0022966247 0.0046791114 + 1126600 0.0050721012 0.0022966779 0.0047931027 + 1126700 0.0059012461 0.0022608342 0.0051653538 + 1126800 0.0062721748 0.0022071396 0.0052942256 + 1126900 0.0039736118 0.0031021856 0.0050579477 + 1127000 0.0047502084 0.0030383962 0.0053763894 + 1127100 0.0040238106 0.0023748909 0.0043553601 + 1127200 0.0050647248 0.0022876806 0.0047804749 + 1127300 0.0052788496 0.0025736865 0.0051718703 + 1127400 0.0056270017 0.0028185099 0.0055880498 + 1127500 0.0050755262 0.0027891926 0.0052873031 + 1127600 0.0042994043 0.0030341861 0.0051502991 + 1127700 0.0063805776 0.0029172103 0.0060576509 + 1127800 0.0048805263 0.0027902871 0.0051924211 + 1127900 0.0059293317 0.0023578618 0.0052762047 + 1128000 0.0054798101 0.0023378738 0.0050349678 + 1128100 0.00546266 0.0026383758 0.0053270288 + 1128200 0.0058576655 0.0028025264 0.0056855961 + 1128300 0.0044707344 0.0023843268 0.0045847664 + 1128400 0.0044531388 0.0024192494 0.0046110286 + 1128500 0.0053427397 0.0023932526 0.0050228824 + 1128600 0.0056111448 0.0020499638 0.0048116991 + 1128700 0.005313249 0.0020597678 0.0046748825 + 1128800 0.0058997509 0.00187658 0.0047803636 + 1128900 0.0036115615 0.0018608379 0.0036384033 + 1129000 0.0039409569 0.001965745 0.0039054348 + 1129100 0.0040459218 0.0021296467 0.0041209989 + 1129200 0.0043579544 0.0018543296 0.0039992603 + 1129300 0.0040477161 0.0018402294 0.0038324647 + 1129400 0.0058339186 0.001535005 0.0044063868 + 1129500 0.004906312 0.0018838907 0.0042987162 + 1129600 0.0055935989 0.0019430536 0.004696153 + 1129700 0.0048478993 0.0020110878 0.0043971632 + 1129800 0.0037192203 0.0026032696 0.0044338234 + 1129900 0.0091428718 0.0022446137 0.0067446209 + 1130000 0.0070589359 0.0023438992 0.0058182192 + 1130100 0.0046971986 0.0028365257 0.0051484281 + 1130200 0.0044235344 0.0030416691 0.0052188774 + 1130300 0.0058896046 0.0032434583 0.0061422481 + 1130400 0.0037394031 0.0029790204 0.0048195079 + 1130500 0.0046004891 0.0030231297 0.0052874329 + 1130600 0.005988948 0.0026444695 0.0055921548 + 1130700 0.0056312142 0.0023969026 0.0051685159 + 1130800 0.0051872564 0.0025276501 0.0050807529 + 1130900 0.0058366219 0.0023715632 0.0052442755 + 1131000 0.0067852963 0.0018801823 0.0052198203 + 1131100 0.0045317966 0.0020515075 0.0042820011 + 1131200 0.0051611209 0.0018972692 0.0044375083 + 1131300 0.0060915869 0.0019176224 0.0049158254 + 1131400 0.0071611791 0.001730895 0.0052555378 + 1131500 0.0046611334 0.0019458369 0.0042399885 + 1131600 0.0047610529 0.0017806011 0.0041239318 + 1131700 0.0053365382 0.0020329675 0.0046595449 + 1131800 0.0062800984 0.002365146 0.0054561319 + 1131900 0.0045905774 0.0028605455 0.0051199703 + 1132000 0.0060098315 0.0027505798 0.0057085437 + 1132100 0.0045221205 0.0031127224 0.0053384536 + 1132200 0.0050969601 0.0030967707 0.0056054307 + 1132300 0.0056646625 0.0026704394 0.0054585154 + 1132400 0.0051045206 0.0022424932 0.0047548744 + 1132500 0.0037477172 0.0023206964 0.0041652759 + 1132600 0.003953306 0.0025793955 0.0045251633 + 1132700 0.0044145217 0.0029310032 0.0051037756 + 1132800 0.0066895486 0.0024922917 0.005784804 + 1132900 0.0052338953 0.0026365893 0.0052126471 + 1133000 0.0048003534 0.0027148725 0.0050775464 + 1133100 0.0039106308 0.0026241037 0.0045488673 + 1133200 0.0046175374 0.0026337053 0.0049063995 + 1133300 0.0064703344 0.0019987642 0.0051833819 + 1133400 0.0049176159 0.0020182263 0.0044386154 + 1133500 0.0043889065 0.0021717284 0.0043318933 + 1133600 0.004767472 0.0026703531 0.0050168432 + 1133700 0.0066452459 0.0026803801 0.005951087 + 1133800 0.0059812148 0.0031234238 0.006067303 + 1133900 0.0062140823 0.0028867496 0.0059452433 + 1134000 0.0051560964 0.0025298732 0.0050676394 + 1134100 0.0047240456 0.0021696776 0.0044947938 + 1134200 0.0049769694 0.0021992034 0.0046488055 + 1134300 0.0047957895 0.0024642864 0.004824714 + 1134400 0.0042364259 0.0025640256 0.0046491415 + 1134500 0.0051426296 0.002372054 0.0049031921 + 1134600 0.0030683329 0.0024094554 0.0039196505 + 1134700 0.0043316494 0.0024269397 0.0045589234 + 1134800 0.003271085 0.0024320706 0.0040420577 + 1134900 0.0041282582 0.0025241635 0.0045560405 + 1135000 0.0036512904 0.0025068941 0.0043040136 + 1135100 0.0054241968 0.0025373396 0.0052070615 + 1135200 0.0040915966 0.0026237589 0.0046375916 + 1135300 0.0056647953 0.0032163866 0.006004528 + 1135400 0.0071742904 0.0029171034 0.0064481995 + 1135500 0.0059047775 0.0030302729 0.0059365306 + 1135600 0.0057099725 0.0026631488 0.0054735259 + 1135700 0.0057354216 0.0022712096 0.0050941124 + 1135800 0.0059670504 0.0027881186 0.0057250262 + 1135900 0.0055513491 0.003176418 0.0059087227 + 1136000 0.0045903489 0.0027777878 0.0050371001 + 1136100 0.0049743013 0.0023652102 0.0048134992 + 1136200 0.0040801326 0.0020396758 0.0040478661 + 1136300 0.0054416116 0.0022452614 0.0049235546 + 1136400 0.0046430715 0.002881262 0.0051665238 + 1136500 0.0048466713 0.0027086224 0.0050940934 + 1136600 0.0052123236 0.0028196874 0.0053851279 + 1136700 0.0046183936 0.0027364285 0.0050095442 + 1136800 0.0056416066 0.002394365 0.0051710932 + 1136900 0.0038330743 0.0021896122 0.0040762034 + 1137000 0.0028485839 0.0026541865 0.0040562239 + 1137100 0.0043086849 0.0028407502 0.0049614311 + 1137200 0.0068450327 0.0025825056 0.0059515452 + 1137300 0.0044544442 0.0022532396 0.0044456614 + 1137400 0.0045545135 0.0024334904 0.0046751651 + 1137500 0.004282464 0.0024884751 0.0045962503 + 1137600 0.0037268729 0.0023028259 0.0041371461 + 1137700 0.0054418263 0.0020823934 0.0047607922 + 1137800 0.0037856476 0.0020212928 0.0038845412 + 1137900 0.0054344904 0.0023685114 0.0050432996 + 1138000 0.0039044994 0.0028974309 0.0048191767 + 1138100 0.0051864138 0.0024208576 0.0049735457 + 1138200 0.0043466677 0.0023445886 0.0044839641 + 1138300 0.0055466351 0.0025104928 0.0052404773 + 1138400 0.0049576686 0.0031525233 0.0055926258 + 1138500 0.004119139 0.0031913415 0.0052187302 + 1138600 0.0064874945 0.0030949552 0.0062880188 + 1138700 0.0060962383 0.0025664285 0.0055669208 + 1138800 0.006359805 0.0028272715 0.005957488 + 1138900 0.0034098047 0.0033808311 0.0050590944 + 1139000 0.0044145365 0.0027614942 0.0049342739 + 1139100 0.0063542072 0.0023789154 0.0055063768 + 1139200 0.0055055766 0.0023901095 0.0050998855 + 1139300 0.0055939238 0.0023423223 0.0050955816 + 1139400 0.0039545725 0.0022154101 0.0041618013 + 1139500 0.0054981434 0.0020725301 0.0047786476 + 1139600 0.0046637383 0.0021389583 0.004434392 + 1139700 0.0048709241 0.0027890667 0.0051864746 + 1139800 0.006840284 0.0024615196 0.0058282218 + 1139900 0.0048195683 0.0020186337 0.004390765 + 1140000 0.0059127928 0.0020201391 0.0049303418 + 1140100 0.0047669549 0.002255988 0.0046022236 + 1140200 0.0059691216 0.0023438986 0.0052818256 + 1140300 0.0047340804 0.0024028173 0.0047328725 + 1140400 0.0039356966 0.0024701378 0.0044072385 + 1140500 0.004792728 0.0024254186 0.0047843394 + 1140600 0.0068123026 0.0023357184 0.0056886486 + 1140700 0.005972807 0.0027869742 0.0057267152 + 1140800 0.0048134287 0.0034900842 0.0058591936 + 1140900 0.0039757025 0.0038232433 0.0057800343 + 1141000 0.0041510882 0.0038243315 0.0058674452 + 1141100 0.0058291636 0.002839534 0.0057085755 + 1141200 0.0052690267 0.0022931714 0.0048865205 + 1141300 0.0050961964 0.0021378174 0.0046461015 + 1141400 0.0052010922 0.0020395781 0.0045994907 + 1141500 0.0050670191 0.0020115977 0.0045055211 + 1141600 0.0063707515 0.0025616568 0.0056972611 + 1141700 0.0066243223 0.0025635414 0.0058239501 + 1141800 0.0050506411 0.002553306 0.0050391685 + 1141900 0.0040376017 0.0024260529 0.00441331 + 1142000 0.005590796 0.002295273 0.0050469929 + 1142100 0.004771394 0.0025983382 0.0049467587 + 1142200 0.003753963 0.0025929405 0.0044405942 + 1142300 0.0054373688 0.0023849663 0.0050611713 + 1142400 0.0039458603 0.0024642064 0.0044063095 + 1142500 0.0035948685 0.0026264631 0.0043958125 + 1142600 0.0047660322 0.0023045779 0.0046503594 + 1142700 0.0044708501 0.0020963047 0.0042968012 + 1142800 0.0060374323 0.001664454 0.0046360027 + 1142900 0.0043780242 0.0017260722 0.003880881 + 1143000 0.0045676621 0.0017294928 0.003977639 + 1143100 0.0045873387 0.002147277 0.0044051078 + 1143200 0.0048862651 0.0022086045 0.0046135631 + 1143300 0.0052040922 0.0019103406 0.0044717297 + 1143400 0.0051189276 0.0021098644 0.0046293365 + 1143500 0.0055000536 0.0025796942 0.0052867518 + 1143600 0.0054952779 0.0023187104 0.0050234175 + 1143700 0.0051972574 0.0017850873 0.0043431124 + 1143800 0.0049115662 0.0017853719 0.0042027834 + 1143900 0.0032760832 0.0020039866 0.0036164338 + 1144000 0.0034829539 0.0017679694 0.0034822357 + 1144100 0.0044594975 0.0020405056 0.0042354145 + 1144200 0.005158701 0.0021604978 0.004699546 + 1144300 0.0039105137 0.0020807649 0.0040054709 + 1144400 0.0055589275 0.0020263179 0.0047623525 + 1144500 0.0063162087 0.0019639866 0.0050727455 + 1144600 0.0055433733 0.002239834 0.004968213 + 1144700 0.0039767555 0.0026488634 0.0046061727 + 1144800 0.0040762492 0.0025415288 0.0045478077 + 1144900 0.0053138257 0.00236156 0.0049769586 + 1145000 0.0063386624 0.0021087864 0.0052285968 + 1145100 0.0046393462 0.0018330811 0.0041165093 + 1145200 0.0057921041 0.0021813025 0.0050321038 + 1145300 0.0055026155 0.0024222387 0.0051305573 + 1145400 0.0056998413 0.0027683887 0.0055737793 + 1145500 0.0044996608 0.0025683676 0.0047830444 + 1145600 0.0054025452 0.0030352154 0.0056942806 + 1145700 0.0043347465 0.0033050713 0.0054385793 + 1145800 0.0056277534 0.0030036789 0.0057735888 + 1145900 0.0063294693 0.0024926004 0.0056078861 + 1146000 0.003431023 0.0023780838 0.0040667904 + 1146100 0.0046726125 0.002209847 0.0045096485 + 1146200 0.0052962592 0.0021303573 0.0047371099 + 1146300 0.0046164084 0.0028590413 0.0051311798 + 1146400 0.0049851694 0.003205932 0.0056595701 + 1146500 0.0056643863 0.0031469046 0.0059348447 + 1146600 0.0045636982 0.0029709954 0.0052171906 + 1146700 0.0043502655 0.0028087058 0.0049498521 + 1146800 0.0041421869 0.0028495072 0.0048882398 + 1146900 0.0063473539 0.0023582928 0.0054823811 + 1147000 0.0068988442 0.0021117471 0.005507272 + 1147100 0.003652647 0.0024469689 0.004244756 + 1147200 0.0066954963 0.0021093185 0.0054047581 + 1147300 0.0054001036 0.0018853208 0.0045431843 + 1147400 0.0048781152 0.0018875303 0.0042884776 + 1147500 0.0041167371 0.0019190025 0.003945209 + 1147600 0.0054464619 0.0015985132 0.0042791936 + 1147700 0.0036796337 0.0014457724 0.0032568422 + 1147800 0.0039631352 0.0016509832 0.0036015888 + 1147900 0.0045612108 0.0018677006 0.0041126715 + 1148000 0.0040049885 0.0018336304 0.0038048357 + 1148100 0.004291741 0.0021018722 0.0042142134 + 1148200 0.0060622385 0.0020763864 0.0050601444 + 1148300 0.0040570999 0.0021940581 0.004190912 + 1148400 0.0041295127 0.0020782247 0.0041107192 + 1148500 0.0053877199 0.0016956954 0.0043474638 + 1148600 0.0046427675 0.0019699054 0.0042550175 + 1148700 0.0055278135 0.0021662702 0.0048869909 + 1148800 0.0052348056 0.0026655882 0.005242094 + 1148900 0.0058139026 0.0026971705 0.0055587007 + 1149000 0.0060840627 0.0029378161 0.0059323157 + 1149100 0.0045543064 0.0029031071 0.0051446797 + 1149200 0.00495409 0.0027509186 0.0051892598 + 1149300 0.0046660388 0.0025125938 0.0048091597 + 1149400 0.0049220835 0.0021590348 0.0045816228 + 1149500 0.0047558223 0.0017321232 0.0040728795 + 1149600 0.0064435326 0.0021118484 0.0052832746 + 1149700 0.0048564866 0.0024773103 0.0048676123 + 1149800 0.0048352701 0.0019481887 0.0043280482 + 1149900 0.0048446382 0.0018385922 0.0042230625 + 1150000 0.0043921646 0.0016429621 0.0038047306 + 1150100 0.0041395722 0.0015992787 0.0036367244 + 1150200 0.0055646068 0.0020034111 0.004742241 + 1150300 0.0052603184 0.0023993574 0.0049884204 + 1150400 0.0042058783 0.0025646748 0.0046347556 + 1150500 0.0053831392 0.0027067461 0.0053562599 + 1150600 0.005751403 0.0027847815 0.0056155501 + 1150700 0.0049798734 0.0024704898 0.0049215212 + 1150800 0.0048758261 0.0022731289 0.0046729495 + 1150900 0.0055926042 0.0024480259 0.0052006357 + 1151000 0.0066258899 0.0029036662 0.0061648465 + 1151100 0.0047074537 0.0030969221 0.005413872 + 1151200 0.0061169369 0.0025157406 0.0055264205 + 1151300 0.0049944737 0.0022496955 0.004707913 + 1151400 0.0052956968 0.0023982762 0.0050047519 + 1151500 0.0044752789 0.0028874092 0.0050900855 + 1151600 0.0046455077 0.0029783471 0.0052648079 + 1151700 0.0045522612 0.0024319571 0.0046725231 + 1151800 0.003837159 0.0021065752 0.0039951769 + 1151900 0.0048303703 0.0020635624 0.0044410103 + 1152000 0.0044011505 0.002517005 0.0046831963 + 1152100 0.0045596569 0.0022642517 0.0045084578 + 1152200 0.0061714179 0.0021277085 0.0051652032 + 1152300 0.0050064375 0.0021558777 0.0046199836 + 1152400 0.007708434 0.0019303702 0.0057243651 + 1152500 0.0066096402 0.0020356992 0.0052888815 + 1152600 0.0044908306 0.0023332814 0.0045436121 + 1152700 0.005316492 0.0023111839 0.0049278948 + 1152800 0.0050588971 0.0022776969 0.0047676229 + 1152900 0.0053246663 0.0022727145 0.0048934487 + 1153000 0.0032826584 0.0026712951 0.0042869785 + 1153100 0.0052243671 0.0023333334 0.0049047015 + 1153200 0.0041828215 0.0026002696 0.004659002 + 1153300 0.0043667377 0.0029815279 0.0051307816 + 1153400 0.0046009237 0.0032048231 0.0054693402 + 1153500 0.0044754093 0.0029934218 0.0051961623 + 1153600 0.0055909516 0.0024302611 0.0051820576 + 1153700 0.0046841235 0.0020725254 0.0043779925 + 1153800 0.0048727402 0.0019882906 0.0043865924 + 1153900 0.0041421027 0.0023100833 0.0043487744 + 1154000 0.0050428188 0.0024838021 0.0049658145 + 1154100 0.0040828329 0.0025244875 0.0045340068 + 1154200 0.0030445191 0.0023448182 0.0038432925 + 1154300 0.005502034 0.0020982963 0.0048063287 + 1154400 0.0033105323 0.0023536402 0.0039830428 + 1154500 0.005683912 0.002322239 0.0051197894 + 1154600 0.0066993146 0.0019288445 0.0052261634 + 1154700 0.0041001234 0.0019925029 0.0040105324 + 1154800 0.0061526815 0.002435379 0.005463652 + 1154900 0.0043948584 0.0028550737 0.0050181681 + 1155000 0.0063040648 0.0025670144 0.0056697963 + 1155100 0.0057489155 0.0022505298 0.0050800742 + 1155200 0.0045185354 0.0021340382 0.0043580048 + 1155300 0.0037291846 0.0023898363 0.0042252943 + 1155400 0.0057496534 0.0024319363 0.0052618439 + 1155500 0.0057759204 0.0027719697 0.0056148056 + 1155600 0.003980451 0.0029840043 0.0049431326 + 1155700 0.0062379325 0.0030291639 0.0060993963 + 1155800 0.004643942 0.0028375141 0.0051232043 + 1155900 0.0055830815 0.0023122165 0.0050601394 + 1156000 0.0047206308 0.0025346972 0.0048581327 + 1156100 0.0046669122 0.0026980564 0.0049950523 + 1156200 0.00618095 0.0022128942 0.0052550806 + 1156300 0.0056608933 0.0023934842 0.0051797051 + 1156400 0.005351957 0.0024522381 0.0050864044 + 1156500 0.0053772063 0.0024890812 0.0051356749 + 1156600 0.0052765202 0.0025512007 0.0051482379 + 1156700 0.0050618214 0.0025540462 0.0050454114 + 1156800 0.0041586799 0.0029251492 0.0049719995 + 1156900 0.0046908985 0.0031324847 0.0054412863 + 1157000 0.0065979818 0.0029561489 0.006203593 + 1157100 0.0042012023 0.0031678353 0.0052356146 + 1157200 0.0039875407 0.0032194132 0.0051820308 + 1157300 0.0051349805 0.0027988205 0.0053261937 + 1157400 0.0064995051 0.0027000523 0.0058990275 + 1157500 0.0059830433 0.002746934 0.0056917131 + 1157600 0.0049802897 0.002901775 0.0053530114 + 1157700 0.0063578459 0.0030100238 0.0061392761 + 1157800 0.0052160562 0.0039106169 0.0064778945 + 1157900 0.0051175377 0.0040684566 0.0065872447 + 1158000 0.0056666067 0.0033320745 0.0061211075 + 1158100 0.0047026659 0.0027090016 0.0050235949 + 1158200 0.0051871311 0.0023323705 0.0048854116 + 1158300 0.0047746139 0.0019314777 0.004281483 + 1158400 0.0048899727 0.0018769058 0.0042836893 + 1158500 0.0044480925 0.002230922 0.0044202176 + 1158600 0.004186202 0.0024296025 0.0044899988 + 1158700 0.0051456693 0.0021030758 0.00463571 + 1158800 0.0053304591 0.0018861956 0.004509781 + 1158900 0.0034165784 0.002509759 0.0041913562 + 1159000 0.0045186956 0.0023593109 0.0045833564 + 1159100 0.0046943033 0.002063104 0.0043735814 + 1159200 0.0043233476 0.0022659601 0.0043938577 + 1159300 0.0044480589 0.0024125764 0.0046018554 + 1159400 0.0050611892 0.0022100385 0.0047010925 + 1159500 0.0051825765 0.0023362145 0.0048870138 + 1159600 0.0055007433 0.0024125218 0.0051199189 + 1159700 0.0045985885 0.0021117032 0.004375071 + 1159800 0.0050619021 0.001855243 0.004346648 + 1159900 0.0038161744 0.0020174798 0.0038957531 + 1160000 0.0050597737 0.0021263973 0.0046167547 + 1160100 0.0054429759 0.0022768119 0.0049557766 + 1160200 0.0034862148 0.0024968603 0.0042127317 + 1160300 0.0058492539 0.0024692376 0.0053481673 + 1160400 0.0041093493 0.0029479272 0.0049704976 + 1160500 0.0048802009 0.0029675708 0.0053695447 + 1160600 0.004301854 0.0029440476 0.0050613664 + 1160700 0.0044446297 0.0025657061 0.0047532972 + 1160800 0.0051120445 0.0021255825 0.0046416669 + 1160900 0.0066090324 0.0025178324 0.0057707155 + 1161000 0.0039920432 0.0031259619 0.0050907956 + 1161100 0.0057996492 0.0025434951 0.0053980099 + 1161200 0.0053363781 0.0022502999 0.0048767985 + 1161300 0.0038120988 0.0022187697 0.0040950371 + 1161400 0.0047773544 0.002012969 0.0043643231 + 1161500 0.0053778304 0.001985245 0.0046321459 + 1161600 0.0051104274 0.0027684766 0.0052837651 + 1161700 0.0045584615 0.0031193095 0.0053629273 + 1161800 0.0059676276 0.002475454 0.0054126457 + 1161900 0.0051171405 0.0021923891 0.0047109817 + 1162000 0.0045360863 0.0028669194 0.0050995244 + 1162100 0.0051325024 0.0030444007 0.0055705542 + 1162200 0.0048943283 0.00316177 0.0055706973 + 1162300 0.0042459715 0.0025844113 0.0046742254 + 1162400 0.0048636076 0.0021909709 0.0045847778 + 1162500 0.0047423995 0.0023145201 0.0046486698 + 1162600 0.0047685409 0.0027245295 0.0050715457 + 1162700 0.0042777442 0.0028178892 0.0049233414 + 1162800 0.0051934123 0.0024147811 0.0049709137 + 1162900 0.0063386386 0.0024004291 0.0055202277 + 1163000 0.0046261183 0.0029561356 0.0052330532 + 1163100 0.0037790771 0.0030524672 0.0049124817 + 1163200 0.0049211927 0.0031115352 0.0055336847 + 1163300 0.0037916521 0.0027836992 0.0046499029 + 1163400 0.004806417 0.0024628476 0.004828506 + 1163500 0.0042224211 0.0019774004 0.0040556233 + 1163600 0.0029773032 0.0019848756 0.003450267 + 1163700 0.0041244773 0.0020495388 0.004079555 + 1163800 0.0055041268 0.002375368 0.0050844304 + 1163900 0.00352124 0.0026764014 0.0044095117 + 1164000 0.0046138946 0.0020709336 0.0043418348 + 1164100 0.004895849 0.002316272 0.0047259477 + 1164200 0.0039525843 0.0023203852 0.0042657977 + 1164300 0.0053566196 0.0022088405 0.0048453017 + 1164400 0.0046227999 0.0020902446 0.004365529 + 1164500 0.0048441586 0.002044263 0.0044284973 + 1164600 0.006728611 0.0018565641 0.0051683023 + 1164700 0.0028422098 0.0024721747 0.0038710748 + 1164800 0.0045289407 0.0025122619 0.0047413499 + 1164900 0.0044693984 0.0025276193 0.0047274013 + 1165000 0.0052871608 0.0025158496 0.0051181241 + 1165100 0.0047864319 0.0025720036 0.0049278255 + 1165200 0.0053671677 0.002452536 0.0050941889 + 1165300 0.0063766616 0.002087116 0.0052256292 + 1165400 0.006753099 0.0030014009 0.0063251918 + 1165500 0.0057375907 0.0035626293 0.0063865997 + 1165600 0.0056218168 0.0034256968 0.0061926847 + 1165700 0.0064641862 0.0029512992 0.0061328908 + 1165800 0.0057359417 0.0026635837 0.0054867425 + 1165900 0.0044120881 0.0025447563 0.0047163309 + 1166000 0.0057319458 0.0023778288 0.0051990208 + 1166100 0.0050908935 0.0022850604 0.0047907346 + 1166200 0.006533031 0.0022510929 0.005466569 + 1166300 0.004710833 0.002695027 0.0050136401 + 1166400 0.0064714819 0.0032109238 0.0063961063 + 1166500 0.0042340326 0.0034306608 0.0055145987 + 1166600 0.0048483519 0.0029820011 0.0053682993 + 1166700 0.0045001502 0.0025140699 0.0047289875 + 1166800 0.0047001338 0.0024453899 0.004758737 + 1166900 0.0050914734 0.0022658269 0.0047717865 + 1167000 0.0038406008 0.0021562335 0.0040465292 + 1167100 0.0039223719 0.002165961 0.0040965034 + 1167200 0.0039324404 0.0024126402 0.0043481382 + 1167300 0.004177266 0.0032827656 0.0053387637 + 1167400 0.0048972724 0.0034069206 0.0058172968 + 1167500 0.0051299182 0.0024697638 0.0049946455 + 1167600 0.0039558084 0.0023346643 0.0042816638 + 1167700 0.0047544302 0.0023110255 0.0046510966 + 1167800 0.0043000882 0.0025354481 0.0046518978 + 1167900 0.0048639988 0.0024844164 0.0048784158 + 1168000 0.0044766506 0.0023984554 0.0046018069 + 1168100 0.0044485257 0.0027310081 0.0049205168 + 1168200 0.0042103081 0.0023629623 0.0044352233 + 1168300 0.0063257412 0.0018937928 0.0050072436 + 1168400 0.0052497501 0.0020768669 0.0046607283 + 1168500 0.0042588793 0.0024407358 0.0045369029 + 1168600 0.0048239323 0.0023591401 0.0047334193 + 1168700 0.0057800789 0.0024652248 0.0053101074 + 1168800 0.0041714545 0.0023883085 0.0044414463 + 1168900 0.0064387713 0.0024837578 0.0056528405 + 1169000 0.0056070144 0.0027936649 0.0055533673 + 1169100 0.0065217828 0.0028578974 0.0060678373 + 1169200 0.0040309797 0.0030193983 0.0050033961 + 1169300 0.0056610669 0.003143069 0.0059293753 + 1169400 0.0045443929 0.0032268029 0.0054634963 + 1169500 0.0043256165 0.0025841484 0.0047131627 + 1169600 0.005050064 0.0017313412 0.0042169196 + 1169700 0.0057861462 0.0021161831 0.0049640519 + 1169800 0.0038104059 0.0026928155 0.0045682496 + 1169900 0.0041395624 0.0023702738 0.0044077147 + 1170000 0.0056977071 0.0016652633 0.0044696036 + 1170100 0.0054711781 0.0017822843 0.0044751298 + 1170200 0.0047120237 0.0022270201 0.0045462193 + 1170300 0.0056471019 0.0024352392 0.0052146722 + 1170400 0.0054521769 0.0024108044 0.0050942978 + 1170500 0.0043461105 0.0022997972 0.0044388985 + 1170600 0.0036657384 0.0021282888 0.0039325195 + 1170700 0.0049137036 0.0017596661 0.0041781296 + 1170800 0.0061925376 0.0019396599 0.0049875495 + 1170900 0.0052685503 0.0019155251 0.0045086397 + 1171000 0.00745659 0.0019644782 0.0056345186 + 1171100 0.0036542007 0.0021682169 0.0039667688 + 1171200 0.0060793579 0.0024212122 0.0054133962 + 1171300 0.0036992191 0.0024388311 0.0042595405 + 1171400 0.005977477 0.0021122886 0.005054328 + 1171500 0.0045085095 0.002515479 0.004734511 + 1171600 0.0058717111 0.0027905401 0.0056805229 + 1171700 0.0047724722 0.0026247164 0.0049736676 + 1171800 0.0069952231 0.0019299827 0.0053729441 + 1171900 0.0063320531 0.0022755446 0.005392102 + 1172000 0.0058055738 0.0023690337 0.0052264646 + 1172100 0.0061137267 0.0021197917 0.0051288916 + 1172200 0.0053081065 0.0016966344 0.0043092181 + 1172300 0.005198673 0.0015841693 0.0041428912 + 1172400 0.004769036 0.0020028441 0.004350104 + 1172500 0.0046317175 0.0017632155 0.004042889 + 1172600 0.0033563589 0.0018752952 0.0035272531 + 1172700 0.0037746616 0.002323123 0.0041809643 + 1172800 0.0049105441 0.0021250163 0.0045419247 + 1172900 0.0045470391 0.0018660073 0.0041040031 + 1173000 0.0051640231 0.0018495388 0.0043912064 + 1173100 0.0038131615 0.0018378357 0.0037146261 + 1173200 0.0050380211 0.002143589 0.00462324 + 1173300 0.0049409196 0.0023724366 0.0048042955 + 1173400 0.0051035991 0.002783138 0.0052950657 + 1173500 0.004257038 0.002872541 0.0049678018 + 1173600 0.0077007218 0.0024461239 0.0062363229 + 1173700 0.0046160828 0.0026937725 0.0049657507 + 1173800 0.0037856992 0.0022569463 0.0041202201 + 1173900 0.0049332412 0.0019452811 0.0043733608 + 1174000 0.0041014748 0.0022181862 0.0042368808 + 1174100 0.006048086 0.0021457384 0.0051225307 + 1174200 0.0049000186 0.0020724066 0.0044841345 + 1174300 0.0042127601 0.0022588583 0.0043323261 + 1174400 0.0043260851 0.0021924599 0.0043217049 + 1174500 0.0039311727 0.0024284072 0.0043632813 + 1174600 0.0038520104 0.0023998598 0.0042957712 + 1174700 0.0058265927 0.0024268401 0.0052946162 + 1174800 0.0046092662 0.0029519281 0.0052205513 + 1174900 0.0041432182 0.0024945281 0.0045337683 + 1175000 0.0044831648 0.0021455185 0.0043520762 + 1175100 0.0039627481 0.0019073988 0.0038578139 + 1175200 0.0043811561 0.001962242 0.0041185923 + 1175300 0.0048536832 0.0020340511 0.0044229733 + 1175400 0.0071854 0.0023085304 0.0058450944 + 1175500 0.0035738136 0.0020844619 0.0038434483 + 1175600 0.0047537057 0.0018599165 0.004199631 + 1175700 0.0046087785 0.0022565358 0.004524919 + 1175800 0.003608897 0.0020974421 0.0038736961 + 1175900 0.0058682747 0.0019099833 0.0047982748 + 1176000 0.0042140716 0.0020400316 0.004114145 + 1176100 0.0028367717 0.0026047853 0.0040010089 + 1176200 0.0039247904 0.0024917037 0.0044234365 + 1176300 0.0044178212 0.0023121327 0.0044865291 + 1176400 0.0063007323 0.0021668743 0.005268016 + 1176500 0.0067137678 0.002511791 0.0058162236 + 1176600 0.0064439008 0.0023442913 0.0055158987 + 1176700 0.0043454855 0.0021797742 0.0043185679 + 1176800 0.0066699676 0.0021687048 0.0054515795 + 1176900 0.0044646879 0.0025751044 0.004772568 + 1177000 0.0049646868 0.0019739316 0.0044174884 + 1177100 0.0040389099 0.0017096242 0.0036975251 + 1177200 0.003622151 0.0014637519 0.0032465294 + 1177300 0.0049086432 0.0015821721 0.0039981449 + 1177400 0.0050425079 0.001588212 0.0040700713 + 1177500 0.0048134885 0.0015118057 0.0038809446 + 1177600 0.0040429095 0.0016980359 0.0036879054 + 1177700 0.0039385956 0.001792513 0.0037310405 + 1177800 0.0047410399 0.0026672846 0.0050007652 + 1177900 0.0042152656 0.0032040022 0.0052787033 + 1178000 0.0067893714 0.00264225 0.0059838937 + 1178100 0.0049332835 0.0023763172 0.0048044177 + 1178200 0.0047153427 0.0021814621 0.0045022949 + 1178300 0.0050598225 0.002273276 0.0047636574 + 1178400 0.0046547163 0.0024419408 0.004732934 + 1178500 0.0039999146 0.002360043 0.004328751 + 1178600 0.0043585039 0.0020151122 0.0041603133 + 1178700 0.0047240403 0.0019130799 0.0042381935 + 1178800 0.004702917 0.0023020386 0.0046167555 + 1178900 0.0046563223 0.0024021331 0.0046939167 + 1179000 0.0038302146 0.0025676374 0.0044528211 + 1179100 0.0031447563 0.0022251053 0.0037729151 + 1179200 0.0067890337 0.001648906 0.0049903835 + 1179300 0.0046928695 0.0014714233 0.003781195 + 1179400 0.0043117044 0.0020468868 0.0041690538 + 1179500 0.0047180082 0.0026078147 0.0049299594 + 1179600 0.0049325802 0.0025112968 0.0049390511 + 1179700 0.0044537283 0.0023470214 0.0045390908 + 1179800 0.0058057933 0.0023236233 0.0051811622 + 1179900 0.0059113528 0.0022762666 0.0051857605 + 1180000 0.0048751666 0.0020207385 0.0044202346 + 1180100 0.0065153001 0.002078508 0.0052852572 + 1180200 0.0036572209 0.0026383307 0.0044383691 + 1180300 0.0052476773 0.0026081403 0.0051909815 + 1180400 0.0050308156 0.0022195585 0.0046956631 + 1180500 0.0035333673 0.0023114156 0.0040504948 + 1180600 0.0050269523 0.0023296422 0.0048038453 + 1180700 0.0052609238 0.002271874 0.0048612349 + 1180800 0.0050794787 0.0025802622 0.0050803181 + 1180900 0.0049765515 0.0024055716 0.004854968 + 1181000 0.0040428064 0.0025953808 0.0045851995 + 1181100 0.0042606171 0.0025687202 0.0046657427 + 1181200 0.006151534 0.0023469588 0.0053746669 + 1181300 0.0045470009 0.0027506522 0.0049886292 + 1181400 0.0061411307 0.0027056729 0.0057282606 + 1181500 0.005559601 0.0028907288 0.0056270949 + 1181600 0.0054010527 0.0030904927 0.0057488233 + 1181700 0.003924612 0.0026063543 0.0045379992 + 1181800 0.0056506364 0.0024085556 0.0051897281 + 1181900 0.0055219135 0.0023109873 0.0050288041 + 1182000 0.0050977535 0.0026242636 0.0051333141 + 1182100 0.0046239035 0.0022896625 0.00456549 + 1182200 0.0054261304 0.0024874653 0.0051581388 + 1182300 0.0057122652 0.0023176154 0.0051291209 + 1182400 0.0035297551 0.0020672864 0.0038045877 + 1182500 0.0043380639 0.0021304846 0.0042656255 + 1182600 0.0055360107 0.0023689819 0.0050937372 + 1182700 0.0053939258 0.0022514377 0.0049062606 + 1182800 0.0076385 0.0024223415 0.0061819157 + 1182900 0.0061933807 0.0024085414 0.005456846 + 1183000 0.0038576832 0.0020384246 0.0039371281 + 1183100 0.0048720509 0.0019051828 0.0043031453 + 1183200 0.0043857889 0.0021550442 0.0043136747 + 1183300 0.0061474255 0.0020275333 0.0050532193 + 1183400 0.0045890387 0.0023294189 0.0045880864 + 1183500 0.0038693727 0.0023654475 0.0042699044 + 1183600 0.0045889239 0.0023057807 0.0045643916 + 1183700 0.0042600956 0.0022457181 0.0043424839 + 1183800 0.0036165496 0.0024490101 0.0042290306 + 1183900 0.0048391056 0.0029464191 0.0053281664 + 1184000 0.006098726 0.0031610052 0.0061627219 + 1184100 0.0058597202 0.0024357261 0.0053198072 + 1184200 0.0048607362 0.0023022205 0.0046946141 + 1184300 0.005359707 0.0021793013 0.0048172821 + 1184400 0.0054724808 0.0020359436 0.0047294302 + 1184500 0.0055797103 0.002066312 0.0048125756 + 1184600 0.0053655774 0.0021088614 0.0047497316 + 1184700 0.0036892969 0.0026518767 0.0044677025 + 1184800 0.0053356346 0.002567196 0.0051933286 + 1184900 0.0061788875 0.0023180459 0.0053592171 + 1185000 0.0058447252 0.0027032063 0.005579907 + 1185100 0.0055902835 0.0030042081 0.0057556758 + 1185200 0.0059475642 0.0029700023 0.0058973191 + 1185300 0.0039917029 0.0027415736 0.0047062399 + 1185400 0.0041997959 0.0026256638 0.0046927508 + 1185500 0.0046863295 0.0027929246 0.0050994774 + 1185600 0.0047237267 0.00288006 0.0052050192 + 1185700 0.0072528272 0.0019651635 0.0055349144 + 1185800 0.0041840426 0.0021515817 0.0042109152 + 1185900 0.0057158265 0.0025284239 0.0053416823 + 1186000 0.0063040535 0.0029228325 0.0060256088 + 1186100 0.0053137078 0.0037628881 0.0063782287 + 1186200 0.0071857083 0.0032657857 0.0068025015 + 1186300 0.0069703229 0.0026548214 0.0060855272 + 1186400 0.0084671967 0.0021435384 0.0063109868 + 1186500 0.0052545128 0.0021214684 0.0047076739 + 1186600 0.0037467039 0.0022997496 0.0041438304 + 1186700 0.0052586842 0.0023755827 0.0049638413 + 1186800 0.0062527521 0.0026558421 0.0057333685 + 1186900 0.0044573888 0.0024257155 0.0046195866 + 1187000 0.0048172759 0.0024944005 0.0048654035 + 1187100 0.0044660192 0.002479702 0.0046778208 + 1187200 0.0044656443 0.0019301164 0.0041280507 + 1187300 0.0045417335 0.001881184 0.0041165685 + 1187400 0.0065921165 0.0019588324 0.0052033897 + 1187500 0.0058607113 0.0024342935 0.0053188623 + 1187600 0.0040355328 0.0025110839 0.0044973227 + 1187700 0.0045418476 0.0021571739 0.0043926145 + 1187800 0.0047646178 0.0018105437 0.004155629 + 1187900 0.0041895871 0.0016638499 0.0037259123 + 1188000 0.0049848601 0.0019404814 0.0043939672 + 1188100 0.0070665253 0.0021707718 0.0056488272 + 1188200 0.0060403185 0.0019553275 0.0049282968 + 1188300 0.0049206492 0.0020737628 0.0044956448 + 1188400 0.0046795901 0.0019977318 0.0043009676 + 1188500 0.0046045242 0.001939539 0.0042058282 + 1188600 0.005464208 0.0020064595 0.0046958743 + 1188700 0.0034153815 0.0023600094 0.0040410175 + 1188800 0.0058457363 0.0025647976 0.005441996 + 1188900 0.0041502352 0.0027053406 0.0047480345 + 1189000 0.005723896 0.0029918002 0.0058090303 + 1189100 0.0065649674 0.0025979775 0.0058291724 + 1189200 0.0042801067 0.0023721368 0.0044787519 + 1189300 0.0041382398 0.002337125 0.0043739149 + 1189400 0.0046404329 0.0026720338 0.0049559969 + 1189500 0.0039087333 0.0025808407 0.0045046704 + 1189600 0.004550926 0.0026732666 0.0049131755 + 1189700 0.0047807328 0.0025633285 0.0049163455 + 1189800 0.0057705571 0.0031625825 0.0060027786 + 1189900 0.0055171036 0.0030481 0.0057635494 + 1190000 0.0062923717 0.0021359855 0.0052330122 + 1190100 0.004133751 0.0021845521 0.0042191327 + 1190200 0.0039437047 0.0020296652 0.0039707074 + 1190300 0.0036375438 0.0020591844 0.0038495379 + 1190400 0.0048065433 0.0023058623 0.0046715828 + 1190500 0.0051183712 0.0022862697 0.004805468 + 1190600 0.0046681179 0.0022795131 0.0045771024 + 1190700 0.0051319745 0.0022472257 0.0047731194 + 1190800 0.0049634575 0.0022835267 0.0047264785 + 1190900 0.0039127975 0.0020546351 0.0039804651 + 1191000 0.0042048282 0.0019849377 0.0040545016 + 1191100 0.0049943366 0.0017359821 0.0041941322 + 1191200 0.005942727 0.0016542624 0.0045791984 + 1191300 0.0050840029 0.0017188646 0.0042211473 + 1191400 0.0043717535 0.0018790101 0.0040307325 + 1191500 0.0040322799 0.0019895569 0.0039741946 + 1191600 0.0054553578 0.0020110553 0.0046961142 + 1191700 0.0057791883 0.0020567417 0.0049011859 + 1191800 0.0033698721 0.0027096618 0.0043682707 + 1191900 0.0046019103 0.0023207091 0.0045857119 + 1192000 0.0044742205 0.0018351575 0.0040373129 + 1192100 0.0043251497 0.0015115511 0.0036403357 + 1192200 0.004740744 0.001649426 0.0039827609 + 1192300 0.0039004772 0.0018879691 0.0038077352 + 1192400 0.0050399357 0.0018985476 0.004379141 + 1192500 0.0034601525 0.001935446 0.0036384899 + 1192600 0.0045518137 0.0019099518 0.0041502976 + 1192700 0.0049079663 0.0019549301 0.0043705697 + 1192800 0.0047966638 0.0018555793 0.0042164372 + 1192900 0.0049179118 0.0020964493 0.004516984 + 1193000 0.0045864601 0.0023266828 0.0045840811 + 1193100 0.0057647085 0.0021047202 0.0049420376 + 1193200 0.0048480927 0.0023131917 0.0046993623 + 1193300 0.0049842387 0.0027435018 0.0051966818 + 1193400 0.0064220453 0.0029053417 0.0060661921 + 1193500 0.0055810439 0.0028548136 0.0056017337 + 1193600 0.0056067333 0.0021960871 0.0049556512 + 1193700 0.0040057603 0.0021133201 0.0040849053 + 1193800 0.0041805897 0.0022843307 0.0043419647 + 1193900 0.0044317578 0.0024790074 0.0046602632 + 1194000 0.0055293148 0.0026354129 0.0053568725 + 1194100 0.0050302727 0.0024175057 0.0048933431 + 1194200 0.0044063859 0.0020824519 0.00425122 + 1194300 0.0050880699 0.0021112587 0.0046155431 + 1194400 0.006471084 0.0019888308 0.0051738175 + 1194500 0.0062873667 0.0023228454 0.0054174087 + 1194600 0.006277246 0.0030785424 0.0061681244 + 1194700 0.004059035 0.0034276752 0.0054254815 + 1194800 0.0037870165 0.0025435448 0.004407467 + 1194900 0.0045174309 0.0022693672 0.0044927902 + 1195000 0.0043787845 0.0017348978 0.0038900808 + 1195100 0.0064654874 0.0017118726 0.0048941047 + 1195200 0.0051781922 0.0021676791 0.0047163206 + 1195300 0.0053157284 0.0022911142 0.0049074492 + 1195400 0.0052427389 0.0018647167 0.0044451272 + 1195500 0.0051493857 0.002005871 0.0045403343 + 1195600 0.0058376264 0.0024961236 0.0053693304 + 1195700 0.0047029697 0.0026631803 0.0049779232 + 1195800 0.0056205958 0.0028577368 0.0056241238 + 1195900 0.0043862998 0.0035689755 0.0057278574 + 1196000 0.0055916089 0.0033943345 0.0061464545 + 1196100 0.0074634459 0.0025033852 0.0061768 + 1196200 0.0043615056 0.0021710353 0.0043177138 + 1196300 0.0041110056 0.002498458 0.0045218435 + 1196400 0.0056548847 0.0026845718 0.0054678354 + 1196500 0.0059698807 0.00242575 0.0053640507 + 1196600 0.0061622862 0.0028053175 0.0058383178 + 1196700 0.0052334198 0.0030421055 0.0056179293 + 1196800 0.0066818226 0.0025901899 0.0058788994 + 1196900 0.0057000851 0.0020054826 0.0048109933 + 1197000 0.0051046653 0.0023050199 0.0048174723 + 1197100 0.0045360525 0.0023315401 0.0045641285 + 1197200 0.0055532188 0.0023609728 0.0050941977 + 1197300 0.0044388026 0.0023409294 0.0045256525 + 1197400 0.0060211676 0.0022347056 0.0051982491 + 1197500 0.0057894809 0.0023731811 0.0052226912 + 1197600 0.0049909833 0.0024972521 0.0049537517 + 1197700 0.0056658842 0.0022244783 0.0050131557 + 1197800 0.0051238035 0.0020711178 0.0045929899 + 1197900 0.0039661142 0.0021037315 0.0040558034 + 1198000 0.004324354 0.0021482489 0.0042766419 + 1198100 0.0049987248 0.0024683807 0.0049286906 + 1198200 0.0048029936 0.0026816146 0.005045588 + 1198300 0.0055900875 0.0025406139 0.0052919851 + 1198400 0.0045535623 0.0021070613 0.0043482677 + 1198500 0.0073596399 0.001918237 0.0055405598 + 1198600 0.005160319 0.0018358318 0.0043756763 + 1198700 0.005459474 0.0022805033 0.0049675881 + 1198800 0.0056220775 0.0026884223 0.0054555386 + 1198900 0.0060642558 0.0029718136 0.0059565646 + 1199000 0.006120677 0.0031038696 0.0061163903 + 1199100 0.0053423798 0.0030823506 0.0057118032 + 1199200 0.0047358006 0.0024891519 0.0048200537 + 1199300 0.0043089264 0.0018196529 0.0039404526 + 1199400 0.0052287997 0.0019874939 0.0045610438 + 1199500 0.0037841167 0.0022714013 0.0041338962 + 1199600 0.0043969554 0.0024702036 0.0046343301 + 1199700 0.0037664337 0.0025157273 0.0043695188 + 1199800 0.004353897 0.00259263 0.0047355637 + 1199900 0.0044502023 0.0025772057 0.0047675397 + 1200000 0.0048397824 0.0029985254 0.0053806058 + 1200100 0.0056948663 0.0029591496 0.0057620916 + 1200200 0.0042965809 0.0024517638 0.0045664872 + 1200300 0.0085373282 0.0020721422 0.0062741084 + 1200400 0.0056517706 0.0018125884 0.0045943193 + 1200500 0.004927299 0.0017250759 0.0041502308 + 1200600 0.005041472 0.0020159676 0.0044973171 + 1200700 0.003504487 0.0023133519 0.0040382166 + 1200800 0.005954196 0.0020210513 0.0049516322 + 1200900 0.0054147844 0.0024644983 0.0051295875 + 1201000 0.005616405 0.0028034334 0.0055677577 + 1201100 0.0051184289 0.0026247314 0.0051439581 + 1201200 0.0050033258 0.0024022792 0.0048648536 + 1201300 0.0040557993 0.002162859 0.0041590727 + 1201400 0.0038828738 0.0021018947 0.0040129967 + 1201500 0.0048458476 0.0023208324 0.004705898 + 1201600 0.0036336694 0.002507891 0.0042963377 + 1201700 0.006034539 0.0019479496 0.0049180742 + 1201800 0.0048445692 0.0016942285 0.0040786649 + 1201900 0.0062859811 0.0022072477 0.005301129 + 1202000 0.0039484239 0.0026036133 0.0045469782 + 1202100 0.0039875456 0.0024622432 0.0044248633 + 1202200 0.0044094011 0.002355052 0.0045253041 + 1202300 0.0061321558 0.0022311533 0.0052493237 + 1202400 0.0047425348 0.0022765668 0.0046107832 + 1202500 0.0045876475 0.0020317304 0.0042897132 + 1202600 0.0048605446 0.0021915055 0.0045838048 + 1202700 0.0051522249 0.0024042987 0.0049401594 + 1202800 0.0039226774 0.0028017198 0.0047324125 + 1202900 0.0049999425 0.0023570894 0.0048179986 + 1203000 0.0048782059 0.0024650853 0.0048660773 + 1203100 0.0049095438 0.0023223237 0.0047387398 + 1203200 0.0050456966 0.0018854191 0.0043688479 + 1203300 0.0060288494 0.001421438 0.0043887623 + 1203400 0.0037650539 0.0017868116 0.0036399241 + 1203500 0.0039429342 0.0018061983 0.0037468612 + 1203600 0.0055651842 0.0017170103 0.0044561244 + 1203700 0.005226677 0.001281404 0.0038539091 + 1203800 0.0041952881 0.0014866532 0.0035515216 + 1203900 0.0055436826 0.0016976927 0.004426224 + 1204000 0.0057549582 0.0021212646 0.004953783 + 1204100 0.0049441603 0.002782588 0.0052160419 + 1204200 0.0038610003 0.0031707592 0.0050710953 + 1204300 0.0032411958 0.0027428717 0.0043381478 + 1204400 0.0051596955 0.0022302411 0.0047697788 + 1204500 0.0052046051 0.0017547717 0.0043164132 + 1204600 0.0058760337 0.001655476 0.0045475863 + 1204700 0.0048045011 0.0014743571 0.0038390725 + 1204800 0.0038877101 0.0017113885 0.0036248708 + 1204900 0.0043147994 0.0023967269 0.0045204173 + 1205000 0.004547354 0.0024106195 0.0046487703 + 1205100 0.0054916983 0.0022877994 0.0049907447 + 1205200 0.0046060682 0.0021972855 0.0044643347 + 1205300 0.0048808869 0.0023384042 0.0047407157 + 1205400 0.0069886147 0.0024347014 0.0058744102 + 1205500 0.005247617 0.0027896271 0.0053724386 + 1205600 0.0051197597 0.003033026 0.0055529078 + 1205700 0.0046292736 0.0029726993 0.0052511699 + 1205800 0.0041346817 0.002889224 0.0049242627 + 1205900 0.0043225411 0.0027759965 0.0049034973 + 1206000 0.004890335 0.002282187 0.0046891487 + 1206100 0.005465042 0.0022470734 0.0049368988 + 1206200 0.0057512089 0.0026436416 0.0054743147 + 1206300 0.0057687407 0.0030555779 0.0058948799 + 1206400 0.0042828759 0.0029736637 0.0050816417 + 1206500 0.0045747155 0.0024274583 0.0046790761 + 1206600 0.0041719427 0.0024792821 0.0045326601 + 1206700 0.0046936953 0.0023621667 0.0046723448 + 1206800 0.0060793932 0.0026988067 0.005691008 + 1206900 0.0054675403 0.0024406264 0.0051316813 + 1207000 0.0054572846 0.0026956574 0.0053816647 + 1207100 0.0063322018 0.0031107784 0.006227409 + 1207200 0.0052965031 0.0032640035 0.0058708761 + 1207300 0.0060661898 0.0032755208 0.0062612235 + 1207400 0.0056650965 0.002390232 0.0051785217 + 1207500 0.005873722 0.0022128592 0.0051038317 + 1207600 0.0047416481 0.0026211381 0.004954918 + 1207700 0.0035334747 0.0024777924 0.0042169245 + 1207800 0.0045617174 0.002042445 0.0042876653 + 1207900 0.0072421779 0.0020643137 0.0056288231 + 1208000 0.0049707095 0.0023341849 0.004780706 + 1208100 0.0059523597 0.0028754375 0.0058051145 + 1208200 0.0037416857 0.0030007853 0.0048423962 + 1208300 0.0039064487 0.0028588994 0.0047816046 + 1208400 0.0057560044 0.002724714 0.0055577474 + 1208500 0.0033467087 0.0025108053 0.0041580135 + 1208600 0.0043642644 0.0023749365 0.0045229729 + 1208700 0.006696901 0.0022545427 0.0055506737 + 1208800 0.0059554279 0.0022253286 0.0051565158 + 1208900 0.0063179369 0.0022312312 0.0053408408 + 1209000 0.0054485326 0.0024447725 0.0051264721 + 1209100 0.0049494661 0.0024643825 0.0049004479 + 1209200 0.0052579208 0.0026074309 0.0051953138 + 1209300 0.0058546341 0.0026915776 0.0055731553 + 1209400 0.0059847835 0.002375609 0.0053212446 + 1209500 0.0044756146 0.0024801069 0.0046829485 + 1209600 0.0049061497 0.0025211221 0.0049358677 + 1209700 0.0055479769 0.0022117562 0.0049424011 + 1209800 0.0050061942 0.0024196658 0.004883652 + 1209900 0.0036959163 0.002582736 0.0044018198 + 1210000 0.0042293154 0.0028066588 0.004888275 + 1210100 0.0035338903 0.0025379151 0.0042772518 + 1210200 0.0076621988 0.0020594973 0.0058307358 + 1210300 0.006318384 0.0025595049 0.0056693345 + 1210400 0.0048662291 0.0029147448 0.0053098419 + 1210500 0.0060016782 0.0026292062 0.0055831572 + 1210600 0.0049176744 0.0024200584 0.0048404763 + 1210700 0.0051608246 0.0028653836 0.0054054769 + 1210800 0.0051235871 0.0023827098 0.0049044753 + 1210900 0.0039601648 0.0020561345 0.0040052782 + 1211000 0.004889577 0.0021050262 0.0045116149 + 1211100 0.003849822 0.0023847973 0.0042796315 + 1211200 0.0059160069 0.0019227733 0.0048345579 + 1211300 0.004302355 0.0023200618 0.0044376272 + 1211400 0.0052592455 0.002718649 0.0053071839 + 1211500 0.0058097349 0.0026406223 0.0055001012 + 1211600 0.0054613147 0.0029309485 0.0056189393 + 1211700 0.0047386593 0.0029021282 0.0052344371 + 1211800 0.0045396334 0.0028571666 0.0050915174 + 1211900 0.0049293006 0.0026905359 0.0051166761 + 1212000 0.0048651237 0.0029652787 0.0053598318 + 1212100 0.0062395956 0.0030240974 0.0060951483 + 1212200 0.0049007871 0.0030903527 0.0055024589 + 1212300 0.0059142767 0.0023333719 0.0052443049 + 1212400 0.005728838 0.0017663708 0.0045860333 + 1212500 0.0054478209 0.0019140842 0.0045954335 + 1212600 0.0053085672 0.0021288283 0.0047416387 + 1212700 0.0066388977 0.0022754933 0.0055430757 + 1212800 0.0071728326 0.0022786689 0.0058090475 + 1212900 0.0058785421 0.0019472542 0.0048405992 + 1213000 0.0046472809 0.0021778349 0.0044651685 + 1213100 0.0057780468 0.0022246784 0.0050685608 + 1213200 0.0045155899 0.0029014014 0.0051239183 + 1213300 0.0048476497 0.0029637325 0.0053496851 + 1213400 0.0073512852 0.0023502775 0.0059684882 + 1213500 0.0054109492 0.0028666653 0.0055298669 + 1213600 0.0031324996 0.0032006807 0.0047424579 + 1213700 0.0045026935 0.0030996529 0.0053158223 + 1213800 0.006016447 0.0025878049 0.0055490249 + 1213900 0.0052464865 0.0029593042 0.0055415592 + 1214000 0.0062682995 0.0035237722 0.0066089509 + 1214100 0.0054905535 0.0036058439 0.0063082257 + 1214200 0.0056817796 0.0034950392 0.00629154 + 1214300 0.004802663 0.0032925129 0.0056563235 + 1214400 0.0062047387 0.0031647131 0.0062186079 + 1214500 0.0053456069 0.0031535 0.0057845409 + 1214600 0.0035283965 0.0028929178 0.0046295505 + 1214700 0.0048994066 0.0028063808 0.0052178075 + 1214800 0.004858487 0.0026939112 0.0050851977 + 1214900 0.0059747293 0.0026882957 0.0056289828 + 1215000 0.0054461585 0.0028681759 0.0055487071 + 1215100 0.0043019055 0.0035028345 0.0056201786 + 1215200 0.0048082914 0.0032874425 0.0056540235 + 1215300 0.0057753983 0.0025592429 0.0054018217 + 1215400 0.0063689086 0.002151554 0.0052862512 + 1215500 0.0042727114 0.0021666805 0.0042696557 + 1215600 0.0046828501 0.0021832442 0.0044880845 + 1215700 0.0032781024 0.0024834746 0.0040969157 + 1215800 0.0057783419 0.002535503 0.0053795306 + 1215900 0.0044408758 0.0029748491 0.0051605926 + 1216000 0.0065501052 0.0035888902 0.0068127701 + 1216100 0.0052506151 0.0035314747 0.0061157618 + 1216200 0.0043816317 0.0025426369 0.0046992212 + 1216300 0.0062204337 0.002094104 0.0051557237 + 1216400 0.0044023282 0.0020092758 0.0041760467 + 1216500 0.0039993672 0.0020833824 0.004051821 + 1216600 0.0047463522 0.0020617051 0.0043978003 + 1216700 0.0050699222 0.0023547202 0.0048500726 + 1216800 0.0057518144 0.0024278842 0.0052588553 + 1216900 0.0045622587 0.0025186488 0.0047641355 + 1217000 0.0047771375 0.0031284465 0.0054796939 + 1217100 0.0065906273 0.002479284 0.0057231083 + 1217200 0.0069933303 0.0023088158 0.0057508456 + 1217300 0.0049322923 0.0024709939 0.0048986065 + 1217400 0.0048690159 0.0020320224 0.0044284912 + 1217500 0.0059357554 0.0018033543 0.0047248589 + 1217600 0.0062066811 0.002187672 0.0052425229 + 1217700 0.0052501451 0.00296921 0.0055532658 + 1217800 0.0049055217 0.0029142777 0.0053287142 + 1217900 0.0053914569 0.002379077 0.0050326847 + 1218000 0.0054044527 0.0020913024 0.0047513065 + 1218100 0.0043192292 0.0024267048 0.0045525755 + 1218200 0.0045400236 0.0024769657 0.0047115085 + 1218300 0.0047395202 0.0025773831 0.0049101157 + 1218400 0.0059275556 0.0023056917 0.0052231605 + 1218500 0.004136298 0.0022195036 0.0042553378 + 1218600 0.0039795584 0.0022358132 0.0041945021 + 1218700 0.0051930229 0.0023052182 0.0048611592 + 1218800 0.0055838809 0.0028242516 0.005572568 + 1218900 0.0052922197 0.002941635 0.0055463994 + 1219000 0.0056782081 0.0025639944 0.0053587375 + 1219100 0.0073217522 0.0027177935 0.0063214684 + 1219200 0.0064951577 0.0026965439 0.0058933793 + 1219300 0.0036607861 0.0026617539 0.004463547 + 1219400 0.0041885048 0.0026505068 0.0047120365 + 1219500 0.0030679166 0.0027965838 0.004306574 + 1219600 0.0051904074 0.0027523666 0.0053070202 + 1219700 0.0048290064 0.0023566697 0.0047334464 + 1219800 0.0057848814 0.0021035456 0.0049507919 + 1219900 0.0032681727 0.0023120882 0.003920642 + 1220000 0.0046546746 0.0025902241 0.0048811967 + 1220100 0.0042862267 0.0026667382 0.0047763654 + 1220200 0.0045422892 0.0028601542 0.0050958122 + 1220300 0.0051665694 0.0028299723 0.0053728931 + 1220400 0.0046243504 0.0027409923 0.0050170398 + 1220500 0.0040975276 0.0024237456 0.0044404974 + 1220600 0.0052454602 0.0023119411 0.004893691 + 1220700 0.0050795896 0.0025396096 0.0050397201 + 1220800 0.0057129892 0.0021088713 0.0049207331 + 1220900 0.0045147744 0.0018779955 0.004100111 + 1221000 0.0042333437 0.0016137135 0.0036973124 + 1221100 0.0046074074 0.0016511602 0.0039188685 + 1221200 0.0042009628 0.002302614 0.0043702753 + 1221300 0.0040306256 0.002404108 0.0043879315 + 1221400 0.0042089756 0.001996467 0.0040680721 + 1221500 0.0048265935 0.0015570101 0.003932599 + 1221600 0.0042594324 0.0019672714 0.0040637108 + 1221700 0.0049642239 0.0019786935 0.0044220225 + 1221800 0.0051294983 0.0017801083 0.0043047832 + 1221900 0.0050731472 0.0024127553 0.0049096949 + 1222000 0.0069720653 0.0027819869 0.0062135503 + 1222100 0.0047009576 0.0027660321 0.0050797846 + 1222200 0.0063094229 0.0026184044 0.0057238235 + 1222300 0.0055778362 0.00260465 0.0053499912 + 1222400 0.0050751173 0.0025146824 0.0050125917 + 1222500 0.004206964 0.0020582983 0.0041289134 + 1222600 0.0057556451 0.0022597906 0.0050926471 + 1222700 0.004443683 0.0029161554 0.0051032806 + 1222800 0.0049953291 0.0025484776 0.0050071161 + 1222900 0.0063889794 0.0022665723 0.0054111481 + 1223000 0.0037675594 0.0028607942 0.0047151399 + 1223100 0.0047193857 0.0026286743 0.0049514969 + 1223200 0.0047468908 0.0016519714 0.0039883317 + 1223300 0.0053150978 0.0015170434 0.0041330681 + 1223400 0.0057598954 0.0021115203 0.0049464688 + 1223500 0.0057183835 0.0024325882 0.0052471051 + 1223600 0.0082657698 0.0023807175 0.0064490261 + 1223700 0.0049978105 0.0029653545 0.0054252143 + 1223800 0.004919839 0.0028840716 0.0053055548 + 1223900 0.0047853847 0.0028033543 0.0051586608 + 1224000 0.0054391534 0.0028703582 0.0055474415 + 1224100 0.0058122434 0.0027146789 0.0055753925 + 1224200 0.0058374384 0.0022979286 0.0051710428 + 1224300 0.0045372962 0.0020993286 0.0043325291 + 1224400 0.0048139604 0.0021293203 0.0044986914 + 1224500 0.0040375391 0.0020698327 0.0040570589 + 1224600 0.0056507088 0.002063074 0.0048442822 + 1224700 0.0046544924 0.0020300756 0.0043209586 + 1224800 0.0058483779 0.0018757672 0.0047542656 + 1224900 0.0049266212 0.0016251179 0.0040499393 + 1225000 0.0048433937 0.0016336109 0.0040174687 + 1225100 0.0048233947 0.0017063202 0.0040803348 + 1225200 0.0068066668 0.0017354214 0.0050855777 + 1225300 0.0048150804 0.0023169682 0.0046868906 + 1225400 0.0061732895 0.0018313699 0.0048697859 + 1225500 0.0054478093 0.0017642771 0.0044456207 + 1225600 0.004515565 0.0017940164 0.0040165211 + 1225700 0.0039821238 0.0015221257 0.0034820772 + 1225800 0.0044718055 0.0015499657 0.0037509324 + 1225900 0.0039962911 0.0015641427 0.0035310672 + 1226000 0.0048457743 0.0014110059 0.0037960354 + 1226100 0.0045233952 0.001631044 0.0038574026 + 1226200 0.0073484596 0.0017745575 0.0053913775 + 1226300 0.0050418068 0.0021549454 0.0046364597 + 1226400 0.0059306339 0.0024179556 0.0053369394 + 1226500 0.0064048625 0.0022420931 0.0053944863 + 1226600 0.0045408091 0.0024521858 0.0046871152 + 1226700 0.0053824017 0.0025228679 0.0051720187 + 1226800 0.0059537017 0.0025681724 0.00549851 + 1226900 0.0055203249 0.0025305108 0.0052475457 + 1227000 0.0049075032 0.0022913688 0.0047067805 + 1227100 0.0054366991 0.0020503133 0.0047261886 + 1227200 0.0051719971 0.0019892482 0.0045348405 + 1227300 0.004280952 0.0018530044 0.0039600355 + 1227400 0.0046513473 0.0024073878 0.0046967229 + 1227500 0.0042671387 0.0024568344 0.0045570668 + 1227600 0.0042597034 0.0020765118 0.0041730845 + 1227700 0.006561945 0.0020490525 0.0052787598 + 1227800 0.006924469 0.0018717082 0.0052798453 + 1227900 0.0050009298 0.0023627638 0.0048241589 + 1228000 0.0048267229 0.002281396 0.0046570486 + 1228100 0.0069201604 0.0021534439 0.0055594604 + 1228200 0.0040663328 0.002437249 0.0044386471 + 1228300 0.0053759924 0.0022533064 0.0048993026 + 1228400 0.0069911563 0.0021034827 0.0055444425 + 1228500 0.0039183538 0.002430185 0.0043587497 + 1228600 0.0054034341 0.0019964671 0.0046559699 + 1228700 0.0060334236 0.0019935843 0.0049631599 + 1228800 0.0048584217 0.0027281079 0.0051193624 + 1228900 0.0050352251 0.0028492337 0.0053275085 + 1229000 0.0047947063 0.0025420406 0.0049019351 + 1229100 0.0065907058 0.0023499617 0.0055938247 + 1229200 0.0059306968 0.0024204175 0.0053394324 + 1229300 0.0049379314 0.0028035737 0.0052339619 + 1229400 0.0050806055 0.0023594841 0.0048600946 + 1229500 0.0059283579 0.0025266228 0.0054444864 + 1229600 0.0046827882 0.0029776205 0.0052824303 + 1229700 0.0045226829 0.0025642299 0.0047902378 + 1229800 0.0078126209 0.0023407876 0.0061860619 + 1229900 0.005102973 0.0024801823 0.0049918018 + 1230000 0.0028762766 0.0025941207 0.0040097881 + 1230100 0.0057021063 0.0021764441 0.0049829496 + 1230200 0.0060147642 0.0022411486 0.0052015403 + 1230300 0.0050250363 0.0028780631 0.0053513232 + 1230400 0.0069831912 0.0031589414 0.0065959809 + 1230500 0.0048412529 0.0031412514 0.0055240556 + 1230600 0.0055623998 0.0026360253 0.005373769 + 1230700 0.0053450739 0.002300077 0.0049308556 + 1230800 0.0043664861 0.0018254803 0.0039746102 + 1230900 0.0058788005 0.0017862477 0.0046797198 + 1231000 0.0053619382 0.0019112507 0.0045503297 + 1231100 0.005667702 0.0019270215 0.0047165936 + 1231200 0.0052366059 0.0021275956 0.0047049876 + 1231300 0.0061332731 0.0024628224 0.0054815428 + 1231400 0.005747819 0.0025994762 0.0054284809 + 1231500 0.0050520687 0.0021636921 0.0046502572 + 1231600 0.0046158516 0.0021841067 0.0044559711 + 1231700 0.0044164684 0.0024861854 0.0046599159 + 1231800 0.0050359302 0.0031316728 0.0056102947 + 1231900 0.0061090328 0.0032046378 0.0062114273 + 1232000 0.0053872939 0.0033050268 0.0059565855 + 1232100 0.005035314 0.0031471438 0.0056254624 + 1232200 0.0051782077 0.0026260737 0.0051747228 + 1232300 0.0032092317 0.0032636099 0.0048431536 + 1232400 0.0050047025 0.0035896428 0.0060528948 + 1232500 0.0053363284 0.0031602652 0.0057867394 + 1232600 0.0061990982 0.0031502771 0.0062013957 + 1232700 0.0039547315 0.0030124199 0.0049588893 + 1232800 0.0043389192 0.0024555548 0.0045911165 + 1232900 0.0046728571 0.002128154 0.0044280759 + 1233000 0.0048821114 0.0021940671 0.0045969813 + 1233100 0.0039130626 0.00234896 0.0042749205 + 1233200 0.0063319603 0.0022327233 0.005349235 + 1233300 0.0047964392 0.0021576711 0.0045184185 + 1233400 0.0060206691 0.0022781815 0.0052414795 + 1233500 0.0033723067 0.0028253178 0.004485125 + 1233600 0.0046302495 0.0029106819 0.0051896329 + 1233700 0.0049049495 0.0029237816 0.0053379364 + 1233800 0.0061409705 0.0028068974 0.0058294063 + 1233900 0.0067821285 0.0024173896 0.0057554685 + 1234000 0.0040805397 0.0024376954 0.0044460861 + 1234100 0.0040954621 0.0023895534 0.0044052887 + 1234200 0.0049732892 0.0018259751 0.0042737659 + 1234300 0.0051297195 0.0016215276 0.0041463115 + 1234400 0.003403357 0.0018033431 0.0034784329 + 1234500 0.0053329132 0.0017289161 0.0043537093 + 1234600 0.0047362568 0.0018868345 0.0042179608 + 1234700 0.0034353682 0.0025200455 0.0042108908 + 1234800 0.0053619538 0.0029337718 0.0055728584 + 1234900 0.0054469251 0.0027910671 0.0054719756 + 1235000 0.0065824869 0.0022884819 0.0055282997 + 1235100 0.0068665914 0.0016106396 0.0049902901 + 1235200 0.0054533878 0.0020016552 0.0046857445 + 1235300 0.004691804 0.0024287352 0.0047379825 + 1235400 0.005632482 0.002445846 0.0052180833 + 1235500 0.0054185427 0.0020603348 0.0047272738 + 1235600 0.0034842239 0.0020043585 0.0037192499 + 1235700 0.0056164293 0.0018251455 0.0045894818 + 1235800 0.005384175 0.002228948 0.0048789717 + 1235900 0.003913293 0.0021824128 0.0041084867 + 1236000 0.0047972269 0.0023671696 0.0047283047 + 1236100 0.0058163278 0.0025488036 0.0054115275 + 1236200 0.0049109133 0.0026593405 0.0050764307 + 1236300 0.0064137247 0.0022623216 0.0054190767 + 1236400 0.0048742713 0.0022921082 0.0046911636 + 1236500 0.0039297645 0.0022233683 0.0041575493 + 1236600 0.0048157161 0.0018914065 0.0042616418 + 1236700 0.0051133343 0.0020781277 0.0045948469 + 1236800 0.0063268304 0.0025620711 0.0056760579 + 1236900 0.0056677268 0.0030686558 0.0058582401 + 1237000 0.0056234543 0.0027688021 0.005536596 + 1237100 0.0060204752 0.0020805294 0.0050437321 + 1237200 0.0046423574 0.0019584215 0.0042433318 + 1237300 0.004471166 0.0024178469 0.0046184989 + 1237400 0.0041461934 0.0023478731 0.0043885777 + 1237500 0.0042672948 0.0022112943 0.0043116035 + 1237600 0.0061008656 0.0022907719 0.0052935417 + 1237700 0.0037166717 0.0023374851 0.0041667845 + 1237800 0.0052461219 0.0023049456 0.0048870212 + 1237900 0.0042694114 0.0022395823 0.0043409332 + 1238000 0.0042333639 0.0021542758 0.0042378846 + 1238100 0.0058909222 0.0019259586 0.0048253969 + 1238200 0.0052600495 0.0020199149 0.0046088455 + 1238300 0.0039136142 0.002278884 0.004205116 + 1238400 0.0039276346 0.0026023592 0.0045354918 + 1238500 0.005539344 0.002334869 0.0050612649 + 1238600 0.0057110005 0.0023119051 0.0051227881 + 1238700 0.00581371 0.0022243015 0.0050857369 + 1238800 0.0062743418 0.0018667249 0.0049548775 + 1238900 0.0037474317 0.001855116 0.0036995551 + 1239000 0.0048499377 0.0020325386 0.0044196173 + 1239100 0.0062714832 0.0018883841 0.0049751298 + 1239200 0.0033775076 0.0026940145 0.0043563815 + 1239300 0.0048033108 0.0026714625 0.005035592 + 1239400 0.0060498047 0.0019450109 0.0049226491 + 1239500 0.0033603561 0.0015045451 0.0031584704 + 1239600 0.0043624541 0.0014635049 0.0036106502 + 1239700 0.0037392102 0.0017988299 0.0036392224 + 1239800 0.0047230414 0.002043694 0.004368316 + 1239900 0.0061664976 0.0017709376 0.0048060106 + 1240000 0.0048525684 0.0017247608 0.0041131343 + 1240100 0.0048664626 0.0015665742 0.0039617862 + 1240200 0.0057113485 0.0017806763 0.0045917306 + 1240300 0.0055151661 0.0018243486 0.0045388444 + 1240400 0.0038944896 0.0015186488 0.0034354679 + 1240500 0.0043149892 0.0023025543 0.0044263381 + 1240600 0.0039607017 0.0021148354 0.0040642433 + 1240700 0.0053274384 0.0019414303 0.0045635289 + 1240800 0.0046485663 0.0020199191 0.0043078853 + 1240900 0.0056744884 0.0020271434 0.0048200557 + 1241000 0.004837024 0.0019919981 0.0043727208 + 1241100 0.0056279413 0.0017171797 0.0044871821 + 1241200 0.0042303405 0.0014768617 0.0035589824 + 1241300 0.0040728642 0.0020742721 0.0040788849 + 1241400 0.0049310569 0.0028123287 0.0052393332 + 1241500 0.0062907315 0.0022959924 0.0053922118 + 1241600 0.0061649672 0.0020517286 0.0050860484 + 1241700 0.0072632881 0.0020427448 0.0056176444 + 1241800 0.0045060623 0.002277954 0.0044957816 + 1241900 0.0051128134 0.002304919 0.0048213819 + 1242000 0.0046084622 0.0020342912 0.0043025188 + 1242100 0.0051847969 0.001744761 0.0042966532 + 1242200 0.0055932032 0.0017502616 0.0045031664 + 1242300 0.0035853666 0.0014742469 0.0032389195 + 1242400 0.0041875499 0.0014568165 0.0035178762 + 1242500 0.0050660687 0.0016534031 0.0041468588 + 1242600 0.0043966687 0.0018749647 0.00403895 + 1242700 0.0059062447 0.0017737252 0.004680705 + 1242800 0.0043522168 0.0017524942 0.0038946009 + 1242900 0.0039637707 0.0013373081 0.0032882265 + 1243000 0.0076667273 0.0016882676 0.0054617349 + 1243100 0.0052582797 0.0019545873 0.0045426468 + 1243200 0.0048662798 0.0018871902 0.0042823123 + 1243300 0.005814271 0.001682517 0.0045442285 + 1243400 0.0039637021 0.0020406104 0.003991495 + 1243500 0.0040489991 0.0022657198 0.0042585866 + 1243600 0.0047495083 0.0019765161 0.0043141647 + 1243700 0.0035854754 0.0021508215 0.0039155477 + 1243800 0.0040920294 0.0022962466 0.0043102923 + 1243900 0.0053196501 0.0019429551 0.0045612204 + 1244000 0.0030054573 0.0021602589 0.0036395074 + 1244100 0.0033355754 0.0027500569 0.0043917854 + 1244200 0.0052775291 0.0029715007 0.0055690346 + 1244300 0.0064058364 0.0029145613 0.0060674339 + 1244400 0.0070098065 0.0027039244 0.0061540635 + 1244500 0.0064830919 0.0026991709 0.0058900677 + 1244600 0.0052250381 0.0032123008 0.0057839992 + 1244700 0.0068761464 0.0032989401 0.0066832934 + 1244800 0.0047038862 0.0029660193 0.0052812133 + 1244900 0.0069825227 0.0019494858 0.0053861962 + 1245000 0.0051997027 0.0022563224 0.0048155511 + 1245100 0.0056507487 0.002885857 0.0056670849 + 1245200 0.0040069593 0.0031731832 0.0051453585 + 1245300 0.0046480222 0.0028963248 0.0051840232 + 1245400 0.0030465727 0.0028463494 0.0043458344 + 1245500 0.0038111168 0.0023741172 0.0042499013 + 1245600 0.0057492171 0.0022147666 0.0050444594 + 1245700 0.004326183 0.0022812967 0.0044105899 + 1245800 0.0046921199 0.0023697743 0.004679177 + 1245900 0.0048152772 0.0025547437 0.0049247629 + 1246000 0.0077692338 0.0027441203 0.00656804 + 1246100 0.0031387269 0.0033184994 0.0048633416 + 1246200 0.0048187257 0.0030776475 0.0054493641 + 1246300 0.0045439437 0.0021451121 0.0043815843 + 1246400 0.0050831372 0.0016076591 0.0041095157 + 1246500 0.0043886266 0.0015074191 0.0036674463 + 1246600 0.0036373899 0.0018362406 0.0036265184 + 1246700 0.0055368206 0.0020523228 0.0047774767 + 1246800 0.006222375 0.0025646121 0.0056271873 + 1246900 0.0052959664 0.0022625165 0.0048691249 + 1247000 0.005082019 0.0020673616 0.0045686678 + 1247100 0.0051129881 0.002669238 0.0051857868 + 1247200 0.0048525353 0.0031635051 0.0055518624 + 1247300 0.0056570351 0.0027960734 0.0055803954 + 1247400 0.0050043077 0.002881808 0.0053448657 + 1247500 0.0062550939 0.0028008668 0.0058795458 + 1247600 0.0055954371 0.0022960405 0.0050500447 + 1247700 0.0046348016 0.0024055515 0.0046867429 + 1247800 0.0060889472 0.002954424 0.0059513277 + 1247900 0.0044584938 0.0035792014 0.0057736163 + 1248000 0.0044575607 0.0035629229 0.0057568786 + 1248100 0.0069179665 0.0029516876 0.0063566242 + 1248200 0.0046141166 0.0027011071 0.0049721176 + 1248300 0.0057524725 0.0026464451 0.0054777402 + 1248400 0.0053718263 0.0025581152 0.005202061 + 1248500 0.0059708607 0.0026113909 0.0055501739 + 1248600 0.0055031282 0.0020214102 0.0047299811 + 1248700 0.0044514681 0.0021902838 0.0043812408 + 1248800 0.0064217389 0.00227167 0.0054323696 + 1248900 0.0049604042 0.0023595486 0.0048009976 + 1249000 0.0034311093 0.0020667344 0.0037554835 + 1249100 0.0044299999 0.0021673257 0.0043477163 + 1249200 0.0041251228 0.0022342742 0.0042646081 + 1249300 0.0049501894 0.0021730971 0.0046095184 + 1249400 0.0051487493 0.0021966464 0.0047307964 + 1249500 0.0052471279 0.0020765935 0.0046591643 + 1249600 0.0044894095 0.0018389406 0.0040485719 + 1249700 0.0051126388 0.0017623738 0.0042787507 + 1249800 0.0056093298 0.0019023752 0.0046632172 + 1249900 0.0058190594 0.0022496807 0.005113749 + 1250000 0.0052100519 0.0027700664 0.0053343888 + 1250100 0.0050714776 0.0024198653 0.0049159832 + 1250200 0.0044437665 0.0022467301 0.0044338964 + 1250300 0.0057923842 0.0025512052 0.0054021443 + 1250400 0.0051818043 0.0025784565 0.0051288758 + 1250500 0.0056892621 0.0025473468 0.0053475305 + 1250600 0.0052467394 0.0022839405 0.0048663201 + 1250700 0.0046108748 0.0023912268 0.0046606417 + 1250800 0.0043488034 0.0025559206 0.0046963473 + 1250900 0.0038467624 0.0023499847 0.0042433131 + 1251000 0.007154625 0.0019762438 0.0054976608 + 1251100 0.0051586617 0.0020334382 0.004572467 + 1251200 0.0049106748 0.001787422 0.0042043948 + 1251300 0.0042128616 0.0018863659 0.0039598838 + 1251400 0.0056320369 0.0019039961 0.0046760142 + 1251500 0.0052739135 0.0017944966 0.0043902509 + 1251600 0.0052197211 0.0017194333 0.0042885148 + 1251700 0.0050934763 0.0016517745 0.0041587199 + 1251800 0.0035470008 0.0022112791 0.0039570686 + 1251900 0.0057314635 0.0018934172 0.0047143719 + 1252000 0.0060271395 0.0016775045 0.0046439872 + 1252100 0.0045424927 0.0017356136 0.0039713717 + 1252200 0.0027931988 0.0021219107 0.0034966882 + 1252300 0.0056182994 0.0022779862 0.0050432429 + 1252400 0.0056368165 0.0024937588 0.0052681294 + 1252500 0.0035092861 0.0020417072 0.0037689339 + 1252600 0.0048965552 0.0019366739 0.0043466971 + 1252700 0.0045970161 0.0021699412 0.004432535 + 1252800 0.0042469065 0.0022645294 0.0043548037 + 1252900 0.0065872652 0.0026386857 0.0058808553 + 1253000 0.0040744366 0.0026695803 0.0046749671 + 1253100 0.0035305837 0.0025757127 0.0043134218 + 1253200 0.005278553 0.0022827211 0.0048807589 + 1253300 0.0032305822 0.0020802296 0.0036702817 + 1253400 0.0042337 0.0019818671 0.0040656413 + 1253500 0.0057732531 0.0021168621 0.0049583851 + 1253600 0.0057754684 0.0020946062 0.0049372196 + 1253700 0.0047540132 0.0025731901 0.004913056 + 1253800 0.0051156978 0.0022647518 0.0047826344 + 1253900 0.0056311906 0.0021559519 0.0049275535 + 1254000 0.0063498032 0.002147253 0.0052725467 + 1254100 0.005138296 0.0021362962 0.0046653013 + 1254200 0.0040551569 0.0023760812 0.0043719787 + 1254300 0.0054995277 0.0025700577 0.0052768565 + 1254400 0.0048069949 0.0022084548 0.0045743976 + 1254500 0.005098137 0.0020131971 0.0045224364 + 1254600 0.0060128383 0.0015883031 0.0045477469 + 1254700 0.0049295643 0.00153934 0.0039656099 + 1254800 0.0042052041 0.0015992443 0.0036689932 + 1254900 0.0039586186 0.0020671933 0.0040155759 + 1255000 0.0049371641 0.002478413 0.0049084235 + 1255100 0.0048608622 0.0026458685 0.0050383241 + 1255200 0.0061453869 0.002916698 0.0059413806 + 1255300 0.0045965285 0.0028031206 0.0050654745 + 1255400 0.0046503815 0.0025965393 0.004885399 + 1255500 0.0043007423 0.0025821638 0.0046989354 + 1255600 0.0048850299 0.0024757164 0.0048800671 + 1255700 0.0049696129 0.002709241 0.0051552223 + 1255800 0.0062989646 0.0021356945 0.0052359662 + 1255900 0.0059539769 0.0019223622 0.0048528352 + 1256000 0.0045916297 0.0023686365 0.0046285793 + 1256100 0.0044182886 0.0025674865 0.0047421129 + 1256200 0.0047017625 0.0025031397 0.0048172885 + 1256300 0.0052437843 0.0022174894 0.0047984145 + 1256400 0.0040477774 0.0021096928 0.0041019582 + 1256500 0.0042844041 0.0024933832 0.0046021134 + 1256600 0.0049465349 0.0027620741 0.0051966968 + 1256700 0.0045347884 0.002605662 0.0048376281 + 1256800 0.006837769 0.0018968784 0.0052623429 + 1256900 0.0054348954 0.0023096631 0.0049846506 + 1257000 0.005207694 0.0023794705 0.0049426324 + 1257100 0.0052823179 0.0022487453 0.0048486361 + 1257200 0.0064770141 0.0023939645 0.0055818699 + 1257300 0.0053783245 0.0029255245 0.0055726686 + 1257400 0.0050549823 0.0030409 0.0055288991 + 1257500 0.0041324715 0.0029288321 0.004962783 + 1257600 0.0047266029 0.0025940793 0.0049204541 + 1257700 0.0055560979 0.0024913369 0.0052259789 + 1257800 0.0046052531 0.0025721618 0.0048388099 + 1257900 0.0034831115 0.0024338562 0.0041482002 + 1258000 0.0046505908 0.0021195332 0.0044084958 + 1258100 0.0056644458 0.0019703004 0.0047582698 + 1258200 0.0042971384 0.002346211 0.0044612088 + 1258300 0.0044440161 0.0023822153 0.0045695045 + 1258400 0.0052990455 0.0021016822 0.0047098061 + 1258500 0.0056576539 0.0018780586 0.0046626852 + 1258600 0.004219213 0.0018434342 0.0039200781 + 1258700 0.0036394128 0.0018222667 0.0036135401 + 1258800 0.004814847 0.0018014152 0.0041712227 + 1258900 0.0045415771 0.0017216018 0.0039569093 + 1259000 0.00420961 0.0016719185 0.003743836 + 1259100 0.0040538659 0.0019326373 0.0039278994 + 1259200 0.0044142848 0.0019388396 0.0041114954 + 1259300 0.0042757849 0.0022871433 0.0043916312 + 1259400 0.0045743974 0.002163975 0.0044154362 + 1259500 0.0049636618 0.0020469027 0.004489955 + 1259600 0.0051178261 0.0017550119 0.0042739419 + 1259700 0.005317206 0.0019504788 0.0045675411 + 1259800 0.004644275 0.0027554542 0.0050413083 + 1259900 0.0054111317 0.0023281712 0.0049914626 + 1260000 0.0057232688 0.0021893799 0.0050063013 + 1260100 0.0043830436 0.0024390519 0.0045963311 + 1260200 0.0054093193 0.0023968841 0.0050592834 + 1260300 0.0053590466 0.002361037 0.0049986927 + 1260400 0.004983475 0.0023996042 0.0048524084 + 1260500 0.0045186173 0.0022619345 0.0044859414 + 1260600 0.004935706 0.0024519988 0.0048812916 + 1260700 0.0069236061 0.0026982906 0.006106003 + 1260800 0.0039050833 0.0033932164 0.0053152496 + 1260900 0.0047748506 0.0033624118 0.0057125336 + 1261000 0.0036806621 0.0031797897 0.0049913656 + 1261100 0.0047449439 0.0029382891 0.0052736911 + 1261200 0.0053381079 0.0028402267 0.0054675767 + 1261300 0.0058106843 0.0027167544 0.0055767006 + 1261400 0.0058224703 0.0025474059 0.005413153 + 1261500 0.0062514567 0.0021493945 0.0052262834 + 1261600 0.0047110995 0.0022597336 0.0045784779 + 1261700 0.0046377981 0.0021188633 0.0044015295 + 1261800 0.0049505124 0.0020977856 0.0045343659 + 1261900 0.0049507112 0.0019679115 0.0044045897 + 1262000 0.0038240691 0.0016356642 0.0035178232 + 1262100 0.0050936086 0.0016714183 0.0041784287 + 1262200 0.0049950233 0.0022963014 0.0047547895 + 1262300 0.004373746 0.0028051949 0.004957898 + 1262400 0.0045383375 0.0025811155 0.0048148285 + 1262500 0.00452484 0.0024290828 0.0046561525 + 1262600 0.0041354476 0.0024218344 0.00445725 + 1262700 0.005853989 0.002440528 0.0053217882 + 1262800 0.0052147304 0.0026516726 0.0052182977 + 1262900 0.0046933525 0.0028653833 0.0051753927 + 1263000 0.0058333911 0.0020919062 0.0049630284 + 1263100 0.0054319971 0.0017718889 0.00444545 + 1263200 0.0045918778 0.0020708754 0.0043309402 + 1263300 0.0065436874 0.0024577785 0.0056784997 + 1263400 0.0042695561 0.0022926194 0.0043940416 + 1263500 0.0046043795 0.0023552944 0.0046215124 + 1263600 0.0079829605 0.0024477266 0.00637684 + 1263700 0.0069154685 0.0027513823 0.0061550895 + 1263800 0.0067508055 0.0027863642 0.0061090263 + 1263900 0.0055239034 0.0028311872 0.0055499834 + 1264000 0.0047879402 0.0028762078 0.0052327721 + 1264100 0.0056683917 0.0026949404 0.005484852 + 1264200 0.0035484297 0.0025236573 0.00427015 + 1264300 0.0053283757 0.0022470143 0.0048695742 + 1264400 0.0055061698 0.0024930823 0.0052031503 + 1264500 0.0053089395 0.0025555437 0.0051685373 + 1264600 0.0053195857 0.002515013 0.0051332465 + 1264700 0.0050934444 0.0025257348 0.0050326644 + 1264800 0.006020449 0.0025010072 0.005464197 + 1264900 0.0040551729 0.0026651547 0.0046610601 + 1265000 0.0036453899 0.0029995038 0.0047937191 + 1265100 0.0049158387 0.0029827541 0.0054022685 + 1265200 0.0041132793 0.0025406002 0.0045651048 + 1265300 0.0051110744 0.0025849979 0.0051006049 + 1265400 0.0041824432 0.0027199691 0.0047785154 + 1265500 0.0045600889 0.0025880601 0.0048324789 + 1265600 0.0047966459 0.0024656017 0.0048264509 + 1265700 0.0034596971 0.0027882154 0.0044910351 + 1265800 0.0045720711 0.0025509862 0.0048013025 + 1265900 0.0045724605 0.0024609568 0.0047114647 + 1266000 0.005040599 0.0027884087 0.0052693285 + 1266100 0.0050662762 0.0031376491 0.0056312069 + 1266200 0.0058537411 0.0028142476 0.0056953858 + 1266300 0.0057455698 0.002599435 0.0054273326 + 1266400 0.0055045641 0.0028408249 0.0055501026 + 1266500 0.0039990201 0.0024595149 0.0044277826 + 1266600 0.00461609 0.0019839779 0.0042559598 + 1266700 0.0034866148 0.0021161738 0.003832242 + 1266800 0.0057803774 0.0021697168 0.0050147464 + 1266900 0.0040565361 0.0025220154 0.0045185918 + 1267000 0.0049278252 0.0023810284 0.0048064423 + 1267100 0.0054707644 0.0024038781 0.00509652 + 1267200 0.0060152213 0.0026177984 0.0055784152 + 1267300 0.0053584497 0.002756427 0.005393789 + 1267400 0.0056598022 0.0023642022 0.0051498861 + 1267500 0.0046519515 0.0022965078 0.0045861402 + 1267600 0.0052002876 0.0025536933 0.0051132098 + 1267700 0.0048159002 0.0029233821 0.005293708 + 1267800 0.0051363871 0.0031144665 0.0056425321 + 1267900 0.0067353492 0.0025061132 0.0058211679 + 1268000 0.0059195681 0.0020837816 0.004997319 + 1268100 0.006594047 0.001849905 0.0050954125 + 1268200 0.0051327808 0.0024157609 0.0049420514 + 1268300 0.0052943728 0.0022264712 0.0048322953 + 1268400 0.005993541 0.0019831158 0.0049330618 + 1268500 0.0056326254 0.0019514436 0.0047237514 + 1268600 0.0039499125 0.0022929217 0.0042370192 + 1268700 0.0052361921 0.0021682533 0.0047454416 + 1268800 0.0049608054 0.0019052075 0.0043468539 + 1268900 0.0063606922 0.001808451 0.0049391042 + 1269000 0.0062643837 0.0023635958 0.0054468471 + 1269100 0.0048398355 0.002646587 0.0050286935 + 1269200 0.0044865434 0.0024484067 0.0046566272 + 1269300 0.0051007469 0.0016509455 0.0041614694 + 1269400 0.0047343268 0.0017051754 0.0040353518 + 1269500 0.0034286278 0.0019419014 0.0036294291 + 1269600 0.0049355832 0.0018527323 0.0042819646 + 1269700 0.0042584221 0.0019872363 0.0040831784 + 1269800 0.0040515916 0.0024216859 0.0044158287 + 1269900 0.0059761258 0.0021824588 0.0051238332 + 1270000 0.0036295743 0.0019589247 0.0037453557 + 1270100 0.0035950075 0.0019579495 0.0037273673 + 1270200 0.0043299521 0.0021169968 0.0042481451 + 1270300 0.0050025103 0.002049996 0.004512169 + 1270400 0.0043042237 0.0023178162 0.0044363013 + 1270500 0.0037738014 0.0028785936 0.0047360115 + 1270600 0.0037927088 0.0028418676 0.0047085915 + 1270700 0.0051877478 0.0026212423 0.0051745869 + 1270800 0.0058296336 0.001929483 0.0047987558 + 1270900 0.0055576233 0.0020782132 0.0048136059 + 1271000 0.0055646467 0.0021814364 0.0049202859 + 1271100 0.0054844112 0.0017650436 0.0044644023 + 1271200 0.0065846853 0.0021438305 0.0053847303 + 1271300 0.0056385057 0.0025840571 0.0053592591 + 1271400 0.0057280829 0.0024865487 0.0053058395 + 1271500 0.004886054 0.002011054 0.0044159087 + 1271600 0.0060512188 0.0022867356 0.0052650698 + 1271700 0.0063150922 0.0020398351 0.0051480446 + 1271800 0.0049275685 0.0020750005 0.0045002881 + 1271900 0.0043925088 0.0018492295 0.0040111675 + 1272000 0.0034109306 0.0018990853 0.0035779027 + 1272100 0.0050414269 0.0016317041 0.0041130314 + 1272200 0.0053147333 0.0012639756 0.0038798209 + 1272300 0.0046987714 0.0018941511 0.0042068276 + 1272400 0.0047119853 0.0021988857 0.004518066 + 1272500 0.0053328811 0.0025150331 0.0051398106 + 1272600 0.003181648 0.0027299847 0.0042959521 + 1272700 0.004466158 0.0022358111 0.0044339982 + 1272800 0.0053618122 0.0025173538 0.0051563707 + 1272900 0.0051071907 0.0029809905 0.005494686 + 1273000 0.0079215528 0.0025570831 0.0064559723 + 1273100 0.0067832007 0.0022789551 0.0056175616 + 1273200 0.0071240888 0.0023297541 0.0058361416 + 1273300 0.0053444648 0.0027975617 0.0054280404 + 1273400 0.0064728327 0.0027566007 0.0059424481 + 1273500 0.0035383787 0.0027403812 0.004481927 + 1273600 0.0047614722 0.0027424797 0.0050860168 + 1273700 0.006617736 0.0025106691 0.0057678361 + 1273800 0.0055869191 0.0022897857 0.0050395974 + 1273900 0.0044439266 0.0021286204 0.0043158655 + 1274000 0.004670977 0.0020892833 0.0043882798 + 1274100 0.0052619226 0.0022288199 0.0048186725 + 1274200 0.0041433261 0.0022996886 0.004338982 + 1274300 0.0057362248 0.0020791596 0.0049024578 + 1274400 0.0050399359 0.0018140554 0.0042946489 + 1274500 0.0052982288 0.0017111172 0.0043188392 + 1274600 0.0045265376 0.0021480291 0.0043759343 + 1274700 0.0046611266 0.0021010662 0.0043952145 + 1274800 0.0044901794 0.0024020618 0.004612072 + 1274900 0.0056613569 0.0028701369 0.005656586 + 1275000 0.0051240874 0.0028076295 0.0053296412 + 1275100 0.0058942897 0.0021389463 0.005040042 + 1275200 0.0042947748 0.0021323025 0.004246137 + 1275300 0.004354236 0.0019251339 0.0040682345 + 1275400 0.0053638485 0.0016327918 0.004272811 + 1275500 0.0058947775 0.001680761 0.0045820968 + 1275600 0.0049156708 0.0021944837 0.0046139154 + 1275700 0.0052307936 0.0020638268 0.004638358 + 1275800 0.0034575477 0.0021728542 0.003874616 + 1275900 0.0042141241 0.0020820809 0.0041562201 + 1276000 0.0062024396 0.0019631955 0.0050159588 + 1276100 0.0073980567 0.0021911947 0.0058324257 + 1276200 0.0039774265 0.0025754661 0.0045331058 + 1276300 0.0036560031 0.0029517072 0.0047511462 + 1276400 0.0051564112 0.0025466854 0.0050846065 + 1276500 0.0053177837 0.0018786156 0.0044959622 + 1276600 0.0051827095 0.0019922776 0.0045431425 + 1276700 0.0034780704 0.0022344873 0.0039463501 + 1276800 0.004716774 0.0018843444 0.0042058816 + 1276900 0.0050570352 0.001809417 0.0042984265 + 1277000 0.0037538758 0.0021995103 0.004047121 + 1277100 0.0049816303 0.0019032495 0.0043551457 + 1277200 0.004983213 0.0016043514 0.0040570266 + 1277300 0.0057993078 0.0018388632 0.00469321 + 1277400 0.0054121895 0.0020686446 0.0047324566 + 1277500 0.0063470856 0.0019685343 0.0050924905 + 1277600 0.0045928007 0.0023198812 0.0045804003 + 1277700 0.0037524728 0.0023189199 0.0041658401 + 1277800 0.0049967686 0.0018566298 0.0043159768 + 1277900 0.0043745453 0.0018188709 0.0039719674 + 1278000 0.0057113769 0.0019452732 0.0047563415 + 1278100 0.0036311309 0.0021041152 0.0038913125 + 1278200 0.0059324939 0.0020339102 0.0049538095 + 1278300 0.0047406296 0.0022418237 0.0045751023 + 1278400 0.0060253826 0.0023684487 0.0053340667 + 1278500 0.0046642225 0.0026189651 0.0049146371 + 1278600 0.004553872 0.0027322041 0.004973563 + 1278700 0.0047809635 0.0024011987 0.0047543292 + 1278800 0.0057486651 0.0024757388 0.0053051599 + 1278900 0.0067195567 0.002575051 0.0058823328 + 1279000 0.0040948183 0.0038182758 0.0058336941 + 1279100 0.0038946207 0.0036643829 0.0055812665 + 1279200 0.0072258927 0.0031405014 0.0066969955 + 1279300 0.0068174985 0.0031659309 0.0065214184 + 1279400 0.0061053159 0.0030355417 0.0060405018 + 1279500 0.004688877 0.0031335263 0.0054413329 + 1279600 0.0071675036 0.0024789868 0.0060067425 + 1279700 0.006263775 0.0022177982 0.0053007499 + 1279800 0.0045300224 0.0021134042 0.0043430246 + 1279900 0.0045008738 0.0025056312 0.004720905 + 1280000 0.0053583954 0.0028613583 0.0054986935 + 1280100 0.0046997946 0.002957628 0.0052708081 + 1280200 0.004907267 0.0024774675 0.0048927629 + 1280300 0.0047536631 0.0022050035 0.0045446971 + 1280400 0.0037089641 0.0020989046 0.0039244104 + 1280500 0.0047947322 0.0020236906 0.0043835978 + 1280600 0.0041117292 0.0020881521 0.0041118938 + 1280700 0.0036913156 0.0022478487 0.0040646681 + 1280800 0.0047567017 0.0024601944 0.0048013835 + 1280900 0.0047892894 0.0025403803 0.0048976086 + 1281000 0.005272477 0.0023480616 0.0049431089 + 1281100 0.0069693048 0.0028770828 0.0063072875 + 1281200 0.0048012428 0.0035933942 0.0059565059 + 1281300 0.0063992602 0.0029399244 0.0060895603 + 1281400 0.0044154941 0.0023828678 0.0045561188 + 1281500 0.0063059825 0.0020963473 0.0052000731 + 1281600 0.0040442048 0.0022930052 0.0042835122 + 1281700 0.0034531074 0.0025446943 0.0042442706 + 1281800 0.0044081117 0.0027133779 0.0048829954 + 1281900 0.0052262143 0.0022973717 0.004869649 + 1282000 0.0057325227 0.0024108865 0.0052323625 + 1282100 0.0042601572 0.0025181884 0.0046149845 + 1282200 0.0046970373 0.0022762186 0.0045880416 + 1282300 0.0056383098 0.0019293189 0.0047044245 + 1282400 0.0045308865 0.0016641086 0.0038941543 + 1282500 0.0067451247 0.0020208918 0.0053407578 + 1282600 0.0051616023 0.0023453854 0.0048858615 + 1282700 0.0052850825 0.0021306929 0.0047319445 + 1282800 0.0048824964 0.0020056242 0.0044087279 + 1282900 0.0058424171 0.002052736 0.0049283007 + 1283000 0.0033300236 0.0022902157 0.0039292117 + 1283100 0.0037275256 0.0021245712 0.0039592127 + 1283200 0.0033683477 0.0023977189 0.0040555776 + 1283300 0.0048297605 0.0022182461 0.0045953938 + 1283400 0.0059167952 0.0018784345 0.0047906071 + 1283500 0.0045638687 0.0023414151 0.0045876942 + 1283600 0.003876711 0.0022086089 0.0041166775 + 1283700 0.0051993759 0.0020530878 0.0046121556 + 1283800 0.0045395361 0.0024056402 0.0046399432 + 1283900 0.0046082124 0.0025795085 0.004847613 + 1284000 0.0047990686 0.0026838852 0.0050459267 + 1284100 0.0050575225 0.0029242529 0.0054135023 + 1284200 0.0035328442 0.0031292177 0.0048680394 + 1284300 0.0057692335 0.0029495029 0.0057890475 + 1284400 0.0031745864 0.0027082216 0.0042707133 + 1284500 0.0054206769 0.0025489176 0.0052169071 + 1284600 0.004645629 0.002521007 0.0048075275 + 1284700 0.0061544904 0.0024854074 0.0055145706 + 1284800 0.0050361184 0.0022817812 0.0047604957 + 1284900 0.0062348715 0.0018494295 0.0049181553 + 1285000 0.0044670578 0.0023631691 0.0045617991 + 1285100 0.0042799347 0.0026086388 0.0047151692 + 1285200 0.0049891013 0.0023520548 0.0048076281 + 1285300 0.0051783456 0.0023386651 0.0048873821 + 1285400 0.0047376089 0.0023881348 0.0047199266 + 1285500 0.0033746947 0.0022948654 0.003955848 + 1285600 0.0046940055 0.002847982 0.0051583128 + 1285700 0.0068698929 0.0027773559 0.0061586313 + 1285800 0.0040313206 0.0028422471 0.0048264126 + 1285900 0.005506686 0.0028761195 0.0055864415 + 1286000 0.0045898071 0.0029338249 0.0051928706 + 1286100 0.00658258 0.0032045186 0.0064443822 + 1286200 0.0042137031 0.003406107 0.005480039 + 1286300 0.0074269206 0.002842744 0.0064981815 + 1286400 0.0060836832 0.0025135825 0.0055078953 + 1286500 0.0062235528 0.0021569168 0.0052200717 + 1286600 0.0047204968 0.0019203679 0.0042437374 + 1286700 0.0048782109 0.0019823801 0.0043833745 + 1286800 0.0050043884 0.0019916719 0.0044547693 + 1286900 0.0037597059 0.0017507089 0.0036011891 + 1287000 0.0042069558 0.001614616 0.0036852271 + 1287100 0.0042538718 0.0019437723 0.0040374748 + 1287200 0.0044058677 0.0018963357 0.0040648487 + 1287300 0.0050141195 0.0020600429 0.0045279298 + 1287400 0.007097331 0.0021476597 0.0056408773 + 1287500 0.0052963561 0.002173356 0.0047801563 + 1287600 0.0059607217 0.0023285637 0.0052623564 + 1287700 0.0053243892 0.0025510062 0.0051716041 + 1287800 0.0038535522 0.002494659 0.0043913292 + 1287900 0.0033892471 0.0024845925 0.0041527376 + 1288000 0.005131566 0.0024074442 0.0049331368 + 1288100 0.0045114191 0.0026676725 0.0048881366 + 1288200 0.0052135592 0.0025527301 0.0051187788 + 1288300 0.0050588333 0.0024200461 0.0049099406 + 1288400 0.0053009801 0.0025649907 0.0051740668 + 1288500 0.0057393573 0.0022525462 0.0050773862 + 1288600 0.0049666894 0.0026424966 0.005087039 + 1288700 0.0040196737 0.002179605 0.0041580381 + 1288800 0.0045686161 0.0021262386 0.0043748543 + 1288900 0.0059339268 0.0021972359 0.0051178405 + 1289000 0.004468351 0.0021195238 0.0043187903 + 1289100 0.0043394492 0.0020349185 0.0041707411 + 1289200 0.0053606884 0.0021730514 0.0048115152 + 1289300 0.0057074751 0.002165052 0.0049741999 + 1289400 0.0043281216 0.002287874 0.0044181213 + 1289500 0.0045617606 0.0020704133 0.0043156548 + 1289600 0.0044477454 0.0019933791 0.0041825038 + 1289700 0.00460785 0.0024486703 0.0047165965 + 1289800 0.0048085899 0.00322119 0.0055879178 + 1289900 0.0065790403 0.0029991519 0.0062372733 + 1290000 0.0054143121 0.002548459 0.0052133157 + 1290100 0.0044625576 0.0021762822 0.0043726973 + 1290200 0.0049660465 0.0022061273 0.0046503533 + 1290300 0.0047391579 0.0024521573 0.0047847116 + 1290400 0.0040638085 0.0025546914 0.0045548472 + 1290500 0.0046483403 0.0022415116 0.0045293666 + 1290600 0.0044889899 0.0022961169 0.0045055416 + 1290700 0.0056500512 0.0024032826 0.0051841672 + 1290800 0.0047817294 0.0024783056 0.0048318131 + 1290900 0.0060378197 0.0028119659 0.0057837053 + 1291000 0.0034371297 0.0032017775 0.0048934898 + 1291100 0.0054721077 0.002889636 0.005582939 + 1291200 0.0059084751 0.0036041555 0.006512233 + 1291300 0.0041781167 0.0033123339 0.0053687507 + 1291400 0.0051269012 0.0025423314 0.0050657281 + 1291500 0.0058069859 0.0023954565 0.0052535824 + 1291600 0.0047460208 0.0019939535 0.0043298856 + 1291700 0.0054818847 0.0020256229 0.004723738 + 1291800 0.0049209213 0.0021047392 0.0045267552 + 1291900 0.0038323977 0.0025379841 0.0044242424 + 1292000 0.0041957748 0.0028009091 0.004866017 + 1292100 0.0048425059 0.0027884001 0.005171821 + 1292200 0.0050724223 0.0025507607 0.0050473436 + 1292300 0.0058549921 0.0027376293 0.0056193832 + 1292400 0.0041864802 0.0029220243 0.0049825575 + 1292500 0.0062658254 0.0026389121 0.0057228731 + 1292600 0.004551969 0.0023340603 0.0045744825 + 1292700 0.0027501078 0.0022530854 0.0036066541 + 1292800 0.0048623992 0.0025278745 0.0049210866 + 1292900 0.0045671777 0.0026507808 0.0048986886 + 1293000 0.0057439032 0.0024233075 0.0052503849 + 1293100 0.005429474 0.0027343692 0.0054066884 + 1293200 0.0060277594 0.0034896714 0.0064564592 + 1293300 0.0059068623 0.0034744703 0.0063817541 + 1293400 0.0066422751 0.0036111321 0.0068803769 + 1293500 0.0047354674 0.0039735676 0.0063043055 + 1293600 0.0051935471 0.0037894625 0.0063456614 + 1293700 0.0040164113 0.0031665327 0.0051433602 + 1293800 0.0052525001 0.0030764463 0.0056616612 + 1293900 0.0044036528 0.0034413389 0.0056087618 + 1294000 0.0052936505 0.0033656172 0.0059710858 + 1294100 0.0061381434 0.0034749766 0.0064960941 + 1294200 0.006492196 0.0034673699 0.0066627476 + 1294300 0.0056572717 0.0034818957 0.0062663341 + 1294400 0.0047006392 0.0032827255 0.0055963213 + 1294500 0.0051416442 0.0031232448 0.0056538978 + 1294600 0.0054316666 0.0032293454 0.0059027438 + 1294700 0.0055384042 0.0037427341 0.0064686674 + 1294800 0.0040915284 0.0032730166 0.0052868157 + 1294900 0.006305602 0.0027902714 0.0058938099 + 1295000 0.004393685 0.0029290562 0.005091573 + 1295100 0.0059322492 0.00242134 0.0053411189 + 1295200 0.004248364 0.0021133018 0.0042042935 + 1295300 0.0037471151 0.0020200234 0.0038643066 + 1295400 0.0060609953 0.002303015 0.0052861611 + 1295500 0.0041041811 0.0029753769 0.0049954035 + 1295600 0.0041586084 0.002605182 0.0046519971 + 1295700 0.0050353743 0.0026034508 0.0050817991 + 1295800 0.004677413 0.0030627162 0.0053648804 + 1295900 0.0048300242 0.0028354998 0.0052127773 + 1296000 0.0044091701 0.0026455852 0.0048157236 + 1296100 0.0054386987 0.0023943634 0.0050712229 + 1296200 0.0057305681 0.002232791 0.005053305 + 1296300 0.0044158736 0.0021870901 0.0043605278 + 1296400 0.0043033886 0.002362077 0.004480151 + 1296500 0.0059207468 0.0022883869 0.0052025045 + 1296600 0.0050357011 0.0024197885 0.0048982977 + 1296700 0.0060655325 0.0026637064 0.0056490857 + 1296800 0.0037470248 0.0026839864 0.0045282251 + 1296900 0.0043673578 0.0027971168 0.0049466757 + 1297000 0.0051213985 0.0030055743 0.0055262626 + 1297100 0.0056574441 0.0028997721 0.0056842953 + 1297200 0.0063765342 0.0029016399 0.0060400903 + 1297300 0.0047641287 0.0030354571 0.0053803017 + 1297400 0.0050932022 0.0029149012 0.0054217117 + 1297500 0.00449938 0.0029962842 0.0052108228 + 1297600 0.0041658426 0.0026701866 0.0047205623 + 1297700 0.0058137762 0.0024958682 0.0053573361 + 1297800 0.0057984879 0.0027422346 0.0055961779 + 1297900 0.0067753669 0.0027628241 0.006097575 + 1298000 0.0054299022 0.003073784 0.0057463141 + 1298100 0.0065807123 0.0031085375 0.0063474818 + 1298200 0.0037701776 0.0032062489 0.0050618832 + 1298300 0.0043165386 0.0027548725 0.0048794188 + 1298400 0.0044980656 0.0024642115 0.0046781032 + 1298500 0.0047260102 0.0023428191 0.0046689022 + 1298600 0.0048116558 0.0025882173 0.0049564541 + 1298700 0.0050923882 0.0026441548 0.0051505646 + 1298800 0.0048686081 0.0025284962 0.0049247643 + 1298900 0.0036211867 0.0024152399 0.0041975427 + 1299000 0.0046556492 0.0026222504 0.0049137028 + 1299100 0.0037355744 0.0032150672 0.0050536703 + 1299200 0.0035768059 0.0030787989 0.004839258 + 1299300 0.0053671783 0.0024380877 0.0050797458 + 1299400 0.0059644217 0.0020960634 0.0050316772 + 1299500 0.0045918432 0.0028779847 0.0051380325 + 1299600 0.0039368499 0.0033352742 0.0052729425 + 1299700 0.0042714487 0.0030103902 0.0051127438 + 1299800 0.0068528192 0.0023517461 0.0057246181 + 1299900 0.0043885127 0.0027200292 0.0048800003 + 1300000 0.003768868 0.0028113159 0.0046663056 + 1300100 0.0059245572 0.0024384309 0.0053544239 + 1300200 0.0064339075 0.0023236078 0.0054902967 + 1300300 0.0046448107 0.0023967682 0.004682886 + 1300400 0.0040101824 0.0023205396 0.0042943012 + 1300500 0.0037961049 0.002396932 0.0042653274 + 1300600 0.0054976713 0.0020235282 0.0047294133 + 1300700 0.0060000111 0.0020999905 0.005053121 + 1300800 0.0050196614 0.0020750363 0.0045456509 + 1300900 0.0043008489 0.0025221597 0.0046389838 + 1301000 0.0062017218 0.0024325598 0.0054849697 + 1301100 0.0043537532 0.0024009547 0.0045438175 + 1301200 0.0054389466 0.0027406919 0.0054176734 + 1301300 0.0048517218 0.003066513 0.0054544699 + 1301400 0.005158896 0.0031496419 0.005688786 + 1301500 0.0056116323 0.0031480319 0.0059100071 + 1301600 0.0054965186 0.0025869804 0.0052922981 + 1301700 0.0055449799 0.0023206745 0.0050498443 + 1301800 0.0064846481 0.0021104516 0.0053021143 + 1301900 0.0053267686 0.0022865177 0.0049082866 + 1302000 0.0055357332 0.0023445507 0.0050691694 + 1302100 0.005763795 0.0020047945 0.0048416623 + 1302200 0.004783243 0.0021826516 0.004536904 + 1302300 0.0047754468 0.0026448889 0.0049953041 + 1302400 0.004546383 0.0025350023 0.0047726751 + 1302500 0.0058473582 0.0024585463 0.0053365429 + 1302600 0.0041272355 0.0024621638 0.0044935375 + 1302700 0.0046004316 0.0024965625 0.0047608374 + 1302800 0.0045380373 0.0026276196 0.0048611848 + 1302900 0.0054953608 0.0026995854 0.0054043333 + 1303000 0.0043699441 0.0028008981 0.00495173 + 1303100 0.0040954586 0.0030291805 0.005044914 + 1303200 0.0035125728 0.0029663074 0.0046951518 + 1303300 0.0042431771 0.0028252291 0.0049136678 + 1303400 0.0074340609 0.0026299938 0.0062889457 + 1303500 0.0055745761 0.003310817 0.0060545537 + 1303600 0.0073254848 0.0034947017 0.0071002138 + 1303700 0.0050643122 0.0031423149 0.005634906 + 1303800 0.0044820184 0.0028653651 0.0050713585 + 1303900 0.0045885385 0.0024539978 0.0047124191 + 1304000 0.0084826928 0.0019904523 0.0061655276 + 1304100 0.0052084152 0.0025605624 0.0051240793 + 1304200 0.0056270291 0.0026454658 0.0054150192 + 1304300 0.007400386 0.002433864 0.0060762415 + 1304400 0.0046604429 0.0026326027 0.0049264144 + 1304500 0.005822853 0.0024866439 0.0053525793 + 1304600 0.0031481623 0.0027161534 0.0042656395 + 1304700 0.0058173352 0.0030626962 0.0059259158 + 1304800 0.0060862358 0.0035542282 0.0065497974 + 1304900 0.0050437617 0.003138996 0.0056214725 + 1305000 0.0065470346 0.0022380795 0.0054604481 + 1305100 0.0039205093 0.0021924998 0.0041221254 + 1305200 0.0055630967 0.002435391 0.0051734777 + 1305300 0.0045882451 0.002339628 0.0045979049 + 1305400 0.0061106844 0.0023667011 0.0053743035 + 1305500 0.0053404839 0.0027479987 0.0053765181 + 1305600 0.0062526232 0.002721084 0.005798547 + 1305700 0.0059279071 0.0027950514 0.0057126931 + 1305800 0.004560161 0.0027901674 0.0050346216 + 1305900 0.0047055063 0.0026752888 0.0049912801 + 1306000 0.007338262 0.0016913705 0.0053031713 + 1306100 0.0047535546 0.0013143558 0.003653996 + 1306200 0.0052092351 0.0015010486 0.0040649689 + 1306300 0.0058095792 0.0018312082 0.0046906105 + 1306400 0.0069786832 0.00232095 0.0057557706 + 1306500 0.0046207661 0.0032948764 0.0055691597 + 1306600 0.0055140246 0.0030919796 0.0058059136 + 1306700 0.0065764207 0.0023697816 0.0056066137 + 1306800 0.0045392531 0.0018709543 0.0041051179 + 1306900 0.0040942316 0.0019885625 0.0040036921 + 1307000 0.0052103017 0.0020131381 0.0045775834 + 1307100 0.0058676527 0.0017661021 0.0046540874 + 1307200 0.0049442514 0.0016888104 0.0041223091 + 1307300 0.0045717124 0.0020899035 0.0043400432 + 1307400 0.0039920523 0.002435565 0.0044004033 + 1307500 0.0060063378 0.0021375068 0.0050937512 + 1307600 0.0060199533 0.0020569854 0.0050199311 + 1307700 0.0046231946 0.0020313531 0.0043068317 + 1307800 0.0050004791 0.0021348384 0.0045960118 + 1307900 0.0037554687 0.0020515868 0.0038999816 + 1308000 0.0057055238 0.0017762873 0.0045844748 + 1308100 0.0055149196 0.0023448766 0.0050592511 + 1308200 0.0026780012 0.0023355951 0.0036536738 + 1308300 0.0030838378 0.0019526396 0.003470466 + 1308400 0.0045971584 0.0019360729 0.0041987368 + 1308500 0.0041934781 0.0017894489 0.0038534264 + 1308600 0.0045708764 0.0018539057 0.004103634 + 1308700 0.0043452994 0.0019696363 0.0041083383 + 1308800 0.0047085756 0.0022124789 0.0045299809 + 1308900 0.0039613786 0.0027255954 0.0046753364 + 1309000 0.0047247976 0.0023736481 0.0046991344 + 1309100 0.0068494825 0.0020287396 0.0053999693 + 1309200 0.0044782748 0.0026413017 0.0048454526 + 1309300 0.0047270579 0.0031968762 0.005523475 + 1309400 0.0057266139 0.0035973973 0.0064159651 + 1309500 0.0041828316 0.003291709 0.0053504465 + 1309600 0.0054024742 0.0035236263 0.0061826566 + 1309700 0.0052078644 0.0030799686 0.0056432143 + 1309800 0.0045140063 0.0025666216 0.0047883591 + 1309900 0.0059958341 0.0021452002 0.0050962748 + 1310000 0.0069793978 0.0024413334 0.0058765057 + 1310100 0.0056070287 0.0026906491 0.0054503585 + 1310200 0.0048434671 0.0029137362 0.0052976301 + 1310300 0.0062778246 0.0026703504 0.0057602172 + 1310400 0.006071847 0.0028168275 0.0058053147 + 1310500 0.0067489707 0.0028337436 0.0061555026 + 1310600 0.007475709 0.0025291558 0.0062086063 + 1310700 0.0051887441 0.0026284933 0.0051823283 + 1310800 0.0045275906 0.0027972408 0.0050256643 + 1310900 0.0046692031 0.0025675546 0.0048656781 + 1311000 0.0043596462 0.0022842106 0.004429974 + 1311100 0.0035320272 0.0025668812 0.0043053009 + 1311200 0.0057906906 0.0025185278 0.0053686333 + 1311300 0.0037009786 0.0031535751 0.0049751505 + 1311400 0.0055240643 0.0032141645 0.0059330399 + 1311500 0.006199371 0.0031596062 0.0062108591 + 1311600 0.003329672 0.0030387867 0.0046776096 + 1311700 0.0057515699 0.002550865 0.0053817158 + 1311800 0.0054110027 0.0024977241 0.005160952 + 1311900 0.0051678292 0.0028211448 0.0053646858 + 1312000 0.0049248792 0.0023100887 0.0047340528 + 1312100 0.005138329 0.0019058932 0.0044349145 + 1312200 0.0056018458 0.0018439299 0.0046010884 + 1312300 0.0037697347 0.0020287042 0.0038841206 + 1312400 0.0042390036 0.0018391418 0.0039255264 + 1312500 0.0064916976 0.001863998 0.0050591304 + 1312600 0.0046045344 0.0018124273 0.0040787215 + 1312700 0.0047342259 0.0017493588 0.0040794857 + 1312800 0.0067449634 0.0018377602 0.0051575469 + 1312900 0.0028545464 0.0023323374 0.0037373095 + 1313000 0.0053151095 0.0022103283 0.0048263588 + 1313100 0.0044065935 0.002051426 0.0042202962 + 1313200 0.0075554482 0.0016271142 0.0053458114 + 1313300 0.0047366224 0.0019172189 0.0042485253 + 1313400 0.0044306776 0.0021476983 0.0043284224 + 1313500 0.0061965916 0.0015903403 0.0046402252 + 1313600 0.0068553284 0.0017869116 0.0051610186 + 1313700 0.0049465026 0.0024805189 0.0049151256 + 1313800 0.0054857268 0.0028937752 0.0055937813 + 1313900 0.0056622629 0.0034574039 0.0062442989 + 1314000 0.0037030747 0.0034830954 0.0053057025 + 1314100 0.0047692551 0.0031172735 0.0054646412 + 1314200 0.0056901657 0.0029704063 0.0057710347 + 1314300 0.0063122371 0.0032407872 0.0063475914 + 1314400 0.0056075705 0.0035887562 0.0063487323 + 1314500 0.0053650959 0.0031483364 0.0057889696 + 1314600 0.0052072915 0.0030188315 0.0055817953 + 1314700 0.0062337027 0.0024933201 0.0055614706 + 1314800 0.0064365921 0.0024060224 0.0055740326 + 1314900 0.0067234344 0.0023149008 0.0056240912 + 1315000 0.0041264321 0.00272503 0.0047560083 + 1315100 0.0049424593 0.0024650781 0.0048976948 + 1315200 0.0049686655 0.001992144 0.004437659 + 1315300 0.0037395031 0.0018829724 0.003723509 + 1315400 0.0059291982 0.0021299462 0.0050482235 + 1315500 0.0060301626 0.0022738278 0.0052417985 + 1315600 0.0057186969 0.0020893828 0.004904054 + 1315700 0.0051709052 0.0021579749 0.0047030298 + 1315800 0.0056809928 0.0022469975 0.0050431111 + 1315900 0.0070911131 0.0030993114 0.0065894686 + 1316000 0.0042614548 0.0037581146 0.0058555493 + 1316100 0.0053223669 0.0033239738 0.0059435762 + 1316200 0.0044347653 0.0029033682 0.0050861042 + 1316300 0.0048387611 0.0030019247 0.0053835024 + 1316400 0.0051028791 0.0029407412 0.0054523145 + 1316500 0.0052016632 0.0025437415 0.0051039351 + 1316600 0.0058263949 0.0023069911 0.0051746699 + 1316700 0.0051837243 0.0021521715 0.0047035358 + 1316800 0.0051429103 0.0017174975 0.0042487737 + 1316900 0.0058631739 0.0016150508 0.0045008317 + 1317000 0.0026652517 0.0017315117 0.0030433153 + 1317100 0.0041840162 0.0014016511 0.0034609716 + 1317200 0.0053293793 0.0016271594 0.0042502133 + 1317300 0.0053388055 0.0018136621 0.0044413554 + 1317400 0.0058272524 0.0023568706 0.0052249714 + 1317500 0.0051545741 0.0026620327 0.0051990496 + 1317600 0.0047413564 0.0027629361 0.0050965725 + 1317700 0.0065536234 0.0023071912 0.0055328027 + 1317800 0.0046792913 0.0020389067 0.0043419954 + 1317900 0.0031201792 0.0020734899 0.0036092031 + 1318000 0.005149867 0.0020842421 0.0046189423 + 1318100 0.0047969315 0.0019927003 0.00435369 + 1318200 0.0056453831 0.0024611329 0.0052397199 + 1318300 0.0053774902 0.0027212341 0.0053679676 + 1318400 0.0053207693 0.0029979774 0.0056167935 + 1318500 0.0057372411 0.0033003627 0.0061241611 + 1318600 0.0061042584 0.002913958 0.0059183977 + 1318700 0.007015572 0.0028761232 0.0063291 + 1318800 0.0057081741 0.0034346216 0.0062441136 + 1318900 0.0066331454 0.0033586488 0.0066234001 + 1319000 0.0041465587 0.0025922133 0.0046330976 + 1319100 0.0048189824 0.0018087897 0.0041806325 + 1319200 0.0036655333 0.0020956462 0.0038997758 + 1319300 0.0045065738 0.002351358 0.0045694373 + 1319400 0.0040080999 0.0020148305 0.0039875671 + 1319500 0.005104674 0.0020849562 0.0045974129 + 1319600 0.00455091 0.0025719486 0.0048118496 + 1319700 0.0066171059 0.0026222059 0.0058790627 + 1319800 0.0048628852 0.0022117022 0.0046051535 + 1319900 0.0050614986 0.0019248779 0.0044160842 + 1320000 0.003943608 0.0019473083 0.0038883029 + 1320100 0.0052519451 0.0016771373 0.0042620791 + 1320200 0.0036819701 0.0017120596 0.0035242792 + 1320300 0.0049519753 0.0017610079 0.0041983082 + 1320400 0.0063325692 0.0017029411 0.0048197525 + 1320500 0.0037011647 0.0019024995 0.0037241665 + 1320600 0.0039251523 0.0019570078 0.0038889187 + 1320700 0.0042562158 0.0021416397 0.0042364959 + 1320800 0.0047350601 0.0017844097 0.0041149471 + 1320900 0.0046642747 0.0017854068 0.0040811045 + 1321000 0.0047419795 0.0017061329 0.0040400759 + 1321100 0.0045322508 0.0019672793 0.0041979965 + 1321200 0.0053761423 0.0023179918 0.0049640619 + 1321300 0.0054919145 0.0030855144 0.0057885661 + 1321400 0.0051065256 0.0025923166 0.0051056847 + 1321500 0.0057185124 0.0022320493 0.0050466296 + 1321600 0.0053556358 0.0020282938 0.0046642708 + 1321700 0.0050163767 0.0019144713 0.0043834692 + 1321800 0.0057312791 0.0021584466 0.0049793105 + 1321900 0.0032050164 0.0026366459 0.0042141149 + 1322000 0.0055565752 0.0020955612 0.0048304381 + 1322100 0.0047017771 0.0020441572 0.0043583131 + 1322200 0.0051267235 0.0021450647 0.0046683739 + 1322300 0.0049144174 0.0025233456 0.0049421604 + 1322400 0.0056515298 0.0027080528 0.0054896651 + 1322500 0.0064864075 0.0029686884 0.0061612172 + 1322600 0.0053066572 0.0028461152 0.0054579856 + 1322700 0.0039507227 0.0027285587 0.0046730551 + 1322800 0.0036695756 0.0022288103 0.0040349296 + 1322900 0.0057442364 0.0020861196 0.0049133609 + 1323000 0.0055424339 0.0023106332 0.0050385499 + 1323100 0.0073770114 0.0024784357 0.0061093085 + 1323200 0.0046858429 0.0031405469 0.0054468602 + 1323300 0.0045944551 0.002541018 0.0048023513 + 1323400 0.004440947 0.002170558 0.0043563366 + 1323500 0.0064512259 0.0022174467 0.0053926595 + 1323600 0.0046714936 0.0021286126 0.0044278634 + 1323700 0.0040557481 0.0025648095 0.0045609981 + 1323800 0.0041366055 0.0028280897 0.0048640752 + 1323900 0.0046313879 0.0025866559 0.0048661672 + 1324000 0.0058344341 0.002253259 0.0051248945 + 1324100 0.0051281686 0.0022260071 0.0047500276 + 1324200 0.0051682181 0.0021981356 0.0047418679 + 1324300 0.0052056511 0.0022916874 0.0048538438 + 1324400 0.0063661328 0.0027878465 0.0059211775 + 1324500 0.0026084753 0.0031246163 0.0044084752 + 1324600 0.0044339628 0.002260094 0.004442435 + 1324700 0.0043842584 0.0019247253 0.0040826025 + 1324800 0.0043687614 0.0022468111 0.0043970608 + 1324900 0.00477968 0.0020120918 0.0043645905 + 1325000 0.0038528783 0.001908425 0.0038047636 + 1325100 0.0050663179 0.0018407952 0.0043343735 + 1325200 0.0052124509 0.0023220547 0.0048875579 + 1325300 0.0047631215 0.0025121856 0.0048565345 + 1325400 0.0049795837 0.0026038404 0.0050547292 + 1325500 0.0043293682 0.0026205252 0.0047513861 + 1325600 0.0051293691 0.002583058 0.0051076694 + 1325700 0.0042646706 0.00250869 0.0046077076 + 1325800 0.0053514765 0.0025171968 0.0051511267 + 1325900 0.0050021941 0.0024079516 0.004869969 + 1326000 0.0059203524 0.0024589928 0.0053729163 + 1326100 0.0050275623 0.0025896645 0.0050641679 + 1326200 0.0047617544 0.0026779229 0.0050215989 + 1326300 0.0052809854 0.002694689 0.005293924 + 1326400 0.0055135295 0.0022262695 0.0049399598 + 1326500 0.0062685607 0.0017841321 0.0048694393 + 1326600 0.0048718347 0.002247982 0.0046458381 + 1326700 0.0052548598 0.0025312235 0.0051175998 + 1326800 0.0063437355 0.0025551822 0.0056774895 + 1326900 0.0054866831 0.0024695788 0.0051700556 + 1327000 0.0057006648 0.0025224 0.005328196 + 1327100 0.0049433825 0.002028517 0.004461588 + 1327200 0.0037781347 0.0019162142 0.0037757649 + 1327300 0.0065075487 0.0023244163 0.0055273504 + 1327400 0.0043281477 0.0023801189 0.0045103791 + 1327500 0.0048476497 0.0022380758 0.0046240284 + 1327600 0.0045038197 0.0023607248 0.0045774486 + 1327700 0.0045577459 0.0019454542 0.0041887198 + 1327800 0.0046744398 0.001850953 0.0041516538 + 1327900 0.0038772998 0.0018377931 0.0037461516 + 1328000 0.0056081745 0.0023089467 0.0050692201 + 1328100 0.0051517213 0.0030423454 0.0055779583 + 1328200 0.0038118882 0.0031075606 0.0049837244 + 1328300 0.005465965 0.0020194938 0.0047097735 + 1328400 0.0075787021 0.0015945698 0.0053247123 + 1328500 0.003871659 0.0018776257 0.0037832078 + 1328600 0.0054353162 0.0018082549 0.0044834496 + 1328700 0.0058315354 0.0020274142 0.004897623 + 1328800 0.0062191771 0.002351228 0.0054122292 + 1328900 0.0058328645 0.0028326879 0.005703551 + 1329000 0.0046802594 0.0028179537 0.0051215189 + 1329100 0.004332659 0.002690386 0.0048228666 + 1329200 0.0059384403 0.0022566001 0.0051794262 + 1329300 0.0043365833 0.0026216747 0.0047560869 + 1329400 0.0046650372 0.0029482665 0.0052443395 + 1329500 0.0048772389 0.0028800418 0.0052805578 + 1329600 0.0043845708 0.0024246571 0.004582688 + 1329700 0.0048480676 0.0022184158 0.004604574 + 1329800 0.0040220434 0.0026203236 0.0045999231 + 1329900 0.004612224 0.0031113284 0.0053814074 + 1330000 0.0040008699 0.0036182808 0.0055874589 + 1330100 0.0048128759 0.00357724 0.0059460774 + 1330200 0.0050286226 0.0034518272 0.0059268524 + 1330300 0.0050969535 0.003214085 0.0057227419 + 1330400 0.0052081067 0.002472314 0.005035679 + 1330500 0.0050403966 0.0025140706 0.0049948908 + 1330600 0.0059202588 0.0024999178 0.0054137951 + 1330700 0.0052768372 0.0026380866 0.0052352799 + 1330800 0.0042405966 0.0027779795 0.0048651482 + 1330900 0.0042183728 0.0025061353 0.0045823657 + 1331000 0.0069668654 0.0025596348 0.0059886389 + 1331100 0.0050186891 0.0030582167 0.0055283527 + 1331200 0.0051933095 0.0027794376 0.0053355196 + 1331300 0.0024525769 0.0027633882 0.0039705159 + 1331400 0.0062988134 0.0024991778 0.0055993751 + 1331500 0.0047858589 0.0026848612 0.0050404011 + 1331600 0.003583008 0.0027657057 0.0045292174 + 1331700 0.0055202096 0.0023471102 0.0050640884 + 1331800 0.0047869641 0.0024050969 0.0047611808 + 1331900 0.0061224091 0.0022662797 0.0052796529 + 1332000 0.004080952 0.0025093853 0.0045179789 + 1332100 0.0064321695 0.0025199892 0.0056858226 + 1332200 0.0066533781 0.0024374032 0.0057121127 + 1332300 0.0070659894 0.0028086143 0.0062864059 + 1332400 0.0048572039 0.0030413103 0.0054319653 + 1332500 0.0057615762 0.0028953373 0.005731113 + 1332600 0.005848168 0.0032645174 0.0061429126 + 1332700 0.0077948272 0.0031888658 0.0070253823 + 1332800 0.0053832335 0.0030109877 0.005660548 + 1332900 0.0055334451 0.0027441113 0.0054676038 + 1333000 0.0053023438 0.0024861014 0.0050958488 + 1333100 0.0063668778 0.0025872037 0.0057209013 + 1333200 0.005761579 0.002664498 0.0055002751 + 1333300 0.005098178 0.0024299727 0.0049392322 + 1333400 0.0047837297 0.0025692041 0.004923696 + 1333500 0.0054293702 0.002635253 0.0053075212 + 1333600 0.0052431124 0.002886663 0.0054672573 + 1333700 0.004971126 0.003062686 0.0055094121 + 1333800 0.0056578977 0.0030830375 0.005867784 + 1333900 0.004874567 0.0032025191 0.0056017201 + 1334000 0.0074019002 0.0031199996 0.0067631223 + 1334100 0.005119211 0.0034677585 0.0059873701 + 1334200 0.0065019787 0.0029946611 0.0061948537 + 1334300 0.0063164971 0.0028680064 0.0059769074 + 1334400 0.0056567216 0.0034995943 0.006283762 + 1334500 0.0055558209 0.0031033473 0.0058378529 + 1334600 0.005955766 0.0028373724 0.005768726 + 1334700 0.0054941066 0.0032525937 0.0059567243 + 1334800 0.0063465783 0.0028848012 0.0060085077 + 1334900 0.0068160333 0.0024674747 0.0058222411 + 1335000 0.0046743413 0.0027331228 0.0050337752 + 1335100 0.0054446819 0.0027694255 0.0054492298 + 1335200 0.0065388401 0.0028855109 0.0061038462 + 1335300 0.0062229062 0.0028422946 0.0059051312 + 1335400 0.0046589794 0.0030415409 0.0053346323 + 1335500 0.0045826157 0.0028753787 0.0051308849 + 1335600 0.0056158028 0.0027832706 0.0055472985 + 1335700 0.0056275899 0.0027520447 0.0055218741 + 1335800 0.0039934989 0.0027696629 0.0047352131 + 1335900 0.0045935582 0.0030169607 0.0052778526 + 1336000 0.0053735975 0.0031068954 0.0057517129 + 1336100 0.0046507458 0.0026696558 0.0049586947 + 1336200 0.0055934017 0.0021847634 0.0049377658 + 1336300 0.0044160211 0.0022876398 0.0044611502 + 1336400 0.0045227522 0.0022505909 0.004476633 + 1336500 0.0042743903 0.0023114797 0.0044152812 + 1336600 0.0039584929 0.0027323792 0.0046806999 + 1336700 0.0049379125 0.0026538611 0.0050842399 + 1336800 0.0070226814 0.0023115884 0.0057680644 + 1336900 0.0053829627 0.0023857753 0.0050352022 + 1337000 0.0051233004 0.0023244825 0.0048461069 + 1337100 0.0045419096 0.0027228164 0.0049582875 + 1337200 0.0050482164 0.0025105029 0.0049951719 + 1337300 0.0054062682 0.0023534632 0.0050143608 + 1337400 0.0043148286 0.0024919035 0.0046156082 + 1337500 0.0049355576 0.0025529682 0.004982188 + 1337600 0.0049417284 0.0024895878 0.0049218448 + 1337700 0.0058525678 0.0026839035 0.0055644642 + 1337800 0.0047562888 0.0023337476 0.0046747335 + 1337900 0.0055711514 0.0021882782 0.0049303293 + 1338000 0.0047515481 0.001949356 0.0042880086 + 1338100 0.0057042121 0.0019577912 0.0047653331 + 1338200 0.0070813628 0.0027163337 0.0062016919 + 1338300 0.0049981661 0.0032624701 0.005722505 + 1338400 0.0058164836 0.0028584672 0.0057212677 + 1338500 0.0052727772 0.002423348 0.0050185431 + 1338600 0.0052832276 0.0024682839 0.0050686225 + 1338700 0.0059961311 0.0021858409 0.0051370617 + 1338800 0.0058282672 0.002316441 0.0051850413 + 1338900 0.0029874049 0.0028862474 0.0043566107 + 1339000 0.004404042 0.0032254019 0.0053930163 + 1339100 0.0039289179 0.0034044822 0.0053382465 + 1339200 0.0045306408 0.0029628566 0.0051927813 + 1339300 0.0062304119 0.0025823213 0.0056488522 + 1339400 0.0046329077 0.0025048604 0.0047851196 + 1339500 0.0039054526 0.0026220879 0.0045443028 + 1339600 0.0061159022 0.0025471003 0.0055572709 + 1339700 0.0044239542 0.002795338 0.004972753 + 1339800 0.0048766722 0.0031230237 0.0055232608 + 1339900 0.0049256508 0.0027865074 0.0052108512 + 1340000 0.0059761449 0.002489127 0.0054305108 + 1340100 0.0056269513 0.0027509032 0.0055204183 + 1340200 0.0054215702 0.0026450089 0.005313438 + 1340300 0.005894145 0.0027873977 0.0056884222 + 1340400 0.0053915687 0.0033318122 0.005985475 + 1340500 0.0062069118 0.0028040279 0.0058589923 + 1340600 0.0061530536 0.0019767882 0.0050052443 + 1340700 0.0054545815 0.0020186921 0.004703369 + 1340800 0.004136391 0.0024559656 0.0044918455 + 1340900 0.0057514225 0.0024261645 0.0052569428 + 1341000 0.0053490737 0.0024233247 0.0050560719 + 1341100 0.0038397618 0.0028237193 0.0047136021 + 1341200 0.0045633916 0.002670428 0.0049164723 + 1341300 0.0051628307 0.002601759 0.0051428397 + 1341400 0.00375974 0.0025381772 0.0043886743 + 1341500 0.0051804293 0.0026078263 0.0051575688 + 1341600 0.0051331333 0.0027023633 0.0052288273 + 1341700 0.005696106 0.0029707248 0.005774277 + 1341800 0.0035342395 0.0032974045 0.0050369129 + 1341900 0.0054887737 0.0034433537 0.0061448595 + 1342000 0.0041457579 0.003103768 0.0051442582 + 1342100 0.0045029719 0.0025792256 0.004795532 + 1342200 0.0045767535 0.0021279333 0.0043805542 + 1342300 0.0041832809 0.0021191744 0.0041781329 + 1342400 0.0034613731 0.0023162806 0.0040199252 + 1342500 0.0053882572 0.0020337777 0.0046858106 + 1342600 0.0060399772 0.0021206109 0.0050934122 + 1342700 0.0055244301 0.0027345275 0.0054535829 + 1342800 0.0043500806 0.0030683963 0.0052094517 + 1342900 0.0060100653 0.0027938605 0.0057519396 + 1343000 0.0038348987 0.0025158125 0.0044033017 + 1343100 0.0035888864 0.0022138358 0.0039802408 + 1343200 0.0039377743 0.0021319806 0.0040701039 + 1343300 0.004668219 0.0023037236 0.0046013626 + 1343400 0.0065565725 0.002612731 0.0058397941 + 1343500 0.005670952 0.0027233081 0.0055144798 + 1343600 0.0039884902 0.0029435992 0.0049066843 + 1343700 0.0049345368 0.0028823047 0.005311022 + 1343800 0.0042340774 0.0027238141 0.0048077741 + 1343900 0.004000348 0.0019444421 0.0039133634 + 1344000 0.0061827806 0.0017156357 0.0047587231 + 1344100 0.0033660867 0.0025170079 0.0041737537 + 1344200 0.0045213786 0.0029623151 0.0051876811 + 1344300 0.0051986394 0.0025441422 0.0051028476 + 1344400 0.0058224132 0.0024040155 0.0052697345 + 1344500 0.0054403697 0.0022810479 0.0049587299 + 1344600 0.0051370024 0.0025390414 0.0050674098 + 1344700 0.0053441545 0.0028194962 0.0054498223 + 1344800 0.006331043 0.002566021 0.0056820812 + 1344900 0.0050062225 0.0030821238 0.005546124 + 1345000 0.0057658864 0.0025819266 0.0054198238 + 1345100 0.0064988293 0.0023954182 0.0055940608 + 1345200 0.0048926133 0.0025480421 0.0049561252 + 1345300 0.0051323702 0.0020204305 0.0045465189 + 1345400 0.0046632374 0.0020915321 0.0043867192 + 1345500 0.0037011693 0.0024855435 0.0043072127 + 1345600 0.0053152321 0.0023869493 0.0050030401 + 1345700 0.0050714461 0.0023226272 0.0048187296 + 1345800 0.0066476105 0.0024843739 0.0057562447 + 1345900 0.0058524564 0.002505412 0.0053859179 + 1346000 0.0056178668 0.0028895471 0.0056545909 + 1346100 0.0048389319 0.0031177891 0.0054994509 + 1346200 0.0050898818 0.0029768303 0.0054820066 + 1346300 0.0066552616 0.0026226331 0.0058982696 + 1346400 0.0060954993 0.0022071818 0.0052073104 + 1346500 0.0042512821 0.0018583285 0.0039507564 + 1346600 0.0042249252 0.0021971975 0.0042766529 + 1346700 0.0058473608 0.0026347565 0.0055127544 + 1346800 0.0061943392 0.0025972502 0.0056460265 + 1346900 0.0053542823 0.0030377957 0.0056731066 + 1347000 0.0046639353 0.0028704452 0.0051659759 + 1347100 0.0048116131 0.0027417479 0.0051099637 + 1347200 0.0045613947 0.0028122905 0.005057352 + 1347300 0.0053207659 0.0025843853 0.0052031998 + 1347400 0.0047373972 0.0025627826 0.0048944703 + 1347500 0.0041884067 0.002518535 0.0045800164 + 1347600 0.0055231132 0.0020170945 0.0047355017 + 1347700 0.0047221899 0.0018921731 0.0042163759 + 1347800 0.0057398754 0.0021274267 0.0049525216 + 1347900 0.005752152 0.0024929027 0.00532404 + 1348000 0.0068219139 0.0025922189 0.0059498796 + 1348100 0.0083795388 0.0029122681 0.0070365723 + 1348200 0.0048810687 0.0040961873 0.0064985883 + 1348300 0.0053823714 0.0046358932 0.0072850291 + 1348400 0.0062451687 0.0040713712 0.0071451651 + 1348500 0.0059579364 0.0031556825 0.0060881043 + 1348600 0.0063545049 0.0031562988 0.0062839067 + 1348700 0.0058346601 0.0033549645 0.0062267113 + 1348800 0.0052643485 0.002810193 0.0054012395 + 1348900 0.005774231 0.0028741046 0.0057161089 + 1349000 0.004420646 0.0029234044 0.0050991912 + 1349100 0.0063568267 0.0026685232 0.0057972739 + 1349200 0.0055175554 0.002425348 0.0051410198 + 1349300 0.0049500374 0.002658849 0.0050951955 + 1349400 0.0039990709 0.0028301826 0.0047984752 + 1349500 0.0051733068 0.0025813215 0.0051275584 + 1349600 0.0042339092 0.0025724225 0.0046562997 + 1349700 0.0041661227 0.0022195691 0.0042700826 + 1349800 0.0040917849 0.0025716983 0.0045856237 + 1349900 0.0050001898 0.0026537707 0.0051148016 + 1350000 0.0054131424 0.0028487224 0.0055130034 + 1350100 0.0045293591 0.0030881938 0.0053174877 + 1350200 0.0063977594 0.0032338259 0.0063827231 + 1350300 0.005704342 0.0032112697 0.0060188755 + 1350400 0.0051235924 0.0034883551 0.0060101232 + 1350500 0.0050673982 0.0031372888 0.0056313989 + 1350600 0.0031937391 0.0031502395 0.0047221579 + 1350700 0.0038147398 0.0026880711 0.0045656383 + 1350800 0.0047385223 0.0026705819 0.0050028234 + 1350900 0.0037088899 0.0024680973 0.0042935665 + 1351000 0.0053328653 0.0022462469 0.0048710166 + 1351100 0.0044825365 0.0024547092 0.0046609577 + 1351200 0.0044895117 0.0027949448 0.0050046263 + 1351300 0.0042007214 0.0033785019 0.0054460445 + 1351400 0.0057590295 0.0027892332 0.0056237555 + 1351500 0.0043231561 0.002806925 0.0049347284 + 1351600 0.0053914181 0.0031406067 0.0057941953 + 1351700 0.0058261713 0.0029828067 0.0058503754 + 1351800 0.0051353127 0.0027695262 0.0052970629 + 1351900 0.0063013902 0.0025447926 0.005646258 + 1352000 0.0035657673 0.0027476266 0.0045026527 + 1352100 0.0035215925 0.0029204238 0.0046537076 + 1352200 0.004743712 0.0031386566 0.0054734524 + 1352300 0.0055642846 0.0030615851 0.0058002565 + 1352400 0.0053381735 0.0025120673 0.0051394495 + 1352500 0.004393156 0.0024065305 0.004568787 + 1352600 0.0050890775 0.0023284044 0.0048331848 + 1352700 0.0040957902 0.0024553396 0.0044712364 + 1352800 0.0057680101 0.0022204371 0.0050593795 + 1352900 0.0046663988 0.0019982752 0.0042950184 + 1353000 0.0046293002 0.002175734 0.0044542177 + 1353100 0.0059849221 0.002179217 0.0051249209 + 1353200 0.0055145922 0.0023906938 0.0051049071 + 1353300 0.0054971537 0.0025442868 0.0052499171 + 1353400 0.0053852154 0.0021577309 0.0048082666 + 1353500 0.0036220603 0.0019666826 0.0037494154 + 1353600 0.0044141986 0.0016990156 0.0038716289 + 1353700 0.0036764629 0.001917073 0.0037265821 + 1353800 0.0037976918 0.0025510147 0.0044201911 + 1353900 0.0046298802 0.0032191703 0.0054979395 + 1354000 0.0035565015 0.003099647 0.0048501126 + 1354100 0.0057990349 0.0034009611 0.0062551736 + 1354200 0.0053998576 0.0031106737 0.0057684161 + 1354300 0.0041283913 0.0026826122 0.0047145548 + 1354400 0.0052430157 0.002880469 0.0054610158 + 1354500 0.0058929979 0.0024160364 0.0053164963 + 1354600 0.0049905595 0.0019712689 0.0044275598 + 1354700 0.004165768 0.0020696871 0.004120026 + 1354800 0.0038741668 0.0021220929 0.0040289094 + 1354900 0.0056178364 0.0017811669 0.0045461958 + 1355000 0.0052025288 0.0018062435 0.0043668631 + 1355100 0.0038545177 0.0019901138 0.0038872592 + 1355200 0.0052366781 0.0020403972 0.0046178247 + 1355300 0.0042183824 0.0021292702 0.0042055052 + 1355400 0.004180246 0.0025937939 0.0046512588 + 1355500 0.0066519136 0.0026632413 0.0059372301 + 1355600 0.0048869836 0.0028230599 0.0052283721 + 1355700 0.0060524446 0.0025272872 0.0055062248 + 1355800 0.0045513576 0.0024033583 0.0046434797 + 1355900 0.0053478189 0.0019197455 0.0045518752 + 1356000 0.004557239 0.0017468709 0.0039898869 + 1356100 0.0050349823 0.0023400029 0.0048181582 + 1356200 0.0046604947 0.0025238473 0.0048176846 + 1356300 0.0050100702 0.0029303291 0.005396223 + 1356400 0.0045873085 0.0030952604 0.0053530763 + 1356500 0.0045513393 0.0028427599 0.0050828722 + 1356600 0.0061163571 0.0032329556 0.0062433501 + 1356700 0.0055335493 0.0035730287 0.0062965724 + 1356800 0.0043073651 0.003476292 0.0055963233 + 1356900 0.0048378978 0.0029816134 0.0053627663 + 1357000 0.0049709676 0.002881153 0.0053278011 + 1357100 0.0044276818 0.0027689514 0.0049482011 + 1357200 0.0047906442 0.0027100694 0.0050679645 + 1357300 0.0069657313 0.0029473796 0.0063758255 + 1357400 0.0049083739 0.0028466584 0.0052624987 + 1357500 0.005152214 0.0025437583 0.0050796137 + 1357600 0.0061636739 0.002106929 0.0051406122 + 1357700 0.0062841194 0.0019630221 0.0050559871 + 1357800 0.0060495904 0.0024307922 0.005408325 + 1357900 0.0053840315 0.0025268774 0.0051768304 + 1358000 0.0051008456 0.0025627029 0.0050732754 + 1358100 0.0053259104 0.0023076687 0.0049290152 + 1358200 0.0038553381 0.0023449971 0.0042425463 + 1358300 0.0039262718 0.0024311235 0.0043635854 + 1358400 0.0041550075 0.0023980522 0.004443095 + 1358500 0.0047350435 0.0024682622 0.0047987914 + 1358600 0.0059834694 0.0025013913 0.0054463801 + 1358700 0.004695077 0.0025361267 0.004846985 + 1358800 0.0042129308 0.0029690915 0.0050426434 + 1358900 0.0048031547 0.002871493 0.0052355457 + 1359000 0.0033873033 0.0028216681 0.0044888564 + 1359100 0.0049557298 0.0027743121 0.0052134604 + 1359200 0.0040457218 0.0025866239 0.0045778776 + 1359300 0.0061261971 0.0023004068 0.0053156444 + 1359400 0.0043988042 0.0022874234 0.0044524599 + 1359500 0.0044555174 0.0025195553 0.0047125052 + 1359600 0.0049041101 0.0026248059 0.0050385475 + 1359700 0.0064842588 0.0029961584 0.0061876295 + 1359800 0.0060965875 0.0027798554 0.0057805196 + 1359900 0.0053625104 0.003040614 0.0056799746 + 1360000 0.0050619963 0.003034625 0.0055260762 + 1360100 0.0058023269 0.0030329482 0.005888781 + 1360200 0.003696191 0.0030324996 0.0048517187 + 1360300 0.0049752114 0.0027416869 0.0051904238 + 1360400 0.0053789317 0.0027305349 0.0053779779 + 1360500 0.0060567346 0.0025929524 0.0055740014 + 1360600 0.0043276991 0.002753423 0.0048834624 + 1360700 0.0045345568 0.0029400305 0.0051718827 + 1360800 0.0057620559 0.0031682868 0.0060042987 + 1360900 0.0062118999 0.0031630454 0.0062204649 + 1361000 0.0040737247 0.0029177574 0.0049227937 + 1361100 0.004898169 0.0023099236 0.0047207411 + 1361200 0.0047239783 0.0019696625 0.0042947456 + 1361300 0.0055444415 0.0026181623 0.0053470672 + 1361400 0.0057768347 0.0031273078 0.0059705936 + 1361500 0.0056246858 0.0030175801 0.0057859801 + 1361600 0.0054832175 0.0025644445 0.0052632156 + 1361700 0.0045092762 0.0023422844 0.0045616938 + 1361800 0.0057958805 0.0026253089 0.0054779689 + 1361900 0.0051521058 0.0025820178 0.0051178199 + 1362000 0.0052714565 0.0022529551 0.0048475001 + 1362100 0.0053744526 0.0021606231 0.0048058615 + 1362200 0.0050943895 0.0027224202 0.005229815 + 1362300 0.005129667 0.0028813758 0.0054061338 + 1362400 0.0065682903 0.0027390738 0.0059719042 + 1362500 0.0040834095 0.0027843057 0.0047941088 + 1362600 0.0038607084 0.0029373315 0.0048375239 + 1362700 0.0064146085 0.0027995264 0.0059567165 + 1362800 0.0055083063 0.002448642 0.0051597615 + 1362900 0.0052582696 0.0026932171 0.0052812716 + 1363000 0.0040146858 0.0027994011 0.0047753793 + 1363100 0.005286096 0.0026742253 0.0052759756 + 1363200 0.0065439099 0.0027621627 0.0059829934 + 1363300 0.0040288303 0.0029803535 0.0049632935 + 1363400 0.0042991595 0.0029811075 0.0050971 + 1363500 0.0064669341 0.0030804851 0.0062634292 + 1363600 0.0057298815 0.0029560679 0.0057762439 + 1363700 0.0048624559 0.0027258453 0.0051190853 + 1363800 0.0052990908 0.0026194879 0.0052276342 + 1363900 0.0052517523 0.0028322565 0.0054171033 + 1364000 0.0045484087 0.0027996862 0.0050383561 + 1364100 0.0054457328 0.0026258715 0.0053061931 + 1364200 0.0051123507 0.0026322935 0.0051485286 + 1364300 0.0046648846 0.0026237186 0.0049197164 + 1364400 0.0058104629 0.0026039228 0.00546376 + 1364500 0.0059955441 0.0024697735 0.0054207054 + 1364600 0.0052423923 0.0023452554 0.0049254953 + 1364700 0.0028777898 0.0023019521 0.0037183642 + 1364800 0.0047190664 0.0020983044 0.0044209699 + 1364900 0.0041417549 0.0019951793 0.0040336993 + 1365000 0.0038840809 0.0019753817 0.0038870778 + 1365100 0.0046362878 0.0021385113 0.0044204342 + 1365200 0.0044473046 0.002218225 0.0044071327 + 1365300 0.0047760122 0.0020277145 0.004378408 + 1365400 0.0038751293 0.0019180144 0.0038253046 + 1365500 0.0030182792 0.0024606562 0.0039462155 + 1365600 0.0045801162 0.0025744452 0.0048287212 + 1365700 0.0049348266 0.002722342 0.0051512019 + 1365800 0.0052500908 0.0029497731 0.0055338021 + 1365900 0.005628001 0.0033939982 0.00616403 + 1366000 0.0058552844 0.0028647186 0.0057466164 + 1366100 0.0050922486 0.0023292003 0.0048355414 + 1366200 0.0038128496 0.002838269 0.0047149059 + 1366300 0.0056511026 0.0024073443 0.0051887464 + 1366400 0.0044643101 0.0018981073 0.0040953849 + 1366500 0.0043642642 0.0019122919 0.0040603282 + 1366600 0.0049175422 0.0022090527 0.0046294055 + 1366700 0.0049181182 0.0022878477 0.004708484 + 1366800 0.0047225704 0.0022536962 0.0045780864 + 1366900 0.0055673716 0.0022332546 0.0049734453 + 1367000 0.0047372025 0.0023159375 0.0046475294 + 1367100 0.0044549492 0.002507884 0.0047005543 + 1367200 0.0046125527 0.0026352366 0.0049054774 + 1367300 0.0059056662 0.0029588109 0.005865506 + 1367400 0.0036898599 0.0033762508 0.0051923538 + 1367500 0.0051924259 0.003281422 0.0058370691 + 1367600 0.0048277152 0.0030134658 0.0053896069 + 1367700 0.0056987817 0.0027439794 0.0055488485 + 1367800 0.0068007517 0.0022292695 0.0055765145 + 1367900 0.0062602587 0.0024244227 0.0055056438 + 1368000 0.0042965735 0.0024118666 0.0045265864 + 1368100 0.007163635 0.0022974128 0.0058232644 + 1368200 0.0041243356 0.002317056 0.0043470024 + 1368300 0.0040616496 0.0020481947 0.0040472879 + 1368400 0.0044356757 0.0018808685 0.0040640526 + 1368500 0.0048424122 0.0022729942 0.004656369 + 1368600 0.0063666234 0.0027221516 0.005855724 + 1368700 0.0061936444 0.0031170673 0.0061655016 + 1368800 0.0057413308 0.0031220135 0.0059478248 + 1368900 0.0061943491 0.0026180729 0.0056668541 + 1369000 0.0054605656 0.0025116192 0.0051992413 + 1369100 0.0057931873 0.0027319249 0.0055832593 + 1369200 0.0058583168 0.0025611777 0.005444568 + 1369300 0.0049931901 0.0028624168 0.0053200026 + 1369400 0.0047905134 0.0023932451 0.0047510759 + 1369500 0.0047621174 0.0022404084 0.0045842631 + 1369600 0.0051007437 0.002162883 0.0046734053 + 1369700 0.0069386777 0.0023977616 0.005812892 + 1369800 0.0060487602 0.0024345094 0.0054116336 + 1369900 0.0039167444 0.0025226641 0.0044504367 + 1370000 0.0038729007 0.002370141 0.0042763343 + 1370100 0.0053192727 0.0017940268 0.0044121063 + 1370200 0.0057541857 0.0018744267 0.004706565 + 1370300 0.0056354853 0.0017279136 0.004501629 + 1370400 0.003800429 0.0016740925 0.0035446162 + 1370500 0.0045516375 0.0019493658 0.0041896249 + 1370600 0.0065824035 0.0022880522 0.0055278289 + 1370700 0.0060313253 0.0024799712 0.0054485141 + 1370800 0.0043449917 0.0022565582 0.0043951088 + 1370900 0.0042254457 0.0023248681 0.0044045797 + 1371000 0.0052234106 0.0018587271 0.0044296245 + 1371100 0.0040784163 0.0020248754 0.0040322209 + 1371200 0.0044518558 0.002190417 0.0043815648 + 1371300 0.0043524588 0.0018311919 0.0039734177 + 1371400 0.0044860688 0.0018516032 0.0040595902 + 1371500 0.0055439678 0.0018929048 0.0046215765 + 1371600 0.003614236 0.0021316879 0.0039105697 + 1371700 0.0043507166 0.0021971199 0.0043384883 + 1371800 0.0047589992 0.002130924 0.0044732439 + 1371900 0.0040454359 0.0021726409 0.0041637539 + 1372000 0.0054534391 0.0025574785 0.0052415931 + 1372100 0.0038443903 0.0028759261 0.0047680869 + 1372200 0.0054292939 0.0024869336 0.0051591642 + 1372300 0.0050343848 0.0026580564 0.0051359176 + 1372400 0.0051791762 0.0025738307 0.0051229564 + 1372500 0.0070137628 0.0024828964 0.0059349828 + 1372600 0.0053737174 0.0027914426 0.0054363192 + 1372700 0.0061418582 0.0028274246 0.0058503704 + 1372800 0.0049933596 0.0028085322 0.0052662014 + 1372900 0.0055073858 0.0025643645 0.0052750309 + 1373000 0.0031399216 0.0025605965 0.0041060267 + 1373100 0.0053696297 0.0022826202 0.0049254848 + 1373200 0.0042836056 0.001899089 0.0040074261 + 1373300 0.0053088413 0.0018068009 0.0044197462 + 1373400 0.006366352 0.0021681425 0.0053015813 + 1373500 0.004149365 0.0024970963 0.0045393619 + 1373600 0.0047346616 0.0028586544 0.0051889957 + 1373700 0.0051310954 0.0028899424 0.0054154034 + 1373800 0.0045912741 0.0030690699 0.0053288376 + 1373900 0.0044068156 0.0026719358 0.0048409154 + 1374000 0.0048215427 0.0023940511 0.0047671542 + 1374100 0.0045966351 0.0021940172 0.0044564236 + 1374200 0.0059940736 0.0020064602 0.0049566683 + 1374300 0.0045386724 0.0019759873 0.0042098651 + 1374400 0.0035986453 0.0022542325 0.0040254407 + 1374500 0.0053501998 0.0020901911 0.0047234925 + 1374600 0.004383039 0.0018702351 0.0040275121 + 1374700 0.0052133299 0.0019365131 0.0045024489 + 1374800 0.0038391924 0.0018064856 0.0036960881 + 1374900 0.0055749504 0.0015264967 0.0042704177 + 1375000 0.0044348064 0.0016820948 0.0038648511 + 1375100 0.0045874859 0.0023163881 0.0045742913 + 1375200 0.0059544068 0.0026673506 0.0055980351 + 1375300 0.0043405881 0.002136047 0.0042724302 + 1375400 0.0056547791 0.0019286425 0.0047118541 + 1375500 0.0062999509 0.0023856755 0.0054864326 + 1375600 0.0041372807 0.0031175279 0.0051538458 + 1375700 0.0059471849 0.0031470563 0.0060741864 + 1375800 0.0046460535 0.0027311732 0.0050179026 + 1375900 0.0058734955 0.0023445841 0.0052354451 + 1376000 0.0040143136 0.0022409659 0.0042167609 + 1376100 0.0038330997 0.001810078 0.0036966817 + 1376200 0.005158667 0.0015656032 0.0041046346 + 1376300 0.0051722368 0.0016484827 0.004194193 + 1376400 0.0053341559 0.0023585174 0.0049839222 + 1376500 0.0056551011 0.002842205 0.005625575 + 1376600 0.0055705331 0.0022497659 0.0049915126 + 1376700 0.0056150279 0.0021518314 0.0049154779 + 1376800 0.0054990255 0.0025006416 0.0052071932 + 1376900 0.0063239344 0.0021155572 0.0052281187 + 1377000 0.0062068435 0.0017971424 0.0048520731 + 1377100 0.0060872817 0.0017772077 0.0047732917 + 1377200 0.0043746224 0.0019666261 0.0041197605 + 1377300 0.0065153105 0.0020580973 0.0052648517 + 1377400 0.0039601518 0.0022636583 0.0042127955 + 1377500 0.0052403506 0.0022936697 0.0048729048 + 1377600 0.0040221809 0.0018493746 0.0038290418 + 1377700 0.0036692953 0.0019617656 0.0037677469 + 1377800 0.0042948711 0.0019992972 0.0041131791 + 1377900 0.0051292036 0.0019853086 0.0045098386 + 1378000 0.0050971182 0.0019888203 0.0044975582 + 1378100 0.0065652257 0.0021672742 0.0053985962 + 1378200 0.0045625499 0.0023629256 0.0046085556 + 1378300 0.0037537296 0.0027886984 0.0046362372 + 1378400 0.0049313868 0.0023658676 0.0047930345 + 1378500 0.0059478288 0.0017465649 0.0046740118 + 1378600 0.0053931324 0.0018138946 0.004468327 + 1378700 0.0047655496 0.0022991672 0.0046447112 + 1378800 0.0046260617 0.0022948113 0.0045717011 + 1378900 0.0042389219 0.0021674104 0.0042537548 + 1379000 0.0058343978 0.0018492159 0.0047208336 + 1379100 0.006037064 0.0021295359 0.0051009033 + 1379200 0.004369737 0.0023025729 0.0044533028 + 1379300 0.0043906344 0.0023310684 0.0044920838 + 1379400 0.0053031623 0.0022665625 0.0048767126 + 1379500 0.0050968046 0.002039778 0.0045483615 + 1379600 0.0051655037 0.001769963 0.0043123593 + 1379700 0.0045680486 0.0020398661 0.0042882026 + 1379800 0.0053251259 0.002548004 0.0051689644 + 1379900 0.0039914897 0.0029753316 0.0049398929 + 1380000 0.0068302734 0.0026164112 0.0059781864 + 1380100 0.0058461031 0.0019113699 0.0047887488 + 1380200 0.0044729773 0.0018107683 0.0040123119 + 1380300 0.0037996462 0.0020865075 0.0039566458 + 1380400 0.0046974657 0.0017854574 0.0040974913 + 1380500 0.0053720492 0.0016731841 0.0043172395 + 1380600 0.0049007983 0.0019549043 0.0043670159 + 1380700 0.0041308746 0.0026008657 0.0046340306 + 1380800 0.0039614759 0.0026606084 0.0046103973 + 1380900 0.0045090463 0.0024009266 0.0046202228 + 1381000 0.0044332464 0.002535392 0.0047173805 + 1381100 0.0066688067 0.0025541275 0.0058364308 + 1381200 0.0051810003 0.0022331116 0.0047831352 + 1381300 0.0056878593 0.001766959 0.0045664523 + 1381400 0.0061304644 0.0023325835 0.0053499214 + 1381500 0.0050862029 0.0027365281 0.0052398936 + 1381600 0.0059487768 0.002918324 0.0058462375 + 1381700 0.0051588754 0.0031120618 0.0056511958 + 1381800 0.0046933581 0.0030393441 0.0053493563 + 1381900 0.0055665673 0.0023141276 0.0050539225 + 1382000 0.0057742366 0.0021538198 0.0049958269 + 1382100 0.0045981742 0.0024766822 0.0047398461 + 1382200 0.0050144838 0.0025356785 0.0050037448 + 1382300 0.0055861746 0.0024138735 0.0051633188 + 1382400 0.0047557925 0.0023093299 0.0046500715 + 1382500 0.004165315 0.0022498939 0.0043000099 + 1382600 0.0057862535 0.0023550857 0.0052030073 + 1382700 0.0050715586 0.0027273361 0.0052234939 + 1382800 0.0050863168 0.0027905311 0.0052939526 + 1382900 0.0052541225 0.0022418258 0.0048278392 + 1383000 0.0051983992 0.0019532777 0.0045118648 + 1383100 0.0052128965 0.0022287686 0.0047944911 + 1383200 0.0048129927 0.0020434792 0.0044123741 + 1383300 0.0042750892 0.0019259714 0.0040301169 + 1383400 0.0047725658 0.0018718843 0.0042208815 + 1383500 0.0044365541 0.0024159287 0.0045995452 + 1383600 0.0065452381 0.0021617314 0.0053832158 + 1383700 0.0046890138 0.0020357538 0.0043436278 + 1383800 0.0059372147 0.0022115346 0.0051337575 + 1383900 0.0042799376 0.0026317117 0.0047382435 + 1384000 0.0047433049 0.0030449367 0.0053795321 + 1384100 0.0045726186 0.0029123528 0.0051629386 + 1384200 0.0043538092 0.0028515181 0.0049944086 + 1384300 0.0037063925 0.002773788 0.0045980281 + 1384400 0.0054754784 0.0023142296 0.0050091917 + 1384500 0.0048212506 0.0021444985 0.0045174577 + 1384600 0.004213464 0.0021430882 0.0042169025 + 1384700 0.0055079336 0.0021088724 0.0048198085 + 1384800 0.0055643478 0.0024450226 0.0051837251 + 1384900 0.0052603457 0.0027210632 0.0053101396 + 1385000 0.0056046595 0.0029384698 0.0056970132 + 1385100 0.0037290683 0.0034060227 0.0052414235 + 1385200 0.0056827638 0.0033212083 0.0061181936 + 1385300 0.0034239526 0.0033340949 0.0050193215 + 1385400 0.0051651045 0.0033978604 0.0059400603 + 1385500 0.0052741768 0.0037671616 0.0063630455 + 1385600 0.0044207684 0.0040932284 0.0062690753 + 1385700 0.003161075 0.0037969714 0.005352813 + 1385800 0.0055035291 0.0034972972 0.0062060654 + 1385900 0.0045428047 0.0035657394 0.0058016511 + 1386000 0.0051662162 0.0032761289 0.0058188759 + 1386100 0.0050400464 0.0031221506 0.0056027984 + 1386200 0.0051308798 0.0030211372 0.0055464921 + 1386300 0.0042787504 0.0029191726 0.0050251201 + 1386400 0.0060561661 0.0028948633 0.0058756326 + 1386500 0.003900502 0.0030752942 0.0049950726 + 1386600 0.0052022212 0.0031926639 0.0057531321 + 1386700 0.0060665647 0.0025783842 0.0055642715 + 1386800 0.0047104443 0.002765282 0.0050837038 + 1386900 0.0050177596 0.0032404021 0.0057100806 + 1387000 0.0057929351 0.0037306016 0.0065818118 + 1387100 0.0054340467 0.0034448063 0.0061193761 + 1387200 0.0041787974 0.0031076441 0.005164396 + 1387300 0.0051244923 0.0027499919 0.005272203 + 1387400 0.0055417516 0.0030177641 0.005745345 + 1387500 0.0069061858 0.0028751327 0.006274271 + 1387600 0.0041663703 0.0028570489 0.0049076843 + 1387700 0.0040941419 0.0030541457 0.0050692311 + 1387800 0.0047967831 0.0027582611 0.0051191778 + 1387900 0.0057213338 0.0023188206 0.0051347896 + 1388000 0.0039796373 0.0025644687 0.0045231964 + 1388100 0.004507588 0.002534434 0.0047530125 + 1388200 0.0040108036 0.0024801553 0.0044542226 + 1388300 0.0043549763 0.0022462107 0.0043896757 + 1388400 0.0041799667 0.0022749915 0.0043323189 + 1388500 0.0035316793 0.0022836438 0.0040218922 + 1388600 0.0051205182 0.0022241099 0.004744365 + 1388700 0.004318714 0.0024692353 0.0045948523 + 1388800 0.0063295482 0.0021300197 0.0052453442 + 1388900 0.0056035408 0.0021748889 0.0049328816 + 1389000 0.0046106968 0.0025342245 0.0048035519 + 1389100 0.004956265 0.0027527431 0.0051921548 + 1389200 0.0071166376 0.0031964471 0.0066991672 + 1389300 0.0054953662 0.0028337412 0.0055384918 + 1389400 0.005634873 0.0025736385 0.0053470525 + 1389500 0.0043739583 0.0026647175 0.0048175251 + 1389600 0.0040975442 0.0026446031 0.0046613632 + 1389700 0.0051852153 0.0022784582 0.0048305563 + 1389800 0.0046336486 0.0023686258 0.0046492497 + 1389900 0.0056105386 0.0025340889 0.0052955259 + 1390000 0.0061933994 0.0029386129 0.0059869266 + 1390100 0.0058756637 0.002694354 0.0055862823 + 1390200 0.0038746306 0.0028791439 0.0047861886 + 1390300 0.0059390549 0.002576335 0.0054994636 + 1390400 0.004942478 0.0022800283 0.0047126542 + 1390500 0.0052076673 0.0020109226 0.0045740713 + 1390600 0.0051940603 0.0025003453 0.0050567968 + 1390700 0.0061764848 0.0025602772 0.0056002658 + 1390800 0.0044063917 0.0024840417 0.0046528126 + 1390900 0.0058734007 0.0025905334 0.0054813478 + 1391000 0.005885083 0.0029492858 0.0058458501 + 1391100 0.0042465599 0.0029742313 0.005064335 + 1391200 0.0039813232 0.0027768148 0.0047363723 + 1391300 0.005915054 0.0021620684 0.0050733841 + 1391400 0.0049572409 0.0020682822 0.0045081742 + 1391500 0.0048787258 0.0023958543 0.0047971022 + 1391600 0.0059248058 0.0022753669 0.0051914823 + 1391700 0.0057075565 0.002033661 0.0048428489 + 1391800 0.0057446102 0.001919913 0.0047473384 + 1391900 0.0043183561 0.0019562949 0.0040817358 + 1392000 0.005077834 0.0017588239 0.0042580704 + 1392100 0.0046226707 0.001928926 0.0042041467 + 1392200 0.0050310489 0.0020543798 0.0045305991 + 1392300 0.0039447689 0.0021073865 0.0040489525 + 1392400 0.0059236913 0.0018140833 0.0047296501 + 1392500 0.0035820782 0.0020026072 0.0037656613 + 1392600 0.0049862416 0.0021834705 0.0046376363 + 1392700 0.0060355545 0.0024163221 0.0053869466 + 1392800 0.0043908724 0.0024171167 0.0045782492 + 1392900 0.0046737978 0.0021609852 0.0044613701 + 1393000 0.0059784835 0.0022228128 0.0051653477 + 1393100 0.0042526357 0.0027987798 0.0048918739 + 1393200 0.0038815926 0.002785934 0.0046964054 + 1393300 0.004615664 0.0022819304 0.0045537026 + 1393400 0.0045571403 0.0019967482 0.0042397157 + 1393500 0.0063180743 0.0021827396 0.0052924168 + 1393600 0.0058742453 0.0023099044 0.0052011345 + 1393700 0.0052514746 0.0018288219 0.0044135321 + 1393800 0.0055617161 0.0021978611 0.0049352682 + 1393900 0.0037492278 0.0030511112 0.0048964342 + 1394000 0.0077734508 0.0027966506 0.0066226459 + 1394100 0.0047694327 0.0026547916 0.0050022468 + 1394200 0.0056746229 0.0029227296 0.0057157081 + 1394300 0.0047207947 0.0031258418 0.0054493579 + 1394400 0.0048800076 0.0025860354 0.0049879141 + 1394500 0.0036520983 0.0020792133 0.0038767305 + 1394600 0.0053972253 0.0023399525 0.0049963993 + 1394700 0.0046818873 0.0026034959 0.0049078624 + 1394800 0.0062875663 0.0021892089 0.0052838704 + 1394900 0.0068432063 0.002090831 0.0054589716 + 1395000 0.0052709852 0.00214633 0.004740643 + 1395100 0.0050034588 0.0026378239 0.0051004638 + 1395200 0.0045105783 0.0027533463 0.0049733966 + 1395300 0.0038974004 0.0026235108 0.0045417625 + 1395400 0.0053123647 0.0021072402 0.0047219197 + 1395500 0.0055318495 0.0021395114 0.0048622186 + 1395600 0.0039845056 0.0026368631 0.0045979869 + 1395700 0.005637762 0.0024672988 0.0052421348 + 1395800 0.004946343 0.0024963864 0.0049309146 + 1395900 0.0050453721 0.002351409 0.0048346781 + 1396000 0.0066911459 0.0024335471 0.0057268455 + 1396100 0.0050961149 0.0028245018 0.0053327458 + 1396200 0.0040979303 0.0033703313 0.0053872813 + 1396300 0.0045668914 0.0029284202 0.005176187 + 1396400 0.0042710749 0.002749262 0.0048514316 + 1396500 0.0050237705 0.0023958113 0.0048684484 + 1396600 0.0039319219 0.0023969557 0.0043321985 + 1396700 0.0051046356 0.0027841703 0.0052966082 + 1396800 0.0049577387 0.0032592848 0.0056994218 + 1396900 0.0036835562 0.0040791933 0.0058921936 + 1397000 0.0051346636 0.0043093782 0.0068365954 + 1397100 0.0061205659 0.0036112633 0.0066237293 + 1397200 0.0073724451 0.0030689685 0.0066975938 + 1397300 0.0056915508 0.0031925681 0.0059938783 + 1397400 0.0044597626 0.0033107467 0.0055057861 + 1397500 0.0052232263 0.0031783061 0.0057491128 + 1397600 0.0055069116 0.0031915664 0.0059019994 + 1397700 0.0047946137 0.0031384855 0.0054983344 + 1397800 0.0050492382 0.0028371911 0.005322363 + 1397900 0.0055108315 0.0029296977 0.0056420601 + 1398000 0.0049871725 0.0031698549 0.0056244789 + 1398100 0.0049865574 0.0025712703 0.0050255915 + 1398200 0.0051450086 0.0024549887 0.0049872976 + 1398300 0.0046567594 0.0028208497 0.0051128485 + 1398400 0.0043547647 0.0029130517 0.0050564124 + 1398500 0.0042468151 0.0028274579 0.0049176872 + 1398600 0.0062077245 0.002854384 0.0059097484 + 1398700 0.0053026592 0.0029924627 0.0056023652 + 1398800 0.0066192763 0.0027960081 0.0060539332 + 1398900 0.0044345046 0.0022929912 0.004475599 + 1399000 0.0027834356 0.0018549152 0.0032248874 + 1399100 0.0042505018 0.0016897773 0.0037818212 + 1399200 0.0046226614 0.0014700539 0.00374527 + 1399300 0.0040252031 0.0012616025 0.0032427572 + 1399400 0.00446809 0.0012739443 0.0034730823 + 1399500 0.0051336608 0.0016412946 0.0041680183 + 1399600 0.0045035037 0.0023073874 0.0045239556 + 1399700 0.0055356005 0.002593531 0.0053180843 + 1399800 0.0040350096 0.0027663879 0.0047523692 + 1399900 0.0040076302 0.0026792658 0.0046517713 + 1400000 0.0052022387 0.002459721 0.0050201978 + 1400100 0.0049277232 0.0022774445 0.0047028083 + 1400200 0.005661902 0.0023518388 0.0051385562 + 1400300 0.0045115379 0.002416928 0.0046374506 + 1400400 0.0058415797 0.0026978563 0.0055730088 + 1400500 0.0039689188 0.0025618809 0.0045153331 + 1400600 0.0054037681 0.0023149535 0.0049746206 + 1400700 0.004048414 0.0025851478 0.0045777265 + 1400800 0.0044646227 0.0028522382 0.0050496697 + 1400900 0.0034767282 0.0026515887 0.0043627908 + 1401000 0.0038632458 0.0024297123 0.0043311536 + 1401100 0.00428947 0.0020715954 0.0041828189 + 1401200 0.0068178359 0.0021096746 0.0054653282 + 1401300 0.0066827696 0.0023471469 0.0056363225 + 1401400 0.0040292662 0.0023020103 0.0042851648 + 1401500 0.0052559225 0.0025968744 0.0051837738 + 1401600 0.0058132315 0.0028410918 0.0057022917 + 1401700 0.0056488007 0.0027856403 0.0055659094 + 1401800 0.0049905019 0.0026351644 0.0050914271 + 1401900 0.0057065479 0.0025849613 0.0053936529 + 1402000 0.0048340308 0.0027165135 0.005095763 + 1402100 0.0058744025 0.0028052648 0.0056965723 + 1402200 0.0052282217 0.0030224465 0.0055957119 + 1402300 0.0042472436 0.0034294009 0.0055198411 + 1402400 0.0053783136 0.0027266615 0.0053738002 + 1402500 0.0038391276 0.0022903266 0.0041798972 + 1402600 0.0056811966 0.0022576709 0.0050538849 + 1402700 0.0066492224 0.0025680634 0.0058407275 + 1402800 0.0051030582 0.0027544837 0.0052661451 + 1402900 0.0055956182 0.0032650075 0.0060191008 + 1403000 0.0044808396 0.0027997561 0.0050051694 + 1403100 0.005387691 0.0022744771 0.0049262312 + 1403200 0.0062176102 0.0024053235 0.0054655536 + 1403300 0.0048368591 0.0025310272 0.0049116688 + 1403400 0.0050211382 0.0024985627 0.0049699042 + 1403500 0.004799781 0.0029527907 0.0053151829 + 1403600 0.0053757796 0.0033550169 0.0060009084 + 1403700 0.006471317 0.0030011584 0.0061862598 + 1403800 0.0045375008 0.0024351445 0.0046684457 + 1403900 0.0040357551 0.0020397088 0.004026057 + 1404000 0.0062828409 0.0022757992 0.005368135 + 1404100 0.0045977907 0.0025021536 0.0047651287 + 1404200 0.0044443364 0.002597848 0.0047852948 + 1404300 0.0039310697 0.00219177 0.0041265934 + 1404400 0.0054710256 0.0021415725 0.0048343429 + 1404500 0.0037348212 0.0021665101 0.0040047424 + 1404600 0.005659335 0.001984024 0.004769478 + 1404700 0.0051169847 0.0021015387 0.0046200546 + 1404800 0.0054941892 0.0026958665 0.0054000378 + 1404900 0.0046659855 0.0027185346 0.0050150744 + 1405000 0.004428502 0.0027605933 0.0049402466 + 1405100 0.005131078 0.0024257692 0.0049512216 + 1405200 0.0042561553 0.0027394126 0.004834239 + 1405300 0.0058301806 0.0030478259 0.005917368 + 1405400 0.004701722 0.0034137685 0.0057278973 + 1405500 0.0058049605 0.0032024894 0.0060596184 + 1405600 0.005269833 0.003312417 0.0059061629 + 1405700 0.0065680873 0.0031577129 0.0063904433 + 1405800 0.0060360132 0.003255636 0.0062264863 + 1405900 0.0055652998 0.0032573489 0.0059965199 + 1406000 0.0063034246 0.0030490882 0.006151555 + 1406100 0.0053265039 0.0032679185 0.0058895572 + 1406200 0.0050000025 0.0033954131 0.0058563518 + 1406300 0.0057479062 0.0029879867 0.0058170343 + 1406400 0.0051084285 0.0031934027 0.0057077074 + 1406500 0.0041384349 0.0029958039 0.0050326898 + 1406600 0.0059564771 0.0029464259 0.0058781295 + 1406700 0.003891909 0.0032436548 0.0051592038 + 1406800 0.0040422962 0.0036741037 0.0056636714 + 1406900 0.0047962749 0.0034921062 0.0058527727 + 1407000 0.0053640237 0.0035308836 0.0061709891 + 1407100 0.0047633923 0.0032930471 0.0056375293 + 1407200 0.0066421882 0.0028424081 0.0061116101 + 1407300 0.0053146269 0.0030410217 0.0056568147 + 1407400 0.0044521907 0.0033133442 0.0055046568 + 1407500 0.0041297732 0.0029767839 0.0050094067 + 1407600 0.0052566392 0.0026683251 0.0052555772 + 1407700 0.0051771841 0.0031616861 0.0057098315 + 1407800 0.0043931478 0.0031436271 0.0053058795 + 1407900 0.0051619892 0.0026386612 0.0051793278 + 1408000 0.0049866527 0.0022685205 0.0047228886 + 1408100 0.006000193 0.0023376454 0.0052908653 + 1408200 0.0062344207 0.0031313758 0.0061998797 + 1408300 0.0042066694 0.0036212391 0.0056917092 + 1408400 0.0051616319 0.003714541 0.0062550317 + 1408500 0.005354826 0.0033346759 0.0059702543 + 1408600 0.0059747981 0.0031483525 0.0060890734 + 1408700 0.003710826 0.0034445929 0.0052710151 + 1408800 0.0040847754 0.0033959886 0.005406464 + 1408900 0.0056817537 0.0026967551 0.0054932432 + 1409000 0.0047279987 0.002610706 0.0049377679 + 1409100 0.0051847687 0.0027701993 0.0053220777 + 1409200 0.0057975933 0.0029536291 0.0058071321 + 1409300 0.0064300546 0.0027021729 0.0058669655 + 1409400 0.0054453501 0.0024156795 0.0050958128 + 1409500 0.0050489346 0.0024428512 0.0049278737 + 1409600 0.0061746994 0.0023963509 0.0054354608 + 1409700 0.0054622149 0.0027276719 0.0054161058 + 1409800 0.0061712443 0.0033063573 0.0063437666 + 1409900 0.0041750841 0.0034680627 0.0055229869 + 1410000 0.0054742449 0.0029263881 0.005620743 + 1410100 0.006039019 0.002306783 0.0052791127 + 1410200 0.0048202976 0.0022589097 0.0046313999 + 1410300 0.0043158528 0.0022506481 0.0043748569 + 1410400 0.0038744977 0.0023349109 0.0042418902 + 1410500 0.0036131903 0.0030337354 0.0048121025 + 1410600 0.0077647915 0.0031926131 0.0070143464 + 1410700 0.0043519939 0.0030919599 0.0052339569 + 1410800 0.0044286804 0.0022004444 0.0043801855 + 1410900 0.0052315459 0.0022091312 0.0047840327 + 1411000 0.0063624495 0.0025519181 0.0056834362 + 1411100 0.0061975473 0.0031927926 0.0062431479 + 1411200 0.0050491489 0.0033955537 0.0058806817 + 1411300 0.0050973093 0.003090989 0.0055998209 + 1411400 0.0048222264 0.0028246836 0.0051981232 + 1411500 0.006722088 0.0033724251 0.0066809527 + 1411600 0.0042359339 0.0034437448 0.0055286186 + 1411700 0.004994159 0.0025337676 0.0049918302 + 1411800 0.0047057996 0.0022759021 0.0045920379 + 1411900 0.0055112951 0.0024861426 0.0051987331 + 1412000 0.0050334708 0.0026881904 0.0051656018 + 1412100 0.0052233918 0.0031878104 0.0057586985 + 1412200 0.0057098679 0.0032770597 0.0060873853 + 1412300 0.0060362406 0.0033220285 0.0062929906 + 1412400 0.0051098854 0.003314234 0.0058292557 + 1412500 0.0049287258 0.0032339912 0.0056598484 + 1412600 0.0048140171 0.003129302 0.0054987011 + 1412700 0.0049130902 0.0032467423 0.0056649039 + 1412800 0.0047355555 0.0033531713 0.0056839525 + 1412900 0.0050592916 0.0035879063 0.0060780264 + 1413000 0.0054020901 0.003704881 0.0063637222 + 1413100 0.0070921876 0.003659767 0.0071504532 + 1413200 0.0066398931 0.0037399875 0.0070080599 + 1413300 0.0053910331 0.0038716764 0.0065250755 + 1413400 0.0052534864 0.0029305434 0.0055162438 + 1413500 0.0050694154 0.0028090249 0.0053041278 + 1413600 0.0060020699 0.0024369297 0.0053910735 + 1413700 0.00469103 0.0025498978 0.0048587641 + 1413800 0.0057744336 0.0020431829 0.0048852869 + 1413900 0.0057022544 0.0021201431 0.0049267214 + 1414000 0.0054352718 0.0023981245 0.0050732973 + 1414100 0.0053252492 0.0022922413 0.0049132624 + 1414200 0.0040891562 0.0025300665 0.0045426981 + 1414300 0.004454648 0.0022943056 0.0044868277 + 1414400 0.0047510288 0.0022724472 0.0046108442 + 1414500 0.0059549555 0.0022133475 0.0051443021 + 1414600 0.0037460606 0.0024177958 0.00426156 + 1414700 0.004645218 0.0025757065 0.0048620248 + 1414800 0.0067313894 0.0026816792 0.005994785 + 1414900 0.0051537673 0.0027837174 0.0053203372 + 1415000 0.0037853467 0.0027034421 0.0045665425 + 1415100 0.0049887169 0.0027574332 0.0052128172 + 1415200 0.004259714 0.002638491 0.0047350689 + 1415300 0.0058080096 0.0029248714 0.0057835012 + 1415400 0.0050575511 0.0032996659 0.0057889294 + 1415500 0.0056702377 0.0029018704 0.0056926905 + 1415600 0.0041813173 0.0031262222 0.0051842143 + 1415700 0.0036518493 0.003244745 0.0050421396 + 1415800 0.0064746447 0.0031260138 0.006312753 + 1415900 0.0034541078 0.0031496813 0.00484975 + 1416000 0.0043807181 0.0027863266 0.0049424613 + 1416100 0.0040724069 0.0025684026 0.0045727904 + 1416200 0.0044114843 0.0025757684 0.0047470458 + 1416300 0.0036506456 0.002562363 0.0043591651 + 1416400 0.0051063573 0.0026946148 0.0052079001 + 1416500 0.0067224303 0.0026560836 0.0059647797 + 1416600 0.0037761962 0.0029163879 0.0047749844 + 1416700 0.0031238541 0.0026027702 0.0041402921 + 1416800 0.0045377049 0.0024827909 0.0047161926 + 1416900 0.0049520879 0.0024183605 0.0048557163 + 1417000 0.0048498358 0.0022355464 0.004622575 + 1417100 0.0058244686 0.0022074119 0.0050741425 + 1417200 0.0041917752 0.0028073431 0.0048704825 + 1417300 0.0064847785 0.0027342817 0.0059260086 + 1417400 0.003812435 0.0030216286 0.0048980615 + 1417500 0.0049678171 0.0031184997 0.0055635972 + 1417600 0.0054888741 0.0028253043 0.0055268595 + 1417700 0.0052052966 0.0023758075 0.0049377894 + 1417800 0.0063311677 0.0024013228 0.0055174445 + 1417900 0.0052944244 0.0023996786 0.0050055281 + 1418000 0.0055153005 0.0026026617 0.0053172236 + 1418100 0.0040965031 0.0029904048 0.0050066524 + 1418200 0.0049497135 0.0030167244 0.0054529116 + 1418300 0.005794545 0.0030100875 0.0058620902 + 1418400 0.0062064507 0.002849766 0.0059045034 + 1418500 0.0062835104 0.0029900782 0.0060827435 + 1418600 0.0040685086 0.0031483069 0.005150776 + 1418700 0.0049389325 0.0027247819 0.0051556628 + 1418800 0.0043769484 0.0029927998 0.0051470791 + 1418900 0.0048438371 0.0032068648 0.0055909409 + 1419000 0.0053106977 0.0025883369 0.0052021959 + 1419100 0.0052334655 0.0025807333 0.0051565795 + 1419200 0.0053259558 0.0024292292 0.005050598 + 1419300 0.006438843 0.0020988403 0.0052679583 + 1419400 0.0061613627 0.0024683203 0.0055008659 + 1419500 0.0051850626 0.0031655113 0.0057175343 + 1419600 0.0063929105 0.0030163424 0.006162853 + 1419700 0.0046031872 0.0027644404 0.0050300716 + 1419800 0.0041442565 0.0025890347 0.004628786 + 1419900 0.0051120566 0.0022724136 0.0047885039 + 1420000 0.0047252344 0.002007493 0.0043331943 + 1420100 0.0038846704 0.0025664984 0.0044784846 + 1420200 0.0045162032 0.0027912914 0.0050141101 + 1420300 0.0052962065 0.0023703402 0.0049770669 + 1420400 0.0046431815 0.0025704443 0.0048557602 + 1420500 0.0048707164 0.0029085663 0.0053058721 + 1420600 0.0028101229 0.0033327634 0.0047158708 + 1420700 0.0033645537 0.0028944929 0.0045504842 + 1420800 0.0050281735 0.0023418884 0.0048166925 + 1420900 0.0049982262 0.0024787356 0.0049388001 + 1421000 0.0045041268 0.0027657644 0.0049826393 + 1421100 0.006028568 0.0027176006 0.0056847864 + 1421200 0.0059558809 0.0024328576 0.0053642678 + 1421300 0.005118859 0.0024395395 0.0049589779 + 1421400 0.0041328356 0.0027694868 0.0048036168 + 1421500 0.0040751532 0.0027993833 0.0048051228 + 1421600 0.0072353478 0.0026982168 0.0062593646 + 1421700 0.0063792728 0.0024120238 0.0055518222 + 1421800 0.0052133795 0.0027377024 0.0053036626 + 1421900 0.0060240168 0.0033043756 0.0062693213 + 1422000 0.0078461998 0.0031804708 0.0070422722 + 1422100 0.0043726043 0.003033485 0.0051856262 + 1422200 0.0056462002 0.0026342132 0.0054132023 + 1422300 0.0050940407 0.0026965174 0.0052037405 + 1422400 0.0047048534 0.0030989875 0.0054146575 + 1422500 0.0050221572 0.0031348104 0.0056066534 + 1422600 0.0057890534 0.0030098666 0.0058591663 + 1422700 0.0046060677 0.0028218013 0.0050888503 + 1422800 0.0053411193 0.0027982338 0.0054270659 + 1422900 0.0046531617 0.0029309312 0.0052211592 + 1423000 0.0049060346 0.0030114939 0.0054261828 + 1423100 0.0052374145 0.002487146 0.005064936 + 1423200 0.0043387981 0.0024888258 0.004624328 + 1423300 0.0040303981 0.0027476445 0.0047313561 + 1423400 0.0042311415 0.0027614898 0.0048440048 + 1423500 0.0055636661 0.0027782264 0.0055165933 + 1423600 0.0031954899 0.0029009424 0.0044737225 + 1423700 0.0035118845 0.0026468924 0.004375398 + 1423800 0.0046465084 0.0022770935 0.0045640468 + 1423900 0.0052452354 0.0025211128 0.0051027521 + 1424000 0.0071659994 0.0021667223 0.0056937376 + 1424100 0.0047625177 0.0020212875 0.0043653391 + 1424200 0.0054833087 0.0020382632 0.0047370792 + 1424300 0.0053736975 0.0023362746 0.0049811414 + 1424400 0.0049082355 0.0025861162 0.0050018883 + 1424500 0.0044906724 0.0022474004 0.0044576533 + 1424600 0.0056522541 0.0023140759 0.0050960447 + 1424700 0.0053046988 0.0029713812 0.0055822876 + 1424800 0.0045255515 0.0031781182 0.0054055381 + 1424900 0.0052833127 0.0025910653 0.0051914457 + 1425000 0.0082453846 0.0022901564 0.0063484317 + 1425100 0.0059911934 0.0025821524 0.0055309429 + 1425200 0.005310486 0.0023744444 0.0049881993 + 1425300 0.0040337856 0.002459758 0.0044451369 + 1425400 0.0045266645 0.0026327833 0.004860751 + 1425500 0.006430392 0.0027998028 0.0059647613 + 1425600 0.0073849285 0.0030499078 0.0066846773 + 1425700 0.0058941997 0.0031893347 0.0060903861 + 1425800 0.0064672085 0.0028778653 0.0060609445 + 1425900 0.0059281299 0.0029445942 0.0058623457 + 1426000 0.0044445082 0.0027931347 0.0049806661 + 1426100 0.0057670746 0.0023149931 0.0051534751 + 1426200 0.0052462211 0.0023875341 0.0049696585 + 1426300 0.0048631103 0.0026166118 0.0050101739 + 1426400 0.0045214456 0.002636283 0.004861682 + 1426500 0.0047214527 0.0031739707 0.0054978107 + 1426600 0.0049930596 0.0031306286 0.0055881501 + 1426700 0.0064091149 0.0029291042 0.0060835904 + 1426800 0.005225516 0.0025923876 0.0051643212 + 1426900 0.0053823632 0.0022421068 0.0048912387 + 1427000 0.0035919177 0.0022370207 0.0040049177 + 1427100 0.0040959648 0.0020754944 0.0040914771 + 1427200 0.0051322644 0.0021007897 0.0046268261 + 1427300 0.0040600807 0.0025050139 0.0045033348 + 1427400 0.0044711528 0.0025850285 0.0047856741 + 1427500 0.0040501676 0.0025410729 0.0045345148 + 1427600 0.0050827896 0.0025172963 0.0050189818 + 1427700 0.0041054909 0.0028537479 0.0048744192 + 1427800 0.002422849 0.0030832771 0.0042757731 + 1427900 0.0054602554 0.0026724811 0.0053599506 + 1428000 0.0049051527 0.0027130595 0.0051273144 + 1428100 0.0048261737 0.0028260645 0.0052014469 + 1428200 0.0037198352 0.0027347102 0.0045655666 + 1428300 0.0053097236 0.0029220933 0.0055354729 + 1428400 0.0048069512 0.002402343 0.0047682643 + 1428500 0.0048047477 0.001892698 0.0042575348 + 1428600 0.0043574643 0.0018820528 0.0040267423 + 1428700 0.0057573802 0.0022412238 0.0050749344 + 1428800 0.0056054607 0.0021375436 0.0048964813 + 1428900 0.0055832636 0.0022515304 0.0049995429 + 1429000 0.0052237665 0.0020697863 0.0046408589 + 1429100 0.0050720398 0.0026791964 0.005175591 + 1429200 0.0066023016 0.0028741892 0.0061237595 + 1429300 0.0048546996 0.0029177848 0.0053072072 + 1429400 0.0042922203 0.0021813539 0.0042939311 + 1429500 0.0054848643 0.0019252148 0.0046247964 + 1429600 0.0057852331 0.0021971473 0.0050445667 + 1429700 0.0046411352 0.0021559311 0.0044402399 + 1429800 0.0059692519 0.0023604719 0.0052984631 + 1429900 0.0062032888 0.0021960013 0.0052491826 + 1430000 0.0060543915 0.002449022 0.0054289178 + 1430100 0.0050584737 0.0026934507 0.0051831682 + 1430200 0.0050598884 0.003352586 0.0058429998 + 1430300 0.0062138211 0.0030940561 0.0061524211 + 1430400 0.0049399166 0.0025194472 0.0049508124 + 1430500 0.0060796898 0.0020537929 0.0050461403 + 1430600 0.0032370889 0.002252765 0.0038460197 + 1430700 0.0053373464 0.0024066189 0.0050335941 + 1430800 0.0056986218 0.0022558397 0.0050606301 + 1430900 0.0055681745 0.0020494159 0.0047900018 + 1431000 0.0051543885 0.0016790916 0.0042160172 + 1431100 0.0044113967 0.0016999911 0.0038712254 + 1431200 0.0049725099 0.0017500633 0.0041974705 + 1431300 0.0056691568 0.0015995463 0.0043898344 + 1431400 0.0043706435 0.0020946092 0.0042457853 + 1431500 0.0054327157 0.0021353874 0.0048093022 + 1431600 0.0057071143 0.0021680644 0.0049770348 + 1431700 0.0041229614 0.0021667478 0.0041960178 + 1431800 0.0043246619 0.0022622848 0.0043908293 + 1431900 0.0046715712 0.0022751089 0.0045743978 + 1432000 0.0048857975 0.0022524835 0.0046572119 + 1432100 0.005583855 0.0022525258 0.0050008294 + 1432200 0.0058969062 0.0026246282 0.0055270117 + 1432300 0.0050091953 0.0026478738 0.0051133371 + 1432400 0.004125182 0.0027458839 0.0047762469 + 1432500 0.0043433505 0.0026382676 0.0047760104 + 1432600 0.005605724 0.0021280454 0.0048871127 + 1432700 0.0045742085 0.0016275427 0.0038789109 + 1432800 0.006240219 0.0013349783 0.0044063361 + 1432900 0.0050004907 0.0016386217 0.0040998007 + 1433000 0.0052052254 0.0018045322 0.0043664791 + 1433100 0.0057707863 0.0016988386 0.0045391475 + 1433200 0.0054978267 0.0019606535 0.0046666151 + 1433300 0.0050393195 0.0021616254 0.0046419155 + 1433400 0.0052656456 0.0023184884 0.0049101734 + 1433500 0.0050012661 0.0025079667 0.0049695274 + 1433600 0.0031590228 0.0028332531 0.0043880847 + 1433700 0.0044967134 0.0029483783 0.0051616044 + 1433800 0.0050911391 0.0027733554 0.0052791504 + 1433900 0.0051259037 0.0019788994 0.0045018052 + 1434000 0.005440171 0.0018001395 0.0044777236 + 1434100 0.0042230978 0.0022584196 0.0043369756 + 1434200 0.0043529512 0.0028090256 0.0049514938 + 1434300 0.0059380939 0.0034177201 0.0063403757 + 1434400 0.0040615585 0.0036160973 0.0056151456 + 1434500 0.0060972572 0.0029985763 0.0059995701 + 1434600 0.0073663567 0.002846217 0.0064718457 + 1434700 0.0058063318 0.0029870497 0.0058448536 + 1434800 0.0057503856 0.0028623888 0.0056926567 + 1434900 0.0053292226 0.002641745 0.0052647217 + 1435000 0.0059156699 0.0025597028 0.0054713216 + 1435100 0.0049283064 0.0026331505 0.0050588013 + 1435200 0.0047677601 0.0021828222 0.0045294541 + 1435300 0.0054769719 0.0018942076 0.0045899047 + 1435400 0.0043257834 0.0019244442 0.0040535407 + 1435500 0.0054220825 0.0018963803 0.0045650615 + 1435600 0.0044808568 0.002085246 0.0042906677 + 1435700 0.0040345329 0.0022378687 0.0042236154 + 1435800 0.0054325983 0.0025600583 0.0052339152 + 1435900 0.0041225378 0.0028700994 0.004899161 + 1436000 0.0072261888 0.0028647652 0.006421405 + 1436100 0.0058016433 0.0032415686 0.0060970649 + 1436200 0.0061604854 0.0031053695 0.0061374835 + 1436300 0.0047130764 0.0032552726 0.0055749899 + 1436400 0.0053858723 0.003001336 0.005652195 + 1436500 0.0064340561 0.0028470678 0.0060138298 + 1436600 0.0053717668 0.002864798 0.0055087145 + 1436700 0.0055379541 0.0027871126 0.0055128244 + 1436800 0.0045611844 0.002859949 0.005104907 + 1436900 0.0042221899 0.002874094 0.0049522031 + 1437000 0.0077978454 0.0025174233 0.0063554253 + 1437100 0.0053211307 0.0023615542 0.0049805482 + 1437200 0.0047010693 0.00207739 0.0043911975 + 1437300 0.0052950883 0.0021359815 0.0047421578 + 1437400 0.0048867367 0.0020217506 0.0044269413 + 1437500 0.0054891646 0.0025781751 0.0052798733 + 1437600 0.006016951 0.0029510693 0.0059125374 + 1437700 0.0057760696 0.003013193 0.0058561022 + 1437800 0.0042745948 0.002921156 0.0050250581 + 1437900 0.0043286713 0.0025980065 0.0047285244 + 1438000 0.0054897607 0.0026974277 0.0053994193 + 1438100 0.0051805542 0.0024263256 0.0049761296 + 1438200 0.0054057793 0.002291602 0.004952259 + 1438300 0.0040105763 0.0024238677 0.0043978233 + 1438400 0.0040296787 0.0025545688 0.0045379262 + 1438500 0.0055793174 0.0022661911 0.0050122613 + 1438600 0.0059639964 0.0019286167 0.0048640211 + 1438700 0.0057067194 0.0019006841 0.0047094601 + 1438800 0.0052190475 0.0021096273 0.0046783772 + 1438900 0.0052966352 0.0021453668 0.0047523044 + 1439000 0.004168872 0.0022259988 0.0042778655 + 1439100 0.0040666525 0.0025337168 0.0045352724 + 1439200 0.0046165074 0.0026098631 0.0048820503 + 1439300 0.0033489 0.0029359534 0.0045842401 + 1439400 0.0055622873 0.0023619289 0.0050996172 + 1439500 0.0059099654 0.0023526232 0.0052614343 + 1439600 0.0058386897 0.0026161541 0.0054898842 + 1439700 0.0036622729 0.0031811399 0.0049836649 + 1439800 0.0069014802 0.0025731689 0.0059699912 + 1439900 0.00467839 0.0023258865 0.0046285316 + 1440000 0.0054507429 0.002210269 0.0048930565 + 1440100 0.0050398122 0.0026474696 0.0051280022 + 1440200 0.0053795248 0.0024084579 0.0050561928 + 1440300 0.0056431077 0.0023226261 0.0051000932 + 1440400 0.0051180516 0.0027513824 0.0052704234 + 1440500 0.004751959 0.0028749452 0.0052138 + 1440600 0.0054301589 0.0031951099 0.0058677663 + 1440700 0.0071509036 0.0030634789 0.0065830643 + 1440800 0.005697229 0.0030730619 0.0058771668 + 1440900 0.0056558925 0.0030118754 0.005795635 + 1441000 0.0054053832 0.0027729535 0.0054334156 + 1441100 0.0043197405 0.0022451223 0.0043712446 + 1441200 0.0054034056 0.0018899427 0.0045494313 + 1441300 0.0040758074 0.0023276347 0.0043336962 + 1441400 0.0057618226 0.0019449892 0.0047808863 + 1441500 0.003863061 0.0016789644 0.0035803148 + 1441600 0.0045365153 0.0015595662 0.0037923823 + 1441700 0.0043724493 0.0019924642 0.0041445291 + 1441800 0.0054842961 0.0024369316 0.0051362336 + 1441900 0.0042031389 0.0023866714 0.0044554038 + 1442000 0.0041637286 0.0020515104 0.0041008456 + 1442100 0.0054967831 0.0015529455 0.0042583935 + 1442200 0.0053087325 0.0018537677 0.0044666595 + 1442300 0.0051641581 0.0021990254 0.0047407595 + 1442400 0.0082333514 0.0023690264 0.0064213791 + 1442500 0.0055122985 0.0028025244 0.0055156088 + 1442600 0.004819339 0.0026169957 0.0049890141 + 1442700 0.0057003522 0.002424423 0.0052300651 + 1442800 0.0043090681 0.0025881903 0.0047090597 + 1442900 0.0049298534 0.0023320153 0.0047584276 + 1443000 0.004527354 0.0019311697 0.0041594768 + 1443100 0.0045383148 0.002387794 0.0046214958 + 1443200 0.0049789494 0.0027053195 0.0051558961 + 1443300 0.0041786809 0.0021435517 0.0042002462 + 1443400 0.0042855747 0.0016467595 0.0037560658 + 1443500 0.0039524739 0.0018501846 0.0037955428 + 1443600 0.0054767318 0.0022476462 0.0049432252 + 1443700 0.0040981486 0.0028715376 0.0048885951 + 1443800 0.0051813661 0.0027773399 0.0053275435 + 1443900 0.0058610178 0.0022845213 0.005169241 + 1444000 0.0060691527 0.0020427004 0.0050298615 + 1444100 0.004273708 0.0020409033 0.0041443689 + 1444200 0.0057601721 0.0019919121 0.0048269968 + 1444300 0.0051450157 0.0022678342 0.0048001466 + 1444400 0.0061797275 0.0023187529 0.0053603375 + 1444500 0.0054152944 0.0024194086 0.0050847488 + 1444600 0.0043242089 0.0022184009 0.0043467224 + 1444700 0.0040910836 0.0023268713 0.0043404515 + 1444800 0.006737659 0.0022334445 0.0055496361 + 1444900 0.0046827969 0.002129779 0.0044345931 + 1445000 0.0051904132 0.0021541894 0.0047088459 + 1445100 0.0041215945 0.0026114721 0.0046400693 + 1445200 0.0050376495 0.0027721383 0.0052516065 + 1445300 0.0049707342 0.002454661 0.0049011942 + 1445400 0.0050211287 0.0022458508 0.0047171876 + 1445500 0.0064837821 0.0024859923 0.0056772288 + 1445600 0.0041745759 0.0029991109 0.005053785 + 1445700 0.0046083976 0.0029649496 0.0052331453 + 1445800 0.0056819716 0.002475268 0.0052718634 + 1445900 0.0061237448 0.0026520178 0.0056660485 + 1446000 0.0059869549 0.0025457312 0.0054924356 + 1446100 0.0042774598 0.0022629432 0.0043682555 + 1446200 0.0049790658 0.0024076408 0.0048582747 + 1446300 0.0045941404 0.0023031089 0.0045642873 + 1446400 0.0059994139 0.0022169243 0.0051697608 + 1446500 0.0064689148 0.0024717625 0.0056556815 + 1446600 0.0064988472 0.002626856 0.0058255074 + 1446700 0.0045089763 0.0031544351 0.0053736968 + 1446800 0.0049323496 0.003436858 0.0058644989 + 1446900 0.0051583038 0.0029532937 0.0054921463 + 1447000 0.0065034862 0.0025383845 0.0057393191 + 1447100 0.0064958796 0.0022439445 0.0054411353 + 1447200 0.0055280283 0.0025307011 0.0052515275 + 1447300 0.0035994451 0.0029116647 0.0046832665 + 1447400 0.0038951938 0.0031160751 0.0050332408 + 1447500 0.0043810972 0.003076702 0.0052330232 + 1447600 0.0038818647 0.0029572712 0.0048678764 + 1447700 0.0043969104 0.0025777737 0.004741878 + 1447800 0.0051880413 0.0026655529 0.005219042 + 1447900 0.0058677404 0.0030522887 0.0059403172 + 1448000 0.0056123812 0.0031992812 0.0059616251 + 1448100 0.0047038257 0.002992389 0.0053075532 + 1448200 0.0052473328 0.002755556 0.0053382276 + 1448300 0.0045659674 0.0025343869 0.004781699 + 1448400 0.0043244913 0.002363594 0.0044920545 + 1448500 0.0048691053 0.0022792345 0.0046757473 + 1448600 0.0040902483 0.002271355 0.0042845241 + 1448700 0.0044533307 0.0021779166 0.0043697903 + 1448800 0.0054406021 0.0023911526 0.0050689489 + 1448900 0.0055986419 0.0025444658 0.0053000473 + 1449000 0.0040985989 0.0028586779 0.004875957 + 1449100 0.0039037356 0.0026663488 0.0045877186 + 1449200 0.0051896997 0.0020487543 0.0046030596 + 1449300 0.0046637657 0.0022182569 0.0045137041 + 1449400 0.0047326447 0.0024823688 0.0048117173 + 1449500 0.0043907161 0.00289044 0.0050514956 + 1449600 0.0050036168 0.0023626654 0.004825383 + 1449700 0.0044892396 0.0018008958 0.0040104434 + 1449800 0.0041381965 0.0018550536 0.0038918222 + 1449900 0.0045469441 0.0018294381 0.0040673872 + 1450000 0.0053443819 0.0018850201 0.0045154581 + 1450100 0.0053077899 0.0019291134 0.0045415412 + 1450200 0.0046770962 0.0018372378 0.0041392461 + 1450300 0.0041060274 0.0017501484 0.0037710837 + 1450400 0.0045443577 0.0022331698 0.0044698459 + 1450500 0.0040917899 0.00227851 0.0042924379 + 1450600 0.0044528886 0.0025245705 0.0047162266 + 1450700 0.0077242918 0.0025732969 0.0063750968 + 1450800 0.004673057 0.0026031573 0.0049031776 + 1450900 0.0051565372 0.0022305417 0.0047685249 + 1451000 0.0047530357 0.0024731204 0.0048125051 + 1451100 0.0053819818 0.002143506 0.0047924501 + 1451200 0.0039921904 0.0018576415 0.0038225477 + 1451300 0.0040407392 0.0018373091 0.0038261104 + 1451400 0.0057770815 0.002020262 0.0048636693 + 1451500 0.0057793239 0.0023819825 0.0052264935 + 1451600 0.0059501228 0.0025541218 0.0054826978 + 1451700 0.004992635 0.0026118846 0.0050691972 + 1451800 0.0042705065 0.0027377157 0.0048396056 + 1451900 0.0061825548 0.0023534094 0.0053963856 + 1452000 0.0061143615 0.0020336791 0.0050430914 + 1452100 0.005035615 0.0019193825 0.0043978493 + 1452200 0.0050468765 0.0017585784 0.0042425879 + 1452300 0.0057606853 0.0018222199 0.0046575572 + 1452400 0.0052939947 0.0023354181 0.0049410561 + 1452500 0.0045148278 0.0024835416 0.0047056834 + 1452600 0.0038620989 0.0025165734 0.0044174502 + 1452700 0.0047361801 0.0017215179 0.0040526065 + 1452800 0.0036355785 0.001475301 0.0032646873 + 1452900 0.0044302557 0.0015320014 0.0037125179 + 1453000 0.0029696101 0.0015336841 0.0029952891 + 1453100 0.0044506151 0.0015056022 0.0036961393 + 1453200 0.0039679043 0.001728229 0.0036811819 + 1453300 0.0044293507 0.0019994794 0.0041795505 + 1453400 0.0038216433 0.0021453491 0.0040263141 + 1453500 0.0029630905 0.0022646143 0.0037230104 + 1453600 0.004092387 0.0022455757 0.0042597974 + 1453700 0.0041679687 0.0021353046 0.0041867267 + 1453800 0.0048859439 0.0017002946 0.0041050951 + 1453900 0.0046145978 0.0019458161 0.0042170634 + 1454000 0.0043678578 0.0023311429 0.004480948 + 1454100 0.0045635293 0.0028739891 0.0051201012 + 1454200 0.0057517637 0.0025747457 0.0054056919 + 1454300 0.0061688972 0.0028100651 0.0058463192 + 1454400 0.0055768641 0.0030342801 0.0057791429 + 1454500 0.0043428335 0.0029081862 0.0050456746 + 1454600 0.0040126848 0.0027128225 0.0046878158 + 1454700 0.0067366798 0.0025867486 0.0059024581 + 1454800 0.0055035761 0.0027013082 0.0054100995 + 1454900 0.0054044031 0.0027630477 0.0054230273 + 1455000 0.0052005893 0.0030228782 0.0055825432 + 1455100 0.0053218406 0.0025187365 0.0051380799 + 1455200 0.006220633 0.0024602475 0.0055219653 + 1455300 0.0045490126 0.0026144805 0.0048534476 + 1455400 0.0057668759 0.0026796241 0.0055180083 + 1455500 0.0057640098 0.0024844484 0.0053214219 + 1455600 0.0043598832 0.0025393191 0.0046851991 + 1455700 0.0041067053 0.0024459049 0.0044671739 + 1455800 0.0053855644 0.002475139 0.0051258465 + 1455900 0.0064364927 0.0026968246 0.0058647859 + 1456000 0.0056620265 0.0031409851 0.0059277637 + 1456100 0.0060260626 0.0032823801 0.0062483328 + 1456200 0.0044485583 0.0031527594 0.0053422842 + 1456300 0.0075328377 0.0028630929 0.0065706614 + 1456400 0.0049629475 0.0029909502 0.005433651 + 1456500 0.0065965043 0.0024942414 0.0057409584 + 1456600 0.0040403945 0.0025584217 0.0045470534 + 1456700 0.0038413528 0.0023942429 0.0042849088 + 1456800 0.00406378 0.002311224 0.0043113657 + 1456900 0.0059544096 0.0022862609 0.0052169469 + 1457000 0.0060641016 0.0026073962 0.0055920712 + 1457100 0.0050907915 0.0034496822 0.0059553061 + 1457200 0.0048851028 0.0037802086 0.0061845951 + 1457300 0.0057816018 0.0033663699 0.0062120021 + 1457400 0.0052544367 0.0033025128 0.0058886809 + 1457500 0.0040780887 0.003037704 0.0050448883 + 1457600 0.0070999257 0.0022131144 0.0057076091 + 1457700 0.0053715342 0.0022630314 0.0049068334 + 1457800 0.0052659605 0.0025290105 0.0051208505 + 1457900 0.0049165165 0.0024379133 0.0048577612 + 1458000 0.0040260409 0.0019845504 0.0039661174 + 1458100 0.0055938445 0.0017082142 0.0044614346 + 1458200 0.0051657866 0.0016877934 0.004230329 + 1458300 0.0047316698 0.0016884559 0.0040173246 + 1458400 0.0056030003 0.0014917075 0.0042494342 + 1458500 0.0044948937 0.001994127 0.0042064575 + 1458600 0.0045650454 0.0020245202 0.0042713785 + 1458700 0.0060057131 0.0021905003 0.0051464372 + 1458800 0.004984183 0.0027703996 0.0052235522 + 1458900 0.0037133339 0.0026619421 0.0044895986 + 1459000 0.0050402689 0.0024254723 0.0049062297 + 1459100 0.0039993787 0.0026144426 0.0045828868 + 1459200 0.005335063 0.0025063166 0.005132168 + 1459300 0.0047667012 0.0026823016 0.0050284123 + 1459400 0.0053175534 0.0026533112 0.0052705445 + 1459500 0.0059013037 0.0027041753 0.0056087232 + 1459600 0.0051865527 0.0025666865 0.0051194429 + 1459700 0.0056191377 0.002077063 0.0048427324 + 1459800 0.0039731684 0.0017560864 0.0037116302 + 1459900 0.0040862271 0.0020447881 0.004055978 + 1460000 0.0038600446 0.0020413075 0.0039411732 + 1460100 0.0056905511 0.0019006589 0.004701477 + 1460200 0.0043042007 0.0022036998 0.0043221736 + 1460300 0.0036073916 0.0022997644 0.0040752774 + 1460400 0.0054991097 0.002308138 0.0050147311 + 1460500 0.0053664189 0.0027498506 0.0053911349 + 1460600 0.0042070614 0.0029686162 0.0050392793 + 1460700 0.0056423044 0.0022207922 0.0049978638 + 1460800 0.0036562103 0.0023297069 0.0041292479 + 1460900 0.0049143861 0.0024820876 0.004900887 + 1461000 0.0050673857 0.0025591363 0.0050532402 + 1461100 0.005552966 0.0025323576 0.005265458 + 1461200 0.0045274324 0.002636337 0.0048646826 + 1461300 0.0051552854 0.0019793549 0.0045167219 + 1461400 0.0051032643 0.0020839819 0.0045957448 + 1461500 0.0046741029 0.0022035409 0.004504076 + 1461600 0.0050886352 0.0021381603 0.004642723 + 1461700 0.0044829993 0.0021038136 0.0043102899 + 1461800 0.005261017 0.0022237267 0.0048131335 + 1461900 0.0063964779 0.0020461019 0.0051943684 + 1462000 0.0048089821 0.0022758218 0.0046427427 + 1462100 0.0058335702 0.002133831 0.0050050413 + 1462200 0.005833142 0.0025610087 0.0054320082 + 1462300 0.0073287174 0.00252742 0.0061345231 + 1462400 0.0074497135 0.0024670252 0.0061336811 + 1462500 0.0052417861 0.0026172659 0.0051972075 + 1462600 0.0038293829 0.0028119197 0.0046966941 + 1462700 0.0050620146 0.002542355 0.0050338153 + 1462800 0.0061535497 0.0019765026 0.0050052028 + 1462900 0.0043133566 0.0019872676 0.0041102478 + 1463000 0.0046690829 0.0017370829 0.0040351471 + 1463100 0.0056162915 0.0020160308 0.0047802993 + 1463200 0.0065958424 0.0018375592 0.0050839503 + 1463300 0.0045259109 0.0023728015 0.0046003983 + 1463400 0.0056189919 0.0025908741 0.0053564717 + 1463500 0.003892952 0.002524481 0.0044405433 + 1463600 0.0052037391 0.0023961968 0.0049574121 + 1463700 0.0060521585 0.002736188 0.0057149848 + 1463800 0.0060200547 0.0024609783 0.005423974 + 1463900 0.0062464382 0.0024860457 0.0055604645 + 1464000 0.0046618119 0.0029283765 0.005222862 + 1464100 0.0053509649 0.0027915094 0.0054251875 + 1464200 0.0052450073 0.0021251285 0.0047066555 + 1464300 0.0045923932 0.0022092789 0.0044695974 + 1464400 0.0064804748 0.0021178272 0.0053074359 + 1464500 0.0058239458 0.0019091398 0.0047756131 + 1464600 0.0057561293 0.002381125 0.0052142199 + 1464700 0.0063167106 0.0026015072 0.0057105132 + 1464800 0.0055250422 0.0025190176 0.0052383743 + 1464900 0.0059048397 0.0022264514 0.0051327396 + 1465000 0.0047975042 0.0021112483 0.0044725199 + 1465100 0.004812345 0.0024455181 0.0048140942 + 1465200 0.0041906628 0.0022126681 0.0042752599 + 1465300 0.0052894279 0.0017741453 0.0043775355 + 1465400 0.0035440637 0.0021130303 0.0038573742 + 1465500 0.0063790549 0.0023004169 0.005440108 + 1465600 0.0053037447 0.0022174481 0.004827885 + 1465700 0.0053615667 0.0017845301 0.0044234262 + 1465800 0.0064281801 0.001846151 0.0050100209 + 1465900 0.004392384 0.0022435296 0.0044054061 + 1466000 0.0056215645 0.0020737457 0.0048406095 + 1466100 0.0069303404 0.001982267 0.0053932939 + 1466200 0.0039233041 0.0025076493 0.0044386506 + 1466300 0.0043456824 0.0030262603 0.0051651509 + 1466400 0.0054964061 0.0026624456 0.005367708 + 1466500 0.0051529834 0.0021233158 0.0046595498 + 1466600 0.0051025646 0.0020208704 0.0045322889 + 1466700 0.0036920232 0.0026417048 0.0044588724 + 1466800 0.0062729657 0.0027293632 0.0058168385 + 1466900 0.0036850788 0.0026219203 0.0044356701 + 1467000 0.0055305188 0.0021996107 0.0049216629 + 1467100 0.0050328088 0.0022800107 0.0047570963 + 1467200 0.0045088946 0.0026754063 0.0048946279 + 1467300 0.0067189221 0.0024848851 0.0057918546 + 1467400 0.0041504265 0.0025648253 0.0046076134 + 1467500 0.0050200157 0.0016478679 0.0041186569 + 1467600 0.0056708385 0.0012067668 0.0039978826 + 1467700 0.0039664262 0.0015924305 0.0035446559 + 1467800 0.0047517751 0.0017091015 0.0040478658 + 1467900 0.0040318823 0.0019570093 0.0039414514 + 1468000 0.0059689337 0.0021348671 0.0050727017 + 1468100 0.0052220791 0.0022060146 0.0047762567 + 1468200 0.005351207 0.0022614198 0.004895217 + 1468300 0.0051296387 0.002471451 0.004996195 + 1468400 0.0059397428 0.0026647527 0.0055882199 + 1468500 0.004836268 0.0027348755 0.0051152261 + 1468600 0.0045664059 0.0026382499 0.0048857778 + 1468700 0.0050748642 0.0021812272 0.0046790119 + 1468800 0.0060615897 0.0024975763 0.005481015 + 1468900 0.005165727 0.003031924 0.0055744303 + 1469000 0.0050069467 0.0027418176 0.0052061742 + 1469100 0.0063040427 0.0022247739 0.005327545 + 1469200 0.0058813032 0.0027591086 0.0056538126 + 1469300 0.0062246817 0.0032317561 0.0062954666 + 1469400 0.0069780425 0.0028726078 0.0063071131 + 1469500 0.0043740559 0.0024176065 0.0045704621 + 1469600 0.0042210021 0.002220526 0.0042980504 + 1469700 0.0049476948 0.0022230267 0.0046582202 + 1469800 0.0041033581 0.0024484634 0.0044680849 + 1469900 0.0053391595 0.0019424022 0.0045702697 + 1470000 0.0052649741 0.0016201944 0.0042115488 + 1470100 0.0041506391 0.0018147625 0.0038576552 + 1470200 0.0039353557 0.0023289283 0.0042658612 + 1470300 0.0051687797 0.0026747721 0.0052187808 + 1470400 0.005457987 0.0029790513 0.0056654043 + 1470500 0.0047001847 0.0030428745 0.0053562467 + 1470600 0.0062848741 0.0029369583 0.0060302948 + 1470700 0.0053483481 0.0023425496 0.0049749397 + 1470800 0.0046298731 0.002701677 0.0049804427 + 1470900 0.005378385 0.0028081891 0.005455363 + 1471000 0.0049974589 0.0030637546 0.0055234414 + 1471100 0.0040441975 0.0033372814 0.0053277848 + 1471200 0.0052506042 0.0024765537 0.0050608354 + 1471300 0.0049307818 0.0020971046 0.0045239737 + 1471400 0.0037125807 0.0023584189 0.0041857047 + 1471500 0.0057839854 0.0026375109 0.0054843162 + 1471600 0.0051020979 0.0031088683 0.0056200571 + 1471700 0.005112001 0.0028057856 0.0053218486 + 1471800 0.0038944529 0.0024537617 0.0043705627 + 1471900 0.0050757275 0.002474715 0.0049729246 + 1472000 0.0040363223 0.0025479071 0.0045345345 + 1472100 0.0054991139 0.0024194879 0.005126083 + 1472200 0.0037397234 0.002272239 0.0041128841 + 1472300 0.0052684362 0.0018914908 0.0044845493 + 1472400 0.0058124449 0.0019606431 0.0048214558 + 1472500 0.0054166848 0.0021896052 0.0048556298 + 1472600 0.0043009406 0.0024723184 0.0045891876 + 1472700 0.0043391084 0.0024839479 0.0046196028 + 1472800 0.0041601402 0.0027484741 0.0047960431 + 1472900 0.0060902708 0.0027147119 0.0057122671 + 1473000 0.0056284171 0.0023811832 0.0051514198 + 1473100 0.0044186439 0.002869692 0.0050444933 + 1473200 0.0056250596 0.0028702082 0.0056387923 + 1473300 0.006122598 0.002543577 0.0055570432 + 1473400 0.0053697826 0.0024120497 0.0050549895 + 1473500 0.0045524312 0.0024212013 0.004661851 + 1473600 0.0051201615 0.0024047411 0.0049248206 + 1473700 0.004328414 0.0024074006 0.0045377919 + 1473800 0.004375284 0.0026578268 0.0048112868 + 1473900 0.0034745171 0.0026203168 0.0043304307 + 1474000 0.0046952722 0.0024592187 0.004770173 + 1474100 0.0041937972 0.0026414029 0.0047055375 + 1474200 0.0050491276 0.0024951751 0.0049802926 + 1474300 0.005071739 0.0024813884 0.0049776349 + 1474400 0.0048483873 0.0027535179 0.0051398335 + 1474500 0.003439335 0.0030861866 0.0047789843 + 1474600 0.0046806776 0.0031116167 0.0054153877 + 1474700 0.0051005895 0.0031586275 0.0056690739 + 1474800 0.0045812468 0.0024959888 0.0047508212 + 1474900 0.0049193222 0.0019684774 0.0043897063 + 1475000 0.004025492 0.0019438189 0.0039251157 + 1475100 0.0053335216 0.0024355682 0.0050606609 + 1475200 0.0042283563 0.0027882581 0.0048694022 + 1475300 0.0041783184 0.0025092077 0.0045657238 + 1475400 0.0051615541 0.0025098724 0.0050503249 + 1475500 0.0046727433 0.0025727239 0.0048725897 + 1475600 0.0048229083 0.0030994913 0.0054732665 + 1475700 0.0053479681 0.0027459424 0.0053781454 + 1475800 0.0056938732 0.00229776 0.0051002133 + 1475900 0.0066606015 0.0021606215 0.0054388863 + 1476000 0.0054506311 0.0027687568 0.0054514893 + 1476100 0.0052469251 0.0029102322 0.0054927031 + 1476200 0.0059866021 0.002585514 0.0055320448 + 1476300 0.0053226569 0.0026988071 0.0053185522 + 1476400 0.0046562363 0.002783342 0.0050750833 + 1476500 0.0057905924 0.0027091415 0.0055591987 + 1476600 0.0051831556 0.0030537101 0.0056047945 + 1476700 0.0051945648 0.0028876048 0.0054443047 + 1476800 0.0064346075 0.002094562 0.0052615954 + 1476900 0.0045089863 0.0020867583 0.004306025 + 1477000 0.0049485516 0.0020289717 0.0044645869 + 1477100 0.0038093396 0.0021030892 0.0039779986 + 1477200 0.0042239067 0.002278068 0.004357022 + 1477300 0.0044920953 0.0022513195 0.0044622727 + 1477400 0.0036360087 0.0023117774 0.0041013754 + 1477500 0.0072963458 0.001797872 0.0053890422 + 1477600 0.005761113 0.0023190632 0.005154611 + 1477700 0.004711836 0.0029133292 0.005232436 + 1477800 0.0075090334 0.0022616619 0.0059575143 + 1477900 0.0067621433 0.0024795042 0.0058077466 + 1478000 0.0054257788 0.0028823751 0.0055528756 + 1478100 0.004809301 0.0028407131 0.0052077909 + 1478200 0.0059905176 0.0019986197 0.0049470775 + 1478300 0.0049938101 0.0021843725 0.0046422634 + 1478400 0.0057921857 0.0023615204 0.0052123618 + 1478500 0.0036316995 0.0022833679 0.004070845 + 1478600 0.0051313331 0.0020763462 0.0046019242 + 1478700 0.0042261603 0.0024020623 0.0044821255 + 1478800 0.0054450359 0.0025120023 0.0051919809 + 1478900 0.0042112756 0.0022837965 0.0043565337 + 1479000 0.0066798416 0.0020283568 0.0053160913 + 1479100 0.003677835 0.0023141394 0.0041243238 + 1479200 0.0057875988 0.0018695353 0.0047181191 + 1479300 0.0040640682 0.0020498024 0.0040500859 + 1479400 0.0052917982 0.002246603 0.0048511599 + 1479500 0.0053729266 0.0022285204 0.0048730077 + 1479600 0.0055549304 0.0020948337 0.004828901 + 1479700 0.005312006 0.0022153432 0.0048298461 + 1479800 0.0052321827 0.0021922773 0.0047674922 + 1479900 0.0049108309 0.0024681067 0.0048851563 + 1480000 0.0049913913 0.0024277523 0.0048844527 + 1480100 0.0046884435 0.0023480122 0.0046556055 + 1480200 0.0046514242 0.0021879367 0.0044773096 + 1480300 0.005818492 0.0016500257 0.0045138147 + 1480400 0.0040712871 0.0016185433 0.0036223799 + 1480500 0.0055308427 0.0016013844 0.004323596 + 1480600 0.0051335397 0.0020078688 0.0045345329 + 1480700 0.0051779068 0.0020527763 0.0046012773 + 1480800 0.0036003753 0.0025601138 0.0043321735 + 1480900 0.0050774443 0.0020462776 0.0045453322 + 1481000 0.0047331285 0.001930828 0.0042604147 + 1481100 0.0053417861 0.0019763791 0.0046055394 + 1481200 0.0053160283 0.0023335219 0.0049500046 + 1481300 0.0050440708 0.0027999238 0.0052825524 + 1481400 0.0040046392 0.0027982974 0.0047693308 + 1481500 0.0047712666 0.0022334872 0.004581845 + 1481600 0.006278134 0.0017350282 0.0048250473 + 1481700 0.0050210989 0.0013425118 0.0038138339 + 1481800 0.0051577801 0.0015166755 0.0040552704 + 1481900 0.0046211917 0.0021607594 0.0044352521 + 1482000 0.0052439351 0.0020764316 0.004657431 + 1482100 0.004623649 0.0017972067 0.0040729089 + 1482200 0.003633326 0.0023231522 0.0041114298 + 1482300 0.0052336027 0.0022127552 0.004788669 + 1482400 0.0047319068 0.0019727944 0.0043017798 + 1482500 0.0058836562 0.002029415 0.0049252771 + 1482600 0.0047508246 0.0020749628 0.0044132593 + 1482700 0.0040083107 0.0020724551 0.0040452955 + 1482800 0.0043259459 0.002450936 0.0045801125 + 1482900 0.0054891892 0.0022054277 0.004907138 + 1483000 0.0049072034 0.002195659 0.0046109232 + 1483100 0.0050095441 0.0018827448 0.0043483799 + 1483200 0.0061337962 0.0016051852 0.004624163 + 1483300 0.0034731773 0.0019196136 0.0036290681 + 1483400 0.0057455027 0.0016687622 0.0044966268 + 1483500 0.0041965536 0.0015701748 0.003635666 + 1483600 0.0064621267 0.0020978752 0.0052784532 + 1483700 0.0056579586 0.002553032 0.0053378085 + 1483800 0.0050943526 0.0024472087 0.0049545854 + 1483900 0.0060095324 0.0017020895 0.0046599062 + 1484000 0.0048725622 0.0017087075 0.0041069217 + 1484100 0.0058389932 0.0018134559 0.0046873354 + 1484200 0.0040625466 0.001785213 0.0037847477 + 1484300 0.0048127961 0.0019202834 0.0042890815 + 1484400 0.0040456915 0.0019026208 0.0038938596 + 1484500 0.0046382196 0.0020794832 0.0043623569 + 1484600 0.0059618057 0.0022062807 0.0051406069 + 1484700 0.004474053 0.0023768351 0.0045789081 + 1484800 0.0057268259 0.0025026653 0.0053213374 + 1484900 0.0070290766 0.0026233793 0.0060830029 + 1485000 0.0058593027 0.0021718529 0.0050557285 + 1485100 0.0057741873 0.0021620543 0.0050040371 + 1485200 0.0046232296 0.0022943788 0.0045698746 + 1485300 0.0046229038 0.0020517952 0.0043271307 + 1485400 0.0069711308 0.0019955459 0.0054266493 + 1485500 0.0037600749 0.0025465228 0.0043971847 + 1485600 0.0049671754 0.0023907202 0.0048355018 + 1485700 0.0045212299 0.0021361256 0.0043614185 + 1485800 0.0047417601 0.00193531 0.004269145 + 1485900 0.0040935802 0.0018954145 0.0039102235 + 1486000 0.0054223593 0.0019366603 0.0046054778 + 1486100 0.0049741098 0.0019474125 0.0043956071 + 1486200 0.0051315397 0.001746892 0.0042725717 + 1486300 0.0040892734 0.0017679419 0.0037806311 + 1486400 0.0051713241 0.0017500977 0.0042953588 + 1486500 0.0053252713 0.0020025251 0.0046235571 + 1486600 0.0049891334 0.0021669263 0.0046225154 + 1486700 0.0051624073 0.0022207261 0.0047615984 + 1486800 0.0055600054 0.0019780764 0.0047146416 + 1486900 0.0044725272 0.0016565552 0.0038578772 + 1487000 0.0038569611 0.0020878057 0.0039861537 + 1487100 0.0042014084 0.0021082122 0.004176093 + 1487200 0.0041225022 0.001847204 0.003876248 + 1487300 0.0061639437 0.0020288277 0.0050626438 + 1487400 0.0041828684 0.0022285924 0.004287348 + 1487500 0.0047222936 0.0021043938 0.0044286477 + 1487600 0.0047728608 0.0021713991 0.0045205415 + 1487700 0.0054022805 0.0021416511 0.004800586 + 1487800 0.0057642032 0.0020056539 0.0048427227 + 1487900 0.0041725237 0.0020685396 0.0041222036 + 1488000 0.0047335985 0.002336157 0.004665975 + 1488100 0.0039194911 0.0022824711 0.0042115956 + 1488200 0.0056918568 0.0021527227 0.0049541834 + 1488300 0.0047371444 0.002314746 0.0046463093 + 1488400 0.0036184475 0.0022836425 0.0040645971 + 1488500 0.0060769676 0.0022008946 0.0051919021 + 1488600 0.0053056667 0.0023792952 0.004990678 + 1488700 0.0049890244 0.0026103559 0.0050658913 + 1488800 0.0047280977 0.0018408078 0.0041679184 + 1488900 0.0050310734 0.0015526673 0.0040288987 + 1489000 0.0030279694 0.0020259143 0.003516243 + 1489100 0.0040753339 0.0017749526 0.0037807811 + 1489200 0.0049143134 0.00182655 0.0042453137 + 1489300 0.0053934064 0.0020533543 0.0047079216 + 1489400 0.0044453483 0.0024197441 0.004607689 + 1489500 0.005006057 0.0025497106 0.0050136292 + 1489600 0.0041636355 0.0024987037 0.0045479931 + 1489700 0.0036361462 0.0021665333 0.003956199 + 1489800 0.005520629 0.0019323342 0.0046495188 + 1489900 0.0051112125 0.0021011751 0.00461685 + 1490000 0.0049866329 0.0017306345 0.0041849929 + 1490100 0.0050280954 0.001743046 0.0042178117 + 1490200 0.0054599859 0.0024547322 0.005142069 + 1490300 0.0052509425 0.0030254358 0.005609884 + 1490400 0.006099269 0.0025870061 0.00558899 + 1490500 0.0046530595 0.0023062917 0.0045964694 + 1490600 0.0051762461 0.0020993804 0.004647064 + 1490700 0.004209551 0.0021408886 0.0042127769 + 1490800 0.0047993217 0.0024004496 0.0047626157 + 1490900 0.0043113988 0.0023268997 0.0044489163 + 1491000 0.0070438938 0.0019125128 0.0053794293 + 1491100 0.0051969504 0.0018322031 0.0043900771 + 1491200 0.0065870132 0.0025401164 0.005782162 + 1491300 0.0058848402 0.0029071776 0.0058036224 + 1491400 0.0057073813 0.0028003628 0.0056094645 + 1491500 0.0054708302 0.0027567049 0.0054493791 + 1491600 0.0060574532 0.0029741406 0.0059555434 + 1491700 0.0067749743 0.0029093565 0.0062439142 + 1491800 0.0040517318 0.0027457226 0.0047399344 + 1491900 0.0049106513 0.0024389231 0.0048558843 + 1492000 0.0048693229 0.002382194 0.0047788139 + 1492100 0.0039760842 0.0023445617 0.0043015406 + 1492200 0.0039563732 0.0022555002 0.0042027777 + 1492300 0.0061402379 0.0022241968 0.0052463451 + 1492400 0.0046981845 0.0021621666 0.0044745543 + 1492500 0.0061620992 0.0023058026 0.0053387108 + 1492600 0.0056723113 0.0022587708 0.0050506116 + 1492700 0.004374376 0.0019791576 0.0041321708 + 1492800 0.0051179574 0.0016452523 0.0041642469 + 1492900 0.0051217253 0.0017982244 0.0043190736 + 1493000 0.0043367751 0.0020876618 0.0042221683 + 1493100 0.0057110405 0.0020716562 0.0048825589 + 1493200 0.0054088969 0.0018879922 0.0045501836 + 1493300 0.0037462486 0.0018742151 0.0037180719 + 1493400 0.0041228384 0.0022328105 0.00426202 + 1493500 0.0042915768 0.0022858664 0.0043981268 + 1493600 0.0038822733 0.0022789052 0.0041897116 + 1493700 0.0045568427 0.0024898583 0.0047326793 + 1493800 0.004889903 0.002511586 0.0049183352 + 1493900 0.0051332831 0.0029583776 0.0054849153 + 1494000 0.0038936262 0.0030287321 0.0049451263 + 1494100 0.0046573889 0.0025916917 0.0048840003 + 1494200 0.0042404733 0.0025069613 0.0045940693 + 1494300 0.0047886397 0.0025346103 0.0048915189 + 1494400 0.0036940996 0.0025934398 0.0044116294 + 1494500 0.0052152606 0.0023431775 0.0049100636 + 1494600 0.0045771326 0.0025537281 0.0048065355 + 1494700 0.0056228919 0.0027079346 0.0054754517 + 1494800 0.0046977804 0.0028562583 0.0051684471 + 1494900 0.0072781221 0.0023315014 0.0059137021 + 1495000 0.0053893869 0.0029292007 0.0055817896 + 1495100 0.0051316629 0.0031379183 0.0056636586 + 1495200 0.0040352407 0.0027123334 0.0046984285 + 1495300 0.0046071083 0.0021280201 0.0043955813 + 1495400 0.0051242313 0.0024683531 0.0049904357 + 1495500 0.0039134039 0.002757552 0.0046836804 + 1495600 0.0051955306 0.0025614806 0.0051186558 + 1495700 0.0071407429 0.0020065389 0.0055211233 + 1495800 0.0049062226 0.002547521 0.0049623024 + 1495900 0.0054572946 0.0024594402 0.0051454524 + 1496000 0.0048460987 0.0019930538 0.0043782431 + 1496100 0.0047224798 0.0018700009 0.0041943465 + 1496200 0.0058106778 0.002600817 0.00546076 + 1496300 0.0037572657 0.0023775654 0.0042268447 + 1496400 0.0053676725 0.0019266048 0.0045685061 + 1496500 0.0037820482 0.0020506038 0.0039120807 + 1496600 0.0043922694 0.0018933131 0.0040551332 + 1496700 0.0049116885 0.0019904042 0.0044078759 + 1496800 0.0064686884 0.0022090458 0.0053928534 + 1496900 0.0056418451 0.0024679365 0.0052447821 + 1497000 0.0044039129 0.0024045301 0.004572081 + 1497100 0.0050243786 0.0022184287 0.004691365 + 1497200 0.0044962725 0.0018647046 0.0040777137 + 1497300 0.0057675093 0.0021165442 0.0049552402 + 1497400 0.0064855587 0.0024501237 0.0056422346 + 1497500 0.0048884081 0.0022667889 0.0046728022 + 1497600 0.0043743439 0.0023057229 0.0044587203 + 1497700 0.0051383204 0.0020947972 0.0046238143 + 1497800 0.0056113501 0.0024502475 0.0052120839 + 1497900 0.0046424239 0.0029310253 0.0052159683 + 1498000 0.0048303442 0.0030032859 0.0053807209 + 1498100 0.0053288447 0.0030215831 0.0056443739 + 1498200 0.006190151 0.0024560006 0.0055027155 + 1498300 0.0047339802 0.0025649886 0.0048949945 + 1498400 0.0047732437 0.0028964423 0.0052457732 + 1498500 0.0058257672 0.0032489682 0.0061163379 + 1498600 0.005224941 0.0026672475 0.0052388981 + 1498700 0.0066058123 0.0020487635 0.0053000618 + 1498800 0.0052402189 0.0023020849 0.0048812551 + 1498900 0.0057598318 0.0027525906 0.0055875078 + 1499000 0.006462978 0.003261612 0.006442609 + 1499100 0.0052821828 0.0030295106 0.0056293349 + 1499200 0.0066515845 0.0020029443 0.005276771 + 1499300 0.005189816 0.0020638007 0.0046181632 + 1499400 0.0047091417 0.0028078733 0.005125654 + 1499500 0.0049923512 0.0026393393 0.0050965121 + 1499600 0.0053829076 0.0024310294 0.0050804292 + 1499700 0.0049351259 0.002653142 0.0050821493 + 1499800 0.004175189 0.0030298658 0.0050848416 + 1499900 0.0039830053 0.0026626597 0.0046230451 + 1500000 0.0053063803 0.0024955895 0.0051073236 + 1500100 0.00538144 0.0024130616 0.0050617391 + 1500200 0.0033731303 0.0025798354 0.004240048 + 1500300 0.0052138096 0.0026616875 0.0052278594 + 1500400 0.0048908054 0.00256389 0.0049710833 + 1500500 0.005605817 0.0024809108 0.0052400238 + 1500600 0.0083054647 0.0020381304 0.0061259763 + 1500700 0.0039901198 0.0025453819 0.004509269 + 1500800 0.0039442523 0.0028185719 0.0047598836 + 1500900 0.0064953768 0.0026945961 0.0058915393 + 1501000 0.0051713954 0.0026472671 0.0051925633 + 1501100 0.0045808102 0.0023586042 0.0046132217 + 1501200 0.0054831361 0.0022415292 0.0049402602 + 1501300 0.005703674 0.0022725187 0.0050797957 + 1501400 0.0058000982 0.0021463039 0.0050010397 + 1501500 0.0049085428 0.0019706151 0.0043865384 + 1501600 0.0054898994 0.0026318307 0.0053338905 + 1501700 0.0054776618 0.0031192022 0.0058152389 + 1501800 0.0065533734 0.002527848 0.0057533364 + 1501900 0.0050227419 0.0017830663 0.004255197 + 1502000 0.0044600228 0.0018606142 0.0040557816 + 1502100 0.0048988415 0.0019482666 0.0043594151 + 1502200 0.0050910227 0.0020857053 0.004591443 + 1502300 0.0036172829 0.0020145811 0.0037949626 + 1502400 0.0057261608 0.0018877584 0.0047061032 + 1502500 0.0044130262 0.0020455779 0.0042176142 + 1502600 0.0054312699 0.0020175809 0.0046907841 + 1502700 0.006569266 0.0021028036 0.0053361142 + 1502800 0.0055254479 0.0020638006 0.004783357 + 1502900 0.0046685253 0.0021815534 0.0044793432 + 1503000 0.0053389079 0.0022470715 0.0048748153 + 1503100 0.004484593 0.0023578866 0.0045651472 + 1503200 0.0057579776 0.0021617884 0.004995793 + 1503300 0.0053259272 0.0018522453 0.0044736001 + 1503400 0.0038118231 0.0022744395 0.0041505712 + 1503500 0.0035371544 0.0022381228 0.003979066 + 1503600 0.0049393705 0.0018423824 0.0042734788 + 1503700 0.0056506053 0.0018363681 0.0046175254 + 1503800 0.0042078627 0.0023310311 0.0044020885 + 1503900 0.0046982276 0.0022262141 0.004538623 + 1504000 0.0054000543 0.0021817691 0.0048396083 + 1504100 0.007620372 0.0020347027 0.0057853545 + 1504200 0.0049685023 0.0022102093 0.004655644 + 1504300 0.0069666157 0.0021726119 0.005601493 + 1504400 0.0039746795 0.0024647812 0.0044210687 + 1504500 0.0049684767 0.002578387 0.0050238092 + 1504600 0.0046493347 0.0025759273 0.0048642717 + 1504700 0.0059808328 0.002542617 0.0054863082 + 1504800 0.005807672 0.0025918616 0.0054503252 + 1504900 0.0052666192 0.002439487 0.0050316512 + 1505000 0.0040263221 0.0023453789 0.0043270844 + 1505100 0.0049196549 0.0025070305 0.0049284232 + 1505200 0.005199888 0.0027826172 0.005341937 + 1505300 0.0051755984 0.0027637824 0.0053111472 + 1505400 0.0044334398 0.0025783204 0.004760404 + 1505500 0.0050215683 0.0026814833 0.0051530365 + 1505600 0.0068871459 0.0026910716 0.0060808387 + 1505700 0.0034158809 0.0028530913 0.0045343451 + 1505800 0.004750186 0.0024340844 0.0047720665 + 1505900 0.0044044184 0.0022618212 0.0044296209 + 1506000 0.0059852292 0.002275757 0.0052216119 + 1506100 0.0049180553 0.0023111951 0.0047318005 + 1506200 0.0053122389 0.0023261461 0.0049407637 + 1506300 0.005540164 0.0022969425 0.005023742 + 1506400 0.0044421535 0.0022848414 0.0044712138 + 1506500 0.0045910173 0.0024650186 0.00472466 + 1506600 0.0029678411 0.0028482977 0.004309032 + 1506700 0.0059011087 0.0027522343 0.0056566862 + 1506800 0.0062094556 0.0027816633 0.0058378797 + 1506900 0.0046834538 0.0027283652 0.0050335027 + 1507000 0.0064377564 0.0025180422 0.0056866254 + 1507100 0.0051317478 0.0019867926 0.0045125747 + 1507200 0.0034722671 0.0019865039 0.0036955103 + 1507300 0.0058536389 0.0019052749 0.0047863628 + 1507400 0.007367905 0.0020258921 0.0056522829 + 1507500 0.005091641 0.0024659569 0.004971999 + 1507600 0.0038962354 0.0024986301 0.0044163085 + 1507700 0.0056833616 0.0023217916 0.0051190712 + 1507800 0.0046790886 0.0023028329 0.0046058218 + 1507900 0.0056068001 0.0021900065 0.0049496035 + 1508000 0.0057270986 0.0019332008 0.0047520072 + 1508100 0.0049003562 0.0019969272 0.0044088213 + 1508200 0.0049641908 0.002283153 0.0047264656 + 1508300 0.0056139941 0.0025134136 0.0052765514 + 1508400 0.0050142284 0.0024053753 0.0048733159 + 1508500 0.0050884752 0.0022894321 0.004793916 + 1508600 0.0037391449 0.0026972276 0.004537588 + 1508700 0.005847924 0.0024081132 0.0052863882 + 1508800 0.0046783115 0.0025004575 0.004803064 + 1508900 0.0058612726 0.0023170312 0.0052018763 + 1509000 0.0042133066 0.0022552463 0.0043289832 + 1509100 0.0045394656 0.0021880857 0.0044223539 + 1509200 0.0043160076 0.0021466985 0.0042709835 + 1509300 0.0054088679 0.0020215602 0.0046837374 + 1509400 0.0057433408 0.0018501112 0.0046769118 + 1509500 0.0045777781 0.0021932856 0.0044464107 + 1509600 0.0043730526 0.0022295264 0.0043818882 + 1509700 0.0040878597 0.0021007782 0.0041127717 + 1509800 0.0064019997 0.0020199123 0.0051708965 + 1509900 0.004920369 0.0022112102 0.0046329543 + 1510000 0.0043250938 0.0020862418 0.0042149989 + 1510100 0.0046469299 0.0018873627 0.0041745235 + 1510200 0.0041413938 0.0022254086 0.0042637509 + 1510300 0.0051746076 0.0022916508 0.004838528 + 1510400 0.0049909355 0.0023341844 0.0047906604 + 1510500 0.0055920391 0.0023022392 0.0050545709 + 1510600 0.0059822309 0.0025767656 0.0055211449 + 1510700 0.0052249748 0.0025543414 0.0051260087 + 1510800 0.0050048571 0.0020384034 0.0045017315 + 1510900 0.0051532727 0.001982109 0.0045184854 + 1511000 0.003157535 0.0024982925 0.0040523918 + 1511100 0.0046626339 0.0021273302 0.0044222203 + 1511200 0.0066117176 0.0021289698 0.0053831745 + 1511300 0.0053724601 0.0027379717 0.0053822294 + 1511400 0.0063686304 0.0029050801 0.0060396404 + 1511500 0.0042616468 0.0030686449 0.0051661742 + 1511600 0.0046514302 0.0028660752 0.005155451 + 1511700 0.0030872146 0.0025843549 0.0041038434 + 1511800 0.00551199 0.002529563 0.0052424956 + 1511900 0.0066624626 0.0024244852 0.0057036661 + 1512000 0.0046932441 0.0023640688 0.0046740248 + 1512100 0.0043899585 0.0023998791 0.0045605618 + 1512200 0.0047346667 0.0027617529 0.0050920967 + 1512300 0.0061337121 0.0025482623 0.0055671987 + 1512400 0.0049219779 0.0022933987 0.0047159347 + 1512500 0.004733558 0.0021906598 0.0045204579 + 1512600 0.0066262716 0.0026145466 0.0058759147 + 1512700 0.0050500865 0.0031374926 0.0056230821 + 1512800 0.0052034669 0.0030270056 0.005588087 + 1512900 0.0048713191 0.0027322889 0.0051298912 + 1513000 0.0050998461 0.0023608821 0.0048709626 + 1513100 0.0035947177 0.0025309924 0.0043002676 + 1513200 0.004519494 0.0026734714 0.0048979099 + 1513300 0.0048892144 0.0025646955 0.0049711057 + 1513400 0.0049442897 0.002338969 0.0047724865 + 1513500 0.0058350123 0.0018943529 0.004766273 + 1513600 0.0063785907 0.0018104882 0.0049499508 + 1513700 0.0050169731 0.0021432146 0.0046125061 + 1513800 0.0045782202 0.0023272486 0.0045805914 + 1513900 0.0063483127 0.0021363241 0.0052608842 + 1514000 0.0037406842 0.0022503744 0.0040914924 + 1514100 0.0052076132 0.0025594105 0.0051225326 + 1514200 0.0043183582 0.0030104598 0.0051359017 + 1514300 0.0035589451 0.0032078688 0.0049595371 + 1514400 0.0057294244 0.0029336174 0.0057535685 + 1514500 0.0056673592 0.0027114487 0.0055008521 + 1514600 0.0039394312 0.0025887225 0.0045276613 + 1514700 0.0046977238 0.0028460018 0.0051581628 + 1514800 0.0030304196 0.0034129825 0.0049045171 + 1514900 0.0047641793 0.0035162204 0.0058610899 + 1515000 0.0067098611 0.0033933101 0.0066958199 + 1515100 0.0055216592 0.0033137075 0.0060313991 + 1515200 0.0070011508 0.00324889 0.006694769 + 1515300 0.0047151022 0.0028407987 0.005161513 + 1515400 0.0052679757 0.0028875587 0.0054803906 + 1515500 0.0043667397 0.0026115728 0.0047608275 + 1515600 0.0067704084 0.0027909926 0.0061233029 + 1515700 0.0047410533 0.0027470297 0.0050805168 + 1515800 0.0048475361 0.0024983794 0.004884276 + 1515900 0.0057658052 0.001941589 0.0047794463 + 1516000 0.0063034605 0.0019217696 0.0050242541 + 1516100 0.0052012658 0.0023774694 0.0049374674 + 1516200 0.0040880067 0.0024053279 0.0044173937 + 1516300 0.0051613684 0.0026706705 0.0052110315 + 1516400 0.0043263853 0.0027262913 0.004855684 + 1516500 0.0061142855 0.0025891175 0.0055984924 + 1516600 0.0057193019 0.0026051141 0.005420083 + 1516700 0.0041397421 0.0026073491 0.0046448784 + 1516800 0.0043359565 0.0024874463 0.0046215499 + 1516900 0.0050319752 0.002768596 0.0052452712 + 1517000 0.0044742491 0.0031460338 0.0053482032 + 1517100 0.0059663165 0.0028324735 0.0057690198 + 1517200 0.0049882673 0.0025840117 0.0050391745 + 1517300 0.0071620027 0.0024580667 0.0059831149 + 1517400 0.0050849934 0.0023447324 0.0048475026 + 1517500 0.0040152319 0.0022905317 0.0042667786 + 1517600 0.0033882412 0.0021209967 0.0037886466 + 1517700 0.0045394546 0.0020346857 0.0042689485 + 1517800 0.0056146061 0.0018829777 0.0046464167 + 1517900 0.0049890444 0.0019210955 0.0043766408 + 1518000 0.0065520843 0.0019748282 0.0051996822 + 1518100 0.0052118667 0.0019921583 0.0045573739 + 1518200 0.0052967815 0.0018299904 0.004437 + 1518300 0.0052244096 0.0015980403 0.0041694294 + 1518400 0.0053305539 0.0015758832 0.0041995152 + 1518500 0.0050123434 0.0016362264 0.0041032391 + 1518600 0.0044080613 0.0019285912 0.0040981839 + 1518700 0.0049166628 0.002172694 0.004592614 + 1518800 0.0040761055 0.002814155 0.0048203632 + 1518900 0.0045184457 0.0020974566 0.0043213791 + 1519000 0.0070690227 0.001913368 0.0053926526 + 1519100 0.0046433712 0.0021385759 0.0044239851 + 1519200 0.006846257 0.0018851864 0.0052548285 + 1519300 0.0036494832 0.0020104365 0.0038066665 + 1519400 0.0040480394 0.0021488441 0.0041412385 + 1519500 0.0065235807 0.00201613 0.0052269548 + 1519600 0.005788757 0.0025064324 0.0053555862 + 1519700 0.0051429881 0.0029563557 0.0054876701 + 1519800 0.006453313 0.0028372625 0.0060135025 + 1519900 0.008804368 0.0026172457 0.0069506456 + 1520000 0.0064435651 0.0022321964 0.0054036386 + 1520100 0.0054629247 0.0025135654 0.0052023486 + 1520200 0.0057127968 0.0026370471 0.0054488143 + 1520300 0.0054066401 0.0026271139 0.0052881946 + 1520400 0.0049780957 0.0028512557 0.0053014121 + 1520500 0.0050204876 0.003121894 0.0055929153 + 1520600 0.0044173276 0.0030643542 0.0052385076 + 1520700 0.0053155211 0.0025722405 0.0051884735 + 1520800 0.0041616614 0.0021172571 0.0041655748 + 1520900 0.0051705483 0.0019430455 0.0044879248 + 1521000 0.0051771708 0.0023296951 0.0048778339 + 1521100 0.0049211499 0.0024795835 0.004901712 + 1521200 0.0065676518 0.0026569251 0.0058894412 + 1521300 0.0052450625 0.0028770572 0.0054586114 + 1521400 0.0064315911 0.0027022535 0.0058678023 + 1521500 0.006035403 0.0032460925 0.0062166425 + 1521600 0.0058056124 0.0040217218 0.0068791717 + 1521700 0.0068341632 0.0035971614 0.0069608512 + 1521800 0.0055313935 0.0028125234 0.0055350061 + 1521900 0.0051993038 0.0021936166 0.004752649 + 1522000 0.0066222458 0.0023391834 0.00559857 + 1522100 0.0052110745 0.0028122174 0.0053770431 + 1522200 0.0046166611 0.0028382652 0.0051105281 + 1522300 0.0056823838 0.0023981143 0.0051949125 + 1522400 0.0048327478 0.0028107489 0.005189367 + 1522500 0.0050480058 0.0032530792 0.0057376445 + 1522600 0.0067970451 0.0024779927 0.0058234134 + 1522700 0.0070873443 0.0024086059 0.0058969082 + 1522800 0.0059862563 0.0026562027 0.0056025633 + 1522900 0.0036273316 0.0028420704 0.0046273977 + 1523000 0.0046641983 0.0023901877 0.0046858478 + 1523100 0.005761937 0.0024875582 0.0053235115 + 1523200 0.0032955585 0.0030950037 0.0047170364 + 1523300 0.0063920056 0.0027971854 0.0059432506 + 1523400 0.005779443 0.0024008115 0.0052453811 + 1523500 0.004913466 0.0030599057 0.0054782522 + 1523600 0.0052834992 0.0031263213 0.0057267936 + 1523700 0.0052672281 0.0028800962 0.0054725601 + 1523800 0.007626696 0.0025457897 0.0062995541 + 1523900 0.0057381703 0.0026457392 0.0054699949 + 1524000 0.0059372336 0.0024858469 0.005408079 + 1524100 0.005019727 0.0026520058 0.0051226527 + 1524200 0.004491858 0.0022769421 0.0044877785 + 1524300 0.0044660624 0.0019136592 0.0041117993 + 1524400 0.005597545 0.0019232528 0.0046782945 + 1524500 0.003949405 0.0022021767 0.0041460245 + 1524600 0.0039644872 0.0021113019 0.0040625729 + 1524700 0.004013818 0.0019386425 0.0039141935 + 1524800 0.0056993789 0.0018115042 0.0046166673 + 1524900 0.0039602761 0.0024694639 0.0044186622 + 1525000 0.0056239061 0.0026153409 0.0053833572 + 1525100 0.0056658881 0.0026190828 0.0054077621 + 1525200 0.0060170318 0.0029249159 0.0058864237 + 1525300 0.0050628593 0.0029653417 0.0054572177 + 1525400 0.004440378 0.0027678536 0.0049533521 + 1525500 0.0035644163 0.0029686452 0.0047230063 + 1525600 0.0063025417 0.0026283431 0.0057303754 + 1525700 0.0066095765 0.0025407841 0.005793935 + 1525800 0.0061914345 0.0021594536 0.0052068002 + 1525900 0.0056365787 0.0020912127 0.0048654663 + 1526000 0.0052570331 0.002275318 0.0048627639 + 1526100 0.0055454895 0.0023111935 0.0050406141 + 1526200 0.0056134852 0.0024527083 0.0052155956 + 1526300 0.0049505998 0.0024303445 0.0048669679 + 1526400 0.0063436207 0.0021751979 0.0052974487 + 1526500 0.0061182594 0.0019162951 0.0049276259 + 1526600 0.0061746854 0.0024253074 0.0054644104 + 1526700 0.0033382485 0.0029008603 0.0045439045 + 1526800 0.004904667 0.0022731766 0.0046871924 + 1526900 0.0041591508 0.002019344 0.0040664261 + 1527000 0.0056691784 0.0023020349 0.0050923336 + 1527100 0.0036506614 0.0027199229 0.0045167329 + 1527200 0.0046501066 0.0028555807 0.0051443051 + 1527300 0.0060783256 0.0024348375 0.0054265134 + 1527400 0.0045621669 0.0020697467 0.0043151882 + 1527500 0.0062111954 0.0020592098 0.0051162826 + 1527600 0.0062695462 0.0021537206 0.0052395128 + 1527700 0.0045533549 0.0020650329 0.0043061372 + 1527800 0.0059589779 0.0018617589 0.0047946934 + 1527900 0.0047566112 0.0020586012 0.0043997457 + 1528000 0.0046843009 0.0024850844 0.0047906387 + 1528100 0.0046662728 0.0021564955 0.0044531767 + 1528200 0.0046445498 0.0019189003 0.0042048897 + 1528300 0.0043402479 0.0019490497 0.0040852654 + 1528400 0.003908136 0.0024318138 0.0043553495 + 1528500 0.0051572649 0.0024381448 0.0049764862 + 1528600 0.0067530171 0.0025456971 0.0058694477 + 1528700 0.0065737754 0.0025231539 0.0057586839 + 1528800 0.0052736952 0.0023810339 0.0049766808 + 1528900 0.0053113245 0.0026444526 0.0052586202 + 1529000 0.0031294504 0.0025086225 0.0040488989 + 1529100 0.0054655146 0.0020197348 0.0047097927 + 1529200 0.0057010971 0.0021682527 0.0049742614 + 1529300 0.0056067117 0.0029889069 0.0057484603 + 1529400 0.0042490678 0.0032349073 0.0053262453 + 1529500 0.0048596395 0.0031183885 0.0055102423 + 1529600 0.0038864432 0.0026401058 0.0045529646 + 1529700 0.0044372602 0.0018869476 0.0040709116 + 1529800 0.0056578314 0.0018578868 0.0046426006 + 1529900 0.004646665 0.0017447214 0.0040317518 + 1530000 0.0049179998 0.0017472191 0.0041677971 + 1530100 0.0049670749 0.0022327246 0.0046774568 + 1530200 0.0044606768 0.0024750193 0.0046705087 + 1530300 0.0050395585 0.0025413105 0.0050217182 + 1530400 0.0043000699 0.0024226919 0.0045391326 + 1530500 0.0066614187 0.0025130737 0.0057917407 + 1530600 0.0070518647 0.0027064789 0.0061773185 + 1530700 0.0053949502 0.0031448532 0.0058001803 + 1530800 0.0050898928 0.0030697086 0.0055748903 + 1530900 0.0047332277 0.0024066583 0.0047362939 + 1531000 0.0037568753 0.0022509714 0.0041000585 + 1531100 0.0047901565 0.0022381289 0.0045957841 + 1531200 0.0042636233 0.0018798702 0.0039783723 + 1531300 0.005150097 0.0013995626 0.003934376 + 1531400 0.0048598463 0.001567074 0.0039590297 + 1531500 0.0060367097 0.0021073591 0.0050785522 + 1531600 0.00481401 0.0023610481 0.0047304437 + 1531700 0.0041505908 0.0020656414 0.0041085103 + 1531800 0.0037466095 0.0020010158 0.0038450501 + 1531900 0.0047464373 0.0017798739 0.004116011 + 1532000 0.0047386024 0.0017927779 0.0041250588 + 1532100 0.0056464559 0.0019803089 0.0047594239 + 1532200 0.0052729266 0.0019005988 0.0044958674 + 1532300 0.0053523605 0.0019873421 0.004621707 + 1532400 0.0058223495 0.0024460526 0.0053117403 + 1532500 0.006083729 0.0027528337 0.0057471691 + 1532600 0.0046483318 0.0030605909 0.0053484417 + 1532700 0.0055563113 0.0028029732 0.0055377202 + 1532800 0.0052574377 0.0024691484 0.0050567935 + 1532900 0.0064059441 0.0024053876 0.0055583132 + 1533000 0.0059502382 0.0022792857 0.0052079186 + 1533100 0.0055956693 0.0020038494 0.0047579679 + 1533200 0.0073974004 0.0023211018 0.0059620098 + 1533300 0.0059842801 0.0028718073 0.0058171952 + 1533400 0.0061769436 0.0030621368 0.0061023512 + 1533500 0.0045311863 0.0027811304 0.0050113237 + 1533600 0.0064067045 0.0020003802 0.0051536801 + 1533700 0.0047785441 0.0019842618 0.0043362015 + 1533800 0.0041047173 0.0018056059 0.0038258964 + 1533900 0.0052892213 0.0021534749 0.0047567636 + 1534000 0.0037061436 0.0023537041 0.0041778216 + 1534100 0.0035887389 0.0019769107 0.0037432431 + 1534200 0.0059322438 0.0022206342 0.0051404105 + 1534300 0.0060186234 0.0023957672 0.0053580584 + 1534400 0.0048767919 0.002475283 0.004875579 + 1534500 0.0053961712 0.0027737105 0.0054296386 + 1534600 0.0044365491 0.0025869044 0.0047705184 + 1534700 0.0043450812 0.0025153969 0.0046539916 + 1534800 0.0040576479 0.0027553798 0.0047525034 + 1534900 0.0045892899 0.0030190549 0.005277846 + 1535000 0.0052006753 0.0024124116 0.004972119 + 1535100 0.0056405958 0.0021904489 0.0049666797 + 1535200 0.0041278047 0.0024382849 0.0044699388 + 1535300 0.0046055612 0.0026180448 0.0048848445 + 1535400 0.0058656196 0.002513991 0.0054009756 + 1535500 0.0050846172 0.0029252944 0.0054278794 + 1535600 0.0044171463 0.0030169608 0.005191025 + 1535700 0.0045227573 0.0027173102 0.0049433548 + 1535800 0.0060488187 0.0025968294 0.0055739824 + 1535900 0.0060051961 0.0024250976 0.0053807801 + 1536000 0.0056132688 0.0020521669 0.0048149477 + 1536100 0.0057611999 0.0019552126 0.0047908031 + 1536200 0.0042944587 0.0026999818 0.0048136607 + 1536300 0.0054943969 0.0029676081 0.0056718816 + 1536400 0.0045594472 0.0030257561 0.005269859 + 1536500 0.0050765243 0.0025718648 0.0050704666 + 1536600 0.0061933073 0.0027138874 0.0057621559 + 1536700 0.0054596755 0.0032772193 0.0059644034 + 1536800 0.006016262 0.0031211556 0.0060822845 + 1536900 0.0036760346 0.0032931116 0.0051024099 + 1537000 0.0052384431 0.0033360067 0.0059143029 + 1537100 0.0045876789 0.0036970032 0.0059550014 + 1537200 0.0053059397 0.0035072117 0.0061187289 + 1537300 0.003220545 0.003221151 0.004806263 + 1537400 0.0052182023 0.0027828608 0.0053511947 + 1537500 0.0037282144 0.0027495561 0.0045845366 + 1537600 0.0062517397 0.0024589749 0.005536003 + 1537700 0.0042136899 0.0021815656 0.0042554911 + 1537800 0.0055582808 0.0021442065 0.0048799229 + 1537900 0.0032371796 0.0027200582 0.0043133576 + 1538000 0.0050785226 0.0028036007 0.0053031861 + 1538100 0.0034304305 0.002791869 0.004480284 + 1538200 0.0055764741 0.0025072339 0.0052519047 + 1538300 0.0047773702 0.0026846791 0.005036041 + 1538400 0.0039691481 0.0029860913 0.0049396564 + 1538500 0.0058806784 0.0028701222 0.0057645186 + 1538600 0.0064988594 0.0030722133 0.0062708706 + 1538700 0.0046440358 0.0034666427 0.0057523791 + 1538800 0.0045858782 0.0035587958 0.0058159077 + 1538900 0.0043007734 0.0039314831 0.0060482701 + 1539000 0.0047219812 0.0035056813 0.0058297814 + 1539100 0.0065666026 0.0030348935 0.0062668932 + 1539200 0.0059687332 0.0030912167 0.0060289526 + 1539300 0.0044617291 0.0033982708 0.0055942781 + 1539400 0.005295409 0.003416013 0.0060223471 + 1539500 0.0043528778 0.0040012211 0.0061436532 + 1539600 0.0056599921 0.0038689584 0.0066547358 + 1539700 0.0046005107 0.0030331443 0.0052974582 + 1539800 0.0056559297 0.0024883643 0.0052721422 + 1539900 0.005189098 0.0023233805 0.0048773896 + 1540000 0.0047314962 0.0024354863 0.0047642695 + 1540100 0.0049421291 0.0025955771 0.0050280313 + 1540200 0.0053057455 0.0025058668 0.0051172884 + 1540300 0.0044788174 0.0023882271 0.004592645 + 1540400 0.007502924 0.0021672956 0.005860141 + 1540500 0.0052952544 0.002340476 0.004946734 + 1540600 0.0053949699 0.002576816 0.0052321528 + 1540700 0.0052957744 0.0028037649 0.0054102788 + 1540800 0.0048021638 0.0027240799 0.0050876449 + 1540900 0.0059612221 0.0029010782 0.0058351172 + 1541000 0.0056114406 0.0026858834 0.0054477644 + 1541100 0.0072871619 0.0023714239 0.0059580739 + 1541200 0.0055083862 0.0022910696 0.0050022285 + 1541300 0.0047483457 0.0022072333 0.0045443097 + 1541400 0.0042949546 0.0022330614 0.0043469844 + 1541500 0.0040706492 0.0022069037 0.0042104263 + 1541600 0.0040117505 0.0021802991 0.0041548326 + 1541700 0.0048830689 0.0023332904 0.0047366759 + 1541800 0.0044249173 0.0021279203 0.0043058093 + 1541900 0.0052062239 0.0025363907 0.0050988291 + 1542000 0.0053637031 0.0027982366 0.0054381842 + 1542100 0.0048336705 0.0030159773 0.0053950495 + 1542200 0.0043549655 0.0028000859 0.0049435456 + 1542300 0.0067298074 0.0024814318 0.0057937589 + 1542400 0.0053571844 0.0024453718 0.005082111 + 1542500 0.0053644378 0.0024175472 0.0050578564 + 1542600 0.0035531713 0.0029393433 0.0046881698 + 1542700 0.0043225841 0.0029686156 0.0050961374 + 1542800 0.005048496 0.0026798668 0.0051646735 + 1542900 0.0061862953 0.0024221203 0.0054669375 + 1543000 0.0044670668 0.0024924781 0.0046911125 + 1543100 0.005617679 0.0018544262 0.0046193776 + 1543200 0.0036141236 0.0017456333 0.0035244598 + 1543300 0.0037274192 0.0018219668 0.003656556 + 1543400 0.0049452118 0.00188866 0.0043226315 + 1543500 0.0056201626 0.0019696728 0.0047358465 + 1543600 0.0052987459 0.0022414983 0.0048494748 + 1543700 0.0050464951 0.0027391525 0.0052229743 + 1543800 0.0056082399 0.0025396286 0.0052999341 + 1543900 0.0054264744 0.0023338954 0.0050047383 + 1544000 0.0068712321 0.0024148014 0.005796736 + 1544100 0.0055742351 0.002334605 0.0050781738 + 1544200 0.0048009681 0.0021634979 0.0045264744 + 1544300 0.0051251353 0.0018358571 0.0043583847 + 1544400 0.0030516498 0.002039045 0.0035410289 + 1544500 0.0059085165 0.0020213919 0.0049294899 + 1544600 0.0063649084 0.0024790575 0.0056117859 + 1544700 0.0042073296 0.0027951202 0.0048659152 + 1544800 0.0039973214 0.0030382264 0.005005658 + 1544900 0.0056403142 0.0024612086 0.0052373008 + 1545000 0.0045892789 0.0023989823 0.004657768 + 1545100 0.0039779699 0.0022177581 0.0041756651 + 1545200 0.0057165113 0.0019594178 0.0047730132 + 1545300 0.005459403 0.0023566146 0.0050436645 + 1545400 0.0050272794 0.0027243851 0.0051987492 + 1545500 0.0050126206 0.0025947986 0.0050619478 + 1545600 0.0064385346 0.0019655234 0.0051344896 + 1545700 0.0053679445 0.0014485508 0.004090586 + 1545800 0.0065311262 0.0016569879 0.0048715266 + 1545900 0.0057218881 0.0022519928 0.0050682345 + 1546000 0.0048462785 0.0024922621 0.0048775398 + 1546100 0.0057229505 0.0022357546 0.0050525193 + 1546200 0.0034166889 0.0025273329 0.0042089845 + 1546300 0.0042708822 0.0024036579 0.0045057328 + 1546400 0.0038310417 0.0022377344 0.0041233252 + 1546500 0.0051796736 0.0018595963 0.0044089669 + 1546600 0.0050185507 0.0020047226 0.0044747906 + 1546700 0.0058310663 0.0020748851 0.0049448631 + 1546800 0.0066487764 0.0022222418 0.0054946864 + 1546900 0.0047102549 0.0024343027 0.0047526313 + 1547000 0.0039754469 0.0026486735 0.0046053388 + 1547100 0.004776169 0.0026391783 0.004989949 + 1547200 0.0040944806 0.002560574 0.0045758262 + 1547300 0.0049920377 0.0024429477 0.0048999663 + 1547400 0.0046437303 0.0023559648 0.0046415508 + 1547500 0.0047848301 0.0024245684 0.004779602 + 1547600 0.0048020494 0.0023836883 0.004747197 + 1547700 0.0054041524 0.0024660056 0.0051258619 + 1547800 0.0048506528 0.0023814311 0.0047688618 + 1547900 0.0057378166 0.0028562737 0.0056803553 + 1548000 0.0062808016 0.0035944731 0.0066858052 + 1548100 0.0057324949 0.0032486289 0.0060700912 + 1548200 0.0061447283 0.0034309212 0.0064552796 + 1548300 0.0055485066 0.003053987 0.0057848926 + 1548400 0.0058792087 0.0024700149 0.005363688 + 1548500 0.0038137501 0.0020529903 0.0039300705 + 1548600 0.0039580715 0.0021777208 0.0041258342 + 1548700 0.0058484777 0.0019927524 0.0048713 + 1548800 0.0046404796 0.0023345067 0.0046184927 + 1548900 0.004880629 0.0024369251 0.0048391097 + 1549000 0.0049581379 0.002264049 0.0047043825 + 1549100 0.0058617489 0.0021892915 0.005074371 + 1549200 0.0071130205 0.0027671292 0.006268069 + 1549300 0.0057127931 0.0031527596 0.0059645249 + 1549400 0.0046773702 0.0033128605 0.0056150036 + 1549500 0.0058869543 0.0035221725 0.0064196578 + 1549600 0.0044032841 0.0031282783 0.0052955197 + 1549700 0.0052945881 0.0028112756 0.0054172057 + 1549800 0.0054552953 0.0029213875 0.0056064156 + 1549900 0.004486332 0.0026948533 0.0049029698 + 1550000 0.0068150165 0.0024560388 0.0058103047 + 1550100 0.0060611588 0.0021452097 0.0051284363 + 1550200 0.0042742071 0.0022612974 0.0043650087 + 1550300 0.0059620084 0.0022047047 0.0051391307 + 1550400 0.0073179611 0.0024189681 0.0060207771 + 1550500 0.0047407546 0.0023341974 0.0046675375 + 1550600 0.0050721489 0.0022709805 0.0047674288 + 1550700 0.0054047912 0.0022913658 0.0049515365 + 1550800 0.0068606649 0.0020794296 0.0054561632 + 1550900 0.00510792 0.0021099188 0.0046239732 + 1551000 0.0065754979 0.0022508274 0.0054872053 + 1551100 0.0048129992 0.0021545887 0.0045234868 + 1551200 0.0048803915 0.0019567834 0.0043588511 + 1551300 0.0063444377 0.0023898241 0.005512477 + 1551400 0.0052559711 0.0026481821 0.0052351053 + 1551500 0.0048080306 0.002207671 0.0045741236 + 1551600 0.0061594833 0.0023519662 0.0053835869 + 1551700 0.0059474991 0.0023575313 0.005284816 + 1551800 0.0038459615 0.0024641166 0.0043570508 + 1551900 0.003967909 0.0022303829 0.0041833382 + 1552000 0.0040002546 0.0019093305 0.0038782058 + 1552100 0.0045772302 0.0020988722 0.0043517277 + 1552200 0.005903001 0.0024147057 0.005320089 + 1552300 0.0042005907 0.0031686023 0.0052360805 + 1552400 0.0067859335 0.0027698477 0.0061097994 + 1552500 0.005333934 0.0027353543 0.0053606499 + 1552600 0.0037187738 0.003144417 0.004974751 + 1552700 0.0041116472 0.0029711369 0.0049948383 + 1552800 0.0043017934 0.0029289084 0.0050461973 + 1552900 0.0039455716 0.0032461781 0.0051881391 + 1553000 0.0063030407 0.0028528994 0.0059551773 + 1553100 0.0058810835 0.002806705 0.0057013008 + 1553200 0.0055789538 0.0032952544 0.0060411457 + 1553300 0.0056369794 0.0030868769 0.0058613277 + 1553400 0.0056271892 0.0030613168 0.005830949 + 1553500 0.004173267 0.0033753112 0.0054293411 + 1553600 0.0056327215 0.0037012504 0.0064736055 + 1553700 0.0062766824 0.0034808355 0.0065701401 + 1553800 0.0061902007 0.0029304415 0.0059771809 + 1553900 0.0049838673 0.0025688157 0.0050218129 + 1554000 0.0060196502 0.0024950424 0.005457839 + 1554100 0.0036554784 0.0024019687 0.0042011494 + 1554200 0.0058559387 0.0027513148 0.0056335346 + 1554300 0.0050440574 0.0029763478 0.0054589698 + 1554400 0.0053896725 0.0028583144 0.0055110438 + 1554500 0.0059704635 0.0025452424 0.0054838299 + 1554600 0.0060872647 0.0022397093 0.0052357849 + 1554700 0.0043860104 0.0022637448 0.0044224843 + 1554800 0.0039856532 0.0025823078 0.0045439964 + 1554900 0.0045020751 0.0023307619 0.004546627 + 1555000 0.0048567131 0.0020514231 0.0044418366 + 1555100 0.005789118 0.0024944885 0.00534382 + 1555200 0.0065579323 0.0021763634 0.0054040957 + 1555300 0.0045715676 0.0024603376 0.0047104061 + 1555400 0.0045825881 0.0025757797 0.0048312722 + 1555500 0.0051604541 0.002298897 0.004838808 + 1555600 0.0050952206 0.0024582895 0.0049660934 + 1555700 0.0072234955 0.0029532156 0.0065085298 + 1555800 0.0060793711 0.0035498309 0.0065420214 + 1555900 0.0050322491 0.0034919197 0.0059687298 + 1556000 0.0049347873 0.0034916693 0.00592051 + 1556100 0.0061986383 0.0033352973 0.0063861895 + 1556200 0.0056588048 0.0030602233 0.0058454163 + 1556300 0.0046641748 0.0030563036 0.0053519521 + 1556400 0.0033796752 0.0026825998 0.0043460337 + 1556500 0.0033744973 0.0027053653 0.0043662507 + 1556600 0.0037945871 0.0026460385 0.0045136868 + 1556700 0.0051096531 0.002235379 0.0047502864 + 1556800 0.0051468105 0.0022065536 0.0047397494 + 1556900 0.0047415969 0.0020493277 0.0043830824 + 1557000 0.0062220732 0.0021978863 0.005260313 + 1557100 0.0052487852 0.0027405498 0.0053239362 + 1557200 0.0064766972 0.0027412408 0.0059289902 + 1557300 0.0045061242 0.0022226432 0.0044405011 + 1557400 0.005163344 0.0020431062 0.0045844395 + 1557500 0.0056629086 0.0023734926 0.0051607055 + 1557600 0.0053463372 0.0028601809 0.0054915812 + 1557700 0.0058381951 0.0034743464 0.006347833 + 1557800 0.0061381107 0.0029386684 0.0059597697 + 1557900 0.0049495903 0.0021870902 0.0046232167 + 1558000 0.0044902721 0.0019046302 0.0041146859 + 1558100 0.0061448199 0.0017423428 0.0047667464 + 1558200 0.004582272 0.0022872704 0.0045426075 + 1558300 0.0051808038 0.0023708701 0.0049207969 + 1558400 0.0062083088 0.0019318765 0.0049875285 + 1558500 0.0041053254 0.0022256818 0.0042462716 + 1558600 0.0053351157 0.0027167511 0.0053426283 + 1558700 0.0061458786 0.0028337817 0.0058587063 + 1558800 0.0071449247 0.0025891125 0.0061057552 + 1558900 0.0051045259 0.0027040573 0.0052164412 + 1559000 0.0040365798 0.0028150759 0.00480183 + 1559100 0.0056787059 0.0024221651 0.0052171532 + 1559200 0.0053831059 0.0018025774 0.0044520749 + 1559300 0.0066539519 0.0021292969 0.0054042889 + 1559400 0.0058757232 0.0024386761 0.0053306336 + 1559500 0.0050676204 0.0026458687 0.0051400881 + 1559600 0.0048391121 0.0026633958 0.0050451462 + 1559700 0.0053189563 0.0029545418 0.0055724656 + 1559800 0.0054166245 0.0030164685 0.0056824633 + 1559900 0.0037033116 0.0030853407 0.0049080644 + 1560000 0.0053943371 0.0028547781 0.0055098034 + 1560100 0.0029834471 0.0028123228 0.0042807382 + 1560200 0.0042894986 0.0026426565 0.0047538941 + 1560300 0.0064604554 0.0024969998 0.0056767552 + 1560400 0.0050140155 0.0021671856 0.0046350214 + 1560500 0.003504484 0.0016874899 0.0034123532 + 1560600 0.0057532662 0.0017116558 0.0045433415 + 1560700 0.0046680074 0.0022116892 0.0045092241 + 1560800 0.00602944 0.0022149023 0.0051825173 + 1560900 0.0058560476 0.0024796307 0.0053619041 + 1561000 0.0046132358 0.0024955075 0.0047660845 + 1561100 0.0051114029 0.0028757402 0.0053915089 + 1561200 0.0060763317 0.0026177415 0.005608436 + 1561300 0.0064760006 0.0025056491 0.0056930557 + 1561400 0.0058978789 0.0024234832 0.0053263455 + 1561500 0.003324553 0.0022381494 0.0038744529 + 1561600 0.0043720502 0.0014729508 0.0036248192 + 1561700 0.0051592263 0.0014762713 0.004015578 + 1561800 0.0065201896 0.0015278728 0.0047370286 + 1561900 0.0037168251 0.0021981998 0.0040275746 + 1562000 0.0033075365 0.0023049965 0.0039329246 + 1562100 0.0049463723 0.0019058826 0.0043404253 + 1562200 0.0048886262 0.0016534838 0.0040596045 + 1562300 0.004112029 0.0023251041 0.0043489933 + 1562400 0.0054037442 0.0021576367 0.004817292 + 1562500 0.0051020424 0.0020275755 0.004538737 + 1562600 0.005287993 0.0024466815 0.0050493655 + 1562700 0.0050875651 0.0022098629 0.0047138988 + 1562800 0.0044305175 0.0022927022 0.0044733475 + 1562900 0.0048936347 0.0020511102 0.0044596961 + 1563000 0.004107309 0.0017493355 0.0037709016 + 1563100 0.0054576586 0.0016832239 0.0043694153 + 1563200 0.0050083842 0.0023222491 0.0047873132 + 1563300 0.0052181419 0.0023700212 0.0049383254 + 1563400 0.0042449163 0.0025059364 0.0045952311 + 1563500 0.0036693285 0.0020546483 0.0038606459 + 1563600 0.0054620977 0.0018977481 0.0045861243 + 1563700 0.0052515962 0.0024227831 0.0050075531 + 1563800 0.0047919379 0.002541243 0.004899775 + 1563900 0.0058912475 0.0026100128 0.0055096112 + 1564000 0.0047737614 0.0027180264 0.0050676121 + 1564100 0.0065999803 0.0024902449 0.0057386728 + 1564200 0.0059571064 0.0021232645 0.0050552779 + 1564300 0.005136606 0.0022621795 0.0047903528 + 1564400 0.0065143763 0.0025362183 0.0057425129 + 1564500 0.0069443356 0.0026929474 0.0061108626 + 1564600 0.0054567331 0.0027331937 0.0054189295 + 1564700 0.0054136664 0.002739827 0.005404366 + 1564800 0.0042240751 0.0026524062 0.0047314431 + 1564900 0.0036058019 0.0026086845 0.0043834151 + 1565000 0.0036864791 0.0025970483 0.0044114872 + 1565100 0.005494424 0.0024963873 0.0052006741 + 1565200 0.0054126595 0.0021718431 0.0048358864 + 1565300 0.004781933 0.0024118025 0.0047654102 + 1565400 0.0066804083 0.0022593598 0.0055473733 + 1565500 0.0059880936 0.0021094329 0.0050566977 + 1565600 0.0044684108 0.0025228103 0.0047221062 + 1565700 0.0035390844 0.0026850348 0.0044269279 + 1565800 0.0063918527 0.0027537403 0.0058997303 + 1565900 0.0056522988 0.0031262197 0.0059082105 + 1566000 0.0065757245 0.0032969284 0.0065334178 + 1566100 0.006981817 0.0029889834 0.0064253465 + 1566200 0.0057965687 0.0032229029 0.0060759015 + 1566300 0.0068092126 0.0028646491 0.0062160584 + 1566400 0.0067732316 0.0024631472 0.0057968471 + 1566500 0.0052156608 0.002143086 0.004710169 + 1566600 0.0047840926 0.0021424928 0.0044971634 + 1566700 0.0045212165 0.0019185175 0.0041438037 + 1566800 0.0072990845 0.0018253797 0.0054178979 + 1566900 0.0059346915 0.0025360738 0.0054570548 + 1567000 0.0054613987 0.0027317071 0.0054197393 + 1567100 0.0040731545 0.0027095807 0.0047143364 + 1567200 0.0031983198 0.0024424348 0.0040166078 + 1567300 0.0047456571 0.0022037633 0.0045395164 + 1567400 0.0037431426 0.0017526463 0.0035949743 + 1567500 0.0039938471 0.0019774415 0.0039431632 + 1567600 0.0040981705 0.0021447974 0.0041618656 + 1567700 0.0045437715 0.0018898239 0.0041262114 + 1567800 0.0058184507 0.0019729202 0.0048366889 + 1567900 0.0041097947 0.001869168 0.0038919576 + 1568000 0.0039392863 0.0021096197 0.0040484872 + 1568100 0.0054326999 0.0022428513 0.0049167583 + 1568200 0.0057805005 0.0026171567 0.0054622467 + 1568300 0.0052090595 0.0028405759 0.0054044098 + 1568400 0.0054121698 0.0026289274 0.0052927297 + 1568500 0.0055837852 0.0027745399 0.0055228092 + 1568600 0.00434474 0.0029221424 0.0050605691 + 1568700 0.0052078888 0.0026219008 0.0051851586 + 1568800 0.0053163975 0.0026798166 0.005296481 + 1568900 0.0055816052 0.0025323858 0.0052795821 + 1569000 0.0044106278 0.0024064009 0.0045772568 + 1569100 0.0054990646 0.0026664611 0.005373032 + 1569200 0.0049140319 0.0024248775 0.0048435026 + 1569300 0.0049580011 0.0027672307 0.0052074969 + 1569400 0.0042030815 0.0030060136 0.0050747177 + 1569500 0.0059264225 0.002915038 0.0058319491 + 1569600 0.0062159723 0.0027150678 0.0057744916 + 1569700 0.0048658249 0.0024803496 0.0048752478 + 1569800 0.0057700552 0.0023514876 0.0051914366 + 1569900 0.0067077341 0.0026309511 0.005932414 + 1570000 0.0045128728 0.0029261631 0.0051473426 + 1570100 0.0045452082 0.0026638327 0.0049009273 + 1570200 0.0062834287 0.0024806428 0.0055732679 + 1570300 0.0041298428 0.0025427917 0.0045754486 + 1570400 0.0039212999 0.0022865574 0.0042165722 + 1570500 0.0045958171 0.0017474231 0.0040094269 + 1570600 0.0034983579 0.0017308678 0.0034527158 + 1570700 0.0030155423 0.0016265628 0.003110775 + 1570800 0.0045003671 0.0016679825 0.0038830069 + 1570900 0.0035359954 0.001965702 0.0037060747 + 1571000 0.0047528582 0.0020249815 0.0043642789 + 1571100 0.0050535371 0.0016258908 0.0041131786 + 1571200 0.0042375116 0.0017167317 0.0038023819 + 1571300 0.0045081227 0.0021382498 0.0043570915 + 1571400 0.00532203 0.0022294987 0.0048489353 + 1571500 0.004303946 0.0024268502 0.0045451987 + 1571600 0.0056446596 0.0024287463 0.0052069771 + 1571700 0.0060543423 0.0028381494 0.005818021 + 1571800 0.0057587177 0.0028587335 0.0056931024 + 1571900 0.00630568 0.0028820766 0.0059856535 + 1572000 0.0059707219 0.0023682508 0.0053069655 + 1572100 0.0069188116 0.0022075801 0.0056129327 + 1572200 0.0041112017 0.0020822387 0.0041057208 + 1572300 0.0039540173 0.0019885155 0.0039346334 + 1572400 0.0051416873 0.0021287541 0.0046594283 + 1572500 0.004861589 0.0018238928 0.0042167062 + 1572600 0.0050738242 0.0017600456 0.0042573184 + 1572700 0.0036295124 0.0020809909 0.0038673915 + 1572800 0.0048043562 0.0018357934 0.0042004374 + 1572900 0.0062156645 0.001740161 0.0047994334 + 1573000 0.0053099047 0.0022730991 0.0048865678 + 1573100 0.0045835778 0.002566298 0.0048222777 + 1573200 0.0043067909 0.0024991601 0.0046189087 + 1573300 0.0054617574 0.0022597692 0.004947978 + 1573400 0.0054997375 0.0020974263 0.0048043284 + 1573500 0.0050778859 0.0022748968 0.0047741688 + 1573600 0.0046495315 0.0023916947 0.004680136 + 1573700 0.0051112842 0.0022737852 0.0047894954 + 1573800 0.0047751819 0.0022492778 0.0045995627 + 1573900 0.0050240679 0.0021429441 0.0046157275 + 1574000 0.0044027008 0.0023841149 0.0045510692 + 1574100 0.0052813286 0.0025369493 0.0051363532 + 1574200 0.0038235925 0.00269673 0.0045786545 + 1574300 0.0060283539 0.0022076039 0.0051746844 + 1574400 0.0055522479 0.0019697879 0.0047025349 + 1574500 0.004709195 0.0018530358 0.0041708427 + 1574600 0.0041150988 0.002099736 0.0041251362 + 1574700 0.005962078 0.0023489209 0.0052833812 + 1574800 0.0044737432 0.0026265761 0.0048284965 + 1574900 0.0058098084 0.0025951479 0.005454663 + 1575000 0.005086831 0.0023470515 0.0048507261 + 1575100 0.0050521718 0.0019136882 0.004400304 + 1575200 0.0064068723 0.0017463165 0.004899699 + 1575300 0.0074661913 0.0017365152 0.0054112812 + 1575400 0.0057314401 0.0019425154 0.0047634586 + 1575500 0.0034561004 0.0022305427 0.0039315921 + 1575600 0.0036242758 0.0022668681 0.0040506914 + 1575700 0.0052200966 0.0022867425 0.0048560088 + 1575800 0.0038415031 0.0024084226 0.0042991624 + 1575900 0.0046379747 0.0020795594 0.0043623126 + 1576000 0.0052536871 0.0023309655 0.0049167646 + 1576100 0.0062096642 0.0025646648 0.0056209839 + 1576200 0.0040209614 0.0034101284 0.0053891954 + 1576300 0.004485672 0.003158786 0.0053665777 + 1576400 0.0055058801 0.0025880959 0.0052980212 + 1576500 0.0038356988 0.0026330796 0.0045209626 + 1576600 0.00446593 0.0026105917 0.0048086666 + 1576700 0.0042969077 0.0020267962 0.0041416805 + 1576800 0.0053137641 0.0017290917 0.00434446 + 1576900 0.0072723812 0.001654251 0.0052336261 + 1577000 0.0064484089 0.0020587501 0.0052325763 + 1577100 0.0059213921 0.0021254348 0.00503987 + 1577200 0.0067100271 0.0022116545 0.005514246 + 1577300 0.0051746851 0.0025621729 0.0051090882 + 1577400 0.0034283029 0.002481416 0.0041687838 + 1577500 0.0056802385 0.0023391018 0.0051348442 + 1577600 0.0047647146 0.0023913012 0.0047364342 + 1577700 0.0048464673 0.0021017696 0.0044871402 + 1577800 0.0047436159 0.0022311365 0.004565885 + 1577900 0.0052610035 0.0025091337 0.0050985339 + 1578000 0.0069154759 0.0028711885 0.0062748993 + 1578100 0.0058300435 0.0032821841 0.0061516586 + 1578200 0.0061577328 0.0026032668 0.0056340259 + 1578300 0.004500639 0.0023725588 0.0045877171 + 1578400 0.0058833786 0.0023634342 0.0052591597 + 1578500 0.0043669747 0.0023305084 0.0044798788 + 1578600 0.0051319934 0.0020414369 0.0045673399 + 1578700 0.0044789875 0.0020716588 0.0042761604 + 1578800 0.0042863337 0.0023776294 0.0044873092 + 1578900 0.0055069541 0.0022787101 0.0049891641 + 1579000 0.0037802237 0.0020431861 0.003903765 + 1579100 0.0047394563 0.0023391254 0.0046718265 + 1579200 0.0049292087 0.0026474081 0.005073503 + 1579300 0.006083082 0.0023799971 0.005374014 + 1579400 0.0032993836 0.0025564925 0.0041804079 + 1579500 0.0064683929 0.0018775994 0.0050612615 + 1579600 0.0040112308 0.0021520968 0.0041263745 + 1579700 0.0046889601 0.0027848336 0.0050926811 + 1579800 0.0043447138 0.0027557918 0.0048942056 + 1579900 0.0044928614 0.0029750638 0.0051863939 + 1580000 0.0038981229 0.0023674262 0.0042860336 + 1580100 0.0059470065 0.0018431199 0.0047701621 + 1580200 0.0039590356 0.002059016 0.0040076039 + 1580300 0.0054562234 0.0022127748 0.0048982597 + 1580400 0.0061112293 0.0025707318 0.0055786024 + 1580500 0.004008796 0.0033446527 0.0053177319 + 1580600 0.0078078854 0.0028807078 0.0067236514 + 1580700 0.0050900849 0.0031580415 0.0056633177 + 1580800 0.0056192541 0.0024851053 0.0052508319 + 1580900 0.0061770508 0.0026643365 0.0057046037 + 1581000 0.0041861657 0.0028545405 0.004914919 + 1581100 0.0043756765 0.0025549116 0.0047085649 + 1581200 0.0048187427 0.002423392 0.0047951169 + 1581300 0.0046161517 0.0024415751 0.0047135872 + 1581400 0.0060530554 0.0021826275 0.0051618657 + 1581500 0.0038255 0.0027125782 0.0045954415 + 1581600 0.004768916 0.0026477711 0.004994972 + 1581700 0.005294809 0.0021363182 0.004742357 + 1581800 0.0033624134 0.0023547415 0.0040096794 + 1581900 0.0041861643 0.0027583688 0.0048187465 + 1582000 0.0052737829 0.0027099827 0.0053056727 + 1582100 0.0056531599 0.002820329 0.0056027437 + 1582200 0.0048934865 0.002916229 0.0053247418 + 1582300 0.0033678776 0.0029205806 0.0045782079 + 1582400 0.0038996401 0.0026142987 0.0045336528 + 1582500 0.0056473428 0.0023236075 0.005103159 + 1582600 0.0047788168 0.0027813053 0.0051333792 + 1582700 0.005580158 0.0029696602 0.0057161442 + 1582800 0.004260127 0.0029857465 0.0050825277 + 1582900 0.0044169995 0.0026877424 0.0048617344 + 1583000 0.0053527381 0.0020632727 0.0046978235 + 1583100 0.0051047879 0.0019511516 0.0044636643 + 1583200 0.0059609011 0.0022511711 0.0051850522 + 1583300 0.005632859 0.0029107612 0.005683184 + 1583400 0.0078079938 0.0033799998 0.0072229967 + 1583500 0.0057517015 0.0033998798 0.0062307954 + 1583600 0.0044452639 0.0029584633 0.0051463666 + 1583700 0.0059836548 0.0024822532 0.0054273333 + 1583800 0.0057938833 0.0023676505 0.0052193274 + 1583900 0.0063228113 0.0023074655 0.0054194741 + 1584000 0.0068020535 0.0023508953 0.005698781 + 1584100 0.0060404374 0.0024594911 0.0054325189 + 1584200 0.0043835993 0.0025713587 0.0047289115 + 1584300 0.0045482034 0.0027754768 0.0050140457 + 1584400 0.0053580087 0.0026711437 0.0053082886 + 1584500 0.0060460706 0.0021812537 0.005157054 + 1584600 0.0050082232 0.0022469563 0.0047119412 + 1584700 0.0037752998 0.0026236127 0.0044817681 + 1584800 0.0050544222 0.0027387524 0.0052264759 + 1584900 0.005531435 0.0022273997 0.0049499029 + 1585000 0.005414719 0.0021958311 0.0048608881 + 1585100 0.0055551845 0.002049358 0.0047835504 + 1585200 0.0051143281 0.0022188799 0.0047360882 + 1585300 0.0042915859 0.002863436 0.0049757009 + 1585400 0.0054834266 0.0029366314 0.0056355055 + 1585500 0.0051652709 0.0025134822 0.0050557639 + 1585600 0.0061999056 0.0021440065 0.0051955225 + 1585700 0.004740889 0.0021832009 0.0045166073 + 1585800 0.0044443722 0.0018375262 0.0040249906 + 1585900 0.0045403573 0.0019863165 0.0042210236 + 1586000 0.0063990558 0.0025320832 0.0056816185 + 1586100 0.0049777246 0.0025146104 0.0049645843 + 1586200 0.0060957508 0.0023587473 0.0053589997 + 1586300 0.0050651981 0.0020418691 0.0045348963 + 1586400 0.0046640524 0.0022793706 0.0045749589 + 1586500 0.0037270333 0.0029212508 0.00475565 + 1586600 0.0054163193 0.0025312496 0.0051970943 + 1586700 0.0057736291 0.0020467441 0.0048884521 + 1586800 0.0053984903 0.0021577031 0.0048147725 + 1586900 0.0052999602 0.0023506257 0.0049591998 + 1587000 0.0045177308 0.0026478487 0.0048714194 + 1587100 0.0055098064 0.0024560255 0.0051678834 + 1587200 0.0059450728 0.0025748165 0.005500907 + 1587300 0.0062692826 0.0024081259 0.0054937884 + 1587400 0.0057215449 0.0023381184 0.0051541913 + 1587500 0.0045244602 0.0024286617 0.0046555444 + 1587600 0.004614684 0.0028648672 0.005136157 + 1587700 0.0047317468 0.0030058588 0.0053347655 + 1587800 0.0050902961 0.0032189114 0.0057242915 + 1587900 0.0046677896 0.002796949 0.0050943767 + 1588000 0.0055997197 0.0021470682 0.0049031803 + 1588100 0.0029728881 0.0020844838 0.0035477021 + 1588200 0.0061229924 0.0018153351 0.0048289954 + 1588300 0.0038706103 0.0020960023 0.0040010683 + 1588400 0.0049406904 0.0024511254 0.0048828714 + 1588500 0.0048496843 0.0024968872 0.0048838412 + 1588600 0.0057054579 0.0024684781 0.0052766332 + 1588700 0.0042214981 0.0027719042 0.0048496728 + 1588800 0.005123951 0.002703673 0.0052256177 + 1588900 0.0059780483 0.0020877754 0.005030096 + 1589000 0.0066660489 0.0016248491 0.0049057951 + 1589100 0.0051294853 0.0016203838 0.0041450524 + 1589200 0.0045096251 0.0014005214 0.0036201025 + 1589300 0.0040894996 0.00202873 0.0040415305 + 1589400 0.0038344016 0.0023230755 0.0042103201 + 1589500 0.0048318851 0.0018285982 0.0042067917 + 1589600 0.0051506917 0.0015913847 0.0041264908 + 1589700 0.0049701391 0.0018760557 0.004322296 + 1589800 0.0039547183 0.0022484616 0.0041949245 + 1589900 0.0056852281 0.002283386 0.0050815842 + 1590000 0.0051998828 0.0018854349 0.0044447523 + 1590100 0.0060623385 0.0019418049 0.0049256121 + 1590200 0.003868923 0.0022810722 0.0041853077 + 1590300 0.0049183043 0.0021847809 0.0046055088 + 1590400 0.0039340916 0.0018518217 0.0037881324 + 1590500 0.0045992525 0.0024846366 0.0047483312 + 1590600 0.0051232237 0.0023016133 0.0048232 + 1590700 0.0070639969 0.0020372794 0.0055140903 + 1590800 0.0047930505 0.0022512297 0.0046103092 + 1590900 0.0048351173 0.0022913015 0.0046710858 + 1591000 0.005387549 0.0020360191 0.0046877034 + 1591100 0.0048866699 0.0020036224 0.0044087803 + 1591200 0.0044040804 0.0020369531 0.0042045864 + 1591300 0.0042673797 0.0021094425 0.0042097934 + 1591400 0.0046573856 0.0022097231 0.0045020301 + 1591500 0.0052587901 0.0021081032 0.0046964139 + 1591600 0.0068333409 0.0021090135 0.0054722985 + 1591700 0.0039857674 0.0023832782 0.004345023 + 1591800 0.005943727 0.0020003979 0.004925826 + 1591900 0.0045109873 0.001762029 0.0039822805 + 1592000 0.003847805 0.0018656185 0.00375946 + 1592100 0.0039869948 0.0019797538 0.0039421029 + 1592200 0.0046858996 0.0015732545 0.0038795957 + 1592300 0.0046031794 0.0018397809 0.0041054082 + 1592400 0.0050222524 0.0022423299 0.0047142197 + 1592500 0.0056994129 0.0022762512 0.005081431 + 1592600 0.0057510145 0.0021445698 0.0049751473 + 1592700 0.0056510461 0.0024309453 0.0052123196 + 1592800 0.0056108065 0.0029059839 0.0056675528 + 1592900 0.0045191768 0.002871792 0.0050960744 + 1593000 0.0048601185 0.0034191867 0.0058112763 + 1593100 0.004044698 0.0037588133 0.0057495631 + 1593200 0.0057609698 0.0032985485 0.0061340258 + 1593300 0.0036672946 0.0024945843 0.0042995808 + 1593400 0.0044305396 0.002635392 0.0048160482 + 1593500 0.0047682327 0.0033763713 0.0057232358 + 1593600 0.0042104939 0.0035392669 0.0056116194 + 1593700 0.0063181991 0.0027718358 0.0058815744 + 1593800 0.0039723703 0.0025656338 0.0045207848 + 1593900 0.0048187501 0.0026656127 0.0050373413 + 1594000 0.0037720937 0.0024715488 0.0043281262 + 1594100 0.0056503489 0.0021028368 0.0048838679 + 1594200 0.0049272339 0.0022671352 0.0046922581 + 1594300 0.0036599542 0.002442526 0.0042439097 + 1594400 0.0032172419 0.0025327263 0.0041162126 + 1594500 0.0032638334 0.0024706847 0.0040771027 + 1594600 0.0051150782 0.0023696234 0.004887201 + 1594700 0.004460397 0.0023258662 0.0045212179 + 1594800 0.005553625 0.0022419514 0.0049753763 + 1594900 0.0049157841 0.0023760932 0.0047955807 + 1595000 0.0066945213 0.0023937858 0.0056887455 + 1595100 0.0046926005 0.002643377 0.0049530163 + 1595200 0.0049607591 0.0033389567 0.0057805803 + 1595300 0.0047414578 0.0029572314 0.0052909177 + 1595400 0.0044143339 0.0025750951 0.0047477751 + 1595500 0.005684 0.0024672368 0.0052648306 + 1595600 0.0055089991 0.0024045082 0.0051159687 + 1595700 0.0057127748 0.0023731212 0.0051848776 + 1595800 0.0048099459 0.0025252662 0.0048926615 + 1595900 0.0054932298 0.0027551668 0.0054588658 + 1596000 0.0057443204 0.0029454581 0.0057727409 + 1596100 0.0046833722 0.0029040067 0.0052091039 + 1596200 0.0053968946 0.0022022657 0.0048585498 + 1596300 0.0074072047 0.002274552 0.0059202856 + 1596400 0.0034340865 0.0024234604 0.0041136749 + 1596500 0.0054246867 0.0027867003 0.0054566632 + 1596600 0.0052911545 0.0027413863 0.0053456264 + 1596700 0.0061012982 0.0022582804 0.0052612631 + 1596800 0.0059909666 0.0023891421 0.005337821 + 1596900 0.0053260791 0.002393014 0.0050144435 + 1597000 0.006362096 0.0021674766 0.0052988207 + 1597100 0.0056100722 0.0017665011 0.0045277085 + 1597200 0.0045314942 0.0017922838 0.0040226286 + 1597300 0.0053370708 0.0014276233 0.0040544628 + 1597400 0.0058137977 0.0016598443 0.0045213229 + 1597500 0.0056070288 0.0019669245 0.004726634 + 1597600 0.0059303366 0.0025141878 0.0054330253 + 1597700 0.0046634153 0.0028752842 0.0051705589 + 1597800 0.0039606535 0.0030892225 0.0050386066 + 1597900 0.0054573503 0.0027374835 0.0054235231 + 1598000 0.0062942043 0.0024912787 0.0055892074 + 1598100 0.0048514147 0.0024005768 0.0047883825 + 1598200 0.0054820207 0.0021636528 0.0048618349 + 1598300 0.0043276447 0.0026882539 0.0048182665 + 1598400 0.0055081752 0.0028214825 0.0055325375 + 1598500 0.004766736 0.0025159258 0.0048620536 + 1598600 0.0057244431 0.0019790813 0.0047965806 + 1598700 0.0046072965 0.0020468852 0.004314539 + 1598800 0.0048329994 0.0019988004 0.0043775423 + 1598900 0.0051794788 0.0017776498 0.0043269245 + 1599000 0.0041128647 0.0017650867 0.0037893873 + 1599100 0.0042762079 0.0020188283 0.0041235243 + 1599200 0.004899098 0.0020039727 0.0044152475 + 1599300 0.0059758384 0.0017117198 0.0046529528 + 1599400 0.0068845634 0.0016397563 0.0050282524 + 1599500 0.0050492116 0.0017304548 0.0042156136 + 1599600 0.0051630615 0.0016726189 0.0042138132 + 1599700 0.0039281325 0.0018541543 0.003787532 + 1599800 0.0054582513 0.0018171214 0.0045036045 + 1599900 0.0033832198 0.0021101955 0.003775374 + 1600000 0.0062417012 0.0013923529 0.0044644402 + 1600100 0.0048627417 0.0013082215 0.0037016021 + 1600200 0.0055908149 0.0015322894 0.0042840186 + 1600300 0.0050671436 0.0019520747 0.0044460594 + 1600400 0.0058244626 0.0018650426 0.0047317702 + 1600500 0.0058281059 0.0023119163 0.0051804372 + 1600600 0.0047719173 0.0026175886 0.0049662666 + 1600700 0.0049520142 0.0025068568 0.0049441763 + 1600800 0.0046773217 0.0020908318 0.0043929511 + 1600900 0.0043238617 0.0015765475 0.0037046982 + 1601000 0.0036568134 0.0018904952 0.0036903331 + 1601100 0.0048765437 0.0017723139 0.0041724878 + 1601200 0.0033822408 0.0018172682 0.0034819648 + 1601300 0.0036262481 0.0020870152 0.0038718092 + 1601400 0.0042238119 0.0021504689 0.0042293763 + 1601500 0.0055385514 0.0021258754 0.0048518811 + 1601600 0.0061371788 0.0020246025 0.0050452452 + 1601700 0.0052523136 0.0020925117 0.0046776348 + 1601800 0.0055630099 0.0019987693 0.0047368133 + 1601900 0.0049730902 0.0020049214 0.0044526143 + 1602000 0.0046113383 0.0019438343 0.0042134774 + 1602100 0.0047420714 0.001923807 0.0042577953 + 1602200 0.0038230507 0.0020160991 0.0038977569 + 1602300 0.00437707 0.0018843631 0.0040387023 + 1602400 0.0045052422 0.0019511336 0.0041685574 + 1602500 0.0053884017 0.0017115182 0.0043636221 + 1602600 0.0037509387 0.0022823745 0.0041285396 + 1602700 0.0055995111 0.0020694887 0.0048254981 + 1602800 0.004823842 0.0019655073 0.0043397421 + 1602900 0.0041434252 0.0023110241 0.0043503662 + 1603000 0.0048559139 0.0021056024 0.0044956225 + 1603100 0.0049463054 0.0020352552 0.0044697649 + 1603200 0.0044064655 0.00218468 0.0043534873 + 1603300 0.0045074541 0.0018033758 0.0040218884 + 1603400 0.0049347654 0.0015302665 0.0039590963 + 1603500 0.0051533792 0.0019732466 0.0045096754 + 1603600 0.0054311574 0.0022681286 0.0049412764 + 1603700 0.0049219842 0.0022331909 0.00465573 + 1603800 0.0058452351 0.0030138046 0.0058907562 + 1603900 0.0068752011 0.0028200216 0.0062039096 + 1604000 0.0064127804 0.0027574132 0.0059137036 + 1604100 0.0043078241 0.0031415138 0.005261771 + 1604200 0.0042943244 0.0031826749 0.0052962877 + 1604300 0.0050298025 0.0027722156 0.0052478215 + 1604400 0.0052840561 0.0028988645 0.0054996109 + 1604500 0.0045508309 0.0031473764 0.0053872384 + 1604600 0.0057334368 0.0027373207 0.0055592466 + 1604700 0.0061951887 0.0025161468 0.0055653412 + 1604800 0.0046403003 0.0023653119 0.0046492097 + 1604900 0.0050976943 0.0024508226 0.004959844 + 1605000 0.0061944044 0.0024429124 0.0054917209 + 1605100 0.0062841686 0.0024059264 0.0054989157 + 1605200 0.0060133235 0.0024267276 0.0053864103 + 1605300 0.0047949662 0.0027478424 0.0051078648 + 1605400 0.0047802573 0.0026403848 0.0049931677 + 1605500 0.0028425594 0.0026554499 0.0040545221 + 1605600 0.0039895005 0.002735714 0.0046992962 + 1605700 0.0052234553 0.0023521519 0.0049230713 + 1605800 0.0057497236 0.0018836724 0.0047136145 + 1605900 0.0041950306 0.001676679 0.0037414207 + 1606000 0.0043439962 0.0019550443 0.0040931049 + 1606100 0.0052021138 0.0018604842 0.0044208995 + 1606200 0.004689269 0.0018244751 0.0041324747 + 1606300 0.0053043168 0.0022187601 0.0048294786 + 1606400 0.006624673 0.0025386649 0.0057992461 + 1606500 0.0058809231 0.0023887748 0.0052832916 + 1606600 0.0048449499 0.002530915 0.0049155388 + 1606700 0.0069138829 0.0021938393 0.005596766 + 1606800 0.0062195282 0.0022604868 0.0053216608 + 1606900 0.0057374915 0.0023451126 0.0051690342 + 1607000 0.0045220896 0.0024492506 0.0046749666 + 1607100 0.0038733673 0.0024619517 0.0043683747 + 1607200 0.0037602154 0.0024409365 0.0042916675 + 1607300 0.0038806776 0.0020744345 0.0039844555 + 1607400 0.0064727792 0.0017044802 0.0048903012 + 1607500 0.0055947715 0.0022110101 0.0049646867 + 1607600 0.0039380988 0.0022257014 0.0041639844 + 1607700 0.0050002289 0.0021817796 0.0046428298 + 1607800 0.0048942126 0.0021331741 0.0045420443 + 1607900 0.0044956941 0.0020414561 0.0042541806 + 1608000 0.0050359187 0.001570733 0.0040493492 + 1608100 0.0054603335 0.0020612053 0.0047487132 + 1608200 0.0045431561 0.0025694135 0.0048054981 + 1608300 0.0052020982 0.0024523403 0.005012748 + 1608400 0.0046600451 0.0021981084 0.0044917244 + 1608500 0.0062883493 0.0022077686 0.0053028155 + 1608600 0.00560215 0.001934949 0.0046922572 + 1608700 0.0049927186 0.002343552 0.0048009057 + 1608800 0.0044359003 0.0026211981 0.0048044928 + 1608900 0.0051109019 0.0023360225 0.0048515445 + 1609000 0.0037003269 0.0023066653 0.00412792 + 1609100 0.0055028387 0.0023991489 0.0051075774 + 1609200 0.0058500218 0.0023295603 0.0052088679 + 1609300 0.0036448173 0.0025335732 0.0043275067 + 1609400 0.0041871282 0.0025569625 0.0046178147 + 1609500 0.0052481835 0.0026362432 0.0052193335 + 1609600 0.0058279248 0.0026218099 0.0054902416 + 1609700 0.005359198 0.003011369 0.0056490993 + 1609800 0.0039403409 0.0029020373 0.0048414239 + 1609900 0.0040450317 0.0031724137 0.0051633277 + 1610000 0.0034630985 0.0028951428 0.0045996366 + 1610100 0.0055221371 0.0023859309 0.0051038577 + 1610200 0.0059082978 0.0021770738 0.0050850641 + 1610300 0.0047004042 0.0021062606 0.0044197408 + 1610400 0.0047938777 0.0019418836 0.0043013703 + 1610500 0.005809088 0.0019441419 0.0048033024 + 1610600 0.0040520897 0.0020521882 0.0040465761 + 1610700 0.0049140473 0.002107624 0.0045262567 + 1610800 0.0048725217 0.0021236228 0.0045218171 + 1610900 0.0033146884 0.0023207441 0.0039521923 + 1611000 0.0061509722 0.0022233798 0.0052508114 + 1611100 0.0037420634 0.0021442203 0.0039860171 + 1611200 0.0039127069 0.0024458566 0.004371642 + 1611300 0.0047264716 0.0023163722 0.0046426824 + 1611400 0.0048027089 0.0020670211 0.0044308544 + 1611500 0.0033651597 0.0020365919 0.0036928815 + 1611600 0.0053632368 0.0017436191 0.0043833372 + 1611700 0.0056131575 0.0018150684 0.0045777943 + 1611800 0.0048992709 0.0020971884 0.0045085483 + 1611900 0.0051678383 0.0023554158 0.0048989612 + 1612000 0.0047379925 0.0023491825 0.0046811632 + 1612100 0.0058268073 0.0024304728 0.0052983545 + 1612200 0.0043454232 0.0028537633 0.0049925263 + 1612300 0.0059663235 0.002934887 0.0058714369 + 1612400 0.0043120663 0.0025391269 0.004661472 + 1612500 0.004765705 0.0021459803 0.0044916007 + 1612600 0.0045571372 0.0019249851 0.0041679511 + 1612700 0.0060987326 0.0018412876 0.0048430075 + 1612800 0.0064118172 0.0022380768 0.0053938931 + 1612900 0.0042355355 0.0024148408 0.0044995184 + 1613000 0.0062722093 0.0023563558 0.0054434588 + 1613100 0.0052160235 0.0027209971 0.0052882587 + 1613200 0.0051075019 0.0032345841 0.0057484327 + 1613300 0.0045683403 0.0029976144 0.0052460943 + 1613400 0.0058648429 0.0025762718 0.0054628741 + 1613500 0.0048655111 0.0023083024 0.0047030461 + 1613600 0.0049317865 0.0024894534 0.0049168171 + 1613700 0.0048403397 0.0025763982 0.0049587529 + 1613800 0.0061007515 0.0027874156 0.0057901292 + 1613900 0.0058325302 0.0033265485 0.0061972469 + 1614000 0.0050539293 0.0030976337 0.0055851145 + 1614100 0.0058556375 0.002300423 0.0051824946 + 1614200 0.0046945498 0.0018826311 0.0041932298 + 1614300 0.0038713784 0.0017897011 0.0036951451 + 1614400 0.0045209382 0.0018607571 0.0040859063 + 1614500 0.0038255073 0.0019993862 0.0038822531 + 1614600 0.0042894765 0.0016293924 0.0037406191 + 1614700 0.0047817727 0.0018562791 0.0042098079 + 1614800 0.0033035262 0.0025450823 0.0041710366 + 1614900 0.0039404218 0.0027900934 0.0047295198 + 1615000 0.0044050276 0.0026389467 0.0048070462 + 1615100 0.0063293025 0.0023630463 0.0054782499 + 1615200 0.003694652 0.0023480022 0.0041664637 + 1615300 0.0048623704 0.0022759538 0.0046691517 + 1615400 0.0043948034 0.0021151735 0.0042782408 + 1615500 0.0048812667 0.0023620574 0.0047645558 + 1615600 0.0043115162 0.0020800812 0.0042021556 + 1615700 0.0055756026 0.00212706 0.0048713019 + 1615800 0.0037551033 0.0026178984 0.0044661133 + 1615900 0.0051879944 0.0023129532 0.0048664192 + 1616000 0.0039667158 0.0022289685 0.0041813364 + 1616100 0.0047412126 0.002358245 0.0046918106 + 1616200 0.0054634386 0.0024069412 0.0050959774 + 1616300 0.0058828226 0.0025258067 0.0054212585 + 1616400 0.0048123818 0.0025706712 0.0049392653 + 1616500 0.0053160007 0.0025157769 0.005132246 + 1616600 0.0043018563 0.0023713465 0.0044886664 + 1616700 0.0044010672 0.0027206867 0.0048868369 + 1616800 0.0065537342 0.0027337993 0.0059594654 + 1616900 0.0046190498 0.0029192697 0.0051927082 + 1617000 0.007107495 0.0027065685 0.0062047887 + 1617100 0.0070845271 0.0028022556 0.0062891713 + 1617200 0.0058363192 0.0025249334 0.0053974968 + 1617300 0.0061620012 0.0025373254 0.0055701853 + 1617400 0.0044048937 0.0027396066 0.0049076402 + 1617500 0.0072360916 0.0023789191 0.005940433 + 1617600 0.0044748875 0.0029939162 0.0051963999 + 1617700 0.0050451639 0.0032044172 0.0056875838 + 1617800 0.0063442722 0.0033165708 0.0064391423 + 1617900 0.0070140665 0.0029781028 0.0064303387 + 1618000 0.0043747726 0.0029038576 0.005057066 + 1618100 0.0042323716 0.002856773 0.0049398934 + 1618200 0.0036324632 0.0023082003 0.0040960533 + 1618300 0.0047408773 0.0019917086 0.0043251092 + 1618400 0.0061487575 0.0017755491 0.0048018907 + 1618500 0.0050187713 0.0022890006 0.0047591771 + 1618600 0.0052807286 0.0019864301 0.0045855388 + 1618700 0.004279772 0.001974363 0.0040808133 + 1618800 0.0051837037 0.0019211909 0.0044725451 + 1618900 0.0059280059 0.0019886699 0.0049063603 + 1619000 0.0038429435 0.0023959836 0.0042874323 + 1619100 0.0044238092 0.0023634299 0.0045407735 + 1619200 0.0056933669 0.0023808163 0.0051830204 + 1619300 0.005241245 0.0024233158 0.0050029911 + 1619400 0.0057608979 0.0026359765 0.0054714184 + 1619500 0.0035967789 0.0026135085 0.0043837981 + 1619600 0.0045163166 0.0024891857 0.0047120602 + 1619700 0.0042210951 0.0021900327 0.0042676029 + 1619800 0.0059384878 0.0019793429 0.0049021923 + 1619900 0.0046739013 0.0018120153 0.0041124511 + 1620000 0.0048305192 0.0021930553 0.0045705765 + 1620100 0.0037915222 0.0026082599 0.0044743997 + 1620200 0.0047657085 0.0024701357 0.0048157579 + 1620300 0.0034491353 0.0023370466 0.0040346679 + 1620400 0.0054187477 0.0022127462 0.0048797861 + 1620500 0.0047029893 0.0022172441 0.0045319967 + 1620600 0.0052885482 0.0018471577 0.004450115 + 1620700 0.0042048426 0.0017492406 0.0038188116 + 1620800 0.0063578403 0.0020983175 0.005227567 + 1620900 0.0040260063 0.0022838291 0.004265379 + 1621000 0.006296861 0.0022040858 0.0053033221 + 1621100 0.0050293237 0.0023629554 0.0048383257 + 1621200 0.0059327395 0.0025550772 0.0054750974 + 1621300 0.0057134299 0.002915039 0.0057271178 + 1621400 0.0049652841 0.0027744422 0.005218293 + 1621500 0.0047130058 0.0025247834 0.004844466 + 1621600 0.0062426663 0.002384962 0.0054575243 + 1621700 0.0069846659 0.0022055093 0.0056432745 + 1621800 0.006801838 0.0024151239 0.0057629035 + 1621900 0.0053340311 0.0026165783 0.0052419217 + 1622000 0.0055665013 0.0028586865 0.0055984489 + 1622100 0.004075602 0.0025197303 0.0045256906 + 1622200 0.0053868477 0.0023349276 0.0049862667 + 1622300 0.0039049805 0.0024541917 0.0043761742 + 1622400 0.0028516325 0.0025246191 0.003928157 + 1622500 0.0051588434 0.0028677676 0.0054068858 + 1622600 0.0059020256 0.002389707 0.0052946102 + 1622700 0.0039429321 0.0023733734 0.0043140352 + 1622800 0.005569766 0.0020999108 0.00484128 + 1622900 0.0043596647 0.0023395255 0.004485298 + 1623000 0.0042928415 0.0021797105 0.0042925934 + 1623100 0.005230137 0.0023630158 0.0049372239 + 1623200 0.0057367011 0.0023787636 0.0052022962 + 1623300 0.0051154883 0.0027135576 0.0052313369 + 1623400 0.0056181254 0.0027703772 0.0055355483 + 1623500 0.0038613136 0.0029510234 0.0048515137 + 1623600 0.0066176627 0.0024462914 0.0057034223 + 1623700 0.0053111016 0.0021424792 0.004756537 + 1623800 0.0045645198 0.0027987141 0.0050453137 + 1623900 0.0040175872 0.002865963 0.0048433692 + 1624000 0.0064337142 0.0024614396 0.0056280333 + 1624100 0.0039398224 0.0023375995 0.0042767308 + 1624200 0.0055350106 0.0017328913 0.0044571543 + 1624300 0.0039389635 0.0017065842 0.0036452928 + 1624400 0.0042134325 0.0018206292 0.003894428 + 1624500 0.004158992 0.0020283002 0.0040753041 + 1624600 0.0037347197 0.0019461039 0.0037842863 + 1624700 0.0043828832 0.002030114 0.0041873143 + 1624800 0.0034272267 0.001917442 0.0036042802 + 1624900 0.0052446461 0.0017776864 0.0043590357 + 1625000 0.0052399882 0.0021213259 0.0047003826 + 1625100 0.0039769272 0.0031570596 0.0051144534 + 1625200 0.0055971987 0.0028881419 0.0056430131 + 1625300 0.0064662601 0.0024487463 0.0056313586 + 1625400 0.0042371901 0.0027322065 0.0048176985 + 1625500 0.0057382889 0.0023244585 0.0051487725 + 1625600 0.0058439175 0.0023655913 0.0052418945 + 1625700 0.0045110389 0.0027661537 0.0049864307 + 1625800 0.0047675595 0.0027100059 0.0050565391 + 1625900 0.0056736117 0.0022416814 0.0050341622 + 1626000 0.0052170567 0.0023681709 0.004935941 + 1626100 0.0048600967 0.003125752 0.0055178309 + 1626200 0.0061368546 0.0026636711 0.0056841543 + 1626300 0.0046130323 0.0024246911 0.004695168 + 1626400 0.0044157217 0.0025052543 0.0046786174 + 1626500 0.0035232004 0.0025192789 0.0042533541 + 1626600 0.0046097772 0.0027655226 0.0050343973 + 1626700 0.0041030133 0.0029542826 0.0049737344 + 1626800 0.0060029347 0.0032292684 0.0061838378 + 1626900 0.005708709 0.0036176152 0.0064273704 + 1627000 0.0044411894 0.0037184791 0.005904377 + 1627100 0.0049606452 0.0035488479 0.0059904155 + 1627200 0.0039437598 0.0030058363 0.0049469056 + 1627300 0.0060926075 0.0030642657 0.006062971 + 1627400 0.0038445286 0.0032458364 0.0051380653 + 1627500 0.0050822809 0.0028623159 0.005363751 + 1627600 0.0066886697 0.0024610278 0.0057531074 + 1627700 0.0044864275 0.0025545682 0.0047627317 + 1627800 0.0050600987 0.0024227345 0.0049132518 + 1627900 0.0035299795 0.0023942874 0.0041316992 + 1628000 0.0045541549 0.00209971 0.0043412082 + 1628100 0.0045289595 0.0020975148 0.0043266121 + 1628200 0.0043128892 0.0018049766 0.0039277268 + 1628300 0.0045890811 0.0015147608 0.0037734492 + 1628400 0.0041377791 0.0018365181 0.0038730813 + 1628500 0.0047691948 0.0020705875 0.0044179255 + 1628600 0.0052708009 0.0022168049 0.0048110272 + 1628700 0.0048264895 0.0025133216 0.0048888594 + 1628800 0.0063152762 0.0032075038 0.0063158038 + 1628900 0.0053867101 0.0028385056 0.005489777 + 1629000 0.0051321926 0.0028510327 0.0053770337 + 1629100 0.0042178549 0.0029193038 0.0049952793 + 1629200 0.0049819942 0.0025912323 0.0050433075 + 1629300 0.0039999826 0.0025444534 0.0045131948 + 1629400 0.0049446075 0.0026086364 0.0050423104 + 1629500 0.006051214 0.0025917124 0.0055700443 + 1629600 0.0048588885 0.0028130911 0.0052045753 + 1629700 0.0056807897 0.0028065512 0.0056025649 + 1629800 0.0047911001 0.002568613 0.0049267326 + 1629900 0.0044239783 0.0024910462 0.004668473 + 1630000 0.0037808661 0.0033325149 0.0051934099 + 1630100 0.0032853348 0.003374816 0.0049918167 + 1630200 0.0059141909 0.0028019869 0.0057128777 + 1630300 0.0045227154 0.0028697213 0.0050957453 + 1630400 0.0044355264 0.0024492956 0.0046324063 + 1630500 0.00325894 0.0026420192 0.0042460288 + 1630600 0.0044140489 0.0031377632 0.0053103029 + 1630700 0.0066884225 0.0030078724 0.0062998304 + 1630800 0.0051597562 0.0026498517 0.0051894192 + 1630900 0.0051018765 0.0025594328 0.0050705126 + 1631000 0.0047809952 0.0025302276 0.0048833736 + 1631100 0.00480111 0.0028473498 0.0052103961 + 1631200 0.0063601042 0.0029541142 0.006084478 + 1631300 0.0055207927 0.002856209 0.0055734742 + 1631400 0.0044943716 0.0028268309 0.0050389045 + 1631500 0.0037720129 0.0026087637 0.0044653013 + 1631600 0.0057891241 0.002311845 0.0051611795 + 1631700 0.0062145141 0.0024269291 0.0054856352 + 1631800 0.0059696669 0.003286567 0.0062247624 + 1631900 0.0041550071 0.0036497191 0.0056947617 + 1632000 0.0053409874 0.0030586781 0.0056874453 + 1632100 0.0053968692 0.0026613596 0.0053176312 + 1632200 0.0056140394 0.0027607647 0.0055239247 + 1632300 0.0046505828 0.0029713942 0.0052603529 + 1632400 0.0050996608 0.0031252721 0.0056352614 + 1632500 0.0038431038 0.0033140849 0.0052056126 + 1632600 0.0046741826 0.0031580406 0.0054586148 + 1632700 0.0062951364 0.0031000289 0.0061984164 + 1632800 0.0054313793 0.0029952899 0.0056685469 + 1632900 0.0039411699 0.0026489173 0.0045887118 + 1633000 0.0061934324 0.0026433993 0.0056917293 + 1633100 0.0058395563 0.0030116682 0.0058858248 + 1633200 0.0062585221 0.0027956507 0.005876017 + 1633300 0.004635655 0.0029844 0.0052660114 + 1633400 0.0041597079 0.002790872 0.0048382283 + 1633500 0.0037979135 0.0028435944 0.0047128799 + 1633600 0.003143391 0.0030125162 0.004559654 + 1633700 0.0040094235 0.0028865552 0.0048599433 + 1633800 0.0034057266 0.0026572074 0.0043334635 + 1633900 0.0038446973 0.0022911504 0.0041834623 + 1634000 0.0050498917 0.0022158791 0.0047013727 + 1634100 0.0046202245 0.0022191783 0.0044931951 + 1634200 0.0047340546 0.0023955558 0.0047255983 + 1634300 0.0056517497 0.0023626853 0.0051444059 + 1634400 0.004108885 0.0027762147 0.0047985565 + 1634500 0.0045952273 0.0029445637 0.0052062771 + 1634600 0.0045680976 0.0030257714 0.0052741319 + 1634700 0.0061097753 0.0030294691 0.0060366241 + 1634800 0.003514471 0.0031035372 0.0048333159 + 1634900 0.0050804397 0.0027713637 0.0052718927 + 1635000 0.003667389 0.0028573222 0.0046623652 + 1635100 0.0057938652 0.0026371731 0.0054888411 + 1635200 0.0047102314 0.0025997832 0.0049181002 + 1635300 0.0048718581 0.0025784801 0.0049763478 + 1635400 0.0035099523 0.0029345955 0.0046621501 + 1635500 0.0041809781 0.0030827688 0.005140594 + 1635600 0.0050406169 0.0026991518 0.0051800804 + 1635700 0.0046141592 0.0027625614 0.0050335929 + 1635800 0.0046781561 0.0029899861 0.0052925161 + 1635900 0.0058595137 0.0025746155 0.0054585949 + 1636000 0.0046606532 0.002245374 0.0045392893 + 1636100 0.0025572402 0.0020978585 0.0033565001 + 1636200 0.0040244606 0.0023780209 0.0043588101 + 1636300 0.004086974 0.0026810101 0.0046925676 + 1636400 0.0035061004 0.0025782016 0.0043038604 + 1636500 0.0044842836 0.0026434374 0.0048505458 + 1636600 0.0062680565 0.0025479012 0.0056329603 + 1636700 0.0046452875 0.0023611332 0.0046474857 + 1636800 0.0051617608 0.0024327859 0.0049733401 + 1636900 0.0048489747 0.0027972794 0.0051838841 + 1637000 0.0052526201 0.0028844772 0.0054697512 + 1637100 0.0045194698 0.0029665988 0.0051910253 + 1637200 0.0052919004 0.0029839395 0.0055885467 + 1637300 0.0040815972 0.0023581479 0.004367059 + 1637400 0.0048839446 0.0021146657 0.0045184822 + 1637500 0.004072334 0.0023219887 0.0043263406 + 1637600 0.0053332587 0.001809193 0.0044341563 + 1637700 0.0041283016 0.0019582106 0.0039901091 + 1637800 0.0046174976 0.0021692113 0.0044418859 + 1637900 0.0045290429 0.0026335818 0.0048627202 + 1638000 0.0041970252 0.0029536203 0.0050193437 + 1638100 0.0047910334 0.0027523447 0.0051104314 + 1638200 0.005921154 0.0025242223 0.0054385403 + 1638300 0.0044706464 0.0024050329 0.0046054291 + 1638400 0.0046103834 0.0026808727 0.0049500458 + 1638500 0.0046854085 0.0027595263 0.0050656258 + 1638600 0.0050007328 0.0027471393 0.0052084375 + 1638700 0.0065296681 0.0029231793 0.0061370003 + 1638800 0.0061991878 0.0031073219 0.0061584847 + 1638900 0.0052364643 0.0035520849 0.0061294072 + 1639000 0.0072897113 0.0028344147 0.0064223195 + 1639100 0.0041896935 0.0022031492 0.0042652639 + 1639200 0.0061237801 0.0023563522 0.0053704003 + 1639300 0.0063762601 0.0030578683 0.0061961838 + 1639400 0.0042765532 0.0032681228 0.0053729889 + 1639500 0.0059971358 0.0031539242 0.0061056394 + 1639600 0.0066654476 0.0029356938 0.0062163438 + 1639700 0.0052604414 0.0027668677 0.0053559912 + 1639800 0.0041116046 0.002420171 0.0044438514 + 1639900 0.0055723723 0.002322991 0.005065643 + 1640000 0.0049487901 0.0027070536 0.0051427863 + 1640100 0.0051290637 0.0026757912 0.0052002522 + 1640200 0.0046058563 0.0022426678 0.0045096127 + 1640300 0.0052321736 0.0018280031 0.0044032135 + 1640400 0.0066831567 0.0020477176 0.0053370838 + 1640500 0.0038408723 0.0028001783 0.0046906076 + 1640600 0.0048765491 0.0029954246 0.0053956012 + 1640700 0.0070424853 0.0031545723 0.0066207956 + 1640800 0.0042775699 0.0034105095 0.0055158759 + 1640900 0.0059681923 0.0025373865 0.0054748561 + 1641000 0.0041601891 0.0021605115 0.0042081046 + 1641100 0.0054086728 0.0020836725 0.0047457537 + 1641200 0.0051815554 0.0022941937 0.0048444905 + 1641300 0.004260039 0.0028155489 0.0049122869 + 1641400 0.0044682712 0.0030781831 0.0052774104 + 1641500 0.0039696328 0.0033298149 0.0052836186 + 1641600 0.0056840568 0.0028875435 0.0056851652 + 1641700 0.0059563274 0.0025243676 0.0054559975 + 1641800 0.0067567807 0.0027416026 0.0060672056 + 1641900 0.0039642799 0.0029304026 0.0048815717 + 1642000 0.0048394735 0.0024167297 0.004798658 + 1642100 0.0036324624 0.0025452441 0.0043330966 + 1642200 0.0053284924 0.0024581011 0.0050807184 + 1642300 0.0055984757 0.0021600857 0.0049155855 + 1642400 0.0044134045 0.0023943661 0.0045665886 + 1642500 0.0059201281 0.0027570923 0.0056709054 + 1642600 0.0065738802 0.0031536488 0.0063892305 + 1642700 0.0055376987 0.0027892661 0.0055148522 + 1642800 0.0072015215 0.0018435186 0.0053880174 + 1642900 0.0046486828 0.0020708213 0.0043588449 + 1643000 0.0036130977 0.0024174699 0.0041957914 + 1643100 0.0040753506 0.0025324946 0.0045383313 + 1643200 0.0026401548 0.0025110384 0.0038104896 + 1643300 0.0056512715 0.0021542636 0.0049357488 + 1643400 0.0066734002 0.0022867498 0.005571314 + 1643500 0.004937039 0.0021801906 0.0046101395 + 1643600 0.0041374778 0.001954686 0.0039911008 + 1643700 0.0049461937 0.0017595825 0.0041940372 + 1643800 0.0052217634 0.0020562003 0.004626287 + 1643900 0.004661826 0.0019902403 0.0042847328 + 1644000 0.0051210453 0.0020866507 0.0046071652 + 1644100 0.0050734271 0.002589622 0.0050866994 + 1644200 0.0054516534 0.0026960654 0.0053793011 + 1644300 0.0046241283 0.0029258862 0.0052018244 + 1644400 0.0044398677 0.003224238 0.0054094854 + 1644500 0.0045740637 0.0029159306 0.0051672276 + 1644600 0.0071768565 0.0029618724 0.0064942315 + 1644700 0.0048171304 0.0030003264 0.0053712578 + 1644800 0.0049207289 0.0027685477 0.0051904689 + 1644900 0.0052870973 0.0023977088 0.004999952 + 1645000 0.0045713534 0.002375725 0.004625688 + 1645100 0.0058168188 0.0021293669 0.0049923324 + 1645200 0.00547169 0.0019184789 0.0046115763 + 1645300 0.0057387293 0.0022329184 0.0050574492 + 1645400 0.0067595301 0.0022083885 0.0055353447 + 1645500 0.0052449946 0.0022470394 0.0048285602 + 1645600 0.0037688112 0.0026698328 0.0045247946 + 1645700 0.0065270596 0.002621146 0.0058336831 + 1645800 0.0049672218 0.0026457454 0.0050905498 + 1645900 0.004690319 0.002216062 0.0045245784 + 1646000 0.004882275 0.0026536078 0.0050566025 + 1646100 0.0050460587 0.002716523 0.0052001301 + 1646200 0.0055397247 0.0029433803 0.0056699636 + 1646300 0.0044771937 0.0026903282 0.004893947 + 1646400 0.0056922284 0.0024965354 0.0052981791 + 1646500 0.0044709477 0.0025816441 0.0047821886 + 1646600 0.0041702309 0.0026912156 0.0047437512 + 1646700 0.0057387481 0.0029717251 0.0057962651 + 1646800 0.0063582502 0.0032741846 0.0064036359 + 1646900 0.0049592606 0.0031673301 0.0056082162 + 1647000 0.0039729063 0.002883343 0.0048387578 + 1647100 0.0044404908 0.0030961629 0.0052817169 + 1647200 0.0065706182 0.0032960012 0.0065299773 + 1647300 0.0064217988 0.0029666079 0.006127337 + 1647400 0.006119451 0.0027576071 0.0057695244 + 1647500 0.0041739221 0.002753699 0.0048080513 + 1647600 0.0052136191 0.0024811452 0.0050472233 + 1647700 0.0056253495 0.0025937582 0.0053624849 + 1647800 0.0053322628 0.0026701766 0.0052946497 + 1647900 0.0055542246 0.0027235245 0.0054572444 + 1648000 0.0057706697 0.0026038961 0.0054441476 + 1648100 0.005019236 0.0024296314 0.0049000366 + 1648200 0.0051874921 0.0024179414 0.0049711602 + 1648300 0.005038737 0.0024349808 0.0049149841 + 1648400 0.0050115114 0.0028653332 0.0053319364 + 1648500 0.004248447 0.0029874531 0.0050784856 + 1648600 0.0046278348 0.0032064927 0.0054842552 + 1648700 0.0045479359 0.0028625484 0.0051009856 + 1648800 0.0039390351 0.0024173995 0.0043561433 + 1648900 0.0055030436 0.0021114459 0.0048199751 + 1649000 0.0048530735 0.0022001459 0.004588768 + 1649100 0.0066892861 0.0025454615 0.0058378445 + 1649200 0.0037680991 0.0025251248 0.0043797361 + 1649300 0.0036190561 0.0022998546 0.0040811088 + 1649400 0.0042040588 0.0023312724 0.0044004575 + 1649500 0.0054976727 0.002089348 0.0047952338 + 1649600 0.0045651997 0.0020759896 0.0043229238 + 1649700 0.0054355728 0.002607606 0.005282927 + 1649800 0.0052439815 0.0025897867 0.0051708088 + 1649900 0.0047077416 0.0024029504 0.0047200419 + 1650000 0.005218436 0.0023573708 0.0049258198 + 1650100 0.0048419477 0.0021046538 0.0044877999 + 1650200 0.0043980404 0.0023465201 0.0045111806 + 1650300 0.0052709535 0.0024072497 0.0050015472 + 1650400 0.0056979534 0.0024238325 0.0052282939 + 1650500 0.00472211 0.00269558 0.0050197435 + 1650600 0.0051704696 0.0027814148 0.0053262553 + 1650700 0.0044864342 0.0024770583 0.0046852251 + 1650800 0.0059360761 0.002197683 0.0051193455 + 1650900 0.0046495657 0.0019879444 0.0042764025 + 1651000 0.0058375726 0.0017901517 0.0046633319 + 1651100 0.004855584 0.0021203616 0.0045102193 + 1651200 0.0060632633 0.0023324502 0.0053167126 + 1651300 0.0055857898 0.0023584647 0.0051077207 + 1651400 0.0045986859 0.0021602619 0.0044236776 + 1651500 0.0061930062 0.0025407867 0.005588907 + 1651600 0.0048510058 0.0029060926 0.005293697 + 1651700 0.0053009408 0.0025568017 0.0051658586 + 1651800 0.0066642821 0.0030720433 0.0063521196 + 1651900 0.0057737201 0.0034375463 0.0062792991 + 1652000 0.0048749422 0.0032965519 0.0056959375 + 1652100 0.0064780344 0.0026777047 0.0058661122 + 1652200 0.0054889825 0.0021969455 0.0048985541 + 1652300 0.0048068662 0.0021469747 0.0045128542 + 1652400 0.0032865959 0.0021811277 0.0037987492 + 1652500 0.0045986256 0.0019609942 0.0042243802 + 1652600 0.0057010026 0.0018903715 0.0046963337 + 1652700 0.0053300695 0.0020993208 0.0047227144 + 1652800 0.0062176199 0.002269329 0.0053295639 + 1652900 0.0064193179 0.0020596114 0.0052191194 + 1653000 0.006115582 0.0024181898 0.0054282028 + 1653100 0.0043848386 0.0028594363 0.0050175991 + 1653200 0.0056428942 0.0028209005 0.0055982625 + 1653300 0.0053594047 0.0028351635 0.0054729955 + 1653400 0.0056046184 0.0024045076 0.0051630307 + 1653500 0.005395241 0.002004394 0.0046598641 + 1653600 0.005328431 0.0021673221 0.0047899093 + 1653700 0.0051374638 0.0022551543 0.0047837498 + 1653800 0.0048236581 0.002289129 0.0046632732 + 1653900 0.0052540513 0.0020499177 0.0046358961 + 1654000 0.0037866374 0.0019258486 0.0037895842 + 1654100 0.006943142 0.0019130871 0.0053304148 + 1654200 0.0032189111 0.0023271426 0.0039114504 + 1654300 0.0047023038 0.0028411194 0.0051555345 + 1654400 0.0054734728 0.0029205387 0.0056145135 + 1654500 0.0055443074 0.0027186 0.0054474388 + 1654600 0.0049475728 0.0030160756 0.0054512091 + 1654700 0.0054031765 0.0029387259 0.0055981019 + 1654800 0.005837769 0.0028730688 0.0057463458 + 1654900 0.0035037908 0.0027610498 0.0044855718 + 1655000 0.0049423845 0.0028213336 0.0052539135 + 1655100 0.0047410139 0.0024105864 0.0047440542 + 1655200 0.0056593258 0.0021118137 0.0048972631 + 1655300 0.0055545924 0.00218559 0.004919491 + 1655400 0.0045902321 0.0024055985 0.0046648533 + 1655500 0.0041751503 0.0026403123 0.0046952691 + 1655600 0.0046946846 0.0027893953 0.0051000604 + 1655700 0.0049249492 0.0031701288 0.0055941273 + 1655800 0.0051327671 0.0031189994 0.0056452832 + 1655900 0.0039044798 0.0032597219 0.005181458 + 1656000 0.0059113446 0.0029508746 0.0058603645 + 1656100 0.0049135057 0.003165949 0.0055843151 + 1656200 0.0049242283 0.0032903728 0.0057140165 + 1656300 0.0047997459 0.0030134393 0.0053758142 + 1656400 0.005021154 0.0032871931 0.0057585423 + 1656500 0.0058349056 0.0029820681 0.0058539357 + 1656600 0.0049537398 0.0031878116 0.0056259803 + 1656700 0.0049601025 0.0031045746 0.0055458751 + 1656800 0.0061255035 0.002819135 0.0058340312 + 1656900 0.0048085869 0.0027726628 0.0051393891 + 1657000 0.0052441864 0.0028002427 0.0053813657 + 1657100 0.0043763638 0.0029537101 0.0051077017 + 1657200 0.0050873959 0.0029844954 0.0054884481 + 1657300 0.0039376872 0.002767666 0.0047057464 + 1657400 0.004058083 0.0028464702 0.0048438079 + 1657500 0.0053381688 0.0031632355 0.0057906154 + 1657600 0.0056601758 0.0033881126 0.0061739804 + 1657700 0.0042849546 0.0036254174 0.0057344184 + 1657800 0.0061428937 0.0034503599 0.0064738154 + 1657900 0.0058354315 0.0032782192 0.0061503457 + 1658000 0.0042311123 0.0029738728 0.0050563734 + 1658100 0.0051636789 0.0027275998 0.005269098 + 1658200 0.0041938122 0.0030605864 0.0051247284 + 1658300 0.0043180255 0.0031253088 0.005250587 + 1658400 0.0058829048 0.0030770988 0.005972591 + 1658500 0.0037320107 0.0030403049 0.004877154 + 1658600 0.0060281076 0.0029950861 0.0059620453 + 1658700 0.0054777018 0.0031917799 0.0058878362 + 1658800 0.0044466106 0.0030141247 0.0052026909 + 1658900 0.0057400825 0.0024600254 0.0052852223 + 1659000 0.0043894495 0.0025680061 0.0047284383 + 1659100 0.005685694 0.0027404625 0.00553889 + 1659200 0.0046831843 0.0024857354 0.0047907402 + 1659300 0.0059362992 0.0023173462 0.0052391185 + 1659400 0.0036563282 0.0032983411 0.0050979401 + 1659500 0.0045075806 0.0034547563 0.0056733311 + 1659600 0.0060342018 0.00295335 0.0059233087 + 1659700 0.0049136929 0.0027360904 0.0051545486 + 1659800 0.0049391772 0.0027330461 0.0051640473 + 1659900 0.0043794193 0.002791221 0.0049467165 + 1660000 0.0063817762 0.0027670949 0.0059081254 + 1660100 0.0056678109 0.0027863859 0.0055760116 + 1660200 0.0040434741 0.0030069208 0.0049970683 + 1660300 0.0043537778 0.0027520579 0.004894933 + 1660400 0.0060782611 0.0027783988 0.005770043 + 1660500 0.0055807461 0.0024719543 0.0052187277 + 1660600 0.0048842086 0.0025328919 0.0049368383 + 1660700 0.0052391638 0.0024633393 0.0050419903 + 1660800 0.0051127608 0.0027176635 0.0052341005 + 1660900 0.0059889061 0.0028970291 0.0058446938 + 1661000 0.0030456339 0.0032414196 0.0047404426 + 1661100 0.0050168847 0.002812059 0.005281307 + 1661200 0.0053630553 0.0030411944 0.0056808232 + 1661300 0.0060421889 0.0031575757 0.0061314656 + 1661400 0.0051604568 0.0029387947 0.0054787071 + 1661500 0.0039866245 0.0029745906 0.0049367573 + 1661600 0.0047174977 0.0026904799 0.0050123734 + 1661700 0.0055219782 0.0023859158 0.0051037645 + 1661800 0.0060091626 0.0021386659 0.0050963006 + 1661900 0.0050718072 0.0022067945 0.0047030746 + 1662000 0.0051264118 0.0023353282 0.004858484 + 1662100 0.0057876788 0.0022137304 0.0050623536 + 1662200 0.006232967 0.0022591156 0.005326904 + 1662300 0.0039007661 0.0022059713 0.0041258796 + 1662400 0.0043124977 0.002171334 0.0042938915 + 1662500 0.0066670548 0.0024615018 0.0057429428 + 1662600 0.004880622 0.0028793199 0.0052815011 + 1662700 0.0055160279 0.0028478548 0.0055627747 + 1662800 0.004026052 0.0028378733 0.0048194458 + 1662900 0.0057740517 0.0022302971 0.0050722132 + 1663000 0.0053948804 0.0017920656 0.0044473583 + 1663100 0.006059327 0.0017720004 0.0047543254 + 1663200 0.0038945727 0.0022120312 0.0041288912 + 1663300 0.0042958871 0.0020429395 0.0041573214 + 1663400 0.0057461125 0.0021608615 0.0049890263 + 1663500 0.0041811358 0.0023129427 0.0043708455 + 1663600 0.005645341 0.0024428526 0.0052214188 + 1663700 0.0043021859 0.0023406812 0.0044581633 + 1663800 0.0042794586 0.0022767785 0.0043830745 + 1663900 0.0053155737 0.0021853468 0.0048016058 + 1664000 0.0055359699 0.0022688418 0.0049935769 + 1664100 0.0043487798 0.0027477216 0.0048881367 + 1664200 0.0057622319 0.0025479869 0.0053840855 + 1664300 0.0041054003 0.0027639276 0.0047845543 + 1664400 0.0050423111 0.002611687 0.0050934495 + 1664500 0.0041676246 0.0027628858 0.0048141386 + 1664600 0.0044064064 0.0025950363 0.0047638145 + 1664700 0.0063654834 0.0025912658 0.0057242772 + 1664800 0.0037591846 0.0028182631 0.0046684867 + 1664900 0.0051102948 0.0026352324 0.0051504557 + 1665000 0.0045697699 0.0025132346 0.0047624182 + 1665100 0.0054347 0.0023805013 0.0050553927 + 1665200 0.0038348396 0.0021006918 0.0039881519 + 1665300 0.0045687353 0.0018347562 0.0040834307 + 1665400 0.0040440087 0.001929404 0.0039198145 + 1665500 0.0053638063 0.0023500693 0.0049900677 + 1665600 0.0056168035 0.0025553248 0.0053198452 + 1665700 0.0056441918 0.0023328468 0.0051108475 + 1665800 0.0052240947 0.0026471907 0.0052184248 + 1665900 0.0043667484 0.0020976483 0.0042469073 + 1666000 0.0070553084 0.0017689638 0.0052414984 + 1666100 0.0045010993 0.0027760855 0.0049914703 + 1666200 0.0050384736 0.0031253638 0.0056052375 + 1666300 0.0062887696 0.0025248986 0.0056201524 + 1666400 0.0048786208 0.0024929864 0.0048941825 + 1666500 0.0048121625 0.0028115785 0.0051800647 + 1666600 0.0054910279 0.0028185713 0.0055211866 + 1666700 0.0064129159 0.0026337759 0.005790133 + 1666800 0.00394915 0.0023890681 0.0043327903 + 1666900 0.0058393348 0.00242743 0.0053014776 + 1667000 0.0055569388 0.0022669661 0.0050020219 + 1667100 0.0043139593 0.0020672071 0.0041904839 + 1667200 0.0039280895 0.0022459029 0.0041792594 + 1667300 0.0041205701 0.0023801076 0.0044082007 + 1667400 0.0040490185 0.0024662325 0.0044591088 + 1667500 0.0043288015 0.0025908975 0.0047214795 + 1667600 0.0049353417 0.0029587692 0.0053878827 + 1667700 0.0058500785 0.00277019 0.0056495255 + 1667800 0.0054083692 0.0024442106 0.0051061423 + 1667900 0.0047453866 0.0023319351 0.0046675551 + 1668000 0.004668751 0.0027615797 0.0050594806 + 1668100 0.0039640207 0.0029996558 0.0049506973 + 1668200 0.0071190497 0.0024664348 0.005970342 + 1668300 0.0052500882 0.0027167508 0.0053007785 + 1668400 0.0073804299 0.0030077526 0.0066403079 + 1668500 0.0054632238 0.0035811093 0.0062700398 + 1668600 0.0057622938 0.003728927 0.0065650559 + 1668700 0.004927204 0.0036518755 0.0060769837 + 1668800 0.0056471226 0.0036722041 0.0064516472 + 1668900 0.0056201813 0.0034289284 0.0061951114 + 1669000 0.0059798605 0.0026911534 0.0056343661 + 1669100 0.0042588261 0.0029045287 0.0050006697 + 1669200 0.0057535553 0.0029177693 0.0057495973 + 1669300 0.0059575128 0.0023303365 0.0052625498 + 1669400 0.0072521271 0.0027254232 0.0062948295 + 1669500 0.0058593831 0.0029932816 0.0058771968 + 1669600 0.006087663 0.0021671832 0.0051634548 + 1669700 0.0055054043 0.0023930151 0.0051027063 + 1669800 0.0064196322 0.0022152737 0.0053749364 + 1669900 0.0051364857 0.0020632227 0.0045913368 + 1670000 0.0037112987 0.0023483304 0.0041749852 + 1670100 0.0056354075 0.0023266757 0.0051003528 + 1670200 0.0044154287 0.0025804129 0.0047536318 + 1670300 0.0046145721 0.0028996057 0.0051708404 + 1670400 0.0059226772 0.00291928 0.0058343477 + 1670500 0.0047651399 0.0027379466 0.0050832889 + 1670600 0.0043479653 0.0023936051 0.0045336193 + 1670700 0.0044652588 0.002614307 0.0048120516 + 1670800 0.0064001146 0.0025306355 0.0056806919 + 1670900 0.0039946415 0.0026423038 0.0046084164 + 1671000 0.0058219097 0.0024879661 0.0053534372 + 1671100 0.0045490748 0.0024175363 0.0046565341 + 1671200 0.0067963508 0.00252812 0.0058731989 + 1671300 0.0060305673 0.0025989623 0.0055671322 + 1671400 0.0061429659 0.0028273765 0.0058508676 + 1671500 0.0040083655 0.0026534562 0.0046263236 + 1671600 0.0043689544 0.0025538108 0.0047041556 + 1671700 0.0070438939 0.0019720231 0.0054389397 + 1671800 0.0046457414 0.0021982079 0.0044847837 + 1671900 0.0042808706 0.0022843206 0.0043913116 + 1672000 0.0047353365 0.0025819102 0.0049125836 + 1672100 0.0052071021 0.0024208409 0.0049837115 + 1672200 0.0050186981 0.002286286 0.0047564265 + 1672300 0.0048933875 0.0020675912 0.0044760554 + 1672400 0.0044907373 0.0019044442 0.004114729 + 1672500 0.0045742345 0.0017034927 0.0039548737 + 1672600 0.0047816364 0.0018307732 0.0041842349 + 1672700 0.0052730453 0.0018771162 0.0044724431 + 1672800 0.0041716452 0.0022153459 0.0042685776 + 1672900 0.0075758202 0.0022126985 0.0059414225 + 1673000 0.0045495313 0.0022658636 0.0045050861 + 1673100 0.0065355561 0.0020784744 0.0052951935 + 1673200 0.0036081116 0.0022543852 0.0040302526 + 1673300 0.0070309335 0.0018237573 0.0052842949 + 1673400 0.0057456014 0.002155931 0.0049838442 + 1673500 0.0052604783 0.0028471553 0.0054362969 + 1673600 0.0060537036 0.0032649658 0.0062445231 + 1673700 0.0052716695 0.0033719953 0.0059666451 + 1673800 0.0056043447 0.0030599226 0.005818311 + 1673900 0.0059634088 0.0024340743 0.0053691896 + 1674000 0.0044433102 0.0022988574 0.0044857991 + 1674100 0.005031647 0.002270119 0.0047466328 + 1674200 0.004934976 0.0020195983 0.0044485318 + 1674300 0.0041767123 0.0020538248 0.0041095504 + 1674400 0.0044253591 0.0020453402 0.0042234466 + 1674500 0.0054133573 0.0019256854 0.0045900722 + 1674600 0.0060049743 0.0018058804 0.0047614537 + 1674700 0.0047893159 0.0018082569 0.0041654983 + 1674800 0.0041482199 0.0025053937 0.0045470956 + 1674900 0.005897393 0.0023846704 0.0052872935 + 1675000 0.0043249409 0.0023584928 0.0044871747 + 1675100 0.0052864161 0.002449895 0.005051803 + 1675200 0.0043817824 0.0026122493 0.0047689078 + 1675300 0.0036498021 0.0021754867 0.0039718737 + 1675400 0.0066517682 0.002137703 0.0054116202 + 1675500 0.0058179312 0.0023839454 0.0052474584 + 1675600 0.0050479837 0.0022854145 0.0047699689 + 1675700 0.0056658974 0.0022684261 0.00505711 + 1675800 0.0053701034 0.0024292575 0.0050723553 + 1675900 0.0052140416 0.0028332593 0.0053995454 + 1676000 0.005193704 0.0029137972 0.0054700734 + 1676100 0.0056192238 0.0027241047 0.0054898164 + 1676200 0.0046704112 0.0021208312 0.0044195492 + 1676300 0.0073079744 0.0022712854 0.005868179 + 1676400 0.0046937462 0.0026426806 0.0049528838 + 1676500 0.0046819246 0.0027392955 0.0050436802 + 1676600 0.0077736859 0.0026384036 0.0064645146 + 1676700 0.0042932236 0.0025789576 0.0046920286 + 1676800 0.0047880601 0.0028518242 0.0052084475 + 1676900 0.0046994239 0.0024662982 0.0047792959 + 1677000 0.0044526836 0.0021237793 0.0043153345 + 1677100 0.0048462877 0.0018086983 0.0041939805 + 1677200 0.0057596198 0.0020089855 0.0048437983 + 1677300 0.004765693 0.0021280567 0.0044736712 + 1677400 0.0049918184 0.0023456138 0.0048025245 + 1677500 0.0046506549 0.0024621396 0.0047511338 + 1677600 0.0044056961 0.0023741546 0.0045425831 + 1677700 0.0042520153 0.0020846427 0.0041774314 + 1677800 0.005272929 0.0018529924 0.0044482621 + 1677900 0.0052907819 0.0021100096 0.0047140664 + 1678000 0.0045965721 0.0021841967 0.0044465721 + 1678100 0.0044993211 0.0028275118 0.0050420214 + 1678200 0.0040950044 0.0024992894 0.0045147994 + 1678300 0.006233082 0.0022580113 0.0053258563 + 1678400 0.0061519775 0.0024541826 0.005482109 + 1678500 0.0059736987 0.0023914278 0.0053316076 + 1678600 0.004765154 0.0025636762 0.0049090254 + 1678700 0.0052769411 0.0025706881 0.0051679325 + 1678800 0.0045050097 0.0020647353 0.0042820447 + 1678900 0.0046965016 0.0019902873 0.0043018467 + 1679000 0.0042392627 0.001989093 0.0040756051 + 1679100 0.0065566223 0.0021855178 0.0054126053 + 1679200 0.0049283397 0.0022759748 0.004701642 + 1679300 0.004364316 0.0022778889 0.0044259507 + 1679400 0.0054596287 0.0023191742 0.0050063352 + 1679500 0.0047966753 0.0022130527 0.0045739163 + 1679600 0.0038061905 0.002523013 0.0043963724 + 1679700 0.0038694565 0.0028867277 0.0047912258 + 1679800 0.0066086948 0.0019312346 0.0051839516 + 1679900 0.0054318078 0.0020729362 0.0047464041 + 1680000 0.0040666806 0.0025528787 0.0045544481 + 1680100 0.0039192983 0.0025506282 0.0044796578 + 1680200 0.0065304373 0.0021797319 0.0053939315 + 1680300 0.0058555667 0.0022422304 0.0051242671 + 1680400 0.00497179 0.0023645557 0.0048116086 + 1680500 0.0061938574 0.0026182845 0.0056668237 + 1680600 0.0055790697 0.0030498584 0.0057958068 + 1680700 0.0045871072 0.0024100072 0.004667724 + 1680800 0.0062536666 0.0021866325 0.005264609 + 1680900 0.0042103943 0.0026254424 0.0046977459 + 1681000 0.0054681649 0.0026367119 0.0053280743 + 1681100 0.0058112092 0.0026119613 0.0054721658 + 1681200 0.0064976915 0.0023781614 0.0055762439 + 1681300 0.0052958866 0.0028303157 0.0054368849 + 1681400 0.0047053735 0.0031188399 0.005434766 + 1681500 0.0050203496 0.0028076728 0.0052786261 + 1681600 0.0054562048 0.0025577798 0.0052432557 + 1681700 0.0051029791 0.0020308906 0.0045425132 + 1681800 0.0041911665 0.0021526481 0.0042154878 + 1681900 0.0063341062 0.0020341022 0.0051516701 + 1682000 0.0045759739 0.0020636815 0.0043159187 + 1682100 0.0055545952 0.0017995643 0.0045334666 + 1682200 0.0061756557 0.0015056166 0.0045451971 + 1682300 0.0046506744 0.0018418036 0.0041308074 + 1682400 0.0039656973 0.0020281506 0.0039800172 + 1682500 0.00418757 0.0026119373 0.0046730069 + 1682600 0.0042552369 0.0027306068 0.0048249812 + 1682700 0.0052340919 0.002467474 0.0050436286 + 1682800 0.0043308696 0.0026712975 0.0048028974 + 1682900 0.0047985996 0.0024107658 0.0047725766 + 1683000 0.004083534 0.0023715377 0.004381402 + 1683100 0.0061986477 0.0024605377 0.0055114346 + 1683200 0.0036603276 0.0028189022 0.0046204697 + 1683300 0.0064414645 0.0018210297 0.004991438 + 1683400 0.0045469459 0.001985766 0.0042237159 + 1683500 0.0049545923 0.0019645325 0.0044031209 + 1683600 0.0044529317 0.0019452125 0.0041368898 + 1683700 0.0049703385 0.0020634298 0.0045097683 + 1683800 0.0035124136 0.0022963329 0.0040250989 + 1683900 0.004572062 0.0020764672 0.004326779 + 1684000 0.0049608447 0.0016244194 0.0040660852 + 1684100 0.0054322903 0.00161079 0.0042844954 + 1684200 0.0054473554 0.0015977897 0.00427891 + 1684300 0.0062460068 0.0011848094 0.0042590159 + 1684400 0.0047893125 0.0013284399 0.0036856796 + 1684500 0.0049167206 0.001922315 0.0043422634 + 1684600 0.0041980534 0.0023952621 0.0044614915 + 1684700 0.0064638105 0.0025559655 0.0057373723 + 1684800 0.0044134619 0.0028040921 0.0049763429 + 1684900 0.0049852014 0.0024190095 0.0048726633 + 1685000 0.0054071938 0.001904972 0.0045663252 + 1685100 0.0047315058 0.0019482137 0.0042770017 + 1685200 0.0041659639 0.0021978555 0.0042482909 + 1685300 0.0051491407 0.0022645104 0.004798853 + 1685400 0.0048588215 0.0023017344 0.0046931856 + 1685500 0.0045156894 0.0020394309 0.0042619968 + 1685600 0.0052260789 0.001865246 0.0044374568 + 1685700 0.0048740883 0.0022075673 0.0046065326 + 1685800 0.0056985141 0.0027011814 0.0055059188 + 1685900 0.0059506278 0.0028425648 0.0057713894 + 1686000 0.0060105924 0.0026380509 0.0055963893 + 1686100 0.005537876 0.0032006499 0.0059263233 + 1686200 0.0048023579 0.0031400613 0.0055037218 + 1686300 0.0048689734 0.0029762922 0.00537274 + 1686400 0.0062473108 0.002618879 0.0056937273 + 1686500 0.0060680083 0.0027213028 0.0057079007 + 1686600 0.0034242988 0.0026624062 0.0043478033 + 1686700 0.0047737045 0.0030919031 0.0054414608 + 1686800 0.0044016584 0.0038268359 0.0059932772 + 1686900 0.0046118021 0.0038480479 0.0061179193 + 1687000 0.0052832458 0.0030269723 0.0056273199 + 1687100 0.0044349999 0.0023775374 0.0045603889 + 1687200 0.0034882327 0.0022161458 0.0039330103 + 1687300 0.0039968633 0.0023201418 0.004287348 + 1687400 0.0045333236 0.002439353 0.0046705982 + 1687500 0.0046022071 0.0024194358 0.0046845846 + 1687600 0.0053633437 0.0027048043 0.0053445751 + 1687700 0.0048163501 0.0030952735 0.0054658208 + 1687800 0.0053938879 0.00276403 0.0054188342 + 1687900 0.0061187767 0.003032598 0.0060441834 + 1688000 0.0081699462 0.0025968412 0.0066179866 + 1688100 0.0068151434 0.0024728479 0.0058271764 + 1688200 0.0053185903 0.0021886109 0.0048063545 + 1688300 0.0048220956 0.0023947246 0.0047680998 + 1688400 0.0045974207 0.0022447761 0.0045075691 + 1688500 0.0052862793 0.0015078315 0.0041096721 + 1688600 0.0045305773 0.0017857927 0.0040156862 + 1688700 0.0047898829 0.0021206851 0.0044782056 + 1688800 0.0040698493 0.0022043061 0.0042074351 + 1688900 0.0036741568 0.0023294953 0.0041378693 + 1689000 0.0043949357 0.001949062 0.0041121944 + 1689100 0.0049792334 0.0017621217 0.0042128382 + 1689200 0.0042284594 0.0017501508 0.0038313457 + 1689300 0.0054618908 0.001948421 0.0046366954 + 1689400 0.0056180968 0.0021982751 0.0049634321 + 1689500 0.0054610231 0.0021701226 0.0048579699 + 1689600 0.0061663776 0.0018447043 0.0048797183 + 1689700 0.0035744062 0.0022269457 0.0039862238 + 1689800 0.0046034242 0.0022405421 0.00450629 + 1689900 0.0041684995 0.0021134226 0.004165106 + 1690000 0.0053704491 0.0021917708 0.0048350387 + 1690100 0.0049024976 0.0023892794 0.0048022275 + 1690200 0.0043605526 0.0026051306 0.0047513401 + 1690300 0.0042730254 0.0024092475 0.0045123772 + 1690400 0.0047991744 0.0035104922 0.0058725859 + 1690500 0.0051640332 0.0038558102 0.0063974828 + 1690600 0.0053145161 0.0030268852 0.0056426236 + 1690700 0.004311195 0.0029255276 0.0050474439 + 1690800 0.0076618483 0.0025436467 0.0063147126 + 1690900 0.0045675339 0.0025388098 0.0047868929 + 1691000 0.003161084 0.002566905 0.004122751 + 1691100 0.004645984 0.0027559985 0.0050426937 + 1691200 0.0045650019 0.0022231156 0.0044699525 + 1691300 0.0054380256 0.0020816368 0.0047581651 + 1691400 0.0050606647 0.0022733037 0.0047640996 + 1691500 0.0047776376 0.0023803065 0.0047318 + 1691600 0.0057796495 0.0026529246 0.0054975959 + 1691700 0.0045695919 0.0031610662 0.0054101622 + 1691800 0.0043170488 0.0031021327 0.0052269301 + 1691900 0.0056303906 0.0028096152 0.005580823 + 1692000 0.0040783486 0.0023524593 0.0043597715 + 1692100 0.0051848571 0.0023374568 0.0048893787 + 1692200 0.0066734727 0.0021429007 0.0054275006 + 1692300 0.003954522 0.0025329019 0.0044792682 + 1692400 0.0046572183 0.0022182295 0.0045104542 + 1692500 0.0048055864 0.0021301251 0.0044953747 + 1692600 0.0058359437 0.0026042565 0.005476635 + 1692700 0.0050682397 0.0031838419 0.0056783661 + 1692800 0.0055552039 0.0028068759 0.0055410778 + 1692900 0.0047064967 0.0025734316 0.0048899105 + 1693000 0.0055812831 0.0024444527 0.0051914905 + 1693100 0.0049172731 0.0023905282 0.0048107486 + 1693200 0.0043107341 0.0026834304 0.0048051198 + 1693300 0.0040104992 0.0028315151 0.0048054327 + 1693400 0.0041511781 0.0031967489 0.0052399069 + 1693500 0.0056688434 0.0029163668 0.0057065007 + 1693600 0.0041892114 0.0029082641 0.0049701416 + 1693700 0.0043811812 0.0030264195 0.0051827821 + 1693800 0.0050186526 0.0030470358 0.0055171539 + 1693900 0.0058572409 0.002815903 0.0056987638 + 1694000 0.0066441996 0.0025972194 0.0058674114 + 1694100 0.0055687861 0.0030277697 0.0057686567 + 1694200 0.0045897401 0.0036658178 0.0059248305 + 1694300 0.0053527916 0.0036297701 0.0062643472 + 1694400 0.0050348546 0.0039862782 0.0064643707 + 1694500 0.0038856891 0.0042482192 0.0061607068 + 1694600 0.0052414161 0.0036265039 0.0062062634 + 1694700 0.005251428 0.0030393016 0.0056239888 + 1694800 0.0048399151 0.0026921285 0.0050742742 + 1694900 0.0042836767 0.0026495055 0.0047578776 + 1695000 0.0056744439 0.002498666 0.0052915564 + 1695100 0.0043619303 0.0028164343 0.0049633219 + 1695200 0.0046680824 0.0033175497 0.0056151215 + 1695300 0.0056509575 0.002951843 0.0057331737 + 1695400 0.004058772 0.0027220188 0.0047196956 + 1695500 0.003362815 0.0030043567 0.0046594923 + 1695600 0.0052080571 0.0025265849 0.0050899255 + 1695700 0.0051810409 0.0027531568 0.0053032004 + 1695800 0.0047457754 0.0026682904 0.0050041018 + 1695900 0.0064383256 0.0024917235 0.0056605869 + 1696000 0.0058515983 0.0029157385 0.005795822 + 1696100 0.0034550813 0.003118056 0.0048186038 + 1696200 0.0047055488 0.0030217435 0.0053377559 + 1696300 0.0042718004 0.0035084174 0.0056109441 + 1696400 0.0060615192 0.0031439824 0.0061273864 + 1696500 0.0058516319 0.0029257318 0.0058058318 + 1696600 0.0059370406 0.0031330337 0.0060551709 + 1696700 0.0050327833 0.0028897556 0.0053668286 + 1696800 0.0054389936 0.0029705954 0.0056476 + 1696900 0.00499077 0.0026462231 0.0051026177 + 1697000 0.0058084211 0.0029200646 0.0057788969 + 1697100 0.0046134829 0.0027522022 0.0050229008 + 1697200 0.0051584866 0.0032285995 0.0057675421 + 1697300 0.0050951902 0.0036424449 0.0061502338 + 1697400 0.0069170279 0.0037332118 0.0071376864 + 1697500 0.0053546971 0.003394432 0.006029947 + 1697600 0.0052823475 0.0031385044 0.0057384099 + 1697700 0.0040149477 0.0028600753 0.0048361824 + 1697800 0.005077328 0.0025063812 0.0050053786 + 1697900 0.0061936897 0.0021016269 0.0051500835 + 1698000 0.005979668 0.0028158132 0.0057589311 + 1698100 0.0034545555 0.0035730417 0.0052733307 + 1698200 0.0054287887 0.0029984426 0.0056704245 + 1698300 0.0054824973 0.0029605912 0.0056590078 + 1698400 0.0050214881 0.0028679029 0.0053394166 + 1698500 0.0052882914 0.0025780092 0.0051808402 + 1698600 0.0041070577 0.0022773748 0.0042988173 + 1698700 0.0052198413 0.0020902674 0.0046594081 + 1698800 0.0031265792 0.0017542697 0.0032931329 + 1698900 0.0050922356 0.0020752502 0.0045815849 + 1699000 0.0043081584 0.0020369456 0.0041573673 + 1699100 0.004376303 0.0019941704 0.004148132 + 1699200 0.0045681212 0.0023063384 0.0045547105 + 1699300 0.0051444518 0.0021935202 0.0047255551 + 1699400 0.0043794602 0.0019588327 0.0041143482 + 1699500 0.0042621805 0.0020360386 0.0041338305 + 1699600 0.0043402516 0.0023318358 0.0044680534 + 1699700 0.0040970654 0.0020567879 0.0040733123 + 1699800 0.0049630556 0.0022420039 0.0046847578 + 1699900 0.0040429424 0.0022995459 0.0042894316 + 1700000 0.0052270956 0.0023752439 0.004947955 + 1700100 0.0046633174 0.0024788783 0.0047741048 + 1700200 0.0035666483 0.0028766263 0.004632086 + 1700300 0.0052487188 0.0025694989 0.0051528526 + 1700400 0.0050522501 0.0023409198 0.0048275741 + 1700500 0.0043218665 0.0023260608 0.0044532295 + 1700600 0.0040820204 0.002237391 0.0042465104 + 1700700 0.0028837166 0.0023926425 0.0038119718 + 1700800 0.0041381632 0.0024456111 0.0044823633 + 1700900 0.0039350182 0.0026959405 0.0046327073 + 1701000 0.0065503777 0.0029913914 0.0062154054 + 1701100 0.0063311586 0.0034317131 0.0065478302 + 1701200 0.0052954639 0.0034442687 0.0060506298 + 1701300 0.007069623 0.0024332104 0.0059127905 + 1701400 0.0050162373 0.0023401649 0.0048090942 + 1701500 0.0049219011 0.0023346174 0.0047571155 + 1701600 0.004940269 0.002251442 0.0046829807 + 1701700 0.005004208 0.0023097505 0.0047727591 + 1701800 0.0038146592 0.0023392795 0.0042168071 + 1701900 0.0052633222 0.0021927678 0.0047833092 + 1702000 0.005942817 0.0024264724 0.0053514527 + 1702100 0.0067625456 0.0023329272 0.0056613676 + 1702200 0.005867638 0.0023141196 0.0052020977 + 1702300 0.0050066537 0.0020618454 0.0045260578 + 1702400 0.0052837217 0.0015740742 0.004174656 + 1702500 0.0042546341 0.0012172743 0.003311352 + 1702600 0.0040546677 0.001376304 0.0033719608 + 1702700 0.0042247524 0.0019021361 0.0039815064 + 1702800 0.0044024263 0.0022428951 0.0044097143 + 1702900 0.003554181 0.0025169635 0.0042662869 + 1703000 0.0051941493 0.002658837 0.0052153323 + 1703100 0.0064851731 0.0029102799 0.006102201 + 1703200 0.0044394906 0.0036666271 0.0058516889 + 1703300 0.0052860184 0.0033929901 0.0059947023 + 1703400 0.0042453794 0.0030860551 0.0051755778 + 1703500 0.0046188069 0.0032001574 0.0054734765 + 1703600 0.0058018274 0.0030559072 0.0059114941 + 1703700 0.0051556322 0.0031179058 0.0056554435 + 1703800 0.007388635 0.0031200525 0.0067566463 + 1703900 0.0054766953 0.0029466655 0.0056422265 + 1704000 0.0070384824 0.0031791781 0.0066434312 + 1704100 0.0052285045 0.0029855251 0.0055589296 + 1704200 0.0058637538 0.0037642824 0.0066503487 + 1704300 0.0047495232 0.0035450477 0.0058827036 + 1704400 0.0053629609 0.002900639 0.0055402213 + 1704500 0.0044037487 0.0025723891 0.0047398592 + 1704600 0.0045464141 0.0029437427 0.0051814309 + 1704700 0.0041940045 0.0030050544 0.0050692909 + 1704800 0.004852129 0.0036245081 0.0060126653 + 1704900 0.005666361 0.0034182937 0.0062072058 + 1705000 0.0071776192 0.0021744692 0.0057072037 + 1705100 0.0039497652 0.0024285575 0.0043725826 + 1705200 0.0042707019 0.0026196742 0.0047216603 + 1705300 0.0041154203 0.0026546097 0.0046801681 + 1705400 0.0068224563 0.0023996927 0.0057576204 + 1705500 0.0068348673 0.0027190325 0.0060830687 + 1705600 0.0057905469 0.0035196226 0.0063696574 + 1705700 0.0054584883 0.0036211537 0.0063077534 + 1705800 0.005992795 0.003988566 0.0069381448 + 1705900 0.0061176163 0.0040045673 0.0070155815 + 1706000 0.0052303943 0.0041267183 0.006701053 + 1706100 0.0054748347 0.0040339252 0.0067285704 + 1706200 0.0049715031 0.0032305374 0.0056774491 + 1706300 0.0060995242 0.0025432503 0.0055453599 + 1706400 0.0072808759 0.0024810372 0.0060645933 + 1706500 0.0060517198 0.002555957 0.0055345379 + 1706600 0.0054015946 0.002688232 0.0053468294 + 1706700 0.0046204497 0.0030949629 0.0053690905 + 1706800 0.0054856129 0.0030774398 0.0057773899 + 1706900 0.0038846484 0.0028045632 0.0047165386 + 1707000 0.005605176 0.0025559039 0.0053147014 + 1707100 0.0063035908 0.0023362423 0.0054387909 + 1707200 0.0032606451 0.0024377487 0.0040425975 + 1707300 0.0041770135 0.0022299753 0.0042858491 + 1707400 0.0052255938 0.0022988101 0.0048707821 + 1707500 0.0053686023 0.0026795847 0.0053219437 + 1707600 0.0048594793 0.0031022794 0.0054940544 + 1707700 0.0042640796 0.0028778068 0.0049765335 + 1707800 0.006193646 0.0027733342 0.0058217693 + 1707900 0.0042832167 0.0032635936 0.0053717393 + 1708000 0.005740699 0.0029906601 0.0058161604 + 1708100 0.0045195285 0.0029209907 0.0051454461 + 1708200 0.0047848213 0.0024147873 0.0047698165 + 1708300 0.0040559689 0.0027575835 0.0047538807 + 1708400 0.0051733639 0.0029828248 0.0055290898 + 1708500 0.0058192678 0.0026349093 0.0054990802 + 1708600 0.0058257144 0.0027200145 0.0055873583 + 1708700 0.0040593282 0.0029561594 0.0049541101 + 1708800 0.0058962629 0.0027352636 0.0056373305 + 1708900 0.0057608803 0.0027178401 0.0055532733 + 1709000 0.0045929986 0.0028266557 0.0050872722 + 1709100 0.0056881802 0.002734702 0.0055343532 + 1709200 0.0041530857 0.0028053507 0.0048494476 + 1709300 0.0045994357 0.0024743339 0.0047381187 + 1709400 0.006110385 0.0027434324 0.0057508875 + 1709500 0.0050877044 0.0023635762 0.0048676807 + 1709600 0.0050724447 0.0021020657 0.0045986595 + 1709700 0.0054349921 0.0019652787 0.0046403139 + 1709800 0.0044126841 0.0024041282 0.0045759961 + 1709900 0.0048973676 0.0026142109 0.005024634 + 1710000 0.0056945975 0.002955427 0.0057582367 + 1710100 0.0045383987 0.0025655947 0.0047993378 + 1710200 0.0049651686 0.0021502801 0.0045940741 + 1710300 0.0056125712 0.0022698021 0.0050322395 + 1710400 0.0040203534 0.0024006116 0.0043793793 + 1710500 0.0042680598 0.0023648035 0.0044654892 + 1710600 0.0038999878 0.0026275126 0.0045470379 + 1710700 0.0044872507 0.002624845 0.0048334137 + 1710800 0.0054108493 0.0024641204 0.0051272728 + 1710900 0.0046510807 0.0027794633 0.0050686671 + 1711000 0.0057748728 0.0024513809 0.0052937011 + 1711100 0.0066710651 0.002281516 0.0055649309 + 1711200 0.0051543517 0.002383307 0.0049202145 + 1711300 0.0040212031 0.0021987094 0.0041778953 + 1711400 0.0038204959 0.0020059996 0.0038863999 + 1711500 0.0052003563 0.001894583 0.0044541333 + 1711600 0.0052450181 0.0018755714 0.0044571037 + 1711700 0.0044268212 0.0020946304 0.0042734565 + 1711800 0.0046410035 0.0027555824 0.0050398263 + 1711900 0.0039964498 0.0027589413 0.0047259439 + 1712000 0.0045707678 0.0029262011 0.0051758759 + 1712100 0.0069728945 0.0025466032 0.0059785747 + 1712200 0.0069787334 0.0027669404 0.0062017857 + 1712300 0.0050488212 0.0029759723 0.005460939 + 1712400 0.0045372769 0.0024141589 0.0046473498 + 1712500 0.0036632711 0.0023480942 0.0041511104 + 1712600 0.0040493307 0.0026345001 0.00462753 + 1712700 0.0051185588 0.0024548427 0.0049741333 + 1712800 0.0063319113 0.0023913174 0.005507805 + 1712900 0.0038482342 0.0025153739 0.0044094266 + 1713000 0.0052531868 0.0025648112 0.0051503641 + 1713100 0.0043221809 0.0023819064 0.0045092298 + 1713200 0.0040488295 0.0024938388 0.0044866221 + 1713300 0.0034815887 0.0028477668 0.0045613613 + 1713400 0.0069551758 0.0022939215 0.0057171721 + 1713500 0.0046601484 0.0020863917 0.0043800585 + 1713600 0.0043473424 0.0019242305 0.0040639381 + 1713700 0.0061160806 0.0020682434 0.0050785018 + 1713800 0.0048695556 0.0020798042 0.0044765386 + 1713900 0.004386583 0.0018929904 0.0040520117 + 1714000 0.003617531 0.0018935487 0.0036740522 + 1714100 0.0055593089 0.0018911349 0.0046273573 + 1714200 0.0055492905 0.0021031358 0.0048344272 + 1714300 0.0050519071 0.0022898359 0.0047763214 + 1714400 0.0065134153 0.0026657881 0.0058716097 + 1714500 0.0059094416 0.002798812 0.0057073653 + 1714600 0.003030212 0.0033786505 0.0048700829 + 1714700 0.0054995183 0.0029987457 0.0057055399 + 1714800 0.0045332873 0.0030002794 0.0052315068 + 1714900 0.0047554468 0.0029682094 0.0053087809 + 1715000 0.0045571993 0.0033160534 0.0055590499 + 1715100 0.0041083944 0.0033362842 0.0053583846 + 1715200 0.0064534214 0.0033180601 0.0064943535 + 1715300 0.0044793255 0.0034465794 0.0056512474 + 1715400 0.0066164133 0.0029496673 0.0062061832 + 1715500 0.0047903435 0.0028070931 0.0051648403 + 1715600 0.0052635067 0.0026362027 0.0052268349 + 1715700 0.0061787184 0.0026437183 0.0056848063 + 1715800 0.0059356212 0.0026228276 0.0055442662 + 1715900 0.0044268122 0.0022982922 0.0044771138 + 1716000 0.0043068213 0.0017643304 0.0038840941 + 1716100 0.0047392486 0.0018469664 0.0041795654 + 1716200 0.0049031223 0.0019443363 0.0043575918 + 1716300 0.0048723343 0.0019530477 0.0043511497 + 1716400 0.0053186602 0.0018474202 0.0044651983 + 1716500 0.0064577179 0.0022431782 0.0054215862 + 1716600 0.0050365953 0.0025324558 0.005011405 + 1716700 0.0055860761 0.0023988723 0.0051482691 + 1716800 0.0045058421 0.0020811562 0.0042988753 + 1716900 0.0066774513 0.0020500894 0.0053366474 + 1717000 0.0053081983 0.0023926411 0.0050052699 + 1717100 0.0049226675 0.0018788266 0.004301702 + 1717200 0.0047429106 0.0019461555 0.0042805568 + 1717300 0.0043918202 0.00219018 0.004351779 + 1717400 0.0051760108 0.0027239917 0.0052715596 + 1717500 0.0055262013 0.0026636038 0.005383531 + 1717600 0.0052019872 0.0022188323 0.0047791854 + 1717700 0.0043256876 0.0020541768 0.0041832261 + 1717800 0.0061362836 0.0020860453 0.0051062474 + 1717900 0.0049318044 0.0022271322 0.0046545046 + 1718000 0.0063310709 0.0021509366 0.0052670106 + 1718100 0.0031400469 0.0022180625 0.0037635544 + 1718200 0.0058672646 0.0015992941 0.0044870884 + 1718300 0.005501664 0.0015817365 0.0042895867 + 1718400 0.007399268 0.0017988331 0.0054406603 + 1718500 0.005647364 0.0024225645 0.0052021265 + 1718600 0.0046122171 0.002515872 0.0047859476 + 1718700 0.0051578326 0.0021557094 0.0046943301 + 1718800 0.0061455964 0.0023346366 0.0053594223 + 1718900 0.0050302803 0.0022943734 0.0047702145 + 1719000 0.0052448309 0.0022131931 0.0047946333 + 1719100 0.0047375 0.0024386867 0.004770425 + 1719200 0.0048274542 0.002342042 0.0047180546 + 1719300 0.0045974955 0.0025212784 0.0047841082 + 1719400 0.0039130925 0.0025179971 0.0044439723 + 1719500 0.0044118658 0.0024602814 0.0046317467 + 1719600 0.0042501032 0.0022705626 0.0043624103 + 1719700 0.005148765 0.0023329716 0.0048671293 + 1719800 0.0065884223 0.0022724462 0.0055151853 + 1719900 0.0057893272 0.0025280772 0.0053775116 + 1720000 0.0039262618 0.0023200431 0.0042525001 + 1720100 0.0043194733 0.0018757418 0.0040017325 + 1720200 0.0036842619 0.0024320726 0.0042454202 + 1720300 0.0045055693 0.0025501001 0.004767685 + 1720400 0.0053250507 0.0021969348 0.0048178582 + 1720500 0.0035097888 0.0022775072 0.0040049814 + 1720600 0.0043507809 0.0024788686 0.0046202686 + 1720700 0.0056125793 0.0025338382 0.0052962795 + 1720800 0.0046382883 0.0024968535 0.0047797611 + 1720900 0.0036828848 0.0024986228 0.0043112926 + 1721000 0.0051619273 0.0024405518 0.0049811879 + 1721100 0.0054839583 0.0025706392 0.0052697749 + 1721200 0.0035185473 0.0027741261 0.0045059112 + 1721300 0.0049987706 0.0027162868 0.0051766192 + 1721400 0.0057953802 0.0029424959 0.0057949096 + 1721500 0.005339383 0.0028524083 0.0054803858 + 1721600 0.0061516767 0.0028811485 0.0059089269 + 1721700 0.0061138948 0.0032301147 0.0062392973 + 1721800 0.0048433325 0.0032649751 0.0056488028 + 1721900 0.0038829032 0.0032204822 0.0051315986 + 1722000 0.0052525715 0.0027097048 0.0052949548 + 1722100 0.005715345 0.0022174199 0.0050304413 + 1722200 0.0057932738 0.0027049408 0.0055563178 + 1722300 0.0044757507 0.0030238012 0.0052267098 + 1722400 0.005385232 0.0034046023 0.0060551462 + 1722500 0.0042436286 0.0033536195 0.0054422805 + 1722600 0.0039266112 0.0034237158 0.0053563447 + 1722700 0.0056726653 0.0033070821 0.0060990971 + 1722800 0.0046421528 0.0033422137 0.0056270233 + 1722900 0.0056067267 0.0032033124 0.0059628732 + 1723000 0.0043274614 0.0029657644 0.0050956868 + 1723100 0.0041569879 0.0031639539 0.0052099713 + 1723200 0.0048022181 0.0031633643 0.005526956 + 1723300 0.0041883405 0.0026627485 0.0047241973 + 1723400 0.0054332696 0.0024027988 0.0050769862 + 1723500 0.0042678354 0.0028786853 0.0049792605 + 1723600 0.0050356665 0.0035168842 0.0059953763 + 1723700 0.0043505865 0.0029525602 0.0050938645 + 1723800 0.0051669957 0.002839718 0.0053828487 + 1723900 0.0071313016 0.0031380267 0.0066479642 + 1724000 0.0053900647 0.0035031784 0.0061561009 + 1724100 0.0041937606 0.0030331305 0.0050972471 + 1724200 0.0042885383 0.0024221973 0.0045329623 + 1724300 0.0051166255 0.0023741116 0.0048924507 + 1724400 0.0054996237 0.0025234336 0.0052302797 + 1724500 0.006429137 0.0021946966 0.0053590375 + 1724600 0.0058595949 0.0020283983 0.0049124176 + 1724700 0.0057186214 0.0026045802 0.0054192142 + 1724800 0.0047587641 0.0028391677 0.0051813719 + 1724900 0.0044472364 0.0031137516 0.0053026258 + 1725000 0.0051496095 0.0032019723 0.0057365458 + 1725100 0.0052368616 0.0027898061 0.005367324 + 1725200 0.0051941165 0.0026210101 0.0051774893 + 1725300 0.0068196887 0.0029057719 0.0062623374 + 1725400 0.0053533412 0.0031629732 0.0057978208 + 1725500 0.0048306667 0.0031713054 0.0055488992 + 1725600 0.0046665806 0.0028387265 0.0051355591 + 1725700 0.0038887382 0.0027266892 0.0046406776 + 1725800 0.005007118 0.0025072005 0.0049716414 + 1725900 0.0055171566 0.0023616003 0.0050770758 + 1726000 0.0053510286 0.0026404986 0.005274208 + 1726100 0.0048009866 0.0026220074 0.004984993 + 1726200 0.005082385 0.0024150674 0.0049165537 + 1726300 0.0054322831 0.0024426962 0.005116398 + 1726400 0.0058297968 0.0025140805 0.0053834336 + 1726500 0.0059649815 0.0024011478 0.0053370372 + 1726600 0.004681758 0.002340689 0.0046449918 + 1726700 0.0050198922 0.0021882901 0.0046590183 + 1726800 0.0038030879 0.0024583189 0.0043301512 + 1726900 0.0061457232 0.0022809602 0.0053058083 + 1727000 0.0053925099 0.0023622989 0.0050164249 + 1727100 0.0049296754 0.0024577831 0.0048841078 + 1727200 0.0053559728 0.002772386 0.0054085289 + 1727300 0.0046535087 0.0031395394 0.0054299382 + 1727400 0.0058269508 0.0025864915 0.0054544439 + 1727500 0.0056573156 0.0022101168 0.0049945768 + 1727600 0.0049905603 0.0026989189 0.0051552103 + 1727700 0.0042830655 0.0032261846 0.0053342559 + 1727800 0.004136421 0.0038153686 0.0058512633 + 1727900 0.0050951756 0.0037449495 0.0062527312 + 1728000 0.004984718 0.003363139 0.0058165549 + 1728100 0.0062848429 0.0026769432 0.0057702643 + 1728200 0.0055187654 0.0023633992 0.0050796665 + 1728300 0.0048460343 0.0023358505 0.004721008 + 1728400 0.003883629 0.0027304114 0.004641885 + 1728500 0.0057253995 0.0026354122 0.0054533823 + 1728600 0.0033845529 0.0024941065 0.0041599411 + 1728700 0.0043987178 0.0021830253 0.0043480192 + 1728800 0.0051691732 0.0020954875 0.00463969 + 1728900 0.0047818633 0.0024723949 0.0048259682 + 1729000 0.0059213791 0.0027525474 0.0056669762 + 1729100 0.0037043638 0.0027132143 0.0045364559 + 1729200 0.0049229976 0.0023786015 0.0048016393 + 1729300 0.0056054439 0.0018014237 0.0045603531 + 1729400 0.0055803481 0.0015483738 0.0042949514 + 1729500 0.005147778 0.0019259366 0.0044596086 + 1729600 0.0043834613 0.0022836024 0.0044410872 + 1729700 0.0036220115 0.002342922 0.0041256308 + 1729800 0.0034882855 0.0019767045 0.0036935951 + 1729900 0.005726432 0.001635036 0.0044535142 + 1730000 0.0053960458 0.002032577 0.0046884433 + 1730100 0.0049832093 0.0026482624 0.0051009358 + 1730200 0.004992416 0.0029584959 0.0054157006 + 1730300 0.007169188 0.0029183722 0.0064469569 + 1730400 0.006694281 0.0030796447 0.0063744861 + 1730500 0.0036663244 0.00328594 0.0050904591 + 1730600 0.00541351 0.002819862 0.0054843239 + 1730700 0.0038812311 0.0025601518 0.0044704452 + 1730800 0.0042066962 0.002390096 0.0044605792 + 1730900 0.0048221125 0.0022593902 0.0046327737 + 1731000 0.0045878249 0.0022064825 0.0044645526 + 1731100 0.0045032409 0.0022094804 0.0044259192 + 1731200 0.0053829766 0.0021162293 0.0047656631 + 1731300 0.0054229911 0.0026563715 0.0053255 + 1731400 0.0048727321 0.0026593119 0.0050576098 + 1731500 0.0050701517 0.0027212787 0.005216744 + 1731600 0.0058280367 0.0028867846 0.0057552714 + 1731700 0.0049363692 0.0027790302 0.0052086494 + 1731800 0.0065099456 0.0023096429 0.0055137567 + 1731900 0.0052811615 0.0024409337 0.0050402554 + 1732000 0.00415052 0.0027978293 0.0048406634 + 1732100 0.0057540991 0.0026030488 0.0054351445 + 1732200 0.0064227028 0.0024695042 0.0056306782 + 1732300 0.0058190592 0.0025921061 0.0054561743 + 1732400 0.0053035167 0.0028277873 0.0054381119 + 1732500 0.0053347273 0.0022297704 0.0048554565 + 1732600 0.0044781971 0.0022605925 0.0044647052 + 1732700 0.0040456283 0.0024149924 0.0044062 + 1732800 0.0056952881 0.0025863984 0.005389548 + 1732900 0.0053296985 0.0023044754 0.0049276864 + 1733000 0.0048537642 0.0021982371 0.0045871991 + 1733100 0.0055571555 0.0023427814 0.0050779439 + 1733200 0.0066740143 0.0025596194 0.0058444858 + 1733300 0.005742997 0.0028620027 0.005688634 + 1733400 0.00542953 0.0025419716 0.0052143184 + 1733500 0.0046905538 0.0024765892 0.0047852211 + 1733600 0.0056352494 0.0023095493 0.0050831486 + 1733700 0.0062935727 0.001883593 0.0049812108 + 1733800 0.004699127 0.0017781318 0.0040909833 + 1733900 0.0056426007 0.002091474 0.0048686916 + 1734000 0.0058376099 0.002551493 0.0054246916 + 1734100 0.0050429739 0.0028676163 0.0053497051 + 1734200 0.0043305002 0.0031475932 0.0052790113 + 1734300 0.005275518 0.0029090427 0.0055055867 + 1734400 0.0067785509 0.0026489317 0.0059852497 + 1734500 0.0050183952 0.0026840051 0.0051539965 + 1734600 0.0047755779 0.0028659719 0.0052164517 + 1734700 0.0037668462 0.0031484145 0.0050024091 + 1734800 0.0059527531 0.0027164336 0.0056463043 + 1734900 0.0062094667 0.002320614 0.005376836 + 1735000 0.0053030555 0.0021161976 0.0047262952 + 1735100 0.0046568977 0.0021988977 0.0044909645 + 1735200 0.0059010002 0.002175547 0.0050799456 + 1735300 0.0061958903 0.0025758372 0.005625377 + 1735400 0.0057136582 0.0026114738 0.0054236649 + 1735500 0.0063750067 0.0028612729 0.0059989715 + 1735600 0.0053494701 0.0036945892 0.0063275315 + 1735700 0.0045713244 0.0033849831 0.0056349318 + 1735800 0.0031216763 0.0030313018 0.0045677519 + 1735900 0.005746327 0.0027460987 0.005574369 + 1736000 0.0037211408 0.0025645001 0.0043959991 + 1736100 0.0046107849 0.0023545481 0.0046239189 + 1736200 0.0034428428 0.0023382377 0.0040327619 + 1736300 0.0057378037 0.0019393258 0.004763401 + 1736400 0.0051073543 0.0018510839 0.0043648599 + 1736500 0.0047645752 0.0020340178 0.0043790822 + 1736600 0.0044756915 0.0021659472 0.0043688267 + 1736700 0.0044055098 0.0022710857 0.0044394225 + 1736800 0.0039354443 0.0022252823 0.0041622588 + 1736900 0.0050097028 0.00269379 0.0051595031 + 1737000 0.0038847536 0.0029975155 0.0049095426 + 1737100 0.0054737758 0.0023939834 0.0050881074 + 1737200 0.0057023108 0.0022977667 0.0051043728 + 1737300 0.0050720907 0.0026275556 0.0051239752 + 1737400 0.004792361 0.0026940309 0.0050527711 + 1737500 0.0047087909 0.0025377319 0.0048553399 + 1737600 0.0048197957 0.0020295456 0.0044017888 + 1737700 0.0056974338 0.0019884191 0.0047926248 + 1737800 0.004759503 0.0024262807 0.0047688486 + 1737900 0.0040707207 0.0028045247 0.0048080825 + 1738000 0.004908504 0.0025846737 0.005000578 + 1738100 0.0050711837 0.0021813444 0.0046773177 + 1738200 0.0038418351 0.0020475184 0.0039384216 + 1738300 0.0044093039 0.0022440428 0.0044142471 + 1738400 0.0051710477 0.0020102751 0.0045554002 + 1738500 0.0060714285 0.0018332096 0.0048214908 + 1738600 0.0040593712 0.0022940007 0.0042919725 + 1738700 0.0049104673 0.002320081 0.0047369517 + 1738800 0.005423353 0.0020358958 0.0047052024 + 1738900 0.0045692734 0.00233662 0.0045855593 + 1739000 0.0045416316 0.0022874765 0.0045228108 + 1739100 0.0055753237 0.0022750601 0.0050191648 + 1739200 0.0049883781 0.0020795018 0.0045347192 + 1739300 0.0052509514 0.0022655514 0.004850004 + 1739400 0.0049064071 0.0027838297 0.0051987019 + 1739500 0.0054466575 0.0031100791 0.0057908559 + 1739600 0.0043893121 0.0028232451 0.0049836097 + 1739700 0.0045384814 0.0025698277 0.0048036115 + 1739800 0.0055498063 0.0028554241 0.0055869694 + 1739900 0.0056696306 0.0027186415 0.0055091628 + 1740000 0.0040783746 0.0022509839 0.0042583089 + 1740100 0.0062706811 0.0021177705 0.0052041213 + 1740200 0.0041165122 0.0025020284 0.0045281243 + 1740300 0.0037188771 0.0027873811 0.0046177659 + 1740400 0.0060068161 0.0021157174 0.0050721972 + 1740500 0.0058949877 0.0014310699 0.0043325092 + 1740600 0.0050029427 0.0013524356 0.0038148215 + 1740700 0.0058466683 0.0015518032 0.0044294603 + 1740800 0.0045495757 0.0016134569 0.0038527012 + 1740900 0.0057265965 0.0020679528 0.0048865121 + 1741000 0.005983955 0.0021213563 0.0050665842 + 1741100 0.0054298262 0.0022750248 0.0049475174 + 1741200 0.0035873618 0.0026966411 0.0044622958 + 1741300 0.0037042601 0.0026854833 0.0045086738 + 1741400 0.00664289 0.0018453586 0.005114906 + 1741500 0.0040297643 0.001944766 0.0039281656 + 1741600 0.003546476 0.0021347868 0.0038803179 + 1741700 0.0055404349 0.0019220741 0.0046490069 + 1741800 0.005490077 0.0020441281 0.0047462754 + 1741900 0.0034403536 0.0022584051 0.0039517041 + 1742000 0.0059071961 0.0022870484 0.0051944965 + 1742100 0.0054958224 0.0022377165 0.0049426916 + 1742200 0.0046305943 0.0020838146 0.0043629352 + 1742300 0.0053569438 0.00186912 0.0045057408 + 1742400 0.0043393579 0.0019951129 0.0041308906 + 1742500 0.0037326919 0.0021895512 0.0040267355 + 1742600 0.0058527136 0.0022864891 0.0051671216 + 1742700 0.0044893954 0.0021836092 0.0043932335 + 1742800 0.0049433752 0.0019914996 0.004424567 + 1742900 0.0037032368 0.0021444734 0.0039671602 + 1743000 0.0040560155 0.0019152222 0.0039115423 + 1743100 0.0042913932 0.001996273 0.0041084431 + 1743200 0.0045073107 0.0021475658 0.0043660078 + 1743300 0.0058356831 0.0017770545 0.0046493048 + 1743400 0.0047261453 0.001632658 0.0039588076 + 1743500 0.0058233083 0.0018122343 0.0046783939 + 1743600 0.0047004673 0.0022741379 0.0045876491 + 1743700 0.0055245323 0.0020215978 0.0047407036 + 1743800 0.00578952 0.0014774067 0.0043269361 + 1743900 0.0055296633 0.0016479642 0.0043695954 + 1744000 0.0068234601 0.0023564261 0.0057148479 + 1744100 0.0042560935 0.0023690165 0.0044638125 + 1744200 0.0050880539 0.0021193128 0.0046235893 + 1744300 0.0051833256 0.002049027 0.0046001951 + 1744400 0.0056838606 0.0022660567 0.0050635819 + 1744500 0.0067776304 0.0019263329 0.0052621979 + 1744600 0.003907055 0.0023832976 0.0043063012 + 1744700 0.0051463204 0.0025410232 0.0050739778 + 1744800 0.0052379929 0.0029426217 0.0055206963 + 1744900 0.0038929115 0.0033297261 0.0052457685 + 1745000 0.0044453848 0.0034127598 0.0056007226 + 1745100 0.0049866859 0.0033395938 0.0057939783 + 1745200 0.0055932312 0.0024621668 0.0052150853 + 1745300 0.0043326859 0.0018693986 0.0040018925 + 1745400 0.0052243159 0.0017183416 0.0042896846 + 1745500 0.0037261437 0.001913941 0.0037479023 + 1745600 0.0039822146 0.0021261749 0.0040861712 + 1745700 0.0050067391 0.0021309063 0.0045951607 + 1745800 0.0041976078 0.0023213329 0.004387343 + 1745900 0.0048218209 0.0020789667 0.0044522067 + 1746000 0.005147471 0.0017156651 0.004249186 + 1746100 0.0040947402 0.0021074055 0.0041227854 + 1746200 0.0053714291 0.0020561375 0.0046998878 + 1746300 0.0047363799 0.001983398 0.004314585 + 1746400 0.003749191 0.0021120408 0.0039573458 + 1746500 0.0056112019 0.0019405974 0.0047023608 + 1746600 0.0046720811 0.0018981587 0.0041976986 + 1746700 0.0050362688 0.0025482266 0.0050270152 + 1746800 0.005483912 0.0030906163 0.0057897293 + 1746900 0.0061140692 0.0025580433 0.0055673117 + 1747000 0.0075131498 0.002046077 0.0057439555 + 1747100 0.0067377668 0.00189538 0.0052116246 + 1747200 0.0047331985 0.0023162136 0.0046458347 + 1747300 0.0053225524 0.0018998918 0.0045195855 + 1747400 0.0036700965 0.0019674262 0.0037738018 + 1747500 0.0045876359 0.0024144239 0.004672401 + 1747600 0.0054887798 0.0029831269 0.0056846357 + 1747700 0.0056493822 0.0028568019 0.0056373572 + 1747800 0.0052499945 0.0032635379 0.0058475196 + 1747900 0.0046888022 0.0030162028 0.0053239726 + 1748000 0.0045277272 0.0025887871 0.0048172778 + 1748100 0.0054692111 0.0024868052 0.0051786825 + 1748200 0.004127615 0.0028054089 0.0048369694 + 1748300 0.0051393173 0.0024609425 0.0049904502 + 1748400 0.0051882494 0.0026960292 0.0052496207 + 1748500 0.0048994391 0.0026399012 0.0050513439 + 1748600 0.0043996888 0.0022298669 0.0043953387 + 1748700 0.0064274864 0.0023549668 0.0055184953 + 1748800 0.006274093 0.0022570724 0.0053451025 + 1748900 0.0052026486 0.002758453 0.0053191316 + 1749000 0.004009864 0.0028613902 0.0048349951 + 1749100 0.0048703204 0.0028675516 0.0052646624 + 1749200 0.0052245597 0.0028838042 0.0054552672 + 1749300 0.004817961 0.0028736314 0.0052449716 + 1749400 0.0051264134 0.0029320523 0.0054552089 + 1749500 0.0073661639 0.0023041125 0.0059296463 + 1749600 0.0043055506 0.0024079303 0.0045270685 + 1749700 0.0047532897 0.0020166188 0.0043561286 + 1749800 0.0051933931 0.0017493598 0.0043054829 + 1749900 0.0049806923 0.0017576068 0.0042090413 + 1750000 0.0036417494 0.0019395724 0.0037319959 + 1750100 0.003840005 0.0018811299 0.0037711324 + 1750200 0.0056635717 0.0019623688 0.004749908 + 1750300 0.0065692611 0.0023040241 0.0055373323 + 1750400 0.0052113071 0.0026860758 0.005251016 + 1750500 0.0036410161 0.0033532161 0.0051452787 + 1750600 0.0055006939 0.0032920537 0.0059994265 + 1750700 0.007096572 0.0026647171 0.0061575611 + 1750800 0.0050566881 0.002760163 0.0052490016 + 1750900 0.0053497695 0.0024858525 0.0051189422 + 1751000 0.0054475209 0.002640353 0.0053215547 + 1751100 0.0055406795 0.0026261803 0.0053532335 + 1751200 0.0036095297 0.0027771921 0.0045537576 + 1751300 0.003771049 0.002593969 0.0044500322 + 1751400 0.0039921933 0.0030453833 0.0050102909 + 1751500 0.0050324697 0.0029510642 0.0054279829 + 1751600 0.005664032 0.0026041898 0.0053919555 + 1751700 0.0038714686 0.0026424 0.0045478885 + 1751800 0.004410971 0.0023977291 0.0045687539 + 1751900 0.0047793964 0.0024451759 0.004797535 + 1752000 0.0056694252 0.0028355191 0.0056259393 + 1752100 0.0044059303 0.0027307674 0.0048993112 + 1752200 0.0036211125 0.002562308 0.0043445743 + 1752300 0.0047929515 0.0025269973 0.0048860282 + 1752400 0.0047792779 0.0026175864 0.0049698873 + 1752500 0.0053357584 0.002855661 0.0054818546 + 1752600 0.0047721485 0.0027612361 0.005110028 + 1752700 0.0051034349 0.0028221558 0.0053340026 + 1752800 0.0052759311 0.0026457975 0.0052425449 + 1752900 0.0039342517 0.0027428813 0.0046792708 + 1753000 0.0064508463 0.0026345971 0.005809623 + 1753100 0.0068647903 0.0027416857 0.0061204497 + 1753200 0.0064463746 0.0028482681 0.0060210931 + 1753300 0.0047305928 0.0025866046 0.0049149433 + 1753400 0.003443834 0.0025018195 0.0041968316 + 1753500 0.0055246018 0.0025632188 0.0052823587 + 1753600 0.0065642887 0.0030686517 0.0062995125 + 1753700 0.0050383242 0.0029283343 0.0054081345 + 1753800 0.0047845833 0.0027391813 0.0050940934 + 1753900 0.0059913298 0.0026551777 0.0056040354 + 1754000 0.0055249961 0.0026399483 0.0053592823 + 1754100 0.0044615362 0.0024935474 0.0046894597 + 1754200 0.0053601971 0.0023018231 0.0049400451 + 1754300 0.0031417986 0.0025888855 0.0041352395 + 1754400 0.0048475742 0.002389492 0.0047754074 + 1754500 0.0048044586 0.0026318205 0.004996515 + 1754600 0.0040643428 0.0030238884 0.0050243072 + 1754700 0.0046313093 0.002897246 0.0051767185 + 1754800 0.0066412028 0.0025758437 0.0058445607 + 1754900 0.0045584059 0.0024877318 0.0047313222 + 1755000 0.0063288676 0.0026912977 0.0058062873 + 1755100 0.0062917476 0.0024243139 0.0055210334 + 1755200 0.0052043884 0.0023621441 0.004923679 + 1755300 0.0053725955 0.0023610806 0.0050054049 + 1755400 0.0043694533 0.002293562 0.0044441523 + 1755500 0.0051508578 0.0021584162 0.004693604 + 1755600 0.0047789279 0.0021904854 0.004542614 + 1755700 0.0057643772 0.0018426952 0.0046798497 + 1755800 0.0045364153 0.0017633178 0.0039960847 + 1755900 0.005349409 0.0018694989 0.0045024111 + 1756000 0.0044423148 0.0021108008 0.0042972526 + 1756100 0.0051941319 0.0021304724 0.0046869592 + 1756200 0.0038357246 0.0024121689 0.0043000646 + 1756300 0.0049703994 0.002061538 0.0045079065 + 1756400 0.0036394093 0.0022033478 0.0039946195 + 1756500 0.0044526621 0.0025282263 0.004719771 + 1756600 0.0040109553 0.0025421677 0.0045163097 + 1756700 0.0051864357 0.0021803224 0.0047330212 + 1756800 0.0076732371 0.0019657416 0.005742413 + 1756900 0.0051793624 0.0024518841 0.0050011015 + 1757000 0.0045633163 0.0028297712 0.0050757785 + 1757100 0.0057156185 0.0023428292 0.0051559852 + 1757200 0.0048347336 0.0019633376 0.0043429331 + 1757300 0.0042042353 0.0020232255 0.0040924975 + 1757400 0.0033656001 0.0025959295 0.0042524359 + 1757500 0.0038702466 0.0029808192 0.0048857062 + 1757600 0.006286415 0.002873339 0.0059674338 + 1757700 0.0055643243 0.0025655075 0.0053041984 + 1757800 0.0049938667 0.0025898882 0.0050478069 + 1757900 0.0068179948 0.0027319535 0.0060876853 + 1758000 0.0057420094 0.0026574842 0.0054836294 + 1758100 0.0049020929 0.0025222139 0.0049349628 + 1758200 0.0046668789 0.0023578443 0.0046548238 + 1758300 0.0046286605 0.0020701523 0.0043483211 + 1758400 0.0045108052 0.0019655011 0.004185663 + 1758500 0.0046233885 0.0020159534 0.0042915274 + 1758600 0.0041456117 0.0021659897 0.0042064079 + 1758700 0.0051782246 0.0019289318 0.0044775892 + 1758800 0.0045746212 0.0021612705 0.0044128419 + 1758900 0.0077424811 0.0026041625 0.006414915 + 1759000 0.0044599219 0.0035705356 0.0057656534 + 1759100 0.0065373173 0.0026687611 0.005886347 + 1759200 0.0053380901 0.0023476053 0.0049749466 + 1759300 0.0036854572 0.0021156971 0.003929633 + 1759400 0.0052732166 0.0018310809 0.0044264922 + 1759500 0.0054625405 0.0017695043 0.0044580984 + 1759600 0.0050989864 0.0021545027 0.0046641601 + 1759700 0.0056697487 0.0023140151 0.0051045945 + 1759800 0.0048036163 0.0025651592 0.0049294391 + 1759900 0.0066365622 0.0021701065 0.0054365395 + 1760000 0.0058820827 0.0022204213 0.0051155089 + 1760100 0.0058255798 0.0020057335 0.004873011 + 1760200 0.0058720848 0.0022649235 0.0051550902 + 1760300 0.0053221326 0.0023306227 0.0049501098 + 1760400 0.0048428638 0.0019462132 0.0043298102 + 1760500 0.0049457944 0.0021150055 0.0045492637 + 1760600 0.0051563363 0.0021394344 0.0046773187 + 1760700 0.0062422111 0.002456977 0.0055293153 + 1760800 0.004972519 0.0024777978 0.0049252095 + 1760900 0.0058191548 0.0025581804 0.0054222956 + 1761000 0.0058589242 0.0023195454 0.0052032347 + 1761100 0.0044741632 0.002366277 0.0045684042 + 1761200 0.0047234054 0.0029343213 0.0052591224 + 1761300 0.0034372568 0.0033588576 0.0050506324 + 1761400 0.0054314571 0.0030128716 0.0056861669 + 1761500 0.0055650354 0.0028475325 0.0055865734 + 1761600 0.0041294886 0.0031608643 0.005193347 + 1761700 0.004710439 0.0031064815 0.0054249007 + 1761800 0.0051489401 0.0030547064 0.0055889504 + 1761900 0.0048898376 0.0028908117 0.0052975287 + 1762000 0.0041400356 0.0026896011 0.0047272749 + 1762100 0.0041153292 0.0023297222 0.0043552358 + 1762200 0.0061146657 0.0023242546 0.0053338166 + 1762300 0.0043538133 0.0026548768 0.0047977693 + 1762400 0.0050189972 0.0029637082 0.0054339959 + 1762500 0.003859436 0.0027595641 0.0046591302 + 1762600 0.0040910028 0.002911193 0.0049247334 + 1762700 0.0040779655 0.0029964208 0.0050035444 + 1762800 0.0062508472 0.0028213474 0.0058979363 + 1762900 0.0058963666 0.0032020578 0.0061041757 + 1763000 0.0055330789 0.0031209309 0.0058442432 + 1763100 0.0061840829 0.0031093313 0.0061530596 + 1763200 0.0057304501 0.0028744931 0.005694949 + 1763300 0.0066838907 0.0024058355 0.005695563 + 1763400 0.0061499035 0.0029665559 0.0059934615 + 1763500 0.0040618285 0.0035568507 0.0055560319 + 1763600 0.0040196835 0.0031507056 0.0051291436 + 1763700 0.0048724074 0.0024303971 0.0048285351 + 1763800 0.0046991752 0.0024985705 0.0048114458 + 1763900 0.0050107177 0.0027343022 0.0052005148 + 1764000 0.0050185802 0.0029683622 0.0054384446 + 1764100 0.004866006 0.0032298905 0.0056248779 + 1764200 0.0035821347 0.0033071952 0.0050702771 + 1764300 0.0054451321 0.0030109296 0.0056909555 + 1764400 0.0050172819 0.0028488798 0.0053183232 + 1764500 0.0055271141 0.002707689 0.0054280655 + 1764600 0.0060708362 0.0023010648 0.0052890544 + 1764700 0.0074247477 0.0024447451 0.0060991131 + 1764800 0.0036788298 0.0034373136 0.0052479876 + 1764900 0.0042358808 0.003479701 0.0055645486 + 1765000 0.0051195677 0.0031467644 0.0056665516 + 1765100 0.0046031175 0.0029567829 0.0052223797 + 1765200 0.0047288973 0.0022340127 0.0045615169 + 1765300 0.0068994347 0.0023721826 0.0057679981 + 1765400 0.0043831128 0.0025344222 0.0046917355 + 1765500 0.0048644325 0.0025755385 0.0049697514 + 1765600 0.0069854098 0.0026202044 0.0060583357 + 1765700 0.0072630577 0.0026085692 0.0061833554 + 1765800 0.0067205096 0.0023127504 0.0056205012 + 1765900 0.0060598137 0.0023281079 0.0053106725 + 1766000 0.0057771635 0.002269321 0.0051127687 + 1766100 0.0039103822 0.0023200114 0.0042446527 + 1766200 0.0061375736 0.0022703678 0.0052912048 + 1766300 0.0040706058 0.0022770093 0.0042805106 + 1766400 0.0042152425 0.001948576 0.0040232657 + 1766500 0.0034265764 0.0020043932 0.0036909112 + 1766600 0.0054639563 0.0020590575 0.0047483485 + 1766700 0.0046924395 0.0021698671 0.0044794271 + 1766800 0.0045292297 0.0024400476 0.0046692778 + 1766900 0.0048551997 0.0020637839 0.0044534525 + 1767000 0.0050079294 0.0022794432 0.0047442835 + 1767100 0.0069337903 0.001999528 0.0054122529 + 1767200 0.0038805317 0.0020346708 0.00394462 + 1767300 0.0059647848 0.0017611073 0.0046968998 + 1767400 0.0048637189 0.0011650154 0.0035588771 + 1767500 0.0060984996 0.0014010857 0.0044026909 + 1767600 0.0052160525 0.0021327381 0.004700014 + 1767700 0.0055470821 0.0021436072 0.0048738117 + 1767800 0.0048510391 0.0020369055 0.0044245263 + 1767900 0.0054070497 0.0017790458 0.0044403281 + 1768000 0.0043708572 0.0019089748 0.004060256 + 1768100 0.0040518453 0.0019619598 0.0039562274 + 1768200 0.0050714221 0.0020866915 0.0045827821 + 1768300 0.005323753 0.0017068329 0.0043271176 + 1768400 0.0045638751 0.002023892 0.0042701743 + 1768500 0.0059003065 0.0024646567 0.0053687139 + 1768600 0.0049066534 0.0026947906 0.005109784 + 1768700 0.0068489917 0.0022641161 0.0056351042 + 1768800 0.0042510009 0.0029146745 0.005006964 + 1768900 0.0057944339 0.0030157024 0.0058676503 + 1769000 0.0043544813 0.0030849147 0.005228136 + 1769100 0.0039011914 0.0026169827 0.0045371004 + 1769200 0.0046844932 0.0027454751 0.005051124 + 1769300 0.0061673357 0.0028124258 0.0058479114 + 1769400 0.0069214398 0.0024992722 0.0059059184 + 1769500 0.0038789042 0.00235156 0.0042607081 + 1769600 0.0041002375 0.0021441195 0.0041622051 + 1769700 0.00403575 0.0021179691 0.0041043148 + 1769800 0.0045756594 0.0028075074 0.0050595898 + 1769900 0.0039400246 0.0028040965 0.0047433274 + 1770000 0.005204059 0.0025583242 0.005119697 + 1770100 0.0058711948 0.0029483714 0.0058381001 + 1770200 0.0052361934 0.002630979 0.005208168 + 1770300 0.0047023753 0.0024430203 0.0047574706 + 1770400 0.0045908241 0.0024594497 0.004718996 + 1770500 0.0057785032 0.0029522005 0.0057963075 + 1770600 0.0051997994 0.0034222023 0.0059814786 + 1770700 0.0049416618 0.0030500653 0.0054822895 + 1770800 0.0049661675 0.0029955153 0.0054398009 + 1770900 0.0064321142 0.0028813089 0.0060471152 + 1771000 0.004261032 0.0031702816 0.0052675083 + 1771100 0.0068024064 0.0028095902 0.0061576496 + 1771200 0.0053259209 0.0027656744 0.0053870261 + 1771300 0.0053442979 0.0027932874 0.005423684 + 1771400 0.0048326742 0.0027707881 0.00514937 + 1771500 0.0046345128 0.0027984688 0.005079518 + 1771600 0.0057706074 0.0027542651 0.0055944859 + 1771700 0.0048530802 0.0028024238 0.0051910492 + 1771800 0.0055409157 0.0025530154 0.0052801848 + 1771900 0.0055911363 0.0025072363 0.0052591237 + 1772000 0.0040757447 0.0026546109 0.0046606415 + 1772100 0.0058964492 0.0022388327 0.0051409913 + 1772200 0.0038905317 0.0020175836 0.0039324546 + 1772300 0.00399064 0.002151522 0.0041156651 + 1772400 0.0049467221 0.0023134491 0.0047481639 + 1772500 0.0041242599 0.0020051436 0.0040350528 + 1772600 0.0054830993 0.0016145022 0.0043132151 + 1772700 0.004681994 0.0019032465 0.0042076654 + 1772800 0.0045499747 0.002562031 0.0048014717 + 1772900 0.0050223167 0.0027183469 0.0051902685 + 1773000 0.004235059 0.0027488046 0.0048332477 + 1773100 0.0040606989 0.0026719993 0.0046706246 + 1773200 0.0054488797 0.0024010905 0.005082961 + 1773300 0.0062052229 0.002264626 0.0053187591 + 1773400 0.0054269835 0.0026401213 0.0053112147 + 1773500 0.0046380591 0.0028636253 0.00514642 + 1773600 0.004549113 0.0026674483 0.0049064649 + 1773700 0.0048622552 0.0023764833 0.0047696245 + 1773800 0.0056222109 0.0021450384 0.0049122204 + 1773900 0.0071084585 0.0017939058 0.0052926002 + 1774000 0.004459918 0.0021342937 0.0043294095 + 1774100 0.0051020282 0.0020863042 0.0045974587 + 1774200 0.0053293032 0.0019718726 0.004594889 + 1774300 0.0046352539 0.0015172904 0.0037987044 + 1774400 0.0063614821 0.0014542566 0.0045852986 + 1774500 0.0053710689 0.0020586972 0.0047022702 + 1774600 0.0055533511 0.0019895532 0.0047228433 + 1774700 0.0054680968 0.002199473 0.0048908019 + 1774800 0.0042172855 0.0027801308 0.004855826 + 1774900 0.0055852535 0.0028298412 0.0055788332 + 1775000 0.0040833234 0.0028824228 0.0048921835 + 1775100 0.0043560454 0.0028346588 0.0049786499 + 1775200 0.0061175753 0.0030111743 0.0060221684 + 1775300 0.0032238608 0.0029474304 0.0045341744 + 1775400 0.0061198982 0.002428581 0.0054407185 + 1775500 0.0079548146 0.0023108139 0.0062260742 + 1775600 0.0049644502 0.00276241 0.0052058503 + 1775700 0.0060934878 0.0025752404 0.005574379 + 1775800 0.005350602 0.0025629638 0.0051964632 + 1775900 0.0051280618 0.0022943512 0.0048183191 + 1776000 0.0047240219 0.0023079589 0.0046330634 + 1776100 0.0041842686 0.0022336587 0.0042931034 + 1776200 0.0050974187 0.002334791 0.0048436767 + 1776300 0.0053821352 0.0026472787 0.0052962984 + 1776400 0.0056731552 0.0027818278 0.0055740839 + 1776500 0.0050670454 0.0028773371 0.0053712735 + 1776600 0.0046221292 0.0029984632 0.0052734174 + 1776700 0.0055535456 0.0028159659 0.0055493516 + 1776800 0.0059875597 0.0024928572 0.0054398592 + 1776900 0.0049587619 0.0025653569 0.0050059975 + 1777000 0.0040677393 0.0027496261 0.0047517165 + 1777100 0.0034271611 0.0028701346 0.0045569405 + 1777200 0.0055770136 0.0024202526 0.005165189 + 1777300 0.0052323678 0.0021988499 0.004774156 + 1777400 0.0041664689 0.0022725353 0.0043232192 + 1777500 0.0039663485 0.0024733917 0.0044255788 + 1777600 0.0063472464 0.0020519986 0.005176034 + 1777700 0.0062397367 0.002386448 0.0054575684 + 1777800 0.0046084284 0.0027630417 0.0050312525 + 1777900 0.0057045911 0.0032707838 0.0060785122 + 1778000 0.0044626995 0.0031800774 0.0053765623 + 1778100 0.0057813672 0.0026079301 0.0054534468 + 1778200 0.0059004454 0.0025130779 0.0054172034 + 1778300 0.0039249344 0.0028642641 0.0047960677 + 1778400 0.0044965644 0.0029340009 0.0051471537 + 1778500 0.0042971531 0.0030673179 0.0051823229 + 1778600 0.0047985103 0.0031130594 0.0054748263 + 1778700 0.004823639 0.0028731663 0.0052473012 + 1778800 0.0043016637 0.002503632 0.0046208571 + 1778900 0.0034058184 0.0022942317 0.0039705329 + 1779000 0.0054909507 0.0023141332 0.0050167105 + 1779100 0.005957912 0.0029305955 0.0058630053 + 1779200 0.0034933304 0.0035989623 0.0053183358 + 1779300 0.00495322 0.0029468239 0.0053847369 + 1779400 0.0059793151 0.0027211616 0.0056641057 + 1779500 0.0038769968 0.0025313243 0.0044395336 + 1779600 0.0037813196 0.0026495168 0.004510635 + 1779700 0.0035656081 0.0031040485 0.0048589962 + 1779800 0.0048257148 0.0026063593 0.0049815158 + 1779900 0.0060898199 0.0025777767 0.0055751099 + 1780000 0.0046471123 0.0026709975 0.0049582481 + 1780100 0.0046240521 0.0024090907 0.0046849914 + 1780200 0.0058371132 0.0021832444 0.0050561986 + 1780300 0.0057681127 0.0022504265 0.0050894195 + 1780400 0.0057722576 0.0025438301 0.0053848631 + 1780500 0.0042416832 0.0031741434 0.0052618468 + 1780600 0.0048474321 0.0028696758 0.0052555213 + 1780700 0.003772141 0.0026399361 0.0044965368 + 1780800 0.0041744501 0.001960199 0.0040148111 + 1780900 0.0041657628 0.0017731268 0.0038234632 + 1781000 0.0048776366 0.0016448013 0.0040455131 + 1781100 0.0063191002 0.0017065806 0.0048167628 + 1781200 0.0044599041 0.001879459 0.0040745681 + 1781300 0.0054328207 0.0023036097 0.0049775761 + 1781400 0.0044055056 0.0023102496 0.0044785844 + 1781500 0.003252073 0.002291964 0.0038925936 + 1781600 0.0055700096 0.0020700076 0.0048114967 + 1781700 0.0053514767 0.0021855871 0.004819517 + 1781800 0.0045026256 0.0019600368 0.0041761729 + 1781900 0.0053511007 0.0020245043 0.0046582491 + 1782000 0.0054313463 0.0021251609 0.0047984017 + 1782100 0.0053387742 0.0022920537 0.0049197316 + 1782200 0.0065387596 0.0023241156 0.0055424114 + 1782300 0.004055933 0.0022686139 0.0042648934 + 1782400 0.0045731281 0.0023143261 0.0045651626 + 1782500 0.005258804 0.0026405442 0.0052288617 + 1782600 0.0046370281 0.0029231546 0.0052054418 + 1782700 0.0073716071 0.0027891061 0.0064173189 + 1782800 0.0054933059 0.0021449847 0.0048487212 + 1782900 0.004688709 0.0021902903 0.0044980143 + 1783000 0.0046070275 0.0025810341 0.0048485554 + 1783100 0.0060217214 0.002394027 0.005357843 + 1783200 0.0053074441 0.0024263392 0.0050385968 + 1783300 0.0046543859 0.0029387726 0.0052296031 + 1783400 0.0056668807 0.002930117 0.0057192848 + 1783500 0.0060303219 0.0027049544 0.0056730034 + 1783600 0.005951856 0.0022164177 0.0051458469 + 1783700 0.0048196162 0.0024817799 0.0048539347 + 1783800 0.0076031405 0.0022558932 0.0059980639 + 1783900 0.0037049606 0.0028503903 0.0046739256 + 1784000 0.0040212042 0.0031334031 0.0051125895 + 1784100 0.0048987818 0.0025960249 0.005007144 + 1784200 0.0059121346 0.0022506871 0.0051605658 + 1784300 0.0045990512 0.0021995184 0.0044631139 + 1784400 0.0042864853 0.0026260286 0.0047357831 + 1784500 0.0038255052 0.0028092062 0.004692072 + 1784600 0.0030588119 0.0027881656 0.0042936746 + 1784700 0.0040570284 0.0023186341 0.0043154528 + 1784800 0.0043872112 0.0018129874 0.0039723179 + 1784900 0.0046845862 0.00175495 0.0040606448 + 1785000 0.0060825824 0.0019738247 0.0049675958 + 1785100 0.0075924044 0.0028160789 0.0065529655 + 1785200 0.0050757213 0.0031374411 0.0056356477 + 1785300 0.0065859585 0.0030621414 0.0063036679 + 1785400 0.0056053785 0.0029720366 0.0057309338 + 1785500 0.0062822537 0.0031291351 0.0062211818 + 1785600 0.0047179706 0.0029443423 0.0052664685 + 1785700 0.0043615292 0.0024588577 0.0046055479 + 1785800 0.0041322789 0.0023354447 0.0043693008 + 1785900 0.0045153953 0.0022922611 0.0045146822 + 1786000 0.0041217835 0.0022508424 0.0042795327 + 1786100 0.0050395437 0.0021488358 0.0046292362 + 1786200 0.0048901237 0.0024726164 0.0048794741 + 1786300 0.0046049755 0.0024318467 0.0046983581 + 1786400 0.0050675449 0.0028623713 0.0053565535 + 1786500 0.0051188968 0.0028093578 0.0053288149 + 1786600 0.0063144773 0.002523197 0.0056311038 + 1786700 0.0056273308 0.0024697832 0.0052394851 + 1786800 0.0058641777 0.001859181 0.004745456 + 1786900 0.003769974 0.0022991978 0.0041547319 + 1787000 0.004155343 0.0026501701 0.004695378 + 1787100 0.0046896192 0.0024061676 0.0047143396 + 1787200 0.0044187429 0.0024693523 0.0046442024 + 1787300 0.0029594881 0.002228887 0.0036855101 + 1787400 0.005720981 0.002086941 0.0049027363 + 1787500 0.0052433211 0.0020375771 0.0046182742 + 1787600 0.0033731947 0.0023766845 0.0040369287 + 1787700 0.0053946692 0.0023280707 0.0049832594 + 1787800 0.0038450071 0.0020653117 0.0039577762 + 1787900 0.0058011883 0.0021315029 0.0049867753 + 1788000 0.0048836285 0.0023042716 0.0047079325 + 1788100 0.0060409569 0.0024436836 0.0054169671 + 1788200 0.0054915145 0.0023972016 0.0051000564 + 1788300 0.0053096412 0.0021909001 0.0048042391 + 1788400 0.0046134145 0.0022054646 0.0044761296 + 1788500 0.0055614033 0.0017865957 0.0045238488 + 1788600 0.0035376907 0.0019443928 0.0036855999 + 1788700 0.0036342501 0.0017978838 0.0035866163 + 1788800 0.0036605705 0.0023307898 0.0041324769 + 1788900 0.0044264074 0.0027176314 0.0048962538 + 1789000 0.0045645148 0.0023610502 0.0046076473 + 1789100 0.0054128415 0.0016410761 0.004305209 + 1789200 0.0044797618 0.0015685684 0.0037734512 + 1789300 0.0050134719 0.0022570514 0.0047246196 + 1789400 0.0035456624 0.0025107962 0.0042559269 + 1789500 0.0054264343 0.002205841 0.0048766641 + 1789600 0.0049377306 0.0019795308 0.00440982 + 1789700 0.0054929627 0.0018279272 0.0045314948 + 1789800 0.0056317395 0.0018387372 0.0046106089 + 1789900 0.0054477424 0.001918861 0.0046001717 + 1790000 0.0061166942 0.0017425682 0.0047531287 + 1790100 0.0047206958 0.0016293485 0.0039528159 + 1790200 0.0050466026 0.0019104786 0.0043943533 + 1790300 0.0055098747 0.0024045502 0.0051164417 + 1790400 0.0041100351 0.0027701659 0.0047930738 + 1790500 0.0054833672 0.0024186698 0.0051175146 + 1790600 0.0038446007 0.0023187968 0.0042110613 + 1790700 0.0035237724 0.0022849663 0.0040193231 + 1790800 0.0048908673 0.0024260437 0.0048332675 + 1790900 0.004583352 0.0023135415 0.00456941 + 1791000 0.0048549088 0.0021225359 0.0045120614 + 1791100 0.0057521822 0.0020858755 0.0049170277 + 1791200 0.0049465905 0.0023389117 0.0047735617 + 1791300 0.0066242164 0.0024416075 0.005701964 + 1791400 0.0036042088 0.0026620747 0.0044360212 + 1791500 0.0038838709 0.0021897137 0.0041013064 + 1791600 0.0072772002 0.0019395536 0.0055213006 + 1791700 0.0064005983 0.0021882377 0.0053385321 + 1791800 0.0039683597 0.0030505669 0.0050037439 + 1791900 0.0056292394 0.0026831906 0.0054538319 + 1792000 0.0056871656 0.0018498849 0.0046490367 + 1792100 0.0060254467 0.0021763085 0.005141958 + 1792200 0.0048516731 0.0026435444 0.0050314772 + 1792300 0.0053022466 0.0026289588 0.0052386583 + 1792400 0.0049425523 0.0020299176 0.00446258 + 1792500 0.0052739601 0.0016919053 0.0042876825 + 1792600 0.0051365909 0.0019345666 0.0044627325 + 1792700 0.0041331536 0.0023882385 0.0044225251 + 1792800 0.0052937532 0.0022958225 0.0049013416 + 1792900 0.0053128167 0.0028033439 0.0054182458 + 1793000 0.0052638617 0.0028096409 0.0054004478 + 1793100 0.0051241865 0.002445513 0.0049675736 + 1793200 0.0040783579 0.0026710147 0.0046783315 + 1793300 0.0062805067 0.0031101245 0.0062013113 + 1793400 0.005943154 0.0030451801 0.0059703262 + 1793500 0.0049224674 0.0029468156 0.0053695925 + 1793600 0.0058270309 0.0024391155 0.0053071072 + 1793700 0.0058299548 0.0026495866 0.0055190175 + 1793800 0.0051110852 0.0023681363 0.0048837486 + 1793900 0.0039492503 0.0024943643 0.0044381359 + 1794000 0.0039914355 0.0028223492 0.0047868839 + 1794100 0.0059978523 0.0026186269 0.0055706948 + 1794200 0.0056554683 0.0028270921 0.0056106429 + 1794300 0.004619497 0.0028630626 0.0051367213 + 1794400 0.0052870487 0.0022770286 0.0048792479 + 1794500 0.0056897904 0.0017861981 0.0045866418 + 1794600 0.0039165268 0.0019003023 0.0038279678 + 1794700 0.0045604543 0.001969831 0.0042144297 + 1794800 0.0044160448 0.0021746743 0.0043481963 + 1794900 0.0058254706 0.0020149964 0.0048822202 + 1795000 0.0059380582 0.0018067001 0.0047293381 + 1795100 0.0066202911 0.0021804784 0.0054389029 + 1795200 0.0054900243 0.0030134827 0.005715604 + 1795300 0.0060153822 0.0027925295 0.0057532254 + 1795400 0.0058207351 0.0024514828 0.0053163759 + 1795500 0.0058946396 0.002399806 0.0053010739 + 1795600 0.0056265761 0.0023844654 0.0051537958 + 1795700 0.0056059041 0.002450215 0.0052093709 + 1795800 0.0047967763 0.0023676529 0.0047285662 + 1795900 0.0042767896 0.0024859965 0.0045909789 + 1796000 0.0034430464 0.0025494097 0.0042440341 + 1796100 0.005215726 0.0022809971 0.0048481123 + 1796200 0.0045562356 0.0022298978 0.0044724201 + 1796300 0.0043491126 0.0025136044 0.0046541833 + 1796400 0.0045600199 0.0025984887 0.0048428735 + 1796500 0.0034345473 0.0022288922 0.0039193335 + 1796600 0.0058832599 0.0018791715 0.0047748385 + 1796700 0.0064036137 0.0017393544 0.0048911331 + 1796800 0.0066724874 0.0015198839 0.0048039987 + 1796900 0.0058135598 0.0017834999 0.0046448614 + 1797000 0.003319867 0.0023055387 0.0039395357 + 1797100 0.0049728983 0.0020983906 0.004545989 + 1797200 0.0042677178 0.0019825045 0.0040830219 + 1797300 0.0042104361 0.0017770067 0.0038493307 + 1797400 0.0062154091 0.0019446376 0.0050037842 + 1797500 0.0043281835 0.0023630485 0.0044933263 + 1797600 0.0055289871 0.0021726597 0.004893958 + 1797700 0.0051531736 0.0021299458 0.0046662734 + 1797800 0.0053781846 0.0021472624 0.0047943377 + 1797900 0.0054897595 0.0024743211 0.0051763121 + 1798000 0.0050022057 0.0019668524 0.0044288755 + 1798100 0.0048799448 0.0017542894 0.0041561372 + 1798200 0.0041060146 0.0019240868 0.0039450159 + 1798300 0.0041274712 0.0021007127 0.0041322024 + 1798400 0.0060308851 0.0019858577 0.004954184 + 1798500 0.003730382 0.002159946 0.0039959934 + 1798600 0.0048111364 0.0019622036 0.0043301848 + 1798700 0.0047630899 0.0017733343 0.0041176676 + 1798800 0.00501451 0.0019162265 0.0043843057 + 1798900 0.0044080898 0.0023343658 0.0045039725 + 1799000 0.0044740597 0.002672373 0.0048744492 + 1799100 0.0045248212 0.0024254856 0.0046525461 + 1799200 0.0051518176 0.0021854981 0.0047211583 + 1799300 0.0047737689 0.0019334957 0.0042830851 + 1799400 0.0053140809 0.0017479017 0.0043634258 + 1799500 0.0050795748 0.0021145 0.0046146032 + 1799600 0.0053631069 0.0022798362 0.0049194904 + 1799700 0.0043960383 0.00209576 0.0042594351 + 1799800 0.0051597263 0.0019462249 0.0044857777 + 1799900 0.0041281448 0.0017238122 0.0037556334 + 1800000 0.0050199322 0.0018336353 0.0043043832 + 1800100 0.0054204362 0.0018285548 0.0044964257 + 1800200 0.0055412333 0.0016496779 0.0043770037 + 1800300 0.0048113097 0.0022128801 0.0045809466 + 1800400 0.0050409066 0.0021017282 0.0045827994 + 1800500 0.0028927146 0.0020448375 0.0034685955 + 1800600 0.0047121491 0.0021203995 0.0044396604 + 1800700 0.0035904741 0.0023243553 0.0040915418 + 1800800 0.0072013401 0.0023519839 0.0058963935 + 1800900 0.0070671509 0.0026557996 0.0061341629 + 1801000 0.0043951041 0.0029656324 0.0051288477 + 1801100 0.0049784295 0.0031797168 0.0056300376 + 1801200 0.0048344439 0.003133135 0.0055125879 + 1801300 0.0050099853 0.0029670405 0.0054328926 + 1801400 0.0045735193 0.0026540108 0.0049050398 + 1801500 0.0052977315 0.00188473 0.0044922072 + 1801600 0.0049562654 0.0018125814 0.0042519932 + 1801700 0.0045675301 0.0023137122 0.0045617934 + 1801800 0.0048071746 0.00239927 0.0047653012 + 1801900 0.0054517467 0.0021838492 0.0048671308 + 1802000 0.0048386263 0.0021204268 0.0045019382 + 1802100 0.0050274556 0.0023877924 0.0048622432 + 1802200 0.0054480685 0.0026230783 0.0053045495 + 1802300 0.006461999 0.0022680816 0.0054485967 + 1802400 0.0058331808 0.0021524903 0.005023509 + 1802500 0.0054084043 0.0026501609 0.00531211 + 1802600 0.005218692 0.0031496215 0.0057181964 + 1802700 0.0058090726 0.0033896076 0.0062487605 + 1802800 0.0078632586 0.0029915859 0.0068617835 + 1802900 0.0058089981 0.0027089198 0.005568036 + 1803000 0.0051654652 0.0022104843 0.0047528618 + 1803100 0.004703662 0.0018466871 0.0041617707 + 1803200 0.0040397084 0.0019100684 0.0038983624 + 1803300 0.0036332072 0.0020431482 0.0038313673 + 1803400 0.004864359 0.001831264 0.0042254407 + 1803500 0.0048880365 0.0015985806 0.004004411 + 1803600 0.0040385033 0.0022234904 0.0042111912 + 1803700 0.0055478957 0.0025472614 0.0052778663 + 1803800 0.0055584698 0.0026285267 0.0053643361 + 1803900 0.0053522914 0.0025015258 0.0051358567 + 1804000 0.0050644693 0.0026985171 0.0051911855 + 1804100 0.0055634785 0.0028769677 0.0056152423 + 1804200 0.0052497919 0.0022671767 0.0048510586 + 1804300 0.0062307075 0.0017298457 0.0047965221 + 1804400 0.0072211907 0.0016212835 0.0051754633 + 1804500 0.0043859804 0.0014603646 0.0036190894 + 1804600 0.0035692032 0.0013195763 0.0030762935 + 1804700 0.0051432347 0.0013458139 0.0038772497 + 1804800 0.0053023912 0.0013947043 0.004004475 + 1804900 0.0059949454 0.0013947318 0.004345369 + 1805000 0.0040003087 0.0015127389 0.0034816409 + 1805100 0.0039385356 0.0016248502 0.0035633482 + 1805200 0.0040802413 0.0017937128 0.0038019566 + 1805300 0.0051402951 0.001982889 0.004512878 + 1805400 0.0041146235 0.0020840224 0.0041091887 + 1805500 0.0052934703 0.002433453 0.0050388329 + 1805600 0.0043038352 0.0024755991 0.004593893 + 1805700 0.0052536304 0.0019706077 0.004556379 + 1805800 0.005897873 0.001744512 0.0046473714 + 1805900 0.0046194686 0.0017818079 0.0040554526 + 1806000 0.0057386222 0.0018847317 0.0047092098 + 1806100 0.0041045571 0.0024567792 0.0044769909 + 1806200 0.0049397588 0.0023933061 0.0048245937 + 1806300 0.0045753957 0.0022770898 0.0045290423 + 1806400 0.0066106763 0.0020850674 0.0053387596 + 1806500 0.0055761992 0.0022584236 0.0050029592 + 1806600 0.0046377816 0.0023891696 0.0046718278 + 1806700 0.0052242301 0.0022455467 0.0048168475 + 1806800 0.0052861273 0.0020562155 0.0046579813 + 1806900 0.0043726188 0.0021346013 0.0042867496 + 1807000 0.0042583586 0.0017538513 0.0038497622 + 1807100 0.0050915543 0.0017042892 0.0042102886 + 1807200 0.0064856959 0.0017434812 0.0049356596 + 1807300 0.0054876027 0.0025260482 0.0052269776 + 1807400 0.0044330924 0.0024317598 0.0046136725 + 1807500 0.0037644098 0.0019539319 0.0038067273 + 1807600 0.0045010455 0.0016861445 0.0039015028 + 1807700 0.0043506116 0.0017510266 0.0038923432 + 1807800 0.0042350624 0.0020291101 0.0041135549 + 1807900 0.0053063717 0.0021161345 0.0047278644 + 1808000 0.0035493615 0.0024457343 0.0041926857 + 1808100 0.0051710292 0.0023805252 0.0049256411 + 1808200 0.0043349716 0.00225242 0.0043860388 + 1808300 0.0056910562 0.0019825513 0.0047836181 + 1808400 0.0033055163 0.0021919589 0.0038188928 + 1808500 0.0047011779 0.0022135335 0.0045273945 + 1808600 0.0047913911 0.001962992 0.0043212548 + 1808700 0.0041808457 0.0016474527 0.0037052127 + 1808800 0.0047888838 0.0021868305 0.0045438592 + 1808900 0.0052044981 0.0022102271 0.004771816 + 1809000 0.0053103584 0.0021204997 0.0047341917 + 1809100 0.0059429301 0.0022822466 0.0052072825 + 1809200 0.0043616877 0.0021582594 0.0043050276 + 1809300 0.0056211318 0.0022094947 0.0049761455 + 1809400 0.0053858218 0.0024898035 0.0051406377 + 1809500 0.0045997225 0.0024521778 0.0047161037 + 1809600 0.0046464994 0.0026325486 0.0049194975 + 1809700 0.006121853 0.0026351219 0.0056482214 + 1809800 0.0055885536 0.0022320107 0.0049826269 + 1809900 0.0039656285 0.0021407902 0.004092623 + 1810000 0.0054741064 0.0021090178 0.0048033045 + 1810100 0.0046794837 0.0021628568 0.0044660402 + 1810200 0.004501564 0.002306516 0.0045221295 + 1810300 0.0049566299 0.0026253834 0.0050649747 + 1810400 0.005197085 0.0025297398 0.00508768 + 1810500 0.0041747829 0.0020617392 0.0041165152 + 1810600 0.0066268802 0.001768072 0.0050297396 + 1810700 0.004466865 0.001828045 0.0040265801 + 1810800 0.0035026532 0.0018272408 0.0035512029 + 1810900 0.0052230362 0.0019031985 0.0044739116 + 1811000 0.0055028143 0.0018439469 0.0045523633 + 1811100 0.0051479723 0.0017012856 0.0042350532 + 1811200 0.0045207911 0.0018257881 0.004050865 + 1811300 0.0061219306 0.0018637351 0.0048768729 + 1811400 0.0050190324 0.0021803421 0.0046506471 + 1811500 0.0038219485 0.0022958085 0.0041769238 + 1811600 0.0046656127 0.0020867296 0.0043830859 + 1811700 0.0044658981 0.0020110084 0.0042090676 + 1811800 0.0058947885 0.0018120185 0.0047133597 + 1811900 0.0061484003 0.0018905092 0.004916675 + 1812000 0.0068288749 0.0025587981 0.005919885 + 1812100 0.0042981429 0.0025838792 0.0046993714 + 1812200 0.0040843189 0.0021741864 0.0041844371 + 1812300 0.0048460519 0.0015443123 0.0039294785 + 1812400 0.0041593146 0.0012292974 0.00327646 + 1812500 0.0044842024 0.0015989783 0.0038060466 + 1812600 0.0050652247 0.0023806845 0.0048737248 + 1812700 0.0052596564 0.0026096978 0.0051984349 + 1812800 0.0057325553 0.0030229081 0.0058444002 + 1812900 0.0041318678 0.0027924931 0.0048261468 + 1813000 0.004841021 0.002278079 0.004660769 + 1813100 0.0054130669 0.0021108995 0.0047751434 + 1813200 0.0042695248 0.0020437136 0.0041451204 + 1813300 0.0041511508 0.0021808827 0.0042240272 + 1813400 0.005056838 0.002210995 0.0046999075 + 1813500 0.0041387626 0.0023634626 0.0044005098 + 1813600 0.0056377233 0.0019866186 0.0047614355 + 1813700 0.005762512 0.0019084257 0.0047446621 + 1813800 0.0051496805 0.0022546792 0.0047892876 + 1813900 0.0058569795 0.002106646 0.0049893781 + 1814000 0.0064430548 0.0018140475 0.0049852385 + 1814100 0.0047837232 0.0021259118 0.0044804006 + 1814200 0.0035031425 0.0020245827 0.0037487857 + 1814300 0.0053258886 0.0018587861 0.0044801219 + 1814400 0.0053185971 0.0025865585 0.0052043055 + 1814500 0.0057137644 0.0028090179 0.0056212613 + 1814600 0.004404868 0.002544911 0.004712932 + 1814700 0.0061318098 0.0021880426 0.0052060427 + 1814800 0.0043665583 0.0022620835 0.0044112489 + 1814900 0.0043501955 0.0023737188 0.0045148307 + 1815000 0.0041959055 0.0022559765 0.0043211488 + 1815100 0.0048135324 0.0026119388 0.0049810993 + 1815200 0.0054796939 0.0023027764 0.0049998133 + 1815300 0.007455992 0.0023829488 0.0060526948 + 1815400 0.004723729 0.0025488219 0.0048737822 + 1815500 0.0049720419 0.0023776897 0.0048248665 + 1815600 0.0049466787 0.0020948787 0.0045295721 + 1815700 0.004929674 0.0020578441 0.004484168 + 1815800 0.0059098459 0.0022254425 0.0051341947 + 1815900 0.0064832342 0.0018257653 0.0050167321 + 1816000 0.003803873 0.0017667317 0.0036389505 + 1816100 0.0042380483 0.001665746 0.0037516604 + 1816200 0.0042837194 0.0014872901 0.0035956832 + 1816300 0.0027343053 0.0017685051 0.003114296 + 1816400 0.0049423757 0.0018415012 0.0042740767 + 1816500 0.0051762762 0.0020181384 0.0045658369 + 1816600 0.0038722831 0.0023461983 0.0042520876 + 1816700 0.0046914089 0.0026487154 0.0049577682 + 1816800 0.0058154498 0.0028353047 0.0056975964 + 1816900 0.004905899 0.0024119757 0.0048265979 + 1817000 0.003818815 0.0023723007 0.0042518737 + 1817100 0.0071954196 0.001922011 0.0054635066 + 1817200 0.0044774708 0.0023346018 0.004538357 + 1817300 0.0047507321 0.0020837197 0.0044219706 + 1817400 0.0047435577 0.0020439072 0.004378627 + 1817500 0.0068178229 0.001724149 0.0050797962 + 1817600 0.006327073 0.002268207 0.0053823132 + 1817700 0.0061924492 0.0024968585 0.0055447046 + 1817800 0.006197334 0.00242807 0.0054783203 + 1817900 0.005683539 0.0025754362 0.0053728031 + 1818000 0.0051314938 0.0023586904 0.0048843475 + 1818100 0.0054999159 0.0026209445 0.0053279344 + 1818200 0.0049351366 0.0028101667 0.0052391793 + 1818300 0.0044161301 0.0022467394 0.0044203034 + 1818400 0.0056616224 0.0018677415 0.0046543213 + 1818500 0.0056775458 0.0018625341 0.0046569512 + 1818600 0.0040073818 0.0024482775 0.0044206607 + 1818700 0.0045972172 0.0025361396 0.0047988324 + 1818800 0.0033365531 0.0022211733 0.003863383 + 1818900 0.0057278802 0.0017202097 0.0045394008 + 1819000 0.0060097756 0.0019301499 0.0048880864 + 1819100 0.0042357548 0.0022413213 0.0043261069 + 1819200 0.0056039546 0.0020537688 0.0048119652 + 1819300 0.0041174601 0.0020894718 0.0041160342 + 1819400 0.0043339104 0.0022104548 0.0043435513 + 1819500 0.0041110696 0.0021997327 0.0042231498 + 1819600 0.0054718355 0.0018912931 0.0045844621 + 1819700 0.0044086238 0.0022234239 0.0043932934 + 1819800 0.0050110799 0.0024839654 0.0049503562 + 1819900 0.0067358346 0.0025793045 0.005894598 + 1820000 0.0045782836 0.0024128948 0.0046662688 + 1820100 0.0047323753 0.0025292139 0.0048584299 + 1820200 0.0035286437 0.0028424632 0.0045792175 + 1820300 0.0055660464 0.0026381349 0.0053776734 + 1820400 0.0050865093 0.0022580472 0.0047615635 + 1820500 0.0042651042 0.002290901 0.004390132 + 1820600 0.0057083276 0.0024441893 0.0052537568 + 1820700 0.0045650607 0.0028427194 0.0050895852 + 1820800 0.0066770237 0.0026953142 0.0059816618 + 1820900 0.0061195402 0.0028273266 0.0058392878 + 1821000 0.0062895214 0.0031064493 0.0062020731 + 1821100 0.0052694618 0.0028414566 0.0054350198 + 1821200 0.0055950455 0.0029415206 0.005695332 + 1821300 0.0055307083 0.0030069414 0.0057290869 + 1821400 0.0051641262 0.0024723805 0.0050140989 + 1821500 0.0058144097 0.0024541587 0.0053159385 + 1821600 0.0062529878 0.0020659494 0.0051435919 + 1821700 0.0051629052 0.0020397902 0.0045809076 + 1821800 0.004543703 0.0019257745 0.0041621283 + 1821900 0.0055451191 0.0019482046 0.0046774429 + 1822000 0.0055833818 0.0016952364 0.0044433071 + 1822100 0.0058352612 0.0022674126 0.0051394552 + 1822200 0.005944804 0.0026154526 0.0055414108 + 1822300 0.0057538992 0.0026422121 0.0054742094 + 1822400 0.004927475 0.0031599356 0.0055851772 + 1822500 0.0065564037 0.0028672766 0.0060942565 + 1822600 0.0054116859 0.0025713919 0.005234956 + 1822700 0.0052683404 0.0019130172 0.0045060285 + 1822800 0.0057627119 0.0020709897 0.0049073245 + 1822900 0.0032544954 0.0024611533 0.0040629753 + 1823000 0.0052897803 0.0025116939 0.0051152576 + 1823100 0.0055209517 0.0027194884 0.0054368319 + 1823200 0.0046823815 0.0024961837 0.0048007933 + 1823300 0.0038589683 0.0028706743 0.0047700102 + 1823400 0.0043683998 0.002897136 0.0050472078 + 1823500 0.0046501789 0.0028886787 0.0051774386 + 1823600 0.0063578379 0.002357525 0.0054867733 + 1823700 0.0050016454 0.0023102323 0.0047719797 + 1823800 0.005470481 0.0024512209 0.0051437233 + 1823900 0.0043523199 0.0025567091 0.0046988665 + 1824000 0.0036466405 0.0023888776 0.0041837085 + 1824100 0.0040739455 0.0025297463 0.0045348913 + 1824200 0.0053224079 0.0024573752 0.0050769978 + 1824300 0.0048236304 0.0027748493 0.0051489799 + 1824400 0.0049100092 0.002963136 0.0053797811 + 1824500 0.0039198478 0.0032396865 0.0051689866 + 1824600 0.0056537411 0.0028908438 0.0056735445 + 1824700 0.0051075199 0.0030773949 0.0055912523 + 1824800 0.0046271392 0.0031932343 0.0054706543 + 1824900 0.0055008533 0.0027408181 0.0054482693 + 1825000 0.0064803393 0.002435504 0.0056250459 + 1825100 0.0044630254 0.0021607935 0.0043574388 + 1825200 0.0046908839 0.0021156162 0.0044244106 + 1825300 0.0056169511 0.002486449 0.0052510421 + 1825400 0.0056087585 0.0031838607 0.0059444215 + 1825500 0.0057248218 0.0040203442 0.0068380299 + 1825600 0.0073423228 0.0035058388 0.0071196383 + 1825700 0.003979594 0.0034071638 0.0053658702 + 1825800 0.0056428183 0.0036942527 0.0064715774 + 1825900 0.0066351399 0.0029154354 0.0061811684 + 1826000 0.0052920264 0.0025865907 0.00519126 + 1826100 0.0053855122 0.0025179265 0.0051686083 + 1826200 0.0046277704 0.0029516302 0.005229361 + 1826300 0.0050127805 0.0025141083 0.0049813362 + 1826400 0.0061839237 0.0020968665 0.0051405164 + 1826500 0.0057607463 0.0016991643 0.0045345316 + 1826600 0.0040933656 0.0018112124 0.0038259158 + 1826700 0.0064049962 0.0021517316 0.0053041907 + 1826800 0.006091037 0.0025781828 0.005576115 + 1826900 0.0056360945 0.0029284798 0.005702495 + 1827000 0.0060928861 0.003587872 0.0065867144 + 1827100 0.0056720534 0.0035963321 0.0063880459 + 1827200 0.0075906578 0.0027357774 0.0064718043 + 1827300 0.005039176 0.0027835442 0.0052637636 + 1827400 0.0052982314 0.0028255569 0.0054332802 + 1827500 0.0046756362 0.0022988761 0.0046001658 + 1827600 0.004802165 0.0019763497 0.0043399152 + 1827700 0.0033257589 0.0022274531 0.0038643501 + 1827800 0.0053073549 0.002475652 0.0050878657 + 1827900 0.0060360692 0.0025184841 0.0054893619 + 1828000 0.0050917559 0.0026499103 0.0051560089 + 1828100 0.0054654898 0.0032242789 0.0059143246 + 1828200 0.00456199 0.0028290574 0.0050744119 + 1828300 0.0055501771 0.0028813219 0.0056130497 + 1828400 0.0050314491 0.0030955024 0.0055719187 + 1828500 0.004785994 0.0025039373 0.0048595438 + 1828600 0.0057807367 0.0022142728 0.0050594792 + 1828700 0.0045551463 0.0022752417 0.0045172277 + 1828800 0.0055491665 0.0026038061 0.0053350365 + 1828900 0.0037147059 0.0024751768 0.0043035086 + 1829000 0.0047517268 0.0025288704 0.0048676109 + 1829100 0.0066094368 0.0021822427 0.0054353249 + 1829200 0.0048464882 0.0023057417 0.0046911226 + 1829300 0.0047882042 0.0025555038 0.004912198 + 1829400 0.0053635892 0.0024945655 0.005134457 + 1829500 0.0066278909 0.0024026486 0.0056648136 + 1829600 0.0066200349 0.0022221081 0.0054804066 + 1829700 0.0044042491 0.0026756166 0.0048433329 + 1829800 0.0073234531 0.0031996435 0.0068041556 + 1829900 0.0052581959 0.0035790705 0.0061670888 + 1830000 0.0035039004 0.0035936995 0.0053182754 + 1830100 0.0073385581 0.0034640101 0.0070759567 + 1830200 0.004938954 0.0031260743 0.0055569657 + 1830300 0.0049568277 0.0028779089 0.0053175975 + 1830400 0.0036013158 0.0030573296 0.0048298522 + 1830500 0.0061105781 0.0031671855 0.0061747357 + 1830600 0.0052200759 0.0030375734 0.0056068295 + 1830700 0.0062275705 0.002874818 0.0059399504 + 1830800 0.0061296935 0.0022317412 0.0052486997 + 1830900 0.0053528336 0.0023210732 0.004955671 + 1831000 0.0048816759 0.0023770409 0.0047797407 + 1831100 0.0048580712 0.0023850182 0.0047761001 + 1831200 0.0043715339 0.0027601381 0.0049117524 + 1831300 0.0047013509 0.0027741834 0.0050881296 + 1831400 0.0048143481 0.0028130008 0.0051825628 + 1831500 0.0049042958 0.0030504252 0.0054642583 + 1831600 0.0058203242 0.0029722202 0.005836911 + 1831700 0.0041161244 0.0028304999 0.0048564048 + 1831800 0.0055260363 0.0023887713 0.0051086172 + 1831900 0.0062498719 0.0026450894 0.0057211982 + 1832000 0.0046661177 0.0028899773 0.0051865821 + 1832100 0.0046876206 0.0029704312 0.0052776195 + 1832200 0.0034724507 0.003001404 0.0047105008 + 1832300 0.0046194843 0.0028973645 0.005171017 + 1832400 0.0058254983 0.0031121484 0.0059793858 + 1832500 0.006334824 0.0027230065 0.0058409277 + 1832600 0.0068156137 0.002483896 0.0058384559 + 1832700 0.0047563145 0.0029155139 0.0052565124 + 1832800 0.0047265646 0.0032537412 0.0055800972 + 1832900 0.0039878173 0.0024737073 0.0044364611 + 1833000 0.0049791779 0.0023674267 0.0048181159 + 1833100 0.0042229519 0.0027111981 0.0047896823 + 1833200 0.0048855338 0.0025667595 0.0049713582 + 1833300 0.0060895489 0.00230643 0.0053036298 + 1833400 0.0033490017 0.0025526019 0.0042009387 + 1833500 0.0052108103 0.0024917503 0.005056446 + 1833600 0.0061813655 0.00230466 0.0053470509 + 1833700 0.0054086844 0.0027200142 0.0053821011 + 1833800 0.00634015 0.002733904 0.0058544466 + 1833900 0.0052414645 0.0032147194 0.0057945027 + 1834000 0.0044772631 0.0031915703 0.0053952232 + 1834100 0.0048544643 0.0025245388 0.0049138454 + 1834200 0.004514759 0.0020443214 0.0042664293 + 1834300 0.0047498309 0.0020691337 0.0044069411 + 1834400 0.0041343415 0.0017252186 0.0037600898 + 1834500 0.0046859675 0.001503296 0.0038096707 + 1834600 0.0042888057 0.001786117 0.0038970135 + 1834700 0.0043864744 0.0022765088 0.0044354767 + 1834800 0.0048572171 0.0023833073 0.0047739688 + 1834900 0.0046152143 0.0025905697 0.0048621204 + 1835000 0.0047362645 0.0020756603 0.0044067905 + 1835100 0.0052343898 0.0021171089 0.0046934101 + 1835200 0.0050298106 0.00214712 0.0046227299 + 1835300 0.0049335613 0.0018313852 0.0042596224 + 1835400 0.0039383615 0.0021550631 0.0040934754 + 1835500 0.0052760136 0.0023504565 0.0049472444 + 1835600 0.0072741115 0.0022399131 0.0058201399 + 1835700 0.0056434479 0.0029361679 0.0057138025 + 1835800 0.0043187436 0.0028328353 0.0049584669 + 1835900 0.0059334448 0.0022190698 0.0051394372 + 1836000 0.0071385803 0.0019367684 0.0054502884 + 1836100 0.0042658796 0.0024015656 0.0045011782 + 1836200 0.0049018677 0.0022017472 0.0046143852 + 1836300 0.0062586425 0.0021982501 0.0052786757 + 1836400 0.0047870215 0.0028632097 0.0052193219 + 1836500 0.0045900394 0.0036932048 0.0059523648 + 1836600 0.0046345259 0.00332229 0.0056033457 + 1836700 0.0052309004 0.0028558819 0.0054304657 + 1836800 0.0038827444 0.002670632 0.0045816703 + 1836900 0.0060035057 0.0018228672 0.0047777177 + 1837000 0.0048591606 0.0019426702 0.0043342883 + 1837100 0.0041449724 0.002444762 0.0044848656 + 1837200 0.0052392827 0.0027587982 0.0053375076 + 1837300 0.0040714415 0.0027232313 0.0047271439 + 1837400 0.0057981526 0.0030381714 0.0058919496 + 1837500 0.0033449321 0.002762782 0.0044091158 + 1837600 0.00711103 0.0022936466 0.0057936066 + 1837700 0.0047345331 0.0026541124 0.0049843904 + 1837800 0.003765338 0.0027831146 0.0046363669 + 1837900 0.0066361561 0.0022923037 0.0055585368 + 1838000 0.0051921494 0.0025550769 0.0051105879 + 1838100 0.0048919293 0.0024807615 0.004888508 + 1838200 0.0043649611 0.0029430032 0.0050913824 + 1838300 0.00453178 0.003330591 0.0055610765 + 1838400 0.0039463582 0.0033183718 0.0052607199 + 1838500 0.0049206927 0.0034866062 0.0059085096 + 1838600 0.0050385132 0.0031018093 0.0055817024 + 1838700 0.0056212816 0.0029045682 0.0056712927 + 1838800 0.0046414223 0.0028899959 0.0051744459 + 1838900 0.0052614446 0.0027395499 0.0053291671 + 1839000 0.0052314514 0.0029799841 0.005554839 + 1839100 0.0048605548 0.0029550639 0.0053473682 + 1839200 0.0067554128 0.0023163997 0.0056413294 + 1839300 0.0049060156 0.0022781267 0.0046928063 + 1839400 0.0049618743 0.0022033716 0.0046455441 + 1839500 0.0035240764 0.002138617 0.0038731233 + 1839600 0.0048552359 0.0019086747 0.0042983611 + 1839700 0.0046275501 0.0022054288 0.0044830511 + 1839800 0.0061433411 0.0027909655 0.0058146412 + 1839900 0.0051115735 0.003362141 0.0058779935 + 1840000 0.0043355778 0.0026649449 0.0047988622 + 1840100 0.0039629117 0.0021480031 0.0040984987 + 1840200 0.0052880168 0.0023072182 0.004909914 + 1840300 0.003703948 0.0027506274 0.0045736643 + 1840400 0.0047837392 0.0022187004 0.0045731971 + 1840500 0.0043066452 0.0019688382 0.0040885151 + 1840600 0.0047048773 0.0018923935 0.0042080753 + 1840700 0.0060854911 0.001803918 0.0047991206 + 1840800 0.0056423561 0.0018479472 0.0046250444 + 1840900 0.0054586248 0.0025023536 0.0051890205 + 1841000 0.0045120561 0.0026589338 0.0048797114 + 1841100 0.0067874675 0.0026447854 0.0059854921 + 1841200 0.0042639452 0.0031006612 0.0051993217 + 1841300 0.0041482533 0.0030352387 0.0050769572 + 1841400 0.0038132532 0.0031679937 0.0050448293 + 1841500 0.0044754075 0.0028690073 0.0050717469 + 1841600 0.0063003909 0.0024604117 0.0055613854 + 1841700 0.005443117 0.0025248425 0.0052038766 + 1841800 0.0059542241 0.0024440751 0.0053746697 + 1841900 0.0056820871 0.0023919089 0.0051885611 + 1842000 0.0056002572 0.0022758944 0.005032271 + 1842100 0.0062841729 0.0027562468 0.0058492381 + 1842200 0.0070072373 0.0030621633 0.0065110379 + 1842300 0.0052901256 0.0029242559 0.0055279896 + 1842400 0.0064250211 0.0027124332 0.0058747483 + 1842500 0.0032013169 0.0026860044 0.0042616525 + 1842600 0.0052383455 0.0028181649 0.005396413 + 1842700 0.003876699 0.0025635009 0.0044715637 + 1842800 0.004681105 0.0023807037 0.0046846851 + 1842900 0.0038058221 0.0026561105 0.0045292886 + 1843000 0.0031374411 0.0028067391 0.0043509484 + 1843100 0.0034437291 0.002890242 0.0045852025 + 1843200 0.0055005487 0.0030022499 0.0057095513 + 1843300 0.0066187815 0.0031020536 0.0063597351 + 1843400 0.0056141724 0.0026530071 0.0054162326 + 1843500 0.0055028675 0.0024614717 0.0051699143 + 1843600 0.0047286954 0.0029001411 0.0052275459 + 1843700 0.0047483328 0.0027396898 0.0050767599 + 1843800 0.0043114962 0.0025112107 0.0046332752 + 1843900 0.0053255667 0.0028222742 0.0054434516 + 1844000 0.0055063825 0.0027248841 0.0054350567 + 1844100 0.005995951 0.0027936004 0.0057447326 + 1844200 0.00525834 0.0035997644 0.0061878536 + 1844300 0.0063913057 0.0029387898 0.0060845105 + 1844400 0.0057398163 0.0023692291 0.0051942949 + 1844500 0.0049303577 0.0023039681 0.0047306286 + 1844600 0.0053228798 0.0022216551 0.00484151 + 1844700 0.0062028055 0.0023253307 0.0053782741 + 1844800 0.0051854665 0.002427201 0.0049794228 + 1844900 0.0051752145 0.0029444063 0.0054915822 + 1845000 0.0048633508 0.0030481174 0.0054417978 + 1845100 0.0054100765 0.0023216662 0.0049844382 + 1845200 0.0033931006 0.002211614 0.0038816557 + 1845300 0.0039102036 0.0019068004 0.0038313538 + 1845400 0.0045982718 0.0019384795 0.0042016914 + 1845500 0.0053863782 0.0020113982 0.0046625062 + 1845600 0.0038879144 0.0022334204 0.0041470033 + 1845700 0.0043230039 0.0021456784 0.0042734069 + 1845800 0.0044747759 0.002368828 0.0045712567 + 1845900 0.0052528103 0.0022032725 0.0047886401 + 1846000 0.0050501089 0.0022989817 0.0047845821 + 1846100 0.0047334761 0.0022541727 0.0045839305 + 1846200 0.0061418295 0.0023111455 0.0053340772 + 1846300 0.004324252 0.0025513583 0.0046797011 + 1846400 0.0042636433 0.0022563546 0.0043548665 + 1846500 0.0054782855 0.0018529421 0.0045492857 + 1846600 0.0035266422 0.00207149 0.0038072592 + 1846700 0.003980126 0.0019620079 0.0039209761 + 1846800 0.0049576056 0.0020301491 0.0044702206 + 1846900 0.0037566645 0.0020913815 0.0039403648 + 1847000 0.0074370212 0.0022738696 0.0059342785 + 1847100 0.0055391568 0.0027831466 0.0055094503 + 1847200 0.0058107226 0.0029034552 0.0057634202 + 1847300 0.0053903116 0.0026479447 0.0053009887 + 1847400 0.0051315459 0.0025272157 0.0050528985 + 1847500 0.0054583541 0.0023365106 0.0050230442 + 1847600 0.0058665984 0.0024483558 0.0053358222 + 1847700 0.0042191096 0.0022573999 0.0043339929 + 1847800 0.0048494058 0.0021351634 0.0045219803 + 1847900 0.0057518913 0.0024249762 0.0052559851 + 1848000 0.0052140027 0.0027471286 0.0053133956 + 1848100 0.0043116849 0.0030607223 0.0051828797 + 1848200 0.0059343275 0.0030224783 0.0059432802 + 1848300 0.0053012091 0.0027698405 0.0053790294 + 1848400 0.0049026127 0.0026305663 0.005043571 + 1848500 0.0049527885 0.0028184718 0.0052561724 + 1848600 0.0049277826 0.0026671012 0.0050924942 + 1848700 0.0064923106 0.0025751352 0.0057705693 + 1848800 0.005520745 0.0024670871 0.0051843288 + 1848900 0.0035137883 0.0027802361 0.0045096788 + 1849000 0.0057391388 0.0024218212 0.0052465536 + 1849100 0.0041346105 0.0022494778 0.0042844814 + 1849200 0.0048285537 0.0024624766 0.0048390303 + 1849300 0.0059787455 0.0023385673 0.0052812311 + 1849400 0.0056679584 0.0020673609 0.0048570592 + 1849500 0.0043388262 0.0023226355 0.0044581515 + 1849600 0.0039020566 0.0021889626 0.0041095061 + 1849700 0.0051423214 0.0021901434 0.0047211297 + 1849800 0.0041588716 0.0024113381 0.0044582827 + 1849900 0.0047889795 0.0023541586 0.0047112345 + 1850000 0.0054701167 0.0020609581 0.0047532812 + 1850100 0.0051561561 0.0019023555 0.0044401511 + 1850200 0.0054684757 0.0022140279 0.0049055432 + 1850300 0.0058419546 0.0027639845 0.0056393216 + 1850400 0.0047395453 0.0028800426 0.0052127875 + 1850500 0.005440492 0.0032507751 0.0059285173 + 1850600 0.0060472687 0.0028048143 0.0057812044 + 1850700 0.0046958775 0.0023340904 0.0046453426 + 1850800 0.005907375 0.0021186557 0.0050261919 + 1850900 0.0047924349 0.0022905175 0.004649294 + 1851000 0.0063914792 0.0025882201 0.0057340263 + 1851100 0.0032469643 0.0029127235 0.0045108387 + 1851200 0.0047250809 0.0023580627 0.0046836884 + 1851300 0.0052089908 0.0015265973 0.0040903975 + 1851400 0.0041131699 0.0015718937 0.0035963445 + 1851500 0.0036831681 0.0014630573 0.0032758666 + 1851600 0.0037159296 0.0013983301 0.0032272642 + 1851700 0.0040101138 0.0018607753 0.0038345032 + 1851800 0.004011332 0.0018404677 0.0038147952 + 1851900 0.0047563587 0.0018739667 0.0042149869 + 1852000 0.0066618608 0.0016231998 0.0049020844 + 1852100 0.0048725042 0.001927105 0.0043252906 + 1852200 0.0044427003 0.0023702135 0.004556855 + 1852300 0.0058728826 0.0024059513 0.0052965107 + 1852400 0.0046694069 0.0025450211 0.0048432448 + 1852500 0.0059368261 0.0020522557 0.0049742873 + 1852600 0.0051835083 0.0022293381 0.0047805961 + 1852700 0.004355955 0.0026495886 0.0047935352 + 1852800 0.0043433767 0.0024100754 0.0045478311 + 1852900 0.0080393494 0.0020998662 0.0060567335 + 1853000 0.0052742981 0.00238149 0.0049774336 + 1853100 0.0027627244 0.0024602307 0.0038200091 + 1853200 0.0053782923 0.0019533478 0.0046004761 + 1853300 0.0044401265 0.0017260248 0.0039113996 + 1853400 0.0061710703 0.0017133426 0.0047506662 + 1853500 0.0053831452 0.002108737 0.0047582538 + 1853600 0.0044917492 0.0021737943 0.0043845771 + 1853700 0.0057104564 0.0020062373 0.0048168525 + 1853800 0.0046405091 0.0023285396 0.0046125402 + 1853900 0.0047116969 0.0026279192 0.0049469575 + 1854000 0.0045657098 0.0029343337 0.005181519 + 1854100 0.0044083838 0.0032305126 0.005400264 + 1854200 0.006445342 0.003034033 0.0062063498 + 1854300 0.0062933034 0.0021032686 0.0052007538 + 1854400 0.0060543222 0.001853983 0.0048338447 + 1854500 0.0050666184 0.0021003844 0.0045941107 + 1854600 0.004578621 0.0020368137 0.0042903538 + 1854700 0.0045063109 0.0021155744 0.0043335243 + 1854800 0.005788676 0.0024103144 0.0052594283 + 1854900 0.0045090994 0.0027100194 0.0049293418 + 1855000 0.0052852601 0.0026299906 0.0052313295 + 1855100 0.0051090777 0.0025383592 0.0050529834 + 1855200 0.0059633796 0.0025030573 0.0054381582 + 1855300 0.0060547168 0.0026089656 0.0055890216 + 1855400 0.005942301 0.0030870039 0.0060117302 + 1855500 0.0060323975 0.0028775959 0.0058466665 + 1855600 0.0044914918 0.0029659145 0.0051765707 + 1855700 0.0046447907 0.0029362984 0.0052224064 + 1855800 0.0050709649 0.0028102192 0.0053060847 + 1855900 0.0045044459 0.0027585837 0.0049756157 + 1856000 0.0053759087 0.0026559711 0.0053019262 + 1856100 0.0058835944 0.002361057 0.0052568886 + 1856200 0.0049954527 0.0023911883 0.0048498876 + 1856300 0.005819257 0.0027660609 0.0056302264 + 1856400 0.0043246114 0.0028929661 0.0050214858 + 1856500 0.0048563963 0.0030621782 0.0054524358 + 1856600 0.005183256 0.0032893195 0.0058404533 + 1856700 0.0060621826 0.0027747939 0.0057585244 + 1856800 0.004786888 0.0026046232 0.0049606697 + 1856900 0.004117613 0.0032304277 0.0052570654 + 1857000 0.0054191466 0.0032638003 0.0059310365 + 1857100 0.0050972847 0.0033741343 0.0058829542 + 1857200 0.0040699343 0.0033996105 0.0054027813 + 1857300 0.0044551055 0.0034986997 0.005691447 + 1857400 0.0053488266 0.0033568213 0.0059894469 + 1857500 0.0072512264 0.0029683979 0.0065373609 + 1857600 0.0059998998 0.0030829804 0.0060360561 + 1857700 0.0042091998 0.0034962922 0.0055680078 + 1857800 0.0041246336 0.0033688614 0.0053989545 + 1857900 0.0040530961 0.0029742893 0.0049691726 + 1858000 0.0042365566 0.0029267726 0.0050119528 + 1858100 0.0045254882 0.0027310622 0.0049584509 + 1858200 0.0041202261 0.0027814633 0.004809387 + 1858300 0.0048359969 0.0028480663 0.0052282835 + 1858400 0.0051916597 0.0028122215 0.0053674916 + 1858500 0.004312734 0.0022326417 0.0043553155 + 1858600 0.0037118503 0.0021643189 0.0039912452 + 1858700 0.0055983224 0.0017850567 0.004540481 + 1858800 0.0040127434 0.0019226761 0.0038976982 + 1858900 0.0041685891 0.002385415 0.0044371425 + 1859000 0.0058586717 0.0022425827 0.0051261477 + 1859100 0.00485961 0.0022525245 0.0046443638 + 1859200 0.005022355 0.0025836221 0.0050555624 + 1859300 0.0060007994 0.0024264013 0.0053799198 + 1859400 0.0048658579 0.0025989371 0.0049938515 + 1859500 0.0056350989 0.0023542833 0.0051278086 + 1859600 0.0042095655 0.002817197 0.0048890925 + 1859700 0.0048897483 0.0031237484 0.0055304214 + 1859800 0.0052931666 0.0028504465 0.0054556769 + 1859900 0.0047012109 0.0030158859 0.0053297632 + 1860000 0.0051294781 0.0034332347 0.0059578997 + 1860100 0.004941004 0.0031253305 0.0055572309 + 1860200 0.0045243966 0.0031158813 0.0053427327 + 1860300 0.0069113738 0.0024382291 0.0058399209 + 1860400 0.0053427446 0.0021960661 0.0048256982 + 1860500 0.0052037557 0.0020781069 0.0046393304 + 1860600 0.0054119535 0.0021170838 0.0047807797 + 1860700 0.0028694602 0.0024478798 0.0038601923 + 1860800 0.0033430079 0.0026009506 0.0042463373 + 1860900 0.007174849 0.0029064284 0.0064377994 + 1861000 0.005856392 0.0033368092 0.0062192521 + 1861100 0.0045203596 0.0033491825 0.005574047 + 1861200 0.006906198 0.0029948557 0.0063940001 + 1861300 0.0052332643 0.0031872611 0.0057630084 + 1861400 0.0046901329 0.0032490747 0.0055574995 + 1861500 0.0049315672 0.0027240868 0.0051513425 + 1861600 0.0057188748 0.0029013001 0.0057160588 + 1861700 0.0048535225 0.0029231301 0.0053119732 + 1861800 0.005891016 0.0027470833 0.0056465678 + 1861900 0.006937185 0.0029161957 0.0063305915 + 1862000 0.005634874 0.0030000727 0.0057734872 + 1862100 0.0058558206 0.0024243947 0.0053065564 + 1862200 0.0040629506 0.002338382 0.0043381155 + 1862300 0.0033126879 0.002753683 0.0043841466 + 1862400 0.0046742181 0.0028241941 0.0051247858 + 1862500 0.00374513 0.0026649694 0.0045082756 + 1862600 0.0054161886 0.0023886372 0.0050544176 + 1862700 0.0031706282 0.0024641461 0.0040246897 + 1862800 0.00575508 0.0022453559 0.0050779343 + 1862900 0.00580198 0.0021053876 0.0049610496 + 1863000 0.0049256086 0.0026866774 0.0051110004 + 1863100 0.0052510916 0.0029516387 0.0055361603 + 1863200 0.005965955 0.0025980246 0.0055343931 + 1863300 0.0058266189 0.00243656 0.005304349 + 1863400 0.0051353719 0.0023412291 0.0048687949 + 1863500 0.0043970366 0.0024521759 0.0046163424 + 1863600 0.0061419605 0.0024346641 0.0054576603 + 1863700 0.0064182798 0.0024390324 0.0055980295 + 1863800 0.0047902072 0.0029105972 0.0052682773 + 1863900 0.0051462424 0.003072362 0.0056052782 + 1864000 0.0053883073 0.0033299411 0.0059819986 + 1864100 0.0053348778 0.0034109151 0.0060366753 + 1864200 0.0051051224 0.0032790048 0.0057916822 + 1864300 0.0048050097 0.0030194893 0.005384455 + 1864400 0.0055690231 0.0028037088 0.0055447123 + 1864500 0.007100897 0.0028960117 0.0063909844 + 1864600 0.0056108796 0.0025358082 0.0052974131 + 1864700 0.004882915 0.0024440182 0.0048473279 + 1864800 0.0055703803 0.002815029 0.0055567006 + 1864900 0.0064487841 0.0022829825 0.0054569934 + 1865000 0.0061763128 0.0020951514 0.0051350554 + 1865100 0.0040235559 0.0020863566 0.0040667005 + 1865200 0.0046086021 0.0021696977 0.004437994 + 1865300 0.007048863 0.0023716368 0.005840999 + 1865400 0.0042937935 0.0030149391 0.0051282906 + 1865500 0.0043727287 0.0027920656 0.0049442681 + 1865600 0.0048721656 0.0024883139 0.004886333 + 1865700 0.0049218301 0.0024961579 0.0049186212 + 1865800 0.0037525528 0.0026512816 0.0044982411 + 1865900 0.0037460623 0.0022848526 0.0041286176 + 1866000 0.005776095 0.0021634673 0.0050063891 + 1866100 0.0037199698 0.0025716927 0.0044026153 + 1866200 0.004541571 0.0024388189 0.0046741234 + 1866300 0.0052545786 0.0019542317 0.0045404696 + 1866400 0.0039580084 0.0019163875 0.0038644698 + 1866500 0.0035921609 0.0018449548 0.0036129715 + 1866600 0.00423047 0.0019275286 0.0040097131 + 1866700 0.0062184773 0.0018626213 0.0049232781 + 1866800 0.0058500973 0.001899177 0.0047785217 + 1866900 0.0048041314 0.0020132104 0.0043777439 + 1867000 0.0047764574 0.0024194226 0.0047703352 + 1867100 0.0045674909 0.0025958529 0.0048439148 + 1867200 0.0040903545 0.0026153052 0.0046285265 + 1867300 0.0052033072 0.0024309914 0.0049919941 + 1867400 0.005209584 0.0023919032 0.0049559953 + 1867500 0.0048780816 0.0022817323 0.004682663 + 1867600 0.0057355416 0.0024456069 0.0052685688 + 1867700 0.0059780291 0.0027144707 0.0056567819 + 1867800 0.0055157223 0.0023292324 0.005044002 + 1867900 0.0043244137 0.0022398044 0.0043682268 + 1868000 0.0068346698 0.0025323319 0.005896271 + 1868100 0.0049760501 0.0024367184 0.0048858681 + 1868200 0.0043621566 0.0026029173 0.0047499162 + 1868300 0.0054992397 0.0025649645 0.0052716215 + 1868400 0.0063147448 0.002555515 0.0056635535 + 1868500 0.0040771683 0.0027433709 0.0047501022 + 1868600 0.0047309589 0.0024361862 0.0047647051 + 1868700 0.0064864773 0.0021200302 0.0053125933 + 1868800 0.0060266931 0.0020461865 0.0050124496 + 1868900 0.0068795497 0.0022254157 0.0056114441 + 1869000 0.0054352952 0.0024310162 0.0051062005 + 1869100 0.0044692643 0.0024716192 0.0046713352 + 1869200 0.0050698281 0.0022691991 0.0047645051 + 1869300 0.0066398809 0.0021033381 0.0053714045 + 1869400 0.0054941917 0.0021583275 0.0048624999 + 1869500 0.0051311871 0.0026243159 0.0051498221 + 1869600 0.0049986939 0.0028130262 0.0052733209 + 1869700 0.0059626852 0.0027016982 0.0056364573 + 1869800 0.0049493404 0.0030189164 0.0054549199 + 1869900 0.0066243421 0.0031556171 0.0064160355 + 1870000 0.0045240699 0.003055826 0.0052825167 + 1870100 0.0046324738 0.0031183197 0.0053983654 + 1870200 0.0036030824 0.0027653448 0.004538737 + 1870300 0.0049482969 0.0030187757 0.0054542656 + 1870400 0.0039968737 0.0031679808 0.0051351921 + 1870500 0.0052059712 0.0030097856 0.0055720996 + 1870600 0.0047171079 0.0029567843 0.0052784859 + 1870700 0.0063473867 0.0025379991 0.0056621035 + 1870800 0.0047778631 0.0025874268 0.0049390313 + 1870900 0.0052243433 0.0028929171 0.0054642735 + 1871000 0.0044553099 0.0031103883 0.0053032361 + 1871100 0.0053490043 0.0028497163 0.0054824294 + 1871200 0.0042241979 0.0021121871 0.0041912846 + 1871300 0.0041443115 0.0018624088 0.0039021871 + 1871400 0.006756833 0.0016359421 0.0049615708 + 1871500 0.0047813936 0.0018529719 0.004206314 + 1871600 0.0043867079 0.0020429153 0.0042019982 + 1871700 0.0044379291 0.0018013234 0.0039856167 + 1871800 0.0046761721 0.0021772487 0.0044788021 + 1871900 0.0054958382 0.0020893481 0.004794331 + 1872000 0.0059607576 0.0020368694 0.0049706798 + 1872100 0.0055018624 0.002696589 0.0054045369 + 1872200 0.0046009642 0.0028447642 0.0051093013 + 1872300 0.0042834465 0.0025376687 0.0046459275 + 1872400 0.0037797137 0.0029443449 0.0048046727 + 1872500 0.005828588 0.0027310478 0.0055998059 + 1872600 0.0045149223 0.0026833277 0.0049055161 + 1872700 0.0044150325 0.0025867928 0.0047598166 + 1872800 0.005794271 0.0022488809 0.0051007486 + 1872900 0.0045129077 0.0020359606 0.0042571574 + 1873000 0.0052561939 0.0020423972 0.0046294302 + 1873100 0.0043939904 0.0019171423 0.0040798095 + 1873200 0.0060949521 0.0019011504 0.0049010096 + 1873300 0.0058761463 0.0020330527 0.0049252185 + 1873400 0.0048963321 0.0024054374 0.0048153508 + 1873500 0.0064491149 0.0022538175 0.0054279912 + 1873600 0.0054457853 0.0021109923 0.0047913398 + 1873700 0.0052060972 0.0019523872 0.0045147632 + 1873800 0.0049325945 0.001625724 0.0040534853 + 1873900 0.0059649722 0.0013497653 0.00428565 + 1874000 0.0046192716 0.0017957223 0.00406927 + 1874100 0.0044043226 0.0020713135 0.004239066 + 1874200 0.004348397 0.0022862139 0.0044264405 + 1874300 0.0043980488 0.0022301978 0.0043948624 + 1874400 0.0055384364 0.0020457469 0.0047716961 + 1874500 0.0038114898 0.0024082427 0.0042842103 + 1874600 0.0062063537 0.0021835877 0.0052382775 + 1874700 0.005289684 0.0021432258 0.0047467422 + 1874800 0.0052264562 0.0021563769 0.0047287733 + 1874900 0.0042062784 0.0021196995 0.0041899771 + 1875000 0.0051387418 0.0020633095 0.004592534 + 1875100 0.0048281497 0.0027889352 0.0051652901 + 1875200 0.0045983106 0.0031257967 0.0053890277 + 1875300 0.0055924693 0.0030964995 0.005849043 + 1875400 0.0043992386 0.0028824018 0.005047652 + 1875500 0.0046670532 0.0024926131 0.0047896784 + 1875600 0.0052590178 0.0023127729 0.0049011957 + 1875700 0.0056722198 0.0021727222 0.0049645179 + 1875800 0.0051897587 0.0020354004 0.0045897348 + 1875900 0.0049763002 0.0020882883 0.0045375611 + 1876000 0.0059528594 0.002035195 0.004965118 + 1876100 0.0054263795 0.0021686337 0.0048394299 + 1876200 0.0044975184 0.0024993213 0.0047129436 + 1876300 0.0057547589 0.0022301694 0.0050625897 + 1876400 0.0063573866 0.0024174958 0.005546522 + 1876500 0.0048612263 0.0030327439 0.0054253788 + 1876600 0.0042261193 0.0030565293 0.0051365724 + 1876700 0.0044980048 0.0027379219 0.0049517836 + 1876800 0.0043664101 0.0025737108 0.0047228033 + 1876900 0.0047523516 0.0022834716 0.0046225197 + 1877000 0.0050803753 0.002367374 0.0048678713 + 1877100 0.0046006543 0.0022684717 0.0045328563 + 1877200 0.0048465519 0.0023522467 0.004737659 + 1877300 0.0046065204 0.0021471774 0.0044144491 + 1877400 0.0045142046 0.0022036652 0.0044255002 + 1877500 0.0047613318 0.0020723379 0.0044158059 + 1877600 0.004612179 0.0023049108 0.0045749677 + 1877700 0.0043730211 0.0025403352 0.0046926816 + 1877800 0.0056333954 0.0025941657 0.0053668525 + 1877900 0.0056188329 0.0025299847 0.0052955041 + 1878000 0.0043592196 0.0027175423 0.0048630957 + 1878100 0.0041645222 0.0028650329 0.0049147586 + 1878200 0.003985234 0.0026551395 0.0046166219 + 1878300 0.0063667535 0.0020433006 0.0051769371 + 1878400 0.0044716572 0.0021770696 0.0043779634 + 1878500 0.0041273664 0.002062141 0.0040935792 + 1878600 0.003695597 0.0021038975 0.0039228242 + 1878700 0.0040410721 0.0022725421 0.0042615073 + 1878800 0.0050836809 0.0021556282 0.0046577524 + 1878900 0.0053602624 0.0026842335 0.0053224876 + 1879000 0.0059684385 0.002687455 0.0056250458 + 1879100 0.0049563284 0.0027429099 0.0051823528 + 1879200 0.0055211972 0.0019567012 0.0046741654 + 1879300 0.0058740237 0.0020862475 0.0049773685 + 1879400 0.0051697637 0.0025034669 0.00504796 + 1879500 0.0043523604 0.0029418483 0.0050840256 + 1879600 0.0038052338 0.0027460003 0.0046188888 + 1879700 0.0054577548 0.0020278433 0.004714082 + 1879800 0.0053393189 0.0016722291 0.0043001751 + 1879900 0.0042706469 0.0020045469 0.0041065059 + 1880000 0.0041588635 0.0019707668 0.0040177074 + 1880100 0.0056334997 0.0019220965 0.0046948346 + 1880200 0.0035521793 0.0021136899 0.0038620281 + 1880300 0.0038509406 0.001948635 0.0038440198 + 1880400 0.0032461177 0.0018797475 0.003477446 + 1880500 0.0055174818 0.0016820166 0.0043976522 + 1880600 0.0043298554 0.0018031562 0.0039342569 + 1880700 0.0042557289 0.0019541601 0.0040487767 + 1880800 0.0053012251 0.0022278545 0.0048370512 + 1880900 0.0050575901 0.0023065071 0.0047957898 + 1881000 0.0042707591 0.0027133315 0.0048153458 + 1881100 0.0046910745 0.0023956075 0.0047044957 + 1881200 0.0065144107 0.0020329881 0.0052392996 + 1881300 0.0051598801 0.0025338848 0.0050735132 + 1881400 0.00505512 0.0027328373 0.0052209041 + 1881500 0.0050849724 0.0023630633 0.0048658232 + 1881600 0.0050155254 0.0023264615 0.0047950404 + 1881700 0.0070139184 0.0021041753 0.0055563383 + 1881800 0.0046250972 0.0019101482 0.0041865632 + 1881900 0.0049034168 0.0015558939 0.0039692944 + 1882000 0.0055570424 0.001730657 0.0044657638 + 1882100 0.0048402397 0.0018567548 0.0042390603 + 1882200 0.0059179228 0.0020411105 0.0049538381 + 1882300 0.0047225951 0.0022266189 0.0045510212 + 1882400 0.0056357875 0.0025366805 0.0053105447 + 1882500 0.0048013455 0.0024987058 0.004861868 + 1882600 0.0042477552 0.0024539069 0.0045445989 + 1882700 0.0036773397 0.0024361645 0.0042461051 + 1882800 0.0041989932 0.0023645868 0.0044312787 + 1882900 0.0045934949 0.0024027486 0.0046636094 + 1883000 0.0038217208 0.0020782918 0.003959295 + 1883100 0.0056743315 0.0019598183 0.0047526533 + 1883200 0.0047343663 0.0017551895 0.0040853854 + 1883300 0.0059014443 0.0016036729 0.00450829 + 1883400 0.0042349215 0.0017464643 0.0038308398 + 1883500 0.0036898214 0.0021214954 0.0039375793 + 1883600 0.0048160705 0.0026638301 0.0050342398 + 1883700 0.0057976416 0.0026520641 0.0055055908 + 1883800 0.004554897 0.002266687 0.0045085504 + 1883900 0.0058228056 0.001494648 0.0043605601 + 1884000 0.0035266237 0.0016786759 0.003414436 + 1884100 0.0058500098 0.0016494703 0.004528772 + 1884200 0.0043684554 0.0016242102 0.0037743093 + 1884300 0.006195006 0.0018161947 0.0048652992 + 1884400 0.0058881955 0.0019572489 0.0048553451 + 1884500 0.0035911007 0.002180089 0.0039475839 + 1884600 0.0046377614 0.001869065 0.0041517132 + 1884700 0.0046806277 0.0018954904 0.0041992368 + 1884800 0.003444748 0.0022582623 0.0039537242 + 1884900 0.0051143112 0.0020213319 0.0045385319 + 1885000 0.0034974452 0.0019405814 0.0036619802 + 1885100 0.0040924134 0.00172944 0.0037436747 + 1885200 0.0036729763 0.0020064004 0.0038141934 + 1885300 0.0037959444 0.0021591138 0.0040274302 + 1885400 0.0063323834 0.0023875949 0.0055043148 + 1885500 0.004655842 0.0026069641 0.0048985113 + 1885600 0.0053028611 0.0020533344 0.0046633364 + 1885700 0.0049850356 0.0015769628 0.004030535 + 1885800 0.0049816619 0.0019593545 0.0044112662 + 1885900 0.0046806184 0.0025347608 0.0048385026 + 1886000 0.0057024816 0.0025532637 0.0053599539 + 1886100 0.0053279816 0.0023700446 0.0049924105 + 1886200 0.005479699 0.0020550159 0.0047520552 + 1886300 0.005047292 0.0017762777 0.0042604917 + 1886400 0.0044146248 0.0016214446 0.0037942677 + 1886500 0.0040524171 0.0018191285 0.0038136775 + 1886600 0.0057021838 0.0019075638 0.0047141073 + 1886700 0.0041784364 0.0020094225 0.0040659966 + 1886800 0.0052509317 0.0020449974 0.0046294404 + 1886900 0.0046349576 0.0018746642 0.0041559323 + 1887000 0.0049529392 0.0019122534 0.0043500281 + 1887100 0.004661776 0.0020309513 0.0043254192 + 1887200 0.0036557668 0.002043711 0.0038430337 + 1887300 0.0040888237 0.0019126882 0.0039251561 + 1887400 0.0060286835 0.0021421505 0.0051093932 + 1887500 0.0049717975 0.002449652 0.0048967086 + 1887600 0.0073813891 0.0022627548 0.0058957822 + 1887700 0.0055732353 0.0024205634 0.0051636402 + 1887800 0.0070941415 0.002930725 0.0064223727 + 1887900 0.005636876 0.0029094849 0.0056838848 + 1888000 0.0056816499 0.0024719786 0.0052684156 + 1888100 0.0046245774 0.0022290291 0.0045051883 + 1888200 0.0063114236 0.0017176486 0.0048240524 + 1888300 0.0043916932 0.0022635028 0.0044250393 + 1888400 0.0058035082 0.0026132683 0.0054696825 + 1888500 0.0051015846 0.0025107855 0.0050217217 + 1888600 0.0052713516 0.002550919 0.0051454124 + 1888700 0.0058000362 0.0019922818 0.0048469871 + 1888800 0.0047354735 0.001622489 0.0039532299 + 1888900 0.0055117103 0.0016145775 0.0043273725 + 1889000 0.0057092592 0.001785768 0.004595794 + 1889100 0.0047709946 0.0020918837 0.0044401076 + 1889200 0.0050482783 0.0022654277 0.0047501272 + 1889300 0.0061151798 0.0023929642 0.0054027793 + 1889400 0.0063336173 0.0026961778 0.0058135051 + 1889500 0.0061583636 0.002820378 0.0058514476 + 1889600 0.0064699151 0.0021157389 0.0053001503 + 1889700 0.0051201489 0.0021565793 0.0046766526 + 1889800 0.0049121072 0.0028000366 0.0052177144 + 1889900 0.0030387554 0.0027141525 0.0042097899 + 1890000 0.0042062304 0.0024462914 0.0045165454 + 1890100 0.0050293524 0.0022088659 0.0046842502 + 1890200 0.0039034811 0.0026135259 0.0045347705 + 1890300 0.0034888769 0.0027515789 0.0044687604 + 1890400 0.0066669734 0.00295295 0.006234351 + 1890500 0.0040402349 0.0024912224 0.0044797755 + 1890600 0.0039183788 0.0027319522 0.0046605293 + 1890700 0.0047365632 0.0024968647 0.0048281419 + 1890800 0.0051791562 0.0021738206 0.0047229365 + 1890900 0.0057150003 0.0024166675 0.0052295192 + 1891000 0.0050478152 0.0019689146 0.0044533861 + 1891100 0.0052799881 0.001860854 0.0044595981 + 1891200 0.0040998981 0.0023531445 0.0043710631 + 1891300 0.0039728547 0.0023457048 0.0043010942 + 1891400 0.0048595483 0.0022642941 0.004656103 + 1891500 0.0044412044 0.0022989655 0.0044848708 + 1891600 0.0050951071 0.0022322929 0.0047400409 + 1891700 0.0042507861 0.0024012922 0.0044934759 + 1891800 0.0046895839 0.002188129 0.0044962835 + 1891900 0.0049597048 0.0022845352 0.0047256399 + 1892000 0.0050099869 0.0022445365 0.0047103894 + 1892100 0.0059925152 0.0024896101 0.0054390512 + 1892200 0.0077902064 0.0032148307 0.0070490729 + 1892300 0.006303119 0.0030261922 0.0061285085 + 1892400 0.0066920142 0.0029825871 0.0062763129 + 1892500 0.0040802134 0.0032032999 0.00521153 + 1892600 0.0053510047 0.0030044884 0.0056381861 + 1892700 0.0051849091 0.0032238496 0.005775797 + 1892800 0.0063142044 0.002836047 0.0059438195 + 1892900 0.0053481166 0.0021463871 0.0047786632 + 1893000 0.0069309538 0.0019279174 0.0053392462 + 1893100 0.0053931864 0.0022440094 0.0048984684 + 1893200 0.0038658145 0.0025187713 0.0044214769 + 1893300 0.0061067045 0.0026550503 0.0056606939 + 1893400 0.0046981341 0.0023181079 0.0046304707 + 1893500 0.0071270809 0.0017187578 0.0052266179 + 1893600 0.0080901997 0.0021248616 0.0061067567 + 1893700 0.0057365471 0.0028460157 0.0056694725 + 1893800 0.0068389839 0.0029483955 0.0063144578 + 1893900 0.005376149 0.0033832866 0.00602936 + 1894000 0.0057957015 0.0031238799 0.0059764518 + 1894100 0.0050235514 0.0025631587 0.0050356879 + 1894200 0.0049391541 0.0021235509 0.0045545408 + 1894300 0.0051867799 0.0021930349 0.0047459031 + 1894400 0.006230486 0.002320752 0.0053873194 + 1894500 0.0048690887 0.0023796468 0.0047761514 + 1894600 0.0053204347 0.0022086936 0.004827345 + 1894700 0.0044088104 0.0021243265 0.0042942879 + 1894800 0.0043764553 0.0024238095 0.0045778461 + 1894900 0.0041280512 0.0024974062 0.0045291814 + 1895000 0.0048355174 0.0023195701 0.0046995513 + 1895100 0.0053022358 0.0020628335 0.0046725277 + 1895200 0.0049901101 0.0020799925 0.0045360623 + 1895300 0.0045410635 0.0020940926 0.0043291473 + 1895400 0.0042245283 0.0021689117 0.0042481718 + 1895500 0.0039773586 0.0025071778 0.004464784 + 1895600 0.0064413932 0.0029770304 0.0061474036 + 1895700 0.0051395562 0.0028473236 0.0053769489 + 1895800 0.0055278879 0.0023450926 0.0050658499 + 1895900 0.0060390843 0.0020362258 0.0050085876 + 1896000 0.0051545954 0.0019877866 0.0045248141 + 1896100 0.0054189475 0.0022472228 0.004914361 + 1896200 0.0058968154 0.0026749681 0.005577307 + 1896300 0.0050191968 0.0025105129 0.0049808989 + 1896400 0.0039256889 0.0029418361 0.0048740111 + 1896500 0.0054341463 0.0025357811 0.0052104 + 1896600 0.0052947666 0.0020190535 0.0046250715 + 1896700 0.005141795 0.002124987 0.0046557142 + 1896800 0.0052080328 0.0022518001 0.0048151288 + 1896900 0.0058334705 0.0021093711 0.0049805324 + 1897000 0.0045062715 0.0022671568 0.0044850873 + 1897100 0.0044513717 0.0023257827 0.0045166922 + 1897200 0.0050414479 0.0020122032 0.0044935408 + 1897300 0.0073251023 0.0021663203 0.005771644 + 1897400 0.0055619114 0.0021584605 0.0048959637 + 1897500 0.0046202924 0.002092301 0.0043663511 + 1897600 0.0046387088 0.0023134812 0.0045965957 + 1897700 0.0047649251 0.0021521145 0.0044973511 + 1897800 0.0051722813 0.0021461667 0.0046918989 + 1897900 0.0043855129 0.0019939438 0.0041524385 + 1898000 0.0051235664 0.0018684049 0.0043901603 + 1898100 0.0049881854 0.0023676376 0.0048227601 + 1898200 0.0053763362 0.0028217756 0.0054679411 + 1898300 0.0043389837 0.0031387307 0.0052743242 + 1898400 0.0057612954 0.0028963912 0.0057320288 + 1898500 0.0063622311 0.0029520987 0.0060835093 + 1898600 0.0044511351 0.0028171385 0.0050079316 + 1898700 0.0057427337 0.0023529681 0.0051794698 + 1898800 0.0060649767 0.0022132747 0.0051983805 + 1898900 0.0055981079 0.0024460427 0.0052013614 + 1899000 0.0041607606 0.0031554496 0.005203324 + 1899100 0.0040453113 0.0034059877 0.0053970394 + 1899200 0.0057374178 0.0026899895 0.0055138748 + 1899300 0.0056993345 0.0021421198 0.004947261 + 1899400 0.006332936 0.0019114325 0.0050284245 + 1899500 0.0037153252 0.0021702309 0.0039988675 + 1899600 0.0053618438 0.0022162483 0.0048552809 + 1899700 0.0064545627 0.0023204581 0.0054973132 + 1899800 0.0043895503 0.0023310634 0.0044915452 + 1899900 0.0048765547 0.0021379324 0.0045381116 + 1900000 0.0043456662 0.0021970375 0.0043359201 + 1900100 0.0043793433 0.0030293039 0.0051847619 + 1900200 0.004543968 0.0034949402 0.0057314245 + 1900300 0.0042497605 0.0029882743 0.0050799533 + 1900400 0.004486564 0.0026579558 0.0048661865 + 1900500 0.0041549405 0.0027639208 0.0048089305 + 1900600 0.0043799709 0.0030862125 0.0052419795 + 1900700 0.0050997178 0.0028736115 0.0053836289 + 1900800 0.0049024027 0.0026012689 0.0050141703 + 1900900 0.0050339707 0.0023224137 0.0048000711 + 1901000 0.0046408465 0.0026773339 0.0049615005 + 1901100 0.0053043148 0.0028589518 0.0054696692 + 1901200 0.0044466185 0.0028678935 0.0050564635 + 1901300 0.0049916807 0.0025072732 0.004964116 + 1901400 0.0058909935 0.0025517873 0.0054512606 + 1901500 0.0054566808 0.0025221631 0.0052078732 + 1901600 0.0066039447 0.002636844 0.005887223 + 1901700 0.0049507531 0.0026600844 0.0050967832 + 1901800 0.00705488 0.0023243034 0.0057966272 + 1901900 0.0046411679 0.0024341645 0.0047184893 + 1902000 0.0053116745 0.0024217008 0.0050360406 + 1902100 0.0042121731 0.0025567747 0.0046299537 + 1902200 0.0035198781 0.0028051445 0.0045375845 + 1902300 0.0038823632 0.0026569819 0.0045678326 + 1902400 0.0055265067 0.0024890799 0.0052091575 + 1902500 0.0057337886 0.0024668359 0.005288935 + 1902600 0.0047772017 0.0022230071 0.0045742861 + 1902700 0.0066254856 0.002505068 0.0057660492 + 1902800 0.005684084 0.0029676908 0.0057653259 + 1902900 0.0036091246 0.0028533665 0.0046297325 + 1903000 0.0049730896 0.0025058533 0.0049535459 + 1903100 0.0036536611 0.0028070019 0.0046052883 + 1903200 0.004152262 0.0029541969 0.0049978883 + 1903300 0.0060399097 0.0028598322 0.0058326003 + 1903400 0.0052242056 0.0028505521 0.0054218408 + 1903500 0.0042396777 0.0026922876 0.004779004 + 1903600 0.0042957869 0.0026671652 0.0047814978 + 1903700 0.0053952224 0.0025797917 0.0052352527 + 1903800 0.0040298711 0.0029321994 0.0049156516 + 1903900 0.0050743959 0.0025886394 0.0050861936 + 1904000 0.0049554617 0.0022425528 0.0046815691 + 1904100 0.0059125601 0.0020703635 0.0049804517 + 1904200 0.0054048414 0.0020211405 0.0046813359 + 1904300 0.0051386017 0.0017135037 0.0042426592 + 1904400 0.005095372 0.0017835043 0.0042913828 + 1904500 0.0039151686 0.0017674407 0.0036944378 + 1904600 0.0057365073 0.0022004832 0.0050239204 + 1904700 0.0050960405 0.0021110555 0.004619263 + 1904800 0.0052888078 0.0019990871 0.0046021722 + 1904900 0.0053179558 0.0024467821 0.0050642134 + 1905000 0.006802629 0.0021532719 0.0055014408 + 1905100 0.0075031322 0.0022645707 0.0059575186 + 1905200 0.0058070135 0.0026271713 0.0054853108 + 1905300 0.0054023551 0.0028932688 0.0055522405 + 1905400 0.0041383012 0.0026894259 0.004726246 + 1905500 0.0050310005 0.0022659506 0.0047421461 + 1905600 0.0041581945 0.0022880687 0.00433468 + 1905700 0.0025436059 0.0024731936 0.0037251246 + 1905800 0.0056613263 0.0025050403 0.0052914743 + 1905900 0.0044946998 0.0022495027 0.0044617378 + 1906000 0.0042768215 0.0023693844 0.0044743825 + 1906100 0.0054550418 0.0022870876 0.004971991 + 1906200 0.0053006024 0.0022471603 0.0048560505 + 1906300 0.0047601127 0.0020725433 0.0044154112 + 1906400 0.0043426308 0.0017830553 0.0039204439 + 1906500 0.0044078296 0.0017917176 0.0039611962 + 1906600 0.0050273864 0.0019915009 0.0044659176 + 1906700 0.0054379245 0.0024129534 0.0050894319 + 1906800 0.004331341 0.0025201245 0.0046519564 + 1906900 0.0063099168 0.0023521046 0.0054577668 + 1907000 0.0034437584 0.0024277555 0.0041227303 + 1907100 0.0056616877 0.0022021025 0.0049887144 + 1907200 0.0053262423 0.00208219 0.0047036998 + 1907300 0.0059995619 0.002592462 0.0055453714 + 1907400 0.0070311211 0.0028615669 0.0063221967 + 1907500 0.0069626297 0.0030425819 0.0064695012 + 1907600 0.0051883837 0.0031247156 0.0056783731 + 1907700 0.0052345718 0.0035302232 0.0061066139 + 1907800 0.007407569 0.0030682767 0.0067141896 + 1907900 0.0046467109 0.0029713816 0.0052584346 + 1908000 0.0059881502 0.0028003231 0.0057476157 + 1908100 0.0054063627 0.0024131797 0.0050741239 + 1908200 0.0051148008 0.0028691383 0.0053865793 + 1908300 0.0050265259 0.0027257068 0.0051997 + 1908400 0.0054002065 0.0025768759 0.0052347901 + 1908500 0.0039744672 0.0030030921 0.0049592752 + 1908600 0.0053265995 0.0026874774 0.0053091631 + 1908700 0.004729641 0.0029330554 0.0052609255 + 1908800 0.0043799158 0.0031678492 0.0053235889 + 1908900 0.006068706 0.0034134992 0.0064004405 + 1909000 0.0056271209 0.0033760133 0.0061456119 + 1909100 0.0065949836 0.0030160461 0.0062620146 + 1909200 0.0048574949 0.0032534341 0.0056442324 + 1909300 0.0066299046 0.0029227414 0.0061858976 + 1909400 0.0060586569 0.0026434609 0.0056254561 + 1909500 0.0053960599 0.0030855333 0.0057414065 + 1909600 0.0050419308 0.0028712916 0.0053528669 + 1909700 0.0032045192 0.0028469541 0.0044241785 + 1909800 0.0061441543 0.0024398294 0.0054639053 + 1909900 0.0044539362 0.002822636 0.0050148078 + 1910000 0.0051633097 0.003173802 0.0057151185 + 1910100 0.004838801 0.0028281332 0.0052097306 + 1910200 0.0039151588 0.002719723 0.0046467152 + 1910300 0.0053867368 0.0027648393 0.0054161239 + 1910400 0.0047883178 0.0027310778 0.0050878279 + 1910500 0.0044689839 0.002457148 0.004656726 + 1910600 0.0035509552 0.002692882 0.0044406178 + 1910700 0.005123139 0.002308879 0.0048304239 + 1910800 0.0048122089 0.0023827898 0.0047512989 + 1910900 0.0081181532 0.0027233078 0.0067189613 + 1911000 0.0048683618 0.0034233596 0.0058195064 + 1911100 0.0037549504 0.0036571434 0.0055052831 + 1911200 0.0041650792 0.0032913353 0.0053413352 + 1911300 0.0051186974 0.0030308084 0.0055501673 + 1911400 0.0042217387 0.0027332151 0.0048111021 + 1911500 0.004682911 0.0024322732 0.0047371434 + 1911600 0.0055665434 0.0022741848 0.0050139679 + 1911700 0.0053825619 0.0027759609 0.0054251906 + 1911800 0.0056070375 0.0032328343 0.005992548 + 1911900 0.0052592614 0.0029291293 0.0055176721 + 1912000 0.0054767695 0.0027668657 0.0054624632 + 1912100 0.0044058104 0.0030278438 0.0051963286 + 1912200 0.0061682385 0.0031800428 0.0062159727 + 1912300 0.0054818366 0.0025324083 0.0052304997 + 1912400 0.0058738154 0.002480401 0.0053714195 + 1912500 0.004992234 0.0030556531 0.0055127683 + 1912600 0.0047396403 0.0027360535 0.0050688452 + 1912700 0.005190719 0.002875212 0.0054300189 + 1912800 0.0032459836 0.0028363389 0.0044339714 + 1912900 0.0042356472 0.0026281396 0.0047128722 + 1913000 0.0051142145 0.0024702105 0.0049873629 + 1913100 0.0047370124 0.0022210099 0.0045525082 + 1913200 0.0052818234 0.0023226606 0.0049223081 + 1913300 0.0049244501 0.0024017881 0.0048255409 + 1913400 0.004030087 0.002496837 0.0044803955 + 1913500 0.0066303644 0.0025940067 0.0058573892 + 1913600 0.0049734339 0.0029455892 0.0053934512 + 1913700 0.0038715841 0.0025404078 0.0044459531 + 1913800 0.0054936581 0.002218937 0.0049228468 + 1913900 0.0040736679 0.0021496548 0.0041546632 + 1914000 0.0036362249 0.0020724131 0.0038621176 + 1914100 0.0040449874 0.0017259222 0.0037168145 + 1914200 0.0043084372 0.0020009298 0.0041214888 + 1914300 0.0076682968 0.0022573249 0.0060315647 + 1914400 0.0058179489 0.0022205321 0.0050840538 + 1914500 0.0048293571 0.0022537173 0.0046306665 + 1914600 0.0053466993 0.0021327229 0.0047643015 + 1914700 0.0066170886 0.0023173729 0.0055742213 + 1914800 0.004600395 0.0033076016 0.0055718585 + 1914900 0.0043616169 0.0029214763 0.0050682097 + 1915000 0.0058928075 0.0022316467 0.0051320129 + 1915100 0.0042474411 0.0021873227 0.0042778601 + 1915200 0.0055313353 0.0023349709 0.005057425 + 1915300 0.0056034483 0.0025409139 0.0052988611 + 1915400 0.0064952993 0.0023835706 0.0055804757 + 1915500 0.0059271446 0.0022747054 0.0051919718 + 1915600 0.0044718675 0.00269988 0.0049008772 + 1915700 0.004452722 0.0029718634 0.0051634376 + 1915800 0.0063362683 0.0028693615 0.0059879935 + 1915900 0.0065101143 0.0025842872 0.0057884841 + 1916000 0.0038634733 0.0027155833 0.0046171366 + 1916100 0.004013169 0.0027185103 0.0046937419 + 1916200 0.0041893475 0.0023513276 0.004413272 + 1916300 0.0066122252 0.0023505594 0.005605014 + 1916400 0.0044033991 0.0023747237 0.0045420217 + 1916500 0.0061230829 0.0025007727 0.0055144775 + 1916600 0.0060899145 0.002418923 0.0054163028 + 1916700 0.0052060664 0.0023569451 0.0049193059 + 1916800 0.0054895773 0.0020612337 0.0047631351 + 1916900 0.0043015074 0.0018825018 0.00399965 + 1917000 0.0039566591 0.0022125133 0.0041599315 + 1917100 0.0060901772 0.0022812415 0.0052787505 + 1917200 0.0051807927 0.0021118118 0.0046617332 + 1917300 0.0035091109 0.002217183 0.0039443235 + 1917400 0.0048379596 0.0024341811 0.0048153643 + 1917500 0.0046143274 0.0023716705 0.0046427848 + 1917600 0.0046302403 0.0024112562 0.0046902026 + 1917700 0.0045389284 0.0024304084 0.0046644122 + 1917800 0.0059510614 0.0020830031 0.0050120411 + 1917900 0.0038553455 0.0022910248 0.0041885777 + 1918000 0.0047111337 0.0026970634 0.0050158245 + 1918100 0.0051308633 0.0026433609 0.0051687077 + 1918200 0.0051334256 0.0024474637 0.0049740716 + 1918300 0.0060202597 0.0022322381 0.0051953347 + 1918400 0.0051574692 0.0024429967 0.0049814386 + 1918500 0.0052267575 0.0027093786 0.0052819233 + 1918600 0.0061451131 0.0022157439 0.0052402918 + 1918700 0.0043869983 0.0024217587 0.0045809845 + 1918800 0.0053752092 0.0025245621 0.0051701728 + 1918900 0.0045529158 0.0022590102 0.0044998985 + 1919000 0.0052687595 0.0019375739 0.0045307915 + 1919100 0.0046442978 0.0020624555 0.0043483208 + 1919200 0.006966526 0.0028785267 0.0063073637 + 1919300 0.0052773955 0.0037975138 0.0063949819 + 1919400 0.0053470317 0.0029643812 0.0055961234 + 1919500 0.0056594859 0.0023721758 0.005157704 + 1919600 0.0046507179 0.0023426492 0.0046316745 + 1919700 0.0053937628 0.002401126 0.0050558686 + 1919800 0.0050035406 0.0026752546 0.0051379348 + 1919900 0.0054581288 0.0031684439 0.0058548667 + 1920000 0.0048592261 0.0031833597 0.00557501 + 1920100 0.006192711 0.0029285174 0.0059764924 + 1920200 0.0056199698 0.002662466 0.0054285449 + 1920300 0.004330002 0.0023144393 0.0044456122 + 1920400 0.0062492858 0.0022383572 0.0053141776 + 1920500 0.0047181848 0.0022361034 0.004558335 + 1920600 0.0038364754 0.0025090869 0.0043973521 + 1920700 0.0068344475 0.0023837169 0.0057475465 + 1920800 0.0044132874 0.0030706552 0.00524282 + 1920900 0.0052377413 0.0035375331 0.006115484 + 1921000 0.0050625826 0.0032258597 0.0057175996 + 1921100 0.0045934687 0.0023099084 0.0045707563 + 1921200 0.0053722789 0.0017992989 0.0044434675 + 1921300 0.0040921716 0.0020110185 0.0040251342 + 1921400 0.0042464826 0.0022998931 0.0043899587 + 1921500 0.0047161555 0.002400351 0.0047215838 + 1921600 0.0043718698 0.0025759465 0.0047277261 + 1921700 0.005958452 0.0022764436 0.0052091192 + 1921800 0.0051043897 0.0020567558 0.0045690726 + 1921900 0.0054548477 0.0023524339 0.0050372417 + 1922000 0.0059675359 0.0025768155 0.0055139621 + 1922100 0.0046638111 0.0023542306 0.0046497001 + 1922200 0.0053266461 0.0022338096 0.0048555183 + 1922300 0.0051130485 0.0024335486 0.0049501271 + 1922400 0.0062873794 0.002200314 0.0052948835 + 1922500 0.0054390613 0.0022615009 0.0049385389 + 1922600 0.0062105712 0.0026585435 0.005715309 + 1922700 0.0041735152 0.0029526922 0.0050068442 + 1922800 0.0057196655 0.0029435175 0.0057586654 + 1922900 0.0050838975 0.0032262563 0.0057284871 + 1923000 0.0055052109 0.0027754636 0.0054850595 + 1923100 0.0048874809 0.002472526 0.004878083 + 1923200 0.0048721977 0.0021844402 0.004582475 + 1923300 0.0043495432 0.0027166532 0.004857444 + 1923400 0.0065056077 0.0027026314 0.0059046102 + 1923500 0.0054171093 0.0023684218 0.0050346553 + 1923600 0.0039196964 0.0022290693 0.0041582949 + 1923700 0.0045133208 0.0019066507 0.0041280508 + 1923800 0.0045834849 0.002071156 0.00432709 + 1923900 0.0039835383 0.0021541397 0.0041147875 + 1924000 0.0053179027 0.0021439353 0.0047613406 + 1924100 0.0070365419 0.0021608708 0.0056241688 + 1924200 0.0042590485 0.0022848428 0.0043810933 + 1924300 0.005243419 0.0021193224 0.0047000677 + 1924400 0.005708324 0.0017312487 0.0045408144 + 1924500 0.0058006141 0.0025520895 0.0054070792 + 1924600 0.0061062966 0.0026323906 0.0056378335 + 1924700 0.0057147517 0.0024386026 0.0052513319 + 1924800 0.0048322046 0.0019017119 0.0042800626 + 1924900 0.0061314671 0.0018149495 0.004832781 + 1925000 0.0051744137 0.0019979348 0.0045447166 + 1925100 0.0064318709 0.0025987993 0.0057644857 + 1925200 0.0046765376 0.0027726185 0.0050743519 + 1925300 0.0055356922 0.0023857581 0.0051103566 + 1925400 0.0050583514 0.0019422296 0.0044318869 + 1925500 0.0040128399 0.0019514756 0.0039265452 + 1925600 0.0067039827 0.0023935311 0.0056931476 + 1925700 0.0069478566 0.0028311334 0.0062507816 + 1925800 0.0048440453 0.0025322055 0.004916384 + 1925900 0.0067386862 0.002112198 0.0054288951 + 1926000 0.0038864551 0.0027006221 0.0046134867 + 1926100 0.0036076212 0.0029339823 0.0047096083 + 1926200 0.0047824068 0.0028823612 0.005236202 + 1926300 0.0048338084 0.0027569753 0.0051361154 + 1926400 0.0057084534 0.0022770253 0.0050866547 + 1926500 0.0055422737 0.0016498642 0.004377702 + 1926600 0.0058188688 0.0018576627 0.0047216372 + 1926700 0.0056285623 0.001828754 0.004599062 + 1926800 0.0053804792 0.0019692935 0.0046174981 + 1926900 0.0042728488 0.0023850994 0.0044881421 + 1927000 0.0050311616 0.001896969 0.0043732438 + 1927100 0.0045917693 0.0017541135 0.0040141249 + 1927200 0.0054952581 0.0019134538 0.0046181511 + 1927300 0.0044454668 0.0023989129 0.0045869161 + 1927400 0.005406817 0.0024731726 0.0051343404 + 1927500 0.004545335 0.0026019434 0.0048391004 + 1927600 0.0051874367 0.003056019 0.0056092105 + 1927700 0.0054108605 0.002903521 0.0055666789 + 1927800 0.0043701043 0.0028301099 0.0049810206 + 1927900 0.0067663321 0.002532235 0.0058625391 + 1928000 0.0048834042 0.0024836653 0.0048872158 + 1928100 0.005003884 0.002126817 0.0045896662 + 1928200 0.0038291612 0.0019638419 0.0038485072 + 1928300 0.0070826926 0.0020214702 0.0055074829 + 1928400 0.0060110113 0.0021453643 0.0051039089 + 1928500 0.0053331534 0.0025847183 0.0052096297 + 1928600 0.0055783933 0.0030469046 0.00579252 + 1928700 0.0058932337 0.0031083961 0.0060089721 + 1928800 0.0058713754 0.0028322979 0.0057221155 + 1928900 0.0043825763 0.0028972926 0.0050543419 + 1929000 0.0064651835 0.0030917794 0.0062738619 + 1929100 0.0047675589 0.0030667707 0.0054133036 + 1929200 0.0064344047 0.0024199223 0.0055868559 + 1929300 0.0041613915 0.002608236 0.0046564209 + 1929400 0.0052434542 0.0026003693 0.0051811319 + 1929500 0.0042788031 0.0028419888 0.0049479622 + 1929600 0.0051311717 0.0030508041 0.0055763027 + 1929700 0.0041357664 0.0031811759 0.0052167484 + 1929800 0.0053405536 0.0031355912 0.0057641449 + 1929900 0.0053568786 0.0025764194 0.0052130081 + 1930000 0.0035314915 0.0026400042 0.0043781602 + 1930100 0.0047677643 0.0032163283 0.0055629623 + 1930200 0.004678255 0.0029343888 0.0052369675 + 1930300 0.003306335 0.0025310104 0.0041583472 + 1930400 0.0040825228 0.0025154543 0.004524821 + 1930500 0.0052109936 0.0026427655 0.0052075514 + 1930600 0.0059333994 0.0025087032 0.0054290482 + 1930700 0.0048580653 0.0026817369 0.0050728159 + 1930800 0.0061855253 0.0025327523 0.0055771906 + 1930900 0.0053319275 0.0025883007 0.0052126087 + 1931000 0.0039990717 0.002553903 0.0045221961 + 1931100 0.0040501791 0.0022323782 0.0042258257 + 1931200 0.0042180624 0.0017578194 0.003833897 + 1931300 0.0050443054 0.0017015862 0.0041843303 + 1931400 0.0040566486 0.0018690432 0.0038656749 + 1931500 0.0059665029 0.0019603292 0.0048969674 + 1931600 0.0054376933 0.0015740379 0.0042504026 + 1931700 0.0050713584 0.0015823515 0.0040784107 + 1931800 0.0043029995 0.0017684269 0.0038863095 + 1931900 0.0053551015 0.0016877853 0.0043234993 + 1932000 0.0059243172 0.001745908 0.0046617829 + 1932100 0.0032134698 0.0025426012 0.0041242309 + 1932200 0.0046879819 0.0023305068 0.0046378729 + 1932300 0.0055771194 0.0023206857 0.0050656742 + 1932400 0.0051247402 0.0022794726 0.0048018057 + 1932500 0.0044660029 0.002197239 0.0043953498 + 1932600 0.0055681978 0.0020173864 0.0047579837 + 1932700 0.0044720137 0.0017784764 0.0039795456 + 1932800 0.0057204328 0.0019462168 0.0047617423 + 1932900 0.0063015774 0.0024615516 0.0055631093 + 1933000 0.0061731608 0.0020845797 0.0051229323 + 1933100 0.0045674762 0.0023528394 0.0046008941 + 1933200 0.0053501274 0.0021261898 0.0047594556 + 1933300 0.0055846555 0.001966533 0.0047152306 + 1933400 0.0041056353 0.0024456809 0.0044664233 + 1933500 0.0066441958 0.002097642 0.0053678321 + 1933600 0.0037798348 0.0021727892 0.0040331767 + 1933700 0.0041807703 0.0020733723 0.0041310952 + 1933800 0.0043092601 0.0021589949 0.0042799588 + 1933900 0.0052814169 0.0023221663 0.0049216137 + 1934000 0.0047009604 0.0025455383 0.0048592922 + 1934100 0.0043929394 0.002858411 0.0050205609 + 1934200 0.004877666 0.0028724634 0.0052731896 + 1934300 0.005689155 0.0024654787 0.0052656097 + 1934400 0.0064128496 0.0027048915 0.0058612159 + 1934500 0.0049423581 0.0032146203 0.0056471871 + 1934600 0.005407287 0.0030924902 0.0057538893 + 1934700 0.0053414612 0.0025397309 0.0051687313 + 1934800 0.0051096145 0.0021110809 0.0046259693 + 1934900 0.0047699233 0.00193222 0.0042799166 + 1935000 0.0037299528 0.0020382571 0.0038740932 + 1935100 0.004692111 0.0018402431 0.0041496414 + 1935200 0.0051072204 0.001731499 0.004245209 + 1935300 0.005000162 0.0021683886 0.0046294058 + 1935400 0.005286832 0.0019450034 0.004547116 + 1935500 0.0051939352 0.0021857548 0.0047421448 + 1935600 0.00644339 0.0022291894 0.0054005454 + 1935700 0.0071900586 0.0021164536 0.0056553106 + 1935800 0.0055004842 0.0021257832 0.0048330528 + 1935900 0.0035549909 0.0025679207 0.0043176428 + 1936000 0.0038259495 0.0025239053 0.0044069898 + 1936100 0.0048043476 0.002104575 0.0044692149 + 1936200 0.0064956738 0.0024944978 0.0056915872 + 1936300 0.0059778758 0.002905859 0.0058480947 + 1936400 0.0061613659 0.0029779558 0.0060105031 + 1936500 0.0043324271 0.0027632046 0.0048955711 + 1936600 0.0046121668 0.0023749216 0.0046449724 + 1936700 0.0060858071 0.0026214388 0.005616797 + 1936800 0.0051709009 0.0028814411 0.0054264939 + 1936900 0.004226439 0.0026343311 0.0047145316 + 1937000 0.0043876144 0.0021528921 0.004312421 + 1937100 0.0044157044 0.0022535556 0.0044269101 + 1937200 0.0047588056 0.0020209118 0.0043631364 + 1937300 0.0065581199 0.0022997553 0.00552758 + 1937400 0.0036893646 0.0025006946 0.0043165537 + 1937500 0.0058091169 0.0022247854 0.0050839602 + 1937600 0.005120915 0.0027894393 0.0053098896 + 1937700 0.0057998658 0.0028762809 0.0057309023 + 1937800 0.0050942553 0.0025534618 0.0050607906 + 1937900 0.0054574882 0.0023642792 0.0050503866 + 1938000 0.0042063799 0.0019526762 0.0040230038 + 1938100 0.0053050435 0.001973706 0.0045847821 + 1938200 0.0061108513 0.0023514397 0.0053591244 + 1938300 0.0044327145 0.0027682141 0.0049499408 + 1938400 0.0045960542 0.0026946725 0.0049567929 + 1938500 0.0046179853 0.0024980571 0.0047709717 + 1938600 0.0044325297 0.0028228987 0.0050045344 + 1938700 0.0059707891 0.0032402563 0.0061790041 + 1938800 0.0050818692 0.0033757848 0.0058770173 + 1938900 0.0063042715 0.0034017244 0.006504608 + 1939000 0.0058689984 0.0031688747 0.0060575223 + 1939100 0.0062984481 0.0027884007 0.0058884182 + 1939200 0.0042516827 0.0027211141 0.0048137392 + 1939300 0.0055852617 0.0028288735 0.0055778695 + 1939400 0.0059443656 0.0027939633 0.0057197058 + 1939500 0.0044849095 0.0030751509 0.0052825673 + 1939600 0.0073540225 0.0029376592 0.0065572171 + 1939700 0.0058212565 0.0027820104 0.0056471601 + 1939800 0.0054193497 0.0027682873 0.0054356235 + 1939900 0.0064416349 0.0033076992 0.0064781914 + 1940000 0.0052415054 0.0031668298 0.0057466332 + 1940100 0.0059695318 0.0028141583 0.0057522872 + 1940200 0.0047844406 0.0030469658 0.0054018076 + 1940300 0.0045235778 0.0029133561 0.0051398045 + 1940400 0.005486135 0.0023386076 0.0050388147 + 1940500 0.0052212236 0.0026086981 0.0051785191 + 1940600 0.004868448 0.0026270879 0.0050232772 + 1940700 0.0071970414 0.0026281287 0.0061704225 + 1940800 0.0056430134 0.0034515461 0.0062289668 + 1940900 0.0053340621 0.0037555634 0.006380922 + 1941000 0.0049319097 0.0035145699 0.0059419942 + 1941100 0.0050221034 0.0038370433 0.0063088599 + 1941200 0.0055321024 0.003051018 0.0057738497 + 1941300 0.0041915875 0.002214242 0.004277289 + 1941400 0.0049878524 0.00197035 0.0044253085 + 1941500 0.0055034125 0.0022729302 0.004981641 + 1941600 0.0053666436 0.0026669515 0.0053083464 + 1941700 0.0041627765 0.0032548749 0.0053037414 + 1941800 0.0043623951 0.0034906228 0.0056377391 + 1941900 0.0034835984 0.0034378913 0.0051524749 + 1942000 0.0056847685 0.003051769 0.005849741 + 1942100 0.0057556863 0.001951808 0.0047846849 + 1942200 0.0060839021 0.002008404 0.0050028245 + 1942300 0.0045323697 0.0020439559 0.0042747316 + 1942400 0.0046040714 0.001721521 0.0039875874 + 1942500 0.0046438812 0.0013562373 0.0036418976 + 1942600 0.004158342 0.0013194538 0.0033661378 + 1942700 0.0046637812 0.001702855 0.0039983099 + 1942800 0.0062838957 0.0020581977 0.0051510527 + 1942900 0.0071831869 0.0024291385 0.0059646133 + 1943000 0.0050244835 0.0027874513 0.0052604393 + 1943100 0.0045697951 0.0023104857 0.0045596817 + 1943200 0.0051384675 0.0018046707 0.0043337602 + 1943300 0.003556892 0.002299325 0.0040499827 + 1943400 0.004777104 0.0023338744 0.0046851053 + 1943500 0.0048931914 0.0023489872 0.0047573549 + 1943600 0.0030260166 0.0022962563 0.0037856238 + 1943700 0.0059935989 0.0022079142 0.0051578887 + 1943800 0.0041742244 0.0024655797 0.0045200808 + 1943900 0.0071192188 0.0020574313 0.0055614218 + 1944000 0.0047882085 0.0018263065 0.0041830029 + 1944100 0.0057996421 0.0016884755 0.0045429869 + 1944200 0.0057450216 0.0021086764 0.0049363043 + 1944300 0.0065961603 0.0027030243 0.005949572 + 1944400 0.0052262423 0.0027619885 0.0053342796 + 1944500 0.0045837099 0.0025227105 0.0047787552 + 1944600 0.0043572839 0.0024910502 0.0046356509 + 1944700 0.0038461622 0.0024563801 0.004349413 + 1944800 0.0066779131 0.0023488247 0.00563561 + 1944900 0.0061684992 0.0022805332 0.0053165913 + 1945000 0.0046183303 0.0025061738 0.0047792582 + 1945100 0.0060686083 0.0026098363 0.0055967294 + 1945200 0.006302049 0.0028400443 0.005941834 + 1945300 0.0041619882 0.002875805 0.0049242835 + 1945400 0.0045392246 0.0024872674 0.004721417 + 1945500 0.004788768 0.002341422 0.0046983937 + 1945600 0.0068003512 0.0018903704 0.0052374183 + 1945700 0.005354327 0.0018558797 0.0044912126 + 1945800 0.0051109486 0.0022146238 0.0047301688 + 1945900 0.0042800015 0.0022164891 0.0043230524 + 1946000 0.0050544186 0.0023136442 0.0048013658 + 1946100 0.0040574935 0.0025921725 0.0045892201 + 1946200 0.0060294764 0.0026184607 0.0055860936 + 1946300 0.0038442817 0.0028544052 0.0047465126 + 1946400 0.0052554143 0.0021231339 0.0047097831 + 1946500 0.0036103926 0.0019464465 0.0037234366 + 1946600 0.0037319802 0.0021007238 0.0039375578 + 1946700 0.0047750959 0.0023237361 0.0046739786 + 1946800 0.0059808432 0.0023604375 0.0053041338 + 1946900 0.0051591368 0.0026466873 0.0051859499 + 1947000 0.0055581688 0.0025523781 0.0052880393 + 1947100 0.0037177628 0.002504245 0.0043340814 + 1947200 0.0058009122 0.0019920139 0.0048471504 + 1947300 0.0058081754 0.0019559148 0.0048146262 + 1947400 0.0044063667 0.0022865131 0.0044552717 + 1947500 0.0041734164 0.0020979631 0.0041520665 + 1947600 0.0043305008 0.0019552981 0.0040867165 + 1947700 0.0048403374 0.0017671576 0.0041495112 + 1947800 0.0053003123 0.0022150025 0.0048237499 + 1947900 0.0044338509 0.0026767257 0.0048590117 + 1948000 0.0056110532 0.0028304549 0.0055921452 + 1948100 0.0048102169 0.0030133628 0.0053808914 + 1948200 0.0045265515 0.00275435 0.0049822621 + 1948300 0.0060881154 0.0020682125 0.0050647068 + 1948400 0.0046306615 0.0019027405 0.0041818942 + 1948500 0.0055676485 0.0018808563 0.0046211833 + 1948600 0.0042734816 0.0017054533 0.0038088075 + 1948700 0.0036355489 0.0016916969 0.0034810686 + 1948800 0.004590274 0.0018233496 0.0040826251 + 1948900 0.0041779645 0.002092464 0.0041488059 + 1949000 0.0050915833 0.0023156868 0.0048217004 + 1949100 0.0039488311 0.0019632255 0.0039067909 + 1949200 0.0044730038 0.0018821053 0.0040836619 + 1949300 0.0042214869 0.002108772 0.0041865351 + 1949400 0.00438614 0.0022550226 0.0044138259 + 1949500 0.0070104042 0.0019165951 0.0053670284 + 1949600 0.004337837 0.0019558641 0.0040908932 + 1949700 0.004938766 0.0022647281 0.0046955269 + 1949800 0.0061550364 0.0019890647 0.0050184967 + 1949900 0.0036435399 0.0022014401 0.0039947449 + 1950000 0.0051231702 0.0026722163 0.0051937767 + 1950100 0.0061761192 0.0023461744 0.0053859831 + 1950200 0.0052544786 0.0024609231 0.0050471118 + 1950300 0.0049698897 0.0027583698 0.0052044874 + 1950400 0.0047757593 0.0029634688 0.0053140378 + 1950500 0.0058921072 0.0030138878 0.0059139094 + 1950600 0.0062332072 0.0030210892 0.0060889959 + 1950700 0.0051183582 0.0028439915 0.0053631834 + 1950800 0.0050172471 0.0027103311 0.0051797574 + 1950900 0.0045950816 0.0024165827 0.0046782244 + 1951000 0.0047382081 0.0019532869 0.0042853737 + 1951100 0.0039407513 0.0020571328 0.0039967213 + 1951200 0.0048356356 0.0016102402 0.0039902796 + 1951300 0.0041751276 0.0017435179 0.0037984635 + 1951400 0.0040588326 0.0023624454 0.0043601521 + 1951500 0.0058778344 0.0025834822 0.0054764788 + 1951600 0.0063941441 0.0029821422 0.00612926 + 1951700 0.0056562701 0.0023183776 0.0051023231 + 1951800 0.0048264504 0.0019548835 0.004330402 + 1951900 0.0062045654 0.0021516686 0.0052054782 + 1952000 0.0042897572 0.0020502277 0.0041615925 + 1952100 0.0059818312 0.0018799987 0.0048241812 + 1952200 0.0034165882 0.0021824738 0.0038640758 + 1952300 0.0043020258 0.0021782343 0.0042956377 + 1952400 0.00519647 0.0018900586 0.0044476962 + 1952500 0.0057732949 0.0021985672 0.0050401108 + 1952600 0.0041574269 0.0024977711 0.0045440047 + 1952700 0.0063289385 0.0020445623 0.0051595867 + 1952800 0.0048921736 0.0020274326 0.0044352993 + 1952900 0.0044313354 0.0026314385 0.0048124864 + 1953000 0.0064333997 0.0025942498 0.0057606887 + 1953100 0.0065624207 0.0022420747 0.0054720162 + 1953200 0.003548008 0.0024522868 0.004198572 + 1953300 0.0045217632 0.002378023 0.0046035784 + 1953400 0.0047003282 0.0022333381 0.0045467808 + 1953500 0.0039800589 0.0021303665 0.0040893018 + 1953600 0.0051977643 0.0019285515 0.0044868261 + 1953700 0.0045300298 0.0025816278 0.0048112519 + 1953800 0.0052281123 0.0020846826 0.0046578941 + 1953900 0.0050875789 0.0018757677 0.0043798105 + 1954000 0.0073630713 0.0014708889 0.0050949005 + 1954100 0.005888075 0.0016951194 0.0045931564 + 1954200 0.0040477305 0.0025104363 0.0045026787 + 1954300 0.0040159159 0.0028807755 0.0048573591 + 1954400 0.0057639811 0.0024426199 0.0052795793 + 1954500 0.0046990691 0.0023312931 0.0046441162 + 1954600 0.0062294968 0.0019907943 0.0050568748 + 1954700 0.0038134165 0.0023362223 0.0042131383 + 1954800 0.0043384228 0.0022677487 0.0044030662 + 1954900 0.0041086895 0.002575238 0.0045974836 + 1955000 0.0057618147 0.0026503823 0.0054862754 + 1955100 0.0053866195 0.0028547051 0.0055059319 + 1955200 0.0065060895 0.0029907507 0.0061929666 + 1955300 0.0051540395 0.0024268348 0.0049635886 + 1955400 0.005918247 0.0022200104 0.0051328976 + 1955500 0.00527401 0.0020125439 0.0046083457 + 1955600 0.0057023232 0.001829265 0.0046358772 + 1955700 0.0044354442 0.002064399 0.0042474692 + 1955800 0.0028178835 0.0020570509 0.003443978 + 1955900 0.0052400123 0.0014843542 0.0040634228 + 1956000 0.0044515493 0.0013945085 0.0035855054 + 1956100 0.0062732301 0.0014166444 0.0045042498 + 1956200 0.0058625883 0.001880113 0.0047656057 + 1956300 0.0048796907 0.0019016454 0.0043033681 + 1956400 0.0043503072 0.0019897976 0.0041309644 + 1956500 0.0047072638 0.002014239 0.0043310954 + 1956600 0.004040348 0.0021437387 0.0041323475 + 1956700 0.0059166536 0.0022461659 0.0051582688 + 1956800 0.0047412221 0.0023105859 0.0046441562 + 1956900 0.0058967643 0.0020323519 0.0049346656 + 1957000 0.0050170232 0.0022913868 0.0047607029 + 1957100 0.0051360562 0.002353474 0.0048813767 + 1957200 0.0051993477 0.0023753953 0.0049344492 + 1957300 0.0075910763 0.0020369698 0.0057732026 + 1957400 0.0060897096 0.0023980093 0.0053952883 + 1957500 0.0063140278 0.0027847931 0.0058924787 + 1957600 0.0054957856 0.0027947956 0.0054997526 + 1957700 0.0041769473 0.0024245732 0.0044804144 + 1957800 0.0043894414 0.0026513851 0.0048118133 + 1957900 0.006061054 0.0025421013 0.0055252763 + 1958000 0.0057354608 0.0020623481 0.0048852702 + 1958100 0.0039545206 0.0017615936 0.0037079592 + 1958200 0.0037806376 0.0017925673 0.0036533498 + 1958300 0.0046866414 0.0022769038 0.0045836102 + 1958400 0.0056758527 0.0027548794 0.0055484631 + 1958500 0.0057331959 0.0026797272 0.0055015346 + 1958600 0.0055173524 0.0028425703 0.0055581422 + 1958700 0.0043320248 0.0031474432 0.0052796116 + 1958800 0.0067276345 0.0027510618 0.0060623194 + 1958900 0.0058622506 0.0025557482 0.0054410746 + 1959000 0.0047431314 0.0024561714 0.0047906813 + 1959100 0.0044309755 0.0018525584 0.0040334292 + 1959200 0.0064284583 0.0019178471 0.0050818539 + 1959300 0.0039232343 0.0028774845 0.0048084514 + 1959400 0.0048943551 0.0032274365 0.0056363769 + 1959500 0.0043600509 0.003034413 0.0051803755 + 1959600 0.0058800444 0.0026355566 0.0055296409 + 1959700 0.0044944449 0.0025639432 0.0047760528 + 1959800 0.005528302 0.0021286715 0.0048496326 + 1959900 0.00391563 0.0018230644 0.0037502885 + 1960000 0.0043009187 0.0018197585 0.0039366169 + 1960100 0.0045976068 0.0021029098 0.0043657944 + 1960200 0.0038440412 0.0020744119 0.0039664009 + 1960300 0.0051809904 0.0021146997 0.0046647185 + 1960400 0.0044555659 0.001894392 0.0040873659 + 1960500 0.004866486 0.0021133084 0.0045085319 + 1960600 0.0051720432 0.0021001547 0.0046457697 + 1960700 0.004844078 0.0023657313 0.004749926 + 1960800 0.0045788827 0.0023075766 0.0045612454 + 1960900 0.0052030572 0.0020636233 0.0046245031 + 1961000 0.0035280792 0.0022292553 0.0039657318 + 1961100 0.0040345965 0.0025924621 0.00457824 + 1961200 0.0047711305 0.0019968839 0.0043451747 + 1961300 0.0043140613 0.0015766238 0.0036999508 + 1961400 0.0050526152 0.0019508331 0.0044376671 + 1961500 0.0062219855 0.0023485514 0.0054109349 + 1961600 0.0055718507 0.0028739577 0.0056163529 + 1961700 0.0060134994 0.0028711164 0.0058308857 + 1961800 0.0038449441 0.0023706876 0.004263121 + 1961900 0.0055905866 0.002436064 0.0051876808 + 1962000 0.003931949 0.0029453362 0.0048805924 + 1962100 0.0036639542 0.0026018508 0.0044052032 + 1962200 0.0038179277 0.0027216413 0.0046007776 + 1962300 0.0070629224 0.0023816472 0.0058579293 + 1962400 0.0053193057 0.0026084756 0.0052265714 + 1962500 0.0041011754 0.0028148603 0.0048334076 + 1962600 0.0049099188 0.0025712547 0.0049878554 + 1962700 0.0033398167 0.0024234008 0.0040672168 + 1962800 0.0050646402 0.0024292192 0.0049219718 + 1962900 0.006115325 0.0025410084 0.0055508949 + 1963000 0.0048081411 0.0024715717 0.0048380787 + 1963100 0.0048101648 0.0025687031 0.0049362061 + 1963200 0.0060622333 0.0027488979 0.0057326533 + 1963300 0.0050848351 0.0031212801 0.0056239723 + 1963400 0.0047200984 0.0033849079 0.0057080813 + 1963500 0.0063871316 0.0027465439 0.0058902102 + 1963600 0.0049201673 0.0026733202 0.005094965 + 1963700 0.0059731457 0.0024461418 0.0053860494 + 1963800 0.0043685298 0.0024379986 0.0045881344 + 1963900 0.0040538819 0.0024972757 0.0044925457 + 1964000 0.0044021569 0.0020981707 0.0042648573 + 1964100 0.0060576169 0.0018181885 0.0047996718 + 1964200 0.0041034429 0.0017188646 0.0037385279 + 1964300 0.0035045935 0.0015705621 0.0032954792 + 1964400 0.0035214944 0.0019167752 0.0036500107 + 1964500 0.0055267248 0.0022641806 0.0049843654 + 1964600 0.0040407335 0.0023263417 0.0043151402 + 1964700 0.0038319704 0.0024393851 0.004325433 + 1964800 0.0068207458 0.0025497371 0.0059068229 + 1964900 0.0053023593 0.0027493608 0.0053591157 + 1965000 0.0063577043 0.0025418261 0.0056710086 + 1965100 0.0050059486 0.002606692 0.0050705573 + 1965200 0.0054695403 0.0026632069 0.0053552462 + 1965300 0.0052190538 0.0027575158 0.0053262688 + 1965400 0.0053617598 0.0025362095 0.0051752007 + 1965500 0.0057303209 0.0020405503 0.0048609426 + 1965600 0.0067614337 0.0024043677 0.0057322609 + 1965700 0.0067062646 0.0027667175 0.0060674571 + 1965800 0.0040011517 0.0024551339 0.0044244507 + 1965900 0.0062326558 0.0021690624 0.0052366976 + 1966000 0.0058405272 0.0022528503 0.0051274848 + 1966100 0.0037411039 0.002395169 0.0042364936 + 1966200 0.0050806558 0.002402328 0.0049029633 + 1966300 0.0054836211 0.0024380918 0.0051370616 + 1966400 0.0044450393 0.0020777425 0.0042655352 + 1966500 0.0051132422 0.0018010772 0.0043177511 + 1966600 0.003656032 0.0020400365 0.0038394897 + 1966700 0.0041207461 0.0021180504 0.0041462302 + 1966800 0.0045797136 0.0021848257 0.0044389035 + 1966900 0.0061018381 0.0027371496 0.0057403981 + 1967000 0.005661954 0.0025965471 0.0053832901 + 1967100 0.0060926362 0.0026552122 0.0056539315 + 1967200 0.0057948131 0.0021289476 0.0049810822 + 1967300 0.0047413638 0.0021041628 0.0044378028 + 1967400 0.0047225822 0.0023754572 0.0046998532 + 1967500 0.0047036249 0.0022176643 0.0045327297 + 1967600 0.0043852775 0.0025284402 0.004686819 + 1967700 0.0045473778 0.0029978622 0.0052360248 + 1967800 0.0044720524 0.0027242031 0.0049252913 + 1967900 0.0041343662 0.0025077714 0.0045426548 + 1968000 0.0051008836 0.0015424749 0.0040530661 + 1968100 0.0044266162 0.0015126516 0.0036913768 + 1968200 0.0052096508 0.0019109596 0.0044750846 + 1968300 0.005410992 0.0023438293 0.0050070519 + 1968400 0.0052020452 0.0022122354 0.004772617 + 1968500 0.0062668959 0.0020335453 0.0051180331 + 1968600 0.0058239703 0.0020508671 0.0049173525 + 1968700 0.0060667961 0.0020515531 0.0050375543 + 1968800 0.0054576229 0.002212246 0.0048984198 + 1968900 0.0035614849 0.0026052277 0.004358146 + 1969000 0.0054188189 0.002573247 0.0052403219 + 1969100 0.0043227859 0.0021020917 0.0042297129 + 1969200 0.0051133051 0.0021091525 0.0046258573 + 1969300 0.0058454842 0.0019518892 0.0048289634 + 1969400 0.0041841745 0.0019568573 0.0040162556 + 1969500 0.0055483137 0.0019161023 0.004646913 + 1969600 0.0055371254 0.0022012944 0.0049265983 + 1969700 0.0045267169 0.0025249533 0.0047529468 + 1969800 0.0061279605 0.002665873 0.0056819786 + 1969900 0.0048941496 0.0029549784 0.0053638176 + 1970000 0.0063825049 0.0030570939 0.0061984831 + 1970100 0.0079492512 0.0027469063 0.0066594283 + 1970200 0.0042565002 0.0025904999 0.0046854961 + 1970300 0.0061828154 0.0027827784 0.0058258829 + 1970400 0.0044564635 0.0031298734 0.0053232891 + 1970500 0.0055782859 0.0029247608 0.0056703235 + 1970600 0.0056623962 0.0027874039 0.0055743646 + 1970700 0.0046475914 0.0025042377 0.0047917241 + 1970800 0.0052519542 0.0023905823 0.0049755285 + 1970900 0.0087668221 0.0027393317 0.007054252 + 1971000 0.0048657029 0.003062321 0.0054571591 + 1971100 0.0053896951 0.0032058845 0.005858625 + 1971200 0.0042152604 0.0030911895 0.005165888 + 1971300 0.0042244388 0.0027016 0.0047808159 + 1971400 0.0041581328 0.0026380988 0.0046846798 + 1971500 0.0056693654 0.0023601876 0.0051505784 + 1971600 0.0047501817 0.0021694997 0.0045074797 + 1971700 0.0036260845 0.002277363 0.0040620765 + 1971800 0.0039920487 0.0025434426 0.0045082791 + 1971900 0.0052947029 0.0030542676 0.0056602542 + 1972000 0.0048847203 0.0031348497 0.005539048 + 1972100 0.0051804965 0.0029293056 0.0054790813 + 1972200 0.0044032118 0.0026739334 0.0048411392 + 1972300 0.0055325795 0.0023577961 0.0050808626 + 1972400 0.0036836982 0.0024419225 0.0042549927 + 1972500 0.0049796973 0.0025287977 0.0049797425 + 1972600 0.0047891595 0.0028103724 0.0051675368 + 1972700 0.0040273808 0.0028180666 0.0048002931 + 1972800 0.0052139 0.0026281261 0.0051943425 + 1972900 0.0045494083 0.0026969517 0.0049361136 + 1973000 0.0042662645 0.0023557858 0.0044555878 + 1973100 0.0039034448 0.0028230566 0.0047442833 + 1973200 0.0052748034 0.0029705491 0.0055667414 + 1973300 0.0051664682 0.0029784724 0.0055213435 + 1973400 0.0047046857 0.0027277293 0.0050433169 + 1973500 0.0053830562 0.002779874 0.0054293469 + 1973600 0.0066215512 0.0023810291 0.0056400738 + 1973700 0.0040740518 0.0026570758 0.0046622731 + 1973800 0.0035686539 0.0029934372 0.0047498841 + 1973900 0.0059361546 0.003181333 0.0061030341 + 1974000 0.0062321998 0.0033460501 0.006413461 + 1974100 0.005172146 0.0031859296 0.0057315952 + 1974200 0.0051031433 0.0031881479 0.0056998512 + 1974300 0.0060544445 0.0032340787 0.0062140006 + 1974400 0.005987858 0.0031463562 0.006093505 + 1974500 0.0053304511 0.0030716635 0.0056952449 + 1974600 0.0053468791 0.0029142453 0.0055459123 + 1974700 0.0073553963 0.0022399864 0.0058602206 + 1974800 0.0059522639 0.0025337519 0.0054633817 + 1974900 0.0049358799 0.0027719504 0.0052013288 + 1975000 0.004461605 0.0030395025 0.0052354487 + 1975100 0.0045897928 0.0028020992 0.0050611378 + 1975200 0.0047956843 0.002848826 0.0052092018 + 1975300 0.0042229187 0.002913311 0.0049917787 + 1975400 0.0050738012 0.0031093931 0.0056066547 + 1975500 0.0040048451 0.0030316112 0.0050027459 + 1975600 0.0057452333 0.002423874 0.005251606 + 1975700 0.0052523968 0.0021502419 0.004735406 + 1975800 0.0069328718 0.0021047481 0.0055170209 + 1975900 0.0064558464 0.0023314058 0.0055088927 + 1976000 0.0052138878 0.0023618796 0.00492809 + 1976100 0.0045089978 0.0026409467 0.0048602191 + 1976200 0.0044029812 0.0024717308 0.0046388231 + 1976300 0.003671671 0.0021052169 0.0039123675 + 1976400 0.0049931252 0.0021350389 0.0045925927 + 1976500 0.0046462479 0.0026576123 0.0049444374 + 1976600 0.0051001143 0.002915772 0.0054259845 + 1976700 0.0054783617 0.0029714565 0.0056678377 + 1976800 0.0037483847 0.0026669281 0.0045118362 + 1976900 0.0051239828 0.0022477273 0.0047696876 + 1977000 0.0041990913 0.0028161513 0.0048828915 + 1977100 0.0039594802 0.0032010428 0.0051498494 + 1977200 0.0058079619 0.0025410678 0.0053996741 + 1977300 0.0059823154 0.0025806854 0.0055251063 + 1977400 0.0061891562 0.0028776728 0.0059238981 + 1977500 0.003159823 0.003219768 0.0047749934 + 1977600 0.0047505594 0.0031008448 0.0054390108 + 1977700 0.0039090978 0.0031140292 0.0050380383 + 1977800 0.00483506 0.0027406432 0.0051203993 + 1977900 0.0038597978 0.0026374838 0.004537228 + 1978000 0.0048744559 0.0026458429 0.0050449892 + 1978100 0.0057549102 0.0027040842 0.0055365791 + 1978200 0.0045618443 0.0029584259 0.0052037086 + 1978300 0.005370497 0.0031401241 0.0057834156 + 1978400 0.0043056396 0.0035560459 0.0056752279 + 1978500 0.0049577181 0.0029973742 0.0054375011 + 1978600 0.0054238419 0.0025874049 0.005256952 + 1978700 0.0048098895 0.0028211325 0.0051885 + 1978800 0.0044888178 0.0030247895 0.0052341295 + 1978900 0.0045758057 0.0029502179 0.0052023723 + 1979000 0.0060411791 0.0029548338 0.0059282266 + 1979100 0.0043154893 0.0030199504 0.0051439803 + 1979200 0.0058870093 0.0027335317 0.0056310441 + 1979300 0.0047422594 0.0027734638 0.0051075446 + 1979400 0.0045072403 0.0029437671 0.0051621745 + 1979500 0.0054360951 0.0024135131 0.0050890911 + 1979600 0.0039778749 0.0019942777 0.003952138 + 1979700 0.0056449301 0.0017813829 0.0045597469 + 1979800 0.0041530596 0.0023567126 0.0044007966 + 1979900 0.0050503597 0.0028423141 0.005328038 + 1980000 0.0062999048 0.0024439437 0.0055446781 + 1980100 0.0052505953 0.0025956758 0.0051799532 + 1980200 0.0049434609 0.002769345 0.0052024547 + 1980300 0.0065141845 0.0020366298 0.00524283 + 1980400 0.0061064227 0.0018875618 0.0048930668 + 1980500 0.0050600753 0.0021138048 0.0046043107 + 1980600 0.0052154245 0.0028344629 0.0054014297 + 1980700 0.0055430207 0.0026775714 0.0054057769 + 1980800 0.0069388202 0.0029468265 0.0063620271 + 1980900 0.004781961 0.0028670738 0.0052206952 + 1981000 0.0042950309 0.0030986563 0.0052126168 + 1981100 0.0058934329 0.0028801275 0.0057808015 + 1981200 0.0051552375 0.0025165771 0.0050539206 + 1981300 0.0041582899 0.0024423829 0.0044890413 + 1981400 0.0041224335 0.0027406088 0.0047696191 + 1981500 0.0041688508 0.003124121 0.0051759772 + 1981600 0.0054967786 0.0025034131 0.0052088588 + 1981700 0.0059341759 0.0023962616 0.0053169888 + 1981800 0.0050288218 0.0029115977 0.0053867209 + 1981900 0.0073145799 0.0031682516 0.0067683964 + 1982000 0.0050831158 0.0027414071 0.0052432531 + 1982100 0.0030982604 0.0023919215 0.0039168466 + 1982200 0.0049525901 0.0019992191 0.004436822 + 1982300 0.004505022 0.0022314753 0.0044487909 + 1982400 0.0049952129 0.0025842099 0.0050427912 + 1982500 0.0038319548 0.0025762614 0.0044623017 + 1982600 0.0047335587 0.0020768117 0.0044066102 + 1982700 0.0047315554 0.0020836694 0.0044124818 + 1982800 0.0037731958 0.0027345713 0.0045916911 + 1982900 0.0045711762 0.0026494406 0.0048993164 + 1983000 0.0054898125 0.0021691463 0.0048711634 + 1983100 0.0046453786 0.0019030225 0.0041894198 + 1983200 0.0054186195 0.0022998265 0.0049668032 + 1983300 0.0054853187 0.0024850769 0.0051848822 + 1983400 0.0050157473 0.0024651767 0.0049338649 + 1983500 0.0034265672 0.0028266297 0.0045131432 + 1983600 0.0058993849 0.0026177563 0.0055213598 + 1983700 0.0042001526 0.0022676125 0.0043348751 + 1983800 0.0055705242 0.0022174523 0.0049591946 + 1983900 0.0050699448 0.0022974572 0.0047928206 + 1984000 0.0050657324 0.0025681994 0.0050614896 + 1984100 0.0053734977 0.0024815444 0.0051263129 + 1984200 0.0053513621 0.0018492774 0.0044831509 + 1984300 0.0054531232 0.0018767829 0.004560742 + 1984400 0.0049844047 0.0021000771 0.0045533388 + 1984500 0.0042442045 0.0030772223 0.0051661667 + 1984600 0.0037087739 0.0029275743 0.0047529864 + 1984700 0.0080061441 0.0023483682 0.0062888923 + 1984800 0.005685293 0.0024488912 0.0052471214 + 1984900 0.0048997754 0.001879708 0.0042913162 + 1985000 0.0047381092 0.0016232973 0.0039553354 + 1985100 0.005041188 0.0016960054 0.0041772151 + 1985200 0.0068723264 0.0019689625 0.0053514357 + 1985300 0.0059336976 0.002259717 0.0051802088 + 1985400 0.0056969021 0.0023596115 0.0051635555 + 1985500 0.0054995841 0.0019500888 0.0046569153 + 1985600 0.0055650213 0.0018248935 0.0045639275 + 1985700 0.003298754 0.0015875152 0.0032111206 + 1985800 0.0046976021 0.0019011104 0.0042132115 + 1985900 0.0048921792 0.0020709354 0.0044788048 + 1986000 0.0050250805 0.0020213273 0.0044946091 + 1986100 0.0053275615 0.0021487742 0.0047709334 + 1986200 0.0039628512 0.002647106 0.0045975718 + 1986300 0.0042828966 0.0028408882 0.0049488764 + 1986400 0.0065968618 0.0024620465 0.0057089395 + 1986500 0.0049763336 0.0022323524 0.0046816416 + 1986600 0.0050415652 0.0019012453 0.0043826406 + 1986700 0.005718796 0.0019400205 0.0047547404 + 1986800 0.0049314747 0.002240595 0.0046678052 + 1986900 0.0057709462 0.0020852965 0.0049256841 + 1987000 0.0055647812 0.0017174938 0.0044564095 + 1987100 0.0055902158 0.0017661794 0.0045176137 + 1987200 0.0061639556 0.0024604312 0.0054942531 + 1987300 0.0053606871 0.0024218447 0.0050603078 + 1987400 0.0044048414 0.0021148092 0.0042828171 + 1987500 0.0050490279 0.0026949514 0.0051800198 + 1987600 0.0033034539 0.0028827272 0.0045086459 + 1987700 0.0056157258 0.0026394497 0.0054034398 + 1987800 0.0046056081 0.0024753942 0.004742217 + 1987900 0.0053904937 0.0019866846 0.0046398182 + 1988000 0.0050083182 0.0021466774 0.004611709 + 1988100 0.003811463 0.0023440655 0.0042200199 + 1988200 0.0054874956 0.0018172397 0.0045181165 + 1988300 0.0046301681 0.0017158983 0.0039948092 + 1988400 0.0045802489 0.0018986344 0.0041529757 + 1988500 0.0042252891 0.0021489599 0.0042285943 + 1988600 0.00464105 0.0027011784 0.0049854453 + 1988700 0.0057547229 0.0027889251 0.0056213278 + 1988800 0.0047532467 0.0025011755 0.0048406641 + 1988900 0.0056052759 0.0020999981 0.0048588448 + 1989000 0.0046328768 0.0022881468 0.0045683908 + 1989100 0.005010845 0.0021371748 0.0046034501 + 1989200 0.0040517167 0.0018519146 0.0038461189 + 1989300 0.0059914567 0.0015364795 0.0044853996 + 1989400 0.0034603101 0.0018072419 0.0035103633 + 1989500 0.0042466357 0.0020787266 0.0041688676 + 1989600 0.0051598579 0.002514277 0.0050538946 + 1989700 0.0043113683 0.0025939534 0.0047159549 + 1989800 0.0041294298 0.0025453096 0.0045777634 + 1989900 0.0038935313 0.0026856849 0.0046020323 + 1990000 0.0056438403 0.0022228385 0.0050006661 + 1990100 0.0047138269 0.0022843105 0.0046043972 + 1990200 0.0051151787 0.0025090598 0.0050266868 + 1990300 0.0049282742 0.0023855288 0.0048111637 + 1990400 0.0052360244 0.0023640181 0.0049411239 + 1990500 0.0052002449 0.0020073376 0.0045668331 + 1990600 0.0052603077 0.0018676685 0.0044567262 + 1990700 0.0032799454 0.0019433734 0.0035577215 + 1990800 0.0043308412 0.0019865754 0.0041181613 + 1990900 0.0049651471 0.0020408853 0.0044846686 + 1991000 0.0064263516 0.0023365408 0.0054995107 + 1991100 0.005110402 0.0024265468 0.0049418228 + 1991200 0.0052620821 0.0028286653 0.0054185964 + 1991300 0.0034043815 0.0029405703 0.0046161643 + 1991400 0.0056655427 0.002730733 0.0055192423 + 1991500 0.0056683951 0.002308152 0.0050980653 + 1991600 0.0050704672 0.0025708244 0.005066445 + 1991700 0.0043307914 0.0029145105 0.0050460719 + 1991800 0.0052904937 0.0030241416 0.0056280565 + 1991900 0.0048906864 0.0032815402 0.0056886749 + 1992000 0.0054884386 0.0034554958 0.0061568366 + 1992100 0.0058638076 0.0032399942 0.006126087 + 1992200 0.0045975454 0.002824056 0.0050869104 + 1992300 0.0047427854 0.0025829998 0.0049173394 + 1992400 0.0038374403 0.002542284 0.0044310241 + 1992500 0.0057449529 0.0024547601 0.0052823541 + 1992600 0.0059882545 0.0020066323 0.0049539764 + 1992700 0.0051644924 0.0020321311 0.0045740297 + 1992800 0.0051663507 0.0025529926 0.0050958058 + 1992900 0.0052874852 0.0029005984 0.0055030325 + 1993000 0.0051789834 0.002932028 0.0054810588 + 1993100 0.0046394072 0.0029994144 0.0052828727 + 1993200 0.005234685 0.0028774698 0.0054539163 + 1993300 0.0047522556 0.0025951217 0.0049341224 + 1993400 0.0074959829 0.0025009687 0.0061903978 + 1993500 0.0039129976 0.0032317131 0.0051576416 + 1993600 0.0043637664 0.0032938349 0.0054416262 + 1993700 0.0043572388 0.0031057684 0.0052503469 + 1993800 0.0074529602 0.0026348982 0.0063031521 + 1993900 0.0037679233 0.0026274942 0.0044820189 + 1994000 0.0049829756 0.0021650901 0.0046176484 + 1994100 0.0055307292 0.0020324649 0.0047546207 + 1994200 0.0047293982 0.0024693387 0.0047970894 + 1994300 0.0063571425 0.0024678261 0.0055967322 + 1994400 0.0052947511 0.0024082668 0.0050142771 + 1994500 0.0047607034 0.0022730389 0.0046161976 + 1994600 0.0070307226 0.0018187729 0.0052792067 + 1994700 0.0063189855 0.0015227998 0.0046329255 + 1994800 0.0058463265 0.0016856726 0.0045631614 + 1994900 0.0044550514 0.0019621556 0.0041548762 + 1995000 0.0051622777 0.0020446714 0.0045854799 + 1995100 0.0041940515 0.00222956 0.0042938197 + 1995200 0.0039296763 0.0022136127 0.0041477503 + 1995300 0.004062208 0.0018235115 0.0038228795 + 1995400 0.0049330481 0.0016191577 0.0040471423 + 1995500 0.00509695 0.0019933343 0.0045019894 + 1995600 0.0062257088 0.0020172697 0.0050814857 + 1995700 0.0039886567 0.0017794217 0.0037425886 + 1995800 0.0044976542 0.0017709365 0.0039846257 + 1995900 0.0053579657 0.0021039712 0.0047410949 + 1996000 0.0064835665 0.0020022043 0.0051933347 + 1996100 0.0046543009 0.0021049099 0.0043956986 + 1996200 0.0057234402 0.002259823 0.0050768287 + 1996300 0.0040347378 0.0023433742 0.0043292217 + 1996400 0.0051954764 0.0026857358 0.0052428843 + 1996500 0.0044238311 0.0025509056 0.00472826 + 1996600 0.0064962637 0.0021231854 0.0053205652 + 1996700 0.0037554311 0.0020482724 0.0038966486 + 1996800 0.003913544 0.0021095955 0.0040357929 + 1996900 0.0044236762 0.002243618 0.0044208961 + 1997000 0.0044884775 0.0024545671 0.0046637396 + 1997100 0.0054405354 0.0025390388 0.0052168023 + 1997200 0.004465932 0.0023606972 0.0045587731 + 1997300 0.0045632708 0.0025142273 0.0047602122 + 1997400 0.0052344775 0.0027464507 0.0053227951 + 1997500 0.0047759755 0.002783892 0.0051345675 + 1997600 0.0056364942 0.0021685357 0.0049427477 + 1997700 0.0037913202 0.0019583496 0.00382439 + 1997800 0.0050482422 0.0022335132 0.0047181949 + 1997900 0.0050208922 0.0027812269 0.0052524473 + 1998000 0.0046525474 0.0028043102 0.0050942359 + 1998100 0.0069723101 0.0019055429 0.0053372267 + 1998200 0.0064172699 0.0018082562 0.0049667562 + 1998300 0.0060220135 0.0020378316 0.0050017913 + 1998400 0.0062648643 0.0026460546 0.0057295425 + 1998500 0.0042685253 0.0027045125 0.0048054273 + 1998600 0.0047982195 0.0024999167 0.0048615404 + 1998700 0.0045770619 0.0023965866 0.0046493593 + 1998800 0.006166689 0.0022217336 0.0052569009 + 1998900 0.0060578663 0.0023546222 0.0053362283 + 1999000 0.004238593 0.0024786217 0.0045648042 + 1999100 0.0054266305 0.0028549884 0.0055259081 + 1999200 0.0033827038 0.0027990632 0.0044639877 + 1999300 0.0047584445 0.0023526277 0.0046946746 + 1999400 0.0056181695 0.0020335116 0.0047987044 + 1999500 0.0033374664 0.0023030393 0.0039456986 + 1999600 0.0053943118 0.0023096891 0.004964702 + 1999700 0.0047621637 0.0021943385 0.0045382159 + 1999800 0.0058336388 0.0020055057 0.0048767498 + 1999900 0.0058349189 0.002299977 0.0051718512 + 2000000 0.0046591833 0.0026625608 0.0049557526 +Loop time of 12.6681 on 1 procs for 2000000 steps with 64 atoms + +Performance: 68203007.046 tau/day, 157877.331 timesteps/s, 10.104 Matom-step/s +96.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Bond | 0.86381 | 0.86381 | 0.86381 | 0.0 | 6.82 +Neigh | 1.2565 | 1.2565 | 1.2565 | 0.0 | 9.92 +Comm | 1.0357 | 1.0357 | 1.0357 | 0.0 | 8.18 +Output | 0.071243 | 0.071243 | 0.071243 | 0.0 | 0.56 +Modify | 7.5928 | 7.5928 | 7.5928 | 0.0 | 59.94 +Other | | 1.848 | | | 14.59 + +Nlocal: 64 ave 64 max 64 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 0 +Ave neighs/atom = 0 +Ave special neighs/atom = 6 +Neighbor list builds = 2000000 +Dangerous builds not checked +Total wall time: 0:00:12 diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.4 b/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.4 new file mode 100644 index 00000000000..2bb0c1c972b --- /dev/null +++ b/examples/PACKAGES/phonon/2-1D-diatomic/log.6Dec23.Ana.g++.4 @@ -0,0 +1,20125 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# 3D simple cubic lattice simulation +dimension 2 +boundary p f p + +units lj +atom_style bond +atom_modify sort 0 1. +bond_style harmonic +pair_style none +comm_modify cutoff 2.0 + +# geometry +read_data data.pos +Reading data file ... + orthogonal box = (0 0 -0.5) to (64 1 0.5) + 4 by 1 by 1 MPI processor grid + reading atoms ... + 64 atoms + scanning bonds ... + 2 = max bonds/atom + reading bonds ... + 64 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.001 seconds + +# +neighbor 1.0 nsq +neigh_modify delay 0 check no + +#Langevin random seed +variable r equal 571101 + +#Langevin Temperature +variable t equal 0.005 + +# Langevin Damping variable +variable d equal 0.5 + +# Create velocities and equilibrate +compute MyTemp all temp/partial 1 0 0 +velocity all create $t 28711 mom yes rot yes dist gaussian temp MyTemp +velocity all create 0.005 28711 mom yes rot yes dist gaussian temp MyTemp +velocity all set NULL 0.0 0.0 units box +# +fix 1 all langevin $t $t $d $r +fix 1 all langevin 0.005 $t $d $r +fix 1 all langevin 0.005 0.005 $d $r +fix 1 all langevin 0.005 0.005 0.5 $r +fix 1 all langevin 0.005 0.005 0.5 571101 +fix_modify 1 temp MyTemp +fix 2 all setforce NULL 0. 0. +fix 3 all nve +fix 4 all phonon 10 50000 500000 map.in phonon sysdim 1 +fix_modify 4 temp MyTemp + +# 1 2 3 4 +thermo_style custom step temp pe etotal +thermo_modify temp MyTemp +thermo 100 + +# +run 2000000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix phonon command: doi:10.1016/j.cpc.2011.04.019 + +@Article{Kong11, + author = {L. T. Kong}, + title = {Phonon Dispersion Measured Directly from Molecular Dynamics Simulations}, + journal = {Comput.\ Phys.\ Commun.}, + year = 2011, + volume = 182, + pages = {2201--2207} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +WARNING: Communication cutoff 2 is shorter than a bond length based estimate of 2.5. This may lead to errors. (src/comm.cpp:723) +WARNING: Communication cutoff 2 is shorter than a bond length based estimate of 2.5. This may lead to errors. (src/comm.cpp:723) +WARNING: Inconsistent image flags (src/domain.cpp:815) +Per MPI rank memory allocation (min/avg/max) = 3.235 | 3.235 | 3.235 Mbytes + Step Temp PotEng TotEng + 0 0.005 0 0.0024609375 + 100 0.0031092926 0.00040379819 0.0019341531 + 200 0.0039279141 0.00086859939 0.0028018696 + 300 0.0064511702 0.0014805212 0.0046557066 + 400 0.0047373042 0.0020887555 0.0044203974 + 500 0.0051359955 0.0024683239 0.0049961967 + 600 0.0056790179 0.0026466922 0.0054418338 + 700 0.0054525242 0.0028225133 0.0055061775 + 800 0.0055112651 0.0021776912 0.004890267 + 900 0.0050003129 0.0015646928 0.0040257843 + 1000 0.0049003177 0.001701767 0.0041136421 + 1100 0.0047411466 0.0021193246 0.0044528577 + 1200 0.0053835193 0.0019054194 0.0045551204 + 1300 0.0044792417 0.0020111925 0.0042158192 + 1400 0.0059891894 0.0019319674 0.0048797715 + 1500 0.0047035184 0.0023987012 0.0047137141 + 1600 0.0056797568 0.002766631 0.0055621363 + 1700 0.0063182531 0.0024726126 0.0055823778 + 1800 0.0040048174 0.0028326258 0.0048037469 + 1900 0.0046114794 0.0030783445 0.005348057 + 2000 0.0047870171 0.0029788442 0.0053349541 + 2100 0.0065542828 0.002712365 0.005938301 + 2200 0.0065784683 0.0028786985 0.0061165384 + 2300 0.0061937464 0.0036292734 0.006677758 + 2400 0.0066933832 0.0034035578 0.0066979573 + 2500 0.0065453168 0.0024818357 0.0057033588 + 2600 0.0052756649 0.0019078406 0.004504457 + 2700 0.0056619034 0.0013428201 0.0041295382 + 2800 0.0035394016 0.0014177079 0.0031597571 + 2900 0.004269206 0.001530366 0.0036316158 + 3000 0.0054419762 0.0020503515 0.0047288241 + 3100 0.0049565797 0.0024108077 0.0048503743 + 3200 0.00567568 0.0020776217 0.0048711205 + 3300 0.0046753683 0.0022037424 0.0045049003 + 3400 0.0054246376 0.0017626146 0.0044325534 + 3500 0.0054421912 0.0017537041 0.0044322826 + 3600 0.0061099993 0.0020075611 0.0050148264 + 3700 0.0040163755 0.0023383265 0.0043151363 + 3800 0.006683076 0.0019795058 0.0052688323 + 3900 0.0051400304 0.0017273226 0.0042571813 + 4000 0.004545797 0.0020524725 0.0042898569 + 4100 0.0061776203 0.0021697773 0.0052103248 + 4200 0.007241124 0.0017791449 0.0053431357 + 4300 0.0053079733 0.0013440496 0.0039565677 + 4400 0.0041356873 0.0016127731 0.0036483066 + 4500 0.0042719034 0.0016663692 0.0037689467 + 4600 0.0051491675 0.0016802514 0.0042146073 + 4700 0.0050961811 0.0022752318 0.0047835085 + 4800 0.0055374753 0.0024167371 0.0051422132 + 4900 0.0068004041 0.0022243353 0.0055714092 + 5000 0.0056272867 0.0024832453 0.0052529255 + 5100 0.0052627898 0.0026340507 0.0052243301 + 5200 0.0056680235 0.0025933592 0.0053830895 + 5300 0.0068164135 0.0033952558 0.0067502093 + 5400 0.0050555376 0.003557345 0.0060456174 + 5500 0.0059976858 0.0026983783 0.0056503643 + 5600 0.0054411749 0.0023033738 0.0049814521 + 5700 0.0060289983 0.0022403571 0.0052077547 + 5800 0.0043641156 0.0019509792 0.0040989423 + 5900 0.0054432847 0.00196019 0.0046393066 + 6000 0.0034082909 0.0020112851 0.0036888032 + 6100 0.0043928106 0.0018741478 0.0040362343 + 6200 0.0045230673 0.0017133115 0.0039395086 + 6300 0.0065489561 0.0022496203 0.0054729346 + 6400 0.0052678358 0.0024260994 0.0050188624 + 6500 0.0045943377 0.0023203803 0.0045816559 + 6600 0.0045040258 0.0023560041 0.0045728293 + 6700 0.0035414453 0.0022506129 0.0039936679 + 6800 0.0045245181 0.0021720697 0.004398981 + 6900 0.0043446261 0.0021090094 0.00424738 + 7000 0.0050994842 0.0022381066 0.004748009 + 7100 0.0035382116 0.002622187 0.0043636505 + 7200 0.0058864282 0.0026836924 0.0055809187 + 7300 0.0052436597 0.0021487099 0.0047295736 + 7400 0.005685301 0.0015839674 0.0043822015 + 7500 0.0056483316 0.0016032465 0.0043832847 + 7600 0.0035757235 0.0021629578 0.0039228842 + 7700 0.0051999693 0.002193788 0.0047531479 + 7800 0.006313871 0.0021671161 0.0052747245 + 7900 0.0047730576 0.002335035 0.0046842742 + 8000 0.0044387794 0.0025123631 0.0046970748 + 8100 0.0069234991 0.0024867047 0.0058943644 + 8200 0.0066840194 0.0024363507 0.0057261415 + 8300 0.0039825115 0.0026934721 0.0046536145 + 8400 0.0036344523 0.0029203838 0.0047092158 + 8500 0.0056537256 0.0027069512 0.0054896442 + 8600 0.0049288586 0.0020880106 0.0045139332 + 8700 0.0037567885 0.0018937 0.0037427443 + 8800 0.0051885248 0.0022767457 0.0048304727 + 8900 0.0048656999 0.0021481017 0.0045429384 + 9000 0.0053786685 0.0021649391 0.0048122525 + 9100 0.0041150429 0.0021872196 0.0042125923 + 9200 0.0045133627 0.0020803165 0.0043017372 + 9300 0.0060373426 0.0022172154 0.00518872 + 9400 0.0054588295 0.0027773114 0.005464079 + 9500 0.0058802452 0.0027602448 0.005654428 + 9600 0.0042195084 0.0032924694 0.0053692586 + 9700 0.0060165549 0.0025534048 0.005514678 + 9800 0.0050241517 0.001807778 0.0042806027 + 9900 0.0061489635 0.0023496208 0.0053760638 + 10000 0.0052326955 0.0027879909 0.0053634582 + 10100 0.0035569213 0.0026944818 0.004445154 + 10200 0.0066401928 0.0020453285 0.0053135484 + 10300 0.0060613441 0.002091832 0.0050751498 + 10400 0.0067776283 0.0026018522 0.0059377162 + 10500 0.004803969 0.0027545887 0.0051190422 + 10600 0.0071177837 0.0021458255 0.0056491097 + 10700 0.0051269808 0.0023613253 0.0048847611 + 10800 0.0047839896 0.0024783254 0.0048329453 + 10900 0.0067420174 0.0027433441 0.0060616808 + 11000 0.0050132918 0.0027008413 0.0051683209 + 11100 0.0047697403 0.002321385 0.0046689915 + 11200 0.0064471511 0.0025069987 0.0056802059 + 11300 0.0038256685 0.0031693059 0.0050522521 + 11400 0.0069277531 0.0030919855 0.006501739 + 11500 0.0054211261 0.0030552674 0.0057234779 + 11600 0.0058557273 0.0024084707 0.0052905865 + 11700 0.0046548338 0.0026850494 0.0049761004 + 11800 0.0048975299 0.0028348556 0.0052453586 + 11900 0.0056311916 0.0032767124 0.0060483145 + 12000 0.0049885908 0.0030157871 0.0054711092 + 12100 0.0048655578 0.002553305 0.0049480717 + 12200 0.0045185421 0.002484567 0.004708537 + 12300 0.0040890369 0.0024332877 0.0044458606 + 12400 0.0050885895 0.0023510207 0.0048555608 + 12500 0.004919956 0.0026253729 0.0050469137 + 12600 0.0050042266 0.0032084168 0.0056714346 + 12700 0.0043770546 0.0030207212 0.0051750527 + 12800 0.004449569 0.0032156953 0.0054057175 + 12900 0.0052140394 0.0033329527 0.0058992377 + 13000 0.0050918569 0.0032002078 0.0057063561 + 13100 0.0057436034 0.0029710222 0.005797952 + 13200 0.004775945 0.0029036859 0.0052543463 + 13300 0.0063195631 0.0026689886 0.0057793986 + 13400 0.0056684048 0.0025854251 0.0053753431 + 13500 0.0042746154 0.0027119481 0.0048158603 + 13600 0.0051941538 0.0029753599 0.0055318575 + 13700 0.0045493047 0.0034187278 0.0056578387 + 13800 0.0046606562 0.0037771756 0.0060710923 + 13900 0.0055316524 0.0032705549 0.0059931651 + 14000 0.0049580813 0.0027899606 0.0052302662 + 14100 0.0070364257 0.0022597167 0.0057229575 + 14200 0.0065490894 0.0023408445 0.0055642244 + 14300 0.0073815901 0.0023889763 0.0060221027 + 14400 0.0053736605 0.0027999105 0.005444759 + 14500 0.0050721119 0.0027714491 0.0052678792 + 14600 0.0046831327 0.0024454872 0.0047504666 + 14700 0.0055929323 0.002116225 0.0048689964 + 14800 0.00487938 0.0022487257 0.0046502955 + 14900 0.0041725188 0.0026516791 0.0047053407 + 15000 0.0048485447 0.0025045419 0.0048909351 + 15100 0.0053467949 0.0026021928 0.0052338184 + 15200 0.005600918 0.0024956603 0.0052523621 + 15300 0.0063638104 0.0028988598 0.0060310477 + 15400 0.0048681522 0.0031580964 0.0055541401 + 15500 0.004181491 0.0032345472 0.0052926248 + 15600 0.0051507408 0.0026730128 0.005208143 + 15700 0.0049806355 0.0021046656 0.0045560722 + 15800 0.0032597397 0.0024267351 0.0040311383 + 15900 0.0049003502 0.002432989 0.0048448802 + 16000 0.0050497143 0.0027552322 0.0052406384 + 16100 0.0069256157 0.0028386702 0.0062473717 + 16200 0.0046227818 0.0024819379 0.0047572133 + 16300 0.0054134318 0.0023405561 0.0050049796 + 16400 0.006374811 0.0025726433 0.0057102456 + 16500 0.0066448674 0.0030882352 0.0063587559 + 16600 0.0045447667 0.0031809644 0.0054178418 + 16700 0.0034559814 0.002855938 0.0045569288 + 16800 0.0051066369 0.0029599979 0.0054734207 + 16900 0.0067744469 0.0028635139 0.0061978119 + 17000 0.0046669786 0.0030451959 0.0053422245 + 17100 0.0048511517 0.0029146776 0.0053023538 + 17200 0.0052254364 0.0031715416 0.005743436 + 17300 0.0051298417 0.0028949342 0.0054197782 + 17400 0.0052361032 0.0027066784 0.0052838229 + 17500 0.0050390546 0.0025040195 0.0049841791 + 17600 0.0040351246 0.0028207324 0.0048067703 + 17700 0.0056635824 0.002820155 0.0056076995 + 17800 0.0056887209 0.00317468 0.0059745974 + 17900 0.0049440169 0.003511139 0.0059445223 + 18000 0.0054897198 0.0033864147 0.0060883862 + 18100 0.005879619 0.0033533515 0.0062472265 + 18200 0.0041932291 0.0032324656 0.0052963205 + 18300 0.0044018703 0.0027032247 0.0048697703 + 18400 0.0041983735 0.00288756 0.0049539469 + 18500 0.0053416187 0.0032088075 0.0058378854 + 18600 0.004562029 0.0034476786 0.0056930523 + 18700 0.0057561306 0.0033556537 0.0061887493 + 18800 0.0058986022 0.0027969897 0.005700208 + 18900 0.004171279 0.0027614162 0.0048144676 + 19000 0.0054946224 0.0026177619 0.0053221464 + 19100 0.0049922844 0.0023638596 0.0048209995 + 19200 0.004687501 0.0022800612 0.0045871906 + 19300 0.0050481806 0.0024432668 0.0049279181 + 19400 0.0047490937 0.0024888854 0.00482633 + 19500 0.0054990369 0.0021439626 0.0048505198 + 19600 0.0047928046 0.0020857284 0.0044446869 + 19700 0.0036340477 0.0022735134 0.0040621463 + 19800 0.0051410333 0.0021618653 0.0046922177 + 19900 0.0065478784 0.0025517473 0.0057745312 + 20000 0.0035167257 0.0027721702 0.0045030586 + 20100 0.0041179286 0.0024535857 0.0044803787 + 20200 0.0043676783 0.0021276434 0.0042773601 + 20300 0.0050148447 0.0020943064 0.0045625503 + 20400 0.0054429129 0.0022268018 0.0049057356 + 20500 0.0058321233 0.0022379381 0.0051084362 + 20600 0.0066270292 0.0020393432 0.0053010842 + 20700 0.004295378 0.0024717644 0.0045858958 + 20800 0.0055329877 0.002509889 0.0052331563 + 20900 0.0045122556 0.0025360094 0.0047568852 + 21000 0.005270327 0.0027971303 0.0053911193 + 21100 0.0043225609 0.0034493845 0.005576895 + 21200 0.0052944547 0.0033038906 0.005909755 + 21300 0.0059584834 0.0024788501 0.0054115412 + 21400 0.0044898274 0.0024249254 0.0046347623 + 21500 0.0059771607 0.0023183759 0.0052602597 + 21600 0.004790593 0.0017687452 0.0041266152 + 21700 0.0050672709 0.0020666766 0.004560724 + 21800 0.0050570228 0.0027424564 0.0052314598 + 21900 0.0053769964 0.0028247055 0.0054711959 + 22000 0.0062028834 0.0025287646 0.0055817463 + 22100 0.0045987403 0.0028021561 0.0050655986 + 22200 0.0056176826 0.002809137 0.0055740902 + 22300 0.0048838611 0.0029758252 0.0053796006 + 22400 0.0063379833 0.0029710695 0.0060905457 + 22500 0.004581338 0.0032559908 0.0055108681 + 22600 0.0052400691 0.0028046327 0.0053837292 + 22700 0.006448842 0.0021840962 0.0053581356 + 22800 0.00575483 0.0020443807 0.0048768361 + 22900 0.005732221 0.0021246212 0.0049459487 + 23000 0.005264346 0.0025494884 0.0051405337 + 23100 0.0034644345 0.0030264045 0.0047315558 + 23200 0.0048601736 0.0030798408 0.0054719575 + 23300 0.0072877103 0.0025255208 0.0061124407 + 23400 0.0076319628 0.0025273033 0.00628366 + 23500 0.0061085785 0.0027717487 0.0057783147 + 23600 0.0055387401 0.0029187435 0.0056448421 + 23700 0.0042649846 0.0026187689 0.004717941 + 23800 0.0045735494 0.0027724545 0.0050234983 + 23900 0.0034010395 0.0031538022 0.0048277514 + 24000 0.0045051528 0.003327378 0.0055447579 + 24100 0.0068309338 0.0032021011 0.0065642013 + 24200 0.0039097742 0.0033365467 0.0052608887 + 24300 0.0065925239 0.0030325694 0.0062773273 + 24400 0.0067880973 0.0028966348 0.0062376515 + 24500 0.0056149109 0.0030633411 0.00582693 + 24600 0.0043486613 0.0036810389 0.0058213956 + 24700 0.0056721851 0.0031597698 0.0059515485 + 24800 0.0070161406 0.0030335373 0.006486794 + 24900 0.0057156254 0.0033636552 0.0061768146 + 25000 0.0045449739 0.0032291656 0.0054661449 + 25100 0.0051999223 0.0030856763 0.005645013 + 25200 0.0055890758 0.0034022145 0.0061530878 + 25300 0.006235958 0.0032149996 0.0062842602 + 25400 0.0035615605 0.0031945875 0.0049475431 + 25500 0.0042495603 0.0032143371 0.0053059176 + 25600 0.0048304585 0.003015531 0.0053930222 + 25700 0.0056845479 0.0029249434 0.0057228068 + 25800 0.0075757358 0.0024320672 0.0061607497 + 25900 0.0042768233 0.0025083058 0.0046133048 + 26000 0.0050457092 0.0021254399 0.0046088749 + 26100 0.005330724 0.0020636982 0.0046874139 + 26200 0.0041813514 0.0020444241 0.004102433 + 26300 0.0048650223 0.0017385057 0.0041330088 + 26400 0.0037818418 0.0018839961 0.0037453714 + 26500 0.0057264594 0.0017003156 0.0045188074 + 26600 0.0046952689 0.0020179294 0.004328882 + 26700 0.0046541949 0.0023098013 0.0046005379 + 26800 0.0041627743 0.0022906129 0.0043394784 + 26900 0.0050172995 0.0023363927 0.0048058448 + 27000 0.0050219399 0.0026852 0.005156936 + 27100 0.0047405592 0.0026176105 0.0049508544 + 27200 0.0044825745 0.0024694682 0.0046757354 + 27300 0.0047274423 0.0021207316 0.0044475196 + 27400 0.0050886794 0.0018025682 0.0043071526 + 27500 0.004285933 0.0017975262 0.0039070088 + 27600 0.0047306842 0.0015745587 0.0039029424 + 27700 0.0055355996 0.0018138195 0.0045383724 + 27800 0.0040352679 0.001845378 0.0038314864 + 27900 0.0052799246 0.0018621238 0.0044608367 + 28000 0.0037930104 0.0021002345 0.0039671068 + 28100 0.0042318968 0.0025565718 0.0046394585 + 28200 0.0061595984 0.0021361623 0.0051678396 + 28300 0.0038497065 0.0018018518 0.0036966292 + 28400 0.003245253 0.0021151839 0.0037124568 + 28500 0.0052368494 0.002063938 0.0046414498 + 28600 0.0037896292 0.0018143999 0.003679608 + 28700 0.0040484295 0.0016286098 0.0036211961 + 28800 0.0057167495 0.0014573467 0.0042710594 + 28900 0.0058690264 0.0016224728 0.0045111342 + 29000 0.0041766642 0.0019000434 0.0039557453 + 29100 0.0064427458 0.0020981369 0.0052691758 + 29200 0.0047567776 0.0025555943 0.0048968208 + 29300 0.0076126557 0.0027153701 0.0064622241 + 29400 0.0060747608 0.0029299654 0.0059198867 + 29500 0.0057414909 0.0029908265 0.0058167165 + 29600 0.0050366775 0.0029775661 0.0054565559 + 29700 0.0048702432 0.0027577685 0.0051548414 + 29800 0.0042150351 0.0022249531 0.0042995407 + 29900 0.0050072153 0.002188825 0.0046533138 + 30000 0.0052385931 0.0019504754 0.0045288454 + 30100 0.0047964015 0.0022543927 0.0046151216 + 30200 0.0056668869 0.0027090712 0.0054982421 + 30300 0.0064152664 0.0029260648 0.0060835788 + 30400 0.0062010296 0.003120472 0.0061725413 + 30500 0.0074267397 0.0029896791 0.0066450276 + 30600 0.0045120905 0.0023382835 0.004559078 + 30700 0.0055545204 0.0018773436 0.0046112091 + 30800 0.0056187483 0.0021024235 0.0048679011 + 30900 0.0047279802 0.0023396354 0.0046666881 + 31000 0.0042382678 0.0023830179 0.0044690404 + 31100 0.0048707358 0.0020682878 0.0044656031 + 31200 0.004261005 0.0029128294 0.0050100428 + 31300 0.0047470895 0.0029022367 0.0052386948 + 31400 0.0061144328 0.0025283589 0.0055378063 + 31500 0.0056163879 0.0027902851 0.005554601 + 31600 0.0041200566 0.0030247304 0.0050525707 + 31700 0.0043076058 0.0025774137 0.0046975635 + 31800 0.0052202256 0.0022890934 0.0048584231 + 31900 0.0039812256 0.0024323832 0.0043918927 + 32000 0.0038963387 0.0029255952 0.0048433244 + 32100 0.0055946825 0.0031187197 0.0058723525 + 32200 0.0039750694 0.0039995895 0.005956069 + 32300 0.0041170866 0.0034436832 0.0054700618 + 32400 0.0034177152 0.0028501717 0.0045323284 + 32500 0.005211506 0.0021803993 0.0047454374 + 32600 0.0044555612 0.0023413902 0.0045343617 + 32700 0.0047028007 0.0025708999 0.0048855596 + 32800 0.0040347665 0.0029579324 0.004943794 + 32900 0.0041328875 0.0031629897 0.0051971453 + 33000 0.0062793076 0.0026142846 0.0057048813 + 33100 0.0041605022 0.0027985246 0.0048462718 + 33200 0.0072365722 0.0026690435 0.0062307939 + 33300 0.0044803372 0.0024881199 0.0046932859 + 33400 0.0048456915 0.0024046471 0.0047896359 + 33500 0.004893503 0.0021586304 0.0045671514 + 33600 0.0042559619 0.0021639019 0.0042586331 + 33700 0.0056756713 0.0021576654 0.0049511599 + 33800 0.0063596382 0.0024806605 0.005610795 + 33900 0.0055994926 0.0026727578 0.0054287581 + 34000 0.0064562521 0.0025124205 0.0056901071 + 34100 0.003913677 0.0028074552 0.0047337181 + 34200 0.0050900746 0.0025231402 0.0050284113 + 34300 0.0065617931 0.0026154256 0.0058450581 + 34400 0.0048011692 0.0030905988 0.0054536743 + 34500 0.0048056709 0.0032156058 0.0055808969 + 34600 0.0040354422 0.0030971678 0.005083362 + 34700 0.006087834 0.0027728878 0.0057692436 + 34800 0.0053797652 0.0026855103 0.0053333635 + 34900 0.0058378493 0.0028486122 0.0057219287 + 35000 0.0049625915 0.0026119678 0.0050544933 + 35100 0.00730345 0.0022506484 0.0058453152 + 35200 0.0052971237 0.0025621919 0.0051693699 + 35300 0.0059798176 0.0025908986 0.0055340901 + 35400 0.0072213603 0.0027714175 0.0063256808 + 35500 0.0036919283 0.0031586592 0.0049757801 + 35600 0.0059948028 0.002976643 0.00592721 + 35700 0.0058987959 0.0025320278 0.0054353415 + 35800 0.0085632108 0.0024165878 0.0066312932 + 35900 0.0049659305 0.002623482 0.0050676509 + 36000 0.0048871312 0.0026692854 0.0050746703 + 36100 0.0050423605 0.0028126033 0.0052943902 + 36200 0.0054508664 0.0027813974 0.0054642457 + 36300 0.0043917001 0.0024449272 0.0046064671 + 36400 0.0058852486 0.001662152 0.0045587978 + 36500 0.004376686 0.0012946708 0.003448821 + 36600 0.0045995068 0.0014132429 0.0036770626 + 36700 0.0052640792 0.0016298257 0.0042207397 + 36800 0.0046101058 0.0022292853 0.0044983217 + 36900 0.0062925203 0.0027288883 0.0058259881 + 37000 0.0058887204 0.0030900839 0.0059884384 + 37100 0.003955873 0.00280184 0.0047488712 + 37200 0.0051728133 0.0023278277 0.0048738217 + 37300 0.0044624074 0.002153214 0.0043495552 + 37400 0.0054219103 0.0021778367 0.0048464331 + 37500 0.0056408011 0.0022706441 0.0050469759 + 37600 0.0056867515 0.0020669251 0.0048658731 + 37700 0.0054355104 0.0018766256 0.0045519159 + 37800 0.0060895364 0.002088862 0.0050860557 + 37900 0.0052695007 0.0020859158 0.0046794982 + 38000 0.0051904573 0.0018629764 0.0044176546 + 38100 0.0051914814 0.002059636 0.0046148182 + 38200 0.0052801103 0.0020918637 0.004690668 + 38300 0.0043833673 0.0021607426 0.0043181812 + 38400 0.0063337657 0.0022764335 0.0053938338 + 38500 0.0061489876 0.002666119 0.0056925738 + 38600 0.0065438448 0.0028713253 0.0060921239 + 38700 0.0069803926 0.0029497225 0.0063853844 + 38800 0.0042546671 0.0032903986 0.0053844925 + 38900 0.006328746 0.0034787891 0.0065937188 + 39000 0.0062059977 0.0037241942 0.0067787087 + 39100 0.0058922502 0.0032950137 0.0061951056 + 39200 0.0069862319 0.0024531871 0.0058917231 + 39300 0.0068722351 0.0026125238 0.005994952 + 39400 0.0044678762 0.0029836049 0.0051826378 + 39500 0.0048324623 0.0024639161 0.0048423936 + 39600 0.0052848494 0.0018086831 0.0044098199 + 39700 0.0057744393 0.0017420292 0.0045841361 + 39800 0.0055283138 0.0020003167 0.0047212837 + 39900 0.0054910471 0.001966547 0.0046691718 + 40000 0.0058599724 0.0020328682 0.0049170734 + 40100 0.0056009066 0.0021835491 0.0049402454 + 40200 0.0061286205 0.0022872447 0.0053036752 + 40300 0.0055799686 0.0023823168 0.0051287076 + 40400 0.0056994039 0.0027070242 0.0055121996 + 40500 0.0047968544 0.0028433836 0.0052043354 + 40600 0.0046229571 0.0024847847 0.0047601464 + 40700 0.0054599132 0.0023632247 0.0050505257 + 40800 0.0048089307 0.0022941492 0.0046610448 + 40900 0.0059855807 0.0024140102 0.0053600382 + 41000 0.0049511345 0.002463219 0.0049001055 + 41100 0.0043615952 0.0024588088 0.0046055315 + 41200 0.0054054808 0.0024869736 0.0051474837 + 41300 0.0035397634 0.0029027072 0.0046449345 + 41400 0.0060651017 0.0026547866 0.0056399539 + 41500 0.0047277528 0.0025713454 0.0048982863 + 41600 0.0048286022 0.0021934611 0.0045700388 + 41700 0.0045903816 0.0020430148 0.0043023432 + 41800 0.0043399978 0.0022056343 0.0043417269 + 41900 0.0051569228 0.0020364457 0.0045746186 + 42000 0.0047952234 0.0018950341 0.0042551831 + 42100 0.0050371729 0.0021271879 0.0046064214 + 42200 0.0050711136 0.0025738144 0.0050697532 + 42300 0.0048236072 0.0029130705 0.0052871896 + 42400 0.0044010377 0.0031443185 0.0053104543 + 42500 0.0059897978 0.0028640967 0.0058122003 + 42600 0.0038422824 0.0028080627 0.0046991861 + 42700 0.0056509967 0.0027291941 0.005510544 + 42800 0.0042071761 0.0029230606 0.0049937801 + 42900 0.0042193067 0.0026382709 0.0047149609 + 43000 0.0052480966 0.0022338417 0.0048168892 + 43100 0.005522502 0.002039487 0.0047575934 + 43200 0.0058423562 0.0023365092 0.0052120438 + 43300 0.0046834013 0.0024156241 0.0047207356 + 43400 0.0041374095 0.0021058427 0.0041422239 + 43500 0.0058634201 0.0022094852 0.0050953872 + 43600 0.0046182426 0.0024466051 0.0047196464 + 43700 0.0049200288 0.0022391918 0.0046607685 + 43800 0.0057244756 0.0022968649 0.0051143803 + 43900 0.0058377262 0.0022191461 0.005092402 + 44000 0.0045298591 0.0027006662 0.0049302063 + 44100 0.0034804595 0.0031901258 0.0049031645 + 44200 0.0046654548 0.0028375831 0.0051338616 + 44300 0.0065913375 0.0023608728 0.0056050467 + 44400 0.004852674 0.0025328711 0.0049212966 + 44500 0.0060857702 0.0022299535 0.0052252936 + 44600 0.004425753 0.0022909724 0.0044692727 + 44700 0.0053830457 0.0021993527 0.0048488205 + 44800 0.0054246736 0.0027316494 0.0054016059 + 44900 0.0056320375 0.0028277009 0.0055997194 + 45000 0.0066433951 0.0024791215 0.0057489176 + 45100 0.0064237078 0.0020807233 0.005242392 + 45200 0.0050712488 0.0024388037 0.004934809 + 45300 0.0061357574 0.0025291205 0.0055490636 + 45400 0.0051832243 0.0025725279 0.0051236461 + 45500 0.0053433545 0.0018614422 0.0044913745 + 45600 0.0046224495 0.0017536992 0.0040288111 + 45700 0.0044520617 0.0016574041 0.0038486532 + 45800 0.0048541322 0.0018061685 0.0041953117 + 45900 0.0037656301 0.0019218755 0.0037752715 + 46000 0.0049253038 0.0017347223 0.0041588952 + 46100 0.0080366601 0.0018538199 0.0058093636 + 46200 0.0051968486 0.0020311005 0.0045889244 + 46300 0.0036341036 0.0023502428 0.0041389031 + 46400 0.0048643106 0.0021348796 0.0045290325 + 46500 0.0042532667 0.0017966314 0.0038900361 + 46600 0.0051351736 0.0022954508 0.004822919 + 46700 0.0064077543 0.0022535448 0.0054073614 + 46800 0.0053069906 0.0019501388 0.0045621732 + 46900 0.00444173 0.0017552894 0.0039414533 + 47000 0.0045493159 0.0017915283 0.0040306447 + 47100 0.0047988382 0.0020509901 0.0044129182 + 47200 0.0046359373 0.0021243589 0.0044061093 + 47300 0.0058430427 0.001944178 0.0048200506 + 47400 0.0051240047 0.0019098295 0.0044318006 + 47500 0.0044751278 0.0020569405 0.0042595425 + 47600 0.0056649938 0.0020727306 0.0048609697 + 47700 0.0032412862 0.0022585668 0.0038538873 + 47800 0.0068755144 0.0017509017 0.005134944 + 47900 0.0037889607 0.0017356028 0.0036004819 + 48000 0.0045654479 0.0022019401 0.0044489965 + 48100 0.0050696536 0.0025464754 0.0050416956 + 48200 0.0055857755 0.0028438484 0.0055930973 + 48300 0.0044025891 0.002854618 0.0050215174 + 48400 0.0036912724 0.0022986696 0.0041154677 + 48500 0.0046860971 0.0020477439 0.0043541824 + 48600 0.0048275121 0.001977789 0.0043538301 + 48700 0.0037416362 0.0026342835 0.00447587 + 48800 0.0055730939 0.0025685349 0.0053115421 + 48900 0.0051819998 0.002543137 0.0050936526 + 49000 0.0052188892 0.0024982216 0.0050668936 + 49100 0.0051652225 0.0026542001 0.0051964581 + 49200 0.0054453028 0.0030541746 0.0057342845 + 49300 0.0053947386 0.002738394 0.0053936168 + 49400 0.0063579991 0.00239582 0.0055251477 + 49500 0.006528586 0.0022369185 0.0054502069 + 49600 0.0044034693 0.0028330478 0.0050003804 + 49700 0.0056727625 0.0028099507 0.0056020135 + 49800 0.0043653481 0.002720564 0.0048691338 + 49900 0.0046597798 0.0025349663 0.0048284516 + 50000 0.0052933222 0.0027579917 0.0053632987 + 50100 0.0039339254 0.0027051142 0.0046413431 + 50200 0.0041284865 0.0022670852 0.0042990747 + 50300 0.0042675751 0.002292962 0.0043934091 + 50400 0.004289444 0.0025165916 0.0046278023 + 50500 0.0037658203 0.0028293094 0.0046827991 + 50600 0.0048503604 0.0025583313 0.0049456181 + 50700 0.0061761989 0.0020442165 0.0050840643 + 50800 0.0052612743 0.002184757 0.0047742904 + 50900 0.0073896746 0.0024261726 0.006063278 + 51000 0.0062873711 0.0023875812 0.0054821466 + 51100 0.0064470829 0.0021771864 0.00535036 + 51200 0.004880062 0.0024538531 0.0048557587 + 51300 0.0052523628 0.0022732214 0.0048583687 + 51400 0.0052394924 0.0023781803 0.004956993 + 51500 0.0039796224 0.0029113805 0.0048701008 + 51600 0.0064184777 0.0027375379 0.0058966324 + 51700 0.0056029741 0.0029126654 0.0056703793 + 51800 0.0059927679 0.0029288337 0.0058783992 + 51900 0.0059489382 0.0028366718 0.0057646649 + 52000 0.0058144888 0.0026501852 0.0055120039 + 52100 0.0059379992 0.0022779526 0.0052005615 + 52200 0.0065256134 0.0019969986 0.005208824 + 52300 0.0048225829 0.0022542333 0.0046278483 + 52400 0.005131577 0.002066672 0.0045923701 + 52500 0.0040958222 0.0017579172 0.0037738297 + 52600 0.005194631 0.0016662004 0.0042229328 + 52700 0.0035620693 0.0016046777 0.0033578837 + 52800 0.0055449807 0.001454566 0.0041837362 + 52900 0.0039053835 0.001887189 0.0038093699 + 53000 0.0043031657 0.0022651418 0.0043831062 + 53100 0.0039730849 0.0023945596 0.0043500623 + 53200 0.0052178592 0.0018976116 0.0044657767 + 53300 0.005307497 0.0016101643 0.004222448 + 53400 0.0046646002 0.0019185625 0.0042144204 + 53500 0.0026995641 0.0023139328 0.0036426245 + 53600 0.0052326327 0.0023278376 0.004903274 + 53700 0.0037869084 0.0023525329 0.0042164019 + 53800 0.0037463138 0.0021992956 0.0040431844 + 53900 0.004496825 0.0022581519 0.004471433 + 54000 0.0057660791 0.0024945312 0.0053325232 + 54100 0.0061380315 0.0037129682 0.0067340305 + 54200 0.0046104183 0.0036979259 0.0059671161 + 54300 0.0057958224 0.0034695141 0.0063221455 + 54400 0.0048332403 0.0034151314 0.0057939918 + 54500 0.0049693773 0.002820724 0.0052665894 + 54600 0.0045103017 0.0027294131 0.0049493272 + 54700 0.0043333968 0.0027706615 0.0049035053 + 54800 0.0046199654 0.0022569874 0.0045308766 + 54900 0.0052861212 0.0021567699 0.0047585327 + 55000 0.0047585824 0.0023981935 0.0047403083 + 55100 0.005124486 0.0023184498 0.0048406578 + 55200 0.0058088782 0.002483519 0.0053425762 + 55300 0.005216959 0.0021403532 0.0047080752 + 55400 0.0046261335 0.0025583826 0.0048353077 + 55500 0.0057579771 0.0027232685 0.0055572728 + 55600 0.0041409444 0.0025401723 0.0045782933 + 55700 0.0042118565 0.0022279306 0.0043009537 + 55800 0.0053401908 0.0019908841 0.0046192593 + 55900 0.0046193509 0.0024350302 0.004708617 + 56000 0.0058551596 0.0027796935 0.0056615299 + 56100 0.0062778834 0.0021096314 0.0051995271 + 56200 0.0049990389 0.0019808532 0.0044413176 + 56300 0.005667261 0.0021110132 0.0049003682 + 56400 0.0043763366 0.0027361171 0.0048900953 + 56500 0.0044730567 0.0038021939 0.0060037765 + 56600 0.0055258064 0.0036028104 0.0063225432 + 56700 0.0062959125 0.0032143303 0.0063130998 + 56800 0.0042019051 0.0031651388 0.005233264 + 56900 0.0060869881 0.002905635 0.0059015744 + 57000 0.0057868988 0.0027878009 0.0056360401 + 57100 0.0064950497 0.0029399405 0.0061367228 + 57200 0.0050587709 0.0026105139 0.0051003777 + 57300 0.0053527418 0.0023974504 0.005032003 + 57400 0.003922727 0.0021677513 0.0040984684 + 57500 0.0037475815 0.0024135009 0.0042580137 + 57600 0.0053270862 0.002463369 0.0050852943 + 57700 0.0045609319 0.0028937259 0.0051385595 + 57800 0.0069238565 0.0028018135 0.0062096492 + 57900 0.006054894 0.0026147955 0.0055949386 + 58000 0.0057192263 0.0029135455 0.0057284772 + 58100 0.0048946299 0.0025414547 0.0049505303 + 58200 0.003849572 0.002477886 0.0043725973 + 58300 0.0041912557 0.0023914223 0.0044543059 + 58400 0.0052934173 0.0021797269 0.0047850807 + 58500 0.0039186585 0.0019992363 0.003927951 + 58600 0.0053470831 0.0019047638 0.0045365312 + 58700 0.0085743974 0.0016808313 0.0059010425 + 58800 0.0048791203 0.0022616712 0.0046631132 + 58900 0.0050189617 0.0024291926 0.0048994628 + 59000 0.004253455 0.0020956428 0.0041891402 + 59100 0.0060767167 0.0023415227 0.0053324067 + 59200 0.0048321865 0.0027353929 0.0051137347 + 59300 0.0048977252 0.0027351029 0.0051457021 + 59400 0.0069428306 0.0028635561 0.0062807305 + 59500 0.0060870338 0.0028130836 0.0058090455 + 59600 0.0053928323 0.0023989577 0.0050532423 + 59700 0.004054515 0.0018770089 0.0038725905 + 59800 0.0054963992 0.0015445642 0.0042498232 + 59900 0.0042701987 0.0017503963 0.0038521348 + 60000 0.0043336871 0.0019396657 0.0040726523 + 60100 0.0041307694 0.0022506674 0.0042837805 + 60200 0.003790249 0.0022967599 0.004162273 + 60300 0.0055833267 0.0021989572 0.0049470008 + 60400 0.0036377404 0.0022479319 0.0040383822 + 60500 0.0058214434 0.0018167156 0.0046819573 + 60600 0.0046723496 0.0021228113 0.0044224834 + 60700 0.0047974296 0.0023165037 0.0046777386 + 60800 0.0044223476 0.002395644 0.0045722682 + 60900 0.0050279614 0.0024646163 0.004939316 + 61000 0.0060984498 0.002411333 0.0054129137 + 61100 0.0051019827 0.0026219034 0.0051330355 + 61200 0.0050952837 0.0026447827 0.0051526177 + 61300 0.0060527815 0.00238081 0.0053599134 + 61400 0.0049286023 0.0025701005 0.0049958969 + 61500 0.005969882 0.0021249039 0.0050632051 + 61600 0.0046007253 0.0023236173 0.0045880368 + 61700 0.0044396835 0.0025771435 0.0047623002 + 61800 0.0056639445 0.0023601406 0.0051478633 + 61900 0.006055309 0.0021640884 0.0051444358 + 62000 0.0057279406 0.0025880729 0.0054072937 + 62100 0.0067898204 0.0027957117 0.0061375765 + 62200 0.0047542979 0.0029157249 0.0052557309 + 62300 0.0055163244 0.0030389236 0.0057539895 + 62400 0.004623678 0.0029257019 0.0052014185 + 62500 0.006981775 0.0028329928 0.0062693352 + 62600 0.0052790636 0.0025089823 0.0051072715 + 62700 0.004502983 0.0025521714 0.0047684833 + 62800 0.005198644 0.002347132 0.0049058396 + 62900 0.0056829005 0.0019331054 0.004730158 + 63000 0.0061506305 0.0024549965 0.0054822599 + 63100 0.0053233931 0.002854602 0.0054747096 + 63200 0.0039360144 0.0027564754 0.0046937325 + 63300 0.004489603 0.0027418476 0.0049515741 + 63400 0.0045865176 0.0025666641 0.0048240907 + 63500 0.0053091807 0.0025226324 0.0051357448 + 63600 0.0058253669 0.0025830883 0.0054502611 + 63700 0.0048093506 0.0023022853 0.0046693876 + 63800 0.0045950013 0.002432953 0.0046945552 + 63900 0.0051578718 0.0023777817 0.0049164218 + 64000 0.0047482866 0.002104565 0.0044416124 + 64100 0.0070255221 0.0021853492 0.0056432233 + 64200 0.0046851077 0.0026144698 0.0049204212 + 64300 0.0039295793 0.0030161401 0.0049502299 + 64400 0.0048660988 0.0026698987 0.0050649317 + 64500 0.0063953974 0.0028111385 0.0059588731 + 64600 0.0056994558 0.0028564498 0.0056616507 + 64700 0.0053282082 0.0028300066 0.005452484 + 64800 0.00507252 0.0030659405 0.0055625715 + 64900 0.0041852498 0.0031037884 0.005163716 + 65000 0.0045581036 0.0032779545 0.0055213961 + 65100 0.0046913219 0.0032499247 0.0055589347 + 65200 0.0054147947 0.0031621711 0.0058272654 + 65300 0.0054888969 0.0029858355 0.005687402 + 65400 0.0065697151 0.0029281082 0.0061616398 + 65500 0.0060901872 0.0034613474 0.0064588614 + 65600 0.0049597153 0.0033572894 0.0057983993 + 65700 0.0039222949 0.0029538356 0.0048843402 + 65800 0.0044882884 0.0029928496 0.0052019291 + 65900 0.0052161718 0.0026758705 0.0052432051 + 66000 0.0065934271 0.0022680927 0.0055132951 + 66100 0.0050492444 0.0023166854 0.0048018603 + 66200 0.0056593498 0.0025581565 0.0053436177 + 66300 0.0049524609 0.0023519584 0.0047894978 + 66400 0.0063402264 0.0023849748 0.005505555 + 66500 0.004771672 0.00244859 0.0047971473 + 66600 0.0051824552 0.002613505 0.0051642446 + 66700 0.005774468 0.0028348791 0.005677 + 66800 0.0046950833 0.0030075585 0.0053184198 + 66900 0.0053165495 0.0027537876 0.0053705268 + 67000 0.0057308856 0.0025272009 0.0053478711 + 67100 0.0046796202 0.0026661548 0.0049694054 + 67200 0.0047437058 0.0027420071 0.0050767998 + 67300 0.0050394751 0.0025004341 0.0049808008 + 67400 0.0055788811 0.0026418202 0.0053876757 + 67500 0.0070713654 0.0028505191 0.0063309568 + 67600 0.0059801004 0.002765848 0.0057091787 + 67700 0.0040164007 0.0031384648 0.0051152871 + 67800 0.0075967981 0.0028843543 0.0066234034 + 67900 0.0047833735 0.0027882528 0.0051425694 + 68000 0.0063575501 0.0022887647 0.0054178714 + 68100 0.0065862164 0.0024200602 0.0056617136 + 68200 0.0046499936 0.0024835086 0.0047721774 + 68300 0.0043503721 0.0023886701 0.0045298689 + 68400 0.0053742441 0.0021740698 0.0048192056 + 68500 0.0059063897 0.0020291838 0.004936235 + 68600 0.0037691784 0.0023709168 0.0042260593 + 68700 0.0042457471 0.0025315096 0.0046212133 + 68800 0.0047705747 0.0028486739 0.0051966911 + 68900 0.0056572728 0.0027676577 0.0055520966 + 69000 0.0048876697 0.0026945633 0.0051002133 + 69100 0.0052634311 0.0025543709 0.0051449659 + 69200 0.0039270634 0.0024077842 0.0043406358 + 69300 0.0047719266 0.0025001822 0.0048488648 + 69400 0.0045964308 0.0031156371 0.0053779429 + 69500 0.0038131207 0.0031568404 0.0050336107 + 69600 0.0040019157 0.0028941661 0.0048638589 + 69700 0.0057987524 0.0024173543 0.0052714277 + 69800 0.0055944122 0.0023275401 0.0050810399 + 69900 0.0055300148 0.0028197269 0.005541531 + 70000 0.0051611491 0.0030411359 0.005581389 + 70100 0.0040971549 0.0031491635 0.0051657319 + 70200 0.0055808339 0.0027528473 0.0054996639 + 70300 0.0042680699 0.0031070625 0.0052077532 + 70400 0.0055008862 0.0028543271 0.0055617945 + 70500 0.0039595314 0.0030008573 0.0049496891 + 70600 0.0045317436 0.0031540993 0.0053845669 + 70700 0.0063358217 0.0026458835 0.0057642957 + 70800 0.0056228319 0.0027053506 0.0054728382 + 70900 0.0038862998 0.0030872936 0.0050000818 + 71000 0.0037652125 0.0030456236 0.0048988141 + 71100 0.0058617583 0.0027103107 0.0055953949 + 71200 0.0047988175 0.0035246525 0.0058865705 + 71300 0.0039944958 0.0037905669 0.0057566078 + 71400 0.0044217413 0.0034184861 0.0055948119 + 71500 0.0053516896 0.0026979819 0.0053320166 + 71600 0.005877523 0.0025172463 0.0054100897 + 71700 0.004796699 0.0024635307 0.0048244059 + 71800 0.0054039206 0.002438195 0.0050979372 + 71900 0.0059330037 0.0027598928 0.0056800431 + 72000 0.0035154301 0.0025919891 0.0043222399 + 72100 0.0053907319 0.0023632867 0.0050165376 + 72200 0.0039996053 0.0023936698 0.0043622255 + 72300 0.0056224097 0.0020771766 0.0048444563 + 72400 0.0048398147 0.0023749691 0.0047570654 + 72500 0.0045617379 0.0025707433 0.0048159736 + 72600 0.0060582008 0.0026253095 0.0056070802 + 72700 0.0046195931 0.0025751137 0.0048488197 + 72800 0.0048813644 0.002833168 0.0052357145 + 72900 0.0056481557 0.0027074701 0.0054874217 + 73000 0.006292515 0.0026396304 0.0057367277 + 73100 0.0053764044 0.0024208455 0.0050670445 + 73200 0.0059340445 0.0020910744 0.0050117369 + 73300 0.0045107467 0.0018860273 0.0041061604 + 73400 0.0042894239 0.0019444778 0.0040556787 + 73500 0.0043062405 0.0019736233 0.004093101 + 73600 0.0042642569 0.0019793602 0.0040781741 + 73700 0.0033844928 0.0020560248 0.0037218298 + 73800 0.0047683045 0.0017120433 0.0040589432 + 73900 0.0049814296 0.0020021175 0.0044539149 + 74000 0.0051039521 0.0018494992 0.0043616006 + 74100 0.0044872886 0.0017563487 0.003964936 + 74200 0.0042683632 0.0021370509 0.0042378859 + 74300 0.0044182173 0.0020842929 0.0042588842 + 74400 0.004146047 0.0018979692 0.0039386017 + 74500 0.005618121 0.0016769569 0.0044421258 + 74600 0.0041630417 0.0015606788 0.0036096758 + 74700 0.00469299 0.0014615955 0.0037714265 + 74800 0.003438476 0.0016440585 0.0033364334 + 74900 0.0032591127 0.0016853854 0.00328948 + 75000 0.0044285675 0.0020511374 0.004230823 + 75100 0.0061376235 0.0023545114 0.0053753729 + 75200 0.0058007348 0.0026356641 0.0054907132 + 75300 0.0062121848 0.0025091645 0.0055667242 + 75400 0.0052656835 0.00222879 0.0048204936 + 75500 0.0058606828 0.0017085793 0.0045931341 + 75600 0.0050754009 0.0019710511 0.0044691 + 75700 0.0042340893 0.0026732432 0.004757209 + 75800 0.0054321853 0.0027528315 0.0054264852 + 75900 0.0061882937 0.0018661997 0.0049120005 + 76000 0.0066425031 0.0018949786 0.0051643356 + 76100 0.004637703 0.0023976495 0.004680269 + 76200 0.0057871464 0.0022146154 0.0050629765 + 76300 0.0056041364 0.0021844582 0.0049427441 + 76400 0.0047894742 0.0024401459 0.0047974652 + 76500 0.0058023585 0.0023425909 0.0051984393 + 76600 0.0049052887 0.0025078887 0.0049222105 + 76700 0.0049974918 0.0019694335 0.0044291365 + 76800 0.0042191193 0.0016510723 0.0037276701 + 76900 0.0039503471 0.0016873391 0.0036316505 + 77000 0.0047298801 0.0019322374 0.0042602253 + 77100 0.0049992408 0.0018474957 0.0043080595 + 77200 0.0032936644 0.002130223 0.0037513235 + 77300 0.0048303958 0.0023550529 0.0047325133 + 77400 0.0063234799 0.0028929245 0.0060052622 + 77500 0.00463004 0.0027082779 0.0049871257 + 77600 0.0050929326 0.0025020123 0.0050086901 + 77700 0.003384678 0.0023701129 0.0040360091 + 77800 0.0041880355 0.0019308741 0.0039921728 + 77900 0.0049763231 0.0021491433 0.0045984273 + 78000 0.003992385 0.0026137623 0.0045787643 + 78100 0.0051057387 0.0027451908 0.0052581715 + 78200 0.0054348861 0.0025577891 0.0052327721 + 78300 0.0057776202 0.0023891943 0.0052328667 + 78400 0.0048359892 0.0024817177 0.0048619312 + 78500 0.0048704429 0.0028022562 0.0051994273 + 78600 0.0054872014 0.0027906432 0.0054913751 + 78700 0.005509956 0.0026370384 0.0053489699 + 78800 0.0048209086 0.0025299026 0.0049026936 + 78900 0.0045972366 0.002261219 0.0045239214 + 79000 0.0040975737 0.002188761 0.0042055355 + 79100 0.0054985041 0.0019990431 0.0047053381 + 79200 0.0049955306 0.0020001032 0.0044588409 + 79300 0.0039372456 0.001866941 0.003804804 + 79400 0.0036515198 0.0018464302 0.0036436626 + 79500 0.0048873976 0.0018264761 0.0042319921 + 79600 0.005304039 0.0022275707 0.0048381524 + 79700 0.005194031 0.0024761037 0.0050325409 + 79800 0.0052406455 0.0025873547 0.0051667349 + 79900 0.004216836 0.0025392835 0.0046147575 + 80000 0.005005837 0.0023327163 0.0047965267 + 80100 0.0046348948 0.0021326396 0.0044138769 + 80200 0.0067222787 0.0024210591 0.0057296806 + 80300 0.0053915682 0.0027591997 0.0054128621 + 80400 0.0056163828 0.0028198112 0.0055841246 + 80500 0.0036451048 0.0028991527 0.0046932278 + 80600 0.004460046 0.0031348911 0.00533007 + 80700 0.005176748 0.002861288 0.0054092187 + 80800 0.0052764546 0.0026789984 0.0052760035 + 80900 0.0045249993 0.0026485499 0.004875698 + 81000 0.0042943847 0.002686603 0.0048002454 + 81100 0.0046355411 0.0027805802 0.0050621356 + 81200 0.0056521846 0.0026661315 0.0054480661 + 81300 0.0054679611 0.002602514 0.0052937761 + 81400 0.0047593182 0.0031466731 0.0054891501 + 81500 0.0045296063 0.0033412661 0.0055706817 + 81600 0.0070010873 0.0032878869 0.0067337345 + 81700 0.0074436949 0.0033922567 0.0070559503 + 81800 0.005610758 0.0036244321 0.0063859771 + 81900 0.0053273856 0.003409863 0.0060319356 + 82000 0.0063763287 0.0026304698 0.0057688191 + 82100 0.00515822 0.0025793429 0.0051181543 + 82200 0.0051360532 0.003051596 0.0055794972 + 82300 0.0044412777 0.0028681254 0.0050540667 + 82400 0.0064105925 0.0030078272 0.0061630407 + 82500 0.0040821554 0.0033344019 0.0053435877 + 82600 0.0044197889 0.0031022601 0.005277625 + 82700 0.0047935976 0.0025883712 0.00494772 + 82800 0.003738449 0.0023020582 0.0041420761 + 82900 0.0053933957 0.0025158866 0.0051704485 + 83000 0.0047459556 0.0030100237 0.0053459237 + 83100 0.0043152191 0.0032077675 0.0053316644 + 83200 0.0045985383 0.0027825467 0.0050458898 + 83300 0.003769822 0.0025818133 0.0044372725 + 83400 0.0067398285 0.002684571 0.0060018303 + 83500 0.0045499328 0.0030768795 0.0053162995 + 83600 0.0035234858 0.0030251824 0.0047593981 + 83700 0.0049511097 0.0029298231 0.0053666974 + 83800 0.0045676475 0.0028474562 0.0050955952 + 83900 0.0044610737 0.002519446 0.0047151307 + 84000 0.0064545826 0.0025222216 0.0056990865 + 84100 0.004653975 0.0027302156 0.0050208439 + 84200 0.0036167014 0.0030734672 0.0048535624 + 84300 0.0057445599 0.0027562257 0.0055836263 + 84400 0.0058224252 0.0024675774 0.0053333023 + 84500 0.0047973173 0.0023781583 0.0047393379 + 84600 0.0039284071 0.0024652748 0.0043987876 + 84700 0.0029638347 0.0025692972 0.0040280596 + 84800 0.0047887044 0.0029186118 0.0052755522 + 84900 0.0055379755 0.0025806577 0.00530638 + 85000 0.0050508036 0.0027085904 0.0051945329 + 85100 0.0052692208 0.002708691 0.0053021357 + 85200 0.0046732792 0.0025088182 0.0048089478 + 85300 0.0054368212 0.0027754547 0.0054513901 + 85400 0.0041549798 0.0031598353 0.0052048644 + 85500 0.0047011152 0.0032261337 0.0055399639 + 85600 0.0055808536 0.0027000149 0.0054468413 + 85700 0.0048434129 0.0026429768 0.0050268441 + 85800 0.0048083651 0.002842628 0.0052092452 + 85900 0.0068372124 0.0027700697 0.0061352602 + 86000 0.0057512903 0.0032940136 0.0061247267 + 86100 0.0040721642 0.0039506876 0.005954956 + 86200 0.0036910287 0.0039669643 0.0057836425 + 86300 0.0054343665 0.0034411799 0.0061159072 + 86400 0.0062628222 0.0032835749 0.0063660577 + 86500 0.0048513507 0.0035688868 0.005956661 + 86600 0.0069173355 0.0031980342 0.0066026603 + 86700 0.0081806389 0.0029566119 0.0069830201 + 86800 0.0062293924 0.0027879988 0.0058540278 + 86900 0.0056635501 0.0030769808 0.0058645094 + 87000 0.0050517479 0.0034190971 0.0059055043 + 87100 0.0042098299 0.0032866868 0.0053587124 + 87200 0.0051519893 0.0023312815 0.0048670263 + 87300 0.0053215622 0.0019148403 0.0045340467 + 87400 0.0032577713 0.0022767786 0.0038802129 + 87500 0.0044570195 0.0022494502 0.0044431395 + 87600 0.0052392036 0.0021528124 0.0047314829 + 87700 0.0053547779 0.0023921325 0.0050276873 + 87800 0.0045686383 0.0022639202 0.0045125469 + 87900 0.0054222401 0.0021765081 0.0048452669 + 88000 0.0072019377 0.0019999176 0.0055446213 + 88100 0.0051035154 0.0019149795 0.004426866 + 88200 0.0060975634 0.0017265057 0.0047276502 + 88300 0.0061669752 0.0020150074 0.0050503155 + 88400 0.0058805473 0.0027046436 0.0055989755 + 88500 0.0056084198 0.0029070098 0.005667404 + 88600 0.0055620748 0.0024571016 0.0051946853 + 88700 0.0057423726 0.0020670094 0.0048933333 + 88800 0.0045542811 0.0022137937 0.004455354 + 88900 0.0048961572 0.0025511938 0.0049610211 + 89000 0.0050029344 0.0025574486 0.0050198304 + 89100 0.0053494041 0.002790112 0.0054230218 + 89200 0.0062382018 0.0029382962 0.0060086611 + 89300 0.0046549933 0.0025582805 0.00484941 + 89400 0.0061553926 0.0028467604 0.0058763677 + 89500 0.0054415236 0.0027038997 0.0053821496 + 89600 0.0049929284 0.0024439412 0.0049013981 + 89700 0.0052089147 0.0020782333 0.004641996 + 89800 0.0054194082 0.0019060222 0.0045733872 + 89900 0.0042438172 0.0020655704 0.0041543242 + 90000 0.0053810893 0.0022202497 0.0048687545 + 90100 0.0041317433 0.0025163811 0.0045499735 + 90200 0.0049091287 0.0025324657 0.0049486775 + 90300 0.0051286993 0.0024879148 0.0050121964 + 90400 0.0050204469 0.0025904592 0.0050614604 + 90500 0.0042464315 0.0025457079 0.0046357484 + 90600 0.0052250066 0.0023698037 0.0049414866 + 90700 0.0045462634 0.0023097843 0.0045473983 + 90800 0.0037093636 0.002571643 0.0043973454 + 90900 0.0063113799 0.0028984616 0.0060048439 + 91000 0.0043201494 0.0035103634 0.0056366869 + 91100 0.0047435479 0.0028845182 0.0052192332 + 91200 0.0065770065 0.0024854189 0.0057225393 + 91300 0.0062774446 0.0029098606 0.0059995404 + 91400 0.0049078754 0.0033611622 0.0057767571 + 91500 0.0053685781 0.0029029245 0.0055452715 + 91600 0.0053490556 0.0027350213 0.0053677596 + 91700 0.0058290963 0.0025725331 0.0054415414 + 91800 0.0072866405 0.0023256296 0.0059120229 + 91900 0.0058739958 0.002397964 0.0052890713 + 92000 0.0054562234 0.0023199876 0.0050054725 + 92100 0.005611244 0.0020159579 0.004777742 + 92200 0.0056938966 0.0019908685 0.0047933333 + 92300 0.0045806723 0.0018484046 0.0041029543 + 92400 0.004021423 0.0017415055 0.0037207996 + 92500 0.0062152423 0.0016326148 0.0046916794 + 92600 0.0041680258 0.002100735 0.0041521852 + 92700 0.0062858018 0.0020078107 0.0051016038 + 92800 0.0050359408 0.0019708759 0.004449503 + 92900 0.0045713716 0.0019061094 0.0041560814 + 93000 0.0053129071 0.0017527225 0.004367669 + 93100 0.0057446369 0.0018012696 0.0046287081 + 93200 0.0054739901 0.0024684525 0.005162682 + 93300 0.0045647369 0.0031014684 0.0053481748 + 93400 0.0036193876 0.0029006396 0.0046820569 + 93500 0.0060601698 0.0019741831 0.004956923 + 93600 0.0046004665 0.0020015396 0.0042658317 + 93700 0.0042683715 0.0021208495 0.0042216887 + 93800 0.0042496451 0.0021423506 0.0042339729 + 93900 0.0050268403 0.0021521183 0.0046262662 + 94000 0.0040358142 0.0025002024 0.0044865797 + 94100 0.0053294078 0.0023011019 0.0049241698 + 94200 0.0054369608 0.002656387 0.0053323911 + 94300 0.0050797075 0.0022979222 0.0047980907 + 94400 0.0050921226 0.0023796543 0.0048859334 + 94500 0.0049329385 0.0025064774 0.004934408 + 94600 0.0062590368 0.0023118525 0.0053924721 + 94700 0.0051941686 0.0020324496 0.0045889545 + 94800 0.0061044642 0.0022752168 0.0052797577 + 94900 0.0058587855 0.0022442433 0.0051278642 + 95000 0.0040628882 0.0023417837 0.0043414865 + 95100 0.0044093913 0.0024604208 0.0046306681 + 95200 0.0052381724 0.0024953602 0.0050735231 + 95300 0.0041843167 0.0023526891 0.0044121575 + 95400 0.0036206776 0.0024898436 0.0042718959 + 95500 0.0055885007 0.0024269834 0.0051775736 + 95600 0.0053328236 0.0028022568 0.0054270059 + 95700 0.0055391784 0.0026378076 0.005364122 + 95800 0.0053066117 0.0022822165 0.0048940645 + 95900 0.0046804735 0.0024918323 0.0047955029 + 96000 0.0067041432 0.0019985496 0.0052982451 + 96100 0.0048748809 0.0023756505 0.0047750059 + 96200 0.0037728758 0.0023720232 0.0042289855 + 96300 0.0044732638 0.0024277705 0.004629455 + 96400 0.0060579424 0.0023268191 0.0053084627 + 96500 0.0038456366 0.0025592995 0.0044520738 + 96600 0.0049971155 0.0027362251 0.0051957429 + 96700 0.0076930517 0.0024331244 0.0062195483 + 96800 0.0050724787 0.0025514936 0.0050481042 + 96900 0.0060769703 0.0024391751 0.0054301839 + 97000 0.0048021801 0.0021185012 0.0044820743 + 97100 0.005660294 0.0023463709 0.0051322969 + 97200 0.0048179777 0.0030827943 0.0054541426 + 97300 0.0053757318 0.0030170491 0.0056629171 + 97400 0.0067381828 0.0026761785 0.0059926278 + 97500 0.0042197502 0.002912353 0.0049892613 + 97600 0.0057027576 0.0030602803 0.0058671063 + 97700 0.0061693172 0.0025635465 0.0056000073 + 97800 0.0045497375 0.002284389 0.0045237129 + 97900 0.004449448 0.0023558994 0.004545862 + 98000 0.0043326526 0.002198167 0.0043306445 + 98100 0.0050126314 0.0024800737 0.0049472282 + 98200 0.0037659765 0.0027438261 0.0045973926 + 98300 0.0066021495 0.0026389775 0.0058884729 + 98400 0.0047517542 0.0026253143 0.0049640683 + 98500 0.0040493294 0.0025695401 0.0045625693 + 98600 0.0031819859 0.0025493936 0.0041155272 + 98700 0.0050691486 0.0019875569 0.0044825284 + 98800 0.0057652299 0.0020979909 0.0049355649 + 98900 0.0044760097 0.0021491409 0.0043521769 + 99000 0.0073474081 0.0023083358 0.0059246382 + 99100 0.0051021109 0.0029499858 0.005461181 + 99200 0.0049845442 0.0030591608 0.0055124912 + 99300 0.0062195698 0.0028596317 0.0059208262 + 99400 0.0053308323 0.0027370214 0.0053607905 + 99500 0.0079201013 0.0027481443 0.0066463192 + 99600 0.0063782264 0.0029359374 0.0060752207 + 99700 0.0061058594 0.002578078 0.0055833057 + 99800 0.0038451427 0.0023133588 0.00420589 + 99900 0.0061566822 0.0018607765 0.0048910185 + 100000 0.0068927201 0.0020927363 0.005485247 + 100100 0.0047391181 0.0028683768 0.0052009115 + 100200 0.0053483393 0.0029064148 0.0055388005 + 100300 0.0045258461 0.0031283243 0.0053558891 + 100400 0.0050365226 0.0030179463 0.0054968598 + 100500 0.0047312271 0.0029646693 0.0052933201 + 100600 0.0061205474 0.0026210987 0.0056335556 + 100700 0.0025651757 0.002853931 0.0041164784 + 100800 0.0039133509 0.0023758551 0.0043019575 + 100900 0.0052092894 0.0020576226 0.0046215697 + 101000 0.0047933685 0.0019465261 0.0043057621 + 101100 0.003956389 0.0021475561 0.0040948413 + 101200 0.0050643083 0.0024413601 0.0049339493 + 101300 0.00586629 0.0027702329 0.0056575475 + 101400 0.0041134663 0.0028491547 0.0048737514 + 101500 0.0042609904 0.0027710094 0.0048682156 + 101600 0.0040332019 0.0028290391 0.0048141307 + 101700 0.0044978865 0.0027827381 0.0049965416 + 101800 0.0060428561 0.0022749661 0.0052491843 + 101900 0.0051600197 0.0021403985 0.0046800957 + 102000 0.0045333669 0.0023159227 0.0045471892 + 102100 0.0070046179 0.0023404156 0.005788001 + 102200 0.0061519161 0.0022998284 0.0053277247 + 102300 0.0054322922 0.0028143567 0.0054880629 + 102400 0.0067449733 0.0027663729 0.0060861645 + 102500 0.0055718833 0.0028907092 0.0056331205 + 102600 0.005492805 0.003230284 0.005933774 + 102700 0.0057980123 0.0026981722 0.0055518814 + 102800 0.0046380472 0.0021701776 0.0044529664 + 102900 0.0048709823 0.0021799543 0.004577391 + 103000 0.0042697277 0.0023603737 0.0044618803 + 103100 0.0055478928 0.0024828905 0.005213494 + 103200 0.0058182369 0.002465523 0.0053291864 + 103300 0.0059052791 0.0028961956 0.0058027001 + 103400 0.0044892107 0.0033950945 0.0056046279 + 103500 0.0044678566 0.002913743 0.0051127662 + 103600 0.0047670318 0.0030027417 0.0053490152 + 103700 0.005096998 0.0027861302 0.0052948089 + 103800 0.0058219052 0.0025488868 0.0054143558 + 103900 0.0055457492 0.0027238297 0.0054533781 + 104000 0.0053618337 0.0031234195 0.005762447 + 104100 0.0046966491 0.0030342066 0.0053458386 + 104200 0.0056029936 0.0025226951 0.0052804185 + 104300 0.0048428918 0.002439357 0.0048229678 + 104400 0.0049155836 0.002751652 0.0051710407 + 104500 0.0050080274 0.0031713836 0.0056362721 + 104600 0.0052479614 0.0032808705 0.0058638515 + 104700 0.0058029768 0.0030601196 0.0059162722 + 104800 0.0059414983 0.002753915 0.0056782462 + 104900 0.0055676729 0.0027724396 0.0055127786 + 105000 0.0057471966 0.0028378259 0.0056665242 + 105100 0.0062413446 0.0034486799 0.0065205916 + 105200 0.0046813066 0.0037080686 0.0060121492 + 105300 0.006480056 0.0040398659 0.0072292685 + 105400 0.0048801732 0.0040482258 0.006450186 + 105500 0.005828717 0.003617556 0.0064863776 + 105600 0.0075420792 0.0028916713 0.0066037884 + 105700 0.0062363383 0.0023966336 0.0054660814 + 105800 0.0062864114 0.0022015099 0.005295603 + 105900 0.0040615775 0.0025536747 0.0045527324 + 106000 0.0063290288 0.0023102446 0.0054253134 + 106100 0.0051585324 0.002286666 0.0048256311 + 106200 0.0034732608 0.0022578884 0.0039673839 + 106300 0.0044176304 0.0020919564 0.0042662589 + 106400 0.0041908911 0.0019892799 0.0040519841 + 106500 0.0039026099 0.0023120102 0.004232826 + 106600 0.0048572336 0.0024848361 0.0048755058 + 106700 0.0063257167 0.0021928248 0.0053062635 + 106800 0.0036730623 0.0025819264 0.0043897617 + 106900 0.0059944179 0.0028382753 0.0057886528 + 107000 0.0064580669 0.0030999903 0.0062785701 + 107100 0.0046255253 0.0031334458 0.0054100715 + 107200 0.0049283482 0.0030364233 0.0054620947 + 107300 0.0063133439 0.0031381277 0.0062454766 + 107400 0.0041474774 0.0030566705 0.0050980071 + 107500 0.0046740446 0.0026914709 0.0049919772 + 107600 0.0047388492 0.0030377523 0.0053701547 + 107700 0.0054282275 0.0028094709 0.0054811766 + 107800 0.0053721217 0.0023284663 0.0049725574 + 107900 0.004243258 0.0018403539 0.0039288324 + 108000 0.0049353152 0.0019312174 0.0043603179 + 108100 0.0055130508 0.0025271957 0.0052406504 + 108200 0.0060558392 0.0024565719 0.0054371802 + 108300 0.0045859105 0.0023894119 0.0046465397 + 108400 0.0058885278 0.002025608 0.0049238677 + 108500 0.0054340107 0.0023452816 0.0050198337 + 108600 0.0044141867 0.0027647819 0.0049373895 + 108700 0.0058358218 0.002351073 0.0052233915 + 108800 0.0046712028 0.0020506598 0.0043497674 + 108900 0.0060486201 0.0022072723 0.0051843275 + 109000 0.004853394 0.002811998 0.0052007778 + 109100 0.0057238236 0.0026146211 0.0054318155 + 109200 0.0053979441 0.0026364855 0.0052932861 + 109300 0.0050589705 0.0025353887 0.0050253508 + 109400 0.0045738921 0.0024354124 0.004686625 + 109500 0.0046261854 0.0029166817 0.0051936324 + 109600 0.0041689619 0.0030250569 0.0050769678 + 109700 0.0039751906 0.0031283774 0.0050849166 + 109800 0.0059722001 0.0028077245 0.0057471667 + 109900 0.0064808043 0.0030567557 0.0062465266 + 110000 0.0044133757 0.0032871436 0.0054593519 + 110100 0.0062212538 0.002947876 0.0060098993 + 110200 0.0048243587 0.0028732762 0.0052477653 + 110300 0.0053680497 0.0024404749 0.0050825619 + 110400 0.0056285554 0.0027253265 0.0054956311 + 110500 0.0043921234 0.0031812544 0.0053430026 + 110600 0.0052145725 0.0034524517 0.0060189991 + 110700 0.0059297045 0.0035462473 0.0064647737 + 110800 0.0039791183 0.0035589564 0.0055174287 + 110900 0.0050631029 0.0032870617 0.0057790576 + 111000 0.0045785739 0.0032190924 0.0054726092 + 111100 0.0054237583 0.0031450294 0.0058145354 + 111200 0.0035705701 0.0032154539 0.0049728439 + 111300 0.004091047 0.0030329976 0.0050465598 + 111400 0.0055188185 0.0020035252 0.0047198186 + 111500 0.0051455747 0.001780299 0.0043128866 + 111600 0.0053045141 0.0021690289 0.0047798444 + 111700 0.0046372748 0.0023414381 0.0046238468 + 111800 0.0052027731 0.0021395942 0.0047003341 + 111900 0.0052496752 0.0022014434 0.0047852679 + 112000 0.0028159529 0.0022920464 0.0036780232 + 112100 0.0063535899 0.0023859576 0.0055131152 + 112200 0.0039606696 0.0028131121 0.0047625042 + 112300 0.0043064443 0.0026684668 0.0047880449 + 112400 0.0025763379 0.0024405732 0.0037086145 + 112500 0.0044170283 0.0024207001 0.0045947062 + 112600 0.0054643594 0.0024536122 0.0051431015 + 112700 0.005955353 0.0023101328 0.0052412831 + 112800 0.0068939122 0.0023991721 0.0057922695 + 112900 0.0048423154 0.0022677423 0.0046510694 + 113000 0.0024904304 0.0024689214 0.0036946801 + 113100 0.0040994351 0.0022112216 0.0042289123 + 113200 0.0041927948 0.0024644187 0.0045280599 + 113300 0.0059215586 0.0022238183 0.0051383354 + 113400 0.0037381398 0.0026043886 0.0044442543 + 113500 0.0054818864 0.0028451912 0.0055433072 + 113600 0.0080378216 0.0030499469 0.0070060622 + 113700 0.0045790699 0.0034810623 0.0057348233 + 113800 0.0054508947 0.0038292872 0.0065121494 + 113900 0.0063119462 0.0039706622 0.0070773233 + 114000 0.0049062179 0.0040489597 0.0064637388 + 114100 0.0060687528 0.0035775812 0.0065645454 + 114200 0.0048148785 0.0029373954 0.0053072185 + 114300 0.00424213 0.002213809 0.0043017323 + 114400 0.0044688861 0.0020153475 0.0042148774 + 114500 0.0043934851 0.0022074317 0.0043698501 + 114600 0.0031678524 0.0024544466 0.004013624 + 114700 0.0042061988 0.0022330402 0.0043032787 + 114800 0.0050375599 0.0017099923 0.0041894163 + 114900 0.0052476925 0.0022381717 0.0048210204 + 115000 0.004291679 0.0024672021 0.0045795128 + 115100 0.0033461379 0.0025738305 0.0042207577 + 115200 0.0047508507 0.0023793279 0.0047176372 + 115300 0.0045127302 0.0021958678 0.0044169772 + 115400 0.0042068752 0.0023957038 0.0044662752 + 115500 0.0037285941 0.0028463631 0.0046815305 + 115600 0.0041860224 0.0029260055 0.0049863134 + 115700 0.004168745 0.0027625036 0.0048143078 + 115800 0.0066204617 0.0020382981 0.0052968066 + 115900 0.0044148392 0.0023831315 0.0045560601 + 116000 0.0036425746 0.0027894567 0.0045822864 + 116100 0.0066123437 0.0025253525 0.0057798654 + 116200 0.0043932293 0.0025026014 0.004664894 + 116300 0.0056396985 0.0025709236 0.0053467127 + 116400 0.005249659 0.0024941895 0.005078006 + 116500 0.0048737354 0.0021327014 0.004531493 + 116600 0.0060342766 0.0020303848 0.0050003803 + 116700 0.0043521148 0.0023331204 0.004475177 + 116800 0.0046410869 0.002373728 0.0046580129 + 116900 0.0042897946 0.001961581 0.0040729643 + 117000 0.004750975 0.0015980869 0.0039364574 + 117100 0.0061153179 0.0014042146 0.0044140977 + 117200 0.0054286137 0.0022777892 0.004949685 + 117300 0.0048997545 0.0024122729 0.0048238708 + 117400 0.0049525901 0.0021413592 0.0045789621 + 117500 0.0060313513 0.0022504283 0.005218984 + 117600 0.0037243337 0.0021229818 0.0039560523 + 117700 0.0044672452 0.0022478248 0.004446547 + 117800 0.0063305931 0.0023211774 0.0054370162 + 117900 0.0046473976 0.0023775733 0.0046649643 + 118000 0.0057980765 0.0026267782 0.005480519 + 118100 0.0057644375 0.0022614293 0.0050986134 + 118200 0.0053759352 0.002184078 0.0048300461 + 118300 0.00350863 0.002208991 0.0039358949 + 118400 0.0044288284 0.001965456 0.0041452699 + 118500 0.0043770258 0.0023589102 0.0045132276 + 118600 0.0034849389 0.0028846954 0.0045999387 + 118700 0.0052191098 0.0031236261 0.0056924067 + 118800 0.0048827199 0.0031725471 0.0055757608 + 118900 0.0051153876 0.0028000437 0.0053177736 + 119000 0.0040971591 0.002313308 0.0043298784 + 119100 0.0057227038 0.001881064 0.0046977073 + 119200 0.0056176632 0.0020407526 0.0048056963 + 119300 0.0041188652 0.0022214132 0.0042486672 + 119400 0.0050258033 0.0023982737 0.0048719112 + 119500 0.0051708736 0.0023822894 0.0049273288 + 119600 0.0072497277 0.0017190797 0.005287305 + 119700 0.0049186695 0.0014997358 0.0039206434 + 119800 0.0046465176 0.0016186327 0.0039055906 + 119900 0.0035278697 0.0018591078 0.0035954811 + 120000 0.0040577145 0.0019211545 0.0039183108 + 120100 0.0057931299 0.0020505043 0.0049018104 + 120200 0.0054083879 0.0023873443 0.0050492853 + 120300 0.004472033 0.0032540249 0.0054551037 + 120400 0.0057364472 0.003440831 0.0062642387 + 120500 0.0044371632 0.0032682687 0.005452185 + 120600 0.0063617472 0.0027073182 0.0058384906 + 120700 0.0056331876 0.0024164048 0.0051889894 + 120800 0.0049574073 0.002579453 0.0050194269 + 120900 0.0063554724 0.0024675274 0.0055956115 + 121000 0.0050136393 0.0028690616 0.0053367122 + 121100 0.0057016186 0.0030473984 0.0058536638 + 121200 0.0034069274 0.0029406284 0.0046174755 + 121300 0.005908511 0.0024885791 0.0053966743 + 121400 0.0057957821 0.002047517 0.0049001285 + 121500 0.0044996932 0.0021861322 0.0044008249 + 121600 0.0049906281 0.0024747946 0.0049311194 + 121700 0.0060887065 0.002855947 0.0058527323 + 121800 0.004711195 0.0030064421 0.0053252333 + 121900 0.0049532559 0.0025154823 0.0049534129 + 122000 0.0059505907 0.0017859567 0.004714763 + 122100 0.0052105709 0.0018487319 0.0044133098 + 122200 0.0039354219 0.0023273716 0.0042643371 + 122300 0.005401392 0.0028101278 0.0054686255 + 122400 0.0056674886 0.0030709657 0.0058604328 + 122500 0.0061112212 0.0027812454 0.0057891121 + 122600 0.0047755166 0.0028547195 0.0052051691 + 122700 0.0041808644 0.0029896441 0.0050474133 + 122800 0.0077709546 0.0028883017 0.0067130684 + 122900 0.0042970339 0.0032379295 0.0053528759 + 123000 0.0075226296 0.0027071748 0.006409719 + 123100 0.005367627 0.0023276368 0.0049695157 + 123200 0.0041869074 0.0023193481 0.0043800916 + 123300 0.0041202043 0.0023587885 0.0043867016 + 123400 0.0056211685 0.0025252194 0.0052918882 + 123500 0.0043712009 0.0028400139 0.0049914644 + 123600 0.0037914677 0.0024664059 0.0043325189 + 123700 0.0038488631 0.0026006088 0.0044949711 + 123800 0.0031128641 0.0028649081 0.0043970209 + 123900 0.0044313471 0.0025276524 0.004708706 + 124000 0.0056320112 0.0027359714 0.0055079769 + 124100 0.0064750184 0.0027770805 0.0059640036 + 124200 0.0044987626 0.0032505587 0.0054647935 + 124300 0.006510302 0.0031229655 0.0063272547 + 124400 0.006619952 0.0029509754 0.006209233 + 124500 0.0047679095 0.0029512296 0.005297935 + 124600 0.0047701325 0.002816422 0.0051642216 + 124700 0.006678067 0.0028511954 0.0061380565 + 124800 0.0060663232 0.0024223656 0.0054081341 + 124900 0.003844719 0.0026911177 0.0045834404 + 125000 0.0041647942 0.0031817005 0.0052315602 + 125100 0.0050881992 0.0028574448 0.0053617929 + 125200 0.0037529619 0.0024375219 0.0042846828 + 125300 0.0050005985 0.002394114 0.0048553461 + 125400 0.0052503824 0.0023653029 0.0049494755 + 125500 0.0048088113 0.0025903931 0.0049572299 + 125600 0.0038505247 0.0025145197 0.0044096998 + 125700 0.0040790621 0.0026110609 0.0046187243 + 125800 0.0048334165 0.0025063267 0.0048852739 + 125900 0.0071298224 0.0023279068 0.0058371163 + 126000 0.0047556503 0.0025211966 0.0048618683 + 126100 0.0060659642 0.0024950479 0.0054806396 + 126200 0.0037014517 0.0031655455 0.0049873538 + 126300 0.0049728628 0.0035461648 0.0059937457 + 126400 0.0041408641 0.0035428252 0.0055809067 + 126500 0.0038449795 0.0033059564 0.0051984072 + 126600 0.0066626245 0.002801587 0.0060808475 + 126700 0.0049966227 0.0029878413 0.0054471166 + 126800 0.0047933269 0.0034440127 0.0058032283 + 126900 0.0069443863 0.0029671072 0.0063850473 + 127000 0.006278224 0.0028666475 0.0059567109 + 127100 0.0053949188 0.002669936 0.0053252476 + 127200 0.005096313 0.0020292732 0.0045376148 + 127300 0.004632969 0.0024694119 0.0047497013 + 127400 0.0040407222 0.0029519618 0.0049407547 + 127500 0.0067337362 0.0027864718 0.0061007326 + 127600 0.0048046858 0.002784265 0.0051490713 + 127700 0.0049217312 0.0028916068 0.0053140213 + 127800 0.0047809578 0.0027657663 0.0051188939 + 127900 0.0037821584 0.0027926455 0.0046541766 + 128000 0.0047841444 0.0030150198 0.0053697159 + 128100 0.0057148258 0.003019537 0.0058323029 + 128200 0.0049766972 0.0032299129 0.0056793811 + 128300 0.0053534075 0.0030153571 0.0056502374 + 128400 0.0040248704 0.0025979375 0.0045789284 + 128500 0.0052981287 0.0023984432 0.0050061159 + 128600 0.0057796888 0.0029875603 0.0058322509 + 128700 0.0072908316 0.0033206486 0.0069091048 + 128800 0.0050902396 0.0035021684 0.0060075207 + 128900 0.0058251458 0.0027165912 0.0055836552 + 129000 0.0048756176 0.0026574316 0.0050571496 + 129100 0.0046723639 0.0024646451 0.0047643242 + 129200 0.0038316242 0.0022505067 0.0041363842 + 129300 0.0060166322 0.0021926397 0.0051539509 + 129400 0.0057549304 0.0027197829 0.0055522877 + 129500 0.0028962582 0.0030377794 0.0044632815 + 129600 0.0038922573 0.0024899203 0.0044056407 + 129700 0.0042411643 0.0023759221 0.0044633702 + 129800 0.006548476 0.0023240161 0.0055470941 + 129900 0.0049729391 0.0028642532 0.0053118717 + 130000 0.0050890459 0.0028088299 0.0053135946 + 130100 0.0029038256 0.0027921066 0.0042213333 + 130200 0.0059512066 0.0027683475 0.005697457 + 130300 0.0051614526 0.00301503 0.0055554325 + 130400 0.004222731 0.003405594 0.0054839694 + 130500 0.0050986052 0.0028953762 0.0054048459 + 130600 0.0046849881 0.0026998659 0.0050057585 + 130700 0.0043345774 0.0026810714 0.0048144962 + 130800 0.0044094469 0.0026339556 0.0048042303 + 130900 0.0049347584 0.0027561296 0.005184956 + 131000 0.0050455262 0.002312234 0.0047955789 + 131100 0.0042198059 0.0022460696 0.0043230053 + 131200 0.0054589123 0.0027009148 0.0053877232 + 131300 0.004288358 0.0027913246 0.0049020008 + 131400 0.004764887 0.0024861655 0.0048313833 + 131500 0.0035330946 0.0021225872 0.0038615322 + 131600 0.0041490186 0.001770521 0.0038126161 + 131700 0.0038325307 0.0023784068 0.0042647305 + 131800 0.0039187208 0.0030081226 0.004936868 + 131900 0.0056226883 0.0027875838 0.0055550007 + 132000 0.0072295511 0.0024125427 0.0059708374 + 132100 0.0046347951 0.0027197012 0.0050008894 + 132200 0.0056619899 0.0031905621 0.0059773228 + 132300 0.0044276207 0.0030490221 0.0052282417 + 132400 0.005951752 0.0025991866 0.0055285645 + 132500 0.0061282756 0.0025352287 0.0055514893 + 132600 0.0055495961 0.0025212417 0.0052526835 + 132700 0.0048877637 0.0027421997 0.005147896 + 132800 0.0034509233 0.0027896644 0.0044881657 + 132900 0.005277937 0.0024213042 0.0050190389 + 133000 0.0051294936 0.002263101 0.0047877736 + 133100 0.0036120892 0.0022617565 0.0040395817 + 133200 0.004439563 0.0022846635 0.0044697609 + 133300 0.0035550703 0.0021552705 0.0039050317 + 133400 0.0056073403 0.002274687 0.0050345498 + 133500 0.0041909664 0.0025752587 0.004638 + 133600 0.0051610993 0.0023581062 0.0048983347 + 133700 0.0054679436 0.0020752744 0.0047665279 + 133800 0.0055609206 0.0021740809 0.0049110965 + 133900 0.0054706246 0.0022358669 0.0049284399 + 134000 0.0072174486 0.0022197526 0.0057720906 + 134100 0.0056280937 0.0020959985 0.0048660759 + 134200 0.00320157 0.0022067432 0.0037825159 + 134300 0.0036899818 0.0023298354 0.0041459984 + 134400 0.0046726079 0.0020348693 0.0043346685 + 134500 0.0057699374 0.0020992695 0.0049391606 + 134600 0.0046495065 0.0028228922 0.0051113212 + 134700 0.0055851509 0.0027449905 0.005493932 + 134800 0.0057087169 0.0024403493 0.0052501084 + 134900 0.0062368544 0.0025605615 0.0056302633 + 135000 0.0047129051 0.002878744 0.0051983769 + 135100 0.0067149977 0.0028027509 0.0061077889 + 135200 0.0060036119 0.0030845849 0.0060394876 + 135300 0.0047894219 0.0033706831 0.0057279767 + 135400 0.0059559832 0.0031160128 0.0060474733 + 135500 0.0043512947 0.0027041016 0.0048457544 + 135600 0.005859584 0.0025719437 0.0054559577 + 135700 0.0056721565 0.002248849 0.0050406136 + 135800 0.0032238519 0.0024688859 0.0040556255 + 135900 0.0059933399 0.0026121893 0.0055620363 + 136000 0.0056552632 0.0025388815 0.0053223314 + 136100 0.0050593197 0.0022617223 0.0047518562 + 136200 0.0050047211 0.0021421627 0.0046054238 + 136300 0.0045940525 0.0029279919 0.0051891272 + 136400 0.003724996 0.0033720961 0.0052054926 + 136500 0.0045012527 0.003297171 0.0055126313 + 136600 0.0060896246 0.0036641993 0.0066614364 + 136700 0.0049609583 0.0032629857 0.0057047073 + 136800 0.0040463819 0.0027778349 0.0047694135 + 136900 0.006408245 0.0025904147 0.0057444728 + 137000 0.0050540566 0.0026528671 0.0051404106 + 137100 0.0047870635 0.003245626 0.0056017587 + 137200 0.0074121915 0.0037180989 0.0073662869 + 137300 0.0052349364 0.0033878165 0.0059643867 + 137400 0.0058541837 0.0031318797 0.0060132358 + 137500 0.0040823976 0.0036330008 0.0056423059 + 137600 0.0053323801 0.0034120443 0.0060365752 + 137700 0.0067755067 0.0029591037 0.0062939235 + 137800 0.004991057 0.0031590074 0.0056155433 + 137900 0.0052144771 0.0027804173 0.0053469178 + 138000 0.0057173559 0.0025035738 0.0053175849 + 138100 0.0063300389 0.0026457222 0.0057612882 + 138200 0.0046665103 0.0026325565 0.0049293545 + 138300 0.0038463653 0.0027528063 0.0046459392 + 138400 0.0038282657 0.0023279826 0.0042122071 + 138500 0.004285187 0.0021769479 0.0042860634 + 138600 0.0036035568 0.0023719659 0.0041455915 + 138700 0.0037155657 0.0022815446 0.0041102996 + 138800 0.0067540559 0.0023474794 0.0056717413 + 138900 0.0052553201 0.0025828327 0.0051694356 + 139000 0.0048674684 0.0029406494 0.0053363565 + 139100 0.0059678472 0.0025270168 0.0054643166 + 139200 0.0031008877 0.0025340614 0.0040602796 + 139300 0.0061751052 0.0020039506 0.0050432602 + 139400 0.0060990107 0.0024530115 0.0054548683 + 139500 0.0053108621 0.0026250503 0.0052389903 + 139600 0.007318019 0.0025050101 0.0061068475 + 139700 0.0050636844 0.0023382691 0.0048305513 + 139800 0.0038298708 0.0027151808 0.0046001954 + 139900 0.0047285822 0.0028639871 0.0051913361 + 140000 0.0046841634 0.0029255187 0.0052310054 + 140100 0.0056061179 0.0031796896 0.0059389507 + 140200 0.0038705077 0.0027080388 0.0046130543 + 140300 0.0051424444 0.0026064153 0.0051374622 + 140400 0.0065045864 0.0027068243 0.0059083005 + 140500 0.0046017649 0.0027195837 0.0049845149 + 140600 0.0040298853 0.0031429802 0.0051264394 + 140700 0.0037369929 0.0034842423 0.0053235435 + 140800 0.0058948699 0.0031347601 0.0060361414 + 140900 0.0065136025 0.0026883729 0.0058942866 + 141000 0.0050676416 0.0023541001 0.00484833 + 141100 0.0053267963 0.0029896649 0.0056114474 + 141200 0.0046416643 0.0031167179 0.0054012871 + 141300 0.0051519915 0.0029593653 0.0054951112 + 141400 0.0048294707 0.0028335515 0.0052105566 + 141500 0.0052590565 0.0025592497 0.0051476915 + 141600 0.0043637556 0.0023779375 0.0045257234 + 141700 0.0051475278 0.0023975576 0.0049311064 + 141800 0.006713657 0.0025250403 0.0058294184 + 141900 0.0060193024 0.0025528064 0.0055154318 + 142000 0.004065715 0.0023551248 0.0043562189 + 142100 0.0041284712 0.0023653344 0.0043973163 + 142200 0.0054852282 0.00233491 0.0050346707 + 142300 0.0067942632 0.0019412508 0.0052853023 + 142400 0.0049805305 0.002606619 0.0050579738 + 142500 0.0048308913 0.0025076625 0.0048853668 + 142600 0.004614004 0.0023748148 0.0046457699 + 142700 0.0051328841 0.0025104499 0.0050367913 + 142800 0.0044062746 0.0021163207 0.004285034 + 142900 0.0040404159 0.0022546703 0.0042433125 + 143000 0.0065640881 0.0023586717 0.0055894338 + 143100 0.003516694 0.0025346147 0.0042654875 + 143200 0.007276868 0.0020486423 0.0056302258 + 143300 0.0046541822 0.0024620998 0.0047528301 + 143400 0.0056799685 0.0028777415 0.005673351 + 143500 0.0045914574 0.0029610551 0.005220913 + 143600 0.0055265034 0.0026883383 0.0054084142 + 143700 0.0057692562 0.0027838501 0.0056234059 + 143800 0.005251827 0.0030910286 0.0056759122 + 143900 0.005895299 0.0030406374 0.0059422299 + 144000 0.0059802117 0.0029996761 0.0059430615 + 144100 0.0057776726 0.0027359486 0.0055796468 + 144200 0.0063136629 0.0025318903 0.0056393963 + 144300 0.0050762109 0.0029654917 0.0054639392 + 144400 0.0064340233 0.0030450431 0.0062117889 + 144500 0.0039014963 0.0028079833 0.004728251 + 144600 0.0063785732 0.0026160555 0.0057555095 + 144700 0.0056440049 0.0028442142 0.0056221228 + 144800 0.0058923689 0.0026688125 0.0055689628 + 144900 0.0049193227 0.0027595818 0.0051808109 + 145000 0.0046421203 0.0028055789 0.0050903725 + 145100 0.0038722053 0.0028558462 0.0047616973 + 145200 0.0047170512 0.0026870237 0.0050086974 + 145300 0.003834807 0.0024850018 0.0043724459 + 145400 0.0047690841 0.0022338669 0.0045811505 + 145500 0.0037166949 0.002027839 0.0038571497 + 145600 0.0047000444 0.0020381383 0.0043514414 + 145700 0.0057814336 0.0016998888 0.0045454382 + 145800 0.0033900556 0.0016602961 0.0033288391 + 145900 0.0041450863 0.0019435152 0.0039836749 + 146000 0.0045887174 0.0019038834 0.0041623927 + 146100 0.0065125829 0.0021933647 0.0053987767 + 146200 0.0049932067 0.0024568665 0.0049144604 + 146300 0.0039152773 0.0027466834 0.0046737339 + 146400 0.0060507017 0.0028514257 0.0058295054 + 146500 0.0047387714 0.0029390682 0.0052714322 + 146600 0.0052024922 0.0028442935 0.0054048951 + 146700 0.0060052565 0.0023899495 0.0053456617 + 146800 0.0051683287 0.0023090933 0.0048528801 + 146900 0.0053436024 0.0022974242 0.0049274785 + 147000 0.0071639077 0.0024480552 0.005974041 + 147100 0.0065196954 0.002632821 0.0058417335 + 147200 0.0050609312 0.0027223509 0.005213278 + 147300 0.0057571621 0.0027745068 0.0056081101 + 147400 0.0053649115 0.0027177632 0.0053583056 + 147500 0.0045414889 0.0028874559 0.00512272 + 147600 0.0049332062 0.0031211521 0.0055492146 + 147700 0.0056962388 0.0029720779 0.0057756955 + 147800 0.0059606235 0.0027767006 0.005710445 + 147900 0.0072320549 0.0024933807 0.0060529078 + 148000 0.0045939467 0.00265624 0.0049173231 + 148100 0.0046023761 0.0027506387 0.0050158707 + 148200 0.0061995344 0.0030586875 0.0061100208 + 148300 0.0045765669 0.0030359713 0.0052885003 + 148400 0.005660659 0.0026315461 0.0054176517 + 148500 0.0052784394 0.0023206442 0.0049186261 + 148600 0.0049285188 0.0019616177 0.0043873731 + 148700 0.0046873725 0.0017461676 0.0040532337 + 148800 0.0040508611 0.0017552738 0.003749057 + 148900 0.0055427422 0.0017803286 0.0045083971 + 149000 0.0050605911 0.0019526318 0.0044433915 + 149100 0.0050969601 0.0020073586 0.0045160187 + 149200 0.0059374245 0.0019822838 0.0049046099 + 149300 0.0058870088 0.002030079 0.0049275911 + 149400 0.0054993195 0.0025284438 0.0052351401 + 149500 0.0049191244 0.0029002019 0.0053213335 + 149600 0.0057266649 0.0025645302 0.0053831231 + 149700 0.0055070722 0.0019129299 0.004623442 + 149800 0.0062900436 0.0017665204 0.0048624012 + 149900 0.0056877644 0.0023568921 0.0051563387 + 150000 0.0040633032 0.0024978653 0.0044977723 + 150100 0.0059065441 0.0025713664 0.0054784936 + 150200 0.0043786317 0.0022960291 0.0044511368 + 150300 0.0044678144 0.0023551093 0.0045541117 + 150400 0.0047664427 0.0030327699 0.0053787534 + 150500 0.0043626469 0.0032115727 0.005358813 + 150600 0.0055810764 0.0027438669 0.005490803 + 150700 0.0052176237 0.0021268922 0.0046949414 + 150800 0.0041288456 0.001970191 0.0040023572 + 150900 0.0055062279 0.0022251822 0.0049352788 + 151000 0.0045719801 0.0021531267 0.0044033981 + 151100 0.0055794305 0.0019287943 0.0046749203 + 151200 0.0049703667 0.0021704752 0.0046168275 + 151300 0.0036916574 0.0028849682 0.0047019559 + 151400 0.0058815715 0.0030944158 0.0059892517 + 151500 0.0048832927 0.002950691 0.0053541866 + 151600 0.0045976362 0.0026309069 0.004893806 + 151700 0.006120255 0.0020285213 0.0050408343 + 151800 0.0051372399 0.0021839875 0.0047124728 + 151900 0.0052042876 0.00240085 0.0049623353 + 152000 0.0050205716 0.0029259719 0.0053970345 + 152100 0.0058522251 0.0025955031 0.0054758952 + 152200 0.0042887877 0.0020095241 0.0041204118 + 152300 0.005330074 0.0018272849 0.0044506807 + 152400 0.00480544 0.0021606375 0.004525815 + 152500 0.0074797268 0.0021726001 0.0058540281 + 152600 0.0039565212 0.0023273415 0.0042746917 + 152700 0.0063912512 0.0022634526 0.0054091465 + 152800 0.0065790217 0.0019853118 0.005223424 + 152900 0.0050869368 0.0018109616 0.0043146883 + 153000 0.0070899745 0.0021123703 0.0056019671 + 153100 0.0037925084 0.0025104721 0.0043770974 + 153200 0.0042449525 0.0024655595 0.004554872 + 153300 0.0059961265 0.0020824899 0.0050337084 + 153400 0.0044138562 0.0019774571 0.004149902 + 153500 0.0053096128 0.0017418099 0.0043551349 + 153600 0.0042743405 0.001879478 0.003983255 + 153700 0.0067359596 0.0021980064 0.0055133615 + 153800 0.0055408257 0.0028711074 0.0055982326 + 153900 0.0057967511 0.0028049991 0.0056580876 + 154000 0.0070378351 0.0026033769 0.0060673114 + 154100 0.0050904115 0.0023128522 0.0048182891 + 154200 0.0071553266 0.0023426286 0.0058643909 + 154300 0.0058171174 0.0027082947 0.0055714072 + 154400 0.0049291425 0.0033458473 0.0057719096 + 154500 0.0048097717 0.0030533034 0.0054206129 + 154600 0.0075785535 0.0028909271 0.0066209964 + 154700 0.0036126655 0.0025970315 0.0043751403 + 154800 0.006061279 0.0022181966 0.0052014823 + 154900 0.0036169182 0.0022535085 0.0040337104 + 155000 0.0066066541 0.0020625025 0.005314215 + 155100 0.0043648438 0.0025657248 0.0047140463 + 155200 0.0049003929 0.0024141609 0.004826073 + 155300 0.0066730751 0.0025663091 0.0058507133 + 155400 0.0057846151 0.0027551201 0.0056022354 + 155500 0.0049225698 0.0027598451 0.0051826725 + 155600 0.004069593 0.0024696688 0.0044726716 + 155700 0.0049670105 0.0023122728 0.0047569733 + 155800 0.004701923 0.002148021 0.0044622487 + 155900 0.0049726636 0.0021941072 0.00464159 + 156000 0.004012041 0.0026518994 0.0046265758 + 156100 0.0035723047 0.0027119276 0.0044701713 + 156200 0.0048944322 0.0022870219 0.0046960002 + 156300 0.0044790987 0.0022607505 0.0044653069 + 156400 0.0037681326 0.0020707356 0.0039253634 + 156500 0.0038962953 0.0021613676 0.0040790754 + 156600 0.0048530822 0.0024600508 0.0048486772 + 156700 0.0053963457 0.0028032013 0.0054592152 + 156800 0.0048844591 0.0031611314 0.0055652011 + 156900 0.0068226061 0.00236135 0.0057193514 + 157000 0.0056876583 0.002456648 0.0052560423 + 157100 0.0047627014 0.0026931216 0.0050372637 + 157200 0.0046972571 0.0026466014 0.0049585326 + 157300 0.0050567087 0.002495932 0.0049847808 + 157400 0.0035624655 0.0027512197 0.0045046207 + 157500 0.0049063616 0.0026304156 0.0050452655 + 157600 0.0048010882 0.0025177335 0.0048807691 + 157700 0.0046076904 0.0023802712 0.0046481188 + 157800 0.0047613498 0.0026738143 0.0050172911 + 157900 0.0041881969 0.0027614712 0.0048228494 + 158000 0.0035935616 0.0029168835 0.0046855896 + 158100 0.0040061622 0.0028677451 0.0048395281 + 158200 0.0049728455 0.0025366116 0.004984184 + 158300 0.0053012414 0.0026293091 0.0052385138 + 158400 0.0049653937 0.0025138193 0.004957724 + 158500 0.0056274582 0.0024311565 0.005200921 + 158600 0.0050253217 0.0020865216 0.0045599221 + 158700 0.0048937323 0.0019749515 0.0043835853 + 158800 0.0054613692 0.0023358198 0.0050238375 + 158900 0.004625328 0.0021293997 0.0044059283 + 159000 0.0049608724 0.0019581014 0.0043997808 + 159100 0.0042975604 0.001813401 0.0039286065 + 159200 0.004007979 0.0018575257 0.0038302028 + 159300 0.0044807819 0.001919341 0.0041247258 + 159400 0.0035247127 0.0019541894 0.0036890089 + 159500 0.0047180245 0.0021532023 0.004475355 + 159600 0.0060139986 0.0022546591 0.005214674 + 159700 0.0034318228 0.0027334226 0.0044225229 + 159800 0.004857026 0.0023139283 0.0047044957 + 159900 0.0069916401 0.0020898519 0.0055310497 + 160000 0.0045818962 0.0025318923 0.0047870443 + 160100 0.0053253562 0.0025424674 0.0051635411 + 160200 0.0047916339 0.0026900881 0.0050484704 + 160300 0.0052348832 0.0027013373 0.0052778814 + 160400 0.0049859532 0.0026081746 0.0050621984 + 160500 0.0052201659 0.0021964198 0.0047657201 + 160600 0.0036651159 0.0020128449 0.0038167691 + 160700 0.0048709859 0.0018466158 0.0042440542 + 160800 0.006627867 0.0019662856 0.0052284389 + 160900 0.0043266125 0.0025279695 0.0046574741 + 161000 0.0044245664 0.0023871324 0.0045648487 + 161100 0.0041329709 0.0019688615 0.0040030581 + 161200 0.003846364 0.0023829855 0.0042761178 + 161300 0.0043839637 0.0027475765 0.0049053086 + 161400 0.0064710166 0.0028860966 0.0060710501 + 161500 0.0057036433 0.0028480773 0.0056553392 + 161600 0.0043459523 0.0026377332 0.0047767566 + 161700 0.0073058079 0.0024453325 0.0060411598 + 161800 0.0050609128 0.0028560094 0.0053469274 + 161900 0.004887756 0.0026446548 0.0050503472 + 162000 0.0075617163 0.0023839144 0.0061056966 + 162100 0.0057689049 0.0025047694 0.0053441523 + 162200 0.0045838307 0.0024136448 0.004669749 + 162300 0.0044540312 0.0021479755 0.004340194 + 162400 0.0048578866 0.0017214838 0.0041124749 + 162500 0.0041754591 0.0017337166 0.0037888254 + 162600 0.0046655816 0.0017788833 0.0040752242 + 162700 0.0055272708 0.0020256211 0.0047460747 + 162800 0.0049871135 0.0023953587 0.0048499536 + 162900 0.0058831999 0.0019619296 0.004857567 + 163000 0.0058358671 0.0017928747 0.0046652156 + 163100 0.0037075099 0.0018195836 0.0036443736 + 163200 0.0045824458 0.0017214233 0.0039768459 + 163300 0.0046740031 0.0018998972 0.0042003831 + 163400 0.0061252749 0.0024023533 0.005417137 + 163500 0.0058329728 0.0023640534 0.0052349697 + 163600 0.0056629825 0.0024562254 0.0052434747 + 163700 0.0045043298 0.002524817 0.0047417919 + 163800 0.006520856 0.0025508284 0.0057603122 + 163900 0.0046895637 0.0028482818 0.0051564264 + 164000 0.0063727699 0.0028461265 0.0059827242 + 164100 0.0072127749 0.0020941392 0.0056441769 + 164200 0.0049270053 0.0018662336 0.004291244 + 164300 0.0049993373 0.0017534565 0.0042140678 + 164400 0.0046943021 0.0018510102 0.004161487 + 164500 0.0052074774 0.0018782512 0.0044413065 + 164600 0.0056074789 0.0019756211 0.0047355521 + 164700 0.0050911148 0.0021591126 0.0046648956 + 164800 0.0049991449 0.0025027994 0.0049633161 + 164900 0.0073525565 0.0025799205 0.0061987569 + 165000 0.0048121021 0.0024706973 0.0048391538 + 165100 0.005524344 0.0024716576 0.0051906707 + 165200 0.0052685784 0.0022100267 0.0048031552 + 165300 0.0044971001 0.0019953906 0.004208807 + 165400 0.005100979 0.0021059179 0.0046165559 + 165500 0.0040575225 0.0023336897 0.0043307516 + 165600 0.0038918738 0.0025639854 0.004479517 + 165700 0.0051465714 0.0021657196 0.0046987977 + 165800 0.0061822505 0.0016470318 0.0046898582 + 165900 0.0063303416 0.0014378917 0.0045536067 + 166000 0.0054264257 0.0017100199 0.0043808388 + 166100 0.004349781 0.0023426964 0.0044836043 + 166200 0.0049066658 0.0024949134 0.004909913 + 166300 0.0040176584 0.0020554523 0.0040328936 + 166400 0.0046246853 0.0022087886 0.0044850009 + 166500 0.0070682051 0.0022058492 0.0056847314 + 166600 0.0055349229 0.0019238282 0.0046480481 + 166700 0.0043578158 0.0019355173 0.0040803798 + 166800 0.0047413261 0.0023332956 0.0046669171 + 166900 0.0053527634 0.0020351239 0.0046696872 + 167000 0.0052364061 0.0017401564 0.0043174501 + 167100 0.0053651494 0.0018747937 0.0045154531 + 167200 0.0052888317 0.0026672339 0.0052703308 + 167300 0.0050726371 0.0028682798 0.0053649684 + 167400 0.003677792 0.0023844951 0.0041946584 + 167500 0.0053201652 0.0020006082 0.004619127 + 167600 0.004544796 0.0020132012 0.004250093 + 167700 0.0058567705 0.0020572976 0.0049399268 + 167800 0.0035784184 0.0023080577 0.0040693106 + 167900 0.0039790572 0.0021859386 0.0041443808 + 168000 0.0045600905 0.0018777913 0.0041222109 + 168100 0.0036832321 0.0023875818 0.0042004227 + 168200 0.0048776744 0.0024996797 0.0049004101 + 168300 0.0053292789 0.0026748888 0.0052978932 + 168400 0.0036995894 0.0026349365 0.0044558281 + 168500 0.0062535501 0.0020514616 0.0051293809 + 168600 0.0049770649 0.0019781783 0.0044278274 + 168700 0.0045961011 0.0022477077 0.0045098512 + 168800 0.005663714 0.0025628908 0.0053505001 + 168900 0.0055292611 0.002352109 0.0050735422 + 169000 0.0046436978 0.0022098576 0.0044954276 + 169100 0.0041333651 0.0020241907 0.0040585813 + 169200 0.0037197293 0.0024016937 0.004232498 + 169300 0.005489457 0.0024605161 0.0051623582 + 169400 0.0040865096 0.0026496824 0.0046610114 + 169500 0.0040373825 0.0026353905 0.0046225396 + 169600 0.0034674041 0.0023267865 0.0040333995 + 169700 0.0059029064 0.002017751 0.0049230878 + 169800 0.0046989578 0.002650261 0.0049630293 + 169900 0.0036133101 0.0031956684 0.0049740945 + 170000 0.0053628981 0.0024685505 0.0051081019 + 170100 0.0061608451 0.0019685258 0.0050008168 + 170200 0.0047571172 0.0020772106 0.0044186042 + 170300 0.0055534355 0.0019430253 0.0046763568 + 170400 0.0057422237 0.0019967064 0.0048229571 + 170500 0.0052788553 0.0022124737 0.0048106603 + 170600 0.004586182 0.0018828529 0.0041401143 + 170700 0.0047478216 0.0019445734 0.0042813918 + 170800 0.0040305399 0.0025672056 0.004550987 + 170900 0.0057189788 0.0021522978 0.0049671077 + 171000 0.0049629948 0.0019913638 0.0044340878 + 171100 0.0053121838 0.0020424918 0.0046570822 + 171200 0.0052132895 0.0019396927 0.0045056087 + 171300 0.0059575306 0.0021419452 0.0050741672 + 171400 0.006214123 0.0028038074 0.0058623211 + 171500 0.0048343055 0.0030135182 0.005392903 + 171600 0.0041593422 0.0030681451 0.0051153214 + 171700 0.0053209585 0.0025819887 0.005200898 + 171800 0.00301784 0.0025028146 0.0039881578 + 171900 0.0052223272 0.0025128108 0.005083175 + 172000 0.0039693658 0.002487965 0.0044416373 + 172100 0.0054053735 0.0023729125 0.0050333698 + 172200 0.0061139551 0.0024945771 0.0055037894 + 172300 0.0065982303 0.0026244557 0.0058720222 + 172400 0.0044461568 0.0031227546 0.0053110974 + 172500 0.0045374438 0.0030506348 0.0052839079 + 172600 0.0048310711 0.002667172 0.0050449649 + 172700 0.0047433722 0.0024186416 0.00475327 + 172800 0.0050026524 0.002798637 0.00526088 + 172900 0.0054883234 0.0031020136 0.0058032978 + 173000 0.0039163405 0.0031224461 0.0050500199 + 173100 0.0050517875 0.0027021584 0.0051885851 + 173200 0.0050566296 0.0021681634 0.0046569733 + 173300 0.0036273553 0.0020996555 0.0038849945 + 173400 0.0042698436 0.0020779564 0.0041795201 + 173500 0.0044170938 0.0020961149 0.0042701533 + 173600 0.0041224682 0.0018911372 0.0039201645 + 173700 0.0047891012 0.0017303651 0.0040875009 + 173800 0.004100556 0.0017392489 0.0037574913 + 173900 0.0037423726 0.0019070066 0.0037489556 + 174000 0.0048682515 0.0020535707 0.0044496633 + 174100 0.003646044 0.0021295261 0.0039240634 + 174200 0.0050172914 0.0020854307 0.0045548788 + 174300 0.0051566865 0.0023028563 0.004840913 + 174400 0.0052841038 0.0024630354 0.0050638053 + 174500 0.004490522 0.0022349459 0.0044451247 + 174600 0.0047782341 0.0020849184 0.0044367055 + 174700 0.0040964372 0.0024977226 0.0045139378 + 174800 0.0040551893 0.0025963858 0.0045922993 + 174900 0.0059994098 0.0021935499 0.0051463845 + 175000 0.0065729476 0.0021281108 0.0053632334 + 175100 0.0049796021 0.0016327698 0.0040836677 + 175200 0.0042227705 0.0016724506 0.0037508455 + 175300 0.0044238664 0.0019777182 0.0041550899 + 175400 0.0061949884 0.001707499 0.0047565949 + 175500 0.0043817437 0.0017329954 0.0038896349 + 175600 0.0044265344 0.0021545832 0.0043332681 + 175700 0.0047536219 0.0020801393 0.0044198126 + 175800 0.005704211 0.0020559587 0.0048635 + 175900 0.0046785331 0.0022904666 0.0045931821 + 176000 0.0034089204 0.0022107383 0.0038885663 + 176100 0.0045071064 0.0021344055 0.0043527469 + 176200 0.005613267 0.0018453411 0.0046081209 + 176300 0.0056495081 0.0016542671 0.0044348844 + 176400 0.0046394758 0.0024333497 0.0047168416 + 176500 0.0069611352 0.0023052451 0.0057314288 + 176600 0.00483255 0.0024479322 0.0048264529 + 176700 0.0034912079 0.0024137278 0.0041320567 + 176800 0.0051365409 0.0021038756 0.0046320168 + 176900 0.0058711759 0.0022695046 0.0051592239 + 177000 0.0047640289 0.002532547 0.0048773424 + 177100 0.0053943745 0.0024351039 0.0050901476 + 177200 0.00386933 0.0027150553 0.0046194912 + 177300 0.0048801683 0.0024310324 0.0048329902 + 177400 0.0049975809 0.0028054134 0.0052651603 + 177500 0.0053986777 0.0031848207 0.0058419824 + 177600 0.004805723 0.0026165852 0.004981902 + 177700 0.0065635799 0.0025133608 0.0057438728 + 177800 0.0033628824 0.0026449453 0.004300114 + 177900 0.0047631895 0.0025551761 0.0048995584 + 178000 0.0060088141 0.0023785052 0.0053359683 + 178100 0.0063254964 0.0023370019 0.0054503322 + 178200 0.0057124108 0.0031303054 0.0059418826 + 178300 0.005123675 0.0038711114 0.0063929202 + 178400 0.0030555371 0.0037363059 0.005240203 + 178500 0.0047061112 0.0027637771 0.0050800662 + 178600 0.0048588126 0.0023288757 0.0047203225 + 178700 0.0053281264 0.0021882143 0.0048106515 + 178800 0.0052294455 0.0022595207 0.0048333884 + 178900 0.0041615502 0.0020373922 0.0040856552 + 179000 0.004428132 0.0021075527 0.0042870239 + 179100 0.0037152765 0.0019860589 0.0038146715 + 179200 0.0049731731 0.0018360222 0.0042837558 + 179300 0.0042773946 0.0022274504 0.0043327306 + 179400 0.0046810595 0.0019552727 0.0042592317 + 179500 0.0058305835 0.0017417261 0.0046114664 + 179600 0.0058480135 0.00189033 0.0047686491 + 179700 0.0049242416 0.002069512 0.0044931622 + 179800 0.0033260189 0.0025168914 0.0041539163 + 179900 0.0051746784 0.0021788731 0.0047257852 + 180000 0.0040196775 0.0016545892 0.0036330242 + 180100 0.0048295889 0.0015275207 0.003904584 + 180200 0.0043740754 0.0018049372 0.0039578024 + 180300 0.0035676308 0.0021859754 0.0039419187 + 180400 0.0057953096 0.0019296322 0.0047820111 + 180500 0.0044506249 0.0021893219 0.0043798638 + 180600 0.0049140423 0.0022269566 0.0046455867 + 180700 0.0047712139 0.0021436328 0.0044919646 + 180800 0.0045407452 0.0024161174 0.0046510154 + 180900 0.0053600713 0.002771809 0.005409969 + 181000 0.004434367 0.0026187908 0.0048013307 + 181100 0.0071169343 0.0023010471 0.0058039132 + 181200 0.004285378 0.0019717332 0.0040809427 + 181300 0.0041564306 0.0022597755 0.0043055187 + 181400 0.0053792166 0.0023339319 0.004981515 + 181500 0.0051305197 0.0024697858 0.0049949634 + 181600 0.0051295553 0.0025783593 0.0051030623 + 181700 0.009124747 0.0020825581 0.0065736445 + 181800 0.0047726843 0.0021801695 0.004529225 + 181900 0.0059808113 0.0020797918 0.0050234723 + 182000 0.0051825644 0.0022786675 0.004829461 + 182100 0.0050588588 0.0020712119 0.0045611189 + 182200 0.0062617528 0.0019050456 0.0049870021 + 182300 0.005109916 0.0027709936 0.0052860304 + 182400 0.0051822025 0.0031720051 0.0057226204 + 182500 0.0052780941 0.0027301085 0.0053279204 + 182600 0.0061596153 0.0025281391 0.0055598247 + 182700 0.0045751785 0.0032274056 0.0054792513 + 182800 0.0049043855 0.0028058466 0.0052197239 + 182900 0.0045887427 0.0022676583 0.0045261801 + 183000 0.0044753868 0.0019190827 0.0041218121 + 183100 0.0054517901 0.0019729475 0.0046562504 + 183200 0.0039342381 0.0025168143 0.0044531971 + 183300 0.0057890057 0.0027806477 0.005629924 + 183400 0.0036536159 0.0023044945 0.0041027586 + 183500 0.0053228603 0.0023476772 0.0049675225 + 183600 0.0052981316 0.0020753827 0.0046830569 + 183700 0.0062605211 0.0016048064 0.0046861566 + 183800 0.0049081239 0.0017252993 0.0041410165 + 183900 0.0057950751 0.0018612511 0.0047135147 + 184000 0.0063049269 0.0016872024 0.0047904086 + 184100 0.0042631014 0.0018950664 0.0039933116 + 184200 0.0047372243 0.0024578143 0.0047894169 + 184300 0.0053135723 0.0025455874 0.0051608612 + 184400 0.0038799938 0.0025098987 0.0044195832 + 184500 0.0045957427 0.0025714652 0.0048334324 + 184600 0.0067499861 0.0023078239 0.0056300827 + 184700 0.0047108752 0.0023209042 0.0046395381 + 184800 0.0049793386 0.0023064359 0.0047572041 + 184900 0.0050227224 0.0023910147 0.0048631359 + 185000 0.0042363105 0.0024464388 0.0045314979 + 185100 0.00740465 0.002053654 0.0056981302 + 185200 0.0044881728 0.0023690322 0.0045780547 + 185300 0.004517252 0.0026305967 0.0048539317 + 185400 0.0048224464 0.0030154052 0.005388953 + 185500 0.0042217705 0.0024790573 0.00455696 + 185600 0.0057903525 0.0023386591 0.0051885982 + 185700 0.0063881358 0.0030633771 0.0062075376 + 185800 0.0056718967 0.0036215638 0.0064132005 + 185900 0.0047302451 0.0033010317 0.0056291992 + 186000 0.005203559 0.0023262793 0.004887406 + 186100 0.0032175832 0.0022258041 0.0038094584 + 186200 0.0033506874 0.0023935202 0.0040426867 + 186300 0.0056397707 0.0025183023 0.0052941269 + 186400 0.0049725471 0.00284336 0.0052907855 + 186500 0.0066831373 0.0028567372 0.0061460938 + 186600 0.0057502365 0.0026832031 0.0055133976 + 186700 0.0044696376 0.0026444162 0.004844316 + 186800 0.0044932944 0.0019395356 0.004151079 + 186900 0.0046353455 0.0018717352 0.0041531943 + 187000 0.005669231 0.0022282147 0.0050185394 + 187100 0.0065580156 0.0025604875 0.0057882608 + 187200 0.0049545514 0.0022997772 0.0047383455 + 187300 0.0052254104 0.0023301278 0.0049020095 + 187400 0.0049236313 0.0023556567 0.0047790065 + 187500 0.0049793641 0.0022683903 0.0047191711 + 187600 0.0044811794 0.0017970363 0.0040026168 + 187700 0.0034976653 0.0018531272 0.0035746344 + 187800 0.0035191021 0.0019180821 0.0036501402 + 187900 0.0044275647 0.0022800765 0.0044592685 + 188000 0.0052082732 0.0027710913 0.0053345382 + 188100 0.0044241932 0.0030186278 0.0051961603 + 188200 0.0045787244 0.0024479479 0.0047015388 + 188300 0.004634167 0.0021515401 0.0044324191 + 188400 0.004167344 0.0020327636 0.0040838782 + 188500 0.0043919582 0.0021576481 0.004319315 + 188600 0.005322047 0.002064414 0.004683859 + 188700 0.0061529318 0.0020282018 0.0050565979 + 188800 0.0032070569 0.0022023773 0.0037808506 + 188900 0.0053872432 0.0019923792 0.004643913 + 189000 0.0045016806 0.0021488207 0.0043644916 + 189100 0.0057274129 0.0022466839 0.0050656449 + 189200 0.0046221949 0.0021069141 0.0043819007 + 189300 0.0068490993 0.0019226229 0.005293664 + 189400 0.0037350971 0.0022583555 0.0040967236 + 189500 0.003885258 0.0021444394 0.0040567149 + 189600 0.0046976325 0.002503803 0.004815919 + 189700 0.0048606634 0.0024978715 0.0048902293 + 189800 0.003433156 0.0021227889 0.0038125454 + 189900 0.0037856576 0.0022632313 0.0041264846 + 190000 0.0056254693 0.0024565838 0.0052253694 + 190100 0.0044766869 0.0023167453 0.0045201146 + 190200 0.0070538823 0.0022203604 0.0056921931 + 190300 0.0065013101 0.0022362545 0.0054361181 + 190400 0.0054918463 0.0021174997 0.0048205179 + 190500 0.0043990819 0.0022698655 0.0044350386 + 190600 0.0043012959 0.0023794308 0.0044964749 + 190700 0.0055971591 0.0023693936 0.0051242454 + 190800 0.0045773608 0.0024611651 0.0047140848 + 190900 0.0052964741 0.0024180061 0.0050248644 + 191000 0.0050287916 0.002092457 0.0045675654 + 191100 0.0056337201 0.0022029358 0.0049757824 + 191200 0.0033560932 0.0025174468 0.0041692739 + 191300 0.0044463779 0.0024772054 0.004665657 + 191400 0.0047705366 0.0023694483 0.0047174468 + 191500 0.0051969542 0.0021932209 0.0047510968 + 191600 0.0053674342 0.0023989609 0.0050407449 + 191700 0.0052798798 0.0023126525 0.0049113433 + 191800 0.0045860385 0.0020829852 0.004340176 + 191900 0.0045687607 0.0020453302 0.0042940171 + 192000 0.0063496622 0.002374989 0.0055002134 + 192100 0.0053699797 0.0020497046 0.0046927415 + 192200 0.004333292 0.002095074 0.0042278662 + 192300 0.0063626022 0.0022385443 0.0053701376 + 192400 0.0057531456 0.0031913241 0.0060229505 + 192500 0.0057794668 0.0032200226 0.0060646039 + 192600 0.0066419351 0.0029578844 0.0062269619 + 192700 0.0072512743 0.0029194062 0.0064883928 + 192800 0.0041357556 0.0028900502 0.0049256174 + 192900 0.0040896636 0.0025366207 0.004549502 + 193000 0.0046796306 0.0027052001 0.0050084558 + 193100 0.0062739864 0.0022782079 0.0053661856 + 193200 0.0048617253 0.0023235562 0.0047164366 + 193300 0.0062369691 0.0020696454 0.0051394036 + 193400 0.004256416 0.001924225 0.0040191797 + 193500 0.0057754498 0.0020574176 0.0049000219 + 193600 0.0056877426 0.0022726429 0.0050720787 + 193700 0.005256276 0.0029808507 0.005567924 + 193800 0.004945056 0.0028183792 0.0052522739 + 193900 0.0042030795 0.0022309003 0.0042996035 + 194000 0.0043105551 0.0017612245 0.0038828259 + 194100 0.0041899101 0.0015768691 0.0036390905 + 194200 0.0043291821 0.0016591278 0.0037898972 + 194300 0.0044585655 0.0015293406 0.0037237908 + 194400 0.0053153199 0.0018284505 0.0044445845 + 194500 0.0061449818 0.0020592782 0.0050837615 + 194600 0.0061376146 0.0026356104 0.0056564675 + 194700 0.0056698285 0.0026079796 0.0053985983 + 194800 0.0064004851 0.0031548317 0.0063050704 + 194900 0.0053617929 0.0035448699 0.0061838773 + 195000 0.0045282291 0.0027882956 0.0050170334 + 195100 0.0059081249 0.0027889328 0.005696838 + 195200 0.0032729464 0.0025447778 0.0041556811 + 195300 0.0042985832 0.002524723 0.0046404319 + 195400 0.0047661351 0.0023914788 0.0047373109 + 195500 0.0038593606 0.00238978 0.004289309 + 195600 0.005075743 0.0024251201 0.0049233374 + 195700 0.0045398143 0.0022220348 0.0044564746 + 195800 0.004937009 0.0017655956 0.0041955298 + 195900 0.0060583299 0.0019017701 0.0048836044 + 196000 0.0076291999 0.0027184432 0.00647344 + 196100 0.0061440581 0.0030237989 0.0060478275 + 196200 0.0060455899 0.0030641276 0.0060396913 + 196300 0.0058385045 0.00273602 0.005609659 + 196400 0.0055596615 0.0028144818 0.0055508776 + 196500 0.004697577 0.0026391329 0.0049512215 + 196600 0.005737456 0.0019909962 0.0048149003 + 196700 0.0054136171 0.0022208007 0.0048853154 + 196800 0.0048088201 0.0027594425 0.0051262836 + 196900 0.0055985364 0.0026448882 0.0054004179 + 197000 0.0044740806 0.0024931522 0.0046952387 + 197100 0.0041001315 0.0027948555 0.004812889 + 197200 0.0038338796 0.0031093612 0.0049963488 + 197300 0.0062949104 0.0027018131 0.0058000893 + 197400 0.0047446356 0.0029366982 0.0052719485 + 197500 0.0057944843 0.0027999689 0.0056519416 + 197600 0.0053559467 0.0024977472 0.0051338773 + 197700 0.0048897126 0.0020364402 0.0044430956 + 197800 0.0059481337 0.002160028 0.0050876251 + 197900 0.005345526 0.0025859299 0.005216931 + 198000 0.0047040647 0.0026455784 0.0049608602 + 198100 0.0056515831 0.0025990005 0.0053806391 + 198200 0.0048142535 0.0028615487 0.0052310641 + 198300 0.0043242099 0.0031347877 0.0052631097 + 198400 0.005807058 0.0027468337 0.0056049951 + 198500 0.0061511925 0.0027441751 0.0057717152 + 198600 0.0053996441 0.0023009638 0.0049586012 + 198700 0.0066572726 0.0024529527 0.0057295791 + 198800 0.0043062101 0.0029815024 0.0051009651 + 198900 0.0047533396 0.0031481027 0.0054876371 + 199000 0.0050250906 0.0026846351 0.0051579219 + 199100 0.0044296701 0.0026991238 0.004879352 + 199200 0.004750793 0.0030099909 0.0053482719 + 199300 0.0063902038 0.0026691129 0.0058142913 + 199400 0.0035302494 0.0029283298 0.0046658745 + 199500 0.0053457865 0.0026855497 0.0053166789 + 199600 0.004942038 0.0022475159 0.0046799252 + 199700 0.0044123628 0.0021423566 0.0043140664 + 199800 0.0051721474 0.0025822506 0.0051279169 + 199900 0.0067216405 0.0027738371 0.0060821445 + 200000 0.0041999242 0.0033280621 0.0053952123 + 200100 0.0053853215 0.0028134835 0.0054640715 + 200200 0.0070326806 0.0023628302 0.0058242277 + 200300 0.0064740704 0.002282518 0.0054689746 + 200400 0.0055416572 0.0024834017 0.0052109361 + 200500 0.004109526 0.0019832724 0.0040059297 + 200600 0.0044651691 0.0017090321 0.0039067325 + 200700 0.0038325448 0.0018320484 0.003718379 + 200800 0.0049511768 0.0024366153 0.0048735226 + 200900 0.0041947457 0.0029313781 0.0049959795 + 201000 0.0063873725 0.0022336584 0.0053774433 + 201100 0.0069929335 0.002034948 0.0054767825 + 201200 0.0050143912 0.0021640919 0.0046321126 + 201300 0.0050905906 0.0016847499 0.004190275 + 201400 0.0049727172 0.0016768572 0.0041243664 + 201500 0.0046479509 0.0019203048 0.0042079682 + 201600 0.0047688674 0.0018733406 0.0042205175 + 201700 0.004804047 0.0020160994 0.0043805913 + 201800 0.0054441503 0.002052441 0.0047319837 + 201900 0.0051429261 0.001669314 0.004200598 + 202000 0.0049024111 0.0016081589 0.0040210644 + 202100 0.0042113786 0.0019490637 0.0040218515 + 202200 0.004111462 0.0022001332 0.0042237434 + 202300 0.0046680541 0.0026443269 0.0049418848 + 202400 0.0036635719 0.0023805656 0.0041837299 + 202500 0.0054525369 0.0020080216 0.0046916921 + 202600 0.005937081 0.0023620036 0.0052841606 + 202700 0.0051676288 0.0029471165 0.0054905588 + 202800 0.004759393 0.0027313526 0.0050738664 + 202900 0.0057345927 0.0024192778 0.0052417726 + 203000 0.0047367148 0.0025740525 0.0049054043 + 203100 0.0057929086 0.002468494 0.0053196912 + 203200 0.0054904975 0.0020961964 0.0047985507 + 203300 0.0063134233 0.0021722452 0.0052796332 + 203400 0.0051885883 0.0028214429 0.0053752012 + 203500 0.0044270709 0.0029040288 0.0050829778 + 203600 0.0046992443 0.0021915657 0.004504475 + 203700 0.0059437513 0.0025333722 0.0054588123 + 203800 0.0053737015 0.002810977 0.0054558457 + 203900 0.0066920242 0.0024644919 0.0057582226 + 204000 0.006243038 0.0025903378 0.005663083 + 204100 0.0056129344 0.0025774994 0.0053401156 + 204200 0.0048078247 0.0023617848 0.004728136 + 204300 0.0039033054 0.0025607926 0.0044819507 + 204400 0.0045629641 0.0020741264 0.0043199603 + 204500 0.0033175956 0.001717367 0.0033502461 + 204600 0.0040958831 0.0019772267 0.0039931692 + 204700 0.0039958114 0.0024394696 0.004406158 + 204800 0.0048196769 0.0023969146 0.0047690993 + 204900 0.0051131635 0.0022316528 0.004748288 + 205000 0.0059828248 0.0021182188 0.0050628904 + 205100 0.0051022085 0.0026633045 0.0051745477 + 205200 0.0052887323 0.00292452 0.0055275679 + 205300 0.0062273339 0.0027976118 0.0058626277 + 205400 0.0051367864 0.0024056458 0.0049339079 + 205500 0.0055875058 0.0027185751 0.0054686757 + 205600 0.00468734 0.0030357362 0.0053427864 + 205700 0.0054954466 0.0029601312 0.0056649213 + 205800 0.0048609678 0.0030414698 0.0054339774 + 205900 0.0054288731 0.0034074542 0.0060794777 + 206000 0.0051448428 0.0036281669 0.0061603942 + 206100 0.0048684587 0.0030152249 0.0054114194 + 206200 0.0052992523 0.0021403745 0.0047486002 + 206300 0.0048983015 0.0024127494 0.0048236322 + 206400 0.0045774258 0.0024722444 0.0047251962 + 206500 0.0047342701 0.0022539591 0.0045841077 + 206600 0.0035954723 0.0022302778 0.0039999244 + 206700 0.0047492822 0.002494433 0.0048319703 + 206800 0.0044127539 0.0030415744 0.0052134767 + 206900 0.0070963809 0.0027009435 0.0061936935 + 207000 0.0046251506 0.0026018927 0.004878334 + 207100 0.0050813155 0.0027401742 0.0052411342 + 207200 0.0047673375 0.0023453195 0.0046917434 + 207300 0.0037448637 0.0021069549 0.00395013 + 207400 0.0039488791 0.0019467734 0.0038903624 + 207500 0.0035155969 0.0015758529 0.0033061858 + 207600 0.0056508505 0.0018424313 0.0046237093 + 207700 0.0052555391 0.0025433071 0.0051300177 + 207800 0.0042075733 0.0023281315 0.0043990465 + 207900 0.0042010999 0.0021518 0.0042195288 + 208000 0.0044481116 0.0022338561 0.004423161 + 208100 0.0051551973 0.0021666464 0.0047039701 + 208200 0.0053914538 0.0023752575 0.0050288637 + 208300 0.0053525975 0.0026841155 0.0053185971 + 208400 0.0060511996 0.0031570164 0.0061353412 + 208500 0.0051730288 0.002940035 0.0054861351 + 208600 0.0052149457 0.003216135 0.0057828661 + 208700 0.004828151 0.0031983072 0.0055746628 + 208800 0.0044526029 0.0028915398 0.0050830553 + 208900 0.0040981326 0.0024623903 0.0044794399 + 209000 0.0058089547 0.0022475677 0.0051066626 + 209100 0.0057334283 0.0022034171 0.0050253388 + 209200 0.0063096948 0.0024183518 0.0055239047 + 209300 0.0039976111 0.0022370908 0.004204665 + 209400 0.0055610622 0.0021147052 0.0048517905 + 209500 0.0053008893 0.0023916369 0.0050006683 + 209600 0.0070691985 0.0019004331 0.0053798043 + 209700 0.0062931622 0.0021488898 0.0052463056 + 209800 0.0048644074 0.0021023193 0.0044965198 + 209900 0.003924071 0.0026411717 0.0045725504 + 210000 0.0063880485 0.0028103649 0.0059544825 + 210100 0.0057982449 0.0028924307 0.0057462544 + 210200 0.0047734612 0.0030308233 0.0053802612 + 210300 0.0054816582 0.0027751167 0.0054731203 + 210400 0.0052958465 0.0024222574 0.0050288069 + 210500 0.0057722258 0.0023469976 0.0051880149 + 210600 0.0035149635 0.0023618861 0.0040919072 + 210700 0.0058076782 0.0025043674 0.005362834 + 210800 0.004459559 0.0021467134 0.0043416526 + 210900 0.0044791566 0.0024051969 0.0046097818 + 211000 0.0042569465 0.0027750241 0.00487024 + 211100 0.0055279109 0.0026435626 0.0053643313 + 211200 0.004493039 0.0027203652 0.0049317828 + 211300 0.0046735215 0.0029132749 0.0052135237 + 211400 0.0050920638 0.0026008955 0.0051071457 + 211500 0.0049222996 0.0023215203 0.0047442147 + 211600 0.0050756892 0.0022876547 0.0047858455 + 211700 0.0065229765 0.0023501437 0.0055606712 + 211800 0.0054191296 0.0026280366 0.0052952645 + 211900 0.0050024632 0.0026274652 0.0050896151 + 212000 0.00590247 0.0025616998 0.0054668217 + 212100 0.0048186591 0.0023566123 0.004728296 + 212200 0.0054431288 0.0021070132 0.0047860532 + 212300 0.0063542075 0.00227693 0.0054043915 + 212400 0.005162244 0.0027068134 0.0052476054 + 212500 0.0040114671 0.0026427266 0.0046171206 + 212600 0.0048006208 0.0023054264 0.004668232 + 212700 0.0052229435 0.0025578575 0.005128525 + 212800 0.0038931308 0.0026227374 0.0045388877 + 212900 0.0048290439 0.0026415281 0.0050183231 + 213000 0.0040905801 0.0029631218 0.0049764543 + 213100 0.005207265 0.0031066913 0.005669642 + 213200 0.0054019102 0.0027748876 0.0054336402 + 213300 0.0044333387 0.0029849175 0.0051669514 + 213400 0.0056501601 0.0034215949 0.0062025331 + 213500 0.0061760554 0.0039982134 0.0070379907 + 213600 0.0045489709 0.0038971774 0.006136124 + 213700 0.0048863296 0.0031860245 0.0055910149 + 213800 0.0050085949 0.0025913387 0.0050565065 + 213900 0.0051986788 0.0022305244 0.0047892491 + 214000 0.0055735953 0.0024720068 0.0052152607 + 214100 0.0037980273 0.0027517675 0.0046211091 + 214200 0.0050520706 0.002312817 0.004799383 + 214300 0.0050857961 0.0017696903 0.0042728556 + 214400 0.0060684553 0.0019088957 0.0048957135 + 214500 0.0044446644 0.0019350112 0.0041226195 + 214600 0.006092336 0.0023805274 0.005379099 + 214700 0.0052035114 0.0024779863 0.0050390895 + 214800 0.0048829249 0.0025147529 0.0049180675 + 214900 0.0047669341 0.0026790249 0.0050252502 + 215000 0.0047873677 0.0024137417 0.0047700242 + 215100 0.0066486351 0.0021263004 0.0053986755 + 215200 0.0045455448 0.0019261038 0.0041633642 + 215300 0.0049052148 0.0021954316 0.004609717 + 215400 0.0041021395 0.0028887951 0.0049078169 + 215500 0.0053038751 0.0025718828 0.0051823838 + 215600 0.0058534039 0.0021976474 0.0050786196 + 215700 0.003262341 0.0023300071 0.0039356906 + 215800 0.0051064175 0.0024531906 0.0049665054 + 215900 0.0051592426 0.0026491808 0.0051884955 + 216000 0.0053203134 0.0030577737 0.0056763655 + 216100 0.0053277381 0.0033275955 0.0059498415 + 216200 0.0042801 0.0031816935 0.0052883052 + 216300 0.0041623512 0.0027636796 0.0048123368 + 216400 0.0058105992 0.0026117987 0.005471703 + 216500 0.0053768073 0.0025606112 0.0052070086 + 216600 0.0051228059 0.0022271737 0.0047485547 + 216700 0.0059058162 0.0021608278 0.0050675967 + 216800 0.0039726736 0.0021441307 0.004099431 + 216900 0.0043721624 0.0025840483 0.004735972 + 217000 0.0056160388 0.0028437801 0.0056079242 + 217100 0.0041746786 0.0032536978 0.0053084224 + 217200 0.0057100735 0.0032289914 0.0060394182 + 217300 0.0043162838 0.0030216469 0.0051460678 + 217400 0.0043752374 0.002668579 0.0048220161 + 217500 0.0042170934 0.0023912275 0.0044668281 + 217600 0.0063328705 0.0020422916 0.0051592513 + 217700 0.0062497029 0.0019591966 0.0050352222 + 217800 0.0053580767 0.0022857659 0.0049229442 + 217900 0.0053639089 0.002351745 0.0049917939 + 218000 0.0055645868 0.0024061236 0.0051449436 + 218100 0.0051222358 0.0028660671 0.0053871675 + 218200 0.0049982641 0.0024891982 0.0049492814 + 218300 0.0059825879 0.0023176901 0.0052622451 + 218400 0.005143539 0.0029416527 0.0054732383 + 218500 0.0055190938 0.0027878516 0.0055042806 + 218600 0.006129199 0.0025430613 0.0055597765 + 218700 0.0046476328 0.0028899442 0.0051774509 + 218800 0.0038840204 0.0029759293 0.0048875956 + 218900 0.0051657211 0.0026541382 0.0051966415 + 219000 0.0034380395 0.0029766585 0.0046688186 + 219100 0.0043871508 0.0026438629 0.0048031637 + 219200 0.0042349797 0.0025555416 0.0046399457 + 219300 0.0045959531 0.0022516306 0.0045137013 + 219400 0.0039925205 0.0017821794 0.003747248 + 219500 0.0032141506 0.0018235224 0.0034054871 + 219600 0.0039302688 0.0019496116 0.0038840408 + 219700 0.0052048532 0.0020464329 0.0046081966 + 219800 0.0037366259 0.0019415147 0.0037806353 + 219900 0.003831393 0.0015200661 0.0034058299 + 220000 0.0040281887 0.0013973882 0.0033800124 + 220100 0.0061221965 0.0015689058 0.0045821744 + 220200 0.0030405005 0.0020696027 0.0035660991 + 220300 0.0045173747 0.0017877476 0.004011143 + 220400 0.0038068216 0.0015903681 0.0034640381 + 220500 0.0043229742 0.0017417515 0.0038694654 + 220600 0.0042954897 0.0018155923 0.0039297786 + 220700 0.0049732473 0.0024552979 0.0049030681 + 220800 0.0039199489 0.0027399926 0.0046693424 + 220900 0.0073803199 0.0024402571 0.0060727583 + 221000 0.003586343 0.0026747028 0.0044398561 + 221100 0.0057945914 0.0023872022 0.0052392277 + 221200 0.0055027712 0.0018946027 0.0046029979 + 221300 0.0044562983 0.0021319529 0.0043252872 + 221400 0.0062133198 0.0019380015 0.0049961198 + 221500 0.0059396047 0.0017425494 0.0046659485 + 221600 0.0056772919 0.0021063674 0.0049006595 + 221700 0.0042231859 0.0027231848 0.0048017841 + 221800 0.0069971396 0.0019467534 0.0053906581 + 221900 0.0047647337 0.00149565 0.0038407924 + 222000 0.0048914915 0.0013644292 0.0037719601 + 222100 0.005321636 0.0013088827 0.0039281255 + 222200 0.0042663514 0.0021165683 0.0042164131 + 222300 0.0033959772 0.0022480461 0.0039195036 + 222400 0.0041632543 0.0021762272 0.0042253289 + 222500 0.0047245586 0.0021173604 0.0044427291 + 222600 0.0048775399 0.0017432812 0.0041439454 + 222700 0.0034951236 0.0021196042 0.0038398603 + 222800 0.0058638408 0.0023959613 0.0052820705 + 222900 0.0054272464 0.0026363638 0.0053075867 + 223000 0.0049185603 0.0024817254 0.0049025793 + 223100 0.0050773088 0.0024038692 0.0049028571 + 223200 0.0054103988 0.0023483231 0.0050112537 + 223300 0.0043200682 0.0025139327 0.0046402163 + 223400 0.0052427547 0.0022273127 0.0048077311 + 223500 0.0052465395 0.0022672168 0.0048494979 + 223600 0.0044880346 0.002368036 0.0045769905 + 223700 0.0045494549 0.0022684947 0.0045076795 + 223800 0.0040233301 0.0020226378 0.0040028706 + 223900 0.0040900073 0.0016837016 0.0036967521 + 224000 0.0046923093 0.0021489467 0.0044584427 + 224100 0.0041836547 0.0023007104 0.0043598529 + 224200 0.0049110786 0.0021286982 0.0045458697 + 224300 0.0043506761 0.002204002 0.0043453504 + 224400 0.0042240932 0.0019477304 0.0040267763 + 224500 0.0042659728 0.0019181336 0.0040177921 + 224600 0.0043398124 0.0020081426 0.004144144 + 224700 0.004507153 0.0017996491 0.0040180134 + 224800 0.0044701452 0.0019725813 0.0041727309 + 224900 0.0039622704 0.0019842942 0.0039344742 + 225000 0.0061308817 0.0019529588 0.0049705021 + 225100 0.0049435145 0.0020911039 0.0045242399 + 225200 0.004093472 0.0022209585 0.0042357142 + 225300 0.0047675321 0.0018703171 0.0042168368 + 225400 0.0054186533 0.0019290268 0.0045960202 + 225500 0.0050741402 0.0025760999 0.0050735283 + 225600 0.0042325475 0.0029652791 0.0050484861 + 225700 0.0047659685 0.002169149 0.0045148991 + 225800 0.0044735046 0.0021195531 0.0043213561 + 225900 0.0048556388 0.0023854946 0.0047753793 + 226000 0.0044344359 0.0023214448 0.0045040187 + 226100 0.0046480913 0.0025863895 0.0048741219 + 226200 0.0067682057 0.0028617035 0.0061929298 + 226300 0.0047391087 0.0031847517 0.0055172818 + 226400 0.0041577996 0.0029053245 0.0049517415 + 226500 0.0048128696 0.0026742352 0.0050430694 + 226600 0.0036982291 0.0021646791 0.0039849013 + 226700 0.0048764169 0.0018070649 0.0042071763 + 226800 0.0052699491 0.0019498185 0.0045436215 + 226900 0.0047176152 0.001774989 0.0040969402 + 227000 0.0032664881 0.0021215201 0.0037292447 + 227100 0.0044379577 0.0020645635 0.0042488708 + 227200 0.0045471488 0.0023553554 0.0045934052 + 227300 0.0049479197 0.002573389 0.0050086932 + 227400 0.0042580597 0.0024427868 0.0045385505 + 227500 0.0049785047 0.0023167638 0.0047671216 + 227600 0.0050195967 0.0023385458 0.0048091286 + 227700 0.0054479636 0.002276985 0.0049584046 + 227800 0.0066448825 0.0021532774 0.0054238055 + 227900 0.0044228305 0.0021582146 0.0043350765 + 228000 0.0065803091 0.0020088199 0.0052475658 + 228100 0.0060904258 0.0021659211 0.0051635525 + 228200 0.0042738922 0.0022420018 0.0043455582 + 228300 0.004993816 0.0020883526 0.0045462465 + 228400 0.0045299657 0.0023619708 0.0045915633 + 228500 0.0041310785 0.0025303085 0.0045635737 + 228600 0.0046645032 0.0027388841 0.0050346943 + 228700 0.0050783726 0.0027031329 0.0052026444 + 228800 0.0048723473 0.0026635349 0.0050616434 + 228900 0.0051210643 0.0024312419 0.0049517657 + 229000 0.0056534064 0.0024600154 0.0052425514 + 229100 0.0065483176 0.0029636461 0.0061866462 + 229200 0.0065222087 0.002519589 0.0057297386 + 229300 0.0059642952 0.0020866457 0.0050221972 + 229400 0.0061439508 0.0025676517 0.0055916275 + 229500 0.0067820621 0.0026830015 0.0060210477 + 229600 0.0038758927 0.0024921968 0.0043998627 + 229700 0.0064483738 0.0022381942 0.0054120031 + 229800 0.0060546752 0.0018472046 0.0048272401 + 229900 0.005306472 0.0022029503 0.0048147294 + 230000 0.0051602156 0.0023345223 0.0048743159 + 230100 0.0053637798 0.0026126728 0.0052526581 + 230200 0.0048303598 0.0027153666 0.0050928092 + 230300 0.0055390956 0.0023667793 0.0050930529 + 230400 0.0069008046 0.002702245 0.0060987348 + 230500 0.005674929 0.0030255945 0.0058187236 + 230600 0.0038220683 0.0032918801 0.0051730543 + 230700 0.0058390829 0.0034674187 0.0063413423 + 230800 0.0060442338 0.0032144945 0.0061893908 + 230900 0.0049582871 0.0032287515 0.0056691584 + 231000 0.0060141024 0.0028696808 0.0058297468 + 231100 0.0044554257 0.0027249244 0.0049178293 + 231200 0.0051708668 0.002716268 0.005261304 + 231300 0.0048006639 0.002983935 0.0053467618 + 231400 0.00447391 0.0031280619 0.0053300645 + 231500 0.0045577149 0.0027811627 0.005024413 + 231600 0.0044139752 0.0027117444 0.0048842478 + 231700 0.0045026682 0.0020092596 0.0042254166 + 231800 0.0054919855 0.0017344951 0.0044375817 + 231900 0.0041387616 0.0023232467 0.0043602935 + 232000 0.0036803056 0.001968189 0.0037795894 + 232100 0.0059672175 0.0017298054 0.0046667953 + 232200 0.0032707783 0.0018709559 0.0034807921 + 232300 0.0045974806 0.001789405 0.0040522275 + 232400 0.0036469432 0.0022394379 0.0040344178 + 232500 0.0039472231 0.0026651405 0.0046079144 + 232600 0.005434308 0.0022587927 0.0049334912 + 232700 0.0057623437 0.0024269615 0.005263115 + 232800 0.0074961308 0.0024851743 0.0061746761 + 232900 0.0071901387 0.0026527301 0.0061916265 + 233000 0.0050607391 0.0024967284 0.0049875609 + 233100 0.0053620609 0.0023970829 0.0050362222 + 233200 0.0045476637 0.0023561432 0.0045944465 + 233300 0.0037525232 0.0024906652 0.0043376102 + 233400 0.0047688718 0.0024408783 0.0047880574 + 233500 0.0031299432 0.0025887748 0.0041292937 + 233600 0.0045164181 0.0024591527 0.0046820772 + 233700 0.0053150152 0.0021681933 0.0047841773 + 233800 0.004637423 0.0021773795 0.0044598611 + 233900 0.0053695921 0.002167214 0.0048100601 + 234000 0.0043348454 0.0022093939 0.0043429506 + 234100 0.004011328 0.0025255007 0.0044998262 + 234200 0.0052998864 0.0022559962 0.004864534 + 234300 0.0063518506 0.001817946 0.0049442474 + 234400 0.0050703705 0.0024368694 0.0049324424 + 234500 0.004706701 0.0025247229 0.0048413023 + 234600 0.0052302431 0.0023364061 0.0049106664 + 234700 0.0041092847 0.0021047635 0.004127302 + 234800 0.0039826386 0.0017951385 0.0037553434 + 234900 0.0062424634 0.0015996352 0.0046720976 + 235000 0.0052565368 0.0015346848 0.0041218866 + 235100 0.0049046889 0.0016930612 0.0041070877 + 235200 0.0036400599 0.0019723421 0.0037639341 + 235300 0.0046744425 0.0021098891 0.0044105913 + 235400 0.0051539142 0.0017594183 0.0042961104 + 235500 0.0037746039 0.0016242011 0.003482014 + 235600 0.0051648463 0.0017812158 0.0043232886 + 235700 0.0047729525 0.0023454259 0.0046946135 + 235800 0.0033649924 0.0023188302 0.0039750374 + 235900 0.0062172441 0.0021089836 0.0051690335 + 236000 0.004816518 0.0019992696 0.0043698996 + 236100 0.0052151793 0.002070719 0.0046375651 + 236200 0.004827451 0.0019135343 0.0042895453 + 236300 0.0050046961 0.0022186646 0.0046819134 + 236400 0.0045881808 0.0022662024 0.0045244476 + 236500 0.0051239845 0.0024099301 0.0049318913 + 236600 0.004602264 0.0023974703 0.0046626471 + 236700 0.0047128878 0.0024920603 0.0048116848 + 236800 0.0032384716 0.002523293 0.0041172283 + 236900 0.0048657456 0.0022385965 0.0046334556 + 237000 0.0046383124 0.0020388087 0.0043217281 + 237100 0.005574622 0.001893651 0.0046374103 + 237200 0.003168054 0.0017013078 0.0032605843 + 237300 0.0055563406 0.0018175233 0.0045522847 + 237400 0.0039793843 0.0020594735 0.0040180767 + 237500 0.0046518134 0.0020248512 0.0043144156 + 237600 0.004374617 0.0017693036 0.0039224354 + 237700 0.0050219449 0.0018428722 0.0043146107 + 237800 0.0048871638 0.0021417501 0.004547151 + 237900 0.0055150938 0.0021436014 0.0048580616 + 238000 0.0054367667 0.0019979912 0.0046738998 + 238100 0.0048788176 0.0019144875 0.0043157805 + 238200 0.0034208499 0.0020565788 0.0037402783 + 238300 0.0036257698 0.0021378522 0.0039224107 + 238400 0.0067556513 0.0018475876 0.0051726347 + 238500 0.003586729 0.0020164915 0.0037818347 + 238600 0.0068775855 0.0018754989 0.0052605605 + 238700 0.0048328396 0.0020861216 0.0044647848 + 238800 0.0061728932 0.0018529232 0.0048911441 + 238900 0.0043040098 0.0019173776 0.0040357574 + 239000 0.0043357825 0.0022716839 0.0044057018 + 239100 0.0048714117 0.0022363767 0.0046340247 + 239200 0.0058877048 0.0018485912 0.0047464459 + 239300 0.0032062995 0.0019814322 0.0035595327 + 239400 0.0043306548 0.0020342208 0.004165715 + 239500 0.0046305069 0.0023963576 0.0046754353 + 239600 0.0044101756 0.0025950626 0.0047656959 + 239700 0.0059885339 0.0021475971 0.0050950786 + 239800 0.0041349637 0.0024153231 0.0044505005 + 239900 0.006019093 0.0031009006 0.0060634229 + 240000 0.0062222551 0.0032156189 0.0062781351 + 240100 0.0068837101 0.0035459217 0.0069339978 + 240200 0.0070769059 0.0034775843 0.006960749 + 240300 0.0047264308 0.0031586594 0.0054849495 + 240400 0.0070571559 0.0023748236 0.0058482675 + 240500 0.0056444694 0.0025732561 0.0053513933 + 240600 0.0043331132 0.0025159805 0.0046486847 + 240700 0.0048812369 0.0023677523 0.0047702361 + 240800 0.0051870695 0.0022107441 0.0047637549 + 240900 0.0052767918 0.001995697 0.0045928679 + 241000 0.0041558792 0.0022979826 0.0043434544 + 241100 0.005156414 0.0020280011 0.0045659236 + 241200 0.0067894849 0.002462208 0.0058039076 + 241300 0.0041140169 0.0027553109 0.0047801786 + 241400 0.0057473376 0.0023666685 0.0051954362 + 241500 0.0043314787 0.0024565619 0.0045884616 + 241600 0.0055436011 0.0025640577 0.0052925488 + 241700 0.006488099 0.0024387671 0.0056321283 + 241800 0.0047686136 0.0027419827 0.0050890347 + 241900 0.0035681806 0.0029254163 0.0046816302 + 242000 0.0051391235 0.0026567797 0.0051861921 + 242100 0.0048716115 0.0021453854 0.0045431317 + 242200 0.0042724274 0.0023953815 0.0044982168 + 242300 0.0055093195 0.0026496059 0.0053612241 + 242400 0.0049881973 0.0027754248 0.0052305532 + 242500 0.0030932127 0.0026554965 0.0041779372 + 242600 0.006591986 0.0018831107 0.0051276038 + 242700 0.0052147612 0.0018969429 0.0044635832 + 242800 0.0065116712 0.0023513647 0.0055563279 + 242900 0.0045148103 0.0030660355 0.0052881688 + 243000 0.0073799916 0.0025790274 0.006211367 + 243100 0.0053290473 0.0031175444 0.0057404349 + 243200 0.0051171329 0.0028754983 0.0053940871 + 243300 0.0051409155 0.0025578671 0.0050881615 + 243400 0.0047165809 0.0021923363 0.0045137784 + 243500 0.0045166148 0.002121142 0.0043441634 + 243600 0.0040809112 0.0026735313 0.0046821048 + 243700 0.0051543951 0.0025845985 0.0051215273 + 243800 0.0064490971 0.0023334505 0.0055076155 + 243900 0.0051410772 0.0026519156 0.0051822895 + 244000 0.0039820685 0.0027639209 0.0047238452 + 244100 0.00467663 0.0027908214 0.0050926003 + 244200 0.0046588357 0.0028141759 0.0051071966 + 244300 0.005293506 0.0025865973 0.0051919948 + 244400 0.007410014 0.0023239121 0.0059710284 + 244500 0.0060935897 0.0024278533 0.0054270419 + 244600 0.0040435345 0.002851639 0.0048418161 + 244700 0.0050820046 0.0029799471 0.0054812462 + 244800 0.0074354578 0.0029476987 0.006607338 + 244900 0.0053798653 0.0029793821 0.0056272845 + 245000 0.005461727 0.0026410394 0.0053292332 + 245100 0.0054569366 0.0026636556 0.0053494916 + 245200 0.003503583 0.0021219611 0.0038463808 + 245300 0.004803962 0.0021641468 0.0045285969 + 245400 0.0055260245 0.0019720338 0.004691874 + 245500 0.0070330405 0.0019615817 0.0054231563 + 245600 0.0044170027 0.002300428 0.0044744215 + 245700 0.0055870428 0.0021603908 0.0049102635 + 245800 0.0059776788 0.0019954428 0.0049375816 + 245900 0.0052225416 0.0023577331 0.0049282027 + 246000 0.0073096844 0.002961027 0.0065587623 + 246100 0.006976596 0.0026136294 0.0060474228 + 246200 0.0047291107 0.0024682308 0.00479584 + 246300 0.0035398277 0.0022342451 0.0039765041 + 246400 0.0051353885 0.0021948366 0.0047224107 + 246500 0.0054684473 0.0025837802 0.0052752816 + 246600 0.0061479108 0.0029136241 0.0059395489 + 246700 0.0044727679 0.0027485025 0.0049499429 + 246800 0.0045592778 0.0025094564 0.0047534759 + 246900 0.0053064118 0.0024518521 0.0050636017 + 247000 0.0061524526 0.0024515267 0.005479687 + 247100 0.0051825215 0.0026882781 0.0052390504 + 247200 0.0052143843 0.0025116965 0.0050781512 + 247300 0.0053565922 0.0026009001 0.0052373479 + 247400 0.0053628231 0.0021800805 0.004819595 + 247500 0.0045375959 0.0021211071 0.0043544551 + 247600 0.0035183901 0.0021182138 0.0038499214 + 247700 0.0047370254 0.001590041 0.0039215457 + 247800 0.0058390555 0.0019137687 0.0047876788 + 247900 0.0037134827 0.001709548 0.0035372777 + 248000 0.0050337255 0.001700029 0.0041775658 + 248100 0.0037386078 0.0020601957 0.0039002917 + 248200 0.0054324972 0.0022723521 0.0049461594 + 248300 0.0047860707 0.0023921765 0.0047478207 + 248400 0.0036917857 0.002483896 0.0043009467 + 248500 0.0042347002 0.0022806585 0.004364925 + 248600 0.0056371569 0.0020586646 0.0048332028 + 248700 0.0038616582 0.0020865615 0.0039872214 + 248800 0.0049690029 0.0019674185 0.0044130996 + 248900 0.0060562505 0.0018561439 0.0048369547 + 249000 0.0037071369 0.0017740044 0.0035986108 + 249100 0.0046435369 0.0021335631 0.004419054 + 249200 0.0045768741 0.0026080068 0.004860687 + 249300 0.0057961662 0.0024776344 0.0053304349 + 249400 0.0040843161 0.0024293322 0.0044395815 + 249500 0.0052446971 0.0022759552 0.0048573296 + 249600 0.0046992647 0.0022456298 0.0045585492 + 249700 0.0048278528 0.0021651532 0.004541362 + 249800 0.0058364223 0.0022095797 0.0050821938 + 249900 0.0057887328 0.0018955162 0.0047446582 + 250000 0.005766292 0.0019312345 0.0047693313 + 250100 0.0044347727 0.0021503825 0.0043331222 + 250200 0.0057409838 0.0024672049 0.0052928453 + 250300 0.0044670368 0.0027981122 0.0049967319 + 250400 0.0044230751 0.0027211607 0.004898143 + 250500 0.0057820925 0.002541331 0.0053872047 + 250600 0.0051627471 0.0022660729 0.0048071125 + 250700 0.006222781 0.0017949222 0.0048576972 + 250800 0.0048515551 0.0020782094 0.0044660842 + 250900 0.0053778934 0.0020392427 0.0046861746 + 251000 0.0035470004 0.0023890874 0.0041348767 + 251100 0.0058639003 0.0025621387 0.0054482771 + 251200 0.0044575198 0.0024243884 0.004618324 + 251300 0.0041964307 0.0023136695 0.0043791002 + 251400 0.0052759725 0.0025327243 0.005129492 + 251500 0.0060932987 0.0027095021 0.0057085475 + 251600 0.0054235915 0.0027192669 0.0053886909 + 251700 0.0048087035 0.0031589222 0.005525706 + 251800 0.0055717805 0.0028770134 0.0056193741 + 251900 0.0064562737 0.0022667949 0.0054444921 + 252000 0.0055850782 0.0021761081 0.0049250138 + 252100 0.0042212292 0.0021828232 0.0042604594 + 252200 0.0048215953 0.002215147 0.004588276 + 252300 0.0055022284 0.0022217011 0.0049298291 + 252400 0.0053869711 0.0022784748 0.0049298746 + 252500 0.0052113896 0.0022338286 0.0047988094 + 252600 0.0047584188 0.0025935874 0.0049356217 + 252700 0.004885046 0.0024642652 0.0048686237 + 252800 0.0037774495 0.0021112627 0.0039704761 + 252900 0.0051623982 0.0018081986 0.0043490664 + 253000 0.0033831247 0.0018589365 0.0035240682 + 253100 0.0054786023 0.0017626771 0.0044591767 + 253200 0.0055143728 0.0021930637 0.0049071691 + 253300 0.0055880461 0.002934803 0.0056851695 + 253400 0.0061899165 0.0026872344 0.0057338339 + 253500 0.0053919807 0.0025861505 0.005240016 + 253600 0.0069050127 0.0025976196 0.0059961805 + 253700 0.0043969004 0.0027177493 0.0048818487 + 253800 0.0060593172 0.0032471949 0.006229515 + 253900 0.0054770114 0.0034515027 0.0061472192 + 254000 0.005677278 0.0027528802 0.0055471655 + 254100 0.0059649178 0.0021551076 0.0050909656 + 254200 0.0048490131 0.0026424101 0.0050290338 + 254300 0.0030850129 0.0029960545 0.0045144593 + 254400 0.0039100981 0.0028624729 0.0047869743 + 254500 0.0041339674 0.0027036415 0.0047383286 + 254600 0.0059359927 0.0023949706 0.005316592 + 254700 0.0054328699 0.0022170107 0.0048910013 + 254800 0.0061202254 0.0025467067 0.0055590052 + 254900 0.0051695256 0.003107667 0.0056520428 + 255000 0.0052321648 0.0028179227 0.0053931288 + 255100 0.0053902046 0.0024878739 0.0051408652 + 255200 0.0061044305 0.0021629863 0.0051675106 + 255300 0.0054170789 0.0025807149 0.0052469334 + 255400 0.0042852911 0.002962793 0.0050719597 + 255500 0.0046953618 0.0031960683 0.0055070667 + 255600 0.0046254968 0.0029824855 0.0052590972 + 255700 0.0053649263 0.0027370741 0.0053776238 + 255800 0.0049026614 0.0031016189 0.0055146476 + 255900 0.0051831572 0.0033466161 0.0058977013 + 256000 0.0047143739 0.0031897814 0.0055101373 + 256100 0.0054324992 0.0025118324 0.0051856406 + 256200 0.0046152598 0.0025538157 0.0048253889 + 256300 0.0048185045 0.0028945382 0.0052661459 + 256400 0.0035905472 0.0029428424 0.0047100649 + 256500 0.0045253579 0.0028312116 0.0050585362 + 256600 0.0047945979 0.0025714886 0.0049313297 + 256700 0.0042507765 0.0024655156 0.0045576947 + 256800 0.0052837562 0.0024614333 0.005062032 + 256900 0.0029970273 0.0026530506 0.00412815 + 257000 0.0049476461 0.0024544353 0.0048896049 + 257100 0.0057154753 0.0021078991 0.0049209846 + 257200 0.004822972 0.0018847068 0.0042585133 + 257300 0.0052251462 0.0019582799 0.0045300315 + 257400 0.0041542922 0.0021554507 0.0042001414 + 257500 0.0048590528 0.002090325 0.00448189 + 257600 0.0047565192 0.0021258705 0.0044669699 + 257700 0.0050121183 0.0023239571 0.004790859 + 257800 0.0048230951 0.0027104922 0.0050843593 + 257900 0.0073882235 0.0023333304 0.0059697217 + 258000 0.0048040541 0.0026207284 0.0049852238 + 258100 0.0057370765 0.0030749722 0.0058986895 + 258200 0.0086275468 0.002406991 0.0066533617 + 258300 0.0068190781 0.0022083534 0.0055646184 + 258400 0.0038955943 0.0029984438 0.0049158066 + 258500 0.0050790798 0.0023683648 0.0048682244 + 258600 0.0057060467 0.0019393257 0.0047477706 + 258700 0.0058761263 0.0021863165 0.0050784724 + 258800 0.0042695446 0.0024579352 0.0045593517 + 258900 0.0048734225 0.0022232974 0.004621935 + 259000 0.0064742108 0.0023051028 0.0054916284 + 259100 0.0055228109 0.0018554306 0.0045736891 + 259200 0.0046681449 0.001928608 0.0042262106 + 259300 0.006851663 0.0020977546 0.0054700575 + 259400 0.0060051478 0.0026387322 0.0055943909 + 259500 0.0066374892 0.0032712177 0.0065381069 + 259600 0.0053979837 0.0035836781 0.0062404982 + 259700 0.0056378245 0.0029352379 0.0057101046 + 259800 0.0046709741 0.0026555918 0.0049545868 + 259900 0.0053878537 0.0025585221 0.0052103563 + 260000 0.0041472709 0.0030544091 0.005095644 + 260100 0.0058015409 0.0032901529 0.0061455988 + 260200 0.0058043045 0.0028484159 0.005705222 + 260300 0.0063112964 0.0027237023 0.0058300435 + 260400 0.004888389 0.0028105416 0.0052165455 + 260500 0.005743362 0.0024645621 0.0052913731 + 260600 0.0063971611 0.0023468937 0.0054954965 + 260700 0.0060643796 0.0020915464 0.0050763582 + 260800 0.0053032794 0.0022447692 0.004854977 + 260900 0.0049412903 0.0026773427 0.005109384 + 261000 0.0051488793 0.0026011995 0.0051354135 + 261100 0.0050018153 0.0026049926 0.0050668236 + 261200 0.0047576989 0.0025007075 0.0048423874 + 261300 0.005488335 0.002368724 0.0050700138 + 261400 0.0033948108 0.0024873819 0.0041582653 + 261500 0.0054931755 0.0023500966 0.0050537689 + 261600 0.0045049483 0.0021238935 0.0043411727 + 261700 0.0053819848 0.0021026222 0.0047515678 + 261800 0.0037550445 0.0022476753 0.0040958613 + 261900 0.0042092584 0.0024831976 0.004554942 + 262000 0.0061032563 0.0025187791 0.0055227256 + 262100 0.0032646717 0.0034947116 0.0051015422 + 262200 0.0058171386 0.003345222 0.0062083448 + 262300 0.0051294092 0.0025496041 0.0050742352 + 262400 0.0069985607 0.0021288406 0.0055734447 + 262500 0.0053512462 0.0021857548 0.0048195713 + 262600 0.0056136203 0.002196112 0.0049590657 + 262700 0.0050849366 0.0020444571 0.0045471993 + 262800 0.0052005694 0.0016438204 0.0042034756 + 262900 0.0036698385 0.0019815514 0.0037878001 + 263000 0.0052594093 0.0017579142 0.0043465297 + 263100 0.0045832546 0.0021698059 0.0044256265 + 263200 0.005429286 0.0023872757 0.0050595024 + 263300 0.0065589654 0.0025425652 0.005770806 + 263400 0.0057144099 0.0026034921 0.0054160532 + 263500 0.0045003518 0.0022595255 0.0044745424 + 263600 0.007043766 0.0017513601 0.0052182137 + 263700 0.0058368479 0.0016774469 0.0045502705 + 263800 0.0034969649 0.0016830667 0.0034042291 + 263900 0.0034891345 0.0018228878 0.0035401962 + 264000 0.0040784466 0.0020991871 0.0041065476 + 264100 0.0051487519 0.0021269137 0.0046610651 + 264200 0.0051558638 0.0023399809 0.0048776326 + 264300 0.0050344344 0.0023833725 0.0048612582 + 264400 0.0063132187 0.0020069765 0.0051142638 + 264500 0.0058024096 0.0020529968 0.0049088703 + 264600 0.0034500529 0.0025446645 0.0042427374 + 264700 0.005475134 0.003125887 0.0058206795 + 264800 0.005652738 0.0031370399 0.0059192469 + 264900 0.0043293716 0.002756773 0.0048876356 + 265000 0.0046905052 0.0025610499 0.0048696579 + 265100 0.0050314013 0.0024782675 0.0049546603 + 265200 0.0060076556 0.0023303362 0.0052872292 + 265300 0.004414654 0.0024172735 0.004590111 + 265400 0.0044391079 0.0028101685 0.0049950419 + 265500 0.0055350488 0.0025610695 0.0052853514 + 265600 0.0046998035 0.0025062201 0.0048194046 + 265700 0.0045818552 0.0029235414 0.0051786732 + 265800 0.0068294118 0.0028823303 0.0062436814 + 265900 0.0058922634 0.0027458189 0.0056459173 + 266000 0.0039611817 0.0023991811 0.0043488253 + 266100 0.0050522317 0.002052021 0.0045386663 + 266200 0.0047255882 0.0019069089 0.0042327843 + 266300 0.0054821522 0.0021498777 0.0048481245 + 266400 0.0045789401 0.0023611946 0.0046148917 + 266500 0.0049732766 0.0024839127 0.0049316973 + 266600 0.0051742985 0.0020437673 0.0045904923 + 266700 0.0042534319 0.0022289814 0.0043224674 + 266800 0.0047598023 0.0021948578 0.004537573 + 266900 0.0043521559 0.0022447536 0.0043868303 + 267000 0.0030030503 0.0022235043 0.0037015682 + 267100 0.0056318508 0.0021111904 0.004883117 + 267200 0.0056486203 0.0018486505 0.0046288308 + 267300 0.0043919401 0.0016374544 0.0037991124 + 267400 0.0034201523 0.0018373823 0.0035207385 + 267500 0.0041631712 0.0015199241 0.0035689849 + 267600 0.0043853219 0.0015730807 0.0037314813 + 267700 0.0047349113 0.0020448675 0.0043753316 + 267800 0.0057064072 0.002052198 0.0048608203 + 267900 0.0048879024 0.0021724229 0.0045781874 + 268000 0.0036880069 0.0023244635 0.0041396544 + 268100 0.0046500657 0.0022488981 0.0045376023 + 268200 0.0062520963 0.0017204735 0.0047976771 + 268300 0.0041402314 0.0019649792 0.0040027494 + 268400 0.0048741269 0.0020965177 0.004495502 + 268500 0.0048367265 0.0020543502 0.0044349265 + 268600 0.0051142029 0.0022333307 0.0047504775 + 268700 0.0042878026 0.0023510373 0.0044614401 + 268800 0.0045307574 0.0021211832 0.0043511654 + 268900 0.00455761 0.0022488731 0.0044920717 + 269000 0.0049876702 0.0025762372 0.0050311061 + 269100 0.0060612968 0.0026941079 0.0056774025 + 269200 0.0047706622 0.0030300039 0.0053780643 + 269300 0.0055034628 0.0025282654 0.005237001 + 269400 0.0051665434 0.0025667272 0.0051096353 + 269500 0.0067853662 0.0025462185 0.0058858909 + 269600 0.0057552605 0.0024596427 0.00529231 + 269700 0.0046026785 0.0027242011 0.0049895819 + 269800 0.0047756766 0.0032599333 0.0056104616 + 269900 0.0056819028 0.0031370133 0.0059335748 + 270000 0.0038138629 0.0026166211 0.0044937567 + 270100 0.0052549669 0.0024476731 0.0050341021 + 270200 0.0046403825 0.0024317144 0.0047156527 + 270300 0.0051303407 0.0022715849 0.0047966745 + 270400 0.0052906216 0.0022821953 0.0048861731 + 270500 0.0044572239 0.0027448594 0.0049386493 + 270600 0.0057436359 0.0025424269 0.0053693727 + 270700 0.0035282271 0.0024938792 0.0042304285 + 270800 0.0062899179 0.0022304452 0.0053262642 + 270900 0.0040232843 0.0025252652 0.0045054754 + 271000 0.0057043653 0.0024694752 0.0052770925 + 271100 0.0047376736 0.0029535112 0.0052853349 + 271200 0.0071916728 0.0038766784 0.0074163299 + 271300 0.0038019027 0.0042604784 0.0061317274 + 271400 0.0062011796 0.0033202443 0.0063723874 + 271500 0.0061725106 0.0023913344 0.005429367 + 271600 0.0040400288 0.0024642975 0.0044527492 + 271700 0.0049995611 0.0029251118 0.0053858333 + 271800 0.0043864127 0.0030331718 0.0051921093 + 271900 0.0048245412 0.0027774713 0.0051520502 + 272000 0.0043961962 0.0026798624 0.0048436152 + 272100 0.0047323099 0.0027448225 0.0050740063 + 272200 0.0038012171 0.0022177537 0.0040886652 + 272300 0.0070157315 0.0018218668 0.0052749221 + 272400 0.0056453519 0.0019079812 0.0046865528 + 272500 0.0035721491 0.0024429576 0.0042011247 + 272600 0.004341789 0.002456488 0.0045934622 + 272700 0.0054913402 0.002143827 0.004846596 + 272800 0.00472976 0.0020590328 0.0043869615 + 272900 0.0052466068 0.0019148565 0.0044971708 + 273000 0.004114626 0.0019289496 0.0039541171 + 273100 0.0043257018 0.0024297984 0.0045588548 + 273200 0.0068234818 0.0023784841 0.0057369166 + 273300 0.0048907409 0.0023618315 0.004768993 + 273400 0.0052861533 0.0021219302 0.0047237087 + 273500 0.0048357096 0.0022009855 0.0045810613 + 273600 0.0045986824 0.0025838893 0.0048473033 + 273700 0.0063393364 0.0027712962 0.0058914383 + 273800 0.0062942563 0.0031424736 0.0062404279 + 273900 0.005184468 0.003038091 0.0055898213 + 274000 0.005938651 0.0027505581 0.0056734878 + 274100 0.0051104729 0.0026690997 0.0051844106 + 274200 0.0060224727 0.00277046 0.0057346458 + 274300 0.0061933058 0.0029951289 0.0060433966 + 274400 0.0074816655 0.0027840875 0.0064664698 + 274500 0.0062352194 0.0021505307 0.0052194277 + 274600 0.0039661179 0.0023385474 0.004290621 + 274700 0.0048211693 0.0024625605 0.0048354797 + 274800 0.0044796313 0.0023878641 0.0045926826 + 274900 0.0049559171 0.0022526569 0.0046918974 + 275000 0.0046755167 0.0022411409 0.0045423717 + 275100 0.0049049277 0.002756779 0.0051709231 + 275200 0.0046037389 0.0025833068 0.0048492096 + 275300 0.00522018 0.0024355984 0.0050049058 + 275400 0.0037799788 0.0024536307 0.004314089 + 275500 0.0069942519 0.0018332474 0.0052757308 + 275600 0.0039112852 0.0016966517 0.0036217374 + 275700 0.0051908681 0.0017787769 0.0043336573 + 275800 0.0063278127 0.0024873404 0.0056018107 + 275900 0.0040360013 0.0027921382 0.0047786076 + 276000 0.004500949 0.0021230842 0.004338395 + 276100 0.0041897723 0.0019974884 0.0040596419 + 276200 0.0046088875 0.0020858035 0.0043542403 + 276300 0.0072240131 0.002094959 0.0056505279 + 276400 0.0055478904 0.0022366082 0.0049672105 + 276500 0.0055579578 0.0026998819 0.0054354393 + 276600 0.0043318636 0.0024750289 0.004607118 + 276700 0.0064119674 0.0021705242 0.0053264144 + 276800 0.0053954591 0.0022477407 0.0049033182 + 276900 0.0052614567 0.0024098325 0.0049994557 + 277000 0.0048636238 0.0018590855 0.0042529003 + 277100 0.003520994 0.0016787062 0.0034116954 + 277200 0.004140638 0.0013561996 0.0033941699 + 277300 0.0042454512 0.0015178683 0.0036074263 + 277400 0.0054319431 0.001564842 0.0042383764 + 277500 0.0046889981 0.0016627103 0.0039705766 + 277600 0.0043380388 0.0022512305 0.0043863589 + 277700 0.0056332479 0.0023634649 0.0051360791 + 277800 0.0057502842 0.0016951058 0.0045253238 + 277900 0.0056749196 0.001981014 0.0047741385 + 278000 0.0036075385 0.0026654385 0.0044410239 + 278100 0.0052572262 0.0027417245 0.0053292656 + 278200 0.0042513624 0.002936908 0.0050293754 + 278300 0.0050386651 0.0030552669 0.0055352349 + 278400 0.0072303073 0.0021701343 0.0057288011 + 278500 0.0063783166 0.0022290795 0.0053684072 + 278600 0.0043831161 0.0024259208 0.0045832358 + 278700 0.0065951424 0.00194576 0.0051918067 + 278800 0.0054278298 0.001956374 0.004627884 + 278900 0.0053726837 0.0019995452 0.004643913 + 279000 0.0060749824 0.0016992056 0.004689236 + 279100 0.0061532296 0.0019178694 0.0049464121 + 279200 0.0057572341 0.002129961 0.0049635997 + 279300 0.0068822259 0.002405421 0.0057927666 + 279400 0.0054554468 0.0026650646 0.0053501674 + 279500 0.0048317323 0.0029288986 0.0053070168 + 279600 0.0065983663 0.0021639858 0.0054116192 + 279700 0.005003009 0.0021960955 0.004658514 + 279800 0.0042077492 0.002117982 0.0041889836 + 279900 0.0050582914 0.0028482785 0.0053379063 + 280000 0.0051803771 0.0031812829 0.0057309998 + 280100 0.0068770128 0.0025702195 0.0059549992 + 280200 0.004635281 0.0021733645 0.0044547919 + 280300 0.0047597789 0.0017885257 0.0041312294 + 280400 0.0049991935 0.0020213712 0.0044819118 + 280500 0.0049963018 0.0020851906 0.0045443079 + 280600 0.0044653591 0.0022407593 0.0044385532 + 280700 0.0049027816 0.0024770707 0.0048901585 + 280800 0.0045988823 0.0018999586 0.004163471 + 280900 0.0054186092 0.0016150068 0.0042819785 + 281000 0.0047496988 0.0021406007 0.0044783431 + 281100 0.0043663199 0.0024074713 0.0045565194 + 281200 0.0046968367 0.0021369448 0.0044486692 + 281300 0.0045476529 0.0017696397 0.0040079377 + 281400 0.0064500517 0.0015921606 0.0047667954 + 281500 0.0043363341 0.0020210274 0.0041553169 + 281600 0.0042955159 0.0022738612 0.0043880604 + 281700 0.0042434109 0.0018594373 0.0039479911 + 281800 0.0042175849 0.0019760324 0.0040518749 + 281900 0.0035388071 0.0025743888 0.0043161454 + 282000 0.0046843838 0.0023981728 0.004703768 + 282100 0.0056874711 0.0020478275 0.0048471296 + 282200 0.0058917464 0.0020042797 0.0049041237 + 282300 0.0045129028 0.0023344608 0.0045556552 + 282400 0.0057282285 0.0024930632 0.0053124257 + 282500 0.0066411478 0.0032656145 0.0065343044 + 282600 0.0069439342 0.003100206 0.0065179236 + 282700 0.004129887 0.0025246121 0.0045572909 + 282800 0.0053519687 0.0025942337 0.0052284058 + 282900 0.0041982288 0.0023332108 0.0043995266 + 283000 0.0044830169 0.0022258465 0.0044323314 + 283100 0.0063056098 0.0021801693 0.0052837116 + 283200 0.0050993641 0.002300683 0.0048105262 + 283300 0.004185084 0.002661567 0.0047214131 + 283400 0.0034945964 0.0023137574 0.0040337541 + 283500 0.0030590252 0.0022222645 0.0037278785 + 283600 0.0061361734 0.0023552407 0.0053753886 + 283700 0.004768576 0.0027039614 0.0050509949 + 283800 0.0045701799 0.0024720693 0.0047214548 + 283900 0.0049408708 0.0023043212 0.0047361561 + 284000 0.0049358636 0.002203072 0.0046324424 + 284100 0.0047068783 0.0018293951 0.0041460617 + 284200 0.0057271662 0.0019050539 0.0047238935 + 284300 0.0048602186 0.0020232597 0.0044153985 + 284400 0.0046399298 0.0017306248 0.0040143402 + 284500 0.004838342 0.0021547082 0.0045360796 + 284600 0.0053105939 0.0022403043 0.0048541123 + 284700 0.0049292796 0.0023180445 0.0047441743 + 284800 0.0052194381 0.0023143728 0.004883315 + 284900 0.0052130417 0.0023936567 0.0049594507 + 285000 0.0043442216 0.0024261814 0.004564353 + 285100 0.006233051 0.0024174475 0.0054852773 + 285200 0.0050914973 0.0019829213 0.0044888926 + 285300 0.0046185212 0.0019569279 0.0042301063 + 285400 0.0045282902 0.0019725166 0.0042012844 + 285500 0.0049141769 0.0018458871 0.0042645836 + 285600 0.0056971937 0.001808528 0.0046126155 + 285700 0.0049916766 0.0019151184 0.0043719592 + 285800 0.0053458969 0.0020794961 0.0047106797 + 285900 0.0054678514 0.0017456399 0.004436848 + 286000 0.0059128621 0.0017128373 0.0046230741 + 286100 0.0047479889 0.0023382417 0.0046751425 + 286200 0.006799768 0.0025924905 0.0059392513 + 286300 0.0053577271 0.0030510977 0.005688104 + 286400 0.0039977238 0.0026332707 0.0046009003 + 286500 0.0069462545 0.0025059442 0.0059248038 + 286600 0.0043150032 0.0029942664 0.0051180571 + 286700 0.00560429 0.0023949108 0.0051532723 + 286800 0.0055775448 0.0023973771 0.0051425749 + 286900 0.0063759399 0.0026614711 0.005799629 + 287000 0.0045365168 0.0026515829 0.0048843997 + 287100 0.0060747941 0.0027114281 0.0057013658 + 287200 0.004172689 0.0028114402 0.0048651856 + 287300 0.0045376667 0.0026113572 0.0048447401 + 287400 0.0060645654 0.0024012045 0.0053861078 + 287500 0.0052383311 0.0023951955 0.0049734366 + 287600 0.0055368562 0.0022310437 0.0049562151 + 287700 0.0052636091 0.0018138397 0.0044045223 + 287800 0.0062828453 0.0021714179 0.0052637558 + 287900 0.0042104707 0.0022595452 0.0043318863 + 288000 0.0057777004 0.0018355297 0.0046792416 + 288100 0.0051921985 0.0021810501 0.0047365853 + 288200 0.0058528773 0.0026100163 0.0054907293 + 288300 0.0058341614 0.0026436807 0.005515182 + 288400 0.0052182311 0.0026295384 0.0051978865 + 288500 0.004299066 0.0025109751 0.0046269216 + 288600 0.0043859205 0.0019025164 0.0040612117 + 288700 0.0052304298 0.0016545307 0.0042288828 + 288800 0.0037215091 0.001916718 0.0037483982 + 288900 0.0035523313 0.00209225 0.0038406631 + 289000 0.0040814138 0.0018715773 0.0038803982 + 289100 0.0040749802 0.0015220359 0.0035276902 + 289200 0.004563635 0.0016286313 0.0038747954 + 289300 0.0043571533 0.0018914432 0.0040359796 + 289400 0.0036877039 0.0021866842 0.004001726 + 289500 0.0033650594 0.0020512442 0.0037074844 + 289600 0.0052908587 0.0019624332 0.0045665277 + 289700 0.005062489 0.0020473023 0.0045389961 + 289800 0.0049112042 0.0022290304 0.0046462637 + 289900 0.0053688528 0.0022261331 0.0048686153 + 290000 0.0054714003 0.00238285 0.0050758048 + 290100 0.0054705891 0.0024137111 0.0051062667 + 290200 0.0048228561 0.0023046324 0.0046783819 + 290300 0.0048015411 0.0021683083 0.0045315668 + 290400 0.0050067351 0.0021795458 0.0046437982 + 290500 0.0058691785 0.0019661364 0.0048548727 + 290600 0.0047319972 0.002243638 0.0045726679 + 290700 0.0061390566 0.002591001 0.0056125679 + 290800 0.005353336 0.0027388023 0.0053736473 + 290900 0.0059276512 0.0031800288 0.0060975447 + 291000 0.0049850416 0.0029089602 0.0053625353 + 291100 0.0061668677 0.0020745749 0.0051098301 + 291200 0.0051890402 0.0016073654 0.0041613462 + 291300 0.0048298542 0.0019888237 0.0043660176 + 291400 0.0045341831 0.0022236302 0.0044552984 + 291500 0.0063239277 0.0019171301 0.0050296883 + 291600 0.0065558982 0.0023911498 0.0056178809 + 291700 0.0054762724 0.0028171959 0.0055125487 + 291800 0.005722823 0.0029778241 0.005794526 + 291900 0.004683525 0.0026245364 0.0049297089 + 292000 0.0057753239 0.0023005972 0.0051431395 + 292100 0.0046110268 0.0024812047 0.0047506945 + 292200 0.0048003443 0.0023713009 0.0047339703 + 292300 0.004681882 0.0024257536 0.0047301174 + 292400 0.0052092643 0.0023472006 0.0049111354 + 292500 0.0056114893 0.0024010271 0.005162932 + 292600 0.0047876668 0.0020866721 0.0044431019 + 292700 0.0053880281 0.0021662566 0.0048181767 + 292800 0.0052626616 0.0028133611 0.0054035773 + 292900 0.0051567001 0.0026750901 0.0052131534 + 293000 0.0050489134 0.0025886298 0.0050736419 + 293100 0.0038216528 0.0027921383 0.004673108 + 293200 0.005623423 0.0025697967 0.0053375752 + 293300 0.0065145971 0.0018053043 0.0050117076 + 293400 0.004938578 0.0019736633 0.0044043696 + 293500 0.0044552349 0.0024181591 0.00461097 + 293600 0.0060091635 0.0027142015 0.0056718367 + 293700 0.0045917332 0.0030291169 0.0052891106 + 293800 0.0063812958 0.0029222789 0.0060630729 + 293900 0.0061683918 0.0026194997 0.005655505 + 294000 0.0050876898 0.0025255452 0.0050296425 + 294100 0.0064434002 0.0025515397 0.0057229008 + 294200 0.0050263743 0.0022643841 0.0047383027 + 294300 0.0046935827 0.0018206187 0.0041307414 + 294400 0.0043713792 0.0019639927 0.0041155309 + 294500 0.0038691431 0.0023440425 0.0042483863 + 294600 0.0041443337 0.0023542929 0.0043940821 + 294700 0.0047761357 0.0023763704 0.0047271247 + 294800 0.0058036973 0.002577991 0.0054344983 + 294900 0.0032174384 0.0031578984 0.0047414814 + 295000 0.0041326157 0.0028312804 0.0048653023 + 295100 0.0047699002 0.0027233964 0.0050710817 + 295200 0.0053388613 0.0028745491 0.0055022699 + 295300 0.0044648536 0.003102311 0.0052998561 + 295400 0.0037315193 0.0037024038 0.005539011 + 295500 0.0047320782 0.0038539053 0.0061829751 + 295600 0.0047945335 0.0039841369 0.0063439463 + 295700 0.004501885 0.0035775416 0.0057933132 + 295800 0.0046577659 0.0033848838 0.0056773779 + 295900 0.0043655634 0.0031507441 0.0052994198 + 296000 0.0050425134 0.003369187 0.005851049 + 296100 0.0048280944 0.0039351316 0.0063114594 + 296200 0.0057850591 0.004011328 0.0068586618 + 296300 0.0047632502 0.0034987583 0.0058431705 + 296400 0.0045903924 0.0034994806 0.0057588143 + 296500 0.0054547929 0.0036914364 0.0063762173 + 296600 0.0056680887 0.0041171169 0.0069068793 + 296700 0.0044638722 0.0038960668 0.0060931289 + 296800 0.0046988564 0.0038288201 0.0061415385 + 296900 0.0053482637 0.0033676742 0.0060000227 + 297000 0.0049736501 0.0026883851 0.0051363535 + 297100 0.0048279476 0.002489462 0.0048657174 + 297200 0.0067151482 0.0023855199 0.0056906319 + 297300 0.0036861091 0.0028255392 0.004639796 + 297400 0.0037353804 0.0030810524 0.00491956 + 297500 0.005054177 0.0028445885 0.0053321912 + 297600 0.0041982683 0.003414521 0.0054808562 + 297700 0.0051665777 0.0029158035 0.0054587285 + 297800 0.0056267008 0.0029932491 0.0057626409 + 297900 0.0047894391 0.0033125728 0.0056698748 + 298000 0.0050938468 0.0029143325 0.0054214603 + 298100 0.006560443 0.0024815059 0.0057104739 + 298200 0.0064361012 0.0025811904 0.005748959 + 298300 0.0042625674 0.0029099596 0.005007942 + 298400 0.0057987348 0.0027819543 0.0056360191 + 298500 0.0041916361 0.0029221337 0.0049852046 + 298600 0.0040299317 0.0035713987 0.0055548807 + 298700 0.0047716656 0.0031948652 0.0055434194 + 298800 0.0054470654 0.0027142585 0.005395236 + 298900 0.0050687642 0.0029528231 0.0054476055 + 299000 0.0045661962 0.0030635187 0.0053109434 + 299100 0.0044955442 0.0028338279 0.0050464786 + 299200 0.0056666178 0.0027740768 0.0055631152 + 299300 0.0045737756 0.0023572754 0.0046084306 + 299400 0.0066380545 0.0021379187 0.0054050861 + 299500 0.0057717039 0.0025196605 0.005360421 + 299600 0.0054850732 0.0033670609 0.0060667454 + 299700 0.0059891698 0.0034666421 0.0064144367 + 299800 0.0055398687 0.0030127846 0.0057394387 + 299900 0.0048303464 0.0028326083 0.0052100444 + 300000 0.004407302 0.0023494468 0.0045186658 + 300100 0.00477637 0.0021841283 0.0045349979 + 300200 0.0048083762 0.0024451386 0.0048117612 + 300300 0.0056085078 0.002680185 0.0054406225 + 300400 0.0074233179 0.0023134305 0.0059670948 + 300500 0.0050704408 0.0026439586 0.0051395662 + 300600 0.0049634917 0.0022972331 0.0047402017 + 300700 0.0036546055 0.001960305 0.0037590562 + 300800 0.0049432606 0.0023915163 0.0048245274 + 300900 0.0053253321 0.0027894647 0.0054105265 + 301000 0.0053744909 0.002529552 0.0051748093 + 301100 0.0051558756 0.002276316 0.0048139735 + 301200 0.0050724895 0.0026398044 0.0051364204 + 301300 0.0054766116 0.0028522677 0.0055477875 + 301400 0.0082819788 0.0023352417 0.0064115281 + 301500 0.0070224256 0.0019944516 0.0054508018 + 301600 0.0050522409 0.0020378151 0.0045244649 + 301700 0.0049488574 0.0020421286 0.0044778943 + 301800 0.0050908856 0.0022183443 0.0047240145 + 301900 0.0041866625 0.0020786426 0.0041392656 + 302000 0.004739559 0.0017319415 0.0040646932 + 302100 0.0037248892 0.0023807207 0.0042140646 + 302200 0.0042094663 0.0022181837 0.0042900304 + 302300 0.0039733197 0.002222742 0.0041783603 + 302400 0.0047346361 0.0019066583 0.004236987 + 302500 0.0050623457 0.0017640479 0.0042556712 + 302600 0.0052462504 0.0016013883 0.0041835272 + 302700 0.0042686844 0.0015541398 0.0036551329 + 302800 0.0042301754 0.002104899 0.0041869385 + 302900 0.0033483017 0.0021384126 0.0037864048 + 303000 0.00442122 0.0018350766 0.0040111458 + 303100 0.0062186178 0.0017203988 0.0047811248 + 303200 0.0047340346 0.0019720364 0.0043020691 + 303300 0.004689168 0.0020101917 0.0043181416 + 303400 0.0045578588 0.0020445194 0.0042878406 + 303500 0.0043817621 0.0021850783 0.0043417268 + 303600 0.0035841208 0.0021516824 0.0039157419 + 303700 0.0058968622 0.0019518054 0.0048541672 + 303800 0.0033484182 0.0020529718 0.0037010214 + 303900 0.0050449146 0.0022799799 0.0047630238 + 304000 0.0036037773 0.0026255556 0.0043992897 + 304100 0.0062312177 0.0024235938 0.0054905213 + 304200 0.0041263208 0.0023744005 0.004405324 + 304300 0.0043984139 0.0020822054 0.0042470498 + 304400 0.0040928712 0.002374974 0.0043894341 + 304500 0.0055371047 0.0021760806 0.0049013743 + 304600 0.0044048041 0.0026272372 0.0047952267 + 304700 0.0058012126 0.0030399629 0.0058952472 + 304800 0.0050516176 0.0033354943 0.0058218374 + 304900 0.006836836 0.0025240536 0.0058890589 + 305000 0.0050902157 0.0025884308 0.0050937713 + 305100 0.0057291004 0.0023419568 0.0051617485 + 305200 0.0053228108 0.0020239837 0.0046438046 + 305300 0.0053955911 0.0019479152 0.0046035577 + 305400 0.0040193581 0.0021271401 0.0041054179 + 305500 0.0041849574 0.0018470205 0.0039068042 + 305600 0.0049514905 0.0018458081 0.0042828699 + 305700 0.0052652823 0.0019558431 0.0045473492 + 305800 0.0034979488 0.0022951898 0.0040168364 + 305900 0.0052354035 0.0025450889 0.0051218891 + 306000 0.0031370684 0.0024383519 0.0039823777 + 306100 0.0045551135 0.0023856564 0.0046276263 + 306200 0.0050935701 0.0021239503 0.0046309418 + 306300 0.0040784925 0.0022937909 0.0043011739 + 306400 0.0042540116 0.002397879 0.0044916504 + 306500 0.0052467446 0.002004087 0.0045864691 + 306600 0.0065488406 0.0020348609 0.0052581183 + 306700 0.0043596903 0.0029051269 0.0050509119 + 306800 0.0046645979 0.002972177 0.0052680338 + 306900 0.0047547176 0.0033045484 0.005644761 + 307000 0.0047681746 0.0031120867 0.0054589227 + 307100 0.0054867773 0.0026596551 0.0053601783 + 307200 0.0058500079 0.0025111704 0.0053904712 + 307300 0.0063982978 0.0027160652 0.0058652274 + 307400 0.0059730175 0.0028699288 0.0058097734 + 307500 0.0050090784 0.0026526477 0.0051180535 + 307600 0.0048612647 0.0024766319 0.0048692856 + 307700 0.0059681011 0.0028568836 0.0057943084 + 307800 0.0054060074 0.0030058971 0.0056666664 + 307900 0.0053494347 0.0029024838 0.0055354088 + 308000 0.0058962963 0.0023574841 0.0052595674 + 308100 0.005637914 0.0022458487 0.0050207595 + 308200 0.0049152158 0.0022066836 0.0046258914 + 308300 0.0056515714 0.0022415117 0.0050231445 + 308400 0.005359579 0.0020391035 0.0046770213 + 308500 0.0046308227 0.0019509338 0.0042301669 + 308600 0.0048121191 0.0020273697 0.0043958346 + 308700 0.0049875113 0.0022333949 0.0046881856 + 308800 0.0047266329 0.0020339881 0.0043603777 + 308900 0.0042208711 0.0021573432 0.0042348032 + 309000 0.0037077832 0.0023635859 0.0041885104 + 309100 0.0040910602 0.0023000052 0.0043135739 + 309200 0.0049812937 0.002431241 0.0048829715 + 309300 0.0055188262 0.002133444 0.0048497413 + 309400 0.0054182701 0.0021795727 0.0048463775 + 309500 0.0051889796 0.0022679366 0.0048218875 + 309600 0.0035676311 0.0023042104 0.0040601538 + 309700 0.0058294328 0.0020906737 0.0049598477 + 309800 0.0054913561 0.0021131805 0.0048159573 + 309900 0.0054057385 0.001950806 0.0046114429 + 310000 0.0039120885 0.0022033321 0.0041288131 + 310100 0.0043571969 0.0025734192 0.0047179771 + 310200 0.0059126183 0.0023678949 0.0052780118 + 310300 0.0043364634 0.0020560957 0.0041904488 + 310400 0.007548701 0.0018570945 0.0055724707 + 310500 0.0060028963 0.0016888139 0.0046433644 + 310600 0.0038766214 0.0018548754 0.0037629 + 310700 0.0052795658 0.0018261991 0.0044247354 + 310800 0.0056715525 0.0021457627 0.0049372299 + 310900 0.0056869259 0.0022381788 0.0050372126 + 311000 0.0053091031 0.002502259 0.0051153332 + 311100 0.0044708064 0.0022637002 0.0044641752 + 311200 0.0047870457 0.0015593789 0.003915503 + 311300 0.0044255125 0.0017381618 0.0039163437 + 311400 0.0050789394 0.0022633584 0.0047631489 + 311500 0.0055457542 0.0022889548 0.0050185058 + 311600 0.0061165704 0.0020854722 0.0050959717 + 311700 0.0046995428 0.0021023285 0.0044153847 + 311800 0.0051916003 0.0023305646 0.0048858054 + 311900 0.0041874877 0.002382633 0.0044436621 + 312000 0.0056161507 0.0019128454 0.0046770445 + 312100 0.0056300932 0.0017734256 0.0045444871 + 312200 0.0046984931 0.0019349466 0.0042474862 + 312300 0.0058892667 0.0019832623 0.0048818857 + 312400 0.0046603011 0.0018206541 0.0041143961 + 312500 0.0051248228 0.0016915406 0.0042139143 + 312600 0.003623361 0.0025082263 0.0042915993 + 312700 0.00436203 0.0027990309 0.0049459675 + 312800 0.0051419582 0.0022438221 0.0047746296 + 312900 0.0053865161 0.0019997127 0.0046508885 + 313000 0.0032852554 0.0020405837 0.0036575454 + 313100 0.0053423861 0.0021515747 0.0047810303 + 313200 0.0055723456 0.0022226532 0.004965292 + 313300 0.0043421363 0.0025150696 0.0046522148 + 313400 0.0041458275 0.0026320537 0.0046725782 + 313500 0.0054786839 0.0023822567 0.0050787965 + 313600 0.0052435321 0.0020792066 0.0046600076 + 313700 0.0034127325 0.0017954081 0.0034751124 + 313800 0.0061383639 0.001561761 0.004582987 + 313900 0.0045462185 0.0016283636 0.0038659555 + 314000 0.0052934339 0.0023337136 0.0049390756 + 314100 0.0036827914 0.0027374778 0.0045501017 + 314200 0.0051690441 0.0026335222 0.0051776611 + 314300 0.0045593208 0.0023326227 0.0045766634 + 314400 0.0048705022 0.0022515356 0.0046487359 + 314500 0.003898442 0.0022965814 0.0042153458 + 314600 0.0040825937 0.0023101072 0.0043195088 + 314700 0.006707449 0.0022111779 0.0055125005 + 314800 0.0046805158 0.002372918 0.0046766093 + 314900 0.0055302609 0.0027370076 0.0054589329 + 315000 0.0051276004 0.002757763 0.0052815038 + 315100 0.0049702658 0.0024483286 0.0048946313 + 315200 0.0037529144 0.002543446 0.0043905835 + 315300 0.0042338203 0.0028972502 0.0049810836 + 315400 0.0063067169 0.0029903698 0.006094457 + 315500 0.0047048896 0.0031393154 0.0054550032 + 315600 0.0051435142 0.0028387204 0.0053702938 + 315700 0.0062954677 0.0021036712 0.0052022218 + 315800 0.004237169 0.0023599097 0.0044453913 + 315900 0.004397165 0.0023196885 0.0044839182 + 316000 0.0043302122 0.0020323299 0.0041636062 + 316100 0.0049271998 0.0020654736 0.0044905797 + 316200 0.0053085607 0.0027064701 0.0053192773 + 316300 0.0044725613 0.0033813536 0.0055826924 + 316400 0.0046519413 0.0029610602 0.0052506875 + 316500 0.0054014814 0.0023263517 0.0049848933 + 316600 0.0044283178 0.002510769 0.0046903316 + 316700 0.0067717605 0.001844347 0.0051773229 + 316800 0.0044669332 0.0021077543 0.004306323 + 316900 0.0036547785 0.0025468883 0.0043457246 + 317000 0.0050171048 0.0023962162 0.0048655725 + 317100 0.0071787377 0.0024097465 0.0059430314 + 317200 0.0044148338 0.0020594222 0.0042323482 + 317300 0.0043079915 0.0021105472 0.0042308867 + 317400 0.0038560663 0.0024198225 0.0043177301 + 317500 0.0050116933 0.0027338187 0.0052005115 + 317600 0.0060326032 0.002347974 0.0053171459 + 317700 0.0054623456 0.0021779604 0.0048664587 + 317800 0.0048331001 0.0021761574 0.0045549488 + 317900 0.0063524084 0.0022339737 0.0053605498 + 318000 0.004901513 0.0024114101 0.0048238736 + 318100 0.0040332184 0.002412127 0.0043972267 + 318200 0.0029339959 0.0025659409 0.004010017 + 318300 0.0045585473 0.0023486087 0.0045922688 + 318400 0.0054704093 0.0020840383 0.0047765053 + 318500 0.0050797247 0.0021891589 0.0046893359 + 318600 0.0054525684 0.0019969945 0.0046806805 + 318700 0.0053762293 0.001726044 0.0043721569 + 318800 0.0054249501 0.0017018242 0.0043719169 + 318900 0.004330402 0.0019833171 0.0041146868 + 319000 0.0038360328 0.0021522708 0.0040403181 + 319100 0.0055684809 0.0020167165 0.0047574532 + 319200 0.004284045 0.0019434688 0.0040520222 + 319300 0.0063718334 0.0017816172 0.0049177539 + 319400 0.0051533336 0.0018074207 0.004343827 + 319500 0.0048021719 0.00171344 0.004077009 + 319600 0.0037444614 0.0018686862 0.0037116633 + 319700 0.0052170381 0.0018346701 0.0044024311 + 319800 0.0049567957 0.0015128261 0.0039524989 + 319900 0.005423445 0.0015575245 0.0042268763 + 320000 0.0047558433 0.0020817794 0.004422546 + 320100 0.0053541203 0.0022594276 0.0048946586 + 320200 0.0048890929 0.0027585231 0.0051648735 + 320300 0.0046885042 0.0027292093 0.0050368325 + 320400 0.0042832678 0.0024342388 0.0045424096 + 320500 0.006275035 0.0025951797 0.0056836735 + 320600 0.004313069 0.0029318888 0.0050547275 + 320700 0.0059163932 0.0027556207 0.0056675955 + 320800 0.0054062737 0.0029163113 0.0055772116 + 320900 0.0041848346 0.0025107955 0.0045705188 + 321000 0.0049411991 0.0020041346 0.004436131 + 321100 0.0077328449 0.0016776986 0.0054837082 + 321200 0.0057871649 0.0017208619 0.0045692321 + 321300 0.0060196546 0.0022030384 0.0051658372 + 321400 0.00461595 0.0026544299 0.0049263428 + 321500 0.0042537204 0.0027478067 0.0048414347 + 321600 0.0046237703 0.0026813013 0.0049570633 + 321700 0.0055182986 0.002393261 0.0051092986 + 321800 0.0047211208 0.0016341463 0.0039578229 + 321900 0.0061683206 0.0016900629 0.0047260332 + 322000 0.0047461837 0.0019787575 0.0043147697 + 322100 0.0060556065 0.0019963216 0.0049768154 + 322200 0.0055081249 0.0022298018 0.004940832 + 322300 0.0054487291 0.0021818264 0.0048636228 + 322400 0.0044364616 0.0023282912 0.0045118622 + 322500 0.0049557678 0.0022436216 0.0046827886 + 322600 0.0036995459 0.0019292417 0.0037501119 + 322700 0.0062886367 0.0019391413 0.0050343297 + 322800 0.0059683071 0.0022501036 0.0051876298 + 322900 0.0049483262 0.0021878231 0.0046233273 + 323000 0.0046811018 0.0020223173 0.0043262971 + 323100 0.0052530583 0.0021954349 0.0047809245 + 323200 0.0042666355 0.0024625931 0.0045625777 + 323300 0.0051179845 0.0027274651 0.0052464731 + 323400 0.0042851112 0.0028408075 0.0049498857 + 323500 0.0051256743 0.0024649027 0.0049876955 + 323600 0.0069470662 0.002182073 0.0056013322 + 323700 0.0052414917 0.0021300172 0.0047098139 + 323800 0.0046729298 0.0021642415 0.0044641991 + 323900 0.003672568 0.0022504011 0.0040579931 + 324000 0.0040985566 0.002603244 0.0046205023 + 324100 0.0055987003 0.0020428228 0.004798433 + 324200 0.0046573668 0.0020766897 0.0043689874 + 324300 0.0053773689 0.0021114389 0.0047581126 + 324400 0.0049274468 0.0021303746 0.0045556023 + 324500 0.0040833991 0.0022241856 0.0042339836 + 324600 0.0047327468 0.0022688538 0.0045982526 + 324700 0.0048887141 0.0020520794 0.0044582434 + 324800 0.0046422501 0.0021103133 0.0043951708 + 324900 0.0048881105 0.0023761989 0.0047820658 + 325000 0.0060047671 0.0025870226 0.0055424939 + 325100 0.0049180187 0.0027790555 0.0051996428 + 325200 0.0062007002 0.0023988109 0.005450718 + 325300 0.0044993526 0.0024316518 0.0046461769 + 325400 0.0055093535 0.0024568251 0.00516846 + 325500 0.0069679736 0.0026954358 0.0061249853 + 325600 0.0069193015 0.0022678818 0.0056734755 + 325700 0.0045540257 0.0020017747 0.0042432092 + 325800 0.0053570349 0.0021692353 0.004805901 + 325900 0.0053877121 0.0025044219 0.0051561865 + 326000 0.0046825941 0.0025691204 0.0048738347 + 326100 0.003925802 0.0022019042 0.0041341349 + 326200 0.0062582327 0.0015244106 0.0046046345 + 326300 0.0068347571 0.0020053268 0.0053693088 + 326400 0.0046983633 0.00297375 0.0052862258 + 326500 0.0058448115 0.0030711255 0.0059478687 + 326600 0.005139949 0.0027408719 0.0052706906 + 326700 0.0054095148 0.0026682707 0.0053307663 + 326800 0.0054034172 0.0026692949 0.0053287893 + 326900 0.0050380489 0.0030087552 0.0054884199 + 327000 0.0034580091 0.0030424687 0.0047444575 + 327100 0.0052446371 0.0024043662 0.004985711 + 327200 0.0046463652 0.0024948102 0.0047816931 + 327300 0.0038620132 0.002641501 0.0045423356 + 327400 0.0073741605 0.0025322087 0.0061616783 + 327500 0.0052571985 0.0027780421 0.0053655695 + 327600 0.005088172 0.0030493757 0.0055537103 + 327700 0.0065554774 0.0032792446 0.0065057686 + 327800 0.0052343162 0.0030574814 0.0056337464 + 327900 0.0049236987 0.0031555679 0.0055789509 + 328000 0.0052031062 0.0035526073 0.0061135112 + 328100 0.0060673871 0.0037342013 0.0067204934 + 328200 0.0050889049 0.0036389355 0.0061436309 + 328300 0.0050785826 0.0035460685 0.0060456833 + 328400 0.0045434383 0.0034408666 0.0056770901 + 328500 0.0052877579 0.0029696224 0.0055721908 + 328600 0.0050253347 0.0024848099 0.0049582168 + 328700 0.0052512171 0.0022022801 0.0047868635 + 328800 0.0049160892 0.0025730983 0.0049927359 + 328900 0.0050941844 0.0025926357 0.0050999296 + 329000 0.0039180984 0.0026692127 0.0045976517 + 329100 0.0054585344 0.002482941 0.0051695634 + 329200 0.0054954159 0.0026444515 0.0053492265 + 329300 0.0046143964 0.0025941152 0.0048652634 + 329400 0.006960367 0.0019194005 0.0053452061 + 329500 0.0047686944 0.0019079107 0.0042550025 + 329600 0.0051870621 0.0018777292 0.0044307363 + 329700 0.0059538034 0.0015264193 0.0044568069 + 329800 0.0043799686 0.0020161335 0.0041718993 + 329900 0.0052712923 0.0021590463 0.0047535105 + 330000 0.0053332301 0.0025410555 0.0051660047 + 330100 0.0046552418 0.0024851589 0.0047764107 + 330200 0.0048900717 0.0023225208 0.0047293529 + 330300 0.0053167511 0.0022525034 0.0048693418 + 330400 0.0048345322 0.002077708 0.0044572044 + 330500 0.0048050781 0.0019270586 0.004292058 + 330600 0.0047251509 0.002101988 0.0044276482 + 330700 0.0039152501 0.002329562 0.0042565992 + 330800 0.0046767587 0.002431382 0.0047332242 + 330900 0.0056838327 0.0022556699 0.0050531812 + 331000 0.0055205194 0.0021515436 0.0048686743 + 331100 0.0049053012 0.0020338647 0.0044481926 + 331200 0.0045840723 0.0019497666 0.0042059897 + 331300 0.0056883506 0.0018411301 0.0046408652 + 331400 0.0035325639 0.0021928754 0.0039315592 + 331500 0.005869627 0.0021434509 0.0050324079 + 331600 0.004183353 0.0023965949 0.0044555889 + 331700 0.0051743173 0.0021144378 0.0046611722 + 331800 0.0038044271 0.0017878303 0.0036603217 + 331900 0.0053013268 0.001670427 0.0042796739 + 332000 0.0047421602 0.002057254 0.0043912859 + 332100 0.0042269323 0.0024985037 0.004578947 + 332200 0.0053408182 0.0028982098 0.0055268937 + 332300 0.0051917881 0.00265377 0.0052091031 + 332400 0.0055172461 0.0022514795 0.0049669991 + 332500 0.0041866221 0.0026833936 0.0047439967 + 332600 0.0043529057 0.0029903164 0.0051327622 + 332700 0.0062293779 0.0020483112 0.0051143331 + 332800 0.0068322091 0.0018817668 0.0052444948 + 332900 0.0040134166 0.0018680803 0.0038434338 + 333000 0.0061292018 0.0022366792 0.0052533957 + 333100 0.004932516 0.0023471574 0.0047748801 + 333200 0.0061575874 0.0021419923 0.0051726799 + 333300 0.0050726641 0.0022762897 0.0047729916 + 333400 0.0054191051 0.00214659 0.0048138057 + 333500 0.0063655078 0.0017205742 0.0048535975 + 333600 0.0045410157 0.0018944772 0.0041295083 + 333700 0.0030479874 0.0022480072 0.0037481885 + 333800 0.004962038 0.0023021475 0.0047444006 + 333900 0.0057596988 0.0021670178 0.0050018696 + 334000 0.0049113554 0.0025308301 0.0049481378 + 334100 0.0039345305 0.0025575924 0.0044941191 + 334200 0.0048117365 0.0031461428 0.0055144194 + 334300 0.0051048097 0.0029536036 0.0054661272 + 334400 0.0068333567 0.0021771046 0.0055403973 + 334500 0.0052793974 0.0018210092 0.0044194626 + 334600 0.0056259121 0.0019640803 0.0047330839 + 334700 0.0053889992 0.0023503824 0.0050027805 + 334800 0.0044886898 0.0024747015 0.0046839786 + 334900 0.0047925746 0.0025418338 0.0049006791 + 335000 0.0044154385 0.0023696633 0.0045428869 + 335100 0.0047571411 0.0024285907 0.004769996 + 335200 0.003993589 0.0022499831 0.0042155777 + 335300 0.004287693 0.0020806816 0.0041910305 + 335400 0.0045631241 0.0024013919 0.0046473046 + 335500 0.0055096628 0.0024665395 0.0051783266 + 335600 0.0040940996 0.0027143798 0.0047294445 + 335700 0.0052403425 0.002967039 0.0055462701 + 335800 0.0056061618 0.0035106349 0.0062699176 + 335900 0.0075980496 0.0034431504 0.0071828154 + 336000 0.0032215472 0.0033426906 0.0049282959 + 336100 0.0047077911 0.0026971073 0.0050142232 + 336200 0.0047663834 0.0022553563 0.0046013106 + 336300 0.0039328458 0.0020954134 0.0040311109 + 336400 0.0042018264 0.0022164094 0.0042844958 + 336500 0.0037977169 0.0027396769 0.0046088657 + 336600 0.0042739423 0.0025487615 0.0046523425 + 336700 0.0059793975 0.0023591355 0.0053021202 + 336800 0.0035023616 0.0024340604 0.004157879 + 336900 0.0040055936 0.0026585124 0.0046300155 + 337000 0.0049780844 0.002325301 0.0047754519 + 337100 0.0043256106 0.0022734046 0.0044024161 + 337200 0.004248647 0.0021038438 0.0041949748 + 337300 0.0052712734 0.0024560847 0.0050505396 + 337400 0.0069396545 0.0024496106 0.0058652219 + 337500 0.0060548065 0.0025200127 0.0055001128 + 337600 0.0045335519 0.002500282 0.0047316395 + 337700 0.0057117138 0.0024246632 0.0052358974 + 337800 0.0042014384 0.0022945544 0.0043624499 + 337900 0.004430173 0.0023453638 0.0045258396 + 338000 0.005024134 0.0027260699 0.0051988859 + 338100 0.0059976787 0.0027225217 0.0056745042 + 338200 0.0037443738 0.0027902104 0.0046331444 + 338300 0.0075222074 0.0021777655 0.0058801019 + 338400 0.006247184 0.001938065 0.0050128508 + 338500 0.0060858226 0.0023556697 0.0053510355 + 338600 0.0068085553 0.0025197505 0.0058708363 + 338700 0.0056970965 0.0025558051 0.0053598448 + 338800 0.0045576536 0.0023970817 0.0046403019 + 338900 0.0057812553 0.0025753358 0.0054207973 + 339000 0.0048550782 0.0025046226 0.0048942315 + 339100 0.0052733407 0.0024456583 0.0050411307 + 339200 0.0057388997 0.0020362481 0.0048608628 + 339300 0.0043296026 0.001772134 0.0039031103 + 339400 0.0038653054 0.0017886144 0.0036910694 + 339500 0.0051677407 0.0016747718 0.0042182692 + 339600 0.0049165801 0.0020145517 0.0044344309 + 339700 0.0045459704 0.0022275759 0.0044650457 + 339800 0.0056806909 0.0020143637 0.0048103287 + 339900 0.0052448513 0.0016424735 0.0042239237 + 340000 0.0052300848 0.001790711 0.0043648934 + 340100 0.0042548148 0.0020412132 0.0041353798 + 340200 0.004370051 0.0021633834 0.0043142679 + 340300 0.005587929 0.0023610796 0.0051113884 + 340400 0.0065133915 0.002703027 0.0059088369 + 340500 0.0043944002 0.0025235791 0.004686448 + 340600 0.005600272 0.0024071242 0.0051635081 + 340700 0.005864293 0.0020337677 0.0049200994 + 340800 0.004874457 0.0020398375 0.0044389843 + 340900 0.0056183186 0.0022348228 0.005000089 + 341000 0.0056199942 0.0022891475 0.0050552384 + 341100 0.0053342145 0.0018592687 0.0044847024 + 341200 0.0045659325 0.0017646364 0.0040119313 + 341300 0.003986842 0.0017677218 0.0037299956 + 341400 0.0047341378 0.0015510869 0.0038811704 + 341500 0.0044615818 0.0021497669 0.0043457017 + 341600 0.0050248061 0.0019984824 0.0044716292 + 341700 0.0040796134 0.002259972 0.0042679067 + 341800 0.0056162977 0.0021136203 0.0048778918 + 341900 0.0050670342 0.0025915947 0.0050855256 + 342000 0.0056804688 0.0025376988 0.0053335546 + 342100 0.0046931583 0.0023418552 0.0046517691 + 342200 0.0050276846 0.0018057045 0.004280268 + 342300 0.0052501665 0.0018632587 0.004447325 + 342400 0.0063160445 0.0019544946 0.0050631728 + 342500 0.0041530206 0.0021098871 0.004153952 + 342600 0.0062532956 0.0022192512 0.0052970452 + 342700 0.0058333135 0.0021487073 0.0050197913 + 342800 0.0051613759 0.0022681408 0.0048085055 + 342900 0.0059367913 0.0020783207 0.0050003351 + 343000 0.005200571 0.0021443554 0.0047040115 + 343100 0.0054280202 0.002408529 0.0050801326 + 343200 0.0049806026 0.0023304687 0.0047818591 + 343300 0.0054342149 0.0027119661 0.0053866188 + 343400 0.0063576618 0.0029670865 0.0060962482 + 343500 0.0053713221 0.0029423801 0.0055860777 + 343600 0.0041584408 0.0030906259 0.0051373585 + 343700 0.0032876152 0.0025705187 0.0041886418 + 343800 0.0050104163 0.0024429653 0.0049090296 + 343900 0.0048543915 0.0021944261 0.0045836969 + 344000 0.0048703942 0.0019176586 0.0043148057 + 344100 0.003295204 0.002284444 0.0039063022 + 344200 0.0055771511 0.0025991401 0.0053441441 + 344300 0.0042652153 0.0024363283 0.004535614 + 344400 0.0062176097 0.0021150784 0.0051753082 + 344500 0.0050678934 0.0021044766 0.0045988304 + 344600 0.0047160249 0.0020509256 0.0043720941 + 344700 0.0046508414 0.0023662449 0.0046553309 + 344800 0.0051567984 0.0018469929 0.0043851046 + 344900 0.004570061 0.0021653553 0.0044146822 + 345000 0.003046877 0.0022178712 0.0037175059 + 345100 0.0057348254 0.0022616528 0.0050842621 + 345200 0.006161358 0.0023404022 0.0053729456 + 345300 0.0058887984 0.0022254971 0.0051238901 + 345400 0.0044436968 0.002257732 0.004444864 + 345500 0.0042144354 0.0023213119 0.0043956043 + 345600 0.0057327721 0.0021188182 0.0049404169 + 345700 0.0052592935 0.0020069359 0.0045954945 + 345800 0.0042459225 0.0019016069 0.0039913969 + 345900 0.0052239414 0.0019851562 0.0045563148 + 346000 0.0061328181 0.0017614999 0.0047799964 + 346100 0.0052357636 0.0022311453 0.0048081227 + 346200 0.0045645144 0.0021838692 0.0044304662 + 346300 0.0037821052 0.0020397909 0.0039012958 + 346400 0.0043074193 0.0018144091 0.003934467 + 346500 0.0045143135 0.001417883 0.0036397717 + 346600 0.0055195658 0.0013540051 0.0040706664 + 346700 0.0047593025 0.0017194118 0.004061881 + 346800 0.0039306834 0.0016931342 0.0036277674 + 346900 0.0046604632 0.0017326507 0.0040264725 + 347000 0.0053054693 0.0016788032 0.0042900889 + 347100 0.0042388825 0.0021964062 0.0042827312 + 347200 0.0045697501 0.0023196422 0.004568816 + 347300 0.0034768158 0.0025364478 0.004247693 + 347400 0.0053914204 0.0022946437 0.0049482335 + 347500 0.0052014527 0.0019618516 0.0045219416 + 347600 0.0045722789 0.0015520863 0.0038025048 + 347700 0.0051123531 0.0015106333 0.0040268696 + 347800 0.0049361696 0.0017032092 0.0041327302 + 347900 0.005568933 0.0019522179 0.0046931771 + 348000 0.0051310638 0.0017643202 0.0042897656 + 348100 0.0039881148 0.0018777774 0.0038406777 + 348200 0.0035851959 0.0020266836 0.0037912722 + 348300 0.002952394 0.0022995776 0.003752709 + 348400 0.0039129392 0.0023289081 0.0042548078 + 348500 0.0064633647 0.0028891802 0.0060703675 + 348600 0.0048935115 0.0031469066 0.0055554318 + 348700 0.006335867 0.0024411307 0.0055595652 + 348800 0.0061243203 0.0024221811 0.0054364951 + 348900 0.0042463709 0.0022673099 0.0043573205 + 349000 0.0045989837 0.0022633951 0.0045269574 + 349100 0.0037373698 0.0025027384 0.0043422251 + 349200 0.0039409397 0.0025641848 0.004503866 + 349300 0.0045460844 0.0020147025 0.0042522284 + 349400 0.0044503 0.0016873567 0.0038777387 + 349500 0.0059720428 0.0017295309 0.0046688957 + 349600 0.0056155027 0.0022519698 0.0050158501 + 349700 0.0047371619 0.0026709878 0.0050025597 + 349800 0.0048362076 0.0023802091 0.0047605301 + 349900 0.0057864608 0.0021830239 0.0050310476 + 350000 0.0052236517 0.0024527568 0.0050237728 + 350100 0.004443983 0.0023268555 0.0045141284 + 350200 0.0042408303 0.0018857004 0.0039729841 + 350300 0.0047812553 0.0018573259 0.0042106 + 350400 0.0045467398 0.0021199094 0.0043577579 + 350500 0.0066430437 0.0019432182 0.0052128412 + 350600 0.0063660177 0.0016070519 0.0047403262 + 350700 0.0065046781 0.0022041933 0.0054057145 + 350800 0.0046062013 0.0025287184 0.0047958331 + 350900 0.0047136967 0.0023056726 0.0046256952 + 351000 0.0037208199 0.0024926689 0.00432401 + 351100 0.0053651181 0.0020464525 0.0046870965 + 351200 0.0070890549 0.002316582 0.0058057262 + 351300 0.0056898337 0.003073965 0.0058744301 + 351400 0.0050563954 0.0034530042 0.0059416988 + 351500 0.0051013005 0.0031434943 0.0056542907 + 351600 0.0048574345 0.0027764805 0.005167249 + 351700 0.0048242624 0.0022667373 0.004641179 + 351800 0.0065455496 0.0015948543 0.004816492 + 351900 0.0047199093 0.0016903909 0.0040134713 + 352000 0.0067600009 0.0019906811 0.0053178691 + 352100 0.0045308667 0.0021729548 0.0044029907 + 352200 0.0042702607 0.0022084932 0.0043102622 + 352300 0.0037805789 0.0023423166 0.0042030703 + 352400 0.0049377228 0.0021132711 0.0045435566 + 352500 0.0041337811 0.0022709297 0.004305525 + 352600 0.0037402035 0.0027041041 0.0045449855 + 352700 0.0046461666 0.0024632001 0.0047499853 + 352800 0.0040061669 0.0026069994 0.0045787847 + 352900 0.0039695487 0.0028137069 0.0047674691 + 353000 0.0047639571 0.0026280765 0.0049728367 + 353100 0.0050503369 0.002767478 0.0052531907 + 353200 0.0041564164 0.0027499747 0.0047957109 + 353300 0.0070587247 0.0027295157 0.0062037317 + 353400 0.0059001183 0.0027995774 0.0057035418 + 353500 0.0053257885 0.0022998181 0.0049211046 + 353600 0.0047305707 0.0023745987 0.0047029265 + 353700 0.0050102512 0.0028648263 0.0053308093 + 353800 0.0056849573 0.0024770559 0.0052751208 + 353900 0.0044813979 0.0022631815 0.0044688696 + 354000 0.0055161576 0.0023909407 0.0051059245 + 354100 0.0048404168 0.0022772173 0.00465961 + 354200 0.0057038953 0.0015820519 0.0043894378 + 354300 0.0043058737 0.001735639 0.0038549362 + 354400 0.0042045104 0.0015723333 0.0036417408 + 354500 0.0043803684 0.0015700105 0.003725973 + 354600 0.0050025429 0.0019000321 0.0043622212 + 354700 0.004157403 0.001746301 0.0037925228 + 354800 0.0060940671 0.0018859622 0.0048853859 + 354900 0.0044883981 0.001880682 0.0040898155 + 355000 0.0051495155 0.0017852587 0.0043197859 + 355100 0.0053839798 0.0017588497 0.0044087773 + 355200 0.0068927923 0.0021738583 0.0055664045 + 355300 0.0036031045 0.0032279987 0.0050014017 + 355400 0.005480126 0.0027975742 0.0054948237 + 355500 0.0053967714 0.0021242724 0.0047804958 + 355600 0.0053995162 0.0016477232 0.0043052976 + 355700 0.0057097148 0.0014781684 0.0042884187 + 355800 0.0058772949 0.0013284102 0.0042211413 + 355900 0.0057805829 0.0015749209 0.0044200515 + 356000 0.0031881402 0.0017178125 0.0032869753 + 356100 0.0044083241 0.001687507 0.003857229 + 356200 0.0045478118 0.0017810036 0.0040193797 + 356300 0.0048317708 0.0016252077 0.0040033449 + 356400 0.0057608244 0.0017447128 0.0045801185 + 356500 0.0052239484 0.0018080834 0.0043792455 + 356600 0.0049041803 0.0020249336 0.0044387098 + 356700 0.0049211642 0.0022583051 0.0046804406 + 356800 0.005101814 0.0028033816 0.0053144307 + 356900 0.005559252 0.0025624363 0.0052986307 + 357000 0.0056867421 0.0026256587 0.005424602 + 357100 0.0046447779 0.0029195852 0.0052056868 + 357200 0.0051405217 0.0031960105 0.005726111 + 357300 0.0044273431 0.0031255901 0.005304673 + 357400 0.0048561252 0.0029612265 0.0053513507 + 357500 0.0046381398 0.0024819059 0.0047647403 + 357600 0.0040553696 0.0021980486 0.0041940508 + 357700 0.0043534115 0.002515168 0.0046578627 + 357800 0.0038247247 0.0028892718 0.0047717535 + 357900 0.0038564116 0.002645514 0.0045435916 + 358000 0.0038190195 0.0023736503 0.0042533239 + 358100 0.00383418 0.0020918592 0.0039789947 + 358200 0.0051289665 0.0023491995 0.0048736127 + 358300 0.0054105038 0.0022878658 0.0049508481 + 358400 0.0051548996 0.0022956278 0.004832805 + 358500 0.005582117 0.0026474914 0.0053949397 + 358600 0.0051827846 0.0031447863 0.0056956881 + 358700 0.0048289959 0.0032998477 0.0056766191 + 358800 0.0045535349 0.0031330255 0.0053742185 + 358900 0.0049885472 0.0027565335 0.0052118341 + 359000 0.0042926172 0.0024316256 0.0045443981 + 359100 0.0039553894 0.0025613879 0.0045081811 + 359200 0.0058890794 0.0026341857 0.005532717 + 359300 0.0051335292 0.0026376642 0.0051643231 + 359400 0.0042050352 0.0027508188 0.0048204846 + 359500 0.0051651838 0.0027907153 0.0053329542 + 359600 0.0059861306 0.002556911 0.0055032097 + 359700 0.0035331462 0.0023967432 0.0041357136 + 359800 0.0044701602 0.0026125734 0.0048127304 + 359900 0.0046197256 0.0027209638 0.004994735 + 360000 0.003826488 0.0025254866 0.0044088362 + 360100 0.0057010919 0.0029236803 0.0057296865 + 360200 0.0062217937 0.002596345 0.0056586341 + 360300 0.0050082644 0.0021212355 0.0045862407 + 360400 0.0063035736 0.0022942297 0.0053967698 + 360500 0.0051811312 0.0023572081 0.0049072961 + 360600 0.0053847567 0.002264755 0.0049150649 + 360700 0.0043525426 0.0024928382 0.0046351052 + 360800 0.0035449933 0.0028026614 0.0045474627 + 360900 0.0045761792 0.0029321144 0.0051844526 + 361000 0.006418951 0.0024244741 0.0055838015 + 361100 0.0048888227 0.0023515354 0.0047577528 + 361200 0.005590229 0.0025751538 0.0053265946 + 361300 0.0045680386 0.0025977709 0.0048461024 + 361400 0.0043073006 0.0025119767 0.0046319762 + 361500 0.0051932604 0.0026035312 0.0051595891 + 361600 0.0051029719 0.0028634654 0.0053750844 + 361700 0.0049703706 0.0030584263 0.0055047806 + 361800 0.0053682149 0.0030109239 0.0056530921 + 361900 0.0046340989 0.0026149764 0.0048958219 + 362000 0.0044337144 0.0028667231 0.0050489419 + 362100 0.0037900896 0.0029358974 0.0048013321 + 362200 0.0045572918 0.0025977653 0.0048408074 + 362300 0.0051541845 0.002507614 0.0050444392 + 362400 0.0036798969 0.0029684042 0.0047796034 + 362500 0.0053942301 0.0032072582 0.0058622308 + 362600 0.0059965458 0.0030234627 0.0059748876 + 362700 0.0055647085 0.002921344 0.005660224 + 362800 0.0068377821 0.0029774723 0.0063429432 + 362900 0.0040328601 0.0034893948 0.0054743182 + 363000 0.0040211106 0.0030535168 0.0050326572 + 363100 0.0044453628 0.0025806379 0.0047685899 + 363200 0.0046861453 0.0026920287 0.0049984908 + 363300 0.003920987 0.0030635274 0.0049933881 + 363400 0.0053557601 0.0029157199 0.0055517581 + 363500 0.0046297417 0.0029025019 0.0051812029 + 363600 0.0054474366 0.0028309299 0.0055120901 + 363700 0.0032631435 0.0027046737 0.0043107522 + 363800 0.0050650548 0.0027002807 0.0051932373 + 363900 0.0044619191 0.0029004621 0.0050965629 + 364000 0.0042331362 0.0028459578 0.0049294545 + 364100 0.0055407869 0.0025089149 0.0052360209 + 364200 0.0039098862 0.0022996242 0.0042240213 + 364300 0.0052674167 0.0018408621 0.0044334187 + 364400 0.0044423689 0.0024026902 0.0045891687 + 364500 0.0079041322 0.00280496 0.0066952751 + 364600 0.0051143194 0.0026418296 0.0051590337 + 364700 0.0047828604 0.0029699388 0.0053240029 + 364800 0.0056099862 0.0024971838 0.0052583489 + 364900 0.0068162944 0.0022217465 0.0055766413 + 365000 0.0056810363 0.0026367662 0.0054329012 + 365100 0.0065621524 0.0024227694 0.0056525788 + 365200 0.0043264355 0.0026420779 0.0047714954 + 365300 0.0061444505 0.0024775777 0.0055017994 + 365400 0.0051151466 0.0021545518 0.004672163 + 365500 0.0037642577 0.0018100691 0.0036627896 + 365600 0.0041892358 0.001437979 0.0034998685 + 365700 0.0044815934 0.0018826293 0.0040884136 + 365800 0.004227186 0.0023346047 0.0044151729 + 365900 0.0050893539 0.0020157002 0.0045206166 + 366000 0.0067765342 0.0016351577 0.0049704831 + 366100 0.004503594 0.0016687757 0.0038853884 + 366200 0.0054952026 0.0017288319 0.0044335019 + 366300 0.0045206345 0.0021248622 0.004349862 + 366400 0.0048190603 0.0021468052 0.0045186864 + 366500 0.0034764003 0.0019209508 0.0036319915 + 366600 0.004070208 0.0021028907 0.0041061962 + 366700 0.0044960444 0.0018028436 0.0040157405 + 366800 0.0049959761 0.0014927447 0.0039517017 + 366900 0.0058464971 0.0017464698 0.0046240426 + 367000 0.0052557459 0.0024559809 0.0050427934 + 367100 0.0056219633 0.0025583438 0.0053254039 + 367200 0.0056735324 0.0018656336 0.0046580754 + 367300 0.0046061308 0.0019960168 0.0042630968 + 367400 0.0054879805 0.0018296945 0.0045308099 + 367500 0.0048690481 0.0019543268 0.0043508114 + 367600 0.0045085157 0.0024236125 0.0046426475 + 367700 0.0053453336 0.0028186949 0.0054496013 + 367800 0.0066653883 0.0023978067 0.0056784275 + 367900 0.0057930777 0.0021632049 0.0050144853 + 368000 0.0052863626 0.0022370954 0.004838977 + 368100 0.0061681137 0.0025777265 0.005613595 + 368200 0.0041789828 0.0026862845 0.0047431276 + 368300 0.0053900043 0.0028459017 0.0054987944 + 368400 0.0048330578 0.0026487085 0.0050274791 + 368500 0.0049339107 0.0025886978 0.005017107 + 368600 0.0074057061 0.0018744803 0.0055194763 + 368700 0.0037564702 0.0021013434 0.0039502311 + 368800 0.0040380378 0.002094915 0.0040823867 + 368900 0.0061492214 0.0020928831 0.005119453 + 369000 0.0044535626 0.0025959766 0.0047879645 + 369100 0.0044467504 0.0026116317 0.0048002667 + 369200 0.0042535156 0.0021720853 0.0042656125 + 369300 0.0058457148 0.0021052312 0.004982419 + 369400 0.0048374549 0.0027433288 0.0051242636 + 369500 0.0063571235 0.0030965832 0.0062254799 + 369600 0.0054989072 0.0027768044 0.0054832978 + 369700 0.0052306424 0.0023624463 0.0049369031 + 369800 0.0048024356 0.0023000117 0.0046637105 + 369900 0.0050992058 0.0027093642 0.0052191296 + 370000 0.0052195061 0.0026522548 0.0052212305 + 370100 0.0042770081 0.0021442792 0.0042493691 + 370200 0.0052822795 0.0021836793 0.0047835512 + 370300 0.0058296697 0.00190065 0.0047699405 + 370400 0.0048358072 0.0015845327 0.0039646566 + 370500 0.0067371797 0.0018252829 0.0051412386 + 370600 0.0040577775 0.0022673171 0.0042645045 + 370700 0.0036049264 0.002252263 0.0040265627 + 370800 0.0036451611 0.0025052199 0.0042993226 + 370900 0.0063666324 0.0022322711 0.005365848 + 371000 0.0064587555 0.0020610469 0.0052399655 + 371100 0.0041514091 0.0022305568 0.0042738285 + 371200 0.0048404655 0.0021123975 0.0044948141 + 371300 0.0059211936 0.0022478923 0.0051622298 + 371400 0.0039685199 0.0025903263 0.0045435822 + 371500 0.0050317235 0.0026771571 0.0051537085 + 371600 0.0050717625 0.0025996467 0.0050959048 + 371700 0.0050450148 0.0027546635 0.0052377567 + 371800 0.0055764248 0.0025246952 0.0052693418 + 371900 0.0062088457 0.0025022017 0.0055581179 + 372000 0.004615516 0.0024876295 0.0047593288 + 372100 0.0070883365 0.0016605565 0.0051493472 + 372200 0.0065387283 0.0018632921 0.0050815725 + 372300 0.0065411034 0.0023815307 0.0056009801 + 372400 0.004292892 0.002815987 0.0049288948 + 372500 0.0056721637 0.0026204415 0.0054122096 + 372600 0.0046103322 0.0026530131 0.004922161 + 372700 0.0057484843 0.0024825179 0.0053118501 + 372800 0.0053928496 0.002591855 0.0052461482 + 372900 0.0043492636 0.0025573154 0.0046979686 + 373000 0.005140919 0.0029383081 0.0054686042 + 373100 0.0045577228 0.0029350342 0.0051782884 + 373200 0.0055239786 0.0027913601 0.0055101933 + 373300 0.0047386558 0.0029049082 0.0052372153 + 373400 0.0069952409 0.003134556 0.0065775261 + 373500 0.0064730239 0.0034655317 0.0066514731 + 373600 0.0050156889 0.0034284125 0.0058970719 + 373700 0.0066410028 0.0030874307 0.0063560493 + 373800 0.0053736632 0.0032626808 0.0059075306 + 373900 0.0060341633 0.0030149769 0.0059849167 + 374000 0.0069991454 0.0032646462 0.0067095381 + 374100 0.0036710776 0.0040067129 0.0058135714 + 374200 0.0038490373 0.0038355523 0.0057300004 + 374300 0.0055866792 0.0033463606 0.0060960543 + 374400 0.0040107618 0.0031078979 0.0050819447 + 374500 0.0066085704 0.0023919616 0.0056446173 + 374600 0.0071683062 0.0021447763 0.005672927 + 374700 0.0057951522 0.0024039755 0.0052562769 + 374800 0.0059625885 0.0031241176 0.0060588291 + 374900 0.0033171414 0.0030051793 0.0046378348 + 375000 0.0039944654 0.0025346506 0.0045006766 + 375100 0.0037728536 0.002476127 0.0043330784 + 375200 0.0039802256 0.0023493678 0.0043083851 + 375300 0.0059677755 0.002629459 0.0055667235 + 375400 0.006034149 0.0028094903 0.005779423 + 375500 0.0045596302 0.0029853431 0.0052295361 + 375600 0.0056436788 0.0030391934 0.0058169416 + 375700 0.0075819451 0.0031409582 0.0068726968 + 375800 0.0048490462 0.0036850126 0.0060716525 + 375900 0.0052054991 0.0035537389 0.0061158205 + 376000 0.0058926361 0.0035980018 0.0064982836 + 376100 0.0046593485 0.0034971656 0.0057904387 + 376200 0.0056096489 0.0030792972 0.0058402963 + 376300 0.0047129095 0.0030371127 0.0053567478 + 376400 0.0051539653 0.0027874571 0.0053241744 + 376500 0.003356937 0.0027589412 0.0044111836 + 376600 0.0034592499 0.0030280998 0.0047306993 + 376700 0.0043236339 0.0031292379 0.0052572764 + 376800 0.0057987638 0.0024689135 0.0053229926 + 376900 0.0034856722 0.0022105859 0.0039261902 + 377000 0.0049742213 0.0025868095 0.0050350591 + 377100 0.005936407 0.0023481746 0.0052699999 + 377200 0.0059749849 0.002150067 0.0050908799 + 377300 0.0051719634 0.0018407016 0.0043862773 + 377400 0.005403138 0.0017415029 0.0044008599 + 377500 0.0032340795 0.0021705081 0.0037622816 + 377600 0.0043518118 0.0021109525 0.0042528598 + 377700 0.0048616155 0.0023511083 0.0047439347 + 377800 0.0055685351 0.0027660297 0.005506793 + 377900 0.0039647789 0.0029691018 0.0049205164 + 378000 0.0036941273 0.003005458 0.0048236613 + 378100 0.0043388564 0.0030004052 0.0051359361 + 378200 0.0058206483 0.0026659632 0.0055308136 + 378300 0.0075120853 0.0021739658 0.0058713203 + 378400 0.0051371965 0.0028166365 0.0053451004 + 378500 0.0034284171 0.0028800181 0.0045674422 + 378600 0.0048101159 0.0024066549 0.0047741339 + 378700 0.0040349294 0.0026111408 0.0045970826 + 378800 0.0055592754 0.0023556025 0.0050918084 + 378900 0.0049068976 0.002171014 0.0045861277 + 379000 0.0051329043 0.0022628589 0.0047892102 + 379100 0.0056864329 0.0022750068 0.005073798 + 379200 0.0032617896 0.0023435066 0.0039489187 + 379300 0.0047321979 0.0024452479 0.0047743766 + 379400 0.0052941575 0.0021408734 0.0047465916 + 379500 0.0054851678 0.0022930021 0.0049927332 + 379600 0.0046255205 0.0025222524 0.0047988757 + 379700 0.0046739953 0.0027250167 0.0050254988 + 379800 0.0055754016 0.0027379662 0.0054821092 + 379900 0.0053446134 0.0018645103 0.0044950622 + 380000 0.0052832099 0.0021185872 0.0047189171 + 380100 0.0047543806 0.0021337331 0.0044737798 + 380200 0.0047243927 0.0018343106 0.0041595977 + 380300 0.0071342311 0.0018027978 0.0053141772 + 380400 0.0046540675 0.0022513182 0.0045419921 + 380500 0.005430611 0.0024422704 0.0051151493 + 380600 0.0055598436 0.0022235198 0.0049600053 + 380700 0.0047808646 0.0023014323 0.0046545141 + 380800 0.0047719801 0.0022931772 0.0046418861 + 380900 0.0058720736 0.0019508954 0.0048410567 + 381000 0.0051157921 0.0019031631 0.004421092 + 381100 0.0050590818 0.0019750264 0.0044650432 + 381200 0.0049092735 0.0023897376 0.0048060207 + 381300 0.0048078244 0.0028529381 0.0052192892 + 381400 0.0042791378 0.0030976819 0.00520382 + 381500 0.0055912775 0.0029106099 0.0056625668 + 381600 0.0057732899 0.0024834551 0.0053249962 + 381700 0.0049503884 0.0024793745 0.0049158938 + 381800 0.0076225649 0.0024193349 0.0061710661 + 381900 0.0043758236 0.0027466687 0.0049003943 + 382000 0.00670672 0.0025761987 0.0058771624 + 382100 0.0059750372 0.00250242 0.0054432587 + 382200 0.004061035 0.0027026999 0.0047014906 + 382300 0.005179748 0.0022644219 0.0048138291 + 382400 0.0066741501 0.0020538692 0.0053388025 + 382500 0.0052325779 0.001772029 0.0043474384 + 382600 0.0066314187 0.0016952126 0.0049591139 + 382700 0.0061792218 0.0018636264 0.0049049621 + 382800 0.0039181168 0.0022157817 0.0041442298 + 382900 0.0050249222 0.0018233354 0.0042965392 + 383000 0.0043565395 0.0019847984 0.0041290326 + 383100 0.0048747943 0.0023253889 0.0047247017 + 383200 0.0057085417 0.0021536469 0.0049633198 + 383300 0.0040618511 0.0019923134 0.0039915057 + 383400 0.0051685132 0.0015375197 0.0040813973 + 383500 0.004537572 0.0016425445 0.0038758807 + 383600 0.0044125732 0.0016269627 0.0037987761 + 383700 0.0038235325 0.0013046466 0.0031865415 + 383800 0.0049839923 0.0015618624 0.0040149211 + 383900 0.005599459 0.0015725937 0.0043285774 + 384000 0.0056120148 0.0014096534 0.0041718169 + 384100 0.0057160586 0.0014749326 0.0042883052 + 384200 0.0044946646 0.0022598642 0.0044720819 + 384300 0.0057834664 0.0021757405 0.0050222903 + 384400 0.0063814723 0.0020677428 0.0052086237 + 384500 0.0051198425 0.0023553967 0.0048753191 + 384600 0.0036811419 0.0020213603 0.0038331723 + 384700 0.0048712374 0.0019316235 0.0043291857 + 384800 0.0052867771 0.0019163016 0.0045183872 + 384900 0.0050037456 0.0016058495 0.0040686306 + 385000 0.004629819 0.0014932635 0.0037720025 + 385100 0.003621437 0.0019264185 0.0037088446 + 385200 0.0041512086 0.0019095153 0.0039526883 + 385300 0.0049662167 0.0015398708 0.0039841806 + 385400 0.0044505366 0.0016125096 0.0038030081 + 385500 0.0042839461 0.0019203714 0.0040288761 + 385600 0.0057445216 0.0018816442 0.0047090259 + 385700 0.0052631243 0.0018210388 0.0044114827 + 385800 0.0054834397 0.0017079642 0.0044068446 + 385900 0.0044265542 0.0016367302 0.0038154248 + 386000 0.0052257242 0.0016450837 0.0042171198 + 386100 0.004924848 0.0017389956 0.0041629442 + 386200 0.0038440846 0.0019943585 0.0038863688 + 386300 0.0053790199 0.0020895 0.0047369864 + 386400 0.0039781022 0.0023868398 0.004344812 + 386500 0.0062682513 0.0020130821 0.0050982371 + 386600 0.0055580273 0.0022954078 0.0050309994 + 386700 0.0039313011 0.0027214366 0.0046563739 + 386800 0.0054600219 0.0027293549 0.0054167094 + 386900 0.0044751158 0.0025374533 0.0047400494 + 387000 0.0061837575 0.0019120577 0.0049556259 + 387100 0.0044751813 0.0017798241 0.0039824524 + 387200 0.0051079555 0.0022547222 0.0047687941 + 387300 0.0039627002 0.0027185708 0.0046689623 + 387400 0.0048424487 0.0026268827 0.0050102754 + 387500 0.0043333555 0.0020027234 0.0041355468 + 387600 0.0034502914 0.0021711309 0.0038693212 + 387700 0.0048684961 0.0023310785 0.0047272914 + 387800 0.0043911386 0.0019911313 0.0041523948 + 387900 0.0052612356 0.0017202415 0.0043097559 + 388000 0.0047683854 0.0017627475 0.0041096872 + 388100 0.0050746485 0.0019335968 0.0044312754 + 388200 0.0052815751 0.0023861899 0.0049857152 + 388300 0.0037020012 0.0026708354 0.0044929141 + 388400 0.0040451703 0.002743392 0.0047343743 + 388500 0.0041615884 0.0023114165 0.0043596983 + 388600 0.0047844671 0.0020661821 0.004421037 + 388700 0.0054800283 0.0019985392 0.0046957406 + 388800 0.0043317967 0.002124605 0.0042566611 + 388900 0.005170542 0.0022716202 0.0048164964 + 389000 0.0058464669 0.0027811942 0.0056587521 + 389100 0.0041030202 0.0026611754 0.0046806306 + 389200 0.0045495291 0.0022345635 0.0044737848 + 389300 0.0054459122 0.0022391771 0.004919587 + 389400 0.0052199665 0.0027601721 0.0053293744 + 389500 0.0061368246 0.0031539181 0.0061743864 + 389600 0.005976284 0.0030673504 0.0060088027 + 389700 0.0048885453 0.003542297 0.0059483779 + 389800 0.0054708972 0.0035083419 0.0062010491 + 389900 0.0058812136 0.002832449 0.0057271088 + 390000 0.0075254603 0.002799743 0.0065036805 + 390100 0.0051405863 0.0025908091 0.0051209414 + 390200 0.0053042959 0.0022388224 0.0048495305 + 390300 0.0062614014 0.0017239901 0.0048057736 + 390400 0.0049845896 0.0020168628 0.0044702155 + 390500 0.0042006555 0.0025443162 0.0046118263 + 390600 0.0051464122 0.0026996731 0.0052326729 + 390700 0.0062757033 0.0025431388 0.0056319615 + 390800 0.0053428403 0.0019901679 0.0046198471 + 390900 0.0053973964 0.0018692048 0.0045257359 + 391000 0.0036987263 0.0025336343 0.0043541012 + 391100 0.0050458013 0.0024420126 0.0049254929 + 391200 0.0052119876 0.0021778808 0.0047431559 + 391300 0.0050953256 0.0018835177 0.0043913733 + 391400 0.0033812666 0.0020759366 0.0037401537 + 391500 0.0057080908 0.0019698948 0.0047793458 + 391600 0.0063328665 0.0021557665 0.0052727242 + 391700 0.0039413836 0.0020073962 0.0039472959 + 391800 0.0039660017 0.0022614295 0.0042134459 + 391900 0.0049916707 0.0024842946 0.0049411325 + 392000 0.0054398213 0.0028382263 0.0055156384 + 392100 0.0054508902 0.0027488044 0.0054316645 + 392200 0.0057977372 0.0026315258 0.0054850996 + 392300 0.0050042207 0.0025526988 0.0050157136 + 392400 0.0048271986 0.0023941185 0.0047700053 + 392500 0.0041025076 0.0022663865 0.0042855894 + 392600 0.0072755732 0.0020557916 0.0056367378 + 392700 0.0043496317 0.0023674108 0.0045082451 + 392800 0.0046855649 0.0021045149 0.0044106913 + 392900 0.0033446104 0.0020005006 0.003646676 + 393000 0.0045990188 0.00206054 0.0043241196 + 393100 0.0052460599 0.0022303716 0.0048124167 + 393200 0.0047711466 0.0021205833 0.004468882 + 393300 0.0051892965 0.0024648732 0.0050189801 + 393400 0.0053033686 0.0025422831 0.0051525349 + 393500 0.0048955456 0.002798047 0.0052075733 + 393600 0.0049881142 0.0028002267 0.0052553141 + 393700 0.0055092927 0.0028509924 0.0055625974 + 393800 0.0039317225 0.0030930416 0.0050281863 + 393900 0.0052430539 0.0026911126 0.0052716782 + 394000 0.0035015433 0.0023637284 0.0040871442 + 394100 0.0046074061 0.002126733 0.0043944407 + 394200 0.0043153184 0.0020149208 0.0041388666 + 394300 0.0052504473 0.0020255151 0.0046097196 + 394400 0.0052092352 0.0019813196 0.0045452401 + 394500 0.0042736867 0.0021541083 0.0042575635 + 394600 0.0039595791 0.0018631834 0.0038120388 + 394700 0.0051925469 0.0023120649 0.0048677716 + 394800 0.0050869559 0.0023572538 0.0048609899 + 394900 0.006922066 0.0020525605 0.0054595149 + 395000 0.0054273534 0.0019966284 0.004667904 + 395100 0.0051762939 0.0026548825 0.0052025896 + 395200 0.0053514461 0.0027991235 0.0054330384 + 395300 0.0035088138 0.0029537349 0.0046807292 + 395400 0.0055483576 0.0027634919 0.0054943242 + 395500 0.0052687351 0.0028045266 0.0053977322 + 395600 0.0044483922 0.0023468054 0.0045362485 + 395700 0.0041267691 0.002164359 0.0041955032 + 395800 0.0043741869 0.0021252485 0.0042781686 + 395900 0.0063243753 0.0024648914 0.0055776699 + 396000 0.0054708636 0.0026390235 0.0053317142 + 396100 0.0051723307 0.0022118304 0.0047575869 + 396200 0.004586684 0.0022586325 0.004516141 + 396300 0.0059440511 0.0023310228 0.0052566105 + 396400 0.0055609213 0.002590236 0.005327252 + 396500 0.0050870244 0.002239868 0.0047436378 + 396600 0.0041804941 0.0021616126 0.0042191995 + 396700 0.0038802145 0.0018423161 0.0037521092 + 396800 0.0061203299 0.0018534766 0.0048658265 + 396900 0.0043399754 0.0023803309 0.0045164126 + 397000 0.0058284046 0.0020924743 0.0049611422 + 397100 0.0055217707 0.0021022139 0.0048199604 + 397200 0.0044277227 0.002107601 0.0042868708 + 397300 0.0056150894 0.001720883 0.0044845598 + 397400 0.0041102587 0.0017757548 0.0037987727 + 397500 0.0046513414 0.0017220752 0.0040114073 + 397600 0.0050377627 0.0016181233 0.0040976472 + 397700 0.0061769992 0.0023764348 0.0054166766 + 397800 0.0047808194 0.0030165689 0.0053696285 + 397900 0.0055760698 0.002053534 0.0047980059 + 398000 0.0055691418 0.0017499215 0.0044909834 + 398100 0.0049167129 0.0018910418 0.0043109865 + 398200 0.0058016316 0.0021041361 0.0049596267 + 398300 0.0054140041 0.0026576633 0.0053223684 + 398400 0.0041558734 0.0025154532 0.0045609221 + 398500 0.0043547218 0.0023237664 0.0044671061 + 398600 0.0044622602 0.0026300108 0.0048262795 + 398700 0.005146999 0.0022122839 0.0047455724 + 398800 0.0040351362 0.0023315336 0.0043175772 + 398900 0.0045359275 0.0020565524 0.0042890792 + 399000 0.0063761678 0.002550587 0.0056888571 + 399100 0.004652718 0.0026902888 0.0049802985 + 399200 0.0049144492 0.0028750259 0.0052938564 + 399300 0.0056568011 0.0032765483 0.006060755 + 399400 0.0052632656 0.0033600169 0.0059505304 + 399500 0.0053307568 0.0029159846 0.0055397164 + 399600 0.0051225843 0.0025197604 0.0050410323 + 399700 0.0051607817 0.002632922 0.0051729943 + 399800 0.0067008821 0.0022503663 0.0055484568 + 399900 0.0040684948 0.0022012331 0.0042036954 + 400000 0.0043018412 0.0024955532 0.0046128656 + 400100 0.0059699682 0.0022849274 0.0052232711 + 400200 0.0042878974 0.0023960084 0.0045064579 + 400300 0.0048843103 0.0024968616 0.0049008581 + 400400 0.0043269842 0.0025766782 0.0047063657 + 400500 0.0044718328 0.0029791321 0.0051801123 + 400600 0.0047500116 0.0026937861 0.0050316824 + 400700 0.0059071301 0.0023402093 0.0052476249 + 400800 0.0043340052 0.0022095755 0.0043427186 + 400900 0.0065827032 0.0019167528 0.005156677 + 401000 0.0062302996 0.0020241588 0.0050906344 + 401100 0.0046408824 0.0023453388 0.0046295231 + 401200 0.0062343081 0.0020570225 0.0051254711 + 401300 0.0059727946 0.0021337157 0.0050734505 + 401400 0.0064103273 0.0023292325 0.0054843155 + 401500 0.0044584443 0.0028893329 0.0050837234 + 401600 0.0051522431 0.0028248711 0.0053607408 + 401700 0.0066058449 0.0029438494 0.0061951637 + 401800 0.0047124582 0.0028307476 0.0051501607 + 401900 0.0067387796 0.0021581179 0.005474861 + 402000 0.0050326979 0.0021973456 0.0046743766 + 402100 0.0046879033 0.0025553426 0.00486267 + 402200 0.0040704799 0.0033767801 0.0053802194 + 402300 0.006324689 0.003453047 0.0065659799 + 402400 0.0055930564 0.0028165406 0.0055693731 + 402500 0.0052275947 0.002096669 0.0046696257 + 402600 0.004642966 0.0018434276 0.0041286375 + 402700 0.003650016 0.0020953312 0.0038918234 + 402800 0.0051012346 0.0022120484 0.0047228123 + 402900 0.0071794719 0.0022412118 0.0057748581 + 403000 0.0043225531 0.0021409343 0.0042684409 + 403100 0.0044772254 0.0020203404 0.0042239748 + 403200 0.0057605354 0.0017503586 0.0045856221 + 403300 0.005048701 0.001929942 0.0044148495 + 403400 0.005443421 0.0023007026 0.0049798863 + 403500 0.0044011609 0.002868656 0.0050348524 + 403600 0.005736204 0.0021998111 0.005023099 + 403700 0.0054169133 0.0017653574 0.0044314944 + 403800 0.0038011991 0.0018261146 0.0036970173 + 403900 0.003980187 0.0018807697 0.0038397679 + 404000 0.0035236389 0.0017103613 0.0034446524 + 404100 0.006442942 0.0016647618 0.0048358973 + 404200 0.0042810324 0.0019267793 0.0040338499 + 404300 0.0047810948 0.0022050801 0.0045582752 + 404400 0.0061455956 0.002928854 0.0059536393 + 404500 0.0041327763 0.0032360306 0.0052701314 + 404600 0.0046176919 0.0026511236 0.0049238938 + 404700 0.0061944191 0.0020123266 0.0050611423 + 404800 0.0069023557 0.0021162494 0.0055135026 + 404900 0.0057298909 0.0026481841 0.0054683648 + 405000 0.0042274535 0.0029363207 0.0050170205 + 405100 0.0052259568 0.0024285241 0.0050006747 + 405200 0.0035815838 0.0022430987 0.0040059095 + 405300 0.0049390262 0.0020767126 0.0045076395 + 405400 0.004717932 0.001867227 0.0041893341 + 405500 0.0052931139 0.0020971236 0.0047023281 + 405600 0.0053121316 0.0022131399 0.0048277047 + 405700 0.0050983594 0.0024652851 0.0049746339 + 405800 0.0049376121 0.0025140209 0.0049442518 + 405900 0.0032520175 0.0028221934 0.0044227957 + 406000 0.0061568184 0.0024774472 0.0055077563 + 406100 0.0055818615 0.0021588711 0.0049061935 + 406200 0.0046639999 0.0018787306 0.0041742931 + 406300 0.005288292 0.0019252654 0.0045280966 + 406400 0.0044953572 0.0025592984 0.004771857 + 406500 0.0045969456 0.0029879646 0.0052505237 + 406600 0.0048280014 0.0028576873 0.0052339693 + 406700 0.0075352637 0.0022201315 0.0059288941 + 406800 0.0049389902 0.0026568922 0.0050878014 + 406900 0.0045650707 0.0023703714 0.0046172422 + 407000 0.0071900314 0.0026088725 0.006147716 + 407100 0.0053131289 0.0028406675 0.0054557232 + 407200 0.0059784932 0.0029032333 0.0058457729 + 407300 0.0039669509 0.0026236302 0.0045761138 + 407400 0.0050915389 0.0021379728 0.0046439646 + 407500 0.0051873221 0.0020674196 0.0046205547 + 407600 0.004596137 0.001878313 0.0041404742 + 407700 0.0029142961 0.0021418341 0.0035762142 + 407800 0.004192577 0.0021681804 0.0042317144 + 407900 0.0041639613 0.0022486384 0.0042980882 + 408000 0.0042055132 0.0025019355 0.0045718365 + 408100 0.005824106 0.0023034534 0.0051700056 + 408200 0.0033730116 0.0020252282 0.0036853824 + 408300 0.00409374 0.0018757058 0.0038905934 + 408400 0.0036809656 0.0017112464 0.0035229716 + 408500 0.0036534748 0.0016096065 0.0034078012 + 408600 0.004633451 0.0014825582 0.0037630849 + 408700 0.0059630793 0.0017265514 0.0046615045 + 408800 0.0045231384 0.0023268125 0.0045530447 + 408900 0.0057182403 0.0026175172 0.0054319636 + 409000 0.0043355235 0.0026464753 0.0047803657 + 409100 0.0056915541 0.0027048394 0.0055061512 + 409200 0.004974869 0.0030863196 0.005534888 + 409300 0.0048047823 0.003019594 0.0053844478 + 409400 0.0059671689 0.0024226096 0.0053595755 + 409500 0.004858147 0.002386313 0.0047774322 + 409600 0.0045269099 0.002359549 0.0045876375 + 409700 0.003870913 0.0025489371 0.0044541521 + 409800 0.0043690901 0.0025586078 0.0047090193 + 409900 0.0058640869 0.0021878973 0.0050741276 + 410000 0.0037403759 0.0025190102 0.0043599765 + 410100 0.0052327647 0.0027818596 0.005357361 + 410200 0.0059281145 0.002461922 0.0053796659 + 410300 0.0057749358 0.0018851778 0.004727529 + 410400 0.0049929226 0.001736443 0.0041938971 + 410500 0.0035856203 0.0017603808 0.0035251783 + 410600 0.0045872938 0.0017937803 0.004051589 + 410700 0.0050094979 0.0025314291 0.0049970414 + 410800 0.0054287713 0.0030284571 0.0057004304 + 410900 0.0048362245 0.0038101647 0.0061904939 + 411000 0.0066822701 0.0030889273 0.0063778571 + 411100 0.0063592501 0.0024981252 0.0056280687 + 411200 0.0047201365 0.0029595497 0.0052827419 + 411300 0.0047526329 0.0031654787 0.0055046652 + 411400 0.0050393599 0.0030306518 0.0055109618 + 411500 0.0050225251 0.0029973033 0.0054693274 + 411600 0.0047860691 0.0028408056 0.005196449 + 411700 0.004869027 0.0023060273 0.0047025015 + 411800 0.0053446949 0.0027356731 0.0053662651 + 411900 0.0051415781 0.0027057792 0.0052363997 + 412000 0.0055999076 0.0021980561 0.0049542607 + 412100 0.0050468522 0.0022509375 0.004734935 + 412200 0.0044268034 0.0022585115 0.0044373288 + 412300 0.0042449861 0.0022543572 0.0043436863 + 412400 0.0043439458 0.001970501 0.0041085368 + 412500 0.0043183232 0.0021298697 0.0042552944 + 412600 0.0052741602 0.002362392 0.0049582677 + 412700 0.0046125276 0.0023717109 0.0046419393 + 412800 0.0055467249 0.0023574327 0.0050874614 + 412900 0.004153537 0.0023308486 0.0043751677 + 413000 0.0045403446 0.0026363117 0.0048710126 + 413100 0.0043818882 0.002819361 0.0049760716 + 413200 0.0054472765 0.0024632019 0.0051442833 + 413300 0.0043313992 0.0024744064 0.004606267 + 413400 0.0044642051 0.0021129509 0.0043101768 + 413500 0.0057733722 0.0024896552 0.0053312368 + 413600 0.0042665759 0.0028461258 0.0049460811 + 413700 0.0046983345 0.0029020421 0.0052145036 + 413800 0.0049755327 0.0025669546 0.0050158496 + 413900 0.0043618534 0.0028830989 0.0050299486 + 414000 0.0050574281 0.0029275896 0.0054167925 + 414100 0.0055602426 0.0026315294 0.0053682113 + 414200 0.0035059435 0.002834075 0.0045596566 + 414300 0.0044110285 0.0024380785 0.0046091316 + 414400 0.0071638669 0.0020640485 0.0055900142 + 414500 0.0044645007 0.0022021175 0.0043994889 + 414600 0.0042361647 0.0021003205 0.0041853078 + 414700 0.004324298 0.0021053877 0.0042337531 + 414800 0.0050041792 0.0021898809 0.0046528753 + 414900 0.0035924864 0.0026056453 0.0043738221 + 415000 0.0039756323 0.0026275672 0.0045843237 + 415100 0.0042889175 0.0023790951 0.0044900467 + 415200 0.0057031315 0.0023889869 0.0051959969 + 415300 0.003885794 0.002617586 0.0045301253 + 415400 0.0058873633 0.0024223398 0.0053200264 + 415500 0.0043650511 0.0025619916 0.0047104152 + 415600 0.0041506416 0.0022492491 0.0042921431 + 415700 0.0053210922 0.0020073885 0.0046263636 + 415800 0.0045855203 0.0018974571 0.0041543929 + 415900 0.0039438321 0.0020553135 0.0039964184 + 416000 0.0042912814 0.0019882355 0.0041003506 + 416100 0.0055537428 0.0019247581 0.0046582408 + 416200 0.0039375991 0.0019060405 0.0038440776 + 416300 0.0043386973 0.0020110548 0.0041465074 + 416400 0.0048703639 0.0019117811 0.0043089133 + 416500 0.0036318688 0.002232718 0.0040202784 + 416600 0.0045061035 0.0021808995 0.0043987473 + 416700 0.0038484738 0.0020900586 0.0039842293 + 416800 0.0060766697 0.0020908887 0.0050817495 + 416900 0.0044503596 0.002939364 0.0051297754 + 417000 0.0051947804 0.003092305 0.005649111 + 417100 0.0053205909 0.0024934826 0.0051122109 + 417200 0.0056995871 0.0018547069 0.0046599724 + 417300 0.0053189225 0.0020483838 0.004666291 + 417400 0.0043605184 0.0019106202 0.0040568128 + 417500 0.0052530821 0.0015683689 0.0041538703 + 417600 0.0047238242 0.0017873985 0.0041124058 + 417700 0.0048574953 0.0022838904 0.0046746888 + 417800 0.0047167364 0.001886919 0.0042084377 + 417900 0.0058392773 0.0015386529 0.0044126721 + 418000 0.0044770075 0.0018533642 0.0040568914 + 418100 0.0046507652 0.0023710027 0.0046600512 + 418200 0.0052404781 0.0023787116 0.0049580094 + 418300 0.0047689575 0.0022274773 0.0045746985 + 418400 0.0046257639 0.002264732 0.0045414752 + 418500 0.0042565343 0.0023245965 0.0044196094 + 418600 0.0047293329 0.0019753981 0.0043031167 + 418700 0.0049000291 0.001740778 0.0041525111 + 418800 0.0055998097 0.0021400571 0.0048962134 + 418900 0.0048123092 0.0034072988 0.0057758573 + 419000 0.0064975634 0.0033271204 0.0065251399 + 419100 0.0085356322 0.0025131153 0.0067142467 + 419200 0.0049143263 0.0023312089 0.0047499788 + 419300 0.0056220407 0.0023425596 0.0051096578 + 419400 0.0054148317 0.0025526594 0.0052177719 + 419500 0.0077865118 0.0025572295 0.0063896532 + 419600 0.0052747393 0.0025238105 0.0051199712 + 419700 0.0039679733 0.0025346956 0.0044876825 + 419800 0.0049853952 0.0028580195 0.0053117687 + 419900 0.0054021217 0.0028767954 0.0055356522 + 420000 0.005763454 0.0027572119 0.0055939119 + 420100 0.0035204725 0.0027272971 0.0044600297 + 420200 0.0049905275 0.0024039454 0.0048602207 + 420300 0.0057948939 0.002174696 0.0050268704 + 420400 0.0044494325 0.0025569092 0.0047468643 + 420500 0.005003256 0.0026797063 0.0051422464 + 420600 0.005618271 0.0024976176 0.0052628603 + 420700 0.0055368195 0.0022974848 0.0050226382 + 420800 0.00424107 0.0022712416 0.0043586433 + 420900 0.0043137072 0.002796883 0.0049200357 + 421000 0.0046340692 0.0029130927 0.0051939236 + 421100 0.0056340681 0.0029497881 0.0057228059 + 421200 0.0047466351 0.0031042458 0.0054404803 + 421300 0.0051041013 0.0028386976 0.0053508724 + 421400 0.0051331138 0.0027126068 0.0052390613 + 421500 0.0053369591 0.0025299346 0.0051567192 + 421600 0.0039603425 0.0022840561 0.0042332872 + 421700 0.0052014706 0.0021820603 0.0047421592 + 421800 0.004959982 0.0024361108 0.004877352 + 421900 0.0050124541 0.0024341897 0.0049012569 + 422000 0.0036809774 0.0025452674 0.0043569985 + 422100 0.0050287987 0.0021130574 0.0045881692 + 422200 0.0049904039 0.0017798304 0.0042360448 + 422300 0.0047627961 0.0018213789 0.0041655676 + 422400 0.0070572271 0.0019513244 0.0054248034 + 422500 0.0025878606 0.0024927842 0.0037664969 + 422600 0.0058429503 0.0021879054 0.0050637325 + 422700 0.0059793792 0.0021894635 0.0051324392 + 422800 0.0068102853 0.0022534581 0.0056053954 + 422900 0.00513117 0.0022902775 0.0048157752 + 423000 0.004869771 0.0027014317 0.0050982721 + 423100 0.0068459967 0.0024292313 0.0057987453 + 423200 0.0040564865 0.0024604928 0.0044570447 + 423300 0.0071066634 0.0023490455 0.0058468564 + 423400 0.0053297986 0.0024547415 0.0050780017 + 423500 0.0057300694 0.0026067489 0.0054270174 + 423600 0.005462869 0.0024086835 0.0050974393 + 423700 0.0040400249 0.0025980073 0.0045864571 + 423800 0.0047669862 0.0025918986 0.0049381497 + 423900 0.0050894481 0.0023447609 0.0048497236 + 424000 0.0054140458 0.0026637855 0.0053285112 + 424100 0.005742278 0.0025952579 0.0054215353 + 424200 0.0053091398 0.0024951889 0.0051082812 + 424300 0.0055271007 0.0022279962 0.0049483661 + 424400 0.004335276 0.0028134023 0.004947171 + 424500 0.0049645868 0.002949325 0.0053928325 + 424600 0.0045511416 0.0030486697 0.0052886848 + 424700 0.0046897902 0.0028161827 0.0051244389 + 424800 0.0047826404 0.0025451707 0.0048991265 + 424900 0.0044037183 0.0026653914 0.0048328465 + 425000 0.0047263108 0.0029452697 0.0052715008 + 425100 0.0042236365 0.0032527113 0.0053315324 + 425200 0.0059704012 0.0028545028 0.0057930596 + 425300 0.0053083475 0.0030473486 0.0056600509 + 425400 0.0043103677 0.0031419894 0.0052634985 + 425500 0.0056328248 0.0030460121 0.0058184181 + 425600 0.0045775337 0.0029628604 0.0052158653 + 425700 0.0059618261 0.0027694765 0.0057038128 + 425800 0.0056627757 0.0024645855 0.0052517329 + 425900 0.006125291 0.0021401558 0.0051549474 + 426000 0.0047825361 0.0020632386 0.0044171431 + 426100 0.004655465 0.0021854254 0.0044767871 + 426200 0.0041052989 0.0019959741 0.0040165509 + 426300 0.0052515051 0.002169575 0.0047543002 + 426400 0.0063697634 0.002221899 0.0053570169 + 426500 0.0046001194 0.0024848402 0.0047489615 + 426600 0.0043989318 0.0027649269 0.0049300261 + 426700 0.0063745156 0.0026984302 0.0058358872 + 426800 0.0047877763 0.0023551764 0.0047116601 + 426900 0.0037951803 0.0022073733 0.0040753136 + 427000 0.0043729153 0.0020238016 0.0041760959 + 427100 0.0040415536 0.0022133412 0.0042025434 + 427200 0.0050872818 0.0021796139 0.0046835104 + 427300 0.0044208076 0.0021622689 0.0043381352 + 427400 0.0058996469 0.0026229149 0.0055266474 + 427500 0.0049355568 0.002581367 0.0050105864 + 427600 0.0061306551 0.002690291 0.0057077228 + 427700 0.004904284 0.0026895883 0.0051034156 + 427800 0.0045280309 0.0027706166 0.0049992568 + 427900 0.00495987 0.0030856274 0.0055268134 + 428000 0.0040824467 0.0026083349 0.0046176641 + 428100 0.0049747806 0.0023404584 0.0047889832 + 428200 0.0052040074 0.002172916 0.0047342634 + 428300 0.004939376 0.0022174506 0.0046485497 + 428400 0.0048382592 0.0026002661 0.0049815968 + 428500 0.0046416071 0.0025656128 0.0048501538 + 428600 0.0044767955 0.0026843672 0.00488779 + 428700 0.0035735796 0.0025660251 0.0043248963 + 428800 0.004311085 0.0022366942 0.0043585563 + 428900 0.0050739677 0.0023455166 0.0048428601 + 429000 0.0037940541 0.0023601602 0.0042275462 + 429100 0.0055547918 0.0021105462 0.0048445453 + 429200 0.0042162856 0.0017486627 0.0038238658 + 429300 0.0057382749 0.0016813081 0.0045056153 + 429400 0.0055631786 0.0015729118 0.0043110388 + 429500 0.0051857756 0.0018445086 0.0043968825 + 429600 0.0040706664 0.0018051675 0.0038086986 + 429700 0.0053408112 0.0018253439 0.0044540244 + 429800 0.0050966219 0.0021874378 0.0046959314 + 429900 0.0050524891 0.002366694 0.004853466 + 430000 0.003398462 0.0030885928 0.0047612734 + 430100 0.0053794525 0.0026414764 0.0052891756 + 430200 0.0071897547 0.0023218784 0.0058605858 + 430300 0.0045791566 0.0026704002 0.0049242038 + 430400 0.0041643946 0.0029423716 0.0049920346 + 430500 0.0050914714 0.0020934158 0.0045993744 + 430600 0.004780942 0.0015313717 0.0038844916 + 430700 0.0061559996 0.0014365062 0.0044664122 + 430800 0.0037960187 0.0016939491 0.003562302 + 430900 0.0024408521 0.00218683 0.0033881869 + 431000 0.0044516881 0.0027738647 0.0049649299 + 431100 0.0034320705 0.0030180523 0.0047072745 + 431200 0.0047076332 0.0028021699 0.0051192081 + 431300 0.0042540836 0.0026279929 0.0047217996 + 431400 0.0060260477 0.0027428293 0.0057087746 + 431500 0.0043970662 0.0028934887 0.0050576697 + 431600 0.0058863532 0.0024602894 0.0053574789 + 431700 0.0054390145 0.002425187 0.005102202 + 431800 0.0058500297 0.0025461408 0.0054254523 + 431900 0.0045494164 0.0029165301 0.005155696 + 432000 0.0051378428 0.0025261381 0.0050549201 + 432100 0.0038577352 0.002686937 0.004585666 + 432200 0.0050002653 0.0024768137 0.0049378818 + 432300 0.0048282351 0.0022950422 0.0046714391 + 432400 0.0048922691 0.0029345556 0.0053424693 + 432500 0.0064276735 0.0031582107 0.0063218313 + 432600 0.0044386569 0.003027335 0.0052119864 + 432700 0.0050995574 0.0030344573 0.0055443957 + 432800 0.0058159344 0.002553705 0.0054162353 + 432900 0.0046480596 0.0021526667 0.0044403835 + 433000 0.0070024766 0.0020139073 0.0054604388 + 433100 0.0034873712 0.0023987998 0.0041152403 + 433200 0.004439647 0.0024713654 0.0046565041 + 433300 0.006508401 0.0022871094 0.005490463 + 433400 0.0059845556 0.0020134721 0.0049589956 + 433500 0.0050847483 0.0024438795 0.004946529 + 433600 0.006185912 0.0024574478 0.0055020764 + 433700 0.0041403265 0.0026688688 0.0047066857 + 433800 0.0067771947 0.0026388797 0.0059745302 + 433900 0.0062387002 0.0028799063 0.0059505165 + 434000 0.0053668018 0.0037214375 0.0063629102 + 434100 0.0055743868 0.0037356521 0.0064792956 + 434200 0.0062527803 0.0033607041 0.0064382444 + 434300 0.0063616802 0.0025677963 0.0056989358 + 434400 0.0055334166 0.0027557942 0.0054792727 + 434500 0.0047707111 0.002786872 0.0051349563 + 434600 0.0047452219 0.0025210648 0.0048566037 + 434700 0.0051707406 0.0025207327 0.0050657066 + 434800 0.0039854204 0.0023178351 0.0042794092 + 434900 0.0043699641 0.002353035 0.0045038767 + 435000 0.0058124542 0.0028029362 0.0056637535 + 435100 0.0039308403 0.0030755628 0.0050102733 + 435200 0.0067578729 0.0028093062 0.0061354468 + 435300 0.0045503254 0.0026289301 0.0048685434 + 435400 0.0054826654 0.0020654017 0.0047639011 + 435500 0.0058699816 0.0020616899 0.0049508215 + 435600 0.0063944339 0.002345736 0.0054929965 + 435700 0.0055379767 0.0025789184 0.0053046413 + 435800 0.0038171469 0.0023916575 0.0042704095 + 435900 0.0050577016 0.0019156315 0.004404969 + 436000 0.0039126465 0.0017374666 0.0036632223 + 436100 0.0048960534 0.0016009147 0.004010691 + 436200 0.0039395923 0.0018295104 0.0037685285 + 436300 0.0047905566 0.0020261744 0.0043840264 + 436400 0.0051604041 0.0021377624 0.0046776489 + 436500 0.0061764261 0.0022112608 0.0052512205 + 436600 0.0038333103 0.0020677709 0.0039544783 + 436700 0.0045392087 0.0017584762 0.0039926179 + 436800 0.0058969792 0.0018721305 0.0047745499 + 436900 0.0043249159 0.0028724516 0.0050011211 + 437000 0.0051787197 0.0030897366 0.0056386377 + 437100 0.0055898883 0.002854714 0.0056059872 + 437200 0.005234784 0.0027668905 0.0053433858 + 437300 0.0069970957 0.0023683678 0.0058122509 + 437400 0.0047714146 0.0022484354 0.004596866 + 437500 0.0045872059 0.0025493246 0.00480709 + 437600 0.0051512787 0.0028601383 0.0053955333 + 437700 0.0047786884 0.0029814433 0.005333454 + 437800 0.0080754113 0.0022956461 0.0062702626 + 437900 0.0048525166 0.0017660863 0.0041544343 + 438000 0.0048193669 0.001697799 0.0040698312 + 438100 0.0060441868 0.0016112007 0.0045860739 + 438200 0.0039414958 0.0021760853 0.0041160403 + 438300 0.00576472 0.0022154007 0.0050527238 + 438400 0.0040716287 0.0017808774 0.0037848822 + 438500 0.0041537765 0.0019990225 0.0040434594 + 438600 0.0062210369 0.0018943866 0.0049563032 + 438700 0.0064164013 0.0017760566 0.0049341291 + 438800 0.0058880484 0.0021867145 0.0050847383 + 438900 0.00405706 0.0026600552 0.0046568894 + 439000 0.0055796719 0.0020772304 0.0048234751 + 439100 0.0045044706 0.0016667818 0.0038838259 + 439200 0.004923599 0.0022425513 0.0046658852 + 439300 0.0055227663 0.0025733597 0.0052915963 + 439400 0.0030831807 0.0027848077 0.0043023107 + 439500 0.0048515837 0.0027475117 0.0051354006 + 439600 0.0057318888 0.0026987713 0.0055199353 + 439700 0.004861225 0.0027377519 0.0051303861 + 439800 0.0051200189 0.0021845632 0.0047045725 + 439900 0.0051621361 0.0020527049 0.0045934438 + 440000 0.0057624599 0.0024782095 0.0053144202 + 440100 0.0046420464 0.0031000907 0.0053848479 + 440200 0.0062301057 0.0032207917 0.0062871718 + 440300 0.0061432702 0.0028770404 0.0059006812 + 440400 0.0067205213 0.0027212803 0.0060290369 + 440500 0.0059789602 0.0028137637 0.0057565332 + 440600 0.0058185988 0.0031652411 0.0060290826 + 440700 0.0050817892 0.0033031854 0.0058043785 + 440800 0.0062662568 0.0027604333 0.0058446066 + 440900 0.0050632565 0.0027724837 0.0052645553 + 441000 0.0052671579 0.0031092681 0.0057016974 + 441100 0.0043811116 0.00299583 0.0051521584 + 441200 0.0045549877 0.0027253519 0.0049672599 + 441300 0.0057420638 0.0025819531 0.0054081252 + 441400 0.005067782 0.0026179863 0.0051122852 + 441500 0.0045041831 0.0025853352 0.0048022379 + 441600 0.0041433391 0.0026831201 0.0047224198 + 441700 0.0054100776 0.0025651141 0.0052278867 + 441800 0.0067533953 0.0029852045 0.0063091413 + 441900 0.0047596663 0.0037059499 0.0060485981 + 442000 0.0053624036 0.0032738252 0.0059131332 + 442100 0.0051464151 0.0027944117 0.0053274129 + 442200 0.0051920309 0.002840755 0.0053962077 + 442300 0.0056636797 0.0032036189 0.0059912113 + 442400 0.0045649429 0.0035508434 0.0057976512 + 442500 0.0046142528 0.0033136726 0.0055847502 + 442600 0.0052747653 0.002910494 0.0055066675 + 442700 0.0066585845 0.0028269246 0.0061041966 + 442800 0.0039361539 0.0026358168 0.0045731425 + 442900 0.0043322365 0.0026993357 0.0048316084 + 443000 0.0045744428 0.0028032386 0.0050547222 + 443100 0.0062439027 0.0028911264 0.0059642973 + 443200 0.0052513708 0.0033682986 0.0059529577 + 443300 0.0055303817 0.0033086407 0.0060306254 + 443400 0.0041924954 0.0028599614 0.0049234553 + 443500 0.0046536434 0.002758171 0.0050486361 + 443600 0.0045545631 0.0028416143 0.0050833134 + 443700 0.0035428713 0.0033599083 0.0051036652 + 443800 0.004382897 0.0035001787 0.0056573858 + 443900 0.0079017189 0.0031349304 0.0070240577 + 444000 0.0047893428 0.002777063 0.0051343177 + 444100 0.0047657192 0.0023260369 0.0046716643 + 444200 0.0040943267 0.002504197 0.0045193735 + 444300 0.0064630785 0.0024236971 0.0056047436 + 444400 0.0059552873 0.0024331697 0.0053642876 + 444500 0.0053767272 0.0023226653 0.0049690232 + 444600 0.0043329638 0.0020887919 0.0042214225 + 444700 0.0047737783 0.0026844343 0.0050340283 + 444800 0.003977059 0.0031674735 0.0051249323 + 444900 0.0039964901 0.0030856666 0.005052689 + 445000 0.0045421486 0.0024993426 0.0047349314 + 445100 0.004346563 0.0024721799 0.0046115039 + 445200 0.0036088105 0.0027974261 0.0045736375 + 445300 0.0043189962 0.0030255567 0.0051513126 + 445400 0.0066857306 0.0032457048 0.0065363378 + 445500 0.0044152075 0.0031630004 0.0053361104 + 445600 0.0047243431 0.0029252312 0.0052504938 + 445700 0.0041430176 0.0029075299 0.0049466714 + 445800 0.0038293036 0.0028271549 0.0047118903 + 445900 0.0050057749 0.003030862 0.0054946418 + 446000 0.0059914923 0.0027640874 0.005713025 + 446100 0.0053058957 0.0027253537 0.0053368492 + 446200 0.0051471977 0.0029108501 0.0054442365 + 446300 0.0042789589 0.0033591159 0.005465166 + 446400 0.0039802854 0.0032692142 0.0052282609 + 446500 0.0044080596 0.0023517907 0.0045213826 + 446600 0.0053742938 0.0024764041 0.0051215643 + 446700 0.004611337 0.0027471864 0.0050168289 + 446800 0.0053493577 0.0029255183 0.0055584053 + 446900 0.0041720928 0.0029517011 0.0050051531 + 447000 0.006767249 0.002405073 0.0057358283 + 447100 0.0055221371 0.0024966572 0.0052145841 + 447200 0.0044134446 0.0024369374 0.0046091796 + 447300 0.0050011161 0.0020977666 0.0045592534 + 447400 0.0042823765 0.0024540106 0.0045617428 + 447500 0.0047928719 0.0026555482 0.0050145399 + 447600 0.0047801156 0.0025843827 0.0049370959 + 447700 0.0044906232 0.0027341634 0.004944392 + 447800 0.0060969943 0.002609903 0.0056107674 + 447900 0.006031385 0.0024408677 0.00540944 + 448000 0.0040669389 0.002399875 0.0044015715 + 448100 0.0060424713 0.0022333173 0.0052073462 + 448200 0.0051840932 0.0022802285 0.0048317744 + 448300 0.0047547848 0.0022446017 0.0045848473 + 448400 0.0060123001 0.0022435216 0.0052027005 + 448500 0.0052020181 0.0023442604 0.0049046287 + 448600 0.005561712 0.0019589965 0.0046964016 + 448700 0.0036234954 0.002007808 0.0037912471 + 448800 0.0045741838 0.002034732 0.0042860881 + 448900 0.0043718779 0.0023066934 0.0044584771 + 449000 0.0046757031 0.0026611636 0.0049624862 + 449100 0.0060425739 0.0023168305 0.0052909098 + 449200 0.0041186587 0.0021362647 0.0041634171 + 449300 0.0037822041 0.0023871591 0.0042487127 + 449400 0.005178331 0.0025698083 0.0051185181 + 449500 0.0040157755 0.0025357032 0.0045122177 + 449600 0.0053278221 0.0024104043 0.0050326917 + 449700 0.0045527409 0.0021997974 0.0044405996 + 449800 0.0038990635 0.0020818205 0.0040008908 + 449900 0.0044828095 0.0020369569 0.0042433397 + 450000 0.0049635114 0.0020262884 0.0044692667 + 450100 0.0035521786 0.0020849276 0.0038332655 + 450200 0.0052211697 0.002294343 0.0048641375 + 450300 0.0052857225 0.0023754817 0.0049770482 + 450400 0.0043063693 0.0021362378 0.0042557789 + 450500 0.0043226818 0.0019038797 0.0040314496 + 450600 0.003823413 0.0019815114 0.0038633475 + 450700 0.0042747631 0.0019115549 0.0040155398 + 450800 0.0055858659 0.0020405967 0.00478989 + 450900 0.0057604484 0.0027347747 0.0055699954 + 451000 0.0042386959 0.0032725975 0.0053588306 + 451100 0.0071826399 0.0030908682 0.0066260738 + 451200 0.0039124654 0.0032342266 0.0051598932 + 451300 0.0058677828 0.0034854186 0.0063734679 + 451400 0.006438282 0.0031748312 0.0063436731 + 451500 0.0048921136 0.0026345962 0.0050424334 + 451600 0.005938308 0.0023880651 0.0053108261 + 451700 0.0046262983 0.0024120701 0.0046890763 + 451800 0.0037430292 0.0023094939 0.0041517661 + 451900 0.0048428483 0.0022834568 0.0046670462 + 452000 0.0059854173 0.0022567287 0.0052026763 + 452100 0.0062183354 0.0022347644 0.0052953514 + 452200 0.0054658653 0.0026200388 0.0053102694 + 452300 0.0055524403 0.0024750422 0.0052078839 + 452400 0.005003563 0.0023289167 0.0047916079 + 452500 0.0056818278 0.0028104012 0.0056069259 + 452600 0.005223316 0.0031013676 0.0056722185 + 452700 0.0057401607 0.0026157339 0.0054409692 + 452800 0.0058957429 0.0022609006 0.0051627115 + 452900 0.0042137134 0.0027284137 0.0048023508 + 453000 0.0062862727 0.0026278574 0.0057218823 + 453100 0.0043662392 0.0027550166 0.0049040249 + 453200 0.0044442918 0.003355687 0.0055431119 + 453300 0.0059963335 0.0029296648 0.0058809852 + 453400 0.0051329863 0.0026573336 0.0051837253 + 453500 0.0068271168 0.002694962 0.0060551835 + 453600 0.0053483136 0.0026032439 0.005235617 + 453700 0.0072114255 0.0026164658 0.0061658393 + 453800 0.004458976 0.0027643614 0.0049590137 + 453900 0.0055182098 0.0024153394 0.0051313333 + 454000 0.0044179965 0.0022301483 0.0044046309 + 454100 0.0059172601 0.002008565 0.0049209665 + 454200 0.0052779251 0.0020142719 0.0046120007 + 454300 0.0066158891 0.0022093718 0.0054656297 + 454400 0.0052858488 0.0021808304 0.0047824591 + 454500 0.0053429253 0.0022636096 0.0048933307 + 454600 0.0067293251 0.0022505756 0.0055626653 + 454700 0.0042449219 0.0025087988 0.0045980963 + 454800 0.0044919377 0.0025451342 0.0047560097 + 454900 0.0050262759 0.0025491515 0.0050230217 + 455000 0.0041853295 0.0025363501 0.0045963169 + 455100 0.0050320969 0.0026618337 0.0051385689 + 455200 0.0042504549 0.0023550321 0.0044470528 + 455300 0.0043846502 0.0024753922 0.0046334622 + 455400 0.0056711031 0.0028728801 0.0056641262 + 455500 0.0046295285 0.0029786781 0.0052572742 + 455600 0.0049766747 0.0024987513 0.0049482083 + 455700 0.0044787663 0.0025870158 0.0047914086 + 455800 0.0055729364 0.0024142832 0.0051572129 + 455900 0.0050974515 0.0025042982 0.0050132001 + 456000 0.0052151739 0.0024428946 0.0050097381 + 456100 0.0057634102 0.0022723744 0.0051090529 + 456200 0.005357478 0.0023478286 0.0049847123 + 456300 0.0058908281 0.0024826179 0.0053820099 + 456400 0.0068280572 0.0022588768 0.0056195612 + 456500 0.0062276117 0.0024500104 0.005515163 + 456600 0.0049359192 0.0024581389 0.0048875367 + 456700 0.0055209556 0.0020815055 0.0047988508 + 456800 0.0065737104 0.0020362311 0.0052717292 + 456900 0.0037896207 0.0023080375 0.0041732414 + 457000 0.0035330667 0.0023567518 0.0040956831 + 457100 0.0050664596 0.0019113863 0.0044050344 + 457200 0.0051997284 0.0018109329 0.0043701742 + 457300 0.0048649627 0.0022044861 0.0045989599 + 457400 0.0040363741 0.0030680025 0.0050546554 + 457500 0.004868475 0.0029337509 0.0053299535 + 457600 0.0058488769 0.0026264389 0.005505183 + 457700 0.0048008691 0.0022143343 0.0045772621 + 457800 0.0045491183 0.0022430535 0.0044820727 + 457900 0.0052229109 0.0027455195 0.0053161709 + 458000 0.0045521843 0.0028892488 0.005129777 + 458100 0.0037843087 0.0029750347 0.0048376241 + 458200 0.0058908568 0.0027113375 0.0056107437 + 458300 0.0044390666 0.0026214171 0.0048062702 + 458400 0.0058694169 0.0022180462 0.0051068998 + 458500 0.0046465162 0.0021476773 0.0044346345 + 458600 0.0041999142 0.0023323288 0.0043994741 + 458700 0.004038393 0.0024470405 0.0044346871 + 458800 0.0049249626 0.0022905638 0.0047145688 + 458900 0.0059248629 0.0026560582 0.0055722017 + 459000 0.0058551851 0.0030105384 0.0058923873 + 459100 0.0059704562 0.0037080985 0.0066466824 + 459200 0.0067476875 0.0035140401 0.0068351676 + 459300 0.0063549107 0.0032055615 0.0063333691 + 459400 0.0056231677 0.0032093101 0.0059769629 + 459500 0.0049721481 0.0027567568 0.005203986 + 459600 0.0050804815 0.0024140192 0.0049145687 + 459700 0.005090543 0.0029386329 0.0054441345 + 459800 0.0073273375 0.0026589513 0.0062653752 + 459900 0.0047069482 0.0030363903 0.0053530913 + 460000 0.0071149664 0.002485934 0.0059878315 + 460100 0.0045232327 0.0023422229 0.0045685015 + 460200 0.0039011479 0.0023880728 0.004308169 + 460300 0.0052166063 0.0023895815 0.0049571299 + 460400 0.0058553717 0.002356049 0.0052379897 + 460500 0.003769331 0.0023024807 0.0041576983 + 460600 0.0044425891 0.0025901201 0.0047767069 + 460700 0.0048049249 0.0030762461 0.0054411701 + 460800 0.0038050787 0.0030156292 0.0048884413 + 460900 0.0055574724 0.0026837961 0.0054191146 + 461000 0.0037252063 0.0024689779 0.0043024779 + 461100 0.0044132608 0.0025482741 0.0047204259 + 461200 0.0047577847 0.0028085289 0.0051502511 + 461300 0.0062671948 0.0027518409 0.0058364758 + 461400 0.0048884672 0.0028345273 0.0052405697 + 461500 0.0059439611 0.0031444593 0.0060700026 + 461600 0.0051192876 0.0033559026 0.0058755519 + 461700 0.0057464447 0.0030058714 0.0058341997 + 461800 0.0043789235 0.0031391124 0.0052943638 + 461900 0.0053001274 0.0027662812 0.0053749377 + 462000 0.0040188296 0.0025387826 0.0045168003 + 462100 0.0053038913 0.0019849181 0.004595427 + 462200 0.0036834213 0.0021394645 0.0039523985 + 462300 0.0061241928 0.0022375652 0.0052518163 + 462400 0.0067665333 0.0023209908 0.0056513939 + 462500 0.0048055384 0.0026984827 0.0050637087 + 462600 0.0053325179 0.0030094649 0.0056340635 + 462700 0.0063219786 0.003195951 0.0063075499 + 462800 0.0059905139 0.0029845222 0.0059329783 + 462900 0.0043668187 0.003197193 0.0053464866 + 463000 0.0056486229 0.0029108923 0.0056910739 + 463100 0.0054583055 0.003052586 0.0057390958 + 463200 0.0045377986 0.003046073 0.0052795207 + 463300 0.0065258803 0.002281827 0.0054937838 + 463400 0.0052539664 0.0019165157 0.0045024523 + 463500 0.0042581457 0.0019578191 0.0040536251 + 463600 0.0058754416 0.002011521 0.0049033399 + 463700 0.0052016904 0.0022716019 0.0048318089 + 463800 0.005303376 0.0022294118 0.0048396672 + 463900 0.0053250346 0.002138638 0.0047595535 + 464000 0.0045370561 0.0026446085 0.0048776908 + 464100 0.0036276267 0.0021673417 0.0039528142 + 464200 0.0058074579 0.0023499331 0.0052082913 + 464300 0.0058987413 0.0023788095 0.0052820962 + 464400 0.0050863288 0.0027761836 0.005279611 + 464500 0.0051814999 0.0028533438 0.0054036133 + 464600 0.0052262215 0.0026760432 0.0052483241 + 464700 0.0047922317 0.0026530435 0.0050117201 + 464800 0.0072995516 0.0023369637 0.0059297118 + 464900 0.0062876596 0.0023273194 0.0054220268 + 465000 0.0047130915 0.0027722073 0.005091932 + 465100 0.0053059015 0.0030296809 0.0056411793 + 465200 0.0071140274 0.002829789 0.0063312243 + 465300 0.0051996013 0.0030640614 0.0056232402 + 465400 0.0049424294 0.0026204389 0.0050530409 + 465500 0.004640903 0.002538005 0.0048221995 + 465600 0.0057528853 0.0024688011 0.0053002993 + 465700 0.0057775328 0.0025397103 0.0053833397 + 465800 0.0043930409 0.0023570419 0.0045192417 + 465900 0.0058210189 0.0025337639 0.0053987966 + 466000 0.0037705558 0.0025837434 0.0044395639 + 466100 0.0033904199 0.0024455778 0.0041143001 + 466200 0.0040639443 0.0024181859 0.0044184085 + 466300 0.0049604044 0.0021711037 0.0046125527 + 466400 0.0057981659 0.0019002999 0.0047540846 + 466500 0.0050051265 0.0020456512 0.0045091119 + 466600 0.0038299856 0.0023921224 0.0042771934 + 466700 0.0051769004 0.0020811644 0.0046291701 + 466800 0.0049427206 0.001945279 0.0043780244 + 466900 0.0039545539 0.002530434 0.004476816 + 467000 0.0056279428 0.0020895652 0.0048595682 + 467100 0.0043166941 0.0018834558 0.0040080787 + 467200 0.004521646 0.0022178899 0.0044433875 + 467300 0.0043993546 0.0024630686 0.0046283759 + 467400 0.0060550244 0.0028708605 0.0058510678 + 467500 0.0039694642 0.0028413901 0.0047951108 + 467600 0.0059745687 0.002223368 0.005163976 + 467700 0.0073579967 0.0018062479 0.0054277619 + 467800 0.0058510996 0.0025646917 0.0054445298 + 467900 0.0056589511 0.002398842 0.005184107 + 468000 0.0066277241 0.001717702 0.004979785 + 468100 0.004289371 0.00210594 0.0042171148 + 468200 0.0059869494 0.0022550407 0.0052017423 + 468300 0.0042434072 0.0024812083 0.0045697602 + 468400 0.0047578634 0.0026845806 0.0050263415 + 468500 0.0044200406 0.0028427741 0.0050182628 + 468600 0.0049601847 0.0024759274 0.0049172683 + 468700 0.0051813637 0.0022432679 0.0047934703 + 468800 0.0055160049 0.0019861104 0.0047010191 + 468900 0.0054145172 0.0018606241 0.0045255818 + 469000 0.0050179497 0.0017698286 0.0042396007 + 469100 0.006827133 0.0018968222 0.0052570517 + 469200 0.0043364205 0.0023818024 0.0045161344 + 469300 0.0042779268 0.0025621595 0.0046677016 + 469400 0.0043609692 0.0023604094 0.0045068239 + 469500 0.00435664 0.0022746122 0.004418896 + 469600 0.0054624151 0.002047811 0.0047363435 + 469700 0.0030212366 0.002020544 0.0035075588 + 469800 0.0030569168 0.0020561535 0.0035607298 + 469900 0.004441992 0.0018756072 0.0040619002 + 470000 0.0050354214 0.002190655 0.0046690264 + 470100 0.0052605988 0.0021559112 0.0047451121 + 470200 0.0039628229 0.0022485019 0.0041989538 + 470300 0.0038882512 0.002129247 0.0040429956 + 470400 0.0055003439 0.0021092776 0.0048164781 + 470500 0.0066998865 0.0024644286 0.005762029 + 470600 0.005626229 0.0027918429 0.0055610025 + 470700 0.0058792826 0.002680778 0.0055744874 + 470800 0.00429514 0.0022853162 0.0043993304 + 470900 0.0054355737 0.0024780238 0.0051533452 + 471000 0.0047345322 0.0026393068 0.0049695844 + 471100 0.0047741354 0.0027944164 0.0051441861 + 471200 0.0049859781 0.0021690278 0.0046230639 + 471300 0.0044161031 0.0018747419 0.0040482927 + 471400 0.0050214682 0.0020725083 0.0045440122 + 471500 0.0053692348 0.0026075721 0.0052502424 + 471600 0.006675278 0.0029349539 0.0062204423 + 471700 0.0055883027 0.0030122013 0.005762694 + 471800 0.0059790976 0.0033320077 0.0062748448 + 471900 0.0042649589 0.0037324354 0.0058315948 + 472000 0.0063931188 0.0036847621 0.0068313753 + 472100 0.0054117434 0.0041079481 0.0067715405 + 472200 0.0058045282 0.0036964952 0.0065534115 + 472300 0.0067190517 0.0027155745 0.0060226077 + 472400 0.0055353417 0.0022480471 0.0049724731 + 472500 0.0056498597 0.0024376224 0.0052184127 + 472600 0.0049199615 0.0027682172 0.0051897607 + 472700 0.0070035183 0.0030364636 0.0064835077 + 472800 0.0042817298 0.0032854213 0.0053928352 + 472900 0.0048778224 0.0031066164 0.0055074196 + 473000 0.0042209319 0.0030407662 0.0051182561 + 473100 0.0054840538 0.0026403523 0.0053395351 + 473200 0.0038314423 0.0026744629 0.0045602509 + 473300 0.0044381532 0.0026483069 0.0048327104 + 473400 0.0048748604 0.002879944 0.0052792894 + 473500 0.0055695798 0.0030065843 0.0057478619 + 473600 0.0052383457 0.0032031928 0.0057814411 + 473700 0.0062898565 0.0029743557 0.0060701444 + 473800 0.0074973081 0.0024897566 0.0061798379 + 473900 0.0051826012 0.0024512145 0.005002026 + 474000 0.0045143492 0.0024703317 0.004692238 + 474100 0.0042104287 0.0026474891 0.0047198095 + 474200 0.0061543926 0.0028413105 0.0058704256 + 474300 0.0053929571 0.0027057955 0.0053601415 + 474400 0.0042807328 0.0023167678 0.004423691 + 474500 0.0053386276 0.0019614777 0.0045890835 + 474600 0.0051915979 0.0022256763 0.0047809159 + 474700 0.0053101143 0.0027458601 0.005359432 + 474800 0.0065996491 0.0023805353 0.0056288001 + 474900 0.006165849 0.0019566348 0.0049913886 + 475000 0.0053501971 0.0023707722 0.0050040723 + 475100 0.0056335557 0.0019874605 0.0047602261 + 475200 0.0047311216 0.0017060137 0.0040346126 + 475300 0.0045025627 0.0017024679 0.003918573 + 475400 0.0054300759 0.0019177566 0.004590372 + 475500 0.005692519 0.0020686134 0.0048704001 + 475600 0.0045116865 0.0024280755 0.0046486712 + 475700 0.0046015725 0.0021616525 0.004426489 + 475800 0.0036448189 0.0022573947 0.004051329 + 475900 0.0050416596 0.0020447145 0.0045261563 + 476000 0.0049772145 0.0022565836 0.0047063064 + 476100 0.0050821571 0.0021573196 0.0046586938 + 476200 0.0057763973 0.0016699889 0.0045130594 + 476300 0.0042236306 0.0017734591 0.0038522773 + 476400 0.0048830418 0.002281843 0.0046852152 + 476500 0.0051305768 0.0022456879 0.0047708937 + 476600 0.0044399123 0.0017674343 0.0039527037 + 476700 0.0048235126 0.001747622 0.0041216946 + 476800 0.0029895271 0.002332608 0.0038040158 + 476900 0.0039065839 0.0023735788 0.0042963506 + 477000 0.0057358643 0.0025747243 0.005397845 + 477100 0.006495331 0.0028459599 0.0060428806 + 477200 0.0036942739 0.0030729041 0.0048911795 + 477300 0.0054288887 0.0026720818 0.0053441129 + 477400 0.0054835947 0.0025946863 0.0052936431 + 477500 0.0054529548 0.0021918722 0.0048757484 + 477600 0.0068092185 0.0020296056 0.0053810178 + 477700 0.0045444619 0.0023456665 0.0045823938 + 477800 0.0046679139 0.0025203573 0.0048178462 + 477900 0.0058005592 0.0025796245 0.0054345873 + 478000 0.005102984 0.0021915734 0.0047031984 + 478100 0.0048480484 0.0021639013 0.0045500501 + 478200 0.0058537532 0.002293732 0.0051748762 + 478300 0.0047485895 0.0030168759 0.0053540723 + 478400 0.005321422 0.0031839717 0.005803109 + 478500 0.0045197113 0.0034829863 0.0057075317 + 478600 0.003920075 0.0031543959 0.0050838078 + 478700 0.0045942518 0.0026425301 0.0049037634 + 478800 0.0053606151 0.0027259872 0.005364415 + 478900 0.0055184989 0.0025430031 0.0052591393 + 479000 0.0054709108 0.0025178673 0.0052105813 + 479100 0.0060734552 0.0025457248 0.0055350035 + 479200 0.0038710543 0.0029572874 0.0048625719 + 479300 0.0064768831 0.0025555783 0.0057434192 + 479400 0.0047266405 0.0022165166 0.0045429099 + 479500 0.0041899517 0.0021105472 0.004172789 + 479600 0.0051089757 0.0019238963 0.0044384702 + 479700 0.0052763911 0.0018409582 0.004437932 + 479800 0.0056727056 0.0020507629 0.0048427977 + 479900 0.0046079909 0.0022477124 0.0045157079 + 480000 0.0047371187 0.001880386 0.0042119366 + 480100 0.0055126582 0.0016567758 0.0043700372 + 480200 0.0036651617 0.0020150547 0.0038190014 + 480300 0.0043983013 0.0020484185 0.0042132074 + 480400 0.0041201815 0.0024795705 0.0045074723 + 480500 0.0035539699 0.0028926755 0.0046418951 + 480600 0.0040479456 0.0026857801 0.0046781284 + 480700 0.0048059515 0.0024318132 0.0047972425 + 480800 0.0056649585 0.0019205828 0.0047088046 + 480900 0.005004063 0.0019652244 0.0044281617 + 481000 0.0040456025 0.0020738351 0.0040650301 + 481100 0.0037035211 0.0018714687 0.0036942955 + 481200 0.0054814298 0.0020116416 0.0047095328 + 481300 0.0053114325 0.0016704856 0.0042847063 + 481400 0.0045450479 0.0015930901 0.0038301059 + 481500 0.0044955159 0.0019785231 0.0041911598 + 481600 0.004382536 0.0021368844 0.0042939138 + 481700 0.0041638758 0.0022370161 0.0042864238 + 481800 0.0048225945 0.0021764818 0.0045501026 + 481900 0.0043109698 0.0020686081 0.0041904136 + 482000 0.0051000011 0.002273925 0.0047840818 + 482100 0.0051725369 0.0026287365 0.0051745945 + 482200 0.0043606825 0.0026763124 0.0048225858 + 482300 0.0062271789 0.0022903576 0.0053552972 + 482400 0.006336912 0.0018858078 0.0050047567 + 482500 0.005813882 0.0020471028 0.0049086228 + 482600 0.0041865602 0.0023336123 0.0043941849 + 482700 0.0050079387 0.0022384298 0.0047032746 + 482800 0.0063791574 0.0026138117 0.0057535532 + 482900 0.004725331 0.0026780171 0.005003766 + 483000 0.005001861 0.0022868335 0.0047486869 + 483100 0.0046748767 0.0020798573 0.0043807732 + 483200 0.005604248 0.0021659655 0.0049243063 + 483300 0.0055097862 0.0027288832 0.0054407311 + 483400 0.0054278063 0.0024357829 0.0051072812 + 483500 0.0054492427 0.0020743408 0.00475639 + 483600 0.0045108603 0.0019886831 0.0042088722 + 483700 0.0036391367 0.0025148911 0.0043060287 + 483800 0.003780863 0.0024865492 0.0043474427 + 483900 0.004548274 0.0023844515 0.0046230552 + 484000 0.0048207915 0.0022779288 0.0046506621 + 484100 0.0048812449 0.0022334274 0.0046359151 + 484200 0.0070497565 0.0020759908 0.0055457928 + 484300 0.0068034416 0.002098698 0.0054472669 + 484400 0.0066215726 0.0019078977 0.005166953 + 484500 0.0039564701 0.002120789 0.0040681142 + 484600 0.0043868999 0.0020779724 0.0042371497 + 484700 0.0042864089 0.0018287335 0.0039384504 + 484800 0.0046100097 0.0019454191 0.0042144082 + 484900 0.0044831969 0.0020484014 0.0042549749 + 485000 0.0056751244 0.0018998529 0.0046930782 + 485100 0.0048586946 0.0015079674 0.0038993561 + 485200 0.0058916409 0.0017304499 0.0046302419 + 485300 0.0052061446 0.0018185229 0.0043809222 + 485400 0.0054987992 0.0020373649 0.0047438051 + 485500 0.0046091525 0.0018914765 0.0041600437 + 485600 0.0051514373 0.0018770523 0.0044125254 + 485700 0.0064069401 0.0018052085 0.0049586243 + 485800 0.0054154306 0.0023821156 0.0050475229 + 485900 0.0067457162 0.0029937362 0.0063138935 + 486000 0.0046136854 0.0031141199 0.0053849182 + 486100 0.0053139263 0.0024085899 0.0050240381 + 486200 0.0053620471 0.0019773408 0.0046164734 + 486300 0.0037387618 0.0021997594 0.0040399312 + 486400 0.0060661866 0.002301865 0.0052875662 + 486500 0.0045466293 0.0024188852 0.0046566793 + 486600 0.0051930471 0.0023155754 0.0048715282 + 486700 0.004942165 0.0024410016 0.0048734735 + 486800 0.0063950557 0.0022798436 0.0054274101 + 486900 0.0055105421 0.0026051746 0.0053173945 + 487000 0.0061576212 0.0023509877 0.0053816918 + 487100 0.0057075088 0.0023993584 0.0052085229 + 487200 0.0050952116 0.0025734102 0.0050812097 + 487300 0.0048605523 0.0021885109 0.004580814 + 487400 0.0051484957 0.0019376002 0.0044716254 + 487500 0.0036660335 0.0020809783 0.0038853541 + 487600 0.0053173554 0.0022569108 0.0048740467 + 487700 0.0050517592 0.0024071751 0.0048935879 + 487800 0.0054306478 0.002276436 0.004949333 + 487900 0.0049553062 0.0024631857 0.0049021255 + 488000 0.004595676 0.0025667823 0.0048287166 + 488100 0.0042972543 0.0026330129 0.0047480677 + 488200 0.0042027735 0.0026677265 0.004736279 + 488300 0.0042555673 0.0021093122 0.0042038492 + 488400 0.0039788366 0.0019465279 0.0039048615 + 488500 0.0046010947 0.0020319976 0.0042965989 + 488600 0.0053535197 0.0022985798 0.0049335153 + 488700 0.0047867103 0.0026788752 0.0050348342 + 488800 0.0045671245 0.0023502175 0.0045980991 + 488900 0.0043042132 0.0021525849 0.0042710648 + 489000 0.0040621391 0.0020836197 0.0040829538 + 489100 0.0035002268 0.0024774803 0.0042002482 + 489200 0.003617471 0.0022934435 0.0040739175 + 489300 0.0040389742 0.002265435 0.0042533676 + 489400 0.0052632795 0.0020305529 0.0046210733 + 489500 0.0051889776 0.002110869 0.0046648189 + 489600 0.0057555511 0.0024457472 0.0052785575 + 489700 0.0064930083 0.0029294758 0.0061252533 + 489800 0.0053644955 0.0033192481 0.0059595857 + 489900 0.0042996195 0.0029290722 0.0050452912 + 490000 0.0063427722 0.0026770177 0.0057988509 + 490100 0.0056094738 0.0028773619 0.0056382748 + 490200 0.0046299985 0.0029781372 0.0052569646 + 490300 0.0048014492 0.0026442064 0.0050074197 + 490400 0.0044407485 0.0023484415 0.0045341224 + 490500 0.004567439 0.0021386784 0.0043867147 + 490600 0.0066762667 0.0024293248 0.0057152998 + 490700 0.004466595 0.002712336 0.0049107382 + 490800 0.0043845317 0.0025788969 0.0047369086 + 490900 0.0048682176 0.0024263241 0.0048224 + 491000 0.0045882402 0.0026391377 0.0048974122 + 491100 0.0038772274 0.0022269042 0.0041352271 + 491200 0.0042423617 0.0020141747 0.0041022121 + 491300 0.0041589917 0.0022197861 0.0042667898 + 491400 0.0046337074 0.0023064972 0.0045871501 + 491500 0.0055676083 0.0022678105 0.0050081177 + 491600 0.0049517356 0.002723131 0.0051603134 + 491700 0.0068671087 0.002767813 0.0061477181 + 491800 0.0055963991 0.0029715769 0.0057260546 + 491900 0.0050704958 0.0033386805 0.0058343151 + 492000 0.0051144032 0.0032329584 0.0057502038 + 492100 0.0046705906 0.0029790669 0.0052778732 + 492200 0.0049224905 0.0028076296 0.0052304179 + 492300 0.0057805255 0.0025200417 0.0053651441 + 492400 0.0048184702 0.0022873195 0.0046589103 + 492500 0.004366199 0.002504202 0.0046531905 + 492600 0.0048857155 0.0028146177 0.0052193058 + 492700 0.0034530568 0.0028282291 0.0045277805 + 492800 0.0043684869 0.0022276855 0.0043778002 + 492900 0.0051460853 0.0021215629 0.0046544018 + 493000 0.0051312971 0.001845894 0.0043714544 + 493100 0.0056375988 0.0018482441 0.0046229998 + 493200 0.0040150112 0.0021702332 0.0041463715 + 493300 0.0054452575 0.0019266548 0.0046067425 + 493400 0.0052135454 0.0019255353 0.0044915772 + 493500 0.0048256624 0.0021935035 0.0045686342 + 493600 0.0049299229 0.0019969559 0.0044234023 + 493700 0.0047551348 0.0018740337 0.0042144517 + 493800 0.0032140244 0.0021466197 0.0037285223 + 493900 0.0041551801 0.0023500339 0.0043951616 + 494000 0.0038107074 0.0022371858 0.0041127683 + 494100 0.0032834325 0.0022900782 0.0039061427 + 494200 0.0046757787 0.0022883286 0.0045896885 + 494300 0.0045219864 0.0023410112 0.0045666764 + 494400 0.0046774086 0.00218029 0.004482452 + 494500 0.0064367496 0.0019536285 0.0051217162 + 494600 0.0047397831 0.0025279638 0.0048608258 + 494700 0.0050026501 0.0028421811 0.005304423 + 494800 0.0045419983 0.0026340343 0.0048695491 + 494900 0.0056420265 0.0028753428 0.0056522776 + 495000 0.005507323 0.0028003863 0.0055110219 + 495100 0.0047008538 0.0024023383 0.0047160398 + 495200 0.0053552105 0.0021364541 0.0047722218 + 495300 0.0034040418 0.0018591845 0.0035346113 + 495400 0.0048995382 0.0016600105 0.0040715019 + 495500 0.005778084 0.002001479 0.0048453797 + 495600 0.0047276551 0.0026102186 0.0049371114 + 495700 0.0051477279 0.0027275966 0.005261244 + 495800 0.0056346969 0.0030160442 0.0057893716 + 495900 0.007548474 0.0027741931 0.0064894577 + 496000 0.004194577 0.0027022593 0.0047667776 + 496100 0.0049067335 0.0023000918 0.0047151247 + 496200 0.0058939002 0.0018330963 0.0047340003 + 496300 0.0046005158 0.0019081988 0.0041725151 + 496400 0.0064731697 0.0020485627 0.0052345759 + 496500 0.0049280334 0.0024483804 0.0048738968 + 496600 0.005490108 0.0020169475 0.00471911 + 496700 0.0044688839 0.0018056445 0.0040051734 + 496800 0.0049985486 0.0016347172 0.0040949403 + 496900 0.0051988524 0.0018173291 0.0043761393 + 497000 0.004844001 0.00235639 0.0047405467 + 497100 0.0061112077 0.0023566644 0.0053645244 + 497200 0.0078006514 0.0022437953 0.0060831784 + 497300 0.004558918 0.0025357951 0.0047796376 + 497400 0.0047921801 0.0025138945 0.0048725457 + 497500 0.0048843636 0.0021674974 0.0045715202 + 497600 0.0056120386 0.0024121104 0.0051742857 + 497700 0.0045760778 0.0027305961 0.0049828844 + 497800 0.0035819925 0.0024594192 0.0042224312 + 497900 0.0074781907 0.0018958138 0.0055764858 + 498000 0.0045278918 0.0021953068 0.0044238786 + 498100 0.0050322353 0.0019859024 0.0044627057 + 498200 0.0044954206 0.0017299993 0.0039425891 + 498300 0.0040242139 0.0017524434 0.0037331112 + 498400 0.0055497334 0.0018656262 0.0045971357 + 498500 0.0049968978 0.0017442568 0.0042036674 + 498600 0.0050737898 0.0022926717 0.0047899276 + 498700 0.005525373 0.0023865778 0.0051060973 + 498800 0.0057704614 0.0020944633 0.0049346123 + 498900 0.0055561655 0.0023676252 0.0051023005 + 499000 0.0040895872 0.0025225513 0.004535395 + 499100 0.0042393223 0.0024756279 0.0045621693 + 499200 0.0077667447 0.0023186237 0.0061413183 + 499300 0.0064844065 0.0021250581 0.005316602 + 499400 0.0057094806 0.0018238033 0.0046339383 + 499500 0.0044348281 0.0018955745 0.0040783415 + 499600 0.0045596766 0.0022754682 0.004519684 + 499700 0.0048571506 0.0024647578 0.0048553866 + 499800 0.005310784 0.0024297556 0.0050436571 + 499900 0.0061446883 0.0019408077 0.0049651465 + 500000 0.0056624348 0.0024138843 0.0052008639 + 500100 0.0048835137 0.002178494 0.0045820984 + 500200 0.0055733307 0.002016472 0.0047595958 + 500300 0.0051382959 0.0023847449 0.0049137499 + 500400 0.004525495 0.0022094289 0.004436821 + 500500 0.0044443143 0.0022040318 0.0043914677 + 500600 0.0042794941 0.0019443915 0.004050705 + 500700 0.0035095916 0.001651998 0.0033793752 + 500800 0.0051789805 0.0014859761 0.0040350055 + 500900 0.0037251403 0.0017888331 0.0036223006 + 501000 0.005196477 0.0015769704 0.0041346114 + 501100 0.0048340341 0.0016927793 0.0040720304 + 501200 0.0047134371 0.0018507837 0.0041706786 + 501300 0.0043296181 0.0019996355 0.0041306194 + 501400 0.0056750864 0.0020678129 0.0048610195 + 501500 0.0043584182 0.0023054272 0.0044505861 + 501600 0.0059924049 0.0022003219 0.0051497087 + 501700 0.0049630935 0.0023988592 0.0048416318 + 501800 0.0058468728 0.0024451022 0.0053228599 + 501900 0.0049186537 0.0028502889 0.0052711888 + 502000 0.0061707998 0.0028398213 0.0058770118 + 502100 0.005503032 0.0028803688 0.0055888923 + 502200 0.0070180528 0.0031244659 0.0065786637 + 502300 0.0066838755 0.0031566969 0.0064464169 + 502400 0.0058283947 0.0023332199 0.0052018829 + 502500 0.004509389 0.0025082531 0.004727718 + 502600 0.0039601786 0.0026125611 0.0045617115 + 502700 0.0045416411 0.0026236358 0.0048589748 + 502800 0.0063011943 0.002491442 0.0055928111 + 502900 0.0050682158 0.0024076976 0.0049022101 + 503000 0.0070107344 0.001862217 0.0053128128 + 503100 0.0061854647 0.0020742312 0.0051186397 + 503200 0.0041900694 0.001880071 0.0039423708 + 503300 0.0058227259 0.0021278756 0.0049937485 + 503400 0.005453523 0.0021369014 0.0048210572 + 503500 0.0063048575 0.0020907495 0.0051939215 + 503600 0.0053862005 0.0026757929 0.0053268135 + 503700 0.0033275451 0.0027795829 0.004417359 + 503800 0.004557141 0.0026406128 0.0048835807 + 503900 0.0058531039 0.0023728567 0.0052536813 + 504000 0.0036455145 0.0021363477 0.0039306244 + 504100 0.0049457892 0.0018438005 0.0042780562 + 504200 0.004395065 0.0015966349 0.0037598309 + 504300 0.0046427608 0.0016608848 0.0039459936 + 504400 0.0045025319 0.0016507706 0.0038668606 + 504500 0.0045890442 0.0019425051 0.0042011753 + 504600 0.0047648729 0.0016263507 0.0039715616 + 504700 0.0046581454 0.0015048587 0.0037975397 + 504800 0.0043827462 0.001824576 0.0039817089 + 504900 0.0040884205 0.0018720093 0.0038842788 + 505000 0.0042261644 0.0018175427 0.0038976079 + 505100 0.0057494313 0.0018561532 0.0046859514 + 505200 0.0063262964 0.0020478088 0.0051615328 + 505300 0.0046771356 0.0024535425 0.0047555702 + 505400 0.0054914877 0.0026326858 0.0053355274 + 505500 0.0052362328 0.0026905597 0.005267768 + 505600 0.0070355087 0.0023559431 0.0058187325 + 505700 0.0041237394 0.0027402428 0.0047698958 + 505800 0.0044894867 0.0030239292 0.0052335984 + 505900 0.0049179813 0.0024798941 0.004900463 + 506000 0.0055150845 0.0020895527 0.0048040083 + 506100 0.0056561347 0.0027135545 0.0054974333 + 506200 0.0054337959 0.0029230384 0.0055974848 + 506300 0.0065274065 0.0024525733 0.0056652812 + 506400 0.0053089612 0.0018536343 0.0044666386 + 506500 0.0044572255 0.0018064189 0.0040002096 + 506600 0.0050722866 0.0014997487 0.0039962647 + 506700 0.0032767142 0.0013797102 0.002992468 + 506800 0.0034362649 0.0013548045 0.0030460911 + 506900 0.0050170389 0.0017192413 0.0041885651 + 507000 0.0055718197 0.0018875544 0.0046299344 + 507100 0.0071455244 0.0022827922 0.00579973 + 507200 0.0047344092 0.0024193278 0.0047495449 + 507300 0.0050290498 0.0022646182 0.0047398537 + 507400 0.0058703886 0.0017460469 0.0046353788 + 507500 0.0048327524 0.0016765618 0.0040551821 + 507600 0.0042987642 0.0016261512 0.0037419492 + 507700 0.0044786554 0.0021650077 0.0043693459 + 507800 0.004213251 0.0023742269 0.0044479364 + 507900 0.0060305488 0.0019401768 0.0049083375 + 508000 0.003595985 0.0019049745 0.0036748734 + 508100 0.0033402846 0.001802375 0.0034464213 + 508200 0.0043488891 0.002163127 0.0043035958 + 508300 0.0048044042 0.0025134679 0.0048781356 + 508400 0.0035499684 0.0025288183 0.0042760684 + 508500 0.0044713204 0.0023492824 0.0045500104 + 508600 0.0058588449 0.002351898 0.0052355483 + 508700 0.0032789412 0.0025474405 0.0041612943 + 508800 0.0051226125 0.0023944953 0.0049157811 + 508900 0.0062531839 0.0025439781 0.0056217171 + 509000 0.0035942299 0.0026501611 0.0044191962 + 509100 0.0061266408 0.0021961913 0.0052116473 + 509200 0.0041447386 0.0024501888 0.0044901773 + 509300 0.0061417541 0.0024764782 0.0054993727 + 509400 0.0065466947 0.0022071231 0.0054293244 + 509500 0.0052427949 0.0020891604 0.0046695985 + 509600 0.004688901 0.002059927 0.0043677455 + 509700 0.005319515 0.0026855881 0.0053037868 + 509800 0.0074845041 0.0029748415 0.0066586208 + 509900 0.0079878654 0.00291482 0.0068463475 + 510000 0.0066976224 0.0027541766 0.0060506626 + 510100 0.00683835 0.0021812792 0.0055470296 + 510200 0.0069571827 0.0021433416 0.0055675799 + 510300 0.0069416195 0.0023640465 0.0057806248 + 510400 0.0058623055 0.0022858652 0.0051712187 + 510500 0.0051198073 0.0024065676 0.0049264727 + 510600 0.0040816845 0.0022519116 0.0042608657 + 510700 0.0062419196 0.0019902787 0.0050624735 + 510800 0.004801117 0.0025262548 0.0048893046 + 510900 0.0059795981 0.0021087622 0.0050518457 + 511000 0.0063875193 0.0018539342 0.0049977914 + 511100 0.0054673922 0.0017633445 0.0044543266 + 511200 0.005795674 0.0015987836 0.0044513419 + 511300 0.0045666154 0.0016318381 0.0038794692 + 511400 0.0052553269 0.0020294053 0.0046160115 + 511500 0.0057930053 0.0019662174 0.0048174622 + 511600 0.0055270902 0.0016826762 0.0044030408 + 511700 0.0041399938 0.0017255193 0.0037631725 + 511800 0.0051729386 0.0017139027 0.0042599584 + 511900 0.0041396625 0.0022103365 0.0042478267 + 512000 0.0054187933 0.00205081 0.0047178724 + 512100 0.0056454439 0.0024898735 0.0052684904 + 512200 0.0068296237 0.0024373531 0.0057988085 + 512300 0.0054543851 0.0021255845 0.0048101646 + 512400 0.00447135 0.0024816884 0.004682431 + 512500 0.0054418554 0.0026090002 0.0052874135 + 512600 0.0050686832 0.0024335164 0.0049282589 + 512700 0.0062524184 0.0024246974 0.0055020595 + 512800 0.0047736173 0.0026574487 0.0050069635 + 512900 0.0040728674 0.002671811 0.0046764254 + 513000 0.0061994319 0.0024946726 0.0055459555 + 513100 0.0062538144 0.0023801221 0.0054581714 + 513200 0.0053455585 0.0026299108 0.0052609278 + 513300 0.0046967656 0.0022179163 0.0045296056 + 513400 0.0038996581 0.0021689066 0.0040882696 + 513500 0.0039149384 0.0021444307 0.0040713145 + 513600 0.0043341152 0.0024228919 0.0045560892 + 513700 0.0047852266 0.0027363072 0.0050915359 + 513800 0.0048969481 0.0024886463 0.0048988629 + 513900 0.0051300205 0.001893264 0.0044181959 + 514000 0.005614362 0.0017692143 0.0045325331 + 514100 0.0054211534 0.0016662906 0.0043345145 + 514200 0.0038296943 0.0018453568 0.0037302845 + 514300 0.0062263199 0.0016673401 0.004731857 + 514400 0.0061946996 0.0021080595 0.0051570132 + 514500 0.0049183927 0.0022027334 0.0046235048 + 514600 0.0064182885 0.0016088657 0.0047678671 + 514700 0.0050388119 0.0017274156 0.0042074558 + 514800 0.0052376557 0.0021864596 0.0047643682 + 514900 0.0053547913 0.0023719811 0.0050075424 + 515000 0.0042433818 0.0026020279 0.0046905674 + 515100 0.0054477361 0.0024901747 0.0051714823 + 515200 0.0052281857 0.0019065957 0.0044798434 + 515300 0.0065536511 0.0021660396 0.0053916648 + 515400 0.0039901416 0.0024720998 0.0044359976 + 515500 0.0048997544 0.0019462009 0.0043577988 + 515600 0.0045650123 0.0019063118 0.0041531538 + 515700 0.0041162934 0.0018106048 0.003836593 + 515800 0.0050461063 0.0015311981 0.0040148285 + 515900 0.0046146387 0.0016262137 0.0038974812 + 516000 0.0035174612 0.0018358289 0.0035670794 + 516100 0.0042844152 0.0016509081 0.0037596438 + 516200 0.0055611281 0.0014246619 0.0041617796 + 516300 0.005136607 0.0019813589 0.0045095327 + 516400 0.0043396551 0.0021748914 0.0043108154 + 516500 0.0043006405 0.0021204066 0.0042371281 + 516600 0.004263579 0.0016289506 0.0037274309 + 516700 0.0045408959 0.0014671841 0.0037021563 + 516800 0.0029021403 0.001943065 0.0033714622 + 516900 0.0059783309 0.001760332 0.0047027917 + 517000 0.0045705432 0.0016934536 0.0039430178 + 517100 0.0049468442 0.0021404428 0.0045752177 + 517200 0.004555038 0.0026605313 0.0049024641 + 517300 0.0052369647 0.0025063917 0.0050839602 + 517400 0.004330215 0.0029978763 0.005129154 + 517500 0.0055578571 0.0028711662 0.005606674 + 517600 0.0047299052 0.0024803027 0.0048083029 + 517700 0.0047423011 0.0024190556 0.0047531569 + 517800 0.0053251604 0.0020217861 0.0046427635 + 517900 0.0058197363 0.0017676349 0.0046320364 + 518000 0.0046937168 0.0016494521 0.0039596408 + 518100 0.0043342057 0.0016191619 0.0037524037 + 518200 0.0055818627 0.0018660005 0.0046133236 + 518300 0.0048042523 0.0019743529 0.0043389459 + 518400 0.0050937389 0.0022712502 0.0047783248 + 518500 0.0064487381 0.0023938224 0.0055678107 + 518600 0.0047140933 0.0022674993 0.0045877171 + 518700 0.0062927264 0.0023209448 0.0054181461 + 518800 0.0054475856 0.0026373643 0.0053185978 + 518900 0.0043727702 0.0024855831 0.0046378059 + 519000 0.0046556641 0.0028674161 0.0051588758 + 519100 0.0055212701 0.0024771327 0.0051946328 + 519200 0.0043848974 0.0020756139 0.0042338056 + 519300 0.0045381871 0.0022370443 0.0044706833 + 519400 0.0046222962 0.0024174005 0.0046924369 + 519500 0.0037252776 0.002817078 0.004650613 + 519600 0.0057771277 0.0028654359 0.005708866 + 519700 0.0045003544 0.0033403785 0.0055553967 + 519800 0.0054131291 0.0037315303 0.0063958048 + 519900 0.004651672 0.0038220128 0.0061115076 + 520000 0.0050434872 0.0036480255 0.0061303669 + 520100 0.0061169838 0.0032543786 0.0062650815 + 520200 0.0057008896 0.0026115024 0.005417409 + 520300 0.0058616515 0.0024870899 0.0053721214 + 520400 0.0055688332 0.0023874843 0.0051283944 + 520500 0.0060654097 0.002484404 0.0054697228 + 520600 0.0050095443 0.0028558316 0.0053214666 + 520700 0.0048441201 0.0030830217 0.0054672371 + 520800 0.0046001051 0.002607227 0.0048713412 + 520900 0.0065132277 0.0023634371 0.0055691663 + 521000 0.0037069127 0.0024112798 0.0042357759 + 521100 0.0045263865 0.0020989574 0.0043267883 + 521200 0.0058255187 0.0019188448 0.0047860923 + 521300 0.0056548613 0.0022866326 0.0050698846 + 521400 0.0057180677 0.0021968144 0.0050111758 + 521500 0.006054992 0.0020747359 0.0050549273 + 521600 0.0054204845 0.0018491084 0.0045170031 + 521700 0.0050595869 0.0015769048 0.0040671702 + 521800 0.00429125 0.001683371 0.0037954706 + 521900 0.004160497 0.0012801153 0.0033278599 + 522000 0.0043488192 0.0015318305 0.003672265 + 522100 0.0037533835 0.0016263224 0.0034736908 + 522200 0.0046829056 0.0016752456 0.0039801132 + 522300 0.004603022 0.0020112177 0.0042767676 + 522400 0.0038600481 0.0023859312 0.0042857987 + 522500 0.0036600432 0.0022469683 0.0040483959 + 522600 0.0050387204 0.0022731068 0.004753102 + 522700 0.0046225004 0.0020466085 0.0043217454 + 522800 0.0061591162 0.0018474901 0.0048789301 + 522900 0.0058733193 0.0021453235 0.0050360978 + 523000 0.0057785358 0.0026381246 0.0054822476 + 523100 0.0058086284 0.0029752782 0.0058342125 + 523200 0.0053045463 0.0033197256 0.005930557 + 523300 0.0056368931 0.0025175604 0.0052919688 + 523400 0.0054357745 0.0020576795 0.0047330998 + 523500 0.0045152407 0.0022688592 0.0044912042 + 523600 0.0054775569 0.0025929659 0.0052889509 + 523700 0.0056957761 0.0027874973 0.0055908871 + 523800 0.0072141772 0.0024197701 0.0059704979 + 523900 0.0050966289 0.0027573896 0.0052658867 + 524000 0.0036952035 0.0029085073 0.0047272403 + 524100 0.0058049953 0.002612452 0.0054695981 + 524200 0.0049804089 0.0033325738 0.0057838687 + 524300 0.004271243 0.0034427836 0.005545036 + 524400 0.0054026763 0.0029469565 0.0056060862 + 524500 0.0051462743 0.0024733652 0.0050062971 + 524600 0.0051864714 0.0026963626 0.005249079 + 524700 0.0064426316 0.002571182 0.0057421647 + 524800 0.005406054 0.0022945869 0.0049553791 + 524900 0.0057138623 0.0022691303 0.0050814219 + 525000 0.0053074613 0.0026613026 0.0052735688 + 525100 0.0052577072 0.0031688864 0.0057566642 + 525200 0.0059542925 0.0033829437 0.006313572 + 525300 0.0054027386 0.0028180348 0.0054771952 + 525400 0.0039002838 0.0027143462 0.0046340172 + 525500 0.0050597481 0.0027312205 0.0052215653 + 525600 0.0075880083 0.0023357388 0.0060704617 + 525700 0.0058801604 0.0024164394 0.0053105809 + 525800 0.0056364664 0.0028568707 0.0056310689 + 525900 0.0049235435 0.0033485449 0.0057718515 + 526000 0.0053048523 0.0029586924 0.0055696743 + 526100 0.0035919151 0.0023545624 0.0041224581 + 526200 0.0041038347 0.0022221535 0.0042420097 + 526300 0.0043376887 0.0023080409 0.0044429971 + 526400 0.0047448765 0.0026320614 0.0049674303 + 526500 0.0045152225 0.0026403474 0.0048626834 + 526600 0.0055994586 0.0024555189 0.0052115024 + 526700 0.0034248408 0.002340957 0.0040266209 + 526800 0.0039971892 0.0024833456 0.0044507122 + 526900 0.0048292603 0.0023836693 0.0047605709 + 527000 0.0044772355 0.0025830502 0.0047866895 + 527100 0.0046630396 0.0024453473 0.0047404371 + 527200 0.0052724274 0.002432336 0.0050273589 + 527300 0.0028373624 0.0027964359 0.0041929502 + 527400 0.0039430992 0.0023777745 0.0043185187 + 527500 0.0054090314 0.0023759811 0.0050382388 + 527600 0.002929373 0.0023180902 0.003759891 + 527700 0.0042005719 0.002268532 0.004336001 + 527800 0.0072953928 0.002750324 0.0063410251 + 527900 0.0046688096 0.0029938168 0.0052917465 + 528000 0.0041370893 0.0024909946 0.0045272183 + 528100 0.0056945304 0.0019620629 0.0047648396 + 528200 0.0051985379 0.0025677196 0.005126375 + 528300 0.0048719708 0.0027115162 0.0051094393 + 528400 0.0040207091 0.0024323355 0.0044112783 + 528500 0.008099733 0.0020396175 0.0060262048 + 528600 0.004857595 0.0020991004 0.0044899479 + 528700 0.005155611 0.0019757452 0.0045132725 + 528800 0.0063363581 0.0024680208 0.005586697 + 528900 0.0057551823 0.0026058676 0.0054384964 + 529000 0.0057822176 0.0022160173 0.0050619525 + 529100 0.0052314068 0.0022714314 0.0048462644 + 529200 0.0040419062 0.0019752328 0.0039646085 + 529300 0.0054694946 0.0018209101 0.0045129269 + 529400 0.005525826 0.0027032016 0.005422944 + 529500 0.0035249839 0.0031436108 0.0048785638 + 529600 0.0063949814 0.0022703901 0.00541792 + 529700 0.0048449065 0.0024352411 0.0048198436 + 529800 0.0038710993 0.0025057492 0.0044110559 + 529900 0.0035913338 0.0022896252 0.0040572348 + 530000 0.004025439 0.0021796409 0.0041609116 + 530100 0.0055054913 0.0021316764 0.0048414104 + 530200 0.004662836 0.0023023495 0.0045973391 + 530300 0.0050819495 0.0023109283 0.0048122003 + 530400 0.0049697193 0.0019635192 0.0044095529 + 530500 0.0050245349 0.0017477613 0.0042207746 + 530600 0.0054880307 0.0018981388 0.0045992789 + 530700 0.0038854129 0.0027918618 0.0047042135 + 530800 0.0030971261 0.0028578368 0.0043822036 + 530900 0.0046396336 0.0025274611 0.0048110308 + 531000 0.0061496971 0.0021006601 0.0051274641 + 531100 0.003942664 0.0024380325 0.0043785624 + 531200 0.0053784531 0.0025994681 0.0052466755 + 531300 0.0040589994 0.0027927185 0.0047905073 + 531400 0.0042906615 0.0028627686 0.0049745785 + 531500 0.0042420365 0.0024396007 0.0045274781 + 531600 0.0041338267 0.0022819651 0.004316583 + 531700 0.0051967044 0.0026242374 0.0051819903 + 531800 0.0056961593 0.0024130521 0.0052166306 + 531900 0.0052508334 0.0029224754 0.00550687 + 532000 0.0046108669 0.0028793818 0.0051487928 + 532100 0.0053268141 0.0026098765 0.0052316678 + 532200 0.0042737838 0.0028470577 0.0049505607 + 532300 0.0060723965 0.0022620961 0.0052508537 + 532400 0.0043630915 0.0022714526 0.0044189117 + 532500 0.005759076 0.0023319795 0.0051665248 + 532600 0.0039721966 0.0024627492 0.0044178147 + 532700 0.0037964448 0.0027724839 0.0046410466 + 532800 0.0069269806 0.0022317266 0.0056410999 + 532900 0.0052320668 0.002354348 0.0049295059 + 533000 0.0054862846 0.0026839308 0.0053842115 + 533100 0.0059860538 0.002910234 0.0058564949 + 533200 0.0043883215 0.0029217455 0.0050816225 + 533300 0.0069007279 0.002367797 0.005764249 + 533400 0.0044460037 0.0026977982 0.0048860657 + 533500 0.0038453385 0.0031650502 0.0050576778 + 533600 0.0042990919 0.0033082497 0.005424209 + 533700 0.0046166648 0.0028810644 0.0051533292 + 533800 0.0071946642 0.0022606732 0.005801797 + 533900 0.0043421277 0.0022322144 0.0043693554 + 534000 0.0053836981 0.0022624715 0.0049122604 + 534100 0.0057333637 0.0020435452 0.0048654352 + 534200 0.0046205351 0.0019239585 0.0041981281 + 534300 0.0043759909 0.0019749801 0.0041287882 + 534400 0.0043723622 0.0022821136 0.0044341356 + 534500 0.0064669782 0.0024836541 0.0056666199 + 534600 0.0053992901 0.002679735 0.0053371981 + 534700 0.0049876905 0.0023443119 0.0047991908 + 534800 0.0048767244 0.0018868546 0.0042871174 + 534900 0.0048734234 0.0020307143 0.0044293524 + 535000 0.0045361321 0.0024068776 0.0046395051 + 535100 0.0038598892 0.0022537706 0.0041535598 + 535200 0.0037093726 0.0023198876 0.0041455944 + 535300 0.0058200876 0.0023561987 0.0052207731 + 535400 0.0040214392 0.0021999067 0.0041792088 + 535500 0.0053283215 0.0021840804 0.0048066137 + 535600 0.0050856007 0.0017131378 0.004216207 + 535700 0.0041746577 0.0015726541 0.0036273685 + 535800 0.0031498584 0.0019191818 0.0034695027 + 535900 0.0060209231 0.0017883815 0.0047518046 + 536000 0.0060685328 0.0018642805 0.0048511365 + 536100 0.0049621059 0.0021014525 0.0045437389 + 536200 0.0055513401 0.0023605364 0.0050928367 + 536300 0.0043818501 0.0029696806 0.0051263724 + 536400 0.0052789959 0.0028790008 0.0054772566 + 536500 0.0084113473 0.0025030039 0.0066429639 + 536600 0.0075315133 0.0026804486 0.0063873653 + 536700 0.0053195672 0.0030633716 0.0056815961 + 536800 0.0058334754 0.0026098017 0.0054809654 + 536900 0.0043435181 0.0024756003 0.0046134256 + 537000 0.0041578301 0.0027205673 0.0047669993 + 537100 0.0050098109 0.0029256014 0.0053913677 + 537200 0.0049368827 0.0028776081 0.00530748 + 537300 0.0042533814 0.0028406052 0.0049340664 + 537400 0.0061248467 0.002577896 0.005592469 + 537500 0.0053425137 0.0024121422 0.0050416607 + 537600 0.00419403 0.0025514424 0.0046156915 + 537700 0.0043984167 0.0022420152 0.0044068609 + 537800 0.0060509307 0.0020128573 0.0049910497 + 537900 0.0057582777 0.0021682095 0.0050023618 + 538000 0.005168106 0.0019183638 0.0044620409 + 538100 0.00415536 0.0022882644 0.0043334807 + 538200 0.0041758214 0.002094797 0.0041500841 + 538300 0.0060414073 0.0016009722 0.0045744774 + 538400 0.0059164627 0.001440212 0.004352221 + 538500 0.0059881408 0.0018887063 0.0048359943 + 538600 0.0054638882 0.0022798466 0.0049691041 + 538700 0.004676916 0.0025521609 0.0048540805 + 538800 0.0036823962 0.0024285518 0.0042409812 + 538900 0.0032520028 0.0023278175 0.0039284126 + 539000 0.0064569985 0.0025443511 0.005722405 + 539100 0.0058323304 0.0023683166 0.0052389167 + 539200 0.0058181532 0.0024261978 0.0052898201 + 539300 0.0063346496 0.0027685561 0.0058863914 + 539400 0.0049713382 0.0032664342 0.0057132647 + 539500 0.0051553469 0.0028072772 0.0053446745 + 539600 0.0034955774 0.002000709 0.0037211885 + 539700 0.0046341533 0.0018053916 0.004086264 + 539800 0.0058158875 0.0016858552 0.0045483623 + 539900 0.0033440158 0.0020741365 0.0037200192 + 540000 0.0059217478 0.0018056509 0.0047202611 + 540100 0.0058188436 0.0020188269 0.004882789 + 540200 0.0053669225 0.0019813497 0.0046228819 + 540300 0.0056309524 0.0021264207 0.0048979051 + 540400 0.0059687146 0.0019614176 0.0048991443 + 540500 0.0071577582 0.0022036206 0.0057265797 + 540600 0.0044357735 0.0023275145 0.0045107468 + 540700 0.003720775 0.0023254591 0.0041567781 + 540800 0.0042992901 0.0026158502 0.0047319071 + 540900 0.0058258956 0.0021921781 0.0050596111 + 541000 0.0042267588 0.0021452375 0.0042255953 + 541100 0.0042663757 0.0018815804 0.0039814372 + 541200 0.0051209425 0.0018726817 0.0043931456 + 541300 0.0048161694 0.0022325362 0.0046029946 + 541400 0.003410056 0.0026263498 0.0043047367 + 541500 0.0060970468 0.0021104368 0.005111327 + 541600 0.0054115585 0.0020121991 0.0046757006 + 541700 0.005550315 0.0024542955 0.0051860911 + 541800 0.0046569833 0.0030407556 0.0053328646 + 541900 0.0065198796 0.0023648156 0.0055738188 + 542000 0.0035914259 0.0020516067 0.0038192617 + 542100 0.004027831 0.0020051808 0.0039876289 + 542200 0.0050244724 0.0020811023 0.0045540849 + 542300 0.0041593742 0.0024232781 0.0044704701 + 542400 0.0034621805 0.0025172793 0.0042213213 + 542500 0.0047468793 0.0022263168 0.0045626714 + 542600 0.0059738078 0.0022147048 0.0051549383 + 542700 0.0050328936 0.0027857707 0.005262898 + 542800 0.0040358938 0.0027701607 0.0047565771 + 542900 0.0061454759 0.0026578754 0.0056826018 + 543000 0.0050489272 0.0022291438 0.0047141627 + 543100 0.0053874388 0.0024079489 0.0050595789 + 543200 0.0045328634 0.0024302986 0.0046613173 + 543300 0.0048580572 0.0024755301 0.0048666052 + 543400 0.0040171779 0.002471646 0.0044488508 + 543500 0.0056598939 0.0018505406 0.0046362697 + 543600 0.005848611 0.0015529006 0.0044315138 + 543700 0.0050739241 0.0016990497 0.0041963717 + 543800 0.0042209717 0.0019467347 0.0040242443 + 543900 0.0050311154 0.0021651464 0.0046413985 + 544000 0.0041655246 0.0026758865 0.0047261056 + 544100 0.0062185838 0.0023812783 0.0054419875 + 544200 0.0077343388 0.0025669031 0.006373648 + 544300 0.005050591 0.0027903521 0.0052761899 + 544400 0.007226173 0.0023742654 0.0059308974 + 544500 0.005130265 0.0019896907 0.004514743 + 544600 0.0052409765 0.002094925 0.0046744681 + 544700 0.0046914294 0.0024294572 0.0047385201 + 544800 0.0045133219 0.0026119667 0.0048333673 + 544900 0.0044826015 0.0023664504 0.0045727309 + 545000 0.0051121156 0.0020420349 0.0045581543 + 545100 0.0053803874 0.0019188337 0.0045669931 + 545200 0.0053647116 0.0022799689 0.0049204129 + 545300 0.0044422481 0.0020683904 0.0042548094 + 545400 0.0033663788 0.0019715546 0.0036284442 + 545500 0.0049923823 0.0015867938 0.0040439819 + 545600 0.0059574551 0.0016125929 0.0045447778 + 545700 0.0048046611 0.001825263 0.0041900572 + 545800 0.005824663 0.0020227069 0.0048895332 + 545900 0.0042698559 0.0021754563 0.004277026 + 546000 0.0043578576 0.0022632576 0.0044081407 + 546100 0.0040583638 0.002198756 0.0041962319 + 546200 0.0047029774 0.0024125192 0.0047272659 + 546300 0.0056260242 0.0025609863 0.0053300451 + 546400 0.0034356425 0.0024043193 0.0040952995 + 546500 0.0042306732 0.0019864245 0.004068709 + 546600 0.0041433197 0.0019824813 0.0040217715 + 546700 0.0049038611 0.0020612044 0.0044748235 + 546800 0.0042639962 0.0020043224 0.004103008 + 546900 0.0052710799 0.0019062284 0.0045005881 + 547000 0.0066669992 0.002154315 0.0054357287 + 547100 0.0061413883 0.0025319701 0.0055546847 + 547200 0.0030254062 0.0025678408 0.0040569079 + 547300 0.0046777581 0.0022667526 0.0045690867 + 547400 0.0060405154 0.0019033233 0.0048763895 + 547500 0.0066588726 0.0019681875 0.0052456014 + 547600 0.0050597946 0.0024286851 0.0049190528 + 547700 0.0046251098 0.0026985338 0.004974955 + 547800 0.0060958738 0.0026454609 0.0056457738 + 547900 0.0050132859 0.0025522635 0.0050197402 + 548000 0.0048546843 0.0023714008 0.0047608157 + 548100 0.0040929333 0.0026554505 0.0046699411 + 548200 0.0053919288 0.0025106214 0.0051644613 + 548300 0.0046740067 0.0022920559 0.0045925436 + 548400 0.005816646 0.0020822344 0.0049451149 + 548500 0.0050631929 0.0019517423 0.0044437825 + 548600 0.0049312768 0.0018535691 0.0042806819 + 548700 0.0068481014 0.001717803 0.0050883529 + 548800 0.0057663949 0.0018578809 0.0046960284 + 548900 0.0047880553 0.0019291643 0.0042857852 + 549000 0.005647146 0.0023733327 0.0051527873 + 549100 0.005955082 0.0021947139 0.0051257308 + 549200 0.0040082975 0.0021145905 0.0040874244 + 549300 0.0052782893 0.0019891543 0.0045870624 + 549400 0.0041237668 0.0020754653 0.0041051318 + 549500 0.0055532475 0.0024332307 0.0051664697 + 549600 0.0053535557 0.0025181818 0.005153135 + 549700 0.0034846362 0.0030958099 0.0048109042 + 549800 0.0059212735 0.002758143 0.0056725198 + 549900 0.0057608429 0.0023236346 0.0051590494 + 550000 0.0045939652 0.0022032395 0.0044643317 + 550100 0.0037323526 0.0020145162 0.0038515335 + 550200 0.0052089504 0.0017874963 0.0043512766 + 550300 0.004500074 0.0019714429 0.004186323 + 550400 0.0048810035 0.0022435691 0.004645938 + 550500 0.0042663666 0.0023390606 0.0044389129 + 550600 0.0048501483 0.0022594958 0.0046466781 + 550700 0.0045184594 0.0021241862 0.0043481154 + 550800 0.0046434911 0.0023434839 0.0046289522 + 550900 0.0051087154 0.0022932464 0.0048076923 + 551000 0.0048192033 0.0021711174 0.004543069 + 551100 0.0050727505 0.0022333439 0.0047300883 + 551200 0.005791656 0.002012016 0.0048625967 + 551300 0.0050885804 0.0022819228 0.0047864585 + 551400 0.0048236218 0.0022396143 0.0046137406 + 551500 0.0070503252 0.0016283797 0.0050984617 + 551600 0.0044409029 0.0019605985 0.0041463554 + 551700 0.0060555511 0.0026070818 0.0055875484 + 551800 0.0058308889 0.0021959086 0.0050657992 + 551900 0.0042057309 0.0018932022 0.0039632104 + 552000 0.0047984144 0.0019302616 0.0042919812 + 552100 0.0046190862 0.0021148146 0.0043882711 + 552200 0.0042768651 0.002328956 0.0044339755 + 552300 0.003312967 0.0022450634 0.0038756643 + 552400 0.0036442508 0.0019043076 0.0036979623 + 552500 0.0045792904 0.0018768082 0.0041306777 + 552600 0.0031660457 0.0020909654 0.0036492535 + 552700 0.0039195736 0.0020074154 0.0039365805 + 552800 0.0041600967 0.001949835 0.0039973825 + 552900 0.0056814093 0.0021148695 0.0049111882 + 553000 0.0044316611 0.0020235485 0.0042047567 + 553100 0.0032779102 0.0024635199 0.0040768663 + 553200 0.0062724871 0.0019422959 0.0050295356 + 553300 0.0058122063 0.0014643447 0.00432504 + 553400 0.0059535416 0.0016042485 0.0045345072 + 553500 0.0054425556 0.0024698445 0.0051486023 + 553600 0.0042715664 0.0026722028 0.0047746143 + 553700 0.0052049274 0.0022531065 0.0048149067 + 553800 0.0044114588 0.0019917296 0.0041629945 + 553900 0.005019873 0.0020902186 0.0045609374 + 554000 0.0048724991 0.0022581706 0.0046563537 + 554100 0.0041247776 0.0021034624 0.0041336264 + 554200 0.005230158 0.0015227596 0.004096978 + 554300 0.0055851201 0.0020506436 0.00479957 + 554400 0.0049064765 0.0024283642 0.0048432706 + 554500 0.0055257832 0.0021889441 0.0049086656 + 554600 0.0053455494 0.0022406453 0.0048716579 + 554700 0.0064986966 0.0026730186 0.0058715959 + 554800 0.0047959593 0.0029160204 0.0052765317 + 554900 0.006471976 0.0024125427 0.0055979684 + 555000 0.0048199236 0.0030314226 0.0054037287 + 555100 0.0053014895 0.0033913513 0.0060006781 + 555200 0.0065357944 0.0028693931 0.0060862294 + 555300 0.0054135004 0.0025289464 0.0051934037 + 555400 0.0057436291 0.0020738062 0.0049007487 + 555500 0.0037904234 0.0019676084 0.0038332075 + 555600 0.0041233701 0.001985574 0.0040150452 + 555700 0.006063 0.001598577 0.0045827098 + 555800 0.0053988216 0.0018088027 0.0044660352 + 555900 0.0052647816 0.0018307233 0.004421983 + 556000 0.0043853277 0.0019996375 0.004158041 + 556100 0.0038447135 0.0022144896 0.0041068096 + 556200 0.004958842 0.002127997 0.0045686771 + 556300 0.0048188125 0.0023337222 0.0047054815 + 556400 0.0048051071 0.0021403949 0.0045054086 + 556500 0.0050575357 0.0019753808 0.0044646366 + 556600 0.0054179298 0.0021179519 0.0047845893 + 556700 0.0031056624 0.0020357358 0.003564304 + 556800 0.0047824441 0.0019551935 0.0043090527 + 556900 0.0042412927 0.0021890562 0.0042765675 + 557000 0.0049296875 0.0024746358 0.0049009663 + 557100 0.0042721054 0.0025116584 0.0046143353 + 557200 0.0048072134 0.0021655477 0.004531598 + 557300 0.0050023537 0.0025096059 0.0049717019 + 557400 0.0050536706 0.0029729969 0.0054603503 + 557500 0.0056734761 0.0029830862 0.0057755002 + 557600 0.0060015705 0.0021667435 0.0051206414 + 557700 0.005033288 0.002144194 0.0046215155 + 557800 0.00523837 0.0020057976 0.0045840578 + 557900 0.0048486604 0.0020898024 0.0044762525 + 558000 0.0049463276 0.0023242504 0.004758771 + 558100 0.0051096864 0.0020377359 0.0045526597 + 558200 0.0045483317 0.0021476351 0.0043862671 + 558300 0.0041507479 0.0022509973 0.0042939435 + 558400 0.0053334765 0.0021878993 0.0048129698 + 558500 0.0038861547 0.0024494651 0.0043621819 + 558600 0.0044352415 0.0027335732 0.0049165437 + 558700 0.0057870176 0.0020676911 0.0049159888 + 558800 0.0051092973 0.0020211822 0.0045359144 + 558900 0.0064785841 0.00230617 0.0054948481 + 559000 0.0043688487 0.0025187759 0.0046690686 + 559100 0.0044935855 0.0021971957 0.0044088824 + 559200 0.0049416359 0.0022499604 0.0046821718 + 559300 0.0053359854 0.002413445 0.0050397503 + 559400 0.0045221477 0.0030577286 0.0052834732 + 559500 0.0052521066 0.0028591842 0.0054442054 + 559600 0.0040636593 0.002436944 0.0044370263 + 559700 0.0043246015 0.002125368 0.0042538828 + 559800 0.0051114218 0.0023872844 0.0049030624 + 559900 0.0058918302 0.0027504275 0.0056503127 + 560000 0.0064093462 0.0031291053 0.0062837054 + 560100 0.0060729024 0.0025741335 0.0055631402 + 560200 0.0061194885 0.0021625676 0.0051745034 + 560300 0.0046349769 0.0024547972 0.0047360748 + 560400 0.0051075739 0.0025494206 0.0050633046 + 560500 0.0051281554 0.0028335732 0.0053575871 + 560600 0.0032772103 0.0032526599 0.0048656618 + 560700 0.0044674242 0.0027695865 0.0049683968 + 560800 0.0050710021 0.0025364888 0.0050323727 + 560900 0.0055251157 0.0023370866 0.0050564795 + 561000 0.0052039099 0.0022622719 0.0048235713 + 561100 0.0050769531 0.0027883226 0.0052871354 + 561200 0.0064498497 0.0026542987 0.0058288341 + 561300 0.0036017295 0.002621181 0.0043939072 + 561400 0.004206566 0.0026095236 0.0046799428 + 561500 0.0046478216 0.0023907074 0.0046783071 + 561600 0.0049888696 0.002736511 0.0051919703 + 561700 0.0041836223 0.0026446832 0.0047038098 + 561800 0.0068578053 0.0024014708 0.0057767968 + 561900 0.0058495127 0.0019104121 0.0047894691 + 562000 0.0050983777 0.0022487807 0.0047581385 + 562100 0.0059747553 0.0023111634 0.0052518633 + 562200 0.0056388428 0.0020751077 0.0048504756 + 562300 0.0054779083 0.0020684032 0.0047645612 + 562400 0.0040993817 0.002414198 0.0044318624 + 562500 0.0046115122 0.0028224859 0.0050922146 + 562600 0.0066544027 0.0025397551 0.005814969 + 562700 0.0074955373 0.0024252014 0.0061144112 + 562800 0.0044636138 0.0027536356 0.0049505705 + 562900 0.0047588846 0.0022307195 0.004572983 + 563000 0.0060616198 0.0020455854 0.0050290389 + 563100 0.005611219 0.0022601964 0.0050219682 + 563200 0.0051858853 0.0023609568 0.0049133848 + 563300 0.0054360326 0.0025230713 0.0051986186 + 563400 0.0038014879 0.0028472427 0.0047182875 + 563500 0.0037714532 0.0028341622 0.0046904243 + 563600 0.0051438334 0.0019551062 0.0044868367 + 563700 0.0045488643 0.0020665859 0.00430548 + 563800 0.0045385299 0.0018884888 0.0041222965 + 563900 0.0040290187 0.0018242781 0.0038073108 + 564000 0.0043997931 0.0017174145 0.0038829377 + 564100 0.0047580164 0.0019064199 0.0042482561 + 564200 0.0039910361 0.0023872913 0.0043516294 + 564300 0.0052640516 0.0024250879 0.0050159883 + 564400 0.0075413638 0.0023396526 0.0060514176 + 564500 0.0074387955 0.0029699319 0.006631214 + 564600 0.0043817146 0.003694873 0.0058514982 + 564700 0.004109151 0.0030417378 0.0050642106 + 564800 0.0052158901 0.00257147 0.0051386659 + 564900 0.0048216327 0.0022272255 0.0046003729 + 565000 0.0054344654 0.0019176622 0.0045924381 + 565100 0.0040944942 0.0023389508 0.0043542096 + 565200 0.0044856034 0.003058305 0.0052660629 + 565300 0.0056420202 0.0027681028 0.0055450347 + 565400 0.0062712969 0.002764641 0.005851295 + 565500 0.0077591687 0.0024233073 0.0062422732 + 565600 0.0046909461 0.0020748412 0.0043836663 + 565700 0.004748616 0.0021739876 0.0045111971 + 565800 0.0049728644 0.0022705921 0.0047181738 + 565900 0.0052254287 0.0024067331 0.0049786238 + 566000 0.0050621302 0.0027815034 0.0052730207 + 566100 0.0049361047 0.0028373296 0.0052668186 + 566200 0.0051447584 0.0024639085 0.0049960943 + 566300 0.0048032478 0.002570619 0.0049347175 + 566400 0.0053431566 0.0022532643 0.0048830992 + 566500 0.0058516703 0.0026135977 0.0054937167 + 566600 0.0048309574 0.0032879602 0.005665697 + 566700 0.0052846372 0.0029515238 0.0055525562 + 566800 0.0061046131 0.0026136774 0.0056182916 + 566900 0.0058063172 0.0027813308 0.0056391276 + 567000 0.0059914488 0.0029786529 0.0059275691 + 567100 0.0056421402 0.0031551932 0.0059321841 + 567200 0.0048636411 0.003085854 0.0054796774 + 567300 0.0077936006 0.0025445446 0.0063804574 + 567400 0.005579526 0.0026794657 0.0054256386 + 567500 0.0043730167 0.0023228948 0.0044752389 + 567600 0.0039097291 0.0022243704 0.0041486902 + 567700 0.0034960561 0.0019875226 0.0037082377 + 567800 0.0045981092 0.0020639147 0.0043270466 + 567900 0.0035917092 0.0021803528 0.0039481472 + 568000 0.0063089338 0.0020727167 0.005177895 + 568100 0.0055816686 0.0021771309 0.0049243584 + 568200 0.0043595924 0.0021749455 0.0043206824 + 568300 0.0047785853 0.0020720599 0.0044240198 + 568400 0.0041301238 0.0017934743 0.0038262696 + 568500 0.0054451207 0.0017941048 0.0044741251 + 568600 0.0047132475 0.0021022026 0.0044220041 + 568700 0.0048710068 0.0020065718 0.0044040205 + 568800 0.0044336099 0.0017164622 0.0038986296 + 568900 0.0045796105 0.0017998488 0.0040538759 + 569000 0.0041369526 0.0017806823 0.0038168386 + 569100 0.0040258792 0.0015974165 0.0035789039 + 569200 0.0046680277 0.0018978914 0.0041954362 + 569300 0.0036308384 0.0022652697 0.004052323 + 569400 0.0054802555 0.0020382481 0.0047355614 + 569500 0.0067300447 0.0019385014 0.0052509453 + 569600 0.0036313658 0.002445643 0.0042329558 + 569700 0.0036027736 0.0021229508 0.0038961909 + 569800 0.0056460881 0.0019873213 0.0047662553 + 569900 0.0050268359 0.0019225914 0.0043967372 + 570000 0.0051339175 0.0021950732 0.0047219232 + 570100 0.0048405507 0.0023727071 0.0047551657 + 570200 0.0051211215 0.0019885747 0.0045091267 + 570300 0.0061297598 0.0016611436 0.0046781347 + 570400 0.0040666234 0.0021270379 0.0041285791 + 570500 0.004322568 0.0022993174 0.0044268313 + 570600 0.0047291109 0.0021352739 0.0044628832 + 570700 0.0046008836 0.0021211702 0.0043856676 + 570800 0.0051786752 0.0019494628 0.004498342 + 570900 0.0062254505 0.0017268259 0.0047909148 + 571000 0.0068823285 0.0017017302 0.0050891263 + 571100 0.0049498776 0.0023745564 0.0048108242 + 571200 0.0036800103 0.0027306997 0.0045419547 + 571300 0.0053700291 0.0020990142 0.0047420754 + 571400 0.0034965741 0.0019696681 0.0036906382 + 571500 0.0047592008 0.001681059 0.0040234781 + 571600 0.0041193898 0.001686567 0.0037140792 + 571700 0.0054669725 0.0022189993 0.0049097749 + 571800 0.0064934294 0.0026560311 0.0058520159 + 571900 0.005047058 0.0028623253 0.0053464242 + 572000 0.005998126 0.0024644319 0.0054166345 + 572100 0.0043491174 0.0023203107 0.0044608919 + 572200 0.0052337935 0.0023319929 0.0049080006 + 572300 0.0072045616 0.0023940229 0.005940018 + 572400 0.0054550143 0.0024196343 0.0051045242 + 572500 0.0049230177 0.002367782 0.0047908297 + 572600 0.0060671525 0.0023702291 0.0053564057 + 572700 0.0062847963 0.0023754855 0.0054687837 + 572800 0.0053567603 0.0028237978 0.0054603282 + 572900 0.0043655155 0.0026894889 0.0048381411 + 573000 0.0063725382 0.0022279938 0.0053644774 + 573100 0.0047699084 0.0025742942 0.0049219835 + 573200 0.0036180176 0.0028280552 0.0046087983 + 573300 0.0050248209 0.0029792412 0.0054523952 + 573400 0.0044223145 0.0029865528 0.0051631607 + 573500 0.0057885747 0.0023286736 0.0051777377 + 573600 0.0048237176 0.0021931474 0.0045673209 + 573700 0.0042547699 0.0024557432 0.0045498878 + 573800 0.0031182702 0.0023675255 0.0039022992 + 573900 0.0052423501 0.0022464255 0.0048266447 + 574000 0.0046406461 0.0023493008 0.0046333688 + 574100 0.004734204 0.0017032876 0.0040334036 + 574200 0.005099507 0.0014834884 0.003993402 + 574300 0.0035158464 0.0016571093 0.0033875649 + 574400 0.0054534886 0.0019244782 0.0046086171 + 574500 0.0051266865 0.0019386542 0.0044619452 + 574600 0.0033872137 0.0020081573 0.0036753015 + 574700 0.004655954 0.0019817619 0.0042733642 + 574800 0.0046185312 0.0020618404 0.0043350237 + 574900 0.0047995006 0.0023048497 0.0046671039 + 575000 0.0050755125 0.0026755071 0.0051736109 + 575100 0.0036707798 0.0024006589 0.0042073708 + 575200 0.0051468898 0.0022196228 0.0047528576 + 575300 0.0064164476 0.0016211148 0.0047792101 + 575400 0.0051481085 0.0018695341 0.0044033687 + 575500 0.003592246 0.0024615973 0.0042296559 + 575600 0.0034785956 0.0025856151 0.0042977364 + 575700 0.0047854945 0.002123119 0.0044784796 + 575800 0.0053542315 0.0018618491 0.0044971349 + 575900 0.0066491088 0.0018320604 0.0051046687 + 576000 0.0044632955 0.0019028983 0.0040996765 + 576100 0.0049400038 0.002159288 0.0045906961 + 576200 0.0056257127 0.0025529044 0.0053218099 + 576300 0.0065379809 0.0022652213 0.0054831338 + 576400 0.0064144884 0.0018842407 0.0050413718 + 576500 0.0066138068 0.0016959868 0.0049512198 + 576600 0.0051943681 0.001691939 0.004248542 + 576700 0.0051076808 0.0021260857 0.0046400223 + 576800 0.0057374598 0.0022202768 0.0050441828 + 576900 0.0051313803 0.002232652 0.0047582532 + 577000 0.0053677554 0.0025087556 0.0051506977 + 577100 0.0039931891 0.0031944649 0.0051598626 + 577200 0.0045661265 0.0029783113 0.0052257017 + 577300 0.0061150982 0.002926073 0.0059358479 + 577400 0.0063128481 0.0034037144 0.0065108193 + 577500 0.00529392 0.0032683196 0.0058739209 + 577600 0.0052953873 0.0029013563 0.0055076797 + 577700 0.0054031807 0.0025436719 0.00520305 + 577800 0.0049522059 0.0028277539 0.0052651677 + 577900 0.003186122 0.002391623 0.0039597924 + 578000 0.0041565062 0.0019792218 0.0040250022 + 578100 0.0046856165 0.0021640189 0.0044702207 + 578200 0.005004822 0.0024979706 0.0049612815 + 578300 0.0049643222 0.002297127 0.0047405043 + 578400 0.0048462687 0.0024736235 0.0048588964 + 578500 0.0053253421 0.0024362043 0.0050572711 + 578600 0.0048523498 0.0024553941 0.00484366 + 578700 0.0041173504 0.0031647435 0.0051912519 + 578800 0.0058969382 0.0027387727 0.0056411719 + 578900 0.0048351795 0.0027667317 0.0051465466 + 579000 0.005392456 0.0024834153 0.0051375148 + 579100 0.0050003489 0.0022460832 0.0047071924 + 579200 0.004761308 0.0020586608 0.0044021171 + 579300 0.0064933985 0.002085013 0.0052809825 + 579400 0.0044239087 0.0023406677 0.0045180602 + 579500 0.0044149344 0.0019855554 0.0041585309 + 579600 0.004343994 0.0020321108 0.0041701703 + 579700 0.0061534638 0.0024957909 0.0055244489 + 579800 0.0054074957 0.0026312662 0.005292768 + 579900 0.0038822773 0.0027822137 0.0046930221 + 580000 0.0045458864 0.0028466773 0.0050841058 + 580100 0.0062173217 0.0027678126 0.0058279007 + 580200 0.0048361142 0.0033189745 0.0056992494 + 580300 0.0060229706 0.0029449387 0.0059093696 + 580400 0.0055788728 0.0020902743 0.0048361257 + 580500 0.0053304907 0.0015617874 0.0041853883 + 580600 0.0060043773 0.0015750012 0.0045302807 + 580700 0.0042033116 0.0022161988 0.0042850163 + 580800 0.0037392645 0.0023529392 0.0041933584 + 580900 0.0053314339 0.0019321542 0.0045562193 + 581000 0.0045078405 0.0022429492 0.0044616519 + 581100 0.004653413 0.0026129934 0.0049033451 + 581200 0.0046418397 0.0029003329 0.0051849883 + 581300 0.0055802853 0.0030312157 0.0057777624 + 581400 0.0058276453 0.0030040272 0.0058723214 + 581500 0.0057710868 0.0027307924 0.0055712492 + 581600 0.0049846721 0.0022437484 0.0046971417 + 581700 0.0053645595 0.002238059 0.0048784281 + 581800 0.0041218909 0.002876401 0.0049051442 + 581900 0.003990832 0.0029297999 0.0048940375 + 582000 0.0065845461 0.0026587263 0.0058995576 + 582100 0.005644132 0.0028451555 0.0056231267 + 582200 0.0039747651 0.0029563596 0.0049126893 + 582300 0.0056126114 0.0023658176 0.0051282747 + 582400 0.0037075478 0.0024873975 0.0043122062 + 582500 0.0050110884 0.0023822924 0.0048486875 + 582600 0.0057463571 0.002143084 0.0049713691 + 582700 0.0065125666 0.0026221532 0.0058275571 + 582800 0.0047086628 0.002345687 0.004663232 + 582900 0.0061582236 0.0016433638 0.0046743645 + 583000 0.0054020617 0.0018412531 0.0045000803 + 583100 0.004836987 0.0017160122 0.0040967167 + 583200 0.0046984081 0.0022266216 0.0045391193 + 583300 0.0032951672 0.0022620211 0.0038838612 + 583400 0.0040623566 0.0017210981 0.0037205393 + 583500 0.0046090068 0.0019804218 0.0042489174 + 583600 0.0046019311 0.0019187379 0.0041837508 + 583700 0.0068769673 0.0023676715 0.0057524288 + 583800 0.0044378935 0.0023142313 0.004498507 + 583900 0.0045304084 0.0022479313 0.0044777417 + 584000 0.0036520832 0.0024147512 0.0042122609 + 584100 0.005192162 0.0022978101 0.0048533273 + 584200 0.0056412988 0.0021722692 0.004948846 + 584300 0.0056996831 0.0018859777 0.0046912905 + 584400 0.0057460235 0.0021211956 0.0049493165 + 584500 0.0049503433 0.0025916272 0.0050281243 + 584600 0.0034366684 0.0024101098 0.004101595 + 584700 0.0057011918 0.0021863047 0.00499236 + 584800 0.0046062865 0.0021186076 0.0043857643 + 584900 0.0037326112 0.00263873 0.0044758746 + 585000 0.0056768629 0.0028334697 0.0056275507 + 585100 0.0050605832 0.0027540462 0.005244802 + 585200 0.0054018867 0.0020682263 0.0047269674 + 585300 0.0051439537 0.0017651079 0.0042968976 + 585400 0.0055837263 0.0021888048 0.0049370451 + 585500 0.0052868487 0.002050249 0.0046523698 + 585600 0.0055739294 0.0017872622 0.0045306806 + 585700 0.0045102005 0.0019919907 0.004211855 + 585800 0.0048682387 0.0020703826 0.0044664689 + 585900 0.0044081675 0.002029607 0.004199252 + 586000 0.0047445369 0.0019135712 0.0042487729 + 586100 0.0061438683 0.0023290354 0.0053529706 + 586200 0.0064298934 0.0026815881 0.0058463013 + 586300 0.0063310353 0.0026776793 0.0057937357 + 586400 0.0056225587 0.0023231989 0.005090552 + 586500 0.004513313 0.0022252042 0.0044466005 + 586600 0.0036709334 0.0025141921 0.0043209797 + 586700 0.0039206763 0.0027882455 0.0047179534 + 586800 0.0056586078 0.0025878302 0.0053729262 + 586900 0.0043161426 0.0023246934 0.0044490448 + 587000 0.005302919 0.0018250371 0.0044350675 + 587100 0.0053848123 0.0017673888 0.0044177261 + 587200 0.0060450607 0.001607223 0.0045825263 + 587300 0.0033986866 0.0016475711 0.0033203622 + 587400 0.0048842299 0.0015627839 0.0039667408 + 587500 0.0048093807 0.001503945 0.0038710621 + 587600 0.0064296816 0.0016741785 0.0048387874 + 587700 0.004477964 0.0017481161 0.003952114 + 587800 0.004673766 0.001872592 0.0041729612 + 587900 0.0045154712 0.0019943067 0.0042167651 + 588000 0.0058179436 0.0021686087 0.0050321278 + 588100 0.0063296355 0.0028528066 0.005968174 + 588200 0.0063104763 0.0030326314 0.0061385689 + 588300 0.0053733711 0.002671832 0.0053165381 + 588400 0.0069668213 0.002331082 0.0057600644 + 588500 0.0042131761 0.0027724587 0.0048461313 + 588600 0.0049260723 0.0026324256 0.0050569768 + 588700 0.0061105632 0.0027176386 0.0057251814 + 588800 0.0044183313 0.0023861135 0.0045607609 + 588900 0.0062797917 0.0017388073 0.0048296423 + 589000 0.0053554554 0.0017750262 0.0044109144 + 589100 0.0052395848 0.0019123143 0.0044911724 + 589200 0.005649998 0.0016765471 0.0044574055 + 589300 0.0048455209 0.0020097164 0.0043946212 + 589400 0.0049680434 0.0025145261 0.004959735 + 589500 0.0048758217 0.0023823071 0.0047821256 + 589600 0.0069714655 0.0019972605 0.0054285287 + 589700 0.0061939342 0.0020663066 0.0051148836 + 589800 0.0040019715 0.0022239792 0.0041936996 + 589900 0.0054484724 0.0025713165 0.0052529866 + 590000 0.0055838244 0.0025997242 0.0053480128 + 590100 0.0056311476 0.0026402196 0.0054118 + 590200 0.0045600356 0.0029196214 0.0051640139 + 590300 0.0056221651 0.0029479643 0.0057151237 + 590400 0.0053037629 0.0028772134 0.0054876593 + 590500 0.0053861522 0.002774568 0.0054255648 + 590600 0.0052524451 0.0027616944 0.0053468823 + 590700 0.005687739 0.0024413732 0.0052408072 + 590800 0.005327012 0.0026521622 0.0052740509 + 590900 0.0050047274 0.0026926897 0.005155954 + 591000 0.0047363931 0.0029678113 0.0052990048 + 591100 0.0057592426 0.002838585 0.0056732123 + 591200 0.0054888565 0.0028349957 0.0055365422 + 591300 0.0062098712 0.0028917928 0.0059482138 + 591400 0.0048013896 0.0026163868 0.0049795707 + 591500 0.0069362598 0.002417891 0.0058318314 + 591600 0.0042975064 0.0025297769 0.0046449558 + 591700 0.0035558072 0.0028050285 0.0045551523 + 591800 0.0041361128 0.0024496664 0.0044854094 + 591900 0.004860677 0.0022450309 0.0046373953 + 592000 0.0047403664 0.0022856139 0.004618763 + 592100 0.0045160144 0.0025640772 0.004786803 + 592200 0.0048421437 0.0026499851 0.0050332277 + 592300 0.0045459374 0.0024911724 0.004728626 + 592400 0.0057099908 0.0021439264 0.0049543125 + 592500 0.0057702407 0.0018874768 0.0047275172 + 592600 0.0059749222 0.0021945078 0.0051352899 + 592700 0.0054896634 0.0021052349 0.0048071786 + 592800 0.0052247694 0.0022646772 0.0048362434 + 592900 0.0043722841 0.0025692903 0.0047212739 + 593000 0.0046009259 0.0028896647 0.0051541829 + 593100 0.0064131909 0.0024141139 0.0055706063 + 593200 0.0060932381 0.002212048 0.0052110637 + 593300 0.0051408667 0.002031581 0.0045618514 + 593400 0.0058225232 0.002196462 0.0050622351 + 593500 0.0046498137 0.003115453 0.0054040331 + 593600 0.0043473891 0.003080368 0.0052200985 + 593700 0.0060869269 0.0022570863 0.0052529956 + 593800 0.0055092603 0.0017456013 0.0044571903 + 593900 0.0054248965 0.0018515588 0.004521625 + 594000 0.0047615775 0.0021745107 0.0045180997 + 594100 0.0045181701 0.0023870431 0.00461083 + 594200 0.0036143221 0.0024367859 0.00421571 + 594300 0.003974357 0.0022068963 0.0041630251 + 594400 0.0048553709 0.0023302648 0.0047200177 + 594500 0.0038107739 0.0024341095 0.0043097248 + 594600 0.0045993946 0.0022795729 0.0045433374 + 594700 0.0054976161 0.0022087075 0.0049145654 + 594800 0.0053993254 0.001955223 0.0046127034 + 594900 0.004650678 0.002448248 0.0047372536 + 595000 0.0051513077 0.0021824852 0.0047178945 + 595100 0.0052257158 0.0019043536 0.0044763856 + 595200 0.0058765106 0.0019741531 0.0048664982 + 595300 0.0065246371 0.0019511974 0.0051625422 + 595400 0.0045766779 0.0017792743 0.0040318579 + 595500 0.0048113662 0.0022210946 0.0045891889 + 595600 0.005632944 0.0020008283 0.004773293 + 595700 0.0047322748 0.0018307627 0.0041599293 + 595800 0.0063239196 0.0019812652 0.0050938193 + 595900 0.005473129 0.0021331571 0.0048269627 + 596000 0.0050048901 0.0024547859 0.0049181302 + 596100 0.0060253459 0.0024626162 0.0054282161 + 596200 0.005422019 0.0021810368 0.0048496868 + 596300 0.0055884721 0.0019972391 0.0047478152 + 596400 0.0061635212 0.001828353 0.0048619611 + 596500 0.0047397326 0.0019519134 0.0042847505 + 596600 0.0058896097 0.0022336338 0.0051324261 + 596700 0.0047341535 0.002369863 0.0046999541 + 596800 0.0045741426 0.0025141491 0.0047654849 + 596900 0.005337334 0.0021601309 0.0047870999 + 597000 0.0061277343 0.0021172384 0.0051332327 + 597100 0.0036795387 0.0025224095 0.0043334325 + 597200 0.0058694246 0.0025360382 0.0054248956 + 597300 0.0046305382 0.0021926977 0.0044717907 + 597400 0.0056575838 0.0020280863 0.0048126783 + 597500 0.0062503851 0.0026014208 0.0056777823 + 597600 0.0037152694 0.0032871415 0.0051157506 + 597700 0.00771326 0.0024935039 0.0062898741 + 597800 0.0040256438 0.0021219145 0.0041032861 + 597900 0.0044198802 0.0019964589 0.0041718687 + 598000 0.0044679102 0.0022707963 0.0044698459 + 598100 0.0050917027 0.0024086888 0.0049147612 + 598200 0.0054250737 0.002540289 0.0052104424 + 598300 0.006305976 0.0024264458 0.0055301684 + 598400 0.0040358751 0.0022316632 0.0042180705 + 598500 0.0033344307 0.0019989719 0.003640137 + 598600 0.0034738689 0.0023782545 0.0040880494 + 598700 0.0039590814 0.0026611544 0.0046097647 + 598800 0.0057954655 0.0023354018 0.0051878575 + 598900 0.0062037578 0.0019928266 0.0050462386 + 599000 0.0042501876 0.0018293697 0.0039212589 + 599100 0.0041485661 0.0020379257 0.0040797981 + 599200 0.0066555938 0.0020083351 0.0052841351 + 599300 0.0045276838 0.0023003655 0.0045288349 + 599400 0.0057774175 0.0024949729 0.0053385456 + 599500 0.0046491947 0.0029501216 0.0052383972 + 599600 0.004673742 0.0030391208 0.0053394782 + 599700 0.0043514765 0.0031535601 0.0052953024 + 599800 0.0043890737 0.0030622054 0.0052224527 + 599900 0.006153685 0.0025380814 0.0055668482 + 600000 0.0053250562 0.0023735739 0.0049945 + 600100 0.0051923368 0.0022278712 0.0047834745 + 600200 0.0051601375 0.0020776365 0.0046173917 + 600300 0.0047451337 0.0018672369 0.0042027324 + 600400 0.0072017421 0.0019302936 0.0054749011 + 600500 0.0057781583 0.0020605644 0.0049045017 + 600600 0.0053688308 0.0026460537 0.0052885251 + 600700 0.0065266991 0.0023957225 0.0056080822 + 600800 0.0053747177 0.0022308544 0.0048762233 + 600900 0.0041958749 0.0020003326 0.0040654898 + 601000 0.0044500222 0.0016525808 0.0038428261 + 601100 0.004507416 0.0019866672 0.004205161 + 601200 0.0051222044 0.0022547829 0.0047758679 + 601300 0.0048267342 0.0023113338 0.004686992 + 601400 0.0041048859 0.0022274836 0.0042478571 + 601500 0.0049359514 0.0020777653 0.0045071789 + 601600 0.0046811202 0.0023189063 0.0046228951 + 601700 0.0044403219 0.0027660103 0.0049514812 + 601800 0.0046581458 0.002279938 0.0045726192 + 601900 0.0054774248 0.0024664524 0.0051623724 + 602000 0.0044761111 0.0027990972 0.0050021831 + 602100 0.0053949784 0.0021598374 0.0048151783 + 602200 0.0065961549 0.0019629617 0.0052095067 + 602300 0.0058830721 0.0019253204 0.0048208949 + 602400 0.004323113 0.0019698611 0.0040976433 + 602500 0.0032642145 0.0021476033 0.0037542088 + 602600 0.0041136691 0.0024186966 0.0044433931 + 602700 0.0053804627 0.0022303295 0.004878526 + 602800 0.0043982191 0.0021097309 0.0042744793 + 602900 0.0056686651 0.0020894482 0.0048794943 + 603000 0.0056659766 0.0021676326 0.0049563555 + 603100 0.0039847668 0.0023057418 0.0042669943 + 603200 0.0058915925 0.0019705007 0.0048702689 + 603300 0.0051528896 0.0016406049 0.0041767928 + 603400 0.0057263824 0.002041463 0.0048599169 + 603500 0.0044328977 0.0021793681 0.0043611849 + 603600 0.0037981835 0.0019397355 0.0038091539 + 603700 0.0053760914 0.0017484471 0.004394492 + 603800 0.0046883621 0.0020180116 0.0043255648 + 603900 0.0048092774 0.0025723477 0.004939414 + 604000 0.0055031443 0.0020055891 0.004714168 + 604100 0.0049165117 0.0016542489 0.0040740945 + 604200 0.0040828727 0.0019696457 0.0039791847 + 604300 0.0043682844 0.0024886216 0.0046386366 + 604400 0.0046197689 0.0026497709 0.0049235634 + 604500 0.0055894567 0.0021413627 0.0048924234 + 604600 0.0051903511 0.0019364268 0.0044910528 + 604700 0.0045037919 0.0020095349 0.004226245 + 604800 0.004439308 0.0022324465 0.0044174184 + 604900 0.005534611 0.0018035673 0.0045276336 + 605000 0.0043921597 0.0018216509 0.003983417 + 605100 0.0049845736 0.0022729573 0.0047263021 + 605200 0.0058519356 0.0026644841 0.0055447336 + 605300 0.0060847891 0.002632108 0.0056269651 + 605400 0.0058721197 0.0024658698 0.0053560537 + 605500 0.0048410899 0.0021976889 0.0045804128 + 605600 0.0045105084 0.002031265 0.0042512809 + 605700 0.0054546884 0.0023471 0.0050318294 + 605800 0.0044642467 0.0026603244 0.0048575708 + 605900 0.0052115226 0.0024833467 0.005048393 + 606000 0.0045358862 0.0021000657 0.0043325722 + 606100 0.0044181697 0.002163983 0.0043385509 + 606200 0.0043422965 0.0020795148 0.0042167388 + 606300 0.0066575095 0.0017280339 0.0050047768 + 606400 0.0049151812 0.001729473 0.0041486637 + 606500 0.0045643775 0.00192391 0.0041704395 + 606600 0.0057121431 0.0019577762 0.0047692216 + 606700 0.0050703909 0.0018009024 0.0042964854 + 606800 0.0064835237 0.0014302314 0.0046213407 + 606900 0.0038252176 0.0014071276 0.0032898519 + 607000 0.003533358 0.0016815253 0.0034206 + 607100 0.0034298026 0.0019241227 0.0036122287 + 607200 0.0048350844 0.0017218934 0.0041016615 + 607300 0.0033857435 0.0016487304 0.003315151 + 607400 0.0050785215 0.0014842241 0.0039838089 + 607500 0.0043484731 0.0018211387 0.0039614028 + 607600 0.003566615 0.0020247633 0.0037802066 + 607700 0.0043900488 0.0020668224 0.0042275495 + 607800 0.0054984024 0.0023190031 0.005025248 + 607900 0.0066379578 0.0029109345 0.0061780544 + 608000 0.0055598457 0.0030563313 0.0057928179 + 608100 0.0053966565 0.002798497 0.0054546638 + 608200 0.0041338743 0.0026660756 0.0047007168 + 608300 0.0045551021 0.0024265738 0.0046685381 + 608400 0.006568203 0.0023811538 0.0056139412 + 608500 0.0040888072 0.0025593743 0.004571834 + 608600 0.0043456235 0.0024356597 0.0045745213 + 608700 0.0060409638 0.0018571908 0.0048304776 + 608800 0.0058438598 0.0018232312 0.0046995059 + 608900 0.006004032 0.0019789492 0.0049340588 + 609000 0.0050607345 0.0023679371 0.0048587673 + 609100 0.0046156525 0.0019710778 0.0042428442 + 609200 0.0045967442 0.0016086155 0.0038710755 + 609300 0.0059047244 0.0019481547 0.0048543863 + 609400 0.0055602021 0.0024430208 0.0051796827 + 609500 0.0041727583 0.0027666172 0.0048203967 + 609600 0.0048091172 0.0025705369 0.0049375242 + 609700 0.0043510872 0.0023665611 0.0045081118 + 609800 0.005206994 0.0022562946 0.004819112 + 609900 0.0040851589 0.0024266715 0.0044373356 + 610000 0.0048453122 0.0024051044 0.0047899065 + 610100 0.0044807184 0.0023205294 0.004525883 + 610200 0.0044065311 0.0024904142 0.0046592538 + 610300 0.0063767003 0.0020675909 0.0052061231 + 610400 0.0052350124 0.002591465 0.0051680727 + 610500 0.0064631881 0.0030060703 0.0061871707 + 610600 0.0046917817 0.0026273403 0.0049365766 + 610700 0.0041433235 0.0017814437 0.0038207357 + 610800 0.0053980184 0.0015865843 0.0042434214 + 610900 0.0059560617 0.0020122326 0.0049437317 + 611000 0.0059825823 0.0021664867 0.0051110389 + 611100 0.0054522541 0.0019767842 0.0046603155 + 611200 0.0043686732 0.0021365528 0.0042867592 + 611300 0.0049592097 0.0021467476 0.0045876086 + 611400 0.0053829924 0.00208063 0.0047300716 + 611500 0.0054176248 0.0021074343 0.0047739216 + 611600 0.0040710466 0.0026186241 0.0046223424 + 611700 0.0047167969 0.0027069152 0.0050284637 + 611800 0.0047889997 0.0025358679 0.0048929537 + 611900 0.0043770268 0.0024141511 0.004568469 + 612000 0.0045986959 0.0020628682 0.0043262888 + 612100 0.0048910599 0.0021146283 0.0045219469 + 612200 0.0046236932 0.0026374171 0.004913141 + 612300 0.0049948833 0.0025406442 0.0049990633 + 612400 0.0042780397 0.0020545487 0.0041601463 + 612500 0.0040714977 0.0020563876 0.0040603278 + 612600 0.0057202277 0.0020535336 0.0048689582 + 612700 0.0061748031 0.0021679693 0.0052071302 + 612800 0.0037393841 0.0021654217 0.0040058998 + 612900 0.0045130221 0.0019423264 0.0041635795 + 613000 0.0052607902 0.001859876 0.0044491712 + 613100 0.0040937432 0.0025051568 0.004520046 + 613200 0.0052245028 0.0018813284 0.0044527633 + 613300 0.0046609094 0.0015406041 0.0038346454 + 613400 0.0040357494 0.0016795821 0.0036659276 + 613500 0.0049109961 0.0015273187 0.0039444496 + 613600 0.0038297486 0.0017335481 0.0036185025 + 613700 0.005237457 0.0014093008 0.0039871117 + 613800 0.0036330253 0.0013500078 0.0031381374 + 613900 0.004394622 0.0016292279 0.0037922059 + 614000 0.0055512133 0.0016394119 0.0043716497 + 614100 0.0033392815 0.0015896177 0.0032331703 + 614200 0.0042461685 0.001492845 0.0035827561 + 614300 0.0058257262 0.0017078365 0.0045751861 + 614400 0.0056881367 0.0018670217 0.0046666515 + 614500 0.0048485166 0.0018422658 0.0042286451 + 614600 0.0040512309 0.001645056 0.0036390212 + 614700 0.0045304479 0.0018352233 0.0040650531 + 614800 0.0038727677 0.0022118342 0.004117962 + 614900 0.0037916265 0.0024098281 0.0042760193 + 615000 0.0042176584 0.0017797123 0.003855591 + 615100 0.0061138681 0.0015509966 0.0045601661 + 615200 0.0054113915 0.0019054779 0.0045688972 + 615300 0.0041271695 0.0027278208 0.0047591621 + 615400 0.0052153877 0.0029214117 0.0054883603 + 615500 0.004793971 0.0020710263 0.0044305589 + 615600 0.004138146 0.0020102637 0.0040470075 + 615700 0.0044327345 0.002187274 0.0043690105 + 615800 0.0058516503 0.0018461544 0.0047262635 + 615900 0.0065407361 0.0020272045 0.0052464731 + 616000 0.0051881886 0.002592717 0.0051462786 + 616100 0.003837684 0.0025177092 0.0044065692 + 616200 0.0059031089 0.002107387 0.0050128234 + 616300 0.00583192 0.002223385 0.0050937831 + 616400 0.0054435045 0.0025798535 0.0052590783 + 616500 0.0046041874 0.002461751 0.0047278745 + 616600 0.0061574066 0.0021681603 0.0051987589 + 616700 0.0047348293 0.0026742579 0.0050046817 + 616800 0.0035516777 0.0029646958 0.0047127871 + 616900 0.0044848245 0.0026513603 0.0048587349 + 617000 0.0049517836 0.0023856472 0.0048228531 + 617100 0.0046457178 0.0020401329 0.0043266972 + 617200 0.0045045946 0.0019031618 0.0041202669 + 617300 0.0068110496 0.0019038815 0.0052561949 + 617400 0.0047803818 0.002395717 0.0047485611 + 617500 0.0052556533 0.0025569267 0.0051436935 + 617600 0.0048927737 0.0028869456 0.0052951077 + 617700 0.0042618982 0.0030312032 0.0051288562 + 617800 0.0046338249 0.0028899038 0.0051706145 + 617900 0.0060684584 0.0022534314 0.0052402508 + 618000 0.0057880345 0.0022323041 0.0050811023 + 618100 0.005214687 0.002130533 0.0046971367 + 618200 0.0048455591 0.0020066945 0.0043916181 + 618300 0.0052590363 0.0017051076 0.0042935395 + 618400 0.0043967357 0.0017189625 0.0038829808 + 618500 0.0055488351 0.0017334525 0.0044645198 + 618600 0.0041961022 0.0019250703 0.0039903394 + 618700 0.0040643501 0.0017954215 0.0037958437 + 618800 0.0045993293 0.0015869514 0.0038506838 + 618900 0.0040624691 0.0018512324 0.0038507289 + 619000 0.0037251591 0.0018965683 0.0037300451 + 619100 0.0062023456 0.0018104882 0.0048632052 + 619200 0.0045998756 0.0022067339 0.0044707352 + 619300 0.0045081589 0.0025797222 0.0047985816 + 619400 0.0046268111 0.0026170835 0.0048943421 + 619500 0.003219306 0.0023457757 0.0039302779 + 619600 0.0048224076 0.0017779151 0.0041514438 + 619700 0.0049464104 0.0017941006 0.004228662 + 619800 0.0042063704 0.0016940673 0.0037643902 + 619900 0.005106122 0.0018045929 0.0043177623 + 620000 0.0044278464 0.0019235971 0.0041029278 + 620100 0.0043162431 0.0023825751 0.004506976 + 620200 0.0048456849 0.002446585 0.0048315705 + 620300 0.0067651998 0.0020879817 0.0054177285 + 620400 0.0041466803 0.0028435653 0.0048845095 + 620500 0.0052929719 0.0034085991 0.0060137337 + 620600 0.0052917723 0.0036858638 0.006290408 + 620700 0.0042548671 0.0033700569 0.0054642493 + 620800 0.0065818056 0.0027272418 0.0059667243 + 620900 0.0055124027 0.0023433273 0.005056463 + 621000 0.0048642478 0.0025391538 0.0049332758 + 621100 0.0041027017 0.0024180698 0.0044373683 + 621200 0.005387674 0.0024843949 0.0051361407 + 621300 0.0053318621 0.0027513444 0.0053756203 + 621400 0.0044139363 0.0028044446 0.0049769289 + 621500 0.0054543163 0.0025668798 0.0052514261 + 621600 0.0054456173 0.0027056228 0.0053858875 + 621700 0.0056413401 0.0026635871 0.0054401842 + 621800 0.0058271818 0.0020148299 0.0048828959 + 621900 0.0050115225 0.0020928403 0.004559449 + 622000 0.0054314449 0.0021543662 0.0048276555 + 622100 0.0052691813 0.0021078945 0.0047013197 + 622200 0.0054480627 0.0023136176 0.004995086 + 622300 0.0057243689 0.0024292731 0.005246736 + 622400 0.0050841528 0.0022032422 0.0047055986 + 622500 0.0060356811 0.0021222613 0.0050929481 + 622600 0.0048995914 0.0021113047 0.0045228224 + 622700 0.0048154551 0.0019710144 0.0043411212 + 622800 0.0044431358 0.0023705001 0.004557356 + 622900 0.005901811 0.0025726307 0.0054774283 + 623000 0.0052898325 0.0026709143 0.0052745037 + 623100 0.0056074346 0.0026132226 0.0053731318 + 623200 0.0033188788 0.0031632455 0.0047967562 + 623300 0.0042801315 0.0028731309 0.0049797581 + 623400 0.0067990512 0.0023847001 0.0057311081 + 623500 0.004584067 0.0021272064 0.0043834269 + 623600 0.0058148825 0.0019868721 0.0048488845 + 623700 0.0044906605 0.001966891 0.0041771379 + 623800 0.0050101027 0.0021213739 0.0045872838 + 623900 0.0041308774 0.0022590918 0.004292258 + 624000 0.0039088916 0.0021258761 0.0040497836 + 624100 0.0067143641 0.0019403738 0.0052450999 + 624200 0.0042684698 0.0024479993 0.0045488868 + 624300 0.0034836813 0.0020500657 0.0037646901 + 624400 0.0049981541 0.0016871721 0.004147201 + 624500 0.00406509 0.0015825335 0.00358332 + 624600 0.0044498772 0.0016054629 0.0037956368 + 624700 0.0055950397 0.0020721753 0.0048259839 + 624800 0.0035597631 0.0023670798 0.0041191507 + 624900 0.0068086764 0.0022343328 0.0055854782 + 625000 0.0048656857 0.0025869298 0.0049817595 + 625100 0.0052158221 0.0023580585 0.004925221 + 625200 0.0058551533 0.0021285191 0.0050103524 + 625300 0.0053019161 0.0020973334 0.0047068702 + 625400 0.0040714243 0.0024396637 0.0044435679 + 625500 0.0047771684 0.0024940706 0.0048453331 + 625600 0.0044665783 0.0020710149 0.0042694089 + 625700 0.0047428876 0.0017047169 0.0040391069 + 625800 0.0061800942 0.0021315332 0.0051732984 + 625900 0.0040623507 0.0025865355 0.0045859737 + 626000 0.0042000536 0.0022702762 0.0043374901 + 626100 0.0049874336 0.002068315 0.0045230675 + 626200 0.0048294883 0.002125679 0.0045026928 + 626300 0.0039624165 0.0021900756 0.0041403275 + 626400 0.0050521584 0.0021750688 0.004661678 + 626500 0.0045628492 0.002671477 0.0049172543 + 626600 0.0058034392 0.0028381132 0.0056944934 + 626700 0.0043802864 0.0027828709 0.0049387931 + 626800 0.0055787823 0.0022801198 0.0050259267 + 626900 0.0047261128 0.002642978 0.0049691117 + 627000 0.0046310906 0.0027162425 0.0049956074 + 627100 0.0052641576 0.0028193662 0.0054103188 + 627200 0.004641862 0.0030909146 0.0053755811 + 627300 0.0057270046 0.0028490403 0.0056678004 + 627400 0.0045621716 0.0029096211 0.005155065 + 627500 0.007032323 0.0028103944 0.0062716159 + 627600 0.0039459225 0.003064009 0.0050061427 + 627700 0.0038587382 0.0028518976 0.0047511203 + 627800 0.0075717393 0.0020585279 0.0057852433 + 627900 0.0051357981 0.0021364778 0.0046642534 + 628000 0.0044260964 0.0025114879 0.0046899572 + 628100 0.0060593105 0.0027756842 0.0057580011 + 628200 0.0043547263 0.0027668765 0.0049102183 + 628300 0.0037209496 0.0025657362 0.0043971411 + 628400 0.0045627953 0.002248441 0.0044941918 + 628500 0.005239751 0.0026664844 0.0052454244 + 628600 0.0046453025 0.003765475 0.0060518348 + 628700 0.0066401358 0.0038796887 0.0071478805 + 628800 0.0059895125 0.0033733858 0.006321349 + 628900 0.0070768624 0.0029143348 0.006397478 + 629000 0.0054266687 0.0027572044 0.0054281429 + 629100 0.0034375238 0.0026996285 0.0043915348 + 629200 0.0051925923 0.0024610111 0.0050167401 + 629300 0.0041555817 0.0027128264 0.0047581517 + 629400 0.0044521086 0.0027204906 0.0049117628 + 629500 0.0041809334 0.002529072 0.0045868752 + 629600 0.0042669357 0.0020779439 0.0041780763 + 629700 0.0045680512 0.0020945771 0.0043429148 + 629800 0.0059147104 0.0023078883 0.0052190348 + 629900 0.0043712888 0.0026237507 0.0047752444 + 630000 0.0048157422 0.0026045603 0.0049748084 + 630100 0.0055707573 0.0030457721 0.0057876292 + 630200 0.0045766477 0.0033000415 0.0055526103 + 630300 0.0057071689 0.0028730917 0.0056820889 + 630400 0.0067087598 0.0026110316 0.0059129994 + 630500 0.0056872862 0.0021737422 0.0049729534 + 630600 0.0056833597 0.0023016848 0.0050989634 + 630700 0.0059496266 0.0022055037 0.0051338355 + 630800 0.0065498756 0.0023516507 0.0055754176 + 630900 0.0064522018 0.0024759231 0.0056516161 + 631000 0.0063096132 0.0026066423 0.005712155 + 631100 0.00549989 0.0025803672 0.0052873443 + 631200 0.0049976878 0.0028900495 0.0053498489 + 631300 0.0045690105 0.0026839249 0.0049327347 + 631400 0.0062222616 0.0026718145 0.0057343339 + 631500 0.0063024813 0.0026585647 0.0057605672 + 631600 0.0040453333 0.0028058985 0.004796961 + 631700 0.0057699328 0.0028600471 0.0056999359 + 631800 0.0061370821 0.0025596931 0.0055802881 + 631900 0.0055751983 0.0021654586 0.0049095015 + 632000 0.0038636372 0.0025999688 0.0045016028 + 632100 0.0056280259 0.0025686555 0.0053386995 + 632200 0.0050487326 0.002587086 0.0050720091 + 632300 0.0040208309 0.002606145 0.0045851477 + 632400 0.0058991885 0.0027613761 0.005664883 + 632500 0.0049623844 0.0026638914 0.005106315 + 632600 0.0044826823 0.0025823913 0.0047887114 + 632700 0.0050605848 0.0030645981 0.0055553548 + 632800 0.0046536373 0.0030282114 0.0053186735 + 632900 0.0059450116 0.0028035921 0.0057296525 + 633000 0.005127998 0.002693259 0.0052171955 + 633100 0.0048254285 0.0024465338 0.0048215494 + 633200 0.0055120519 0.0027326057 0.0054455688 + 633300 0.0050428877 0.0026823999 0.0051644461 + 633400 0.0041148125 0.002450661 0.0044759203 + 633500 0.0056274963 0.0021191733 0.0048889566 + 633600 0.0053931469 0.0016944153 0.0043488548 + 633700 0.0054379029 0.0019339488 0.0046104166 + 633800 0.0062857743 0.0023004847 0.0053942643 + 633900 0.0053106209 0.002283413 0.0048972342 + 634000 0.006609494 0.0020822009 0.0053353113 + 634100 0.0063953619 0.0023051764 0.0054528935 + 634200 0.0039006993 0.0024728184 0.0043926939 + 634300 0.0045421041 0.002010268 0.0042458349 + 634400 0.0060688812 0.0019176166 0.0049046441 + 634500 0.0048143248 0.0023138428 0.0046833933 + 634600 0.0038704497 0.0027908592 0.0046958461 + 634700 0.0050077691 0.0029276721 0.0053924335 + 634800 0.0040518363 0.0025723648 0.004566628 + 634900 0.0061577116 0.0022448278 0.0052755764 + 635000 0.003805301 0.0021431074 0.004016029 + 635100 0.0060436908 0.0020338949 0.005008524 + 635200 0.0053662142 0.0017545172 0.0043957008 + 635300 0.0046101363 0.0017445886 0.0040136401 + 635400 0.0057987552 0.001506208 0.0043602828 + 635500 0.0046143387 0.0018567985 0.0041279183 + 635600 0.0052171456 0.001698415 0.0042662289 + 635700 0.0040155062 0.0018533852 0.0038297672 + 635800 0.0051347926 0.0016021457 0.0041294264 + 635900 0.0051390971 0.0019683836 0.004497783 + 636000 0.0038733629 0.0022666666 0.0041730875 + 636100 0.0057102314 0.0021733446 0.0049838491 + 636200 0.0051251761 0.0020994622 0.0046220098 + 636300 0.0074337052 0.0020145623 0.0056733391 + 636400 0.0044536816 0.0019611078 0.0041531542 + 636500 0.0033599938 0.0022054654 0.0038592123 + 636600 0.0046226138 0.0022417738 0.0045169665 + 636700 0.0060414146 0.0022826514 0.0052561602 + 636800 0.004148215 0.0026954367 0.0047371363 + 636900 0.0034877892 0.0026158173 0.0043324635 + 637000 0.0069044682 0.0021132824 0.0055115754 + 637100 0.0050049356 0.002607555 0.0050709218 + 637200 0.0054464766 0.0027141338 0.0053948215 + 637300 0.00623623 0.0023363033 0.0054056978 + 637400 0.0062249278 0.0025260644 0.0055898961 + 637500 0.0037915594 0.0026230007 0.0044891589 + 637600 0.0043693529 0.0024867305 0.0046372714 + 637700 0.00498965 0.002001712 0.0044575554 + 637800 0.0038762921 0.0021788283 0.0040866909 + 637900 0.0044616372 0.0024603771 0.0046563392 + 638000 0.0044222798 0.0024634653 0.0046400561 + 638100 0.0051703666 0.0021879269 0.0047327168 + 638200 0.004445918 0.0021376613 0.0043258865 + 638300 0.005299031 0.0021928211 0.0048009379 + 638400 0.0059526405 0.0020993716 0.0050291869 + 638500 0.005175845 0.0023209956 0.0048684819 + 638600 0.0047167462 0.0025777505 0.004899274 + 638700 0.0041727393 0.0025332559 0.0045870261 + 638800 0.0058723164 0.0022994916 0.0051897723 + 638900 0.0060132619 0.0022657134 0.0052253658 + 639000 0.004945629 0.0024772919 0.0049114687 + 639100 0.0052189351 0.0024241949 0.0049928895 + 639200 0.0066683921 0.0025594879 0.0058415871 + 639300 0.0062841785 0.0028762519 0.005969246 + 639400 0.0063586768 0.0029737082 0.0061033695 + 639500 0.0065281995 0.0023083036 0.0055214018 + 639600 0.0054707149 0.0025453049 0.0052379224 + 639700 0.0055758524 0.002709463 0.0054538278 + 639800 0.0034595929 0.0029669909 0.0046697593 + 639900 0.0041244752 0.0026762085 0.0047062236 + 640000 0.0051431498 0.0028808391 0.0054122331 + 640100 0.0051798608 0.0031722331 0.0057216958 + 640200 0.0057214799 0.0032292551 0.006045296 + 640300 0.0054455284 0.0027157322 0.0053959532 + 640400 0.0054455773 0.0024854322 0.0051656772 + 640500 0.0047345391 0.0027558777 0.0050861587 + 640600 0.006733415 0.0025880406 0.0059021433 + 640700 0.0047395064 0.0027336703 0.0050663962 + 640800 0.0062411417 0.0025408779 0.0056126898 + 640900 0.0050998752 0.0017375373 0.0042476321 + 641000 0.0056561156 0.0021846421 0.0049685115 + 641100 0.0058538656 0.00254139 0.0054225895 + 641200 0.004950766 0.0024075581 0.0048442632 + 641300 0.0056893086 0.0023597147 0.0051599213 + 641400 0.0043746791 0.0022920463 0.0044452086 + 641500 0.0037236182 0.00256163 0.0043943483 + 641600 0.0053100116 0.0023907191 0.0050042405 + 641700 0.005428081 0.0030217147 0.0056933483 + 641800 0.006267192 0.0029533727 0.0060380063 + 641900 0.0057774934 0.0026972 0.0055408101 + 642000 0.0038449551 0.0027537668 0.0046462057 + 642100 0.004257314 0.0023520245 0.0044474213 + 642200 0.0052856624 0.0023596918 0.0049612288 + 642300 0.0048658893 0.002423782 0.0048187119 + 642400 0.005788242 0.0026162355 0.0054651359 + 642500 0.0062273412 0.002805341 0.0058703605 + 642600 0.0054248221 0.0024190649 0.0050890945 + 642700 0.005242129 0.0023067004 0.0048868108 + 642800 0.0043918511 0.0023322406 0.0044938547 + 642900 0.00522115 0.0024326377 0.0050024225 + 643000 0.0059783853 0.0024072907 0.0053497772 + 643100 0.0046466198 0.0027894466 0.0050764547 + 643200 0.0073782268 0.0023709219 0.0060023929 + 643300 0.0046385936 0.0025431633 0.0048262211 + 643400 0.0047608314 0.0030721144 0.0054153361 + 643500 0.0059928139 0.0027744882 0.0057240763 + 643600 0.0062677345 0.0027672141 0.0058521147 + 643700 0.0042997232 0.0025965554 0.0047128254 + 643800 0.0032344451 0.0026778483 0.0042698017 + 643900 0.0050154163 0.0029332673 0.0054017925 + 644000 0.0042367343 0.0030487334 0.0051340011 + 644100 0.0045176293 0.0029652125 0.0051887331 + 644200 0.0063381078 0.0028825089 0.0060020463 + 644300 0.0055938005 0.002905058 0.0056582567 + 644400 0.0062274671 0.00319695 0.0062620315 + 644500 0.0062583222 0.0030839128 0.0061641808 + 644600 0.0054015352 0.0026252837 0.0052838518 + 644700 0.0046114722 0.0027973553 0.0050670642 + 644800 0.003662566 0.0028125415 0.0046152107 + 644900 0.0052232858 0.0024610493 0.0050318853 + 645000 0.0047116173 0.0028904605 0.0052094596 + 645100 0.0042203776 0.0027169972 0.0047942144 + 645200 0.00521798 0.0027041334 0.0052723579 + 645300 0.0047877258 0.0022574666 0.0046139253 + 645400 0.0049967796 0.002360128 0.0048194804 + 645500 0.0046544965 0.0027686961 0.0050595811 + 645600 0.0058639216 0.00319602 0.0060821689 + 645700 0.0061195699 0.0030413845 0.0060533603 + 645800 0.0062476449 0.0028991103 0.005974123 + 645900 0.0047045655 0.0028685941 0.0051841224 + 646000 0.0057156769 0.0028558408 0.0056690255 + 646100 0.0048367545 0.0032304886 0.0056110787 + 646200 0.0043506056 0.0032550353 0.005396349 + 646300 0.0047896466 0.0034602373 0.0058176415 + 646400 0.0048127578 0.0033759485 0.0057447277 + 646500 0.0079171257 0.0028440797 0.00674079 + 646600 0.0046406121 0.0029226344 0.0052066856 + 646700 0.0043823644 0.0028112692 0.0049682142 + 646800 0.0057005003 0.0026941916 0.0054999066 + 646900 0.0046881273 0.0030427356 0.0053501733 + 647000 0.0048731972 0.0032385919 0.0056371186 + 647100 0.0045438203 0.0029999841 0.0052363957 + 647200 0.0041087108 0.0025699262 0.0045921823 + 647300 0.006103715 0.0025286993 0.0055328715 + 647400 0.0057582841 0.0027017994 0.0055359549 + 647500 0.0052698904 0.0024237885 0.0050175627 + 647600 0.0046473686 0.0022767467 0.0045641235 + 647700 0.0051930613 0.0024123431 0.004968303 + 647800 0.0030099998 0.0025578748 0.0040393591 + 647900 0.0045835614 0.0025889726 0.0048449443 + 648000 0.0051944396 0.0026892889 0.0052459272 + 648100 0.0044701583 0.0023626703 0.0045628263 + 648200 0.0055983539 0.0022048592 0.004960299 + 648300 0.0046608376 0.002568065 0.004862071 + 648400 0.0070467314 0.0026525806 0.0061208937 + 648500 0.00433232 0.0028869277 0.0050192415 + 648600 0.0055700874 0.0028983493 0.0056398767 + 648700 0.0060783889 0.0033107944 0.0063025014 + 648800 0.0044530661 0.0031112078 0.0053029513 + 648900 0.00539632 0.0027147238 0.005370725 + 649000 0.0048906836 0.0024972733 0.0049044067 + 649100 0.00577515 0.0023305507 0.0051730073 + 649200 0.0069418625 0.0020726629 0.0054893609 + 649300 0.0057817901 0.0020721015 0.0049178263 + 649400 0.0049206736 0.0022024286 0.0046243226 + 649500 0.0058331836 0.0021678396 0.0050388597 + 649600 0.0051056921 0.002231002 0.0047439598 + 649700 0.0047737879 0.0021059489 0.0044555476 + 649800 0.0034085119 0.0023418649 0.0040194918 + 649900 0.0036290612 0.0026512326 0.0044374112 + 650000 0.0055876481 0.0023001662 0.0050503367 + 650100 0.0063976091 0.0022125706 0.0053613938 + 650200 0.005549217 0.0023748841 0.0051061393 + 650300 0.010122103 0.0021425897 0.0071245623 + 650400 0.0057239955 0.0026101986 0.0054274776 + 650500 0.0043453731 0.002656293 0.0047950313 + 650600 0.005404793 0.0023107703 0.0049709418 + 650700 0.0035842984 0.0023157029 0.0040798498 + 650800 0.004741598 0.0023375455 0.0046713008 + 650900 0.003503162 0.0023624188 0.0040866313 + 651000 0.0042828139 0.0024384175 0.004546365 + 651100 0.005249292 0.0021924408 0.0047760767 + 651200 0.0049361955 0.0024318934 0.0048614271 + 651300 0.0056836505 0.0029006425 0.0056980642 + 651400 0.0063771265 0.002756177 0.0058949189 + 651500 0.0044791824 0.0024500014 0.004654599 + 651600 0.0063510815 0.0021498176 0.0052757405 + 651700 0.004056697 0.0023661319 0.0043627875 + 651800 0.0059306413 0.0022351787 0.0051541662 + 651900 0.0050098469 0.0020806394 0.0045464234 + 652000 0.0045068621 0.0026001152 0.0048183364 + 652100 0.0073138478 0.0028822319 0.0064820164 + 652200 0.0050386438 0.0028524696 0.0053324271 + 652300 0.0068609347 0.0027507388 0.0061276051 + 652400 0.0040357993 0.0032675321 0.0052539021 + 652500 0.0044223185 0.0031589622 0.0053355721 + 652600 0.0071099531 0.0023663198 0.0058657499 + 652700 0.0047823944 0.0022182036 0.0045720383 + 652800 0.005776848 0.0023723041 0.0052155965 + 652900 0.00572282 0.0026074588 0.0054241593 + 653000 0.0042549244 0.0026574061 0.0047516267 + 653100 0.0056084627 0.0019873651 0.0047477803 + 653200 0.0059677483 0.0022955007 0.0052327518 + 653300 0.0055424756 0.0026901218 0.005418059 + 653400 0.0063838408 0.0027866778 0.0059287244 + 653500 0.0052673411 0.0022409184 0.0048334379 + 653600 0.0051225949 0.0023047784 0.0048260556 + 653700 0.0062962611 0.0024906142 0.0055895552 + 653800 0.0047930993 0.0023325022 0.0046916058 + 653900 0.0040081401 0.0024313595 0.0044041159 + 654000 0.005197082 0.0021265944 0.0046845332 + 654100 0.0051660522 0.0020277143 0.0045703806 + 654200 0.0044144694 0.0018197764 0.003992523 + 654300 0.0062144097 0.0023999229 0.0054585777 + 654400 0.0036439381 0.0028235644 0.0046170651 + 654500 0.0059737055 0.0028104599 0.0057506431 + 654600 0.0050318712 0.0030389249 0.005515549 + 654700 0.0053381176 0.0027020291 0.0053293839 + 654800 0.0044745761 0.0026045181 0.0048068486 + 654900 0.0050335091 0.0025190728 0.0049965031 + 655000 0.0035823255 0.0027932457 0.0045564215 + 655100 0.0031145377 0.0027425765 0.0042755131 + 655200 0.004523821 0.0025811687 0.0048077368 + 655300 0.0056799679 0.0025656115 0.0053612207 + 655400 0.0052750453 0.0026293177 0.0052256291 + 655500 0.0039275872 0.0028153933 0.0047485026 + 655600 0.0051506333 0.0031891073 0.0057241846 + 655700 0.0060668386 0.0027962755 0.0057822976 + 655800 0.0053528591 0.0024782729 0.0051128833 + 655900 0.0048490024 0.0029672557 0.0053538741 + 656000 0.0038765256 0.0029823242 0.0048903017 + 656100 0.0063262315 0.0029792859 0.0060929779 + 656200 0.0069794214 0.0033128463 0.0067480303 + 656300 0.005430877 0.0032071729 0.0058801827 + 656400 0.0051778186 0.0030660778 0.0056145354 + 656500 0.0066455386 0.0027016573 0.0059725083 + 656600 0.0048145464 0.0024933758 0.0048630354 + 656700 0.0051648104 0.0022596874 0.0048017425 + 656800 0.0058420524 0.0023401866 0.0052155717 + 656900 0.0060911542 0.0023967711 0.0053947611 + 657000 0.0050724879 0.0023719824 0.0048685976 + 657100 0.0047839971 0.0024083538 0.0047629774 + 657200 0.0042935016 0.0022699323 0.0043831402 + 657300 0.0076523948 0.0024543099 0.006220723 + 657400 0.0054883571 0.0026136972 0.0053149979 + 657500 0.0044652898 0.0022016236 0.0043993835 + 657600 0.0053922258 0.0020590236 0.0047130097 + 657700 0.0050393137 0.0023210855 0.0048013727 + 657800 0.0047615883 0.0020667547 0.0044103489 + 657900 0.0053117209 0.0022677203 0.0048820829 + 658000 0.0049096828 0.0023405402 0.0047570247 + 658100 0.0057210923 0.0024097005 0.0052255506 + 658200 0.0050190404 0.0027066755 0.0051769844 + 658300 0.0062904591 0.0023236289 0.0054197142 + 658400 0.0042330469 0.002433001 0.0045164538 + 658500 0.005746468 0.0024194768 0.0052478165 + 658600 0.0053290685 0.0023569296 0.0049798305 + 658700 0.0062772674 0.0030012961 0.0060908886 + 658800 0.0042964322 0.0032341805 0.0053488308 + 658900 0.0049114128 0.0030434204 0.0054607564 + 659000 0.0053887215 0.0028402765 0.0054925378 + 659100 0.0053730616 0.0028320801 0.0054766338 + 659200 0.0051381145 0.0025886388 0.0051175545 + 659300 0.0040950091 0.002325604 0.0043411163 + 659400 0.0056198041 0.0022914045 0.0050574018 + 659500 0.0045701885 0.0027807956 0.0050301852 + 659600 0.0045987793 0.0030294027 0.0052928644 + 659700 0.0046749862 0.0033867049 0.0056876747 + 659800 0.0049548898 0.003396649 0.0058353838 + 659900 0.0057340161 0.003264883 0.006087094 + 660000 0.0043456804 0.0030503143 0.0051892039 + 660100 0.0061547561 0.0030670215 0.0060963155 + 660200 0.0053016947 0.0037459804 0.0063554083 + 660300 0.0058320576 0.003482043 0.0063525089 + 660400 0.0058433814 0.002991962 0.0058680013 + 660500 0.0038152604 0.0026380893 0.0045159128 + 660600 0.0041979416 0.0024439138 0.0045100882 + 660700 0.0045026778 0.0025470847 0.0047632464 + 660800 0.0030148277 0.0024512742 0.0039351348 + 660900 0.0057236057 0.0027723553 0.0055894425 + 661000 0.00478601 0.0033528334 0.0057084477 + 661100 0.0049081098 0.003399793 0.0058155033 + 661200 0.0040955174 0.0033996693 0.0054154317 + 661300 0.0051870201 0.0032877553 0.0058407418 + 661400 0.005914557 0.0026544292 0.0055655002 + 661500 0.0047236399 0.003297436 0.0056223525 + 661600 0.0053756574 0.003452547 0.0060983784 + 661700 0.0039603795 0.0028781585 0.0048274077 + 661800 0.0045453956 0.002559566 0.0047967529 + 661900 0.0052764044 0.0027021228 0.0052991031 + 662000 0.0040959093 0.0028115687 0.004827524 + 662100 0.0044642394 0.0029976633 0.0051949061 + 662200 0.0052828556 0.0027781662 0.0053783217 + 662300 0.0035876386 0.0029732175 0.0047390084 + 662400 0.0040105239 0.0031401024 0.0051140321 + 662500 0.0047787451 0.0030440407 0.0053960793 + 662600 0.0057775994 0.002887736 0.0057313981 + 662700 0.0044382023 0.002727297 0.0049117247 + 662800 0.0048301824 0.0026968292 0.0050741847 + 662900 0.0040239137 0.002362009 0.004342529 + 663000 0.0042490754 0.0022350926 0.0043264344 + 663100 0.0033249458 0.0024511597 0.0040876565 + 663200 0.0041609336 0.0023234858 0.0043714454 + 663300 0.0041017235 0.0023567329 0.00437555 + 663400 0.0044477459 0.0026955444 0.0048846694 + 663500 0.0060014893 0.0025435244 0.0054973825 + 663600 0.004307415 0.0025365654 0.0046566212 + 663700 0.0056159136 0.0024039253 0.0051680078 + 663800 0.0065390204 0.00219668 0.0054151041 + 663900 0.0054912535 0.0020606719 0.0047633983 + 664000 0.0044345913 0.002293131 0.0044757814 + 664100 0.0041555742 0.0023161922 0.0043615139 + 664200 0.0031413095 0.0025453338 0.0040914471 + 664300 0.0041105942 0.0029195214 0.0049427045 + 664400 0.0046428992 0.0028746548 0.0051598318 + 664500 0.0072655144 0.0025847828 0.0061607782 + 664600 0.0052345667 0.0025762996 0.0051526878 + 664700 0.0037331669 0.0022941981 0.0041316162 + 664800 0.0051810305 0.0021994156 0.004749454 + 664900 0.004509729 0.0024132263 0.0046328586 + 665000 0.00477035 0.0028265272 0.0051744338 + 665100 0.0044087451 0.0022770806 0.0044470099 + 665200 0.0040520462 0.0021113227 0.0041056891 + 665300 0.0043239509 0.0020739875 0.0042021821 + 665400 0.0049726428 0.0021277087 0.0045751814 + 665500 0.0045771515 0.0021318443 0.004384661 + 665600 0.0059517816 0.0021595798 0.0050889723 + 665700 0.0054603901 0.0022029878 0.0048905235 + 665800 0.0040986578 0.0025710884 0.0045883965 + 665900 0.0048044861 0.0029357238 0.0053004318 + 666000 0.0061509383 0.0025987652 0.0056261801 + 666100 0.0056196583 0.0026415148 0.0054074404 + 666200 0.0067696314 0.0030948428 0.0064267707 + 666300 0.0052439667 0.00329714 0.0058781548 + 666400 0.0044176999 0.0036885531 0.0058628898 + 666500 0.0053416813 0.0035022872 0.006131396 + 666600 0.0055569702 0.003379198 0.0061142693 + 666700 0.0050913226 0.0032818023 0.0057876876 + 666800 0.0063432195 0.0028554882 0.0059775416 + 666900 0.0047056859 0.0028873971 0.0052034768 + 667000 0.0041611872 0.0028857933 0.0049338777 + 667100 0.0050493897 0.002788189 0.0052734355 + 667200 0.004808921 0.0024794586 0.0048463494 + 667300 0.0039109027 0.0024515955 0.0043764929 + 667400 0.0052156733 0.0027301177 0.0052972069 + 667500 0.0039116631 0.0031553488 0.0050806205 + 667600 0.0047971516 0.0032446073 0.0056057053 + 667700 0.0047793195 0.0032200247 0.0055723461 + 667800 0.0055620497 0.0024211613 0.0051587327 + 667900 0.0053043672 0.0019433618 0.004554105 + 668000 0.0058205962 0.0020698374 0.0049346621 + 668100 0.0054995063 0.0025926252 0.0052994135 + 668200 0.0049666162 0.0026698209 0.0051143273 + 668300 0.0046388342 0.002617397 0.0049005732 + 668400 0.0044927457 0.0026358236 0.0048470969 + 668500 0.0052749997 0.002235145 0.0048314339 + 668600 0.0044983063 0.0019778732 0.0041918834 + 668700 0.0045923066 0.0021011957 0.0043614716 + 668800 0.0061028751 0.0021476038 0.0051513626 + 668900 0.0043012972 0.0022644137 0.0043814584 + 669000 0.0045107511 0.0023343617 0.004554497 + 669100 0.004660623 0.0024002674 0.0046941677 + 669200 0.0038898097 0.002060501 0.0039750167 + 669300 0.005517835 0.0022014052 0.0049172147 + 669400 0.0055111529 0.001894235 0.0046067556 + 669500 0.005334685 0.0019934578 0.0046191231 + 669600 0.0044794144 0.0021519832 0.004356695 + 669700 0.0038738662 0.0019494654 0.0038561339 + 669800 0.0052420468 0.0023466568 0.0049267267 + 669900 0.0048688313 0.0024703167 0.0048666946 + 670000 0.0037509523 0.0022570741 0.0041032459 + 670100 0.0039704158 0.00242549 0.0043796791 + 670200 0.004389933 0.0021552119 0.004315882 + 670300 0.0042967313 0.0023080071 0.0044228045 + 670400 0.0059354496 0.0021755822 0.0050969364 + 670500 0.0050977279 0.0021836059 0.0046926438 + 670600 0.0036038403 0.0024191941 0.0041929593 + 670700 0.004241098 0.0023258681 0.0044132835 + 670800 0.0061144714 0.0020769683 0.0050864347 + 670900 0.0054586183 0.002522163 0.0052088267 + 671000 0.0049240076 0.0024891554 0.0049126904 + 671100 0.0050374809 0.0023642003 0.0048435855 + 671200 0.0060233694 0.0027136158 0.005678243 + 671300 0.0046272145 0.0031537379 0.005431195 + 671400 0.0061035517 0.0031646937 0.0061687855 + 671500 0.0036325136 0.00292582 0.0047136978 + 671600 0.0049905021 0.0025717689 0.0050280317 + 671700 0.0050943456 0.002249328 0.0047567012 + 671800 0.0039089411 0.0019585399 0.0038824718 + 671900 0.0055331273 0.001495158 0.0042184941 + 672000 0.0044196264 0.0017786762 0.0039539611 + 672100 0.0043487363 0.0018029131 0.0039433067 + 672200 0.0051027201 0.001669001 0.004180496 + 672300 0.0036104074 0.0017716858 0.0035486832 + 672400 0.0061954906 0.0020552037 0.0051045467 + 672500 0.0035817099 0.0022520607 0.0040149335 + 672600 0.0031469774 0.0024142178 0.0039631207 + 672700 0.005077208 0.0022658858 0.0047648241 + 672800 0.0045872279 0.0025772249 0.0048350011 + 672900 0.0055735376 0.0026322159 0.0053754415 + 673000 0.0053303444 0.0028112249 0.0054347537 + 673100 0.0037327751 0.0025838194 0.0044210446 + 673200 0.0021470028 0.0023446057 0.0034013336 + 673300 0.0046628152 0.0022917576 0.004586737 + 673400 0.0042823257 0.0024690401 0.0045767473 + 673500 0.004298241 0.0022871669 0.0044027074 + 673600 0.0043526995 0.002488095 0.0046304393 + 673700 0.004340375 0.002559932 0.0046962103 + 673800 0.0051615566 0.0023889993 0.004929453 + 673900 0.0048620725 0.0023335343 0.0047265856 + 674000 0.0052473234 0.0025124802 0.0050951472 + 674100 0.0058235506 0.0022467762 0.005113055 + 674200 0.005971909 0.0021765562 0.0051158552 + 674300 0.0061295706 0.0022893125 0.0053062106 + 674400 0.0064053288 0.0027204323 0.0058730551 + 674500 0.0051944822 0.0026923899 0.0052490492 + 674600 0.005530208 0.0022271259 0.0049490252 + 674700 0.0040987322 0.002279689 0.0042970337 + 674800 0.0051864583 0.0022054378 0.0047581478 + 674900 0.0048975851 0.0026255119 0.0050360421 + 675000 0.0061868725 0.0031807853 0.0062258866 + 675100 0.0049910107 0.0036069689 0.006063482 + 675200 0.0052145371 0.0036034489 0.0061699789 + 675300 0.0071562015 0.003549751 0.0070719439 + 675400 0.0068272948 0.002947095 0.0063074041 + 675500 0.0063077902 0.0026762608 0.0057808763 + 675600 0.0049959875 0.0025691493 0.005028112 + 675700 0.0056173626 0.0025009228 0.0052657185 + 675800 0.0049445943 0.0024747085 0.004908376 + 675900 0.0040933695 0.0018895094 0.0039042147 + 676000 0.0038499582 0.0018027333 0.0036976346 + 676100 0.0053556425 0.0022149216 0.0048509019 + 676200 0.0043945477 0.0025367759 0.0046997174 + 676300 0.0052902428 0.0022239496 0.0048277409 + 676400 0.0054658557 0.0019620313 0.0046522572 + 676500 0.0045682552 0.0021504799 0.0043989181 + 676600 0.0047928675 0.0025692272 0.0049282166 + 676700 0.0037063938 0.002727848 0.0045520887 + 676800 0.0052998716 0.0021376821 0.0047462127 + 676900 0.002981355 0.0023638045 0.0038311902 + 677000 0.0046045802 0.0023589924 0.0046253092 + 677100 0.0047930207 0.0023450887 0.0047041535 + 677200 0.0040678771 0.0022644103 0.0042665686 + 677300 0.0056949119 0.0020827341 0.0048856986 + 677400 0.0062007205 0.0027037348 0.0057556519 + 677500 0.0041438311 0.0027203797 0.0047599216 + 677600 0.0050703669 0.0021918764 0.0046874476 + 677700 0.0053101137 0.0024337346 0.0050473062 + 677800 0.0037488165 0.0029075701 0.0047526907 + 677900 0.0061416311 0.0024859027 0.0055087367 + 678000 0.0044144874 0.0025958413 0.0047685968 + 678100 0.0045070083 0.0028767384 0.0050950315 + 678200 0.0068741949 0.0021578233 0.0055412161 + 678300 0.0058371933 0.0021994966 0.0050724902 + 678400 0.0051618932 0.0021726343 0.0047132536 + 678500 0.0047813898 0.0025517853 0.0049051257 + 678600 0.0039093504 0.0025394571 0.0044635904 + 678700 0.0039859698 0.0026482893 0.0046101338 + 678800 0.0054728443 0.0025646763 0.0052583419 + 678900 0.003280819 0.002153447 0.0037682251 + 679000 0.0038402396 0.0023250387 0.0042151566 + 679100 0.0054007843 0.0027640666 0.0054222651 + 679200 0.0052352712 0.0027588435 0.0053355786 + 679300 0.0052942134 0.0024277342 0.0050334798 + 679400 0.005358493 0.0022742269 0.0049116101 + 679500 0.0052606863 0.0022295884 0.0048188325 + 679600 0.0047119994 0.0021846381 0.0045038253 + 679700 0.0056274384 0.0023296111 0.0050993659 + 679800 0.0040239884 0.0027632393 0.0047437961 + 679900 0.0053055881 0.0026751014 0.0052864455 + 680000 0.0044272325 0.0024984124 0.0046774409 + 680100 0.0047556236 0.0022982334 0.0046388919 + 680200 0.0031146306 0.00220906 0.0037420422 + 680300 0.0050145817 0.0021406391 0.0046087535 + 680400 0.0053935909 0.0019910477 0.0046457057 + 680500 0.0047470971 0.0024143648 0.0047508266 + 680600 0.0050237752 0.0023396701 0.0048123095 + 680700 0.0056330079 0.002291643 0.0050641391 + 680800 0.0056525231 0.0026917594 0.0054738606 + 680900 0.0042202242 0.0027786697 0.0048558113 + 681000 0.0055496706 0.002723179 0.0054546575 + 681100 0.0057328028 0.0024413472 0.0052629611 + 681200 0.0036770533 0.0023757596 0.0041855592 + 681300 0.0068943649 0.0025635894 0.0059569096 + 681400 0.004365415 0.0029915489 0.0051401516 + 681500 0.0048292843 0.0025122366 0.0048891499 + 681600 0.0046729137 0.0026269375 0.0049268872 + 681700 0.0052587478 0.0027901751 0.005378465 + 681800 0.0053986633 0.0025703286 0.0052274832 + 681900 0.0055200028 0.002635407 0.0053522834 + 682000 0.0050348627 0.002648181 0.0051262775 + 682100 0.0060930243 0.0023042949 0.0053032053 + 682200 0.0048238041 0.0022753912 0.0046496073 + 682300 0.0033731226 0.0020911932 0.0037514019 + 682400 0.0047006592 0.0017690846 0.0040826903 + 682500 0.0040590832 0.0018470383 0.0038448683 + 682600 0.0049279955 0.0016606833 0.004086181 + 682700 0.0062723448 0.0019820331 0.0050692028 + 682800 0.0049858927 0.0021062893 0.0045602834 + 682900 0.005843359 0.002378021 0.0052540492 + 683000 0.0053403477 0.0029523177 0.0055807701 + 683100 0.007141127 0.0028043233 0.0063190968 + 683200 0.0053756185 0.0025610361 0.0052068484 + 683300 0.0063403102 0.0019175933 0.0050382147 + 683400 0.005286925 0.0020250927 0.0046272511 + 683500 0.0032896195 0.0027237685 0.0043428781 + 683600 0.0035291663 0.0029344631 0.0046714747 + 683700 0.0053300525 0.0025880607 0.0052114459 + 683800 0.0045404678 0.0020184882 0.0042532497 + 683900 0.0068308586 0.0020201859 0.0053822491 + 684000 0.0054309634 0.0026511971 0.0053242494 + 684100 0.005690009 0.0027232831 0.0055238344 + 684200 0.0040589861 0.0028239168 0.004821699 + 684300 0.0048223761 0.002591848 0.0049653612 + 684400 0.0054688888 0.0023825297 0.0050742484 + 684500 0.0058457586 0.0021276148 0.0050048241 + 684600 0.0035423932 0.0024468397 0.0041903613 + 684700 0.005906867 0.0019767239 0.00488401 + 684800 0.004022751 0.0022921804 0.0042721281 + 684900 0.0058477743 0.002581546 0.0054597474 + 685000 0.0031587125 0.002792986 0.0043476649 + 685100 0.0046839259 0.0027068184 0.0050121882 + 685200 0.0067969476 0.0022681923 0.005613565 + 685300 0.0040723286 0.002451904 0.0044562532 + 685400 0.0057689485 0.0025663392 0.0054057436 + 685500 0.0041937554 0.0025959229 0.0046600369 + 685600 0.0061519493 0.0024277747 0.0054556872 + 685700 0.0040462883 0.0026984659 0.0046899984 + 685800 0.0049665892 0.0025976855 0.0050421787 + 685900 0.0048190275 0.0032881929 0.005660058 + 686000 0.0056700317 0.0029955809 0.0057862996 + 686100 0.0057197953 0.0022135045 0.0050287163 + 686200 0.006461703 0.0021460036 0.005326373 + 686300 0.0057309934 0.0019162675 0.0047369908 + 686400 0.0034657999 0.0019788982 0.0036847215 + 686500 0.0054336578 0.0020558777 0.0047302562 + 686600 0.0054148542 0.0025794794 0.0052446029 + 686700 0.0032248387 0.0031089248 0.0046961501 + 686800 0.0061278649 0.0027967657 0.0058128242 + 686900 0.004529436 0.002491336 0.0047206678 + 687000 0.0056825745 0.001860347 0.0046572392 + 687100 0.003269067 0.0019987436 0.0036077375 + 687200 0.0045473012 0.0019795031 0.0042176279 + 687300 0.0054199685 0.001873784 0.0045414247 + 687400 0.0044179304 0.0022389661 0.0044134162 + 687500 0.005622913 0.0022898795 0.005057407 + 687600 0.0039455683 0.0021209384 0.0040628978 + 687700 0.0046210474 0.0021059863 0.0043804081 + 687800 0.0033482461 0.0020703246 0.0037182895 + 687900 0.0052151452 0.0019813269 0.0045481562 + 688000 0.0064005433 0.0021959734 0.0053462408 + 688100 0.0046320544 0.0024764816 0.0047563208 + 688200 0.0044479257 0.0027352324 0.0049244458 + 688300 0.0051492371 0.0030631473 0.0055975375 + 688400 0.0061971718 0.0030425443 0.0060927148 + 688500 0.0048181888 0.0027562769 0.0051277292 + 688600 0.0059391397 0.0028595698 0.0057827402 + 688700 0.0083395992 0.0028312354 0.0069358818 + 688800 0.0057413722 0.0028519838 0.0056778154 + 688900 0.0070947493 0.002324726 0.0058166729 + 689000 0.0043702745 0.0020002506 0.004151245 + 689100 0.0074966626 0.0017087373 0.0053985009 + 689200 0.0038439821 0.0016333631 0.0035253231 + 689300 0.0048249571 0.001692116 0.0040668996 + 689400 0.0048025941 0.0017815433 0.0041453201 + 689500 0.0048111646 0.0020338184 0.0044018135 + 689600 0.0064846653 0.0023232847 0.0055149559 + 689700 0.0060028621 0.0026510607 0.0056055944 + 689800 0.0057983924 0.0028210466 0.0056749428 + 689900 0.005149903 0.0027938967 0.0053286145 + 690000 0.003202341 0.0025112226 0.0040873749 + 690100 0.0067104832 0.0019881771 0.005290993 + 690200 0.0053097285 0.0025332165 0.0051465985 + 690300 0.005308733 0.0032841344 0.0058970264 + 690400 0.0051393221 0.0031945747 0.0057240848 + 690500 0.00429844 0.0033796868 0.0054953252 + 690600 0.0045519958 0.0027409324 0.0049813679 + 690700 0.006255421 0.0023842528 0.0054630929 + 690800 0.0055972577 0.0021945875 0.0049494877 + 690900 0.0049481257 0.0020997778 0.0045351834 + 691000 0.0058362779 0.001910773 0.004783316 + 691100 0.0038302671 0.0018277377 0.0037129473 + 691200 0.0064727675 0.0018151094 0.0050009246 + 691300 0.0046563863 0.0020750831 0.0043668982 + 691400 0.0055699853 0.0022216957 0.0049631729 + 691500 0.0049138735 0.0021900945 0.0046086417 + 691600 0.0041234164 0.0025392924 0.0045687864 + 691700 0.0043149641 0.0027751766 0.004898948 + 691800 0.0040520687 0.0032759214 0.005270299 + 691900 0.0051580231 0.0030757943 0.0056145088 + 692000 0.0047824642 0.0026482193 0.0050020884 + 692100 0.0067906469 0.0023072361 0.0056495076 + 692200 0.0036106605 0.0023881266 0.0041652486 + 692300 0.0049948273 0.0020861055 0.0045444971 + 692400 0.0039468959 0.0019467946 0.0038894074 + 692500 0.0046830259 0.0016006911 0.0039056179 + 692600 0.0049307313 0.0016842817 0.004111126 + 692700 0.0051398368 0.0017911757 0.0043209391 + 692800 0.0063658709 0.0019689722 0.0051021742 + 692900 0.0061205335 0.0019943214 0.0050067715 + 693000 0.0056235116 0.0026542262 0.0054220483 + 693100 0.0054698188 0.0032086183 0.0059007947 + 693200 0.0054884238 0.0032776495 0.0059789831 + 693300 0.0055605495 0.0029475647 0.0056843976 + 693400 0.0044205303 0.0030115011 0.0051872308 + 693500 0.0043788568 0.00331665 0.0054718686 + 693600 0.0062080812 0.0027304523 0.0057859923 + 693700 0.0064421283 0.0027132037 0.0058839387 + 693800 0.0048190733 0.0030086171 0.0053805048 + 693900 0.0035663692 0.0026693435 0.0044246658 + 694000 0.0049551919 0.0020523111 0.0044911946 + 694100 0.0042917013 0.0021157585 0.0042280802 + 694200 0.0050861912 0.0022263312 0.004729691 + 694300 0.0047008671 0.0021239756 0.0044376836 + 694400 0.0065839257 0.0023323718 0.0055728977 + 694500 0.0051649728 0.0025604207 0.0051025558 + 694600 0.004161208 0.0024873112 0.0045354057 + 694700 0.0053816544 0.0024059169 0.0050546999 + 694800 0.0039079174 0.0023925747 0.0043160028 + 694900 0.0052342298 0.0024296906 0.0050059131 + 695000 0.0045785519 0.002423683 0.004677189 + 695100 0.004942542 0.0025335757 0.0049662331 + 695200 0.0054862293 0.0027311761 0.0054314296 + 695300 0.0043264172 0.0028932393 0.0050226478 + 695400 0.0057449819 0.0030830821 0.0059106904 + 695500 0.0045755071 0.0030204289 0.0052724362 + 695600 0.0053786098 0.0026297036 0.0052769881 + 695700 0.0032127587 0.0023970437 0.0039783234 + 695800 0.0060046894 0.0021069328 0.0050623658 + 695900 0.005282996 0.0023494363 0.0049496609 + 696000 0.0043922614 0.001965721 0.0041275372 + 696100 0.0047761182 0.0024122064 0.0047629521 + 696200 0.0050412806 0.0027314678 0.0052127231 + 696300 0.0047357034 0.0023462451 0.0046770991 + 696400 0.005151523 0.0021060238 0.004641539 + 696500 0.0043950834 0.0019924204 0.0041556255 + 696600 0.0056044277 0.0017410294 0.0044994587 + 696700 0.0035545853 0.0020995916 0.003849114 + 696800 0.0066133881 0.0019195232 0.0051745502 + 696900 0.0048738247 0.0019333298 0.0043321654 + 697000 0.0045971713 0.0023028107 0.0045654809 + 697100 0.004872788 0.0028971132 0.0052954386 + 697200 0.0051673617 0.0026475285 0.0051908393 + 697300 0.0057018968 0.0028076319 0.0056140343 + 697400 0.0054994568 0.0024258287 0.0051325926 + 697500 0.0052152962 0.0023774554 0.004944359 + 697600 0.0035638043 0.0025040999 0.0042581598 + 697700 0.0059742414 0.0018971561 0.0048376031 + 697800 0.0051163238 0.0015506097 0.0040688003 + 697900 0.0040014726 0.0018450493 0.0038145241 + 698000 0.0036444684 0.0017862762 0.003580038 + 698100 0.003456669 0.0018392049 0.0035405342 + 698200 0.0044518898 0.0017127222 0.0039038867 + 698300 0.0049224576 0.0017226284 0.0041454005 + 698400 0.0039122177 0.002005895 0.0039314397 + 698500 0.0042037796 0.0019736603 0.004042708 + 698600 0.0039839161 0.0019802182 0.0039410519 + 698700 0.0052816896 0.0021115766 0.0047111581 + 698800 0.0046944807 0.002336338 0.0046469027 + 698900 0.0063060853 0.0024049554 0.0055087317 + 699000 0.0058585456 0.0022754832 0.0051589861 + 699100 0.0045469282 0.0024992762 0.0047372174 + 699200 0.0049749888 0.0026374173 0.0050860446 + 699300 0.0062545908 0.0025193238 0.0055977552 + 699400 0.0048357232 0.0026991695 0.005079252 + 699500 0.0053216969 0.0028707531 0.0054900258 + 699600 0.0060161903 0.0027668616 0.0057279553 + 699700 0.0052737675 0.0030158514 0.0056115338 + 699800 0.0070877686 0.0026564191 0.0061449302 + 699900 0.0052166355 0.0025147301 0.0050822929 + 700000 0.0043656451 0.0022753302 0.0044240462 + 700100 0.0038248471 0.0024563771 0.004338919 + 700200 0.0039052765 0.0030551085 0.0049772367 + 700300 0.0045890661 0.0032331093 0.0054917903 + 700400 0.0039151458 0.0027732711 0.0047002569 + 700500 0.0050300543 0.0025740969 0.0050498268 + 700600 0.0039374238 0.0025378489 0.0044757997 + 700700 0.0051782203 0.002504175 0.0050528303 + 700800 0.0054187677 0.0023400363 0.005007086 + 700900 0.006505807 0.0024131263 0.0056152032 + 701000 0.0054748113 0.0027502337 0.0054448674 + 701100 0.0050406519 0.0031163654 0.0055973112 + 701200 0.0059312561 0.0031836647 0.0061029548 + 701300 0.0064894032 0.0032781757 0.0064721788 + 701400 0.0067586946 0.0031228986 0.0064494436 + 701500 0.0079498192 0.0035992447 0.0075120463 + 701600 0.0067890795 0.0032774748 0.0066189748 + 701700 0.0057666493 0.0033529933 0.006191266 + 701800 0.0061152287 0.0026072872 0.0056171263 + 701900 0.0055090796 0.0024911615 0.0052026616 + 702000 0.0047980613 0.002759375 0.0051209208 + 702100 0.0053628652 0.0025502574 0.0051897927 + 702200 0.0060940457 0.0028786485 0.0058780616 + 702300 0.0064213441 0.0036896673 0.0068501725 + 702400 0.0039651695 0.0040855501 0.0060371569 + 702500 0.0078126301 0.0036911419 0.0075364207 + 702600 0.0048401619 0.0035713261 0.0059535933 + 702700 0.0060419287 0.0025751888 0.0055489506 + 702800 0.0050751146 0.0026985018 0.0051964097 + 702900 0.0052876667 0.002683773 0.0052862965 + 703000 0.0061366809 0.0024348293 0.0054552269 + 703100 0.0065617107 0.0019630791 0.0051926711 + 703200 0.004459442 0.0021737174 0.004368599 + 703300 0.0055795098 0.0017449326 0.0044910975 + 703400 0.0054370048 0.0017591508 0.0044351767 + 703500 0.0056359461 0.0019718565 0.0047457987 + 703600 0.0040142247 0.0021038417 0.0040795929 + 703700 0.0039467871 0.0021153821 0.0040579414 + 703800 0.0048677085 0.0017092132 0.0041050384 + 703900 0.0047805898 0.0019800674 0.004333014 + 704000 0.0065745575 0.0023760323 0.0056119473 + 704100 0.0052528146 0.0027106932 0.0052960629 + 704200 0.0046279808 0.0029476253 0.0052254595 + 704300 0.0055893629 0.0027219461 0.0054729606 + 704400 0.0045085078 0.0025716229 0.0047906541 + 704500 0.0044128057 0.0026455169 0.0048174447 + 704600 0.0045177452 0.0023134205 0.0045369982 + 704700 0.0049044048 0.0024051055 0.0048189922 + 704800 0.0045436443 0.0022976942 0.0045340191 + 704900 0.0060282825 0.0027985832 0.0057656284 + 705000 0.0046240486 0.002625725 0.004901624 + 705100 0.0051970905 0.0020774812 0.0046354241 + 705200 0.0048665355 0.0022636847 0.0046589326 + 705300 0.0038669055 0.0028939318 0.0047971743 + 705400 0.003865597 0.0031912499 0.0050938484 + 705500 0.0053482865 0.0029835091 0.0056158688 + 705600 0.0067143262 0.0029365411 0.0062412485 + 705700 0.005349037 0.0032857481 0.0059184772 + 705800 0.0070342073 0.003516182 0.0069783309 + 705900 0.0045458984 0.0033659256 0.0056033599 + 706000 0.005193812 0.0031890808 0.0057454102 + 706100 0.0048946495 0.0025809619 0.0049900472 + 706200 0.0053234925 0.0024864197 0.0051065762 + 706300 0.0053787553 0.0031654582 0.0058128143 + 706400 0.0062128883 0.0033701447 0.0064280506 + 706500 0.0046118733 0.0029534369 0.0052233433 + 706600 0.0050105622 0.002029364 0.0044955001 + 706700 0.0041301378 0.0022551608 0.004287963 + 706800 0.0052515482 0.0023203385 0.0049050849 + 706900 0.0053555944 0.0021989623 0.0048349189 + 707000 0.0065960435 0.0019334874 0.0051799776 + 707100 0.0047494675 0.0020813733 0.0044190018 + 707200 0.004411809 0.0022401271 0.0044115644 + 707300 0.0055757284 0.0025192364 0.0052635402 + 707400 0.0044690587 0.0025381789 0.0047377938 + 707500 0.0042259374 0.0024787763 0.0045587299 + 707600 0.0055279177 0.0021244417 0.0048452137 + 707700 0.0059313348 0.0020475149 0.0049668437 + 707800 0.0058807941 0.0028627967 0.00575725 + 707900 0.0043843154 0.0032188183 0.0053767235 + 708000 0.0054983794 0.0028080194 0.005514253 + 708100 0.0039486999 0.0029197832 0.0048632839 + 708200 0.0062866856 0.0026086502 0.0057028782 + 708300 0.0042988486 0.0029498118 0.0050656513 + 708400 0.005467111 0.0027582341 0.0054490778 + 708500 0.0065089567 0.0022993939 0.005503021 + 708600 0.0059031768 0.0015965052 0.004501975 + 708700 0.0056030837 0.0017044547 0.0044622224 + 708800 0.0053787377 0.0019851778 0.0046325253 + 708900 0.0065322946 0.0021057384 0.0053208522 + 709000 0.0036546299 0.0031490959 0.0049478591 + 709100 0.0053508048 0.0027071513 0.0053407506 + 709200 0.0054144376 0.0019445567 0.0046094752 + 709300 0.0045926855 0.0023090503 0.0045695127 + 709400 0.0051262002 0.0022386092 0.0047616609 + 709500 0.0067580094 0.0019344051 0.0052606129 + 709600 0.0047565686 0.0020066518 0.0043477754 + 709700 0.0055281051 0.0022272428 0.004948107 + 709800 0.0050394896 0.0023210705 0.0048014443 + 709900 0.0043467543 0.0024097948 0.0045492129 + 710000 0.0046377978 0.0021771895 0.0044598556 + 710100 0.0038945639 0.0022082369 0.0041250925 + 710200 0.005114854 0.0022464631 0.0047639303 + 710300 0.0043179925 0.0023043977 0.0044296596 + 710400 0.0044721534 0.0023526122 0.0045537502 + 710500 0.0061011947 0.0021718633 0.0051747951 + 710600 0.0041095909 0.0020957155 0.0041184048 + 710700 0.0043425914 0.0025276117 0.0046649809 + 710800 0.0055329933 0.0027102522 0.0054335224 + 710900 0.0047922339 0.0025213419 0.0048800195 + 711000 0.003777331 0.0027220295 0.0045811846 + 711100 0.0046333654 0.0026482427 0.0049287272 + 711200 0.0051131809 0.0024321926 0.0049488363 + 711300 0.004969291 0.0023286381 0.004774461 + 711400 0.0055487239 0.0020670584 0.0047980709 + 711500 0.0045571881 0.0024348796 0.0046778706 + 711600 0.0057029589 0.002580169 0.0053870941 + 711700 0.0059238486 0.002158135 0.0050737793 + 711800 0.0054291269 0.0022525066 0.0049246549 + 711900 0.0055356996 0.0024208035 0.0051454057 + 712000 0.0054332053 0.002218367 0.0048925227 + 712100 0.0045596575 0.0025629241 0.0048071306 + 712200 0.0046111395 0.0024311062 0.0047006514 + 712300 0.0046815876 0.0025041039 0.0048083228 + 712400 0.0053776866 0.0024831017 0.0051299318 + 712500 0.0048059949 0.0023630946 0.0047285452 + 712600 0.0075089824 0.0024169834 0.0061128107 + 712700 0.0059636133 0.0025822403 0.0055174562 + 712800 0.0067052662 0.0029849303 0.0062851785 + 712900 0.0070633496 0.0025705535 0.0060470459 + 713000 0.0073174454 0.0019810563 0.0055826114 + 713100 0.0062012887 0.001842188 0.0048943847 + 713200 0.0052279567 0.0019254976 0.0044986325 + 713300 0.0035630502 0.0024204873 0.004174176 + 713400 0.0038866131 0.0027946661 0.0047076085 + 713500 0.005436294 0.0024269547 0.0051026307 + 713600 0.0054913525 0.0023055267 0.0050083018 + 713700 0.0047577729 0.0022621909 0.0046039073 + 713800 0.0050094978 0.0023593693 0.0048249815 + 713900 0.0052272859 0.0021960237 0.0047688285 + 714000 0.0037754536 0.002080327 0.003938558 + 714100 0.0036131911 0.0022313015 0.0040096689 + 714200 0.005572197 0.0023395547 0.0050821204 + 714300 0.0060405507 0.0023356166 0.0053087001 + 714400 0.0059057598 0.0023838361 0.0052905773 + 714500 0.004815325 0.0022134954 0.0045835382 + 714600 0.0065631757 0.0021038864 0.0053341994 + 714700 0.0056217254 0.0019521372 0.0047190802 + 714800 0.0048494398 0.002261962 0.0046487957 + 714900 0.0057168146 0.0033001182 0.0061138629 + 715000 0.0042673805 0.0040649223 0.0061652736 + 715100 0.0056094541 0.0038416147 0.0066025179 + 715200 0.0045385049 0.0032558893 0.0054896846 + 715300 0.0044344348 0.0028437694 0.0050263428 + 715400 0.0051412962 0.0021987822 0.004729264 + 715500 0.0067280066 0.0017929539 0.0051043946 + 715600 0.0049976754 0.001942729 0.0044025223 + 715700 0.0042026405 0.0020876476 0.0041561347 + 715800 0.0033701938 0.0021584986 0.0038172659 + 715900 0.0042704953 0.001858297 0.0039601814 + 716000 0.0062776028 0.0020182626 0.0051080202 + 716100 0.0043923828 0.0028390013 0.0050008772 + 716200 0.0044739218 0.0032557221 0.0054577305 + 716300 0.0059027968 0.0028455185 0.0057508013 + 716400 0.0047753669 0.0023594388 0.0047098147 + 716500 0.0039242318 0.0021649586 0.0040964164 + 716600 0.0041162833 0.0020596414 0.0040856246 + 716700 0.0051407387 0.0019324103 0.0044626176 + 716800 0.0032567257 0.0022339627 0.0038368824 + 716900 0.0047781832 0.002890841 0.005242603 + 717000 0.005362996 0.0026430192 0.0052826187 + 717100 0.0032694743 0.0025196458 0.0041288402 + 717200 0.00303582 0.0024200494 0.0039142421 + 717300 0.0061655031 0.0020208089 0.0050553925 + 717400 0.0053491122 0.0018235811 0.0044563472 + 717500 0.0059446826 0.0017592563 0.0046851548 + 717600 0.0054103892 0.0013710466 0.0040339726 + 717700 0.0034506329 0.0014272723 0.0031256307 + 717800 0.0060774516 0.0015903789 0.0045816246 + 717900 0.0063366707 0.0021087518 0.0052275819 + 718000 0.0051277503 0.0024408011 0.0049646158 + 718100 0.0061196173 0.0022053979 0.005217397 + 718200 0.0046569744 0.0023762196 0.0046683242 + 718300 0.0045601427 0.002328325 0.0045727702 + 718400 0.0038138021 0.0023071153 0.004184221 + 718500 0.0043383604 0.0024379992 0.0045732859 + 718600 0.0051590137 0.0022957248 0.0048349268 + 718700 0.0048019051 0.0023756484 0.004739086 + 718800 0.0041363971 0.0024992354 0.0045351184 + 718900 0.0051252981 0.0021998585 0.0047224662 + 719000 0.0050416755 0.0020400467 0.0045214964 + 719100 0.0047732706 0.0022350821 0.0045844263 + 719200 0.0040107702 0.002539189 0.00451324 + 719300 0.0044102958 0.0024285728 0.0045992653 + 719400 0.005394967 0.0020668545 0.0047221898 + 719500 0.0047031958 0.0021800341 0.0044948883 + 719600 0.0054826076 0.0018629606 0.0045614316 + 719700 0.0053742676 0.0016332506 0.004278398 + 719800 0.0044933134 0.0015845889 0.0037961416 + 719900 0.0048316198 0.0016699271 0.00404799 + 720000 0.0044009979 0.0022967587 0.0044628748 + 720100 0.0046157872 0.0025948562 0.004866689 + 720200 0.0045968951 0.0023475158 0.0046100501 + 720300 0.0056405285 0.0023282128 0.0051044104 + 720400 0.004081373 0.0027609139 0.0047697146 + 720500 0.0063183681 0.0024888059 0.0055986277 + 720600 0.0043897229 0.002364405 0.0045249717 + 720700 0.0068735792 0.0022074214 0.0055905111 + 720800 0.0052012383 0.0020444746 0.004604459 + 720900 0.0043798592 0.001974445 0.0041301569 + 721000 0.0065869777 0.0018998551 0.0051418831 + 721100 0.0038719779 0.0019618727 0.0038676118 + 721200 0.0037178686 0.0016285312 0.0034584196 + 721300 0.0051754265 0.0016035959 0.0041508761 + 721400 0.0050593837 0.002083898 0.0045740634 + 721500 0.0056238935 0.0020732821 0.0048412921 + 721600 0.0055898373 0.0018958154 0.0046470634 + 721700 0.0054736698 0.0021549098 0.0048489816 + 721800 0.0047690517 0.0023819473 0.0047292149 + 721900 0.0046385799 0.0023754131 0.0046584641 + 722000 0.0048266965 0.0020213168 0.0043969565 + 722100 0.0065359604 0.0016495777 0.0048664957 + 722200 0.0056110704 0.002069987 0.0048316857 + 722300 0.0046437798 0.0022194724 0.0045050828 + 722400 0.0044219512 0.0023336052 0.0045100343 + 722500 0.0057637987 0.0024396943 0.005276564 + 722600 0.0068569524 0.0022002239 0.0055751301 + 722700 0.00489327 0.0021076028 0.0045160091 + 722800 0.0064488761 0.001834134 0.0050081902 + 722900 0.0047199538 0.0021433898 0.004466492 + 723000 0.0046343299 0.0022189409 0.0044999002 + 723100 0.0040187433 0.0019295973 0.0039075726 + 723200 0.0056927685 0.0020502952 0.0048522047 + 723300 0.0053209446 0.0021308252 0.0047497276 + 723400 0.0057209692 0.0018369192 0.0046527087 + 723500 0.0060742861 0.0022030505 0.0051927382 + 723600 0.0046539939 0.002395629 0.0046862666 + 723700 0.0043948755 0.0026596484 0.0048227512 + 723800 0.0039201086 0.0024227399 0.0043521683 + 723900 0.0042463127 0.0019974934 0.0040874755 + 724000 0.0053764131 0.0020813008 0.0047275041 + 724100 0.0050054805 0.0020645239 0.0045281588 + 724200 0.0030416609 0.0019389042 0.0034359716 + 724300 0.0051475674 0.0021296144 0.0046631827 + 724400 0.0062966118 0.0023690792 0.0054681928 + 724500 0.0044374414 0.0020514846 0.0042355378 + 724600 0.0047622713 0.0017687188 0.0041126492 + 724700 0.0054120222 0.0020329107 0.0046966403 + 724800 0.0048278186 0.0021385048 0.0045146967 + 724900 0.003790716 0.0019964167 0.0038621597 + 725000 0.0047111423 0.0017825789 0.0041013443 + 725100 0.0076197824 0.0019621731 0.0057125347 + 725200 0.0061800745 0.0028202387 0.0058619941 + 725300 0.0052023023 0.0026039075 0.0051644157 + 725400 0.0053225263 0.002438601 0.0050582819 + 725500 0.0045884247 0.0025743388 0.004832704 + 725600 0.0042209056 0.0025340883 0.0046115652 + 725700 0.0035742778 0.0022203132 0.003979528 + 725800 0.0051896437 0.0017626514 0.0043169292 + 725900 0.0034237294 0.0020494556 0.0037345724 + 726000 0.0035126469 0.0021759176 0.0039047985 + 726100 0.0050979404 0.0019967913 0.0045059338 + 726200 0.005400228 0.0019442488 0.0046021735 + 726300 0.0053241518 0.0019917598 0.0046122408 + 726400 0.0047922283 0.0021125464 0.0044712212 + 726500 0.0062934292 0.0025852952 0.0056828424 + 726600 0.0068871812 0.0025894803 0.0059792648 + 726700 0.0057481382 0.0030624425 0.0058916043 + 726800 0.0051076262 0.0027320123 0.005245922 + 726900 0.0071252611 0.0024222027 0.0059291671 + 727000 0.0043081431 0.0022913017 0.0044117159 + 727100 0.0035038303 0.0027152053 0.0044397468 + 727200 0.004971815 0.0030147941 0.0054618593 + 727300 0.0050114237 0.0030855522 0.0055521123 + 727400 0.0049208531 0.003093055 0.0055150374 + 727500 0.004048348 0.0032602868 0.0052528331 + 727600 0.0043135635 0.0028272546 0.0049503367 + 727700 0.0067816701 0.0027467811 0.0060846344 + 727800 0.0050062801 0.002632651 0.0050966795 + 727900 0.0041864224 0.0022979583 0.0043584631 + 728000 0.0045874719 0.0023110379 0.0045689343 + 728100 0.0040309908 0.0023044119 0.0042884152 + 728200 0.0058208039 0.0022129918 0.0050779187 + 728300 0.0057514283 0.0020346896 0.0048654707 + 728400 0.0033553012 0.0021923086 0.0038437459 + 728500 0.0064943402 0.0016356901 0.0048321232 + 728600 0.0061545843 0.0018918073 0.0049210168 + 728700 0.0050793377 0.0021681376 0.0046681241 + 728800 0.0037438959 0.002418843 0.0042615418 + 728900 0.0057983032 0.002054287 0.0049081394 + 729000 0.0036446773 0.0020218482 0.0038157128 + 729100 0.0055742242 0.002123656 0.0048672194 + 729200 0.0046344169 0.0028789632 0.0051599652 + 729300 0.0042595225 0.0034435113 0.005539995 + 729400 0.0043330443 0.0036886568 0.0058213271 + 729500 0.0031170831 0.0033450665 0.0048792558 + 729600 0.0053967356 0.0024891989 0.0051454047 + 729700 0.0063001806 0.0025011334 0.0056020036 + 729800 0.0045251016 0.0032457683 0.0054729667 + 729900 0.0048342587 0.0029639239 0.0053432857 + 730000 0.0059392598 0.0026949735 0.005618203 + 730100 0.0056717061 0.0029569172 0.0057484601 + 730200 0.0043491807 0.0028451784 0.0049857908 + 730300 0.0055032566 0.0026930997 0.0054017338 + 730400 0.0052249806 0.0025131677 0.0050848378 + 730500 0.0054093335 0.0026603814 0.0053227877 + 730600 0.0045744435 0.0027667822 0.0050182661 + 730700 0.0052148304 0.0031969425 0.0057636169 + 730800 0.0047945084 0.003408421 0.0057682182 + 730900 0.0048729856 0.0028616339 0.0052600565 + 731000 0.0042953513 0.0029651854 0.0050793037 + 731100 0.0054031574 0.002660524 0.0053198906 + 731200 0.0050108492 0.0022365669 0.0047028442 + 731300 0.0042820532 0.002440682 0.004548255 + 731400 0.0051015884 0.0025032937 0.0050142318 + 731500 0.0045485441 0.0030044094 0.005243146 + 731600 0.0049433119 0.0032675711 0.0057006074 + 731700 0.0050136146 0.0028915148 0.0053591532 + 731800 0.0058504203 0.0020692829 0.0049487867 + 731900 0.0056545564 0.0018356314 0.0046187334 + 732000 0.0055365062 0.002465336 0.0051903351 + 732100 0.0048269584 0.002845543 0.0052213116 + 732200 0.0040214559 0.0023334848 0.0043127951 + 732300 0.0060689862 0.0020615689 0.005048648 + 732400 0.0043281202 0.002386317 0.0045165636 + 732500 0.0044936918 0.0022454272 0.0044571662 + 732600 0.0053919466 0.0018381749 0.0044920236 + 732700 0.0062948216 0.0023543685 0.005452601 + 732800 0.0058712882 0.0027419303 0.005631705 + 732900 0.0072402981 0.0028241528 0.006387737 + 733000 0.005300886 0.0030270134 0.0056360432 + 733100 0.005806499 0.0029434368 0.005801323 + 733200 0.0058314609 0.0026517042 0.0055218764 + 733300 0.0064181169 0.0026108541 0.0057697711 + 733400 0.0050350329 0.0020280231 0.0045062033 + 733500 0.0044040811 0.0019480113 0.004115645 + 733600 0.0058020214 0.0022679654 0.0051236478 + 733700 0.0056595075 0.0025638232 0.0053493621 + 733800 0.0051598293 0.002908228 0.0054478315 + 733900 0.0034276756 0.0025831737 0.0042702328 + 734000 0.0038637224 0.0026986202 0.0046002961 + 734100 0.0044866442 0.0026556864 0.0048639566 + 734200 0.0051683061 0.0025767887 0.0051205643 + 734300 0.0047391777 0.0025859796 0.0049185436 + 734400 0.0046773298 0.0025071128 0.0048092361 + 734500 0.0043405635 0.0023732969 0.004509668 + 734600 0.0055912762 0.0019958036 0.0047477599 + 734700 0.0050623016 0.0018510404 0.004342642 + 734800 0.0055904453 0.0016775835 0.0044291307 + 734900 0.0036779715 0.0021978797 0.0040081313 + 735000 0.0048906206 0.0025461169 0.0049532192 + 735100 0.005978406 0.0027309068 0.0056734035 + 735200 0.0051531358 0.002341746 0.004878055 + 735300 0.0039368425 0.0022489053 0.00418657 + 735400 0.0038454338 0.0023016979 0.0041943724 + 735500 0.0043071771 0.0021294342 0.0042493729 + 735600 0.0050312379 0.0018828246 0.004359137 + 735700 0.0043093364 0.0018967474 0.0040177489 + 735800 0.0047147624 0.0021604137 0.0044809608 + 735900 0.0030199658 0.0027764313 0.0042628207 + 736000 0.0050935813 0.0023405077 0.0048475047 + 736100 0.0045580387 0.0021779977 0.0044214074 + 736200 0.0049650743 0.0019677906 0.0044115381 + 736300 0.004870898 0.0018643179 0.004261713 + 736400 0.0046667319 0.0020463287 0.0043432358 + 736500 0.0047715393 0.0017558702 0.0041043622 + 736600 0.0045041016 0.0017048531 0.0039217156 + 736700 0.0043108506 0.0020032578 0.0041250046 + 736800 0.0045604163 0.0020349451 0.004279525 + 736900 0.00535843 0.0018928249 0.0045301772 + 737000 0.0056279625 0.0017121702 0.004482183 + 737100 0.0055642409 0.0020663802 0.0048050301 + 737200 0.0042567065 0.0025666106 0.0046617083 + 737300 0.0042753296 0.0025465534 0.0046508172 + 737400 0.0049357129 0.002079254 0.0045085502 + 737500 0.0054578617 0.0021741677 0.004860459 + 737600 0.0043933223 0.0028710213 0.0050333596 + 737700 0.0059859883 0.0031130226 0.0060592512 + 737800 0.005357095 0.0026852972 0.0053219924 + 737900 0.0044232547 0.0025071792 0.0046842499 + 738000 0.0043737931 0.0027776339 0.0049303601 + 738100 0.0064713883 0.0025523608 0.0057374972 + 738200 0.005119339 0.002104403 0.0046240777 + 738300 0.0058725927 0.0022482921 0.0051387088 + 738400 0.0048219806 0.0023421527 0.0047154713 + 738500 0.0050991435 0.001966196 0.0044759306 + 738600 0.0044333489 0.0018307801 0.0040128189 + 738700 0.0048206686 0.0022797802 0.004652453 + 738800 0.0057341053 0.0026292127 0.0054514677 + 738900 0.005682821 0.0020034377 0.0048004512 + 739000 0.0055442433 0.0016583726 0.0043871798 + 739100 0.0058367103 0.0018728019 0.0047455578 + 739200 0.0041532237 0.0022743746 0.0043185393 + 739300 0.0061060411 0.0024561268 0.0054614439 + 739400 0.0033542462 0.0025406408 0.0041915589 + 739500 0.0051448578 0.0024508977 0.0049831324 + 739600 0.0042500232 0.002498221 0.0045900293 + 739700 0.0054344356 0.0021729132 0.0048476745 + 739800 0.005424145 0.0020177152 0.0046874116 + 739900 0.0061891945 0.0020361312 0.0050823753 + 740000 0.0043174918 0.0023125631 0.0044375786 + 740100 0.0051585474 0.0026053477 0.0051443203 + 740200 0.0052789958 0.0025394875 0.0051377432 + 740300 0.0054712123 0.0025613241 0.0052541865 + 740400 0.0054906009 0.0028328086 0.0055352137 + 740500 0.0057915209 0.0033959999 0.0062465141 + 740600 0.0048085848 0.0033966339 0.0057633592 + 740700 0.0067239593 0.0027255705 0.0060350193 + 740800 0.0068087706 0.0021009331 0.0054521249 + 740900 0.0051377925 0.0020202842 0.0045490414 + 741000 0.0054481905 0.0022881454 0.0049696766 + 741100 0.0058888098 0.0025542973 0.0054526959 + 741200 0.006035978 0.0024297582 0.0054005911 + 741300 0.0056965947 0.0026673252 0.0054711179 + 741400 0.0049146757 0.0030784935 0.0054974355 + 741500 0.0049512111 0.0030985624 0.0055354866 + 741600 0.0059101221 0.0028383478 0.005747236 + 741700 0.0052241035 0.0027529354 0.0053241738 + 741800 0.0074419477 0.0025358889 0.0061987226 + 741900 0.0040063141 0.0026553044 0.0046271621 + 742000 0.0035948293 0.0026051272 0.0043744573 + 742100 0.0056012483 0.0023199726 0.005076837 + 742200 0.0052170834 0.0024293687 0.0049971519 + 742300 0.004432285 0.0027302752 0.0049117905 + 742400 0.005183309 0.0026959605 0.0052471205 + 742500 0.0046727283 0.002434232 0.0047340905 + 742600 0.0072137158 0.0025553091 0.0061058099 + 742700 0.0035173514 0.0027809368 0.0045121332 + 742800 0.008059325 0.0022618696 0.0062285687 + 742900 0.0062201972 0.0019453589 0.0050068622 + 743000 0.0056167006 0.0020745358 0.0048390056 + 743100 0.0039879594 0.0024223906 0.0043852143 + 743200 0.0035775616 0.0024025592 0.0041633903 + 743300 0.0044830022 0.0023662205 0.0045726982 + 743400 0.0048368773 0.0024054851 0.0047861356 + 743500 0.0044356506 0.0023736002 0.004556772 + 743600 0.0053004465 0.002140258 0.0047490716 + 743700 0.0064087954 0.0024067588 0.0055610878 + 743800 0.0055876259 0.0030821595 0.0058323191 + 743900 0.0049731911 0.0025850852 0.0050328277 + 744000 0.0049793238 0.0021190323 0.0045697933 + 744100 0.0049167387 0.0021646866 0.0045846439 + 744200 0.0051236254 0.0018829068 0.0044046912 + 744300 0.0039245386 0.0022456602 0.004177269 + 744400 0.0049974654 0.0025969943 0.0050566843 + 744500 0.0034847202 0.0026357934 0.0043509291 + 744600 0.0052624414 0.0019537824 0.0045438903 + 744700 0.0053786115 0.0019307552 0.0045780406 + 744800 0.0047300017 0.0023005865 0.0046286342 + 744900 0.0041245936 0.0023117237 0.0043417972 + 745000 0.0057282403 0.0017873801 0.0046067483 + 745100 0.0050972652 0.0017212006 0.0042300108 + 745200 0.0038212104 0.0023404583 0.0042212103 + 745300 0.0049302563 0.0024605839 0.0048871944 + 745400 0.0065370839 0.0025476501 0.0057651211 + 745500 0.0056277783 0.0025405949 0.005310517 + 745600 0.0078289395 0.002142735 0.0059960411 + 745700 0.0061431655 0.0021653679 0.0051889572 + 745800 0.0057991225 0.0024787764 0.005333032 + 745900 0.0069651012 0.0028018803 0.0062300161 + 746000 0.0079754912 0.0021183436 0.0060437807 + 746100 0.0051304897 0.0020079666 0.0045331295 + 746200 0.0053757426 0.0019411738 0.0045870472 + 746300 0.0032664429 0.0022089573 0.0038166597 + 746400 0.0036527735 0.0023651091 0.0041629586 + 746500 0.0053152746 0.0021534059 0.0047695176 + 746600 0.0041534754 0.0022998665 0.0043441552 + 746700 0.0040065159 0.0026149481 0.0045869051 + 746800 0.0054141531 0.0024193093 0.0050840878 + 746900 0.0053495874 0.0022732559 0.0049062559 + 747000 0.0051896532 0.0024684212 0.0050227036 + 747100 0.0038318199 0.0026711753 0.0045571492 + 747200 0.0046102827 0.0025753776 0.0048445011 + 747300 0.0049852879 0.0026972451 0.0051509415 + 747400 0.0054558913 0.0028715739 0.0055568954 + 747500 0.0035844854 0.0025251745 0.0042894134 + 747600 0.0044205374 0.0021099855 0.0042857188 + 747700 0.00485057 0.0020085397 0.0043959296 + 747800 0.0036916064 0.0022435908 0.0040605533 + 747900 0.0049314137 0.0021907709 0.0046179511 + 748000 0.005719573 0.0020352825 0.0048503848 + 748100 0.0061416186 0.0022724288 0.0052952567 + 748200 0.0034921703 0.0028009301 0.0045197327 + 748300 0.0058159445 0.0022358013 0.0050983365 + 748400 0.0049961167 0.0025341405 0.0049931667 + 748500 0.0052746275 0.0026099368 0.0052060425 + 748600 0.0050180595 0.0026405261 0.0051103523 + 748700 0.0062016583 0.0026385235 0.0056909022 + 748800 0.0052601716 0.003079793 0.0056687837 + 748900 0.005853724 0.0031613433 0.0060424731 + 749000 0.0062165121 0.0024266276 0.0054863172 + 749100 0.0076571985 0.0021034499 0.0058722273 + 749200 0.0062859393 0.002735961 0.0058298217 + 749300 0.0051662172 0.0033661615 0.0059089091 + 749400 0.0044989474 0.003103798 0.0053181237 + 749500 0.004798559 0.0029880876 0.0053498784 + 749600 0.005569171 0.0026183755 0.0053594519 + 749700 0.0056433523 0.0025349102 0.0053124976 + 749800 0.0047298486 0.0029280485 0.0052560209 + 749900 0.0053621285 0.0027955367 0.0054347094 + 750000 0.0047814272 0.002737316 0.0050906747 + 750100 0.0045115387 0.0026256934 0.0048462163 + 750200 0.0042634748 0.0023735172 0.0044719462 + 750300 0.0045286176 0.0025137241 0.004742653 + 750400 0.0056692348 0.0024638555 0.0052541821 + 750500 0.0036316193 0.0029661957 0.0047536333 + 750600 0.0056676641 0.0027882462 0.0055777996 + 750700 0.0049060896 0.0025740246 0.0049887406 + 750800 0.0047350967 0.0023335966 0.004664152 + 750900 0.0043063069 0.0027179673 0.0048374778 + 751000 0.0062313908 0.0020905522 0.0051575649 + 751100 0.0058157046 0.0026164246 0.0054788418 + 751200 0.0050407483 0.0025733076 0.0050543009 + 751300 0.0058316777 0.0020142477 0.0048845265 + 751400 0.0040703245 0.0018952526 0.0038986154 + 751500 0.0051713511 0.0019109119 0.0044561863 + 751600 0.0049521989 0.0019625409 0.0043999513 + 751700 0.0049054184 0.0024154813 0.0048298669 + 751800 0.0056621992 0.0026889602 0.0054758239 + 751900 0.005291383 0.0026336329 0.0052379854 + 752000 0.0043776385 0.0024230635 0.0045776824 + 752100 0.0034775952 0.0025240478 0.0042356766 + 752200 0.0058619384 0.0025123738 0.0053975466 + 752300 0.0044869209 0.0027601138 0.0049685202 + 752400 0.004020747 0.0024646445 0.0044436059 + 752500 0.0039535061 0.0021655355 0.0041114018 + 752600 0.0052333954 0.001682192 0.0042580038 + 752700 0.0039968518 0.0018483139 0.0038155144 + 752800 0.0045548923 0.0020836178 0.0043254789 + 752900 0.0042650734 0.0016833199 0.0037825357 + 753000 0.0047808174 0.0016967796 0.0040498381 + 753100 0.0045745612 0.0019397316 0.0041912734 + 753200 0.0056203371 0.0018492651 0.0046155248 + 753300 0.0050010431 0.0019703543 0.0044318052 + 753400 0.0068736011 0.0023634706 0.0057465712 + 753500 0.0039157879 0.0031806869 0.0051079887 + 753600 0.0048615179 0.003137976 0.0055307543 + 753700 0.0063350762 0.0025190034 0.0056370487 + 753800 0.0060476745 0.0023617181 0.0053383078 + 753900 0.0043087866 0.0023951336 0.0045158645 + 754000 0.0048586901 0.0019528375 0.0043442241 + 754100 0.0058651522 0.0016054624 0.004492217 + 754200 0.0043544407 0.0019387502 0.0040819515 + 754300 0.0042534688 0.0021986749 0.0042921791 + 754400 0.0062550204 0.0025323084 0.0056109512 + 754500 0.0051378396 0.0026370458 0.0051658262 + 754600 0.00394405 0.0032456185 0.0051868306 + 754700 0.005010206 0.0028467424 0.0053127031 + 754800 0.0048608538 0.0026053491 0.0049978006 + 754900 0.0058425418 0.0024078918 0.0052835179 + 755000 0.0060563467 0.0024548609 0.0054357191 + 755100 0.0059836758 0.0021114443 0.0050565348 + 755200 0.0050013983 0.0022752098 0.0047368355 + 755300 0.0032615824 0.0024061907 0.0040115007 + 755400 0.0064150999 0.002246985 0.0054044169 + 755500 0.0055112882 0.002460885 0.0051734722 + 755600 0.0052222051 0.0024289879 0.0049992919 + 755700 0.0052218758 0.0024813171 0.0050514591 + 755800 0.006114554 0.0024650675 0.0054745746 + 755900 0.0054320736 0.0026670715 0.0053406702 + 756000 0.0053319724 0.0024794791 0.0051038093 + 756100 0.0048143464 0.0024638363 0.0048333974 + 756200 0.0055361104 0.002505422 0.0052302263 + 756300 0.0057105042 0.0030322741 0.0058429129 + 756400 0.0034691314 0.0033961299 0.005103593 + 756500 0.0057434107 0.0027792298 0.0056060648 + 756600 0.0047914668 0.0026447284 0.0050030285 + 756700 0.0046594967 0.0034020138 0.0056953598 + 756800 0.0053054054 0.0031268215 0.0057380758 + 756900 0.0050841106 0.0023417634 0.004844099 + 757000 0.0063364823 0.0020951387 0.005213876 + 757100 0.0048196269 0.0019269659 0.004299126 + 757200 0.0062587926 0.0022842501 0.0053647495 + 757300 0.0056206295 0.0027809256 0.0055473292 + 757400 0.0061145063 0.0024919758 0.0055014594 + 757500 0.0049652892 0.002206854 0.0046507073 + 757600 0.0051136781 0.0018515575 0.004368446 + 757700 0.0052543809 0.0019105107 0.0044966513 + 757800 0.0036294043 0.0022245789 0.0040109263 + 757900 0.0039912572 0.0020383654 0.0040028122 + 758000 0.0043439363 0.0018703499 0.004008381 + 758100 0.0060640938 0.0020722687 0.0050569399 + 758200 0.0044688256 0.0023686952 0.0045681953 + 758300 0.0052102099 0.0027399926 0.0053043927 + 758400 0.0045943514 0.0028186671 0.0050799494 + 758500 0.0053338356 0.0025993864 0.0052246336 + 758600 0.0052645778 0.0023392636 0.004930423 + 758700 0.0038525558 0.0026449583 0.0045411381 + 758800 0.0037095431 0.002197116 0.0040229067 + 758900 0.0036907583 0.0021893151 0.0040058602 + 759000 0.0058859333 0.0022531865 0.0051501693 + 759100 0.005295062 0.0023043466 0.0049105099 + 759200 0.005104182 0.0021126566 0.0046248711 + 759300 0.0051899574 0.0025045635 0.0050589957 + 759400 0.0054487332 0.0021820928 0.0048638912 + 759500 0.0047455734 0.001787527 0.0041232389 + 759600 0.0044024984 0.0020522199 0.0042190746 + 759700 0.0039504517 0.0024014315 0.0043457944 + 759800 0.0050707058 0.0022847825 0.0047805205 + 759900 0.004735368 0.0019863397 0.0043170287 + 760000 0.0055820948 0.0020319172 0.0047793545 + 760100 0.0051653585 0.0025402744 0.0050825993 + 760200 0.0060967935 0.0023310098 0.0053317753 + 760300 0.0063768843 0.0019767753 0.005115398 + 760400 0.0053995693 0.0023735712 0.0050311717 + 760500 0.0065081311 0.0026416632 0.005844884 + 760600 0.0064264647 0.0029777989 0.0061408245 + 760700 0.0045365752 0.0028659822 0.0050988278 + 760800 0.003332127 0.002676562 0.0043165933 + 760900 0.0049914289 0.0023518271 0.004808546 + 761000 0.0072336956 0.002327499 0.0058878335 + 761100 0.0065748081 0.0027127844 0.0059488228 + 761200 0.0060559915 0.0029002183 0.0058809016 + 761300 0.0056729967 0.0024674665 0.0052596445 + 761400 0.0055529551 0.002141332 0.0048744271 + 761500 0.0050047078 0.002133781 0.0045970356 + 761600 0.0039916897 0.002162554 0.0041272138 + 761700 0.0058271515 0.0020632058 0.0049312569 + 761800 0.0042683088 0.0024213818 0.0045221901 + 761900 0.0047985638 0.0021766999 0.0045384931 + 762000 0.0062651128 0.0019364312 0.0050200414 + 762100 0.0055235339 0.0020838229 0.0048024373 + 762200 0.0042158333 0.0028139894 0.0048889698 + 762300 0.0044478736 0.0028097732 0.004998961 + 762400 0.0039739399 0.0022994461 0.0042553696 + 762500 0.0048120456 0.0017444468 0.0041128755 + 762600 0.0059390801 0.0020323701 0.0049555111 + 762700 0.0044992462 0.0024930479 0.0047075207 + 762800 0.0038452853 0.0026129176 0.004505519 + 762900 0.0039066441 0.0026089578 0.0045317592 + 763000 0.0033345723 0.0027622918 0.0044035266 + 763100 0.0048157479 0.0026280419 0.0049982929 + 763200 0.0048598637 0.0026240558 0.00501602 + 763300 0.0050436839 0.0026234043 0.0051058425 + 763400 0.0038756331 0.0026958028 0.004603341 + 763500 0.0059289088 0.0024552231 0.0053733579 + 763600 0.0052284732 0.002811908 0.0053852971 + 763700 0.0055330587 0.003274904 0.0059982063 + 763800 0.0060076317 0.0032582717 0.0062151529 + 763900 0.0038501729 0.0030276593 0.0049226663 + 764000 0.0043871332 0.0025676327 0.0047269248 + 764100 0.0076227508 0.0023979944 0.006149817 + 764200 0.0050682044 0.0023724815 0.0048669884 + 764300 0.0043784839 0.0022766926 0.0044317276 + 764400 0.0043873095 0.0022449605 0.0044043394 + 764500 0.005315215 0.0020012792 0.0046173616 + 764600 0.0049733579 0.0020683703 0.0045161949 + 764700 0.0039314839 0.0021614655 0.0040964927 + 764800 0.003993667 0.0024026635 0.0043682964 + 764900 0.0044241521 0.0025711868 0.0047486992 + 765000 0.0046273827 0.0032019815 0.0054795214 + 765100 0.0049916148 0.002737624 0.0051944344 + 765200 0.0062204629 0.0026077145 0.0056693486 + 765300 0.0048271291 0.0024289455 0.0048047981 + 765400 0.0046716859 0.0023253422 0.0046246876 + 765500 0.0042397209 0.0026811739 0.0047679115 + 765600 0.0060421002 0.0027055727 0.0056794189 + 765700 0.0048138334 0.0027440907 0.0051133993 + 765800 0.0065963991 0.0022859406 0.0055326058 + 765900 0.0062031805 0.0027792521 0.00583238 + 766000 0.0055473522 0.0027023316 0.005432669 + 766100 0.0058429861 0.0025317798 0.0054076245 + 766200 0.0049090397 0.0023518712 0.0047680392 + 766300 0.0057174021 0.0025726663 0.0053867002 + 766400 0.005629205 0.0024151496 0.0051857739 + 766500 0.0040836388 0.0024054743 0.0044153902 + 766600 0.005482046 0.0024045756 0.0051027701 + 766700 0.0058142484 0.0025493402 0.0054110406 + 766800 0.0053665291 0.002208853 0.0048501916 + 766900 0.0050070973 0.0020269846 0.0044914153 + 767000 0.0047397166 0.0018797855 0.0042126147 + 767100 0.0046293083 0.0020523048 0.0043307925 + 767200 0.0060042706 0.0025108996 0.0054661266 + 767300 0.0050154283 0.0024544538 0.004922985 + 767400 0.0044375875 0.0023681538 0.0045522789 + 767500 0.0052030538 0.0023383775 0.0048992556 + 767600 0.0047573317 0.0025381811 0.0048796803 + 767700 0.005152448 0.0024578097 0.0049937802 + 767800 0.0043095077 0.0024065976 0.0045276834 + 767900 0.0042822422 0.0023716626 0.0044793287 + 768000 0.0044621689 0.0022150359 0.0044112597 + 768100 0.0050672685 0.0023475872 0.0048416334 + 768200 0.0051289214 0.0023446091 0.0048690001 + 768300 0.0053161536 0.002121147 0.0047376913 + 768400 0.0042290818 0.0025597476 0.0046412487 + 768500 0.0048607904 0.0026112919 0.0050037122 + 768600 0.0052147421 0.0028593152 0.005425946 + 768700 0.0047442289 0.0035166206 0.0058516708 + 768800 0.0055487604 0.0033900581 0.0061210886 + 768900 0.00573745 0.0027431647 0.0055670659 + 769000 0.0041616147 0.0028770425 0.0049253373 + 769100 0.0061700821 0.003226473 0.0062633103 + 769200 0.0044752015 0.0032798427 0.0054824809 + 769300 0.0053666671 0.0030895562 0.0057309626 + 769400 0.0056023884 0.0022726676 0.0050300931 + 769500 0.0071285806 0.0019874931 0.0054960914 + 769600 0.0054672449 0.0022031037 0.0048940133 + 769700 0.0038263919 0.0032436106 0.0051269128 + 769800 0.005041845 0.0033667251 0.0058482582 + 769900 0.0055291178 0.0025141957 0.0052355584 + 770000 0.0070725226 0.0019445541 0.0054255613 + 770100 0.004558823 0.001975975 0.0042197707 + 770200 0.0059836012 0.0017639695 0.0047090232 + 770300 0.005793066 0.0021543867 0.0050056614 + 770400 0.0054308914 0.0025249752 0.0051979921 + 770500 0.0060921971 0.0024846156 0.0054831189 + 770600 0.0060799265 0.0024033767 0.0053958405 + 770700 0.0055749707 0.0023116933 0.0050556242 + 770800 0.0047797009 0.0021853795 0.0045378885 + 770900 0.0050924076 0.0016771495 0.0041835689 + 771000 0.005557092 0.0018612545 0.0045963857 + 771100 0.0049572328 0.0020001769 0.004440065 + 771200 0.0063685021 0.0017397864 0.0048742835 + 771300 0.0054974556 0.0017494668 0.0044552458 + 771400 0.0053677031 0.0019536369 0.0045955533 + 771500 0.0050200806 0.0018165396 0.0042873605 + 771600 0.0062513544 0.0020398877 0.0051167261 + 771700 0.0062473819 0.0020595708 0.0051344541 + 771800 0.0048147962 0.0023673582 0.0047371407 + 771900 0.0052968686 0.0024888995 0.005095952 + 772000 0.0053363505 0.0028277463 0.0054542313 + 772100 0.0057577622 0.0026211062 0.0054550048 + 772200 0.0073484072 0.0020615063 0.0056783005 + 772300 0.002975839 0.0023146615 0.0037793322 + 772400 0.0043204091 0.0022832278 0.0044096791 + 772500 0.0048559531 0.0023750704 0.0047651099 + 772600 0.0058114234 0.0026981403 0.0055584502 + 772700 0.0059717182 0.0026789983 0.0056182033 + 772800 0.0057452682 0.0027494978 0.005577247 + 772900 0.0059714966 0.002392934 0.00533203 + 773000 0.0053569769 0.0027807761 0.0054174132 + 773100 0.0041032389 0.0031769908 0.0051965537 + 773200 0.0050144398 0.0028010678 0.0052691124 + 773300 0.0045182463 0.0028195835 0.0050434079 + 773400 0.0069073227 0.0023782412 0.0057779391 + 773500 0.0082597995 0.0020566188 0.0061219889 + 773600 0.005147002 0.0024416284 0.0049749184 + 773700 0.0042807528 0.002565868 0.0046728011 + 773800 0.00457699 0.002403341 0.0046560783 + 773900 0.0062048751 0.0024270339 0.0054809958 + 774000 0.0056010928 0.0020881458 0.0048449337 + 774100 0.0044762802 0.0021822966 0.0043854658 + 774200 0.0036800125 0.0024923543 0.0043036104 + 774300 0.0042170452 0.0023471803 0.0044227572 + 774400 0.0046551411 0.0026871489 0.0049783511 + 774500 0.0044597262 0.0024406649 0.0046356863 + 774600 0.0073621053 0.0024495009 0.0060730371 + 774700 0.0051899996 0.002945165 0.0054996179 + 774800 0.0049350352 0.0033925016 0.0058214643 + 774900 0.0054288445 0.0026769383 0.0053489477 + 775000 0.0040132507 0.0024423643 0.0044176361 + 775100 0.0065604102 0.0023241885 0.0055531404 + 775200 0.004759022 0.0024775733 0.0048199045 + 775300 0.0041721974 0.0029305047 0.0049840081 + 775400 0.004920214 0.0022956908 0.0047173586 + 775500 0.0058795278 0.0017957661 0.0046895962 + 775600 0.005796192 0.0018490861 0.0047018994 + 775700 0.0040082245 0.0025694174 0.0045422154 + 775800 0.0043240482 0.0026851831 0.0048134256 + 775900 0.0054032696 0.0020722437 0.0047316655 + 776000 0.0050791041 0.0018415783 0.0043414498 + 776100 0.003712392 0.0020749131 0.003902106 + 776200 0.0050031104 0.0018389152 0.0043013836 + 776300 0.0052068302 0.0019219169 0.0044846536 + 776400 0.0049490613 0.0018079807 0.0042438468 + 776500 0.0074777663 0.0015148391 0.0051953023 + 776600 0.0042342345 0.0021527084 0.0042367456 + 776700 0.0048625562 0.0023111446 0.004704434 + 776800 0.0040961535 0.0025732416 0.0045893172 + 776900 0.0044756072 0.0026365796 0.0048394175 + 777000 0.0075152789 0.0024206838 0.0061196101 + 777100 0.005516003 0.0025210172 0.005235925 + 777200 0.0039787127 0.0029551346 0.0049134073 + 777300 0.0045254023 0.0027871241 0.0050144705 + 777400 0.0040747213 0.0025684238 0.0045739507 + 777500 0.0039554892 0.0023369173 0.0042837596 + 777600 0.0053270046 0.0020339961 0.0046558812 + 777700 0.0047351195 0.0023738108 0.0047043774 + 777800 0.0048394304 0.0024999231 0.0048818303 + 777900 0.0033198296 0.0027432777 0.0043772563 + 778000 0.0046165114 0.0029775303 0.0052497195 + 778100 0.0050645882 0.0029087409 0.0054014679 + 778200 0.0052084141 0.0026043365 0.0051678528 + 778300 0.0053292339 0.00256176 0.0051847423 + 778400 0.0059918921 0.002225962 0.0051750964 + 778500 0.0067156137 0.0019427497 0.0052480909 + 778600 0.0069734406 0.0018350799 0.0052673201 + 778700 0.005302429 0.0018841217 0.004493911 + 778800 0.0055933066 0.0016819542 0.0044349097 + 778900 0.004203678 0.0016117157 0.0036807135 + 779000 0.004488953 0.0019639954 0.004173402 + 779100 0.0056610631 0.0023156645 0.005101969 + 779200 0.0040946405 0.0024329528 0.0044482837 + 779300 0.0052846985 0.0020834698 0.0046845323 + 779400 0.0036760387 0.0019529647 0.003762265 + 779500 0.0055183491 0.0022353649 0.0049514274 + 779600 0.0050240303 0.0024130809 0.0048858459 + 779700 0.00563063 0.002610883 0.0053822087 + 779800 0.0059641117 0.0029555541 0.0058910154 + 779900 0.0057599065 0.0030016898 0.0058366438 + 780000 0.0062650131 0.0033034901 0.0063870512 + 780100 0.0055228764 0.0031071226 0.0058254134 + 780200 0.0062994446 0.003268714 0.0063692219 + 780300 0.0047601264 0.0031671408 0.0055100155 + 780400 0.0055441548 0.0025255896 0.0052543533 + 780500 0.0049467338 0.0028893302 0.0053240507 + 780600 0.0034495926 0.003200194 0.0048980404 + 780700 0.0055558855 0.0031304973 0.0058650347 + 780800 0.0071873858 0.0028675799 0.0064051214 + 780900 0.0052971745 0.0031174567 0.0057246598 + 781000 0.005232574 0.0031133494 0.0056887569 + 781100 0.0055835546 0.0028390865 0.0055872423 + 781200 0.0053366164 0.0027047133 0.0053313291 + 781300 0.0063079107 0.0025731785 0.0056778534 + 781400 0.004272414 0.0020582954 0.0041611241 + 781500 0.0050782059 0.0018694264 0.0043688558 + 781600 0.0049321778 0.0022682076 0.0046957638 + 781700 0.0040452874 0.0026057338 0.0045967737 + 781800 0.0042787784 0.0022918146 0.0043977759 + 781900 0.0055658209 0.0015948091 0.0043342366 + 782000 0.0049635319 0.0017448473 0.0041878356 + 782100 0.0039689732 0.0024424109 0.0043958899 + 782200 0.0055774124 0.0023117967 0.0050569294 + 782300 0.0044049023 0.0026385013 0.0048065392 + 782400 0.0046955026 0.0025664482 0.0048775159 + 782500 0.005206874 0.0030234487 0.005586207 + 782600 0.0054369101 0.0030450337 0.0057210129 + 782700 0.0058401265 0.0027044715 0.0055789088 + 782800 0.005014852 0.0024818598 0.0049501072 + 782900 0.0039286022 0.0024247586 0.0043583675 + 783000 0.0052167959 0.0024465143 0.005014156 + 783100 0.0072079775 0.0022555094 0.0058031858 + 783200 0.0047624473 0.0031643028 0.0055083198 + 783300 0.0048995074 0.0034948063 0.0059062826 + 783400 0.0046136716 0.0037939777 0.0060647692 + 783500 0.0065051727 0.0034428863 0.006644651 + 783600 0.0063888688 0.0031794108 0.0063239322 + 783700 0.0059546255 0.0033902113 0.0063210035 + 783800 0.003981038 0.004103358 0.0060627751 + 783900 0.0050363632 0.0036396981 0.0061185332 + 784000 0.0076586393 0.0029908699 0.0067603564 + 784100 0.0055753142 0.0030340918 0.0057781917 + 784200 0.0069190314 0.0029226973 0.0063281581 + 784300 0.0038070664 0.0024916788 0.0043654693 + 784400 0.0066383628 0.001980977 0.0052482961 + 784500 0.0046661378 0.0022706602 0.0045672749 + 784600 0.0048888651 0.0021972716 0.0046035099 + 784700 0.0043550302 0.0024462272 0.0045897187 + 784800 0.0045183354 0.0027124689 0.0049363371 + 784900 0.00504639 0.0023728589 0.004856629 + 785000 0.0042504652 0.0024410086 0.0045330344 + 785100 0.0054230573 0.002188386 0.004857547 + 785200 0.0057269141 0.0026201598 0.0054388753 + 785300 0.0042627752 0.0030103451 0.0051084298 + 785400 0.0038880708 0.002907284 0.0048209438 + 785500 0.0047396732 0.0026660689 0.0049988768 + 785600 0.0063119048 0.0024097134 0.0055163541 + 785700 0.0063059906 0.0027964404 0.0059001702 + 785800 0.0039141781 0.0032885487 0.0052150583 + 785900 0.0057452056 0.0026362407 0.0054639591 + 786000 0.0050209909 0.0024243071 0.0048955761 + 786100 0.0074743471 0.0022596872 0.0059384674 + 786200 0.0048594268 0.0027905696 0.0051823187 + 786300 0.005558456 0.0034110404 0.006146843 + 786400 0.0051930229 0.0028765149 0.0054324558 + 786500 0.0063318406 0.0025370832 0.0056535359 + 786600 0.0047517847 0.0031060132 0.0054447822 + 786700 0.0043178485 0.0030523422 0.0051775333 + 786800 0.0050807331 0.0029497895 0.0054504628 + 786900 0.0051932324 0.0025771339 0.005133178 + 787000 0.0075099697 0.002408286 0.0061045992 + 787100 0.0051749965 0.0029180851 0.0054651536 + 787200 0.0046956748 0.0031920242 0.0055031766 + 787300 0.0056945396 0.0028486358 0.005651417 + 787400 0.0051738955 0.0022781349 0.0048246616 + 787500 0.0061350007 0.0022389242 0.0052584949 + 787600 0.0052392248 0.0022610752 0.0048397562 + 787700 0.0058328586 0.0024856656 0.0053565257 + 787800 0.0039304377 0.0023579027 0.004292415 + 787900 0.0043956102 0.0023691894 0.0045326538 + 788000 0.0057275376 0.0023895609 0.0052085832 + 788100 0.0078830504 0.0024566936 0.0063366325 + 788200 0.0066063144 0.0030933481 0.0063448935 + 788300 0.0046591439 0.0034039288 0.0056971012 + 788400 0.0060329283 0.0030307123 0.0060000441 + 788500 0.0055952219 0.0027958962 0.0055497944 + 788600 0.0051344836 0.0021654916 0.0046926203 + 788700 0.0056725362 0.001929883 0.0047218344 + 788800 0.0038733196 0.0026761222 0.0045825218 + 788900 0.0053701776 0.0031225403 0.0057656746 + 789000 0.0049600165 0.0034779797 0.0059192379 + 789100 0.0051412283 0.0028203029 0.0053507511 + 789200 0.0049923965 0.0024412984 0.0048984935 + 789300 0.0041070026 0.0026724464 0.0046938617 + 789400 0.0060319495 0.0023889766 0.0053578267 + 789500 0.0068776647 0.0026133459 0.0059984465 + 789600 0.005097349 0.0025823783 0.0050912297 + 789700 0.0044953441 0.0022414706 0.0044540227 + 789800 0.0045150978 0.0023070835 0.0045293582 + 789900 0.0058959864 0.0022280303 0.0051299611 + 790000 0.0046694084 0.0018942873 0.0041925117 + 790100 0.0045552816 0.0019587076 0.0042007603 + 790200 0.0049424973 0.001908115 0.0043407504 + 790300 0.0052614537 0.0018640156 0.0044536373 + 790400 0.0075504859 0.0022933042 0.006009559 + 790500 0.004808548 0.0026137646 0.0049804718 + 790600 0.0063962849 0.0018414099 0.0049895814 + 790700 0.0048067395 0.0017041349 0.004069952 + 790800 0.0062313664 0.0019806043 0.005047605 + 790900 0.0036257424 0.0021211523 0.0039056974 + 791000 0.0058206821 0.0019762484 0.0048411153 + 791100 0.0042831491 0.0019485765 0.0040566889 + 791200 0.0046565941 0.0020206007 0.0043125181 + 791300 0.0060108654 0.0017238755 0.0046823483 + 791400 0.0059959569 0.0018649616 0.0048160966 + 791500 0.0046180379 0.0019989843 0.0042719248 + 791600 0.0047133935 0.002089358 0.0044092314 + 791700 0.0036772708 0.0023762114 0.0041861181 + 791800 0.002887288 0.0025457891 0.0039668761 + 791900 0.0059905242 0.0020872762 0.0050357373 + 792000 0.0050223864 0.0021270534 0.0045990092 + 792100 0.0036972524 0.0020106586 0.0038304 + 792200 0.0052037036 0.0012554535 0.0038166513 + 792300 0.0041601446 0.0015070173 0.0035545885 + 792400 0.0033984236 0.0021023334 0.003774995 + 792500 0.0045788178 0.0018724928 0.0041261296 + 792600 0.0062773072 0.0017197006 0.0048093127 + 792700 0.0065576029 0.0021682807 0.0053958508 + 792800 0.0036962742 0.002305865 0.004125125 + 792900 0.0049206412 0.0025385391 0.0049604172 + 793000 0.005425183 0.0026990851 0.0053692924 + 793100 0.0052441961 0.0024180741 0.0049992019 + 793200 0.0059867232 0.0021662683 0.0051128586 + 793300 0.005243021 0.0024385778 0.0050191272 + 793400 0.0054777778 0.002528862 0.0052249558 + 793500 0.0052732979 0.002767387 0.0053628383 + 793600 0.0054084433 0.0029939388 0.005655907 + 793700 0.0033607073 0.0027016978 0.0043557959 + 793800 0.006092199 0.0025279025 0.0055264067 + 793900 0.0052426301 0.0028191001 0.0053994571 + 794000 0.0032016821 0.0026345757 0.0042104036 + 794100 0.0069855605 0.0027516789 0.0061898844 + 794200 0.0044505305 0.0031718852 0.0053623807 + 794300 0.0039255971 0.0031462577 0.0050783875 + 794400 0.0072739024 0.0024652809 0.0060454048 + 794500 0.0059843804 0.0023263538 0.005271791 + 794600 0.0059572874 0.00265106 0.0055831624 + 794700 0.0056308405 0.0026385093 0.0054099386 + 794800 0.0055757483 0.0025204431 0.0052647566 + 794900 0.0048433799 0.0026034563 0.0049873074 + 795000 0.0057871667 0.002114272 0.0049626431 + 795100 0.0061411986 0.0022719705 0.0052945917 + 795200 0.0059645963 0.0027751968 0.0057108966 + 795300 0.005676599 0.0023542591 0.0051482102 + 795400 0.005879839 0.0019507861 0.0048447693 + 795500 0.0054648022 0.0019161389 0.0046058462 + 795600 0.0037909814 0.0020571438 0.0039230175 + 795700 0.0049760238 0.0020926043 0.004541741 + 795800 0.0060876649 0.0020096976 0.0050059702 + 795900 0.0051249872 0.0021676485 0.0046901031 + 796000 0.0047406622 0.00227329 0.0046065846 + 796100 0.0051477449 0.0020569483 0.004590604 + 796200 0.0054224438 0.0018557372 0.0045245963 + 796300 0.0041579411 0.0018900422 0.0039365289 + 796400 0.0049537068 0.0024485388 0.0048866913 + 796500 0.0054012053 0.0022064874 0.0048648931 + 796600 0.003885557 0.0019672262 0.0038796488 + 796700 0.0041971368 0.0021457437 0.004211522 + 796800 0.0049260887 0.0020477808 0.00447234 + 796900 0.0052150441 0.0022691767 0.0048359562 + 797000 0.0049949753 0.0026724226 0.005130887 + 797100 0.0048429289 0.0028514076 0.0052350366 + 797200 0.0036630101 0.0030279523 0.0048308401 + 797300 0.0049861638 0.0033185025 0.00577263 + 797400 0.0059589929 0.0035099587 0.0064429005 + 797500 0.0068001361 0.0027775149 0.0061244569 + 797600 0.0050843421 0.0022672926 0.0047697423 + 797700 0.0054247252 0.0021785194 0.0048485013 + 797800 0.0060898437 0.0022373119 0.0052346568 + 797900 0.0045254692 0.0024615852 0.0046889646 + 798000 0.0053348881 0.0023765669 0.0050023322 + 798100 0.0059633229 0.0023727995 0.0053078725 + 798200 0.0040366384 0.0028223447 0.0048091277 + 798300 0.0054853851 0.0028382476 0.0055380856 + 798400 0.0037344918 0.0031003154 0.0049383856 + 798500 0.0055912322 0.0026149833 0.0053669179 + 798600 0.0067329291 0.0022204979 0.0055343614 + 798700 0.0055965816 0.0024667148 0.0052212823 + 798800 0.0065797282 0.0025959885 0.0058344485 + 798900 0.0065713894 0.0030480415 0.0062823972 + 799000 0.0045786624 0.0030380876 0.005291648 + 799100 0.0051307304 0.0028176862 0.0053429676 + 799200 0.0051815512 0.0033167456 0.0058670403 + 799300 0.0055247645 0.0034934721 0.0062126922 + 799400 0.0036280497 0.0036858235 0.0054715042 + 799500 0.0054181693 0.0028831203 0.0055498755 + 799600 0.004307995 0.0026311681 0.0047515094 + 799700 0.0054128937 0.0026943111 0.0053584697 + 799800 0.0050671056 0.0024314113 0.0049253773 + 799900 0.0040153685 0.0024327399 0.0044090541 + 800000 0.0065944192 0.0026461924 0.0058918831 + 800100 0.0056989692 0.0030248047 0.0058297661 + 800200 0.0052238894 0.0028770789 0.005448212 + 800300 0.0053472908 0.0024979291 0.0051297988 + 800400 0.0050119433 0.0028198426 0.0052866584 + 800500 0.0044052211 0.0032197175 0.0053879122 + 800600 0.0047769985 0.0028232399 0.0051744189 + 800700 0.0050875244 0.0021924727 0.0046964886 + 800800 0.0050891894 0.0021763624 0.0046811978 + 800900 0.0046180592 0.0022233713 0.0044963224 + 801000 0.0049110187 0.0022157727 0.0046329147 + 801100 0.0046612339 0.0025801033 0.0048743044 + 801200 0.0057912024 0.0023779979 0.0052283553 + 801300 0.004580307 0.0025391576 0.0047935274 + 801400 0.0053558831 0.0023927555 0.0050288543 + 801500 0.0071264353 0.0021692121 0.0056767544 + 801600 0.0044605458 0.0026787021 0.004874127 + 801700 0.0051829383 0.0026085316 0.005159509 + 801800 0.0036555488 0.0028779315 0.0046771469 + 801900 0.0037129209 0.0028543062 0.0046817595 + 802000 0.0042029235 0.0025157385 0.0045843649 + 802100 0.0048948294 0.0021574943 0.0045666681 + 802200 0.0054047182 0.0019907317 0.0046508664 + 802300 0.0066340302 0.0019599801 0.0052251668 + 802400 0.0033611588 0.0026488687 0.0043031891 + 802500 0.0057964131 0.0026330065 0.0054859286 + 802600 0.0042573213 0.0027230031 0.0048184035 + 802700 0.0050715141 0.0023323401 0.004828476 + 802800 0.0052455293 0.0021727989 0.0047545829 + 802900 0.0043382456 0.0021369005 0.0042721307 + 803000 0.004858222 0.0019771173 0.0043682735 + 803100 0.0056956279 0.0021257568 0.0049290737 + 803200 0.0034836913 0.0028634706 0.0045780999 + 803300 0.0076588062 0.0026262354 0.0063958041 + 803400 0.0065363167 0.0026984061 0.0059154995 + 803500 0.0053437716 0.0028397229 0.0054698605 + 803600 0.0048283264 0.0026542571 0.005030699 + 803700 0.0063854525 0.002338144 0.0054809839 + 803800 0.0048028882 0.0027134361 0.0050773576 + 803900 0.0049903332 0.0027050008 0.0051611805 + 804000 0.0040286695 0.0021686719 0.0041515326 + 804100 0.0044837713 0.0017533571 0.0039602133 + 804200 0.005427535 0.0017705946 0.0044419594 + 804300 0.0039781982 0.0023860224 0.0043440418 + 804400 0.0059611923 0.0026586393 0.0055926637 + 804500 0.0063743443 0.0028160383 0.0059534109 + 804600 0.0048014459 0.0027203277 0.0050835394 + 804700 0.0069980563 0.0028722118 0.0063165676 + 804800 0.0053090994 0.0030856864 0.0056987587 + 804900 0.0044798155 0.0026560302 0.0048609394 + 805000 0.0046060196 0.0022414286 0.0045084538 + 805100 0.0037810915 0.0023793877 0.0042403937 + 805200 0.0054648779 0.0023693187 0.0050590633 + 805300 0.0047273624 0.0025142 0.0048409487 + 805400 0.003802994 0.0025995938 0.0044713799 + 805500 0.0054997805 0.0020551479 0.0047620711 + 805600 0.0059762316 0.0015803165 0.0045217431 + 805700 0.0050585977 0.0021848695 0.004674648 + 805800 0.0058137721 0.0024660738 0.0053275398 + 805900 0.0051647894 0.0027307872 0.005272832 + 806000 0.0041972157 0.0026033447 0.0046691618 + 806100 0.0059938686 0.0018452851 0.0047953923 + 806200 0.0054752685 0.0019755942 0.0046704529 + 806300 0.0045191957 0.0021209591 0.0043452507 + 806400 0.0047783795 0.0022730863 0.0046249449 + 806500 0.0070927761 0.0023474042 0.0058383799 + 806600 0.0048031679 0.0030793229 0.0054433821 + 806700 0.0048519426 0.0033300207 0.0057180862 + 806800 0.0058446772 0.0034086568 0.0062853339 + 806900 0.0044759346 0.0035216341 0.0057246332 + 807000 0.0061450902 0.0032800906 0.0063046271 + 807100 0.0060654966 0.0036027682 0.0065881298 + 807200 0.0051107256 0.0032783332 0.0057937685 + 807300 0.0038824921 0.0031026085 0.0050135226 + 807400 0.0042073679 0.0029456845 0.0050164983 + 807500 0.0045022625 0.0024579652 0.0046739225 + 807600 0.0038076074 0.0026790433 0.0045531 + 807700 0.0047200224 0.0029318709 0.005255007 + 807800 0.0059020995 0.0024778281 0.0053827677 + 807900 0.0056249985 0.0025086952 0.0052772492 + 808000 0.0050013296 0.0031225578 0.0055841497 + 808100 0.0062035485 0.0036662574 0.0067195664 + 808200 0.0053092942 0.0033327398 0.005945908 + 808300 0.0072860121 0.0026954477 0.0062815318 + 808400 0.0055869222 0.0029131222 0.0056629355 + 808500 0.0066775721 0.0029521033 0.0062387209 + 808600 0.0064914464 0.0028710074 0.0060660162 + 808700 0.0038194408 0.0026761059 0.0045559869 + 808800 0.0042538905 0.0022051746 0.0042988864 + 808900 0.0058142114 0.0020698715 0.0049315537 + 809000 0.0041814801 0.0023882557 0.0044463279 + 809100 0.0043059143 0.0020387136 0.0041580308 + 809200 0.0070717432 0.0017621612 0.0052427848 + 809300 0.006369485 0.0026626448 0.0057976257 + 809400 0.0048244078 0.0027335988 0.005108112 + 809500 0.0056788469 0.0025628971 0.0053579546 + 809600 0.0060233095 0.0022524465 0.0052170442 + 809700 0.0058706495 0.0026325095 0.0055219698 + 809800 0.0062622474 0.0028198752 0.0059020751 + 809900 0.0062105443 0.0029134764 0.0059702287 + 810000 0.0053129268 0.0030607132 0.0056756694 + 810100 0.0051102102 0.0026993188 0.0052145004 + 810200 0.0039650609 0.002621871 0.0045734244 + 810300 0.0054564162 0.0024894124 0.0051749922 + 810400 0.0038501687 0.0026797162 0.0045747211 + 810500 0.0034502108 0.0029647467 0.0046628974 + 810600 0.0047395758 0.002651548 0.0049843079 + 810700 0.0039382437 0.0019980361 0.0039363904 + 810800 0.0078414055 0.0018974779 0.0057569197 + 810900 0.0052435374 0.0022607785 0.004841582 + 811000 0.0045516226 0.0023289666 0.0045692184 + 811100 0.0051127818 0.0022919624 0.0048084097 + 811200 0.0052257612 0.002606625 0.0051786794 + 811300 0.0030990609 0.002794074 0.004319393 + 811400 0.0053885374 0.0027246085 0.0053767793 + 811500 0.006305813 0.0025706286 0.005674271 + 811600 0.0051746001 0.0029853519 0.0055322254 + 811700 0.0042235266 0.0033744363 0.0054532033 + 811800 0.0047639426 0.0029524662 0.0052972192 + 811900 0.0060282306 0.0028285126 0.0057955323 + 812000 0.0050358032 0.0028832301 0.0053617895 + 812100 0.0034431429 0.0025625559 0.0042572278 + 812200 0.0055558408 0.0023655687 0.0051000841 + 812300 0.0051115359 0.0020510076 0.0045668417 + 812400 0.0053085223 0.0019050442 0.0045178326 + 812500 0.0046592557 0.0017725341 0.0040657615 + 812600 0.0045477712 0.001636453 0.0038748092 + 812700 0.0046586394 0.0023007102 0.0045936343 + 812800 0.005347923 0.0030437473 0.0056759281 + 812900 0.0057864324 0.0027437754 0.0055917851 + 813000 0.0047082049 0.0024572109 0.0047745305 + 813100 0.0048234159 0.0021548033 0.0045288283 + 813200 0.0045164183 0.0021058069 0.0043287315 + 813300 0.0044567175 0.002278956 0.0044724967 + 813400 0.0038570192 0.0020864357 0.0039848123 + 813500 0.005390578 0.0022027026 0.0048558778 + 813600 0.0060454772 0.0022775256 0.0052530339 + 813700 0.0056213831 0.0023370284 0.0051038029 + 813800 0.00617676 0.0021093688 0.0051494929 + 813900 0.0052385667 0.0021538883 0.0047322454 + 814000 0.0048262646 0.002281692 0.0046571191 + 814100 0.0043604831 0.0024548068 0.004600982 + 814200 0.0055924177 0.0028025747 0.0055550928 + 814300 0.0024676711 0.0031120374 0.0043265943 + 814400 0.0056064942 0.0025836149 0.0053430613 + 814500 0.0048332501 0.0024809125 0.0048597777 + 814600 0.0054700397 0.0025805494 0.0052728345 + 814700 0.0073709857 0.0025606557 0.0061885627 + 814800 0.0055112011 0.0025935914 0.0053061357 + 814900 0.004469499 0.0021824735 0.004382305 + 815000 0.0052821803 0.0021281717 0.0047279948 + 815100 0.0058845079 0.0019969061 0.0048931873 + 815200 0.0043466261 0.0026758964 0.0048152515 + 815300 0.0046557657 0.0026979474 0.004989457 + 815400 0.0041724988 0.0026112509 0.0046649027 + 815500 0.005230108 0.0020750763 0.0046492701 + 815600 0.0034916183 0.002120006 0.0038385369 + 815700 0.0048880473 0.0019371784 0.0043430142 + 815800 0.0054127907 0.0021834009 0.0048475088 + 815900 0.0055169433 0.0024209194 0.00513629 + 816000 0.0052105913 0.0024144845 0.0049790724 + 816100 0.0051669103 0.0021614205 0.0047045091 + 816200 0.0029282456 0.0028004218 0.0042416676 + 816300 0.0037742281 0.0026643525 0.0045219804 + 816400 0.0045134635 0.0024647099 0.0046861802 + 816500 0.0050553838 0.0021643943 0.004652591 + 816600 0.006750546 0.0021206207 0.0054431551 + 816700 0.0045652547 0.0024425843 0.0046895456 + 816800 0.005098987 0.0026671035 0.0051767612 + 816900 0.0051446774 0.0023562307 0.0048883767 + 817000 0.0046907594 0.0024474226 0.0047561558 + 817100 0.0049376664 0.0024954336 0.0049256913 + 817200 0.0063755109 0.0020884892 0.005226436 + 817300 0.0050217952 0.002250477 0.0047221418 + 817400 0.0055436193 0.0021318247 0.0048603249 + 817500 0.0045157298 0.0023013466 0.0045239324 + 817600 0.0048899348 0.0024105862 0.004817351 + 817700 0.0047597253 0.0022672832 0.0046099605 + 817800 0.0042519945 0.0020183078 0.0041110863 + 817900 0.0049386271 0.0023245278 0.0047552583 + 818000 0.0053478265 0.0022932201 0.0049253535 + 818100 0.0058260413 0.0019750755 0.0048425802 + 818200 0.0056738847 0.0018350978 0.0046277129 + 818300 0.0049890329 0.0016483373 0.0041038769 + 818400 0.0053050784 0.0023398563 0.0049509496 + 818500 0.0044153357 0.0025953789 0.0047685519 + 818600 0.0040644025 0.0026176535 0.0046181016 + 818700 0.0037671356 0.0026916745 0.0045458115 + 818800 0.0051673248 0.0023176376 0.0048609303 + 818900 0.0043143121 0.0022128089 0.0043362594 + 819000 0.0048645145 0.0024652201 0.0048594733 + 819100 0.0039076097 0.0026636471 0.0045869238 + 819200 0.0053402698 0.0023723756 0.0050007896 + 819300 0.0054896598 0.0023903158 0.0050922577 + 819400 0.0062950555 0.0025041797 0.0056025273 + 819500 0.0042995286 0.0023192551 0.0044354294 + 819600 0.0050977358 0.0021398276 0.0046488694 + 819700 0.0033851602 0.0020613621 0.0037274956 + 819800 0.0057279711 0.0021562646 0.0049755004 + 819900 0.0055345619 0.0025553706 0.0052794128 + 820000 0.0054932106 0.0029321909 0.0056358805 + 820100 0.0057881279 0.0029813774 0.0058302216 + 820200 0.0049272735 0.0031184211 0.0055435636 + 820300 0.0052148123 0.0029212885 0.0054879539 + 820400 0.0036501024 0.0027993487 0.0045958835 + 820500 0.0054548757 0.0025969142 0.0052817358 + 820600 0.0039310263 0.0026021358 0.0045369378 + 820700 0.0058548012 0.0026423526 0.0055240126 + 820800 0.0050437526 0.0025368918 0.0050193638 + 820900 0.0041487109 0.0025821969 0.0046241405 + 821000 0.0039444755 0.0025633104 0.004504732 + 821100 0.0042631919 0.002858954 0.0049572438 + 821200 0.005324654 0.0032457827 0.0058665108 + 821300 0.0063770026 0.0033584102 0.0064970911 + 821400 0.0047782836 0.0033903159 0.0057421273 + 821500 0.0051002851 0.0029829868 0.0054932833 + 821600 0.0043650859 0.0028791752 0.0050276159 + 821700 0.0039764429 0.002922572 0.0048797274 + 821800 0.0044366813 0.0029655011 0.0051491802 + 821900 0.0040988183 0.0029867356 0.0050041227 + 822000 0.0035100697 0.0030989025 0.004826515 + 822100 0.0045662868 0.0030472147 0.005294684 + 822200 0.0038758233 0.0030606952 0.004968327 + 822300 0.0056096867 0.0030637911 0.0058248088 + 822400 0.004947784 0.0026891223 0.0051243597 + 822500 0.0048144104 0.0025652587 0.0049348513 + 822600 0.0039923199 0.0027059663 0.0046709362 + 822700 0.0049376488 0.0028180233 0.0052482724 + 822800 0.0054299778 0.0025793821 0.0052519493 + 822900 0.0041272905 0.0025425475 0.0045739484 + 823000 0.0055881399 0.0021937761 0.0049441887 + 823100 0.0054151207 0.0020701387 0.0047353934 + 823200 0.0038821076 0.0019102878 0.0038210126 + 823300 0.0056778598 0.0017094149 0.0045039865 + 823400 0.0040836726 0.0019064115 0.0039163441 + 823500 0.0053048696 0.0019444695 0.00455546 + 823600 0.0048216716 0.0022049637 0.0045781302 + 823700 0.0039284639 0.0020996013 0.0040331421 + 823800 0.0042195351 0.0023768979 0.0044537004 + 823900 0.005601324 0.0026252928 0.0053821945 + 824000 0.0050219716 0.0028229175 0.0052946691 + 824100 0.0052959335 0.0022815642 0.0048881564 + 824200 0.0055805462 0.0021881823 0.0049348574 + 824300 0.0047781199 0.0022548008 0.0046065317 + 824400 0.0032454504 0.0029006742 0.0044980443 + 824500 0.0050552362 0.0024921692 0.0049802932 + 824600 0.0052998174 0.0024646544 0.0050731582 + 824700 0.0046838476 0.0027293078 0.005034639 + 824800 0.0049608225 0.0028445248 0.0052861797 + 824900 0.0057234437 0.0028347525 0.00565176 + 825000 0.0039898669 0.0028940124 0.0048577751 + 825100 0.0060108361 0.00246201 0.0054204684 + 825200 0.0048572569 0.0023865772 0.0047772583 + 825300 0.0042387482 0.0027490317 0.0048352906 + 825400 0.0040558687 0.0025411782 0.0045374261 + 825500 0.0073690023 0.0023202327 0.0059471636 + 825600 0.0045074993 0.002842335 0.0050608698 + 825700 0.0059004928 0.0029013025 0.0058054513 + 825800 0.0030570323 0.002513558 0.0040181911 + 825900 0.0068532306 0.0021470654 0.0055201398 + 826000 0.0054651262 0.0023016432 0.00499151 + 826100 0.00600929 0.0025972132 0.0055549106 + 826200 0.005615815 0.0030305354 0.0057945694 + 826300 0.0053858028 0.002954521 0.0056053458 + 826400 0.0043427054 0.0026753748 0.0048128001 + 826500 0.0049137282 0.0024463094 0.004864785 + 826600 0.0056030162 0.0024198797 0.0051776142 + 826700 0.0047923425 0.0027123483 0.0050710793 + 826800 0.004480837 0.0031168027 0.0053222147 + 826900 0.0052948044 0.0022387271 0.0048447637 + 827000 0.0061302789 0.0019062717 0.0049235183 + 827100 0.0052407143 0.0023239037 0.0049033178 + 827200 0.0046216986 0.002913732 0.0051884743 + 827300 0.00528304 0.0029154353 0.0055156815 + 827400 0.0037126406 0.0030299464 0.0048572617 + 827500 0.0050832313 0.0029000665 0.0054019694 + 827600 0.0051182806 0.0023884696 0.0049076234 + 827700 0.0036645257 0.0021600213 0.003963655 + 827800 0.004080861 0.0024773445 0.0044858932 + 827900 0.0049191818 0.0021084062 0.004529566 + 828000 0.00362901 0.0021830474 0.0039692008 + 828100 0.0050172891 0.0023702078 0.0048396548 + 828200 0.0047746271 0.0023254822 0.0046754939 + 828300 0.0044402471 0.0023823007 0.0045677348 + 828400 0.0053961049 0.0021354421 0.0047913375 + 828500 0.0038138387 0.0023981459 0.0042752696 + 828600 0.0059832955 0.001921518 0.0048664213 + 828700 0.0050969047 0.0018561853 0.0043648181 + 828800 0.0050271234 0.0019802599 0.0044545472 + 828900 0.0048085201 0.0022099886 0.0045766821 + 829000 0.0044675786 0.0024593423 0.0046582286 + 829100 0.0047367418 0.0031082657 0.0054396309 + 829200 0.0040472784 0.0028075952 0.0047996151 + 829300 0.0070695819 0.0022950797 0.0057746395 + 829400 0.0053395782 0.0028319101 0.0054599837 + 829500 0.0039429987 0.0024019919 0.0043426866 + 829600 0.0065078515 0.0021143094 0.0053173925 + 829700 0.0050003217 0.0025047706 0.0049658664 + 829800 0.0046791749 0.0022751731 0.0045782045 + 829900 0.0052979047 0.0023433787 0.0049509412 + 830000 0.0048703133 0.0025783734 0.0049754807 + 830100 0.0055378797 0.0024628142 0.0051884894 + 830200 0.0053565765 0.0023746135 0.0050110535 + 830300 0.0043463736 0.0021639139 0.0043031447 + 830400 0.0048430295 0.0021869289 0.0045706075 + 830500 0.0052325384 0.0022040368 0.0047794268 + 830600 0.0043599191 0.0027313738 0.0048772715 + 830700 0.0043692796 0.0030693007 0.0052198055 + 830800 0.0045882154 0.0033811099 0.0056393722 + 830900 0.0065486927 0.0028642139 0.0060873986 + 831000 0.0045815645 0.002936361 0.0051913497 + 831100 0.0042075418 0.0027288216 0.0047997211 + 831200 0.0046459571 0.0022604463 0.0045471283 + 831300 0.005797726 0.002243048 0.0050966162 + 831400 0.0056988836 0.00231096 0.0051158793 + 831500 0.0057072059 0.0023576581 0.0051666735 + 831600 0.0046982061 0.0021843834 0.0044967817 + 831700 0.0053486451 0.0022056794 0.0048382157 + 831800 0.0040010323 0.0024779339 0.0044471919 + 831900 0.006494833 0.0028728765 0.0060695521 + 832000 0.0047117583 0.0034687133 0.0057877818 + 832100 0.0057912782 0.0029683894 0.0058187841 + 832200 0.0060270765 0.002157138 0.0051235897 + 832300 0.007251224 0.0018967637 0.0054657255 + 832400 0.0064009397 0.0021945388 0.0053450013 + 832500 0.0050111675 0.0022410424 0.0047074764 + 832600 0.0048378848 0.0026886963 0.0050698427 + 832700 0.0051787344 0.0027255999 0.0052745083 + 832800 0.004689871 0.0024316257 0.0047399215 + 832900 0.0034277032 0.0023790435 0.0040661161 + 833000 0.0044696008 0.0021099471 0.0043098288 + 833100 0.0061699925 0.0020857204 0.0051225136 + 833200 0.0039125187 0.0025067028 0.0044323955 + 833300 0.0048502082 0.0021609541 0.0045481659 + 833400 0.0059054619 0.0021440786 0.0050506731 + 833500 0.004940462 0.0025142294 0.0049458631 + 833600 0.0041902354 0.0024913621 0.0045537436 + 833700 0.0052703174 0.0022940175 0.0048880018 + 833800 0.004340896 0.0023446826 0.0044812173 + 833900 0.004877385 0.0022282105 0.0046287985 + 834000 0.0053425262 0.002756142 0.0053856666 + 834100 0.0043125357 0.0029359606 0.0050585368 + 834200 0.0046649327 0.002747609 0.0050436306 + 834300 0.0064561711 0.0025779917 0.0057556384 + 834400 0.0048930787 0.0027202162 0.0051285284 + 834500 0.0047205745 0.0022929183 0.0046163261 + 834600 0.0048492618 0.0021825588 0.0045693048 + 834700 0.0049459976 0.0016719606 0.0041063188 + 834800 0.0047953843 0.0016602176 0.0040204459 + 834900 0.0046820874 0.0020502498 0.0043547147 + 835000 0.0065979768 0.0024129932 0.0056604349 + 835100 0.0045576155 0.0022692913 0.0045124927 + 835200 0.0065135153 0.0022846469 0.0054905177 + 835300 0.0030009983 0.0022460122 0.0037230661 + 835400 0.0059658493 0.0020883267 0.0050246431 + 835500 0.0048315203 0.0019948457 0.0043728596 + 835600 0.0031239653 0.0019994841 0.0035370608 + 835700 0.0041565135 0.0019148482 0.0039606322 + 835800 0.003809809 0.0021929065 0.0040680468 + 835900 0.0053705759 0.0023229546 0.004966285 + 836000 0.005077358 0.002500607 0.0049996192 + 836100 0.0053556847 0.0031143364 0.0057503375 + 836200 0.004984942 0.0035721228 0.006025649 + 836300 0.0070822924 0.0032554602 0.006741276 + 836400 0.0054718886 0.0028136939 0.005506889 + 836500 0.0056159526 0.0025325959 0.0052966975 + 836600 0.0060192042 0.0027861157 0.0057486928 + 836700 0.0043592167 0.003107011 0.005252563 + 836800 0.0055948438 0.002760963 0.0055146752 + 836900 0.0049064934 0.0027830004 0.0051979151 + 837000 0.0055784883 0.0023866885 0.0051323507 + 837100 0.0044902457 0.0021617784 0.0043718212 + 837200 0.0052561964 0.002303115 0.0048901492 + 837300 0.0050954864 0.0028496403 0.005357575 + 837400 0.0048755876 0.0030837587 0.005483462 + 837500 0.005742323 0.0026072527 0.0054335524 + 837600 0.0055079335 0.0022230215 0.0049339576 + 837700 0.0061817618 0.0017959298 0.0048385157 + 837800 0.0045943077 0.0018951829 0.0041564437 + 837900 0.0048133439 0.0023006799 0.0046697476 + 838000 0.0050914579 0.0024750258 0.0049809777 + 838100 0.0040188361 0.0028593434 0.0048373643 + 838200 0.0058977205 0.0029581159 0.0058609002 + 838300 0.0061398872 0.0029178629 0.0059398387 + 838400 0.0047173224 0.0034011131 0.0057229203 + 838500 0.0059173999 0.003634333 0.0065468033 + 838600 0.0045664846 0.003552914 0.0058004806 + 838700 0.0031958228 0.0031295864 0.0047025304 + 838800 0.0045723699 0.0026815559 0.0049320192 + 838900 0.0056059034 0.0026598876 0.0054190431 + 839000 0.004779818 0.0025396969 0.0048922635 + 839100 0.0052729036 0.0025454183 0.0051406755 + 839200 0.0039037152 0.0028924148 0.0048137746 + 839300 0.0043905103 0.0025542932 0.0047152475 + 839400 0.0053546337 0.0025942139 0.0052296977 + 839500 0.0059565767 0.0027355327 0.0056672853 + 839600 0.0039087203 0.0031716571 0.0050954803 + 839700 0.0049869404 0.0031173201 0.0055718298 + 839800 0.0060750044 0.0025489499 0.0055389912 + 839900 0.0044465404 0.0030400992 0.0052286308 + 840000 0.0054299585 0.0033522919 0.0060248496 + 840100 0.0056288379 0.0026073121 0.0053777557 + 840200 0.0052150847 0.0025111071 0.0050779066 + 840300 0.0043187097 0.0025895315 0.0047151464 + 840400 0.0046921722 0.0024899817 0.0047994102 + 840500 0.0054253911 0.0021632061 0.0048335158 + 840600 0.0050713173 0.0023490407 0.0048450797 + 840700 0.0048181018 0.0031911941 0.0055626036 + 840800 0.0054794177 0.0037547057 0.0064516066 + 840900 0.0050973124 0.0035508984 0.0060597318 + 841000 0.0046546587 0.0031148726 0.0054058374 + 841100 0.0055435348 0.0025287132 0.0052571718 + 841200 0.0053457034 0.0024573792 0.0050884676 + 841300 0.0077636694 0.0023208367 0.0061420177 + 841400 0.0065009065 0.002283152 0.0054828169 + 841500 0.0071009391 0.0024377083 0.0059327018 + 841600 0.005411894 0.0031726215 0.0058362881 + 841700 0.0053544432 0.0030108837 0.0056462736 + 841800 0.0045817388 0.0028917445 0.005146819 + 841900 0.0040236834 0.0030585056 0.0050389123 + 842000 0.0054125498 0.0028390331 0.0055030225 + 842100 0.004217771 0.0030911423 0.0051670765 + 842200 0.0050450088 0.0027716445 0.0052547348 + 842300 0.0054880727 0.0023543394 0.0050555002 + 842400 0.0044084595 0.0023339506 0.0045037392 + 842500 0.0042131717 0.0023259479 0.0043996183 + 842600 0.0047286046 0.0027934971 0.0051208572 + 842700 0.0038817184 0.0033092298 0.0052197631 + 842800 0.0055294802 0.0027377888 0.0054593298 + 842900 0.0068443704 0.002315121 0.0056838345 + 843000 0.0061434578 0.0024437274 0.0054674605 + 843100 0.0054599568 0.0023488016 0.0050361241 + 843200 0.0032087412 0.0024780623 0.0040573646 + 843300 0.0045024692 0.0026513626 0.0048674217 + 843400 0.0066423531 0.003003852 0.0062731351 + 843500 0.0051296741 0.0034133493 0.0059381107 + 843600 0.0041860763 0.0029404614 0.0050007958 + 843700 0.007019709 0.0023880577 0.0058430707 + 843800 0.0051683152 0.00223293 0.0047767102 + 843900 0.0058690921 0.0022658004 0.0051544941 + 844000 0.0043587705 0.0025141786 0.0046595109 + 844100 0.005153663 0.0029748237 0.0055113922 + 844200 0.0044371928 0.0025179889 0.0047019197 + 844300 0.0056225988 0.0026683005 0.0054356733 + 844400 0.0050551583 0.0029424128 0.0054304985 + 844500 0.0053918434 0.0030217492 0.0056755471 + 844600 0.0046854649 0.0031671229 0.0054732502 + 844700 0.0049030199 0.0032470253 0.0056602304 + 844800 0.0069112327 0.0032788667 0.006680489 + 844900 0.0051291929 0.0038400186 0.0063645433 + 845000 0.0047786344 0.0033021459 0.0056541301 + 845100 0.0039412797 0.002778399 0.0047182476 + 845200 0.0038569212 0.0025232811 0.0044216095 + 845300 0.0051891665 0.0023906364 0.0049446793 + 845400 0.0046390859 0.0022719516 0.0045552516 + 845500 0.0040747373 0.0021928635 0.0041983983 + 845600 0.004439015 0.0024843315 0.0046691591 + 845700 0.0037536404 0.0025601048 0.0044075997 + 845800 0.004936483 0.0025444605 0.0049741357 + 845900 0.0068460187 0.0026147899 0.0059843147 + 846000 0.0065297456 0.002630307 0.0058441662 + 846100 0.0062047508 0.0026208418 0.0056747426 + 846200 0.0054360299 0.002198023 0.004873569 + 846300 0.0052640758 0.0017395057 0.004330418 + 846400 0.0043880683 0.0017628444 0.0039225968 + 846500 0.0049087537 0.0024932444 0.0049092717 + 846600 0.004847951 0.0025475294 0.0049336303 + 846700 0.0065963223 0.0020577711 0.0053043985 + 846800 0.0053818794 0.002395288 0.0050441818 + 846900 0.0050628592 0.0025462946 0.0050381706 + 847000 0.0030152207 0.0026005513 0.0040846052 + 847100 0.0048974099 0.0022957326 0.0047061765 + 847200 0.0074260501 0.0024629201 0.0061179291 + 847300 0.0063674402 0.0025647345 0.005698709 + 847400 0.0059714852 0.0027637178 0.0057028082 + 847500 0.0044461781 0.0029573809 0.0051457342 + 847600 0.0039300116 0.0027828305 0.0047171331 + 847700 0.0056456528 0.0030841981 0.0058629179 + 847800 0.0035710533 0.0029204866 0.0046781144 + 847900 0.0060548804 0.0025563895 0.005536526 + 848000 0.0044579307 0.0024987105 0.0046928483 + 848100 0.0049145358 0.0022204382 0.0046393113 + 848200 0.0049688023 0.0018621017 0.0043076841 + 848300 0.0058046021 0.0018948349 0.0047517875 + 848400 0.0045410421 0.0021858663 0.0044209104 + 848500 0.0042418565 0.0020027414 0.0040905302 + 848600 0.0038243924 0.0021694921 0.0040518103 + 848700 0.0036310145 0.0021458241 0.0039329641 + 848800 0.0038689581 0.002344805 0.0042490578 + 848900 0.0062173243 0.0022170695 0.0052771588 + 849000 0.0051361401 0.0024436387 0.0049715826 + 849100 0.0054569233 0.0021134058 0.0047992352 + 849200 0.0044187938 0.0022433272 0.0044182022 + 849300 0.0037376707 0.0023789326 0.0042185674 + 849400 0.0061614861 0.0020562427 0.0050888491 + 849500 0.0053275016 0.0021568831 0.0047790128 + 849600 0.0044802347 0.0021865194 0.004391635 + 849700 0.0049496131 0.0020513572 0.0044874949 + 849800 0.0045186258 0.0022854632 0.0045094743 + 849900 0.0052761374 0.0023739826 0.0049708315 + 850000 0.0031951692 0.0023910345 0.0039636568 + 850100 0.0054835915 0.002238687 0.0049376422 + 850200 0.004938231 0.0021920139 0.0046225494 + 850300 0.0058156764 0.002612582 0.0054749852 + 850400 0.0043563993 0.0028685719 0.0050127371 + 850500 0.0054055009 0.0024091998 0.0050697198 + 850600 0.0061932353 0.002280135 0.005328368 + 850700 0.0041984771 0.00314148 0.0052079179 + 850800 0.0047025906 0.0035446434 0.0058591998 + 850900 0.0063035928 0.0025097659 0.0056123155 + 851000 0.0068277239 0.0022311821 0.0055917025 + 851100 0.0044138337 0.0022501442 0.004422578 + 851200 0.0061451331 0.002742787 0.0057673447 + 851300 0.0046803139 0.0030287901 0.0053323821 + 851400 0.0045533093 0.0030086242 0.0052497062 + 851500 0.0044985227 0.0028307677 0.0050448843 + 851600 0.0056300243 0.0023372586 0.0051082862 + 851700 0.0061220994 0.0020470821 0.0050603029 + 851800 0.0047962774 0.002609977 0.0049706448 + 851900 0.003749986 0.0028374135 0.0046831098 + 852000 0.0049728472 0.0028294276 0.0052770009 + 852100 0.0048955801 0.0028485923 0.0052581356 + 852200 0.004968306 0.0032638565 0.0057091946 + 852300 0.0063265199 0.0030749267 0.0061887607 + 852400 0.0054089856 0.0025708859 0.005233121 + 852500 0.0053983314 0.0028026127 0.0054596039 + 852600 0.0054176427 0.0032084888 0.0058749848 + 852700 0.004396246 0.0029406828 0.0051044602 + 852800 0.0050987555 0.0027320307 0.0052415744 + 852900 0.0050349584 0.0026316085 0.005109752 + 853000 0.0033336831 0.0026232081 0.0042640053 + 853100 0.0039614122 0.0024374997 0.0043872572 + 853200 0.0042126843 0.002265329 0.0043387595 + 853300 0.0043689158 0.0022569557 0.0044072814 + 853400 0.0053997596 0.0018455159 0.0045032101 + 853500 0.0043725553 0.0020590971 0.0042112142 + 853600 0.0066079854 0.0023185132 0.0055708811 + 853700 0.0044475381 0.0026119592 0.0048009819 + 853800 0.005120285 0.0028352514 0.0053553917 + 853900 0.0048482072 0.0024305649 0.0048167919 + 854000 0.0051312592 0.0022356521 0.0047611938 + 854100 0.004877251 0.0020973453 0.0044978672 + 854200 0.004725607 0.0018644349 0.0041903196 + 854300 0.005317072 0.0018847972 0.0045017936 + 854400 0.0041692348 0.0018684678 0.003920513 + 854500 0.0051985727 0.0020537527 0.0046124251 + 854600 0.0047524657 0.0023958702 0.0047349744 + 854700 0.0043306889 0.0024600159 0.0045915268 + 854800 0.0048310429 0.0023657731 0.0047435521 + 854900 0.0044791801 0.0027094822 0.0049140787 + 855000 0.0033942401 0.0025814724 0.004252075 + 855100 0.0038074896 0.0024091642 0.004283163 + 855200 0.0050636891 0.0022372461 0.0047295306 + 855300 0.0034044483 0.0022587457 0.0039343726 + 855400 0.0039835644 0.0018077957 0.0037684564 + 855500 0.002777819 0.0019279028 0.0032951106 + 855600 0.0038774754 0.002150586 0.0040590309 + 855700 0.0049144272 0.0023586484 0.004777468 + 855800 0.0049106582 0.0025654576 0.0049824222 + 855900 0.0069343928 0.0024336718 0.0058466932 + 856000 0.0036455591 0.0022646433 0.0040589419 + 856100 0.003605119 0.0022924618 0.0040668564 + 856200 0.0035791984 0.0026400735 0.0044017102 + 856300 0.0048799897 0.0027372824 0.0051391524 + 856400 0.002746728 0.0026192462 0.0039711514 + 856500 0.0054380667 0.0022567382 0.0049332866 + 856600 0.0061749226 0.0020849511 0.0051241708 + 856700 0.0040058165 0.0026154647 0.0045870775 + 856800 0.0059931241 0.0025562353 0.0055059761 + 856900 0.0048963625 0.0024004269 0.0048103553 + 857000 0.0055969158 0.0026876335 0.0054423654 + 857100 0.0051739402 0.002743231 0.0052897797 + 857200 0.0053840182 0.0026751473 0.0053250938 + 857300 0.0041924419 0.0027998611 0.0048633286 + 857400 0.0053299334 0.0028202003 0.0054435269 + 857500 0.0061154301 0.0028077169 0.0058176551 + 857600 0.0072261092 0.0024978662 0.0060544668 + 857700 0.0058980682 0.0023804081 0.0052833635 + 857800 0.0055182489 0.0025612469 0.00527726 + 857900 0.0063052204 0.002538328 0.0056416787 + 858000 0.0040196686 0.0023013359 0.0042797666 + 858100 0.0050606719 0.0018555096 0.004346309 + 858200 0.0037567222 0.0019220316 0.0037710433 + 858300 0.0056589692 0.0018470131 0.004632287 + 858400 0.0055303252 0.0021392818 0.0048612387 + 858500 0.0055460937 0.0021100707 0.0048397887 + 858600 0.0050637443 0.0017672698 0.0042595814 + 858700 0.004568835 0.0021402251 0.0043889486 + 858800 0.0045902894 0.0019767149 0.0042359979 + 858900 0.0045756598 0.0021266806 0.0043787632 + 859000 0.0042768864 0.0020382898 0.0041433198 + 859100 0.0063249855 0.0015563279 0.0046694067 + 859200 0.0047500419 0.0017342378 0.004072149 + 859300 0.0041323893 0.0014718818 0.0035057922 + 859400 0.0053391123 0.0015656832 0.0041935275 + 859500 0.0036048887 0.0020851876 0.0038594688 + 859600 0.0048495304 0.0019913219 0.0043782002 + 859700 0.0041414289 0.0021313542 0.0041697137 + 859800 0.0073432898 0.0023626989 0.0059769743 + 859900 0.0039892847 0.00293476 0.0048982361 + 860000 0.0062440094 0.0023615056 0.005434729 + 860100 0.004860226 0.0020959942 0.0044881367 + 860200 0.0049370042 0.0020951569 0.0045250886 + 860300 0.0059990317 0.0021673993 0.0051200477 + 860400 0.0040931682 0.0023978527 0.0044124589 + 860500 0.0044690059 0.0023391057 0.0045386946 + 860600 0.0038942531 0.0018940647 0.0038107674 + 860700 0.0048111881 0.0016635408 0.0040315474 + 860800 0.0044683155 0.00208925 0.004288499 + 860900 0.0044256109 0.0021941586 0.004372389 + 861000 0.0046894162 0.0019986658 0.0043067378 + 861100 0.0065398693 0.0017114946 0.0049303365 + 861200 0.0061990516 0.0019206304 0.0049717261 + 861300 0.0048464537 0.0024697348 0.0048550987 + 861400 0.005717148 0.0023265078 0.0051404166 + 861500 0.0043728718 0.0024148899 0.0045671627 + 861600 0.004735949 0.0024070653 0.0047380402 + 861700 0.0055232233 0.002578912 0.0052973735 + 861800 0.0049098209 0.0023724617 0.0047890142 + 861900 0.0038719959 0.0024398792 0.0043456272 + 862000 0.0035976822 0.0021922779 0.0039630121 + 862100 0.0047977125 0.0022317417 0.0045931158 + 862200 0.0042093705 0.0020941211 0.0041659206 + 862300 0.004098719 0.0023950239 0.0044123622 + 862400 0.0067901916 0.0017165889 0.0050586363 + 862500 0.0060635942 0.001788462 0.0047728873 + 862600 0.0056808841 0.0031429867 0.0059390468 + 862700 0.0052697406 0.0032587958 0.0058524963 + 862800 0.0065579644 0.0023749745 0.0056027226 + 862900 0.0043646147 0.0024241015 0.0045723103 + 863000 0.0050196426 0.0027259426 0.0051965479 + 863100 0.0047535419 0.0025022154 0.0048418494 + 863200 0.0045128092 0.0024136688 0.0046348171 + 863300 0.0064311044 0.0020482532 0.0052135624 + 863400 0.0059720491 0.0019479799 0.0048873478 + 863500 0.0037512207 0.0022301873 0.0040764913 + 863600 0.0046887442 0.0025060694 0.0048138107 + 863700 0.0036761278 0.0027176719 0.004527016 + 863800 0.004801365 0.0029085195 0.0052716914 + 863900 0.003726435 0.0029671611 0.0048012658 + 864000 0.004563945 0.0027771311 0.0050234478 + 864100 0.0042075493 0.0026485287 0.0047194318 + 864200 0.0053500739 0.0023761281 0.0050093676 + 864300 0.0058965633 0.0021942201 0.0050964349 + 864400 0.0044294321 0.0025881461 0.0047682573 + 864500 0.0055091965 0.0028472954 0.005558853 + 864600 0.0053872189 0.002728326 0.0053798478 + 864700 0.0060962017 0.0029691766 0.0059696509 + 864800 0.0061778466 0.0030355507 0.0060762095 + 864900 0.0051570779 0.0031916041 0.0057298534 + 865000 0.0076162223 0.0026611587 0.0064097681 + 865100 0.005605806 0.0026873748 0.0054464825 + 865200 0.0044798342 0.003021487 0.0052264054 + 865300 0.003816902 0.0033328768 0.0052115082 + 865400 0.0048835204 0.003611202 0.0060148097 + 865500 0.0041657438 0.0031582993 0.0052086264 + 865600 0.0062170297 0.0028311768 0.0058911211 + 865700 0.0058919921 0.0027710742 0.0056710391 + 865800 0.0050460616 0.0028093818 0.0052929902 + 865900 0.0056643922 0.0027508349 0.0055387779 + 866000 0.0064485225 0.0034281957 0.0066020778 + 866100 0.0052162797 0.0041055345 0.0066729221 + 866200 0.0044365377 0.0037313985 0.0059150069 + 866300 0.0054305542 0.00302673 0.0056995809 + 866400 0.0045273144 0.0028125537 0.0050408413 + 866500 0.0043386962 0.0024119597 0.0045474117 + 866600 0.0026668785 0.0024523789 0.0037649832 + 866700 0.0043138994 0.002673674 0.0047969213 + 866800 0.0044669174 0.0027166851 0.0049152461 + 866900 0.0066887152 0.0027194908 0.0060115928 + 867000 0.0042560968 0.0030809594 0.0051757571 + 867100 0.0046671202 0.0032843436 0.0055814419 + 867200 0.0044372122 0.0030699941 0.0052539345 + 867300 0.0050802141 0.0033639198 0.0058643376 + 867400 0.0057253046 0.0036424245 0.0064603479 + 867500 0.00538732 0.003499042 0.0061506135 + 867600 0.0045810379 0.0030143233 0.0052690529 + 867700 0.0035375601 0.0027386694 0.0044798123 + 867800 0.0045027028 0.0024866845 0.0047028585 + 867900 0.0058403886 0.0027708111 0.0056453774 + 868000 0.0052393628 0.0027198422 0.0052985911 + 868100 0.0048576061 0.0025891137 0.0049799667 + 868200 0.0055655333 0.0023044659 0.0050437519 + 868300 0.0073108728 0.0020413027 0.0056396229 + 868400 0.0045469132 0.002444579 0.0046825129 + 868500 0.0042068955 0.0027359177 0.0048064991 + 868600 0.0056316646 0.0025111397 0.0052829746 + 868700 0.0057845446 0.0023856671 0.0052327476 + 868800 0.0054262611 0.0025627625 0.0052335004 + 868900 0.0050228084 0.0023199342 0.0047920977 + 869000 0.0050111096 0.0020432288 0.0045096343 + 869100 0.0057876833 0.0021763286 0.005024954 + 869200 0.0049956749 0.0027460896 0.0052048984 + 869300 0.0051612695 0.0025240398 0.0050643521 + 869400 0.006180273 0.0031015584 0.0061434115 + 869500 0.0042293455 0.0030540464 0.0051356774 + 869600 0.0049385343 0.002738009 0.0051686938 + 869700 0.0052798852 0.0025776016 0.0051762951 + 869800 0.0058137121 0.0023094281 0.0051708645 + 869900 0.0050872991 0.0025746108 0.0050785159 + 870000 0.004436364 0.0025758295 0.0047593524 + 870100 0.0058172526 0.0022240053 0.0050871843 + 870200 0.0043002265 0.0026084377 0.0047249554 + 870300 0.0068404555 0.0030605106 0.0064272973 + 870400 0.0049248825 0.0032091221 0.0056330877 + 870500 0.0063886929 0.0028342472 0.005978682 + 870600 0.0047967993 0.0027241096 0.0050850342 + 870700 0.0058920983 0.0026130555 0.0055130726 + 870800 0.0055714851 0.0028513391 0.0055935544 + 870900 0.005075158 0.0027694497 0.0052673791 + 871000 0.0050083249 0.0030357328 0.0055007677 + 871100 0.0051257829 0.0035278133 0.0060506596 + 871200 0.0056707628 0.0036260715 0.0064171501 + 871300 0.006641047 0.0032972225 0.0065658628 + 871400 0.0041912828 0.0029429554 0.0050058525 + 871500 0.0046522246 0.0029040134 0.0051937802 + 871600 0.0044957678 0.0029768658 0.0051896265 + 871700 0.0043461442 0.0029419727 0.0050810905 + 871800 0.006611967 0.0027163394 0.0059706669 + 871900 0.0057757588 0.0025923131 0.0054350694 + 872000 0.0055330044 0.0023399861 0.0050632618 + 872100 0.0048293014 0.0021329394 0.0045098611 + 872200 0.0063156247 0.0022077412 0.0053162127 + 872300 0.0057142658 0.0025045721 0.0053170623 + 872400 0.0037642739 0.0024837807 0.0043365092 + 872500 0.0047268162 0.0022720222 0.004598502 + 872600 0.0055781157 0.0019483221 0.004693801 + 872700 0.0040060737 0.0016381042 0.0036098436 + 872800 0.0045142624 0.0017598408 0.0039817043 + 872900 0.0032839412 0.0017495705 0.0033658853 + 873000 0.0040106283 0.0018620763 0.0038360574 + 873100 0.0035795915 0.001895944 0.0036577741 + 873200 0.0048052089 0.0021190547 0.0044841185 + 873300 0.003960684 0.0021806234 0.0041300226 + 873400 0.0037994705 0.0020216668 0.0038917187 + 873500 0.0046901124 0.0019348788 0.0042432935 + 873600 0.0061179499 0.0019589955 0.004970174 + 873700 0.0048190738 0.0018480141 0.004219902 + 873800 0.0059665981 0.002232979 0.005169664 + 873900 0.0047685943 0.002407071 0.0047541135 + 874000 0.0057719709 0.002088015 0.0049289069 + 874100 0.0041464616 0.0025388006 0.0045796372 + 874200 0.0045916669 0.0021885724 0.0044485335 + 874300 0.0048332391 0.0021505507 0.0045294106 + 874400 0.006486308 0.002256696 0.0054491757 + 874500 0.0053741781 0.002334104 0.0049792073 + 874600 0.0047163007 0.0021698643 0.0044911686 + 874700 0.0054901067 0.0023056173 0.0050077792 + 874800 0.0040647614 0.0023218565 0.0043224812 + 874900 0.0062427249 0.002194796 0.0052673872 + 875000 0.0045240017 0.0026142598 0.0048409168 + 875100 0.0067621737 0.0029344402 0.0062626975 + 875200 0.0054000376 0.0031982849 0.0058561159 + 875300 0.0058077998 0.0026048379 0.0054633644 + 875400 0.0045109922 0.0022342593 0.0044545133 + 875500 0.0045533051 0.0019957561 0.004236836 + 875600 0.0048779342 0.0021514217 0.00455228 + 875700 0.0052436207 0.0023813744 0.004962219 + 875800 0.0069509741 0.0025043261 0.0059255086 + 875900 0.0041365959 0.0027307059 0.0047666867 + 876000 0.0041683689 0.0023980233 0.0044496424 + 876100 0.0044818974 0.0023080499 0.0045139838 + 876200 0.0055356339 0.0023281093 0.0050526791 + 876300 0.00513072 0.0028247312 0.0053500074 + 876400 0.0036105803 0.002752252 0.0045293345 + 876500 0.0053410201 0.0027367805 0.0053655639 + 876600 0.0067312377 0.0023960519 0.005709083 + 876700 0.0048540433 0.0021947179 0.0045838173 + 876800 0.00880151 0.0024503637 0.0067823569 + 876900 0.0046331472 0.0026565607 0.0049369378 + 877000 0.004905985 0.0023807329 0.0047953973 + 877100 0.004617521 0.0020409056 0.0043135917 + 877200 0.0058643511 0.0020728182 0.0049591785 + 877300 0.0038735243 0.0027327707 0.0046392709 + 877400 0.0050967443 0.0027072748 0.0052158286 + 877500 0.0063793264 0.0027483633 0.005888188 + 877600 0.00403064 0.0028343681 0.0048181988 + 877700 0.0051088484 0.0023991886 0.0049136999 + 877800 0.0057543479 0.0023554394 0.0051876575 + 877900 0.0039270919 0.0022284197 0.0041612853 + 878000 0.0053222998 0.0020218725 0.0046414419 + 878100 0.0047902295 0.0020631431 0.0044208342 + 878200 0.0043340027 0.00231719 0.0044503319 + 878300 0.0054717621 0.0024053434 0.0050984763 + 878400 0.0031097682 0.0027653396 0.0042959286 + 878500 0.004790605 0.0023610385 0.0047189144 + 878600 0.0031274303 0.002191831 0.0037311131 + 878700 0.0036689744 0.0022415149 0.0040473383 + 878800 0.0038995636 0.0020067935 0.0039261099 + 878900 0.0062542244 0.0017543833 0.0048326344 + 879000 0.00474175 0.0019873939 0.004321224 + 879100 0.0052369868 0.0022792552 0.0048568346 + 879200 0.0064249611 0.0023138618 0.0054761474 + 879300 0.0056699912 0.0024631786 0.0052538773 + 879400 0.0048663356 0.0022185995 0.0046137491 + 879500 0.0058871335 0.0015116222 0.0044091957 + 879600 0.0061483032 0.0017329028 0.0047590208 + 879700 0.0055595524 0.0022580625 0.0049944047 + 879800 0.0056313023 0.0020773869 0.0048490435 + 879900 0.0048404677 0.0025494979 0.0049319155 + 880000 0.0040448833 0.0026216084 0.0046124494 + 880100 0.0045252148 0.0023408464 0.0045681006 + 880200 0.005936884 0.0019798395 0.0049018996 + 880300 0.0050693011 0.0020955269 0.0045905736 + 880400 0.0060913318 0.0022565687 0.005254646 + 880500 0.0060456891 0.001835741 0.0048113537 + 880600 0.0040864686 0.0019716202 0.003982929 + 880700 0.004756474 0.0023789686 0.0047200456 + 880800 0.0051401003 0.0031718114 0.0057017045 + 880900 0.0041480808 0.003085802 0.0051274355 + 881000 0.0048996801 0.0026138552 0.0050254165 + 881100 0.0048452029 0.0021694403 0.0045541886 + 881200 0.0066722963 0.0020492008 0.0053332216 + 881300 0.0058587938 0.0023327799 0.0052164049 + 881400 0.0043007331 0.0024314499 0.0045482169 + 881500 0.004468019 0.0024242582 0.0046233613 + 881600 0.005868686 0.0018921017 0.0047805956 + 881700 0.0043253173 0.0019337986 0.0040626657 + 881800 0.0063366724 0.0026035135 0.0057223444 + 881900 0.0039472875 0.002625037 0.0045678426 + 882000 0.0053638009 0.0027222261 0.0053622219 + 882100 0.0056831005 0.0025810808 0.0053782319 + 882200 0.0040140185 0.0025357768 0.0045114265 + 882300 0.0041209138 0.0023556268 0.0043838891 + 882400 0.0034619986 0.002513694 0.0042176465 + 882500 0.0043527108 0.0025881754 0.0047305252 + 882600 0.0049268614 0.0029792959 0.0054042355 + 882700 0.0046309437 0.0027390805 0.0050183731 + 882800 0.0052378206 0.0023544931 0.0049324829 + 882900 0.0062184447 0.0027192116 0.0057798524 + 883000 0.0043203617 0.0032189361 0.0053453641 + 883100 0.0063489264 0.0027537505 0.0058786127 + 883200 0.0048147937 0.002134571 0.0045043523 + 883300 0.004277267 0.0019209472 0.0040261646 + 883400 0.0038598613 0.0019715336 0.003871309 + 883500 0.0040542753 0.0022615955 0.0042570591 + 883600 0.004916653 0.0022659212 0.0046858364 + 883700 0.0056886929 0.0023650792 0.0051649827 + 883800 0.0057146391 0.0027283382 0.0055410122 + 883900 0.0049039897 0.0033535674 0.0057672498 + 884000 0.0036804375 0.002989282 0.0048007473 + 884100 0.0080928572 0.0026990704 0.0066822736 + 884200 0.0044607618 0.0026092282 0.0048047594 + 884300 0.0039954684 0.0022201633 0.0041866829 + 884400 0.0042467578 0.0019744931 0.0040646942 + 884500 0.0051340083 0.0019964091 0.0045233038 + 884600 0.003100419 0.0023613492 0.0038873366 + 884700 0.0041449656 0.0022216534 0.0042617536 + 884800 0.0033603474 0.0022331405 0.0038870616 + 884900 0.0048812673 0.0024164915 0.0048189902 + 885000 0.0042665966 0.0025352993 0.0046352648 + 885100 0.0054631535 0.0022137156 0.0049026115 + 885200 0.0069571409 0.001915605 0.0053398227 + 885300 0.0049421166 0.0023023362 0.0047347841 + 885400 0.0055708664 0.0023132033 0.0050551141 + 885500 0.0055058378 0.002477637 0.0051875416 + 885600 0.0037021519 0.0027240328 0.0045461856 + 885700 0.0056733761 0.0028714199 0.0056637847 + 885800 0.0054825803 0.0023433392 0.0050417967 + 885900 0.0040208964 0.001898886 0.003877921 + 886000 0.0058827386 0.0021022735 0.0049976839 + 886100 0.0051112767 0.0026441841 0.0051598906 + 886200 0.0059883547 0.002345352 0.0052927453 + 886300 0.0056269975 0.0021332867 0.0049028245 + 886400 0.0049726928 0.0021445223 0.0045920195 + 886500 0.0041298088 0.0022254303 0.0042580706 + 886600 0.0050615884 0.0021906527 0.0046819033 + 886700 0.0037399563 0.0026923643 0.0045331241 + 886800 0.0039432036 0.002596804 0.0045375995 + 886900 0.0043618806 0.0025544807 0.0047013438 + 887000 0.0037841737 0.0028361698 0.0046986928 + 887100 0.0056115396 0.0023784116 0.0051403413 + 887200 0.0053603542 0.0021550098 0.0047933092 + 887300 0.0051647738 0.0024022075 0.0049442446 + 887400 0.0029236063 0.0022744631 0.0037134256 + 887500 0.0050034686 0.0022457197 0.0047083644 + 887600 0.004708532 0.0023879169 0.0047053975 + 887700 0.0050590601 0.0021671028 0.0046571089 + 887800 0.0077791709 0.0020773967 0.0059062074 + 887900 0.0056139027 0.0023325158 0.0050956086 + 888000 0.0045523085 0.0026130965 0.0048536858 + 888100 0.0039871808 0.0030177469 0.0049801874 + 888200 0.0057709602 0.0023512353 0.0051916298 + 888300 0.0051665456 0.0020936322 0.0046365413 + 888400 0.0077188166 0.0020481416 0.0058472467 + 888500 0.0039039817 0.0029153255 0.0048368165 + 888600 0.0041614589 0.0029893635 0.0050375815 + 888700 0.0045992298 0.0029448165 0.0052085 + 888800 0.0058725833 0.0024482657 0.0053386778 + 888900 0.0035874335 0.0019298779 0.0036955678 + 889000 0.0059200477 0.0020298543 0.0049436278 + 889100 0.0042555304 0.0028009792 0.0048954981 + 889200 0.0046057575 0.0025407934 0.0048076897 + 889300 0.0057758907 0.0023389256 0.0051817468 + 889400 0.0053544819 0.0023413119 0.0049767209 + 889500 0.0049923356 0.0024262825 0.0048834477 + 889600 0.0063049296 0.0026107213 0.0057139289 + 889700 0.0049646716 0.0027958326 0.005239382 + 889800 0.0039571107 0.0022758524 0.0042234929 + 889900 0.0047717947 0.0020637322 0.0044123498 + 890000 0.0069206807 0.0019908668 0.0053971393 + 890100 0.0059347109 0.0025491412 0.0054701317 + 890200 0.0052049866 0.003007148 0.0055689774 + 890300 0.0053196822 0.0031648453 0.0057831264 + 890400 0.0048521128 0.0030192572 0.0054074064 + 890500 0.0048677904 0.0026446925 0.0050405581 + 890600 0.0067814112 0.0029473075 0.0062850334 + 890700 0.0046930538 0.0030981052 0.0054079676 + 890800 0.0039973048 0.0028045827 0.0047720061 + 890900 0.00626743 0.0024104092 0.0054951599 + 891000 0.0049200327 0.0024471786 0.0048687572 + 891100 0.0062977728 0.0023927152 0.0054924002 + 891200 0.0035214956 0.0029145079 0.004647744 + 891300 0.0047377268 0.0029986041 0.005330454 + 891400 0.0050334107 0.002647294 0.0051246758 + 891500 0.0055015247 0.0019884857 0.0046962674 + 891600 0.0041820649 0.0015573603 0.0036157204 + 891700 0.0048282537 0.0018235864 0.0041999925 + 891800 0.0047139661 0.002625204 0.0049453592 + 891900 0.0048805778 0.0025626557 0.0049648151 + 892000 0.0051501763 0.0018350364 0.0043698888 + 892100 0.0033330381 0.0022052422 0.0038457219 + 892200 0.0036016393 0.0020583874 0.0038310693 + 892300 0.0047351724 0.002025046 0.0043556387 + 892400 0.005399144 0.0021626363 0.0048200275 + 892500 0.0056372482 0.002503977 0.0052785601 + 892600 0.0048218047 0.0024895486 0.0048627806 + 892700 0.0067038324 0.0025951106 0.0058946531 + 892800 0.004451721 0.0028017194 0.0049928009 + 892900 0.0047129257 0.0025067759 0.004826419 + 893000 0.0049398088 0.0025082581 0.0049395703 + 893100 0.0035313693 0.0024098384 0.0041479342 + 893200 0.0051151295 0.0023215639 0.0048391667 + 893300 0.0047619871 0.0018017262 0.0041455167 + 893400 0.0049459564 0.0016298623 0.0040642002 + 893500 0.0043644189 0.0018853857 0.0040334981 + 893600 0.0050062027 0.0023044961 0.0047684865 + 893700 0.0052140925 0.0021896748 0.004755986 + 893800 0.0064170406 0.0021065672 0.0052649544 + 893900 0.004747034 0.0024907052 0.004827136 + 894000 0.0041950389 0.0023292477 0.0043939935 + 894100 0.0046881287 0.00241676 0.0047241983 + 894200 0.0058082824 0.0024070911 0.0052658551 + 894300 0.0053581062 0.0021717635 0.0048089564 + 894400 0.0050816598 0.0022045332 0.0047056627 + 894500 0.0047434229 0.0022897741 0.0046244276 + 894600 0.0049731068 0.0022710964 0.0047187974 + 894700 0.0046697396 0.0022836032 0.0045819906 + 894800 0.0051144298 0.0019455928 0.0044628513 + 894900 0.0049148252 0.002232214 0.0046512295 + 895000 0.0058526189 0.0026614775 0.0055420633 + 895100 0.0042649513 0.0021418529 0.0042410086 + 895200 0.0045468513 0.0017405662 0.0039784696 + 895300 0.0050808261 0.0018094842 0.0043102033 + 895400 0.0058382994 0.0021427028 0.0050162408 + 895500 0.004106316 0.0021081735 0.0041292509 + 895600 0.0067530066 0.0023948249 0.0057185703 + 895700 0.0044877522 0.0028302256 0.0050390411 + 895800 0.0044197682 0.002863379 0.0050387336 + 895900 0.0058222767 0.0026615852 0.0055272371 + 896000 0.0063856689 0.0031503295 0.0062932759 + 896100 0.0046409102 0.0028214295 0.0051056274 + 896200 0.0049070431 0.0025574599 0.0049726452 + 896300 0.0053852951 0.0024679903 0.0051185652 + 896400 0.0044671985 0.0027184706 0.0049171699 + 896500 0.0058328064 0.002745444 0.0056162784 + 896600 0.0065478399 0.0021114362 0.0053342011 + 896700 0.0061439048 0.0021665239 0.0051904771 + 896800 0.0036829305 0.0027589793 0.0045716717 + 896900 0.0044508603 0.0030245961 0.0052152538 + 897000 0.0050272643 0.0025669108 0.0050412675 + 897100 0.0050802269 0.0021774833 0.0046779075 + 897200 0.0042164763 0.0019903137 0.0040656106 + 897300 0.0041734314 0.0023467402 0.004400851 + 897400 0.0043216406 0.0026199988 0.0047470562 + 897500 0.0036269146 0.002690346 0.004475468 + 897600 0.0046437661 0.0026545276 0.0049401312 + 897700 0.0054832617 0.0027667434 0.0054655363 + 897800 0.0041538692 0.0028489247 0.0048934072 + 897900 0.0065105841 0.0029924388 0.0061968669 + 898000 0.004299604 0.0031579409 0.0052741523 + 898100 0.0052186398 0.0029154994 0.0054840487 + 898200 0.0035310151 0.0026704237 0.0044083452 + 898300 0.0051850188 0.0028335734 0.0053855748 + 898400 0.0054968972 0.0028471248 0.0055526289 + 898500 0.0051974416 0.0030740068 0.0056321225 + 898600 0.0051864874 0.003142801 0.0056955253 + 898700 0.0055671615 0.0030370295 0.0057771167 + 898800 0.0038765726 0.0026755214 0.004583522 + 898900 0.0048034816 0.0021779084 0.0045421219 + 899000 0.0046593988 0.0023266387 0.0046199365 + 899100 0.0041435908 0.0024061951 0.0044456187 + 899200 0.0056456566 0.0021338593 0.0049125809 + 899300 0.0061629923 0.0019429937 0.0049763414 + 899400 0.0055107345 0.0019098829 0.0046221976 + 899500 0.0066799499 0.0023135203 0.0056013081 + 899600 0.005545488 0.0025098915 0.0052393114 + 899700 0.0056387523 0.0024068424 0.0051821658 + 899800 0.0052677192 0.0025708827 0.0051635882 + 899900 0.0064063305 0.0026330632 0.005786179 + 900000 0.0051896554 0.0026394357 0.0051937192 + 900100 0.0051424257 0.0023731255 0.0049041631 + 900200 0.0053264588 0.0029323066 0.0055539231 + 900300 0.0053726428 0.0034458433 0.006090191 + 900400 0.0048000036 0.0036932606 0.0060557623 + 900500 0.005780796 0.0032810089 0.0061262444 + 900600 0.0046671391 0.0028289157 0.0051260232 + 900700 0.0053174645 0.0026545405 0.00527173 + 900800 0.0051488013 0.00193654 0.0044707156 + 900900 0.003116809 0.0023804557 0.0039145102 + 901000 0.004077861 0.0025178214 0.0045248937 + 901100 0.0042719277 0.0018802099 0.0039827993 + 901200 0.0048587422 0.0016647607 0.0040561729 + 901300 0.0039318658 0.0019997331 0.0039349482 + 901400 0.0044805585 0.0020621932 0.0042674681 + 901500 0.0060297803 0.0018512514 0.0048190339 + 901600 0.0039994996 0.0025063376 0.0044748413 + 901700 0.0034125925 0.0029590806 0.004638716 + 901800 0.0045463418 0.0023386836 0.0045763362 + 901900 0.0050268241 0.0021964724 0.0046706124 + 902000 0.0044808963 0.0024731456 0.0046785868 + 902100 0.0051115058 0.0024148337 0.004930653 + 902200 0.005531322 0.0027690417 0.0054914892 + 902300 0.0037200675 0.0031584568 0.0049894275 + 902400 0.0069074203 0.0024208256 0.0058205715 + 902500 0.0055928815 0.0018101716 0.0045629179 + 902600 0.0054221857 0.0015644734 0.0042332055 + 902700 0.0064962399 0.0021000223 0.0052973904 + 902800 0.004849673 0.0024158471 0.0048027955 + 902900 0.0048140188 0.0023172684 0.0046866683 + 903000 0.0035801467 0.0024054441 0.0041675475 + 903100 0.0050845457 0.0023943017 0.0048968516 + 903200 0.0049651469 0.0024342683 0.0048780515 + 903300 0.0043481802 0.0022700021 0.004410122 + 903400 0.005027613 0.0022551328 0.004729661 + 903500 0.0043957529 0.0021295682 0.0042931028 + 903600 0.0049175925 0.0022158232 0.0046362007 + 903700 0.0040175087 0.0021626444 0.004140012 + 903800 0.0055263848 0.0023220466 0.0050420641 + 903900 0.0047937213 0.0026752084 0.0050346182 + 904000 0.004467783 0.0025544565 0.0047534434 + 904100 0.0064322884 0.0023668003 0.0055326923 + 904200 0.0043566861 0.0027039954 0.0048483018 + 904300 0.0055333259 0.0024370724 0.0051605063 + 904400 0.0052625818 0.0023261315 0.0049163085 + 904500 0.0064790833 0.0018271918 0.0050161156 + 904600 0.0040258508 0.0019372338 0.0039187072 + 904700 0.0042438272 0.0021382229 0.0042269816 + 904800 0.0038983496 0.002465181 0.0043838999 + 904900 0.0034373802 0.0025154921 0.0042073276 + 905000 0.0047749684 0.0020926246 0.0044428043 + 905100 0.00519731 0.0018125935 0.0043706445 + 905200 0.0041247178 0.0015505379 0.0035806725 + 905300 0.004085031 0.0017677597 0.0037783609 + 905400 0.0053755281 0.0019285148 0.0045742825 + 905500 0.003456825 0.0021468759 0.003848282 + 905600 0.0041703039 0.0020036896 0.004056261 + 905700 0.0053675936 0.0017989072 0.0044407697 + 905800 0.0056304321 0.0018881238 0.0046593521 + 905900 0.0051827582 0.002111801 0.0046626899 + 906000 0.0046268981 0.0021604913 0.0044377927 + 906100 0.0048778891 0.0017415816 0.0041424176 + 906200 0.0048284554 0.001606012 0.0039825174 + 906300 0.0050097732 0.0018370374 0.0043027852 + 906400 0.0052951566 0.0023753996 0.0049816095 + 906500 0.00360998 0.0026529742 0.0044297612 + 906600 0.0049020618 0.0023203924 0.004733126 + 906700 0.0039728164 0.0018402498 0.0037956204 + 906800 0.0051668375 0.0021418819 0.0046849348 + 906900 0.006029456 0.0025353953 0.0055030181 + 907000 0.0048182768 0.0028396772 0.0052111728 + 907100 0.0036523186 0.002486252 0.0042838775 + 907200 0.0051804608 0.0021969438 0.0047467019 + 907300 0.0039423503 0.0023228638 0.0042632394 + 907400 0.005958297 0.0020076149 0.0049402142 + 907500 0.0048427423 0.0020886078 0.0044721451 + 907600 0.004835821 0.0023873406 0.0047674712 + 907700 0.0050311498 0.0026626227 0.0051388917 + 907800 0.0044004019 0.0027295723 0.0048953951 + 907900 0.0057030186 0.002624149 0.0054311035 + 908000 0.0042225539 0.0023421616 0.0044204499 + 908100 0.0045252748 0.0022372436 0.0044645273 + 908200 0.0046938466 0.0022998039 0.0046100565 + 908300 0.0051968877 0.0018848299 0.004442673 + 908400 0.0044940251 0.0018741044 0.0040860074 + 908500 0.0055300511 0.0020345523 0.0047563743 + 908600 0.0038314241 0.0020939873 0.0039797664 + 908700 0.0048246269 0.0022942635 0.0046688846 + 908800 0.0044088803 0.0022280308 0.0043980265 + 908900 0.0045746775 0.0020235409 0.00427514 + 909000 0.0050827935 0.0018146604 0.0043163478 + 909100 0.0043291849 0.0022176685 0.0043484392 + 909200 0.0039598556 0.0025095571 0.0044585485 + 909300 0.0048759012 0.0023761529 0.0047760105 + 909400 0.0041999011 0.0024309747 0.0044981135 + 909500 0.0046997417 0.0023285298 0.0046416839 + 909600 0.0059034033 0.0023520687 0.00525765 + 909700 0.0067561221 0.0022643851 0.005589664 + 909800 0.005264055 0.0026799018 0.0052708038 + 909900 0.0055196706 0.0025711149 0.0052878278 + 910000 0.0062146072 0.0024327557 0.0054915076 + 910100 0.0053605092 0.002071339 0.0047097146 + 910200 0.0052003627 0.0018847933 0.0044443468 + 910300 0.004986245 0.0023018261 0.0047559936 + 910400 0.0048801521 0.002320487 0.0047224368 + 910500 0.004200677 0.0021142694 0.0041817901 + 910600 0.0049719859 0.0021912313 0.0046383806 + 910700 0.0037471977 0.0019161405 0.0037604644 + 910800 0.0038389037 0.0021119146 0.004001375 + 910900 0.0037920245 0.00236374 0.0042301271 + 911000 0.0043721584 0.0026287394 0.0047806611 + 911100 0.0049263575 0.0024380386 0.0048627302 + 911200 0.0059134533 0.0019308571 0.0048413849 + 911300 0.0064167319 0.0020178936 0.0051761288 + 911400 0.0048285169 0.0020266596 0.0044031953 + 911500 0.0046326742 0.001782392 0.0040625363 + 911600 0.0040839881 0.0018114111 0.003821499 + 911700 0.0030959627 0.002070187 0.0035939811 + 911800 0.0047393469 0.0019927063 0.0043253536 + 911900 0.0046939067 0.0019820098 0.004292292 + 912000 0.004420928 0.0018938262 0.0040697517 + 912100 0.004395885 0.0018882566 0.0040518562 + 912200 0.0041323549 0.0023464686 0.004380362 + 912300 0.0043761685 0.0029673675 0.0051212629 + 912400 0.0056509547 0.0030831731 0.0058645023 + 912500 0.0051194264 0.003034336 0.0055540537 + 912600 0.0051966358 0.0025092989 0.0050670181 + 912700 0.0055324059 0.0023396096 0.0050625907 + 912800 0.0047506141 0.0026615199 0.0049997128 + 912900 0.0039486766 0.0025280358 0.0044715251 + 913000 0.004373017 0.0022402261 0.0043925704 + 913100 0.0039033431 0.0019819891 0.0039031658 + 913200 0.0053159262 0.0019174568 0.0045338892 + 913300 0.0052168605 0.0024007616 0.0049684351 + 913400 0.0055527821 0.0024970091 0.0052300191 + 913500 0.0046554484 0.0023618506 0.0046532041 + 913600 0.0070462828 0.0019004153 0.0053685076 + 913700 0.0041963773 0.0022378223 0.0043032268 + 913800 0.0056328715 0.0022897384 0.0050621673 + 913900 0.0053138456 0.002097841 0.0047132494 + 914000 0.0037398641 0.002182162 0.0040228764 + 914100 0.0052541978 0.0023648724 0.0049509229 + 914200 0.0058063138 0.0022929702 0.0051507652 + 914300 0.0045500048 0.0020048574 0.0042443129 + 914400 0.0052569465 0.0019113962 0.0044987996 + 914500 0.0054154439 0.0018967399 0.0045621537 + 914600 0.0039986677 0.0020059697 0.0039740639 + 914700 0.0048618809 0.0020141853 0.0044071423 + 914800 0.0052625525 0.0022567853 0.0048469478 + 914900 0.0049194382 0.002049686 0.004470972 + 915000 0.0063626364 0.0022869034 0.0054185135 + 915100 0.0054391834 0.0024435513 0.0051206493 + 915200 0.0068518643 0.0022031435 0.0055755454 + 915300 0.0057379642 0.0024685895 0.0052927437 + 915400 0.0055694189 0.0028649298 0.0056061282 + 915500 0.0066814905 0.0023894394 0.0056779855 + 915600 0.006617267 0.0017228016 0.0049797377 + 915700 0.0049821151 0.001960516 0.0044126508 + 915800 0.004374652 0.0023311884 0.0044843374 + 915900 0.0055239533 0.0025468219 0.0052656427 + 916000 0.0044149637 0.0025288393 0.0047018293 + 916100 0.0052821089 0.0022409764 0.0048407644 + 916200 0.0054109994 0.0027208874 0.0053841137 + 916300 0.0054591035 0.0029888188 0.0056757214 + 916400 0.0051584313 0.0027536913 0.0052926067 + 916500 0.0049676597 0.0022049074 0.0046499274 + 916600 0.0052999312 0.0021233569 0.0047319168 + 916700 0.004787813 0.0020811328 0.0044376345 + 916800 0.0042617761 0.002414167 0.0045117599 + 916900 0.0039547541 0.0024373515 0.0043838321 + 917000 0.0047993266 0.0021320374 0.0044942059 + 917100 0.0050136032 0.0021069187 0.0045745515 + 917200 0.0053652832 0.00202814 0.0046688653 + 917300 0.0052628699 0.0019093167 0.0044996355 + 917400 0.0049229523 0.0025203343 0.0049433499 + 917500 0.005809302 0.0028338009 0.0056930667 + 917600 0.0055712206 0.0020231028 0.0047651879 + 917700 0.0062799992 0.0016827936 0.0047737307 + 917800 0.0051908567 0.0020571311 0.0046120058 + 917900 0.0065142937 0.0021426872 0.0053489412 + 918000 0.0046367163 0.0028041505 0.0050862843 + 918100 0.0048450661 0.0028857279 0.0052704089 + 918200 0.005410084 0.0025368448 0.0051996205 + 918300 0.0047911948 0.0027259989 0.0050841651 + 918400 0.00427912 0.0024676312 0.0045737606 + 918500 0.0048245465 0.0022192971 0.0045938786 + 918600 0.0049379289 0.0023679803 0.0047983672 + 918700 0.0049156677 0.0019446651 0.0043640953 + 918800 0.0052779085 0.0021049093 0.0047026299 + 918900 0.0059643791 0.002599548 0.0055351409 + 919000 0.0046481243 0.0030577347 0.0053454834 + 919100 0.0048180207 0.0026039327 0.0049753023 + 919200 0.0055939875 0.0024421783 0.0051954691 + 919300 0.0046148186 0.0024993115 0.0047706676 + 919400 0.0055463641 0.0018848679 0.004614719 + 919500 0.004104701 0.0019455644 0.003965847 + 919600 0.0053001198 0.0018246676 0.0044333203 + 919700 0.0037959858 0.001735494 0.0036038308 + 919800 0.0050620719 0.001912069 0.0044035575 + 919900 0.0058138327 0.0021383286 0.0049998244 + 920000 0.004642861 0.0025800829 0.0048652411 + 920100 0.0040573286 0.0021370816 0.004134048 + 920200 0.0048501684 0.0024113612 0.0047985534 + 920300 0.0052341946 0.0022744757 0.0048506808 + 920400 0.0037841596 0.0023285473 0.0041910633 + 920500 0.0060918899 0.0024068471 0.0054051992 + 920600 0.0042072636 0.002481413 0.0045521755 + 920700 0.0046767655 0.0024857938 0.0047876393 + 920800 0.0046189717 0.0023065742 0.0045799744 + 920900 0.0047623473 0.0019080102 0.004251978 + 921000 0.0063031126 0.0014992809 0.0046015941 + 921100 0.0048650079 0.0015990944 0.0039935904 + 921200 0.0040323277 0.0016520694 0.0036367307 + 921300 0.005558326 0.0013382922 0.0040740307 + 921400 0.0044101514 0.0012694396 0.0034400609 + 921500 0.0050585866 0.00117576 0.0036655331 + 921600 0.0070669766 0.0016424342 0.0051207117 + 921700 0.0056199389 0.002807347 0.0055734106 + 921800 0.0033955469 0.0025573448 0.0042285906 + 921900 0.0051801323 0.0021881293 0.0047377257 + 922000 0.0043708721 0.0025531149 0.0047044035 + 922100 0.0057740512 0.0025266342 0.0053685501 + 922200 0.0048701307 0.0024925675 0.0048895849 + 922300 0.0050470222 0.0022464522 0.0047305334 + 922400 0.0042561643 0.0021318229 0.0042266537 + 922500 0.0051114651 0.0017115714 0.0042273706 + 922600 0.0054348521 0.0015433214 0.0042182876 + 922700 0.0059361619 0.0016659807 0.0045876853 + 922800 0.0051299906 0.0020099622 0.0045348795 + 922900 0.0057384537 0.0024503723 0.0052747675 + 923000 0.005634874 0.0028824962 0.0056559107 + 923100 0.0043511282 0.0030385815 0.0051801524 + 923200 0.0059011403 0.0028525032 0.0057569707 + 923300 0.0054503706 0.0026074421 0.0052900463 + 923400 0.0044338149 0.00233958 0.0045218483 + 923500 0.0056876908 0.0024450671 0.0052444774 + 923600 0.0053548725 0.0024238017 0.005059403 + 923700 0.0041610726 0.0026370685 0.0046850964 + 923800 0.0054549439 0.0026620921 0.0053469473 + 923900 0.0060462426 0.0024251044 0.0054009894 + 924000 0.0061486763 0.0017146287 0.0047409303 + 924100 0.004507576 0.0018390553 0.0040576279 + 924200 0.0034168225 0.0019163151 0.0035980324 + 924300 0.0054691574 0.0019024082 0.0045942591 + 924400 0.0039611614 0.0024174581 0.0043670922 + 924500 0.0053401689 0.002610925 0.0052392893 + 924600 0.0051411284 0.0027116465 0.0052420456 + 924700 0.0054969837 0.0029139914 0.005619538 + 924800 0.005116258 0.0033864836 0.0059046418 + 924900 0.0043689912 0.0037963878 0.0059467507 + 925000 0.0048611998 0.0027932738 0.0051858956 + 925100 0.0057674136 0.0021834085 0.0050220573 + 925200 0.0043701244 0.0018700985 0.0040210192 + 925300 0.0050861714 0.002356186 0.004859536 + 925400 0.004891706 0.0025516349 0.0049592714 + 925500 0.0063681802 0.0025185198 0.0056528585 + 925600 0.0058278042 0.0027964462 0.0056648186 + 925700 0.0042685023 0.0024918294 0.0045927329 + 925800 0.0052014945 0.0021294976 0.0046896082 + 925900 0.0052965415 0.0020046196 0.0046115112 + 926000 0.0038945964 0.0022407669 0.0041576385 + 926100 0.0049378928 0.0019338653 0.0043642344 + 926200 0.0039983645 0.0020208436 0.0039887887 + 926300 0.0049777957 0.0020083615 0.0044583703 + 926400 0.004938174 0.0022088875 0.004639395 + 926500 0.0047395914 0.0023426808 0.0046754485 + 926600 0.0041298425 0.002563619 0.0045962758 + 926700 0.0060335777 0.0020011078 0.0049707594 + 926800 0.0058276761 0.0019550486 0.0048233579 + 926900 0.0053588424 0.0021297578 0.004767313 + 927000 0.0047052876 0.0026836065 0.0049994902 + 927100 0.0040548089 0.0031515587 0.0051472849 + 927200 0.0039159035 0.0031973402 0.005124699 + 927300 0.0055796588 0.0025156008 0.0052618391 + 927400 0.0036371989 0.0025330991 0.0043232829 + 927500 0.0048493519 0.002644484 0.0050312744 + 927600 0.0045915698 0.0023485232 0.0046084365 + 927700 0.0057341515 0.0020982342 0.0049205119 + 927800 0.0052595564 0.0020665295 0.0046552174 + 927900 0.003396242 0.0021541864 0.0038257743 + 928000 0.0057551108 0.0021484576 0.0049810512 + 928100 0.0042093886 0.0022079188 0.0042797273 + 928200 0.0057364553 0.0024043462 0.0052277577 + 928300 0.0053995242 0.0026189272 0.0052765055 + 928400 0.0045129009 0.0025028327 0.0047240261 + 928500 0.0050918747 0.00242307 0.0049292271 + 928600 0.0047191248 0.0029643215 0.0052870157 + 928700 0.0056036212 0.0030811318 0.0058391641 + 928800 0.0046392643 0.0029314724 0.0052148603 + 928900 0.0049473007 0.0023843057 0.0048193052 + 929000 0.0048188628 0.0024122828 0.0047840668 + 929100 0.0042367487 0.0021726274 0.0042579021 + 929200 0.0048459381 0.0017390697 0.0041241799 + 929300 0.0036791651 0.0019192079 0.003730047 + 929400 0.0043344527 0.0024421972 0.0045755607 + 929500 0.0038389118 0.002643325 0.0045327894 + 929600 0.0053219726 0.0026959858 0.0053153942 + 929700 0.0038805304 0.0026494063 0.0045593548 + 929800 0.0048373892 0.0025029799 0.0048838824 + 929900 0.0050956037 0.0028198027 0.0053277952 + 930000 0.0054092309 0.0031296845 0.0057920403 + 930100 0.0052065626 0.0033493884 0.0059119934 + 930200 0.0060104759 0.0035229027 0.0064811838 + 930300 0.0045309219 0.0031274206 0.0053574838 + 930400 0.007266367 0.0027468187 0.0063232337 + 930500 0.0045850537 0.0032635695 0.0055202756 + 930600 0.0043762842 0.0031506709 0.0053046232 + 930700 0.0044604384 0.0026714507 0.0048668228 + 930800 0.0051464237 0.0022446364 0.0047776418 + 930900 0.0060339021 0.0020165491 0.0049863603 + 931000 0.0071020203 0.0024638627 0.0059593883 + 931100 0.0056639732 0.0033222923 0.0061100291 + 931200 0.0044304106 0.0035117304 0.0056923232 + 931300 0.0047807737 0.0034171773 0.0057702143 + 931400 0.0045114333 0.0026519549 0.0048724259 + 931500 0.0053472048 0.0023658636 0.004997691 + 931600 0.00421367 0.0024548988 0.0045288145 + 931700 0.0047050512 0.0023228339 0.0046386013 + 931800 0.0058761409 0.0023940254 0.0052861885 + 931900 0.0054523806 0.0022427319 0.0049263255 + 932000 0.0062041289 0.0022833672 0.0053369619 + 932100 0.005553912 0.0029192016 0.0056527677 + 932200 0.0053969721 0.0030977278 0.00575405 + 932300 0.0038672837 0.0030317984 0.0049352271 + 932400 0.0041890234 0.002940507 0.005002292 + 932500 0.006199807 0.0023398115 0.005391279 + 932600 0.0060328623 0.0021920828 0.0051613822 + 932700 0.0056022576 0.0021436183 0.0049009795 + 932800 0.0037513242 0.0022034674 0.0040498222 + 932900 0.0057822151 0.0022280361 0.0050739701 + 933000 0.004073598 0.0027069939 0.0047119679 + 933100 0.0040395685 0.0026693543 0.0046575794 + 933200 0.004896641 0.0029657658 0.0053758313 + 933300 0.0033809608 0.0030693651 0.0047334317 + 933400 0.0035249135 0.0029027 0.0046376184 + 933500 0.0037263457 0.0028186316 0.0046526924 + 933600 0.0053147414 0.0027182781 0.0053341273 + 933700 0.0042836624 0.0021090264 0.0042173915 + 933800 0.0039882246 0.002014775 0.0039777293 + 933900 0.0058757471 0.002213763 0.0051057323 + 934000 0.0039019677 0.0023645871 0.0042850869 + 934100 0.0045881015 0.0025526282 0.0048108344 + 934200 0.0048076113 0.0025711084 0.0049373545 + 934300 0.0064304546 0.0024602113 0.0056252007 + 934400 0.0044470448 0.0025451466 0.0047339264 + 934500 0.0046184101 0.0027887184 0.0050618422 + 934600 0.0051422959 0.0029513366 0.0054823104 + 934700 0.0059289564 0.0030727061 0.0059908644 + 934800 0.0040907699 0.0028460848 0.0048595106 + 934900 0.0058702665 0.0022105463 0.0050998181 + 935000 0.0042501409 0.0021318175 0.0042236837 + 935100 0.0042552609 0.0023089585 0.0044033447 + 935200 0.0046383473 0.00242752 0.0047104565 + 935300 0.0036176388 0.002688679 0.0044692356 + 935400 0.0058130486 0.0028215994 0.0056827093 + 935500 0.0060911113 0.0031725991 0.0061705679 + 935600 0.0061797377 0.0030352173 0.006076807 + 935700 0.0056871505 0.0027031988 0.0055023432 + 935800 0.0070082996 0.0023441877 0.0057935851 + 935900 0.0045674525 0.0026709615 0.0049190046 + 936000 0.0064976042 0.0027217517 0.0059197912 + 936100 0.0049208596 0.0029439921 0.0053659777 + 936200 0.0059595122 0.0025776072 0.0055108046 + 936300 0.0057494793 0.0024622841 0.005292106 + 936400 0.0053918274 0.0023191201 0.0049729101 + 936500 0.0046591399 0.0022943274 0.0045874979 + 936600 0.0041456389 0.0022140195 0.0042544511 + 936700 0.0049345798 0.0022264915 0.00465523 + 936800 0.0042294849 0.0026834699 0.0047651696 + 936900 0.0044745315 0.0027253656 0.0049276741 + 937000 0.0043750472 0.0024856963 0.0046390399 + 937100 0.0065205043 0.0020256014 0.0052349121 + 937200 0.003894459 0.0021326678 0.0040494719 + 937300 0.0042757519 0.002342313 0.0044467847 + 937400 0.005789107 0.0020006931 0.0048500192 + 937500 0.0053955103 0.0022000383 0.0048556411 + 937600 0.0057601113 0.0026158752 0.00545093 + 937700 0.0042768243 0.0025861258 0.0046911253 + 937800 0.0052665614 0.0028553205 0.0054474563 + 937900 0.0048967551 0.0030680345 0.0054781561 + 938000 0.0044598184 0.0029767424 0.0051718093 + 938100 0.0051669013 0.0027480699 0.0052911542 + 938200 0.005058361 0.0022343884 0.0047240504 + 938300 0.0055617119 0.0022157697 0.0049531747 + 938400 0.0055006492 0.0030293846 0.0057367354 + 938500 0.0047615923 0.0032788869 0.0056224831 + 938600 0.0043054883 0.0029317573 0.0050508648 + 938700 0.0047922707 0.00245256 0.0048112557 + 938800 0.0062419456 0.001938114 0.0050103216 + 938900 0.0051272045 0.0021837101 0.0047072561 + 939000 0.0046132337 0.0025506977 0.0048212736 + 939100 0.0042723858 0.0028687715 0.0049715864 + 939200 0.0057209927 0.0025703367 0.0053861378 + 939300 0.0045563957 0.0025772742 0.0048198752 + 939400 0.0036301583 0.0028005332 0.0045872517 + 939500 0.0047717076 0.0028537755 0.0052023504 + 939600 0.005847651 0.0026699104 0.0055480511 + 939700 0.0058028807 0.0026750506 0.0055311559 + 939800 0.0041662964 0.0029831398 0.0050337388 + 939900 0.0057540793 0.0025766038 0.0054086897 + 940000 0.0055865214 0.0022934528 0.0050430688 + 940100 0.0055537429 0.0017258368 0.0044593197 + 940200 0.00530236 0.0020064863 0.0046162416 + 940300 0.0062258222 0.0025992646 0.0056635365 + 940400 0.0038571234 0.0023207923 0.0042192202 + 940500 0.0047267027 0.0022756132 0.0046020372 + 940600 0.0052180928 0.0023328223 0.0049011024 + 940700 0.0052404956 0.002184849 0.0047641554 + 940800 0.0050910967 0.0026406146 0.0051463887 + 940900 0.006916421 0.0025829048 0.0059870807 + 941000 0.0059410891 0.0023656385 0.0052897683 + 941100 0.0047842835 0.002450873 0.0048056375 + 941200 0.0059869149 0.0025221128 0.0054687975 + 941300 0.0055028583 0.0025628549 0.005271293 + 941400 0.004044303 0.0026673609 0.0046579163 + 941500 0.005232939 0.0027992363 0.0053748235 + 941600 0.0054789374 0.0025693566 0.0052660211 + 941700 0.0058847145 0.002512034 0.0054084169 + 941800 0.0046831932 0.0025126173 0.0048176265 + 941900 0.0058933143 0.0024832708 0.0053838864 + 942000 0.0052535013 0.0027002764 0.0052859841 + 942100 0.0040428723 0.0026460414 0.0046358926 + 942200 0.0029825638 0.0027818726 0.0042498532 + 942300 0.0042674152 0.0029062828 0.0050066512 + 942400 0.007551551 0.0024815077 0.0061982867 + 942500 0.0053853304 0.002300703 0.0049512953 + 942600 0.0044000582 0.0024228008 0.0045884544 + 942700 0.0055262419 0.0026545484 0.0053744956 + 942800 0.0045500215 0.0031296539 0.0053691176 + 942900 0.0048788686 0.0026166526 0.0050179707 + 943000 0.0063967354 0.0024988661 0.0056472593 + 943100 0.0037014131 0.0027575411 0.0045793303 + 943200 0.0052847483 0.0029265673 0.0055276544 + 943300 0.0058889948 0.0026026083 0.0055010979 + 943400 0.0049484459 0.0030018104 0.0054373736 + 943500 0.0040954753 0.0037254432 0.005741185 + 943600 0.0059729898 0.0037985025 0.0067383334 + 943700 0.005429131 0.0035912496 0.0062634 + 943800 0.0057702796 0.0030298208 0.0058698803 + 943900 0.0063097178 0.0024069178 0.005512482 + 944000 0.0063115687 0.0018228507 0.0049293259 + 944100 0.0047306978 0.0021377933 0.0044661836 + 944200 0.0049731402 0.0022457233 0.0046934407 + 944300 0.0050328435 0.0027647491 0.0052418518 + 944400 0.0048402985 0.0027084786 0.005090813 + 944500 0.0049663793 0.0023661841 0.0048105738 + 944600 0.0055851171 0.0025338039 0.0052827287 + 944700 0.0047259597 0.0028206648 0.0051467231 + 944800 0.0055804226 0.002790576 0.0055371903 + 944900 0.004539636 0.0025764804 0.0048108325 + 945000 0.0049546389 0.002670543 0.0051091543 + 945100 0.00629192 0.0024849238 0.0055817282 + 945200 0.0055061487 0.0021399441 0.0048500017 + 945300 0.0042405755 0.0018943107 0.003981469 + 945400 0.0046383428 0.0019598295 0.0042427638 + 945500 0.0053577969 0.0022172381 0.0048542787 + 945600 0.0067188967 0.0022628882 0.0055698451 + 945700 0.0054645058 0.0028110695 0.005500631 + 945800 0.0057043696 0.0026245262 0.0054321456 + 945900 0.0050061015 0.0024214893 0.0048854299 + 946000 0.0054027856 0.0022816078 0.0049407913 + 946100 0.0057359931 0.0023312369 0.005154421 + 946200 0.0039478941 0.0029821023 0.0049252065 + 946300 0.0036498332 0.0026728435 0.0044692458 + 946400 0.0030426277 0.0022709828 0.0037685261 + 946500 0.0040760536 0.001987561 0.0039937436 + 946600 0.0052555951 0.001818584 0.0044053222 + 946700 0.0040844329 0.0019546641 0.0039649709 + 946800 0.003721803 0.0022740336 0.0041058585 + 946900 0.0050439767 0.002654704 0.0051372863 + 947000 0.0057007413 0.0028250808 0.0056309144 + 947100 0.0053458807 0.0030505089 0.0056816845 + 947200 0.0059890647 0.0026540915 0.0056018343 + 947300 0.0053634335 0.0021911688 0.0048309838 + 947400 0.0062812626 0.0025456603 0.0056372193 + 947500 0.0055662807 0.0029317744 0.0056714282 + 947600 0.0058796594 0.0029795713 0.0058734662 + 947700 0.0045831884 0.0026968115 0.0049525996 + 947800 0.0049316095 0.0021935426 0.0046208192 + 947900 0.0045622238 0.0021104641 0.0043559336 + 948000 0.0049015154 0.0024799711 0.0048924357 + 948100 0.0051006123 0.0024315928 0.0049420505 + 948200 0.0044246905 0.0023395206 0.0045172979 + 948300 0.0042431313 0.0024323421 0.0045207583 + 948400 0.0061765315 0.0020255371 0.0050655487 + 948500 0.0040925191 0.0021204769 0.0041347636 + 948600 0.0062126189 0.0020628051 0.0051205784 + 948700 0.0038472073 0.0024518676 0.0043454149 + 948800 0.0056633353 0.0026472281 0.0054346509 + 948900 0.0069753118 0.0024827005 0.0059158618 + 949000 0.0047123715 0.0023976062 0.0047169765 + 949100 0.0036626458 0.0025671018 0.0043698103 + 949200 0.0051176564 0.0023153214 0.0048341679 + 949300 0.0049317815 0.00238205 0.0048094112 + 949400 0.0053877343 0.0022436456 0.0048954211 + 949500 0.0050071881 0.0024375935 0.0049020689 + 949600 0.0052238604 0.0025904968 0.0051616156 + 949700 0.0059739605 0.0022618692 0.0052021778 + 949800 0.0066254491 0.0018933576 0.0051543209 + 949900 0.0052973689 0.0018922931 0.0044995919 + 950000 0.005871615 0.0023023909 0.0051923264 + 950100 0.0043702924 0.0022634459 0.0044144492 + 950200 0.0052240399 0.0019970327 0.0045682398 + 950300 0.0050474881 0.0022985127 0.0047828233 + 950400 0.0034046545 0.00262315 0.0042988784 + 950500 0.0067568238 0.0021261418 0.005451766 + 950600 0.0066191696 0.0020446596 0.0053025322 + 950700 0.0051685827 0.0022882745 0.0048321863 + 950800 0.0057577136 0.0024297998 0.0052636745 + 950900 0.0049442696 0.0026405251 0.0050740328 + 951000 0.0043484213 0.0025744845 0.0047147231 + 951100 0.0056253987 0.0023795711 0.005148322 + 951200 0.0045659117 0.0022679499 0.0045152345 + 951300 0.0043378108 0.0018926746 0.0040276908 + 951400 0.0065256962 0.0016194286 0.0048312947 + 951500 0.0049328263 0.0018101225 0.0042379979 + 951600 0.0054955109 0.0021776736 0.0048824954 + 951700 0.0051266456 0.0023573296 0.0048806005 + 951800 0.0056545541 0.0018344479 0.0046175487 + 951900 0.0044242089 0.0020848418 0.0042623821 + 952000 0.004295656 0.002310632 0.0044249002 + 952100 0.0054488928 0.0023271455 0.0050090225 + 952200 0.0053456947 0.0025244414 0.0051555255 + 952300 0.0039378611 0.0027640493 0.0047022153 + 952400 0.0062848054 0.0026895723 0.005782875 + 952500 0.0052284652 0.0027776272 0.0053510124 + 952600 0.004612894 0.0029092513 0.00517966 + 952700 0.0031301463 0.0032166521 0.004757271 + 952800 0.0054251697 0.0029185922 0.0055887929 + 952900 0.0045127441 0.0030191288 0.0052402451 + 953000 0.0042209796 0.0033981003 0.0054756137 + 953100 0.0053297597 0.0031183136 0.0057415548 + 953200 0.0057773043 0.0027225539 0.0055660709 + 953300 0.0049408349 0.0031541272 0.0055859444 + 953400 0.0048188352 0.0034399608 0.0058117312 + 953500 0.0070756999 0.0035650154 0.0070475864 + 953600 0.0069269414 0.0029926105 0.0064019644 + 953700 0.0042365424 0.0025294809 0.0046146541 + 953800 0.0052880541 0.0024942767 0.0050969908 + 953900 0.0040853431 0.0025450474 0.0045558022 + 954000 0.0053354698 0.0024467394 0.005072791 + 954100 0.0068383884 0.0024883028 0.0058540721 + 954200 0.0059830907 0.0029992574 0.0059440599 + 954300 0.0051325576 0.0032958988 0.0058220795 + 954400 0.0053431121 0.0035292586 0.0061590715 + 954500 0.0062911869 0.0028190741 0.0059155176 + 954600 0.0056662969 0.0027713601 0.0055602406 + 954700 0.004839716 0.0030467468 0.0054287946 + 954800 0.0040856117 0.0031213348 0.0051322218 + 954900 0.0061049369 0.0024529619 0.0054577355 + 955000 0.0067830182 0.0022949625 0.0056334793 + 955100 0.0048124159 0.0026790293 0.0050476402 + 955200 0.0051320904 0.0026637322 0.0051896829 + 955300 0.0044366945 0.0026572959 0.0048409815 + 955400 0.0043384277 0.0029294092 0.0050647291 + 955500 0.0043606052 0.0025305988 0.0046768341 + 955600 0.0049270141 0.0023991187 0.0048241335 + 955700 0.0055404666 0.0024470576 0.005174006 + 955800 0.0048660762 0.0025300831 0.004925105 + 955900 0.0045288338 0.0025020567 0.0047310921 + 956000 0.0037373819 0.0027021187 0.0045416113 + 956100 0.0054147805 0.002217414 0.0048825013 + 956200 0.0054748648 0.0021616306 0.0048562906 + 956300 0.0048912715 0.0026420371 0.0050494598 + 956400 0.0060685353 0.0030810823 0.0060679395 + 956500 0.0067688139 0.0029920088 0.0063235344 + 956600 0.0065194866 0.0027315496 0.0059403594 + 956700 0.0052484005 0.0029923982 0.0055755954 + 956800 0.0073177895 0.0032899337 0.0068916582 + 956900 0.00369462 0.0037931516 0.0056115974 + 957000 0.0046778423 0.0032054554 0.005507831 + 957100 0.0073346237 0.0025621863 0.0061721964 + 957200 0.0052161599 0.0026695404 0.0052368691 + 957300 0.0062881644 0.002733055 0.0058280109 + 957400 0.0066282065 0.002796169 0.0060584894 + 957500 0.0054778016 0.0027070739 0.0054031794 + 957600 0.0040035548 0.0025968919 0.0045673915 + 957700 0.0063525773 0.0031867178 0.0063133769 + 957800 0.0063702191 0.003345988 0.0064813302 + 957900 0.0048880732 0.0030220289 0.0054278775 + 958000 0.0051681918 0.0025990416 0.005142761 + 958100 0.0062247171 0.0028495466 0.0059132745 + 958200 0.0053088503 0.0035062588 0.0061192085 + 958300 0.0056476554 0.0038400067 0.0066197121 + 958400 0.0064903041 0.0035941482 0.0067885947 + 958500 0.0044972172 0.0029075558 0.0051210299 + 958600 0.0050582398 0.0029406203 0.0054302228 + 958700 0.0052528671 0.0031631749 0.0057485704 + 958800 0.006320579 0.0033955212 0.0065064311 + 958900 0.0047043381 0.0030384364 0.0053538529 + 959000 0.0046587727 0.0031213947 0.0054143844 + 959100 0.0046601284 0.0030741291 0.0053677861 + 959200 0.0057811055 0.0031875593 0.0060329472 + 959300 0.0063902738 0.0029558541 0.006101067 + 959400 0.0045763232 0.0030535503 0.0053059593 + 959500 0.0049363889 0.0027582756 0.0051879045 + 959600 0.0057086478 0.0022773497 0.0050870748 + 959700 0.0041746861 0.001880601 0.0039353293 + 959800 0.0067161598 0.0019156643 0.0052212742 + 959900 0.0055711488 0.0021579566 0.0049000064 + 960000 0.0036301064 0.0022034891 0.0039901821 + 960100 0.0050614143 0.0022651395 0.0047563044 + 960200 0.0053190788 0.0022989089 0.004916893 + 960300 0.0048745753 0.0022139832 0.0046131882 + 960400 0.0037753518 0.002381552 0.004239733 + 960500 0.0047743809 0.0021340948 0.0044839854 + 960600 0.0050978142 0.0021010776 0.004610158 + 960700 0.0046660592 0.0025711972 0.0048677732 + 960800 0.0053728543 0.0024075427 0.0050519944 + 960900 0.0050684637 0.002379489 0.0048741234 + 961000 0.0040528163 0.0026684818 0.0046632273 + 961100 0.0050397994 0.0023025136 0.0047830398 + 961200 0.005869114 0.0024980724 0.0053867769 + 961300 0.00460283 0.0027099919 0.0049754473 + 961400 0.0033418859 0.0025795541 0.0042243886 + 961500 0.0045319783 0.0023352223 0.0045658054 + 961600 0.0047375909 0.0026318039 0.0049635869 + 961700 0.0054719538 0.0028897986 0.0055830259 + 961800 0.0052110218 0.0032483011 0.0058131009 + 961900 0.0055237285 0.0032202476 0.0059389578 + 962000 0.0049923225 0.0036686818 0.0061258405 + 962100 0.0051654824 0.0033459152 0.005888301 + 962200 0.0046553772 0.003007577 0.0052988955 + 962300 0.0051898955 0.0026861344 0.005240536 + 962400 0.0047444432 0.0026110999 0.0049462555 + 962500 0.0046547194 0.0024057364 0.0046967311 + 962600 0.0043444244 0.0022185106 0.004356782 + 962700 0.0045710532 0.0022787153 0.0045285305 + 962800 0.0056309538 0.0025598267 0.0053313118 + 962900 0.0056799637 0.0028003728 0.0055959799 + 963000 0.0054720794 0.0033730209 0.00606631 + 963100 0.0048060275 0.0033059762 0.0056714429 + 963200 0.0060132481 0.003040183 0.0059998285 + 963300 0.0060286894 0.0023676814 0.005334927 + 963400 0.0042948451 0.0019431746 0.0040570437 + 963500 0.0049993469 0.0018178056 0.0042784217 + 963600 0.0046736506 0.0019528234 0.0042531358 + 963700 0.0051311231 0.0022791924 0.004804667 + 963800 0.0044148408 0.0030809563 0.0052538858 + 963900 0.0034097809 0.0033801416 0.0050583932 + 964000 0.0044419105 0.0030615022 0.005247755 + 964100 0.0038787818 0.0027943085 0.0047033964 + 964200 0.0048640733 0.0023350531 0.0047290892 + 964300 0.0043575879 0.0026652359 0.0048099862 + 964400 0.00515347 0.0025261831 0.0050626566 + 964500 0.0058013073 0.0025799651 0.0054352961 + 964600 0.0042752995 0.0030501086 0.0051543576 + 964700 0.0039066008 0.0031121239 0.005034904 + 964800 0.0044702605 0.002633125 0.0048333313 + 964900 0.0055637268 0.0025685072 0.005306904 + 965000 0.0063072728 0.0031860859 0.0062904467 + 965100 0.0044775059 0.0033925959 0.0055963683 + 965200 0.0049590206 0.0035235257 0.0059642936 + 965300 0.006077838 0.0033054811 0.006296917 + 965400 0.0053871944 0.0035425306 0.0061940403 + 965500 0.005775289 0.003313173 0.006155698 + 965600 0.0043051279 0.0032338621 0.0053527923 + 965700 0.0048105097 0.0031314818 0.0054991545 + 965800 0.0051837212 0.0029806351 0.0055319979 + 965900 0.0060806147 0.0028220307 0.0058148332 + 966000 0.0073224969 0.0027265501 0.0063305916 + 966100 0.0054534369 0.0029525469 0.0056366604 + 966200 0.0052222476 0.0027012929 0.0052716179 + 966300 0.00521233 0.0023217229 0.0048871665 + 966400 0.0057072644 0.0022546914 0.0050637356 + 966500 0.0050167813 0.0024404549 0.004909652 + 966600 0.0054217678 0.0022421428 0.0049106691 + 966700 0.0060904884 0.0023933786 0.0053910409 + 966800 0.0056468198 0.002944943 0.0057242371 + 966900 0.0042769952 0.0031348273 0.0052399109 + 967000 0.0057855226 0.0031396883 0.0059872501 + 967100 0.0066250209 0.0029328255 0.006193578 + 967200 0.0058449091 0.0027103353 0.0055871266 + 967300 0.0045471547 0.0027637775 0.0050018302 + 967400 0.0052337235 0.0028440651 0.0054200383 + 967500 0.005479885 0.0030187323 0.0057158632 + 967600 0.0050895891 0.002381631 0.0048866631 + 967700 0.0038354455 0.0027555543 0.0046433127 + 967800 0.0048407113 0.0026137701 0.0049963078 + 967900 0.0051305605 0.0024706873 0.0049958851 + 968000 0.0055470194 0.0024453347 0.0051755083 + 968100 0.0052279897 0.0025694082 0.0051425594 + 968200 0.0055225297 0.0026274135 0.0053455336 + 968300 0.0046820165 0.0025232228 0.0048276528 + 968400 0.0049002252 0.0027831473 0.0051949769 + 968500 0.0048682168 0.0021295981 0.0045256736 + 968600 0.0054144194 0.0018143244 0.0044792339 + 968700 0.0045578242 0.002160903 0.0044042071 + 968800 0.0055532297 0.0025480002 0.0052812304 + 968900 0.0059639747 0.0022492709 0.0051846647 + 969000 0.0051230932 0.0024924616 0.005013984 + 969100 0.0053698262 0.002713762 0.0053567234 + 969200 0.0045618098 0.0028775127 0.0051227785 + 969300 0.0043560547 0.0024619789 0.0046059745 + 969400 0.0049038556 0.0025159774 0.0049295938 + 969500 0.0056376871 0.0026553717 0.0054301708 + 969600 0.005043098 0.0025124895 0.0049946393 + 969700 0.0050046294 0.0027719528 0.0052351688 + 969800 0.0042023088 0.0031761414 0.0052444653 + 969900 0.0050246276 0.0030673514 0.0055404102 + 970000 0.0048542202 0.002921362 0.0053105485 + 970100 0.0049725212 0.0025353311 0.0049827439 + 970200 0.0073508767 0.0026966449 0.0063146545 + 970300 0.0056753656 0.0033404216 0.0061337656 + 970400 0.0049212835 0.0037268567 0.0061490509 + 970500 0.0047838439 0.0036177179 0.0059722661 + 970600 0.0049137632 0.0032094314 0.0056279242 + 970700 0.0053006436 0.0028654733 0.0054743838 + 970800 0.0047455832 0.0029088356 0.0052445523 + 970900 0.0058562198 0.0028616988 0.005744057 + 971000 0.0046797299 0.0027642705 0.0050675751 + 971100 0.0035736731 0.0027741373 0.0045330546 + 971200 0.0048921041 0.0021112037 0.0045190362 + 971300 0.0055196962 0.0019084903 0.0046252158 + 971400 0.0056464769 0.0022449631 0.0050240885 + 971500 0.0038859703 0.002663827 0.004576453 + 971600 0.0047725244 0.0025582852 0.004907262 + 971700 0.0046081126 0.0025390258 0.0048070812 + 971800 0.0043262709 0.0026059807 0.0047353171 + 971900 0.006566044 0.002471612 0.0057033367 + 972000 0.0057944598 0.0025446497 0.0053966104 + 972100 0.0058313404 0.0026248712 0.005494984 + 972200 0.0031429178 0.0027992152 0.0043461201 + 972300 0.0052467752 0.0028551449 0.0054375421 + 972400 0.0055893576 0.0027462849 0.0054972968 + 972500 0.0061902888 0.0025071501 0.0055539329 + 972600 0.0057115877 0.0032148349 0.006026007 + 972700 0.0047704902 0.0030924464 0.005440422 + 972800 0.0058587438 0.0030758046 0.0059594051 + 972900 0.0048952981 0.0028195135 0.0052289181 + 973000 0.0045538318 0.0025685315 0.0048098706 + 973100 0.0042741367 0.0028053202 0.0049089968 + 973200 0.0035746403 0.0024357127 0.0041951059 + 973300 0.0045904176 0.0023875068 0.004646853 + 973400 0.0048457394 0.0023069306 0.0046919429 + 973500 0.0042837146 0.0027912615 0.0048996523 + 973600 0.0047674613 0.0028068874 0.0051533723 + 973700 0.0049523031 0.002596494 0.0050339557 + 973800 0.0068748342 0.0027046842 0.0060883917 + 973900 0.0057609804 0.0024336636 0.0052691462 + 974000 0.0056063668 0.0024964712 0.0052558549 + 974100 0.0051900314 0.0023804685 0.0049349371 + 974200 0.0064487718 0.002307078 0.0054810829 + 974300 0.0061834083 0.0025944841 0.0056378803 + 974400 0.0057025311 0.0027520556 0.0055587701 + 974500 0.0042751238 0.0024166917 0.0045208542 + 974600 0.0053766503 0.0021838034 0.0048301235 + 974700 0.0030039709 0.0025841816 0.0040626986 + 974800 0.0046691123 0.0025361846 0.0048342633 + 974900 0.0052974161 0.0029100697 0.0055173917 + 975000 0.0040907323 0.0033242655 0.0053376728 + 975100 0.0047023544 0.0028784567 0.0051928967 + 975200 0.0050075817 0.0026531915 0.0051178606 + 975300 0.0058441367 0.0024578842 0.0053342952 + 975400 0.0039066278 0.0026738475 0.0045966408 + 975500 0.0045124393 0.002391999 0.0046129652 + 975600 0.0040024196 0.0022331199 0.0042030608 + 975700 0.0040280973 0.0025148811 0.0044974602 + 975800 0.0059446815 0.0023142213 0.0052401192 + 975900 0.003542666 0.0022327459 0.0039764018 + 976000 0.0058896396 0.0020503669 0.0049491739 + 976100 0.0055778445 0.0024299175 0.0051752629 + 976200 0.0047260621 0.0024655669 0.0047916756 + 976300 0.0035849619 0.0024940339 0.0042585073 + 976400 0.0049926099 0.002404931 0.0048622312 + 976500 0.0070676434 0.0020788192 0.005557425 + 976600 0.0054104219 0.0023046444 0.0049675864 + 976700 0.0036560688 0.0026005898 0.0044000612 + 976800 0.0043873014 0.0025404343 0.0046998092 + 976900 0.0046546409 0.0025788444 0.0048698005 + 977000 0.0056209652 0.0027395092 0.005506078 + 977100 0.005725543 0.0031284995 0.0059465402 + 977200 0.0055606875 0.0025838678 0.0053207686 + 977300 0.0043430628 0.0028360571 0.0049736583 + 977400 0.0037029631 0.0028367586 0.0046593107 + 977500 0.0069719144 0.001938028 0.0053695171 + 977600 0.0057626055 0.0019937371 0.0048300195 + 977700 0.0060237783 0.002190744 0.0051555723 + 977800 0.0050946393 0.0026385334 0.0051460512 + 977900 0.0037238203 0.0028303221 0.0046631399 + 978000 0.0044458966 0.0028124466 0.0050006613 + 978100 0.0043034232 0.0030163878 0.0051344789 + 978200 0.0066942561 0.0027167802 0.0060116094 + 978300 0.0045747149 0.0027150106 0.0049666281 + 978400 0.0043064495 0.0022617086 0.0043812892 + 978500 0.0070645926 0.0017127655 0.0051898697 + 978600 0.0061699792 0.0016400269 0.0046768135 + 978700 0.0036209581 0.0021046637 0.003886854 + 978800 0.0040657748 0.002035424 0.0040365476 + 978900 0.0047386898 0.0024307211 0.004763045 + 979000 0.0045105558 0.0025228213 0.0047428605 + 979100 0.0036730443 0.0026645951 0.0044724216 + 979200 0.0051323164 0.0023169247 0.0048429867 + 979300 0.0057187874 0.0018002487 0.0046149644 + 979400 0.0042600571 0.0018455482 0.0039422951 + 979500 0.0041048546 0.0017923513 0.0038127094 + 979600 0.003105054 0.0020439512 0.00357222 + 979700 0.0049926746 0.001661332 0.004118664 + 979800 0.0046366505 0.0014668497 0.0037489511 + 979900 0.0044969741 0.0017386524 0.0039520069 + 980000 0.0051131067 0.0020044239 0.0045210311 + 980100 0.0046570978 0.0025129328 0.0048050981 + 980200 0.0051005303 0.002560698 0.0050711152 + 980300 0.0055117421 0.0026174832 0.0053302938 + 980400 0.0058534693 0.0025608534 0.0054418578 + 980500 0.0057978676 0.0021891361 0.0050427741 + 980600 0.0044253449 0.0021351924 0.0043132919 + 980700 0.0043456794 0.0022010256 0.0043399147 + 980800 0.0056947785 0.0020800787 0.0048829775 + 980900 0.0048152358 0.001968839 0.0043388378 + 981000 0.0029653224 0.002164821 0.0036243156 + 981100 0.0040486421 0.0023118002 0.0043044912 + 981200 0.0045338017 0.0024766984 0.0047081789 + 981300 0.0046008279 0.0023761418 0.0046406118 + 981400 0.0056993449 0.0023749512 0.0051800975 + 981500 0.0054130928 0.002659066 0.0053233226 + 981600 0.005610702 0.0026451966 0.005406714 + 981700 0.0045894496 0.0028323961 0.0050912659 + 981800 0.0063038393 0.0026143064 0.0057169773 + 981900 0.0050714527 0.0026284386 0.0051245442 + 982000 0.0041796551 0.0021776633 0.0042348373 + 982100 0.0043339387 0.0019022954 0.0040354059 + 982200 0.0043746088 0.0023569466 0.0045100743 + 982300 0.0040782177 0.0025824333 0.0045896811 + 982400 0.0045632306 0.0023712852 0.0046172503 + 982500 0.0049301252 0.0021066786 0.0045332246 + 982600 0.0036209218 0.0022648047 0.0040469771 + 982700 0.0033353884 0.0021042753 0.0037459118 + 982800 0.0045760063 0.0019367141 0.0041889672 + 982900 0.0050377889 0.0019743714 0.0044539081 + 983000 0.0042943915 0.0020259614 0.0041396073 + 983100 0.0052937197 0.002134796 0.0047402987 + 983200 0.0056382139 0.0021933519 0.0049684103 + 983300 0.0053333703 0.0022857977 0.0049108159 + 983400 0.0069554299 0.0020510222 0.0054743979 + 983500 0.0056814687 0.0023336303 0.0051299782 + 983600 0.0052359144 0.0025928945 0.0051699461 + 983700 0.0053388082 0.0023695764 0.0049972711 + 983800 0.0047616257 0.0023042835 0.0046478961 + 983900 0.0046452937 0.0024219967 0.0047083522 + 984000 0.0040258955 0.0025652991 0.0045467945 + 984100 0.0041818839 0.0026859109 0.0047441819 + 984200 0.0042180805 0.0022511493 0.0043272358 + 984300 0.0047444256 0.0017922791 0.004127426 + 984400 0.0047754173 0.0022868123 0.004637213 + 984500 0.0050065817 0.0025157426 0.0049799195 + 984600 0.0040293114 0.0025699096 0.0045530863 + 984700 0.0066311489 0.0022045242 0.0054682928 + 984800 0.0047586844 0.0020744293 0.0044165942 + 984900 0.0040522337 0.002212741 0.0042071998 + 985000 0.0043877025 0.0023442663 0.0045038386 + 985100 0.0047194088 0.0024219322 0.0047447662 + 985200 0.0050078776 0.0027892304 0.0052540452 + 985300 0.0064805713 0.003028348 0.0062180042 + 985400 0.0050827564 0.0026706738 0.005172343 + 985500 0.0072465769 0.0018527453 0.0054194199 + 985600 0.0058564897 0.001726072 0.004608563 + 985700 0.0041509868 0.0019787873 0.0040218511 + 985800 0.0051875305 0.0022633469 0.0048165846 + 985900 0.0044728751 0.0026456499 0.0048471432 + 986000 0.0036312795 0.0029691821 0.0047564525 + 986100 0.0053595988 0.0027197938 0.0053577213 + 986200 0.0055906173 0.0021037715 0.0048554035 + 986300 0.0047186748 0.0016520983 0.0039745711 + 986400 0.0058123615 0.0017820438 0.0046428155 + 986500 0.0066101727 0.0016947645 0.0049482088 + 986600 0.0036669052 0.0018614828 0.0036662877 + 986700 0.0052426282 0.002364853 0.0049452091 + 986800 0.0047556773 0.0024987693 0.0048394542 + 986900 0.0043722851 0.0020883044 0.0042402884 + 987000 0.0058560623 0.0018318586 0.0047141393 + 987100 0.0046471891 0.0022574238 0.0045447122 + 987200 0.005769302 0.0023883314 0.0052279097 + 987300 0.005340578 0.00297314 0.0056017057 + 987400 0.0041984966 0.0030720457 0.0051384932 + 987500 0.0055734875 0.0030758856 0.0058190865 + 987600 0.0049103416 0.0029534745 0.0053702833 + 987700 0.0045587859 0.0030990145 0.005342792 + 987800 0.0066957473 0.0027528671 0.0060484302 + 987900 0.0056831183 0.0021810314 0.0049781912 + 988000 0.0045077179 0.0024094969 0.0046281393 + 988100 0.0062549101 0.002726276 0.0058048646 + 988200 0.0068147466 0.0029799176 0.0063340507 + 988300 0.0052853542 0.0027561071 0.0053574924 + 988400 0.0046311802 0.0026079829 0.0048873919 + 988500 0.0046459606 0.0026749404 0.0049616242 + 988600 0.0059728465 0.0023656494 0.0053054098 + 988700 0.0049717089 0.0021957331 0.004642746 + 988800 0.0047747132 0.0022157475 0.0045658016 + 988900 0.0042181843 0.002401465 0.0044776026 + 989000 0.0047821828 0.0028397489 0.0051934795 + 989100 0.0053718057 0.002497782 0.0051417176 + 989200 0.0066377755 0.0021378332 0.0054048634 + 989300 0.0060905417 0.0022763824 0.0052740709 + 989400 0.0037452542 0.0021602432 0.0040036105 + 989500 0.0043685903 0.0022350323 0.0043851978 + 989600 0.0069068776 0.0022565415 0.0056560203 + 989700 0.0046816061 0.0027092837 0.0050135117 + 989800 0.00490818 0.0027726734 0.0051884183 + 989900 0.0043398336 0.0024285008 0.0045645126 + 990000 0.0069544621 0.0022539892 0.0056768885 + 990100 0.003624218 0.0024782567 0.0042620515 + 990200 0.0066288969 0.0028806224 0.0061432826 + 990300 0.0069195306 0.0027260589 0.0061317654 + 990400 0.0054687046 0.0029015494 0.0055931774 + 990500 0.005405137 0.0031001144 0.0057604552 + 990600 0.0060387136 0.0029450032 0.0059171826 + 990700 0.0059216057 0.0036512444 0.0065657847 + 990800 0.0058546676 0.0038843742 0.0067659684 + 990900 0.0056179445 0.0035174389 0.006282521 + 991000 0.0047503494 0.0029900174 0.00532808 + 991100 0.0056318629 0.0027035374 0.0054754699 + 991200 0.0052598092 0.002498335 0.0050871473 + 991300 0.0033715191 0.0023957363 0.0040551559 + 991400 0.0050440027 0.0023087044 0.0047912995 + 991500 0.0044482628 0.0023793485 0.0045687279 + 991600 0.0032028784 0.002523457 0.0040998737 + 991700 0.0049485832 0.0019852062 0.004420837 + 991800 0.0056996799 0.0016747567 0.0044800679 + 991900 0.0041014305 0.0021716022 0.004190275 + 992000 0.0063350615 0.0020193899 0.005137428 + 992100 0.004976477 0.0020866343 0.004535994 + 992200 0.0049413425 0.0018221806 0.0042542476 + 992300 0.0047170725 0.0016484546 0.0039701387 + 992400 0.0042431954 0.0017753624 0.0038638101 + 992500 0.004570868 0.002151285 0.0044010091 + 992600 0.0047171369 0.0024519763 0.0047736922 + 992700 0.0052287214 0.0025553304 0.0051288417 + 992800 0.0066636663 0.0020834451 0.0053632184 + 992900 0.0038725765 0.0020896936 0.0039957273 + 993000 0.0040123605 0.0021346996 0.0041095333 + 993100 0.005667179 0.0023106654 0.0050999801 + 993200 0.005458508 0.0024129144 0.0050995238 + 993300 0.0045746999 0.0023087006 0.0045603106 + 993400 0.0045178636 0.0021612608 0.0043848968 + 993500 0.0043224283 0.0022167168 0.004344162 + 993600 0.0045043539 0.0021878761 0.0044048628 + 993700 0.0058663594 0.0021263902 0.0050137389 + 993800 0.0055741808 0.0023690888 0.0051126309 + 993900 0.0044862602 0.0025900667 0.0047981479 + 994000 0.0066439917 0.0022507587 0.0055208484 + 994100 0.0041967791 0.0020804078 0.00414601 + 994200 0.0054912069 0.001927211 0.0046299144 + 994300 0.0051995124 0.0020930127 0.0046521477 + 994400 0.0040071081 0.0024384396 0.0044106882 + 994500 0.0049260802 0.0023990951 0.0048236502 + 994600 0.0064031087 0.0026113315 0.0057628615 + 994700 0.0067609024 0.0024949952 0.0058226268 + 994800 0.0043920228 0.0028643466 0.0050260453 + 994900 0.005128719 0.002999845 0.0055241364 + 995000 0.0046327629 0.0029911327 0.0052713207 + 995100 0.0041598878 0.0028300294 0.0048774741 + 995200 0.0047627074 0.0024182285 0.0047623736 + 995300 0.0061863427 0.0025083093 0.0055531499 + 995400 0.0037393553 0.0033186768 0.0051591408 + 995500 0.0050329205 0.0035142706 0.0059914111 + 995600 0.0060284058 0.0028443355 0.0058114415 + 995700 0.0047874711 0.0024486666 0.004805 + 995800 0.0042591236 0.0024370641 0.0045333515 + 995900 0.0055620273 0.0022726227 0.005010183 + 996000 0.005385517 0.0021813918 0.004832076 + 996100 0.0036977244 0.0024519957 0.0042719695 + 996200 0.0049012424 0.0026396055 0.0050519357 + 996300 0.0066092072 0.0022052398 0.005458209 + 996400 0.0054576964 0.0019726874 0.0046588973 + 996500 0.0046304117 0.0026276713 0.0049067021 + 996600 0.006361277 0.0025277726 0.0056587137 + 996700 0.0061761539 0.0026615286 0.0057013544 + 996800 0.0063618554 0.002861389 0.0059926147 + 996900 0.0044350199 0.0029396208 0.0051224821 + 997000 0.0064446301 0.003154206 0.0063261724 + 997100 0.0061720505 0.003261819 0.0062996251 + 997200 0.0069770107 0.0034193368 0.0068533343 + 997300 0.0063646032 0.00355161 0.0066841881 + 997400 0.003787801 0.0031669672 0.0050312755 + 997500 0.0046285794 0.0028086618 0.0050867908 + 997600 0.0054970574 0.0028917883 0.0055973712 + 997700 0.0046989528 0.003231901 0.0055446669 + 997800 0.0045025204 0.003176973 0.0053930572 + 997900 0.0049197127 0.0033125007 0.0057339218 + 998000 0.0053014456 0.0033725734 0.0059818786 + 998100 0.0056266485 0.0030373836 0.0058067496 + 998200 0.0063411088 0.0028264742 0.0059474887 + 998300 0.003737419 0.0024761208 0.0043156317 + 998400 0.0053751435 0.0023075905 0.004953169 + 998500 0.0047116107 0.0025685752 0.0048875711 + 998600 0.0049634078 0.0026877375 0.0051306648 + 998700 0.0046450477 0.0023514683 0.0046377027 + 998800 0.0055964607 0.002087633 0.004842141 + 998900 0.0043958493 0.0019594316 0.0041230137 + 999000 0.0044517957 0.0019771562 0.0041682744 + 999100 0.0053311029 0.0021296631 0.0047535653 + 999200 0.0055097537 0.0023279157 0.0050397476 + 999300 0.004760601 0.0030707458 0.0054138541 + 999400 0.0056533655 0.0026483438 0.0054308596 + 999500 0.0044695981 0.0023121902 0.0045120705 + 999600 0.0037290837 0.0025775742 0.0044129826 + 999700 0.0042972643 0.0027132524 0.0048283122 + 999800 0.0036132133 0.0025116103 0.0042899887 + 999900 0.0057246924 0.0022913205 0.0051089426 + 1000000 0.0056460263 0.0023395355 0.0051184391 + 1000100 0.0055925972 0.0025469812 0.0052995876 + 1000200 0.0049404491 0.002321484 0.0047531113 + 1000300 0.0054957555 0.0022888156 0.0049937578 + 1000400 0.0046862982 0.0021826163 0.0044891537 + 1000500 0.0037980366 0.0025190111 0.0043883573 + 1000600 0.0047866591 0.0025732813 0.004929215 + 1000700 0.0041300225 0.0025274855 0.004560231 + 1000800 0.0039164373 0.0028742943 0.0048019158 + 1000900 0.0054213217 0.0026365205 0.0053048272 + 1001000 0.0055433366 0.0027732863 0.0055016473 + 1001100 0.0047810859 0.0031906429 0.0055438336 + 1001200 0.0054012041 0.0028428434 0.0055012486 + 1001300 0.0052415762 0.002150741 0.0047305793 + 1001400 0.0044536038 0.0022164367 0.0044084448 + 1001500 0.0090839552 0.0022883312 0.0067593404 + 1001600 0.0060289464 0.002254895 0.005222267 + 1001700 0.004808016 0.0029290838 0.0052955292 + 1001800 0.0066931606 0.0030378049 0.0063320949 + 1001900 0.0072971659 0.0022743284 0.0058659022 + 1002000 0.0052141929 0.0024361955 0.005002556 + 1002100 0.0045579305 0.0029278932 0.0051712496 + 1002200 0.004027045 0.0025954366 0.0045774978 + 1002300 0.0038366619 0.0025258411 0.0044141981 + 1002400 0.004892441 0.0022978236 0.0047058219 + 1002500 0.0051598819 0.0022536903 0.0047933197 + 1002600 0.0054597833 0.002205033 0.0048922701 + 1002700 0.0063493283 0.0021952269 0.0053202869 + 1002800 0.0045402255 0.0021480357 0.004382678 + 1002900 0.0042396971 0.0024238819 0.0045106078 + 1003000 0.0034689584 0.0024635573 0.0041709353 + 1003100 0.0042858918 0.0023220502 0.0044315126 + 1003200 0.0061034048 0.0023044817 0.0053085012 + 1003300 0.0039023206 0.0025276932 0.0044483667 + 1003400 0.0045827387 0.0024600243 0.004715591 + 1003500 0.0052577672 0.0026563215 0.0052441288 + 1003600 0.0039052656 0.002845093 0.0047672159 + 1003700 0.0055635868 0.0024214113 0.0051597392 + 1003800 0.0045321932 0.0023714378 0.0046021266 + 1003900 0.0060495599 0.0022254556 0.0052029734 + 1004000 0.005878573 0.0018478455 0.0047412057 + 1004100 0.0051935743 0.0018609558 0.0044171681 + 1004200 0.0039750285 0.0019441779 0.0039006373 + 1004300 0.0051701754 0.0020535639 0.0045982596 + 1004400 0.0041768503 0.0021855518 0.0042413453 + 1004500 0.0049735822 0.0020513392 0.0044992742 + 1004600 0.0045107956 0.0023109299 0.0045310871 + 1004700 0.0052150484 0.0024771721 0.0050439538 + 1004800 0.004797247 0.0024644966 0.0048256416 + 1004900 0.0066434817 0.0023848305 0.0056546691 + 1005000 0.0049735537 0.0029804031 0.0054283241 + 1005100 0.0049326833 0.0029300963 0.0053579013 + 1005200 0.0047033198 0.0030759027 0.0053908179 + 1005300 0.005377862 0.0027275664 0.0053744829 + 1005400 0.0046481151 0.0027200572 0.0050078014 + 1005500 0.0050095914 0.0027808697 0.0052465279 + 1005600 0.0058203327 0.0026450922 0.0055097872 + 1005700 0.0044990729 0.0030670383 0.0052814257 + 1005800 0.00471133 0.0033806322 0.0056994899 + 1005900 0.0054468085 0.0029076273 0.0055884784 + 1006000 0.0066365579 0.0024329113 0.0056993421 + 1006100 0.0061112237 0.0021582131 0.005166081 + 1006200 0.0050375063 0.0020974781 0.0045768757 + 1006300 0.006214733 0.0021794305 0.0052382444 + 1006400 0.0051363281 0.0023407516 0.004868788 + 1006500 0.0063977697 0.002087327 0.0052362293 + 1006600 0.0052450373 0.002214863 0.0047964048 + 1006700 0.0045021858 0.0025157918 0.0047317114 + 1006800 0.00640584 0.0020166602 0.0051695346 + 1006900 0.0046386971 0.0020043477 0.0042874564 + 1007000 0.0052009765 0.0021094924 0.004669348 + 1007100 0.0044833914 0.0026257176 0.0048323868 + 1007200 0.0047693876 0.0026738145 0.0050212474 + 1007300 0.0050582544 0.0029430705 0.0054326801 + 1007400 0.0053537263 0.003070521 0.0057055582 + 1007500 0.0056470207 0.0027410876 0.0055204806 + 1007600 0.0060484161 0.0027151647 0.0056921195 + 1007700 0.0064279864 0.0025495891 0.0057133637 + 1007800 0.005664372 0.0029086173 0.0056965504 + 1007900 0.006264195 0.0030758331 0.0061589915 + 1008000 0.005047561 0.002678869 0.0051632154 + 1008100 0.0047047593 0.0029555783 0.005271202 + 1008200 0.0050279474 0.0032566603 0.0057313532 + 1008300 0.0043459602 0.0030469507 0.005185978 + 1008400 0.0044912988 0.0026299113 0.0048404724 + 1008500 0.0046034076 0.0023590584 0.0046247981 + 1008600 0.0049719661 0.0026203384 0.005067478 + 1008700 0.0045239408 0.0022576156 0.0044842427 + 1008800 0.0048960588 0.0021032399 0.0045130188 + 1008900 0.0056016537 0.0020386298 0.0047956937 + 1009000 0.0052307197 0.0021401789 0.0047146737 + 1009100 0.0038945398 0.0021638606 0.0040807044 + 1009200 0.0055867154 0.0020401487 0.0047898601 + 1009300 0.0039606007 0.0022601655 0.0042095237 + 1009400 0.0046665152 0.0025774366 0.004874237 + 1009500 0.0038493457 0.0026096636 0.0045042635 + 1009600 0.0047686705 0.0022906869 0.0046377669 + 1009700 0.003422839 0.0026168221 0.0043015007 + 1009800 0.0043868918 0.0023785341 0.0045377074 + 1009900 0.0044431887 0.0021734503 0.0043603322 + 1010000 0.004982549 0.0022031208 0.0046554691 + 1010100 0.0045963734 0.0022073422 0.0044696197 + 1010200 0.0047870851 0.0026913638 0.0050475072 + 1010300 0.0053647354 0.0028038627 0.0054443184 + 1010400 0.005608622 0.0025437515 0.0053042452 + 1010500 0.0049488301 0.0020356942 0.0044714465 + 1010600 0.0044432401 0.0018759504 0.0040628577 + 1010700 0.0050949186 0.0019258416 0.0044334969 + 1010800 0.0061712835 0.0019990447 0.0050364733 + 1010900 0.003973647 0.0022901128 0.0042458922 + 1011000 0.0041232887 0.0023360449 0.004365476 + 1011100 0.0063822151 0.0023583906 0.005499637 + 1011200 0.0043137382 0.0024890332 0.0046122012 + 1011300 0.0065759485 0.0022779248 0.0055145244 + 1011400 0.0063608752 0.0023077078 0.0054384511 + 1011500 0.0045697116 0.0026429442 0.0048920991 + 1011600 0.0060195287 0.0024735057 0.0054362425 + 1011700 0.0061936993 0.0026793061 0.0057277675 + 1011800 0.0051055855 0.0024514962 0.0049644015 + 1011900 0.0071199242 0.0025240351 0.0060283728 + 1012000 0.0054640925 0.0029037924 0.0055931505 + 1012100 0.0056327508 0.0027148393 0.0054872088 + 1012200 0.0045772432 0.0024595027 0.0047123646 + 1012300 0.0049687731 0.0022664609 0.0047120289 + 1012400 0.0053170161 0.0024294649 0.0050464337 + 1012500 0.0041548385 0.0021781115 0.0042230711 + 1012600 0.0074842286 0.0017828361 0.0054664798 + 1012700 0.0055591688 0.0026313289 0.0053674823 + 1012800 0.0071579766 0.0029887313 0.0065117979 + 1012900 0.0052912295 0.0027163137 0.0053205907 + 1013000 0.0043067221 0.0026354253 0.0047551401 + 1013100 0.0049634332 0.0031198179 0.0055627576 + 1013200 0.0044245604 0.0032035239 0.0053812372 + 1013300 0.0053686334 0.0029911603 0.0056335345 + 1013400 0.0074941349 0.0031623933 0.0068509128 + 1013500 0.0052407188 0.0028572022 0.0054366185 + 1013600 0.0069862984 0.0022736861 0.0057122549 + 1013700 0.006895488 0.0021934615 0.0055873345 + 1013800 0.0042190758 0.0023383858 0.0044149621 + 1013900 0.0052714821 0.002461343 0.0050559006 + 1014000 0.0051893648 0.0025186639 0.0050728044 + 1014100 0.0034648094 0.0033059024 0.0050112383 + 1014200 0.0054156946 0.003495732 0.0061612691 + 1014300 0.0066456565 0.0028781187 0.0061490277 + 1014400 0.0056414451 0.0031596938 0.0059363426 + 1014500 0.0053655242 0.0032750266 0.0059158706 + 1014600 0.0067668484 0.0028596963 0.0061902545 + 1014700 0.004855123 0.0025514308 0.0049410616 + 1014800 0.0039045587 0.0025898877 0.0045116627 + 1014900 0.0039530411 0.0025041728 0.0044498103 + 1015000 0.0052164742 0.0025878275 0.0051553109 + 1015100 0.0037975422 0.0022417212 0.004110824 + 1015200 0.0059088556 0.0022527878 0.0051610526 + 1015300 0.0044214116 0.002366024 0.0045421875 + 1015400 0.0037317535 0.0027976996 0.004634422 + 1015500 0.0056334429 0.0024407041 0.0052134142 + 1015600 0.0047252401 0.0027632169 0.005088921 + 1015700 0.0048131246 0.0028550838 0.0052240436 + 1015800 0.0039696199 0.0026109567 0.004564754 + 1015900 0.0052833784 0.0025924449 0.0051928577 + 1016000 0.0040654035 0.0028735682 0.0048745089 + 1016100 0.0040838074 0.0028431033 0.0048531022 + 1016200 0.007055341 0.0028789506 0.0063515012 + 1016300 0.0065955547 0.0027295654 0.005975815 + 1016400 0.0063679265 0.0026007381 0.0057349519 + 1016500 0.0035261923 0.0032998354 0.0050353832 + 1016600 0.00565319 0.0033438681 0.0061262976 + 1016700 0.0051877016 0.0034282309 0.0059815527 + 1016800 0.0045822119 0.0032877188 0.0055430262 + 1016900 0.0052128882 0.0028161425 0.0053818609 + 1017000 0.0061094799 0.0022271491 0.0052341588 + 1017100 0.0048128522 0.0021643862 0.0045332119 + 1017200 0.0041341478 0.0023965775 0.0044313534 + 1017300 0.004861161 0.0030056504 0.0053982531 + 1017400 0.0043091835 0.0025107886 0.0046317148 + 1017500 0.0064074082 0.0021442245 0.0052978707 + 1017600 0.0041004166 0.0024507208 0.0044688946 + 1017700 0.0046147676 0.0021990114 0.0044703424 + 1017800 0.0062978426 0.0019078119 0.0050075313 + 1017900 0.0039308586 0.0022156637 0.0041503832 + 1018000 0.0042533743 0.0025879166 0.0046813742 + 1018100 0.0060273296 0.0019700983 0.0049366746 + 1018200 0.0052618879 0.0022546608 0.0048444962 + 1018300 0.0058727698 0.0022800978 0.0051706017 + 1018400 0.0050656894 0.0023928571 0.0048861261 + 1018500 0.0049474227 0.0025969853 0.0050320449 + 1018600 0.006753281 0.0029732748 0.0062971553 + 1018700 0.0067815896 0.0026340429 0.0059718566 + 1018800 0.0051700244 0.0022675786 0.0048122 + 1018900 0.0040301288 0.0021687977 0.0041523767 + 1019000 0.0039022649 0.0024709112 0.0043915572 + 1019100 0.0041957549 0.0023506926 0.0044157907 + 1019200 0.0064048561 0.002129576 0.0052819661 + 1019300 0.0036714477 0.0023579966 0.0041650373 + 1019400 0.004949139 0.0021320484 0.0045679527 + 1019500 0.0039555393 0.0018034412 0.0037503082 + 1019600 0.0039237387 0.0018747247 0.0038059398 + 1019700 0.0058459751 0.0023337152 0.0052110311 + 1019800 0.0030055574 0.002700978 0.0041802758 + 1019900 0.0045948385 0.0026562661 0.0049177882 + 1020000 0.0037442323 0.0028082915 0.0046511558 + 1020100 0.0050822173 0.0023297736 0.0048311774 + 1020200 0.0047431634 0.0021846878 0.0045192135 + 1020300 0.0048174068 0.0020707747 0.0044418421 + 1020400 0.0052878167 0.0021668599 0.0047694572 + 1020500 0.0046586105 0.0021630136 0.0044559235 + 1020600 0.0041115518 0.0021562598 0.0041799142 + 1020700 0.0070692603 0.0021471224 0.005626524 + 1020800 0.0049966096 0.0020732028 0.0045324716 + 1020900 0.0057126558 0.0018681623 0.0046798601 + 1021000 0.0054867353 0.002212568 0.0049130705 + 1021100 0.0031660929 0.0024306364 0.0039889478 + 1021200 0.0046211302 0.0023213505 0.004595813 + 1021300 0.0051739286 0.0021331967 0.0046797396 + 1021400 0.0066759471 0.0020019665 0.0052877843 + 1021500 0.0055615571 0.0022180374 0.0049553663 + 1021600 0.0048452217 0.0022480855 0.004632843 + 1021700 0.0049729257 0.0019979276 0.0044455395 + 1021800 0.0056743075 0.0020786042 0.0048714274 + 1021900 0.0035081707 0.0027023469 0.0044290247 + 1022000 0.0042483712 0.0024500584 0.0045410536 + 1022100 0.0054522015 0.0019163385 0.0045998439 + 1022200 0.0051889018 0.001945688 0.0044996006 + 1022300 0.0056453622 0.0025589467 0.0053375234 + 1022400 0.0052698463 0.0028181365 0.005411889 + 1022500 0.0037795005 0.0031166408 0.0049768637 + 1022600 0.0048316383 0.0027854127 0.0051634847 + 1022700 0.0050223218 0.0026125368 0.0050844608 + 1022800 0.004507058 0.0026040657 0.0048223833 + 1022900 0.0039695077 0.0022136965 0.0041674385 + 1023000 0.0055012884 0.0019982476 0.004705913 + 1023100 0.0031998583 0.0021423046 0.0037172349 + 1023200 0.0030743204 0.0021726006 0.0036857427 + 1023300 0.0045831944 0.001844792 0.0041005831 + 1023400 0.0035512706 0.0018087445 0.0035566355 + 1023500 0.0043856175 0.0016421703 0.0038007165 + 1023600 0.0047541206 0.0015588046 0.0038987233 + 1023700 0.005342409 0.0019806762 0.0046101431 + 1023800 0.0052089716 0.0024834254 0.0050472161 + 1023900 0.0051995455 0.0029949422 0.0055540935 + 1024000 0.0056098248 0.0030495287 0.0058106144 + 1024100 0.0056642534 0.0025572257 0.0053451004 + 1024200 0.0046282702 0.0024859596 0.0047639363 + 1024300 0.0040953808 0.0025336156 0.0045493108 + 1024400 0.004206298 0.0023734888 0.0044437761 + 1024500 0.0046211817 0.002417612 0.0046920999 + 1024600 0.0056735951 0.0023509242 0.0051433968 + 1024700 0.0054664077 0.0019450977 0.0046355952 + 1024800 0.0046590403 0.0021779678 0.0044710892 + 1024900 0.0065578161 0.0021859776 0.0054136527 + 1025000 0.0039042053 0.0022559555 0.0041775565 + 1025100 0.0058996046 0.0024532852 0.0053569968 + 1025200 0.0058789711 0.0023141485 0.0052077046 + 1025300 0.003353529 0.0028383109 0.0044888759 + 1025400 0.00428017 0.0027336024 0.0048402486 + 1025500 0.0052123803 0.0026358664 0.0052013348 + 1025600 0.0041789987 0.0023090152 0.0043658661 + 1025700 0.0029325475 0.002124299 0.0035676622 + 1025800 0.0036000024 0.0020680759 0.0038399521 + 1025900 0.0043034191 0.002531819 0.0046499081 + 1026000 0.0068327855 0.0027075529 0.0060705645 + 1026100 0.0045502651 0.0027166403 0.0049562239 + 1026200 0.0060979761 0.0026784401 0.0056797877 + 1026300 0.0038960402 0.0027433396 0.0046609219 + 1026400 0.0041401031 0.002529271 0.004566978 + 1026500 0.0053055982 0.0025591734 0.0051705226 + 1026600 0.0043658678 0.0023006977 0.0044495233 + 1026700 0.0039513916 0.0023675073 0.0043123328 + 1026800 0.0069903036 0.0027282405 0.0061687806 + 1026900 0.0057826378 0.0032537872 0.0060999292 + 1027000 0.0057596853 0.0026638181 0.0054986632 + 1027100 0.005701483 0.002278483 0.0050846817 + 1027200 0.0061633312 0.0020357238 0.0050692383 + 1027300 0.003532871 0.0024438422 0.0041826771 + 1027400 0.0055014258 0.0022205979 0.0049283309 + 1027500 0.0046229601 0.0019521677 0.0042275309 + 1027600 0.006989442 0.0016118572 0.0050519732 + 1027700 0.0049635506 0.0019589396 0.0044019371 + 1027800 0.0056758478 0.0028576428 0.0056512242 + 1027900 0.00327597 0.003041804 0.0046541955 + 1028000 0.0037628282 0.0027102062 0.0045622232 + 1028100 0.0052724157 0.0027003378 0.0052953549 + 1028200 0.006080691 0.0028126407 0.0058054808 + 1028300 0.0065649944 0.0028255554 0.0060567635 + 1028400 0.0050121108 0.0033382707 0.005805169 + 1028500 0.0056826092 0.0032084631 0.0060053723 + 1028600 0.0042002579 0.002694079 0.0047613934 + 1028700 0.0066834895 0.002258917 0.005548447 + 1028800 0.0045922851 0.0022420059 0.0045022713 + 1028900 0.0048712045 0.0025183997 0.0049159457 + 1029000 0.0052646881 0.0033633473 0.005954561 + 1029100 0.0048625918 0.0029534062 0.0053467131 + 1029200 0.0057014379 0.0026375615 0.005443738 + 1029300 0.0048608271 0.0025414757 0.0049339141 + 1029400 0.0051651592 0.0023982954 0.0049405221 + 1029500 0.0045357622 0.0021540142 0.0043864597 + 1029600 0.0054649613 0.0019855178 0.0046753034 + 1029700 0.0046980766 0.0023724499 0.0046847845 + 1029800 0.0040914081 0.0030789948 0.0050927347 + 1029900 0.0047981622 0.0031598229 0.0055214184 + 1030000 0.0058612544 0.002776013 0.0056608491 + 1030100 0.0064202814 0.0024708739 0.0056308561 + 1030200 0.0050861532 0.0020215724 0.0045249134 + 1030300 0.0067062245 0.0018720248 0.0051727447 + 1030400 0.0049224867 0.0021800762 0.0046028626 + 1030500 0.0041215173 0.0022080898 0.0042366491 + 1030600 0.0041207036 0.0022127356 0.0042408944 + 1030700 0.0068400848 0.0023983496 0.0057649539 + 1030800 0.0044528346 0.0027687749 0.0049604045 + 1030900 0.0070479509 0.0023833474 0.0058522607 + 1031000 0.0049759289 0.0024377004 0.0048867904 + 1031100 0.0032327895 0.0028998531 0.0044909917 + 1031200 0.0048615806 0.0032685191 0.0056613283 + 1031300 0.005370078 0.0026277545 0.0052708398 + 1031400 0.0060750751 0.0021748115 0.0051648875 + 1031500 0.005379745 0.0017666943 0.0044145376 + 1031600 0.0045140212 0.0017730508 0.0039947956 + 1031700 0.0043665694 0.0020032745 0.0041524453 + 1031800 0.0041726974 0.0025691982 0.0046229477 + 1031900 0.0050521332 0.0026458068 0.0051324036 + 1032000 0.0053705352 0.0025099068 0.0051532171 + 1032100 0.007654016 0.0024031304 0.0061703413 + 1032200 0.0040749908 0.0025051007 0.0045107602 + 1032300 0.0046165709 0.0022078209 0.0044800394 + 1032400 0.0036751055 0.0020709356 0.0038797766 + 1032500 0.0033839086 0.0021195431 0.0037850606 + 1032600 0.0051066616 0.0021381895 0.0046516245 + 1032700 0.0050656637 0.0021250325 0.0046182889 + 1032800 0.0040431094 0.0025213176 0.0045112855 + 1032900 0.0066792729 0.0020981347 0.0053855893 + 1033000 0.004824984 0.0025398143 0.0049146111 + 1033100 0.0048996561 0.0025738096 0.0049853591 + 1033200 0.0050806143 0.0020029674 0.0045035822 + 1033300 0.0046642364 0.0018067472 0.004102426 + 1033400 0.0040403936 0.0016397664 0.0036283976 + 1033500 0.0053939136 0.0018843594 0.0045391763 + 1033600 0.005484246 0.0020506463 0.0047499236 + 1033700 0.0036159886 0.0020227503 0.0038024947 + 1033800 0.0050148351 0.0022406347 0.0047088738 + 1033900 0.0047444928 0.002296645 0.0046318251 + 1034000 0.0050312986 0.0027366299 0.0052129722 + 1034100 0.0063589272 0.0030381955 0.00616798 + 1034200 0.0067236977 0.0023092184 0.0056185384 + 1034300 0.0049680327 0.0026865028 0.0051317064 + 1034400 0.0051523917 0.0027076268 0.0052435695 + 1034500 0.0041234999 0.0024502128 0.0044797479 + 1034600 0.0061890826 0.0024552299 0.0055014189 + 1034700 0.0064972983 0.002343888 0.005541777 + 1034800 0.0050713399 0.0022881858 0.0047842359 + 1034900 0.0057461717 0.0024244137 0.0052526076 + 1035000 0.0034326384 0.0027770791 0.0044665808 + 1035100 0.0055798365 0.0024750063 0.0052213321 + 1035200 0.0056296425 0.0023080801 0.0050789198 + 1035300 0.0043531282 0.0019049271 0.0040474823 + 1035400 0.0043662512 0.0017353607 0.0038843749 + 1035500 0.0051634335 0.0016711893 0.0042125667 + 1035600 0.0048670405 0.0017633646 0.0041588611 + 1035700 0.0042291318 0.0020773239 0.0041588497 + 1035800 0.0045279649 0.0020359836 0.0042645913 + 1035900 0.0038965146 0.002398115 0.0043159307 + 1036000 0.0031336769 0.0027202013 0.0042625579 + 1036100 0.0042775167 0.0029523849 0.0050577251 + 1036200 0.00486144 0.0024360053 0.0048287453 + 1036300 0.0047166622 0.0024865987 0.0048080808 + 1036400 0.0038127293 0.0030536732 0.0049302509 + 1036500 0.0075581794 0.0028831116 0.006603153 + 1036600 0.0061946015 0.0031505143 0.0061994198 + 1036700 0.0067447053 0.0032815784 0.006601238 + 1036800 0.0034089842 0.0033389783 0.0050168377 + 1036900 0.0061686821 0.0027241569 0.0057603051 + 1037000 0.006077241 0.0019963662 0.0049875082 + 1037100 0.0039250741 0.0025042577 0.0044361301 + 1037200 0.0035140072 0.0030047125 0.0047342629 + 1037300 0.0029208577 0.0033796455 0.0048172552 + 1037400 0.0032743346 0.0031189712 0.0047305578 + 1037500 0.0050406973 0.0027320608 0.005213029 + 1037600 0.0057236087 0.0024500467 0.0052671354 + 1037700 0.0048327434 0.0025967861 0.004975402 + 1037800 0.0047829972 0.0028708018 0.0052249333 + 1037900 0.0047536848 0.0026018532 0.0049415574 + 1038000 0.0051140073 0.0025934792 0.0051105297 + 1038100 0.0049294402 0.0019130294 0.0043392383 + 1038200 0.0042351704 0.0021029265 0.0041874245 + 1038300 0.0040168887 0.0021304997 0.0041075621 + 1038400 0.0059694792 0.0019527881 0.0048908911 + 1038500 0.0043211159 0.0020289906 0.0041557898 + 1038600 0.0048248303 0.0020029572 0.0043776783 + 1038700 0.0058992733 0.0020822776 0.0049858262 + 1038800 0.0052211833 0.0021498538 0.004719655 + 1038900 0.004649293 0.0024529093 0.0047412332 + 1039000 0.0039990718 0.0029562236 0.0049245167 + 1039100 0.0042098056 0.0028912042 0.0049632179 + 1039200 0.0050850596 0.0025319277 0.0050347305 + 1039300 0.0045152753 0.0023520479 0.00457441 + 1039400 0.0062259963 0.0020046102 0.0050689678 + 1039500 0.0056779939 0.0022651941 0.0050598318 + 1039600 0.0044277367 0.0026782715 0.0048575482 + 1039700 0.0045023155 0.002354273 0.0045702564 + 1039800 0.0043247257 0.002163382 0.0042919579 + 1039900 0.0042062967 0.0022468955 0.0043171822 + 1040000 0.0050778196 0.0022544566 0.004753696 + 1040100 0.0050600155 0.0021103293 0.0046008057 + 1040200 0.0054684698 0.0018513772 0.0045428897 + 1040300 0.0053051289 0.001983815 0.0045949332 + 1040400 0.0044366112 0.0020872667 0.0042709113 + 1040500 0.0054431214 0.0020871011 0.0047661375 + 1040600 0.005470087 0.0021104266 0.0048027351 + 1040700 0.0056049725 0.0023505042 0.0051092016 + 1040800 0.0041774901 0.0026097938 0.0046659022 + 1040900 0.0051490801 0.0026461129 0.0051804257 + 1041000 0.004636891 0.002916294 0.0051985138 + 1041100 0.005797887 0.0028243474 0.0056779949 + 1041200 0.0062323018 0.0029256871 0.0059931481 + 1041300 0.0051272126 0.002661483 0.005185033 + 1041400 0.0049660447 0.0027418935 0.0051861187 + 1041500 0.0063268978 0.0028045148 0.0059185348 + 1041600 0.0032933076 0.002962613 0.0045835378 + 1041700 0.0047449892 0.0024270775 0.0047625019 + 1041800 0.0042863222 0.0020111771 0.0041208513 + 1041900 0.0031221317 0.0022484954 0.0037851696 + 1042000 0.0051021031 0.0021521482 0.0046633396 + 1042100 0.0063941336 0.0020735218 0.0052206345 + 1042200 0.0049537948 0.0022361872 0.0046743831 + 1042300 0.004606095 0.0024272725 0.0046943349 + 1042400 0.0039299391 0.0025002881 0.004434555 + 1042500 0.0061159768 0.0024378667 0.005448074 + 1042600 0.0061582222 0.0025559948 0.0055869949 + 1042700 0.0056590016 0.0028669022 0.005652192 + 1042800 0.0050548371 0.0032235904 0.005711518 + 1042900 0.0046886958 0.0028335908 0.0051413083 + 1043000 0.0053970903 0.0027777278 0.0054341082 + 1043100 0.0048160391 0.0024478811 0.0048182753 + 1043200 0.0051052775 0.0023440728 0.0048568266 + 1043300 0.0041327156 0.0028550155 0.0048890865 + 1043400 0.0042999566 0.0031370727 0.0052534575 + 1043500 0.0048790912 0.0033641257 0.0057655534 + 1043600 0.0056772384 0.0025724774 0.0053667431 + 1043700 0.0052546233 0.0025480548 0.0051343147 + 1043800 0.0066995902 0.0024847741 0.0057822287 + 1043900 0.0049228817 0.0023839181 0.0048068989 + 1044000 0.0038825555 0.0026640037 0.004574949 + 1044100 0.0046232202 0.0025700351 0.0048455263 + 1044200 0.0054467126 0.0023249683 0.0050057722 + 1044300 0.0055569048 0.0022421717 0.0049772108 + 1044400 0.0054774512 0.0022269166 0.0049228496 + 1044500 0.005297665 0.0021177744 0.0047252189 + 1044600 0.004792443 0.0017570498 0.0041158304 + 1044700 0.0043103617 0.0018999688 0.004021475 + 1044800 0.0047607025 0.0020687055 0.0044118637 + 1044900 0.005188426 0.0023009111 0.0048545896 + 1045000 0.0047132412 0.0024222409 0.0047420393 + 1045100 0.0048284502 0.0022050733 0.0045815761 + 1045200 0.0047990478 0.0022127995 0.0045748308 + 1045300 0.0036429103 0.0024676326 0.0042606275 + 1045400 0.0051774784 0.0024435297 0.0049918198 + 1045500 0.003526419 0.0025120435 0.0042477028 + 1045600 0.004052625 0.0024949063 0.0044895576 + 1045700 0.0061855437 0.0019188763 0.0049633236 + 1045800 0.0056353166 0.0023585587 0.0051321911 + 1045900 0.0047320758 0.0025462735 0.0048753421 + 1046000 0.0039974744 0.0022675962 0.0042351032 + 1046100 0.0042089129 0.0021978262 0.0042694005 + 1046200 0.0041472096 0.002726829 0.0047680337 + 1046300 0.0042897623 0.0031143064 0.0052256738 + 1046400 0.0032148421 0.0031788379 0.004761143 + 1046500 0.0060073043 0.0023539846 0.0053107047 + 1046600 0.0059217441 0.0019800292 0.0048946376 + 1046700 0.0070923465 0.001995713 0.0054864773 + 1046800 0.0046101133 0.0021113562 0.0043803963 + 1046900 0.0040281716 0.0021943662 0.0041769819 + 1047000 0.00494774 0.0023237031 0.0047589189 + 1047100 0.0063487124 0.0021444182 0.0052691751 + 1047200 0.0046085803 0.0024751562 0.0047434418 + 1047300 0.0054211418 0.0025821576 0.0052503759 + 1047400 0.0043964793 0.0029702128 0.0051341049 + 1047500 0.0038873134 0.0032882296 0.0052015166 + 1047600 0.0048863502 0.0030063797 0.0054113802 + 1047700 0.0048951105 0.002709894 0.0051192062 + 1047800 0.0041848377 0.0025860244 0.0046457492 + 1047900 0.0048545431 0.0025313172 0.0049206626 + 1048000 0.0045360574 0.002661593 0.0048941837 + 1048100 0.0059789344 0.0024387825 0.0053815393 + 1048200 0.0051828945 0.0021444717 0.0046954275 + 1048300 0.0045380715 0.002409739 0.0046433211 + 1048400 0.0052356153 0.0020703302 0.0046472346 + 1048500 0.0051557175 0.0024810119 0.0050185916 + 1048600 0.0045977536 0.0027847469 0.0050477037 + 1048700 0.0048478097 0.0023566152 0.0047426465 + 1048800 0.0055093782 0.0024929778 0.0052046249 + 1048900 0.0039553153 0.0024438856 0.0043906424 + 1049000 0.0040823259 0.0026089679 0.0046182377 + 1049100 0.0076277943 0.0026128366 0.0063671416 + 1049200 0.0042105489 0.0031028121 0.0051751916 + 1049300 0.0041216467 0.0027669077 0.0047955307 + 1049400 0.0062214385 0.002509011 0.0055711253 + 1049500 0.0054882658 0.0032558477 0.0059571035 + 1049600 0.0057038885 0.0034858542 0.0062932369 + 1049700 0.0041505135 0.003560942 0.0056037729 + 1049800 0.0057747316 0.0037821635 0.0066244142 + 1049900 0.0057856154 0.0032717652 0.0061193727 + 1050000 0.0042047871 0.0024100016 0.0044795452 + 1050100 0.0036964469 0.0024784851 0.0042978301 + 1050200 0.0060601747 0.0028347601 0.0058175023 + 1050300 0.0068647019 0.0030168639 0.0063955844 + 1050400 0.0055108827 0.0032336446 0.0059460322 + 1050500 0.0059029714 0.0031163664 0.0060217351 + 1050600 0.0045831405 0.0034041692 0.0056599336 + 1050700 0.0056225022 0.0028948311 0.0056621564 + 1050800 0.0054385373 0.0034187587 0.0060955387 + 1050900 0.0041420812 0.0034765905 0.0055152711 + 1051000 0.0054202714 0.0033764429 0.0060442327 + 1051100 0.0070931713 0.0029071698 0.00639834 + 1051200 0.0062197505 0.0029072753 0.0059685588 + 1051300 0.005773752 0.0035899535 0.0064317221 + 1051400 0.0053251736 0.0040512836 0.0066722674 + 1051500 0.0060711831 0.0039747321 0.0069628925 + 1051600 0.0050026212 0.0039654476 0.0064276752 + 1051700 0.0054554154 0.0032540198 0.0059391071 + 1051800 0.0062104722 0.0029732962 0.0060300129 + 1051900 0.0050860198 0.0032166721 0.0057199475 + 1052000 0.005618611 0.0033127191 0.0060781292 + 1052100 0.0057510475 0.0031361652 0.0059667589 + 1052200 0.0053800618 0.0028166539 0.0054646531 + 1052300 0.005934636 0.0026446472 0.0055656008 + 1052400 0.0048657105 0.0030668855 0.0054617274 + 1052500 0.0048261271 0.0031663667 0.0055417261 + 1052600 0.0053508985 0.0027302487 0.005363894 + 1052700 0.0043122647 0.0022299637 0.0043524065 + 1052800 0.004156491 0.0021443532 0.0041901261 + 1052900 0.0064610133 0.0019927145 0.0051727445 + 1053000 0.0056900592 0.0021618251 0.0049624011 + 1053100 0.0050738083 0.0023582383 0.0048555034 + 1053200 0.005169665 0.0024546964 0.004999141 + 1053300 0.0048086664 0.0029187332 0.0052854987 + 1053400 0.0068823741 0.0025032829 0.0058907014 + 1053500 0.0062402815 0.0022958385 0.005367227 + 1053600 0.0045801043 0.0026869731 0.0049412432 + 1053700 0.0049426641 0.00290874 0.0053414575 + 1053800 0.0071865543 0.0025369435 0.0060740758 + 1053900 0.0066551745 0.0022308572 0.0055064508 + 1054000 0.0056791594 0.0024123703 0.0052075816 + 1054100 0.0048040372 0.0026697991 0.0050342862 + 1054200 0.0065363305 0.0026876027 0.0059047029 + 1054300 0.0052406243 0.0027342756 0.0053136454 + 1054400 0.0040328958 0.0026811586 0.0046660995 + 1054500 0.0068565851 0.0019411716 0.005315897 + 1054600 0.0061828038 0.0019754481 0.0050185469 + 1054700 0.0057490897 0.0023759729 0.005205603 + 1054800 0.0054780946 0.0025889696 0.0052852193 + 1054900 0.0031630598 0.0028625985 0.004419417 + 1055000 0.0046252846 0.0030009133 0.0052774205 + 1055100 0.0057295902 0.0029710117 0.0057910443 + 1055200 0.0039852723 0.0026451163 0.0046066175 + 1055300 0.0045792635 0.0025946253 0.0048484816 + 1055400 0.0050512772 0.0024243108 0.0049104864 + 1055500 0.0046710081 0.0023984222 0.004697434 + 1055600 0.004064158 0.002640357 0.0046406848 + 1055700 0.0043403858 0.0022113994 0.004347683 + 1055800 0.0047893124 0.0023132678 0.0046705075 + 1055900 0.0049643701 0.0021176158 0.0045610167 + 1056000 0.0050560403 0.0020733767 0.0045618965 + 1056100 0.003822777 0.0024153468 0.0042968699 + 1056200 0.0053453124 0.0024334823 0.0050643782 + 1056300 0.0054654944 0.0023942621 0.0050843101 + 1056400 0.0061418846 0.0019636694 0.0049866283 + 1056500 0.0078055518 0.0020010399 0.0058428349 + 1056600 0.005828319 0.0023465097 0.0052151355 + 1056700 0.0040936119 0.0023131712 0.0043279957 + 1056800 0.0049924181 0.0019591194 0.0044163251 + 1056900 0.0050563712 0.0017106101 0.0041992928 + 1057000 0.0054691798 0.0019355926 0.0046274545 + 1057100 0.0055072846 0.0025524802 0.0052630968 + 1057200 0.0047293493 0.0026997224 0.005027449 + 1057300 0.006766143 0.0022512997 0.0055815106 + 1057400 0.0053911503 0.0024351642 0.0050886209 + 1057500 0.0059934543 0.0032983108 0.0062482141 + 1057600 0.0041526128 0.0032558743 0.0052997384 + 1057700 0.0029271056 0.0027670944 0.0042077792 + 1057800 0.0049712062 0.0023654439 0.0048122094 + 1057900 0.0068825354 0.0017792863 0.0051667842 + 1058000 0.0038872595 0.0021290149 0.0040422754 + 1058100 0.0049173235 0.0018035509 0.004223796 + 1058200 0.0049732258 0.0022749909 0.0047227504 + 1058300 0.0052963958 0.0026782333 0.0052850531 + 1058400 0.0063698896 0.0025766077 0.0057117878 + 1058500 0.0038892637 0.0026545892 0.0045688361 + 1058600 0.0048697182 0.0028129428 0.0052097572 + 1058700 0.0058980224 0.0026557009 0.0055586337 + 1058800 0.0053079912 0.0023920218 0.0050045487 + 1058900 0.0050286067 0.0018416637 0.0043166811 + 1059000 0.0041795491 0.0022315536 0.0042886754 + 1059100 0.0058059944 0.002452839 0.0053104768 + 1059200 0.003888127 0.0024895906 0.0044032781 + 1059300 0.0046750972 0.0028080422 0.0051090666 + 1059400 0.0053055211 0.0031517514 0.0057630625 + 1059500 0.0058755794 0.0033107276 0.0062026144 + 1059600 0.0055786412 0.0026934351 0.0054391726 + 1059700 0.0061653947 0.0021073495 0.0051418797 + 1059800 0.0051092848 0.0022944385 0.0048091646 + 1059900 0.0043441472 0.0025713605 0.0047094955 + 1060000 0.0045837812 0.0023739797 0.0046300595 + 1060100 0.0043629392 0.002312605 0.0044599891 + 1060200 0.0055347271 0.0023507322 0.0050748557 + 1060300 0.0043194338 0.002663673 0.0047896444 + 1060400 0.0046859735 0.0027593042 0.0050656818 + 1060500 0.0056984767 0.0025233456 0.0053280646 + 1060600 0.0057564598 0.0027905443 0.0056238019 + 1060700 0.0041918037 0.0031057917 0.005168945 + 1060800 0.0070834384 0.0026294246 0.0061158044 + 1060900 0.0055551728 0.0019980861 0.0047322727 + 1061000 0.0046477009 0.0023674057 0.004654946 + 1061100 0.0058145986 0.002421291 0.0052831637 + 1061200 0.0050784454 0.0023578108 0.0048573581 + 1061300 0.0041811937 0.0023800504 0.0044379816 + 1061400 0.0047079893 0.0024121653 0.0047293787 + 1061500 0.0045711304 0.0023126703 0.0045625235 + 1061600 0.0060801668 0.0021770771 0.0051696593 + 1061700 0.0050183147 0.0021265805 0.0045965322 + 1061800 0.0062643977 0.002293271 0.0053765292 + 1061900 0.0050294164 0.002248784 0.0047241999 + 1062000 0.0043932399 0.0025695124 0.0047318102 + 1062100 0.0053972384 0.0026090754 0.0052655287 + 1062200 0.0049893665 0.0023665266 0.0048222304 + 1062300 0.0061404767 0.0023090531 0.005331319 + 1062400 0.0052303118 0.0023985816 0.0049728756 + 1062500 0.0048996138 0.0028252861 0.0052368147 + 1062600 0.0039666964 0.0033605008 0.0053128592 + 1062700 0.0054994412 0.00319705 0.0059038062 + 1062800 0.0059722355 0.0027228091 0.0056622687 + 1062900 0.0043496912 0.0023798889 0.0045207526 + 1063000 0.0039705444 0.0024176681 0.0043719204 + 1063100 0.005567729 0.0022576682 0.0049980348 + 1063200 0.0053774795 0.0024144739 0.0050612021 + 1063300 0.0051704325 0.0022874457 0.004832268 + 1063400 0.0040351031 0.002310991 0.0042970183 + 1063500 0.0048870978 0.002130999 0.0045363674 + 1063600 0.0042309172 0.0023871232 0.0044695277 + 1063700 0.005053422 0.0024658746 0.0049531057 + 1063800 0.0056475084 0.0028286416 0.0056082746 + 1063900 0.0039982268 0.0029188803 0.0048867576 + 1064000 0.0069210301 0.0029448261 0.0063512706 + 1064100 0.0046528209 0.0028776774 0.0051677377 + 1064200 0.0036073156 0.0027160184 0.0044914941 + 1064300 0.0056696787 0.0024033492 0.0051938942 + 1064400 0.0056701401 0.0021075391 0.0048983112 + 1064500 0.0045408005 0.0018719118 0.0041068371 + 1064600 0.004725092 0.0019959201 0.0043215514 + 1064700 0.006284125 0.0022605886 0.0053535563 + 1064800 0.0064287862 0.0023742947 0.0055384629 + 1064900 0.0055662564 0.0025012275 0.0052408693 + 1065000 0.0064851171 0.0028555826 0.0060474762 + 1065100 0.0056197366 0.0029586835 0.0057246476 + 1065200 0.0057245445 0.0028671029 0.0056846521 + 1065300 0.0047337282 0.0029046823 0.0052345641 + 1065400 0.0063285799 0.0027092138 0.0058240618 + 1065500 0.0043268792 0.0029769128 0.0051065487 + 1065600 0.0054257702 0.0031061809 0.0057766771 + 1065700 0.0054664973 0.0031297433 0.005820285 + 1065800 0.0040822963 0.0034954676 0.0055047229 + 1065900 0.0049137945 0.0032967998 0.005715308 + 1066000 0.0058926799 0.0028143017 0.0057146051 + 1066100 0.0056563695 0.0027499484 0.0055339427 + 1066200 0.0062467356 0.0028537012 0.0059282664 + 1066300 0.0073693688 0.0026044 0.0062315112 + 1066400 0.0060120514 0.0026182466 0.0055773032 + 1066500 0.0040973823 0.0026165032 0.0046331835 + 1066600 0.0039854163 0.0031027607 0.0050643327 + 1066700 0.0047397458 0.0027503869 0.0050832305 + 1066800 0.00590011 0.0021123173 0.0050162777 + 1066900 0.0037940229 0.001928945 0.0037963157 + 1067000 0.0043354963 0.0020437126 0.0041775896 + 1067100 0.0047574423 0.0022942643 0.004635818 + 1067200 0.0050872629 0.002232211 0.0047360983 + 1067300 0.0054004118 0.00204635 0.0047043652 + 1067400 0.0054064917 0.0022174827 0.0048784903 + 1067500 0.0036920924 0.0026552233 0.004472425 + 1067600 0.0049692357 0.0030407846 0.0054865803 + 1067700 0.0054789427 0.0028102312 0.0055068983 + 1067800 0.0043502847 0.002737795 0.0048789508 + 1067900 0.0057116591 0.0025866331 0.0053978403 + 1068000 0.0047162985 0.0027443836 0.0050656868 + 1068100 0.0046957898 0.0031324129 0.005443622 + 1068200 0.0063257767 0.0035651848 0.006678653 + 1068300 0.0037195518 0.0038397049 0.0056704218 + 1068400 0.004852633 0.003077699 0.0054661043 + 1068500 0.0058535828 0.0027935501 0.0056746104 + 1068600 0.0047325461 0.0027083081 0.0050376081 + 1068700 0.0044167822 0.0028614135 0.0050352985 + 1068800 0.0047446084 0.0028989832 0.0052342202 + 1068900 0.0063512833 0.002654074 0.0057800963 + 1069000 0.0047793122 0.0024758412 0.004828159 + 1069100 0.0051811346 0.0025445125 0.0050946022 + 1069200 0.0047010716 0.0028835242 0.0051973329 + 1069300 0.0052618791 0.0027086704 0.0052985015 + 1069400 0.004888299 0.0026074289 0.0050133885 + 1069500 0.0044375186 0.0027279184 0.0049120096 + 1069600 0.0052230937 0.0022720115 0.0048427529 + 1069700 0.0072007172 0.0025756473 0.0061197503 + 1069800 0.0050286119 0.0030640604 0.0055390803 + 1069900 0.0085755702 0.002620021 0.0068408095 + 1070000 0.0063898418 0.0024859562 0.0056309565 + 1070100 0.0037901848 0.0026965068 0.0045619884 + 1070200 0.0053735462 0.0022948244 0.0049396167 + 1070300 0.0049299673 0.0023826327 0.004809101 + 1070400 0.0056260718 0.0027134328 0.005482515 + 1070500 0.0047629685 0.0033598436 0.0057041172 + 1070600 0.003668694 0.0032343632 0.0050400485 + 1070700 0.0043588321 0.0027665365 0.0049118992 + 1070800 0.0045553223 0.0025374489 0.0047795216 + 1070900 0.0049787867 0.0025848164 0.005035313 + 1071000 0.0055645677 0.0025540902 0.0052929009 + 1071100 0.0060909405 0.0021403627 0.0051382474 + 1071200 0.0045806933 0.0018936821 0.0041482421 + 1071300 0.0032846087 0.0022340657 0.0038507091 + 1071400 0.0058318034 0.0024500427 0.0053203835 + 1071500 0.0045498135 0.0026834445 0.0049228058 + 1071600 0.0039651275 0.002807732 0.0047593182 + 1071700 0.0049895963 0.0024876941 0.0049435111 + 1071800 0.0048134742 0.0024926215 0.0048617533 + 1071900 0.0056370171 0.0026275974 0.0054020668 + 1072000 0.0050050004 0.0026910944 0.0051544931 + 1072100 0.0044595304 0.003013443 0.0052083681 + 1072200 0.0038933253 0.0029741407 0.0048903867 + 1072300 0.0041948316 0.0027654225 0.0048300661 + 1072400 0.0049727132 0.0027848273 0.0052323345 + 1072500 0.0050778093 0.0025209376 0.0050201718 + 1072600 0.0041405667 0.0022033216 0.0042412568 + 1072700 0.0057947264 0.002025359 0.0048774509 + 1072800 0.0052722166 0.0021427002 0.0047376193 + 1072900 0.005475667 0.0019976495 0.0046927043 + 1073000 0.0038378647 0.002153581 0.00404253 + 1073100 0.0032542165 0.0022408197 0.0038425044 + 1073200 0.0049229257 0.0018017672 0.0042247697 + 1073300 0.0035415818 0.0015470817 0.0032902039 + 1073400 0.0036064963 0.0015745929 0.0033496653 + 1073500 0.0039269445 0.0016751601 0.0036079531 + 1073600 0.0050532556 0.0018794 0.0043665493 + 1073700 0.0029316432 0.002229927 0.0036728451 + 1073800 0.0051061941 0.0021754033 0.0046886082 + 1073900 0.0046971027 0.0020389008 0.004350756 + 1074000 0.0041729655 0.0018001895 0.0038540709 + 1074100 0.0052385474 0.0024877395 0.005066087 + 1074200 0.0043502878 0.0026966594 0.0048378166 + 1074300 0.0057408911 0.0018698347 0.0046954295 + 1074400 0.0057025576 0.0017746376 0.0045813652 + 1074500 0.0043141202 0.0020345196 0.0041578756 + 1074600 0.0061410207 0.0022506193 0.0052731529 + 1074700 0.0055733968 0.0027841709 0.0055273272 + 1074800 0.0045372683 0.0032624646 0.0054956513 + 1074900 0.0040977405 0.0033103539 0.0053272105 + 1075000 0.0052420929 0.0031054134 0.005685506 + 1075100 0.0051580972 0.0030433218 0.0055820728 + 1075200 0.0047594115 0.0027162161 0.005058739 + 1075300 0.0050802329 0.0028596573 0.0053600844 + 1075400 0.0065437208 0.0022655901 0.0054863277 + 1075500 0.005183424 0.0020029541 0.0045541706 + 1075600 0.0043149449 0.0018319177 0.0039556797 + 1075700 0.0062130022 0.0016198308 0.0046777929 + 1075800 0.0053953611 0.0015267456 0.0041822749 + 1075900 0.0047669979 0.0016072218 0.0039534786 + 1076000 0.0047293632 0.0020709283 0.0043986617 + 1076100 0.0035504664 0.0026779538 0.004425449 + 1076200 0.0059223142 0.0027265862 0.0056414752 + 1076300 0.006096387 0.0026496305 0.005650196 + 1076400 0.0041063944 0.0021349173 0.0041560333 + 1076500 0.0044300915 0.0019323655 0.0041128011 + 1076600 0.0060205277 0.0021861268 0.0051493552 + 1076700 0.0043351276 0.0018373869 0.0039710825 + 1076800 0.0050224661 0.0019119707 0.0043839657 + 1076900 0.00391171 0.0020561677 0.0039814625 + 1077000 0.0059798301 0.0019964244 0.004939622 + 1077100 0.0031892114 0.0021507743 0.0037204643 + 1077200 0.0034359303 0.0022751959 0.0039663178 + 1077300 0.005047831 0.0024452014 0.0049296807 + 1077400 0.0043738481 0.0030225937 0.0051753471 + 1077500 0.0049582207 0.0031882872 0.0056286615 + 1077600 0.0053649063 0.002724706 0.0053652458 + 1077700 0.0037679264 0.0023930301 0.0042475564 + 1077800 0.0049571704 0.0022785097 0.004718367 + 1077900 0.005416246 0.0025695818 0.0052353904 + 1078000 0.004467054 0.0030290654 0.0052276935 + 1078100 0.0046475494 0.0028718292 0.0051592949 + 1078200 0.0055450946 0.0022910815 0.0050203078 + 1078300 0.0046436016 0.0022666217 0.0045521443 + 1078400 0.0055005947 0.0023517169 0.0050590409 + 1078500 0.0056130485 0.0023138668 0.0050765391 + 1078600 0.005605679 0.00220806 0.0049671051 + 1078700 0.0048962771 0.0025550052 0.0049648915 + 1078800 0.0036046679 0.003271447 0.0050456195 + 1078900 0.0045646665 0.0029417218 0.0051883936 + 1079000 0.0040934077 0.0025125144 0.0045272385 + 1079100 0.0046760352 0.0027001637 0.0050016498 + 1079200 0.0059155935 0.0025063829 0.0054179641 + 1079300 0.0071362612 0.0026083804 0.0061207589 + 1079400 0.005938656 0.0027956073 0.0057185395 + 1079500 0.005592672 0.0026282391 0.0053808823 + 1079600 0.003896231 0.0026444981 0.0045621743 + 1079700 0.0047958225 0.0027565223 0.0051169661 + 1079800 0.006112223 0.0027491265 0.0057574862 + 1079900 0.0065473326 0.0027224073 0.0059449226 + 1080000 0.0048917781 0.0027805786 0.0051882507 + 1080100 0.0052670537 0.002935789 0.005528167 + 1080200 0.0043095396 0.0031971787 0.0053182802 + 1080300 0.0060951897 0.0026964138 0.00569639 + 1080400 0.0045032997 0.002198183 0.0044146508 + 1080500 0.0038001125 0.0020764719 0.0039468398 + 1080600 0.0048871704 0.0021575469 0.0045629511 + 1080700 0.0054363121 0.0024862923 0.0051619772 + 1080800 0.0044893367 0.0024585634 0.0046681587 + 1080900 0.0048832574 0.0027283429 0.0051318212 + 1081000 0.0047755718 0.002959496 0.0053099727 + 1081100 0.004872503 0.0024630054 0.0048611905 + 1081200 0.0055966963 0.0022451393 0.0049997633 + 1081300 0.0042412156 0.0028958994 0.0049833727 + 1081400 0.0038990521 0.0037099269 0.0056289915 + 1081500 0.0042750356 0.0035788489 0.005682968 + 1081600 0.006615429 0.0028688493 0.0061248808 + 1081700 0.0056996149 0.0026226931 0.0054279723 + 1081800 0.0051053415 0.0029649529 0.0054777382 + 1081900 0.0048595941 0.0034337354 0.0058255669 + 1082000 0.0062193259 0.0034325703 0.0064936448 + 1082100 0.0048331093 0.0035249084 0.0059037044 + 1082200 0.0051151239 0.0034046527 0.0059222527 + 1082300 0.00493154 0.0030745955 0.0055018379 + 1082400 0.0044693479 0.0031159836 0.0053157408 + 1082500 0.0058638532 0.0028169761 0.0057030913 + 1082600 0.0041780913 0.0025863866 0.004642791 + 1082700 0.0037747212 0.0024670411 0.0043249117 + 1082800 0.0053714275 0.0021659715 0.004809721 + 1082900 0.0061908659 0.0021121818 0.0051592486 + 1083000 0.0051041448 0.0024815937 0.00499379 + 1083100 0.0048362885 0.0024887335 0.0048690943 + 1083200 0.0053731486 0.0022247408 0.0048693373 + 1083300 0.0052460965 0.0017187401 0.0043008032 + 1083400 0.0050109214 0.0020012092 0.0044675221 + 1083500 0.0068066228 0.0024791764 0.005829311 + 1083600 0.0049458772 0.0024121554 0.0048464543 + 1083700 0.0044916069 0.0025901572 0.00480087 + 1083800 0.004923253 0.0026081468 0.0050313103 + 1083900 0.0048735484 0.0028020698 0.0052007694 + 1084000 0.0041624025 0.0029322659 0.0049809484 + 1084100 0.006205252 0.0031182059 0.0061723534 + 1084200 0.0037106073 0.0030484985 0.004874813 + 1084300 0.0053533091 0.0026747679 0.0053095998 + 1084400 0.0056121921 0.0029517881 0.0057140388 + 1084500 0.0046431639 0.0030992712 0.0053845785 + 1084600 0.0063682974 0.002592441 0.0057268374 + 1084700 0.0042805742 0.0022285835 0.0043354286 + 1084800 0.0027032657 0.002303809 0.0036343226 + 1084900 0.0039309322 0.002455015 0.0043897707 + 1085000 0.0044096026 0.0027970884 0.0049674397 + 1085100 0.0052117026 0.0029502571 0.005515392 + 1085200 0.0064769424 0.0029959552 0.0061838253 + 1085300 0.0043720636 0.0036096296 0.0057615047 + 1085400 0.0054703209 0.0034989211 0.0061913447 + 1085500 0.0038822012 0.0035048785 0.0054156494 + 1085600 0.0052788723 0.0029675189 0.0055657139 + 1085700 0.0045274179 0.0027299671 0.0049583056 + 1085800 0.0044645668 0.002825656 0.00502306 + 1085900 0.0043675785 0.0030463151 0.0051959826 + 1086000 0.0059505616 0.0027220478 0.0056508398 + 1086100 0.0040700521 0.0026931771 0.0046964059 + 1086200 0.0044977942 0.0031799124 0.0053936705 + 1086300 0.0066923989 0.0028642334 0.0061581484 + 1086400 0.0043081672 0.0029675082 0.0050879342 + 1086500 0.0043837507 0.0032079369 0.0053655642 + 1086600 0.0050099159 0.0031628159 0.0056286338 + 1086700 0.0060057466 0.0032024532 0.0061584066 + 1086800 0.0058924724 0.003201816 0.0061020172 + 1086900 0.004208976 0.0027094985 0.0047811039 + 1087000 0.0043129066 0.002510114 0.0046328727 + 1087100 0.0052634365 0.0025257353 0.0051163329 + 1087200 0.0050161221 0.0028914861 0.0053603586 + 1087300 0.0042362844 0.0032639546 0.0053490008 + 1087400 0.0066333219 0.0032997231 0.0065645612 + 1087500 0.0047676373 0.003316343 0.0056629144 + 1087600 0.0054587979 0.0034528468 0.0061395988 + 1087700 0.0056237402 0.0033054877 0.0060734223 + 1087800 0.0065933117 0.0032501976 0.0064953432 + 1087900 0.0040468073 0.003255591 0.0052473789 + 1088000 0.0074887149 0.0028797848 0.0065656367 + 1088100 0.0054764936 0.0027159713 0.005411433 + 1088200 0.0056946021 0.0024425464 0.0052453583 + 1088300 0.0060849286 0.0025722701 0.0055671959 + 1088400 0.0051000428 0.0028576697 0.005367847 + 1088500 0.0051255179 0.0028039101 0.005326626 + 1088600 0.0038954711 0.0029710128 0.004888315 + 1088700 0.0034305855 0.0027619242 0.0044504155 + 1088800 0.0037428918 0.0027496111 0.0045918157 + 1088900 0.0040431797 0.0028494559 0.0048394584 + 1089000 0.0035803629 0.0026116108 0.0043738207 + 1089100 0.0053684429 0.0028894118 0.0055316923 + 1089200 0.0044596094 0.002952058 0.005147022 + 1089300 0.0043188878 0.0030839375 0.0052096401 + 1089400 0.0052916548 0.0031374219 0.0057419083 + 1089500 0.0046807865 0.0034781569 0.0057819816 + 1089600 0.0048251677 0.0038108961 0.0061857833 + 1089700 0.0034556163 0.0037571051 0.0054579162 + 1089800 0.0074133481 0.0028065438 0.006455301 + 1089900 0.0046841111 0.0024983653 0.0048038263 + 1090000 0.0051884507 0.0031555509 0.0057092415 + 1090100 0.0054482173 0.0034610661 0.0061426105 + 1090200 0.0059911472 0.0025684533 0.0055172211 + 1090300 0.0040312954 0.0026682576 0.0046524108 + 1090400 0.0052286887 0.0032912613 0.0058647565 + 1090500 0.0047397058 0.0033986175 0.0057314414 + 1090600 0.0058992293 0.0029277967 0.0058313236 + 1090700 0.0063641369 0.0030260694 0.006158418 + 1090800 0.0049009632 0.0033877119 0.0057999047 + 1090900 0.0047493294 0.0035438112 0.0058813718 + 1091000 0.0044137633 0.0039778149 0.006150214 + 1091100 0.0047881064 0.0040988497 0.0064554958 + 1091200 0.0070672605 0.0039443578 0.007422775 + 1091300 0.004157013 0.0034959657 0.0055419955 + 1091400 0.0058447547 0.0029215613 0.0057982765 + 1091500 0.0049583333 0.0027792141 0.0052196438 + 1091600 0.0045865089 0.0030769706 0.0053343929 + 1091700 0.0053466059 0.003346286 0.0059778186 + 1091800 0.0044793431 0.0037073938 0.0059120705 + 1091900 0.0043111727 0.0031683281 0.0052902334 + 1092000 0.0047856628 0.0026660719 0.0050215153 + 1092100 0.0057388409 0.002815794 0.0056403797 + 1092200 0.0045472782 0.0031640204 0.0054021338 + 1092300 0.0038222552 0.0029303328 0.004811599 + 1092400 0.0047550644 0.0030006651 0.0053410483 + 1092500 0.0061579705 0.0027703337 0.0058012098 + 1092600 0.0045403249 0.0031470111 0.0053817022 + 1092700 0.0060487987 0.002794692 0.0057718351 + 1092800 0.0055724709 0.0024135542 0.0051562547 + 1092900 0.0053899147 0.0022472497 0.0049000983 + 1093000 0.0043028728 0.002771622 0.0048894422 + 1093100 0.0053187592 0.0026675746 0.0052854014 + 1093200 0.0052470305 0.0024737278 0.0050562506 + 1093300 0.005454694 0.0026662751 0.0053510074 + 1093400 0.0039611401 0.0027646924 0.004714316 + 1093500 0.0048669861 0.0033328893 0.005728359 + 1093600 0.0037383672 0.0031549245 0.004994902 + 1093700 0.0048840972 0.0028624802 0.0052663718 + 1093800 0.0047558044 0.0028671691 0.0052079166 + 1093900 0.0031406878 0.0028045363 0.0043503436 + 1094000 0.0040212351 0.0024880253 0.0044672269 + 1094100 0.0047756878 0.0024108135 0.0047613473 + 1094200 0.0042974814 0.002855119 0.0049702857 + 1094300 0.004245122 0.0035434008 0.0056327968 + 1094400 0.0047275343 0.0033492979 0.0056761312 + 1094500 0.0043017978 0.0034618206 0.0055791117 + 1094600 0.0052820172 0.003350155 0.0059498979 + 1094700 0.005846617 0.0033122682 0.0061899 + 1094800 0.0076372806 0.0033354068 0.0070943809 + 1094900 0.0075696499 0.0028223891 0.0065480762 + 1095000 0.0058048741 0.0030054632 0.0058625497 + 1095100 0.006514947 0.0031572997 0.0063638752 + 1095200 0.0067973185 0.0027644498 0.006110005 + 1095300 0.0052075666 0.0026829768 0.005246076 + 1095400 0.0050859841 0.0026749356 0.0051781934 + 1095500 0.0047844675 0.0027987008 0.0051535559 + 1095600 0.004964642 0.0031577504 0.0056012851 + 1095700 0.0063751853 0.0033985748 0.0065363613 + 1095800 0.0052637185 0.0029777664 0.0055685029 + 1095900 0.0048437485 0.0021287915 0.004512824 + 1096000 0.0071799037 0.0019550673 0.0054889261 + 1096100 0.0042820795 0.0027420654 0.0048496514 + 1096200 0.0042616034 0.0031958372 0.0052933451 + 1096300 0.004546308 0.0027355321 0.0049731681 + 1096400 0.005880272 0.0027142967 0.005608493 + 1096500 0.0052145024 0.0029664608 0.0055329737 + 1096600 0.006097337 0.0029990159 0.0060000489 + 1096700 0.0061077747 0.0030041845 0.0060103549 + 1096800 0.0053759658 0.0026647462 0.0053107294 + 1096900 0.004641537 0.0025205632 0.0048050697 + 1097000 0.0043981788 0.0022997894 0.004464518 + 1097100 0.0061608046 0.0023072473 0.0053395183 + 1097200 0.0052842569 0.0027276479 0.0053284931 + 1097300 0.0061853197 0.0031356541 0.0061799912 + 1097400 0.0046691285 0.0027509386 0.0050490253 + 1097500 0.0048377639 0.0025019963 0.0048830832 + 1097600 0.0036085757 0.0027531557 0.0045292515 + 1097700 0.0044541715 0.002782877 0.0049751646 + 1097800 0.0053040802 0.002477923 0.005088525 + 1097900 0.0058856988 0.0027721508 0.0056690182 + 1098000 0.005630234 0.002802467 0.0055735978 + 1098100 0.0050669173 0.0021735762 0.0046674496 + 1098200 0.0043006493 0.0020985577 0.0042152835 + 1098300 0.0042142147 0.0025351751 0.0046093589 + 1098400 0.0055460485 0.0026564166 0.0053861124 + 1098500 0.0066466011 0.0029106803 0.0061820543 + 1098600 0.0052778224 0.0027367443 0.0053344225 + 1098700 0.0035720015 0.0024204502 0.0041785447 + 1098800 0.0059336745 0.0019021694 0.0048226498 + 1098900 0.0040676837 0.0022085909 0.004210654 + 1099000 0.0043963704 0.0022216116 0.0043854501 + 1099100 0.0043395385 0.0023649065 0.0045007731 + 1099200 0.0042487895 0.0022400281 0.0043312291 + 1099300 0.0050951978 0.0022955915 0.0048033842 + 1099400 0.0051662805 0.0026230135 0.0051657922 + 1099500 0.005843817 0.0026581326 0.0055343863 + 1099600 0.0048025849 0.0029193367 0.0052831089 + 1099700 0.0060163494 0.0024397982 0.0054009702 + 1099800 0.0074527006 0.0021978046 0.0058659307 + 1099900 0.0042199 0.0030633222 0.0051403043 + 1100000 0.0059267004 0.0033132126 0.0062302605 + 1100100 0.0046449284 0.0034101761 0.0056963517 + 1100200 0.0054285311 0.0030123607 0.0056842159 + 1100300 0.0052340931 0.0028578364 0.0054339916 + 1100400 0.005613654 0.0028146167 0.005577587 + 1100500 0.0034880064 0.0030111327 0.0047278858 + 1100600 0.0055052288 0.0031023809 0.0058119857 + 1100700 0.0065035281 0.0027536672 0.0059546224 + 1100800 0.0042586252 0.0027588273 0.0048548694 + 1100900 0.0055027071 0.0028274268 0.0055357904 + 1101000 0.0055884697 0.0029285279 0.0056791028 + 1101100 0.0065992595 0.0032411437 0.0064892168 + 1101200 0.0048236311 0.0031405174 0.0055146483 + 1101300 0.0057644928 0.0034794768 0.0063166881 + 1101400 0.00636087 0.0034247465 0.0065554872 + 1101500 0.0052617456 0.0034005258 0.0059902912 + 1101600 0.0048447888 0.0028654637 0.0052500082 + 1101700 0.0057304487 0.0025991781 0.0054196333 + 1101800 0.0043166664 0.0026380458 0.0047626551 + 1101900 0.0027638389 0.0028116671 0.004171994 + 1102000 0.0048992046 0.0024858449 0.0048971722 + 1102100 0.0038775517 0.002519444 0.0044279264 + 1102200 0.0041692432 0.0024935402 0.0045455896 + 1102300 0.0038888929 0.0024295069 0.0043435713 + 1102400 0.0041193365 0.0025743431 0.0046018291 + 1102500 0.004123797 0.002277048 0.0043067294 + 1102600 0.0053109536 0.0018566664 0.0044706514 + 1102700 0.0069572075 0.0021575208 0.0055817714 + 1102800 0.0050476968 0.0027018202 0.0051862335 + 1102900 0.0057096398 0.002377766 0.0051879793 + 1103000 0.0046701312 0.0021527478 0.004451328 + 1103100 0.0043433053 0.0020793194 0.00421704 + 1103200 0.004512025 0.0024148928 0.0046356551 + 1103300 0.0043354877 0.0027021723 0.0048360452 + 1103400 0.0041653132 0.0032567755 0.0053068906 + 1103500 0.0051845222 0.0035569339 0.0061086909 + 1103600 0.005750755 0.0031233115 0.0059537612 + 1103700 0.0052475368 0.0030386087 0.0056213807 + 1103800 0.0048063859 0.0029824061 0.0053480491 + 1103900 0.003819012 0.0028912402 0.0047709102 + 1104000 0.0054647042 0.0024102136 0.0050998727 + 1104100 0.0056975108 0.002479472 0.0052837156 + 1104200 0.0056329711 0.0026448816 0.0054173595 + 1104300 0.0059294505 0.0030120391 0.0059304406 + 1104400 0.0057232558 0.003021047 0.0058379619 + 1104500 0.0046629593 0.0031525806 0.0054476309 + 1104600 0.0052709774 0.0029765276 0.0055708367 + 1104700 0.0051723182 0.0027645804 0.0053103307 + 1104800 0.0056703815 0.0026743494 0.0054652403 + 1104900 0.0050425953 0.0028684863 0.0053503887 + 1105000 0.0060872054 0.00272533 0.0057213764 + 1105100 0.0040165237 0.0025744825 0.0045513653 + 1105200 0.0048238085 0.0027923003 0.0051665186 + 1105300 0.0057075778 0.0035665247 0.0063757231 + 1105400 0.0044266737 0.0039846573 0.0061634107 + 1105500 0.0048511787 0.003849831 0.0062375205 + 1105600 0.0070319024 0.0027396393 0.0062006538 + 1105700 0.0065411117 0.0028334912 0.0060529446 + 1105800 0.0046391095 0.0033648917 0.0056482034 + 1105900 0.0043926351 0.0031788257 0.0053408258 + 1106000 0.0057881828 0.0028727267 0.0057215979 + 1106100 0.0051342171 0.0031000844 0.0056270818 + 1106200 0.0041727057 0.003015779 0.0050695325 + 1106300 0.0076241874 0.0029438473 0.006696377 + 1106400 0.0034871605 0.0032176077 0.0049339445 + 1106500 0.0062672852 0.0030482699 0.0061329493 + 1106600 0.0059029193 0.0031323135 0.0060376566 + 1106700 0.0054376249 0.0028816527 0.0055579837 + 1106800 0.0043782432 0.0026193093 0.0047742259 + 1106900 0.0038931144 0.0024937205 0.0044098628 + 1107000 0.0049565251 0.0026380511 0.0050775908 + 1107100 0.0061656321 0.0027992464 0.0058338934 + 1107200 0.0055203319 0.0029685796 0.005685618 + 1107300 0.004924756 0.0031084248 0.0055323282 + 1107400 0.0049074939 0.0029308127 0.0053462198 + 1107500 0.0055539598 0.0028535955 0.0055871851 + 1107600 0.005530852 0.002638223 0.0053604392 + 1107700 0.0056035848 0.002753771 0.0055117854 + 1107800 0.0044316081 0.00310817 0.0052893521 + 1107900 0.0055694135 0.0028708967 0.0056120925 + 1108000 0.0068393656 0.0025340838 0.005900334 + 1108100 0.0050314529 0.0023480599 0.0048244781 + 1108200 0.0054633946 0.0023381371 0.0050271516 + 1108300 0.003331477 0.0024024803 0.0040421916 + 1108400 0.0048764772 0.0026439327 0.0050440739 + 1108500 0.0048347789 0.0027128469 0.0050924646 + 1108600 0.0051338042 0.0025066029 0.0050333971 + 1108700 0.0056911884 0.0023415182 0.00514265 + 1108800 0.004523905 0.0024261128 0.0046527223 + 1108900 0.0054715166 0.002375838 0.0050688501 + 1109000 0.0058647252 0.0027451538 0.0056316982 + 1109100 0.0058143007 0.0031428907 0.0060046168 + 1109200 0.0046175991 0.0027672911 0.0050400157 + 1109300 0.0046730626 0.0020632209 0.0043632439 + 1109400 0.0048874505 0.0021198384 0.0045253804 + 1109500 0.0043572696 0.0029215498 0.0050661434 + 1109600 0.0056067547 0.0032222032 0.0059817778 + 1109700 0.0067303045 0.0027024346 0.0060150064 + 1109800 0.0055496828 0.0023598693 0.0050913537 + 1109900 0.0042777807 0.0026225494 0.0047280196 + 1110000 0.0053521616 0.0029618295 0.0055960965 + 1110100 0.0036331605 0.0030226 0.0048107962 + 1110200 0.0041319109 0.0029802932 0.0050139681 + 1110300 0.0039246772 0.0028420728 0.0047737499 + 1110400 0.0049573681 0.0028340487 0.0052740033 + 1110500 0.0057927134 0.0026073461 0.0054584472 + 1110600 0.0044012245 0.0027377315 0.0049039592 + 1110700 0.0049880632 0.0028399774 0.0052950398 + 1110800 0.0059612936 0.0028884767 0.0058225509 + 1110900 0.0060762308 0.002972223 0.0059628679 + 1111000 0.0050389978 0.0031182376 0.0055983694 + 1111100 0.003790939 0.0026517711 0.0045176239 + 1111200 0.0046618916 0.0024736532 0.004768178 + 1111300 0.0054599593 0.0026168622 0.0053041859 + 1111400 0.0045384405 0.0028312576 0.0050650213 + 1111500 0.0038829066 0.0030965173 0.0050076353 + 1111600 0.0041840858 0.0031965068 0.0052558615 + 1111700 0.0043844937 0.0026048493 0.0047628423 + 1111800 0.0041321366 0.0022903279 0.0043241139 + 1111900 0.003964238 0.0023112138 0.0042623623 + 1112000 0.0027238711 0.0026258506 0.0039665059 + 1112100 0.0039635869 0.0025339846 0.0044848125 + 1112200 0.0062341302 0.0025339899 0.0056023509 + 1112300 0.0052680537 0.0032535158 0.005846386 + 1112400 0.0042264651 0.0037682305 0.0058484438 + 1112500 0.0036646009 0.0035047427 0.0053084135 + 1112600 0.0050881358 0.0027003687 0.0052046856 + 1112700 0.0054198161 0.002762181 0.0054297468 + 1112800 0.0044966586 0.0027843272 0.0049975263 + 1112900 0.0055852218 0.0026674687 0.0054164451 + 1113000 0.0061931076 0.0032676133 0.0063157835 + 1113100 0.0055056777 0.0032258007 0.0059356265 + 1113200 0.004039471 0.0029580929 0.0049462701 + 1113300 0.0065675563 0.0023906935 0.0056231627 + 1113400 0.0050072538 0.0024108193 0.004875327 + 1113500 0.0078146016 0.0032376491 0.0070838983 + 1113600 0.0048579328 0.0035665594 0.0059575732 + 1113700 0.0081687388 0.002899786 0.0069203371 + 1113800 0.0058866491 0.0027624973 0.0056598324 + 1113900 0.0058893593 0.0030807964 0.0059794654 + 1114000 0.0051587937 0.0034598296 0.0059989234 + 1114100 0.0046150411 0.0026419868 0.0049134523 + 1114200 0.0060719435 0.0025878344 0.0055763691 + 1114300 0.0049825373 0.0026597145 0.0051120571 + 1114400 0.0057845958 0.0029815559 0.0058286616 + 1114500 0.0046539977 0.0032007859 0.0054914254 + 1114600 0.004392356 0.0031609728 0.0053228356 + 1114700 0.0046761557 0.0029197406 0.005221286 + 1114800 0.0045048321 0.0027661549 0.0049833769 + 1114900 0.00508801 0.0028334242 0.0053376791 + 1115000 0.0050853557 0.002923528 0.0054264765 + 1115100 0.0052494842 0.002847849 0.0054315795 + 1115200 0.006317395 0.0024858691 0.005595212 + 1115300 0.0054294419 0.0027658066 0.00543811 + 1115400 0.0042300512 0.0031350702 0.0052170485 + 1115500 0.0053541606 0.0031074253 0.0057426762 + 1115600 0.0050243323 0.0028907704 0.0053636839 + 1115700 0.0049021237 0.0030137226 0.0054264866 + 1115800 0.0047303487 0.0029760977 0.0053043162 + 1115900 0.0036881927 0.0029575114 0.0047727937 + 1116000 0.0050958215 0.0024771551 0.0049852547 + 1116100 0.0040445735 0.0023626829 0.0043533715 + 1116200 0.0041473562 0.0025356497 0.0045769266 + 1116300 0.0039785856 0.002882779 0.0048409891 + 1116400 0.0053961779 0.0031478078 0.0058037391 + 1116500 0.0048252247 0.0034242473 0.0057991626 + 1116600 0.0047889659 0.0033063643 0.0056634335 + 1116700 0.0038779709 0.0031517499 0.0050604387 + 1116800 0.0049438184 0.002966657 0.0053999426 + 1116900 0.004168775 0.00313996 0.0051917789 + 1117000 0.0048980233 0.0032930253 0.0057037712 + 1117100 0.0048019162 0.0036822573 0.0060457004 + 1117200 0.00538707 0.003629423 0.0062808716 + 1117300 0.0040782169 0.0034862798 0.0054935272 + 1117400 0.0048477334 0.003726453 0.0061124468 + 1117500 0.0052247772 0.0043192514 0.0068908214 + 1117600 0.0059275607 0.0041564718 0.0070739431 + 1117700 0.005604071 0.0038637016 0.0066219553 + 1117800 0.0044473977 0.0036268456 0.0058157991 + 1117900 0.0034891594 0.0030316632 0.0047489838 + 1118000 0.0049087571 0.0028317598 0.0052477886 + 1118100 0.0046843325 0.0028990456 0.0052046155 + 1118200 0.0046039055 0.0029277624 0.0051937471 + 1118300 0.0045140778 0.002908801 0.0051305737 + 1118400 0.0044524158 0.0028951052 0.0050865286 + 1118500 0.0044554001 0.002956587 0.0051494792 + 1118600 0.0065673552 0.003009158 0.0062415281 + 1118700 0.0054890846 0.0033987449 0.0061004038 + 1118800 0.006250578 0.0034284943 0.0065049507 + 1118900 0.0056715143 0.0028887606 0.005680209 + 1119000 0.0055559111 0.0026634225 0.0053979725 + 1119100 0.0048735286 0.0028519205 0.0052506104 + 1119200 0.0033187482 0.0031943185 0.0048277649 + 1119300 0.0049638123 0.0027545601 0.0051976865 + 1119400 0.0055929886 0.0030380799 0.0057908789 + 1119500 0.0048867214 0.0027795248 0.005184708 + 1119600 0.0041770599 0.0028756076 0.0049315043 + 1119700 0.0051865995 0.0029954143 0.0055481938 + 1119800 0.005642964 0.0026927286 0.005470125 + 1119900 0.0039845423 0.0027506115 0.0047117534 + 1120000 0.0069531815 0.0027996708 0.0062219399 + 1120100 0.0039960026 0.0027866146 0.0047533971 + 1120200 0.0053982884 0.0029162425 0.0055732126 + 1120300 0.0046132877 0.0029844992 0.0052551017 + 1120400 0.0043427505 0.0032586985 0.005396146 + 1120500 0.0043349062 0.003704319 0.0058379057 + 1120600 0.0048054036 0.0035245379 0.0058896974 + 1120700 0.0052581624 0.0032188142 0.0058068159 + 1120800 0.0051729728 0.0029025762 0.0054486487 + 1120900 0.0049286823 0.0025691546 0.0049949904 + 1121000 0.0043083161 0.0021423808 0.0042628802 + 1121100 0.0054077786 0.0019890021 0.0046506431 + 1121200 0.0047822158 0.0022276192 0.004581366 + 1121300 0.0039936991 0.0022821507 0.0042477995 + 1121400 0.0044991906 0.0024168375 0.0046312829 + 1121500 0.0052349057 0.0024563312 0.0050328863 + 1121600 0.0052056368 0.0023494289 0.0049115782 + 1121700 0.0045432751 0.002012715 0.0042488582 + 1121800 0.0060093355 0.0021693047 0.0051270245 + 1121900 0.0046350748 0.0030168312 0.0052981571 + 1122000 0.0037322971 0.0036723751 0.0055093651 + 1122100 0.0033744806 0.0033288604 0.0049897375 + 1122200 0.0048366756 0.0026560772 0.0050366285 + 1122300 0.0061682736 0.002095147 0.0051310941 + 1122400 0.0050386627 0.0023030757 0.0047830425 + 1122500 0.0053367311 0.002326859 0.0049535313 + 1122600 0.0067898682 0.0023832506 0.0057251388 + 1122700 0.0053118303 0.0028403753 0.0054547918 + 1122800 0.0042001575 0.0036077992 0.0056750642 + 1122900 0.0053676878 0.0031778103 0.0058197192 + 1123000 0.0063103099 0.0023234944 0.0054293501 + 1123100 0.0041018874 0.0024070343 0.0044259321 + 1123200 0.0043128544 0.0026609753 0.0047837083 + 1123300 0.0041202396 0.002637988 0.0046659185 + 1123400 0.0058061377 0.0022749523 0.0051326607 + 1123500 0.0050071048 0.0023962674 0.0048607019 + 1123600 0.0059089931 0.0031031763 0.0060115089 + 1123700 0.0058659697 0.0031411138 0.0060282708 + 1123800 0.0042967587 0.0029434151 0.0050582261 + 1123900 0.0039773969 0.0027235156 0.0046811406 + 1124000 0.0059008284 0.0023867927 0.0052911067 + 1124100 0.0057712028 0.0027152902 0.0055558041 + 1124200 0.0068375925 0.0024356401 0.0058010177 + 1124300 0.0035722141 0.0024466982 0.0042048973 + 1124400 0.0068371762 0.0024781781 0.0058433508 + 1124500 0.0037194717 0.0027963904 0.0046270679 + 1124600 0.0058691357 0.0026854232 0.0055741384 + 1124700 0.0051238493 0.0025774731 0.0050993676 + 1124800 0.0069454108 0.0029511609 0.0063696053 + 1124900 0.0056908804 0.0033754416 0.0061764218 + 1125000 0.0047231927 0.0027796281 0.0051043245 + 1125100 0.0047771442 0.0022741655 0.0046254162 + 1125200 0.0045494031 0.0023848487 0.0046240081 + 1125300 0.0044130306 0.0024930325 0.004665071 + 1125400 0.0055293135 0.0028201865 0.0055416455 + 1125500 0.0035395239 0.002796676 0.0045387855 + 1125600 0.0041082491 0.0028563266 0.0048783555 + 1125700 0.0054929104 0.0026744254 0.0053779673 + 1125800 0.0047522349 0.0034239661 0.0057629568 + 1125900 0.0054165929 0.0036463155 0.0063122948 + 1126000 0.0050288382 0.0037659683 0.0062410996 + 1126100 0.0045067468 0.0032037123 0.0054218767 + 1126200 0.0066272022 0.0030449963 0.0063068224 + 1126300 0.0052951503 0.0032423892 0.005848596 + 1126400 0.0041545886 0.0034982854 0.0055431219 + 1126500 0.0065379293 0.0027955152 0.0060134023 + 1126600 0.0064513712 0.0028665936 0.0060418778 + 1126700 0.003713694 0.0036422336 0.0054700674 + 1126800 0.0053573898 0.0033575081 0.0059943484 + 1126900 0.0042053516 0.0029462366 0.0050160581 + 1127000 0.005211016 0.0029060059 0.0054708028 + 1127100 0.0049170855 0.0027006019 0.0051207299 + 1127200 0.004778754 0.0024525487 0.0048045917 + 1127300 0.0053425937 0.0020716853 0.0047012432 + 1127400 0.0040075613 0.002011512 0.0039839836 + 1127500 0.0045776187 0.0021253659 0.0043784126 + 1127600 0.0074041408 0.002199831 0.0058440565 + 1127700 0.0050858668 0.0026175938 0.0051207938 + 1127800 0.0071645465 0.0026332148 0.006159515 + 1127900 0.004865156 0.0027723183 0.0051668872 + 1128000 0.0052602656 0.0028692267 0.0054582636 + 1128100 0.0038944366 0.0024272007 0.0043439937 + 1128200 0.0052921202 0.0024326607 0.0050373761 + 1128300 0.0036266174 0.0026925419 0.0044775177 + 1128400 0.0053389319 0.0026699171 0.0052976727 + 1128500 0.004845435 0.0027231857 0.0051080482 + 1128600 0.0059441984 0.002658333 0.0055839931 + 1128700 0.0069702298 0.0028026823 0.0062333423 + 1128800 0.0061068787 0.0025464921 0.0055522215 + 1128900 0.0060763736 0.0026927429 0.0056834581 + 1129000 0.0045725068 0.0025243574 0.0047748881 + 1129100 0.0054260351 0.0017802705 0.0044508971 + 1129200 0.0038238499 0.0014001411 0.0032821922 + 1129300 0.0039509387 0.0018399105 0.0037845131 + 1129400 0.0065081657 0.0018697709 0.0050730088 + 1129500 0.0045965217 0.001990162 0.0042525126 + 1129600 0.0050957838 0.0020342802 0.0045423613 + 1129700 0.0041746003 0.0020685903 0.0041232764 + 1129800 0.0050746827 0.0019749545 0.0044726499 + 1129900 0.0041243667 0.0019410774 0.0039710391 + 1130000 0.0043662854 0.0020184339 0.0041674649 + 1130100 0.0040571233 0.0022509175 0.0042477829 + 1130200 0.0047284553 0.002371551 0.0046988376 + 1130300 0.0051584115 0.0024082177 0.0049471233 + 1130400 0.0041029511 0.0023910341 0.0044104554 + 1130500 0.005448655 0.0026135566 0.0052953165 + 1130600 0.0054196881 0.0030882846 0.0057557874 + 1130700 0.0054924079 0.0033689168 0.0060722113 + 1130800 0.005646432 0.0026018046 0.0053809078 + 1130900 0.0050255575 0.0018517844 0.0043253009 + 1131000 0.0079075971 0.0021922249 0.0060842454 + 1131100 0.0046615269 0.0025926579 0.0048870032 + 1131200 0.0057055402 0.0024085839 0.0052167795 + 1131300 0.0040890575 0.0022249797 0.0042375627 + 1131400 0.0041310337 0.0020446897 0.0040779329 + 1131500 0.0038024149 0.0022842948 0.0041557959 + 1131600 0.0059112325 0.0025170925 0.0054265273 + 1131700 0.0061367789 0.0025448653 0.0055653111 + 1131800 0.0056715825 0.0025966246 0.0053881066 + 1131900 0.0044246862 0.002915148 0.0050929232 + 1132000 0.0052359607 0.0030426753 0.0056197497 + 1132100 0.004949879 0.0026345452 0.0050708137 + 1132200 0.0057100459 0.0027191888 0.0055296021 + 1132300 0.0060828724 0.0027222307 0.0057161445 + 1132400 0.0046719916 0.0026893135 0.0049888093 + 1132500 0.0042833766 0.00253215 0.0046403744 + 1132600 0.0048644527 0.002039096 0.0044333188 + 1132700 0.0042309328 0.0017465433 0.0038289555 + 1132800 0.005005301 0.0020633663 0.0045269129 + 1132900 0.0045563432 0.0023035522 0.0045461274 + 1133000 0.0061924739 0.0026896772 0.0057375354 + 1133100 0.0056900484 0.002531901 0.0053324717 + 1133200 0.0055411445 0.0028574732 0.0055847553 + 1133300 0.005022954 0.0032690401 0.0057412753 + 1133400 0.0066423782 0.0025068638 0.0057761593 + 1133500 0.0036826021 0.0023458121 0.0041583428 + 1133600 0.0040931249 0.0024900803 0.0045046652 + 1133700 0.0033514787 0.002912181 0.004561737 + 1133800 0.0057362119 0.0028126433 0.005635935 + 1133900 0.0060792279 0.0028441399 0.0058362599 + 1134000 0.0032759607 0.002922868 0.004535255 + 1134100 0.0055051399 0.0018452961 0.0045548571 + 1134200 0.0034090913 0.0018186237 0.0034965358 + 1134300 0.0042155821 0.0017104255 0.0037852823 + 1134400 0.0059398095 0.0015079166 0.0044314166 + 1134500 0.005455146 0.0019404188 0.0046253735 + 1134600 0.0047454946 0.002081255 0.0044169281 + 1134700 0.0043066885 0.0023352016 0.0044548998 + 1134800 0.0060191115 0.0021199172 0.0050824487 + 1134900 0.0044722726 0.0020554492 0.0042566459 + 1135000 0.0036781893 0.0024230089 0.0042333677 + 1135100 0.0059304579 0.002443407 0.0053623042 + 1135200 0.0044434966 0.0026759436 0.0048629771 + 1135300 0.0029924711 0.0024543955 0.0039272523 + 1135400 0.0046413704 0.0019591521 0.0042435766 + 1135500 0.0059219661 0.0018629257 0.0047776434 + 1135600 0.0044778117 0.0022832529 0.0044871758 + 1135700 0.0050899973 0.0024709733 0.0049762064 + 1135800 0.0043232067 0.0023191549 0.0044469832 + 1135900 0.0055312962 0.0020871278 0.0048095627 + 1136000 0.0042206897 0.0020206712 0.0040980419 + 1136100 0.0041385623 0.0019670665 0.0040040151 + 1136200 0.0044843484 0.0022235988 0.004430739 + 1136300 0.004153764 0.0022768102 0.0043212409 + 1136400 0.0048923707 0.0020464932 0.0044544569 + 1136500 0.004328573 0.0024003093 0.0045307788 + 1136600 0.0052369604 0.0025833333 0.0051608998 + 1136700 0.0062547118 0.0024746839 0.0055531749 + 1136800 0.0051821616 0.0022200364 0.0047706316 + 1136900 0.0049912465 0.0020782946 0.0045349237 + 1137000 0.0058701458 0.00188489 0.0047741024 + 1137100 0.0035517707 0.0021527121 0.0039008492 + 1137200 0.0043852135 0.0021579537 0.0043163009 + 1137300 0.0045063646 0.0022883438 0.0045063202 + 1137400 0.005572923 0.0020480991 0.0047910222 + 1137500 0.0044852717 0.0020959642 0.0043035589 + 1137600 0.0055150731 0.0019985983 0.0047130484 + 1137700 0.0056286604 0.0017177688 0.0044881251 + 1137800 0.0047889261 0.001895732 0.0042527816 + 1137900 0.0047509835 0.0022335227 0.0045718974 + 1138000 0.0057392689 0.0021102105 0.0049350069 + 1138100 0.004432503 0.0020734015 0.0042550241 + 1138200 0.0059331456 0.0019019884 0.0048222085 + 1138300 0.0058238831 0.0024896459 0.0053560884 + 1138400 0.0026837126 0.0027631533 0.004084043 + 1138500 0.0055655421 0.0021269364 0.0048662266 + 1138600 0.0033664595 0.0023344491 0.0039913784 + 1138700 0.0046844709 0.0022620781 0.0045677161 + 1138800 0.004178015 0.0024932855 0.0045496523 + 1138900 0.0040537708 0.0023631609 0.0043583762 + 1139000 0.0050104474 0.002501626 0.0049677056 + 1139100 0.0041621783 0.0025818249 0.004630397 + 1139200 0.0072838621 0.00222524 0.0058102658 + 1139300 0.0048259561 0.0021804377 0.004555713 + 1139400 0.0037696823 0.0020818909 0.0039372814 + 1139500 0.0049182909 0.0020523446 0.0044730659 + 1139600 0.0053017872 0.0021928937 0.0048023671 + 1139700 0.0045049615 0.0022101674 0.0044274532 + 1139800 0.0042656371 0.0020617143 0.0041612076 + 1139900 0.0058591777 0.0018000012 0.0046838153 + 1140000 0.0045797183 0.0019666384 0.0042207185 + 1140100 0.006799421 0.0022179847 0.0055645748 + 1140200 0.0059603338 0.002857669 0.0057912708 + 1140300 0.0053543064 0.0028976006 0.0055329233 + 1140400 0.0048310468 0.0026990113 0.0050767921 + 1140500 0.0060259214 0.0024750315 0.0054409147 + 1140600 0.0042224912 0.0025842334 0.0046624908 + 1140700 0.0083554354 0.0022495943 0.0063620352 + 1140800 0.0064376315 0.0025016654 0.0056701872 + 1140900 0.00462634 0.002845412 0.0051224388 + 1141000 0.003755128 0.0034845312 0.0053327582 + 1141100 0.0058033437 0.0030097483 0.0058660815 + 1141200 0.0051914254 0.0027186019 0.0052737566 + 1141300 0.0052176293 0.0021925811 0.004760633 + 1141400 0.0064614253 0.0021854035 0.0053656363 + 1141500 0.0053155189 0.0029044796 0.0055207116 + 1141600 0.0055475507 0.00331853 0.0060489652 + 1141700 0.0058365928 0.0030010657 0.0058737637 + 1141800 0.0044465947 0.0032620772 0.0054506356 + 1141900 0.0051888352 0.0031481739 0.0057020537 + 1142000 0.0059901266 0.0031214835 0.006069749 + 1142100 0.004964298 0.0031480725 0.0055914379 + 1142200 0.0047599814 0.0031955994 0.0055384027 + 1142300 0.0049590525 0.0030336796 0.0054744633 + 1142400 0.0057945174 0.0030835573 0.0059355463 + 1142500 0.0049633691 0.0034745133 0.0059174215 + 1142600 0.0048709654 0.0033475063 0.0057449346 + 1142700 0.0053944404 0.0031492669 0.005804343 + 1142800 0.005587364 0.0025762505 0.0053262812 + 1142900 0.0035158469 0.0022894285 0.0040198844 + 1143000 0.0036430008 0.0022809425 0.004073982 + 1143100 0.0068415242 0.0029874186 0.0063547313 + 1143200 0.0054087814 0.0037370419 0.0063991765 + 1143300 0.005041422 0.0035666714 0.0060479963 + 1143400 0.0047988846 0.0032867552 0.0056487062 + 1143500 0.006094082 0.0031151592 0.0061145902 + 1143600 0.0055997101 0.0027744749 0.0055305822 + 1143700 0.0050554445 0.0027773346 0.0052655612 + 1143800 0.0054194726 0.0032904415 0.0059578382 + 1143900 0.006081078 0.0032604416 0.0062534722 + 1144000 0.0043726651 0.0039695038 0.0061216749 + 1144100 0.0070897374 0.0038437499 0.00733323 + 1144200 0.0062554518 0.003240405 0.0063192602 + 1144300 0.0067990493 0.0028106923 0.0061570993 + 1144400 0.0050523484 0.0028197361 0.0053064388 + 1144500 0.0050316195 0.0025003773 0.0049768776 + 1144600 0.0055260234 0.0021241281 0.0048439678 + 1144700 0.0046538337 0.0026878997 0.0049784584 + 1144800 0.0045116736 0.0028840203 0.0051046097 + 1144900 0.0047690452 0.0030304645 0.0053777289 + 1145000 0.0041923249 0.0029496974 0.0050131073 + 1145100 0.0042856152 0.0027723354 0.0048816616 + 1145200 0.003858879 0.0027661064 0.0046653984 + 1145300 0.0048555426 0.0025297419 0.0049195793 + 1145400 0.0044020542 0.0024055422 0.0045721782 + 1145500 0.0042114879 0.0030076383 0.00508048 + 1145600 0.0061286127 0.0027618552 0.0057782817 + 1145700 0.0040497919 0.0027825898 0.0047758467 + 1145800 0.0051717522 0.0027408747 0.0052863465 + 1145900 0.005043385 0.002977228 0.0054595191 + 1146000 0.00487679 0.0028547198 0.0052550149 + 1146100 0.0051262654 0.0029757146 0.0054987984 + 1146200 0.0054027078 0.0024410994 0.0051002447 + 1146300 0.0062796599 0.0020873077 0.0051780778 + 1146400 0.0042986867 0.002429872 0.0045456319 + 1146500 0.0048742659 0.0030478994 0.0054469522 + 1146600 0.0054907564 0.0031056462 0.0058081279 + 1146700 0.0054203032 0.0031191747 0.0057869802 + 1146800 0.0049624525 0.0029869776 0.0054294346 + 1146900 0.0057191657 0.0025235814 0.0053384832 + 1147000 0.0047452564 0.0023382209 0.0046737768 + 1147100 0.0053177956 0.0025852402 0.0052025927 + 1147200 0.0051177414 0.0030058017 0.0055246901 + 1147300 0.0043957011 0.0024358068 0.0045993159 + 1147400 0.0068955573 0.0020416908 0.0054355979 + 1147500 0.0039819063 0.0022809825 0.004240827 + 1147600 0.0057598084 0.0023468667 0.0051817724 + 1147700 0.0051407156 0.0025736437 0.0051038396 + 1147800 0.0040143988 0.0026598219 0.0046356588 + 1147900 0.0054370383 0.0027854725 0.0054615148 + 1148000 0.0054395972 0.0027262414 0.0054035432 + 1148100 0.0042234288 0.0024214974 0.0045002163 + 1148200 0.0076328876 0.0022770374 0.0060338493 + 1148300 0.006336389 0.0025838144 0.0057025058 + 1148400 0.0060396468 0.0024529575 0.0054255962 + 1148500 0.0039388604 0.0020865441 0.004025202 + 1148600 0.005392957 0.0023357212 0.0049900673 + 1148700 0.0039748445 0.0024967208 0.0044530895 + 1148800 0.0046196112 0.0025132019 0.0047869168 + 1148900 0.0059514473 0.0021981811 0.0051274091 + 1149000 0.0065715698 0.0023463684 0.0055808129 + 1149100 0.004644607 0.0027008002 0.0049868177 + 1149200 0.0049295679 0.0028220968 0.0052483685 + 1149300 0.0054460119 0.0030006984 0.0056811574 + 1149400 0.0062745756 0.0031781903 0.0062664579 + 1149500 0.0065741428 0.0029813645 0.0062170754 + 1149600 0.0066934974 0.0026913747 0.0059858304 + 1149700 0.0061721547 0.0023873349 0.0054251923 + 1149800 0.0056961844 0.0022140533 0.0050176441 + 1149900 0.0053112574 0.002285355 0.0048994895 + 1150000 0.0050948997 0.0025496493 0.0050572952 + 1150100 0.0050678753 0.0025414941 0.005035839 + 1150200 0.0040393003 0.0024599009 0.004447994 + 1150300 0.0068148184 0.0024749029 0.0058290714 + 1150400 0.0044849052 0.0030183919 0.0052258061 + 1150500 0.003847672 0.0033638448 0.0052576208 + 1150600 0.0053835341 0.0033924855 0.0060421936 + 1150700 0.0038954774 0.0027037363 0.0046210416 + 1150800 0.0052811873 0.0024068783 0.0050062127 + 1150900 0.0059872014 0.0024297753 0.005376601 + 1151000 0.0038092582 0.0021765381 0.0040514074 + 1151100 0.0042447037 0.0022539031 0.0043430932 + 1151200 0.0070673892 0.0024505015 0.0059289821 + 1151300 0.0043538011 0.0029209815 0.005063868 + 1151400 0.0052917274 0.0029787268 0.0055832488 + 1151500 0.0058722166 0.0028939542 0.0057841858 + 1151600 0.0065003816 0.002971586 0.0061709926 + 1151700 0.005964835 0.0027736243 0.0057094415 + 1151800 0.0055927159 0.0028631465 0.0056158114 + 1151900 0.0070862591 0.0028099427 0.0062977109 + 1152000 0.0063895324 0.0032125527 0.0063574007 + 1152100 0.0069302755 0.0029309385 0.0063419335 + 1152200 0.0056270659 0.0025569668 0.0053265383 + 1152300 0.0059818122 0.0024037914 0.0053479646 + 1152400 0.0050044954 0.0021718436 0.0046349936 + 1152500 0.0048276408 0.0024321417 0.0048082461 + 1152600 0.005707324 0.0028117132 0.0056207867 + 1152700 0.0062034468 0.0021821569 0.0052354159 + 1152800 0.0054674082 0.0020680969 0.0047590869 + 1152900 0.0050083654 0.0020320315 0.0044970863 + 1153000 0.0052598796 0.0023987311 0.0049875781 + 1153100 0.004380988 0.0029213973 0.0050776648 + 1153200 0.0042603186 0.002988854 0.0050857296 + 1153300 0.0045907718 0.0028126646 0.005072185 + 1153400 0.0068902445 0.0025427023 0.0059339945 + 1153500 0.0045968112 0.002409876 0.004672369 + 1153600 0.0044429877 0.0023526366 0.0045394196 + 1153700 0.0057036918 0.0025287389 0.0053360247 + 1153800 0.0041296805 0.0023828448 0.0044154219 + 1153900 0.0049974928 0.0023435344 0.0048032379 + 1154000 0.0046145454 0.002246546 0.0045177676 + 1154100 0.0053412966 0.0023104251 0.0049393445 + 1154200 0.004387453 0.0022474293 0.0044068788 + 1154300 0.0053281904 0.0019741384 0.0045966071 + 1154400 0.0038556997 0.002038094 0.0039358212 + 1154500 0.0050912216 0.0019561753 0.004462011 + 1154600 0.0040327874 0.0024639552 0.0044488428 + 1154700 0.0046551425 0.0025220734 0.0048132763 + 1154800 0.0039495982 0.0023863499 0.0043302928 + 1154900 0.0047598169 0.0020644866 0.004407209 + 1155000 0.0052886324 0.0018055326 0.0044085313 + 1155100 0.0040620694 0.0019977608 0.0039970605 + 1155200 0.0054041003 0.0026143342 0.0052741648 + 1155300 0.0062970629 0.0027024812 0.0058018169 + 1155400 0.0056788951 0.0025768732 0.0053719544 + 1155500 0.0042006685 0.0028132226 0.0048807391 + 1155600 0.0064618626 0.0025673829 0.0057478309 + 1155700 0.0059508173 0.0021324526 0.0050613705 + 1155800 0.0053607303 0.0022007029 0.0048391873 + 1155900 0.0042130574 0.002179215 0.0042528292 + 1156000 0.0057980857 0.0021669138 0.0050206591 + 1156100 0.0062799394 0.0019364683 0.005027376 + 1156200 0.0049606833 0.0017206393 0.0041622256 + 1156300 0.004882085 0.0017647469 0.0041676481 + 1156400 0.0042137427 0.0024250595 0.004499011 + 1156500 0.0057096837 0.0022910102 0.0051012452 + 1156600 0.0068839597 0.0020614243 0.0054496233 + 1156700 0.0047515617 0.002192974 0.0045316333 + 1156800 0.0039846241 0.002398469 0.0043596512 + 1156900 0.0032979713 0.0026289664 0.0042521867 + 1157000 0.0059024896 0.0025113206 0.0054164522 + 1157100 0.0050548931 0.0024592359 0.004947191 + 1157200 0.0034494624 0.002539371 0.0042371532 + 1157300 0.0062868937 0.0025209392 0.0056152697 + 1157400 0.0043955494 0.0027577788 0.0049212133 + 1157500 0.0057931094 0.0024382099 0.0052895059 + 1157600 0.0051723891 0.0025154181 0.0050612033 + 1157700 0.0040309427 0.0030887434 0.005072723 + 1157800 0.0046537214 0.0029713749 0.0052618784 + 1157900 0.0045166723 0.0025401378 0.0047631874 + 1158000 0.0044460371 0.0022204408 0.0044087247 + 1158100 0.0061720571 0.0017919298 0.0048297391 + 1158200 0.0070801632 0.0024560702 0.005940838 + 1158300 0.003710306 0.0033438674 0.0051700336 + 1158400 0.0059739584 0.0031238426 0.0060641502 + 1158500 0.0069038189 0.0025304498 0.0059284231 + 1158600 0.0066933107 0.0027249536 0.0060193175 + 1158700 0.0046808802 0.0030893743 0.005393245 + 1158800 0.0048868161 0.0028010529 0.0052062827 + 1158900 0.0054891034 0.0028741305 0.0055757986 + 1159000 0.0052035258 0.0028440212 0.0054051316 + 1159100 0.0068173318 0.0026018756 0.0059572811 + 1159200 0.0048183584 0.0024923509 0.0048638867 + 1159300 0.005989711 0.0022968108 0.0052448717 + 1159400 0.0049890905 0.0023906538 0.0048462217 + 1159500 0.0060369553 0.0023628325 0.0053341464 + 1159600 0.0059590704 0.0023355014 0.0052684814 + 1159700 0.0042444954 0.0025064035 0.0045954911 + 1159800 0.0052971469 0.0021382116 0.0047454011 + 1159900 0.0042318877 0.0020720237 0.0041549059 + 1160000 0.00351868 0.002514236 0.0042460863 + 1160100 0.0066969894 0.00257182 0.0058679945 + 1160200 0.0038614306 0.0031237184 0.0050242663 + 1160300 0.0046983561 0.0028904567 0.0052029288 + 1160400 0.0030716934 0.0026409312 0.0041527803 + 1160500 0.0052267964 0.0021895292 0.0047620931 + 1160600 0.0046378065 0.0019163119 0.0041989823 + 1160700 0.0042175194 0.0018441714 0.0039199817 + 1160800 0.004119872 0.0020197566 0.0040475061 + 1160900 0.0066885874 0.0023592573 0.0056512963 + 1161000 0.0062817519 0.0024409372 0.005532737 + 1161100 0.0043047443 0.0027891213 0.0049078626 + 1161200 0.0055424564 0.0031741721 0.0059020999 + 1161300 0.0068180176 0.0031334374 0.0064891804 + 1161400 0.0052523061 0.0029059118 0.0054910312 + 1161500 0.0053394151 0.0027825841 0.0054105774 + 1161600 0.0052175716 0.0027850143 0.0053530378 + 1161700 0.0058371023 0.0030451302 0.005918079 + 1161800 0.0046462809 0.0036679083 0.0059547496 + 1161900 0.0052051272 0.0035706762 0.0061325747 + 1162000 0.0061977264 0.0035990255 0.0066494689 + 1162100 0.004412788 0.0036140777 0.0057859968 + 1162200 0.005279992 0.0030114317 0.0056101778 + 1162300 0.0053489006 0.0024663095 0.0050989716 + 1162400 0.0051826986 0.0025710789 0.0051219384 + 1162500 0.0041518787 0.0026848105 0.0047283133 + 1162600 0.0042278114 0.0026027182 0.0046835941 + 1162700 0.0045350174 0.0025259162 0.0047579951 + 1162800 0.0049717421 0.0024233772 0.0048704065 + 1162900 0.0061833751 0.0027600097 0.0058033896 + 1163000 0.0045985286 0.002663015 0.0049263533 + 1163100 0.0043285286 0.0024415438 0.0045719915 + 1163200 0.003518059 0.0021892783 0.0039208229 + 1163300 0.0051012578 0.00205001 0.0045607854 + 1163400 0.0063332 0.0019746295 0.0050917514 + 1163500 0.0053964042 0.002497155 0.0051531977 + 1163600 0.0043853153 0.0025334414 0.0046918388 + 1163700 0.0044904719 0.0023034259 0.0045135801 + 1163800 0.0052070762 0.0023525066 0.0049153644 + 1163900 0.0048182308 0.0029634691 0.0053349421 + 1164000 0.0036711715 0.0037256151 0.0055325198 + 1164100 0.0038251069 0.0039143036 0.0057969734 + 1164200 0.004398862 0.0034824065 0.0056474714 + 1164300 0.0055652425 0.0027858543 0.0055249971 + 1164400 0.004946589 0.0028534432 0.0052880925 + 1164500 0.0041932217 0.0026544717 0.004718323 + 1164600 0.0047320303 0.0024419029 0.0047709491 + 1164700 0.0057750472 0.0023389878 0.0051813938 + 1164800 0.0055549588 0.0022642726 0.0049983539 + 1164900 0.0057307896 0.0022644654 0.0050850884 + 1165000 0.0050992325 0.0024432553 0.0049530338 + 1165100 0.0040929979 0.0025582408 0.0045727632 + 1165200 0.0064004732 0.0025392066 0.0056894395 + 1165300 0.0045058913 0.0028809184 0.0050986617 + 1165400 0.0046544792 0.0026359716 0.004926848 + 1165500 0.004676084 0.0025443979 0.004845908 + 1165600 0.0054654932 0.0024314702 0.0051215176 + 1165700 0.0056674154 0.0023169313 0.0051063623 + 1165800 0.0043325588 0.0029596515 0.0050920828 + 1165900 0.0043694497 0.0026137643 0.0047643529 + 1166000 0.0045798263 0.0022492718 0.004503405 + 1166100 0.0037324988 0.0023447688 0.004181858 + 1166200 0.0037846013 0.0022211252 0.0040838586 + 1166300 0.0054494978 0.0022710841 0.0049532588 + 1166400 0.0057987108 0.0017948656 0.0046489186 + 1166500 0.0054510181 0.001888682 0.004571605 + 1166600 0.0036951387 0.002652078 0.004470779 + 1166700 0.004327766 0.0028526145 0.0049826868 + 1166800 0.0059865961 0.0027068614 0.0056533892 + 1166900 0.0049662672 0.002369812 0.0048141466 + 1167000 0.0052248943 0.0023887458 0.0049603735 + 1167100 0.0060574567 0.0028789108 0.0058603153 + 1167200 0.0046697662 0.0031525082 0.0054509088 + 1167300 0.0043243664 0.0029180149 0.0050464139 + 1167400 0.0040481769 0.0029175807 0.0049100428 + 1167500 0.0055289242 0.0028617992 0.0055830665 + 1167600 0.0056033944 0.0029915571 0.0057494778 + 1167700 0.005541443 0.0022367362 0.0049641652 + 1167800 0.0041649882 0.0019923605 0.0040423157 + 1167900 0.0055732615 0.0020125636 0.0047556533 + 1168000 0.0036963562 0.0017472726 0.0035665729 + 1168100 0.0047060459 0.0014476708 0.0037639277 + 1168200 0.0037110034 0.0017130432 0.0035395527 + 1168300 0.0060673715 0.0017580067 0.0047442911 + 1168400 0.0050998199 0.0023848287 0.0048948963 + 1168500 0.0057262186 0.0026451176 0.0054634908 + 1168600 0.0062939148 0.0026012351 0.0056990213 + 1168700 0.003159149 0.0024273557 0.0039822493 + 1168800 0.0043798862 0.002309753 0.0044654782 + 1168900 0.0056548979 0.0024391306 0.0052224007 + 1169000 0.0048026548 0.0021642805 0.0045280872 + 1169100 0.0054092119 0.0019561542 0.0046185007 + 1169200 0.003738173 0.0023235919 0.0041634739 + 1169300 0.0039532398 0.0022717969 0.0042175321 + 1169400 0.0032537448 0.002682017 0.0042834695 + 1169500 0.0041327232 0.0021719829 0.0042060576 + 1169600 0.0043419362 0.0019775222 0.0041145689 + 1169700 0.004748595 0.0019876143 0.0043248134 + 1169800 0.0056697658 0.0020470842 0.0048376721 + 1169900 0.0044353827 0.0019305571 0.004113597 + 1170000 0.0037253516 0.0017034733 0.0035370448 + 1170100 0.0049573517 0.0015529842 0.0039929307 + 1170200 0.0037455132 0.0018269178 0.0036704126 + 1170300 0.0041743208 0.0021201616 0.0041747101 + 1170400 0.0043594119 0.0026248244 0.0047704724 + 1170500 0.0053548436 0.0030385871 0.0056741742 + 1170600 0.0046997873 0.0028542741 0.0051674506 + 1170700 0.0064066847 0.0025629233 0.0057162134 + 1170800 0.0052964884 0.0021969164 0.0048037818 + 1170900 0.0053465931 0.0020653296 0.0046968559 + 1171000 0.0048145525 0.002233113 0.0046027756 + 1171100 0.0060869163 0.0019659032 0.0049618073 + 1171200 0.0033836448 0.0019653842 0.0036307719 + 1171300 0.0046879148 0.0021495696 0.0044569027 + 1171400 0.0052650136 0.001996975 0.0045883488 + 1171500 0.0035296954 0.0020638305 0.0038011024 + 1171600 0.0054637452 0.0021336988 0.0048228858 + 1171700 0.0048900894 0.0024550597 0.0048619006 + 1171800 0.0056638798 0.0025900718 0.0053777626 + 1171900 0.0063126928 0.0024321339 0.0055391624 + 1172000 0.0048455705 0.0025653563 0.0049502856 + 1172100 0.004444044 0.0025908494 0.0047781523 + 1172200 0.0031678039 0.0028580957 0.0044172492 + 1172300 0.0046678172 0.0027381246 0.0050355659 + 1172400 0.0065547607 0.002437567 0.0056637383 + 1172500 0.0060032435 0.0025888242 0.0055435457 + 1172600 0.0064226591 0.0028556585 0.006016811 + 1172700 0.0043133701 0.0027896919 0.0049126788 + 1172800 0.0053294855 0.0026299469 0.0052530531 + 1172900 0.0055391479 0.0027580615 0.0054843609 + 1173000 0.0061858496 0.0025420879 0.0055866858 + 1173100 0.0047490726 0.0031570437 0.0054944779 + 1173200 0.0054078653 0.0032804223 0.0059421061 + 1173300 0.0072529073 0.003089422 0.0066592123 + 1173400 0.004692452 0.0029490379 0.0052586041 + 1173500 0.0046613553 0.0025599399 0.0048542007 + 1173600 0.0040277376 0.002349293 0.0043316951 + 1173700 0.0041603796 0.0023433277 0.0043910146 + 1173800 0.0043688357 0.0025202401 0.0046705264 + 1173900 0.0044338406 0.0028192768 0.0050015577 + 1174000 0.0045044621 0.002727417 0.0049444569 + 1174100 0.005096092 0.0022582654 0.0047664982 + 1174200 0.0056749221 0.0017818969 0.0045750226 + 1174300 0.003942828 0.0024378895 0.0043785001 + 1174400 0.005951958 0.0028397226 0.005769202 + 1174500 0.0056212459 0.0024190973 0.0051858043 + 1174600 0.0062481626 0.0018684616 0.0049437291 + 1174700 0.0067416182 0.0025830895 0.0059012298 + 1174800 0.0049533623 0.0035013385 0.0059393215 + 1174900 0.0058340134 0.0032780306 0.006149459 + 1175000 0.0041998637 0.0029299207 0.0049970412 + 1175100 0.0055400732 0.0020585066 0.0047852613 + 1175200 0.0064043085 0.0023244419 0.0054765625 + 1175300 0.0047464305 0.0025797315 0.0049158652 + 1175400 0.0059348523 0.0029275519 0.005848612 + 1175500 0.0051865477 0.0030396448 0.0055923987 + 1175600 0.0077088102 0.0028146722 0.0066088523 + 1175700 0.0063130683 0.0026984058 0.0058056191 + 1175800 0.0049192826 0.0029703542 0.0053915636 + 1175900 0.0050546501 0.0026505964 0.005138432 + 1176000 0.0040904086 0.0019651511 0.0039783991 + 1176100 0.0043341675 0.0018367671 0.0039699901 + 1176200 0.0052052122 0.0020969552 0.0046588956 + 1176300 0.0040757998 0.0022114969 0.0042175547 + 1176400 0.0039461845 0.0021321726 0.0040744353 + 1176500 0.006336472 0.0018931402 0.0050118725 + 1176600 0.0066427846 0.0023034734 0.0055729689 + 1176700 0.0045019307 0.0022430277 0.0044588217 + 1176800 0.0063319042 0.002069983 0.0051864671 + 1176900 0.0052891837 0.0024657456 0.0050690157 + 1177000 0.0036843528 0.0027365214 0.0045499138 + 1177100 0.0042864055 0.0024777354 0.0045874506 + 1177200 0.0041220866 0.0022832015 0.004312041 + 1177300 0.0053775703 0.0022213111 0.004868084 + 1177400 0.0055859864 0.0023010898 0.0050504425 + 1177500 0.0042188371 0.0023825489 0.0044590078 + 1177600 0.0056927446 0.0024284464 0.0052303442 + 1177700 0.0053174458 0.0023601307 0.0049773111 + 1177800 0.005168293 0.0021356313 0.0046794005 + 1177900 0.0031412513 0.0019649382 0.0035110229 + 1178000 0.0059873307 0.0016150744 0.0045619638 + 1178100 0.004143903 0.0017602381 0.0037998154 + 1178200 0.0049959225 0.0019092126 0.0043681432 + 1178300 0.0057147826 0.0019867035 0.004799448 + 1178400 0.0048129129 0.0021947187 0.0045635743 + 1178500 0.0042483087 0.0022782669 0.0043692314 + 1178600 0.0050576881 0.0023484644 0.0048377953 + 1178700 0.0048444148 0.0025869996 0.00497136 + 1178800 0.0063556511 0.0024622267 0.0055903987 + 1178900 0.0057913696 0.0021326696 0.0049831093 + 1179000 0.0059626013 0.0023376304 0.0052723482 + 1179100 0.0054727498 0.0026862452 0.0053798643 + 1179200 0.0048555283 0.0025847172 0.0049745476 + 1179300 0.0044836121 0.0026095063 0.0048162841 + 1179400 0.0043266466 0.0024350687 0.0045645901 + 1179500 0.0039582008 0.0023566882 0.0043048651 + 1179600 0.0048051695 0.0025067073 0.0048717516 + 1179700 0.0047746316 0.0028089674 0.0051589814 + 1179800 0.0058299741 0.0027176342 0.0055870745 + 1179900 0.0050721931 0.0031787474 0.0056752175 + 1180000 0.0061434713 0.0030231722 0.006046912 + 1180100 0.0057428555 0.0027753954 0.0056019571 + 1180200 0.0054234191 0.0025434542 0.0052127933 + 1180300 0.0043601598 0.0023017696 0.0044477858 + 1180400 0.0045403158 0.0021549236 0.0043896103 + 1180500 0.0062461813 0.0017550637 0.0048293561 + 1180600 0.0044974135 0.0019947003 0.004208271 + 1180700 0.006208301 0.0026084983 0.0056641464 + 1180800 0.0063334274 0.002457788 0.0055750218 + 1180900 0.0039596166 0.0027407643 0.0046896381 + 1181000 0.004952683 0.0027582917 0.0051959404 + 1181100 0.0048849928 0.0025387567 0.0049430891 + 1181200 0.0050443956 0.002015645 0.0044984335 + 1181300 0.0055044393 0.0021406168 0.004849833 + 1181400 0.0058327819 0.0022550041 0.0051258265 + 1181500 0.0052830581 0.0029003197 0.0055005748 + 1181600 0.0059132546 0.0032795724 0.0061900024 + 1181700 0.0035293467 0.0031779192 0.0049150195 + 1181800 0.0057662108 0.0023630044 0.0052010612 + 1181900 0.0049395101 0.002106951 0.0045381161 + 1182000 0.0050756116 0.0022284007 0.0047265533 + 1182100 0.0043723065 0.0024940211 0.0046460156 + 1182200 0.0041432942 0.0025832265 0.0046225041 + 1182300 0.006530988 0.0026565395 0.0058710102 + 1182400 0.0052039057 0.0026001157 0.005161413 + 1182500 0.0043670294 0.002851637 0.0050010343 + 1182600 0.0036643534 0.0027037538 0.0045073028 + 1182700 0.0047665803 0.0024367009 0.0047827522 + 1182800 0.0059181168 0.0025051703 0.0054179934 + 1182900 0.0040956014 0.0028548993 0.0048707031 + 1183000 0.0057044306 0.0030553917 0.0058630411 + 1183100 0.0061465504 0.0029568253 0.0059820806 + 1183200 0.0056679999 0.0026530258 0.0054427445 + 1183300 0.005777735 0.0027327255 0.0055764544 + 1183400 0.0040930111 0.0032974296 0.0053119585 + 1183500 0.0051705135 0.003274415 0.0058192772 + 1183600 0.0057094442 0.0031288311 0.0059389482 + 1183700 0.0042705016 0.0032260223 0.0053279098 + 1183800 0.0064781772 0.0028046848 0.0059931627 + 1183900 0.0050003358 0.0029120368 0.0053731396 + 1184000 0.0051838396 0.0028965787 0.0054479998 + 1184100 0.0058658657 0.0025465789 0.0054336847 + 1184200 0.0057378387 0.0025710062 0.0053950987 + 1184300 0.0065389265 0.003051613 0.0062699908 + 1184400 0.0042784931 0.0031456068 0.0052514276 + 1184500 0.0075543107 0.002770699 0.0064888363 + 1184600 0.0038320684 0.0030671733 0.0049532694 + 1184700 0.0068836248 0.003172189 0.0065602231 + 1184800 0.0052381555 0.0028405657 0.0054187204 + 1184900 0.0048053257 0.0024891774 0.0048542986 + 1185000 0.0049123818 0.0024740836 0.0048918966 + 1185100 0.0069480544 0.002541521 0.0059612665 + 1185200 0.0061035233 0.0026864663 0.0056905442 + 1185300 0.0065204125 0.0028128582 0.0060221238 + 1185400 0.0057378361 0.003140701 0.0059647922 + 1185500 0.0052995998 0.0031761247 0.0057845215 + 1185600 0.0047898299 0.0031024801 0.0054599745 + 1185700 0.0047598911 0.0028927963 0.0052355552 + 1185800 0.0043205025 0.0027088378 0.0048353351 + 1185900 0.004182238 0.0032609939 0.0053194391 + 1186000 0.0049466611 0.0037203843 0.0061550691 + 1186100 0.0075153834 0.0029633421 0.0066623199 + 1186200 0.005952768 0.0024214338 0.0053513118 + 1186300 0.0045338439 0.0024857197 0.004717221 + 1186400 0.0039728987 0.0028940752 0.0048494863 + 1186500 0.0070007291 0.0038725181 0.0073181894 + 1186600 0.006721709 0.0038388568 0.0071471979 + 1186700 0.0055335323 0.0040923156 0.006815851 + 1186800 0.0054868375 0.0039391915 0.0066397443 + 1186900 0.0065071584 0.0032156689 0.0064184109 + 1187000 0.0049099978 0.0025488954 0.0049655349 + 1187100 0.0042134564 0.0025800176 0.0046538282 + 1187200 0.0031585852 0.003300472 0.0048550882 + 1187300 0.0067737322 0.0034098551 0.0067438014 + 1187400 0.0050297259 0.0037287664 0.0062043346 + 1187500 0.0051397838 0.0030057959 0.0055355332 + 1187600 0.0055468048 0.0020691524 0.0047992204 + 1187700 0.0050564984 0.0020236563 0.0045124016 + 1187800 0.0042675667 0.0021311754 0.0042316184 + 1187900 0.0037595055 0.0019511377 0.0038015193 + 1188000 0.0037697331 0.0017586814 0.0036140969 + 1188100 0.0045335396 0.002314244 0.0045455955 + 1188200 0.0045182737 0.0021209098 0.0043447476 + 1188300 0.0051985895 0.001672396 0.0042310768 + 1188400 0.0041695541 0.0021293336 0.004181536 + 1188500 0.006292215 0.0021865288 0.0052834784 + 1188600 0.004942999 0.002043249 0.0044761313 + 1188700 0.005022989 0.0025872393 0.0050594917 + 1188800 0.0045609679 0.002596793 0.0048416444 + 1188900 0.0045641782 0.0032085696 0.005455001 + 1189000 0.0042988048 0.0027869089 0.0049027269 + 1189100 0.00398304 0.0020922677 0.0040526701 + 1189200 0.0045048309 0.0019077949 0.0041250164 + 1189300 0.0051786009 0.0019808636 0.0045297062 + 1189400 0.0045784854 0.0020093532 0.0042628265 + 1189500 0.0051120721 0.001970535 0.004486633 + 1189600 0.0044467672 0.0017839838 0.003972627 + 1189700 0.0045131602 0.0022403643 0.0044616853 + 1189800 0.0032331007 0.002984013 0.0045753047 + 1189900 0.006078208 0.0026766843 0.0056683023 + 1190000 0.0045261564 0.0022569076 0.0044846252 + 1190100 0.0051987448 0.002049329 0.0046080862 + 1190200 0.004779418 0.0024251929 0.0047775626 + 1190300 0.004300943 0.0025241437 0.0046410141 + 1190400 0.0053516946 0.0023511687 0.0049852059 + 1190500 0.0043150056 0.0023743763 0.0044981681 + 1190600 0.0061088807 0.0025507729 0.0055574876 + 1190700 0.0038351394 0.002551762 0.0044393697 + 1190800 0.004246945 0.0022584567 0.0043487499 + 1190900 0.0051584521 0.0020761387 0.0046150644 + 1191000 0.0047115158 0.0022670361 0.0045859853 + 1191100 0.0044893315 0.0028303402 0.0050399331 + 1191200 0.006536 0.0026859904 0.0059029279 + 1191300 0.0055540728 0.0024653055 0.0051989507 + 1191400 0.0059039227 0.0022034473 0.0051092843 + 1191500 0.0058159591 0.0020265524 0.0048890948 + 1191600 0.0047863245 0.0020225771 0.0043783462 + 1191700 0.004174721 0.0022398252 0.0042945707 + 1191800 0.0048588091 0.0023797117 0.0047711568 + 1191900 0.0046831749 0.002571828 0.0048768281 + 1192000 0.0059062127 0.0024127937 0.0053197577 + 1192100 0.0041490352 0.0024751031 0.0045172064 + 1192200 0.0042252197 0.0026869817 0.004766582 + 1192300 0.0055778715 0.0024317705 0.0051771291 + 1192400 0.0037959591 0.0026252441 0.0044935677 + 1192500 0.00512867 0.0023077147 0.004831982 + 1192600 0.0054102835 0.0023072061 0.0049700801 + 1192700 0.00597936 0.0024631871 0.0054061533 + 1192800 0.0053236067 0.0028505863 0.005470799 + 1192900 0.0047977701 0.0028662483 0.0052276508 + 1193000 0.0045713589 0.0024265417 0.0046765075 + 1193100 0.0066379493 0.0019736457 0.0052407613 + 1193200 0.0050147636 0.0024739857 0.0049421897 + 1193300 0.0045421238 0.0029527775 0.0051883541 + 1193400 0.0043817168 0.0027741839 0.0049308101 + 1193500 0.0038367714 0.0024843455 0.0043727565 + 1193600 0.0041309784 0.0022113174 0.0042445333 + 1193700 0.0043505506 0.0020424261 0.0041837127 + 1193800 0.0047451944 0.0022211147 0.0045566401 + 1193900 0.0055200967 0.0023524861 0.0050694087 + 1194000 0.0058636965 0.0022775113 0.0051635495 + 1194100 0.0037152706 0.0025999101 0.0044285199 + 1194200 0.0056987911 0.002667719 0.0054725927 + 1194300 0.0041701203 0.002457221 0.0045097021 + 1194400 0.0054497342 0.00203528 0.0047175711 + 1194500 0.0054747112 0.0023559541 0.0050505386 + 1194600 0.0043077965 0.0032010485 0.0053212921 + 1194700 0.0051202382 0.0035221661 0.0060422834 + 1194800 0.0061111349 0.0031092602 0.0061170844 + 1194900 0.0055465458 0.0028487031 0.0055786436 + 1195000 0.006222553 0.0033181768 0.0063808395 + 1195100 0.0056269139 0.0033225421 0.0060920388 + 1195200 0.0043792785 0.0026808946 0.0048363208 + 1195300 0.0063252799 0.001867458 0.0049806817 + 1195400 0.0052557957 0.0018806725 0.0044675095 + 1195500 0.0063833465 0.0020589345 0.0052007379 + 1195600 0.0058089094 0.0016676694 0.0045267419 + 1195700 0.0056211091 0.0017257006 0.0044923402 + 1195800 0.0040383424 0.0021526042 0.0041402259 + 1195900 0.0037384857 0.0020636524 0.0039036883 + 1196000 0.005395895 0.0020982908 0.0047540829 + 1196100 0.0057120149 0.0022121456 0.0050235279 + 1196200 0.0060694071 0.0018394085 0.0048266948 + 1196300 0.0057823095 0.0020887703 0.0049347507 + 1196400 0.0052219441 0.0021773909 0.0047475665 + 1196500 0.0045627781 0.0022801312 0.0045258736 + 1196600 0.00485071 0.0021984811 0.0045859399 + 1196700 0.0052611535 0.0022251852 0.0048146592 + 1196800 0.0051198557 0.0022075362 0.0047274652 + 1196900 0.0048117363 0.001798591 0.0041668675 + 1197000 0.0042825533 0.001790112 0.0038979312 + 1197100 0.005348905 0.0019353591 0.0045680232 + 1197200 0.0033154904 0.0022278409 0.0038596838 + 1197300 0.0041906882 0.0022437829 0.0043063873 + 1197400 0.0045090534 0.0020926386 0.0043119383 + 1197500 0.0040574934 0.0016657874 0.0036628349 + 1197600 0.0048762441 0.0018493608 0.0042493872 + 1197700 0.0063497312 0.0024132025 0.0055384608 + 1197800 0.0046251597 0.0026708513 0.0049472971 + 1197900 0.0069719337 0.0028551476 0.0062866462 + 1198000 0.0044692544 0.0027583599 0.0049580711 + 1198100 0.0041915325 0.0028717737 0.0049347936 + 1198200 0.0061294936 0.0028767867 0.0058936469 + 1198300 0.0053198892 0.0024869179 0.0051053009 + 1198400 0.0058837829 0.0021386245 0.0050345489 + 1198500 0.0049132505 0.0022760239 0.0046942644 + 1198600 0.0046412712 0.0021718954 0.0044562711 + 1198700 0.0045286575 0.0020474986 0.0042764472 + 1198800 0.0043951777 0.0020693259 0.0042325774 + 1198900 0.0053010447 0.0020598185 0.0046689264 + 1199000 0.0048610389 0.0022977388 0.0046902814 + 1199100 0.0065968829 0.0024693606 0.0057162638 + 1199200 0.0053155687 0.0027039851 0.0053202416 + 1199300 0.0054972004 0.0028530892 0.0055587425 + 1199400 0.0062024119 0.0026212792 0.0056740288 + 1199500 0.0055216234 0.0024368083 0.0051544823 + 1199600 0.0053384574 0.0024057002 0.0050332222 + 1199700 0.006368849 0.0020448513 0.0051795192 + 1199800 0.0050780972 0.0022440811 0.004743457 + 1199900 0.0038633873 0.0025688801 0.004470391 + 1200000 0.0063516408 0.002298404 0.0054246022 + 1200100 0.0060878359 0.0021627557 0.0051591124 + 1200200 0.0056388388 0.0030333991 0.005808765 + 1200300 0.0041902877 0.0025999267 0.004662334 + 1200400 0.006283227 0.0019402546 0.0050327804 + 1200500 0.0049190135 0.0022570221 0.004678099 + 1200600 0.0038708868 0.0024980423 0.0044032444 + 1200700 0.0050114163 0.0022676177 0.0047341741 + 1200800 0.0063653733 0.0021734237 0.0053063808 + 1200900 0.006365828 0.0026078258 0.0057410068 + 1201000 0.0043852148 0.0028734331 0.0050317811 + 1201100 0.0058261542 0.0024732687 0.005340829 + 1201200 0.0036321832 0.0027904805 0.0045781956 + 1201300 0.0051301588 0.0020646165 0.0045896165 + 1201400 0.0061405895 0.0017890215 0.0048113429 + 1201500 0.0056523574 0.0019911248 0.0047731445 + 1201600 0.0053925963 0.0026782981 0.0053324666 + 1201700 0.0040852599 0.003057261 0.0050679748 + 1201800 0.0055135883 0.0029445968 0.0056583161 + 1201900 0.0068881019 0.002473658 0.0058638956 + 1202000 0.0052123226 0.0027273492 0.0052927892 + 1202100 0.004391538 0.0034495005 0.0056109607 + 1202200 0.0055299325 0.0038105343 0.006532298 + 1202300 0.0055390954 0.0031234096 0.0058496831 + 1202400 0.0042184034 0.0027781002 0.0048543456 + 1202500 0.0044268132 0.0026497483 0.0048285704 + 1202600 0.0035727428 0.0029738294 0.0047322888 + 1202700 0.0056870229 0.0028863676 0.0056854492 + 1202800 0.0071989522 0.0027630507 0.006306285 + 1202900 0.0053495528 0.0027265564 0.0053595394 + 1203000 0.0053397479 0.0025457053 0.0051738625 + 1203100 0.0060050412 0.0024113071 0.0053669133 + 1203200 0.0047153054 0.0025209357 0.00484175 + 1203300 0.0051919812 0.0022908377 0.0048462659 + 1203400 0.0043544467 0.0023448058 0.0044880101 + 1203500 0.0048804861 0.0026118225 0.0050139368 + 1203600 0.0054587809 0.0025165811 0.0052033248 + 1203700 0.0062025059 0.0027152537 0.0057680496 + 1203800 0.0048681232 0.0026932237 0.0050892531 + 1203900 0.0052276618 0.0025048792 0.005077869 + 1204000 0.005391501 0.0026909576 0.0053445869 + 1204100 0.0054879044 0.0029869106 0.0056879886 + 1204200 0.0058702558 0.0028882563 0.0057775228 + 1204300 0.0053966617 0.0023805119 0.0050366813 + 1204400 0.0051530045 0.0022804132 0.0048166576 + 1204500 0.0043694889 0.0022980178 0.0044486256 + 1204600 0.0042641912 0.0023092076 0.0044079891 + 1204700 0.0043579375 0.0018831675 0.0040280898 + 1204800 0.0063257606 0.0020704301 0.0051838904 + 1204900 0.0040565681 0.0029066513 0.0049032434 + 1205000 0.0054050621 0.0029396294 0.0055999334 + 1205100 0.005238259 0.0026855753 0.0052637809 + 1205200 0.0071015998 0.0025507977 0.0060461164 + 1205300 0.006183181 0.0025522171 0.0055955014 + 1205400 0.004574534 0.0024545717 0.0047061002 + 1205500 0.0041011224 0.0023142169 0.004332738 + 1205600 0.005027222 0.0021264348 0.0046007707 + 1205700 0.0060686013 0.0021661145 0.0051530042 + 1205800 0.0036859521 0.0023152981 0.0041294777 + 1205900 0.0048740334 0.0023601685 0.0047591068 + 1206000 0.0039938866 0.0022827523 0.0042484933 + 1206100 0.004598437 0.0029596057 0.005222899 + 1206200 0.0061176075 0.0031908898 0.0062018998 + 1206300 0.0049089949 0.0032143304 0.0056304763 + 1206400 0.0048250026 0.0033186466 0.0056934526 + 1206500 0.0079203023 0.0028411902 0.006739464 + 1206600 0.005126173 0.0026027671 0.0051258054 + 1206700 0.0061990389 0.002382026 0.0054331154 + 1206800 0.0051924774 0.0026427427 0.0051984152 + 1206900 0.0048387575 0.0027599881 0.005141564 + 1207000 0.0039574445 0.0025281809 0.0044759856 + 1207100 0.0041307843 0.0025409862 0.0045741066 + 1207200 0.0065283404 0.0021442065 0.005357374 + 1207300 0.0067602325 0.0027666066 0.0060939085 + 1207400 0.003488681 0.0028096689 0.004526754 + 1207500 0.0046239732 0.002663219 0.0049390808 + 1207600 0.0045139502 0.0027245595 0.0049462693 + 1207700 0.0046586126 0.002904697 0.0051976079 + 1207800 0.0040451527 0.0025829366 0.0045739103 + 1207900 0.006075512 0.002070365 0.005060656 + 1208000 0.0045789412 0.0024051743 0.0046588719 + 1208100 0.0034270935 0.002879007 0.0045657796 + 1208200 0.0048866811 0.002990118 0.0053952813 + 1208300 0.004878715 0.0021802661 0.0045815086 + 1208400 0.0046005415 0.0021559196 0.0044202486 + 1208500 0.003794187 0.0023419928 0.0042094442 + 1208600 0.0044917269 0.0021401392 0.0043509111 + 1208700 0.0052782087 0.0021255783 0.0047234466 + 1208800 0.0032139954 0.0021575543 0.0037394427 + 1208900 0.0052089674 0.0023045086 0.0048682972 + 1209000 0.0043451726 0.002438959 0.0045775986 + 1209100 0.0057368825 0.0023651193 0.0051887412 + 1209200 0.0045244364 0.002240435 0.0044673061 + 1209300 0.0035334841 0.0023505147 0.0040896514 + 1209400 0.0056041319 0.0019833219 0.0047416056 + 1209500 0.0048418143 0.0023288677 0.0047119482 + 1209600 0.0031655068 0.0029315672 0.0044895901 + 1209700 0.004838994 0.0030706471 0.0054523394 + 1209800 0.0036682544 0.0022524355 0.0040579044 + 1209900 0.0045842512 0.0020862844 0.0043425955 + 1210000 0.0050247231 0.0028474949 0.0053206008 + 1210100 0.0045348375 0.0030376679 0.0052696583 + 1210200 0.0044115513 0.0026146068 0.0047859172 + 1210300 0.0039577719 0.0030639563 0.0050119222 + 1210400 0.0040121174 0.0033666407 0.0053413547 + 1210500 0.004291115 0.0029086275 0.0050206606 + 1210600 0.0051341666 0.0022969974 0.00482397 + 1210700 0.0054623978 0.0019654705 0.0046539944 + 1210800 0.0044452188 0.0018080347 0.0039959159 + 1210900 0.0062156842 0.0020326357 0.0050919178 + 1211000 0.0045460868 0.0025444714 0.0047819986 + 1211100 0.0046081628 0.0025749359 0.0048430161 + 1211200 0.0042054752 0.0028479585 0.0049178409 + 1211300 0.0066137494 0.0027989566 0.0060541614 + 1211400 0.0036237938 0.0030879047 0.0048714907 + 1211500 0.0049260143 0.0025228434 0.004947366 + 1211600 0.0063240736 0.0018881664 0.0050007964 + 1211700 0.0052058662 0.0021143387 0.004676601 + 1211800 0.005590774 0.0021511607 0.0049028697 + 1211900 0.0051080676 0.0029728547 0.0054869817 + 1212000 0.0034521876 0.003272257 0.0049713806 + 1212100 0.0054039309 0.0027924899 0.0054522371 + 1212200 0.0051201925 0.0027393095 0.0052594042 + 1212300 0.0044661615 0.0028008169 0.0049990058 + 1212400 0.0054341553 0.0021948104 0.0048694337 + 1212500 0.0048796641 0.0024926942 0.0048944039 + 1212600 0.0041127434 0.0028233507 0.0048475916 + 1212700 0.004579734 0.002767175 0.0050212628 + 1212800 0.0061633083 0.0023965215 0.0054300248 + 1212900 0.0060578411 0.0019172243 0.0048988179 + 1213000 0.0036610178 0.002367632 0.0041695391 + 1213100 0.0046571032 0.0027114991 0.0050036671 + 1213200 0.0054698003 0.0026627465 0.0053549138 + 1213300 0.0050183098 0.0026858727 0.0051558221 + 1213400 0.0051273521 0.0027227894 0.0052464081 + 1213500 0.0046831448 0.0028815833 0.0051865686 + 1213600 0.0054902203 0.0025840078 0.0052862256 + 1213700 0.0043893301 0.0025072203 0.0046675937 + 1213800 0.0046068689 0.0028205018 0.0050879451 + 1213900 0.0048969775 0.0025526331 0.0049628642 + 1214000 0.0041943033 0.0025804505 0.0046448342 + 1214100 0.0040121294 0.0025999254 0.0045746453 + 1214200 0.005370481 0.0028013232 0.0054446068 + 1214300 0.0059072742 0.0025840855 0.005491572 + 1214400 0.0055304882 0.0030404927 0.0057625299 + 1214500 0.0043891872 0.0034059984 0.0055663015 + 1214600 0.0055994545 0.0030175621 0.0057735436 + 1214700 0.0061481569 0.0028873538 0.0059133998 + 1214800 0.0079943925 0.0025610039 0.0064957439 + 1214900 0.0052602164 0.0025253318 0.0051143446 + 1215000 0.0038680243 0.0023029883 0.0042067815 + 1215100 0.0050890387 0.00242963 0.0049343912 + 1215200 0.004113272 0.0023497481 0.0043742492 + 1215300 0.0038499734 0.0021963382 0.004091247 + 1215400 0.0041281775 0.0022528088 0.0042846461 + 1215500 0.0051454557 0.0024478937 0.0049804227 + 1215600 0.0072871312 0.0017700365 0.0053566714 + 1215700 0.0050108738 0.0016902288 0.0041565183 + 1215800 0.004871837 0.002165082 0.0045629393 + 1215900 0.0064086284 0.0025597535 0.0057140003 + 1216000 0.0041459309 0.0028659035 0.0049064789 + 1216100 0.0049227991 0.002844425 0.0052673652 + 1216200 0.0051910481 0.0025537837 0.0051087527 + 1216300 0.0044374623 0.0027883326 0.0049723961 + 1216400 0.0071951181 0.0029668755 0.0065082227 + 1216500 0.0043799416 0.0029180915 0.005073844 + 1216600 0.0047258169 0.0030544293 0.0053804173 + 1216700 0.0045218103 0.0027350443 0.0049606228 + 1216800 0.0044661716 0.0022175622 0.004415756 + 1216900 0.0049903781 0.0021374137 0.0045936155 + 1217000 0.0043389059 0.0022385076 0.0043740629 + 1217100 0.006407007 0.0023647134 0.0055181622 + 1217200 0.0048730074 0.0025264623 0.0049248956 + 1217300 0.0049369975 0.0023502554 0.0047801839 + 1217400 0.0046140018 0.00266051 0.004931464 + 1217500 0.0053336802 0.0022569629 0.0048821336 + 1217600 0.0040862154 0.0020516741 0.0040628583 + 1217700 0.0049972171 0.0018410143 0.0043005821 + 1217800 0.0035183377 0.0018542972 0.003585979 + 1217900 0.005207947 0.0020501278 0.0046134142 + 1218000 0.0037648244 0.0021702667 0.0040232662 + 1218100 0.0042024998 0.0021898638 0.0042582817 + 1218200 0.0055091201 0.0018748013 0.0045863214 + 1218300 0.0055223909 0.002071586 0.0047896378 + 1218400 0.0045717671 0.0024112625 0.0046614291 + 1218500 0.0059612069 0.0023071113 0.0052411429 + 1218600 0.0054463893 0.0018107338 0.0044913786 + 1218700 0.0053892503 0.0019350361 0.0045875577 + 1218800 0.0053832629 0.0019235672 0.0045731419 + 1218900 0.0047018368 0.0020795533 0.0043937386 + 1219000 0.0042371614 0.0019729418 0.0040584196 + 1219100 0.0045700183 0.0015310568 0.0037803627 + 1219200 0.0047594762 0.0014156176 0.0037581723 + 1219300 0.003685734 0.0018034542 0.0036175264 + 1219400 0.0048707931 0.0021272098 0.0045245532 + 1219500 0.0049542694 0.0022203142 0.0046587437 + 1219600 0.0050473906 0.0023030486 0.0047873112 + 1219700 0.0040256572 0.0024668173 0.0044481955 + 1219800 0.0044644207 0.0025585266 0.0047558586 + 1219900 0.0048460796 0.0029030836 0.0052882634 + 1220000 0.0062816604 0.0030527926 0.0061445473 + 1220100 0.005115471 0.0027505235 0.0052682943 + 1220200 0.0062119902 0.0025631034 0.0056205674 + 1220300 0.0060884229 0.0023511886 0.0053478342 + 1220400 0.0045214209 0.002504838 0.0047302248 + 1220500 0.0046308707 0.0024313914 0.0047106481 + 1220600 0.0041174951 0.0022973487 0.0043239283 + 1220700 0.0053244446 0.0023537237 0.0049743488 + 1220800 0.0059630339 0.0029036463 0.005838577 + 1220900 0.0047749352 0.0029832469 0.0053334103 + 1221000 0.0056946746 0.0030348287 0.0058376764 + 1221100 0.0059814455 0.0030607263 0.006004719 + 1221200 0.0051202788 0.0023622434 0.0048823807 + 1221300 0.004984285 0.0020689303 0.004522133 + 1221400 0.0068744926 0.0022085256 0.0055920649 + 1221500 0.0040543232 0.0026313856 0.0046268728 + 1221600 0.0077106493 0.0024936013 0.0062886865 + 1221700 0.0051547144 0.0026715004 0.0052085864 + 1221800 0.0063239398 0.0021493055 0.0052618697 + 1221900 0.0054208799 0.0021977296 0.004865819 + 1222000 0.004665222 0.002428667 0.004724831 + 1222100 0.004561046 0.0025830993 0.0048279891 + 1222200 0.0056901502 0.0028618947 0.0056625155 + 1222300 0.0050248446 0.0034538667 0.0059270324 + 1222400 0.0052476439 0.0037342998 0.0063171245 + 1222500 0.0048766086 0.0034432902 0.0058434959 + 1222600 0.0051544272 0.0025827195 0.0051196642 + 1222700 0.0051347832 0.0023111877 0.0048384638 + 1222800 0.0043624262 0.0021475217 0.0042946534 + 1222900 0.0041498605 0.0025728196 0.0046153291 + 1223000 0.0033467348 0.0024887573 0.0041359783 + 1223100 0.0050613256 0.0022335996 0.0047247208 + 1223200 0.005643903 0.0024287302 0.0052065887 + 1223300 0.0038254939 0.0024166386 0.0042994989 + 1223400 0.0042332384 0.0020770815 0.0041606285 + 1223500 0.0044656332 0.0020583747 0.0042563035 + 1223600 0.004882894 0.0021446391 0.0045479385 + 1223700 0.0061946461 0.0026042832 0.0056532106 + 1223800 0.0056527037 0.0029556689 0.005737859 + 1223900 0.0049803219 0.002904934 0.0053561862 + 1224000 0.0060799778 0.0026895715 0.0056820606 + 1224100 0.0053600648 0.0023380187 0.0049761756 + 1224200 0.0056949114 0.0023339672 0.0051369314 + 1224300 0.0053694402 0.0025057888 0.0051485601 + 1224400 0.0038090966 0.0023248217 0.0041996114 + 1224500 0.004489443 0.0026708532 0.0048805009 + 1224600 0.0045501674 0.0030569115 0.005296447 + 1224700 0.0052479327 0.0029799229 0.0055628897 + 1224800 0.0047647318 0.0026428132 0.0049879546 + 1224900 0.0051321248 0.0018748554 0.004400823 + 1225000 0.0039272498 0.0016638217 0.0035967649 + 1225100 0.0051763008 0.0018644654 0.004412176 + 1225200 0.0034056793 0.002181257 0.0038574897 + 1225300 0.0042970863 0.0024283062 0.0045432784 + 1225400 0.0063294294 0.0025823334 0.0056975994 + 1225500 0.0058664982 0.0024376931 0.0053251102 + 1225600 0.0039685805 0.0025568649 0.0045101507 + 1225700 0.0048389399 0.0026306393 0.005012305 + 1225800 0.0053039688 0.0024337781 0.0050443252 + 1225900 0.0062284234 0.0023811229 0.005446675 + 1226000 0.0057656623 0.0021774755 0.0050152624 + 1226100 0.005838147 0.0022816553 0.0051551183 + 1226200 0.0037740306 0.0025397216 0.0043972523 + 1226300 0.0048268885 0.0025327635 0.0049084977 + 1226400 0.0054671593 0.0025382635 0.005229131 + 1226500 0.0047711244 0.0018531878 0.0042014756 + 1226600 0.0054091403 0.0017847566 0.0044470679 + 1226700 0.0039490498 0.0017919361 0.0037356091 + 1226800 0.0047240603 0.0020807899 0.0044059133 + 1226900 0.0059246705 0.0023325061 0.0052485549 + 1227000 0.0067133475 0.0024037951 0.0057080208 + 1227100 0.0072778075 0.00195123 0.0055332758 + 1227200 0.0050639405 0.0014984279 0.0039908361 + 1227300 0.0064431428 0.0014502432 0.0046214776 + 1227400 0.0051629137 0.0022838419 0.0048249635 + 1227500 0.0057692552 0.002377012 0.0052165673 + 1227600 0.0051643892 0.0023501072 0.004891955 + 1227700 0.0044807812 0.0026594571 0.0048648416 + 1227800 0.0054256379 0.0028703044 0.0055407356 + 1227900 0.0045980454 0.0027284553 0.0049915558 + 1228000 0.0054522573 0.0020856729 0.0047692058 + 1228100 0.004651788 0.0019381089 0.0042276608 + 1228200 0.0055255044 0.0018826055 0.0046021897 + 1228300 0.0038131475 0.002277255 0.0041540386 + 1228400 0.0043024746 0.0023641452 0.0044817694 + 1228500 0.0043454544 0.002704886 0.0048436643 + 1228600 0.0042641503 0.0025622065 0.004660968 + 1228700 0.0062657222 0.0025456916 0.0056296018 + 1228800 0.0058883258 0.0030563682 0.0059545286 + 1228900 0.0048127256 0.0032604177 0.0056291811 + 1229000 0.0062757459 0.0033524372 0.0064412809 + 1229100 0.0043987704 0.0033447963 0.0055098161 + 1229200 0.0040227961 0.0029886022 0.0049685722 + 1229300 0.0047777432 0.0021405055 0.0044920509 + 1229400 0.0059707574 0.0022418934 0.0051806255 + 1229500 0.0053975498 0.002500489 0.0051570956 + 1229600 0.0055231112 0.0026426461 0.0053610523 + 1229700 0.0056529972 0.0021888815 0.004971216 + 1229800 0.0055793423 0.0024043653 0.0051504478 + 1229900 0.0048799599 0.0026996918 0.0051015471 + 1230000 0.0046353733 0.0027718384 0.0050533112 + 1230100 0.0055496431 0.0027506062 0.0054820712 + 1230200 0.0041035506 0.0025397285 0.0045594448 + 1230300 0.0062103949 0.0020806814 0.0051373601 + 1230400 0.0043182268 0.0020946737 0.004220051 + 1230500 0.0036885647 0.0021831723 0.0039986378 + 1230600 0.0056248193 0.0021180569 0.0048865227 + 1230700 0.0044823617 0.0024665023 0.0046726647 + 1230800 0.0048606692 0.0026319366 0.0050242972 + 1230900 0.006954861 0.0026320497 0.0060551454 + 1231000 0.0051091836 0.0029824315 0.0054971078 + 1231100 0.0041626925 0.0028876089 0.0049364341 + 1231200 0.0045914579 0.0025669224 0.0048267806 + 1231300 0.0047678458 0.0021666702 0.0045133444 + 1231400 0.0036605949 0.0023152733 0.0041169723 + 1231500 0.0043314978 0.0020713238 0.0042032329 + 1231600 0.0053069871 0.0017444958 0.0043565285 + 1231700 0.005708117 0.0017088876 0.0045183515 + 1231800 0.0053830154 0.0026496624 0.0052991153 + 1231900 0.0036640032 0.0036700839 0.0054734605 + 1232000 0.0043220393 0.0030603265 0.0051875802 + 1232100 0.0037258748 0.0025194033 0.0043532323 + 1232200 0.0034496491 0.0020861816 0.0037840558 + 1232300 0.0053270842 0.0020708744 0.0046927987 + 1232400 0.0042033393 0.0026599472 0.0047287783 + 1232500 0.0061102992 0.0026926754 0.0057000883 + 1232600 0.0047928605 0.0030711248 0.0054301108 + 1232700 0.0071167887 0.0024327563 0.0059355508 + 1232800 0.0060771973 0.0022222102 0.0052133308 + 1232900 0.0053936094 0.002627009 0.0052816761 + 1233000 0.0043989744 0.0029923013 0.0051574215 + 1233100 0.0056766237 0.0027430432 0.0055370065 + 1233200 0.0041768729 0.0025051303 0.0045609349 + 1233300 0.0054621012 0.00250129 0.0051896679 + 1233400 0.0041819147 0.0026967584 0.0047550446 + 1233500 0.0042737594 0.0025959457 0.0046994367 + 1233600 0.0053408721 0.0023063565 0.004935067 + 1233700 0.0048960868 0.0022227763 0.004632569 + 1233800 0.0039189465 0.0022867624 0.0042156188 + 1233900 0.0057765804 0.002576005 0.0054191657 + 1234000 0.0069178609 0.0024075564 0.0058124411 + 1234100 0.0043975132 0.0024984576 0.0046628586 + 1234200 0.0042745042 0.0019636661 0.0040675236 + 1234300 0.0044879497 0.0018346459 0.0040435587 + 1234400 0.0057215411 0.0019048462 0.0047209172 + 1234500 0.0037360609 0.0023247393 0.0041635817 + 1234600 0.0047554119 0.002626854 0.0049674083 + 1234700 0.0050763103 0.0029239588 0.0054224553 + 1234800 0.0049046266 0.0028083403 0.0052223362 + 1234900 0.0046145975 0.0025095645 0.0047808117 + 1235000 0.0047921218 0.0021808027 0.0045394251 + 1235100 0.0042700287 0.002295769 0.0043974237 + 1235200 0.0038482945 0.0021909844 0.0040850669 + 1235300 0.0045825618 0.0019163761 0.0041718558 + 1235400 0.0041311554 0.0024132391 0.0044465421 + 1235500 0.0047370207 0.0031069405 0.0054384429 + 1235600 0.00373988 0.0030761298 0.004916852 + 1235700 0.0060064825 0.0024516316 0.0054079472 + 1235800 0.0061177475 0.0023615081 0.0053725869 + 1235900 0.006159879 0.0021250975 0.0051569129 + 1236000 0.0058612164 0.0022562619 0.0051410793 + 1236100 0.0060475072 0.0019796602 0.0049561677 + 1236200 0.0049684718 0.0019399702 0.00438539 + 1236300 0.0053781401 0.0026981992 0.0053452525 + 1236400 0.0064149306 0.0025157133 0.0056730619 + 1236500 0.0058547292 0.0020364638 0.0049180883 + 1236600 0.0040103451 0.0025521737 0.0045260154 + 1236700 0.0042719426 0.0025629835 0.0046655802 + 1236800 0.004833378 0.0023881747 0.004767103 + 1236900 0.0044091721 0.0026180986 0.0047882379 + 1237000 0.0046093257 0.0025342568 0.0048029093 + 1237100 0.0054837127 0.0024302138 0.0051292286 + 1237200 0.0039341753 0.0023007611 0.004237113 + 1237300 0.0056239102 0.0024324635 0.0052004818 + 1237400 0.0049500967 0.002999984 0.0054363598 + 1237500 0.0075011598 0.0028325701 0.0065245472 + 1237600 0.005198688 0.0028007344 0.0053594637 + 1237700 0.0049169038 0.0024811417 0.0049011803 + 1237800 0.006895949 0.001834309 0.0052284089 + 1237900 0.0041566386 0.0022463588 0.0042922044 + 1238000 0.0042289922 0.0023531907 0.0044346478 + 1238100 0.0039810506 0.002502626 0.0044620493 + 1238200 0.004325473 0.0025079471 0.0046368908 + 1238300 0.0048173677 0.0025212234 0.0048922715 + 1238400 0.0048334717 0.0026695324 0.0050485068 + 1238500 0.0043255666 0.0026408459 0.0047698357 + 1238600 0.0044900681 0.0023952619 0.0046052173 + 1238700 0.005529738 0.0025672294 0.0052888973 + 1238800 0.005892341 0.002629252 0.0055293886 + 1238900 0.0057493991 0.0029808837 0.005810666 + 1239000 0.0050842998 0.0026610781 0.0051635069 + 1239100 0.005402205 0.0020199312 0.004678829 + 1239200 0.0050887736 0.0017646991 0.0042693299 + 1239300 0.0050525796 0.0015686358 0.0040554524 + 1239400 0.0053817066 0.002034434 0.0046832427 + 1239500 0.0031516887 0.0019438558 0.0034950776 + 1239600 0.004361034 0.0018879041 0.0040343505 + 1239700 0.0045376641 0.0019096202 0.0041430017 + 1239800 0.0047135365 0.0021581154 0.0044780592 + 1239900 0.0041943226 0.0023199793 0.0043843724 + 1240000 0.0042095597 0.0021025454 0.0041744381 + 1240100 0.006361896 0.0016263007 0.0047575464 + 1240200 0.0052315661 0.001995568 0.0045704794 + 1240300 0.0039738485 0.0020966359 0.0040525144 + 1240400 0.0047027534 0.0020261601 0.0043407966 + 1240500 0.0049545106 0.0021995237 0.0046380719 + 1240600 0.0045555274 0.0023394034 0.004581577 + 1240700 0.0056259389 0.0026881174 0.0054571342 + 1240800 0.0064411215 0.003023571 0.0061938105 + 1240900 0.0045918611 0.0023963356 0.0046563922 + 1241000 0.0041647131 0.0021808588 0.0042306786 + 1241100 0.0031115428 0.0022087599 0.0037402224 + 1241200 0.0043263135 0.0017696856 0.003899043 + 1241300 0.0059652902 0.0017637852 0.0046998265 + 1241400 0.0045793273 0.0022310398 0.0044849274 + 1241500 0.0053760529 0.0023243538 0.0049703799 + 1241600 0.0069613694 0.0022295328 0.0056558319 + 1241700 0.004557503 0.0023185125 0.0045616585 + 1241800 0.004421102 0.0023811321 0.0045571432 + 1241900 0.005293685 0.0020572319 0.0046627175 + 1242000 0.0042236835 0.0020949383 0.0041737826 + 1242100 0.0049813958 0.0017347528 0.0041865335 + 1242200 0.0046286537 0.0015366416 0.0038148071 + 1242300 0.0056019204 0.0015712564 0.0043284515 + 1242400 0.0044299573 0.0020403187 0.0042206883 + 1242500 0.005884893 0.0021766038 0.0050730746 + 1242600 0.0060181075 0.0022818061 0.0052438435 + 1242700 0.0061915833 0.0028851781 0.005932598 + 1242800 0.0054666741 0.0034095046 0.0061001333 + 1242900 0.0044537691 0.0034758297 0.0056679191 + 1243000 0.0038960623 0.0031817676 0.0050993608 + 1243100 0.0049062633 0.0031651505 0.0055799519 + 1243200 0.0065486118 0.0031715825 0.0063947274 + 1243300 0.0047188445 0.0025620573 0.0048846136 + 1243400 0.0057704927 0.0021701573 0.0050103217 + 1243500 0.0035741859 0.0018957017 0.0036548713 + 1243600 0.0056915738 0.0021370061 0.0049383276 + 1243700 0.0039153985 0.0025552514 0.0044823616 + 1243800 0.004248202 0.0024909052 0.0045818171 + 1243900 0.0059063496 0.0022068916 0.0051139231 + 1244000 0.0042924198 0.0024878186 0.004600494 + 1244100 0.0049464861 0.0021981589 0.0046327575 + 1244200 0.0039386262 0.0021126086 0.0040511512 + 1244300 0.0044794383 0.0021601754 0.004364899 + 1244400 0.0058050358 0.0017535608 0.0046107269 + 1244500 0.0037262091 0.0017156123 0.0035496058 + 1244600 0.0048218188 0.0020799612 0.0044532001 + 1244700 0.005281099 0.0025872285 0.0051865194 + 1244800 0.0060592511 0.0024499943 0.005432282 + 1244900 0.0061557819 0.0023318476 0.0053616465 + 1245000 0.0051001008 0.0022596072 0.0047698131 + 1245100 0.0068533709 0.0018865416 0.0052596851 + 1245200 0.0070521047 0.0024309425 0.0059019003 + 1245300 0.0060652015 0.002497493 0.0054827093 + 1245400 0.0057376612 0.002371629 0.0051956341 + 1245500 0.0036478228 0.0024440589 0.0042394717 + 1245600 0.0044295832 0.0024164436 0.0045966291 + 1245700 0.0045774433 0.0024675169 0.0047204773 + 1245800 0.0048708952 0.0023456459 0.0047430397 + 1245900 0.0053982012 0.0020858189 0.0047427461 + 1246000 0.005949572 0.0020024537 0.0049307587 + 1246100 0.0060547259 0.0017811305 0.0047611909 + 1246200 0.004149582 0.0024029431 0.0044453155 + 1246300 0.0036826277 0.0030291277 0.004841671 + 1246400 0.0050697929 0.0026378997 0.0051331884 + 1246500 0.004285921 0.0022861323 0.0043956091 + 1246600 0.0052123302 0.0019897554 0.0045551991 + 1246700 0.0049395052 0.0023668114 0.0047979741 + 1246800 0.0041676953 0.0020604126 0.0041117001 + 1246900 0.0050253551 0.0014601163 0.0039335332 + 1247000 0.0052725604 0.0018131491 0.0044082375 + 1247100 0.0056207002 0.0025944627 0.0053609011 + 1247200 0.0053042701 0.0021843276 0.004795023 + 1247300 0.0066225027 0.0019442009 0.005203714 + 1247400 0.0045829178 0.0026496071 0.0049052619 + 1247500 0.0053950636 0.0024578334 0.0051132163 + 1247600 0.0053962454 0.0027077757 0.0053637402 + 1247700 0.0063574467 0.003018317 0.0061473728 + 1247800 0.0057401367 0.0024415871 0.0052668107 + 1247900 0.0041255425 0.0024351803 0.0044657208 + 1248000 0.0045485357 0.0020640608 0.0043027932 + 1248100 0.0058557041 0.0021805141 0.0050626184 + 1248200 0.0047681597 0.0017256095 0.0040724381 + 1248300 0.0061723227 0.0013588286 0.0043967687 + 1248400 0.0057440725 0.0016045363 0.004431697 + 1248500 0.0050541103 0.0019015551 0.004389125 + 1248600 0.005194954 0.0019991933 0.0045560847 + 1248700 0.0045980205 0.0019043989 0.0041674871 + 1248800 0.0050777552 0.0018843722 0.0043835798 + 1248900 0.004314401 0.0021801937 0.0043036879 + 1249000 0.0048678427 0.0022597345 0.0046556259 + 1249100 0.004092595 0.0027551512 0.0047694753 + 1249200 0.0047721336 0.0030088746 0.0053576591 + 1249300 0.0050816372 0.0028521877 0.005353306 + 1249400 0.0063576148 0.002427066 0.0055562045 + 1249500 0.0036990649 0.0024611517 0.0042817852 + 1249600 0.0050419771 0.0024140406 0.0048956387 + 1249700 0.0031269649 0.0022617243 0.0038007773 + 1249800 0.0043072241 0.0022122073 0.0043321691 + 1249900 0.0047704581 0.0028009544 0.0051489142 + 1250000 0.0052331951 0.0029601114 0.0055358247 + 1250100 0.0056057494 0.0028641059 0.0056231856 + 1250200 0.0060326351 0.0022729152 0.0052421028 + 1250300 0.0059143589 0.0022987328 0.0052097064 + 1250400 0.0056956622 0.0026016941 0.0054050278 + 1250500 0.0055853586 0.0028715748 0.0056206185 + 1250600 0.0061218323 0.0032564797 0.006269569 + 1250700 0.0050352955 0.0029814804 0.0054597899 + 1250800 0.0049930933 0.0026107761 0.0050683142 + 1250900 0.0068241939 0.0027534664 0.0061122494 + 1251000 0.0056336945 0.002647932 0.005420766 + 1251100 0.0048892312 0.0025137672 0.0049201856 + 1251200 0.0056769569 0.0020866923 0.0048808195 + 1251300 0.0066610289 0.0020548956 0.0053333708 + 1251400 0.0062824255 0.0021345477 0.005226679 + 1251500 0.0047830545 0.0023398281 0.0046939878 + 1251600 0.0043830779 0.0025993728 0.004756669 + 1251700 0.0047791709 0.0024633784 0.0048156266 + 1251800 0.0069457744 0.0018281291 0.0052467525 + 1251900 0.0050721329 0.0018724086 0.0043688491 + 1252000 0.0056959932 0.002104696 0.0049081926 + 1252100 0.0056018746 0.0018195869 0.0045767596 + 1252200 0.0065083891 0.0020233906 0.0052267384 + 1252300 0.0041738624 0.0025150219 0.0045693447 + 1252400 0.0049806385 0.0020388475 0.0044902555 + 1252500 0.0042445446 0.0019895591 0.0040786709 + 1252600 0.0048289597 0.0023598032 0.0047365568 + 1252700 0.0050732777 0.0025454336 0.0050424375 + 1252800 0.0044916142 0.0025030147 0.004713731 + 1252900 0.0050828067 0.0023946628 0.0048963568 + 1253000 0.003945415 0.0021563692 0.0040982532 + 1253100 0.0039446635 0.0017538754 0.0036953894 + 1253200 0.0039950502 0.0016394741 0.0036057878 + 1253300 0.0046291346 0.0016212072 0.0038996094 + 1253400 0.0059530463 0.0017102855 0.0046403005 + 1253500 0.0042673817 0.0019484789 0.0040488308 + 1253600 0.0055016773 0.0020139752 0.004721832 + 1253700 0.005804968 0.0020689216 0.0049260543 + 1253800 0.0056275497 0.0023846243 0.0051544339 + 1253900 0.0062942883 0.0021953753 0.0052933453 + 1254000 0.0061455537 0.0023129797 0.0053377444 + 1254100 0.0049964026 0.0029944237 0.0054535906 + 1254200 0.0044968647 0.002874252 0.0050875526 + 1254300 0.0061828547 0.0028060096 0.0058491334 + 1254400 0.0055164693 0.0028355909 0.0055507281 + 1254500 0.0061291487 0.0030606727 0.0060773631 + 1254600 0.0039797254 0.003045895 0.0050046661 + 1254700 0.0061688457 0.0020015548 0.0050377836 + 1254800 0.0050912067 0.0017322179 0.0042380462 + 1254900 0.0060011143 0.0015170152 0.0044706886 + 1255000 0.0044109154 0.0018179682 0.0039889656 + 1255100 0.0064610884 0.0021346891 0.005314756 + 1255200 0.0044966342 0.0022704627 0.0044836498 + 1255300 0.0054248317 0.0021371271 0.0048071615 + 1255400 0.0048697031 0.0024376184 0.0048344254 + 1255500 0.0059804359 0.0021786033 0.0051220991 + 1255600 0.0053355867 0.0019957714 0.0046218805 + 1255700 0.0047458488 0.0024143463 0.0047501937 + 1255800 0.0041851148 0.0027236399 0.0047835011 + 1255900 0.0052105185 0.0025267383 0.0050912904 + 1256000 0.0053169454 0.0025991168 0.0052160508 + 1256100 0.0050789603 0.0031105131 0.0056103138 + 1256200 0.0034150202 0.0030450513 0.0047258816 + 1256300 0.0040982094 0.002933445 0.0049505324 + 1256400 0.0052326115 0.0027884472 0.0053638732 + 1256500 0.0064559231 0.0023473946 0.0055249192 + 1256600 0.0052522449 0.0025575942 0.0051426835 + 1256700 0.0065159043 0.0023919892 0.0055990358 + 1256800 0.0052520935 0.0027223939 0.0053074087 + 1256900 0.0062531749 0.0028335815 0.005911316 + 1257000 0.0072695069 0.0022134769 0.0057914373 + 1257100 0.0045859324 0.0022675638 0.0045247024 + 1257200 0.0047520053 0.0021313714 0.0044702491 + 1257300 0.005208273 0.0020655842 0.0046290311 + 1257400 0.0042694504 0.0022850074 0.0043863775 + 1257500 0.0060035765 0.0026670262 0.0056219115 + 1257600 0.0049377937 0.0027640616 0.005194382 + 1257700 0.0045883492 0.0026414281 0.0048997562 + 1257800 0.0035054205 0.002957949 0.0046832731 + 1257900 0.0041021238 0.0025911398 0.0046101539 + 1258000 0.0042425292 0.0021648724 0.0042529922 + 1258100 0.0038783702 0.0021636251 0.0040725104 + 1258200 0.0049314377 0.0022404999 0.0046676919 + 1258300 0.004383105 0.0024180282 0.0045753377 + 1258400 0.0058674759 0.0022268751 0.0051147734 + 1258500 0.0039854301 0.002030164 0.0039917429 + 1258600 0.0047845389 0.0021255972 0.0044804874 + 1258700 0.004916498 0.0023219582 0.0047417971 + 1258800 0.0063731813 0.0029666689 0.0061034691 + 1258900 0.0070238099 0.0030723153 0.0065293468 + 1259000 0.0070281169 0.0023253999 0.0057845512 + 1259100 0.0042275779 0.0022120615 0.0042928225 + 1259200 0.0046852796 0.0019739008 0.0042799368 + 1259300 0.0040230084 0.0020194646 0.003999539 + 1259400 0.0048987767 0.0020996855 0.0045108022 + 1259500 0.0052139889 0.0023287746 0.0048950347 + 1259600 0.0038484752 0.0026882144 0.0045823858 + 1259700 0.0043336225 0.002349405 0.0044823598 + 1259800 0.0045256856 0.0019957654 0.0042232513 + 1259900 0.004135825 0.0019639849 0.0039995863 + 1260000 0.0048135316 0.0021056216 0.0044747817 + 1260100 0.0039922884 0.0019626137 0.0039275682 + 1260200 0.0046371657 0.0021139224 0.0043962774 + 1260300 0.0046146944 0.00269005 0.0049613449 + 1260400 0.0046088196 0.0027662379 0.0050346413 + 1260500 0.007496484 0.0021167645 0.0058064402 + 1260600 0.0059731892 0.0021704359 0.005110365 + 1260700 0.0036115229 0.0031229313 0.0049004778 + 1260800 0.0050833385 0.0030301514 0.005532107 + 1260900 0.0067312723 0.0026507531 0.0059638012 + 1261000 0.0038910819 0.0027218801 0.004637022 + 1261100 0.0045767167 0.0028027581 0.0050553608 + 1261200 0.0052984234 0.0030808649 0.0056886827 + 1261300 0.0072408068 0.0028611759 0.0064250105 + 1261400 0.0056274943 0.0028950468 0.0056648292 + 1261500 0.0040025423 0.0027093837 0.004679385 + 1261600 0.0049634345 0.0023136959 0.0047566364 + 1261700 0.003792224 0.0027369892 0.0046034745 + 1261800 0.0040855923 0.0026194226 0.0046303001 + 1261900 0.0048152561 0.0024691538 0.0048391627 + 1262000 0.0038502854 0.0024988895 0.0043939518 + 1262100 0.0045586083 0.0026735646 0.0049172546 + 1262200 0.0059022594 0.002798233 0.0057032513 + 1262300 0.0035697295 0.0027093266 0.0044663029 + 1262400 0.0065371694 0.0025939997 0.0058115127 + 1262500 0.0054877994 0.0025334462 0.0052344725 + 1262600 0.0056248979 0.0025622537 0.0053307581 + 1262700 0.0043621344 0.0023971945 0.0045441825 + 1262800 0.0038116068 0.0026918804 0.0045679056 + 1262900 0.0053218445 0.0026901213 0.0053094666 + 1263000 0.0047305365 0.0025782915 0.0049066024 + 1263100 0.0049638177 0.0022739294 0.0047170585 + 1263200 0.0054327659 0.0023463161 0.0050202555 + 1263300 0.0046124951 0.0024644764 0.0047346889 + 1263400 0.0036554243 0.0020640248 0.0038631789 + 1263500 0.0041028019 0.0017903805 0.0038097283 + 1263600 0.0045240089 0.0016447729 0.0038714335 + 1263700 0.0041895753 0.0017794052 0.0038414618 + 1263800 0.0051557971 0.0020365172 0.0045741361 + 1263900 0.0043256578 0.0019912309 0.0041202655 + 1264000 0.0047471869 0.0018797711 0.0042162771 + 1264100 0.0046488414 0.0019981751 0.0042862767 + 1264200 0.0051216997 0.0021538422 0.0046746787 + 1264300 0.0038097216 0.0021457989 0.0040208962 + 1264400 0.0051324448 0.0019656371 0.0044917623 + 1264500 0.0046652061 0.0019259822 0.0042221384 + 1264600 0.0050749085 0.001857272 0.0043550785 + 1264700 0.0039166541 0.0018672053 0.0037949335 + 1264800 0.0051591673 0.0021480735 0.0046873511 + 1264900 0.0048215165 0.0021417758 0.0045148659 + 1265000 0.0043828449 0.0018293595 0.0039865409 + 1265100 0.0047276098 0.001551421 0.0038782915 + 1265200 0.0048435475 0.0016594301 0.0040433636 + 1265300 0.0049928364 0.0020071353 0.0044645469 + 1265400 0.0052496923 0.0021314404 0.0047152733 + 1265500 0.0039774491 0.0024442901 0.0044019408 + 1265600 0.0034485401 0.002975025 0.0046723533 + 1265700 0.0036397541 0.0031535501 0.0049449915 + 1265800 0.0049352024 0.0022495895 0.0046786344 + 1265900 0.0050899526 0.0017772874 0.0042824985 + 1266000 0.0039706952 0.0016351106 0.0035894372 + 1266100 0.0050076621 0.0018948135 0.0043595222 + 1266200 0.0043589228 0.0018746047 0.0040200121 + 1266300 0.0043359866 0.0019773719 0.0041114903 + 1266400 0.0047944497 0.0021943349 0.0045541031 + 1266500 0.0050571877 0.0019932923 0.0044823768 + 1266600 0.0037649203 0.0020637737 0.0039168204 + 1266700 0.005415593 0.0016638512 0.0043293384 + 1266800 0.0035149272 0.0016796292 0.0034096324 + 1266900 0.0066362225 0.001646221 0.0049124867 + 1267000 0.0043631006 0.0019970428 0.0041445064 + 1267100 0.0061836156 0.0020359313 0.0050794296 + 1267200 0.0056714327 0.0018106785 0.0046020868 + 1267300 0.0045399002 0.0018453094 0.0040797915 + 1267400 0.0042831043 0.002317129 0.0044252194 + 1267500 0.0044892039 0.0020743315 0.0042838615 + 1267600 0.0047712105 0.0015674485 0.0039157787 + 1267700 0.0039578391 0.0015019717 0.0034499706 + 1267800 0.004719006 0.0019000561 0.0042226918 + 1267900 0.0051073314 0.0018833601 0.0043971248 + 1268000 0.004534352 0.00203952 0.0042712714 + 1268100 0.0075758796 0.0023946619 0.0061234151 + 1268200 0.0056484724 0.0031559055 0.005936013 + 1268300 0.0054592866 0.0037145009 0.0064014935 + 1268400 0.0066572843 0.0029393347 0.0062159668 + 1268500 0.0067362929 0.0022252994 0.0055408186 + 1268600 0.0041212835 0.0028569721 0.0048854164 + 1268700 0.0034742303 0.0029639137 0.0046738864 + 1268800 0.0048618295 0.0024254117 0.0048183434 + 1268900 0.0044240368 0.0027357933 0.004913249 + 1269000 0.0039780356 0.0027338525 0.0046917919 + 1269100 0.0053928715 0.002556738 0.0052110419 + 1269200 0.0059683909 0.002589831 0.0055273984 + 1269300 0.0050186157 0.0026472713 0.0051173712 + 1269400 0.0062543485 0.0026670949 0.0057454071 + 1269500 0.0052293196 0.0023594512 0.0049332569 + 1269600 0.0050776239 0.0021722148 0.0046713578 + 1269700 0.0059244307 0.0023814938 0.0052974245 + 1269800 0.0044007005 0.0026461181 0.0048120879 + 1269900 0.0042182669 0.0024365483 0.0045127265 + 1270000 0.0043757445 0.0022098613 0.004363548 + 1270100 0.0059931442 0.0016347971 0.0045845477 + 1270200 0.0075170145 0.0016395935 0.0053393741 + 1270300 0.004650979 0.0021299084 0.0044190622 + 1270400 0.0043663045 0.0025937054 0.0047427459 + 1270500 0.0054776448 0.0023453046 0.0050413329 + 1270600 0.0052700157 0.002169385 0.0047632209 + 1270700 0.004734685 0.0026844269 0.0050147796 + 1270800 0.0048319864 0.0026507655 0.0050290088 + 1270900 0.0058990686 0.0024232473 0.0053266951 + 1271000 0.0070376897 0.0026928116 0.0061566744 + 1271100 0.0055303319 0.0033017004 0.0060236606 + 1271200 0.0050094361 0.0032412087 0.0057067905 + 1271300 0.0056558432 0.0029480892 0.0057318245 + 1271400 0.0062570954 0.0029896576 0.0060693217 + 1271500 0.0057105778 0.0032004854 0.0060111604 + 1271600 0.0065771935 0.0033566866 0.006593899 + 1271700 0.0052114545 0.0032267951 0.0057918078 + 1271800 0.0058218655 0.0026854654 0.0055509148 + 1271900 0.0045363584 0.0021518912 0.0043846301 + 1272000 0.0056083395 0.0022698806 0.0050302352 + 1272100 0.0043711723 0.0024181903 0.0045696266 + 1272200 0.0044461398 0.0023753122 0.0045636467 + 1272300 0.0038250346 0.0018676954 0.0037503296 + 1272400 0.0047422828 0.0021935991 0.0045276914 + 1272500 0.0054635067 0.0024208523 0.0051099221 + 1272600 0.0059221017 0.0026300926 0.005544877 + 1272700 0.00426459 0.0026036698 0.0047026476 + 1272800 0.0065933213 0.0024117317 0.0056568821 + 1272900 0.0058032049 0.0021026665 0.0049589314 + 1273000 0.0048533311 0.0021194656 0.0045082145 + 1273100 0.0063012947 0.0025567737 0.0056581922 + 1273200 0.0070065095 0.0030258424 0.0064743588 + 1273300 0.0051095723 0.0029033073 0.0054181749 + 1273400 0.0066487079 0.0028050361 0.006077447 + 1273500 0.0059564656 0.0029464078 0.0058781057 + 1273600 0.0039381536 0.0025748696 0.0045131796 + 1273700 0.0063935376 0.0021528312 0.0052996505 + 1273800 0.0051158521 0.0023602316 0.00487819 + 1273900 0.0051802599 0.0022448789 0.004794538 + 1274000 0.0048345491 0.0020093415 0.0043888461 + 1274100 0.0044752189 0.0018842162 0.0040868631 + 1274200 0.0040952078 0.0020271582 0.0040427683 + 1274300 0.004318966 0.0019796158 0.0041053569 + 1274400 0.0045475638 0.001903687 0.0041419411 + 1274500 0.0055600563 0.0016639487 0.004400539 + 1274600 0.0048019347 0.0015094691 0.0038729213 + 1274700 0.0045092434 0.0018339002 0.0040532934 + 1274800 0.0054991684 0.0022605913 0.0049672132 + 1274900 0.0035911121 0.0025760015 0.004343502 + 1275000 0.0065164449 0.0023141198 0.0055214325 + 1275100 0.0052328648 0.0021867471 0.0047622978 + 1275200 0.0053613393 0.0021531471 0.0047919312 + 1275300 0.0046667852 0.0026661312 0.0049630645 + 1275400 0.006373836 0.0024886835 0.0056258059 + 1275500 0.0040731515 0.002269662 0.0042744162 + 1275600 0.0062119263 0.0024087146 0.0054661471 + 1275700 0.0051719034 0.0024297147 0.0049752609 + 1275800 0.0056651452 0.002771521 0.0055598346 + 1275900 0.0052050722 0.0025840821 0.0051459535 + 1276000 0.0053226707 0.0022863707 0.0049061227 + 1276100 0.0039101406 0.0021336831 0.0040582054 + 1276200 0.0043155352 0.0017367922 0.0038608447 + 1276300 0.003902112 0.0019705743 0.003891145 + 1276400 0.0048918915 0.0019912642 0.0043989921 + 1276500 0.0052831492 0.0019657521 0.0045660521 + 1276600 0.0058667952 0.0017097341 0.0045972973 + 1276700 0.0062050592 0.0014719301 0.0045259827 + 1276800 0.0056872434 0.0013999448 0.0041991349 + 1276900 0.0071579343 0.0020016913 0.005524737 + 1277000 0.004920243 0.0026973258 0.0051190079 + 1277100 0.004946847 0.0029133052 0.0053480815 + 1277200 0.0060297215 0.0022182369 0.0051859904 + 1277300 0.0052502573 0.0018631962 0.0044473072 + 1277400 0.0040771475 0.0021689845 0.0041757056 + 1277500 0.0041071352 0.0020898994 0.00411138 + 1277600 0.0046195149 0.0023380026 0.0046116701 + 1277700 0.0050880003 0.0021680247 0.0046722749 + 1277800 0.0038880853 0.002530482 0.0044441489 + 1277900 0.0055898234 0.0022796498 0.005030891 + 1278000 0.0039854232 0.0024499127 0.0044114882 + 1278100 0.0077490952 0.0022294451 0.0060434529 + 1278200 0.0043336377 0.002435803 0.0045687653 + 1278300 0.0036847587 0.0019786923 0.0037922844 + 1278400 0.0052585362 0.002077264 0.0046654498 + 1278500 0.005048084 0.001993466 0.0044780698 + 1278600 0.0043629144 0.0025468716 0.0046942435 + 1278700 0.0051815526 0.0020233999 0.0045736954 + 1278800 0.0043553193 0.0017704049 0.0039140386 + 1278900 0.0072733185 0.0018771025 0.005456939 + 1279000 0.0046582087 0.0027018592 0.0049945713 + 1279100 0.0034695022 0.0027206127 0.0044282584 + 1279200 0.0049120037 0.0025377403 0.0049553671 + 1279300 0.0052479788 0.0021079817 0.0046909713 + 1279400 0.0052584818 0.002131801 0.00471996 + 1279500 0.0042196435 0.0020795002 0.004156356 + 1279600 0.0066724898 0.0019345263 0.0052186424 + 1279700 0.0053535603 0.0027004971 0.0053354526 + 1279800 0.0043585993 0.0028582528 0.0050035008 + 1279900 0.0051692679 0.0023290374 0.0048732864 + 1280000 0.0046154313 0.0021295486 0.0044012063 + 1280100 0.0039297216 0.0026048557 0.0045390155 + 1280200 0.0043417294 0.002247867 0.0043848119 + 1280300 0.004556513 0.0022133787 0.0044560375 + 1280400 0.0041139005 0.0023648199 0.0043896303 + 1280500 0.0043705114 0.0023890139 0.004540125 + 1280600 0.0053784575 0.0023984458 0.0050456554 + 1280700 0.0037306235 0.0022731305 0.0041092967 + 1280800 0.0065428261 0.0018869982 0.0051072954 + 1280900 0.0052579566 0.0018662422 0.0044541427 + 1281000 0.0060004163 0.0020358786 0.0049892085 + 1281100 0.0039264182 0.0019259962 0.0038585301 + 1281200 0.0060467639 0.0019496107 0.0049257523 + 1281300 0.0051568329 0.0025145391 0.0050526678 + 1281400 0.0043019847 0.0027371581 0.0048545412 + 1281500 0.0051069734 0.0026398081 0.0051533966 + 1281600 0.0045569652 0.0024305907 0.004673472 + 1281700 0.00524928 0.0027864174 0.0053700475 + 1281800 0.0042813112 0.0034256952 0.0055329031 + 1281900 0.0037585272 0.0033767846 0.0052266847 + 1282000 0.004716521 0.0027878291 0.0051092418 + 1282100 0.0046578015 0.0025768224 0.0048693341 + 1282200 0.0062327656 0.0025196432 0.0055873325 + 1282300 0.0040442993 0.0025882951 0.0045788487 + 1282400 0.0043923137 0.0026517348 0.0048135768 + 1282500 0.0057967541 0.0027407631 0.005593853 + 1282600 0.0035645611 0.0027161683 0.0044706007 + 1282700 0.0049900158 0.002233612 0.0046896354 + 1282800 0.0063215929 0.0019414174 0.0050528264 + 1282900 0.0039847773 0.0021751268 0.0041363844 + 1283000 0.005333826 0.0017561445 0.004381387 + 1283100 0.0049079485 0.0024158249 0.0048314558 + 1283200 0.0048502699 0.0026187192 0.0050059614 + 1283300 0.0063238833 0.0023429996 0.0054555359 + 1283400 0.0057914854 0.0020676189 0.0049181156 + 1283500 0.0038765347 0.0021716809 0.0040796628 + 1283600 0.0053226361 0.0022529374 0.0048726723 + 1283700 0.0046733714 0.0026349176 0.0049350926 + 1283800 0.0061943648 0.0026970806 0.0057458695 + 1283900 0.005437314 0.0028516028 0.0055277808 + 1284000 0.005241537 0.0029778597 0.0055576787 + 1284100 0.0058351875 0.0028317665 0.0057037729 + 1284200 0.005128987 0.0024220686 0.0049464919 + 1284300 0.0048743552 0.0023159063 0.0047150031 + 1284400 0.004666322 0.0022891627 0.0045858681 + 1284500 0.0037144729 0.0027942687 0.0046224858 + 1284600 0.0056775441 0.0029842618 0.005778678 + 1284700 0.0077326076 0.0032309666 0.0070368594 + 1284800 0.004806199 0.0030734393 0.0054389904 + 1284900 0.0057886138 0.0028126586 0.0056617419 + 1285000 0.0039315946 0.0026927647 0.0046278465 + 1285100 0.0052100042 0.0022970264 0.0048613254 + 1285200 0.0038682251 0.0028332006 0.0047370926 + 1285300 0.0061454299 0.0027189749 0.0057436787 + 1285400 0.0060465085 0.0021152531 0.005091269 + 1285500 0.0054263656 0.0019972367 0.004668026 + 1285600 0.0043923443 0.0024085029 0.0045703598 + 1285700 0.0067195945 0.0022556587 0.0055629591 + 1285800 0.0056400981 0.0023942358 0.0051702216 + 1285900 0.0060181758 0.0026954565 0.0056575274 + 1286000 0.0033905206 0.0026292685 0.0042980404 + 1286100 0.0056425315 0.0025395511 0.0053167346 + 1286200 0.0036935485 0.0023340726 0.004151991 + 1286300 0.0054996006 0.001896125 0.0046029597 + 1286400 0.0036781271 0.0022324092 0.0040427374 + 1286500 0.0043731176 0.0025428834 0.0046952772 + 1286600 0.0064313766 0.0023024728 0.0054679159 + 1286700 0.004614995 0.0025078218 0.0047792646 + 1286800 0.0052866371 0.0024659616 0.0050679783 + 1286900 0.0052077374 0.0023186504 0.0048818337 + 1287000 0.004834278 0.0022560506 0.0046354217 + 1287100 0.0042351698 0.0021119081 0.0041964057 + 1287200 0.0051913982 0.0019024949 0.0044576362 + 1287300 0.0038507277 0.0017254568 0.0036207369 + 1287400 0.0057109234 0.0016285509 0.004439396 + 1287500 0.0047549451 0.0021048336 0.0044451581 + 1287600 0.0052288919 0.0022144912 0.0047880865 + 1287700 0.0053429165 0.0023054743 0.0049351911 + 1287800 0.0050057396 0.002698224 0.0051619865 + 1287900 0.0051948169 0.0026109728 0.0051677967 + 1288000 0.0034642672 0.002330309 0.004035378 + 1288100 0.0056452647 0.0019440692 0.0047225979 + 1288200 0.0047203594 0.0019212081 0.00424451 + 1288300 0.0045941649 0.0023984241 0.0046596147 + 1288400 0.0047405396 0.0023366171 0.0046698515 + 1288500 0.0045384661 0.0021841877 0.004417964 + 1288600 0.0060031591 0.0023569592 0.0053116391 + 1288700 0.0047789175 0.0029660367 0.0053181601 + 1288800 0.0043178709 0.003185107 0.0053103091 + 1288900 0.0050314079 0.0032613879 0.005737784 + 1289000 0.0054847054 0.0028880313 0.0055875347 + 1289100 0.0054373778 0.0024343929 0.0051106022 + 1289200 0.0066309269 0.0025081338 0.0057717931 + 1289300 0.0047413955 0.0029530894 0.005286745 + 1289400 0.0039863896 0.0027094705 0.0046715216 + 1289500 0.0049473488 0.0024372587 0.0048722819 + 1289600 0.0057462964 0.0018727182 0.0047009734 + 1289700 0.0057686372 0.0017207404 0.0045599915 + 1289800 0.0043557709 0.001792863 0.003936719 + 1289900 0.0041273681 0.0016964763 0.0037279152 + 1290000 0.0053144833 0.0017841723 0.0043998945 + 1290100 0.0047569819 0.0022076539 0.0045489809 + 1290200 0.0055750443 0.0020595431 0.0048035102 + 1290300 0.0048428391 0.0018932829 0.0042768678 + 1290400 0.0044331353 0.0016787648 0.0038606986 + 1290500 0.0048808868 0.0014937853 0.0038960968 + 1290600 0.004218793 0.0015453106 0.0036217478 + 1290700 0.0048549763 0.0015021431 0.0038917017 + 1290800 0.0045296508 0.0017409693 0.0039704068 + 1290900 0.0050890985 0.0015810193 0.0040858099 + 1291000 0.0049844279 0.0018739663 0.0043272394 + 1291100 0.0045762096 0.0018474655 0.0040998186 + 1291200 0.0049043243 0.0018668618 0.0042807089 + 1291300 0.0038826354 0.0018389436 0.0037499282 + 1291400 0.0057706323 0.0016375277 0.0044777608 + 1291500 0.0055352718 0.0018231913 0.0045475829 + 1291600 0.0052628768 0.0022690623 0.0048593845 + 1291700 0.005426893 0.0024836235 0.0051546724 + 1291800 0.0037051135 0.0026695893 0.0044931999 + 1291900 0.0048106329 0.0032962079 0.0056639413 + 1292000 0.0040176978 0.0030217171 0.0049991777 + 1292100 0.0058617714 0.0021905295 0.0050756201 + 1292200 0.0038408765 0.0021384439 0.0040288753 + 1292300 0.0042436494 0.0025698934 0.0046585646 + 1292400 0.0056897873 0.0023307487 0.0051311909 + 1292500 0.0047617294 0.0024239905 0.0047676542 + 1292600 0.0052942167 0.0022829183 0.0048886656 + 1292700 0.0060571419 0.0027024369 0.0056836865 + 1292800 0.0050420125 0.0028759907 0.0053576063 + 1292900 0.003509557 0.0031597494 0.0048871095 + 1293000 0.0057753709 0.0033348113 0.0061773766 + 1293100 0.0042397259 0.0032138135 0.0053005536 + 1293200 0.0046888985 0.0027153014 0.0050231186 + 1293300 0.0053824995 0.0019944201 0.0046436191 + 1293400 0.0057934476 0.0017772745 0.004628737 + 1293500 0.0047313211 0.001981136 0.0043098331 + 1293600 0.0051635629 0.0019478368 0.0044892779 + 1293700 0.0038353433 0.0020448066 0.0039325146 + 1293800 0.0061114688 0.0022537933 0.0052617819 + 1293900 0.0049067925 0.0019206236 0.0043356855 + 1294000 0.0046724442 0.0019507337 0.0042504523 + 1294100 0.0049783033 0.0022958007 0.0047460594 + 1294200 0.0040962167 0.0020994628 0.0041155695 + 1294300 0.004691515 0.0018898253 0.0041989303 + 1294400 0.0048528884 0.0018420012 0.0042305321 + 1294500 0.0034979404 0.0018019085 0.0035235511 + 1294600 0.0041904175 0.0020610464 0.0041235175 + 1294700 0.004244099 0.0024337126 0.0045226051 + 1294800 0.0047492492 0.0029036127 0.0052411338 + 1294900 0.0062505222 0.002429814 0.0055062429 + 1295000 0.0049284586 0.0023525051 0.0047782308 + 1295100 0.005095385 0.002337882 0.0048457668 + 1295200 0.0045085926 0.0028861564 0.0051052293 + 1295300 0.0056793709 0.0033316584 0.0061269738 + 1295400 0.0056727142 0.0032461854 0.0060382244 + 1295500 0.0056987782 0.0028868567 0.0056917241 + 1295600 0.0052952669 0.0023557641 0.0049620283 + 1295700 0.0047752035 0.0018555602 0.0042058556 + 1295800 0.0048329384 0.0018996702 0.0042783821 + 1295900 0.0052574655 0.0023346183 0.0049222771 + 1296000 0.0061336061 0.0026497217 0.005668606 + 1296100 0.0059500707 0.0029118799 0.0058404303 + 1296200 0.0041852224 0.0028314094 0.0048913236 + 1296300 0.0054145364 0.0024127528 0.00507772 + 1296400 0.0064876605 0.0023333435 0.0055264889 + 1296500 0.0052440376 0.0023652597 0.0049463094 + 1296600 0.0050537266 0.0019984823 0.0044858634 + 1296700 0.0057959064 0.0021612137 0.0050138864 + 1296800 0.0031366436 0.0028490475 0.0043928642 + 1296900 0.0051956778 0.0026188002 0.0051760479 + 1297000 0.0069192422 0.0020621756 0.0054677401 + 1297100 0.0051681657 0.0020721975 0.004615904 + 1297200 0.0047207752 0.0022187467 0.0045422533 + 1297300 0.0026050302 0.0018984188 0.0031805822 + 1297400 0.0041298001 0.0019502354 0.0039828714 + 1297500 0.0057421586 0.0020800908 0.0049063095 + 1297600 0.004727166 0.0022271596 0.0045538116 + 1297700 0.0035950726 0.002310093 0.0040795428 + 1297800 0.0040894731 0.0024801264 0.0044929139 + 1297900 0.0040173096 0.0022493922 0.0042266617 + 1298000 0.004732309 0.0021064006 0.004435584 + 1298100 0.0039909297 0.0027235952 0.0046878809 + 1298200 0.00404955 0.0025892348 0.0045823727 + 1298300 0.0053614151 0.0021615622 0.0048003837 + 1298400 0.0046184346 0.0019269352 0.004200071 + 1298500 0.0072085174 0.0020209514 0.0055688936 + 1298600 0.0039383709 0.0026037262 0.0045421431 + 1298700 0.0041980903 0.0025836938 0.0046499414 + 1298800 0.0065135536 0.0025115771 0.0057174667 + 1298900 0.0048173062 0.0023721827 0.0047432006 + 1299000 0.0065079036 0.0022319568 0.0054350656 + 1299100 0.006895437 0.0020281353 0.0054219832 + 1299200 0.0053169139 0.0024321923 0.0050491109 + 1299300 0.0046262719 0.0026900852 0.0049670784 + 1299400 0.004984608 0.0028113372 0.005264699 + 1299500 0.0053141054 0.0029227961 0.0055383324 + 1299600 0.0053004874 0.0024795352 0.0050883688 + 1299700 0.0045987718 0.0020239613 0.0042874193 + 1299800 0.0043145306 0.0025024767 0.0046260347 + 1299900 0.0041202946 0.0027228599 0.0047508174 + 1300000 0.0063318497 0.002383176 0.0054996333 + 1300100 0.0058924308 0.0025114608 0.0054116416 + 1300200 0.0047190394 0.0027996247 0.005122277 + 1300300 0.006119855 0.0024985709 0.0055106871 + 1300400 0.0049513388 0.0030684339 0.005505421 + 1300500 0.0035864566 0.0039749297 0.0057401388 + 1300600 0.0078897247 0.003159147 0.0070423708 + 1300700 0.0074980434 0.0023777395 0.0060681827 + 1300800 0.0049443405 0.0023728318 0.0048063744 + 1300900 0.0065631147 0.0023697549 0.0056000379 + 1301000 0.0068541253 0.0026724691 0.0060459839 + 1301100 0.0063326822 0.0029901544 0.0061070214 + 1301200 0.0044681542 0.0028569617 0.0050561313 + 1301300 0.0047778029 0.0029640798 0.0053156547 + 1301400 0.0055199611 0.0024961316 0.0052129874 + 1301500 0.0047857048 0.0025829155 0.0049383796 + 1301600 0.0052368839 0.0025823341 0.0051598629 + 1301700 0.0058375992 0.0025756704 0.0054488638 + 1301800 0.0045759399 0.0026315022 0.0048837226 + 1301900 0.0038729533 0.0028467091 0.0047529283 + 1302000 0.0047841826 0.002732407 0.0050871218 + 1302100 0.0054710205 0.002255795 0.0049485628 + 1302200 0.0055366333 0.0027258422 0.0054509039 + 1302300 0.0055797878 0.0033512831 0.0060975849 + 1302400 0.008012364 0.0028787189 0.0068223043 + 1302500 0.0047470227 0.0022700922 0.0046065174 + 1302600 0.0037328167 0.0018648912 0.0037021369 + 1302700 0.0046862858 0.0021769215 0.0044834528 + 1302800 0.0029581106 0.0025193922 0.0039753372 + 1302900 0.0039481834 0.0024326789 0.0043759253 + 1303000 0.0058570943 0.0022785114 0.0051613 + 1303100 0.0042446774 0.0026479492 0.0047371264 + 1303200 0.0060134081 0.0025963109 0.0055560352 + 1303300 0.0055307325 0.0024036497 0.0051258071 + 1303400 0.0055739678 0.0026690511 0.0054124884 + 1303500 0.0045533781 0.0026853452 0.004926461 + 1303600 0.0043397855 0.0025520173 0.0046880055 + 1303700 0.0048949281 0.0024918458 0.0049010683 + 1303800 0.0073805965 0.0025010398 0.0061336771 + 1303900 0.0041160847 0.0028930763 0.0049189618 + 1304000 0.0050564246 0.0023557194 0.0048444284 + 1304100 0.0055585864 0.0019823434 0.0047182101 + 1304200 0.0047442236 0.002081771 0.0044168185 + 1304300 0.0052379918 0.0021168174 0.0046948915 + 1304400 0.0032972055 0.0018660346 0.0034888779 + 1304500 0.0053540355 0.0017924938 0.0044276832 + 1304600 0.004160738 0.0026294566 0.0046773199 + 1304700 0.0036667952 0.0028224335 0.0046271842 + 1304800 0.0061833866 0.0026240191 0.0056674047 + 1304900 0.0041754701 0.0029445809 0.0049996951 + 1305000 0.0050113825 0.0031360568 0.0056025966 + 1305100 0.0054532853 0.0030513264 0.0057353653 + 1305200 0.0056638958 0.0027671768 0.0055548756 + 1305300 0.0066031207 0.0024026678 0.0056526413 + 1305400 0.0049350302 0.0025612308 0.004990191 + 1305500 0.0055379898 0.0026943295 0.0054200588 + 1305600 0.0054150835 0.0024006606 0.005065897 + 1305700 0.0060223613 0.0023234695 0.0052876004 + 1305800 0.0054136813 0.0025763155 0.0052408618 + 1305900 0.0058265019 0.0028968054 0.0057645368 + 1306000 0.0041709635 0.0026336032 0.0046864993 + 1306100 0.0052690259 0.002491682 0.0050850307 + 1306200 0.0052224147 0.0021281024 0.0046985096 + 1306300 0.0051334901 0.0021110008 0.0046376405 + 1306400 0.0037565609 0.0020199453 0.0038688776 + 1306500 0.0044588317 0.0017988904 0.0039934716 + 1306600 0.0050584299 0.001883929 0.0043736249 + 1306700 0.0052725285 0.0021647011 0.0047597738 + 1306800 0.0053388024 0.001959278 0.0045869699 + 1306900 0.0043045428 0.002072168 0.0041908102 + 1307000 0.0047974469 0.0023824403 0.0047436837 + 1307100 0.0047658452 0.0023996225 0.0047453119 + 1307200 0.0044477612 0.0018380783 0.0040272108 + 1307300 0.0044486747 0.0018294167 0.0040189988 + 1307400 0.0042020658 0.0017112162 0.0037794204 + 1307500 0.0045640352 0.0019226782 0.0041690392 + 1307600 0.0049743397 0.0019186721 0.0043669799 + 1307700 0.0045399014 0.001958924 0.0041934067 + 1307800 0.0059437523 0.0022159869 0.0051414274 + 1307900 0.0054231063 0.0023395783 0.0050087635 + 1308000 0.0059547942 0.0022445252 0.0051754005 + 1308100 0.0030864476 0.0022796335 0.0037987444 + 1308200 0.0054134391 0.0018593406 0.0045237676 + 1308300 0.0037585955 0.001975202 0.0038251357 + 1308400 0.004772209 0.0021247716 0.0044735932 + 1308500 0.0053156378 0.0027577425 0.005374033 + 1308600 0.0042825586 0.0031260446 0.0052338664 + 1308700 0.0072289601 0.0023626387 0.0059206425 + 1308800 0.0057848658 0.0021194363 0.004966675 + 1308900 0.0050592795 0.0022264552 0.0047165694 + 1309000 0.0047948371 0.001967209 0.0043271678 + 1309100 0.0050628652 0.0019598453 0.0044517243 + 1309200 0.0045653538 0.0022606621 0.0045076721 + 1309300 0.0034881047 0.0019703826 0.0036871841 + 1309400 0.0057416754 0.0013083198 0.0041343007 + 1309500 0.0062314421 0.0014450903 0.0045121282 + 1309600 0.0039869932 0.0022578662 0.0042202144 + 1309700 0.0045724231 0.0024042073 0.0046546968 + 1309800 0.0057962679 0.0021869695 0.0050398201 + 1309900 0.0047623068 0.002019708 0.0043636559 + 1310000 0.006010524 0.0020491106 0.0050074154 + 1310100 0.0063881855 0.0023587898 0.0055029748 + 1310200 0.0057403147 0.0027564242 0.0055817354 + 1310300 0.0041667314 0.0029802032 0.0050310163 + 1310400 0.0045074555 0.0029624944 0.0051810076 + 1310500 0.0049398482 0.0029647237 0.0053960552 + 1310600 0.0046007132 0.002475195 0.0047396085 + 1310700 0.004681337 0.0022003984 0.004504494 + 1310800 0.0035588329 0.0026823482 0.0044339612 + 1310900 0.0047674313 0.0026533775 0.0049998476 + 1311000 0.0047063185 0.0021736029 0.0044899941 + 1311100 0.0068675182 0.0021725165 0.0055526231 + 1311200 0.004714824 0.0025992398 0.0049198173 + 1311300 0.0043657608 0.0026720831 0.004820856 + 1311400 0.0053233531 0.0021414352 0.0047615231 + 1311500 0.0048528002 0.0023300311 0.0047185186 + 1311600 0.0048648359 0.0025019264 0.0048963379 + 1311700 0.0057355414 0.0028332134 0.0056561752 + 1311800 0.005761288 0.0031786825 0.0060143165 + 1311900 0.0054464151 0.0032021235 0.0058827809 + 1312000 0.0058257821 0.0025665599 0.005433937 + 1312100 0.0060107606 0.0029074531 0.0058658743 + 1312200 0.0058985501 0.0027837857 0.0056869784 + 1312300 0.0044218122 0.0029637148 0.0051400754 + 1312400 0.0060886097 0.0025520911 0.0055488287 + 1312500 0.0059123834 0.0023494089 0.0052594102 + 1312600 0.0044203703 0.002743389 0.00491904 + 1312700 0.0066212413 0.0026749252 0.0059338174 + 1312800 0.0043883943 0.0025376001 0.0046975129 + 1312900 0.0066471741 0.0022666217 0.0055382777 + 1313000 0.0049294896 0.0020452223 0.0044714555 + 1313100 0.0031926113 0.0021226432 0.0036940065 + 1313200 0.0081627269 0.0019084054 0.0059259976 + 1313300 0.0046723847 0.0016345553 0.0039342447 + 1313400 0.0054953076 0.0016279459 0.0043326676 + 1313500 0.0049167963 0.0016096459 0.0040296316 + 1313600 0.0034147962 0.002232161 0.003912881 + 1313700 0.0042865522 0.0020564636 0.004166251 + 1313800 0.0063754328 0.0019852318 0.0051231401 + 1313900 0.0053446121 0.0022451801 0.0048757314 + 1314000 0.0054806464 0.0026543182 0.0053518238 + 1314100 0.0037620547 0.002532458 0.0043840943 + 1314200 0.0055236325 0.0022861611 0.005004824 + 1314300 0.0044446622 0.0020671074 0.0042547146 + 1314400 0.0054415455 0.0018320524 0.0045103131 + 1314500 0.0044742128 0.0020821003 0.0042842519 + 1314600 0.0060765781 0.0022830349 0.0052738507 + 1314700 0.0048609746 0.002164675 0.0045571859 + 1314800 0.0050611193 0.001931775 0.0044227947 + 1314900 0.0031835563 0.0015990136 0.0031659202 + 1315000 0.0048448505 0.0016075714 0.0039921463 + 1315100 0.0045800033 0.0017796564 0.0040338768 + 1315200 0.0050566482 0.0015131318 0.0040019508 + 1315300 0.003121771 0.0017355511 0.0032720478 + 1315400 0.0049908046 0.0022625539 0.0047189655 + 1315500 0.0050345205 0.0023551663 0.0048330944 + 1315600 0.0047374689 0.0023769969 0.0047087199 + 1315700 0.0067175031 0.0019480283 0.0052542993 + 1315800 0.0050003592 0.0018314684 0.0042925827 + 1315900 0.006555917 0.0021866357 0.0054133761 + 1316000 0.0041628346 0.0027225212 0.0047714164 + 1316100 0.0045263055 0.002924497 0.005152288 + 1316200 0.0063396275 0.0027704946 0.00589078 + 1316300 0.0049334165 0.0025866266 0.0050147925 + 1316400 0.0053120144 0.0022826761 0.0048971832 + 1316500 0.0050207788 0.0020722717 0.0045434363 + 1316600 0.0055709462 0.0021418247 0.0048837748 + 1316700 0.004618274 0.0030081087 0.0052811655 + 1316800 0.0049970391 0.0030728058 0.005532286 + 1316900 0.0072853512 0.0024633598 0.0060491186 + 1317000 0.0043933221 0.0026119401 0.0047742783 + 1317100 0.0064698274 0.0022560107 0.0054403789 + 1317200 0.0038169296 0.0019576924 0.0038363375 + 1317300 0.0043120935 0.0017473908 0.0038697493 + 1317400 0.0043378312 0.0020248322 0.0041598585 + 1317500 0.0038572541 0.0022726373 0.0041711296 + 1317600 0.0041751471 0.0022350877 0.0042900429 + 1317700 0.0043202067 0.0021274519 0.0042538037 + 1317800 0.0059104057 0.0017443936 0.0046534214 + 1317900 0.0041221135 0.0015620515 0.0035909042 + 1318000 0.0038528002 0.0015433018 0.0034396019 + 1318100 0.0046837172 0.0016156081 0.0039208751 + 1318200 0.0052158081 0.0019080154 0.004475171 + 1318300 0.0043686683 0.001880018 0.004030222 + 1318400 0.0042554142 0.001944707 0.0040391687 + 1318500 0.0062269787 0.0018645643 0.0049294054 + 1318600 0.0062687 0.0020977331 0.0051831089 + 1318700 0.0062477071 0.0019755689 0.0050506122 + 1318800 0.0051285308 0.0024723491 0.0049965479 + 1318900 0.0048644966 0.002957521 0.0053517655 + 1319000 0.0043894324 0.0026339482 0.0047943719 + 1319100 0.0051644991 0.0022991922 0.004841094 + 1319200 0.0042128386 0.0019868967 0.0040604032 + 1319300 0.0042892487 0.0023964282 0.0045075429 + 1319400 0.0050401256 0.0026237441 0.0051044309 + 1319500 0.0056353201 0.0030609734 0.0058346075 + 1319600 0.0053338451 0.0038180637 0.0064433156 + 1319700 0.0061271665 0.0035417716 0.0065574863 + 1319800 0.0052866271 0.0031822504 0.0057842622 + 1319900 0.0051945639 0.0031091778 0.0056658772 + 1320000 0.0036354723 0.0031032225 0.0048925565 + 1320100 0.0059922101 0.0027224754 0.0056717663 + 1320200 0.0055425097 0.0025032817 0.0052312357 + 1320300 0.0053273268 0.0029668172 0.0055888609 + 1320400 0.0058744953 0.003197833 0.0060891861 + 1320500 0.0068309239 0.0028633521 0.0062254474 + 1320600 0.0043075886 0.0028819985 0.0050021398 + 1320700 0.0054108464 0.0024493972 0.0051125481 + 1320800 0.0056855522 0.0021711014 0.0049694591 + 1320900 0.0049077983 0.0024618536 0.0048774106 + 1321000 0.0050513098 0.0025980052 0.0050841967 + 1321100 0.0072981138 0.0027970905 0.0063891309 + 1321200 0.006663933 0.0022312708 0.0055111753 + 1321300 0.0051856161 0.0020460811 0.0045983766 + 1321400 0.0050452514 0.0021111615 0.0045943712 + 1321500 0.0046100615 0.0025294342 0.0047984488 + 1321600 0.006070899 0.0029265955 0.0059146161 + 1321700 0.0055473991 0.0028674822 0.0055978427 + 1321800 0.0075481008 0.0026368849 0.0063519657 + 1321900 0.0051309003 0.0032514508 0.0057768158 + 1322000 0.0081653066 0.0033505697 0.0073694316 + 1322100 0.0073334421 0.0027962711 0.0064056996 + 1322200 0.0041823714 0.0025300655 0.0045885765 + 1322300 0.005331712 0.0025994568 0.0052236588 + 1322400 0.0047718131 0.0026093121 0.0049579388 + 1322500 0.0048615916 0.0027934076 0.0051862223 + 1322600 0.0047245619 0.0026811396 0.0050065099 + 1322700 0.0049123381 0.0022657358 0.0046835272 + 1322800 0.00599223 0.0023381803 0.005287481 + 1322900 0.0052575185 0.0022575157 0.0048452006 + 1323000 0.0041925048 0.0020506911 0.0041141895 + 1323100 0.0039236439 0.0020415527 0.0039727211 + 1323200 0.0046909879 0.0019899959 0.0042988415 + 1323300 0.0056710861 0.0019381784 0.0047294161 + 1323400 0.0055745393 0.0022217745 0.004965493 + 1323500 0.0042807803 0.0025358963 0.0046428429 + 1323600 0.0039593358 0.0025527773 0.0045015129 + 1323700 0.0049697314 0.0025557685 0.0050018082 + 1323800 0.0046007031 0.0021142751 0.0043786837 + 1323900 0.0048612775 0.0019082628 0.0043009229 + 1324000 0.0057909608 0.0020334915 0.00488373 + 1324100 0.0062867379 0.0016358048 0.0047300586 + 1324200 0.0059660378 0.0018609988 0.004797408 + 1324300 0.0053545971 0.0022412025 0.0048766683 + 1324400 0.005059312 0.0023038485 0.0047939787 + 1324500 0.0043704429 0.0018531157 0.004004193 + 1324600 0.0040098116 0.0016902994 0.0036638785 + 1324700 0.0038288168 0.0018753497 0.0037598455 + 1324800 0.003634961 0.0023175369 0.0041066193 + 1324900 0.0036898777 0.0025320998 0.0043482115 + 1325000 0.0043241273 0.0023565374 0.0044848188 + 1325100 0.0049317178 0.0022734395 0.0047007693 + 1325200 0.0053162192 0.0022242533 0.0048408299 + 1325300 0.0055476208 0.0021152755 0.0048457452 + 1325400 0.003593686 0.0024150048 0.0041837721 + 1325500 0.0054378462 0.0022592048 0.0049356447 + 1325600 0.0065536227 0.0024994002 0.0057250114 + 1325700 0.0051601511 0.0023257224 0.0048654843 + 1325800 0.0051302228 0.0018518724 0.0043769039 + 1325900 0.0038699145 0.0020730197 0.0039777433 + 1326000 0.0050568901 0.0021423929 0.004631331 + 1326100 0.0049834618 0.0022408244 0.004693622 + 1326200 0.0039913258 0.0025861856 0.0045506663 + 1326300 0.0046295579 0.0021294106 0.0044080212 + 1326400 0.0050571824 0.0022061731 0.004695255 + 1326500 0.0041045925 0.0025970629 0.0046172921 + 1326600 0.0036795721 0.0028988748 0.0047099142 + 1326700 0.0036310784 0.0028073248 0.0045944962 + 1326800 0.0046110163 0.003243329 0.0055128136 + 1326900 0.0053736135 0.0033280973 0.0059729227 + 1327000 0.006116951 0.0033888801 0.0063995669 + 1327100 0.0055968367 0.0031568103 0.0059115034 + 1327200 0.0053334135 0.0032142692 0.0058393086 + 1327300 0.0038907116 0.0027329829 0.0046479425 + 1327400 0.005035743 0.0023316143 0.004810144 + 1327500 0.0051806815 0.002275878 0.0048257447 + 1327600 0.0048021868 0.0024414936 0.00480507 + 1327700 0.0057451109 0.0023501828 0.0051778546 + 1327800 0.0066435498 0.0022101027 0.0054799749 + 1327900 0.0042889838 0.002431948 0.0045429322 + 1328000 0.0041318662 0.002739031 0.0047726839 + 1328100 0.0080839781 0.0024701014 0.0064489344 + 1328200 0.004340025 0.0024494179 0.0045855239 + 1328300 0.005571553 0.0021016374 0.0048438862 + 1328400 0.0056852909 0.0023511077 0.0051493368 + 1328500 0.0044940153 0.0027860141 0.0049979122 + 1328600 0.0049238943 0.0026880061 0.0051114853 + 1328700 0.0041697256 0.00320047 0.0052527568 + 1328800 0.0046159989 0.003298046 0.0055699829 + 1328900 0.0024936561 0.002896332 0.0041236784 + 1329000 0.0045764717 0.0026403675 0.0048928496 + 1329100 0.005666672 0.0025095134 0.0052985786 + 1329200 0.0032736006 0.0027008984 0.0043121237 + 1329300 0.0044711177 0.002749349 0.0049499773 + 1329400 0.0052201992 0.0025947614 0.0051640782 + 1329500 0.0038943875 0.0025350925 0.0044518613 + 1329600 0.0049273528 0.0030029785 0.00542816 + 1329700 0.004170178 0.0029865062 0.0050390156 + 1329800 0.0048316617 0.0026719112 0.0050499947 + 1329900 0.005994336 0.0025215992 0.0054719364 + 1330000 0.005634686 0.0021991972 0.0049725192 + 1330100 0.0051535929 0.0021950222 0.0047315562 + 1330200 0.0041320697 0.0024517377 0.0044854907 + 1330300 0.0036614323 0.0024577361 0.0042598473 + 1330400 0.0048935853 0.0023500908 0.0047586523 + 1330500 0.0059952222 0.0024943092 0.0054450826 + 1330600 0.0046077683 0.0025550958 0.0048229818 + 1330700 0.0077625645 0.0026010177 0.0064216549 + 1330800 0.0051712081 0.0026230549 0.0051682589 + 1330900 0.004206721 0.0025753929 0.0046458884 + 1331000 0.0041955917 0.0027088907 0.0047739085 + 1331100 0.0046515083 0.0026022701 0.0048916844 + 1331200 0.0042688927 0.0027323654 0.004833461 + 1331300 0.0041266134 0.0029076859 0.0049387535 + 1331400 0.0053966186 0.0027796791 0.0054358273 + 1331500 0.0063188639 0.0024244064 0.0055344722 + 1331600 0.0047033434 0.0021718461 0.0044867729 + 1331700 0.0055746234 0.0021927332 0.0049364932 + 1331800 0.0051666193 0.0023701982 0.0049131436 + 1331900 0.005132011 0.0030923612 0.0056182729 + 1332000 0.004194713 0.0033502508 0.0054148361 + 1332100 0.0073531477 0.0030711859 0.0066903132 + 1332200 0.0060039477 0.0027666097 0.0057216777 + 1332300 0.0057952067 0.002719257 0.0055715853 + 1332400 0.0053484218 0.0027663985 0.0053988249 + 1332500 0.0068405678 0.0020850382 0.0054518802 + 1332600 0.0059786481 0.0019350833 0.0048776992 + 1332700 0.0060012222 0.002070284 0.0050240106 + 1332800 0.0044401403 0.0020546247 0.0042400062 + 1332900 0.0043389129 0.0022251648 0.0043607235 + 1333000 0.0057895692 0.0025565252 0.0054060788 + 1333100 0.0077065246 0.0026668306 0.0064598856 + 1333200 0.004930992 0.0029902563 0.005417229 + 1333300 0.0058446597 0.002726706 0.0056033745 + 1333400 0.0040019498 0.002781458 0.0047511677 + 1333500 0.0040081658 0.002625907 0.0045986761 + 1333600 0.0041485598 0.0026174851 0.0046593543 + 1333700 0.0058732874 0.0024478221 0.0053385808 + 1333800 0.0063626751 0.0022574262 0.0053890554 + 1333900 0.0055350904 0.0021114796 0.0048357819 + 1334000 0.0050497307 0.0026191756 0.0051045899 + 1334100 0.0051952617 0.0029758758 0.0055329187 + 1334200 0.0045465732 0.0030337241 0.0052714906 + 1334300 0.0046851797 0.0030513293 0.0053573162 + 1334400 0.0056387258 0.0027600579 0.0055353682 + 1334500 0.0046192477 0.002500339 0.004773875 + 1334600 0.00661801 0.0019942108 0.0052515125 + 1334700 0.0051871112 0.0026447844 0.0051978157 + 1334800 0.0054291948 0.0030497532 0.005721935 + 1334900 0.0043393084 0.0031671771 0.0053029305 + 1335000 0.0062092515 0.0028069572 0.0058630731 + 1335100 0.0058768444 0.0028152451 0.0057077544 + 1335200 0.0040368328 0.0028336874 0.0048205661 + 1335300 0.0063797454 0.002746821 0.005886852 + 1335400 0.0045712127 0.0030284788 0.0052783726 + 1335500 0.0038403251 0.0032400197 0.0051301797 + 1335600 0.0071077784 0.0028727039 0.0063710636 + 1335700 0.0048099518 0.0031127822 0.0054801803 + 1335800 0.0048838951 0.0033383409 0.005742133 + 1335900 0.0037513822 0.0026508781 0.0044972616 + 1336000 0.0041077627 0.0027594889 0.0047812783 + 1336100 0.0058204146 0.0035619603 0.0064266957 + 1336200 0.0053185961 0.0035882292 0.0062059757 + 1336300 0.0079743208 0.0033866001 0.0073114611 + 1336400 0.0054255868 0.0042452623 0.0069156683 + 1336500 0.0048787138 0.0044623244 0.0068635663 + 1336600 0.0043129635 0.0043634161 0.0064862029 + 1336700 0.0053430313 0.003899773 0.0065295462 + 1336800 0.0060226608 0.0032980439 0.0062623223 + 1336900 0.0070485694 0.0032966692 0.0067658869 + 1337000 0.0059972029 0.0023817954 0.0053335437 + 1337100 0.0057111381 0.0025360793 0.0053470301 + 1337200 0.0056306631 0.0034286623 0.0062000043 + 1337300 0.0074969404 0.0036383442 0.0073282446 + 1337400 0.0061731357 0.003217388 0.0062557282 + 1337500 0.0046330353 0.0029544196 0.0052347416 + 1337600 0.0058621957 0.0028039457 0.0056892452 + 1337700 0.0033712179 0.0027917321 0.0044510034 + 1337800 0.0051222183 0.0025578965 0.0050789883 + 1337900 0.006150864 0.0025886202 0.0056159986 + 1338000 0.0062904863 0.0025201486 0.0056162473 + 1338100 0.0090442156 0.0022704368 0.0067218866 + 1338200 0.0055219362 0.0027221274 0.0054399554 + 1338300 0.0044216323 0.0027554375 0.0049317096 + 1338400 0.0036170976 0.0024635778 0.0042438681 + 1338500 0.0054122108 0.0022287029 0.0048925255 + 1338600 0.0051408818 0.0018556385 0.0043859162 + 1338700 0.0062157671 0.0017829456 0.0048422685 + 1338800 0.0052733462 0.0020899404 0.0046854155 + 1338900 0.0040266085 0.0025472467 0.0045290931 + 1339000 0.0059769368 0.0025161414 0.0054579149 + 1339100 0.0064176357 0.0029140347 0.0060727148 + 1339200 0.0059952995 0.0030772987 0.0060281102 + 1339300 0.005510149 0.0031389529 0.0058509793 + 1339400 0.0062226767 0.0028701708 0.0059328945 + 1339500 0.0052721357 0.0027984569 0.0053933363 + 1339600 0.0064937151 0.0029543752 0.0061505006 + 1339700 0.0045414908 0.0024640072 0.0046992722 + 1339800 0.0057017861 0.0019411994 0.0047475472 + 1339900 0.0060653445 0.0026938939 0.0056791806 + 1340000 0.0060733913 0.0027951113 0.0057843586 + 1340100 0.0045991231 0.0022282446 0.0044918755 + 1340200 0.0058776858 0.0019026173 0.0047955408 + 1340300 0.0047311392 0.0017483915 0.0040769991 + 1340400 0.0048036326 0.0020358501 0.004400138 + 1340500 0.0060117414 0.0024049153 0.0053638193 + 1340600 0.0054463015 0.0025823892 0.0052629907 + 1340700 0.0049779703 0.0024763418 0.0049264366 + 1340800 0.0054919886 0.0027870233 0.0054901114 + 1340900 0.0043576847 0.0029130939 0.0050578919 + 1341000 0.0044825572 0.0029853123 0.005191571 + 1341100 0.004812787 0.0028205146 0.0051893083 + 1341200 0.0047120136 0.0035305025 0.0058496967 + 1341300 0.0046874408 0.0039690178 0.0062761176 + 1341400 0.0062361867 0.0041520563 0.0072214294 + 1341500 0.0053851253 0.0037644361 0.0064149275 + 1341600 0.0048433352 0.0034153259 0.0057991549 + 1341700 0.0062951354 0.0028126532 0.0059110402 + 1341800 0.0048438234 0.0028391529 0.0052232223 + 1341900 0.005753849 0.0031752305 0.006007203 + 1342000 0.0061179451 0.0029080192 0.0059191953 + 1342100 0.0034962727 0.0029368628 0.0046576845 + 1342200 0.0058502171 0.0026401364 0.0055195402 + 1342300 0.0064866752 0.0027425055 0.0059351659 + 1342400 0.0052087411 0.0025834393 0.0051471165 + 1342500 0.0049940199 0.0025171344 0.0049751286 + 1342600 0.004668018 0.0024558743 0.0047534144 + 1342700 0.0045189485 0.0024520217 0.0046761916 + 1342800 0.0051233226 0.0026228428 0.0051444781 + 1342900 0.0037468134 0.0030431627 0.0048872974 + 1343000 0.0059696663 0.0031614331 0.0060996283 + 1343100 0.0047878162 0.0032144616 0.0055709649 + 1343200 0.003748029 0.0033109103 0.0051556433 + 1343300 0.0042460427 0.0024980532 0.0045879024 + 1343400 0.0071586165 0.0023060272 0.0058294088 + 1343500 0.0054150368 0.0024142849 0.0050794984 + 1343600 0.0050525185 0.0020655618 0.0045523482 + 1343700 0.0036280325 0.0019928042 0.0037784764 + 1343800 0.0030708368 0.0020350864 0.0035465138 + 1343900 0.0056312438 0.0019941158 0.0047657436 + 1344000 0.0046013413 0.0024535005 0.0047182232 + 1344100 0.0044111254 0.0029581505 0.0051292513 + 1344200 0.0043114147 0.0030502024 0.0051722268 + 1344300 0.0047897279 0.002736236 0.0050936803 + 1344400 0.0046347873 0.0020429184 0.0043241028 + 1344500 0.0030899935 0.0020031706 0.0035240268 + 1344600 0.0045524167 0.002145954 0.0043865966 + 1344700 0.0055744055 0.0021592649 0.0049029176 + 1344800 0.0054264093 0.0026838488 0.0053546596 + 1344900 0.0043485031 0.0025354476 0.0046757265 + 1345000 0.0045794977 0.0023844479 0.0046384194 + 1345100 0.0053136504 0.0025082475 0.0051235598 + 1345200 0.0039413589 0.0026366487 0.0045765363 + 1345300 0.0052593533 0.0023455841 0.0049341721 + 1345400 0.0055447428 0.0017910846 0.0045201377 + 1345500 0.0046586533 0.0020962018 0.0043891327 + 1345600 0.0052934612 0.0026739222 0.0052792976 + 1345700 0.005405319 0.0028124209 0.0054728514 + 1345800 0.0045011632 0.0028842278 0.005099644 + 1345900 0.0039341866 0.0031378069 0.0050741643 + 1346000 0.0063389135 0.0025380989 0.0056580329 + 1346100 0.0049265084 0.0026473603 0.0050721262 + 1346200 0.006199529 0.0024838111 0.0055351417 + 1346300 0.0056512162 0.0025248709 0.0053063289 + 1346400 0.0035233342 0.0022480104 0.0039821514 + 1346500 0.0037405183 0.0019571467 0.003798183 + 1346600 0.004239601 0.0018713685 0.0039580472 + 1346700 0.0052613443 0.0020079701 0.0045975381 + 1346800 0.0068687575 0.0023641613 0.0057448779 + 1346900 0.0048423561 0.0026223662 0.0050057133 + 1347000 0.0041527469 0.0026040351 0.0046479652 + 1347100 0.0058195047 0.0022164907 0.0050807782 + 1347200 0.0052838005 0.0026694485 0.005270069 + 1347300 0.0053870977 0.0029657113 0.0056171734 + 1347400 0.0049156879 0.0027651035 0.0051845436 + 1347500 0.0060204226 0.0024759603 0.005439137 + 1347600 0.0060074505 0.0026284011 0.0055851931 + 1347700 0.0050182713 0.0024896555 0.0049595859 + 1347800 0.0055916167 0.002352011 0.0051041348 + 1347900 0.006572813 0.0024590334 0.0056940898 + 1348000 0.0056708211 0.0025097013 0.0053008085 + 1348100 0.0042530986 0.0022979118 0.0043912338 + 1348200 0.0028864114 0.0022777394 0.003698395 + 1348300 0.0042211773 0.0024194518 0.0044970625 + 1348400 0.0049976965 0.0022735815 0.0047333852 + 1348500 0.0051690487 0.0021795207 0.0047236618 + 1348600 0.005745913 0.0021596383 0.0049877049 + 1348700 0.0045772967 0.0025931426 0.0048460309 + 1348800 0.0047734237 0.002524238 0.0048736575 + 1348900 0.0057790179 0.0026104297 0.0054547901 + 1349000 0.0040291367 0.0028712989 0.0048543896 + 1349100 0.0055353725 0.003011239 0.0057356801 + 1349200 0.0035565093 0.0029028549 0.0046533243 + 1349300 0.0057598021 0.0024045361 0.0052394387 + 1349400 0.0045457273 0.0025915639 0.0048289141 + 1349500 0.0051984019 0.0026340478 0.0051926363 + 1349600 0.0063117772 0.0022005038 0.0053070816 + 1349700 0.0053675584 0.0020648774 0.0047067225 + 1349800 0.0064013234 0.0021678472 0.0053184986 + 1349900 0.0051652732 0.0025819533 0.0051242362 + 1350000 0.0061489672 0.0028685568 0.0058950016 + 1350100 0.0051945323 0.0029455158 0.0055021997 + 1350200 0.0063950707 0.0023318749 0.0054794487 + 1350300 0.0061334439 0.0022348893 0.0052536937 + 1350400 0.0047820017 0.0024147963 0.0047684377 + 1350500 0.0055520437 0.0023877299 0.0051203764 + 1350600 0.0054365525 0.0021674789 0.0048432821 + 1350700 0.0054262848 0.0020371929 0.0047079424 + 1350800 0.0036663641 0.0016138033 0.0034183419 + 1350900 0.0051550118 0.0015592237 0.004096456 + 1351000 0.0047444531 0.0021163606 0.0044515212 + 1351100 0.0047630752 0.0022207498 0.0045650759 + 1351200 0.0051396364 0.0024945558 0.0050242206 + 1351300 0.004223836 0.0025096511 0.0045885704 + 1351400 0.0044342209 0.0027247095 0.0049071776 + 1351500 0.0061294065 0.002579511 0.0055963282 + 1351600 0.0052921542 0.0027355767 0.0053403088 + 1351700 0.0061588383 0.0024930531 0.0055243564 + 1351800 0.0054294794 0.0025044012 0.0051767231 + 1351900 0.005222382 0.0027450371 0.0053154282 + 1352000 0.0058741779 0.0026341143 0.0055253113 + 1352100 0.006512934 0.0029059796 0.0061115643 + 1352200 0.0048053391 0.0028965504 0.0052616782 + 1352300 0.0056441611 0.002789877 0.0055678625 + 1352400 0.0046254687 0.0028678069 0.0051444048 + 1352500 0.0065434778 0.0029485829 0.0061692009 + 1352600 0.0047033512 0.0031293814 0.0054443121 + 1352700 0.0050283096 0.0032199787 0.0056948498 + 1352800 0.0043913492 0.0028294768 0.004990844 + 1352900 0.0043700659 0.0023937124 0.0045446042 + 1353000 0.0059012254 0.0024030148 0.0053075242 + 1353100 0.0070277264 0.0026494734 0.0061084325 + 1353200 0.0074233353 0.0031915629 0.0068452357 + 1353300 0.0064124848 0.0027680261 0.005924171 + 1353400 0.0071027239 0.0023876857 0.0058835576 + 1353500 0.0038552646 0.0025189983 0.0044165114 + 1353600 0.0055503716 0.0022744537 0.0050062773 + 1353700 0.004778845 0.0018819004 0.0042339882 + 1353800 0.0057824228 0.0019463579 0.0047923941 + 1353900 0.0047835506 0.0022958582 0.004650262 + 1354000 0.0054779744 0.0021111112 0.0048073017 + 1354100 0.0061425235 0.0025028274 0.0055261007 + 1354200 0.0051854215 0.0024342367 0.0049864363 + 1354300 0.0039274316 0.002535983 0.0044690157 + 1354400 0.0042692706 0.002371632 0.0044729136 + 1354500 0.0038360423 0.0021761755 0.0040642276 + 1354600 0.0039095084 0.0023657203 0.0042899315 + 1354700 0.005640079 0.0027085285 0.0054845048 + 1354800 0.0065654227 0.0023567947 0.0055882136 + 1354900 0.0047764848 0.0021899886 0.0045409147 + 1355000 0.0047514716 0.0021386772 0.0044772921 + 1355100 0.0059254953 0.0020006412 0.0049170959 + 1355200 0.0052485364 0.0020261954 0.0046094595 + 1355300 0.0037172656 0.0021765283 0.00400612 + 1355400 0.0041559155 0.0023544809 0.0043999706 + 1355500 0.007614316 0.0022218767 0.0059695479 + 1355600 0.0043285265 0.0020952705 0.0042257171 + 1355700 0.0060534546 0.002162354 0.0051417887 + 1355800 0.007003944 0.0026862317 0.0061334854 + 1355900 0.003382962 0.002598167 0.0042632186 + 1356000 0.0048292677 0.0027267651 0.0051036703 + 1356100 0.0075319393 0.002510707 0.0062178334 + 1356200 0.0042146369 0.0021920779 0.0042664695 + 1356300 0.0042826116 0.0022811095 0.0043889574 + 1356400 0.0039850137 0.0025090705 0.0044704444 + 1356500 0.0046626478 0.0021257785 0.0044206755 + 1356600 0.0049294599 0.0022641708 0.0046903894 + 1356700 0.0033946579 0.0027947723 0.0044655805 + 1356800 0.0040896769 0.0027440673 0.0047569552 + 1356900 0.0054707515 0.0023872108 0.0050798463 + 1357000 0.0046655946 0.0024757648 0.0047721121 + 1357100 0.0044920876 0.0022482339 0.0044591833 + 1357200 0.0049553418 0.002366729 0.0048056863 + 1357300 0.005430416 0.0026721541 0.0053449369 + 1357400 0.0039011414 0.002866198 0.004786291 + 1357500 0.0058819296 0.0024513283 0.0053463405 + 1357600 0.0040965182 0.0026845347 0.0047007897 + 1357700 0.0052188848 0.0024601741 0.0050288439 + 1357800 0.0062073246 0.0022481489 0.0053033165 + 1357900 0.0065512908 0.002711113 0.0059355765 + 1358000 0.0046814605 0.0028668985 0.0051710549 + 1358100 0.004979439 0.0025952819 0.0050460996 + 1358200 0.0041863042 0.0026328755 0.0046933221 + 1358300 0.004501508 0.0024852607 0.0047008467 + 1358400 0.0055387631 0.002404934 0.0051310439 + 1358500 0.0071217518 0.0019834913 0.0054887286 + 1358600 0.0067406243 0.0016264772 0.0049441282 + 1358700 0.0058251985 0.0021082062 0.0049752961 + 1358800 0.0054444216 0.0023034329 0.0049831091 + 1358900 0.0041516559 0.002207006 0.0042503991 + 1359000 0.0035025061 0.0022372591 0.0039611488 + 1359100 0.0048683872 0.0026926188 0.0050887781 + 1359200 0.0033508885 0.0022916454 0.0039409108 + 1359300 0.003684996 0.0018596605 0.0036733695 + 1359400 0.0051367803 0.001833884 0.004362143 + 1359500 0.0057700939 0.0023271078 0.0051670759 + 1359600 0.0038451497 0.0026079034 0.004500438 + 1359700 0.0049856781 0.0024218929 0.0048757814 + 1359800 0.0038083926 0.0026713731 0.0045458163 + 1359900 0.0053079165 0.0026585908 0.0052710809 + 1360000 0.0070424418 0.0028033016 0.0062695034 + 1360100 0.0070129166 0.0031687987 0.0066204686 + 1360200 0.0049512599 0.0033150781 0.0057520264 + 1360300 0.0057900455 0.002775088 0.005624876 + 1360400 0.0052846286 0.0027305871 0.0053316153 + 1360500 0.0054593557 0.0027302337 0.0054172604 + 1360600 0.0052779536 0.0029040683 0.0055018112 + 1360700 0.0056158583 0.0030390576 0.0058031129 + 1360800 0.006021119 0.002635504 0.0055990235 + 1360900 0.0060886518 0.0024344262 0.0054311845 + 1361000 0.0034433358 0.0027968794 0.0044916463 + 1361100 0.0052800544 0.0023468674 0.0049456442 + 1361200 0.0050996455 0.0024597342 0.004969716 + 1361300 0.0055134603 0.0022332651 0.0049469213 + 1361400 0.0060201774 0.0026436949 0.0056067509 + 1361500 0.0047837746 0.0031119594 0.0054664734 + 1361600 0.0049968706 0.0035871622 0.0060465595 + 1361700 0.0052847765 0.0036411671 0.0062422681 + 1361800 0.0047483277 0.0036035808 0.0059406483 + 1361900 0.0046022373 0.0032126376 0.0054778013 + 1362000 0.0053303556 0.0026575736 0.005281108 + 1362100 0.0044206563 0.0025572208 0.0047330125 + 1362200 0.0055513172 0.0028263117 0.0055586006 + 1362300 0.0049790228 0.0034409754 0.0058915882 + 1362400 0.0062354751 0.0032915892 0.0063606121 + 1362500 0.0052675234 0.0027958624 0.0053884715 + 1362600 0.0044285831 0.0027185281 0.0048982214 + 1362700 0.004273845 0.0025648183 0.0046683514 + 1362800 0.0037216327 0.0025191664 0.0043509075 + 1362900 0.0046843028 0.002941438 0.0052469933 + 1363000 0.0041896306 0.0025724117 0.0046344955 + 1363100 0.0047848653 0.0025250147 0.0048800656 + 1363200 0.0031452389 0.003150532 0.0046985793 + 1363300 0.0040066875 0.0031387705 0.005110812 + 1363400 0.0065905579 0.0025417543 0.0057855445 + 1363500 0.0062923443 0.00228471 0.0053817232 + 1363600 0.0049765582 0.0022733277 0.0047227274 + 1363700 0.0030730054 0.0028960576 0.0044085524 + 1363800 0.0043929667 0.0029771493 0.0051393126 + 1363900 0.0048725358 0.0026824766 0.0050806779 + 1364000 0.0038249288 0.0029814497 0.0048640319 + 1364100 0.0054574286 0.003020073 0.0057061512 + 1364200 0.0039298161 0.0029464596 0.0048806659 + 1364300 0.004536227 0.0030005574 0.0052332317 + 1364400 0.004816354 0.0027606315 0.0051311808 + 1364500 0.004803634 0.0024553638 0.0048196524 + 1364600 0.0039853997 0.0025906502 0.0045522141 + 1364700 0.0053842034 0.0026555195 0.0053055571 + 1364800 0.0043792255 0.0026089764 0.0047643765 + 1364900 0.0043202046 0.0022143949 0.0043407456 + 1365000 0.004448748 0.0023153769 0.004504995 + 1365100 0.0054760585 0.0020816887 0.0047769362 + 1365200 0.0044783685 0.002125354 0.004329551 + 1365300 0.0053731159 0.0024329133 0.0050774937 + 1365400 0.0060482012 0.0023122466 0.0052890956 + 1365500 0.0048616953 0.0026601918 0.0050530575 + 1365600 0.0050382639 0.0028262154 0.0053059859 + 1365700 0.0038354542 0.0029892576 0.0048770202 + 1365800 0.0053649235 0.0031520912 0.0057926394 + 1365900 0.0052164089 0.0034336542 0.0060011054 + 1366000 0.0038693933 0.0031653439 0.0050698109 + 1366100 0.0048232241 0.0027148007 0.0050887313 + 1366200 0.005991603 0.0025343347 0.0054833268 + 1366300 0.0053327477 0.002346802 0.0049715137 + 1366400 0.0059033656 0.0022157559 0.0051213187 + 1366500 0.0049315497 0.0021889845 0.0046162316 + 1366600 0.0059422025 0.0023771276 0.0053018054 + 1366700 0.0049347182 0.0021336645 0.0045624711 + 1366800 0.0059787853 0.0026492116 0.005591895 + 1366900 0.0040455472 0.0027909488 0.0047821166 + 1367000 0.0044107965 0.0026217779 0.0047927168 + 1367100 0.0050067021 0.0026992804 0.0051635165 + 1367200 0.0062367001 0.0021512005 0.0052208264 + 1367300 0.0053865002 0.0020431639 0.004694332 + 1367400 0.0061007328 0.0025602517 0.0055629561 + 1367500 0.0045700224 0.0029570155 0.0052063234 + 1367600 0.0044795846 0.0028327889 0.0050375845 + 1367700 0.0041458666 0.0026055042 0.0046460479 + 1367800 0.0045942513 0.0027318955 0.0049931285 + 1367900 0.004590477 0.0027579932 0.0050173686 + 1368000 0.00660291 0.0026223106 0.0058721804 + 1368100 0.0040591401 0.0023286265 0.0043264845 + 1368200 0.0057205248 0.0023171749 0.0051327457 + 1368300 0.0056575557 0.0024465994 0.0052311776 + 1368400 0.005405829 0.0026891818 0.0053498633 + 1368500 0.0038041054 0.0024733766 0.0043457098 + 1368600 0.0051527562 0.0025497919 0.0050859141 + 1368700 0.0043403407 0.0022796446 0.0044159061 + 1368800 0.0050239174 0.0018707422 0.0043434515 + 1368900 0.0041224383 0.0019787577 0.0040077703 + 1369000 0.0050095389 0.0019513113 0.0044169437 + 1369100 0.0040483261 0.0020941849 0.0040867205 + 1369200 0.0041680534 0.0021381952 0.004189659 + 1369300 0.0060371137 0.0017795273 0.0047509192 + 1369400 0.0048006131 0.0019823201 0.0043451218 + 1369500 0.0053456708 0.0022801428 0.0049112152 + 1369600 0.0047752185 0.0026026417 0.0049529446 + 1369700 0.0046759912 0.0027713409 0.0050728053 + 1369800 0.0065674778 0.0022577215 0.005490152 + 1369900 0.0051240338 0.0025134504 0.0050354358 + 1370000 0.0042779335 0.0027196276 0.004825173 + 1370100 0.0046008162 0.0027288754 0.0049933396 + 1370200 0.0037258743 0.0025655217 0.0043993505 + 1370300 0.0063847982 0.0022990335 0.0054415514 + 1370400 0.0062723432 0.0026387989 0.0057259678 + 1370500 0.0056679874 0.0024897478 0.0052794604 + 1370600 0.006007491 0.0024511697 0.0054079817 + 1370700 0.0053914519 0.0025546795 0.0052082847 + 1370800 0.005140136 0.0024776721 0.0050075828 + 1370900 0.0068324942 0.0025842952 0.0059471634 + 1371000 0.0044867656 0.0026935644 0.0049018943 + 1371100 0.0043471291 0.0028951221 0.0050347246 + 1371200 0.0044821242 0.0029385657 0.0051446112 + 1371300 0.0036421296 0.0030005054 0.0047931161 + 1371400 0.0050516135 0.0028168389 0.0053031799 + 1371500 0.0048613532 0.002799346 0.0051920433 + 1371600 0.0046638012 0.0027167168 0.0050121815 + 1371700 0.0035211509 0.0025288562 0.0042619227 + 1371800 0.0043718984 0.0022533588 0.0044051525 + 1371900 0.0057436387 0.0023710617 0.0051980089 + 1372000 0.0066918091 0.0023301956 0.0056238204 + 1372100 0.0055533972 0.00287002 0.0056033327 + 1372200 0.0044120588 0.0028955698 0.00506713 + 1372300 0.0036606528 0.00264503 0.0044467575 + 1372400 0.0068266652 0.0023074641 0.0056674633 + 1372500 0.0039932459 0.0021267422 0.0040921679 + 1372600 0.0050924226 0.001849234 0.0043556607 + 1372700 0.0041900582 0.0018830052 0.0039452994 + 1372800 0.0057581939 0.0017174227 0.0045515337 + 1372900 0.0056212734 0.0020544957 0.0048212162 + 1373000 0.0051362813 0.0024625721 0.0049905855 + 1373100 0.004420521 0.002843354 0.0050190791 + 1373200 0.006994455 0.0023119602 0.0057545435 + 1373300 0.0043804486 0.0021562964 0.0043122984 + 1373400 0.0055908842 0.0027180377 0.005469801 + 1373500 0.0055545001 0.0027004915 0.005434347 + 1373600 0.0049964643 0.0025042428 0.00496344 + 1373700 0.0059565605 0.0028292935 0.0057610381 + 1373800 0.0045191823 0.0030257553 0.0052500403 + 1373900 0.0048228188 0.0027483677 0.0051220988 + 1374000 0.0038692592 0.0026323156 0.0045367166 + 1374100 0.0053129432 0.0024874683 0.0051024325 + 1374200 0.0035090085 0.0025746049 0.0043016951 + 1374300 0.0048379138 0.0025242465 0.0049054072 + 1374400 0.0048351945 0.0022746343 0.0046544566 + 1374500 0.0041074203 0.0024100529 0.0044316738 + 1374600 0.0060503318 0.0024627725 0.0054406702 + 1374700 0.003720018 0.0026661522 0.0044970986 + 1374800 0.0051323403 0.0024995494 0.0050256232 + 1374900 0.0071069164 0.0023077314 0.0058056668 + 1375000 0.0064681669 0.0022733145 0.0054568654 + 1375100 0.005713488 0.0021367807 0.004948888 + 1375200 0.0043884823 0.0025265454 0.0046865016 + 1375300 0.0064791296 0.0024661429 0.0056550895 + 1375400 0.0032028826 0.0023610545 0.0039374733 + 1375500 0.0057308712 0.0019669554 0.0047876185 + 1375600 0.0060933872 0.0018502144 0.0048493034 + 1375700 0.0056707894 0.0020047714 0.004795863 + 1375800 0.0043556855 0.0021166618 0.0042604757 + 1375900 0.0047383094 0.0028115022 0.0051436389 + 1376000 0.003369995 0.003313391 0.0049720604 + 1376100 0.0043901263 0.0031818314 0.0053425967 + 1376200 0.0049552584 0.0027434664 0.0051823827 + 1376300 0.0055328561 0.0021543456 0.0048775483 + 1376400 0.0066840919 0.0020951682 0.0053849947 + 1376500 0.0049523805 0.0031931449 0.0056306447 + 1376600 0.0046269547 0.0031329523 0.0054102816 + 1376700 0.0047203308 0.0028021993 0.0051254871 + 1376800 0.0057598509 0.0028326267 0.0056675533 + 1376900 0.0059352636 0.0026557153 0.0055769779 + 1377000 0.0051117088 0.0027528145 0.0052687337 + 1377100 0.0047858397 0.0026368492 0.0049923796 + 1377200 0.0064076164 0.0022926805 0.0054464292 + 1377300 0.0061607345 0.0027053284 0.005737565 + 1377400 0.0042827741 0.0031675459 0.0052754738 + 1377500 0.0077493073 0.0027727932 0.0065869053 + 1377600 0.0054846595 0.0027228269 0.0054223077 + 1377700 0.0046581701 0.0025742096 0.0048669028 + 1377800 0.0048034992 0.002660924 0.0050251463 + 1377900 0.0054795036 0.0026411017 0.0053380449 + 1378000 0.0040536713 0.0025241149 0.0045192813 + 1378100 0.0042009423 0.0024901139 0.0045577652 + 1378200 0.004290137 0.0024493139 0.0045608657 + 1378300 0.0038522385 0.0025039501 0.0043999737 + 1378400 0.0056331318 0.002705141 0.005477698 + 1378500 0.0058776485 0.0029471347 0.0058400398 + 1378600 0.0052791536 0.0033260137 0.0059243471 + 1378700 0.0039045194 0.003624063 0.0055458186 + 1378800 0.0058561895 0.0031905142 0.0060728575 + 1378900 0.0053241845 0.0025723597 0.0051928568 + 1379000 0.0054487883 0.0023700146 0.0050518401 + 1379100 0.0049724266 0.0030305187 0.0054778849 + 1379200 0.0061134763 0.00347509 0.0064840666 + 1379300 0.0055127161 0.0034911912 0.0062044812 + 1379400 0.0063223653 0.0033225032 0.0064342924 + 1379500 0.0039045201 0.0036121194 0.0055338754 + 1379600 0.0046887391 0.0031285179 0.0054362567 + 1379700 0.0057605866 0.0030296451 0.0058649339 + 1379800 0.0043808195 0.0033532686 0.0055094532 + 1379900 0.0048643306 0.0031954903 0.005589653 + 1380000 0.0052066593 0.0027956075 0.0053582601 + 1380100 0.0059142902 0.002585564 0.0054965038 + 1380200 0.0057022018 0.0027301492 0.0055367017 + 1380300 0.0042643626 0.0026578184 0.0047566844 + 1380400 0.0043408676 0.0022711847 0.0044077054 + 1380500 0.0047938933 0.0022235653 0.0045830597 + 1380600 0.0048401908 0.0024125846 0.0047948661 + 1380700 0.0058005223 0.002367375 0.0052223196 + 1380800 0.0039217587 0.0029924713 0.0049227119 + 1380900 0.0043217222 0.0028836934 0.005010791 + 1381000 0.0040554117 0.0023582632 0.0043542862 + 1381100 0.0041104258 0.0027403491 0.0047634493 + 1381200 0.0044090813 0.0025880563 0.0047581509 + 1381300 0.0049424333 0.0024753729 0.0049079768 + 1381400 0.0071372836 0.002233558 0.0057464398 + 1381500 0.004864107 0.0021015708 0.0044956234 + 1381600 0.0043234647 0.0018926445 0.0040205998 + 1381700 0.0053246453 0.0019524166 0.0045731405 + 1381800 0.0037194739 0.0021037315 0.0039344101 + 1381900 0.0058521311 0.0025043552 0.005384701 + 1382000 0.0059877189 0.0031034795 0.0060505599 + 1382100 0.0039152219 0.0022544397 0.004181463 + 1382200 0.0057985071 0.0024927294 0.0053466821 + 1382300 0.0049599457 0.0024854875 0.0049267108 + 1382400 0.0046615641 0.0017695422 0.0040639058 + 1382500 0.0056258529 0.0016495668 0.0044185413 + 1382600 0.0027196945 0.0020409437 0.0033795433 + 1382700 0.0044635994 0.0025041931 0.0047011209 + 1382800 0.0047085053 0.0021446382 0.0044621057 + 1382900 0.0031565347 0.0020338222 0.0035874291 + 1383000 0.0048301801 0.0023537063 0.0047310605 + 1383100 0.0052687726 0.0023545489 0.004947773 + 1383200 0.0059326958 0.0023358331 0.0052558319 + 1383300 0.0053950166 0.0024843432 0.0051397029 + 1383400 0.0058808491 0.0029365362 0.0058310167 + 1383500 0.003498115 0.0030465674 0.0047682958 + 1383600 0.0059266946 0.0025574051 0.0054744501 + 1383700 0.0041248594 0.0024522053 0.0044824096 + 1383800 0.0044439165 0.0027815012 0.0049687413 + 1383900 0.0053774968 0.0030764356 0.0057231723 + 1384000 0.0049430654 0.0031114321 0.0055443471 + 1384100 0.0077421164 0.0019722222 0.0057827951 + 1384200 0.0041176808 0.0020922688 0.0041189398 + 1384300 0.0055643417 0.0026576903 0.0053963897 + 1384400 0.0062522007 0.0028146412 0.0058918963 + 1384500 0.0057189457 0.0031444818 0.0059592754 + 1384600 0.0045070919 0.002578521 0.0047968553 + 1384700 0.0043052618 0.0021955204 0.0043145165 + 1384800 0.0034509273 0.0024958848 0.0041943881 + 1384900 0.005964358 0.0020483185 0.0049839009 + 1385000 0.0052523753 0.0018066152 0.0043917687 + 1385100 0.0053182048 0.0017405603 0.0043581143 + 1385200 0.0045830918 0.0019227603 0.0041785008 + 1385300 0.0038263004 0.002445385 0.0043286422 + 1385400 0.0048999145 0.0025926065 0.0050042831 + 1385500 0.0050265515 0.0024456204 0.0049196263 + 1385600 0.0046592111 0.0023169782 0.0046101837 + 1385700 0.0048439557 0.0023436511 0.0047277856 + 1385800 0.0051102594 0.0023832948 0.0048985006 + 1385900 0.005097566 0.002197439 0.0047063972 + 1386000 0.0055034929 0.0023651223 0.0050738727 + 1386100 0.0053618765 0.0023556973 0.0049947459 + 1386200 0.0049401423 0.0027887962 0.0052202726 + 1386300 0.0060835687 0.0028214624 0.0058157189 + 1386400 0.0052298097 0.002420377 0.004994424 + 1386500 0.0046326105 0.0025011284 0.0047812414 + 1386600 0.0041846435 0.0025955924 0.0046552216 + 1386700 0.0053699307 0.0025923061 0.0052353189 + 1386800 0.0050752653 0.0023933673 0.0048913494 + 1386900 0.0038100606 0.0021799461 0.0040552103 + 1387000 0.0027825717 0.0023671291 0.0037366761 + 1387100 0.0056646214 0.0019065572 0.004694613 + 1387200 0.0058515892 0.0020952467 0.0049753258 + 1387300 0.0052014967 0.0026152078 0.0051753194 + 1387400 0.0054468701 0.002868124 0.0055490054 + 1387500 0.0049546438 0.0027840904 0.0052227041 + 1387600 0.0050834858 0.002735424 0.0052374521 + 1387700 0.005294044 0.0023068178 0.0049124801 + 1387800 0.0059292767 0.0021208877 0.0050392035 + 1387900 0.0049726888 0.0022517468 0.0046992421 + 1388000 0.0050748431 0.0023324416 0.0048302159 + 1388100 0.0061823804 0.0023433389 0.0053862293 + 1388200 0.0061800202 0.0022116259 0.0052533545 + 1388300 0.0060599155 0.0020563983 0.0050390129 + 1388400 0.0081273283 0.0019108661 0.0059110355 + 1388500 0.0048822166 0.0024273613 0.0048303272 + 1388600 0.0055914916 0.0018437407 0.004595803 + 1388700 0.0040400148 0.0016320931 0.0036205379 + 1388800 0.003315494 0.0016944327 0.0033262774 + 1388900 0.0056041126 0.0015154323 0.0042737065 + 1389000 0.0051634656 0.0020095043 0.0045508976 + 1389100 0.0077519268 0.0023886343 0.0062040358 + 1389200 0.0047421629 0.002795006 0.0051290393 + 1389300 0.0072830377 0.0025444038 0.0061290239 + 1389400 0.0039758082 0.0023370772 0.0042939204 + 1389500 0.0045014668 0.00209694 0.0043125057 + 1389600 0.0056653389 0.0017721951 0.0045606041 + 1389700 0.0038439194 0.0016812581 0.0035731871 + 1389800 0.0066542217 0.0019536286 0.0052287533 + 1389900 0.0057979307 0.0023518705 0.0052055396 + 1390000 0.0065244596 0.0026432895 0.0058545469 + 1390100 0.0062268979 0.0022803711 0.0053451724 + 1390200 0.0060332135 0.0014948514 0.0044643237 + 1390300 0.004638955 0.0018432881 0.0041265237 + 1390400 0.006000733 0.0019995923 0.004953078 + 1390500 0.0051978383 0.0025632791 0.0051215902 + 1390600 0.0068836604 0.0023081201 0.0056961717 + 1390700 0.0061642467 0.0023160299 0.0053499951 + 1390800 0.0035151043 0.0024808454 0.0042109358 + 1390900 0.0042163109 0.0018628074 0.0039380229 + 1391000 0.0041924498 0.0017926912 0.0038561626 + 1391100 0.004257087 0.001779405 0.00387469 + 1391200 0.0065678552 0.001806068 0.0050386842 + 1391300 0.0035077118 0.0020024134 0.0037288653 + 1391400 0.0049926938 0.0018832768 0.0043406183 + 1391500 0.0042934198 0.0020384009 0.0041515685 + 1391600 0.0044105593 0.00191361 0.0040844322 + 1391700 0.0056736827 0.0020034135 0.0047959292 + 1391800 0.0053283721 0.0027215393 0.0053440974 + 1391900 0.0058274844 0.0030893836 0.0059575985 + 1392000 0.0056948766 0.0024408455 0.0052437925 + 1392100 0.0040291659 0.0028067072 0.0047898123 + 1392200 0.0053320943 0.0027494571 0.0053738473 + 1392300 0.0042347176 0.0023535007 0.0044377758 + 1392400 0.0046434501 0.0023318117 0.0046172598 + 1392500 0.0041601812 0.0022528202 0.0043004094 + 1392600 0.0059326069 0.0020042193 0.0049241743 + 1392700 0.0045019796 0.0020520711 0.0042678892 + 1392800 0.0045287497 0.0020824205 0.0043114145 + 1392900 0.0051219935 0.0019224175 0.0044433987 + 1393000 0.0043681857 0.0018015013 0.0039514677 + 1393100 0.0040097755 0.0017928609 0.0037664223 + 1393200 0.0060186943 0.0021266753 0.0050890014 + 1393300 0.0059054561 0.0023682531 0.0052748448 + 1393400 0.0041007117 0.0024603225 0.0044786415 + 1393500 0.0042056147 0.0024775538 0.0045475048 + 1393600 0.0064406819 0.0019802619 0.005150285 + 1393700 0.0040469533 0.001863383 0.0038552428 + 1393800 0.0039331739 0.0022106732 0.0041465322 + 1393900 0.0042773763 0.0024608711 0.0045661422 + 1394000 0.004912718 0.0018365224 0.0042545008 + 1394100 0.0037398122 0.0020778426 0.0039185314 + 1394200 0.0067070249 0.0026440655 0.0059451793 + 1394300 0.0062294574 0.0033164969 0.006382558 + 1394400 0.0076921893 0.0026728947 0.0064588941 + 1394500 0.003772347 0.0028257467 0.0046824487 + 1394600 0.00492703 0.0024630736 0.0048880962 + 1394700 0.0045590646 0.0024214734 0.004665388 + 1394800 0.0052728396 0.0023403819 0.0049356076 + 1394900 0.0051183066 0.0024787588 0.0049979253 + 1395000 0.0063347727 0.0023964146 0.0055143105 + 1395100 0.0085961162 0.0030390948 0.0072699957 + 1395200 0.0039968919 0.0033541955 0.0053214157 + 1395300 0.0054313808 0.0030986174 0.0057718752 + 1395400 0.0048543786 0.0027312053 0.0051204698 + 1395500 0.0047898364 0.0025140637 0.0048715612 + 1395600 0.0044162468 0.0020544255 0.0042280469 + 1395700 0.0068440373 0.0019609388 0.0053294884 + 1395800 0.0047888273 0.0025359123 0.0048929132 + 1395900 0.0046368688 0.0029256514 0.0052078602 + 1396000 0.0050655448 0.0030031942 0.0054963921 + 1396100 0.0041816405 0.0027205875 0.0047787387 + 1396200 0.0057937274 0.0023066717 0.0051582719 + 1396300 0.0054536244 0.0025519768 0.0052361825 + 1396400 0.0055837431 0.0024065702 0.0051548187 + 1396500 0.0049677582 0.0020968158 0.0045418843 + 1396600 0.004950519 0.0018304169 0.0042670005 + 1396700 0.0047346309 0.0019387682 0.0042690944 + 1396800 0.0043763015 0.0022641564 0.0044181173 + 1396900 0.0055078836 0.0025413725 0.005252284 + 1397000 0.0046450959 0.0027456177 0.0050318758 + 1397100 0.0060479213 0.0023048863 0.0052815976 + 1397200 0.0051315156 0.0024582334 0.0049839012 + 1397300 0.0054124547 0.0026769481 0.0053408907 + 1397400 0.0070818639 0.0021288068 0.0056144117 + 1397500 0.0051144829 0.0019562111 0.0044734957 + 1397600 0.0043340122 0.0021336067 0.0042667533 + 1397700 0.0048913556 0.0025183865 0.0049258505 + 1397800 0.004269518 0.0028041077 0.0049055111 + 1397900 0.0058187686 0.0023056572 0.0051695823 + 1398000 0.0052958955 0.0024076944 0.005014268 + 1398100 0.0044953541 0.0022148202 0.0044273773 + 1398200 0.0045447813 0.001856671 0.0040935556 + 1398300 0.0046573162 0.001896079 0.0041883518 + 1398400 0.0056681065 0.0015856992 0.0043754703 + 1398500 0.0058260297 0.0017271741 0.0045946731 + 1398600 0.0048653889 0.0024889319 0.0048836155 + 1398700 0.0032867756 0.0029814438 0.0045991537 + 1398800 0.005091339 0.0027242378 0.0052301312 + 1398900 0.0063739917 0.0020979954 0.0052351945 + 1399000 0.0049657724 0.0018951759 0.004339267 + 1399100 0.0079280938 0.0022599653 0.006162074 + 1399200 0.0054413145 0.0023479982 0.0050261451 + 1399300 0.0053029798 0.0020527476 0.0046628079 + 1399400 0.0037127856 0.0022006595 0.0040280462 + 1399500 0.0043171438 0.0024632286 0.0045880728 + 1399600 0.0047700481 0.0021488597 0.0044966177 + 1399700 0.0044252691 0.0021624154 0.0043404775 + 1399800 0.004712566 0.0024338814 0.0047533475 + 1399900 0.0045630593 0.0024536113 0.004699492 + 1400000 0.0050441316 0.002293786 0.0047764445 + 1400100 0.005884545 0.002139929 0.0050362284 + 1400200 0.0067089218 0.002526209 0.0058282565 + 1400300 0.0048965769 0.0023295728 0.0047396068 + 1400400 0.0064632934 0.0021102491 0.0052914013 + 1400500 0.0044438541 0.0019925579 0.0041797673 + 1400600 0.0038355105 0.0022040582 0.0040918485 + 1400700 0.005609214 0.0020780174 0.0048388024 + 1400800 0.0064602544 0.0021037228 0.0052833793 + 1400900 0.0062014801 0.0020631208 0.0051154118 + 1401000 0.0046865264 0.0024384858 0.0047451355 + 1401100 0.0040522448 0.0023669264 0.0043613906 + 1401200 0.0055314211 0.0020897636 0.0048122599 + 1401300 0.0038952545 0.002252076 0.0041692715 + 1401400 0.0049680234 0.0025932578 0.0050384569 + 1401500 0.0057466972 0.0021908268 0.0050192793 + 1401600 0.0048899971 0.001850184 0.0042569795 + 1401700 0.0044039108 0.0020796495 0.0042471993 + 1401800 0.0052759102 0.0021623436 0.0047590807 + 1401900 0.0056641043 0.0017749996 0.0045628009 + 1402000 0.0048259031 0.0018187773 0.0041940265 + 1402100 0.0051795513 0.0019673175 0.0045166279 + 1402200 0.0062081206 0.0018107023 0.0048662616 + 1402300 0.0059204175 0.0015481878 0.0044621433 + 1402400 0.0070532029 0.0016620232 0.0051335215 + 1402500 0.0058339141 0.0021255055 0.0049968851 + 1402600 0.0049797504 0.0021236641 0.0045746351 + 1402700 0.0041325201 0.0022442035 0.0042781782 + 1402800 0.0042712305 0.0020672155 0.0041694617 + 1402900 0.00626073 0.0018812718 0.0049627249 + 1403000 0.0053949688 0.0018579026 0.0045132389 + 1403100 0.0041685215 0.0022632883 0.0043149824 + 1403200 0.0037772177 0.0021590866 0.0040181859 + 1403300 0.0073647119 0.0017244294 0.0053492486 + 1403400 0.0062529904 0.001633673 0.0047113167 + 1403500 0.0047434028 0.0015658685 0.0039005121 + 1403600 0.0048095962 0.0018481468 0.0042153699 + 1403700 0.0045989196 0.0022947951 0.0045583258 + 1403800 0.0053966194 0.0020036787 0.0046598273 + 1403900 0.0049214911 0.0015972635 0.0040195599 + 1404000 0.0058046167 0.0021863572 0.0050433169 + 1404100 0.0045043343 0.0026923424 0.0049093194 + 1404200 0.0042507413 0.0025661025 0.0046582643 + 1404300 0.0044336806 0.0021525653 0.0043347675 + 1404400 0.0058452471 0.0019173289 0.0047942865 + 1404500 0.0044938233 0.0019475828 0.0041593865 + 1404600 0.0052160013 0.0021173465 0.0046845971 + 1404700 0.0064727549 0.0019206939 0.0051065029 + 1404800 0.0040322651 0.0017340039 0.0037186344 + 1404900 0.005320893 0.0016277989 0.0042466759 + 1405000 0.0049636041 0.0013835698 0.0038265937 + 1405100 0.0048197926 0.0013452459 0.0037174876 + 1405200 0.0045605998 0.0018178601 0.0040625303 + 1405300 0.0047448721 0.0019539274 0.0042892942 + 1405400 0.0044662357 0.0019626794 0.0041609048 + 1405500 0.0058710166 0.0020015871 0.0048912281 + 1405600 0.0072834406 0.0020615868 0.0056464052 + 1405700 0.0054691081 0.0023628802 0.0050547068 + 1405800 0.0061126433 0.002127078 0.0051356446 + 1405900 0.0045216511 0.0017470681 0.0039725683 + 1406000 0.0049452294 0.0020164693 0.0044504494 + 1406100 0.0052583438 0.002646415 0.0052345061 + 1406200 0.0060117951 0.0021514577 0.005110388 + 1406300 0.0069862352 0.001600923 0.0050394606 + 1406400 0.0064211682 0.0021164317 0.0052768504 + 1406500 0.0041442684 0.0025158448 0.0045556018 + 1406600 0.0062461737 0.0023336452 0.0054079338 + 1406700 0.006370823 0.0018583335 0.004993973 + 1406800 0.0041218087 0.0018522121 0.0038809148 + 1406900 0.0032811107 0.0019560163 0.003570938 + 1407000 0.0048422263 0.0020684399 0.0044517231 + 1407100 0.0046762305 0.001767189 0.0040687712 + 1407200 0.0043096575 0.0017406311 0.0038617906 + 1407300 0.0033414758 0.0018336178 0.0034782504 + 1407400 0.0035297471 0.0017924997 0.0035297971 + 1407500 0.00551669 0.0017227697 0.0044380156 + 1407600 0.0050492352 0.0018212256 0.0043063961 + 1407700 0.0044198469 0.0017613497 0.0039367431 + 1407800 0.0048478069 0.0021409441 0.0045269741 + 1407900 0.0049858308 0.0021828756 0.0046368391 + 1408000 0.0059416311 0.0021784915 0.005102888 + 1408100 0.006304377 0.0022863817 0.0053893172 + 1408200 0.0049035958 0.0020689528 0.0044824414 + 1408300 0.0024817942 0.0026002882 0.0038217963 + 1408400 0.0042149928 0.0026229414 0.0046975081 + 1408500 0.0047464814 0.00251167 0.0048478288 + 1408600 0.0050719648 0.0024369902 0.0049333479 + 1408700 0.0068529715 0.002460844 0.0058337909 + 1408800 0.0040882124 0.0029439273 0.0049560944 + 1408900 0.0056456505 0.0027721407 0.0055508594 + 1409000 0.0061861696 0.00245789 0.0055026454 + 1409100 0.0059626585 0.0031786524 0.0061133984 + 1409200 0.0039518235 0.0030457018 0.0049907399 + 1409300 0.0056880065 0.0026150734 0.0054146391 + 1409400 0.0047162412 0.0026982089 0.0050194839 + 1409500 0.0075248413 0.0022082831 0.0059119159 + 1409600 0.0055070884 0.0021998962 0.0049104162 + 1409700 0.0055103928 0.0024378716 0.005150018 + 1409800 0.0057270973 0.0023099444 0.0051287501 + 1409900 0.004676644 0.0024124006 0.0047141863 + 1410000 0.0043602869 0.002624488 0.0047705667 + 1410100 0.0045999126 0.0022686924 0.0045327119 + 1410200 0.0055974244 0.0021259133 0.0048808956 + 1410300 0.0057667478 0.0024842892 0.0053226104 + 1410400 0.0046715711 0.0029920908 0.0052913797 + 1410500 0.0048448389 0.0029463715 0.0053309407 + 1410600 0.0054656439 0.0030657024 0.005755824 + 1410700 0.0049726984 0.0029410071 0.0053885071 + 1410800 0.0058018312 0.002787135 0.0056427238 + 1410900 0.0048483785 0.0025351841 0.0049214954 + 1411000 0.003972459 0.0026847541 0.0046399487 + 1411100 0.0065904265 0.0020437351 0.0052874606 + 1411200 0.0054339446 0.0020560422 0.0047305618 + 1411300 0.0055871438 0.0025332117 0.005283134 + 1411400 0.0048479229 0.0024596312 0.0048457183 + 1411500 0.0062420874 0.0018631743 0.0049354517 + 1411600 0.0051529465 0.0019177311 0.004453947 + 1411700 0.0041874656 0.0021472403 0.0042082585 + 1411800 0.0058248434 0.0023667335 0.0052336486 + 1411900 0.0048059491 0.0022596634 0.0046250915 + 1412000 0.0055370802 0.0022395777 0.0049648593 + 1412100 0.0057668035 0.0024354386 0.0052737872 + 1412200 0.0042536289 0.002943695 0.0050372779 + 1412300 0.0068905819 0.0027123855 0.0061038438 + 1412400 0.0063466928 0.002675755 0.0057995179 + 1412500 0.005289756 0.0023353579 0.0049389097 + 1412600 0.0051156946 0.0019511318 0.0044690127 + 1412700 0.0032339255 0.001983898 0.0035755957 + 1412800 0.006151708 0.0019942778 0.0050220715 + 1412900 0.0049400502 0.0019181631 0.004349594 + 1413000 0.0038480264 0.0020093782 0.0039033287 + 1413100 0.0041308533 0.0022864912 0.0043196455 + 1413200 0.0047160649 0.0024681572 0.0047893454 + 1413300 0.0047491359 0.0028660693 0.0052035346 + 1413400 0.0048899455 0.0029305739 0.0053373439 + 1413500 0.0049750938 0.0030247321 0.0054734111 + 1413600 0.0044119376 0.0029846335 0.0051561341 + 1413700 0.0045397391 0.0028850754 0.0051194782 + 1413800 0.0045330509 0.0027892603 0.0050203712 + 1413900 0.0059092656 0.0030510733 0.0059595399 + 1414000 0.0038343482 0.0034283198 0.005315538 + 1414100 0.0039727392 0.0032328562 0.0051881888 + 1414200 0.0058877676 0.0025957049 0.0054935905 + 1414300 0.0056516924 0.002884864 0.0056665564 + 1414400 0.0024034572 0.0032587213 0.0044416729 + 1414500 0.004080519 0.003035109 0.0050434895 + 1414600 0.0040575619 0.0029614199 0.0049585012 + 1414700 0.0049398755 0.0025281402 0.0049594852 + 1414800 0.0075758289 0.0018531298 0.005581858 + 1414900 0.00396713 0.0019682838 0.0039208556 + 1415000 0.0059201663 0.0024522685 0.0053661004 + 1415100 0.0049733052 0.0029931033 0.0054409019 + 1415200 0.0050491458 0.0028060701 0.0052911966 + 1415300 0.0065707012 0.0030711824 0.0063051994 + 1415400 0.003352944 0.0035074663 0.0051577434 + 1415500 0.0045806217 0.00274312 0.0049976448 + 1415600 0.0056798655 0.0020595189 0.0048550777 + 1415700 0.0046042666 0.002098173 0.0043643355 + 1415800 0.0035619644 0.0023239903 0.0040771447 + 1415900 0.0044145426 0.0021076908 0.0042804735 + 1416000 0.0053595814 0.0023009462 0.0049388652 + 1416100 0.0050806441 0.0027275913 0.0052282209 + 1416200 0.0056979698 0.0021357993 0.0049402688 + 1416300 0.0061872509 0.0018716818 0.0049169693 + 1416400 0.0051137964 0.0021402847 0.0046572314 + 1416500 0.0037018659 0.0022504401 0.0040724523 + 1416600 0.0044822439 0.0023139098 0.0045200142 + 1416700 0.0043803787 0.0020548641 0.0042108317 + 1416800 0.0044826212 0.0019739233 0.0041802134 + 1416900 0.0046207299 0.0020074893 0.0042817547 + 1417000 0.0039294667 0.0023141243 0.0042481587 + 1417100 0.0065451848 0.002157864 0.0053793222 + 1417200 0.005947878 0.0024429508 0.0053704221 + 1417300 0.0037575213 0.0033187838 0.0051681888 + 1417400 0.0057373323 0.0027288802 0.0055527234 + 1417500 0.0044995578 0.0023550337 0.0045696598 + 1417600 0.0045897823 0.002138835 0.0043978685 + 1417700 0.0055259583 0.0024355759 0.0051553835 + 1417800 0.0059815937 0.0026245834 0.0055686491 + 1417900 0.0063182268 0.0024548889 0.0055646412 + 1418000 0.0030992474 0.002694297 0.0042197078 + 1418100 0.0040815812 0.0029448435 0.0049537468 + 1418200 0.0043203521 0.0029740036 0.0051004268 + 1418300 0.0037188968 0.002562317 0.0043927116 + 1418400 0.0043957647 0.0025653629 0.0047289033 + 1418500 0.0064206371 0.0032936412 0.0064537985 + 1418600 0.0060074215 0.0033807126 0.0063374904 + 1418700 0.0032931458 0.0033714594 0.0049923046 + 1418800 0.0048915101 0.0026509672 0.0050585074 + 1418900 0.0047061966 0.0027184623 0.0050347935 + 1419000 0.0058009971 0.0033541081 0.0062092864 + 1419100 0.0059318588 0.0037992659 0.0067188526 + 1419200 0.0037720965 0.0036195795 0.0054761583 + 1419300 0.0045452305 0.0034947155 0.0057318212 + 1419400 0.0040872037 0.0028220499 0.0048337204 + 1419500 0.0051763184 0.0026132334 0.0051609526 + 1419600 0.0057723043 0.0026511485 0.0054922045 + 1419700 0.0053712436 0.0029634344 0.0056070933 + 1419800 0.003875883 0.0026958328 0.0046034939 + 1419900 0.0049101116 0.0026091423 0.0050258379 + 1420000 0.0046593643 0.0026570764 0.0049503573 + 1420100 0.0043938575 0.0027414192 0.0049040209 + 1420200 0.0051232387 0.0024231691 0.0049447631 + 1420300 0.0040824108 0.0022876674 0.004296979 + 1420400 0.0053195795 0.0023735423 0.0049917728 + 1420500 0.0050854893 0.002943533 0.0054465473 + 1420600 0.0059712993 0.0032117487 0.0061507476 + 1420700 0.0054116575 0.0028386029 0.0055021531 + 1420800 0.0057148673 0.002514515 0.0053273012 + 1420900 0.0053243183 0.002448204 0.0050687669 + 1421000 0.0046180013 0.0021215381 0.0043944606 + 1421100 0.0057133146 0.0016472621 0.0044592841 + 1421200 0.0048431267 0.0022168891 0.0046006155 + 1421300 0.0056165797 0.0025037692 0.0052681796 + 1421400 0.0051827921 0.0026469223 0.0051978278 + 1421500 0.0047183099 0.002586304 0.0049085971 + 1421600 0.005958832 0.0025452401 0.0054781027 + 1421700 0.0046246945 0.0025227735 0.0047989903 + 1421800 0.0037779473 0.0025287096 0.004388168 + 1421900 0.0043298828 0.0026032767 0.0047343909 + 1422000 0.0063606692 0.0023835416 0.0055141835 + 1422100 0.0048741326 0.0022394921 0.0046384793 + 1422200 0.0042804419 0.0022160233 0.0043228033 + 1422300 0.0049379216 0.0022764636 0.0047068469 + 1422400 0.0048834432 0.0021742013 0.0045777711 + 1422500 0.0057540192 0.0021860295 0.0050180858 + 1422600 0.0038040223 0.002625094 0.0044973862 + 1422700 0.0045870123 0.0024481714 0.0047058415 + 1422800 0.0037634991 0.0021753329 0.0040276801 + 1422900 0.0045659321 0.0018487676 0.0040960623 + 1423000 0.0041025657 0.0017801957 0.0037994273 + 1423100 0.0061653758 0.0017647278 0.0047992487 + 1423200 0.0046336171 0.0019368685 0.0042174769 + 1423300 0.0038136443 0.0021560201 0.0040330481 + 1423400 0.0056931864 0.0018369336 0.0046390488 + 1423500 0.0049613568 0.0023346021 0.0047765199 + 1423600 0.0044319331 0.0026202699 0.004801612 + 1423700 0.0044642519 0.0024679515 0.0046652004 + 1423800 0.0069624655 0.0019199625 0.0053468009 + 1423900 0.0042217524 0.0021698171 0.0042477108 + 1424000 0.0041997421 0.0022778342 0.0043448947 + 1424100 0.0041949004 0.0022304471 0.0042951247 + 1424200 0.0037193036 0.0020177833 0.003848378 + 1424300 0.004477307 0.0018853168 0.0040889914 + 1424400 0.0048135482 0.0019485257 0.004317694 + 1424500 0.0039760097 0.0021879688 0.004144911 + 1424600 0.0046306159 0.0019504621 0.0042295933 + 1424700 0.0041760633 0.0021163537 0.0041717599 + 1424800 0.0038341962 0.0021494171 0.0040365605 + 1424900 0.0060069134 0.0019118316 0.0048683593 + 1425000 0.0051222256 0.0021169997 0.0046380951 + 1425100 0.0042080918 0.0023442505 0.0044154207 + 1425200 0.0051451874 0.0021195976 0.0046519945 + 1425300 0.0046919685 0.0019849175 0.0042942458 + 1425400 0.0029448126 0.0021875881 0.003636988 + 1425500 0.0056150153 0.0021291168 0.0048927572 + 1425600 0.0057258393 0.0023859578 0.0052041443 + 1425700 0.0058540309 0.0026903369 0.0055716177 + 1425800 0.004607402 0.0026668309 0.0049345366 + 1425900 0.0048503463 0.0027673552 0.005154635 + 1426000 0.0051856149 0.0028928958 0.0054451906 + 1426100 0.0049212914 0.002458609 0.0048808071 + 1426200 0.0040150755 0.0023965958 0.0043727658 + 1426300 0.0055526007 0.0027746756 0.0055075963 + 1426400 0.0050941733 0.0029592341 0.0054665225 + 1426500 0.0055943274 0.0026924484 0.0054459064 + 1426600 0.0063167422 0.0032528438 0.0063618654 + 1426700 0.0058260444 0.0035007272 0.0063682334 + 1426800 0.0050706644 0.0032670129 0.0057627306 + 1426900 0.0056200015 0.0031391065 0.005905201 + 1427000 0.0042976223 0.0032810072 0.0053962432 + 1427100 0.0035026036 0.00285109 0.0045750276 + 1427200 0.0054204273 0.0024187151 0.0050865816 + 1427300 0.0067860862 0.0026632934 0.0060033202 + 1427400 0.0057488551 0.0034868608 0.0063163754 + 1427500 0.0037526345 0.0036570191 0.0055040189 + 1427600 0.0063865124 0.0030493785 0.0061927401 + 1427700 0.0045230296 0.0024286482 0.0046548268 + 1427800 0.0048550254 0.0023431677 0.0047327505 + 1427900 0.0068763801 0.00269326 0.0060777283 + 1428000 0.0039128282 0.0033556872 0.0052815323 + 1428100 0.0058812336 0.0031982827 0.0060929524 + 1428200 0.004862504 0.0029580364 0.0053513001 + 1428300 0.0039839097 0.0030305431 0.0049913737 + 1428400 0.005540365 0.0031940979 0.0059209963 + 1428500 0.0044665434 0.0031866693 0.0053850461 + 1428600 0.0039367857 0.0026192068 0.0045568435 + 1428700 0.0039081451 0.0023297897 0.0042533299 + 1428800 0.0038859173 0.0020671783 0.0039797782 + 1428900 0.004614208 0.0018966859 0.0041677414 + 1429000 0.0040791609 0.0019174472 0.0039251592 + 1429100 0.0049809311 0.0022253532 0.0046769053 + 1429200 0.0035392322 0.0023446258 0.0040865916 + 1429300 0.0044707735 0.0020387873 0.0042392461 + 1429400 0.0036306403 0.0018331621 0.0036201178 + 1429500 0.0045832229 0.0017889949 0.0040447999 + 1429600 0.0033719921 0.0017651013 0.0034247537 + 1429700 0.0044152319 0.0017670475 0.0039401695 + 1429800 0.0046767401 0.0020657831 0.0043676161 + 1429900 0.0046249504 0.0024544419 0.0047307847 + 1430000 0.0060512532 0.0029355448 0.005913896 + 1430100 0.0047008641 0.0032411461 0.0055548526 + 1430200 0.0053547302 0.0032773767 0.0059129079 + 1430300 0.005674024 0.0031556542 0.0059483379 + 1430400 0.0053671208 0.0033877724 0.0060294022 + 1430500 0.0048807142 0.0032189601 0.0056211866 + 1430600 0.0045737284 0.003034807 0.005285939 + 1430700 0.0063771833 0.0029526905 0.0060914604 + 1430800 0.0052296066 0.0031792514 0.0057531984 + 1430900 0.0046091446 0.0033850788 0.0056536422 + 1431000 0.0065393065 0.003344019 0.0065625839 + 1431100 0.004039168 0.0033444783 0.0053325063 + 1431200 0.0058758103 0.0031112909 0.0060032913 + 1431300 0.0052079777 0.0031130958 0.0056763974 + 1431400 0.0044750576 0.0030913061 0.0052938735 + 1431500 0.0049264866 0.0025112825 0.0049360376 + 1431600 0.0042592641 0.0024594311 0.0045557876 + 1431700 0.005180374 0.0026233222 0.0051730375 + 1431800 0.0074936313 0.002476675 0.0061649467 + 1431900 0.0066400435 0.0030618004 0.0063299468 + 1432000 0.0055772139 0.0029666252 0.0057116602 + 1432100 0.0058966112 0.0023887891 0.0052910274 + 1432200 0.0042749928 0.0018730972 0.0039771952 + 1432300 0.0049999818 0.0019223549 0.0043832834 + 1432400 0.0048250027 0.002295356 0.004670162 + 1432500 0.0060396365 0.0023457053 0.0053183389 + 1432600 0.0057324454 0.0022400664 0.0050615044 + 1432700 0.005363965 0.0026163955 0.005256472 + 1432800 0.0050075785 0.0026595463 0.0051242138 + 1432900 0.0042893362 0.0026875946 0.0047987523 + 1433000 0.0045611716 0.0026330418 0.0048779934 + 1433100 0.00465964 0.0027916005 0.0050850171 + 1433200 0.0061552467 0.0029171144 0.0059466499 + 1433300 0.0056094678 0.0026675907 0.0054285006 + 1433400 0.0053265269 0.0024159035 0.0050375535 + 1433500 0.0038590825 0.0024329433 0.0043323355 + 1433600 0.0044033454 0.0026159454 0.0047832169 + 1433700 0.0041468863 0.0026695755 0.0047106211 + 1433800 0.0041679617 0.0030237319 0.0050751505 + 1433900 0.0038013566 0.0031920962 0.0050630764 + 1434000 0.0048009919 0.0032215223 0.0055845105 + 1434100 0.0062220681 0.0031399342 0.0062023583 + 1434200 0.0047067417 0.0031472046 0.005463804 + 1434300 0.0077590008 0.002767342 0.0065862252 + 1434400 0.0049347294 0.0027083628 0.0051371749 + 1434500 0.0061143463 0.0027658535 0.0057752583 + 1434600 0.0041698266 0.0030096482 0.0050619847 + 1434700 0.0066896359 0.0025061234 0.0057986786 + 1434800 0.0054389684 0.0022756697 0.004952662 + 1434900 0.0044642156 0.0026164627 0.0048136938 + 1435000 0.0071203603 0.0024730972 0.0059776495 + 1435100 0.0051733797 0.0026072382 0.005153511 + 1435200 0.0041493519 0.0025274205 0.0045696796 + 1435300 0.0041278929 0.0024306965 0.0044623938 + 1435400 0.0072007584 0.0022959957 0.005840119 + 1435500 0.005853858 0.0025098361 0.0053910318 + 1435600 0.0042311078 0.0021256596 0.004208158 + 1435700 0.0053947507 0.0018976604 0.0045528892 + 1435800 0.0046587813 0.0022350255 0.0045280194 + 1435900 0.0051568135 0.0023879679 0.004926087 + 1436000 0.004689413 0.0024575838 0.0047656543 + 1436100 0.0064492499 0.0024726658 0.005646906 + 1436200 0.0056397554 0.002326034 0.0051018511 + 1436300 0.0045117135 0.0019313491 0.004151958 + 1436400 0.0051725826 0.00185188 0.0043977606 + 1436500 0.0051835086 0.0018276659 0.0043789241 + 1436600 0.0039485909 0.0018069561 0.0037504032 + 1436700 0.0066622717 0.0019004813 0.0051795682 + 1436800 0.0044471134 0.0024430301 0.0046318437 + 1436900 0.0063969341 0.0030047971 0.0061532881 + 1437000 0.0050722313 0.0032966995 0.0057931884 + 1437100 0.0058487644 0.0030681418 0.0059468305 + 1437200 0.0044010133 0.0027904207 0.0049565444 + 1437300 0.0052683285 0.0028661448 0.0054591503 + 1437400 0.0042825745 0.0031537971 0.0052616267 + 1437500 0.0053789821 0.0031724922 0.00581996 + 1437600 0.0037898966 0.0028121157 0.0046774554 + 1437700 0.0057249014 0.0026112139 0.0054289388 + 1437800 0.0043055358 0.0026869283 0.0048060593 + 1437900 0.0051372852 0.0025925853 0.0051210929 + 1438000 0.0062371876 0.0024895657 0.0055594314 + 1438100 0.0043429541 0.0028577695 0.0049953172 + 1438200 0.0050273593 0.0025634328 0.0050378362 + 1438300 0.0040876143 0.0024319938 0.0044438664 + 1438400 0.0053721147 0.0026425148 0.0052866025 + 1438500 0.0053019738 0.0026097358 0.005219301 + 1438600 0.0050182032 0.0027777995 0.0052476964 + 1438700 0.0052319622 0.0025874407 0.0051625471 + 1438800 0.004865052 0.002622406 0.0050169238 + 1438900 0.0045267218 0.002735087 0.0049630829 + 1439000 0.0036766682 0.0035072499 0.00531686 + 1439100 0.0037483544 0.0035607348 0.005405628 + 1439200 0.005057265 0.003383369 0.0058724916 + 1439300 0.0043238521 0.0029849554 0.0051131013 + 1439400 0.005447654 0.0024062295 0.0050874967 + 1439500 0.0042586719 0.0023278687 0.0044239338 + 1439600 0.0042839139 0.0025047442 0.004613233 + 1439700 0.0039699955 0.002836945 0.0047909271 + 1439800 0.0073573063 0.0020980224 0.0057191966 + 1439900 0.0057070566 0.0018489974 0.0046579393 + 1440000 0.0043169329 0.0022238596 0.0043486 + 1440100 0.005424819 0.0023264109 0.004996439 + 1440200 0.0077547356 0.0028212794 0.0066380633 + 1440300 0.0059920446 0.0033401334 0.0062893428 + 1440400 0.006210324 0.0036509719 0.0067076157 + 1440500 0.0069205094 0.0033510362 0.0067572244 + 1440600 0.004366601 0.0028025405 0.0049517269 + 1440700 0.003419389 0.0025554143 0.0042383948 + 1440800 0.0061205151 0.0024210308 0.0054334718 + 1440900 0.0033713355 0.0021514838 0.003810813 + 1441000 0.0060930342 0.0016456214 0.0046445367 + 1441100 0.0060782582 0.0014728375 0.0044644802 + 1441200 0.0038471131 0.0014511922 0.0033446932 + 1441300 0.0044028729 0.0018749659 0.004042005 + 1441400 0.0049957365 0.0018888735 0.0043477125 + 1441500 0.0046945114 0.0021143378 0.0044249176 + 1441600 0.0048686501 0.002873822 0.0052701107 + 1441700 0.0061461648 0.0024593988 0.0054844643 + 1441800 0.0054095989 0.0019481442 0.0046106811 + 1441900 0.0047732928 0.0018827268 0.0042320818 + 1442000 0.0043566391 0.0018049507 0.003949234 + 1442100 0.0049246192 0.0016849818 0.0041088178 + 1442200 0.0051331701 0.001510982 0.0040374642 + 1442300 0.0047237487 0.0022966642 0.0046216343 + 1442400 0.005205616 0.0023564314 0.0049185706 + 1442500 0.0033111438 0.0024028153 0.0040325188 + 1442600 0.0038076136 0.0024315412 0.004305601 + 1442700 0.0041834843 0.0022509457 0.0043100044 + 1442800 0.0033832594 0.0020936288 0.0037588268 + 1442900 0.0072466003 0.002616541 0.0061832271 + 1443000 0.0056678557 0.0026737095 0.0054633572 + 1443100 0.0056162833 0.0020415509 0.0048058154 + 1443200 0.0047003583 0.0018092275 0.0041226851 + 1443300 0.0054230227 0.0021907618 0.0048599058 + 1443400 0.0060076393 0.0025045069 0.0054613919 + 1443500 0.0057365619 0.00249493 0.0053183941 + 1443600 0.0057454022 0.0027271928 0.0055550079 + 1443700 0.0036891058 0.0029053171 0.0047210488 + 1443800 0.0052046652 0.0023740994 0.0049357706 + 1443900 0.0060853437 0.0018951579 0.004890288 + 1444000 0.0033746743 0.0021448017 0.0038057742 + 1444100 0.0045957475 0.0016251082 0.0038870776 + 1444200 0.0032711442 0.0016953905 0.0033054068 + 1444300 0.0048267611 0.0014518034 0.0038274749 + 1444400 0.0047041789 0.001455071 0.003770409 + 1444500 0.0033695726 0.0016990436 0.0033575052 + 1444600 0.0046304075 0.0020972522 0.0043762809 + 1444700 0.0047709036 0.002343727 0.0046919061 + 1444800 0.0061913282 0.002284743 0.0053320373 + 1444900 0.0038224879 0.002180168 0.0040615488 + 1445000 0.0041551203 0.0020946074 0.0041397057 + 1445100 0.0053307594 0.0019885424 0.0046122755 + 1445200 0.0062070668 0.0021543342 0.0052093749 + 1445300 0.0033452066 0.0022744384 0.0039209073 + 1445400 0.0040652002 0.002272147 0.0042729877 + 1445500 0.0049986389 0.0019508348 0.0044111024 + 1445600 0.0039451482 0.0020397607 0.0039815133 + 1445700 0.0046986102 0.0021330733 0.0044456705 + 1445800 0.0040063248 0.002022896 0.003994759 + 1445900 0.0051736492 0.0015726398 0.0041190453 + 1446000 0.0048487738 0.0015494474 0.0039359533 + 1446100 0.0054270883 0.0018074572 0.0044786023 + 1446200 0.0051941443 0.0019785764 0.0045350693 + 1446300 0.005240828 0.0021337001 0.0047131701 + 1446400 0.0043475722 0.0019946795 0.0041345002 + 1446500 0.0042253843 0.0021009192 0.0041806005 + 1446600 0.0040124958 0.0022467842 0.0042216844 + 1446700 0.0029282008 0.0023951028 0.0038363267 + 1446800 0.0037829749 0.00260343 0.004465363 + 1446900 0.0038237612 0.0027111854 0.0045931928 + 1447000 0.0052923386 0.0030299865 0.0056348094 + 1447100 0.0056314903 0.002601682 0.0053734312 + 1447200 0.0042386703 0.0022058389 0.0042920594 + 1447300 0.0059929731 0.0018260525 0.004775719 + 1447400 0.0056382379 0.0019062243 0.0046812946 + 1447500 0.0045954483 0.0017624888 0.004024311 + 1447600 0.0028827762 0.0020027431 0.0034216095 + 1447700 0.0058178612 0.0019664775 0.004829956 + 1447800 0.0042025449 0.0018736292 0.0039420693 + 1447900 0.0043853535 0.0019969059 0.0041553221 + 1448000 0.004923998 0.002436158 0.0048596883 + 1448100 0.0059679476 0.0024572882 0.0053946374 + 1448200 0.005562388 0.0033488044 0.0060865422 + 1448300 0.0075013533 0.0029034993 0.0065955716 + 1448400 0.00741849 0.0025502384 0.0062015265 + 1448500 0.0068307866 0.0024353392 0.005797367 + 1448600 0.0040839612 0.0030510415 0.0050611161 + 1448700 0.0047352284 0.003371044 0.0057016643 + 1448800 0.0061347559 0.0027022902 0.0057217403 + 1448900 0.0057856125 0.0021750061 0.0050226122 + 1449000 0.0056679569 0.0021770964 0.004966794 + 1449100 0.0058896196 0.0021826603 0.0050814575 + 1449200 0.0048985384 0.002330404 0.0047414034 + 1449300 0.0049679344 0.0022560267 0.0047011819 + 1449400 0.0055477203 0.0027234923 0.0054540109 + 1449500 0.0079004369 0.0027862263 0.0066747226 + 1449600 0.0054172067 0.0031762107 0.0058424921 + 1449700 0.005002464 0.0028379056 0.0053000559 + 1449800 0.0051160257 0.0028982981 0.005416342 + 1449900 0.0051227352 0.003004742 0.0055260882 + 1450000 0.0057287502 0.0025450802 0.0053646995 + 1450100 0.0056073162 0.0024995799 0.0052594308 + 1450200 0.0057836175 0.0024013992 0.0052480234 + 1450300 0.0067750006 0.0027628082 0.0060973789 + 1450400 0.0043972296 0.0027105035 0.0048747649 + 1450500 0.0054763071 0.0024891225 0.0051844924 + 1450600 0.0057178618 0.0022464556 0.0050607157 + 1450700 0.0061579281 0.0024982733 0.0055291285 + 1450800 0.0045390397 0.0028799091 0.0051139677 + 1450900 0.0051685032 0.0024463529 0.0049902255 + 1451000 0.0044305376 0.0022938701 0.0044745253 + 1451100 0.0047133739 0.0021006966 0.0044205603 + 1451200 0.0057235908 0.0018461718 0.0046632517 + 1451300 0.006004086 0.0021519183 0.0051070544 + 1451400 0.0040322374 0.002756033 0.0047406498 + 1451500 0.0043728001 0.0027247223 0.0048769598 + 1451600 0.0055212588 0.002258472 0.0049759665 + 1451700 0.0066730515 0.0020929581 0.0053773506 + 1451800 0.0031665051 0.0022776347 0.003836149 + 1451900 0.003784522 0.0018660426 0.003728737 + 1452000 0.0033821802 0.0017906676 0.0034553344 + 1452100 0.006757293 0.0022897792 0.0056156344 + 1452200 0.0048573513 0.0026142077 0.0050049353 + 1452300 0.00430802 0.0025490515 0.0046694051 + 1452400 0.0039294661 0.0021559485 0.0040899826 + 1452500 0.0038969615 0.0017022484 0.0036202841 + 1452600 0.004590687 0.0018409684 0.0041004471 + 1452700 0.0051159474 0.0020458798 0.0045638852 + 1452800 0.0049528227 0.0026631002 0.0051008176 + 1452900 0.0047330997 0.0027702829 0.0050998554 + 1453000 0.0063737402 0.0023140752 0.0054511505 + 1453100 0.0047500343 0.0024479873 0.0047858948 + 1453200 0.0045168395 0.0027721472 0.0049952791 + 1453300 0.0042891789 0.0029214883 0.0050325685 + 1453400 0.0057065644 0.0027375142 0.0055462138 + 1453500 0.0038001202 0.0027552502 0.0046256218 + 1453600 0.0058150295 0.0026504164 0.0055125013 + 1453700 0.0055896222 0.0022478202 0.0049989624 + 1453800 0.0036936041 0.0024832638 0.0043012096 + 1453900 0.005369649 0.0025091606 0.0051520347 + 1454000 0.0044864475 0.0024324321 0.0046406055 + 1454100 0.0063129997 0.0021847129 0.0052918924 + 1454200 0.0037074548 0.0021045029 0.0039292658 + 1454300 0.0043195772 0.0023780094 0.0045040513 + 1454400 0.0046585735 0.0031234365 0.0054163281 + 1454500 0.0059755822 0.0025557227 0.0054968295 + 1454600 0.0058701787 0.0021950335 0.0050842621 + 1454700 0.0054183465 0.0023235048 0.0049903472 + 1454800 0.0042733961 0.0025290183 0.0046323304 + 1454900 0.0052068067 0.0024189489 0.0049816741 + 1455000 0.0045823865 0.002526235 0.0047816284 + 1455100 0.0039746281 0.0021867448 0.004143007 + 1455200 0.0043305595 0.0021487817 0.0042802289 + 1455300 0.0051120048 0.0020130464 0.0045291112 + 1455400 0.004177744 0.0019791264 0.0040353598 + 1455500 0.0053220478 0.0022573257 0.0048767712 + 1455600 0.0048477936 0.0025940657 0.0049800891 + 1455700 0.0055753043 0.0024142587 0.0051583537 + 1455800 0.0050433735 0.0026035325 0.0050858178 + 1455900 0.005470185 0.0023727319 0.0050650886 + 1456000 0.0040940075 0.0021411249 0.0041561442 + 1456100 0.0052399543 0.0025715758 0.0051506158 + 1456200 0.0042775702 0.0028511985 0.0049565651 + 1456300 0.0067405309 0.0025485822 0.0058661872 + 1456400 0.0048037026 0.002187046 0.0045513683 + 1456500 0.0044465658 0.0018457881 0.0040343322 + 1456600 0.0052870243 0.0021567241 0.0047589314 + 1456700 0.0042506386 0.0025892883 0.0046813995 + 1456800 0.0032239448 0.0026797197 0.0042665051 + 1456900 0.0066837645 0.0025508937 0.0058405591 + 1457000 0.0049765339 0.0023108589 0.0047602467 + 1457100 0.0052639881 0.0020040843 0.0045949535 + 1457200 0.004533619 0.0018602956 0.0040916862 + 1457300 0.0036115982 0.0019603396 0.0037379231 + 1457400 0.0039622841 0.0021887416 0.0041389283 + 1457500 0.003628022 0.0020672615 0.0038529285 + 1457600 0.0041987843 0.0019779216 0.0040445107 + 1457700 0.0064684783 0.0020336792 0.0052173833 + 1457800 0.0055919081 0.0027547662 0.0055070335 + 1457900 0.0040480185 0.0026999851 0.0046923692 + 1458000 0.0049271598 0.0022785609 0.0047036474 + 1458100 0.004411403 0.0023597613 0.0045309987 + 1458200 0.0042684819 0.0022268958 0.0043277892 + 1458300 0.0044130884 0.0021596972 0.0043317641 + 1458400 0.0039889629 0.0020908569 0.0040541746 + 1458500 0.0057810361 0.0021389487 0.0049843025 + 1458600 0.0067682536 0.0024884909 0.0058197407 + 1458700 0.0052194691 0.0027670519 0.0053360094 + 1458800 0.0057028913 0.0028593874 0.0056662792 + 1458900 0.0042364424 0.0028407231 0.0049258472 + 1459000 0.0050717595 0.003081125 0.0055773817 + 1459100 0.0059575122 0.0032758295 0.0062080425 + 1459200 0.0063490171 0.00335972 0.0064846268 + 1459300 0.0048450028 0.0034255311 0.0058101809 + 1459400 0.006431161 0.0031247824 0.0062901195 + 1459500 0.0065274619 0.0024631518 0.0056758869 + 1459600 0.0054235214 0.002268305 0.0049376944 + 1459700 0.0066661359 0.0024164514 0.0056974402 + 1459800 0.0055828744 0.0029385904 0.0056864114 + 1459900 0.0057898606 0.002960113 0.00580981 + 1460000 0.0040429684 0.0031424571 0.0051323556 + 1460100 0.0053984364 0.002911853 0.0055688959 + 1460200 0.0048510764 0.0034719082 0.0058595474 + 1460300 0.0055578698 0.003237171 0.0059726851 + 1460400 0.0057300397 0.0026785547 0.0054988087 + 1460500 0.0043904262 0.0023793642 0.0045402771 + 1460600 0.0055959248 0.0022681705 0.0050224147 + 1460700 0.0062984814 0.0026292347 0.0057292685 + 1460800 0.0055824753 0.0026330777 0.0053807023 + 1460900 0.0047477963 0.002217434 0.00455424 + 1461000 0.0046012085 0.0022280726 0.00449273 + 1461100 0.0054480127 0.0024424 0.0051238438 + 1461200 0.0052206685 0.0028659688 0.0054355166 + 1461300 0.0052527756 0.0024147268 0.0050000773 + 1461400 0.0072866321 0.0020829109 0.0056693002 + 1461500 0.0050582989 0.0024242565 0.004913888 + 1461600 0.0047584564 0.0023354111 0.0046774638 + 1461700 0.0076589149 0.0022571312 0.0060267534 + 1461800 0.0067435548 0.0018879362 0.0052070295 + 1461900 0.0051466183 0.0023318232 0.0048649244 + 1462000 0.0036180322 0.0025931276 0.0043738778 + 1462100 0.0041584662 0.0021369045 0.0041836496 + 1462200 0.0062149343 0.002137702 0.005196615 + 1462300 0.003977728 0.0029530984 0.0049108864 + 1462400 0.0065095274 0.0027551624 0.0059590704 + 1462500 0.0062027956 0.0023767697 0.0054297081 + 1462600 0.0045769702 0.0026008842 0.0048536117 + 1462700 0.0052513074 0.0025039544 0.0050885823 + 1462800 0.0066536642 0.0019483993 0.0052232497 + 1462900 0.005776343 0.0020865772 0.004929621 + 1463000 0.0036490773 0.0022883712 0.0040844014 + 1463100 0.0058244427 0.0022447865 0.0051115044 + 1463200 0.0049889112 0.0023059539 0.0047614336 + 1463300 0.0045998231 0.0023042272 0.0045682026 + 1463400 0.0049815666 0.0018444765 0.0042963413 + 1463500 0.0055929434 0.0022918485 0.0050446254 + 1463600 0.0049432748 0.0025023304 0.0049353485 + 1463700 0.003424031 0.0023527265 0.0040379918 + 1463800 0.0045431041 0.002447584 0.0046836431 + 1463900 0.0048955886 0.0023734147 0.0047829622 + 1464000 0.0066348236 0.002060525 0.0053261022 + 1464100 0.0057107225 0.0023333381 0.0051440844 + 1464200 0.0055438538 0.0026334714 0.0053620869 + 1464300 0.0061978063 0.0022721314 0.0053226142 + 1464400 0.005690344 0.0024404756 0.0052411918 + 1464500 0.0060017244 0.0027629292 0.005716903 + 1464600 0.0050996835 0.0028358017 0.0053458021 + 1464700 0.0068572701 0.0027675129 0.0061425755 + 1464800 0.0050784274 0.0034150994 0.0059146379 + 1464900 0.00480379 0.003686251 0.0060506164 + 1465000 0.0060346086 0.0031148032 0.0060849621 + 1465100 0.0057877135 0.0023019812 0.0051506214 + 1465200 0.0047170825 0.0023329417 0.0046546307 + 1465300 0.0042120459 0.0023207367 0.004393853 + 1465400 0.0047381237 0.0021609611 0.0044930063 + 1465500 0.0047560804 0.0023159773 0.0046568606 + 1465600 0.0070705082 0.0020260567 0.0055060724 + 1465700 0.0047406443 0.0024266878 0.0047599737 + 1465800 0.0054114649 0.0023368911 0.0050003465 + 1465900 0.0044373747 0.0021945591 0.0043785795 + 1466000 0.0044150512 0.0024043259 0.0045773589 + 1466100 0.0049416282 0.0025720422 0.0050042498 + 1466200 0.0051049888 0.0022625869 0.0047751986 + 1466300 0.0045339219 0.0024677109 0.0046992506 + 1466400 0.004114492 0.002246497 0.0042715985 + 1466500 0.0071668824 0.0017953977 0.0053228477 + 1466600 0.0049167774 0.0022771426 0.004697119 + 1466700 0.0052092216 0.0021438916 0.0047078053 + 1466800 0.0044954395 0.0024071387 0.0046197379 + 1466900 0.0050708051 0.0023547693 0.0048505562 + 1467000 0.0052134645 0.0026376577 0.0052036597 + 1467100 0.004587448 0.002622622 0.0048805066 + 1467200 0.0064027846 0.0021179006 0.0052692711 + 1467300 0.0063330238 0.0018152113 0.0049322465 + 1467400 0.0046208364 0.0022465397 0.0045208576 + 1467500 0.004333651 0.002667768 0.0048007369 + 1467600 0.0061702818 0.0026351145 0.00567205 + 1467700 0.0065303527 0.0024746949 0.0056888529 + 1467800 0.0042485407 0.0026341985 0.0047252772 + 1467900 0.004694991 0.0026103457 0.0049211616 + 1468000 0.0052837688 0.0022527529 0.0048533579 + 1468100 0.0056016699 0.0024369382 0.0051940101 + 1468200 0.0062133675 0.0019404347 0.0049985766 + 1468300 0.00601011 0.0016561732 0.0046142743 + 1468400 0.0047013064 0.0018050459 0.0041189702 + 1468500 0.0056601348 0.0020547939 0.0048406415 + 1468600 0.0044467185 0.0021549376 0.0043435568 + 1468700 0.0041179744 0.0018986262 0.0039254418 + 1468800 0.0043878715 0.0015282776 0.0036879331 + 1468900 0.0051371501 0.0015488467 0.0040772878 + 1469000 0.0049479192 0.0023444453 0.0047797492 + 1469100 0.0054398595 0.0027022634 0.0053796943 + 1469200 0.0056765977 0.0020330578 0.0048270082 + 1469300 0.0050707162 0.0016686052 0.0041643484 + 1469400 0.0069028637 0.0020304272 0.0054279304 + 1469500 0.004890926 0.0022983424 0.0047055951 + 1469600 0.0056510005 0.0021684306 0.0049497824 + 1469700 0.0046332447 0.002512428 0.0047928532 + 1469800 0.0052006364 0.0028424492 0.0054021374 + 1469900 0.0055142704 0.0029572797 0.0056713346 + 1470000 0.0055273568 0.0024273814 0.0051478773 + 1470100 0.0048683878 0.0024629137 0.0048590733 + 1470200 0.0069393672 0.0026128819 0.0060283518 + 1470300 0.0053999965 0.0026718679 0.0053296787 + 1470400 0.0067236716 0.0022527171 0.0055620242 + 1470500 0.0047192917 0.0022250513 0.0045478277 + 1470600 0.0060719696 0.002539689 0.0055282365 + 1470700 0.0057277748 0.0023767538 0.0051958929 + 1470800 0.0056209507 0.0022084025 0.0049749642 + 1470900 0.0056186702 0.0023145028 0.005079942 + 1471000 0.0063817253 0.0023437256 0.0054847311 + 1471100 0.0053445351 0.0020555339 0.0046860473 + 1471200 0.0043327826 0.0022779233 0.0044104648 + 1471300 0.0043414345 0.0023480815 0.0044848813 + 1471400 0.0057345165 0.0021856098 0.0050080671 + 1471500 0.0064971867 0.002404988 0.0056028221 + 1471600 0.0050126522 0.0027622884 0.0052294531 + 1471700 0.0038746346 0.0025350489 0.0044420956 + 1471800 0.0066146334 0.0019971439 0.0052527838 + 1471900 0.0063681302 0.0020055633 0.0051398774 + 1472000 0.0038600908 0.0025509082 0.0044507967 + 1472100 0.004367434 0.0025174181 0.0046670145 + 1472200 0.0071786446 0.0023775269 0.0059107661 + 1472300 0.0046705956 0.0022826273 0.004581436 + 1472400 0.0054363988 0.0020504344 0.004726162 + 1472500 0.0046461542 0.0022746565 0.0045614355 + 1472600 0.005314631 0.0022164427 0.0048322377 + 1472700 0.0067796005 0.0019299724 0.0052668071 + 1472800 0.004128349 0.0017329796 0.0037649014 + 1472900 0.0053983828 0.0020979339 0.0047549504 + 1473000 0.0050981295 0.0029855991 0.0054948347 + 1473100 0.0044317302 0.0027105703 0.0048918125 + 1473200 0.0052674001 0.002350431 0.0049429795 + 1473300 0.0047583554 0.0022722707 0.0046142738 + 1473400 0.0055641101 0.0020521962 0.0047907817 + 1473500 0.0062635726 0.0024082455 0.0054910976 + 1473600 0.004803321 0.0025972829 0.0049614174 + 1473700 0.0059629301 0.0029341712 0.0058690509 + 1473800 0.0050663072 0.0028576311 0.0053512041 + 1473900 0.0048037108 0.0029600332 0.0053243596 + 1474000 0.0064609221 0.0027529455 0.0059329306 + 1474100 0.004504887 0.0022432005 0.0044604496 + 1474200 0.006262558 0.0021333738 0.0052157266 + 1474300 0.0066860989 0.0020858499 0.0053766642 + 1474400 0.0063537689 0.0020729112 0.0052001568 + 1474500 0.0052112374 0.0023280462 0.0048929522 + 1474600 0.0054448975 0.0020925606 0.0047724711 + 1474700 0.0055568044 0.0019825739 0.0047175636 + 1474800 0.0055099186 0.0023573583 0.0050692713 + 1474900 0.0053901266 0.00270733 0.0053602829 + 1475000 0.0051487918 0.0024568702 0.0049910412 + 1475100 0.0052225871 0.0021899388 0.0047604309 + 1475200 0.0035847137 0.0018299457 0.0035942969 + 1475300 0.0052938929 0.0015623582 0.0041679462 + 1475400 0.0062480864 0.0014841899 0.0045594199 + 1475500 0.0049200375 0.0018945347 0.0043161157 + 1475600 0.0041628526 0.0021226127 0.0041715167 + 1475700 0.0048937401 0.0020962814 0.0045049191 + 1475800 0.005001836 0.0027191328 0.0051809739 + 1475900 0.0050684017 0.0022827944 0.0047773983 + 1476000 0.0064653641 0.0017858346 0.004968006 + 1476100 0.0048719284 0.001744476 0.0041423782 + 1476200 0.0044265506 0.0014426705 0.0036213634 + 1476300 0.0042645464 0.0015400447 0.0036390011 + 1476400 0.0049766439 0.0018430531 0.004292495 + 1476500 0.0039332336 0.0020300184 0.0039659068 + 1476600 0.0042324804 0.0019421907 0.0040253646 + 1476700 0.0039475384 0.0021347964 0.0040777255 + 1476800 0.0054406227 0.0020541111 0.0047319176 + 1476900 0.0063202244 0.0019913085 0.0051020439 + 1477000 0.0056546316 0.0023345486 0.0051176877 + 1477100 0.0049516908 0.0022678467 0.0047050071 + 1477200 0.0049938071 0.0024696178 0.0049275072 + 1477300 0.0045860693 0.0022613707 0.0045185766 + 1477400 0.0045566549 0.0020962228 0.0043389514 + 1477500 0.0045477738 0.0019943135 0.0042326709 + 1477600 0.0046846204 0.0018779482 0.0041836598 + 1477700 0.0041273213 0.0018629945 0.0038944105 + 1477800 0.0050560778 0.0018053873 0.0042939256 + 1477900 0.0060566834 0.0014884678 0.0044694917 + 1478000 0.0051855187 0.0011171863 0.0036694338 + 1478100 0.0052310828 0.0015611093 0.0041357829 + 1478200 0.0047953975 0.0017766127 0.0041368474 + 1478300 0.0046528399 0.0018336402 0.0041237098 + 1478400 0.0060154979 0.0018421339 0.0048028868 + 1478500 0.0053784248 0.0024503669 0.0050975604 + 1478600 0.0046429232 0.0022968087 0.0045819975 + 1478700 0.0067284193 0.0021758036 0.0054874475 + 1478800 0.0050115026 0.0022227094 0.0046893084 + 1478900 0.0045114978 0.0015503601 0.0037708629 + 1479000 0.0055216442 0.001679603 0.0043972872 + 1479100 0.0041891036 0.0017839304 0.0038457548 + 1479200 0.0041611876 0.0015113242 0.0035594087 + 1479300 0.0054527307 0.0014065528 0.0040903187 + 1479400 0.0039386086 0.0016150861 0.00355362 + 1479500 0.0056676296 0.0015645083 0.0043540447 + 1479600 0.004822647 0.0019940677 0.0043677142 + 1479700 0.0044497442 0.0027908501 0.0049809586 + 1479800 0.0057669155 0.002624823 0.0054632268 + 1479900 0.0042047679 0.0025630706 0.0046326048 + 1480000 0.0050431171 0.0024760455 0.0049582047 + 1480100 0.0061117135 0.0025113859 0.0055194949 + 1480200 0.0057352556 0.0025155273 0.0053383484 + 1480300 0.0050146779 0.0022565727 0.0047247345 + 1480400 0.0063004993 0.0028655144 0.0059665414 + 1480500 0.0042920716 0.0026999663 0.0048124703 + 1480600 0.0045764047 0.002342623 0.0045950722 + 1480700 0.0054609237 0.0024976116 0.00518541 + 1480800 0.0049035546 0.0021295064 0.0045429747 + 1480900 0.0039866434 0.0017366011 0.0036987772 + 1481000 0.0036916328 0.0020342146 0.0038511902 + 1481100 0.0041188845 0.0021314762 0.0041587397 + 1481200 0.0058121795 0.0017894109 0.004650093 + 1481300 0.0040802464 0.0016895716 0.0036978178 + 1481400 0.0055503583 0.0018426349 0.0045744519 + 1481500 0.0058914632 0.0021599163 0.0050596208 + 1481600 0.0044502035 0.0029060345 0.005096369 + 1481700 0.0048910845 0.0026019552 0.0050092858 + 1481800 0.0063106649 0.0023004421 0.0054064725 + 1481900 0.0050949244 0.0024992173 0.0050068754 + 1482000 0.0051341869 0.0021600334 0.004687016 + 1482100 0.0064304467 0.0021020243 0.0052670098 + 1482200 0.0049084147 0.0020880092 0.0045038696 + 1482300 0.0041204628 0.0016909803 0.0037190206 + 1482400 0.0058032882 0.0015042723 0.0043605782 + 1482500 0.0051307142 0.0017599099 0.0042851833 + 1482600 0.0052421887 0.0018621517 0.0044422915 + 1482700 0.006646007 0.0024415578 0.0057126394 + 1482800 0.0064926819 0.0029369848 0.0061326017 + 1482900 0.0065884364 0.0025405146 0.0057832607 + 1483000 0.0068402767 0.002302549 0.0056692478 + 1483100 0.0050608817 0.0023741377 0.0048650405 + 1483200 0.0049697599 0.002175639 0.0046216927 + 1483300 0.0050340224 0.0018722527 0.0043499356 + 1483400 0.0057834455 0.0017602342 0.0046067738 + 1483500 0.0066866057 0.0016509414 0.0049420051 + 1483600 0.0055550211 0.0020781017 0.0048122136 + 1483700 0.006104311 0.0021885593 0.0051930248 + 1483800 0.0058966765 0.0024804227 0.0053826931 + 1483900 0.0043964438 0.0027289334 0.0048928081 + 1484000 0.0047159393 0.0020820676 0.004403194 + 1484100 0.0066091914 0.0020903083 0.0053432697 + 1484200 0.0042605202 0.0023689465 0.0044659213 + 1484300 0.0038418114 0.0022427861 0.0041336777 + 1484400 0.0043127083 0.0023704967 0.0044931578 + 1484500 0.0042626909 0.003248652 0.0053466952 + 1484600 0.0057875468 0.0025695493 0.0054181075 + 1484700 0.0062562714 0.0021442807 0.0052235393 + 1484800 0.0061775564 0.0024192038 0.0054597199 + 1484900 0.0058244198 0.0025321533 0.0053988599 + 1485000 0.0064011168 0.0021796884 0.0053302381 + 1485100 0.0057683433 0.0021396062 0.0049787127 + 1485200 0.0052737627 0.0020723638 0.0046680439 + 1485300 0.0051698008 0.0020710236 0.0046155349 + 1485400 0.006249243 0.0029123539 0.0059881532 + 1485500 0.0053272757 0.0031115657 0.0057335842 + 1485600 0.0050587034 0.003023072 0.0055129025 + 1485700 0.0066414695 0.0026033803 0.0058722286 + 1485800 0.0050254321 0.0025565475 0.0050300023 + 1485900 0.0038230771 0.0024541329 0.0043358036 + 1486000 0.0051966152 0.0024303941 0.0049881031 + 1486100 0.0041447857 0.0024191238 0.0044591356 + 1486200 0.006229588 0.0024534984 0.0055196237 + 1486300 0.0053477883 0.0025194976 0.0051516122 + 1486400 0.0051445091 0.002563166 0.0050952291 + 1486500 0.0048010582 0.0026166701 0.0049796909 + 1486600 0.0055046283 0.0021550499 0.0048643591 + 1486700 0.0050818744 0.0021313674 0.0046326024 + 1486800 0.006125438 0.0024647437 0.0054796077 + 1486900 0.0047716284 0.0024313536 0.0047798895 + 1487000 0.0051899323 0.0025743453 0.0051287651 + 1487100 0.0042189233 0.0024940298 0.0045705311 + 1487200 0.004076262 0.0030572656 0.0050635508 + 1487300 0.004194235 0.0030033736 0.0050677236 + 1487400 0.0062500574 0.0026047445 0.0056809447 + 1487500 0.0044748327 0.0023108773 0.0045133341 + 1487600 0.0056194873 0.0019896162 0.0047554576 + 1487700 0.0054284888 0.0023929764 0.0050648107 + 1487800 0.0047589912 0.0027743725 0.0051166885 + 1487900 0.0052179466 0.0024708585 0.0050390666 + 1488000 0.0036881592 0.0020585629 0.0038738288 + 1488100 0.0049204744 0.0025546259 0.0049764219 + 1488200 0.0045336161 0.0029335264 0.0051649156 + 1488300 0.0055008577 0.0022299626 0.004937416 + 1488400 0.0061090111 0.0018189885 0.0048257674 + 1488500 0.0046179961 0.0021770042 0.0044499242 + 1488600 0.0069132106 0.0023410417 0.0057436376 + 1488700 0.0056893547 0.0028095385 0.0056097677 + 1488800 0.0048925947 0.0028995595 0.0053076335 + 1488900 0.0057893355 0.0028502474 0.0056996859 + 1489000 0.00415178 0.0024843174 0.0045277716 + 1489100 0.0050210302 0.0025341819 0.0050054702 + 1489200 0.0048679593 0.0026137649 0.0050097136 + 1489300 0.005426067 0.0025187047 0.0051893471 + 1489400 0.0064736768 0.0028559938 0.0060422566 + 1489500 0.0057840197 0.0032920224 0.0061388446 + 1489600 0.0048647292 0.0032400299 0.0056343888 + 1489700 0.0053791984 0.0030591685 0.0057067427 + 1489800 0.0051093602 0.0028832665 0.0053980297 + 1489900 0.0043490522 0.0029364476 0.0050769967 + 1490000 0.0046189313 0.002438904 0.0047122843 + 1490100 0.0033522025 0.0020940342 0.0037439464 + 1490200 0.0055979414 0.0024641723 0.0052194091 + 1490300 0.0041294925 0.0024326997 0.0044651843 + 1490400 0.0047052833 0.0024030769 0.0047189586 + 1490500 0.00517226 0.002628905 0.0051746267 + 1490600 0.0043274521 0.0027095497 0.0048394676 + 1490700 0.0066316653 0.0017565496 0.0050205723 + 1490800 0.0042497492 0.001764226 0.0038558995 + 1490900 0.004954974 0.0020042894 0.0044430656 + 1491000 0.0039548675 0.0023036213 0.0042501577 + 1491100 0.003773325 0.0024488615 0.0043060449 + 1491200 0.0047884728 0.0019777285 0.004334555 + 1491300 0.0055490741 0.0018135504 0.0045447353 + 1491400 0.0055137577 0.0023082874 0.00502209 + 1491500 0.0054323077 0.0026281402 0.0053018542 + 1491600 0.0063562754 0.0025802906 0.0057087699 + 1491700 0.0041067902 0.0027600437 0.0047813545 + 1491800 0.004834544 0.0025465431 0.0049260452 + 1491900 0.0036699567 0.0025353092 0.004341616 + 1492000 0.0048825864 0.002831887 0.005235035 + 1492100 0.0053571916 0.0023050577 0.0049418005 + 1492200 0.0057715032 0.0022149698 0.0050556315 + 1492300 0.0049405883 0.0023843264 0.0048160222 + 1492400 0.0066728689 0.0022023718 0.0054866745 + 1492500 0.0044326416 0.002041683 0.0042233738 + 1492600 0.006490182 0.0019115657 0.0051059521 + 1492700 0.0055712094 0.0021821509 0.0049242305 + 1492800 0.00458795 0.002453384 0.0047115156 + 1492900 0.0039544866 0.0024181832 0.004364532 + 1493000 0.0038174705 0.0026419092 0.0045208204 + 1493100 0.0056453831 0.0021570913 0.0049356783 + 1493200 0.0054524912 0.0022872231 0.0049708712 + 1493300 0.0038577378 0.0024559837 0.004354714 + 1493400 0.0050575116 0.002332611 0.004821855 + 1493500 0.0057376621 0.0024308796 0.0052548851 + 1493600 0.0054328631 0.0025320639 0.0052060512 + 1493700 0.0065261449 0.0021761289 0.0053882159 + 1493800 0.005320308 0.0020082427 0.0046268318 + 1493900 0.0059649493 0.002102895 0.0050387685 + 1494000 0.0058234588 0.0027285889 0.0055948225 + 1494100 0.0053757132 0.0027801939 0.0054260528 + 1494200 0.0051656065 0.0026532617 0.0051957087 + 1494300 0.0043183978 0.0021887599 0.0043142213 + 1494400 0.0066697141 0.0017503538 0.0050331037 + 1494500 0.0045145738 0.0019145802 0.004136597 + 1494600 0.0037149068 0.0020392749 0.0038677056 + 1494700 0.0051592063 0.0018813202 0.0044206171 + 1494800 0.0050549936 0.0019659229 0.0044539275 + 1494900 0.0047057111 0.0022269378 0.00454303 + 1495000 0.0041444478 0.0023923208 0.0044321662 + 1495100 0.0047424852 0.0023234021 0.004657594 + 1495200 0.0039052112 0.0021759884 0.0040980846 + 1495300 0.0047780586 0.002266316 0.0046180167 + 1495400 0.0046673535 0.0025270391 0.0048242521 + 1495500 0.0064114797 0.0023275695 0.0054832197 + 1495600 0.0049701781 0.0022977568 0.0047440163 + 1495700 0.0049019178 0.002397053 0.0048097156 + 1495800 0.0077236118 0.0019149853 0.0057164505 + 1495900 0.005481349 0.0016512729 0.0043491243 + 1496000 0.0055172321 0.0021117788 0.0048272915 + 1496100 0.004949446 0.0022249438 0.0046609992 + 1496200 0.0045173884 0.0023780281 0.0046014301 + 1496300 0.0082592452 0.0023396396 0.0064047369 + 1496400 0.0045293643 0.0026151919 0.0048444884 + 1496500 0.0047793989 0.0025621841 0.0049145445 + 1496600 0.0055908705 0.0026107526 0.0053625091 + 1496700 0.0061451609 0.0028421959 0.0058667672 + 1496800 0.0042212423 0.0029899813 0.005067624 + 1496900 0.0031428117 0.0030264036 0.0045732562 + 1497000 0.003683848 0.0028440791 0.0046572231 + 1497100 0.0063902706 0.0022090411 0.0053542525 + 1497200 0.0062598919 0.0021438666 0.0052249072 + 1497300 0.0060909246 0.0027378289 0.0057357058 + 1497400 0.0052964001 0.0027707184 0.0053775403 + 1497500 0.0037257199 0.0022313963 0.0040651491 + 1497600 0.0033112858 0.001663395 0.0032931685 + 1497700 0.0047040547 0.0018477307 0.0041630076 + 1497800 0.006174548 0.0019172736 0.004956309 + 1497900 0.0052007276 0.0023374717 0.0048972048 + 1498000 0.0039442666 0.0027556655 0.0046969842 + 1498100 0.0058569341 0.0024576744 0.0053403841 + 1498200 0.0057243381 0.0021443321 0.0049617798 + 1498300 0.0042955436 0.0020230429 0.0041372558 + 1498400 0.0053213624 0.002081689 0.004700797 + 1498500 0.0039679231 0.0022580276 0.0042109897 + 1498600 0.003331932 0.0021629341 0.0038028694 + 1498700 0.0051669311 0.002404877 0.004947976 + 1498800 0.0053953503 0.0023317074 0.0049872314 + 1498900 0.0054637311 0.0021053178 0.0047944979 + 1499000 0.0050388391 0.0025664001 0.0050464538 + 1499100 0.0044079666 0.0021888991 0.0043584452 + 1499200 0.0049043333 0.0017430348 0.0041568864 + 1499300 0.0052984377 0.0023471789 0.0049550037 + 1499400 0.0047145914 0.002660722 0.004981185 + 1499500 0.0054142053 0.0027892003 0.0054540044 + 1499600 0.004719967 0.0023175015 0.0046406103 + 1499700 0.0036133681 0.0023205375 0.0040989921 + 1499800 0.00450027 0.0023143678 0.0045293444 + 1499900 0.0054411038 0.0021356146 0.0048136578 + 1500000 0.003692483 0.0023129774 0.0041303713 + 1500100 0.0048437867 0.0024122836 0.0047963348 + 1500200 0.0052954254 0.002259854 0.0048661962 + 1500300 0.0049388982 0.0023352299 0.0047660938 + 1500400 0.0057716217 0.0024258008 0.0052665208 + 1500500 0.0037373169 0.0025623923 0.0044018529 + 1500600 0.0047272109 0.0025192239 0.004845898 + 1500700 0.0056212462 0.0027350862 0.0055017933 + 1500800 0.0050268939 0.0023463102 0.0048204846 + 1500900 0.0043949774 0.0021224014 0.0042855543 + 1501000 0.0058346776 0.0019533886 0.004825144 + 1501100 0.0046513122 0.0020630596 0.0043523773 + 1501200 0.0048750665 0.0017524234 0.0041518702 + 1501300 0.0064348679 0.0017643754 0.004931537 + 1501400 0.0047596434 0.0020704603 0.0044130973 + 1501500 0.0055008538 0.0021180663 0.0048255177 + 1501600 0.0056532213 0.0020692981 0.004851743 + 1501700 0.005034928 0.0021075373 0.0045856659 + 1501800 0.0036573041 0.0019906614 0.0037907408 + 1501900 0.0050235745 0.001981936 0.0044544766 + 1502000 0.0049797687 0.0022951094 0.0047460894 + 1502100 0.0038400142 0.0023399632 0.0042299702 + 1502200 0.0043136045 0.0028452033 0.0049683055 + 1502300 0.004264136 0.0028787613 0.0049775158 + 1502400 0.005475586 0.0029304531 0.0056254681 + 1502500 0.005151299 0.0029667837 0.0055021886 + 1502600 0.004591292 0.0024222029 0.0046819794 + 1502700 0.005192881 0.0020815332 0.0046374043 + 1502800 0.0046316052 0.0020810151 0.0043606333 + 1502900 0.0072536694 0.0018461915 0.0054163569 + 1503000 0.0048483571 0.0018659627 0.0042522634 + 1503100 0.0041771063 0.0024975326 0.0045534521 + 1503200 0.0067754644 0.00264407 0.0059788689 + 1503300 0.005246429 0.0024073594 0.0049895862 + 1503400 0.0037686212 0.0020060442 0.0038609125 + 1503500 0.0049456813 0.0021985607 0.0046327632 + 1503600 0.004706661 0.0025430087 0.0048595684 + 1503700 0.0043172581 0.0024631599 0.0045880604 + 1503800 0.0048456167 0.0027736778 0.0051586298 + 1503900 0.0070687461 0.0024267498 0.0059058983 + 1504000 0.0061946677 0.0025087077 0.0055576457 + 1504100 0.0057969605 0.0025579169 0.0054111084 + 1504200 0.0060882876 0.0024898842 0.0054864632 + 1504300 0.0035113445 0.0032156063 0.0049438462 + 1504400 0.0056295335 0.0035082388 0.0062790249 + 1504500 0.0042719482 0.0031324959 0.0052350954 + 1504600 0.0049853268 0.002535756 0.0049894715 + 1504700 0.004836319 0.0024196194 0.0047999951 + 1504800 0.0046044734 0.0024723642 0.0047386284 + 1504900 0.0059045754 0.0022435526 0.0051497108 + 1505000 0.00450463 0.0022781843 0.0044953068 + 1505100 0.0056751165 0.0025929471 0.0053861685 + 1505200 0.0055928607 0.0027419721 0.0054947083 + 1505300 0.004852877 0.0030134988 0.0054020242 + 1505400 0.0048841943 0.0027220665 0.0051260059 + 1505500 0.0054190807 0.0025197263 0.0051869301 + 1505600 0.0050878703 0.0025592491 0.0050634353 + 1505700 0.0059066315 0.0020012867 0.0049084569 + 1505800 0.0043431493 0.0021715195 0.0043091633 + 1505900 0.0051571201 0.0026563155 0.0051945855 + 1506000 0.0050411292 0.0033442162 0.0058253969 + 1506100 0.0046846707 0.0033790392 0.0056847756 + 1506200 0.0046829373 0.0031229548 0.005427838 + 1506300 0.0070290175 0.0030060876 0.0064656822 + 1506400 0.0054024936 0.0027031191 0.0053621589 + 1506500 0.0048924758 0.0025044441 0.0049124596 + 1506600 0.0052747398 0.0021042506 0.0047004116 + 1506700 0.0038663284 0.0017686475 0.003671606 + 1506800 0.0056411864 0.0018078569 0.0045843783 + 1506900 0.004383927 0.0020145698 0.0041722839 + 1507000 0.005774592 0.0018382765 0.0046804585 + 1507100 0.0039662937 0.0023561308 0.004308291 + 1507200 0.0043004457 0.0025469096 0.0046635352 + 1507300 0.0050651623 0.0025465585 0.0050395681 + 1507400 0.0051002197 0.0023519865 0.0048622509 + 1507500 0.0050313437 0.0026107957 0.0050871602 + 1507600 0.0056537164 0.002480808 0.0052634966 + 1507700 0.0058010691 0.0022854669 0.0051406806 + 1507800 0.0062232559 0.0020584311 0.0051214399 + 1507900 0.0035227126 0.0022692556 0.0040030907 + 1508000 0.0043524771 0.0021906377 0.0043328725 + 1508100 0.0050897435 0.0022349241 0.0047400322 + 1508200 0.0045667767 0.0028489971 0.0050967075 + 1508300 0.0050808813 0.002659235 0.0051599813 + 1508400 0.0060607612 0.0028851161 0.005868147 + 1508500 0.004753333 0.002973656 0.0053131871 + 1508600 0.0058419217 0.0031440409 0.0060193618 + 1508700 0.006273995 0.00268066 0.005768642 + 1508800 0.0048476588 0.0023281634 0.0047141204 + 1508900 0.0058189326 0.0025546534 0.0054186593 + 1509000 0.0044159499 0.0032721708 0.0054456461 + 1509100 0.0058170787 0.0031932807 0.0060563741 + 1509200 0.0047685919 0.0029035743 0.0052506156 + 1509300 0.0043946348 0.002896467 0.0050594513 + 1509400 0.0045418719 0.0027978564 0.005033309 + 1509500 0.0059876446 0.003277519 0.0062245628 + 1509600 0.005548594 0.0039081741 0.0066391227 + 1509700 0.0052395058 0.0030080807 0.0055869 + 1509800 0.0044032345 0.0023611931 0.0045284101 + 1509900 0.0053346307 0.0020282123 0.0046538509 + 1510000 0.0050269552 0.0018426489 0.0043168534 + 1510100 0.0050750293 0.0019851865 0.0044830525 + 1510200 0.0057687046 0.0023530403 0.0051923246 + 1510300 0.003871221 0.0026073051 0.0045126716 + 1510400 0.0043704133 0.0031429376 0.0052940003 + 1510500 0.0061154086 0.0029420951 0.0059520227 + 1510600 0.004459885 0.0030707475 0.0052658471 + 1510700 0.005376231 0.0027203347 0.0053664484 + 1510800 0.0038731297 0.0021574806 0.0040637866 + 1510900 0.0052683603 0.0026376541 0.0052306752 + 1511000 0.0037464295 0.0028302782 0.004674224 + 1511100 0.0045320129 0.0031903483 0.0054209484 + 1511200 0.0055896773 0.0032769903 0.0060281596 + 1511300 0.0062370698 0.002866001 0.0059358088 + 1511400 0.0057949626 0.0026065195 0.0054587277 + 1511500 0.0060494835 0.0026769118 0.0056543919 + 1511600 0.0056089006 0.0029465465 0.0057071773 + 1511700 0.0046997517 0.0027089258 0.0050220848 + 1511800 0.0061638515 0.0028846233 0.005918394 + 1511900 0.0049957453 0.002883685 0.0053425284 + 1512000 0.0051966791 0.0025995418 0.0051572823 + 1512100 0.003608936 0.0021167813 0.0038930544 + 1512200 0.0049258816 0.002110402 0.0045348594 + 1512300 0.0054037442 0.0022535711 0.0049132265 + 1512400 0.0035455988 0.0027464541 0.0044915535 + 1512500 0.0051608497 0.0027003003 0.005240406 + 1512600 0.0049070876 0.0026834776 0.0050986847 + 1512700 0.0049026272 0.0028898928 0.0053029046 + 1512800 0.0050683608 0.0027479985 0.0052425823 + 1512900 0.0039218045 0.0027878891 0.0047181522 + 1513000 0.0046677332 0.002917759 0.005215159 + 1513100 0.0046583706 0.0031248395 0.0054176313 + 1513200 0.0071732993 0.0031145553 0.0066451636 + 1513300 0.0045780892 0.0032303843 0.0054836625 + 1513400 0.0062466189 0.0032223703 0.0062968781 + 1513500 0.0054313875 0.0033740107 0.0060472717 + 1513600 0.0055785173 0.003281944 0.0060276205 + 1513700 0.0043455686 0.002885176 0.0050240106 + 1513800 0.0053708571 0.0024919923 0.005135461 + 1513900 0.0038019162 0.0022680529 0.0041393086 + 1514000 0.0053917242 0.0019656528 0.0046193921 + 1514100 0.0041095939 0.0022867564 0.0043094472 + 1514200 0.0052631127 0.0025396083 0.0051300466 + 1514300 0.0054031409 0.0026616348 0.0053209932 + 1514400 0.0056201314 0.0024949737 0.0052611321 + 1514500 0.0041186107 0.0027015114 0.0047286401 + 1514600 0.0054978585 0.0024662829 0.0051722601 + 1514700 0.0044095454 0.0026676095 0.0048379326 + 1514800 0.0061763494 0.0023333684 0.0053732903 + 1514900 0.0064733013 0.0021786155 0.0053646935 + 1515000 0.0047025267 0.0025933626 0.0049078875 + 1515100 0.0064364848 0.0024439485 0.0056119059 + 1515200 0.0064785247 0.0020598219 0.0052484708 + 1515300 0.0054058637 0.002352911 0.0050136096 + 1515400 0.0035196655 0.0029374648 0.0046698002 + 1515500 0.0046591607 0.0026673898 0.0049605704 + 1515600 0.0058240967 0.0023377858 0.0052043334 + 1515700 0.0063877695 0.0022772613 0.0054212416 + 1515800 0.0057246993 0.0022628483 0.0050804737 + 1515900 0.0067557799 0.0023205617 0.0056456721 + 1516000 0.0033645883 0.0024208876 0.0040768959 + 1516100 0.0049322586 0.0026586114 0.0050862074 + 1516200 0.0077598111 0.0025611761 0.0063804582 + 1516300 0.004583774 0.0025529129 0.0048089891 + 1516400 0.0032283146 0.0023499976 0.0039389337 + 1516500 0.0050646805 0.0024564714 0.0049492439 + 1516600 0.0049312161 0.0027461695 0.0051732524 + 1516700 0.0049292925 0.0027017394 0.0051278756 + 1516800 0.0047413676 0.0021838956 0.0045175374 + 1516900 0.0045861571 0.0023085691 0.0045658183 + 1517000 0.0052190606 0.0021452376 0.004713994 + 1517100 0.0075244806 0.0024523544 0.0061558098 + 1517200 0.0046739777 0.0029301371 0.0052306104 + 1517300 0.0049476584 0.0030381463 0.0054733219 + 1517400 0.0042247175 0.0028007397 0.0048800928 + 1517500 0.0058546129 0.002322779 0.0052043463 + 1517600 0.0041058096 0.0027633287 0.0047841569 + 1517700 0.0034118361 0.0026435835 0.0043228466 + 1517800 0.0046436478 0.0027065678 0.0049921132 + 1517900 0.004960714 0.0026498213 0.0050914228 + 1518000 0.0053723254 0.0023325332 0.0049767246 + 1518100 0.0043651051 0.0019841936 0.0041326438 + 1518200 0.0042547728 0.0019971338 0.0040912797 + 1518300 0.005349718 0.0016782622 0.0043113266 + 1518400 0.0050426352 0.0019862987 0.0044682207 + 1518500 0.0042076019 0.0023805951 0.0044515242 + 1518600 0.0059405852 0.0023732735 0.0052971553 + 1518700 0.0048373115 0.0021172394 0.0044981036 + 1518800 0.0046984628 0.0025864678 0.0048989924 + 1518900 0.0050606077 0.0028272321 0.005318 + 1519000 0.0067051867 0.0026284892 0.0059286982 + 1519100 0.0034635304 0.0026457294 0.0043504358 + 1519200 0.0038027621 0.0029790045 0.0048506765 + 1519300 0.0035132516 0.0026789858 0.0044081643 + 1519400 0.0054281937 0.0022760129 0.0049477019 + 1519500 0.0053354834 0.0020876523 0.0047137105 + 1519600 0.0045332797 0.0018763811 0.0041076048 + 1519700 0.0051547779 0.0019357277 0.0044728449 + 1519800 0.006465676 0.0021385211 0.005320846 + 1519900 0.00592553 0.0023707039 0.0052871757 + 1520000 0.0056563535 0.0022812893 0.0050652757 + 1520100 0.0035088515 0.0028004546 0.0045274674 + 1520200 0.006777475 0.0030619931 0.0063977816 + 1520300 0.0040148036 0.0032220093 0.0051980455 + 1520400 0.0060604652 0.0029068991 0.0058897843 + 1520500 0.0055641449 0.0025986286 0.0053372312 + 1520600 0.0071392396 0.0028755928 0.0063894373 + 1520700 0.0048708368 0.0031084928 0.0055058578 + 1520800 0.003327894 0.0029560407 0.0045939885 + 1520900 0.0045192286 0.0023064943 0.0045308021 + 1521000 0.0038920152 0.0021220011 0.0040376024 + 1521100 0.0037565449 0.0022599902 0.0041089146 + 1521200 0.0054251517 0.0023433955 0.0050135874 + 1521300 0.0052638002 0.0027460222 0.0053367989 + 1521400 0.0054406847 0.0030494301 0.005727267 + 1521500 0.0065680204 0.0028561027 0.0060888002 + 1521600 0.0058159078 0.002439693 0.0053022101 + 1521700 0.0050361473 0.0022403798 0.0047191085 + 1521800 0.0053216889 0.00258813 0.0052073988 + 1521900 0.0035867315 0.0026119032 0.0043772476 + 1522000 0.004816737 0.0022542272 0.004624965 + 1522100 0.0040602217 0.0022138651 0.0042122555 + 1522200 0.005048014 0.0020438724 0.0045284418 + 1522300 0.0065026322 0.001975679 0.0051761933 + 1522400 0.0057451906 0.0021097916 0.0049375026 + 1522500 0.0041024372 0.0024762711 0.0044954394 + 1522600 0.0035038985 0.0020505258 0.0037751008 + 1522700 0.0053581729 0.0016786098 0.0043158355 + 1522800 0.0062303491 0.0015978292 0.0046643292 + 1522900 0.005156271 0.0019659533 0.0045038054 + 1523000 0.0047210836 0.0022106091 0.0045342675 + 1523100 0.0072655139 0.001674445 0.0052504401 + 1523200 0.0058223083 0.0022099884 0.0050756557 + 1523300 0.0052542189 0.0021546581 0.0047407189 + 1523400 0.0038248179 0.002031898 0.0039144256 + 1523500 0.0040684159 0.0017311467 0.0037335702 + 1523600 0.0045892724 0.0017262398 0.0039850223 + 1523700 0.0057007942 0.0021419263 0.004947786 + 1523800 0.0058240746 0.0027114113 0.005577948 + 1523900 0.0045568081 0.0022774626 0.0045202666 + 1524000 0.0048793233 0.0019350567 0.0043365986 + 1524100 0.0050696995 0.0019202817 0.0044155245 + 1524200 0.0053973318 0.0016401749 0.0042966741 + 1524300 0.0048903316 0.0012890357 0.0036959957 + 1524400 0.0042671585 0.0014012825 0.0035015246 + 1524500 0.0058517035 0.0017872867 0.004667422 + 1524600 0.0046382072 0.0021606416 0.0044435092 + 1524700 0.0056462898 0.0023916627 0.0051706959 + 1524800 0.0046598496 0.0021024821 0.0043960018 + 1524900 0.005699419 0.0019046468 0.0047098295 + 1525000 0.0033273306 0.0020862783 0.0037239488 + 1525100 0.004380102 0.0021761421 0.0043319736 + 1525200 0.003772649 0.0024649238 0.0043217745 + 1525300 0.0031545137 0.002608771 0.0041613832 + 1525400 0.0045836032 0.0022768501 0.0045328424 + 1525500 0.0040823067 0.0024713746 0.0044806349 + 1525600 0.0044000888 0.002280304 0.0044459728 + 1525700 0.0047722393 0.0019108724 0.0042597089 + 1525800 0.0056080435 0.001453594 0.0042138028 + 1525900 0.0055114815 0.0011634271 0.0038761094 + 1526000 0.0049483707 0.0011495022 0.0035850284 + 1526100 0.004880522 0.0012172963 0.0036194283 + 1526200 0.0066191966 0.0017733835 0.0050312693 + 1526300 0.0042405728 0.0020251292 0.0041122861 + 1526400 0.0062244928 0.002448245 0.0055118625 + 1526500 0.0054271942 0.0030468702 0.0057180674 + 1526600 0.0050285319 0.0027171131 0.0051920936 + 1526700 0.0050968715 0.0021430509 0.0046516673 + 1526800 0.0045901611 0.0022790588 0.0045382787 + 1526900 0.0055944149 0.0026258018 0.0053793029 + 1527000 0.007271411 0.0029679187 0.0065468163 + 1527100 0.0062374365 0.0033103765 0.0063803648 + 1527200 0.0059625783 0.003199183 0.0061338895 + 1527300 0.006152816 0.0028605336 0.0058888728 + 1527400 0.0052729746 0.0032309848 0.005826277 + 1527500 0.0042462431 0.0028631373 0.0049530851 + 1527600 0.0042751497 0.0025674118 0.0046715871 + 1527700 0.0061364049 0.0020669095 0.0050871712 + 1527800 0.0057262025 0.0022617607 0.005080126 + 1527900 0.004447093 0.0025921138 0.0047809174 + 1528000 0.0054677083 0.0022600516 0.0049511893 + 1528100 0.0035077599 0.0021074302 0.0038339057 + 1528200 0.0050339039 0.0021972778 0.0046749024 + 1528300 0.0035779288 0.0021746523 0.0039356641 + 1528400 0.0037058746 0.0023775368 0.0042015219 + 1528500 0.0055175536 0.002566403 0.0052820739 + 1528600 0.0060170038 0.0023403913 0.0053018854 + 1528700 0.0060599653 0.0021607648 0.005143404 + 1528800 0.0043113863 0.0024480216 0.004570032 + 1528900 0.0047744163 0.0030696956 0.0054196036 + 1529000 0.0054983022 0.0024304098 0.0051366054 + 1529100 0.0044617616 0.0023990051 0.0045950284 + 1529200 0.0057001376 0.0026844996 0.0054900361 + 1529300 0.005629834 0.0024551056 0.0052260395 + 1529400 0.0045716833 0.0020872858 0.0043374112 + 1529500 0.0048700684 0.0016741262 0.004071113 + 1529600 0.0041708913 0.0018676733 0.0039205339 + 1529700 0.0046767871 0.0024642599 0.0047661161 + 1529800 0.0065608406 0.0022412618 0.0054704255 + 1529900 0.0056425372 0.0016516657 0.004428852 + 1530000 0.0056781382 0.0018525568 0.0046472654 + 1530100 0.0064421167 0.0019045627 0.005075292 + 1530200 0.0051904175 0.0020134169 0.0045680755 + 1530300 0.0042652287 0.0020004009 0.0040996932 + 1530400 0.0036809683 0.0019963378 0.0038080644 + 1530500 0.003931933 0.0022663249 0.0042015732 + 1530600 0.0057025957 0.0023396532 0.0051463995 + 1530700 0.0057559291 0.0025509846 0.005383981 + 1530800 0.0058789303 0.0024201973 0.0053137333 + 1530900 0.0058919176 0.0021648812 0.0050648094 + 1531000 0.0037402069 0.0021719081 0.0040127912 + 1531100 0.0045172382 0.002313688 0.0045370162 + 1531200 0.0060054078 0.0022131898 0.0051689765 + 1531300 0.0049078552 0.0023051962 0.0047207812 + 1531400 0.0069658187 0.0022046454 0.0056331343 + 1531500 0.0054110155 0.0024928736 0.0051561078 + 1531600 0.0051969973 0.0025620164 0.0051199135 + 1531700 0.0061682978 0.0022709324 0.0053068914 + 1531800 0.0054760205 0.0022977592 0.004992988 + 1531900 0.0051575334 0.0023001205 0.004838594 + 1532000 0.0059494425 0.0022736404 0.0052018817 + 1532100 0.0050624768 0.0019928451 0.0044845329 + 1532200 0.004513116 0.0019978229 0.0042191222 + 1532300 0.0056896545 0.0020731942 0.004873571 + 1532400 0.004422191 0.0019142836 0.0040908307 + 1532500 0.0045479223 0.0017495232 0.0039879537 + 1532600 0.0052601888 0.001881266 0.0044702651 + 1532700 0.0047343173 0.0018501595 0.0041803312 + 1532800 0.004219267 0.0020565466 0.004133217 + 1532900 0.0048048121 0.0022081962 0.0045730647 + 1533000 0.005459758 0.0021851742 0.0048723988 + 1533100 0.0035073099 0.0024671686 0.0041934227 + 1533200 0.0057664048 0.0024882695 0.0053264219 + 1533300 0.0055170407 0.0024787857 0.0051942042 + 1533400 0.0052506378 0.0027841019 0.0053684002 + 1533500 0.0056440975 0.0029101428 0.005688097 + 1533600 0.0055919165 0.0026154285 0.0053676999 + 1533700 0.005526397 0.0023944184 0.0051144419 + 1533800 0.0060976591 0.0026665055 0.0056676971 + 1533900 0.0034250528 0.0028399375 0.0045257057 + 1534000 0.0040608144 0.0025872934 0.0045859755 + 1534100 0.005695719 0.0018685143 0.0046718761 + 1534200 0.0045769448 0.0017572461 0.0040099611 + 1534300 0.0052523754 0.002338458 0.0049236115 + 1534400 0.0061583398 0.0026915553 0.0057226132 + 1534500 0.0059382109 0.0024314764 0.0053541896 + 1534600 0.0063817566 0.0024703845 0.0056114053 + 1534700 0.0060212244 0.0024575091 0.0054210805 + 1534800 0.004397083 0.0028757537 0.005039943 + 1534900 0.0052448261 0.0029087019 0.0054901398 + 1535000 0.0048596332 0.0026952883 0.005087139 + 1535100 0.0052326678 0.002306521 0.0048819747 + 1535200 0.0043461906 0.00242336 0.0045625007 + 1535300 0.0047011188 0.0026460045 0.0049598364 + 1535400 0.0042047306 0.0025449711 0.004614487 + 1535500 0.00389625 0.0024598073 0.0043774929 + 1535600 0.0036640904 0.0025447922 0.0043482117 + 1535700 0.0034240249 0.0023507886 0.0040360509 + 1535800 0.0067547516 0.0020350715 0.0053596758 + 1535900 0.0049287347 0.0022134401 0.0046393017 + 1536000 0.0039353368 0.0019829678 0.0039198914 + 1536100 0.0059513461 0.0016972403 0.0046264184 + 1536200 0.0050637477 0.0017898257 0.004282139 + 1536300 0.0035436011 0.0020083628 0.003752479 + 1536400 0.0046172399 0.0020550739 0.0043276217 + 1536500 0.0046188634 0.0025311816 0.0048045284 + 1536600 0.0053677689 0.0021381806 0.0047801294 + 1536700 0.0032368701 0.0021737899 0.0037669368 + 1536800 0.004523468 0.0022055795 0.0044319739 + 1536900 0.0045830083 0.0018056926 0.004061392 + 1537000 0.0051529215 0.0015647277 0.0041009312 + 1537100 0.0048608143 0.0019785247 0.0043709567 + 1537200 0.0088069716 0.0024620797 0.0067967611 + 1537300 0.0039463486 0.0026649205 0.0046072639 + 1537400 0.0051417103 0.0021576768 0.0046883624 + 1537500 0.0034474026 0.002186201 0.0038829694 + 1537600 0.0033782808 0.002178071 0.0038408186 + 1537700 0.0044970731 0.0017589217 0.0039723248 + 1537800 0.0057016841 0.0016827233 0.0044890209 + 1537900 0.0053415632 0.0023490164 0.0049780671 + 1538000 0.0051761174 0.0024022989 0.0049499192 + 1538100 0.0054635239 0.0024362009 0.0051252791 + 1538200 0.0059026473 0.0018707031 0.0047759123 + 1538300 0.0050695193 0.0018136585 0.0043088125 + 1538400 0.0049479685 0.0016753992 0.0041107274 + 1538500 0.0037874736 0.0015919478 0.003456095 + 1538600 0.0046191218 0.0020246729 0.0042981469 + 1538700 0.0046027844 0.0021111764 0.0043766093 + 1538800 0.0053654563 0.0020837403 0.0047245508 + 1538900 0.0051519032 0.0019825155 0.0045182178 + 1539000 0.0054852319 0.0017924088 0.0044921714 + 1539100 0.0064525184 0.0019315498 0.0051073988 + 1539200 0.005022124 0.0025702357 0.0050420624 + 1539300 0.0048117996 0.0028129769 0.0051812845 + 1539400 0.0058846479 0.0025438698 0.0054402199 + 1539500 0.0062570543 0.0021936379 0.0052732819 + 1539600 0.0048810692 0.0022976237 0.0047000249 + 1539700 0.0050917779 0.0020800769 0.0045861863 + 1539800 0.0054301892 0.0020102526 0.0046829238 + 1539900 0.0042800002 0.0022409951 0.0043475577 + 1540000 0.0045259097 0.0028604526 0.0050880488 + 1540100 0.003699824 0.0032641746 0.0050851818 + 1540200 0.0064647524 0.0024899553 0.0056718257 + 1540300 0.0044177153 0.002269611 0.0044439553 + 1540400 0.0049358382 0.002018089 0.0044474469 + 1540500 0.0045251845 0.0018036285 0.0040308677 + 1540600 0.0051773712 0.0021349386 0.004683176 + 1540700 0.0061310739 0.0025459328 0.0055635708 + 1540800 0.0044024036 0.0031785384 0.0053453464 + 1540900 0.003425442 0.0031501075 0.0048360673 + 1541000 0.0051088863 0.0029283194 0.0054428494 + 1541100 0.0052663012 0.0022540631 0.0048460707 + 1541200 0.005514526 0.002189611 0.0049037918 + 1541300 0.0044469988 0.0021840852 0.0043728424 + 1541400 0.0037437795 0.0022589825 0.004101624 + 1541500 0.0048368767 0.002200111 0.0045807612 + 1541600 0.0046556834 0.0024134665 0.0047049356 + 1541700 0.0057578219 0.0019904727 0.0048244006 + 1541800 0.0044806061 0.0016673371 0.0038726354 + 1541900 0.0043681814 0.0022009742 0.0043509384 + 1542000 0.005284266 0.002392908 0.0049937576 + 1542100 0.006311621 0.0023553227 0.0054618236 + 1542200 0.0041792886 0.0021222636 0.0041792572 + 1542300 0.005735288 0.0020917566 0.0049145936 + 1542400 0.0051138688 0.0023002341 0.0048172164 + 1542500 0.0048049767 0.0024909505 0.0048558999 + 1542600 0.0036473256 0.0024624813 0.0042576494 + 1542700 0.0034860965 0.0029428155 0.0046586286 + 1542800 0.0046743259 0.0029915618 0.0052922065 + 1542900 0.0050119983 0.0030731574 0.0055400003 + 1543000 0.0040117193 0.0027692368 0.0047437549 + 1543100 0.0048512923 0.0023842277 0.0047719731 + 1543200 0.0041948797 0.0026204843 0.0046851517 + 1543300 0.0044936253 0.0029585084 0.0051702147 + 1543400 0.004782282 0.0024038001 0.0047575795 + 1543500 0.004760535 0.0025329418 0.0048760176 + 1543600 0.0047605751 0.0023896778 0.0047327733 + 1543700 0.0048908368 0.0021242821 0.0045314909 + 1543800 0.0054728162 0.0023349131 0.0050285649 + 1543900 0.0041394744 0.0025766949 0.0046140925 + 1544000 0.0056611587 0.0022906364 0.005076988 + 1544100 0.0062848321 0.0018919016 0.0049852174 + 1544200 0.0063645765 0.0019639396 0.0050965046 + 1544300 0.0051563851 0.0023822716 0.0049201799 + 1544400 0.0042751784 0.0024224496 0.004526639 + 1544500 0.0054372793 0.0022954412 0.0049716021 + 1544600 0.0059955988 0.0021405696 0.0050915284 + 1544700 0.0054492994 0.0023862223 0.0050682994 + 1544800 0.0047284173 0.0026070387 0.0049343066 + 1544900 0.0041799411 0.002874978 0.0049322928 + 1545000 0.0044513121 0.0027695064 0.0049603866 + 1545100 0.0043498639 0.0022266397 0.0043675884 + 1545200 0.0055854833 0.001817255 0.00456636 + 1545300 0.004961312 0.001906352 0.0043482478 + 1545400 0.0044626703 0.001683627 0.0038800975 + 1545500 0.0043587683 0.0015523116 0.0036976428 + 1545600 0.0049680507 0.002174711 0.0046199235 + 1545700 0.0048802957 0.0024387794 0.0048408 + 1545800 0.0048990582 0.0026014625 0.0050127177 + 1545900 0.0040208125 0.0026997052 0.0046786988 + 1546000 0.00597365 0.002537669 0.0054778249 + 1546100 0.0057277683 0.0023687902 0.0051879261 + 1546200 0.005057944 0.0027132956 0.0052027525 + 1546300 0.004990625 0.0027979527 0.0052542759 + 1546400 0.0048134654 0.0024433377 0.0048124652 + 1546500 0.0053544909 0.002052532 0.0046879455 + 1546600 0.0035835438 0.0018170021 0.0035807776 + 1546700 0.0031818596 0.0020105699 0.0035766415 + 1546800 0.0041296545 0.0023579785 0.0043905429 + 1546900 0.0049519121 0.0021007495 0.0045380187 + 1547000 0.0052590613 0.0019921058 0.0045805501 + 1547100 0.0051841247 0.0025264615 0.0050780229 + 1547200 0.0036882999 0.0028666434 0.0046819785 + 1547300 0.0053979815 0.0029666146 0.0056234336 + 1547400 0.0045796068 0.0032987433 0.0055527686 + 1547500 0.0049277645 0.0035473312 0.0059727154 + 1547600 0.0056794609 0.002463717 0.0052590767 + 1547700 0.0048957825 0.0025200875 0.0049297305 + 1547800 0.0058745378 0.0025502142 0.0054415882 + 1547900 0.006107305 0.0026210089 0.005626948 + 1548000 0.0052155442 0.002826823 0.0053938486 + 1548100 0.0067649827 0.0031701257 0.0064997656 + 1548200 0.0065480011 0.0034575327 0.006680377 + 1548300 0.00693597 0.0036824911 0.0070962888 + 1548400 0.0050376185 0.0036363632 0.006115816 + 1548500 0.0069316353 0.0031809632 0.0065926274 + 1548600 0.0061262461 0.0031000575 0.0061153193 + 1548700 0.0067660079 0.002967052 0.0062971965 + 1548800 0.0051999785 0.0027437061 0.0053030705 + 1548900 0.005616526 0.002353903 0.0051182869 + 1549000 0.0054199462 0.0020781156 0.0047457454 + 1549100 0.0044017848 0.0019792967 0.0041458001 + 1549200 0.0044710664 0.0019886486 0.0041892516 + 1549300 0.0036999037 0.0020115357 0.003832582 + 1549400 0.0042153577 0.0021927975 0.0042675439 + 1549500 0.0043799663 0.0020311401 0.0041869048 + 1549600 0.0055076624 0.0025016586 0.0052124612 + 1549700 0.0048872159 0.002369643 0.0047750695 + 1549800 0.0067538825 0.0018839929 0.0052081694 + 1549900 0.0073850869 0.0023238275 0.0059586749 + 1550000 0.0036540187 0.0029872679 0.0047857302 + 1550100 0.0051176982 0.0027125064 0.0052313735 + 1550200 0.0044115149 0.0025269582 0.0046982507 + 1550300 0.0056773761 0.0022729769 0.0050673105 + 1550400 0.0043159449 0.0020628824 0.0041871365 + 1550500 0.0051065179 0.0023380585 0.0048514228 + 1550600 0.0067672786 0.0025360643 0.0058668342 + 1550700 0.0041815169 0.0029661652 0.0050242555 + 1550800 0.0054616532 0.0034341655 0.006122323 + 1550900 0.0050806329 0.0032867971 0.0057874211 + 1551000 0.0056234876 0.0036643577 0.006432168 + 1551100 0.0058331718 0.0036579161 0.0065289304 + 1551200 0.0059735795 0.0032301194 0.0061702406 + 1551300 0.0045565996 0.0034074881 0.0056501895 + 1551400 0.0070408232 0.0031591746 0.0066245797 + 1551500 0.0042744188 0.003055926 0.0051597415 + 1551600 0.0043088661 0.0030345927 0.0051553627 + 1551700 0.0037500171 0.0026331215 0.0044788331 + 1551800 0.0053886076 0.0022630092 0.0049152145 + 1551900 0.0057658943 0.0026335949 0.005471496 + 1552000 0.004726228 0.0032258143 0.0055520047 + 1552100 0.0049840266 0.0027459769 0.0051990525 + 1552200 0.0043885475 0.0027689024 0.0049288906 + 1552300 0.0047545967 0.0027484336 0.0050885866 + 1552400 0.0052219712 0.0029181204 0.0054883093 + 1552500 0.0057933387 0.002758486 0.0056098949 + 1552600 0.0057672845 0.0026547237 0.005493309 + 1552700 0.0038088142 0.0024888889 0.0043635397 + 1552800 0.0042326931 0.002099703 0.0041829816 + 1552900 0.0042945873 0.0016344803 0.0037482225 + 1553000 0.0040237006 0.0016031735 0.0035835886 + 1553100 0.0047354146 0.0016413763 0.0039720882 + 1553200 0.0043518342 0.0017431132 0.0038850316 + 1553300 0.0044655552 0.0022221739 0.0044200643 + 1553400 0.0032544635 0.0024872041 0.0040890103 + 1553500 0.0054762767 0.0023572263 0.0050525812 + 1553600 0.0053052545 0.0025754657 0.0051866456 + 1553700 0.0057703163 0.0024725409 0.0053126185 + 1553800 0.0070628381 0.0021733528 0.0056495934 + 1553900 0.0044485514 0.0024114066 0.004600928 + 1554000 0.0048000492 0.0023376959 0.0047002202 + 1554100 0.0053545858 0.0023948322 0.0050302924 + 1554200 0.0039072501 0.0022023497 0.0041254494 + 1554300 0.0052130058 0.0021025071 0.0046682834 + 1554400 0.0037969667 0.0022474161 0.0041162357 + 1554500 0.0038771236 0.0020462205 0.0039544923 + 1554600 0.0057874886 0.001833177 0.0046817065 + 1554700 0.0044090276 0.002274185 0.0044442532 + 1554800 0.0059207439 0.0023017309 0.005215847 + 1554900 0.0054595916 0.0027646818 0.0054518245 + 1555000 0.0048483286 0.0024453112 0.004831598 + 1555100 0.005367942 0.0019472447 0.0045892787 + 1555200 0.0049508357 0.0016240006 0.00406074 + 1555300 0.0057651464 0.0017553945 0.0045929275 + 1555400 0.0054749217 0.0018012444 0.0044959325 + 1555500 0.0041884452 0.0021093043 0.0041708047 + 1555600 0.0046477399 0.0022997883 0.0045873478 + 1555700 0.0043078793 0.0029847072 0.0051049915 + 1555800 0.0051528631 0.0033103206 0.0058464954 + 1555900 0.005451874 0.0034756225 0.0061589667 + 1556000 0.0047588319 0.0032504079 0.0055926455 + 1556100 0.0040095088 0.003018379 0.0049918091 + 1556200 0.0047343028 0.0027966566 0.0051268213 + 1556300 0.0043266906 0.0028814078 0.0050109509 + 1556400 0.0045723048 0.0028028855 0.0050533168 + 1556500 0.0060305483 0.0027028082 0.0056709687 + 1556600 0.0057502385 0.0028782077 0.0057084032 + 1556700 0.0051685131 0.0027396522 0.0052835297 + 1556800 0.0059130043 0.0019557545 0.0048660613 + 1556900 0.0052229255 0.0023622163 0.004932875 + 1557000 0.0045622635 0.0025359096 0.0047813986 + 1557100 0.0055684382 0.0023834029 0.0051241185 + 1557200 0.0039598822 0.0027676995 0.0047167041 + 1557300 0.0036836182 0.0031003314 0.0049133623 + 1557400 0.0045167478 0.0028115192 0.005034606 + 1557500 0.0048607686 0.0026872981 0.0050797077 + 1557600 0.004861016 0.0025320047 0.004924536 + 1557700 0.004475153 0.0026295053 0.0048321196 + 1557800 0.0050595554 0.0023366253 0.0048268752 + 1557900 0.003669774 0.0025344748 0.0043406917 + 1558000 0.0041765532 0.0027528734 0.0048085207 + 1558100 0.0053149597 0.0028206091 0.0054365658 + 1558200 0.0044533673 0.0028644336 0.0050563254 + 1558300 0.0036254705 0.0027349636 0.0045193749 + 1558400 0.0041824331 0.002437578 0.0044961193 + 1558500 0.0051048976 0.0026325474 0.0051451142 + 1558600 0.0052429436 0.0030328575 0.0056133688 + 1558700 0.0055600486 0.002731636 0.0054682224 + 1558800 0.0051893675 0.0024179856 0.0049721274 + 1558900 0.005815597 0.0022107297 0.0050730939 + 1559000 0.0054505298 0.0023367119 0.0050193946 + 1559100 0.0058093854 0.0023649962 0.0052243031 + 1559200 0.0051535747 0.0024576971 0.0049942222 + 1559300 0.0050128095 0.0023239978 0.0047912399 + 1559400 0.0053293801 0.002677283 0.0053003373 + 1559500 0.0052142291 0.0031004537 0.0056668321 + 1559600 0.0063234508 0.0032555938 0.0063679173 + 1559700 0.0046763389 0.0032946785 0.0055963141 + 1559800 0.0043880308 0.0030634527 0.0052231866 + 1559900 0.0055477434 0.0028084237 0.0055389537 + 1560000 0.0039171092 0.0024033934 0.0043313456 + 1560100 0.0045587131 0.0024299253 0.0046736669 + 1560200 0.006588495 0.0026669276 0.0059097025 + 1560300 0.0046821669 0.0026213344 0.0049258385 + 1560400 0.0053608103 0.0024192915 0.0050578153 + 1560500 0.0042207404 0.0025510163 0.004628412 + 1560600 0.0043822379 0.0022382682 0.0043951509 + 1560700 0.0046645361 0.0025470572 0.0048428836 + 1560800 0.0045664755 0.0028849658 0.0051325279 + 1560900 0.0067676531 0.0027526658 0.00608362 + 1561000 0.0046937446 0.0034233834 0.0057335858 + 1561100 0.0042776007 0.0028918474 0.0049972291 + 1561200 0.0047479383 0.0022768042 0.00461368 + 1561300 0.0049006596 0.0024473743 0.0048594177 + 1561400 0.0057880646 0.0028522229 0.005701036 + 1561500 0.0045697412 0.0028891095 0.0051382791 + 1561600 0.0047120346 0.0027677684 0.005086973 + 1561700 0.004570985 0.0028210686 0.0050708503 + 1561800 0.005451917 0.0025110432 0.0051944086 + 1561900 0.0045451022 0.0028960948 0.0051331373 + 1562000 0.0037731379 0.003004109 0.0048612003 + 1562100 0.0066911155 0.0034157886 0.006709072 + 1562200 0.0057186409 0.0030798792 0.0058945228 + 1562300 0.0045255742 0.0027237664 0.0049511974 + 1562400 0.005358735 0.0027016837 0.0053391861 + 1562500 0.0063072895 0.0028867093 0.0059910783 + 1562600 0.0038327284 0.0028936279 0.0047800489 + 1562700 0.0040731312 0.0027665793 0.0047713235 + 1562800 0.0048582361 0.0026246688 0.0050158319 + 1562900 0.0066632136 0.0025262875 0.0058058379 + 1563000 0.0041865481 0.0029494919 0.0050100586 + 1563100 0.0061145195 0.0029564432 0.0059659333 + 1563200 0.0044923207 0.00298449 0.0051955541 + 1563300 0.0047703776 0.0024665174 0.0048144376 + 1563400 0.0060025774 0.0022536254 0.005208019 + 1563500 0.0059916154 0.0021820335 0.0051310317 + 1563600 0.0051765934 0.002866766 0.0054146206 + 1563700 0.0042054106 0.0033189354 0.0053887859 + 1563800 0.0047910563 0.0030094648 0.0053675628 + 1563900 0.0048881185 0.0024678151 0.0048736859 + 1564000 0.003813069 0.0021769922 0.0040537371 + 1564100 0.0042811758 0.002276822 0.0043839632 + 1564200 0.0065097921 0.0019191227 0.005123161 + 1564300 0.0078023108 0.0020849617 0.0059251616 + 1564400 0.0052355653 0.0022005422 0.004777422 + 1564500 0.0046497289 0.002637401 0.0049259395 + 1564600 0.0048406506 0.0024257913 0.004808299 + 1564700 0.0045454054 0.0023774458 0.0046146376 + 1564800 0.0048901436 0.0021995889 0.0046064564 + 1564900 0.0052027904 0.0021939137 0.0047546622 + 1565000 0.0043025045 0.0027430719 0.0048607108 + 1565100 0.0042745229 0.0029218375 0.0050257042 + 1565200 0.0060169714 0.0035898249 0.006551303 + 1565300 0.0082240018 0.0030279015 0.0070756524 + 1565400 0.0053254684 0.0030352171 0.0056563461 + 1565500 0.0052567654 0.0030996129 0.0056869271 + 1565600 0.0048247676 0.0031188943 0.0054935846 + 1565700 0.0040267048 0.0030141485 0.0049960423 + 1565800 0.0054220929 0.0027826566 0.0054513429 + 1565900 0.0060505542 0.0024242195 0.0054022267 + 1566000 0.0045775848 0.0026193906 0.0048724207 + 1566100 0.0056984137 0.0027122851 0.0055169731 + 1566200 0.0052827088 0.0026895976 0.0052896808 + 1566300 0.0049700517 0.0027388731 0.0051850704 + 1566400 0.0059108245 0.0024681642 0.0053773982 + 1566500 0.0046202996 0.0026454739 0.0049195277 + 1566600 0.0057839407 0.0025296035 0.0053763868 + 1566700 0.0060465361 0.0023105483 0.0052865778 + 1566800 0.0043092435 0.002489544 0.0046104998 + 1566900 0.0044036108 0.0026586647 0.0048260669 + 1567000 0.0053389413 0.0025952438 0.005223004 + 1567100 0.0067758074 0.0026620791 0.0059970469 + 1567200 0.0069635451 0.0023732118 0.0058005816 + 1567300 0.0041601971 0.0021614714 0.0042090684 + 1567400 0.0062606858 0.0021807497 0.005262181 + 1567500 0.0068357038 0.0026498956 0.0060143436 + 1567600 0.0038671557 0.0025664376 0.0044698033 + 1567700 0.0057484679 0.0022801596 0.0051094836 + 1567800 0.0068087945 0.0024563609 0.0058075645 + 1567900 0.0057511292 0.0022973528 0.0051279867 + 1568000 0.0053167168 0.0025422583 0.0051590798 + 1568100 0.0040447274 0.002513191 0.0045039553 + 1568200 0.0056956958 0.0027224075 0.0055257578 + 1568300 0.0046687461 0.0033777321 0.0056756306 + 1568400 0.0057649763 0.003909089 0.0067465382 + 1568500 0.0063496693 0.0041098667 0.0072350945 + 1568600 0.0059244561 0.0038862205 0.0068021638 + 1568700 0.0057863508 0.0038168779 0.0066648475 + 1568800 0.006409447 0.0029544805 0.0061091302 + 1568900 0.0062785977 0.0026452272 0.0057354745 + 1569000 0.0048372743 0.0026289445 0.0050097904 + 1569100 0.0046569917 0.0022795465 0.0045716596 + 1569200 0.0037983755 0.0023473909 0.0042169039 + 1569300 0.0052964668 0.0020512979 0.0046581526 + 1569400 0.0062053515 0.0018841169 0.0049383133 + 1569500 0.0048116922 0.0017820862 0.0041503409 + 1569600 0.005461677 0.0019620395 0.0046502087 + 1569700 0.0056772611 0.0021785916 0.0049728686 + 1569800 0.0047518715 0.0024066823 0.0047454941 + 1569900 0.005076947 0.002045635 0.0045444448 + 1570000 0.0049919299 0.0022560758 0.0047130413 + 1570100 0.0063363454 0.0026851953 0.0058038653 + 1570200 0.0063076606 0.003211753 0.0063163048 + 1570300 0.0047404908 0.0036467863 0.0059799967 + 1570400 0.0051974715 0.003165474 0.0057236045 + 1570500 0.0048665615 0.0027748966 0.0051701574 + 1570600 0.0053529951 0.0028245095 0.0054591868 + 1570700 0.0049419578 0.0027699052 0.0052022751 + 1570800 0.0051238104 0.0025681235 0.0050899989 + 1570900 0.0048235233 0.0026017958 0.0049758736 + 1571000 0.0086286711 0.0025990266 0.0068459506 + 1571100 0.0056619418 0.0027627726 0.0055495096 + 1571200 0.0060733655 0.0022951696 0.0052844042 + 1571300 0.00631883 0.0019235717 0.0050336208 + 1571400 0.0033686878 0.0021983491 0.0038563752 + 1571500 0.0052567712 0.0024273572 0.0050146742 + 1571600 0.0045142022 0.0025754127 0.0047972466 + 1571700 0.0045888073 0.0021527891 0.0044113427 + 1571800 0.0051401099 0.0020776066 0.0046075044 + 1571900 0.0035801561 0.0023862875 0.0041483956 + 1572000 0.0061267775 0.0022776938 0.0052932171 + 1572100 0.0056790952 0.0020952677 0.0048904474 + 1572200 0.0063761139 0.0020529344 0.0051911779 + 1572300 0.0065699641 0.002525814 0.0057594683 + 1572400 0.0039547661 0.0027677027 0.0047141892 + 1572500 0.00536703 0.0026510483 0.0052926334 + 1572600 0.0042758921 0.0026869867 0.0047915274 + 1572700 0.0055924844 0.0028031408 0.0055556917 + 1572800 0.0043813905 0.0034406119 0.0055970775 + 1572900 0.0053080182 0.0032792483 0.0058917885 + 1573000 0.005464643 0.0027397626 0.0054293916 + 1573100 0.0052726896 0.0021621871 0.004757339 + 1573200 0.0046117138 0.0023189045 0.0045887324 + 1573300 0.0050671473 0.0027146027 0.0052085892 + 1573400 0.0043960363 0.0027354985 0.0048991727 + 1573500 0.0035983274 0.0025008931 0.0042719448 + 1573600 0.0050384741 0.0023847208 0.0048645948 + 1573700 0.0075343602 0.0021438265 0.0058521445 + 1573800 0.0043693056 0.00290184 0.0050523576 + 1573900 0.0054669231 0.0030048682 0.0056956194 + 1574000 0.0052884919 0.0030516633 0.005654593 + 1574100 0.0050084727 0.0028981622 0.0053632699 + 1574200 0.0043080829 0.0028604821 0.0049808666 + 1574300 0.0069234385 0.0027914303 0.0061990602 + 1574400 0.0063446762 0.0025018224 0.0056245927 + 1574500 0.0049590251 0.0021153102 0.0045560803 + 1574600 0.0058866942 0.0019927614 0.0048901187 + 1574700 0.0057685203 0.0023762166 0.0052154102 + 1574800 0.0055198906 0.0027462669 0.0054630881 + 1574900 0.0049793801 0.0026808213 0.00513161 + 1575000 0.00475631 0.0027485152 0.0050895115 + 1575100 0.0069835417 0.0026263427 0.0060635546 + 1575200 0.005350482 0.0025791114 0.0052125518 + 1575300 0.0041986807 0.0026548958 0.0047214339 + 1575400 0.0050169598 0.002922725 0.00539201 + 1575500 0.0064598945 0.0025940488 0.0057735282 + 1575600 0.0048722792 0.0027182243 0.0051162992 + 1575700 0.0043504723 0.0028340165 0.0049752645 + 1575800 0.0047074307 0.0027192736 0.0050362122 + 1575900 0.0052286924 0.0023240203 0.0048975174 + 1576000 0.0047314031 0.0022900335 0.004618771 + 1576100 0.005524252 0.0026189422 0.00533791 + 1576200 0.0043854326 0.0026524414 0.0048108965 + 1576300 0.0044578575 0.0024188341 0.0046129358 + 1576400 0.0055619115 0.0020595673 0.0047970706 + 1576500 0.0036223306 0.0024144712 0.004197337 + 1576600 0.0055367264 0.002393796 0.0051189036 + 1576700 0.0053150098 0.0027311765 0.0053471579 + 1576800 0.0046246012 0.0025291783 0.0048053492 + 1576900 0.005442827 0.0022180158 0.0048969072 + 1577000 0.0040140158 0.0021730544 0.0041487028 + 1577100 0.0058246422 0.00203707 0.004903886 + 1577200 0.0049362886 0.0023732595 0.0048028391 + 1577300 0.0049600536 0.0025984126 0.005039689 + 1577400 0.0047085737 0.0024837429 0.004801244 + 1577500 0.0038727613 0.00240444 0.0043105647 + 1577600 0.0046659364 0.0020658619 0.0043623774 + 1577700 0.0058526039 0.0018967139 0.0047772924 + 1577800 0.0040599744 0.0024265771 0.0044248457 + 1577900 0.0041714662 0.002561777 0.0046149205 + 1578000 0.0043181295 0.0018919788 0.0040173082 + 1578100 0.0051365203 0.0015413851 0.0040695162 + 1578200 0.0044781166 0.0016587765 0.0038628495 + 1578300 0.0049549922 0.0015587223 0.0039975075 + 1578400 0.0047740401 0.0019001204 0.0042498432 + 1578500 0.0043444513 0.0020618389 0.0042001235 + 1578600 0.0044951295 0.0018380812 0.0040505278 + 1578700 0.0056927786 0.0018400944 0.0046420088 + 1578800 0.004620508 0.0019560352 0.0042301915 + 1578900 0.0065141856 0.0015900942 0.0047962949 + 1579000 0.0051614282 0.001669409 0.0042097995 + 1579100 0.0053378887 0.0020525591 0.0046798012 + 1579200 0.005392074 0.0023021448 0.0049560562 + 1579300 0.0036725035 0.0020895691 0.0038971294 + 1579400 0.0044592716 0.0021248912 0.0043196889 + 1579500 0.0037967168 0.0022242395 0.0040929361 + 1579600 0.0048190561 0.0021811914 0.0045530706 + 1579700 0.0045198986 0.0021946519 0.0044192895 + 1579800 0.0063532953 0.0017606555 0.004887668 + 1579900 0.0051164479 0.0018315908 0.0043498425 + 1580000 0.0055424258 0.0020218277 0.0047497404 + 1580100 0.0062613017 0.0024941768 0.0055759112 + 1580200 0.0061615565 0.0029073231 0.0059399642 + 1580300 0.0060279579 0.0026668152 0.0056337008 + 1580400 0.0054242212 0.002789877 0.0054596109 + 1580500 0.0057453488 0.0027876283 0.0056154172 + 1580600 0.0064534862 0.0024339198 0.0056102451 + 1580700 0.0041853434 0.0025441333 0.004604107 + 1580800 0.0060576386 0.0027034795 0.0056849735 + 1580900 0.0051243464 0.0024781252 0.0050002644 + 1581000 0.004201813 0.0017640459 0.0038321257 + 1581100 0.00399069 0.0019651346 0.0039293023 + 1581200 0.0038954181 0.0018747589 0.003792035 + 1581300 0.0049893215 0.0018552405 0.0043109222 + 1581400 0.0059389441 0.0017281545 0.0046512286 + 1581500 0.004642993 0.0020063355 0.0042915587 + 1581600 0.0069953305 0.0020260346 0.0054690488 + 1581700 0.0057983709 0.0024335216 0.0052874072 + 1581800 0.0051675129 0.0024758566 0.0050192419 + 1581900 0.0047957573 0.002498002 0.0048584138 + 1582000 0.0054338341 0.0021006881 0.0047751533 + 1582100 0.0039773121 0.0021127204 0.0040703036 + 1582200 0.0050427516 0.0024058944 0.0048878737 + 1582300 0.003659936 0.0025395938 0.0043409685 + 1582400 0.006786266 0.0022891211 0.0056292364 + 1582500 0.0052109448 0.0025695398 0.0051343017 + 1582600 0.0044367894 0.0027099083 0.0048936406 + 1582700 0.0050424744 0.0018603725 0.0043422153 + 1582800 0.0038373601 0.0019327149 0.0038214156 + 1582900 0.0052585109 0.0021884031 0.0047765764 + 1583000 0.0052591541 0.0023334893 0.0049219793 + 1583100 0.0040441909 0.0025093222 0.0044998225 + 1583200 0.0042386512 0.0023923727 0.0044785838 + 1583300 0.0051433678 0.0025190245 0.0050505258 + 1583400 0.0046488221 0.0023850326 0.0046731248 + 1583500 0.0051018558 0.0025406176 0.0050516872 + 1583600 0.0044565595 0.0021359378 0.0043294007 + 1583700 0.0035215033 0.0019136578 0.0036468977 + 1583800 0.0049237651 0.0020508311 0.0044742467 + 1583900 0.004752269 0.0024858143 0.0048248217 + 1584000 0.0056544259 0.0031694034 0.0059524411 + 1584100 0.0065647375 0.0031621713 0.0063932531 + 1584200 0.005722126 0.0030735519 0.0058899108 + 1584300 0.0049034313 0.0028310581 0.0052444657 + 1584400 0.0057131705 0.0026416531 0.0054536042 + 1584500 0.0045166034 0.0026237106 0.0048467263 + 1584600 0.0052876157 0.0026324345 0.0052349329 + 1584700 0.0052133152 0.0022351073 0.0048010359 + 1584800 0.0037175023 0.0021677287 0.0039974369 + 1584900 0.0044229281 0.0024542445 0.0046311544 + 1585000 0.0040643582 0.002680055 0.0046804813 + 1585100 0.0047491753 0.0027617283 0.005099213 + 1585200 0.0047422029 0.002174019 0.004508072 + 1585300 0.004563221 0.0021086898 0.0043546502 + 1585400 0.005063662 0.0018487429 0.0043410141 + 1585500 0.0042928544 0.0017799855 0.0038928748 + 1585600 0.0048379594 0.0015194877 0.0039006708 + 1585700 0.0049071725 0.0016724981 0.0040877471 + 1585800 0.0041223902 0.001487846 0.003516835 + 1585900 0.0058114851 0.0016416867 0.004502027 + 1586000 0.0050988122 0.0017834031 0.0042929748 + 1586100 0.0042925348 0.0020469953 0.0041597272 + 1586200 0.0039994056 0.0019360671 0.0039045245 + 1586300 0.003975639 0.0023560783 0.0043128381 + 1586400 0.0045719919 0.0020939443 0.0043442215 + 1586500 0.0042069506 0.0017573745 0.003827983 + 1586600 0.0047634178 0.0017355396 0.0040800343 + 1586700 0.0047785687 0.001918367 0.0042703188 + 1586800 0.0047154733 0.0022767577 0.0045976547 + 1586900 0.0059446193 0.0021681572 0.0050940245 + 1587000 0.0053180013 0.0022556846 0.0048731384 + 1587100 0.0038084594 0.0024737511 0.0043482272 + 1587200 0.005483877 0.002421265 0.0051203607 + 1587300 0.0054600607 0.0021972497 0.0048846233 + 1587400 0.0051333407 0.0023517236 0.0048782898 + 1587500 0.0043969768 0.0027337463 0.0048978834 + 1587600 0.0058871872 0.0024230005 0.0053206004 + 1587700 0.0048570012 0.0023281502 0.0047187055 + 1587800 0.0064710044 0.002314667 0.0054996145 + 1587900 0.0040037605 0.0023307285 0.0043013293 + 1588000 0.0050947644 0.0023675887 0.0048751681 + 1588100 0.0035596616 0.0027212233 0.0044732443 + 1588200 0.0054708254 0.0024669485 0.0051596204 + 1588300 0.0056779045 0.0025657491 0.0053603427 + 1588400 0.0053866156 0.0022524994 0.0049037242 + 1588500 0.0051547904 0.0024222047 0.0049593281 + 1588600 0.0052069795 0.0027689779 0.0053317881 + 1588700 0.0047003245 0.0027823105 0.0050957515 + 1588800 0.0045631305 0.0030203816 0.0052662974 + 1588900 0.0046944171 0.0030409638 0.0053514972 + 1589000 0.0074931965 0.0029736483 0.006661706 + 1589100 0.0068660716 0.0030742168 0.0064536114 + 1589200 0.0074997257 0.0029327195 0.0066239907 + 1589300 0.0043630058 0.0031850642 0.0053324811 + 1589400 0.0042071613 0.0026943915 0.0047651037 + 1589500 0.0071988634 0.0023138689 0.0058570595 + 1589600 0.0044055538 0.0023443862 0.0045127447 + 1589700 0.0054214139 0.0024266549 0.005095007 + 1589800 0.0050860237 0.0024378587 0.004941136 + 1589900 0.0036188718 0.0023155232 0.0040966867 + 1590000 0.0042047185 0.0020460981 0.0041156079 + 1590100 0.0046529004 0.0019620829 0.0042521823 + 1590200 0.0029176668 0.0020368272 0.0034728663 + 1590300 0.0038188616 0.0019107387 0.0037903347 + 1590400 0.0040788245 0.0018480652 0.0038556116 + 1590500 0.0042179801 0.0019019887 0.0039780258 + 1590600 0.0036532922 0.0021922504 0.0039903551 + 1590700 0.0054326519 0.0023167716 0.004990655 + 1590800 0.0046169288 0.0024788242 0.0047512188 + 1590900 0.0068430849 0.0027411775 0.0061092583 + 1591000 0.0058273156 0.0026316154 0.0054997473 + 1591100 0.0060569145 0.0028112725 0.0057924101 + 1591200 0.0048064262 0.0025595322 0.0049251951 + 1591300 0.0049661251 0.0023136436 0.0047579083 + 1591400 0.003707035 0.0022752267 0.0040997829 + 1591500 0.0056829709 0.0016898806 0.0044869679 + 1591600 0.0040203096 0.0014872958 0.0034660419 + 1591700 0.0047930891 0.0015071324 0.003866231 + 1591800 0.0040708759 0.0019583731 0.0039620073 + 1591900 0.0054918717 0.0018054008 0.0045084314 + 1592000 0.004151575 0.0019016307 0.0039449841 + 1592100 0.0044988222 0.001899889 0.004114153 + 1592200 0.005217525 0.0018724489 0.0044404495 + 1592300 0.0052766034 0.0021268755 0.0047239538 + 1592400 0.0054603656 0.0025998236 0.0052873473 + 1592500 0.0046175049 0.0022968326 0.0045695108 + 1592600 0.0043958853 0.0022511283 0.0044147281 + 1592700 0.0049991939 0.0025153151 0.0049758559 + 1592800 0.0051857696 0.002302592 0.004854963 + 1592900 0.0046877663 0.002330559 0.004637819 + 1593000 0.004854663 0.0023214067 0.0047108112 + 1593100 0.0040062659 0.0025394328 0.0045112668 + 1593200 0.005343076 0.0029215819 0.0055513772 + 1593300 0.0032162973 0.0033184519 0.0049014732 + 1593400 0.0051703845 0.0032382371 0.0057830358 + 1593500 0.0036450322 0.0032421903 0.0050362296 + 1593600 0.0048849217 0.0029863749 0.0053906723 + 1593700 0.0065149431 0.0023045919 0.0055111655 + 1593800 0.003501124 0.0027234924 0.0044467018 + 1593900 0.004084296 0.0024861167 0.0044963561 + 1594000 0.0062021136 0.0024135847 0.0054661875 + 1594100 0.0049631209 0.0022160357 0.0046588217 + 1594200 0.0063790042 0.0022593298 0.005398996 + 1594300 0.0047455938 0.0025855721 0.0049212941 + 1594400 0.0043011359 0.0026189978 0.0047359632 + 1594500 0.002851039 0.0024450878 0.0038483335 + 1594600 0.0053812708 0.0025525663 0.0052011605 + 1594700 0.0071642142 0.0021648256 0.0056909623 + 1594800 0.0044149043 0.0023987726 0.0045717333 + 1594900 0.0058370022 0.0025200124 0.0053929119 + 1595000 0.0039393348 0.0023332235 0.0042721148 + 1595100 0.0042156263 0.0019120281 0.0039869067 + 1595200 0.0054885343 0.0018058998 0.0045072878 + 1595300 0.0038360159 0.0020610299 0.003949069 + 1595400 0.0055459077 0.0024246996 0.005154326 + 1595500 0.0054824196 0.0027138236 0.0054122019 + 1595600 0.0053939296 0.0029786621 0.0056334869 + 1595700 0.0065460013 0.0021857483 0.0054076083 + 1595800 0.0052831684 0.0019938121 0.0045941215 + 1595900 0.0041178288 0.0018523463 0.0038790902 + 1596000 0.0055697399 0.0021568962 0.0048982525 + 1596100 0.0041816597 0.0030199677 0.0050781283 + 1596200 0.0031115822 0.0032706168 0.0048020987 + 1596300 0.0049608444 0.0029127704 0.005354436 + 1596400 0.0039215722 0.0031558551 0.0050860039 + 1596500 0.0047328975 0.003024492 0.005353965 + 1596600 0.0042035268 0.0028061399 0.0048750632 + 1596700 0.0049004179 0.0030208491 0.0054327736 + 1596800 0.0047628173 0.0027882283 0.0051324274 + 1596900 0.0060027044 0.0024469472 0.0054014032 + 1597000 0.0057209146 0.0027601928 0.0055759554 + 1597100 0.0047408142 0.0030426648 0.0053760342 + 1597200 0.0030014282 0.0027572923 0.0042345578 + 1597300 0.004846891 0.0022740761 0.0046596553 + 1597400 0.0037410297 0.0021874315 0.0040287196 + 1597500 0.0043874138 0.0019160558 0.0040754861 + 1597600 0.0049913003 0.0019499917 0.0044066473 + 1597700 0.0047622203 0.0021108237 0.004454729 + 1597800 0.0043343069 0.0022779198 0.0044112115 + 1597900 0.0055585837 0.0023139456 0.005049811 + 1598000 0.0038272801 0.0024246616 0.004308401 + 1598100 0.0041382353 0.0025562953 0.004593083 + 1598200 0.0050540289 0.0026864618 0.0051739916 + 1598300 0.0056165474 0.0031356775 0.0059000719 + 1598400 0.0052344469 0.0031516162 0.0057279455 + 1598500 0.0054082041 0.0025284788 0.0051903293 + 1598600 0.0052479792 0.0022988491 0.0048818389 + 1598700 0.0046545918 0.0025686884 0.0048596204 + 1598800 0.0046024249 0.0030872571 0.0053525131 + 1598900 0.0058678106 0.0032713377 0.0061594007 + 1599000 0.0048277854 0.0033193301 0.0056955057 + 1599100 0.00439184 0.0034086673 0.0055702761 + 1599200 0.0041094072 0.003150597 0.0051731959 + 1599300 0.0050949157 0.0032221352 0.005729789 + 1599400 0.0039936995 0.0032152734 0.0051809224 + 1599500 0.0063211533 0.0023917176 0.0055029102 + 1599600 0.0058423018 0.0023804816 0.0052559895 + 1599700 0.0046246365 0.0024989802 0.0047751685 + 1599800 0.0049495828 0.0028262729 0.0052623957 + 1599900 0.004017195 0.0026675133 0.0046447265 + 1600000 0.0043745132 0.0022793758 0.0044324565 + 1600100 0.0045895815 0.0019854556 0.0042443902 + 1600200 0.0046984851 0.0019322348 0.0042447704 + 1600300 0.0042268557 0.002334804 0.0044152095 + 1600400 0.004793568 0.00266546 0.0050247942 + 1600500 0.0034391627 0.0025632569 0.0042559698 + 1600600 0.0070550335 0.0018301032 0.0053025025 + 1600700 0.0049394058 0.0018528273 0.0042839411 + 1600800 0.0028422524 0.0021068447 0.0035057658 + 1600900 0.0067434009 0.0024164147 0.0057354323 + 1601000 0.0056388282 0.0025440986 0.0053194594 + 1601100 0.0053751386 0.0028182141 0.0054637901 + 1601200 0.0052389928 0.0029078564 0.0054864232 + 1601300 0.0050333931 0.0025304788 0.005007852 + 1601400 0.0059482039 0.0021028452 0.0050304768 + 1601500 0.0055213581 0.0024346701 0.0051522135 + 1601600 0.0037288743 0.002324804 0.0041601093 + 1601700 0.0056556503 0.0022049677 0.0049886081 + 1601800 0.0040624726 0.0024726491 0.0044721474 + 1601900 0.0034867964 0.0027830459 0.0044992035 + 1602000 0.0049679296 0.0029009672 0.0053461201 + 1602100 0.0055335335 0.0027743488 0.0054978849 + 1602200 0.0045418546 0.0034519694 0.0056874134 + 1602300 0.0052809575 0.0034501904 0.0060494116 + 1602400 0.0058651238 0.0025227757 0.0054095163 + 1602500 0.0049361528 0.00231091 0.0047404227 + 1602600 0.0043104513 0.0022764544 0.0043980046 + 1602700 0.0053271617 0.0024139678 0.0050359302 + 1602800 0.0058995609 0.0028624595 0.0057661496 + 1602900 0.0054241437 0.0032762902 0.005945986 + 1603000 0.0050448779 0.0032366549 0.0057196807 + 1603100 0.0057075978 0.0023601516 0.0051693599 + 1603200 0.0041655963 0.0023425385 0.0043927929 + 1603300 0.0060295574 0.0020519236 0.0050195963 + 1603400 0.005426414 0.0017187423 0.0043895555 + 1603500 0.0056009155 0.0017236258 0.0044803264 + 1603600 0.006974447 0.0019857075 0.0054184431 + 1603700 0.0048882396 0.002523061 0.0049289914 + 1603800 0.0043380562 0.0025434864 0.0046786235 + 1603900 0.0052584945 0.0024918351 0.0050800004 + 1604000 0.0059326972 0.002127988 0.0050479874 + 1604100 0.0065950881 0.0017500762 0.0049960961 + 1604200 0.00482263 0.0020711601 0.0044447983 + 1604300 0.0051458668 0.0023107803 0.0048435117 + 1604400 0.0042680554 0.0023723408 0.0044730243 + 1604500 0.0053742789 0.002362173 0.0050073259 + 1604600 0.0041118319 0.002375179 0.0043989712 + 1604700 0.0050831249 0.0022667311 0.0047685816 + 1604800 0.0041086992 0.0022873299 0.0043095803 + 1604900 0.0047018885 0.0026513396 0.0049655503 + 1605000 0.0053649309 0.0026216195 0.0052621715 + 1605100 0.0060363937 0.0024252532 0.0053962908 + 1605200 0.0054765132 0.002795359 0.0054908303 + 1605300 0.0039269883 0.00303796 0.0049707745 + 1605400 0.0051422275 0.0027354927 0.0052664327 + 1605500 0.0054841678 0.0024499587 0.0051491976 + 1605600 0.0055229626 0.0025339272 0.0052522603 + 1605700 0.005089259 0.0029509259 0.0054557956 + 1605800 0.0043764435 0.0032017757 0.0053558065 + 1605900 0.004190651 0.0031920615 0.0052546475 + 1606000 0.0047882674 0.0029578637 0.005314589 + 1606100 0.0059971781 0.0026759884 0.0056277245 + 1606200 0.005728652 0.0025349262 0.0053544971 + 1606300 0.0062639303 0.0024751203 0.0055581485 + 1606400 0.0041794934 0.0025617197 0.0046188141 + 1606500 0.0064613885 0.0020815211 0.0052617358 + 1606600 0.0045546195 0.0021451614 0.0043868882 + 1606700 0.0047886895 0.0024426601 0.0047995932 + 1606800 0.0056471202 0.0024305207 0.0052099627 + 1606900 0.0049907273 0.002468332 0.0049247056 + 1607000 0.0041845634 0.0022233762 0.0042829659 + 1607100 0.0042700232 0.0027501835 0.0048518355 + 1607200 0.0052964323 0.0027567015 0.0053635393 + 1607300 0.0055170809 0.0025907369 0.0053061752 + 1607400 0.0048916594 0.0027149177 0.0051225313 + 1607500 0.0044964207 0.0025374189 0.004750501 + 1607600 0.0039441887 0.0024275679 0.0043688482 + 1607700 0.003897614 0.0021153706 0.0040337275 + 1607800 0.0040291982 0.0020320668 0.0040151878 + 1607900 0.004002073 0.0018992941 0.0038690644 + 1608000 0.0050251084 0.0022581123 0.0047314079 + 1608100 0.004070836 0.0021913543 0.0041949689 + 1608200 0.0046930311 0.002632906 0.0049427573 + 1608300 0.003937739 0.0025916814 0.0045297873 + 1608400 0.0056694888 0.0021333682 0.0049238197 + 1608500 0.0065816405 0.0020128297 0.0052522309 + 1608600 0.0046214969 0.0021051358 0.0043797788 + 1608700 0.0047078134 0.0023058353 0.0046229621 + 1608800 0.0053080629 0.0026603705 0.0052729327 + 1608900 0.0056237557 0.0024408175 0.0052087598 + 1609000 0.0052624346 0.0024042331 0.0049943377 + 1609100 0.0063787001 0.0024748284 0.0056143449 + 1609200 0.0035646447 0.0031737737 0.0049282473 + 1609300 0.0049314463 0.0036753054 0.0061025017 + 1609400 0.0051582992 0.0037673146 0.006306165 + 1609500 0.0040492678 0.0037583079 0.0057513069 + 1609600 0.0044385477 0.0030328268 0.0052174245 + 1609700 0.0051611024 0.0025641295 0.0051043596 + 1609800 0.0045539401 0.0023415549 0.0045829473 + 1609900 0.0038430315 0.0025131945 0.0044046866 + 1610000 0.0047565674 0.0028025376 0.0051436606 + 1610100 0.0057652593 0.0029541475 0.005791736 + 1610200 0.0059286459 0.0030276191 0.0059456246 + 1610300 0.0059947404 0.0028466799 0.0057972162 + 1610400 0.00604313 0.0030184176 0.0059927707 + 1610500 0.0065487436 0.0024534783 0.005676688 + 1610600 0.0052184953 0.0023768378 0.004945316 + 1610700 0.0037095881 0.002417048 0.0042428609 + 1610800 0.0045604004 0.0024595834 0.0047041555 + 1610900 0.0055044472 0.0027086299 0.0054178501 + 1611000 0.0053146434 0.0028215083 0.0054373094 + 1611100 0.005082257 0.0029581165 0.0054595399 + 1611200 0.005223638 0.0031048414 0.0056758508 + 1611300 0.004918254 0.0026950221 0.0051157252 + 1611400 0.0052047618 0.0025115833 0.005073302 + 1611500 0.0062551376 0.0027344763 0.0058131768 + 1611600 0.006252729 0.0030881086 0.0061656236 + 1611700 0.0047875219 0.0031112528 0.0054676112 + 1611800 0.0044900789 0.0031881043 0.005398065 + 1611900 0.0076259731 0.0025564529 0.0063098615 + 1612000 0.0060367684 0.0028074859 0.0057787079 + 1612100 0.0042247907 0.0030352014 0.0051145906 + 1612200 0.005590746 0.0024210295 0.0051727248 + 1612300 0.0041198692 0.0022966997 0.0043244479 + 1612400 0.0049503843 0.0021513411 0.0045878584 + 1612500 0.0060779413 0.0019982704 0.0049897571 + 1612600 0.0050257062 0.002223146 0.0046967357 + 1612700 0.0039217894 0.0021930495 0.0041233053 + 1612800 0.0045941635 0.0022158566 0.0044770464 + 1612900 0.0034313888 0.0026800819 0.0043689686 + 1613000 0.0057187795 0.0025554462 0.005370158 + 1613100 0.0055306355 0.0030900529 0.0058121626 + 1613200 0.0048194059 0.0032506782 0.0056227296 + 1613300 0.005985996 0.0030830993 0.0060293317 + 1613400 0.0050039417 0.0024906743 0.0049535519 + 1613500 0.0051001646 0.0019312625 0.0044414998 + 1613600 0.0046083342 0.0021513844 0.0044195489 + 1613700 0.0043670427 0.002499628 0.0046490318 + 1613800 0.004959452 0.0024819977 0.004922978 + 1613900 0.0034556631 0.0021691991 0.0038700333 + 1614000 0.0050439013 0.0021366176 0.0046191627 + 1614100 0.0050370021 0.0018127313 0.0042918808 + 1614200 0.0058431277 0.0017967849 0.0046726993 + 1614300 0.0058064709 0.0017086086 0.0045664811 + 1614400 0.0031850803 0.0018955573 0.003463214 + 1614500 0.0031524332 0.0018781936 0.0034297819 + 1614600 0.0054399302 0.0019625674 0.004640033 + 1614700 0.0048807247 0.0018930391 0.0042952708 + 1614800 0.0062686613 0.0018580308 0.0049433875 + 1614900 0.0056355562 0.0030230741 0.0057968244 + 1615000 0.0050039235 0.0038420801 0.0063049486 + 1615100 0.0058849708 0.0030824938 0.0059790029 + 1615200 0.0047278331 0.0027362131 0.0050631934 + 1615300 0.0041897113 0.0027089164 0.0047710399 + 1615400 0.0050328856 0.0025802944 0.0050574178 + 1615500 0.0052364461 0.0027253615 0.0053026748 + 1615600 0.0048289286 0.0028643359 0.0052410742 + 1615700 0.0044498189 0.0030454785 0.0052356238 + 1615800 0.0060777622 0.0026071206 0.0055985192 + 1615900 0.0051868459 0.0019963934 0.0045492941 + 1616000 0.0040910556 0.0024157473 0.0044293138 + 1616100 0.0057285988 0.002600197 0.0054197418 + 1616200 0.0059873455 0.002843569 0.0057904656 + 1616300 0.0053956511 0.0032552266 0.0059108986 + 1616400 0.0054550829 0.0031686793 0.0058536029 + 1616500 0.0039139207 0.0027483776 0.0046747604 + 1616600 0.0055410923 0.0023791693 0.0051064256 + 1616700 0.0036428497 0.0021620253 0.0039549904 + 1616800 0.004636639 0.0015438197 0.0038259154 + 1616900 0.0042411274 0.0013967856 0.0034842155 + 1617000 0.0039721117 0.001893474 0.0038484977 + 1617100 0.0049619091 0.0022864851 0.0047286747 + 1617200 0.0064114705 0.0020242968 0.0051799425 + 1617300 0.0051911132 0.002031956 0.0045869571 + 1617400 0.0051283708 0.002290093 0.004814213 + 1617500 0.0050483959 0.0021394307 0.0046241881 + 1617600 0.0037335683 0.0018799636 0.0037175793 + 1617700 0.0055778747 0.0023572778 0.005102638 + 1617800 0.0046368528 0.0031646796 0.0054468806 + 1617900 0.0038817368 0.0036307631 0.0055413054 + 1618000 0.0043367073 0.0037103184 0.0058447915 + 1618100 0.0065962211 0.0034912398 0.0067378174 + 1618200 0.00467878 0.0032058599 0.0055086969 + 1618300 0.0050097712 0.0031584135 0.0056241603 + 1618400 0.0046472607 0.0030264288 0.0053137524 + 1618500 0.0041731709 0.0028593788 0.0049133613 + 1618600 0.0051558456 0.0027209578 0.0052586006 + 1618700 0.0032559283 0.0025755236 0.0041780508 + 1618800 0.0042700649 0.0026039108 0.0047055834 + 1618900 0.0065345854 0.0023880844 0.0056043257 + 1619000 0.0062264592 0.0022482142 0.0053127995 + 1619100 0.0055246046 0.0023476098 0.0050667511 + 1619200 0.0051234802 0.0024532434 0.0049749563 + 1619300 0.0051797105 0.0026008207 0.0051502095 + 1619400 0.0046729854 0.0022908786 0.0045908637 + 1619500 0.0077088643 0.0020655663 0.0058597729 + 1619600 0.0046048984 0.0019554412 0.0042219146 + 1619700 0.0042809713 0.002305986 0.0044130266 + 1619800 0.0045569727 0.0024190566 0.0046619415 + 1619900 0.0055875873 0.0028185852 0.0055687259 + 1620000 0.004069753 0.0026058147 0.0046088962 + 1620100 0.0057136736 0.001923045 0.0047352437 + 1620200 0.0038524831 0.0018775909 0.0037737349 + 1620300 0.0056943401 0.0016436055 0.0044462885 + 1620400 0.0045443441 0.0018236454 0.0040603147 + 1620500 0.0055055138 0.0016650387 0.0043747838 + 1620600 0.0054116992 0.0017311293 0.0043947 + 1620700 0.0043399493 0.0021194979 0.0042555668 + 1620800 0.0049012284 0.002388003 0.0048003264 + 1620900 0.0052355446 0.0020395893 0.0046164589 + 1621000 0.0052271193 0.0021228159 0.0046955387 + 1621100 0.0047243264 0.0023256548 0.0046509092 + 1621200 0.0050317528 0.0027437459 0.0052203118 + 1621300 0.0069274452 0.0021082389 0.0055178408 + 1621400 0.0047931032 0.0017879408 0.0041470463 + 1621500 0.0039750451 0.0020664823 0.0040229498 + 1621600 0.0049770175 0.0023538565 0.0048034823 + 1621700 0.0051236208 0.0025961348 0.0051179169 + 1621800 0.0039706733 0.0031798159 0.0051341317 + 1621900 0.0044144927 0.0031730312 0.0053457893 + 1622000 0.0061727206 0.0028347637 0.0058728996 + 1622100 0.0068922047 0.002671952 0.006064209 + 1622200 0.0060694586 0.0023774697 0.0053647813 + 1622300 0.0035296616 0.0027419844 0.0044792398 + 1622400 0.0054848875 0.0026790469 0.00537864 + 1622500 0.0046569572 0.0023896803 0.0046817764 + 1622600 0.0042448492 0.0022519102 0.0043411719 + 1622700 0.0040219761 0.0024328623 0.0044124286 + 1622800 0.006761474 0.0020758997 0.0054038127 + 1622900 0.0065386789 0.0022789119 0.0054971679 + 1623000 0.0048234463 0.0024385541 0.004812594 + 1623100 0.0051826743 0.0023765145 0.004927362 + 1623200 0.0055099879 0.0023364152 0.0050483624 + 1623300 0.0061305308 0.0024291831 0.0054465537 + 1623400 0.0048143376 0.0022020317 0.0045715885 + 1623500 0.0063231518 0.0020475996 0.0051597759 + 1623600 0.0048362488 0.0027074938 0.005087835 + 1623700 0.0051264523 0.0031535852 0.0056767609 + 1623800 0.0059167033 0.0028247082 0.0057368356 + 1623900 0.0043472213 0.0030819772 0.0052216252 + 1624000 0.0041945757 0.0032209636 0.0052854813 + 1624100 0.005769571 0.0028767547 0.0057164654 + 1624200 0.0054000973 0.0022651088 0.0049229692 + 1624300 0.0046450249 0.0023470824 0.0046333056 + 1624400 0.0053520891 0.0025735368 0.0052077682 + 1624500 0.0048352307 0.0029505627 0.0053304028 + 1624600 0.0057423747 0.0025602142 0.0053865393 + 1624700 0.0050811784 0.0021761335 0.004677026 + 1624800 0.0062851906 0.0020633224 0.0051568147 + 1624900 0.0051625935 0.0021535413 0.0046945053 + 1625000 0.0053742102 0.0022922023 0.0049373214 + 1625100 0.0059552561 0.0027078308 0.0056389334 + 1625200 0.0057537797 0.0027966082 0.0056285466 + 1625300 0.0055376466 0.002702153 0.0054277134 + 1625400 0.0050500825 0.0025712995 0.005056887 + 1625500 0.0049123106 0.0023778981 0.004795676 + 1625600 0.006623826 0.0023224303 0.0055825946 + 1625700 0.0046174679 0.002357534 0.004630194 + 1625800 0.0046199285 0.0022650083 0.0045388794 + 1625900 0.0056211094 0.0024038515 0.0051704913 + 1626000 0.0048052309 0.0025036039 0.0048686785 + 1626100 0.0062085869 0.0027676748 0.0058234636 + 1626200 0.0061373307 0.0033297401 0.0063504576 + 1626300 0.0038421058 0.0030980308 0.0049890672 + 1626400 0.0042609983 0.0025424415 0.0046396516 + 1626500 0.0056352702 0.0025241234 0.005297733 + 1626600 0.0055172432 0.0027162898 0.0054318079 + 1626700 0.0037323362 0.0031402975 0.0049773067 + 1626800 0.0039318522 0.0032914627 0.0052266712 + 1626900 0.0060979201 0.0032529212 0.0062542413 + 1627000 0.0043537504 0.0030233391 0.0051662006 + 1627100 0.0049206028 0.002186197 0.0046080562 + 1627200 0.0057422648 0.0021457331 0.0049720041 + 1627300 0.004403158 0.0026612933 0.0048284726 + 1627400 0.005056037 0.0029223082 0.0054108264 + 1627500 0.0049147125 0.0025198291 0.0049387892 + 1627600 0.0053600139 0.00203519 0.0046733218 + 1627700 0.0042672984 0.0020480385 0.0041483494 + 1627800 0.0042166744 0.0022010821 0.0042764766 + 1627900 0.0050680205 0.0024940153 0.0049884316 + 1628000 0.0053959379 0.0026639245 0.0053197376 + 1628100 0.0049595815 0.0022600307 0.0047010748 + 1628200 0.0064586278 0.0023881653 0.0055670211 + 1628300 0.003738002 0.0027477314 0.0045875292 + 1628400 0.0048302966 0.0029700254 0.0053474371 + 1628500 0.00474228 0.0031086821 0.005442773 + 1628600 0.0050933528 0.0028325779 0.0053394625 + 1628700 0.0069159227 0.0021626039 0.0055665345 + 1628800 0.0061590076 0.0016894485 0.0047208351 + 1628900 0.0055693382 0.0018720607 0.0046132193 + 1629000 0.0035110004 0.0021282166 0.0038562871 + 1629100 0.0054786117 0.0025277063 0.0052242105 + 1629200 0.0046665496 0.0027566722 0.0050534896 + 1629300 0.0042015802 0.0027778225 0.0048457877 + 1629400 0.0046114205 0.0023158745 0.004585558 + 1629500 0.0056258802 0.0020232622 0.0047922502 + 1629600 0.0052780758 0.0020347554 0.0046325583 + 1629700 0.0050536447 0.0028635086 0.0053508494 + 1629800 0.0045489142 0.0032840751 0.0055229938 + 1629900 0.0057616707 0.0027969242 0.0056327465 + 1630000 0.0044952206 0.0021671687 0.0043796601 + 1630100 0.005175771 0.0017846996 0.0043321494 + 1630200 0.0052578936 0.0021064821 0.0046943516 + 1630300 0.0058081063 0.0025947688 0.0054534462 + 1630400 0.0064989604 0.002710731 0.0059094381 + 1630500 0.0048784994 0.0025497719 0.0049509083 + 1630600 0.0048836394 0.0024608266 0.0048644929 + 1630700 0.0048533056 0.0021653284 0.0045540647 + 1630800 0.0056883516 0.0019247002 0.0047244357 + 1630900 0.0062773573 0.0020333458 0.0051229825 + 1631000 0.0063469812 0.0025840923 0.0057079971 + 1631100 0.0069346937 0.0029617968 0.0063749664 + 1631200 0.0069704389 0.0025497776 0.0059805405 + 1631300 0.0059225172 0.0023180072 0.0052329961 + 1631400 0.0041619167 0.0022605463 0.0043089897 + 1631500 0.0057852318 0.0019792434 0.0048266622 + 1631600 0.0045032988 0.0022015293 0.0044179966 + 1631700 0.0046514025 0.0021371129 0.004426475 + 1631800 0.0049671876 0.0028075758 0.0052523635 + 1631900 0.0046606132 0.0033572768 0.0056511724 + 1632000 0.0042631595 0.0029797503 0.0050780241 + 1632100 0.0061697088 0.0026422356 0.0056788891 + 1632200 0.0047099849 0.0021214464 0.0044396421 + 1632300 0.0059211095 0.0017733082 0.0046876043 + 1632400 0.0049198584 0.0020800075 0.0045015003 + 1632500 0.0064742254 0.0022836297 0.0054701625 + 1632600 0.0062013553 0.0024054881 0.0054577176 + 1632700 0.00588076 0.0028656448 0.0057600814 + 1632800 0.0055642166 0.0027528004 0.0054914382 + 1632900 0.0049799097 0.0026234336 0.0050744829 + 1633000 0.0045192972 0.0023621559 0.0045864975 + 1633100 0.0054099189 0.0018772981 0.0045399925 + 1633200 0.0054714614 0.0018240143 0.0045169992 + 1633300 0.0043990218 0.0018639283 0.0040290719 + 1633400 0.0037577995 0.0016362336 0.0034857756 + 1633500 0.0039789509 0.0017359692 0.0036943591 + 1633600 0.0042237819 0.0022135662 0.0042924589 + 1633700 0.0057468718 0.0025683349 0.0053968734 + 1633800 0.0045695268 0.003020167 0.0052692309 + 1633900 0.0042656834 0.0029782749 0.005077791 + 1634000 0.0061215854 0.0025177236 0.0055306914 + 1634100 0.0059072133 0.0019412479 0.0048487045 + 1634200 0.0056780875 0.0016467691 0.0044414528 + 1634300 0.0049634004 0.002002322 0.0044452457 + 1634400 0.0052354444 0.0026459167 0.005222737 + 1634500 0.0057632708 0.0025715148 0.0054081247 + 1634600 0.006977854 0.0022393232 0.0056737357 + 1634700 0.005373763 0.0021560613 0.0048009602 + 1634800 0.0055571687 0.0022063484 0.0049415174 + 1634900 0.0039352395 0.0021792153 0.004116091 + 1635000 0.0035996991 0.0020578823 0.0038296092 + 1635100 0.0080275978 0.0020440022 0.0059950855 + 1635200 0.0051361061 0.0027250581 0.0052529853 + 1635300 0.0046517485 0.0028249261 0.0051144586 + 1635400 0.0085592717 0.0024083495 0.006621116 + 1635500 0.0044164378 0.0023721724 0.0045458879 + 1635600 0.0038091226 0.0026827804 0.0045575829 + 1635700 0.0047492692 0.0026181388 0.0049556698 + 1635800 0.0042338235 0.0025616553 0.0046454904 + 1635900 0.0041432559 0.002319641 0.0043588998 + 1636000 0.0033411533 0.002425732 0.0040702059 + 1636100 0.0046156345 0.0024984543 0.0047702119 + 1636200 0.0050523088 0.0021237386 0.0046104218 + 1636300 0.0051887301 0.0019337478 0.004487576 + 1636400 0.0052894465 0.0022246757 0.0048280751 + 1636500 0.0055323546 0.0023719902 0.005094946 + 1636600 0.0055015505 0.0020191821 0.0047269765 + 1636700 0.0039812323 0.0021974022 0.0041569149 + 1636800 0.0041680721 0.0022886818 0.0043401548 + 1636900 0.0041758935 0.0022210578 0.0042763804 + 1637000 0.0049950675 0.002051427 0.0045099368 + 1637100 0.0049663671 0.0018956794 0.0043400632 + 1637200 0.004944914 0.0021587288 0.0045925537 + 1637300 0.0047666796 0.0024115456 0.0047576457 + 1637400 0.0051511647 0.002569223 0.0051045619 + 1637500 0.0050151646 0.0023708316 0.0048392329 + 1637600 0.0058132528 0.0024623259 0.0053235362 + 1637700 0.0044726589 0.0023785111 0.0045798978 + 1637800 0.005370535 0.002954867 0.0055981772 + 1637900 0.0052765312 0.00251666 0.0051137026 + 1638000 0.0044304033 0.0023362903 0.0045168794 + 1638100 0.0045640885 0.0021043068 0.0043506941 + 1638200 0.0050252096 0.0023229557 0.0047963011 + 1638300 0.0049887057 0.0026141302 0.0050695088 + 1638400 0.0035790815 0.0026280199 0.0043895991 + 1638500 0.0046552131 0.0025423504 0.0048335881 + 1638600 0.0049783321 0.0027208202 0.0051710931 + 1638700 0.0041591378 0.0029549208 0.0050019964 + 1638800 0.0058582287 0.0025536019 0.0054369488 + 1638900 0.0056607428 0.0030769611 0.0058631079 + 1639000 0.0072361981 0.0029926139 0.0065541801 + 1639100 0.0046509286 0.0026856811 0.0049748101 + 1639200 0.0064654748 0.0024811394 0.0056633652 + 1639300 0.00352715 0.0030059536 0.0047419728 + 1639400 0.0050461223 0.0028462486 0.005329887 + 1639500 0.0045677728 0.0024787602 0.0047269609 + 1639600 0.0056377859 0.0021431362 0.004917984 + 1639700 0.0037059762 0.0019844566 0.0038084918 + 1639800 0.0040719222 0.0017164905 0.0037206397 + 1639900 0.0060908267 0.0019582406 0.0049560694 + 1640000 0.0045410056 0.0022245163 0.0044595425 + 1640100 0.004051639 0.0018886349 0.003882801 + 1640200 0.0043235934 0.0016937806 0.0038217992 + 1640300 0.0058178259 0.0020958472 0.0049593084 + 1640400 0.0037231025 0.0025010978 0.0043335624 + 1640500 0.0041800004 0.0026498196 0.0047071636 + 1640600 0.005073165 0.002454756 0.0049517043 + 1640700 0.0044725616 0.0027014949 0.0049028338 + 1640800 0.0058231768 0.0022295233 0.0050956181 + 1640900 0.0049430822 0.0022890794 0.0047220027 + 1641000 0.0046040644 0.0022284851 0.004494548 + 1641100 0.0052002351 0.0022077572 0.0047672479 + 1641200 0.0052113786 0.0023835201 0.0049484955 + 1641300 0.0043909589 0.002467231 0.0046284061 + 1641400 0.0057458452 0.0020714104 0.0048994436 + 1641500 0.0053750168 0.0020864374 0.0047319534 + 1641600 0.0047343153 0.0021055206 0.0044356915 + 1641700 0.0050024467 0.0022565155 0.0047186572 + 1641800 0.005852285 0.0022835126 0.0051639341 + 1641900 0.0062388318 0.0021736646 0.0052443396 + 1642000 0.0041015452 0.0023450328 0.0043637621 + 1642100 0.0067141688 0.0019960771 0.005300707 + 1642200 0.0048695968 0.0020602101 0.0044569648 + 1642300 0.0047596882 0.0024240118 0.0047666709 + 1642400 0.0060196093 0.0023088085 0.005271585 + 1642500 0.0056968972 0.0022273214 0.005031263 + 1642600 0.0053325754 0.002342622 0.0049672489 + 1642700 0.004734313 0.0023336757 0.0046638454 + 1642800 0.0034524647 0.0021735944 0.0038728544 + 1642900 0.0047110762 0.0020137212 0.004332454 + 1643000 0.0052530703 0.0019243252 0.0045098208 + 1643100 0.0042071248 0.002184782 0.0042554762 + 1643200 0.005309823 0.0020204783 0.0046339068 + 1643300 0.0055969946 0.0016053296 0.0043601004 + 1643400 0.0046944544 0.0016350964 0.0039456482 + 1643500 0.0046872271 0.0017775691 0.0040845637 + 1643600 0.004456623 0.0018231447 0.0040166389 + 1643700 0.0045745729 0.002229039 0.0044805865 + 1643800 0.0049420481 0.0021201689 0.0045525832 + 1643900 0.0053830565 0.0019851232 0.0046345964 + 1644000 0.0048761574 0.0018573314 0.0042573151 + 1644100 0.004203885 0.0023868949 0.0044559945 + 1644200 0.0046810059 0.0024584876 0.0047624201 + 1644300 0.0057094973 0.0022872121 0.0050973552 + 1644400 0.0036886261 0.0023515285 0.0041670241 + 1644500 0.0061717763 0.0016600464 0.0046977175 + 1644600 0.0064580816 0.0017915058 0.0049700928 + 1644700 0.0048948705 0.0021610397 0.0045702338 + 1644800 0.005350294 0.002323976 0.0049573239 + 1644900 0.0057308318 0.0022471738 0.0050678176 + 1645000 0.0058401386 0.0022263211 0.0051007643 + 1645100 0.0051245414 0.002651606 0.0051738412 + 1645200 0.0043246553 0.0030279313 0.0051564726 + 1645300 0.0053147706 0.0030558999 0.0056717636 + 1645400 0.0051852042 0.0027270999 0.0052791926 + 1645500 0.0051742084 0.002438322 0.0049850027 + 1645600 0.0046101765 0.0019685538 0.0042376251 + 1645700 0.0065742187 0.0017178365 0.0049535847 + 1645800 0.003744466 0.0018470719 0.0036900513 + 1645900 0.0048028998 0.0020872345 0.0044511617 + 1646000 0.0047617152 0.0021237043 0.004467361 + 1646100 0.0040649426 0.0023238395 0.0043245535 + 1646200 0.0039288231 0.0028882708 0.0048219884 + 1646300 0.0052156694 0.0023394604 0.0049065476 + 1646400 0.005042431 0.00196693 0.0044487515 + 1646500 0.0042764998 0.0019860174 0.0040908571 + 1646600 0.0047395959 0.0017888618 0.0041216316 + 1646700 0.0043932592 0.0013821653 0.0035444726 + 1646800 0.0051547645 0.0015001972 0.0040373079 + 1646900 0.0061073591 0.0015255675 0.0045315333 + 1647000 0.0054275967 0.0014669585 0.0041383537 + 1647100 0.0053632638 0.0016748215 0.0043145529 + 1647200 0.0035703868 0.0016687946 0.0034260943 + 1647300 0.0056618388 0.0020187385 0.0048054248 + 1647400 0.0048287363 0.002438593 0.0048152366 + 1647500 0.0057216898 0.0027596351 0.0055757793 + 1647600 0.005174181 0.0025202777 0.0050669449 + 1647700 0.0049651472 0.0024866401 0.0049304235 + 1647800 0.005365863 0.0023570155 0.0049980262 + 1647900 0.0049891614 0.0021156593 0.0045712622 + 1648000 0.0050403045 0.0021424665 0.0046232414 + 1648100 0.0057883806 0.0024484355 0.0052974041 + 1648200 0.006788147 0.0026289427 0.0059699838 + 1648300 0.0060802954 0.0025762088 0.0055688542 + 1648400 0.0040705205 0.0026997454 0.0047032047 + 1648500 0.0042312687 0.0027606764 0.0048432539 + 1648600 0.0052099077 0.0028541129 0.0054183644 + 1648700 0.0048747767 0.0022169149 0.004616219 + 1648800 0.0045461198 0.0020350518 0.0042725951 + 1648900 0.0036588286 0.0022366512 0.0040374809 + 1649000 0.0044501012 0.0018600042 0.0040502884 + 1649100 0.0046691915 0.0020453656 0.0043434833 + 1649200 0.006534594 0.0022373371 0.0054535825 + 1649300 0.0055112234 0.0024064786 0.0051190338 + 1649400 0.0048348508 0.0028218328 0.005201486 + 1649500 0.0057298082 0.003018723 0.005838863 + 1649600 0.0055498254 0.003307464 0.0060390187 + 1649700 0.0038254094 0.0035860049 0.0054688236 + 1649800 0.0064265648 0.0031516322 0.006314707 + 1649900 0.0069550081 0.0028445611 0.0062677291 + 1650000 0.0043346511 0.0026495477 0.0047830088 + 1650100 0.0071385732 0.0025394594 0.0060529759 + 1650200 0.0048832825 0.0025524716 0.0049559622 + 1650300 0.0073649069 0.0021808723 0.0058057874 + 1650400 0.0043002427 0.0025423651 0.0046588908 + 1650500 0.004002758 0.0026089955 0.0045791029 + 1650600 0.005764212 0.002684259 0.0055213321 + 1650700 0.0058951212 0.002844901 0.005746406 + 1650800 0.0047659832 0.0026960216 0.0050417789 + 1650900 0.0041101714 0.0025265818 0.0045495568 + 1651000 0.0068366225 0.002338385 0.0057032851 + 1651100 0.0054091101 0.00219484 0.0048571363 + 1651200 0.0042423197 0.0024169674 0.0045049841 + 1651300 0.0058451037 0.0023428666 0.0052197536 + 1651400 0.0042711944 0.0016752953 0.0037775238 + 1651500 0.0040859549 0.0017150754 0.0037261313 + 1651600 0.0049498582 0.002099282 0.0045355404 + 1651700 0.0071591447 0.0017078561 0.0052314976 + 1651800 0.0044158684 0.0016028476 0.0037762829 + 1651900 0.0057140894 0.0020705471 0.0048829505 + 1652000 0.0043954789 0.002714584 0.0048779838 + 1652100 0.005968871 0.0025068393 0.005444643 + 1652200 0.0059905433 0.0022364479 0.0051849184 + 1652300 0.0052800563 0.0024656047 0.0050643824 + 1652400 0.0032568076 0.0028114822 0.0044144422 + 1652500 0.0055076691 0.0022849174 0.0049957233 + 1652600 0.0049072924 0.0023961135 0.0048114215 + 1652700 0.0042663949 0.0025427503 0.0046426166 + 1652800 0.0049975923 0.0026153236 0.0050750761 + 1652900 0.0049781945 0.0022515197 0.0047017248 + 1653000 0.0064871623 0.0019588341 0.0051517343 + 1653100 0.005997703 0.0018025305 0.0047545249 + 1653200 0.0053907864 0.0018882893 0.004541567 + 1653300 0.0053181104 0.0024260116 0.0050435191 + 1653400 0.0054540544 0.0024953582 0.0051797756 + 1653500 0.0053275091 0.0022279021 0.0048500355 + 1653600 0.0038624052 0.0019759723 0.0038769998 + 1653700 0.0057824753 0.0018891486 0.0047352107 + 1653800 0.0051869983 0.0019369949 0.0044899707 + 1653900 0.0047357151 0.0023242155 0.0046550753 + 1654000 0.0045571681 0.0026031531 0.0048461343 + 1654100 0.0045124027 0.0026096595 0.0048306077 + 1654200 0.0048158776 0.0022834244 0.0046537391 + 1654300 0.0051855525 0.0019980286 0.0045502927 + 1654400 0.0053669265 0.0019027346 0.0045442688 + 1654500 0.0055509681 0.001821465 0.0045535821 + 1654600 0.0053908861 0.0018949818 0.0045483085 + 1654700 0.004909933 0.0017923273 0.0042089349 + 1654800 0.0044074265 0.0022359887 0.0044052689 + 1654900 0.0050157816 0.0021074928 0.0045761978 + 1655000 0.0044967248 0.00224264 0.0044558718 + 1655100 0.0052806149 0.0026926491 0.0052917018 + 1655200 0.0039931656 0.003019199 0.0049845852 + 1655300 0.0056810886 0.0024113102 0.005207471 + 1655400 0.0033289016 0.0022053174 0.0038437612 + 1655500 0.0050977383 0.0024188615 0.0049279046 + 1655600 0.0053128523 0.0023835679 0.0049984874 + 1655700 0.0046083619 0.0025461394 0.0048143175 + 1655800 0.0053062306 0.0029176684 0.0055293287 + 1655900 0.0037384072 0.002677357 0.0045173543 + 1656000 0.0059792257 0.0020171686 0.0049600688 + 1656100 0.004817052 0.0020729078 0.0044438006 + 1656200 0.0057515925 0.0022344672 0.0050653291 + 1656300 0.0048807521 0.0022234719 0.0046257171 + 1656400 0.0056049874 0.0020820174 0.0048407221 + 1656500 0.0044133141 0.0022394391 0.0044116171 + 1656600 0.0044195492 0.0018437626 0.0040190094 + 1656700 0.0062446246 0.0018543824 0.0049279086 + 1656800 0.0047787372 0.0019739203 0.004325955 + 1656900 0.0038336776 0.002212807 0.0040996952 + 1657000 0.003613762 0.0022597548 0.0040384032 + 1657100 0.00382004 0.0023198041 0.00419998 + 1657200 0.004011871 0.0022682655 0.0042428583 + 1657300 0.0047145067 0.0020443257 0.004364747 + 1657400 0.0055184307 0.0019131706 0.0046292732 + 1657500 0.0071289261 0.0014594171 0.0049681854 + 1657600 0.0048660577 0.0016103183 0.0040053311 + 1657700 0.0045341645 0.002336157 0.0045678161 + 1657800 0.0046757823 0.0028887139 0.0051900755 + 1657900 0.0053410644 0.0021816234 0.0048104285 + 1658000 0.0047402858 0.0025156678 0.0048487772 + 1658100 0.0056370865 0.0023643725 0.0051388761 + 1658200 0.0041935172 0.0023914255 0.0044554222 + 1658300 0.004282907 0.0024746079 0.0045826012 + 1658400 0.0074479312 0.0021177672 0.0057835458 + 1658500 0.0049777291 0.0017289873 0.0041789633 + 1658600 0.0050417065 0.0020276574 0.0045091223 + 1658700 0.0050307397 0.0023185055 0.0047945727 + 1658800 0.004038375 0.0021679743 0.004155612 + 1658900 0.003503584 0.0021720952 0.0038965155 + 1659000 0.0052910905 0.002196961 0.0048011696 + 1659100 0.0048228184 0.0019366531 0.0043103841 + 1659200 0.0046174833 0.0021720084 0.004444676 + 1659300 0.0055542595 0.0025131509 0.005246888 + 1659400 0.0057695858 0.0025978611 0.0054375791 + 1659500 0.004711788 0.0024758593 0.0047949425 + 1659600 0.0051384912 0.0022936803 0.0048227814 + 1659700 0.0044010537 0.0020707101 0.0042368537 + 1659800 0.0049095162 0.0020439981 0.0044604006 + 1659900 0.0046780174 0.0022854578 0.0045879195 + 1660000 0.0067450043 0.0017224023 0.0050422091 + 1660100 0.0058403823 0.0017588759 0.004633439 + 1660200 0.0046878432 0.0023436733 0.0046509711 + 1660300 0.0054210102 0.0025995127 0.0052676661 + 1660400 0.0047963715 0.002945149 0.0053058631 + 1660500 0.0057319761 0.0031710179 0.0059922249 + 1660600 0.0052229398 0.0032772148 0.0058478805 + 1660700 0.0059206401 0.0029207202 0.0058347852 + 1660800 0.004843871 0.0029971263 0.005381219 + 1660900 0.0055889606 0.0025804251 0.0053312416 + 1661000 0.0055644767 0.0022201058 0.0049588716 + 1661100 0.0059282833 0.0023293448 0.0052471717 + 1661200 0.0046391517 0.0024696833 0.0047530158 + 1661300 0.0040642617 0.0027455921 0.0047459709 + 1661400 0.0042933276 0.0026179097 0.0047310319 + 1661500 0.0040151082 0.0028631675 0.0048393535 + 1661600 0.004279003 0.0030381897 0.0051442615 + 1661700 0.0057435606 0.0028888754 0.0057157841 + 1661800 0.0037448561 0.0031836693 0.0050268407 + 1661900 0.004596708 0.0032387053 0.0055011475 + 1662000 0.0050759346 0.0024366423 0.0049349538 + 1662100 0.0052257239 0.0023533473 0.0049253833 + 1662200 0.0044210899 0.0024990602 0.0046750654 + 1662300 0.0056033107 0.0025848174 0.0053426969 + 1662400 0.0066358506 0.0027587089 0.0060247917 + 1662500 0.0056071654 0.003014511 0.0057742877 + 1662600 0.0049660039 0.0027533011 0.0051975061 + 1662700 0.0060531281 0.0021308389 0.0051101129 + 1662800 0.005861853 0.0021454145 0.0050305453 + 1662900 0.0038908696 0.0025902343 0.0045052717 + 1663000 0.0056522176 0.0025143287 0.0052962796 + 1663100 0.0055372797 0.0021035973 0.0048289772 + 1663200 0.0042768356 0.0021210177 0.0042260227 + 1663300 0.0053558636 0.0024040597 0.0050401488 + 1663400 0.0060922937 0.0027221776 0.0057207284 + 1663500 0.006375591 0.002663702 0.0058016882 + 1663600 0.0059875267 0.0028963196 0.0058433054 + 1663700 0.0068278961 0.0024397941 0.0058003992 + 1663800 0.0061057916 0.0018157217 0.004820916 + 1663900 0.0055429349 0.0017891884 0.0045173516 + 1664000 0.0055361968 0.0022779825 0.0050028294 + 1664100 0.0037665714 0.0026955057 0.0045493651 + 1664200 0.0051487852 0.0020746861 0.0046088538 + 1664300 0.0046889523 0.0019963856 0.0043042293 + 1664400 0.0056569895 0.0019737372 0.0047580367 + 1664500 0.0051386538 0.0019180699 0.0044472511 + 1664600 0.0042875221 0.0018323782 0.003942643 + 1664700 0.0049439524 0.001640022 0.0040733735 + 1664800 0.0045238293 0.0020440857 0.004270658 + 1664900 0.003767421 0.0023254001 0.0041796777 + 1665000 0.0056924923 0.0021444421 0.0049462156 + 1665100 0.0051674341 0.0022042301 0.0047475766 + 1665200 0.0045523603 0.0027783077 0.0050189226 + 1665300 0.0040445851 0.0031882475 0.0051789417 + 1665400 0.0055891826 0.0029354134 0.0056863392 + 1665500 0.004918696 0.002677685 0.0050986057 + 1665600 0.0057772188 0.0027209958 0.0055644706 + 1665700 0.0053459306 0.0027669584 0.0053981586 + 1665800 0.0065039066 0.0020904471 0.0052915886 + 1665900 0.0051640527 0.0020862773 0.0046279594 + 1666000 0.0045137265 0.002360831 0.0045824307 + 1666100 0.0056749129 0.0024788174 0.0052719386 + 1666200 0.0046995294 0.0022842106 0.0045972603 + 1666300 0.0060180922 0.0021221867 0.0050842164 + 1666400 0.0059973676 0.0020055143 0.0049573437 + 1666500 0.0046005561 0.0022143808 0.004478717 + 1666600 0.0050999365 0.0021271135 0.0046372385 + 1666700 0.0045718363 0.002574887 0.0048250876 + 1666800 0.0043060392 0.0028577207 0.0049770994 + 1666900 0.0062483995 0.0027974397 0.0058728238 + 1667000 0.0054655357 0.002828494 0.0055185623 + 1667100 0.0047892466 0.0027235163 0.0050807236 + 1667200 0.0046299293 0.0026575845 0.0049363778 + 1667300 0.0058404138 0.0025011877 0.0053757664 + 1667400 0.0065386361 0.0024784556 0.0056966905 + 1667500 0.0047697226 0.0026577261 0.0050053239 + 1667600 0.0053969427 0.0026984417 0.0053547495 + 1667700 0.0044686528 0.002670472 0.004869887 + 1667800 0.0046989791 0.0023980879 0.0047108667 + 1667900 0.0050816208 0.0024705813 0.0049716916 + 1668000 0.005494463 0.0025077321 0.0052120381 + 1668100 0.0044802436 0.0024892007 0.0046943205 + 1668200 0.0054701406 0.0021126596 0.0048049944 + 1668300 0.005322637 0.0022732534 0.0048929887 + 1668400 0.0046224305 0.0027679012 0.0050430037 + 1668500 0.0059863822 0.0027543955 0.005700818 + 1668600 0.0067773042 0.0022175776 0.005553282 + 1668700 0.0057689524 0.0020546536 0.0048940599 + 1668800 0.0048062032 0.0021636872 0.0045292403 + 1668900 0.0053034886 0.0021450456 0.0047553564 + 1669000 0.0048433929 0.0020064959 0.0043903533 + 1669100 0.0053798451 0.0020987039 0.0047465964 + 1669200 0.003625422 0.0021724521 0.0039568394 + 1669300 0.0062224189 0.0022577831 0.0053203799 + 1669400 0.0069485989 0.0026287473 0.0060487608 + 1669500 0.0052677537 0.002401227 0.0049939495 + 1669600 0.0044691072 0.0020244913 0.00422413 + 1669700 0.0050508983 0.0015346902 0.0040206792 + 1669800 0.0062203771 0.0019352856 0.0049968775 + 1669900 0.005613948 0.0026852408 0.0054483558 + 1670000 0.0041907667 0.0028269567 0.0048895997 + 1670100 0.0047219185 0.0020474959 0.0043715652 + 1670200 0.0056121418 0.0018635246 0.0046257507 + 1670300 0.0042865423 0.0021050837 0.0042148662 + 1670400 0.003567557 0.0023989219 0.0041548288 + 1670500 0.0055933638 0.0021686759 0.0049216597 + 1670600 0.0049794729 0.0020792613 0.0045300956 + 1670700 0.0067706171 0.0022141404 0.0055465535 + 1670800 0.0045230302 0.0025492911 0.0047754701 + 1670900 0.0057870654 0.0020608917 0.004909213 + 1671000 0.0070929888 0.0019743299 0.0054654103 + 1671100 0.0053601366 0.0021461588 0.0047843511 + 1671200 0.0054056705 0.0020350043 0.0046956078 + 1671300 0.0039767668 0.0024049113 0.0043622262 + 1671400 0.005272827 0.0025935639 0.0051887834 + 1671500 0.0055982468 0.0024444846 0.0051998717 + 1671600 0.0057442249 0.0024223484 0.0052495841 + 1671700 0.005872344 0.0026005668 0.0054908611 + 1671800 0.0051788125 0.0020654797 0.0046144265 + 1671900 0.0056998229 0.0019196817 0.0047250633 + 1672000 0.0047271802 0.0017368779 0.0040635369 + 1672100 0.0041147306 0.0019900875 0.0040153065 + 1672200 0.0048646279 0.0021454986 0.0045398076 + 1672300 0.0052613865 0.0021080168 0.0046976055 + 1672400 0.0068598059 0.0024943899 0.0058707006 + 1672500 0.0071453478 0.0023933276 0.0059101784 + 1672600 0.0053388106 0.0023785698 0.0050062656 + 1672700 0.0056790277 0.0024228613 0.0052180077 + 1672800 0.00612055 0.0026082393 0.0056206975 + 1672900 0.0060649115 0.002480152 0.0054652256 + 1673000 0.006398725 0.0021722026 0.0053215751 + 1673100 0.0064629458 0.0020909211 0.0052719023 + 1673200 0.0049756806 0.0022082863 0.0046572541 + 1673300 0.0050955516 0.0026182129 0.0051261797 + 1673400 0.0048670881 0.0030422543 0.0054377743 + 1673500 0.00435027 0.0032331649 0.0053743134 + 1673600 0.0057140135 0.0029927025 0.0058050685 + 1673700 0.0052241095 0.0023597901 0.0049310315 + 1673800 0.0059210982 0.0020953483 0.0050096388 + 1673900 0.0045984702 0.0019641754 0.0042274849 + 1674000 0.0052111232 0.0019985364 0.0045633861 + 1674100 0.0049404241 0.002138367 0.0045699821 + 1674200 0.004949596 0.0023530277 0.004789157 + 1674300 0.0059613218 0.0024327488 0.0053668369 + 1674400 0.0041206076 0.0021671419 0.0041952534 + 1674500 0.0059138656 0.00181156 0.0047222908 + 1674600 0.0041828823 0.0018620115 0.0039207739 + 1674700 0.0062326368 0.0018314432 0.0048990691 + 1674800 0.0060605352 0.0020712824 0.005054202 + 1674900 0.0061480029 0.0019892975 0.0050152676 + 1675000 0.0058656144 0.0018297909 0.004716773 + 1675100 0.0042155328 0.0018778111 0.0039526437 + 1675200 0.0038010469 0.0020645614 0.0039353892 + 1675300 0.0049817644 0.0014450409 0.0038970031 + 1675400 0.0055140976 0.0012367732 0.0039507431 + 1675500 0.0049999613 0.0016601845 0.004121103 + 1675600 0.0056076093 0.0019721892 0.0047321844 + 1675700 0.0034637433 0.002040257 0.0037450682 + 1675800 0.0056737957 0.0015911388 0.0043837101 + 1675900 0.0055187843 0.0019051038 0.0046213805 + 1676000 0.0060135832 0.0018931377 0.0048529482 + 1676100 0.0060554459 0.0019484996 0.0049289144 + 1676200 0.0048749309 0.0019809843 0.0043803644 + 1676300 0.004646842 0.0021205611 0.0044076787 + 1676400 0.003756463 0.0023220134 0.0041708975 + 1676500 0.0047217859 0.002193846 0.00451785 + 1676600 0.006938833 0.0021052843 0.0055204912 + 1676700 0.0051262152 0.003228301 0.0057513601 + 1676800 0.0046691732 0.0027773671 0.0050754758 + 1676900 0.0051147667 0.0021441148 0.004661539 + 1677000 0.0049699795 0.001986653 0.0044328148 + 1677100 0.0051059588 0.0018211347 0.0043342238 + 1677200 0.0050164516 0.001868413 0.0043374478 + 1677300 0.0053919104 0.0019392475 0.0045930784 + 1677400 0.004265035 0.0025210687 0.0046202656 + 1677500 0.0053678762 0.0024159384 0.0050579399 + 1677600 0.0046856566 0.0020674361 0.0043736577 + 1677700 0.0067544377 0.0019414865 0.0052659363 + 1677800 0.0048636793 0.0021498625 0.0045437046 + 1677900 0.006095801 0.0019579207 0.0049581977 + 1678000 0.0070614343 0.0017215473 0.005197097 + 1678100 0.0037641082 0.0016898817 0.0035425286 + 1678200 0.0030619173 0.0016572848 0.0031643223 + 1678300 0.0039417801 0.0015721245 0.0035122194 + 1678400 0.0056865549 0.001502897 0.0043017483 + 1678500 0.0050092314 0.0018234828 0.0042889639 + 1678600 0.0037644644 0.0019357319 0.0037885542 + 1678700 0.005790249 0.0016854407 0.0045353289 + 1678800 0.005207895 0.0019534793 0.0045167401 + 1678900 0.0055836472 0.0021891766 0.004937378 + 1679000 0.006021064 0.0022783801 0.0052418725 + 1679100 0.0039483813 0.0021736078 0.0041169517 + 1679200 0.0051534614 0.0023403315 0.0048768008 + 1679300 0.0051195957 0.0027035659 0.0052233669 + 1679400 0.0053812285 0.0027283617 0.0053769351 + 1679500 0.0053915381 0.002206345 0.0048599927 + 1679600 0.0044169094 0.002048059 0.0042220066 + 1679700 0.0040523024 0.0021903319 0.0041848245 + 1679800 0.0037773561 0.00240033 0.0042594975 + 1679900 0.0052642345 0.0026135516 0.005204542 + 1680000 0.0051726831 0.0025790545 0.0051249844 + 1680100 0.0046970977 0.0022283635 0.0045402163 + 1680200 0.0055309133 0.001823907 0.0045461535 + 1680300 0.0060103453 0.0020912003 0.0050494171 + 1680400 0.0030804795 0.0029340626 0.0044502361 + 1680500 0.0055184597 0.0026877484 0.0054038653 + 1680600 0.0048956382 0.0025526903 0.0049622622 + 1680700 0.0043616208 0.0026705607 0.0048172959 + 1680800 0.0054125566 0.0023646613 0.005028654 + 1680900 0.0035094527 0.001920997 0.0036483058 + 1681000 0.0040307683 0.0019898291 0.0039737229 + 1681100 0.0050070499 0.0023311567 0.0047955641 + 1681200 0.0039452883 0.0029432592 0.0048850808 + 1681300 0.0041985467 0.0031603501 0.0052268223 + 1681400 0.0054056552 0.0024097785 0.0050703745 + 1681500 0.0044889187 0.0023051434 0.004514533 + 1681600 0.0055183655 0.002209528 0.0049255985 + 1681700 0.0062193521 0.0024846889 0.0055457762 + 1681800 0.0050016948 0.0026756631 0.0051374348 + 1681900 0.0052219423 0.0030217479 0.0055919226 + 1682000 0.0065966068 0.0031257917 0.0063725591 + 1682100 0.0068945714 0.003045179 0.0064386008 + 1682200 0.0039225445 0.0027087104 0.0046393378 + 1682300 0.0069350552 0.0023046824 0.0057180299 + 1682400 0.005081251 0.0028677373 0.0053686655 + 1682500 0.0054667375 0.0031227074 0.0058133673 + 1682600 0.0052851341 0.0030673474 0.0056686243 + 1682700 0.0047172623 0.0028387872 0.0051605647 + 1682800 0.0052213115 0.0028535054 0.0054233696 + 1682900 0.005646337 0.0028315594 0.0056106159 + 1683000 0.004864205 0.0027184025 0.0051125034 + 1683100 0.0057060774 0.0028881904 0.0056966503 + 1683200 0.0059643864 0.0027967164 0.0057323129 + 1683300 0.0053439693 0.0023684992 0.0049987341 + 1683400 0.0054720417 0.0030495957 0.0057428662 + 1683500 0.0050509147 0.0030444096 0.0055304067 + 1683600 0.0044670716 0.0029421827 0.0051408195 + 1683700 0.0044509651 0.0027491608 0.0049398702 + 1683800 0.0042771773 0.0028355603 0.0049407335 + 1683900 0.0058907075 0.0027761909 0.0056755235 + 1684000 0.0064230909 0.0025499557 0.0057113207 + 1684100 0.0046143274 0.0026336545 0.0049047688 + 1684200 0.0048588108 0.0029707889 0.0053622348 + 1684300 0.0049979528 0.0028206406 0.0052805705 + 1684400 0.0056373186 0.0023278037 0.0051024214 + 1684500 0.0044867251 0.0019375735 0.0041458835 + 1684600 0.0055330235 0.0017307224 0.0044540074 + 1684700 0.0049594562 0.0018351243 0.0042761066 + 1684800 0.0050224067 0.0017177572 0.0041897229 + 1684900 0.0046879136 0.001868948 0.0041762805 + 1685000 0.0053686339 0.002213986 0.0048563605 + 1685100 0.0049776179 0.0023309804 0.0047809017 + 1685200 0.0059131572 0.0023384271 0.0052488092 + 1685300 0.0049339424 0.002445643 0.0048740678 + 1685400 0.0047701195 0.0023646905 0.0047124837 + 1685500 0.0054994964 0.0024831177 0.0051899011 + 1685600 0.0044702614 0.0026097483 0.0048099551 + 1685700 0.0055175683 0.0026254428 0.005341121 + 1685800 0.0057847605 0.0021670434 0.0050142302 + 1685900 0.005828247 0.0018884032 0.0047569936 + 1686000 0.0073418969 0.0014845811 0.005098171 + 1686100 0.0059717393 0.0019117382 0.0048509537 + 1686200 0.0039565474 0.0021409912 0.0040883544 + 1686300 0.0043816387 0.0024659672 0.004622555 + 1686400 0.0049826522 0.0028654726 0.0053178717 + 1686500 0.0056715263 0.0028726972 0.0056641515 + 1686600 0.007200648 0.0025468223 0.0060908912 + 1686700 0.0056622289 0.0024166647 0.005203543 + 1686800 0.004821981 0.0020118716 0.0043851904 + 1686900 0.005103465 0.0021146795 0.0046265412 + 1687000 0.0048123822 0.0023339864 0.0047025807 + 1687100 0.0058652336 0.0020801433 0.0049669379 + 1687200 0.0043159507 0.0020089092 0.0041331661 + 1687300 0.0049713385 0.0021222347 0.0045690654 + 1687400 0.0047213951 0.0025416277 0.0048654393 + 1687500 0.0045627644 0.0024400393 0.0046857749 + 1687600 0.0060246892 0.0022401909 0.0052054676 + 1687700 0.0037779644 0.0025440011 0.004403468 + 1687800 0.0058370091 0.002311969 0.005184872 + 1687900 0.0045638173 0.0024581199 0.0047043737 + 1688000 0.005009825 0.0021787833 0.0046445565 + 1688100 0.0037870547 0.0022061434 0.0040700843 + 1688200 0.0060846387 0.0022696422 0.0052644253 + 1688300 0.0041685659 0.0024404582 0.0044921743 + 1688400 0.0058952625 0.0025881016 0.0054896761 + 1688500 0.0056082931 0.0018546913 0.004615023 + 1688600 0.0049918098 0.0016011217 0.0040580281 + 1688700 0.0058209952 0.001992981 0.0048580021 + 1688800 0.0036908754 0.0023583132 0.0041749159 + 1688900 0.0048933435 0.0020087851 0.0044172276 + 1689000 0.0045659188 0.0016725446 0.0039198327 + 1689100 0.0041830992 0.0021205737 0.0041794429 + 1689200 0.0043387846 0.0022361143 0.0043716099 + 1689300 0.0032971642 0.0025564555 0.0041792785 + 1689400 0.0059961602 0.0021961742 0.0051474093 + 1689500 0.0064726187 0.0019109443 0.0050966863 + 1689600 0.0045205387 0.0021734301 0.0043983828 + 1689700 0.0051682228 0.0018960825 0.0044398171 + 1689800 0.0049304983 0.0019966725 0.0044234021 + 1689900 0.005158526 0.0018383717 0.0043773337 + 1690000 0.0049949479 0.0021698854 0.0046283363 + 1690100 0.0046354043 0.0031514331 0.0054329212 + 1690200 0.0049276351 0.0028578185 0.0052831389 + 1690300 0.0050069607 0.0025875588 0.0050519223 + 1690400 0.0047365309 0.0025075357 0.004838797 + 1690500 0.0037630878 0.0024350151 0.0042871599 + 1690600 0.0045872131 0.0019578405 0.0042156095 + 1690700 0.0048813653 0.0021953555 0.0045979025 + 1690800 0.0041415209 0.0025141611 0.0045525659 + 1690900 0.0044696141 0.0023942639 0.0045941521 + 1691000 0.0056572446 0.0021756034 0.0049600285 + 1691100 0.0058266755 0.0022201025 0.0050879193 + 1691200 0.0044476272 0.0027759971 0.0049650636 + 1691300 0.0049278874 0.0024873101 0.0049127547 + 1691400 0.0058763902 0.0021191849 0.0050114707 + 1691500 0.0067004195 0.0023270967 0.0056249594 + 1691600 0.0061361219 0.0023605488 0.0053806713 + 1691700 0.0050870456 0.0023223018 0.004826082 + 1691800 0.0033801789 0.0023251286 0.0039888104 + 1691900 0.0034618409 0.0022333275 0.0039372023 + 1692000 0.0052712328 0.0020088894 0.0046033243 + 1692100 0.0059036477 0.0022171935 0.0051228951 + 1692200 0.0055530562 0.0024232732 0.0051564181 + 1692300 0.0058564598 0.0022826423 0.0051651186 + 1692400 0.0037755082 0.0020210377 0.0038792956 + 1692500 0.0052610567 0.0018548199 0.0044442462 + 1692600 0.0052613525 0.0021471481 0.00473672 + 1692700 0.0042279636 0.0024295043 0.0045104552 + 1692800 0.005643333 0.0023774779 0.0051550559 + 1692900 0.0049733984 0.0020458491 0.0044936936 + 1693000 0.0042226196 0.001990415 0.0040687356 + 1693100 0.0039577414 0.0019044884 0.0038524393 + 1693200 0.0046929889 0.0021724697 0.0044823002 + 1693300 0.0041046759 0.0022490669 0.0042693371 + 1693400 0.0048665525 0.002265257 0.0046605133 + 1693500 0.0065438573 0.0026435769 0.0058643817 + 1693600 0.004706746 0.0028577945 0.005174396 + 1693700 0.0050037331 0.0028921999 0.0053549748 + 1693800 0.0030648437 0.003280814 0.0047892918 + 1693900 0.0055577253 0.0028791117 0.0056145546 + 1694000 0.0053553139 0.0023924481 0.0050282666 + 1694100 0.0059621076 0.0023868327 0.0053213076 + 1694200 0.0046620923 0.0025646853 0.0048593089 + 1694300 0.0039610244 0.0022463705 0.0041959372 + 1694400 0.0047666857 0.0021612589 0.0045073621 + 1694500 0.0046015337 0.0020646855 0.0043295029 + 1694600 0.0066090269 0.0019120672 0.0051649477 + 1694700 0.0044822576 0.002264004 0.0044701152 + 1694800 0.0049069022 0.0022100667 0.0046251826 + 1694900 0.0049347657 0.0020863662 0.0045151962 + 1695000 0.0068638184 0.0019541598 0.0053324454 + 1695100 0.0045912109 0.0021151595 0.0043748961 + 1695200 0.0045865522 0.0022019492 0.0044593928 + 1695300 0.0061455752 0.0027120027 0.005736778 + 1695400 0.0061065704 0.0028371916 0.0058427692 + 1695500 0.0048899424 0.0026800725 0.005086841 + 1695600 0.0063326684 0.0026822491 0.0057991093 + 1695700 0.0062497879 0.0028592737 0.0059353412 + 1695800 0.00543492 0.0028128673 0.005487867 + 1695900 0.0067846997 0.0028772382 0.0062165826 + 1696000 0.0050755091 0.0028608453 0.0053589475 + 1696100 0.0063024638 0.0030227116 0.0061247055 + 1696200 0.0046773063 0.0030021956 0.0053043073 + 1696300 0.0045386006 0.00276819 0.0050020325 + 1696400 0.0044588795 0.0026306405 0.0048252453 + 1696500 0.0050428824 0.0027622029 0.0052442466 + 1696600 0.0045331693 0.002437122 0.0046682912 + 1696700 0.0041191378 0.003153731 0.0051811191 + 1696800 0.003790192 0.003478938 0.0053444231 + 1696900 0.0074946347 0.0031787544 0.0068675199 + 1697000 0.0053002535 0.0031406512 0.0057493698 + 1697100 0.0045657695 0.002872699 0.0051199137 + 1697200 0.0060227464 0.0025343595 0.00549868 + 1697300 0.0063164693 0.0025475248 0.0056564121 + 1697400 0.0056078822 0.0027558392 0.0055159688 + 1697500 0.0062467275 0.0031465532 0.0062211144 + 1697600 0.0047984031 0.002994675 0.005356389 + 1697700 0.0040674815 0.0022853538 0.0042873174 + 1697800 0.0044000689 0.0023943086 0.0045599676 + 1697900 0.0040461376 0.0024633528 0.0044548111 + 1698000 0.0042780589 0.0025779397 0.0046835468 + 1698100 0.0040982139 0.0029530235 0.0049701132 + 1698200 0.005179126 0.0028799004 0.0054290014 + 1698300 0.0061904816 0.0024054236 0.0054523012 + 1698400 0.0037483858 0.0022315175 0.0040764262 + 1698500 0.0043744499 0.0022750423 0.0044280919 + 1698600 0.0045943146 0.0022676178 0.004528882 + 1698700 0.0046645402 0.0024890384 0.0047848668 + 1698800 0.0055412028 0.0029328581 0.0056601688 + 1698900 0.0045247288 0.0033074187 0.0055344337 + 1699000 0.0071931793 0.0031680643 0.0067084572 + 1699100 0.0057400966 0.0024842645 0.0053094683 + 1699200 0.0050198865 0.0021812991 0.0046520245 + 1699300 0.0039768139 0.0020243712 0.0039817093 + 1699400 0.0040131263 0.0021110317 0.0040862423 + 1699500 0.0059980641 0.002305602 0.0052577742 + 1699600 0.0040698211 0.0030060368 0.0050091519 + 1699700 0.0048736651 0.0034222629 0.00582102 + 1699800 0.0037396603 0.0029263142 0.0047669282 + 1699900 0.005812955 0.0023645279 0.0052255916 + 1700000 0.0043845413 0.0024027115 0.0045607279 + 1700100 0.0058442843 0.0028842342 0.0057607178 + 1700200 0.0043183262 0.0030371006 0.0051625267 + 1700300 0.0048563337 0.0027832128 0.0051734395 + 1700400 0.0051907672 0.0023527638 0.0049075945 + 1700500 0.0061239688 0.0021440684 0.0051582093 + 1700600 0.0075516637 0.0020132237 0.0057300582 + 1700700 0.0060023891 0.0022469515 0.0052012524 + 1700800 0.0039046849 0.0025709881 0.0044928252 + 1700900 0.0058202189 0.0027260074 0.0055906464 + 1701000 0.0038186414 0.0026064183 0.0044859058 + 1701100 0.0055169896 0.0021622337 0.004877627 + 1701200 0.0035377113 0.0021944242 0.0039356414 + 1701300 0.0056848348 0.0021002236 0.0048982282 + 1701400 0.0039646886 0.002296089 0.0042474591 + 1701500 0.0062804092 0.0022082397 0.0052993786 + 1701600 0.0051691493 0.0025823267 0.0051265173 + 1701700 0.0046055456 0.0022893038 0.0045560957 + 1701800 0.0038991571 0.0021524593 0.0040715756 + 1701900 0.0057664311 0.0019572691 0.0047954344 + 1702000 0.0051982639 0.0019444218 0.0045029423 + 1702100 0.0074901503 0.0018939837 0.005580542 + 1702200 0.0045923713 0.0021526629 0.0044129706 + 1702300 0.0052590589 0.0020203443 0.0046087873 + 1702400 0.00562086 0.0019095756 0.0046760926 + 1702500 0.0045260931 0.002434388 0.0046620745 + 1702600 0.0049580746 0.0025288246 0.0049691269 + 1702700 0.0046608894 0.0023512482 0.0046452797 + 1702800 0.004232211 0.002031554 0.0041145953 + 1702900 0.0051420169 0.0021886814 0.0047195179 + 1703000 0.0048701075 0.0023115125 0.0047085185 + 1703100 0.0066663748 0.0018846152 0.0051657216 + 1703200 0.0058193063 0.0019368901 0.0048010799 + 1703300 0.0057523808 0.0020795274 0.0049107773 + 1703400 0.0038127113 0.0019419422 0.0038185111 + 1703500 0.0038297536 0.0021754131 0.0040603699 + 1703600 0.0047884726 0.0020231452 0.0043799716 + 1703700 0.0053417439 0.0016724836 0.0043016232 + 1703800 0.0055351552 0.0016088683 0.0043332024 + 1703900 0.0036108303 0.0022069815 0.003984187 + 1704000 0.0048132642 0.0027614978 0.0051305263 + 1704100 0.0049786669 0.0026363488 0.0050867864 + 1704200 0.0046169784 0.0021642682 0.0044366873 + 1704300 0.0045591769 0.0022268986 0.0044708684 + 1704400 0.0051917094 0.0019459154 0.0045012099 + 1704500 0.0057288018 0.0019151471 0.0047347918 + 1704600 0.0045614962 0.0023304544 0.0045755658 + 1704700 0.0063141938 0.0029081443 0.0060159116 + 1704800 0.0056709682 0.0027781829 0.0055693625 + 1704900 0.0064564287 0.0022907553 0.0054685289 + 1705000 0.0060661198 0.0018756588 0.0048613272 + 1705100 0.004523384 0.0023463366 0.0045726896 + 1705200 0.0055134655 0.0030393394 0.0057529982 + 1705300 0.0065298392 0.0032757044 0.0064896096 + 1705400 0.0064532296 0.0032297929 0.0064059918 + 1705500 0.0053057903 0.0029300504 0.0055414941 + 1705600 0.0040101676 0.0026020394 0.0045757938 + 1705700 0.0043889528 0.0024649928 0.0046251805 + 1705800 0.0054629294 0.0027865229 0.0054753085 + 1705900 0.0041038994 0.0028548707 0.0048747587 + 1706000 0.0054834713 0.002831437 0.0055303331 + 1706100 0.0061631691 0.0027932874 0.0058267222 + 1706200 0.0037654773 0.0028468871 0.0047002079 + 1706300 0.0058183111 0.0025206243 0.0053843243 + 1706400 0.0057390232 0.0022611407 0.0050858162 + 1706500 0.004448892 0.0024399848 0.0046296738 + 1706600 0.0053657894 0.0027618764 0.0054028509 + 1706700 0.0048799613 0.0026704158 0.0050722718 + 1706800 0.0042349506 0.0024490041 0.0045333938 + 1706900 0.0058377051 0.0024342326 0.0053074781 + 1707000 0.0056214367 0.0031205536 0.0058873545 + 1707100 0.0050421001 0.0028504566 0.0053321152 + 1707200 0.0063760843 0.0019474256 0.0050856546 + 1707300 0.0037013061 0.0021756931 0.0039974297 + 1707400 0.0042345312 0.0023778414 0.0044620248 + 1707500 0.0039682208 0.0029143143 0.004867423 + 1707600 0.0048770237 0.0029002257 0.0053006358 + 1707700 0.0062507511 0.0023030401 0.0053795816 + 1707800 0.0045440603 0.0023498187 0.0045863483 + 1707900 0.004203353 0.0025034626 0.0045723004 + 1708000 0.0054485601 0.0025294876 0.0052112008 + 1708100 0.0056778897 0.002889679 0.0056842653 + 1708200 0.00486668 0.0029723962 0.0053677152 + 1708300 0.0045578278 0.0031055638 0.0053488696 + 1708400 0.004834638 0.003271001 0.0056505494 + 1708500 0.0032618431 0.0035429708 0.0051484093 + 1708600 0.0047874808 0.0028477783 0.0052041165 + 1708700 0.0044189216 0.0028793893 0.0050543273 + 1708800 0.0063994629 0.0024695401 0.0056192757 + 1708900 0.0050542008 0.0022476358 0.0047352503 + 1709000 0.004981572 0.0020024182 0.0044542857 + 1709100 0.004380795 0.0019388329 0.0040950055 + 1709200 0.0051848657 0.0019921372 0.0045440632 + 1709300 0.0055768814 0.0019313221 0.0046761935 + 1709400 0.004979277 0.0019154694 0.0043662073 + 1709500 0.0043973499 0.0024717259 0.0046360466 + 1709600 0.0035456104 0.0026785732 0.0044236784 + 1709700 0.005811699 0.0027179228 0.0055783684 + 1709800 0.007121913 0.0026080058 0.0061133224 + 1709900 0.0060638604 0.0028350371 0.0058195934 + 1710000 0.0052678181 0.0025898001 0.0051825543 + 1710100 0.0041049129 0.0025065893 0.0045269761 + 1710200 0.0043330288 0.0024041512 0.0045368138 + 1710300 0.0062867594 0.0020655328 0.0051597972 + 1710400 0.0055314338 0.0024767251 0.0051992277 + 1710500 0.0063878448 0.0024929878 0.0056370052 + 1710600 0.0045406588 0.0025411819 0.0047760374 + 1710700 0.006297162 0.0022004628 0.0052998472 + 1710800 0.005283643 0.0018751683 0.0044757113 + 1710900 0.0051578629 0.0017091581 0.0042477937 + 1711000 0.0052006994 0.002173989 0.0047337082 + 1711100 0.0043173133 0.0025699813 0.0046949089 + 1711200 0.0040983822 0.0025260258 0.0045431983 + 1711300 0.0052746121 0.0022863144 0.0048824126 + 1711400 0.0054878368 0.0028984867 0.0055995314 + 1711500 0.0067796982 0.0024076926 0.0057445753 + 1711600 0.0046536889 0.0018240342 0.0041145217 + 1711700 0.0044821112 0.0020286266 0.0042346657 + 1711800 0.0046361385 0.0025561028 0.0048379522 + 1711900 0.0051071964 0.002365253 0.0048789512 + 1712000 0.0047836003 0.0027295539 0.0050839822 + 1712100 0.00450808 0.0027601316 0.0049789522 + 1712200 0.0048206304 0.0026220614 0.0049947155 + 1712300 0.0049373103 0.0025958148 0.0050258972 + 1712400 0.0054125974 0.0020513319 0.0047153447 + 1712500 0.0063145579 0.0015689169 0.0046768634 + 1712600 0.004602017 0.0017320941 0.0039971493 + 1712700 0.0052998147 0.0018798854 0.004488388 + 1712800 0.0048614561 0.0018325451 0.004225293 + 1712900 0.0052841559 0.0020508191 0.0046516146 + 1713000 0.0057652637 0.0021943842 0.005031975 + 1713100 0.006024923 0.002322297 0.0052876888 + 1713200 0.005376508 0.0026399715 0.0052862215 + 1713300 0.0065228323 0.0023875486 0.0055980051 + 1713400 0.0060933161 0.0025868367 0.0055858907 + 1713500 0.0044001372 0.0020899264 0.0042556189 + 1713600 0.0035216397 0.0020020822 0.0037353893 + 1713700 0.0046788741 0.0019875388 0.0042904221 + 1713800 0.0050208677 0.0023745141 0.0048457224 + 1713900 0.0052495855 0.0023949139 0.0049786943 + 1714000 0.0056364473 0.0023444906 0.0051186795 + 1714100 0.0049006202 0.0022546098 0.0046666338 + 1714200 0.0045867763 0.0019007925 0.0041583465 + 1714300 0.005763989 0.0021735831 0.0050105464 + 1714400 0.0045662585 0.0030313777 0.005278833 + 1714500 0.0051186681 0.0031132575 0.0056326019 + 1714600 0.0042558895 0.0031583369 0.0052530325 + 1714700 0.0057047354 0.0026772491 0.0054850485 + 1714800 0.0060437255 0.0025699737 0.0055446198 + 1714900 0.0055806561 0.0025590688 0.0053057979 + 1715000 0.0029840206 0.0027135554 0.004182253 + 1715100 0.0046986882 0.0023745359 0.0046871715 + 1715200 0.0046699587 0.0021566073 0.0044551025 + 1715300 0.0063129638 0.0023194822 0.005426644 + 1715400 0.0060508057 0.0032501938 0.0062283248 + 1715500 0.0048982439 0.0031362751 0.0055471295 + 1715600 0.0044264639 0.0026582882 0.0048369384 + 1715700 0.0052883932 0.0024098368 0.0050127178 + 1715800 0.0050448903 0.002322774 0.0048058059 + 1715900 0.0051867992 0.0024794327 0.0050323104 + 1716000 0.00560592 0.0026269281 0.0053860919 + 1716100 0.0043141282 0.0026639167 0.0047872767 + 1716200 0.0045769226 0.0027645745 0.0050172785 + 1716300 0.0065411569 0.0027867164 0.0060061921 + 1716400 0.0070310857 0.0030806852 0.0065412978 + 1716500 0.0052503854 0.0029026902 0.0054868642 + 1716600 0.0073343976 0.0028403264 0.0064502252 + 1716700 0.0060832658 0.0028613958 0.0058555031 + 1716800 0.0054910473 0.0026808131 0.0053834379 + 1716900 0.0055143214 0.0023098799 0.00502396 + 1717000 0.0053015252 0.0023394848 0.0049488292 + 1717100 0.0063310111 0.0024857154 0.0056017599 + 1717200 0.0063915913 0.0019914027 0.0051372641 + 1717300 0.0060075176 0.001826661 0.004783486 + 1717400 0.0043173293 0.0021524442 0.0042773797 + 1717500 0.0063110656 0.0019123339 0.0050185615 + 1717600 0.003714028 0.0022806782 0.0041086764 + 1717700 0.005229619 0.0022376 0.0048115531 + 1717800 0.0042302071 0.0019218967 0.0040039517 + 1717900 0.00523954 0.0021312324 0.0047100685 + 1718000 0.0042949752 0.0026912957 0.0048052288 + 1718100 0.0050237827 0.0029157174 0.0053883604 + 1718200 0.0047100714 0.0028888956 0.0052071339 + 1718300 0.004921693 0.0030119914 0.0054343871 + 1718400 0.0064274601 0.0028578029 0.0060213184 + 1718500 0.0060473624 0.0028072471 0.0057836833 + 1718600 0.005322243 0.0028398995 0.0054594409 + 1718700 0.0051491598 0.0024344432 0.0049687953 + 1718800 0.0046066858 0.0024387693 0.0047061225 + 1718900 0.004317617 0.0023245261 0.0044496032 + 1719000 0.0046023531 0.0020304826 0.0042957032 + 1719100 0.0044009245 0.0018714929 0.0040375729 + 1719200 0.0054529023 0.0020497318 0.0047335821 + 1719300 0.0053240309 0.0019026124 0.0045230339 + 1719400 0.0057705078 0.00208724 0.0049274118 + 1719500 0.0034143162 0.0021937311 0.0038742149 + 1719600 0.0045486215 0.0021857068 0.0044244814 + 1719700 0.0042197367 0.0019289062 0.0040058078 + 1719800 0.0049475497 0.002148299 0.0045834211 + 1719900 0.0050196127 0.0029051055 0.0053756962 + 1720000 0.0031861708 0.0029043778 0.0044725712 + 1720100 0.0056102436 0.0023391481 0.0051004399 + 1720200 0.0051394595 0.0023564239 0.0048860016 + 1720300 0.0046551852 0.0022145993 0.0045058233 + 1720400 0.0041847096 0.0022112213 0.004270883 + 1720500 0.0053792014 0.001572803 0.0042203786 + 1720600 0.0044692687 0.0018748164 0.0040745345 + 1720700 0.0046099398 0.0021347627 0.0044037175 + 1720800 0.0058001166 0.0015841667 0.0044389116 + 1720900 0.0051775216 0.0015937382 0.0041420496 + 1721000 0.0034829949 0.0018005603 0.0035148468 + 1721100 0.0052871982 0.0018043927 0.0044066856 + 1721200 0.006733601 0.0022294213 0.0055436155 + 1721300 0.0064700555 0.0030380252 0.0062225056 + 1721400 0.0047180721 0.0029784584 0.0053006345 + 1721500 0.0076652437 0.0019180907 0.0056908279 + 1721600 0.0043591984 0.0015023846 0.0036479275 + 1721700 0.0040924691 0.0013835104 0.0033977726 + 1721800 0.0069590769 0.0016430724 0.005068243 + 1721900 0.005888223 0.0024684194 0.0053665292 + 1722000 0.0060792815 0.0031727526 0.006164899 + 1722100 0.0053337144 0.0032363978 0.0058615853 + 1722200 0.0062244435 0.0026659275 0.0057295208 + 1722300 0.0066817233 0.0021012552 0.0053899159 + 1722400 0.0058894697 0.0020705418 0.0049692652 + 1722500 0.0060091617 0.0022747576 0.0052323918 + 1722600 0.0055482894 0.002422441 0.0051532397 + 1722700 0.0058563119 0.0029568822 0.0058392858 + 1722800 0.0066227587 0.0030549084 0.0063145474 + 1722900 0.0048284115 0.0029260073 0.0053024911 + 1723000 0.0039981336 0.0023979103 0.0043657417 + 1723100 0.0039827832 0.0018998726 0.0038601487 + 1723200 0.0049538319 0.0019711155 0.0044093296 + 1723300 0.0055817528 0.0019876434 0.0047349123 + 1723400 0.0043783572 0.0021933487 0.0043483214 + 1723500 0.0056451818 0.0025688522 0.0053473401 + 1723600 0.0054384757 0.0027440816 0.0054208313 + 1723700 0.0042192451 0.002427783 0.0045044427 + 1723800 0.0038456054 0.0020218435 0.0039146024 + 1723900 0.0061537909 0.0016705805 0.0046993994 + 1724000 0.0045234255 0.0020633598 0.0042897333 + 1724100 0.0048428337 0.0021404811 0.0045240633 + 1724200 0.0052521743 0.0023169849 0.0049020394 + 1724300 0.0050320999 0.0022964643 0.004773201 + 1724400 0.0059580847 0.0024015023 0.0053339971 + 1724500 0.0057872266 0.0023950672 0.0052434678 + 1724600 0.0050606072 0.0022167972 0.0047075648 + 1724700 0.0049062328 0.0022146898 0.0046294762 + 1724800 0.0049686435 0.0024106913 0.0048561955 + 1724900 0.0060563298 0.0024966263 0.0054774761 + 1725000 0.0038113479 0.002464901 0.0043407988 + 1725100 0.0045482817 0.0028201911 0.0050587985 + 1725200 0.0052076841 0.0029658556 0.0055290127 + 1725300 0.0041491695 0.0026856708 0.0047278401 + 1725400 0.0041076971 0.0027076816 0.0047294388 + 1725500 0.0037062003 0.0030584796 0.0048826251 + 1725600 0.0053074667 0.0026501246 0.0052623934 + 1725700 0.0056133252 0.0023024226 0.0050652311 + 1725800 0.0043313045 0.002469979 0.0046017929 + 1725900 0.0054246761 0.0027169335 0.0053868913 + 1726000 0.0043837252 0.0024208172 0.0045784319 + 1726100 0.0045089484 0.0022415402 0.0044607882 + 1726200 0.0042631905 0.0025925055 0.0046907946 + 1726300 0.0051095727 0.0024154812 0.004930349 + 1726400 0.0057676911 0.0020817917 0.0049205772 + 1726500 0.0043065966 0.002364921 0.0044845741 + 1726600 0.0053119615 0.0026665319 0.0052810129 + 1726700 0.0042699524 0.0027657891 0.0048674063 + 1726800 0.0053099412 0.0028063367 0.0054198233 + 1726900 0.0064073753 0.0026696871 0.0058233172 + 1727000 0.0072150546 0.0023502149 0.0059013745 + 1727100 0.0038983305 0.0025433124 0.0044620219 + 1727200 0.006077243 0.0025276981 0.0055188412 + 1727300 0.0047260409 0.0023199206 0.0046460188 + 1727400 0.0044766195 0.0026016189 0.0048049551 + 1727500 0.0053718047 0.0025990809 0.0052430161 + 1727600 0.0041486924 0.0028502005 0.0048921351 + 1727700 0.0047980587 0.0023080979 0.0046696424 + 1727800 0.0056871021 0.0028268952 0.0056260157 + 1727900 0.0050535172 0.0028632376 0.0053505156 + 1728000 0.0046062398 0.0025663411 0.0048334747 + 1728100 0.0060639525 0.0018200523 0.0048046539 + 1728200 0.0055950405 0.0018252946 0.0045791036 + 1728300 0.0049891693 0.0024725115 0.0049281183 + 1728400 0.0035810118 0.0029311959 0.0046937251 + 1728500 0.0050982016 0.0031985656 0.0057078367 + 1728600 0.0048283847 0.0027699274 0.005146398 + 1728700 0.0068009511 0.0022593819 0.005606725 + 1728800 0.0056008109 0.0025192903 0.0052759394 + 1728900 0.004340848 0.0030637037 0.0052002148 + 1729000 0.0062897524 0.0030514447 0.0061471822 + 1729100 0.0066984596 0.0033338893 0.0066307874 + 1729200 0.0058507682 0.0030451916 0.0059248666 + 1729300 0.0063427553 0.0028599179 0.0059817428 + 1729400 0.0044810845 0.0027491532 0.0049546869 + 1729500 0.0053676808 0.0026872247 0.0053291301 + 1729600 0.0056848847 0.0024208062 0.0052188354 + 1729700 0.0048245478 0.0026170187 0.0049916008 + 1729800 0.0047839915 0.0024735474 0.0048281683 + 1729900 0.005369634 0.0022589357 0.0049018024 + 1730000 0.0054132155 0.0026537454 0.0053180624 + 1730100 0.0067092891 0.00267764 0.0059798683 + 1730200 0.0052392966 0.0022639266 0.004842643 + 1730300 0.0070786864 0.0022898876 0.0057739286 + 1730400 0.0053631597 0.0023351666 0.0049748468 + 1730500 0.0051859122 0.0023506696 0.0049031107 + 1730600 0.0059060715 0.0023268948 0.0052337893 + 1730700 0.0046630515 0.0026580973 0.004953193 + 1730800 0.0055499333 0.0024273991 0.0051590069 + 1730900 0.0065771148 0.0020621896 0.0052993632 + 1731000 0.0062080359 0.002153805 0.0052093227 + 1731100 0.0047950708 0.0021417547 0.0045018286 + 1731200 0.0048497873 0.0020427185 0.0044297232 + 1731300 0.0039781935 0.0018545331 0.0038125502 + 1731400 0.0045776067 0.0021795081 0.0044325489 + 1731500 0.0046391258 0.0022278836 0.0045112033 + 1731600 0.0050808086 0.0023625847 0.0048632951 + 1731700 0.0055104565 0.0020754336 0.0047876115 + 1731800 0.0044293541 0.002198454 0.0043785267 + 1731900 0.0049140692 0.0025269286 0.004945572 + 1732000 0.00490804 0.0026160225 0.0050316984 + 1732100 0.0057014812 0.0029634804 0.0057696782 + 1732200 0.0044007956 0.002791257 0.0049572735 + 1732300 0.0045349131 0.0024191716 0.0046511991 + 1732400 0.0045752525 0.0020678262 0.0043197083 + 1732500 0.0048191459 0.0019219057 0.0042938291 + 1732600 0.0044850116 0.0021579714 0.0043654381 + 1732700 0.0056861348 0.0023623702 0.0051610147 + 1732800 0.0058499013 0.0024021711 0.0052814194 + 1732900 0.0044577069 0.0026117377 0.0048057653 + 1733000 0.0058006109 0.0024127759 0.0052677641 + 1733100 0.0057115163 0.0026029781 0.005414115 + 1733200 0.0063385098 0.0029817493 0.0061014845 + 1733300 0.0042983826 0.0034761469 0.0055917571 + 1733400 0.0046202366 0.0030800108 0.0053540335 + 1733500 0.0036891307 0.0029338799 0.0047496239 + 1733600 0.0051229184 0.0026892348 0.0052106711 + 1733700 0.0044154352 0.0025617963 0.0047350183 + 1733800 0.0063241233 0.0027785077 0.0058911621 + 1733900 0.00695156 0.0035955266 0.0070169975 + 1734000 0.0041615833 0.0040419459 0.0060902252 + 1734100 0.0038936387 0.0034600406 0.0053764409 + 1734200 0.0051605063 0.0031800992 0.0057200359 + 1734300 0.0052366256 0.0030672198 0.0056446215 + 1734400 0.004005989 0.0028126786 0.0047843762 + 1734500 0.0048799029 0.0027625902 0.0051644175 + 1734600 0.0047937047 0.0025813175 0.004940719 + 1734700 0.0032032412 0.00252313 0.0040997253 + 1734800 0.0062017067 0.0021254437 0.0051778462 + 1734900 0.0051053319 0.0022121972 0.0047249778 + 1735000 0.0048231672 0.0024125499 0.0047864525 + 1735100 0.0059116522 0.0024619012 0.0053715425 + 1735200 0.0062627461 0.0026025598 0.0056850051 + 1735300 0.0054669841 0.0023448144 0.0050355956 + 1735400 0.0041177792 0.0022470984 0.0042738178 + 1735500 0.0045989274 0.0023512596 0.0046147942 + 1735600 0.0055093436 0.0027905061 0.0055021362 + 1735700 0.0057805058 0.002543616 0.0053887086 + 1735800 0.0057664189 0.0025011423 0.0053393016 + 1735900 0.0039254981 0.0028128323 0.0047449134 + 1736000 0.0057750142 0.0027684877 0.0056108775 + 1736100 0.0057675921 0.0026827251 0.0055214618 + 1736200 0.0048528378 0.0029633434 0.0053518495 + 1736300 0.0053781396 0.002940768 0.0055878211 + 1736400 0.0044925727 0.0029930026 0.0052041907 + 1736500 0.0051701291 0.0027590954 0.0053037683 + 1736600 0.0038588675 0.0026475135 0.0045467998 + 1736700 0.004522238 0.002638509 0.004864298 + 1736800 0.0064431004 0.0029030268 0.0060742402 + 1736900 0.0050815426 0.003294226 0.0057952977 + 1737000 0.0053920476 0.0032753809 0.0059292793 + 1737100 0.0052459742 0.0024737034 0.0050557064 + 1737200 0.0063836724 0.0022389735 0.0053809373 + 1737300 0.0051639744 0.0021257583 0.0046674019 + 1737400 0.0054670811 0.0017755298 0.0044663588 + 1737500 0.0057685714 0.002231081 0.0050702998 + 1737600 0.0046858408 0.0029350811 0.0052413933 + 1737700 0.0058984801 0.0028674427 0.0057706009 + 1737800 0.0043988792 0.0023111859 0.0044762593 + 1737900 0.0044264889 0.0020485231 0.0042271856 + 1738000 0.0051393712 0.0017608114 0.0042903456 + 1738100 0.0045917014 0.0022926984 0.0045526764 + 1738200 0.004479761 0.0023728341 0.0045777164 + 1738300 0.005368063 0.0021680184 0.0048101119 + 1738400 0.0057442615 0.0018745348 0.0047017885 + 1738500 0.0046054117 0.0018873064 0.0041540325 + 1738600 0.0033398128 0.0020601099 0.003703924 + 1738700 0.0051835482 0.0017944772 0.0043457548 + 1738800 0.0053885307 0.0017879887 0.0044401562 + 1738900 0.0040761492 0.0022166725 0.0042229021 + 1739000 0.0069041919 0.0022615675 0.0056597244 + 1739100 0.0051931889 0.0023298349 0.0048858576 + 1739200 0.0055963117 0.0026465353 0.0054009699 + 1739300 0.0056318977 0.0026716832 0.0054436328 + 1739400 0.0055306769 0.0029035576 0.0056256876 + 1739500 0.006867315 0.0029206439 0.0063006505 + 1739600 0.0053242811 0.0031762226 0.0057967672 + 1739700 0.0048751434 0.0029073433 0.0053068279 + 1739800 0.0048751874 0.0026590832 0.0050585895 + 1739900 0.0057703437 0.0021867227 0.0050268138 + 1740000 0.0042725377 0.0019134551 0.0040163448 + 1740100 0.0041024861 0.001898583 0.0039177754 + 1740200 0.0051091329 0.0021492398 0.0046638912 + 1740300 0.0052013669 0.0021924903 0.0047525381 + 1740400 0.0062141991 0.0019572732 0.0050158243 + 1740500 0.0057470593 0.00227032 0.0050989507 + 1740600 0.0047373262 0.0021800544 0.0045117071 + 1740700 0.005092345 0.0020785724 0.0045849609 + 1740800 0.0039890719 0.0020188979 0.0039822692 + 1740900 0.005393016 0.0021570442 0.0048114193 + 1741000 0.0072792977 0.0020286493 0.0056114286 + 1741100 0.0056773867 0.0023842726 0.0051786114 + 1741200 0.0054747849 0.0023036758 0.0049982965 + 1741300 0.0050466157 0.0017955336 0.0042794148 + 1741400 0.0030123306 0.0019412241 0.0034238556 + 1741500 0.0046932208 0.0024352894 0.0047452341 + 1741600 0.0055899586 0.0028532974 0.0056046051 + 1741700 0.0054984135 0.0024685359 0.0051747863 + 1741800 0.0052463227 0.0024792121 0.0050613866 + 1741900 0.0060522107 0.0023063321 0.0052851545 + 1742000 0.0050315299 0.002062553 0.0045390091 + 1742100 0.0046617886 0.0024981284 0.0047926025 + 1742200 0.0055813063 0.0024535839 0.0052006331 + 1742300 0.0064262397 0.0027195953 0.0058825101 + 1742400 0.0059582045 0.0030589613 0.0059915151 + 1742500 0.0054657407 0.0027300688 0.005420238 + 1742600 0.0058010795 0.002480272 0.0053354908 + 1742700 0.0054963929 0.0028385366 0.0055437925 + 1742800 0.0048028497 0.0027724027 0.0051363053 + 1742900 0.0056208353 0.0025022304 0.0052687353 + 1743000 0.004246989 0.0026303846 0.0047206995 + 1743100 0.0062022262 0.0024694876 0.0055221458 + 1743200 0.0058462665 0.0023832838 0.0052607431 + 1743300 0.0053549727 0.0021810879 0.0048167385 + 1743400 0.0047035584 0.0023735358 0.0046885684 + 1743500 0.0034134059 0.002592851 0.0042728867 + 1743600 0.0051712008 0.0025261332 0.0050713336 + 1743700 0.0044363511 0.0026329242 0.0048164408 + 1743800 0.0053060297 0.0026032613 0.0052148228 + 1743900 0.0054716927 0.002332985 0.0050260837 + 1744000 0.0063445202 0.0024138597 0.0055365532 + 1744100 0.0043863175 0.0028443544 0.005003245 + 1744200 0.0045464123 0.0027069968 0.0049446842 + 1744300 0.005951118 0.0022016178 0.0051306837 + 1744400 0.0050947173 0.001724297 0.0042318531 + 1744500 0.0048014688 0.0021897829 0.0045530058 + 1744600 0.00487067 0.0022233159 0.0046205988 + 1744700 0.0048236901 0.0019837245 0.0043578845 + 1744800 0.004999187 0.0017956371 0.0042561744 + 1744900 0.0035831861 0.0020680084 0.0038316078 + 1745000 0.0042314275 0.0022480265 0.0043306823 + 1745100 0.0042478908 0.0025489479 0.0046397067 + 1745200 0.0052483172 0.0024313491 0.0050145052 + 1745300 0.0045378881 0.0020740335 0.0043075253 + 1745400 0.0043915261 0.0023843865 0.0045458408 + 1745500 0.0053291165 0.0026037176 0.0052266421 + 1745600 0.0054009538 0.0028146595 0.0054729414 + 1745700 0.0068645466 0.002672489 0.0060511331 + 1745800 0.0056311371 0.0031068617 0.005878437 + 1745900 0.0042973983 0.002653416 0.0047685417 + 1746000 0.0046242551 0.0023277919 0.0046037925 + 1746100 0.0044363567 0.0022964124 0.0044799317 + 1746200 0.0060753117 0.0022112382 0.0052014307 + 1746300 0.0050968031 0.0022395165 0.0047480993 + 1746400 0.0064975577 0.0025083368 0.0057063535 + 1746500 0.0039253878 0.0030012192 0.004933246 + 1746600 0.0045624115 0.0024381548 0.0046837167 + 1746700 0.0050428968 0.002286799 0.0047688498 + 1746800 0.0053986739 0.0028348423 0.0054920021 + 1746900 0.0053338222 0.0031627113 0.0057879519 + 1747000 0.004808345 0.0029430475 0.0053096548 + 1747100 0.0049854319 0.0026326346 0.0050864018 + 1747200 0.0043278169 0.0026074625 0.0047375598 + 1747300 0.0058127942 0.0021512535 0.0050122382 + 1747400 0.0050299536 0.0019513494 0.0044270297 + 1747500 0.0033296707 0.0018749604 0.0035137826 + 1747600 0.0050821451 0.0019248895 0.0044262578 + 1747700 0.003142756 0.0021924738 0.0037392991 + 1747800 0.0049419141 0.0024137461 0.0048460944 + 1747900 0.0055905406 0.0023531513 0.0051047455 + 1748000 0.0046477209 0.002188752 0.0044763022 + 1748100 0.0040046171 0.0022227146 0.004193737 + 1748200 0.0040960373 0.002194631 0.0042106494 + 1748300 0.005282793 0.0017988512 0.0043989758 + 1748400 0.0043921949 0.0020864533 0.0042482368 + 1748500 0.0042543171 0.0022500011 0.0043439228 + 1748600 0.0066522817 0.0020993677 0.0053735376 + 1748700 0.0056817628 0.0022326134 0.0050291061 + 1748800 0.0050795857 0.0021900957 0.0046902043 + 1748900 0.0047185086 0.0023217423 0.0046441332 + 1749000 0.0050972477 0.0025653027 0.0050741044 + 1749100 0.0050868432 0.0026435291 0.0051472097 + 1749200 0.0051871881 0.0023108891 0.0048639582 + 1749300 0.0064264388 0.0017740441 0.004937057 + 1749400 0.0063055008 0.0018011861 0.0049046748 + 1749500 0.0069004729 0.002116499 0.0055128255 + 1749600 0.006438433 0.0026964641 0.0058653803 + 1749700 0.0049059039 0.0030643461 0.0054789707 + 1749800 0.0053504113 0.0031932531 0.0058266587 + 1749900 0.006567927 0.0027408992 0.0059735508 + 1750000 0.0047004473 0.0026999458 0.0050134472 + 1750100 0.0045194218 0.0030544121 0.005278815 + 1750200 0.0046574412 0.0031933932 0.0054857275 + 1750300 0.0050384001 0.0026517994 0.0051316369 + 1750400 0.0045103148 0.0024982068 0.0047181274 + 1750500 0.0054787126 0.0022292761 0.0049258299 + 1750600 0.0053521577 0.0022898362 0.0049241013 + 1750700 0.0051119653 0.0021675508 0.0046835962 + 1750800 0.0047665826 0.0026361204 0.0049821727 + 1750900 0.004580188 0.0028859618 0.0051402731 + 1751000 0.0042656883 0.0029205065 0.005020025 + 1751100 0.0056277709 0.0023845488 0.0051544673 + 1751200 0.0045446094 0.0025149174 0.0047517173 + 1751300 0.0050549662 0.0026517505 0.0051397417 + 1751400 0.0050120001 0.0026755338 0.0051423776 + 1751500 0.0062114627 0.0020897298 0.0051469341 + 1751600 0.004914896 0.0017117639 0.0041308143 + 1751700 0.0055210158 0.0018511901 0.004568565 + 1751800 0.0050834351 0.0018927326 0.0043947358 + 1751900 0.0039311635 0.0021238117 0.0040586813 + 1752000 0.0049438864 0.0017887845 0.0042221036 + 1752100 0.0032405662 0.0018654634 0.0034604295 + 1752200 0.0044732747 0.0014953347 0.0036970245 + 1752300 0.0045395614 0.0019769274 0.0042112428 + 1752400 0.0028218285 0.0022511914 0.0036400601 + 1752500 0.0044655688 0.001972408 0.0041703051 + 1752600 0.0039814906 0.0020485341 0.004008174 + 1752700 0.0046969606 0.0024785517 0.004790337 + 1752800 0.0048822206 0.0028935692 0.0052965372 + 1752900 0.0047247037 0.0032678542 0.0055932943 + 1753000 0.0042201198 0.003098704 0.0051757942 + 1753100 0.0063567307 0.002653466 0.0057821694 + 1753200 0.0045079292 0.0025000387 0.0047187851 + 1753300 0.0052004298 0.0024806622 0.0050402487 + 1753400 0.0046461842 0.0027618625 0.0050486563 + 1753500 0.0053771996 0.002723434 0.0053700245 + 1753600 0.0055640019 0.0029344634 0.0056729956 + 1753700 0.005369234 0.0024611314 0.0051038013 + 1753800 0.005321373 0.0021165929 0.0047357061 + 1753900 0.0054002143 0.0023984184 0.0050563364 + 1754000 0.0053405146 0.0022725361 0.0049010706 + 1754100 0.0053506228 0.0026329247 0.0052664343 + 1754200 0.0049644493 0.0029107086 0.0053541485 + 1754300 0.0072825315 0.0022295067 0.0058138777 + 1754400 0.0046835638 0.0025033155 0.0048085071 + 1754500 0.0036046763 0.0027013682 0.0044755448 + 1754600 0.0041478466 0.0025137778 0.004555296 + 1754700 0.0034703992 0.0023181957 0.0040262828 + 1754800 0.0047454946 0.002392268 0.0047279412 + 1754900 0.0051593718 0.0020220853 0.0045614636 + 1755000 0.0040566811 0.0019432997 0.0039399474 + 1755100 0.0036832981 0.0023505985 0.0041634718 + 1755200 0.0041252032 0.0022304634 0.0042608368 + 1755300 0.0051401338 0.0023037253 0.004833635 + 1755400 0.0051469098 0.0024113026 0.0049445473 + 1755500 0.0064663223 0.0022295903 0.0054122332 + 1755600 0.0060200869 0.0023455369 0.0053085484 + 1755700 0.0055601216 0.0024580054 0.0051946277 + 1755800 0.0054160084 0.0025995885 0.0052652802 + 1755900 0.0057054685 0.0032258196 0.0060339799 + 1756000 0.0050384958 0.0030416904 0.005521575 + 1756100 0.0064460307 0.0026068692 0.0057795249 + 1756200 0.0042743526 0.0028990377 0.0050028207 + 1756300 0.0043740773 0.0025659955 0.0047188617 + 1756400 0.0061618572 0.0023346896 0.0053674787 + 1756500 0.0046699095 0.0025047206 0.0048031917 + 1756600 0.0044528692 0.0024633848 0.0046550314 + 1756700 0.0046800795 0.0025193571 0.0048228337 + 1756800 0.0049480248 0.0020294093 0.0044647653 + 1756900 0.0050684272 0.0019403402 0.0044349568 + 1757000 0.0050713927 0.0023070178 0.0048030939 + 1757100 0.0055811681 0.0025373925 0.0052843737 + 1757200 0.0070233652 0.0022706571 0.0057274696 + 1757300 0.0060053821 0.0022451238 0.0052008978 + 1757400 0.0037923252 0.0025159235 0.0043824585 + 1757500 0.0042712408 0.0023591884 0.0044614398 + 1757600 0.0061874432 0.001672791 0.0047181732 + 1757700 0.0036913929 0.0015459509 0.0033628083 + 1757800 0.0029228911 0.0015724136 0.0030110241 + 1757900 0.0054732729 0.0015790886 0.0042729651 + 1758000 0.0051505571 0.001693166 0.0042282058 + 1758100 0.0039613463 0.0021498169 0.004099542 + 1758200 0.0044882075 0.0020920253 0.0043010649 + 1758300 0.0039216968 0.0021544446 0.0040846547 + 1758400 0.0040729263 0.0024950147 0.0044996581 + 1758500 0.0046871637 0.0025124835 0.0048194469 + 1758600 0.0033049105 0.0026269344 0.00425357 + 1758700 0.005944781 0.0018212274 0.0047471743 + 1758800 0.0059269598 0.0022017409 0.0051189165 + 1758900 0.0038105644 0.0027549024 0.0046304146 + 1759000 0.0063515853 0.0024268464 0.0055530173 + 1759100 0.0075137089 0.0023561528 0.0060543064 + 1759200 0.004955617 0.002454792 0.0048938847 + 1759300 0.0040819976 0.0024533724 0.0044624806 + 1759400 0.0054967202 0.0024749852 0.0051804021 + 1759500 0.0052375042 0.0026054462 0.0051832803 + 1759600 0.0051787794 0.0026267342 0.0051756647 + 1759700 0.0047241651 0.0027049664 0.0050301414 + 1759800 0.0042256753 0.0024974489 0.0045772735 + 1759900 0.0053545264 0.0023130628 0.0049484938 + 1760000 0.0045371057 0.0021044397 0.0043375464 + 1760100 0.0058708692 0.0018275733 0.0047171417 + 1760200 0.0049432998 0.0020164781 0.0044495084 + 1760300 0.005098235 0.0022965971 0.0048058846 + 1760400 0.0052112863 0.0022551184 0.0048200484 + 1760500 0.0046281779 0.0030128816 0.0052908129 + 1760600 0.0050295467 0.0033600964 0.0058355764 + 1760700 0.0051623181 0.0031915651 0.0057323935 + 1760800 0.0058188278 0.0032168985 0.0060808528 + 1760900 0.0062977821 0.0031408311 0.0062405207 + 1761000 0.00422701 0.0031908397 0.0052713211 + 1761100 0.0046367969 0.0029861078 0.0052682812 + 1761200 0.0062811768 0.0025988762 0.0056903929 + 1761300 0.0061118847 0.0024525882 0.0054607815 + 1761400 0.0050238429 0.0023429421 0.0048156148 + 1761500 0.0053899847 0.002376252 0.0050291351 + 1761600 0.0060125414 0.0023916819 0.0053509796 + 1761700 0.0054018546 0.0021545491 0.0048132744 + 1761800 0.0045294624 0.0024458619 0.0046752067 + 1761900 0.005624374 0.0027897247 0.0055579712 + 1762000 0.005834977 0.0028015735 0.0056734763 + 1762100 0.0057335507 0.0026593649 0.0054813469 + 1762200 0.0047114546 0.0028165613 0.0051354803 + 1762300 0.0059473398 0.0029636195 0.0058908258 + 1762400 0.0042657685 0.0029506188 0.0050501767 + 1762500 0.0051752849 0.00256444 0.0051116505 + 1762600 0.0038390399 0.0024854031 0.0043749305 + 1762700 0.0047251022 0.0023227533 0.0046483895 + 1762800 0.0036082298 0.0025819829 0.0043579085 + 1762900 0.0062208891 0.002803894 0.0058657378 + 1763000 0.004668174 0.0027365137 0.0050341306 + 1763100 0.0047268707 0.0027806895 0.0051071961 + 1763200 0.0049680651 0.0025420326 0.0049872522 + 1763300 0.0033834284 0.002560723 0.0042260041 + 1763400 0.0046479766 0.0026313033 0.0049189792 + 1763500 0.0046283393 0.0024873487 0.0047653595 + 1763600 0.0043134868 0.0024691937 0.0045922379 + 1763700 0.0036518016 0.0026640547 0.0044614258 + 1763800 0.0045016499 0.0023901206 0.0046057764 + 1763900 0.0034139343 0.0024598745 0.0041401702 + 1764000 0.0051095608 0.0025838779 0.0050987399 + 1764100 0.0059879693 0.0032477739 0.0061949776 + 1764200 0.0038739884 0.0031753722 0.0050821008 + 1764300 0.0045022117 0.002956489 0.0051724213 + 1764400 0.0049689066 0.0028721882 0.0053178219 + 1764500 0.004725437 0.0029149328 0.0052407338 + 1764600 0.0044185456 0.0025944638 0.0047692167 + 1764700 0.0043172934 0.00253465 0.0046595679 + 1764800 0.0062150719 0.0022688738 0.0053278545 + 1764900 0.0048847625 0.0028064925 0.0052107115 + 1765000 0.0042511322 0.0033522905 0.0054446447 + 1765100 0.0051236373 0.0031647562 0.0056865464 + 1765200 0.0042022183 0.0027575327 0.0048258121 + 1765300 0.0035379434 0.002656183 0.0043975146 + 1765400 0.00501983 0.0026551129 0.0051258105 + 1765500 0.0049277529 0.0023778612 0.0048032396 + 1765600 0.0032482655 0.0028854581 0.0044842138 + 1765700 0.0037625191 0.0026790169 0.0045308818 + 1765800 0.0032768664 0.0022626258 0.0038754584 + 1765900 0.0047176096 0.0021862251 0.0045081735 + 1766000 0.0057603886 0.0024699226 0.0053051139 + 1766100 0.0064225896 0.002793772 0.0059548903 + 1766200 0.0047063355 0.0023876736 0.0047040731 + 1766300 0.0054504107 0.0023765764 0.0050592005 + 1766400 0.0039914591 0.0024297976 0.0043943439 + 1766500 0.0041184626 0.0021772636 0.0042043194 + 1766600 0.0050240567 0.0019588307 0.0044316086 + 1766700 0.0054256421 0.0017246903 0.0043951236 + 1766800 0.0050071608 0.0017291922 0.0041936541 + 1766900 0.005745941 0.0020018055 0.0048298858 + 1767000 0.0045803157 0.0022706831 0.0045250572 + 1767100 0.0050169129 0.0023754304 0.0048446923 + 1767200 0.0045450991 0.002406946 0.0046439869 + 1767300 0.0050894201 0.0025236226 0.0050285716 + 1767400 0.0043824933 0.0023941991 0.0045512075 + 1767500 0.0053138151 0.0020306504 0.0046460438 + 1767600 0.0058160192 0.0018605639 0.0047231358 + 1767700 0.0042062534 0.002223653 0.0042939184 + 1767800 0.0055246376 0.0018462537 0.0045654113 + 1767900 0.0051960875 0.0015849198 0.0041423691 + 1768000 0.0054945511 0.0022419146 0.004946264 + 1768100 0.0047796386 0.0027742682 0.0051267466 + 1768200 0.0057204779 0.0023769826 0.0051925303 + 1768300 0.0048841351 0.0019376981 0.0043416083 + 1768400 0.0045570713 0.0021471694 0.004390103 + 1768500 0.0049952252 0.0024233299 0.0048819173 + 1768600 0.0052583811 0.0019924977 0.0045806072 + 1768700 0.0043546323 0.0020115575 0.0041548531 + 1768800 0.0045224593 0.0021622621 0.00438816 + 1768900 0.005460156 0.002583 0.0052704205 + 1769000 0.0065372568 0.0026006482 0.0058182043 + 1769100 0.006265027 0.0019833354 0.0050669034 + 1769200 0.0052385439 0.001702913 0.0042812588 + 1769300 0.0040683256 0.0022594428 0.0042618218 + 1769400 0.0043657782 0.0027289293 0.0048777107 + 1769500 0.00767431 0.0027602894 0.0065374888 + 1769600 0.0044288334 0.0030303808 0.0052101972 + 1769700 0.0048089151 0.0035398793 0.0059067672 + 1769800 0.0060987505 0.0033649264 0.0063666551 + 1769900 0.0064223065 0.0030716754 0.0062326544 + 1770000 0.0056170546 0.0025165594 0.0052812035 + 1770100 0.0045576038 0.0023796836 0.0046228792 + 1770200 0.0048410652 0.0022840302 0.004666742 + 1770300 0.0041289055 0.0027210727 0.0047532684 + 1770400 0.0047516537 0.00248652 0.0048252246 + 1770500 0.0060319301 0.0023529561 0.0053217967 + 1770600 0.0045258466 0.0028277178 0.005055283 + 1770700 0.0046942117 0.0027847865 0.0050952188 + 1770800 0.0044130319 0.0024541237 0.0046261629 + 1770900 0.0052257846 0.0020278697 0.0045999356 + 1771000 0.0047804097 0.0021104194 0.0044632773 + 1771100 0.0047788573 0.002017952 0.0043700458 + 1771200 0.0048548681 0.0021137355 0.0045032409 + 1771300 0.0032823452 0.0024028568 0.0040183861 + 1771400 0.0050210262 0.0024165568 0.0048878431 + 1771500 0.0051847841 0.0022569155 0.0048088015 + 1771600 0.0055445935 0.0017646575 0.0044936371 + 1771700 0.0045388396 0.0018851815 0.0041191416 + 1771800 0.0035953536 0.0018975416 0.0036671297 + 1771900 0.0049724604 0.0016857843 0.0041331671 + 1772000 0.0056706013 0.0018515761 0.0046425751 + 1772100 0.003944834 0.0020786246 0.0040202225 + 1772200 0.0036079367 0.0024033752 0.0041791565 + 1772300 0.0045755857 0.0026162412 0.0048682873 + 1772400 0.0034933029 0.0025777384 0.0042970984 + 1772500 0.0065414067 0.0022375359 0.0054571346 + 1772600 0.0048097969 0.0023539945 0.0047213164 + 1772700 0.0053549039 0.0019986889 0.0046343057 + 1772800 0.0038070911 0.0016934381 0.0035672407 + 1772900 0.0059690059 0.0017327728 0.0046706428 + 1773000 0.004082254 0.0017151733 0.0037244077 + 1773100 0.0040046099 0.0018915948 0.0038626138 + 1773200 0.0038222815 0.0019968983 0.0038781775 + 1773300 0.0067406891 0.0017732555 0.0050909384 + 1773400 0.0051026719 0.0022672364 0.0047787078 + 1773500 0.0036955801 0.0020537126 0.0038726309 + 1773600 0.0041731451 0.0017187541 0.003772724 + 1773700 0.004499991 0.0018739643 0.0040888036 + 1773800 0.0043067617 0.0021409255 0.0042606598 + 1773900 0.0051347174 0.0023815608 0.0049088045 + 1774000 0.0064573384 0.0025505981 0.0057288194 + 1774100 0.0050917658 0.0024168508 0.0049229543 + 1774200 0.0044585869 0.0024851286 0.0046795894 + 1774300 0.0056536853 0.0023538464 0.0051365196 + 1774400 0.0056005701 0.0022998213 0.0050563519 + 1774500 0.0061285672 0.0024625455 0.0054789497 + 1774600 0.0054776543 0.0024151804 0.0051112134 + 1774700 0.0056619309 0.0025847439 0.0053714755 + 1774800 0.0062016705 0.0025874183 0.005639803 + 1774900 0.0058421881 0.002557017 0.005432469 + 1775000 0.0045985656 0.002236606 0.0044999625 + 1775100 0.0051291932 0.0024843423 0.0050088671 + 1775200 0.004364618 0.0024996764 0.0046478868 + 1775300 0.0039051873 0.0027646763 0.0046867607 + 1775400 0.0063795741 0.0025588832 0.0056988299 + 1775500 0.0063119559 0.0021169356 0.0052236013 + 1775600 0.0059617581 0.0025238383 0.0054581411 + 1775700 0.0054899653 0.0024468952 0.0051489875 + 1775800 0.0055215207 0.0023390288 0.0050566523 + 1775900 0.0050550214 0.0025284907 0.005016509 + 1776000 0.0045892131 0.0025194148 0.0047781681 + 1776100 0.0041501854 0.0027014616 0.004744131 + 1776200 0.0047754886 0.0020028362 0.004353272 + 1776300 0.0053003665 0.0018877121 0.0044964862 + 1776400 0.0044651847 0.0021418288 0.0043395369 + 1776500 0.0044603025 0.0024485244 0.0046438296 + 1776600 0.0037560289 0.0021867801 0.0040354506 + 1776700 0.0046238846 0.0019446178 0.004220436 + 1776800 0.004213288 0.0023911607 0.0044648883 + 1776900 0.0031976243 0.0026071422 0.0041809729 + 1777000 0.0047968598 0.0026668333 0.0050277877 + 1777100 0.0038244761 0.0028225083 0.0047048676 + 1777200 0.0037937198 0.002586164 0.0044533855 + 1777300 0.0046655009 0.0025263289 0.0048226301 + 1777400 0.004661397 0.0025190752 0.0048133565 + 1777500 0.0051573993 0.0024386198 0.0049770273 + 1777600 0.0047780367 0.0030031455 0.0053548355 + 1777700 0.0062093471 0.0030732274 0.0061293904 + 1777800 0.0045540466 0.0032030161 0.0054444609 + 1777900 0.0046611195 0.0032616967 0.0055558415 + 1778000 0.0048099464 0.0033393575 0.005706753 + 1778100 0.0054995684 0.002944977 0.0056517959 + 1778200 0.0061905557 0.0026740946 0.0057210087 + 1778300 0.0056353786 0.0027930353 0.0055666982 + 1778400 0.0053455046 0.0024575583 0.0050885489 + 1778500 0.004047745 0.0022540148 0.0042462643 + 1778600 0.0049280135 0.0025675526 0.0049930592 + 1778700 0.0045322632 0.002666127 0.0048968503 + 1778800 0.0046544841 0.0025353683 0.0048262472 + 1778900 0.0044000911 0.0022777715 0.0044434414 + 1779000 0.0054709604 0.0019663544 0.0046590927 + 1779100 0.0047062465 0.0019247036 0.0042410593 + 1779200 0.0038895696 0.0022424024 0.0041568 + 1779300 0.0041003082 0.0023400037 0.0043581242 + 1779400 0.003122224 0.002192082 0.0037288016 + 1779500 0.0055292436 0.0019280265 0.004649451 + 1779600 0.0042103362 0.0021639245 0.0042361993 + 1779700 0.0067593303 0.0022199682 0.0055468261 + 1779800 0.0031135546 0.0023966387 0.0039290913 + 1779900 0.0049619773 0.0018687106 0.0043109338 + 1780000 0.0053476912 0.0018497737 0.0044818404 + 1780100 0.0058108125 0.0020454815 0.0049054908 + 1780200 0.0049814562 0.0025073961 0.0049592066 + 1780300 0.0048875921 0.0025185966 0.0049242083 + 1780400 0.0043619666 0.0022252011 0.0043721066 + 1780500 0.0049801472 0.0022018527 0.0046530189 + 1780600 0.0049276642 0.0022632027 0.0046885375 + 1780700 0.0072821118 0.0023415561 0.0059257205 + 1780800 0.0046587299 0.0023160076 0.0046089762 + 1780900 0.0057270468 0.0021868433 0.0050056241 + 1781000 0.0053100277 0.0023471591 0.0049606883 + 1781100 0.0051602547 0.0026407639 0.0051805768 + 1781200 0.0075585811 0.0024489102 0.0061691494 + 1781300 0.0047285189 0.0024636041 0.004790922 + 1781400 0.0050752927 0.0023149127 0.0048129083 + 1781500 0.0065357036 0.0020783903 0.005295182 + 1781600 0.0055870461 0.0025538669 0.0053037411 + 1781700 0.0058373832 0.0028694358 0.0057425228 + 1781800 0.0033691874 0.0030648432 0.0047231151 + 1781900 0.0059878738 0.0022801759 0.0052273326 + 1782000 0.0045812605 0.0025404348 0.004795274 + 1782100 0.0065449764 0.0023287566 0.0055501122 + 1782200 0.0047833168 0.0023686811 0.0047229698 + 1782300 0.0068409392 0.0023189956 0.0056860204 + 1782400 0.0061206634 0.0027325156 0.0057450296 + 1782500 0.0055069281 0.0028051864 0.0055156276 + 1782600 0.0049337196 0.0029745736 0.0054028887 + 1782700 0.0060572787 0.0029598738 0.0059411906 + 1782800 0.0055754749 0.0030039771 0.0057481562 + 1782900 0.00652515 0.0024693664 0.0056809637 + 1783000 0.006289504 0.0020173063 0.0051129215 + 1783100 0.0043428969 0.0020575078 0.0041950273 + 1783200 0.0042364574 0.0021425806 0.0042277119 + 1783300 0.0050842706 0.0020651561 0.0045675706 + 1783400 0.0061688945 0.0022703542 0.005306607 + 1783500 0.0042145013 0.0033602784 0.0054346032 + 1783600 0.0052167031 0.0034854415 0.0060530375 + 1783700 0.0065535817 0.003167534 0.006393125 + 1783800 0.0049478334 0.0027693058 0.0052045676 + 1783900 0.0045044198 0.0023400403 0.0045570594 + 1784000 0.0040945657 0.0019824516 0.0039977456 + 1784100 0.0048018115 0.0023189907 0.0046823823 + 1784200 0.0036853516 0.0025391673 0.0043530512 + 1784300 0.0047241047 0.002068943 0.0043940883 + 1784400 0.0060395304 0.0020553237 0.0050279051 + 1784500 0.0048996812 0.0019777268 0.0043892886 + 1784600 0.0042767825 0.001967195 0.0040721739 + 1784700 0.0043782022 0.0024274982 0.0045823946 + 1784800 0.0036696254 0.0027925397 0.0045986834 + 1784900 0.0051607344 0.0022783573 0.0048184063 + 1785000 0.0042759146 0.0022080339 0.0043125856 + 1785100 0.0040806956 0.0023333323 0.0043417996 + 1785200 0.0050233404 0.0028172137 0.0052896391 + 1785300 0.0051710019 0.0034114921 0.0059565945 + 1785400 0.0061249297 0.003462239 0.0064768528 + 1785500 0.0071444001 0.0028132054 0.0063295898 + 1785600 0.0052201819 0.0032469836 0.0058162919 + 1785700 0.0045679197 0.0034563029 0.0057045758 + 1785800 0.006371421 0.0034568883 0.0065928221 + 1785900 0.0044025559 0.0036331347 0.0058000177 + 1786000 0.0056747568 0.0032167273 0.0060097717 + 1786100 0.0044482833 0.0030602478 0.0052496373 + 1786200 0.0061749483 0.0027846231 0.0058238555 + 1786300 0.0046543536 0.0021852494 0.0044760641 + 1786400 0.0040429031 0.0021625208 0.0041523871 + 1786500 0.0039926837 0.0023723509 0.0043375 + 1786600 0.0045251912 0.0024880654 0.0047153079 + 1786700 0.0033676835 0.0021443193 0.003801851 + 1786800 0.0071275007 0.0022943165 0.0058023833 + 1786900 0.0054443683 0.0026333719 0.0053130219 + 1787000 0.0046480987 0.0024945135 0.0047822496 + 1787100 0.0038736523 0.0023465056 0.0042530689 + 1787200 0.0043702918 0.0019372402 0.0040882432 + 1787300 0.0045753069 0.0018687866 0.0041206955 + 1787400 0.0045993547 0.0019468858 0.0042106307 + 1787500 0.0036721395 0.0021265306 0.0039339117 + 1787600 0.0047381551 0.0026714295 0.0050034903 + 1787700 0.0063692624 0.0020714331 0.0052063045 + 1787800 0.0050480957 0.0022112319 0.0046958416 + 1787900 0.0059645152 0.00228359 0.0052192499 + 1788000 0.0062284456 0.0020928765 0.0051584395 + 1788100 0.0049550279 0.0022546672 0.00469347 + 1788200 0.0047497157 0.0024974632 0.0048352139 + 1788300 0.004883545 0.002277743 0.0046813629 + 1788400 0.0047690289 0.002529262 0.0048765184 + 1788500 0.0045930804 0.0022623929 0.0045230496 + 1788600 0.0041145534 0.0022540232 0.0042791549 + 1788700 0.0057297777 0.0019660715 0.0047861964 + 1788800 0.0062106233 0.0020883237 0.0051451148 + 1788900 0.0048168965 0.0024904224 0.0048612386 + 1789000 0.0066720646 0.0020628324 0.0053467391 + 1789100 0.0055595363 0.0016561054 0.0043924396 + 1789200 0.0035366758 0.0019938788 0.0037345864 + 1789300 0.0062950624 0.0019099528 0.0050083038 + 1789400 0.005390661 0.0019621774 0.0046153933 + 1789500 0.0052982008 0.00184072 0.0044484282 + 1789600 0.0046340165 0.0015254903 0.0038062953 + 1789700 0.0053650023 0.0018657511 0.0045063382 + 1789800 0.0056764113 0.0025286467 0.0053225054 + 1789900 0.0059640442 0.0028336945 0.0057691225 + 1790000 0.0055700194 0.0024838164 0.0052253104 + 1790100 0.0066266938 0.0018925115 0.0051540873 + 1790200 0.0057497024 0.0020974604 0.004927392 + 1790300 0.0043426342 0.0020648547 0.004202245 + 1790400 0.0060369059 0.0016816501 0.0046529397 + 1790500 0.0042515587 0.0017756815 0.0038682455 + 1790600 0.0052347697 0.001813969 0.0043904572 + 1790700 0.0058858514 0.0017520453 0.0046489877 + 1790800 0.004288986 0.0021989975 0.0043099827 + 1790900 0.0039229725 0.0028944506 0.0048252886 + 1791000 0.0062508781 0.0023255079 0.005402112 + 1791100 0.0052110481 0.0022855325 0.0048503452 + 1791200 0.003643579 0.002472176 0.0042655001 + 1791300 0.004417113 0.0026033906 0.0047774384 + 1791400 0.0045490242 0.0027782909 0.0050172637 + 1791500 0.0049576122 0.0026151461 0.0050552208 + 1791600 0.0031474745 0.0026379926 0.0041871402 + 1791700 0.003473677 0.0025859974 0.0042956978 + 1791800 0.0051139383 0.0026600311 0.0051770476 + 1791900 0.0043073444 0.0028623952 0.0049824162 + 1792000 0.0041164567 0.0024874879 0.0045135565 + 1792100 0.0048384165 0.0024690971 0.0048505052 + 1792200 0.0081298217 0.0021309406 0.0061323373 + 1792300 0.0042194584 0.0022042249 0.0042809896 + 1792400 0.0052419579 0.0019675574 0.0045475835 + 1792500 0.0049762092 0.0024835844 0.0049328124 + 1792600 0.0055012919 0.0029609719 0.005668639 + 1792700 0.0067921371 0.0025997114 0.0059427164 + 1792800 0.0043036458 0.0020167091 0.0041349098 + 1792900 0.005603795 0.0024892864 0.0052474043 + 1793000 0.0062540866 0.0027110432 0.0057892265 + 1793100 0.0050546532 0.0021701394 0.0046579765 + 1793200 0.0047276132 0.0024940732 0.0048209453 + 1793300 0.0053447093 0.0027126427 0.0053432418 + 1793400 0.0054095087 0.002814228 0.0054767205 + 1793500 0.0041129745 0.0032604421 0.0052847967 + 1793600 0.0050352564 0.0033898781 0.0058681683 + 1793700 0.0050851983 0.0031814995 0.0056843705 + 1793800 0.0047760778 0.0027621752 0.005112901 + 1793900 0.0039936773 0.0024451121 0.0044107502 + 1794000 0.0047359123 0.0024294758 0.0047604326 + 1794100 0.0042061233 0.0024328535 0.0045030548 + 1794200 0.0048059312 0.0025799667 0.0049453859 + 1794300 0.0046132211 0.0022759787 0.0045465485 + 1794400 0.0066490626 0.0021967793 0.0054693648 + 1794500 0.0050924174 0.0019320815 0.0044385057 + 1794600 0.0040034002 0.0021522317 0.0041226553 + 1794700 0.0051065497 0.0023634646 0.0048768446 + 1794800 0.005632733 0.0024962085 0.0052685693 + 1794900 0.0045298416 0.002225933 0.0044554644 + 1795000 0.0040491323 0.0020795061 0.0040724384 + 1795100 0.0048983409 0.0019013468 0.0043122489 + 1795200 0.0040405817 0.0020045194 0.0039932432 + 1795300 0.0050364633 0.0020112284 0.0044901127 + 1795400 0.0057389492 0.0023073648 0.0051320039 + 1795500 0.0039780355 0.0025641144 0.0045220538 + 1795600 0.0049730091 0.0025085013 0.0049561542 + 1795700 0.006408733 0.0021673348 0.0053216331 + 1795800 0.004792136 0.0022256335 0.0045842629 + 1795900 0.0045630255 0.0022705129 0.004516377 + 1796000 0.0035277562 0.0026300382 0.0043663557 + 1796100 0.0045241839 0.002372766 0.0045995128 + 1796200 0.0055173256 0.0025898165 0.0053053752 + 1796300 0.0061117678 0.0025571562 0.0055652919 + 1796400 0.0073479505 0.0026268481 0.0062434175 + 1796500 0.0043183253 0.0023712776 0.0044967033 + 1796600 0.004348155 0.0016179511 0.0037580586 + 1796700 0.0056450051 0.0014752798 0.0042536807 + 1796800 0.0046353843 0.0021901388 0.004471617 + 1796900 0.006225231 0.0026176423 0.0056816232 + 1797000 0.0063068047 0.0026679007 0.0057720311 + 1797100 0.0055678998 0.0026393356 0.0053797863 + 1797200 0.0051309108 0.0024992416 0.0050246118 + 1797300 0.0044473401 0.002421524 0.0046104492 + 1797400 0.0044643018 0.0028370186 0.0050342921 + 1797500 0.0055023377 0.0024784811 0.005186663 + 1797600 0.0053411191 0.0022540413 0.0048828734 + 1797700 0.0051552838 0.0021151485 0.0046525147 + 1797800 0.0038869259 0.0024056219 0.0043187182 + 1797900 0.0030820401 0.002228797 0.0037457387 + 1798000 0.0051881965 0.0017716914 0.0043252569 + 1798100 0.0059743982 0.0016350333 0.0045755574 + 1798200 0.0061993433 0.0020781476 0.0051293869 + 1798300 0.0059991001 0.0024557678 0.0054084499 + 1798400 0.0055412849 0.0028825844 0.0056099356 + 1798500 0.0050483943 0.003015748 0.0055005045 + 1798600 0.005495592 0.0031350153 0.0058398769 + 1798700 0.0063751072 0.003091301 0.0062290491 + 1798800 0.0054270709 0.0028957027 0.0055668391 + 1798900 0.0052123766 0.0027072041 0.0052726707 + 1799000 0.0041180592 0.0027582874 0.0047851447 + 1799100 0.0043172201 0.0029182905 0.0050431723 + 1799200 0.0044023884 0.0029764053 0.0051432059 + 1799300 0.0044921479 0.0028306598 0.0050416388 + 1799400 0.0041433792 0.0027556472 0.0047949667 + 1799500 0.0049875556 0.0026105429 0.0050653555 + 1799600 0.0077610393 0.0023674491 0.0061873357 + 1799700 0.0047891382 0.0023438601 0.0047010141 + 1799800 0.0053020443 0.0020783495 0.0046879494 + 1799900 0.0049234214 0.0019104437 0.0043336902 + 1800000 0.0047790741 0.0021032157 0.0044554162 + 1800100 0.0036331741 0.0020843366 0.0038725395 + 1800200 0.0047352244 0.0020710509 0.0044016692 + 1800300 0.005294135 0.0020941923 0.0046998994 + 1800400 0.0058007625 0.0025984834 0.0054535462 + 1800500 0.005617984 0.0025262781 0.0052913796 + 1800600 0.0039413893 0.0024314475 0.00437135 + 1800700 0.0049376613 0.0020359733 0.0044662285 + 1800800 0.0033301203 0.0018367925 0.0034758361 + 1800900 0.0047274678 0.0017935172 0.0041203178 + 1801000 0.0048379544 0.0022453291 0.0046265098 + 1801100 0.0051383544 0.0023018712 0.004830905 + 1801200 0.0042695393 0.0030315824 0.0051329963 + 1801300 0.0067603929 0.0028633405 0.0061907213 + 1801400 0.0059697546 0.0028735332 0.0058117718 + 1801500 0.0042024252 0.0025750555 0.0046434367 + 1801600 0.0048701801 0.002174067 0.0045711088 + 1801700 0.0049899462 0.0022169824 0.0046729716 + 1801800 0.0057771597 0.0020375094 0.0048809552 + 1801900 0.0056149879 0.0019598968 0.0047235236 + 1802000 0.0036617644 0.0024695573 0.004271832 + 1802100 0.0056811563 0.0020365192 0.0048327134 + 1802200 0.0053013932 0.0016783998 0.0042876793 + 1802300 0.0042807333 0.0020946101 0.0042015336 + 1802400 0.0030761482 0.0027197703 0.004233812 + 1802500 0.0044610182 0.0023432902 0.0045389476 + 1802600 0.0038763209 0.002305101 0.0042129777 + 1802700 0.0045107335 0.0019496306 0.0041697572 + 1802800 0.006385859 0.0016505536 0.0047935936 + 1802900 0.0049579119 0.0023155467 0.004755769 + 1803000 0.007050688 0.0025810672 0.0060513277 + 1803100 0.0053073952 0.0028196259 0.0054318595 + 1803200 0.0059726292 0.0027635339 0.0057031873 + 1803300 0.0060180776 0.002857788 0.0058198105 + 1803400 0.0047705381 0.0023731285 0.0047211277 + 1803500 0.0074020479 0.0020872728 0.0057304682 + 1803600 0.005030685 0.0022777715 0.0047538118 + 1803700 0.00457286 0.0027636967 0.0050144013 + 1803800 0.0042654121 0.0027562982 0.0048556807 + 1803900 0.0048499235 0.0024959102 0.004882982 + 1804000 0.0044309401 0.0021332478 0.0043141011 + 1804100 0.0045031058 0.0025722384 0.0047886108 + 1804200 0.0058344395 0.0026002066 0.0054718448 + 1804300 0.0052151495 0.0022070644 0.0047738958 + 1804400 0.0051989006 0.0023666234 0.0049254572 + 1804500 0.0050393713 0.002613227 0.0050935425 + 1804600 0.0045627497 0.0026765674 0.0049222957 + 1804700 0.0042077504 0.0029243555 0.0049953576 + 1804800 0.0057969629 0.0027573975 0.0056105901 + 1804900 0.0059594583 0.0032498059 0.0061829768 + 1805000 0.0055313757 0.0034137522 0.0061362261 + 1805100 0.005438106 0.0032742994 0.0059508672 + 1805200 0.0057383228 0.0031829228 0.0060072536 + 1805300 0.006237904 0.0031414153 0.0062116336 + 1805400 0.0049817683 0.0033836116 0.0058355757 + 1805500 0.0050987143 0.0034076224 0.0059171458 + 1805600 0.0061698457 0.0030538861 0.006090607 + 1805700 0.0047790807 0.0027976751 0.0051498789 + 1805800 0.0048309245 0.0028614727 0.0052391933 + 1805900 0.004706441 0.0030729632 0.0053894146 + 1806000 0.0041337097 0.0037866101 0.0058211703 + 1806100 0.0040957301 0.004015511 0.0060313781 + 1806200 0.0056328146 0.0030470795 0.0058194804 + 1806300 0.0044991058 0.0027411549 0.0049555585 + 1806400 0.0047439478 0.0029891761 0.0053240879 + 1806500 0.0048563413 0.0029672809 0.0053575113 + 1806600 0.0049094802 0.0028120515 0.0052284363 + 1806700 0.0047098824 0.0025304342 0.0048485794 + 1806800 0.0049030447 0.0024805041 0.0048937215 + 1806900 0.0052827546 0.0027779274 0.0053780332 + 1807000 0.0058354393 0.0028757122 0.0057478425 + 1807100 0.003983775 0.0030556651 0.0050164294 + 1807200 0.0027642773 0.0030092899 0.0043698326 + 1807300 0.0046877138 0.0027178962 0.0050251303 + 1807400 0.0035589686 0.0023291201 0.0040807999 + 1807500 0.0063153338 0.0023452137 0.0054535421 + 1807600 0.0031179518 0.0026524695 0.0041870864 + 1807700 0.0037822925 0.0023258721 0.0041874692 + 1807800 0.0044255119 0.0023930883 0.0045712699 + 1807900 0.0054514361 0.0019036431 0.0045867718 + 1808000 0.0048670089 0.0016465127 0.0040419937 + 1808100 0.006382617 0.0018253762 0.0049668205 + 1808200 0.0054746023 0.0024120266 0.0051065574 + 1808300 0.0057489736 0.0022222572 0.0050518301 + 1808400 0.0062400488 0.0022291045 0.0053003785 + 1808500 0.0051033353 0.0021942179 0.0047060157 + 1808600 0.0061352781 0.0023033122 0.0053230194 + 1808700 0.0048054119 0.0022359599 0.0046011236 + 1808800 0.0036561264 0.0026253442 0.004424844 + 1808900 0.0040567113 0.0030081741 0.0050048367 + 1809000 0.0061695427 0.0025226723 0.0055592441 + 1809100 0.0071837656 0.0020580988 0.0055938585 + 1809200 0.0056956086 0.0024984009 0.0053017082 + 1809300 0.0051972427 0.0027185435 0.0052765614 + 1809400 0.0079311974 0.0027442756 0.0066479118 + 1809500 0.0049998155 0.003119772 0.0055806187 + 1809600 0.0069964643 0.0029875658 0.0064311381 + 1809700 0.0063042904 0.0024823795 0.0055852725 + 1809800 0.005637542 0.0029733828 0.0057481105 + 1809900 0.0060714202 0.0028060165 0.0057942937 + 1810000 0.0050768332 0.0026431881 0.005141942 + 1810100 0.0045561462 0.0023121113 0.0045545895 + 1810200 0.0042086515 0.0022474412 0.0043188868 + 1810300 0.0044359051 0.0024022058 0.0045855029 + 1810400 0.0050926811 0.0024792052 0.0049857592 + 1810500 0.0032949713 0.0027228062 0.0043445499 + 1810600 0.006193523 0.0025635152 0.0056118897 + 1810700 0.0054281214 0.0026447226 0.0053163761 + 1810800 0.0067506687 0.0025418124 0.0058644071 + 1810900 0.0060839581 0.0025406905 0.0055351387 + 1811000 0.0048144367 0.0027323007 0.0051019062 + 1811100 0.0049938575 0.0027521135 0.0052100277 + 1811200 0.00390463 0.0027507189 0.004672529 + 1811300 0.0049517444 0.0027146902 0.0051518769 + 1811400 0.0052000821 0.0021609212 0.0047203366 + 1811500 0.0063498616 0.0024710959 0.0055964184 + 1811600 0.0050803669 0.0029993646 0.0054998577 + 1811700 0.0047756192 0.0027249939 0.005075494 + 1811800 0.0068853768 0.0023880439 0.0057769403 + 1811900 0.004555979 0.0027325448 0.0049749407 + 1812000 0.0053250845 0.0023328951 0.0049538351 + 1812100 0.0059492168 0.002518421 0.0054465511 + 1812200 0.0046827926 0.0026257674 0.0049305793 + 1812300 0.0051616054 0.0025007015 0.0050411791 + 1812400 0.0052380017 0.0021615585 0.0047396375 + 1812500 0.0044126591 0.002665687 0.0048375426 + 1812600 0.0042683156 0.0031074861 0.0052082977 + 1812700 0.005323682 0.0031201705 0.0057404202 + 1812800 0.0055819242 0.0029026502 0.0056500036 + 1812900 0.0056904979 0.0022598696 0.0050606615 + 1813000 0.0069260468 0.0019485827 0.0053574964 + 1813100 0.0048736966 0.0024965992 0.0048953717 + 1813200 0.0043880241 0.0026394422 0.0047991728 + 1813300 0.0058141021 0.002507025 0.0053686534 + 1813400 0.005709122 0.002700422 0.0055103805 + 1813500 0.0069937004 0.0019116894 0.0053539013 + 1813600 0.0047739814 0.0021839834 0.0045336774 + 1813700 0.0045464559 0.0022655343 0.004503243 + 1813800 0.0056461766 0.0023303373 0.0051093148 + 1813900 0.004352647 0.0027811815 0.0049234999 + 1814000 0.0044952028 0.0026657318 0.0048782144 + 1814100 0.0046573603 0.0025483313 0.0048406258 + 1814200 0.0068988388 0.0025475036 0.0059430258 + 1814300 0.0060974564 0.0026201891 0.0056212809 + 1814400 0.0040782139 0.0025123895 0.0045196354 + 1814500 0.0051203506 0.0027590515 0.005279224 + 1814600 0.0062988146 0.0029661 0.0060662977 + 1814700 0.0053368726 0.0027230676 0.0053498096 + 1814800 0.0051942452 0.0025613875 0.00511793 + 1814900 0.0046503534 0.0027056294 0.0049944752 + 1815000 0.0050202285 0.0027555903 0.005226484 + 1815100 0.0046419172 0.0033262235 0.0056109171 + 1815200 0.0048453775 0.003650058 0.0060348922 + 1815300 0.0055045876 0.0031494782 0.0058587674 + 1815400 0.0060460494 0.0025753044 0.0055510943 + 1815500 0.0053716556 0.0030874821 0.0057313439 + 1815600 0.0055977108 0.0026731943 0.0054283176 + 1815700 0.0056485114 0.0023216996 0.0051018263 + 1815800 0.0052491614 0.001975069 0.0045586406 + 1815900 0.0030587047 0.0018193543 0.0033248105 + 1816000 0.0035629556 0.001642153 0.0033957952 + 1816100 0.0052583811 0.0016951501 0.0042832595 + 1816200 0.0063133885 0.0017456907 0.0048530617 + 1816300 0.0050960136 0.0019174212 0.0044256154 + 1816400 0.0042485794 0.00238597 0.0044770677 + 1816500 0.0057376651 0.0026643009 0.0054883079 + 1816600 0.0045847907 0.0025752483 0.004831825 + 1816700 0.0047144177 0.0025976475 0.0049180249 + 1816800 0.0057581802 0.0024717067 0.005305811 + 1816900 0.0080771832 0.0018970414 0.00587253 + 1817000 0.0053785857 0.0022783972 0.0049256699 + 1817100 0.0054556602 0.0027939516 0.0054791593 + 1817200 0.0027870945 0.0031233444 0.0044951174 + 1817300 0.0066350469 0.002494526 0.0057602131 + 1817400 0.0054674496 0.0023148108 0.0050058211 + 1817500 0.005389846 0.0028802171 0.0055330319 + 1817600 0.0039749506 0.0028155659 0.0047719869 + 1817700 0.0059075619 0.0021050701 0.0050126982 + 1817800 0.0037151036 0.0021345158 0.0039630433 + 1817900 0.0041381898 0.0021953792 0.0042321445 + 1818000 0.0045639526 0.0024114218 0.0046577422 + 1818100 0.0056582819 0.0022595447 0.0050444803 + 1818200 0.0061542921 0.0019802879 0.0050093536 + 1818300 0.0035436361 0.0022900333 0.0040341667 + 1818400 0.0030906352 0.0022577108 0.0037788828 + 1818500 0.005299035 0.0021427952 0.004750914 + 1818600 0.0044605286 0.0030211344 0.0052165509 + 1818700 0.0084252615 0.0029141882 0.0070609966 + 1818800 0.0052654956 0.0028931681 0.0054847792 + 1818900 0.0064927064 0.0026932096 0.0058888386 + 1819000 0.0042155278 0.0031478047 0.0052226348 + 1819100 0.0061241663 0.0027834883 0.0057977264 + 1819200 0.0047188444 0.0025616591 0.0048842153 + 1819300 0.0046865926 0.0022295961 0.0045362784 + 1819400 0.0047011684 0.0020899192 0.0044037755 + 1819500 0.0046125463 0.0017626294 0.004032867 + 1819600 0.006569472 0.001940279 0.005173691 + 1819700 0.0050470459 0.0020577459 0.0045418388 + 1819800 0.0046823175 0.0018815438 0.0041861219 + 1819900 0.0047398166 0.0018877692 0.0042206477 + 1820000 0.0055046266 0.0020156473 0.0047249557 + 1820100 0.0052743619 0.0019628005 0.0045587755 + 1820200 0.0036075098 0.0020577587 0.0038333299 + 1820300 0.0040706159 0.0018824593 0.0038859656 + 1820400 0.0039578743 0.0019991012 0.0039471174 + 1820500 0.0048044345 0.0017974638 0.0041621464 + 1820600 0.0047396822 0.0021966943 0.0045295066 + 1820700 0.004221107 0.0024852846 0.0045628607 + 1820800 0.0057762266 0.0021183352 0.0049613217 + 1820900 0.0049292566 0.0020930433 0.0045191617 + 1821000 0.0051252232 0.0022882071 0.0048107779 + 1821100 0.0044850187 0.002830597 0.0050380671 + 1821200 0.0061189455 0.002898423 0.0059100915 + 1821300 0.0045778032 0.0025490465 0.004802184 + 1821400 0.0072489223 0.0024855257 0.0060533546 + 1821500 0.0050077595 0.0029467603 0.005411517 + 1821600 0.0048030003 0.002704961 0.0050689378 + 1821700 0.0061186786 0.0024799416 0.0054914787 + 1821800 0.0054033741 0.0030831135 0.0057425867 + 1821900 0.0053313872 0.0036172759 0.006241318 + 1822000 0.0064464205 0.0033732684 0.0065461159 + 1822100 0.00719653 0.0030434248 0.0065854669 + 1822200 0.0050603549 0.0027627911 0.0052534345 + 1822300 0.0041442588 0.0029611955 0.0050009479 + 1822400 0.0057457721 0.0033040127 0.00613201 + 1822500 0.0060276161 0.0034863523 0.0064530696 + 1822600 0.0049598557 0.0035633034 0.0060044824 + 1822700 0.0048481249 0.0035280276 0.0059142141 + 1822800 0.0057377127 0.0030747693 0.0058987998 + 1822900 0.0047174951 0.0030567746 0.0053786667 + 1823000 0.004346437 0.0032114091 0.005350671 + 1823100 0.0044479236 0.003055827 0.0052450394 + 1823200 0.0053455065 0.0027133252 0.0053443167 + 1823300 0.0049241651 0.0024630671 0.0048866796 + 1823400 0.0059108284 0.0023917394 0.0053009753 + 1823500 0.0061144291 0.0024484684 0.0054579139 + 1823600 0.0045269391 0.0023719378 0.0046000407 + 1823700 0.0054659545 0.0026420181 0.0053322926 + 1823800 0.0056600927 0.0025921534 0.0053779802 + 1823900 0.0060232515 0.0023613412 0.0053259103 + 1824000 0.0043007121 0.0023806413 0.004497398 + 1824100 0.0068658427 0.0024411754 0.0058204573 + 1824200 0.0057992292 0.0031316194 0.0059859275 + 1824300 0.0042782816 0.0029725392 0.0050782559 + 1824400 0.0043930448 0.0022916297 0.0044538315 + 1824500 0.0066307409 0.002382041 0.0056456088 + 1824600 0.0046970932 0.0029140734 0.0052259239 + 1824700 0.0052341104 0.0027628339 0.0053389976 + 1824800 0.0057090688 0.0023714315 0.0051813638 + 1824900 0.0041767944 0.0029039131 0.0049596791 + 1825000 0.0047985349 0.0032829106 0.0056446895 + 1825100 0.0054354559 0.0030923425 0.005767606 + 1825200 0.0047763358 0.0026897147 0.0050405674 + 1825300 0.0046690722 0.0026267875 0.0049248464 + 1825400 0.0053295392 0.0025708265 0.0051939591 + 1825500 0.0052039664 0.0026326981 0.0051940254 + 1825600 0.005168094 0.0028084954 0.0053521666 + 1825700 0.0052807938 0.0031881972 0.0057873379 + 1825800 0.0063996855 0.0031917795 0.0063416247 + 1825900 0.0049656207 0.0025723001 0.0050163165 + 1826000 0.0044579691 0.0026210072 0.0048151639 + 1826100 0.0039711717 0.0027422528 0.0046968139 + 1826200 0.0042724386 0.0027052279 0.0048080688 + 1826300 0.0049160374 0.0022891764 0.0047087886 + 1826400 0.0052075253 0.0021843586 0.0047474375 + 1826500 0.0049262254 0.0024342733 0.0048588998 + 1826600 0.0062682518 0.0025638302 0.0056489854 + 1826700 0.005087883 0.0024378312 0.0049420235 + 1826800 0.0066816683 0.0026729123 0.005961546 + 1826900 0.0058840259 0.0028664687 0.0057625127 + 1827000 0.0043170339 0.0031289596 0.0052537497 + 1827100 0.0033102255 0.0030834146 0.0047126662 + 1827200 0.005304711 0.003083488 0.0056944004 + 1827300 0.0048934582 0.00292277 0.0053312689 + 1827400 0.0070284222 0.0026549206 0.0061142221 + 1827500 0.0057499984 0.0026277568 0.0054578341 + 1827600 0.0035804456 0.0026635442 0.0044257947 + 1827700 0.0061231124 0.0025581302 0.0055718496 + 1827800 0.0061432991 0.0024547061 0.0054783611 + 1827900 0.005415717 0.0018447313 0.0045102795 + 1828000 0.0042125419 0.0018357509 0.0039091114 + 1828100 0.0044047823 0.0020566684 0.0042246472 + 1828200 0.0044642671 0.0020736408 0.0042708973 + 1828300 0.0042333244 0.0025415446 0.0046251339 + 1828400 0.004676091 0.0026121607 0.0049136743 + 1828500 0.0047821278 0.002265139 0.0046188425 + 1828600 0.0056606687 0.0023629358 0.0051490462 + 1828700 0.0042643567 0.0023600494 0.0044589125 + 1828800 0.0055143145 0.0019632792 0.0046773558 + 1828900 0.0053505859 0.0022500497 0.0048835412 + 1829000 0.0054430077 0.0026329033 0.0053118836 + 1829100 0.0037750871 0.0030123678 0.0048704185 + 1829200 0.0051351073 0.0028976646 0.0054251002 + 1829300 0.003705895 0.0023914385 0.0042154337 + 1829400 0.0052122035 0.0022645812 0.0048299626 + 1829500 0.0050618367 0.0021924018 0.0046837746 + 1829600 0.0037012563 0.0027290508 0.0045507629 + 1829700 0.0057358305 0.0034644657 0.0062875698 + 1829800 0.0059052509 0.0033467078 0.0062531985 + 1829900 0.0050542655 0.0027401648 0.0052278111 + 1830000 0.0057027576 0.0021682464 0.0049750724 + 1830100 0.0048569274 0.0022625129 0.0046530318 + 1830200 0.0058706701 0.0026763652 0.0055658356 + 1830300 0.0059568705 0.0029857847 0.0059176819 + 1830400 0.0045320701 0.0029337449 0.0051643732 + 1830500 0.0059118425 0.0020544785 0.0049642135 + 1830600 0.0052206447 0.002079378 0.0046489141 + 1830700 0.0053053301 0.0024817254 0.0050929425 + 1830800 0.0042621922 0.0027185603 0.0048163581 + 1830900 0.0043277719 0.0023677986 0.0044978738 + 1831000 0.0042477281 0.0021741656 0.0042648442 + 1831100 0.0054975051 0.0021475996 0.0048534029 + 1831200 0.0055499534 0.0022680067 0.0049996244 + 1831300 0.0058004202 0.0021802601 0.0050351544 + 1831400 0.0045817929 0.0020443244 0.0042994256 + 1831500 0.005024284 0.0019508498 0.0044237395 + 1831600 0.0063923386 0.0016479732 0.0047942023 + 1831700 0.0053891001 0.0021805845 0.0048330323 + 1831800 0.0042736062 0.0020027254 0.004106141 + 1831900 0.0058263068 0.0019485808 0.0048162161 + 1832000 0.0048090669 0.0024221702 0.0047891328 + 1832100 0.0058706145 0.0021870863 0.0050765294 + 1832200 0.0060252898 0.0020606339 0.0050262062 + 1832300 0.0057948786 0.0019945458 0.0048467126 + 1832400 0.0046757112 0.0026301785 0.0049315051 + 1832500 0.0051749671 0.0024789905 0.0050260446 + 1832600 0.0043664165 0.0020048783 0.0041539739 + 1832700 0.0045591068 0.0018953011 0.0041392364 + 1832800 0.0046872018 0.0018004993 0.0041074814 + 1832900 0.0037222815 0.0021428358 0.0039748962 + 1833000 0.005116769 0.0020980478 0.0046164576 + 1833100 0.0042426721 0.0022351938 0.004323384 + 1833200 0.0059273852 0.0018062704 0.0047236553 + 1833300 0.0050169575 0.0015648148 0.0040340985 + 1833400 0.0036444582 0.0018204961 0.0036142529 + 1833500 0.0041192498 0.0016766313 0.0037040746 + 1833600 0.0060917824 0.0013252966 0.0043235957 + 1833700 0.0039343989 0.0015139989 0.0034504609 + 1833800 0.0045641837 0.0016012208 0.0038476549 + 1833900 0.0038779444 0.0015620393 0.0034707151 + 1834000 0.0034397932 0.0014937013 0.0031867245 + 1834100 0.0041536156 0.0016923532 0.0037367109 + 1834200 0.0061741431 0.0020231792 0.0050620152 + 1834300 0.00700956 0.0025129784 0.0059629962 + 1834400 0.004511051 0.00277052 0.0049908029 + 1834500 0.0066063277 0.0023224758 0.0055740277 + 1834600 0.0063307989 0.0021381683 0.0052541084 + 1834700 0.0053347989 0.002864189 0.0054899104 + 1834800 0.003810059 0.0031292314 0.0050044948 + 1834900 0.0039350338 0.0023325102 0.0042692847 + 1835000 0.0039253816 0.0023004742 0.0042324979 + 1835100 0.0043493171 0.0026065013 0.0047471809 + 1835200 0.0059382305 0.0020238556 0.0049465784 + 1835300 0.0055512799 0.0020961808 0.0048284514 + 1835400 0.004560111 0.0025052234 0.0047496531 + 1835500 0.0061620989 0.0021435891 0.0051764971 + 1835600 0.0060534744 0.0020609768 0.0050404213 + 1835700 0.0050988575 0.0023864775 0.0048960715 + 1835800 0.0040857965 0.0029020823 0.0049130602 + 1835900 0.0056307064 0.0022661865 0.0050375498 + 1836000 0.0047747567 0.0020853721 0.0044354477 + 1836100 0.0040440968 0.002506713 0.0044971668 + 1836200 0.0067721313 0.002122843 0.0054560014 + 1836300 0.0061105582 0.0023768815 0.0053844218 + 1836400 0.0043726814 0.0021686447 0.0043208239 + 1836500 0.0061544343 0.0019122589 0.0049413945 + 1836600 0.0043637841 0.0021561815 0.0043039815 + 1836700 0.0053660962 0.0020910825 0.004732208 + 1836800 0.0057512497 0.0020633396 0.0048940328 + 1836900 0.0031473321 0.0024506435 0.003999721 + 1837000 0.0044484178 0.0024652237 0.0046546794 + 1837100 0.0043878205 0.0023345958 0.0044942262 + 1837200 0.0053451094 0.002484964 0.00511576 + 1837300 0.0048560547 0.0028732618 0.0052633512 + 1837400 0.0051813158 0.0027726192 0.005322798 + 1837500 0.0050665778 0.0026530164 0.0051467226 + 1837600 0.0042243288 0.0026143297 0.0046934915 + 1837700 0.0058733006 0.0022217371 0.0051125023 + 1837800 0.0059696299 0.0019280442 0.0048662214 + 1837900 0.0066097859 0.0022531339 0.005506388 + 1838000 0.0045753028 0.0024758607 0.0047277675 + 1838100 0.0050992566 0.0025984728 0.0051082631 + 1838200 0.0071713953 0.0027416285 0.0062712996 + 1838300 0.0046583695 0.0027351704 0.0050279617 + 1838400 0.0048769053 0.0025654867 0.0049658385 + 1838500 0.0059869798 0.0024622399 0.0054089565 + 1838600 0.0046443328 0.0024363716 0.0047222541 + 1838700 0.0059914538 0.0025693318 0.0055182505 + 1838800 0.0041579393 0.0025931373 0.004639623 + 1838900 0.0052373178 0.0024469232 0.0050246656 + 1839000 0.0053400258 0.0029002151 0.005528509 + 1839100 0.0052395177 0.0031068153 0.0056856404 + 1839200 0.0037071654 0.0029448845 0.0047695049 + 1839300 0.0056261925 0.0025735682 0.0053427098 + 1839400 0.0059516351 0.0023083108 0.0052376312 + 1839500 0.0038140735 0.00212545 0.0040026893 + 1839600 0.0049929643 0.0022773455 0.0047348201 + 1839700 0.004022392 0.0018980272 0.0038777983 + 1839800 0.0045130695 0.0015877761 0.0038090525 + 1839900 0.0062050786 0.001686639 0.0047407012 + 1840000 0.0035642651 0.001629771 0.0033840578 + 1840100 0.0042978546 0.0018277923 0.0039431426 + 1840200 0.0061407046 0.0019549632 0.0049773412 + 1840300 0.0041827911 0.0018496769 0.0039083943 + 1840400 0.0063945954 0.0023121147 0.0054594546 + 1840500 0.0058929146 0.0025536802 0.0054540991 + 1840600 0.0043325298 0.0027928762 0.0049252932 + 1840700 0.0040040946 0.002453111 0.0044238764 + 1840800 0.0067747652 0.0022475444 0.0055819991 + 1840900 0.0065009975 0.0022714826 0.0054711923 + 1841000 0.0050763861 0.0026430654 0.0051415992 + 1841100 0.0042768045 0.0024847768 0.0045897666 + 1841200 0.0063417284 0.0020045203 0.0051258397 + 1841300 0.0070350604 0.0021580166 0.0056205854 + 1841400 0.0052567241 0.0025163768 0.0051036706 + 1841500 0.0055590012 0.0023723552 0.0051084261 + 1841600 0.0053868186 0.0024026588 0.0050539836 + 1841700 0.0037579794 0.0025671645 0.0044167949 + 1841800 0.0043316275 0.0025265842 0.0046585571 + 1841900 0.0057632867 0.0018918011 0.0047284188 + 1842000 0.0062377117 0.0018049957 0.0048751194 + 1842100 0.0048405258 0.0018059836 0.0041884299 + 1842200 0.0053049944 0.0019553899 0.0045664419 + 1842300 0.0036553117 0.0024211139 0.0042202126 + 1842400 0.0048940481 0.0022653279 0.0046741172 + 1842500 0.0067878786 0.0019725053 0.0053134143 + 1842600 0.0042258662 0.0021923432 0.0042722617 + 1842700 0.003957031 0.0021651342 0.0041127353 + 1842800 0.0066389383 0.0016018918 0.0048694942 + 1842900 0.0042927053 0.0016011071 0.003713923 + 1843000 0.0033250501 0.0018255905 0.0034621386 + 1843100 0.0050949771 0.0018026786 0.0043103626 + 1843200 0.006508666 0.0018330325 0.0050365166 + 1843300 0.0033278315 0.001954456 0.0035923731 + 1843400 0.0048972395 0.0022044465 0.0046148065 + 1843500 0.0048153418 0.0020468086 0.0044168596 + 1843600 0.0037205933 0.0014914504 0.0033226799 + 1843700 0.0047488901 0.0013849712 0.0037223155 + 1843800 0.0033948239 0.0019311101 0.0036020001 + 1843900 0.0045488295 0.0020181184 0.0042569955 + 1844000 0.0045874363 0.001811521 0.0040693998 + 1844100 0.0052658303 0.0021204679 0.0047122437 + 1844200 0.0045968924 0.0022905404 0.0045530734 + 1844300 0.0060474182 0.0021894167 0.0051658804 + 1844400 0.0049932763 0.0025474994 0.0050051276 + 1844500 0.0048293397 0.0023694126 0.0047463532 + 1844600 0.0052131184 0.0024645913 0.005030423 + 1844700 0.0061719866 0.0022514869 0.0052892615 + 1844800 0.0050334766 0.0021639955 0.0046414097 + 1844900 0.0055293568 0.0024199037 0.005141384 + 1845000 0.0044610265 0.0029095308 0.0051051923 + 1845100 0.0042041923 0.0025764383 0.0046456892 + 1845200 0.0051668084 0.0023306589 0.0048736974 + 1845300 0.005157825 0.0025926176 0.0051312346 + 1845400 0.0054317547 0.0022402149 0.0049136566 + 1845500 0.0041568267 0.0023582423 0.0044041804 + 1845600 0.0057886644 0.0025178985 0.0053670068 + 1845700 0.0059044547 0.0024941627 0.0054002615 + 1845800 0.0059969151 0.0023975717 0.0053491783 + 1845900 0.0047543229 0.002571547 0.0049115653 + 1846000 0.0039368594 0.0025859241 0.0045235971 + 1846100 0.004775652 0.0022191813 0.0045696975 + 1846200 0.0037914846 0.0019438728 0.0038099942 + 1846300 0.0043008757 0.0016148405 0.0037316777 + 1846400 0.0044770452 0.0021008033 0.004304349 + 1846500 0.0051053014 0.0023464521 0.0048592176 + 1846600 0.0054041435 0.002645248 0.0053050999 + 1846700 0.0050141443 0.0024578393 0.0049257384 + 1846800 0.0055054676 0.0026416981 0.0053514204 + 1846900 0.0044873244 0.003125533 0.005334138 + 1847000 0.0058283333 0.0032702439 0.0061388767 + 1847100 0.0042937873 0.0033463131 0.0054596616 + 1847200 0.0057513306 0.0030710728 0.0059018058 + 1847300 0.006793525 0.002961628 0.0063053161 + 1847400 0.0038773767 0.0029170547 0.0048254511 + 1847500 0.0041149712 0.0029708609 0.0049961983 + 1847600 0.0039325399 0.0028078588 0.0047434058 + 1847700 0.006893422 0.0027425911 0.0061354473 + 1847800 0.0051960168 0.0031100695 0.005667484 + 1847900 0.0051463719 0.0031311171 0.005664097 + 1848000 0.0061257952 0.002339528 0.0053545678 + 1848100 0.0054010959 0.0022581169 0.0049164688 + 1848200 0.0047333457 0.0022860651 0.0046157587 + 1848300 0.0057888656 0.002194388 0.0050435953 + 1848400 0.0054622628 0.0023915895 0.005080047 + 1848500 0.0059248318 0.0029236314 0.0058397596 + 1848600 0.0040095068 0.0030648882 0.0050383173 + 1848700 0.0059111071 0.0023688248 0.0052781979 + 1848800 0.0054172868 0.0024390272 0.0051053481 + 1848900 0.0070208916 0.0025671618 0.0060227569 + 1849000 0.004724782 0.0025884869 0.0049139655 + 1849100 0.0053265164 0.0026514622 0.005273107 + 1849200 0.0033529411 0.0023697388 0.0040200145 + 1849300 0.0044540227 0.0023620306 0.0045542449 + 1849400 0.0055284968 0.0022315086 0.0049525656 + 1849500 0.0036457713 0.0022485933 0.0040429964 + 1849600 0.0047417136 0.0021222733 0.0044560854 + 1849700 0.0057860543 0.001774611 0.0046224346 + 1849800 0.0053944584 0.002060481 0.004715566 + 1849900 0.0038387652 0.0026056477 0.0044950399 + 1850000 0.0049164014 0.0024579002 0.0048776915 + 1850100 0.0058634625 0.0019565724 0.0048424953 + 1850200 0.0073364201 0.0020673989 0.0056782931 + 1850300 0.0042555208 0.0021681261 0.0042626403 + 1850400 0.0056087858 0.0023942487 0.005154823 + 1850500 0.0057459801 0.0029505264 0.0057786259 + 1850600 0.0042882882 0.0029515747 0.0050622165 + 1850700 0.0046174863 0.0024875534 0.0047602225 + 1850800 0.0036369905 0.0025078208 0.0042979021 + 1850900 0.0044561347 0.0022503581 0.004443612 + 1851000 0.0044843582 0.0023873753 0.0045945203 + 1851100 0.0049394703 0.0023392001 0.0047703456 + 1851200 0.0042230222 0.0023102304 0.0043887491 + 1851300 0.0071762252 0.0022007768 0.0057328252 + 1851400 0.0042970609 0.0026495172 0.0047644768 + 1851500 0.0058965459 0.0026745763 0.0055767825 + 1851600 0.0054059417 0.0025722442 0.0052329812 + 1851700 0.0066319401 0.0026965125 0.0059606705 + 1851800 0.0066072348 0.0030885972 0.0063405956 + 1851900 0.0056313101 0.0030698164 0.0058414768 + 1852000 0.0053502195 0.0031426859 0.005775997 + 1852100 0.0058557708 0.0026686303 0.0055507675 + 1852200 0.0038576923 0.0026235122 0.0045222201 + 1852300 0.0038111654 0.0024515931 0.0043274011 + 1852400 0.0052085258 0.0021442695 0.0047078407 + 1852500 0.005401477 0.0026355922 0.0052941317 + 1852600 0.006985303 0.0027080225 0.0061461013 + 1852700 0.0056859042 0.0027272822 0.0055258131 + 1852800 0.0057359892 0.0031463233 0.0059695055 + 1852900 0.0046615671 0.0029153198 0.0052096849 + 1853000 0.0044095797 0.0024852492 0.0046555892 + 1853100 0.0046837822 0.0031883826 0.0054936816 + 1853200 0.0049301988 0.0035737318 0.006000314 + 1853300 0.0065595738 0.0029043468 0.006132887 + 1853400 0.0055032558 0.0024367131 0.0051453468 + 1853500 0.0038057409 0.0023078545 0.0041809926 + 1853600 0.0045012882 0.0023006524 0.0045161302 + 1853700 0.0052065069 0.002500923 0.0050635006 + 1853800 0.0042202466 0.0019984945 0.0040756472 + 1853900 0.004339723 0.0020389863 0.0041749437 + 1854000 0.0041196616 0.0021069941 0.00413464 + 1854100 0.0061360722 0.0020723062 0.0050924043 + 1854200 0.0040347251 0.0027041865 0.0046900278 + 1854300 0.0054632755 0.0025811143 0.0052700702 + 1854400 0.0064021063 0.002334433 0.0054854697 + 1854500 0.0058030263 0.0022148894 0.0050710664 + 1854600 0.0049767724 0.0018175855 0.0042670906 + 1854700 0.0055312395 0.0016646701 0.004387077 + 1854800 0.0045300512 0.0023492809 0.0045789155 + 1854900 0.004640963 0.0023878105 0.0046720345 + 1855000 0.0048504668 0.0021932125 0.0045805516 + 1855100 0.004647965 0.0024363792 0.0047240495 + 1855200 0.0078412364 0.002015546 0.0058749045 + 1855300 0.0049130905 0.002331263 0.0047494248 + 1855400 0.0051127284 0.0022695687 0.0047859897 + 1855500 0.0079244979 0.0022374752 0.006137814 + 1855600 0.0042753444 0.0024377542 0.0045420253 + 1855700 0.0049556914 0.0024035775 0.0048427068 + 1855800 0.0036937537 0.0022895355 0.0041075549 + 1855900 0.005991489 0.0027525034 0.0057014394 + 1856000 0.004689148 0.0033877572 0.0056956973 + 1856100 0.0062211485 0.0031845146 0.0062464862 + 1856200 0.0053055331 0.0033115284 0.0059228455 + 1856300 0.0057074055 0.0039510784 0.0067601921 + 1856400 0.0055782585 0.0037769536 0.0065225026 + 1856500 0.0048280099 0.0033241821 0.0057004682 + 1856600 0.0069805862 0.0026401759 0.0060759332 + 1856700 0.0064498861 0.0022167681 0.0053913214 + 1856800 0.0058621504 0.0028292454 0.0057145225 + 1856900 0.0037879703 0.0031138749 0.0049782665 + 1857000 0.003467584 0.0026480154 0.0043547169 + 1857100 0.0047823127 0.0022996061 0.0046534006 + 1857200 0.0038895265 0.0028356516 0.004750028 + 1857300 0.0043347494 0.002869831 0.0050033405 + 1857400 0.0054685304 0.0023681724 0.0050597147 + 1857500 0.0060147552 0.0022652952 0.0052256825 + 1857600 0.0045478284 0.002851587 0.0050899712 + 1857700 0.0053586913 0.0027302396 0.0053677205 + 1857800 0.0070846109 0.0017387752 0.0052257322 + 1857900 0.0064475545 0.0014661036 0.0046395093 + 1858000 0.0043763018 0.0019593739 0.0041133349 + 1858100 0.0053690229 0.0021017813 0.0047443472 + 1858200 0.0046563575 0.0025059352 0.0047977362 + 1858300 0.0041396473 0.002555403 0.0045928856 + 1858400 0.0047728038 0.0026282998 0.0049774142 + 1858500 0.006470428 0.0030093594 0.0061940232 + 1858600 0.0047605149 0.0031440111 0.005487077 + 1858700 0.0077366335 0.0030706843 0.0068785585 + 1858800 0.0048647783 0.0030753872 0.0054697703 + 1858900 0.004820027 0.0028120882 0.0051844453 + 1859000 0.0063891291 0.0026005306 0.0057451801 + 1859100 0.0051560952 0.0030488979 0.0055866636 + 1859200 0.0060566406 0.0028970592 0.005878062 + 1859300 0.0046943006 0.002506563 0.004817039 + 1859400 0.0055425033 0.0020302093 0.0047581601 + 1859500 0.0045982237 0.0018146755 0.0040778638 + 1859600 0.0035399145 0.0018665588 0.0036088604 + 1859700 0.0045423087 0.0021282529 0.0043639205 + 1859800 0.0037207733 0.0021305612 0.0039618793 + 1859900 0.0044054061 0.0021796917 0.0043479775 + 1860000 0.005932068 0.0022732282 0.0051929179 + 1860100 0.0043755592 0.0024842854 0.0046378809 + 1860200 0.0032876748 0.0028363968 0.0044545492 + 1860300 0.0059272851 0.0025166359 0.0054339715 + 1860400 0.004321436 0.0025575052 0.004684462 + 1860500 0.0054558672 0.002274636 0.0049599456 + 1860600 0.0049036477 0.0024563222 0.0048698363 + 1860700 0.0048760824 0.0019898265 0.0043897733 + 1860800 0.0046641324 0.0018851635 0.0041807912 + 1860900 0.0043780566 0.0020062402 0.004161065 + 1861000 0.0055492165 0.0020167843 0.0047480394 + 1861100 0.0033389333 0.0022804701 0.0039238514 + 1861200 0.0063803098 0.0024292257 0.0055695344 + 1861300 0.0035786872 0.0023830349 0.0041444201 + 1861400 0.0035567786 0.0025782852 0.0043288871 + 1861500 0.0032348035 0.0026225013 0.0042146311 + 1861600 0.0045525206 0.002443316 0.0046840097 + 1861700 0.0040119361 0.0025023235 0.0044769483 + 1861800 0.0045266604 0.0025172593 0.004745225 + 1861900 0.0045295604 0.002656538 0.004885931 + 1862000 0.0054644802 0.0028322449 0.0055217938 + 1862100 0.003208986 0.0024021322 0.003981555 + 1862200 0.0048134817 0.0022811453 0.0046502808 + 1862300 0.0048584428 0.0023475763 0.0047388411 + 1862400 0.0067717978 0.0026599531 0.0059929474 + 1862500 0.0059808181 0.0029197271 0.005863411 + 1862600 0.0039679724 0.0028907525 0.0048437389 + 1862700 0.0064531904 0.0030437782 0.0062199578 + 1862800 0.0065118712 0.0030695858 0.0062746474 + 1862900 0.0053216122 0.0027991428 0.0054183738 + 1863000 0.004739374 0.0027211267 0.0050537873 + 1863100 0.0052326824 0.0022610528 0.0048365137 + 1863200 0.0050972266 0.0021115552 0.0046203465 + 1863300 0.0066119305 0.0021021437 0.0053564533 + 1863400 0.0053203613 0.0023532343 0.0049718496 + 1863500 0.0050885517 0.0028047989 0.0053093205 + 1863600 0.0044068727 0.0026052602 0.0047742679 + 1863700 0.0056863712 0.0023029932 0.005101754 + 1863800 0.0044268932 0.0023771973 0.0045560588 + 1863900 0.0055537315 0.0027405363 0.0054740135 + 1864000 0.0068573457 0.0030670774 0.0064421772 + 1864100 0.0057276391 0.002540487 0.0053595594 + 1864200 0.0030694617 0.0029692888 0.0044800395 + 1864300 0.0048608225 0.0032036573 0.0055960934 + 1864400 0.0044595741 0.0028210258 0.0050159724 + 1864500 0.0051874258 0.0024520545 0.0050052407 + 1864600 0.0067960006 0.0022809881 0.0056258946 + 1864700 0.0059179746 0.002829365 0.0057421181 + 1864800 0.0052415302 0.0026229942 0.0052028099 + 1864900 0.0060549964 0.0029101503 0.0058903438 + 1865000 0.0045203163 0.0025853498 0.004810193 + 1865100 0.006091938 0.0019235087 0.0049218844 + 1865200 0.0047302797 0.0018730234 0.0042012079 + 1865300 0.0055399286 0.0021125419 0.0048392255 + 1865400 0.0039701251 0.0023686322 0.0043226782 + 1865500 0.0045390367 0.0026779331 0.0049119902 + 1865600 0.0053537474 0.0033727682 0.0060078157 + 1865700 0.004090182 0.0033816516 0.005394788 + 1865800 0.0064397508 0.0025797728 0.0057493377 + 1865900 0.0035855119 0.0028525187 0.0046172628 + 1866000 0.0051443394 0.0037132803 0.0062452598 + 1866100 0.0066165548 0.0031818656 0.0064384511 + 1866200 0.0048653112 0.0027777515 0.0051723968 + 1866300 0.0037216276 0.0023893801 0.0042211187 + 1866400 0.0049615152 0.0021048897 0.0045468854 + 1866500 0.0047106262 0.0022430462 0.0045615576 + 1866600 0.0048975355 0.0023237048 0.0047342105 + 1866700 0.0038036004 0.0023038832 0.0041759678 + 1866800 0.0053448426 0.0020609693 0.004691634 + 1866900 0.0054731906 0.0019144473 0.0046082833 + 1867000 0.0043384198 0.0019936323 0.0041289483 + 1867100 0.0034268818 0.002425875 0.0041125434 + 1867200 0.0033523165 0.0026065871 0.0042565554 + 1867300 0.0037396548 0.0023672759 0.0042078872 + 1867400 0.005117206 0.0023976735 0.0049162984 + 1867500 0.0052770044 0.002535848 0.0051331236 + 1867600 0.004308679 0.0030070198 0.0051276977 + 1867700 0.0055263505 0.0032094499 0.0059294505 + 1867800 0.0061098128 0.0031781068 0.0061852803 + 1867900 0.004660493 0.0032951244 0.0055889608 + 1868000 0.0067854571 0.0026265577 0.0059662748 + 1868100 0.0050968912 0.0022260605 0.0047346866 + 1868200 0.0048572885 0.0024735446 0.0048642412 + 1868300 0.0039092563 0.0021621323 0.0040862194 + 1868400 0.0056991046 0.0020548994 0.0048599274 + 1868500 0.005284039 0.0029604537 0.0055611917 + 1868600 0.0045160986 0.0034292952 0.0056520625 + 1868700 0.0034092828 0.003518588 0.0051965944 + 1868800 0.0030193527 0.0032730338 0.0047591215 + 1868900 0.0034438338 0.0028386575 0.0045336695 + 1869000 0.0047307941 0.0027731924 0.0051016302 + 1869100 0.0040447984 0.0028021227 0.0047929219 + 1869200 0.0048505393 0.0028608647 0.0052482395 + 1869300 0.0063625905 0.002919718 0.0060513055 + 1869400 0.0067848495 0.0031793113 0.0065187294 + 1869500 0.0045596958 0.0031859167 0.005430142 + 1869600 0.0057924945 0.0024790922 0.0053300856 + 1869700 0.0053072377 0.0021731322 0.0047852883 + 1869800 0.0056780667 0.0021036353 0.0048983087 + 1869900 0.0043032269 0.002188774 0.0043067685 + 1870000 0.0043671548 0.0024678133 0.0046172723 + 1870100 0.0046922885 0.002552911 0.0048623968 + 1870200 0.0053225288 0.0025836047 0.0052032868 + 1870300 0.0049462468 0.0025937607 0.0050282416 + 1870400 0.0060739788 0.0028547255 0.0058442619 + 1870500 0.0048340341 0.0028473073 0.0052265585 + 1870600 0.0058118076 0.0029229831 0.0057834821 + 1870700 0.0073615574 0.0032111231 0.0068343897 + 1870800 0.0042308895 0.0036316201 0.005714011 + 1870900 0.0053891732 0.0029727284 0.0056252121 + 1871000 0.004779606 0.0022234438 0.0045759062 + 1871100 0.0061932698 0.0024094366 0.0054576866 + 1871200 0.0045215771 0.002432079 0.0046575427 + 1871300 0.0041758229 0.002499802 0.0045550898 + 1871400 0.0056554092 0.0026633131 0.0054468349 + 1871500 0.0054185251 0.0029096757 0.005576606 + 1871600 0.0067017516 0.0031502069 0.0064487253 + 1871700 0.0047055816 0.0034096238 0.0057256523 + 1871800 0.0057692407 0.0032562317 0.0060957799 + 1871900 0.0046890195 0.0031299242 0.005437801 + 1872000 0.0055600953 0.0027866123 0.0055232217 + 1872100 0.0048912463 0.0023618494 0.0047692597 + 1872200 0.0046469393 0.0020241062 0.0043112716 + 1872300 0.0041755244 0.002041704 0.0040968449 + 1872400 0.0041896567 0.0025998113 0.004661908 + 1872500 0.004458692 0.002983104 0.0051776165 + 1872600 0.004688445 0.0027472915 0.0050548855 + 1872700 0.0040757138 0.0027332641 0.0047392794 + 1872800 0.0054063048 0.0026866045 0.0053475201 + 1872900 0.0037723437 0.0026832536 0.0045399541 + 1873000 0.0065930219 0.0028084968 0.0060534997 + 1873100 0.0051760692 0.0026146639 0.0051622605 + 1873200 0.004892065 0.0022055328 0.004613346 + 1873300 0.0055419029 0.0022264827 0.004954138 + 1873400 0.0048259498 0.0027062102 0.0050814824 + 1873500 0.0057972147 0.0024657324 0.005319049 + 1873600 0.0055570476 0.0021369903 0.0048720996 + 1873700 0.0043602796 0.0023875278 0.0045336029 + 1873800 0.0045517076 0.0024379645 0.0046782581 + 1873900 0.0063473709 0.0022268464 0.005350943 + 1874000 0.0043228575 0.0019217877 0.0040494441 + 1874100 0.0040155173 0.001815175 0.0037915624 + 1874200 0.0057612223 0.001763671 0.0045992726 + 1874300 0.0062082252 0.0022728136 0.0053284245 + 1874400 0.0045750219 0.002456557 0.0047083256 + 1874500 0.0037742823 0.0021123756 0.0039700302 + 1874600 0.004915498 0.0019859566 0.0044053033 + 1874700 0.0055706526 0.0019498607 0.0046916663 + 1874800 0.0054142919 0.0027370279 0.0054018747 + 1874900 0.0043241254 0.0025236152 0.0046518957 + 1875000 0.0048042712 0.0019815289 0.0043461311 + 1875100 0.0032159292 0.0019538075 0.0035366477 + 1875200 0.0058984061 0.0019814429 0.0048845647 + 1875300 0.0052965178 0.0021199849 0.0047268648 + 1875400 0.0047214343 0.0023473952 0.0046712262 + 1875500 0.0043756696 0.0025274583 0.0046811082 + 1875600 0.0049256375 0.0024113159 0.0048356531 + 1875700 0.0047309759 0.0022856241 0.0046141513 + 1875800 0.0057840598 0.0025421354 0.0053889773 + 1875900 0.0042040125 0.0029851736 0.005054336 + 1876000 0.0059212467 0.0024668687 0.0053812323 + 1876100 0.0054522521 0.0020222667 0.0047057971 + 1876200 0.0054662073 0.0022376383 0.0049280372 + 1876300 0.0050719505 0.0024173332 0.0049136838 + 1876400 0.0063523372 0.0025429751 0.005669516 + 1876500 0.0055843888 0.0029053706 0.005653937 + 1876600 0.0047151009 0.0027060821 0.0050267958 + 1876700 0.0054850462 0.0024727002 0.0051723714 + 1876800 0.0046210661 0.0025601136 0.0048345445 + 1876900 0.0037496477 0.0025373327 0.0043828624 + 1877000 0.0050432999 0.0019806088 0.004462858 + 1877100 0.0054592549 0.0020040705 0.0046910475 + 1877200 0.0051109297 0.0019649997 0.0044805354 + 1877300 0.0042384714 0.0022323685 0.0043184912 + 1877400 0.0041413068 0.0020872925 0.004125592 + 1877500 0.0052160394 0.0023711887 0.0049384581 + 1877600 0.0046370853 0.0029830081 0.0052653235 + 1877700 0.0057520258 0.0025043489 0.0053354241 + 1877800 0.0060626651 0.0024434345 0.0054274024 + 1877900 0.006902339 0.0027798959 0.0061771409 + 1878000 0.0051071781 0.0025592496 0.0050729388 + 1878100 0.0062690779 0.0027477316 0.0058332934 + 1878200 0.0047883709 0.0027006309 0.0050574072 + 1878300 0.0058615201 0.0024216622 0.0053066291 + 1878400 0.0060143139 0.0021480149 0.005108185 + 1878500 0.0048049723 0.0021512093 0.0045161565 + 1878600 0.0055340504 0.0025787165 0.0053025069 + 1878700 0.0052206628 0.0027529708 0.0053225158 + 1878800 0.0063180219 0.0030097719 0.0061194233 + 1878900 0.0063870988 0.0028288825 0.0059725327 + 1879000 0.0048685795 0.0032422683 0.0056385222 + 1879100 0.0034628061 0.0033188076 0.0050231575 + 1879200 0.005136643 0.0033882664 0.0059164579 + 1879300 0.005524731 0.0024085276 0.0051277312 + 1879400 0.0060786859 0.0019167448 0.0049085981 + 1879500 0.0077670229 0.0021747841 0.0059976157 + 1879600 0.0036522971 0.0030366173 0.0048342323 + 1879700 0.0052145422 0.0026096262 0.0051761586 + 1879800 0.0051987423 0.0024065817 0.0049653376 + 1879900 0.0060038876 0.0023294786 0.005284517 + 1880000 0.0053217054 0.0025471026 0.0051663794 + 1880100 0.004968597 0.0025506045 0.0049960858 + 1880200 0.0052091552 0.0022117118 0.0047755928 + 1880300 0.0058151918 0.0024907447 0.0053529094 + 1880400 0.0050961756 0.0028089656 0.0053172395 + 1880500 0.0040564377 0.0030026217 0.0049991496 + 1880600 0.0060662002 0.002636631 0.0056223389 + 1880700 0.0052255074 0.0024262224 0.0049981518 + 1880800 0.0053339541 0.002773885 0.0053991905 + 1880900 0.0055355189 0.0029046548 0.005629168 + 1881000 0.0056006053 0.0032436923 0.0060002402 + 1881100 0.0064665222 0.0033238678 0.0065066092 + 1881200 0.0054231342 0.0031412439 0.0058104427 + 1881300 0.0043154036 0.0028406641 0.0049646518 + 1881400 0.0045191024 0.0025884783 0.004812724 + 1881500 0.0044045411 0.0029250214 0.0050928815 + 1881600 0.0057528265 0.0026481177 0.005479587 + 1881700 0.0060190793 0.0025043423 0.0054668579 + 1881800 0.0045887559 0.0025979437 0.004856472 + 1881900 0.0057782809 0.0025737541 0.0054177517 + 1882000 0.0065270374 0.0026359224 0.0058484487 + 1882100 0.0060406032 0.0027429199 0.0057160293 + 1882200 0.0039788448 0.0029224545 0.0048807922 + 1882300 0.0066074788 0.0027595086 0.0060116271 + 1882400 0.0051453686 0.0025387668 0.0050712529 + 1882500 0.0060317613 0.002098868 0.0050676255 + 1882600 0.006448898 0.001923362 0.0050974289 + 1882700 0.0059669499 0.0023562779 0.0052931361 + 1882800 0.0060680488 0.0022946316 0.0052812494 + 1882900 0.0056021761 0.0020088256 0.0047661467 + 1883000 0.0056953704 0.0023894936 0.0051926837 + 1883100 0.0053216772 0.0029541438 0.0055734068 + 1883200 0.0065061726 0.0025832715 0.0057855284 + 1883300 0.0063202896 0.0024345595 0.005545327 + 1883400 0.0068579801 0.002325842 0.0057012541 + 1883500 0.0071121464 0.002743176 0.0062436856 + 1883600 0.0046543549 0.0032268637 0.005517679 + 1883700 0.0057006858 0.0028152103 0.0056210166 + 1883800 0.004771784 0.002453251 0.0048018635 + 1883900 0.0045633295 0.0022838651 0.0045298789 + 1884000 0.005878393 0.0025256948 0.0054189664 + 1884100 0.0054179506 0.0026863669 0.0053530144 + 1884200 0.0047204083 0.0025593078 0.0048826338 + 1884300 0.0056404512 0.0021281989 0.0049043585 + 1884400 0.0043066859 0.0025346106 0.0046543076 + 1884500 0.0051859231 0.0022041059 0.0047565524 + 1884600 0.0053210003 0.0021424945 0.0047614244 + 1884700 0.0047036404 0.002283601 0.004598674 + 1884800 0.0049688403 0.0020394648 0.0044850659 + 1884900 0.0054371927 0.0020240565 0.0047001747 + 1885000 0.0037103272 0.0021438145 0.0039699912 + 1885100 0.0054058411 0.0022021696 0.004862857 + 1885200 0.0046737251 0.0026378657 0.0049382147 + 1885300 0.0043638761 0.0024339663 0.0045818116 + 1885400 0.0034712784 0.0020999025 0.0038084224 + 1885500 0.0045385593 0.0022503089 0.0044841311 + 1885600 0.0054440823 0.0026524943 0.0053320035 + 1885700 0.0036201468 0.0030876091 0.0048694001 + 1885800 0.0050205264 0.0026878016 0.0051588419 + 1885900 0.0062864707 0.0023182757 0.005412398 + 1886000 0.0044907035 0.0029694419 0.0051797101 + 1886100 0.0044914696 0.0033071486 0.0055177938 + 1886200 0.0053991399 0.0030902825 0.0057476717 + 1886300 0.004363116 0.0030140239 0.0051614951 + 1886400 0.004098891 0.0025808328 0.0045982557 + 1886500 0.006086939 0.0027443563 0.0057402716 + 1886600 0.005660049 0.0021133646 0.00489917 + 1886700 0.0058828921 0.0022571012 0.0051525872 + 1886800 0.0057290175 0.0024425344 0.0052622852 + 1886900 0.0052050316 0.0024592864 0.0050211379 + 1887000 0.0062320746 0.002126873 0.0051942222 + 1887100 0.0047384274 0.0019866885 0.0043188832 + 1887200 0.0054033272 0.002203792 0.0048632421 + 1887300 0.0059731553 0.0024067677 0.00534668 + 1887400 0.0056235999 0.0026351924 0.005403058 + 1887500 0.0050510843 0.0025432248 0.0050293054 + 1887600 0.0063842634 0.001975656 0.0051179107 + 1887700 0.0049133788 0.0020984213 0.0045167249 + 1887800 0.0035723495 0.0027499399 0.0045082057 + 1887900 0.0043977587 0.002784853 0.0049493749 + 1888000 0.0041508509 0.0026746503 0.0047176473 + 1888100 0.0037450268 0.0028595053 0.0047027607 + 1888200 0.0054304018 0.0028392663 0.0055120423 + 1888300 0.0059788406 0.0023610872 0.0053037978 + 1888400 0.0044911688 0.0023294794 0.0045399765 + 1888500 0.0048887035 0.002411555 0.0048177137 + 1888600 0.0067854657 0.0025141355 0.0058538568 + 1888700 0.0054149271 0.0024267432 0.0050919026 + 1888800 0.0059421908 0.002135976 0.005060648 + 1888900 0.0065538005 0.0026626792 0.0058883779 + 1889000 0.0057745754 0.003396202 0.0062383758 + 1889100 0.0050456416 0.0033006467 0.0057840484 + 1889200 0.0064315123 0.0026438821 0.0058093921 + 1889300 0.0047622908 0.0026906596 0.0050345996 + 1889400 0.0066720012 0.0024799867 0.0057638623 + 1889500 0.005092495 0.0030872875 0.0055937499 + 1889600 0.0055532969 0.002912351 0.0056456144 + 1889700 0.0049216734 0.0025312593 0.0049536454 + 1889800 0.0055179201 0.0021624802 0.0048783316 + 1889900 0.0058660801 0.0023685641 0.0052557754 + 1890000 0.0040871469 0.0025248624 0.004536505 + 1890100 0.0039133457 0.002547627 0.0044737268 + 1890200 0.0048779036 0.0020820696 0.0044829128 + 1890300 0.003670163 0.0021596624 0.0039660708 + 1890400 0.0038677989 0.0017526133 0.0036562956 + 1890500 0.0045336887 0.0019887565 0.0042201814 + 1890600 0.0046748432 0.0021420554 0.0044429548 + 1890700 0.0051422933 0.0021353131 0.0046662856 + 1890800 0.004183233 0.0022456088 0.0043045438 + 1890900 0.0046981875 0.0024632108 0.0047756 + 1891000 0.0054956389 0.0026731675 0.0053780523 + 1891100 0.00592023 0.0026331005 0.0055469637 + 1891200 0.0045474332 0.0026325063 0.0048706961 + 1891300 0.004608103 0.0023316489 0.0045996996 + 1891400 0.0049420919 0.0022813318 0.0047137676 + 1891500 0.0040376491 0.0023860826 0.0043733631 + 1891600 0.0050536753 0.0023425254 0.0048298812 + 1891700 0.006246103 0.0024611363 0.0055353901 + 1891800 0.0054245812 0.0026307377 0.0053006488 + 1891900 0.0034357716 0.0028114619 0.0045025057 + 1892000 0.005852963 0.0025949164 0.0054756716 + 1892100 0.0032238035 0.0026165193 0.0042032351 + 1892200 0.0043276504 0.0022178521 0.0043478676 + 1892300 0.0029282277 0.0023074366 0.0037486737 + 1892400 0.0047213097 0.002145576 0.0044693456 + 1892500 0.0052583168 0.0026234272 0.005211505 + 1892600 0.0045403233 0.0029854234 0.0052201137 + 1892700 0.0046729552 0.0024699087 0.0047698788 + 1892800 0.0036037751 0.0024426173 0.0042163504 + 1892900 0.0041537882 0.0026871798 0.0047316225 + 1893000 0.0043700778 0.0024405039 0.0045914015 + 1893100 0.0057534432 0.0026399166 0.0054716895 + 1893200 0.0057451902 0.0031598989 0.0059876097 + 1893300 0.0046728407 0.0032290993 0.0055290131 + 1893400 0.0051401508 0.0025692376 0.0050991556 + 1893500 0.0053003285 0.0025457037 0.0051544592 + 1893600 0.0043298698 0.0027343414 0.0048654492 + 1893700 0.0057948319 0.002908147 0.0057602908 + 1893800 0.0053442013 0.0031336372 0.0057639863 + 1893900 0.0049870934 0.0030326422 0.0054872273 + 1894000 0.0069012689 0.0024843334 0.0058810517 + 1894100 0.0067647341 0.0022403894 0.0055699069 + 1894200 0.005279849 0.002743924 0.0053425996 + 1894300 0.0047544748 0.0029099247 0.0052500177 + 1894400 0.005261512 0.0026219833 0.0052116337 + 1894500 0.0047897687 0.0022566937 0.004614158 + 1894600 0.0038228123 0.0023490056 0.0042305461 + 1894700 0.0048933473 0.0023661411 0.0047745855 + 1894800 0.004569812 0.0023610351 0.0046102394 + 1894900 0.0056709631 0.0022587003 0.0050498774 + 1895000 0.0046414976 0.0025295381 0.0048140252 + 1895100 0.0049476506 0.0022759687 0.0047111405 + 1895200 0.0046190611 0.0021311927 0.0044046369 + 1895300 0.0053049037 0.0020429943 0.0046540015 + 1895400 0.0057968098 0.0028995619 0.0057526792 + 1895500 0.0058788921 0.0027155978 0.005609115 + 1895600 0.0052798314 0.0021210403 0.0047197073 + 1895700 0.0056612492 0.0022980319 0.005084428 + 1895800 0.0057096335 0.0022189923 0.0050292025 + 1895900 0.0069880069 0.0023877053 0.005827115 + 1896000 0.0039568412 0.0024774863 0.0044249941 + 1896100 0.0047992374 0.0025952209 0.0049573455 + 1896200 0.0049993603 0.0022526371 0.0047132598 + 1896300 0.0048849859 0.0018396167 0.0042439457 + 1896400 0.0059910115 0.0016357106 0.0045844115 + 1896500 0.0054455163 0.0026757124 0.0053559275 + 1896600 0.0055475272 0.0029801363 0.0057105598 + 1896700 0.0062025814 0.0026967139 0.005749547 + 1896800 0.0053409441 0.0026173818 0.0052461277 + 1896900 0.0059782583 0.002331711 0.005274135 + 1897000 0.0041660061 0.002263472 0.0043139281 + 1897100 0.0060125142 0.0025125687 0.005471853 + 1897200 0.0052006584 0.002801335 0.005361034 + 1897300 0.0039730566 0.0025779126 0.0045334014 + 1897400 0.0064602853 0.0024174398 0.0055971114 + 1897500 0.0043274972 0.002183524 0.0043134641 + 1897600 0.0047117235 0.0023839942 0.0047030456 + 1897700 0.0041941499 0.0023383437 0.0044026518 + 1897800 0.0053648276 0.0021908695 0.0048313706 + 1897900 0.0046141106 0.0025917137 0.0048627213 + 1898000 0.0070300038 0.0020430173 0.0055030973 + 1898100 0.0060237868 0.0020215711 0.0049864036 + 1898200 0.0046759737 0.0025797097 0.0048811655 + 1898300 0.0048025004 0.0030650425 0.0054287732 + 1898400 0.0051496978 0.0025402781 0.005074895 + 1898500 0.0047195978 0.0024327316 0.0047556586 + 1898600 0.0063573374 0.0024042639 0.0055332659 + 1898700 0.0046162812 0.0024931112 0.0047651871 + 1898800 0.0041033627 0.0023308286 0.0043504525 + 1898900 0.0041240946 0.0021934837 0.0042233115 + 1899000 0.004850002 0.0021318491 0.0045189594 + 1899100 0.0065869038 0.0020879619 0.0053299536 + 1899200 0.0043778449 0.0018211242 0.0039758448 + 1899300 0.0050030669 0.0012983126 0.0037607596 + 1899400 0.0039187712 0.0013228747 0.0032516449 + 1899500 0.0032449361 0.0016668573 0.0032639742 + 1899600 0.0056672129 0.0018036778 0.0045930091 + 1899700 0.0037992044 0.0020791727 0.0039490937 + 1899800 0.0045470024 0.0021182486 0.0043562263 + 1899900 0.0047231047 0.0022173972 0.0045420503 + 1900000 0.0053300875 0.0022916035 0.004915006 + 1900100 0.0048306604 0.0025569351 0.0049345257 + 1900200 0.0040966856 0.0027455851 0.0047619225 + 1900300 0.0043303269 0.002996066 0.0051273987 + 1900400 0.0051381071 0.0028505418 0.0053794539 + 1900500 0.0059490862 0.0020907957 0.0050188616 + 1900600 0.0048679756 0.0022374171 0.0046333739 + 1900700 0.005012857 0.0021693215 0.0046365871 + 1900800 0.0050708109 0.0023779739 0.0048737636 + 1900900 0.0041821971 0.0026376227 0.0046960478 + 1901000 0.005404535 0.0030704857 0.0057305302 + 1901100 0.0047944112 0.0030860373 0.0054457865 + 1901200 0.0070357249 0.0026255956 0.0060884914 + 1901300 0.0045535371 0.002569472 0.0048106661 + 1901400 0.0039118465 0.0026214576 0.0045468195 + 1901500 0.0073550191 0.0024203993 0.0060404477 + 1901600 0.0057117371 0.0027114287 0.0055226743 + 1901700 0.0065490838 0.0025668453 0.0057902224 + 1901800 0.004260773 0.0024469972 0.0045440964 + 1901900 0.0041750038 0.0021509692 0.0042058539 + 1902000 0.0045457156 0.0024178128 0.0046551572 + 1902100 0.0059872773 0.0024372182 0.0053840813 + 1902200 0.0045160632 0.0035003738 0.0057231237 + 1902300 0.0055001476 0.0034006115 0.0061077154 + 1902400 0.0059550829 0.0031375481 0.0060685655 + 1902500 0.0050391372 0.0031961305 0.0056763308 + 1902600 0.0042426149 0.0025121536 0.0046003156 + 1902700 0.0047949495 0.0021866065 0.0045466207 + 1902800 0.0039367236 0.0023732024 0.0043108086 + 1902900 0.0047595488 0.0026923367 0.0050349271 + 1903000 0.0044576031 0.0031222722 0.0053162487 + 1903100 0.004150805 0.0028512973 0.0048942716 + 1903200 0.0039852276 0.0024151036 0.0043765828 + 1903300 0.0037228981 0.0022708435 0.0041032073 + 1903400 0.004917446 0.0022102479 0.0046305533 + 1903500 0.0047431145 0.002589296 0.0049237977 + 1903600 0.0043696452 0.0027557655 0.0049064503 + 1903700 0.005185098 0.0025393957 0.0050914361 + 1903800 0.0057310578 0.0023195051 0.0051402601 + 1903900 0.0053102874 0.0024383993 0.0050520564 + 1904000 0.0052027173 0.0026509567 0.0052116691 + 1904100 0.0043211835 0.0025741276 0.0047009601 + 1904200 0.0041580641 0.0023446171 0.0043911642 + 1904300 0.0041864551 0.0024657771 0.004526298 + 1904400 0.0056566883 0.0021790954 0.0049632467 + 1904500 0.006778714 0.002712637 0.0060490354 + 1904600 0.0039736841 0.0031408601 0.0050966578 + 1904700 0.0050912493 0.0028153415 0.0053211908 + 1904800 0.005076642 0.0028085208 0.0053071805 + 1904900 0.0032943059 0.0024980852 0.0041195014 + 1905000 0.0037882655 0.0020867276 0.0039512645 + 1905100 0.0053723012 0.0021475057 0.0047916852 + 1905200 0.0073327848 0.002153062 0.005762167 + 1905300 0.005440251 0.002276741 0.0049543645 + 1905400 0.0032125915 0.0028348256 0.004416023 + 1905500 0.0054312733 0.002476392 0.0051495968 + 1905600 0.0048966453 0.001953348 0.0043634156 + 1905700 0.0048121145 0.0016774856 0.0040459482 + 1905800 0.0046266203 0.002101896 0.0043790607 + 1905900 0.0057664022 0.0019710096 0.0048091607 + 1906000 0.0049416028 0.0024064764 0.0048386715 + 1906100 0.007570037 0.0025902875 0.0063161651 + 1906200 0.0068214384 0.0029560065 0.0063134332 + 1906300 0.0050311319 0.0029884823 0.0054647425 + 1906400 0.0060765472 0.0028586423 0.0058494428 + 1906500 0.0046787191 0.0025389079 0.004841715 + 1906600 0.0044540714 0.0022714216 0.0044636598 + 1906700 0.0044067025 0.0019346154 0.0041035393 + 1906800 0.005059984 0.0019276435 0.0044181043 + 1906900 0.0050416392 0.0021345997 0.0046160315 + 1907000 0.002996101 0.0021540088 0.0036286523 + 1907100 0.0051071641 0.0019251077 0.00443879 + 1907200 0.0044396102 0.0016589167 0.0038440374 + 1907300 0.0050889076 0.0020489349 0.0045536316 + 1907400 0.0055755347 0.0023837472 0.0051279557 + 1907500 0.0049106105 0.0021196967 0.0045366379 + 1907600 0.0059661707 0.0020762518 0.0050127265 + 1907700 0.0047166881 0.0024016827 0.0047231776 + 1907800 0.0049089498 0.0031022377 0.0055183614 + 1907900 0.005397857 0.0031730682 0.0058298259 + 1908000 0.0047662876 0.0023375764 0.0046834836 + 1908100 0.0046199691 0.001775239 0.00404913 + 1908200 0.0050452228 0.0018444428 0.0043276383 + 1908300 0.0047603733 0.0017920082 0.0041350045 + 1908400 0.0038675141 0.0016875472 0.0035910893 + 1908500 0.004835123 0.0016088029 0.00398859 + 1908600 0.0058328719 0.0018367944 0.0047076611 + 1908700 0.0047179976 0.0020597241 0.0043818635 + 1908800 0.0059366768 0.0024961091 0.0054180672 + 1908900 0.004227242 0.0028320478 0.0049126435 + 1909000 0.0057554033 0.0030182397 0.0058509772 + 1909100 0.0061576564 0.0027027229 0.0057334444 + 1909200 0.0052513319 0.0033031546 0.0058877945 + 1909300 0.0048859401 0.0036683538 0.0060731524 + 1909400 0.0055377487 0.0029829006 0.0057085113 + 1909500 0.0047643415 0.0027919961 0.0051369454 + 1909600 0.0054951702 0.0029891037 0.0056937578 + 1909700 0.0041095528 0.0025528422 0.0045755127 + 1909800 0.007272566 0.0022218834 0.0058013495 + 1909900 0.0039220409 0.0022547404 0.0041851199 + 1910000 0.0047225379 0.002514619 0.0048389931 + 1910100 0.0058879728 0.0027466564 0.005644643 + 1910200 0.006528338 0.0026450181 0.0058581845 + 1910300 0.0046439253 0.0024163572 0.0047020392 + 1910400 0.0051834228 0.0026579842 0.0052092 + 1910500 0.0040563731 0.0026631551 0.0046596512 + 1910600 0.0050328442 0.0029919211 0.0054690242 + 1910700 0.0050630107 0.0035057353 0.0059976859 + 1910800 0.0049746875 0.0026685022 0.0051169812 + 1910900 0.0057173477 0.0020991767 0.0049131837 + 1911000 0.0046907694 0.0022966537 0.0046053918 + 1911100 0.0065888469 0.0026599633 0.0059029114 + 1911200 0.00427356 0.0022274448 0.0043308376 + 1911300 0.0053582195 0.002015108 0.0046523566 + 1911400 0.0048187241 0.0021585839 0.0045302997 + 1911500 0.0058522389 0.0023088198 0.0051892186 + 1911600 0.0057870962 0.0023608358 0.0052091722 + 1911700 0.0060391836 0.0028022399 0.0057746506 + 1911800 0.004150109 0.0032498756 0.0052925074 + 1911900 0.007629351 0.0028020814 0.0065571526 + 1912000 0.0066731973 0.0032815621 0.0065660263 + 1912100 0.0050280362 0.0032963667 0.0057711032 + 1912200 0.0045765045 0.0028652027 0.005117701 + 1912300 0.0047195925 0.0027956166 0.005118541 + 1912400 0.0077001644 0.0027999169 0.0065898416 + 1912500 0.0048165925 0.0025380028 0.0049086694 + 1912600 0.007696698 0.0026624425 0.006450661 + 1912700 0.0041079889 0.0028555062 0.004877407 + 1912800 0.0052192108 0.0024016141 0.0049704444 + 1912900 0.0049426902 0.002582116 0.0050148463 + 1913000 0.0046256853 0.0030066141 0.0052833186 + 1913100 0.0047843624 0.0035995933 0.0059543967 + 1913200 0.0063358234 0.003427947 0.0065463601 + 1913300 0.0059560744 0.002920499 0.0058520043 + 1913400 0.0041158383 0.0028066148 0.004832379 + 1913500 0.0064308144 0.0023463427 0.0055115092 + 1913600 0.005041651 0.00265289 0.0051343275 + 1913700 0.0046494252 0.0030958059 0.0053841949 + 1913800 0.0047279327 0.0027650252 0.0050920546 + 1913900 0.0069718217 0.002398766 0.0058302095 + 1914000 0.0040504757 0.0022822345 0.004275828 + 1914100 0.0068041484 0.0022742631 0.0056231798 + 1914200 0.0054643207 0.002142423 0.0048318934 + 1914300 0.0056139546 0.002363668 0.0051267863 + 1914400 0.0057601367 0.0027706486 0.0056057158 + 1914500 0.0027285846 0.00303235 0.0043753252 + 1914600 0.0059873074 0.0029319225 0.0058788004 + 1914700 0.0040133114 0.0027049917 0.0046802934 + 1914800 0.0049003588 0.0022504487 0.0046623441 + 1914900 0.0044893426 0.0021901289 0.0043997272 + 1915000 0.0066817682 0.0020660453 0.0053547281 + 1915100 0.0047132426 0.0021029413 0.0044227404 + 1915200 0.005278895 0.0019373865 0.0045355926 + 1915300 0.0051287813 0.0018019601 0.0043262822 + 1915400 0.0059525341 0.002014033 0.0049437959 + 1915500 0.0056357336 0.0018295806 0.0046034182 + 1915600 0.0049980416 0.0018706758 0.0043306494 + 1915700 0.0056904148 0.0022325439 0.0050332949 + 1915800 0.0058885468 0.0025350444 0.0054333135 + 1915900 0.005349483 0.0024452148 0.0050781635 + 1916000 0.0050838221 0.0020246399 0.0045268337 + 1916100 0.0051209928 0.001816397 0.0043368857 + 1916200 0.0058039751 0.0022564188 0.0051130627 + 1916300 0.0055975955 0.0024994365 0.0052545031 + 1916400 0.0047112445 0.0025587713 0.004877587 + 1916500 0.0042882349 0.003044653 0.0051552687 + 1916600 0.0053242482 0.0027546238 0.0053751522 + 1916700 0.0038883807 0.0026727715 0.0045865839 + 1916800 0.003688847 0.0030532563 0.0048688606 + 1916900 0.0037975175 0.003511902 0.0053809926 + 1917000 0.0057643247 0.0029355395 0.005772668 + 1917100 0.005111019 0.0028043355 0.0053199151 + 1917200 0.0060825139 0.0025017641 0.0054955014 + 1917300 0.0062536089 0.0029044536 0.0059824018 + 1917400 0.0050425253 0.0025370735 0.0050189414 + 1917500 0.0054135027 0.002245707 0.0049101654 + 1917600 0.0065485632 0.0023249025 0.0055480234 + 1917700 0.0048849791 0.0022546502 0.0046589759 + 1917800 0.0051482475 0.0021951351 0.0047290382 + 1917900 0.0053544621 0.0020075348 0.0046429341 + 1918000 0.0053262883 0.0019328457 0.0045543783 + 1918100 0.0060461978 0.001651526 0.004627389 + 1918200 0.0046698301 0.0018758811 0.0041743132 + 1918300 0.0042708431 0.0019947964 0.004096852 + 1918400 0.0039956408 0.0019069849 0.0038735893 + 1918500 0.0038001177 0.0020832957 0.0039536662 + 1918600 0.0048608402 0.0020100984 0.0044025432 + 1918700 0.0036821439 0.0024000724 0.0042123776 + 1918800 0.0061682744 0.0024691375 0.005505085 + 1918900 0.006099424 0.0024157024 0.0054177626 + 1919000 0.0043264222 0.002640324 0.004769735 + 1919100 0.0038973467 0.0025444394 0.0044626648 + 1919200 0.0050867038 0.0025724956 0.0050761077 + 1919300 0.0052029358 0.0024809639 0.0050417839 + 1919400 0.0050322349 0.002048704 0.0045255071 + 1919500 0.0060410557 0.0021798289 0.005153161 + 1919600 0.0037607224 0.0022657796 0.0041167601 + 1919700 0.0051398142 0.0020738906 0.0046036429 + 1919800 0.0037165375 0.0019577776 0.0037870109 + 1919900 0.0031281502 0.0018735888 0.0034132252 + 1920000 0.0051947165 0.0017730936 0.0043298682 + 1920100 0.004330287 0.002288851 0.0044201641 + 1920200 0.0048950272 0.0025740787 0.0049833498 + 1920300 0.0035704254 0.0025333977 0.0042907165 + 1920400 0.0043962745 0.0026224325 0.0047862238 + 1920500 0.0039251136 0.0027513093 0.0046832012 + 1920600 0.0044635229 0.0031175181 0.0053144083 + 1920700 0.0056043101 0.0033182104 0.0060765818 + 1920800 0.0046069116 0.0034868964 0.0057543607 + 1920900 0.003577433 0.0037292382 0.005490006 + 1921000 0.0063838813 0.0027244262 0.0058664928 + 1921100 0.0041506989 0.0025888331 0.0046317552 + 1921200 0.0048619386 0.0022635713 0.0046565567 + 1921300 0.0044773337 0.0021662926 0.0043699803 + 1921400 0.003900307 0.0023464508 0.0042661331 + 1921500 0.0044703712 0.0023756772 0.004575938 + 1921600 0.004932632 0.0023256903 0.0047534701 + 1921700 0.0043420133 0.0023648547 0.0045019394 + 1921800 0.0045997431 0.0022586051 0.0045225412 + 1921900 0.0053365641 0.0023498205 0.0049764107 + 1922000 0.0053821284 0.0025420177 0.005191034 + 1922100 0.0052308199 0.0028014342 0.0053759784 + 1922200 0.0041631041 0.0026841886 0.0047332164 + 1922300 0.0054832129 0.0024144963 0.0051132651 + 1922400 0.0055782326 0.002206884 0.0049524204 + 1922500 0.0032460741 0.0020926455 0.0036903226 + 1922600 0.0066380088 0.0020062945 0.0052734395 + 1922700 0.0056985402 0.0025442235 0.0053489738 + 1922800 0.0036198238 0.0032067891 0.0049884211 + 1922900 0.0054192648 0.0030056309 0.0056729252 + 1923000 0.0061245558 0.0027178274 0.0057322572 + 1923100 0.0051370424 0.0025178819 0.00504627 + 1923200 0.0047593132 0.0028112136 0.005153688 + 1923300 0.0044549868 0.0025814598 0.0047741486 + 1923400 0.0049665583 0.0022443608 0.0046888387 + 1923500 0.0051670012 0.0023279618 0.0048710952 + 1923600 0.0039239176 0.002548313 0.0044796162 + 1923700 0.0044777504 0.0020788479 0.0042827407 + 1923800 0.004624284 0.0020832828 0.0043592976 + 1923900 0.0051181058 0.0023570135 0.0048760812 + 1924000 0.0040273889 0.0027529132 0.0047351437 + 1924100 0.0053706508 0.0025842545 0.0052276217 + 1924200 0.0049351878 0.0029627551 0.0053917928 + 1924300 0.003545962 0.0035518227 0.0052971009 + 1924400 0.0058439293 0.0027194861 0.005595795 + 1924500 0.0049057266 0.0020828384 0.0044973757 + 1924600 0.0046912841 0.0017704634 0.0040794548 + 1924700 0.0063113997 0.0018522129 0.0049586049 + 1924800 0.0059624955 0.0023540125 0.0052886782 + 1924900 0.0044409137 0.0027953922 0.0049811544 + 1925000 0.0039595608 0.0028850509 0.0048338972 + 1925100 0.0065169571 0.0023095459 0.0055171108 + 1925200 0.0067160917 0.0020422623 0.0053478387 + 1925300 0.0058567461 0.0023641951 0.0052468123 + 1925400 0.0060221967 0.0028426603 0.0058067103 + 1925500 0.005649952 0.0032380688 0.0060189045 + 1925600 0.0041657719 0.0031699087 0.0052202495 + 1925700 0.0060815552 0.0023825441 0.0053758096 + 1925800 0.0063190234 0.0016302848 0.0047404292 + 1925900 0.0046709849 0.0022551573 0.0045541577 + 1926000 0.0058368811 0.0031983217 0.0060711616 + 1926100 0.0052961946 0.0038102184 0.0064169391 + 1926200 0.0052895126 0.003454049 0.006057481 + 1926300 0.006124378 0.0034426464 0.0064569887 + 1926400 0.0044815633 0.0040705536 0.0062763231 + 1926500 0.0044242635 0.0036164399 0.0057940071 + 1926600 0.0052713896 0.0030829619 0.005677474 + 1926700 0.0072500218 0.0030359495 0.0066043196 + 1926800 0.0055454671 0.0030713128 0.0058007224 + 1926900 0.0074944746 0.0027506489 0.0064393357 + 1927000 0.0049960805 0.0029627922 0.0054218006 + 1927100 0.004418773 0.0028766592 0.005051524 + 1927200 0.0043189672 0.0030675052 0.0051932469 + 1927300 0.0049815153 0.0023808584 0.004832698 + 1927400 0.006308883 0.0017544495 0.0048596028 + 1927500 0.004438817 0.0018419462 0.0040266764 + 1927600 0.0055998075 0.0018429951 0.0045991503 + 1927700 0.0039662932 0.0021295364 0.0040816963 + 1927800 0.0044685427 0.0026220553 0.0048214162 + 1927900 0.0049762662 0.002725274 0.00517453 + 1928000 0.0053023664 0.0023780196 0.004987778 + 1928100 0.0041435239 0.0023367904 0.0043761811 + 1928200 0.0049575096 0.00210858 0.0045486043 + 1928300 0.0063884718 0.0018600774 0.0050044033 + 1928400 0.0055266316 0.0019648135 0.0046849525 + 1928500 0.0050120423 0.0022745893 0.0047414539 + 1928600 0.0043486374 0.0026795747 0.0048199197 + 1928700 0.005879917 0.0029380033 0.005832025 + 1928800 0.0065891246 0.0026662551 0.0059093399 + 1928900 0.0039052761 0.0023757496 0.0042978777 + 1929000 0.0053138672 0.0021842282 0.0047996472 + 1929100 0.0031450727 0.0020439062 0.0035918717 + 1929200 0.0047279656 0.0018760313 0.0042030769 + 1929300 0.0050209108 0.0019270717 0.0043983012 + 1929400 0.005032235 0.0015083042 0.0039851074 + 1929500 0.0040398011 0.0017281006 0.0037164402 + 1929600 0.0040108597 0.0021542557 0.0041283507 + 1929700 0.0051965528 0.0024851577 0.0050428361 + 1929800 0.0052707378 0.0027267839 0.0053209752 + 1929900 0.0028536884 0.0025999506 0.0040045004 + 1930000 0.0042516575 0.0024275455 0.0045201582 + 1930100 0.004983334 0.0024988933 0.004951628 + 1930200 0.0050479883 0.0026307939 0.0051153506 + 1930300 0.0065120059 0.002245208 0.0054503359 + 1930400 0.0062018765 0.0024094151 0.0054619012 + 1930500 0.0043514347 0.0023706209 0.0045123427 + 1930600 0.0043563884 0.0026113649 0.0047555248 + 1930700 0.0060091242 0.00236401 0.0053216258 + 1930800 0.003104329 0.002848696 0.004376608 + 1930900 0.0048784827 0.0026897402 0.0050908684 + 1931000 0.0063577913 0.0025383558 0.0056675812 + 1931100 0.0033163564 0.00284296 0.0044752292 + 1931200 0.0060514918 0.002577335 0.0055558036 + 1931300 0.0051392801 0.0025614613 0.0050909507 + 1931400 0.0050410908 0.0028551437 0.0053363055 + 1931500 0.00511992 0.0030768724 0.005596833 + 1931600 0.0050654393 0.0033412104 0.0058343563 + 1931700 0.0044601041 0.0025499883 0.0047451958 + 1931800 0.0036216655 0.0025702389 0.0043527774 + 1931900 0.0047548449 0.0028661313 0.0052064066 + 1932000 0.0049478185 0.0027961375 0.0052313919 + 1932100 0.0050225206 0.002730362 0.0052023839 + 1932200 0.005778871 0.0025453649 0.005389653 + 1932300 0.0049965016 0.0024927179 0.0049519335 + 1932400 0.0057106809 0.0025594703 0.0053701961 + 1932500 0.0055127515 0.0026162254 0.0053295328 + 1932600 0.0043926689 0.0026909047 0.0048529214 + 1932700 0.0051962762 0.0023331953 0.0048907374 + 1932800 0.0047392967 0.0024737647 0.0048063873 + 1932900 0.0054556969 0.002823279 0.0055085048 + 1933000 0.004956996 0.0028693847 0.0053091561 + 1933100 0.0042062344 0.002938057 0.005008313 + 1933200 0.0056051874 0.0034255414 0.0061843446 + 1933300 0.0048563142 0.0033062822 0.0056964993 + 1933400 0.005235212 0.0031473982 0.0057241041 + 1933500 0.0065727364 0.0023668875 0.0056019062 + 1933600 0.0059748916 0.0023437225 0.0052844894 + 1933700 0.0053190794 0.0031124324 0.0057304168 + 1933800 0.005985915 0.0036479081 0.0065941006 + 1933900 0.0059375943 0.0033772407 0.0062996504 + 1934000 0.004699284 0.003005606 0.0053185349 + 1934100 0.004053937 0.0031747434 0.0051700405 + 1934200 0.0058182129 0.0028281804 0.0056918321 + 1934300 0.0050716018 0.0025387934 0.0050349724 + 1934400 0.0036908703 0.0027327942 0.0045493944 + 1934500 0.0032370182 0.0024725305 0.0040657504 + 1934600 0.0035705637 0.00224111 0.0039984968 + 1934700 0.0039971964 0.002169627 0.0041369971 + 1934800 0.0051397675 0.0017770427 0.0043067721 + 1934900 0.00461032 0.0021080832 0.0043772251 + 1935000 0.004324499 0.0022287176 0.0043571819 + 1935100 0.0034532641 0.0023118702 0.0040115236 + 1935200 0.0051344814 0.0021074178 0.0046345454 + 1935300 0.0050470782 0.0021592986 0.0046434074 + 1935400 0.0033818952 0.0024234119 0.0040879385 + 1935500 0.0045808859 0.0025190898 0.0047737445 + 1935600 0.0054240134 0.0026066994 0.005276331 + 1935700 0.0042887173 0.0029593556 0.0050702086 + 1935800 0.0059985647 0.0026345396 0.0055869581 + 1935900 0.004796757 0.0025065503 0.0048674541 + 1936000 0.0049364587 0.0024822509 0.0049119141 + 1936100 0.004594675 0.0023203344 0.004581776 + 1936200 0.0046762124 0.0021445269 0.0044461002 + 1936300 0.0048598418 0.0022677673 0.0046597207 + 1936400 0.0065516638 0.00171545 0.004940097 + 1936500 0.0060673449 0.0016095987 0.00459587 + 1936600 0.0070462544 0.0018204232 0.0052885015 + 1936700 0.0055736607 0.0025027203 0.0052460065 + 1936800 0.0044036138 0.0025697214 0.0047371251 + 1936900 0.0039441818 0.0020478288 0.0039891057 + 1937000 0.0061509227 0.002090052 0.0051174593 + 1937100 0.0036223589 0.0022728492 0.004055729 + 1937200 0.0042139815 0.0022576716 0.0043317406 + 1937300 0.0037037538 0.002398906 0.0042218473 + 1937400 0.0049894115 0.0025814065 0.0050371324 + 1937500 0.0055789872 0.0028142555 0.0055601633 + 1937600 0.007081208 0.0032461718 0.0067314539 + 1937700 0.006231307 0.0026053404 0.0056723118 + 1937800 0.0060089869 0.0019677451 0.0049252933 + 1937900 0.0067739124 0.0024650536 0.0057990886 + 1938000 0.0039062844 0.0031418473 0.0050644716 + 1938100 0.0051518303 0.0026025551 0.0051382215 + 1938200 0.0047388189 0.0027721714 0.0051045588 + 1938300 0.0043781574 0.003108054 0.0052629284 + 1938400 0.0054552864 0.0034289281 0.0061139519 + 1938500 0.0041296853 0.0034670651 0.0054996446 + 1938600 0.0053058604 0.0032443571 0.0058558353 + 1938700 0.0055949361 0.0025779202 0.0053316779 + 1938800 0.0045073852 0.0021296711 0.0043481497 + 1938900 0.0058585983 0.002019133 0.0049026619 + 1939000 0.0032239611 0.0023200403 0.0039068337 + 1939100 0.0037828325 0.0027700149 0.0046318778 + 1939200 0.0069787351 0.0022294261 0.0056642723 + 1939300 0.0061903712 0.0022751341 0.0053219574 + 1939400 0.0055902515 0.0028733596 0.0056248115 + 1939500 0.0050402591 0.0029988342 0.0054795867 + 1939600 0.0048763755 0.0029215586 0.0053216497 + 1939700 0.0041482246 0.0024516211 0.0044933254 + 1939800 0.0043516185 0.0023939686 0.0045357808 + 1939900 0.0054472655 0.0025505052 0.0052315812 + 1940000 0.005145342 0.002662653 0.005195126 + 1940100 0.0057011228 0.0027953131 0.0056013344 + 1940200 0.0040785332 0.0030854661 0.0050928692 + 1940300 0.0040788998 0.0032542251 0.0052618086 + 1940400 0.0050658017 0.0030313349 0.0055246592 + 1940500 0.0055474925 0.0027979373 0.0055283437 + 1940600 0.0047742798 0.00298593 0.0053357709 + 1940700 0.0062188236 0.0025469831 0.0056078103 + 1940800 0.005945815 0.0026606777 0.0055871335 + 1940900 0.0052952546 0.0023847389 0.004990997 + 1941000 0.0052949543 0.0022026723 0.0048087826 + 1941100 0.0037063373 0.0022480371 0.0040722499 + 1941200 0.0055405733 0.0024726819 0.0051996829 + 1941300 0.0047065967 0.0028062748 0.0051228029 + 1941400 0.0050484149 0.0027680862 0.0052528529 + 1941500 0.0042915311 0.0027787379 0.0048909759 + 1941600 0.0051582995 0.0029162229 0.0054550734 + 1941700 0.0055366248 0.002838226 0.0055632836 + 1941800 0.0053780047 0.002775794 0.0054227807 + 1941900 0.006706415 0.0024265135 0.0057273272 + 1942000 0.0065832043 0.0024869133 0.0057270841 + 1942100 0.0032782944 0.0026915956 0.0043051311 + 1942200 0.0066601518 0.0025991007 0.0058771441 + 1942300 0.0041240012 0.002563401 0.0045931828 + 1942400 0.0054204446 0.0023165569 0.004984432 + 1942500 0.0037172072 0.0024435977 0.0042731606 + 1942600 0.0037926762 0.002328878 0.0041955858 + 1942700 0.0053463379 0.0021802338 0.0048116345 + 1942800 0.0045507092 0.0022007949 0.0044405971 + 1942900 0.0048258246 0.0022631148 0.0046383254 + 1943000 0.0034955483 0.0024004294 0.0041208946 + 1943100 0.0049050615 0.0020473969 0.0044616069 + 1943200 0.0047890735 0.0019402588 0.0042973809 + 1943300 0.0054653259 0.0020487305 0.0047386956 + 1943400 0.0047863015 0.0027511799 0.0051069377 + 1943500 0.0058998465 0.0033449399 0.0062487706 + 1943600 0.0057805839 0.0031070824 0.0059522136 + 1943700 0.0047936014 0.0031259179 0.0054852686 + 1943800 0.0050677506 0.0026732705 0.005167554 + 1943900 0.0045127824 0.0027795124 0.0050006475 + 1944000 0.0050546056 0.0028049731 0.0052927868 + 1944100 0.0053359488 0.0024160982 0.0050423855 + 1944200 0.0045904277 0.0021568462 0.0044161973 + 1944300 0.0033639452 0.0023327646 0.0039884564 + 1944400 0.0050876393 0.0023524658 0.0048565383 + 1944500 0.0054270074 0.0022140652 0.0048851704 + 1944600 0.0050238062 0.002558082 0.0050307367 + 1944700 0.0051051852 0.0026625399 0.0051752483 + 1944800 0.0061227416 0.0027734205 0.0057869574 + 1944900 0.0031995157 0.0031089271 0.0046836887 + 1945000 0.0044512474 0.0027137285 0.0049045768 + 1945100 0.0047594509 0.0027200654 0.0050626076 + 1945200 0.0046775037 0.0027543994 0.0050566083 + 1945300 0.0052743168 0.0031578542 0.0057538069 + 1945400 0.0053682525 0.0035269489 0.0061691357 + 1945500 0.006350538 0.002948923 0.0060745784 + 1945600 0.0064832924 0.0027263817 0.0059173771 + 1945700 0.0074028235 0.0026305927 0.0062741699 + 1945800 0.0058663562 0.0027916007 0.0056789478 + 1945900 0.0050019607 0.0025371587 0.0049990612 + 1946000 0.0044238312 0.0025426852 0.0047200396 + 1946100 0.0037030356 0.0025740606 0.0043966485 + 1946200 0.0042838995 0.0027502205 0.0048587023 + 1946300 0.0047773872 0.002786207 0.0051375773 + 1946400 0.0051526495 0.0026014516 0.0051375213 + 1946500 0.0076270688 0.0026415451 0.0063954931 + 1946600 0.0047242571 0.0025659365 0.0048911568 + 1946700 0.0048333514 0.0023590609 0.004737976 + 1946800 0.0053565315 0.002257476 0.0048938938 + 1946900 0.0059610525 0.0023695108 0.0053034664 + 1947000 0.0045577812 0.0031901352 0.0054334181 + 1947100 0.005844588 0.0034009342 0.0062775673 + 1947200 0.0064723263 0.003016532 0.0062021301 + 1947300 0.0047410241 0.002407734 0.0047412068 + 1947400 0.0051796106 0.0021166615 0.004666001 + 1947500 0.0056131407 0.0023017822 0.0050644999 + 1947600 0.0040413068 0.0025051076 0.0044941883 + 1947700 0.0071707001 0.002672227 0.006201556 + 1947800 0.0057692155 0.002125059 0.0049645947 + 1947900 0.0053170554 0.0024372873 0.0050542756 + 1948000 0.0072151446 0.002708757 0.006259961 + 1948100 0.0058242903 0.003000284 0.0058669269 + 1948200 0.0040369356 0.0031077036 0.0050946329 + 1948300 0.0035193017 0.0030335402 0.0047656965 + 1948400 0.0038302612 0.002361838 0.0042470447 + 1948500 0.0059146757 0.0021739636 0.0050850931 + 1948600 0.0039929097 0.0025196666 0.0044849269 + 1948700 0.004166267 0.0026297952 0.0046803798 + 1948800 0.0058336366 0.0026636158 0.0055348588 + 1948900 0.0049999772 0.0029040774 0.0053650037 + 1949000 0.0059989511 0.0026607328 0.0056133415 + 1949100 0.0047545626 0.0025554586 0.0048955949 + 1949200 0.0057977146 0.002594913 0.0054484756 + 1949300 0.0064667773 0.003339303 0.0065221699 + 1949400 0.0049615943 0.0033409148 0.0057829495 + 1949500 0.0067899672 0.002648112 0.005990049 + 1949600 0.0068948266 0.0024144686 0.0058080161 + 1949700 0.0050326154 0.0024139038 0.0048908942 + 1949800 0.0048365048 0.0028725814 0.0052530486 + 1949900 0.0044952425 0.0026543335 0.0048668356 + 1950000 0.0050917471 0.0021394626 0.0046455569 + 1950100 0.0050872701 0.0021925374 0.0046964282 + 1950200 0.0046731912 0.0021802616 0.0044803479 + 1950300 0.0050813338 0.0024437577 0.0049447267 + 1950400 0.0065714472 0.0029035187 0.0061379029 + 1950500 0.0055752144 0.0031158284 0.0058598793 + 1950600 0.004228857 0.0027501269 0.0048315175 + 1950700 0.0051847602 0.0023106036 0.0048624777 + 1950800 0.0043578089 0.0020012967 0.0041461558 + 1950900 0.006663119 0.0020215627 0.0053010665 + 1951000 0.0047351301 0.0025493217 0.0048798936 + 1951100 0.005562217 0.0021867041 0.0049243578 + 1951200 0.0064418701 0.0019500702 0.0051206782 + 1951300 0.0057807315 0.00236247 0.0052076738 + 1951400 0.004772253 0.002189906 0.0045387492 + 1951500 0.0041916669 0.0023603503 0.0044234363 + 1951600 0.0067226276 0.0025296423 0.0058384356 + 1951700 0.0040191775 0.0025013843 0.0044795733 + 1951800 0.004524232 0.0028105252 0.0050372957 + 1951900 0.0043891412 0.0029057761 0.0050660565 + 1952000 0.0068677649 0.0027262976 0.0061065256 + 1952100 0.0051094236 0.0021597537 0.0046745481 + 1952200 0.0040898544 0.0023383224 0.0043512977 + 1952300 0.0043464376 0.002503438 0.0046427003 + 1952400 0.0041903513 0.0030089787 0.0050714173 + 1952500 0.0064205284 0.0031231322 0.0062832361 + 1952600 0.0058704025 0.0031556656 0.0060450044 + 1952700 0.0049274505 0.0031297258 0.0055549554 + 1952800 0.0048737599 0.0033222941 0.0057210978 + 1952900 0.0066088582 0.003444252 0.0066970494 + 1953000 0.0054236332 0.0032509523 0.0059203968 + 1953100 0.0053846099 0.0030959985 0.0057462362 + 1953200 0.0028500022 0.0031333156 0.004536051 + 1953300 0.0046566587 0.0025504478 0.004842397 + 1953400 0.0077711968 0.0019007523 0.0057256382 + 1953500 0.0069616574 0.0023644328 0.0057908736 + 1953600 0.0048881206 0.0026264793 0.0050323511 + 1953700 0.0052888933 0.0027474138 0.0053505409 + 1953800 0.0074956975 0.0026425758 0.0063318644 + 1953900 0.0056179827 0.0023914299 0.0051565308 + 1954000 0.0053870586 0.0022106596 0.0048621025 + 1954100 0.004424963 0.002500458 0.0046783695 + 1954200 0.0046798898 0.0026370373 0.0049404206 + 1954300 0.0052544217 0.0021605854 0.0047467461 + 1954400 0.0050273269 0.002165618 0.0046400054 + 1954500 0.0046684298 0.002686144 0.0049838868 + 1954600 0.0054626524 0.0028373524 0.0055260016 + 1954700 0.0066007504 0.0028672996 0.0061161064 + 1954800 0.0059563656 0.0028522115 0.0057838602 + 1954900 0.0054633579 0.0026666691 0.0053556656 + 1955000 0.0046503677 0.002707889 0.0049967418 + 1955100 0.0047431397 0.0027024929 0.0050370069 + 1955200 0.0050195107 0.0023682479 0.0048387883 + 1955300 0.0045741621 0.0020076468 0.0042589922 + 1955400 0.0038039197 0.0016487356 0.0035209773 + 1955500 0.0056133631 0.0016971895 0.0044600166 + 1955600 0.0039780835 0.0019722123 0.0039301753 + 1955700 0.0040127551 0.0024941871 0.004469215 + 1955800 0.0054595832 0.0028275734 0.005514712 + 1955900 0.0063029842 0.0027363005 0.0058385505 + 1956000 0.0051445844 0.0027147023 0.0052468024 + 1956100 0.0048667928 0.0029448916 0.0053402662 + 1956200 0.0040899994 0.0030969522 0.0051099987 + 1956300 0.0037899769 0.0029835146 0.0048488938 + 1956400 0.0048812065 0.0023568734 0.0047593423 + 1956500 0.0055074596 0.0019658601 0.0046765628 + 1956600 0.0058901341 0.0020758098 0.0049748602 + 1956700 0.0048194316 0.0025490661 0.0049211301 + 1956800 0.0046468987 0.0032572576 0.0055444031 + 1956900 0.0052343258 0.0033531535 0.0059294233 + 1957000 0.0055998221 0.0030170602 0.0057732226 + 1957100 0.0068342514 0.0022217251 0.0055854582 + 1957200 0.0051168869 0.0022720953 0.0047905631 + 1957300 0.0055558371 0.0026512202 0.0053857337 + 1957400 0.0053567749 0.0029787585 0.0056152962 + 1957500 0.0042399255 0.0029031937 0.004990032 + 1957600 0.0040041379 0.002232762 0.0042035486 + 1957700 0.004641315 0.002192824 0.0044772213 + 1957800 0.0050283382 0.0020983373 0.0045732225 + 1957900 0.0057780746 0.0019640651 0.0048079612 + 1958000 0.0057950254 0.0022857947 0.0051380338 + 1958100 0.0066803377 0.0023297289 0.0056177076 + 1958200 0.0043241561 0.0023626924 0.0044909879 + 1958300 0.0034570657 0.0024143197 0.0041158442 + 1958400 0.0073499538 0.0021226688 0.0057402242 + 1958500 0.0073945849 0.0020975105 0.0057370328 + 1958600 0.0040551392 0.002633804 0.0046296928 + 1958700 0.0046865437 0.0025870524 0.0048937107 + 1958800 0.0043491703 0.0027173619 0.0048579692 + 1958900 0.0055667036 0.0019983184 0.0047381803 + 1959000 0.0053060665 0.0019304823 0.0045420619 + 1959100 0.0047756449 0.0026499171 0.0050004299 + 1959200 0.0054528555 0.0024816743 0.0051655017 + 1959300 0.004815367 0.0024863101 0.0048563735 + 1959400 0.0055988808 0.0026555272 0.0054112264 + 1959500 0.0061027932 0.0023869042 0.0053906227 + 1959600 0.0060132203 0.0023539141 0.005313546 + 1959700 0.0043376207 0.0027019675 0.0048368902 + 1959800 0.0052857044 0.0026223824 0.00522394 + 1959900 0.0050688623 0.0026707624 0.0051655931 + 1960000 0.0046591238 0.0029970502 0.0052902127 + 1960100 0.005477859 0.0027695929 0.0054657266 + 1960200 0.0040375931 0.0026603595 0.0046476124 + 1960300 0.0046429165 0.0031988093 0.0054839947 + 1960400 0.0044887887 0.0033220371 0.0055313628 + 1960500 0.0066373727 0.0025943416 0.0058611735 + 1960600 0.0056922809 0.0024955233 0.0052971928 + 1960700 0.0041416495 0.0024605267 0.0044989948 + 1960800 0.0048993467 0.002402592 0.0048139892 + 1960900 0.0045304907 0.0029118729 0.0051417237 + 1961000 0.0042019432 0.0035134647 0.0055816086 + 1961100 0.0061618032 0.0037809757 0.0068137383 + 1961200 0.0049303858 0.0038546414 0.0062813157 + 1961300 0.0050455763 0.0033860774 0.0058694469 + 1961400 0.0061649589 0.0036026256 0.0066369413 + 1961500 0.0048234046 0.003484642 0.0058586614 + 1961600 0.0059422179 0.0032452576 0.006169943 + 1961700 0.0065296381 0.003098156 0.0063119623 + 1961800 0.0060899224 0.0034118878 0.0064092715 + 1961900 0.0052955754 0.0032686534 0.0058750694 + 1962000 0.0038683442 0.0033408285 0.0052447791 + 1962100 0.0063367427 0.0028744196 0.0059932851 + 1962200 0.005404768 0.0026065862 0.0052667454 + 1962300 0.0031756845 0.0022704803 0.0038335125 + 1962400 0.003420545 0.0019062778 0.0035898273 + 1962500 0.004691671 0.001735755 0.0040449368 + 1962600 0.0043914784 0.0019029559 0.0040643867 + 1962700 0.0027455303 0.0021064122 0.0034577279 + 1962800 0.0035606309 0.0020828882 0.0038353862 + 1962900 0.0058632975 0.0016839897 0.0045698315 + 1963000 0.00467719 0.001668561 0.0039706154 + 1963100 0.0042506773 0.0017901663 0.0038822966 + 1963200 0.0039646745 0.0019753484 0.0039267116 + 1963300 0.0051894469 0.0020689034 0.0046230843 + 1963400 0.0048809231 0.0022483025 0.0046506318 + 1963500 0.0048083714 0.0021423363 0.0045089566 + 1963600 0.0032428015 0.0022220203 0.0038180866 + 1963700 0.0028174699 0.0021783896 0.0035651131 + 1963800 0.0062744596 0.0020330543 0.0051212649 + 1963900 0.0041645521 0.0020185667 0.0040683072 + 1964000 0.0052158431 0.0019924735 0.0045596463 + 1964100 0.0036921621 0.0022743034 0.0040915394 + 1964200 0.0052800557 0.0023193504 0.0049181278 + 1964300 0.0067953305 0.0019550107 0.0052995874 + 1964400 0.006800689 0.0022361702 0.0055833843 + 1964500 0.0043669842 0.0029376954 0.0050870704 + 1964600 0.0053926428 0.0033148006 0.005968992 + 1964700 0.0047360625 0.0028978717 0.0052289024 + 1964800 0.0072769312 0.0024402664 0.0060218809 + 1964900 0.005094762 0.0023892467 0.0048968248 + 1965000 0.0044721133 0.0031615481 0.0053626664 + 1965100 0.0061740158 0.0026497547 0.0056885282 + 1965200 0.0066903482 0.0024959895 0.0057888953 + 1965300 0.0056803286 0.0020346543 0.004830441 + 1965400 0.006155835 0.0019636441 0.0049934691 + 1965500 0.0047015071 0.0023071994 0.0046212224 + 1965600 0.0061535427 0.0021489944 0.0051776912 + 1965700 0.0063394401 0.0019596995 0.0050798926 + 1965800 0.0039961068 0.0022404754 0.0042073092 + 1965900 0.0047642305 0.0019956955 0.0043405901 + 1966000 0.0058794784 0.0020433316 0.0049371373 + 1966100 0.0044863111 0.0026222613 0.0048303675 + 1966200 0.0089809411 0.0022778255 0.0066981325 + 1966300 0.0050404211 0.0027158817 0.005196714 + 1966400 0.0040094505 0.0030998228 0.0050732242 + 1966500 0.005631371 0.0031255424 0.0058972327 + 1966600 0.0051370621 0.002859266 0.0053876638 + 1966700 0.0042151008 0.0022332093 0.0043078293 + 1966800 0.0044673367 0.0022326175 0.0044313848 + 1966900 0.0033525125 0.0023818343 0.0040318991 + 1967000 0.0040219548 0.0022764338 0.0042559897 + 1967100 0.0046302799 0.0021484902 0.0044274561 + 1967200 0.0049714506 0.0020357125 0.0044825983 + 1967300 0.005977992 0.0021433671 0.00508566 + 1967400 0.0053902316 0.0020022409 0.0046552456 + 1967500 0.0046586404 0.0019883349 0.0042812595 + 1967600 0.0039033117 0.0023083811 0.0042295423 + 1967700 0.0043752254 0.0025024203 0.0046558515 + 1967800 0.0043589795 0.0024982533 0.0046436885 + 1967900 0.0052777293 0.0025180008 0.0051156332 + 1968000 0.0034189485 0.0024891574 0.0041719211 + 1968100 0.0048088533 0.0023660067 0.0047328642 + 1968200 0.0064220903 0.0022541356 0.0054150081 + 1968300 0.0060765069 0.0026611767 0.0056519575 + 1968400 0.0039367764 0.0027331653 0.0046707974 + 1968500 0.0060924498 0.0030554742 0.0060541019 + 1968600 0.00614092 0.0033329465 0.0063554306 + 1968700 0.0047542107 0.0029760359 0.0053159989 + 1968800 0.0054506215 0.0025875217 0.0052702495 + 1968900 0.0043579159 0.002381629 0.0045265407 + 1969000 0.0040054447 0.0024285121 0.0043999419 + 1969100 0.0042311652 0.0026493681 0.0047318947 + 1969200 0.0053567692 0.0024350446 0.0050715794 + 1969300 0.0056387297 0.002089391 0.0048647032 + 1969400 0.0051026868 0.0017434762 0.0042549549 + 1969500 0.0048391876 0.001917665 0.0042994526 + 1969600 0.0037442695 0.0018411399 0.0036840225 + 1969700 0.0041662021 0.0023597055 0.0044102581 + 1969800 0.0048332633 0.003008715 0.0053875868 + 1969900 0.0035195388 0.0031190537 0.0048513267 + 1970000 0.0037215918 0.0023704618 0.0042021828 + 1970100 0.0045265138 0.002228958 0.0044568515 + 1970200 0.0053884757 0.0022231472 0.0048752876 + 1970300 0.0060521133 0.0023611798 0.0053399543 + 1970400 0.0067249521 0.0024082083 0.0057181457 + 1970500 0.0056554492 0.0029147842 0.0056983256 + 1970600 0.0042355139 0.0033454496 0.0054301166 + 1970700 0.0052954485 0.0033357837 0.0059421372 + 1970800 0.0039578327 0.003382902 0.0053308978 + 1970900 0.0070756702 0.0033565376 0.006839094 + 1971000 0.0038925924 0.0033054241 0.0052213094 + 1971100 0.0057297208 0.0028192575 0.0056393545 + 1971200 0.0053615822 0.0030168347 0.0056557385 + 1971300 0.0047059075 0.0033849381 0.0057011269 + 1971400 0.0057164524 0.0028652423 0.0056788087 + 1971500 0.0055595605 0.002817329 0.0055536752 + 1971600 0.0058039023 0.0030304874 0.0058870956 + 1971700 0.0043448922 0.003096274 0.0052347757 + 1971800 0.0036321233 0.0029971895 0.0047848752 + 1971900 0.005140237 0.0029246325 0.0054545928 + 1972000 0.0047777658 0.0030824931 0.0054340497 + 1972100 0.0067663028 0.0032434707 0.0065737604 + 1972200 0.0059467742 0.003827276 0.0067542039 + 1972300 0.0052360169 0.0038464504 0.0064235524 + 1972400 0.0054253556 0.0033726987 0.006042991 + 1972500 0.0047094539 0.0027297566 0.0050476909 + 1972600 0.0049655731 0.0027897336 0.0052337266 + 1972700 0.0042014405 0.0028846031 0.0049524997 + 1972800 0.0067617805 0.0027408443 0.0060689082 + 1972900 0.0047488406 0.0035163253 0.0058536453 + 1973000 0.0050213518 0.0036927106 0.0061641572 + 1973100 0.0045958668 0.0034397612 0.0057017894 + 1973200 0.00491002 0.0029937584 0.0054104088 + 1973300 0.0060429046 0.0028447392 0.0058189814 + 1973400 0.0055203192 0.0025766793 0.0052937114 + 1973500 0.0055681405 0.0023389798 0.005079549 + 1973600 0.0043210092 0.0028398802 0.0049666269 + 1973700 0.0049103211 0.0028410593 0.005257858 + 1973800 0.0045391302 0.003143301 0.0053774041 + 1973900 0.0041241205 0.0026072632 0.0046371038 + 1974000 0.0051957384 0.0021001088 0.0046573864 + 1974100 0.0060325521 0.0020217554 0.0049909021 + 1974200 0.0047307958 0.0023757612 0.0047041998 + 1974300 0.0062928884 0.0022520228 0.0053493038 + 1974400 0.0048969188 0.0027798908 0.005190093 + 1974500 0.0060556348 0.0025749225 0.0055554303 + 1974600 0.0064805615 0.0021720665 0.0053617179 + 1974700 0.0044676811 0.0025536507 0.0047525875 + 1974800 0.0068051163 0.0028049398 0.006154333 + 1974900 0.0068328027 0.0024118326 0.0057748527 + 1975000 0.0055704185 0.0024589736 0.005200664 + 1975100 0.0059750587 0.0024398561 0.0053807053 + 1975200 0.0062643598 0.0023495976 0.0054328372 + 1975300 0.0060022128 0.0026989646 0.0056531788 + 1975400 0.0066336948 0.0025435592 0.0058085808 + 1975500 0.0055590611 0.0024328755 0.0051689759 + 1975600 0.0057934535 0.002595223 0.0054466884 + 1975700 0.0050700463 0.0028409376 0.005336351 + 1975800 0.0041203695 0.0026620262 0.0046900206 + 1975900 0.006391252 0.0022078384 0.0053535327 + 1976000 0.005554686 0.0020056826 0.0047396296 + 1976100 0.0056292475 0.0021034226 0.0048740678 + 1976200 0.0053536508 0.0026886722 0.0053236722 + 1976300 0.005483876 0.0026237706 0.0053228658 + 1976400 0.0049829385 0.0022140453 0.0046665854 + 1976500 0.0038646913 0.001928554 0.0038307067 + 1976600 0.0056354078 0.001951041 0.0047247183 + 1976700 0.006322617 0.0020049399 0.005116853 + 1976800 0.0068346506 0.0028231365 0.0061870661 + 1976900 0.004425002 0.0029317198 0.0051096504 + 1977000 0.0039872885 0.0028442901 0.0048067837 + 1977100 0.0051132872 0.0027037761 0.0052204721 + 1977200 0.0065234064 0.0023518813 0.0055626204 + 1977300 0.006834685 0.0024803098 0.0058442564 + 1977400 0.0048422499 0.0027909748 0.0051742697 + 1977500 0.003860027 0.0028217769 0.0047216339 + 1977600 0.004524088 0.0020753902 0.0043020897 + 1977700 0.0039299072 0.001968914 0.0039031652 + 1977800 0.0052786677 0.0016284221 0.0042265163 + 1977900 0.0058670623 0.0019257935 0.0048134883 + 1978000 0.005328742 0.0018319712 0.0044547114 + 1978100 0.0053149862 0.0015611072 0.004177077 + 1978200 0.0047016678 0.0017958738 0.0041099759 + 1978300 0.0040021215 0.0017083803 0.0036781744 + 1978400 0.0050191291 0.0019845438 0.0044548964 + 1978500 0.0053307985 0.0021834192 0.0048071716 + 1978600 0.0045795286 0.0015629799 0.0038169666 + 1978700 0.0040588884 0.0016023327 0.0036000669 + 1978800 0.0056087102 0.0017337129 0.00449425 + 1978900 0.0042195899 0.0016850083 0.0037618377 + 1979000 0.0041282468 0.001924472 0.0039563435 + 1979100 0.0041563346 0.0021684014 0.0042140974 + 1979200 0.0047855088 0.0019797408 0.0043351084 + 1979300 0.004713838 0.0022519439 0.004572036 + 1979400 0.0053922758 0.0024204081 0.0050744189 + 1979500 0.0044929275 0.0023548922 0.004566255 + 1979600 0.0052116931 0.002142128 0.0047072581 + 1979700 0.0044301591 0.002051807 0.0042322759 + 1979800 0.0049303952 0.0020448889 0.0044715678 + 1979900 0.0043640762 0.0023095794 0.0044575232 + 1980000 0.0066283108 0.0027330313 0.005995403 + 1980100 0.0059506906 0.0028329204 0.0057617759 + 1980200 0.0059808309 0.0020017151 0.0049454053 + 1980300 0.0040694112 0.0015880621 0.0035909755 + 1980400 0.0062363532 0.0014758557 0.0045453108 + 1980500 0.0053348598 0.0016729627 0.004298714 + 1980600 0.0060339265 0.002075905 0.0050457282 + 1980700 0.0058317331 0.0024649366 0.0053352428 + 1980800 0.0053585871 0.0025072608 0.0051446904 + 1980900 0.0047268588 0.0027389226 0.0050654234 + 1981000 0.0046919327 0.0025076764 0.004816987 + 1981100 0.0054195362 0.002119352 0.00478678 + 1981200 0.0049859359 0.002384692 0.0048387073 + 1981300 0.0046362027 0.0021999107 0.0044817917 + 1981400 0.004668489 0.0025675308 0.0048653027 + 1981500 0.0051245574 0.0023607949 0.004883038 + 1981600 0.0045853814 0.0029000395 0.0051569069 + 1981700 0.0040460053 0.0029528043 0.0049441976 + 1981800 0.0074680387 0.0022237666 0.0058994419 + 1981900 0.0053653048 0.0020252809 0.0046660168 + 1982000 0.0055223326 0.0019722649 0.004690288 + 1982100 0.0049637703 0.0020603435 0.0045034492 + 1982200 0.0056249922 0.0023490878 0.0051176387 + 1982300 0.004992881 0.0018096202 0.0042670538 + 1982400 0.0052150644 0.001666925 0.0042337145 + 1982500 0.005313939 0.0016009002 0.0042163545 + 1982600 0.0041870273 0.0016989236 0.0037597261 + 1982700 0.004182574 0.0020278464 0.004086457 + 1982800 0.0054656535 0.0018606793 0.0045508056 + 1982900 0.0070960884 0.0017181386 0.0052107446 + 1983000 0.0060347209 0.0021900075 0.0051602217 + 1983100 0.0035152978 0.0024311352 0.0041613209 + 1983200 0.0046516392 0.002079688 0.0043691666 + 1983300 0.0051688307 0.0020050591 0.004549093 + 1983400 0.0048165233 0.0022223044 0.0045929369 + 1983500 0.006040761 0.0028677546 0.0058409416 + 1983600 0.0046465971 0.0031376505 0.0054246475 + 1983700 0.0070986138 0.0034349895 0.0069288385 + 1983800 0.0056043517 0.0030140473 0.0057724392 + 1983900 0.0056223852 0.0027937842 0.005561052 + 1984000 0.0050532751 0.0024712755 0.0049584344 + 1984100 0.0056924885 0.0024401928 0.0052419645 + 1984200 0.0056846356 0.0021283476 0.0049262542 + 1984300 0.0039684604 0.0022801088 0.0042333354 + 1984400 0.0057022348 0.0023077644 0.0051143331 + 1984500 0.0050569045 0.0029058378 0.005394783 + 1984600 0.0042357858 0.0029254972 0.005010298 + 1984700 0.0061819768 0.002168067 0.0052107587 + 1984800 0.0045070634 0.0017174146 0.0039357348 + 1984900 0.0064325048 0.0016413865 0.0048073849 + 1985000 0.00469054 0.0022749654 0.0045835906 + 1985100 0.005221984 0.0023528129 0.0049230081 + 1985200 0.0034586036 0.0022755683 0.0039778498 + 1985300 0.0055984832 0.0021331389 0.0048886424 + 1985400 0.0048608198 0.0026110527 0.0050034875 + 1985500 0.0035728121 0.003113909 0.0048724025 + 1985600 0.0057716041 0.0024205499 0.0052612613 + 1985700 0.0056227728 0.0023218579 0.0050893164 + 1985800 0.0048254807 0.0024124083 0.0047874496 + 1985900 0.0043041213 0.002521663 0.0046400977 + 1986000 0.0060402316 0.0023918867 0.0053648131 + 1986100 0.0045195804 0.0025196187 0.0047440997 + 1986200 0.0056304062 0.0028655702 0.0056367858 + 1986300 0.004940732 0.0029267485 0.0053585151 + 1986400 0.0051048822 0.0025004927 0.0050130519 + 1986500 0.0051543479 0.0022587456 0.0047956512 + 1986600 0.0052495893 0.0020899933 0.0046737756 + 1986700 0.0057607706 0.0023671158 0.0052024951 + 1986800 0.0058301603 0.0021323223 0.0050018543 + 1986900 0.0055676168 0.0015264375 0.0042667489 + 1987000 0.0042138366 0.0014262963 0.003500294 + 1987100 0.0062862323 0.0016101627 0.0047041676 + 1987200 0.0058300172 0.0014433623 0.0043128239 + 1987300 0.0042680877 0.0016998945 0.0038005939 + 1987400 0.0056182989 0.0018484745 0.004613731 + 1987500 0.0065123996 0.001742609 0.0049479307 + 1987600 0.0056369884 0.0017309688 0.004505424 + 1987700 0.0048519312 0.002041564 0.0044296239 + 1987800 0.0046661666 0.0027280469 0.0050246757 + 1987900 0.0057507062 0.0029982409 0.0058286666 + 1988000 0.0046941817 0.0028044002 0.0051148177 + 1988100 0.0056456028 0.0021826056 0.0049613007 + 1988200 0.0054698025 0.0019572188 0.0046493872 + 1988300 0.0050247915 0.0023554816 0.0048286212 + 1988400 0.0042434649 0.0020184918 0.0041070722 + 1988500 0.0051100694 0.0018169564 0.0043320687 + 1988600 0.0064519371 0.0022968105 0.0054723733 + 1988700 0.004244774 0.0028191818 0.0049084065 + 1988800 0.0055475823 0.0023268452 0.0050572959 + 1988900 0.0047735124 0.0021846311 0.0045340942 + 1989000 0.0067925537 0.0021052906 0.0054485006 + 1989100 0.0053264826 0.0027883386 0.0054099668 + 1989200 0.0044899899 0.0026529638 0.0048628807 + 1989300 0.0044819859 0.0020405624 0.0042465398 + 1989400 0.0055102469 0.0020744229 0.0047864975 + 1989500 0.0032349766 0.0022298778 0.0038220928 + 1989600 0.0042232508 0.0024966295 0.0045752607 + 1989700 0.0058795448 0.0022546869 0.0051485253 + 1989800 0.0077871398 0.0024580206 0.0062907534 + 1989900 0.0066070218 0.0026114385 0.005863332 + 1990000 0.0055028717 0.0021736585 0.0048821031 + 1990100 0.0058517627 0.0019654744 0.0048456389 + 1990200 0.005259527 0.0023259082 0.0049145816 + 1990300 0.0039825638 0.0032344198 0.0051945879 + 1990400 0.0046223289 0.003680173 0.0059552254 + 1990500 0.0041608433 0.003327208 0.0053751231 + 1990600 0.0051822972 0.0020900233 0.0046406852 + 1990700 0.0045353647 0.0020709256 0.0043031754 + 1990800 0.004117584 0.0026043084 0.0046309317 + 1990900 0.0031785486 0.0023566873 0.0039211291 + 1991000 0.0046371325 0.0022251759 0.0045075145 + 1991100 0.0031842429 0.0021117931 0.0036790376 + 1991200 0.0064351612 0.0018734894 0.0050407954 + 1991300 0.0044154695 0.0017651334 0.0039383723 + 1991400 0.0051370601 0.001617819 0.0041462158 + 1991500 0.0068023705 0.0021464791 0.0054945208 + 1991600 0.004941278 0.0024908807 0.004922916 + 1991700 0.0071691365 0.0023977738 0.0059263332 + 1991800 0.004928178 0.0024002531 0.0048258407 + 1991900 0.0044836427 0.0024387138 0.0046455067 + 1992000 0.0043522849 0.002431429 0.0045735693 + 1992100 0.0055260491 0.0022524073 0.0049722596 + 1992200 0.0064724232 0.0022818623 0.0054675081 + 1992300 0.0057010022 0.0026553879 0.00546135 + 1992400 0.005649787 0.0021582975 0.0049390521 + 1992500 0.0059608769 0.001989569 0.0049234381 + 1992600 0.0044612397 0.0018231766 0.004018943 + 1992700 0.0054501286 0.0021690321 0.0048515173 + 1992800 0.0051572844 0.0027260947 0.0052644457 + 1992900 0.0041187454 0.0028101566 0.0048373517 + 1993000 0.0039292726 0.0028538619 0.0047878007 + 1993100 0.004333378 0.0026337387 0.0047665731 + 1993200 0.0055955453 0.0024484898 0.0052025472 + 1993300 0.0046788239 0.0021023181 0.0044051767 + 1993400 0.0054766711 0.0021039039 0.004799453 + 1993500 0.0044777734 0.0023353662 0.0045392704 + 1993600 0.0046387967 0.0020376463 0.0043208041 + 1993700 0.0067209752 0.0017739096 0.0050818896 + 1993800 0.0036846547 0.0021362854 0.0039498264 + 1993900 0.0035441194 0.0021016423 0.0038460136 + 1994000 0.0046487757 0.002166301 0.0044543703 + 1994100 0.0061404977 0.001974164 0.0049964402 + 1994200 0.0052462447 0.0025239715 0.0051061076 + 1994300 0.0061448229 0.0033154981 0.0063399032 + 1994400 0.0060807602 0.0030597861 0.0060526603 + 1994500 0.0055340069 0.0024630001 0.0051867691 + 1994600 0.0048207495 0.0024412778 0.0048139905 + 1994700 0.0056573062 0.0021671285 0.0049515839 + 1994800 0.0040610277 0.0024453574 0.0044441445 + 1994900 0.0055377006 0.0025202564 0.0052458435 + 1995000 0.0056677693 0.0025586879 0.0053482931 + 1995100 0.0050007413 0.002912869 0.0053741714 + 1995200 0.0036082484 0.0026871674 0.0044631022 + 1995300 0.0031404131 0.0025518402 0.0040975123 + 1995400 0.0045197622 0.0024076203 0.0046321908 + 1995500 0.0053878155 0.0022927619 0.0049445773 + 1995600 0.0055513181 0.0023714437 0.005103733 + 1995700 0.004986409 0.0021815935 0.0046358417 + 1995800 0.0059840528 0.0022040675 0.0051493435 + 1995900 0.0048047694 0.0028504619 0.0052153093 + 1996000 0.0041188062 0.0032162296 0.0052434545 + 1996100 0.0057045074 0.0030025305 0.0058102177 + 1996200 0.0053857785 0.0030991164 0.0057499293 + 1996300 0.004934022 0.0032275728 0.0056560368 + 1996400 0.0052477409 0.0029614228 0.0055442952 + 1996500 0.0057506584 0.0026090882 0.0054394904 + 1996600 0.0054215917 0.0028450729 0.0055135126 + 1996700 0.0040779023 0.0029812633 0.0049883559 + 1996800 0.004955063 0.0029577484 0.0053965685 + 1996900 0.0045757937 0.0030085418 0.0052606903 + 1997000 0.0042222687 0.0030588955 0.0051370433 + 1997100 0.0046832438 0.002815517 0.005120551 + 1997200 0.0051500003 0.0021958113 0.004730577 + 1997300 0.0045633612 0.0017893532 0.0040353825 + 1997400 0.0036703158 0.0018360092 0.0036424928 + 1997500 0.0044518319 0.002115422 0.0043065581 + 1997600 0.0047498709 0.0023608622 0.0046986893 + 1997700 0.0059294019 0.0022669779 0.0051853554 + 1997800 0.0039899174 0.0024775314 0.0044413189 + 1997900 0.0055844392 0.0021641055 0.0049126966 + 1998000 0.0051106512 0.0018176641 0.0043330627 + 1998100 0.0056143278 0.0022659689 0.0050292709 + 1998200 0.0043151851 0.0025546655 0.0046785456 + 1998300 0.0052712957 0.0024152156 0.0050096815 + 1998400 0.0042348839 0.0024296798 0.0045140367 + 1998500 0.0030287342 0.002623803 0.0041145081 + 1998600 0.0055051309 0.0021173655 0.0048269221 + 1998700 0.0057217041 0.0017686861 0.0045848373 + 1998800 0.0048875419 0.0018746291 0.0042802161 + 1998900 0.007364676 0.0019868413 0.0056116428 + 1999000 0.0053002642 0.0021333448 0.0047420686 + 1999100 0.0044239819 0.0026956169 0.0048730454 + 1999200 0.0037866761 0.0031115123 0.0049752669 + 1999300 0.0045921308 0.0027207583 0.0049809477 + 1999400 0.0052107996 0.0020772636 0.004641954 + 1999500 0.0049143451 0.001868372 0.0042871512 + 1999600 0.0059949807 0.0022728405 0.0052234951 + 1999700 0.0050216233 0.002669087 0.0051406673 + 1999800 0.0049219953 0.0025093587 0.0049319033 + 1999900 0.0045165212 0.0022190108 0.004441986 + 2000000 0.0049904073 0.001955233 0.0044114491 +Loop time of 22.6651 on 4 procs for 2000000 steps with 64 atoms + +Performance: 38120276.772 tau/day, 88241.381 timesteps/s, 5.647 Matom-step/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 | 0 | 0 | 0.0 | 0.00 +Bond | 0.37899 | 0.39755 | 0.41982 | 2.3 | 1.75 +Neigh | 2.9184 | 3.0178 | 3.1717 | 5.4 | 13.31 +Comm | 10.429 | 10.694 | 11.003 | 6.2 | 47.18 +Output | 0.12974 | 0.14293 | 0.17878 | 5.5 | 0.63 +Modify | 6.4203 | 6.5794 | 6.7365 | 4.5 | 29.03 +Other | | 1.833 | | | 8.09 + +Nlocal: 16 ave 16 max 16 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 4 ave 4 max 4 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 0 +Ave neighs/atom = 0 +Ave special neighs/atom = 6 +Neighbor list builds = 2000000 +Dangerous builds not checked +Total wall time: 0:00:22 diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/log.lammps b/examples/PACKAGES/phonon/2-1D-diatomic/log.lammps deleted file mode 100644 index b5867bb6582..00000000000 --- a/examples/PACKAGES/phonon/2-1D-diatomic/log.lammps +++ /dev/null @@ -1,20088 +0,0 @@ -LAMMPS (23 Sep 2013) -# 3D simple cubic lattice simulation -dimension 2 -boundary p f p - -units lj -atom_style bond -atom_modify sort 0 1. -bond_style harmonic -pair_style none -communicate single cutoff 2.0 - -# geometry -read_data data.pos - 2 = max bonds/atom - orthogonal box = (0 0 0) to (64 1 1) - 1 by 1 by 1 MPI processor grid - 64 atoms - 64 bonds - 2 = max # of 1-2 neighbors - 2 = max # of 1-3 neighbors - 4 = max # of 1-4 neighbors - 6 = max # of special neighbors - -# -neighbor 1.0 nsq -neigh_modify delay 0 check no - -#Langevin random seed -variable r equal 571101 - -#Langevin Temperature -variable t equal 0.005 - -# Langevin Damping variable -variable d equal 0.5 - -# Create velocities and equilibrate -compute MyTemp all temp/partial 1 0 0 -velocity all create $t 28711 mom yes rot yes dist gaussian temp MyTemp -velocity all create 0.0050000000000000001041 28711 mom yes rot yes dist gaussian temp MyTemp -velocity all set NULL 0.0 0.0 units box -# -fix 1 all langevin $t $t $d $r -fix 1 all langevin 0.0050000000000000001041 $t $d $r -fix 1 all langevin 0.0050000000000000001041 0.0050000000000000001041 $d $r -fix 1 all langevin 0.0050000000000000001041 0.0050000000000000001041 0.5 $r -fix 1 all langevin 0.0050000000000000001041 0.0050000000000000001041 0.5 571101 -fix_modify 1 temp MyTemp -fix 2 all setforce NULL 0. 0. -fix 3 all nve -fix 4 all phonon 10 50000 500000 map.in phonon sysdim 1 -fix_modify 4 temp MyTemp - -# 1 2 3 4 -thermo_style custom step temp pe etotal -thermo_modify temp MyTemp -thermo 100 - -# -run 2000000 -Memory usage per processor = 2.01061 Mbytes -Step Temp PotEng TotEng - 0 0.005 0 0.002421875 - 100 0.0044233185 0.00069227571 0.0028348206 - 200 0.0051557212 0.0012425996 0.003739902 - 300 0.004357315 0.0012750554 0.0033856298 - 400 0.0048269093 0.0014376622 0.0037756964 - 500 0.0047025425 0.0016352541 0.0039130482 - 600 0.0054651713 0.0016709504 0.0043181428 - 700 0.0053552729 0.0018353947 0.0044293551 - 800 0.005954909 0.0019755263 0.0048599354 - 900 0.0042057592 0.0023020508 0.0043392155 - 1000 0.0057669621 0.0025897902 0.0053831625 - 1100 0.0040680049 0.0026989519 0.0046693918 - 1200 0.0046829459 0.0024368094 0.0047051113 - 1300 0.0044905385 0.0024665322 0.0046416368 - 1400 0.0074275036 0.0018704053 0.0054681024 - 1500 0.0052733986 0.0017110596 0.0042653621 - 1600 0.0045302499 0.0017525366 0.0039468764 - 1700 0.0055159362 0.002127395 0.0047991766 - 1800 0.0051833134 0.0024402092 0.0049508766 - 1900 0.0052803653 0.0024879535 0.0050456305 - 2000 0.0056694273 0.0023283837 0.0050745125 - 2100 0.0057566849 0.0021451166 0.0049335108 - 2200 0.00386807 0.0021520647 0.0040256611 - 2300 0.0058041566 0.0023206647 0.0051320531 - 2400 0.0049628786 0.0021353417 0.004539236 - 2500 0.0047613146 0.0019441945 0.0042504562 - 2600 0.0040749997 0.002513164 0.004486992 - 2700 0.0058050329 0.0028770553 0.0056888682 - 2800 0.0047471027 0.0030253369 0.0053247148 - 2900 0.0052674274 0.0019963239 0.004547734 - 3000 0.0070755768 0.0012651894 0.0046924219 - 3100 0.004904144 0.001906362 0.0042818068 - 3200 0.0046180231 0.0022520542 0.0044889091 - 3300 0.0047402454 0.0022380719 0.0045341283 - 3400 0.004526243 0.0019165088 0.0041089077 - 3500 0.0040109678 0.0018036815 0.003746494 - 3600 0.0046845845 0.0022599412 0.0045290368 - 3700 0.0045085962 0.0024312547 0.0046151059 - 3800 0.005224178 0.002911252 0.0054417132 - 3900 0.0062560876 0.00261489 0.0056451824 - 4000 0.0062177588 0.0026008254 0.0056125523 - 4100 0.0065797211 0.0026930138 0.0058800662 - 4200 0.0066811803 0.0023916324 0.0056278291 - 4300 0.0062371547 0.0022726451 0.0052937669 - 4400 0.0059163392 0.0022861682 0.005151895 - 4500 0.0062722067 0.0026254197 0.0056635198 - 4600 0.0040357278 0.0030401402 0.0049949458 - 4700 0.004112287 0.0028318222 0.0048237112 - 4800 0.0049222174 0.0026333499 0.0050175489 - 4900 0.0053288359 0.0023349026 0.0049160575 - 5000 0.0052122846 0.0020219366 0.0045466369 - 5100 0.0058812614 0.0021999893 0.0050487252 - 5200 0.0051967264 0.0018998782 0.0044170426 - 5300 0.005879625 0.0019625602 0.0048105036 - 5400 0.0059624731 0.0021443126 0.0050323855 - 5500 0.0059591574 0.0023506099 0.0052370768 - 5600 0.003079608 0.0029662562 0.0044579413 - 5700 0.0056499809 0.0030961313 0.0058328408 - 5800 0.004573757 0.0024716554 0.004687069 - 5900 0.0061564453 0.0021550869 0.0051371151 - 6000 0.0075508592 0.0021537409 0.0058111883 - 6100 0.0063879372 0.0024185024 0.0055126595 - 6200 0.0041526115 0.0027590092 0.0047704304 - 6300 0.0053061863 0.0025648127 0.0051349967 - 6400 0.006060304 0.0027159393 0.0056513991 - 6500 0.0056452086 0.0030946398 0.0058290377 - 6600 0.0041209765 0.0033636656 0.0053597636 - 6700 0.0045845779 0.0028218743 0.0050425293 - 6800 0.0059546759 0.0023227413 0.0052070374 - 6900 0.0040117754 0.0023341431 0.0042773468 - 7000 0.0042824332 0.0023350167 0.0044093203 - 7100 0.0055815793 0.0020343862 0.0047379636 - 7200 0.0047361478 0.0021430515 0.0044371231 - 7300 0.0046591248 0.0021899851 0.0044467487 - 7400 0.0055490678 0.0024363348 0.0051241645 - 7500 0.0062602828 0.0022183901 0.0052507145 - 7600 0.0071038558 0.0023618503 0.0058027804 - 7700 0.0049840045 0.0028164024 0.0052305296 - 7800 0.0060742119 0.0028555113 0.0057977076 - 7900 0.0057662888 0.0026868797 0.0054799259 - 8000 0.0055472766 0.0026213197 0.0053082818 - 8100 0.0061220787 0.0024665333 0.0054319151 - 8200 0.0035301258 0.0022766722 0.0039865769 - 8300 0.0047057949 0.0020748339 0.0043542033 - 8400 0.0056584891 0.0025104488 0.0052512795 - 8500 0.0052931944 0.0031335003 0.0056973914 - 8600 0.006813214 0.0031081279 0.0064082784 - 8700 0.0057000798 0.0031294549 0.0058904311 - 8800 0.0063988595 0.0029939656 0.0060934132 - 8900 0.0050809819 0.0033860223 0.0058471229 - 9000 0.0058880586 0.0027651879 0.0056172163 - 9100 0.0051273933 0.0025437215 0.0050273027 - 9200 0.0043046349 0.0024518668 0.0045369243 - 9300 0.006666349 0.0021761986 0.0054052113 - 9400 0.0047012258 0.0027272975 0.0050044538 - 9500 0.0051760716 0.0035739909 0.0060811506 - 9600 0.0057728292 0.0032402839 0.006036498 - 9700 0.0055216035 0.0027984706 0.0054729973 - 9800 0.004703682 0.0029933541 0.0052717001 - 9900 0.0041593147 0.0030192883 0.0050339564 - 10000 0.0046929175 0.0027902403 0.0050633722 - 10100 0.0055668751 0.0024845169 0.005180972 - 10200 0.0037097247 0.0027718476 0.0045687455 - 10300 0.0059339557 0.0024143878 0.0052886476 - 10400 0.0062305492 0.0023004427 0.0053183649 - 10500 0.006469886 0.0023585975 0.0054924485 - 10600 0.005657095 0.0024652988 0.0052054542 - 10700 0.0045489624 0.0022108292 0.0044142329 - 10800 0.0039137671 0.0021290713 0.0040248023 - 10900 0.0060584769 0.0014383624 0.0043729371 - 11000 0.0047773964 0.0017109606 0.0040250119 - 11100 0.0049103899 0.0022149005 0.0045933706 - 11200 0.0046635517 0.0023331593 0.0045920672 - 11300 0.0058616014 0.0023070819 0.0051462951 - 11400 0.0058097494 0.0021263416 0.0049404389 - 11500 0.0042942986 0.0014448672 0.003524918 - 11600 0.0040720183 0.0016123951 0.0035847789 - 11700 0.0053356245 0.0021014328 0.0046858759 - 11800 0.004687293 0.0021548492 0.0044252567 - 11900 0.0063532628 0.0019672104 0.005044572 - 12000 0.0043395406 0.0022585224 0.0043604874 - 12100 0.0053231095 0.0021427925 0.0047211737 - 12200 0.0048807984 0.0020771697 0.0044413064 - 12300 0.005499659 0.0021925484 0.0048564457 - 12400 0.005787679 0.0024101225 0.0052135295 - 12500 0.0040004679 0.0025784294 0.0045161561 - 12600 0.0058999596 0.0023774445 0.0052352374 - 12700 0.0051056486 0.0021385748 0.0046116234 - 12800 0.0047215983 0.002353936 0.0046409602 - 12900 0.0041353898 0.0026153486 0.0046184281 - 13000 0.0051901137 0.0025926707 0.0051066321 - 13100 0.0060193473 0.0023755093 0.0052911307 - 13200 0.005107327 0.0027866382 0.0052604997 - 13300 0.0047592681 0.0028306117 0.0051358822 - 13400 0.0061681377 0.002657851 0.0056455427 - 13500 0.0072085778 0.0028599475 0.0063516024 - 13600 0.0050179552 0.0027511364 0.0051817084 - 13700 0.0059074923 0.0022787841 0.0051402257 - 13800 0.0051721231 0.0023292898 0.0048345369 - 13900 0.0056939157 0.0020847768 0.0048427673 - 14000 0.0049202318 0.0020644018 0.0044476391 - 14100 0.0040767722 0.0020900385 0.004064725 - 14200 0.0060941803 0.0018489783 0.0048008469 - 14300 0.0054383001 0.0020061738 0.0046403505 - 14400 0.0053425018 0.0021812163 0.0047689906 - 14500 0.0058368713 0.0024358519 0.0052630865 - 14600 0.0054571894 0.0023154743 0.0049588004 - 14700 0.0056178837 0.0023659893 0.0050871518 - 14800 0.0064882962 0.0020825205 0.0052252889 - 14900 0.005756471 0.0021430626 0.0049313532 - 15000 0.0046968536 0.0026066542 0.0048816927 - 15100 0.004720725 0.0032852489 0.0055718501 - 15200 0.0041348554 0.0029406617 0.0049434823 - 15300 0.0066270017 0.0024823417 0.0056922957 - 15400 0.0062516894 0.0023389147 0.0053670767 - 15500 0.0063330891 0.0025187531 0.0055863432 - 15600 0.0037977587 0.0029118772 0.0047514165 - 15700 0.0060562637 0.0031529593 0.006086462 - 15800 0.0043590131 0.0042309954 0.0063423924 - 15900 0.0054996632 0.0039737454 0.0066376448 - 16000 0.0041029463 0.0027442708 0.0047316355 - 16100 0.0042593335 0.00241485 0.0044779647 - 16200 0.0042988081 0.0023259836 0.0044082188 - 16300 0.0041297023 0.0022021148 0.0042024394 - 16400 0.0061941988 0.0022393604 0.0052396755 - 16500 0.0048353816 0.002554023 0.0048961609 - 16600 0.0038443719 0.0027341543 0.0045962719 - 16700 0.0061213827 0.0026077704 0.0055728152 - 16800 0.0047782061 0.0025470655 0.0048615091 - 16900 0.0039175995 0.0029583529 0.0048559402 - 17000 0.0061051305 0.0026385274 0.0055957 - 17100 0.0068087722 0.0022961877 0.0055941868 - 17200 0.0055006619 0.0019430445 0.0046074277 - 17300 0.0055775768 0.0016768303 0.0043784691 - 17400 0.0046182935 0.0014177136 0.0036546995 - 17500 0.0055841841 0.0017164119 0.0044212511 - 17600 0.0059014797 0.0020151382 0.0048736675 - 17700 0.0050213328 0.0020801248 0.0045123329 - 17800 0.0038746517 0.0018465872 0.0037233716 - 17900 0.0052844911 0.0016009704 0.0041606458 - 18000 0.0035418291 0.0019176939 0.0036332673 - 18100 0.0051249341 0.0021592843 0.0046416743 - 18200 0.0051268243 0.0024105073 0.0048938128 - 18300 0.0044284461 0.0029788146 0.0051238432 - 18400 0.0054172764 0.0033614937 0.005985487 - 18500 0.0049756673 0.0036188793 0.0060289681 - 18600 0.0048959297 0.0029290296 0.0053004956 - 18700 0.0055142947 0.0025621639 0.0052331504 - 18800 0.0051765163 0.0026813913 0.0051887663 - 18900 0.0040512918 0.0032544717 0.0052168162 - 19000 0.0044329832 0.0029897042 0.0051369304 - 19100 0.0046617492 0.0027504707 0.0050085055 - 19200 0.0066856654 0.0029502301 0.0061885992 - 19300 0.005695229 0.0032255642 0.0059841907 - 19400 0.0054773421 0.0030408839 0.0056939715 - 19500 0.0058641449 0.0028107365 0.0056511817 - 19600 0.0051606233 0.0032742325 0.0057739094 - 19700 0.006336015 0.0039769501 0.0070459574 - 19800 0.005961745 0.0038052578 0.0066929781 - 19900 0.0050629494 0.0031771549 0.005629521 - 20000 0.0048692221 0.0031411072 0.0054996367 - 20100 0.0051220625 0.0035425191 0.0060235181 - 20200 0.0059705121 0.0034199888 0.0063119556 - 20300 0.0064367845 0.0037184565 0.006836274 - 20400 0.0035516568 0.0040344529 0.0057547867 - 20500 0.0068050837 0.0032583702 0.0065545826 - 20600 0.0059588791 0.0028310909 0.0057174229 - 20700 0.0043616569 0.0031799688 0.0052926464 - 20800 0.0057048259 0.0033570742 0.0061203492 - 20900 0.0080710352 0.0026310052 0.0065404129 - 21000 0.0059029844 0.0023584706 0.0052177287 - 21100 0.0051953361 0.0027721438 0.0052886347 - 21200 0.0056943428 0.0029476308 0.0057058281 - 21300 0.0049915906 0.0033105902 0.0057283919 - 21400 0.0061267053 0.0026490823 0.0056167052 - 21500 0.0064465952 0.002037581 0.0051601506 - 21600 0.0041680365 0.0025317962 0.0045506889 - 21700 0.0050285899 0.0027899923 0.0052257155 - 21800 0.0054184947 0.0028818109 0.0055063943 - 21900 0.0057267707 0.0030080119 0.0057819164 - 22000 0.0054268504 0.0029637096 0.0055923403 - 22100 0.0067493917 0.0027743804 0.006043617 - 22200 0.0045902214 0.0027471146 0.0049705031 - 22300 0.0059222982 0.0031696808 0.006038294 - 22400 0.0048914946 0.0035294815 0.0058987992 - 22500 0.0040811307 0.0031259245 0.0051027222 - 22600 0.0055866271 0.0029409967 0.0056470192 - 22700 0.0036328459 0.0028084271 0.0045680868 - 22800 0.0051276977 0.0028518928 0.0053356213 - 22900 0.0051798654 0.0031764952 0.0056854925 - 23000 0.0063744515 0.0033434283 0.0064310533 - 23100 0.0060796668 0.0033795647 0.0063244033 - 23200 0.0069620292 0.0038535022 0.0072257351 - 23300 0.00545905 0.0040805422 0.0067247696 - 23400 0.0039613172 0.0037091454 0.0056279085 - 23500 0.0044549281 0.0033245481 0.0054824039 - 23600 0.0054469272 0.0030351464 0.0056735018 - 23700 0.0050671251 0.0033868405 0.0058412292 - 23800 0.0056075201 0.0035940982 0.0063102407 - 23900 0.0061485936 0.0035529151 0.0065311401 - 24000 0.0053796477 0.003261894 0.0058676608 - 24100 0.00472662 0.0022780761 0.0045675327 - 24200 0.004909189 0.0021154602 0.0044933486 - 24300 0.0046818374 0.0026013054 0.0048690704 - 24400 0.0056878596 0.0026242394 0.0053792964 - 24500 0.0049548837 0.0023025163 0.0047025381 - 24600 0.0058855025 0.0020313353 0.0048821255 - 24700 0.0057197921 0.001865509 0.0046360333 - 24800 0.0045906296 0.0018954295 0.0041190156 - 24900 0.0053914928 0.0018988531 0.0045103574 - 25000 0.0052923355 0.0019126127 0.0044760877 - 25100 0.0055086636 0.0022551009 0.0049233598 - 25200 0.0050354993 0.0025207667 0.0049598366 - 25300 0.0062771114 0.002689693 0.0057301688 - 25400 0.0051407684 0.0026353614 0.0051254211 - 25500 0.0049473786 0.002035293 0.0044316795 - 25600 0.0049497931 0.0017289305 0.0041264865 - 25700 0.0038828638 0.0017067677 0.0035875299 - 25800 0.0041032253 0.0016555139 0.0036430136 - 25900 0.0043960907 0.0019220131 0.0040513695 - 26000 0.0054947112 0.0019971585 0.0046586592 - 26100 0.0050400022 0.0025193504 0.0049606015 - 26200 0.0057018652 0.0025971986 0.0053590396 - 26300 0.005011558 0.0026140868 0.0050415602 - 26400 0.0054824751 0.0030303377 0.0056859116 - 26500 0.0046574698 0.0032112751 0.0054672371 - 26600 0.0049652224 0.0034011085 0.0058061381 - 26700 0.0061257817 0.0030244937 0.0059916692 - 26800 0.005980876 0.0023447196 0.0052417064 - 26900 0.0060087308 0.0021342555 0.0050447345 - 27000 0.0048195443 0.0022132999 0.0045477667 - 27100 0.0046801222 0.0022269075 0.0044938417 - 27200 0.0048517121 0.0018881337 0.0042381817 - 27300 0.0049279497 0.0019983652 0.0043853408 - 27400 0.0056404921 0.0022896346 0.005021748 - 27500 0.0035470369 0.0020012119 0.0037193079 - 27600 0.0046343287 0.0015742386 0.0038189915 - 27700 0.0055773176 0.0020371974 0.0047387107 - 27800 0.0044427908 0.0021849169 0.0043368936 - 27900 0.0060403259 0.0021016061 0.0050273889 - 28000 0.0062634535 0.0020122561 0.0050461164 - 28100 0.0041086235 0.0020061686 0.0039962831 - 28200 0.0057899213 0.0018915964 0.0046960896 - 28300 0.0044324131 0.0016828195 0.0038297696 - 28400 0.0050883025 0.0020824193 0.0045470658 - 28500 0.0049381249 0.0021670207 0.004558925 - 28600 0.0050259897 0.0024610669 0.0048955306 - 28700 0.0049500964 0.0019898824 0.0043875854 - 28800 0.0050759356 0.0020809308 0.0045395871 - 28900 0.0040248015 0.0027204362 0.0046699494 - 29000 0.0047153614 0.0026787292 0.0049627323 - 29100 0.0040957835 0.0024111307 0.0043950258 - 29200 0.0056519885 0.0021787617 0.0049164437 - 29300 0.0047676273 0.0023988021 0.0047081216 - 29400 0.0055401434 0.0021774177 0.0048609246 - 29500 0.0049873906 0.0023485753 0.0047643426 - 29600 0.0044948166 0.0027077998 0.0048849766 - 29700 0.0045424759 0.0030638874 0.0052641492 - 29800 0.0058669608 0.0032529844 0.0060947935 - 29900 0.0048799697 0.0027421848 0.0051059202 - 30000 0.0056811578 0.002309364 0.0050611748 - 30100 0.0047488378 0.0021725318 0.0044727501 - 30200 0.0049144139 0.0019817158 0.0043621351 - 30300 0.0057501213 0.0021028142 0.0048880292 - 30400 0.0042716315 0.0025429944 0.004612066 - 30500 0.0067528421 0.0028193599 0.0060902678 - 30600 0.0057971722 0.0027646877 0.005572693 - 30700 0.0046519658 0.0021713071 0.0044246031 - 30800 0.0062556802 0.0024026847 0.0054327798 - 30900 0.0062369515 0.0028131674 0.0058341908 - 31000 0.0058799256 0.0033815814 0.0062296703 - 31100 0.0056127161 0.0032625824 0.0059812417 - 31200 0.0059713954 0.0032344169 0.0061268115 - 31300 0.0038908456 0.0033710537 0.005255682 - 31400 0.0052843391 0.0023752877 0.0049348894 - 31500 0.0046910063 0.0022372171 0.0045094233 - 31600 0.0055172099 0.0022328649 0.0049052634 - 31700 0.0053802906 0.0023889173 0.0049949955 - 31800 0.0038325771 0.0033449711 0.0052013757 - 31900 0.0037186998 0.0034627943 0.0052640395 - 32000 0.0049583079 0.0033150552 0.0057167356 - 32100 0.0053326022 0.0037481206 0.0063310998 - 32200 0.0057556792 0.0037742283 0.0065621354 - 32300 0.0051391774 0.0033843618 0.0058736509 - 32400 0.006500734 0.0030393375 0.0061881305 - 32500 0.0045531068 0.0030148805 0.0052202916 - 32600 0.0073127557 0.002436045 0.005978161 - 32700 0.0055198561 0.0020534511 0.0047271314 - 32800 0.0046088417 0.0024366817 0.0046690894 - 32900 0.0044566327 0.0025665994 0.0047252809 - 33000 0.0062871 0.0024855066 0.0055308207 - 33100 0.0061567926 0.0029374257 0.0059196221 - 33200 0.0052775834 0.0029602392 0.0055165687 - 33300 0.004685985 0.0026471956 0.0049169696 - 33400 0.0049421143 0.0024079735 0.0048018101 - 33500 0.0051545234 0.0025147584 0.0050114806 - 33600 0.0045488623 0.0025390452 0.0047424003 - 33700 0.0055326329 0.0022224498 0.0049023188 - 33800 0.0052992461 0.0025359157 0.005102738 - 33900 0.0057505741 0.0023395306 0.005124965 - 34000 0.0058652694 0.0023020932 0.0051430831 - 34100 0.0061933253 0.0021174817 0.0051173736 - 34200 0.0046537724 0.0025895065 0.0048436775 - 34300 0.004264356 0.0028746019 0.0049401494 - 34400 0.0042366824 0.0028783879 0.0049305309 - 34500 0.0057063776 0.0022336498 0.0049976764 - 34600 0.005758766 0.0025030016 0.0052924039 - 34700 0.0049833459 0.0027923014 0.0052061095 - 34800 0.0052309003 0.0028121502 0.0053458675 - 34900 0.005864006 0.0025934089 0.0054337868 - 35000 0.0044589164 0.0025795618 0.0047393495 - 35100 0.0033028726 0.0027300683 0.0043298972 - 35200 0.0044310294 0.0026994133 0.0048456932 - 35300 0.0050963569 0.0023707266 0.0048392745 - 35400 0.0039651028 0.0020705618 0.0039911584 - 35500 0.0045984269 0.0021294605 0.0043568236 - 35600 0.0060885016 0.0019210399 0.0048701579 - 35700 0.0051118945 0.0021462282 0.0046223021 - 35800 0.0062500349 0.0022475991 0.0052749598 - 35900 0.0045383142 0.0025734167 0.0047716626 - 36000 0.0046724525 0.0024962743 0.0047594935 - 36100 0.0055275874 0.0026324039 0.005309829 - 36200 0.0035475281 0.0024770701 0.004195404 - 36300 0.004057809 0.0023731267 0.0043386279 - 36400 0.0050400913 0.00202538 0.0044666742 - 36500 0.0045837726 0.002006235 0.0042264998 - 36600 0.0048101942 0.0020225857 0.0043525235 - 36700 0.0051934098 0.0018959513 0.0044115092 - 36800 0.0050127358 0.0020565516 0.0044845955 - 36900 0.0053246432 0.0020928223 0.0046719463 - 37000 0.0053723732 0.0027875044 0.0053897477 - 37100 0.0049468732 0.0031870831 0.0055832248 - 37200 0.006831562 0.0028839943 0.0061930321 - 37300 0.0063607127 0.0026862884 0.0057672587 - 37400 0.0054788572 0.002514145 0.0051679664 - 37500 0.0054031478 0.0026456973 0.005262847 - 37600 0.0039371481 0.0025561282 0.0044631844 - 37700 0.0066068788 0.0020766222 0.0052768291 - 37800 0.0032801454 0.0020764102 0.0036652307 - 37900 0.0041339612 0.0026674868 0.0046698742 - 38000 0.0055823449 0.0032666872 0.0059706355 - 38100 0.005973594 0.0035272518 0.0064207114 - 38200 0.0065961453 0.0031633082 0.0063583161 - 38300 0.0040993355 0.0030945568 0.0050801724 - 38400 0.0056239193 0.0026509411 0.005375027 - 38500 0.0054596641 0.0024468678 0.0050913925 - 38600 0.0047467989 0.0024470794 0.0047463101 - 38700 0.0051589986 0.0024852238 0.0049841137 - 38800 0.0040314269 0.0023425102 0.0042952326 - 38900 0.0055494799 0.0024739439 0.0051619732 - 39000 0.0057123393 0.0029043123 0.0056712266 - 39100 0.004762561 0.0031165168 0.0054233823 - 39200 0.0045190791 0.0034780146 0.0056669435 - 39300 0.0053509933 0.0032816447 0.005873532 - 39400 0.0066184379 0.0027647815 0.0059705874 - 39500 0.004686954 0.0027430682 0.0050133115 - 39600 0.0040613984 0.0027835233 0.0047507631 - 39700 0.00436362 0.0028185692 0.0049321977 - 39800 0.0041818019 0.0026689778 0.0046945381 - 39900 0.0044652386 0.0026446309 0.0048074808 - 40000 0.0043859781 0.0029722398 0.0050966979 - 40100 0.0048911651 0.0035377264 0.0059068845 - 40200 0.0054885033 0.0034219954 0.0060804892 - 40300 0.0048882782 0.003313088 0.0056808478 - 40400 0.0045649906 0.002663118 0.0048742853 - 40500 0.0032042203 0.0025591672 0.0041112114 - 40600 0.0037560453 0.0024499954 0.0042693299 - 40700 0.0050624348 0.0023781604 0.0048302772 - 40800 0.0050378892 0.0028467059 0.0052869335 - 40900 0.0041181479 0.002696186 0.0046909139 - 41000 0.0035577537 0.0024444495 0.0041677365 - 41100 0.0040897334 0.0020456915 0.0040266561 - 41200 0.0061506262 0.0023639004 0.0053431099 - 41300 0.0059776113 0.0025750297 0.0054704352 - 41400 0.00577835 0.0026284328 0.0054273211 - 41500 0.0054837764 0.0029007679 0.0055569721 - 41600 0.0053454726 0.002971531 0.0055607443 - 41700 0.0049686369 0.0028284588 0.0052351423 - 41800 0.0053946647 0.0028582538 0.0054712945 - 41900 0.0062644531 0.0027138489 0.0057481934 - 42000 0.0049638948 0.0025881998 0.0049925863 - 42100 0.0052367551 0.0024496317 0.004986185 - 42200 0.0055528583 0.0021027513 0.0047924171 - 42300 0.0064240321 0.0023581031 0.0054697437 - 42400 0.0048573302 0.0025692651 0.0049220344 - 42500 0.0055153024 0.0025061428 0.0051776174 - 42600 0.0053402657 0.002518657 0.0051053482 - 42700 0.0055903918 0.002742837 0.005450683 - 42800 0.0042357447 0.0025491503 0.0046008391 - 42900 0.0062111691 0.0024254143 0.0054339493 - 43000 0.0058532768 0.0024727352 0.0053079161 - 43100 0.0064674118 0.0021505975 0.0052832501 - 43200 0.0076669666 0.0020239967 0.0057376837 - 43300 0.0059820853 0.0025064513 0.0054040239 - 43400 0.0037967844 0.0028834415 0.0047225089 - 43500 0.0050749536 0.0028538958 0.0053120764 - 43600 0.0048557888 0.0027304777 0.0050825004 - 43700 0.0051716941 0.0030697631 0.0055748024 - 43800 0.0052060302 0.0033859119 0.0059075827 - 43900 0.0057196614 0.0025229604 0.0052934214 - 44000 0.0067206824 0.0018883388 0.0051436693 - 44100 0.0042383267 0.0020011317 0.0040540712 - 44200 0.0053722894 0.0022571199 0.0048593226 - 44300 0.0044275281 0.0025010136 0.0046455975 - 44400 0.0043012685 0.0022262373 0.0043096642 - 44500 0.0061094887 0.0019067784 0.004866062 - 44600 0.0051340212 0.001770822 0.0042576135 - 44700 0.0049228722 0.0019485124 0.0043330286 - 44800 0.0047224749 0.0024206022 0.004708051 - 44900 0.0052923059 0.0025880463 0.005151507 - 45000 0.0064914225 0.0028052885 0.0059495713 - 45100 0.0059607581 0.00259952 0.0054867623 - 45200 0.0047371886 0.0028174016 0.0051119773 - 45300 0.0046126347 0.0030326037 0.0052668486 - 45400 0.0035204206 0.0030079807 0.0047131844 - 45500 0.00494563 0.0027042174 0.0050997569 - 45600 0.0063314331 0.0024492755 0.0055160634 - 45700 0.0061351887 0.0026754165 0.0056471485 - 45800 0.0048941125 0.0024666734 0.0048372591 - 45900 0.0047081916 0.0024228099 0.0047033402 - 46000 0.0049590605 0.0025580479 0.0049600929 - 46100 0.0051945351 0.0020052558 0.0045213587 - 46200 0.0052197173 0.0023940852 0.0049223858 - 46300 0.004827257 0.0022937074 0.00463191 - 46400 0.0044532629 0.0020113079 0.0041683571 - 46500 0.0034159661 0.0022722167 0.0039268253 - 46600 0.0049121478 0.0020406144 0.004419936 - 46700 0.0064815376 0.0019302174 0.0050697122 - 46800 0.0045098648 0.0018962701 0.0040807359 - 46900 0.0062450317 0.0022291702 0.0052541075 - 47000 0.0035127948 0.0024280893 0.0041295993 - 47100 0.006492068 0.0021365674 0.0052811628 - 47200 0.0042201123 0.0022357441 0.004279861 - 47300 0.0063195803 0.0022819849 0.0053430316 - 47400 0.0043423628 0.0024638177 0.0045671497 - 47500 0.0050864859 0.0024792265 0.0049429932 - 47600 0.005518443 0.0024967413 0.0051697371 - 47700 0.0048723978 0.0027333198 0.0050933874 - 47800 0.0053948693 0.0026147393 0.0052278791 - 47900 0.0058932227 0.0024898507 0.0053443804 - 48000 0.0041492471 0.0024426199 0.0044524114 - 48100 0.0059808441 0.0023673784 0.0052643497 - 48200 0.0058362548 0.002247142 0.0050740779 - 48300 0.0040490527 0.0019009578 0.0038622177 - 48400 0.0061822623 0.0017955615 0.0047900947 - 48500 0.0061813661 0.0020093812 0.0050034804 - 48600 0.0053920983 0.0025090577 0.0051208554 - 48700 0.004592587 0.0024533089 0.0046778432 - 48800 0.0050657386 0.0026800425 0.0051337597 - 48900 0.0052137153 0.0028926037 0.005417997 - 49000 0.0037940992 0.002916792 0.0047545588 - 49100 0.0077501956 0.0023703921 0.006124393 - 49200 0.0054885198 0.0023761014 0.0050346032 - 49300 0.0046145502 0.002223878 0.0044590507 - 49400 0.0051217949 0.0019930866 0.004473956 - 49500 0.0057785479 0.0022009466 0.0049999307 - 49600 0.0047012565 0.0023248618 0.0046020329 - 49700 0.0046750482 0.0024799876 0.004744464 - 49800 0.00351766 0.0025689197 0.0042727863 - 49900 0.0051033202 0.0022472872 0.0047192079 - 50000 0.0047317705 0.0022400935 0.0045320448 - 50100 0.0055201845 0.0031067555 0.0057805949 - 50200 0.0069692937 0.0033680673 0.0067438189 - 50300 0.0040680843 0.0031412817 0.00511176 - 50400 0.0058262804 0.0028436797 0.0056657843 - 50500 0.0076287107 0.002556941 0.0062520978 - 50600 0.0050080379 0.0026449193 0.0050706876 - 50700 0.0048428632 0.0024425476 0.0047883095 - 50800 0.0060281456 0.002736442 0.005656325 - 50900 0.0049388392 0.0024590955 0.0048513457 - 51000 0.0050367373 0.0025554771 0.0049951467 - 51100 0.0053142174 0.0027915755 0.0053656495 - 51200 0.0049006094 0.003084364 0.0054580967 - 51300 0.0053791559 0.0028159019 0.0054214306 - 51400 0.0042938503 0.0029417859 0.0050216197 - 51500 0.0043081475 0.0027751418 0.0048619007 - 51600 0.0088102151 0.0023316717 0.0065991196 - 51700 0.0052813802 0.0026402437 0.0051984123 - 51800 0.004604044 0.0023271625 0.0045572463 - 51900 0.0057863468 0.0017470293 0.004549791 - 52000 0.0057661775 0.00183123 0.0046242222 - 52100 0.0061247121 0.0015843677 0.0045510251 - 52200 0.0071722834 0.0017511898 0.0052252645 - 52300 0.0046260782 0.0022794638 0.0045202205 - 52400 0.0048161519 0.0026170508 0.0049498744 - 52500 0.0049589132 0.0025467959 0.0049487695 - 52600 0.0054419295 0.0022110196 0.0048469542 - 52700 0.0042229886 0.001917851 0.0039633611 - 52800 0.0046001197 0.0016801582 0.0039083412 - 52900 0.004914422 0.0018046979 0.0041851211 - 53000 0.0046991263 0.0019851838 0.0042613231 - 53100 0.0042639054 0.0023242775 0.0043896067 - 53200 0.0045067401 0.0025471883 0.0047301406 - 53300 0.0047538542 0.0019830045 0.0042856526 - 53400 0.0047486025 0.0019324063 0.0042325106 - 53500 0.0048083968 0.0017693685 0.0040984357 - 53600 0.0065633193 0.0021607598 0.0053398676 - 53700 0.0041226678 0.0021096217 0.0041065389 - 53800 0.0065666343 0.001859017 0.0050397305 - 53900 0.0043684625 0.0023654451 0.0044814191 - 54000 0.00661965 0.0020896491 0.005296042 - 54100 0.0056617034 0.0024751997 0.0052175873 - 54200 0.0056699902 0.0029135378 0.0056599393 - 54300 0.0065132674 0.002260152 0.0054150159 - 54400 0.0052304147 0.0022743599 0.004807842 - 54500 0.003902541 0.0025482596 0.0044385529 - 54600 0.0042006917 0.0023859112 0.0044206212 - 54700 0.0049002253 0.0017799436 0.0041534902 - 54800 0.0063188116 0.0019720347 0.0050327091 - 54900 0.003883617 0.0027179506 0.0045990776 - 55000 0.0047682205 0.0023564442 0.004666051 - 55100 0.0049795399 0.0022132117 0.0046251763 - 55200 0.0045826496 0.0025256612 0.004745382 - 55300 0.0049672743 0.0024701981 0.0048762216 - 55400 0.0057203318 0.0025342839 0.0053050696 - 55500 0.0063745311 0.0030385825 0.006126246 - 55600 0.0046079574 0.003329151 0.0055611304 - 55700 0.0054436227 0.0029024557 0.0055392104 - 55800 0.0039797603 0.0025810969 0.0045087933 - 55900 0.0048568595 0.0021527815 0.0045053228 - 56000 0.0040275306 0.0022058644 0.0041566995 - 56100 0.0061120989 0.0021592222 0.0051197701 - 56200 0.0057123527 0.0025617635 0.0053286843 - 56300 0.0046194509 0.0025573711 0.0047949177 - 56400 0.0039442485 0.0023640907 0.004274586 - 56500 0.0038660966 0.002758116 0.0046307566 - 56600 0.0032326056 0.0033549076 0.004920701 - 56700 0.0056923409 0.0031221452 0.0058793728 - 56800 0.0060646237 0.0030141178 0.0059516699 - 56900 0.006115688 0.003334233 0.0062965194 - 57000 0.0053874687 0.0029809086 0.0055904638 - 57100 0.0054521391 0.0024928762 0.0051337561 - 57200 0.0031401527 0.002510637 0.0040316484 - 57300 0.0047253215 0.0019448527 0.0042336803 - 57400 0.0057749118 0.0014821744 0.0042793972 - 57500 0.0044322247 0.0015605608 0.0037074196 - 57600 0.0044258001 0.0020299208 0.0041736677 - 57700 0.0075688346 0.0022068043 0.0058729586 - 57800 0.0045678533 0.0022477979 0.0044603519 - 57900 0.0058210499 0.0021932846 0.0050128556 - 58000 0.0039106773 0.0023497057 0.0042439401 - 58100 0.0043659259 0.0023985942 0.0045133396 - 58200 0.0052811537 0.0025796006 0.0051376594 - 58300 0.0060919327 0.0025554362 0.0055062161 - 58400 0.0059583906 0.0024175234 0.0053036189 - 58500 0.0048347897 0.0027857753 0.0051276266 - 58600 0.0047331614 0.0029995955 0.0052922205 - 58700 0.004541713 0.0033203508 0.005520243 - 58800 0.0052809511 0.0030393743 0.005597335 - 58900 0.0042685389 0.002498237 0.0045658106 - 59000 0.0048942191 0.0023499639 0.0047206013 - 59100 0.0045228238 0.0021725498 0.0043632926 - 59200 0.0040432327 0.0020297669 0.0039882077 - 59300 0.0042141076 0.0021916311 0.0042328394 - 59400 0.0049196661 0.0023702708 0.0047532341 - 59500 0.0041507688 0.0026243121 0.0046348407 - 59600 0.0036895214 0.0023204866 0.0041075985 - 59700 0.0053414352 0.0022056775 0.0047929352 - 59800 0.0060050644 0.0021506186 0.0050593216 - 59900 0.005024536 0.002515958 0.0049497177 - 60000 0.0052421833 0.0025078435 0.005047026 - 60100 0.0035915521 0.0023423059 0.0040819639 - 60200 0.0051291229 0.0019083665 0.0043927854 - 60300 0.0043115937 0.0018644636 0.0039528917 - 60400 0.0045119236 0.0021517262 0.0043371892 - 60500 0.0046815212 0.0021488682 0.00441648 - 60600 0.0048052376 0.0020429475 0.0043704844 - 60700 0.0050119835 0.0023182045 0.004745884 - 60800 0.0049760362 0.0019843876 0.0043946551 - 60900 0.0045491831 0.0020072164 0.004210727 - 61000 0.0041761499 0.0021053473 0.0041281699 - 61100 0.0065150362 0.0017252353 0.004880956 - 61200 0.0065141561 0.0022325099 0.0053878042 - 61300 0.0046754362 0.0023997879 0.0046644523 - 61400 0.0055955869 0.0025219758 0.0052323382 - 61500 0.0059363172 0.0024926639 0.0053680675 - 61600 0.0059652198 0.002390112 0.0052795153 - 61700 0.0052771229 0.0026384214 0.0051945278 - 61800 0.0053741127 0.0027089185 0.0053120043 - 61900 0.004194665 0.0025417051 0.004573496 - 62000 0.0055512641 0.0022903635 0.0049792571 - 62100 0.0036711721 0.002286762 0.004064986 - 62200 0.0051575367 0.0022098016 0.0047079834 - 62300 0.0063992682 0.0026185075 0.0057181531 - 62400 0.0048267437 0.0034547814 0.0057927354 - 62500 0.0052452969 0.0030296057 0.0055702964 - 62600 0.0055306378 0.0026198443 0.005298747 - 62700 0.0061692352 0.002705465 0.0056936883 - 62800 0.0039775361 0.0025686951 0.0044953142 - 62900 0.0050395494 0.0027264043 0.0051674361 - 63000 0.0042250592 0.0026460156 0.0046925287 - 63100 0.0069409293 0.002427531 0.0057895437 - 63200 0.0040096476 0.0028749921 0.0048171651 - 63300 0.0042946451 0.0029661691 0.0050463878 - 63400 0.0051014173 0.0027802312 0.0052512302 - 63500 0.0056054677 0.0028154461 0.0055305945 - 63600 0.0052449525 0.0028559522 0.005396476 - 63700 0.0033595984 0.0026309727 0.0042582782 - 63800 0.0047839734 0.0023940687 0.0047113058 - 63900 0.0044410395 0.0021801679 0.0043312964 - 64000 0.0055577161 0.0027829926 0.0054750113 - 64100 0.004048642 0.0028515993 0.0048126603 - 64200 0.0044841913 0.0026711683 0.0048431985 - 64300 0.0047136338 0.0022843925 0.0045675589 - 64400 0.0049709033 0.0025534181 0.0049611994 - 64500 0.0047805405 0.0030334391 0.0053490134 - 64600 0.0057422735 0.0036739468 0.0064553605 - 64700 0.0061023866 0.0037429091 0.0066987526 - 64800 0.0048404033 0.0031406146 0.0054851849 - 64900 0.0040186357 0.0031754299 0.0051219566 - 65000 0.0057484996 0.0026695165 0.005453946 - 65100 0.006219253 0.0025334997 0.0055459503 - 65200 0.0047424095 0.0027193037 0.0050164083 - 65300 0.0053205035 0.0026214206 0.0051985395 - 65400 0.0043465598 0.0028623895 0.0049677544 - 65500 0.0038907909 0.0032448815 0.0051294834 - 65600 0.0048670438 0.0025113118 0.0048687861 - 65700 0.0073689169 0.0020844691 0.0056537882 - 65800 0.0039196302 0.0026456796 0.0045442505 - 65900 0.0055500851 0.0030361829 0.0057245054 - 66000 0.0045567352 0.0034902943 0.005697463 - 66100 0.0074516027 0.0033760203 0.0069853903 - 66200 0.0065781665 0.0030425231 0.0062288225 - 66300 0.004619924 0.0029103623 0.005148138 - 66400 0.0040646631 0.002963337 0.0049321583 - 66500 0.0045000401 0.0028953359 0.0050750429 - 66600 0.0051483879 0.0031211333 0.0056148837 - 66700 0.0040349733 0.0031688416 0.0051232818 - 66800 0.0048868605 0.003276955 0.0056440281 - 66900 0.0067859836 0.0035137595 0.0068007203 - 67000 0.0058265386 0.0034412575 0.0062634871 - 67100 0.0052633353 0.0034055609 0.0059549889 - 67200 0.0064284956 0.0032394384 0.0063532409 - 67300 0.0027000434 0.0035506332 0.0048584668 - 67400 0.0050159624 0.0028996921 0.0053292989 - 67500 0.0049480369 0.0020429813 0.0044396867 - 67600 0.0054561308 0.0018739843 0.0045167977 - 67700 0.0051401736 0.002447023 0.0049367946 - 67800 0.0054504276 0.0025875138 0.0052275646 - 67900 0.0049973108 0.0027785558 0.0051991283 - 68000 0.0046135151 0.0025744134 0.0048090847 - 68100 0.0058902686 0.0025091051 0.0053622039 - 68200 0.006525741 0.00277525 0.0059361558 - 68300 0.0062333605 0.003294486 0.0063137701 - 68400 0.0038789664 0.0031190984 0.0049979727 - 68500 0.006344903 0.0027980168 0.0058713292 - 68600 0.0059552753 0.0029377461 0.0058223326 - 68700 0.006534808 0.0024723211 0.0056376187 - 68800 0.0049830423 0.0026495847 0.0050632458 - 68900 0.0055194895 0.0026376665 0.0053111693 - 69000 0.005248464 0.0027441409 0.0052863656 - 69100 0.00610038 0.0025242272 0.0054790988 - 69200 0.0056081198 0.002615829 0.005332262 - 69300 0.0046932551 0.0031978213 0.0054711167 - 69400 0.0044797368 0.0033121118 0.0054819843 - 69500 0.0040834073 0.0027978938 0.0047757942 - 69600 0.0046264427 0.0024383867 0.0046793199 - 69700 0.0057525135 0.0024217076 0.0052080813 - 69800 0.0035937948 0.0030663858 0.0048071302 - 69900 0.0063268299 0.0031536224 0.0062181806 - 70000 0.0050163574 0.0031688775 0.0055986757 - 70100 0.0065569871 0.0026073082 0.0057833488 - 70200 0.006758981 0.0028884486 0.00616233 - 70300 0.0052551484 0.0029803949 0.0055258574 - 70400 0.0039765128 0.0021870199 0.0041131433 - 70500 0.0033767572 0.0022690098 0.0039046266 - 70600 0.0043322512 0.0028274575 0.0049258917 - 70700 0.0039618499 0.0026013424 0.0045203635 - 70800 0.0046505746 0.002561616 0.0048142381 - 70900 0.0049752977 0.0027637395 0.0051736494 - 71000 0.006268218 0.0025706371 0.0056068052 - 71100 0.0050346124 0.0027204481 0.0051590885 - 71200 0.0037601067 0.0027686558 0.0045899575 - 71300 0.0035681459 0.0023250873 0.0040534079 - 71400 0.0060254663 0.001740141 0.0046587262 - 71500 0.0050622254 0.0022541539 0.0047061694 - 71600 0.0048347187 0.0022714046 0.0046132215 - 71700 0.0055556574 0.0023434464 0.005034468 - 71800 0.0053445551 0.0027155957 0.0053043646 - 71900 0.0079132467 0.0027812266 0.0066142054 - 72000 0.0054146716 0.0027339743 0.0053567058 - 72100 0.0047148006 0.0025977096 0.0048814412 - 72200 0.0050282558 0.0021100138 0.0045455752 - 72300 0.0062543109 0.0019785708 0.0050080026 - 72400 0.0072896671 0.0020219907 0.0055529232 - 72500 0.0046146006 0.0024291039 0.0046643011 - 72600 0.0069708546 0.0022660823 0.00564259 - 72700 0.0054515937 0.0025579627 0.0051985784 - 72800 0.0046026466 0.0027741876 0.0050035946 - 72900 0.0064497579 0.0030699937 0.0061940952 - 73000 0.0039078342 0.0030667562 0.0049596133 - 73100 0.00561605 0.0027168376 0.0054371118 - 73200 0.0068059247 0.0029699092 0.006266529 - 73300 0.005497213 0.0028514874 0.0055141999 - 73400 0.0049823935 0.0028217111 0.005235058 - 73500 0.0057119756 0.0024973709 0.0052641091 - 73600 0.0046997505 0.0020906123 0.0043670539 - 73700 0.0050232687 0.0020640359 0.0044971816 - 73800 0.0041944443 0.0022356183 0.0042673022 - 73900 0.0045972572 0.0023048966 0.004531693 - 74000 0.0047054619 0.0019601751 0.0042393832 - 74100 0.0042026724 0.0022902352 0.0043259047 - 74200 0.0059282033 0.0025191425 0.0053906159 - 74300 0.005877514 0.0029029143 0.0057498351 - 74400 0.0069952655 0.0034254568 0.0068137885 - 74500 0.0070912842 0.0039348173 0.0073696581 - 74600 0.0050307689 0.0036515215 0.0060883002 - 74700 0.0047360866 0.0033218963 0.0056159383 - 74800 0.0053356726 0.0036256723 0.0062101387 - 74900 0.006863753 0.0031790434 0.0065036738 - 75000 0.005580115 0.0027386146 0.0054414829 - 75100 0.0078636186 0.0026344761 0.0064434164 - 75200 0.0040973716 0.0025574235 0.0045420879 - 75300 0.0054074111 0.0026065051 0.0052257198 - 75400 0.005254965 0.0028002385 0.0053456122 - 75500 0.0044720107 0.0028930439 0.0050591741 - 75600 0.0060863331 0.0026520671 0.0056001347 - 75700 0.0066099709 0.0027123812 0.0059140858 - 75800 0.0038365247 0.0024724153 0.0043307319 - 75900 0.005075693 0.0025125634 0.0049711022 - 76000 0.0054433305 0.0026148583 0.0052514715 - 76100 0.0051580329 0.0029510855 0.0054495077 - 76200 0.0057161531 0.0026737724 0.0054425341 - 76300 0.0043657759 0.0027971583 0.004911831 - 76400 0.0034616864 0.0026831546 0.0043599089 - 76500 0.004966147 0.0021238462 0.0045293237 - 76600 0.0051730714 0.0018829864 0.0043886929 - 76700 0.0044397151 0.0020428068 0.0041932937 - 76800 0.0039450716 0.0022134128 0.0041243069 - 76900 0.0036250139 0.0021532973 0.0039091634 - 77000 0.0040164772 0.0024830857 0.0044285669 - 77100 0.0046688773 0.00263704 0.0048985274 - 77200 0.0064065334 0.0021917237 0.0052948883 - 77300 0.0058595336 0.0020535165 0.004891728 - 77400 0.0048718733 0.002122692 0.0044825057 - 77500 0.0060504111 0.0023263985 0.0052570664 - 77600 0.0065032321 0.0024305826 0.0055805856 - 77700 0.0056393474 0.002711323 0.0054428819 - 77800 0.0030755162 0.002956813 0.0044465161 - 77900 0.0057298975 0.0021610632 0.0049364823 - 78000 0.0045418424 0.002100903 0.0043008579 - 78100 0.0049140678 0.0019305455 0.0043107971 - 78200 0.0041294307 0.0020458946 0.0040460875 - 78300 0.0052952164 0.0023708202 0.0049356906 - 78400 0.004457679 0.0026233814 0.0047825697 - 78500 0.0070009253 0.0021412988 0.005532372 - 78600 0.0061236104 0.0023672944 0.0053334182 - 78700 0.0053717833 0.0025820229 0.0051839805 - 78800 0.0060639382 0.0021566479 0.005093868 - 78900 0.0041250294 0.0021847706 0.0041828317 - 79000 0.005706545 0.002315735 0.0050798427 - 79100 0.0042556826 0.0024410485 0.0045023948 - 79200 0.0059974474 0.0021755407 0.0050805543 - 79300 0.0055114287 0.0020889466 0.0047585449 - 79400 0.0055983464 0.0021016464 0.0048133455 - 79500 0.0082437534 0.0021285658 0.0061216339 - 79600 0.0050465926 0.0021368629 0.0045813062 - 79700 0.0069452511 0.0018334751 0.0051975811 - 79800 0.0056488933 0.0024177836 0.0051539663 - 79900 0.0052280726 0.0030449064 0.0055772541 - 80000 0.0041110439 0.0032288172 0.0052201041 - 80100 0.0057369848 0.00272939 0.005508242 - 80200 0.0053777867 0.0028405433 0.0054454087 - 80300 0.0046586072 0.00315523 0.0054117429 - 80400 0.0051137896 0.0029395986 0.0054165905 - 80500 0.0059399739 0.0029858116 0.0058629865 - 80600 0.0048061983 0.0032012276 0.0055292299 - 80700 0.0051087799 0.0028180944 0.0052926596 - 80800 0.0048093725 0.0027996258 0.0051291657 - 80900 0.0049792769 0.0020527068 0.004464544 - 81000 0.0049096707 0.0024235204 0.0048016421 - 81100 0.0059262559 0.0025178365 0.0053883667 - 81200 0.0051276429 0.0027750924 0.0052587944 - 81300 0.0054372475 0.0028985058 0.0055321726 - 81400 0.0057780692 0.0025358419 0.0053345942 - 81500 0.0041024598 0.0028027443 0.0047898733 - 81600 0.0045601815 0.0025630314 0.0047718693 - 81700 0.0063894925 0.0021932971 0.0052882075 - 81800 0.0064732463 0.0018812447 0.0050167234 - 81900 0.0066474483 0.0017587537 0.0049786115 - 82000 0.004917615 0.001924415 0.0043063847 - 82100 0.004489754 0.0019222251 0.0040969497 - 82200 0.0056075768 0.0025398812 0.0052560512 - 82300 0.0059249982 0.0026874967 0.0055574177 - 82400 0.0048363982 0.0023776424 0.0047202728 - 82500 0.0052834032 0.0026662934 0.0052254418 - 82600 0.0057631869 0.0029563341 0.0057478778 - 82700 0.0050851893 0.0030043059 0.0054674445 - 82800 0.0041206627 0.0034284014 0.0054243474 - 82900 0.0035620119 0.0030847655 0.004810115 - 83000 0.0041407295 0.0029260086 0.0049316745 - 83100 0.0054412358 0.0030196489 0.0056552475 - 83200 0.004583473 0.0032571778 0.0054772976 - 83300 0.0055113619 0.0023589494 0.0050285153 - 83400 0.0069174692 0.0017824873 0.0051331364 - 83500 0.0061866193 0.0016827484 0.0046793921 - 83600 0.004353602 0.0019381363 0.0040469122 - 83700 0.0050190239 0.0018789372 0.0043100269 - 83800 0.0041536901 0.0021615758 0.0041735194 - 83900 0.0059183519 0.0021545118 0.0050212134 - 84000 0.0037340364 0.0024722566 0.0042809305 - 84100 0.0050033916 0.0026976825 0.0051212003 - 84200 0.0048944916 0.0024718609 0.0048426303 - 84300 0.0042001892 0.0021077311 0.0041421977 - 84400 0.0049456355 0.0015073227 0.0039028649 - 84500 0.0044720662 0.001611771 0.0037779281 - 84600 0.0052346177 0.0015177681 0.004053286 - 84700 0.0045013366 0.0017618261 0.003942161 - 84800 0.0049107432 0.0013961452 0.0037747864 - 84900 0.0043488879 0.0013498269 0.0034563195 - 85000 0.0064998215 0.0020456528 0.0051940038 - 85100 0.0048853371 0.0021624427 0.0045287779 - 85200 0.0045485871 0.0018881244 0.0040913463 - 85300 0.0050653798 0.0020477097 0.0045012531 - 85400 0.0049699322 0.0023741228 0.0047814337 - 85500 0.0045490788 0.0023015527 0.0045050128 - 85600 0.0060800789 0.0020008583 0.0049458965 - 85700 0.0059808413 0.0020764162 0.0049733862 - 85800 0.0052986641 0.0021173971 0.0046839375 - 85900 0.0057675585 0.0019953221 0.0047889832 - 86000 0.0039523946 0.0022732048 0.0041876459 - 86100 0.0050423764 0.0026499257 0.0050923268 - 86200 0.003318581 0.0023325784 0.0039400161 - 86300 0.0059300665 0.0019402382 0.0048126141 - 86400 0.0070320099 0.001944154 0.0053502838 - 86500 0.0052833995 0.0024706684 0.0050298151 - 86600 0.0055891057 0.0025374932 0.0052447163 - 86700 0.0057373949 0.0022411441 0.0050201947 - 86800 0.0056764233 0.0021929884 0.0049425059 - 86900 0.004803751 0.0021964892 0.0045233061 - 87000 0.0052359699 0.0020543494 0.0045905223 - 87100 0.0046570125 0.001713431 0.0039691714 - 87200 0.0051248727 0.001336361 0.0038187212 - 87300 0.0047000868 0.0015192696 0.0037958742 - 87400 0.004118889 0.0015514147 0.0035465016 - 87500 0.005870272 0.001753756 0.004597169 - 87600 0.0044572848 0.0018585281 0.0040175254 - 87700 0.0041683219 0.0016429101 0.0036619411 - 87800 0.0058514031 0.0019633765 0.0047976499 - 87900 0.0061125854 0.0022856206 0.0052464042 - 88000 0.0066943363 0.0021441552 0.0053867243 - 88100 0.0039254348 0.002316744 0.0042181265 - 88200 0.0068588709 0.0024739218 0.0057961873 - 88300 0.0069057205 0.002288677 0.0056336354 - 88400 0.0054266107 0.0022548597 0.0048833742 - 88500 0.0052064282 0.0020090861 0.0045309498 - 88600 0.0052768536 0.0019089121 0.0044648881 - 88700 0.0042445073 0.0021549179 0.0042108511 - 88800 0.0062812522 0.001799475 0.0048419565 - 88900 0.0059142482 0.0018745193 0.0047392332 - 89000 0.0043694972 0.0019744394 0.0040909146 - 89100 0.0052108663 0.0019301472 0.0044541606 - 89200 0.0057143594 0.0021044317 0.0048723246 - 89300 0.0043582991 0.0024466939 0.004557745 - 89400 0.0048023043 0.0020949795 0.0044210957 - 89500 0.004808124 0.0019284386 0.0042573737 - 89600 0.00476397 0.001930445 0.0042379929 - 89700 0.004604502 0.002337612 0.0045679177 - 89800 0.0057879007 0.0022949631 0.0050984775 - 89900 0.0052946831 0.0024925967 0.0050572089 - 90000 0.0055378441 0.0024039415 0.0050863348 - 90100 0.0058684269 0.002880647 0.0057231663 - 90200 0.005552366 0.0032169118 0.0059063391 - 90300 0.0053845858 0.0031744294 0.0057825882 - 90400 0.0075823295 0.00265476 0.0063274508 - 90500 0.006822235 0.0021741833 0.0054787034 - 90600 0.0057406108 0.0018564442 0.0046370525 - 90700 0.0061929261 0.0022094774 0.005209176 - 90800 0.0050952982 0.0023266713 0.0047947064 - 90900 0.0039625948 0.0023297199 0.0042491018 - 91000 0.0063407759 0.0021713965 0.0052427099 - 91100 0.0052086163 0.0020914303 0.0046143538 - 91200 0.0054182748 0.0015990891 0.0042235659 - 91300 0.0057321371 0.0016774485 0.0044539524 - 91400 0.0050441742 0.0020159357 0.0044592076 - 91500 0.0037670303 0.002371835 0.0041964903 - 91600 0.0049966484 0.0026391458 0.0050593974 - 91700 0.0047454346 0.0027592353 0.0050578052 - 91800 0.0053011709 0.0024995523 0.005067307 - 91900 0.0056618924 0.0021128378 0.004855317 - 92000 0.0062095965 0.0024252744 0.0054330477 - 92100 0.0063171116 0.0025200663 0.0055799172 - 92200 0.0056119567 0.0017711912 0.0044894827 - 92300 0.0058378255 0.0019380853 0.0047657821 - 92400 0.0042336652 0.0018008081 0.0038514897 - 92500 0.0042370425 0.0022072158 0.0042595333 - 92600 0.0043235339 0.0024379119 0.0045321236 - 92700 0.0044879422 0.0024475679 0.0046214149 - 92800 0.0058834505 0.0023251113 0.0051749077 - 92900 0.005756043 0.0024066582 0.0051947415 - 93000 0.0044536031 0.0025373832 0.0046945972 - 93100 0.0051969383 0.0026852596 0.0052025266 - 93200 0.0037687496 0.002611426 0.0044369141 - 93300 0.0058500822 0.0021886453 0.0050222788 - 93400 0.0046393328 0.0022539185 0.0045010953 - 93500 0.0060990277 0.0020735348 0.0050277514 - 93600 0.0057903995 0.0022677422 0.0050724669 - 93700 0.004039946 0.0024796678 0.0044365166 - 93800 0.0040127246 0.0026040197 0.0045476832 - 93900 0.0055350421 0.0021933771 0.0048744131 - 94000 0.0058327734 0.0018346472 0.0046598968 - 94100 0.0070996451 0.0025435671 0.0059824577 - 94200 0.0050671066 0.0034214701 0.0058758499 - 94300 0.0043795491 0.002999433 0.0051207771 - 94400 0.0052674244 0.0026593973 0.005210806 - 94500 0.0051818237 0.0030455114 0.0055554573 - 94600 0.0065697865 0.0024956948 0.0056779351 - 94700 0.0070094641 0.0024252992 0.0058205083 - 94800 0.0054917442 0.0027604714 0.005420535 - 94900 0.0066119691 0.0028869362 0.0060896087 - 95000 0.0056385088 0.0029829856 0.0057141383 - 95100 0.0050993484 0.0028679566 0.0053379534 - 95200 0.0058858168 0.0022729168 0.0051238593 - 95300 0.0062965949 0.0018579187 0.0049078318 - 95400 0.0044611397 0.0020835659 0.0042444305 - 95500 0.0063304895 0.0022082517 0.0052745825 - 95600 0.005184073 0.0021347568 0.0046457922 - 95700 0.0048956427 0.0020223769 0.0043937039 - 95800 0.0046100111 0.0021281529 0.004361127 - 95900 0.0032666395 0.0018612349 0.0034435134 - 96000 0.0060483222 0.0014379132 0.0043675693 - 96100 0.0041513227 0.0017725748 0.0037833718 - 96200 0.0045880407 0.0019493675 0.0041716997 - 96300 0.0059601324 0.0019194048 0.0048063439 - 96400 0.0043881156 0.0022762073 0.0044017007 - 96500 0.0041805335 0.0022317369 0.0042566828 - 96600 0.004881105 0.0023583859 0.0047226711 - 96700 0.0052846465 0.0022912902 0.0048510409 - 96800 0.0047966695 0.0020744338 0.0043978206 - 96900 0.0050533015 0.0021496448 0.0045973377 - 97000 0.0045114593 0.0025112984 0.0046965365 - 97100 0.0054643775 0.0026864011 0.005333209 - 97200 0.0043249951 0.0025447095 0.004639629 - 97300 0.0066926436 0.0020899918 0.005331741 - 97400 0.0058913938 0.0016239444 0.0044775882 - 97500 0.0053658761 0.0021217711 0.0047208673 - 97600 0.0036553349 0.0025763458 0.0043468986 - 97700 0.0043394248 0.002288061 0.0043899699 - 97800 0.0056212435 0.0018992525 0.0046220423 - 97900 0.0054798177 0.0021919399 0.0048462266 - 98000 0.0049509021 0.0019962544 0.0043943476 - 98100 0.0042790442 0.0018627951 0.0039354571 - 98200 0.0037401669 0.0017788287 0.003590472 - 98300 0.0068480188 0.0015246766 0.0048416857 - 98400 0.0039201126 0.0017635201 0.0036623246 - 98500 0.0054968742 0.0016443104 0.0043068588 - 98600 0.0041370186 0.0019667231 0.0039705915 - 98700 0.0052825266 0.0026388381 0.0051975619 - 98800 0.0040041632 0.0028434737 0.0047829903 - 98900 0.0065165253 0.0023111822 0.0054676242 - 99000 0.0064681397 0.0020668099 0.0051998151 - 99100 0.0063149096 0.0019019507 0.004960735 - 99200 0.0049314203 0.0019410197 0.0043296764 - 99300 0.0046497177 0.0023414394 0.0045936464 - 99400 0.0038879343 0.0022197012 0.0041029194 - 99500 0.0050567291 0.0021887068 0.00463806 - 99600 0.005655471 0.0022006669 0.0049400357 - 99700 0.0048840573 0.0021113179 0.0044770331 - 99800 0.005823411 0.0021126246 0.0049333393 - 99900 0.0047618653 0.0021259239 0.0044324524 - 100000 0.007696203 0.0024388401 0.0061666884 - 100100 0.0073106081 0.0023243372 0.005865413 - 100200 0.006016061 0.0029521521 0.0058661816 - 100300 0.0055273814 0.0031697806 0.005847106 - 100400 0.0053392471 0.0034314149 0.0060176127 - 100500 0.0062960647 0.0031182896 0.0061679459 - 100600 0.0070199816 0.002492006 0.0058923096 - 100700 0.0051043528 0.002902067 0.0053744879 - 100800 0.0038326997 0.0026239068 0.0044803707 - 100900 0.0057151104 0.0019074322 0.0046756888 - 101000 0.0057532049 0.0016153895 0.0044020982 - 101100 0.0040796154 0.001817895 0.0037939587 - 101200 0.0047624823 0.0019289102 0.0042357376 - 101300 0.0051036634 0.0018719042 0.0043439911 - 101400 0.0065753722 0.0015822094 0.0047671553 - 101500 0.0039828229 0.0020203059 0.0039494858 - 101600 0.0046735947 0.0018433764 0.0041071488 - 101700 0.0049722882 0.0019188186 0.0043272707 - 101800 0.0048222828 0.0023774593 0.0047132525 - 101900 0.0054160514 0.0025370853 0.0051604852 - 102000 0.0048117095 0.0024001219 0.0047307937 - 102100 0.0046555088 0.0022769933 0.0045320054 - 102200 0.0066544461 0.0022551433 0.0054783906 - 102300 0.0047551273 0.0020009904 0.0043042552 - 102400 0.0054685518 0.0018656486 0.0045144783 - 102500 0.0059973091 0.0016290337 0.0045339803 - 102600 0.0039780027 0.0017456321 0.0036724772 - 102700 0.0042633081 0.0020866242 0.0041516641 - 102800 0.0031365937 0.0026861296 0.0042054172 - 102900 0.0050579011 0.0024823838 0.0049323047 - 103000 0.0046816361 0.0026508931 0.0049185606 - 103100 0.0056716538 0.0029522162 0.0056994235 - 103200 0.0053933432 0.0033957726 0.0060081732 - 103300 0.0043404863 0.0030780057 0.0051804287 - 103400 0.0074855511 0.0021918547 0.0058176685 - 103500 0.0062016772 0.0020714767 0.0050754141 - 103600 0.0055218621 0.0026433814 0.0053180333 - 103700 0.0059561235 0.0028396713 0.0057246686 - 103800 0.0060169586 0.0032316614 0.0061461257 - 103900 0.0048927283 0.0033080421 0.0056779574 - 104000 0.0056498689 0.0029920653 0.0057287206 - 104100 0.0066860038 0.0022159582 0.0054544913 - 104200 0.0058035262 0.002343808 0.005154891 - 104300 0.0041835713 0.003347017 0.0053734343 - 104400 0.0057079552 0.0029430141 0.0057078049 - 104500 0.0059374467 0.002449276 0.0053252268 - 104600 0.0048214353 0.0018531817 0.0041885644 - 104700 0.0052779165 0.0017432416 0.0042997324 - 104800 0.0048858272 0.0018834502 0.0042500228 - 104900 0.0057512645 0.0016220764 0.0044078452 - 105000 0.0052988573 0.0021380146 0.0047046487 - 105100 0.0058832222 0.0019673084 0.0048169942 - 105200 0.0053475525 0.0019948531 0.0045850738 - 105300 0.0041397427 0.0020907945 0.0040959823 - 105400 0.0045790287 0.0020310304 0.0042489975 - 105500 0.0043722927 0.0021508461 0.0042686754 - 105600 0.0046067426 0.0024228679 0.0046542589 - 105700 0.005018148 0.002080523 0.0045111884 - 105800 0.0052749529 0.0022413182 0.0047963736 - 105900 0.0076960461 0.0024406842 0.0061684565 - 106000 0.0045639319 0.0026210451 0.0048316996 - 106100 0.0038509526 0.0024808189 0.0043461241 - 106200 0.0040054331 0.0021623439 0.0041024756 - 106300 0.0039114456 0.0021949342 0.0040895406 - 106400 0.0052278257 0.0024897576 0.0050219857 - 106500 0.0045390508 0.0025443522 0.004742955 - 106600 0.0061024335 0.0022728907 0.0052287569 - 106700 0.0051527587 0.0024614051 0.0049572726 - 106800 0.0052183827 0.0026997783 0.0052274324 - 106900 0.0056088639 0.0023585648 0.0050753583 - 107000 0.0046101111 0.0024816484 0.004714671 - 107100 0.0044679439 0.0022694233 0.0044335836 - 107200 0.0045860203 0.0019392897 0.0041606432 - 107300 0.0058802136 0.0019804881 0.0048287166 - 107400 0.0049646531 0.002064715 0.0044694688 - 107500 0.0052613236 0.0023954167 0.0049438703 - 107600 0.0043194571 0.0024957442 0.0045879813 - 107700 0.0066364807 0.0028354197 0.006049965 - 107800 0.0042517261 0.0025732018 0.0046326316 - 107900 0.00524204 0.0019576809 0.004496794 - 108000 0.0050961112 0.0018965904 0.0043650192 - 108100 0.0067936578 0.0019144154 0.0052050934 - 108200 0.0053161285 0.0022588286 0.0048338283 - 108300 0.0045306332 0.0026376774 0.0048322028 - 108400 0.0063826772 0.0024520193 0.0055436286 - 108500 0.0046676579 0.002490945 0.0047518418 - 108600 0.0051416199 0.0021937019 0.004684174 - 108700 0.0064869086 0.0016906363 0.0048327326 - 108800 0.0040160856 0.0020567216 0.004002013 - 108900 0.0035565191 0.0023242864 0.0040469753 - 109000 0.0036516065 0.0022500229 0.0040187698 - 109100 0.0037524697 0.0018657768 0.0036833793 - 109200 0.0036620517 0.0017786876 0.0035524939 - 109300 0.0043601873 0.0017838727 0.0038958384 - 109400 0.0054085444 0.0023048718 0.0049246355 - 109500 0.0074864336 0.0021898475 0.0058160887 - 109600 0.0066111758 0.0024873854 0.0056896737 - 109700 0.0045604734 0.0027053979 0.0049143772 - 109800 0.0039595043 0.0024113819 0.0043292668 - 109900 0.0047338973 0.0021033612 0.0043963427 - 110000 0.0056269506 0.002674601 0.0054001552 - 110100 0.0036531246 0.0032054268 0.0049749091 - 110200 0.0048667259 0.0030104597 0.0053677801 - 110300 0.006168454 0.0030602215 0.0060480664 - 110400 0.0041761191 0.0030911546 0.0051139623 - 110500 0.0059090568 0.002598239 0.0054604384 - 110600 0.0045375909 0.0022431194 0.004441015 - 110700 0.0057696608 0.0023805379 0.0051752173 - 110800 0.0046650742 0.0030865629 0.0053462082 - 110900 0.0043046474 0.002795159 0.0048802226 - 111000 0.0042240019 0.0021821467 0.0042281476 - 111100 0.0048321444 0.0019847152 0.0043252851 - 111200 0.0050803984 0.002198103 0.004658921 - 111300 0.0064427053 0.0022849608 0.0054056462 - 111400 0.0035957555 0.0021962891 0.0039379832 - 111500 0.006515365 0.0021400543 0.0052959342 - 111600 0.0074862529 0.0028302675 0.0064564212 - 111700 0.0058507754 0.0031502207 0.00598419 - 111800 0.0035653772 0.0028608031 0.0045877827 - 111900 0.0059250528 0.002726309 0.0055962564 - 112000 0.0058440437 0.0029221579 0.0057528666 - 112100 0.00482355 0.0028232538 0.0051596609 - 112200 0.0070596595 0.0025463696 0.0059658922 - 112300 0.0045960365 0.0022749048 0.00450111 - 112400 0.0056799328 0.0022098531 0.0049610706 - 112500 0.0054811811 0.0022190694 0.0048740165 - 112600 0.0045042898 0.00268168 0.0048634454 - 112700 0.0062558009 0.0029466832 0.0059768368 - 112800 0.0049366105 0.0029908095 0.0053819803 - 112900 0.0066481338 0.0027347409 0.0059549307 - 113000 0.0052279053 0.0027963475 0.0053286141 - 113100 0.0042225202 0.003162054 0.0052073373 - 113200 0.0040749023 0.0027371589 0.0047109397 - 113300 0.0048998505 0.0021637767 0.0045371418 - 113400 0.00352536 0.0017261671 0.0034337633 - 113500 0.0029015566 0.0017978024 0.0032032439 - 113600 0.0038776359 0.0019394359 0.0038176658 - 113700 0.0051849841 0.0019772248 0.0044887015 - 113800 0.0058124854 0.0017174622 0.0045328848 - 113900 0.0037047808 0.0017787627 0.0035732659 - 114000 0.0041666284 0.0020308384 0.004049049 - 114100 0.0061662468 0.002638101 0.0056248768 - 114200 0.004304001 0.0026532178 0.0047379682 - 114300 0.0050490776 0.0022522054 0.0046978523 - 114400 0.0056884414 0.002042042 0.0047973808 - 114500 0.0052554417 0.0020783942 0.0046239988 - 114600 0.0038518772 0.0026483718 0.0045141249 - 114700 0.0051543718 0.0029475245 0.0054441733 - 114800 0.0058737052 0.0029875361 0.0058326121 - 114900 0.0041440283 0.0023984051 0.0044056687 - 115000 0.0051027808 0.0022201759 0.0046918354 - 115100 0.0034641834 0.0023163688 0.0039943326 - 115200 0.0061293381 0.0024178044 0.0053867025 - 115300 0.0053766092 0.0020885186 0.0046928137 - 115400 0.0034780508 0.0021764521 0.0038611329 - 115500 0.0048067076 0.0023054965 0.0046337455 - 115600 0.0054101573 0.00237602 0.004996565 - 115700 0.0044630353 0.0022184252 0.0043802079 - 115800 0.0045209922 0.0018593802 0.0040492358 - 115900 0.0038611647 0.002162646 0.0040328977 - 116000 0.004944749 0.0025678436 0.0049629563 - 116100 0.0051720362 0.0029651205 0.0054703255 - 116200 0.00689407 0.0026147194 0.0059540346 - 116300 0.0054057159 0.0028143039 0.0054326975 - 116400 0.0057806459 0.0029415951 0.0057415955 - 116500 0.005766428 0.0023509824 0.0051440959 - 116600 0.0051498164 0.0018616126 0.0043560549 - 116700 0.0051476664 0.0022472774 0.0047406783 - 116800 0.0063542739 0.0024037036 0.005481555 - 116900 0.0057602129 0.0025620152 0.0053521184 - 117000 0.0054987673 0.0021147012 0.0047781666 - 117100 0.0052519826 0.0018913517 0.0044352807 - 117200 0.0045214673 0.0015938769 0.0037839626 - 117300 0.0046828548 0.0018861704 0.0041544282 - 117400 0.0044177668 0.002280712 0.0044205678 - 117500 0.0074609125 0.0024627621 0.0060766416 - 117600 0.0056408566 0.0027237603 0.0054560502 - 117700 0.0061117954 0.0021693105 0.0051297114 - 117800 0.0055664488 0.0023697025 0.0050659511 - 117900 0.0050747675 0.0024835866 0.0049416771 - 118000 0.0068481927 0.0023967767 0.0057138701 - 118100 0.0042235647 0.0025089998 0.0045547889 - 118200 0.003953235 0.002553726 0.0044685742 - 118300 0.0054646384 0.0027956747 0.005442609 - 118400 0.0050824794 0.0029863688 0.0054481948 - 118500 0.0054210026 0.0025003759 0.005126174 - 118600 0.0043803858 0.0029519831 0.0050737325 - 118700 0.0056351702 0.0028630059 0.0055925414 - 118800 0.0066681825 0.002437407 0.0056673079 - 118900 0.0055705813 0.0019361373 0.0046343876 - 119000 0.0042805896 0.0020391194 0.00411253 - 119100 0.0056592447 0.0026603383 0.005401535 - 119200 0.0051993665 0.0030146209 0.005533064 - 119300 0.0052828783 0.002805073 0.0053639672 - 119400 0.0059544946 0.0021309711 0.0050151794 - 119500 0.0056381361 0.002120532 0.0048515042 - 119600 0.0046777484 0.0020266262 0.0042924106 - 119700 0.0059582531 0.0021689571 0.005054986 - 119800 0.0061083063 0.0022955138 0.0052542247 - 119900 0.0044808404 0.0022726761 0.0044430832 - 120000 0.005586272 0.0026431059 0.0053489564 - 120100 0.0069725386 0.0025349201 0.0059122435 - 120200 0.005239046 0.0026784609 0.0052161239 - 120300 0.0035828465 0.0026037115 0.0043391528 - 120400 0.0048374798 0.0027079318 0.0050510861 - 120500 0.0062721365 0.0025611543 0.0055992204 - 120600 0.0043448161 0.00264874 0.0047532603 - 120700 0.0061063366 0.0020413566 0.0049991134 - 120800 0.0045121108 0.0022386167 0.0044241704 - 120900 0.003211123 0.0026053078 0.0041606955 - 121000 0.0044652744 0.0020954059 0.0042582732 - 121100 0.0055905388 0.0021312478 0.0048391651 - 121200 0.0059609496 0.002299694 0.005187029 - 121300 0.0058848236 0.0020347078 0.0048851692 - 121400 0.0038825674 0.0017813083 0.0036619269 - 121500 0.0052612828 0.0017220779 0.0042705117 - 121600 0.0049516632 0.0021784769 0.0045769388 - 121700 0.0045087736 0.0024613827 0.00464532 - 121800 0.0055802324 0.0021942805 0.0048972056 - 121900 0.0050904435 0.002520569 0.0049862526 - 122000 0.0060818097 0.0028956291 0.0058415056 - 122100 0.004955435 0.0025629837 0.0049632725 - 122200 0.0065624036 0.0024590743 0.0056377386 - 122300 0.0052915293 0.002316756 0.0048798405 - 122400 0.0061768745 0.0023721373 0.0053640609 - 122500 0.0071503935 0.0020375418 0.0055010136 - 122600 0.0058391142 0.0023298915 0.0051582124 - 122700 0.0055384253 0.0025179109 0.0052005856 - 122800 0.004922185 0.0022975915 0.0046817748 - 122900 0.0062145361 0.0018251859 0.0048353518 - 123000 0.0051446009 0.0019396813 0.0044315974 - 123100 0.005033431 0.0025734129 0.005011481 - 123200 0.0050837213 0.0032938548 0.0057562823 - 123300 0.0064502745 0.0031506704 0.0062750221 - 123400 0.004930603 0.0032083157 0.0055965765 - 123500 0.005579077 0.0028103192 0.0055126846 - 123600 0.0036742864 0.0028206076 0.00460034 - 123700 0.0055457877 0.0023946382 0.0050808791 - 123800 0.0066992709 0.0028619902 0.0061069496 - 123900 0.0055512535 0.003128291 0.0058171794 - 124000 0.0051873346 0.0024910731 0.0050036884 - 124100 0.0063742546 0.002077798 0.0051653276 - 124200 0.0070468958 0.0024365725 0.0058499126 - 124300 0.0040212963 0.0028721437 0.0048199591 - 124400 0.0056996044 0.0022874889 0.0050482348 - 124500 0.0050007059 0.0022836172 0.0047058342 - 124600 0.0066381217 0.0023507994 0.0055661396 - 124700 0.0045878966 0.0026262496 0.0048485121 - 124800 0.0041311011 0.003228213 0.0052292151 - 124900 0.0047211922 0.0027416919 0.0050285194 - 125000 0.0067181938 0.0020426993 0.0052968244 - 125100 0.0046811656 0.002124116 0.0043915555 - 125200 0.0063842025 0.0022294397 0.0053217878 - 125300 0.0048965277 0.0022377438 0.0046094993 - 125400 0.0035615968 0.0029051559 0.0046303043 - 125500 0.0058938775 0.0033189741 0.006173821 - 125600 0.0059156882 0.0030288852 0.0058942967 - 125700 0.0044481406 0.0027651789 0.004919747 - 125800 0.0050424118 0.0029785848 0.005421003 - 125900 0.0041718929 0.0029094986 0.0049302592 - 126000 0.0051708876 0.002787446 0.0052920947 - 126100 0.0045373432 0.0024920161 0.0046897917 - 126200 0.00578265 0.0024835149 0.0052844859 - 126300 0.0034767501 0.0024732559 0.0041573068 - 126400 0.0056102439 0.001927748 0.0046452099 - 126500 0.0055713772 0.0021818464 0.0048804822 - 126600 0.0042567305 0.00277519 0.0048370439 - 126700 0.0053931507 0.0029052193 0.0055175267 - 126800 0.0056438831 0.0028716506 0.0056054064 - 126900 0.005468644 0.0025559187 0.0052047932 - 127000 0.0048493901 0.0027848419 0.0051337652 - 127100 0.0061565307 0.0030662974 0.006048367 - 127200 0.0070176183 0.0030468032 0.006445962 - 127300 0.0058282552 0.0025238628 0.0053469239 - 127400 0.0063471689 0.00259904 0.00567345 - 127500 0.0057057753 0.0031367728 0.0059005077 - 127600 0.0056791759 0.0033984394 0.0061492902 - 127700 0.0051632474 0.0030074298 0.0055083777 - 127800 0.0076534247 0.0019689299 0.0056760575 - 127900 0.0075903554 0.0019104056 0.0055869839 - 128000 0.0049649457 0.0020599031 0.0044647987 - 128100 0.0052604523 0.0021126715 0.004660703 - 128200 0.00440192 0.0022472278 0.0043794078 - 128300 0.0050805988 0.0020540917 0.0045150068 - 128400 0.0047370458 0.0020113349 0.0043058414 - 128500 0.004362165 0.0023161298 0.0044290534 - 128600 0.0051177 0.0025994429 0.0050783289 - 128700 0.0061461819 0.0026905569 0.0056676138 - 128800 0.00593289 0.0028499342 0.0057236778 - 128900 0.0060278748 0.0024285885 0.0053483404 - 129000 0.0041100872 0.0025625362 0.0045533597 - 129100 0.0052959873 0.0027574793 0.0053227232 - 129200 0.0059443213 0.0023214797 0.0052007603 - 129300 0.0040543032 0.00269661 0.0046604131 - 129400 0.0046175229 0.0024916497 0.0047282624 - 129500 0.0048136754 0.0028084895 0.0051401135 - 129600 0.0028513253 0.0033409943 0.004722105 - 129700 0.0047955687 0.0027549778 0.0050778314 - 129800 0.0047586562 0.0020609534 0.0043659275 - 129900 0.0054215136 0.0018842388 0.0045102844 - 130000 0.0062627092 0.0020731162 0.005106616 - 130100 0.0051958703 0.0026240978 0.0051408475 - 130200 0.0052627168 0.0024846778 0.0050338063 - 130300 0.0045012577 0.002389936 0.0045702327 - 130400 0.0066390792 0.0022602413 0.0054760453 - 130500 0.0049662946 0.0025500829 0.0049556319 - 130600 0.0050060477 0.0027712711 0.0051960754 - 130700 0.00572121 0.0025719353 0.0053431464 - 130800 0.0046974207 0.0028413186 0.0051166318 - 130900 0.0056757871 0.0027935027 0.0055427121 - 131000 0.0059115566 0.002712697 0.0055761072 - 131100 0.0058740958 0.0022982408 0.005143506 - 131200 0.0044974806 0.0023774641 0.0045559312 - 131300 0.0045800058 0.0025689254 0.0047873657 - 131400 0.0056834525 0.0029619575 0.0057148798 - 131500 0.0046631825 0.0031582242 0.0054169533 - 131600 0.0058674328 0.0026092811 0.0054513188 - 131700 0.005347855 0.0023478025 0.0049381697 - 131800 0.0040916227 0.0020894628 0.0040713426 - 131900 0.0054778529 0.0018078835 0.0044612185 - 132000 0.0040909488 0.0021097034 0.0040912567 - 132100 0.004968684 0.0020752518 0.0044819582 - 132200 0.0047008895 0.0018997441 0.0041767374 - 132300 0.0051219925 0.002124006 0.0046049711 - 132400 0.0029927443 0.0022202672 0.0036698777 - 132500 0.0062934079 0.0020373737 0.0050857431 - 132600 0.0059057473 0.002004911 0.0048655073 - 132700 0.0054848535 0.0024189325 0.0050756584 - 132800 0.0049497118 0.0030761345 0.0054736512 - 132900 0.0060071004 0.0024503953 0.0053600846 - 133000 0.006063228 0.0019646295 0.0049015056 - 133100 0.0040063655 0.0025435752 0.0044841585 - 133200 0.0065750003 0.0028405289 0.0060252947 - 133300 0.0058067939 0.0031386337 0.0059512995 - 133400 0.0066559606 0.0027113969 0.0059353778 - 133500 0.0038450659 0.00221617 0.0040786238 - 133600 0.0056503038 0.0020836055 0.0048204714 - 133700 0.0046146841 0.0023213839 0.0045566216 - 133800 0.0045373707 0.0023564923 0.0045542812 - 133900 0.0048099217 0.0026987664 0.0050285723 - 134000 0.0053884792 0.0027682068 0.0053782514 - 134100 0.0062308953 0.0029554363 0.0059735263 - 134200 0.0056985904 0.0030222108 0.0057824655 - 134300 0.0034586671 0.003375087 0.0050503788 - 134400 0.0056563554 0.0030824737 0.0058222708 - 134500 0.0043856518 0.0029930593 0.0051173594 - 134600 0.0049009155 0.0032451473 0.0056190283 - 134700 0.0051442581 0.0033158062 0.0058075562 - 134800 0.0051442524 0.0032756692 0.0057674164 - 134900 0.004658872 0.0032892871 0.0055459282 - 135000 0.0053586994 0.0035369077 0.0061325278 - 135100 0.0055197609 0.003257191 0.0059308252 - 135200 0.0055811044 0.0030434867 0.0057468341 - 135300 0.0044441028 0.0031685312 0.0053211435 - 135400 0.0035533718 0.0027638989 0.0044850634 - 135500 0.005805911 0.0024396273 0.0052518654 - 135600 0.0045487175 0.0019475857 0.0041508707 - 135700 0.0041470552 0.0021127304 0.0041214603 - 135800 0.0047611845 0.002468967 0.0047751657 - 135900 0.0050767944 0.0027340037 0.005193076 - 136000 0.0048970377 0.0025228559 0.0048948585 - 136100 0.0059651074 0.0025362529 0.0054256018 - 136200 0.0041991551 0.0023371698 0.0043711356 - 136300 0.0063424191 0.0020084803 0.0050805895 - 136400 0.0042579555 0.002092712 0.0041551592 - 136500 0.006265943 0.0020801076 0.0051151737 - 136600 0.0049942562 0.0022305941 0.0046496869 - 136700 0.0056534345 0.0026953219 0.0054337042 - 136800 0.0055302327 0.0024611458 0.0051398523 - 136900 0.005975365 0.0019086862 0.0048030036 - 137000 0.0043744043 0.0022763343 0.0043951864 - 137100 0.0050144275 0.0025196852 0.0049485486 - 137200 0.0043714787 0.0023049478 0.0044223828 - 137300 0.0041946477 0.0021135551 0.0041453376 - 137400 0.0042185648 0.0023681816 0.0044115489 - 137500 0.005496559 0.0021891207 0.0048515165 - 137600 0.0041936411 0.0021033565 0.0041346514 - 137700 0.0049805828 0.0020122729 0.0044247427 - 137800 0.0038037327 0.0017927632 0.0036351962 - 137900 0.0049124267 0.0017033379 0.0040827945 - 138000 0.0043758127 0.0020785279 0.0041980622 - 138100 0.0056667732 0.0023714127 0.005116256 - 138200 0.0041246039 0.0022178694 0.0042157244 - 138300 0.0056451416 0.0019974971 0.0047318626 - 138400 0.0055119572 0.0017079461 0.0043778004 - 138500 0.0055075486 0.0020796613 0.0047473802 - 138600 0.0046743392 0.0022015344 0.0044656674 - 138700 0.0047707846 0.0021651892 0.004476038 - 138800 0.005304505 0.0025850164 0.005154386 - 138900 0.0043337924 0.0027784473 0.004877628 - 139000 0.0043623991 0.0025036672 0.0046167042 - 139100 0.004608583 0.0024286917 0.0046609741 - 139200 0.0048135512 0.0033003566 0.0056319204 - 139300 0.0054805599 0.0033301416 0.0059847878 - 139400 0.0042028378 0.0027178659 0.0047536155 - 139500 0.0044043451 0.0019977873 0.0041311419 - 139600 0.0048424859 0.0022821291 0.0046277082 - 139700 0.0062551406 0.0019294553 0.004959289 - 139800 0.0051915488 0.001832374 0.0043470305 - 139900 0.0049121661 0.0022556117 0.0046349422 - 140000 0.0045235999 0.0024629987 0.0046541175 - 140100 0.0050676825 0.0027743925 0.0052290512 - 140200 0.0073821926 0.0028178922 0.0063936417 - 140300 0.0052860239 0.0028341073 0.0053945252 - 140400 0.0064413543 0.0027307036 0.0058507345 - 140500 0.0050360424 0.0025924429 0.005031776 - 140600 0.0061859291 0.0023847305 0.00538104 - 140700 0.0065076809 0.0021052799 0.0052574378 - 140800 0.0047956367 0.0023749728 0.0046978593 - 140900 0.0073244499 0.0024139165 0.0059616969 - 141000 0.0044205127 0.0023799657 0.0045211516 - 141100 0.0051551949 0.0023011933 0.0047982408 - 141200 0.0052905842 0.0020279007 0.0045905274 - 141300 0.0041089305 0.001786607 0.0037768702 - 141400 0.0034866208 0.0019499329 0.0036387648 - 141500 0.0050545911 0.0019635877 0.0044119052 - 141600 0.005756048 0.0021824888 0.0049705745 - 141700 0.0049588215 0.0023978791 0.0047998083 - 141800 0.0057578448 0.0022673785 0.0050563346 - 141900 0.0050405481 0.0027058216 0.0051473371 - 142000 0.0046272214 0.0028562472 0.0050975575 - 142100 0.0044570694 0.0027280231 0.0048869161 - 142200 0.0069467632 0.0019940643 0.0053589028 - 142300 0.0045994605 0.001931807 0.0041596707 - 142400 0.0054041239 0.0020891157 0.0047067382 - 142500 0.0049300054 0.0024431095 0.0048310808 - 142600 0.0050131352 0.0024489808 0.0048772181 - 142700 0.0048672102 0.0023631343 0.0047206893 - 142800 0.0051326778 0.002794142 0.0052802828 - 142900 0.0053560719 0.0026083604 0.0052027077 - 143000 0.005599714 0.0025999276 0.0053122891 - 143100 0.0039117899 0.0023040853 0.0041988586 - 143200 0.0051584001 0.0022889875 0.0047875876 - 143300 0.0064411135 0.0026773848 0.0057972991 - 143400 0.0051558872 0.0029735879 0.0054709708 - 143500 0.0046394507 0.0028406391 0.005087873 - 143600 0.0042859102 0.002926405 0.0050023927 - 143700 0.0061690604 0.0029937245 0.0059818631 - 143800 0.003917043 0.002896098 0.0047934157 - 143900 0.0048680247 0.0029521148 0.0053100642 - 144000 0.0041163453 0.0029744737 0.0049683284 - 144100 0.0042369012 0.0023264242 0.0043786733 - 144200 0.0041434632 0.0024513983 0.0044583883 - 144300 0.0045265932 0.0023645957 0.0045571643 - 144400 0.0064452761 0.0023171252 0.0054390559 - 144500 0.0050201953 0.0029854517 0.0054171088 - 144600 0.0065017758 0.0034607356 0.0066100333 - 144700 0.0054259719 0.0031138693 0.0057420744 - 144800 0.0054103325 0.0027970467 0.0054176765 - 144900 0.0067084004 0.0024817036 0.005731085 - 145000 0.0067026941 0.0025945691 0.0058411866 - 145100 0.0048057835 0.0033560496 0.0056838509 - 145200 0.0045413099 0.0031222249 0.0053219219 - 145300 0.0041646006 0.00296848 0.0049857084 - 145400 0.0046490635 0.0029314585 0.0051833486 - 145500 0.0052566106 0.0031541388 0.0057003095 - 145600 0.0063179019 0.0030547471 0.0061149809 - 145700 0.0052922615 0.0026764387 0.0052398779 - 145800 0.0056831002 0.0025356996 0.0052884513 - 145900 0.0053312045 0.0024035209 0.0049858231 - 146000 0.0045855023 0.0023246479 0.0045457505 - 146100 0.0062503124 0.0025600011 0.0055874962 - 146200 0.0045591971 0.0023141248 0.0045224858 - 146300 0.004481118 0.0021588429 0.0043293844 - 146400 0.0054696099 0.002005789 0.0046551313 - 146500 0.0045938394 0.0020148029 0.0042399439 - 146600 0.0042479958 0.0023147482 0.0043723712 - 146700 0.0030578505 0.0024294713 0.0039106177 - 146800 0.0033832871 0.0019653841 0.0036041638 - 146900 0.0046161514 0.0018298665 0.0040658148 - 147000 0.0045288419 0.0018626625 0.0040563203 - 147100 0.0063009162 0.0017128736 0.0047648799 - 147200 0.0068037669 0.0016677784 0.004963353 - 147300 0.0044446367 0.0019195138 0.0040723847 - 147400 0.0047164853 0.0025261143 0.0048106619 - 147500 0.0049797033 0.0026090611 0.0050211048 - 147600 0.0048701452 0.0025958424 0.004954819 - 147700 0.0039382902 0.002775244 0.0046828534 - 147800 0.0068881798 0.0023115448 0.0056480069 - 147900 0.0057560178 0.0025356828 0.0053237539 - 148000 0.0037795347 0.0027412825 0.0045719947 - 148100 0.0049886603 0.0025711459 0.0049875282 - 148200 0.0054287608 0.002708267 0.005337823 - 148300 0.004795759 0.0026062378 0.0049291836 - 148400 0.005351881 0.0027086998 0.0053010171 - 148500 0.0044378564 0.0029363355 0.0050859222 - 148600 0.0040598016 0.0029548032 0.0049212696 - 148700 0.0042479132 0.0028292548 0.0048868378 - 148800 0.0050079853 0.0022032719 0.0046290148 - 148900 0.0049560196 0.0022388164 0.0046393884 - 149000 0.0053142859 0.0024087774 0.0049828846 - 149100 0.0043892665 0.002474407 0.0046004579 - 149200 0.0050040943 0.0025886343 0.0050124925 - 149300 0.003785899 0.0030963039 0.0049300987 - 149400 0.0046572747 0.0029329657 0.0051888331 - 149500 0.005182398 0.0022291726 0.0047393966 - 149600 0.0051034073 0.002645802 0.0051177649 - 149700 0.0062453156 0.0027451965 0.0057702713 - 149800 0.0040003697 0.0031180403 0.0050557194 - 149900 0.0052578932 0.0034325933 0.0059793853 - 150000 0.0055673012 0.0031025456 0.0057992071 - 150100 0.0042120305 0.0033666032 0.0054068055 - 150200 0.0047008151 0.0028921646 0.0051691219 - 150300 0.006436053 0.0021398593 0.0052573225 - 150400 0.0039478372 0.0021817371 0.0040939708 - 150500 0.0036672454 0.0021634299 0.0039397519 - 150600 0.0038281746 0.0022922422 0.0041465143 - 150700 0.0049741354 0.0024764518 0.0048857986 - 150800 0.0053414497 0.0028145888 0.0054018535 - 150900 0.0044913569 0.0029924045 0.0051679055 - 151000 0.0047310275 0.0028749769 0.0051665684 - 151100 0.0054432615 0.002923927 0.0055605067 - 151200 0.0044545471 0.0027202175 0.0048778888 - 151300 0.005200589 0.0026043818 0.0051234171 - 151400 0.0046763629 0.0024565223 0.0047216356 - 151500 0.0064746861 0.0022237364 0.0053599125 - 151600 0.0045998426 0.0024988315 0.0047268802 - 151700 0.0046772489 0.0026060623 0.0048716047 - 151800 0.0042034604 0.0022417296 0.0042777807 - 151900 0.0054320399 0.0020370203 0.0046681646 - 152000 0.0047593132 0.0021594689 0.0044647613 - 152100 0.0060243811 0.0018982484 0.004816308 - 152200 0.0057493286 0.00215867 0.0049435011 - 152300 0.006338288 0.0022354437 0.0053055519 - 152400 0.0049191092 0.0026941585 0.005076852 - 152500 0.0036713332 0.0027742011 0.0045525031 - 152600 0.0053815381 0.0024932392 0.0050999217 - 152700 0.0044817213 0.0019686182 0.0041394519 - 152800 0.0052429979 0.0018338469 0.004373424 - 152900 0.0055636332 0.002105456 0.0048003408 - 153000 0.0038718233 0.0024007181 0.0042761326 - 153100 0.0044198318 0.0027341842 0.0048750402 - 153200 0.004164547 0.0024886887 0.0045058911 - 153300 0.0066801176 0.0021850502 0.0054207322 - 153400 0.0066444838 0.0030123744 0.0062307963 - 153500 0.0046670883 0.0027962745 0.0050568954 - 153600 0.0050569859 0.0023953035 0.0048447811 - 153700 0.0056574767 0.0024891698 0.0052295101 - 153800 0.0052700823 0.0023535181 0.0049062142 - 153900 0.0051632144 0.0022715295 0.0047724615 - 154000 0.0042337596 0.0021679538 0.0042186811 - 154100 0.005491921 0.0021899006 0.0048500498 - 154200 0.0047673306 0.002659424 0.0049685998 - 154300 0.0072143942 0.0023794034 0.0058738756 - 154400 0.0052574085 0.0021847983 0.0047313555 - 154500 0.0049066593 0.0023323421 0.0047090052 - 154600 0.0049329687 0.0020242138 0.0044136206 - 154700 0.0044738201 0.0023567162 0.0045237228 - 154800 0.0069959333 0.0025653453 0.0059540005 - 154900 0.0054682055 0.0024833758 0.0051320378 - 155000 0.0043667131 0.0024252642 0.0045403908 - 155100 0.0048510794 0.002432654 0.0047823956 - 155200 0.0053573126 0.0021590407 0.004753989 - 155300 0.0038716761 0.0022326442 0.0041079873 - 155400 0.0044067852 0.0022416321 0.0043761687 - 155500 0.0048673892 0.0025992402 0.0049568818 - 155600 0.0062431377 0.0022925316 0.0053165515 - 155700 0.0065293515 0.0020887983 0.0052514529 - 155800 0.0064674854 0.0019299478 0.005062636 - 155900 0.0049443007 0.0018346679 0.0042295635 - 156000 0.0046110401 0.0022421651 0.0044756377 - 156100 0.0035320908 0.0028460672 0.0045569237 - 156200 0.0051375215 0.0029886751 0.0054771621 - 156300 0.0045384454 0.0035289115 0.0057272209 - 156400 0.007449067 0.0030849724 0.0066931142 - 156500 0.0058027133 0.0025212537 0.0053319429 - 156600 0.004794061 0.0025330507 0.004855174 - 156700 0.0046444186 0.0024802054 0.0047298457 - 156800 0.0036685867 0.0024427138 0.0042196855 - 156900 0.0057219502 0.0020886566 0.0048602262 - 157000 0.0045312197 0.0023553929 0.0045502024 - 157100 0.0049651552 0.0023599911 0.0047649882 - 157200 0.0056482905 0.0019587615 0.0046946522 - 157300 0.0050909533 0.001890189 0.0043561195 - 157400 0.0051901878 0.0017647626 0.0042787598 - 157500 0.0051705452 0.00139791 0.0039023928 - 157600 0.0048677016 0.0013188193 0.0036766123 - 157700 0.0045459928 0.0015970186 0.0037989839 - 157800 0.0049654654 0.0017060322 0.0041111795 - 157900 0.005077764 0.0019306335 0.0043901754 - 158000 0.0055413432 0.0022015826 0.0048856707 - 158100 0.0060683005 0.0017923339 0.004731667 - 158200 0.0051983427 0.0016303503 0.0041482975 - 158300 0.0050188722 0.0016466829 0.0040776991 - 158400 0.0042586344 0.0019458243 0.0040086004 - 158500 0.0039015186 0.002230434 0.0041202321 - 158600 0.0059018117 0.0020963845 0.0049550746 - 158700 0.0045117917 0.0026484076 0.0048338067 - 158800 0.0039525279 0.002537756 0.0044522617 - 158900 0.0053521188 0.0026255837 0.0052180163 - 159000 0.0051960364 0.0030255902 0.0055424204 - 159100 0.0054781755 0.0028587191 0.0055122103 - 159200 0.003580188 0.0027664748 0.0045006283 - 159300 0.0043438726 0.0026956299 0.0047996932 - 159400 0.0064902022 0.0022900838 0.0054337755 - 159500 0.0061888156 0.0021282956 0.0051260032 - 159600 0.0054523759 0.0028752149 0.0055162095 - 159700 0.0043848522 0.0028030229 0.0049269357 - 159800 0.0051834959 0.0025268622 0.005037618 - 159900 0.0058104463 0.00204287 0.0048573049 - 160000 0.0050935227 0.0021823931 0.0046495682 - 160100 0.0045065106 0.0018609616 0.0040438026 - 160200 0.0065247049 0.0019719606 0.0051323645 - 160300 0.0043202581 0.0025761183 0.0046687432 - 160400 0.0037731082 0.0029681783 0.0047957776 - 160500 0.0048078738 0.0027838241 0.0051126379 - 160600 0.0056656097 0.002514063 0.0052583427 - 160700 0.0047905705 0.0025004306 0.0048208631 - 160800 0.0059485762 0.0027451888 0.0056265303 - 160900 0.0069172279 0.0025777952 0.0059283274 - 161000 0.0045929814 0.002757201 0.0049819264 - 161100 0.0050765581 0.0022732258 0.0047321836 - 161200 0.0048672061 0.0021223981 0.0044799511 - 161300 0.0084339973 0.0017979256 0.005883143 - 161400 0.0043087197 0.0020939555 0.0041809916 - 161500 0.0048125215 0.0019393911 0.0042704562 - 161600 0.0061851204 0.0018939874 0.0048899051 - 161700 0.0048819373 0.0017452599 0.0041099482 - 161800 0.0053347953 0.0017629933 0.0043470347 - 161900 0.0059179407 0.0020049844 0.004871487 - 162000 0.0056691395 0.0026944993 0.0054404887 - 162100 0.0062329956 0.0028188328 0.00583794 - 162200 0.0065406343 0.0028653361 0.0060334558 - 162300 0.0047925456 0.0027958749 0.0051172642 - 162400 0.0042940493 0.0024094122 0.0044893424 - 162500 0.004674617 0.0020342223 0.0042984899 - 162600 0.0048720063 0.0018968445 0.0042567226 - 162700 0.0047032571 0.0020574632 0.0043356034 - 162800 0.0063507849 0.0024420795 0.0055182409 - 162900 0.0046496671 0.0021915443 0.0044437268 - 163000 0.0052163891 0.0019197839 0.0044464724 - 163100 0.0042621643 0.0017866294 0.0038511153 - 163200 0.003913794 0.0022974134 0.0041931574 - 163300 0.0043629936 0.0022760116 0.0043893366 - 163400 0.006070931 0.0022716007 0.0052122079 - 163500 0.0046416141 0.0025036778 0.0047519596 - 163600 0.0071688341 0.0024717357 0.0059441397 - 163700 0.0051661612 0.0024036609 0.0049060202 - 163800 0.006407258 0.0023039278 0.0054074435 - 163900 0.0049495761 0.0029762358 0.0053736867 - 164000 0.0056070224 0.002607829 0.0053237304 - 164100 0.0049666508 0.002887288 0.0052930095 - 164200 0.0058178851 0.0025532376 0.0053712757 - 164300 0.0057135711 0.0022369992 0.0050045102 - 164400 0.0039687789 0.0018559992 0.0037783764 - 164500 0.0052175444 0.0018823853 0.0044096334 - 164600 0.0053989443 0.0027528088 0.0053679224 - 164700 0.0052602067 0.0024845198 0.0050324324 - 164800 0.0060999519 0.0017206815 0.0046753457 - 164900 0.0072795707 0.0019280897 0.0054541318 - 165000 0.004577988 0.0021762846 0.0043937475 - 165100 0.0066311513 0.00211785 0.0053298139 - 165200 0.0053043591 0.0024129504 0.0049822493 - 165300 0.0050505966 0.002193457 0.0046398397 - 165400 0.0053447822 0.0023196192 0.0049084981 - 165500 0.0052686317 0.0024356049 0.0049875984 - 165600 0.0037062287 0.0022874951 0.0040826997 - 165700 0.0065031044 0.0018203609 0.004970302 - 165800 0.0042549744 0.0022655152 0.0043265184 - 165900 0.0049047866 0.002865856 0.005241612 - 166000 0.0042771074 0.0029348981 0.005006622 - 166100 0.0044818132 0.0027141984 0.0048850766 - 166200 0.005394058 0.0022853924 0.0048981393 - 166300 0.0040815134 0.0023739117 0.0043508948 - 166400 0.0054641429 0.002521733 0.0051684273 - 166500 0.0051554511 0.0030905531 0.0055877247 - 166600 0.0048378447 0.0025567763 0.0049001073 - 166700 0.0084159574 0.00216405 0.0062405294 - 166800 0.0040051911 0.0026447406 0.0045847551 - 166900 0.0040266005 0.0026342481 0.0045846327 - 167000 0.0049446525 0.0027660638 0.0051611298 - 167100 0.0053975892 0.0026433147 0.0052577719 - 167200 0.0040086986 0.0024036545 0.0043453678 - 167300 0.0045407865 0.0022339223 0.0044333658 - 167400 0.0042888042 0.0021276537 0.0042050432 - 167500 0.0049512221 0.0023172703 0.0047155185 - 167600 0.0066094263 0.002166447 0.0053678878 - 167700 0.0055063393 0.0026266253 0.0052937585 - 167800 0.0063715344 0.0025261516 0.0056123636 - 167900 0.0060565087 0.0023051275 0.0052387489 - 168000 0.0046761261 0.0029428931 0.0052078917 - 168100 0.0042716448 0.0034805445 0.0055496224 - 168200 0.0045763221 0.003173535 0.005390191 - 168300 0.0052264064 0.0027643524 0.005295893 - 168400 0.005614281 0.0026517138 0.0053711312 - 168500 0.0045414774 0.0026239022 0.0048236803 - 168600 0.004369677 0.0024286681 0.0045452304 - 168700 0.0047279523 0.0022579649 0.0045480668 - 168800 0.0058736256 0.0022428108 0.0050878482 - 168900 0.0042201681 0.002250521 0.004294665 - 169000 0.0050922908 0.0022707129 0.0047372913 - 169100 0.0050772604 0.0020877072 0.0045470053 - 169200 0.0043384511 0.0020589712 0.0041604084 - 169300 0.0038461152 0.0020456951 0.0039086572 - 169400 0.0038110489 0.0018595937 0.0037055705 - 169500 0.0053986464 0.0019227898 0.0045377592 - 169600 0.0033657695 0.0026934035 0.0043236981 - 169700 0.0047444138 0.0025662912 0.0048643667 - 169800 0.0057891597 0.0021446014 0.0049487256 - 169900 0.0044467918 0.0022621392 0.0044160539 - 170000 0.0040623737 0.002449087 0.0044167993 - 170100 0.0059199183 0.002008681 0.0048761414 - 170200 0.0046689524 0.00236858 0.0046301039 - 170300 0.0059912456 0.0028317645 0.0057337741 - 170400 0.0040889385 0.0031981785 0.0051787581 - 170500 0.0053163322 0.0030502131 0.0056253115 - 170600 0.0044476618 0.0032635911 0.0054179273 - 170700 0.0072373312 0.0032582239 0.0067638062 - 170800 0.0057174135 0.0029927618 0.0057621339 - 170900 0.0051583236 0.0030367685 0.0055353315 - 171000 0.004752941 0.0028672361 0.0051694419 - 171100 0.0067618001 0.0027897097 0.0060649567 - 171200 0.006125981 0.0029634779 0.0059307499 - 171300 0.0051492572 0.0032023616 0.005696533 - 171400 0.0048470645 0.0024037324 0.0047515293 - 171500 0.0048322247 0.0020342993 0.0043749082 - 171600 0.0048465763 0.0021079081 0.0044554685 - 171700 0.0050603844 0.0023483275 0.0047994512 - 171800 0.0060571521 0.0028178385 0.0057517715 - 171900 0.0053419868 0.00291038 0.0054979048 - 172000 0.0055085435 0.0025834794 0.0052516802 - 172100 0.0047816038 0.0026764145 0.0049925039 - 172200 0.0057277113 0.002473442 0.0052478022 - 172300 0.0051192765 0.0027374121 0.0052170616 - 172400 0.005596358 0.0030916856 0.0058024214 - 172500 0.0042281872 0.0029650156 0.0050130438 - 172600 0.0048929982 0.0026994372 0.0050694832 - 172700 0.0046070082 0.0028262354 0.005057755 - 172800 0.0045721369 0.0024372032 0.004651832 - 172900 0.0042542587 0.0028236651 0.0048843217 - 173000 0.0040198806 0.0025763625 0.0045234922 - 173100 0.0038632863 0.0024507968 0.0043220761 - 173200 0.005179401 0.0023385965 0.0048473688 - 173300 0.0045384982 0.0023440778 0.0045424129 - 173400 0.003819509 0.0024128415 0.0042629162 - 173500 0.0038319386 0.0024929789 0.0043490742 - 173600 0.0041644251 0.0029191284 0.0049362718 - 173700 0.0037860578 0.0033559084 0.0051897802 - 173800 0.0053638365 0.003062021 0.0056601293 - 173900 0.0045422519 0.0025494231 0.0047495764 - 174000 0.0046648823 0.002151625 0.0044111774 - 174100 0.00419413 0.0024077856 0.0044393173 - 174200 0.006513566 0.00248414 0.0056391485 - 174300 0.0070665639 0.0026349534 0.0060578202 - 174400 0.0050057449 0.002819314 0.0052439717 - 174500 0.0046849136 0.0029546937 0.0052239487 - 174600 0.0061534255 0.0024333402 0.0054139057 - 174700 0.0047288255 0.0023150192 0.004605544 - 174800 0.0046613413 0.0023306249 0.0045884621 - 174900 0.0059836457 0.0019996837 0.0048980121 - 175000 0.0049117306 0.0021873632 0.0045664827 - 175100 0.0056488975 0.0026604624 0.0053966471 - 175200 0.0051269617 0.0023215836 0.0048049557 - 175300 0.0046810432 0.0021657823 0.0044331626 - 175400 0.0068231356 0.0025416854 0.0058466417 - 175500 0.0048125289 0.0025211253 0.0048521939 - 175600 0.0059890689 0.002143281 0.0050442362 - 175700 0.0061277037 0.0023581915 0.005326298 - 175800 0.0056664343 0.0026984486 0.0054431278 - 175900 0.006226498 0.0026334748 0.0056494348 - 176000 0.0036742198 0.0033117737 0.0050914739 - 176100 0.0050177728 0.0029069105 0.0053373942 - 176200 0.0046582718 0.0022242181 0.0044805685 - 176300 0.0041702059 0.0020266951 0.0040466386 - 176400 0.0043947762 0.0022945087 0.0044232284 - 176500 0.0050314031 0.0023279738 0.0047650597 - 176600 0.0067434407 0.0021558213 0.0054221753 - 176700 0.0057649581 0.0021036347 0.0048960363 - 176800 0.0045517789 0.0020718413 0.0042766092 - 176900 0.0045014192 0.002306267 0.0044866419 - 177000 0.0039469761 0.002131983 0.0040437995 - 177100 0.0052114292 0.0017970982 0.0043213843 - 177200 0.0044156937 0.0019055287 0.0040443804 - 177300 0.0037534259 0.0018644198 0.0036824855 - 177400 0.0054399325 0.0020093058 0.0046442731 - 177500 0.0057693264 0.0020479726 0.0048424901 - 177600 0.0054223268 0.0022352031 0.0048616427 - 177700 0.0073963469 0.002506764 0.0060893696 - 177800 0.0052954181 0.0025605429 0.005125511 - 177900 0.004069189 0.002576384 0.0045473974 - 178000 0.0038721198 0.0023007757 0.0041763337 - 178100 0.0045339862 0.0022879117 0.0044840612 - 178200 0.006320902 0.0025996003 0.0056612872 - 178300 0.0068138857 0.002397765 0.0056982409 - 178400 0.0077096252 0.0025457506 0.0062801003 - 178500 0.0043518136 0.0027738328 0.0048817425 - 178600 0.0053528388 0.0024783057 0.005071087 - 178700 0.006383901 0.0022961462 0.0053883482 - 178800 0.0057754086 0.0024095078 0.0052069714 - 178900 0.0045293708 0.0025332296 0.0047271436 - 179000 0.0050434616 0.0028301783 0.005273105 - 179100 0.0055845463 0.0027675743 0.0054725889 - 179200 0.0039278071 0.0028319306 0.0047344622 - 179300 0.004081491 0.003000061 0.0049770332 - 179400 0.0062062904 0.0028575068 0.0058636787 - 179500 0.0052464655 0.0023084301 0.0048496869 - 179600 0.0052736987 0.0022150575 0.0047695053 - 179700 0.0042601771 0.0029507932 0.0050143165 - 179800 0.004979261 0.003274902 0.0056867316 - 179900 0.0061351201 0.0031000563 0.0060717551 - 180000 0.0066566727 0.0028260329 0.0060503588 - 180100 0.0064538913 0.0029894834 0.006115587 - 180200 0.0046227557 0.0033606421 0.0055997894 - 180300 0.0058760106 0.0031954553 0.0060416479 - 180400 0.0066399034 0.0028787069 0.0060949102 - 180500 0.0048316771 0.003121693 0.0054620366 - 180600 0.0043999536 0.0031631323 0.0052943598 - 180700 0.0050133232 0.0029488755 0.0053772039 - 180800 0.0060917075 0.003139579 0.0060902498 - 180900 0.0067565673 0.0031876283 0.0064603406 - 181000 0.0054760351 0.0034357265 0.0060881811 - 181100 0.0059791683 0.0031307651 0.0060269248 - 181200 0.0049620975 0.0027527775 0.0051562934 - 181300 0.0058168352 0.0025542441 0.0053717737 - 181400 0.0074124776 0.0027314387 0.0063218575 - 181500 0.0047401492 0.002528518 0.0048245278 - 181600 0.0053862645 0.0027190833 0.0053280552 - 181700 0.0054039109 0.0029065742 0.0055240935 - 181800 0.00733339 0.0028731752 0.0064252859 - 181900 0.006454915 0.003000843 0.0061274424 - 182000 0.0056203447 0.0037176893 0.0064400438 - 182100 0.0060120851 0.0031727342 0.0060848379 - 182200 0.0043869015 0.0025403986 0.004665304 - 182300 0.0040502603 0.0026548658 0.0046167107 - 182400 0.0047276291 0.0024992324 0.0047891777 - 182500 0.0069399783 0.0021612268 0.0055227788 - 182600 0.0052651879 0.0021067349 0.0046570603 - 182700 0.0046511944 0.0019013654 0.0041542877 - 182800 0.0039678969 0.0017224289 0.003644379 - 182900 0.0060322293 0.0019686185 0.0048904796 - 183000 0.0044312063 0.0024721146 0.0046184801 - 183100 0.0055569702 0.0024702265 0.005161884 - 183200 0.0044802585 0.0025738277 0.0047439529 - 183300 0.0039253332 0.0024418988 0.0043432321 - 183400 0.0054920333 0.002521262 0.0051814656 - 183500 0.0043290383 0.0027746516 0.0048715296 - 183600 0.0052618606 0.0025950347 0.0051437484 - 183700 0.0041607749 0.0033383627 0.0053537381 - 183800 0.0062872104 0.0033602091 0.0064055767 - 183900 0.0053335613 0.0031962745 0.0057797182 - 184000 0.0057493116 0.0029152922 0.005700115 - 184100 0.0034488087 0.0028402707 0.0045107874 - 184200 0.0052121074 0.002817431 0.0053420455 - 184300 0.0046878421 0.003004564 0.0052752375 - 184400 0.0060565068 0.0024850035 0.005418624 - 184500 0.004775217 0.0021330363 0.004446032 - 184600 0.0045152901 0.0020452738 0.0042323675 - 184700 0.0052189619 0.0028027033 0.005330638 - 184800 0.0044494116 0.002797766 0.0049529498 - 184900 0.0044963623 0.0022585517 0.0044364772 - 185000 0.0049105831 0.0023633887 0.0047419524 - 185100 0.0057402555 0.0029314345 0.0057118707 - 185200 0.0052035643 0.0032472885 0.0057677649 - 185300 0.0044396187 0.0031022778 0.0052527181 - 185400 0.00552578 0.0027084551 0.0053850048 - 185500 0.0059026866 0.0020049507 0.0048640645 - 185600 0.0040026931 0.0024818848 0.0044206893 - 185700 0.0053803795 0.0026164507 0.0052225721 - 185800 0.003861688 0.0023225395 0.0041930446 - 185900 0.0053582503 0.0021537608 0.0047491633 - 186000 0.0046154584 0.0022786866 0.0045142993 - 186100 0.0049055032 0.0023179292 0.0046940323 - 186200 0.0052858241 0.0021079373 0.0046682584 - 186300 0.0052024362 0.0024076039 0.004927534 - 186400 0.004857801 0.0023052738 0.0046582711 - 186500 0.004023298 0.0021850719 0.0041338569 - 186600 0.0036155255 0.002280809 0.0040320792 - 186700 0.0038579955 0.0027198323 0.0045885489 - 186800 0.0063677161 0.0025739598 0.0056583222 - 186900 0.0045225785 0.0024861386 0.0046767625 - 187000 0.0049835336 0.0020343537 0.0044482528 - 187100 0.0045320336 0.0021878754 0.0043830792 - 187200 0.0034144141 0.0026306899 0.0042845467 - 187300 0.0039057395 0.002513463 0.0044053056 - 187400 0.0058619531 0.0020707321 0.0049101156 - 187500 0.0064173394 0.0019263661 0.0050347649 - 187600 0.0053520084 0.0019748014 0.0045671805 - 187700 0.0052174347 0.0020493688 0.0045765637 - 187800 0.0046195121 0.0023494084 0.0045869846 - 187900 0.003689577 0.002147859 0.0039349979 - 188000 0.0059961492 0.0017618515 0.0046662363 - 188100 0.0041823325 0.0017718191 0.0037976365 - 188200 0.0043850261 0.00196323 0.004087227 - 188300 0.003635617 0.0019857711 0.0037467731 - 188400 0.0059524417 0.0016029899 0.0044862039 - 188500 0.0056924296 0.0018621911 0.0046194617 - 188600 0.0048042949 0.0024473011 0.0047743814 - 188700 0.0058318226 0.0022984831 0.0051232721 - 188800 0.0052188059 0.0026443254 0.0051721845 - 188900 0.0056113973 0.0025944274 0.0053124479 - 189000 0.0044310254 0.0022104356 0.0043567136 - 189100 0.0047866433 0.0025570562 0.0048755866 - 189200 0.0033139611 0.002889829 0.0044950289 - 189300 0.0038916042 0.0030517495 0.0049367453 - 189400 0.004604689 0.0023109722 0.0045413684 - 189500 0.0062908433 0.0017933712 0.0048404984 - 189600 0.0047164727 0.0021168432 0.0044013847 - 189700 0.0043846343 0.0023526239 0.0044764312 - 189800 0.0062542294 0.0024680157 0.0054974081 - 189900 0.0054322102 0.0028654338 0.0054966607 - 190000 0.0052922781 0.0035149977 0.0060784449 - 190100 0.0048195915 0.0033319567 0.0056664464 - 190200 0.0049659617 0.0031083355 0.0055137232 - 190300 0.0048846338 0.002618541 0.0049845355 - 190400 0.0072407499 0.0025871515 0.0060943898 - 190500 0.0051735903 0.0033501057 0.0058560635 - 190600 0.0040078499 0.0037742335 0.0057155358 - 190700 0.006697174 0.003039924 0.0062838677 - 190800 0.0053998872 0.0029342198 0.0055497901 - 190900 0.0050070716 0.0032378488 0.0056631491 - 191000 0.0044775182 0.0032919033 0.0054607011 - 191100 0.0048496929 0.0029186711 0.0052677411 - 191200 0.0046411987 0.0026224616 0.0048705422 - 191300 0.0055062313 0.0028360695 0.0055031503 - 191400 0.0043036098 0.0030423482 0.0051269092 - 191500 0.0047557858 0.0028837441 0.0051873279 - 191600 0.0049657398 0.0031398468 0.0055451271 - 191700 0.0057967036 0.0027231302 0.0055309085 - 191800 0.0046446397 0.0023950176 0.0046447649 - 191900 0.0060831854 0.0021788919 0.0051254348 - 192000 0.0050062294 0.0025966413 0.0050215337 - 192100 0.0043299953 0.0029248104 0.0050221519 - 192200 0.0055555236 0.0024065811 0.0050975378 - 192300 0.0055035662 0.0023360749 0.0050018648 - 192400 0.0035013393 0.0024301448 0.004126106 - 192500 0.0039670881 0.0021160113 0.0040375696 - 192600 0.0054090169 0.0020258664 0.0046458589 - 192700 0.0043622174 0.0025770528 0.0046900019 - 192800 0.0044188753 0.0025913243 0.004731717 - 192900 0.0054753877 0.0025689278 0.0052210687 - 193000 0.0030370073 0.0026801634 0.0041512138 - 193100 0.004409951 0.0022050277 0.0043410977 - 193200 0.0057759185 0.001896822 0.0046945325 - 193300 0.0042752982 0.0025307205 0.0046015681 - 193400 0.0055186183 0.0031917268 0.0058648075 - 193500 0.0060706248 0.0030096467 0.0059501056 - 193600 0.0042938989 0.00264227 0.0047221273 - 193700 0.0055878445 0.0026675461 0.0053741583 - 193800 0.0041577783 0.0032179247 0.0052318486 - 193900 0.0044302076 0.0028307011 0.004976583 - 194000 0.0045536136 0.0026532486 0.0048589052 - 194100 0.0042068026 0.0024913282 0.0045289982 - 194200 0.0037699595 0.0026229049 0.004448979 - 194300 0.0037420602 0.0026526448 0.0044652052 - 194400 0.003878494 0.0026486011 0.0045272466 - 194500 0.0046998411 0.0024972143 0.0047736999 - 194600 0.0074446112 0.0023454877 0.0059514713 - 194700 0.0035616348 0.0025592457 0.0042844125 - 194800 0.004454451 0.0026486558 0.0048062805 - 194900 0.0041375053 0.0031289022 0.0051330063 - 195000 0.0055855352 0.0023818302 0.0050873238 - 195100 0.0049993147 0.0022307876 0.0046523307 - 195200 0.0050902708 0.0024878171 0.004953417 - 195300 0.0052889476 0.0028110914 0.0053729254 - 195400 0.0069216615 0.0026928476 0.0060455273 - 195500 0.0056653594 0.0028165203 0.0055606787 - 195600 0.0068159974 0.0033075535 0.0066090523 - 195700 0.0038892912 0.0033528858 0.0052367612 - 195800 0.0050771126 0.0029442862 0.0054035126 - 195900 0.0049673801 0.0024786018 0.0048846766 - 196000 0.0045366143 0.0023858427 0.0045832652 - 196100 0.0034262945 0.0023407836 0.004000395 - 196200 0.0080690464 0.002105792 0.0060142364 - 196300 0.0055825313 0.0026808195 0.0053848581 - 196400 0.0058569898 0.0025960602 0.0054330397 - 196500 0.0049358445 0.0023874592 0.0047782588 - 196600 0.0057120089 0.0030756087 0.005842363 - 196700 0.0065281028 0.0036266314 0.0067886812 - 196800 0.0083678972 0.002787348 0.0068405482 - 196900 0.0053579919 0.0027321079 0.0053273852 - 197000 0.0051319658 0.0031094842 0.0055952801 - 197100 0.0051893931 0.0026560568 0.0051696691 - 197200 0.0057025248 0.0025227845 0.005284945 - 197300 0.0057190745 0.0021218735 0.0048920502 - 197400 0.0054308536 0.0021085758 0.0047391455 - 197500 0.0061738386 0.0024553693 0.0054458224 - 197600 0.0073637833 0.0034092835 0.006976116 - 197700 0.006880961 0.0038654894 0.0071984549 - 197800 0.0045154568 0.003905548 0.0060927224 - 197900 0.0058546478 0.0034661516 0.0063019967 - 198000 0.006251792 0.0032547858 0.0062829976 - 198100 0.0047231964 0.0027934021 0.0050812004 - 198200 0.0050989071 0.0024584673 0.0049282504 - 198300 0.0066451305 0.0021919512 0.0054106863 - 198400 0.0052993565 0.0027496567 0.0053165324 - 198500 0.0048914502 0.0030021438 0.00537144 - 198600 0.0045970991 0.0028914871 0.005118207 - 198700 0.0046075146 0.0028712859 0.0051030508 - 198800 0.0044019458 0.0030324028 0.0051645953 - 198900 0.0064983384 0.0028781354 0.006025768 - 199000 0.0043115478 0.0026259277 0.0047143336 - 199100 0.0052927869 0.0030187438 0.0055824374 - 199200 0.0046158741 0.0034427209 0.0056785349 - 199300 0.0057827879 0.0033809411 0.0061819789 - 199400 0.0047102404 0.0030595364 0.0053410591 - 199500 0.0065787425 0.0026770398 0.0058636182 - 199600 0.0051927359 0.0026411966 0.005156428 - 199700 0.0045327092 0.0027294203 0.0049249513 - 199800 0.0048496623 0.0025053467 0.0048544019 - 199900 0.0054228679 0.0020631595 0.0046898612 - 200000 0.0055794195 0.0018362356 0.0045387669 - 200100 0.0046262225 0.0020656778 0.0043065043 - 200200 0.003627737 0.002270457 0.0040276421 - 200300 0.0038479801 0.0021699958 0.0040338612 - 200400 0.0050120202 0.002216547 0.0046442443 - 200500 0.0049172792 0.0023821287 0.0047639358 - 200600 0.0036694163 0.0025848857 0.0043622592 - 200700 0.0041600694 0.0027527852 0.0047678188 - 200800 0.004511666 0.0024639128 0.004649251 - 200900 0.0066329627 0.0025066272 0.0057194686 - 201000 0.0050300515 0.0032750403 0.0057114715 - 201100 0.0059981294 0.0034641684 0.0063695123 - 201200 0.0053221902 0.0032550253 0.0058329612 - 201300 0.004780854 0.0027813602 0.0050970863 - 201400 0.0047724553 0.0027331203 0.0050447783 - 201500 0.0083500719 0.0026781623 0.0067227284 - 201600 0.0057064719 0.0026443441 0.0054084164 - 201700 0.0053270485 0.0031907506 0.0057710397 - 201800 0.0056772678 0.0027345683 0.0054844949 - 201900 0.0051556952 0.0026502128 0.0051475027 - 202000 0.0054386571 0.0024793145 0.0051136641 - 202100 0.0060716989 0.002756279 0.0056972581 - 202200 0.0040641357 0.0033367206 0.0053052863 - 202300 0.0046033751 0.0032435963 0.0054733561 - 202400 0.004246771 0.0028810152 0.0049380449 - 202500 0.0058791109 0.002499567 0.0053472613 - 202600 0.0044302003 0.0030500904 0.0051959687 - 202700 0.0045842744 0.0028628921 0.0050834 - 202800 0.0056273109 0.0031744904 0.0059002191 - 202900 0.0066554885 0.0030585302 0.0062822825 - 203000 0.0059381392 0.0028487683 0.0057250544 - 203100 0.0051322804 0.0031226977 0.005608646 - 203200 0.0055475824 0.0025834209 0.0052705311 - 203300 0.0049699258 0.0025155703 0.0049228781 - 203400 0.0050097429 0.0023647721 0.0047913663 - 203500 0.0044111825 0.0023675111 0.0045041776 - 203600 0.0040262051 0.0027285627 0.0046787558 - 203700 0.0053123872 0.003257171 0.0058303585 - 203800 0.005475602 0.0030955672 0.0057478119 - 203900 0.0063764118 0.0027558197 0.0058443942 - 204000 0.0063038368 0.0024937674 0.0055471884 - 204100 0.0050449743 0.0026723037 0.0051159631 - 204200 0.0067524323 0.0025882042 0.0058589137 - 204300 0.0073031627 0.0026445353 0.0061820047 - 204400 0.0050223894 0.002810413 0.0052431329 - 204500 0.0037718568 0.0030748839 0.004901877 - 204600 0.0062012174 0.0032083521 0.0062120668 - 204700 0.0054393438 0.0028176179 0.0054523 - 204800 0.0088331665 0.002493314 0.006771879 - 204900 0.0053942416 0.0025172599 0.0051300957 - 205000 0.0037609622 0.0030769793 0.0048986954 - 205100 0.0063160379 0.0030003872 0.006059718 - 205200 0.0042026933 0.0026768992 0.0047125788 - 205300 0.0058727251 0.0025895103 0.0054341116 - 205400 0.0067897991 0.002280172 0.005568981 - 205500 0.0055292419 0.002319809 0.0049980356 - 205600 0.0052534527 0.0026419529 0.0051865941 - 205700 0.0043953817 0.0023659035 0.0044949165 - 205800 0.0045353981 0.0024362533 0.0046330868 - 205900 0.0031392895 0.0024728119 0.0039934052 - 206000 0.0045591585 0.0023565796 0.004564922 - 206100 0.0053648652 0.0021715123 0.0047701189 - 206200 0.0051829247 0.0019909078 0.0045013869 - 206300 0.0050365147 0.0026592167 0.0050987785 - 206400 0.0050082255 0.0028922498 0.005318109 - 206500 0.0052750194 0.0029120324 0.0054671199 - 206600 0.0055912708 0.0023448232 0.005053095 - 206700 0.0046981304 0.0021110812 0.0043867381 - 206800 0.0058175925 0.0023570336 0.00517493 - 206900 0.0049001501 0.002548525 0.0049220352 - 207000 0.005069773 0.0027047998 0.005160471 - 207100 0.0051734466 0.002815373 0.0053212611 - 207200 0.0060320982 0.0024832317 0.0054050292 - 207300 0.0057246583 0.0025824224 0.0053553038 - 207400 0.0039285605 0.0031760522 0.0050789488 - 207500 0.0056609938 0.0027601583 0.0055022022 - 207600 0.0075766164 0.0025548419 0.0062247655 - 207700 0.0062695972 0.0026526646 0.0056895007 - 207800 0.0054721533 0.0026693164 0.0053198907 - 207900 0.0051668536 0.0022696373 0.004772332 - 208000 0.0056308201 0.0020367354 0.0047641639 - 208100 0.0044197953 0.0020936931 0.0042345314 - 208200 0.0047528949 0.0021909893 0.0044931728 - 208300 0.0050687545 0.0022296153 0.0046847933 - 208400 0.0048438733 0.0025091078 0.0048553589 - 208500 0.0054793216 0.0023856561 0.0050397025 - 208600 0.0045392641 0.0025997239 0.00479843 - 208700 0.0069382514 0.0028903382 0.0062510537 - 208800 0.0051695301 0.0024669796 0.0049709708 - 208900 0.0047937797 0.0023494014 0.0046713884 - 209000 0.0058598094 0.0027101484 0.0055484936 - 209100 0.003453191 0.0028632708 0.0045359102 - 209200 0.0044239072 0.002822116 0.004964946 - 209300 0.0040727375 0.0028257088 0.004798441 - 209400 0.0049134092 0.0033985709 0.0057785035 - 209500 0.004197963 0.0032123208 0.0052457091 - 209600 0.004950149 0.0030137388 0.0054114672 - 209700 0.0056623336 0.0031856888 0.0059283816 - 209800 0.0037767196 0.0031179024 0.004947251 - 209900 0.0054877261 0.0030862769 0.0057443942 - 210000 0.0067233116 0.0032367487 0.0064933527 - 210100 0.0059930893 0.0035364581 0.0064393608 - 210200 0.0059538067 0.0030089911 0.0058928662 - 210300 0.0052167989 0.0027591159 0.0052860029 - 210400 0.0057580904 0.0023534834 0.0051425584 - 210500 0.0057889341 0.0019918568 0.0047958718 - 210600 0.0048658675 0.0022582845 0.0046151891 - 210700 0.0049044132 0.0027921752 0.0051677504 - 210800 0.006885278 0.0028135277 0.0061485842 - 210900 0.0066110515 0.0031688163 0.0063710444 - 211000 0.0054439086 0.0030748344 0.0057117276 - 211100 0.0053383283 0.0029234553 0.0055092081 - 211200 0.0068191874 0.0024696249 0.0057726689 - 211300 0.0057627794 0.0026758586 0.0054672049 - 211400 0.0045150576 0.0032959442 0.0054829253 - 211500 0.0060131577 0.0032466078 0.0061592311 - 211600 0.0062034207 0.0034196759 0.0064244579 - 211700 0.0065560387 0.0034097479 0.0065853292 - 211800 0.0045648133 0.0033793404 0.0055904218 - 211900 0.0033423538 0.0033912292 0.0050101818 - 212000 0.0055023199 0.003326599 0.0059917852 - 212100 0.0065361398 0.0031275845 0.0062935272 - 212200 0.004875831 0.0032259827 0.0055877133 - 212300 0.0054858679 0.0029599265 0.0056171438 - 212400 0.0061264953 0.002381524 0.0053490452 - 212500 0.005214498 0.001990062 0.0045158345 - 212600 0.0057493994 0.0019943938 0.0047792592 - 212700 0.005623798 0.0020935105 0.0048175377 - 212800 0.0065557591 0.002189019 0.0053644648 - 212900 0.0059814045 0.0023138649 0.0052111077 - 213000 0.0043864828 0.002104435 0.0042291376 - 213100 0.0051890328 0.0025328931 0.0050463308 - 213200 0.005177568 0.0024633304 0.0049712149 - 213300 0.0043030541 0.0023018382 0.00438613 - 213400 0.0053245053 0.0023578072 0.0049368645 - 213500 0.0052064675 0.0024410219 0.0049629046 - 213600 0.0040067453 0.0023947802 0.0043355474 - 213700 0.0050007498 0.0027064505 0.0051286887 - 213800 0.0054415807 0.0027049209 0.0053406866 - 213900 0.0040205892 0.0024956952 0.0044431681 - 214000 0.0051135836 0.0027462569 0.005223149 - 214100 0.0043145674 0.0029988943 0.0050887628 - 214200 0.0046628981 0.0029250343 0.0051836256 - 214300 0.0056386487 0.0026121313 0.0053433518 - 214400 0.0052691657 0.0024649062 0.0050171584 - 214500 0.0053264764 0.0026753261 0.0052553382 - 214600 0.0051007139 0.003263655 0.0057343133 - 214700 0.0044406768 0.0027810427 0.0049319955 - 214800 0.0041287444 0.0021758036 0.0041756642 - 214900 0.0041351767 0.0020965452 0.0040995214 - 215000 0.0059756871 0.0024289882 0.0053234617 - 215100 0.0063538104 0.0024425944 0.0055202213 - 215200 0.0044142672 0.0021936266 0.0043317872 - 215300 0.0053632676 0.0023117074 0.0049095402 - 215400 0.0041813117 0.0024621573 0.0044874801 - 215500 0.0039120259 0.0024418236 0.0043367112 - 215600 0.0049408678 0.002201248 0.0045944808 - 215700 0.0055855941 0.0018770499 0.004582572 - 215800 0.0058154559 0.0018535909 0.0046704524 - 215900 0.0047862493 0.0022969899 0.0046153294 - 216000 0.0066111398 0.0024597439 0.0056620148 - 216100 0.0044377463 0.0032458319 0.0053953653 - 216200 0.0033917 0.0030578865 0.0047007412 - 216300 0.0053549289 0.0027917723 0.005385566 - 216400 0.0057641906 0.0027734806 0.0055655104 - 216500 0.0035664256 0.0030744324 0.0048019198 - 216600 0.0053216588 0.0028866069 0.0054642854 - 216700 0.0060473874 0.0025742992 0.0055035025 - 216800 0.00527329 0.0024363575 0.0049906074 - 216900 0.0041275952 0.0028042369 0.0048035408 - 217000 0.0052517655 0.0027585654 0.0053023893 - 217100 0.0041891447 0.0022853911 0.0043145081 - 217200 0.0056755423 0.0024929182 0.005242009 - 217300 0.0048143059 0.0034005223 0.0057324517 - 217400 0.0051420074 0.0035189033 0.0060095632 - 217500 0.0050148067 0.0033553455 0.0057843924 - 217600 0.0061779397 0.002547201 0.0055396405 - 217700 0.0046718327 0.002432099 0.0046950179 - 217800 0.0054400962 0.002252869 0.0048879157 - 217900 0.0052228186 0.001961152 0.0044909548 - 218000 0.0042315155 0.0020871308 0.0041367711 - 218100 0.0040349799 0.0023119007 0.0042663441 - 218200 0.0045962683 0.0025354819 0.0047617993 - 218300 0.0052550654 0.0029716284 0.0055170507 - 218400 0.0049325395 0.0025894029 0.0049786017 - 218500 0.0043424276 0.0024087658 0.0045121292 - 218600 0.0046181375 0.0024001065 0.0046370169 - 218700 0.0063442927 0.0023319855 0.0054050023 - 218800 0.0063210459 0.002292401 0.0053541576 - 218900 0.004425962 0.002161475 0.0043053003 - 219000 0.0053481681 0.0023158821 0.004906401 - 219100 0.0048637667 0.0029258406 0.0052817276 - 219200 0.0056117679 0.0035876087 0.0063058088 - 219300 0.0054586012 0.0030469409 0.0056909508 - 219400 0.0042932422 0.0026438157 0.0047233549 - 219500 0.0064948926 0.0019504585 0.0050964221 - 219600 0.0058272923 0.0018366736 0.0046592683 - 219700 0.0059606981 0.0025572656 0.0054444787 - 219800 0.0051471199 0.0027081645 0.0052013007 - 219900 0.0063578155 0.0022763014 0.0053558683 - 220000 0.0051302098 0.0020347664 0.0045197117 - 220100 0.005186118 0.0016477173 0.0041597432 - 220200 0.0040678023 0.0016691751 0.0036395168 - 220300 0.0052729398 0.001620618 0.0041746983 - 220400 0.0038373588 0.0019250365 0.0037837571 - 220500 0.0031123609 0.0022007598 0.0037083096 - 220600 0.003778775 0.0024907121 0.0043210562 - 220700 0.0052178506 0.0022113497 0.004738746 - 220800 0.0054711128 0.0021446446 0.0047947149 - 220900 0.003199606 0.0024607572 0.0040105663 - 221000 0.0044880533 0.0026779085 0.0048518093 - 221100 0.004125102 0.0026335148 0.0046316111 - 221200 0.0062759649 0.002487109 0.0055270295 - 221300 0.0065846908 0.0025336522 0.0057231119 - 221400 0.00623465 0.002282917 0.0053028256 - 221500 0.0031856136 0.0021569919 0.0037000235 - 221600 0.0053218097 0.001894651 0.0044724026 - 221700 0.0038260613 0.0022992947 0.0041525431 - 221800 0.0041522995 0.0025537836 0.0045650537 - 221900 0.0042572831 0.0022230627 0.0042851842 - 222000 0.0030534317 0.0021013358 0.0035803418 - 222100 0.005488967 0.0017795994 0.0044383178 - 222200 0.0056175036 0.0021400928 0.0048610711 - 222300 0.005063635 0.0029091567 0.0053618549 - 222400 0.0041365371 0.0029853006 0.0049889358 - 222500 0.0077756175 0.002877737 0.0066440517 - 222600 0.0056018509 0.003098357 0.0058117536 - 222700 0.0045511141 0.0030353608 0.0052398067 - 222800 0.0060903168 0.0026433974 0.0055933946 - 222900 0.0067682161 0.0023094817 0.0055878364 - 223000 0.0061405979 0.0025118402 0.0054861923 - 223100 0.0047410389 0.0027534355 0.0050498763 - 223200 0.0060495475 0.002271013 0.0052012625 - 223300 0.0046638557 0.0023831345 0.0046421896 - 223400 0.0038669393 0.0023398699 0.0042129186 - 223500 0.0039575513 0.0024278834 0.0043448222 - 223600 0.0041017738 0.002334902 0.0043216987 - 223700 0.0043298244 0.0021836209 0.0042808796 - 223800 0.0054089227 0.0023133144 0.0049332614 - 223900 0.0045626207 0.0022696781 0.0044796975 - 224000 0.0056860084 0.0018120713 0.0045662316 - 224100 0.0059062196 0.0022074251 0.0050682502 - 224200 0.0064250817 0.0026978093 0.0058099582 - 224300 0.005542489 0.0026783338 0.0053629769 - 224400 0.0074546374 0.0025328532 0.0061436932 - 224500 0.0064812195 0.0027228111 0.0058621518 - 224600 0.005741166 0.0028837977 0.0056646749 - 224700 0.0069747847 0.0026264433 0.0060048546 - 224800 0.0052410051 0.0030167347 0.0055553466 - 224900 0.0059214962 0.0037691787 0.0066374034 - 225000 0.005412622 0.0039626798 0.0065844186 - 225100 0.006309758 0.0028737625 0.0059300516 - 225200 0.0064634513 0.0024383195 0.0055690537 - 225300 0.0045406866 0.0022316267 0.0044310217 - 225400 0.0049487621 0.0022483332 0.0046453898 - 225500 0.0062329741 0.0023148391 0.0053339359 - 225600 0.0041232072 0.0026638528 0.0046610313 - 225700 0.0050742266 0.0025713808 0.0050292093 - 225800 0.0044303136 0.0026256376 0.0047715707 - 225900 0.0056311072 0.0026817455 0.005409313 - 226000 0.0068033319 0.00261131 0.005906674 - 226100 0.0043961786 0.002808152 0.004937551 - 226200 0.0046141673 0.0031405336 0.0053755208 - 226300 0.0054519637 0.0027800399 0.0054208349 - 226400 0.004847372 0.0024578222 0.004805768 - 226500 0.0045188545 0.0026329527 0.0048217728 - 226600 0.0057554771 0.0021998924 0.0049877017 - 226700 0.0044097186 0.002266295 0.0044022525 - 226800 0.0035189588 0.0024047027 0.0041091983 - 226900 0.003098653 0.0021289864 0.0036298964 - 227000 0.0047172095 0.0018439527 0.0041288511 - 227100 0.0048103259 0.002404556 0.0047345576 - 227200 0.0037297016 0.0027718781 0.0045784523 - 227300 0.0045447955 0.0026217206 0.004823106 - 227400 0.0045007704 0.0023878138 0.0045678745 - 227500 0.0058323633 0.002389255 0.005214306 - 227600 0.0068183459 0.0022908101 0.0055934464 - 227700 0.0045747189 0.0026717476 0.004887627 - 227800 0.0050176575 0.0026163603 0.0050467882 - 227900 0.0036796247 0.0025454418 0.00432776 - 228000 0.00491033 0.0024189057 0.0047973467 - 228100 0.0055126097 0.0025724337 0.005242604 - 228200 0.0041685076 0.0029127549 0.0049318758 - 228300 0.0051510468 0.0026914224 0.0051864607 - 228400 0.0047856628 0.0021502655 0.0044683209 - 228500 0.004866734 0.0019715281 0.0043288523 - 228600 0.0051592719 0.0021102646 0.0046092869 - 228700 0.0049746105 0.0020757778 0.0044853548 - 228800 0.0036021676 0.0023614814 0.0041062813 - 228900 0.0059877605 0.0024416265 0.005341948 - 229000 0.0043174828 0.0023997436 0.0044910243 - 229100 0.0042049422 0.0022650903 0.0043018592 - 229200 0.0065286288 0.0024941617 0.0056564663 - 229300 0.0056362557 0.0027213769 0.0054514383 - 229400 0.0051290209 0.00327929 0.0057636595 - 229500 0.0066789243 0.0030820398 0.0063171438 - 229600 0.0059183637 0.0024901584 0.0053568658 - 229700 0.0057982286 0.0019707058 0.0047792228 - 229800 0.0050011252 0.0019480566 0.0043704766 - 229900 0.004321825 0.0024300528 0.0045234368 - 230000 0.0036508331 0.0025123539 0.0042807262 - 230100 0.005509942 0.0022644247 0.0049333029 - 230200 0.0043507952 0.0026559428 0.0047633593 - 230300 0.0057676122 0.0029358721 0.0057295593 - 230400 0.0048036056 0.0029227902 0.0052495366 - 230500 0.0036636385 0.0028767116 0.0046512865 - 230600 0.0054154284 0.0028489494 0.0054720476 - 230700 0.0045368166 0.0029584635 0.0051559841 - 230800 0.0045140404 0.0031217297 0.005308218 - 230900 0.0043387024 0.0028636045 0.0049651635 - 231000 0.0050769646 0.0027490438 0.0052081986 - 231100 0.0059429853 0.0028782857 0.0057569192 - 231200 0.0053044903 0.0032167657 0.0057861281 - 231300 0.0050297408 0.0027882783 0.005224559 - 231400 0.0045738539 0.0026328267 0.0048482872 - 231500 0.0046681392 0.0027775309 0.0050386608 - 231600 0.0052148423 0.0025689982 0.0050949375 - 231700 0.0043153243 0.0023895363 0.0044797715 - 231800 0.0061385936 0.0023294802 0.0053028615 - 231900 0.0049635039 0.0025419727 0.0049461699 - 232000 0.004241066 0.0026458287 0.0047000951 - 232100 0.0045435424 0.0023174664 0.0045182448 - 232200 0.0051189457 0.002062294 0.0045417833 - 232300 0.0047419469 0.0022054825 0.004502363 - 232400 0.00431206 0.0024493511 0.0045380051 - 232500 0.0056251612 0.0022659696 0.0049906571 - 232600 0.0052658156 0.0030317167 0.0055823461 - 232700 0.0046908845 0.0029861642 0.0052583113 - 232800 0.0055743866 0.0024753 0.0051753935 - 232900 0.0066765767 0.0026818058 0.0059157726 - 233000 0.0062234094 0.0029064813 0.0059209452 - 233100 0.0070658898 0.0029850791 0.0064076194 - 233200 0.0052167812 0.0032092181 0.0057360965 - 233300 0.0060124385 0.003310662 0.0062229369 - 233400 0.0063823996 0.002877688 0.0059691628 - 233500 0.0060331803 0.0025431953 0.005465517 - 233600 0.0063644023 0.0025974016 0.005680159 - 233700 0.0051628902 0.0027301284 0.0052309033 - 233800 0.0053145861 0.0027527723 0.0053270249 - 233900 0.0043206694 0.0029547987 0.0050476229 - 234000 0.0059020228 0.0027340506 0.0055928429 - 234100 0.0050062994 0.0022053905 0.0046303167 - 234200 0.0078100793 0.0017037514 0.0054867586 - 234300 0.0046161667 0.0019596835 0.0041956393 - 234400 0.0050944878 0.0018116463 0.0042792888 - 234500 0.0042634506 0.0023415788 0.0044066877 - 234600 0.00428626 0.0028626135 0.0049387706 - 234700 0.004968459 0.0027870733 0.0051936706 - 234800 0.0051382846 0.0022763257 0.0047651824 - 234900 0.0045315332 0.0020101406 0.004205102 - 235000 0.004975662 0.001865673 0.0042757593 - 235100 0.0043909004 0.0017625098 0.0038893522 - 235200 0.0051800331 0.0020328034 0.0045418819 - 235300 0.0032674907 0.002124785 0.0037074758 - 235400 0.0055269996 0.0017186312 0.0043957717 - 235500 0.0057467803 0.0019456791 0.0047292758 - 235600 0.0045077765 0.0021374404 0.0043208947 - 235700 0.0042028378 0.0018902358 0.0039259853 - 235800 0.005099313 0.0020037983 0.004473778 - 235900 0.0033529963 0.0025725767 0.0041966843 - 236000 0.0053995268 0.0023464522 0.004961848 - 236100 0.0045012156 0.0021930247 0.0043733011 - 236200 0.0049091554 0.0024386405 0.0048165126 - 236300 0.0069653901 0.0021055867 0.0054794475 - 236400 0.0047438608 0.002191105 0.0044889125 - 236500 0.0051546019 0.0022057965 0.0047025568 - 236600 0.0065103421 0.0025948815 0.0057483284 - 236700 0.0053195594 0.0024629027 0.0050395642 - 236800 0.0052766115 0.0020286706 0.0045845293 - 236900 0.0035092625 0.0021947349 0.0038945339 - 237000 0.0041926683 0.0024914111 0.0045222349 - 237100 0.0044278678 0.0020756898 0.0042204383 - 237200 0.0038339831 0.0019751766 0.0038322622 - 237300 0.0061213563 0.0017586027 0.0047236346 - 237400 0.0048298873 0.0022858627 0.0046253394 - 237500 0.0059646373 0.0021850835 0.0050742047 - 237600 0.0055278003 0.0022226724 0.0049002007 - 237700 0.0051456295 0.0024101967 0.004902611 - 237800 0.0050009637 0.0026858219 0.0051081637 - 237900 0.0071672981 0.0028339163 0.0063055763 - 238000 0.005171969 0.0034742749 0.0059794474 - 238100 0.0052052185 0.0028177443 0.0053390221 - 238200 0.0072680303 0.0021368642 0.0056573163 - 238300 0.0050799934 0.0020391314 0.0044997532 - 238400 0.005749211 0.0024366369 0.005221411 - 238500 0.0049573153 0.0025454828 0.0049466824 - 238600 0.0057230289 0.0020965603 0.0048686525 - 238700 0.0040923544 0.00186858 0.0038508142 - 238800 0.004060711 0.0019959986 0.0039629055 - 238900 0.0033652206 0.0020618457 0.0036918744 - 239000 0.0052277575 0.0019478561 0.0044800512 - 239100 0.0052226557 0.001803707 0.0043334309 - 239200 0.0047376558 0.0020792031 0.0043740051 - 239300 0.0042251937 0.0022198789 0.0042664571 - 239400 0.0057153848 0.0017859459 0.0045543354 - 239500 0.0046256172 0.0015505472 0.0037910806 - 239600 0.0056163318 0.0018025965 0.0045230072 - 239700 0.0036285918 0.0021637379 0.0039213371 - 239800 0.0049236661 0.0019910547 0.0043759554 - 239900 0.0058635086 0.0018882717 0.0047284087 - 240000 0.0066624837 0.0019866379 0.0052137784 - 240100 0.0034821625 0.0022488416 0.003935514 - 240200 0.004819533 0.0018478152 0.0041822765 - 240300 0.0057981808 0.0021402994 0.0049487932 - 240400 0.0059115361 0.0026527898 0.0055161901 - 240500 0.0069781136 0.0030914393 0.006471463 - 240600 0.0084656388 0.0029081066 0.0070086504 - 240700 0.0047583135 0.0024661669 0.004770975 - 240800 0.0045821282 0.0021581271 0.0043775955 - 240900 0.0055760107 0.0020904089 0.004791289 - 241000 0.0041513608 0.0024897069 0.0045005223 - 241100 0.0052704366 0.0027482605 0.0053011282 - 241200 0.0044913521 0.0026331314 0.0048086301 - 241300 0.0056699947 0.002370938 0.0051173416 - 241400 0.0033328361 0.0019750094 0.0035893519 - 241500 0.0046973668 0.0020117941 0.0042870812 - 241600 0.005138729 0.0022091038 0.0046981757 - 241700 0.0059157493 0.0019198655 0.0047853066 - 241800 0.0052186784 0.0019003946 0.004428192 - 241900 0.0053083921 0.0020270629 0.0045983153 - 242000 0.0045613929 0.0017495958 0.0039590204 - 242100 0.0053975892 0.0017730026 0.0043874599 - 242200 0.0058277191 0.0020860266 0.0049088281 - 242300 0.005049181 0.0022593641 0.0047050612 - 242400 0.0048413414 0.0024018051 0.0047468299 - 242500 0.0052376124 0.0026273034 0.0051642719 - 242600 0.0060061037 0.0026127499 0.0055219564 - 242700 0.0059299632 0.0025155919 0.0053879178 - 242800 0.0054485027 0.0024640599 0.0051031784 - 242900 0.0047623829 0.0022967118 0.004603491 - 243000 0.0063633347 0.0025207717 0.0056030119 - 243100 0.0045125438 0.0027099903 0.0048957537 - 243200 0.0048052365 0.0027052507 0.0050327871 - 243300 0.0059757193 0.0024615976 0.0053560866 - 243400 0.0061589753 0.0022001475 0.0051834012 - 243500 0.0047142979 0.0021799774 0.0044634655 - 243600 0.0047056913 0.0022800163 0.0045593356 - 243700 0.0059142249 0.0020880174 0.0049527201 - 243800 0.0064136136 0.0020587049 0.005165299 - 243900 0.0048816043 0.0024468295 0.0048113566 - 244000 0.0048074604 0.0033398968 0.0056685104 - 244100 0.0046559031 0.003248713 0.0055039161 - 244200 0.0055436955 0.0027289447 0.0054141722 - 244300 0.0070264054 0.0024818683 0.0058852834 - 244400 0.0051233199 0.0031479758 0.0056295838 - 244500 0.0056598048 0.0031698625 0.0059113305 - 244600 0.0057580601 0.0025725437 0.0053616041 - 244700 0.0049095636 0.0025240111 0.0049020809 - 244800 0.0057913166 0.0025613171 0.0053664861 - 244900 0.0041071411 0.0026002993 0.0045896957 - 245000 0.0046756988 0.0024115673 0.0046763589 - 245100 0.0056179717 0.0025698964 0.0052911014 - 245200 0.0034182365 0.0022096604 0.0038653687 - 245300 0.0046988398 0.002179747 0.0044557475 - 245400 0.0049488171 0.0022804486 0.0046775318 - 245500 0.0041323873 0.0028051411 0.0048067662 - 245600 0.0046980622 0.0031284548 0.0054040787 - 245700 0.0056452324 0.0031059223 0.0058403318 - 245800 0.0054631839 0.0029054784 0.0055517081 - 245900 0.0070675091 0.0025991726 0.0060224973 - 246000 0.0045481252 0.002713764 0.0049167622 - 246100 0.0054761255 0.0028389041 0.0054914024 - 246200 0.0044324429 0.0029082778 0.0050552424 - 246300 0.0040348864 0.0025527813 0.0045071794 - 246400 0.0056796243 0.0029614693 0.0057125373 - 246500 0.0055188937 0.0036872414 0.0063604556 - 246600 0.0055529288 0.0035214136 0.0062111135 - 246700 0.0047160145 0.0029122135 0.005196533 - 246800 0.00594989 0.0029536689 0.0058356469 - 246900 0.007630909 0.0027956558 0.0064918773 - 247000 0.0054893054 0.0034634935 0.0061223759 - 247100 0.0061033789 0.0031795788 0.006135903 - 247200 0.0072617431 0.0028361746 0.0063535815 - 247300 0.006263785 0.0022991135 0.0053331344 - 247400 0.0038192951 0.0021797875 0.0040297586 - 247500 0.0055273506 0.0022985558 0.0049758662 - 247600 0.0036791679 0.002800514 0.004582611 - 247700 0.004826145 0.0026802853 0.0050179492 - 247800 0.006046772 0.002848815 0.0057777202 - 247900 0.004601667 0.0029376211 0.0051665536 - 248000 0.0046772133 0.0026812409 0.0049467661 - 248100 0.0046937623 0.0026567352 0.0049302763 - 248200 0.0051140555 0.0026949542 0.0051720748 - 248300 0.0032589626 0.0026990045 0.0042775645 - 248400 0.0042668957 0.0023476537 0.0044144313 - 248500 0.0067954071 0.0022232043 0.0055147296 - 248600 0.004832643 0.0025040369 0.0048448484 - 248700 0.0036562785 0.002936838 0.0047078479 - 248800 0.0044334735 0.0026584576 0.0048059214 - 248900 0.0038348191 0.0020077313 0.0038652218 - 249000 0.0051633196 0.001938844 0.0044398269 - 249100 0.0044188972 0.0022355097 0.004375913 - 249200 0.0059340369 0.002308091 0.0051823901 - 249300 0.0068290885 0.0022267603 0.0055346001 - 249400 0.0076446534 0.00282856 0.006531439 - 249500 0.0055814904 0.003103097 0.0058066314 - 249600 0.0040654125 0.0031745258 0.00514371 - 249700 0.004792743 0.0025014055 0.0048228904 - 249800 0.004687433 0.0018758624 0.0041463378 - 249900 0.0062360216 0.0016514885 0.0046720614 - 250000 0.003840373 0.0018880808 0.0037482615 - 250100 0.0040635215 0.0022489819 0.0042172502 - 250200 0.0054691913 0.0023548199 0.0050039594 - 250300 0.0055497907 0.002583402 0.0052715819 - 250400 0.0066972725 0.0023764237 0.0056204151 - 250500 0.0039151024 0.0026815474 0.0045779251 - 250600 0.0047727283 0.0025481241 0.0048599144 - 250700 0.0048081972 0.0024981607 0.0048271312 - 250800 0.0054004036 0.002419393 0.0050352135 - 250900 0.0061612216 0.0023458556 0.0053301974 - 251000 0.0047173707 0.0024238338 0.0047088102 - 251100 0.0048779337 0.0022743677 0.0046371168 - 251200 0.003745594 0.002236078 0.0040503501 - 251300 0.0043768581 0.0020309988 0.0041510394 - 251400 0.00665493 0.0019439845 0.0051674662 - 251500 0.0051692409 0.0021034041 0.0046072551 - 251600 0.0055274991 0.0023233535 0.0050007359 - 251700 0.0056784684 0.0022824742 0.0050329824 - 251800 0.0041177387 0.0026288709 0.0046234006 - 251900 0.0050046679 0.002329221 0.0047533571 - 252000 0.0049046167 0.0022239012 0.0045995749 - 252100 0.0034935569 0.0024088088 0.0041010004 - 252200 0.0059590747 0.0024981145 0.0053845413 - 252300 0.0058021477 0.0026390515 0.0054494668 - 252400 0.0063264705 0.0021374718 0.0052018559 - 252500 0.0061055523 0.0020083589 0.0049657358 - 252600 0.0052691677 0.0021870556 0.0047393087 - 252700 0.0052619769 0.0016690207 0.0042177907 - 252800 0.0055049973 0.0017162665 0.0043827495 - 252900 0.0047765533 0.0026056401 0.0049192831 - 253000 0.0043137988 0.002672107 0.0047616033 - 253100 0.0063097391 0.0023078445 0.0053641244 - 253200 0.0051381574 0.0029118366 0.0054006316 - 253300 0.0049068724 0.0029160435 0.0052928098 - 253400 0.0052657429 0.0027378798 0.0052884741 - 253500 0.0064790318 0.0028014598 0.0059397408 - 253600 0.0063917984 0.0027995179 0.0058955452 - 253700 0.0055354347 0.0035172324 0.0061984586 - 253800 0.0057571901 0.0028000939 0.0055887328 - 253900 0.0045623111 0.002337468 0.0045473375 - 254000 0.0057972895 0.0018763191 0.0046843813 - 254100 0.0046534865 0.0019720253 0.0042260578 - 254200 0.0062063142 0.0019539618 0.0049601453 - 254300 0.0065166813 0.0021526593 0.0053091768 - 254400 0.0052643329 0.0025896358 0.005139547 - 254500 0.0045225071 0.0026638556 0.004854445 - 254600 0.0031138976 0.0026644157 0.0041727098 - 254700 0.0059205565 0.0024847408 0.0053525104 - 254800 0.0046780353 0.002174108 0.0044400313 - 254900 0.0035450308 0.0021388027 0.0038559269 - 255000 0.0045117963 0.0018425622 0.0040279636 - 255100 0.0055112361 0.0018357121 0.004505217 - 255200 0.005448322 0.0020169782 0.0046560092 - 255300 0.0039385542 0.0021829323 0.0040906695 - 255400 0.0055187856 0.0024696756 0.0051428374 - 255500 0.0038962748 0.0025246636 0.0044119217 - 255600 0.004967245 0.0019611141 0.0043671234 - 255700 0.0070388522 0.0019371036 0.0053465476 - 255800 0.0046384403 0.0026255333 0.0048722778 - 255900 0.0048755865 0.0025144246 0.0048760369 - 256000 0.0038340659 0.0027963864 0.0046535121 - 256100 0.0051841428 0.0023232545 0.0048343237 - 256200 0.0056245827 0.0019116833 0.0046360906 - 256300 0.0045934747 0.0021885543 0.0044135186 - 256400 0.0056472024 0.0023536517 0.0050890153 - 256500 0.006807783 0.0026539258 0.0059514457 - 256600 0.0047411602 0.0033621027 0.0056586021 - 256700 0.0057565452 0.002670742 0.0054590686 - 256800 0.0059444935 0.0022357305 0.0051150945 - 256900 0.0052931747 0.0020825413 0.0046464228 - 257000 0.0040115329 0.0018494872 0.0037925734 - 257100 0.0043291471 0.0017512208 0.0038481514 - 257200 0.005263762 0.0015998007 0.0041494354 - 257300 0.0033568335 0.001849402 0.0034753682 - 257400 0.0061843764 0.0016072137 0.004602771 - 257500 0.0047233481 0.0016758338 0.0039637056 - 257600 0.0053182 0.0017493486 0.0043253517 - 257700 0.0058757336 0.0014883028 0.0043343613 - 257800 0.0072035285 0.0016602537 0.0051494628 - 257900 0.0081186197 0.0023863179 0.0063187742 - 258000 0.0047178719 0.002478951 0.0047641702 - 258100 0.0044518041 0.0019618207 0.0041181633 - 258200 0.0056257992 0.0017697468 0.0044947433 - 258300 0.0068307063 0.001612456 0.0049210793 - 258400 0.0050706728 0.001572694 0.0040288012 - 258500 0.0052675117 0.0017788725 0.0043303235 - 258600 0.0041691913 0.0019043594 0.0039238114 - 258700 0.0049803928 0.0016351828 0.0040475606 - 258800 0.0050754091 0.0019049334 0.0043633346 - 258900 0.0046983234 0.0019595429 0.0042352933 - 259000 0.0037413885 0.0017440124 0.0035562475 - 259100 0.0047359317 0.0016126095 0.0039065765 - 259200 0.0042083283 0.0013044754 0.0033428844 - 259300 0.0049319722 0.0015333001 0.0039222241 - 259400 0.0052157592 0.0019103726 0.004436756 - 259500 0.0053248415 0.0022973329 0.004876553 - 259600 0.0035088334 0.0025321158 0.0042317069 - 259700 0.0038089627 0.0024491585 0.0042941247 - 259800 0.0065161276 0.0021674025 0.0053236518 - 259900 0.0054174005 0.002420808 0.0050448614 - 260000 0.0053639465 0.0020315595 0.004629721 - 260100 0.0056403216 0.001915745 0.0046477758 - 260200 0.0060100441 0.0018028914 0.0047140065 - 260300 0.0070289878 0.0013973018 0.0048019677 - 260400 0.0046458117 0.0015503525 0.0038006675 - 260500 0.0046196673 0.0018023303 0.0040399817 - 260600 0.0051224754 0.0020177918 0.0044989908 - 260700 0.0044753941 0.0024621841 0.0046299531 - 260800 0.0038536982 0.002254166 0.004120801 - 260900 0.0064126039 0.0021229393 0.0052290443 - 261000 0.0059060211 0.002330416 0.005191145 - 261100 0.0043724941 0.002545062 0.0046629888 - 261200 0.0042461847 0.0023467461 0.0044034918 - 261300 0.0035961487 0.0019028116 0.0036446962 - 261400 0.004368446 0.0017323522 0.0038483183 - 261500 0.0045048792 0.0018762463 0.0040582971 - 261600 0.0047085558 0.0024625933 0.0047433 - 261700 0.0049114324 0.0028608159 0.005239791 - 261800 0.0053085783 0.002588982 0.0051603246 - 261900 0.0069671853 0.0023205412 0.0056952716 - 262000 0.0054254569 0.0023912166 0.0050191722 - 262100 0.0045823603 0.0025509483 0.004770529 - 262200 0.0053517612 0.0020984567 0.0046907161 - 262300 0.0049300848 0.002140889 0.0045288988 - 262400 0.0049967998 0.0026679139 0.0050882389 - 262500 0.0050594767 0.0024939854 0.0049446694 - 262600 0.0047555061 0.00248758 0.0047910282 - 262700 0.0052783707 0.0022081259 0.0047648366 - 262800 0.0070256528 0.0016249947 0.0050280453 - 262900 0.0062812456 0.0017980906 0.0048405689 - 263000 0.0052501371 0.0025614117 0.0051044469 - 263100 0.0052752081 0.0028004919 0.0053556708 - 263200 0.0037143549 0.003007998 0.0048071386 - 263300 0.004653718 0.0027045379 0.0049586825 - 263400 0.0039925604 0.0027309094 0.0046648059 - 263500 0.0058124768 0.0029632682 0.0057786867 - 263600 0.0063280629 0.0023086314 0.0053737869 - 263700 0.004888505 0.0020311736 0.0043990432 - 263800 0.0062590033 0.0019924896 0.0050241943 - 263900 0.006010035 0.0029262332 0.0058373439 - 264000 0.0060439634 0.0027627943 0.0056903391 - 264100 0.0058323953 0.0021963594 0.0050214258 - 264200 0.0036784955 0.0020079337 0.0037897049 - 264300 0.0053164691 0.0020363197 0.0046114844 - 264400 0.0049534119 0.0023598538 0.0047591627 - 264500 0.0040397091 0.0025499337 0.0045066678 - 264600 0.0068337725 0.0022580577 0.0055681663 - 264700 0.0050256089 0.0021739529 0.0046082322 - 264800 0.0061090579 0.0024530614 0.0054121363 - 264900 0.0058760972 0.0022871067 0.0051333413 - 265000 0.005269257 0.0025112506 0.0050635469 - 265100 0.0052786475 0.0026716069 0.0052284517 - 265200 0.0032038901 0.0024457031 0.0039975874 - 265300 0.0036163004 0.0027541053 0.0045057508 - 265400 0.0053942386 0.003153057 0.0057658913 - 265500 0.0068235888 0.0027737242 0.0060789 - 265600 0.0044997171 0.0027788114 0.0049583619 - 265700 0.0058253902 0.0026537882 0.0054754616 - 265800 0.0044442585 0.0027484697 0.0049011575 - 265900 0.0048903982 0.0024715873 0.004840374 - 266000 0.0050069657 0.0020938724 0.0045191214 - 266100 0.0047747954 0.0019140341 0.0042268257 - 266200 0.0048106546 0.0021224453 0.0044526061 - 266300 0.0049650657 0.0021317683 0.004536722 - 266400 0.0043768411 0.0021909305 0.0043109629 - 266500 0.0058784635 0.002003797 0.0048511778 - 266600 0.0045040309 0.0021315267 0.0043131667 - 266700 0.0054342663 0.0022362437 0.0048684664 - 266800 0.0044080591 0.0023166886 0.0044518422 - 266900 0.0050127374 0.002206361 0.0046344057 - 267000 0.0064913981 0.0020625532 0.0052068242 - 267100 0.005103823 0.0021572166 0.0046293809 - 267200 0.0061272682 0.0019306543 0.0048985499 - 267300 0.0049305577 0.001825894 0.0042141328 - 267400 0.0058503107 0.0017260539 0.0045597982 - 267500 0.0052797997 0.0022498457 0.0048072487 - 267600 0.0050441061 0.0028620063 0.0053052452 - 267700 0.0057612156 0.0030081609 0.0057987498 - 267800 0.0054779221 0.002698006 0.0053513745 - 267900 0.0079551644 0.002574791 0.0064280737 - 268000 0.0032258988 0.0034479065 0.0050104512 - 268100 0.0079095856 0.0029698567 0.0068010622 - 268200 0.0062905401 0.0032786888 0.0063256692 - 268300 0.0062639493 0.0035496172 0.0065837176 - 268400 0.0045671719 0.0033094009 0.0055216248 - 268500 0.0040976821 0.002966342 0.0049511568 - 268600 0.0047931753 0.0025829905 0.0049046848 - 268700 0.0048779032 0.0021015423 0.0044642766 - 268800 0.0050637887 0.0021027144 0.004555487 - 268900 0.0056090882 0.0024495757 0.0051664778 - 269000 0.0039906473 0.0024452565 0.0043782263 - 269100 0.0052418125 0.0027980797 0.0053370826 - 269200 0.0057434724 0.0021612499 0.0049432443 - 269300 0.005216396 0.0020249492 0.0045516411 - 269400 0.0048396659 0.0025649611 0.0049091743 - 269500 0.0054167538 0.0031129076 0.0057366478 - 269600 0.004820009 0.0032376547 0.0055723466 - 269700 0.0070270559 0.0026947011 0.0060984313 - 269800 0.0047443209 0.0025550696 0.0048531001 - 269900 0.0045481729 0.0024033357 0.004606357 - 270000 0.0049086693 0.002049567 0.0044272037 - 270100 0.0058908276 0.0022962981 0.0051496677 - 270200 0.0036067232 0.0026432303 0.0043902368 - 270300 0.0057928784 0.0021974127 0.0050033381 - 270400 0.005053916 0.0021177841 0.0045657746 - 270500 0.0048752186 0.0022275082 0.0045889422 - 270600 0.0032699991 0.0024956807 0.0040795865 - 270700 0.0052927934 0.0025353381 0.0050990349 - 270800 0.0054887423 0.0023931662 0.0050517757 - 270900 0.0058302123 0.0020122873 0.0048362964 - 271000 0.005731027 0.00224232 0.0050182862 - 271100 0.0034969976 0.0023273249 0.0040211832 - 271200 0.0042467378 0.0019570577 0.0040140713 - 271300 0.0031121141 0.0017977344 0.0033051647 - 271400 0.0066475516 0.0016530553 0.0048729631 - 271500 0.0051375937 0.0017690675 0.0042575895 - 271600 0.0041799961 0.0017029927 0.0037276783 - 271700 0.006194718 0.0014154489 0.0044160154 - 271800 0.0047177134 0.0017953302 0.0040804727 - 271900 0.0055799394 0.0019350397 0.0046378228 - 272000 0.0062912494 0.0018971412 0.0049444651 - 272100 0.0035682792 0.0022253613 0.0039537465 - 272200 0.0034853716 0.0020921557 0.0037803825 - 272300 0.0036736845 0.0022032473 0.0039826882 - 272400 0.0050344634 0.0019178184 0.0043563866 - 272500 0.0052441209 0.0019685079 0.0045086289 - 272600 0.0047231838 0.0021900195 0.0044778116 - 272700 0.0058294404 0.0020799349 0.00490357 - 272800 0.0043272736 0.0020678163 0.0041638395 - 272900 0.0038811321 0.002426714 0.0043066374 - 273000 0.005139986 0.002649716 0.0051393967 - 273100 0.0053415066 0.0026965721 0.0052838644 - 273200 0.0063481812 0.0028196737 0.005894574 - 273300 0.0047283376 0.0025522987 0.0048425872 - 273400 0.005696289 0.0026374024 0.0053965423 - 273500 0.0042219208 0.0022958007 0.0043407936 - 273600 0.0036241646 0.0022526091 0.0040080638 - 273700 0.0048816003 0.0021735548 0.0045380799 - 273800 0.0057076251 0.002618648 0.0053832789 - 273900 0.0063742635 0.002580039 0.0056675729 - 274000 0.0056345699 0.0026608727 0.0053901175 - 274100 0.004416718 0.0028973893 0.0050367371 - 274200 0.0057477014 0.0031518095 0.0059358523 - 274300 0.006004147 0.0036299621 0.0065382208 - 274400 0.0063051377 0.0031482632 0.0062023143 - 274500 0.0059790665 0.0027668806 0.0056629909 - 274600 0.0057493674 0.0027634284 0.0055482783 - 274700 0.0072968155 0.0029853977 0.0065197927 - 274800 0.005198957 0.0029540255 0.0054722703 - 274900 0.0050155325 0.0025202834 0.0049496819 - 275000 0.0043899364 0.0026373259 0.0047637014 - 275100 0.0053222175 0.0024349247 0.0050128738 - 275200 0.0040656324 0.0022086715 0.0041779622 - 275300 0.0048220551 0.0020300752 0.0043657581 - 275400 0.0035440769 0.0017625278 0.00347919 - 275500 0.0039093294 0.0017268248 0.0036204062 - 275600 0.0056235296 0.0020717263 0.0047956234 - 275700 0.0056060804 0.0024730979 0.0051885431 - 275800 0.0049264396 0.0023195304 0.0047057746 - 275900 0.0049825251 0.0023696041 0.0047830147 - 276000 0.0054700564 0.0026505187 0.0053000773 - 276100 0.0044169178 0.002485561 0.0046250056 - 276200 0.0055586222 0.0023222053 0.0050146629 - 276300 0.0053705712 0.0023236344 0.0049250048 - 276400 0.0060547452 0.0019992997 0.0049320669 - 276500 0.0046606582 0.0023984461 0.0046559524 - 276600 0.0060511553 0.0026341288 0.0055651571 - 276700 0.0039796743 0.0027619682 0.0046896229 - 276800 0.0054915481 0.0023263863 0.0049863549 - 276900 0.0048440017 0.0023136712 0.0046599846 - 277000 0.0044227366 0.0022648297 0.0044070928 - 277100 0.0038632582 0.0023099025 0.0041811682 - 277200 0.0038444967 0.0021885764 0.0040507545 - 277300 0.0055892187 0.00200039 0.0047076679 - 277400 0.0039236785 0.0020672236 0.0039677554 - 277500 0.0034056352 0.0020528058 0.0037024104 - 277600 0.0036934351 0.00213724 0.0039262476 - 277700 0.0046906213 0.0021499904 0.0044220102 - 277800 0.00609252 0.0018436492 0.0047947136 - 277900 0.0049513435 0.0014812055 0.0038795125 - 278000 0.003047044 0.0015995049 0.0030754169 - 278100 0.0034529396 0.0022277632 0.0039002809 - 278200 0.0043306675 0.0022844394 0.0043821065 - 278300 0.0054848878 0.0022335678 0.0048903103 - 278400 0.0057710311 0.0021207813 0.0049161245 - 278500 0.0039414831 0.0022412189 0.0041503748 - 278600 0.0034676854 0.0028701517 0.0045498118 - 278700 0.0062396434 0.0026863731 0.0057087004 - 278800 0.0057227613 0.0024608786 0.0052328412 - 278900 0.0051820952 0.0026300063 0.0051400837 - 279000 0.005976977 0.0026068986 0.0055019968 - 279100 0.0044933695 0.002436609 0.0046130849 - 279200 0.006899132 0.0024907889 0.0058325559 - 279300 0.003761944 0.0026302171 0.0044524087 - 279400 0.0043545816 0.0024801557 0.0045894062 - 279500 0.0053597518 0.0027179644 0.0053140942 - 279600 0.0050414284 0.0027654488 0.0052073906 - 279700 0.0042915111 0.002860104 0.0049388047 - 279800 0.004025961 0.0032152861 0.005165361 - 279900 0.0047655282 0.0030243479 0.0053326506 - 280000 0.0054075633 0.0028544309 0.0054737194 - 280100 0.0044873034 0.0026352172 0.0048087548 - 280200 0.0048953564 0.0022515318 0.0046227201 - 280300 0.00460641 0.0022037379 0.0044349677 - 280400 0.0050615033 0.0024758118 0.0049274775 - 280500 0.0043289014 0.001877696 0.0039745076 - 280600 0.0048357445 0.0017671946 0.0041095083 - 280700 0.0033548259 0.0017203931 0.0033453869 - 280800 0.0046363266 0.0018056278 0.0040513485 - 280900 0.0053820712 0.0019477469 0.0045546877 - 281000 0.0065609301 0.002316338 0.0054942886 - 281100 0.0055500429 0.0019422518 0.0046305538 - 281200 0.003664777 0.0018951105 0.0036702368 - 281300 0.0062900219 0.0021375778 0.0051843071 - 281400 0.004712892 0.00246706 0.0047498671 - 281500 0.0034911336 0.0023968133 0.0040878311 - 281600 0.0061169372 0.0018671526 0.0048300441 - 281700 0.0046924866 0.0024158831 0.0046888063 - 281800 0.0045594828 0.0025793598 0.0047878592 - 281900 0.0044891123 0.0023825568 0.0045569706 - 282000 0.0047646967 0.0021679185 0.0044758185 - 282100 0.0054799134 0.0020904725 0.0047448055 - 282200 0.0049555397 0.0017257586 0.0041260981 - 282300 0.0048169727 0.0015553753 0.0038885965 - 282400 0.0038647632 0.0014253841 0.0032973788 - 282500 0.0062442579 0.0013567627 0.0043813251 - 282600 0.0035521143 0.0016501699 0.0033707253 - 282700 0.0060996729 0.0017251984 0.0046797275 - 282800 0.003993268 0.0021202349 0.0040544741 - 282900 0.005003996 0.0017605337 0.0041843442 - 283000 0.0047445357 0.0017664565 0.004064591 - 283100 0.0050042115 0.0022662518 0.0046901667 - 283200 0.0041964413 0.0024572061 0.0044898573 - 283300 0.0043024732 0.0026301756 0.0047141861 - 283400 0.0071269919 0.0026617283 0.006113865 - 283500 0.0061461533 0.0023906431 0.0053676861 - 283600 0.0038239749 0.0024142 0.0042664378 - 283700 0.0052982747 0.0023992978 0.0049656496 - 283800 0.0060131159 0.0024285987 0.0053412017 - 283900 0.0046165231 0.0023469422 0.0045830706 - 284000 0.0040749037 0.0024865385 0.00446032 - 284100 0.0051019896 0.0025776224 0.0050488986 - 284200 0.0051827365 0.00292629 0.005436678 - 284300 0.0042477718 0.0033523498 0.0054098642 - 284400 0.0040148339 0.0026454072 0.0045900924 - 284500 0.005786173 0.001843288 0.0046459655 - 284600 0.0045501146 0.0018996266 0.0041035884 - 284700 0.0034149759 0.0021404735 0.0037946024 - 284800 0.0060329469 0.0019663474 0.0048885561 - 284900 0.0060143164 0.0023801317 0.0052933162 - 285000 0.0051160004 0.0029107115 0.0053887742 - 285100 0.0051120351 0.0024212153 0.0048973573 - 285200 0.0046770328 0.0019142654 0.0041797032 - 285300 0.0061166259 0.0014248263 0.0043875669 - 285400 0.0042472827 0.0019623021 0.0040195796 - 285500 0.003554286 0.0019961642 0.0037177714 - 285600 0.0052552881 0.0016050932 0.0041506234 - 285700 0.0061879424 0.0017956191 0.0047929037 - 285800 0.0056271643 0.0022742261 0.0049998838 - 285900 0.0049265381 0.0023623822 0.0047486741 - 286000 0.0045074912 0.0024537117 0.0046370277 - 286100 0.0064203719 0.0020527594 0.005162627 - 286200 0.0051812531 0.0024050303 0.0049146998 - 286300 0.0052708805 0.0023959674 0.0049490501 - 286400 0.0051490525 0.0021706606 0.0046647329 - 286500 0.0049610143 0.0021289454 0.0045319367 - 286600 0.0050519506 0.0028283491 0.0052753877 - 286700 0.0037305106 0.0032208086 0.0050277747 - 286800 0.0061379725 0.0031427698 0.0061158502 - 286900 0.0055056139 0.0030135492 0.0056803309 - 287000 0.0057428556 0.002687509 0.0054692047 - 287100 0.005668155 0.0026121588 0.0053576713 - 287200 0.0056442236 0.00260797 0.0053418908 - 287300 0.0055024462 0.0026422113 0.0053074587 - 287400 0.0075779213 0.0023957023 0.0060662579 - 287500 0.0047342733 0.0022842035 0.0045773671 - 287600 0.0068547693 0.0021751277 0.0054954066 - 287700 0.0054653308 0.0025214307 0.0051687003 - 287800 0.0049848633 0.0028654939 0.005280037 - 287900 0.0042434717 0.0028334978 0.0048889294 - 288000 0.0056501839 0.0023412273 0.0050780352 - 288100 0.0037990131 0.0024017251 0.004241872 - 288200 0.0057313819 0.0023093976 0.0050855356 - 288300 0.0046235434 0.0020671971 0.0043067259 - 288400 0.0048044071 0.0019254613 0.004252596 - 288500 0.0053265656 0.0021301946 0.0047102498 - 288600 0.0049862582 0.002333241 0.0047484599 - 288700 0.0056025701 0.0025692856 0.0052830304 - 288800 0.0042550719 0.0023849649 0.0044460153 - 288900 0.0062047048 0.0018742869 0.0048796908 - 289000 0.0049504005 0.0018319234 0.0042297736 - 289100 0.0042249641 0.0019319721 0.003978439 - 289200 0.0054274524 0.0020533005 0.0046822227 - 289300 0.0049626652 0.0020780142 0.0044818051 - 289400 0.0049047062 0.0022827933 0.0046585104 - 289500 0.0053574873 0.0022592846 0.0048543175 - 289600 0.0037800207 0.0024930435 0.0043239911 - 289700 0.0036875602 0.0024109536 0.0041971155 - 289800 0.0034075936 0.0024153023 0.0040658554 - 289900 0.0049780497 0.0022573917 0.0046686345 - 290000 0.0051216526 0.001905486 0.0043862864 - 290100 0.0038758829 0.0021757955 0.0040531762 - 290200 0.0038574497 0.0017233101 0.0035917623 - 290300 0.0043717036 0.0018746528 0.0039921967 - 290400 0.0068083572 0.0016338543 0.0049316523 - 290500 0.0044327986 0.0019991163 0.0041462531 - 290600 0.0056221578 0.0020720494 0.0047952821 - 290700 0.0047315666 0.0020690294 0.004360882 - 290800 0.0072145469 0.0020831747 0.0055777209 - 290900 0.0042575088 0.0024865838 0.0045488146 - 291000 0.0041466948 0.0027040413 0.0047125965 - 291100 0.0058427124 0.0026887315 0.0055187953 - 291200 0.0061456833 0.0028577563 0.0058345717 - 291300 0.0061423461 0.0028322275 0.0058074264 - 291400 0.0047802823 0.0023821023 0.0046975515 - 291500 0.0054344087 0.0020621012 0.0046943929 - 291600 0.0049758333 0.0019609841 0.0043711534 - 291700 0.0041863687 0.0020423122 0.0040700846 - 291800 0.0055801607 0.0023351118 0.0050380021 - 291900 0.0056856988 0.0026243119 0.0053783222 - 292000 0.005754962 0.0027465637 0.0055341234 - 292100 0.0042304984 0.002228974 0.0042781217 - 292200 0.0060096783 0.0020208493 0.0049317873 - 292300 0.0052146218 0.0021279129 0.0046537453 - 292400 0.0062311074 0.0017922221 0.0048104147 - 292500 0.0044781582 0.002050183 0.0042192909 - 292600 0.0058848216 0.0020830024 0.0049334629 - 292700 0.0060493032 0.0020534975 0.0049836288 - 292800 0.0044165524 0.0022990951 0.0044383627 - 292900 0.0058789535 0.0022567444 0.0051043626 - 293000 0.005662544 0.0020769191 0.0048197138 - 293100 0.0072232266 0.0022425996 0.00574135 - 293200 0.0061232458 0.0031284991 0.0060944462 - 293300 0.0059246434 0.0033541553 0.0062239045 - 293400 0.0067097379 0.0029505219 0.0062005512 - 293500 0.0056296657 0.0030218491 0.0057487184 - 293600 0.0039748938 0.0029699761 0.0048953153 - 293700 0.0065484728 0.0026244721 0.0057963886 - 293800 0.0073392563 0.0026925692 0.0062475214 - 293900 0.0057582151 0.0028094831 0.0055986185 - 294000 0.004538544 0.002509564 0.0047079213 - 294100 0.0044047648 0.0022007731 0.0043343311 - 294200 0.0052934666 0.0020390474 0.0046030702 - 294300 0.0061058705 0.0021158672 0.0050733982 - 294400 0.0050344655 0.0021113529 0.0045499222 - 294500 0.0045809326 0.0023376689 0.0045565581 - 294600 0.0054211049 0.0022611612 0.0048870088 - 294700 0.0058076795 0.0020239704 0.0048370652 - 294800 0.0057590055 0.0021965197 0.004986038 - 294900 0.0050513169 0.002200315 0.0046470466 - 295000 0.0049075058 0.0022296147 0.0046066879 - 295100 0.0055401878 0.0024273575 0.0051108859 - 295200 0.00607398 0.002159578 0.0051016621 - 295300 0.0037684568 0.0021293416 0.0039546879 - 295400 0.0043112743 0.0019853384 0.0040736119 - 295500 0.0045270608 0.00226977 0.0044625651 - 295600 0.0047932152 0.0025499174 0.004871631 - 295700 0.00624084 0.0022932062 0.0053161131 - 295800 0.0064115155 0.0019563073 0.0050618852 - 295900 0.0039986193 0.0023714683 0.0043082995 - 296000 0.0045616 0.0024176892 0.0046272142 - 296100 0.0047329649 0.0025202435 0.0048127734 - 296200 0.0073159209 0.0027672246 0.0063108738 - 296300 0.0051610177 0.0028790672 0.0053789351 - 296400 0.0043827003 0.002245762 0.0043686324 - 296500 0.0065197923 0.0022129578 0.0053709822 - 296600 0.0059304012 0.0021762535 0.0050487916 - 296700 0.0062477932 0.0023235058 0.0053497806 - 296800 0.0057577672 0.0026256775 0.005414596 - 296900 0.0052910129 0.0023150716 0.004877906 - 297000 0.0065153992 0.0022116377 0.0053675342 - 297100 0.0049235535 0.0023376145 0.0047224607 - 297200 0.0052307269 0.002447234 0.0049808674 - 297300 0.0043038583 0.0026640542 0.0047487355 - 297400 0.0060021428 0.0027115781 0.0056188661 - 297500 0.0050781134 0.0026797757 0.0051394869 - 297600 0.0063573219 0.0030559718 0.0061352996 - 297700 0.0044253373 0.0029716449 0.0051151677 - 297800 0.006339385 0.0028369719 0.0059076115 - 297900 0.0062965307 0.002624069 0.0056739511 - 298000 0.0038797199 0.0027087948 0.0045880342 - 298100 0.0049882281 0.0023853754 0.0048015484 - 298200 0.0042051452 0.0021808957 0.0042177629 - 298300 0.003786051 0.0021775112 0.0040113796 - 298400 0.0049912473 0.0021294928 0.0045471282 - 298500 0.0047586844 0.0017965245 0.0041015122 - 298600 0.0048716934 0.0017142086 0.0040739351 - 298700 0.0056879465 0.0019625094 0.0047176085 - 298800 0.0052335251 0.0020504705 0.0045854592 - 298900 0.0058194918 0.002044887 0.0048637034 - 299000 0.0048018757 0.0020833163 0.0044092248 - 299100 0.0059772835 0.0018254251 0.0047206718 - 299200 0.0038077208 0.001879495 0.0037238597 - 299300 0.0065616236 0.0019687144 0.0051470008 - 299400 0.0051041607 0.0019767518 0.0044490796 - 299500 0.0064380036 0.0020033074 0.0051217153 - 299600 0.0053702061 0.0019924504 0.004593644 - 299700 0.0065251193 0.0020709074 0.0052315121 - 299800 0.0044270964 0.0020909696 0.0042353445 - 299900 0.0038858323 0.0022098233 0.0040920233 - 300000 0.0051697864 0.0023828084 0.0048869237 - 300100 0.0056852366 0.0026037287 0.0053575151 - 300200 0.005237369 0.0022095344 0.004746385 - 300300 0.0042697415 0.0024767489 0.004544905 - 300400 0.0040226593 0.0023191483 0.0042676239 - 300500 0.0045656996 0.0021236544 0.0043351652 - 300600 0.004428291 0.0022743039 0.0044192574 - 300700 0.0067076301 0.0024061226 0.0056551309 - 300800 0.004711198 0.0024809999 0.0047629864 - 300900 0.0050098608 0.0023185445 0.0047451959 - 301000 0.0046160334 0.0019968755 0.0042327667 - 301100 0.0053764575 0.0017902758 0.0043944974 - 301200 0.0049342316 0.0018952057 0.0042852241 - 301300 0.0050924735 0.0021512481 0.004617915 - 301400 0.0052204774 0.002006928 0.0045355968 - 301500 0.0047082749 0.0017361699 0.0040167406 - 301600 0.0048625692 0.0016964196 0.0040517265 - 301700 0.0043972004 0.0020556723 0.0041855663 - 301800 0.0035864233 0.0020547534 0.0037919271 - 301900 0.0069740594 0.0017763235 0.0051543835 - 302000 0.0030741852 0.0021111307 0.0036001891 - 302100 0.0062654625 0.0023596327 0.0053944661 - 302200 0.0054746563 0.0026259513 0.0052777379 - 302300 0.0054139906 0.0020563704 0.0046787721 - 302400 0.0046312364 0.0022165393 0.0044597945 - 302500 0.0051235109 0.0025393308 0.0050210314 - 302600 0.0042370704 0.0027944635 0.0048467945 - 302700 0.0047036264 0.0024697095 0.0047480286 - 302800 0.0050692922 0.002165856 0.0046212945 - 302900 0.0044198074 0.002720335 0.0048611792 - 303000 0.0049197537 0.0028570571 0.0052400628 - 303100 0.0043388125 0.0025930336 0.0046946459 - 303200 0.0044678415 0.0020970143 0.004261125 - 303300 0.0040236227 0.0017369246 0.0036858668 - 303400 0.0049769434 0.0017071217 0.0041178287 - 303500 0.0049072332 0.0018950275 0.0042719686 - 303600 0.0043772125 0.001995364 0.0041155763 - 303700 0.0043669385 0.0024568834 0.0045721192 - 303800 0.0043307663 0.002545941 0.0046436559 - 303900 0.0042300286 0.0021400475 0.0041889676 - 304000 0.0052738864 0.0015509765 0.0041055152 - 304100 0.0046433498 0.0016978455 0.0039469681 - 304200 0.0037355155 0.0023674443 0.0041768347 - 304300 0.0046679388 0.0022864153 0.0045474481 - 304400 0.0049127508 0.0024410788 0.0048206925 - 304500 0.0049198448 0.0024822241 0.0048652739 - 304600 0.0033705167 0.0021655031 0.0037980972 - 304700 0.0044683088 0.0018748499 0.004039187 - 304800 0.0048398483 0.0017818811 0.0041261826 - 304900 0.0057192778 0.0019196914 0.0046899666 - 305000 0.0054198301 0.0023417641 0.0049669944 - 305100 0.005658651 0.0023636853 0.0051045944 - 305200 0.0064689008 0.0023452214 0.0054785952 - 305300 0.0060902269 0.0026367845 0.0055867382 - 305400 0.0033567927 0.0029501828 0.0045761292 - 305500 0.0042164705 0.0027017896 0.0047441426 - 305600 0.0042503504 0.0026358114 0.0046945749 - 305700 0.0046530992 0.0022386204 0.0044924653 - 305800 0.0045921582 0.0022401021 0.0044644287 - 305900 0.0030666111 0.0025930676 0.0040784574 - 306000 0.0064337535 0.0025821995 0.0056985489 - 306100 0.0044606564 0.002705796 0.0048664264 - 306200 0.0055262061 0.0024500124 0.0051267684 - 306300 0.0058160386 0.0018711082 0.0046882519 - 306400 0.0045778824 0.0019313201 0.0041487319 - 306500 0.0067246156 0.0023495257 0.0056067613 - 306600 0.0043343898 0.0024501064 0.0045495765 - 306700 0.0050596271 0.002031493 0.0044822498 - 306800 0.0052212339 0.0014487258 0.0039777609 - 306900 0.0034556631 0.0016509755 0.0033248123 - 307000 0.0045210562 0.0018402752 0.0040301619 - 307100 0.0040733763 0.002018593 0.0039916347 - 307200 0.0062392431 0.0018685074 0.0048906408 - 307300 0.004717321 0.0023319148 0.0046168672 - 307400 0.0045625533 0.0026460381 0.0048560248 - 307500 0.0065293324 0.0024289333 0.0055915786 - 307600 0.0064661655 0.0020303867 0.0051624356 - 307700 0.0055993079 0.0018244228 0.0045365876 - 307800 0.0064311429 0.0023455802 0.0054606651 - 307900 0.0048806105 0.0027903247 0.0051543705 - 308000 0.0044242805 0.0024212854 0.0045642963 - 308100 0.0044772849 0.0024033528 0.0045720377 - 308200 0.0034400384 0.0026575495 0.0043238181 - 308300 0.0053243721 0.0025601048 0.0051390976 - 308400 0.0051437615 0.0026309935 0.0051225029 - 308500 0.0049764554 0.0025213035 0.0049317741 - 308600 0.0055129734 0.0022898018 0.0049601483 - 308700 0.004229622 0.0023842385 0.0044329617 - 308800 0.003878809 0.0021722385 0.0040510366 - 308900 0.004391638 0.0024504288 0.0045776285 - 309000 0.0037982747 0.0024222511 0.0042620404 - 309100 0.0057581475 0.0022771556 0.0050662583 - 309200 0.0050143736 0.0027918241 0.0052206613 - 309300 0.0048434915 0.0030118163 0.0053578825 - 309400 0.005497243 0.0027303471 0.0053930742 - 309500 0.0045694354 0.0024562012 0.0046695215 - 309600 0.0054987405 0.0022856018 0.0049490542 - 309700 0.0052955631 0.0024276709 0.0049927093 - 309800 0.0039840021 0.00280008 0.004729831 - 309900 0.0045019149 0.0025729222 0.0047535372 - 310000 0.0034586245 0.0021421196 0.0038173908 - 310100 0.0038138403 0.0019081209 0.0037554498 - 310200 0.0041810826 0.0021447346 0.0041699465 - 310300 0.0062348317 0.0020328312 0.0050528278 - 310400 0.0074580415 0.0019295828 0.0055420717 - 310500 0.0040171861 0.0023896365 0.0043354611 - 310600 0.0050458501 0.0025892375 0.0050333211 - 310700 0.0061784641 0.0024350176 0.0054277111 - 310800 0.0043775919 0.0026637609 0.004784157 - 310900 0.0064152905 0.002782843 0.0058902494 - 311000 0.0044313688 0.0024267642 0.0045732085 - 311100 0.0067116167 0.0022425931 0.0054935324 - 311200 0.0067085984 0.0022356766 0.005485154 - 311300 0.0047843671 0.0027619115 0.0050793393 - 311400 0.0047137963 0.0025079929 0.004791238 - 311500 0.0032132491 0.0026945801 0.0042509976 - 311600 0.0055397163 0.002515562 0.0051988621 - 311700 0.0054750437 0.0031895375 0.0058415118 - 311800 0.0061897 0.0031564834 0.0061546193 - 311900 0.0063037731 0.0029239269 0.005977317 - 312000 0.0058006901 0.0024698674 0.0052795767 - 312100 0.0048859388 0.0020722211 0.0044388478 - 312200 0.0052031237 0.0017145158 0.0042347788 - 312300 0.0056612279 0.0020349417 0.0047770989 - 312400 0.0053487988 0.0024027483 0.0049935727 - 312500 0.0045596714 0.0023881513 0.0045967421 - 312600 0.0060677253 0.0021044293 0.0050434838 - 312700 0.0039097786 0.0024468246 0.0043406236 - 312800 0.0044116546 0.0027561856 0.0048930808 - 312900 0.0040679797 0.0027926295 0.0047630572 - 313000 0.0042333158 0.0031291415 0.0051796538 - 313100 0.0056606347 0.0033573681 0.006099238 - 313200 0.0066384706 0.0027863829 0.0060018921 - 313300 0.0056735102 0.002026208 0.0047743145 - 313400 0.0051857966 0.001989157 0.0045010273 - 313500 0.0047678964 0.001952217 0.0042616669 - 313600 0.0057782129 0.0021224277 0.0049212495 - 313700 0.0046493881 0.0019022251 0.0041542725 - 313800 0.0043099587 0.0017742296 0.0038618659 - 313900 0.004480202 0.0018380441 0.004008142 - 314000 0.0042542315 0.001783789 0.0038444324 - 314100 0.007785569 0.0018297916 0.0056009266 - 314200 0.0066732828 0.0020146496 0.005247021 - 314300 0.0062985715 0.0020935048 0.0051443754 - 314400 0.0049784092 0.0018755834 0.0042870003 - 314500 0.0047713347 0.0016820373 0.0039931525 - 314600 0.0052198137 0.0016648185 0.0041931658 - 314700 0.0061979521 0.0019535301 0.0049556632 - 314800 0.0049515303 0.0021285482 0.0045269457 - 314900 0.0045132376 0.002465457 0.0046515564 - 315000 0.0048123613 0.0023122931 0.0046432806 - 315100 0.0051132724 0.0022380397 0.004714781 - 315200 0.0039218844 0.002403125 0.0043027877 - 315300 0.0083593784 0.002053197 0.006102271 - 315400 0.0032322871 0.0026759522 0.0042415913 - 315500 0.0039416833 0.0027338555 0.0046431084 - 315600 0.004825659 0.0025893625 0.004926791 - 315700 0.0037613117 0.0025357775 0.0043576628 - 315800 0.0051007694 0.002537531 0.0050082161 - 315900 0.0049208238 0.0026820177 0.0050655418 - 316000 0.0045147451 0.0022733028 0.0044601324 - 316100 0.0049485332 0.0020010714 0.0043980171 - 316200 0.0038538121 0.0019222601 0.0037889503 - 316300 0.0037903815 0.0020680216 0.0039039876 - 316400 0.0068227753 0.0017544868 0.0050592686 - 316500 0.0049345852 0.0021567763 0.004546966 - 316600 0.0054031524 0.0024862258 0.0051033777 - 316700 0.0051304454 0.0024481279 0.0049331874 - 316800 0.0048610189 0.002166237 0.004520793 - 316900 0.005192057 0.0018025573 0.0043174599 - 317000 0.0047356143 0.0014142953 0.0037081085 - 317100 0.0047218415 0.0017572361 0.0040443781 - 317200 0.0047211141 0.0020307216 0.0043175112 - 317300 0.0043180202 0.0025274522 0.0046189933 - 317400 0.004995451 0.0027447598 0.0051644314 - 317500 0.0045832886 0.0028351687 0.0050551992 - 317600 0.003636182 0.0025288171 0.0042900927 - 317700 0.00517903 0.0020476817 0.0045562744 - 317800 0.0049644459 0.0022254804 0.0046301339 - 317900 0.0066883205 0.0021698853 0.0054095406 - 318000 0.0046736221 0.0026543574 0.0049181431 - 318100 0.0057384413 0.0029254511 0.0057050087 - 318200 0.0056906776 0.0030658223 0.0058222443 - 318300 0.0060708371 0.0030123286 0.0059528904 - 318400 0.0062898126 0.0028016735 0.0058483015 - 318500 0.0056893881 0.0028201687 0.005575966 - 318600 0.0075068126 0.0021660662 0.0058021785 - 318700 0.0040378679 0.0026751663 0.0046310086 - 318800 0.0044841708 0.0027530532 0.0049250734 - 318900 0.0036053596 0.0032303 0.004976646 - 319000 0.0051597759 0.0031017345 0.005601001 - 319100 0.0059055047 0.0024139917 0.0052744705 - 319200 0.0044774986 0.0028188261 0.0049876144 - 319300 0.0042752053 0.0024653574 0.0045361599 - 319400 0.0044617121 0.0021085313 0.0042696731 - 319500 0.0036710069 0.0019352053 0.0037133493 - 319600 0.003573466 0.0018392521 0.0035701497 - 319700 0.0035782806 0.0020374161 0.0037706458 - 319800 0.0047320345 0.0023280944 0.0046201737 - 319900 0.005212714 0.0025998087 0.005124717 - 320000 0.0048382529 0.0025219708 0.0048654996 - 320100 0.0048526767 0.0025556548 0.0049061701 - 320200 0.0045535429 0.0026952901 0.0049009124 - 320300 0.0053986582 0.002847617 0.0054625921 - 320400 0.0058061803 0.0025845145 0.0053968831 - 320500 0.0056475748 0.0019888273 0.0047243714 - 320600 0.0050077215 0.0023612725 0.0047868876 - 320700 0.0027967195 0.0026141653 0.0039688263 - 320800 0.0035679851 0.0024721846 0.0042004274 - 320900 0.0062719149 0.0024061903 0.0054441491 - 321000 0.0053386164 0.0025222781 0.0051081704 - 321100 0.0049358394 0.0027162487 0.0051070459 - 321200 0.0046641643 0.0030701027 0.0053293073 - 321300 0.0063828707 0.0031742168 0.0062659198 - 321400 0.0069542474 0.0032779068 0.0066463704 - 321500 0.0049380597 0.0030341532 0.0054260259 - 321600 0.0063153572 0.003053056 0.0061120571 - 321700 0.0050487503 0.0035569924 0.0060024808 - 321800 0.0058858416 0.003088806 0.0059397605 - 321900 0.00459321 0.0026922259 0.004917062 - 322000 0.0061449898 0.0025908962 0.0055673756 - 322100 0.0050782733 0.0023956834 0.004855472 - 322200 0.0056183878 0.001938786 0.0046601926 - 322300 0.0045948467 0.0020185653 0.0042441942 - 322400 0.0065018301 0.0022373027 0.0053866266 - 322500 0.0052984038 0.0022473439 0.0048137582 - 322600 0.0048928372 0.0022208698 0.0045908379 - 322700 0.006704038 0.0023453206 0.005592589 - 322800 0.0051410371 0.0024095212 0.0048997111 - 322900 0.0051478534 0.0023195697 0.0048130612 - 323000 0.0054594467 0.0023695538 0.0050139733 - 323100 0.0066693942 0.0021823144 0.0054128022 - 323200 0.0059523107 0.0025005645 0.005383715 - 323300 0.0023798394 0.0031890469 0.0043417816 - 323400 0.0060256569 0.0029678729 0.0058865504 - 323500 0.0055538314 0.002613578 0.0053037151 - 323600 0.0050657291 0.0025802014 0.005033914 - 323700 0.0040218588 0.0025862687 0.0045343566 - 323800 0.0063346253 0.0025661317 0.0056344658 - 323900 0.0064242241 0.0028022614 0.0059139949 - 324000 0.0057008445 0.0028443506 0.0056056972 - 324100 0.0045477325 0.0027213013 0.0049241093 - 324200 0.005294888 0.0021739585 0.0047386699 - 324300 0.0052320005 0.0023656514 0.0048999016 - 324400 0.0064986617 0.0022451232 0.0053929125 - 324500 0.0060030927 0.0023547613 0.0052625094 - 324600 0.0053592441 0.0026246294 0.0052205133 - 324700 0.004884889 0.0023617381 0.0047278562 - 324800 0.0045261905 0.0024111151 0.0046034886 - 324900 0.0044270898 0.0024311094 0.004575481 - 325000 0.0049208698 0.0022783678 0.0046619141 - 325100 0.0057024592 0.0022683858 0.0050305145 - 325200 0.0056971011 0.0025565539 0.0053160873 - 325300 0.0052872603 0.0021960778 0.0047570945 - 325400 0.0053993826 0.0018134537 0.0044287797 - 325500 0.0040905242 0.0023465547 0.0043279023 - 325600 0.0057239098 0.0019642632 0.004736782 - 325700 0.0048993033 0.0016525162 0.0040256162 - 325800 0.0034508452 0.0018311044 0.0035026076 - 325900 0.0057442468 0.0020400661 0.0048224356 - 326000 0.0054486244 0.0023744639 0.0050136413 - 326100 0.0051852192 0.0022124472 0.0047240377 - 326200 0.004597662 0.0021126922 0.0043396848 - 326300 0.0056227048 0.0021766025 0.0049001002 - 326400 0.0044456844 0.0020952158 0.0042485942 - 326500 0.0038966976 0.0020385023 0.0039259652 - 326600 0.0049391006 0.0017399899 0.0041323668 - 326700 0.0051069879 0.0017263433 0.0042000405 - 326800 0.004825054 0.0019122312 0.0042493667 - 326900 0.0045616528 0.0022371183 0.0044466689 - 327000 0.0053301094 0.0023392119 0.0049209836 - 327100 0.0046038147 0.00252156 0.0047515328 - 327200 0.0076582834 0.002502766 0.006212247 - 327300 0.0058739609 0.0030597489 0.0059049488 - 327400 0.005318151 0.0030405806 0.0056165599 - 327500 0.004108564 0.0026701574 0.0046602431 - 327600 0.0051222234 0.0025710616 0.0050521385 - 327700 0.00526734 0.0025892791 0.0051406469 - 327800 0.004633207 0.0026371515 0.0048813612 - 327900 0.0042578901 0.0024764477 0.0045388633 - 328000 0.0061341342 0.002199158 0.0051703793 - 328100 0.0059296881 0.0024213865 0.0052935792 - 328200 0.0047308055 0.0022493501 0.004540834 - 328300 0.0051095618 0.0020667013 0.0045416453 - 328400 0.0065704568 0.0023281586 0.0055107236 - 328500 0.0055472521 0.0026281843 0.0053151345 - 328600 0.0058252683 0.0027028113 0.0055244256 - 328700 0.0052960788 0.0028003223 0.0053656105 - 328800 0.005239674 0.0028444496 0.0053824166 - 328900 0.0048355624 0.0028244206 0.0051666462 - 329000 0.0055135704 0.0030078856 0.0056785213 - 329100 0.0056082875 0.0030155158 0.0057320301 - 329200 0.0054081217 0.0030536672 0.0056732261 - 329300 0.0058533314 0.002474638 0.0053098454 - 329400 0.0054120825 0.0020666285 0.0046881059 - 329500 0.0029524802 0.0021124801 0.0035425877 - 329600 0.0056423413 0.0020353883 0.0047683974 - 329700 0.0063692706 0.0016034125 0.0046885279 - 329800 0.0052127034 0.0016826417 0.0042075449 - 329900 0.005319199 0.0019604341 0.0045369212 - 330000 0.0031781654 0.0025373045 0.0040767283 - 330100 0.0051778758 0.002231448 0.0047394816 - 330200 0.0046986679 0.0024939429 0.0047698602 - 330300 0.0052715716 0.0023932901 0.0049467076 - 330400 0.0060492513 0.0022028467 0.0051329528 - 330500 0.0049429205 0.0021978873 0.0045921145 - 330600 0.0059849426 0.0016749698 0.0045739264 - 330700 0.0048362684 0.0018933464 0.0042359139 - 330800 0.0040928753 0.0022445987 0.0042270852 - 330900 0.004788993 0.0021104313 0.0044300998 - 331000 0.0035220178 0.0019528163 0.0036587936 - 331100 0.0041588681 0.0018828693 0.0038973211 - 331200 0.0049155071 0.0021225164 0.0045034651 - 331300 0.0056269467 0.0020925279 0.0048180803 - 331400 0.0069319787 0.0021043349 0.0054620121 - 331500 0.00659538 0.0019441258 0.005138763 - 331600 0.0049352845 0.0019508261 0.0043413546 - 331700 0.0044196233 0.0023500907 0.0044908457 - 331800 0.0059327528 0.0028495309 0.005723208 - 331900 0.0044496564 0.0037254643 0.0058807666 - 332000 0.0044923866 0.0034383168 0.0056143165 - 332100 0.0070982856 0.0022357874 0.0056740195 - 332200 0.0041835882 0.0021270369 0.0041534624 - 332300 0.0049890085 0.0019882427 0.0044047937 - 332400 0.003888717 0.0018989748 0.0037825721 - 332500 0.0046439838 0.0024378098 0.0046872395 - 332600 0.0051160988 0.0023721099 0.0048502203 - 332700 0.0054519003 0.0020552572 0.0046960214 - 332800 0.0058611617 0.0023626351 0.0052016353 - 332900 0.0054913653 0.002470806 0.0051306861 - 333000 0.0029572721 0.0023991224 0.003831551 - 333100 0.0059373877 0.0018772887 0.0047532108 - 333200 0.005308089 0.0023503354 0.004921441 - 333300 0.0046825859 0.002290478 0.0045586055 - 333400 0.0038212563 0.0025509067 0.0044018277 - 333500 0.0058047513 0.0024241104 0.0052357868 - 333600 0.0050387501 0.0023256982 0.0047663428 - 333700 0.0041169855 0.0025522254 0.0045463903 - 333800 0.004679942 0.0024299344 0.0046967813 - 333900 0.0060903701 0.0025326401 0.0054826632 - 334000 0.0050898225 0.0026975775 0.0051629603 - 334100 0.004900185 0.0023177322 0.0046912593 - 334200 0.0048231169 0.002258431 0.0045946283 - 334300 0.0048147853 0.0020960946 0.0044282562 - 334400 0.0045463442 0.0022295431 0.0044316785 - 334500 0.0047733832 0.0029920799 0.0053041873 - 334600 0.0097144254 0.0032108556 0.0079162804 - 334700 0.0061505394 0.0031333631 0.0061125306 - 334800 0.0055260316 0.0029627022 0.0056393737 - 334900 0.0049076409 0.0030378466 0.0054149852 - 335000 0.0036839807 0.0028541777 0.0046386059 - 335100 0.0049859442 0.0027093376 0.0051244044 - 335200 0.0038504892 0.0025810605 0.0044461412 - 335300 0.0049462904 0.0025528079 0.0049486673 - 335400 0.0048827618 0.0026368989 0.0050019866 - 335500 0.0062973069 0.0021259208 0.0051761789 - 335600 0.0045021732 0.0020506002 0.0042313403 - 335700 0.0049909774 0.0022228444 0.0046403491 - 335800 0.0055753185 0.0026098621 0.005310407 - 335900 0.0040463795 0.0029354359 0.0048954009 - 336000 0.0043721389 0.0030566588 0.0051744135 - 336100 0.0046608869 0.0029231261 0.0051807432 - 336200 0.0054174795 0.0026295651 0.0052536567 - 336300 0.0042727531 0.0027406648 0.0048102796 - 336400 0.0047314887 0.0030293834 0.0053211983 - 336500 0.0047866781 0.0026620877 0.0049806349 - 336600 0.005846287 0.0022922518 0.0051240471 - 336700 0.0052613179 0.002335401 0.0048838519 - 336800 0.0056813937 0.0021341754 0.0048861005 - 336900 0.0048770803 0.0021274594 0.0044897952 - 337000 0.0045430444 0.0021509319 0.0043514691 - 337100 0.004403098 0.002220429 0.0043531796 - 337200 0.0035826279 0.0021590887 0.0038944241 - 337300 0.0033679162 0.0021686487 0.0037999831 - 337400 0.0047831536 0.0021443759 0.0044612159 - 337500 0.0068131508 0.0022543776 0.0055544975 - 337600 0.0048288303 0.0026662698 0.0050052345 - 337700 0.0034902634 0.003140606 0.0048312024 - 337800 0.005567371 0.0028961124 0.0055928077 - 337900 0.0057694038 0.0029107966 0.0057053516 - 338000 0.0039878655 0.0027504314 0.0046820538 - 338100 0.0047098683 0.0025734041 0.0048547466 - 338200 0.0054980197 0.0027488587 0.005411962 - 338300 0.0054251321 0.0029753605 0.0056031589 - 338400 0.0051737429 0.0029896244 0.0054956561 - 338500 0.004943038 0.0023970068 0.0047912909 - 338600 0.0063702391 0.0019280976 0.0050136822 - 338700 0.0045608474 0.0022345273 0.0044436877 - 338800 0.0040878137 0.0027390887 0.0047191235 - 338900 0.0042452994 0.0027617771 0.004818094 - 339000 0.0039021612 0.0022736808 0.0041637902 - 339100 0.0060276391 0.0020012803 0.004920918 - 339200 0.0047841092 0.0024369505 0.0047542534 - 339300 0.0049094772 0.0021615807 0.0045396088 - 339400 0.0047248845 0.0024432645 0.0047318804 - 339500 0.0055656576 0.002490558 0.0051864234 - 339600 0.0049199975 0.0025736211 0.0049567449 - 339700 0.0051537482 0.0023708669 0.0048672136 - 339800 0.0040265375 0.002602244 0.0045525981 - 339900 0.0054048083 0.0028400428 0.0054579968 - 340000 0.0049765272 0.0029617317 0.005372237 - 340100 0.0048412234 0.0029535905 0.0052985581 - 340200 0.0047843411 0.0025721132 0.0048895284 - 340300 0.0045713559 0.0024667344 0.004680985 - 340400 0.0057567487 0.0024981084 0.0052865336 - 340500 0.0049553019 0.0024494608 0.0048496851 - 340600 0.0050265744 0.0026196028 0.0050543498 - 340700 0.0044765528 0.0025233412 0.0046916714 - 340800 0.00574 0.0018868627 0.0046671752 - 340900 0.005349896 0.0018484248 0.0044397806 - 341000 0.0048649386 0.0021560492 0.0045125038 - 341100 0.0049278029 0.0027207663 0.0051076708 - 341200 0.0057887649 0.0026844366 0.0054883697 - 341300 0.0046534073 0.00217078 0.0044247742 - 341400 0.0045935247 0.0016889279 0.0039139165 - 341500 0.0056172434 0.001602469 0.0043233213 - 341600 0.0045061094 0.0021855376 0.0043681843 - 341700 0.0036667087 0.0026911592 0.0044672212 - 341800 0.004218731 0.0022562677 0.0042997155 - 341900 0.0048540371 0.0019424288 0.004293603 - 342000 0.0042194485 0.0021296655 0.0041734608 - 342100 0.00291096 0.0021059025 0.0035158987 - 342200 0.0053330814 0.0019954015 0.0045786127 - 342300 0.0060649643 0.002180444 0.0051181611 - 342400 0.0043359767 0.0022677723 0.004368011 - 342500 0.0041545178 0.0017680065 0.0037803511 - 342600 0.005220769 0.0014495199 0.0039783299 - 342700 0.0052679593 0.001554432 0.0041060997 - 342800 0.0073623384 0.0019399489 0.0055060816 - 342900 0.0058025599 0.0021426526 0.0049532676 - 343000 0.0050067426 0.0027331704 0.0051583114 - 343100 0.0052475675 0.0029613201 0.0055031106 - 343200 0.0049787356 0.002732876 0.005144451 - 343300 0.0050050821 0.0023573649 0.0047817016 - 343400 0.0060127489 0.0023719067 0.0052843319 - 343500 0.0052888831 0.0022036853 0.004765488 - 343600 0.0038877446 0.0023350413 0.0042181676 - 343700 0.0048944747 0.0019501029 0.0043208641 - 343800 0.0049853906 0.0019470734 0.004361872 - 343900 0.0059018263 0.001941951 0.0048006481 - 344000 0.0045591589 0.0023470633 0.0045554059 - 344100 0.0053389811 0.0023904807 0.0049765497 - 344200 0.0053317461 0.0023412748 0.0049238394 - 344300 0.0050618663 0.0024256499 0.0048774914 - 344400 0.00690968 0.0027064163 0.0060532925 - 344500 0.005103634 0.0030125908 0.0054846635 - 344600 0.0042091513 0.0025111973 0.0045500049 - 344700 0.0060091623 0.0021741883 0.0050848762 - 344800 0.0051273217 0.0019761751 0.0044597215 - 344900 0.0050030764 0.0022010452 0.0046244103 - 345000 0.0057694698 0.0020909773 0.0048855642 - 345100 0.0035877435 0.0017911026 0.0035289159 - 345200 0.0036062959 0.0015365912 0.0032833908 - 345300 0.0031951796 0.0018936674 0.0034413326 - 345400 0.0034816668 0.0020222861 0.0037087185 - 345500 0.003763315 0.0018916301 0.0037144858 - 345600 0.0054069349 0.0020093515 0.0046283356 - 345700 0.0047233039 0.0018926228 0.0041804731 - 345800 0.0051817811 0.0017747192 0.0042846444 - 345900 0.0052220362 0.001850183 0.0043796068 - 346000 0.006857246 0.0017546439 0.0050761225 - 346100 0.0055127842 0.0024375967 0.0051078515 - 346200 0.0067006279 0.0029091753 0.006154792 - 346300 0.0048875955 0.0025522464 0.0049196755 - 346400 0.0077679694 0.0021572702 0.0059198804 - 346500 0.0049868831 0.0021613379 0.0045768594 - 346600 0.0055361799 0.0021385042 0.0048200913 - 346700 0.0046978917 0.0024720808 0.0047476221 - 346800 0.0043800358 0.0024128641 0.0045344439 - 346900 0.0044561285 0.0021908365 0.0043492737 - 347000 0.0051132039 0.0019562118 0.0044329199 - 347100 0.0060675557 0.0022186208 0.005157593 - 347200 0.0045103555 0.0020556763 0.0042403797 - 347300 0.0061713583 0.0017531988 0.0047424504 - 347400 0.0052496816 0.0017929852 0.0043357997 - 347500 0.0059896294 0.0018061397 0.0047073665 - 347600 0.005114099 0.0016944751 0.0041716168 - 347700 0.0055253278 0.0018751539 0.0045514846 - 347800 0.0040174613 0.0024613338 0.0044072916 - 347900 0.004939336 0.0024695232 0.0048620141 - 348000 0.0041367654 0.0026495433 0.0046532891 - 348100 0.0061157659 0.0024433116 0.0054056357 - 348200 0.0049043857 0.0022791079 0.0046546698 - 348300 0.0049858097 0.001960082 0.0043750836 - 348400 0.0063625638 0.0021468966 0.0052287634 - 348500 0.0046534443 0.002895145 0.0051491571 - 348600 0.0071626187 0.0028821055 0.0063514989 - 348700 0.0065202411 0.0028128889 0.0059711307 - 348800 0.0049185243 0.0036066776 0.0059890878 - 348900 0.0043340694 0.0029956783 0.0050949931 - 349000 0.0052353904 0.0021492663 0.0046851586 - 349100 0.0058658004 0.0021469575 0.0049882045 - 349200 0.0054979908 0.0026438916 0.0053069809 - 349300 0.005598686 0.0030374771 0.0057493407 - 349400 0.0050758835 0.0033165949 0.0057752259 - 349500 0.0045072534 0.0030711642 0.0052543651 - 349600 0.0041270414 0.0022614421 0.0042604778 - 349700 0.0062161033 0.0022995855 0.0053105106 - 349800 0.0052260993 0.0023036268 0.0048350187 - 349900 0.0040492653 0.0022545184 0.0042158813 - 350000 0.0071036482 0.0018332831 0.0052741127 - 350100 0.0062627346 0.0020781741 0.0051116862 - 350200 0.0049440408 0.0025683567 0.0049631264 - 350300 0.0051871083 0.0027938642 0.0053063698 - 350400 0.0049304782 0.0032151404 0.0056033408 - 350500 0.0048109718 0.0029305421 0.0052608565 - 350600 0.0073699325 0.0026251371 0.0061949482 - 350700 0.0061293139 0.0030161161 0.0059850025 - 350800 0.0065422315 0.00257019 0.0057390834 - 350900 0.0055973003 0.0024246423 0.0051358346 - 351000 0.004151137 0.0024112769 0.0044219839 - 351100 0.0058075002 0.0021696597 0.0049826677 - 351200 0.0057605532 0.0024704787 0.0052607466 - 351300 0.0050120828 0.0027125186 0.0051402462 - 351400 0.0066718116 0.0029859347 0.0062175935 - 351500 0.0050726648 0.0029548392 0.0054119112 - 351600 0.0058976325 0.0027070123 0.0055636781 - 351700 0.0060088923 0.0025527872 0.0054633444 - 351800 0.0038116073 0.0022483249 0.0040945722 - 351900 0.0044322067 0.0018848967 0.0040317468 - 352000 0.0063802444 0.0019466298 0.0050370607 - 352100 0.0044398785 0.0027682394 0.0049188055 - 352200 0.0049293607 0.0030408161 0.0054284751 - 352300 0.0076429576 0.0024955279 0.0061975855 - 352400 0.0050524066 0.0022966541 0.0047439136 - 352500 0.0057917216 0.0024724635 0.0052778286 - 352600 0.0041703127 0.0027577142 0.0047777094 - 352700 0.005043015 0.0025352942 0.0049780046 - 352800 0.005155016 0.0023089575 0.0048059184 - 352900 0.0047436065 0.0024820003 0.0047796847 - 353000 0.0048589104 0.0023511224 0.0047046571 - 353100 0.0063703048 0.0023922717 0.0054778881 - 353200 0.0043278275 0.0025672153 0.0046635067 - 353300 0.0049967227 0.0022859233 0.0047062108 - 353400 0.0065974702 0.0020531897 0.0052488393 - 353500 0.0051870056 0.0025204902 0.005032946 - 353600 0.0040917971 0.0031766427 0.0051586069 - 353700 0.0046298273 0.0033724671 0.0056150397 - 353800 0.004228123 0.002659879 0.0047078761 - 353900 0.0064391069 0.0019715778 0.0050905203 - 354000 0.0040083593 0.0025368842 0.0044784332 - 354100 0.0064822763 0.002335157 0.0054750096 - 354200 0.0047068833 0.0029898341 0.0052697307 - 354300 0.004090677 0.0026772689 0.0046586906 - 354400 0.0048499735 0.0020506704 0.0043998763 - 354500 0.0050036008 0.0018554385 0.0042790576 - 354600 0.0064253536 0.0017479398 0.0048602204 - 354700 0.0071442908 0.0017115622 0.005172078 - 354800 0.0059548725 0.0020935264 0.0049779178 - 354900 0.0057452998 0.0026087667 0.0053916463 - 355000 0.0047944367 0.0030901188 0.0054124241 - 355100 0.0048969973 0.0030072782 0.0053792613 - 355200 0.0062846194 0.0025923696 0.0056364821 - 355300 0.0056735741 0.0023952384 0.0051433759 - 355400 0.0054072986 0.0022308494 0.0048500096 - 355500 0.0048295021 0.0024809613 0.0048202514 - 355600 0.0052444432 0.0022106923 0.0047509695 - 355700 0.0048991384 0.0026599844 0.0050330045 - 355800 0.004768268 0.0031037627 0.0054133924 - 355900 0.0058397767 0.0030012694 0.0058299112 - 356000 0.0054827447 0.0023742002 0.0050299047 - 356100 0.0054077406 0.0022962487 0.0049156231 - 356200 0.0062324509 0.0029818147 0.0060006581 - 356300 0.0051602121 0.0033505043 0.0058499821 - 356400 0.0040983305 0.0026873388 0.0046724676 - 356500 0.0069404309 0.0021781972 0.0055399684 - 356600 0.0055192079 0.0021980461 0.0048714124 - 356700 0.005452268 0.0025026557 0.0051435981 - 356800 0.0045021406 0.0030242858 0.0052050101 - 356900 0.0044137895 0.0035037082 0.0056416375 - 357000 0.0070062302 0.0029445345 0.0063381772 - 357100 0.0054642355 0.0017913948 0.0044381339 - 357200 0.0049786334 0.0016507557 0.0040622812 - 357300 0.0041890392 0.0019167914 0.0039458573 - 357400 0.0044573655 0.0020337826 0.004192819 - 357500 0.0047521598 0.0020275139 0.0043293414 - 357600 0.0041528112 0.0021636151 0.0041751331 - 357700 0.0042429198 0.0023077561 0.0043629204 - 357800 0.0063877418 0.0023709461 0.0054650085 - 357900 0.0060418631 0.0026718996 0.0055984271 - 358000 0.0045903354 0.0032530541 0.0054764979 - 358100 0.0043107269 0.003083957 0.0051719653 - 358200 0.0051628539 0.002532991 0.0050337483 - 358300 0.0066009424 0.002737997 0.0059353285 - 358400 0.0043457425 0.002725158 0.004830127 - 358500 0.0050858093 0.002652948 0.0051163869 - 358600 0.0045657904 0.0030159922 0.0052275469 - 358700 0.0046286254 0.0027097253 0.0049517157 - 358800 0.0053362126 0.0024109801 0.0049957081 - 358900 0.0051314307 0.0025756755 0.0050612123 - 359000 0.0040758652 0.0029600554 0.0049343026 - 359100 0.0030005844 0.0029732736 0.0044266816 - 359200 0.0059441748 0.0026677613 0.0055469709 - 359300 0.0050201958 0.002785985 0.0052176423 - 359400 0.0058001353 0.0027232936 0.0055327342 - 359500 0.0043475659 0.0026200801 0.0047259324 - 359600 0.0044712302 0.0025859651 0.0047517172 - 359700 0.0054052925 0.0025298612 0.0051480497 - 359800 0.0055587443 0.0025683059 0.0052608227 - 359900 0.004690763 0.0030372187 0.0053093071 - 360000 0.0050841418 0.0029792511 0.0054418823 - 360100 0.0048458707 0.0023198526 0.0046670712 - 360200 0.0063378746 0.0021607871 0.0052306952 - 360300 0.0060908649 0.0023085938 0.0052588565 - 360400 0.0056279001 0.0024335505 0.0051595646 - 360500 0.0048047643 0.0022144044 0.0045417121 - 360600 0.0038479048 0.0020981483 0.0039619772 - 360700 0.0047175513 0.0023411492 0.0046262131 - 360800 0.0045992797 0.0023056362 0.0045334123 - 360900 0.0034723795 0.0023504913 0.0040324251 - 361000 0.004936281 0.0024664558 0.0048574669 - 361100 0.0049876284 0.0025390449 0.0049549274 - 361200 0.0037735964 0.0021145653 0.0039424011 - 361300 0.0051327684 0.0016573788 0.0041435635 - 361400 0.0039618481 0.00188808 0.0038071002 - 361500 0.0056722135 0.0022020042 0.0049494826 - 361600 0.004241234 0.0021685789 0.0042229266 - 361700 0.0053737298 0.002229472 0.0048323723 - 361800 0.0062359481 0.0026249476 0.0056454849 - 361900 0.0038147183 0.0029447575 0.0047925117 - 362000 0.0049200062 0.0024012722 0.0047844002 - 362100 0.0047088458 0.0019604414 0.0042412886 - 362200 0.0048458078 0.0018643423 0.0042115304 - 362300 0.00373887 0.0020104441 0.0038214592 - 362400 0.004137062 0.0020303362 0.0040342256 - 362500 0.0054929975 0.0023052904 0.004965961 - 362600 0.0043747247 0.0026918772 0.0048108845 - 362700 0.004693766 0.0025232952 0.0047968381 - 362800 0.0046265942 0.0022262411 0.0044672476 - 362900 0.0035378333 0.0022794319 0.0039930699 - 363000 0.0050652832 0.0024757111 0.0049292076 - 363100 0.0044421206 0.0021882849 0.004339937 - 363200 0.0065214227 0.0020451298 0.0052039439 - 363300 0.0051229857 0.0023692513 0.0048506975 - 363400 0.0050582979 0.0024944748 0.0049445878 - 363500 0.0043183757 0.0028522617 0.0049439749 - 363600 0.0065760558 0.0026348187 0.0058200958 - 363700 0.0050494935 0.0026059791 0.0050518275 - 363800 0.0041075793 0.0024742488 0.0044638575 - 363900 0.0053428213 0.0026835448 0.0052714738 - 364000 0.005789288 0.0028848042 0.0056889905 - 364100 0.0038597354 0.0030855839 0.0049551432 - 364200 0.0051784709 0.0026492793 0.0051576011 - 364300 0.0061041308 0.0025653899 0.0055220783 - 364400 0.0052134816 0.00235263 0.0048779101 - 364500 0.005569615 0.0020512566 0.0047490389 - 364600 0.0050043314 0.0016572699 0.0040812429 - 364700 0.0050432066 0.0018647914 0.0043075946 - 364800 0.0054092522 0.0022860252 0.0049061317 - 364900 0.0059678829 0.002521721 0.0054124143 - 365000 0.0046346546 0.0024411733 0.0046860841 - 365100 0.0063012634 0.0023529686 0.0054051431 - 365200 0.0042098789 0.0030070803 0.0050462404 - 365300 0.0048654423 0.0032252344 0.005581933 - 365400 0.0053507101 0.0025832082 0.0051749584 - 365500 0.0064741101 0.0018436384 0.0049795355 - 365600 0.0054284316 0.0020357948 0.0046651914 - 365700 0.0044664429 0.0022757716 0.0044392049 - 365800 0.0049116222 0.002150403 0.00452947 - 365900 0.0053647771 0.0021813839 0.0047799478 - 366000 0.0044184109 0.0017891215 0.0039292893 - 366100 0.0038571497 0.0016414143 0.0035097212 - 366200 0.0060548026 0.0016134144 0.0045462094 - 366300 0.0060344003 0.0018898605 0.0048127731 - 366400 0.0039762963 0.0021023087 0.0040283272 - 366500 0.0036709328 0.0021205777 0.0038986858 - 366600 0.0057415043 0.0016959637 0.0044770048 - 366700 0.0061604602 0.0015514467 0.0045354196 - 366800 0.0050585675 0.0018181566 0.0042684003 - 366900 0.0047495168 0.0019097624 0.0042103096 - 367000 0.0042367123 0.0023680278 0.0044201853 - 367100 0.0047269412 0.0024953421 0.0047849542 - 367200 0.0046005605 0.0020026819 0.0042310784 - 367300 0.0052073081 0.0021610141 0.004683304 - 367400 0.0052623605 0.0021777394 0.0047266952 - 367500 0.0032245289 0.0023220384 0.0038839196 - 367600 0.0038546672 0.0018498922 0.0037169966 - 367700 0.0058147029 0.001894461 0.0047109577 - 367800 0.005788861 0.0019467002 0.0047506797 - 367900 0.0039220752 0.0023457218 0.004245477 - 368000 0.0044410852 0.0021265457 0.0042776964 - 368100 0.0062932391 0.0023995194 0.0054478071 - 368200 0.0061534367 0.0022959159 0.0052764868 - 368300 0.0048747348 0.0023846121 0.0047458118 - 368400 0.0047498957 0.0020328836 0.0043336144 - 368500 0.0055666292 0.0022313659 0.0049277019 - 368600 0.0066515698 0.002362172 0.0055840262 - 368700 0.0047022426 0.0025148732 0.004792522 - 368800 0.0054439592 0.0025244475 0.0051613653 - 368900 0.0037232638 0.0027629526 0.0045664085 - 369000 0.0053908167 0.0023021471 0.004913324 - 369100 0.0064289349 0.0022944388 0.0054084541 - 369200 0.0043677078 0.0025667495 0.0046823579 - 369300 0.0049641876 0.0022586389 0.0046631672 - 369400 0.0046140287 0.0018615143 0.0040964345 - 369500 0.0043457083 0.0017634152 0.0038683677 - 369600 0.0044870155 0.0018472039 0.004020602 - 369700 0.0047220954 0.0021038107 0.0043910757 - 369800 0.0034588534 0.0024939666 0.0041693487 - 369900 0.0036523706 0.0024143144 0.0041834314 - 370000 0.0057506335 0.0017899602 0.0045754233 - 370100 0.0054900793 0.0020198975 0.0046791546 - 370200 0.0043429339 0.0023431134 0.004446722 - 370300 0.0042917608 0.0022614472 0.0043402688 - 370400 0.0039151261 0.0022290107 0.0041253999 - 370500 0.0054618266 0.0022246547 0.004870227 - 370600 0.0073050345 0.0019328328 0.0054712089 - 370700 0.0054144237 0.0020994081 0.0047220195 - 370800 0.004496771 0.0021007025 0.0042788259 - 370900 0.0064962334 0.0019075861 0.0050541992 - 371000 0.0052257869 0.0023972213 0.0049284619 - 371100 0.0038712474 0.0029998611 0.0048749966 - 371200 0.0067856813 0.0025273484 0.0058141627 - 371300 0.0053616878 0.0026117921 0.0052088596 - 371400 0.006098118 0.0023771462 0.0053309221 - 371500 0.0062442531 0.0024052295 0.0054297896 - 371600 0.0037694751 0.0026567068 0.0044825463 - 371700 0.0038281479 0.002824822 0.0046790811 - 371800 0.0046382014 0.0027472909 0.0049939197 - 371900 0.0061838396 0.0020543151 0.0050496123 - 372000 0.0061538492 0.0015782731 0.0045590438 - 372100 0.004494937 0.0018586817 0.0040359168 - 372200 0.0055573091 0.0022335001 0.0049253217 - 372300 0.0051561421 0.0024337641 0.0049312704 - 372400 0.0072745187 0.0021669262 0.0056905212 - 372500 0.0064038816 0.0025302666 0.0056321468 - 372600 0.0055966719 0.0027668451 0.005477733 - 372700 0.0048800383 0.0028855944 0.0052493629 - 372800 0.0058255511 0.0027342412 0.0055559925 - 372900 0.0054284356 0.0027460206 0.0053754191 - 373000 0.0052916361 0.0026187748 0.005181911 - 373100 0.0053779016 0.0023993129 0.0050042339 - 373200 0.0047299643 0.0023962069 0.0046872834 - 373300 0.0036101243 0.0022315396 0.0039801935 - 373400 0.0039676565 0.0023413781 0.0042632117 - 373500 0.0058344104 0.0027150431 0.0055410857 - 373600 0.0053741481 0.0032718597 0.0058749626 - 373700 0.0059462559 0.003237619 0.0061178368 - 373800 0.0052514381 0.0026365379 0.0051802032 - 373900 0.0052684752 0.0025070228 0.0050589405 - 374000 0.0047303746 0.0029361146 0.0052273898 - 374100 0.0051157192 0.0027747753 0.0052527018 - 374200 0.0053496479 0.0026101415 0.0052013771 - 374300 0.0053821191 0.0026441054 0.0052510694 - 374400 0.0040405491 0.0031346792 0.0050918202 - 374500 0.0032364036 0.0038823842 0.0054500172 - 374600 0.0057874835 0.0028498786 0.0056531909 - 374700 0.0058654305 0.0019901131 0.004831181 - 374800 0.0070698268 0.0021374901 0.0055619375 - 374900 0.0040614933 0.0027342217 0.0047015075 - 375000 0.0066983213 0.0023997047 0.0056442041 - 375100 0.0058111193 0.0018238021 0.004638563 - 375200 0.0050194707 0.0020900834 0.0045213895 - 375300 0.0050484978 0.0023687028 0.0048140689 - 375400 0.0051342338 0.0018234779 0.0043103724 - 375500 0.0055454423 0.0018897099 0.0045757835 - 375600 0.0042351417 0.0020340688 0.0040854656 - 375700 0.0075552315 0.0012575392 0.0049171045 - 375800 0.0045342398 0.0013084394 0.0035047117 - 375900 0.0049355581 0.0018762058 0.0042668668 - 376000 0.0053168704 0.00233916 0.0049145191 - 376100 0.0047647187 0.0024492353 0.0047571459 - 376200 0.0049414131 0.0030966092 0.0054901062 - 376300 0.0069178264 0.0032253188 0.006576141 - 376400 0.0065542884 0.0029524979 0.0061272313 - 376500 0.0063105418 0.0025513362 0.0056080049 - 376600 0.0064464841 0.0024227894 0.0055453052 - 376700 0.0056234833 0.003148961 0.0058728357 - 376800 0.0056481403 0.0029914922 0.0057273102 - 376900 0.0060710761 0.002355089 0.0052957664 - 377000 0.0055242222 0.0023326022 0.0050083973 - 377100 0.0027938815 0.002325327 0.0036786133 - 377200 0.0061533643 0.0023041254 0.0052846612 - 377300 0.0056260704 0.0024538556 0.0051789834 - 377400 0.0052614173 0.002694112 0.005242611 - 377500 0.0049172504 0.0027265502 0.0051083434 - 377600 0.0050607111 0.0026552202 0.0051065021 - 377700 0.006025699 0.0023492575 0.0052679555 - 377800 0.0057757164 0.0022351039 0.0050327165 - 377900 0.0050803256 0.0023358829 0.0047966656 - 378000 0.0056059778 0.0020677619 0.0047831574 - 378100 0.0038782128 0.0020201379 0.0038986472 - 378200 0.0046745422 0.0021004768 0.0043647082 - 378300 0.004264994 0.0023083777 0.0043742341 - 378400 0.0049834023 0.0018573012 0.0042711366 - 378500 0.0049769256 0.0016000005 0.0040106988 - 378600 0.0056047913 0.0015140782 0.0042288989 - 378700 0.0039242373 0.0017666102 0.0036674126 - 378800 0.0048707542 0.0019823688 0.0043416404 - 378900 0.0050304857 0.0025846748 0.0050213163 - 379000 0.0054773384 0.0024122645 0.0050653503 - 379100 0.0061868895 0.0023417188 0.0053384934 - 379200 0.004864575 0.0021864276 0.0045427061 - 379300 0.0070102921 0.0017517106 0.0051473208 - 379400 0.0044130485 0.0020127605 0.0041503309 - 379500 0.0050704695 0.0018277408 0.0042837495 - 379600 0.0042181719 0.0018277686 0.0038709456 - 379700 0.0041412021 0.0022538301 0.0042597249 - 379800 0.0061616466 0.0022012625 0.0051858101 - 379900 0.0052826992 0.0023009707 0.0048597781 - 380000 0.0056579829 0.0023778931 0.0051184786 - 380100 0.0047308726 0.0025454751 0.0048369915 - 380200 0.0050606212 0.0027679146 0.005219153 - 380300 0.0038462978 0.0030491766 0.0049122271 - 380400 0.007920252 0.0025756765 0.0064120486 - 380500 0.0050392171 0.002412302 0.0048531728 - 380600 0.0062714115 0.0019993477 0.0050370626 - 380700 0.0035938811 0.0017924415 0.0035332276 - 380800 0.0053381132 0.0018515881 0.0044372367 - 380900 0.0053209269 0.0021585337 0.0047358576 - 381000 0.004030254 0.0025312431 0.0044833974 - 381100 0.0068533214 0.002523909 0.0058434865 - 381200 0.0062503436 0.0028462152 0.0058737254 - 381300 0.0043650647 0.0033162949 0.0054306231 - 381400 0.0049792042 0.0035683593 0.0059801614 - 381500 0.0059637828 0.0030838404 0.0059725476 - 381600 0.0045778639 0.0021561013 0.0043735041 - 381700 0.0061325827 0.0020028052 0.004973275 - 381800 0.0045811788 0.0021488781 0.0043678865 - 381900 0.0043737714 0.0021952623 0.0043138078 - 382000 0.0067488457 0.0023733458 0.0056423179 - 382100 0.007096274 0.0024034921 0.0058407498 - 382200 0.0040588649 0.0028906392 0.0048566519 - 382300 0.0058508966 0.0026077954 0.0054418235 - 382400 0.0057288496 0.0029715216 0.0057464332 - 382500 0.0049548858 0.0035722101 0.0059722329 - 382600 0.0055348172 0.0028582552 0.0055391823 - 382700 0.0052730996 0.0026933655 0.0052475232 - 382800 0.00588835 0.002627519 0.0054796885 - 382900 0.0057445099 0.002174486 0.004956983 - 383000 0.0044767034 0.0019377746 0.0041061778 - 383100 0.0067457424 0.0020981539 0.0053656229 - 383200 0.0049244358 0.0021907756 0.0045760492 - 383300 0.0054147508 0.0019686602 0.0045914302 - 383400 0.0039859814 0.0020545081 0.0039852178 - 383500 0.005155284 0.0019896319 0.0044867226 - 383600 0.0049941121 0.0018146036 0.0042336266 - 383700 0.0055640813 0.0020982904 0.0047933923 - 383800 0.0054213892 0.0020343575 0.0046603429 - 383900 0.0048909689 0.0020865409 0.0044556039 - 384000 0.0045885133 0.0023111712 0.0045337323 - 384100 0.0046349451 0.0024907067 0.0047357582 - 384200 0.00557791 0.0019133513 0.0046151514 - 384300 0.0037512794 0.0016797464 0.0034967724 - 384400 0.0038551851 0.0019735947 0.00384095 - 384500 0.0042202422 0.0021804137 0.0042245935 - 384600 0.0057087788 0.0023249015 0.0050900913 - 384700 0.0046454282 0.0023753019 0.0046254311 - 384800 0.0054745253 0.0021937988 0.004845522 - 384900 0.0045368239 0.0026965207 0.0048940447 - 385000 0.0041982847 0.0026933246 0.0047268688 - 385100 0.0048760554 0.0022167305 0.0045785698 - 385200 0.0053039028 0.0022225456 0.0047916235 - 385300 0.0039120963 0.0022315063 0.0041264279 - 385400 0.0040402711 0.0019954893 0.0039524956 - 385500 0.0049102712 0.0023788165 0.0047572291 - 385600 0.0046045115 0.0025209069 0.0047512172 - 385700 0.0044898126 0.0024522162 0.0046269692 - 385800 0.0048645889 0.0021385085 0.0044947938 - 385900 0.0040572112 0.0024039829 0.0043691946 - 386000 0.0050023948 0.002378024 0.004801059 - 386100 0.0059455195 0.0020115004 0.0048913614 - 386200 0.005255952 0.0022580301 0.0048038818 - 386300 0.0052751673 0.0026572858 0.005212445 - 386400 0.004685733 0.0029002822 0.0051699341 - 386500 0.0052910176 0.0030087101 0.0055715467 - 386600 0.0053419821 0.0031555864 0.005743109 - 386700 0.0055457528 0.0027924329 0.0054786569 - 386800 0.0068090896 0.0026024024 0.0059005552 - 386900 0.0059236179 0.0026913956 0.0055606481 - 387000 0.005019468 0.0028113342 0.005242639 - 387100 0.0063875014 0.002743005 0.005836951 - 387200 0.0050408865 0.0024721569 0.0049138363 - 387300 0.0063298479 0.0020659062 0.0051319263 - 387400 0.0053971579 0.0021171442 0.0047313926 - 387500 0.003889334 0.0020530896 0.0039369858 - 387600 0.0036848432 0.0020258659 0.0038107118 - 387700 0.0048606687 0.0023081219 0.0046625083 - 387800 0.0049167267 0.0024678758 0.0048494153 - 387900 0.0053050876 0.0025032767 0.0050729285 - 388000 0.0068339955 0.0026636149 0.0059738314 - 388100 0.0060226312 0.0028259382 0.0057431502 - 388200 0.0070972792 0.0025621982 0.0059999428 - 388300 0.0063299827 0.0024126507 0.005478736 - 388400 0.0054560601 0.0020461083 0.0046888874 - 388500 0.0044626467 0.0020704918 0.0042320863 - 388600 0.0051394192 0.0019947789 0.0044841851 - 388700 0.0053205237 0.0018231985 0.0044003272 - 388800 0.0040460268 0.0019298472 0.0038896414 - 388900 0.00517331 0.0019418184 0.0044476404 - 389000 0.0055168558 0.001929991 0.004602218 - 389100 0.0052681133 0.0023239736 0.004875716 - 389200 0.0057689787 0.0024079422 0.0052022912 - 389300 0.0053535958 0.0026644446 0.0052575926 - 389400 0.0040697188 0.0024623991 0.0044336692 - 389500 0.0052346571 0.0024821788 0.0050177158 - 389600 0.0047062598 0.0024712312 0.0047508258 - 389700 0.0041715435 0.0023442407 0.004364832 - 389800 0.0047404988 0.0021067988 0.0044029779 - 389900 0.0047802322 0.0020847983 0.0044002232 - 390000 0.0035226638 0.0024382367 0.004144527 - 390100 0.0035037774 0.0029083852 0.0046055274 - 390200 0.0042542554 0.0030030028 0.0050636578 - 390300 0.0054835175 0.0028489525 0.0055050313 - 390400 0.0046314911 0.0024568398 0.0047002183 - 390500 0.0067075809 0.0028102929 0.0060592774 - 390600 0.0047297019 0.0027998308 0.0050907801 - 390700 0.0048304299 0.0023968628 0.0047366023 - 390800 0.0069044771 0.0020082827 0.0053526388 - 390900 0.0052642517 0.0021623094 0.0047121813 - 391000 0.00517168 0.0021082263 0.0046132588 - 391100 0.0050084246 0.0021258905 0.0045518461 - 391200 0.007297029 0.0018807664 0.0054152648 - 391300 0.0060103399 0.0024932568 0.0054045152 - 391400 0.0046376913 0.0030062456 0.0052526273 - 391500 0.0066260625 0.0028858552 0.0060953542 - 391600 0.0048720628 0.0025879289 0.0049478343 - 391700 0.0050226836 0.0023601445 0.0047930069 - 391800 0.0050890899 0.0020242809 0.0044893088 - 391900 0.0045969094 0.0019641815 0.0041908095 - 392000 0.0054029133 0.0028547385 0.0054717747 - 392100 0.0051548209 0.0029750811 0.0054719475 - 392200 0.0051447656 0.0024835182 0.004975514 - 392300 0.0061617073 0.002127041 0.005111618 - 392400 0.0062132303 0.0025841984 0.0055937319 - 392500 0.0057195931 0.0027630511 0.005533479 - 392600 0.0050982327 0.0023951079 0.0048645644 - 392700 0.0045998322 0.0020559036 0.0042839473 - 392800 0.0050371292 0.0021851769 0.0046250363 - 392900 0.0048820782 0.002119745 0.0044845016 - 393000 0.0045272589 0.0023212573 0.0045141483 - 393100 0.0049704781 0.0024117378 0.0048193132 - 393200 0.0052321435 0.0022862779 0.0048205973 - 393300 0.0034738982 0.0026210674 0.0043037369 - 393400 0.0054256079 0.0027963895 0.0054244183 - 393500 0.0055837333 0.0030730053 0.0057776261 - 393600 0.0056042252 0.0030140984 0.005728645 - 393700 0.0049696694 0.0026476291 0.0050548127 - 393800 0.0061737694 0.0025250726 0.0055154922 - 393900 0.0047655834 0.0024639268 0.0047722563 - 394000 0.0054849443 0.0022933223 0.0049500922 - 394100 0.0060242384 0.0024522707 0.0053702612 - 394200 0.0056736627 0.0024299 0.0051780804 - 394300 0.0054494012 0.002227172 0.0048667257 - 394400 0.0046974816 0.0025945743 0.004869917 - 394500 0.004435697 0.0026222773 0.004770818 - 394600 0.0050512314 0.0024303805 0.0048770707 - 394700 0.0047245126 0.0022545045 0.0045429403 - 394800 0.0058243602 0.002184723 0.0050058975 - 394900 0.0039107579 0.0022496546 0.004143928 - 395000 0.0036116806 0.0023107702 0.004060178 - 395100 0.0035638378 0.0023290413 0.0040552752 - 395200 0.0052422859 0.0023899765 0.0049292087 - 395300 0.005014301 0.0025214134 0.0049502155 - 395400 0.0060291757 0.0023454762 0.0052658582 - 395500 0.004091934 0.0021419017 0.0041239323 - 395600 0.0055352597 0.0019628586 0.004644 - 395700 0.0041618106 0.002274486 0.0042903631 - 395800 0.0051687075 0.0025634985 0.0050670912 - 395900 0.005752105 0.0024676809 0.0052538567 - 396000 0.0054319731 0.0027179064 0.0053490184 - 396100 0.0049860914 0.0025247158 0.0049398538 - 396200 0.0029080513 0.0024982392 0.0039068265 - 396300 0.0046659348 0.001961431 0.0042214932 - 396400 0.0069662435 0.0020488809 0.0054231551 - 396500 0.0049207411 0.0023979841 0.0047814681 - 396600 0.0052927354 0.0026543393 0.005218008 - 396700 0.0047469755 0.0025058928 0.004805209 - 396800 0.0042466319 0.0019756599 0.0040326222 - 396900 0.0044531738 0.0021057029 0.0042627089 - 397000 0.0041011013 0.0022198619 0.0042063328 - 397100 0.0060654742 0.0023404234 0.0052783875 - 397200 0.0048515552 0.0021960724 0.0045460445 - 397300 0.0048631821 0.0025634241 0.004919028 - 397400 0.0055134828 0.0028094622 0.0054800554 - 397500 0.0062739519 0.0027608224 0.0057997678 - 397600 0.0053863916 0.0024085405 0.0050175739 - 397700 0.0053237766 0.0025580333 0.0051367377 - 397800 0.0038631946 0.0026306728 0.0045019077 - 397900 0.0051794447 0.0023244451 0.0048332386 - 398000 0.0046537886 0.0024109717 0.0046651505 - 398100 0.004651872 0.0021782076 0.0044314581 - 398200 0.0039933405 0.0022504689 0.0041847432 - 398300 0.0055355804 0.0023094689 0.0049907656 - 398400 0.004309813 0.0021575462 0.0042451119 - 398500 0.0042760593 0.0021373776 0.0042085938 - 398600 0.005587814 0.0021958705 0.0049024679 - 398700 0.0046963949 0.0020186235 0.0042934398 - 398800 0.0053325242 0.001896144 0.0044790854 - 398900 0.0049222169 0.001696836 0.0040810349 - 399000 0.0037193794 0.0018952072 0.0036967816 - 399100 0.0041384213 0.0019039509 0.0039084987 - 399200 0.0062966861 0.0017337739 0.0047837312 - 399300 0.0047742271 0.0019824213 0.0042949376 - 399400 0.0047343106 0.0022855637 0.0045787454 - 399500 0.0052284105 0.0022776034 0.0048101148 - 399600 0.0038893043 0.0025003793 0.0043842611 - 399700 0.0042321875 0.0025865726 0.0046365384 - 399800 0.0054769425 0.0025327063 0.0051856003 - 399900 0.0048819399 0.0027764048 0.0051410944 - 400000 0.0054971165 0.0023154855 0.0049781513 - 400100 0.0049020722 0.0021193958 0.004493837 - 400200 0.0051687326 0.0021615092 0.0046651141 - 400300 0.0052764246 0.0021081105 0.0046638787 - 400400 0.0038036695 0.0019309536 0.0037733561 - 400500 0.0057192507 0.0020251235 0.0047953856 - 400600 0.0036970181 0.0023841691 0.0041749122 - 400700 0.0042249475 0.0028010696 0.0048475285 - 400800 0.0059055369 0.0029165254 0.0057770198 - 400900 0.0053985339 0.0025694867 0.0051844015 - 401000 0.0068201387 0.0026167518 0.0059202565 - 401100 0.0056930801 0.0023914329 0.0051490185 - 401200 0.0068661998 0.0018792671 0.0052050827 - 401300 0.0044198332 0.0017516325 0.0038924892 - 401400 0.0046234299 0.0018906723 0.0041301462 - 401500 0.005060961 0.0022426063 0.0046940093 - 401600 0.005973636 0.0023131321 0.005206612 - 401700 0.0061747115 0.0027018962 0.0056927721 - 401800 0.0057152695 0.0030514405 0.0058197742 - 401900 0.0050132193 0.0032193983 0.0056476764 - 402000 0.006553072 0.0030194846 0.0061936288 - 402100 0.006236895 0.0030409563 0.0060619523 - 402200 0.0056200018 0.0026922506 0.005414439 - 402300 0.0067452694 0.002263087 0.0055303269 - 402400 0.0047985403 0.0022443819 0.0045686749 - 402500 0.0060978119 0.002518161 0.0054717887 - 402600 0.0055573429 0.0025338671 0.0052257051 - 402700 0.0035089611 0.0022546148 0.0039542678 - 402800 0.0058257135 0.0021417564 0.0049635864 - 402900 0.0059108734 0.0031117723 0.0059748516 - 403000 0.0061945489 0.0030161351 0.0060166197 - 403100 0.0071448356 0.002955554 0.0064163337 - 403200 0.0065212796 0.0030648142 0.006223559 - 403300 0.0058874707 0.0031999763 0.00605172 - 403400 0.0038552771 0.0030656649 0.0049330648 - 403500 0.0058762856 0.0028519846 0.0056983104 - 403600 0.005243254 0.0020336661 0.0045733673 - 403700 0.0050301941 0.002070891 0.0045073913 - 403800 0.0041329802 0.0024189339 0.0044208462 - 403900 0.0057325517 0.0026915508 0.0054682555 - 404000 0.0051663862 0.0031819551 0.0056844235 - 404100 0.0046680848 0.0035233366 0.0057844402 - 404200 0.0052407682 0.0031365335 0.0056750306 - 404300 0.006118943 0.0025470622 0.0055109252 - 404400 0.0062770986 0.0020781821 0.0051186518 - 404500 0.0042990092 0.002337786 0.0044201185 - 404600 0.006380319 0.0022807018 0.0053711688 - 404700 0.0064189486 0.0019722941 0.0050814723 - 404800 0.0042294192 0.0024867612 0.0045353861 - 404900 0.0051766252 0.0028692212 0.005376649 - 405000 0.006188712 0.0023468957 0.0053445531 - 405100 0.0040600397 0.0024924713 0.004459053 - 405200 0.0058677946 0.0024291229 0.0052713359 - 405300 0.0038978375 0.0028050426 0.0046930576 - 405400 0.0050456589 0.002506996 0.004950987 - 405500 0.0050703669 0.0025318754 0.0049878343 - 405600 0.0055195057 0.0027307213 0.0054042318 - 405700 0.0077525638 0.0033918945 0.0071470426 - 405800 0.0059740858 0.0039859171 0.0068796149 - 405900 0.0050558689 0.0040599615 0.006508898 - 406000 0.0048017535 0.0034136431 0.0057394925 - 406100 0.0056616935 0.00327427 0.0060166528 - 406200 0.0054017031 0.0032330535 0.0058495035 - 406300 0.004139828 0.0030840516 0.0050892808 - 406400 0.0050158857 0.0026629251 0.0050924947 - 406500 0.0051772966 0.0027778067 0.0052855597 - 406600 0.0050885005 0.002760866 0.0052256085 - 406700 0.0053468184 0.0024164541 0.0050063192 - 406800 0.0077593706 0.0024724681 0.0062309133 - 406900 0.0060073036 0.0027856094 0.0056953971 - 407000 0.0048343261 0.0032969608 0.0056385875 - 407100 0.0059989357 0.0030699531 0.0059756876 - 407200 0.0062461321 0.0028453468 0.005870817 - 407300 0.0065219581 0.003259075 0.0064181484 - 407400 0.0060103362 0.002998524 0.0059097806 - 407500 0.0075833918 0.0028067775 0.0064799829 - 407600 0.0058960865 0.0025440109 0.0053999278 - 407700 0.0064055037 0.002455696 0.0055583618 - 407800 0.0061378518 0.0024576689 0.0054306909 - 407900 0.0067168283 0.0022320897 0.0054855534 - 408000 0.005147035 0.0023989795 0.0048920745 - 408100 0.0052563459 0.0025811102 0.0051271528 - 408200 0.0067295018 0.0027950061 0.0060546086 - 408300 0.004847408 0.0032791902 0.0056271534 - 408400 0.004721639 0.0022915073 0.0045785512 - 408500 0.0037493394 0.0020831623 0.0038992486 - 408600 0.0047151725 0.0023054263 0.0045893379 - 408700 0.0054573374 0.0026063159 0.0052497137 - 408800 0.0058973929 0.0029486697 0.0058052194 - 408900 0.0046417132 0.0027660227 0.0050143525 - 409000 0.0033982879 0.0025031766 0.0041492223 - 409100 0.0050213121 0.0025931697 0.0050253678 - 409200 0.0058632901 0.0020407525 0.0048807836 - 409300 0.0039329481 0.0020735754 0.0039785971 - 409400 0.0050545291 0.001838585 0.0042868726 - 409500 0.0041695059 0.0018406817 0.0038602861 - 409600 0.0047331569 0.0020856872 0.0043783101 - 409700 0.004506268 0.002749117 0.0049318405 - 409800 0.0049838897 0.0028763119 0.0052903834 - 409900 0.0067057462 0.0026319943 0.0058800901 - 410000 0.0053021841 0.0027157352 0.0052839806 - 410100 0.003677237 0.002634277 0.0044154387 - 410200 0.0050044679 0.0022930352 0.0047170743 - 410300 0.0053328213 0.0022350644 0.0048181497 - 410400 0.0052038123 0.0022547515 0.0047753481 - 410500 0.0046231517 0.0026848487 0.0049241878 - 410600 0.0036668068 0.0027466132 0.0045227227 - 410700 0.0060875377 0.0028886548 0.0058373059 - 410800 0.0048889219 0.0030379812 0.0054060527 - 410900 0.0059186621 0.0029971644 0.0058640163 - 411000 0.0045995436 0.0031337849 0.0053616889 - 411100 0.0047893354 0.0027800193 0.0050998536 - 411200 0.0078335215 0.0024599709 0.0062543329 - 411300 0.0048721448 0.0025801454 0.0049400905 - 411400 0.0044060747 0.0028158105 0.004950003 - 411500 0.0048431546 0.0025460788 0.0048919818 - 411600 0.0043361762 0.0024090158 0.0045093512 - 411700 0.0055880584 0.0024752196 0.0051819354 - 411800 0.0055588542 0.0029273973 0.0056199673 - 411900 0.0062306345 0.0024680098 0.0054859734 - 412000 0.0034560688 0.0022948239 0.0039688572 - 412100 0.0058910954 0.0020181429 0.0048716422 - 412200 0.0036857373 0.0019992098 0.0037844888 - 412300 0.005661197 0.0018969868 0.0046391291 - 412400 0.004170256 0.0017962836 0.0038162513 - 412500 0.0040732849 0.00160117 0.0035741673 - 412600 0.0049315278 0.0016077148 0.0039964235 - 412700 0.0047056412 0.0023026565 0.0045819515 - 412800 0.004353635 0.0026561675 0.0047649595 - 412900 0.0064621964 0.0025224959 0.0056526223 - 413000 0.0061502835 0.0024735596 0.0054526031 - 413100 0.0062503106 0.0025919043 0.0056193985 - 413200 0.0042201858 0.0024676344 0.0045117869 - 413300 0.0051966993 0.0023118479 0.0048289991 - 413400 0.0047788245 0.0019991813 0.0043139244 - 413500 0.0057097124 0.0020898967 0.0048555387 - 413600 0.0048331519 0.0025041699 0.0048452278 - 413700 0.0039819509 0.0024789337 0.0044076912 - 413800 0.0051388331 0.0026471797 0.005136302 - 413900 0.0041262329 0.0024354132 0.0044340573 - 414000 0.0055383514 0.0025391181 0.0052217571 - 414100 0.0052716755 0.0030084829 0.0055619508 - 414200 0.0053130295 0.0030561504 0.0056296491 - 414300 0.0034808745 0.0033891831 0.0050752317 - 414400 0.0054529154 0.003137434 0.0057786899 - 414500 0.0051753854 0.0028505564 0.0053573837 - 414600 0.0047143388 0.0022334856 0.0045169935 - 414700 0.0050825057 0.0021198938 0.0045817325 - 414800 0.0052153433 0.0026020197 0.0051282017 - 414900 0.0049845209 0.0027269736 0.005141351 - 415000 0.0056716037 0.0026061842 0.0053533673 - 415100 0.0044417484 0.0025407915 0.0046922634 - 415200 0.0059854077 0.0021892381 0.0050884199 - 415300 0.0053260185 0.0019859315 0.0045657217 - 415400 0.0049563112 0.0023237551 0.0047244684 - 415500 0.005619213 0.0026669822 0.0053887885 - 415600 0.0045760155 0.0026044316 0.0048209391 - 415700 0.0060167792 0.0023132047 0.0052275821 - 415800 0.004778248 0.0024071716 0.0047216355 - 415900 0.0054434502 0.0024851074 0.0051217786 - 416000 0.0041734557 0.0028904633 0.0049119809 - 416100 0.0043722658 0.0025678854 0.0046857016 - 416200 0.0055766919 0.0024055416 0.0051067518 - 416300 0.0040862151 0.0026948418 0.0046741022 - 416400 0.0045933582 0.0025514984 0.0047764063 - 416500 0.0065527376 0.0022956923 0.0054696745 - 416600 0.0045715082 0.0027203571 0.0049346814 - 416700 0.0054360988 0.0028537377 0.0054868481 - 416800 0.0069851873 0.0024937376 0.0058771877 - 416900 0.0041290898 0.0030002282 0.0050002561 - 417000 0.0059552477 0.0033220072 0.0062065804 - 417100 0.0062428209 0.0027337051 0.0057575715 - 417200 0.0051862093 0.0029679518 0.0054800219 - 417300 0.0049066696 0.0030618144 0.0054384825 - 417400 0.0043344808 0.0028716467 0.0049711608 - 417500 0.0038876842 0.0025501953 0.0044332923 - 417600 0.0052516091 0.0023687366 0.0049124847 - 417700 0.0051636209 0.0021993517 0.0047004806 - 417800 0.0056924341 0.0022551084 0.0050123812 - 417900 0.0059063933 0.0021018131 0.0049627224 - 418000 0.0038453719 0.0024869162 0.0043495182 - 418100 0.0049634587 0.0028910919 0.0052952672 - 418200 0.0069812973 0.0023440498 0.0057256157 - 418300 0.0052909739 0.00279429 0.0053571055 - 418400 0.0052271327 0.0028003247 0.0053322171 - 418500 0.0038542523 0.0027291811 0.0045960846 - 418600 0.0061266077 0.0026279099 0.0055954855 - 418700 0.0053169639 0.0029543195 0.0055297239 - 418800 0.0054337647 0.0032846554 0.0059166352 - 418900 0.0045968611 0.0030534001 0.0052800047 - 419000 0.0047300231 0.0028375869 0.0051286918 - 419100 0.0043735173 0.0027147932 0.0048332156 - 419200 0.0060355106 0.0027265951 0.0056500455 - 419300 0.0049770785 0.0022958926 0.0047066649 - 419400 0.0055153777 0.0021487895 0.0048203006 - 419500 0.0055419904 0.0021098232 0.0047942248 - 419600 0.0058756283 0.0019564927 0.0048025002 - 419700 0.0046805727 0.0024650344 0.0047321868 - 419800 0.0050236302 0.0028256536 0.0052589745 - 419900 0.0044036821 0.0028769025 0.005009936 - 420000 0.0052814151 0.0025711405 0.005129326 - 420100 0.0062414066 0.0024752553 0.0054984366 - 420200 0.0076801213 0.0024229542 0.0061430129 - 420300 0.0054017759 0.0032648228 0.005881308 - 420400 0.0048868548 0.0035074226 0.0058744929 - 420500 0.0050401825 0.0039219814 0.0063633198 - 420600 0.0056346012 0.0040289739 0.0067582339 - 420700 0.005210317 0.0033026834 0.0058264307 - 420800 0.0062652227 0.0023589165 0.0053936338 - 420900 0.0072435399 0.0020388105 0.0055474001 - 421000 0.0045204962 0.0022345535 0.0044241689 - 421100 0.00570234 0.0024718979 0.0052339689 - 421200 0.0047340395 0.0022362456 0.004529296 - 421300 0.0058873303 0.0021517483 0.005003424 - 421400 0.0052195557 0.0027362553 0.0052644776 - 421500 0.0069194345 0.0028201261 0.0061717272 - 421600 0.005244691 0.0025572254 0.0050976226 - 421700 0.0049734212 0.0023424059 0.0047514068 - 421800 0.0052348219 0.0021845593 0.0047201761 - 421900 0.0036451446 0.0022215207 0.0039871377 - 422000 0.0059207679 0.0022021456 0.0050700175 - 422100 0.0050464878 0.0023330637 0.0047774562 - 422200 0.0059821344 0.0022987101 0.0051963065 - 422300 0.0043008955 0.002695735 0.0047789812 - 422400 0.0050555975 0.0030041086 0.0054529137 - 422500 0.0046106206 0.0027468557 0.0049801251 - 422600 0.0043235185 0.0024039042 0.0044981085 - 422700 0.0038835426 0.002326193 0.004207284 - 422800 0.004805624 0.0022759415 0.0046036656 - 422900 0.0052912463 0.0021744692 0.0047374166 - 423000 0.0051484534 0.0022364306 0.0047302127 - 423100 0.0045718491 0.0024199035 0.004634393 - 423200 0.0039855898 0.0020349218 0.0039654418 - 423300 0.0038674441 0.002025704 0.0038989972 - 423400 0.0048534919 0.0021005553 0.0044514655 - 423500 0.0038856692 0.0023685728 0.0042506939 - 423600 0.0043426981 0.0023259277 0.004429422 - 423700 0.0060664094 0.00224099 0.0051794071 - 423800 0.0043944189 0.0028714746 0.0050000212 - 423900 0.0038914906 0.0028862596 0.0047712004 - 424000 0.0052726166 0.0029826157 0.0055365393 - 424100 0.0069035294 0.0030466699 0.0063905669 - 424200 0.0049447598 0.0032745516 0.0056696696 - 424300 0.0061752168 0.0027763243 0.0057674449 - 424400 0.0053004933 0.0029320463 0.0054994728 - 424500 0.0063289736 0.002828952 0.0058945485 - 424600 0.0052330378 0.0023325888 0.0048673415 - 424700 0.0040903473 0.0023907117 0.0043719736 - 424800 0.0058061588 0.0024713058 0.005283664 - 424900 0.0047234552 0.0023834412 0.0046713648 - 425000 0.0056159001 0.0027061662 0.0054263678 - 425100 0.004317379 0.002883791 0.0049750214 - 425200 0.0047944389 0.0029740056 0.0052963119 - 425300 0.0063999265 0.002265734 0.0053656984 - 425400 0.0048456693 0.0022264372 0.0045735583 - 425500 0.0058459948 0.0027136885 0.0055453422 - 425600 0.0059024846 0.002953972 0.005812988 - 425700 0.0055674131 0.0024693588 0.0051660745 - 425800 0.0060809528 0.0021867195 0.005132181 - 425900 0.0049124572 0.0020839003 0.0044633718 - 426000 0.0051395903 0.0020107872 0.0045002763 - 426100 0.0040665807 0.0019838211 0.0039535711 - 426200 0.0044772782 0.0019058981 0.0040745797 - 426300 0.0052691555 0.0019254647 0.0044777119 - 426400 0.0054233912 0.0018184285 0.0044453836 - 426500 0.0041085937 0.0021685478 0.0041586479 - 426600 0.005104878 0.0024581194 0.0049307947 - 426700 0.0059516019 0.0023957277 0.0052785348 - 426800 0.0058927852 0.0019747364 0.0048290542 - 426900 0.0051361365 0.0020515313 0.0045393474 - 427000 0.0053125373 0.002232748 0.0048060083 - 427100 0.0037012838 0.0023368297 0.004129639 - 427200 0.0045289731 0.002268002 0.0044617233 - 427300 0.0066293558 0.002056483 0.0052675772 - 427400 0.0052936788 0.0020965395 0.0046606652 - 427500 0.0040511646 0.0022634689 0.0042257517 - 427600 0.0046447955 0.0021646374 0.0044144602 - 427700 0.0055241268 0.0023366476 0.0050123965 - 427800 0.0039869769 0.0024190539 0.0043502459 - 427900 0.0046675908 0.0028077933 0.0050686576 - 428000 0.0063656046 0.0026707242 0.0057540639 - 428100 0.0044759408 0.0028749573 0.0050429911 - 428200 0.004320327 0.0029070374 0.0049996958 - 428300 0.0069303822 0.0024814858 0.0058383897 - 428400 0.0053510652 0.0023380708 0.0049299931 - 428500 0.0057235183 0.0022187229 0.0049910521 - 428600 0.0061546563 0.002541028 0.0055221896 - 428700 0.0036562173 0.0031815053 0.0049524856 - 428800 0.0030185995 0.0032467613 0.0047088954 - 428900 0.0048982718 0.0022316109 0.0046042113 - 429000 0.0042196398 0.0021338092 0.0041776972 - 429100 0.0058111588 0.0022229382 0.0050377182 - 429200 0.0055322703 0.0021004876 0.0047801811 - 429300 0.003688935 0.0021099166 0.0038967445 - 429400 0.004697761 0.0021825378 0.0044580157 - 429500 0.006397937 0.0021049304 0.0052039312 - 429600 0.004619885 0.002056297 0.0042940538 - 429700 0.0047807866 0.0020649638 0.0043806573 - 429800 0.0037916936 0.0020722431 0.0039088447 - 429900 0.0070862366 0.0021503969 0.0055827928 - 430000 0.0045131066 0.0022617536 0.0044477896 - 430100 0.0038803583 0.0023696756 0.0042492241 - 430200 0.0041781365 0.002476643 0.0045004279 - 430300 0.0051852469 0.0023023564 0.0048139604 - 430400 0.0072137494 0.0020312368 0.0055253967 - 430500 0.0047224911 0.002259334 0.0045467906 - 430600 0.0060491839 0.002470788 0.0054008615 - 430700 0.0057229043 0.0021657655 0.0049377972 - 430800 0.0043303563 0.0023166548 0.0044141711 - 430900 0.0038138203 0.0027010051 0.0045483243 - 431000 0.0056109611 0.002161303 0.0048791122 - 431100 0.0059947772 0.0024452417 0.0053489619 - 431200 0.0035379187 0.0027658852 0.0044795646 - 431300 0.0050563557 0.0027822379 0.0052314102 - 431400 0.0060875788 0.0024567352 0.0054054062 - 431500 0.0061094402 0.0029285083 0.0058877684 - 431600 0.0053299591 0.0031103118 0.0056920107 - 431700 0.0064131032 0.0021108409 0.0052171878 - 431800 0.0054748041 0.0025894507 0.0052413089 - 431900 0.0026382562 0.0027952086 0.0040731139 - 432000 0.0040430957 0.0025217745 0.004480149 - 432100 0.0049409803 0.0025327998 0.0049260871 - 432200 0.0052637756 0.0031393112 0.0056889526 - 432300 0.0040699721 0.0035648841 0.0055362769 - 432400 0.0064323484 0.0031847047 0.0063003734 - 432500 0.0060511658 0.003082211 0.0060132444 - 432600 0.0051561811 0.0031221832 0.0056197085 - 432700 0.0059170822 0.0030807323 0.005946819 - 432800 0.0046692875 0.0027336935 0.0049953797 - 432900 0.0038371161 0.0025776949 0.004436298 - 433000 0.0051188266 0.0022520041 0.0047314357 - 433100 0.0062506315 0.0019394112 0.0049670608 - 433200 0.00477566 0.0022321984 0.0045454087 - 433300 0.0060174646 0.0025902417 0.0055049511 - 433400 0.0047128125 0.0028288271 0.0051115957 - 433500 0.0041135921 0.0028680725 0.0048605937 - 433600 0.0039796269 0.0027961466 0.0047237784 - 433700 0.005704948 0.002621645 0.0053849792 - 433800 0.0065693643 0.0027395171 0.0059215529 - 433900 0.0059580431 0.0032491161 0.0061350433 - 434000 0.0049694843 0.0035143711 0.005921465 - 434100 0.0049454108 0.0033922508 0.0057876842 - 434200 0.0060175473 0.0031519151 0.0060666645 - 434300 0.0062454043 0.0029528088 0.0059779265 - 434400 0.005953159 0.0031014936 0.005985055 - 434500 0.0068590686 0.0032557575 0.0065781188 - 434600 0.0062663702 0.0032967429 0.0063320159 - 434700 0.0045297029 0.0035633732 0.005757448 - 434800 0.0050358333 0.0034506553 0.0058898871 - 434900 0.0052598495 0.0025840728 0.0051318124 - 435000 0.004977605 0.002737558 0.0051485854 - 435100 0.0058482721 0.002794456 0.0056272128 - 435200 0.0054889635 0.0024834131 0.0051421298 - 435300 0.0054804827 0.0022941314 0.0049487402 - 435400 0.0040455699 0.0021202447 0.0040798177 - 435500 0.0045747967 0.002254459 0.0044703761 - 435600 0.0053912234 0.0020819737 0.0046933476 - 435700 0.0050825415 0.0021037105 0.0045655666 - 435800 0.0060423632 0.0019772745 0.0049040442 - 435900 0.0061221962 0.0024945649 0.0054600037 - 436000 0.0063794515 0.0022291809 0.0053192278 - 436100 0.0057486479 0.0022536627 0.0050381641 - 436200 0.0051125446 0.0026623921 0.0051387809 - 436300 0.0051738519 0.0027121245 0.005218209 - 436400 0.0049957896 0.0022705847 0.0046904203 - 436500 0.0049061291 0.0023757265 0.0047521328 - 436600 0.004872339 0.0026072779 0.0049673171 - 436700 0.0043638986 0.0019601845 0.0040739478 - 436800 0.0046614598 0.0020037993 0.0042616939 - 436900 0.0064931625 0.0019569359 0.0051020615 - 437000 0.0050229191 0.0021982672 0.0046312437 - 437100 0.0049491361 0.0020996176 0.0044968554 - 437200 0.0040133024 0.0023928801 0.0043368235 - 437300 0.004732141 0.0021672999 0.0044594307 - 437400 0.0039027089 0.0020617697 0.0039521444 - 437500 0.0053213686 0.0020560268 0.0046335647 - 437600 0.0039906748 0.0021539653 0.0040869484 - 437700 0.0056821581 0.0022516145 0.0050039098 - 437800 0.0057280028 0.0024107266 0.0051852279 - 437900 0.0051237764 0.0025551037 0.0050369329 - 438000 0.0045497669 0.0029150198 0.0051188132 - 438100 0.0047067718 0.0028485579 0.0051284005 - 438200 0.0051276324 0.0026184025 0.0051020994 - 438300 0.0044044677 0.0024708694 0.0046042834 - 438400 0.0038735561 0.0024589185 0.0043351722 - 438500 0.0052507269 0.0026342594 0.0051775803 - 438600 0.004504654 0.0025961378 0.0047780796 - 438700 0.0063411005 0.0023135992 0.0053850697 - 438800 0.0053666926 0.0022526463 0.004852138 - 438900 0.0051093451 0.0022752354 0.0047500744 - 439000 0.0045348347 0.0022672838 0.0044638444 - 439100 0.0045837085 0.0024623979 0.0046826317 - 439200 0.0038949019 0.002712393 0.0045989861 - 439300 0.0055394059 0.0023633942 0.0050465439 - 439400 0.0046458983 0.0024489439 0.0046993009 - 439500 0.0049315477 0.0021856943 0.0045744127 - 439600 0.0055589007 0.0020184611 0.0047110536 - 439700 0.0044839226 0.0020780021 0.0042499021 - 439800 0.0058451045 0.0017566506 0.004587873 - 439900 0.0066556588 0.0019478607 0.0051716954 - 440000 0.0038763241 0.0025927928 0.0044703873 - 440100 0.0040264139 0.0025847032 0.0045349975 - 440200 0.004368939 0.0022345108 0.0043507156 - 440300 0.0045593163 0.0022591732 0.0044675921 - 440400 0.0054583549 0.0022702532 0.0049141438 - 440500 0.0058446581 0.0022950396 0.0051260459 - 440600 0.0074502176 0.0022824376 0.0058911367 - 440700 0.0042515148 0.0025754742 0.0046348017 - 440800 0.0040710737 0.0024429413 0.0044148676 - 440900 0.0053892596 0.0024030798 0.0050135024 - 441000 0.0059084227 0.0023073074 0.0051691996 - 441100 0.0064284544 0.0025054598 0.0056192425 - 441200 0.0050114011 0.0026423659 0.0050697633 - 441300 0.0056897836 0.0025674894 0.0053234783 - 441400 0.003644692 0.0024668604 0.0042322581 - 441500 0.0055505498 0.0024682961 0.0051568437 - 441600 0.0054658323 0.0027970285 0.005444541 - 441700 0.0036264425 0.0026009549 0.004357513 - 441800 0.0060290114 0.0019727234 0.0048930258 - 441900 0.0061890395 0.0019004749 0.0048982909 - 442000 0.0063915963 0.0026094476 0.005705377 - 442100 0.0054312455 0.0034459156 0.0060766751 - 442200 0.0057242071 0.0028559507 0.0056286135 - 442300 0.0049966897 0.0022302049 0.0046504765 - 442400 0.0060377355 0.0020588152 0.0049833433 - 442500 0.005509326 0.0028034627 0.0054720425 - 442600 0.0058447055 0.0034193739 0.0062504031 - 442700 0.0047888657 0.0032285186 0.0055481254 - 442800 0.0056235415 0.0024926141 0.005216517 - 442900 0.0046838061 0.0020827056 0.0043514242 - 443000 0.0052792355 0.0019325021 0.0044896318 - 443100 0.0047644953 0.0024231876 0.00473099 - 443200 0.0046478557 0.0029372723 0.0051885774 - 443300 0.0061748527 0.0032137013 0.0062046456 - 443400 0.0055171142 0.0025889621 0.0052613143 - 443500 0.0044773134 0.0025791405 0.0047478392 - 443600 0.0032214787 0.0031917051 0.0047521088 - 443700 0.0044811655 0.0030316829 0.0052022475 - 443800 0.004073356 0.0029690422 0.004942074 - 443900 0.0069225984 0.002720051 0.0060731846 - 444000 0.0054977397 0.00291295 0.0055759177 - 444100 0.0053405449 0.0037313384 0.0063181649 - 444200 0.0065501685 0.0040549551 0.007227693 - 444300 0.0061987199 0.0038925499 0.0068950549 - 444400 0.0049018816 0.0036557519 0.0060301008 - 444500 0.0071244309 0.0034038307 0.0068547269 - 444600 0.0042899028 0.0031291384 0.00520706 - 444700 0.0054303442 0.0027711153 0.0054014383 - 444800 0.005383763 0.0025833021 0.0051910623 - 444900 0.0030531577 0.0026130436 0.0040919168 - 445000 0.0041345518 0.0028126007 0.0048152743 - 445100 0.0050731766 0.0030335351 0.005490855 - 445200 0.0068678662 0.0027903902 0.0061170129 - 445300 0.004087145 0.0026925674 0.0046722782 - 445400 0.0046928391 0.002356826 0.0046299199 - 445500 0.0060427525 0.0022303665 0.0051573247 - 445600 0.0043554795 0.0025763304 0.0046860158 - 445700 0.0054766424 0.0029944104 0.0056471591 - 445800 0.0051649562 0.0025696988 0.0050714744 - 445900 0.0049719471 0.0024780604 0.0048863473 - 446000 0.0058458562 0.0023196258 0.0051512124 - 446100 0.0043090146 0.0025248336 0.0046120126 - 446200 0.0038578489 0.0026222138 0.0044908594 - 446300 0.0054940749 0.0025485342 0.0052097267 - 446400 0.0054517815 0.0022344298 0.0048751364 - 446500 0.0058581454 0.0022655311 0.0051030703 - 446600 0.0059353474 0.0024510751 0.0053260089 - 446700 0.0045173182 0.0023462853 0.0045343613 - 446800 0.0041856295 0.0025763069 0.0046037211 - 446900 0.0053092458 0.0024233605 0.0049950265 - 447000 0.0043462462 0.0026704237 0.0047756367 - 447100 0.0046794193 0.0034471994 0.0057137931 - 447200 0.0050817813 0.0034844031 0.0059458909 - 447300 0.0049599601 0.0032981373 0.0057006179 - 447400 0.0043756359 0.0034179081 0.0055373567 - 447500 0.0063507401 0.0031783937 0.0062545334 - 447600 0.0059493562 0.0032156254 0.0060973448 - 447700 0.0055673052 0.0027750916 0.0054717551 - 447800 0.0043280759 0.0028954816 0.0049918933 - 447900 0.006845838 0.0026950325 0.0060109853 - 448000 0.0064587539 0.0031736977 0.0063021566 - 448100 0.0063555826 0.0032581095 0.0063365948 - 448200 0.0053336269 0.0030057102 0.0055891857 - 448300 0.0046960139 0.0031478774 0.0054225092 - 448400 0.0050279503 0.0031663325 0.005601746 - 448500 0.0070074117 0.002875415 0.0062696301 - 448600 0.0070850293 0.002653168 0.006084979 - 448700 0.0056082659 0.0028270019 0.0055435057 - 448800 0.0050853289 0.0028400634 0.0053032696 - 448900 0.003998957 0.0024190209 0.0043560157 - 449000 0.0054434758 0.0020866001 0.0047232837 - 449100 0.0043006918 0.0018381771 0.0039213247 - 449200 0.0046627218 0.0021391119 0.0043976177 - 449300 0.0052183904 0.0029195624 0.0054472203 - 449400 0.00431807 0.0030521884 0.0051437536 - 449500 0.0056376026 0.0024495885 0.0051803022 - 449600 0.0061994374 0.0021465085 0.005149361 - 449700 0.005423881 0.0022025166 0.004829709 - 449800 0.0047532776 0.0024468856 0.0047492544 - 449900 0.006421684 0.0024803518 0.005590855 - 450000 0.0047478554 0.0023229784 0.0046227208 - 450100 0.0045620761 0.0021688281 0.0043785837 - 450200 0.0051537911 0.0021357496 0.0046321171 - 450300 0.0063189366 0.0022942822 0.0053550172 - 450400 0.0050262373 0.002449932 0.0048845157 - 450500 0.0048805256 0.0028562846 0.0052202892 - 450600 0.0051208622 0.0029036994 0.005384117 - 450700 0.0051662128 0.0028916655 0.0053940498 - 450800 0.0057414448 0.0025452145 0.0053262268 - 450900 0.004090118 0.0023873882 0.0043685391 - 451000 0.0052255759 0.0027011919 0.0052323302 - 451100 0.0053629329 0.0030474355 0.0056451061 - 451200 0.0046697502 0.0030776341 0.0053395443 - 451300 0.0057023219 0.0027807614 0.0055428236 - 451400 0.0054955354 0.0024054393 0.0050673392 - 451500 0.0047976555 0.0027607982 0.0050846626 - 451600 0.0043777644 0.002938968 0.0050594476 - 451700 0.0041803844 0.0030347882 0.0050596619 - 451800 0.0058279612 0.0028832692 0.0057061879 - 451900 0.0062109245 0.002370356 0.0053787726 - 452000 0.0049976907 0.0024844504 0.0049052068 - 452100 0.0050768153 0.0028267807 0.0052858631 - 452200 0.004550057 0.0030756141 0.005279548 - 452300 0.0064725183 0.0025437904 0.0056789165 - 452400 0.0072352403 0.0031611671 0.0066657366 - 452500 0.0050385991 0.0038626705 0.006303242 - 452600 0.0064204671 0.0033418522 0.006451766 - 452700 0.0062414072 0.0028506418 0.0058738234 - 452800 0.0054558138 0.0027473951 0.0053900549 - 452900 0.0039786799 0.0023745218 0.0043016948 - 453000 0.0047009013 0.00254688 0.0048238791 - 453100 0.0055546321 0.0025861957 0.0052767206 - 453200 0.0035168791 0.0028880904 0.0045915787 - 453300 0.006350497 0.0030771007 0.0061531227 - 453400 0.0056300359 0.0030012693 0.0057283179 - 453500 0.0067192178 0.0024758651 0.0057304863 - 453600 0.0080590266 0.0025544191 0.0064580101 - 453700 0.0059000442 0.0029318986 0.0057897325 - 453800 0.0048860256 0.0028765246 0.0052431933 - 453900 0.0051051352 0.0031726859 0.0056454858 - 454000 0.0054795537 0.0030538955 0.0057080543 - 454100 0.0056747996 0.0027650331 0.0055137641 - 454200 0.0057054139 0.0028350401 0.0055986 - 454300 0.005806749 0.0027026965 0.0055153406 - 454400 0.0058146592 0.0029583278 0.0057748034 - 454500 0.0058884462 0.0030421028 0.0058943189 - 454600 0.0047479489 0.0028260254 0.0051258132 - 454700 0.0062909083 0.0028095167 0.0058566754 - 454800 0.0049724924 0.0030430497 0.0054516006 - 454900 0.005890218 0.0028166014 0.0056696757 - 455000 0.0056237283 0.0029832876 0.005707281 - 455100 0.00376877 0.0039480735 0.0057735715 - 455200 0.0071852094 0.003881456 0.0073617918 - 455300 0.0051527917 0.0035524373 0.0060483208 - 455400 0.0048938375 0.003083862 0.0054543146 - 455500 0.0054056278 0.0032024377 0.0058207886 - 455600 0.007051777 0.0030208489 0.0064365534 - 455700 0.0043723675 0.0028930394 0.0050109049 - 455800 0.0048421539 0.0029360286 0.0052814469 - 455900 0.0044086164 0.0030320833 0.0051675069 - 456000 0.0062692258 0.0028234293 0.0058600856 - 456100 0.0064945504 0.0027770243 0.0059228222 - 456200 0.0046398552 0.002835239 0.0050826689 - 456300 0.0055122776 0.0027002912 0.0053703007 - 456400 0.0046684185 0.0027225083 0.0049837735 - 456500 0.0062210862 0.0028579871 0.0058713258 - 456600 0.0076488393 0.0028041182 0.0065090247 - 456700 0.0062952337 0.0029791448 0.0060283986 - 456800 0.0051191322 0.0030421104 0.00552169 - 456900 0.0053816786 0.0028118267 0.0054185773 - 457000 0.0045053465 0.002470759 0.0046530362 - 457100 0.0043803094 0.0026134603 0.0047351727 - 457200 0.0037081417 0.002855833 0.0046519642 - 457300 0.0055045022 0.0026106633 0.0052769065 - 457400 0.0050546824 0.0026161506 0.0050645124 - 457500 0.003875194 0.0025188248 0.0043958719 - 457600 0.0052271818 0.002360878 0.0048927942 - 457700 0.004247155 0.0026022215 0.0046594372 - 457800 0.0045453239 0.0020820236 0.0042836649 - 457900 0.0059224278 0.0021974558 0.0050661318 - 458000 0.0047835591 0.0028747455 0.0051917819 - 458100 0.0054580427 0.0033037412 0.0059474806 - 458200 0.007007129 0.0032106155 0.0066046936 - 458300 0.0059139826 0.0028762564 0.0057408417 - 458400 0.0056018526 0.002604292 0.0053176894 - 458500 0.0063406889 0.0022052498 0.005276521 - 458600 0.0049251086 0.0024799383 0.0048655377 - 458700 0.0038896155 0.0026525315 0.004536564 - 458800 0.0058831884 0.0030999513 0.0059496207 - 458900 0.0038147877 0.0033297579 0.0051775457 - 459000 0.0044368504 0.0032250401 0.0053741395 - 459100 0.0055578761 0.0028281511 0.0055202474 - 459200 0.0045819344 0.0025303804 0.0047497549 - 459300 0.004350653 0.0022661296 0.0043734771 - 459400 0.004297496 0.0022762772 0.0043578768 - 459500 0.0029976294 0.0028355235 0.0042875002 - 459600 0.0034583798 0.0026951884 0.0043703411 - 459700 0.0059890612 0.002473296 0.0053742475 - 459800 0.0044784116 0.0020856324 0.004254863 - 459900 0.0044595644 0.0020551488 0.0042152503 - 460000 0.0053501598 0.0026182739 0.0052097576 - 460100 0.003453547 0.0027610646 0.0044338764 - 460200 0.0043920065 0.0023457773 0.0044731555 - 460300 0.0048950399 0.0027266088 0.0050976437 - 460400 0.0047851559 0.002961256 0.0052790659 - 460500 0.004659885 0.0028081637 0.0050652955 - 460600 0.0045167295 0.0022622011 0.004449992 - 460700 0.0072618797 0.0018863082 0.0054037812 - 460800 0.006022984 0.0019881652 0.0049055481 - 460900 0.0055259531 0.0023352087 0.0050118422 - 461000 0.0059433396 0.0022813582 0.0051601633 - 461100 0.0045057466 0.0023737986 0.0045562696 - 461200 0.0041792022 0.002068705 0.0040930061 - 461300 0.0053678386 0.0026074736 0.0052075204 - 461400 0.0054419753 0.0030231227 0.0056590795 - 461500 0.005323714 0.0031494026 0.0057280765 - 461600 0.0058385364 0.0027426333 0.0055706744 - 461700 0.0073974517 0.0024786139 0.0060617545 - 461800 0.0035894959 0.0024510088 0.0041896708 - 461900 0.0044768725 0.0026161916 0.0047846767 - 462000 0.0055114468 0.0030533012 0.0057229083 - 462100 0.0047175112 0.0031423588 0.0054274033 - 462200 0.0052353089 0.0027731063 0.0053089591 - 462300 0.0049740684 0.0025537392 0.0049630536 - 462400 0.0049755153 0.0027822515 0.0051922667 - 462500 0.0053013034 0.0028200769 0.0053878958 - 462600 0.004289165 0.0023978625 0.0044754268 - 462700 0.003589266 0.0022184266 0.0039569773 - 462800 0.0047705792 0.0023837207 0.00469447 - 462900 0.00495507 0.0024610334 0.0048611454 - 463000 0.0031718224 0.0030998244 0.0046361759 - 463100 0.0047733922 0.0026613902 0.004973502 - 463200 0.004526524 0.0021014179 0.0042939529 - 463300 0.0051778162 0.0022895959 0.0047976006 - 463400 0.0057278144 0.0024091346 0.0051835447 - 463500 0.0051855034 0.002446119 0.0049578472 - 463600 0.0058818137 0.0025018521 0.0053508557 - 463700 0.0042466823 0.003112027 0.0051690138 - 463800 0.0066176255 0.0031451192 0.0063505315 - 463900 0.0064131719 0.0024892332 0.0055956134 - 464000 0.0044034654 0.0023699711 0.0045028997 - 464100 0.0046517162 0.0024455665 0.0046987415 - 464200 0.0045470732 0.0025966804 0.004799169 - 464300 0.0056081725 0.0026711557 0.0053876142 - 464400 0.0041758909 0.002669336 0.0046920332 - 464500 0.0065173927 0.0022740883 0.0054309504 - 464600 0.004795367 0.0023085544 0.0046313103 - 464700 0.0060123803 0.0024667575 0.0053790042 - 464800 0.0061133552 0.0026939326 0.005655089 - 464900 0.0073981283 0.0026726401 0.0062561085 - 465000 0.0055176495 0.0025129761 0.0051855875 - 465100 0.0054005351 0.0021372197 0.0047531039 - 465200 0.0048375629 0.0024096319 0.0047528264 - 465300 0.0049518725 0.002238308 0.0046368712 - 465400 0.0045510705 0.0023216286 0.0045260534 - 465500 0.0041226116 0.0023034734 0.0043003634 - 465600 0.0042707142 0.0019977614 0.0040663885 - 465700 0.0044170241 0.0019817908 0.0041212868 - 465800 0.0051370437 0.0023564533 0.0048447089 - 465900 0.0050902416 0.0025562218 0.0050218075 - 466000 0.0050582914 0.0031053103 0.0055554202 - 466100 0.0044923213 0.0029250102 0.0051009784 - 466200 0.0055093251 0.0028027457 0.005471325 - 466300 0.0053037066 0.0028960262 0.0054650091 - 466400 0.005686728 0.0030377418 0.0057922506 - 466500 0.0058243221 0.0028219046 0.0056430606 - 466600 0.0039067467 0.0022156433 0.0041079737 - 466700 0.0036875231 0.0022678153 0.0040539593 - 466800 0.0055231775 0.0025775643 0.0052528534 - 466900 0.0055038439 0.0025838294 0.0052497538 - 467000 0.0052010892 0.0025630844 0.005082362 - 467100 0.005734232 0.0028699829 0.0056475015 - 467200 0.0061112718 0.002948751 0.0059088982 - 467300 0.0051865532 0.0027163 0.0052285367 - 467400 0.0051895309 0.0027321041 0.0052457831 - 467500 0.0036503258 0.0028480099 0.0046161364 - 467600 0.0048030006 0.0029583971 0.0052848505 - 467700 0.0036877342 0.0028107078 0.004596954 - 467800 0.0066095066 0.0030059336 0.0062074133 - 467900 0.0051842984 0.0026010532 0.0051121978 - 468000 0.0039397534 0.0023264182 0.0042347363 - 468100 0.0037234713 0.0023651876 0.004168744 - 468200 0.0067800612 0.0025571048 0.0058411969 - 468300 0.0038759777 0.0029221067 0.0047995334 - 468400 0.0048200184 0.0030211112 0.0053558076 - 468500 0.0060484364 0.0030409125 0.0059706239 - 468600 0.0051223971 0.0025728844 0.0050540455 - 468700 0.0054904658 0.00252257 0.0051820143 - 468800 0.0050111907 0.0024827574 0.0049100529 - 468900 0.0053405749 0.00249678 0.005083621 - 469000 0.0057075859 0.0029768292 0.0057414411 - 469100 0.004113966 0.0033809821 0.0053736844 - 469200 0.0068339598 0.0026462172 0.0059564164 - 469300 0.0057308688 0.0022934808 0.0050693704 - 469400 0.0043906061 0.0026716699 0.0047983697 - 469500 0.0041102734 0.0023651329 0.0043560466 - 469600 0.0050020005 0.0022355994 0.0046584434 - 469700 0.0047809143 0.0016936142 0.0040093696 - 469800 0.0053525448 0.0016388859 0.0042315248 - 469900 0.0040648353 0.0017442947 0.0037131993 - 470000 0.0065669517 0.0021260069 0.0053068741 - 470100 0.0061563359 0.002619176 0.0056011512 - 470200 0.0055368398 0.0025622012 0.005244108 - 470300 0.0055135083 0.0022126658 0.0048832714 - 470400 0.0046652993 0.0022566421 0.0045163965 - 470500 0.0057863488 0.0026392313 0.005441994 - 470600 0.0057693355 0.0029498632 0.0057443851 - 470700 0.0052941336 0.0027606765 0.0053250225 - 470800 0.0063990183 0.0028790913 0.0059786158 - 470900 0.0047568965 0.0028435053 0.005147627 - 471000 0.0068842813 0.0023150918 0.0056496656 - 471100 0.0046841211 0.0022445525 0.0045134237 - 471200 0.0038055846 0.0027523206 0.0045956506 - 471300 0.0044792146 0.0028532789 0.0050228985 - 471400 0.0061465558 0.0023009884 0.0052782264 - 471500 0.0062277801 0.0017097465 0.0047263275 - 471600 0.0061480745 0.002141529 0.0051195026 - 471700 0.0033705514 0.0031674206 0.0048000315 - 471800 0.0050154944 0.00292139 0.0053507701 - 471900 0.006058648 0.0024881689 0.0054228265 - 472000 0.0062640041 0.0021995047 0.0052336317 - 472100 0.0054340402 0.0024308306 0.0050629438 - 472200 0.003989829 0.0028188225 0.004751396 - 472300 0.0049953992 0.0027601455 0.005179792 - 472400 0.0052276132 0.0027333281 0.0052654532 - 472500 0.0058165242 0.0025059776 0.0053233565 - 472600 0.0057906813 0.0024657288 0.0052705901 - 472700 0.006942916 0.0024809942 0.0058439691 - 472800 0.0053825615 0.0020544002 0.0046615784 - 472900 0.0048004165 0.0016298001 0.0039550018 - 473000 0.005028153 0.0019650909 0.0044006025 - 473100 0.0034255614 0.0024144212 0.0040736775 - 473200 0.0050628649 0.0023795654 0.0048318906 - 473300 0.0057794328 0.0024983032 0.0052977159 - 473400 0.0045618358 0.0028688348 0.005078474 - 473500 0.0048513833 0.0026101497 0.0049600385 - 473600 0.0055356638 0.002498511 0.0051798481 - 473700 0.0053802262 0.0025464115 0.0051524585 - 473800 0.00510818 0.0025319921 0.0050062667 - 473900 0.0051381487 0.0022146597 0.0047034505 - 474000 0.0061947311 0.0023603237 0.0053608966 - 474100 0.0040313428 0.0024041483 0.0043568299 - 474200 0.0044744569 0.0028143051 0.0049816201 - 474300 0.0038278713 0.0025114087 0.0043655339 - 474400 0.0054127797 0.0021975254 0.0048193405 - 474500 0.0041154942 0.0023292419 0.0043226844 - 474600 0.0046469881 0.0025673108 0.0048181957 - 474700 0.0048213144 0.0029798253 0.0053151495 - 474800 0.0049389856 0.0028280421 0.0052203633 - 474900 0.006975293 0.0026281598 0.0060068173 - 475000 0.0037697184 0.0027662455 0.0045922029 - 475100 0.0040236326 0.0021722207 0.0041211678 - 475200 0.0051575315 0.0018508504 0.0043490297 - 475300 0.0031432952 0.0021764192 0.0036989528 - 475400 0.0049911628 0.0023398656 0.0047574601 - 475500 0.0055415252 0.0027072592 0.0053914354 - 475600 0.0041433484 0.0027500932 0.0047570276 - 475700 0.005270634 0.0028656569 0.0054186203 - 475800 0.0056942608 0.0025594595 0.0053176171 - 475900 0.004088747 0.002201128 0.0041816148 - 476000 0.0042204076 0.0020281487 0.0040724086 - 476100 0.0058318125 0.0016574783 0.0044822625 - 476200 0.0058442963 0.0024371189 0.0052679499 - 476300 0.0053412202 0.0031334036 0.0057205571 - 476400 0.0059018669 0.0026057579 0.0054644747 - 476500 0.0048338722 0.0020527281 0.004394135 - 476600 0.0048924179 0.0019357911 0.004305556 - 476700 0.0043861243 0.0019441015 0.0040686305 - 476800 0.0045619196 0.0019501892 0.004159869 - 476900 0.0047551197 0.0014535839 0.003756845 - 477000 0.0061913648 0.0015592099 0.0045581522 - 477100 0.0055891591 0.002176388 0.0048836369 - 477200 0.0043540467 0.0024863996 0.004595391 - 477300 0.0038601577 0.0022787226 0.0041484865 - 477400 0.0049695626 0.0018644863 0.0042716182 - 477500 0.004815476 0.0021441269 0.0044766231 - 477600 0.0055105663 0.0020697639 0.0047389444 - 477700 0.0043536467 0.0020429499 0.0041517475 - 477800 0.0066836796 0.0022652205 0.0055026278 - 477900 0.0053369824 0.0026153528 0.0052004537 - 478000 0.0064369971 0.0021442077 0.0052621282 - 478100 0.0050672513 0.0021770221 0.004631472 - 478200 0.0038828643 0.0022036068 0.0040843692 - 478300 0.0063421829 0.0021303865 0.0052023813 - 478400 0.0060391036 0.0022127507 0.0051379415 - 478500 0.0038634428 0.0023748576 0.0042462127 - 478600 0.0054894562 0.0023423196 0.005001275 - 478700 0.0049855855 0.0024445405 0.0048594334 - 478800 0.006223373 0.0024455837 0.00546003 - 478900 0.0059515923 0.0026736669 0.0055564694 - 479000 0.005061052 0.0027552864 0.0052067335 - 479100 0.0058725485 0.0025906534 0.0054351691 - 479200 0.0061519135 0.0021153659 0.0050951989 - 479300 0.0052336076 0.0020207057 0.0045557344 - 479400 0.005518007 0.0019533006 0.0046260853 - 479500 0.0042448295 0.0024134167 0.0044695061 - 479600 0.0046681683 0.0029527287 0.0052138728 - 479700 0.0047548467 0.0022224256 0.0045255544 - 479800 0.0038900149 0.0017235818 0.0036078078 - 479900 0.0049294055 0.0021023951 0.0044900759 - 480000 0.0047510802 0.0026168286 0.004918133 - 480100 0.0042979725 0.0028063914 0.0048882219 - 480200 0.0046264572 0.0027966415 0.0050375817 - 480300 0.0051964603 0.0028133213 0.0053303567 - 480400 0.0055337007 0.0028171919 0.0054975782 - 480500 0.0063877434 0.0036253917 0.0067194549 - 480600 0.005643884 0.0033820883 0.0061158447 - 480700 0.0053621487 0.0024628249 0.0050601157 - 480800 0.004797464 0.00217778 0.0045015516 - 480900 0.0062509053 0.0023138143 0.0053415965 - 481000 0.0053753897 0.0027678286 0.005371533 - 481100 0.0035616035 0.0030472353 0.004772387 - 481200 0.0047866279 0.0024235187 0.0047420416 - 481300 0.0051455542 0.0022735106 0.0047658884 - 481400 0.0041237359 0.0022113623 0.0042087968 - 481500 0.004631156 0.0020929481 0.0043361643 - 481600 0.0044058355 0.0019197726 0.0040538492 - 481700 0.0041088335 0.0020123232 0.0040025395 - 481800 0.0056109013 0.0028408442 0.0055586245 - 481900 0.0047374006 0.0033206808 0.0056153592 - 482000 0.0063229265 0.0030079055 0.006070573 - 482100 0.0058130422 0.0033215035 0.0061371958 - 482200 0.0077597113 0.0027019655 0.0064605756 - 482300 0.0065893859 0.0024973977 0.0056891315 - 482400 0.0040189965 0.0028641766 0.0048108781 - 482500 0.0049202031 0.0027526888 0.0051359122 - 482600 0.0055123705 0.0023734266 0.005043481 - 482700 0.0052790229 0.0026558566 0.0052128833 - 482800 0.0058743937 0.0023690474 0.0052144569 - 482900 0.0070221647 0.0022373664 0.0056387275 - 483000 0.0033126406 0.0025439634 0.0041485237 - 483100 0.0044123706 0.0024516572 0.0045888993 - 483200 0.0044650094 0.0027014088 0.0048641477 - 483300 0.0041912031 0.0027619887 0.0047921027 - 483400 0.0055412704 0.0023540897 0.0050381425 - 483500 0.005532407 0.0026335591 0.0053133187 - 483600 0.0051762304 0.0029242918 0.0054315284 - 483700 0.0073514053 0.0023795961 0.005940433 - 483800 0.0058492076 0.0025639254 0.0053971353 - 483900 0.0044365157 0.0027681927 0.00491713 - 484000 0.0045005475 0.0030809363 0.005260889 - 484100 0.0069803061 0.0031873174 0.0065684032 - 484200 0.0069927654 0.0029874716 0.0063745923 - 484300 0.0052848507 0.0030180195 0.0055778691 - 484400 0.004411049 0.0028691039 0.0050057058 - 484500 0.0039799474 0.002893732 0.004821519 - 484600 0.0062447324 0.0023519146 0.0053767068 - 484700 0.0054977304 0.0020609726 0.0047239358 - 484800 0.0058587631 0.0018428905 0.0046807289 - 484900 0.0070459057 0.0018226241 0.0052354847 - 485000 0.0048149848 0.0024355553 0.0047678135 - 485100 0.0061339948 0.0026951561 0.0056663098 - 485200 0.0043157218 0.0022598951 0.0043503228 - 485300 0.0044903653 0.0024462859 0.0046213066 - 485400 0.0050274164 0.0023231168 0.0047582716 - 485500 0.0048916211 0.0023777703 0.0047471493 - 485600 0.0062398267 0.002534779 0.0055571951 - 485700 0.005392126 0.002458414 0.005070225 - 485800 0.0063614205 0.0025063479 0.0055876609 - 485900 0.0040874542 0.0025754494 0.00455531 - 486000 0.0060414141 0.0023754748 0.0053017848 - 486100 0.0048688957 0.0026864735 0.0050448449 - 486200 0.0059322501 0.0024450211 0.0053184548 - 486300 0.0043875702 0.0023348433 0.0044600726 - 486400 0.006080852 0.002134399 0.0050798117 - 486500 0.0044129482 0.0019195061 0.0040570279 - 486600 0.0063001527 0.0017271637 0.0047788001 - 486700 0.0046375809 0.0017990925 0.0040454208 - 486800 0.0048029231 0.0022103281 0.004536744 - 486900 0.0057973393 0.0025631719 0.0053712581 - 487000 0.0044288513 0.0028839957 0.0050292206 - 487100 0.0067442949 0.0029683185 0.0062350863 - 487200 0.005202376 0.0028901392 0.0054100401 - 487300 0.0055701185 0.0027489451 0.0054469713 - 487400 0.0056681665 0.0025479244 0.0052934426 - 487500 0.0056600707 0.0025386846 0.0052802814 - 487600 0.0053033218 0.0025799102 0.0051487068 - 487700 0.0038349214 0.0029554471 0.0048129872 - 487800 0.0034292781 0.0027318193 0.0043928759 - 487900 0.00460703 0.0025018369 0.004733367 - 488000 0.0069637079 0.0023022664 0.0056753124 - 488100 0.0037580135 0.0027982885 0.0046185763 - 488200 0.0056614055 0.0028352006 0.0055774439 - 488300 0.006494712 0.0025897247 0.0057356008 - 488400 0.0054954672 0.0026168543 0.0052787212 - 488500 0.0055350169 0.0028524087 0.0055334326 - 488600 0.0050322799 0.0030931201 0.0055306306 - 488700 0.0043574902 0.0031448059 0.0052554653 - 488800 0.0051975433 0.0030613534 0.0055789134 - 488900 0.0058839388 0.0026396949 0.0054897277 - 489000 0.0064419514 0.0021984565 0.0053187768 - 489100 0.0046967809 0.0020257794 0.0043007827 - 489200 0.0054692971 0.0023685484 0.0050177392 - 489300 0.00504637 0.0028794102 0.0053237457 - 489400 0.0044891299 0.003181306 0.0053557283 - 489500 0.0046455323 0.0031940408 0.0054442205 - 489600 0.0065218709 0.0025912034 0.0057502346 - 489700 0.0051733115 0.0026077014 0.0051135241 - 489800 0.0035644192 0.0025546123 0.0042811278 - 489900 0.0039191628 0.0025915928 0.0044899373 - 490000 0.0041132212 0.0028041708 0.0047965123 - 490100 0.005582137 0.0028368998 0.0055407474 - 490200 0.0048301335 0.0027130162 0.0050526121 - 490300 0.0056799428 0.0026787901 0.0054300124 - 490400 0.0082013455 0.0027427555 0.0067152822 - 490500 0.0056668702 0.0026429724 0.0053878626 - 490600 0.0057139562 0.0024760455 0.0052437431 - 490700 0.0048259677 0.0022843124 0.0046218905 - 490800 0.0049652057 0.0019312249 0.0043362464 - 490900 0.0031312324 0.0018946916 0.0034113822 - 491000 0.0047512333 0.0020526531 0.0043540317 - 491100 0.0051339485 0.0025687189 0.0050554752 - 491200 0.0049289692 0.00299753 0.0053849995 - 491300 0.0078189444 0.002631964 0.0064192652 - 491400 0.0048727403 0.002678362 0.0050385956 - 491500 0.0051279573 0.0024615657 0.0049454201 - 491600 0.0044386014 0.0020626901 0.0042126376 - 491700 0.0047699638 0.0024301759 0.0047406271 - 491800 0.006072844 0.0028367656 0.0057782995 - 491900 0.0060515169 0.0033275671 0.0062587706 - 492000 0.0042752675 0.0036966936 0.0057675263 - 492100 0.0046502036 0.0032003561 0.0054527985 - 492200 0.0043685985 0.0027508513 0.0048668912 - 492300 0.0060963321 0.0027585912 0.0057115021 - 492400 0.0046449449 0.0024397023 0.0046895976 - 492500 0.0037262744 0.0025491993 0.0043541135 - 492600 0.0060159311 0.0023798466 0.0052938132 - 492700 0.0065088358 0.0022733982 0.0054261155 - 492800 0.0051664449 0.0023954969 0.0048979936 - 492900 0.005992178 0.0021306929 0.0050331541 - 493000 0.0038677015 0.0022277328 0.0041011507 - 493100 0.0041956215 0.0025727383 0.0046049924 - 493200 0.0070230245 0.0023435232 0.0057453007 - 493300 0.0054371153 0.0021532253 0.004786828 - 493400 0.0043550985 0.0022763165 0.0043858173 - 493500 0.0049367902 0.0022698571 0.0046611149 - 493600 0.0037335368 0.0025787193 0.0043871512 - 493700 0.0054326046 0.0027819426 0.0054133605 - 493800 0.0053550772 0.0027033185 0.005297184 - 493900 0.0051164232 0.0026523102 0.0051305777 - 494000 0.0054370919 0.0029831151 0.0056167064 - 494100 0.0053694006 0.0030988999 0.0056997033 - 494200 0.0055338393 0.0030150907 0.0056955441 - 494300 0.0067353752 0.0029400985 0.0062025459 - 494400 0.0050803428 0.0031076738 0.0055684649 - 494500 0.00578682 0.0029392056 0.0057421965 - 494600 0.0057609042 0.0028929604 0.0056833984 - 494700 0.0045089385 0.0031176949 0.005301712 - 494800 0.0048663498 0.003228167 0.0055853052 - 494900 0.0052534245 0.0027495147 0.0052941422 - 495000 0.0077561 0.0026203896 0.0063772505 - 495100 0.0059820726 0.0036574487 0.0065550151 - 495200 0.0056909423 0.0039711075 0.0067276577 - 495300 0.0040527282 0.0033268043 0.0052898445 - 495400 0.0060957274 0.0030422517 0.0059948696 - 495500 0.0058034516 0.0028594082 0.0056704551 - 495600 0.0054701476 0.002743286 0.0053928888 - 495700 0.0047603497 0.0030076384 0.0053134328 - 495800 0.0050545047 0.0027340816 0.0051823573 - 495900 0.0058939397 0.0023361559 0.005191033 - 496000 0.0061110569 0.0030029718 0.005963015 - 496100 0.0058853412 0.0033621921 0.0062129042 - 496200 0.0067248343 0.0028319212 0.0060892629 - 496300 0.0066981065 0.002770805 0.0060152004 - 496400 0.0064863025 0.0031447331 0.0062865359 - 496500 0.0061897639 0.003199935 0.0061981019 - 496600 0.0051472149 0.0028675541 0.0053607363 - 496700 0.006382336 0.0025626756 0.0056541196 - 496800 0.006204864 0.0027518023 0.0057572833 - 496900 0.0049929385 0.0025816073 0.0050000619 - 497000 0.0044177274 0.0020356099 0.0041754466 - 497100 0.0036613656 0.0019894594 0.0037629334 - 497200 0.0070057139 0.0022869125 0.0056803052 - 497300 0.0061026336 0.0028285277 0.0057844908 - 497400 0.0057677369 0.0033667937 0.0061605412 - 497500 0.006522736 0.0031774545 0.0063369047 - 497600 0.005729313 0.0023769947 0.0051521307 - 497700 0.0056048631 0.0022468609 0.0049617164 - 497800 0.0039242035 0.0024076038 0.0043083899 - 497900 0.005087084 0.0024470648 0.0049111211 - 498000 0.0046375807 0.0027283772 0.0049747053 - 498100 0.0042674298 0.0025705554 0.0046375917 - 498200 0.0060898466 0.0022674248 0.0052171943 - 498300 0.0071775611 0.0027975309 0.006274162 - 498400 0.0041129562 0.0029626355 0.0049548487 - 498500 0.0051784607 0.0031997129 0.0057080298 - 498600 0.0044023236 0.0028993885 0.005031764 - 498700 0.0047330695 0.0025855405 0.0048781211 - 498800 0.0065985036 0.0018670715 0.0050632217 - 498900 0.0059491851 0.0017070008 0.0045886374 - 499000 0.0070807184 0.0015857537 0.0050154767 - 499100 0.006738136 0.0016622015 0.0049259862 - 499200 0.0059721871 0.0021384546 0.0050312327 - 499300 0.0051852902 0.0020369556 0.0045485806 - 499400 0.0046114789 0.001874611 0.0041082961 - 499500 0.00443148 0.001637688 0.0037841861 - 499600 0.0042865988 0.0018736111 0.0039499324 - 499700 0.005312305 0.0018473267 0.0044204745 - 499800 0.0049067888 0.0017631609 0.0041398867 - 499900 0.0043170056 0.001667882 0.0037589316 - 500000 0.0032993183 0.001608823 0.0032069303 - 500100 0.0042357324 0.0016772916 0.0037289745 - 500200 0.0064164971 0.0016756118 0.0047836025 - 500300 0.0058427162 0.0018270082 0.0046570738 - 500400 0.0049681423 0.00214396 0.004550404 - 500500 0.0053330078 0.0017446589 0.0043278345 - 500600 0.0048810588 0.0018252984 0.0041895613 - 500700 0.0055179408 0.0019875371 0.0046602896 - 500800 0.0063163315 0.0022790737 0.0053385468 - 500900 0.0043383108 0.0020630132 0.0041643825 - 501000 0.0067816853 0.0020876045 0.0053724833 - 501100 0.0043433248 0.0026634376 0.0047672356 - 501200 0.004296162 0.0027911033 0.0048720568 - 501300 0.0051173998 0.0021797378 0.0046584783 - 501400 0.0054966542 0.0020433582 0.0047058001 - 501500 0.0059269688 0.0018618921 0.0047327676 - 501600 0.005592786 0.0022180779 0.0049270836 - 501700 0.0053995068 0.0021221823 0.0047375684 - 501800 0.0051127126 0.0020865538 0.004563024 - 501900 0.0048960788 0.0020942046 0.0044657428 - 502000 0.0038682703 0.00259403 0.0044677234 - 502100 0.0043085251 0.002859221 0.0049461628 - 502200 0.0053673749 0.0025324398 0.005132262 - 502300 0.0072176813 0.002002544 0.0054986084 - 502400 0.0045092757 0.0022813867 0.0044655671 - 502500 0.0052097042 0.0023251606 0.004848611 - 502600 0.0049740612 0.0022295801 0.0046388909 - 502700 0.0057863047 0.0022169832 0.0050197246 - 502800 0.006009963 0.0019928939 0.0049039698 - 502900 0.0048387329 0.0023641772 0.0047079384 - 503000 0.0061073403 0.0028606656 0.0058189086 - 503100 0.0040274401 0.0028389299 0.0047897212 - 503200 0.0056944715 0.0026483614 0.005406621 - 503300 0.0057543444 0.0024669461 0.0052542067 - 503400 0.0052244853 0.0022540072 0.0047846173 - 503500 0.0059037997 0.0021992031 0.0050588561 - 503600 0.0060853152 0.0023168731 0.0052644477 - 503700 0.0067237791 0.0020783954 0.0053352259 - 503800 0.0064061539 0.0017827275 0.0048857083 - 503900 0.0042079696 0.0023148491 0.0043530843 - 504000 0.0060932822 0.002303571 0.0052550046 - 504100 0.0037727513 0.002495298 0.0043227244 - 504200 0.0055797927 0.0023454399 0.005048152 - 504300 0.0055118653 0.0020767092 0.0047465189 - 504400 0.0043522126 0.0018645119 0.0039726149 - 504500 0.0047224479 0.0020586461 0.0043460818 - 504600 0.0057028805 0.0021327978 0.0048951306 - 504700 0.006450019 0.0019334898 0.0050577178 - 504800 0.0052435035 0.0018945815 0.0044344035 - 504900 0.0056019153 0.0019536788 0.0046671065 - 505000 0.0048879769 0.0018372793 0.0042048932 - 505100 0.0040663519 0.0014307809 0.0034004201 - 505200 0.0042107345 0.0015649617 0.0036045362 - 505300 0.0045448375 0.0013343663 0.003535772 - 505400 0.0056575824 0.0013886024 0.0041289939 - 505500 0.0070898906 0.0016637565 0.0050979223 - 505600 0.0040480823 0.0023299536 0.0042907435 - 505700 0.0042093282 0.0024478238 0.0044867172 - 505800 0.0054540222 0.0020082786 0.0046500706 - 505900 0.004444581 0.0022319756 0.0043848195 - 506000 0.0050779026 0.00239419 0.0048537991 - 506100 0.0055617835 0.0023060387 0.0050000276 - 506200 0.0049453096 0.0017253624 0.0041207468 - 506300 0.0046165318 0.0013407189 0.0035768515 - 506400 0.0046173862 0.0018982109 0.0041347574 - 506500 0.0051447666 0.0021955252 0.0046875215 - 506600 0.0038350621 0.0021778985 0.0040355067 - 506700 0.0053889377 0.0022283549 0.0048386216 - 506800 0.0057043432 0.0021142348 0.004877276 - 506900 0.0041008627 0.0021726822 0.0041590376 - 507000 0.0061094419 0.002116832 0.0050760929 - 507100 0.0058585442 0.0024369803 0.0052747127 - 507200 0.0048739543 0.0024024533 0.004763275 - 507300 0.0047561266 0.002519304 0.0048230528 - 507400 0.0064345371 0.0022637258 0.0053804547 - 507500 0.0059195023 0.0025663938 0.0054336528 - 507600 0.0049725061 0.0024661253 0.0048746829 - 507700 0.005032419 0.002013263 0.004450841 - 507800 0.0051551019 0.0018199718 0.0043169743 - 507900 0.0033728938 0.0022862555 0.0039200009 - 508000 0.0050433686 0.0025749666 0.0050178482 - 508100 0.0035832264 0.0024158857 0.004151511 - 508200 0.0074599094 0.0020443429 0.0056577365 - 508300 0.0059261755 0.002683676 0.0055541673 - 508400 0.0059608876 0.0029674757 0.0058547806 - 508500 0.0043143783 0.0029347162 0.0050244932 - 508600 0.0057436375 0.0028869161 0.0056689906 - 508700 0.005534383 0.0024124568 0.0050931736 - 508800 0.0046972026 0.0023144925 0.0045897 - 508900 0.005517408 0.0026294877 0.0053019822 - 509000 0.0057774567 0.0028002115 0.0055986671 - 509100 0.005319679 0.0026796271 0.0052563466 - 509200 0.0050245704 0.0028189534 0.0052527297 - 509300 0.0055063743 0.0030860361 0.0057531861 - 509400 0.0051820755 0.0035204776 0.0060305454 - 509500 0.0056591015 0.003207115 0.0059482423 - 509600 0.0041583931 0.0029289109 0.0049431326 - 509700 0.0051650282 0.0026571604 0.005158971 - 509800 0.0058293214 0.0026431534 0.005466731 - 509900 0.0048557482 0.0019842825 0.0043362856 - 510000 0.0051225107 0.002272965 0.0047541812 - 510100 0.0050807332 0.0023745949 0.004835575 - 510200 0.0051961337 0.0026978518 0.005214729 - 510300 0.0044597975 0.0030027027 0.0051629171 - 510400 0.0040932708 0.0029733033 0.0049559813 - 510500 0.0049138672 0.0031562323 0.0055363868 - 510600 0.0069482384 0.0032743482 0.0066399011 - 510700 0.0047196643 0.0033558816 0.005641969 - 510800 0.0051683347 0.0034435438 0.0059469559 - 510900 0.0046348361 0.0033150483 0.005560047 - 511000 0.0062301549 0.0028742535 0.0058919848 - 511100 0.0050414037 0.0025331935 0.0049751234 - 511200 0.0051946735 0.0024103631 0.0049265331 - 511300 0.0047184754 0.0026058351 0.0048913466 - 511400 0.005450099 0.0025748181 0.0052147098 - 511500 0.0045578619 0.001776277 0.0039839914 - 511600 0.0049702742 0.001599674 0.0040071506 - 511700 0.0050248182 0.00214128 0.0045751763 - 511800 0.0051323377 0.0025174666 0.0050034427 - 511900 0.0047391173 0.002103458 0.004398968 - 512000 0.0044518967 0.0017788708 0.0039352582 - 512100 0.0049511977 0.0019213591 0.0043195955 - 512200 0.003799335 0.0025925316 0.0044328344 - 512300 0.0044135984 0.003154165 0.0052920017 - 512400 0.0041401946 0.0030853768 0.0050907836 - 512500 0.0050183023 0.00283652 0.0052672601 - 512600 0.0042379312 0.0024487124 0.0045014603 - 512700 0.0045547711 0.0020163616 0.0042225789 - 512800 0.0051106968 0.002003509 0.0044790027 - 512900 0.0043370996 0.0020885269 0.0041893095 - 513000 0.0041131414 0.0023995112 0.0043918141 - 513100 0.0053108806 0.0023586101 0.0049310679 - 513200 0.0050290451 0.0020706313 0.004506575 - 513300 0.004762348 0.0019348467 0.004241609 - 513400 0.0069595561 0.0017505745 0.0051216095 - 513500 0.0046538615 0.0021654951 0.0044197092 - 513600 0.0043824693 0.0026427366 0.0047654951 - 513700 0.0049757312 0.0021447029 0.0045548227 - 513800 0.0054334602 0.0026033851 0.0052352174 - 513900 0.0062849501 0.0026074037 0.0056516763 - 514000 0.0069508307 0.0025719548 0.0059387634 - 514100 0.0065189194 0.0030267894 0.006184391 - 514200 0.0050982116 0.0034218581 0.0058913043 - 514300 0.0049487333 0.0031817942 0.005578837 - 514400 0.0044062001 0.0027490446 0.0048832978 - 514500 0.0064269289 0.0024542652 0.0055673089 - 514600 0.0050822234 0.0027032718 0.0051649737 - 514700 0.004094303 0.0025875443 0.0045707223 - 514800 0.0061221175 0.002139394 0.0051047946 - 514900 0.0072661036 0.0020340325 0.0055535514 - 515000 0.0058090075 0.0024749012 0.0052886392 - 515100 0.0054032506 0.002551522 0.0051687215 - 515200 0.0052785575 0.0025564872 0.0051132885 - 515300 0.0047983842 0.0027508199 0.0050750372 - 515400 0.0042785383 0.0025338003 0.0046062173 - 515500 0.0050673841 0.0019894325 0.0044439467 - 515600 0.0044860431 0.002081796 0.0042547231 - 515700 0.003250059 0.0021068181 0.0036810654 - 515800 0.0059909491 0.0021341952 0.0050360612 - 515900 0.0046746796 0.0017890336 0.0040533315 - 516000 0.0055209368 0.0020708156 0.0047450194 - 516100 0.0065994269 0.0022743588 0.0054709562 - 516200 0.0074097058 0.0020125602 0.0056016364 - 516300 0.0063357708 0.002287745 0.005356634 - 516400 0.0048568167 0.0025736188 0.0049261394 - 516500 0.0064312669 0.00201034 0.0051254849 - 516600 0.0040751731 0.0020361769 0.0040100888 - 516700 0.0048689178 0.0020394246 0.0043978067 - 516800 0.0049192351 0.002433234 0.0048159885 - 516900 0.0051745795 0.0027563148 0.0052627518 - 517000 0.0072987087 0.0028593399 0.0063946519 - 517100 0.0045933572 0.0030878862 0.0053127936 - 517200 0.005575091 0.0027067367 0.0054071714 - 517300 0.0055050529 0.0021070531 0.0047735631 - 517400 0.0056718869 0.0017623465 0.0045096667 - 517500 0.0038031478 0.0018628454 0.0037049951 - 517600 0.0036833675 0.0019709456 0.0037550767 - 517700 0.0061270973 0.0020203165 0.0049881292 - 517800 0.0060546287 0.0024413626 0.0053740733 - 517900 0.0040255476 0.0028285136 0.0047783882 - 518000 0.0050631726 0.002699403 0.0051518773 - 518100 0.0054577569 0.0026273923 0.0052709933 - 518200 0.0036984147 0.0025929924 0.004384412 - 518300 0.0039632636 0.0021709854 0.0040906912 - 518400 0.0055198472 0.0021706724 0.0048443484 - 518500 0.0035248928 0.0024582597 0.0041656296 - 518600 0.0059881825 0.0023383408 0.0052388667 - 518700 0.0065783757 0.0023440884 0.0055304892 - 518800 0.0043088939 0.0026734737 0.0047605942 - 518900 0.0047910759 0.0023773425 0.0046980198 - 519000 0.006128246 0.0024030049 0.005371374 - 519100 0.0052525367 0.0029440895 0.0054882869 - 519200 0.0046234724 0.0029171888 0.0051566833 - 519300 0.0050081952 0.0029163714 0.005342216 - 519400 0.0063769364 0.0027632127 0.0058520413 - 519500 0.0061558435 0.0023306795 0.0053124162 - 519600 0.0064683508 0.0026070135 0.0057401209 - 519700 0.0053973891 0.0027328971 0.0053472575 - 519800 0.0041931304 0.0028241892 0.0048552367 - 519900 0.0052737178 0.0023597445 0.0049142016 - 520000 0.0043678529 0.0021867615 0.0043024402 - 520100 0.0037919305 0.0023121052 0.0041488216 - 520200 0.0060554262 0.0023096823 0.0052427793 - 520300 0.0042703557 0.0024533441 0.0045217976 - 520400 0.0051831553 0.0026934706 0.0052040614 - 520500 0.0040682467 0.0025176755 0.0044882325 - 520600 0.0056862538 0.002228791 0.0049830701 - 520700 0.0058732667 0.0022347786 0.0050796422 - 520800 0.0055104174 0.002255991 0.0049250994 - 520900 0.0027963696 0.0022621147 0.0036166062 - 521000 0.0061852593 0.0020585009 0.0050544858 - 521100 0.0053609789 0.0023966648 0.0049933889 - 521200 0.0050655709 0.0025323242 0.0049859601 - 521300 0.0048224285 0.0025241414 0.0048600052 - 521400 0.0045896641 0.0027450743 0.0049681929 - 521500 0.0043301314 0.0028501055 0.0049475129 - 521600 0.0056775565 0.0027695238 0.0055195903 - 521700 0.0053361086 0.0025308467 0.0051155243 - 521800 0.0047211673 0.0027485948 0.0050354103 - 521900 0.0049204998 0.0027896047 0.0051729718 - 522000 0.0035939448 0.00267229 0.004413107 - 522100 0.0047248755 0.0027422123 0.0050308238 - 522200 0.0058240433 0.0023953096 0.0052163306 - 522300 0.0052382428 0.002252974 0.0047902478 - 522400 0.0045279111 0.0019238053 0.0041170122 - 522500 0.0046539876 0.0018687635 0.0041230387 - 522600 0.0050176079 0.0020362121 0.0044666159 - 522700 0.0039190908 0.002052654 0.0039509636 - 522800 0.0037650101 0.0024136507 0.0042373275 - 522900 0.0052380532 0.0023970329 0.0049342149 - 523000 0.0052934291 0.0022348659 0.0047988706 - 523100 0.0044140673 0.0026742949 0.0048123588 - 523200 0.0039445915 0.0027364646 0.0046471261 - 523300 0.0058018272 0.0030182347 0.0058284948 - 523400 0.0047642957 0.0025753349 0.0048830407 - 523500 0.0050962305 0.0026421463 0.0051106329 - 523600 0.0042194131 0.0024307968 0.004474575 - 523700 0.0047678774 0.0027618331 0.0050712737 - 523800 0.0046844303 0.0026263306 0.0048953516 - 523900 0.0046023044 0.0024740574 0.0047032986 - 524000 0.0041949733 0.0028498556 0.0048817958 - 524100 0.0048278994 0.0023345719 0.0046730857 - 524200 0.0050404078 0.0028544728 0.0052959204 - 524300 0.0064614116 0.0030249036 0.0061546499 - 524400 0.0046792492 0.0031111465 0.0053776578 - 524500 0.0061400821 0.0021432673 0.0051173695 - 524600 0.0057563996 0.0020390118 0.0048272679 - 524700 0.0041016163 0.0025689606 0.004555681 - 524800 0.0069216083 0.0024188171 0.0057714711 - 524900 0.0044262017 0.0028725975 0.0050165389 - 525000 0.005270869 0.00290703 0.0054601072 - 525100 0.0050602989 0.0026134293 0.0050645116 - 525200 0.0055269238 0.002518869 0.0051959727 - 525300 0.0046077825 0.0026939195 0.0049258142 - 525400 0.0055437744 0.0027602664 0.0054455321 - 525500 0.0041887532 0.0029035383 0.0049324656 - 525600 0.0057813788 0.0027885095 0.0055888649 - 525700 0.0056689891 0.0027608076 0.0055067242 - 525800 0.0050156214 0.0029108956 0.0053403372 - 525900 0.0055844563 0.0030354489 0.0057404199 - 526000 0.0061368784 0.0031595708 0.0061321213 - 526100 0.0047292281 0.0028878349 0.0051785548 - 526200 0.0058960157 0.0028097507 0.0056656333 - 526300 0.0045894403 0.0031987078 0.005421718 - 526400 0.0045465856 0.0031275745 0.0053298269 - 526500 0.0055590305 0.0030423327 0.0057349881 - 526600 0.006441985 0.0029351996 0.0060555361 - 526700 0.0060417134 0.0032939947 0.0062204496 - 526800 0.0048378535 0.0029341458 0.0052774811 - 526900 0.005632075 0.0025309015 0.0052589378 - 527000 0.0054437634 0.0021829688 0.0048197917 - 527100 0.0044776113 0.0025882043 0.0047570473 - 527200 0.0056378241 0.002616825 0.005347646 - 527300 0.004737756 0.0022615187 0.0045563692 - 527400 0.0048228289 0.00212585 0.0044619077 - 527500 0.0037632344 0.0023241302 0.0041469469 - 527600 0.0048313496 0.002447901 0.004788086 - 527700 0.0043116834 0.0024711283 0.0045596 - 527800 0.0043658095 0.0024952566 0.0046099456 - 527900 0.0035715458 0.0024969292 0.0042268967 - 528000 0.0047002505 0.0022032522 0.004479936 - 528100 0.0051051873 0.0023209632 0.0047937883 - 528200 0.0048817825 0.0023785122 0.0047431256 - 528300 0.0040758726 0.002595663 0.0045699138 - 528400 0.0052915039 0.0031980005 0.0057610727 - 528500 0.0067582652 0.0025388476 0.0058123822 - 528600 0.005876625 0.0022449191 0.0050914093 - 528700 0.003192079 0.0027509498 0.0042971131 - 528800 0.0062133903 0.0027307251 0.0057403361 - 528900 0.0066980458 0.0023929775 0.0056373435 - 529000 0.0054134206 0.0026524197 0.0052745454 - 529100 0.0042328582 0.0026033952 0.0046536859 - 529200 0.005390425 0.0027496564 0.0053606436 - 529300 0.005661039 0.0030432251 0.0057852909 - 529400 0.0044075278 0.0036563439 0.0057912402 - 529500 0.0060970279 0.0033904348 0.0063436827 - 529600 0.0059589195 0.0023417613 0.005228113 - 529700 0.00537436 0.0023981647 0.0050013703 - 529800 0.0041100465 0.0027147159 0.0047055196 - 529900 0.0043527516 0.0029683936 0.0050767577 - 530000 0.0034469239 0.003247984 0.0049175877 - 530100 0.0060432222 0.0027891952 0.005716381 - 530200 0.0079598154 0.002101132 0.0059566676 - 530300 0.005617787 0.0025370682 0.0052581838 - 530400 0.0059327995 0.0029956944 0.0058693941 - 530500 0.0061360322 0.0024922302 0.0054643708 - 530600 0.0055974427 0.0024131506 0.0051244119 - 530700 0.0050820876 0.0023386907 0.0048003268 - 530800 0.0043898693 0.0025794687 0.0047058117 - 530900 0.0058921107 0.0020376901 0.0048916812 - 531000 0.0041646959 0.0022086635 0.0042259381 - 531100 0.0063311425 0.0023063582 0.0053730054 - 531200 0.0045421264 0.0024370267 0.0046371192 - 531300 0.0052786792 0.0026721308 0.005228991 - 531400 0.0045737654 0.0028191735 0.0050345911 - 531500 0.0054695654 0.0027645049 0.0054138257 - 531600 0.0047359359 0.0027416939 0.0050356628 - 531700 0.0056099499 0.0029627744 0.0056800938 - 531800 0.0053850423 0.0029220142 0.0055303941 - 531900 0.0045832073 0.0025194258 0.0047394168 - 532000 0.0048063271 0.0023408247 0.0046688894 - 532100 0.0051526845 0.002074624 0.0045704555 - 532200 0.0053657602 0.0019700955 0.0045691356 - 532300 0.0059173056 0.0019633779 0.0048295729 - 532400 0.0051278744 0.0019910645 0.0044748787 - 532500 0.0045224823 0.0024439173 0.0046344947 - 532600 0.0044857315 0.0027554372 0.0049282134 - 532700 0.0049487519 0.0025345837 0.0049316354 - 532800 0.0052825167 0.0023857729 0.004944492 - 532900 0.0047027298 0.0024816738 0.0047595586 - 533000 0.0062123182 0.0026632936 0.0056723852 - 533100 0.004973404 0.0030723643 0.0054813568 - 533200 0.0039915497 0.003372246 0.0053056528 - 533300 0.0044911181 0.0028831997 0.005058585 - 533400 0.0053964049 0.0029285286 0.0055424122 - 533500 0.0050886418 0.0025140144 0.0049788253 - 533600 0.0041492704 0.0026412702 0.0046510731 - 533700 0.0054136313 0.0024986979 0.0051209256 - 533800 0.00619048 0.0022164931 0.0052150068 - 533900 0.0073377797 0.0022046517 0.0057588888 - 534000 0.0040091409 0.0024189944 0.0043609221 - 534100 0.0067725197 0.0027079106 0.0059883499 - 534200 0.003573658 0.0024979908 0.0042289814 - 534300 0.0068819459 0.0020445816 0.0053780242 - 534400 0.0067056665 0.002220251 0.0054683082 - 534500 0.0061318764 0.0026200407 0.0055901683 - 534600 0.0065528202 0.0029693524 0.0061433747 - 534700 0.004640391 0.003209905 0.0054575944 - 534800 0.005574734 0.0024278335 0.0051280953 - 534900 0.0059694192 0.0024344037 0.0053258411 - 535000 0.0037700408 0.0023400032 0.0041661167 - 535100 0.0045623732 0.0022638721 0.0044737716 - 535200 0.0039927421 0.002451231 0.0043852155 - 535300 0.0060670048 0.0024403036 0.005379009 - 535400 0.0048485349 0.002337623 0.0046861321 - 535500 0.0057886916 0.0022999702 0.0051038677 - 535600 0.0055892771 0.0023917824 0.0050990885 - 535700 0.0067239878 0.0026262541 0.0058831857 - 535800 0.0064324593 0.0025380457 0.0056537682 - 535900 0.0043815235 0.0029904056 0.0051127061 - 536000 0.0051528263 0.0027175001 0.0052134003 - 536100 0.0053703445 0.0028556705 0.0054569312 - 536200 0.0056732611 0.0029379122 0.0056858981 - 536300 0.0072480956 0.0025030799 0.0060138762 - 536400 0.004849866 0.0027211814 0.0050703352 - 536500 0.0049455511 0.002674492 0.0050699933 - 536600 0.0043236403 0.002722026 0.0048162893 - 536700 0.0048792434 0.0032566543 0.0056200378 - 536800 0.0040785002 0.0034062068 0.0053817303 - 536900 0.0042769548 0.0030672294 0.0051388793 - 537000 0.0045045904 0.003072091 0.0052540019 - 537100 0.0054746796 0.0029187715 0.0055705695 - 537200 0.0048578342 0.0032657387 0.0056187522 - 537300 0.0042425648 0.0035328063 0.0055877986 - 537400 0.0052875365 0.0030021833 0.0055633338 - 537500 0.0050230528 0.0026416536 0.0050746948 - 537600 0.0055640674 0.002219872 0.0049149671 - 537700 0.0041085805 0.0025016353 0.004491729 - 537800 0.0049245499 0.0023915509 0.0047768797 - 537900 0.0047427385 0.002450941 0.0047482049 - 538000 0.0053619141 0.0025597995 0.0051569766 - 538100 0.0052720346 0.0027714816 0.0053251234 - 538200 0.0058818627 0.0029899107 0.005838938 - 538300 0.0038771199 0.0028823677 0.0047603476 - 538400 0.0048174302 0.0026088135 0.0049422562 - 538500 0.0050546274 0.0027221434 0.0051704785 - 538600 0.006485699 0.0021895159 0.0053310264 - 538700 0.0054858447 0.0017149738 0.0043721799 - 538800 0.0058693539 0.0018093993 0.0046523676 - 538900 0.0058723108 0.002409977 0.0052543776 - 539000 0.0055144372 0.0025692191 0.0052402746 - 539100 0.005679146 0.0023069777 0.005057814 - 539200 0.0046027402 0.0025965173 0.0048259696 - 539300 0.0044752163 0.0027180412 0.0048857241 - 539400 0.005018521 0.0023036925 0.0047345386 - 539500 0.0052616517 0.0022767507 0.0048253632 - 539600 0.0057967175 0.0029869117 0.0057946967 - 539700 0.0065233118 0.003283493 0.0064432222 - 539800 0.0057916386 0.0027382902 0.0055436152 - 539900 0.0062385876 0.002839082 0.0058608979 - 540000 0.0042398106 0.0025290867 0.0045827449 - 540100 0.0051541769 0.0021387814 0.0046353359 - 540200 0.0041572182 0.0021274714 0.0041411239 - 540300 0.0053917702 0.0024025154 0.0050141541 - 540400 0.0040857752 0.002021617 0.0040006644 - 540500 0.0047667756 0.0015378008 0.0038467077 - 540600 0.0042663822 0.0015484675 0.0036149964 - 540700 0.0034663952 0.0016797444 0.0033587796 - 540800 0.0034561166 0.0016935162 0.0033675726 - 540900 0.0047643628 0.0019110343 0.0042187726 - 541000 0.0050728441 0.0021718839 0.0046290427 - 541100 0.0042811193 0.0024130893 0.0044867565 - 541200 0.0048496487 0.0028563414 0.00520539 - 541300 0.004985339 0.0027095842 0.0051243577 - 541400 0.0047979341 0.0021403486 0.0044643479 - 541500 0.0070123367 0.0019429512 0.0053395518 - 541600 0.0050958651 0.0020924082 0.0045607179 - 541700 0.0062014117 0.0020082089 0.0050120177 - 541800 0.0062289094 0.0019066496 0.0049237776 - 541900 0.0055593914 0.0022653977 0.004958228 - 542000 0.0059408554 0.002100056 0.0049776578 - 542100 0.0053898641 0.0018001363 0.0044108517 - 542200 0.0036741772 0.0017627849 0.0035424645 - 542300 0.0059332111 0.0016099044 0.0044838036 - 542400 0.0058705079 0.0017543757 0.004597903 - 542500 0.0048775726 0.0021754716 0.0045380458 - 542600 0.0063241432 0.0021277654 0.0051910223 - 542700 0.0049632936 0.0022798731 0.0046839684 - 542800 0.0043557734 0.0026352364 0.0047450641 - 542900 0.0051525096 0.0025076471 0.005003394 - 543000 0.0050169822 0.002181007 0.0046111078 - 543100 0.0038258799 0.0020574173 0.0039105779 - 543200 0.0044343136 0.0018112041 0.0039590747 - 543300 0.0060264237 0.0020397335 0.0049587825 - 543400 0.0054954441 0.0018406213 0.0045024771 - 543500 0.0065228721 0.0016899228 0.004849439 - 543600 0.0055522906 0.0021284948 0.0048178855 - 543700 0.0045604336 0.002127948 0.004336908 - 543800 0.0053220422 0.0019926537 0.0045705179 - 543900 0.0061586744 0.0018268841 0.004809992 - 544000 0.0044582323 0.0021649635 0.0043244197 - 544100 0.0059623704 0.0022976386 0.0051856618 - 544200 0.0052569243 0.0025356408 0.0050819635 - 544300 0.0066984546 0.0022820027 0.0055265666 - 544400 0.0046757291 0.0024797539 0.0047445601 - 544500 0.0071127802 0.0022473474 0.0056926004 - 544600 0.0048893296 0.0023939896 0.0047622586 - 544700 0.0054489713 0.0028634881 0.0055028336 - 544800 0.0048259232 0.0027948668 0.0051324234 - 544900 0.005591875 0.0028614048 0.0055699692 - 545000 0.0063602716 0.0029283287 0.0060090852 - 545100 0.0053541423 0.0030610758 0.0056544885 - 545200 0.005367 0.0029470335 0.0055466742 - 545300 0.0055167935 0.0025523012 0.005224498 - 545400 0.0056994426 0.0031139026 0.0058745702 - 545500 0.0049711927 0.0031339213 0.0055418428 - 545600 0.0067128676 0.0025305074 0.0057820526 - 545700 0.0048757416 0.0028043836 0.005166071 - 545800 0.0045876251 0.0025670638 0.0047891947 - 545900 0.0052128519 0.0023168105 0.0048417856 - 546000 0.0034372463 0.0019928599 0.0036577761 - 546100 0.0056069829 0.0021675362 0.0048834185 - 546200 0.0040260483 0.0024720319 0.004422149 - 546300 0.0067950546 0.0025877631 0.0058791176 - 546400 0.003741411 0.0028748663 0.0046871123 - 546500 0.0040389871 0.0027047795 0.0046611639 - 546600 0.0053129735 0.0017738416 0.0043473131 - 546700 0.0056363023 0.0016238683 0.0043539522 - 546800 0.0046586255 0.0018591555 0.0041156772 - 546900 0.005669432 0.0015447616 0.0042908927 - 547000 0.0049574839 0.0021173359 0.0045186171 - 547100 0.005673349 0.0026730733 0.0054211018 - 547200 0.0056621797 0.0029414848 0.0056841031 - 547300 0.0055313387 0.0026521003 0.0053313425 - 547400 0.004791434 0.0028046766 0.0051255275 - 547500 0.0068359552 0.0027378389 0.0060490047 - 547600 0.0047248234 0.0032162033 0.0055047896 - 547700 0.0060239238 0.003290781 0.006208619 - 547800 0.0059068114 0.0033377135 0.0061988252 - 547900 0.0047055594 0.0034838926 0.0057631479 - 548000 0.0052767565 0.0030846194 0.0056405483 - 548100 0.0060383957 0.0028032946 0.0057281425 - 548200 0.0057868592 0.0025618723 0.0053648823 - 548300 0.0051638843 0.0027179067 0.0052191631 - 548400 0.0048326397 0.0028127524 0.0051535622 - 548500 0.0051525275 0.0024394769 0.0049352324 - 548600 0.0055293108 0.0029110203 0.0055892803 - 548700 0.0065319309 0.0029424413 0.0061063454 - 548800 0.0058464787 0.0027876145 0.0056195027 - 548900 0.0049390242 0.0025658396 0.0049581795 - 549000 0.0045890529 0.0025049634 0.0047277859 - 549100 0.0055569036 0.0019885545 0.0046801797 - 549200 0.0063905529 0.0019840373 0.0050794613 - 549300 0.0074596359 0.0025135672 0.0061268283 - 549400 0.0053570405 0.0026304188 0.0052252353 - 549500 0.0059581054 0.0029910037 0.005876961 - 549600 0.0059996128 0.0036784752 0.0065845376 - 549700 0.0065633644 0.0035407328 0.0067198624 - 549800 0.0052195882 0.0034048172 0.0059330552 - 549900 0.0057289021 0.0033532747 0.0061282116 - 550000 0.0053460939 0.0032148215 0.0058043357 - 550100 0.0040697751 0.002680677 0.0046519743 - 550200 0.0060442477 0.0023970957 0.0053247781 - 550300 0.0060730882 0.0023659472 0.0053075993 - 550400 0.005383023 0.0027085021 0.0053159039 - 550500 0.0049215108 0.0032069103 0.005590767 - 550600 0.0054517942 0.003274207 0.0059149198 - 550700 0.0085432901 0.0025334433 0.0066715995 - 550800 0.0030382077 0.0031491088 0.0046207407 - 550900 0.0043019362 0.003428497 0.0055122473 - 551000 0.0053686924 0.0023712412 0.0049717016 - 551100 0.0049034898 0.0024837107 0.0048588386 - 551200 0.0049745712 0.0028061251 0.005215683 - 551300 0.0048695427 0.0026473504 0.0050060351 - 551400 0.004751729 0.0024002048 0.0047018235 - 551500 0.0063330524 0.0020949948 0.005162567 - 551600 0.0048328391 0.0022455182 0.0045864246 - 551700 0.0042282344 0.0024611929 0.004509244 - 551800 0.006645412 0.0024614426 0.0056803141 - 551900 0.0058188745 0.0024700601 0.0052885775 - 552000 0.0052480831 0.0027316998 0.00527374 - 552100 0.0051608891 0.0030063072 0.0055061129 - 552200 0.0069377272 0.0031822037 0.0065426653 - 552300 0.0064965079 0.0027447965 0.0058915425 - 552400 0.005648899 0.0023861342 0.0051223196 - 552500 0.0051724006 0.002758018 0.0052633995 - 552600 0.0060622783 0.0028512502 0.0057876663 - 552700 0.0053510862 0.0023097979 0.0049017302 - 552800 0.0045094362 0.0019871691 0.0041714273 - 552900 0.0047247043 0.0020072662 0.0042957949 - 553000 0.0052287121 0.0020893712 0.0046220286 - 553100 0.0047968374 0.0017615888 0.0040850569 - 553200 0.0060118052 0.0021291319 0.0050411 - 553300 0.0051192929 0.0028327505 0.005312408 - 553400 0.0061220269 0.0026817943 0.0056471511 - 553500 0.0048618021 0.0031680587 0.0055229941 - 553600 0.0049757191 0.0029539105 0.0053640245 - 553700 0.006398669 0.0025574573 0.0056568126 - 553800 0.0063491838 0.0021123389 0.0051877248 - 553900 0.0035501791 0.0024234802 0.0041430982 - 554000 0.004650797 0.0023025755 0.0045553053 - 554100 0.005103852 0.0023614604 0.0048336387 - 554200 0.0045803999 0.0020769879 0.0042956191 - 554300 0.0037749249 0.0021486843 0.0039771635 - 554400 0.0058275668 0.002386078 0.0052088057 - 554500 0.0054455353 0.0025230376 0.0051607188 - 554600 0.0041495072 0.0024906535 0.004500571 - 554700 0.0047690675 0.0025086365 0.0048186536 - 554800 0.004730561 0.0022737814 0.0045651469 - 554900 0.0047985433 0.0019142053 0.0042384997 - 555000 0.0053987469 0.0018575384 0.0044725565 - 555100 0.0049494794 0.0022035226 0.0046009266 - 555200 0.0043292626 0.002689409 0.0047863955 - 555300 0.0070094524 0.0022869527 0.0056821562 - 555400 0.0056551207 0.0025896651 0.0053288642 - 555500 0.0041549163 0.0024945708 0.0045071083 - 555600 0.0041394489 0.0020455779 0.0040506234 - 555700 0.0060699101 0.0022911545 0.0052312672 - 555800 0.0056416981 0.0027009029 0.0054336005 - 555900 0.0051060529 0.0024774947 0.004950739 - 556000 0.0043632804 0.0025630387 0.0046765026 - 556100 0.0038305992 0.0026185893 0.0044740358 - 556200 0.0053018187 0.0023434465 0.004911515 - 556300 0.0054067067 0.0026663608 0.0052852344 - 556400 0.0038957743 0.0031066874 0.004993703 - 556500 0.0044632625 0.0033383817 0.0055002744 - 556600 0.0044782644 0.0036390777 0.005808237 - 556700 0.0059487086 0.0037976422 0.0066790479 - 556800 0.0044252004 0.0040839509 0.0062274073 - 556900 0.00567655 0.003422323 0.0061719019 - 557000 0.0059510629 0.0028719535 0.0057544996 - 557100 0.0053962821 0.0033076055 0.0059214297 - 557200 0.0044468039 0.0038077489 0.0059616695 - 557300 0.0053667309 0.0034013805 0.0060008908 - 557400 0.0042969709 0.0032749134 0.0053562587 - 557500 0.0057635181 0.0033549242 0.0061466283 - 557600 0.0045923005 0.0035420806 0.0057664762 - 557700 0.0050336654 0.0034669515 0.0059051332 - 557800 0.0045029422 0.0034417716 0.0056228843 - 557900 0.0049087297 0.0035286255 0.0059062915 - 558000 0.0071669009 0.0034222098 0.0068936774 - 558100 0.0044803667 0.0035720869 0.0057422645 - 558200 0.0048098196 0.0033264889 0.0056562452 - 558300 0.005665179 0.0029665022 0.0057105733 - 558400 0.0050084658 0.0028889195 0.0053148951 - 558500 0.0049637486 0.0022276252 0.0046319409 - 558600 0.0047102319 0.0018273654 0.004108884 - 558700 0.0052060921 0.0022405643 0.0047622651 - 558800 0.004256262 0.0024815709 0.0045431978 - 558900 0.0048328412 0.0027288284 0.0050697359 - 559000 0.004950576 0.0034809715 0.0058789068 - 559100 0.0046400131 0.0028063872 0.0050538936 - 559200 0.0062002762 0.0025458413 0.0055491001 - 559300 0.0053867446 0.0025883249 0.0051975293 - 559400 0.005097148 0.0023479295 0.0048168606 - 559500 0.0041573112 0.0022932205 0.0043069181 - 559600 0.0058009466 0.0025664433 0.0053762768 - 559700 0.0045778723 0.0029491909 0.0051665978 - 559800 0.0054819145 0.0028927039 0.0055480062 - 559900 0.0063432834 0.0028790588 0.0059515867 - 560000 0.0052693025 0.0031518026 0.005704121 - 560100 0.0047670539 0.0027430314 0.0050520731 - 560200 0.0059506311 0.0026132512 0.0054955881 - 560300 0.0044793549 0.002365114 0.0045348016 - 560400 0.0043856086 0.0027140097 0.0048382889 - 560500 0.0078566419 0.0019981387 0.0058036996 - 560600 0.0053404982 0.0019517182 0.004538522 - 560700 0.0043392268 0.0022451393 0.0043469522 - 560800 0.0042384263 0.0023081762 0.0043611639 - 560900 0.0049598431 0.0023038774 0.0047063014 - 561000 0.0058709185 0.0022256569 0.0050693831 - 561100 0.0056821077 0.0022213306 0.0049736015 - 561200 0.0056826907 0.0023658244 0.0051183777 - 561300 0.0042262345 0.0023014833 0.0043485656 - 561400 0.0053049356 0.0029730917 0.0055426699 - 561500 0.0055826907 0.0030928568 0.0057969726 - 561600 0.0053138105 0.0030017266 0.0055756035 - 561700 0.0052442943 0.0029462163 0.0054864213 - 561800 0.0046041163 0.0025334727 0.0047635916 - 561900 0.0045386072 0.0023110773 0.0045094652 - 562000 0.0041405604 0.002381026 0.0043866099 - 562100 0.0046860868 0.0023243365 0.0045941598 - 562200 0.0029126828 0.002627475 0.0040383058 - 562300 0.0058375945 0.0023399186 0.0051675034 - 562400 0.0058190319 0.0028734544 0.0056920479 - 562500 0.0048735206 0.0030178865 0.005378498 - 562600 0.0068327385 0.0026772317 0.0059868394 - 562700 0.0048888087 0.0024921787 0.0048601954 - 562800 0.0050589018 0.0023455174 0.0047959229 - 562900 0.0049672296 0.0025210562 0.0049270581 - 563000 0.005268997 0.002729622 0.0052817925 - 563100 0.0053517709 0.002843902 0.0054361661 - 563200 0.00545499 0.0026374431 0.0052797039 - 563300 0.0064488147 0.0023001928 0.0054238374 - 563400 0.0046953317 0.002285711 0.0045600123 - 563500 0.0051955613 0.002079381 0.004595981 - 563600 0.0052779514 0.0017234271 0.0042799348 - 563700 0.0047973492 0.0020281315 0.0043518475 - 563800 0.0054621479 0.0025317577 0.0051774856 - 563900 0.0051929537 0.0028131926 0.0053285295 - 564000 0.0072362803 0.0020217117 0.0055267849 - 564100 0.0039150339 0.0019401062 0.0038364507 - 564200 0.0046878472 0.0027288067 0.0049994827 - 564300 0.0044096451 0.0028260808 0.0049620027 - 564400 0.0061368213 0.0025805866 0.0055531095 - 564500 0.0041824455 0.0025719321 0.0045978041 - 564600 0.0062068369 0.0023567258 0.0053631624 - 564700 0.0045105936 0.0021898751 0.0043746939 - 564800 0.0056758537 0.0017783342 0.0045275758 - 564900 0.0063329952 0.0019254818 0.0049930263 - 565000 0.0043766664 0.0020688561 0.0041888038 - 565100 0.0052294762 0.0019728707 0.0045058982 - 565200 0.0061905575 0.0023958362 0.0053943875 - 565300 0.0053314899 0.0028834002 0.0054658406 - 565400 0.0048444228 0.0032183002 0.0055648175 - 565500 0.0056439254 0.0029225231 0.0056562995 - 565600 0.005917008 0.0032057072 0.006071758 - 565700 0.0048871355 0.0032373109 0.0056045172 - 565800 0.0070092999 0.0024233164 0.005818446 - 565900 0.0054682116 0.0020229284 0.0046715934 - 566000 0.004153986 0.0019968257 0.0040089126 - 566100 0.0054182927 0.0019209488 0.0045454344 - 566200 0.0036807871 0.0022040309 0.0039869122 - 566300 0.0045306205 0.0023012544 0.0044957737 - 566400 0.0035309596 0.0022710814 0.0039813899 - 566500 0.0053806981 0.0018619677 0.0044682433 - 566600 0.0059620037 0.0015829686 0.0044708141 - 566700 0.0054927918 0.0019137998 0.0045743708 - 566800 0.0053191002 0.0022904636 0.0048669028 - 566900 0.005621882 0.0026460591 0.0053691582 - 567000 0.0040788095 0.002427557 0.0044032303 - 567100 0.0059935969 0.0025448623 0.0054480108 - 567200 0.0040795787 0.0022714506 0.0042474966 - 567300 0.005316039 0.0019406895 0.0045156459 - 567400 0.0035027851 0.0020375326 0.0037341942 - 567500 0.0034897908 0.0022624785 0.0039528459 - 567600 0.0044838562 0.002222508 0.0043943758 - 567700 0.0049189607 0.0019294352 0.0043120567 - 567800 0.0039905751 0.0019713002 0.003904235 - 567900 0.0062203406 0.0019721982 0.0049851756 - 568000 0.0047616312 0.0015886092 0.0038950243 - 568100 0.0047439315 0.0017862275 0.0040840693 - 568200 0.0057143125 0.0020805602 0.0048484303 - 568300 0.0050452993 0.0027774559 0.0052212727 - 568400 0.005536293 0.0026913124 0.0053729543 - 568500 0.0046165243 0.0023774366 0.0046135656 - 568600 0.0058226265 0.0021804142 0.0050007488 - 568700 0.0041836392 0.0025424702 0.0045689204 - 568800 0.0034610878 0.0022805793 0.0039570437 - 568900 0.0044855547 0.0023788355 0.004551526 - 569000 0.0058404264 0.0023044837 0.0051334403 - 569100 0.0042392076 0.0024207024 0.0044740686 - 569200 0.0053231419 0.0021758782 0.004754275 - 569300 0.0058044246 0.0017940681 0.0046055862 - 569400 0.0055691129 0.0022604127 0.0049579517 - 569500 0.0056908511 0.0023315964 0.0050881024 - 569600 0.005347966 0.0023778656 0.0049682867 - 569700 0.0049655365 0.0025284994 0.0049336812 - 569800 0.0044045975 0.0023244635 0.0044579404 - 569900 0.0035977424 0.0021046906 0.0038473471 - 570000 0.0048878658 0.0017960988 0.0041636588 - 570100 0.0057159303 0.002115094 0.0048837477 - 570200 0.0057231973 0.002152781 0.0049249547 - 570300 0.0048571769 0.0021359817 0.0044886768 - 570400 0.0046636965 0.0018421515 0.0041011295 - 570500 0.0050473351 0.0016909525 0.0041357555 - 570600 0.0059122595 0.0018742998 0.0047380505 - 570700 0.0066142378 0.0023071467 0.0055109182 - 570800 0.0045663969 0.0021410171 0.0043528656 - 570900 0.0043005975 0.0018595665 0.0039426684 - 571000 0.004365716 0.0018880743 0.004002718 - 571100 0.0054197439 0.0025447466 0.005169935 - 571200 0.0046023816 0.0026663425 0.0048956211 - 571300 0.0042130697 0.0028514873 0.004892193 - 571400 0.0053773445 0.003046215 0.0056508662 - 571500 0.005151531 0.0029880663 0.0054833391 - 571600 0.0048257185 0.0025322004 0.0048696578 - 571700 0.0071501901 0.0018950047 0.0053583781 - 571800 0.0037726475 0.0026406037 0.0044679798 - 571900 0.0051743859 0.0029719928 0.005478336 - 572000 0.0055720615 0.002755352 0.0054543193 - 572100 0.0050067807 0.0026246089 0.0050497683 - 572200 0.0052502753 0.0026146423 0.0051577444 - 572300 0.0038490615 0.0031194786 0.0049838678 - 572400 0.0052921085 0.0029725435 0.0055359085 - 572500 0.0048249775 0.0028960781 0.0052331766 - 572600 0.0056514052 0.0026837899 0.0054211893 - 572700 0.0049457719 0.0023664883 0.0047620965 - 572800 0.0054198222 0.0023147184 0.0049399448 - 572900 0.0051884982 0.0024949148 0.0050080937 - 573000 0.0051863051 0.0023221056 0.0048342222 - 573100 0.0041251158 0.0019139735 0.0039120765 - 573200 0.0036677216 0.0023580012 0.0041345539 - 573300 0.0064586439 0.0027053822 0.0058337879 - 573400 0.0057469927 0.0030710761 0.0058547757 - 573500 0.0060612491 0.0024866911 0.0054226086 - 573600 0.005296336 0.0022407624 0.0048061751 - 573700 0.0050339136 0.0024846172 0.0049229191 - 573800 0.0056866566 0.0019681328 0.004722607 - 573900 0.0051274175 0.0019053087 0.0043889016 - 574000 0.0048654904 0.0023930987 0.0047498206 - 574100 0.0066689278 0.0023990055 0.0056292674 - 574200 0.0058598904 0.002262743 0.0051011274 - 574300 0.0076259923 0.0022129178 0.0059067578 - 574400 0.0050186568 0.0026119935 0.0050429054 - 574500 0.0045679515 0.0023577668 0.0045703683 - 574600 0.0050572993 0.0017981672 0.0042477966 - 574700 0.0047969436 0.0019949194 0.0043184389 - 574800 0.004996707 0.002274167 0.004694447 - 574900 0.0056161366 0.0025614245 0.0052817406 - 575000 0.0048281111 0.0024793372 0.0048179535 - 575100 0.0051480389 0.0022941684 0.0047877497 - 575200 0.0047216774 0.0022719963 0.0045590588 - 575300 0.0051022312 0.0025309176 0.0050023109 - 575400 0.0037788111 0.0024546856 0.0042850473 - 575500 0.004722155 0.002165322 0.0044526158 - 575600 0.005530176 0.0020774921 0.0047561711 - 575700 0.0054101916 0.0018948057 0.0045153672 - 575800 0.00566099 0.0019362194 0.0046782614 - 575900 0.0042141688 0.0022593145 0.0043005525 - 576000 0.003995031 0.0023162375 0.0042513306 - 576100 0.0051075243 0.0020628273 0.0045367843 - 576200 0.0040353824 0.0018711377 0.003825776 - 576300 0.0053867586 0.0018096085 0.0044188197 - 576400 0.004994048 0.0024198997 0.0048388917 - 576500 0.0043661134 0.0029810936 0.0050959298 - 576600 0.006449466 0.0024125024 0.0055364625 - 576700 0.0046565073 0.0022207506 0.0044762463 - 576800 0.0050519205 0.0018216963 0.0042687203 - 576900 0.0068888466 0.0018001895 0.0051369745 - 577000 0.0044995997 0.0021451098 0.0043246034 - 577100 0.0053461967 0.0021973805 0.0047869445 - 577200 0.0043472923 0.0024903759 0.0045960956 - 577300 0.0054902913 0.002118658 0.0047780179 - 577400 0.005680523 0.0017659191 0.0045174224 - 577500 0.0055636137 0.0015917143 0.0042865897 - 577600 0.004094923 0.0019678584 0.0039513367 - 577700 0.0065741417 0.0018517993 0.0050361492 - 577800 0.004018276 0.0020673864 0.0040137388 - 577900 0.005147125 0.0021927783 0.004685917 - 578000 0.0047783174 0.0026254334 0.0049399309 - 578100 0.0053791051 0.0026928419 0.0052983459 - 578200 0.0054760298 0.0025707991 0.005223251 - 578300 0.004471636 0.0027044734 0.0048704221 - 578400 0.0077722145 0.0025363261 0.0063009925 - 578500 0.0052044765 0.0029307988 0.0054517171 - 578600 0.0053368897 0.0027898134 0.0053748694 - 578700 0.0063207843 0.0027058233 0.0057674532 - 578800 0.0045879814 0.0028044757 0.0050267792 - 578900 0.0051532451 0.0025437989 0.005039902 - 579000 0.0060760873 0.0022193309 0.0051624357 - 579100 0.0053354325 0.0022602309 0.004844581 - 579200 0.0071025332 0.0022644918 0.0057047813 - 579300 0.0056916861 0.0020917064 0.0048486169 - 579400 0.0052676038 0.0019895352 0.0045410308 - 579500 0.0043892688 0.0021754853 0.0043015374 - 579600 0.0059140073 0.00244846 0.0053130573 - 579700 0.005333148 0.0022967025 0.0048799461 - 579800 0.0052086138 0.0023374885 0.0048604108 - 579900 0.0054262718 0.0023785446 0.005006895 - 580000 0.0047908914 0.0022496267 0.0045702147 - 580100 0.0039691459 0.0022101204 0.0041326755 - 580200 0.004246553 0.0021550652 0.0042119893 - 580300 0.0055687574 0.0020470027 0.0047443695 - 580400 0.006397478 0.0020796483 0.0051784267 - 580500 0.0045698236 0.0021203567 0.004333865 - 580600 0.0045570141 0.0022014054 0.0044087091 - 580700 0.0036813985 0.0018904147 0.0036735921 - 580800 0.0052226358 0.0018776943 0.0044074086 - 580900 0.0037791449 0.0022117553 0.0040422786 - 581000 0.0037394385 0.0022158315 0.004027122 - 581100 0.0062858838 0.0019365271 0.0049812521 - 581200 0.006981861 0.0018671227 0.0052489617 - 581300 0.0050643651 0.0021483694 0.0046014212 - 581400 0.0065827375 0.00244155 0.0056300635 - 581500 0.004356633 0.0026328181 0.0047430622 - 581600 0.0053606425 0.0025549691 0.0051515303 - 581700 0.0046857334 0.0022514176 0.0045210697 - 581800 0.0065889038 0.0018657528 0.0050572531 - 581900 0.0035159025 0.0020216664 0.0037246816 - 582000 0.0049457166 0.0020693488 0.0044649303 - 582100 0.0056514548 0.0018261843 0.0045636077 - 582200 0.0055447799 0.0019666333 0.0046523861 - 582300 0.0046920434 0.0020912087 0.0043639172 - 582400 0.0059142573 0.0019985159 0.0048632343 - 582500 0.0039366388 0.002160278 0.0040670874 - 582600 0.0038930912 0.0022078573 0.0040935733 - 582700 0.0062497002 0.00229459 0.0053217885 - 582800 0.0043595331 0.0022361469 0.0043477957 - 582900 0.0052498318 0.0022092525 0.0047521398 - 583000 0.0063621866 0.0022527295 0.0053344136 - 583100 0.0040075774 0.0025863269 0.0045274972 - 583200 0.0053688862 0.0017826092 0.0043831634 - 583300 0.0038017052 0.0018327198 0.0036741707 - 583400 0.0048429254 0.0020580946 0.0044038866 - 583500 0.0051043128 0.0019083875 0.004380789 - 583600 0.0042978354 0.0019707394 0.0040525034 - 583700 0.0069939743 0.002251433 0.0056391393 - 583800 0.0048676208 0.0027602344 0.0051179882 - 583900 0.00563248 0.0024567127 0.0051849452 - 584000 0.0049855462 0.0023539679 0.0047688418 - 584100 0.0058837958 0.0024355611 0.0052855247 - 584200 0.0040267152 0.0023685215 0.0043189617 - 584300 0.0040310772 0.0024628353 0.0044153883 - 584400 0.0045279405 0.0021244603 0.0043176815 - 584500 0.0048347445 0.0021055119 0.0044473413 - 584600 0.0040552802 0.0025672857 0.004531562 - 584700 0.0055827368 0.0024898033 0.0051939414 - 584800 0.0048785334 0.0022409179 0.0046039575 - 584900 0.0047728119 0.0019586659 0.0042704967 - 585000 0.0037337632 0.0020502266 0.0038587681 - 585100 0.0044596645 0.0024199543 0.0045801043 - 585200 0.0056002614 0.0026780933 0.0053907199 - 585300 0.0053507488 0.0029041255 0.0054958945 - 585400 0.0058900916 0.0029864319 0.005839445 - 585500 0.0056585598 0.0028735227 0.0056143876 - 585600 0.0060010165 0.0022200333 0.0051267757 - 585700 0.0050713235 0.0021134884 0.0045699107 - 585800 0.0050383859 0.0025796999 0.0050201681 - 585900 0.0050430704 0.0026889603 0.0051316975 - 586000 0.0043594606 0.0031144241 0.0052260379 - 586100 0.0046140152 0.0030361977 0.0052711113 - 586200 0.0056762717 0.0026327688 0.0053822129 - 586300 0.0054413094 0.0025779401 0.0052135743 - 586400 0.0056725994 0.002508729 0.0052563943 - 586500 0.0054727409 0.0025777079 0.0052285668 - 586600 0.0063742816 0.0029656339 0.0060531766 - 586700 0.0066110337 0.0033284206 0.00653064 - 586800 0.0052307319 0.0032797937 0.0058134294 - 586900 0.0052112207 0.0031464111 0.0056705962 - 587000 0.0051203385 0.0027282062 0.0052083702 - 587100 0.0054830413 0.0026759733 0.0053318214 - 587200 0.0048701787 0.0030480695 0.0054070624 - 587300 0.0073515763 0.002847786 0.0064087058 - 587400 0.0068226363 0.002809434 0.0061141485 - 587500 0.0034443722 0.002730412 0.0043987798 - 587600 0.0047060473 0.0025369559 0.0048164475 - 587700 0.0036077049 0.0027831397 0.0045306218 - 587800 0.0061897322 0.002450218 0.0054483695 - 587900 0.0045423993 0.0026826762 0.0048829009 - 588000 0.0054403083 0.0028441477 0.0054792971 - 588100 0.0049353534 0.0027585242 0.005149086 - 588200 0.0061888996 0.0029234407 0.0059211889 - 588300 0.0045508764 0.0032466398 0.0054509705 - 588400 0.0057536464 0.0027211011 0.0055080236 - 588500 0.006034468 0.0025857625 0.0055087079 - 588600 0.0049979888 0.0024256673 0.0048465681 - 588700 0.0059419058 0.0021659919 0.0050441025 - 588800 0.003903197 0.0022222871 0.0041128981 - 588900 0.0063481921 0.0019367782 0.0050116837 - 589000 0.004409767 0.0020771987 0.0042131796 - 589100 0.0055286344 0.002443433 0.0051213653 - 589200 0.0060668705 0.0020685177 0.0050071581 - 589300 0.003703552 0.00200943 0.003803338 - 589400 0.004142518 0.0020240463 0.0040305785 - 589500 0.0062051192 0.0023596171 0.0053652217 - 589600 0.0043732584 0.0021106892 0.0042289862 - 589700 0.004093096 0.001865429 0.0038480224 - 589800 0.0050829529 0.0016250203 0.0040870756 - 589900 0.0060659504 0.0015656779 0.0045038726 - 590000 0.0049192951 0.0018621855 0.0042449691 - 590100 0.0046151737 0.0019554026 0.0041908774 - 590200 0.0046022836 0.0024321566 0.0046613877 - 590300 0.0045768985 0.0016620822 0.0038790174 - 590400 0.0047481584 0.0014528227 0.003752712 - 590500 0.0037163931 0.0016887921 0.0034889201 - 590600 0.0039726384 0.0022465013 0.0041707481 - 590700 0.003773466 0.0023419013 0.0041696739 - 590800 0.0047333435 0.0025571155 0.0048498287 - 590900 0.0061694199 0.0024195091 0.0054078219 - 591000 0.0059641877 0.0024174285 0.005306332 - 591100 0.0068089308 0.002721689 0.0060197649 - 591200 0.0051856511 0.0028565289 0.0053683287 - 591300 0.0048107153 0.0027426459 0.0050728362 - 591400 0.0049020988 0.0022573702 0.0046318243 - 591500 0.0059114402 0.002284648 0.0051480018 - 591600 0.0040608347 0.0023083381 0.0042753049 - 591700 0.0040979408 0.0027080069 0.004692947 - 591800 0.0059665936 0.0024603025 0.0053503712 - 591900 0.005781307 0.0025990853 0.0053994059 - 592000 0.0038640567 0.0025206084 0.0043922609 - 592100 0.004966791 0.0023860662 0.0047918556 - 592200 0.0051226029 0.0025910121 0.0050722728 - 592300 0.005269477 0.0026585271 0.00521093 - 592400 0.0054378732 0.0025596623 0.0051936322 - 592500 0.0062555044 0.0024313702 0.0054613802 - 592600 0.0050955845 0.0022173185 0.0046854922 - 592700 0.0047113539 0.0024480802 0.0047301422 - 592800 0.0049408578 0.0024020534 0.0047952814 - 592900 0.0063286134 0.0024861758 0.0055515979 - 593000 0.0053766602 0.0021220622 0.004726382 - 593100 0.00468887 0.0019018462 0.0041730176 - 593200 0.0042140248 0.0018336464 0.0038748146 - 593300 0.0065338812 0.0015470171 0.0047118658 - 593400 0.0064535658 0.0015625482 0.0046884941 - 593500 0.0051040685 0.0020374888 0.004509772 - 593600 0.0043862731 0.0027730001 0.0048976012 - 593700 0.0042857779 0.0029345919 0.0050105156 - 593800 0.0072749112 0.0018530304 0.0053768155 - 593900 0.0058046392 0.0017711364 0.0045827586 - 594000 0.0040528586 0.0021770611 0.0041401645 - 594100 0.0038723016 0.00221391 0.004089556 - 594200 0.0060275726 0.0020048264 0.0049244319 - 594300 0.0051810084 0.0018212388 0.0043307898 - 594400 0.0056183067 0.0021499802 0.0048713475 - 594500 0.0040747085 0.0022558408 0.0042295278 - 594600 0.004771173 0.0018437442 0.0041547811 - 594700 0.0046581926 0.0014142102 0.0036705222 - 594800 0.003944575 0.0015819722 0.0034926256 - 594900 0.0054661531 0.0019707854 0.0046184533 - 595000 0.0061380584 0.0024011396 0.0053742616 - 595100 0.0056062424 0.0027481416 0.0054636652 - 595200 0.0050679888 0.0024913607 0.0049461677 - 595300 0.0052161116 0.002080179 0.0046067331 - 595400 0.0038553365 0.0018362256 0.0037036542 - 595500 0.0031693558 0.0016669144 0.0032020711 - 595600 0.0044522818 0.0015670139 0.0037235879 - 595700 0.0042943002 0.0015542919 0.0036343436 - 595800 0.0059788964 0.0018517215 0.0047477494 - 595900 0.003655345 0.0020485162 0.003819074 - 596000 0.0053356645 0.0021727047 0.0047571672 - 596100 0.0046558441 0.0023158474 0.0045710218 - 596200 0.0052402621 0.0022562724 0.0047945244 - 596300 0.0051345659 0.0025507771 0.0050378325 - 596400 0.0044697162 0.0031747214 0.0053397402 - 596500 0.0063030476 0.0027841645 0.0058372032 - 596600 0.0069757582 0.0023681824 0.0057470653 - 596700 0.0044496942 0.0020447256 0.0042000462 - 596800 0.0045516872 0.0020404215 0.0042451449 - 596900 0.0035969409 0.0018840124 0.0036262807 - 597000 0.0037257667 0.0014483245 0.0032529928 - 597100 0.0059259126 0.0011014717 0.0039718357 - 597200 0.0038202466 0.0014159628 0.0032663947 - 597300 0.0054639165 0.0020757876 0.0047223721 - 597400 0.0055508918 0.0024530948 0.005141808 - 597500 0.0060970772 0.0027347671 0.0056880389 - 597600 0.0047898846 0.0031130306 0.005433131 - 597700 0.0047920774 0.002819026 0.0051401885 - 597800 0.0057367874 0.0024342385 0.0052129949 - 597900 0.0052008783 0.0023280547 0.0048472301 - 598000 0.0060790881 0.0022224971 0.0051670554 - 598100 0.0066451146 0.0027582806 0.005977008 - 598200 0.0057492219 0.0029968452 0.0057816245 - 598300 0.0050374512 0.0029906533 0.0054306687 - 598400 0.0047051169 0.0025070469 0.0047860879 - 598500 0.0073726388 0.0021858281 0.0057569501 - 598600 0.0063648226 0.0027452724 0.0058282333 - 598700 0.0060104608 0.0026152305 0.0055265474 - 598800 0.0042659693 0.0022141516 0.0042804805 - 598900 0.0038705346 0.0021315164 0.0040063066 - 599000 0.0040809048 0.0019868679 0.0039635562 - 599100 0.0052769221 0.0022817798 0.004837789 - 599200 0.0053171262 0.0025118948 0.0050873778 - 599300 0.0054256982 0.0023001168 0.0049281894 - 599400 0.0054228178 0.0025721744 0.0051988518 - 599500 0.0062359325 0.002417204 0.0054377338 - 599600 0.0045351537 0.0029738275 0.0051705425 - 599700 0.0050776069 0.002684245 0.0051437108 - 599800 0.0050648728 0.0022275391 0.0046808368 - 599900 0.0046943522 0.002135554 0.0044093808 - 600000 0.0048747364 0.0020071338 0.0043683343 - 600100 0.005588673 0.0018407788 0.0045477922 - 600200 0.0058351814 0.0018871888 0.0047136048 - 600300 0.0053250862 0.0023515371 0.0049308757 - 600400 0.0050543566 0.0026164485 0.0050646525 - 600500 0.005100373 0.00206325 0.0045337432 - 600600 0.0036177016 0.0016838579 0.0034361821 - 600700 0.0049672784 0.0019065677 0.0043125932 - 600800 0.0042946395 0.0017929836 0.0038731996 - 600900 0.0044124241 0.0018286858 0.0039659538 - 601000 0.0055566732 0.0020189989 0.0047105125 - 601100 0.0057210813 0.0024097924 0.0051809412 - 601200 0.0065911495 0.0024405002 0.0056330882 - 601300 0.0054445906 0.0022317553 0.0048689789 - 601400 0.0047864467 0.002222181 0.0045406161 - 601500 0.0056464782 0.0021247293 0.0048597422 - 601600 0.0037568496 0.0024808978 0.0043006218 - 601700 0.006309968 0.0025792352 0.005635626 - 601800 0.0059192473 0.0023827215 0.0052498569 - 601900 0.004776623 0.0023849748 0.0046986516 - 602000 0.0053800555 0.0025392025 0.0051451669 - 602100 0.0054156019 0.0022077453 0.0048309275 - 602200 0.0045437293 0.0017201682 0.0039210371 - 602300 0.0023581833 0.0020646479 0.0032068929 - 602400 0.0038876477 0.0025498183 0.0044328976 - 602500 0.0062171854 0.0023509631 0.0053624123 - 602600 0.0043768894 0.002301513 0.0044215688 - 602700 0.0049346904 0.0016964475 0.0040866882 - 602800 0.0050908826 0.0017507888 0.004216685 - 602900 0.0042612807 0.0019044076 0.0039684654 - 603000 0.0043949688 0.0018798754 0.0040086884 - 603100 0.0048314579 0.0019852753 0.0043255127 - 603200 0.0043642178 0.0023282332 0.0044421512 - 603300 0.0051557421 0.0027632118 0.0052605244 - 603400 0.0061843769 0.0025066026 0.0055021601 - 603500 0.0046609128 0.0022847999 0.0045424295 - 603600 0.0033696244 0.0025563924 0.0041885542 - 603700 0.0040809355 0.002544763 0.0045214661 - 603800 0.0061179104 0.002370599 0.0053339619 - 603900 0.0045220011 0.0026008307 0.0047911751 - 604000 0.0064351235 0.001996465 0.0051134779 - 604100 0.0049820944 0.0016284274 0.0040416294 - 604200 0.0035321138 0.001795098 0.0035059656 - 604300 0.0044365546 0.0018980504 0.0040470065 - 604400 0.0066611702 0.0017332138 0.0049597181 - 604500 0.0054184841 0.002029382 0.0046539602 - 604600 0.0050670034 0.002162919 0.0046172487 - 604700 0.0052688345 0.0023969963 0.004949088 - 604800 0.004897347 0.0021697703 0.0045419227 - 604900 0.0044088073 0.0027876351 0.0049231511 - 605000 0.0057715934 0.0033970758 0.0061926913 - 605100 0.0051651147 0.0029561565 0.005458009 - 605200 0.0069009771 0.0024125512 0.005755212 - 605300 0.0047669484 0.0023245698 0.0046335604 - 605400 0.0043236483 0.0024379013 0.0045321684 - 605500 0.0048466368 0.0022995594 0.0046471491 - 605600 0.0044497614 0.0022697388 0.004425092 - 605700 0.0030225433 0.0026421513 0.0041061957 - 605800 0.0052359275 0.0027525463 0.0052886987 - 605900 0.0053218883 0.0028680552 0.0054458448 - 606000 0.0041924005 0.0026707342 0.0047014282 - 606100 0.0054381278 0.0023711233 0.0050052164 - 606200 0.004612356 0.0019344863 0.0041685963 - 606300 0.0050316184 0.0021089642 0.0045461543 - 606400 0.0052729529 0.0019932211 0.0045473077 - 606500 0.0027029929 0.0020289367 0.0033381989 - 606600 0.0032779252 0.0023257194 0.0039134644 - 606700 0.0053961404 0.00220816 0.0048219154 - 606800 0.0040901423 0.0020302675 0.0040114302 - 606900 0.0056080644 0.0021432471 0.0048596533 - 607000 0.0061819575 0.0020380811 0.0050324667 - 607100 0.0036832622 0.0023800416 0.0041641217 - 607200 0.0059458583 0.0026246877 0.0055047128 - 607300 0.0053715634 0.0027345848 0.0053364358 - 607400 0.0078374131 0.0027998144 0.0065960614 - 607500 0.0045643397 0.0028804667 0.0050913187 - 607600 0.0049622041 0.0024997918 0.0049033594 - 607700 0.0041277037 0.0024666813 0.0044660378 - 607800 0.005601648 0.0024629267 0.0051762249 - 607900 0.0055009706 0.0022822899 0.0049468225 - 608000 0.0035645658 0.0027395243 0.0044661108 - 608100 0.0041109552 0.0028614573 0.0048527013 - 608200 0.0057750365 0.002457851 0.0052551343 - 608300 0.0048665497 0.0022568586 0.0046140936 - 608400 0.0048629459 0.0023761253 0.0047316148 - 608500 0.0038691023 0.0023095905 0.0041836869 - 608600 0.0050669773 0.0022197971 0.0046741143 - 608700 0.0052757452 0.002186054 0.0047414931 - 608800 0.003457623 0.0020846226 0.0037594088 - 608900 0.0054173549 0.0021994456 0.0048234769 - 609000 0.0066742275 0.0022840277 0.0055168567 - 609100 0.0061517546 0.0023931156 0.0053728717 - 609200 0.0046287734 0.0022138782 0.0044559403 - 609300 0.0037747215 0.0020491822 0.0038775629 - 609400 0.0031764508 0.0020181942 0.0035567876 - 609500 0.003926951 0.0023734595 0.0042755764 - 609600 0.0058807065 0.0027651429 0.0056136101 - 609700 0.0049768693 0.0032489737 0.0056596448 - 609800 0.0063842675 0.0029459049 0.0060382845 - 609900 0.0058046808 0.0024674666 0.0052791089 - 610000 0.0055194699 0.0020248242 0.0046983174 - 610100 0.0050228984 0.0019085419 0.0043415083 - 610200 0.0050074021 0.002141871 0.0045673314 - 610300 0.00464046 0.0031249423 0.0053726651 - 610400 0.0052716169 0.0031306349 0.0056840743 - 610500 0.0064972781 0.0029696299 0.006116749 - 610600 0.0053459962 0.0025745357 0.0051640026 - 610700 0.0052570201 0.0026166633 0.0051630324 - 610800 0.0066789241 0.0029452789 0.0061803828 - 610900 0.0060472576 0.003004564 0.0059337044 - 611000 0.0059201032 0.0027356622 0.0056032122 - 611100 0.0062575544 0.0028911301 0.005922133 - 611200 0.0037583286 0.0028732128 0.0046936532 - 611300 0.0060949335 0.0027142313 0.0056664647 - 611400 0.0053176366 0.0021932164 0.0047689466 - 611500 0.0050365003 0.0019057165 0.0043452713 - 611600 0.003809659 0.0019748334 0.003820137 - 611700 0.004460536 0.0021256494 0.0042862216 - 611800 0.005168518 0.0023163913 0.0048198922 - 611900 0.0039613685 0.0025127458 0.0044315337 - 612000 0.0064079681 0.0030166932 0.0061205527 - 612100 0.0056480103 0.003019512 0.0057552669 - 612200 0.0046690319 0.0029198561 0.0051814185 - 612300 0.0056495421 0.0028206225 0.0055571194 - 612400 0.0052683581 0.0025215495 0.0050734105 - 612500 0.0043764328 0.0028677151 0.0049875497 - 612600 0.0048068091 0.003196749 0.0055250472 - 612700 0.0042094011 0.0031532786 0.0051922073 - 612800 0.0055065477 0.0028945235 0.0055617576 - 612900 0.0049832613 0.0031854012 0.0055991684 - 613000 0.0049536497 0.0030987095 0.0054981336 - 613100 0.0052435517 0.002801174 0.0053410193 - 613200 0.003698988 0.0031045472 0.0048962445 - 613300 0.0048910452 0.0027478364 0.0051169364 - 613400 0.0059321058 0.0026634493 0.005536813 - 613500 0.0053143832 0.002953302 0.0055274564 - 613600 0.004624879 0.0030357275 0.0052759032 - 613700 0.005572153 0.0033003207 0.0059993323 - 613800 0.0048909014 0.0033029937 0.0056720241 - 613900 0.0041964208 0.0029993354 0.0050319768 - 614000 0.0049687758 0.0023300172 0.004736768 - 614100 0.004791737 0.0020516828 0.0043726804 - 614200 0.0035785719 0.0024639203 0.0041972911 - 614300 0.0041536001 0.0028766013 0.0048885013 - 614400 0.0048820826 0.0028376523 0.0052024111 - 614500 0.0062377832 0.0026423372 0.0056637635 - 614600 0.0052549168 0.0024802607 0.005025611 - 614700 0.0054194919 0.0021043041 0.0047293705 - 614800 0.0047128893 0.0020498995 0.0043327052 - 614900 0.0055991866 0.0017388454 0.0044509515 - 615000 0.0053194065 0.0015924528 0.0041690403 - 615100 0.0047353813 0.0020494904 0.0043431907 - 615200 0.0058927017 0.0024588897 0.0053131671 - 615300 0.0046463883 0.0027834552 0.0050340495 - 615400 0.0046414915 0.0027317377 0.0049799602 - 615500 0.0034574516 0.0023867994 0.0040615025 - 615600 0.005093183 0.0021629293 0.0046299398 - 615700 0.004922949 0.0019916942 0.0043762477 - 615800 0.0053117527 0.0022224986 0.0047953789 - 615900 0.0039845357 0.002662029 0.0045920385 - 616000 0.006530012 0.0019979231 0.0051608977 - 616100 0.006320235 0.0020304834 0.0050918473 - 616200 0.0065351758 0.001915805 0.0050812808 - 616300 0.0065782172 0.0025804614 0.0057667853 - 616400 0.0063488866 0.0025710868 0.0056463287 - 616500 0.0052326963 0.0022704766 0.0048050638 - 616600 0.0048913444 0.0023485667 0.0047178116 - 616700 0.0065422932 0.0025848099 0.0057537332 - 616800 0.0058546972 0.002387942 0.0052238109 - 616900 0.0042008495 0.002116814 0.0041516005 - 617000 0.0052811333 0.001867439 0.0044254879 - 617100 0.0041609741 0.0020155051 0.0040309769 - 617200 0.0050556713 0.0019738319 0.0044226727 - 617300 0.003897861 0.0022266424 0.0041146688 - 617400 0.0046011176 0.0021923506 0.004421017 - 617500 0.0046833685 0.0020624888 0.0043309954 - 617600 0.0059696124 0.0021619725 0.0050535035 - 617700 0.0065099946 0.002793131 0.0059464096 - 617800 0.0047033887 0.0031199095 0.0053981133 - 617900 0.0070180143 0.0030188275 0.0064181782 - 618000 0.0054651912 0.0025897816 0.0052369836 - 618100 0.0044343628 0.0025003918 0.0046482863 - 618200 0.0049723012 0.0024652435 0.0048737019 - 618300 0.0048008842 0.0024438239 0.0047692522 - 618400 0.0067515642 0.0023571949 0.0056274838 - 618500 0.0049093292 0.0023338791 0.0047118354 - 618600 0.0036863014 0.0027801086 0.0045656608 - 618700 0.0063932221 0.002851233 0.0059479499 - 618800 0.0047122664 0.0028200536 0.0051025576 - 618900 0.003530486 0.0028275992 0.0045376783 - 619000 0.0041286567 0.0026782452 0.0046780633 - 619100 0.0045740226 0.0029194595 0.0051350017 - 619200 0.004219104 0.0030115484 0.0050551769 - 619300 0.0053312255 0.0029366558 0.0055189681 - 619400 0.0053521071 0.0029125056 0.0055049325 - 619500 0.0060033189 0.0030257178 0.0059335754 - 619600 0.0058429977 0.0030648124 0.0058950144 - 619700 0.0053758151 0.0034239431 0.0060278535 - 619800 0.0061492432 0.0031701512 0.0061486909 - 619900 0.0038256625 0.0032681921 0.0051212474 - 620000 0.0057498593 0.00278742 0.0055725081 - 620100 0.007399701 0.0026377902 0.0062220203 - 620200 0.0032833421 0.002553577 0.0041439458 - 620300 0.0067235446 0.0023477115 0.0056044284 - 620400 0.0068798281 0.0027762437 0.0061086605 - 620500 0.0053722954 0.0029271581 0.0055293636 - 620600 0.007010691 0.0027605746 0.0061563781 - 620700 0.0053074436 0.0025517512 0.0051225442 - 620800 0.0044906385 0.0024814966 0.0046566496 - 620900 0.0044122107 0.0025883901 0.0047255547 - 621000 0.0055044253 0.0025960965 0.0052623025 - 621100 0.0037348797 0.0026990263 0.0045081087 - 621200 0.0041841773 0.0019390366 0.0039657474 - 621300 0.005370255 0.0018683078 0.0044695251 - 621400 0.0046827423 0.0024821464 0.0047503497 - 621500 0.0032553094 0.0029293424 0.0045061329 - 621600 0.0056249789 0.0022121287 0.0049367278 - 621700 0.0053355169 0.0025528185 0.0051372095 - 621800 0.0056138509 0.0029616762 0.0056808852 - 621900 0.0052041488 0.002507202 0.0050279616 - 622000 0.0038459894 0.0024646415 0.0043275427 - 622100 0.0053101939 0.0023494945 0.0049216196 - 622200 0.0053406418 0.0021402416 0.004727115 - 622300 0.0060133494 0.0020082382 0.0049209543 - 622400 0.0057465184 0.0017641299 0.0045475998 - 622500 0.0041440519 0.0020403021 0.0040475773 - 622600 0.0054036265 0.0021693869 0.0047867685 - 622700 0.0051386108 0.0024482117 0.0049372263 - 622800 0.0049837905 0.0025556902 0.0049697137 - 622900 0.0048685918 0.0026593345 0.0050175586 - 623000 0.006147535 0.0021392113 0.0051169235 - 623100 0.0057624115 0.0023107247 0.0051018928 - 623200 0.0049008253 0.002622959 0.0049967962 - 623300 0.0044468787 0.0024302964 0.0045842533 - 623400 0.0056108462 0.0026983243 0.0054160779 - 623500 0.0055734708 0.0028317319 0.0055313818 - 623600 0.0060542196 0.0029881227 0.0059206353 - 623700 0.0071445663 0.0033772984 0.0068379477 - 623800 0.0044900495 0.0035743549 0.0057492226 - 623900 0.0057530383 0.0024801593 0.0052667872 - 624000 0.0045026316 0.0023335392 0.0045145014 - 624100 0.0036760964 0.0024322088 0.004212818 - 624200 0.0052370134 0.0022798154 0.0048164937 - 624300 0.0056922835 0.0020539089 0.0048111087 - 624400 0.0046660505 0.0020280045 0.0042881227 - 624500 0.0057315692 0.0018557687 0.0046319975 - 624600 0.0036427234 0.0021510104 0.0039154546 - 624700 0.0063984091 0.0025790383 0.0056782677 - 624800 0.0047408233 0.0027501161 0.0050464523 - 624900 0.0058191939 0.0024231203 0.0052417923 - 625000 0.0046005372 0.0027703911 0.0049987763 - 625100 0.0044261841 0.0026501042 0.0047940371 - 625200 0.0049550339 0.0028058854 0.00520598 - 625300 0.0056578482 0.0029696101 0.0057101303 - 625400 0.0069969058 0.0025700942 0.0059592204 - 625500 0.0060664935 0.0025986927 0.0055371505 - 625600 0.0058373845 0.0024865746 0.0053140577 - 625700 0.0064864064 0.002056236 0.0051980891 - 625800 0.0056530619 0.0017298982 0.0044681 - 625900 0.00629157 0.0022366251 0.0052841043 - 626000 0.0050924897 0.0028542946 0.0053209694 - 626100 0.0046623572 0.00271281 0.0049711393 - 626200 0.0051348586 0.0024870893 0.0049742865 - 626300 0.0048646866 0.0023213911 0.0046777237 - 626400 0.0054906395 0.0024105779 0.0050701064 - 626500 0.0054598049 0.0026026187 0.0052472117 - 626600 0.0056884155 0.0027111938 0.0054665201 - 626700 0.0048485612 0.0023931273 0.0047416491 - 626800 0.0061027427 0.0021594794 0.0051154954 - 626900 0.0042279316 0.002232961 0.0042808654 - 627000 0.0058900381 0.0025719736 0.0054249608 - 627100 0.0044722036 0.0029610814 0.005127305 - 627200 0.0051982234 0.0027889563 0.0053068458 - 627300 0.0049415118 0.0030509928 0.0054445376 - 627400 0.0060853266 0.0027679946 0.0057155747 - 627500 0.0052674199 0.0027472018 0.0052986083 - 627600 0.0042928341 0.0021784377 0.0042577793 - 627700 0.0058874463 0.001891201 0.0047429328 - 627800 0.0039091894 0.0021941946 0.0040877083 - 627900 0.0055796868 0.0028062552 0.0055089161 - 628000 0.0068355562 0.0030495206 0.0063604932 - 628100 0.0048401644 0.0031278611 0.0054723158 - 628200 0.0054692296 0.0024930113 0.0051421694 - 628300 0.005675327 0.0024334811 0.0051824677 - 628400 0.0068574662 0.0029182884 0.0062398737 - 628500 0.0043666402 0.0030285597 0.0051436511 - 628600 0.0049560913 0.0026880101 0.0050886168 - 628700 0.0048714803 0.0021658821 0.0045255054 - 628800 0.0064625829 0.0017107986 0.0048411122 - 628900 0.0052324998 0.0015760162 0.0041105083 - 629000 0.0065545984 0.0016857281 0.0048606117 - 629100 0.0047776243 0.0016975766 0.0040117384 - 629200 0.004832408 0.0019075865 0.0042482841 - 629300 0.0049306992 0.001723074 0.0041113814 - 629400 0.0049602384 0.0017450372 0.0041476527 - 629500 0.0038682459 0.0015511167 0.0034247983 - 629600 0.0064627828 0.0019343707 0.0050647811 - 629700 0.0058556025 0.0021735815 0.0050098889 - 629800 0.0053579114 0.0021547466 0.0047499849 - 629900 0.0049218809 0.0020461756 0.0044302116 - 630000 0.0062799871 0.0016371053 0.0046789741 - 630100 0.0054975274 0.0015974837 0.0042603485 - 630200 0.0038199249 0.0017306618 0.0035809379 - 630300 0.0057386414 0.0019858483 0.0047655027 - 630400 0.0031865565 0.0028659344 0.0044094227 - 630500 0.0039400617 0.002853807 0.0047622744 - 630600 0.0046150669 0.0027036041 0.0049390271 - 630700 0.0050376394 0.0024288036 0.0048689102 - 630800 0.0055047619 0.0025578912 0.0052242602 - 630900 0.0060534795 0.002327708 0.0052598622 - 631000 0.0051725442 0.0020780083 0.0045834594 - 631100 0.0041018511 0.0022359015 0.0042227357 - 631200 0.0044559887 0.0024747023 0.0046330718 - 631300 0.0051086611 0.0022323999 0.0047069076 - 631400 0.0051913154 0.0020389331 0.0045534765 - 631500 0.0061621441 0.0023679372 0.0053527258 - 631600 0.0054744902 0.0028776466 0.0055293528 - 631700 0.0065295203 0.002200441 0.0053631774 - 631800 0.0055585597 0.0017262841 0.0044187114 - 631900 0.0039463699 0.0020326862 0.0039442091 - 632000 0.005717277 0.0018812113 0.0046505174 - 632100 0.0050585563 0.0015742099 0.0040244481 - 632200 0.00473 0.0021514877 0.0044425815 - 632300 0.0052694681 0.0023481641 0.0049005627 - 632400 0.0063208537 0.0019694978 0.0050311613 - 632500 0.0035673501 0.0015993505 0.0033272857 - 632600 0.0050990688 0.001644455 0.0041143165 - 632700 0.0041691286 0.0018980907 0.0039175124 - 632800 0.0032918626 0.0022724765 0.0038669725 - 632900 0.0040420381 0.0018994847 0.0038573469 - 633000 0.0054287672 0.0018757184 0.0045052775 - 633100 0.004236058 0.0026012857 0.0046531263 - 633200 0.004345557 0.003022086 0.0051269651 - 633300 0.0048562645 0.0028752129 0.005227466 - 633400 0.0053548986 0.0022003587 0.0047941378 - 633500 0.0052741251 0.0025138555 0.0050685098 - 633600 0.0044190281 0.0026608225 0.0048012892 - 633700 0.0043849331 0.0023786182 0.0045025702 - 633800 0.0061766849 0.0023331491 0.0053249808 - 633900 0.0088525921 0.0027226023 0.0070105766 - 634000 0.0056096816 0.0037804422 0.0064976317 - 634100 0.0060617844 0.003193831 0.0061300078 - 634200 0.0039535419 0.0028626417 0.0047776385 - 634300 0.00590905 0.0028060761 0.0056682722 - 634400 0.0046472647 0.0029562611 0.00520728 - 634500 0.004518618 0.0026952576 0.0048839631 - 634600 0.006131264 0.0022140264 0.0051838574 - 634700 0.0061562261 0.0022022194 0.0051841414 - 634800 0.0043827421 0.0020616123 0.004184503 - 634900 0.0048128584 0.0025007034 0.0048319317 - 635000 0.0064847444 0.0031499142 0.0062909623 - 635100 0.0041063782 0.0035147184 0.0055037453 - 635200 0.0059764842 0.0029388929 0.0058337524 - 635300 0.0073039221 0.0024250847 0.005962922 - 635400 0.0060600892 0.0024760171 0.0054113728 - 635500 0.0057470201 0.0030342223 0.0058179352 - 635600 0.0047454981 0.0030955946 0.0053941952 - 635700 0.0051693255 0.0029176509 0.0054215429 - 635800 0.0045023723 0.0027717603 0.0049525969 - 635900 0.0040753195 0.0027852955 0.0047592784 - 636000 0.0044083465 0.002507491 0.0046427838 - 636100 0.0043058174 0.001820477 0.0039061073 - 636200 0.0063650766 0.0015277999 0.0046108839 - 636300 0.0050426478 0.0016900544 0.0041325869 - 636400 0.0049588381 0.0019033688 0.004305306 - 636500 0.0057901207 0.0022092922 0.005013882 - 636600 0.004185967 0.0024775314 0.0045051091 - 636700 0.0038040838 0.0022263207 0.0040689238 - 636800 0.0043084256 0.0018243316 0.0039112252 - 636900 0.0038994503 0.0017236301 0.0036124264 - 637000 0.0051161702 0.0015266561 0.004004801 - 637100 0.00596317 0.0018561718 0.0047445823 - 637200 0.0051350513 0.002078083 0.0045653734 - 637300 0.0054747903 0.002089245 0.0047410966 - 637400 0.0043667579 0.0020342331 0.0041493815 - 637500 0.0056973589 0.0021073184 0.0048669766 - 637600 0.0041750965 0.0026542574 0.0046765698 - 637700 0.0061792871 0.002745641 0.0057387332 - 637800 0.0057331349 0.0025961205 0.0053731077 - 637900 0.0041919304 0.0025483633 0.0045788296 - 638000 0.005294641 0.0023035016 0.0048680933 - 638100 0.0064870668 0.0019328689 0.0050750419 - 638200 0.0048194902 0.0016038068 0.0039382474 - 638300 0.0044331258 0.001610414 0.0037577093 - 638400 0.0052085348 0.0017607055 0.0042835896 - 638500 0.0049535922 0.0017793689 0.0041787652 - 638600 0.0046224152 0.0020689614 0.0043079437 - 638700 0.0042983057 0.0025444203 0.0046264121 - 638800 0.003812503 0.0022338003 0.0040804815 - 638900 0.0052513836 0.0020647703 0.0046084093 - 639000 0.0067964588 0.0023641762 0.0056562109 - 639100 0.0053183139 0.0026339867 0.005210045 - 639200 0.0055152971 0.0025328994 0.0052043714 - 639300 0.0062121589 0.0022446323 0.0052536468 - 639400 0.0050641085 0.0022539557 0.0047068833 - 639500 0.0057559088 0.0029046959 0.0056927142 - 639600 0.005367169 0.0027441501 0.0053438725 - 639700 0.0047234995 0.0018984967 0.0041864418 - 639800 0.00513697 0.0019668202 0.00445504 - 639900 0.0062925294 0.0021999826 0.0052479266 - 640000 0.0057511344 0.002506752 0.0052924577 - 640100 0.0049154211 0.0026473046 0.0050282117 - 640200 0.0048126792 0.0025176641 0.0048488056 - 640300 0.0044936129 0.0024960518 0.0046726455 - 640400 0.0068434047 0.0020052544 0.0053200285 - 640500 0.004583629 0.001953175 0.0041733703 - 640600 0.0039392555 0.0020652496 0.0039733264 - 640700 0.0047267993 0.0020139826 0.004303526 - 640800 0.004051912 0.0022327478 0.0041953927 - 640900 0.0041520424 0.0023614187 0.0043725642 - 641000 0.0053617247 0.0025669101 0.0051639955 - 641100 0.0053435491 0.0028292284 0.00541751 - 641200 0.0075655041 0.0030415885 0.0067061296 - 641300 0.0053307771 0.0027276584 0.0053097535 - 641400 0.0047348811 0.0023506567 0.0046441148 - 641500 0.0043262569 0.0024170891 0.0045126198 - 641600 0.0057657956 0.0026866723 0.0054794796 - 641700 0.0044775737 0.003128199 0.0052970238 - 641800 0.0040335931 0.0029748774 0.004928649 - 641900 0.0062890788 0.0026869569 0.0057332295 - 642000 0.0059535789 0.0025124595 0.0053962243 - 642100 0.004690481 0.0025410986 0.0048130503 - 642200 0.0053817835 0.002337803 0.0049446044 - 642300 0.0053687173 0.0019952094 0.0045956818 - 642400 0.0047505812 0.0018220118 0.0041230745 - 642500 0.0058057443 0.0016874929 0.0044996503 - 642600 0.0030658627 0.0016180681 0.0031030953 - 642700 0.0036966047 0.0017713105 0.0035618534 - 642800 0.0052508799 0.0023782125 0.0049216074 - 642900 0.0049901825 0.0021817129 0.0045988325 - 643000 0.0049296018 0.0018497522 0.0042375281 - 643100 0.00515626 0.0018355722 0.0043331356 - 643200 0.0051617449 0.0019973384 0.0044975586 - 643300 0.0055244066 0.0020477734 0.0047236578 - 643400 0.0053767668 0.0022053729 0.0048097443 - 643500 0.00434843 0.0023365469 0.0044428177 - 643600 0.0049882766 0.0025266936 0.0049428901 - 643700 0.0037566915 0.0023079415 0.0041275889 - 643800 0.0056980087 0.0019817678 0.0047417407 - 643900 0.0041423264 0.0023963407 0.0044027801 - 644000 0.0037912548 0.0024222865 0.0042586755 - 644100 0.0057603357 0.002101442 0.0048916046 - 644200 0.00532663 0.002110891 0.0046909774 - 644300 0.0057190969 0.0020262215 0.004796409 - 644400 0.0043800588 0.0018601308 0.0039817218 - 644500 0.0054245978 0.0019536585 0.004581198 - 644600 0.005281386 0.0026610488 0.0052192202 - 644700 0.0065105136 0.0030431518 0.0061966819 - 644800 0.0060627218 0.0026206971 0.005557328 - 644900 0.0072041067 0.0022367692 0.0057262584 - 645000 0.0039946857 0.0025027339 0.0044376598 - 645100 0.0041685849 0.0023142783 0.0043334366 - 645200 0.0047317383 0.0024040888 0.0046960246 - 645300 0.006799252 0.0021872851 0.0054806728 - 645400 0.004984767 0.001611568 0.0040260645 - 645500 0.0044552706 0.0020202222 0.0041782439 - 645600 0.0055154873 0.0021567896 0.0048283538 - 645700 0.0056363245 0.0022036445 0.0049337391 - 645800 0.0049785046 0.0019962464 0.0044077095 - 645900 0.0042090368 0.0018332818 0.003872034 - 646000 0.0061780986 0.0018658506 0.0048583671 - 646100 0.003923402 0.0017647928 0.0036651906 - 646200 0.0054927756 0.0016453366 0.0043058998 - 646300 0.0053939014 0.0017874352 0.0044001062 - 646400 0.0060586182 0.0019088366 0.0048434798 - 646500 0.0047905578 0.0024876828 0.0048081093 - 646600 0.0048955254 0.0025217938 0.0048930639 - 646700 0.0046908636 0.0021415008 0.0044136379 - 646800 0.0055205929 0.0020183798 0.004692417 - 646900 0.0047197025 0.0023522788 0.0046383846 - 647000 0.0055525974 0.0020173281 0.0047068674 - 647100 0.0047900259 0.0020948305 0.0044149993 - 647200 0.0039464537 0.0025422166 0.0044537801 - 647300 0.0071061145 0.0021658687 0.0056078929 - 647400 0.0067457385 0.0021034903 0.0053709574 - 647500 0.004881933 0.0022831652 0.0046478515 - 647600 0.0038573267 0.0020709541 0.0039393467 - 647700 0.0031484268 0.0022126625 0.0037376817 - 647800 0.004245487 0.0025194612 0.004575869 - 647900 0.0064904909 0.0023994081 0.0055432396 - 648000 0.003875315 0.0026297528 0.0045068585 - 648100 0.0056863273 0.002233484 0.0049877988 - 648200 0.006800374 0.002049273 0.0053432042 - 648300 0.0049228805 0.0027597797 0.0051442999 - 648400 0.0058948425 0.0033134619 0.0061687762 - 648500 0.0044187231 0.0035694988 0.0057098178 - 648600 0.0048949381 0.0037049491 0.0060759347 - 648700 0.0047370767 0.0032176095 0.005512131 - 648800 0.0067112199 0.0025373004 0.0057880475 - 648900 0.00506353 0.0025289941 0.0049816414 - 649000 0.0044099058 0.0023883548 0.0045244029 - 649100 0.0048435638 0.0021324996 0.0044786008 - 649200 0.0062953522 0.0018395101 0.0048888213 - 649300 0.0057140417 0.0017273488 0.0044950877 - 649400 0.0046219473 0.0019399734 0.0041787292 - 649500 0.0049905247 0.0020640816 0.0044813671 - 649600 0.0031804226 0.002003618 0.0035441352 - 649700 0.0042359115 0.0018474485 0.0038992182 - 649800 0.006846573 0.0019491861 0.0052654949 - 649900 0.0051430937 0.002608293 0.0050994791 - 650000 0.005663919 0.0025385806 0.0052820413 - 650100 0.0051394907 0.002552119 0.0050415598 - 650200 0.0046411116 0.0025305983 0.0047786367 - 650300 0.0043540221 0.0024243567 0.0045333361 - 650400 0.0054640694 0.0022720191 0.0049186777 - 650500 0.0048787208 0.0026291645 0.0049922949 - 650600 0.0070533492 0.0028568861 0.0062733521 - 650700 0.0056402206 0.0029314141 0.0056633959 - 650800 0.0039633843 0.0028581039 0.0047778682 - 650900 0.0049035621 0.0025752015 0.0049503644 - 651000 0.0043974216 0.0025016429 0.004631644 - 651100 0.0054508527 0.0025367073 0.0051769641 - 651200 0.0060408669 0.0026193911 0.005545436 - 651300 0.0067377857 0.0027126697 0.0059762846 - 651400 0.0046457135 0.0026466361 0.0048969036 - 651500 0.0069560897 0.0024836006 0.0058529565 - 651600 0.0058218941 0.002398065 0.005218045 - 651700 0.0038882045 0.0023190403 0.0042023893 - 651800 0.0052891264 0.0023576551 0.0049195757 - 651900 0.0059361115 0.0023180711 0.0051933751 - 652000 0.0049822704 0.002723253 0.0051365402 - 652100 0.0047691359 0.0025777617 0.0048878119 - 652200 0.0035934774 0.0023214278 0.0040620184 - 652300 0.0066565234 0.0019705312 0.0051947847 - 652400 0.0055082759 0.0018146544 0.0044827255 - 652500 0.0045457233 0.0018222331 0.0040240678 - 652600 0.0042907296 0.0020565138 0.004134836 - 652700 0.0052918522 0.0026195994 0.0051828403 - 652800 0.0050375595 0.0031837901 0.005623858 - 652900 0.0069732202 0.0033649566 0.0067426101 - 653000 0.0053387676 0.0029891304 0.005575096 - 653100 0.005126136 0.0026014038 0.0050843759 - 653200 0.0055425591 0.0026917599 0.005376437 - 653300 0.0051494142 0.0027768342 0.0052710816 - 653400 0.0046667682 0.0028796715 0.0051401374 - 653500 0.0047060503 0.0028268332 0.0051063263 - 653600 0.0056044243 0.0029280817 0.0056427248 - 653700 0.0038584977 0.002763066 0.0046320258 - 653800 0.0057715139 0.0028576027 0.0056531797 - 653900 0.0055351929 0.0028996208 0.0055807298 - 654000 0.0046023606 0.0024168021 0.0046460705 - 654100 0.0049783603 0.0022988069 0.0047102001 - 654200 0.0045671311 0.0021763806 0.0043885847 - 654300 0.0049080779 0.001945487 0.0043228372 - 654400 0.0055039094 0.0019530808 0.004619037 - 654500 0.0053434534 0.0020517196 0.0046399548 - 654600 0.0064515856 0.0020262481 0.0051512348 - 654700 0.0054236439 0.0021331314 0.0047602089 - 654800 0.0058858807 0.0025702839 0.0054212573 - 654900 0.003758986 0.002832568 0.0046533268 - 655000 0.0040142218 0.0026273239 0.0045717126 - 655100 0.0030834239 0.0024823978 0.0039759313 - 655200 0.004943824 0.002359078 0.0047537428 - 655300 0.0053238326 0.0028080644 0.0053867958 - 655400 0.0039314736 0.0034448535 0.005349161 - 655500 0.0062947606 0.003003687 0.0060527117 - 655600 0.005831412 0.0024507158 0.005275306 - 655700 0.0051031302 0.0027437667 0.0052155954 - 655800 0.0053921088 0.0027836714 0.0053954742 - 655900 0.003042301 0.0028407348 0.0043143494 - 656000 0.0044334354 0.0027647513 0.0049121966 - 656100 0.0063124688 0.0026640428 0.0057216448 - 656200 0.0067039677 0.0024197087 0.0056669431 - 656300 0.0064594907 0.0031459207 0.0062747365 - 656400 0.0063143318 0.0040595144 0.0071180188 - 656500 0.0047835356 0.0038918809 0.006208906 - 656600 0.006173573 0.0036461384 0.0066364629 - 656700 0.0060779953 0.0035508436 0.0064948725 - 656800 0.0051100696 0.0036661918 0.0061413818 - 656900 0.0045448402 0.0032612164 0.0054626233 - 657000 0.0042624843 0.0031360191 0.00520066 - 657100 0.0061780642 0.0028013427 0.0057938426 - 657200 0.0063834342 0.0030723427 0.0061643187 - 657300 0.0064985571 0.0030556917 0.0062034303 - 657400 0.0046493367 0.0027233375 0.00497536 - 657500 0.0039536099 0.0023789087 0.0042939384 - 657600 0.0040609235 0.0024138076 0.0043808174 - 657700 0.0057497035 0.002153922 0.0049389346 - 657800 0.0050982439 0.0022214829 0.0046909448 - 657900 0.003856894 0.0021461622 0.0040143452 - 658000 0.004875946 0.0016817935 0.0040435798 - 658100 0.0052966117 0.0017318736 0.0042974199 - 658200 0.0036333057 0.0024492223 0.0042091048 - 658300 0.0055014078 0.0028560834 0.0055208278 - 658400 0.0048445811 0.0026367831 0.004983377 - 658500 0.0043502915 0.0024185839 0.0045257564 - 658600 0.005252141 0.0024774002 0.0050214059 - 658700 0.0057420291 0.0025360799 0.0053173753 - 658800 0.0045631064 0.0026801526 0.0048904072 - 658900 0.0049866389 0.002590223 0.0050056262 - 659000 0.0045274279 0.0029992893 0.0051922622 - 659100 0.007209328 0.0025473612 0.0060393795 - 659200 0.0051121409 0.0024476878 0.004923881 - 659300 0.0057217422 0.0026059033 0.0053773722 - 659400 0.0048380715 0.0026662877 0.0050097286 - 659500 0.0043877335 0.003044067 0.0051693754 - 659600 0.0056171148 0.0028647986 0.0055855886 - 659700 0.0037907919 0.0027043927 0.0045405576 - 659800 0.005247633 0.0026988874 0.0052407096 - 659900 0.0071151958 0.0026892424 0.0061356653 - 660000 0.0051081289 0.0028144848 0.0052887347 - 660100 0.0045772269 0.0026756309 0.0048927252 - 660200 0.0056775029 0.0026207046 0.0053707451 - 660300 0.0048854512 0.0022776415 0.0046440319 - 660400 0.0073197634 0.0018182451 0.0053637555 - 660500 0.0061799104 0.0021687695 0.0051621636 - 660600 0.0032734561 0.0021423746 0.0037279549 - 660700 0.0059749782 0.0020075174 0.0049016475 - 660800 0.0055942463 0.0024850403 0.0051947533 - 660900 0.0039168013 0.0030655364 0.004962737 - 661000 0.0036937267 0.0028047689 0.0045939178 - 661100 0.0070880239 0.0022191658 0.0056524274 - 661200 0.0041299842 0.0022620895 0.0042625506 - 661300 0.0066088736 0.0022758094 0.0054769825 - 661400 0.0042766706 0.0024043409 0.0044758532 - 661500 0.0037452718 0.0022768785 0.0040909946 - 661600 0.0039826649 0.0020812471 0.0040103504 - 661700 0.0052712392 0.0022630614 0.0048163179 - 661800 0.0035303187 0.0024049235 0.0041149217 - 661900 0.0041050006 0.0026587881 0.0046471478 - 662000 0.0053046069 0.0027413493 0.0053107683 - 662100 0.0064409263 0.003098326 0.0062181497 - 662200 0.0048305218 0.0036770192 0.0060168031 - 662300 0.0059453223 0.0035500629 0.0064298283 - 662400 0.0058585213 0.0027763552 0.0056140764 - 662500 0.0076515022 0.0020899482 0.0057961446 - 662600 0.0061928708 0.0022959624 0.0052956342 - 662700 0.0035047787 0.0026848167 0.0043824439 - 662800 0.0039718028 0.0026594289 0.0045832709 - 662900 0.006190969 0.00262631 0.0056250607 - 663000 0.0064937098 0.0029484641 0.0060938548 - 663100 0.0048884593 0.0029218466 0.005289694 - 663200 0.0052110482 0.0024708453 0.0049949468 - 663300 0.0048992134 0.0023383819 0.0047114384 - 663400 0.0039907543 0.0027080232 0.0046410448 - 663500 0.0039238123 0.0027687968 0.0046693934 - 663600 0.0048269203 0.0023904833 0.0047285228 - 663700 0.0043343422 0.0022459179 0.0043453649 - 663800 0.0051654036 0.0017995455 0.0043015378 - 663900 0.0059653237 0.0020627862 0.0049522398 - 664000 0.0057718231 0.0022683372 0.005064064 - 664100 0.0046163062 0.0022393083 0.0044753316 - 664200 0.0032325147 0.0019707946 0.0035365439 - 664300 0.0045698841 0.0022761214 0.004489659 - 664400 0.0052345545 0.0025435159 0.0050790032 - 664500 0.0039974158 0.0024938858 0.0044301341 - 664600 0.0046914913 0.0022486292 0.0045210703 - 664700 0.0039342229 0.0024992378 0.0044048771 - 664800 0.0050004568 0.0028348354 0.0052569317 - 664900 0.0050375832 0.0028845156 0.0053245949 - 665000 0.0050255197 0.0025445442 0.0049787803 - 665100 0.0054461118 0.0024663843 0.0051043447 - 665200 0.0060032804 0.0025972092 0.0055050482 - 665300 0.0051966285 0.0024782834 0.0049954003 - 665400 0.0050295425 0.0023870574 0.004823242 - 665500 0.0065092317 0.0027998044 0.0059527135 - 665600 0.0049951082 0.0033540077 0.0057735133 - 665700 0.0044626353 0.0031241047 0.0052856937 - 665800 0.0056197071 0.002527722 0.0052497677 - 665900 0.0045284169 0.0023701414 0.0045635933 - 666000 0.0045781813 0.0023526428 0.0045701994 - 666100 0.0045018062 0.0024962708 0.0046768332 - 666200 0.0044095361 0.0026102522 0.0047461213 - 666300 0.0056640952 0.00220317 0.0049467161 - 666400 0.0042839775 0.0020539057 0.0041289573 - 666500 0.0050379341 0.0022393053 0.0046795547 - 666600 0.0042928593 0.002469051 0.0045484047 - 666700 0.0058179651 0.0022106921 0.005028769 - 666800 0.0056580281 0.0023105133 0.0050511206 - 666900 0.0040756478 0.0024162372 0.0043903791 - 667000 0.0065846572 0.0027105478 0.0058999912 - 667100 0.0055445292 0.0028426254 0.0055282567 - 667200 0.0061404972 0.0027759535 0.0057502568 - 667300 0.0035910058 0.0024062949 0.0041456883 - 667400 0.0048036523 0.0020610535 0.0043878226 - 667500 0.003457991 0.0019794819 0.0036544462 - 667600 0.0038203384 0.001968766 0.0038192424 - 667700 0.0032395937 0.0019771201 0.0035462982 - 667800 0.0044064509 0.0025733893 0.004707764 - 667900 0.0055470123 0.0023080042 0.0049948383 - 668000 0.0047103893 0.0023611953 0.0046427901 - 668100 0.0046817142 0.002491793 0.0047594984 - 668200 0.0063145839 0.0021554981 0.0052141247 - 668300 0.0056526054 0.0021614282 0.004899409 - 668400 0.0046070692 0.0021935806 0.0044251298 - 668500 0.0050492037 0.0021590651 0.0046047732 - 668600 0.0088383081 0.0018305981 0.0061116536 - 668700 0.0044401579 0.0023136281 0.0044643296 - 668800 0.0044978628 0.0024863303 0.0046649826 - 668900 0.0049398112 0.002252732 0.0046454531 - 669000 0.0060791426 0.0025346379 0.0054792226 - 669100 0.0045527823 0.002356554 0.0045618079 - 669200 0.0047368266 0.0021394846 0.004433885 - 669300 0.0050729684 0.0020526462 0.0045098653 - 669400 0.0047574176 0.0021275938 0.004431968 - 669500 0.0052082424 0.0022788136 0.0048015561 - 669600 0.0055135217 0.0021206537 0.0047912658 - 669700 0.0043991675 0.0017870453 0.003917892 - 669800 0.0057803454 0.001716041 0.0045158958 - 669900 0.0052209085 0.0019883816 0.0045172592 - 670000 0.00487207 0.0024860514 0.0048459603 - 670100 0.0052612955 0.0027424239 0.0052908639 - 670200 0.0047554345 0.0025028587 0.0048062723 - 670300 0.0069987632 0.0022817887 0.0056718146 - 670400 0.0057736247 0.0026996808 0.0054962803 - 670500 0.0054649502 0.0028821895 0.0055292747 - 670600 0.0045800927 0.0030836457 0.0053021281 - 670700 0.0064241944 0.0030539157 0.0061656349 - 670800 0.0042970309 0.0032665449 0.0053479193 - 670900 0.0074591033 0.0032366526 0.0068496558 - 671000 0.0060037934 0.003266237 0.0061743244 - 671100 0.0051022413 0.0032044483 0.0056758465 - 671200 0.0047392309 0.003150356 0.005445921 - 671300 0.0048220238 0.0028274751 0.0051631428 - 671400 0.0049543229 0.0029732546 0.0053730047 - 671500 0.0054379883 0.0032481333 0.0058821589 - 671600 0.0039607189 0.0033397411 0.0052582143 - 671700 0.0051199914 0.0028648786 0.0053448745 - 671800 0.0060965899 0.0028614991 0.0058145348 - 671900 0.0040823295 0.0029249817 0.00490236 - 672000 0.0048224752 0.0028554703 0.0051913567 - 672100 0.0045443499 0.002951749 0.0051529185 - 672200 0.0056765236 0.0023936426 0.0051432087 - 672300 0.0033590441 0.001847507 0.003474544 - 672400 0.0047584909 0.0023142257 0.0046191197 - 672500 0.0057905861 0.0024139131 0.0052187282 - 672600 0.0044930103 0.0022105582 0.0043868601 - 672700 0.0056529034 0.0021606619 0.004898787 - 672800 0.0029842424 0.0024735124 0.0039190048 - 672900 0.0055176969 0.0024383986 0.0051110331 - 673000 0.0058900887 0.002437771 0.0052907827 - 673100 0.0055556903 0.0029462787 0.0056373161 - 673200 0.0044478004 0.0031054349 0.0052598382 - 673300 0.0063511054 0.0032243219 0.0063006385 - 673400 0.0051153695 0.0025921229 0.00506988 - 673500 0.0076496927 0.0019056578 0.0056109777 - 673600 0.0050444928 0.0021748386 0.0046182648 - 673700 0.0042447845 0.0021829548 0.0042390223 - 673800 0.0045986287 0.0025209503 0.0047484111 - 673900 0.0054706216 0.0026675827 0.005317415 - 674000 0.0049650717 0.0025137742 0.0049187308 - 674100 0.0054329525 0.0020138869 0.0046454733 - 674200 0.0048640549 0.0019913979 0.0043474245 - 674300 0.0050858849 0.0019248412 0.0043883167 - 674400 0.0044601137 0.0020593264 0.0042196939 - 674500 0.0050922499 0.0019393671 0.0044059256 - 674600 0.0052855109 0.0022119747 0.0047721441 - 674700 0.0059545537 0.0022713499 0.0051555869 - 674800 0.0055734975 0.0022645956 0.0049642584 - 674900 0.0043798167 0.0022470664 0.0043685401 - 675000 0.0051503739 0.002456838 0.0049515503 - 675100 0.0052250542 0.0027520001 0.0052828857 - 675200 0.0075699276 0.0023520192 0.0060187029 - 675300 0.0035411458 0.0025540116 0.0042692541 - 675400 0.0040744192 0.0024365958 0.0044101426 - 675500 0.0061467774 0.0021582575 0.0051356028 - 675600 0.0044258898 0.0026457176 0.0047895079 - 675700 0.0061952699 0.0025115971 0.005512431 - 675800 0.0052217221 0.0023770971 0.0049063687 - 675900 0.0042423637 0.0025823778 0.0046372727 - 676000 0.0049014411 0.002256747 0.0046308825 - 676100 0.0037324483 0.0025248464 0.0043327511 - 676200 0.004568583 0.0023808197 0.0045937271 - 676300 0.0049923416 0.002333082 0.0047512474 - 676400 0.0048964395 0.002360636 0.0047323489 - 676500 0.0047273964 0.0022093084 0.0044991411 - 676600 0.003985956 0.0020733573 0.0040040547 - 676700 0.0057483484 0.0018608836 0.0046452398 - 676800 0.0057907928 0.0020612579 0.0048661732 - 676900 0.0041273828 0.0021948485 0.0041940496 - 677000 0.0044050488 0.0020142167 0.0041479122 - 677100 0.0054080404 0.0022972057 0.0049167253 - 677200 0.0048803105 0.0024456699 0.0048095703 - 677300 0.00576458 0.0023249019 0.0051171203 - 677400 0.0054136493 0.002586122 0.0052083584 - 677500 0.0050461954 0.0023619758 0.0048062267 - 677600 0.0046359273 0.0018034277 0.004048955 - 677700 0.0041651905 0.0018005079 0.003818022 - 677800 0.0044502978 0.0020047214 0.0041603344 - 677900 0.0057833273 0.0024324326 0.0052337317 - 678000 0.0058113764 0.0026540691 0.0054689545 - 678100 0.0047202253 0.0023342639 0.0046206231 - 678200 0.0035894822 0.0020762461 0.0038149016 - 678300 0.0052947317 0.0021884505 0.0047530861 - 678400 0.0053057264 0.0025350042 0.0051049654 - 678500 0.0033285114 0.0026962737 0.0043085214 - 678600 0.0044892321 0.0020850169 0.0042594887 - 678700 0.0032158902 0.0023200238 0.0038777206 - 678800 0.0041575443 0.0026867478 0.0047005584 - 678900 0.0058519511 0.003124892 0.0059594308 - 679000 0.0048723103 0.002904829 0.0052648543 - 679100 0.0045899694 0.0026390094 0.0048622758 - 679200 0.0048564843 0.0022594594 0.004611819 - 679300 0.0059384571 0.0019245889 0.004801029 - 679400 0.0077187753 0.0021703106 0.0059090923 - 679500 0.0051688044 0.0026888859 0.0051925255 - 679600 0.004070692 0.0028872213 0.0048589627 - 679700 0.0048345879 0.0029798607 0.0053216142 - 679800 0.005860978 0.0028466624 0.0056855736 - 679900 0.0052474297 0.0030261892 0.005567913 - 680000 0.0076275458 0.0025858365 0.006280429 - 680100 0.0055989288 0.0024195857 0.0051315669 - 680200 0.0056377985 0.0021929221 0.0049237307 - 680300 0.00565205 0.0023102093 0.005047921 - 680400 0.0056759079 0.0025225486 0.0052718165 - 680500 0.0051132394 0.0026571143 0.0051338396 - 680600 0.0065130406 0.0025316933 0.0056864473 - 680700 0.0058029179 0.0024899958 0.0053007841 - 680800 0.0049472536 0.0021309981 0.004527324 - 680900 0.0046929495 0.0022271788 0.0045003262 - 681000 0.004361032 0.002533281 0.0046456559 - 681100 0.0038968901 0.0026932862 0.0045808423 - 681200 0.0041876199 0.0025821553 0.0046105337 - 681300 0.0051278282 0.0023649284 0.0048487202 - 681400 0.005898771 0.0022149776 0.0050721948 - 681500 0.0059602298 0.0029478383 0.0058348246 - 681600 0.0067050198 0.0034200323 0.0066677763 - 681700 0.0048052461 0.0037840072 0.0061115483 - 681800 0.0065597367 0.0028143517 0.0059917242 - 681900 0.0046579302 0.0024974117 0.0047535967 - 682000 0.0049615574 0.002466016 0.0048692704 - 682100 0.0048412638 0.0025752921 0.0049202792 - 682200 0.0048487745 0.0024238825 0.0047725076 - 682300 0.0045227888 0.0020818299 0.0042725557 - 682400 0.0053009738 0.0016715858 0.004239245 - 682500 0.0051125039 0.0017264847 0.0042028538 - 682600 0.0043904292 0.0018105733 0.0039371874 - 682700 0.0053926513 0.0019181475 0.004530213 - 682800 0.0048312899 0.0022087878 0.0045489438 - 682900 0.0047987695 0.0027864544 0.0051108584 - 683000 0.0059111909 0.0024126045 0.0052758376 - 683100 0.0057995783 0.0025636252 0.005372796 - 683200 0.0067236482 0.0022166267 0.0054733938 - 683300 0.0050484878 0.0019651876 0.0044105489 - 683400 0.0065888504 0.0019511123 0.0051425867 - 683500 0.0045550119 0.0020965571 0.004302891 - 683600 0.0028744234 0.0022215432 0.0036138421 - 683700 0.0056943205 0.001929467 0.0046876535 - 683800 0.0056803787 0.0020244787 0.0047759122 - 683900 0.00475549 0.0019410179 0.0042444584 - 684000 0.0049528209 0.0020333643 0.0044323869 - 684100 0.0049093654 0.0024540671 0.0048320409 - 684200 0.0051899527 0.0023308208 0.0048447042 - 684300 0.0059806939 0.0022141523 0.0051110509 - 684400 0.0024605996 0.0024779473 0.0036698003 - 684500 0.0054022965 0.0023591908 0.0049759282 - 684600 0.0055633664 0.0028738941 0.0055686497 - 684700 0.006130549 0.0030061541 0.0059756388 - 684800 0.0047513093 0.0025464458 0.0048478613 - 684900 0.0055100128 0.002691452 0.0053603645 - 685000 0.004735371 0.0027147674 0.0050084627 - 685100 0.0058698091 0.0025501516 0.0053933404 - 685200 0.0078923931 0.0032148157 0.0070376936 - 685300 0.0045854891 0.0039288576 0.0061499539 - 685400 0.0052587644 0.0033902472 0.0059374612 - 685500 0.0040129245 0.003204865 0.0051486253 - 685600 0.0052833065 0.002810966 0.0053700676 - 685700 0.0051453278 0.0025628998 0.005055168 - 685800 0.0045324805 0.0026705858 0.004866006 - 685900 0.0077763308 0.0026602773 0.0064269375 - 686000 0.0033311875 0.0025365934 0.0041501374 - 686100 0.0051084726 0.0028058989 0.0052803153 - 686200 0.0059598068 0.0024300372 0.0053168187 - 686300 0.0057803801 0.002433187 0.0052330587 - 686400 0.0043392471 0.0026967121 0.0047985349 - 686500 0.0052508574 0.0026750609 0.005218445 - 686600 0.0056321984 0.0023164449 0.005044541 - 686700 0.0057485401 0.0021157315 0.0049001806 - 686800 0.003423079 0.0025194249 0.0041774788 - 686900 0.0045575634 0.002295016 0.0045025858 - 687000 0.004619164 0.0022850766 0.0045224841 - 687100 0.0046654728 0.0022283087 0.0044881471 - 687200 0.004863556 0.0023487564 0.0047045413 - 687300 0.006172934 0.002240496 0.0052305109 - 687400 0.0049606063 0.0023311927 0.0047339864 - 687500 0.0045253287 0.001962663 0.0041546191 - 687600 0.003957309 0.0017706064 0.003687428 - 687700 0.0047020149 0.0025448263 0.0048223648 - 687800 0.0061684784 0.0026165334 0.0056043901 - 687900 0.0054085211 0.0027118165 0.0053315689 - 688000 0.0063006496 0.0032390254 0.0062909025 - 688100 0.0060432639 0.0029908844 0.0059180903 - 688200 0.0063558115 0.0021358221 0.0052144183 - 688300 0.0056745978 0.0016409605 0.0043895938 - 688400 0.0042063538 0.0014861797 0.0035236323 - 688500 0.0058117274 0.0016127107 0.0044277662 - 688600 0.0051227145 0.0019692893 0.0044506042 - 688700 0.0047235935 0.002250906 0.0045388966 - 688800 0.0049586961 0.0023860639 0.0047879323 - 688900 0.0073283806 0.0024628402 0.0060125245 - 689000 0.0063520585 0.0025219784 0.0055987567 - 689100 0.0063643007 0.0026380952 0.0057208034 - 689200 0.0045782251 0.0022181105 0.0044356882 - 689300 0.0045791388 0.0020769127 0.004294933 - 689400 0.0043718521 0.0021233551 0.004240971 - 689500 0.0054560001 0.0018926329 0.0045353829 - 689600 0.0055724106 0.0019569141 0.0046560505 - 689700 0.0043345714 0.0021556018 0.0042551598 - 689800 0.0038935601 0.0023508292 0.0042367724 - 689900 0.0052007588 0.0023658891 0.0048850067 - 690000 0.0052563947 0.0020806806 0.0046267468 - 690100 0.0048999668 0.0020947318 0.0044681533 - 690200 0.0062732998 0.0018237452 0.0048623748 - 690300 0.0048219074 0.0017034242 0.0040390356 - 690400 0.0047122131 0.0021077306 0.0043902088 - 690500 0.0046980895 0.0026692926 0.0049449297 - 690600 0.0071789315 0.0024391651 0.00591646 - 690700 0.0056947468 0.0027471965 0.0055055894 - 690800 0.0057765625 0.0027483369 0.0055463594 - 690900 0.0057439325 0.0028271717 0.005609389 - 691000 0.0058139247 0.0025706292 0.005386749 - 691100 0.0052781061 0.0030115843 0.0055681669 - 691200 0.0044837473 0.003576585 0.0057484001 - 691300 0.0049365253 0.0035070865 0.005898216 - 691400 0.0062517786 0.0031108732 0.0061390784 - 691500 0.0040722653 0.0032249173 0.0051974208 - 691600 0.0061018542 0.0031453214 0.006100907 - 691700 0.0059338826 0.0026904008 0.0055646252 - 691800 0.0055201967 0.002653074 0.0053269192 - 691900 0.0043633046 0.0023197013 0.0044331769 - 692000 0.0045333564 0.0020832707 0.0042791153 - 692100 0.0063676516 0.0019233611 0.0050076923 - 692200 0.0042678043 0.0021041334 0.0041713511 - 692300 0.0054541041 0.001656117 0.0042979486 - 692400 0.0048317635 0.0024898739 0.0048302594 - 692500 0.006048147 0.0029900424 0.0059196136 - 692600 0.005374931 0.0031780219 0.0057815041 - 692700 0.0049558733 0.0028020917 0.0052025928 - 692800 0.0058100517 0.0028638218 0.0056780656 - 692900 0.0054230936 0.0026270138 0.0052538247 - 693000 0.0055547687 0.002490169 0.0051807601 - 693100 0.0074226986 0.0025287077 0.0061240774 - 693200 0.0046690469 0.0027059757 0.0049675453 - 693300 0.0051606818 0.0022748099 0.0047745152 - 693400 0.0054636867 0.0020126602 0.0046591335 - 693500 0.0055681757 0.0022273983 0.0049244834 - 693600 0.0041752017 0.0024957423 0.0045181056 - 693700 0.0042382072 0.0025918975 0.0046447792 - 693800 0.0044741799 0.0028116242 0.004978805 - 693900 0.0058244331 0.0026048594 0.0054260691 - 694000 0.0041558302 0.0023163249 0.0043293051 - 694100 0.0050020092 0.0022471803 0.0046700285 - 694200 0.0058270531 0.0024211746 0.0052436534 - 694300 0.004738693 0.002571209 0.0048665134 - 694400 0.0061088216 0.0023734428 0.0053324033 - 694500 0.005458943 0.0020365569 0.0046807324 - 694600 0.0063820424 0.0021100497 0.0052013515 - 694700 0.0055482577 0.0024067036 0.005094141 - 694800 0.0062675316 0.0023689426 0.0054047782 - 694900 0.0096804294 0.0019935477 0.0066825057 - 695000 0.0048710209 0.0024501114 0.0048095122 - 695100 0.0038570269 0.0026339212 0.0045021686 - 695200 0.0057671424 0.0024888803 0.0052823399 - 695300 0.0066145345 0.0027993367 0.0060032519 - 695400 0.0052143337 0.0028904789 0.0054161717 - 695500 0.0070589196 0.0024182345 0.0058373986 - 695600 0.0057425513 0.0021734505 0.0049549988 - 695700 0.0056989086 0.0021237303 0.0048841392 - 695800 0.0061171483 0.0025549098 0.0055179035 - 695900 0.0052580699 0.0028852457 0.0054321233 - 696000 0.0050614627 0.0030283082 0.0054799542 - 696100 0.0047960868 0.0026645625 0.0049876671 - 696200 0.0061891809 0.0024145045 0.005412389 - 696300 0.0058555315 0.0022909599 0.0051272329 - 696400 0.0062036252 0.0020355491 0.00504043 - 696500 0.0053945537 0.0018318959 0.0044448829 - 696600 0.0065690238 0.0020428696 0.0052247405 - 696700 0.0043967929 0.0026228024 0.004752499 - 696800 0.004853418 0.0020895256 0.0044404 - 696900 0.0055846588 0.0015044996 0.0042095687 - 697000 0.0058338276 0.0021565543 0.0049823146 - 697100 0.0050625761 0.0022433303 0.0046955156 - 697200 0.0069969662 0.0019204202 0.0053095757 - 697300 0.0063957018 0.0021658064 0.0052637245 - 697400 0.0045989005 0.0027498639 0.0049774563 - 697500 0.0060780181 0.0029234193 0.0058674593 - 697600 0.0050057552 0.00293233 0.0053569926 - 697700 0.004193981 0.0024610964 0.004492556 - 697800 0.0042423477 0.0027867136 0.0048416008 - 697900 0.0045899491 0.0028606019 0.0050838585 - 698000 0.004401685 0.0025704307 0.0047024969 - 698100 0.0042580508 0.00215044 0.0042129333 - 698200 0.0044041405 0.0023475741 0.0044808296 - 698300 0.0049493948 0.0019581358 0.0043554989 - 698400 0.0037983504 0.0021331644 0.0039729904 - 698500 0.005515871 0.0025001123 0.0051718623 - 698600 0.0065573906 0.0027314198 0.0059076558 - 698700 0.0049387288 0.0023230356 0.0047152324 - 698800 0.0050345082 0.0022071756 0.0046457655 - 698900 0.0047717199 0.0023317987 0.0046431005 - 699000 0.0048294157 0.0024121938 0.004751442 - 699100 0.0045909584 0.0025376875 0.004761433 - 699200 0.0043954709 0.0023829204 0.0045119766 - 699300 0.0048221455 0.0024294355 0.0047651622 - 699400 0.0048300187 0.002467943 0.0048074833 - 699500 0.0043811204 0.0027106607 0.0048327659 - 699600 0.0052703921 0.0024916009 0.005044447 - 699700 0.0057587106 0.0023043241 0.0050936995 - 699800 0.0044870729 0.0023423374 0.0045157634 - 699900 0.0047304532 0.0020414022 0.0043327155 - 700000 0.0041787728 0.0021283157 0.0041524087 - 700100 0.0036062352 0.0025431083 0.0042898785 - 700200 0.0051262547 0.0025122709 0.0049953005 - 700300 0.0054914527 0.002226945 0.0048868674 - 700400 0.0041895469 0.0019509109 0.0039802227 - 700500 0.0060707193 0.0018257735 0.0047662781 - 700600 0.0043026401 0.0020288969 0.0041129882 - 700700 0.0041768192 0.0016857469 0.0037088937 - 700800 0.0063879782 0.0022266324 0.0053208094 - 700900 0.0044052334 0.0025686507 0.0047024356 - 701000 0.0054788822 0.0020676298 0.0047214634 - 701100 0.004801091 0.00199119 0.0043167185 - 701200 0.0062348055 0.0017184038 0.0047383877 - 701300 0.0065042721 0.0018401704 0.0049906772 - 701400 0.0044736986 0.0028332273 0.0050001751 - 701500 0.0055927476 0.002506155 0.0052151421 - 701600 0.0059604078 0.0017129648 0.0046000374 - 701700 0.0056015271 0.0019616901 0.0046749298 - 701800 0.0050607986 0.0022307498 0.0046820741 - 701900 0.0046002042 0.0019739656 0.0042021895 - 702000 0.0038108384 0.0025604899 0.0044063648 - 702100 0.0049169166 0.0026641501 0.0050457815 - 702200 0.0085618524 0.0021639486 0.0063110959 - 702300 0.0049097207 0.0022283997 0.0046065457 - 702400 0.0067935192 0.0024463853 0.0057369961 - 702500 0.0053811683 0.0019627941 0.0045692975 - 702600 0.0046809674 0.001991516 0.0042588595 - 702700 0.0054086504 0.0022730097 0.0048928247 - 702800 0.0056085158 0.0025759436 0.0052925685 - 702900 0.0055426653 0.0026017016 0.0052864301 - 703000 0.00471894 0.002794403 0.0050801396 - 703100 0.0045774664 0.002415893 0.0046331033 - 703200 0.00522573 0.0021451707 0.0046763837 - 703300 0.0057025498 0.0022242361 0.0049864086 - 703400 0.0064690111 0.0023730992 0.0055065264 - 703500 0.0041530995 0.0027858813 0.0047975388 - 703600 0.0055286027 0.0026429566 0.0053208736 - 703700 0.0056172277 0.0026507208 0.0053715654 - 703800 0.0047195323 0.0027030308 0.0049890543 - 703900 0.0055108569 0.0027462047 0.0054155261 - 704000 0.0046224079 0.0027388825 0.0049778613 - 704100 0.0053297097 0.00195107 0.0045326481 - 704200 0.0051174881 0.0020559212 0.0045347045 - 704300 0.0045424814 0.0025013062 0.0047015706 - 704400 0.0046666796 0.0025500648 0.0048104877 - 704500 0.0056375077 0.0029254977 0.0056561654 - 704600 0.0057353016 0.0032640429 0.0060420796 - 704700 0.0054522922 0.0032827885 0.0059237426 - 704800 0.0070030835 0.0029405143 0.0063326329 - 704900 0.0063082631 0.0023411845 0.0053967494 - 705000 0.0054770895 0.0024367068 0.005089672 - 705100 0.0045910072 0.002352379 0.0045761481 - 705200 0.005661665 0.0023450564 0.0050874254 - 705300 0.004060935 0.0025280924 0.0044951078 - 705400 0.0037944195 0.0025931871 0.004431109 - 705500 0.0044786852 0.0025880873 0.0047574504 - 705600 0.006410589 0.0023408854 0.0054460145 - 705700 0.0061954683 0.001956196 0.004957126 - 705800 0.0054776268 0.0024576837 0.0051109092 - 705900 0.0045295236 0.0026511833 0.0048451714 - 706000 0.006460047 0.0023223801 0.0054514654 - 706100 0.0042067492 0.0022495603 0.0042872044 - 706200 0.0051741735 0.0022777741 0.0047840144 - 706300 0.0052556869 0.0024797707 0.0050254941 - 706400 0.0042497782 0.002251837 0.0043103234 - 706500 0.0051002473 0.0021288003 0.0045992326 - 706600 0.0037299088 0.0021225139 0.0039291885 - 706700 0.0053655139 0.0022394159 0.0048383367 - 706800 0.0034480242 0.0022469429 0.0039170797 - 706900 0.0066706638 0.0022409199 0.0054720227 - 707000 0.0056595753 0.0020052435 0.0047466003 - 707100 0.0039446335 0.002327033 0.0042377149 - 707200 0.0043109189 0.0025031611 0.0045912624 - 707300 0.0046741891 0.002655885 0.0049199453 - 707400 0.0054345414 0.00280855 0.005440906 - 707500 0.0053535833 0.002488227 0.0050813689 - 707600 0.0051239294 0.0023952979 0.0048772012 - 707700 0.0051169251 0.0027353397 0.0052138503 - 707800 0.0046251019 0.0030465967 0.0052868804 - 707900 0.0063908658 0.0027051759 0.0058007515 - 708000 0.0054480412 0.0025166826 0.0051555776 - 708100 0.0042853989 0.002730763 0.004806503 - 708200 0.0059379999 0.0027442805 0.0056204992 - 708300 0.00540226 0.0025189229 0.0051356426 - 708400 0.0058787883 0.0024221046 0.0052696427 - 708500 0.004507402 0.0024928195 0.0046760924 - 708600 0.0049856809 0.0023358504 0.0047507896 - 708700 0.0055204688 0.0026213505 0.0052953276 - 708800 0.0050879996 0.0028986757 0.0053631755 - 708900 0.005434699 0.0026172187 0.005249651 - 709000 0.0052427384 0.0026232354 0.0051626868 - 709100 0.0048797346 0.0025167894 0.0048804109 - 709200 0.0040083715 0.0022219025 0.0041634574 - 709300 0.0035651663 0.0017662253 0.0034931027 - 709400 0.0036406016 0.0017804123 0.0035438287 - 709500 0.0035924717 0.0018424879 0.0035825913 - 709600 0.0047120851 0.0020122145 0.0042946307 - 709700 0.00512661 0.0020424767 0.0045256784 - 709800 0.0047428596 0.0017808349 0.0040781575 - 709900 0.00375979 0.0017657161 0.0035868644 - 710000 0.006641813 0.0017993057 0.0050164338 - 710100 0.0060820427 0.0024764488 0.0054224383 - 710200 0.0043855466 0.0028485729 0.004972822 - 710300 0.0064794195 0.0026963601 0.005834829 - 710400 0.0053344625 0.0022294512 0.0048133314 - 710500 0.0055311904 0.0022657644 0.0049449347 - 710600 0.0068281191 0.0024796327 0.0057870029 - 710700 0.0038703626 0.0025687053 0.0044434122 - 710800 0.0061813258 0.0022215143 0.005215594 - 710900 0.00453134 0.00251339 0.0047082578 - 711000 0.0045235043 0.00202264 0.0042137124 - 711100 0.0063642965 0.0017762558 0.0048589619 - 711200 0.0044582341 0.0018577366 0.0040171938 - 711300 0.0051839424 0.0024149878 0.0049259598 - 711400 0.0064769999 0.0025255185 0.0056628154 - 711500 0.0075827087 0.0021529086 0.0058257832 - 711600 0.0050624708 0.0021041466 0.0045562809 - 711700 0.00580146 0.0024517783 0.0052618605 - 711800 0.0068480653 0.002462522 0.0057795536 - 711900 0.0054221114 0.0025731586 0.0051994938 - 712000 0.006717789 0.0026344255 0.0058883546 - 712100 0.0051453455 0.002686562 0.0051788387 - 712200 0.0054526541 0.0026373189 0.0052784483 - 712300 0.0043582019 0.0023859562 0.0044969602 - 712400 0.0043750678 0.0018745419 0.0039937154 - 712500 0.0046554989 0.0018892455 0.0041442528 - 712600 0.0050356755 0.0020698643 0.0045090196 - 712700 0.0047184824 0.0024959341 0.004781449 - 712800 0.0050791685 0.002759856 0.0052200783 - 712900 0.0074202693 0.0031212529 0.0067154459 - 713000 0.0062772241 0.0034683118 0.0065088422 - 713100 0.0056318167 0.0039743641 0.0067022753 - 713200 0.0051846605 0.0033834126 0.0058947325 - 713300 0.0058652172 0.0028223214 0.005663286 - 713400 0.004675212 0.0024177259 0.0046822817 - 713500 0.0061257909 0.0022293893 0.0051965692 - 713600 0.004664284 0.0021263336 0.0043855961 - 713700 0.0056371949 0.0027043603 0.0054348766 - 713800 0.0049996223 0.0033824589 0.005804151 - 713900 0.0070068641 0.0024378561 0.0058318058 - 714000 0.0062026798 0.002099055 0.005103478 - 714100 0.0035215667 0.0023217679 0.0040275268 - 714200 0.0054993005 0.0027180656 0.0053817893 - 714300 0.005857727 0.0030096041 0.0058469407 - 714400 0.0055024108 0.0026080412 0.0052732714 - 714500 0.0057747828 0.0026751069 0.0054722673 - 714600 0.0049955232 0.0025379785 0.0049576851 - 714700 0.0032006078 0.0028130535 0.0043633479 - 714800 0.0055393563 0.0027983131 0.0054814388 - 714900 0.0049694286 0.0026166982 0.0050237652 - 715000 0.0059805941 0.0024806119 0.0053774621 - 715100 0.0065716092 0.0024302014 0.0056133246 - 715200 0.0089228858 0.0028459847 0.0071680075 - 715300 0.0052927921 0.0031428369 0.0057065331 - 715400 0.0057132413 0.0031519668 0.0059193181 - 715500 0.0040462124 0.0032436261 0.0052035102 - 715600 0.0059612609 0.0030884882 0.0059759739 - 715700 0.0063344395 0.0027913305 0.0058595747 - 715800 0.0046259357 0.0023895745 0.0046302621 - 715900 0.005379215 0.0021756668 0.0047812241 - 716000 0.0057383734 0.0023385969 0.0051181215 - 716100 0.0055421502 0.0026878091 0.0053722881 - 716200 0.0056300734 0.0024158274 0.0051428942 - 716300 0.0050441384 0.0019328656 0.0043761201 - 716400 0.0059025446 0.0017314084 0.0045904535 - 716500 0.0057807667 0.0022435514 0.0050436103 - 716600 0.004393764 0.0029567948 0.0050850243 - 716700 0.004702431 0.0034130027 0.0056907427 - 716800 0.0045778145 0.0033550789 0.0055724578 - 716900 0.0059064196 0.00301146 0.005872382 - 717000 0.0046480886 0.0030216706 0.0052730885 - 717100 0.0069054657 0.0031217447 0.0064665796 - 717200 0.005477618 0.0031696663 0.0058228875 - 717300 0.0051154363 0.003292638 0.0057704275 - 717400 0.0077441087 0.0027250486 0.0064761013 - 717500 0.0052524103 0.00256508 0.0051092162 - 717600 0.0048748806 0.0025907291 0.0049519994 - 717700 0.0047600452 0.0025672634 0.0048729104 - 717800 0.0054090412 0.00230352 0.0049235243 - 717900 0.0046619741 0.0020731011 0.0043312448 - 718000 0.0053294537 0.0018008467 0.0043823008 - 718100 0.0046162088 0.0018206496 0.0040566258 - 718200 0.0050000238 0.0016794416 0.0041013281 - 718300 0.0051873158 0.0021215089 0.004634115 - 718400 0.0051626891 0.0024075919 0.0049082695 - 718500 0.0036214193 0.002433216 0.0041873409 - 718600 0.0051045272 0.0023379762 0.0048104816 - 718700 0.0062954773 0.0023335726 0.0053829444 - 718800 0.0050353454 0.0022728486 0.004711844 - 718900 0.004746775 0.0025205597 0.0048197789 - 719000 0.0038732396 0.0022713257 0.0041474262 - 719100 0.0047661558 0.0023954525 0.0047040592 - 719200 0.005178044 0.0026623781 0.0051704932 - 719300 0.0046655945 0.0030847939 0.0053446912 - 719400 0.0069183978 0.0029502808 0.0063013797 - 719500 0.0055334561 0.0029425732 0.005622841 - 719600 0.0049183826 0.0029125595 0.0052949011 - 719700 0.0059499532 0.0032769089 0.0061589175 - 719800 0.006188803 0.0030911611 0.0060888626 - 719900 0.005991225 0.0028312971 0.0057332967 - 720000 0.0044274497 0.0029269585 0.0050715044 - 720100 0.0055029076 0.0026692124 0.0053346833 - 720200 0.0063939702 0.0022701919 0.0053672713 - 720300 0.0056366996 0.0024956361 0.0052259125 - 720400 0.0048413749 0.0027543861 0.005099427 - 720500 0.0049474431 0.0026370285 0.0050334462 - 720600 0.0040908057 0.002450589 0.004432073 - 720700 0.0044459328 0.0024159328 0.0045694315 - 720800 0.0045523702 0.0027966544 0.0050017087 - 720900 0.005643145 0.0031534819 0.0058868803 - 721000 0.0059065884 0.0031807245 0.0060417283 - 721100 0.0051923351 0.0027039451 0.0052189824 - 721200 0.0064785591 0.0028758243 0.0060138763 - 721300 0.00615862 0.0028269129 0.0058099945 - 721400 0.0068610949 0.0022807146 0.0056040575 - 721500 0.0081061997 0.0024625907 0.0063890312 - 721600 0.0040233968 0.0025551384 0.0045039712 - 721700 0.0052388964 0.0028190221 0.0053566126 - 721800 0.0061999915 0.0023274298 0.0053305507 - 721900 0.0054358053 0.0024741949 0.0051071631 - 722000 0.003838774 0.0026506795 0.0045100857 - 722100 0.0049583625 0.0023802069 0.0047819137 - 722200 0.0056906814 0.002351271 0.0051076948 - 722300 0.0049567868 0.0025054283 0.0049063719 - 722400 0.0059891071 0.0029824551 0.0058834289 - 722500 0.0068570938 0.003371585 0.0066929898 - 722600 0.0056510958 0.0029229383 0.0056601878 - 722700 0.0040444824 0.0026627006 0.0046217467 - 722800 0.004727718 0.0022822784 0.0045722668 - 722900 0.0048145231 0.001986105 0.0043181396 - 723000 0.0054619861 0.0019466744 0.004592324 - 723100 0.0040061672 0.0025296308 0.0044701181 - 723200 0.0048038597 0.0025590709 0.0048859404 - 723300 0.0074883816 0.0021660182 0.0057932031 - 723400 0.0049083665 0.0021579121 0.0045354021 - 723500 0.0062112268 0.0021783702 0.0051869332 - 723600 0.0061727035 0.0025749245 0.0055648277 - 723700 0.0063961978 0.0027922863 0.0058904446 - 723800 0.0044859702 0.0026529682 0.00482586 - 723900 0.0055046322 0.0021750135 0.0048413197 - 724000 0.0050565022 0.0018012154 0.0042504586 - 724100 0.0049084558 0.0022080456 0.0045855789 - 724200 0.0046985032 0.0026523124 0.0049281499 - 724300 0.0068714735 0.0022923772 0.0056207471 - 724400 0.0057126867 0.0027152326 0.0054823152 - 724500 0.0050816253 0.0029965363 0.0054579485 - 724600 0.0055755977 0.0032361909 0.005936871 - 724700 0.0050996932 0.0026581843 0.0051283482 - 724800 0.0047294723 0.0022998906 0.0045907288 - 724900 0.0054790539 0.002350356 0.0050042727 - 725000 0.004895326 0.0022109548 0.0045821284 - 725100 0.003846575 0.0019044002 0.003767585 - 725200 0.0052504129 0.0020034579 0.0045466267 - 725300 0.0037154404 0.0018571547 0.0036568211 - 725400 0.0050111834 0.0017600516 0.0041873436 - 725500 0.0054783632 0.0020577438 0.004711326 - 725600 0.0049330416 0.0024695381 0.0048589801 - 725700 0.0055647825 0.0025517997 0.0052472412 - 725800 0.0057036083 0.0017989134 0.0045615987 - 725900 0.0037192811 0.0024376915 0.0042392183 - 726000 0.0051508533 0.0023964737 0.0048914182 - 726100 0.0061501248 0.0021742851 0.0051532518 - 726200 0.0063181753 0.0019830661 0.0050434322 - 726300 0.0046982274 0.0026372459 0.0049129498 - 726400 0.0038511484 0.0029006239 0.0047660239 - 726500 0.0043958673 0.002509471 0.0046387193 - 726600 0.0042715344 0.0024953303 0.0045643548 - 726700 0.0048458546 0.0023768848 0.0047240956 - 726800 0.0063770561 0.0024485501 0.0055374367 - 726900 0.0047400097 0.0029890736 0.0052850158 - 727000 0.0070673478 0.0028327918 0.0062560384 - 727100 0.0070820335 0.0029651394 0.0063954994 - 727200 0.0039479674 0.0026858343 0.0045981309 - 727300 0.0054003542 0.0019873831 0.0046031797 - 727400 0.0049316484 0.0021305775 0.0045193447 - 727500 0.0061709029 0.0021613939 0.0051504249 - 727600 0.0055272865 0.0025956251 0.0052729045 - 727700 0.0038785519 0.0029926998 0.0048713733 - 727800 0.0053280881 0.0029926047 0.0055733974 - 727900 0.0054815309 0.0027662502 0.0054213667 - 728000 0.005753936 0.002666976 0.0054540388 - 728100 0.0053589103 0.0025921523 0.0051878745 - 728200 0.0056192421 0.0023553162 0.0050771366 - 728300 0.0052589139 0.0020550223 0.0046023087 - 728400 0.005409234 0.0018375977 0.0044576954 - 728500 0.0054857729 0.0020158551 0.0046730263 - 728600 0.0051191676 0.0024437289 0.0049233257 - 728700 0.0053719274 0.0026498071 0.0052518344 - 728800 0.0046494949 0.0027278381 0.0049799372 - 728900 0.0048771526 0.0029355335 0.0052979043 - 729000 0.00544485 0.0030578125 0.0056951617 - 729100 0.0053852974 0.00309945 0.0057079535 - 729200 0.0048740017 0.0025077498 0.0048685944 - 729300 0.0066120823 0.0022496715 0.0054523989 - 729400 0.0060449538 0.0023088178 0.0052368423 - 729500 0.0049026886 0.002701094 0.0050758338 - 729600 0.0044761231 0.0027181035 0.0048862256 - 729700 0.004676877 0.0028727864 0.0051381487 - 729800 0.0036183095 0.0035781064 0.0053307251 - 729900 0.0045331122 0.0031313448 0.0053270711 - 730000 0.005476015 0.0029534265 0.0056058712 - 730100 0.0043627708 0.0030523971 0.0051656142 - 730200 0.0032777449 0.0028982212 0.0044858789 - 730300 0.007563967 0.0022146651 0.0058784616 - 730400 0.0067371872 0.0023302466 0.0055935717 - 730500 0.0045065954 0.0022213373 0.0044042194 - 730600 0.0052704309 0.0019390478 0.0044919128 - 730700 0.0059137964 0.0022802388 0.0051447339 - 730800 0.0050608309 0.0026025608 0.0050539007 - 730900 0.0062398714 0.0027097877 0.0057322254 - 731000 0.0047617397 0.0030275973 0.0053340649 - 731100 0.0046792512 0.0034529954 0.0057195077 - 731200 0.00509595 0.0035170925 0.0059854433 - 731300 0.0050659312 0.0034050824 0.0058588928 - 731400 0.005371438 0.0031989564 0.0058007467 - 731500 0.005112203 0.0036221626 0.0060983859 - 731600 0.0032918372 0.0036360984 0.005230582 - 731700 0.0037735471 0.0035277316 0.0053555434 - 731800 0.0066359347 0.0028484347 0.0060627156 - 731900 0.0049579401 0.0022694499 0.0046709522 - 732000 0.0063631568 0.0021209446 0.0052030987 - 732100 0.0042288681 0.0023739762 0.0044223341 - 732200 0.005429492 0.0024005795 0.0050304897 - 732300 0.0040277822 0.0022119968 0.0041629538 - 732400 0.0058670828 0.0022432964 0.0050851646 - 732500 0.003673472 0.0021578765 0.0039372145 - 732600 0.0042044913 0.00193757 0.0039741205 - 732700 0.0047431313 0.0024785032 0.0047759575 - 732800 0.0044952429 0.0028991998 0.0050765831 - 732900 0.0048338689 0.003438596 0.0057800012 - 733000 0.006339951 0.002922159 0.0059930728 - 733100 0.0051831495 0.0026119494 0.0051225374 - 733200 0.0052697338 0.0027533717 0.005305899 - 733300 0.0042280104 0.002757402 0.0048053445 - 733400 0.0049814098 0.0032544518 0.0056673222 - 733500 0.0044752987 0.0024661513 0.0046338741 - 733600 0.0052063619 0.00224759 0.0047694215 - 733700 0.0050382146 0.0018829762 0.0043233614 - 733800 0.0066544331 0.0024645099 0.005687751 - 733900 0.006680338 0.0030030583 0.006238847 - 734000 0.0042505333 0.0035291224 0.0055879744 - 734100 0.0063307112 0.0031534516 0.0062198898 - 734200 0.004658071 0.0027625536 0.0050188067 - 734300 0.0047759022 0.0027887309 0.0051020585 - 734400 0.0048203603 0.002524387 0.0048592491 - 734500 0.0055671495 0.0025837948 0.0052803828 - 734600 0.0061529575 0.0022458698 0.0052262086 - 734700 0.0058559872 0.0020677774 0.0049042712 - 734800 0.0057407184 0.0022955265 0.005076187 - 734900 0.00590117 0.0021992038 0.005057583 - 735000 0.0063566285 0.0022259034 0.0053048953 - 735100 0.0057565592 0.0022854259 0.0050737593 - 735200 0.0055835748 0.0022336839 0.004938228 - 735300 0.0049543367 0.0023675736 0.0047673304 - 735400 0.0036807121 0.0024222398 0.0042050847 - 735500 0.0054778125 0.0024658539 0.0051191693 - 735600 0.0030518812 0.0028967815 0.0043750364 - 735700 0.007310571 0.0025167039 0.0060577617 - 735800 0.0055438135 0.0024278822 0.0051131668 - 735900 0.006869377 0.0022290848 0.0055564393 - 736000 0.0048027921 0.0025056309 0.0048319833 - 736100 0.0045425242 0.0024042116 0.0046044967 - 736200 0.0042525718 0.0026010843 0.0046609238 - 736300 0.006492408 0.0021993545 0.0053441146 - 736400 0.004651565 0.0021165602 0.004369662 - 736500 0.0043953403 0.0018186068 0.0039475998 - 736600 0.0050792169 0.0016558183 0.004116064 - 736700 0.004369873 0.0019698061 0.0040864634 - 736800 0.0040026795 0.0024088807 0.0043476785 - 736900 0.0040976156 0.0027644994 0.004749282 - 737000 0.004106859 0.0028900938 0.0048793536 - 737100 0.0063158418 0.0024556265 0.0055148624 - 737200 0.005431213 0.0024243357 0.0050550795 - 737300 0.005924806 0.0025342033 0.0054040312 - 737400 0.0056796882 0.0024188332 0.0051699322 - 737500 0.004441957 0.0022944116 0.0044459845 - 737600 0.0046113627 0.0025849434 0.0048185723 - 737700 0.006737235 0.0023813028 0.0056446511 - 737800 0.0046750137 0.0024699824 0.0047344421 - 737900 0.0039763111 0.0025747852 0.0045008109 - 738000 0.0037607063 0.0023300044 0.0041515965 - 738100 0.0039031745 0.0019904941 0.0038810942 - 738200 0.0043225888 0.001900879 0.003994633 - 738300 0.0046372094 0.0023146899 0.0045608382 - 738400 0.0047023575 0.0022026998 0.0044804042 - 738500 0.0052622949 0.0021012261 0.0046501502 - 738600 0.0047068299 0.0024054083 0.0046852791 - 738700 0.0055278223 0.002171961 0.0048495 - 738800 0.0046122254 0.002473151 0.0047071977 - 738900 0.0045559611 0.002332265 0.0045390586 - 739000 0.0039625867 0.0024779491 0.0043973271 - 739100 0.0044235959 0.0025991656 0.0047418449 - 739200 0.0041743994 0.003076561 0.0050985357 - 739300 0.0051131572 0.002866324 0.0053430095 - 739400 0.004852732 0.0023808085 0.0047313506 - 739500 0.0059609727 0.0026254409 0.005512787 - 739600 0.0051284258 0.0026784955 0.0051625767 - 739700 0.0059700262 0.003273439 0.0061651704 - 739800 0.0049349826 0.0034952679 0.0058856501 - 739900 0.0063161443 0.003178255 0.0062376374 - 740000 0.0050214979 0.003500517 0.005932805 - 740100 0.0044791321 0.0037168261 0.0058864058 - 740200 0.0051620237 0.0034217746 0.0059221299 - 740300 0.0052648278 0.0033173481 0.005867499 - 740400 0.0051052842 0.0030848359 0.005557708 - 740500 0.005663582 0.002711443 0.0054547406 - 740600 0.0063090029 0.0024317647 0.005487688 - 740700 0.0060103622 0.0023786942 0.0052899634 - 740800 0.0051195162 0.0025854687 0.0050652344 - 740900 0.0060392541 0.0021965562 0.0051218199 - 741000 0.0054283708 0.0023331421 0.0049625092 - 741100 0.004959905 0.0025730253 0.0049754793 - 741200 0.0045670398 0.0026805109 0.0048926708 - 741300 0.0039605947 0.0026560074 0.0045744205 - 741400 0.0060403575 0.0026328527 0.0055586508 - 741500 0.0039740358 0.0027231264 0.00464805 - 741600 0.0060432851 0.0027643436 0.0056915598 - 741700 0.006483741 0.0028111811 0.0059517431 - 741800 0.0076532232 0.0028429088 0.0065499388 - 741900 0.0051189486 0.0032586507 0.0057381414 - 742000 0.0046819489 0.0035386888 0.0058065078 - 742100 0.0051041558 0.0036295736 0.0061018991 - 742200 0.005788989 0.0028306425 0.0056346841 - 742300 0.0057061059 0.0024026868 0.0051665819 - 742400 0.0052611338 0.0021069177 0.0046552794 - 742500 0.0039797073 0.0024740437 0.0044017145 - 742600 0.0039453249 0.002707852 0.0046188688 - 742700 0.0066975677 0.0025890346 0.005833169 - 742800 0.0047498702 0.0020913817 0.0043921001 - 742900 0.0053681222 0.0018372542 0.0044374384 - 743000 0.0034797339 0.0018860329 0.003571529 - 743100 0.0055241222 0.0023034785 0.0049792252 - 743200 0.0057624014 0.0028859194 0.0056770826 - 743300 0.003636597 0.0027915731 0.0045530498 - 743400 0.0052645043 0.0022671512 0.0048171454 - 743500 0.006251133 0.0022775673 0.0053054598 - 743600 0.0056627135 0.0025409092 0.0052837861 - 743700 0.0040757197 0.0023474295 0.0043216062 - 743800 0.0045966008 0.0029579302 0.0051844087 - 743900 0.0051542333 0.0025058832 0.0050024649 - 744000 0.0061734254 0.0025085221 0.005498775 - 744100 0.0044154528 0.0031359684 0.0052747034 - 744200 0.0062188552 0.0023755464 0.0053878044 - 744300 0.0069102997 0.0020440984 0.0053912748 - 744400 0.004558688 0.0023369767 0.0045450912 - 744500 0.004487921 0.0022783019 0.0044521387 - 744600 0.0055070974 0.0024048963 0.0050723967 - 744700 0.0059737448 0.0022449237 0.0051384563 - 744800 0.006120748 0.0027785327 0.00574327 - 744900 0.0050077844 0.0025295672 0.0049552128 - 745000 0.0074628841 0.0024675969 0.0060824314 - 745100 0.0054194922 0.0024743236 0.0050993902 - 745200 0.005389157 0.0017995255 0.0044098984 - 745300 0.0048279349 0.0020036814 0.0043422124 - 745400 0.0041397304 0.0022696933 0.0042748752 - 745500 0.0046419307 0.0020256092 0.0042740444 - 745600 0.0044425491 0.0020537265 0.0042055863 - 745700 0.0047651403 0.0020931056 0.0044012204 - 745800 0.0054236402 0.0020263822 0.0046534579 - 745900 0.0047853379 0.0019938002 0.0043116982 - 746000 0.0060623507 0.0020429619 0.004979413 - 746100 0.0047014606 0.0025135848 0.0047908548 - 746200 0.004965934 0.0024344046 0.0048397788 - 746300 0.0055932152 0.002343357 0.0050525706 - 746400 0.0049266452 0.0021113809 0.0044977246 - 746500 0.0047652677 0.0019402465 0.0042484231 - 746600 0.0038562713 0.0018309787 0.0036988601 - 746700 0.0048342466 0.0019831078 0.004324696 - 746800 0.0056932941 0.0019735554 0.0047312447 - 746900 0.0041886205 0.0023945189 0.004423382 - 747000 0.0044613347 0.0027148872 0.0048758462 - 747100 0.0057865536 0.0023054795 0.0051083414 - 747200 0.0063054382 0.0024579913 0.0055121879 - 747300 0.0034634401 0.0023988042 0.004076408 - 747400 0.0064502427 0.0021514503 0.0052757866 - 747500 0.0048032995 0.0026462871 0.0049728853 - 747600 0.0041190058 0.0025815516 0.0045766951 - 747700 0.0057858322 0.0024797184 0.0052822309 - 747800 0.0045919208 0.0024305716 0.0046547832 - 747900 0.0058002231 0.0028026068 0.0056120899 - 748000 0.005291906 0.0031069468 0.0056702138 - 748100 0.0065461449 0.0030200336 0.0061908225 - 748200 0.0063951989 0.0032524008 0.0063500752 - 748300 0.0066038243 0.0029102526 0.00610898 - 748400 0.0042697851 0.0022912265 0.0043594037 - 748500 0.0056437412 0.0021802531 0.0049139402 - 748600 0.0049512502 0.0024454459 0.0048437077 - 748700 0.0045302969 0.0027310978 0.0049254604 - 748800 0.0047146439 0.0024759289 0.0047595846 - 748900 0.0060893946 0.0024500201 0.0053995706 - 749000 0.0060740652 0.0027602487 0.0057023741 - 749100 0.0051665738 0.0026116324 0.0051141916 - 749200 0.0053525043 0.0025882461 0.0051808654 - 749300 0.005388829 0.0025634208 0.0051736348 - 749400 0.0039177951 0.0024934771 0.0043911591 - 749500 0.0059754451 0.0022399138 0.00513427 - 749600 0.0028647676 0.0024167983 0.0038044201 - 749700 0.0048010271 0.0020752415 0.004400739 - 749800 0.0040762963 0.0022194436 0.0041938997 - 749900 0.0036431979 0.0025568843 0.0043215583 - 750000 0.0051223711 0.0022636794 0.0047448279 - 750100 0.0055678037 0.0021985637 0.0048954686 - 750200 0.0065057278 0.0022547973 0.0054060092 - 750300 0.0054631994 0.0023072157 0.0049534529 - 750400 0.0048736048 0.002499519 0.0048601713 - 750500 0.0045445828 0.0021143772 0.0043156595 - 750600 0.0049993729 0.001952963 0.0043745342 - 750700 0.005681936 0.0019977134 0.0047499012 - 750800 0.0049616794 0.0023975306 0.004800844 - 750900 0.0044389315 0.0024066039 0.0045567113 - 751000 0.0060116574 0.0028109387 0.0057228352 - 751100 0.005210912 0.0028238686 0.0053479041 - 751200 0.0037262721 0.0027795016 0.0045844146 - 751300 0.005451559 0.0029350603 0.0055756592 - 751400 0.0052447297 0.0026386973 0.0051791133 - 751500 0.0037289958 0.0026517222 0.0044579545 - 751600 0.005314361 0.0026473018 0.0052214454 - 751700 0.0043641172 0.0026516604 0.0047655296 - 751800 0.0050005554 0.0027447694 0.0051669134 - 751900 0.0054921374 0.0024544434 0.0051146975 - 752000 0.0047860822 0.0020991973 0.0044174559 - 752100 0.0053936535 0.0025581267 0.0051706776 - 752200 0.0052058217 0.0028061856 0.0053277555 - 752300 0.0053276668 0.0031186998 0.0056992884 - 752400 0.0056203561 0.0026319277 0.0053542877 - 752500 0.0056658717 0.0025710355 0.0053154421 - 752600 0.0072025488 0.0023217371 0.0058104717 - 752700 0.0038432475 0.0023981565 0.0042597294 - 752800 0.0065637344 0.0019056435 0.0050849524 - 752900 0.006098587 0.0018743678 0.0048283709 - 753000 0.0057722569 0.0020573056 0.0048532426 - 753100 0.005283166 0.0021980095 0.0047570431 - 753200 0.0053553191 0.0021525907 0.0047465734 - 753300 0.0061588546 0.0023756162 0.0053588115 - 753400 0.0043267982 0.0021563942 0.004252187 - 753500 0.0035980486 0.0022225813 0.0039653861 - 753600 0.0060803977 0.0023276238 0.0052728165 - 753700 0.0049304522 0.002205605 0.0045937928 - 753800 0.006626439 0.002533506 0.0057431874 - 753900 0.0053653956 0.0027791533 0.0053780168 - 754000 0.0042466864 0.0029996416 0.0050566304 - 754100 0.0054300014 0.0027544546 0.0053846115 - 754200 0.0043776796 0.0025675863 0.0046880248 - 754300 0.005130299 0.002415471 0.0049004595 - 754400 0.005256581 0.0026462188 0.0051923753 - 754500 0.0041268074 0.0030563532 0.0050552755 - 754600 0.0058975481 0.0028677897 0.0057244146 - 754700 0.0068271457 0.0028995498 0.0062064485 - 754800 0.0056316753 0.0028354888 0.0055633315 - 754900 0.0050352331 0.0029661539 0.0054050949 - 755000 0.0035691332 0.0031042698 0.0048330687 - 755100 0.0049233296 0.0030150711 0.0053998089 - 755200 0.0049701606 0.0027056074 0.005113029 - 755300 0.0072109985 0.0027659171 0.0062587445 - 755400 0.0057320045 0.0026131273 0.005389567 - 755500 0.006045405 0.002740203 0.005668446 - 755600 0.0049883527 0.0036078526 0.0060240859 - 755700 0.007375558 0.003442929 0.007015465 - 755800 0.0049255536 0.0030685589 0.0054543739 - 755900 0.0075131738 0.0027511586 0.0063903522 - 756000 0.0058314536 0.0023131334 0.0051377438 - 756100 0.0050831922 0.0024018327 0.0048640039 - 756200 0.0051101252 0.0032160797 0.0056912966 - 756300 0.0063157093 0.003100306 0.0061594777 - 756400 0.0058551919 0.0027757749 0.0056118835 - 756500 0.0034390559 0.0028984755 0.0045642682 - 756600 0.0030949448 0.0028122705 0.0043113844 - 756700 0.0050795401 0.002650893 0.0051112953 - 756800 0.0055264962 0.0027177763 0.0053946729 - 756900 0.0065383041 0.0022873804 0.0054543715 - 757000 0.0055022238 0.0020434471 0.0047085868 - 757100 0.0040272703 0.0024719108 0.0044226198 - 757200 0.0035809542 0.002695377 0.0044299017 - 757300 0.0066347846 0.0027342805 0.0059480042 - 757400 0.0043478004 0.0028754261 0.0049813919 - 757500 0.0041702637 0.0027873973 0.0048073688 - 757600 0.0053590816 0.0028180694 0.0054138746 - 757700 0.0054521619 0.0027859351 0.0054268261 - 757800 0.0046260183 0.0025376646 0.0047783922 - 757900 0.0064311432 0.0019950017 0.0051100867 - 758000 0.0039471388 0.0024018758 0.0043137712 - 758100 0.0047190504 0.0022817925 0.0045675826 - 758200 0.0060506376 0.0024595959 0.0053903735 - 758300 0.0064513402 0.0027083457 0.0058332136 - 758400 0.006371663 0.0025824607 0.005668735 - 758500 0.0058915518 0.0024169712 0.0052706916 - 758600 0.0046536692 0.0029309559 0.0051850769 - 758700 0.0051647844 0.0027650834 0.0052667759 - 758800 0.005316229 0.0021738362 0.0047488846 - 758900 0.0051350478 0.0018826566 0.0043699454 - 759000 0.004111089 0.001742928 0.0037342367 - 759100 0.0048536547 0.0016458146 0.0039968036 - 759200 0.0042480668 0.0020348014 0.0040924587 - 759300 0.006021987 0.0024389562 0.0053558562 - 759400 0.0058332154 0.0027157682 0.0055412319 - 759500 0.0047712508 0.0025260977 0.0048371723 - 759600 0.0043742449 0.0017030151 0.0038217899 - 759700 0.0032574524 0.002141725 0.0037195535 - 759800 0.0036935759 0.0024476493 0.0042367251 - 759900 0.0059037414 0.0029378824 0.0057975071 - 760000 0.0041140134 0.00298536 0.0049780853 - 760100 0.004846587 0.0025676484 0.004915214 - 760200 0.0058447973 0.0023933416 0.0052244153 - 760300 0.0050325076 0.0024624451 0.004900066 - 760400 0.0041477248 0.0026224419 0.0046314962 - 760500 0.0050871668 0.0027115628 0.0051756592 - 760600 0.0055421819 0.0024283168 0.0051128111 - 760700 0.0054932916 0.0026428738 0.0053036869 - 760800 0.0046297764 0.003240853 0.0054834009 - 760900 0.0047812315 0.0027771494 0.0050930584 - 761000 0.0063199186 0.002028444 0.0050896545 - 761100 0.0054294376 0.0019878905 0.0046177743 - 761200 0.0045154336 0.0021774757 0.0043646389 - 761300 0.0045396783 0.0018706437 0.0040695504 - 761400 0.0051653631 0.0016833531 0.0041853259 - 761500 0.005599997 0.0015899286 0.0043024271 - 761600 0.0048078471 0.0020348496 0.0043636506 - 761700 0.0047482323 0.0021097505 0.0044096755 - 761800 0.0038246889 0.0018414955 0.0036940792 - 761900 0.0056827051 0.0016474277 0.004399988 - 762000 0.0057092964 0.0015420724 0.0043075128 - 762100 0.0045391566 0.0013602237 0.0035588777 - 762200 0.0044899605 0.0016686965 0.0038435211 - 762300 0.0045852026 0.0022528575 0.004473815 - 762400 0.0042588948 0.0025304091 0.0045933113 - 762500 0.0047312281 0.0021688453 0.0044605339 - 762600 0.0050346723 0.0021304441 0.0045691135 - 762700 0.0051240336 0.0022373005 0.0047192542 - 762800 0.0051444506 0.0018788635 0.0043707067 - 762900 0.0043869905 0.0019426454 0.004067594 - 763000 0.005154752 0.0016757875 0.0041726205 - 763100 0.004498083 0.0019305754 0.0041093344 - 763200 0.0046439111 0.0022114515 0.0044608459 - 763300 0.0036196794 0.002333305 0.0040865872 - 763400 0.0056886715 0.0023068945 0.0050623448 - 763500 0.0053048215 0.0019912101 0.004560733 - 763600 0.0069263831 0.0017200815 0.0050750483 - 763700 0.004600454 0.0020582521 0.0042865969 - 763800 0.004662196 0.0023221987 0.0045804499 - 763900 0.0048687124 0.0019326067 0.0042908893 - 764000 0.0067789492 0.0021889297 0.0054724832 - 764100 0.003512793 0.002483274 0.0041847832 - 764200 0.0045074322 0.0023041714 0.0044874589 - 764300 0.0063804463 0.002341384 0.0054319127 - 764400 0.0055391229 0.0026013616 0.0052843743 - 764500 0.005470308 0.0023600216 0.005009702 - 764600 0.0058792358 0.0021133491 0.0049611039 - 764700 0.0045520362 0.0023204235 0.004525316 - 764800 0.0058203481 0.0019314854 0.0047507165 - 764900 0.007226176 0.0015771483 0.0050773273 - 765000 0.0041915838 0.0018653523 0.0038956507 - 765100 0.0043062752 0.0025462814 0.0046321334 - 765200 0.0033303954 0.0026985551 0.0043117154 - 765300 0.0039700027 0.0022315652 0.0041545353 - 765400 0.0047482265 0.0017876401 0.0040875623 - 765500 0.0038673149 0.0017415293 0.00361476 - 765600 0.0054561829 0.0016139741 0.0042568127 - 765700 0.0038406618 0.0015785869 0.0034389074 - 765800 0.0038183622 0.0016474664 0.0034969856 - 765900 0.0052547365 0.0017919565 0.0043372195 - 766000 0.0051985145 0.0020601801 0.0045782106 - 766100 0.0042378925 0.0026218784 0.0046746076 - 766200 0.0050418782 0.0027996782 0.0052418379 - 766300 0.0062241225 0.0028392902 0.0058540995 - 766400 0.0052219179 0.0031309494 0.0056603159 - 766500 0.0045914774 0.0029361548 0.0051601516 - 766600 0.006053504 0.0028461203 0.0057782863 - 766700 0.006490654 0.0029992186 0.0061431292 - 766800 0.0059316478 0.0028198417 0.0056929837 - 766900 0.0062483812 0.0026499744 0.005676534 - 767000 0.0063401191 0.0027706011 0.0058415964 - 767100 0.0045772214 0.0034799406 0.0056970322 - 767200 0.0057522581 0.0032044323 0.0059906823 - 767300 0.0062610441 0.0024192544 0.0054519476 - 767400 0.0079693394 0.0021777674 0.0060379161 - 767500 0.0050124547 0.002129649 0.0045575567 - 767600 0.0040684071 0.0016102289 0.0035808635 - 767700 0.0053711113 0.0015707906 0.0041724227 - 767800 0.005673462 0.0017966338 0.0045447169 - 767900 0.0058188138 0.0019611954 0.0047796834 - 768000 0.0076103836 0.0023318847 0.0060181643 - 768100 0.005160982 0.0024465886 0.0049464392 - 768200 0.0055875218 0.0024912298 0.0051976857 - 768300 0.0047596471 0.0022167908 0.0045222449 - 768400 0.0056920429 0.0022247557 0.0049818389 - 768500 0.0055513026 0.0023712328 0.0050601449 - 768600 0.0042729207 0.0030495216 0.0051192176 - 768700 0.0040998653 0.0031651913 0.0051510636 - 768800 0.0057019028 0.0036939395 0.0064557987 - 768900 0.0061303314 0.004016652 0.0069860313 - 769000 0.005091407 0.0034525733 0.0059187236 - 769100 0.0050085212 0.0033528847 0.0057788871 - 769200 0.0048595465 0.0029380505 0.0052918934 - 769300 0.0053831445 0.0026332593 0.0052407199 - 769400 0.0037350487 0.0027467781 0.0045559424 - 769500 0.0056596388 0.0023588059 0.0051001934 - 769600 0.0049638689 0.0026193113 0.0050236853 - 769700 0.005880014 0.0027755263 0.0056236581 - 769800 0.0049185317 0.0029133649 0.0052957787 - 769900 0.0055495319 0.0033933876 0.0060814421 - 770000 0.0072312795 0.0035631031 0.0070657541 - 770100 0.0049660885 0.0034444712 0.0058499204 - 770200 0.0038022003 0.0037673844 0.0056090751 - 770300 0.0053781293 0.0036302366 0.006235268 - 770400 0.0070369037 0.0028442022 0.0062527024 - 770500 0.0069346263 0.0026336852 0.0059926448 - 770600 0.0044757625 0.0030408404 0.0052087879 - 770700 0.0038475836 0.0029697149 0.0048333882 - 770800 0.0040728708 0.0027753497 0.0047481465 - 770900 0.0053466617 0.0028792354 0.0054690247 - 771000 0.0045467066 0.0030823496 0.0052846606 - 771100 0.0063461058 0.0025265989 0.0056004938 - 771200 0.0071804675 0.0023081993 0.0057862383 - 771300 0.0062137302 0.0025046709 0.0055144464 - 771400 0.0047367989 0.0026184791 0.004912866 - 771500 0.0058469579 0.0028931719 0.0057252921 - 771600 0.0045922794 0.0035144117 0.005738797 - 771700 0.006211922 0.0029465701 0.0059554698 - 771800 0.0075044618 0.002348316 0.0059832896 - 771900 0.0052031558 0.0024728731 0.0049931516 - 772000 0.0043842597 0.0022069377 0.0043305635 - 772100 0.0055186163 0.0023029587 0.0049760384 - 772200 0.0054323961 0.0023195224 0.0049508393 - 772300 0.0055308186 0.0025630966 0.0052420868 - 772400 0.0058004329 0.0025809632 0.0053905479 - 772500 0.0036009933 0.0019350198 0.0036792509 - 772600 0.0047034409 0.0016816952 0.0039599244 - 772700 0.0044906129 0.0018893042 0.0040644448 - 772800 0.0034435177 0.0024549315 0.0041228854 - 772900 0.0058846827 0.0022318815 0.0050822747 - 773000 0.0048578079 0.001942489 0.0042954897 - 773100 0.0048396002 0.0024491423 0.0047933237 - 773200 0.0051959981 0.0025537678 0.0050705793 - 773300 0.0050210125 0.0026527471 0.0050848001 - 773400 0.005193196 0.002619867 0.0051353213 - 773500 0.0048600405 0.0029955685 0.0053496507 - 773600 0.0061346354 0.0034482659 0.0064197299 - 773700 0.0054241287 0.0030892889 0.0057166012 - 773800 0.0056551397 0.002416815 0.0051560233 - 773900 0.0031414659 0.0023677344 0.0038893819 - 774000 0.0042022152 0.0021140919 0.0041495399 - 774100 0.0067430155 0.0021443027 0.0054104508 - 774200 0.0040815876 0.002589673 0.004566692 - 774300 0.0075856022 0.0022858271 0.0059601031 - 774400 0.0057176383 0.0025224593 0.0052919403 - 774500 0.0045136615 0.0032333048 0.0054196096 - 774600 0.0052038233 0.0031053426 0.0056259445 - 774700 0.0058805838 0.0028883253 0.005736733 - 774800 0.0068381669 0.0028162281 0.0061284652 - 774900 0.0051330328 0.0031573072 0.00564362 - 775000 0.0046320973 0.0033635907 0.0056072628 - 775100 0.0057604451 0.0034379325 0.0062281481 - 775200 0.0065829877 0.0030264928 0.0062151274 - 775300 0.0061989428 0.0027139555 0.0057165684 - 775400 0.004328927 0.0029518611 0.0050486851 - 775500 0.0042196001 0.0029703788 0.0050142476 - 775600 0.0055112491 0.0032962412 0.0059657525 - 775700 0.0054171732 0.0030866034 0.0057105467 - 775800 0.0054601155 0.0031831501 0.0058278936 - 775900 0.0047543219 0.003605209 0.0059080836 - 776000 0.0057972416 0.0034041003 0.0062121392 - 776100 0.0065506343 0.0032086367 0.0063816002 - 776200 0.0046267739 0.0033980772 0.0056391707 - 776300 0.0058471091 0.0030471992 0.0058793926 - 776400 0.0060407587 0.0031433282 0.0060693207 - 776500 0.0061459646 0.0028574333 0.0058343849 - 776600 0.0042212348 0.0029027784 0.004947439 - 776700 0.0053848391 0.0029405997 0.0055488811 - 776800 0.0047608593 0.003401405 0.0057074463 - 776900 0.0050052561 0.003005481 0.0054299019 - 777000 0.0055942116 0.0026950137 0.00540471 - 777100 0.0044105799 0.002386982 0.0045233566 - 777200 0.0043093702 0.002394251 0.0044816022 - 777300 0.0066878881 0.002272038 0.0055114838 - 777400 0.0057520506 0.0021157524 0.0049019019 - 777500 0.004196014 0.002441151 0.0044735953 - 777600 0.0066036579 0.0028874357 0.0060860825 - 777700 0.0061497894 0.0031155066 0.0060943109 - 777800 0.0052234092 0.0036152428 0.0061453316 - 777900 0.0064354415 0.0029589116 0.0060760786 - 778000 0.0052803406 0.002707939 0.005265604 - 778100 0.0043416772 0.0026640603 0.0047670602 - 778200 0.0062529936 0.002782534 0.0058113277 - 778300 0.004925973 0.0030307002 0.0054167184 - 778400 0.0042397819 0.0028110987 0.004864743 - 778500 0.0057403466 0.0021069102 0.0048873906 - 778600 0.0047379679 0.0020266598 0.004321613 - 778700 0.0061697769 0.0021260553 0.005114541 - 778800 0.0048290043 0.0023258503 0.0046648993 - 778900 0.0038024903 0.0023862016 0.0042280329 - 779000 0.0049636359 0.0022436361 0.0046478972 - 779100 0.0056587188 0.0018776125 0.0046185544 - 779200 0.0051884985 0.001737976 0.004251155 - 779300 0.004428864 0.0021747248 0.0043199558 - 779400 0.0044203285 0.0023124029 0.0044534996 - 779500 0.0041852597 0.0026123789 0.0046396141 - 779600 0.0043785287 0.0025600038 0.0046808536 - 779700 0.0051466607 0.00211242 0.0046053338 - 779800 0.00539287 0.0023269039 0.0049390754 - 779900 0.0043092757 0.0025621266 0.004649432 - 780000 0.0061319749 0.002146481 0.0051166563 - 780100 0.0037993999 0.002122117 0.0039624513 - 780200 0.0056727583 0.0022600386 0.0050077809 - 780300 0.0047386817 0.002763709 0.005059008 - 780400 0.0027402503 0.0026923316 0.0040196403 - 780500 0.005039469 0.0028133382 0.005254331 - 780600 0.0054691872 0.0028716393 0.0055207769 - 780700 0.006186041 0.0023984169 0.0053947805 - 780800 0.0047902584 0.0023238028 0.0046440842 - 780900 0.0053550477 0.0022342833 0.0048281346 - 781000 0.0039026581 0.0023692796 0.0042596296 - 781100 0.0045739 0.0020617424 0.0042772252 - 781200 0.0054327527 0.0021556443 0.0047871339 - 781300 0.0043185853 0.0025787618 0.0046705765 - 781400 0.0037805224 0.0028517752 0.0046829657 - 781500 0.004510459 0.002617395 0.0048021486 - 781600 0.0051567532 0.0026570397 0.005154842 - 781700 0.0048122974 0.0025233215 0.004854278 - 781800 0.0042923759 0.0023535142 0.0044326338 - 781900 0.0073519916 0.0019243201 0.005485441 - 782000 0.0053594197 0.0021839152 0.0047798841 - 782100 0.0050034751 0.0024937685 0.0049173268 - 782200 0.007034737 0.0028054286 0.0062128793 - 782300 0.0042522772 0.002639807 0.0046995037 - 782400 0.0069283346 0.002375895 0.0057318071 - 782500 0.0064697184 0.0022963202 0.00543009 - 782600 0.0041290731 0.0023164519 0.0043164717 - 782700 0.0043035881 0.0021345434 0.0042190939 - 782800 0.0051568851 0.0021508274 0.0046486936 - 782900 0.0041302919 0.0026853061 0.0046859162 - 783000 0.0050220793 0.0029409727 0.0053735423 - 783100 0.0061099399 0.0031032797 0.0060627819 - 783200 0.0053528697 0.0031694985 0.0057622947 - 783300 0.0050766355 0.0028753798 0.0053343751 - 783400 0.0058419523 0.0024931283 0.0053228239 - 783500 0.005095339 0.0024761415 0.0049441964 - 783600 0.0039667446 0.0025661282 0.0044875202 - 783700 0.0060219446 0.0022169923 0.0051338718 - 783800 0.0046304073 0.0026046009 0.0048474545 - 783900 0.0048265872 0.0025451026 0.0048829808 - 784000 0.0063051752 0.0025355689 0.0055896382 - 784100 0.0057969752 0.0027322558 0.0055401656 - 784200 0.0044060043 0.0027604817 0.0048946401 - 784300 0.0060862992 0.0024487098 0.005396761 - 784400 0.0067962271 0.0023379813 0.0056299038 - 784500 0.0058019109 0.0025348177 0.0053451183 - 784600 0.0057904029 0.0024636475 0.0052683739 - 784700 0.0048924686 0.002481917 0.0048517065 - 784800 0.0050918641 0.0026235301 0.0050899017 - 784900 0.0072269338 0.0025243451 0.0060248911 - 785000 0.0063741897 0.0025066148 0.005594113 - 785100 0.0054284688 0.002749544 0.0053789586 - 785200 0.005382125 0.002482863 0.0050898298 - 785300 0.0059917513 0.0023745615 0.0052768161 - 785400 0.0054359468 0.0024237914 0.0050568282 - 785500 0.0054103836 0.0021565967 0.0047772513 - 785600 0.0063025639 0.0023888144 0.0054416188 - 785700 0.0058403688 0.0031639769 0.0059929055 - 785800 0.0050944071 0.0034536552 0.0059212587 - 785900 0.0059987992 0.0035046578 0.0064103262 - 786000 0.007365797 0.002823302 0.0063911099 - 786100 0.0059774224 0.0026193208 0.0055146348 - 786200 0.0067888447 0.0023828628 0.0056712094 - 786300 0.0048203911 0.0023224673 0.0046573442 - 786400 0.0056565512 0.0023624136 0.0051023057 - 786500 0.0045103285 0.0021360012 0.0043206915 - 786600 0.0050192577 0.0017155007 0.0041467036 - 786700 0.0056275175 0.0023742941 0.0051001229 - 786800 0.0049795458 0.0032716907 0.0056836582 - 786900 0.0060163758 0.0033736329 0.0062878149 - 787000 0.0051015085 0.0029061632 0.0053772063 - 787100 0.006020987 0.0028350614 0.005751477 - 787200 0.0038499633 0.0027990029 0.0046638288 - 787300 0.0055830509 0.0028928335 0.0055971238 - 787400 0.0041788037 0.0032199135 0.0052440216 - 787500 0.0062399409 0.0029044215 0.0059268929 - 787600 0.0044890697 0.0030002263 0.0051746195 - 787700 0.003872958 0.0030851533 0.0049611174 - 787800 0.0041240279 0.0031358287 0.0051334047 - 787900 0.0054346661 0.0027475833 0.0053799996 - 788000 0.0058159249 0.0025360746 0.0053531632 - 788100 0.0067224099 0.0026364286 0.0058925959 - 788200 0.0039361813 0.0028674176 0.0047740054 - 788300 0.005066175 0.0027480897 0.0052020182 - 788400 0.006335758 0.0022750505 0.0053439333 - 788500 0.0080288311 0.0027454652 0.0066344302 - 788600 0.0064851161 0.0031200006 0.0062612287 - 788700 0.0052477636 0.0028632594 0.0054051449 - 788800 0.0063507679 0.0026100182 0.0056861715 - 788900 0.0051707543 0.0022791367 0.0047837208 - 789000 0.0049561856 0.0023462195 0.0047468719 - 789100 0.0075346557 0.0028996014 0.0065492003 - 789200 0.0047133113 0.0032678341 0.0055508443 - 789300 0.0035991573 0.0030768573 0.0048201992 - 789400 0.0061032262 0.0026794783 0.0056357285 - 789500 0.0040440181 0.0025375031 0.0044963244 - 789600 0.0061664379 0.0023631136 0.0053499819 - 789700 0.0037562959 0.0022183743 0.0040378301 - 789800 0.0061894462 0.0019284215 0.0049264345 - 789900 0.0051870598 0.002191797 0.0047042792 - 790000 0.0046911163 0.0024566555 0.004728915 - 790100 0.0051610317 0.0022107976 0.0047106724 - 790200 0.00703089 0.0023355758 0.0057411632 - 790300 0.0050151645 0.0024155135 0.0048447339 - 790400 0.0048150512 0.0030825666 0.005414857 - 790500 0.0033664783 0.003715539 0.0053461769 - 790600 0.006469053 0.0034377822 0.0065712298 - 790700 0.00661032 0.0024262 0.0056280737 - 790800 0.0060666158 0.00216567 0.005104187 - 790900 0.0048253715 0.0024571803 0.0047944696 - 791000 0.0045823763 0.0024203794 0.0046399679 - 791100 0.0055175786 0.0021846406 0.0048572177 - 791200 0.0050922867 0.0025544083 0.0050209846 - 791300 0.0045760914 0.00247051 0.0046870543 - 791400 0.0055465528 0.0024334271 0.0051200386 - 791500 0.0050837449 0.0025317863 0.0049942252 - 791600 0.0053087569 0.002640896 0.0052123251 - 791700 0.0040875617 0.0023412963 0.004321209 - 791800 0.0046665602 0.0021708959 0.004431261 - 791900 0.0043882835 0.0025420913 0.0046676662 - 792000 0.0053989692 0.0023110929 0.0049262186 - 792100 0.0047919182 0.002471106 0.0047921914 - 792200 0.0056883463 0.0024642553 0.005219548 - 792300 0.0068011527 0.0025467801 0.0058410885 - 792400 0.0053716563 0.002740569 0.005342465 - 792500 0.0059280188 0.0023645531 0.0052359373 - 792600 0.0043803749 0.0023545515 0.0044762956 - 792700 0.0037302302 0.0024857876 0.0042926178 - 792800 0.0054451195 0.0026501033 0.0052875831 - 792900 0.0052758624 0.0025013372 0.0050568331 - 793000 0.0049554304 0.0026457917 0.0050460783 - 793100 0.0053906797 0.0025512692 0.0051623797 - 793200 0.0066731694 0.0025679801 0.0058002965 - 793300 0.0046964898 0.0027293009 0.0050041632 - 793400 0.0061949154 0.0021946091 0.0051952712 - 793500 0.0066926357 0.0020275373 0.0052692827 - 793600 0.005096658 0.002443357 0.0049120507 - 793700 0.00424849 0.0023193463 0.0043772086 - 793800 0.0066745706 0.0025340148 0.00576701 - 793900 0.0070540937 0.0025223119 0.0059391386 - 794000 0.0058003628 0.0022466743 0.0050562251 - 794100 0.0060000635 0.0020879807 0.0049942615 - 794200 0.0036570128 0.0021624611 0.0039338267 - 794300 0.0042110466 0.0019991982 0.0040389239 - 794400 0.0048903858 0.002301327 0.0046701076 - 794500 0.0064509973 0.0020550647 0.0051797665 - 794600 0.0045797045 0.0018709143 0.0040892087 - 794700 0.0067579869 0.0016562854 0.0049296853 - 794800 0.005898519 0.0023543859 0.005211481 - 794900 0.0055031199 0.0030154153 0.005680989 - 795000 0.0060232779 0.0028694574 0.0057869826 - 795100 0.0049901187 0.0027053821 0.0051224708 - 795200 0.0053616533 0.0026213693 0.0052184201 - 795300 0.0076826033 0.0029623531 0.0066836141 - 795400 0.0042119303 0.0034530381 0.0054931918 - 795500 0.0046889232 0.0029879769 0.005259174 - 795600 0.0052160389 0.0022391611 0.00476568 - 795700 0.0046833032 0.0016673794 0.0039358544 - 795800 0.0037768559 0.001499013 0.0033284276 - 795900 0.0043021475 0.0017011868 0.0037850395 - 796000 0.0047962353 0.002013108 0.0043362845 - 796100 0.0043519043 0.0024872694 0.004595223 - 796200 0.0048730316 0.0022701394 0.0046305141 - 796300 0.0045697255 0.0019273391 0.0041407999 - 796400 0.0055406149 0.0020086141 0.0046923494 - 796500 0.0058441736 0.0017623916 0.0045931631 - 796600 0.0048537925 0.0021300292 0.004481085 - 796700 0.0053195548 0.0019603263 0.0045369857 - 796800 0.0046852532 0.0022430875 0.004512507 - 796900 0.0040477748 0.0024227966 0.0043834375 - 797000 0.004584546 0.0026333979 0.0048540374 - 797100 0.0049978086 0.0028167795 0.005237593 - 797200 0.0035660844 0.0024404344 0.0041677565 - 797300 0.004161226 0.002210263 0.0042258568 - 797400 0.0063315251 0.0021242358 0.0051910682 - 797500 0.0047108257 0.0024901344 0.0047719406 - 797600 0.0039679786 0.002775946 0.0046979357 - 797700 0.006004146 0.0023484324 0.0052566906 - 797800 0.0040026266 0.0029875041 0.0049262763 - 797900 0.0051295441 0.0030263987 0.0055110216 - 798000 0.0049667934 0.0026418226 0.0050476132 - 798100 0.0056748962 0.0018637972 0.0046125751 - 798200 0.00443772 0.0016415176 0.0037910382 - 798300 0.0038997708 0.0016732375 0.003562189 - 798400 0.0048351834 0.0018440517 0.0041860936 - 798500 0.0054684527 0.0021918258 0.0048406076 - 798600 0.0050622247 0.0022664717 0.0047184868 - 798700 0.0034878488 0.0023997354 0.0040891622 - 798800 0.0063455738 0.0026420358 0.0057156731 - 798900 0.0033816345 0.0026003388 0.004238318 - 799000 0.0046508612 0.0024228237 0.0046755846 - 799100 0.0043451546 0.002680875 0.0047855592 - 799200 0.0060037474 0.0025517871 0.0054598522 - 799300 0.0055035177 0.0026729891 0.0053387554 - 799400 0.0050511333 0.002686959 0.0051336017 - 799500 0.005696337 0.0022016365 0.0049607998 - 799600 0.0063514853 0.0024087426 0.0054852433 - 799700 0.0043875335 0.0026511468 0.0047763583 - 799800 0.0036962295 0.0025332789 0.0043236401 - 799900 0.0089483024 0.0023210805 0.0066554145 - 800000 0.0048241531 0.0029766507 0.0053133498 - 800100 0.0054647709 0.0028408666 0.005487865 - 800200 0.0043247672 0.0023569362 0.0044517453 - 800300 0.0070851407 0.0020174042 0.0054492692 - 800400 0.0053275451 0.0020128999 0.0045934296 - 800500 0.005550409 0.0022073302 0.0048958096 - 800600 0.0054000562 0.002410543 0.0050261952 - 800700 0.0043177208 0.0023005844 0.0043919804 - 800800 0.0050099681 0.0022270827 0.004653786 - 800900 0.004330821 0.0029943279 0.0050920693 - 801000 0.0071417783 0.0032012301 0.006660529 - 801100 0.0044119307 0.003283531 0.0054205599 - 801200 0.0053930979 0.0031962479 0.0058085297 - 801300 0.0046087716 0.0031324869 0.0053648606 - 801400 0.0048559015 0.002898965 0.0052510423 - 801500 0.0054965396 0.0026962475 0.0053586338 - 801600 0.0046347188 0.0027814959 0.0050264378 - 801700 0.0060662199 0.0022734888 0.0052118141 - 801800 0.0064599217 0.0023274667 0.0054564912 - 801900 0.007951916 0.0020824898 0.0059341991 - 802000 0.0047665775 0.0024332216 0.0047420326 - 802100 0.0060335782 0.0020841797 0.0050066942 - 802200 0.0037688539 0.0020819125 0.0039074511 - 802300 0.0048953376 0.002468559 0.0048397382 - 802400 0.0051327827 0.002269863 0.0047560546 - 802500 0.0064748682 0.0022055939 0.0053418582 - 802600 0.0039265823 0.002563091 0.0044650293 - 802700 0.0048141546 0.0024164156 0.0047482718 - 802800 0.0045818185 0.0023733639 0.0045926822 - 802900 0.0034634497 0.0020788953 0.0037565037 - 803000 0.0048284168 0.0016107118 0.0039494762 - 803100 0.0052698664 0.0013974394 0.003950031 - 803200 0.0048823365 0.001440539 0.0038054207 - 803300 0.0041602655 0.0016900505 0.0037051791 - 803400 0.0048944712 0.0022910621 0.0046618216 - 803500 0.0061035768 0.0025738369 0.0055302569 - 803600 0.0055991496 0.0024420685 0.0051541566 - 803700 0.0053701395 0.0023765241 0.0049776855 - 803800 0.0058012696 0.0018933414 0.0047033314 - 803900 0.0059155228 0.0023422865 0.0052076179 - 804000 0.0064140647 0.0031504246 0.0062572372 - 804100 0.006582868 0.0034353101 0.0066238867 - 804200 0.0038774186 0.0030593907 0.0049375153 - 804300 0.0038547624 0.002892681 0.0047598315 - 804400 0.0042139853 0.002302636 0.0043437852 - 804500 0.0060779217 0.0021414117 0.005085405 - 804600 0.0058543673 0.0024938675 0.0053295766 - 804700 0.0059720078 0.0026776589 0.0055703502 - 804800 0.0056342763 0.00267543 0.0054045326 - 804900 0.0041959188 0.0024365954 0.0044689936 - 805000 0.0053405163 0.0025304368 0.0051172493 - 805100 0.0044991504 0.0026069109 0.0047861868 - 805200 0.0042837011 0.0025428591 0.0046177768 - 805300 0.0052127931 0.0023518956 0.0048768423 - 805400 0.0057905767 0.0021446834 0.004949494 - 805500 0.0041522068 0.0026968416 0.0047080668 - 805600 0.0054307549 0.0024950014 0.0051255233 - 805700 0.0047075309 0.0030051671 0.0052853774 - 805800 0.0063916131 0.0031190659 0.0062150034 - 805900 0.0060611731 0.0027166388 0.0056525196 - 806000 0.0053310461 0.0021056274 0.0046878529 - 806100 0.0038815868 0.0019579432 0.0038380868 - 806200 0.0046136763 0.0026710497 0.0049057992 - 806300 0.0047977439 0.0023336816 0.0046575888 - 806400 0.0051951821 0.0019755149 0.0044919312 - 806500 0.0047076023 0.0019514081 0.0042316529 - 806600 0.0050819841 0.0019632875 0.0044248736 - 806700 0.0046669729 0.0020581683 0.0043187332 - 806800 0.0041476382 0.0017416763 0.0037506885 - 806900 0.006398114 0.001795272 0.0048943584 - 807000 0.0053636428 0.0027161842 0.0053141987 - 807100 0.0057529022 0.0025147737 0.0053013357 - 807200 0.0049986034 0.0018273876 0.0042485861 - 807300 0.0056682742 0.0018010432 0.0045466135 - 807400 0.0035597721 0.0024616454 0.00418591 - 807500 0.0049803409 0.0028477034 0.0052600561 - 807600 0.0028980816 0.0028793742 0.0042831324 - 807700 0.0043731907 0.0024081686 0.0045264328 - 807800 0.0055733309 0.0023037616 0.0050033438 - 807900 0.004798967 0.002316374 0.0046408736 - 808000 0.0061418714 0.0019980631 0.0049730321 - 808100 0.0043169957 0.0020577852 0.00414883 - 808200 0.0046232709 0.0019028098 0.0041422067 - 808300 0.0044524603 0.0021268768 0.0042835373 - 808400 0.0049722384 0.0022953434 0.0047037714 - 808500 0.0040467963 0.0018311444 0.0037913113 - 808600 0.0045854102 0.0017467643 0.0039678223 - 808700 0.0044628094 0.0018715614 0.0040332347 - 808800 0.0053457962 0.0022691551 0.0048585251 - 808900 0.0051987077 0.0021620711 0.0046801951 - 809000 0.0054532984 0.0018102708 0.0044517122 - 809100 0.0060608195 0.0013841888 0.0043198982 - 809200 0.0040661344 0.0017803551 0.003749889 - 809300 0.0048948286 0.0014959495 0.0038668821 - 809400 0.0044786658 0.0015185586 0.0036879124 - 809500 0.0039656841 0.0014976983 0.0034185765 - 809600 0.0044908414 0.0017383442 0.0039135955 - 809700 0.0061750245 0.0018944717 0.0048854991 - 809800 0.0053226146 0.0022708 0.0048489415 - 809900 0.0063337286 0.0025189983 0.0055868981 - 810000 0.0052957978 0.0027215971 0.0052867491 - 810100 0.0047616338 0.0027908366 0.0050972529 - 810200 0.0054302874 0.0030171718 0.0056474673 - 810300 0.0044523643 0.0031941878 0.0053508018 - 810400 0.003536477 0.0030359691 0.0047489502 - 810500 0.007317624 0.0029644726 0.0065089467 - 810600 0.0045130004 0.0029755527 0.0051615372 - 810700 0.0053853279 0.0021462294 0.0047547476 - 810800 0.0062156153 0.0018983025 0.0049089911 - 810900 0.0048582993 0.0018117879 0.0041650267 - 811000 0.0047600881 0.0017826443 0.004088312 - 811100 0.0042342742 0.0017290717 0.0037800483 - 811200 0.005100782 0.0019897446 0.0044604359 - 811300 0.0052689568 0.0022833533 0.0048355043 - 811400 0.0051788182 0.0024110831 0.0049195732 - 811500 0.0056704868 0.0023328576 0.0050794996 - 811600 0.005411715 0.0025396021 0.0051609016 - 811700 0.0054108428 0.0022864462 0.0049073232 - 811800 0.0075556749 0.001997445 0.005657225 - 811900 0.00554471 0.00230139 0.0049871089 - 812000 0.0053942999 0.002590243 0.005203107 - 812100 0.0067589535 0.0025940667 0.0058679348 - 812200 0.0053461533 0.0025595601 0.0051491031 - 812300 0.0053976153 0.0026792054 0.0052936753 - 812400 0.0045248244 0.002899332 0.0050910438 - 812500 0.005058527 0.0027971215 0.0052473455 - 812600 0.0042214738 0.0024650766 0.004509853 - 812700 0.0043970669 0.002361145 0.0044909743 - 812800 0.0060833748 0.0022479285 0.0051945632 - 812900 0.0058132524 0.0021884717 0.0050042659 - 813000 0.0066235166 0.002836232 0.0060444978 - 813100 0.0069291524 0.0031433991 0.0064997073 - 813200 0.0065763602 0.0030410795 0.006226504 - 813300 0.0050079383 0.0028699491 0.0052956693 - 813400 0.0045644355 0.0027430744 0.0049539729 - 813500 0.0051998769 0.0028019323 0.0053206227 - 813600 0.006348489 0.0028319583 0.0059070076 - 813700 0.0038615467 0.0028423917 0.0047128284 - 813800 0.0053029383 0.0023853611 0.0049539719 - 813900 0.0041421367 0.0021021236 0.0041084711 - 814000 0.0050269011 0.0020561868 0.0044910921 - 814100 0.0036844239 0.0023533644 0.0041380072 - 814200 0.0049654017 0.0022529463 0.0046580627 - 814300 0.0054536355 0.0021934848 0.0048350895 - 814400 0.0046075175 0.0018983617 0.004130128 - 814500 0.0048065781 0.0017752168 0.0041034031 - 814600 0.0040994038 0.0024690427 0.0044546914 - 814700 0.0079657545 0.0023152406 0.0061736529 - 814800 0.0043990628 0.0024007933 0.0045315893 - 814900 0.0055395883 0.00264252 0.0053257581 - 815000 0.0062987728 0.0028213425 0.0058723106 - 815100 0.0050061862 0.003216012 0.0056408834 - 815200 0.0050951073 0.0033079696 0.0057759122 - 815300 0.0064539887 0.002742085 0.0058682358 - 815400 0.0064236241 0.002094496 0.0052059389 - 815500 0.0053050967 0.0021351667 0.0047048229 - 815600 0.0069063243 0.0023045455 0.0056497963 - 815700 0.0060321364 0.0023675894 0.0052894054 - 815800 0.0065677686 0.0024314381 0.0056127011 - 815900 0.0034465652 0.0025807393 0.0042501694 - 816000 0.0053124549 0.0026352826 0.005208503 - 816100 0.006542271 0.0023116137 0.0054805262 - 816200 0.0053675486 0.0028666974 0.0054666037 - 816300 0.005744887 0.0027759716 0.0055586513 - 816400 0.0053165842 0.0021723714 0.0047475919 - 816500 0.0055401157 0.0020055299 0.0046890234 - 816600 0.0050324525 0.0023088615 0.0047464557 - 816700 0.0045545448 0.0025013925 0.0047075002 - 816800 0.0056833114 0.0020522488 0.0048051028 - 816900 0.0048159357 0.0022739445 0.0046066634 - 817000 0.0048672835 0.0025941683 0.0049517588 - 817100 0.006170043 0.0024014536 0.0053900682 - 817200 0.0067570661 0.0018879019 0.0051608558 - 817300 0.0047699812 0.0023337634 0.004644223 - 817400 0.0042205243 0.0022243729 0.0042686893 - 817500 0.0050890877 0.0023099498 0.0047749766 - 817600 0.0053995223 0.0020555472 0.0046709408 - 817700 0.0056584825 0.0023506662 0.0050914936 - 817800 0.0040069341 0.0027738289 0.0047146876 - 817900 0.0059275203 0.0022911699 0.0051623125 - 818000 0.0047603286 0.0021436879 0.004449472 - 818100 0.004165436 0.0025337735 0.0045514066 - 818200 0.0042734701 0.0021938012 0.0042637632 - 818300 0.006579353 0.001542726 0.0047296001 - 818400 0.0052622085 0.0017699251 0.0043188074 - 818500 0.0052237755 0.0021898032 0.0047200695 - 818600 0.0041879128 0.0023140823 0.0043426025 - 818700 0.0045616964 0.0022472322 0.0044568039 - 818800 0.0050839222 0.0024176008 0.0048801257 - 818900 0.0028601999 0.0026067491 0.0039921584 - 819000 0.0063770968 0.0023904689 0.0054793752 - 819100 0.0064956601 0.0026430923 0.0057894277 - 819200 0.0064966105 0.0028862621 0.0060330578 - 819300 0.0050632659 0.002776409 0.0052289284 - 819400 0.0057113969 0.0025809281 0.005347386 - 819500 0.0060251734 0.0022263679 0.0051448113 - 819600 0.0039914411 0.002575696 0.0045090503 - 819700 0.0065432677 0.0029028869 0.0060722822 - 819800 0.0060557595 0.0029447287 0.0058779872 - 819900 0.0055422868 0.0026225556 0.0053071008 - 820000 0.0033393236 0.0024233731 0.004040858 - 820100 0.0035101684 0.002490749 0.0041909868 - 820200 0.0037944477 0.0022334698 0.0040714053 - 820300 0.0047857218 0.0022799217 0.0045980057 - 820400 0.0064000593 0.0024310187 0.0055310475 - 820500 0.0057143791 0.0023734809 0.0051413833 - 820600 0.0050626088 0.0021192712 0.0045714724 - 820700 0.0052328071 0.0020425149 0.0045771558 - 820800 0.005325438 0.0020128773 0.0045923863 - 820900 0.0046107253 0.0023131901 0.0045465102 - 821000 0.005930006 0.0023645718 0.0052369185 - 821100 0.0051765739 0.0031304243 0.0056378273 - 821200 0.0047440929 0.0031335897 0.0054315097 - 821300 0.0052369826 0.0029940386 0.005530702 - 821400 0.0043493819 0.0029779325 0.0050846644 - 821500 0.0069021163 0.0025988339 0.0059420465 - 821600 0.0028944514 0.002193758 0.0035957579 - 821700 0.0045841121 0.0022284613 0.0044488906 - 821800 0.0047160235 0.0022930871 0.004577411 - 821900 0.0049876826 0.0019863048 0.0044022136 - 822000 0.0045513185 0.0021394762 0.0043440211 - 822100 0.0042197203 0.002150464 0.004194391 - 822200 0.004001737 0.0018142528 0.0037525942 - 822300 0.0048013639 0.0018633444 0.004189005 - 822400 0.0060998734 0.0021488861 0.0051035123 - 822500 0.0052544879 0.0021969756 0.0047421182 - 822600 0.0057795582 0.002034021 0.0048334945 - 822700 0.0045897083 0.0024494283 0.0046725682 - 822800 0.0041447443 0.0026608005 0.004668411 - 822900 0.0048164089 0.0029775656 0.0053105136 - 823000 0.0060693132 0.0029476817 0.0058875053 - 823100 0.0068741238 0.0025658432 0.0058954969 - 823200 0.0053158639 0.002192046 0.0047669176 - 823300 0.0041441383 0.002466153 0.00447347 - 823400 0.0065336327 0.0022529207 0.0054176491 - 823500 0.0040817626 0.0020893023 0.0040664061 - 823600 0.0035413419 0.0022180494 0.0039333869 - 823700 0.0034978393 0.0021319421 0.003826208 - 823800 0.0040189958 0.0023192821 0.0042659832 - 823900 0.0050449297 0.0027002211 0.0051438589 - 824000 0.0044065578 0.00241935 0.0045537764 - 824100 0.0049948908 0.0027630434 0.0051824437 - 824200 0.0052255683 0.0025264072 0.0050575419 - 824300 0.0034338671 0.0026672169 0.0043304963 - 824400 0.0040301041 0.0024379426 0.0043900243 - 824500 0.0043939947 0.0021353393 0.0042636805 - 824600 0.0046015261 0.0023034962 0.0045323604 - 824700 0.0055116021 0.0019687488 0.004638431 - 824800 0.0057457895 0.0019137463 0.0046968631 - 824900 0.0061598914 0.0022012977 0.005184995 - 825000 0.005980911 0.0025340696 0.0054310734 - 825100 0.0040388393 0.0026518289 0.0046081417 - 825200 0.0045036012 0.0026641868 0.0048456186 - 825300 0.0049192598 0.0026286721 0.0050114386 - 825400 0.0043730318 0.0027937184 0.0049119057 - 825500 0.0047907837 0.0028431576 0.0051636934 - 825600 0.0045912123 0.0028346942 0.0050585627 - 825700 0.0034615048 0.0024475823 0.0041242487 - 825800 0.0057425965 0.0025805558 0.0053621259 - 825900 0.0039801694 0.0025144349 0.0044423295 - 826000 0.0056857335 0.0020423031 0.0047963302 - 826100 0.0047997786 0.0018884482 0.0042133409 - 826200 0.0049843393 0.0018359854 0.0042502747 - 826300 0.0064825593 0.0021620584 0.0053020481 - 826400 0.0053932601 0.0023900746 0.005002435 - 826500 0.006056701 0.0023642806 0.0052979952 - 826600 0.0062265065 0.002377576 0.0053935401 - 826700 0.0045355 0.0021999674 0.0043968502 - 826800 0.0050379029 0.0020220155 0.0044622497 - 826900 0.0046593627 0.0019770457 0.0042339245 - 827000 0.0049981096 0.0021686279 0.0045895872 - 827100 0.0049193146 0.0020620868 0.0044448798 - 827200 0.00459885 0.0023080332 0.0045356011 - 827300 0.004613596 0.0023329309 0.0045676415 - 827400 0.0054427924 0.0023947827 0.0050311353 - 827500 0.0055947344 0.0029717256 0.0056816751 - 827600 0.0057356231 0.0028960672 0.0056742596 - 827700 0.0039488977 0.0028574619 0.0047702092 - 827800 0.0054817551 0.0025028525 0.0051580776 - 827900 0.0057111596 0.0029706195 0.0057369625 - 828000 0.0058450403 0.0032386558 0.0060698471 - 828100 0.0062228118 0.0033842814 0.0063984559 - 828200 0.0054049447 0.0036594447 0.0062774648 - 828300 0.0059065699 0.0032876541 0.0061486489 - 828400 0.005179526 0.0025602192 0.0050690521 - 828500 0.0062229252 0.0026861668 0.0057003962 - 828600 0.0068777957 0.0023503301 0.0056817624 - 828700 0.0035515058 0.0027120034 0.004432264 - 828800 0.005118853 0.0024464101 0.0049258545 - 828900 0.0043459863 0.0023968363 0.0045019235 - 829000 0.00487111 0.0026423938 0.0050018377 - 829100 0.0048978132 0.0029040012 0.0052763794 - 829200 0.0058389628 0.0025143534 0.005342601 - 829300 0.0047915658 0.0025204788 0.0048413935 - 829400 0.0061962764 0.0029958507 0.0059971721 - 829500 0.0047366063 0.0030922363 0.00538653 - 829600 0.0040120395 0.0025893264 0.0045326581 - 829700 0.005352479 0.0022548532 0.0048474602 - 829800 0.0046655326 0.0023244881 0.0045843554 - 829900 0.0051785426 0.0023708818 0.0048792383 - 830000 0.0049267985 0.0022590341 0.0046454521 - 830100 0.0034315258 0.0022996178 0.0039617632 - 830200 0.0043360919 0.0020753282 0.0041756228 - 830300 0.0046260226 0.0022220398 0.0044627694 - 830400 0.0059769369 0.0024802649 0.0053753437 - 830500 0.0058350569 0.0022756619 0.0051020175 - 830600 0.0058028164 0.0020120768 0.004822816 - 830700 0.005518512 0.0023972716 0.0050703008 - 830800 0.0059080228 0.0023178378 0.0051795364 - 830900 0.0044971516 0.0023351242 0.004513432 - 831000 0.0061761945 0.0025086881 0.0055002823 - 831100 0.0038117296 0.0028707326 0.0047170391 - 831200 0.0051339365 0.0022681902 0.0047549407 - 831300 0.004010342 0.0018099531 0.0037524625 - 831400 0.0060078819 0.0017692154 0.0046792832 - 831500 0.0055727414 0.0021407587 0.0048400553 - 831600 0.0040245431 0.0024121882 0.0043615763 - 831700 0.0056943699 0.0023282783 0.0050864887 - 831800 0.0053188756 0.0024197897 0.0049961201 - 831900 0.0062563522 0.0023068296 0.0053372502 - 832000 0.0052745773 0.002474497 0.0050293704 - 832100 0.0037176737 0.0021889589 0.0039897071 - 832200 0.0079583488 0.0015772511 0.0054320763 - 832300 0.0045830933 0.0021184677 0.0043384035 - 832400 0.0061970706 0.0024167754 0.0054184815 - 832500 0.0054147424 0.0023379442 0.0049607101 - 832600 0.0045424213 0.002082179 0.0042824143 - 832700 0.0050937126 0.0021369516 0.0046042186 - 832800 0.0036796767 0.0025341454 0.0043164888 - 832900 0.0049846049 0.0020885783 0.0045029964 - 833000 0.0055207885 0.0022813384 0.0049554704 - 833100 0.0051201046 0.0024835693 0.00496362 - 833200 0.0058830742 0.002816323 0.005665937 - 833300 0.0054137401 0.0029264813 0.0055487616 - 833400 0.0051874226 0.0028107166 0.0053233744 - 833500 0.0040988918 0.0026917799 0.0046771806 - 833600 0.004302148 0.0021876737 0.0042715266 - 833700 0.0066157197 0.0014693206 0.0046738098 - 833800 0.0045364452 0.0017716483 0.0039689889 - 833900 0.0066623366 0.0019840621 0.0052111314 - 834000 0.0040989843 0.0024341347 0.0044195802 - 834100 0.0037467081 0.0024179441 0.0042327559 - 834200 0.0041269421 0.0025669429 0.0045659304 - 834300 0.0056012893 0.0021579695 0.004871094 - 834400 0.0058678559 0.0021478039 0.0049900466 - 834500 0.0047017494 0.0021682526 0.0044456625 - 834600 0.0055502488 0.0019675529 0.0046559547 - 834700 0.0053420939 0.0020092097 0.0045967864 - 834800 0.0045949008 0.0024704585 0.0046961136 - 834900 0.004337325 0.0024703569 0.0045712487 - 835000 0.0045422146 0.0028491574 0.0050492926 - 835100 0.0062929794 0.0025783793 0.0056265412 - 835200 0.0052948594 0.0024411945 0.005005892 - 835300 0.0037158626 0.0026309993 0.0044308702 - 835400 0.0045912973 0.0023154577 0.0045393673 - 835500 0.0045197763 0.0021770982 0.0043663648 - 835600 0.0055790169 0.0022450968 0.0049474331 - 835700 0.0054329092 0.0019989442 0.0046305097 - 835800 0.0052921154 0.0021705242 0.0047338926 - 835900 0.0045914653 0.0025838512 0.0048078423 - 836000 0.00480491 0.002649399 0.0049767773 - 836100 0.0057766663 0.0021896471 0.0049877199 - 836200 0.0044991783 0.0022957362 0.0044750257 - 836300 0.0056510698 0.0025503386 0.0052875755 - 836400 0.0048522203 0.0026181684 0.0049684626 - 836500 0.0073145606 0.0028265682 0.0063695585 - 836600 0.0058313206 0.0031592187 0.0059837646 - 836700 0.0040188518 0.0027793702 0.0047260016 - 836800 0.0045976337 0.0025512495 0.0047782283 - 836900 0.0043706733 0.0023690972 0.0044861421 - 837000 0.0052712761 0.002313835 0.0048671093 - 837100 0.0059679898 0.0023961018 0.0052868469 - 837200 0.0038697098 0.0025417435 0.0044161342 - 837300 0.0062701213 0.0025193594 0.0055564494 - 837400 0.004342511 0.0025749844 0.0046783882 - 837500 0.0078962961 0.0021384158 0.0059631842 - 837600 0.0063414999 0.0023705574 0.0054422214 - 837700 0.0047926252 0.0023893503 0.0047107781 - 837800 0.0056513239 0.0023528334 0.0050901934 - 837900 0.0055139365 0.0024624729 0.0051332859 - 838000 0.0049581246 0.002512766 0.0049143576 - 838100 0.0058663078 0.0023105879 0.0051520807 - 838200 0.0056090756 0.0023337216 0.0050506176 - 838300 0.0041015021 0.002127573 0.0041142381 - 838400 0.0056437258 0.0023825146 0.0051161943 - 838500 0.004199298 0.0023708453 0.0044048803 - 838600 0.004998893 0.0020697711 0.0044911099 - 838700 0.0053021263 0.0019570358 0.0045252532 - 838800 0.0051229968 0.0018582538 0.0043397054 - 838900 0.0038871496 0.0017116579 0.003594496 - 839000 0.0046071258 0.0018011569 0.0040327334 - 839100 0.0035353213 0.001936047 0.0036484683 - 839200 0.004412277 0.0023337095 0.0044709062 - 839300 0.0071344419 0.0022619689 0.0057177141 - 839400 0.0046304856 0.0029365632 0.0051794547 - 839500 0.003635207 0.0034120498 0.0051728531 - 839600 0.0040909069 0.0029285483 0.0049100813 - 839700 0.0052435848 0.0023147554 0.0048546168 - 839800 0.0028826631 0.0021162648 0.0035125548 - 839900 0.0054795308 0.0020162644 0.0046704121 - 840000 0.0049045616 0.0017858008 0.0041614478 - 840100 0.0038253155 0.002003736 0.0038566231 - 840200 0.0040379277 0.0021812672 0.0041371384 - 840300 0.0053418251 0.0024734887 0.0050609353 - 840400 0.0067309497 0.0030962639 0.0063565676 - 840500 0.0044313056 0.003124712 0.0052711257 - 840600 0.0046469022 0.0031021083 0.0053529515 - 840700 0.0045061259 0.0024353235 0.0046179782 - 840800 0.0034020917 0.0022570163 0.0039049045 - 840900 0.004742868 0.0025826689 0.0048799956 - 841000 0.0040852077 0.0027812847 0.0047600572 - 841100 0.0048806397 0.0026939012 0.005057961 - 841200 0.0043685743 0.0024993002 0.0046153284 - 841300 0.004985408 0.0022976992 0.0047125062 - 841400 0.0047789092 0.0022122699 0.0045270541 - 841500 0.0037330465 0.0022782194 0.0040864138 - 841600 0.0049585875 0.0020628673 0.0044646831 - 841700 0.0061202055 0.0019682301 0.0049327046 - 841800 0.0048181385 0.0021143409 0.0044481268 - 841900 0.0054938713 0.0023905406 0.0050516345 - 842000 0.0054432633 0.0023828496 0.0050194302 - 842100 0.0047971672 0.0023132216 0.0046368495 - 842200 0.005414443 0.0016615812 0.004284202 - 842300 0.0040518641 0.0014658586 0.0034284803 - 842400 0.0051666151 0.0018372752 0.0043398544 - 842500 0.0047905582 0.0021211996 0.0044416263 - 842600 0.0066801764 0.0020455703 0.0052812807 - 842700 0.0054692178 0.0022100907 0.004859243 - 842800 0.0072044893 0.0028864104 0.0063760849 - 842900 0.0063627307 0.0031421571 0.0062241048 - 843000 0.0075163131 0.0024377602 0.0060784744 - 843100 0.0078431844 0.0021741203 0.0059731627 - 843200 0.0053367244 0.0023543176 0.0049392935 - 843300 0.0060816561 0.0022066505 0.0051524527 - 843400 0.0061239287 0.0022866255 0.0052529035 - 843500 0.0053474298 0.00251117 0.0051013313 - 843600 0.0065357194 0.0020490237 0.0052147628 - 843700 0.0056361432 0.0017052454 0.0044352523 - 843800 0.0048813018 0.0022678594 0.00463224 - 843900 0.0053272225 0.0027229423 0.0053033157 - 844000 0.0059293796 0.0025452792 0.0054173225 - 844100 0.0064942587 0.002198614 0.0053442705 - 844200 0.0053751023 0.0028066296 0.0054101948 - 844300 0.0046364829 0.0034054878 0.0056512842 - 844400 0.0043410389 0.0032769394 0.0053796301 - 844500 0.0078233555 0.00275888 0.0065483178 - 844600 0.0053461678 0.0023630164 0.0049525664 - 844700 0.005604804 0.0019556998 0.0046705268 - 844800 0.0044237592 0.0018393265 0.0039820849 - 844900 0.0057805607 0.0017300913 0.0045300504 - 845000 0.0035871937 0.0019901145 0.0037276614 - 845100 0.0056223523 0.0024746851 0.005198012 - 845200 0.0042528666 0.002868687 0.0049286693 - 845300 0.0050594811 0.0025666168 0.0050173029 - 845400 0.005854056 0.0021362682 0.0049718266 - 845500 0.0055824248 0.0017349966 0.0044389836 - 845600 0.0031475808 0.002219519 0.0037441284 - 845700 0.0054859728 0.0022972851 0.0049545532 - 845800 0.0047401683 0.0023717831 0.0046678022 - 845900 0.0045984093 0.0020473423 0.0042746968 - 846000 0.0043674519 0.0017364579 0.0038519424 - 846100 0.0043055989 0.0018138571 0.0038993816 - 846200 0.0042141115 0.002067507 0.0041087173 - 846300 0.004734706 0.0020638533 0.0043572265 - 846400 0.0057632516 0.0021146701 0.0049062451 - 846500 0.0057678768 0.0017697501 0.0045635654 - 846600 0.0056407848 0.0018700167 0.0046022718 - 846700 0.0045046841 0.0024373158 0.0046192722 - 846800 0.0048742509 0.0024873948 0.0048483601 - 846900 0.0061905879 0.0024314535 0.0054300195 - 847000 0.0066294527 0.0023046501 0.0055157913 - 847100 0.0059596026 0.0025653313 0.0054520138 - 847200 0.0060575006 0.0023033575 0.0052374594 - 847300 0.0053473826 0.0020083009 0.0045984393 - 847400 0.0046242044 0.0018274772 0.0040673262 - 847500 0.0047585162 0.0018791618 0.0041840681 - 847600 0.0066284825 0.0015820347 0.0047927059 - 847700 0.0049443664 0.0020828085 0.0044777359 - 847800 0.0044812173 0.0025104955 0.0046810851 - 847900 0.00570263 0.0022656499 0.0050278613 - 848000 0.0050332411 0.0021970468 0.004635023 - 848100 0.0065102341 0.0022228496 0.0053762443 - 848200 0.0053020083 0.0023642775 0.0049324378 - 848300 0.0053274385 0.0021139618 0.0046944398 - 848400 0.0053183634 0.0018275016 0.0044035838 - 848500 0.004827764 0.0020952437 0.0044336919 - 848600 0.0063194465 0.0021583366 0.0052193185 - 848700 0.0051665827 0.0027331178 0.0052356813 - 848800 0.0047422019 0.0031194839 0.0054164879 - 848900 0.0058795123 0.0026998931 0.0055477818 - 849000 0.0041452078 0.0024759441 0.0044837791 - 849100 0.0070765726 0.0021107849 0.0055384997 - 849200 0.0047761626 0.0020776899 0.0043911437 - 849300 0.006662591 0.0020612993 0.0052884918 - 849400 0.0068060427 0.0021599752 0.0054566522 - 849500 0.0038453469 0.002101379 0.0039639689 - 849600 0.0060106407 0.0019559547 0.0048673588 - 849700 0.004552989 0.0019320627 0.0041374167 - 849800 0.0050282681 0.0018207869 0.0042563542 - 849900 0.0047089863 0.0017501765 0.0040310917 - 850000 0.0043243929 0.0019558883 0.0040505161 - 850100 0.0056564703 0.0018933254 0.0046331782 - 850200 0.0052461651 0.0018375648 0.004378676 - 850300 0.006151586 0.0021834358 0.0051631102 - 850400 0.0065256154 0.0017365857 0.0048974306 - 850500 0.0046127787 0.0016723056 0.0039066203 - 850600 0.0044770506 0.0023173061 0.0044858774 - 850700 0.0063483717 0.0025545353 0.0056295279 - 850800 0.0055342617 0.0024077276 0.0050883856 - 850900 0.0048869174 0.0027211888 0.0050882894 - 851000 0.0060937245 0.0026640692 0.005615717 - 851100 0.0059759438 0.002279412 0.0051740098 - 851200 0.0054568681 0.0021773895 0.00482056 - 851300 0.0054415679 0.0021548459 0.0047906053 - 851400 0.005322702 0.002165118 0.0047433018 - 851500 0.0048832469 0.0022932947 0.0046586174 - 851600 0.0056398491 0.0023176497 0.0050494516 - 851700 0.0049476685 0.0023908128 0.0047873397 - 851800 0.0043297269 0.0025219515 0.0046191629 - 851900 0.0053344877 0.002362204 0.0049460965 - 852000 0.005651052 0.0027253419 0.0054625702 - 852100 0.0052554842 0.0029110326 0.0054566577 - 852200 0.0068338062 0.002393966 0.0057040908 - 852300 0.0066171613 0.0022001058 0.0054052933 - 852400 0.0045747562 0.0024792577 0.0046951552 - 852500 0.0054963541 0.0026458971 0.0053081936 - 852600 0.0051301672 0.0024514297 0.0049363545 - 852700 0.0046758254 0.0022307605 0.0044956134 - 852800 0.0054242631 0.0020245972 0.0046519747 - 852900 0.0055965071 0.0017909959 0.0045018041 - 853000 0.0047093561 0.0019958598 0.0042769542 - 853100 0.0038906764 0.0023574268 0.0042419732 - 853200 0.0045265386 0.002205101 0.0043976431 - 853300 0.0060613464 0.0017927315 0.0047286962 - 853400 0.0038360721 0.0019044134 0.0037625108 - 853500 0.0069481094 0.001961426 0.0053269165 - 853600 0.0061749654 0.0026702197 0.0056612186 - 853700 0.0039727464 0.0027154868 0.0046397858 - 853800 0.0062323726 0.0023276151 0.0053464205 - 853900 0.0058344756 0.0025840553 0.0054101295 - 854000 0.0054062086 0.0027285542 0.0053471864 - 854100 0.0068726921 0.0024558042 0.0057847644 - 854200 0.0047506581 0.002789197 0.005090297 - 854300 0.0046492118 0.0027093244 0.0049612864 - 854400 0.0053650482 0.0026714527 0.0052701479 - 854500 0.0042997042 0.0026879602 0.0047706294 - 854600 0.0032125823 0.0024378487 0.0039939432 - 854700 0.0048370649 0.0021016679 0.0044446212 - 854800 0.0032609397 0.0020056082 0.0035851258 - 854900 0.0047658867 0.0019665593 0.0042750357 - 855000 0.0051441662 0.0019664955 0.004458201 - 855100 0.0045112696 0.0018055282 0.0039906745 - 855200 0.0048344969 0.0016857722 0.0040274816 - 855300 0.0059210706 0.0017305205 0.004598539 - 855400 0.0057537109 0.0019684333 0.004755387 - 855500 0.0046773708 0.0019018094 0.0041674108 - 855600 0.0056116668 0.001564644 0.0042827951 - 855700 0.0048116404 0.0020640989 0.0043947372 - 855800 0.0054605995 0.0023709866 0.0050159645 - 855900 0.0055447047 0.0019926245 0.0046783409 - 856000 0.0050054473 0.0020305152 0.0044550288 - 856100 0.0048380213 0.0020647083 0.0044081249 - 856200 0.0037347387 0.0025173661 0.0043263802 - 856300 0.0039466067 0.0030060816 0.0049177193 - 856400 0.0055201911 0.0027180454 0.0053918879 - 856500 0.0046404214 0.0024800248 0.0047277289 - 856600 0.004603687 0.0027250226 0.0049549335 - 856700 0.0066560246 0.0025893617 0.0058133736 - 856800 0.0039967012 0.0029387001 0.0048746023 - 856900 0.0053172122 0.0026016934 0.0051772181 - 857000 0.0059338459 0.0027521462 0.0056263528 - 857100 0.0047370318 0.0026488803 0.00494338 - 857200 0.0045607335 0.0023662758 0.0045753812 - 857300 0.0059721903 0.002197875 0.0050906547 - 857400 0.0065228781 0.0024161879 0.005575707 - 857500 0.0062006409 0.0028075766 0.0058110121 - 857600 0.0038365911 0.0028732953 0.0047316441 - 857700 0.0054072567 0.0021494542 0.0047685942 - 857800 0.0056006298 0.0019976169 0.004710422 - 857900 0.0057936282 0.0025047956 0.0053110842 - 858000 0.0050862902 0.0029010384 0.0053647102 - 858100 0.0049961001 0.0026673228 0.0050873088 - 858200 0.0059523257 0.0023044549 0.0051876127 - 858300 0.0047614486 0.0021864549 0.0044927816 - 858400 0.004968407 0.0021119848 0.0045185569 - 858500 0.0057749881 0.0018307458 0.0046280056 - 858600 0.0066652147 0.0018144372 0.0050429005 - 858700 0.0061584912 0.0022876948 0.005270714 - 858800 0.0046949773 0.0025472064 0.0048213361 - 858900 0.0050928117 0.0024940559 0.0049608866 - 859000 0.0049797355 0.0022765165 0.0046885759 - 859100 0.0056067745 0.0020718244 0.0047876058 - 859200 0.0054229514 0.0020380228 0.0046647649 - 859300 0.0039780228 0.0018189108 0.0037457656 - 859400 0.0042505982 0.001724247 0.0037831305 - 859500 0.0052628541 0.0016918975 0.0042410925 - 859600 0.0048974198 0.0024996152 0.0048718029 - 859700 0.0047976964 0.0023383387 0.0046622229 - 859800 0.0057708349 0.0018095158 0.004604764 - 859900 0.0064772899 0.0018962116 0.0050336489 - 860000 0.0034462723 0.0023083792 0.0039776674 - 860100 0.0061993454 0.0018095954 0.0048124033 - 860200 0.0057034573 0.0015984848 0.0043610969 - 860300 0.0058192592 0.001697176 0.0045158796 - 860400 0.0049323521 0.0019389007 0.0043280088 - 860500 0.0054758397 0.0016975892 0.004349949 - 860600 0.004427477 0.0015387656 0.0036833247 - 860700 0.0053766726 0.0018820538 0.0044863796 - 860800 0.0040810129 0.0023712742 0.0043480148 - 860900 0.0053870128 0.0017524227 0.004361757 - 861000 0.0045158816 0.0017887084 0.0039760886 - 861100 0.0050735179 0.0018720085 0.0043294938 - 861200 0.0073476016 0.001434559 0.0049935535 - 861300 0.00308931 0.001910658 0.0034070426 - 861400 0.0053646876 0.0022540369 0.0048525574 - 861500 0.0071445394 0.0025223269 0.0059829632 - 861600 0.0057081751 0.0022294717 0.004994369 - 861700 0.0063887216 0.0019052813 0.0049998183 - 861800 0.0032269482 0.0020065916 0.0035696446 - 861900 0.0042111684 0.0018873598 0.0039271445 - 862000 0.0041561577 0.0015282853 0.0035414241 - 862100 0.0056271413 0.001517036 0.0042426825 - 862200 0.0042311892 0.0017120049 0.0037614871 - 862300 0.0050005287 0.0018080548 0.0042301858 - 862400 0.0054122903 0.0013855865 0.0040071646 - 862500 0.0054489963 0.0018658846 0.0045052422 - 862600 0.0040738253 0.0024948433 0.0044681024 - 862700 0.0039638648 0.002588913 0.00450891 - 862800 0.0070186638 0.0020004464 0.0054001117 - 862900 0.004618009 0.0023952034 0.0046320516 - 863000 0.0053286422 0.0020605854 0.0046416465 - 863100 0.004821944 0.0020788595 0.0044144886 - 863200 0.0046004549 0.0021816466 0.0044099919 - 863300 0.0059568402 0.0020204467 0.0049057911 - 863400 0.0048051147 0.0022981038 0.0046255812 - 863500 0.0064309824 0.0023055222 0.0054205293 - 863600 0.004371846 0.0018549647 0.0039725776 - 863700 0.005676439 0.0015940985 0.0043436237 - 863800 0.0032598176 0.0018324503 0.0034114244 - 863900 0.0038777622 0.0020756202 0.0039539113 - 864000 0.0055107621 0.0022622969 0.0049315723 - 864100 0.0056518722 0.0029205846 0.0056582102 - 864200 0.0040179165 0.0031639942 0.0051101725 - 864300 0.0043485825 0.0026786517 0.0047849963 - 864400 0.0053794451 0.0022325172 0.0048381859 - 864500 0.0060767923 0.0016320858 0.0045755321 - 864600 0.0044020236 0.0018533493 0.0039855794 - 864700 0.0049490534 0.0022481836 0.0046453813 - 864800 0.004145541 0.0023796275 0.0043876239 - 864900 0.0037447399 0.0029604778 0.0047743362 - 865000 0.004296659 0.0031483916 0.0052295858 - 865100 0.0058345092 0.0032608653 0.0060869557 - 865200 0.0054960718 0.0031744876 0.0058366473 - 865300 0.0045008081 0.0032947914 0.0054748703 - 865400 0.0045653353 0.0030730639 0.0052843982 - 865500 0.0071978057 0.0026306075 0.0061170447 - 865600 0.0063455199 0.0028166189 0.0058902301 - 865700 0.0050912691 0.0028198794 0.0052859629 - 865800 0.0060307172 0.0024094242 0.0053305528 - 865900 0.0041719136 0.0023382874 0.0043590581 - 866000 0.0044351216 0.0020427447 0.0041910067 - 866100 0.004781782 0.0016894987 0.0040056743 - 866200 0.0055641472 0.0018026637 0.0044977975 - 866300 0.0045042024 0.002469276 0.0046509991 - 866400 0.0059607457 0.0024847772 0.0053720134 - 866500 0.0054225 0.0024807233 0.0051072467 - 866600 0.0054996571 0.0023395445 0.0050034409 - 866700 0.0057250688 0.0021726529 0.0049457331 - 866800 0.005871109 0.0021315082 0.0049753266 - 866900 0.0047196067 0.0021038641 0.0043899236 - 867000 0.0050635695 0.0020815585 0.0045342249 - 867100 0.0056827948 0.0024987451 0.0052513489 - 867200 0.0051267951 0.0028326384 0.0053159298 - 867300 0.0057432587 0.002637855 0.0054197459 - 867400 0.0045812587 0.0026254513 0.0048444985 - 867500 0.0046908666 0.0027738758 0.0050460143 - 867600 0.0050349511 0.0023926967 0.0048315012 - 867700 0.0055894676 0.0021833812 0.0048907795 - 867800 0.0032962255 0.0021784017 0.0037750109 - 867900 0.0050099061 0.0023848044 0.0048114777 - 868000 0.0052312897 0.0026183719 0.0051522779 - 868100 0.0059175261 0.0025713594 0.0054376611 - 868200 0.0068417628 0.002708126 0.0060221049 - 868300 0.0063183105 0.0029442976 0.0060047292 - 868400 0.0056966803 0.0024823776 0.0052417071 - 868500 0.0053847449 0.0020218806 0.0046301164 - 868600 0.0057887812 0.0019590944 0.0047630353 - 868700 0.0059481688 0.001974104 0.0048552483 - 868800 0.0065051111 0.0018759743 0.0050268875 - 868900 0.0037922577 0.0019039411 0.0037408159 - 869000 0.0052164416 0.0025044649 0.0050311788 - 869100 0.0053844601 0.0024453599 0.0050534577 - 869200 0.0059956641 0.0019829856 0.0048871354 - 869300 0.0052352734 0.0017753918 0.0043112273 - 869400 0.0039440863 0.0016644951 0.0035749119 - 869500 0.0056507857 0.0013360053 0.0040731046 - 869600 0.0039593142 0.0015651736 0.0034829664 - 869700 0.0050498121 0.0017194958 0.0041654985 - 869800 0.0045089653 0.0018625733 0.0040466033 - 869900 0.0040847952 0.0021729251 0.0041514978 - 870000 0.0053131464 0.002425373 0.0049989283 - 870100 0.0046395931 0.0029205034 0.0051678063 - 870200 0.0051698091 0.0031165061 0.0056206324 - 870300 0.00526207 0.0026580498 0.005206865 - 870400 0.0044115242 0.0025758166 0.0047126487 - 870500 0.0053439686 0.0022063411 0.0047948259 - 870600 0.0048150245 0.0022421613 0.0045744388 - 870700 0.0045740713 0.0026258586 0.0048414243 - 870800 0.0058442331 0.0023316024 0.0051624028 - 870900 0.0045884688 0.0020398695 0.004262409 - 871000 0.006745615 0.0023629332 0.0056303405 - 871100 0.0029735211 0.0029038651 0.0043441644 - 871200 0.0029176933 0.0027037768 0.0041170345 - 871300 0.00370194 0.0024572035 0.0042503307 - 871400 0.0047947072 0.002195163 0.0045175993 - 871500 0.0040491894 0.0021832617 0.0041445879 - 871600 0.004131186 0.0020976391 0.0040986823 - 871700 0.0036244676 0.0025006773 0.0042562788 - 871800 0.0050327311 0.0028469612 0.0052846903 - 871900 0.0059752716 0.002640368 0.0055346401 - 872000 0.0072052441 0.0026021206 0.0060921607 - 872100 0.0054599654 0.003356316 0.0060009867 - 872200 0.0061494091 0.0034011473 0.0063797674 - 872300 0.0062216418 0.0029028621 0.0059164698 - 872400 0.0057700572 0.002376346 0.0051712175 - 872500 0.0054605262 0.0017247568 0.0043696991 - 872600 0.0065060645 0.0019192938 0.0050706688 - 872700 0.0034921797 0.00214903 0.0038405545 - 872800 0.0046568465 0.001904314 0.0041599741 - 872900 0.0047508738 0.0018934728 0.0041946773 - 873000 0.0039989058 0.0023370909 0.0042740609 - 873100 0.0046116014 0.0024025697 0.0046363141 - 873200 0.0058362033 0.0024107606 0.0052376716 - 873300 0.0050052353 0.0021089349 0.0045333457 - 873400 0.0043243666 0.0018570149 0.0039516299 - 873500 0.0060417746 0.0017800661 0.0047065506 - 873600 0.0058286883 0.0016270908 0.0044503617 - 873700 0.0059504082 0.0016722526 0.0045544816 - 873800 0.0047201343 0.001502395 0.00378871 - 873900 0.0051643384 0.0019103465 0.0044118229 - 874000 0.0044716935 0.0019164247 0.0040824012 - 874100 0.0055209738 0.0016687887 0.0043430104 - 874200 0.005541297 0.0017268129 0.0044108787 - 874300 0.0043406096 0.0018662017 0.0039686845 - 874400 0.004566841 0.0020667351 0.0042787987 - 874500 0.0053422991 0.0021666657 0.0047543418 - 874600 0.0035525786 0.0024153898 0.0041361701 - 874700 0.005953952 0.0024292206 0.0053131661 - 874800 0.0058431573 0.0024488044 0.0052790837 - 874900 0.0064058203 0.0024285904 0.0055314096 - 875000 0.00405313 0.0020533357 0.0040165705 - 875100 0.0037929332 0.0019596841 0.0037968861 - 875200 0.0050701367 0.0021221614 0.0045780088 - 875300 0.0060715716 0.0017051027 0.0046460202 - 875400 0.004710324 0.0014137658 0.003695329 - 875500 0.0043335123 0.0016019138 0.0037009589 - 875600 0.0042025856 0.0018473997 0.0038830271 - 875700 0.0049053841 0.0017878385 0.0041638839 - 875800 0.0041899618 0.0019920418 0.0040215545 - 875900 0.0044421586 0.0024465964 0.0045982669 - 876000 0.0064750486 0.0024625979 0.0055989496 - 876100 0.0046489407 0.0024328187 0.0046846493 - 876200 0.0054684069 0.0026573109 0.0053060705 - 876300 0.0059946188 0.0025223652 0.0054260087 - 876400 0.005264461 0.002009759 0.0045597323 - 876500 0.0047465956 0.0023134978 0.0046126301 - 876600 0.0038953848 0.0025319194 0.0044187464 - 876700 0.0059633005 0.0024601723 0.005348646 - 876800 0.0052690376 0.0023696607 0.0049218508 - 876900 0.0051080073 0.0027025657 0.0051767568 - 877000 0.0053158923 0.0022440654 0.0048189508 - 877100 0.0043594579 0.0018305838 0.0039421963 - 877200 0.0049671968 0.0015844873 0.0039904732 - 877300 0.0039512363 0.0015694145 0.0034832945 - 877400 0.0038771032 0.0016423989 0.0035203707 - 877500 0.0045670734 0.0017279506 0.0039401268 - 877600 0.0044039909 0.0018076409 0.003940824 - 877700 0.0071993151 0.0015499751 0.0050371433 - 877800 0.0056428781 0.0021374626 0.0048707317 - 877900 0.0055321069 0.002384965 0.0050645793 - 878000 0.0043618243 0.0021396002 0.0042523589 - 878100 0.0061990178 0.0018258514 0.0048285006 - 878200 0.0053402256 0.0019623311 0.0045490028 - 878300 0.0038492453 0.0021352829 0.0039997611 - 878400 0.0054717178 0.0018519674 0.0045023307 - 878500 0.0052963635 0.0023764019 0.004941828 - 878600 0.0043833021 0.002746165 0.0048693269 - 878700 0.0044160999 0.0022371139 0.0043761623 - 878800 0.0061904195 0.0018416638 0.0048401482 - 878900 0.0047326323 0.0022643587 0.0045567275 - 879000 0.0051858318 0.0024106959 0.0049225832 - 879100 0.0079683743 0.0022448074 0.0061044887 - 879200 0.0051239936 0.0026982857 0.0051802201 - 879300 0.0047041908 0.0026877246 0.004966317 - 879400 0.0055377993 0.0023778524 0.005060224 - 879500 0.0055742892 0.0016449477 0.004344994 - 879600 0.0044573179 0.0014146499 0.0035736632 - 879700 0.0045609099 0.0019616657 0.0041708564 - 879800 0.0046675853 0.0020757603 0.0043366219 - 879900 0.0043234176 0.0019717256 0.004065881 - 880000 0.0058968536 0.0018146106 0.0046708991 - 880100 0.0055390001 0.0019235335 0.0046064867 - 880200 0.0039529748 0.0024218493 0.0043365715 - 880300 0.0046439565 0.0023837985 0.004633215 - 880400 0.0071932878 0.0023345259 0.0058187747 - 880500 0.0052674529 0.0021674933 0.0047189158 - 880600 0.005248383 0.0018679768 0.0044101623 - 880700 0.0048606276 0.0020791383 0.0044335048 - 880800 0.0048506162 0.0024348835 0.0047844008 - 880900 0.0050412458 0.002781054 0.0052229074 - 881000 0.0042634156 0.0029056002 0.0049706921 - 881100 0.0052326974 0.0025866147 0.0051212026 - 881200 0.0043613578 0.0027186653 0.004831198 - 881300 0.004146849 0.0026637517 0.0046723816 - 881400 0.0042814352 0.0026028388 0.004676659 - 881500 0.003785976 0.00278726 0.0046210921 - 881600 0.0052532072 0.0028894347 0.0054339569 - 881700 0.005764702 0.0030157881 0.0058080656 - 881800 0.0056337431 0.0028247563 0.0055536006 - 881900 0.0043008144 0.0024057746 0.0044889815 - 882000 0.0047230168 0.0027151318 0.005002843 - 882100 0.0046751936 0.0027084039 0.0049729508 - 882200 0.0041987458 0.0025262908 0.0045600583 - 882300 0.0060678202 0.0023405991 0.0052796995 - 882400 0.0042507609 0.0024753505 0.0045343129 - 882500 0.0042872149 0.0028020391 0.0048786589 - 882600 0.0045338505 0.0021538453 0.0043499291 - 882700 0.004983702 0.0016432505 0.0040572312 - 882800 0.0050595637 0.0015767053 0.0040274315 - 882900 0.0044370081 0.0019226743 0.0040718501 - 883000 0.005687331 0.0022366066 0.0049914075 - 883100 0.0053818283 0.0030032195 0.0056100426 - 883200 0.0050895469 0.0036501023 0.0061153515 - 883300 0.0038622119 0.0036312824 0.0055020413 - 883400 0.0074901418 0.0028521747 0.0064802121 - 883500 0.0056732364 0.0027929712 0.0055409451 - 883600 0.0039074301 0.0034270502 0.0053197116 - 883700 0.0046025349 0.0030687325 0.0052980853 - 883800 0.0034021955 0.0028092021 0.0044571405 - 883900 0.0064375422 0.0021370687 0.0052552532 - 884000 0.0067525074 0.0026539708 0.0059247165 - 884100 0.0036573499 0.0034490249 0.0052205538 - 884200 0.0051928922 0.00303347 0.0055487772 - 884300 0.0065179501 0.002426461 0.005583593 - 884400 0.0062911228 0.0022301253 0.005277388 - 884500 0.0034050143 0.0025816056 0.0042309094 - 884600 0.0064674698 0.0024211082 0.0055537889 - 884700 0.0046329158 0.0025708732 0.0048149418 - 884800 0.0072985087 0.0022377646 0.0057729797 - 884900 0.0038575832 0.0020324469 0.0039009637 - 885000 0.0050410193 0.0022163007 0.0046580444 - 885100 0.0043707072 0.0022736629 0.0043907242 - 885200 0.004138619 0.0021482775 0.0041529211 - 885300 0.0039862609 0.002079799 0.0040106441 - 885400 0.0059560956 0.0020044921 0.0048894759 - 885500 0.005322811 0.0020141479 0.0045923845 - 885600 0.0058956604 0.0020864892 0.0049421997 - 885700 0.0049946359 0.002453454 0.0048727308 - 885800 0.0056644697 0.002332643 0.0050763705 - 885900 0.0050716607 0.002964918 0.0054215036 - 886000 0.0054045129 0.0025100331 0.0051278441 - 886100 0.0059882925 0.0020659526 0.0049665318 - 886200 0.006096828 0.0020023039 0.004955455 - 886300 0.0053336988 0.002271011 0.0048545214 - 886400 0.0052045542 0.0024073449 0.0049283008 - 886500 0.0048959906 0.0029383142 0.0053098096 - 886600 0.004638033 0.0029994036 0.0052459508 - 886700 0.0045122938 0.002907806 0.0050934483 - 886800 0.0051713532 0.0024628951 0.0049677693 - 886900 0.0042443536 0.001928563 0.0039844217 - 887000 0.0028255773 0.0019292419 0.0032978809 - 887100 0.0068117491 0.0019577002 0.0052571411 - 887200 0.0045456934 0.0024212392 0.0046230595 - 887300 0.0058900422 0.0021755969 0.0050285861 - 887400 0.0062706005 0.0023322932 0.0053696153 - 887500 0.005548478 0.0023313272 0.0050188713 - 887600 0.0054736861 0.0024643622 0.005115679 - 887700 0.0039463103 0.0024272924 0.0043387864 - 887800 0.0039924175 0.0021788804 0.0041127076 - 887900 0.0055343364 0.0016450099 0.0043257041 - 888000 0.0047919084 0.0016353844 0.003956465 - 888100 0.0049460331 0.0019212786 0.0043170133 - 888200 0.0059661917 0.0021576517 0.0050475258 - 888300 0.0049179065 0.0024993666 0.0048814775 - 888400 0.0036315647 0.0026611834 0.0044202225 - 888500 0.0058186933 0.0027077724 0.0055262019 - 888600 0.0058492566 0.0029980904 0.005831324 - 888700 0.0064297926 0.0029913321 0.0061057628 - 888800 0.0070386539 0.0024357744 0.0058451223 - 888900 0.0057771403 0.0021590932 0.0049573955 - 889000 0.0044407088 0.0024799225 0.0046308908 - 889100 0.0054594916 0.0023096099 0.0049540511 - 889200 0.0049090422 0.0021031621 0.0044809795 - 889300 0.0065360724 0.0021871981 0.0053531081 - 889400 0.005691903 0.0028192648 0.0055762803 - 889500 0.0051702174 0.0030208834 0.0055252074 - 889600 0.0047698676 0.0024453573 0.0047557619 - 889700 0.003996052 0.0021937929 0.0041293805 - 889800 0.0054418871 0.0019022418 0.0045381559 - 889900 0.0043950819 0.0020598343 0.0041887021 - 890000 0.0044762402 0.002387122 0.0045553008 - 890100 0.0042872516 0.002504315 0.0045809525 - 890200 0.0055197558 0.0023429889 0.0050166207 - 890300 0.0056102307 0.0023759244 0.0050933799 - 890400 0.0050478269 0.0020259344 0.0044709755 - 890500 0.0052168402 0.0019840923 0.0045109993 - 890600 0.0056599383 0.0019663242 0.0047078568 - 890700 0.0050345104 0.0024545533 0.0048931442 - 890800 0.0070266932 0.0026905877 0.0060941422 - 890900 0.0061902914 0.002874101 0.0058725234 - 891000 0.005704681 0.0026272594 0.0053904642 - 891100 0.0043684334 0.0025106053 0.0046265652 - 891200 0.0060222599 0.0024555351 0.0053725672 - 891300 0.0041504194 0.0027426637 0.004753023 - 891400 0.0067955548 0.002646601 0.0059381979 - 891500 0.0054975194 0.0025001104 0.0051629714 - 891600 0.005069437 0.0024447005 0.0049002091 - 891700 0.0038224773 0.0022549932 0.0041065057 - 891800 0.003605403 0.0023547885 0.0041011556 - 891900 0.0045216269 0.0021268917 0.0043170547 - 892000 0.0053800219 0.0018694963 0.0044754444 - 892100 0.0041062631 0.0020859348 0.0040749059 - 892200 0.0032373267 0.0021789853 0.0037470654 - 892300 0.0042217013 0.001770897 0.0038157836 - 892400 0.0052008904 0.0016918711 0.0042110524 - 892500 0.0036185822 0.0017684996 0.0035212504 - 892600 0.0045543661 0.0017652825 0.0039713036 - 892700 0.0047761223 0.0018555434 0.0041689776 - 892800 0.0064822186 0.0019634839 0.0051033085 - 892900 0.0051606404 0.0021953698 0.004695055 - 893000 0.005993053 0.0024585912 0.0053614762 - 893100 0.0054240582 0.0025574685 0.0051847467 - 893200 0.0030233616 0.0025515256 0.0040159664 - 893300 0.0042492579 0.002072348 0.0041305823 - 893400 0.0058409863 0.001823827 0.0046530548 - 893500 0.0051256547 0.0018506098 0.0043333488 - 893600 0.0036487024 0.002215258 0.0039825982 - 893700 0.0045363689 0.0024568576 0.0046541613 - 893800 0.0056094856 0.0020533916 0.0047704861 - 893900 0.0034179908 0.0022169955 0.0038725848 - 894000 0.0058012414 0.0019435341 0.0047535104 - 894100 0.0044939125 0.0019489307 0.0041256696 - 894200 0.0046610004 0.0017225125 0.0039801845 - 894300 0.0046431468 0.0015357668 0.003784791 - 894400 0.0048812667 0.0016672496 0.0040316132 - 894500 0.0056409101 0.0017675592 0.004499875 - 894600 0.0050777632 0.0022585899 0.0047181315 - 894700 0.0042065658 0.0024203815 0.0044579369 - 894800 0.0062284713 0.0019149874 0.0049319032 - 894900 0.0045448629 0.0021619562 0.0043633741 - 895000 0.005606208 0.0019612157 0.0046767228 - 895100 0.0065788197 0.001983889 0.0051705049 - 895200 0.0067371629 0.0018369417 0.005100255 - 895300 0.0046520004 0.0020163795 0.0042696922 - 895400 0.0050037902 0.0018940856 0.0043177965 - 895500 0.0048304878 0.002493375 0.0048331426 - 895600 0.005643987 0.0027981961 0.0055320023 - 895700 0.0049259569 0.0024999227 0.0048859331 - 895800 0.0040459693 0.0020146088 0.0039743751 - 895900 0.0040014398 0.0018255828 0.0037637802 - 896000 0.0045106381 0.0020483397 0.00423318 - 896100 0.0046739256 0.0022489978 0.0045129306 - 896200 0.005499405 0.0019130071 0.0045767814 - 896300 0.006365639 0.0017611681 0.0048445245 - 896400 0.0044027731 0.0024713067 0.0046038999 - 896500 0.0044174393 0.0026651805 0.0048048777 - 896600 0.0052201871 0.002545059 0.0050735872 - 896700 0.0046186165 0.0025037594 0.0047409017 - 896800 0.005272724 0.0022104342 0.0047644098 - 896900 0.0033805803 0.00258318 0.0042206486 - 897000 0.0057561129 0.0029572318 0.005745349 - 897100 0.0055640408 0.0027971872 0.0054922694 - 897200 0.0055860325 0.0020999322 0.0048056667 - 897300 0.006012205 0.0019762244 0.0048883862 - 897400 0.0057359195 0.0020488708 0.0048272068 - 897500 0.0074420565 0.0020755737 0.0056803198 - 897600 0.0052695622 0.0022607462 0.0048131904 - 897700 0.0065516547 0.0020369783 0.005210436 - 897800 0.0046123884 0.0020223656 0.0042564913 - 897900 0.0055838272 0.0021178249 0.0048224912 - 898000 0.0064646132 0.00221803 0.005349327 - 898100 0.0050159452 0.0026882594 0.0051178579 - 898200 0.0065906009 0.0022600013 0.0054523236 - 898300 0.004929631 0.0024263577 0.0048141477 - 898400 0.0052301095 0.0028008482 0.0053341825 - 898500 0.0044976538 0.0032755229 0.005454074 - 898600 0.0058539133 0.0028076731 0.0056431624 - 898700 0.0044959341 0.0024642021 0.0046419202 - 898800 0.0049091907 0.0021018413 0.0044797306 - 898900 0.0055770912 0.0023902317 0.0050916352 - 899000 0.0041398471 0.0023403177 0.0043455561 - 899100 0.0048142021 0.0021322023 0.0044640814 - 899200 0.0063231358 0.0020418595 0.0051046285 - 899300 0.0055685133 0.0022262928 0.0049235414 - 899400 0.0061629855 0.0020302209 0.005015417 - 899500 0.0062020526 0.0024865451 0.0054906644 - 899600 0.0051226892 0.0027278271 0.0052091297 - 899700 0.0042703558 0.0022399043 0.0043083579 - 899800 0.0059025635 0.001767706 0.0046267602 - 899900 0.0043578793 0.0020483386 0.0041591864 - 900000 0.0042593814 0.0021364835 0.0041996214 - 900100 0.0054281984 0.0017004785 0.004329762 - 900200 0.0042193539 0.0017787872 0.0038225367 - 900300 0.004738457 0.0020132917 0.0043084818 - 900400 0.0058560486 0.0022871326 0.0051236561 - 900500 0.0068740444 0.0019033736 0.0052329889 - 900600 0.006127382 0.0018686183 0.0048365689 - 900700 0.0048922163 0.0024524544 0.0048221217 - 900800 0.0060117479 0.0021581181 0.0050700585 - 900900 0.0045395544 0.0020258677 0.0042247143 - 901000 0.004295454 0.0024485912 0.0045292017 - 901100 0.0065956402 0.0022540921 0.0054488553 - 901200 0.0048978414 0.0025596015 0.0049319934 - 901300 0.0040791314 0.0022668264 0.0042426557 - 901400 0.0049997796 0.0021101881 0.0045319563 - 901500 0.0040500611 0.0024226095 0.0043843579 - 901600 0.007115019 0.0024922533 0.0059385906 - 901700 0.0049235539 0.0026210768 0.0050059232 - 901800 0.0048686323 0.0025609599 0.0049192037 - 901900 0.0043760732 0.0025170182 0.0046366787 - 902000 0.0065086153 0.0020525186 0.0052051291 - 902100 0.0046337373 0.002230444 0.0044749105 - 902200 0.0050318966 0.0024600463 0.0048973712 - 902300 0.0050944373 0.0020308522 0.0044984702 - 902400 0.0049888847 0.0016579245 0.0040744156 - 902500 0.0054903286 0.0016660084 0.0043253863 - 902600 0.0043177795 0.0018904717 0.0039818962 - 902700 0.0062790814 0.0018594397 0.0049008697 - 902800 0.003207295 0.0022846115 0.003838145 - 902900 0.0042602569 0.0021324935 0.0041960554 - 903000 0.0049859075 0.001727202 0.0041422509 - 903100 0.0054440976 0.001476138 0.0041131228 - 903200 0.0055207865 0.0018628086 0.0045369396 - 903300 0.0045460418 0.0019234322 0.0041254211 - 903400 0.0057253382 0.0016142898 0.0043875005 - 903500 0.004517051 0.0017783756 0.0039663222 - 903600 0.0036438615 0.0024402376 0.004205233 - 903700 0.0052197102 0.0023653566 0.0048936538 - 903800 0.0059419561 0.0016433414 0.0045214764 - 903900 0.0056567843 0.0019317653 0.0046717702 - 904000 0.0052937106 0.0021048981 0.0046690391 - 904100 0.0048080967 0.0018316583 0.0041605802 - 904200 0.0060970424 0.0018468035 0.0048000585 - 904300 0.0041421769 0.0021458098 0.0041521768 - 904400 0.007146738 0.0016215836 0.0050832848 - 904500 0.007787798 0.0014163473 0.0051885619 - 904600 0.005668724 0.0023374203 0.0050832085 - 904700 0.0053693372 0.0024650056 0.0050657783 - 904800 0.005154094 0.001878347 0.0043748613 - 904900 0.0057698256 0.0017504915 0.0045452508 - 905000 0.0041696751 0.0018211408 0.0038408271 - 905100 0.0043531354 0.0019840178 0.0040925678 - 905200 0.0058451703 0.0019799254 0.0048111798 - 905300 0.0054650983 0.0021764289 0.0048235859 - 905400 0.0057499869 0.0026637349 0.0054488847 - 905500 0.0056918362 0.003046413 0.0058033962 - 905600 0.0044745722 0.0038276114 0.0059949823 - 905700 0.0047424721 0.0038826027 0.0061797377 - 905800 0.005093406 0.003193247 0.0056603655 - 905900 0.0060736532 0.0027080366 0.0056499624 - 906000 0.0035037543 0.0028134255 0.0045105565 - 906100 0.0050714809 0.0027230573 0.0051795559 - 906200 0.0056115002 0.0023651339 0.0050832043 - 906300 0.0045996265 0.001853458 0.0040814021 - 906400 0.0035727116 0.0022892824 0.0040198146 - 906500 0.0034137939 0.0021799407 0.0038334971 - 906600 0.0037305271 0.0023158212 0.0041227953 - 906700 0.0045167623 0.0022119196 0.0043997263 - 906800 0.0040065008 0.0025050385 0.0044456873 - 906900 0.0046923231 0.0025804452 0.0048532892 - 907000 0.0043457245 0.002189401 0.0042943613 - 907100 0.0061746189 0.0016894069 0.0046802379 - 907200 0.0050401136 0.0018341432 0.0042754482 - 907300 0.005057163 0.0019376799 0.0043872433 - 907400 0.005042958 0.0016542677 0.0040969505 - 907500 0.0048932089 0.0019045592 0.0042747073 - 907600 0.0047952827 0.001759932 0.004082647 - 907700 0.0050272746 0.0014515635 0.0038866496 - 907800 0.0046504439 0.0018944389 0.0041469977 - 907900 0.0044410563 0.0018247923 0.0039759289 - 908000 0.0046761434 0.0016539908 0.0039189977 - 908100 0.0034004304 0.0019854184 0.0036325019 - 908200 0.0068044767 0.0018748429 0.0051707613 - 908300 0.0040347687 0.0019124011 0.0038667422 - 908400 0.0046679579 0.0018401347 0.0041011768 - 908500 0.0054585099 0.0019853505 0.0046293162 - 908600 0.004330041 0.0021322935 0.0042296571 - 908700 0.0044300126 0.0022972809 0.0044430683 - 908800 0.004697979 0.002173199 0.0044487826 - 908900 0.0061717845 0.0023025761 0.0052920342 - 909000 0.0041861233 0.0026203846 0.0046480381 - 909100 0.0045995902 0.0027069095 0.004934836 - 909200 0.0052120131 0.0024671095 0.0049916783 - 909300 0.0051970506 0.002422193 0.0049395144 - 909400 0.0048531837 0.0024188656 0.0047696265 - 909500 0.0039914626 0.0019779275 0.0039112922 - 909600 0.0056878237 0.0020939493 0.0048489889 - 909700 0.0056175673 0.0026174903 0.0053384995 - 909800 0.00697851 0.0020714194 0.0054516352 - 909900 0.0060132183 0.0021055463 0.0050181989 - 910000 0.0051857925 0.0022876334 0.0047995017 - 910100 0.0041871586 0.0026873841 0.0047155391 - 910200 0.0038338552 0.0027169581 0.0045739817 - 910300 0.0061645318 0.0023320838 0.0053180289 - 910400 0.0063824166 0.0021287008 0.0052201838 - 910500 0.0057394552 0.0022033969 0.0049834455 - 910600 0.0059210169 0.0022818269 0.0051498195 - 910700 0.003469782 0.0022701182 0.0039507938 - 910800 0.0044905947 0.0021681536 0.0043432855 - 910900 0.0058791896 0.0019750787 0.0048228111 - 911000 0.0053555664 0.0022856094 0.0048797118 - 911100 0.005213983 0.0023249692 0.0048504922 - 911200 0.0045698415 0.0022585285 0.0044720454 - 911300 0.0061612242 0.0021085581 0.005092901 - 911400 0.0058758465 0.0022432827 0.0050893959 - 911500 0.0044027955 0.0027507593 0.0048833633 - 911600 0.0052156486 0.002696259 0.0052225888 - 911700 0.0063856789 0.0027295991 0.0058226624 - 911800 0.0056817151 0.0028727171 0.0056247978 - 911900 0.0063451275 0.002500619 0.0055740401 - 912000 0.005737267 0.0027046381 0.0054836269 - 912100 0.0060002515 0.0030092083 0.0059155801 - 912200 0.0059424739 0.0024705787 0.0053489645 - 912300 0.0047851733 0.0023035004 0.0046213187 - 912400 0.0047256407 0.0023664881 0.0046554703 - 912500 0.0043052672 0.0021955463 0.0042809101 - 912600 0.003144249 0.002479325 0.0040023206 - 912700 0.0046216139 0.0022396193 0.0044782135 - 912800 0.0042552103 0.0018742801 0.0039353976 - 912900 0.0042687944 0.0021970494 0.0042647467 - 913000 0.004027396 0.0023966575 0.0043474275 - 913100 0.0034939552 0.0025796824 0.0042720669 - 913200 0.0067819467 0.0027322256 0.0060172311 - 913300 0.0038331843 0.0030352932 0.0048919919 - 913400 0.0050591405 0.0029329178 0.005383439 - 913500 0.0051101589 0.0026816536 0.0051568868 - 913600 0.0046362084 0.0026826872 0.0049283506 - 913700 0.0039210399 0.002137312 0.0040365657 - 913800 0.0051157981 0.0023175874 0.004795552 - 913900 0.0048268969 0.0021036862 0.0044417144 - 914000 0.0044905287 0.0020587357 0.0042338355 - 914100 0.0045170325 0.0021239335 0.0043118711 - 914200 0.0044158162 0.0023683157 0.0045072266 - 914300 0.0055705512 0.0022064565 0.0049046923 - 914400 0.0060907842 0.0016856105 0.0046358341 - 914500 0.0048729554 0.0021228839 0.0044832217 - 914600 0.0065464239 0.00241981 0.0055907341 - 914700 0.0046573176 0.0025388147 0.0047947029 - 914800 0.0054240097 0.0027172833 0.005344538 - 914900 0.0057883048 0.0029735479 0.005777258 - 915000 0.0045808023 0.0027395684 0.0049583945 - 915100 0.0038683618 0.0023550161 0.0042287539 - 915200 0.004703271 0.0018115949 0.0040897418 - 915300 0.0051867167 0.0020276543 0.0045399702 - 915400 0.0032235799 0.0024626438 0.0040240653 - 915500 0.0040876354 0.0024397717 0.0044197201 - 915600 0.0074145058 0.002155763 0.0057471642 - 915700 0.0043724886 0.0022494778 0.0043674019 - 915800 0.0053016308 0.0025366596 0.005104637 - 915900 0.0056865713 0.0026991698 0.0054536028 - 916000 0.0054463197 0.0029504799 0.005588541 - 916100 0.0050555737 0.0031390158 0.0055878093 - 916200 0.0071986191 0.0027097586 0.0061965898 - 916300 0.0060022288 0.0026426113 0.0055499409 - 916400 0.0053392027 0.0030975023 0.0056836786 - 916500 0.005177007 0.0036593801 0.0061669928 - 916600 0.0067229465 0.0039288046 0.0071852318 - 916700 0.0053893356 0.0037001688 0.0063106283 - 916800 0.0059365521 0.0033425896 0.0062181071 - 916900 0.0074573754 0.0032091367 0.0068213029 - 917000 0.0050574434 0.0027750643 0.0052247634 - 917100 0.0054116714 0.0022393159 0.0048605943 - 917200 0.0061593956 0.0024190565 0.0054025138 - 917300 0.0067936658 0.0026052085 0.0058958904 - 917400 0.0057355551 0.0024771158 0.0052552753 - 917500 0.0050371089 0.0020639598 0.0045038094 - 917600 0.0050725547 0.001887216 0.0043442346 - 917700 0.0042605592 0.0024512378 0.0045149461 - 917800 0.0064137993 0.0027059867 0.0058126708 - 917900 0.004250677 0.0029623601 0.0050212818 - 918000 0.0039084173 0.0030945255 0.0049876652 - 918100 0.0058246688 0.0026456898 0.0054670137 - 918200 0.0056728585 0.0022751624 0.0050229533 - 918300 0.0054981502 0.0024477511 0.0051109176 - 918400 0.004901977 0.0026690499 0.005043445 - 918500 0.0061602568 0.0020866042 0.0050704786 - 918600 0.0063151199 0.0018891448 0.004948031 - 918700 0.0051182627 0.0019971801 0.0044763386 - 918800 0.0063975702 0.0023723127 0.0054711358 - 918900 0.0041444452 0.0026970552 0.0047045208 - 919000 0.0058041953 0.0024597086 0.0052711157 - 919100 0.0033992011 0.0019129039 0.003559392 - 919200 0.0043897882 0.0022468364 0.00437314 - 919300 0.0057987982 0.0026871317 0.0054959246 - 919400 0.0046330509 0.00319299 0.0054371241 - 919500 0.0054502423 0.0030455807 0.0056855418 - 919600 0.0049949754 0.0025858498 0.005005291 - 919700 0.0052284024 0.0022286936 0.004761201 - 919800 0.0045669225 0.0019831564 0.0041952594 - 919900 0.005767867 0.0021537537 0.0049475643 - 920000 0.006044791 0.0024163542 0.0053442999 - 920100 0.0040664588 0.002423536 0.0043932269 - 920200 0.0052343123 0.0024604368 0.0049958068 - 920300 0.0054357889 0.0026202217 0.0052531819 - 920400 0.0067858593 0.0025088107 0.0057957113 - 920500 0.0052729414 0.002991958 0.005546039 - 920600 0.0043010869 0.0028094671 0.0048928061 - 920700 0.0057952162 0.0024490479 0.0052561057 - 920800 0.0060168758 0.0023668369 0.0052812611 - 920900 0.0058670716 0.0019157896 0.0047576524 - 921000 0.003767353 0.0015371493 0.0033619609 - 921100 0.0031087698 0.0020596462 0.0035654565 - 921200 0.0042799954 0.0023118854 0.0043850082 - 921300 0.0039054558 0.0021787667 0.0040704718 - 921400 0.0047381845 0.0021212198 0.0044162779 - 921500 0.0053355864 0.0020007995 0.0045852241 - 921600 0.0033417958 0.0019832992 0.0036019815 - 921700 0.0043265103 0.0020510336 0.0041466871 - 921800 0.0051211654 0.0019196867 0.0044002512 - 921900 0.0055913981 0.0018312269 0.0045395603 - 922000 0.0043358958 0.002234489 0.0043346885 - 922100 0.0046468326 0.0024925429 0.0047433524 - 922200 0.0042407173 0.0026368236 0.004690921 - 922300 0.0040624497 0.0026026131 0.0045703621 - 922400 0.0053370338 0.0023605738 0.0049456995 - 922500 0.0042330465 0.002272125 0.0043225069 - 922600 0.005584522 0.002173176 0.0048781788 - 922700 0.006278129 0.0021570855 0.0051980542 - 922800 0.006107336 0.0021422133 0.0051004542 - 922900 0.0042554764 0.0022539021 0.0043151485 - 923000 0.0035923982 0.0027196989 0.0044597668 - 923100 0.0052124833 0.0029739745 0.0054987711 - 923200 0.004134719 0.0036283332 0.0056310877 - 923300 0.0036562 0.0037877734 0.0055587452 - 923400 0.0054100314 0.0027443176 0.0053648016 - 923500 0.005234214 0.0026622469 0.0051975693 - 923600 0.0038672531 0.0025845211 0.0044577219 - 923700 0.0047025023 0.0023204832 0.0045982577 - 923800 0.0049111746 0.0026406177 0.0050194679 - 923900 0.0040796996 0.0025583441 0.0045344486 - 924000 0.0047663556 0.0022207037 0.0045294072 - 924100 0.0044868492 0.002828208 0.0050015256 - 924200 0.004954876 0.0030483145 0.0054483326 - 924300 0.0082057481 0.0025911319 0.0065657911 - 924400 0.0051054897 0.002820739 0.0052937105 - 924500 0.0038842349 0.002818311 0.0046997373 - 924600 0.0042711068 0.0026089651 0.0046777824 - 924700 0.0058377554 0.0026266715 0.0054543342 - 924800 0.0060193981 0.0030570738 0.0059727198 - 924900 0.0052110871 0.0032506449 0.0057747652 - 925000 0.0053566852 0.0023863316 0.0049809759 - 925100 0.0048543748 0.0020251345 0.0043764723 - 925200 0.0042410717 0.0024322038 0.0044864729 - 925300 0.0044960593 0.002768516 0.0049462947 - 925400 0.0060057645 0.0025291227 0.0054381649 - 925500 0.0049844822 0.0019662695 0.0043806281 - 925600 0.0050490504 0.0018776896 0.0043233233 - 925700 0.0062993092 0.0022325223 0.0052837501 - 925800 0.0049836832 0.0022213381 0.0046353096 - 925900 0.0046641415 0.0024474086 0.0047066022 - 926000 0.0032548816 0.0029021561 0.0044787394 - 926100 0.0048230251 0.0029527108 0.0052888635 - 926200 0.0056117445 0.0025699743 0.0052881631 - 926300 0.0051753219 0.0023572425 0.004864039 - 926400 0.0051483961 0.0025076044 0.0050013588 - 926500 0.0061967042 0.0018575716 0.0048591002 - 926600 0.0071504607 0.0018387821 0.0053022865 - 926700 0.0048674033 0.0024301001 0.0047877486 - 926800 0.0057691943 0.003027284 0.0058217375 - 926900 0.0053634028 0.0026781552 0.0052760534 - 927000 0.0065061219 0.0025474992 0.005698902 - 927100 0.0051804666 0.0026992705 0.005208559 - 927200 0.0049918042 0.0024906806 0.0049085857 - 927300 0.0051527194 0.0024263638 0.0049222123 - 927400 0.0053902259 0.002445864 0.0050567546 - 927500 0.0049548899 0.002520241 0.0049202658 - 927600 0.006396757 0.0022163214 0.0053147506 - 927700 0.00596603 0.0020855771 0.0049753729 - 927800 0.0049203407 0.0022184662 0.0046017562 - 927900 0.0042733869 0.0022094773 0.0042793991 - 928000 0.0051944121 0.0022818802 0.0047979235 - 928100 0.0037828276 0.0026725548 0.0045048619 - 928200 0.00576688 0.0023255125 0.005118845 - 928300 0.0048896022 0.0022407986 0.0046091997 - 928400 0.0067378852 0.0021471449 0.0054108081 - 928500 0.0058434172 0.0025542447 0.0053846499 - 928600 0.0044746314 0.002593051 0.0047604505 - 928700 0.0046253994 0.0028466128 0.0050870406 - 928800 0.005743956 0.0026235145 0.0054057432 - 928900 0.0058176895 0.0023592641 0.0051772075 - 929000 0.0062319268 0.0022942373 0.0053128268 - 929100 0.0055421003 0.0029425765 0.0056270313 - 929200 0.0051330945 0.0031922185 0.0056785612 - 929300 0.0039561701 0.002923185 0.0048394548 - 929400 0.0042949374 0.0024044956 0.0044848559 - 929500 0.0047085653 0.0023569925 0.0046377038 - 929600 0.004934285 0.0020820992 0.0044721435 - 929700 0.0047294666 0.0015832845 0.0038741199 - 929800 0.0057836402 0.0016239214 0.0044253721 - 929900 0.0055655917 0.0022330285 0.004928862 - 930000 0.0049863661 0.0027601712 0.0051754422 - 930100 0.0051293089 0.0030517166 0.0055362256 - 930200 0.0057293197 0.0030946544 0.0058697936 - 930300 0.0051039828 0.0031148554 0.0055870971 - 930400 0.0038427628 0.0033508434 0.0052121816 - 930500 0.0051922515 0.0029043348 0.0054193316 - 930600 0.0053145138 0.0022133247 0.0047875423 - 930700 0.0034529574 0.0023477352 0.0040202614 - 930800 0.0046203866 0.0023255838 0.0045635836 - 930900 0.0052839928 0.0026095954 0.0051690294 - 931000 0.0065618837 0.0026381287 0.0058165411 - 931100 0.0043599334 0.0028267436 0.0049385864 - 931200 0.0035621095 0.0029160512 0.004641448 - 931300 0.0053401607 0.0026662148 0.0052528551 - 931400 0.0061804861 0.0028247452 0.0058184182 - 931500 0.0045931684 0.0027248582 0.0049496741 - 931600 0.0060140835 0.0026924976 0.0056055693 - 931700 0.004904271 0.0026734892 0.0050489954 - 931800 0.0044298363 0.0028193181 0.0049650201 - 931900 0.0048944374 0.0027562625 0.0051270056 - 932000 0.0071154618 0.0024511833 0.0058977351 - 932100 0.003860532 0.0031107282 0.0049806734 - 932200 0.0068208984 0.0028945422 0.0061984149 - 932300 0.0046845672 0.0026342887 0.0049033759 - 932400 0.0053276433 0.0027672522 0.0053478295 - 932500 0.0064986706 0.002241014 0.0053888076 - 932600 0.0051487462 0.0018146476 0.0043085716 - 932700 0.0042916111 0.0016016391 0.0036803882 - 932800 0.0041685914 0.0021902094 0.0042093709 - 932900 0.0052071217 0.0024670542 0.0049892538 - 933000 0.0045115141 0.0023520526 0.0045373173 - 933100 0.0052643306 0.0020472923 0.0045972024 - 933200 0.0062967363 0.0021521319 0.0052021135 - 933300 0.0044429328 0.0028898726 0.0050419181 - 933400 0.0048935659 0.0028798925 0.0052502135 - 933500 0.0052139498 0.0026799801 0.0052054871 - 933600 0.0069463374 0.0023720407 0.0057366729 - 933700 0.0066049392 0.0021761456 0.005375413 - 933800 0.0053360362 0.0029085199 0.0054931625 - 933900 0.0047683956 0.0035885992 0.0058982908 - 934000 0.0052247587 0.002537406 0.0050681485 - 934100 0.0054624088 0.0021797338 0.004825588 - 934200 0.0045599789 0.0021010767 0.0043098165 - 934300 0.0058858189 0.002057112 0.0049080556 - 934400 0.0035967249 0.0018614409 0.0036036045 - 934500 0.0049413456 0.0017813772 0.0041748415 - 934600 0.0047759456 0.0016350869 0.0039484355 - 934700 0.0037973415 0.0021312356 0.0039705729 - 934800 0.0050670225 0.0022912836 0.0047456226 - 934900 0.0048448934 0.0021616178 0.0045083631 - 935000 0.004402585 0.0021219578 0.0042544599 - 935100 0.0058958687 0.0020132321 0.0048690435 - 935200 0.0037062857 0.001953819 0.0037490512 - 935300 0.0058526465 0.0018491855 0.0046840611 - 935400 0.0042845237 0.0021022821 0.0041775983 - 935500 0.0047717854 0.0021027694 0.004414103 - 935600 0.0040405173 0.0022639309 0.0042210565 - 935700 0.0053764713 0.0024574989 0.0050617272 - 935800 0.0049258183 0.0022476217 0.004633565 - 935900 0.0055006753 0.0017809537 0.0044453433 - 936000 0.0065473003 0.0021087918 0.0052801404 - 936100 0.0044343634 0.0028015241 0.0049494188 - 936200 0.0061595775 0.0027402436 0.005723789 - 936300 0.0060430921 0.0025683632 0.005495486 - 936400 0.0051984418 0.0027383144 0.0052563096 - 936500 0.0039275214 0.0024941812 0.0043965744 - 936600 0.0062931767 0.0019471787 0.0049954362 - 936700 0.0042759639 0.0022225781 0.0042937481 - 936800 0.0040872639 0.0023745899 0.0043543584 - 936900 0.0048975196 0.0023378734 0.0047101095 - 937000 0.0032179144 0.0026585836 0.0042172609 - 937100 0.0052467175 0.0024809538 0.0050223326 - 937200 0.0063316569 0.0022425738 0.0053094701 - 937300 0.0043823871 0.0023939209 0.0045166397 - 937400 0.0037825542 0.0019736449 0.0038058196 - 937500 0.006945398 0.001727082 0.0050912592 - 937600 0.0044025021 0.0019377315 0.0040701934 - 937700 0.0045997414 0.0021051691 0.0043331689 - 937800 0.0051405122 0.0017352909 0.0042252265 - 937900 0.0052900352 0.0016068988 0.0041692596 - 938000 0.0043683697 0.0022520078 0.0043679368 - 938100 0.0053322185 0.0023079194 0.0048907128 - 938200 0.0044762555 0.0020837585 0.0042519448 - 938300 0.0042120204 0.0021331489 0.0041733463 - 938400 0.0045968366 0.0021254906 0.0043520834 - 938500 0.0053763696 0.0024403812 0.0050445602 - 938600 0.0046906164 0.002448163 0.0047201803 - 938700 0.0070948586 0.0023749902 0.0058115623 - 938800 0.0060569508 0.0022366681 0.0051705037 - 938900 0.0044139434 0.0021018629 0.0042398668 - 939000 0.0047177505 0.0022456193 0.0045307797 - 939100 0.0060812161 0.0024174248 0.0053630139 - 939200 0.0053180732 0.0030814073 0.005657349 - 939300 0.005757489 0.0035168383 0.006305622 - 939400 0.0044985973 0.0034419901 0.0056209982 - 939500 0.0067988373 0.0024250929 0.0057182798 - 939600 0.005756216 0.0018577468 0.0046459139 - 939700 0.0045083919 0.0021324049 0.0043161572 - 939800 0.0052943144 0.0022828249 0.0048472584 - 939900 0.0058716815 0.0018424029 0.0046864986 - 940000 0.0055416488 0.0018416544 0.0045258906 - 940100 0.0031436003 0.0022041912 0.0037268726 - 940200 0.0055225652 0.0019159445 0.0045909371 - 940300 0.0054997233 0.0022909675 0.004954896 - 940400 0.004628769 0.0022951016 0.0045371615 - 940500 0.005589582 0.0018861739 0.0045936276 - 940600 0.0047684808 0.0022485015 0.0045582344 - 940700 0.0062162041 0.0024726269 0.0054836008 - 940800 0.0042707863 0.0022847921 0.0043534542 - 940900 0.0066448263 0.0026329137 0.0058515015 - 941000 0.0051064829 0.0025892115 0.0050626642 - 941100 0.004041892 0.0028100085 0.0047677999 - 941200 0.003785463 0.0027129149 0.0045464986 - 941300 0.0046511635 0.0025333914 0.0047862987 - 941400 0.0045344153 0.0022348387 0.0044311962 - 941500 0.005084644 0.0021555214 0.0046183958 - 941600 0.0050205532 0.0023537695 0.0047856 - 941700 0.0062520441 0.0022463079 0.0052746417 - 941800 0.0042861818 0.0021466886 0.0042228079 - 941900 0.004392198 0.002190112 0.0043175829 - 942000 0.0034351542 0.0019786369 0.0036425397 - 942100 0.0040987862 0.0018693301 0.0038546796 - 942200 0.005630164 0.0017928489 0.0045199596 - 942300 0.0053026795 0.0016426074 0.0042110928 - 942400 0.0035599233 0.0015657275 0.0032900653 - 942500 0.0045835524 0.0016203927 0.0038405509 - 942600 0.0053250268 0.0023007467 0.0048800566 - 942700 0.0048466492 0.0025985395 0.0049461352 - 942800 0.0046209911 0.0025038338 0.0047421264 - 942900 0.0068072383 0.0025411377 0.0058383938 - 943000 0.005411537 0.0026705977 0.0052918109 - 943100 0.0036802679 0.0027317137 0.0045143434 - 943200 0.0052115453 0.0028054444 0.0053297867 - 943300 0.006023415 0.0027199325 0.0056375241 - 943400 0.0051481728 0.002571866 0.0050655122 - 943500 0.0044697046 0.0022288141 0.0043938273 - 943600 0.005675314 0.0018073149 0.0045562951 - 943700 0.0052683777 0.0016124523 0.0041643227 - 943800 0.0063775556 0.0014874661 0.0045765946 - 943900 0.0079578724 0.0020475722 0.0059021667 - 944000 0.004360418 0.0029470757 0.0050591532 - 944100 0.0049746408 0.0027739785 0.0051835702 - 944200 0.0050460203 0.0024382669 0.004882433 - 944300 0.0041933764 0.0025049891 0.0045361558 - 944400 0.0050356239 0.0024802493 0.0049193796 - 944500 0.0039023641 0.0022275687 0.0041177763 - 944600 0.0048365324 0.0023149804 0.0046576758 - 944700 0.0034079495 0.0021403785 0.0037911041 - 944800 0.0038934696 0.0022816553 0.0041675546 - 944900 0.0049994576 0.0023964179 0.0048180302 - 945000 0.0051028167 0.0024058153 0.0048774922 - 945100 0.0041022427 0.0021579791 0.0041450029 - 945200 0.0048800623 0.0018972421 0.0042610223 - 945300 0.005403965 0.0018377338 0.0044552794 - 945400 0.0028189269 0.0018746929 0.0032401106 - 945500 0.0061938881 0.0018988392 0.0048990037 - 945600 0.0041378738 0.0022335236 0.0042378062 - 945700 0.0045096853 0.0023237851 0.004508164 - 945800 0.0052720965 0.0021733537 0.0047270255 - 945900 0.0033297437 0.0024562721 0.0040691167 - 946000 0.0056340142 0.0029726908 0.0057016665 - 946100 0.0041008987 0.0032302616 0.0052166344 - 946200 0.0051130462 0.0027650909 0.0052417227 - 946300 0.0056753951 0.0025245556 0.005273575 - 946400 0.0072498138 0.0029957017 0.0065073302 - 946500 0.0051987779 0.0038308286 0.0063489866 - 946600 0.0059265893 0.0043868597 0.0072575514 - 946700 0.0062096998 0.0034209343 0.0064287576 - 946800 0.0079950045 0.0025314299 0.0064040102 - 946900 0.0051343178 0.0026700614 0.0051569966 - 947000 0.0049109735 0.0034117973 0.0057905501 - 947100 0.0046992868 0.0030929475 0.0053691646 - 947200 0.0043415693 0.00236724 0.0044701876 - 947300 0.0061322055 0.0017398769 0.004710164 - 947400 0.0049727991 0.0019178436 0.0043265432 - 947500 0.0064763975 0.002839243 0.005976248 - 947600 0.0044282292 0.0025117934 0.0046567169 - 947700 0.0068256802 0.0020960784 0.0054022673 - 947800 0.003521005 0.0019985364 0.0037040232 - 947900 0.0059596959 0.0020234897 0.0049102174 - 948000 0.005005203 0.0022069317 0.0046313269 - 948100 0.0038802047 0.0022964781 0.0041759522 - 948200 0.005091983 0.0021104511 0.0045768804 - 948300 0.0032690026 0.0020940331 0.0036774562 - 948400 0.0054928067 0.0019917874 0.0046523656 - 948500 0.0063228598 0.0017077834 0.0047704186 - 948600 0.005332437 0.0015879005 0.0041707997 - 948700 0.0042068674 0.0020733234 0.0041110248 - 948800 0.005213208 0.0022764196 0.0048015672 - 948900 0.0046888905 0.0022654908 0.0045366722 - 949000 0.0061654031 0.0022942677 0.0052806348 - 949100 0.0045621684 0.0023463816 0.0045561819 - 949200 0.0050308026 0.0026853832 0.0051221783 - 949300 0.0062045131 0.0030100737 0.0060153848 - 949400 0.0062289807 0.0030469915 0.006064154 - 949500 0.0065569173 0.0026823296 0.0058583364 - 949600 0.0056407572 0.0026618394 0.0053940811 - 949700 0.0062082815 0.0021954619 0.0052025983 - 949800 0.0052405865 0.0021203296 0.0046587387 - 949900 0.0033519112 0.0025513791 0.0041749611 - 950000 0.0053131252 0.0019912283 0.0045647733 - 950100 0.0049894741 0.0016561234 0.0040728999 - 950200 0.0053411158 0.0016456956 0.0042327985 - 950300 0.0039732811 0.0019581877 0.0038827457 - 950400 0.0059342095 0.0023727343 0.0052471171 - 950500 0.0057752607 0.0027487682 0.0055461601 - 950600 0.0057572419 0.002894755 0.005683419 - 950700 0.0056000498 0.0027801129 0.005492637 - 950800 0.0042088159 0.0028489361 0.0048875813 - 950900 0.0061734962 0.0028081964 0.0057984836 - 951000 0.0043815689 0.0031820963 0.0053044187 - 951100 0.0051664904 0.0029436207 0.0054461395 - 951200 0.0044327504 0.0024947531 0.0046418665 - 951300 0.005171337 0.0026408234 0.0051456898 - 951400 0.0068744234 0.0029331053 0.0062629041 - 951500 0.0047606888 0.0033934423 0.005699401 - 951600 0.0037071288 0.0033728531 0.0051684937 - 951700 0.0053865368 0.0032247545 0.0058338583 - 951800 0.0049175734 0.0036315834 0.006013533 - 951900 0.0051782682 0.0038334192 0.0063416429 - 952000 0.0040840689 0.0031068683 0.0050850892 - 952100 0.0058587822 0.0027311967 0.0055690444 - 952200 0.0046111946 0.002773444 0.0050069913 - 952300 0.0053522936 0.002912185 0.0055047022 - 952400 0.0065907487 0.003172013 0.0063644069 - 952500 0.0055674737 0.0029210535 0.0056177986 - 952600 0.0069084289 0.0028771526 0.0062234229 - 952700 0.0060708507 0.0028515029 0.0057920713 - 952800 0.0069585295 0.0025188217 0.0058893594 - 952900 0.0048204144 0.002485112 0.0048200002 - 953000 0.0069428352 0.0028080094 0.0061709452 - 953100 0.0047471093 0.0028290936 0.0051284746 - 953200 0.0036051639 0.0028000619 0.0045463132 - 953300 0.0056673368 0.0030097582 0.0057548745 - 953400 0.0060320612 0.0032784386 0.0062002182 - 953500 0.0057180543 0.0034351563 0.0062048389 - 953600 0.0038916943 0.003025445 0.0049104845 - 953700 0.00737188 0.0026030746 0.006173829 - 953800 0.0062597288 0.0028046327 0.0058366888 - 953900 0.0056359009 0.0024194409 0.0051493304 - 954000 0.00643797 0.0023126947 0.0054310864 - 954100 0.0049080539 0.0026652063 0.005042545 - 954200 0.0034596401 0.0024356395 0.0041114027 - 954300 0.0038744587 0.0022654954 0.0041421864 - 954400 0.004950674 0.0026744576 0.0050724404 - 954500 0.0050698128 0.0027979152 0.0052536057 - 954600 0.0058338159 0.0025317718 0.0053575264 - 954700 0.0040856969 0.002203056 0.0041820654 - 954800 0.0055699018 0.0018720323 0.0045699535 - 954900 0.0047980173 0.0018126325 0.0041366721 - 955000 0.0055898982 0.0022302791 0.0049378861 - 955100 0.0053229546 0.0021141285 0.0046924346 - 955200 0.0047164182 0.0022851334 0.0045696484 - 955300 0.0052976166 0.002277011 0.0048430441 - 955400 0.0044672816 0.0025256492 0.0046894887 - 955500 0.0039087567 0.0023362256 0.0042295297 - 955600 0.0040131683 0.002094189 0.0040380674 - 955700 0.0064930612 0.0015757988 0.0047208753 - 955800 0.0050546006 0.0017680817 0.0042164038 - 955900 0.0045747457 0.0019607462 0.0041766387 - 956000 0.0050182033 0.0024105161 0.0048412083 - 956100 0.0040137932 0.002189101 0.0041332822 - 956200 0.0061792428 0.0021681473 0.005161218 - 956300 0.0057191765 0.0024544626 0.0052246887 - 956400 0.0047886321 0.0022090529 0.0045285466 - 956500 0.00560629 0.0020619527 0.0047774994 - 956600 0.0053011552 0.0019516047 0.0045193517 - 956700 0.0059302 0.002239956 0.0051123966 - 956800 0.0048866442 0.0025588454 0.0049258136 - 956900 0.0036529137 0.0029422396 0.0047116196 - 957000 0.0056451389 0.0029132276 0.0056475917 - 957100 0.0070470705 0.0026443147 0.0060577395 - 957200 0.0040377774 0.0022018026 0.004157601 - 957300 0.0044653293 0.002212534 0.0043754279 - 957400 0.0056186963 0.0021741388 0.0048956948 - 957500 0.004049556 0.0019940025 0.0039555062 - 957600 0.0047872015 0.0020116963 0.004330497 - 957700 0.0052721379 0.0020372776 0.0045909693 - 957800 0.0062856865 0.0025436691 0.0055882985 - 957900 0.0043697159 0.0026838986 0.0048004798 - 958000 0.0049416664 0.0026650965 0.0050587161 - 958100 0.0047999366 0.0027154956 0.0050404649 - 958200 0.0050593847 0.0022163736 0.0046670131 - 958300 0.0046629457 0.0019513039 0.0042099183 - 958400 0.0058839581 0.0025983195 0.0054483617 - 958500 0.0038060689 0.0026717825 0.0045153471 - 958600 0.0037977217 0.0020216229 0.0038611443 - 958700 0.0037925678 0.001969528 0.003806553 - 958800 0.0042955345 0.0014518741 0.0035325236 - 958900 0.0043793328 0.0017684281 0.0038896674 - 959000 0.0057369549 0.0022281857 0.0050070232 - 959100 0.0064752034 0.0025851078 0.0057215345 - 959200 0.0064714173 0.0022009826 0.0053355754 - 959300 0.0060301539 0.0023047435 0.0052255993 - 959400 0.0045810197 0.0025677903 0.0047867218 - 959500 0.0059542854 0.0026858088 0.0055699158 - 959600 0.0056682423 0.0022321446 0.0049776995 - 959700 0.0050938783 0.0022735076 0.0047408549 - 959800 0.0049016391 0.0018602921 0.0042345235 - 959900 0.0067222321 0.0018380015 0.0050940827 - 960000 0.003409282 0.0021628656 0.0038142365 - 960100 0.0042491695 0.0021001705 0.004158362 - 960200 0.0046222876 0.0019667416 0.0042056622 - 960300 0.0036195501 0.0024447524 0.004197972 - 960400 0.0039536324 0.0026212194 0.0045362601 - 960500 0.0059259416 0.0024468969 0.0053172749 - 960600 0.0048850081 0.0027166128 0.0050827886 - 960700 0.0040476218 0.0026169123 0.0045774791 - 960800 0.0061431448 0.0028528319 0.0058284177 - 960900 0.0052175395 0.0033753033 0.005902549 - 961000 0.005760718 0.0038911803 0.0066815281 - 961100 0.0051228469 0.0036594519 0.0061408308 - 961200 0.0051653392 0.0034565846 0.0059585457 - 961300 0.0042495426 0.0039830906 0.0060414628 - 961400 0.0044687998 0.0037522314 0.0059168063 - 961500 0.0058159173 0.0033407056 0.0061577905 - 961600 0.0044613401 0.003477246 0.0056382076 - 961700 0.0053861932 0.0030882922 0.0056972296 - 961800 0.0049455504 0.0029627196 0.0053582206 - 961900 0.0054369273 0.002848965 0.0054824766 - 962000 0.0064603154 0.0028437102 0.0059729255 - 962100 0.0063945766 0.0023526109 0.0054499839 - 962200 0.0058369491 0.0021947195 0.0050219917 - 962300 0.0066036713 0.0021596896 0.0053583429 - 962400 0.0053764386 0.001943272 0.0045474844 - 962500 0.0047865341 0.0017216339 0.0040401114 - 962600 0.0038031509 0.0021001021 0.0039422533 - 962700 0.0040399494 0.0023889489 0.0043457994 - 962800 0.0057168874 0.0022548604 0.0050239778 - 962900 0.004672955 0.0020505425 0.0043140051 - 963000 0.0050582114 0.0018664446 0.0043165158 - 963100 0.0071511998 0.0018459503 0.0053098127 - 963200 0.0047589308 0.0019341507 0.0042392578 - 963300 0.0043425273 0.0021516761 0.0042550878 - 963400 0.0049150006 0.002149957 0.0045306604 - 963500 0.0044473681 0.0022949989 0.0044491928 - 963600 0.005628517 0.0023341139 0.0050604269 - 963700 0.0046958708 0.0024041639 0.0046787263 - 963800 0.004767959 0.0023676483 0.0046771284 - 963900 0.0042201912 0.0021342763 0.0041784314 - 964000 0.0053728519 0.0018726357 0.0044751109 - 964100 0.0043961126 0.0024115831 0.0045409502 - 964200 0.0064928159 0.0021475366 0.0052924943 - 964300 0.005506791 0.0023284356 0.0049957875 - 964400 0.0050950167 0.0024139679 0.0048818666 - 964500 0.004102306 0.0024621087 0.0044491631 - 964600 0.00395354 0.0026947947 0.0046097906 - 964700 0.005293674 0.0022967198 0.0048608432 - 964800 0.005031552 0.0022575097 0.0046946677 - 964900 0.0040922668 0.0022363905 0.0042185822 - 965000 0.0044885756 0.0022792882 0.004453442 - 965100 0.0045409485 0.0022216162 0.0044211382 - 965200 0.004201773 0.0021195251 0.0041547589 - 965300 0.0039640352 0.0021926107 0.0041126902 - 965400 0.0044334689 0.0026161672 0.0047636288 - 965500 0.0046109958 0.0032256686 0.0054591197 - 965600 0.0049730528 0.0030283091 0.0054371316 - 965700 0.0058801371 0.002400504 0.0052486954 - 965800 0.0046741331 0.0020507299 0.0043147631 - 965900 0.0041467241 0.0025946329 0.0046032023 - 966000 0.0050482258 0.0024024378 0.0048476721 - 966100 0.0046646201 0.0017780347 0.00403746 - 966200 0.0035482684 0.0018961322 0.0036148247 - 966300 0.0056065278 0.002354511 0.0050701729 - 966400 0.0051263193 0.0025615649 0.0050446258 - 966500 0.0047595387 0.0021873787 0.0044927802 - 966600 0.0052113283 0.0021902013 0.0047144385 - 966700 0.005161612 0.0028715693 0.0053717252 - 966800 0.0051562039 0.0029199303 0.0054174666 - 966900 0.0045355762 0.0025349815 0.0047319012 - 967000 0.0058331776 0.0021280568 0.0049535022 - 967100 0.0060020769 0.0019397131 0.0048469691 - 967200 0.0051808475 0.0023787496 0.0048882226 - 967300 0.0050747134 0.0022780389 0.0047361032 - 967400 0.0051112508 0.0022006553 0.0046764174 - 967500 0.0055156654 0.001924989 0.0045966395 - 967600 0.0055930633 0.0018527671 0.0045619071 - 967700 0.0056062244 0.0019661198 0.0046816347 - 967800 0.0060888986 0.0022285445 0.0051778548 - 967900 0.0054797657 0.0025613281 0.0052155896 - 968000 0.0038443421 0.0022827109 0.0041448141 - 968100 0.0056246951 0.0017000515 0.0044245132 - 968200 0.0046822858 0.0016397629 0.003907745 - 968300 0.0039266085 0.0022635909 0.0041655419 - 968400 0.0042855011 0.0027002421 0.0047760317 - 968500 0.0052867339 0.0028617173 0.005422479 - 968600 0.0048331683 0.0022474225 0.0045884884 - 968700 0.004051918 0.0019738994 0.0039365472 - 968800 0.0057849919 0.0015582885 0.004360394 - 968900 0.0048411833 0.0020793549 0.004424303 - 969000 0.0044723103 0.0025175534 0.0046838287 - 969100 0.0049496066 0.0023548657 0.0047523314 - 969200 0.0035932671 0.0022298021 0.0039702909 - 969300 0.0066821846 0.0018532983 0.0050899815 - 969400 0.0054573758 0.0019228919 0.0045663083 - 969500 0.0048132251 0.0018704082 0.0042018141 - 969600 0.0049205294 0.0019723359 0.0043557173 - 969700 0.0048956781 0.0022518534 0.0046231975 - 969800 0.0057715991 0.0023461999 0.0051418182 - 969900 0.0063703485 0.0023492566 0.0054348942 - 970000 0.0054874448 0.0023271783 0.0049851594 - 970100 0.0064599441 0.0021323502 0.0052613856 - 970200 0.0069126232 0.0020025521 0.005350854 - 970300 0.0055695495 0.0026123443 0.0053100949 - 970400 0.0055752524 0.0022515158 0.0049520286 - 970500 0.0045340588 0.0018256185 0.0040218032 - 970600 0.0046580967 0.0017761751 0.0040324406 - 970700 0.0063583315 0.0018913878 0.0049712046 - 970800 0.0060803259 0.0016933755 0.0046385333 - 970900 0.0040675354 0.0017244813 0.0036946937 - 971000 0.0050124103 0.0021135393 0.0045414256 - 971100 0.0050606206 0.0023659304 0.0048171685 - 971200 0.0063052563 0.0026184269 0.0056725354 - 971300 0.005419171 0.0027364852 0.0053613962 - 971400 0.0054045242 0.0028213625 0.0054391789 - 971500 0.0077329379 0.0024044216 0.0061500634 - 971600 0.0047739165 0.0022373645 0.0045497303 - 971700 0.0055566069 0.0017801453 0.0044716268 - 971800 0.0052343581 0.0018126707 0.004348063 - 971900 0.0054768402 0.0021509283 0.0048037727 - 972000 0.0053380778 0.0020617765 0.004647408 - 972100 0.0067599231 0.0020485566 0.0053228943 - 972200 0.0039044427 0.0026390995 0.004530314 - 972300 0.0046807297 0.0023372425 0.004604471 - 972400 0.006701176 0.0021606903 0.0054065725 - 972500 0.0047470287 0.0021208545 0.0044201965 - 972600 0.0042133114 0.0014399456 0.0034807682 - 972700 0.0049169814 0.0013970871 0.00377875 - 972800 0.0033900015 0.0013416909 0.0029837228 - 972900 0.0034041824 0.0015178454 0.0031667463 - 973000 0.0042446951 0.0018632652 0.0039192894 - 973100 0.0053080875 0.0023574145 0.0049285194 - 973200 0.0053518641 0.0024310562 0.0050233654 - 973300 0.0043804356 0.0027399221 0.0048616956 - 973400 0.0050171847 0.0029705252 0.0054007241 - 973500 0.0045817863 0.0032140553 0.0054333581 - 973600 0.0036593217 0.00308736 0.0048598439 - 973700 0.0040972453 0.0023760405 0.0043606437 - 973800 0.005064119 0.0020923803 0.0045453129 - 973900 0.0045015528 0.0023680602 0.0045484999 - 974000 0.0048204211 0.0022864414 0.0046213329 - 974100 0.0051560809 0.0020707058 0.0045681825 - 974200 0.00602797 0.001955475 0.0048752729 - 974300 0.003836624 0.0022801636 0.0041385284 - 974400 0.0039592505 0.0023065004 0.0042242623 - 974500 0.0040104255 0.0022297553 0.0041723051 - 974600 0.0053318389 0.0020914797 0.0046740892 - 974700 0.0058503584 0.0024939504 0.0053277177 - 974800 0.0050485207 0.0032573583 0.0057027355 - 974900 0.00684454 0.0032466028 0.0065619269 - 975000 0.0065628332 0.0028270935 0.0060059658 - 975100 0.0060170006 0.0028585747 0.0057730594 - 975200 0.004893265 0.0027797997 0.005149975 - 975300 0.005644511 0.0027780836 0.0055121436 - 975400 0.0055351566 0.0033663627 0.0060474542 - 975500 0.0053213933 0.0031887808 0.0057663307 - 975600 0.0069410274 0.0030508696 0.0064129298 - 975700 0.0046329958 0.003080082 0.0053241893 - 975800 0.0050454201 0.0029018929 0.0053457683 - 975900 0.0048680015 0.0028571501 0.0052150884 - 976000 0.005530198 0.0027703853 0.0054490749 - 976100 0.0041685669 0.002721175 0.0047403246 - 976200 0.0057433846 0.0023367878 0.0051187397 - 976300 0.0053536412 0.0023081854 0.0049013554 - 976400 0.0040894139 0.0027627095 0.0047435193 - 976500 0.0030183026 0.0024657537 0.003927744 - 976600 0.0039368946 0.0023823389 0.0042892722 - 976700 0.0049231391 0.0022510183 0.0046356638 - 976800 0.0051838972 0.0022889363 0.0047998865 - 976900 0.0037797387 0.0029159468 0.0047467578 - 977000 0.0047089653 0.0027337466 0.0050146517 - 977100 0.0062333277 0.0020681056 0.0050873737 - 977200 0.0044708493 0.0019937729 0.0041593405 - 977300 0.0044729184 0.0017957091 0.0039622789 - 977400 0.0066330325 0.0018076326 0.0050205077 - 977500 0.004426551 0.0028198862 0.0049639969 - 977600 0.0065115133 0.0025534828 0.0057074971 - 977700 0.0064903401 0.0025028762 0.0056466347 - 977800 0.0055693107 0.0022845376 0.0049821725 - 977900 0.0043181723 0.0026889857 0.0047806004 - 978000 0.0043189901 0.0029497055 0.0050417163 - 978100 0.0060070167 0.0025654377 0.0054750864 - 978200 0.0064760654 0.0023437558 0.0054805999 - 978300 0.0050723855 0.0021510459 0.0046079826 - 978400 0.0056119258 0.0021307259 0.0048490025 - 978500 0.0047867612 0.0022562573 0.0045748447 - 978600 0.0039879435 0.0026199733 0.0045516335 - 978700 0.0049050977 0.0024594011 0.0048353078 - 978800 0.0040357991 0.0022414028 0.0041962429 - 978900 0.0059215407 0.0018829325 0.0047511788 - 979000 0.004971728 0.002111431 0.0045196118 - 979100 0.0047046426 0.0020773071 0.0043561184 - 979200 0.0051497091 0.0021219768 0.0046163672 - 979300 0.0063997397 0.0018407598 0.0049406337 - 979400 0.0037710937 0.0018396016 0.0036662251 - 979500 0.0052133577 0.0015330069 0.004058227 - 979600 0.0035530153 0.0014376514 0.0031586432 - 979700 0.0038593393 0.0012101149 0.0030794823 - 979800 0.0051400442 0.0016692327 0.0041589416 - 979900 0.004175554 0.0018759758 0.0038985097 - 980000 0.0057141708 0.0018474672 0.0046152687 - 980100 0.0040635511 0.0016710327 0.0036393153 - 980200 0.0040758613 0.0018260053 0.0038002506 - 980300 0.0042276844 0.0020454007 0.0040931854 - 980400 0.005166425 0.0023569629 0.00485945 - 980500 0.0059196891 0.0031162177 0.0059835671 - 980600 0.0041985485 0.0032641418 0.0052978137 - 980700 0.0068137465 0.0024877256 0.005788134 - 980800 0.003480164 0.0027054452 0.0043911496 - 980900 0.0049228132 0.0028757806 0.0052602682 - 981000 0.005568669 0.0024680185 0.0051653426 - 981100 0.0072705156 0.0024366666 0.0059583226 - 981200 0.0051728396 0.0026419647 0.0051475589 - 981300 0.0055306637 0.0024943223 0.0051732375 - 981400 0.0052103892 0.0023333708 0.0048571531 - 981500 0.0040845731 0.0025041816 0.0044826467 - 981600 0.0056801175 0.002924182 0.005675489 - 981700 0.0056894542 0.0027554171 0.0055112465 - 981800 0.0052287571 0.0026502694 0.0051829486 - 981900 0.0062279797 0.0021750588 0.0051917365 - 982000 0.0035609025 0.0023668943 0.0040917064 - 982100 0.0046843957 0.0022972056 0.0045662098 - 982200 0.0050642359 0.0023734028 0.004826392 - 982300 0.0051849696 0.0023793118 0.0048907815 - 982400 0.0057742239 0.002574319 0.0053712088 - 982500 0.0049765671 0.0028488026 0.0052593273 - 982600 0.0041687924 0.003227985 0.0052472439 - 982700 0.0043092096 0.0037344593 0.0058217327 - 982800 0.0048516688 0.0035613854 0.0059114125 - 982900 0.0053535195 0.0028726144 0.0054657254 - 983000 0.0057700954 0.0029743286 0.0057692185 - 983100 0.0049637843 0.0028201132 0.0052244462 - 983200 0.0050106838 0.0027453406 0.0051723905 - 983300 0.0063687241 0.0023219668 0.0054068175 - 983400 0.0044638791 0.0023708038 0.0045329952 - 983500 0.0041380905 0.0019094296 0.0039138172 - 983600 0.0052992071 0.0024262577 0.0049930611 - 983700 0.0044133835 0.0026049554 0.004742688 - 983800 0.0051286117 0.0023722774 0.0048564487 - 983900 0.0044055984 0.0025840093 0.004717971 - 984000 0.0048390587 0.0026660006 0.0050099196 - 984100 0.0052517817 0.0024934895 0.0050373213 - 984200 0.0050511034 0.0024526566 0.0048992848 - 984300 0.005120445 0.0027967948 0.0052770104 - 984400 0.0035825618 0.0029222764 0.0046575798 - 984500 0.005688478 0.0027526784 0.0055080349 - 984600 0.0064180043 0.0027642814 0.0058730022 - 984700 0.0044222089 0.0029104482 0.0050524556 - 984800 0.0045402345 0.0031145431 0.0053137192 - 984900 0.0055922187 0.003055667 0.005764398 - 985000 0.0041009438 0.0033472978 0.0053336924 - 985100 0.004308171 0.0030740969 0.0051608672 - 985200 0.0060160165 0.0032917994 0.0062058073 - 985300 0.004556486 0.0033076654 0.0055147133 - 985400 0.0062118039 0.0033594401 0.0063682826 - 985500 0.0050290706 0.0032243699 0.005660326 - 985600 0.0050700655 0.0027963229 0.0052521359 - 985700 0.0051243403 0.0026648049 0.0051469072 - 985800 0.0064421767 0.0029352288 0.0060556581 - 985900 0.0059146031 0.0030297651 0.005894651 - 986000 0.0059471673 0.0030318393 0.0059124985 - 986100 0.005221966 0.0029639791 0.005493369 - 986200 0.0049872668 0.0028562779 0.0052719853 - 986300 0.0064083426 0.0029136954 0.0060177363 - 986400 0.0075816646 0.0030321867 0.0067045555 - 986500 0.0048120934 0.0031939484 0.0055248061 - 986600 0.0056758174 0.0029077879 0.0056570119 - 986700 0.0038237583 0.0031529826 0.0050051155 - 986800 0.0052247197 0.0029449946 0.0054757182 - 986900 0.0039987404 0.0027345012 0.0046713911 - 987000 0.0045769183 0.0027946598 0.0050116046 - 987100 0.003948505 0.0025608629 0.00447342 - 987200 0.0053330342 0.0027178034 0.0053009919 - 987300 0.0037690257 0.0029005868 0.0047262086 - 987400 0.0071917129 0.0027798141 0.0062633 - 987500 0.0036855695 0.0028413445 0.0046265422 - 987600 0.0071626415 0.0024860097 0.0059554142 - 987700 0.0065228409 0.0024253988 0.0055848998 - 987800 0.0060545617 0.0027159338 0.0056486121 - 987900 0.0067510413 0.0026475906 0.0059176263 - 988000 0.0069241755 0.0028980733 0.0062519708 - 988100 0.0074866761 0.0028463305 0.0064726892 - 988200 0.0065304623 0.0028229601 0.0059861527 - 988300 0.004561441 0.0028819666 0.0050914145 - 988400 0.0052258114 0.0028251015 0.0053563539 - 988500 0.0049742407 0.0028904207 0.0052998185 - 988600 0.0063154069 0.0023979318 0.005456957 - 988700 0.007664824 0.0024812106 0.0061938597 - 988800 0.005302173 0.0028687568 0.0054369968 - 988900 0.0068591097 0.002768468 0.0060908493 - 989000 0.0044832982 0.0028805115 0.0050521091 - 989100 0.0057414168 0.0028877942 0.005668793 - 989200 0.0057768758 0.0030672771 0.0058654513 - 989300 0.0065666095 0.002497555 0.0056782565 - 989400 0.0055048397 0.0022052964 0.0048717031 - 989500 0.004988756 0.002719427 0.0051358557 - 989600 0.0038988202 0.0030875314 0.0049760224 - 989700 0.0046371331 0.0024280134 0.0046741247 - 989800 0.006387656 0.0021870487 0.0052810696 - 989900 0.0040767604 0.0022977586 0.0042724394 - 990000 0.0032176587 0.0024655837 0.0040241372 - 990100 0.0053518026 0.0024501974 0.0050424768 - 990200 0.0061678928 0.0023492996 0.0053368726 - 990300 0.0030407835 0.0026476097 0.0041204893 - 990400 0.0058147888 0.0028046956 0.0056212339 - 990500 0.0042721774 0.0031280593 0.0051973952 - 990600 0.008633618 0.0026677063 0.006849615 - 990700 0.0057711898 0.0026465389 0.005441959 - 990800 0.0037519197 0.0029536112 0.0047709474 - 990900 0.0064820509 0.0030311292 0.0061708726 - 991000 0.0061953423 0.003375455 0.0063763239 - 991100 0.0063170428 0.0038461082 0.0069059257 - 991200 0.0045007117 0.0034323775 0.0056124098 - 991300 0.0047824764 0.00275659 0.005073102 - 991400 0.0061370086 0.002512749 0.0054853626 - 991500 0.0044609952 0.0026613919 0.0048221865 - 991600 0.0065778786 0.0021112289 0.0052973888 - 991700 0.0048911768 0.0021462033 0.004515367 - 991800 0.0058746502 0.0021097485 0.0049552822 - 991900 0.0048116993 0.002448547 0.0047792139 - 992000 0.0051390565 0.0021558063 0.0046450368 - 992100 0.0042368811 0.0026219544 0.0046741936 - 992200 0.003584564 0.0025554912 0.0042917644 - 992300 0.0074277829 0.0024056232 0.0060034556 - 992400 0.0045093328 0.0026966481 0.0048808562 - 992500 0.0048638458 0.0024237171 0.0047796424 - 992600 0.0042387456 0.0020709134 0.0041240558 - 992700 0.0058346584 0.0020567557 0.0048829183 - 992800 0.0047791806 0.0021638155 0.0044787311 - 992900 0.0050432375 0.0022831604 0.0047259786 - 993000 0.0058545493 0.0022022786 0.0050380759 - 993100 0.0060523061 0.0020840039 0.0050155897 - 993200 0.0061682071 0.0027081922 0.0056959175 - 993300 0.0036947729 0.0027494034 0.004539059 - 993400 0.0050775395 0.002264335 0.0047237682 - 993500 0.0052163964 0.0023020636 0.0048287556 - 993600 0.0039278289 0.0025151362 0.0044176783 - 993700 0.0050935582 0.0022132214 0.0046804136 - 993800 0.0049088391 0.0021669247 0.0045446437 - 993900 0.0043640255 0.0022723071 0.004386132 - 994000 0.0039512455 0.0023597147 0.0042735992 - 994100 0.0044082107 0.0026960218 0.0048312488 - 994200 0.005542011 0.002690482 0.0053748936 - 994300 0.0051035675 0.0031918265 0.0056638671 - 994400 0.0044666727 0.0036362587 0.0057998033 - 994500 0.0048418996 0.0031226028 0.0054678979 - 994600 0.0052553142 0.0029700689 0.0055156117 - 994700 0.0053126877 0.0030852112 0.0056585443 - 994800 0.0041947089 0.0025849569 0.004616769 - 994900 0.0048992634 0.0025351245 0.0049082052 - 995000 0.0052567554 0.0023247117 0.0048709526 - 995100 0.005468025 0.0023076779 0.0049562526 - 995200 0.0056871936 0.0024085952 0.0051633296 - 995300 0.0070999095 0.0024732653 0.005912284 - 995400 0.0048040698 0.0023683595 0.0046953308 - 995500 0.0044043002 0.0023087316 0.0044420645 - 995600 0.0050913645 0.0022640307 0.0047301604 - 995700 0.0048861939 0.0023118181 0.0046785683 - 995800 0.0058665606 0.0027848978 0.005626513 - 995900 0.0055226934 0.0032062019 0.0058812565 - 996000 0.0068720583 0.0027828838 0.006111537 - 996100 0.0057494514 0.0024266921 0.0052115826 - 996200 0.005113965 0.0024579443 0.0049350211 - 996300 0.0043592503 0.0023953088 0.0045068207 - 996400 0.0046924445 0.0022902873 0.00456319 - 996500 0.004365909 0.0020184398 0.004133177 - 996600 0.002989 0.0022717449 0.0037195418 - 996700 0.0045663138 0.0026969407 0.004908749 - 996800 0.0054185325 0.0029500719 0.0055746735 - 996900 0.0060091344 0.0026772403 0.0055879147 - 997000 0.0039072152 0.0024993702 0.0043919276 - 997100 0.0053123441 0.0021697932 0.0047429599 - 997200 0.0049014502 0.0019825895 0.0043567295 - 997300 0.0064721126 0.0016866843 0.0048216139 - 997400 0.0058443936 0.002200832 0.0050317102 - 997500 0.0053118919 0.0028131674 0.005386115 - 997600 0.0057866158 0.002527966 0.005330858 - 997700 0.0039495061 0.0020253583 0.0039384003 - 997800 0.0048430509 0.0019361416 0.0042819944 - 997900 0.004348259 0.0019607491 0.004066937 - 998000 0.004070038 0.0023530402 0.0043244649 - 998100 0.0043265054 0.0020690333 0.0041646844 - 998200 0.006440916 0.0018058566 0.0049256753 - 998300 0.0047030221 0.0017507567 0.004028783 - 998400 0.0045244802 0.0018707626 0.0040623077 - 998500 0.0056847629 0.0017229935 0.0044765505 - 998600 0.0060921182 0.0019074388 0.0048583085 - 998700 0.0065815686 0.0020988255 0.0052867728 - 998800 0.0047238556 0.0022786743 0.0045667919 - 998900 0.0047305893 0.0021402839 0.0044316631 - 999000 0.0039749926 0.0023083816 0.0042337686 - 999100 0.0043500216 0.002498269 0.0046053107 - 999200 0.0053912988 0.0022375668 0.0048489771 - 999300 0.0046214368 0.0018447362 0.0040832446 - 999400 0.0072041574 0.0017386224 0.0052281361 - 999500 0.0041062982 0.00186204 0.0038510281 - 999600 0.0045259828 0.0017033787 0.0038956516 - 999700 0.0044195358 0.0020669123 0.0042076249 - 999800 0.0048482789 0.0025011758 0.0048495609 - 999900 0.0042323155 0.0023462542 0.004396282 - 1000000 0.0070195744 0.0020962934 0.0054963997 - 1000100 0.0052325519 0.0025812336 0.0051157509 - 1000200 0.0053701453 0.0026391364 0.0052403005 - 1000300 0.0065498581 0.0021817095 0.005354297 - 1000400 0.0041255626 0.0025574907 0.0045558101 - 1000500 0.0068536711 0.0020642998 0.0053840467 - 1000600 0.0047630137 0.0025446958 0.0048517805 - 1000700 0.0060269635 0.0024016652 0.0053209757 - 1000800 0.0046985302 0.0024313838 0.0047072344 - 1000900 0.0067033466 0.0025403247 0.0057872581 - 1001000 0.0040097015 0.0032729377 0.0052151369 - 1001100 0.0052482508 0.0034639203 0.0060060418 - 1001200 0.0060915552 0.0027361193 0.0056867163 - 1001300 0.0056792722 0.0023643931 0.0051152905 - 1001400 0.0054905462 0.0024136607 0.005073144 - 1001500 0.0046295517 0.0026468889 0.004889328 - 1001600 0.0054502247 0.0028193046 0.0054592572 - 1001700 0.0052788064 0.0028894148 0.0054463367 - 1001800 0.0055583299 0.0033857366 0.0060780526 - 1001900 0.0047587923 0.003369221 0.005674261 - 1002000 0.0056817373 0.0029473319 0.0056994234 - 1002100 0.0056383287 0.0026581838 0.0053892493 - 1002200 0.0064859239 0.0025746735 0.0057162929 - 1002300 0.0046104042 0.0027650586 0.0049982232 - 1002400 0.0059714729 0.0024222294 0.0053146616 - 1002500 0.0063302697 0.0021997444 0.0052659688 - 1002600 0.0044932739 0.0023220662 0.0044984958 - 1002700 0.0049096682 0.0024521597 0.0048302802 - 1002800 0.0063771561 0.0024211933 0.0055101283 - 1002900 0.0046441679 0.0022813492 0.0045308681 - 1003000 0.0053822089 0.002286375 0.0048933824 - 1003100 0.0049075636 0.0018562121 0.0042333132 - 1003200 0.0065958629 0.001719224 0.0049140951 - 1003300 0.004025014 0.002488262 0.0044378782 - 1003400 0.0046172338 0.0024646716 0.0047011443 - 1003500 0.0064930447 0.0019758945 0.0051209631 - 1003600 0.0040095284 0.0024768536 0.0044189689 - 1003700 0.0048585659 0.0030287471 0.0053821149 - 1003800 0.0061509045 0.0025724101 0.0055517545 - 1003900 0.0047175866 0.0021163149 0.004401396 - 1004000 0.0045241505 0.0021242432 0.0043156285 - 1004100 0.0047481811 0.0025187357 0.004818636 - 1004200 0.006617178 0.0020720806 0.0052772762 - 1004300 0.0050368325 0.0018419125 0.0042816283 - 1004400 0.005106638 0.0019006513 0.004374179 - 1004500 0.0039323097 0.0023159722 0.0042206847 - 1004600 0.0053007172 0.0022477189 0.0048152538 - 1004700 0.0065897868 0.0020144991 0.0052064271 - 1004800 0.0054973969 0.0023697468 0.0050325484 - 1004900 0.0058628253 0.0026540284 0.0054938344 - 1005000 0.00413297 0.0026888362 0.0046907435 - 1005100 0.00412526 0.0023138106 0.0043119834 - 1005200 0.0049363457 0.0024143357 0.0048053781 - 1005300 0.0045071406 0.0026901017 0.0048732479 - 1005400 0.0048519358 0.0026978177 0.0050479741 - 1005500 0.0064146042 0.0024478435 0.0055549174 - 1005600 0.0054513568 0.0023177772 0.0049582781 - 1005700 0.00447881 0.001963008 0.0041324316 - 1005800 0.0053050187 0.0019798199 0.0045494383 - 1005900 0.0047930078 0.0020366258 0.0043582389 - 1006000 0.0065162712 0.0023037002 0.0054600191 - 1006100 0.004875834 0.0021997989 0.004561531 - 1006200 0.0027085454 0.0022747815 0.0035867332 - 1006300 0.0067881906 0.001950608 0.0052386378 - 1006400 0.0059613196 0.0022863746 0.0051738887 - 1006500 0.0044118402 0.002802581 0.0049395661 - 1006600 0.0042169602 0.0022632247 0.0043058147 - 1006700 0.0056546605 0.0017322046 0.0044711808 - 1006800 0.0062867256 0.002003197 0.0050483297 - 1006900 0.0057937642 0.0021739543 0.0049803088 - 1007000 0.0034848698 0.0020343903 0.0037223741 - 1007100 0.005348628 0.0021950729 0.0047858146 - 1007200 0.0048438885 0.0020535682 0.0043998266 - 1007300 0.0062452268 0.0022640794 0.0052891111 - 1007400 0.005227317 0.0024503951 0.0049823768 - 1007500 0.0053465064 0.0024460091 0.0050357231 - 1007600 0.0046799404 0.002512578 0.0047794242 - 1007700 0.0072895832 0.0028336923 0.0063645842 - 1007800 0.0046507198 0.0024023875 0.0046550799 - 1007900 0.0051192108 0.0025190649 0.0049986826 - 1008000 0.0046550281 0.0029909017 0.005245681 - 1008100 0.0053984828 0.0025362398 0.0051511299 - 1008200 0.0043161306 0.0019302334 0.0040208591 - 1008300 0.0043527491 0.0019643249 0.0040726877 - 1008400 0.0033611641 0.0020162 0.0036442639 - 1008500 0.0063591108 0.0018061396 0.0048863339 - 1008600 0.0057279212 0.0023369356 0.0051113974 - 1008700 0.0056912092 0.0026669715 0.0054236509 - 1008800 0.0062573403 0.0023190033 0.0053499025 - 1008900 0.0045910917 0.0023248534 0.0045486635 - 1009000 0.0045538104 0.00246036 0.0046661119 - 1009100 0.0044797773 0.0019869571 0.0041568492 - 1009200 0.0052965561 0.0016599991 0.0042255184 - 1009300 0.0045962559 0.0023272984 0.0045536099 - 1009400 0.0051370128 0.0028127386 0.0053009792 - 1009500 0.0053695149 0.0025544086 0.0051552674 - 1009600 0.004616299 0.0020260733 0.0042620931 - 1009700 0.0057652885 0.0017984997 0.0045910613 - 1009800 0.0048354733 0.0015946763 0.0039368587 - 1009900 0.0041120965 0.0023055816 0.0042973783 - 1010000 0.0060496451 0.0023587392 0.0052890361 - 1010100 0.0048651693 0.0026004243 0.0049569907 - 1010200 0.0066348692 0.0026431761 0.0058569409 - 1010300 0.0052862234 0.0027032003 0.0052637147 - 1010400 0.0051022076 0.0023330273 0.0048044091 - 1010500 0.0051775151 0.0020150587 0.0045229176 - 1010600 0.0082577855 0.001539418 0.0055392828 - 1010700 0.0069191579 0.0020209849 0.005372452 - 1010800 0.0060028173 0.0026247777 0.0055323923 - 1010900 0.0052966547 0.0027692911 0.0053348582 - 1011000 0.0069224708 0.0026458177 0.0059988895 - 1011100 0.0053068061 0.0027163641 0.0052868483 - 1011200 0.004687591 0.0030474854 0.0053180373 - 1011300 0.0057899877 0.0027832973 0.0055878226 - 1011400 0.0066418206 0.0025730008 0.0057901327 - 1011500 0.0053138794 0.0026094625 0.0051833728 - 1011600 0.0060165823 0.0023032517 0.0052175337 - 1011700 0.0061856289 0.0020557481 0.0050519121 - 1011800 0.0066706745 0.0019218252 0.0051529331 - 1011900 0.0045293602 0.0023039189 0.0044978277 - 1012000 0.0057647557 0.002531751 0.0053240545 - 1012100 0.0049911994 0.0022824955 0.0047001077 - 1012200 0.0051439875 0.0022418214 0.0047334403 - 1012300 0.0057384728 0.0023284362 0.0051080089 - 1012400 0.0066250661 0.0026167188 0.0058257352 - 1012500 0.0068708197 0.0025897903 0.0059178436 - 1012600 0.0050975326 0.0027880521 0.0052571694 - 1012700 0.0052715421 0.0025888901 0.0051422933 - 1012800 0.0052074254 0.0024156259 0.0049379726 - 1012900 0.0044039857 0.0027058371 0.0048390177 - 1013000 0.0052763111 0.0025897156 0.0051454288 - 1013100 0.0051636261 0.0020046097 0.0045057411 - 1013200 0.0049832625 0.0023956177 0.0048093855 - 1013300 0.0046930831 0.0026373177 0.0049105299 - 1013400 0.0067062999 0.0027374673 0.0059858313 - 1013500 0.0047248591 0.002877889 0.0051664927 - 1013600 0.0061764498 0.0023986205 0.0053903384 - 1013700 0.0065034853 0.0021889873 0.005339113 - 1013800 0.0043887207 0.0021668113 0.0042925979 - 1013900 0.0053222402 0.0024537634 0.0050317234 - 1014000 0.006520899 0.0027566654 0.0059152259 - 1014100 0.0049332213 0.0023208718 0.0047104009 - 1014200 0.0038336999 0.0019617069 0.0038186553 - 1014300 0.0051914237 0.0019169924 0.0044315883 - 1014400 0.0046941658 0.0018816177 0.0041553542 - 1014500 0.0060464859 0.0019279088 0.0048566754 - 1014600 0.0036892386 0.0017710766 0.0035580516 - 1014700 0.0053947819 0.0017358422 0.0043489396 - 1014800 0.0044155349 0.0020296398 0.0041684145 - 1014900 0.0046298261 0.0025822178 0.0048247898 - 1015000 0.0036701402 0.002841104 0.0046188282 - 1015100 0.0038641773 0.0027268024 0.0045985133 - 1015200 0.0032599393 0.002317249 0.0038962821 - 1015300 0.0041118648 0.0023775971 0.0043692816 - 1015400 0.0045885034 0.0031171535 0.0053397098 - 1015500 0.0054260317 0.0031654748 0.0057937089 - 1015600 0.0047105721 0.0030056696 0.005287353 - 1015700 0.005108738 0.0030577765 0.0055323214 - 1015800 0.0059870645 0.0031986424 0.0060986268 - 1015900 0.0064254133 0.0032086769 0.0063209865 - 1016000 0.0050439835 0.002408469 0.0048516485 - 1016100 0.0048624278 0.0020007332 0.0043559717 - 1016200 0.0044088157 0.0021621199 0.00429764 - 1016300 0.0055024204 0.0025066122 0.005171847 - 1016400 0.00393655 0.0028599956 0.004766762 - 1016500 0.0054707951 0.0028846604 0.0055345768 - 1016600 0.0059370087 0.0024472741 0.0053230127 - 1016700 0.0069316485 0.0020347046 0.0053922219 - 1016800 0.0045213751 0.0025442309 0.0047342719 - 1016900 0.0034594828 0.0028401787 0.0045158657 - 1017000 0.0065232298 0.0021223617 0.0052820512 - 1017100 0.0051342279 0.0020001091 0.0044870008 - 1017200 0.0072780507 0.0022567284 0.0057820342 - 1017300 0.0058161913 0.0021464675 0.0049636852 - 1017400 0.0047325847 0.0023252538 0.0046175995 - 1017500 0.0042997801 0.0029184885 0.0050011944 - 1017600 0.0066824044 0.0026343497 0.0058711394 - 1017700 0.0044266708 0.0025660203 0.004710189 - 1017800 0.0062487075 0.003179033 0.0062057507 - 1017900 0.005401907 0.0030382399 0.0056547886 - 1018000 0.0053601609 0.0026615858 0.0052579138 - 1018100 0.0056794837 0.0024091544 0.0051601544 - 1018200 0.0045919502 0.0021240911 0.004348317 - 1018300 0.0043435173 0.0018917078 0.003995599 - 1018400 0.0034351708 0.002317108 0.0039810188 - 1018500 0.0053939175 0.002771873 0.0053845518 - 1018600 0.0058856424 0.0032101345 0.0060609926 - 1018700 0.0044480017 0.0033875564 0.0055420572 - 1018800 0.0057047297 0.0033283391 0.0060915676 - 1018900 0.0054730739 0.0026372475 0.0052882676 - 1019000 0.0042629903 0.0022800879 0.0043449738 - 1019100 0.0052077081 0.0022464353 0.0047689189 - 1019200 0.0050942183 0.0018721845 0.0043396965 - 1019300 0.0040548417 0.0018056177 0.0037696817 - 1019400 0.0044711706 0.0017214879 0.0038872111 - 1019500 0.0047484589 0.0018031314 0.0041031662 - 1019600 0.0041579299 0.0020998886 0.0041138859 - 1019700 0.0046275548 0.0019312803 0.0041727522 - 1019800 0.0063528809 0.0021346335 0.0052118102 - 1019900 0.0042460417 0.003027595 0.0050842715 - 1020000 0.0042832434 0.002899557 0.004974253 - 1020100 0.0053464014 0.0028771418 0.005466805 - 1020200 0.0044230013 0.0028524105 0.0049948017 - 1020300 0.0047357866 0.0021806217 0.0044745183 - 1020400 0.0045821536 0.0023735922 0.0045930728 - 1020500 0.0054775413 0.0021853522 0.0048385363 - 1020600 0.0040751981 0.0023345907 0.0043085148 - 1020700 0.0055512772 0.0022365656 0.0049254655 - 1020800 0.0054598107 0.0025796584 0.0052242541 - 1020900 0.0035040119 0.0026447199 0.0043419757 - 1021000 0.0053143151 0.0026582772 0.0052323985 - 1021100 0.005507319 0.0025363521 0.0052039597 - 1021200 0.0057728261 0.0023159916 0.0051122042 - 1021300 0.0073548629 0.0023251855 0.0058876972 - 1021400 0.0060504748 0.0030086748 0.0059393735 - 1021500 0.0061221796 0.0030706907 0.0060361214 - 1021600 0.0060702426 0.0026691374 0.0056094111 - 1021700 0.0051405374 0.0024112139 0.0049011617 - 1021800 0.0057808999 0.0022662419 0.0050663653 - 1021900 0.0048026619 0.0021260782 0.0044523675 - 1022000 0.0036357903 0.0020737877 0.0038348736 - 1022100 0.0051158048 0.0022228122 0.0047007802 - 1022200 0.005755132 0.002668009 0.0054556511 - 1022300 0.0059996099 0.0033110409 0.0062171019 - 1022400 0.0047671679 0.0032533003 0.0055623973 - 1022500 0.0054285991 0.0027284783 0.005357956 - 1022600 0.0052230554 0.0029468718 0.0054767892 - 1022700 0.0048664548 0.0031295435 0.0054867326 - 1022800 0.0043943918 0.002896219 0.0050247526 - 1022900 0.0043247706 0.0025882603 0.004683071 - 1023000 0.0048848365 0.0022677683 0.004633861 - 1023100 0.0049178948 0.0025966102 0.0049787155 - 1023200 0.0033315308 0.0030363188 0.0046500291 - 1023300 0.0044013643 0.0029460343 0.0050779452 - 1023400 0.005364758 0.0027550706 0.0053536253 - 1023500 0.0073007812 0.0030776823 0.0066139982 - 1023600 0.0065841722 0.0031133426 0.006302551 - 1023700 0.0056889932 0.0028873636 0.0056429697 - 1023800 0.0051669262 0.0028117141 0.0053144439 - 1023900 0.004827673 0.0021873848 0.0045257889 - 1024000 0.0043853363 0.0020483858 0.004172533 - 1024100 0.0059189432 0.0021419052 0.0050088933 - 1024200 0.0055283239 0.0026150491 0.005292831 - 1024300 0.0061155448 0.0027077361 0.0056699531 - 1024400 0.0068760867 0.0026466595 0.005977264 - 1024500 0.0051925935 0.002561036 0.0050761984 - 1024600 0.0082323947 0.0020422552 0.0060298214 - 1024700 0.005799531 0.0020187446 0.0048278924 - 1024800 0.0054000261 0.0025314144 0.0051470521 - 1024900 0.0044695438 0.0025731411 0.0047380764 - 1025000 0.0045952976 0.0024691567 0.004695004 - 1025100 0.0053044745 0.0023498442 0.0049191991 - 1025200 0.005024066 0.0023510773 0.0047846093 - 1025300 0.0065706122 0.0019071369 0.0050897772 - 1025400 0.0048238984 0.001767191 0.0041037668 - 1025500 0.0055314211 0.0017209956 0.0044002777 - 1025600 0.0060320515 0.0017505847 0.0046723597 - 1025700 0.0038934672 0.0024498057 0.0043357039 - 1025800 0.0050289387 0.0028339978 0.00526989 - 1025900 0.0045919126 0.0023474646 0.0045716723 - 1026000 0.0044114923 0.0021050676 0.0042418842 - 1026100 0.0046321802 0.00221666 0.0044603723 - 1026200 0.0040821634 0.0023186665 0.0042959644 - 1026300 0.0037296863 0.0022467572 0.0040533241 - 1026400 0.0052337583 0.0022928352 0.0048279369 - 1026500 0.0039430283 0.0022245955 0.0041344998 - 1026600 0.0054602296 0.0020235758 0.0046683745 - 1026700 0.0049102192 0.0014182042 0.0037965917 - 1026800 0.0053014117 0.0013866048 0.0039544761 - 1026900 0.0056513537 0.0018480663 0.0045854408 - 1027000 0.0045532286 0.0022905244 0.0044959945 - 1027100 0.0046316927 0.0023136766 0.0045571527 - 1027200 0.0051660201 0.001963923 0.004466214 - 1027300 0.0048393052 0.0018556331 0.0041996715 - 1027400 0.0067613969 0.0021984102 0.0054734618 - 1027500 0.0049713888 0.0022700187 0.0046780352 - 1027600 0.0037095075 0.0024084557 0.0042052484 - 1027700 0.0038349611 0.0021637889 0.0040213482 - 1027800 0.0048790817 0.0020022 0.0043655052 - 1027900 0.0045423054 0.0020654942 0.0042656734 - 1028000 0.0057283811 0.0020610393 0.0048357239 - 1028100 0.0061367674 0.0019742205 0.0049467172 - 1028200 0.0052771557 0.0023865824 0.0049427047 - 1028300 0.005535402 0.0023787155 0.0050599258 - 1028400 0.0064866915 0.0020018412 0.0051438324 - 1028500 0.0041083578 0.0020369798 0.0040269656 - 1028600 0.0059207484 0.0019689878 0.0048368504 - 1028700 0.0067323034 0.0021136548 0.0053746143 - 1028800 0.0042043387 0.0022973977 0.0043338742 - 1028900 0.0053116358 0.002290996 0.0048638196 - 1029000 0.0049354483 0.0022147525 0.0046053603 - 1029100 0.0044698549 0.0025776517 0.0047427377 - 1029200 0.0047584209 0.0022950643 0.0045999244 - 1029300 0.0052892301 0.0018724979 0.0044344687 - 1029400 0.0054818444 0.0017704023 0.0044256707 - 1029500 0.0038388059 0.0018927733 0.0037521949 - 1029600 0.0045650783 0.0019485516 0.0041597614 - 1029700 0.0036446442 0.0026707846 0.0044361591 - 1029800 0.0038678333 0.0033154554 0.0051889372 - 1029900 0.0047884069 0.002955111 0.0052744956 - 1030000 0.0064022555 0.0027724387 0.0058735311 - 1030100 0.0060573778 0.00286997 0.0058040124 - 1030200 0.0044693759 0.0023823694 0.0045472234 - 1030300 0.0030920786 0.0023227516 0.0038204771 - 1030400 0.005346967 0.002197186 0.0047871232 - 1030500 0.0066086334 0.0018782556 0.0050793124 - 1030600 0.0051829132 0.0020068367 0.0045173103 - 1030700 0.0063067222 0.0025056412 0.0055604598 - 1030800 0.0056677641 0.0026663239 0.0054116471 - 1030900 0.0050968529 0.0024672351 0.0049360232 - 1031000 0.0067383123 0.0023181787 0.0055820488 - 1031100 0.0059881676 0.0020466332 0.0049471519 - 1031200 0.0055663863 0.0021368423 0.0048330607 - 1031300 0.0034025601 0.0022124228 0.0038605379 - 1031400 0.0045634291 0.0017948023 0.0040052133 - 1031500 0.0044045767 0.0020297085 0.0041631753 - 1031600 0.0041718604 0.0019618614 0.0039826063 - 1031700 0.0058755956 0.0017305672 0.0045765589 - 1031800 0.0045726897 0.0018680982 0.0040829947 - 1031900 0.0042671092 0.0020754387 0.0041423197 - 1032000 0.0060461418 0.00278744 0.0057160399 - 1032100 0.0042543898 0.0033105136 0.0053712336 - 1032200 0.005748412 0.0030131374 0.0057975245 - 1032300 0.004084875 0.0024920976 0.0044707089 - 1032400 0.004669198 0.002714266 0.0049759088 - 1032500 0.005942937 0.0022159467 0.0050945569 - 1032600 0.0051193792 0.002368764 0.0048484633 - 1032700 0.0063379135 0.0022401018 0.0053100286 - 1032800 0.0084550659 0.0025119917 0.0066074143 - 1032900 0.0047609683 0.0027068607 0.0050129548 - 1033000 0.0058041584 0.0019943702 0.0048057594 - 1033100 0.0046967721 0.0020954505 0.0043704495 - 1033200 0.0047987375 0.0025848757 0.0049092642 - 1033300 0.0042214905 0.0024116275 0.004456412 - 1033400 0.0047379009 0.0020986235 0.0043935442 - 1033500 0.006200839 0.002276343 0.0052798744 - 1033600 0.0038524451 0.0027764324 0.0046424605 - 1033700 0.0040667331 0.0025559094 0.0045257333 - 1033800 0.0070318244 0.002408968 0.005815008 - 1033900 0.0057186479 0.0027291526 0.0054991227 - 1034000 0.0041315 0.002980724 0.0049819193 - 1034100 0.005460398 0.0029034493 0.0055483296 - 1034200 0.005516467 0.0030485242 0.0057205629 - 1034300 0.0068329585 0.0024180015 0.0057277158 - 1034400 0.0055535597 0.0021037621 0.0047937676 - 1034500 0.0051150841 0.0025129772 0.0049905961 - 1034600 0.0042055861 0.0030079548 0.0050450356 - 1034700 0.0048726576 0.0023807 0.0047408935 - 1034800 0.0040564246 0.0018694469 0.0038342775 - 1034900 0.0046597231 0.0014423714 0.0036994248 - 1035000 0.0048417142 0.0014394467 0.003784652 - 1035100 0.0038869062 0.0018775773 0.0037602974 - 1035200 0.0044563262 0.0021910738 0.0043496069 - 1035300 0.0059008165 0.0022340779 0.0050922859 - 1035400 0.0053356457 0.0025991782 0.0051836316 - 1035500 0.0058445117 0.0026273926 0.005458328 - 1035600 0.0047444516 0.0028242283 0.0051223221 - 1035700 0.0055535084 0.0026596127 0.0053495933 - 1035800 0.0058252839 0.0027804829 0.0056021048 - 1035900 0.0050175613 0.0023998764 0.0048302577 - 1036000 0.0055744515 0.0025014985 0.0052016235 - 1036100 0.0057709245 0.0029080149 0.0057033065 - 1036200 0.0066537631 0.0026296507 0.0058525672 - 1036300 0.0052007765 0.0023603519 0.004879478 - 1036400 0.0065285278 0.0021221336 0.0052843892 - 1036500 0.0043333792 0.0024160752 0.0045150557 - 1036600 0.0046607865 0.0028951698 0.0051527383 - 1036700 0.0061910196 0.0027600601 0.0057588352 - 1036800 0.0050137415 0.0028037611 0.0052322922 - 1036900 0.0040788343 0.0030605631 0.0050362485 - 1037000 0.0044214633 0.0024932595 0.0046349057 - 1037100 0.0051084848 0.0020303693 0.0045047916 - 1037200 0.0030348555 0.0021146815 0.0035846897 - 1037300 0.0058140438 0.002246274 0.0050624514 - 1037400 0.0045038662 0.0024294542 0.0046110144 - 1037500 0.0038990828 0.002157604 0.0040462223 - 1037600 0.0055521666 0.0017895905 0.0044789212 - 1037700 0.0040583161 0.0022472954 0.0042130423 - 1037800 0.0051801598 0.0026879189 0.0051970588 - 1037900 0.0041998569 0.0026330274 0.0046673331 - 1038000 0.0033788944 0.0029466503 0.0045833023 - 1038100 0.0055669201 0.0030588649 0.0057553418 - 1038200 0.0054285881 0.0032098628 0.0058393352 - 1038300 0.0056126542 0.0025868315 0.0053054609 - 1038400 0.005698879 0.0023028664 0.0050632609 - 1038500 0.0051723592 0.0019114659 0.0044168274 - 1038600 0.0041034937 0.0017290724 0.0037167021 - 1038700 0.0049592381 0.0021875468 0.0045896778 - 1038800 0.0053936999 0.0028163553 0.0054289287 - 1038900 0.0058354323 0.002639329 0.0054658665 - 1039000 0.0050145579 0.0026121307 0.0050410572 - 1039100 0.0054386513 0.0026849777 0.0053193244 - 1039200 0.0048402409 0.0025755885 0.0049200802 - 1039300 0.0052599645 0.0023768188 0.0049246141 - 1039400 0.0036211664 0.0024595735 0.0042135759 - 1039500 0.0053673878 0.0024711159 0.0050709443 - 1039600 0.0061094993 0.0022200131 0.0051793019 - 1039700 0.0049153573 0.0024831547 0.0048640309 - 1039800 0.0043960102 0.0027346177 0.0048639351 - 1039900 0.004557728 0.0027471346 0.0049547841 - 1040000 0.0045089496 0.0030803048 0.0052643273 - 1040100 0.0054162653 0.0033029735 0.005926477 - 1040200 0.0060171899 0.0033187059 0.0062332822 - 1040300 0.0058441532 0.0029577083 0.0057884701 - 1040400 0.0039903492 0.0030342981 0.0049671235 - 1040500 0.0043964848 0.003054063 0.0051836104 - 1040600 0.0035111309 0.0030924659 0.0047931699 - 1040700 0.0044344771 0.0027323146 0.0048802644 - 1040800 0.0040750729 0.002455651 0.0044295144 - 1040900 0.005689888 0.0028733694 0.0056294089 - 1041000 0.006339962 0.0030181983 0.0060891173 - 1041100 0.0056099484 0.0028785466 0.0055958653 - 1041200 0.0045686949 0.0022862077 0.0044991693 - 1041300 0.0047887414 0.0022941411 0.0046136877 - 1041400 0.0053800141 0.0023019229 0.0049078672 - 1041500 0.0071157371 0.002158894 0.0056055792 - 1041600 0.0061180607 0.0022994036 0.0052628392 - 1041700 0.0053016762 0.0021743767 0.0047423761 - 1041800 0.0057957357 0.0020731587 0.0048804682 - 1041900 0.0053512814 0.0020942794 0.0046863063 - 1042000 0.0059834344 0.0020764351 0.0049746611 - 1042100 0.0045966144 0.002599633 0.0048261181 - 1042200 0.0050997589 0.0030943349 0.0055645306 - 1042300 0.0061422446 0.0030520076 0.0060271573 - 1042400 0.0059954307 0.0026142224 0.0055182591 - 1042500 0.0051482924 0.0026071774 0.0051008816 - 1042600 0.007061626 0.0026629009 0.006083376 - 1042700 0.0067436831 0.0027230907 0.0059895622 - 1042800 0.0046298555 0.003072998 0.0053155842 - 1042900 0.0050186883 0.0027021479 0.005133075 - 1043000 0.0050903713 0.0022409002 0.0047065488 - 1043100 0.0044588871 0.0024278795 0.0045876529 - 1043200 0.0052072144 0.0026102171 0.0051324616 - 1043300 0.0030839047 0.0027556461 0.0042494125 - 1043400 0.0059592906 0.002698681 0.0055852124 - 1043500 0.0050922919 0.0034398161 0.005906395 - 1043600 0.0038020976 0.0032725893 0.0051142303 - 1043700 0.0049406202 0.0029200179 0.0053131308 - 1043800 0.0060987179 0.0023572155 0.005311282 - 1043900 0.0040090898 0.0020428714 0.0039847743 - 1044000 0.0058859457 0.0022271144 0.0050781194 - 1044100 0.0035222421 0.0028677327 0.0045738187 - 1044200 0.004567284 0.0029862066 0.0051984848 - 1044300 0.0056237352 0.0030926997 0.0058166964 - 1044400 0.0047226262 0.0030008259 0.005288348 - 1044500 0.0045797583 0.0031397002 0.0053580206 - 1044600 0.0042709434 0.0033023234 0.0053710617 - 1044700 0.0056781867 0.0030103629 0.0057607346 - 1044800 0.006156635 0.0029568962 0.0059390163 - 1044900 0.0041001197 0.0027493668 0.0047353623 - 1045000 0.0052522924 0.0027817665 0.0053258456 - 1045100 0.0040277478 0.0027064855 0.0046574258 - 1045200 0.0043634287 0.0026709197 0.0047844555 - 1045300 0.0058868151 0.0030714997 0.0059229257 - 1045400 0.0050471839 0.0033394996 0.0057842293 - 1045500 0.0058434188 0.0030523226 0.0058827286 - 1045600 0.0045523559 0.0024874115 0.0046924589 - 1045700 0.0044619269 0.0020011725 0.0041624184 - 1045800 0.0055585861 0.0025449897 0.0052374299 - 1045900 0.0040431393 0.0029213592 0.0048797548 - 1046000 0.0048892381 0.0026265189 0.0049947436 - 1046100 0.0037503361 0.002481961 0.0042985301 - 1046200 0.0044872095 0.0022634926 0.0044369847 - 1046300 0.0047746797 0.0022874475 0.004600183 - 1046400 0.0061950467 0.0023911164 0.0053918421 - 1046500 0.0051735862 0.0023944166 0.0049003724 - 1046600 0.0043333193 0.0022191308 0.0043180824 - 1046700 0.0054754352 0.0023761788 0.0050283427 - 1046800 0.0051042846 0.0022944247 0.0047668125 - 1046900 0.0041417916 0.0019654933 0.0039716737 - 1047000 0.0043957265 0.001923832 0.004053012 - 1047100 0.0043303464 0.0023049735 0.0044024851 - 1047200 0.0047851687 0.0018690607 0.0041868768 - 1047300 0.0051151393 0.0017590889 0.0042367345 - 1047400 0.0048118511 0.0018008274 0.0041315677 - 1047500 0.0047303586 0.0019035053 0.0041947728 - 1047600 0.0065920633 0.0019855473 0.0051785779 - 1047700 0.0062582789 0.0023615578 0.0053929116 - 1047800 0.0048014767 0.0027926979 0.0051184131 - 1047900 0.0057384066 0.0032674862 0.0060470269 - 1048000 0.0059847998 0.0030799753 0.0059788627 - 1048100 0.005076815 0.0026382659 0.0050973481 - 1048200 0.0044421798 0.0032793435 0.0054310243 - 1048300 0.0050194106 0.0037750581 0.0062063351 - 1048400 0.0062738555 0.003956149 0.0069950477 - 1048500 0.0062953867 0.0037226807 0.0067720087 - 1048600 0.0054240372 0.0033741468 0.0060014148 - 1048700 0.0069298408 0.00330614 0.0066627817 - 1048800 0.0035072166 0.0031158584 0.0048146665 - 1048900 0.0054537628 0.0028931217 0.005534788 - 1049000 0.0048183121 0.0032362375 0.0055701074 - 1049100 0.0058951537 0.0025658331 0.0054212981 - 1049200 0.0046208027 0.0020463783 0.0042845796 - 1049300 0.0032212387 0.0020255072 0.0035857947 - 1049400 0.0049216459 0.0023464476 0.0047303698 - 1049500 0.005070999 0.0021575179 0.004613783 - 1049600 0.0041882551 0.0024114365 0.0044401225 - 1049700 0.0051884589 0.0031825664 0.0056957262 - 1049800 0.0044853504 0.0031304689 0.0053030605 - 1049900 0.0060712477 0.003068241 0.0060090016 - 1050000 0.0037048753 0.0034713129 0.0052658619 - 1050100 0.0062138653 0.0027698093 0.0057796503 - 1050200 0.0057780981 0.0019958669 0.0047946332 - 1050300 0.0045655908 0.0020439664 0.0042554244 - 1050400 0.0046907112 0.0025375955 0.0048096587 - 1050500 0.0039409238 0.0028274892 0.0047363741 - 1050600 0.0039198834 0.002950878 0.0048495715 - 1050700 0.0059775774 0.002684179 0.0055795681 - 1050800 0.006151992 0.0023402862 0.0053201573 - 1050900 0.0032610249 0.0032720798 0.0048516387 - 1051000 0.0030154085 0.0031736418 0.0046342303 - 1051100 0.00548625 0.0029361669 0.0055935692 - 1051200 0.0058514998 0.0027292874 0.0055636076 - 1051300 0.0060877556 0.00219913 0.0051478866 - 1051400 0.0057433428 0.0023417702 0.0051237019 - 1051500 0.0042960148 0.0029116988 0.0049925809 - 1051600 0.0046403897 0.0032794007 0.0055270895 - 1051700 0.0062749217 0.0029328392 0.0059722544 - 1051800 0.0061847335 0.0026417056 0.0056374359 - 1051900 0.0066949391 0.0022436035 0.0054864646 - 1052000 0.0070111648 0.0022360041 0.005632037 - 1052100 0.0055455373 0.0027194826 0.0054056022 - 1052200 0.0067458887 0.0031767594 0.0064442993 - 1052300 0.0067892815 0.0034247701 0.0067133284 - 1052400 0.0051307248 0.0037775062 0.006262701 - 1052500 0.0060415184 0.0032124949 0.0061388554 - 1052600 0.0067726888 0.0020240372 0.0053045583 - 1052700 0.0052825891 0.0016935366 0.0042522907 - 1052800 0.0054954954 0.0020682107 0.0047300913 - 1052900 0.0041623514 0.0023108258 0.0043269647 - 1053000 0.0044068318 0.0025164544 0.0046510136 - 1053100 0.0049483196 0.0024965868 0.0048934291 - 1053200 0.0051731368 0.0024294693 0.0049352075 - 1053300 0.0064350229 0.0025382805 0.0056552447 - 1053400 0.0059161963 0.0024864121 0.0053520696 - 1053500 0.0065120382 0.0023189527 0.0054732212 - 1053600 0.0057853163 0.002302472 0.0051047346 - 1053700 0.0056497473 0.0024376302 0.0051742265 - 1053800 0.0054466864 0.0026715737 0.0053098125 - 1053900 0.0050118649 0.0025753306 0.0050029527 - 1054000 0.0063104427 0.002557761 0.0056143817 - 1054100 0.0070722156 0.0021673502 0.0055929547 - 1054200 0.0064075669 0.0023814499 0.0054851151 - 1054300 0.0044291901 0.0025413633 0.0046867522 - 1054400 0.0048569824 0.00275675 0.0051093509 - 1054500 0.0037186115 0.002959103 0.0047603054 - 1054600 0.0045431532 0.0026088075 0.0048093974 - 1054700 0.0047717656 0.0025090238 0.0048203478 - 1054800 0.0042690326 0.0023342283 0.004402041 - 1054900 0.0064558073 0.0020389246 0.0051659563 - 1055000 0.0064952929 0.0020231563 0.0051693138 - 1055100 0.0055631201 0.002830059 0.0055246953 - 1055200 0.005929974 0.0033165703 0.0061889015 - 1055300 0.0054133698 0.0032224003 0.0058445013 - 1055400 0.006704382 0.0035141798 0.0067616148 - 1055500 0.0065665987 0.0039308979 0.0071115941 - 1055600 0.0056407958 0.0042461384 0.0069783989 - 1055700 0.0050383267 0.0038020497 0.0062424892 - 1055800 0.0073291938 0.0029503413 0.0065004195 - 1055900 0.0048628571 0.0026550806 0.005010527 - 1056000 0.0056038271 0.0027748167 0.0054891704 - 1056100 0.0046476641 0.0032541372 0.0055053496 - 1056200 0.0042379505 0.0030272735 0.0050800307 - 1056300 0.0057602149 0.0025603505 0.0053504546 - 1056400 0.0062273259 0.002449477 0.005465838 - 1056500 0.0050699956 0.0030696623 0.0055254414 - 1056600 0.0053945912 0.0045063382 0.0071193434 - 1056700 0.0042991792 0.0046079341 0.006690349 - 1056800 0.0048685728 0.0039257182 0.0062839332 - 1056900 0.0057098515 0.0037414312 0.0065071405 - 1057000 0.0062060513 0.0037755561 0.0067816123 - 1057100 0.0065460533 0.0039003539 0.0070710985 - 1057200 0.0066316759 0.0032084111 0.0064206291 - 1057300 0.005828463 0.0034881754 0.0063113372 - 1057400 0.0065445572 0.0033703576 0.0065403775 - 1057500 0.0058463579 0.0026365689 0.0054683985 - 1057600 0.0034784512 0.0024947119 0.0041795867 - 1057700 0.0057155074 0.0019677195 0.0047361684 - 1057800 0.0043230509 0.0018008337 0.0038948115 - 1057900 0.0035915871 0.0018859172 0.0036255922 - 1058000 0.0060777562 0.0015778999 0.0045218131 - 1058100 0.0058803871 0.0019388495 0.004787162 - 1058200 0.0051487605 0.0024604192 0.0049543501 - 1058300 0.0043828267 0.002756867 0.0048797986 - 1058400 0.0062692343 0.00220817 0.0052448304 - 1058500 0.0054219083 0.0025666724 0.0051929093 - 1058600 0.0055797464 0.002608373 0.0053110627 - 1058700 0.0052995868 0.0027703229 0.0053373102 - 1058800 0.0073359145 0.0030646463 0.0066179799 - 1058900 0.0046243616 0.0033812324 0.0056211575 - 1059000 0.0049853284 0.003233533 0.0056483014 - 1059100 0.0042738678 0.0029096613 0.004979816 - 1059200 0.0042917895 0.0029561942 0.0050350298 - 1059300 0.0040655166 0.0024745533 0.0044437879 - 1059400 0.0064983645 0.0019758052 0.0051234505 - 1059500 0.0053038844 0.0021747977 0.0047438667 - 1059600 0.0055261105 0.0027298097 0.0054065195 - 1059700 0.0046599033 0.0028093564 0.0050664971 - 1059800 0.0056066714 0.0025771745 0.005292906 - 1059900 0.0057200307 0.0025716419 0.0053422817 - 1060000 0.0040774116 0.0027644989 0.0047394951 - 1060100 0.0060385475 0.0029319419 0.0058568634 - 1060200 0.004403367 0.0031743624 0.0053072433 - 1060300 0.0055782871 0.0027670858 0.0054690686 - 1060400 0.0052127148 0.0022694991 0.0047944079 - 1060500 0.0057499156 0.0018471167 0.0046322321 - 1060600 0.0037755025 0.0015496331 0.0033783921 - 1060700 0.0057008363 0.0014365452 0.0041978877 - 1060800 0.0057756579 0.0020766006 0.0048741848 - 1060900 0.0047304387 0.0020955578 0.0043868641 - 1061000 0.0053721483 0.001716578 0.0043187123 - 1061100 0.0061881217 0.0016818852 0.0046792567 - 1061200 0.0053977085 0.0016705273 0.0042850424 - 1061300 0.0054413248 0.001565074 0.0042007157 - 1061400 0.0062270368 0.0015772183 0.0045934392 - 1061500 0.0041608748 0.001645915 0.0036613388 - 1061600 0.0054254472 0.0016396001 0.0042675511 - 1061700 0.0051121133 0.0019411305 0.0044173104 - 1061800 0.0038195247 0.0026587595 0.0045088418 - 1061900 0.0046565658 0.002804854 0.0050603781 - 1062000 0.0072129372 0.0025331379 0.0060269044 - 1062100 0.0058446079 0.0023355077 0.0051664897 - 1062200 0.0045619497 0.0026551988 0.0048648932 - 1062300 0.0046954009 0.0026782401 0.0049525749 - 1062400 0.004151728 0.0023599309 0.0043709242 - 1062500 0.0040055555 0.0022044975 0.0041446885 - 1062600 0.0044022221 0.0022161696 0.0043484959 - 1062700 0.0052402662 0.0020015138 0.0045397677 - 1062800 0.0058893502 0.0017352069 0.0045878609 - 1062900 0.004345349 0.0021104423 0.0042152208 - 1063000 0.0052990573 0.002310091 0.0048768219 - 1063100 0.0061570614 0.0019882184 0.004970545 - 1063200 0.0056408495 0.0018660051 0.0045982916 - 1063300 0.0041914651 0.0019360779 0.0039663188 - 1063400 0.0039457356 0.0020012734 0.0039124891 - 1063500 0.0050815845 0.0020923654 0.0045537579 - 1063600 0.0046082951 0.0026829683 0.0049151112 - 1063700 0.004837358 0.0024757163 0.0048188116 - 1063800 0.0058201796 0.0024716145 0.005290764 - 1063900 0.0036369087 0.0026853306 0.0044469582 - 1064000 0.0078034501 0.0023398396 0.0061196357 - 1064100 0.0056235376 0.0026643974 0.0053882984 - 1064200 0.0061286389 0.0031405553 0.0061091147 - 1064300 0.0066948352 0.0029835287 0.0062263395 - 1064400 0.0058562282 0.0025721444 0.005408755 - 1064500 0.0052049294 0.0027184014 0.0052395391 - 1064600 0.0060106572 0.0025434626 0.0054548747 - 1064700 0.004139262 0.0025798194 0.0045847744 - 1064800 0.0041960076 0.0028008187 0.0048332599 - 1064900 0.0051237683 0.0026398529 0.0051216781 - 1065000 0.0050899836 0.0022007599 0.0046662207 - 1065100 0.0067047136 0.0020528636 0.0053004592 - 1065200 0.0067567947 0.0019493579 0.0052221803 - 1065300 0.0049399675 0.0019026907 0.0042954875 - 1065400 0.0038262215 0.0021771459 0.0040304719 - 1065500 0.0053400521 0.0019820075 0.0045685952 - 1065600 0.0050473174 0.0017233238 0.0041681182 - 1065700 0.004214167 0.001760672 0.0038019092 - 1065800 0.0045188192 0.0018128844 0.0040016875 - 1065900 0.004855718 0.0022630805 0.0046150689 - 1066000 0.0061694764 0.0025067599 0.0054951001 - 1066100 0.0062629758 0.0025781844 0.0056118133 - 1066200 0.0053971934 0.0026271061 0.0052413717 - 1066300 0.0054583889 0.0024786217 0.0051225288 - 1066400 0.0066783919 0.0029599581 0.0061948042 - 1066500 0.0048273498 0.0031028566 0.0054411042 - 1066600 0.0075934216 0.0027159893 0.0063940528 - 1066700 0.0048507704 0.0028648581 0.00521445 - 1066800 0.0054257182 0.0024405457 0.005068628 - 1066900 0.0059615996 0.002494611 0.0053822608 - 1067000 0.0049202046 0.0026677185 0.0050509426 - 1067100 0.0048389678 0.0028802797 0.0052241547 - 1067200 0.0067269628 0.0022334361 0.0054918087 - 1067300 0.0042104549 0.0018509037 0.0038903428 - 1067400 0.0058557906 0.0019117902 0.0047481888 - 1067500 0.0047894741 0.0023249914 0.0046448929 - 1067600 0.0071288993 0.00197306 0.0054261206 - 1067700 0.0053343027 0.0021844588 0.0047682617 - 1067800 0.0045779734 0.0027827298 0.0050001856 - 1067900 0.0042417169 0.0027237383 0.0047783199 - 1068000 0.0056787605 0.0024828195 0.0052334691 - 1068100 0.0059353986 0.0028029681 0.0056779268 - 1068200 0.0044727687 0.002924487 0.0050909843 - 1068300 0.005831936 0.0027612081 0.0055860521 - 1068400 0.0043533764 0.0026320975 0.0047407642 - 1068500 0.0057880229 0.0024978604 0.0053014341 - 1068600 0.0057365807 0.0020388752 0.0048175315 - 1068700 0.0052910634 0.0022031318 0.0047659906 - 1068800 0.0064654001 0.0028170835 0.0059487617 - 1068900 0.0045878083 0.0032811689 0.0055033886 - 1069000 0.0049800743 0.0027801098 0.0051923333 - 1069100 0.0046679996 0.0025181876 0.0047792499 - 1069200 0.0044618053 0.0017327119 0.0038938988 - 1069300 0.0038116456 0.0015180858 0.0033643516 - 1069400 0.0039335752 0.0018722093 0.0037775348 - 1069500 0.0051494146 0.001938108 0.0044323557 - 1069600 0.0044461151 0.0024778803 0.0046314673 - 1069700 0.0062141006 0.0023860154 0.0053959703 - 1069800 0.0067091416 0.0022180703 0.0054678108 - 1069900 0.0049835145 0.0023402862 0.0047541761 - 1070000 0.003682953 0.0025998111 0.0043837415 - 1070100 0.0044706102 0.0019022076 0.0040676595 - 1070200 0.005844165 0.0019072231 0.0047379905 - 1070300 0.0050964082 0.002200525 0.0046690977 - 1070400 0.0049611698 0.0022761776 0.0046792442 - 1070500 0.0038319172 0.0028136051 0.00466969 - 1070600 0.0036730169 0.0028883859 0.0046675034 - 1070700 0.005598575 0.0025701362 0.005281946 - 1070800 0.007484964 0.0022683349 0.0058938643 - 1070900 0.0042687366 0.0028643037 0.004931973 - 1071000 0.0046200037 0.0029875217 0.005225336 - 1071100 0.0055579145 0.0026213159 0.0053134307 - 1071200 0.0061021545 0.0022301124 0.0051858435 - 1071300 0.0054617713 0.0021597839 0.0048053294 - 1071400 0.0032741073 0.0022637534 0.0038496492 - 1071500 0.0043790948 0.0022033629 0.0043244869 - 1071600 0.0051281837 0.0021010726 0.0045850366 - 1071700 0.0043904939 0.0025936202 0.0047202657 - 1071800 0.0053387648 0.0030932876 0.0056792518 - 1071900 0.0065516798 0.0027998983 0.0059733682 - 1072000 0.0059552678 0.0027023453 0.0055869281 - 1072100 0.0059425762 0.0020332934 0.0049117288 - 1072200 0.0059463548 0.0020830808 0.0049633464 - 1072300 0.0058470068 0.0027795029 0.0056116468 - 1072400 0.0052839663 0.0028729709 0.005432392 - 1072500 0.0049315434 0.0027870366 0.005175753 - 1072600 0.0058698035 0.0026447414 0.0054879274 - 1072700 0.0055127353 0.0025056931 0.0051759243 - 1072800 0.006370666 0.0026674273 0.0057532187 - 1072900 0.0044177152 0.0024215995 0.0045614303 - 1073000 0.0042947762 0.0022283569 0.0043086391 - 1073100 0.0046906838 0.0022703413 0.0045423913 - 1073200 0.0047041404 0.0025142477 0.0047928157 - 1073300 0.0034514166 0.0026269133 0.0042986933 - 1073400 0.0065085288 0.0023934425 0.0055460112 - 1073500 0.0061174172 0.0026043912 0.0055675152 - 1073600 0.0047951799 0.0030919927 0.005414658 - 1073700 0.0076000464 0.0026579508 0.0063392233 - 1073800 0.0069264645 0.002706163 0.0060611693 - 1073900 0.0046299095 0.0029257534 0.0051683658 - 1074000 0.0053674834 0.0034473729 0.0060472477 - 1074100 0.0038936925 0.0037577365 0.0056437438 - 1074200 0.0059799725 0.0034188257 0.0063153748 - 1074300 0.0050837335 0.0028437468 0.0053061802 - 1074400 0.0052559988 0.0022050832 0.0047509576 - 1074500 0.0049198956 0.0023034264 0.0046865008 - 1074600 0.0045299432 0.0021370969 0.0043312881 - 1074700 0.0051216889 0.001780517 0.0042613351 - 1074800 0.0039887919 0.001806484 0.0037385551 - 1074900 0.0046432137 0.002014284 0.0042633406 - 1075000 0.0053522762 0.0024692315 0.0050617403 - 1075100 0.0042995741 0.0025792318 0.004661838 - 1075200 0.0056007671 0.0023316338 0.0050445054 - 1075300 0.0058112372 0.0025766208 0.0053914388 - 1075400 0.0037581538 0.0024082249 0.0042285806 - 1075500 0.0054067897 0.0024169922 0.005035906 - 1075600 0.0053876161 0.0026546878 0.0052643143 - 1075700 0.0047732148 0.0028792878 0.0051913137 - 1075800 0.0062756856 0.0030154041 0.0060551893 - 1075900 0.0053291246 0.0030932407 0.0056745354 - 1076000 0.0037451606 0.0025468615 0.0043609237 - 1076100 0.0055731402 0.0025652329 0.0052647227 - 1076200 0.0046541114 0.0028917112 0.0051460465 - 1076300 0.0047945322 0.0029389111 0.0052612627 - 1076400 0.0045376223 0.0030961292 0.00529404 - 1076500 0.0060245954 0.0030571803 0.0059753437 - 1076600 0.0065666797 0.0024033465 0.005584082 - 1076700 0.0044585111 0.0020850858 0.004244677 - 1076800 0.0050259096 0.0021037503 0.0045381752 - 1076900 0.004517216 0.0025253606 0.0047133871 - 1077000 0.0058184988 0.0029104177 0.005728753 - 1077100 0.0042568295 0.0031385046 0.0052004064 - 1077200 0.0046488275 0.0025823447 0.0048341205 - 1077300 0.0053147997 0.0024347093 0.0050090654 - 1077400 0.0049139489 0.0027841294 0.0051643233 - 1077500 0.0052737353 0.0032653728 0.0058198384 - 1077600 0.0049110962 0.0036155012 0.0059943134 - 1077700 0.0053438111 0.0035104136 0.0060988222 - 1077800 0.0054875029 0.0029817499 0.0056397592 - 1077900 0.0058752377 0.0030208154 0.0058666336 - 1078000 0.005022463 0.003602896 0.0060356515 - 1078100 0.0050301108 0.0035783781 0.0060148381 - 1078200 0.0049986179 0.0031954153 0.0056166208 - 1078300 0.0045141079 0.003561313 0.005747834 - 1078400 0.0048877816 0.0037896446 0.0061571638 - 1078500 0.0048377315 0.0034986031 0.0058418793 - 1078600 0.0047511969 0.0031997045 0.0055010655 - 1078700 0.0047245413 0.0030228882 0.0053113379 - 1078800 0.0049058976 0.0031776122 0.0055539064 - 1078900 0.0048460187 0.0032666028 0.0056138931 - 1079000 0.0047336415 0.0032013578 0.0054942154 - 1079100 0.0056347075 0.0031540874 0.0058833988 - 1079200 0.0063244884 0.0028355945 0.0058990185 - 1079300 0.0062209545 0.0029855291 0.0059988039 - 1079400 0.0049189622 0.0032107604 0.0055933827 - 1079500 0.0046984723 0.0028938558 0.0051696783 - 1079600 0.0071821467 0.0026490425 0.0061278948 - 1079700 0.0043954308 0.0032076955 0.0053367323 - 1079800 0.0062837609 0.0030542165 0.0060979132 - 1079900 0.0035804175 0.0030759134 0.0048101781 - 1080000 0.00413089 0.0025929534 0.0045938532 - 1080100 0.0064720667 0.0022263148 0.0053612221 - 1080200 0.0049039451 0.002406281 0.0047816294 - 1080300 0.0058499506 0.002542893 0.0053764628 - 1080400 0.0068680201 0.0023637122 0.0056904094 - 1080500 0.0068432802 0.0023583301 0.005673044 - 1080600 0.0051043323 0.0023137969 0.0047862079 - 1080700 0.0036361119 0.0024553934 0.0042166351 - 1080800 0.0050686804 0.0025085116 0.0049636536 - 1080900 0.0056685578 0.0026168808 0.0053625885 - 1081000 0.006285144 0.0027857389 0.0058301055 - 1081100 0.0066115043 0.002691254 0.0058937014 - 1081200 0.0047199328 0.0031120423 0.0053982598 - 1081300 0.0060021691 0.0028452056 0.0057525062 - 1081400 0.0059395421 0.0020962444 0.0049732101 - 1081500 0.0041509946 0.0020058129 0.0040164509 - 1081600 0.0047306847 0.0020368086 0.004328234 - 1081700 0.0042517241 0.0017678698 0.0038272987 - 1081800 0.0038830918 0.0016707911 0.0035516637 - 1081900 0.0061499979 0.0019014037 0.0048803089 - 1082000 0.0053069563 0.0024609679 0.0050315248 - 1082100 0.0061721772 0.0027669499 0.0057565983 - 1082200 0.0051514099 0.0033449617 0.0058401759 - 1082300 0.0069381534 0.0025696723 0.0059303404 - 1082400 0.0058283773 0.0028981662 0.0057212864 - 1082500 0.0042527905 0.0031421766 0.005202122 - 1082600 0.006291325 0.0029199973 0.0059673579 - 1082700 0.0063749642 0.0027457085 0.0058335818 - 1082800 0.0053867165 0.0024652256 0.0050744164 - 1082900 0.004526233 0.002508989 0.0047013831 - 1083000 0.0062218671 0.0024099527 0.0054236696 - 1083100 0.0039332786 0.0025421425 0.0044473244 - 1083200 0.0053251035 0.0024543846 0.0050337316 - 1083300 0.0055171858 0.0024383084 0.0051106952 - 1083400 0.0073011089 0.0023249905 0.0058614652 - 1083500 0.0066255735 0.0022984878 0.0055077499 - 1083600 0.0042253786 0.0025105389 0.0045572066 - 1083700 0.0061031018 0.0022635761 0.005219766 - 1083800 0.0053642938 0.002501247 0.0050995769 - 1083900 0.0042374529 0.0029500561 0.0050025724 - 1084000 0.0070899487 0.0022117555 0.0056459493 - 1084100 0.0052819776 0.0016432927 0.0042017506 - 1084200 0.0035519341 0.0015223978 0.0032428659 - 1084300 0.0054370929 0.0020647973 0.0046983892 - 1084400 0.005199213 0.0026951671 0.0052135359 - 1084500 0.004901397 0.0030029438 0.0053770579 - 1084600 0.0050176827 0.0027900435 0.0052204836 - 1084700 0.0040626743 0.0026848518 0.0046527096 - 1084800 0.0051023786 0.0026899918 0.0051614565 - 1084900 0.0041363238 0.0027096805 0.0047132124 - 1085000 0.0051984633 0.0024818649 0.0049998706 - 1085100 0.0049879299 0.0027960061 0.0052120346 - 1085200 0.0050963683 0.0025423165 0.0050108698 - 1085300 0.0056810978 0.0023327391 0.0050845209 - 1085400 0.003929703 0.0027566722 0.0046601221 - 1085500 0.0049665299 0.0027425427 0.0051482056 - 1085600 0.0055375709 0.0021395541 0.004821815 - 1085700 0.0043848892 0.0018988622 0.0040227929 - 1085800 0.0066533659 0.0022316966 0.0054544207 - 1085900 0.0060173732 0.0034272297 0.0063418948 - 1086000 0.0049067337 0.003172581 0.0055492801 - 1086100 0.0054230169 0.0021921553 0.0048189291 - 1086200 0.0051146639 0.0019398928 0.0044173081 - 1086300 0.0060094973 0.002334398 0.0052452482 - 1086400 0.0053635788 0.0023997769 0.0049977604 - 1086500 0.0065649857 0.0029721423 0.0061520573 - 1086600 0.0054509822 0.0029376332 0.0055779528 - 1086700 0.0067697855 0.002919432 0.0061985468 - 1086800 0.0038698382 0.0027073339 0.0045817868 - 1086900 0.0041462811 0.0025393404 0.0045476953 - 1087000 0.0039218087 0.0021702546 0.0040698807 - 1087100 0.0051017785 0.0021793002 0.0046504742 - 1087200 0.0046870121 0.0025643787 0.0048346502 - 1087300 0.0061004172 0.0027058036 0.0056606932 - 1087400 0.0044975843 0.003109418 0.0052879354 - 1087500 0.0048917646 0.0033787504 0.0057481989 - 1087600 0.0053630695 0.0029418973 0.0055396341 - 1087700 0.0036779683 0.0029262482 0.0047077641 - 1087800 0.0042476704 0.0027759393 0.0048334046 - 1087900 0.0044328727 0.0027920923 0.004939265 - 1088000 0.0044451138 0.0030057364 0.0051588384 - 1088100 0.0033832642 0.0034892546 0.0051280231 - 1088200 0.0052867194 0.0032730449 0.0058337996 - 1088300 0.005313392 0.0033817117 0.005955386 - 1088400 0.0052061788 0.0030114041 0.005533147 - 1088500 0.0066228439 0.0023470256 0.0055549656 - 1088600 0.0055471282 0.00221387 0.0049007602 - 1088700 0.0052273034 0.0024938962 0.0050258713 - 1088800 0.0042261537 0.0027704328 0.004817476 - 1088900 0.0041904178 0.0028947435 0.0049244772 - 1089000 0.0064554797 0.0029244896 0.0060513626 - 1089100 0.0044300513 0.0032489615 0.0053947676 - 1089200 0.0049959879 0.0035487045 0.0059686362 - 1089300 0.0061074032 0.0034910762 0.0064493497 - 1089400 0.0055831794 0.0030407135 0.0057450661 - 1089500 0.0058929272 0.0027509463 0.005605333 - 1089600 0.0046946959 0.0028189206 0.005092914 - 1089700 0.0037690347 0.0028420626 0.0046676888 - 1089800 0.0043982276 0.0030437195 0.005174111 - 1089900 0.0057188771 0.0031449167 0.0059149978 - 1090000 0.0042804412 0.0032502663 0.005323605 - 1090100 0.004624 0.0028172726 0.0050570226 - 1090200 0.0054208404 0.002574581 0.0052003006 - 1090300 0.004381194 0.0026126879 0.0047348287 - 1090400 0.0056822356 0.0024056565 0.0051579893 - 1090500 0.0044728531 0.0026230644 0.0047896026 - 1090600 0.0058636985 0.0028425754 0.0056828044 - 1090700 0.0052922545 0.0032845389 0.0058479747 - 1090800 0.0059587635 0.0032711927 0.0061574688 - 1090900 0.0050426757 0.0029143158 0.0053568618 - 1091000 0.0066291784 0.0026128168 0.0058238251 - 1091100 0.0062415851 0.0030065233 0.006029791 - 1091200 0.0047395576 0.0033559212 0.0056516444 - 1091300 0.0060363753 0.0030735504 0.0059974197 - 1091400 0.0056152549 0.0026535724 0.0053734615 - 1091500 0.0054639905 0.0023296178 0.0049762382 - 1091600 0.0044183066 0.0023990736 0.0045391908 - 1091700 0.0043174156 0.0024249343 0.0045161825 - 1091800 0.0054132335 0.0024531886 0.0050752236 - 1091900 0.0039395657 0.002534241 0.0044424681 - 1092000 0.0054842532 0.0023192122 0.0049756473 - 1092100 0.0055053252 0.0027242549 0.0053908968 - 1092200 0.0053012881 0.0033752722 0.0059430836 - 1092300 0.0047234863 0.0035138794 0.0058018181 - 1092400 0.0064323818 0.003321107 0.0064367919 - 1092500 0.0054843572 0.0037079042 0.0063643897 - 1092600 0.0078370494 0.0030336152 0.006829686 - 1092700 0.0063446346 0.002613754 0.0056869364 - 1092800 0.0059633842 0.0028710929 0.0057596071 - 1092900 0.0070269941 0.0031533841 0.0065570843 - 1093000 0.0042992649 0.0029021803 0.0049846367 - 1093100 0.0060839256 0.0028782594 0.0058251609 - 1093200 0.0056994562 0.0030218662 0.0057825403 - 1093300 0.0051146382 0.0033306376 0.0058080405 - 1093400 0.0083655337 0.002656526 0.0067085814 - 1093500 0.0051782097 0.0026098689 0.0051180643 - 1093600 0.0065426647 0.0027739553 0.0059430585 - 1093700 0.0045447284 0.0029828382 0.005184191 - 1093800 0.0064101173 0.002605975 0.0057108756 - 1093900 0.0058614236 0.0024542958 0.0052934229 - 1094000 0.0042904413 0.0025811201 0.0046593026 - 1094100 0.0056625542 0.0033440361 0.0060868358 - 1094200 0.0057784117 0.0036718478 0.0064707659 - 1094300 0.0055079029 0.0035276765 0.006195567 - 1094400 0.0056188048 0.0033436822 0.0060652908 - 1094500 0.0040676415 0.0031825821 0.005152846 - 1094600 0.0067734376 0.002647229 0.0059281128 - 1094700 0.0059217287 0.002564425 0.0054327623 - 1094800 0.0057097806 0.0026486609 0.0054143358 - 1094900 0.0044006018 0.0032307565 0.005362298 - 1095000 0.0044884359 0.0027571699 0.004931256 - 1095100 0.0048498768 0.00280179 0.005150949 - 1095200 0.006350535 0.0024003655 0.0054764058 - 1095300 0.0051251269 0.0025898814 0.0050723648 - 1095400 0.003691519 0.0027482362 0.0045363158 - 1095500 0.0057008243 0.0026220713 0.005383408 - 1095600 0.0056188682 0.0028694236 0.0055910629 - 1095700 0.005221882 0.0033289373 0.0058582864 - 1095800 0.0047047848 0.0032167767 0.0054956568 - 1095900 0.0046865817 0.003161965 0.0054320281 - 1096000 0.0055159007 0.0031809461 0.0058527105 - 1096100 0.0040095595 0.0032243972 0.0051665275 - 1096200 0.0043930547 0.0027103273 0.0048382132 - 1096300 0.0058256689 0.0025833607 0.0054051691 - 1096400 0.0047355783 0.0029756063 0.005269402 - 1096500 0.0063579513 0.0036096963 0.0066893289 - 1096600 0.006432794 0.00379917 0.0069150546 - 1096700 0.0040803141 0.0033797392 0.0053561413 - 1096800 0.0049613199 0.002858169 0.0052613083 - 1096900 0.0050754582 0.0026693845 0.0051278095 - 1097000 0.0060352652 0.0027035402 0.0056268718 - 1097100 0.007082164 0.0026357406 0.0060661638 - 1097200 0.0043619888 0.0030000695 0.0051129079 - 1097300 0.0049814198 0.0028316353 0.0052445105 - 1097400 0.0060979598 0.0029761349 0.0059298342 - 1097500 0.0054745878 0.0029114111 0.0055631646 - 1097600 0.0057292214 0.0026563798 0.0054314714 - 1097700 0.0071978013 0.0023953117 0.0058817468 - 1097800 0.0058154671 0.0023072287 0.0051240956 - 1097900 0.0053895188 0.0021798597 0.0047904078 - 1098000 0.0048657227 0.0018576008 0.0042144353 - 1098100 0.0042690898 0.0018168772 0.0038847176 - 1098200 0.0045405828 0.0019814854 0.0041808302 - 1098300 0.0047981163 0.0022366803 0.0045607679 - 1098400 0.0044396598 0.0022386456 0.0043891058 - 1098500 0.0040698196 0.0018875362 0.0038588551 - 1098600 0.0048147055 0.002000718 0.004332841 - 1098700 0.0060187487 0.0029066347 0.0058219661 - 1098800 0.0057693796 0.0035289047 0.0063234479 - 1098900 0.0071693028 0.002916203 0.0063888341 - 1099000 0.0073210081 0.0030789026 0.0066250159 - 1099100 0.0067435558 0.0029762179 0.0062426277 - 1099200 0.0048226972 0.0029145459 0.0052505398 - 1099300 0.0046461714 0.0029592078 0.0052096971 - 1099400 0.0069408269 0.0021730429 0.0055350059 - 1099500 0.0043041789 0.0019335274 0.0040183641 - 1099600 0.003603541 0.00216291 0.0039083752 - 1099700 0.003894492 0.0021533131 0.0040397077 - 1099800 0.005168519 0.0021102807 0.0046137821 - 1099900 0.0045393919 0.0022872039 0.0044859718 - 1100000 0.005991602 0.0028215728 0.005723755 - 1100100 0.0050655252 0.0029993638 0.0054529776 - 1100200 0.0055902586 0.0024816416 0.005189423 - 1100300 0.0074988604 0.0020600139 0.0056922744 - 1100400 0.0043779754 0.0027274697 0.0048480516 - 1100500 0.0049486275 0.0026323365 0.005029328 - 1100600 0.005717754 0.002607548 0.0053770851 - 1100700 0.0035280902 0.0030057222 0.0047146408 - 1100800 0.0052552356 0.0022842801 0.0048297848 - 1100900 0.0057624002 0.0019534868 0.0047446494 - 1101000 0.0065461063 0.0022116816 0.0053824519 - 1101100 0.0044729927 0.0027498418 0.0049164477 - 1101200 0.0053173352 0.0028275565 0.0054031408 - 1101300 0.0062939468 0.0027415691 0.0057901996 - 1101400 0.0060473494 0.0027084644 0.0056376493 - 1101500 0.0076713162 0.0024222086 0.0061380024 - 1101600 0.0055393709 0.0023420687 0.0050252015 - 1101700 0.005769938 0.0027323685 0.0055271822 - 1101800 0.0056879359 0.0028914594 0.0056465533 - 1101900 0.004281146 0.0030105743 0.0050842544 - 1102000 0.0062108899 0.0027505116 0.0057589114 - 1102100 0.0042766193 0.0034124381 0.0054839255 - 1102200 0.0070866685 0.0026569773 0.0060895823 - 1102300 0.0059960313 0.0021652996 0.0050696273 - 1102400 0.006073389 0.0025011958 0.0054429936 - 1102500 0.0067239677 0.0027330961 0.005990018 - 1102600 0.0057148376 0.0023671297 0.0051352542 - 1102700 0.0055588686 0.002208501 0.0049010779 - 1102800 0.0057283742 0.0024804578 0.005255139 - 1102900 0.0042399939 0.0021502968 0.0042040438 - 1103000 0.0056430688 0.0015586125 0.004291974 - 1103100 0.0051763224 0.0020368495 0.0045441307 - 1103200 0.0047321503 0.0020808634 0.0043729987 - 1103300 0.0044539193 0.002333621 0.0044909882 - 1103400 0.004527375 0.0025516773 0.0047446246 - 1103500 0.0050443504 0.0026124683 0.0050558255 - 1103600 0.0061479287 0.0028957526 0.0058736556 - 1103700 0.0052408946 0.0026595735 0.0051981318 - 1103800 0.0059141539 0.0026558015 0.0055204698 - 1103900 0.0059907394 0.0029483244 0.0058500887 - 1104000 0.004982474 0.0029546977 0.0053680835 - 1104100 0.0073602118 0.0023425188 0.0059076214 - 1104200 0.0057828528 0.0022520712 0.0050531405 - 1104300 0.0055333856 0.0023419635 0.0050221971 - 1104400 0.0060315657 0.0022093135 0.0051308531 - 1104500 0.0047213363 0.0027605439 0.0050474412 - 1104600 0.0069538672 0.0028847 0.0062529794 - 1104700 0.0049158793 0.0035468761 0.0059280051 - 1104800 0.0060768314 0.0035000048 0.0064434701 - 1104900 0.0069096594 0.0033658437 0.00671271 - 1105000 0.0064244297 0.0025905511 0.0057023842 - 1105100 0.0046026557 0.0027842294 0.0050136408 - 1105200 0.0036388043 0.002994907 0.0047574528 - 1105300 0.0077870325 0.0025917826 0.0063636265 - 1105400 0.0057526193 0.0027424675 0.0055288925 - 1105500 0.0051400807 0.002753312 0.0052430386 - 1105600 0.0040027181 0.0026940899 0.0046329065 - 1105700 0.0041962949 0.0029002116 0.0049327919 - 1105800 0.0044277254 0.0028368954 0.0049815749 - 1105900 0.0056800184 0.0030259142 0.0057771731 - 1106000 0.004715906 0.0033293001 0.005613567 - 1106100 0.0053016618 0.0029800702 0.0055480627 - 1106200 0.004759044 0.0022602746 0.0045654365 - 1106300 0.0051209233 0.0019345967 0.0044150439 - 1106400 0.0048572817 0.0018998365 0.0042525823 - 1106500 0.0041739278 0.002232467 0.0042542133 - 1106600 0.00445912 0.0025034246 0.0046633108 - 1106700 0.0056106446 0.0019190265 0.0046366825 - 1106800 0.0063655654 0.0019334817 0.0050168024 - 1106900 0.0068860158 0.0024513237 0.0057867376 - 1107000 0.0040029011 0.0025818941 0.0045207993 - 1107100 0.0055620575 0.0023053265 0.004999448 - 1107200 0.0054078069 0.0024843063 0.0051037127 - 1107300 0.0040787447 0.002713159 0.004688801 - 1107400 0.0049364509 0.0027653613 0.0051564547 - 1107500 0.0049182113 0.0027939281 0.0051761867 - 1107600 0.0063447058 0.0033471401 0.006420357 - 1107700 0.0054817401 0.0034237314 0.0060789493 - 1107800 0.005538563 0.0029211627 0.0056039042 - 1107900 0.0055796166 0.0029718666 0.0056744934 - 1108000 0.0065057892 0.0029371454 0.006088387 - 1108100 0.0051297066 0.002561892 0.0050465937 - 1108200 0.0050588149 0.0024788572 0.0049292207 - 1108300 0.0047802043 0.002681684 0.0049970955 - 1108400 0.0063243561 0.0022674154 0.0053307754 - 1108500 0.0058038146 0.0019768639 0.0047880866 - 1108600 0.0041419714 0.0018362636 0.0038425309 - 1108700 0.0046970636 0.0016418472 0.0039169874 - 1108800 0.0048032611 0.0018533547 0.0041799343 - 1108900 0.0052189894 0.0024763651 0.0050043131 - 1109000 0.0044299576 0.0028127601 0.0049585208 - 1109100 0.0051990741 0.0027628922 0.0052811937 - 1109200 0.0062447348 0.0031271589 0.0061519523 - 1109300 0.005239519 0.003407012 0.005944904 - 1109400 0.0061915785 0.0028100926 0.0058091384 - 1109500 0.004669854 0.0021393798 0.0044013404 - 1109600 0.0053710694 0.0024599835 0.0050615953 - 1109700 0.0043475318 0.0030414075 0.0051472432 - 1109800 0.0049280213 0.0029226095 0.0053096198 - 1109900 0.0044991705 0.0028915679 0.0050708536 - 1110000 0.0042017831 0.0028794884 0.0049147271 - 1110100 0.0059891207 0.0028923404 0.0057933207 - 1110200 0.0061235873 0.0029086248 0.0058747374 - 1110300 0.0057204854 0.0028717441 0.0056426042 - 1110400 0.0055783107 0.0029003033 0.0056022975 - 1110500 0.0066020431 0.0023540105 0.0055518751 - 1110600 0.0046055133 0.0021596553 0.0043904508 - 1110700 0.0042039683 0.0025462803 0.0045825774 - 1110800 0.00591305 0.0028137331 0.0056778667 - 1110900 0.0048127822 0.0030802342 0.0054114256 - 1111000 0.0062253191 0.0023251833 0.0053405722 - 1111100 0.0035526035 0.0020666596 0.0037874519 - 1111200 0.0054558046 0.0022146625 0.0048573179 - 1111300 0.0045353779 0.0024494886 0.0046463123 - 1111400 0.0043986653 0.0028053301 0.0049359336 - 1111500 0.004393291 0.002867982 0.0049959823 - 1111600 0.0062179306 0.0026386135 0.0056504237 - 1111700 0.0051220633 0.0027601392 0.0052411386 - 1111800 0.0072570875 0.0030809078 0.0065960596 - 1111900 0.0045708254 0.0032789128 0.0054929064 - 1112000 0.007134497 0.0028967331 0.0063525051 - 1112100 0.0057309567 0.0026336111 0.0054095432 - 1112200 0.0055190149 0.0025008303 0.0051741031 - 1112300 0.0077837574 0.002888359 0.0066586165 - 1112400 0.0046867737 0.0030217336 0.0052918896 - 1112500 0.0060998888 0.0027859074 0.005740541 - 1112600 0.004250596 0.0029630435 0.005021926 - 1112700 0.0057270844 0.0031149313 0.0058889878 - 1112800 0.0059949933 0.0029216089 0.0058254338 - 1112900 0.0038490955 0.0033003677 0.0051647733 - 1113000 0.0049005718 0.0029372453 0.0053109598 - 1113100 0.0074636184 0.0026301645 0.0062453547 - 1113200 0.0059426318 0.0032439437 0.006122406 - 1113300 0.0050525439 0.0037705819 0.0062179078 - 1113400 0.0061163791 0.0033813594 0.0063439806 - 1113500 0.0050377043 0.0033490719 0.0057892099 - 1113600 0.0064889473 0.002885276 0.0060283598 - 1113700 0.005297396 0.0028426061 0.0054085323 - 1113800 0.0065973159 0.0026799041 0.005875479 - 1113900 0.004461859 0.0029127513 0.0050739642 - 1114000 0.0046785 0.0027714446 0.005037593 - 1114100 0.0052176923 0.002746836 0.0052741557 - 1114200 0.0053826716 0.0025609802 0.0051682118 - 1114300 0.0056213693 0.0025951344 0.0053179852 - 1114400 0.0065630034 0.0026482467 0.0058272014 - 1114500 0.0060913688 0.0024537136 0.0054042203 - 1114600 0.0051503109 0.0025607417 0.0050554235 - 1114700 0.0041454833 0.002518074 0.0045260425 - 1114800 0.0046998443 0.0020204196 0.0042969067 - 1114900 0.0056620937 0.0017501652 0.0044927418 - 1115000 0.0077727034 0.0021252153 0.0058901185 - 1115100 0.0034333436 0.0027088295 0.0043718553 - 1115200 0.0050058601 0.0026338398 0.0050585533 - 1115300 0.0051960552 0.0023730127 0.004889852 - 1115400 0.0049552232 0.0025254066 0.0049255928 - 1115500 0.0057052902 0.0025194608 0.0052829607 - 1115600 0.0053390851 0.0022372035 0.0048233228 - 1115700 0.0059887923 0.0020338894 0.0049347106 - 1115800 0.0051627314 0.0023646213 0.0048653193 - 1115900 0.0045640861 0.0025179668 0.004728696 - 1116000 0.0060555999 0.0022952809 0.0052284621 - 1116100 0.0041919601 0.0026195274 0.0046500081 - 1116200 0.0051495525 0.0025018039 0.0049961184 - 1116300 0.005519823 0.0022266146 0.0049002788 - 1116400 0.0051210825 0.0020035653 0.0044840897 - 1116500 0.0062988818 0.0022884472 0.005339468 - 1116600 0.0061087928 0.0024641851 0.0054231316 - 1116700 0.0046177278 0.0021939512 0.0044306631 - 1116800 0.0041769198 0.0019891339 0.0040123294 - 1116900 0.006167003 0.0019083148 0.0048954569 - 1117000 0.0042236196 0.0023301626 0.0043759784 - 1117100 0.0062767353 0.0023550938 0.0053953875 - 1117200 0.0071159125 0.001978103 0.005424873 - 1117300 0.0057704407 0.0018903744 0.0046854316 - 1117400 0.0033183309 0.0019777585 0.003585075 - 1117500 0.0034051181 0.0025133751 0.0041627292 - 1117600 0.0045513233 0.0021574214 0.0043619686 - 1117700 0.0052935223 0.0020450649 0.0046091147 - 1117800 0.0043975907 0.0022937522 0.0044238352 - 1117900 0.0063904534 0.0020517868 0.0051471627 - 1118000 0.0052364858 0.0020489557 0.0045853785 - 1118100 0.0043162274 0.0018152976 0.0039059702 - 1118200 0.0047738302 0.0019587773 0.0042711013 - 1118300 0.004757437 0.0025165433 0.0048209269 - 1118400 0.0048395872 0.0027462713 0.0050904463 - 1118500 0.0050019611 0.0024198526 0.0048426775 - 1118600 0.0035624735 0.0026980004 0.0044235735 - 1118700 0.0067613143 0.0029532848 0.0062282964 - 1118800 0.0047228201 0.0034329798 0.0057205958 - 1118900 0.0058421184 0.0029928159 0.005822592 - 1119000 0.0049576564 0.0023965506 0.0047979155 - 1119100 0.0034416312 0.0024797063 0.0041467464 - 1119200 0.0046850377 0.0023303402 0.0045996553 - 1119300 0.0052078449 0.00183094 0.0043534898 - 1119400 0.004644418 0.0016409615 0.0038906015 - 1119500 0.0046271457 0.0018955022 0.0041367759 - 1119600 0.0041463097 0.0020388906 0.0040472593 - 1119700 0.0048725502 0.0020397247 0.0043998662 - 1119800 0.0046815582 0.0018494379 0.0041170677 - 1119900 0.0053195369 0.0016650809 0.0042417315 - 1120000 0.0044638291 0.0020760454 0.0042382126 - 1120100 0.004469075 0.0020868379 0.0042515461 - 1120200 0.0042341547 0.0018719823 0.003922901 - 1120300 0.0036386296 0.002030855 0.0037933162 - 1120400 0.0064265565 0.0020943397 0.005207203 - 1120500 0.0066591907 0.0022433355 0.005468881 - 1120600 0.0045775824 0.0022661987 0.0044834652 - 1120700 0.0046390369 0.0020878846 0.0043349181 - 1120800 0.0067438183 0.0020808827 0.0053474197 - 1120900 0.0059543147 0.001750714 0.0046348351 - 1121000 0.0061220649 0.0017307582 0.0046961334 - 1121100 0.0033660968 0.0020448046 0.0036752578 - 1121200 0.0054772212 0.0019817192 0.0046347482 - 1121300 0.0035526849 0.0021489675 0.0038697993 - 1121400 0.0051126388 0.0024042 0.0048806344 - 1121500 0.0044333375 0.0026802185 0.0048276164 - 1121600 0.0048808525 0.0023961655 0.0047603284 - 1121700 0.005102982 0.0024768871 0.004948644 - 1121800 0.0047777656 0.0025316264 0.0048458566 - 1121900 0.0039108025 0.002762688 0.004656983 - 1122000 0.0042828427 0.0026290946 0.0047035965 - 1122100 0.0058676683 0.0022950888 0.0051372406 - 1122200 0.0058639977 0.0022225089 0.0050628828 - 1122300 0.0040040898 0.002282767 0.004222248 - 1122400 0.0070540323 0.0020981883 0.0055149852 - 1122500 0.0042517997 0.0022902103 0.0043496758 - 1122600 0.0041411567 0.0026633962 0.004669269 - 1122700 0.0064431414 0.0027870392 0.0059079358 - 1122800 0.004849307 0.0029201935 0.0052690766 - 1122900 0.0062730927 0.0029414558 0.0059799851 - 1123000 0.0048430293 0.0029907684 0.0053366107 - 1123100 0.0035634674 0.0035276685 0.005253723 - 1123200 0.0053990425 0.0033959872 0.0060111484 - 1123300 0.0048499045 0.0028202987 0.0051694711 - 1123400 0.0057250731 0.0027939386 0.0055670209 - 1123500 0.0062777701 0.0028752902 0.0059160851 - 1123600 0.006419634 0.0030133771 0.0061228873 - 1123700 0.0064464662 0.0028294986 0.0059520057 - 1123800 0.0048177011 0.0032187242 0.0055522982 - 1123900 0.0053172438 0.003386106 0.005961646 - 1124000 0.0049536166 0.0031748826 0.0055742906 - 1124100 0.0043508357 0.0034000784 0.0055075145 - 1124200 0.0057146728 0.0030273085 0.0057953532 - 1124300 0.0048722754 0.0021931561 0.0045531645 - 1124400 0.0056537312 0.0021740404 0.0049125664 - 1124500 0.0038434346 0.0023524702 0.0042141338 - 1124600 0.0057773022 0.0026292496 0.0054276304 - 1124700 0.0044487795 0.0028939264 0.005048804 - 1124800 0.0052577368 0.0023432951 0.0048900114 - 1124900 0.0044307009 0.0019914533 0.0041375741 - 1125000 0.0049754345 0.0018164568 0.0042264329 - 1125100 0.0048936445 0.0018742551 0.0042446142 - 1125200 0.0045839548 0.0020350977 0.0042554509 - 1125300 0.0044937451 0.0019347001 0.0041113579 - 1125400 0.0044921595 0.0017968958 0.0039727856 - 1125500 0.0053508522 0.0015407948 0.0041326139 - 1125600 0.0054916355 0.001982856 0.0046428669 - 1125700 0.0040330866 0.0023768527 0.004330379 - 1125800 0.0056965677 0.0021504936 0.0049097685 - 1125900 0.0049613874 0.0018191145 0.0042222866 - 1126000 0.005100772 0.0017902025 0.004260889 - 1126100 0.0049466069 0.0019919154 0.0043879281 - 1126200 0.0039808296 0.0021888208 0.0041170351 - 1126300 0.0058040337 0.0024938039 0.0053051328 - 1126400 0.0047554511 0.0024425025 0.0047459242 - 1126500 0.0049186823 0.0022966247 0.0046791114 - 1126600 0.0051539093 0.0022966779 0.0047931027 - 1126700 0.0059964275 0.0022608342 0.0051653538 - 1126800 0.006373339 0.0022071396 0.0052942256 - 1126900 0.0040377024 0.0031021856 0.0050579477 - 1127000 0.0048268246 0.0030383962 0.0053763894 - 1127100 0.0040887107 0.0023748909 0.0043553601 - 1127200 0.005146414 0.0022876806 0.0047804749 - 1127300 0.0053639923 0.0025736865 0.0051718703 - 1127400 0.0057177598 0.0028185099 0.0055880498 - 1127500 0.0051573895 0.0027891926 0.0052873031 - 1127600 0.0043687495 0.0030341861 0.0051502991 - 1127700 0.0064834901 0.0029172103 0.0060576509 - 1127800 0.0049592445 0.0027902871 0.0051924211 - 1127900 0.0060249661 0.0023578618 0.0052762047 - 1128000 0.0055681941 0.0023378738 0.0050349678 - 1128100 0.0055507674 0.0026383758 0.0053270288 - 1128200 0.0059521439 0.0028025264 0.0056855961 - 1128300 0.004542843 0.0023843268 0.0045847664 - 1128400 0.0045249636 0.0024192494 0.0046110286 - 1128500 0.005428913 0.0023932526 0.0050228824 - 1128600 0.0057016471 0.0020499638 0.0048116991 - 1128700 0.0053989465 0.0020597678 0.0046748825 - 1128800 0.0059949082 0.00187658 0.0047803636 - 1128900 0.0036698125 0.0018608379 0.0036384033 - 1129000 0.0040045207 0.001965745 0.0039054348 - 1129100 0.0041111786 0.0021296467 0.0041209989 - 1129200 0.004428244 0.0018543296 0.0039992603 - 1129300 0.0041130019 0.0018402294 0.0038324647 - 1129400 0.0059280141 0.001535005 0.0044063868 - 1129500 0.0049854461 0.0018838907 0.0042987162 - 1129600 0.0056838182 0.0019430536 0.004696153 - 1129700 0.0049260912 0.0020110878 0.0043971632 - 1129800 0.0037792077 0.0026032696 0.0044338234 - 1129900 0.0092903375 0.0022446137 0.0067446209 - 1130000 0.0071727897 0.0023438992 0.0058182192 - 1130100 0.0047729598 0.0028365257 0.0051484281 - 1130200 0.0044948817 0.0030416691 0.0052188774 - 1130300 0.0059845982 0.0032434583 0.0061422481 - 1130400 0.0037997161 0.0029790204 0.0048195079 - 1130500 0.0046746905 0.0030231297 0.0052874329 - 1130600 0.0060855439 0.0026444695 0.0055921548 - 1130700 0.0057220403 0.0023969026 0.0051685159 - 1130800 0.0052709218 0.0025276501 0.0050807529 - 1130900 0.005930761 0.0023715632 0.0052442755 - 1131000 0.0068947365 0.0018801823 0.0052198203 - 1131100 0.0046048901 0.0020515075 0.0042820011 - 1131200 0.0052443648 0.0018972692 0.0044375083 - 1131300 0.0061898383 0.0019176224 0.0049158254 - 1131400 0.007276682 0.001730895 0.0052555378 - 1131500 0.004736313 0.0019458369 0.0042399885 - 1131600 0.0048378441 0.0017806011 0.0041239318 - 1131700 0.0054226114 0.0020329675 0.0046595449 - 1131800 0.0063813903 0.002365146 0.0054561319 - 1131900 0.0046646189 0.0028605455 0.0051199703 - 1132000 0.0061067643 0.0027505798 0.0057085437 - 1132100 0.0045950579 0.0031127224 0.0053384536 - 1132200 0.0051791691 0.0030967707 0.0056054307 - 1132300 0.005756028 0.0026704394 0.0054585154 - 1132400 0.0051868515 0.0022424932 0.0047548744 - 1132500 0.0038081643 0.0023206964 0.0041652759 - 1132600 0.004017069 0.0025793955 0.0045251633 - 1132700 0.0044857237 0.0029310032 0.0051037756 - 1132800 0.0067974446 0.0024922917 0.005784804 - 1132900 0.005318313 0.0026365893 0.0052126471 - 1133000 0.0048777784 0.0027148725 0.0050775464 - 1133100 0.0039737055 0.0026241037 0.0045488673 - 1133200 0.0046920138 0.0026337053 0.0049063995 - 1133300 0.0065746946 0.0019987642 0.0051833819 - 1133400 0.0049969322 0.0020182263 0.0044386154 - 1133500 0.0044596953 0.0021717284 0.0043318933 - 1133600 0.0048443667 0.0026703531 0.0050168432 - 1133700 0.0067524272 0.0026803801 0.005951087 - 1133800 0.006077686 0.0031234238 0.006067303 - 1133900 0.0063143095 0.0028867496 0.0059452433 - 1134000 0.0052392593 0.0025298732 0.0050676394 - 1134100 0.0048002399 0.0021696776 0.0044947938 - 1134200 0.0050572431 0.0021992034 0.0046488055 - 1134300 0.0048731409 0.0024642864 0.004824714 - 1134400 0.0043047554 0.0025640256 0.0046491415 - 1134500 0.0052255753 0.002372054 0.0049031921 - 1134600 0.0031178221 0.0024094554 0.0039196505 - 1134700 0.0044015147 0.0024269397 0.0045589234 - 1134800 0.0033238445 0.0024320706 0.0040420577 - 1134900 0.004194843 0.0025241635 0.0045560405 - 1135000 0.0037101822 0.0025068941 0.0043040136 - 1135100 0.0055116838 0.0025373396 0.0052070615 - 1135200 0.0041575901 0.0026237589 0.0046375916 - 1135300 0.0057561629 0.0032163866 0.006004528 - 1135400 0.0072900048 0.0029171034 0.0064481995 - 1135500 0.0060000158 0.0030302729 0.0059365306 - 1135600 0.0058020688 0.0026631488 0.0054735259 - 1135700 0.0058279284 0.0022712096 0.0050941124 - 1135800 0.0060632932 0.0027881186 0.0057250262 - 1135900 0.005640887 0.003176418 0.0059087227 - 1136000 0.0046643868 0.0027777878 0.0050371001 - 1136100 0.005054532 0.0023652102 0.0048134992 - 1136200 0.0041459412 0.0020396758 0.0040478661 - 1136300 0.0055293795 0.0022452614 0.0049235546 - 1136400 0.0047179597 0.002881262 0.0051665238 - 1136500 0.0049248434 0.0027086224 0.0050940934 - 1136600 0.0052963933 0.0028196874 0.0053851279 - 1136700 0.0046928838 0.0027364285 0.0050095442 - 1136800 0.0057326002 0.002394365 0.0051710932 - 1136900 0.0038948981 0.0021896122 0.0040762034 - 1137000 0.0028945288 0.0026541865 0.0040562239 - 1137100 0.0043781798 0.0028407502 0.0049614311 - 1137200 0.0069554365 0.0025825056 0.0059515452 - 1137300 0.00452629 0.0022532396 0.0044456614 - 1137400 0.0046279734 0.0024334904 0.0046751651 - 1137500 0.004351536 0.0024884751 0.0045962503 - 1137600 0.0037869838 0.0023028259 0.0041371461 - 1137700 0.0055295977 0.0020823934 0.0047607922 - 1137800 0.0038467064 0.0020212928 0.0038845412 - 1137900 0.0055221435 0.0023685114 0.0050432996 - 1138000 0.0039674752 0.0028974309 0.0048191767 - 1138100 0.0052700656 0.0024208576 0.0049735457 - 1138200 0.0044167752 0.0023445886 0.0044839641 - 1138300 0.005636097 0.0025104928 0.0052404773 - 1138400 0.005037631 0.0031525233 0.0055926258 - 1138500 0.0041855768 0.0031913415 0.0052187302 - 1138600 0.0065921315 0.0030949552 0.0062880188 - 1138700 0.0061945647 0.0025664285 0.0055669208 - 1138800 0.0064623825 0.0028272715 0.005957488 - 1138900 0.0034648015 0.0033808311 0.0050590944 - 1139000 0.0044857387 0.0027614942 0.0049342739 - 1139100 0.0064566944 0.0023789154 0.0055063768 - 1139200 0.0055943762 0.0023901095 0.0050998855 - 1139300 0.0056841484 0.0023423223 0.0050955816 - 1139400 0.0040183559 0.0022154101 0.0041618013 - 1139500 0.0055868231 0.0020725301 0.0047786476 - 1139600 0.0047389599 0.0021389583 0.004434392 - 1139700 0.0049494874 0.0027890667 0.0051864746 - 1139800 0.0069506112 0.0024615196 0.0058282218 - 1139900 0.0048973033 0.0020186337 0.004390765 - 1140000 0.0060081604 0.0020201391 0.0049303418 - 1140100 0.0048438413 0.002255988 0.0046022236 - 1140200 0.0060653977 0.0023438986 0.0052818256 - 1140300 0.0048104365 0.0024028173 0.0047328725 - 1140400 0.0039991755 0.0024701378 0.0044072385 - 1140500 0.0048700301 0.0024254186 0.0047843394 - 1140600 0.0069221784 0.0023357184 0.0056886486 - 1140700 0.0060691426 0.0027869742 0.0057267152 - 1140800 0.0048910647 0.0034900842 0.0058591936 - 1140900 0.0040398267 0.0038232433 0.0057800343 - 1141000 0.0042180412 0.0038243315 0.0058674452 - 1141100 0.0059231824 0.002839534 0.0057085755 - 1141200 0.005354011 0.0022931714 0.0048865205 - 1141300 0.0051783931 0.0021378174 0.0046461015 - 1141400 0.0052849808 0.0020395781 0.0045994907 - 1141500 0.0051487452 0.0020115977 0.0045055211 - 1141600 0.0064735056 0.0025616568 0.0056972611 - 1141700 0.0067311662 0.0025635414 0.0058239501 - 1141800 0.005132103 0.002553306 0.0050391685 - 1141900 0.0041027243 0.0024260529 0.00441331 - 1142000 0.0056809702 0.002295273 0.0050469929 - 1142100 0.0048483519 0.0025983382 0.0049467587 - 1142200 0.0038145108 0.0025929405 0.0044405942 - 1142300 0.0055250683 0.0023849663 0.0050611713 - 1142400 0.0040095032 0.0024642064 0.0044063095 - 1142500 0.0036528503 0.0026264631 0.0043958125 - 1142600 0.0048429037 0.0023045779 0.0046503594 - 1142700 0.0045429605 0.0020963047 0.0042968012 - 1142800 0.0061348102 0.001664454 0.0046360027 - 1142900 0.0044486375 0.0017260722 0.003880881 - 1143000 0.0046413341 0.0017294928 0.003977639 - 1143100 0.004661328 0.002147277 0.0044051078 - 1143200 0.0049650758 0.0022086045 0.0046135631 - 1143300 0.0052880292 0.0019103406 0.0044717297 - 1143400 0.0052014909 0.0021098644 0.0046293365 - 1143500 0.0055887642 0.0025796942 0.0052867518 - 1143600 0.0055839114 0.0023187104 0.0050234175 - 1143700 0.0052810842 0.0017850873 0.0043431124 - 1143800 0.004990785 0.0017853719 0.0042027834 - 1143900 0.0033289232 0.0020039866 0.0036164338 - 1144000 0.0035391305 0.0017679694 0.0034822357 - 1144100 0.0045314249 0.0020405056 0.0042354145 - 1144200 0.0052419059 0.0021604978 0.004699546 - 1144300 0.0039735865 0.0020807649 0.0040054709 - 1144400 0.0056485876 0.0020263179 0.0047623525 - 1144500 0.0064180831 0.0019639866 0.0050727455 - 1144600 0.0056327825 0.002239834 0.004968213 - 1144700 0.0040408967 0.0026488634 0.0046061727 - 1144800 0.0041419951 0.0025415288 0.0045478077 - 1144900 0.0053995326 0.00236156 0.0049769586 - 1145000 0.0064408989 0.0021087864 0.0052285968 - 1145100 0.0047141744 0.0018330811 0.0041165093 - 1145200 0.0058855252 0.0021813025 0.0050321038 - 1145300 0.0055913673 0.0024222387 0.0051305573 - 1145400 0.0057917742 0.0027683887 0.0055737793 - 1145500 0.004572236 0.0025683676 0.0047830444 - 1145600 0.005489683 0.0030352154 0.0056942806 - 1145700 0.0044046618 0.0033050713 0.0054385793 - 1145800 0.0057185236 0.0030036789 0.0057735888 - 1145900 0.0064315575 0.0024926004 0.0056078861 - 1146000 0.0034863621 0.0023780838 0.0040667904 - 1146100 0.0047479772 0.002209847 0.0045096485 - 1146200 0.0053816828 0.0021303573 0.0047371099 - 1146300 0.0046908666 0.0028590413 0.0051311798 - 1146400 0.0050655753 0.003205932 0.0056595701 - 1146500 0.0057557474 0.0031469046 0.0059348447 - 1146600 0.0046373063 0.0029709954 0.0052171906 - 1146700 0.0044204311 0.0028087058 0.0049498521 - 1146800 0.0042089964 0.0028495072 0.0048882398 - 1146900 0.0064497306 0.0023582928 0.0054823811 - 1147000 0.0070101159 0.0021117471 0.005507272 - 1147100 0.0037115607 0.0024469689 0.004244756 - 1147200 0.0068034881 0.0021093185 0.0054047581 - 1147300 0.0054872021 0.0018853208 0.0045431843 - 1147400 0.0049567945 0.0018875303 0.0042884776 - 1147500 0.0041831361 0.0019190025 0.003945209 - 1147600 0.005534308 0.0015985132 0.0042791936 - 1147700 0.0037389826 0.0014457724 0.0032568422 - 1147800 0.0040270568 0.0016509832 0.0036015888 - 1147900 0.0046347787 0.0018677006 0.0041126715 - 1148000 0.0040695851 0.0018336304 0.0038048357 - 1148100 0.0043609626 0.0021018722 0.0042142134 - 1148200 0.0061600166 0.0020763864 0.0050601444 - 1148300 0.004122537 0.0021940581 0.004190912 - 1148400 0.0041961177 0.0020782247 0.0041107192 - 1148500 0.0054746186 0.0016956954 0.0043474638 - 1148600 0.0047176508 0.0019699054 0.0042550175 - 1148700 0.0056169718 0.0021662702 0.0048869909 - 1148800 0.005319238 0.0026655882 0.005242094 - 1148900 0.0059076752 0.0026971705 0.0055587007 - 1149000 0.0061821927 0.0029378161 0.0059323157 - 1149100 0.004627763 0.0029031071 0.0051446797 - 1149200 0.0050339947 0.0027509186 0.0051892598 - 1149300 0.0047412975 0.0025125938 0.0048091597 - 1149400 0.0050014719 0.0021590348 0.0045816228 - 1149500 0.0048325291 0.0017321232 0.0040728795 - 1149600 0.0065474606 0.0021118484 0.0052832746 - 1149700 0.004934817 0.0024773103 0.0048676123 - 1149800 0.0049132583 0.0019481887 0.0043280482 - 1149900 0.0049227776 0.0018385922 0.0042230625 - 1150000 0.004463006 0.0016429621 0.0038047306 - 1150100 0.0042063395 0.0015992787 0.0036367244 - 1150200 0.0056543585 0.0020034111 0.004742241 - 1150300 0.0053451622 0.0023993574 0.0049884204 - 1150400 0.0042737151 0.0025646748 0.0046347556 - 1150500 0.005469964 0.0027067461 0.0053562599 - 1150600 0.0058441675 0.0027847815 0.0056155501 - 1150700 0.0050601939 0.0024704898 0.0049215212 - 1150800 0.0049544684 0.0022731289 0.0046729495 - 1150900 0.0056828075 0.0024480259 0.0052006357 - 1151000 0.0067327591 0.0029036662 0.0061648465 - 1151100 0.0047833804 0.0030969221 0.005413872 - 1151200 0.0062155971 0.0025157406 0.0055264205 - 1151300 0.0050750297 0.0022496955 0.004707913 - 1151400 0.0053811112 0.0023982762 0.0050047519 - 1151500 0.0045474608 0.0028874092 0.0050900855 - 1151600 0.0047204352 0.0029783471 0.0052648079 - 1151700 0.0046256848 0.0024319571 0.0046725231 - 1151800 0.0038990487 0.0021065752 0.0039951769 - 1151900 0.0049082795 0.0020635624 0.0044410103 - 1152000 0.0044721368 0.002517005 0.0046831963 - 1152100 0.0046331998 0.0022642517 0.0045084578 - 1152200 0.0062709569 0.0021277085 0.0051652032 - 1152300 0.0050871865 0.0021558777 0.0046199836 - 1152400 0.0078327636 0.0019303702 0.0057243651 - 1152500 0.0067162473 0.0020356992 0.0052888815 - 1152600 0.0045632633 0.0023332814 0.0045436121 - 1152700 0.0054022418 0.0023111839 0.0049278948 - 1152800 0.0051404923 0.0022776969 0.0047676229 - 1152900 0.005410548 0.0022727145 0.0048934487 - 1153000 0.0033356045 0.0026712951 0.0042869785 - 1153100 0.005308631 0.0023333334 0.0049047015 - 1153200 0.0042502864 0.0026002696 0.004659002 - 1153300 0.0044371689 0.0029815279 0.0051307816 - 1153400 0.0046751321 0.0032048231 0.0054693402 - 1153500 0.0045475933 0.0029934218 0.0051961623 - 1153600 0.0056811283 0.0024302611 0.0051820576 - 1153700 0.0047596739 0.0020725254 0.0043779925 - 1153800 0.0049513328 0.0019882906 0.0043865924 - 1153900 0.0042089108 0.0023100833 0.0043487744 - 1154000 0.0051241546 0.0024838021 0.0049658145 - 1154100 0.004148685 0.0025244875 0.0045340068 - 1154200 0.0030936242 0.0023448182 0.0038432925 - 1154300 0.0055907764 0.0020982963 0.0048063287 - 1154400 0.0033639279 0.0023536402 0.0039830428 - 1154500 0.005775588 0.002322239 0.0051197894 - 1154600 0.006807368 0.0019288445 0.0052261634 - 1154700 0.0041662545 0.0019925029 0.0040105324 - 1154800 0.0062519183 0.002435379 0.005463652 - 1154900 0.0044657432 0.0028550737 0.0050181681 - 1155000 0.0064057432 0.0025670144 0.0056697963 - 1155100 0.00584164 0.0022505298 0.0050800742 - 1155200 0.004591415 0.0021340382 0.0043580048 - 1155300 0.0037893327 0.0023898363 0.0042252943 - 1155400 0.0058423898 0.0024319363 0.0052618439 - 1155500 0.0058690804 0.0027719697 0.0056148056 - 1155600 0.0040446518 0.0029840043 0.0049431326 - 1155700 0.0063385443 0.0030291639 0.0060993963 - 1155800 0.0047188443 0.0028375141 0.0051232043 - 1155900 0.0056731312 0.0023122165 0.0050601394 - 1156000 0.0047967701 0.0025346972 0.0048581327 - 1156100 0.004742185 0.0026980564 0.0049950523 - 1156200 0.0062806427 0.0022128942 0.0052550806 - 1156300 0.005752198 0.0023934842 0.0051797051 - 1156400 0.0054382789 0.0024522381 0.0050864044 - 1156500 0.0054639354 0.0024890812 0.0051356749 - 1156600 0.0053616253 0.0025512007 0.0051482379 - 1156700 0.0051434637 0.0025540462 0.0050454114 - 1156800 0.0042257554 0.0029251492 0.0049719995 - 1156900 0.0047665581 0.0031324847 0.0054412863 - 1157000 0.0067044008 0.0029561489 0.006203593 - 1157100 0.0042689636 0.0031678353 0.0052356146 - 1157200 0.0040518559 0.0032194132 0.0051820308 - 1157300 0.0052178027 0.0027988205 0.0053261937 - 1157400 0.0066043359 0.0027000523 0.0058990275 - 1157500 0.006079544 0.002746934 0.0056917131 - 1157600 0.0050606169 0.002901775 0.0053530114 - 1157700 0.0064603918 0.0030100238 0.0061392761 - 1157800 0.0053001861 0.0039106169 0.0064778945 - 1157900 0.0052000787 0.0040684566 0.0065872447 - 1158000 0.0057580036 0.0033320745 0.0061211075 - 1158100 0.0047785153 0.0027090016 0.0050235949 - 1158200 0.0052707945 0.0023323705 0.0048854116 - 1158300 0.0048516238 0.0019314777 0.004281483 - 1158400 0.0049688433 0.0018769058 0.0042836893 - 1158500 0.004519836 0.002230922 0.0044202176 - 1158600 0.0042537213 0.0024296025 0.0044899988 - 1158700 0.005228664 0.0021030758 0.00463571 - 1158800 0.0054164343 0.0018861956 0.004509781 - 1158900 0.0034716845 0.002509759 0.0041913562 - 1159000 0.0045915777 0.0023593109 0.0045833564 - 1159100 0.0047700178 0.002063104 0.0043735814 - 1159200 0.004393079 0.0022659601 0.0043938577 - 1159300 0.0045198018 0.0024125764 0.0046018554 - 1159400 0.0051428213 0.0022100385 0.0047010925 - 1159500 0.0052661664 0.0023362145 0.0048870138 - 1159600 0.0055894649 0.0024125218 0.0051199189 - 1159700 0.0046727592 0.0021117032 0.004375071 - 1159800 0.0051435457 0.001855243 0.004346648 - 1159900 0.0038777256 0.0020174798 0.0038957531 - 1160000 0.0051413829 0.0021263973 0.0046167547 - 1160100 0.0055307658 0.0022768119 0.0049557766 - 1160200 0.0035424441 0.0024968603 0.0042127317 - 1160300 0.0059435967 0.0024692376 0.0053481673 - 1160400 0.0041756292 0.0029479272 0.0049704976 - 1160500 0.0049589139 0.0029675708 0.0053695447 - 1160600 0.0043712388 0.0029440476 0.0050613664 - 1160700 0.0045163172 0.0025657061 0.0047532972 - 1160800 0.0051944969 0.0021255825 0.0046416669 - 1160900 0.0067156297 0.0025178324 0.0057707155 - 1161000 0.004056431 0.0031259619 0.0050907956 - 1161100 0.0058931919 0.0025434951 0.0053980099 - 1161200 0.0054224487 0.0022502999 0.0048767985 - 1161300 0.0038735843 0.0022187697 0.0040950371 - 1161400 0.0048544085 0.002012969 0.0043643231 - 1161500 0.0054645696 0.001985245 0.0046321459 - 1161600 0.0051928536 0.0027684766 0.0052837651 - 1161700 0.0046319851 0.0031193095 0.0053629273 - 1161800 0.0060638797 0.002475454 0.0054126457 - 1161900 0.005199675 0.0021923891 0.0047109817 - 1162000 0.004609249 0.0028669194 0.0050995244 - 1162100 0.0052152847 0.0030444007 0.0055705542 - 1162200 0.0049732691 0.00316177 0.0055706973 - 1162300 0.0043144549 0.0025844113 0.0046742254 - 1162400 0.0049420528 0.0021909709 0.0045847778 - 1162500 0.0048188898 0.0023145201 0.0046486698 - 1162600 0.0048454528 0.0027245295 0.0050715457 - 1162700 0.0043467401 0.0028178892 0.0049233414 - 1162800 0.005277177 0.0024147811 0.0049709137 - 1162900 0.0064408747 0.0024004291 0.0055202277 - 1163000 0.0047007331 0.0029561356 0.0052330532 - 1163100 0.00384003 0.0030524672 0.0049124817 - 1163200 0.0050005668 0.0031115352 0.0055336847 - 1163300 0.0038528077 0.0027836992 0.0046499029 - 1163400 0.0048839398 0.0024628476 0.004828506 - 1163500 0.0042905247 0.0019774004 0.0040556233 - 1163600 0.0030253242 0.0019848756 0.003450267 - 1163700 0.0041910011 0.0020495388 0.004079555 - 1163800 0.0055929031 0.002375368 0.0050844304 - 1163900 0.0035780342 0.0026764014 0.0044095117 - 1164000 0.0046883122 0.0020709336 0.0043418348 - 1164100 0.0049748143 0.002316272 0.0047259477 - 1164200 0.0040163357 0.0023203852 0.0042657977 - 1164300 0.0054430167 0.0022088405 0.0048453017 - 1164400 0.0046973612 0.0020902446 0.004365529 - 1164500 0.0049222902 0.002044263 0.0044284973 - 1164600 0.006837137 0.0018565641 0.0051683023 - 1164700 0.0028880519 0.0024721747 0.0038710748 - 1164800 0.0046019881 0.0025122619 0.0047413499 - 1164900 0.0045414854 0.0025276193 0.0047274013 - 1165000 0.0053724376 0.0025158496 0.0051181241 - 1165100 0.0048636324 0.0025720036 0.0049278255 - 1165200 0.0054537349 0.002452536 0.0050941889 - 1165300 0.006479511 0.002087116 0.0052256292 - 1165400 0.00686202 0.0030014009 0.0063251918 - 1165500 0.0058301325 0.0035626293 0.0063865997 - 1165600 0.0057124913 0.0034256968 0.0061926847 - 1165700 0.0065684472 0.0029512992 0.0061328908 - 1165800 0.0058284569 0.0026635837 0.0054867425 - 1165900 0.0044832508 0.0025447563 0.0047163309 - 1166000 0.0058243965 0.0023778288 0.0051990208 - 1166100 0.0051730047 0.0022850604 0.0047907346 - 1166200 0.0066384024 0.0022510929 0.005466569 - 1166300 0.0047868141 0.002695027 0.0050136401 - 1166400 0.0065758606 0.0032109238 0.0063961063 - 1166500 0.0043023234 0.0034306608 0.0055145987 - 1166600 0.0049265512 0.0029820011 0.0053682993 - 1166700 0.0045727332 0.0025140699 0.0047289875 - 1166800 0.0047759424 0.0024453899 0.004758737 - 1166900 0.005173594 0.0022658269 0.0047717865 - 1167000 0.0039025459 0.0021562335 0.0040465292 - 1167100 0.0039856359 0.002165961 0.0040965034 - 1167200 0.0039958669 0.0024126402 0.0043481382 - 1167300 0.0042446413 0.0032827656 0.0053387637 - 1167400 0.0049762607 0.0034069206 0.0058172968 - 1167500 0.0052126589 0.0024697638 0.0049946455 - 1167600 0.0040196118 0.0023346643 0.0042816638 - 1167700 0.0048311145 0.0023110255 0.0046510966 - 1167800 0.0043694444 0.0025354481 0.0046518978 - 1167900 0.0049424504 0.0024844164 0.0048784158 - 1168000 0.0045488547 0.0023984554 0.0046018069 - 1168100 0.0045202761 0.0027310081 0.0049205168 - 1168200 0.0042782163 0.0023629623 0.0044352233 - 1168300 0.0064277693 0.0018937928 0.0050072436 - 1168400 0.0053344235 0.0020768669 0.0046607283 - 1168500 0.0043275709 0.0024407358 0.0045369029 - 1168600 0.0049017376 0.0023591401 0.0047334193 - 1168700 0.005873306 0.0024652248 0.0053101074 - 1168800 0.0042387361 0.0023883085 0.0044414463 - 1168900 0.0065426224 0.0024837578 0.0056528405 - 1169000 0.0056974501 0.0027936649 0.0055533673 - 1169100 0.0066269728 0.0028578974 0.0060678373 - 1169200 0.0040959955 0.0030193983 0.0050033961 - 1169300 0.0057523744 0.003143069 0.0059293753 - 1169400 0.0046176896 0.0032268029 0.0054634963 - 1169500 0.0043953845 0.0025841484 0.0047131627 - 1169600 0.0051315166 0.0017313412 0.0042169196 - 1169700 0.0058794712 0.0021161831 0.0049640519 - 1169800 0.003871864 0.0026928155 0.0045682496 - 1169900 0.0042063296 0.0023702738 0.0044077147 - 1170000 0.0057896056 0.0016652633 0.0044696036 - 1170100 0.0055594229 0.0017822843 0.0044751298 - 1170200 0.0047880241 0.0022270201 0.0045462193 - 1170300 0.0057381842 0.0024352392 0.0052146722 - 1170400 0.0055401153 0.0024108044 0.0050942978 - 1170500 0.0044162091 0.0022997972 0.0044388985 - 1170600 0.0037248632 0.0021282888 0.0039325195 - 1170700 0.0049929569 0.0017596661 0.0041781296 - 1170800 0.0062924172 0.0019396599 0.0049875495 - 1170900 0.0053535269 0.0019155251 0.0045086397 - 1171000 0.0075768576 0.0019644782 0.0056345186 - 1171100 0.0037131394 0.0021682169 0.0039667688 - 1171200 0.0061774121 0.0024212122 0.0054133962 - 1171300 0.0037588839 0.0024388311 0.0042595405 - 1171400 0.0060738879 0.0021122886 0.005054328 - 1171500 0.0045812274 0.002515479 0.004734511 - 1171600 0.0059664161 0.0027905401 0.0056805229 - 1171700 0.0048494476 0.0026247164 0.0049736676 - 1171800 0.0071080493 0.0019299827 0.0053729441 - 1171900 0.006434183 0.0022755446 0.005392102 - 1172000 0.0058992121 0.0023690337 0.0052264646 - 1172100 0.0062123352 0.0021197917 0.0051288916 - 1172200 0.0053937212 0.0016966344 0.0043092181 - 1172300 0.0052825226 0.0015841693 0.0041428912 - 1172400 0.0048459559 0.0020028441 0.004350104 - 1172500 0.0047064226 0.0017632155 0.004042889 - 1172600 0.0034104937 0.0018752952 0.0035272531 - 1172700 0.0038355432 0.002323123 0.0041809643 - 1172800 0.0049897464 0.0021250163 0.0045419247 - 1172900 0.0046203785 0.0018660073 0.0041040031 - 1173000 0.0052473138 0.0018495388 0.0043912064 - 1173100 0.0038746641 0.0018378357 0.0037146261 - 1173200 0.0051192795 0.002143589 0.00462324 - 1173300 0.0050206119 0.0023724366 0.0048042955 - 1173400 0.0051859152 0.002783138 0.0052950657 - 1173500 0.0043256999 0.002872541 0.0049678018 - 1173600 0.007824927 0.0024461239 0.0062363229 - 1173700 0.0046905358 0.0026937725 0.0049657507 - 1173800 0.0038467589 0.0022569463 0.0041202201 - 1173900 0.0050128096 0.0019452811 0.0043733608 - 1174000 0.0041676276 0.0022181862 0.0042368808 - 1174100 0.0061456358 0.0021457384 0.0051225307 - 1174200 0.0049790512 0.0020724066 0.0044841345 - 1174300 0.0042807079 0.0022588583 0.0043323261 - 1174400 0.0043958607 0.0021924599 0.0043217049 - 1174500 0.0039945787 0.0024284072 0.0043632813 - 1174600 0.0039141396 0.0023998598 0.0042957712 - 1174700 0.00592057 0.0024268401 0.0052946162 - 1174800 0.0046836092 0.0029519281 0.0052205513 - 1174900 0.0042100443 0.0024945281 0.0045337683 - 1175000 0.004555474 0.0021455185 0.0043520762 - 1175100 0.0040266634 0.0019073988 0.0038578139 - 1175200 0.0044518199 0.001962242 0.0041185923 - 1175300 0.0049319684 0.0020340511 0.0044229733 - 1175400 0.0073012935 0.0023085304 0.0058450944 - 1175500 0.0036314558 0.0020844619 0.0038434483 - 1175600 0.0048303783 0.0018599165 0.004199631 - 1175700 0.0046831136 0.0022565358 0.004524919 - 1175800 0.003667105 0.0020974421 0.0038736961 - 1175900 0.0059629243 0.0019099833 0.0047982748 - 1176000 0.0042820405 0.0020400316 0.004114145 - 1176100 0.002882526 0.0026047853 0.0040010089 - 1176200 0.0039880935 0.0024917037 0.0044234365 - 1176300 0.0044890764 0.0023121327 0.0044865291 - 1176400 0.006402357 0.0021668743 0.005268016 - 1176500 0.0068220544 0.002511791 0.0058162236 - 1176600 0.0065478346 0.0023442913 0.0055158987 - 1176700 0.004415574 0.0021797742 0.0043185679 - 1176800 0.0067775478 0.0021687048 0.0054515795 - 1176900 0.004536699 0.0025751044 0.004772568 - 1177000 0.0050447624 0.0019739316 0.0044174884 - 1177100 0.0041040536 0.0017096242 0.0036975251 - 1177200 0.0036805728 0.0014637519 0.0032465294 - 1177300 0.0049878148 0.0015821721 0.0039981449 - 1177400 0.0051238387 0.001588212 0.0040700713 - 1177500 0.0048911254 0.0015118057 0.0038809446 - 1177600 0.0041081177 0.0016980359 0.0036879054 - 1177700 0.0040021213 0.001792513 0.0037310405 - 1177800 0.0048175083 0.0026672846 0.0050007652 - 1177900 0.0042832538 0.0032040022 0.0052787033 - 1178000 0.0068988774 0.00264225 0.0059838937 - 1178100 0.0050128526 0.0023763172 0.0048044177 - 1178200 0.0047913966 0.0021814621 0.0045022949 - 1178300 0.0051414325 0.002273276 0.0047636574 - 1178400 0.0047297924 0.0024419408 0.004732934 - 1178500 0.0040644294 0.002360043 0.004328751 - 1178600 0.0044288023 0.0020151122 0.0041603133 - 1178700 0.0048002345 0.0019130799 0.0042381935 - 1178800 0.0047787705 0.0023020386 0.0046167555 - 1178900 0.0047314243 0.0024021331 0.0046939167 - 1179000 0.0038919923 0.0025676374 0.0044528211 - 1179100 0.0031954782 0.0022251053 0.0037729151 - 1179200 0.0068985342 0.001648906 0.0049903835 - 1179300 0.0047685609 0.0014714233 0.003781195 - 1179400 0.004381248 0.0020468868 0.0041690538 - 1179500 0.0047941051 0.0026078147 0.0049299594 - 1179600 0.005012138 0.0025112968 0.0049390511 - 1179700 0.0045255626 0.0023470214 0.0045390908 - 1179800 0.0058994351 0.0023236233 0.0051811622 - 1179900 0.0060066972 0.0022762666 0.0051857605 - 1180000 0.0049537983 0.0020207385 0.0044202346 - 1180100 0.0066203856 0.002078508 0.0052852572 - 1180200 0.0037162083 0.0026383307 0.0044383691 - 1180300 0.0053323173 0.0026081403 0.0051909815 - 1180400 0.0051119578 0.0022195585 0.0046956631 - 1180500 0.0035903571 0.0023114156 0.0040504948 - 1180600 0.0051080322 0.0023296422 0.0048038453 - 1180700 0.0053457774 0.002271874 0.0048612349 - 1180800 0.0051614058 0.0025802622 0.0050803181 - 1180900 0.0050568184 0.0024055716 0.004854968 - 1181000 0.004108013 0.0025953808 0.0045851995 - 1181100 0.0043293367 0.0025687202 0.0046657427 - 1181200 0.0062507523 0.0023469588 0.0053746669 - 1181300 0.0046203396 0.0027506522 0.0049886292 - 1181400 0.0062401812 0.0027056729 0.0057282606 - 1181500 0.0056492719 0.0028907288 0.0056270949 - 1181600 0.0054881664 0.0030904927 0.0057488233 - 1181700 0.0039879122 0.0026063543 0.0045379992 - 1181800 0.0057417757 0.0024085556 0.0051897281 - 1181900 0.0056109766 0.0023109873 0.0050288041 - 1182000 0.0051799753 0.0026242636 0.0051333141 - 1182100 0.0046984826 0.0022896625 0.00456549 - 1182200 0.0055136486 0.0024874653 0.0051581388 - 1182300 0.0058043985 0.0023176154 0.0051291209 - 1182400 0.0035866867 0.0020672864 0.0038045877 - 1182500 0.0044080327 0.0021304846 0.0042656255 - 1182600 0.0056253012 0.0023689819 0.0050937372 - 1182700 0.0054809246 0.0022514377 0.0049062606 - 1182800 0.0077617017 0.0024223415 0.0061819157 - 1182900 0.0062932739 0.0024085414 0.005456846 - 1183000 0.0039199039 0.0020384246 0.0039371281 - 1183100 0.0049506324 0.0019051828 0.0043031453 - 1183200 0.0044565274 0.0021550442 0.0043136747 - 1183300 0.0062465775 0.0020275333 0.0050532193 - 1183400 0.0046630554 0.0023294189 0.0045880864 - 1183500 0.0039317819 0.0023654475 0.0042699044 - 1183600 0.0046629388 0.0023057807 0.0045643916 - 1183700 0.0043288068 0.0022457181 0.0043424839 - 1183800 0.003674881 0.0024490101 0.0042290306 - 1183900 0.0049171557 0.0029464191 0.0053281664 - 1184000 0.0061970925 0.0031610052 0.0061627219 - 1184100 0.0059542318 0.0024357261 0.0053198072 - 1184200 0.0049391352 0.0023022205 0.0046946141 - 1184300 0.0054461539 0.0021793013 0.0048172821 - 1184400 0.0055607466 0.0020359436 0.0047294302 - 1184500 0.0056697056 0.002066312 0.0048125756 - 1184600 0.005452119 0.0021088614 0.0047497316 - 1184700 0.0037488016 0.0026518767 0.0044677025 - 1184800 0.0054216932 0.002567196 0.0051933286 - 1184900 0.006278547 0.0023180459 0.0053592171 - 1185000 0.0059389949 0.0027032063 0.005579907 - 1185100 0.0056804494 0.0030042081 0.0057556758 - 1185200 0.0060434927 0.0029700023 0.0058973191 - 1185300 0.0040560852 0.0027415736 0.0047062399 - 1185400 0.0042675345 0.0026256638 0.0046927508 - 1185500 0.0047619154 0.0027929246 0.0050994774 - 1185600 0.0047999158 0.00288006 0.0052050192 - 1185700 0.0073698083 0.0019651635 0.0055349144 - 1185800 0.0042515272 0.0021515817 0.0042109152 - 1185900 0.0058080172 0.0025284239 0.0053416823 - 1186000 0.0064057318 0.0029228325 0.0060256088 - 1186100 0.0053994127 0.0037628881 0.0063782287 - 1186200 0.0073016068 0.0032657857 0.0068025015 - 1186300 0.0070827474 0.0026548214 0.0060855272 - 1186400 0.0086037644 0.0021435384 0.0063109868 - 1186500 0.005339263 0.0021214684 0.0047076739 - 1186600 0.0038071346 0.0022997496 0.0041438304 - 1186700 0.0053435017 0.0023755827 0.0049638413 - 1186800 0.006353603 0.0026558421 0.0057333685 - 1186900 0.0045292822 0.0024257155 0.0046195866 - 1187000 0.0048949739 0.0024944005 0.0048654035 - 1187100 0.0045380517 0.002479702 0.0046778208 - 1187200 0.0045376708 0.0019301164 0.0041280507 - 1187300 0.0046149873 0.001881184 0.0041165685 - 1187400 0.006698441 0.0019588324 0.0052033897 - 1187500 0.0059552389 0.0024342935 0.0053188623 - 1187600 0.0041006221 0.0025110839 0.0044973227 - 1187700 0.0046151032 0.0021571739 0.0043926145 - 1187800 0.0048414665 0.0018105437 0.004155629 - 1187900 0.0042571611 0.0016638499 0.0037259123 - 1188000 0.0050652611 0.0019404814 0.0043939672 - 1188100 0.0071805015 0.0021707718 0.0056488272 - 1188200 0.006137743 0.0019553275 0.0049282968 - 1188300 0.0050000145 0.0020737628 0.0044956448 - 1188400 0.0047550674 0.0019977318 0.0043009676 - 1188500 0.0046787907 0.001939539 0.0042058282 - 1188600 0.0055523404 0.0020064595 0.0046958743 - 1188700 0.0034704683 0.0023600094 0.0040410175 - 1188800 0.0059400224 0.0025647976 0.005441996 - 1188900 0.0042171745 0.0027053406 0.0047480345 - 1189000 0.0058162169 0.0029918002 0.0058090303 - 1189100 0.006670854 0.0025979775 0.0058291724 - 1189200 0.0043491407 0.0023721368 0.0044787519 - 1189300 0.0042049856 0.002337125 0.0043739149 - 1189400 0.0047152786 0.0026720338 0.0049559969 - 1189500 0.0039717774 0.0025808407 0.0045046704 - 1189600 0.0046243281 0.0026732666 0.0049131755 - 1189700 0.0048578414 0.0025633285 0.0049163455 - 1189800 0.0058636306 0.0031625825 0.0060027786 - 1189900 0.0056060891 0.0030481 0.0057635494 - 1190000 0.0063938616 0.0021359855 0.0052330122 - 1190100 0.0042004244 0.0021845521 0.0042191327 - 1190200 0.0040073128 0.0020296652 0.0039707074 - 1190300 0.0036962138 0.0020591844 0.0038495379 - 1190400 0.0048840682 0.0023058623 0.0046715828 - 1190500 0.0052009256 0.0022862697 0.004805468 - 1190600 0.0047434101 0.0022795131 0.0045771024 - 1190700 0.0052147482 0.0022472257 0.0047731194 - 1190800 0.0050435132 0.0022835267 0.0047264785 - 1190900 0.0039759071 0.0020546351 0.0039804651 - 1191000 0.004272648 0.0019849377 0.0040545016 - 1191100 0.0050748904 0.0017359821 0.0041941322 - 1191200 0.0060385774 0.0016542624 0.0045791984 - 1191300 0.005166003 0.0017188646 0.0042211473 - 1191400 0.0044422656 0.0018790101 0.0040307325 - 1191500 0.0040973167 0.0019895569 0.0039741946 - 1191600 0.0055433474 0.0020110553 0.0046961142 - 1191700 0.005872401 0.0020567417 0.0049011859 - 1191800 0.0034242248 0.0027096618 0.0043682707 - 1191900 0.0046761346 0.0023207091 0.0045857119 - 1192000 0.0045463853 0.0018351575 0.0040373129 - 1192100 0.0043949101 0.0015115511 0.0036403357 - 1192200 0.0048172077 0.001649426 0.0039827609 - 1192300 0.0039633881 0.0018879691 0.0038077352 - 1192400 0.005121225 0.0018985476 0.004379141 - 1192500 0.0035159614 0.001935446 0.0036384899 - 1192600 0.00462523 0.0019099518 0.0041502976 - 1192700 0.004987127 0.0019549301 0.0043705697 - 1192800 0.0048740294 0.0018555793 0.0042164372 - 1192900 0.0049972329 0.0020964493 0.004516984 - 1193000 0.0046604352 0.0023266828 0.0045840811 - 1193100 0.0058576877 0.0021047202 0.0049420376 - 1193200 0.0049262877 0.0023131917 0.0046993623 - 1193300 0.0050646297 0.0027435018 0.0051966818 - 1193400 0.0065256267 0.0029053417 0.0060661921 - 1193500 0.0056710608 0.0028548136 0.0056017337 - 1193600 0.0056971645 0.0021960871 0.0049556512 - 1193700 0.0040703693 0.0021133201 0.0040849053 - 1193800 0.0042480186 0.0022843307 0.0043419647 - 1193900 0.0045032378 0.0024790074 0.0046602632 - 1194000 0.0056184973 0.0026354129 0.0053568725 - 1194100 0.0051114061 0.0024175057 0.0048933431 - 1194200 0.0044774567 0.0020824519 0.00425122 - 1194300 0.0051701356 0.0021112587 0.0046155431 - 1194400 0.0065754563 0.0019888308 0.0051738175 - 1194500 0.0063887758 0.0023228454 0.0054174087 - 1194600 0.0063784919 0.0030785424 0.0061681244 - 1194700 0.0041245033 0.0034276752 0.0054254815 - 1194800 0.0038480974 0.0025435448 0.004407467 - 1194900 0.0045902926 0.0022693672 0.0044927902 - 1195000 0.00444941 0.0017348978 0.0038900808 - 1195100 0.0065697695 0.0017118726 0.0048941047 - 1195200 0.0052617115 0.0021676791 0.0047163206 - 1195300 0.005401466 0.0022911142 0.0049074492 - 1195400 0.0053272992 0.0018647167 0.0044451272 - 1195500 0.0052324403 0.002005871 0.0045403343 - 1195600 0.0059317817 0.0024961236 0.0053693304 - 1195700 0.004778824 0.0026631803 0.0049779232 - 1195800 0.0057112506 0.0028577368 0.0056241238 - 1195900 0.0044570466 0.0035689755 0.0057278574 - 1196000 0.0056817962 0.0033943345 0.0061464545 - 1196100 0.0075838241 0.0025033852 0.0061768 - 1196200 0.0044318524 0.0021710353 0.0043177138 - 1196300 0.0041773121 0.002498458 0.0045218435 - 1196400 0.0057460925 0.0026845718 0.0054678354 - 1196500 0.0060661691 0.00242575 0.0053640507 - 1196600 0.0062616779 0.0028053175 0.0058383178 - 1196700 0.0053178298 0.0030421055 0.0056179293 - 1196800 0.006789594 0.0025901899 0.0058788994 - 1196900 0.005792022 0.0020054826 0.0048109933 - 1197000 0.0051869986 0.0023050199 0.0048174723 - 1197100 0.0046092146 0.0023315401 0.0045641285 - 1197200 0.0056427868 0.0023609728 0.0050941977 - 1197300 0.0045103962 0.0023409294 0.0045256525 - 1197400 0.0061182832 0.0022347056 0.0051982491 - 1197500 0.0058828596 0.0023731811 0.0052226912 - 1197600 0.005071483 0.0024972521 0.0049537517 - 1197700 0.0057572694 0.0022244783 0.0050131557 - 1197800 0.0052064455 0.0020711178 0.0045929899 - 1197900 0.0040300838 0.0021037315 0.0040558034 - 1198000 0.0043941016 0.0021482489 0.0042766419 - 1198100 0.0050793494 0.0024683807 0.0049286906 - 1198200 0.0048804613 0.0026816146 0.005045588 - 1198300 0.0056802502 0.0025406139 0.0052919851 - 1198400 0.0046270069 0.0021070613 0.0043482677 - 1198500 0.0074783438 0.001918237 0.0055405598 - 1198600 0.0052435499 0.0018358318 0.0043756763 - 1198700 0.00554753 0.0022805033 0.0049675881 - 1198800 0.0057127562 0.0026884223 0.0054555386 - 1198900 0.0061620664 0.0029718136 0.0059565646 - 1199000 0.0062193976 0.0031038696 0.0061163903 - 1199100 0.0054285473 0.0030823506 0.0057118032 - 1199200 0.0048121845 0.0024891519 0.0048200537 - 1199300 0.0043784253 0.0018196529 0.0039404526 - 1199400 0.0053131352 0.0019874939 0.0045610438 - 1199500 0.0038451508 0.0022714013 0.0041338962 - 1199600 0.0044678741 0.0024702036 0.0046343301 - 1199700 0.0038271826 0.0025157273 0.0043695188 - 1199800 0.0044241211 0.00259263 0.0047355637 - 1199900 0.0045219798 0.0025772057 0.0047675397 - 1200000 0.0049178434 0.0029985254 0.0053806058 - 1200100 0.0057867189 0.0029591496 0.0057620916 - 1200200 0.0043658806 0.0024517638 0.0045664872 - 1200300 0.0086750271 0.0020721422 0.0062741084 - 1200400 0.0057429282 0.0018125884 0.0045943193 - 1200500 0.0050067716 0.0017250759 0.0041502308 - 1200600 0.005122786 0.0020159676 0.0044973171 - 1200700 0.0035610109 0.0023133519 0.0040382166 - 1200800 0.0060502314 0.0020210513 0.0049516322 - 1200900 0.0055021196 0.0024644983 0.0051295875 - 1201000 0.0057069922 0.0028034334 0.0055677577 - 1201100 0.0052009842 0.0026247314 0.0051439581 - 1201200 0.0050840246 0.0024022792 0.0048648536 - 1201300 0.0041212154 0.002162859 0.0041590727 - 1201400 0.0039455008 0.0021018947 0.0040129967 - 1201500 0.0049240065 0.0023208324 0.004705898 - 1201600 0.003692277 0.002507891 0.0042963377 - 1201700 0.0061318703 0.0019479496 0.0049180742 - 1201800 0.0049227074 0.0016942285 0.0040786649 - 1201900 0.0063873679 0.0022072477 0.005301129 - 1202000 0.0040121082 0.0026036133 0.0045469782 - 1202100 0.0040518608 0.0024622432 0.0044248633 - 1202200 0.0044805205 0.002355052 0.0045253041 - 1202300 0.0062310615 0.0022311533 0.0052493237 - 1202400 0.0048190273 0.0022765668 0.0046107832 - 1202500 0.0046616419 0.0020317304 0.0042897132 - 1202600 0.0049389405 0.0021915055 0.0045838048 - 1202700 0.0052353253 0.0024042987 0.0049401594 - 1202800 0.0039859463 0.0028017198 0.0047324125 - 1202900 0.0050805867 0.0023570894 0.0048179986 - 1203000 0.0049568867 0.0024650853 0.0048660773 - 1203100 0.00498873 0.0023223237 0.0047387398 - 1203200 0.0051270789 0.0018854191 0.0043688479 - 1203300 0.0061260889 0.001421438 0.0043887623 - 1203400 0.0038257806 0.0017868116 0.0036399241 - 1203500 0.0040065299 0.0018061983 0.0037468612 - 1203600 0.0056549452 0.0017170103 0.0044561244 - 1203700 0.0053109783 0.001281404 0.0038539091 - 1203800 0.004262954 0.0014866532 0.0035515216 - 1203900 0.0056330968 0.0016976927 0.004426224 - 1204000 0.0058477801 0.0021212646 0.004953783 - 1204100 0.0050239048 0.002782588 0.0052160419 - 1204200 0.0039232745 0.0031707592 0.0050710953 - 1204300 0.0032934731 0.0027428717 0.0043381478 - 1204400 0.0052429164 0.0022302411 0.0047697788 - 1204500 0.0052885503 0.0017547717 0.0043164132 - 1204600 0.0059708084 0.001655476 0.0045475863 - 1204700 0.0048819931 0.0014743571 0.0038390725 - 1204800 0.0039504151 0.0017113885 0.0036248708 - 1204900 0.0043843929 0.0023967269 0.0045204173 - 1205000 0.0046206984 0.0024106195 0.0046487703 - 1205100 0.0055802741 0.0022877994 0.0049907447 - 1205200 0.0046803596 0.0021972855 0.0044643347 - 1205300 0.0049596108 0.0023384042 0.0047407157 - 1205400 0.0071013343 0.0024347014 0.0058744102 - 1205500 0.005332256 0.0027896271 0.0053724386 - 1205600 0.0052023365 0.003033026 0.0055529078 - 1205700 0.0047039393 0.0029726993 0.0052511699 - 1205800 0.0042013701 0.002889224 0.0049242627 - 1205900 0.0043922595 0.0027759965 0.0049034973 - 1206000 0.0049692113 0.002282187 0.0046891487 - 1206100 0.0055531878 0.0022470734 0.0049368988 - 1206200 0.0058439703 0.0026436416 0.0054743147 - 1206300 0.0058617849 0.0030555779 0.0058948799 - 1206400 0.0043519545 0.0029736637 0.0050816417 - 1206500 0.0046485012 0.0024274583 0.0046790761 - 1206600 0.0042392321 0.0024792821 0.0045326601 - 1206700 0.0047694 0.0023621667 0.0046723448 - 1206800 0.006177448 0.0026988067 0.005691008 - 1206900 0.0055557264 0.0024406264 0.0051316813 - 1207000 0.0055453053 0.0026956574 0.0053816647 - 1207100 0.0064343341 0.0031107784 0.006227409 - 1207200 0.0053819306 0.0032640035 0.0058708761 - 1207300 0.0061640315 0.0032755208 0.0062612235 - 1207400 0.005756469 0.002390232 0.0051785217 - 1207500 0.0059684594 0.0022128592 0.0051038317 - 1207600 0.0048181263 0.0026211381 0.004954918 - 1207700 0.0035904662 0.0024777924 0.0042169245 - 1207800 0.0046352935 0.002042445 0.0042876653 - 1207900 0.0073589872 0.0020643137 0.0056288231 - 1208000 0.0050508822 0.0023341849 0.004780706 - 1208100 0.0060483655 0.0028754375 0.0058051145 - 1208200 0.0038020354 0.0030007853 0.0048423962 - 1208300 0.003969456 0.0028588994 0.0047816046 - 1208400 0.0058488432 0.002724714 0.0055577474 - 1208500 0.0034006879 0.0025108053 0.0041580135 - 1208600 0.0044346557 0.0023749365 0.0045229729 - 1208700 0.0068049155 0.0022545427 0.0055506737 - 1208800 0.0060514832 0.0022253286 0.0051565158 - 1208900 0.0064198391 0.0022312312 0.0053408408 - 1209000 0.0055364121 0.0024447725 0.0051264721 - 1209100 0.0050292962 0.0024643825 0.0049004479 - 1209200 0.005342726 0.0026074309 0.0051953138 - 1209300 0.0059490636 0.0026915776 0.0055731553 - 1209400 0.0060813123 0.002375609 0.0053212446 - 1209500 0.0045478019 0.0024801069 0.0046829485 - 1209600 0.0049852812 0.0025211221 0.0049358677 - 1209700 0.0056374604 0.0022117562 0.0049424011 - 1209800 0.0050869393 0.0024196658 0.004883652 - 1209900 0.0037555279 0.002582736 0.0044018198 - 1210000 0.0042975302 0.0028066588 0.004888275 - 1210100 0.0035908886 0.0025379151 0.0042772518 - 1210200 0.0077857827 0.0020594973 0.0058307358 - 1210300 0.0064202934 0.0025595049 0.0056693345 - 1210400 0.0049447166 0.0029147448 0.0053098419 - 1210500 0.0060984795 0.0026292062 0.0055831572 - 1210600 0.0049969918 0.0024200584 0.0048404763 - 1210700 0.0052440637 0.0028653836 0.0054054769 - 1210800 0.0052062256 0.0023827098 0.0049044753 - 1210900 0.0040240384 0.0020561345 0.0040052782 - 1211000 0.0049684412 0.0021050262 0.0045116149 - 1211100 0.0039119159 0.0023847973 0.0042796315 - 1211200 0.0060114263 0.0019227733 0.0048345579 - 1211300 0.0043717478 0.0023200618 0.0044376272 - 1211400 0.005344072 0.002718649 0.0053071839 - 1211500 0.0059034403 0.0026406223 0.0055001012 - 1211600 0.0055494004 0.0029309485 0.0056189393 - 1211700 0.0048150893 0.0029021282 0.0052344371 - 1211800 0.0046128532 0.0028571666 0.0050915174 - 1211900 0.0050088055 0.0026905359 0.0051166761 - 1212000 0.0049435934 0.0029652787 0.0053598318 - 1212100 0.0063402342 0.0030240974 0.0060951483 - 1212200 0.0049798321 0.0030903527 0.0055024589 - 1212300 0.0060096683 0.0023333719 0.0052443049 - 1212400 0.0058212386 0.0017663708 0.0045860333 - 1212500 0.005535689 0.0019140842 0.0045954335 - 1212600 0.0053941892 0.0021288283 0.0047416387 - 1212700 0.0067459767 0.0022754933 0.0055430757 - 1212800 0.0072885235 0.0022786689 0.0058090475 - 1212900 0.0059733573 0.0019472542 0.0048405992 - 1213000 0.004722237 0.0021778349 0.0044651685 - 1213100 0.0058712411 0.0022246784 0.0050685608 - 1213200 0.004588422 0.0029014014 0.0051239183 - 1213300 0.0049258376 0.0029637325 0.0053496851 - 1213400 0.0074698543 0.0023502775 0.0059684882 - 1213500 0.0054982225 0.0028666653 0.0055298669 - 1213600 0.0031830238 0.0032006807 0.0047424579 - 1213700 0.0045753175 0.0030996529 0.0053158223 - 1213800 0.0061134865 0.0025878049 0.0055490249 - 1213900 0.0053311072 0.0029593042 0.0055415592 - 1214000 0.0063694011 0.0035237722 0.0066089509 - 1214100 0.0055791108 0.0036058439 0.0063082257 - 1214200 0.0057734212 0.0034950392 0.00629154 - 1214300 0.0048801253 0.0032925129 0.0056563235 - 1214400 0.0063048151 0.0031647131 0.0062186079 - 1214500 0.0054318264 0.0031535 0.0057845409 - 1214600 0.0035853061 0.0028929178 0.0046295505 - 1214700 0.0049784293 0.0028063808 0.0052178075 - 1214800 0.0049368497 0.0026939112 0.0050851977 - 1214900 0.0060710959 0.0026882957 0.0056289828 - 1215000 0.0055339998 0.0028681759 0.0055487071 - 1215100 0.0043712911 0.0035028345 0.0056201786 - 1215200 0.0048858445 0.0032874425 0.0056540235 - 1215300 0.0058685499 0.0025592429 0.0054018217 - 1215400 0.0064716329 0.002151554 0.0052862512 - 1215500 0.0043416261 0.0021666805 0.0042696557 - 1215600 0.00475838 0.0021832442 0.0044880845 - 1215700 0.003330975 0.0024834746 0.0040969157 - 1215800 0.005871541 0.002535503 0.0053795306 - 1215900 0.0045125028 0.0029748491 0.0051605926 - 1216000 0.006655752 0.0035888902 0.0068127701 - 1216100 0.0053353024 0.0035314747 0.0061157618 - 1216200 0.0044523032 0.0025426369 0.0046992212 - 1216300 0.0063207633 0.002094104 0.0051557237 - 1216400 0.0044733335 0.0020092758 0.0041760467 - 1216500 0.0040638732 0.0020833824 0.004051821 - 1216600 0.0048229063 0.0020617051 0.0043978003 - 1216700 0.0051516952 0.0023547202 0.0048500726 - 1216800 0.0058445856 0.0024278842 0.0052588553 - 1216900 0.0046358435 0.0025186488 0.0047641355 - 1217000 0.0048541881 0.0031284465 0.0054796939 - 1217100 0.0066969277 0.002479284 0.0057231083 - 1217200 0.0071061259 0.0023088158 0.0057508456 - 1217300 0.0050118454 0.0024709939 0.0048986065 - 1217400 0.0049475484 0.0020320224 0.0044284912 - 1217500 0.0060314934 0.0018033543 0.0047248589 - 1217600 0.0063067889 0.002187672 0.0052425229 - 1217700 0.0053348249 0.00296921 0.0055532658 - 1217800 0.004984643 0.0029142777 0.0053287142 - 1217900 0.0054784159 0.002379077 0.0050326847 - 1218000 0.0054916213 0.0020913024 0.0047513065 - 1218100 0.0043888942 0.0024267048 0.0045525755 - 1218200 0.0046132498 0.0024769657 0.0047115085 - 1218300 0.0048159641 0.0025773831 0.0049101157 - 1218400 0.0060231613 0.0023056917 0.0052231605 - 1218500 0.0042030125 0.0022195036 0.0042553378 - 1218600 0.0040437448 0.0022358132 0.0041945021 - 1218700 0.0052767813 0.0023052182 0.0048611592 - 1218800 0.0056739435 0.0028242516 0.005572568 - 1218900 0.0053775781 0.002941635 0.0055463994 - 1219000 0.0057697921 0.0025639944 0.0053587375 - 1219100 0.007439845 0.0027177935 0.0063214684 - 1219200 0.0065999183 0.0026965439 0.0058933793 - 1219300 0.003719831 0.0026617539 0.004463547 - 1219400 0.0042560613 0.0026505068 0.0047120365 - 1219500 0.0031173992 0.0027965838 0.004306574 - 1219600 0.0052741237 0.0027523666 0.0053070202 - 1219700 0.0049068936 0.0023566697 0.0047334464 - 1219800 0.005878186 0.0021035456 0.0049507919 - 1219900 0.0033208851 0.0023120882 0.003920642 - 1220000 0.00472975 0.0025902241 0.0048811967 - 1220100 0.0043553594 0.0026667382 0.0047763654 - 1220200 0.004615552 0.0028601542 0.0050958122 - 1220300 0.0052499012 0.0028299723 0.0053728931 - 1220400 0.0046989367 0.0027409923 0.0050170398 - 1220500 0.0041636167 0.0024237456 0.0044404974 - 1220600 0.0053300644 0.0023119411 0.004893691 - 1220700 0.0051615185 0.0025396096 0.0050397201 - 1220800 0.0058051342 0.0021088713 0.0049207331 - 1220900 0.0045875933 0.0018779955 0.004100111 - 1221000 0.0043016235 0.0016137135 0.0036973124 - 1221100 0.0046817204 0.0016511602 0.0039188685 - 1221200 0.0042687202 0.002302614 0.0043702753 - 1221300 0.0040956356 0.002404108 0.0043879315 - 1221400 0.0042768623 0.001996467 0.0040680721 - 1221500 0.0049044417 0.0015570101 0.003932599 - 1221600 0.0043281329 0.0019672714 0.0040637108 - 1221700 0.0050442921 0.0019786935 0.0044220225 - 1221800 0.0052122322 0.0017801083 0.0043047832 - 1221900 0.0051549722 0.0024127553 0.0049096949 - 1222000 0.007084518 0.0027819869 0.0062135503 - 1222100 0.0047767795 0.0027660321 0.0050797846 - 1222200 0.0064111878 0.0026184044 0.0057238235 - 1222300 0.0056678013 0.00260465 0.0053499912 - 1222400 0.005156974 0.0025146824 0.0050125917 - 1222500 0.0042748183 0.0020582983 0.0041289134 - 1222600 0.005848478 0.0022597906 0.0050926471 - 1222700 0.0045153553 0.0029161554 0.0051032806 - 1222800 0.0050758989 0.0025484776 0.0050071161 - 1222900 0.0064920275 0.0022665723 0.0054111481 - 1223000 0.0038283265 0.0028607942 0.0047151399 - 1223100 0.0047955048 0.0026286743 0.0049514969 - 1223200 0.0048234536 0.0016519714 0.0039883317 - 1223300 0.0054008252 0.0015170434 0.0041330681 - 1223400 0.0058527969 0.0021115203 0.0049464688 - 1223500 0.0058106155 0.0024325882 0.0052471051 - 1223600 0.0083990887 0.0023807175 0.0064490261 - 1223700 0.0050784203 0.0029653545 0.0054252143 - 1223800 0.0049991912 0.0028840716 0.0053055548 - 1223900 0.0048625684 0.0028033543 0.0051586608 - 1224000 0.0055268817 0.0028703582 0.0055474415 - 1224100 0.0059059893 0.0027146789 0.0055753925 - 1224200 0.0059315906 0.0022979286 0.0051710428 - 1224300 0.0046104784 0.0020993286 0.0043325291 - 1224400 0.0048916049 0.0021293203 0.0044986914 - 1224500 0.0041026607 0.0020698327 0.0040570589 - 1224600 0.0057418493 0.002063074 0.0048442822 - 1224700 0.0047295649 0.0020300756 0.0043209586 - 1224800 0.0059427066 0.0018757672 0.0047542656 - 1224900 0.0050060828 0.0016251179 0.0040499393 - 1225000 0.004921513 0.0016336109 0.0040174687 - 1225100 0.0049011914 0.0017063202 0.0040803348 - 1225200 0.0069164518 0.0017354214 0.0050855777 - 1225300 0.004892743 0.0023169682 0.0046868906 - 1225400 0.0062728587 0.0018313699 0.0048697859 - 1225500 0.0055356772 0.0017642771 0.0044456207 - 1225600 0.0045883967 0.0017940164 0.0040165211 - 1225700 0.0040463516 0.0015221257 0.0034820772 - 1225800 0.0045439313 0.0015499657 0.0037509324 - 1225900 0.0040607474 0.0015641427 0.0035310672 - 1226000 0.0049239319 0.0014110059 0.0037960354 - 1226100 0.0045963532 0.001631044 0.0038574026 - 1226200 0.0074669831 0.0017745575 0.0053913775 - 1226300 0.0051231263 0.0021549454 0.0046364597 - 1226400 0.0060262892 0.0024179556 0.0053369394 - 1226500 0.0065081667 0.0022420931 0.0053944863 - 1226600 0.0046140479 0.0024521858 0.0046871152 - 1226700 0.0054692146 0.0025228679 0.0051720187 - 1226800 0.0060497292 0.0025681724 0.00549851 - 1226900 0.0056093624 0.0025305108 0.0052475457 - 1227000 0.0049866565 0.0022913688 0.0047067805 - 1227100 0.0055243878 0.0020503133 0.0047261886 - 1227200 0.0052554164 0.0019892482 0.0045348405 - 1227300 0.0043499996 0.0018530044 0.0039600355 - 1227400 0.0047263691 0.0024073878 0.0046967229 - 1227500 0.0043359635 0.0024568344 0.0045570668 - 1227600 0.0043284083 0.0020765118 0.0041730845 - 1227700 0.0066677828 0.0020490525 0.0052787598 - 1227800 0.007036154 0.0018717082 0.0052798453 - 1227900 0.0050815899 0.0023627638 0.0048241589 - 1228000 0.0049045733 0.002281396 0.0046570486 - 1228100 0.0070317759 0.0021534439 0.0055594604 - 1228200 0.0041319188 0.002437249 0.0044386471 - 1228300 0.005462702 0.0022533064 0.0048993026 - 1228400 0.0071039169 0.0021034827 0.0055444425 - 1228500 0.003981553 0.002430185 0.0043587497 - 1228600 0.0054905863 0.0019964671 0.0046559699 - 1228700 0.0061307369 0.0019935843 0.0049631599 - 1228800 0.0049367833 0.0027281079 0.0051193624 - 1228900 0.0051164384 0.0028492337 0.0053275085 - 1229000 0.0048720402 0.0025420406 0.0049019351 - 1229100 0.0066970075 0.0023499617 0.0055938247 - 1229200 0.0060263532 0.0024204175 0.0053394324 - 1229300 0.0050175755 0.0028035737 0.0052339619 - 1229400 0.0051625507 0.0023594841 0.0048600946 - 1229500 0.0060239765 0.0025266228 0.0054444864 - 1229600 0.0047583171 0.0029776205 0.0052824303 - 1229700 0.0045956294 0.0025642299 0.0047902378 - 1229800 0.0079386309 0.0023407876 0.0061860619 - 1229900 0.005185279 0.0024801823 0.0049918018 - 1230000 0.0029226681 0.0025941207 0.0040097881 - 1230100 0.0057940757 0.0021764441 0.0049829496 - 1230200 0.0061117766 0.0022411486 0.0052015403 - 1230300 0.0051060853 0.0028780631 0.0053513232 - 1230400 0.0070958233 0.0031589414 0.0065959809 - 1230500 0.0049193376 0.0031412514 0.0055240556 - 1230600 0.005652116 0.0026360253 0.005373769 - 1230700 0.0054312848 0.002300077 0.0049308556 - 1230800 0.0044369133 0.0018254803 0.0039746102 - 1230900 0.0059736199 0.0017862477 0.0046797198 - 1231000 0.0054484211 0.0019112507 0.0045503297 - 1231100 0.0057591166 0.0019270215 0.0047165936 - 1231200 0.0053210673 0.0021275956 0.0047049876 - 1231300 0.0062321969 0.0024628224 0.0054815428 - 1231400 0.0058405258 0.0025994762 0.0054284809 - 1231500 0.0051335537 0.0021636921 0.0046502572 - 1231600 0.0046903008 0.0021841067 0.0044559711 - 1231700 0.0044877018 0.0024861854 0.0046599159 - 1231800 0.0051171549 0.0031316728 0.0056102947 - 1231900 0.0062075656 0.0032046378 0.0062114273 - 1232000 0.0054741857 0.0033050268 0.0059565855 - 1232100 0.0051165287 0.0031471438 0.0056254624 - 1232200 0.0052617272 0.0026260737 0.0051747228 - 1232300 0.0032609935 0.0032636099 0.0048431536 - 1232400 0.0050854235 0.0035896428 0.0060528948 - 1232500 0.0054223983 0.0031602652 0.0057867394 - 1232600 0.0062990837 0.0031502771 0.0062013957 - 1232700 0.0040185175 0.0030124199 0.0049588893 - 1232800 0.0044089017 0.0024555548 0.0045911165 - 1232900 0.0047482258 0.002128154 0.0044280759 - 1233000 0.0049608551 0.0021940671 0.0045969813 - 1233100 0.0039761765 0.00234896 0.0042749205 - 1233200 0.0064340887 0.0022327233 0.005349235 - 1233300 0.0048738011 0.0021576711 0.0045184185 - 1233400 0.0061177767 0.0022781815 0.0052414795 - 1233500 0.0034266987 0.0028253178 0.004485125 - 1233600 0.004704931 0.0029106819 0.0051896329 - 1233700 0.0049840616 0.0029237816 0.0053379364 - 1233800 0.0062400184 0.0028068974 0.0058294063 - 1233900 0.0068915177 0.0024173896 0.0057554685 - 1234000 0.0041463549 0.0024376954 0.0044460861 - 1234100 0.004161518 0.0023895534 0.0044052887 - 1234200 0.0050535035 0.0018259751 0.0042737659 - 1234300 0.0052124569 0.0016215276 0.0041463115 - 1234400 0.0034582499 0.0018033431 0.0034784329 - 1234500 0.0054189279 0.0017289161 0.0043537093 - 1234600 0.004812648 0.0018868345 0.0042179608 - 1234700 0.0034907773 0.0025200455 0.0042108908 - 1234800 0.0054484369 0.0029337718 0.0055728584 - 1234900 0.0055347788 0.0027910671 0.0054719756 - 1235000 0.006688656 0.0022884819 0.0055282997 - 1235100 0.0069773428 0.0016106396 0.0049902901 - 1235200 0.0055413457 0.0020016552 0.0046857445 - 1235300 0.0047674783 0.0024287352 0.0047379825 - 1235400 0.0057233285 0.002445846 0.0052180833 - 1235500 0.0055059385 0.0020603348 0.0047272738 - 1235600 0.0035404211 0.0020043585 0.0037192499 - 1235700 0.0057070168 0.0018251455 0.0045894818 - 1235800 0.0054710166 0.002228948 0.0048789717 - 1235900 0.0039764106 0.0021824128 0.0041084867 - 1236000 0.0048746016 0.0023671696 0.0047283047 - 1236100 0.0059101395 0.0025488036 0.0054115275 - 1236200 0.0049901216 0.0026593405 0.0050764307 - 1236300 0.0065171719 0.0022623216 0.0054190767 - 1236400 0.0049528886 0.0022921082 0.0046911636 - 1236500 0.0039931478 0.0022233683 0.0041575493 - 1236600 0.004893389 0.0018914065 0.0042616418 - 1236700 0.0051958075 0.0020781277 0.0045948469 - 1236800 0.006428876 0.0025620711 0.0056760579 - 1236900 0.0057591417 0.0030686558 0.0058582401 - 1237000 0.0057141551 0.0027688021 0.005536596 - 1237100 0.0061175797 0.0020805294 0.0050437321 - 1237200 0.0047172341 0.0019584215 0.0042433318 - 1237300 0.0045432816 0.0024178469 0.0046184989 - 1237400 0.0042130675 0.0023478731 0.0043885777 - 1237500 0.0043361222 0.0022112943 0.0043116035 - 1237600 0.0061992667 0.0022907719 0.0052935417 - 1237700 0.003776618 0.0023374851 0.0041667845 - 1237800 0.0053307368 0.0023049456 0.0048870212 - 1237900 0.0043382729 0.0022395823 0.0043409332 - 1238000 0.0043016439 0.0021542758 0.0042378846 - 1238100 0.0059859371 0.0019259586 0.0048253969 - 1238200 0.005344889 0.0020199149 0.0046088455 - 1238300 0.003976737 0.002278884 0.004205116 - 1238400 0.0039909835 0.0026023592 0.0045354918 - 1238500 0.0056286883 0.002334869 0.0050612649 - 1238600 0.0058031134 0.0023119051 0.0051227881 - 1238700 0.0059074796 0.0022243015 0.0050857369 - 1238800 0.0063755409 0.0018667249 0.0049548775 - 1238900 0.0038078742 0.001855116 0.0036995551 - 1239000 0.0049281625 0.0020325386 0.0044196173 - 1239100 0.0063726362 0.0018883841 0.0049751298 - 1239200 0.0034319835 0.0026940145 0.0043563815 - 1239300 0.0048807835 0.0026714625 0.005035592 - 1239400 0.0061473822 0.0019450109 0.0049226491 - 1239500 0.0034145554 0.0015045451 0.0031584704 - 1239600 0.0044328163 0.0014635049 0.0036106502 - 1239700 0.00379952 0.0017988299 0.0036392224 - 1239800 0.0047992195 0.002043694 0.004368316 - 1239900 0.0062659572 0.0017709376 0.0048060106 - 1240000 0.0049308356 0.0017247608 0.0041131343 - 1240100 0.0049449539 0.0015665742 0.0039617862 - 1240200 0.005803467 0.0017806763 0.0045917306 - 1240300 0.0056041204 0.0018243486 0.0045388444 - 1240400 0.0039573039 0.0015186488 0.0034354679 - 1240500 0.0043845858 0.0023025543 0.0044263381 - 1240600 0.004024584 0.0021148354 0.0040642433 - 1240700 0.0054133648 0.0019414303 0.0045635289 - 1240800 0.0047235432 0.0020199191 0.0043078853 - 1240900 0.0057660124 0.0020271434 0.0048200557 - 1241000 0.0049150405 0.0019919981 0.0043727208 - 1241100 0.0057187145 0.0017171797 0.0044871821 - 1241200 0.0042985718 0.0014768617 0.0035589824 - 1241300 0.0041385555 0.0020742721 0.0040788849 - 1241400 0.00501059 0.0028123287 0.0052393332 - 1241500 0.0063921949 0.0022959924 0.0053922118 - 1241600 0.0062644021 0.0020517286 0.0050860484 - 1241700 0.0073804379 0.0020427448 0.0056176444 - 1241800 0.0045787407 0.002277954 0.0044957816 - 1241900 0.0051952782 0.002304919 0.0048213819 - 1242000 0.0046827923 0.0020342912 0.0043025188 - 1242100 0.0052684227 0.001744761 0.0042966532 - 1242200 0.0056834162 0.0017502616 0.0045031664 - 1242300 0.0036431951 0.0014742469 0.0032389195 - 1242400 0.0042550911 0.0014568165 0.0035178762 - 1242500 0.0051477795 0.0016534031 0.0041468588 - 1242600 0.0044675827 0.0018749647 0.00403895 - 1242700 0.0060015067 0.0017737252 0.004680705 - 1242800 0.0044224139 0.0017524942 0.0038946009 - 1242900 0.0040277025 0.0013373081 0.0032882265 - 1243000 0.0077903842 0.0016882676 0.0054617349 - 1243100 0.0053430906 0.0019545873 0.0045426468 - 1243200 0.0049447682 0.0018871902 0.0042823123 - 1243300 0.0059080496 0.001682517 0.0045442285 - 1243400 0.0040276328 0.0020406104 0.003991495 - 1243500 0.0041143056 0.0022657198 0.0042585866 - 1243600 0.0048261133 0.0019765161 0.0043141647 - 1243700 0.0036433056 0.0021508215 0.0039155477 - 1243800 0.0041580299 0.0022962466 0.0043102923 - 1243900 0.0054054509 0.0019429551 0.0045612204 - 1244000 0.0030539324 0.0021602589 0.0036395074 - 1244100 0.0033893751 0.0027500569 0.0043917854 - 1244200 0.0053626505 0.0029715007 0.0055690346 - 1244300 0.0065091564 0.0029145613 0.0060674339 - 1244400 0.0071228679 0.0027039244 0.0061540635 - 1244500 0.0065876579 0.0026991709 0.0058900677 - 1244600 0.0053093129 0.0032123008 0.0057839992 - 1244700 0.006987052 0.0032989401 0.0066832934 - 1244800 0.0047797553 0.0029660193 0.0052812133 - 1244900 0.007095144 0.0019494858 0.0053861962 - 1245000 0.0052835689 0.0022563224 0.0048155511 - 1245100 0.0057418898 0.002885857 0.0056670849 - 1245200 0.0040715876 0.0031731832 0.0051453585 - 1245300 0.0047229904 0.0028963248 0.0051840232 - 1245400 0.003095711 0.0028463494 0.0043458344 - 1245500 0.0038725865 0.0023741172 0.0042499013 - 1245600 0.0058419464 0.0022147666 0.0050444594 - 1245700 0.0043959601 0.0022812967 0.0044105899 - 1245800 0.0047677993 0.0023697743 0.004679177 - 1245900 0.004892943 0.0025547437 0.0049247629 - 1246000 0.007894544 0.0027441203 0.00656804 - 1246100 0.0031893515 0.0033184994 0.0048633416 - 1246200 0.0048964471 0.0030776475 0.0054493641 - 1246300 0.0046172331 0.0021451121 0.0043815843 - 1246400 0.0051651233 0.0016076591 0.0041095157 - 1246500 0.0044594109 0.0015074191 0.0036674463 - 1246600 0.0036960575 0.0018362406 0.0036265184 - 1246700 0.0056261242 0.0020523228 0.0047774767 - 1246800 0.0063227359 0.0025646121 0.0056271873 - 1246900 0.0053813852 0.0022625165 0.0048691249 - 1247000 0.0051639871 0.0020673616 0.0045686678 - 1247100 0.0051954556 0.002669238 0.0051857868 - 1247200 0.004930802 0.0031635051 0.0055518624 - 1247300 0.0057482776 0.0027960734 0.0055803954 - 1247400 0.0050850224 0.002881808 0.0053448657 - 1247500 0.0063559825 0.0028008668 0.0058795458 - 1247600 0.0056856861 0.0022960405 0.0050500447 - 1247700 0.0047095565 0.0024055515 0.0046867429 - 1247800 0.006187156 0.002954424 0.0059513277 - 1247900 0.004530405 0.0035792014 0.0057736163 - 1248000 0.0045294568 0.0035629229 0.0057568786 - 1248100 0.0070295466 0.0029516876 0.0063566242 - 1248200 0.0046885379 0.0027011071 0.0049721176 - 1248300 0.0058452543 0.0026464451 0.0054777402 - 1248400 0.0054584687 0.0025581152 0.005202061 - 1248500 0.0060671649 0.0026113909 0.0055501739 - 1248600 0.0055918883 0.0020214102 0.0047299811 - 1248700 0.004523266 0.0021902838 0.0043812408 - 1248800 0.0065253154 0.00227167 0.0054323696 - 1248900 0.0050404107 0.0023595486 0.0048009976 - 1249000 0.0034864497 0.0020667344 0.0037554835 - 1249100 0.0045014515 0.0021673257 0.0043477163 - 1249200 0.004191657 0.0022342742 0.0042646081 - 1249300 0.0050300312 0.0021730971 0.0046095184 - 1249400 0.0052317936 0.0021966464 0.0047307964 - 1249500 0.005331759 0.0020765935 0.0046591643 - 1249600 0.0045618193 0.0018389406 0.0040485719 - 1249700 0.0051951008 0.0017623738 0.0042787507 - 1249800 0.0056998028 0.0019023752 0.0046632172 - 1249900 0.0059129152 0.0022496807 0.005113749 - 1250000 0.0052940849 0.0027700664 0.0053343888 - 1250100 0.0051532756 0.0024198653 0.0049159832 - 1250200 0.0045154402 0.0022467301 0.0044338964 - 1250300 0.0058858098 0.0025512052 0.0054021443 - 1250400 0.0052653818 0.0025784565 0.0051288758 - 1250500 0.0057810244 0.0025473468 0.0053475305 - 1250600 0.0053313643 0.0022839405 0.0048663201 - 1250700 0.0046852438 0.0023912268 0.0046606417 - 1250800 0.0044189454 0.0025559206 0.0046963473 - 1250900 0.003908807 0.0023499847 0.0042433131 - 1251000 0.0072700221 0.0019762438 0.0054976608 - 1251100 0.005241866 0.0020334382 0.004572467 - 1251200 0.0049898792 0.001787422 0.0042043948 - 1251300 0.004280811 0.0018863659 0.0039598838 - 1251400 0.0057228763 0.0019039961 0.0046760142 - 1251500 0.0053589766 0.0017944966 0.0043902509 - 1251600 0.0053039102 0.0017194333 0.0042885148 - 1251700 0.0051756292 0.0016517745 0.0041587199 - 1251800 0.0036042105 0.0022112791 0.0039570686 - 1251900 0.0058239065 0.0018934172 0.0047143719 - 1252000 0.0061243514 0.0016775045 0.0046439872 - 1252100 0.0046157588 0.0017356136 0.0039713717 - 1252200 0.0028382504 0.0021219107 0.0034966882 - 1252300 0.0057089171 0.0022779862 0.0050432429 - 1252400 0.0057277328 0.0024937588 0.0052681294 - 1252500 0.0035658874 0.0020417072 0.0037689339 - 1252600 0.0049755319 0.0019366739 0.0043466971 - 1252700 0.0046711615 0.0021699412 0.004432535 - 1252800 0.004315405 0.0022645294 0.0043548037 - 1252900 0.0066935114 0.0026386857 0.0058808553 - 1253000 0.0041401533 0.0026695803 0.0046749671 - 1253100 0.0035875286 0.0025757127 0.0043134218 - 1253200 0.005363691 0.0022827211 0.0048807589 - 1253300 0.0032826884 0.0020802296 0.0036702817 - 1253400 0.0043019855 0.0019818671 0.0040656413 - 1253500 0.0058663701 0.0021168621 0.0049583851 - 1253600 0.0058686211 0.0020946062 0.0049372196 - 1253700 0.0048306908 0.0025731901 0.004913056 - 1253800 0.0051982091 0.0022647518 0.0047826344 - 1253900 0.0057220162 0.0021559519 0.0049275535 - 1254000 0.0064522194 0.002147253 0.0052725467 - 1254100 0.0052211718 0.0021362962 0.0046653013 - 1254200 0.0041205626 0.0023760812 0.0043719787 - 1254300 0.0055882297 0.0025700577 0.0052768565 - 1254400 0.004884527 0.0022084548 0.0045743976 - 1254500 0.005180365 0.0020131971 0.0045224364 - 1254600 0.0061098196 0.0015883031 0.0045477469 - 1254700 0.0050090734 0.00153934 0.0039656099 - 1254800 0.00427303 0.0015992443 0.0036689932 - 1254900 0.0040224673 0.0020671933 0.0040155759 - 1255000 0.0050167958 0.002478413 0.0049084235 - 1255100 0.0049392632 0.0026458685 0.0050383241 - 1255200 0.006244506 0.002916698 0.0059413806 - 1255300 0.0046706661 0.0028031206 0.0050654745 - 1255400 0.0047253877 0.0025965393 0.004885399 - 1255500 0.0043701091 0.0025821638 0.0046989354 - 1255600 0.0049638207 0.0024757164 0.0048800671 - 1255700 0.0050497679 0.002709241 0.0051552223 - 1255800 0.0064005608 0.0021356945 0.0052359662 - 1255900 0.0060500088 0.0019223622 0.0048528352 - 1256000 0.0046656882 0.0023686365 0.0046285793 - 1256100 0.0044895513 0.0025674865 0.0047421129 - 1256200 0.0047775974 0.0025031397 0.0048172885 - 1256300 0.0053283614 0.0022174894 0.0047984145 - 1256400 0.0041130641 0.0021096928 0.0041019582 - 1256500 0.0043535074 0.0024933832 0.0046021134 - 1256600 0.0050263177 0.0027620741 0.0051966968 - 1256700 0.0046079301 0.002605662 0.0048376281 - 1256800 0.0069480556 0.0018968784 0.0052623429 - 1256900 0.005522555 0.0023096631 0.0049846506 - 1257000 0.005291689 0.0023794705 0.0049426324 - 1257100 0.0053675165 0.0022487453 0.0048486361 - 1257200 0.0065814821 0.0023939645 0.0055818699 - 1257300 0.0054650717 0.0029255245 0.0055726686 - 1257400 0.0051365143 0.0030409 0.0055288991 - 1257500 0.0041991243 0.0029288321 0.004962783 - 1257600 0.0048028384 0.0025940793 0.0049204541 - 1257700 0.0056457124 0.0024913369 0.0052259789 - 1257800 0.0046795314 0.0025721618 0.0048388099 - 1257900 0.0035392908 0.0024338562 0.0041482002 - 1258000 0.0047256003 0.0021195332 0.0044084958 - 1258100 0.0057558078 0.0019703004 0.0047582698 - 1258200 0.0043664471 0.002346211 0.0044612088 - 1258300 0.0045156938 0.0023822153 0.0045695045 - 1258400 0.005384514 0.0021016822 0.0047098061 - 1258500 0.0057489064 0.0018780586 0.0046626852 - 1258600 0.0042872648 0.0018434342 0.0039200781 - 1258700 0.003698113 0.0018222667 0.0036135401 - 1258800 0.0048925058 0.0018014152 0.0041712227 - 1258900 0.0046148283 0.0017216018 0.0039569093 - 1259000 0.004277507 0.0016719185 0.003743836 - 1259100 0.0041192508 0.0019326373 0.0039278994 - 1259200 0.004485483 0.0019388396 0.0041114954 - 1259300 0.0043447491 0.0022871433 0.0043916312 - 1259400 0.004648178 0.002163975 0.0044154362 - 1259500 0.0050437208 0.0020469027 0.004489955 - 1259600 0.0052003717 0.0017550119 0.0042739419 - 1259700 0.0054029674 0.0019504788 0.0045675411 - 1259800 0.0047191827 0.0027554542 0.0050413083 - 1259900 0.005498408 0.0023281712 0.0049914626 - 1260000 0.0058155796 0.0021893799 0.0050063013 - 1260100 0.0044537378 0.0024390519 0.0045963311 - 1260200 0.0054965664 0.0023968841 0.0050592834 - 1260300 0.0054454828 0.002361037 0.0049986927 - 1260400 0.0050638537 0.0023996042 0.0048524084 - 1260500 0.0045914982 0.0022619345 0.0044859414 - 1260600 0.0050153142 0.0024519988 0.0048812916 - 1260700 0.0070352772 0.0026982906 0.006106003 - 1260800 0.0039680685 0.0033932164 0.0053152496 - 1260900 0.0048518643 0.0033624118 0.0057125336 - 1261000 0.0037400276 0.0031797897 0.0049913656 - 1261100 0.0048214752 0.0029382891 0.0052736911 - 1261200 0.0054242064 0.0028402267 0.0054675767 - 1261300 0.005904405 0.0027167544 0.0055767006 - 1261400 0.0059163811 0.0025474059 0.005413153 - 1261500 0.0063522866 0.0021493945 0.0052262834 - 1261600 0.004787085 0.0022597336 0.0045784779 - 1261700 0.0047126012 0.0021188633 0.0044015295 - 1261800 0.0050303594 0.0020977856 0.0045343659 - 1261900 0.0050305614 0.0019679115 0.0044045897 - 1262000 0.0038857476 0.0016356642 0.0035178232 - 1262100 0.0051757636 0.0016714183 0.0041784287 - 1262200 0.0050755882 0.0022963014 0.0047547895 - 1262300 0.0044442903 0.0028051949 0.004957898 - 1262400 0.0046115364 0.0025811155 0.0048148285 - 1262500 0.0045978213 0.0024290828 0.0046561525 - 1262600 0.0042021484 0.0024218344 0.00445725 - 1262700 0.0059484082 0.002440528 0.0053217882 - 1262800 0.0052988389 0.0026516726 0.0052182977 - 1262900 0.0047690517 0.0028653833 0.0051753927 - 1263000 0.0059274781 0.0020919062 0.0049630284 - 1263100 0.00551961 0.0017718889 0.00444545 - 1263200 0.0046659403 0.0020708754 0.0043309402 - 1263300 0.0066492308 0.0024577785 0.0056784997 - 1263400 0.0043384199 0.0022926194 0.0043940416 - 1263500 0.0046786437 0.0023552944 0.0046215124 - 1263600 0.0081117179 0.0024477266 0.00637684 - 1263700 0.0070270083 0.0027513823 0.0061550895 - 1263800 0.0068596895 0.0027863642 0.0061090263 - 1263900 0.0056129986 0.0028311872 0.0055499834 - 1264000 0.0048651651 0.0028762078 0.0052327721 - 1264100 0.0057598174 0.0026949404 0.005484852 - 1264200 0.0036056624 0.0025236573 0.00427015 - 1264300 0.0054143172 0.0022470143 0.0048695742 - 1264400 0.005594979 0.0024930823 0.0052031503 - 1264500 0.0053945676 0.0025555437 0.0051685373 - 1264600 0.0054053854 0.002515013 0.0051332465 - 1264700 0.0051755967 0.0025257348 0.0050326644 - 1264800 0.006117553 0.0025010072 0.005464197 - 1264900 0.004120579 0.0026651547 0.0046610601 - 1265000 0.0037041865 0.0029995038 0.0047937191 - 1265100 0.0049951264 0.0029827541 0.0054022685 - 1265200 0.0041796225 0.0025406002 0.0045651048 - 1265300 0.0051935111 0.0025849979 0.0051006049 - 1265400 0.0042499019 0.0027199691 0.0047785154 - 1265500 0.0046336387 0.0025880601 0.0048324789 - 1265600 0.0048740112 0.0024656017 0.0048264509 - 1265700 0.0035154987 0.0027882154 0.0044910351 - 1265800 0.0046458142 0.0025509862 0.0048013025 - 1265900 0.0046462098 0.0024609568 0.0047114647 - 1266000 0.005121899 0.0027884087 0.0052693285 - 1266100 0.0051479903 0.0031376491 0.0056312069 - 1266200 0.0059481562 0.0028142476 0.0056953858 - 1266300 0.0058382403 0.002599435 0.0054273326 - 1266400 0.0055933474 0.0028408249 0.0055501026 - 1266500 0.0040635205 0.0024595149 0.0044277826 - 1266600 0.0046905431 0.0019839779 0.0042559598 - 1266700 0.0035428505 0.0021161738 0.003832242 - 1266800 0.0058736093 0.0021697168 0.0050147464 - 1266900 0.0041219641 0.0025220154 0.0045185918 - 1267000 0.0050073062 0.0023810284 0.0048064423 - 1267100 0.0055590026 0.0024038781 0.00509652 - 1267200 0.006112241 0.0026177984 0.0055784152 - 1267300 0.0054448763 0.002756427 0.005393789 - 1267400 0.0057510893 0.0023642022 0.0051498861 - 1267500 0.004726983 0.0022965078 0.0045861402 - 1267600 0.0052841632 0.0025536933 0.0051132098 - 1267700 0.004893576 0.0029233821 0.005293708 - 1267800 0.0052192321 0.0031144665 0.0056425321 - 1267900 0.0068439839 0.0025061132 0.0058211679 - 1268000 0.006015045 0.0020837816 0.004997319 - 1268100 0.0067004026 0.001849905 0.0050954125 - 1268200 0.0052155676 0.0024157609 0.0049420514 - 1268300 0.0053797659 0.0022264712 0.0048322953 - 1268400 0.006090211 0.0019831158 0.0049330618 - 1268500 0.0057234742 0.0019514436 0.0047237514 - 1268600 0.0040136207 0.0022929217 0.0042370192 - 1268700 0.0053206468 0.0021682533 0.0047454416 - 1268800 0.0050408184 0.0019052075 0.0043468539 - 1268900 0.0064632841 0.001808451 0.0049391042 - 1269000 0.0063654221 0.0023635958 0.0054468471 - 1269100 0.0049178974 0.002646587 0.0050286935 - 1269200 0.004558907 0.0024484067 0.0046566272 - 1269300 0.005183017 0.0016509455 0.0041614694 - 1269400 0.0048106869 0.0017051754 0.0040353518 - 1269500 0.0034839283 0.0019419014 0.0036294291 - 1269600 0.0050151894 0.0018527323 0.0042819646 - 1269700 0.0043271063 0.0019872363 0.0040831784 - 1269800 0.0041169398 0.0024216859 0.0044158287 - 1269900 0.0060725149 0.0021824588 0.0051238332 - 1270000 0.0036881158 0.0019589247 0.0037453557 - 1270100 0.0036529915 0.0019579495 0.0037273673 - 1270200 0.0043997901 0.0021169968 0.0042481451 - 1270300 0.0050831959 0.002049996 0.004512169 - 1270400 0.0043736466 0.0023178162 0.0044363013 - 1270500 0.0038346692 0.0028785936 0.0047360115 - 1270600 0.0038538815 0.0028418676 0.0047085915 - 1270700 0.0052714211 0.0026212423 0.0051745869 - 1270800 0.0059236599 0.001929483 0.0047987558 - 1270900 0.0056472623 0.0020782132 0.0048136059 - 1271000 0.0056543991 0.0021814364 0.0049202859 - 1271100 0.0055728695 0.0017650436 0.0044644023 - 1271200 0.00669089 0.0021438305 0.0053847303 - 1271300 0.0057294494 0.0025840571 0.0053592591 - 1271400 0.0058204713 0.0024865487 0.0053058395 - 1271500 0.0049648613 0.002011054 0.0044159087 - 1271600 0.0061488191 0.0022867356 0.0052650698 - 1271700 0.0064169485 0.0020398351 0.0051480446 - 1271800 0.0050070455 0.0020750005 0.0045002881 - 1271900 0.0044633557 0.0018492295 0.0040111675 - 1272000 0.0034659456 0.0018990853 0.0035779027 - 1272100 0.0051227402 0.0016317041 0.0041130314 - 1272200 0.0054004548 0.0012639756 0.0038798209 - 1272300 0.0047745581 0.0018941511 0.0042068276 - 1272400 0.0047879851 0.0021988857 0.004518066 - 1272500 0.0054188953 0.0025150331 0.0051398106 - 1272600 0.0032329649 0.0027299847 0.0042959521 - 1272700 0.0045381928 0.0022358111 0.0044339982 - 1272800 0.005448293 0.0025173538 0.0051563707 - 1272900 0.0051895648 0.0029809905 0.005494686 - 1273000 0.0080493198 0.0025570831 0.0064559723 - 1273100 0.0068926071 0.0022789551 0.0056175616 - 1273200 0.0072389935 0.0023297541 0.0058361416 - 1273300 0.0054306658 0.0027975617 0.0054280404 - 1273400 0.0065772332 0.0027566007 0.0059424481 - 1273500 0.0035954493 0.0027403812 0.004481927 - 1273600 0.0048382702 0.0027424797 0.0050860168 - 1273700 0.0067244737 0.0025106691 0.0057678361 - 1273800 0.0056770307 0.0022897857 0.0050395974 - 1273900 0.0045156029 0.0021286204 0.0043158655 - 1274000 0.0047463153 0.0020892833 0.0043882798 - 1274100 0.0053467924 0.0022288199 0.0048186725 - 1274200 0.004210154 0.0022996886 0.004338982 - 1274300 0.0058287445 0.0020791596 0.0049024578 - 1274400 0.0051212252 0.0018140554 0.0042946489 - 1274500 0.0053836841 0.0017111172 0.0043188392 - 1274600 0.0045995462 0.0021480291 0.0043759343 - 1274700 0.004736306 0.0021010662 0.0043952145 - 1274800 0.0045626016 0.0024020618 0.004612072 - 1274900 0.0057526691 0.0028701369 0.005656586 - 1275000 0.0052067339 0.0028076295 0.0053296412 - 1275100 0.0059893588 0.0021389463 0.005040042 - 1275200 0.0043640454 0.0021323025 0.004246137 - 1275300 0.0044244657 0.0019251339 0.0040682345 - 1275400 0.0054503622 0.0016327918 0.004272811 - 1275500 0.0059898545 0.001680761 0.0045820968 - 1275600 0.0049949558 0.0021944837 0.0046139154 - 1275700 0.0053151612 0.0020638268 0.004638358 - 1275800 0.0035133146 0.0021728542 0.003874616 - 1275900 0.0042820938 0.0020820809 0.0041562201 - 1276000 0.006302479 0.0019631955 0.0050159588 - 1276100 0.0075173802 0.0021911947 0.0058324257 - 1276200 0.0040415786 0.0025754661 0.0045331058 - 1276300 0.0037149708 0.0029517072 0.0047511462 - 1276400 0.0052395791 0.0025466854 0.0050846065 - 1276500 0.0054035544 0.0018786156 0.0044959622 - 1276600 0.0052663016 0.0019922776 0.0045431425 - 1276700 0.0035341683 0.0022344873 0.0039463501 - 1276800 0.004792851 0.0018843444 0.0042058816 - 1276900 0.0051386003 0.001809417 0.0042984265 - 1277000 0.0038144222 0.0021995103 0.004047121 - 1277100 0.0050619792 0.0019032495 0.0043551457 - 1277200 0.0050635874 0.0016043514 0.0040570266 - 1277300 0.005892845 0.0018388632 0.00469321 - 1277400 0.0054994829 0.0020686446 0.0047324566 - 1277500 0.006449458 0.0019685343 0.0050924905 - 1277600 0.0046668781 0.0023198812 0.0045804003 - 1277700 0.0038129965 0.0023189199 0.0041658401 - 1277800 0.0050773616 0.0018566298 0.0043159768 - 1277900 0.0044451025 0.0018188709 0.0039719674 - 1278000 0.0058034958 0.0019452732 0.0047563415 - 1278100 0.0036896975 0.0021041152 0.0038913125 - 1278200 0.0060281793 0.0020339102 0.0049538095 - 1278300 0.0048170914 0.0022418237 0.0045751023 - 1278400 0.0061225662 0.0023684487 0.0053340667 - 1278500 0.0047394519 0.0026189651 0.0049146371 - 1278600 0.0046273216 0.0027322041 0.004973563 - 1278700 0.0048580758 0.0024011987 0.0047543292 - 1278800 0.0058413855 0.0024757388 0.0053051599 - 1278900 0.0068279367 0.002575051 0.0058823328 - 1279000 0.0041608637 0.0038182758 0.0058336941 - 1279100 0.0039574372 0.0036643829 0.0055812665 - 1279200 0.0073424393 0.0031405014 0.0066969955 - 1279300 0.0069274582 0.0031659309 0.0065214184 - 1279400 0.0062037888 0.0030355417 0.0060405018 - 1279500 0.0047645041 0.0031335263 0.0054413329 - 1279600 0.0072831085 0.0024789868 0.0060067425 - 1279700 0.0063648036 0.0022177982 0.0053007499 - 1279800 0.0046030873 0.0021134042 0.0043430246 - 1279900 0.0045734686 0.0025056312 0.004720905 - 1280000 0.0054448211 0.0028613583 0.0054986935 - 1280100 0.0047755977 0.002957628 0.0052708081 - 1280200 0.0049864165 0.0024774675 0.0048927629 - 1280300 0.0048303351 0.0022050035 0.0045446971 - 1280400 0.0037687861 0.0020989046 0.0039244104 - 1280500 0.0048720666 0.0020236906 0.0043835978 - 1280600 0.0041780474 0.0020881521 0.0041118938 - 1280700 0.0037508529 0.0022478487 0.0040646681 - 1280800 0.0048334227 0.0024601944 0.0048013835 - 1280900 0.004866536 0.0025403803 0.0048976086 - 1281000 0.005357517 0.0023480616 0.0049431089 - 1281100 0.007081713 0.0028770828 0.0063072875 - 1281200 0.0048786822 0.0035933942 0.0059565059 - 1281300 0.0065024741 0.0029399244 0.0060895603 - 1281400 0.0044867118 0.0023828678 0.0045561188 - 1281500 0.0064076919 0.0020963473 0.0052000731 - 1281600 0.0041094339 0.0022930052 0.0042835122 - 1281700 0.0035088027 0.0025446943 0.0042442706 - 1281800 0.0044792103 0.0027133779 0.0048829954 - 1281900 0.0053105081 0.0022973717 0.004869649 - 1282000 0.0058249827 0.0024108865 0.0052323625 - 1282100 0.0043288694 0.0025181884 0.0046149845 - 1282200 0.0047727959 0.0022762186 0.0045880416 - 1282300 0.0057292503 0.0019293189 0.0047044245 - 1282400 0.0046039653 0.0016641086 0.0038941543 - 1282500 0.0068539171 0.0020208918 0.0053407578 - 1282600 0.0052448539 0.0023453854 0.0048858615 - 1282700 0.0053703258 0.0021306929 0.0047319445 - 1282800 0.0049612464 0.0020056242 0.0044087279 - 1282900 0.0059366497 0.002052736 0.0049283007 - 1283000 0.0033837336 0.0022902157 0.0039292117 - 1283100 0.003787647 0.0021245712 0.0039592127 - 1283200 0.0034226759 0.0023977189 0.0040555776 - 1283300 0.0049076598 0.0022182461 0.0045953938 - 1283400 0.0060122274 0.0018784345 0.0047906071 - 1283500 0.0046374794 0.0023414151 0.0045876942 - 1283600 0.0039392385 0.0022086089 0.0041166775 - 1283700 0.0052832368 0.0020530878 0.0046121556 - 1283800 0.0046127545 0.0024056402 0.0046399432 - 1283900 0.0046825384 0.0025795085 0.004847613 - 1284000 0.0048764729 0.0026838852 0.0050459267 - 1284100 0.0051390955 0.0029242529 0.0054135023 - 1284200 0.0035898256 0.0031292177 0.0048680394 - 1284300 0.0058622857 0.0029495029 0.0057890475 - 1284400 0.0032257894 0.0027082216 0.0042707133 - 1284500 0.0055081072 0.0025489176 0.0052169071 - 1284600 0.0047205585 0.002521007 0.0048075275 - 1284700 0.0062537564 0.0024854074 0.0055145706 - 1284800 0.0051173461 0.0022817812 0.0047604957 - 1284900 0.006335434 0.0018494295 0.0049181553 - 1285000 0.0045391072 0.0023631691 0.0045617991 - 1285100 0.0043489659 0.0026086388 0.0047151692 - 1285200 0.0050695706 0.0023520548 0.0048076281 - 1285300 0.0052618673 0.0023386651 0.0048873821 - 1285400 0.0048140219 0.0023881348 0.0047199266 - 1285500 0.0034291253 0.0022948654 0.003955848 - 1285600 0.0047697153 0.002847982 0.0051583128 - 1285700 0.0069806976 0.0027773559 0.0061586313 - 1285800 0.0040963419 0.0028422471 0.0048264126 - 1285900 0.0055955035 0.0028761195 0.0055864415 - 1286000 0.0046638362 0.0029338249 0.0051928706 - 1286100 0.0066887506 0.0032045186 0.0064443822 - 1286200 0.004281666 0.003406107 0.005480039 - 1286300 0.0075467096 0.002842744 0.0064981815 - 1286400 0.0061818072 0.0025135825 0.0055078953 - 1286500 0.0063239327 0.0021569168 0.0052200717 - 1286600 0.0047966338 0.0019203679 0.0042437374 - 1286700 0.0049568917 0.0019823801 0.0043833745 - 1286800 0.0050851044 0.0019916719 0.0044547693 - 1286900 0.0038203463 0.0017507089 0.0036011891 - 1287000 0.0042748099 0.001614616 0.0036852271 - 1287100 0.0043224826 0.0019437723 0.0040374748 - 1287200 0.0044769301 0.0018963357 0.0040648487 - 1287300 0.0050949924 0.0020600429 0.0045279298 - 1287400 0.0072118041 0.0021476597 0.0056408773 - 1287500 0.0053817812 0.002173356 0.0047801563 - 1287600 0.0060568623 0.0023285637 0.0052623564 - 1287700 0.0054102665 0.0025510062 0.0051716041 - 1287800 0.0039157062 0.002494659 0.0043913292 - 1287900 0.0034439124 0.0024845925 0.0041527376 - 1288000 0.0052143332 0.0024074442 0.0049331368 - 1288100 0.004584184 0.0026676725 0.0048881366 - 1288200 0.0052976488 0.0025527301 0.0051187788 - 1288300 0.0051404273 0.0024200461 0.0049099406 - 1288400 0.0053864798 0.0025649907 0.0051740668 - 1288500 0.0058319276 0.0022525462 0.0050773862 - 1288600 0.0050467973 0.0026424966 0.005087039 - 1288700 0.0040845071 0.002179605 0.0041580381 - 1288800 0.0046423035 0.0021262386 0.0043748543 - 1288900 0.0060296353 0.0021972359 0.0051178405 - 1289000 0.0045404212 0.0021195238 0.0043187903 - 1289100 0.0044094403 0.0020349185 0.0041707411 - 1289200 0.0054471511 0.0021730514 0.0048115152 - 1289300 0.0057995312 0.002165052 0.0049741999 - 1289400 0.0043979301 0.002287874 0.0044181213 - 1289500 0.0046353374 0.0020704133 0.0043156548 - 1289600 0.0045194832 0.0019933791 0.0041825038 - 1289700 0.0046821702 0.0024486703 0.0047165965 - 1289800 0.0048861478 0.00322119 0.0055879178 - 1289900 0.0066851539 0.0029991519 0.0062372733 - 1290000 0.0055016397 0.002548459 0.0052133157 - 1290100 0.0045345344 0.0021762822 0.0043726973 - 1290200 0.005046144 0.0022061273 0.0046503533 - 1290300 0.004815596 0.0024521573 0.0047847116 - 1290400 0.0041293538 0.0025546914 0.0045548472 - 1290500 0.0047233136 0.0022415116 0.0045293666 - 1290600 0.0045613929 0.0022961169 0.0045055416 - 1290700 0.0057411811 0.0024032826 0.0051841672 - 1290800 0.004858854 0.0024783056 0.0048318131 - 1290900 0.0061352039 0.0028119659 0.0057837053 - 1291000 0.0034925672 0.0032017775 0.0048934898 - 1291100 0.0055603675 0.002889636 0.005582939 - 1291200 0.006003773 0.0036041555 0.006512233 - 1291300 0.0042455057 0.0033123339 0.0053687507 - 1291400 0.0052095932 0.0025423314 0.0050657281 - 1291500 0.005900647 0.0023954565 0.0052535824 - 1291600 0.0048225696 0.0019939535 0.0043298856 - 1291700 0.0055703022 0.0020256229 0.004723738 - 1291800 0.005000291 0.0021047392 0.0045267552 - 1291900 0.0038942105 0.0025379841 0.0044242424 - 1292000 0.0042634486 0.0028009091 0.004866017 - 1292100 0.0049206109 0.0027884001 0.005171821 - 1292200 0.0051542356 0.0025507607 0.0050473436 - 1292300 0.0059494275 0.0027376293 0.0056193832 - 1292400 0.004254004 0.0029220243 0.0049825575 - 1292500 0.0063668871 0.0026389121 0.0057228731 - 1292600 0.0046253879 0.0023340603 0.0045744825 - 1292700 0.0027944644 0.0022530854 0.0036066541 - 1292800 0.004940825 0.0025278745 0.0049210866 - 1292900 0.0046408419 0.0026507808 0.0048986886 - 1293000 0.0058365468 0.0024233075 0.0052503849 - 1293100 0.0055170462 0.0027343692 0.0054066884 - 1293200 0.0061249813 0.0034896714 0.0064564592 - 1293300 0.0060021342 0.0034744703 0.0063817541 - 1293400 0.0067494085 0.0036111321 0.0068803769 - 1293500 0.0048118459 0.0039735676 0.0063043055 - 1293600 0.005277314 0.0037894625 0.0063456614 - 1293700 0.0040811921 0.0031665327 0.0051433602 - 1293800 0.0053372178 0.0030764463 0.0056616612 - 1293900 0.0044746794 0.0034413389 0.0056087618 - 1294000 0.005379032 0.0033656172 0.0059710858 - 1294100 0.0062371457 0.0034749766 0.0064960941 - 1294200 0.0065969088 0.0034673699 0.0066627476 - 1294300 0.005748518 0.0034818957 0.0062663341 - 1294400 0.004776456 0.0032827255 0.0055963213 - 1294500 0.0052245739 0.0031232448 0.0056538978 - 1294600 0.0055192741 0.0032293454 0.0059027438 - 1294700 0.0056277333 0.0037427341 0.0064686674 - 1294800 0.0041575208 0.0032730166 0.0052868157 - 1294900 0.0064073053 0.0027902714 0.0058938099 - 1295000 0.0044645509 0.0029290562 0.005091573 - 1295100 0.0060279306 0.00242134 0.0053411189 - 1295200 0.004316886 0.0021133018 0.0042042935 - 1295300 0.0038075525 0.0020200234 0.0038643066 - 1295400 0.0061587533 0.002303015 0.0052861611 - 1295500 0.0041703776 0.0029753769 0.0049954035 - 1295600 0.0042256827 0.002605182 0.0046519971 - 1295700 0.00511659 0.0026034508 0.0050817991 - 1295800 0.0047528552 0.0030627162 0.0053648804 - 1295900 0.0049079279 0.0028354998 0.0052127773 - 1296000 0.0044802857 0.0026455852 0.0048157236 - 1296100 0.0055264197 0.0023943634 0.0050712229 - 1296200 0.0058229966 0.002232791 0.005053305 - 1296300 0.0044870973 0.0021870901 0.0043605278 - 1296400 0.0043727981 0.002362077 0.004480151 - 1296500 0.0060162428 0.0022883869 0.0052025045 - 1296600 0.0051169221 0.0024197885 0.0048982977 - 1296700 0.0061633637 0.0026637064 0.0056490857 - 1296800 0.0038074607 0.0026839864 0.0045282251 - 1296900 0.004437799 0.0027971168 0.0049466757 - 1297000 0.0052040017 0.0030055743 0.0055262626 - 1297100 0.0057486932 0.0028997721 0.0056842953 - 1297200 0.0064793816 0.0029016399 0.0060400903 - 1297300 0.0048409695 0.0030354571 0.0053803017 - 1297400 0.0051753506 0.0029149012 0.0054217117 - 1297500 0.0045719507 0.0029962842 0.0052108228 - 1297600 0.0042330336 0.0026701866 0.0047205623 - 1297700 0.0059075468 0.0024958682 0.0053573361 - 1297800 0.0058920119 0.0027422346 0.0055961779 - 1297900 0.006884647 0.0027628241 0.006097575 - 1298000 0.0055174813 0.003073784 0.0057463141 - 1298100 0.0066868528 0.0031085375 0.0063474818 - 1298200 0.003830987 0.0032062489 0.0050618832 - 1298300 0.0043861602 0.0027548725 0.0048794188 - 1298400 0.004570615 0.0024642115 0.0046781032 - 1298500 0.0048022362 0.0023428191 0.0046689022 - 1298600 0.0048892631 0.0025882173 0.0049564541 - 1298700 0.0051745235 0.0026441548 0.0051505646 - 1298800 0.0049471341 0.0025284962 0.0049247643 - 1298900 0.003679593 0.0024152399 0.0041975427 - 1299000 0.0047307403 0.0026222504 0.0049137028 - 1299100 0.0037958256 0.0032150672 0.0050536703 - 1299200 0.0036344963 0.0030787989 0.004839258 - 1299300 0.0054537457 0.0024380877 0.0050797458 - 1299400 0.006060622 0.0020960634 0.0050316772 - 1299500 0.0046659051 0.0028779847 0.0051380325 - 1299600 0.0040003475 0.0033352742 0.0052729425 - 1299700 0.004340343 0.0030103902 0.0051127438 - 1299800 0.0069633486 0.0023517461 0.0057246181 - 1299900 0.0044592952 0.0027200292 0.0048800003 - 1300000 0.0038296562 0.0028113159 0.0046663056 - 1300100 0.0060201146 0.0024384309 0.0053544239 - 1300200 0.0065376802 0.0023236078 0.0054902967 - 1300300 0.004719727 0.0023967682 0.004682886 - 1300400 0.0040748627 0.0023205396 0.0042943012 - 1300500 0.0038573324 0.002396932 0.0042653274 - 1300600 0.0055863434 0.0020235282 0.0047294133 - 1300700 0.0060967855 0.0020999905 0.005053121 - 1300800 0.0051006236 0.0020750363 0.0045456509 - 1300900 0.0043702175 0.0025221597 0.0046389838 - 1301000 0.0063017495 0.0024325598 0.0054849697 - 1301100 0.004423975 0.0024009547 0.0045438175 - 1301200 0.0055266716 0.0027406919 0.0054176734 - 1301300 0.0049299754 0.003066513 0.0054544699 - 1301400 0.005242104 0.0031496419 0.005688786 - 1301500 0.0057021425 0.0031480319 0.0059100071 - 1301600 0.0055851721 0.0025869804 0.0052922981 - 1301700 0.0056344151 0.0023206745 0.0050498443 - 1301800 0.0065892392 0.0021104516 0.0053021143 - 1301900 0.0054126842 0.0022865177 0.0049082866 - 1302000 0.0056250192 0.0023445507 0.0050691694 - 1302100 0.0058567594 0.0020047945 0.0048416623 - 1302200 0.0048603921 0.0021826516 0.004536904 - 1302300 0.0048524701 0.0026448889 0.0049953041 - 1302400 0.0046197117 0.0025350023 0.0047726751 - 1302500 0.0059416704 0.0024585463 0.0053365429 - 1302600 0.0041938038 0.0024621638 0.0044935375 - 1302700 0.0046746321 0.0024965625 0.0047608374 - 1302800 0.0046112315 0.0026276196 0.0048611848 - 1302900 0.0055839956 0.0026995854 0.0054043333 - 1303000 0.0044404271 0.0028008981 0.00495173 - 1303100 0.0041615144 0.0030291805 0.005044914 - 1303200 0.0035692272 0.0029663074 0.0046951518 - 1303300 0.0043116154 0.0028252291 0.0049136678 - 1303400 0.0075539651 0.0026299938 0.0062889457 - 1303500 0.0056644886 0.003310817 0.0060545537 - 1303600 0.0074436378 0.0034947017 0.0071002138 - 1303700 0.0051459946 0.0031423149 0.005634906 - 1303800 0.004554309 0.0028653651 0.0050713585 - 1303900 0.0046625471 0.0024539978 0.0047124191 - 1304000 0.0086195105 0.0019904523 0.0061655276 - 1304100 0.0052924219 0.0025605624 0.0051240793 - 1304200 0.0057177877 0.0026454658 0.0054150192 - 1304300 0.0075197471 0.002433864 0.0060762415 - 1304400 0.0047356113 0.0026326027 0.0049264144 - 1304500 0.0059167699 0.0024866439 0.0053525793 - 1304600 0.0031989391 0.0027161534 0.0042656395 - 1304700 0.0059111632 0.0030626962 0.0059259158 - 1304800 0.0061844009 0.0035542282 0.0065497974 - 1304900 0.0051251127 0.003138996 0.0056214725 - 1305000 0.0066526319 0.0022380795 0.0054604481 - 1305100 0.0039837433 0.0021924998 0.0041221254 - 1305200 0.0056528241 0.002435391 0.0051734777 - 1305300 0.0046622491 0.002339628 0.0045979049 - 1305400 0.0062092438 0.0023667011 0.0053743035 - 1305500 0.0054266208 0.0027479987 0.0053765181 - 1305600 0.0063534719 0.002721084 0.005798547 - 1305700 0.0060235185 0.0027950514 0.0057126931 - 1305800 0.004633712 0.0027901674 0.0050346216 - 1305900 0.0047814015 0.0026752888 0.0049912801 - 1306000 0.007456621 0.0016913705 0.0053031713 - 1306100 0.0048302248 0.0013143558 0.003653996 - 1306200 0.005293255 0.0015010486 0.0040649689 - 1306300 0.0059032821 0.0018312082 0.0046906105 - 1306400 0.0070912426 0.00232095 0.0057557706 - 1306500 0.0046952946 0.0032948764 0.0055691597 - 1306600 0.0056029605 0.0030919796 0.0058059136 - 1306700 0.006682492 0.0023697816 0.0056066137 - 1306800 0.0046124668 0.0018709543 0.0041051179 - 1306900 0.0041602675 0.0019885625 0.0040036921 - 1307000 0.0052943388 0.0020131381 0.0045775834 - 1307100 0.0059622923 0.0017661021 0.0046540874 - 1307200 0.0050239974 0.0016888104 0.0041223091 - 1307300 0.0046454497 0.0020899035 0.0043400432 - 1307400 0.0040564403 0.002435565 0.0044004033 - 1307500 0.0061032142 0.0021375068 0.0050937512 - 1307600 0.0061170493 0.0020569854 0.0050199311 - 1307700 0.0046977623 0.0020313531 0.0043068317 - 1307800 0.005081132 0.0021348384 0.0045960118 - 1307900 0.0038160407 0.0020515868 0.0038999816 - 1308000 0.0057975484 0.0017762873 0.0045844748 - 1308100 0.0056038699 0.0023448766 0.0050592511 - 1308200 0.0027211948 0.0023355951 0.0036536738 - 1308300 0.0031335772 0.0019526396 0.003470466 - 1308400 0.0046713061 0.0019360729 0.0041987368 - 1308500 0.0042611148 0.0017894489 0.0038534264 - 1308600 0.0046446003 0.0018539057 0.004103634 - 1308700 0.0044153849 0.0019696363 0.0041083383 - 1308800 0.0047845204 0.0022124789 0.0045299809 - 1308900 0.0040252719 0.0027255954 0.0046753364 - 1309000 0.004801004 0.0023736481 0.0046991344 - 1309100 0.006959958 0.0020287396 0.0053999693 - 1309200 0.004550505 0.0026413017 0.0048454526 - 1309300 0.0048033008 0.0031968762 0.005523475 - 1309400 0.0058189786 0.0035973973 0.0064159651 - 1309500 0.0042502966 0.003291709 0.0053504465 - 1309600 0.0054896109 0.0035236263 0.0061826566 - 1309700 0.0052918622 0.0030799686 0.0056432143 - 1309800 0.0045868128 0.0025666216 0.0047883591 - 1309900 0.0060925411 0.0021452002 0.0050962748 - 1310000 0.0070919688 0.0024413334 0.0058765057 - 1310100 0.0056974646 0.0026906491 0.0054503585 - 1310200 0.0049215875 0.0029137362 0.0052976301 - 1310300 0.0063790799 0.0026703504 0.0057602172 - 1310400 0.00616978 0.0028168275 0.0058053147 - 1310500 0.006857825 0.0028337436 0.0061555026 - 1310600 0.0075962849 0.0025291558 0.0062086063 - 1310700 0.0052724335 0.0026284933 0.0051823283 - 1310800 0.0046006162 0.0027972408 0.0050256643 - 1310900 0.0047445129 0.0025675546 0.0048656781 - 1311000 0.0044299631 0.0022842106 0.004429974 - 1311100 0.0035889954 0.0025668812 0.0043053009 - 1311200 0.0058840888 0.0025185278 0.0053686333 - 1311300 0.0037606718 0.0031535751 0.0049751505 - 1311400 0.0056131621 0.0032141645 0.0059330399 - 1311500 0.0062993608 0.0031596062 0.0062108591 - 1311600 0.0033833763 0.0030387867 0.0046776096 - 1311700 0.0058443372 0.002550865 0.0053817158 - 1311800 0.005498277 0.0024977241 0.005160952 - 1311900 0.0052511813 0.0028211448 0.0053646858 - 1312000 0.0050043128 0.0023100887 0.0047340528 - 1312100 0.0052212053 0.0019058932 0.0044349145 - 1312200 0.0056921982 0.0018439299 0.0046010884 - 1312300 0.0038305369 0.0020287042 0.0038841206 - 1312400 0.0043073746 0.0018391418 0.0039255264 - 1312500 0.0065964024 0.001863998 0.0050591304 - 1312600 0.0046788011 0.0018124273 0.0040787215 - 1312700 0.0048105844 0.0017493588 0.0040794857 - 1312800 0.0068537531 0.0018377602 0.0051575469 - 1312900 0.0029005875 0.0023323374 0.0037373095 - 1313000 0.0054008371 0.0022103283 0.0048263588 - 1313100 0.0044776676 0.002051426 0.0042202962 - 1313200 0.0076773103 0.0016271142 0.0053458114 - 1313300 0.0048130196 0.0019172189 0.0042485253 - 1313400 0.0045021401 0.0021476983 0.0043284224 - 1313500 0.0062965366 0.0015903403 0.0046402252 - 1313600 0.0069658982 0.0017869116 0.0051610186 - 1313700 0.0050262849 0.0024805189 0.0049151256 - 1313800 0.0055742062 0.0028937752 0.0055937813 - 1313900 0.0057535897 0.0034574039 0.0062442989 - 1314000 0.0037628017 0.0034830954 0.0053057025 - 1314100 0.0048461786 0.0031172735 0.0054646412 - 1314200 0.0057819426 0.0029704063 0.0057710347 - 1314300 0.0064140473 0.0032407872 0.0063475914 - 1314400 0.0056980152 0.0035887562 0.0063487323 - 1314500 0.0054516297 0.0031483364 0.0057889696 - 1314600 0.0052912801 0.0030188315 0.0055817953 - 1314700 0.0063342463 0.0024933201 0.0055614706 - 1314800 0.0065404081 0.0024060224 0.0055740326 - 1314900 0.0068318769 0.0023149008 0.0056240912 - 1315000 0.0041929874 0.00272503 0.0047560083 - 1315100 0.0050221764 0.0024650781 0.0048976948 - 1315200 0.0050488053 0.001992144 0.004437659 - 1315300 0.0037998177 0.0018829724 0.003723509 - 1315400 0.0060248305 0.0021299462 0.0050482235 - 1315500 0.0061274232 0.0022738278 0.0052417985 - 1315600 0.0058109339 0.0020893828 0.004904054 - 1315700 0.0052543069 0.0021579749 0.0047030298 - 1315800 0.0057726217 0.0022469975 0.0050431111 - 1315900 0.0072054859 0.0030993114 0.0065894686 - 1316000 0.0043301879 0.0037581146 0.0058555493 - 1316100 0.0054082115 0.0033239738 0.0059435762 - 1316200 0.0045062938 0.0029033682 0.0050861042 - 1316300 0.0049168056 0.0030019247 0.0053835024 - 1316400 0.0051851836 0.0029407412 0.0054523145 - 1316500 0.005285561 0.0025437415 0.0051039351 - 1316600 0.0059203691 0.0023069911 0.0051746699 - 1316700 0.0052673328 0.0021521715 0.0047035358 - 1316800 0.0052258605 0.0017174975 0.0042487737 - 1316900 0.0059577412 0.0016150508 0.0045008317 - 1317000 0.0027082396 0.0017315117 0.0030433153 - 1317100 0.0042515004 0.0014016511 0.0034609716 - 1317200 0.0054153371 0.0016271594 0.0042502133 - 1317300 0.0054249153 0.0018136621 0.0044413554 - 1317400 0.0059212403 0.0023568706 0.0052249714 - 1317500 0.0052377124 0.0026620327 0.0051990496 - 1317600 0.0048178299 0.0027629361 0.0050965725 - 1317700 0.006659327 0.0023071912 0.0055328027 - 1317800 0.0047547638 0.0020389067 0.0043419954 - 1317900 0.0031705047 0.0020734899 0.0036092031 - 1318000 0.0052329294 0.0020842421 0.0046189423 - 1318100 0.0048743014 0.0019927003 0.00435369 - 1318200 0.0057364376 0.0024611329 0.0052397199 - 1318300 0.0054642239 0.0027212341 0.0053679676 - 1318400 0.0054065882 0.0029979774 0.0056167935 - 1318500 0.0058297772 0.0033003627 0.0061241611 - 1318600 0.0062027141 0.002913958 0.0059183977 - 1318700 0.0071287264 0.0028761232 0.0063291 - 1318800 0.0058002414 0.0034346216 0.0062441136 - 1318900 0.0067401316 0.0033586488 0.0066234001 - 1319000 0.0042134386 0.0025922133 0.0046330976 - 1319100 0.0048967079 0.0018087897 0.0041806325 - 1319200 0.0037246548 0.0020956462 0.0038997758 - 1319300 0.0045792605 0.002351358 0.0045694373 - 1319400 0.0040727466 0.0020148305 0.0039875671 - 1319500 0.0051870074 0.0020849562 0.0045974129 - 1319600 0.0046243118 0.0025719486 0.0048118496 - 1319700 0.0067238334 0.0026222059 0.0058790627 - 1319800 0.0049413188 0.0022117022 0.0046051535 - 1319900 0.0051431357 0.0019248779 0.0044160842 - 1320000 0.0040072146 0.0019473083 0.0038883029 - 1320100 0.0053366539 0.0016771373 0.0042620791 - 1320200 0.0037413567 0.0017120596 0.0035242792 - 1320300 0.0050318459 0.0017610079 0.0041983082 - 1320400 0.0064347074 0.0017029411 0.0048197525 - 1320500 0.0037608609 0.0019024995 0.0037241665 - 1320600 0.0039884612 0.0019570078 0.0038889187 - 1320700 0.0043248644 0.0021416397 0.0042364959 - 1320800 0.0048114321 0.0017844097 0.0041149471 - 1320900 0.0047395049 0.0017854068 0.0040811045 - 1321000 0.004818463 0.0017061329 0.0040400759 - 1321100 0.0046053516 0.0019672793 0.0041979965 - 1321200 0.0054628543 0.0023179918 0.0049640619 - 1321300 0.0055804938 0.0030855144 0.0057885661 - 1321400 0.0051888889 0.0025923166 0.0051056847 - 1321500 0.0058107464 0.0022320493 0.0050466296 - 1321600 0.005442017 0.0020282938 0.0046642708 - 1321700 0.005097286 0.0019144713 0.0043834692 - 1321800 0.0058237191 0.0021584466 0.0049793105 - 1321900 0.0032567102 0.0026366459 0.0042141149 - 1322000 0.0056461974 0.0020955612 0.0048304381 - 1322100 0.0047776123 0.0020441572 0.0043583131 - 1322200 0.0052094126 0.0021450647 0.0046683739 - 1322300 0.0049936822 0.0025233456 0.0049421604 - 1322400 0.0057426835 0.0027080528 0.0054896651 - 1322500 0.006591027 0.0029686884 0.0061612172 - 1322600 0.0053922485 0.0028461152 0.0054579856 - 1322700 0.004014444 0.0027285587 0.0046730551 - 1322800 0.0037287623 0.0022288103 0.0040349296 - 1322900 0.0058368854 0.0020861196 0.0049133609 - 1323000 0.005631828 0.0023106332 0.0050385499 - 1323100 0.0074959955 0.0024784357 0.0061093085 - 1323200 0.004761421 0.0031405469 0.0054468602 - 1323300 0.0046685592 0.002541018 0.0048023513 - 1323400 0.0045125752 0.002170558 0.0043563366 - 1323500 0.0065552779 0.0022174467 0.0053926595 - 1323600 0.0047468403 0.0021286126 0.0044278634 - 1323700 0.0041211634 0.0025648095 0.0045609981 - 1323800 0.004203325 0.0028280897 0.0048640752 - 1323900 0.0047060877 0.0025866559 0.0048661672 - 1324000 0.0059285379 0.002253259 0.0051248945 - 1324100 0.005210881 0.0022260071 0.0047500276 - 1324200 0.0052515764 0.0021981356 0.0047418679 - 1324300 0.0052896132 0.0022916874 0.0048538438 - 1324400 0.0064688124 0.0027878465 0.0059211775 - 1324500 0.0026505475 0.0031246163 0.0044084752 - 1324600 0.0045054783 0.002260094 0.004442435 - 1324700 0.0044549722 0.0019247253 0.0040826025 - 1324800 0.0044392253 0.0022468111 0.0043970608 - 1324900 0.0048567716 0.0020120918 0.0043645905 - 1325000 0.0039150215 0.001908425 0.0038047636 - 1325100 0.0051480328 0.0018407952 0.0043343735 - 1325200 0.0052965227 0.0023220547 0.0048875579 - 1325300 0.004839946 0.0025121856 0.0048565345 - 1325400 0.0050598996 0.0026038404 0.0050547292 - 1325500 0.0043991967 0.0026205252 0.0047513861 - 1325600 0.0052121009 0.002583058 0.0051076694 - 1325700 0.0043334556 0.00250869 0.0046077076 - 1325800 0.0054377906 0.0025171968 0.0051511267 - 1325900 0.0050828747 0.0024079516 0.004869969 - 1326000 0.0060158419 0.0024589928 0.0053729163 - 1326100 0.005108652 0.0025896645 0.0050641679 - 1326200 0.0048385569 0.0026779229 0.0050215989 - 1326300 0.0053661626 0.002694689 0.005293924 - 1326400 0.0056024574 0.0022262695 0.0049399598 - 1326500 0.0063696665 0.0017841321 0.0048694393 - 1326600 0.0049504127 0.002247982 0.0046458381 - 1326700 0.0053396156 0.0025312235 0.0051175998 - 1326800 0.0064460538 0.0025551822 0.0056774895 - 1326900 0.005575178 0.0024695788 0.0051700556 - 1327000 0.005792611 0.0025224 0.005328196 - 1327100 0.0050231144 0.002028517 0.004461588 - 1327200 0.0038390724 0.0019162142 0.0037757649 - 1327300 0.0066125092 0.0023244163 0.0055273504 - 1327400 0.0043979566 0.0023801189 0.0045103791 - 1327500 0.0049258376 0.0022380758 0.0046240284 - 1327600 0.0045764619 0.0023607248 0.0045774486 - 1327700 0.0046312579 0.0019454542 0.0041887198 - 1327800 0.004749834 0.001850953 0.0041516538 - 1327900 0.0039398369 0.0018377931 0.0037461516 - 1328000 0.005698629 0.0023089467 0.0050692201 - 1328100 0.0052348136 0.0030423454 0.0055779583 - 1328200 0.0038733702 0.0031075606 0.0049837244 - 1328300 0.0055541257 0.0020194938 0.0047097735 - 1328400 0.0077009393 0.0015945698 0.0053247123 - 1328500 0.0039341051 0.0018776257 0.0037832078 - 1328600 0.0055229825 0.0018082549 0.0044834496 - 1328700 0.0059255924 0.0020274142 0.004897623 - 1328800 0.0063194864 0.002351228 0.0054122292 - 1328900 0.005926943 0.0028326879 0.005703551 - 1329000 0.0047557474 0.0028179537 0.0051215189 - 1329100 0.0044025406 0.002690386 0.0048228666 - 1329200 0.0060342216 0.0022566001 0.0051794262 - 1329300 0.0044065282 0.0026216747 0.0047560869 - 1329400 0.0047402797 0.0029482665 0.0052443395 - 1329500 0.004955904 0.0028800418 0.0052805578 - 1329600 0.0044552897 0.0024246571 0.004582688 - 1329700 0.0049262623 0.0022184158 0.004604574 - 1329800 0.004086915 0.0026203236 0.0045999231 - 1329900 0.0046866147 0.0031113284 0.0053814074 - 1330000 0.0040654001 0.0036182808 0.0055874589 - 1330100 0.004890503 0.00357724 0.0059460774 - 1330200 0.0051097294 0.0034518272 0.0059268524 - 1330300 0.0051791624 0.003214085 0.0057227419 - 1330400 0.0052921084 0.002472314 0.005035679 - 1330500 0.0051216933 0.0025140706 0.0049948908 - 1330600 0.0060157468 0.0024999178 0.0054137951 - 1330700 0.0053619475 0.0026380866 0.0052352799 - 1330800 0.0043089933 0.0027779795 0.0048651482 - 1330900 0.0042864111 0.0025061353 0.0045823657 - 1331000 0.0070792342 0.0025596348 0.0059886389 - 1331100 0.0050996357 0.0030582167 0.0055283527 - 1331200 0.0052770725 0.0027794376 0.0053355196 - 1331300 0.0024921346 0.0027633882 0.0039705159 - 1331400 0.0064004071 0.0024991778 0.0055993751 - 1331500 0.0048630502 0.0026848612 0.0050404011 - 1331600 0.0036407985 0.0027657057 0.0045292174 - 1331700 0.0056092453 0.0023471102 0.0050640884 - 1331800 0.0048641732 0.0024050969 0.0047611808 - 1331900 0.0062211576 0.0022662797 0.0052796529 - 1332000 0.0041467738 0.0025093853 0.0045179789 - 1332100 0.0065359142 0.0025199892 0.0056858226 - 1332200 0.0067606906 0.0024374032 0.0057121127 - 1332300 0.007179957 0.0028086143 0.0062864059 - 1332400 0.0049355459 0.0030413103 0.0054319653 - 1332500 0.0058545048 0.0028953373 0.005731113 - 1332600 0.0059424933 0.0032645174 0.0061429126 - 1332700 0.0079205503 0.0031888658 0.0070253823 - 1332800 0.0054700599 0.0030109877 0.005660548 - 1332900 0.0056226942 0.0027441113 0.0054676038 - 1333000 0.0053878655 0.0024861014 0.0050958488 - 1333100 0.0064695694 0.0025872037 0.0057209013 - 1333200 0.0058545077 0.002664498 0.0055002751 - 1333300 0.0051804067 0.0024299727 0.0049392322 - 1333400 0.0048608866 0.0025692041 0.004923696 - 1333500 0.0055169407 0.002635253 0.0053075212 - 1333600 0.0053276787 0.002886663 0.0054672573 - 1333700 0.0050513054 0.003062686 0.0055094121 - 1333800 0.0057491541 0.0030830375 0.005867784 - 1333900 0.004953189 0.0032025191 0.0056017201 - 1334000 0.0075212857 0.0031199996 0.0067631223 - 1334100 0.0052017789 0.0034677585 0.0059873701 - 1334200 0.0066068493 0.0029946611 0.0061948537 - 1334300 0.0064183761 0.0028680064 0.0059769074 - 1334400 0.0057479591 0.0034995943 0.006283762 - 1334500 0.005645431 0.0031033473 0.0058378529 - 1334600 0.0060518268 0.0028373724 0.005768726 - 1334700 0.0055827212 0.0032525937 0.0059567243 - 1334800 0.0064489425 0.0028848012 0.0060085077 - 1334900 0.0069259693 0.0024674747 0.0058222411 - 1335000 0.0047497339 0.0027331228 0.0050337752 - 1335100 0.0055324993 0.0027694255 0.0054492298 - 1335200 0.0066443053 0.0028855109 0.0061038462 - 1335300 0.0063232756 0.0028422946 0.0059051312 - 1335400 0.0047341242 0.0030415409 0.0053346323 - 1335500 0.0046565289 0.0028753787 0.0051308849 - 1335600 0.0057063802 0.0027832706 0.0055472985 - 1335700 0.0057183575 0.0027520447 0.0055218741 - 1335800 0.0040579102 0.0027696629 0.0047352131 - 1335900 0.0046676478 0.0030169607 0.0052778526 - 1336000 0.0054602684 0.0031068954 0.0057517129 - 1336100 0.0047257578 0.0026696558 0.0049586947 - 1336200 0.0056836179 0.0021847634 0.0049377658 - 1336300 0.0044872473 0.0022876398 0.0044611502 - 1336400 0.0045956998 0.0022505909 0.004476633 - 1336500 0.004343332 0.0023114797 0.0044152812 - 1336600 0.0040223395 0.0027323792 0.0046806999 - 1336700 0.0050175562 0.0026538611 0.0050842399 - 1336800 0.0071359505 0.0023115884 0.0057680644 - 1336900 0.0054697847 0.0023857753 0.0050352022 - 1337000 0.0052059343 0.0023244825 0.0048461069 - 1337100 0.0046151663 0.0027228164 0.0049582875 - 1337200 0.0051296392 0.0025105029 0.0049951719 - 1337300 0.005493466 0.0023534632 0.0050143608 - 1337400 0.0043844226 0.0024919035 0.0046156082 - 1337500 0.0050151634 0.0025529682 0.004982188 - 1337600 0.0050214337 0.0024895878 0.0049218448 - 1337700 0.005946964 0.0026839035 0.0055644642 - 1337800 0.0048330031 0.0023337476 0.0046747335 - 1337900 0.0056610087 0.0021882782 0.0049303293 - 1338000 0.004828186 0.001949356 0.0042880086 - 1338100 0.0057962156 0.0019577912 0.0047653331 - 1338200 0.0071955783 0.0027163337 0.0062016919 - 1338300 0.0050787817 0.0032624701 0.005722505 - 1338400 0.0059102978 0.0028584672 0.0057212677 - 1338500 0.005357822 0.002423348 0.0050185431 - 1338600 0.005368441 0.0024682839 0.0050686225 - 1338700 0.0060928429 0.0021858409 0.0051370617 - 1338800 0.0059222715 0.002316441 0.0051850413 - 1338900 0.0030355888 0.0028862474 0.0043566107 - 1339000 0.0044750749 0.0032254019 0.0053930163 - 1339100 0.0039922876 0.0034044822 0.0053382465 - 1339200 0.0046037156 0.0029628566 0.0051927813 - 1339300 0.0063309024 0.0025823213 0.0056488522 - 1339400 0.004707632 0.0025048604 0.0047851196 - 1339500 0.0039684438 0.0026220879 0.0045443028 - 1339600 0.0062145458 0.0025471003 0.0055572709 - 1339700 0.0044953083 0.002795338 0.004972753 - 1339800 0.0049553282 0.0031230237 0.0055232608 - 1339900 0.0050050968 0.0027865074 0.0052108512 - 1340000 0.0060725343 0.002489127 0.0054305108 - 1340100 0.0057177086 0.0027509032 0.0055204183 - 1340200 0.0055090148 0.0026450089 0.005313438 - 1340300 0.0059892118 0.0027873977 0.0056884222 - 1340400 0.0054785295 0.0033318122 0.005985475 - 1340500 0.0063070233 0.0028040279 0.0058589923 - 1340600 0.0062522964 0.0019767882 0.0050052443 - 1340700 0.0055425587 0.0020186921 0.004703369 - 1340800 0.004203107 0.0024559656 0.0044918455 - 1340900 0.0058441873 0.0024261645 0.0052569428 - 1341000 0.0054353491 0.0024233247 0.0050560719 - 1341100 0.0039016934 0.0028237193 0.0047136021 - 1341200 0.0046369946 0.002670428 0.0049164723 - 1341300 0.0052461022 0.002601759 0.0051428397 - 1341400 0.003820381 0.0025381772 0.0043886743 - 1341500 0.0052639846 0.0026078263 0.0051575688 - 1341600 0.0052159257 0.0027023633 0.0052288273 - 1341700 0.0057879786 0.0029707248 0.005774277 - 1341800 0.0035912433 0.0032974045 0.0050369129 - 1341900 0.0055773024 0.0034433537 0.0061448595 - 1342000 0.0042126249 0.003103768 0.0051442582 - 1342100 0.0045756004 0.0025792256 0.004795532 - 1342200 0.0046505721 0.0021279333 0.0043805542 - 1342300 0.0042507532 0.0021191744 0.0041781329 - 1342400 0.0035172017 0.0023162806 0.0040199252 - 1342500 0.0054751646 0.0020337777 0.0046858106 - 1342600 0.0061373962 0.0021206109 0.0050934122 - 1342700 0.0056135338 0.0027345275 0.0054535829 - 1342800 0.0044202432 0.0030683963 0.0052094517 - 1342900 0.0061070019 0.0027938605 0.0057519396 - 1343000 0.0038967519 0.0025158125 0.0044033017 - 1343100 0.0036467716 0.0022138358 0.0039802408 - 1343200 0.0040012868 0.0021319806 0.0040701039 - 1343300 0.0047435129 0.0023037236 0.0046013626 - 1343400 0.0066623237 0.002612731 0.0058397941 - 1343500 0.005762419 0.0027233081 0.0055144798 - 1343600 0.0040528207 0.0029435992 0.0049066843 - 1343700 0.0050141261 0.0028823047 0.005311022 - 1343800 0.004302369 0.0027238141 0.0048077741 - 1343900 0.0040648698 0.0019444421 0.0039133634 - 1344000 0.0062825029 0.0017156357 0.0047587231 - 1344100 0.0034203785 0.0025170079 0.0041737537 - 1344200 0.004594304 0.0029623151 0.0051876811 - 1344300 0.0052824884 0.0025441422 0.0051028476 - 1344400 0.0059163231 0.0024040155 0.0052697345 - 1344500 0.0055281176 0.0022810479 0.0049587299 - 1344600 0.0052198572 0.0025390414 0.0050674098 - 1344700 0.0054303505 0.0028194962 0.0054498223 - 1344800 0.0064331566 0.002566021 0.0056820812 - 1344900 0.005086968 0.0030821238 0.005546124 - 1345000 0.0058588845 0.0025819266 0.0054198238 - 1345100 0.0066036491 0.0023954182 0.0055940608 - 1345200 0.0049715264 0.0025480421 0.0049561252 - 1345300 0.0052151503 0.0020204305 0.0045465189 - 1345400 0.0047384509 0.0020915321 0.0043867192 - 1345500 0.0037608655 0.0024855435 0.0043072127 - 1345600 0.0054009616 0.0023869493 0.0050030401 - 1345700 0.0051532436 0.0023226272 0.0048187296 - 1345800 0.0067548301 0.0024843739 0.0057562447 - 1345900 0.0059468508 0.002505412 0.0053859179 - 1346000 0.0057084776 0.0028895471 0.0056545909 - 1346100 0.0049169792 0.0031177891 0.0054994509 - 1346200 0.0051719767 0.0029768303 0.0054820066 - 1346300 0.0067626045 0.0026226331 0.0058982696 - 1346400 0.0061938138 0.0022071818 0.0052073104 - 1346500 0.0043198512 0.0018583285 0.0039507564 - 1346600 0.0042930692 0.0021971975 0.0042766529 - 1346700 0.005941673 0.0026347565 0.0055127544 - 1346800 0.0062942479 0.0025972502 0.0056460265 - 1346900 0.0054406417 0.0030377957 0.0056731066 - 1347000 0.00473916 0.0028704452 0.0051659759 - 1347100 0.0048892198 0.0027417479 0.0051099637 - 1347200 0.0046349656 0.0028122905 0.005057352 - 1347300 0.0054065847 0.0025843853 0.0052031998 - 1347400 0.0048138068 0.0025627826 0.0048944703 - 1347500 0.0042559616 0.002518535 0.0045800164 - 1347600 0.0056121957 0.0020170945 0.0047355017 - 1347700 0.0047983542 0.0018921731 0.0042163759 - 1347800 0.0058324541 0.0021274267 0.0049525216 - 1347900 0.0058449287 0.0024929027 0.00532404 - 1348000 0.0069319448 0.0025922189 0.0059498796 - 1348100 0.0085146926 0.0029122681 0.0070365723 - 1348200 0.0049597956 0.0040961873 0.0064985883 - 1348300 0.0054691838 0.0046358932 0.0072850291 - 1348400 0.0063458972 0.0040713712 0.0071451651 - 1348500 0.0060540321 0.0031556825 0.0060881043 - 1348600 0.0064569969 0.0031562988 0.0062839067 - 1348700 0.0059287675 0.0033549645 0.0062267113 - 1348800 0.0053492573 0.002810193 0.0054012395 - 1348900 0.0058673638 0.0028741046 0.0057161089 - 1349000 0.0044919468 0.0029234044 0.0050991912 - 1349100 0.0064593562 0.0026685232 0.0057972739 - 1349200 0.0056065482 0.002425348 0.0051410198 - 1349300 0.0050298767 0.002658849 0.0050951955 - 1349400 0.004063572 0.0028301826 0.0047984752 - 1349500 0.0052567472 0.0025813215 0.0051275584 - 1349600 0.004302198 0.0025724225 0.0046562997 - 1349700 0.0042333182 0.0022195691 0.0042700826 - 1349800 0.0041577814 0.0025716983 0.0045856237 - 1349900 0.0050808381 0.0026537707 0.0051148016 - 1350000 0.0055004512 0.0028487224 0.0055130034 - 1350100 0.0046024133 0.0030881938 0.0053174877 - 1350200 0.006500949 0.0032338259 0.0063827231 - 1350300 0.0057963475 0.0032112697 0.0060188755 - 1350400 0.005206231 0.0034883551 0.0060101232 - 1350500 0.0051491304 0.0031372888 0.0056313989 - 1350600 0.003245251 0.0031502395 0.0047221579 - 1350700 0.0038762679 0.0026880711 0.0045656383 - 1350800 0.0048149501 0.0026705819 0.0050028234 - 1350900 0.0037687107 0.0024680973 0.0042935665 - 1351000 0.0054188793 0.0022462469 0.0048710166 - 1351100 0.0045548355 0.0024547092 0.0046609577 - 1351200 0.0045619231 0.0027949448 0.0050046263 - 1351300 0.004268475 0.0033785019 0.0054460445 - 1351400 0.0058519171 0.0027892332 0.0056237555 - 1351500 0.0043928844 0.002806925 0.0049347284 - 1351600 0.0054783765 0.0031406067 0.0057941953 - 1351700 0.0059201418 0.0029828067 0.0058503754 - 1351800 0.0052181403 0.0027695262 0.0052970629 - 1351900 0.0064030255 0.0025447926 0.005646258 - 1352000 0.0036232797 0.0027476266 0.0045026527 - 1352100 0.0035783924 0.0029204238 0.0046537076 - 1352200 0.0048202235 0.0031386566 0.0054734524 - 1352300 0.0056540311 0.0030615851 0.0058002565 - 1352400 0.0054242731 0.0025120673 0.0051394495 - 1352500 0.0044640134 0.0024065305 0.004568787 - 1352600 0.0051711594 0.0023284044 0.0048331848 - 1352700 0.0041618513 0.0024553396 0.0044712364 - 1352800 0.0058610425 0.0022204371 0.0050593795 - 1352900 0.0047416633 0.0019982752 0.0042950184 - 1353000 0.0047039663 0.002175734 0.0044542177 - 1353100 0.0060814531 0.002179217 0.0051249209 - 1353200 0.0056035372 0.0023906938 0.0051049071 - 1353300 0.0055858175 0.0025442868 0.0052499171 - 1353400 0.0054720737 0.0021577309 0.0048082666 - 1353500 0.0036804807 0.0019666826 0.0037494154 - 1353600 0.0044853953 0.0016990156 0.0038716289 - 1353700 0.0037357607 0.001917073 0.0037265821 - 1353800 0.0038589449 0.0025510147 0.0044201911 - 1353900 0.0047045557 0.0032191703 0.0054979395 - 1354000 0.0036138644 0.003099647 0.0048501126 - 1354100 0.0058925677 0.0034009611 0.0062551736 - 1354200 0.0054869521 0.0031106737 0.0057684161 - 1354300 0.0041949782 0.0026826122 0.0047145548 - 1354400 0.0053275805 0.002880469 0.0054610158 - 1354500 0.0059880463 0.0024160364 0.0053164963 - 1354600 0.0050710523 0.0019712689 0.0044275598 - 1354700 0.0042329579 0.0020696871 0.004120026 - 1354800 0.0039366533 0.0021220929 0.0040289094 - 1354900 0.0057084466 0.0017811669 0.0045461958 - 1355000 0.0052864405 0.0018062435 0.0043668631 - 1355100 0.0039166873 0.0019901138 0.0038872592 - 1355200 0.0053211406 0.0020403972 0.0046178247 - 1355300 0.0042864208 0.0021292702 0.0042055052 - 1355400 0.0042476693 0.0025937939 0.0046512588 - 1355500 0.0067592026 0.0026632413 0.0059372301 - 1355600 0.0049658059 0.0028230599 0.0052283721 - 1355700 0.0061500647 0.0025272872 0.0055062248 - 1355800 0.0046247666 0.0024033583 0.0046434797 - 1355900 0.005434074 0.0019197455 0.0045518752 - 1356000 0.0046307429 0.0017468709 0.0039898869 - 1356100 0.0051161917 0.0023400029 0.0048181582 - 1356200 0.004735664 0.0025238473 0.0048176846 - 1356300 0.0050908777 0.0029303291 0.005396223 - 1356400 0.0046612974 0.0030952604 0.0053530763 - 1356500 0.0046247479 0.0028427599 0.0050828722 - 1356600 0.006215008 0.0032329556 0.0062433501 - 1356700 0.0056228001 0.0035730287 0.0062965724 - 1356800 0.0043768388 0.003476292 0.0055963233 - 1356900 0.0049159284 0.0029816134 0.0053627663 - 1357000 0.0050511445 0.002881153 0.0053278011 - 1357100 0.004499096 0.0027689514 0.0049482011 - 1357200 0.0048679127 0.0027100694 0.0050679645 - 1357300 0.0070780818 0.0029473796 0.0063758255 - 1357400 0.0049875412 0.0028466584 0.0052624987 - 1357500 0.0052353142 0.0025437583 0.0050796137 - 1357600 0.006263088 0.002106929 0.0051406122 - 1357700 0.0063854761 0.0019630221 0.0050559871 - 1357800 0.0061471645 0.0024307922 0.005408325 - 1357900 0.0054708707 0.0025268774 0.0051768304 - 1358000 0.0051831173 0.0025627029 0.0050732754 - 1358100 0.0054118122 0.0023076687 0.0049290152 - 1358200 0.003917521 0.0023449971 0.0042425463 - 1358300 0.0039895988 0.0024311235 0.0043635854 - 1358400 0.0042220238 0.0023980522 0.004443095 - 1358500 0.0048114151 0.0024682622 0.0047987914 - 1358600 0.006079977 0.0025013913 0.0054463801 - 1358700 0.0047708041 0.0025361267 0.004846985 - 1358800 0.0042808813 0.0029690915 0.0050426434 - 1358900 0.0048806249 0.002871493 0.0052355457 - 1359000 0.0034419372 0.0028216681 0.0044888564 - 1359100 0.0050356609 0.0027743121 0.0052134604 - 1359200 0.0041109754 0.0025866239 0.0045778776 - 1359300 0.0062250068 0.0023004068 0.0053156444 - 1359400 0.0044697527 0.0022874234 0.0044524599 - 1359500 0.0045273805 0.0025195553 0.0047125052 - 1359600 0.0049832086 0.0026248059 0.0050385475 - 1359700 0.0065888436 0.0029961584 0.0061876295 - 1359800 0.0061949196 0.0027798554 0.0057805196 - 1359900 0.0054490025 0.003040614 0.0056799746 - 1360000 0.0051436414 0.003034625 0.0055260762 - 1360100 0.0058959129 0.0030329482 0.005888781 - 1360200 0.003755807 0.0030324996 0.0048517187 - 1360300 0.0050554567 0.0027416869 0.0051904238 - 1360400 0.0054656887 0.0027305349 0.0053779779 - 1360500 0.0061544239 0.0025929524 0.0055740014 - 1360600 0.0043975007 0.002753423 0.0048834624 - 1360700 0.0046076948 0.0029400305 0.0051718827 - 1360800 0.0058549922 0.0031682868 0.0060042987 - 1360900 0.0063120918 0.0031630454 0.0062204649 - 1361000 0.0041394299 0.0029177574 0.0049227937 - 1361100 0.0049771717 0.0023099236 0.0047207411 - 1361200 0.0048001715 0.0019696625 0.0042947456 - 1361300 0.005633868 0.0026181623 0.0053470672 - 1361400 0.0058700094 0.0031273078 0.0059705936 - 1361500 0.0057154065 0.0030175801 0.0057859801 - 1361600 0.0055716565 0.0025644445 0.0052632156 - 1361700 0.0045820065 0.0023422844 0.0045616938 - 1361800 0.0058893624 0.0026253089 0.0054779689 - 1361900 0.0052352042 0.0025820178 0.0051178199 - 1362000 0.00535648 0.0022529551 0.0048475001 - 1362100 0.0054611373 0.0021606231 0.0048058615 - 1362200 0.0051765571 0.0027224202 0.005229815 - 1362300 0.0052124036 0.0028813758 0.0054061338 - 1362400 0.0066742305 0.0027390738 0.0059719042 - 1362500 0.0041492709 0.0027843057 0.0047941088 - 1362600 0.0039229779 0.0029373315 0.0048375239 - 1362700 0.0065180699 0.0027995264 0.0059567165 - 1362800 0.0055971499 0.002448642 0.0051597615 - 1362900 0.0053430804 0.0026932171 0.0052812716 - 1363000 0.0040794388 0.0027994011 0.0047753793 - 1363100 0.0053713556 0.0026742253 0.0052759756 - 1363200 0.0066494568 0.0027621627 0.0059829934 - 1363300 0.0040938115 0.0029803535 0.0049632935 - 1363400 0.0043685008 0.0029811075 0.0050971 - 1363500 0.0065712395 0.0030804851 0.0062634292 - 1363600 0.0058222989 0.0029560679 0.0057762439 - 1363700 0.0049408826 0.0027258453 0.0051190853 - 1363800 0.00538456 0.0026194879 0.0052276342 - 1363900 0.005336458 0.0028322565 0.0054171033 - 1364000 0.0046217701 0.0027996862 0.0050383561 - 1364100 0.0055335672 0.0026258715 0.0053061931 - 1364200 0.0051948079 0.0026322935 0.0051485286 - 1364300 0.0047401247 0.0026237186 0.0049197164 - 1364400 0.00590418 0.0026039228 0.00546376 - 1364500 0.0060922464 0.0024697735 0.0054207054 - 1364600 0.005326947 0.0023452554 0.0049254953 - 1364700 0.0029242057 0.0023019521 0.0037183642 - 1364800 0.0047951803 0.0020983044 0.0044209699 - 1364900 0.0042085574 0.0019951793 0.0040336993 - 1365000 0.0039467274 0.0019753817 0.0038870778 - 1365100 0.0047110666 0.0021385113 0.0044204342 - 1365200 0.0045190353 0.002218225 0.0044071327 - 1365300 0.0048530447 0.0020277145 0.004378408 - 1365400 0.0039376314 0.0019180144 0.0038253046 - 1365500 0.0030669611 0.0024606562 0.0039462155 - 1365600 0.0046539891 0.0025744452 0.0048287212 - 1365700 0.0050144205 0.002722342 0.0051512019 - 1365800 0.0053347697 0.0029497731 0.0055338021 - 1365900 0.0057187752 0.0033939982 0.00616403 - 1366000 0.0059497245 0.0028647186 0.0057466164 - 1366100 0.0051743816 0.0023292003 0.0048355414 - 1366200 0.0038743472 0.002838269 0.0047149059 - 1366300 0.0057422494 0.0024073443 0.0051887464 - 1366400 0.0045363151 0.0018981073 0.0040953849 - 1366500 0.0044346556 0.0019122919 0.0040603282 - 1366600 0.0049968574 0.0022090527 0.0046294055 - 1366700 0.0049974427 0.0022878477 0.004708484 - 1366800 0.0047987409 0.0022536962 0.0045780864 - 1366900 0.0056571679 0.0022332546 0.0049734453 - 1367000 0.004813609 0.0023159375 0.0046475294 - 1367100 0.0045268032 0.002507884 0.0047005543 - 1367200 0.0046869487 0.0026352366 0.0049054774 - 1367300 0.0060009189 0.0029588109 0.005865506 - 1367400 0.0037493738 0.0033762508 0.0051923538 - 1367500 0.0052761747 0.003281422 0.0058370691 - 1367600 0.0049055816 0.0030134658 0.0053896069 - 1367700 0.0057906975 0.0027439794 0.0055488485 - 1367800 0.0069104413 0.0022292695 0.0055765145 - 1367900 0.0063612306 0.0024244227 0.0055056438 - 1368000 0.0043658731 0.0024118666 0.0045265864 - 1368100 0.0072791775 0.0022974128 0.0058232644 - 1368200 0.0041908572 0.002317056 0.0043470024 - 1368300 0.00412716 0.0020481947 0.0040472879 - 1368400 0.0045072189 0.0018808685 0.0040640526 - 1368500 0.0049205156 0.0022729942 0.004656369 - 1368600 0.0064693109 0.0027221516 0.005855724 - 1368700 0.0062935419 0.0031170673 0.0061655016 - 1368800 0.0058339329 0.0031220135 0.0059478248 - 1368900 0.0062942579 0.0026180729 0.0056668541 - 1369000 0.0055486392 0.0025116192 0.0051992413 - 1369100 0.0058866258 0.0027319249 0.0055832593 - 1369200 0.0059528058 0.0025611777 0.005444568 - 1369300 0.0050737254 0.0028624168 0.0053200026 - 1369400 0.0048677797 0.0023932451 0.0047510759 - 1369500 0.0048389258 0.0022404084 0.0045842631 - 1369600 0.0051830138 0.002162883 0.0046734053 - 1369700 0.0070505919 0.0023977616 0.005812892 - 1369800 0.0061463209 0.0024345094 0.0054116336 - 1369900 0.0039799177 0.0025226641 0.0044504367 - 1370000 0.0039353668 0.002370141 0.0042763343 - 1370100 0.0054050674 0.0017940268 0.0044121063 - 1370200 0.0058469952 0.0018744267 0.004706565 - 1370300 0.0057263803 0.0017279136 0.004501629 - 1370400 0.0038617263 0.0016740925 0.0035446162 - 1370500 0.004625051 0.0019493658 0.0041896249 - 1370600 0.0066885713 0.0022880522 0.0055278289 - 1370700 0.0061286047 0.0024799712 0.0054485141 - 1370800 0.0044150722 0.0022565582 0.0043951088 - 1370900 0.004293598 0.0023248681 0.0044045797 - 1371000 0.0053076591 0.0018587271 0.0044296245 - 1371100 0.0041441972 0.0020248754 0.0040322209 - 1371200 0.0045236599 0.002190417 0.0043815648 - 1371300 0.0044226598 0.0018311919 0.0039734177 - 1371400 0.0045584247 0.0018516032 0.0040595902 - 1371500 0.0056333867 0.0018929048 0.0046215765 - 1371600 0.0036725302 0.0021316879 0.0039105697 - 1371700 0.0044208894 0.0021971199 0.0043384883 - 1371800 0.0048357572 0.002130924 0.0044732439 - 1371900 0.0041106848 0.0021726409 0.0041637539 - 1372000 0.0055413978 0.0025574785 0.0052415931 - 1372100 0.0039063966 0.0028759261 0.0047680869 - 1372200 0.0055168631 0.0024869336 0.0051591642 - 1372300 0.0051155846 0.0026580564 0.0051359176 - 1372400 0.0052627113 0.0025738307 0.0051229564 - 1372500 0.007126888 0.0024828964 0.0059349828 - 1372600 0.0054603903 0.0027914426 0.0054363192 - 1372700 0.0062409204 0.0028274246 0.0058503704 - 1372800 0.0050738977 0.0028085322 0.0052662014 - 1372900 0.0055962146 0.0025643645 0.0052750309 - 1373000 0.0031905655 0.0025605965 0.0041060267 - 1373100 0.0054562366 0.0022826202 0.0049254848 - 1373200 0.0043526961 0.001899089 0.0040074261 - 1373300 0.0053944678 0.0018068009 0.0044197462 - 1373400 0.0064690351 0.0021681425 0.0053015813 - 1373500 0.0042162903 0.0024970963 0.0045393619 - 1373600 0.0048110271 0.0028586544 0.0051889957 - 1373700 0.005213855 0.0028899424 0.0054154034 - 1373800 0.0046653269 0.0030690699 0.0053288376 - 1373900 0.0044778933 0.0026719358 0.0048409154 - 1374000 0.0048993095 0.0023940511 0.0047671542 - 1374100 0.0046707744 0.0021940172 0.0044564236 - 1374200 0.0060907522 0.0020064602 0.0049566683 - 1374300 0.0046118768 0.0019759873 0.0042098651 - 1374400 0.003656688 0.0022542325 0.0040254407 - 1374500 0.0054364933 0.0020901911 0.0047234925 - 1374600 0.0044537331 0.0018702351 0.0040275121 - 1374700 0.0052974158 0.0019365131 0.0045024489 - 1374800 0.0039011149 0.0018064856 0.0036960881 - 1374900 0.005664869 0.0015264967 0.0042704177 - 1375000 0.0045063355 0.0016820948 0.0038648511 - 1375100 0.0046614776 0.0023163881 0.0045742913 - 1375200 0.0060504456 0.0026673506 0.0055980351 - 1375300 0.0044105975 0.002136047 0.0042724302 - 1375400 0.0057459852 0.0019286425 0.0047118541 - 1375500 0.006401563 0.0023856755 0.0054864326 - 1375600 0.004204011 0.0031175279 0.0051538458 - 1375700 0.0060431072 0.0031470563 0.0060741864 - 1375800 0.0047209898 0.0027311732 0.0050179026 - 1375900 0.0059682293 0.0023445841 0.0052354451 - 1376000 0.0040790606 0.0022409659 0.0042167609 - 1376100 0.0038949239 0.001810078 0.0036966817 - 1376200 0.0052418713 0.0015656032 0.0041046346 - 1376300 0.00525566 0.0016484827 0.004194193 - 1376400 0.0054201906 0.0023585174 0.0049839222 - 1376500 0.0057463124 0.002842205 0.005625575 - 1376600 0.0056603804 0.0022497659 0.0049915126 - 1376700 0.0057055928 0.0021518314 0.0049154779 - 1376800 0.0055877194 0.0025006416 0.0052071932 - 1376900 0.0064259334 0.0021155572 0.0052281187 - 1377000 0.0063069539 0.0017971424 0.0048520731 - 1377100 0.0061854637 0.0017772077 0.0047732917 - 1377200 0.0044451808 0.0019666261 0.0041197605 - 1377300 0.0066203962 0.0020580973 0.0052648517 - 1377400 0.0040240252 0.0022636583 0.0042127955 - 1377500 0.0053248723 0.0022936697 0.0048729048 - 1377600 0.0040870547 0.0018493746 0.0038290418 - 1377700 0.0037284775 0.0019617656 0.0037677469 - 1377800 0.0043641432 0.0019992972 0.0041131791 - 1377900 0.0052119327 0.0019853086 0.0045098386 - 1378000 0.0051793298 0.0019888203 0.0044975582 - 1378100 0.0066711164 0.0021672742 0.0053985962 - 1378200 0.0046361394 0.0023629256 0.0046085556 - 1378300 0.0038142736 0.0027886984 0.0046362372 - 1378400 0.0050109253 0.0023658676 0.0047930345 - 1378500 0.0060437615 0.0017465649 0.0046740118 - 1378600 0.0054801184 0.0018138946 0.004468327 - 1378700 0.0048424133 0.0022991672 0.0046447112 - 1378800 0.0047006756 0.0022948113 0.0045717011 - 1378900 0.0043072916 0.0021674104 0.0042537548 - 1379000 0.005928501 0.0018492159 0.0047208336 - 1379100 0.006134436 0.0021295359 0.0051009033 - 1379200 0.0044402166 0.0023025729 0.0044533028 - 1379300 0.0044614511 0.0023310684 0.0044920838 - 1379400 0.0053886971 0.0022665625 0.0048767126 - 1379500 0.0051790111 0.002039778 0.0045483615 - 1379600 0.0052488182 0.001769963 0.0043123593 - 1379700 0.0046417268 0.0020398661 0.0042882026 - 1379800 0.005411015 0.002548004 0.0051689644 - 1379900 0.0040558686 0.0029753316 0.0049398929 - 1380000 0.0069404391 0.0026164112 0.0059781864 - 1380100 0.0059403951 0.0019113699 0.0047887488 - 1380200 0.0045451221 0.0018107683 0.0040123119 - 1380300 0.0038609308 0.0020865075 0.0039566458 - 1380400 0.0047732313 0.0017854574 0.0040974913 - 1380500 0.0054586951 0.0016731841 0.0043172395 - 1380600 0.0049798434 0.0019549043 0.0043670159 - 1380700 0.0041975017 0.0026008657 0.0046340306 - 1380800 0.0040253706 0.0026606084 0.0046103973 - 1380900 0.0045817728 0.0024009266 0.0046202228 - 1381000 0.0045047504 0.002535392 0.0047173805 - 1381100 0.0067763681 0.0025541275 0.0058364308 - 1381200 0.0052645648 0.0022331116 0.0047831352 - 1381300 0.005779599 0.001766959 0.0045664523 - 1381400 0.0062293429 0.0023325835 0.0053499214 - 1381500 0.0051682384 0.0027365281 0.0052398936 - 1381600 0.0060447248 0.002918324 0.0058462375 - 1381700 0.005242083 0.0031120618 0.0056511958 - 1381800 0.0047690575 0.0030393441 0.0053493563 - 1381900 0.0056563507 0.0023141276 0.0050539225 - 1382000 0.0058673695 0.0021538198 0.0049958269 - 1382100 0.0046723383 0.0024766822 0.0047398461 - 1382200 0.0050953626 0.0025356785 0.0050037448 - 1382300 0.0056762742 0.0024138735 0.0051633188 - 1382400 0.0048324988 0.0023093299 0.0046500715 - 1382500 0.0042324975 0.0022498939 0.0043000099 - 1382600 0.0058795802 0.0023550857 0.0052030073 - 1382700 0.005153358 0.0027273361 0.0052234939 - 1382800 0.0051683541 0.0027905311 0.0052939526 - 1382900 0.0053388664 0.0022418258 0.0048278392 - 1383000 0.0052822444 0.0019532777 0.0045118648 - 1383100 0.0052969755 0.0022287686 0.0047944911 - 1383200 0.0048906216 0.0020434792 0.0044123741 - 1383300 0.0043440422 0.0019259714 0.0040301169 - 1383400 0.0048495426 0.0018718843 0.0042208815 - 1383500 0.0045081114 0.0024159287 0.0045995452 - 1383600 0.0066508065 0.0021617314 0.0053832158 - 1383700 0.0047646431 0.0020357538 0.0043436278 - 1383800 0.0060329763 0.0022115346 0.0051337575 - 1383900 0.0043489689 0.0026317117 0.0047382435 - 1384000 0.0048198098 0.0030449367 0.0053795321 - 1384100 0.0046463705 0.0029123528 0.0051629386 - 1384200 0.0044240319 0.0028515181 0.0049944086 - 1384300 0.003766173 0.002773788 0.0045980281 - 1384400 0.0055637926 0.0023142296 0.0050091917 - 1384500 0.0048990127 0.0021444985 0.0045174577 - 1384600 0.0042814231 0.0021430882 0.0042169025 - 1384700 0.0055967712 0.0021088724 0.0048198085 - 1384800 0.0056540954 0.0024450226 0.0051837251 - 1384900 0.0053451899 0.0027210632 0.0053101396 - 1385000 0.0056950573 0.0029384698 0.0056970132 - 1385100 0.0037892145 0.0034060227 0.0052414235 - 1385200 0.0057744213 0.0033212083 0.0061181936 - 1385300 0.0034791776 0.0033340949 0.0050193215 - 1385400 0.0052484126 0.0033978604 0.0059400603 - 1385500 0.0053592442 0.0037671616 0.0063630455 - 1385600 0.0044920711 0.0040932284 0.0062690753 - 1385700 0.0032120601 0.0037969714 0.005352813 - 1385800 0.0055922957 0.0034972972 0.0062060654 - 1385900 0.0046160757 0.0035657394 0.0058016511 - 1386000 0.0052495422 0.0032761289 0.0058188759 - 1386100 0.0051213375 0.0031221506 0.0056027984 - 1386200 0.0052136359 0.0030211372 0.0055464921 - 1386300 0.0043477625 0.0029191726 0.0050251201 - 1386400 0.0061538462 0.0028948633 0.0058756326 - 1386500 0.0039634133 0.0030752942 0.0049950726 - 1386600 0.005286128 0.0031926639 0.0057531321 - 1386700 0.0061644125 0.0025783842 0.0055642715 - 1386800 0.0047864192 0.002765282 0.0050837038 - 1386900 0.0050986912 0.0032404021 0.0057100806 - 1387000 0.0058863695 0.0037306016 0.0065818118 - 1387100 0.0055216926 0.0034448063 0.0061193761 - 1387200 0.0042461973 0.0031076441 0.005164396 - 1387300 0.0052071454 0.0027499919 0.005272203 - 1387400 0.0056311347 0.0030177641 0.005745345 - 1387500 0.0070175758 0.0028751327 0.006274271 - 1387600 0.0042335698 0.0028570489 0.0049076843 - 1387700 0.0041601764 0.0030541457 0.0050692311 - 1387800 0.0048741506 0.0027582611 0.0051191778 - 1387900 0.0058136133 0.0023188206 0.0051347896 - 1388000 0.004043825 0.0025644687 0.0045231964 - 1388100 0.0045802911 0.002534434 0.0047530125 - 1388200 0.004075494 0.0024801553 0.0044542226 - 1388300 0.0044252179 0.0022462107 0.0043896757 - 1388400 0.0042473856 0.0022749915 0.0043323189 - 1388500 0.0035886419 0.0022836438 0.0040218922 - 1388600 0.0052031072 0.0022241099 0.004744365 - 1388700 0.0043883707 0.0024692353 0.0045948523 - 1388800 0.0064316377 0.0021300197 0.0052453442 - 1388900 0.0056939205 0.0021748889 0.0049328816 - 1389000 0.0046850629 0.0025342245 0.0048035519 - 1389100 0.0050362047 0.0027527431 0.0051921548 - 1389200 0.0072314221 0.0031964471 0.0066991672 - 1389300 0.0055840011 0.0028337412 0.0055384918 - 1389400 0.005725758 0.0025736385 0.0053470525 - 1389500 0.004444506 0.0026647175 0.0048175251 - 1389600 0.0041636336 0.0026446031 0.0046613632 - 1389700 0.0052688478 0.0022784582 0.0048305563 - 1389800 0.0047083849 0.0023686258 0.0046492497 - 1389900 0.0057010312 0.0025340889 0.0052955259 - 1390000 0.0062932929 0.0029386129 0.0059869266 - 1390100 0.0059704325 0.002694354 0.0055862823 - 1390200 0.0039371246 0.0028791439 0.0047861886 - 1390300 0.0060348461 0.002576335 0.0054994636 - 1390400 0.0050221954 0.0022800283 0.0047126542 - 1390500 0.0052916619 0.0020109226 0.0045740713 - 1390600 0.0052778355 0.0025003453 0.0050567968 - 1390700 0.0062761055 0.0025602772 0.0056002658 - 1390800 0.0044774625 0.0024840417 0.0046528126 - 1390900 0.0059681329 0.0025905334 0.0054813478 - 1391000 0.0059800037 0.0029492858 0.0058458501 - 1391100 0.0043150528 0.0029742313 0.005064335 - 1391200 0.0040455381 0.0027768148 0.0047363723 - 1391300 0.0060104581 0.0021620684 0.0050733841 - 1391400 0.0050371964 0.0020682822 0.0045081742 - 1391500 0.0049574149 0.0023958543 0.0047971022 - 1391600 0.0060203672 0.0022753669 0.0051914823 - 1391700 0.0057996139 0.002033661 0.0048428489 - 1391800 0.0058372652 0.001919913 0.0047473384 - 1391900 0.004388007 0.0019562949 0.0040817358 - 1392000 0.0051597346 0.0017588239 0.0042580704 - 1392100 0.0046972299 0.001928926 0.0042041467 - 1392200 0.0051121948 0.0020543798 0.0045305991 - 1392300 0.0040083942 0.0021073865 0.0040489525 - 1392400 0.0060192347 0.0018140833 0.0047296501 - 1392500 0.0036398537 0.0020026072 0.0037656613 - 1392600 0.0050666649 0.0021834705 0.0046376363 - 1392700 0.0061329021 0.0024163221 0.0053869466 - 1392800 0.0044616929 0.0024171167 0.0045782492 - 1392900 0.0047491817 0.0021609852 0.0044613701 - 1393000 0.0060749107 0.0022228128 0.0051653477 - 1393100 0.0043212265 0.0027987798 0.0048918739 - 1393200 0.0039441989 0.002785934 0.0046964054 - 1393300 0.0046901102 0.0022819304 0.0045537026 - 1393400 0.0046306425 0.0019967482 0.0042397157 - 1393500 0.0064199787 0.0021827396 0.0052924168 - 1393600 0.0059689912 0.0023099044 0.0052011345 - 1393700 0.0053361758 0.0018288219 0.0044135321 - 1393800 0.0056514212 0.0021978611 0.0049352682 - 1393900 0.0038096992 0.0030511112 0.0048964342 - 1394000 0.007898829 0.0027966506 0.0066226459 - 1394100 0.004846359 0.0026547916 0.0050022468 - 1394200 0.0057661491 0.0029227296 0.0057157081 - 1394300 0.0047969366 0.0031258418 0.0054493579 - 1394400 0.0049587174 0.0025860354 0.0049879141 - 1394500 0.0037110031 0.0020792133 0.0038767305 - 1394600 0.0054842773 0.0023399525 0.0049963993 - 1394700 0.0047574016 0.0026034959 0.0049078624 - 1394800 0.0063889786 0.0021892089 0.0052838704 - 1394900 0.0069535806 0.002090831 0.0054589716 - 1395000 0.0053560011 0.00214633 0.004740643 - 1395100 0.0050841597 0.0026378239 0.0051004638 - 1395200 0.0045833296 0.0027533463 0.0049733966 - 1395300 0.0039602617 0.0026235108 0.0045417625 - 1395400 0.005398048 0.0021072402 0.0047219197 - 1395500 0.0056210729 0.0021395114 0.0048622186 - 1395600 0.0040487718 0.0026368631 0.0045979869 - 1395700 0.0057286937 0.0024672988 0.0052421348 - 1395800 0.0050261228 0.0024963864 0.0049309146 - 1395900 0.005126749 0.002351409 0.0048346781 - 1396000 0.0067990676 0.0024335471 0.0057268455 - 1396100 0.0051783103 0.0028245018 0.0053327458 - 1396200 0.004164026 0.0033703313 0.0053872813 - 1396300 0.004640551 0.0029284202 0.005176187 - 1396400 0.0043399632 0.002749262 0.0048514316 - 1396500 0.0051047991 0.0023958113 0.0048684484 - 1396600 0.00399534 0.0023969557 0.0043321985 - 1396700 0.0051869685 0.0027841703 0.0052966082 - 1396800 0.0050377023 0.0032592848 0.0056994218 - 1396900 0.0037429684 0.0040791933 0.0058921936 - 1397000 0.0052174808 0.0043093782 0.0068365954 - 1397100 0.0062192847 0.0036112633 0.0066237293 - 1397200 0.0074913555 0.0030689685 0.0066975938 - 1397300 0.00578335 0.0031925681 0.0059938783 - 1397400 0.0045316943 0.0033107467 0.0055057861 - 1397500 0.0053074719 0.0031783061 0.0057491128 - 1397600 0.0055957327 0.0031915664 0.0059019994 - 1397700 0.0048719462 0.0031384855 0.0054983344 - 1397800 0.0051306775 0.0028371911 0.005322363 - 1397900 0.0055997159 0.0029296977 0.0056420601 - 1398000 0.0050676108 0.0031698549 0.0056244789 - 1398100 0.0050669857 0.0025712703 0.0050255915 - 1398200 0.0052279926 0.0024549887 0.0049872976 - 1398300 0.0047318684 0.0028208497 0.0051128485 - 1398400 0.0044250028 0.0029130517 0.0050564124 - 1398500 0.0043153121 0.0028274579 0.0049176872 - 1398600 0.0063078491 0.002854384 0.0059097484 - 1398700 0.0053881859 0.0029924627 0.0056023652 - 1398800 0.0067260388 0.0027960081 0.0060539332 - 1398900 0.0045060289 0.0022929912 0.004475599 - 1399000 0.0028283298 0.0018549152 0.0032248874 - 1399100 0.0043190583 0.0016897773 0.0037818212 - 1399200 0.0046972205 0.0014700539 0.00374527 - 1399300 0.0040901257 0.0012616025 0.0032427572 - 1399400 0.0045401559 0.0012739443 0.0034730823 - 1399500 0.0052164618 0.0016412946 0.0041680183 - 1399600 0.0045761408 0.0023073874 0.0045239556 - 1399700 0.0056248844 0.002593531 0.0053180843 - 1399800 0.0041000904 0.0027663879 0.0047523692 - 1399900 0.0040722694 0.0026792658 0.0046517713 - 1400000 0.0052861458 0.002459721 0.0050201978 - 1400100 0.0050072026 0.0022774445 0.0047028083 - 1400200 0.005753223 0.0023518388 0.0051385562 - 1400300 0.0045843046 0.002416928 0.0046374506 - 1400400 0.0059357987 0.0026978563 0.0055730088 - 1400500 0.0040329336 0.0025618809 0.0045153331 - 1400600 0.0054909256 0.0023149535 0.0049746206 - 1400700 0.004113711 0.0025851478 0.0045777265 - 1400800 0.0045366327 0.0028522382 0.0050496697 - 1400900 0.0035328044 0.0026515887 0.0043627908 - 1401000 0.0039255562 0.0024297123 0.0043311536 - 1401100 0.004358655 0.0020715954 0.0041828189 - 1401200 0.0069278009 0.0021096746 0.0054653282 - 1401300 0.0067905562 0.0023471469 0.0056363225 - 1401400 0.0040942544 0.0023020103 0.0042851648 - 1401500 0.0053406955 0.0025968744 0.0051837738 - 1401600 0.0059069933 0.0028410918 0.0057022917 - 1401700 0.0057399104 0.0027856403 0.0055659094 - 1401800 0.0050709939 0.0026351644 0.0050914271 - 1401900 0.005798589 0.0025849613 0.0053936529 - 1402000 0.004911999 0.0027165135 0.005095763 - 1402100 0.0059691509 0.0028052648 0.0056965723 - 1402200 0.0053125479 0.0030224465 0.0055957119 - 1402300 0.0043157476 0.0034294009 0.0055198411 - 1402400 0.0054650606 0.0027266615 0.0053738002 - 1402500 0.003901049 0.0022903266 0.0041798972 - 1402600 0.0057728288 0.0022576709 0.0050538849 - 1402700 0.0067564679 0.0025680634 0.0058407275 - 1402800 0.0051853656 0.0027544837 0.0052661451 - 1402900 0.0056858701 0.0032650075 0.0060191008 - 1403000 0.0045531112 0.0027997561 0.0050051694 - 1403100 0.0054745892 0.0022744771 0.0049262312 - 1403200 0.0063178943 0.0024053235 0.0054655536 - 1403300 0.004914873 0.0025310272 0.0049116688 - 1403400 0.0051021243 0.0024985627 0.0049699042 - 1403500 0.0048771968 0.0029527907 0.0053151829 - 1403600 0.0054624857 0.0033550169 0.0060009084 - 1403700 0.0065756931 0.0030011584 0.0061862598 - 1403800 0.0046106862 0.0024351445 0.0046684457 - 1403900 0.0041008479 0.0020397088 0.004026057 - 1404000 0.0063841771 0.0022757992 0.005368135 - 1404100 0.0046719487 0.0025021536 0.0047651287 - 1404200 0.0045160192 0.002597848 0.0047852948 - 1404300 0.003994474 0.00219177 0.0041265934 - 1404400 0.005559268 0.0021415725 0.0048343429 - 1404500 0.0037950602 0.0021665101 0.0040047424 - 1404600 0.0057506146 0.001984024 0.004769478 - 1404700 0.0051995168 0.0021015387 0.0046200546 - 1404800 0.0055828052 0.0026958665 0.0054000378 - 1404900 0.0047412434 0.0027185346 0.0050150744 - 1405000 0.0044999295 0.0027605933 0.0049402466 - 1405100 0.0052138374 0.0024257692 0.0049512216 - 1405200 0.0043248029 0.0027394126 0.004834239 - 1405300 0.0059242158 0.0030478259 0.005917368 - 1405400 0.0047775562 0.0034137685 0.0057278973 - 1405500 0.0058985889 0.0032024894 0.0060596184 - 1405600 0.0053548303 0.003312417 0.0059061629 - 1405700 0.0066740242 0.0031577129 0.0063904433 - 1405800 0.0061333683 0.003255636 0.0062264863 - 1405900 0.0056550627 0.0032573489 0.0059965199 - 1406000 0.0064050927 0.0030490882 0.006151555 - 1406100 0.0054124152 0.0032679185 0.0058895572 - 1406200 0.0050806477 0.0033954131 0.0058563518 - 1406300 0.0058406144 0.0029879867 0.0058170343 - 1406400 0.0051908225 0.0031934027 0.0057077074 - 1406500 0.0042051839 0.0029958039 0.0050326898 - 1406600 0.0060525493 0.0029464259 0.0058781295 - 1406700 0.0039546818 0.0032436548 0.0051592038 - 1406800 0.0041074945 0.0036741037 0.0056636714 - 1406900 0.0048736342 0.0034921062 0.0058527727 - 1407000 0.0054505403 0.0035308836 0.0061709891 - 1407100 0.0048402212 0.0032930471 0.0056375293 - 1407200 0.0067493202 0.0028424081 0.0061116101 - 1407300 0.0054003467 0.0030410217 0.0056568147 - 1407400 0.0045240003 0.0033133442 0.0055046568 - 1407500 0.0041963824 0.0029767839 0.0050094067 - 1407600 0.0053414237 0.0026683251 0.0052555772 - 1407700 0.0052606871 0.0031616861 0.0057098315 - 1407800 0.004464005 0.0031436271 0.0053058795 - 1407900 0.0052452471 0.0026386612 0.0051793278 - 1408000 0.0050670825 0.0022685205 0.0047228886 - 1408100 0.0060969703 0.0023376454 0.0052908653 - 1408200 0.0063349759 0.0031313758 0.0061998797 - 1408300 0.0042745189 0.0036212391 0.0056917092 - 1408400 0.005244884 0.003714541 0.0062550317 - 1408500 0.0054411942 0.0033346759 0.0059702543 - 1408600 0.0060711658 0.0031483525 0.0060890734 - 1408700 0.003770678 0.0034445929 0.0052710151 - 1408800 0.0041506589 0.0033959886 0.005406464 - 1408900 0.0057733949 0.0026967551 0.0054932432 - 1409000 0.0048042568 0.002610706 0.0049377679 - 1409100 0.0052683941 0.0027701993 0.0053220777 - 1409200 0.0058911029 0.0029536291 0.0058071321 - 1409300 0.0065337652 0.0027021729 0.0058669655 - 1409400 0.0055331783 0.0024156795 0.0050958128 - 1409500 0.005130369 0.0024428512 0.0049278737 - 1409600 0.0062742914 0.0023963509 0.0054354608 - 1409700 0.0055503151 0.0027276719 0.0054161058 - 1409800 0.0062707805 0.0033063573 0.0063437666 - 1409900 0.0042424242 0.0034680627 0.0055229869 - 1410000 0.0055625392 0.0029263881 0.005620743 - 1410100 0.0061364225 0.002306783 0.0052791127 - 1410200 0.0048980443 0.0022589097 0.0046313999 - 1410300 0.0043854633 0.0022506481 0.0043748569 - 1410400 0.0039369896 0.0023349109 0.0042418902 - 1410500 0.0036714676 0.0030337354 0.0048121025 - 1410600 0.00789003 0.0031926131 0.0070143464 - 1410700 0.0044221873 0.0030919599 0.0052339569 - 1410800 0.0045001107 0.0022004444 0.0043801855 - 1410900 0.0053159256 0.0022091312 0.0047840327 - 1411000 0.0064650696 0.0025519181 0.0056834362 - 1411100 0.0062975078 0.0031927926 0.0062431479 - 1411200 0.0051305868 0.0033955537 0.0058806817 - 1411300 0.0051795239 0.003090989 0.0055998209 - 1411400 0.0049000043 0.0028246836 0.0051981232 - 1411500 0.0068305088 0.0033724251 0.0066809527 - 1411600 0.0043042554 0.0034437448 0.0055286186 - 1411700 0.0050747099 0.0025337676 0.0049918302 - 1411800 0.0047816996 0.0022759021 0.0045920379 - 1411900 0.0056001869 0.0024861426 0.0051987331 - 1412000 0.0051146558 0.0026881904 0.0051656018 - 1412100 0.00530764 0.0031878104 0.0057586985 - 1412200 0.0058019626 0.0032770597 0.0060873853 - 1412300 0.0061335993 0.0033220285 0.0062929906 - 1412400 0.0051923029 0.003314234 0.0058292557 - 1412500 0.0050082213 0.0032339912 0.0056598484 - 1412600 0.0048916625 0.003129302 0.0054987011 - 1412700 0.0049923336 0.0032467423 0.0056649039 - 1412800 0.0048119354 0.0033531713 0.0056839525 - 1412900 0.0051408931 0.0035879063 0.0060780264 - 1413000 0.0054892206 0.003704881 0.0063637222 - 1413100 0.0072065778 0.003659767 0.0071504532 - 1413200 0.0067469882 0.0037399875 0.0070080599 - 1413300 0.0054779853 0.0038716764 0.0065250755 - 1413400 0.00533822 0.0029305434 0.0055162438 - 1413500 0.0051511802 0.0028090249 0.0053041278 - 1413600 0.0060988775 0.0024369297 0.0053910735 - 1413700 0.0047666918 0.0025498978 0.0048587641 - 1413800 0.0058675697 0.0020431829 0.0048852869 - 1413900 0.0057942262 0.0021201431 0.0049267214 - 1414000 0.0055229375 0.0023981245 0.0050732973 - 1414100 0.0054111403 0.0022922413 0.0049132624 - 1414200 0.0041551103 0.0025300665 0.0045426981 - 1414300 0.0045264972 0.0022943056 0.0044868277 - 1414400 0.0048276583 0.0022724472 0.0046108442 - 1414500 0.0060510031 0.0022133475 0.0051443021 - 1414600 0.0038064809 0.0024177958 0.00426156 - 1414700 0.0047201409 0.0025757065 0.0048620248 - 1414800 0.0068399602 0.0026816792 0.005994785 - 1414900 0.0052368925 0.0027837174 0.0053203372 - 1415000 0.0038464007 0.0027034421 0.0045665425 - 1415100 0.00506918 0.0027574332 0.0052128172 - 1415200 0.004328419 0.002638491 0.0047350689 - 1415300 0.0059016872 0.0029248714 0.0057835012 - 1415400 0.0051391245 0.0032996659 0.0057889294 - 1415500 0.0057616931 0.0029018704 0.0056926905 - 1415600 0.0042487579 0.0031262222 0.0051842143 - 1415700 0.0037107501 0.003244745 0.0050421396 - 1415800 0.0065790745 0.0031260138 0.006312753 - 1415900 0.0035098192 0.0031496813 0.00484975 - 1416000 0.0044513748 0.0027863266 0.0049424613 - 1416100 0.0041380909 0.0025684026 0.0045727904 - 1416200 0.0044826373 0.0025757684 0.0047470458 - 1416300 0.003709527 0.002562363 0.0043591651 - 1416400 0.0051887179 0.0026946148 0.0052079001 - 1416500 0.0068308566 0.0026560836 0.0059647797 - 1416600 0.0038371026 0.0029163879 0.0047749844 - 1416700 0.0031742388 0.0026027702 0.0041402921 - 1416800 0.0046108937 0.0024827909 0.0047161926 - 1416900 0.0050319603 0.0024183605 0.0048557163 - 1417000 0.0049280589 0.0022355464 0.004622575 - 1417100 0.0059184117 0.0022074119 0.0050741425 - 1417200 0.0042593845 0.0028073431 0.0048704825 - 1417300 0.0065893717 0.0027342817 0.0059260086 - 1417400 0.0038739259 0.0030216286 0.0048980615 - 1417500 0.0050479432 0.0031184997 0.0055635972 - 1417600 0.0055774043 0.0028253043 0.0055268595 - 1417700 0.005289253 0.0023758075 0.0049377894 - 1417800 0.0064332833 0.0024013228 0.0055174445 - 1417900 0.0053798183 0.0023996786 0.0050055281 - 1418000 0.0056042569 0.0026026617 0.0053172236 - 1418100 0.0041625757 0.0029904048 0.0050066524 - 1418200 0.0050295476 0.0030167244 0.0054529116 - 1418300 0.0058880054 0.0030100875 0.0058620902 - 1418400 0.0063065548 0.002849766 0.0059045034 - 1418500 0.0063848573 0.0029900782 0.0060827435 - 1418600 0.0041341297 0.0031483069 0.005150776 - 1418700 0.0050185927 0.0027247819 0.0051556628 - 1418800 0.0044475444 0.0029927998 0.0051470791 - 1418900 0.0049219635 0.0032068648 0.0055909409 - 1419000 0.0053963541 0.0025883369 0.0052021959 - 1419100 0.0053178762 0.0025807333 0.0051565795 - 1419200 0.0054118583 0.0024292292 0.005050598 - 1419300 0.0065426953 0.0020988403 0.0052679583 - 1419400 0.0062607395 0.0024683203 0.0055008659 - 1419500 0.0052686927 0.0031655113 0.0057175343 - 1419600 0.0064960219 0.0030163424 0.006162853 - 1419700 0.0046774321 0.0027644404 0.0050300716 - 1419800 0.0042110993 0.0025890347 0.004628786 - 1419900 0.0051945091 0.0022724136 0.0047885039 - 1420000 0.0048014479 0.002007493 0.0043331943 - 1420100 0.0039473264 0.0025664984 0.0044784846 - 1420200 0.0045890452 0.0027912914 0.0050141101 - 1420300 0.0053816292 0.0023703402 0.0049770669 - 1420400 0.0047180715 0.0025704443 0.0048557602 - 1420500 0.0049492764 0.0029085663 0.0053058721 - 1420600 0.0028554475 0.0033327634 0.0047158708 - 1420700 0.0034188207 0.0028944929 0.0045504842 - 1420800 0.005109273 0.0023418884 0.0048166925 - 1420900 0.0050788428 0.0024787356 0.0049388001 - 1421000 0.004576774 0.0027657644 0.0049826393 - 1421100 0.006125803 0.0027176006 0.0056847864 - 1421200 0.0060519435 0.0024328576 0.0053642678 - 1421300 0.0052014212 0.0024395395 0.0049589779 - 1421400 0.0041994942 0.0027694868 0.0048036168 - 1421500 0.0041408815 0.0027993833 0.0048051228 - 1421600 0.007352047 0.0026982168 0.0062593646 - 1421700 0.0064821643 0.0024120238 0.0055518222 - 1421800 0.0052974662 0.0027377024 0.0053036626 - 1421900 0.0061211783 0.0033043756 0.0062693213 - 1422000 0.0079727514 0.0031804708 0.0070422722 - 1422100 0.0044431302 0.003033485 0.0051856262 - 1422200 0.0057372679 0.0026342132 0.0054132023 - 1422300 0.0051762026 0.0026965174 0.0052037405 - 1422400 0.0047807381 0.0030989875 0.0054146575 - 1422500 0.0051031598 0.0031348104 0.0056066534 - 1422600 0.0058824252 0.0030098666 0.0058591663 - 1422700 0.0046803592 0.0028218013 0.0050888503 - 1422800 0.0054272664 0.0027982338 0.0054270659 - 1422900 0.0047282127 0.0029309312 0.0052211592 - 1423000 0.0049851642 0.0030114939 0.0054261828 - 1423100 0.0053218889 0.002487146 0.005064936 - 1423200 0.0044087788 0.0024888258 0.004624328 - 1423300 0.0040954046 0.0027476445 0.0047313561 - 1423400 0.0042993857 0.0027614898 0.0048440048 - 1423500 0.0056534026 0.0027782264 0.0055165933 - 1423600 0.00324703 0.0029009424 0.0044737225 - 1423700 0.0035685278 0.0026468924 0.004375398 - 1423800 0.0047214521 0.0022770935 0.0045640468 - 1423900 0.005329836 0.0025211128 0.0051027521 - 1424000 0.00728158 0.0021667223 0.0056937376 - 1424100 0.0048393325 0.0020212875 0.0043653391 - 1424200 0.0055717492 0.0020382632 0.0047370792 - 1424300 0.0054603701 0.0023362746 0.0049811414 - 1424400 0.0049874006 0.0025861162 0.0050018883 - 1424500 0.0045631026 0.0022474004 0.0044576533 - 1424600 0.0057434195 0.0023140759 0.0050960447 - 1424700 0.0053902585 0.0029713812 0.0055822876 - 1424800 0.0045985443 0.0031781182 0.0054055381 - 1424900 0.0053685274 0.0025910653 0.0051914457 - 1425000 0.0083783746 0.0022901564 0.0063484317 - 1425100 0.0060878255 0.0025821524 0.0055309429 - 1425200 0.005396139 0.0023744444 0.0049881993 - 1425300 0.0040988467 0.002459758 0.0044451369 - 1425400 0.0045996753 0.0026327833 0.004860751 - 1425500 0.006534108 0.0027998028 0.0059647613 - 1425600 0.0075040403 0.0030499078 0.0066846773 - 1425700 0.0059892674 0.0031893347 0.0060903861 - 1425800 0.0065715183 0.0028778653 0.0060609445 - 1425900 0.0060237449 0.0029445942 0.0058623457 - 1426000 0.0045161938 0.0027931347 0.0049806661 - 1426100 0.005860092 0.0023149931 0.0051534751 - 1426200 0.0053308375 0.0023875341 0.0049696585 - 1426300 0.0049415476 0.0026166118 0.0050101739 - 1426400 0.0045943722 0.002636283 0.004861682 - 1426500 0.0047976052 0.0031739707 0.0054978107 - 1426600 0.0050735928 0.0031306286 0.0055881501 - 1426700 0.0065124877 0.0029291042 0.0060835904 - 1426800 0.0053097985 0.0025923876 0.0051643212 - 1426900 0.0054691755 0.0022421068 0.0048912387 - 1427000 0.0036498518 0.0022370207 0.0040049177 - 1427100 0.0041620288 0.0020754944 0.0040914771 - 1427200 0.0052150429 0.0021007897 0.0046268261 - 1427300 0.0041255658 0.0025050139 0.0045033348 - 1427400 0.0045432682 0.0025850285 0.0047856741 - 1427500 0.0041154929 0.0025410729 0.0045345148 - 1427600 0.00516477 0.0025172963 0.0050189818 - 1427700 0.0041717085 0.0028537479 0.0048744192 - 1427800 0.0024619272 0.0030832771 0.0042757731 - 1427900 0.0055483241 0.0026724811 0.0053599506 - 1428000 0.0049842681 0.0027130595 0.0051273144 - 1428100 0.0049040152 0.0028260645 0.0052014469 - 1428200 0.0037798325 0.0027347102 0.0045655666 - 1428300 0.0053953643 0.0029220933 0.0055354729 - 1428400 0.0048844827 0.002402343 0.0047682643 - 1428500 0.0048822436 0.001892698 0.0042575348 - 1428600 0.004427746 0.0018820528 0.0040267423 - 1428700 0.0058502412 0.0022412238 0.0050749344 - 1428800 0.0056958713 0.0021375436 0.0048964813 - 1428900 0.0056733162 0.0022515304 0.0049995429 - 1429000 0.0053080208 0.0020697863 0.0046408589 - 1429100 0.0051538469 0.0026791964 0.005175591 - 1429200 0.0067087903 0.0028741892 0.0061237595 - 1429300 0.0049330012 0.0029177848 0.0053072072 - 1429400 0.0043614497 0.0021813539 0.0042939311 - 1429500 0.0055733299 0.0019252148 0.0046247964 - 1429600 0.0058785433 0.0021971473 0.0050445667 - 1429700 0.0047159923 0.0021559311 0.0044402399 - 1429800 0.0060655302 0.0023604719 0.0052984631 - 1429900 0.0063033419 0.0021960013 0.0052491826 - 1430000 0.006152043 0.002449022 0.0054289178 - 1430100 0.0051400619 0.0026934507 0.0051831682 - 1430200 0.0051414995 0.003352586 0.0058429998 - 1430300 0.006314044 0.0030940561 0.0061524211 - 1430400 0.0050195927 0.0025194472 0.0049508124 - 1430500 0.0061777494 0.0020537929 0.0050461403 - 1430600 0.0032893 0.002252765 0.0038460197 - 1430700 0.0054234326 0.0024066189 0.0050335941 - 1430800 0.005790535 0.0022558397 0.0050606301 - 1430900 0.0056579838 0.0020494159 0.0047900018 - 1431000 0.0052375238 0.0016790916 0.0042160172 - 1431100 0.0044825482 0.0016999911 0.0038712254 - 1431200 0.0050527117 0.0017500633 0.0041974705 - 1431300 0.0057605949 0.0015995463 0.0043898344 - 1431400 0.0044411377 0.0020946092 0.0042457853 - 1431500 0.0055203401 0.0021353874 0.0048093022 - 1431600 0.0057991646 0.0021680644 0.0049770348 - 1431700 0.0041894608 0.0021667478 0.0041960178 - 1431800 0.0043944145 0.0022622848 0.0043908293 - 1431900 0.0047469191 0.0022751089 0.0045743978 - 1432000 0.0049646007 0.0022524835 0.0046572119 - 1432100 0.0056739172 0.0022525258 0.0050008294 - 1432200 0.0059920176 0.0026246282 0.0055270117 - 1432300 0.0050899887 0.0026478738 0.0051133371 - 1432400 0.0041917172 0.0027458839 0.0047762469 - 1432500 0.0044134046 0.0026382676 0.0047760104 - 1432600 0.0056961389 0.0021280454 0.0048871127 - 1432700 0.0046479861 0.0016275427 0.0038789109 - 1432800 0.0063408677 0.0013349783 0.0044063361 - 1432900 0.0050811438 0.0016386217 0.0040998007 - 1433000 0.0052891807 0.0018045322 0.0043664791 - 1433100 0.0058638635 0.0016988386 0.0045391475 - 1433200 0.0055865013 0.0019606535 0.0046666151 - 1433300 0.0051205988 0.0021616254 0.0046419155 - 1433400 0.0053505754 0.0023184884 0.0049101734 - 1433500 0.0050819317 0.0025079667 0.0049695274 - 1433600 0.0032099748 0.0028332531 0.0043880847 - 1433700 0.004569241 0.0029483783 0.0051616044 - 1433800 0.0051732542 0.0027733554 0.0052791504 - 1433900 0.0052085796 0.0019788994 0.0045018052 - 1434000 0.0055279157 0.0018001395 0.0044777236 - 1434100 0.0042912122 0.0022584196 0.0043369756 - 1434200 0.0044231601 0.0028090256 0.0049514938 - 1434300 0.0060338696 0.0034177201 0.0063403757 - 1434400 0.0041270675 0.0036160973 0.0056151456 - 1434500 0.0061956001 0.0029985763 0.0059995701 - 1434600 0.0074851689 0.002846217 0.0064718457 - 1434700 0.0058999823 0.0029870497 0.0058448536 - 1434800 0.0058431338 0.0028623888 0.0056926567 - 1434900 0.0054151778 0.002641745 0.0052647217 - 1435000 0.006011084 0.0025597028 0.0054713216 - 1435100 0.0050077952 0.0026331505 0.0050588013 - 1435200 0.0048446594 0.0021828222 0.0045294541 - 1435300 0.0055653102 0.0018942076 0.0045899047 - 1435400 0.0043955541 0.0019244442 0.0040535407 - 1435500 0.0055095354 0.0018963803 0.0045650615 - 1435600 0.0045531287 0.002085246 0.0042906677 - 1435700 0.004099606 0.0022378687 0.0042236154 - 1435800 0.0055202209 0.0025600583 0.0052339152 - 1435900 0.0041890304 0.0028700994 0.004899161 - 1436000 0.0073427402 0.0028647652 0.006421405 - 1436100 0.0058952182 0.0032415686 0.0060970649 - 1436200 0.0062598481 0.0031053695 0.0061374835 - 1436300 0.0047890937 0.0032552726 0.0055749899 - 1436400 0.0054727412 0.003001336 0.005652195 - 1436500 0.0065378312 0.0028470678 0.0060138298 - 1436600 0.0054584082 0.002864798 0.0055087145 - 1436700 0.005627276 0.0027871126 0.0055128244 - 1436800 0.0046347518 0.002859949 0.005104907 - 1436900 0.0042902898 0.002874094 0.0049522031 - 1437000 0.0079236171 0.0025174233 0.0063554253 - 1437100 0.0054069554 0.0023615542 0.0049805482 - 1437200 0.004776893 0.00207739 0.0043911975 - 1437300 0.005380493 0.0021359815 0.0047421578 - 1437400 0.0049655551 0.0020217506 0.0044269413 - 1437500 0.0055776995 0.0025781751 0.0052798733 - 1437600 0.0061139986 0.0029510693 0.0059125374 - 1437700 0.005869232 0.003013193 0.0058561022 - 1437800 0.0043435399 0.002921156 0.0050250581 - 1437900 0.0043984886 0.0025980065 0.0047285244 - 1438000 0.0055783053 0.0026974277 0.0053994193 - 1438100 0.0052641115 0.0024263256 0.0049761296 - 1438200 0.0054929693 0.002291602 0.004952259 - 1438300 0.004075263 0.0024238677 0.0043978233 - 1438400 0.0040946735 0.0025545688 0.0045379262 - 1438500 0.0056693064 0.0022661911 0.0050122613 - 1438600 0.0060601899 0.0019286167 0.0048640211 - 1438700 0.0057987633 0.0019006841 0.0047094601 - 1438800 0.0053032257 0.0021096273 0.0046783772 - 1438900 0.0053820648 0.0021453668 0.0047523044 - 1439000 0.0042361119 0.0022259988 0.0042778655 - 1439100 0.0041322437 0.0025337168 0.0045352724 - 1439200 0.0046909672 0.0026098631 0.0048820503 - 1439300 0.0034029145 0.0029359534 0.0045842401 - 1439400 0.0056520017 0.0023619289 0.0050996172 - 1439500 0.0060052874 0.0023526232 0.0052614343 - 1439600 0.0059328622 0.0026161541 0.0054898842 - 1439700 0.0037213418 0.0031811399 0.0049836649 - 1439800 0.0070127944 0.0025731689 0.0059699912 - 1439900 0.0047538479 0.0023258865 0.0046285316 - 1440000 0.0055386581 0.002210269 0.0048930565 - 1440100 0.0051210995 0.0026474696 0.0051280022 - 1440200 0.0054662913 0.0024084579 0.0050561928 - 1440300 0.0057341256 0.0023226261 0.0051000932 - 1440400 0.0052006008 0.0027513824 0.0052704234 - 1440500 0.0048286035 0.0028749452 0.0052138 - 1440600 0.0055177421 0.0031951099 0.0058677663 - 1440700 0.0072662408 0.0030634789 0.0065830643 - 1440800 0.0057891198 0.0030730619 0.0058771668 - 1440900 0.0057471166 0.0030118754 0.005795635 - 1441000 0.0054925668 0.0027729535 0.0054334156 - 1441100 0.0043894138 0.0022451223 0.0043712446 - 1441200 0.0054905573 0.0018899427 0.0045494313 - 1441300 0.0041415462 0.0023276347 0.0043336962 - 1441400 0.0058547553 0.0019449892 0.0047808863 - 1441500 0.0039253684 0.0016789644 0.0035803148 - 1441600 0.0046096849 0.0015595662 0.0037923823 - 1441700 0.0044429727 0.0019924642 0.0041445291 - 1441800 0.0055727525 0.0024369316 0.0051362336 - 1441900 0.0042709314 0.0023866714 0.0044554038 - 1442000 0.0042308855 0.0020515104 0.0041008456 - 1442100 0.0055854409 0.0015529455 0.0042583935 - 1442200 0.0053943572 0.0018537677 0.0044666595 - 1442300 0.005247451 0.0021990254 0.0047407595 - 1442400 0.0083661474 0.0023690264 0.0064213791 - 1442500 0.0056012065 0.0028025244 0.0055156088 - 1442600 0.0048970703 0.0026169957 0.0049890141 - 1442700 0.0057922934 0.002424423 0.0052300651 - 1442800 0.0043785692 0.0025881903 0.0047090597 - 1442900 0.0050093672 0.0023320153 0.0047584276 - 1443000 0.0046003759 0.0019311697 0.0041594768 - 1443100 0.0046115135 0.002387794 0.0046214958 - 1443200 0.005059255 0.0027053195 0.0051558961 - 1443300 0.0042460789 0.0021435517 0.0042002462 - 1443400 0.0043546969 0.0016467595 0.0037560658 - 1443500 0.0040162235 0.0018501846 0.0037955428 - 1443600 0.0055650662 0.0022476462 0.0049432252 - 1443700 0.0041642478 0.0028715376 0.0048885951 - 1443800 0.0052649365 0.0027773399 0.0053275435 - 1443900 0.0059555504 0.0022845213 0.005169241 - 1444000 0.0061670422 0.0020427004 0.0050298615 - 1444100 0.0043426387 0.0020409033 0.0041443689 - 1444200 0.0058530781 0.0019919121 0.0048269968 - 1444300 0.0052279998 0.0022678342 0.0048001466 - 1444400 0.0062794005 0.0023187529 0.0053603375 - 1444500 0.0055026379 0.0024194086 0.0050847488 - 1444600 0.0043939542 0.0022184009 0.0043467224 - 1444700 0.0041570688 0.0023268713 0.0043404515 - 1444800 0.0068463309 0.0022334445 0.0055496361 - 1444900 0.0047583259 0.002129779 0.0044345931 - 1445000 0.0052741295 0.0021541894 0.0047088459 - 1445100 0.0041880718 0.0026114721 0.0046400693 - 1445200 0.0051189019 0.0027721383 0.0052516065 - 1445300 0.0050509073 0.002454661 0.0049011942 - 1445400 0.0051021147 0.0022458508 0.0047171876 - 1445500 0.0065883592 0.0024859923 0.0056772288 - 1445600 0.0042419078 0.0029991109 0.005053785 - 1445700 0.0046827266 0.0029649496 0.0052331453 - 1445800 0.0057736163 0.002475268 0.0052718634 - 1445900 0.0062225149 0.0026520178 0.0056660485 - 1446000 0.0060835186 0.0025457312 0.0054924356 - 1446100 0.0043464511 0.0022629432 0.0043682555 - 1446200 0.0050593733 0.0024076408 0.0048582747 - 1446300 0.0046682394 0.0023031089 0.0045642873 - 1446400 0.0060961787 0.0022169243 0.0051697608 - 1446500 0.0065732522 0.0024717625 0.0056556815 - 1446600 0.0066036673 0.002626856 0.0058255074 - 1446700 0.0045817017 0.0031544351 0.0053736968 - 1446800 0.0050119036 0.003436858 0.0058644989 - 1446900 0.0052415023 0.0029532937 0.0054921463 - 1447000 0.0066083812 0.0025383845 0.0057393191 - 1447100 0.0066006519 0.0022439445 0.0054411353 - 1447200 0.00561719 0.0025307011 0.0052515275 - 1447300 0.0036575007 0.0029116647 0.0046832665 - 1447400 0.0039580195 0.0031160751 0.0050332408 - 1447500 0.00445176 0.003076702 0.0052330232 - 1447600 0.0039444754 0.0029572712 0.0048678764 - 1447700 0.0044678284 0.0025777737 0.004741878 - 1447800 0.0052717194 0.0026655529 0.005219042 - 1447900 0.0059623814 0.0030522887 0.0059403172 - 1448000 0.0057029035 0.0031992812 0.0059616251 - 1448100 0.0047796939 0.002992389 0.0053075532 - 1448200 0.0053319672 0.002755556 0.0053382276 - 1448300 0.0046396121 0.0025343869 0.004781699 - 1448400 0.0043942412 0.002363594 0.0044920545 - 1448500 0.0049476393 0.0022792345 0.0046757473 - 1448600 0.00415622 0.002271355 0.0042845241 - 1448700 0.0045251586 0.0021779166 0.0043697903 - 1448800 0.0055283537 0.0023911526 0.0050689489 - 1448900 0.0056889426 0.0025444658 0.0053000473 - 1449000 0.0041647053 0.0028586779 0.004875957 - 1449100 0.0039666991 0.0026663488 0.0045877186 - 1449200 0.0052734045 0.0020487543 0.0046030596 - 1449300 0.0047389878 0.0022182569 0.0045137041 - 1449400 0.0048089777 0.0024823688 0.0048117173 - 1449500 0.0044615341 0.00289044 0.0050514956 - 1449600 0.0050843203 0.0023626654 0.004825383 - 1449700 0.0045616467 0.0018008958 0.0040104434 - 1449800 0.0042049416 0.0018550536 0.0038918222 - 1449900 0.0046202819 0.0018294381 0.0040673872 - 1450000 0.0054305816 0.0018850201 0.0045154581 - 1450100 0.0053933994 0.0019291134 0.0045415412 - 1450200 0.0047525332 0.0018372378 0.0041392461 - 1450300 0.0041722537 0.0017501484 0.0037710837 - 1450400 0.0046176538 0.0022331698 0.0044698459 - 1450500 0.0041577865 0.00227851 0.0042924379 - 1450600 0.0045247094 0.0025245705 0.0047162266 - 1450700 0.0078488772 0.0025732969 0.0063750968 - 1450800 0.0047484289 0.0026031573 0.0049031776 - 1450900 0.0052397071 0.0022305417 0.0047685249 - 1451000 0.0048296975 0.0024731204 0.0048125051 - 1451100 0.005468788 0.002143506 0.0047924501 - 1451200 0.0040565805 0.0018576415 0.0038225477 - 1451300 0.0041059124 0.0018373091 0.0038261104 - 1451400 0.0058702603 0.002020262 0.0048636693 - 1451500 0.0058725388 0.0023819825 0.0052264935 - 1451600 0.0060460925 0.0025541218 0.0054826978 - 1451700 0.0050731614 0.0026118846 0.0050691972 - 1451800 0.0043393856 0.0027377157 0.0048396056 - 1451900 0.0062822734 0.0023534094 0.0053963856 - 1452000 0.0062129803 0.0020336791 0.0050430914 - 1452100 0.0051168346 0.0019193825 0.0043978493 - 1452200 0.0051282777 0.0017585784 0.0042425879 - 1452300 0.0058535995 0.0018222199 0.0046575572 - 1452400 0.0053793817 0.0023354181 0.0049410561 - 1452500 0.0045876476 0.0024835416 0.0047056834 - 1452600 0.0039243908 0.0025165734 0.0044174502 - 1452700 0.0048125701 0.0017215179 0.0040526065 - 1452800 0.0036942169 0.001475301 0.0032646873 - 1452900 0.0045017114 0.0015320014 0.0037125179 - 1453000 0.003017507 0.0015336841 0.0029952891 - 1453100 0.0045223992 0.0015056022 0.0036961393 - 1453200 0.0040319027 0.001728229 0.0036811819 - 1453300 0.0045007919 0.0019994794 0.0041795505 - 1453400 0.0038832827 0.0021453491 0.0040263141 - 1453500 0.0030108823 0.0022646143 0.0037230104 - 1453600 0.0041583932 0.0022455757 0.0042597974 - 1453700 0.004235194 0.0021353046 0.0041867267 - 1453800 0.0049647494 0.0017002946 0.0041050951 - 1453900 0.0046890268 0.0019458161 0.0042170634 - 1454000 0.0044383071 0.0023311429 0.004480948 - 1454100 0.0046371347 0.0028739891 0.0051201012 - 1454200 0.0058445341 0.0025747457 0.0054056919 - 1454300 0.0062683955 0.0028100651 0.0058463192 - 1454400 0.0056668135 0.0030342801 0.0057791429 - 1454500 0.0044128792 0.0029081862 0.0050456746 - 1454600 0.0040774055 0.0027128225 0.0046878158 - 1454700 0.0068453359 0.0025867486 0.0059024581 - 1454800 0.0055923434 0.0027013082 0.0054100995 - 1454900 0.0054915709 0.0027630477 0.0054230273 - 1455000 0.0052844697 0.0030228782 0.0055825432 - 1455100 0.0054076767 0.0025187365 0.0051380799 - 1455200 0.0063209657 0.0024602475 0.0055219653 - 1455300 0.0046223837 0.0026144805 0.0048534476 - 1455400 0.00585989 0.0026796241 0.0055180083 - 1455500 0.0058569777 0.0024844484 0.0053214219 - 1455600 0.0044302039 0.0025393191 0.0046851991 - 1455700 0.0041729425 0.0024459049 0.0044671739 - 1455800 0.0054724284 0.002475139 0.0051258465 - 1455900 0.0065403071 0.0026968246 0.0058647859 - 1456000 0.0057533495 0.0031409851 0.0059277637 - 1456100 0.0061232571 0.0032823801 0.0062483328 - 1456200 0.0045203092 0.0031527594 0.0053422842 - 1456300 0.0076543351 0.0028630929 0.0065706614 - 1456400 0.005042995 0.0029909502 0.005433651 - 1456500 0.0067028995 0.0024942414 0.0057409584 - 1456600 0.0041055622 0.0025584217 0.0045470534 - 1456700 0.0039033101 0.0023942429 0.0042849088 - 1456800 0.0041293248 0.002311224 0.0043113657 - 1456900 0.0060504485 0.0022862609 0.0052169469 - 1457000 0.0061619097 0.0026073962 0.0055920712 - 1457100 0.005172901 0.0034496822 0.0059553061 - 1457200 0.0049638948 0.0037802086 0.0061845951 - 1457300 0.0058748535 0.0033663699 0.0062120021 - 1457400 0.0053391857 0.0033025128 0.0058886809 - 1457500 0.0041438643 0.003037704 0.0050448883 - 1457600 0.0072144406 0.0022131144 0.0057076091 - 1457700 0.0054581719 0.0022630314 0.0049068334 - 1457800 0.0053508953 0.0025290105 0.0051208505 - 1457900 0.0049958151 0.0024379133 0.0048577612 - 1458000 0.0040909771 0.0019845504 0.0039661174 - 1458100 0.0056840678 0.0017082142 0.0044614346 - 1458200 0.0052491057 0.0016877934 0.004230329 - 1458300 0.0048079871 0.0016884559 0.0040173246 - 1458400 0.0056933713 0.0014917075 0.0042494342 - 1458500 0.004567392 0.001994127 0.0042064575 - 1458600 0.0046386752 0.0020245202 0.0042713785 - 1458700 0.0061025795 0.0021905003 0.0051464372 - 1458800 0.0050645731 0.0027703996 0.0052235522 - 1458900 0.0037732264 0.0026619421 0.0044895986 - 1459000 0.0051215636 0.0024254723 0.0049062297 - 1459100 0.0040638848 0.0026144426 0.0045828868 - 1459200 0.0054211124 0.0025063166 0.005132168 - 1459300 0.0048435835 0.0026823016 0.0050284123 - 1459400 0.0054033204 0.0026533112 0.0052705445 - 1459500 0.005996486 0.0027041753 0.0056087232 - 1459600 0.0052702068 0.0025666865 0.0051194429 - 1459700 0.0057097689 0.002077063 0.0048427324 - 1459800 0.0040372518 0.0017560864 0.0037116302 - 1459900 0.004152134 0.0020447881 0.004055978 - 1460000 0.0039223034 0.0020413075 0.0039411732 - 1460100 0.0057823342 0.0019006589 0.004701477 - 1460200 0.0043736233 0.0022036998 0.0043221736 - 1460300 0.0036655753 0.0022997644 0.0040752774 - 1460400 0.005587805 0.002308138 0.0050147311 - 1460500 0.005452974 0.0027498506 0.0053911349 - 1460600 0.0042749173 0.0029686162 0.0050392793 - 1460700 0.0057333093 0.0022207922 0.0049978638 - 1460800 0.0037151814 0.0023297069 0.0041292479 - 1460900 0.0049936504 0.0024820876 0.004900887 - 1461000 0.0051491177 0.0025591363 0.0050532402 - 1461100 0.00564253 0.0025323576 0.005265458 - 1461200 0.0046004555 0.002636337 0.0048646826 - 1461300 0.0052384352 0.0019793549 0.0045167219 - 1461400 0.005185575 0.0020839819 0.0045957448 - 1461500 0.0047494917 0.0022035409 0.004504076 - 1461600 0.00517071 0.0021381603 0.004642723 - 1461700 0.0045553058 0.0021038136 0.0043102899 - 1461800 0.0053458721 0.0022237267 0.0048131335 - 1461900 0.0064996469 0.0020461019 0.0051943684 - 1462000 0.0048865463 0.0022758218 0.0046427427 - 1462100 0.00592766 0.002133831 0.0050050413 - 1462200 0.0059272249 0.0025610087 0.0054320082 - 1462300 0.0074469225 0.00252742 0.0061345231 - 1462400 0.0075698702 0.0024670252 0.0061336811 - 1462500 0.005326331 0.0026172659 0.0051972075 - 1462600 0.0038911471 0.0028119197 0.0046966941 - 1462700 0.00514366 0.002542355 0.0050338153 - 1462800 0.0062528005 0.0019765026 0.0050052028 - 1462900 0.0043829268 0.0019872676 0.0041102478 - 1463000 0.0047443906 0.0017370829 0.0040351471 - 1463100 0.0057068768 0.0020160308 0.0047802993 - 1463200 0.0067022269 0.0018375592 0.0050839503 - 1463300 0.0045989095 0.0023728015 0.0046003983 - 1463400 0.0057096208 0.0025908741 0.0053564717 - 1463500 0.0039557416 0.002524481 0.0044405433 - 1463600 0.0052876704 0.0023961968 0.0049574121 - 1463700 0.006149774 0.002736188 0.0057149848 - 1463800 0.0061171523 0.0024609783 0.005423974 - 1463900 0.0063471872 0.0024860457 0.0055604645 - 1464000 0.0047370024 0.0029283765 0.005222862 - 1464100 0.0054372708 0.0027915094 0.0054251875 - 1464200 0.0053296042 0.0021251285 0.0047066555 - 1464300 0.004666464 0.0022092789 0.0044695974 - 1464400 0.0065849986 0.0021178272 0.0053074359 - 1464500 0.0059178804 0.0019091398 0.0047756131 - 1464600 0.0058489701 0.002381125 0.0052142199 - 1464700 0.006418593 0.0026015072 0.0057105132 - 1464800 0.0056141558 0.0025190176 0.0052383743 - 1464900 0.006000079 0.0022264514 0.0051327396 - 1465000 0.0048748833 0.0021112483 0.0044725199 - 1465100 0.0048899635 0.0024455181 0.0048140942 - 1465200 0.0042582541 0.0022126681 0.0042752599 - 1465300 0.0053747412 0.0017741453 0.0043775355 - 1465400 0.003601226 0.0021130303 0.0038573742 - 1465500 0.0064819429 0.0023004169 0.005440108 - 1465600 0.0053892889 0.0022174481 0.004827885 - 1465700 0.0054480436 0.0017845301 0.0044234262 - 1465800 0.0065318604 0.001846151 0.0050100209 - 1465900 0.0044632289 0.0022435296 0.0044054061 - 1466000 0.0057122349 0.0020737457 0.0048406095 - 1466100 0.0070421201 0.001982267 0.0053932939 - 1466200 0.0039865832 0.0025076493 0.0044386506 - 1466300 0.004415774 0.0030262603 0.0051651509 - 1466400 0.0055850578 0.0026624456 0.005367708 - 1466500 0.005236096 0.0021233158 0.0046595498 - 1466600 0.005184864 0.0020208704 0.0045322889 - 1466700 0.003751572 0.0026417048 0.0044588724 - 1466800 0.0063741426 0.0027293632 0.0058168385 - 1466900 0.0037445156 0.0026219203 0.0044356701 - 1467000 0.0056197207 0.0021996107 0.0049216629 - 1467100 0.0051139832 0.0022800107 0.0047570963 - 1467200 0.0045816187 0.0026754063 0.0048946279 - 1467300 0.0068272918 0.0024848851 0.0057918546 - 1467400 0.0042173689 0.0025648253 0.0046076134 - 1467500 0.0051009837 0.0016478679 0.0041186569 - 1467600 0.0057623037 0.0012067668 0.0039978826 - 1467700 0.0040304008 0.0015924305 0.0035446559 - 1467800 0.0048284166 0.0017091015 0.0040478658 - 1467900 0.0040969127 0.0019570093 0.0039414514 - 1468000 0.0060652068 0.0021348671 0.0050727017 - 1468100 0.0053063062 0.0022060146 0.0047762567 - 1468200 0.0054375168 0.0022614198 0.004895217 - 1468300 0.0052123748 0.002471451 0.004996195 - 1468400 0.0060355451 0.0026647527 0.0055882199 - 1468500 0.0049142724 0.0027348755 0.0051152261 - 1468600 0.0046400576 0.0026382499 0.0048857778 - 1468700 0.0051567169 0.0021812272 0.0046790119 - 1468800 0.0061593573 0.0024975763 0.005481015 - 1468900 0.0052490452 0.003031924 0.0055744303 - 1469000 0.0050877039 0.0027418176 0.0052061742 - 1469100 0.0064057208 0.0022247739 0.005327545 - 1469200 0.005976163 0.0027591086 0.0056538126 - 1469300 0.0063250797 0.0032317561 0.0062954666 - 1469400 0.0070905916 0.0028726078 0.0063071131 - 1469500 0.0044446052 0.0024176065 0.0045704621 - 1469600 0.0042890828 0.002220526 0.0042980504 - 1469700 0.0050274963 0.0022230267 0.0046582202 - 1469800 0.0041695412 0.0024484634 0.0044680849 - 1469900 0.0054252749 0.0019424022 0.0045702697 - 1470000 0.0053498931 0.0016201944 0.0042115488 - 1470100 0.0042175849 0.0018147625 0.0038576552 - 1470200 0.0039988292 0.0023289283 0.0042658612 - 1470300 0.0052521471 0.0026747721 0.0052187808 - 1470400 0.005546019 0.0029790513 0.0056654043 - 1470500 0.0047759942 0.0030428745 0.0053562467 - 1470600 0.006386243 0.0029369583 0.0060302948 - 1470700 0.0054346118 0.0023425496 0.0049749397 - 1470800 0.0047045485 0.002701677 0.0049804427 - 1470900 0.0054651331 0.0028081891 0.005455363 - 1471000 0.0050780631 0.0030637546 0.0055234414 - 1471100 0.0041094265 0.0033372814 0.0053277848 - 1471200 0.0053352913 0.0024765537 0.0050608354 - 1471300 0.0050103105 0.0020971046 0.0045239737 - 1471400 0.003772461 0.0023584189 0.0041857047 - 1471500 0.0058772755 0.0026375109 0.0054843162 - 1471600 0.0051843898 0.0031088683 0.0056200571 - 1471700 0.0051944526 0.0028057856 0.0053218486 - 1471800 0.0039572667 0.0024537617 0.0043705627 - 1471900 0.0051575941 0.002474715 0.0049729246 - 1472000 0.0041014242 0.0025479071 0.0045345345 - 1472100 0.0055878093 0.0024194879 0.005126083 - 1472200 0.0038000415 0.002272239 0.0041128841 - 1472300 0.005353411 0.0018914908 0.0044845493 - 1472400 0.005906194 0.0019606431 0.0048214558 - 1472500 0.0055040507 0.0021896052 0.0048556298 - 1472600 0.0043703106 0.0024723184 0.0045891876 - 1472700 0.004409094 0.0024839479 0.0046196028 - 1472800 0.0042272393 0.0027484741 0.0047960431 - 1472900 0.006188501 0.0027147119 0.0057122671 - 1473000 0.0057191981 0.0023811832 0.0051514198 - 1473100 0.0044899124 0.002869692 0.0050444933 - 1473200 0.0057157864 0.0028702082 0.0056387923 - 1473300 0.0062213496 0.002543577 0.0055570432 - 1473400 0.005456392 0.0024120497 0.0050549895 - 1473500 0.0046258575 0.0024212013 0.004661851 - 1473600 0.0052027447 0.0024047411 0.0049248206 - 1473700 0.0043982272 0.0024074006 0.0045377919 - 1473800 0.0044458531 0.0026578268 0.0048112868 - 1473900 0.0035305577 0.0026203168 0.0043304307 - 1474000 0.0047710024 0.0024592187 0.004770173 - 1474100 0.0042614391 0.0026414029 0.0047055375 - 1474200 0.0051305652 0.0024951751 0.0049802926 - 1474300 0.0051535413 0.0024813884 0.0049776349 - 1474400 0.0049265871 0.0027535179 0.0051398335 - 1474500 0.0034948082 0.0030861866 0.0047789843 - 1474600 0.0047561724 0.0031116167 0.0054153877 - 1474700 0.0051828571 0.0031586275 0.0056690739 - 1474800 0.0046551379 0.0024959888 0.0047508212 - 1474900 0.0049986661 0.0019684774 0.0043897063 - 1475000 0.0040904193 0.0019438189 0.0039251157 - 1475100 0.0054195461 0.0024355682 0.0050606609 - 1475200 0.0042965556 0.0027882581 0.0048694022 - 1475300 0.0042457106 0.0025092077 0.0045657238 - 1475400 0.005244805 0.0025098724 0.0050503249 - 1475500 0.0047481101 0.0025727239 0.0048725897 - 1475600 0.0049006972 0.0030994913 0.0054732665 - 1475700 0.0054342256 0.0027459424 0.0053781454 - 1475800 0.0057857099 0.00229776 0.0051002133 - 1475900 0.0067680306 0.0021606215 0.0054388863 - 1476000 0.0055385445 0.0027687568 0.0054514893 - 1476100 0.0053315529 0.0029102322 0.0054927031 - 1476200 0.0060831602 0.002585514 0.0055320448 - 1476300 0.0054085062 0.0026988071 0.0053185522 - 1476400 0.0047313369 0.002783342 0.0050750833 - 1476500 0.0058839891 0.0027091415 0.0055591987 - 1476600 0.0052667549 0.0030537101 0.0056047945 - 1476700 0.0052783481 0.0028876048 0.0054443047 - 1476800 0.0065383915 0.002094562 0.0052615954 - 1476900 0.0045817119 0.0020867583 0.004306025 - 1477000 0.0050283669 0.0020289717 0.0044645869 - 1477100 0.0038707806 0.0021030892 0.0039779986 - 1477200 0.0042920342 0.002278068 0.004357022 - 1477300 0.0045645484 0.0022513195 0.0044622727 - 1477400 0.003694654 0.0023117774 0.0041013754 - 1477500 0.0074140287 0.001797872 0.0053890422 - 1477600 0.0058540342 0.0023190632 0.005154611 - 1477700 0.0047878333 0.0029133292 0.005232436 - 1477800 0.0076301469 0.0022616619 0.0059575143 - 1477900 0.0068712101 0.0024795042 0.0058077466 - 1478000 0.0055132914 0.0028823751 0.0055528756 - 1478100 0.0048868703 0.0028407131 0.0052077909 - 1478200 0.0060871388 0.0019986197 0.0049470775 - 1478300 0.0050743554 0.0021843725 0.0046422634 - 1478400 0.0058856081 0.0023615204 0.0052123618 - 1478500 0.0036902753 0.0022833679 0.004070845 - 1478600 0.0052140966 0.0020763462 0.0046019242 - 1478700 0.0042943241 0.0024020623 0.0044821255 - 1478800 0.005532859 0.0025120023 0.0051919809 - 1478900 0.0042791994 0.0022837965 0.0043565337 - 1479000 0.006787581 0.0020283568 0.0053160913 - 1479100 0.0037371549 0.0023141394 0.0041243238 - 1479200 0.0058809472 0.0018695353 0.0047181191 - 1479300 0.0041296177 0.0020498024 0.0040500859 - 1479400 0.0053771498 0.002246603 0.0048511599 - 1479500 0.0054595867 0.0022285204 0.0048730077 - 1479600 0.0056445261 0.0020948337 0.004828901 - 1479700 0.0053976835 0.0022153432 0.0048298461 - 1479800 0.0053165728 0.0021922773 0.0047674922 - 1479900 0.0049900379 0.0024681067 0.0048851563 - 1480000 0.0050718976 0.0024277523 0.0048844527 - 1480100 0.0047640635 0.0023480122 0.0046556055 - 1480200 0.0047264472 0.0021879367 0.0044773096 - 1480300 0.0059123387 0.0016500257 0.0045138147 - 1480400 0.004136953 0.0016185433 0.0036223799 - 1480500 0.0056200498 0.0016013844 0.004323596 - 1480600 0.0052163388 0.0020078688 0.0045345329 - 1480700 0.0052614215 0.0020527763 0.0046012773 - 1480800 0.0036584459 0.0025601138 0.0043321735 - 1480900 0.0051593386 0.0020462776 0.0045453322 - 1481000 0.0048094693 0.001930828 0.0042604147 - 1481100 0.0054279439 0.0019763791 0.0046055394 - 1481200 0.0054017707 0.0023335219 0.0049500046 - 1481300 0.0051254267 0.0027999238 0.0052825524 - 1481400 0.0040692302 0.0027982974 0.0047693308 - 1481500 0.0048482225 0.0022334872 0.004581845 - 1481600 0.0063793942 0.0017350282 0.0048250473 - 1481700 0.0051020843 0.0013425118 0.0038138339 - 1481800 0.0052409701 0.0015166755 0.0040552704 - 1481900 0.004695727 0.0021607594 0.0044352521 - 1482000 0.0053285147 0.0020764316 0.004657431 - 1482100 0.004698224 0.0017972067 0.0040729089 - 1482200 0.003691928 0.0023231522 0.0041114298 - 1482300 0.0053180156 0.0022127552 0.004788669 - 1482400 0.0048082279 0.0019727944 0.0043017798 - 1482500 0.0059785539 0.002029415 0.0049252771 - 1482600 0.0048274508 0.0020749628 0.0044132593 - 1482700 0.0040729609 0.0020724551 0.0040452955 - 1482800 0.0043957192 0.002450936 0.0045801125 - 1482900 0.0055777245 0.0022054277 0.004907138 - 1483000 0.0049863519 0.002195659 0.0046109232 - 1483100 0.0050903432 0.0018827448 0.0043483799 - 1483200 0.0062327284 0.0016051852 0.004624163 - 1483300 0.0035291963 0.0019196136 0.0036290681 - 1483400 0.0058381721 0.0016687622 0.0044966268 - 1483500 0.0042642399 0.0015701748 0.003635666 - 1483600 0.0065663546 0.0020978752 0.0052784532 - 1483700 0.005749216 0.002553032 0.0053378085 - 1483800 0.0051765196 0.0024472087 0.0049545854 - 1483900 0.0061064604 0.0017020895 0.0046599062 - 1484000 0.0049511519 0.0017087075 0.0041069217 - 1484100 0.0059331705 0.0018134559 0.0046873354 - 1484200 0.0041280716 0.001785213 0.0037847477 - 1484300 0.0048904219 0.0019202834 0.0042890815 - 1484400 0.0041109446 0.0019026208 0.0038938596 - 1484500 0.0047130296 0.0020794832 0.0043623569 - 1484600 0.0060579639 0.0022062807 0.0051406069 - 1484700 0.0045462151 0.0023768351 0.0045789081 - 1484800 0.0058191941 0.0025026653 0.0053213374 - 1484900 0.0071424488 0.0026233793 0.0060830029 - 1485000 0.0059538075 0.0021718529 0.0050557285 - 1485100 0.0058673193 0.0021620543 0.0050040371 - 1485200 0.0046977978 0.0022943788 0.0045698746 - 1485300 0.0046974668 0.0020517952 0.0043271307 - 1485400 0.0070835684 0.0019955459 0.0054266493 - 1485500 0.0038207213 0.0025465228 0.0043971847 - 1485600 0.0050472912 0.0023907202 0.0048355018 - 1485700 0.004594153 0.0021361256 0.0043614185 - 1485800 0.0048182401 0.00193531 0.004269145 - 1485900 0.0041596057 0.0018954145 0.0039102235 - 1486000 0.0055098167 0.0019366603 0.0046054778 - 1486100 0.0050543374 0.0019474125 0.0043956071 - 1486200 0.0052143065 0.001746892 0.0042725717 - 1486300 0.0041552295 0.0017679419 0.0037806311 - 1486400 0.0052547326 0.0017500977 0.0042953588 - 1486500 0.0054111628 0.0020025251 0.0046235571 - 1486600 0.0050696033 0.0021669263 0.0046225154 - 1486700 0.0052456719 0.0022207261 0.0047615984 - 1486800 0.0056496829 0.0019780764 0.0047146416 - 1486900 0.0045446647 0.0016565552 0.0038578772 - 1487000 0.0039191701 0.0020878057 0.0039861537 - 1487100 0.0042691731 0.0021082122 0.004176093 - 1487200 0.0041889942 0.001847204 0.003876248 - 1487300 0.0062633622 0.0020288277 0.0050626438 - 1487400 0.004250334 0.0022285924 0.004287348 - 1487500 0.0047984596 0.0021043938 0.0044286477 - 1487600 0.0048498424 0.0021713991 0.0045205415 - 1487700 0.0054894141 0.0021416511 0.004800586 - 1487800 0.0058571743 0.0020056539 0.0048427227 - 1487900 0.0042398225 0.0020685396 0.0041222036 - 1488000 0.0048099469 0.002336157 0.004665975 - 1488100 0.0039827087 0.0022824711 0.0042115956 - 1488200 0.005783661 0.0021527227 0.0049541834 - 1488300 0.00481355 0.002314746 0.0046463093 - 1488400 0.0036768096 0.0022836425 0.0040645971 - 1488500 0.0061749832 0.0022008946 0.0051919021 - 1488600 0.005391242 0.0023792952 0.004990678 - 1488700 0.0050694925 0.0026103559 0.0050658913 - 1488800 0.0048043573 0.0018408078 0.0041679184 - 1488900 0.0051122197 0.0015526673 0.0040288987 - 1489000 0.0030768076 0.0020259143 0.003516243 - 1489100 0.0041410651 0.0017749526 0.0037807811 - 1489200 0.0049935765 0.00182655 0.0042453137 - 1489300 0.0054803968 0.0020533543 0.0047079216 - 1489400 0.0045170474 0.0024197441 0.004607689 - 1489500 0.0050867998 0.0025497106 0.0050136292 - 1489600 0.0042307909 0.0024987037 0.0045479931 - 1489700 0.0036947938 0.0021665333 0.003956199 - 1489800 0.0056096714 0.0019323342 0.0046495188 - 1489900 0.0051936514 0.0021011751 0.00461685 - 1490000 0.0050670625 0.0017306345 0.0041849929 - 1490100 0.0051091938 0.001743046 0.0042178117 - 1490200 0.0055480502 0.0024547322 0.005142069 - 1490300 0.0053356351 0.0030254358 0.005609884 - 1490400 0.0061976443 0.0025870061 0.00558899 - 1490500 0.0047281088 0.0023062917 0.0045964694 - 1490600 0.0052597339 0.0020993804 0.004647064 - 1490700 0.004277447 0.0021408886 0.0042127769 - 1490800 0.0048767301 0.0024004496 0.0047626157 - 1490900 0.0043809375 0.0023268997 0.0044489163 - 1491000 0.007157505 0.0019125128 0.0053794293 - 1491100 0.0052807721 0.0018322031 0.0043900771 - 1491200 0.0066932554 0.0025401164 0.005782162 - 1491300 0.005979757 0.0029071776 0.0058036224 - 1491400 0.0057994359 0.0028003628 0.0056094645 - 1491500 0.0055590694 0.0027567049 0.0054493791 - 1491600 0.0061551541 0.0029741406 0.0059555434 - 1491700 0.0068842481 0.0029093565 0.0062439142 - 1491800 0.0041170823 0.0027457226 0.0047399344 - 1491900 0.0049898554 0.0024389231 0.0048558843 - 1492000 0.0049478603 0.002382194 0.0047788139 - 1492100 0.0040402146 0.0023445617 0.0043015406 - 1492200 0.0040201857 0.0022555002 0.0042027777 - 1492300 0.006239274 0.0022241968 0.0052463451 - 1492400 0.0047739617 0.0021621666 0.0044745543 - 1492500 0.0062614879 0.0023058026 0.0053387108 - 1492600 0.0057638002 0.0022587708 0.0050506116 - 1492700 0.0044449305 0.0019791576 0.0041321708 - 1492800 0.0052005051 0.0016452523 0.0041642469 - 1492900 0.0052043338 0.0017982244 0.0043190736 - 1493000 0.0044067231 0.0020876618 0.0042221683 - 1493100 0.0058031541 0.0020716562 0.0048825589 - 1493200 0.0054961372 0.0018879922 0.0045501836 - 1493300 0.003806672 0.0018742151 0.0037180719 - 1493400 0.0041893358 0.0022328105 0.00426202 - 1493500 0.0043607957 0.0022858664 0.0043981268 - 1493600 0.0039448907 0.0022789052 0.0041897116 - 1493700 0.0046303402 0.0024898583 0.0047326793 - 1493800 0.0049687724 0.002511586 0.0049183352 - 1493900 0.005216078 0.0029583776 0.0054849153 - 1494000 0.0039564267 0.0030287321 0.0049451263 - 1494100 0.0047325081 0.0025916917 0.0048840003 - 1494200 0.004308868 0.0025069613 0.0045940693 - 1494300 0.0048658759 0.0025346103 0.0048915189 - 1494400 0.0037536818 0.0025934398 0.0044116294 - 1494500 0.0052993777 0.0023431775 0.0049100636 - 1494600 0.0046509573 0.0025537281 0.0048065355 - 1494700 0.0057135837 0.0027079346 0.0054754517 - 1494800 0.004773551 0.0028562583 0.0051684471 - 1494900 0.0073955111 0.0023315014 0.0059137021 - 1495000 0.0054763125 0.0029292007 0.0055817896 - 1495100 0.0052144316 0.0031379183 0.0056636586 - 1495200 0.0041003252 0.0027123334 0.0046984285 - 1495300 0.0046814165 0.0021280201 0.0043955813 - 1495400 0.0052068802 0.0024683531 0.0049904357 - 1495500 0.0039765233 0.002757552 0.0046836804 - 1495600 0.0052793295 0.0025614806 0.0051186558 - 1495700 0.0072559162 0.0020065389 0.0055211233 - 1495800 0.0049853552 0.002547521 0.0049623024 - 1495900 0.0055453155 0.0024594402 0.0051454524 - 1496000 0.0049242616 0.0019930538 0.0043782431 - 1496100 0.0047986489 0.0018700009 0.0041943465 - 1496200 0.0059043984 0.002600817 0.00546076 - 1496300 0.0038178668 0.0023775654 0.0042268447 - 1496400 0.0054542479 0.0019266048 0.0045685061 - 1496500 0.003843049 0.0020506038 0.0039120807 - 1496600 0.0044631125 0.0018933131 0.0040551332 - 1496700 0.0049909093 0.0019904042 0.0044078759 - 1496800 0.0065730221 0.0022090458 0.0053928534 - 1496900 0.0057328426 0.0024679365 0.0052447821 - 1497000 0.0044749437 0.0024045301 0.004572081 - 1497100 0.0051054169 0.0022184287 0.004691365 - 1497200 0.004568793 0.0018647046 0.0040777137 - 1497300 0.0058605336 0.0021165442 0.0049552402 - 1497400 0.0065901644 0.0024501237 0.0056422346 - 1497500 0.0049672534 0.0022667889 0.0046728022 - 1497600 0.0044448979 0.0023057229 0.0044587203 - 1497700 0.0052211966 0.0020947972 0.0046238143 - 1497800 0.0057018558 0.0024502475 0.0052120839 - 1497900 0.0047173017 0.0029310253 0.0052159683 - 1498000 0.0049082529 0.0030032859 0.0053807209 - 1498100 0.0054147939 0.0030215831 0.0056443739 - 1498200 0.0062899922 0.0024560006 0.0055027155 - 1498300 0.0048103347 0.0025649886 0.0048949945 - 1498400 0.0048502315 0.0028964423 0.0052457732 - 1498500 0.0059197312 0.0032489682 0.0061163379 - 1498600 0.0053092142 0.0026672475 0.0052388981 - 1498700 0.0067123577 0.0020487635 0.0053000618 - 1498800 0.0053247385 0.0023020849 0.0048812551 - 1498900 0.0058527324 0.0027525906 0.0055875078 - 1499000 0.0065672195 0.003261612 0.006442609 - 1499100 0.0053673793 0.0030295106 0.0056293349 - 1499200 0.0067588681 0.0020029443 0.005276771 - 1499300 0.0052735227 0.0020638007 0.0046181632 - 1499400 0.0047850956 0.0028078733 0.005125654 - 1499500 0.005072873 0.0026393393 0.0050965121 - 1499600 0.0054697287 0.0024310294 0.0050804292 - 1499700 0.0050147247 0.002653142 0.0050821493 - 1499800 0.0042425308 0.0030298658 0.0050848416 - 1499900 0.0040472473 0.0026626597 0.0046230451 - 1500000 0.005391967 0.0024955895 0.0051073236 - 1500100 0.0054682375 0.0024130616 0.0050617391 - 1500200 0.0034275356 0.0025798354 0.004240048 - 1500300 0.0052979033 0.0026616875 0.0052278594 - 1500400 0.0049696894 0.00256389 0.0049710833 - 1500500 0.0056962334 0.0024809108 0.0052400238 - 1500600 0.0084394238 0.0020381304 0.0061259763 - 1500700 0.0040544766 0.0025453819 0.004509269 - 1500800 0.0040078693 0.0028185719 0.0047598836 - 1500900 0.006600141 0.0026945961 0.0058915393 - 1501000 0.005254805 0.0026472671 0.0051925633 - 1501100 0.0046546942 0.0023586042 0.0046132217 - 1501200 0.0055715737 0.0022415292 0.0049402602 - 1501300 0.0057956687 0.0022725187 0.0050797957 - 1501400 0.0058936482 0.0021463039 0.0050010397 - 1501500 0.0049877128 0.0019706151 0.0043865384 - 1501600 0.0055784461 0.0026318307 0.0053338905 - 1501700 0.0055660112 0.0031192022 0.0058152389 - 1501800 0.0066590729 0.002527848 0.0057533364 - 1501900 0.0051037539 0.0017830663 0.004255197 - 1502000 0.0045319587 0.0018606142 0.0040557816 - 1502100 0.004977855 0.0019482666 0.0043594151 - 1502200 0.005173136 0.0020857053 0.004591443 - 1502300 0.0036756262 0.0020145811 0.0037949626 - 1502400 0.0058185183 0.0018877584 0.0047061032 - 1502500 0.0044842041 0.0020455779 0.0042176142 - 1502600 0.005518871 0.0020175809 0.0046907841 - 1502700 0.0066752219 0.0021028036 0.0053361142 - 1502800 0.005614568 0.0020638006 0.004783357 - 1502900 0.0047438241 0.0021815534 0.0044793432 - 1503000 0.0054250193 0.0022470715 0.0048748153 - 1503100 0.0045569251 0.0023578866 0.0045651472 - 1503200 0.0058508483 0.0021617884 0.004995793 - 1503300 0.0054118292 0.0018522453 0.0044736001 - 1503400 0.0038733041 0.0022744395 0.0041505712 - 1503500 0.0035942052 0.0022381228 0.003979066 - 1503600 0.0050190378 0.0018423824 0.0042734788 - 1503700 0.0057417441 0.0018363681 0.0046175254 - 1503800 0.0042757315 0.0023310311 0.0044020885 - 1503900 0.0047740055 0.0022262141 0.004538623 - 1504000 0.005487152 0.0021817691 0.0048396083 - 1504100 0.0077432812 0.0020347027 0.0057853545 - 1504200 0.0050486395 0.0022102093 0.004655644 - 1504300 0.0070789805 0.0021726119 0.005601493 - 1504400 0.0040387872 0.0024647812 0.0044210687 - 1504500 0.0050486134 0.002578387 0.0050238092 - 1504600 0.004724324 0.0025759273 0.0048642717 - 1504700 0.0060772979 0.002542617 0.0054863082 - 1504800 0.0059013442 0.0025918616 0.0054503252 - 1504900 0.0053515646 0.002439487 0.0050316512 - 1505000 0.0040912628 0.0023453789 0.0043270844 - 1505100 0.0049990041 0.0025070305 0.0049284232 - 1505200 0.0052837571 0.0027826172 0.005341937 - 1505300 0.0052590758 0.0027637824 0.0053111472 - 1505400 0.0045049469 0.0025783204 0.004760404 - 1505500 0.0051025614 0.0026814833 0.0051530365 - 1505600 0.0069982289 0.0026910716 0.0060808387 - 1505700 0.0034709757 0.0028530913 0.0045343451 - 1505800 0.0048268019 0.0024340844 0.0047720665 - 1505900 0.0044754574 0.0022618212 0.0044296209 - 1506000 0.0060817651 0.002275757 0.0052216119 - 1506100 0.0049973788 0.0023111951 0.0047318005 - 1506200 0.0053979202 0.0023261461 0.0049407637 - 1506300 0.0056295214 0.0022969425 0.005023742 - 1506400 0.0045138011 0.0022848414 0.0044712138 - 1506500 0.004665066 0.0024650186 0.00472466 - 1506600 0.0030157095 0.0028482977 0.004309032 - 1506700 0.0059962878 0.0027522343 0.0056566862 - 1506800 0.0063096081 0.0027816633 0.0058378797 - 1506900 0.0047589934 0.0027283652 0.0050335027 - 1507000 0.0065415912 0.0025180422 0.0056866254 - 1507100 0.0052145179 0.0019867926 0.0045125747 - 1507200 0.0035282714 0.0019865039 0.0036955103 - 1507300 0.0059480524 0.0019052749 0.0047863628 - 1507400 0.0074867422 0.0020258921 0.0056522829 - 1507500 0.0051737642 0.0024659569 0.004971999 - 1507600 0.003959078 0.0024986301 0.0044163085 - 1507700 0.0057750287 0.0023217916 0.0051190712 - 1507800 0.0047545577 0.0023028329 0.0046058218 - 1507900 0.0056972324 0.0021900065 0.0049496035 - 1508000 0.0058194712 0.0019332008 0.0047520072 - 1508100 0.0049793942 0.0019969272 0.0044088213 - 1508200 0.0050442584 0.002283153 0.0047264656 - 1508300 0.0057045424 0.0025134136 0.0052765514 - 1508400 0.0050951031 0.0024053753 0.0048733159 - 1508500 0.0051705473 0.0022894321 0.004793916 - 1508600 0.0037994537 0.0026972276 0.004537588 - 1508700 0.0059422453 0.0024081132 0.0052863882 - 1508800 0.0047537682 0.0025004575 0.004803064 - 1508900 0.0059558093 0.0023170312 0.0052018763 - 1509000 0.0042812632 0.0022552463 0.0043289832 - 1509100 0.0046126828 0.0021880857 0.0044223539 - 1509200 0.0043856207 0.0021466985 0.0042709835 - 1509300 0.0054961077 0.0020215602 0.0046837374 - 1509400 0.0058359754 0.0018501112 0.0046769118 - 1509500 0.0046516132 0.0021932856 0.0044464107 - 1509600 0.0044435857 0.0022295264 0.0043818882 - 1509700 0.0041537929 0.0021007782 0.0041127717 - 1509800 0.0065052577 0.0020199123 0.0051708965 - 1509900 0.0049997297 0.0022112102 0.0046329543 - 1510000 0.0043948534 0.0020862418 0.0042149989 - 1510100 0.0047218803 0.0018873627 0.0041745235 - 1510200 0.0042081904 0.0022254086 0.0042637509 - 1510300 0.005258069 0.0022916508 0.004838528 - 1510400 0.0050714345 0.0023341844 0.0047906604 - 1510500 0.0056822333 0.0023022392 0.0050545709 - 1510600 0.0060787185 0.0025767656 0.0055211449 - 1510700 0.0053092486 0.0025543414 0.0051260087 - 1510800 0.0050855806 0.0020384034 0.0045017315 - 1510900 0.00523639 0.001982109 0.0045184854 - 1511000 0.003208463 0.0024982925 0.0040523918 - 1511100 0.0047378377 0.0021273302 0.0044222203 - 1511200 0.0067183582 0.0021289698 0.0053831745 - 1511300 0.0054591127 0.0027379717 0.0053822294 - 1511400 0.0064713502 0.0029050801 0.0060396404 - 1511500 0.004330383 0.0030686449 0.0051661742 - 1511600 0.0047264532 0.0028660752 0.005155451 - 1511700 0.0031370083 0.0025843549 0.0041038434 - 1511800 0.0056008931 0.002529563 0.0052424956 - 1511900 0.0067699217 0.0024244852 0.0057036661 - 1512000 0.0047689416 0.0023640688 0.0046740248 - 1512100 0.0044607643 0.0023998791 0.0045605618 - 1512200 0.0048110323 0.0027617529 0.0050920967 - 1512300 0.0062326429 0.0025482623 0.0055671987 - 1512400 0.0050013646 0.0022933987 0.0047159347 - 1512500 0.0048099057 0.0021906598 0.0045204579 - 1512600 0.006733147 0.0026145466 0.0058759147 - 1512700 0.0051315395 0.0031374926 0.0056230821 - 1512800 0.0052873938 0.0030270056 0.005588087 - 1512900 0.0049498888 0.0027322889 0.0051298912 - 1513000 0.0051821017 0.0023608821 0.0048709626 - 1513100 0.003652697 0.0025309924 0.0043002676 - 1513200 0.0045923891 0.0026734714 0.0048979099 - 1513300 0.0049680727 0.0025646955 0.0049711057 - 1513400 0.0050240363 0.002338969 0.0047724865 - 1513500 0.0059291254 0.0018943529 0.004766273 - 1513600 0.0064814711 0.0018104882 0.0049499508 - 1513700 0.005097892 0.0021432146 0.0046125061 - 1513800 0.0046520625 0.0023272486 0.0045805914 - 1513900 0.0064507048 0.0021363241 0.0052608842 - 1514000 0.0038010178 0.0022503744 0.0040914924 - 1514100 0.0052916069 0.0025594105 0.0051225326 - 1514200 0.0043880092 0.0030104598 0.0051359017 - 1514300 0.0036163475 0.0032078688 0.0049595371 - 1514400 0.0058218344 0.0029336174 0.0057535685 - 1514500 0.0057587682 0.0027114487 0.0055008521 - 1514600 0.0040029704 0.0025887225 0.0045276613 - 1514700 0.0047734935 0.0028460018 0.0051581628 - 1514800 0.0030792973 0.0034129825 0.0049045171 - 1514900 0.0048410209 0.0035162204 0.0058610899 - 1515000 0.0068180847 0.0033933101 0.0066958199 - 1515100 0.0056107183 0.0033137075 0.0060313991 - 1515200 0.0071140726 0.00324889 0.006694769 - 1515300 0.0047911522 0.0028407987 0.005161513 - 1515400 0.0053529431 0.0028875587 0.0054803906 - 1515500 0.004437171 0.0026115728 0.0047608275 - 1515600 0.0068796085 0.0027909926 0.0061233029 - 1515700 0.0048175219 0.0027470297 0.0050805168 - 1515800 0.0049257222 0.0024983794 0.004884276 - 1515900 0.005858802 0.001941589 0.0047794463 - 1516000 0.0064051292 0.0019217696 0.0050242541 - 1516100 0.0052851572 0.0023774694 0.0049374674 - 1516200 0.0041539423 0.0024053279 0.0044173937 - 1516300 0.0052446163 0.0026706705 0.0052110315 - 1516400 0.0043961657 0.0027262913 0.004855684 - 1516500 0.006212903 0.0025891175 0.0055984924 - 1516600 0.0058115487 0.0026051141 0.005420083 - 1516700 0.0042065122 0.0026073491 0.0046448784 - 1516800 0.0044058912 0.0024874463 0.0046215499 - 1516900 0.005113136 0.002768596 0.0052452712 - 1517000 0.0045464144 0.0031460338 0.0053482032 - 1517100 0.0060625474 0.0028324735 0.0057690198 - 1517200 0.0050687233 0.0025840117 0.0050391745 - 1517300 0.0072775188 0.0024580667 0.0059831149 - 1517400 0.0051670094 0.0023447324 0.0048475026 - 1517500 0.0040799937 0.0022905317 0.0042667786 - 1517600 0.0034428902 0.0021209967 0.0037886466 - 1517700 0.0046126716 0.0020346857 0.0042689485 - 1517800 0.0057051643 0.0018829777 0.0046464167 - 1517900 0.0050695128 0.0019210955 0.0043766408 - 1518000 0.0066577631 0.0019748282 0.0051996822 - 1518100 0.0052959291 0.0019921583 0.0045573739 - 1518200 0.0053822134 0.0018299904 0.004437 - 1518300 0.0053086742 0.0015980403 0.0041694294 - 1518400 0.0054165306 0.0015758832 0.0041995152 - 1518500 0.0050931877 0.0016362264 0.0041032391 - 1518600 0.0044791591 0.0019285912 0.0040981839 - 1518700 0.0049959638 0.002172694 0.004592614 - 1518800 0.0041418492 0.002814155 0.0048203632 - 1518900 0.0045913239 0.0020974566 0.0043213791 - 1519000 0.0071830392 0.001913368 0.0053926526 - 1519100 0.0047182643 0.0021385759 0.0044239851 - 1519200 0.0069566805 0.0018851864 0.0052548285 - 1519300 0.0037083459 0.0020104365 0.0038066665 - 1519400 0.0041133304 0.0021488441 0.0041412385 - 1519500 0.0066287998 0.00201613 0.0052269548 - 1519600 0.0058821241 0.0025064324 0.0053555862 - 1519700 0.0052259395 0.0029563557 0.0054876701 - 1519800 0.0065573987 0.0028372625 0.0060135025 - 1519900 0.0089463739 0.0026172457 0.0069506456 - 1520000 0.0065474935 0.0022321964 0.0054036386 - 1520100 0.0055510364 0.0025135654 0.0052023486 - 1520200 0.0058049387 0.0026370471 0.0054488143 - 1520300 0.005493844 0.0026271139 0.0052881946 - 1520400 0.0050583876 0.0028512557 0.0053014121 - 1520500 0.0051014632 0.003121894 0.0055929153 - 1520600 0.0044885748 0.0030643542 0.0052385076 - 1520700 0.0054012553 0.0025722405 0.0051884735 - 1520800 0.0042287849 0.0021172571 0.0041655748 - 1520900 0.0052539442 0.0019430455 0.0044879248 - 1521000 0.0052606736 0.0023296951 0.0048778339 - 1521100 0.0050005233 0.0024795835 0.004901712 - 1521200 0.0066735817 0.0026569251 0.0058894412 - 1521300 0.0053296603 0.0028770572 0.0054586114 - 1521400 0.0065353264 0.0027022535 0.0058678023 - 1521500 0.0061327482 0.0032460925 0.0062166425 - 1521600 0.0058992513 0.0040217218 0.0068791717 - 1521700 0.0069443917 0.0035971614 0.0069608512 - 1521800 0.0056206096 0.0028125234 0.0055350061 - 1521900 0.0052831636 0.0021936166 0.004752649 - 1522000 0.0067290562 0.0023391834 0.00559857 - 1522100 0.0052951241 0.0028122174 0.0053770431 - 1522200 0.0046911234 0.0028382652 0.0051105281 - 1522300 0.0057740351 0.0023981143 0.0051949125 - 1522400 0.0049106954 0.0028107489 0.005189367 - 1522500 0.0051294253 0.0032530792 0.0057376445 - 1522600 0.0069066749 0.0024779927 0.0058234134 - 1522700 0.0072016563 0.0024086059 0.0058969082 - 1522800 0.0060828089 0.0026562027 0.0056025633 - 1522900 0.003685837 0.0028420704 0.0046273977 - 1523000 0.0047394273 0.0023901877 0.0046858478 - 1523100 0.0058548714 0.0024875582 0.0053235115 - 1523200 0.0033487126 0.0030950037 0.0047170364 - 1523300 0.0064951024 0.0027971854 0.0059432506 - 1523400 0.0058726599 0.0024008115 0.0052453811 - 1523500 0.0049927155 0.0030599057 0.0054782522 - 1523600 0.0053687169 0.0031263213 0.0057267936 - 1523700 0.0053521834 0.0028800962 0.0054725601 - 1523800 0.0077497072 0.0025457897 0.0062995541 - 1523900 0.0058307214 0.0026457392 0.0054699949 - 1524000 0.0060329954 0.0024858469 0.005408079 - 1524100 0.0051006904 0.0026520058 0.0051226527 - 1524200 0.0045643074 0.0022769421 0.0044877785 - 1524300 0.0045380957 0.0019136592 0.0041117993 - 1524400 0.005687828 0.0019232528 0.0046782945 - 1524500 0.0040131051 0.0022021767 0.0041460245 - 1524600 0.0040284306 0.0021113019 0.0040625729 - 1524700 0.004078557 0.0019386425 0.0039141935 - 1524800 0.0057913044 0.0018115042 0.0046166673 - 1524900 0.0040241515 0.0024694639 0.0044186622 - 1525000 0.0057146143 0.0026153409 0.0053833572 - 1525100 0.0057572734 0.0026190828 0.0054077621 - 1525200 0.0061140807 0.0029249159 0.0058864237 - 1525300 0.0051445183 0.0029653417 0.0054572177 - 1525400 0.004511997 0.0027678536 0.0049533521 - 1525500 0.0036219069 0.0029686452 0.0047230063 - 1525600 0.0064041956 0.0026283431 0.0057303754 - 1525700 0.0067161826 0.0025407841 0.005793935 - 1525800 0.0062912964 0.0021594536 0.0052068002 - 1525900 0.0057274913 0.0020912127 0.0048654663 - 1526000 0.0053418239 0.002275318 0.0048627639 - 1526100 0.0056349329 0.0023111935 0.0050406141 - 1526200 0.0057040253 0.0024527083 0.0052155956 - 1526300 0.0050304481 0.0024303445 0.0048669679 - 1526400 0.0064459372 0.0021751979 0.0052974487 - 1526500 0.006216941 0.0019162951 0.0049276259 - 1526600 0.0062742771 0.0024253074 0.0054644104 - 1526700 0.0033920912 0.0029008603 0.0045439045 - 1526800 0.0049837746 0.0022731766 0.0046871924 - 1526900 0.0042262339 0.002019344 0.0040664261 - 1527000 0.0057606167 0.0023020349 0.0050923336 - 1527100 0.0037095431 0.0027199229 0.0045167329 - 1527200 0.0047251083 0.0028555807 0.0051443051 - 1527300 0.0061763631 0.0024348375 0.0054265134 - 1527400 0.0046357502 0.0020697467 0.0043151882 - 1527500 0.006311376 0.0020592098 0.0051162826 - 1527600 0.0063706679 0.0021537206 0.0052395128 - 1527700 0.0046267961 0.0020650329 0.0043061372 - 1527800 0.0060550905 0.0018617589 0.0047946934 - 1527900 0.0048333307 0.0020586012 0.0043997457 - 1528000 0.0047598541 0.0024850844 0.0047906387 - 1528100 0.0047415352 0.0021564955 0.0044531767 - 1528200 0.0047194619 0.0019189003 0.0042048897 - 1528300 0.0044102519 0.0019490497 0.0040852654 - 1528400 0.0039711705 0.0024318138 0.0043553495 - 1528500 0.0052404466 0.0024381448 0.0049764862 - 1528600 0.0068619367 0.0025456971 0.0058694477 - 1528700 0.006679804 0.0025231539 0.0057586839 - 1528800 0.0053587548 0.0023810339 0.0049766808 - 1528900 0.0053969911 0.0026444526 0.0052586202 - 1529000 0.0031799254 0.0025086225 0.0040488989 - 1529100 0.005553668 0.0020197348 0.0047097927 - 1529200 0.0057930503 0.0021682527 0.0049742614 - 1529300 0.0056971425 0.0029889069 0.0057484603 - 1529400 0.0043176012 0.0032349073 0.0053262453 - 1529500 0.0049380207 0.0031183885 0.0055102423 - 1529600 0.0039491277 0.0026401058 0.0045529646 - 1529700 0.0045088289 0.0018869476 0.0040709116 - 1529800 0.0057490867 0.0018578868 0.0046426006 - 1529900 0.0047216112 0.0017447214 0.0040317518 - 1530000 0.0049973223 0.0017472191 0.0041677971 - 1530100 0.005047189 0.0022327246 0.0046774568 - 1530200 0.0045326232 0.0024750193 0.0046705087 - 1530300 0.0051208417 0.0025413105 0.0050217182 - 1530400 0.0043694259 0.0024226919 0.0045391326 - 1530500 0.0067688609 0.0025130737 0.0057917407 - 1530600 0.0071656045 0.0027064789 0.0061773185 - 1530700 0.0054819656 0.0031448532 0.0058001803 - 1530800 0.0051719879 0.0030697086 0.0055748903 - 1530900 0.0048095701 0.0024066583 0.0047362939 - 1531000 0.00381747 0.0022509714 0.0041000585 - 1531100 0.0048674171 0.0022381289 0.0045957841 - 1531200 0.0043323914 0.0018798702 0.0039783723 - 1531300 0.0052331631 0.0013995626 0.003934376 - 1531400 0.0049382309 0.001567074 0.0039590297 - 1531500 0.006134076 0.0021073591 0.0050785522 - 1531600 0.0048916553 0.0023610481 0.0047304437 - 1531700 0.0042175358 0.0020656414 0.0041085103 - 1531800 0.0038070387 0.0020010158 0.0038450501 - 1531900 0.0048229927 0.0017798739 0.004116011 - 1532000 0.0048150314 0.0017927779 0.0041250588 - 1532100 0.0057375277 0.0019803089 0.0047594239 - 1532200 0.0053579738 0.0019005988 0.0044958674 - 1532300 0.0054386889 0.0019873421 0.004621707 - 1532400 0.0059162583 0.0024460526 0.0053117403 - 1532500 0.0061818537 0.0027528337 0.0057471691 - 1532600 0.0047233049 0.0030605909 0.0053484417 - 1532700 0.0056459292 0.0028029732 0.0055377202 - 1532800 0.0053422351 0.0024691484 0.0050567935 - 1532900 0.0065092657 0.0024053876 0.0055583132 - 1533000 0.0060462098 0.0022792857 0.0052079186 - 1533100 0.005685922 0.0020038494 0.0047579679 - 1533200 0.0075167134 0.0023211018 0.0059620098 - 1533300 0.0060808008 0.0028718073 0.0058171952 - 1533400 0.0062765717 0.0030621368 0.0061023512 - 1533500 0.00460427 0.0027811304 0.0050113237 - 1533600 0.0065100384 0.0020003802 0.0051536801 - 1533700 0.0048556174 0.0019842618 0.0043362015 - 1533800 0.0041709224 0.0018056059 0.0038258964 - 1533900 0.0053745314 0.0021534749 0.0047567636 - 1534000 0.0037659201 0.0023537041 0.0041778216 - 1534100 0.0036466218 0.0019769107 0.0037432431 - 1534200 0.0060279252 0.0022206342 0.0051404105 - 1534300 0.006115698 0.0023957672 0.0053580584 - 1534400 0.0049554498 0.002475283 0.004875579 - 1534500 0.0054832062 0.0027737105 0.0054296386 - 1534600 0.0045081064 0.0025869044 0.0047705184 - 1534700 0.0044151631 0.0025153969 0.0046539916 - 1534800 0.0041230938 0.0027553798 0.0047525034 - 1534900 0.0046633107 0.0030190549 0.005277846 - 1535000 0.0052845571 0.0024124116 0.004972119 - 1535100 0.0057315732 0.0021904489 0.0049666797 - 1535200 0.0041943822 0.0024382849 0.0044699388 - 1535300 0.0046798444 0.0026180448 0.0048848445 - 1535400 0.0059602264 0.002513991 0.0054009756 - 1535500 0.0051666272 0.0029252944 0.0054278794 - 1535600 0.0044883906 0.0030169608 0.005191025 - 1535700 0.004595705 0.0027173102 0.0049433548 - 1535800 0.0061463803 0.0025968294 0.0055739824 - 1535900 0.0061020541 0.0024250976 0.0053807801 - 1536000 0.0057038054 0.0020521669 0.0048149477 - 1536100 0.0058541224 0.0019552126 0.0047908031 - 1536200 0.0043637241 0.0026999818 0.0048136607 - 1536300 0.0055830162 0.0029676081 0.0056718816 - 1536400 0.0046329866 0.0030257561 0.005269859 - 1536500 0.0051584037 0.0025718648 0.0050704666 - 1536600 0.0062931994 0.0027138874 0.0057621559 - 1536700 0.0055477348 0.0032772193 0.0059644034 - 1536800 0.0061132985 0.0031211556 0.0060822845 - 1536900 0.0037353255 0.0032931116 0.0051024099 - 1537000 0.0053229341 0.0033360067 0.0059143029 - 1537100 0.0046616737 0.0036970032 0.0059550014 - 1537200 0.0053915194 0.0035072117 0.0061187289 - 1537300 0.0032724893 0.003221151 0.004806263 - 1537400 0.0053023668 0.0027828608 0.0053511947 - 1537500 0.0037883469 0.0027495561 0.0045845366 - 1537600 0.0063525742 0.0024589749 0.005536003 - 1537700 0.0042816526 0.0021815656 0.0042554911 - 1537800 0.0056479305 0.0021442065 0.0048799229 - 1537900 0.0032893922 0.0027200582 0.0043133576 - 1538000 0.0051604343 0.0028036007 0.0053031861 - 1538100 0.0034857601 0.002791869 0.004480284 - 1538200 0.0056664172 0.0025072339 0.0052519047 - 1538300 0.0048544245 0.0026846791 0.005036041 - 1538400 0.0040331666 0.0029860913 0.0049396564 - 1538500 0.0059755281 0.0028701222 0.0057645186 - 1538600 0.0066036797 0.0030722133 0.0062708706 - 1538700 0.0047189396 0.0034666427 0.0057523791 - 1538800 0.004659844 0.0035587958 0.0058159077 - 1538900 0.0043701407 0.0039314831 0.0060482701 - 1539000 0.0047981421 0.0035056813 0.0058297814 - 1539100 0.0066725155 0.0030348935 0.0062668932 - 1539200 0.0060650031 0.0030912167 0.0060289526 - 1539300 0.0045336925 0.0033982708 0.0055942781 - 1539400 0.0053808188 0.003416013 0.0060223471 - 1539500 0.0044230855 0.0040012211 0.0061436532 - 1539600 0.0057512822 0.0038689584 0.0066547358 - 1539700 0.0046747125 0.0030331443 0.0052974582 - 1539800 0.0057471544 0.0024883643 0.0052721422 - 1539900 0.0052727931 0.0023233805 0.0048773896 - 1540000 0.0048078107 0.0024354863 0.0047642695 - 1540100 0.0050218408 0.0025955771 0.0050280313 - 1540200 0.0053913221 0.0025058668 0.0051172884 - 1540300 0.0045510564 0.0023882271 0.004592645 - 1540400 0.0076239389 0.0021672956 0.005860141 - 1540500 0.0053806617 0.002340476 0.004946734 - 1540600 0.0054819856 0.002576816 0.0052321528 - 1540700 0.0053811901 0.0028037649 0.0054102788 - 1540800 0.004879618 0.0027240799 0.0050876449 - 1540900 0.0060573709 0.0029010782 0.0058351172 - 1541000 0.0057019477 0.0026858834 0.0054477644 - 1541100 0.0074046968 0.0023714239 0.0059580739 - 1541200 0.0055972312 0.0022910696 0.0050022285 - 1541300 0.0048249319 0.0022072333 0.0045443097 - 1541400 0.0043642281 0.0022330614 0.0043469844 - 1541500 0.0041363049 0.0022069037 0.0042104263 - 1541600 0.0040764561 0.0021802991 0.0041548326 - 1541700 0.0049618281 0.0023332904 0.0047366759 - 1541800 0.0044962869 0.0021279203 0.0043058093 - 1541900 0.0052901953 0.0025363907 0.0050988291 - 1542000 0.0054502145 0.0027982366 0.0054381842 - 1542100 0.004911633 0.0030159773 0.0053950495 - 1542200 0.0044252069 0.0028000859 0.0049435456 - 1542300 0.0068383527 0.0024814318 0.0057937589 - 1542400 0.0054435906 0.0024453718 0.005082111 - 1542500 0.0054509609 0.0024175472 0.0050578564 - 1542600 0.0036104805 0.0029393433 0.0046881698 - 1542700 0.0043923032 0.0029686156 0.0050961374 - 1542800 0.0051299233 0.0026798668 0.0051646735 - 1542900 0.0062860742 0.0024221203 0.0054669375 - 1543000 0.0045391163 0.0024924781 0.0046911125 - 1543100 0.0057082868 0.0018544262 0.0046193776 - 1543200 0.0036724159 0.0017456333 0.0035244598 - 1543300 0.0037875389 0.0018219668 0.003656556 - 1543400 0.0050249733 0.00188866 0.0043226315 - 1543500 0.0057108104 0.0019696728 0.0047358465 - 1543600 0.0053842096 0.0022414983 0.0048494748 - 1543700 0.0051278902 0.0027391525 0.0052229743 - 1543800 0.0056986954 0.0025396286 0.0052999341 - 1543900 0.0055139982 0.0023338954 0.0050047383 - 1544000 0.0069820584 0.0024148014 0.005796736 - 1544100 0.0056641422 0.002334605 0.0050781738 - 1544200 0.0048784031 0.0021634979 0.0045264744 - 1544300 0.0052077988 0.0018358571 0.0043583847 - 1544400 0.0031008699 0.002039045 0.0035410289 - 1544500 0.0060038152 0.0020213919 0.0049294899 - 1544600 0.0064675682 0.0024790575 0.0056117859 - 1544700 0.0042751897 0.0027951202 0.0048659152 - 1544800 0.0040617944 0.0030382264 0.005005658 - 1544900 0.0057312871 0.0024612086 0.0052373008 - 1545000 0.0046632995 0.0023989823 0.004657768 - 1545100 0.0040421307 0.0022177581 0.0041756651 - 1545200 0.0058087131 0.0019594178 0.0047730132 - 1545300 0.0055474579 0.0023566146 0.0050436645 - 1545400 0.0051083646 0.0027243851 0.0051987492 - 1545500 0.0050934693 0.0025947986 0.0050619478 - 1545600 0.0065423819 0.0019655234 0.0051344896 - 1545700 0.0054545242 0.0014485508 0.004090586 - 1545800 0.0066364669 0.0016569879 0.0048715266 - 1545900 0.0058141766 0.0022519928 0.0050682345 - 1546000 0.0049244443 0.0024922621 0.0048775398 - 1546100 0.0058152561 0.0022357546 0.0050525193 - 1546200 0.0034717967 0.0025273329 0.0042089845 - 1546300 0.0043397674 0.0024036579 0.0045057328 - 1546400 0.0038928326 0.0022377344 0.0041233252 - 1546500 0.0052632168 0.0018595963 0.0044089669 - 1546600 0.0050994951 0.0020047226 0.0044747906 - 1546700 0.0059251157 0.0020748851 0.0049448631 - 1546800 0.0067560147 0.0022222418 0.0054946864 - 1546900 0.0047862267 0.0024343027 0.0047526313 - 1547000 0.004039567 0.0026486735 0.0046053388 - 1547100 0.004853204 0.0026391783 0.004989949 - 1547200 0.0041605206 0.002560574 0.0045758262 - 1547300 0.0050725544 0.0024429477 0.0048999663 - 1547400 0.0047186292 0.0023559648 0.0046415508 - 1547500 0.0048620048 0.0024245684 0.004779602 - 1547600 0.0048795018 0.0023836883 0.004747197 - 1547700 0.0054913161 0.0024660056 0.0051258619 - 1547800 0.0049288892 0.0023814311 0.0047688618 - 1547900 0.0058303621 0.0028562737 0.0056803553 - 1548000 0.0063821049 0.0035944731 0.0066858052 - 1548100 0.0058249545 0.0032486289 0.0060700912 - 1548200 0.0062438368 0.0034309212 0.0064552796 - 1548300 0.0056379986 0.003053987 0.0057848926 - 1548400 0.0059740347 0.0024700149 0.005363688 - 1548500 0.0038752622 0.0020529903 0.0039300705 - 1548600 0.0040219113 0.0021777208 0.0041258342 - 1548700 0.005942808 0.0019927524 0.0048713 - 1548800 0.0047153261 0.0023345067 0.0046184927 - 1548900 0.0049593488 0.0024369251 0.0048391097 - 1549000 0.0050381079 0.002264049 0.0047043825 - 1549100 0.0059562932 0.0021892915 0.005074371 - 1549200 0.0072277467 0.0027671292 0.006268069 - 1549300 0.0058049349 0.0031527596 0.0059645249 - 1549400 0.0047528117 0.0033128605 0.0056150036 - 1549500 0.0059819052 0.0035221725 0.0064196578 - 1549600 0.0044743048 0.0031282783 0.0052955197 - 1549700 0.0053799847 0.0028112756 0.0054172057 - 1549800 0.0055432839 0.0029213875 0.0056064156 - 1549900 0.0045586922 0.0026948533 0.0049029698 - 1550000 0.0069249362 0.0024560388 0.0058103047 - 1550100 0.0061589195 0.0021452097 0.0051284363 - 1550200 0.0043431459 0.0022612974 0.0043650087 - 1550300 0.0060581698 0.0022047047 0.0051391307 - 1550400 0.0074359927 0.0024189681 0.0060207771 - 1550500 0.0048172184 0.0023341974 0.0046675375 - 1550600 0.0051539578 0.0022709805 0.0047674288 - 1550700 0.0054919653 0.0022913658 0.0049515365 - 1550800 0.0069713208 0.0020794296 0.0054561632 - 1550900 0.0051903058 0.0021099188 0.0046239732 - 1551000 0.0066815544 0.0022508274 0.0054872053 - 1551100 0.0048906283 0.0021545887 0.0045234868 - 1551200 0.0049591075 0.0019567834 0.0043588511 - 1551300 0.0064467673 0.0023898241 0.005512477 - 1551400 0.0053407448 0.0026481821 0.0052351053 - 1551500 0.0048855794 0.002207671 0.0045741236 - 1551600 0.0062588298 0.0023519662 0.0053835869 - 1551700 0.0060434265 0.0023575313 0.005284816 - 1551800 0.0039079931 0.0024641166 0.0043570508 - 1551900 0.0040319075 0.0022303829 0.0041833382 - 1552000 0.0040647749 0.0019093305 0.0038782058 - 1552100 0.0046510565 0.0020988722 0.0043517277 - 1552200 0.0059982107 0.0024147057 0.005320089 - 1552300 0.0042683422 0.0031686023 0.0052360805 - 1552400 0.0068953841 0.0027698477 0.0061097994 - 1552500 0.0054199652 0.0027353543 0.0053606499 - 1552600 0.003778754 0.003144417 0.004974751 - 1552700 0.0041779641 0.0029711369 0.0049948383 - 1552800 0.0043711772 0.0029289084 0.0050461973 - 1552900 0.0040092099 0.0032461781 0.0051881391 - 1553000 0.0064047027 0.0028528994 0.0059551773 - 1553100 0.0059759397 0.002806705 0.0057013008 - 1553200 0.005668937 0.0032952544 0.0060411457 - 1553300 0.0057278984 0.0030868769 0.0058613277 - 1553400 0.0057179503 0.0030613168 0.005830949 - 1553500 0.0042405778 0.0033753112 0.0054293411 - 1553600 0.0057235718 0.0037012504 0.0064736055 - 1553700 0.0063779192 0.0034808355 0.0065701401 - 1553800 0.0062900426 0.0029304415 0.0059771809 - 1553900 0.0050642523 0.0025688157 0.0050218129 - 1554000 0.0061167413 0.0024950424 0.005457839 - 1554100 0.0037144377 0.0024019687 0.0042011494 - 1554200 0.0059503893 0.0027513148 0.0056335346 - 1554300 0.0051254132 0.0029763478 0.0054589698 - 1554400 0.0054766027 0.0028583144 0.0055110438 - 1554500 0.0060667613 0.0025452424 0.0054838299 - 1554600 0.0061854464 0.0022397093 0.0052357849 - 1554700 0.0044567525 0.0022637448 0.0044224843 - 1554800 0.0040499379 0.0025823078 0.0045439964 - 1554900 0.0045746892 0.0023307619 0.004546627 - 1555000 0.0049350472 0.0020514231 0.0044418366 - 1555100 0.0058824909 0.0024944885 0.00534382 - 1555200 0.0066637054 0.0021763634 0.0054040957 - 1555300 0.0046453025 0.0024603376 0.0047104061 - 1555400 0.0046565008 0.0025757797 0.0048312722 - 1555500 0.0052436872 0.002298897 0.004838808 - 1555600 0.0051774016 0.0024582895 0.0049660934 - 1555700 0.0073400035 0.0029532156 0.0065085298 - 1555800 0.0061774254 0.0035498309 0.0065420214 - 1555900 0.0051134144 0.0034919197 0.0059687298 - 1556000 0.0050143806 0.0034916693 0.00592051 - 1556100 0.0062986163 0.0033352973 0.0063861895 - 1556200 0.0057500759 0.0030602233 0.0058454163 - 1556300 0.0047394034 0.0030563036 0.0053519521 - 1556400 0.0034341861 0.0026825998 0.0043460337 - 1556500 0.0034289247 0.0027053653 0.0043662507 - 1556600 0.0038557901 0.0026460385 0.0045136868 - 1556700 0.0051920668 0.002235379 0.0047502864 - 1556800 0.0052298235 0.0022065536 0.0047397494 - 1556900 0.0048180742 0.0020493277 0.0043830824 - 1557000 0.0063224293 0.0021978863 0.005260313 - 1557100 0.005333443 0.0027405498 0.0053239362 - 1557200 0.0065811601 0.0027412408 0.0059289902 - 1557300 0.0045788036 0.0022226432 0.0044405011 - 1557400 0.0052466238 0.0020431062 0.0045844395 - 1557500 0.0057542459 0.0023734926 0.0051607055 - 1557600 0.0054325684 0.0028601809 0.0054915812 - 1557700 0.0059323596 0.0034743464 0.006347833 - 1557800 0.0062371125 0.0029386684 0.0059597697 - 1557900 0.0050294224 0.0021870902 0.0046232167 - 1558000 0.0045626958 0.0019046302 0.0041146859 - 1558100 0.0062439299 0.0017423428 0.0047667464 - 1558200 0.0046561796 0.0022872704 0.0045426075 - 1558300 0.0052643651 0.0023708701 0.0049207969 - 1558400 0.0063084428 0.0019318765 0.0049875285 - 1558500 0.0041715403 0.0022256818 0.0042462716 - 1558600 0.0054211659 0.0027167511 0.0053426283 - 1558700 0.0062450057 0.0028337817 0.0058587063 - 1558800 0.0072601654 0.0025891125 0.0061057552 - 1558900 0.005186857 0.0027040573 0.0052164412 - 1559000 0.0041016859 0.0028150759 0.00480183 - 1559100 0.0057702979 0.0024221651 0.0052171532 - 1559200 0.0054699302 0.0018025774 0.0044520749 - 1559300 0.0067612737 0.0021292969 0.0054042889 - 1559400 0.0059704929 0.0024386761 0.0053306336 - 1559500 0.0051493562 0.0026458687 0.0051400881 - 1559600 0.0049171623 0.0026633958 0.0050451462 - 1559700 0.005404746 0.0029545418 0.0055724656 - 1559800 0.0055039894 0.0030164685 0.0056824633 - 1559900 0.0037630424 0.0030853407 0.0049080644 - 1560000 0.0054813426 0.0028547781 0.0055098034 - 1560100 0.0030315672 0.0028123228 0.0042807382 - 1560200 0.004358684 0.0026426565 0.0047538941 - 1560300 0.0065646563 0.0024969998 0.0056767552 - 1560400 0.0050948868 0.0021671856 0.0046350214 - 1560500 0.0035610079 0.0016874899 0.0034123532 - 1560600 0.0058460608 0.0017116558 0.0045433415 - 1560700 0.0047432978 0.0022116892 0.0045092241 - 1560800 0.0061266891 0.0022149023 0.0051825173 - 1560900 0.0059504999 0.0024796307 0.0053619041 - 1561000 0.0046876429 0.0024955075 0.0047660845 - 1561100 0.0051938449 0.0028757402 0.0053915089 - 1561200 0.006174337 0.0026177415 0.005608436 - 1561300 0.0065804522 0.0025056491 0.0056930557 - 1561400 0.0059930059 0.0024234832 0.0053263455 - 1561500 0.0033781749 0.0022381494 0.0038744529 - 1561600 0.0044425672 0.0014729508 0.0036248192 - 1561700 0.0052424396 0.0014762713 0.004015578 - 1561800 0.006625354 0.0015278728 0.0047370286 - 1561900 0.0037767739 0.0021981998 0.0040275746 - 1562000 0.0033608838 0.0023049965 0.0039329246 - 1562100 0.0050261525 0.0019058826 0.0043404253 - 1562200 0.004967475 0.0016534838 0.0040596045 - 1562300 0.004178352 0.0023251041 0.0043489933 - 1562400 0.0054909014 0.0021576367 0.004817292 - 1562500 0.0051843334 0.0020275755 0.004538737 - 1562600 0.0053732832 0.0024466815 0.0050493655 - 1562700 0.0051696226 0.0022098629 0.0047138988 - 1562800 0.0045019775 0.0022927022 0.0044733475 - 1562900 0.0049725643 0.0020511102 0.0044596961 - 1563000 0.0041735559 0.0017493355 0.0037709016 - 1563100 0.0055456854 0.0016832239 0.0043694153 - 1563200 0.0050891646 0.0023222491 0.0047873132 - 1563300 0.0053023055 0.0023700212 0.0049383254 - 1563400 0.0043133827 0.0025059364 0.0045952311 - 1563500 0.0037285113 0.0020546483 0.0038606459 - 1563600 0.0055501961 0.0018977481 0.0045861243 - 1563700 0.0053362993 0.0024227831 0.0050075531 - 1563800 0.0048692272 0.002541243 0.004899775 - 1563900 0.0059862676 0.0026100128 0.0055096112 - 1564000 0.0048507576 0.0027180264 0.0050676121 - 1564100 0.0067064316 0.0024902449 0.0057386728 - 1564200 0.0060531888 0.0021232645 0.0050552779 - 1564300 0.0052194545 0.0022621795 0.0047903528 - 1564400 0.0066194469 0.0025362183 0.0057425129 - 1564500 0.007056341 0.0026929474 0.0061108626 - 1564600 0.005544745 0.0027331937 0.0054189295 - 1564700 0.0055009836 0.002739827 0.005404366 - 1564800 0.0042922053 0.0026524062 0.0047314431 - 1564900 0.00366396 0.0026086845 0.0043834151 - 1565000 0.0037459385 0.0025970483 0.0044114872 - 1565100 0.0055830437 0.0024963873 0.0052006741 - 1565200 0.0054999604 0.0021718431 0.0048358864 - 1565300 0.004859061 0.0024118025 0.0047654102 - 1565400 0.0067881569 0.0022593598 0.0055473733 - 1565500 0.0060846757 0.0021094329 0.0050566977 - 1565600 0.0045404819 0.0025228103 0.0047221062 - 1565700 0.0035961664 0.0026850348 0.0044269279 - 1565800 0.0064949471 0.0027537403 0.0058997303 - 1565900 0.005743465 0.0031262197 0.0059082105 - 1566000 0.0066817846 0.0032969284 0.0065334178 - 1566100 0.007094427 0.0029889834 0.0064253465 - 1566200 0.0058900617 0.0032229029 0.0060759015 - 1566300 0.0069190386 0.0028646491 0.0062160584 - 1566400 0.0068824773 0.0024631472 0.0057968471 - 1566500 0.0052997844 0.002143086 0.004710169 - 1566600 0.0048612554 0.0021424928 0.0044971634 - 1566700 0.0045941393 0.0019185175 0.0041438037 - 1566800 0.0074168117 0.0018253797 0.0054178979 - 1566900 0.0060304123 0.0025360738 0.0054570548 - 1567000 0.0055494858 0.0027317071 0.0054197393 - 1567100 0.0041388506 0.0027095807 0.0047143364 - 1567200 0.0032499057 0.0024424348 0.0040166078 - 1567300 0.0048222 0.0022037633 0.0045395164 - 1567400 0.0038035159 0.0017526463 0.0035949743 - 1567500 0.004058264 0.0019774415 0.0039431632 - 1567600 0.00416427 0.0021447974 0.0041618656 - 1567700 0.0046170581 0.0018898239 0.0041262114 - 1567800 0.0059122966 0.0019729202 0.0048366889 - 1567900 0.0041760817 0.001869168 0.0038919576 - 1568000 0.0040028232 0.0021096197 0.0040484872 - 1568100 0.0055203241 0.0022428513 0.0049167583 - 1568200 0.0058737343 0.0026171567 0.0054622467 - 1568300 0.0052930766 0.0028405759 0.0054044098 - 1568400 0.0054994628 0.0026289274 0.0052927297 - 1568500 0.0056738462 0.0027745399 0.0055228092 - 1568600 0.0044148165 0.0029221424 0.0050605691 - 1568700 0.005291887 0.0026219008 0.0051851586 - 1568800 0.0054021458 0.0026798166 0.005296481 - 1568900 0.005671631 0.0025323858 0.0052795821 - 1569000 0.004481767 0.0024064009 0.0045772568 - 1569100 0.0055877592 0.0026664611 0.005373032 - 1569200 0.0049932905 0.0024248775 0.0048435026 - 1569300 0.0050379689 0.0027672307 0.0052074969 - 1569400 0.0042708731 0.0030060136 0.0050747177 - 1569500 0.00602201 0.002915038 0.0058319491 - 1569600 0.0063162299 0.0027150678 0.0057744916 - 1569700 0.004944306 0.0024803496 0.0048752478 - 1569800 0.0058631206 0.0023514876 0.0051914366 - 1569900 0.0068159234 0.0026309511 0.005932414 - 1570000 0.004585661 0.0029261631 0.0051473426 - 1570100 0.004618518 0.0026638327 0.0049009273 - 1570200 0.0063847743 0.0024806428 0.0055732679 - 1570300 0.0041964531 0.0025427917 0.0045754486 - 1570400 0.0039845467 0.0022865574 0.0042165722 - 1570500 0.0046699432 0.0017474231 0.0040094269 - 1570600 0.003554783 0.0017308678 0.0034527158 - 1570700 0.0030641801 0.0016265628 0.003110775 - 1570800 0.0045729537 0.0016679825 0.0038830069 - 1570900 0.0035930276 0.001965702 0.0037060747 - 1571000 0.0048295172 0.0020249815 0.0043642789 - 1571100 0.0051350458 0.0016258908 0.0041131786 - 1571200 0.0043058586 0.0017167317 0.0038023819 - 1571300 0.0045808344 0.0021382498 0.0043570915 - 1571400 0.0054078692 0.0022294987 0.0048489353 - 1571500 0.0043733645 0.0024268502 0.0045451987 - 1571600 0.0057357025 0.0024287463 0.0052069771 - 1571700 0.0061519929 0.0028381494 0.005818021 - 1571800 0.0058516003 0.0028587335 0.0056931024 - 1571900 0.0064073845 0.0028820766 0.0059856535 - 1572000 0.0060670239 0.0023682508 0.0053069655 - 1572100 0.0070304053 0.0022075801 0.0056129327 - 1572200 0.0041775114 0.0020822387 0.0041057208 - 1572300 0.0040177918 0.0019885155 0.0039346334 - 1572400 0.0052246177 0.0021287541 0.0046594283 - 1572500 0.0049400018 0.0018238928 0.0042167062 - 1572600 0.0051556601 0.0017600456 0.0042573184 - 1572700 0.003688053 0.0020809909 0.0038673915 - 1572800 0.0048818458 0.0018357934 0.0042004374 - 1572900 0.0063159171 0.001740161 0.0047994334 - 1573000 0.0053955484 0.0022730991 0.0048865678 - 1573100 0.0046575065 0.002566298 0.0048222777 - 1573200 0.0043762553 0.0024991601 0.0046189087 - 1573300 0.0055498503 0.0022597692 0.004947978 - 1573400 0.005588443 0.0020974263 0.0048043284 - 1573500 0.0051597873 0.0022748968 0.0047741688 - 1573600 0.004724524 0.0023916947 0.004680136 - 1573700 0.0051937243 0.0022737852 0.0047894954 - 1573800 0.0048522009 0.0022492778 0.0045995627 - 1573900 0.0051051012 0.0021429441 0.0046157275 - 1574000 0.0044737121 0.0023841149 0.0045510692 - 1574100 0.0053665113 0.0025369493 0.0051363532 - 1574200 0.0038852634 0.00269673 0.0045786545 - 1574300 0.0061255855 0.0022076039 0.0051746844 - 1574400 0.0056418003 0.0019697879 0.0047025349 - 1574500 0.0047851497 0.0018530358 0.0041708427 - 1574600 0.0041814713 0.002099736 0.0041251362 - 1574700 0.0060582406 0.0023489209 0.0052833812 - 1574800 0.0045459003 0.0026265761 0.0048284965 - 1574900 0.005903515 0.0025951479 0.005454663 - 1575000 0.0051688766 0.0023470515 0.0048507261 - 1575100 0.0051336584 0.0019136882 0.004400304 - 1575200 0.006510209 0.0017463165 0.004899699 - 1575300 0.0075866137 0.0017365152 0.0054112812 - 1575400 0.0058238827 0.0019425154 0.0047634586 - 1575500 0.0035118439 0.0022305427 0.0039315921 - 1575600 0.0036827319 0.0022668681 0.0040506914 - 1575700 0.0053042917 0.0022867425 0.0048560088 - 1575800 0.0039034628 0.0024084226 0.0042991624 - 1575900 0.0047127807 0.0020795594 0.0043623126 - 1576000 0.005338424 0.0023309655 0.0049167646 - 1576100 0.0063098201 0.0025646648 0.0056209839 - 1576200 0.0040858156 0.0034101284 0.0053891954 - 1576300 0.0045580215 0.003158786 0.0053665777 - 1576400 0.0055946847 0.0025880959 0.0052980212 - 1576500 0.0038975649 0.0026330796 0.0045209626 - 1576600 0.0045379611 0.0026105917 0.0048086666 - 1576700 0.0043662126 0.0020267962 0.0041416805 - 1576800 0.00539947 0.0017290917 0.00434446 - 1576900 0.0073896777 0.001654251 0.0052336261 - 1577000 0.0065524155 0.0020587501 0.0052325763 - 1577100 0.0060168985 0.0021254348 0.00503987 - 1577200 0.0068182534 0.0022116545 0.005514246 - 1577300 0.0052581477 0.0025621729 0.0051090882 - 1577400 0.0034835981 0.002481416 0.0041687838 - 1577500 0.0057718552 0.0023391018 0.0051348442 - 1577600 0.0048415649 0.0023913012 0.0047364342 - 1577700 0.0049246362 0.0021017696 0.0044871402 - 1577800 0.0048201259 0.0022311365 0.004565885 - 1577900 0.0053458584 0.0025091337 0.0050985339 - 1578000 0.0070270158 0.0028711885 0.0062748993 - 1578100 0.0059240764 0.0032821841 0.0061516586 - 1578200 0.006257051 0.0026032668 0.0056340259 - 1578300 0.00457323 0.0023725588 0.0045877171 - 1578400 0.0059782718 0.0023634342 0.0052591597 - 1578500 0.0044374097 0.0023305084 0.0044798788 - 1578600 0.0052147675 0.0020414369 0.0045673399 - 1578700 0.0045512293 0.0020716588 0.0042761604 - 1578800 0.0043554681 0.0023776294 0.0044873092 - 1578900 0.005595776 0.0022787101 0.0049891641 - 1579000 0.0038411951 0.0020431861 0.003903765 - 1579100 0.0048158991 0.0023391254 0.0046718265 - 1579200 0.005008712 0.0026474081 0.005073503 - 1579300 0.0061811962 0.0023799971 0.005374014 - 1579400 0.0033525994 0.0025564925 0.0041804079 - 1579500 0.0065727218 0.0018775994 0.0050612615 - 1579600 0.0040759281 0.0021520968 0.0041263745 - 1579700 0.0047645885 0.0027848336 0.0050926811 - 1579800 0.0044147898 0.0027557918 0.0048942056 - 1579900 0.0045653269 0.0029750638 0.0051863939 - 1580000 0.0039609959 0.0023674262 0.0042860336 - 1580100 0.0060429259 0.0018431199 0.0047701621 - 1580200 0.004022891 0.002059016 0.0040076039 - 1580300 0.005544227 0.0022127748 0.0048982597 - 1580400 0.0062097975 0.0025707318 0.0055786024 - 1580500 0.004073454 0.0033446527 0.0053177319 - 1580600 0.007933819 0.0028807078 0.0067236514 - 1580700 0.005172183 0.0031580415 0.0056633177 - 1580800 0.0057098872 0.0024851053 0.0052508319 - 1580900 0.0062766807 0.0026643365 0.0057046037 - 1581000 0.0042536845 0.0028545405 0.004914919 - 1581100 0.004446252 0.0025549116 0.0047085649 - 1581200 0.0048964643 0.002423392 0.0047951169 - 1581300 0.0046906057 0.0024415751 0.0047135872 - 1581400 0.0061506853 0.0021826275 0.0051618657 - 1581500 0.0038872016 0.0027125782 0.0045954415 - 1581600 0.004845834 0.0026477711 0.004994972 - 1581700 0.0053802092 0.0021363182 0.004742357 - 1581800 0.0034166458 0.0023547415 0.0040096794 - 1581900 0.0042536831 0.0027583688 0.0048187465 - 1582000 0.0053588439 0.0027099827 0.0053056727 - 1582100 0.0057443399 0.002820329 0.0056027437 - 1582200 0.0049724137 0.002916229 0.0053247418 - 1582300 0.0034221983 0.0029205806 0.0045782079 - 1582400 0.0039625375 0.0026142987 0.0045336528 - 1582500 0.005738429 0.0023236075 0.005103159 - 1582600 0.0048558945 0.0027813053 0.0051333792 - 1582700 0.0056701606 0.0029696602 0.0057161442 - 1582800 0.0043288387 0.0029857465 0.0050825277 - 1582900 0.0044882414 0.0026877424 0.0048617344 - 1583000 0.0054390726 0.0020632727 0.0046978235 - 1583100 0.0051871231 0.0019511516 0.0044636643 - 1583200 0.0060570447 0.0022511711 0.0051850522 - 1583300 0.0057237115 0.0029107612 0.005683184 - 1583400 0.0079339292 0.0033799998 0.0072229967 - 1583500 0.0058444709 0.0033998798 0.0062307954 - 1583600 0.0045169617 0.0029584633 0.0051463666 - 1583700 0.0060801654 0.0024822532 0.0054273333 - 1583800 0.005887333 0.0023676505 0.0052193274 - 1583900 0.0064247921 0.0023074655 0.0054194741 - 1584000 0.006911764 0.0023508953 0.005698781 - 1584100 0.0061378638 0.0024594911 0.0054325189 - 1584200 0.0044543025 0.0025713587 0.0047289115 - 1584300 0.0046215615 0.0027754768 0.0050140457 - 1584400 0.0054444282 0.0026711437 0.0053082886 - 1584500 0.0061435879 0.0021812537 0.005157054 - 1584600 0.005089001 0.0022469563 0.0047119412 - 1584700 0.0038361917 0.0026236127 0.0044817681 - 1584800 0.0051359452 0.0027387524 0.0052264759 - 1584900 0.0056206517 0.0022273997 0.0049499029 - 1585000 0.0055020532 0.0021958311 0.0048608881 - 1585100 0.0056447842 0.002049358 0.0047835504 - 1585200 0.0051968172 0.0022188799 0.0047360882 - 1585300 0.004360805 0.002863436 0.0049757009 - 1585400 0.005571869 0.0029366314 0.0056355055 - 1585500 0.0052485817 0.0025134822 0.0050557639 - 1585600 0.0062999041 0.0021440065 0.0051955225 - 1585700 0.004817355 0.0021832009 0.0045166073 - 1585800 0.0045160556 0.0018375262 0.0040249906 - 1585900 0.0046135889 0.0019863165 0.0042210236 - 1586000 0.0065022664 0.0025320832 0.0056816185 - 1586100 0.0050580105 0.0025146104 0.0049645843 - 1586200 0.0061940693 0.0023587473 0.0053589997 - 1586300 0.0051468949 0.0020418691 0.0045348963 - 1586400 0.004739279 0.0022793706 0.0045749589 - 1586500 0.0037871467 0.0029212508 0.00475565 - 1586600 0.0055036793 0.0025312496 0.0051970943 - 1586700 0.0058667521 0.0020467441 0.0048884521 - 1586800 0.0054855627 0.0021577031 0.0048147725 - 1586900 0.0053854434 0.0023506257 0.0049591998 - 1587000 0.0045905974 0.0026478487 0.0048714194 - 1587100 0.0055986743 0.0024560255 0.0051678834 - 1587200 0.0060409611 0.0025748165 0.005500907 - 1587300 0.0063704 0.0024081259 0.0054937884 - 1587400 0.0058138279 0.0023381184 0.0051541913 - 1587500 0.0045974353 0.0024286617 0.0046555444 - 1587600 0.0046891144 0.0028648672 0.005136157 - 1587700 0.0048080653 0.0030058588 0.0053347655 - 1587800 0.0051723977 0.0032189114 0.0057242915 - 1587900 0.0047430765 0.002796949 0.0050943767 - 1588000 0.0056900378 0.0021470682 0.0049031803 - 1588100 0.0030208379 0.0020844838 0.0035477021 - 1588200 0.0062217503 0.0018153351 0.0048289954 - 1588300 0.0039330395 0.0020960023 0.0040010683 - 1588400 0.005020379 0.0024511254 0.0048828714 - 1588500 0.004927905 0.0024968872 0.0048838412 - 1588600 0.0057974814 0.0024684781 0.0052766332 - 1588700 0.0042895867 0.0027719042 0.0048496728 - 1588800 0.0052065954 0.002703673 0.0052256177 - 1588900 0.0060744684 0.0020877754 0.005030096 - 1589000 0.0067735658 0.0016248491 0.0049057951 - 1589100 0.005212219 0.0016203838 0.0041450524 - 1589200 0.004582361 0.0014005214 0.0036201025 - 1589300 0.0041554592 0.00202873 0.0040415305 - 1589400 0.0038962468 0.0023230755 0.0042103201 - 1589500 0.0049098188 0.0018285982 0.0042067917 - 1589600 0.0052337674 0.0015913847 0.0041264908 - 1589700 0.0050503026 0.0018760557 0.004322296 - 1589800 0.0040185041 0.0022484616 0.0041949245 - 1589900 0.0057769253 0.002283386 0.0050815842 - 1590000 0.0052837519 0.0018854349 0.0044447523 - 1590100 0.0061601181 0.0019418049 0.0049256121 - 1590200 0.003931325 0.0022810722 0.0041853077 - 1590300 0.0049976317 0.0021847809 0.0046055088 - 1590400 0.0039975447 0.0018518217 0.0037881324 - 1590500 0.004673434 0.0024846366 0.0047483312 - 1590600 0.0052058563 0.0023016133 0.0048232 - 1590700 0.0071779323 0.0020372794 0.0055140903 - 1590800 0.0048703577 0.0022512297 0.0046103092 - 1590900 0.0049131031 0.0022913015 0.0046710858 - 1591000 0.005474445 0.0020360191 0.0046877034 - 1591100 0.0049654871 0.0020036224 0.0044087803 - 1591200 0.0044751139 0.0020369531 0.0042045864 - 1591300 0.0043362084 0.0021094425 0.0042097934 - 1591400 0.0047325047 0.0022097231 0.0045020301 - 1591500 0.0053436093 0.0021081032 0.0046964139 - 1591600 0.0069435561 0.0021090135 0.0054722985 - 1591700 0.0040500539 0.0023832782 0.004345023 - 1591800 0.0060395935 0.0020003979 0.004925826 - 1591900 0.0045837452 0.001762029 0.0039822805 - 1592000 0.0039098664 0.0018656185 0.00375946 - 1592100 0.0040513012 0.0019797538 0.0039421029 - 1592200 0.0047614787 0.0015732545 0.0038795957 - 1592300 0.0046774242 0.0018397809 0.0041054082 - 1592400 0.0051032564 0.0022423299 0.0047142197 - 1592500 0.0057913389 0.0022762512 0.005081431 - 1592600 0.0058437728 0.0021445698 0.0049751473 - 1592700 0.005742192 0.0024309453 0.0052123196 - 1592800 0.0057013034 0.0029059839 0.0056675528 - 1592900 0.0045920667 0.002871792 0.0050960744 - 1593000 0.0049385075 0.0034191867 0.0058112763 - 1593100 0.0041099351 0.0037588133 0.0057495631 - 1593200 0.0058538887 0.0032985485 0.0061340258 - 1593300 0.0037264445 0.0024945843 0.0042995808 - 1593400 0.004502 0.002635392 0.0048160482 - 1593500 0.0048451397 0.0033763713 0.0057232358 - 1593600 0.0042784051 0.0035392669 0.0056116194 - 1593700 0.0064201055 0.0027718358 0.0058815744 - 1593800 0.0040364408 0.0025656338 0.0045207848 - 1593900 0.0048964719 0.0026656127 0.0050373413 - 1594000 0.0038329339 0.0024715488 0.0043281262 - 1594100 0.0057414836 0.0021028368 0.0048838679 - 1594200 0.0050067054 0.0022671352 0.0046922581 - 1594300 0.0037189858 0.002442526 0.0042439097 - 1594400 0.0032691329 0.0025327263 0.0041162126 - 1594500 0.0033164759 0.0024706847 0.0040771027 - 1594600 0.0051975795 0.0023696234 0.004887201 - 1594700 0.0045323389 0.0023258662 0.0045212179 - 1594800 0.0056431996 0.0022419514 0.0049753763 - 1594900 0.0049950709 0.0023760932 0.0047955807 - 1595000 0.0068024975 0.0023937858 0.0056887455 - 1595100 0.0047682876 0.002643377 0.0049530163 - 1595200 0.0050407713 0.0033389567 0.0057805803 - 1595300 0.004817933 0.0029572314 0.0052909177 - 1595400 0.0044855328 0.0025750951 0.0047477751 - 1595500 0.0057756774 0.0024672368 0.0052648306 - 1595600 0.005597854 0.0024045082 0.0051159687 - 1595700 0.0058049163 0.0023731212 0.0051848776 - 1595800 0.0048875257 0.0025252662 0.0048926615 - 1595900 0.0055818303 0.0027551668 0.0054588658 - 1596000 0.0058369707 0.0029454581 0.0057727409 - 1596100 0.0047589104 0.0029040067 0.0052091039 - 1596200 0.0054839413 0.0022022657 0.0048585498 - 1596300 0.0075266758 0.002274552 0.0059202856 - 1596400 0.003489475 0.0024234604 0.0041136749 - 1596500 0.0055121816 0.0027867003 0.0054566632 - 1596600 0.0053764957 0.0027413863 0.0053456264 - 1596700 0.0061997062 0.0022582804 0.0052612631 - 1596800 0.0060875951 0.0023891421 0.005337821 - 1596900 0.0054119836 0.002393014 0.0050144435 - 1597000 0.0064647105 0.0021674766 0.0052988207 - 1597100 0.0057005573 0.0017665011 0.0045277085 - 1597200 0.0046045828 0.0017922838 0.0040226286 - 1597300 0.0054231526 0.0014276233 0.0040544628 - 1597400 0.0059075686 0.0016598443 0.0045213229 - 1597500 0.0056974648 0.0019669245 0.004726634 - 1597600 0.0060259872 0.0025141878 0.0054330253 - 1597700 0.0047386317 0.0028752842 0.0051705589 - 1597800 0.004024535 0.0030892225 0.0050386066 - 1597900 0.0055453721 0.0027374835 0.0054235231 - 1598000 0.0063957237 0.0024912787 0.0055892074 - 1598100 0.0049296633 0.0024005768 0.0047883825 - 1598200 0.0055704404 0.0021636528 0.0048618349 - 1598300 0.0043974454 0.0026882539 0.0048182665 - 1598400 0.0055970167 0.0028214825 0.0055325375 - 1598500 0.0048436188 0.0025159258 0.0048620536 - 1598600 0.0058167728 0.0019790813 0.0047965806 - 1598700 0.0046816077 0.0020468852 0.004314539 - 1598800 0.004910951 0.0019988004 0.0043775423 - 1598900 0.0052630188 0.0017776498 0.0043269245 - 1599000 0.0041792012 0.0017650867 0.0037893873 - 1599100 0.0043451789 0.0020188283 0.0041235243 - 1599200 0.0049781157 0.0020039727 0.0044152475 - 1599300 0.0060722229 0.0017117198 0.0046529528 - 1599400 0.0069956048 0.0016397563 0.0050282524 - 1599500 0.0051306505 0.0017304548 0.0042156136 - 1599600 0.0052463366 0.0016726189 0.0042138132 - 1599700 0.0039914895 0.0018541543 0.003787532 - 1599800 0.0055462877 0.0018171214 0.0045036045 - 1599900 0.0034377879 0.0021101955 0.003775374 - 1600000 0.0063423738 0.0013923529 0.0044644402 - 1600100 0.004941173 0.0013082215 0.0037016021 - 1600200 0.0056809893 0.0015322894 0.0042840186 - 1600300 0.0051488717 0.0019520747 0.0044460594 - 1600400 0.0059184055 0.0018650426 0.0047317702 - 1600500 0.0059221076 0.0023119163 0.0051804372 - 1600600 0.0048488837 0.0026175886 0.0049662666 - 1600700 0.0050318854 0.0025068568 0.0049441763 - 1600800 0.0047527624 0.0020908318 0.0043929511 - 1600900 0.0043936014 0.0015765475 0.0037046982 - 1601000 0.0037157943 0.0018904952 0.0036903331 - 1601100 0.0049551976 0.0017723139 0.0041724878 - 1601200 0.003436793 0.0018172682 0.0034819648 - 1601300 0.003684736 0.0020870152 0.0038718092 - 1601400 0.0042919379 0.0021504689 0.0042293763 - 1601500 0.0056278829 0.0021258754 0.0048518811 - 1601600 0.0062361655 0.0020246025 0.0050452452 - 1601700 0.0053370283 0.0020925117 0.0046776348 - 1601800 0.0056527359 0.0019987693 0.0047368133 - 1601900 0.0050533013 0.0020049214 0.0044526143 - 1602000 0.0046857148 0.0019438343 0.0042134774 - 1602100 0.0048185564 0.001923807 0.0042577953 - 1602200 0.0038847128 0.0020160991 0.0038977569 - 1602300 0.0044476679 0.0018843631 0.0040387023 - 1602400 0.0045779074 0.0019511336 0.0041685574 - 1602500 0.0054753114 0.0017115182 0.0043636221 - 1602600 0.0038114378 0.0022823745 0.0041285396 - 1602700 0.0056898258 0.0020694887 0.0048254981 - 1602800 0.0049016459 0.0019655073 0.0043397421 - 1602900 0.0042102547 0.0023110241 0.0043503662 - 1603000 0.0049342351 0.0021056024 0.0044956225 - 1603100 0.0050260846 0.0020352552 0.0044697649 - 1603200 0.0044775376 0.00218468 0.0043534873 - 1603300 0.004580155 0.0018033758 0.0040218884 - 1603400 0.0050143584 0.0015302665 0.0039590963 - 1603500 0.0052364983 0.0019732466 0.0045096754 - 1603600 0.0055187567 0.0022681286 0.0049412764 - 1603700 0.0050013711 0.0022331909 0.00465573 - 1603800 0.0059395131 0.0030138046 0.0058907562 - 1603900 0.0069860915 0.0028200216 0.0062039096 - 1604000 0.0065162123 0.0027574132 0.0059137036 - 1604100 0.0043773052 0.0031415138 0.005261771 - 1604200 0.0043635877 0.0031826749 0.0052962877 - 1604300 0.0051109284 0.0027722156 0.0052478215 - 1604400 0.0053692828 0.0028988645 0.0054996109 - 1604500 0.0046242314 0.0031473764 0.0053872384 - 1604600 0.0058259116 0.0027373207 0.0055592466 - 1604700 0.0062951111 0.0025161468 0.0055653412 - 1604800 0.0047151438 0.0023653119 0.0046492097 - 1604900 0.0051799152 0.0024508226 0.004959844 - 1605000 0.0062943142 0.0024429124 0.0054917209 - 1605100 0.0063855262 0.0024059264 0.0054989157 - 1605200 0.0061103126 0.0024267276 0.0053864103 - 1605300 0.0048723043 0.0027478424 0.0051078648 - 1605400 0.0048573582 0.0026403848 0.0049931677 - 1605500 0.0028884072 0.0026554499 0.0040545221 - 1605600 0.0040538472 0.002735714 0.0046992962 - 1605700 0.0053077046 0.0023521519 0.0049230713 - 1605800 0.0058424611 0.0018836724 0.0047136145 - 1605900 0.0042626924 0.001676679 0.0037414207 - 1606000 0.0044140606 0.0019550443 0.0040931049 - 1606100 0.0052860189 0.0018604842 0.0044208995 - 1606200 0.0047649024 0.0018244751 0.0041324747 - 1606300 0.0053898703 0.0022187601 0.0048294786 - 1606400 0.0067315225 0.0025386649 0.0057992461 - 1606500 0.0059757767 0.0023887748 0.0052832916 - 1606600 0.0049230943 0.002530915 0.0049155388 - 1606700 0.0070253971 0.0021938393 0.005596766 - 1606800 0.0063198431 0.0022604868 0.0053216608 - 1606900 0.0058300316 0.0023451126 0.0051690342 - 1607000 0.0045950265 0.0024492506 0.0046749666 - 1607100 0.003935841 0.0024619517 0.0043683747 - 1607200 0.0038208641 0.0024409365 0.0042916675 - 1607300 0.0039432692 0.0020744345 0.0039844555 - 1607400 0.0065771788 0.0017044802 0.0048903012 - 1607500 0.0056850098 0.0022110101 0.0049646867 - 1607600 0.0040016165 0.0022257014 0.0041639844 - 1607700 0.0050808778 0.0021817796 0.0046428298 - 1607800 0.0049731515 0.0021331741 0.0045420443 - 1607900 0.0045682053 0.0020414561 0.0042541806 - 1608000 0.0051171432 0.001570733 0.0040493492 - 1608100 0.0055484034 0.0020612053 0.0047487132 - 1608200 0.0046164328 0.0025694135 0.0048054981 - 1608300 0.005286003 0.0024523403 0.005012748 - 1608400 0.0047352071 0.0021981084 0.0044917244 - 1608500 0.0063897742 0.0022077686 0.0053028155 - 1608600 0.0056925073 0.001934949 0.0046922572 - 1608700 0.0050732464 0.002343552 0.0048009057 - 1608800 0.0045074471 0.0026211981 0.0048044928 - 1608900 0.0051933358 0.0023360225 0.0048515445 - 1609000 0.0037600096 0.0023066653 0.00412792 - 1609100 0.0055915942 0.0023991489 0.0051075774 - 1609200 0.005944377 0.0023295603 0.0052088679 - 1609300 0.0037036047 0.0025335732 0.0043275067 - 1609400 0.0042546625 0.0025569625 0.0046178147 - 1609500 0.0053328316 0.0026362432 0.0052193335 - 1609600 0.0059219235 0.0026218099 0.0054902416 - 1609700 0.0054456367 0.003011369 0.0056490993 - 1609800 0.0040038948 0.0029020373 0.0048414239 - 1609900 0.0041102741 0.0031724137 0.0051633277 - 1610000 0.003518955 0.0028951428 0.0045996366 - 1610100 0.0056112038 0.0023859309 0.0051038577 - 1610200 0.006003593 0.0021770738 0.0050850641 - 1610300 0.0047762172 0.0021062606 0.0044197408 - 1610400 0.0048711983 0.0019418836 0.0043013703 - 1610500 0.0059027829 0.0019441419 0.0048033024 - 1610600 0.004117446 0.0020521882 0.0040465761 - 1610700 0.0049933061 0.002107624 0.0045262567 - 1610800 0.0049511108 0.0021236228 0.0045218171 - 1610900 0.0033681512 0.0023207441 0.0039521923 - 1611000 0.0062501814 0.0022233798 0.0052508114 - 1611100 0.0038024192 0.0021442203 0.0039860171 - 1611200 0.0039758151 0.0024458566 0.004371642 - 1611300 0.004802705 0.0023163722 0.0046426824 - 1611400 0.0048801719 0.0020670211 0.0044308544 - 1611500 0.0034194365 0.0020365919 0.0036928815 - 1611600 0.0054497406 0.0017436191 0.0043833372 - 1611700 0.0057036923 0.0018150684 0.0045777943 - 1611800 0.0049782914 0.0020971884 0.0045085483 - 1611900 0.0052511906 0.0023554158 0.0048989612 - 1612000 0.0048144117 0.0023491825 0.0046811632 - 1612100 0.005920788 0.0024304728 0.0052983545 - 1612200 0.0044155106 0.0028537633 0.0049925263 - 1612300 0.0060625545 0.002934887 0.0058714369 - 1612400 0.0043816158 0.0025391269 0.004661472 - 1612500 0.0048425712 0.0021459803 0.0044916007 - 1612600 0.0046306395 0.0019249851 0.0041679511 - 1612700 0.0061970992 0.0018412876 0.0048430075 - 1612800 0.0065152336 0.0022380768 0.0053938931 - 1612900 0.0043038506 0.0024148408 0.0044995184 - 1613000 0.006373374 0.0023563558 0.0054434588 - 1613100 0.0053001529 0.0027209971 0.0052882587 - 1613200 0.005189881 0.0032345841 0.0057484327 - 1613300 0.0046420232 0.0029976144 0.0052460943 - 1613400 0.0059594371 0.0025762718 0.0054628741 - 1613500 0.0049439871 0.0023083024 0.0047030461 - 1613600 0.0050113315 0.0024894534 0.0049168171 - 1613700 0.0049184097 0.0025763982 0.0049587529 - 1613800 0.0061991507 0.0027874156 0.0057901292 - 1613900 0.0059266032 0.0033265485 0.0061972469 - 1614000 0.0051354442 0.0030976337 0.0055851145 - 1614100 0.0059500833 0.002300423 0.0051824946 - 1614200 0.0047702683 0.0018826311 0.0041932298 - 1614300 0.00393382 0.0017897011 0.0036951451 - 1614400 0.0045938565 0.0018607571 0.0040859063 - 1614500 0.0038872091 0.0019993862 0.0038822531 - 1614600 0.0043586616 0.0016293924 0.0037406191 - 1614700 0.004858898 0.0018562791 0.0042098079 - 1614800 0.0033568088 0.0025450823 0.0041710366 - 1614900 0.004003977 0.0027900934 0.0047295198 - 1615000 0.0044760764 0.0026389467 0.0048070462 - 1615100 0.006431388 0.0023630463 0.0054782499 - 1615200 0.0037542431 0.0023480022 0.0041664637 - 1615300 0.0049407957 0.0022759538 0.0046691517 - 1615400 0.0044656873 0.0021151735 0.0042782408 - 1615500 0.0049599968 0.0023620574 0.0047645558 - 1615600 0.0043810568 0.0020800812 0.0042021556 - 1615700 0.0056655317 0.00212706 0.0048713019 - 1615800 0.0038156695 0.0026178984 0.0044661133 - 1615900 0.0052716718 0.0023129532 0.0048664192 - 1616000 0.004030695 0.0022289685 0.0041813364 - 1616100 0.0048176837 0.002358245 0.0046918106 - 1616200 0.0055515586 0.0024069412 0.0050959774 - 1616300 0.0059777069 0.0025258067 0.0054212585 - 1616400 0.0048900009 0.0025706712 0.0049392653 - 1616500 0.0054017426 0.0025157769 0.005132246 - 1616600 0.004371241 0.0023713465 0.0044886664 - 1616700 0.0044720521 0.0027206867 0.0048868369 - 1616800 0.0066594396 0.0027337993 0.0059594654 - 1616900 0.0046935506 0.0029192697 0.0051927082 - 1617000 0.0072221321 0.0027065685 0.0062047887 - 1617100 0.0071987937 0.0028022556 0.0062891713 - 1617200 0.0059304534 0.0025249334 0.0053974968 - 1617300 0.0062613883 0.0025373254 0.0055701853 - 1617400 0.0044759404 0.0027396066 0.0049076402 - 1617500 0.0073528028 0.0023789191 0.005940433 - 1617600 0.0045470631 0.0029939162 0.0051963999 - 1617700 0.0051265375 0.0032044172 0.0056875838 - 1617800 0.0064465992 0.0033165708 0.0064391423 - 1617900 0.0071271966 0.0029781028 0.0064303387 - 1618000 0.0044453335 0.0029038576 0.005057066 - 1618100 0.0043006357 0.002856773 0.0049398934 - 1618200 0.0036910513 0.0023082003 0.0040960533 - 1618300 0.004817343 0.0019917086 0.0043251092 - 1618400 0.006247931 0.0017755491 0.0048018907 - 1618500 0.0050997192 0.0022890006 0.0047591771 - 1618600 0.0053659017 0.0019864301 0.0045855388 - 1618700 0.0043488006 0.001974363 0.0040808133 - 1618800 0.0052673118 0.0019211909 0.0044725451 - 1618900 0.0060236189 0.0019886699 0.0049063603 - 1619000 0.0039049264 0.0023959836 0.0042874323 - 1619100 0.004495161 0.0023634299 0.0045407735 - 1619200 0.0057851954 0.0023808163 0.0051830204 - 1619300 0.0053257812 0.0024233158 0.0050029911 - 1619400 0.0058538156 0.0026359765 0.0054714184 - 1619500 0.0036547915 0.0026135085 0.0043837981 - 1619600 0.0045891604 0.0024891857 0.0047120602 - 1619700 0.0042891773 0.0021900327 0.0042676029 - 1619800 0.0060342699 0.0019793429 0.0049021923 - 1619900 0.0047492868 0.0018120153 0.0041124511 - 1620000 0.0049084308 0.0021930553 0.0045705765 - 1620100 0.0038526758 0.0026082599 0.0044743997 - 1620200 0.0048425748 0.0024701357 0.0048157579 - 1620300 0.0035047665 0.0023370466 0.0040346679 - 1620400 0.0055061469 0.0022127462 0.0048797861 - 1620500 0.004778844 0.0022172441 0.0045319967 - 1620600 0.0053738474 0.0018471577 0.004450115 - 1620700 0.0042726627 0.0017492406 0.0038188116 - 1620800 0.0064603861 0.0020983175 0.005227567 - 1620900 0.0040909419 0.0022838291 0.004265379 - 1621000 0.0063984232 0.0022040858 0.0053033221 - 1621100 0.0051104418 0.0023629554 0.0048383257 - 1621200 0.0060284288 0.0025550772 0.0054750974 - 1621300 0.005805582 0.002915039 0.0057271178 - 1621400 0.0050453693 0.0027744422 0.005218293 - 1621500 0.0047890221 0.0025247834 0.004844466 - 1621600 0.0063433545 0.002384962 0.0054575243 - 1621700 0.0070973218 0.0022055093 0.0056432745 - 1621800 0.0069115451 0.0024151239 0.0057629035 - 1621900 0.0054200639 0.0026165783 0.0052419217 - 1622000 0.0056562836 0.0028586865 0.0055984489 - 1622100 0.0041413375 0.0025197303 0.0045256906 - 1622200 0.0054737324 0.0023349276 0.0049862667 - 1622300 0.003967964 0.0024541917 0.0043761742 - 1622400 0.0028976266 0.0025246191 0.003928157 - 1622500 0.0052420506 0.0028677676 0.0054068858 - 1622600 0.0059972196 0.002389707 0.0052946102 - 1622700 0.0040065277 0.0023733734 0.0043140352 - 1622800 0.0056596009 0.0020999108 0.00484128 - 1622900 0.0044299819 0.0023395255 0.004485298 - 1623000 0.0043620809 0.0021797105 0.0042925934 - 1623100 0.005314494 0.0023630158 0.0049372239 - 1623200 0.0058292285 0.0023787636 0.0052022962 - 1623300 0.0051979961 0.0027135576 0.0052313369 - 1623400 0.0057087403 0.0027703772 0.0055355483 - 1623500 0.0039235929 0.0029510234 0.0048515137 - 1623600 0.0067243992 0.0024462914 0.0057034223 - 1623700 0.0053967645 0.0021424792 0.004756537 - 1623800 0.0046381411 0.0027987141 0.0050453137 - 1623900 0.004082387 0.002865963 0.0048433692 - 1624000 0.0065374838 0.0024614396 0.0056280333 - 1624100 0.0040033679 0.0023375995 0.0042767308 - 1624200 0.005624285 0.0017328913 0.0044571543 - 1624300 0.0040024952 0.0017065842 0.0036452928 - 1624400 0.0042813911 0.0018206292 0.003894428 - 1624500 0.0042260725 0.0020283002 0.0040753041 - 1624600 0.0037949571 0.0019461039 0.0037842863 - 1624700 0.0044535748 0.002030114 0.0041873143 - 1624800 0.0034825046 0.001917442 0.0036042802 - 1624900 0.0053292372 0.0017776864 0.0043590357 - 1625000 0.0053245042 0.0021213259 0.0047003826 - 1625100 0.0040410712 0.0031570596 0.0051144534 - 1625200 0.0056874761 0.0028881419 0.0056430131 - 1625300 0.0065705546 0.0024487463 0.0056313586 - 1625400 0.0043055319 0.0027322065 0.0048176985 - 1625500 0.005830842 0.0023244585 0.0051487725 - 1625600 0.0059381743 0.0023655913 0.0052418945 - 1625700 0.0045837976 0.0027661537 0.0049864307 - 1625800 0.0048444556 0.0027100059 0.0050565391 - 1625900 0.0057651216 0.0022416814 0.0050341622 - 1626000 0.0053012028 0.0023681709 0.004935941 - 1626100 0.0049384854 0.003125752 0.0055178309 - 1626200 0.0062358362 0.0026636711 0.0056841543 - 1626300 0.0046874361 0.0024246911 0.004695168 - 1626400 0.0044869431 0.0025052543 0.0046786174 - 1626500 0.0035800262 0.0025192789 0.0042533541 - 1626600 0.0046841285 0.0027655226 0.0050343973 - 1626700 0.0041691909 0.0029542826 0.0049737344 - 1626800 0.0060997562 0.0032292684 0.0061838378 - 1626900 0.0058007849 0.0036176152 0.0064273704 - 1627000 0.0045128215 0.0037184791 0.005904377 - 1627100 0.0050406556 0.0035488479 0.0059904155 - 1627200 0.0040073688 0.0030058363 0.0049469056 - 1627300 0.0061908753 0.0030642657 0.006062971 - 1627400 0.0039065371 0.0032458364 0.0051380653 - 1627500 0.0051642532 0.0028623159 0.005363751 - 1627600 0.0067965514 0.0024610278 0.0057531074 - 1627700 0.0045587892 0.0025545682 0.0047627317 - 1627800 0.0051417132 0.0024227345 0.0049132518 - 1627900 0.0035869146 0.0023942874 0.0041316992 - 1628000 0.0046276091 0.00209971 0.0043412082 - 1628100 0.0046020073 0.0020975148 0.0043266121 - 1628200 0.004382452 0.0018049766 0.0039277268 - 1628300 0.0046630985 0.0015147608 0.0037734492 - 1628400 0.0042045174 0.0018365181 0.0038730813 - 1628500 0.0048461173 0.0020705875 0.0044179255 - 1628600 0.0053558138 0.0022168049 0.0048110272 - 1628700 0.0049043361 0.0025133216 0.0048888594 - 1628800 0.0064171355 0.0032075038 0.0063158038 - 1628900 0.0054735925 0.0028385056 0.005489777 - 1629000 0.0052149699 0.0028510327 0.0053770337 - 1629100 0.0042858848 0.0029193038 0.0049952793 - 1629200 0.0050623489 0.0025912323 0.0050433075 - 1629300 0.0040644984 0.0025444534 0.0045131948 - 1629400 0.0050243592 0.0026086364 0.0050423104 - 1629500 0.0061488142 0.0025917124 0.0055700443 - 1629600 0.0049372577 0.0028130911 0.0052045753 - 1629700 0.0057724154 0.0028065512 0.0056025649 - 1629800 0.0048683759 0.002568613 0.0049267326 - 1629900 0.0044953328 0.0024910462 0.004668473 - 1630000 0.0038418478 0.0033325149 0.0051934099 - 1630100 0.003338324 0.003374816 0.0049918167 - 1630200 0.0060095811 0.0028019869 0.0057128777 - 1630300 0.0045956624 0.0028697213 0.0050957453 - 1630400 0.0045070672 0.0024492956 0.0046324063 - 1630500 0.0033115035 0.0026420192 0.0042460288 - 1630600 0.0044852433 0.0031377632 0.0053103029 - 1630700 0.0067963003 0.0030078724 0.0062998304 - 1630800 0.0052429781 0.0026498517 0.0051894192 - 1630900 0.0051841648 0.0025594328 0.0050705126 - 1631000 0.004858108 0.0025302276 0.0048833736 - 1631100 0.0048785473 0.0028473498 0.0052103961 - 1631200 0.0064626866 0.0029541142 0.006084478 - 1631300 0.0056098377 0.002856209 0.0055734742 - 1631400 0.0045668615 0.0028268309 0.0050389045 - 1631500 0.0038328518 0.0026087637 0.0044653013 - 1631600 0.0058824971 0.002311845 0.0051611795 - 1631700 0.0063147482 0.0024269291 0.0054856352 - 1631800 0.0060659518 0.003286567 0.0062247624 - 1631900 0.0042220233 0.0036497191 0.0056947617 - 1632000 0.0054271323 0.0030586781 0.0056874453 - 1632100 0.0054839155 0.0026613596 0.0053176312 - 1632200 0.0057045884 0.0027607647 0.0055239247 - 1632300 0.0047255922 0.0029713942 0.0052603529 - 1632400 0.0051819134 0.0031252721 0.0056352614 - 1632500 0.0039050894 0.0033140849 0.0052056126 - 1632600 0.0047495726 0.0031580406 0.0054586148 - 1632700 0.0063966709 0.0031000289 0.0061984164 - 1632800 0.0055189822 0.0029952899 0.0056685469 - 1632900 0.0040047371 0.0026489173 0.0045887118 - 1633000 0.0062933265 0.0026433993 0.0056917293 - 1633100 0.0059337427 0.0030116682 0.0058858248 - 1633200 0.006359466 0.0027956507 0.005876017 - 1633300 0.0047104236 0.0029844 0.0052660114 - 1633400 0.0042268 0.002790872 0.0048382283 - 1633500 0.0038591701 0.0028435944 0.0047128799 - 1633600 0.0031940908 0.0030125162 0.004559654 - 1633700 0.0040740916 0.0028865552 0.0048599433 - 1633800 0.0034606577 0.0026572074 0.0043334635 - 1633900 0.0039067085 0.0022911504 0.0041834623 - 1634000 0.0051313415 0.0022158791 0.0047013727 - 1634100 0.0046947443 0.0022191783 0.0044931951 - 1634200 0.0048104103 0.0023955558 0.0047255983 - 1634300 0.0057429069 0.0023626853 0.0051444059 - 1634400 0.0041751574 0.0027762147 0.0047985565 - 1634500 0.0046693438 0.0029445637 0.0052062771 - 1634600 0.0046417766 0.0030257714 0.0052741319 - 1634700 0.0062083201 0.0030294691 0.0060366241 - 1634800 0.003571156 0.0031035372 0.0048333159 - 1634900 0.0051623823 0.0027713637 0.0052718927 - 1635000 0.0037265404 0.0028573222 0.0046623652 - 1635100 0.0058873146 0.0026371731 0.0054888411 - 1635200 0.0047862028 0.0025997832 0.0049181002 - 1635300 0.0049504365 0.0025784801 0.0049763478 - 1635400 0.0035665645 0.0029345955 0.0046621501 - 1635500 0.0042484133 0.0030827688 0.005140594 - 1635600 0.0051219171 0.0026991518 0.0051800804 - 1635700 0.0046885811 0.0027625614 0.0050335929 - 1635800 0.0047536102 0.0029899861 0.0052925161 - 1635900 0.0059540219 0.0025746155 0.0054585949 - 1636000 0.0047358251 0.002245374 0.0045392893 - 1636100 0.002598486 0.0020978585 0.0033565001 - 1636200 0.0040893713 0.0023780209 0.0043588101 - 1636300 0.0041528929 0.0026810101 0.0046925676 - 1636400 0.0035626505 0.0025782016 0.0043038604 - 1636500 0.0045566107 0.0026434374 0.0048505458 - 1636600 0.0063691542 0.0025479012 0.0056329603 - 1636700 0.0047202115 0.0023611332 0.0046474857 - 1636800 0.005245015 0.0024327859 0.0049733401 - 1636900 0.004927184 0.0027972794 0.0051838841 - 1637000 0.0053373397 0.0028844772 0.0054697512 - 1637100 0.0045923645 0.0029665988 0.0051910253 - 1637200 0.0053772536 0.0029839395 0.0055885467 - 1637300 0.0041474294 0.0023581479 0.004367059 - 1637400 0.0049627179 0.0021146657 0.0045184822 - 1637500 0.0041380168 0.0023219887 0.0043263406 - 1637600 0.005419279 0.001809193 0.0044341563 - 1637700 0.0041948871 0.0019582106 0.0039901091 - 1637800 0.0046919734 0.0021692113 0.0044418859 - 1637900 0.004602092 0.0026335818 0.0048627202 - 1638000 0.0042647192 0.0029536203 0.0050193437 - 1638100 0.0048683081 0.0027523447 0.0051104314 - 1638200 0.0060166565 0.0025242223 0.0054385403 - 1638300 0.0045427536 0.0024050329 0.0046054291 - 1638400 0.0046847444 0.0026808727 0.0049500458 - 1638500 0.0047609796 0.0027595263 0.0050656258 - 1638600 0.0050813898 0.0027471393 0.0052084375 - 1638700 0.0066349853 0.0029231793 0.0061370003 - 1638800 0.0062991747 0.0031073219 0.0061584847 - 1638900 0.0053209234 0.0035520849 0.0061294072 - 1639000 0.0074072873 0.0028344147 0.0064223195 - 1639100 0.0042572692 0.0022031492 0.0042652639 - 1639200 0.0062225508 0.0023563522 0.0053704003 - 1639300 0.006479103 0.0030578683 0.0061961838 - 1639400 0.0043455299 0.0032681228 0.0053729889 - 1639500 0.0060938638 0.0031539242 0.0061056394 - 1639600 0.0067729548 0.0029356938 0.0062163438 - 1639700 0.0053452872 0.0027668677 0.0053559912 - 1639800 0.0041779208 0.002420171 0.0044438514 - 1639900 0.0056622493 0.002322991 0.005065643 - 1640000 0.0050286093 0.0027070536 0.0051427863 - 1640100 0.0052117905 0.0026757912 0.0052002522 - 1640200 0.0046801443 0.0022426678 0.0045096127 - 1640300 0.0053165635 0.0018280031 0.0044032135 - 1640400 0.0067909496 0.0020477176 0.0053370838 - 1640500 0.0039028218 0.0028001783 0.0046906076 - 1640600 0.0049552032 0.0029954246 0.0053956012 - 1640700 0.0071560738 0.0031545723 0.0066207956 - 1640800 0.0043465629 0.0034105095 0.0055158759 - 1640900 0.0060644535 0.0025373865 0.0054748561 - 1641000 0.004227289 0.0021605115 0.0042081046 - 1641100 0.0054959094 0.0020836725 0.0047457537 - 1641200 0.0052651289 0.0022941937 0.0048444905 - 1641300 0.0043287493 0.0028155489 0.0049122869 - 1641400 0.0045403401 0.0030781831 0.0052774104 - 1641500 0.0040336592 0.0033298149 0.0052836186 - 1641600 0.0057757351 0.0028875435 0.0056851652 - 1641700 0.0060523972 0.0025243676 0.0054559975 - 1641800 0.006865761 0.0027416026 0.0060672056 - 1641900 0.0040282199 0.0029304026 0.0048815717 - 1642000 0.0049175295 0.0024167297 0.004798658 - 1642100 0.0036910505 0.0025452441 0.0043330966 - 1642200 0.0054144359 0.0024581011 0.0050807184 - 1642300 0.0056887737 0.0021600857 0.0049155855 - 1642400 0.0044845885 0.0023943661 0.0045665886 - 1642500 0.0060156141 0.0027570923 0.0056709054 - 1642600 0.0066799105 0.0031536488 0.0063892305 - 1642700 0.0056270164 0.0027892661 0.0055148522 - 1642800 0.007317675 0.0018435186 0.0053880174 - 1642900 0.0047236616 0.0020708213 0.0043588449 - 1643000 0.0036713734 0.0024174699 0.0041957914 - 1643100 0.0041410821 0.0025324946 0.0045383313 - 1643200 0.002682738 0.0025110384 0.0038104896 - 1643300 0.0057424211 0.0021542636 0.0049357488 - 1643400 0.0067810357 0.0022867498 0.005571314 - 1643500 0.0050166686 0.0021801906 0.0046101395 - 1643600 0.0042042113 0.001954686 0.0039911008 - 1643700 0.0050259711 0.0017595825 0.0041940372 - 1643800 0.0053059853 0.0020562003 0.004626287 - 1643900 0.0047370168 0.0019902403 0.0042847328 - 1644000 0.0052036428 0.0020866507 0.0046071652 - 1644100 0.0051552566 0.002589622 0.0050866994 - 1644200 0.0055395833 0.0026960654 0.0053793011 - 1644300 0.004698711 0.0029258862 0.0052018244 - 1644400 0.0045114785 0.003224238 0.0054094854 - 1644500 0.004647839 0.0029159306 0.0051672276 - 1644600 0.0072926122 0.0029618724 0.0064942315 - 1644700 0.0048948261 0.0030003264 0.0053712578 - 1644800 0.0050000955 0.0027685477 0.0051904689 - 1644900 0.0053723731 0.0023977088 0.004999952 - 1645000 0.0046450849 0.002375725 0.004625688 - 1645100 0.0059106385 0.0021293669 0.0049923324 - 1645200 0.005559943 0.0019184789 0.0046115763 - 1645300 0.0058312894 0.0022329184 0.0050574492 - 1645400 0.0068685548 0.0022083885 0.0055353447 - 1645500 0.0053295913 0.0022470394 0.0048285602 - 1645600 0.0038295985 0.0026698328 0.0045247946 - 1645700 0.0066323347 0.002621146 0.0058336831 - 1645800 0.0050473383 0.0026457454 0.0050905498 - 1645900 0.0047659693 0.002216062 0.0045245784 - 1646000 0.0049610214 0.0026536078 0.0050566025 - 1646100 0.0051274468 0.002716523 0.0052001301 - 1646200 0.0056290751 0.0029433803 0.0056699636 - 1646300 0.0045494065 0.0026903282 0.004893947 - 1646400 0.0057840386 0.0024965354 0.0052981791 - 1646500 0.0045430598 0.0025816441 0.0047821886 - 1646600 0.0042374927 0.0026912156 0.0047437512 - 1646700 0.0058313086 0.0029717251 0.0057962651 - 1646800 0.0064608026 0.0032741846 0.0064036359 - 1646900 0.0050392487 0.0031673301 0.0056082162 - 1647000 0.0040369854 0.002883343 0.0048387578 - 1647100 0.0045121116 0.0030961629 0.0052817169 - 1647200 0.0066765959 0.0032960012 0.0065299773 - 1647300 0.0065253762 0.0029666079 0.006127337 - 1647400 0.0062181518 0.0027576071 0.0057695244 - 1647500 0.0042412434 0.002753699 0.0048080513 - 1647600 0.0052977098 0.0024811452 0.0050472233 - 1647700 0.0057160809 0.0025937582 0.0053624849 - 1647800 0.0054182671 0.0026701766 0.0052946497 - 1647900 0.0056438088 0.0027235245 0.0054572444 - 1648000 0.0058637451 0.0026038961 0.0054441476 - 1648100 0.0051001915 0.0024296314 0.0049000366 - 1648200 0.0052711614 0.0024179414 0.0049711602 - 1648300 0.0051200069 0.0024349808 0.0049149841 - 1648400 0.0050923422 0.0028653332 0.0053319364 - 1648500 0.0043169703 0.0029874531 0.0050784856 - 1648600 0.0047024773 0.0032064927 0.0054842552 - 1648700 0.0046212897 0.0028625484 0.0051009856 - 1648800 0.0040025679 0.0024173995 0.0043561433 - 1648900 0.0055918023 0.0021114459 0.0048199751 - 1649000 0.0049313489 0.0022001459 0.004588768 - 1649100 0.0067971778 0.0025454615 0.0058378445 - 1649200 0.0038288749 0.0025251248 0.0043797361 - 1649300 0.003677428 0.0022998546 0.0040811088 - 1649400 0.0042718662 0.0023312724 0.0044004575 - 1649500 0.0055863449 0.002089348 0.0047952338 - 1649600 0.004638832 0.0020759896 0.0043229238 - 1649700 0.0055232434 0.002607606 0.005282927 - 1649800 0.0053285619 0.0025897867 0.0051708088 - 1649900 0.0047836729 0.0024029504 0.0047200419 - 1650000 0.0053026043 0.0023573708 0.0049258198 - 1650100 0.0049200436 0.0021046538 0.0044877999 - 1650200 0.0044689765 0.0023465201 0.0045111806 - 1650300 0.0053559689 0.0024072497 0.0050015472 - 1650400 0.0057898558 0.0024238325 0.0052282939 - 1650500 0.0047982731 0.00269558 0.0050197435 - 1650600 0.0052538643 0.0027814148 0.0053262553 - 1650700 0.004558796 0.0024770583 0.0046852251 - 1650800 0.0060318192 0.002197683 0.0051193455 - 1650900 0.0047245587 0.0019879444 0.0042764025 - 1651000 0.005931727 0.0017901517 0.0046633319 - 1651100 0.0049338998 0.0021203616 0.0045102193 - 1651200 0.0061610579 0.0023324502 0.0053167126 - 1651300 0.0056758832 0.0023584647 0.0051077207 - 1651400 0.0046728582 0.0021602619 0.0044236776 - 1651500 0.0062928934 0.0025407867 0.005588907 - 1651600 0.0049292478 0.0029060926 0.005293697 - 1651700 0.0053864399 0.0025568017 0.0051658586 - 1651800 0.0067717705 0.0030720433 0.0063521196 - 1651900 0.0058668446 0.0034375463 0.0062792991 - 1652000 0.0049535703 0.0032965519 0.0056959375 - 1652100 0.0065825188 0.0026777047 0.0058661122 - 1652200 0.0055775145 0.0021969455 0.0048985541 - 1652300 0.0048843963 0.0021469747 0.0045128542 - 1652400 0.0033396056 0.0021811277 0.0037987492 - 1652500 0.004672797 0.0019609942 0.0042243802 - 1652600 0.0057929542 0.0018903715 0.0046963337 - 1652700 0.0054160383 0.0020993208 0.0047227144 - 1652800 0.0063179041 0.002269329 0.0053295639 - 1652900 0.0065228553 0.0020596114 0.0052191194 - 1653000 0.0062142204 0.0024181898 0.0054282028 - 1653100 0.0044555618 0.0028594363 0.0050175991 - 1653200 0.0057339087 0.0028209005 0.0055982625 - 1653300 0.0054458467 0.0028351635 0.0054729955 - 1653400 0.0056950155 0.0024045076 0.0051630307 - 1653500 0.005482261 0.002004394 0.0046598641 - 1653600 0.0054143735 0.0021673221 0.0047899093 - 1653700 0.0052203261 0.0022551543 0.0047837498 - 1653800 0.004901459 0.002289129 0.0046632732 - 1653900 0.005338794 0.0020499177 0.0046358961 - 1654000 0.0038477122 0.0019258486 0.0037895842 - 1654100 0.0070551282 0.0019130871 0.0053304148 - 1654200 0.003270829 0.0023271426 0.0039114504 - 1654300 0.0047781474 0.0028411194 0.0051555345 - 1654400 0.0055617546 0.0029205387 0.0056145135 - 1654500 0.0056337318 0.0027186 0.0054474388 - 1654600 0.0050273724 0.0030160756 0.0054512091 - 1654700 0.0054903245 0.0029387259 0.0055981019 - 1654800 0.0059319265 0.0028730688 0.0057463458 - 1654900 0.0035603035 0.0027610498 0.0044855718 - 1655000 0.0050221004 0.0028213336 0.0052539135 - 1655100 0.0048174819 0.0024105864 0.0047440542 - 1655200 0.0057506053 0.0021118137 0.0048972631 - 1655300 0.0056441826 0.00218559 0.004919491 - 1655400 0.0046642681 0.0024055985 0.0046648533 - 1655500 0.0042424914 0.0026403123 0.0046952691 - 1655600 0.0047704053 0.0027893953 0.0051000604 - 1655700 0.0050043839 0.0031701288 0.0055941273 - 1655800 0.0052155537 0.0031189994 0.0056452832 - 1655900 0.0039674553 0.0032597219 0.005181458 - 1656000 0.0060066889 0.0029508746 0.0058603645 - 1656100 0.0049927558 0.003165949 0.0055843151 - 1656200 0.0050036514 0.0032903728 0.0057140165 - 1656300 0.0048771611 0.0030134393 0.0053758142 - 1656400 0.0051021404 0.0032871931 0.0057585423 - 1656500 0.005929017 0.0029820681 0.0058539357 - 1656600 0.0050336388 0.0031878116 0.0056259803 - 1656700 0.0050401042 0.0031045746 0.0055458751 - 1656800 0.0062243019 0.002819135 0.0058340312 - 1656900 0.0048861447 0.0027726628 0.0051393891 - 1657000 0.00532877 0.0028002427 0.0053813657 - 1657100 0.0044469503 0.0029537101 0.0051077017 - 1657200 0.0051694507 0.0029844954 0.0054884481 - 1657300 0.0040011982 0.002767666 0.0047057464 - 1657400 0.0041235359 0.0028464702 0.0048438079 - 1657500 0.0054242683 0.0031632355 0.0057906154 - 1657600 0.0057514689 0.0033881126 0.0061739804 - 1657700 0.0043540667 0.0036254174 0.0057344184 - 1657800 0.0062419726 0.0034503599 0.0064738154 - 1657900 0.0059295514 0.0032782192 0.0061503457 - 1658000 0.004299356 0.0029738728 0.0050563734 - 1658100 0.0052469641 0.0027275998 0.005269098 - 1658200 0.0042614543 0.0030605864 0.0051247284 - 1658300 0.004387671 0.0031253088 0.005250587 - 1658400 0.0059777904 0.0030770988 0.005972591 - 1658500 0.0037922044 0.0030403049 0.004877154 - 1658600 0.0061253352 0.0029950861 0.0059620453 - 1658700 0.0055660518 0.0031917799 0.0058878362 - 1658800 0.0045183302 0.0030141247 0.0052026909 - 1658900 0.0058326645 0.0024600254 0.0052852223 - 1659000 0.004460247 0.0025680061 0.0047284383 - 1659100 0.0057773987 0.0027404625 0.00553889 - 1659200 0.0047587195 0.0024857354 0.0047907402 - 1659300 0.0060320459 0.0023173462 0.0052391185 - 1659400 0.0037153012 0.0032983411 0.0050979401 - 1659500 0.0045802835 0.0034547563 0.0056733311 - 1659600 0.0061315277 0.00295335 0.0059233087 - 1659700 0.004992946 0.0027360904 0.0051545486 - 1659800 0.0050188413 0.0027330461 0.0051640473 - 1659900 0.0044500551 0.002791221 0.0049467165 - 1660000 0.0064847081 0.0027670949 0.0059081254 - 1660100 0.0057592272 0.0027863859 0.0055760116 - 1660200 0.0041086915 0.0030069208 0.0049970683 - 1660300 0.004424 0.0027520579 0.004894933 - 1660400 0.0061762975 0.0027783988 0.005770043 - 1660500 0.0056707581 0.0024719543 0.0052187277 - 1660600 0.0049629861 0.0025328919 0.0049368383 - 1660700 0.0053236665 0.0024633393 0.0050419903 - 1660800 0.0051952247 0.0027176635 0.0052341005 - 1660900 0.0060855014 0.0028970291 0.0058446938 - 1661000 0.003094757 0.0032414196 0.0047404426 - 1661100 0.0050978022 0.002812059 0.005281307 - 1661200 0.0054495562 0.0030411944 0.0056808232 - 1661300 0.0061396435 0.0031575757 0.0061314656 - 1661400 0.00524369 0.0029387947 0.0054787071 - 1661500 0.0040509249 0.0029745906 0.0049367573 - 1661600 0.0047935864 0.0026904799 0.0050123734 - 1661700 0.0056110424 0.0023859158 0.0051037645 - 1661800 0.0061060846 0.0021386659 0.0050963006 - 1661900 0.0051536105 0.0022067945 0.0047030746 - 1662000 0.0052090958 0.0023353282 0.004858484 - 1662100 0.0058810285 0.0022137304 0.0050623536 - 1662200 0.0063334987 0.0022591156 0.005326904 - 1662300 0.0039636817 0.0022059713 0.0041258796 - 1662400 0.0043820542 0.002171334 0.0042938915 - 1662500 0.0067745879 0.0024615018 0.0057429428 - 1662600 0.0049593417 0.0028793199 0.0052815011 - 1662700 0.0056049961 0.0028478548 0.0055627747 - 1662800 0.0040909883 0.0028378733 0.0048194458 - 1662900 0.0058671816 0.0022302971 0.0050722132 - 1663000 0.0054818946 0.0017920656 0.0044473583 - 1663100 0.0061570581 0.0017720004 0.0047543254 - 1663200 0.0039573884 0.0022120312 0.0041288912 - 1663300 0.0043651756 0.0020429395 0.0041573214 - 1663400 0.0058387918 0.0021608615 0.0049890263 - 1663500 0.0042485734 0.0023129427 0.0043708455 - 1663600 0.0057363948 0.0024428526 0.0052214188 - 1663700 0.004371576 0.0023406812 0.0044581633 - 1663800 0.0043484821 0.0022767785 0.0043830745 - 1663900 0.0054013088 0.0021853468 0.0048016058 - 1664000 0.0056252597 0.0022688418 0.0049935769 - 1664100 0.0044189214 0.0027477216 0.0048881367 - 1664200 0.0058551711 0.0025479869 0.0053840855 - 1664300 0.0041716164 0.0027639276 0.0047845543 - 1664400 0.0051236387 0.002611687 0.0050934495 - 1664500 0.0042348443 0.0027628858 0.0048141386 - 1664600 0.0044774774 0.0025950363 0.0047638145 - 1664700 0.0064681525 0.0025912658 0.0057242772 - 1664800 0.0038198166 0.0028182631 0.0046684867 - 1664900 0.0051927189 0.0026352324 0.0051504557 - 1665000 0.0046434758 0.0025132346 0.0047624182 - 1665100 0.0055223565 0.0023805013 0.0050553927 - 1665200 0.0038966918 0.0021006918 0.0039881519 - 1665300 0.0046424246 0.0018347562 0.0040834307 - 1665400 0.0041092346 0.001929404 0.0039198145 - 1665500 0.0054503193 0.0023500693 0.0049900677 - 1665600 0.0057073971 0.0025553248 0.0053198452 - 1665700 0.0057352272 0.0023328468 0.0051108475 - 1665800 0.0053083543 0.0026471907 0.0052184248 - 1665900 0.0044371799 0.0020976483 0.0042469073 - 1666000 0.0071691037 0.0017689638 0.0052414984 - 1666100 0.0045736976 0.0027760855 0.0049914703 - 1666200 0.0051197393 0.0031253638 0.0056052375 - 1666300 0.0063902014 0.0025248986 0.0056201524 - 1666400 0.0049573082 0.0024929864 0.0048941825 - 1666500 0.0048897781 0.0028115785 0.0051800647 - 1666600 0.0055795929 0.0028185713 0.0055211866 - 1666700 0.0065163501 0.0026337759 0.005790133 - 1666800 0.0040128459 0.0023890681 0.0043327903 - 1666900 0.0059335176 0.00242743 0.0053014776 - 1667000 0.0056465668 0.0022669661 0.0050020219 - 1667100 0.0043835393 0.0020672071 0.0041904839 - 1667200 0.0039914458 0.0022459029 0.0041792594 - 1667300 0.004187031 0.0023801076 0.0044082007 - 1667400 0.0041143252 0.0024662325 0.0044591088 - 1667500 0.0043986209 0.0025908975 0.0047214795 - 1667600 0.005014944 0.0029587692 0.0053878827 - 1667700 0.0059444346 0.00277019 0.0056495255 - 1667800 0.0054956009 0.0024442106 0.0051061423 - 1667900 0.0048219251 0.0023319351 0.0046675551 - 1668000 0.0047440535 0.0027615797 0.0050594806 - 1668100 0.0040279565 0.0029996558 0.0049506973 - 1668200 0.0072338731 0.0024664348 0.005970342 - 1668300 0.005334767 0.0027167508 0.0053007785 - 1668400 0.0074994691 0.0030077526 0.0066403079 - 1668500 0.0055513403 0.0035811093 0.0062700398 - 1668600 0.005855234 0.003728927 0.0065650559 - 1668700 0.005006675 0.0036518755 0.0060769837 - 1668800 0.0057382052 0.0036722041 0.0064516472 - 1668900 0.0057108294 0.0034289284 0.0061951114 - 1669000 0.0060763099 0.0026911534 0.0056343661 - 1669100 0.0043275169 0.0029045287 0.0050006697 - 1669200 0.0058463545 0.0029177693 0.0057495973 - 1669300 0.0060536017 0.0023303365 0.0052625498 - 1669400 0.0073690969 0.0027254232 0.0062948295 - 1669500 0.0059538893 0.0029932816 0.0058771968 - 1669600 0.0061858511 0.0021671832 0.0051634548 - 1669700 0.0055942011 0.0023930151 0.0051027063 - 1669800 0.0065231746 0.0022152737 0.0053749364 - 1669900 0.0052193323 0.0020632227 0.0045913368 - 1670000 0.0037711584 0.0023483304 0.0041749852 - 1670100 0.0057263012 0.0023266757 0.0051003528 - 1670200 0.0044866453 0.0025804129 0.0047536318 - 1670300 0.0046890007 0.0028996057 0.0051708404 - 1670400 0.0060182042 0.00291928 0.0058343477 - 1670500 0.004841997 0.0027379466 0.0050832889 - 1670600 0.0044180937 0.0023936051 0.0045336193 - 1670700 0.0045372791 0.002614307 0.0048120516 - 1670800 0.0065033423 0.0025306355 0.0056806919 - 1670900 0.0040590712 0.0026423038 0.0046084164 - 1671000 0.0059158115 0.0024879661 0.0053534372 - 1671100 0.0046224469 0.0024175363 0.0046565341 - 1671200 0.0069059694 0.00252812 0.0058731989 - 1671300 0.0061278345 0.0025989623 0.0055671322 - 1671400 0.006242046 0.0028273765 0.0058508676 - 1671500 0.0040730165 0.0026534562 0.0046263236 - 1671600 0.0044394215 0.0025538108 0.0047041556 - 1671700 0.0071575051 0.0019720231 0.0054389397 - 1671800 0.0047206727 0.0021982079 0.0044847837 - 1671900 0.0043499169 0.0022843206 0.0043913116 - 1672000 0.0048117129 0.0025819102 0.0049125836 - 1672100 0.0052910877 0.0024208409 0.0049837115 - 1672200 0.0050996448 0.002286286 0.0047564265 - 1672300 0.0049723131 0.0020675912 0.0044760554 - 1672400 0.0045631686 0.0019044442 0.004114729 - 1672500 0.0046480125 0.0017034927 0.0039548737 - 1672600 0.0048587596 0.0018307732 0.0041842349 - 1672700 0.0053580944 0.0018771162 0.0044724431 - 1672800 0.0042389298 0.0022153459 0.0042685776 - 1672900 0.0076980108 0.0022126985 0.0059414225 - 1673000 0.0046229108 0.0022658636 0.0045050861 - 1673100 0.0066409683 0.0020784744 0.0052951935 - 1673200 0.003666307 0.0022543852 0.0040302526 - 1673300 0.0071443356 0.0018237573 0.0052842949 - 1673400 0.0058382724 0.002155931 0.0049838442 - 1673500 0.0053453247 0.0028471553 0.0054362969 - 1673600 0.0061513439 0.0032649658 0.0062445231 - 1673700 0.0053566964 0.0033719953 0.0059666451 - 1673800 0.0056947373 0.0030599226 0.005818311 - 1673900 0.0060595929 0.0024340743 0.0053691896 - 1674000 0.0045149765 0.0022988574 0.0044857991 - 1674100 0.0051128026 0.002270119 0.0047466328 - 1674200 0.0050145724 0.0020195983 0.0044485318 - 1674300 0.0042440786 0.0020538248 0.0041095504 - 1674400 0.0044967359 0.0020453402 0.0042234466 - 1674500 0.0055006695 0.0019256854 0.0045900722 - 1674600 0.0061018287 0.0018058804 0.0047614537 - 1674700 0.0048665629 0.0018082569 0.0041654983 - 1674800 0.0042151267 0.0025053937 0.0045470956 - 1674900 0.0059925122 0.0023846704 0.0052872935 - 1675000 0.0043946981 0.0023584928 0.0044871747 - 1675100 0.0053716809 0.002449895 0.005051803 - 1675200 0.0044524563 0.0026122493 0.0047689078 - 1675300 0.0037086699 0.0021754867 0.0039718737 - 1675400 0.0067590548 0.002137703 0.0054116202 - 1675500 0.0059117688 0.0023839454 0.0052474584 - 1675600 0.0051294028 0.0022854145 0.0047699689 - 1675700 0.0057572828 0.0022684261 0.00505711 - 1675800 0.005456718 0.0024292575 0.0050723553 - 1675900 0.005298139 0.0028332593 0.0053995454 - 1676000 0.0052774734 0.0029137972 0.0054700734 - 1676100 0.0057098565 0.0027241047 0.0054898164 - 1676200 0.0047457404 0.0021208312 0.0044195492 - 1676300 0.007425845 0.0022712854 0.005868179 - 1676400 0.0047694518 0.0026426806 0.0049528838 - 1676500 0.0047574395 0.0027392955 0.0050436802 - 1676600 0.007899068 0.0026384036 0.0064645146 - 1676700 0.0043624692 0.0025789576 0.0046920286 - 1676800 0.0048652869 0.0028518242 0.0052084475 - 1676900 0.0047752211 0.0024662982 0.0047792959 - 1677000 0.0045245011 0.0021237793 0.0043153345 - 1677100 0.0049244536 0.0018086983 0.0041939805 - 1677200 0.0058525169 0.0020089855 0.0048437983 - 1677300 0.004842559 0.0021280567 0.0044736712 - 1677400 0.0050723316 0.0023456138 0.0048025245 - 1677500 0.0047256655 0.0024621396 0.0047511338 - 1677600 0.0044767557 0.0023741546 0.0045425831 - 1677700 0.0043205962 0.0020846427 0.0041774314 - 1677800 0.0053579762 0.0018529924 0.0044482621 - 1677900 0.0053761171 0.0021100096 0.0047140664 - 1678000 0.0046707103 0.0021841967 0.0044465721 - 1678100 0.0045718908 0.0028275118 0.0050420214 - 1678200 0.0041610528 0.0024992894 0.0045147994 - 1678300 0.0063336156 0.0022580113 0.0053258563 - 1678400 0.0062512029 0.0024541826 0.005482109 - 1678500 0.0060700487 0.0023914278 0.0053316076 - 1678600 0.0048420113 0.0025636762 0.0049090254 - 1678700 0.0053620531 0.0025706881 0.0051679325 - 1678800 0.0045776711 0.0020647353 0.0042820447 - 1678900 0.0047722517 0.0019902873 0.0043018467 - 1679000 0.0043076379 0.001989093 0.0040756051 - 1679100 0.0066623743 0.0021855178 0.0054126053 - 1679200 0.0050078291 0.0022759748 0.004701642 - 1679300 0.0044347082 0.0022778889 0.0044259507 - 1679400 0.0055476872 0.0023191742 0.0050063352 - 1679500 0.004874041 0.0022130527 0.0045739163 - 1679600 0.0038675807 0.002523013 0.0043963724 - 1679700 0.003931867 0.0028867277 0.0047912258 - 1679800 0.0067152867 0.0019312346 0.0051839516 - 1679900 0.0055194176 0.0020729362 0.0047464041 - 1680000 0.0041322722 0.0025528787 0.0045544481 - 1680100 0.0039825128 0.0025506282 0.0044796578 - 1680200 0.006635767 0.0021797319 0.0053939315 - 1680300 0.0059500114 0.0022422304 0.0051242671 - 1680400 0.0050519802 0.0023645557 0.0048116086 - 1680500 0.0062937583 0.0026182845 0.0056668237 - 1680600 0.0056690547 0.0030498584 0.0057958068 - 1680700 0.0046610928 0.0024100072 0.004667724 - 1680800 0.0063545321 0.0021866325 0.005264609 - 1680900 0.0042783039 0.0026254424 0.0046977459 - 1681000 0.0055563611 0.0026367119 0.0053280743 - 1681100 0.0059049383 0.0026119613 0.0054721658 - 1681200 0.0066024929 0.0023781614 0.0055762439 - 1681300 0.0053813042 0.0028303157 0.0054368849 - 1681400 0.0047812666 0.0031188399 0.005434766 - 1681500 0.0051013229 0.0028076728 0.0052786261 - 1681600 0.0055442081 0.0025577798 0.0052432557 - 1681700 0.0051852852 0.0020308906 0.0045425132 - 1681800 0.0042587659 0.0021526481 0.0042154878 - 1681900 0.0064362692 0.0020341022 0.0051516701 - 1682000 0.00464978 0.0020636815 0.0043159187 - 1682100 0.0056441855 0.0017995643 0.0045334666 - 1682200 0.006275263 0.0015056166 0.0045451971 - 1682300 0.0047256852 0.0018418036 0.0041308074 - 1682400 0.0040296601 0.0020281506 0.0039800172 - 1682500 0.0042551115 0.0026119373 0.0046730069 - 1682600 0.0043238697 0.0027306068 0.0048249812 - 1682700 0.0053185127 0.002467474 0.0050436286 - 1682800 0.0044007223 0.0026712975 0.0048028974 - 1682900 0.0048759963 0.0024107658 0.0047725766 - 1683000 0.0041493974 0.0023715377 0.004381402 - 1683100 0.0062986259 0.0024605377 0.0055114346 - 1683200 0.0037193652 0.0028189022 0.0046204697 - 1683300 0.0065453591 0.0018210297 0.004991438 - 1683400 0.0046202837 0.001985766 0.0042237159 - 1683500 0.0050345051 0.0019645325 0.0044031209 - 1683600 0.0045247532 0.0019452125 0.0041368898 - 1683700 0.0050505053 0.0020634298 0.0045097683 - 1683800 0.0035690654 0.0022963329 0.0040250989 - 1683900 0.0046458049 0.0020764672 0.004326779 - 1684000 0.0050408584 0.0016244194 0.0040660852 - 1684100 0.0055199079 0.00161079 0.0042844954 - 1684200 0.005535216 0.0015977897 0.00427891 - 1684300 0.0063467488 0.0011848094 0.0042590159 - 1684400 0.0048665594 0.0013284399 0.0036856796 - 1684500 0.0049960226 0.001922315 0.0043422634 - 1684600 0.0042657639 0.0023952621 0.0044614915 - 1684700 0.0065680655 0.0025559655 0.0057373723 - 1684800 0.0044846468 0.0028040921 0.0049763429 - 1684900 0.0050656078 0.0024190095 0.0048726633 - 1685000 0.0054944066 0.001904972 0.0045663252 - 1685100 0.0048078204 0.0019482137 0.0042770017 - 1685200 0.0042331569 0.0021978555 0.0042482909 - 1685300 0.0052321913 0.0022645104 0.004798853 - 1685400 0.0049371896 0.0023017344 0.0046931856 - 1685500 0.0045885231 0.0020394309 0.0042619968 - 1685600 0.0053103705 0.001865246 0.0044374568 - 1685700 0.0049527026 0.0022075673 0.0046065326 - 1685800 0.0057904256 0.0027011814 0.0055059188 - 1685900 0.0060466057 0.0028425648 0.0057713894 - 1686000 0.0061075374 0.0026380509 0.0055963893 - 1686100 0.0056271966 0.0032006499 0.0059263233 - 1686200 0.0048798153 0.0031400613 0.0055037218 - 1686300 0.0049475052 0.0029762922 0.00537274 - 1686400 0.0063480739 0.002618879 0.0056937273 - 1686500 0.0061658794 0.0027213028 0.0057079007 - 1686600 0.0034795295 0.0026624062 0.0043478033 - 1686700 0.0048506997 0.0030919031 0.0054414608 - 1686800 0.0044726529 0.0038268359 0.0059932772 - 1686900 0.004686186 0.0038480479 0.0061179193 - 1687000 0.0053684595 0.0030269723 0.0056273199 - 1687100 0.0045065322 0.0023775374 0.0045603889 - 1687200 0.0035444945 0.0022161458 0.0039330103 - 1687300 0.0040613288 0.0023201418 0.004287348 - 1687400 0.0046064418 0.002439353 0.0046705982 - 1687500 0.0046764362 0.0024194358 0.0046845846 - 1687600 0.0054498492 0.0027048043 0.0053445751 - 1687700 0.0048940331 0.0030952735 0.0054658208 - 1687800 0.0054808861 0.00276403 0.0054188342 - 1687900 0.0062174666 0.003032598 0.0060441834 - 1688000 0.0083017196 0.0025968412 0.0066179866 - 1688100 0.0069250651 0.0024728479 0.0058271764 - 1688200 0.005404374 0.0021886109 0.0048063545 - 1688300 0.0048998713 0.0023947246 0.0047680998 - 1688400 0.0046715727 0.0022447761 0.0045075691 - 1688500 0.0053715419 0.0015078315 0.0041096721 - 1688600 0.0046036512 0.0017857927 0.0040156862 - 1688700 0.0048671391 0.0021206851 0.0044782056 - 1688800 0.004135492 0.0022043061 0.0042074351 - 1688900 0.0037334174 0.0023294953 0.0041378693 - 1689000 0.0044658218 0.001949062 0.0041121944 - 1689100 0.0050595436 0.0017621217 0.0042128382 - 1689200 0.0042966604 0.0017501508 0.0038313457 - 1689300 0.0055499858 0.001948421 0.0046366954 - 1689400 0.0057087112 0.0021982751 0.0049634321 - 1689500 0.0055491041 0.0021701226 0.0048579699 - 1689600 0.0062658353 0.0018447043 0.0048797183 - 1689700 0.0036320579 0.0022269457 0.0039862238 - 1689800 0.0046776729 0.0022405421 0.00450629 - 1689900 0.0042357334 0.0021134226 0.004165106 - 1690000 0.0054570692 0.0021917708 0.0048350387 - 1690100 0.0049815701 0.0023892794 0.0048022275 - 1690200 0.0044308841 0.0026051306 0.0047513401 - 1690300 0.0043419451 0.0024092475 0.0045123772 - 1690400 0.0048765805 0.0035104922 0.0058725859 - 1690500 0.0052473241 0.0038558102 0.0063974828 - 1690600 0.0054002341 0.0030268852 0.0056426236 - 1690700 0.0043807304 0.0029255276 0.0050474439 - 1690800 0.0077854265 0.0025436467 0.0063147126 - 1690900 0.0046412038 0.0025388098 0.0047868929 - 1691000 0.0032120693 0.002566905 0.004122751 - 1691100 0.0047209193 0.0027559985 0.0050426937 - 1691200 0.0046386309 0.0022231156 0.0044699525 - 1691300 0.0055257357 0.0020816368 0.0047581651 - 1691400 0.0051422883 0.0022733037 0.0047640996 - 1691500 0.0048546963 0.0023803065 0.0047318 - 1691600 0.0058728697 0.0026529246 0.0054975959 - 1691700 0.004643295 0.0031610662 0.0054101622 - 1691800 0.0043866786 0.0031021327 0.0052269301 - 1691900 0.0057212034 0.0028096152 0.005580823 - 1692000 0.0041441284 0.0023524593 0.0043597715 - 1692100 0.0052684838 0.0023374568 0.0048893787 - 1692200 0.0067811094 0.0021429007 0.0054275006 - 1692300 0.0040183046 0.0025329019 0.0044792682 - 1692400 0.0047323347 0.0022182295 0.0045104542 - 1692500 0.0048830959 0.0021301251 0.0044953747 - 1692600 0.0059300718 0.0026042565 0.005476635 - 1692700 0.0051499855 0.0031838419 0.0056783661 - 1692800 0.005644804 0.0028068759 0.0055410778 - 1692900 0.0047824079 0.0025734316 0.0048899105 - 1693000 0.0056713038 0.0024444527 0.0051914905 - 1693100 0.0049965839 0.0023905282 0.0048107486 - 1693200 0.0043802621 0.0026834304 0.0048051198 - 1693300 0.0040751847 0.0028315151 0.0048054327 - 1693400 0.0042181326 0.0031967489 0.0052399069 - 1693500 0.0057602764 0.0029163668 0.0057065007 - 1693600 0.0042567793 0.0029082641 0.0049701416 - 1693700 0.0044518454 0.0030264195 0.0051827821 - 1693800 0.0050995986 0.0030470358 0.0055171539 - 1693900 0.0059517126 0.002815903 0.0056987638 - 1694000 0.0067513641 0.0025972194 0.0058674114 - 1694100 0.0056586053 0.0030277697 0.0057686567 - 1694200 0.0046637682 0.0036658178 0.0059248305 - 1694300 0.005439127 0.0036297701 0.0062643472 - 1694400 0.0051160619 0.0039862782 0.0064643707 - 1694500 0.0039483615 0.0042482192 0.0061607068 - 1694600 0.005325955 0.0036265039 0.0062062634 - 1694700 0.0053361284 0.0030393016 0.0056239888 - 1694800 0.0049179782 0.0026921285 0.0050742742 - 1694900 0.0043527683 0.0026495055 0.0047578776 - 1695000 0.0057659672 0.002498666 0.0052915564 - 1695100 0.004432284 0.0028164343 0.0049633219 - 1695200 0.004743374 0.0033175497 0.0056151215 - 1695300 0.0057421019 0.002951843 0.0057331737 - 1695400 0.0041242361 0.0027220188 0.0047196956 - 1695500 0.003417054 0.0030043567 0.0046594923 - 1695600 0.005292058 0.0025265849 0.0050899255 - 1695700 0.0052646061 0.0027531568 0.0053032004 - 1695800 0.0048223202 0.0026682904 0.0050041018 - 1695900 0.0065421696 0.0024917235 0.0056605869 - 1696000 0.0059459789 0.0029157385 0.005795822 - 1696100 0.0035108084 0.003118056 0.0048186038 - 1696200 0.0047814448 0.0030217435 0.0053377559 - 1696300 0.0043407004 0.0035084174 0.0056109441 - 1696400 0.0061592856 0.0031439824 0.0061273864 - 1696500 0.005946013 0.0029257318 0.0058058318 - 1696600 0.0060327993 0.0031330337 0.0060551709 - 1696700 0.0051139572 0.0028897556 0.0053668286 - 1696800 0.0055267193 0.0029705954 0.0056476 - 1696900 0.0050712663 0.0026462231 0.0051026177 - 1697000 0.0059021053 0.0029200646 0.0057788969 - 1697100 0.0046878939 0.0027522022 0.0050229008 - 1697200 0.005241688 0.0032285995 0.0057675421 - 1697300 0.0051773707 0.0036424449 0.0061502338 - 1697400 0.0070285928 0.0037332118 0.0071376864 - 1697500 0.0054410632 0.003394432 0.006029947 - 1697600 0.0053675467 0.0031385044 0.0057384099 - 1697700 0.0040797049 0.0028600753 0.0048361824 - 1697800 0.0051592204 0.0025063812 0.0050053786 - 1697900 0.0062935879 0.0021016269 0.0051500835 - 1698000 0.0060761143 0.0028158132 0.0057589311 - 1698100 0.0035102741 0.0035730417 0.0052733307 - 1698200 0.0055163498 0.0029984426 0.0056704245 - 1698300 0.0055709247 0.0029605912 0.0056590078 - 1698400 0.0051024798 0.0028679029 0.0053394166 - 1698500 0.0053735865 0.0025780092 0.0051808402 - 1698600 0.0041733006 0.0022773748 0.0042988173 - 1698700 0.0053040322 0.0020902674 0.0046594081 - 1698800 0.0031770079 0.0017542697 0.0032931329 - 1698900 0.0051743684 0.0020752502 0.0045815849 - 1699000 0.0043776448 0.0020369456 0.0041573673 - 1699100 0.0044468885 0.0019941704 0.004148132 - 1699200 0.0046418006 0.0023063384 0.0045547105 - 1699300 0.0052274268 0.0021935202 0.0047255551 - 1699400 0.0044500966 0.0019588327 0.0041143482 - 1699500 0.0043309253 0.0020360386 0.0041338305 - 1699600 0.0044102557 0.0023318358 0.0044680534 - 1699700 0.0041631471 0.0020567879 0.0040733123 - 1699800 0.0050431049 0.0022420039 0.0046847578 - 1699900 0.0041081511 0.0022995459 0.0042894316 - 1700000 0.0053114036 0.0023752439 0.004947955 - 1700100 0.0047385322 0.0024788783 0.0047741048 - 1700200 0.0036241749 0.0028766263 0.004632086 - 1700300 0.0053333755 0.0025694989 0.0051528526 - 1700400 0.005133738 0.0023409198 0.0048275741 - 1700500 0.0043915741 0.0023260608 0.0044532295 - 1700600 0.0041478594 0.002237391 0.0042465104 - 1700700 0.0029302281 0.0023926425 0.0038119718 - 1700800 0.0042049078 0.0024456111 0.0044823633 - 1700900 0.0039984862 0.0026959405 0.0046327073 - 1701000 0.006656029 0.0029913914 0.0062154054 - 1701100 0.0064332741 0.0034317131 0.0065478302 - 1701200 0.0053808746 0.0034442687 0.0060506298 - 1701300 0.0071836492 0.0024332104 0.0059127905 - 1701400 0.0050971444 0.0023401649 0.0048090942 - 1701500 0.0050012866 0.0023346174 0.0047571155 - 1701600 0.0050199507 0.002251442 0.0046829807 - 1701700 0.0050849211 0.0023097505 0.0047727591 - 1701800 0.0038761859 0.0023392795 0.0042168071 - 1701900 0.0053482145 0.0021927678 0.0047833092 - 1702000 0.0060386689 0.0024264724 0.0053514527 - 1702100 0.006871619 0.0023329272 0.0056613676 - 1702200 0.0059622773 0.0023141196 0.0052020977 - 1702300 0.0050874061 0.0020618454 0.0045260578 - 1702400 0.0053689431 0.0015740742 0.004174656 - 1702500 0.0043232572 0.0012172743 0.003311352 - 1702600 0.0041200656 0.001376304 0.0033719608 - 1702700 0.0042928936 0.0019021361 0.0039815064 - 1702800 0.0044734331 0.0022428951 0.0044097143 - 1702900 0.0036115065 0.0025169635 0.0042662869 - 1703000 0.0052779259 0.002658837 0.0052153323 - 1703100 0.0065897727 0.0029102799 0.006102201 - 1703200 0.0045110953 0.0036666271 0.0058516889 - 1703300 0.0053712768 0.0033929901 0.0059947023 - 1703400 0.0043138533 0.0030860551 0.0051755778 - 1703500 0.0046933038 0.0032001574 0.0054734765 - 1703600 0.0058954052 0.0030559072 0.0059114941 - 1703700 0.0052387875 0.0031179058 0.0056554435 - 1703800 0.0075078065 0.0031200525 0.0067566463 - 1703900 0.0055650291 0.0029466655 0.0056422265 - 1704000 0.0071520064 0.0031791781 0.0066434312 - 1704100 0.0053128352 0.0029855251 0.0055589296 - 1704200 0.0059583304 0.0037642824 0.0066503487 - 1704300 0.0048261284 0.0035450477 0.0058827036 - 1704400 0.0054494603 0.002900639 0.0055402213 - 1704500 0.0044747769 0.0025723891 0.0047398592 - 1704600 0.0046197433 0.0029437427 0.0051814309 - 1704700 0.0042616497 0.0030050544 0.0050692909 - 1704800 0.0049303892 0.0036245081 0.0060126653 - 1704900 0.0057577539 0.0034182937 0.0062072058 - 1705000 0.0072933872 0.0021744692 0.0057072037 - 1705100 0.0040134711 0.0024285575 0.0043725826 - 1705200 0.0043395842 0.0026196742 0.0047216603 - 1705300 0.004181798 0.0026546097 0.0046801681 - 1705400 0.0069324959 0.0023996927 0.0057576204 - 1705500 0.0069451071 0.0027190325 0.0060830687 - 1705600 0.0058839428 0.0035196226 0.0063696574 - 1705700 0.0055465285 0.0036211537 0.0063077534 - 1705800 0.006089453 0.003988566 0.0069381448 - 1705900 0.0062162876 0.0040045673 0.0070155815 - 1706000 0.0053147555 0.0041267183 0.006701053 - 1706100 0.0055631384 0.0040339252 0.0067285704 - 1706200 0.0050516886 0.0032305374 0.0056774491 - 1706300 0.0061979036 0.0025432503 0.0055453599 - 1706400 0.0073983094 0.0024810372 0.0060645933 - 1706500 0.0061493282 0.002555957 0.0055345379 - 1706600 0.0054887171 0.002688232 0.0053468294 - 1706700 0.004694973 0.0030949629 0.0053690905 - 1706800 0.0055740906 0.0030774398 0.0057773899 - 1706900 0.003947304 0.0028045632 0.0047165386 - 1707000 0.005695582 0.0025559039 0.0053147014 - 1707100 0.0064052616 0.0023362423 0.0054387909 - 1707200 0.0033132362 0.0024377487 0.0040425975 - 1707300 0.0042443847 0.0022299753 0.0042858491 - 1707400 0.0053098776 0.0022988101 0.0048707821 - 1707500 0.0054551927 0.0026795847 0.0053219437 - 1707600 0.004937858 0.0031022794 0.0054940544 - 1707700 0.0043328551 0.0028778068 0.0049765335 - 1707800 0.0062935435 0.0027733342 0.0058217693 - 1707900 0.0043523008 0.0032635936 0.0053717393 - 1708000 0.0058332909 0.0029906601 0.0058161604 - 1708100 0.0045924241 0.0029209907 0.0051454461 - 1708200 0.0048619958 0.0024147873 0.0047698165 - 1708300 0.0041213878 0.0027575835 0.0047538807 - 1708400 0.0052568052 0.0029828248 0.0055290898 - 1708500 0.0059131269 0.0026349093 0.0054990802 - 1708600 0.0059196775 0.0027200145 0.0055873583 - 1708700 0.0041248013 0.0029561594 0.0049541101 - 1708800 0.0059913639 0.0027352636 0.0056373305 - 1708900 0.0058537977 0.0027178401 0.0055532733 - 1709000 0.0046670792 0.0028266557 0.0050872722 - 1709100 0.0057799251 0.002734702 0.0055343532 - 1709200 0.0042200709 0.0028053507 0.0048494476 - 1709300 0.0046736202 0.0024743339 0.0047381187 - 1709400 0.0062089396 0.0027434324 0.0057508875 - 1709500 0.0051697641 0.0023635762 0.0048676807 - 1709600 0.0051542583 0.0021020657 0.0045986595 - 1709700 0.0055226533 0.0019652787 0.0046403139 - 1709800 0.0044838564 0.0024041282 0.0045759961 - 1709900 0.0049763574 0.0026142109 0.005024634 - 1710000 0.0057864459 0.002955427 0.0057582367 - 1710100 0.0046115986 0.0025655947 0.0047993378 - 1710200 0.005045252 0.0021502801 0.0045940741 - 1710300 0.0057030965 0.0022698021 0.0050322395 - 1710400 0.0040851978 0.0024006116 0.0043793793 - 1710500 0.0043368994 0.0023648035 0.0044654892 - 1710600 0.0039628908 0.0026275126 0.0045470379 - 1710700 0.0045596257 0.002624845 0.0048334137 - 1710800 0.0054981211 0.0024641204 0.0051272728 - 1710900 0.0047260981 0.0027794633 0.0050686671 - 1711000 0.0058680159 0.0024513809 0.0052937011 - 1711100 0.0067786629 0.002281516 0.0055649309 - 1711200 0.0052374864 0.002383307 0.0049202145 - 1711300 0.0040860612 0.0021987094 0.0041778953 - 1711400 0.0038821168 0.0020059996 0.0038863999 - 1711500 0.005284233 0.001894583 0.0044541333 - 1711600 0.0053296152 0.0018755714 0.0044571037 - 1711700 0.0044982215 0.0020946304 0.0042734565 - 1711800 0.0047158584 0.0027555824 0.0050398263 - 1711900 0.0040609087 0.0027589413 0.0047259439 - 1712000 0.0046444898 0.0029262011 0.0051758759 - 1712100 0.0070853606 0.0025466032 0.0059785747 - 1712200 0.0070912936 0.0027669404 0.0062017857 - 1712300 0.0051302538 0.0029759723 0.005460939 - 1712400 0.0046104587 0.0024141589 0.0046473498 - 1712500 0.0037223561 0.0023480942 0.0041511104 - 1712600 0.0041146425 0.0026345001 0.00462753 - 1712700 0.0052011162 0.0024548427 0.0049741333 - 1712800 0.0064340389 0.0023913174 0.005507805 - 1712900 0.0039103025 0.0025153739 0.0044094266 - 1713000 0.0053379156 0.0025648112 0.0051503641 - 1713100 0.0043918935 0.0023819064 0.0045092298 - 1713200 0.0041141332 0.0024938388 0.0044866221 - 1713300 0.0035377434 0.0028477668 0.0045613613 - 1713400 0.0070673561 0.0022939215 0.0057171721 - 1713500 0.0047353121 0.0020863917 0.0043800585 - 1713600 0.0044174609 0.0019242305 0.0040639381 - 1713700 0.006214727 0.0020682434 0.0050785018 - 1713800 0.0049480968 0.0020798042 0.0044765386 - 1713900 0.0044573343 0.0018929904 0.0040520117 - 1714000 0.0036758783 0.0018935487 0.0036740522 - 1714100 0.0056489752 0.0018911349 0.0046273573 - 1714200 0.0056387951 0.0021031358 0.0048344272 - 1714300 0.0051333895 0.0022898359 0.0047763214 - 1714400 0.0066184704 0.0026657881 0.0058716097 - 1714500 0.0060047552 0.002798812 0.0057073653 - 1714600 0.0030790864 0.0033786505 0.0048700829 - 1714700 0.0055882202 0.0029987457 0.0057055399 - 1714800 0.0046064049 0.0030002794 0.0052315068 - 1714900 0.0048321475 0.0029682094 0.0053087809 - 1715000 0.0046307025 0.0033160534 0.0055590499 - 1715100 0.0041746589 0.0033362842 0.0053583846 - 1715200 0.0065575089 0.0033180601 0.0064943535 - 1715300 0.0045515727 0.0034465794 0.0056512474 - 1715400 0.0067231296 0.0029496673 0.0062061832 - 1715500 0.0048676071 0.0028070931 0.0051648403 - 1715600 0.005348402 0.0026362027 0.0052268349 - 1715700 0.0062783752 0.0026437183 0.0056848063 - 1715800 0.0060313571 0.0026228276 0.0055442662 - 1715900 0.0044982124 0.0022982922 0.0044771138 - 1716000 0.0043762862 0.0017643304 0.0038840941 - 1716100 0.0048156881 0.0018469664 0.0041795654 - 1716200 0.0049822049 0.0019443363 0.0043575918 - 1716300 0.0049509203 0.0019530477 0.0043511497 - 1716400 0.005404445 0.0018474202 0.0044651983 - 1716500 0.0065618746 0.0022431782 0.0054215862 - 1716600 0.0051178307 0.0025324558 0.005011405 - 1716700 0.0056761741 0.0023988723 0.0051482691 - 1716800 0.004578517 0.0020811562 0.0042988753 - 1716900 0.0067851521 0.0020500894 0.0053366474 - 1717000 0.0053938144 0.0023926411 0.0050052699 - 1717100 0.0050020654 0.0018788266 0.004301702 - 1717200 0.0048194091 0.0019461555 0.0042805568 - 1717300 0.004462656 0.00219018 0.004351779 - 1717400 0.0052594949 0.0027239917 0.0052715596 - 1717500 0.0056153336 0.0026636038 0.005383531 - 1717600 0.0052858902 0.0022188323 0.0047791854 - 1717700 0.0043954568 0.0020541768 0.0041832261 - 1717800 0.0062352559 0.0020860453 0.0051062474 - 1717900 0.0050113496 0.0022271322 0.0046545046 - 1718000 0.006433185 0.0021509366 0.0052670106 - 1718100 0.0031906929 0.0022180625 0.0037635544 - 1718200 0.0059618979 0.0015992941 0.0044870884 - 1718300 0.0055904005 0.0015817365 0.0042895867 - 1718400 0.007518611 0.0017988331 0.0054406603 - 1718500 0.0057384505 0.0024225645 0.0052021265 - 1718600 0.0046866077 0.002515872 0.0047859476 - 1718700 0.0052410234 0.0021557094 0.0046943301 - 1718800 0.0062447189 0.0023346366 0.0053594223 - 1718900 0.0051114139 0.0022943734 0.0047702145 - 1719000 0.0053294249 0.0022131931 0.0047946333 - 1719100 0.0048139113 0.0024386867 0.004770425 - 1719200 0.0049053164 0.002342042 0.0047180546 - 1719300 0.0046716487 0.0025212784 0.0047841082 - 1719400 0.0039762069 0.0025179971 0.0044439723 - 1719500 0.0044830249 0.0024602814 0.0046317467 - 1719600 0.0043186533 0.0022705626 0.0043624103 - 1719700 0.0052318096 0.0023329716 0.0048671293 - 1719800 0.0066946871 0.0022724462 0.0055151853 - 1719900 0.0058827034 0.0025280772 0.0053775116 - 1720000 0.0039895886 0.0023200431 0.0042525001 - 1720100 0.0043891422 0.0018757418 0.0040017325 - 1720200 0.0037436855 0.0024320726 0.0042454202 - 1720300 0.0045782398 0.0025501001 0.004767685 - 1720400 0.0054109386 0.0021969348 0.0048178582 - 1720500 0.0035663983 0.0022775072 0.0040049814 - 1720600 0.0044209548 0.0024788686 0.0046202686 - 1720700 0.0057031048 0.0025338382 0.0052962795 - 1720800 0.0047130994 0.0024968535 0.0047797611 - 1720900 0.0037422862 0.0024986228 0.0043112926 - 1721000 0.0052451842 0.0024405518 0.0049811879 - 1721100 0.0055724093 0.0025706392 0.0052697749 - 1721200 0.0035752981 0.0027741261 0.0045059112 - 1721300 0.0050793959 0.0027162868 0.0051766192 - 1721400 0.0058888541 0.0029424959 0.0057949096 - 1721500 0.005425502 0.0028524083 0.0054803858 - 1721600 0.0062508973 0.0028811485 0.0059089269 - 1721700 0.006212506 0.0032301147 0.0062392973 - 1721800 0.0049214507 0.0032649751 0.0056488028 - 1721900 0.0039455307 0.0032204822 0.0051315986 - 1722000 0.0053372904 0.0027097048 0.0052949548 - 1722100 0.005807528 0.0022174199 0.0050304413 - 1722200 0.0058867137 0.0027049408 0.0055563178 - 1722300 0.0045479402 0.0030238012 0.0052267098 - 1722400 0.0054720906 0.0034046023 0.0060551462 - 1722500 0.0043120742 0.0033536195 0.0054422805 - 1722600 0.0039899437 0.0034237158 0.0053563447 - 1722700 0.0057641599 0.0033070821 0.0060990971 - 1722800 0.0047170262 0.0033422137 0.0056270233 - 1722900 0.0056971578 0.0032033124 0.0059628732 - 1723000 0.0043972592 0.0029657644 0.0050956868 - 1723100 0.0042240361 0.0031639539 0.0052099713 - 1723200 0.0048796733 0.0031633643 0.005526956 - 1723300 0.0042558943 0.0026627485 0.0047241973 - 1723400 0.005520903 0.0024027988 0.0050769862 - 1723500 0.0043366714 0.0028786853 0.0049792605 - 1723600 0.0051168869 0.0035168842 0.0059953763 - 1723700 0.0044207572 0.0029525602 0.0050938645 - 1723800 0.0052503344 0.002839718 0.0053828487 - 1723900 0.0072463226 0.0031380267 0.0066479642 - 1724000 0.0054770013 0.0035031784 0.0061561009 - 1724100 0.0042614019 0.0030331305 0.0050972471 - 1724200 0.0043577083 0.0024221973 0.0045329623 - 1724300 0.0051991517 0.0023741116 0.0048924507 - 1724400 0.0055883274 0.0025234336 0.0052302797 - 1724500 0.0065328327 0.0021946966 0.0053590375 - 1724600 0.0059541045 0.0020283983 0.0049124176 - 1724700 0.0058108572 0.0026045802 0.0054192142 - 1724800 0.0048355184 0.0028391677 0.0051813719 - 1724900 0.0045189661 0.0031137516 0.0053026258 - 1725000 0.0052326677 0.0032019723 0.0057365458 - 1725100 0.0053213271 0.0027898061 0.005367324 - 1725200 0.0052778925 0.0026210101 0.0051774893 - 1725300 0.0069296837 0.0029057719 0.0062623374 - 1725400 0.0054396855 0.0031629732 0.0057978208 - 1725500 0.0049085807 0.0031713054 0.0055488992 - 1725600 0.004741848 0.0028387265 0.0051355591 - 1725700 0.0039514598 0.0027266892 0.0046406776 - 1725800 0.005087878 0.0025072005 0.0049716414 - 1725900 0.005606143 0.0023616003 0.0050770758 - 1726000 0.0054373355 0.0026404986 0.005274208 - 1726100 0.0048784219 0.0026220074 0.004984993 - 1726200 0.0051643589 0.0024150674 0.0049165537 - 1726300 0.0055199005 0.0024426962 0.005116398 - 1726400 0.0059238258 0.0025140805 0.0053834336 - 1726500 0.0060611909 0.0024011478 0.0053370372 - 1726600 0.0047572702 0.002340689 0.0046449918 - 1726700 0.0051008582 0.0021882901 0.0046590183 - 1726800 0.003864428 0.0024583189 0.0043301512 - 1726900 0.0062448477 0.0022809602 0.0053058083 - 1727000 0.0054794859 0.0023622989 0.0050164249 - 1727100 0.0050091863 0.0024577831 0.0048841078 - 1727200 0.0054423594 0.002772386 0.0054085289 - 1727300 0.0047285653 0.0031395394 0.0054299382 - 1727400 0.0059209339 0.0025864915 0.0054544439 - 1727500 0.0057485627 0.0022101168 0.0049945768 - 1727600 0.0050710532 0.0026989189 0.0051552103 - 1727700 0.0043521472 0.0032261846 0.0053342559 - 1727800 0.0042031374 0.0038153686 0.0058512633 - 1727900 0.0051773558 0.0037449495 0.0062527312 - 1728000 0.0050651166 0.003363139 0.0058165549 - 1728100 0.0063862113 0.0026769432 0.0057702643 - 1728200 0.0056077777 0.0023633992 0.0050796665 - 1728300 0.0049241961 0.0023358505 0.004721008 - 1728400 0.0039462681 0.0027304114 0.004641885 - 1728500 0.0058177446 0.0026354122 0.0054533823 - 1728600 0.0034391425 0.0024941065 0.0041599411 - 1728700 0.0044696648 0.0021830253 0.0043480192 - 1728800 0.005252547 0.0020954875 0.00463969 - 1728900 0.0048589901 0.0024723949 0.0048259682 - 1729000 0.0060168853 0.0027525474 0.0056669762 - 1729100 0.0037641116 0.0027132143 0.0045364559 - 1729200 0.0050024007 0.0023786015 0.0048016393 - 1729300 0.0056958542 0.0018014237 0.0045603531 - 1729400 0.0056703537 0.0015483738 0.0042949514 - 1729500 0.0052308066 0.0019259366 0.0044596086 - 1729600 0.0044541623 0.0022836024 0.0044410872 - 1729700 0.003680431 0.002342922 0.0041256308 - 1729800 0.0035445482 0.0019767045 0.0036935951 - 1729900 0.0058187938 0.001635036 0.0044535142 - 1730000 0.0054830788 0.002032577 0.0046884433 - 1730100 0.0050635837 0.0026482624 0.0051009358 - 1730200 0.0050729389 0.0029584959 0.0054157006 - 1730300 0.0072848201 0.0029183722 0.0064469569 - 1730400 0.0068022532 0.0030796447 0.0063744861 - 1730500 0.0037254587 0.00328594 0.0050904591 - 1730600 0.0055008246 0.002819862 0.0054843239 - 1730700 0.0039438316 0.0025601518 0.0044704452 - 1730800 0.0042745461 0.002390096 0.0044605792 - 1730900 0.0048998885 0.0022593902 0.0046327737 - 1731000 0.0046618221 0.0022064825 0.0044645526 - 1731100 0.0045758738 0.0022094804 0.0044259192 - 1731200 0.0054697988 0.0021162293 0.0047656631 - 1731300 0.0055104587 0.0026563715 0.0053255 - 1731400 0.0049513246 0.0026593119 0.0050576098 - 1731500 0.0051519284 0.0027212787 0.005216744 - 1731600 0.0059220373 0.0028867846 0.0057552714 - 1731700 0.005015988 0.0027790302 0.0052086494 - 1731800 0.0066149447 0.0023096429 0.0055137567 - 1731900 0.0053663416 0.0024409337 0.0050402554 - 1732000 0.0042174638 0.0027978293 0.0048406634 - 1732100 0.0058469071 0.0026030488 0.0054351445 - 1732200 0.0065262948 0.0024695042 0.0056306782 - 1732300 0.005912915 0.0025921061 0.0054561743 - 1732400 0.0053890573 0.0028277873 0.0054381119 - 1732500 0.0054207713 0.0022297704 0.0048554565 - 1732600 0.0045504261 0.0022605925 0.0044647052 - 1732700 0.0041108803 0.0024149924 0.0044062 - 1732800 0.0057871476 0.0025863984 0.005389548 - 1732900 0.0054156614 0.0023044754 0.0049276864 - 1733000 0.0049320508 0.0021982371 0.0045871991 - 1733100 0.005646787 0.0023427814 0.0050779439 - 1733200 0.0067816597 0.0025596194 0.0058444858 - 1733300 0.005835626 0.0028620027 0.005688634 - 1733400 0.005517103 0.0025419716 0.0052143184 - 1733500 0.0047662079 0.0024765892 0.0047852211 - 1733600 0.0057261405 0.0023095493 0.0050831486 - 1733700 0.0063950819 0.001883593 0.0049812108 - 1733800 0.0047749193 0.0017781318 0.0040909833 - 1733900 0.0057336104 0.002091474 0.0048686916 - 1734000 0.0059317649 0.002551493 0.0054246916 - 1734100 0.0051243122 0.0028676163 0.0053497051 - 1734200 0.004400347 0.0031475932 0.0052790113 - 1734300 0.005360607 0.0029090427 0.0055055867 - 1734400 0.0068878824 0.0026489317 0.0059852497 - 1734500 0.005099337 0.0026840051 0.0051539965 - 1734600 0.0048526033 0.0028659719 0.0052164517 - 1734700 0.0038276018 0.0031484145 0.0050024091 - 1734800 0.0060487652 0.0027164336 0.0056463043 - 1734900 0.0063096194 0.002320614 0.005376836 - 1735000 0.0053885886 0.0021161976 0.0047262952 - 1735100 0.004732009 0.0021988977 0.0044909645 - 1735200 0.0059961776 0.002175547 0.0050799456 - 1735300 0.006295824 0.0025758372 0.005625377 - 1735400 0.005805814 0.0026114738 0.0054236649 - 1735500 0.0064778294 0.0028612729 0.0059989715 - 1735600 0.0054357519 0.0036945892 0.0063275315 - 1735700 0.0046450555 0.0033849831 0.0056349318 - 1735800 0.0031720259 0.0030313018 0.0045677519 - 1735900 0.0058390097 0.0027460987 0.005574369 - 1736000 0.0037811592 0.0025645001 0.0043959991 - 1736100 0.0046851524 0.0023545481 0.0046239189 - 1736200 0.0034983725 0.0023382377 0.0040327619 - 1736300 0.0058303489 0.0019393258 0.004763401 - 1736400 0.005189731 0.0018510839 0.0043648599 - 1736500 0.0048414232 0.0020340178 0.0043790822 - 1736600 0.0045478801 0.0021659472 0.0043688267 - 1736700 0.0044765664 0.0022710857 0.0044394225 - 1736800 0.0039989192 0.0022252823 0.0041622588 - 1736900 0.0050905045 0.00269379 0.0051595031 - 1737000 0.0039474109 0.0029975155 0.0049095426 - 1737100 0.0055620625 0.0023939834 0.0050881074 - 1737200 0.0057942835 0.0022977667 0.0051043728 - 1737300 0.0051538986 0.0026275556 0.0051239752 - 1737400 0.0048696572 0.0026940309 0.0050527711 - 1737500 0.0047847391 0.0025377319 0.0048553399 - 1737600 0.0048975344 0.0020295456 0.0044017888 - 1737700 0.0057893279 0.0019884191 0.0047926248 - 1737800 0.0048362692 0.0024262807 0.0047688486 - 1737900 0.0041363774 0.0028045247 0.0048080825 - 1738000 0.0049876734 0.0025846737 0.005000578 - 1738100 0.005152977 0.0021813444 0.0046773177 - 1738200 0.0039038002 0.0020475184 0.0039384216 - 1738300 0.0044804217 0.0022440428 0.0044142471 - 1738400 0.0052544517 0.0020102751 0.0045554002 - 1738500 0.0061693548 0.0018332096 0.0048214908 - 1738600 0.004124845 0.0022940007 0.0042919725 - 1738700 0.0049896684 0.002320081 0.0047369517 - 1738800 0.0055108264 0.0020358958 0.0047052024 - 1738900 0.0046429714 0.00233662 0.0045855593 - 1739000 0.0046148838 0.0022874765 0.0045228108 - 1739100 0.0056652483 0.0022750601 0.0050191648 - 1739200 0.0050688358 0.0020795018 0.0045347192 - 1739300 0.0053356442 0.0022655514 0.004850004 - 1739400 0.0049855427 0.0027838297 0.0051987019 - 1739500 0.0055345069 0.0031100791 0.0057908559 - 1739600 0.0044601075 0.0028232451 0.0049836097 - 1739700 0.0046116827 0.0025698277 0.0048036115 - 1739800 0.0056393193 0.0028554241 0.0055869694 - 1739900 0.0057610763 0.0027186415 0.0055091628 - 1740000 0.0041441549 0.0022509839 0.0042583089 - 1740100 0.0063718211 0.0021177705 0.0052041213 - 1740200 0.0041829076 0.0025020284 0.0045281243 - 1740300 0.003778859 0.0027873811 0.0046177659 - 1740400 0.0061037003 0.0021157174 0.0050721972 - 1740500 0.0059900681 0.0014310699 0.0043325092 - 1740600 0.0050836353 0.0013524356 0.0038148215 - 1740700 0.0059409694 0.0015518032 0.0044294603 - 1740800 0.004622956 0.0016134569 0.0038527012 - 1740900 0.005818961 0.0020679528 0.0048865121 - 1741000 0.0060804704 0.0021213563 0.0050665842 - 1741100 0.0055174041 0.0022750248 0.0049475174 - 1741200 0.0036452225 0.0026966411 0.0044622958 - 1741300 0.0037640062 0.0026854833 0.0045086738 - 1741400 0.0067500334 0.0018453586 0.005114906 - 1741500 0.0040947605 0.001944766 0.0039281656 - 1741600 0.0036036773 0.0021347868 0.0038803179 - 1741700 0.0056297968 0.0019220741 0.0046490069 - 1741800 0.0055786267 0.0020441281 0.0047462754 - 1741900 0.0034958432 0.0022584051 0.0039517041 - 1742000 0.0060024735 0.0022870484 0.0051944965 - 1742100 0.0055844647 0.0022377165 0.0049426916 - 1742200 0.0047052813 0.0020838146 0.0043629352 - 1742300 0.0054433462 0.00186912 0.0045057408 - 1742400 0.0044093475 0.0019951129 0.0041308906 - 1742500 0.0037928966 0.0021895512 0.0040267355 - 1742600 0.0059471122 0.0022864891 0.0051671216 - 1742700 0.004561805 0.0021836092 0.0043932335 - 1742800 0.005023107 0.0019914996 0.004424567 - 1742900 0.0037629664 0.0021444734 0.0039671602 - 1743000 0.0041214351 0.0019152222 0.0039115423 - 1743100 0.0043606092 0.001996273 0.0041084431 - 1743200 0.0045800093 0.0021475658 0.0043660078 - 1743300 0.005929807 0.0017770545 0.0046493048 - 1743400 0.0048023735 0.001632658 0.0039588076 - 1743500 0.0059172326 0.0018122343 0.0046783939 - 1743600 0.0047762813 0.0022741379 0.0045876491 - 1743700 0.0056136377 0.0020215978 0.0047407036 - 1743800 0.0058828994 0.0014774067 0.0043269361 - 1743900 0.0056188514 0.0016479642 0.0043695954 - 1744000 0.0069335159 0.0023564261 0.0057148479 - 1744100 0.0043247402 0.0023690165 0.0044638125 - 1744200 0.0051701192 0.0021193128 0.0046235893 - 1744300 0.0052669276 0.002049027 0.0046001951 - 1744400 0.0057755358 0.0022660567 0.0050635819 - 1744500 0.0068869471 0.0019263329 0.0052621979 - 1744600 0.003970072 0.0023832976 0.0043063012 - 1744700 0.0052293256 0.0025410232 0.0050739778 - 1744800 0.0053224767 0.0029426217 0.0055206963 - 1744900 0.0039557004 0.0033297261 0.0052457685 - 1745000 0.0045170846 0.0034127598 0.0056007226 - 1745100 0.0050671163 0.0033395938 0.0057939783 - 1745200 0.0056834446 0.0024621668 0.0052150853 - 1745300 0.0044025679 0.0018693986 0.0040018925 - 1745400 0.0053085791 0.0017183416 0.0042896846 - 1745500 0.0037862428 0.001913941 0.0037479023 - 1745600 0.0040464438 0.0021261749 0.0040861712 - 1745700 0.005087493 0.0021309063 0.0045951607 - 1745800 0.0042653112 0.0023213329 0.004387343 - 1745900 0.0048995922 0.0020789667 0.0044522067 - 1746000 0.0052304947 0.0017156651 0.004249186 - 1746100 0.0041607844 0.0021074055 0.0041227854 - 1746200 0.005458065 0.0020561375 0.0046998878 - 1746300 0.0048127731 0.001983398 0.004314585 - 1746400 0.0038096618 0.0021120408 0.0039573458 - 1746500 0.0057017051 0.0019405974 0.0047023608 - 1746600 0.0047474372 0.0018981587 0.0041976986 - 1746700 0.0051174989 0.0025482266 0.0050270152 - 1746800 0.0055723622 0.0030906163 0.0057897293 - 1746900 0.0062126832 0.0025580433 0.0055673117 - 1747000 0.0076343297 0.002046077 0.0057439555 - 1747100 0.0068464404 0.00189538 0.0052116246 - 1747200 0.0048095404 0.0023162136 0.0046458347 - 1747300 0.0054084 0.0018998918 0.0045195855 - 1747400 0.0037292916 0.0019674262 0.0037738018 - 1747500 0.0046616301 0.0024144239 0.004672401 - 1747600 0.0055773085 0.0029831269 0.0056846357 - 1747700 0.0057405012 0.0028568019 0.0056373572 - 1747800 0.0053346718 0.0032635379 0.0058475196 - 1747900 0.004764428 0.0030162028 0.0053239726 - 1748000 0.004600755 0.0025887871 0.0048172778 - 1748100 0.0055574242 0.0024868052 0.0051786825 - 1748200 0.0041941894 0.0028054089 0.0048369694 - 1748300 0.0052222096 0.0024609425 0.0049904502 - 1748400 0.0052719308 0.0026960292 0.0052496207 - 1748500 0.0049784623 0.0026399012 0.0050513439 - 1748600 0.0044706516 0.0022298669 0.0043953387 - 1748700 0.0065311555 0.0023549668 0.0055184953 - 1748800 0.006375288 0.0022570724 0.0053451025 - 1748900 0.0052865623 0.002758453 0.0053191316 - 1749000 0.0040745392 0.0028613902 0.0048349951 - 1749100 0.004948874 0.0028675516 0.0052646624 - 1749200 0.0053088268 0.0028838042 0.0054552672 - 1749300 0.00489567 0.0028736314 0.0052449716 - 1749400 0.0052090975 0.0029320523 0.0054552089 - 1749500 0.007484973 0.0023041125 0.0059296463 - 1749600 0.004374995 0.0024079303 0.0045270685 - 1749700 0.0048299557 0.0020166188 0.0043561286 - 1749800 0.0052771575 0.0017493598 0.0043054829 - 1749900 0.005061026 0.0017576068 0.0042090413 - 1750000 0.0037004873 0.0019395724 0.0037319959 - 1750100 0.0039019406 0.0018811299 0.0037711324 - 1750200 0.0057549197 0.0019623688 0.004749908 - 1750300 0.0066752169 0.0023040241 0.0055373323 - 1750400 0.0052953605 0.0026860758 0.005251016 - 1750500 0.0036997421 0.0033532161 0.0051452787 - 1750600 0.0055894148 0.0032920537 0.0059994265 - 1750700 0.0072110328 0.0026647171 0.0061575611 - 1750800 0.0051382476 0.002760163 0.0052490016 - 1750900 0.0054360561 0.0024858525 0.0051189422 - 1751000 0.0055353842 0.002640353 0.0053215547 - 1751100 0.0056300453 0.0026261803 0.0053532335 - 1751200 0.003667748 0.0027771921 0.0045537576 - 1751300 0.0038318724 0.002593969 0.0044500322 - 1751400 0.0040565835 0.0030453833 0.0050102909 - 1751500 0.0051136385 0.0029510642 0.0054279829 - 1751600 0.0057553874 0.0026041898 0.0053919555 - 1751700 0.0039339117 0.0026424 0.0045478885 - 1751800 0.0044821157 0.0023977291 0.0045687539 - 1751900 0.0048564834 0.0024451759 0.004797535 - 1752000 0.0057608676 0.0028355191 0.0056259393 - 1752100 0.0044769937 0.0027307674 0.0048993112 - 1752200 0.0036795176 0.002562308 0.0043445743 - 1752300 0.0048702572 0.0025269973 0.0048860282 - 1752400 0.004856363 0.0026175864 0.0049698873 - 1752500 0.005421819 0.002855661 0.0054818546 - 1752600 0.0048491186 0.0027612361 0.005110028 - 1752700 0.0051857484 0.0028221558 0.0053340026 - 1752800 0.0053610268 0.0026457975 0.0052425449 - 1752900 0.0039977073 0.0027428813 0.0046792708 - 1753000 0.0065548922 0.0026345971 0.005809623 - 1753100 0.0069755128 0.0027416857 0.0061204497 - 1753200 0.0065503483 0.0028482681 0.0060210931 - 1753300 0.0048068927 0.0025866046 0.0049149433 - 1753400 0.0034993797 0.0025018195 0.0041968316 - 1753500 0.0056137083 0.0025632188 0.0052823587 - 1753600 0.0066701644 0.0030686517 0.0062995125 - 1753700 0.0051195875 0.0029283343 0.0054081345 - 1753800 0.004861754 0.0027391813 0.0050940934 - 1753900 0.0060879641 0.0026551777 0.0056040354 - 1754000 0.005614109 0.0026399483 0.0053592823 - 1754100 0.0045334964 0.0024935474 0.0046894597 - 1754200 0.0054466519 0.0023018231 0.0049400451 - 1754300 0.0031924728 0.0025888855 0.0041352395 - 1754400 0.0049257609 0.002389492 0.0047754074 - 1754500 0.0048819499 0.0026318205 0.004996515 - 1754600 0.0041298967 0.0030238884 0.0050243072 - 1754700 0.0047060078 0.002897246 0.0051767185 - 1754800 0.0067483189 0.0025758437 0.0058445607 - 1754900 0.0046319285 0.0024877318 0.0047313222 - 1755000 0.0064309461 0.0026912977 0.0058062873 - 1755100 0.0063932274 0.0024243139 0.0055210334 - 1755200 0.0052883302 0.0023621441 0.004923679 - 1755300 0.0054592503 0.0023610806 0.0050054049 - 1755400 0.0044399284 0.002293562 0.0044441523 - 1755500 0.0052339361 0.0021584162 0.004693604 - 1755600 0.0048560074 0.0021904854 0.004542614 - 1755700 0.0058573511 0.0018426952 0.0046798497 - 1755800 0.0046095833 0.0017633178 0.0039960847 - 1755900 0.0054356898 0.0018694989 0.0045024111 - 1756000 0.004513965 0.0021108008 0.0042972526 - 1756100 0.0052779082 0.0021304724 0.0046869592 - 1756200 0.0038975911 0.0024121689 0.0043000646 - 1756300 0.0050505672 0.002061538 0.0045079065 - 1756400 0.0036981094 0.0022033478 0.0039946195 - 1756500 0.0045244793 0.0025282263 0.004719771 - 1756600 0.0040756481 0.0025421677 0.0045163097 - 1756700 0.0052700879 0.0021803224 0.0047330212 - 1756800 0.007796999 0.0019657416 0.005742413 - 1756900 0.0052629005 0.0024518841 0.0050011015 - 1757000 0.0046369182 0.0028297712 0.0050757785 - 1757100 0.0058078059 0.0023428292 0.0051559852 - 1757200 0.0049127132 0.0019633376 0.0043429331 - 1757300 0.0042720455 0.0020232255 0.0040924975 - 1757400 0.003419884 0.0025959295 0.0042524359 - 1757500 0.0039326699 0.0029808192 0.0048857062 - 1757600 0.0063878088 0.002873339 0.0059674338 - 1757700 0.0056540715 0.0025655075 0.0053041984 - 1757800 0.0050744129 0.0025898882 0.0050478069 - 1757900 0.0069279625 0.0027319535 0.0060876853 - 1758000 0.0058346224 0.0026574842 0.0054836294 - 1758100 0.0049811589 0.0025222139 0.0049349628 - 1758200 0.0047421511 0.0023578443 0.0046548238 - 1758300 0.0047033164 0.0020701523 0.0043483211 - 1758400 0.0045835601 0.0019655011 0.004185663 - 1758500 0.0046979593 0.0020159534 0.0042915274 - 1758600 0.0042124764 0.0021659897 0.0042064079 - 1758700 0.0052617443 0.0019289318 0.0044775892 - 1758800 0.0046484055 0.0021612705 0.0044128419 - 1758900 0.0078673598 0.0026041625 0.006414915 - 1759000 0.0045318562 0.0035705356 0.0057656534 - 1759100 0.0066427579 0.0026687611 0.005886347 - 1759200 0.0054241883 0.0023476053 0.0049749466 - 1759300 0.0037449 0.0021156971 0.003929633 - 1759400 0.0053582685 0.0018310809 0.0044264922 - 1759500 0.0055506459 0.0017695043 0.0044580984 - 1759600 0.0051812282 0.0021545027 0.0046641601 - 1759700 0.0057611963 0.0023140151 0.0051045945 - 1759800 0.004881094 0.0025651592 0.0049294391 - 1759900 0.0067436035 0.0021701065 0.0054365395 - 1760000 0.005976955 0.0022204213 0.0051155089 - 1760100 0.0059195408 0.0020057335 0.004873011 - 1760200 0.0059667958 0.0022649235 0.0051550902 - 1760300 0.0054079734 0.0023306227 0.0049501098 - 1760400 0.0049209745 0.0019462132 0.0043298102 - 1760500 0.0050255653 0.0021150055 0.0045492637 - 1760600 0.005239503 0.0021394344 0.0046773187 - 1760700 0.0063428919 0.002456977 0.0055293153 - 1760800 0.0050527209 0.0024777978 0.0049252095 - 1760900 0.0059130121 0.0025581804 0.0054222956 - 1761000 0.005953423 0.0023195454 0.0052032347 - 1761100 0.0045463271 0.002366277 0.0045684042 - 1761200 0.0047995894 0.0029343213 0.0052591224 - 1761300 0.0034926964 0.0033588576 0.0050506324 - 1761400 0.0055190612 0.0030128716 0.0056861669 - 1761500 0.005654794 0.0028475325 0.0055865734 - 1761600 0.0041960933 0.0031608643 0.005193347 - 1761700 0.0047864138 0.0031064815 0.0054249007 - 1761800 0.0052319875 0.0030547064 0.0055889504 - 1761900 0.0049687059 0.0028908117 0.0052975287 - 1762000 0.0042068104 0.0026896011 0.0047272749 - 1762100 0.0041817055 0.0023297222 0.0043552358 - 1762200 0.0062132894 0.0023242546 0.0053338166 - 1762300 0.0044240361 0.0026548768 0.0047977693 - 1762400 0.0050999488 0.0029637082 0.0054339959 - 1762500 0.0039216849 0.0027595641 0.0046591302 - 1762600 0.0041569867 0.002911193 0.0049247334 - 1762700 0.0041437392 0.0029964208 0.0050035444 - 1762800 0.0063516673 0.0028213474 0.0058979363 - 1762900 0.0059914693 0.0032020578 0.0061041757 - 1763000 0.0056223222 0.0031209309 0.0058442432 - 1763100 0.0062838262 0.0031093313 0.0061530596 - 1763200 0.0058228767 0.0028744931 0.005694949 - 1763300 0.0067916954 0.0024058355 0.005695563 - 1763400 0.0062490954 0.0029665559 0.0059934615 - 1763500 0.0041273419 0.0035568507 0.0055560319 - 1763600 0.0040845171 0.0031507056 0.0051291436 - 1763700 0.0049509946 0.0024303971 0.0048285351 - 1763800 0.0047749683 0.0024985705 0.0048114458 - 1763900 0.0050915357 0.0027343022 0.0052005148 - 1764000 0.005099525 0.0029683622 0.0054384446 - 1764100 0.00494449 0.0032298905 0.0056248779 - 1764200 0.0036399111 0.0033071952 0.0050702771 - 1764300 0.0055329568 0.0030109296 0.0056909555 - 1764400 0.0050982058 0.0028488798 0.0053183232 - 1764500 0.0056162611 0.002707689 0.0054280655 - 1764600 0.0061687529 0.0023010648 0.0052890544 - 1764700 0.0075445017 0.0024447451 0.0060991131 - 1764800 0.0037381658 0.0034373136 0.0052479876 - 1764900 0.0043042014 0.003479701 0.0055645486 - 1765000 0.0052021414 0.0031467644 0.0056665516 - 1765100 0.0046773613 0.0029567829 0.0052223797 - 1765200 0.0048051699 0.0022340127 0.0045615169 - 1765300 0.0070107159 0.0023721826 0.0057679981 - 1765400 0.0044538081 0.0025344222 0.0046917355 - 1765500 0.0049428911 0.0025755385 0.0049697514 - 1765600 0.0070980777 0.0026202044 0.0060583357 - 1765700 0.0073802038 0.0026085692 0.0061833554 - 1765800 0.0068289049 0.0023127504 0.0056205012 - 1765900 0.0061575527 0.0023281079 0.0053106725 - 1766000 0.0058703435 0.002269321 0.0051127687 - 1766100 0.0039734529 0.0023200114 0.0042446527 - 1766200 0.0062365667 0.0022703678 0.0052912048 - 1766300 0.0041362607 0.0022770093 0.0042805106 - 1766400 0.0042832303 0.001948576 0.0040232657 - 1766500 0.0034818437 0.0020043932 0.0036909112 - 1766600 0.0055520846 0.0020590575 0.0047483485 - 1766700 0.004768124 0.0021698671 0.0044794271 - 1766800 0.0046022818 0.0024400476 0.0046692778 - 1766900 0.0049335094 0.0020637839 0.0044534525 - 1767000 0.0050887024 0.0022794432 0.0047442835 - 1767100 0.0070456257 0.001999528 0.0054122529 - 1767200 0.0039431209 0.0020346708 0.00394462 - 1767300 0.006060991 0.0017611073 0.0046968998 - 1767400 0.004942166 0.0011650154 0.0035588771 - 1767500 0.0061968624 0.0014010857 0.0044026909 - 1767600 0.0053001824 0.0021327381 0.004700014 - 1767700 0.0056365512 0.0021436072 0.0048738117 - 1767800 0.0049292817 0.0020369055 0.0044245263 - 1767900 0.0054942602 0.0017790458 0.0044403281 - 1768000 0.0044413549 0.0019089748 0.004060256 - 1768100 0.0041171976 0.0019619598 0.0039562274 - 1768200 0.0051532192 0.0020866915 0.0045827821 - 1768300 0.00540962 0.0017068329 0.0043271176 - 1768400 0.004637486 0.002023892 0.0042701743 - 1768500 0.0059954728 0.0024646567 0.0053687139 - 1768600 0.0049857929 0.0026947906 0.005109784 - 1768700 0.0069594593 0.0022641161 0.0056351042 - 1768800 0.0043195655 0.0029146745 0.005006964 - 1768900 0.0058878925 0.0030157024 0.0058676503 - 1769000 0.0044247149 0.0030849147 0.005228136 - 1769100 0.0039641138 0.0026169827 0.0045371004 - 1769200 0.0047600495 0.0027454751 0.005051124 - 1769300 0.0062668089 0.0028124258 0.0058479114 - 1769400 0.0070330759 0.0024992722 0.0059059184 - 1769500 0.0039414672 0.00235156 0.0042607081 - 1769600 0.0041663704 0.0021441195 0.0041622051 - 1769700 0.0041008427 0.0021179691 0.0041043148 - 1769800 0.0046494603 0.0028075074 0.0050595898 - 1769900 0.0040035734 0.0028040965 0.0047433274 - 1770000 0.0052879955 0.0025583242 0.005119697 - 1770100 0.0059658915 0.0029483714 0.0058381001 - 1770200 0.0053206482 0.002630979 0.005208168 - 1770300 0.0047782201 0.0024430203 0.0047574706 - 1770400 0.0046648697 0.0024594497 0.004718996 - 1770500 0.0058717048 0.0029522005 0.0057963075 - 1770600 0.0052836672 0.0034222023 0.0059814786 - 1770700 0.0050213661 0.0030500653 0.0054822895 - 1770800 0.005046267 0.0029955153 0.0054398009 - 1770900 0.006535858 0.0028813089 0.0060471152 - 1771000 0.0043297584 0.0031702816 0.0052675083 - 1771100 0.0069121227 0.0028095902 0.0061576496 - 1771200 0.0054118229 0.0027656744 0.0053870261 - 1771300 0.0054304962 0.0027932874 0.005423684 - 1771400 0.0049106206 0.0027707881 0.00514937 - 1771500 0.004709263 0.0027984688 0.005079518 - 1771600 0.0058636818 0.0027542651 0.0055944859 - 1771700 0.0049313557 0.0028024238 0.0051910492 - 1771800 0.0056302853 0.0025530154 0.0052801848 - 1771900 0.0056813159 0.0025072363 0.0052591237 - 1772000 0.0041414825 0.0026546109 0.0046606415 - 1772100 0.0059915532 0.0022388327 0.0051409913 - 1772200 0.0039532822 0.0020175836 0.0039324546 - 1772300 0.0040550051 0.002151522 0.0041156651 - 1772400 0.005026508 0.0023134491 0.0047481639 - 1772500 0.0041907802 0.0020051436 0.0040350528 - 1772600 0.0055715364 0.0016145022 0.0043132151 - 1772700 0.00475751 0.0019032465 0.0042076654 - 1772800 0.0046233614 0.002562031 0.0048014717 - 1772900 0.0051033219 0.0027183469 0.0051902685 - 1773000 0.0043033664 0.0027488046 0.0048332477 - 1773100 0.0041261941 0.0026719993 0.0046706246 - 1773200 0.0055367649 0.0024010905 0.005082961 - 1773300 0.0063053071 0.002264626 0.0053187591 - 1773400 0.0055145155 0.0026401213 0.0053112147 - 1773500 0.0047128666 0.0028636253 0.00514642 - 1773600 0.0046224858 0.0026674483 0.0049064649 - 1773700 0.0049406786 0.0023764833 0.0047696245 - 1773800 0.0057128917 0.0021450384 0.0049122204 - 1773900 0.0072231111 0.0017939058 0.0052926002 - 1774000 0.0045318521 0.0021342937 0.0043294095 - 1774100 0.005184319 0.0020863042 0.0045974587 - 1774200 0.0054152597 0.0019718726 0.004594889 - 1774300 0.0047100161 0.0015172904 0.0037987044 - 1774400 0.0064640867 0.0014542566 0.0045852986 - 1774500 0.005457699 0.0020586972 0.0047022702 - 1774600 0.0056429213 0.0019895532 0.0047228433 - 1774700 0.0055562919 0.002199473 0.0048908019 - 1774800 0.0042853062 0.0027801308 0.004855826 - 1774900 0.0056753382 0.0028298412 0.0055788332 - 1775000 0.0041491834 0.0028824228 0.0048921835 - 1775100 0.0044263042 0.0028346588 0.0049786499 - 1775200 0.0062162459 0.0030111743 0.0060221684 - 1775300 0.0032758586 0.0029474304 0.0045341744 - 1775400 0.0062186063 0.002428581 0.0054407185 - 1775500 0.008083118 0.0023108139 0.0062260742 - 1775600 0.005044522 0.00276241 0.0052058503 - 1775700 0.0061917699 0.0025752404 0.005574379 - 1775800 0.005436902 0.0025629638 0.0051964632 - 1775900 0.0052107725 0.0022943512 0.0048183191 - 1776000 0.0048002158 0.0023079589 0.0046330634 - 1776100 0.0042517568 0.0022336587 0.0042931034 - 1776200 0.0051796352 0.002334791 0.0048436767 - 1776300 0.0054689438 0.0026472787 0.0052962984 - 1776400 0.0057646577 0.0027818278 0.0055740839 - 1776500 0.0051487719 0.0028773371 0.0053712735 - 1776600 0.0046966797 0.0029984632 0.0052734174 - 1776700 0.0056431189 0.0028159659 0.0055493516 - 1776800 0.0060841333 0.0024928572 0.0054398592 - 1776900 0.0050387419 0.0025653569 0.0050059975 - 1777000 0.004133348 0.0027496261 0.0047517165 - 1777100 0.0034824379 0.0028701346 0.0045569405 - 1777200 0.0056669654 0.0024202526 0.005165189 - 1777300 0.0053167609 0.0021988499 0.004774156 - 1777400 0.00423367 0.0022725353 0.0043232192 - 1777500 0.0040303219 0.0024733917 0.0044255788 - 1777600 0.0064496214 0.0020519986 0.005176034 - 1777700 0.0063403776 0.002386448 0.0054575684 - 1777800 0.0046827579 0.0027630417 0.0050312525 - 1777900 0.0057966006 0.0032707838 0.0060785122 - 1778000 0.0045346785 0.0031800774 0.0053765623 - 1778100 0.0058746151 0.0026079301 0.0054534468 - 1778200 0.0059956139 0.0025130779 0.0054172034 - 1778300 0.0039882398 0.0028642641 0.0047960677 - 1778400 0.0045690896 0.0029340009 0.0051471537 - 1778500 0.004366462 0.0030673179 0.0051823229 - 1778600 0.0048759057 0.0031130594 0.0054748263 - 1778700 0.0049014396 0.0028731663 0.0052473012 - 1778800 0.0043710454 0.002503632 0.0046208571 - 1778900 0.003460751 0.0022942317 0.0039705329 - 1779000 0.0055795145 0.0023141332 0.0050167105 - 1779100 0.0060540073 0.0029305955 0.0058630053 - 1779200 0.0035496744 0.0035989623 0.0053183358 - 1779300 0.0050331106 0.0029468239 0.0053847369 - 1779400 0.0060757557 0.0027211616 0.0056641057 - 1779500 0.003939529 0.0025313243 0.0044395336 - 1779600 0.0038423086 0.0026495168 0.004510635 - 1779700 0.0036231179 0.0031040485 0.0048589962 - 1779800 0.0049035489 0.0026063593 0.0049815158 - 1779900 0.0061880428 0.0025777767 0.0055751099 - 1780000 0.0047220657 0.0026709975 0.0049582481 - 1780100 0.0046986336 0.0024090907 0.0046849914 - 1780200 0.0059312602 0.0021832444 0.0050561986 - 1780300 0.0058611467 0.0022504265 0.0050894195 - 1780400 0.0058653585 0.0025438301 0.0053848631 - 1780500 0.0043100974 0.0031741434 0.0052618468 - 1780600 0.0049256165 0.0028696758 0.0052555213 - 1780700 0.003832982 0.0026399361 0.0044965368 - 1780800 0.00424178 0.001960199 0.0040148111 - 1780900 0.0042329525 0.0017731268 0.0038234632 - 1781000 0.0049563082 0.0016448013 0.0040455131 - 1781100 0.0064210212 0.0017065806 0.0048167628 - 1781200 0.0045318381 0.001879459 0.0040745681 - 1781300 0.0055204468 0.0023036097 0.0049775761 - 1781400 0.0044765622 0.0023102496 0.0044785844 - 1781500 0.0033045257 0.002291964 0.0038925936 - 1781600 0.0056598485 0.0020700076 0.0048114967 - 1781700 0.0054377908 0.0021855871 0.004819517 - 1781800 0.0045752486 0.0019600368 0.0041761729 - 1781900 0.0054374088 0.0020245043 0.0046582491 - 1782000 0.0055189486 0.0021251609 0.0047984017 - 1782100 0.0054248835 0.0022920537 0.0049197316 - 1782200 0.0066442234 0.0023241156 0.0055424114 - 1782300 0.0041213512 0.0022686139 0.0042648934 - 1782400 0.0046468882 0.0023143261 0.0045651626 - 1782500 0.0053436234 0.0026405442 0.0052288617 - 1782600 0.0047118189 0.0029231546 0.0052054418 - 1782700 0.0074905039 0.0027891061 0.0064173189 - 1782800 0.0055819076 0.0021449847 0.0048487212 - 1782900 0.0047643333 0.0021902903 0.0044980143 - 1783000 0.0046813344 0.0025810341 0.0048485554 - 1783100 0.0061188459 0.002394027 0.005357843 - 1783200 0.005393048 0.0024263392 0.0050385968 - 1783300 0.0047294566 0.0029387726 0.0052296031 - 1783400 0.005758282 0.002930117 0.0057192848 - 1783500 0.0061275852 0.0027049544 0.0056730034 - 1783600 0.0060478537 0.0022164177 0.0051458469 - 1783700 0.004897352 0.0024817799 0.0048539347 - 1783800 0.0077257718 0.0022558932 0.0059980639 - 1783900 0.003764718 0.0028503903 0.0046739256 - 1784000 0.0040860623 0.0031334031 0.0051125895 - 1784100 0.0049777944 0.0025960249 0.005007144 - 1784200 0.0060074916 0.0022506871 0.0051605658 - 1784300 0.0046732294 0.0021995184 0.0044631139 - 1784400 0.0043556222 0.0026260286 0.0047357831 - 1784500 0.0038872069 0.0028092062 0.004692072 - 1784600 0.0031081476 0.0027881656 0.0042936746 - 1784700 0.0041224644 0.0023186341 0.0043154528 - 1784800 0.0044579727 0.0018129874 0.0039723179 - 1784900 0.0047601441 0.00175495 0.0040606448 - 1785000 0.0061806885 0.0019738247 0.0049675958 - 1785100 0.0077148625 0.0028160789 0.0065529655 - 1785200 0.0051575877 0.0031374411 0.0056356477 - 1785300 0.0066921837 0.0030621414 0.0063036679 - 1785400 0.0056957879 0.0029720366 0.0057309338 - 1785500 0.0063835804 0.0031291351 0.0062211818 - 1785600 0.0047940669 0.0029443423 0.0052664685 - 1785700 0.0044318765 0.0024588577 0.0046055479 - 1785800 0.0041989286 0.0023354447 0.0043693008 - 1785900 0.0045882243 0.0022922611 0.0045146822 - 1786000 0.0041882639 0.0022508424 0.0042795327 - 1786100 0.0051208267 0.0021488358 0.0046292362 - 1786200 0.0049689966 0.0024726164 0.0048794741 - 1786300 0.0046792493 0.0024318467 0.0046983581 - 1786400 0.0051492795 0.0028623713 0.0053565535 - 1786500 0.0052014597 0.0028093578 0.0053288149 - 1786600 0.0064163237 0.002523197 0.0056311038 - 1786700 0.0057180942 0.0024697832 0.0052394851 - 1786800 0.0059587612 0.001859181 0.004745456 - 1786900 0.0038307801 0.0022991978 0.0041547319 - 1787000 0.0042223646 0.0026501701 0.004695378 - 1787100 0.0047652583 0.0024061676 0.0047143396 - 1787200 0.004490013 0.0024693523 0.0046442024 - 1787300 0.0030072218 0.002228887 0.0036855101 - 1787400 0.0058132548 0.002086941 0.0049027363 - 1787500 0.0053278908 0.0020375771 0.0046182742 - 1787600 0.0034276011 0.0023766845 0.0040369287 - 1787700 0.00548168 0.0023280707 0.0049832594 - 1787800 0.0039070234 0.0020653117 0.0039577762 - 1787900 0.0058947559 0.0021315029 0.0049867753 - 1788000 0.0049623967 0.0023042716 0.0047079325 - 1788100 0.0061383917 0.0024436836 0.0054169671 - 1788200 0.0055800873 0.0023972016 0.0051000564 - 1788300 0.0053952805 0.0021909001 0.0048042391 - 1788400 0.0046878244 0.0022054646 0.0044761296 - 1788500 0.0056511033 0.0017865957 0.0045238488 - 1788600 0.0035947502 0.0019443928 0.0036855999 - 1788700 0.003692867 0.0017978838 0.0035866163 - 1788800 0.0037196119 0.0023307898 0.0041324769 - 1788900 0.0044978011 0.0027176314 0.0048962538 - 1789000 0.004638136 0.0023610502 0.0046076473 - 1789100 0.0055001454 0.0016410761 0.004305209 - 1789200 0.004552016 0.0015685684 0.0037734512 - 1789300 0.0050943344 0.0022570514 0.0047246196 - 1789400 0.0036028505 0.0025107962 0.0042559269 - 1789500 0.0055139574 0.002205841 0.0048766641 - 1789600 0.0050173714 0.0019795308 0.00440982 - 1789700 0.0055815588 0.0018279272 0.0045314948 - 1789800 0.005722574 0.0018387372 0.0046106089 - 1789900 0.0055356092 0.001918861 0.0046001717 - 1790000 0.0062153506 0.0017425682 0.0047531287 - 1790100 0.004796836 0.0016293485 0.0039528159 - 1790200 0.0051279994 0.0019104786 0.0043943533 - 1790300 0.0055987436 0.0024045502 0.0051164417 - 1790400 0.0041763259 0.0027701659 0.0047930738 - 1790500 0.0055718086 0.0024186698 0.0051175146 - 1790600 0.0039066104 0.0023187968 0.0042110613 - 1790700 0.0035806075 0.0022849663 0.0040193231 - 1790800 0.0049697523 0.0024260437 0.0048332675 - 1790900 0.0046572771 0.0023135415 0.00456941 - 1791000 0.0049332138 0.0021225359 0.0045120614 - 1791100 0.0058449594 0.0020858755 0.0049170277 - 1791200 0.0050263742 0.0023389117 0.0047735617 - 1791300 0.0067310586 0.0024416075 0.005701964 - 1791400 0.0036623412 0.0026620747 0.0044360212 - 1791500 0.0039465139 0.0021897137 0.0041013064 - 1791600 0.0073945744 0.0019395536 0.0055213006 - 1791700 0.0065038337 0.0021882377 0.0053385321 - 1791800 0.0040323655 0.0030505669 0.0050037439 - 1791900 0.0057200335 0.0026831906 0.0054538319 - 1792000 0.005778894 0.0018498849 0.0046490367 - 1792100 0.0061226313 0.0021763085 0.005141958 - 1792200 0.0049299259 0.0026435444 0.0050314772 - 1792300 0.0053877667 0.0026289588 0.0052386583 - 1792400 0.0050222709 0.0020299176 0.00446258 - 1792500 0.0053590239 0.0016919053 0.0042876825 - 1792600 0.0052194391 0.0019345666 0.0044627325 - 1792700 0.0041998174 0.0023882385 0.0044225251 - 1792800 0.0053791363 0.0022958225 0.0049013416 - 1792900 0.0053985073 0.0028033439 0.0054182458 - 1793000 0.0053487627 0.0028096409 0.0054004478 - 1793100 0.0052068347 0.002445513 0.0049675736 - 1793200 0.0041441379 0.0026710147 0.0046783315 - 1793300 0.0063818052 0.0031101245 0.0062013113 - 1793400 0.0060390113 0.0030451801 0.0059703262 - 1793500 0.005001862 0.0029468156 0.0053695925 - 1793600 0.0059210152 0.0024391155 0.0053071072 - 1793700 0.0059239863 0.0026495866 0.0055190175 - 1793800 0.005193522 0.0023681363 0.0048837486 - 1793900 0.0040129479 0.0024943643 0.0044381359 - 1794000 0.0040558135 0.0028223492 0.0047868839 - 1794100 0.0060945918 0.0026186269 0.0055706948 - 1794200 0.0057466856 0.0028270921 0.0056106429 - 1794300 0.004694005 0.0028630626 0.0051367213 - 1794400 0.0053723237 0.0022770286 0.0048792479 - 1794500 0.0057815612 0.0017861981 0.0045866418 - 1794600 0.0039796965 0.0019003023 0.0038279678 - 1794700 0.00463401 0.001969831 0.0042144297 - 1794800 0.0044872713 0.0021746743 0.0043481963 - 1794900 0.0059194298 0.0020149964 0.0048822202 - 1795000 0.0060338334 0.0018067001 0.0047293381 - 1795100 0.00672707 0.0021804784 0.0054389029 - 1795200 0.0055785731 0.0030134827 0.005715604 - 1795300 0.0061124045 0.0027925295 0.0057532254 - 1795400 0.005914618 0.0024514828 0.0053163759 - 1795500 0.0059897145 0.002399806 0.0053010739 - 1795600 0.0057173274 0.0023844654 0.0051537958 - 1795700 0.0056963219 0.002450215 0.0052093709 - 1795800 0.0048741436 0.0023676529 0.0047285662 - 1795900 0.0043457701 0.0024859965 0.0045909789 - 1796000 0.0034985794 0.0025494097 0.0042440341 - 1796100 0.0052998507 0.0022809971 0.0048481123 - 1796200 0.0046297233 0.0022298978 0.0044724201 - 1796300 0.0044192596 0.0025136044 0.0046541833 - 1796400 0.0046335686 0.0025984887 0.0048428735 - 1796500 0.0034899433 0.0022288922 0.0039193335 - 1796600 0.0059781512 0.0018791715 0.0047748385 - 1796700 0.0065068978 0.0017393544 0.0048911331 - 1796800 0.0067801081 0.0015198839 0.0048039987 - 1796900 0.0059073269 0.0017834999 0.0046448614 - 1797000 0.0033734132 0.0023055387 0.0039395357 - 1797100 0.0050531063 0.0020983906 0.004545989 - 1797200 0.004336552 0.0019825045 0.0040830219 - 1797300 0.0042783464 0.0017770067 0.0038493307 - 1797400 0.0063156576 0.0019446376 0.0050037842 - 1797500 0.0043979929 0.0023630485 0.0044933263 - 1797600 0.0056181643 0.0021726597 0.004893958 - 1797700 0.0052362893 0.0021299458 0.0046662734 - 1797800 0.0054649295 0.0021472624 0.0047943377 - 1797900 0.005578304 0.0024743211 0.0051763121 - 1798000 0.0050828864 0.0019668524 0.0044288755 - 1798100 0.0049586536 0.0017542894 0.0041561372 - 1798200 0.0041722407 0.0019240868 0.0039450159 - 1798300 0.0041940433 0.0021007127 0.0041322024 - 1798400 0.0061281574 0.0019858577 0.004954184 - 1798500 0.0037905494 0.002159946 0.0039959934 - 1798600 0.0048887354 0.0019622036 0.0043301848 - 1798700 0.0048399139 0.0017733343 0.0041176676 - 1798800 0.0050953892 0.0019162265 0.0043843057 - 1798900 0.0044791881 0.0023343658 0.0045039725 - 1799000 0.0045462219 0.002672373 0.0048744492 - 1799100 0.0045978022 0.0024254856 0.0046525461 - 1799200 0.0052349115 0.0021854981 0.0047211583 - 1799300 0.0048507652 0.0019334957 0.0042830851 - 1799400 0.0053997918 0.0017479017 0.0043634258 - 1799500 0.0051615034 0.0021145 0.0046146032 - 1799600 0.0054496087 0.0022798362 0.0049194904 - 1799700 0.0044669421 0.00209576 0.0042594351 - 1799800 0.0052429477 0.0019462249 0.0044857777 - 1799900 0.0041947278 0.0017238122 0.0037556334 - 1800000 0.0051008989 0.0018336353 0.0043043832 - 1800100 0.0055078626 0.0018285548 0.0044964257 - 1800200 0.005630608 0.0016496779 0.0043770037 - 1800300 0.0048889115 0.0022128801 0.0045809466 - 1800400 0.0051222115 0.0021017282 0.0045827994 - 1800500 0.0029393713 0.0020448375 0.0034685955 - 1800600 0.0047881515 0.0021203995 0.0044396604 - 1800700 0.003648385 0.0023243553 0.0040915418 - 1800800 0.0073174908 0.0023519839 0.0058963935 - 1800900 0.0071811372 0.0026557996 0.0061341629 - 1801000 0.0044659929 0.0029656324 0.0051288477 - 1801100 0.0050587267 0.0031797168 0.0056300376 - 1801200 0.0049124188 0.003133135 0.0055125879 - 1801300 0.0050907915 0.0029670405 0.0054328926 - 1801400 0.0046472857 0.0026540108 0.0049050398 - 1801500 0.0053831788 0.00188473 0.0044922072 - 1801600 0.0050362051 0.0018125814 0.0042519932 - 1801700 0.0046411999 0.0023137122 0.0045617934 - 1801800 0.0048847097 0.00239927 0.0047653012 - 1801900 0.005539678 0.0021838492 0.0048671308 - 1802000 0.0049166686 0.0021204268 0.0045019382 - 1802100 0.0051085436 0.0023877924 0.0048622432 - 1802200 0.0055359406 0.0026230783 0.0053045495 - 1802300 0.0065662248 0.0022680816 0.0054485967 - 1802400 0.0059272643 0.0021524903 0.005023509 - 1802500 0.0054956367 0.0026501609 0.00531211 - 1802600 0.0053028644 0.0031496215 0.0057181964 - 1802700 0.0059027673 0.0033896076 0.0062487605 - 1802800 0.0079900853 0.0029915859 0.0068617835 - 1802900 0.0059026916 0.0027089198 0.005568036 - 1803000 0.0052487792 0.0022104843 0.0047528618 - 1803100 0.0047795275 0.0018466871 0.0041617707 - 1803200 0.004104865 0.0019100684 0.0038983624 - 1803300 0.0036918073 0.0020431482 0.0038313673 - 1803400 0.0049428164 0.001831264 0.0042254407 - 1803500 0.0049668758 0.0015985806 0.004004411 - 1803600 0.0041036405 0.0022234904 0.0042111912 - 1803700 0.0056373779 0.0025472614 0.0052778663 - 1803800 0.0056481225 0.0026285267 0.0053643361 - 1803900 0.0054386187 0.0025015258 0.0051358567 - 1804000 0.0051461542 0.0026985171 0.0051911855 - 1804100 0.005653212 0.0028769677 0.0056152423 - 1804200 0.005334466 0.0022671767 0.0048510586 - 1804300 0.0063312028 0.0017298457 0.0047965221 - 1804400 0.0073376616 0.0016212835 0.0051754633 - 1804500 0.004456722 0.0014603646 0.0036190894 - 1804600 0.003626771 0.0013195763 0.0030762935 - 1804700 0.0052261901 0.0013458139 0.0038772497 - 1804800 0.0053879137 0.0013947043 0.004004475 - 1804900 0.0060916381 0.0013947318 0.004345369 - 1805000 0.0040648298 0.0015127389 0.0034816409 - 1805100 0.0040020604 0.0016248502 0.0035633482 - 1805200 0.0041460517 0.0017937128 0.0038019566 - 1805300 0.005223203 0.001982889 0.004512878 - 1805400 0.0041809884 0.0020840224 0.0041091887 - 1805500 0.0053788488 0.002433453 0.0050388329 - 1805600 0.0043732519 0.0024755991 0.004593893 - 1805700 0.0053383664 0.0019706077 0.004556379 - 1805800 0.005993 0.001744512 0.0046473714 - 1805900 0.0046939761 0.0017818079 0.0040554526 - 1806000 0.0058311806 0.0018847317 0.0047092098 - 1806100 0.0041707596 0.0024567792 0.0044769909 - 1806200 0.0050194324 0.0023933061 0.0048245937 - 1806300 0.0046491924 0.0022770898 0.0045290423 - 1806400 0.0067173001 0.0020850674 0.0053387596 - 1806500 0.0056661379 0.0022584236 0.0050029592 - 1806600 0.0047125845 0.0023891696 0.0046718278 - 1806700 0.0053084919 0.0022455467 0.0048168475 - 1806800 0.0053713874 0.0020562155 0.0046579813 - 1806900 0.0044431449 0.0021346013 0.0042867496 - 1807000 0.0043270418 0.0017538513 0.0038497622 - 1807100 0.0051736761 0.0017042892 0.0042102886 - 1807200 0.0065903039 0.0017434812 0.0049356596 - 1807300 0.0055761124 0.0025260482 0.0052269776 - 1807400 0.0045045939 0.0024317598 0.0046136725 - 1807500 0.0038251261 0.0019539319 0.0038067273 - 1807600 0.004573643 0.0016861445 0.0039015028 - 1807700 0.0044207828 0.0017510266 0.0038923432 - 1807800 0.0043033699 0.0020291101 0.0041135549 - 1807900 0.0053919584 0.0021161345 0.0047278644 - 1808000 0.0036066092 0.0024457343 0.0041926857 - 1808100 0.0052544329 0.0023805252 0.0049256411 - 1808200 0.0044048905 0.00225242 0.0043860388 - 1808300 0.0057828474 0.0019825513 0.0047836181 - 1808400 0.0033588311 0.0021919589 0.0038188928 - 1808500 0.0047770034 0.0022135335 0.0045273945 - 1808600 0.0048686716 0.001962992 0.0043212548 - 1808700 0.0042482787 0.0016474527 0.0037052127 - 1808800 0.0048661239 0.0021868305 0.0045438592 - 1808900 0.0052884416 0.0022102271 0.004771816 - 1809000 0.0053960093 0.0021204997 0.0047341917 - 1809100 0.0060387838 0.0022822466 0.0052072825 - 1809200 0.0044320375 0.0021582594 0.0043050276 - 1809300 0.0057117952 0.0022094947 0.0049761455 - 1809400 0.0054726899 0.0024898035 0.0051406377 - 1809500 0.0046739115 0.0024521778 0.0047161037 - 1809600 0.0047214429 0.0026325486 0.0049194975 - 1809700 0.0062205926 0.0026351219 0.0056482214 - 1809800 0.0056786915 0.0022320107 0.0049826269 - 1809900 0.0040295903 0.0021407902 0.004092623 - 1810000 0.0055623985 0.0021090178 0.0048033045 - 1810100 0.0047549592 0.0021628568 0.0044660402 - 1810200 0.0045741698 0.002306516 0.0045221295 - 1810300 0.0050365756 0.0026253834 0.0050649747 - 1810400 0.005280909 0.0025297398 0.00508768 - 1810500 0.0042421182 0.0020617392 0.0041165152 - 1810600 0.0067337654 0.001768072 0.0050297396 - 1810700 0.0045389112 0.001828045 0.0040265801 - 1810800 0.0035591476 0.0018272408 0.0035512029 - 1810900 0.0053072787 0.0019031985 0.0044739116 - 1811000 0.0055915694 0.0018439469 0.0045523633 - 1811100 0.0052310041 0.0017012856 0.0042350532 - 1811200 0.0045937071 0.0018257881 0.004050865 - 1811300 0.0062206714 0.0018637351 0.0048768729 - 1811400 0.0050999845 0.0021803421 0.0046506471 - 1811500 0.0038835928 0.0022958085 0.0041769238 - 1811600 0.0047408645 0.0020867296 0.0043830859 - 1811700 0.0045379287 0.0020110084 0.0042090676 - 1811800 0.0059898657 0.0018120185 0.0047133597 - 1811900 0.006247568 0.0018905092 0.004916675 - 1812000 0.0069390181 0.0025587981 0.005919885 - 1812100 0.0043674677 0.0025838792 0.0046993714 - 1812200 0.004150195 0.0021741864 0.0041844371 - 1812300 0.0049242141 0.0015443123 0.0039294785 - 1812400 0.0042264003 0.0012292974 0.00327646 - 1812500 0.0045565282 0.0015989783 0.0038060466 - 1812600 0.0051469219 0.0023806845 0.0048737248 - 1812700 0.0053444895 0.0026096978 0.0051984349 - 1812800 0.0058250159 0.0030229081 0.0058444002 - 1812900 0.0041985108 0.0027924931 0.0048261468 - 1813000 0.0049191019 0.002278079 0.004660769 - 1813100 0.0055003744 0.0021108995 0.0047751434 - 1813200 0.0043383881 0.0020437136 0.0041451204 - 1813300 0.0042181048 0.0021808827 0.0042240272 - 1813400 0.0051383999 0.002210995 0.0046999075 - 1813500 0.0042055168 0.0023634626 0.0044005098 - 1813600 0.0057286544 0.0019866186 0.0047614355 - 1813700 0.0058554557 0.0019084257 0.0047446621 - 1813800 0.0052327399 0.0022546792 0.0047892876 - 1813900 0.0059514469 0.002106646 0.0049893781 - 1814000 0.0065469751 0.0018140475 0.0049852385 - 1814100 0.0048608801 0.0021259118 0.0044804006 - 1814200 0.0035596448 0.0020245827 0.0037487857 - 1814300 0.00541179 0.0018587861 0.0044801219 - 1814400 0.0054043809 0.0025865585 0.0052043055 - 1814500 0.0058059219 0.0028090179 0.0056212613 - 1814600 0.0044759143 0.002544911 0.004712932 - 1814700 0.00623071 0.0021880426 0.0052060427 - 1814800 0.0044369867 0.0022620835 0.0044112489 - 1814900 0.00442036 0.0023737188 0.0045148307 - 1815000 0.0042635814 0.0022559765 0.0043211488 - 1815100 0.00489117 0.0026119388 0.0049810993 - 1815200 0.0055680761 0.0023027764 0.0049998133 - 1815300 0.0075762499 0.0023829488 0.0060526948 - 1815400 0.0047999181 0.0025488219 0.0048737822 - 1815500 0.0050522361 0.0023776897 0.0048248665 - 1815600 0.0050264638 0.0020948787 0.0045295721 - 1815700 0.0050091849 0.0020578441 0.004484168 - 1815800 0.006005166 0.0022254425 0.0051341947 - 1815900 0.0065878025 0.0018257653 0.0050167321 - 1816000 0.0038652258 0.0017667317 0.0036389505 - 1816100 0.0043064039 0.001665746 0.0037516604 - 1816200 0.0043528116 0.0014872901 0.0035956832 - 1816300 0.0027784069 0.0017685051 0.003114296 - 1816400 0.0050220914 0.0018415012 0.0042740767 - 1816500 0.0052597645 0.0020181384 0.0045658369 - 1816600 0.0039347393 0.0023461983 0.0042520876 - 1816700 0.0047670768 0.0026487154 0.0049577682 - 1816800 0.0059092474 0.0028353047 0.0056975964 - 1816900 0.0049850265 0.0024119757 0.0048265979 - 1817000 0.0038804088 0.0023723007 0.0042518737 - 1817100 0.0073114747 0.001922011 0.0054635066 - 1817200 0.0045496881 0.0023346018 0.004538357 - 1817300 0.0048273568 0.0020837197 0.0044219706 - 1817400 0.0048200667 0.0020439072 0.004378627 - 1817500 0.0069277878 0.001724149 0.0050797962 - 1817600 0.0064291226 0.002268207 0.0053823132 - 1817700 0.0062923275 0.0024968585 0.0055447046 - 1817800 0.006297291 0.00242807 0.0054783203 - 1817900 0.005775209 0.0025754362 0.0053728031 - 1818000 0.0052142599 0.0023586904 0.0048843475 - 1818100 0.0055886242 0.0026209445 0.0053279344 - 1818200 0.0050147356 0.0028101667 0.0052391793 - 1818300 0.004487358 0.0022467394 0.0044203034 - 1818400 0.0057529389 0.0018677415 0.0046543213 - 1818500 0.0057691191 0.0018625341 0.0046569512 - 1818600 0.004072017 0.0024482775 0.0044206607 - 1818700 0.0046713659 0.0025361396 0.0047988324 - 1818800 0.0033903684 0.0022211733 0.003863383 - 1818900 0.0058202654 0.0017202097 0.0045394008 - 1819000 0.0061067075 0.0019301499 0.0048880864 - 1819100 0.0043040734 0.0022413213 0.0043261069 - 1819200 0.005694341 0.0020537688 0.0048119652 - 1819300 0.0041838707 0.0020894718 0.0041160342 - 1819400 0.0044038122 0.0022104548 0.0043435513 - 1819500 0.0041773772 0.0021997327 0.0042231498 - 1819600 0.0055600909 0.0018912931 0.0045844621 - 1819700 0.0044797306 0.0022234239 0.0043932934 - 1819800 0.0050919037 0.0024839654 0.0049503562 - 1819900 0.0068444771 0.0025793045 0.005894598 - 1820000 0.0046521269 0.0024128948 0.0046662688 - 1820100 0.0048087039 0.0025292139 0.0048584299 - 1820200 0.0035855573 0.0028424632 0.0045792175 - 1820300 0.0056558214 0.0026381349 0.0053776734 - 1820400 0.0051685498 0.0022580472 0.0047615635 - 1820500 0.0043338962 0.002290901 0.004390132 - 1820600 0.0058003973 0.0024441893 0.0052537568 - 1820700 0.0046386907 0.0028427194 0.0050895852 - 1820800 0.0067847177 0.0026953142 0.0059816618 - 1820900 0.0062182425 0.0028273266 0.0058392878 - 1821000 0.0063909653 0.0031064493 0.0062020731 - 1821100 0.0053544532 0.0028414566 0.0054350198 - 1821200 0.0056852882 0.0029415206 0.005695332 - 1821300 0.0056199133 0.0030069414 0.0057290869 - 1821400 0.0052474186 0.0024723805 0.0050140989 - 1821500 0.0059081905 0.0024541587 0.0053159385 - 1821600 0.0063538425 0.0020659494 0.0051435919 - 1821700 0.0052461778 0.0020397902 0.0045809076 - 1821800 0.0046169885 0.0019257745 0.0041621283 - 1821900 0.0056345565 0.0019482046 0.0046774429 - 1822000 0.0056734363 0.0016952364 0.0044433071 - 1822100 0.0059293783 0.0022674126 0.0051394552 - 1822200 0.0060406879 0.0026154526 0.0055414108 - 1822300 0.005846704 0.0026422121 0.0054742094 - 1822400 0.0050069504 0.0031599356 0.0055851772 - 1822500 0.0066621521 0.0028672766 0.0060942565 - 1822600 0.0054989712 0.0025713919 0.005234956 - 1822700 0.0053533136 0.0019130172 0.0045060285 - 1822800 0.0058556589 0.0020709897 0.0049073245 - 1822900 0.0033069873 0.0024611533 0.0040629753 - 1823000 0.0053750994 0.0025116939 0.0051152576 - 1823100 0.0056099994 0.0027194884 0.0054368319 - 1823200 0.0047579038 0.0024961837 0.0048007933 - 1823300 0.0039212098 0.0028706743 0.0047700102 - 1823400 0.0044388579 0.002897136 0.0050472078 - 1823500 0.0047251818 0.0028886787 0.0051774386 - 1823600 0.0064603836 0.002357525 0.0054867733 - 1823700 0.0050823171 0.0023102323 0.0047719797 - 1823800 0.0055587146 0.0024512209 0.0051437233 - 1823900 0.0044225187 0.0025567091 0.0046988665 - 1824000 0.0037054573 0.0023888776 0.0041837085 - 1824100 0.0041396543 0.0025297463 0.0045348913 - 1824200 0.0054082532 0.0024573752 0.0050769978 - 1824300 0.0049014309 0.0027748493 0.0051489799 - 1824400 0.0049892029 0.002963136 0.0053797811 - 1824500 0.0039830712 0.0032396865 0.0051689866 - 1824600 0.0057449304 0.0028908438 0.0056735445 - 1824700 0.0051898993 0.0030773949 0.0055912523 - 1824800 0.0047017705 0.0031932343 0.0054706543 - 1824900 0.0055895767 0.0027408181 0.0054482693 - 1825000 0.0065848609 0.002435504 0.0056250459 - 1825100 0.0045350096 0.0021607935 0.0043574388 - 1825200 0.0047665433 0.0021156162 0.0044244106 - 1825300 0.0057075471 0.002486449 0.0052510421 - 1825400 0.0056992223 0.0031838607 0.0059444215 - 1825500 0.0058171576 0.0040203442 0.0068380299 - 1825600 0.0074607473 0.0035058388 0.0071196383 - 1825700 0.004043781 0.0034071638 0.0053658702 - 1825800 0.0057338315 0.0036942527 0.0064715774 - 1825900 0.0067421583 0.0029154354 0.0061811684 - 1826000 0.0053773817 0.0025865907 0.00519126 - 1826100 0.0054723753 0.0025179265 0.0051686083 - 1826200 0.0047024119 0.0029516302 0.005229361 - 1826300 0.0050936318 0.0025141083 0.0049813362 - 1826400 0.0062836644 0.0020968665 0.0051405164 - 1826500 0.0058536616 0.0016991643 0.0045345316 - 1826600 0.0041593877 0.0018112124 0.0038259158 - 1826700 0.0065083026 0.0021517316 0.0053041907 - 1826800 0.0061892795 0.0025781828 0.005576115 - 1826900 0.0057269993 0.0029284798 0.005702495 - 1827000 0.0061911585 0.003587872 0.0065867144 - 1827100 0.0057635382 0.0035963321 0.0063880459 - 1827200 0.0077130877 0.0027357774 0.0064718043 - 1827300 0.0051204531 0.0027835442 0.0052637636 - 1827400 0.0053836868 0.0028255569 0.0054332802 - 1827500 0.0047510497 0.0022988761 0.0046001658 - 1827600 0.0048796192 0.0019763497 0.0043399152 - 1827700 0.0033794002 0.0022274531 0.0038643501 - 1827800 0.0053929574 0.002475652 0.0050878657 - 1827900 0.0061334252 0.0025184841 0.0054893619 - 1828000 0.005173881 0.0026499103 0.0051560089 - 1828100 0.0055536428 0.0032242789 0.0059143246 - 1828200 0.0046355705 0.0028290574 0.0050744119 - 1828300 0.0056396961 0.0028813219 0.0056130497 - 1828400 0.0051126015 0.0030955024 0.0055719187 - 1828500 0.0048631875 0.0025039373 0.0048595438 - 1828600 0.0058739744 0.0022142728 0.0050594792 - 1828700 0.0046286164 0.0022752417 0.0045172277 - 1828800 0.0056386692 0.0026038061 0.0053350365 - 1828900 0.0037746205 0.0024751768 0.0043035086 - 1829000 0.0048283675 0.0025288704 0.0048676109 - 1829100 0.0067160407 0.0021822427 0.0054353249 - 1829200 0.0049246573 0.0023057417 0.0046911226 - 1829300 0.0048654333 0.0025555038 0.004912198 - 1829400 0.0054500987 0.0024945655 0.005134457 - 1829500 0.0067347924 0.0024026486 0.0056648136 - 1829600 0.0067268096 0.0022221081 0.0054804066 - 1829700 0.0044752854 0.0026756166 0.0048433329 - 1829800 0.0074415733 0.0031996435 0.0068041556 - 1829900 0.0053430055 0.0035790705 0.0061670888 - 1830000 0.0035604149 0.0035936995 0.0053182754 - 1830100 0.007456922 0.0034640101 0.0070759567 - 1830200 0.0050186146 0.0031260743 0.0055569657 - 1830300 0.0050367765 0.0028779089 0.0053175975 - 1830400 0.0036594015 0.0030573296 0.0048298522 - 1830500 0.0062091358 0.0031671855 0.0061747357 - 1830600 0.0053042707 0.0030375734 0.0056068295 - 1830700 0.0063280152 0.002874818 0.0059399504 - 1830800 0.0062285596 0.0022317412 0.0052486997 - 1830900 0.0054391696 0.0023210732 0.004955671 - 1831000 0.0049604126 0.0023770409 0.0047797407 - 1831100 0.0049364272 0.0023850182 0.0047761001 - 1831200 0.0044420425 0.0027601381 0.0049117524 - 1831300 0.0047771792 0.0027741834 0.0050881296 - 1831400 0.0048919989 0.0028130008 0.0051825628 - 1831500 0.0049833973 0.0030504252 0.0054642583 - 1831600 0.0059142004 0.0029722202 0.005836911 - 1831700 0.0041825135 0.0028304999 0.0048564048 - 1831800 0.0056151659 0.0023887713 0.0051086172 - 1831900 0.0063506762 0.0026450894 0.0057211982 - 1832000 0.0047413776 0.0028899773 0.0051865821 - 1832100 0.0047632274 0.0029704312 0.0052776195 - 1832200 0.003528458 0.003001404 0.0047105008 - 1832300 0.0046939922 0.0028973645 0.005171017 - 1832400 0.0059194579 0.0031121484 0.0059793858 - 1832500 0.0064369985 0.0027230065 0.0058409277 - 1832600 0.006925543 0.002483896 0.0058384559 - 1832700 0.0048330293 0.0029155139 0.0052565124 - 1832800 0.0048027995 0.0032537412 0.0055800972 - 1832900 0.0040521369 0.0024737073 0.0044364611 - 1833000 0.0050594872 0.0023674267 0.0048181159 - 1833100 0.004291064 0.0027111981 0.0047896823 - 1833200 0.0049643327 0.0025667595 0.0049713582 - 1833300 0.0061877674 0.00230643 0.0053036298 - 1833400 0.0034030178 0.0025526019 0.0042009387 - 1833500 0.0052948556 0.0024917503 0.005056446 - 1833600 0.0062810649 0.00230466 0.0053470509 - 1833700 0.0054959213 0.0027200142 0.0053821011 - 1833800 0.0064424105 0.002733904 0.0058544466 - 1833900 0.0053260042 0.0032147194 0.0057945027 - 1834000 0.004549477 0.0031915703 0.0053952232 - 1834100 0.0049327621 0.0025245388 0.0049138454 - 1834200 0.0045875777 0.0020443214 0.0042664293 - 1834300 0.0048264411 0.0020691337 0.0044069411 - 1834400 0.0042010244 0.0017252186 0.0037600898 - 1834500 0.0047615477 0.001503296 0.0038096707 - 1834600 0.0043579799 0.001786117 0.0038970135 - 1834700 0.004457224 0.0022765088 0.0044354767 - 1834800 0.0049355593 0.0023833073 0.0047739688 - 1834900 0.0046896532 0.0025905697 0.0048621204 - 1835000 0.0048126559 0.0020756603 0.0044067905 - 1835100 0.0053188155 0.0021171089 0.0046934101 - 1835200 0.0051109366 0.00214712 0.0046227299 - 1835300 0.0050131349 0.0018313852 0.0042596224 - 1835400 0.0040018834 0.0021550631 0.0040934754 - 1835500 0.0053611106 0.0023504565 0.0049472444 - 1835600 0.0073914359 0.0022399131 0.0058201399 - 1835700 0.0057344713 0.0029361679 0.0057138025 - 1835800 0.0043884007 0.0028328353 0.0049584669 - 1835900 0.0060291455 0.0022190698 0.0051394372 - 1836000 0.0072537187 0.0019367684 0.0054502884 - 1836100 0.0043346841 0.0024015656 0.0045011782 - 1836200 0.0049809301 0.0022017472 0.0046143852 - 1836300 0.0063595883 0.0021982501 0.0052786757 - 1836400 0.0048642316 0.0028632097 0.0052193219 - 1836500 0.0046640723 0.0036932048 0.0059523648 - 1836600 0.0047092763 0.00332229 0.0056033457 - 1836700 0.0053152697 0.0028558819 0.0054304657 - 1836800 0.0039453693 0.002670632 0.0045816703 - 1836900 0.0061003364 0.0018228672 0.0047777177 - 1837000 0.0049375342 0.0019426702 0.0043342883 - 1837100 0.0042118268 0.002444762 0.0044848656 - 1837200 0.0053237873 0.0027587982 0.0053375076 - 1837300 0.0041371099 0.0027232313 0.0047271439 - 1837400 0.0058916712 0.0030381714 0.0058919496 - 1837500 0.0033988827 0.002762782 0.0044091158 - 1837600 0.007225724 0.0022936466 0.0057936066 - 1837700 0.0048108966 0.0026541124 0.0049843904 - 1837800 0.0038260692 0.0027831146 0.0046363669 - 1837900 0.0067431909 0.0022923037 0.0055585368 - 1838000 0.0052758937 0.0025550769 0.0051105879 - 1838100 0.0049708314 0.0024807615 0.004888508 - 1838200 0.0044353637 0.0029430032 0.0050913824 - 1838300 0.0046048732 0.003330591 0.0055610765 - 1838400 0.0040100092 0.0033183718 0.0052607199 - 1838500 0.0050000587 0.0034866062 0.0059085096 - 1838600 0.0051197795 0.0031018093 0.0055817024 - 1838700 0.0057119474 0.0029045682 0.0056712927 - 1838800 0.004716284 0.0028899959 0.0051744459 - 1838900 0.0053463066 0.0027395499 0.0053291671 - 1839000 0.0053158297 0.0029799841 0.005554839 - 1839100 0.0049389509 0.0029550639 0.0053473682 - 1839200 0.0068643711 0.0023163997 0.0056413294 - 1839300 0.0049851449 0.0022781267 0.0046928063 - 1839400 0.0050419045 0.0022033716 0.0046455441 - 1839500 0.0035809164 0.002138617 0.0038731233 - 1839600 0.0049335462 0.0019086747 0.0042983611 - 1839700 0.004702188 0.0022054288 0.0044830511 - 1839800 0.0062424273 0.0027909655 0.0058146412 - 1839900 0.0051940182 0.003362141 0.0058779935 - 1840000 0.0044055065 0.0026649449 0.0047988622 - 1840100 0.0040268297 0.0021480031 0.0040984987 - 1840200 0.0053733074 0.0023072182 0.004909914 - 1840300 0.0037636891 0.0027506274 0.0045736643 - 1840400 0.0048608963 0.0022187004 0.0045731971 - 1840500 0.0043761072 0.0019688382 0.0040885151 - 1840600 0.0047807624 0.0018923935 0.0042080753 - 1840700 0.0061836442 0.001803918 0.0047991206 - 1840800 0.0057333619 0.0018479472 0.0046250444 - 1840900 0.0055466672 0.0025023536 0.0051890205 - 1841000 0.0045848312 0.0026589338 0.0048797114 - 1841100 0.0068969427 0.0026447854 0.0059854921 - 1841200 0.0043327185 0.0031006612 0.0051993217 - 1841300 0.0042151606 0.0030352387 0.0050769572 - 1841400 0.0038747573 0.0031679937 0.0050448293 - 1841500 0.0045475915 0.0028690073 0.0050717469 - 1841600 0.0064020101 0.0024604117 0.0055613854 - 1841700 0.0055309092 0.0025248425 0.0052038766 - 1841800 0.0060502599 0.0024440751 0.0053746697 - 1841900 0.0057737337 0.0023919089 0.0051885611 - 1842000 0.0056905839 0.0022758944 0.005032271 - 1842100 0.0063855305 0.0027562468 0.0058492381 - 1842200 0.0071202573 0.0030621633 0.0065110379 - 1842300 0.0053754502 0.0029242559 0.0055279896 - 1842400 0.0065286505 0.0027124332 0.0058747483 - 1842500 0.003252951 0.0026860044 0.0042616525 - 1842600 0.0053228349 0.0028181649 0.005396413 - 1842700 0.0039392265 0.0025635009 0.0044715637 - 1842800 0.0047566067 0.0023807037 0.0046846851 - 1842900 0.0038672063 0.0026561105 0.0045292886 - 1843000 0.003188045 0.0028067391 0.0043509484 - 1843100 0.0034992731 0.002890242 0.0045852025 - 1843200 0.0055892673 0.0030022499 0.0057095513 - 1843300 0.006725536 0.0031020536 0.0063597351 - 1843400 0.0057047235 0.0026530071 0.0054162326 - 1843500 0.0055916234 0.0024614717 0.0051699143 - 1843600 0.0048049647 0.0029001411 0.0052275459 - 1843700 0.0048249189 0.0027396898 0.0050767599 - 1843800 0.0043810365 0.0025112107 0.0046332752 - 1843900 0.0054114629 0.0028222742 0.0054434516 - 1844000 0.0055951951 0.0027248841 0.0054350567 - 1844100 0.0060926599 0.0027936004 0.0057447326 - 1844200 0.0053431519 0.0035997644 0.0061878536 - 1844300 0.0064943913 0.0029387898 0.0060845105 - 1844400 0.0058323939 0.0023692291 0.0051942949 - 1844500 0.0050098796 0.0023039681 0.0047306286 - 1844600 0.0054087327 0.0022216551 0.00484151 - 1844700 0.0063028508 0.0023253307 0.0053782741 - 1844800 0.0052691031 0.002427201 0.0049794228 - 1844900 0.0052586857 0.0029444063 0.0054915822 - 1845000 0.004941792 0.0030481174 0.0054417978 - 1845100 0.0054973358 0.0023216662 0.0049844382 - 1845200 0.003447828 0.002211614 0.0038816557 - 1845300 0.0039732714 0.0019068004 0.0038313538 - 1845400 0.0046724375 0.0019384795 0.0042016914 - 1845500 0.0054732553 0.0020113982 0.0046625062 - 1845600 0.0039506227 0.0022334204 0.0041470033 - 1845700 0.0043927298 0.0021456784 0.0042734069 - 1845800 0.0045469497 0.002368828 0.0045712567 - 1845900 0.0053375331 0.0022032725 0.0047886401 - 1846000 0.0051315623 0.0022989817 0.0047845821 - 1846100 0.0048098225 0.0022541727 0.0045839305 - 1846200 0.0062408913 0.0023111455 0.0053340772 - 1846300 0.0043939981 0.0025513583 0.0046797011 - 1846400 0.0043324117 0.0022563546 0.0043548665 - 1846500 0.0055666449 0.0018529421 0.0045492857 - 1846600 0.0035835235 0.00207149 0.0038072592 - 1846700 0.0040443216 0.0019620079 0.0039209761 - 1846800 0.005037567 0.0020301491 0.0044702206 - 1846900 0.0038172558 0.0020913815 0.0039403648 - 1847000 0.0075569731 0.0022738696 0.0059342785 - 1847100 0.005628498 0.0027831466 0.0055094503 - 1847200 0.0059044439 0.0029034552 0.0057634202 - 1847300 0.0054772521 0.0026479447 0.0053009887 - 1847400 0.0052143127 0.0025272157 0.0050528985 - 1847500 0.005546392 0.0023365106 0.0050230442 - 1847600 0.005961221 0.0024483558 0.0053358222 - 1847700 0.0042871597 0.0022573999 0.0043339929 - 1847800 0.004927622 0.0021351634 0.0045219803 - 1847900 0.0058446637 0.0024249762 0.0052559851 - 1848000 0.0052980995 0.0027471286 0.0053133956 - 1848100 0.0043812282 0.0030607223 0.0051828797 - 1848200 0.0060300425 0.0030224783 0.0059432802 - 1848300 0.0053867125 0.0027698405 0.0053790294 - 1848400 0.0049816871 0.0026305663 0.005043571 - 1848500 0.0050326722 0.0028184718 0.0052561724 - 1848600 0.005007263 0.0026671012 0.0050924942 - 1848700 0.0065970253 0.0025751352 0.0057705693 - 1848800 0.0056097893 0.0024670871 0.0051843288 - 1848900 0.0035704623 0.0027802361 0.0045096788 - 1849000 0.0058317055 0.0024218212 0.0052465536 - 1849100 0.0042012977 0.0022494778 0.0042844814 - 1849200 0.0049064336 0.0024624766 0.0048390303 - 1849300 0.0060751769 0.0023385673 0.0052812311 - 1849400 0.005759377 0.0020673609 0.0048570592 - 1849500 0.0044088073 0.0023226355 0.0044581515 - 1849600 0.003964993 0.0021889626 0.0041095061 - 1849700 0.0052252621 0.0021901434 0.0047211297 - 1849800 0.0042259502 0.0024113381 0.0044582827 - 1849900 0.0048662211 0.0023541586 0.0047112345 - 1850000 0.0055583444 0.0020609581 0.0047532812 - 1850100 0.0052393199 0.0019023555 0.0044401511 - 1850200 0.0055566769 0.0022140279 0.0049055432 - 1850300 0.0059361797 0.0027639845 0.0056393216 - 1850400 0.0048159895 0.0028800426 0.0052127875 - 1850500 0.0055282418 0.0032507751 0.0059285173 - 1850600 0.0061448052 0.0028048143 0.0057812044 - 1850700 0.0047716174 0.0023340904 0.0046453426 - 1850800 0.0060026553 0.0021186557 0.0050261919 - 1850900 0.0048697322 0.0022905175 0.004649294 - 1851000 0.0064945676 0.0025882201 0.0057340263 - 1851100 0.0032993346 0.0029127235 0.0045108387 - 1851200 0.0048012918 0.0023580627 0.0046836884 - 1851300 0.0052930068 0.0015265973 0.0040903975 - 1851400 0.0041795114 0.0015718937 0.0035963445 - 1851500 0.003742574 0.0014630573 0.0032758666 - 1851600 0.003775864 0.0013983301 0.0032272642 - 1851700 0.0040747931 0.0018607753 0.0038345032 - 1851800 0.0040760309 0.0018404677 0.0038147952 - 1851900 0.0048330741 0.0018739667 0.0042149869 - 1852000 0.0067693102 0.0016231998 0.0049020844 - 1852100 0.004951093 0.001927105 0.0043252906 - 1852200 0.0045143567 0.0023702135 0.004556855 - 1852300 0.0059676065 0.0024059513 0.0052965107 - 1852400 0.0047447199 0.0025450211 0.0048432448 - 1852500 0.0060325814 0.0020522557 0.0049742873 - 1852600 0.0052671133 0.0022293381 0.0047805961 - 1852700 0.0044262123 0.0026495886 0.0047935352 - 1852800 0.0044134311 0.0024100754 0.0045478311 - 1852900 0.0081690164 0.0020998662 0.0060567335 - 1853000 0.0053593674 0.00238149 0.0049774336 - 1853100 0.0028072845 0.0024602307 0.0038200091 - 1853200 0.0054650389 0.0019533478 0.0046004761 - 1853300 0.0045117415 0.0017260248 0.0039113996 - 1853400 0.0062706037 0.0017133426 0.0047506662 - 1853500 0.0054699701 0.002108737 0.0047582538 - 1853600 0.0045641967 0.0021737943 0.0043845771 - 1853700 0.0058025605 0.0020062373 0.0048168525 - 1853800 0.004715356 0.0023285396 0.0046125402 - 1853900 0.004787692 0.0026279192 0.0049469575 - 1854000 0.0046393503 0.0029343337 0.005181519 - 1854100 0.0044794868 0.0032305126 0.005400264 - 1854200 0.0065492991 0.003034033 0.0062063498 - 1854300 0.0063948083 0.0021032686 0.0052007538 - 1854400 0.0061519726 0.001853983 0.0048338447 - 1854500 0.0051483381 0.0021003844 0.0045941107 - 1854600 0.0046524698 0.0020368137 0.0042903538 - 1854700 0.0045789934 0.0021155744 0.0043335243 - 1854800 0.0058820417 0.0024103144 0.0052594283 - 1854900 0.0045818268 0.0027100194 0.0049293418 - 1855000 0.0053705062 0.0026299906 0.0052313295 - 1855100 0.0051914822 0.0025383592 0.0050529834 - 1855200 0.0060595631 0.0025030573 0.0054381582 - 1855300 0.0061523736 0.0026089656 0.0055890216 - 1855400 0.0060381446 0.0030870039 0.0060117302 - 1855500 0.0061296942 0.0028775959 0.0058466665 - 1855600 0.0045639352 0.0029659145 0.0051765707 - 1855700 0.0047197067 0.0029362984 0.0052224064 - 1855800 0.0051527546 0.0028102192 0.0053060847 - 1855900 0.0045770983 0.0027585837 0.0049756157 - 1856000 0.0054626169 0.0026559711 0.0053019262 - 1856100 0.005978491 0.002361057 0.0052568886 - 1856200 0.0050760245 0.0023911883 0.0048498876 - 1856300 0.005913116 0.0027660609 0.0056302264 - 1856400 0.0043943632 0.0028929661 0.0050214858 - 1856500 0.0049347253 0.0030621782 0.0054524358 - 1856600 0.0052668569 0.0032893195 0.0058404533 - 1856700 0.0061599597 0.0027747939 0.0057585244 - 1856800 0.0048640959 0.0026046232 0.0049606697 - 1856900 0.0041840261 0.0032304277 0.0052570654 - 1857000 0.0055065522 0.0032638003 0.0059310365 - 1857100 0.005179499 0.0033741343 0.0058829542 - 1857200 0.0041355784 0.0033996105 0.0054027813 - 1857300 0.004526962 0.0034986997 0.005691447 - 1857400 0.005435098 0.0033568213 0.0059894469 - 1857500 0.0073681817 0.0029683979 0.0065373609 - 1857600 0.0060966724 0.0030829804 0.0060360561 - 1857700 0.0042770901 0.0034962922 0.0055680078 - 1857800 0.00419116 0.0033688614 0.0053989545 - 1857900 0.0041184686 0.0029742893 0.0049691726 - 1858000 0.0043048881 0.0029267726 0.0050119528 - 1858100 0.00459848 0.0027310622 0.0049584509 - 1858200 0.0041866813 0.0027814633 0.004809387 - 1858300 0.0049139968 0.0028480663 0.0052282835 - 1858400 0.0052753962 0.0028122215 0.0053674916 - 1858500 0.0043822943 0.0022326417 0.0043553155 - 1858600 0.0037717188 0.0021643189 0.0039912452 - 1858700 0.0056886179 0.0017850567 0.004540481 - 1858800 0.004077465 0.0019226761 0.0038976982 - 1858900 0.0042358244 0.002385415 0.0044371425 - 1859000 0.0059531665 0.0022425827 0.0051261477 - 1859100 0.0049379908 0.0022525245 0.0046443638 - 1859200 0.0051033607 0.0025836221 0.0050555624 - 1859300 0.0060975865 0.0024264013 0.0053799198 - 1859400 0.0049443395 0.0025989371 0.0049938515 - 1859500 0.0057259876 0.0023542833 0.0051278086 - 1859600 0.0042774617 0.002817197 0.0048890925 - 1859700 0.0049686152 0.0031237484 0.0055304214 - 1859800 0.0053785402 0.0028504465 0.0054556769 - 1859900 0.0047770369 0.0030158859 0.0053297632 - 1860000 0.0052122116 0.0034332347 0.0059578997 - 1860100 0.0050206976 0.0031253305 0.0055572309 - 1860200 0.0045973708 0.0031158813 0.0053427327 - 1860300 0.0070228476 0.0024382291 0.0058399209 - 1860400 0.0054289179 0.0021960661 0.0048256982 - 1860500 0.0052876873 0.0020781069 0.0046393304 - 1860600 0.005499243 0.0021170838 0.0047807797 - 1860700 0.0029157418 0.0024478798 0.0038601923 - 1860800 0.0033969274 0.0026009506 0.0042463373 - 1860900 0.0072905724 0.0029064284 0.0064377994 - 1861000 0.00595085 0.0033368092 0.0062192521 - 1861100 0.0045932686 0.0033491825 0.005574047 - 1861200 0.0070175883 0.0029948557 0.0063940001 - 1861300 0.0053176718 0.0031872611 0.0057630084 - 1861400 0.0047657802 0.0032490747 0.0055574995 - 1861500 0.0050111086 0.0027240868 0.0051513425 - 1861600 0.0058111147 0.0029013001 0.0057160588 - 1861700 0.0049318051 0.0029231301 0.0053119732 - 1861800 0.0059860324 0.0027470833 0.0056465678 - 1861900 0.0070490751 0.0029161957 0.0063305915 - 1862000 0.0057257591 0.0030000727 0.0057734872 - 1862100 0.0059502694 0.0024243947 0.0053065564 - 1862200 0.0041284821 0.002338382 0.0043381155 - 1862300 0.0033661184 0.002753683 0.0043841466 - 1862400 0.0047496088 0.0028241941 0.0051247858 - 1862500 0.0038055354 0.0026649694 0.0045082756 - 1862600 0.0055035465 0.0023886372 0.0050544176 - 1862700 0.0032217674 0.0024641461 0.0040246897 - 1862800 0.0058479039 0.0022453559 0.0050779343 - 1862900 0.0058955603 0.0021053876 0.0049610496 - 1863000 0.0050050539 0.0026866774 0.0051110004 - 1863100 0.0053357866 0.0029516387 0.0055361603 - 1863200 0.0060621801 0.0025980246 0.0055343931 - 1863300 0.0059205966 0.00243656 0.005304349 - 1863400 0.0052182005 0.0023412291 0.0048687949 - 1863500 0.0044679566 0.0024521759 0.0046163424 - 1863600 0.0062410243 0.0024346641 0.0054576603 - 1863700 0.0065218005 0.0024390324 0.0055980295 - 1863800 0.0048674686 0.0029105972 0.0052682773 - 1863900 0.0052292463 0.003072362 0.0056052782 - 1864000 0.0054752155 0.0033299411 0.0059819986 - 1864100 0.0054209242 0.0034109151 0.0060366753 - 1864200 0.005187463 0.0032790048 0.0057916822 - 1864300 0.0048825099 0.0030194893 0.005384455 - 1864400 0.005658846 0.0028037088 0.0055447123 - 1864500 0.0072154276 0.0028960117 0.0063909844 - 1864600 0.0057013777 0.0025358082 0.0052974131 - 1864700 0.0049616717 0.0024440182 0.0048473279 - 1864800 0.0056602252 0.002815029 0.0055567006 - 1864900 0.0065527968 0.0022829825 0.0054569934 - 1865000 0.0062759308 0.0020951514 0.0051350554 - 1865100 0.004088452 0.0020863566 0.0040667005 - 1865200 0.0046829344 0.0021696977 0.004437994 - 1865300 0.0071625543 0.0023716368 0.005840999 - 1865400 0.0043630482 0.0030149391 0.0051282906 - 1865500 0.0044432566 0.0027920656 0.0049442681 - 1865600 0.0049507489 0.0024883139 0.004886333 - 1865700 0.0050012144 0.0024961579 0.0049186212 - 1865800 0.0038130778 0.0026512816 0.0044982411 - 1865900 0.0038064827 0.0022848526 0.0041286176 - 1866000 0.0058692579 0.0021634673 0.0050063891 - 1866100 0.0037799693 0.0025716927 0.0044026153 - 1866200 0.0046148222 0.0024388189 0.0046741234 - 1866300 0.0053393299 0.0019542317 0.0045404696 - 1866400 0.0040218473 0.0019163875 0.0038644698 - 1866500 0.003650099 0.0018449548 0.0036129715 - 1866600 0.0042987034 0.0019275286 0.0040097131 - 1866700 0.0063187754 0.0018626213 0.0049232781 - 1866800 0.0059444537 0.001899177 0.0047785217 - 1866900 0.0048816174 0.0020132104 0.0043777439 - 1867000 0.0048534971 0.0024194226 0.0047703352 - 1867100 0.0046411602 0.0025958529 0.0048439148 - 1867200 0.004156328 0.0026153052 0.0046285265 - 1867300 0.0052872315 0.0024309914 0.0049919941 - 1867400 0.0052936095 0.0023919032 0.0049559953 - 1867500 0.0049567603 0.0022817323 0.004682663 - 1867600 0.0058280503 0.0024456069 0.0052685688 - 1867700 0.006074449 0.0027144707 0.0056567819 - 1867800 0.0056046855 0.0023292324 0.005044002 - 1867900 0.0043941624 0.0022398044 0.0043682268 - 1868000 0.0069449064 0.0025323319 0.005896271 - 1868100 0.005056309 0.0024367184 0.0048858681 - 1868200 0.004432514 0.0026029173 0.0047499162 - 1868300 0.0055879371 0.0025649645 0.0052716215 - 1868400 0.0064165955 0.002555515 0.0056635535 - 1868500 0.004142929 0.0027433709 0.0047501022 - 1868600 0.0048072647 0.0024361862 0.0047647051 - 1868700 0.0065910979 0.0021200302 0.0053125933 - 1868800 0.0061238979 0.0020461865 0.0050124496 - 1868900 0.0069905102 0.0022254157 0.0056114441 - 1869000 0.0055229613 0.0024310162 0.0051062005 - 1869100 0.0045413492 0.0024716192 0.0046713352 - 1869200 0.0051515995 0.0022691991 0.0047645051 - 1869300 0.0067469758 0.0021033381 0.0053714045 - 1869400 0.0055828077 0.0021583275 0.0048624999 - 1869500 0.0052139482 0.0026243159 0.0051498221 - 1869600 0.005079318 0.0028130262 0.0052733209 - 1869700 0.0060588575 0.0027016982 0.0056364573 - 1869800 0.0050291685 0.0030189164 0.0054549199 - 1869900 0.0067311863 0.0031556171 0.0064160355 - 1870000 0.0045970388 0.003055826 0.0052825167 - 1870100 0.0047071911 0.0031183197 0.0053983654 - 1870200 0.0036611966 0.0027653448 0.004538737 - 1870300 0.0050281081 0.0030187757 0.0054542656 - 1870400 0.0040613395 0.0031679808 0.0051351921 - 1870500 0.0052899385 0.0030097856 0.0055720996 - 1870600 0.0047931903 0.0029567843 0.0052784859 - 1870700 0.0064497639 0.0025379991 0.0056621035 - 1870800 0.0048549254 0.0025874268 0.0049390313 - 1870900 0.0053086069 0.0028929171 0.0054642735 - 1871000 0.0045271697 0.0031103883 0.0053032361 - 1871100 0.0054352786 0.0028497163 0.0054824294 - 1871200 0.0042923301 0.0021121871 0.0041912846 - 1871300 0.0042111552 0.0018624088 0.0039021871 - 1871400 0.0068658141 0.0016359421 0.0049615708 - 1871500 0.0048585128 0.0018529719 0.004206314 - 1871600 0.0044574613 0.0020429153 0.0042019982 - 1871700 0.0045095086 0.0018013234 0.0039856167 - 1871800 0.0047515942 0.0021772487 0.0044788021 - 1871900 0.0055844807 0.0020893481 0.004794331 - 1872000 0.0060568989 0.0020368694 0.0049706798 - 1872100 0.0055906022 0.002696589 0.0054045369 - 1872200 0.0046751733 0.0028447642 0.0051093013 - 1872300 0.0043525343 0.0025376687 0.0046459275 - 1872400 0.0038406768 0.0029443449 0.0048046727 - 1872500 0.0059225974 0.0027310478 0.0055998059 - 1872600 0.0045877437 0.0026833277 0.0049055161 - 1872700 0.0044862427 0.0025867928 0.0047598166 - 1872800 0.005887727 0.0022488809 0.0051007486 - 1872900 0.0045856965 0.0020359606 0.0042571574 - 1873000 0.0053409713 0.0020423972 0.0046294302 - 1873100 0.0044648612 0.0019171423 0.0040798095 - 1873200 0.0061932578 0.0019011504 0.0049010096 - 1873300 0.0059709229 0.0020330527 0.0049252185 - 1873400 0.0049753052 0.0024054374 0.0048153508 - 1873500 0.0065531329 0.0022538175 0.0054279912 - 1873600 0.0055336205 0.0021109923 0.0047913398 - 1873700 0.0052900665 0.0019523872 0.0045147632 - 1873800 0.0050121524 0.001625724 0.0040534853 - 1873900 0.0060611814 0.0013497653 0.00428565 - 1874000 0.004693776 0.0017957223 0.00406927 - 1874100 0.0044753601 0.0020713135 0.004239066 - 1874200 0.0044185325 0.0022862139 0.0044264405 - 1874300 0.0044689851 0.0022301978 0.0043948624 - 1874400 0.0056277661 0.0020457469 0.0047716961 - 1874500 0.0038729654 0.0024082427 0.0042842103 - 1874600 0.0063064562 0.0021835877 0.0052382775 - 1874700 0.0053750015 0.0021432258 0.0047467422 - 1874800 0.0053107539 0.0021563769 0.0047287733 - 1874900 0.0042741216 0.0021196995 0.0041899771 - 1875000 0.0052216247 0.0020633095 0.004592534 - 1875100 0.004906023 0.0027889352 0.0051652901 - 1875200 0.0046724769 0.0031257967 0.0053890277 - 1875300 0.0056826704 0.0030964995 0.005849043 - 1875400 0.004470194 0.0028824018 0.005047652 - 1875500 0.0047423283 0.0024926131 0.0047896784 - 1875600 0.0053438407 0.0023127729 0.0049011957 - 1875700 0.0057637072 0.0021727222 0.0049645179 - 1875800 0.0052734644 0.0020354004 0.0045897348 - 1875900 0.0050565631 0.0020882883 0.0045375611 - 1876000 0.0060488733 0.002035195 0.004965118 - 1876100 0.0055139018 0.0021686337 0.0048394299 - 1876200 0.004570059 0.0024993213 0.0047129436 - 1876300 0.0058475776 0.0022301694 0.0050625897 - 1876400 0.0064599251 0.0024174958 0.005546522 - 1876500 0.0049396332 0.0030327439 0.0054253788 - 1876600 0.0042942825 0.0030565293 0.0051365724 - 1876700 0.0045705533 0.0027379219 0.0049517836 - 1876800 0.004436836 0.0025737108 0.0047228033 - 1876900 0.0048290024 0.0022834716 0.0046225197 - 1877000 0.0051623169 0.002367374 0.0048678713 - 1877100 0.0046748584 0.0022684717 0.0045328563 - 1877200 0.004924722 0.0023522467 0.004737659 - 1877300 0.0046808191 0.0021471774 0.0044144491 - 1877400 0.0045870143 0.0022036652 0.0044255002 - 1877500 0.0048381275 0.0020723379 0.0044158059 - 1877600 0.004686569 0.0023049108 0.0045749677 - 1877700 0.0044435537 0.0025403352 0.0046926816 - 1877800 0.0057242566 0.0025941657 0.0053668525 - 1877900 0.0057094593 0.0025299847 0.0052955041 - 1878000 0.0044295296 0.0027175423 0.0048630957 - 1878100 0.0042316919 0.0028650329 0.0049147586 - 1878200 0.004049512 0.0026551395 0.0046166219 - 1878300 0.0064694431 0.0020433006 0.0051769371 - 1878400 0.0045437807 0.0021770696 0.0043779634 - 1878500 0.0041939368 0.002062141 0.0040935792 - 1878600 0.0037552034 0.0021038975 0.0039228242 - 1878700 0.0041062507 0.0022725421 0.0042615073 - 1878800 0.0051656757 0.0021556282 0.0046577524 - 1878900 0.0054467183 0.0026842335 0.0053224876 - 1879000 0.0060647037 0.002687455 0.0056250458 - 1879100 0.0050362692 0.0027429099 0.0051823528 - 1879200 0.0056102488 0.0019567012 0.0046741654 - 1879300 0.005968766 0.0020862475 0.0049773685 - 1879400 0.005253147 0.0025034669 0.00504796 - 1879500 0.0044225597 0.0029418483 0.0050840256 - 1879600 0.0038666085 0.0027460003 0.0046188888 - 1879700 0.0055457831 0.0020278433 0.004714082 - 1879800 0.005425437 0.0016722291 0.0043001751 - 1879900 0.0043395283 0.0020045469 0.0041065059 - 1880000 0.004225942 0.0019707668 0.0040177074 - 1880100 0.0057243625 0.0019220965 0.0046948346 - 1880200 0.0036094725 0.0021136899 0.0038620281 - 1880300 0.0039130526 0.001948635 0.0038440198 - 1880400 0.0032984745 0.0018797475 0.003477446 - 1880500 0.0056064734 0.0016820166 0.0043976522 - 1880600 0.0043996918 0.0018031562 0.0039342569 - 1880700 0.0043243697 0.0019541601 0.0040487767 - 1880800 0.0053867287 0.0022278545 0.0048370512 - 1880900 0.0051391641 0.0023065071 0.0047957898 - 1881000 0.0043396424 0.0027133315 0.0048153458 - 1881100 0.004766737 0.0023956075 0.0047044957 - 1881200 0.0066194818 0.0020329881 0.0052392996 - 1881300 0.005243104 0.0025338848 0.0050735132 - 1881400 0.0051366542 0.0027328373 0.0052209041 - 1881500 0.0051669881 0.0023630633 0.0048658232 - 1881600 0.005096421 0.0023264615 0.0047950404 - 1881700 0.0071270461 0.0021041753 0.0055563383 - 1881800 0.0046996955 0.0019101482 0.0041865632 - 1881900 0.0049825042 0.0015558939 0.0039692944 - 1882000 0.0056466721 0.001730657 0.0044657638 - 1882100 0.0049183081 0.0018567548 0.0042390603 - 1882200 0.0060133731 0.0020411105 0.0049538381 - 1882300 0.004798766 0.0022266189 0.0045510212 - 1882400 0.0057266873 0.0025366805 0.0053105447 - 1882500 0.0048787865 0.0024987058 0.004861868 - 1882600 0.0043162674 0.0024539069 0.0045445989 - 1882700 0.0037366517 0.0024361645 0.0042461051 - 1882800 0.0042667189 0.0023645868 0.0044312787 - 1882900 0.0046675836 0.0024027486 0.0046636094 - 1883000 0.0038833615 0.0020782918 0.003959295 - 1883100 0.0057658529 0.0019598183 0.0047526533 - 1883200 0.0048107271 0.0017551895 0.0040853854 - 1883300 0.0059966289 0.0016036729 0.00450829 - 1883400 0.0043032267 0.0017464643 0.0038308398 - 1883500 0.0037493347 0.0021214954 0.0039375793 - 1883600 0.004893749 0.0026638301 0.0050342398 - 1883700 0.005891152 0.0026520641 0.0055055908 - 1883800 0.0046283631 0.002266687 0.0045085504 - 1883900 0.0059167218 0.001494648 0.0043605601 - 1884000 0.0035835048 0.0016786759 0.003414436 - 1884100 0.0059443648 0.0016494703 0.004528772 - 1884200 0.0044389143 0.0016242102 0.0037743093 - 1884300 0.0062949255 0.0018161947 0.0048652992 - 1884400 0.0059831664 0.0019572489 0.0048553451 - 1884500 0.0036490217 0.002180089 0.0039475839 - 1884600 0.004712564 0.001869065 0.0041517132 - 1884700 0.0047561217 0.0018954904 0.0041992368 - 1884800 0.0035003084 0.0022582623 0.0039537242 - 1884900 0.0051968001 0.0020213319 0.0045385319 - 1885000 0.0035538557 0.0019405814 0.0036619802 - 1885100 0.00415842 0.00172944 0.0037436747 - 1885200 0.0037322178 0.0020064004 0.0038141934 - 1885300 0.0038571693 0.0021591138 0.0040274302 - 1885400 0.0064345186 0.0023875949 0.0055043148 - 1885500 0.0047309363 0.0026069641 0.0048985113 - 1885600 0.0053883911 0.0020533344 0.0046633364 - 1885700 0.0050654394 0.0015769628 0.004030535 - 1885800 0.0050620112 0.0019593545 0.0044112662 - 1885900 0.0047561122 0.0025347608 0.0048385026 - 1886000 0.0057944571 0.0025532637 0.0053599539 - 1886100 0.0054139168 0.0023700446 0.0049924105 - 1886200 0.0055680812 0.0020550159 0.0047520552 - 1886300 0.0051287 0.0017762777 0.0042604917 - 1886400 0.0044858284 0.0016214446 0.0037942677 - 1886500 0.0041177787 0.0018191285 0.0038136775 - 1886600 0.0057941545 0.0019075638 0.0047141073 - 1886700 0.0042458306 0.0020094225 0.0040659966 - 1886800 0.0053356242 0.0020449974 0.0046294404 - 1886900 0.0047097149 0.0018746642 0.0041559323 - 1887000 0.0050328253 0.0019122534 0.0043500281 - 1887100 0.004736966 0.0020309513 0.0043254192 - 1887200 0.0037147308 0.002043711 0.0038430337 - 1887300 0.0041547725 0.0019126882 0.0039251561 - 1887400 0.0061259204 0.0021421505 0.0051093932 - 1887500 0.0050519878 0.002449652 0.0048967086 - 1887600 0.0075004437 0.0022627548 0.0058957822 - 1887700 0.0056631262 0.0024205634 0.0051636402 - 1887800 0.0072085632 0.002930725 0.0064223727 - 1887900 0.0057277934 0.0029094849 0.0056838848 - 1888000 0.0057732894 0.0024719786 0.0052684156 - 1888100 0.0046991674 0.0022290291 0.0045051883 - 1888200 0.0064132207 0.0017176486 0.0048240524 - 1888300 0.0044625269 0.0022635028 0.0044250393 - 1888400 0.0058971131 0.0026132683 0.0054696825 - 1888500 0.0051838683 0.0025107855 0.0050217217 - 1888600 0.0053563734 0.002550919 0.0051454124 - 1888700 0.0058935851 0.0019922818 0.0048469871 - 1888800 0.0048118521 0.001622489 0.0039532299 - 1888900 0.0056006089 0.0016145775 0.0043273725 - 1889000 0.0058013441 0.001785768 0.004595794 - 1889100 0.0048479461 0.0020918837 0.0044401076 - 1889200 0.0051297022 0.0022654277 0.0047501272 - 1889300 0.0062138118 0.0023929642 0.0054027793 - 1889400 0.0064357724 0.0026961778 0.0058135051 - 1889500 0.0062576921 0.002820378 0.0058514476 - 1889600 0.0065742685 0.0021157389 0.0053001503 - 1889700 0.005202732 0.0021565793 0.0046766526 - 1889800 0.0049913348 0.0028000366 0.0052177144 - 1889900 0.0030877676 0.0027141525 0.0042097899 - 1890000 0.0042740729 0.0024462914 0.0045165454 - 1890100 0.005110471 0.0022088659 0.0046842502 - 1890200 0.0039664404 0.0026135259 0.0045347705 - 1890300 0.0035451491 0.0027515789 0.0044687604 - 1890400 0.0067745053 0.00295295 0.006234351 - 1890500 0.0041054 0.0024912224 0.0044797755 - 1890600 0.0039815785 0.0027319522 0.0046605293 - 1890700 0.0048129594 0.0024968647 0.0048281419 - 1890800 0.005262691 0.0021738206 0.0047229365 - 1890900 0.0058071777 0.0024166675 0.0052295192 - 1891000 0.0051292316 0.0019689146 0.0044533861 - 1891100 0.0053651492 0.001860854 0.0044595981 - 1891200 0.0041660255 0.0023531445 0.0043710631 - 1891300 0.004036933 0.0023457048 0.0043010942 - 1891400 0.0049379281 0.0022642941 0.004656103 - 1891500 0.0045128368 0.0022989655 0.0044848708 - 1891600 0.0051772863 0.0022322929 0.0047400409 - 1891700 0.0043193472 0.0024012922 0.0044934759 - 1891800 0.0047652223 0.002188129 0.0044962835 - 1891900 0.0050397 0.0022845352 0.0047256399 - 1892000 0.0050907931 0.0022445365 0.0047103894 - 1892100 0.0060891686 0.0024896101 0.0054390512 - 1892200 0.0079158549 0.0032148307 0.0070490729 - 1892300 0.0064047822 0.0030261922 0.0061285085 - 1892400 0.0067999499 0.0029825871 0.0062763129 - 1892500 0.0041460233 0.0032032999 0.00521153 - 1892600 0.0054373113 0.0030044884 0.0056381861 - 1892700 0.0052685367 0.0032238496 0.005775797 - 1892800 0.0064160464 0.002836047 0.0059438195 - 1892900 0.0054343766 0.0021463871 0.0047786632 - 1893000 0.0070427434 0.0019279174 0.0053392462 - 1893100 0.0054801733 0.0022440094 0.0048984684 - 1893200 0.0039281664 0.0025187713 0.0044214769 - 1893300 0.0062051998 0.0026550503 0.0056606939 - 1893400 0.0047739104 0.0023181079 0.0046304707 - 1893500 0.0072420339 0.0017187578 0.0052266179 - 1893600 0.0082206867 0.0021248616 0.0061067567 - 1893700 0.0058290721 0.0028460157 0.0056694725 - 1893800 0.00694929 0.0029483955 0.0063144578 - 1893900 0.0054628611 0.0033832866 0.00602936 - 1894000 0.0058891806 0.0031238799 0.0059764518 - 1894100 0.0051045764 0.0025631587 0.0050356879 - 1894200 0.0050188179 0.0021235509 0.0045545408 - 1894300 0.0052704377 0.0021930349 0.0047459031 - 1894400 0.0063309777 0.002320752 0.0053873194 - 1894500 0.0049476224 0.0023796468 0.0047761514 - 1894600 0.0054062481 0.0022086936 0.004827345 - 1894700 0.0044799203 0.0021243265 0.0042942879 - 1894800 0.0044470433 0.0024238095 0.0045778461 - 1894900 0.0041946326 0.0024974062 0.0045291814 - 1895000 0.0049135096 0.0023195701 0.0046995513 - 1895100 0.0053877558 0.0020628335 0.0046725277 - 1895200 0.0050705957 0.0020799925 0.0045360623 - 1895300 0.0046143065 0.0020940926 0.0043291473 - 1895400 0.0042926659 0.0021689117 0.0042481718 - 1895500 0.0040415096 0.0025071778 0.004464784 - 1895600 0.0065452866 0.0029770304 0.0061474036 - 1895700 0.0052224523 0.0028473236 0.0053769489 - 1895800 0.0056170474 0.0023450926 0.0050658499 - 1895900 0.0061364889 0.0020362258 0.0050085876 - 1896000 0.005237734 0.0019877866 0.0045248141 - 1896100 0.0055063499 0.0022472228 0.004914361 - 1896200 0.0059919253 0.0026749681 0.005577307 - 1896300 0.0051001516 0.0025105129 0.0049808989 - 1896400 0.0039890064 0.0029418361 0.0048740111 - 1896500 0.0055217938 0.0025357811 0.0052104 - 1896600 0.0053801661 0.0020190535 0.0046250715 - 1896700 0.0052247271 0.002124987 0.0046557142 - 1896800 0.0052920334 0.0022518001 0.0048151288 - 1896900 0.0059275587 0.0021093711 0.0049805324 - 1897000 0.0045789533 0.0022671568 0.0044850873 - 1897100 0.004523168 0.0023257827 0.0045166922 - 1897200 0.0051227615 0.0020122032 0.0044935408 - 1897300 0.0074432491 0.0021663203 0.005771644 - 1897400 0.0056516197 0.0021584605 0.0048959637 - 1897500 0.0046948132 0.002092301 0.0043663511 - 1897600 0.0047135267 0.0023134812 0.0045965957 - 1897700 0.0048417788 0.0021521145 0.0044973511 - 1897800 0.0052557052 0.0021461667 0.0046918989 - 1897900 0.004456247 0.0019939438 0.0041524385 - 1898000 0.0052062046 0.0018684049 0.0043901603 - 1898100 0.00506864 0.0023676376 0.0048227601 - 1898200 0.0054630513 0.0028217756 0.0054679411 - 1898300 0.0044089673 0.0031387307 0.0052743242 - 1898400 0.0058542196 0.0028963912 0.0057320288 - 1898500 0.0064648477 0.0029520987 0.0060835093 - 1898600 0.0045229276 0.0028171385 0.0050079316 - 1898700 0.0058353584 0.0023529681 0.0051794698 - 1898800 0.0061627989 0.0022132747 0.0051983805 - 1898900 0.0056884 0.0024460427 0.0052013614 - 1899000 0.0042278696 0.0031554496 0.005203324 - 1899100 0.0041105582 0.0034059877 0.0053970394 - 1899200 0.0058299568 0.0026899895 0.0055138748 - 1899300 0.0057912593 0.0021421198 0.004947261 - 1899400 0.0064350801 0.0019114325 0.0050284245 - 1899500 0.0037752498 0.0021702309 0.0039988675 - 1899600 0.0054483252 0.0022162483 0.0048552809 - 1899700 0.0065586686 0.0023204581 0.0054973132 - 1899800 0.0044603494 0.0023310634 0.0044915452 - 1899900 0.0049552088 0.0021379324 0.0045381116 - 1900000 0.0044157576 0.0021970375 0.0043359201 - 1900100 0.0044499778 0.0030293039 0.0051847619 - 1900200 0.0046172578 0.0034949402 0.0057314245 - 1900300 0.0043183051 0.0029882743 0.0050799533 - 1900400 0.0045589279 0.0026579558 0.0048661865 - 1900500 0.0042219557 0.0027639208 0.0048089305 - 1900600 0.0044506156 0.0030862125 0.0052419795 - 1900700 0.0051819713 0.0028736115 0.0053836289 - 1900800 0.0049814737 0.0026012689 0.0050141703 - 1900900 0.0051151638 0.0023224137 0.0048000711 - 1901000 0.0047156988 0.0026773339 0.0049615005 - 1901100 0.0053898683 0.0028589518 0.0054696692 - 1901200 0.0045183381 0.0028678935 0.0050564635 - 1901300 0.0050721917 0.0025072732 0.004964116 - 1901400 0.0059860095 0.0025517873 0.0054512606 - 1901500 0.0055446918 0.0025221631 0.0052078732 - 1901600 0.0067104599 0.002636844 0.005887223 - 1901700 0.0050306039 0.0026600844 0.0050967832 - 1901800 0.0071686684 0.0023243034 0.0057966272 - 1901900 0.0047160254 0.0024341645 0.0047184893 - 1902000 0.0053973467 0.0024217008 0.0050360406 - 1902100 0.0042801114 0.0025567747 0.0046299537 - 1902200 0.0035766503 0.0028051445 0.0045375845 - 1902300 0.003944982 0.0026569819 0.0045678326 - 1902400 0.0056156439 0.0024890799 0.0052091575 - 1902500 0.0058262691 0.0024668359 0.005288935 - 1902600 0.0048542534 0.0022230071 0.0045742861 - 1902700 0.0067323482 0.002505068 0.0057660492 - 1902800 0.0057757627 0.0029676908 0.0057653259 - 1902900 0.0036673363 0.0028533665 0.0046297325 - 1903000 0.0050533007 0.0025058533 0.0049535459 - 1903100 0.0037125912 0.0028070019 0.0046052883 - 1903200 0.004219234 0.0029541969 0.0049978883 - 1903300 0.0061373276 0.0028598322 0.0058326003 - 1903400 0.005308467 0.0028505521 0.0054218408 - 1903500 0.0043080596 0.0026922876 0.004779004 - 1903600 0.0043650738 0.0026671652 0.0047814978 - 1903700 0.0054822421 0.0025797917 0.0052352527 - 1903800 0.004094869 0.0029321994 0.0049156516 - 1903900 0.005156241 0.0025886394 0.0050861936 - 1904000 0.0050353885 0.0022425528 0.0046815691 - 1904100 0.006007924 0.0020703635 0.0049804517 - 1904200 0.0054920162 0.0020211405 0.0046813359 - 1904300 0.0052214824 0.0017135037 0.0042426592 - 1904400 0.0051775555 0.0017835043 0.0042913828 - 1904500 0.0039783165 0.0017674407 0.0036944378 - 1904600 0.0058290316 0.0022004832 0.0050239204 - 1904700 0.0051782347 0.0021110555 0.004619263 - 1904800 0.0053741112 0.0019990871 0.0046021722 - 1904900 0.0054037292 0.0024467821 0.0050642134 - 1905000 0.0069123488 0.0021532719 0.0055014408 - 1905100 0.0076241504 0.0022645707 0.0059575186 - 1905200 0.005900675 0.0026271713 0.0054853108 - 1905300 0.0054894899 0.0028932688 0.0055522405 - 1905400 0.004205048 0.0026894259 0.004726246 - 1905500 0.0051121457 0.0022659506 0.0047421461 - 1905600 0.0042252621 0.0022880687 0.00433468 - 1905700 0.0025846318 0.0024731936 0.0037251246 - 1905800 0.005752638 0.0025050403 0.0052914743 - 1905900 0.0045671949 0.0022495027 0.0044617378 - 1906000 0.0043458025 0.0023693844 0.0044743825 - 1906100 0.0055430264 0.0022870876 0.004971991 - 1906200 0.005386096 0.0022471603 0.0048560505 - 1906300 0.0048368887 0.0020725433 0.0044154112 - 1906400 0.0044126732 0.0017830553 0.0039204439 - 1906500 0.0044789236 0.0017917176 0.0039611962 - 1906600 0.0051084733 0.0019915009 0.0044659176 - 1906700 0.005525633 0.0024129534 0.0050894319 - 1906800 0.0044012013 0.0025201245 0.0046519564 - 1906900 0.0064116897 0.0023521046 0.0054577668 - 1907000 0.0034993029 0.0024277555 0.0041227303 - 1907100 0.0057530052 0.0022021025 0.0049887144 - 1907200 0.0054121494 0.00208219 0.0047036998 - 1907300 0.0060963291 0.002592462 0.0055453714 - 1907400 0.0071445262 0.0028615669 0.0063221967 - 1907500 0.0070749302 0.0030425819 0.0064695012 - 1907600 0.0052720673 0.0031247156 0.0056783731 - 1907700 0.0053190003 0.0035302232 0.0061066139 - 1907800 0.0075270459 0.0030682767 0.0067141896 - 1907900 0.0047216579 0.0029713816 0.0052584346 - 1908000 0.0060847332 0.0028003231 0.0057476157 - 1908100 0.0054935621 0.0024131797 0.0050741239 - 1908200 0.0051972976 0.0028691383 0.0053865793 - 1908300 0.0051075989 0.0027257068 0.0051997 - 1908400 0.0054873066 0.0025768759 0.0052347901 - 1908500 0.0040385715 0.0030030921 0.0049592752 - 1908600 0.0054125124 0.0026874774 0.0053091631 - 1908700 0.0048059255 0.0029330554 0.0052609255 - 1908800 0.0044505596 0.0031678492 0.0053235889 - 1908900 0.0061665884 0.0034134992 0.0064004405 - 1909000 0.0057178809 0.0033760133 0.0061456119 - 1909100 0.0067013543 0.0030160461 0.0062620146 - 1909200 0.0049358416 0.0032534341 0.0056442324 - 1909300 0.0067368385 0.0029227414 0.0061858976 - 1909400 0.0061563772 0.0026434609 0.0056254561 - 1909500 0.0054830931 0.0030855333 0.0057414065 - 1909600 0.0051232523 0.0028712916 0.0053528669 - 1909700 0.003256205 0.0028469541 0.0044241785 - 1909800 0.0062432536 0.0024398294 0.0054639053 - 1909900 0.0045257739 0.002822636 0.0050148078 - 1910000 0.0052465888 0.003173802 0.0057151185 - 1910100 0.0049168462 0.0028281332 0.0052097306 - 1910200 0.0039783065 0.002719723 0.0046467152 - 1910300 0.0054736196 0.0027648393 0.0054161239 - 1910400 0.0048655487 0.0027310778 0.0050878279 - 1910500 0.0045410643 0.002457148 0.004656726 - 1910600 0.0036082287 0.002692882 0.0044406178 - 1910700 0.0052057702 0.002308879 0.0048304239 - 1910800 0.0048898251 0.0023827898 0.0047512989 - 1910900 0.0082490912 0.0027233078 0.0067189613 - 1911000 0.0049468838 0.0034233596 0.0058195064 - 1911100 0.0038155142 0.0036571434 0.0055052831 - 1911200 0.0042322579 0.0032913353 0.0053413352 - 1911300 0.005201257 0.0030308084 0.0055501673 - 1911400 0.0042898312 0.0027332151 0.0048111021 - 1911500 0.0047584419 0.0024322732 0.0047371434 - 1911600 0.0056563264 0.0022741848 0.0050139679 - 1911700 0.0054693774 0.0027759609 0.0054251906 - 1911800 0.0056974736 0.0032328343 0.005992548 - 1911900 0.0053440882 0.0029291293 0.0055176721 - 1912000 0.0055651045 0.0027668657 0.0054624632 - 1912100 0.0044768719 0.0030278438 0.0051963286 - 1912200 0.0062677262 0.0031800428 0.0062159727 - 1912300 0.0055702533 0.0025324083 0.0052304997 - 1912400 0.0059685543 0.002480401 0.0053714195 - 1912500 0.0050727539 0.0030556531 0.0055127683 - 1912600 0.0048160861 0.0027360535 0.0050688452 - 1912700 0.0052744402 0.002875212 0.0054300189 - 1912800 0.0032983382 0.0028363389 0.0044339714 - 1912900 0.0043039641 0.0026281396 0.0047128722 - 1913000 0.0051967018 0.0024702105 0.0049873629 - 1913100 0.0048134159 0.0022210099 0.0045525082 - 1913200 0.0053670141 0.0023226606 0.0049223081 - 1913300 0.0050038767 0.0024017881 0.0048255409 - 1913400 0.0040950884 0.002496837 0.0044803955 - 1913500 0.0067373058 0.0025940067 0.0058573892 - 1913600 0.0050536505 0.0029455892 0.0053934512 - 1913700 0.003934029 0.0025404078 0.0044459531 - 1913800 0.0055822655 0.002218937 0.0049228468 - 1913900 0.0041393723 0.0021496548 0.0041546632 - 1914000 0.0036948737 0.0020724131 0.0038621176 - 1914100 0.0041102291 0.0017259222 0.0037168145 - 1914200 0.0043779282 0.0020009298 0.0041214888 - 1914300 0.007791979 0.0022573249 0.0060315647 - 1914400 0.0059117868 0.0022205321 0.0050840538 - 1914500 0.00490725 0.0022537173 0.0046306665 - 1914600 0.0054329364 0.0021327229 0.0047643015 - 1914700 0.0067238159 0.0023173729 0.0055742213 - 1914800 0.0046745949 0.0033076016 0.0055718585 - 1914900 0.0044319656 0.0029214763 0.0050682097 - 1915000 0.0059878528 0.0022316467 0.0051320129 - 1915100 0.0043159482 0.0021873227 0.0042778601 - 1915200 0.0056205504 0.0023349709 0.005057425 - 1915300 0.0056938265 0.0025409139 0.0052988611 - 1915400 0.0066000622 0.0023835706 0.0055804757 - 1915500 0.0060227437 0.0022747054 0.0051919718 - 1915600 0.0045439944 0.00269988 0.0049008772 - 1915700 0.0045245401 0.0029718634 0.0051634376 - 1915800 0.0064384662 0.0028693615 0.0059879935 - 1915900 0.0066151161 0.0025842872 0.0057884841 - 1916000 0.0039257874 0.0027155833 0.0046171366 - 1916100 0.0040778975 0.0027185103 0.0046937419 - 1916200 0.0042569176 0.0023513276 0.004413272 - 1916300 0.006718874 0.0023505594 0.005605014 - 1916400 0.0044744217 0.0023747237 0.0045420217 - 1916500 0.0062218423 0.0025007727 0.0055144775 - 1916600 0.006188139 0.002418923 0.0054163028 - 1916700 0.0052900352 0.0023569451 0.0049193059 - 1916800 0.0055781189 0.0020612337 0.0047631351 - 1916900 0.0043708865 0.0018825018 0.00399965 - 1917000 0.0040204762 0.0022125133 0.0041599315 - 1917100 0.0061884058 0.0022812415 0.0052787505 - 1917200 0.0052643538 0.0021118118 0.0046617332 - 1917300 0.0035657094 0.002217183 0.0039443235 - 1917400 0.0049159912 0.0024341811 0.0048153643 - 1917500 0.004688752 0.0023716705 0.0046427848 - 1917600 0.0047049216 0.0024112562 0.0046902026 - 1917700 0.0046121369 0.0024304084 0.0046644122 - 1917800 0.0060470462 0.0020830031 0.0050120411 - 1917900 0.0039175285 0.0022910248 0.0041885777 - 1918000 0.0047871197 0.0026970634 0.0050158245 - 1918100 0.0052136192 0.0026433609 0.0051687077 - 1918200 0.0052162228 0.0024474637 0.0049740716 - 1918300 0.0061173607 0.0022322381 0.0051953347 - 1918400 0.0052406541 0.0024429967 0.0049814386 - 1918500 0.0053110601 0.0027093786 0.0052819233 - 1918600 0.0062442279 0.0022157439 0.0052402918 - 1918700 0.0044577563 0.0024217587 0.0045809845 - 1918800 0.0054619061 0.0025245621 0.0051701728 - 1918900 0.0046263499 0.0022590102 0.0044998985 - 1919000 0.0053537395 0.0019375739 0.0045307915 - 1919100 0.0047192058 0.0020624555 0.0043483208 - 1919200 0.0070788893 0.0028785267 0.0063073637 - 1919300 0.0053625148 0.0037975138 0.0063949819 - 1919400 0.0054332742 0.0029643812 0.0055961234 - 1919500 0.0057507679 0.0023721758 0.005157704 - 1919600 0.0047257295 0.0023426492 0.0046316745 - 1919700 0.005480759 0.002401126 0.0050558686 - 1919800 0.0050842429 0.0026752546 0.0051379348 - 1919900 0.0055461631 0.0031684439 0.0058548667 - 1920000 0.0049376008 0.0031833597 0.00557501 - 1920100 0.0062925934 0.0029285174 0.0059764924 - 1920200 0.0057106145 0.002662466 0.0054285449 - 1920300 0.0043998407 0.0023144393 0.0044456122 - 1920400 0.0063500807 0.0022383572 0.0053141776 - 1920500 0.0047942846 0.0022361034 0.004558335 - 1920600 0.003898354 0.0025090869 0.0043973521 - 1920700 0.0069446805 0.0023837169 0.0057475465 - 1920800 0.0044844694 0.0030706552 0.00524282 - 1920900 0.005322221 0.0035375331 0.006115484 - 1921000 0.0051442372 0.0032258597 0.0057175996 - 1921100 0.0046675569 0.0023099084 0.0045707563 - 1921200 0.0054589286 0.0017992989 0.0044434675 - 1921300 0.0041581743 0.0020110185 0.0040251342 - 1921400 0.0043149742 0.0022998931 0.0043899587 - 1921500 0.0047922225 0.002400351 0.0047215838 - 1921600 0.0044423838 0.0025759465 0.0047277261 - 1921700 0.0060545561 0.0022764436 0.0052091192 - 1921800 0.0051867185 0.0020567558 0.0045690726 - 1921900 0.0055428291 0.0023524339 0.0050372417 - 1922000 0.0060637865 0.0025768155 0.0055139621 - 1922100 0.0047390338 0.0023542306 0.0046497001 - 1922200 0.0054125597 0.0022338096 0.0048555183 - 1922300 0.005195517 0.0024335486 0.0049501271 - 1922400 0.0063887887 0.002200314 0.0052948835 - 1922500 0.0055267881 0.0022615009 0.0049385389 - 1922600 0.0063107417 0.0026585435 0.005715309 - 1922700 0.00424083 0.0029526922 0.0050068442 - 1922800 0.0058119182 0.0029435175 0.0057586654 - 1922900 0.0051658958 0.0032262563 0.0057284871 - 1923000 0.0055940046 0.0027754636 0.0054850595 - 1923100 0.0049663112 0.002472526 0.004878083 - 1923200 0.0049507815 0.0021844402 0.004582475 - 1923300 0.0044196971 0.0027166532 0.004857444 - 1923400 0.0066105368 0.0027026314 0.0059046102 - 1923500 0.0055044821 0.0023684218 0.0050346553 - 1923600 0.0039829173 0.0022290693 0.0041582949 - 1923700 0.0045861163 0.0019066507 0.0041280508 - 1923800 0.0046574121 0.002071156 0.00432709 - 1923900 0.0040477889 0.0021541397 0.0041147875 - 1924000 0.0054036753 0.0021439353 0.0047613406 - 1924100 0.0071500346 0.0021608708 0.0056241688 - 1924200 0.0043277428 0.0022848428 0.0043810933 - 1924300 0.0053279903 0.0021193224 0.0047000677 - 1924400 0.0058003937 0.0017312487 0.0045408144 - 1924500 0.0058941724 0.0025520895 0.0054070792 - 1924600 0.0062047853 0.0026323906 0.0056378335 - 1924700 0.0058069251 0.0024386026 0.0052513319 - 1924800 0.0049101434 0.0019017119 0.0042800626 - 1924900 0.0062303618 0.0018149495 0.004832781 - 1925000 0.0052578719 0.0019979348 0.0045447166 - 1925100 0.0065356108 0.0025987993 0.0057644857 - 1925200 0.0047519656 0.0027726185 0.0050743519 - 1925300 0.0056249775 0.0023857581 0.0051103566 - 1925400 0.0051399377 0.0019422296 0.0044318869 - 1925500 0.0040775631 0.0019514756 0.0039265452 - 1925600 0.0068121115 0.0023935311 0.0056931476 - 1925700 0.0070599188 0.0028311334 0.0062507816 - 1925800 0.0049221751 0.0025322055 0.004916384 - 1925900 0.0068473747 0.002112198 0.0054288951 - 1926000 0.0039491399 0.0027006221 0.0046134867 - 1926100 0.0036658086 0.0029339823 0.0047096083 - 1926200 0.0048595424 0.0028823612 0.005236202 - 1926300 0.004911773 0.0027569753 0.0051361154 - 1926400 0.0058005252 0.0022770253 0.0050866547 - 1926500 0.0056316652 0.0016498642 0.004377702 - 1926600 0.0059127215 0.0018576627 0.0047216372 - 1926700 0.0057193456 0.001828754 0.004599062 - 1926800 0.0054672611 0.0019692935 0.0046174981 - 1926900 0.0043417657 0.0023850994 0.0044881421 - 1927000 0.0051123094 0.001896969 0.0043732438 - 1927100 0.0046658301 0.0017541135 0.0040141249 - 1927200 0.0055838912 0.0019134538 0.0046181511 - 1927300 0.0045171678 0.0023989129 0.0045869161 - 1927400 0.0054940238 0.0024731726 0.0051343404 - 1927500 0.0046186468 0.0026019434 0.0048391004 - 1927600 0.005271105 0.003056019 0.0056092105 - 1927700 0.0054981324 0.002903521 0.0055666789 - 1927800 0.0044405898 0.0028301099 0.0049810206 - 1927900 0.0068754665 0.002532235 0.0058625391 - 1928000 0.0049621688 0.0024836653 0.0048872158 - 1928100 0.0050845918 0.002126817 0.0045896662 - 1928200 0.0038909219 0.0019638419 0.0038485072 - 1928300 0.0071969296 0.0020214702 0.0055074829 - 1928400 0.0061079631 0.0021453643 0.0051039089 - 1928500 0.005419172 0.0025847183 0.0052096297 - 1928600 0.0056683673 0.0030469046 0.00579252 - 1928700 0.0059882858 0.0031083961 0.0060089721 - 1928800 0.005966075 0.0028322979 0.0057221155 - 1928900 0.004453263 0.0028972926 0.0050543419 - 1929000 0.0065694606 0.0030917794 0.0062738619 - 1929100 0.004844455 0.0030667707 0.0054133036 - 1929200 0.0065381854 0.0024199223 0.0055868559 - 1929300 0.0042285107 0.002608236 0.0046564209 - 1929400 0.0053280261 0.0026003693 0.0051811319 - 1929500 0.0043478161 0.0028419888 0.0049479622 - 1929600 0.0052139325 0.0030508041 0.0055763027 - 1929700 0.0042024723 0.0031811759 0.0052167484 - 1929800 0.0054266916 0.0031355912 0.0057641449 - 1929900 0.0054432799 0.0025764194 0.0052130081 - 1930000 0.003588451 0.0026400042 0.0043781602 - 1930100 0.0048446637 0.0032163283 0.0055629623 - 1930200 0.0047537108 0.0029343888 0.0052369675 - 1930300 0.0033596629 0.0025310104 0.0041583472 - 1930400 0.0041483699 0.0025154543 0.004524821 - 1930500 0.0052950419 0.0026427655 0.0052075514 - 1930600 0.0060290994 0.0025087032 0.0054290482 - 1930700 0.0049364212 0.0026817369 0.0050728159 - 1930800 0.0062852919 0.0025327523 0.0055771906 - 1930900 0.0054179263 0.0025883007 0.0052126087 - 1931000 0.0040635729 0.002553903 0.0045221961 - 1931100 0.0041155046 0.0022323782 0.0042258257 - 1931200 0.0042860957 0.0017578194 0.003833897 - 1931300 0.0051256651 0.0017015862 0.0041843303 - 1931400 0.0041220785 0.0018690432 0.0038656749 - 1931500 0.0060627369 0.0019603292 0.0048969674 - 1931600 0.005525398 0.0015740379 0.0042504026 - 1931700 0.0051531545 0.0015823515 0.0040784107 - 1931800 0.0043724027 0.0017684269 0.0038863095 - 1931900 0.0054414741 0.0016877853 0.0043234993 - 1932000 0.0060198707 0.001745908 0.0046617829 - 1932100 0.0032653 0.0025426012 0.0041242309 - 1932200 0.0047635945 0.0023305068 0.0046378729 - 1932300 0.005667073 0.0023206857 0.0050656742 - 1932400 0.0052073973 0.0022794726 0.0048018057 - 1932500 0.0045380352 0.002197239 0.0043953498 - 1932600 0.0056580075 0.0020173864 0.0047579837 - 1932700 0.004544143 0.0017784764 0.0039795456 - 1932800 0.0058126978 0.0019462168 0.0047617423 - 1932900 0.0064032158 0.0024615516 0.0055631093 - 1933000 0.0062727279 0.0020845797 0.0051229323 - 1933100 0.0046411452 0.0023528394 0.0046008941 - 1933200 0.0054364198 0.0021261898 0.0047594556 - 1933300 0.0056747306 0.001966533 0.0047152306 - 1933400 0.0041718552 0.0024456809 0.0044664233 - 1933500 0.0067513602 0.002097642 0.0053678321 - 1933600 0.0038407999 0.0021727892 0.0040331767 - 1933700 0.0042482021 0.0020733723 0.0041310952 - 1933800 0.0043787643 0.0021589949 0.0042799588 - 1933900 0.0053666011 0.0023221663 0.0049216137 - 1934000 0.0047767824 0.0025455383 0.0048592922 - 1934100 0.0044637932 0.002858411 0.0050205609 - 1934200 0.0049563381 0.0028724634 0.0052731896 - 1934300 0.0057809156 0.0024654787 0.0052656097 - 1934400 0.0065162827 0.0027048915 0.0058612159 - 1934500 0.0050220735 0.0032146203 0.0056471871 - 1934600 0.0054945013 0.0030924902 0.0057538893 - 1934700 0.0054276138 0.0025397309 0.0051687313 - 1934800 0.0051920276 0.0021110809 0.0046259693 - 1934900 0.0048468575 0.00193222 0.0042799166 - 1935000 0.0037901133 0.0020382571 0.0038740932 - 1935100 0.0047677902 0.0018402431 0.0041496414 - 1935200 0.0051895949 0.001731499 0.004245209 - 1935300 0.0050808098 0.0021683886 0.0046294058 - 1935400 0.0053721035 0.0019450034 0.004547116 - 1935500 0.0052777084 0.0021857548 0.0047421448 - 1935600 0.0065473156 0.0022291894 0.0054005454 - 1935700 0.0073060273 0.0021164536 0.0056553106 - 1935800 0.0055892017 0.0021257832 0.0048330528 - 1935900 0.0036123295 0.0025679207 0.0043176428 - 1936000 0.0038876584 0.0025239053 0.0044069898 - 1936100 0.0048818371 0.002104575 0.0044692149 - 1936200 0.0066004427 0.0024944978 0.0056915872 - 1936300 0.0060742932 0.002905859 0.0058480947 - 1936400 0.0062607428 0.0029779558 0.0060105031 - 1936500 0.004402305 0.0027632046 0.0048955711 - 1936600 0.0046865566 0.0023749216 0.0046449724 - 1936700 0.0061839653 0.0026214388 0.005616797 - 1936800 0.0052543025 0.0028814411 0.0054264939 - 1936900 0.0042946074 0.0026343311 0.0047145316 - 1937000 0.0044583823 0.0021528921 0.004312421 - 1937100 0.0044869254 0.0022535556 0.0044269101 - 1937200 0.0048355605 0.0020209118 0.0043631364 - 1937300 0.0066638961 0.0022997553 0.00552758 - 1937400 0.0037488705 0.0025006946 0.0043165537 - 1937500 0.0059028123 0.0022247854 0.0050839602 - 1937600 0.0052035104 0.0027894393 0.0053098896 - 1937700 0.005893412 0.0028762809 0.0057309023 - 1937800 0.0051764207 0.0025534618 0.0050607906 - 1937900 0.0055455122 0.0023642792 0.0050503866 - 1938000 0.0042742247 0.0019526762 0.0040230038 - 1938100 0.0053906087 0.001973706 0.0045847821 - 1938200 0.0062094134 0.0023514397 0.0053591244 - 1938300 0.0045042099 0.0027682141 0.0049499408 - 1938400 0.0046701841 0.0026946725 0.0049567929 - 1938500 0.0046924689 0.0024980571 0.0047709717 - 1938600 0.0045040222 0.0028228987 0.0050045344 - 1938700 0.0060670921 0.0032402563 0.0061790041 - 1938800 0.0051638349 0.0033757848 0.0058770173 - 1938900 0.0064059533 0.0034017244 0.006504608 - 1939000 0.0059636596 0.0031688747 0.0060575223 - 1939100 0.006400036 0.0027884007 0.0058884182 - 1939200 0.0043202583 0.0027211141 0.0048137392 - 1939300 0.0056753466 0.0028288735 0.0055778695 - 1939400 0.0060402424 0.0027939633 0.0057197058 - 1939500 0.0045572467 0.0030751509 0.0052825673 - 1939600 0.0074726358 0.0029376592 0.0065572171 - 1939700 0.0059151477 0.0027820104 0.0056471601 - 1939800 0.0055067586 0.0027682873 0.0054356235 - 1939900 0.0065455323 0.0033076992 0.0064781914 - 1940000 0.0053260458 0.0031668298 0.0057466332 - 1940100 0.0060658146 0.0028141583 0.0057522872 - 1940200 0.004861609 0.0030469658 0.0054018076 - 1940300 0.0045965388 0.0029133561 0.0051398045 - 1940400 0.0055746211 0.0023386076 0.0050388147 - 1940500 0.0053054369 0.0026086981 0.0051785191 - 1940600 0.0049469713 0.0026270879 0.0050232772 - 1940700 0.0073131228 0.0026281287 0.0061704225 - 1940800 0.0057340298 0.0034515461 0.0062289668 - 1940900 0.0054200953 0.0037555634 0.006380922 - 1941000 0.0050114566 0.0035145699 0.0059419942 - 1941100 0.0051031051 0.0038370433 0.0063088599 - 1941200 0.0056213299 0.003051018 0.0057738497 - 1941300 0.0042591938 0.002214242 0.004277289 - 1941400 0.0050683016 0.00197035 0.0044253085 - 1941500 0.0055921772 0.0022729302 0.004981641 - 1941600 0.0054532024 0.0026669515 0.0053083464 - 1941700 0.004229918 0.0032548749 0.0053037414 - 1941800 0.0044327563 0.0034906228 0.0056377391 - 1941900 0.0035397855 0.0034378913 0.0051524749 - 1942000 0.0057764583 0.003051769 0.005849741 - 1942100 0.00584852 0.001951808 0.0047846849 - 1942200 0.0061820295 0.002008404 0.0050028245 - 1942300 0.0046054724 0.0020439559 0.0042747316 - 1942400 0.0046783306 0.001721521 0.0039875874 - 1942500 0.0047187825 0.0013562373 0.0036418976 - 1942600 0.004225412 0.0013194538 0.0033661378 - 1942700 0.0047390035 0.001702855 0.0039983099 - 1942800 0.0063852489 0.0020581977 0.0051510527 - 1942900 0.0072990447 0.0024291385 0.0059646133 - 1943000 0.0051055236 0.0027874513 0.0052604393 - 1943100 0.0046435015 0.0023104857 0.0045596817 - 1943200 0.005221346 0.0018046707 0.0043337602 - 1943300 0.0036142612 0.002299325 0.0040499827 - 1943400 0.0048541541 0.0023338744 0.0046851053 - 1943500 0.0049721139 0.0023489872 0.0047573549 - 1943600 0.0030748233 0.0022962563 0.0037856238 - 1943700 0.0060902698 0.0022079142 0.0051578887 - 1943800 0.0042415506 0.0024655797 0.0045200808 - 1943900 0.0072340449 0.0020574313 0.0055614218 - 1944000 0.0048654376 0.0018263065 0.0041830029 - 1944100 0.0058931848 0.0016884755 0.0045429869 - 1944200 0.0058376833 0.0021086764 0.0049363043 - 1944300 0.00670255 0.0027030243 0.005949572 - 1944400 0.0053105365 0.0027619885 0.0053342796 - 1944500 0.0046576407 0.0025227105 0.0047787552 - 1944600 0.0044275627 0.0024910502 0.0046356509 - 1944700 0.0039081971 0.0024563801 0.004349413 - 1944800 0.0067856214 0.0023488247 0.00563561 - 1944900 0.0062679911 0.0022805332 0.0053165913 - 1945000 0.0046928195 0.0025061738 0.0047792582 - 1945100 0.0061664891 0.0026098363 0.0055967294 - 1945200 0.006403695 0.0028400443 0.005941834 - 1945300 0.004229117 0.002875805 0.0049242835 - 1945400 0.0046124379 0.0024872674 0.004721417 - 1945500 0.0048660062 0.002341422 0.0046983937 - 1945600 0.0069100343 0.0018903704 0.0052374183 - 1945700 0.0054406872 0.0018558797 0.0044912126 - 1945800 0.0051933832 0.0022146238 0.0047301688 - 1945900 0.0043490338 0.0022164891 0.0043230524 - 1946000 0.0051359415 0.0023136442 0.0048013658 - 1946100 0.004122937 0.0025921725 0.0045892201 - 1946200 0.006126726 0.0026184607 0.0055860936 - 1946300 0.0039062862 0.0028544052 0.0047465126 - 1946400 0.005340179 0.0021231339 0.0047097831 - 1946500 0.0036686247 0.0019464465 0.0037234366 - 1946600 0.0037921734 0.0021007238 0.0039375578 - 1946700 0.0048521136 0.0023237361 0.0046739786 - 1946800 0.0060773084 0.0023604375 0.0053041338 - 1946900 0.0052423486 0.0026466873 0.0051859499 - 1947000 0.0056478166 0.0025523781 0.0052880393 - 1947100 0.0037777268 0.002504245 0.0043340814 - 1947200 0.0058944753 0.0019920139 0.0048471504 - 1947300 0.0059018557 0.0019559148 0.0048146262 - 1947400 0.0044774371 0.0022865131 0.0044552717 - 1947500 0.0042407296 0.0020979631 0.0041520665 - 1947600 0.0044003475 0.0019552981 0.0040867165 - 1947700 0.0049184074 0.0017671576 0.0041495112 - 1947800 0.0053858012 0.0022150025 0.0048237499 - 1947900 0.0045053646 0.0026767257 0.0048590117 - 1948000 0.0057015541 0.0028304549 0.0055921452 - 1948100 0.0048878011 0.0030133628 0.0053808914 - 1948200 0.0045995604 0.00275435 0.0049822621 - 1948300 0.0061863108 0.0020682125 0.0050647068 - 1948400 0.0047053495 0.0019027405 0.0041818942 - 1948500 0.0056574493 0.0018808563 0.0046211833 - 1948600 0.0043424087 0.0017054533 0.0038088075 - 1948700 0.0036941868 0.0016916969 0.0034810686 - 1948800 0.0046643107 0.0018233496 0.0040826251 - 1948900 0.004245351 0.002092464 0.0041488059 - 1949000 0.0051737056 0.0023156868 0.0048217004 - 1949100 0.0040125219 0.0019632255 0.0039067909 - 1949200 0.004545149 0.0018821053 0.0040836619 - 1949300 0.0042895754 0.002108772 0.0041865351 - 1949400 0.0044568842 0.0022550226 0.0044138259 - 1949500 0.0071234752 0.0019165951 0.0053670284 - 1949600 0.0044078021 0.0019558641 0.0040908932 - 1949700 0.0050184235 0.0022647281 0.0046955269 - 1949800 0.0062543112 0.0019890647 0.0050184967 - 1949900 0.0037023066 0.0022014401 0.0039947449 - 1950000 0.005205802 0.0026722163 0.0051937767 - 1950100 0.0062757341 0.0023461744 0.0053859831 - 1950200 0.0053392283 0.0024609231 0.0050471118 - 1950300 0.0050500492 0.0027583698 0.0052044874 - 1950400 0.0048527877 0.0029634688 0.0053140378 - 1950500 0.0059871412 0.0030138878 0.0059139094 - 1950600 0.0063337428 0.0030210892 0.0060889959 - 1950700 0.0052009124 0.0028439915 0.0053631834 - 1950800 0.0050981704 0.0027103311 0.0051797574 - 1950900 0.0046691958 0.0024165827 0.0046782244 - 1951000 0.0048146308 0.0019532869 0.0042853737 - 1951100 0.0040043118 0.0020571328 0.0039967213 - 1951200 0.0049136297 0.0016102402 0.0039902796 - 1951300 0.0042424684 0.0017435179 0.0037984635 - 1951400 0.0041242976 0.0023624454 0.0043601521 - 1951500 0.0059726382 0.0025834822 0.0054764788 - 1951600 0.0064972755 0.0029821422 0.00612926 - 1951700 0.0057475002 0.0023183776 0.0051023231 - 1951800 0.0049042964 0.0019548835 0.004330402 - 1951900 0.0063046391 0.0021516686 0.0052054782 - 1952000 0.0043589469 0.0020502277 0.0041615925 - 1952100 0.0060783123 0.0018799987 0.0048241812 - 1952200 0.0034716945 0.0021824738 0.0038640758 - 1952300 0.0043714133 0.0021782343 0.0042956377 - 1952400 0.005280284 0.0018900586 0.0044476962 - 1952500 0.0058664125 0.0021985672 0.0050401108 - 1952600 0.0042244821 0.0024977711 0.0045440047 - 1952700 0.0064310181 0.0020445623 0.0051595867 - 1952800 0.0049710797 0.0020274326 0.0044352993 - 1952900 0.0045028085 0.0026314385 0.0048124864 - 1953000 0.0065371642 0.0025942498 0.0057606887 - 1953100 0.0066682662 0.0022420747 0.0054720162 - 1953200 0.0036052339 0.0024522868 0.004198572 - 1953300 0.0045946949 0.002378023 0.0046035784 - 1953400 0.00477614 0.0022333381 0.0045467808 - 1953500 0.0040442534 0.0021303665 0.0040893018 - 1953600 0.0052815992 0.0019285515 0.0044868261 - 1953700 0.0046030948 0.0025816278 0.0048112519 - 1953800 0.0053124367 0.0020846826 0.0046578941 - 1953900 0.0051696366 0.0018757677 0.0043798105 - 1954000 0.0074818305 0.0014708889 0.0050949005 - 1954100 0.0059830439 0.0016951194 0.0045931564 - 1954200 0.0041130165 0.0025104363 0.0045026787 - 1954300 0.0040806888 0.0028807755 0.0048573591 - 1954400 0.0058569486 0.0024426199 0.0052795793 - 1954500 0.0047748605 0.0023312931 0.0046441162 - 1954600 0.0063299726 0.0019907943 0.0050568748 - 1954700 0.0038749232 0.0023362223 0.0042131383 - 1954800 0.0044083974 0.0022677487 0.0044030662 - 1954900 0.0041749586 0.002575238 0.0045974836 - 1955000 0.0058547472 0.0026503823 0.0054862754 - 1955100 0.0054735005 0.0028547051 0.0055059319 - 1955200 0.0066110264 0.0029907507 0.0061929666 - 1955300 0.0052371692 0.0024268348 0.0049635886 - 1955400 0.0060137026 0.0022200104 0.0051328976 - 1955500 0.0053590747 0.0020125439 0.0046083457 - 1955600 0.0057942961 0.001829265 0.0046358772 - 1955700 0.0045069836 0.002064399 0.0042474692 - 1955800 0.0028633332 0.0020570509 0.003443978 - 1955900 0.0053245287 0.0014843542 0.0040634228 - 1956000 0.0045233484 0.0013945085 0.0035855054 - 1956100 0.0063744112 0.0014166444 0.0045042498 - 1956200 0.0059571462 0.001880113 0.0047656057 - 1956300 0.0049583954 0.0019016454 0.0043033681 - 1956400 0.0044204734 0.0019897976 0.0041309644 - 1956500 0.0047831875 0.002014239 0.0043310954 - 1956600 0.0041055149 0.0021437387 0.0041323475 - 1956700 0.0060120835 0.0022461659 0.0051582688 - 1956800 0.0048176935 0.0023105859 0.0046441562 - 1956900 0.0059918734 0.0020323519 0.0049346656 - 1957000 0.005097943 0.0022913868 0.0047607029 - 1957100 0.0052188959 0.002353474 0.0048813767 - 1957200 0.0052832082 0.0023753953 0.0049344492 - 1957300 0.0077135131 0.0020369698 0.0057732026 - 1957400 0.0061879307 0.0023980093 0.0053952883 - 1957500 0.0064158669 0.0027847931 0.0058924787 - 1957600 0.0055844273 0.0027947956 0.0054997526 - 1957700 0.0042443174 0.0024245732 0.0044804144 - 1957800 0.0044602389 0.0026513851 0.0048118133 - 1957900 0.006158813 0.0025421013 0.0055252763 - 1958000 0.0058279682 0.0020623481 0.0048852702 - 1958100 0.0040183032 0.0017615936 0.0037079592 - 1958200 0.0038416156 0.0017925673 0.0036533498 - 1958300 0.0047622324 0.0022769038 0.0045836102 - 1958400 0.0057673987 0.0027548794 0.0055484631 - 1958500 0.0058256668 0.0026797272 0.0055015346 - 1958600 0.005606342 0.0028425703 0.0055581422 - 1958700 0.0044018962 0.0031474432 0.0052796116 - 1958800 0.0068361448 0.0027510618 0.0060623194 - 1958900 0.005956803 0.0025557482 0.0054410746 - 1959000 0.0048196335 0.0024561714 0.0047906813 - 1959100 0.0045024429 0.0018525584 0.0040334292 - 1959200 0.0065321431 0.0019178471 0.0050818539 - 1959300 0.0039865123 0.0028774845 0.0048084514 - 1959400 0.0049732963 0.0032274365 0.0056363769 - 1959500 0.0044303743 0.003034413 0.0051803755 - 1959600 0.0059748838 0.0026355566 0.0055296409 - 1959700 0.0045669359 0.0025639432 0.0047760528 - 1959800 0.0056174681 0.0021286715 0.0048496326 - 1959900 0.0039787854 0.0018230644 0.0037502885 - 1960000 0.0043702883 0.0018197585 0.0039366169 - 1960100 0.0046717617 0.0021029098 0.0043657944 - 1960200 0.0039060418 0.0020744119 0.0039664009 - 1960300 0.0052645547 0.0021146997 0.0046647185 - 1960400 0.0045274298 0.001894392 0.0040873659 - 1960500 0.0049449777 0.0021133084 0.0045085319 - 1960600 0.0052554633 0.0021001547 0.0046457697 - 1960700 0.0049222083 0.0023657313 0.004749926 - 1960800 0.0046527356 0.0023075766 0.0045612454 - 1960900 0.0052869775 0.0020636233 0.0046245031 - 1961000 0.0035849838 0.0022292553 0.0039657318 - 1961100 0.0040996707 0.0025924621 0.00457824 - 1961200 0.0048480842 0.0019968839 0.0043451747 - 1961300 0.0043836429 0.0015766238 0.0036999508 - 1961400 0.005134109 0.0019508331 0.0044376671 - 1961500 0.0063223401 0.0023485514 0.0054109349 - 1961600 0.0056617193 0.0028739577 0.0056163529 - 1961700 0.0061104913 0.0028711164 0.0058308857 - 1961800 0.0039069593 0.0023706876 0.004263121 - 1961900 0.0056807574 0.002436064 0.0051876808 - 1962000 0.0039953676 0.0029453362 0.0048805924 - 1962100 0.0037230502 0.0026018508 0.0044052032 - 1962200 0.0038795071 0.0027216413 0.0046007776 - 1962300 0.0071768405 0.0023816472 0.0058579293 - 1962400 0.005405101 0.0026084756 0.0052265714 - 1962500 0.0041673234 0.0028148603 0.0048334076 - 1962600 0.004989111 0.0025712547 0.0049878554 - 1962700 0.0033936847 0.0024234008 0.0040672168 - 1962800 0.005146328 0.0024292192 0.0049219718 - 1962900 0.0062139592 0.0025410084 0.0055508949 - 1963000 0.0048856918 0.0024715717 0.0048380787 - 1963100 0.0048877481 0.0025687031 0.0049362061 - 1963200 0.0061600113 0.0027488979 0.0057326533 - 1963300 0.0051668485 0.0031212801 0.0056239723 - 1963400 0.004796229 0.0033849079 0.0057080813 - 1963500 0.0064901499 0.0027465439 0.0058902102 - 1963600 0.0049995249 0.0026733202 0.005094965 - 1963700 0.0060694867 0.0024461418 0.0053860494 - 1963800 0.0044389899 0.0024379986 0.0045881344 - 1963900 0.0041192671 0.0024972757 0.0044925457 - 1964000 0.0044731595 0.0020981707 0.0042648573 - 1964100 0.0061553204 0.0018181885 0.0047996718 - 1964200 0.0041696274 0.0017188646 0.0037385279 - 1964300 0.0035611192 0.0015705621 0.0032954792 - 1964400 0.0035782927 0.0019167752 0.0036500107 - 1964500 0.0056158655 0.0022641806 0.0049843654 - 1964600 0.0041059066 0.0023263417 0.0043151402 - 1964700 0.0038937764 0.0024393851 0.004325433 - 1964800 0.0069307578 0.0025497371 0.0059068229 - 1964900 0.0053878812 0.0027493608 0.0053591157 - 1965000 0.0064602479 0.0025418261 0.0056710086 - 1965100 0.0050866897 0.002606692 0.0050705573 - 1965200 0.0055577587 0.0026632069 0.0053552462 - 1965300 0.0053032321 0.0027575158 0.0053262688 - 1965400 0.0054482398 0.0025362095 0.0051752007 - 1965500 0.0058227454 0.0020405503 0.0048609426 - 1965600 0.0068704891 0.0024043677 0.0057322609 - 1965700 0.0068144301 0.0027667175 0.0060674571 - 1965800 0.0040656864 0.0024551339 0.0044244507 - 1965900 0.0063331825 0.0021690624 0.0052366976 - 1966000 0.0059347292 0.0022528503 0.0051274848 - 1966100 0.0038014443 0.002395169 0.0042364936 - 1966200 0.0051626019 0.002402328 0.0049029633 - 1966300 0.0055720666 0.0024380918 0.0051370616 - 1966400 0.0045167335 0.0020777425 0.0042655352 - 1966500 0.0051957139 0.0018010772 0.0043177511 - 1966600 0.0037150002 0.0020400365 0.0038394897 - 1966700 0.0041872098 0.0021180504 0.0041462302 - 1966800 0.00465358 0.0021848257 0.0044389035 - 1966900 0.0062002548 0.0027371496 0.0057403981 - 1967000 0.0057532758 0.0025965471 0.0053832901 - 1967100 0.0061909045 0.0026552122 0.0056539315 - 1967200 0.0058882778 0.0021289476 0.0049810822 - 1967300 0.0048178375 0.0021041628 0.0044378028 - 1967400 0.0047987529 0.0023754572 0.0046998532 - 1967500 0.0047794899 0.0022176643 0.0045327297 - 1967600 0.0044560078 0.0025284402 0.004686819 - 1967700 0.0046207226 0.0029978622 0.0052360248 - 1967800 0.0045441823 0.0027242031 0.0049252913 - 1967900 0.0042010496 0.0025077714 0.0045426548 - 1968000 0.0051831559 0.0015424749 0.0040530661 - 1968100 0.0044980132 0.0015126516 0.0036913768 - 1968200 0.0052936774 0.0019109596 0.0044750846 - 1968300 0.0054982661 0.0023438293 0.0050070519 - 1968400 0.0052859491 0.0022122354 0.004772617 - 1968500 0.0063679749 0.0020335453 0.0051180331 - 1968600 0.0059179053 0.0020508671 0.0049173525 - 1968700 0.0061646476 0.0020515531 0.0050375543 - 1968800 0.0055456491 0.002212246 0.0048984198 - 1968900 0.0036189282 0.0026052277 0.004358146 - 1969000 0.0055062192 0.002573247 0.0052403219 - 1969100 0.0043925083 0.0021020917 0.0042297129 - 1969200 0.0051957778 0.0021091525 0.0046258573 - 1969300 0.0059397662 0.0019518892 0.0048289634 - 1969400 0.0042516611 0.0019568573 0.0040162556 - 1969500 0.0056378026 0.0019161023 0.004646913 - 1969600 0.0056264339 0.0022012944 0.0049265983 - 1969700 0.0045997285 0.0025249533 0.0047529468 - 1969800 0.0062267986 0.002665873 0.0056819786 - 1969900 0.0049730875 0.0029549784 0.0053638176 - 1970000 0.0064854485 0.0030570939 0.0061984831 - 1970100 0.0080774649 0.0027469063 0.0066594283 - 1970200 0.0043251534 0.0025904999 0.0046854961 - 1970300 0.0062825382 0.0027827784 0.0058258829 - 1970400 0.004528342 0.0031298734 0.0053232891 - 1970500 0.0056682583 0.0029247608 0.0056703235 - 1970600 0.0057537252 0.0027874039 0.0055743646 - 1970700 0.0047225525 0.0025042377 0.0047917241 - 1970800 0.0053366631 0.0023905823 0.0049755285 - 1970900 0.0089082225 0.0027393317 0.007054252 - 1971000 0.0049441819 0.003062321 0.0054571591 - 1971100 0.0054766257 0.0032058845 0.005858625 - 1971200 0.0042832485 0.0030911895 0.005165888 - 1971300 0.0042925749 0.0027016 0.0047808159 - 1971400 0.0042251995 0.0026380988 0.0046846798 - 1971500 0.0057608068 0.0023601876 0.0051505784 - 1971600 0.0048267975 0.0021694997 0.0045074797 - 1971700 0.0036845697 0.002277363 0.0040620765 - 1971800 0.0040564366 0.0025434426 0.0045082791 - 1971900 0.0053801013 0.0030542676 0.0056602542 - 1972000 0.0049635061 0.0031348497 0.005539048 - 1972100 0.0052640529 0.0029293056 0.0054790813 - 1972200 0.0044742313 0.0026739334 0.0048411392 - 1972300 0.0056218147 0.0023577961 0.0050808626 - 1972400 0.0037431127 0.0024419225 0.0042549927 - 1972500 0.005060015 0.0025287977 0.0049797425 - 1972600 0.004866404 0.0028103724 0.0051675368 - 1972700 0.0040923386 0.0028180666 0.0048002931 - 1972800 0.0052979951 0.0026281261 0.0051943425 - 1972900 0.0046227859 0.0026969517 0.0049361136 - 1973000 0.0043350752 0.0023557858 0.0044555878 - 1973100 0.0039664036 0.0028230566 0.0047442833 - 1973200 0.0053598809 0.0029705491 0.0055667414 - 1973300 0.0052497984 0.0029784724 0.0055213435 - 1973400 0.0047805678 0.0027277293 0.0050433169 - 1973500 0.0054698797 0.002779874 0.0054293469 - 1973600 0.0067283504 0.0023810291 0.0056400738 - 1973700 0.0041397623 0.0026570758 0.0046622731 - 1973800 0.0036262128 0.0029934372 0.0047498841 - 1973900 0.006031899 0.003181333 0.0061030341 - 1974000 0.0063327192 0.0033460501 0.006413461 - 1974100 0.0052555677 0.0031859296 0.0057315952 - 1974200 0.005185452 0.0031881479 0.0056998512 - 1974300 0.0061520968 0.0032340787 0.0062140006 - 1974400 0.0060844363 0.0031463562 0.006093505 - 1974500 0.0054164261 0.0030716635 0.0056952449 - 1974600 0.0054331191 0.0029142453 0.0055459123 - 1974700 0.0074740317 0.0022399864 0.0058602206 - 1974800 0.0060482682 0.0025337519 0.0054633817 - 1974900 0.0050154909 0.0027719504 0.0052013288 - 1975000 0.0045335664 0.0030395025 0.0052354487 - 1975100 0.0046638217 0.0028020992 0.0050611378 - 1975200 0.004873034 0.002848826 0.0052092018 - 1975300 0.0042910303 0.002913311 0.0049917787 - 1975400 0.0051556367 0.0031093931 0.0056066547 - 1975500 0.0040694394 0.0030316112 0.0050027459 - 1975600 0.0058378983 0.002423874 0.005251606 - 1975700 0.0053371129 0.0021502419 0.004735406 - 1975800 0.0070446923 0.0021047481 0.0055170209 - 1975900 0.006559973 0.0023314058 0.0055088927 - 1976000 0.0052979827 0.0023618796 0.00492809 - 1976100 0.0045817236 0.0026409467 0.0048602191 - 1976200 0.004473997 0.0024717308 0.0046388231 - 1976300 0.0037308915 0.0021052169 0.0039123675 - 1976400 0.0050736595 0.0021350389 0.0045925927 - 1976500 0.0047211873 0.0026576123 0.0049444374 - 1976600 0.0051823742 0.002915772 0.0054259845 - 1976700 0.0055667224 0.0029714565 0.0056678377 - 1976800 0.0038088425 0.0026669281 0.0045118362 - 1976900 0.0052066277 0.0022477273 0.0047696876 - 1977000 0.0042668185 0.0028161513 0.0048828915 - 1977100 0.0040233428 0.0032010428 0.0051498494 - 1977200 0.0059016387 0.0025410678 0.0053996741 - 1977300 0.0060788044 0.0025806854 0.0055251063 - 1977400 0.0062889813 0.0028776728 0.0059238981 - 1977500 0.0032107879 0.003219768 0.0047749934 - 1977600 0.0048271814 0.0031008448 0.0054390108 - 1977700 0.0039721478 0.0031140292 0.0050380383 - 1977800 0.0049130448 0.0027406432 0.0051203993 - 1977900 0.0039220526 0.0026374838 0.004537228 - 1978000 0.0049530761 0.0026458429 0.0050449892 - 1978100 0.0058477313 0.0027040842 0.0055365791 - 1978200 0.0046354224 0.0029584259 0.0052037086 - 1978300 0.005457118 0.0031401241 0.0057834156 - 1978400 0.0043750854 0.0035560459 0.0056752279 - 1978500 0.0050376813 0.0029973742 0.0054375011 - 1978600 0.0055113232 0.0025874049 0.005256952 - 1978700 0.0048874684 0.0028211325 0.0051885 - 1978800 0.004561218 0.0030247895 0.0052341295 - 1978900 0.004649609 0.0029502179 0.0052023723 - 1979000 0.0061386174 0.0029548338 0.0059282266 - 1979100 0.0043850939 0.0030199504 0.0051439803 - 1979200 0.0059819611 0.0027335317 0.0056310441 - 1979300 0.0048187475 0.0027734638 0.0051075446 - 1979400 0.0045799377 0.0029437671 0.0051621745 - 1979500 0.005523774 0.0024135131 0.0050890911 - 1979600 0.0040420342 0.0019942777 0.003952138 - 1979700 0.0057359773 0.0017813829 0.0045597469 - 1979800 0.0042200444 0.0023567126 0.0044007966 - 1979900 0.0051318171 0.0028423141 0.005328038 - 1980000 0.0064015161 0.0024439437 0.0055446781 - 1980100 0.0053352823 0.0025956758 0.0051799532 - 1980200 0.0050231942 0.002769345 0.0052024547 - 1980300 0.006619252 0.0020366298 0.00524283 - 1980400 0.0062049134 0.0018875618 0.0048930668 - 1980500 0.0051416895 0.0021138048 0.0046043107 - 1980600 0.0052995442 0.0028344629 0.0054014297 - 1980700 0.0056324243 0.0026775714 0.0054057769 - 1980800 0.0070507367 0.0029468265 0.0063620271 - 1980900 0.0048590894 0.0028670738 0.0052206952 - 1981000 0.0043643056 0.0030986563 0.0052126168 - 1981100 0.0059884883 0.0028801275 0.0057808015 - 1981200 0.0052383865 0.0025165771 0.0050539206 - 1981300 0.0042253591 0.0024423829 0.0044890413 - 1981400 0.0041889244 0.0027406088 0.0047696191 - 1981500 0.0042360903 0.003124121 0.0051759772 - 1981600 0.0055854364 0.0025034131 0.0052088588 - 1981700 0.0060298884 0.0023962616 0.0053169888 - 1981800 0.0051099318 0.0029115977 0.0053867209 - 1981900 0.007432557 0.0031682516 0.0067683964 - 1982000 0.0051651015 0.0027414071 0.0052432531 - 1982100 0.0031482323 0.0023919215 0.0039168466 - 1982200 0.0050324706 0.0019992191 0.004436822 - 1982300 0.0045776837 0.0022314753 0.0044487909 - 1982400 0.0050757808 0.0025842099 0.0050427912 - 1982500 0.0038937605 0.0025762614 0.0044623017 - 1982600 0.0048099064 0.0020768117 0.0044066102 - 1982700 0.0048078708 0.0020836694 0.0044124818 - 1982800 0.0038340538 0.0027345713 0.0045916911 - 1982900 0.0046449049 0.0026494406 0.0048993164 - 1983000 0.0055783579 0.0021691463 0.0048711634 - 1983100 0.0047203041 0.0019030225 0.0041894198 - 1983200 0.0055060166 0.0022998265 0.0049668032 - 1983300 0.0055737916 0.0024850769 0.0051848822 - 1983400 0.0050966465 0.0024651767 0.0049338649 - 1983500 0.0034818344 0.0028266297 0.0045131432 - 1983600 0.0059945363 0.0026177563 0.0055213598 - 1983700 0.004267897 0.0022676125 0.0043348751 - 1983800 0.0056603714 0.0022174523 0.0049591946 - 1983900 0.0051517181 0.0022974572 0.0047928206 - 1984000 0.0051474378 0.0025681994 0.0050614896 - 1984100 0.005460167 0.0024815444 0.0051263129 - 1984200 0.0054376744 0.0018492774 0.0044831509 - 1984300 0.0055410768 0.0018767829 0.004560742 - 1984400 0.0050647983 0.0021000771 0.0045533388 - 1984500 0.0043126595 0.0030772223 0.0051661667 - 1984600 0.0037685928 0.0029275743 0.0047529864 - 1984700 0.0081352754 0.0023483682 0.0062888923 - 1984800 0.0057769913 0.0024488912 0.0052471214 - 1984900 0.004978804 0.001879708 0.0042913162 - 1985000 0.0048145303 0.0016232973 0.0039553354 - 1985100 0.0051224975 0.0016960054 0.0041772151 - 1985200 0.0069831704 0.0019689625 0.0053514357 - 1985300 0.0060294024 0.002259717 0.0051802088 - 1985400 0.0057887876 0.0023596115 0.0051635555 - 1985500 0.005588287 0.0019500888 0.0046569153 - 1985600 0.0056547797 0.0018248935 0.0045639275 - 1985700 0.0033519597 0.0015875152 0.0032111206 - 1985800 0.0047733698 0.0019011104 0.0042132115 - 1985900 0.0049710853 0.0020709354 0.0044788048 - 1986000 0.0051061302 0.0020213273 0.0044946091 - 1986100 0.0054134899 0.0021487742 0.0047709334 - 1986200 0.0040267681 0.002647106 0.0045975718 - 1986300 0.0043519756 0.0028408882 0.0049488764 - 1986400 0.0067032628 0.0024620465 0.0057089395 - 1986500 0.005056597 0.0022323524 0.0046816416 - 1986600 0.0051228808 0.0019012453 0.0043826406 - 1986700 0.0058110347 0.0019400205 0.0047547404 - 1986800 0.0050110146 0.002240595 0.0046678052 - 1986900 0.005864026 0.0020852965 0.0049256841 - 1987000 0.0056545357 0.0017174938 0.0044564095 - 1987100 0.0056803806 0.0017661794 0.0045176137 - 1987200 0.0062633742 0.0024604312 0.0054942531 - 1987300 0.0054471498 0.0024218447 0.0050603078 - 1987400 0.0044758873 0.0021148092 0.0042828171 - 1987500 0.0051304638 0.0026949514 0.0051800198 - 1987600 0.0033567354 0.0028827272 0.0045086459 - 1987700 0.0057063021 0.0026394497 0.0054034398 - 1987800 0.0046798921 0.0024753942 0.004742217 - 1987900 0.0054774371 0.0019866846 0.0046398182 - 1988000 0.0050890975 0.0021466774 0.004611709 - 1988100 0.0038729382 0.0023440655 0.0042200199 - 1988200 0.0055760036 0.0018172397 0.0045181165 - 1988300 0.0047048483 0.0017158983 0.0039948092 - 1988400 0.0046541239 0.0018986344 0.0041529757 - 1988500 0.0042934389 0.0021489599 0.0042285943 - 1988600 0.0047159057 0.0027011784 0.0049854453 - 1988700 0.005847541 0.0027889251 0.0056213278 - 1988800 0.004829912 0.0025011755 0.0048406641 - 1988900 0.0056956836 0.0020999981 0.0048588448 - 1989000 0.0047076006 0.0022881468 0.0045683908 - 1989100 0.005091665 0.0021371748 0.0046034501 - 1989200 0.004117067 0.0018519146 0.0038461189 - 1989300 0.0060880931 0.0015364795 0.0044853996 - 1989400 0.0035161215 0.0018072419 0.0035103633 - 1989500 0.0043151298 0.0020787266 0.0041688676 - 1989600 0.0052430814 0.002514277 0.0050538946 - 1989700 0.0043809065 0.0025939534 0.0047159549 - 1989800 0.0041960335 0.0025453096 0.0045777634 - 1989900 0.0039563302 0.0026856849 0.0046020323 - 1990000 0.0057348699 0.0022228385 0.0050006661 - 1990100 0.0047898563 0.0022843105 0.0046043972 - 1990200 0.0051976815 0.0025090598 0.0050266868 - 1990300 0.0050077625 0.0023855288 0.0048111637 - 1990400 0.0053204764 0.0023640181 0.0049411239 - 1990500 0.0052841198 0.0020073376 0.0045668331 - 1990600 0.0053451514 0.0018676685 0.0044567262 - 1990700 0.0033328477 0.0019433734 0.0035577215 - 1990800 0.0044006934 0.0019865754 0.0041181613 - 1990900 0.0050452301 0.0020408853 0.0044846686 - 1991000 0.0065300025 0.0023365408 0.0054995107 - 1991100 0.0051928278 0.0024265468 0.0049418228 - 1991200 0.0053469544 0.0028286653 0.0054185964 - 1991300 0.0034592909 0.0029405703 0.0046161643 - 1991400 0.0057569225 0.002730733 0.0055192423 - 1991500 0.0057598209 0.002308152 0.0050980653 - 1991600 0.005152249 0.0025708244 0.005066445 - 1991700 0.0044006429 0.0029145105 0.0050460719 - 1991800 0.0053758242 0.0030241416 0.0056280565 - 1991900 0.0049695684 0.0032815402 0.0056886749 - 1992000 0.0055769618 0.0034554958 0.0061568366 - 1992100 0.0059583852 0.0032399942 0.006126087 - 1992200 0.0046716994 0.002824056 0.0050869104 - 1992300 0.0048192819 0.0025829998 0.0049173394 - 1992400 0.0038993345 0.002542284 0.0044310241 - 1992500 0.0058376134 0.0024547601 0.0052823541 - 1992600 0.0060848393 0.0020066323 0.0049539764 - 1992700 0.0052477907 0.0020321311 0.0045740297 - 1992800 0.005249679 0.0025529926 0.0050958058 - 1992900 0.0053727672 0.0029005984 0.0055030325 - 1993000 0.0052625154 0.002932028 0.0054810588 - 1993100 0.0047142363 0.0029994144 0.0052828727 - 1993200 0.0053191154 0.0028774698 0.0054539163 - 1993300 0.0048289049 0.0025951217 0.0049341224 - 1993400 0.0076168859 0.0025009687 0.0061903978 - 1993500 0.0039761104 0.0032317131 0.0051576416 - 1993600 0.0044341498 0.0032938349 0.0054416262 - 1993700 0.0044275168 0.0031057684 0.0052503469 - 1993800 0.0075731693 0.0026348982 0.0063031521 - 1993900 0.0038286962 0.0026274942 0.0044820189 - 1994000 0.0050633462 0.0021650901 0.0046176484 - 1994100 0.0056199345 0.0020324649 0.0047546207 - 1994200 0.0048056788 0.0024693387 0.0047970894 - 1994300 0.006459677 0.0024678261 0.0055967322 - 1994400 0.0053801503 0.0024082668 0.0050142771 - 1994500 0.0048374889 0.0022730389 0.0046161976 - 1994600 0.0071441213 0.0018187729 0.0052792067 - 1994700 0.0064209046 0.0015227998 0.0046329255 - 1994800 0.0059406221 0.0016856726 0.0045631614 - 1994900 0.0045269071 0.0019621556 0.0041548762 - 1995000 0.0052455402 0.0020446714 0.0045854799 - 1995100 0.0042616975 0.00222956 0.0042938197 - 1995200 0.0039930582 0.0022136127 0.0041477503 - 1995300 0.0041277274 0.0018235115 0.0038228795 - 1995400 0.0050126134 0.0016191577 0.0040471423 - 1995500 0.0051791589 0.0019933343 0.0045019894 - 1995600 0.0063261234 0.0020172697 0.0050814857 - 1995700 0.0040529898 0.0017794217 0.0037425886 - 1995800 0.004570197 0.0017709365 0.0039846257 - 1995900 0.0054443845 0.0021039712 0.0047410949 - 1996000 0.0065881402 0.0020022043 0.0051933347 - 1996100 0.0047293703 0.0021049099 0.0043956986 - 1996200 0.0058157538 0.002259823 0.0050768287 - 1996300 0.0040998142 0.0023433742 0.0043292217 - 1996400 0.0052792745 0.0026857358 0.0052428843 - 1996500 0.0044951832 0.0025509056 0.00472826 - 1996600 0.0066010422 0.0021231854 0.0053205652 - 1996700 0.0038160025 0.0020482724 0.0038966486 - 1996800 0.0039766657 0.0021095955 0.0040357929 - 1996900 0.0044950258 0.002243618 0.0044208961 - 1997000 0.0045608723 0.0024545671 0.0046637396 - 1997100 0.005528286 0.0025390388 0.0052168023 - 1997200 0.0045379632 0.0023606972 0.0045587731 - 1997300 0.004636872 0.0025142273 0.0047602122 - 1997400 0.0053189046 0.0027464507 0.0053227951 - 1997500 0.0048530074 0.002783892 0.0051345675 - 1997600 0.0057274054 0.0021685357 0.0049427477 - 1997700 0.0038524705 0.0019583496 0.00382439 - 1997800 0.0051296654 0.0022335132 0.0047181949 - 1997900 0.0051018744 0.0027812269 0.0052524473 - 1998000 0.0047275885 0.0028043102 0.0050942359 - 1998100 0.0070847667 0.0019055429 0.0053372267 - 1998200 0.0065207742 0.0018082562 0.0049667562 - 1998300 0.0061191428 0.0020378316 0.0050017913 - 1998400 0.0063659105 0.0026460546 0.0057295425 - 1998500 0.0043373725 0.0027045125 0.0048054273 - 1998600 0.0048756101 0.0024999167 0.0048615404 - 1998700 0.0046508855 0.0023965866 0.0046493593 - 1998800 0.0062661518 0.0022217336 0.0052569009 - 1998900 0.0061555738 0.0023546222 0.0053362283 - 1999000 0.0043069574 0.0024786217 0.0045648042 - 1999100 0.0055141568 0.0028549884 0.0055259081 - 1999200 0.0034372635 0.0027990632 0.0044639877 - 1999300 0.0048351937 0.0023526277 0.0046946746 - 1999400 0.0057087851 0.0020335116 0.0047987044 - 1999500 0.0033912965 0.0023030393 0.0039456986 - 1999600 0.0054813169 0.0023096891 0.004964702 - 1999700 0.0048389727 0.0021943385 0.0045382159 - 1999800 0.0059277298 0.0020055057 0.0048767498 - 1999900 0.0059290305 0.002299977 0.0051718512 - 2000000 0.0047343315 0.0026625608 0.0049557526 -Loop time of 36.7413 on 1 procs for 2000000 steps with 64 atoms - -Pair time (%) = 0 (0) -Bond time (%) = 6.21948 (16.9278) -Neigh time (%) = 3.63757 (9.9005) -Comm time (%) = 3.27223 (8.90612) -Outpt time (%) = 2.95884 (8.05317) -Other time (%) = 20.6532 (56.2125) - -Nlocal: 64 ave 64 max 64 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 4 ave 4 max 4 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 0 ave 0 max 0 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 0 -Ave neighs/atom = 0 -Ave special neighs/atom = 6 -Neighbor list builds = 2000000 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/phonon.bin.2000000 b/examples/PACKAGES/phonon/2-1D-diatomic/phonon.bin.2000000 deleted file mode 100644 index e68a1d56d40..00000000000 Binary files a/examples/PACKAGES/phonon/2-1D-diatomic/phonon.bin.2000000 and /dev/null differ diff --git a/examples/PACKAGES/phonon/2-1D-diatomic/phonon.log b/examples/PACKAGES/phonon/2-1D-diatomic/phonon.log deleted file mode 100644 index 86c0a385cec..00000000000 --- a/examples/PACKAGES/phonon/2-1D-diatomic/phonon.log +++ /dev/null @@ -1,206 +0,0 @@ -############################################################ -# group name of the atoms under study : all -# total number of atoms in the group : 64 -# dimension of the system : 1 D -# number of atoms per unit cell : 2 -# dimension of the FFT mesh : 32 x 1 x 1 -# number of wait steps before measurement : 500000 -# frequency of the measurement : 10 -# output result after this many measurement: 50000 -# number of processors used by this run : 1 -############################################################ -# mapping information between lattice index and atom id -# nx ny nz nucell -32 1 1 2 -# l1 l2 l3 k atom_id -0 0 0 0 1 -0 0 0 1 2 -1 0 0 0 3 -1 0 0 1 4 -2 0 0 0 5 -2 0 0 1 6 -3 0 0 0 7 -3 0 0 1 8 -4 0 0 0 9 -4 0 0 1 10 -5 0 0 0 11 -5 0 0 1 12 -6 0 0 0 13 -6 0 0 1 14 -7 0 0 0 15 -7 0 0 1 16 -8 0 0 0 17 -8 0 0 1 18 -9 0 0 0 19 -9 0 0 1 20 -10 0 0 0 21 -10 0 0 1 22 -11 0 0 0 23 -11 0 0 1 24 -12 0 0 0 25 -12 0 0 1 26 -13 0 0 0 27 -13 0 0 1 28 -14 0 0 0 29 -14 0 0 1 30 -15 0 0 0 31 -15 0 0 1 32 -16 0 0 0 33 -16 0 0 1 34 -17 0 0 0 35 -17 0 0 1 36 -18 0 0 0 37 -18 0 0 1 38 -19 0 0 0 39 -19 0 0 1 40 -20 0 0 0 41 -20 0 0 1 42 -21 0 0 0 43 -21 0 0 1 44 -22 0 0 0 45 -22 0 0 1 46 -23 0 0 0 47 -23 0 0 1 48 -24 0 0 0 49 -24 0 0 1 50 -25 0 0 0 51 -25 0 0 1 52 -26 0 0 0 53 -26 0 0 1 54 -27 0 0 0 55 -27 0 0 1 56 -28 0 0 0 57 -28 0 0 1 58 -29 0 0 0 59 -29 0 0 1 60 -30 0 0 0 61 -30 0 0 1 62 -31 0 0 0 63 -31 0 0 1 64 -############################################################ -############################################################ -# Current time step : 1000000 -# Total number of measurements : 50000 -# Average temperature of the measurement : 0.00499889 -# Boltzmann constant under current units : 1 -# basis vector A1 = [2 0 0] -# basis vector A2 = [0 1 0] -# basis vector A3 = [0 0 1] -############################################################ -# qx qy qz Phi(q) -0 0 0 2.0269 0 -1.43323 0 -1.43323 0 1.01345 0 -0.03125 0 0 2.06958 0 -1.44367 0.144297 -1.44367 -0.144297 1.03745 0 -0.0625 0 0 2.00734 -7.10386e-17 -1.36818 0.273607 -1.36818 -0.273607 1.02097 0 -0.09375 0 0 2.06033 7.36546e-16 -1.32894 0.389454 -1.32894 -0.389454 1.00889 3.19674e-16 -0.125 0 0 2.04516 7.25738e-16 -1.20961 0.516478 -1.20961 -0.516478 1.0073 2.84154e-16 -0.15625 0 0 2.05756 0 -1.12954 0.615757 -1.12954 -0.615757 1.02862 0 -0.1875 0 0 2.01319 0 -0.970491 0.627631 -0.970491 -0.627631 0.998014 0 -0.21875 0 0 1.92269 1.42077e-16 -0.863486 0.66779 -0.863486 -0.66779 1.00343 8.73509e-17 -0.25 0 0 1.99044 1.71855e-16 -0.671658 0.661397 -0.671658 -0.661397 0.956893 7.10386e-17 -0.28125 0 0 1.96341 -7.10386e-17 -0.556809 0.66713 -0.556809 -0.66713 0.987126 4.2268e-17 -0.3125 0 0 2.04354 0 -0.442943 0.661601 -0.442943 -0.661601 0.961726 1.77596e-17 -0.34375 0 0 1.98412 0 -0.313464 0.632666 -0.313464 -0.632666 1.01134 -2.21836e-17 -0.375 0 0 2.00509 2.17993e-17 -0.187554 0.499349 -0.187554 -0.499349 0.953607 -8.87982e-18 -0.40625 0 0 1.91679 0 -0.0962947 0.408121 -0.0962947 -0.408121 1.02919 0 -0.4375 0 0 1.98963 0 -0.0137565 0.277826 -0.0137565 -0.277826 1.01624 0 -0.46875 0 0 2.08228 0 -0.0312083 0.0872272 -0.0312083 -0.0872272 0.991567 0 -0.5 0 0 1.95481 0 0.0542224 0 0.0542224 0 1.00583 0 -0.53125 0 0 2.08228 0 -0.0312083 -0.0872272 -0.0312083 0.0872272 0.991567 0 -0.5625 0 0 1.98963 0 -0.0137565 -0.277826 -0.0137565 0.277826 1.01624 0 -0.59375 0 0 1.91679 0 -0.0962947 -0.408121 -0.0962947 0.408121 1.02919 0 -0.625 0 0 2.00509 -2.17993e-17 -0.187554 -0.499349 -0.187554 0.499349 0.953607 8.87982e-18 -0.65625 0 0 1.98412 0 -0.313464 -0.632666 -0.313464 0.632666 1.01134 2.21836e-17 -0.6875 0 0 2.04354 0 -0.442943 -0.661601 -0.442943 0.661601 0.961726 -1.77596e-17 -0.71875 0 0 1.96341 7.10386e-17 -0.556809 -0.66713 -0.556809 0.66713 0.987126 -4.2268e-17 -0.75 0 0 1.99044 -1.71855e-16 -0.671658 -0.661397 -0.671658 0.661397 0.956893 -7.10386e-17 -0.78125 0 0 1.92269 -1.42077e-16 -0.863486 -0.66779 -0.863486 0.66779 1.00343 -8.73509e-17 -0.8125 0 0 2.01319 0 -0.970491 -0.627631 -0.970491 0.627631 0.998014 0 -0.84375 0 0 2.05756 0 -1.12954 -0.615757 -1.12954 0.615757 1.02862 0 -0.875 0 0 2.04516 -7.25738e-16 -1.20961 -0.516478 -1.20961 0.516478 1.0073 -2.84154e-16 -0.90625 0 0 2.06033 -7.36546e-16 -1.32894 -0.389454 -1.32894 0.389454 1.00889 -3.19674e-16 -0.9375 0 0 2.00734 7.10386e-17 -1.36818 -0.273607 -1.36818 0.273607 1.02097 0 -0.96875 0 0 2.06958 0 -1.44367 -0.144297 -1.44367 0.144297 1.03745 0 -############################################################ -# Current time step : 1500000 -# Total number of measurements : 100000 -# Average temperature of the measurement : 0.00499969 -# Boltzmann constant under current units : 1 -# basis vector A1 = [2 0 0] -# basis vector A2 = [0 1 0] -# basis vector A3 = [0 0 1] -############################################################ -# qx qy qz Phi(q) -0 0 0 2.00227 0 -1.41582 0 -1.41582 0 1.00114 0 -0.03125 0 0 2.06839 -2.94857e-15 -1.44775 0.141336 -1.44775 -0.141336 1.03568 -1.48867e-15 -0.0625 0 0 1.99449 0 -1.35985 0.267438 -1.35985 -0.267438 0.997747 0 -0.09375 0 0 2.01906 7.07225e-16 -1.30258 0.390432 -1.30258 -0.390432 1.00279 3.55249e-16 -0.125 0 0 2.0047 0 -1.19787 0.503497 -1.19787 -0.503497 1.00067 -3.55249e-17 -0.15625 0 0 2.05042 4.26299e-16 -1.12849 0.613659 -1.12849 -0.613659 1.03457 1.85685e-16 -0.1875 0 0 1.99151 0 -0.971684 0.625667 -0.971684 -0.625667 0.990665 0 -0.21875 0 0 1.96519 -7.10498e-17 -0.861495 0.687109 -0.861495 -0.687109 1.0008 0 -0.25 0 0 2.01865 0 -0.687312 0.684014 -0.687312 -0.684014 0.977055 0 -0.28125 0 0 1.9933 0 -0.560168 0.698726 -0.560168 -0.698726 1.00805 -4.40715e-17 -0.3125 0 0 2.01323 0 -0.446505 0.648764 -0.446505 -0.648764 1.00283 -1.77625e-17 -0.34375 0 0 2.00398 0 -0.313827 0.630741 -0.313827 -0.630741 0.996834 0 -0.375 0 0 2.0191 0 -0.216211 0.499651 -0.216211 -0.499651 0.978322 0 -0.40625 0 0 1.97734 -4.44061e-18 -0.102328 0.398954 -0.102328 -0.398954 1.03793 0 -0.4375 0 0 1.99332 -2.22031e-18 -0.0639782 0.238226 -0.0639782 -0.238226 1.00811 -1.3774e-18 -0.46875 0 0 2.02854 0 -0.0151203 0.0911116 -0.0151203 -0.0911116 1.00593 0 -0.5 0 0 1.99466 0 0.0671755 0 0.0671755 0 0.967275 0 -0.53125 0 0 2.02854 0 -0.0151203 -0.0911116 -0.0151203 0.0911116 1.00593 0 -0.5625 0 0 1.99332 2.22031e-18 -0.0639782 -0.238226 -0.0639782 0.238226 1.00811 1.3774e-18 -0.59375 0 0 1.97734 4.44061e-18 -0.102328 -0.398954 -0.102328 0.398954 1.03793 0 -0.625 0 0 2.0191 0 -0.216211 -0.499651 -0.216211 0.499651 0.978322 0 -0.65625 0 0 2.00398 0 -0.313827 -0.630741 -0.313827 0.630741 0.996834 0 -0.6875 0 0 2.01323 0 -0.446505 -0.648764 -0.446505 0.648764 1.00283 1.77625e-17 -0.71875 0 0 1.9933 0 -0.560168 -0.698726 -0.560168 0.698726 1.00805 4.40715e-17 -0.75 0 0 2.01865 0 -0.687312 -0.684014 -0.687312 0.684014 0.977055 0 -0.78125 0 0 1.96519 7.10498e-17 -0.861495 -0.687109 -0.861495 0.687109 1.0008 0 -0.8125 0 0 1.99151 0 -0.971684 -0.625667 -0.971684 0.625667 0.990665 0 -0.84375 0 0 2.05042 -4.26299e-16 -1.12849 -0.613659 -1.12849 0.613659 1.03457 -1.85685e-16 -0.875 0 0 2.0047 0 -1.19787 -0.503497 -1.19787 0.503497 1.00067 3.55249e-17 -0.90625 0 0 2.01906 -7.07225e-16 -1.30258 -0.390432 -1.30258 0.390432 1.00279 -3.55249e-16 -0.9375 0 0 1.99449 0 -1.35985 -0.267438 -1.35985 0.267438 0.997747 0 -0.96875 0 0 2.06839 2.94857e-15 -1.44775 -0.141336 -1.44775 0.141336 1.03568 1.48867e-15 -############################################################ -# Current time step : 2000000 -# Total number of measurements : 150000 -# Average temperature of the measurement : 0.00499897 -# Boltzmann constant under current units : 1 -# basis vector A1 = [2 0 0] -# basis vector A2 = [0 1 0] -# basis vector A3 = [0 0 1] -############################################################ -# qx qy qz Phi(q) -0 0 0 1.99479 0 -1.41053 0 -1.41053 0 0.997396 0 -0.03125 0 0 2.03068 0 -1.41965 0.138345 -1.41965 -0.138345 1.0155 0 -0.0625 0 0 1.99892 7.10396e-17 -1.36162 0.269053 -1.36162 -0.269053 1.00066 0 -0.09375 0 0 2.00599 0 -1.29893 0.389829 -1.29893 -0.389829 0.995323 0 -0.125 0 0 1.991 6.87803e-16 -1.20232 0.495552 -1.20232 -0.495552 0.991252 2.84159e-16 -0.15625 0 0 2.05187 1.42079e-16 -1.12612 0.617447 -1.12612 -0.617447 1.02736 0 -0.1875 0 0 1.97476 7.10396e-17 -0.972012 0.630423 -0.972012 -0.630423 0.996946 0 -0.21875 0 0 2.00314 0 -0.862555 0.695244 -0.862555 -0.695244 0.999215 0 -0.25 0 0 1.9755 0 -0.69573 0.680591 -0.69573 -0.680591 0.988546 0 -0.28125 0 0 1.99393 0 -0.560979 0.692292 -0.560979 -0.692292 0.995507 -3.55198e-17 -0.3125 0 0 2.00817 0 -0.436753 0.642127 -0.436753 -0.642127 0.989051 0 -0.34375 0 0 2.02348 0 -0.310766 0.620888 -0.310766 -0.620888 1.01631 0 -0.375 0 0 2.01177 0 -0.213987 0.483325 -0.213987 -0.483325 0.98933 0 -0.40625 0 0 1.97394 0 -0.116509 0.382146 -0.116509 -0.382146 1.03672 0 -0.4375 0 0 1.98656 0 -0.0609164 0.250798 -0.0609164 -0.250798 1.01266 1.39007e-18 -0.46875 0 0 2.03013 0 -0.0242785 0.120597 -0.0242785 -0.120597 1.02741 1.78858e-19 -0.5 0 0 1.98872 0 0.0648313 0 0.0648313 0 0.973791 0 -0.53125 0 0 2.03013 0 -0.0242785 -0.120597 -0.0242785 0.120597 1.02741 -1.78858e-19 -0.5625 0 0 1.98656 0 -0.0609164 -0.250798 -0.0609164 0.250798 1.01266 -1.39007e-18 -0.59375 0 0 1.97394 0 -0.116509 -0.382146 -0.116509 0.382146 1.03672 0 -0.625 0 0 2.01177 0 -0.213987 -0.483325 -0.213987 0.483325 0.98933 0 -0.65625 0 0 2.02348 0 -0.310766 -0.620888 -0.310766 0.620888 1.01631 0 -0.6875 0 0 2.00817 0 -0.436753 -0.642127 -0.436753 0.642127 0.989051 0 -0.71875 0 0 1.99393 0 -0.560979 -0.692292 -0.560979 0.692292 0.995507 3.55198e-17 -0.75 0 0 1.9755 0 -0.69573 -0.680591 -0.69573 0.680591 0.988546 0 -0.78125 0 0 2.00314 0 -0.862555 -0.695244 -0.862555 0.695244 0.999215 0 -0.8125 0 0 1.97476 -7.10396e-17 -0.972012 -0.630423 -0.972012 0.630423 0.996946 0 -0.84375 0 0 2.05187 -1.42079e-16 -1.12612 -0.617447 -1.12612 0.617447 1.02736 0 -0.875 0 0 1.991 -6.87803e-16 -1.20232 -0.495552 -1.20232 0.495552 0.991252 -2.84159e-16 -0.90625 0 0 2.00599 0 -1.29893 -0.389829 -1.29893 0.389829 0.995323 0 -0.9375 0 0 1.99892 -7.10396e-17 -1.36162 -0.269053 -1.36162 0.269053 1.00066 0 -0.96875 0 0 2.03068 0 -1.41965 -0.138345 -1.41965 0.138345 1.0155 0 diff --git a/examples/PACKAGES/reaction/create_atoms_polystyrene/in.grow_styrene b/examples/PACKAGES/reaction/create_atoms_polystyrene/in.grow_styrene index 7860db4e55c..dcca29c0267 100644 --- a/examples/PACKAGES/reaction/create_atoms_polystyrene/in.grow_styrene +++ b/examples/PACKAGES/reaction/create_atoms_polystyrene/in.grow_styrene @@ -40,7 +40,7 @@ fix 1 statted_grp_REACT nvt temp $T $T 100 fix 4 bond_react_MASTER_group temp/rescale 1 $T $T 1 1 -thermo_style custom step temp press density f_myrxns[1] +thermo_style custom step temp press density f_myrxns[*] thermo 100 diff --git a/examples/PACKAGES/reaction/nylon,6-6_melt/in.large_nylon_melt b/examples/PACKAGES/reaction/nylon,6-6_melt/in.large_nylon_melt index 9678a714d62..635b2c97509 100644 --- a/examples/PACKAGES/reaction/nylon,6-6_melt/in.large_nylon_melt +++ b/examples/PACKAGES/reaction/nylon,6-6_melt/in.large_nylon_melt @@ -26,7 +26,7 @@ read_data large_nylon_melt.data.gz & extra/angle/per/atom 15 & extra/dihedral/per/atom 15 & extra/improper/per/atom 25 & - extra/special/per/atom 25 + extra/special/per/atom 25 velocity all create 800.0 4928459 dist gaussian @@ -50,7 +50,7 @@ fix 1 statted_grp_REACT nvt temp 800 800 100 # you can use the internally created 'bond_react_MASTER_group', like so: # fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts +thermo_style custom step temp press density f_myrxns[*] # cumulative reaction counts # restart 100 restart1 restart2 diff --git a/examples/PACKAGES/reaction/tiny_epoxy/in.tiny_epoxy.stabilized b/examples/PACKAGES/reaction/tiny_epoxy/in.tiny_epoxy.stabilized index 57b03b630ff..7e0350cdb08 100644 --- a/examples/PACKAGES/reaction/tiny_epoxy/in.tiny_epoxy.stabilized +++ b/examples/PACKAGES/reaction/tiny_epoxy/in.tiny_epoxy.stabilized @@ -20,7 +20,8 @@ improper_style class2 special_bonds lj/coul 0 0 1 pair_modify tail yes mix sixthpower -read_data tiny_epoxy.data +read_data tiny_epoxy.data & + extra/special/per/atom 25 velocity all create 300.0 4928459 dist gaussian @@ -44,7 +45,7 @@ fix rxns all bond/react stabilization yes statted_grp .03 & fix 1 statted_grp_REACT nvt temp 300 300 100 -thermo_style custom step temp f_rxns[1] f_rxns[2] f_rxns[3] f_rxns[4] +thermo_style custom step temp f_rxns[*] run 2000 diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized index 95b39033db9..853bc45f1ea 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized @@ -50,7 +50,7 @@ fix 1 statted_grp_REACT nvt temp 300 300 100 # by using the internally-created 'bond_react_MASTER_group', like so: fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] +thermo_style custom step temp press density f_myrxns[*] # restart 100 restart1 restart2 diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability index 88b5a95a413..f3c32f3cbd2 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability @@ -54,7 +54,7 @@ fix 1 statted_grp_REACT nvt temp 300 300 100 # by using the internally-created 'bond_react_MASTER_group', like so: fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 -thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[*] # restart 100 restart1 restart2 diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized index a569e28d43c..e5cbaaaf868 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized @@ -47,7 +47,7 @@ fix myrxns all bond/react stabilization no & fix 1 all nve/limit .03 -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] +thermo_style custom step temp press density f_myrxns[*] # restart 100 restart1 restart2 diff --git a/examples/PACKAGES/reaction/tiny_polystyrene/in.tiny_polystyrene.stabilized b/examples/PACKAGES/reaction/tiny_polystyrene/in.tiny_polystyrene.stabilized index 4ecc4817195..230998fcd3b 100644 --- a/examples/PACKAGES/reaction/tiny_polystyrene/in.tiny_polystyrene.stabilized +++ b/examples/PACKAGES/reaction/tiny_polystyrene/in.tiny_polystyrene.stabilized @@ -51,7 +51,7 @@ fix 1 statted_grp_REACT nvt temp $T $T 100 fix 4 bond_react_MASTER_group temp/rescale 1 $T $T 1 1 -thermo_style custom step temp press density f_rxn1[1] f_rxn1[2] f_rxn1[3] +thermo_style custom step temp press density f_rxn1[*] run 10000 diff --git a/examples/README b/examples/README index 62a09f654dd..86d14e7078d 100644 --- a/examples/README +++ b/examples/README @@ -115,6 +115,7 @@ tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si template: examples for using atom_style template and comparing to atom style molecular tersoff: regression test input for Tersoff variants threebody: regression test input for a variety of threebody potentials +triclinic: general triclinic simulation boxes versus orthogonal boxes ttm: two-temeperature model examples vashishta: models using the Vashishta potential voronoi: Voronoi tesselation via compute voronoi/atom command diff --git a/examples/airebo/in.airebo-0-0 b/examples/airebo/in.airebo-0-0 index 077da689120..0e716441275 100644 --- a/examples/airebo/in.airebo-0-0 +++ b/examples/airebo/in.airebo-0-0 @@ -1,22 +1,22 @@ # AIREBO polyethelene benchmark -units metal -atom_style atomic +units metal +atom_style atomic -read_data data.airebo +read_data data.airebo -replicate 17 16 2 +replicate 17 16 2 -neighbor 0.5 bin -neigh_modify delay 5 every 1 +neighbor 0.5 bin +neigh_modify delay 5 every 1 -pair_style airebo 3.0 0 0 -pair_coeff * * CH.airebo C H +pair_style airebo 3.0 0 0 +pair_coeff * * CH.airebo C H -velocity all create 300.0 761341 +velocity all create 300.0 761341 -fix 1 all nve -timestep 0.0005 +fix 1 all nve +timestep 0.0005 -thermo 10 -run 100 +thermo 10 +run 100 diff --git a/examples/airebo/in.rebo2 b/examples/airebo/in.rebo2 index e06cf462caf..319a60bd503 100644 --- a/examples/airebo/in.rebo2 +++ b/examples/airebo/in.rebo2 @@ -1,22 +1,22 @@ # REBO polyethelene benchmark -units metal -atom_style atomic +units metal +atom_style atomic -read_data data.airebo +read_data data.airebo -replicate 17 16 2 +replicate 17 16 2 -neighbor 0.5 bin -neigh_modify delay 5 every 1 +neighbor 0.5 bin +neigh_modify delay 5 every 1 -pair_style rebo -pair_coeff * * CH.rebo C H +pair_style rebo +pair_coeff * * CH.rebo C H -velocity all create 300.0 761341 +velocity all create 300.0 761341 -fix 1 all nve -timestep 0.0005 +fix 1 all nve +timestep 0.0005 -thermo 10 -run 100 +thermo 10 +run 100 diff --git a/examples/granular/in.pour.heat b/examples/granular/in.pour.heat index 907e56dc39c..cc6b03f7d04 100644 --- a/examples/granular/in.pour.heat +++ b/examples/granular/in.pour.heat @@ -73,7 +73,8 @@ thermo 100 timestep 0.001 -#dump 1 all custom 1000 ${name}.dump id type radius mass x y z temperature heatflow +compute 1 all property/atom temperature heatflow +#dump 1 all custom 1000 ${name}.dump id type radius mass x y z c_1[*] run 100000 diff --git a/examples/meam/msmeam/HGa.meam b/examples/meam/msmeam/HGa.meam deleted file mode 100644 index 9f01501c163..00000000000 --- a/examples/meam/msmeam/HGa.meam +++ /dev/null @@ -1,30 +0,0 @@ -bkgd_dyn = 1 -emb_lin_neg = 1 -augt1=0 -ialloy=1 -rc = 5.9 -#H -attrac(1,1)=0.460 -repuls(1,1)=0.460 -Cmin(1,1,1)=1.3 # PuMS -Cmax(1,1,1)= 2.80 -nn2(1,1)=1 -#Ga -rho0(2) = 0.6 -attrac(2,2)=0.097 -repuls(2,2)=0.097 -nn2(2,2)=1 -#HGa -attrac(1,2)=0.300 -repuls(1,2)=0.300 -lattce(1,2)=l12 -re(1,2)=3.19 -delta(1,2)=-0.48 -alpha(1,2)=6.6 -Cmin(1,1,2)=2.0 -Cmin(2,1,2)= 2.0 -Cmin(1,2,1)=2.0 -Cmin(2,2,1) = 1.4 -Cmin(1,2,2) = 1.4 -Cmin(1,1,2) = 1.4 -nn2(1,2)=1 diff --git a/examples/meam/msmeam/HGa.msmeam b/examples/meam/msmeam/HGa.msmeam new file mode 120000 index 00000000000..5629006d1d7 --- /dev/null +++ b/examples/meam/msmeam/HGa.msmeam @@ -0,0 +1 @@ +../../../potentials/HGa.msmeam \ No newline at end of file diff --git a/examples/meam/msmeam/data.msmeam.bu b/examples/meam/msmeam/data.msmeam.bu deleted file mode 100644 index 576a3c50de2..00000000000 --- a/examples/meam/msmeam/data.msmeam.bu +++ /dev/null @@ -1,25 +0,0 @@ -LAMMPS data file via write_data, version 16 Feb 2016, timestep = 1 - -3 atoms -2 atom types - --4.0000000000000000e+00 4.0000000000000000e+00 xlo xhi --4.0000000000000000e+00 4.0000000000000000e+00 ylo yhi --4.0000000000000000e+00 4.0000000000000000e+00 zlo zhi - -Masses - -1 1.0079 -2 69.723 - -Atoms # atomic - -1 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 -2 2 2.2000000000000002e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0 -3 2 2.9999999999999999e-01 2.2999999999999998e+00 0.0000000000000000e+00 0 0 0 - -Velocities - -1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 diff --git a/examples/meam/msmeam/in.msmeam b/examples/meam/msmeam/in.msmeam index 82ffb89a132..e8d13f86827 100644 --- a/examples/meam/msmeam/in.msmeam +++ b/examples/meam/msmeam/in.msmeam @@ -1,5 +1,3 @@ -echo both -log log.msmeam # Test of MEAM potential for HGa # ------------------------ INITIALIZATION ---------------------------- @@ -21,11 +19,11 @@ create_atoms 1 single 0 0 0 units box create_atoms 2 single 2.2 0 0 units box create_atoms 2 single 0.3 2.3 0 units box # ---------- Define Settings --------------------- -variable teng equal "c_eatoms" +variable teng equal "c_eatoms" compute pot_energy all pe/atom compute stress all stress/atom NULL dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] -run 1 -write_data data.msmeam +run 1 +#write_data data.msmeam print "All done!" diff --git a/examples/meam/msmeam/library.msmeam b/examples/meam/msmeam/library.msmeam deleted file mode 100644 index 9937eaee08a..00000000000 --- a/examples/meam/msmeam/library.msmeam +++ /dev/null @@ -1,14 +0,0 @@ -# DATE: 2018-09-22 UNITS: metal CONTRIBUTOR: Steve Valone, smv@lanl.gov CITATION: Baskes, PRB 1992; smv, sr, mib, JNM 2010 -# ms-meam data format May 2010 -# elt lat z ielement atwt -# alpha b0 b1 b2 b3 b1m b2m b3m alat esub asub -# - t0 t1 t2 t3 t1m t2m t3m rozero ibar -# NOTE: leading character cannot be a space - -'H' 'dim' 1.0 1 1.0079 -2.960 2.960 3.0 1.0 1.0 1.0 3.0 1.0 0.741 2.235 2.50 -1.0 0.44721 0.0 0.00 0.0 0.31623 0 6.70 0 - -'Ga4' 'fcc' 12.0 31 69.723 -4.42 4.80 3.10 6.00 0.00 0.0 0.0 0.5 4.247 2.897 0.97 -1.0 1.649 1.435 0.00 0.0 0.0 2.0 0.70 0 diff --git a/examples/meam/msmeam/library.msmeam b/examples/meam/msmeam/library.msmeam new file mode 120000 index 00000000000..2226ef99da6 --- /dev/null +++ b/examples/meam/msmeam/library.msmeam @@ -0,0 +1 @@ +../../../potentials/library.msmeam \ No newline at end of file diff --git a/examples/meam/msmeam/log.1Mar2024.msmeam.g++.1 b/examples/meam/msmeam/log.1Mar2024.msmeam.g++.1 new file mode 100644 index 00000000000..70fbbdd89ca --- /dev/null +++ b/examples/meam/msmeam/log.1Mar2024.msmeam.g++.1 @@ -0,0 +1,126 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Test of MEAM potential for HGa + +# ------------------------ INITIALIZATION ---------------------------- +units metal +dimension 3 +boundary p p p +atom_style atomic +variable latparam equal 4.646 +variable ncell equal 3 + +# ----------------------- ATOM DEFINITION ---------------------------- +region box block -4 4 -4 4 -4 4 +create_box 2 box +Created orthogonal box = (-4 -4 -4) to (4 4 4) + 1 by 1 by 1 MPI processor grid + +# + +include potential.mod +# NOTE: This script can be modified for different pair styles +# See in.elastic for more info. + +variable Pu string H +print "potential chosen ${Pu}" +potential chosen H +# Choose potential +pair_style meam/ms +print "we just executed" +we just executed + +pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4 +pair_coeff * * library.msmeam H Ga4 HGa.msmeam ${Pu} Ga4 +pair_coeff * * library.msmeam H Ga4 HGa.msmeam H Ga4 +Reading MEAM library file library.msmeam with DATE: 2018-09-22 +# Setup neighbor style +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Setup minimization style +variable dmax equal 1.0e-2 +min_style cg +min_modify dmax ${dmax} line quadratic +min_modify dmax 0.01 line quadratic +compute eng all pe/atom +compute eatoms all reduce sum c_eng + +# Setup output +thermo 100 +thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms +thermo_modify norm yes +create_atoms 1 single 0 0 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +create_atoms 2 single 2.2 0 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +create_atoms 2 single 0.3 2.3 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +# ---------- Define Settings --------------------- +variable teng equal "c_eatoms" +compute pot_energy all pe/atom +compute stress all stress/atom NULL +# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] +run 1 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9 + ghost atom cutoff = 6.9 + binsize = 3.45, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair meam/ms, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair meam/ms, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 8.587 | 8.587 | 8.587 Mbytes + Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms + 0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079 + 1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079 +Loop time of 4.4446e-05 on 1 procs for 1 steps with 3 atoms + +Performance: 1943.932 ns/day, 0.012 hours/ns, 22499.213 timesteps/s, 67.498 katom-step/s +31.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.9908e-05 | 2.9908e-05 | 2.9908e-05 | 0.0 | 67.29 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 1.033e-06 | 1.033e-06 | 1.033e-06 | 0.0 | 2.32 +Output | 9.347e-06 | 9.347e-06 | 9.347e-06 | 0.0 | 21.03 +Modify | 2.02e-07 | 2.02e-07 | 2.02e-07 | 0.0 | 0.45 +Other | | 3.956e-06 | | | 8.90 + +Nlocal: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 78 ave 78 max 78 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 7 ave 7 max 7 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 14 ave 14 max 14 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 14 +Ave neighs/atom = 4.6666667 +Neighbor list builds = 0 +Dangerous builds = 0 +#write_data data.msmeam + +print "All done!" +All done! +Total wall time: 0:00:00 diff --git a/examples/meam/msmeam/log.1Mar2024.msmeam.g++.4 b/examples/meam/msmeam/log.1Mar2024.msmeam.g++.4 new file mode 100644 index 00000000000..6951a64945b --- /dev/null +++ b/examples/meam/msmeam/log.1Mar2024.msmeam.g++.4 @@ -0,0 +1,126 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Test of MEAM potential for HGa + +# ------------------------ INITIALIZATION ---------------------------- +units metal +dimension 3 +boundary p p p +atom_style atomic +variable latparam equal 4.646 +variable ncell equal 3 + +# ----------------------- ATOM DEFINITION ---------------------------- +region box block -4 4 -4 4 -4 4 +create_box 2 box +Created orthogonal box = (-4 -4 -4) to (4 4 4) + 1 by 2 by 2 MPI processor grid + +# + +include potential.mod +# NOTE: This script can be modified for different pair styles +# See in.elastic for more info. + +variable Pu string H +print "potential chosen ${Pu}" +potential chosen H +# Choose potential +pair_style meam/ms +print "we just executed" +we just executed + +pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4 +pair_coeff * * library.msmeam H Ga4 HGa.msmeam ${Pu} Ga4 +pair_coeff * * library.msmeam H Ga4 HGa.msmeam H Ga4 +Reading MEAM library file library.msmeam with DATE: 2018-09-22 +# Setup neighbor style +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Setup minimization style +variable dmax equal 1.0e-2 +min_style cg +min_modify dmax ${dmax} line quadratic +min_modify dmax 0.01 line quadratic +compute eng all pe/atom +compute eatoms all reduce sum c_eng + +# Setup output +thermo 100 +thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms +thermo_modify norm yes +create_atoms 1 single 0 0 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +create_atoms 2 single 2.2 0 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +create_atoms 2 single 0.3 2.3 0 units box +Created 1 atoms + using box units in orthogonal box = (-4 -4 -4) to (4 4 4) + create_atoms CPU = 0.000 seconds +# ---------- Define Settings --------------------- +variable teng equal "c_eatoms" +compute pot_energy all pe/atom +compute stress all stress/atom NULL +# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] +run 1 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9 + ghost atom cutoff = 6.9 + binsize = 3.45, bins = 3 3 3 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair meam/ms, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair meam/ms, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 7.965 | 8.123 | 8.594 Mbytes + Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms + 0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079 + 1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079 +Loop time of 8.70645e-05 on 4 procs for 1 steps with 3 atoms + +Performance: 992.368 ns/day, 0.024 hours/ns, 11485.738 timesteps/s, 34.457 katom-step/s +29.0% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.3957e-05 | 4.67e-05 | 5.1056e-05 | 0.0 | 53.64 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 1.105e-05 | 1.3822e-05 | 1.7033e-05 | 0.0 | 15.88 +Output | 1.5765e-05 | 1.9045e-05 | 2.5216e-05 | 0.0 | 21.87 +Modify | 2.58e-07 | 3.465e-07 | 3.81e-07 | 0.0 | 0.40 +Other | | 7.151e-06 | | | 8.21 + +Nlocal: 0.75 ave 3 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 38.25 ave 42 max 36 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Neighs: 1.75 ave 7 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +FullNghs: 3.5 ave 14 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 14 +Ave neighs/atom = 4.6666667 +Neighbor list builds = 0 +Dangerous builds = 0 +#write_data data.msmeam + +print "All done!" +All done! +Total wall time: 0:00:00 diff --git a/examples/meam/msmeam/log.msmeam.bu b/examples/meam/msmeam/log.msmeam.bu deleted file mode 100644 index 8eac453c1e1..00000000000 --- a/examples/meam/msmeam/log.msmeam.bu +++ /dev/null @@ -1,107 +0,0 @@ -# Test of MEAM potential for HGa - -# ------------------------ INITIALIZATION ---------------------------- -units metal -dimension 3 -boundary p p p -atom_style atomic -variable latparam equal 4.646 -variable ncell equal 3 - -# ----------------------- ATOM DEFINITION ---------------------------- -region box block -4 4 -4 4 -4 4 -create_box 2 box -Created orthogonal box = (-4 -4 -4) to (4 4 4) - 1 by 1 by 1 MPI processor grid - -# - -include potential.mod -# NOTE: This script can be modified for different pair styles -# See in.elastic for more info. - -variable Pu string H -print "potential chosen ${Pu}" -potential chosen H -# Choose potential -pair_style MSmeam -print "we just executed" -we just executed - -pair_coeff * * library.MSmeam ${Pu} Ga4 HGaMS.meam ${Pu} Ga4 -pair_coeff * * library.MSmeam H Ga4 HGaMS.meam ${Pu} Ga4 -pair_coeff * * library.MSmeam H Ga4 HGaMS.meam H Ga4 -Reading potential file library.MSmeam with DATE: 2018-09-22 -# Setup neighbor style -neighbor 1.0 nsq -neigh_modify once no every 1 delay 0 check yes - -# Setup minimization style -variable dmax equal 1.0e-2 -min_style cg -min_modify dmax ${dmax} line quadratic -min_modify dmax 0.01 line quadratic -compute eng all pe/atom -compute eatoms all reduce sum c_eng - -# Setup output -thermo 100 -thermo_style custom step temp etotal press pxx pyy pzz pxy pxz pyz lx ly lz vol c_eatoms -thermo_modify norm yes -create_atoms 1 single 0 0 0 units box -Created 1 atoms -create_atoms 2 single 2.2 0 0 units box -Created 1 atoms -create_atoms 2 single 0.3 2.3 0 units box -Created 1 atoms -# ---------- Define Settings --------------------- -variable teng equal "c_eatoms" -compute pot_energy all pe/atom -compute stress all stress/atom NULL -dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] -run 1 -WARNING: No fixes defined, atoms won't move (../verlet.cpp:55) -Neighbor list info ... - 2 neighbor list requests - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.9 - ghost atom cutoff = 6.9 -Memory usage per processor = 12.9295 Mbytes -Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume eatoms - 0 0 15.433079 491354.68 838670.91 635393.13 0 80195.793 0 0 8 8 8 512 15.433079 - 1 0 15.433079 491354.68 838670.91 635393.13 0 80195.793 0 0 8 8 8 512 15.433079 -Loop time of 0.000172138 on 1 procs for 1 steps with 3 atoms - -Performance: 501.922 ns/day, 0.048 hours/ns, 5809.285 timesteps/s -81.3% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 6.6996e-05 | 6.6996e-05 | 6.6996e-05 | 0.0 | 38.92 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 1.9073e-06 | 1.9073e-06 | 1.9073e-06 | 0.0 | 1.11 -Output | 9.7036e-05 | 9.7036e-05 | 9.7036e-05 | 0.0 | 56.37 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 6.199e-06 | | | 3.60 - -Nlocal: 3 ave 3 max 3 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 78 ave 78 max 78 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7 ave 7 max 7 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 14 ave 14 max 14 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 14 -Ave neighs/atom = 4.66667 -Neighbor list builds = 0 -Dangerous builds = 0 -write_data data.msmeam - -print "All done!" -All done! -Total wall time: 0:00:00 - diff --git a/examples/meam/msmeam/msmeam.dump.bu b/examples/meam/msmeam/msmeam.dump.bu deleted file mode 100644 index 039f6300731..00000000000 --- a/examples/meam/msmeam/msmeam.dump.bu +++ /dev/null @@ -1,24 +0,0 @@ -ITEM: TIMESTEP -0 -ITEM: NUMBER OF ATOMS -3 -ITEM: BOX BOUNDS pp pp pp --4 4 --4 4 --4 4 -ITEM: ATOMS id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] -1 0 0 0 -131.925 -88.3005 0 22.9153 -2.147e+08 -1.62661e+08 -0 -2.05301e+07 -0 -0 -2 2.2 0 0 120.809 -0.482171 0 14.7692 -2.12028e+08 -0 -0 403352 -0 -0 -3 0.3 2.3 0 11.1159 88.7827 0 8.61478 -2.67145e+06 -1.62661e+08 -0 -2.09335e+07 -0 -0 -ITEM: TIMESTEP -1 -ITEM: NUMBER OF ATOMS -3 -ITEM: BOX BOUNDS pp pp pp --4 4 --4 4 --4 4 -ITEM: ATOMS id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6] -1 0 0 0 -131.925 -88.3005 0 22.9153 -2.147e+08 -1.62661e+08 -0 -2.05301e+07 -0 -0 -2 2.2 0 0 120.809 -0.482171 0 14.7692 -2.12028e+08 -0 -0 403352 -0 -0 -3 0.3 2.3 0 11.1159 88.7827 0 8.61478 -2.67145e+06 -1.62661e+08 -0 -2.09335e+07 -0 -0 diff --git a/examples/meam/msmeam/potential.mod b/examples/meam/msmeam/potential.mod index 760cc935037..117736743bb 100644 --- a/examples/meam/msmeam/potential.mod +++ b/examples/meam/msmeam/potential.mod @@ -7,7 +7,7 @@ print "potential chosen ${Pu}" pair_style meam/ms print "we just executed" -pair_coeff * * library.msmeam ${Pu} Ga4 HGa.meam ${Pu} Ga4 +pair_coeff * * library.msmeam ${Pu} Ga4 HGa.msmeam ${Pu} Ga4 # Setup neighbor style neighbor 1.0 bin neigh_modify once no every 1 delay 0 check yes diff --git a/examples/micelle/log.29Mar2019.micelle-rigid.g++.1 b/examples/micelle/log.29Mar2019.micelle-rigid.g++.1 deleted file mode 100644 index f1001e6cea5..00000000000 --- a/examples/micelle/log.29Mar2019.micelle-rigid.g++.1 +++ /dev/null @@ -1,260 +0,0 @@ -LAMMPS (29 Mar 2019) - using 1 OpenMP thread(s) per MPI task -# 2d micelle simulation - -dimension 2 - -neighbor 0.3 bin -neigh_modify delay 5 - -atom_style bond - -# Soft potential push-off - -read_data data.micelle - orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 1200 atoms - scanning bonds ... - 1 = max bonds/atom - reading bonds ... - 300 bonds - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.000473022 secs - read_data CPU = 0.0024147 secs -special_bonds fene - 2 = max # of 1-2 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.00022316 secs - -pair_style soft 1.12246 -pair_coeff * * 0.0 1.12246 - -bond_style harmonic -bond_coeff 1 50.0 0.75 - -velocity all create 0.45 2349852 - -variable prefactor equal ramp(1.0,20.0) - -fix 1 all nve -fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 -fix 3 all adapt 1 pair soft a * * v_prefactor -fix 4 all enforce2d - -thermo 50 -run 500 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.42246 - ghost atom cutoff = 1.42246 - binsize = 0.71123, bins = 51 51 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair soft, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.799 | 3.799 | 3.799 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 - 50 0.54981866 0.93548899 0.068440043 1.5532895 1.9232786 - 100 0.45 0.99659327 0.079228519 1.5254468 3.2135679 - 150 0.86965411 0.90456016 0.07493355 1.8484231 4.3821925 - 200 0.45 1.01454 0.10663502 1.5708 4.7598476 - 250 0.79636561 0.82567712 0.12105337 1.7424325 5.4983899 - 300 0.45 0.86475538 0.11819875 1.4325791 5.8554758 - 350 0.72135464 0.70693069 0.10912636 1.5368106 6.0388247 - 400 0.45 0.75067331 0.14165013 1.3419484 6.3840708 - 450 0.64839221 0.62402486 0.14173679 1.4136135 6.4791009 - 500 0.45 0.66669513 0.13695201 1.2532721 6.807146 -Loop time of 0.103162 on 1 procs for 500 steps with 1200 atoms - -Performance: 2093802.885 tau/day, 4846.766 timesteps/s -99.6% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.068308 | 0.068308 | 0.068308 | 0.0 | 66.21 -Bond | 0.004235 | 0.004235 | 0.004235 | 0.0 | 4.11 -Neigh | 0.014069 | 0.014069 | 0.014069 | 0.0 | 13.64 -Comm | 0.0019219 | 0.0019219 | 0.0019219 | 0.0 | 1.86 -Output | 0.00017262 | 0.00017262 | 0.00017262 | 0.0 | 0.17 -Modify | 0.011728 | 0.011728 | 0.011728 | 0.0 | 11.37 -Other | | 0.002726 | | | 2.64 - -Nlocal: 1200 ave 1200 max 1200 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 197 ave 197 max 197 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 3094 ave 3094 max 3094 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 3094 -Ave neighs/atom = 2.57833 -Ave special neighs/atom = 0.5 -Neighbor list builds = 52 -Dangerous builds = 0 - -unfix 3 - -# Main run - -pair_style lj/cut 2.5 - -# solvent/head - full-size and long-range - -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 2 2 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 2.5 - -# tail/tail - size-averaged and long-range - -pair_coeff 3 3 1.0 0.75 2.5 -pair_coeff 4 4 1.0 0.50 2.5 -pair_coeff 3 4 1.0 0.67 2.5 - -# solvent/tail - full-size and repulsive - -pair_coeff 1 3 1.0 1.0 1.12246 -pair_coeff 1 4 1.0 1.0 1.12246 - -# head/tail - size-averaged and repulsive - -pair_coeff 2 3 1.0 0.88 1.12246 -pair_coeff 2 4 1.0 0.75 1.12246 - -thermo 50 - -#dump 1 all atom 2000 dump.micelle - -#dump 2 all image 2000 image.*.jpg type type zoom 1.6 -#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -#dump 3 all movie 2000 movie.mpg type type zoom 1.6 -#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -reset_timestep 0 -group solvent molecule 0 -750 atoms in group solvent -group solute subtract all solvent -450 atoms in group solute -unfix 1 -unfix 2 -unfix 4 -fix 1 solvent nve -fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 -fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 -150 rigid bodies with 450 atoms -fix 4 all enforce2d -run 500 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 26 26 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 5.274 | 5.274 | 5.274 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45318168 -1.3753652 0.13695201 -0.8705807 1.975423 - 50 0.77871641 -1.6955252 0.13695201 -0.92651507 0.64222539 - 100 0.5336062 -1.7124572 0.13695201 -1.1423948 -0.11959696 - 150 0.58789067 -1.7926109 0.13695201 -1.1784877 1.2592743 - 200 0.47864796 -1.8040298 0.13695201 -1.2785752 3.6739793 - 250 0.51124651 -1.8614797 0.13695201 -1.309566 2.5817722 - 300 0.45695639 -1.8708384 0.13695201 -1.3629901 3.0833794 - 350 0.477504 -1.8924359 0.13695201 -1.3679098 -5.1605926 - 400 0.45328205 -1.87754 0.13695201 -1.372674 -4.0355858 - 450 0.47465031 -1.9071924 0.13695201 -1.3849826 3.1949617 - 500 0.45533691 -1.9072316 0.13695201 -1.4006978 0.48079061 -Loop time of 0.178806 on 1 procs for 500 steps with 1200 atoms - -Performance: 1208012.705 tau/day, 2796.326 timesteps/s -99.6% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.086131 | 0.086131 | 0.086131 | 0.0 | 48.17 -Bond | 0.0042472 | 0.0042472 | 0.0042472 | 0.0 | 2.38 -Neigh | 0.021317 | 0.021317 | 0.021317 | 0.0 | 11.92 -Comm | 0.0025985 | 0.0025985 | 0.0025985 | 0.0 | 1.45 -Output | 0.000175 | 0.000175 | 0.000175 | 0.0 | 0.10 -Modify | 0.061408 | 0.061408 | 0.061408 | 0.0 | 34.34 -Other | | 0.00293 | | | 1.64 - -Nlocal: 1200 ave 1200 max 1200 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 416 ave 416 max 416 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8769 ave 8769 max 8769 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 8769 -Ave neighs/atom = 7.3075 -Ave special neighs/atom = 0.5 -Neighbor list builds = 47 -Dangerous builds = 2 -unfix 2 -unfix 4 -unfix 5 -fix 5 solute rigid/small molecule - create bodies CPU = 0.00015378 secs -150 rigid bodies with 450 atoms - 1.30435 = max distance from body owner to body atom -fix 4 all enforce2d -run 500 -Per MPI rank memory allocation (min/avg/max) = 8.64 | 8.64 | 8.64 Mbytes -Step Temp E_pair E_mol TotEng Press - 500 0.45533691 -1.9072316 0.13695201 -1.4006978 2.4545793 - 550 0.45627282 -1.912409 0.13695201 -1.4051155 2.1845065 - 600 0.44734553 -1.8890695 0.13695201 -1.389022 2.3458965 - 650 0.46444648 -1.9042462 0.13695201 -1.3903185 2.1609319 - 700 0.47113236 -1.8977576 0.13695201 -1.3784032 2.2420351 - 750 0.48554548 -1.9253545 0.13695201 -1.3943015 2.143907 - 800 0.46350091 -1.8865749 0.13695201 -1.3734146 2.294431 - 850 0.4766104 -1.9094039 0.13695201 -1.3856031 2.2077157 - 900 0.48988467 -1.9051538 0.13695201 -1.3705787 2.0107056 - 950 0.48351943 -1.9162485 0.13695201 -1.3868399 2.1891332 - 1000 0.49033701 -1.9115165 0.13695201 -1.3765742 2.1508141 -Loop time of 0.166502 on 1 procs for 500 steps with 1200 atoms - -Performance: 1297278.008 tau/day, 3002.958 timesteps/s -99.6% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.085767 | 0.085767 | 0.085767 | 0.0 | 51.51 -Bond | 0.0042562 | 0.0042562 | 0.0042562 | 0.0 | 2.56 -Neigh | 0.018039 | 0.018039 | 0.018039 | 0.0 | 10.83 -Comm | 0.0024002 | 0.0024002 | 0.0024002 | 0.0 | 1.44 -Output | 0.00018239 | 0.00018239 | 0.00018239 | 0.0 | 0.11 -Modify | 0.052717 | 0.052717 | 0.052717 | 0.0 | 31.66 -Other | | 0.003141 | | | 1.89 - -Nlocal: 1200 ave 1200 max 1200 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 415 ave 415 max 415 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8743 ave 8743 max 8743 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 8743 -Ave neighs/atom = 7.28583 -Ave special neighs/atom = 0.5 -Neighbor list builds = 40 -Dangerous builds = 0 -Total wall time: 0:00:00 diff --git a/examples/micelle/log.29Mar2019.micelle-rigid.g++.4 b/examples/micelle/log.29Mar2019.micelle-rigid.g++.4 deleted file mode 100644 index e65f67a527f..00000000000 --- a/examples/micelle/log.29Mar2019.micelle-rigid.g++.4 +++ /dev/null @@ -1,260 +0,0 @@ -LAMMPS (29 Mar 2019) - using 1 OpenMP thread(s) per MPI task -# 2d micelle simulation - -dimension 2 - -neighbor 0.3 bin -neigh_modify delay 5 - -atom_style bond - -# Soft potential push-off - -read_data data.micelle - orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) - 2 by 2 by 1 MPI processor grid - reading atoms ... - 1200 atoms - scanning bonds ... - 1 = max bonds/atom - reading bonds ... - 300 bonds - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.000422001 secs - read_data CPU = 0.00473404 secs -special_bonds fene - 2 = max # of 1-2 neighbors - 2 = max # of special neighbors - special bonds CPU = 0.000183344 secs - -pair_style soft 1.12246 -pair_coeff * * 0.0 1.12246 - -bond_style harmonic -bond_coeff 1 50.0 0.75 - -velocity all create 0.45 2349852 - -variable prefactor equal ramp(1.0,20.0) - -fix 1 all nve -fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 -fix 3 all adapt 1 pair soft a * * v_prefactor -fix 4 all enforce2d - -thermo 50 -run 500 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.42246 - ghost atom cutoff = 1.42246 - binsize = 0.71123, bins = 51 51 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair soft, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.758 | 3.85 | 4.126 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 - 50 0.54981866 0.93548899 0.068440043 1.5532895 1.9232786 - 100 0.45 0.99659327 0.079228519 1.5254468 3.2135679 - 150 0.86965411 0.90456016 0.07493355 1.8484231 4.3821925 - 200 0.45 1.01454 0.10663502 1.5708 4.7598476 - 250 0.79636561 0.82567712 0.12105337 1.7424325 5.4983899 - 300 0.45 0.86475538 0.11819875 1.4325791 5.8554758 - 350 0.72135464 0.70693069 0.10912636 1.5368106 6.0388247 - 400 0.45 0.75067331 0.14165013 1.3419484 6.3840708 - 450 0.64839221 0.62402486 0.14173679 1.4136135 6.4791009 - 500 0.45 0.66669513 0.13695201 1.2532721 6.807146 -Loop time of 0.0426326 on 4 procs for 500 steps with 1200 atoms - -Performance: 5066547.720 tau/day, 11728.120 timesteps/s -98.7% 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.016784 | 0.019254 | 0.022154 | 1.5 | 45.16 -Bond | 0.0010612 | 0.0012558 | 0.0014153 | 0.4 | 2.95 -Neigh | 0.0046048 | 0.0046697 | 0.0047245 | 0.1 | 10.95 -Comm | 0.0064592 | 0.0097114 | 0.012527 | 2.4 | 22.78 -Output | 0.00022507 | 0.00026393 | 0.00033951 | 0.0 | 0.62 -Modify | 0.0041659 | 0.0048084 | 0.0053945 | 0.8 | 11.28 -Other | | 0.002669 | | | 6.26 - -Nlocal: 300 ave 304 max 292 min -Histogram: 1 0 0 0 0 0 0 0 2 1 -Nghost: 103.5 ave 108 max 98 min -Histogram: 1 0 0 1 0 0 0 0 0 2 -Neighs: 773.5 ave 792 max 735 min -Histogram: 1 0 0 0 0 0 0 0 2 1 - -Total # of neighbors = 3094 -Ave neighs/atom = 2.57833 -Ave special neighs/atom = 0.5 -Neighbor list builds = 52 -Dangerous builds = 0 - -unfix 3 - -# Main run - -pair_style lj/cut 2.5 - -# solvent/head - full-size and long-range - -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 2 2 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 2.5 - -# tail/tail - size-averaged and long-range - -pair_coeff 3 3 1.0 0.75 2.5 -pair_coeff 4 4 1.0 0.50 2.5 -pair_coeff 3 4 1.0 0.67 2.5 - -# solvent/tail - full-size and repulsive - -pair_coeff 1 3 1.0 1.0 1.12246 -pair_coeff 1 4 1.0 1.0 1.12246 - -# head/tail - size-averaged and repulsive - -pair_coeff 2 3 1.0 0.88 1.12246 -pair_coeff 2 4 1.0 0.75 1.12246 - -thermo 50 - -#dump 1 all atom 2000 dump.micelle - -#dump 2 all image 2000 image.*.jpg type type zoom 1.6 -#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -#dump 3 all movie 2000 movie.mpg type type zoom 1.6 -#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -reset_timestep 0 -group solvent molecule 0 -750 atoms in group solvent -group solute subtract all solvent -450 atoms in group solute -unfix 1 -unfix 2 -unfix 4 -fix 1 solvent nve -fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 -fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 -150 rigid bodies with 450 atoms -fix 4 all enforce2d -run 500 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 26 26 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 5.251 | 5.282 | 5.374 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45318168 -1.3753652 0.13695201 -0.8705807 1.975423 - 50 0.77871641 -1.6955252 0.13695201 -0.92651507 0.64222539 - 100 0.5336062 -1.7124572 0.13695201 -1.1423948 -0.11959696 - 150 0.58789067 -1.7926109 0.13695201 -1.1784877 1.2592743 - 200 0.47864796 -1.8040298 0.13695201 -1.2785752 3.6739793 - 250 0.51124651 -1.8614797 0.13695201 -1.309566 2.5817722 - 300 0.45695639 -1.8708384 0.13695201 -1.3629901 3.0833794 - 350 0.477504 -1.8924359 0.13695201 -1.3679098 -5.1605926 - 400 0.45328205 -1.87754 0.13695201 -1.372674 -4.0355858 - 450 0.47465031 -1.9071924 0.13695201 -1.3849826 3.1949617 - 500 0.45533691 -1.9072316 0.13695201 -1.4006978 0.48079061 -Loop time of 0.0887392 on 4 procs for 500 steps with 1200 atoms - -Performance: 2434100.210 tau/day, 5634.491 timesteps/s -98.9% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.022611 | 0.022839 | 0.023082 | 0.1 | 25.74 -Bond | 0.0010793 | 0.0011569 | 0.0012515 | 0.2 | 1.30 -Neigh | 0.0064609 | 0.0064996 | 0.0065265 | 0.0 | 7.32 -Comm | 0.0071712 | 0.0073687 | 0.0077734 | 0.3 | 8.30 -Output | 0.00023389 | 0.00025356 | 0.00030327 | 0.0 | 0.29 -Modify | 0.047258 | 0.047683 | 0.048503 | 0.2 | 53.73 -Other | | 0.002938 | | | 3.31 - -Nlocal: 300 ave 309 max 291 min -Histogram: 1 0 0 1 0 0 1 0 0 1 -Nghost: 218.75 ave 223 max 216 min -Histogram: 1 0 2 0 0 0 0 0 0 1 -Neighs: 2192.25 ave 2251 max 2113 min -Histogram: 1 0 0 1 0 0 0 0 0 2 - -Total # of neighbors = 8769 -Ave neighs/atom = 7.3075 -Ave special neighs/atom = 0.5 -Neighbor list builds = 47 -Dangerous builds = 2 -unfix 2 -unfix 4 -unfix 5 -fix 5 solute rigid/small molecule - create bodies CPU = 7.70092e-05 secs -150 rigid bodies with 450 atoms - 1.30435 = max distance from body owner to body atom -fix 4 all enforce2d -run 500 -Per MPI rank memory allocation (min/avg/max) = 8.565 | 8.597 | 8.69 Mbytes -Step Temp E_pair E_mol TotEng Press - 500 0.45533691 -1.9072316 0.13695201 -1.4006978 2.4545793 - 550 0.45627282 -1.912409 0.13695201 -1.4051155 2.1845065 - 600 0.44734553 -1.8890695 0.13695201 -1.389022 2.3458965 - 650 0.46444648 -1.9042462 0.13695201 -1.3903185 2.1609319 - 700 0.47113236 -1.8977576 0.13695201 -1.3784032 2.2420351 - 750 0.48554548 -1.9253545 0.13695201 -1.3943015 2.143907 - 800 0.46350091 -1.8865749 0.13695201 -1.3734146 2.294431 - 850 0.4766104 -1.9094039 0.13695201 -1.3856031 2.2077157 - 900 0.48988467 -1.9051538 0.13695201 -1.3705787 2.0107056 - 950 0.48351942 -1.9162485 0.13695201 -1.3868399 2.1891332 - 1000 0.490337 -1.9115164 0.13695201 -1.3765742 2.1508141 -Loop time of 0.0588261 on 4 procs for 500 steps with 1200 atoms - -Performance: 3671840.233 tau/day, 8499.630 timesteps/s -98.3% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.022407 | 0.022631 | 0.0229 | 0.1 | 38.47 -Bond | 0.0010669 | 0.0011355 | 0.0012124 | 0.2 | 1.93 -Neigh | 0.0052333 | 0.00528 | 0.0053182 | 0.0 | 8.98 -Comm | 0.0063677 | 0.0066406 | 0.0068488 | 0.2 | 11.29 -Output | 0.00023055 | 0.00024778 | 0.00028086 | 0.0 | 0.42 -Modify | 0.020577 | 0.020651 | 0.020834 | 0.1 | 35.11 -Other | | 0.00224 | | | 3.81 - -Nlocal: 300 ave 303 max 295 min -Histogram: 1 0 0 0 0 0 1 0 1 1 -Nghost: 219 ave 224 max 215 min -Histogram: 1 0 0 1 1 0 0 0 0 1 -Neighs: 2185.75 ave 2244 max 2143 min -Histogram: 1 1 0 0 0 1 0 0 0 1 - -Total # of neighbors = 8743 -Ave neighs/atom = 7.28583 -Ave special neighs/atom = 0.5 -Neighbor list builds = 40 -Dangerous builds = 0 -Total wall time: 0:00:00 diff --git a/examples/micelle/log.4Apr2024.micelle-rigid.g++.1 b/examples/micelle/log.4Apr2024.micelle-rigid.g++.1 new file mode 100644 index 00000000000..d3cb98940d2 --- /dev/null +++ b/examples/micelle/log.4Apr2024.micelle-rigid.g++.1 @@ -0,0 +1,271 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-345-g506bf886ee-modified) +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle +Reading data file ... + orthogonal box = (0 0 -0.1) to (35.85686 35.85686 0.1) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.005 seconds +special_bonds fene +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Communication cutoff 1.42246 is shorter than a bond length based estimate of 1.425. This may lead to errors. (../comm.cpp:730) +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d + bin: standard +WARNING: Communication cutoff 1.42246 is shorter than a bond length based estimate of 1.425. This may lead to errors. (../comm.cpp:730) +Per MPI rank memory allocation (min/avg/max) = 4.148 | 4.148 | 4.148 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.54981866 0.93548899 0.068440043 1.5532895 1.9232786 + 100 0.45 0.99659327 0.079228519 1.5254468 3.2135679 + 150 0.86965411 0.90456016 0.07493355 1.8484231 4.3821925 + 200 0.45 1.01454 0.10663502 1.5708 4.7598476 + 250 0.79636561 0.82567712 0.12105337 1.7424325 5.4983899 + 300 0.45 0.86475538 0.11819875 1.4325791 5.8554758 + 350 0.72135464 0.70693069 0.10912636 1.5368106 6.0388247 + 400 0.45 0.75067331 0.14165013 1.3419484 6.3840708 + 450 0.64839221 0.62402486 0.14173679 1.4136135 6.4791009 + 500 0.45 0.66669513 0.13695201 1.2532721 6.807146 +Loop time of 0.0365221 on 1 procs for 500 steps with 1200 atoms + +Performance: 5914221.123 tau/day, 13690.327 timesteps/s, 16.428 Matom-step/s +89.2% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.022939 | 0.022939 | 0.022939 | 0.0 | 62.81 +Bond | 0.00073851 | 0.00073851 | 0.00073851 | 0.0 | 2.02 +Neigh | 0.0078339 | 0.0078339 | 0.0078339 | 0.0 | 21.45 +Comm | 0.00072134 | 0.00072134 | 0.00072134 | 0.0 | 1.98 +Output | 7.1419e-05 | 7.1419e-05 | 7.1419e-05 | 0.0 | 0.20 +Modify | 0.0034868 | 0.0034868 | 0.0034868 | 0.0 | 9.55 +Other | | 0.0007314 | | | 2.00 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 197 ave 197 max 197 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3094 ave 3094 max 3094 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3094 +Ave neighs/atom = 2.5783333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 52 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 50 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +group solvent molecule 0 +750 atoms in group solvent +group solute subtract all solvent +450 atoms in group solute +unfix 1 +unfix 2 +unfix 4 +fix 1 solvent nve +fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 +fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 + 150 rigid bodies with 450 atoms +fix 4 all enforce2d +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.391 | 5.391 | 5.391 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.45318168 -1.3753652 0.13695201 -0.8705807 1.975423 + 50 0.77344732 -1.6944083 0.13695201 -0.92967487 0.58657109 + 100 0.53530681 -1.7006195 0.13695201 -1.1291768 0.11219772 + 150 0.60820175 -1.8071581 0.13695201 -1.176549 1.5161796 + 200 0.49410558 -1.7945459 0.13695201 -1.2565449 4.0469262 + 250 0.52460847 -1.8528672 0.13695201 -1.290108 2.9929445 + 300 0.46596803 -1.8680499 0.13695201 -1.3528872 2.7958851 + 350 0.48831812 -1.8723486 0.13695201 -1.3390451 -4.5106818 + 400 0.46798432 -1.9008529 0.13695201 -1.3840536 -4.3096566 + 450 0.46000658 -1.9081144 0.13695201 -1.3977904 3.3360611 + 500 0.45822409 -1.9077531 0.13695201 -1.3988759 0.45428738 +Loop time of 0.0650638 on 1 procs for 500 steps with 1200 atoms + +Performance: 3319817.322 tau/day, 7684.762 timesteps/s, 9.222 Matom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.027565 | 0.027565 | 0.027565 | 0.0 | 42.37 +Bond | 0.0007043 | 0.0007043 | 0.0007043 | 0.0 | 1.08 +Neigh | 0.012724 | 0.012724 | 0.012724 | 0.0 | 19.56 +Comm | 0.00091442 | 0.00091442 | 0.00091442 | 0.0 | 1.41 +Output | 6.004e-05 | 6.004e-05 | 6.004e-05 | 0.0 | 0.09 +Modify | 0.022329 | 0.022329 | 0.022329 | 0.0 | 34.32 +Other | | 0.0007666 | | | 1.18 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 411 ave 411 max 411 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 8759 ave 8759 max 8759 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 8759 +Ave neighs/atom = 7.2991667 +Ave special neighs/atom = 0.5 +Neighbor list builds = 46 +Dangerous builds = 2 +unfix 2 +unfix 4 +unfix 5 +fix 5 solute rigid/small molecule + create bodies CPU = 0.000 seconds + 150 rigid bodies with 450 atoms + 1.3043524 = max distance from body owner to body atom +fix 4 all enforce2d +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 9.306 | 9.306 | 9.306 Mbytes + Step Temp E_pair E_mol TotEng Press + 500 0.45822409 -1.9077531 0.13695201 -1.3988759 2.4509752 + 550 0.46736204 -1.9141964 0.13695201 -1.3979022 2.1695662 + 600 0.47872194 -1.9232781 0.13695201 -1.3977635 2.0058379 + 650 0.47491575 -1.9224109 0.13695201 -1.3999857 2.0637789 + 700 0.44714331 -1.8990682 0.13695201 -1.3991848 2.4863082 + 750 0.49089274 -1.9231004 0.13695201 -1.3877071 2.123147 + 800 0.4753839 -1.8959698 0.13695201 -1.3731645 2.3030481 + 850 0.46870816 -1.8972225 0.13695201 -1.3798357 2.2464703 + 900 0.49610454 -1.9070748 0.13695201 -1.3674513 2.2196388 + 950 0.4773035 -1.8925765 0.13695201 -1.3682132 2.3534786 + 1000 0.50413702 -1.9292393 0.13695201 -1.383096 2.1630988 +Loop time of 0.0592806 on 1 procs for 500 steps with 1200 atoms + +Performance: 3643690.276 tau/day, 8434.468 timesteps/s, 10.121 Matom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.026866 | 0.026866 | 0.026866 | 0.0 | 45.32 +Bond | 0.00071863 | 0.00071863 | 0.00071863 | 0.0 | 1.21 +Neigh | 0.010927 | 0.010927 | 0.010927 | 0.0 | 18.43 +Comm | 0.00084187 | 0.00084187 | 0.00084187 | 0.0 | 1.42 +Output | 6.8106e-05 | 6.8106e-05 | 6.8106e-05 | 0.0 | 0.11 +Modify | 0.019075 | 0.019075 | 0.019075 | 0.0 | 32.18 +Other | | 0.000783 | | | 1.32 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 417 ave 417 max 417 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 8654 ave 8654 max 8654 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 8654 +Ave neighs/atom = 7.2116667 +Ave special neighs/atom = 0.5 +Neighbor list builds = 39 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/micelle/log.4Apr2024.micelle-rigid.g++.4 b/examples/micelle/log.4Apr2024.micelle-rigid.g++.4 new file mode 100644 index 00000000000..ce15cfec21d --- /dev/null +++ b/examples/micelle/log.4Apr2024.micelle-rigid.g++.4 @@ -0,0 +1,272 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-345-g506bf886ee-modified) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle +Reading data file ... + orthogonal box = (0 0 -0.1) to (35.85686 35.85686 0.1) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.004 seconds +special_bonds fene +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Communication cutoff 1.42246 is shorter than a bond length based estimate of 1.425. This may lead to errors. (../comm.cpp:730) +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d + bin: standard +WARNING: Communication cutoff 1.42246 is shorter than a bond length based estimate of 1.425. This may lead to errors. (../comm.cpp:730) +Per MPI rank memory allocation (min/avg/max) = 4.126 | 4.126 | 4.127 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.54981866 0.93548899 0.068440043 1.5532895 1.9232786 + 100 0.45 0.99659327 0.079228519 1.5254468 3.2135679 + 150 0.86965411 0.90456016 0.07493355 1.8484231 4.3821925 + 200 0.45 1.01454 0.10663502 1.5708 4.7598476 + 250 0.79636561 0.82567712 0.12105337 1.7424325 5.4983899 + 300 0.45 0.86475538 0.11819875 1.4325791 5.8554758 + 350 0.72135464 0.70693069 0.10912636 1.5368106 6.0388247 + 400 0.45 0.75067331 0.14165013 1.3419484 6.3840708 + 450 0.64839221 0.62402486 0.14173679 1.4136135 6.4791009 + 500 0.45 0.66669513 0.13695201 1.2532721 6.807146 +Loop time of 0.0138659 on 4 procs for 500 steps with 1200 atoms + +Performance: 15577811.312 tau/day, 36059.748 timesteps/s, 43.272 Matom-step/s +99.9% 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.0053896 | 0.0057144 | 0.0060899 | 0.4 | 41.21 +Bond | 0.00020074 | 0.00021422 | 0.00022291 | 0.0 | 1.54 +Neigh | 0.0025301 | 0.0025401 | 0.0025501 | 0.0 | 18.32 +Comm | 0.0031194 | 0.0035074 | 0.0038196 | 0.4 | 25.30 +Output | 6.4137e-05 | 6.7743e-05 | 7.7909e-05 | 0.0 | 0.49 +Modify | 0.0013391 | 0.0013582 | 0.0013972 | 0.1 | 9.80 +Other | | 0.0004638 | | | 3.34 + +Nlocal: 300 ave 304 max 292 min +Histogram: 1 0 0 0 0 0 0 0 2 1 +Nghost: 103.5 ave 108 max 98 min +Histogram: 1 0 0 1 0 0 0 0 0 2 +Neighs: 773.5 ave 792 max 735 min +Histogram: 1 0 0 0 0 0 0 0 2 1 + +Total # of neighbors = 3094 +Ave neighs/atom = 2.5783333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 52 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 50 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +group solvent molecule 0 +750 atoms in group solvent +group solute subtract all solvent +450 atoms in group solute +unfix 1 +unfix 2 +unfix 4 +fix 1 solvent nve +fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 +fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 + 150 rigid bodies with 450 atoms +fix 4 all enforce2d +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 5 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.375 | 5.375 | 5.375 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.45318168 -1.3753652 0.13695201 -0.8705807 1.975423 + 50 0.77344732 -1.6944083 0.13695201 -0.92967487 0.58657109 + 100 0.53530681 -1.7006195 0.13695201 -1.1291768 0.11219772 + 150 0.60820175 -1.8071581 0.13695201 -1.176549 1.5161796 + 200 0.49410558 -1.7945459 0.13695201 -1.2565449 4.0469262 + 250 0.52460847 -1.8528672 0.13695201 -1.290108 2.9929445 + 300 0.46596803 -1.8680499 0.13695201 -1.3528872 2.7958851 + 350 0.48831812 -1.8723486 0.13695201 -1.3390451 -4.5106818 + 400 0.46798432 -1.9008529 0.13695201 -1.3840536 -4.3096566 + 450 0.46000658 -1.9081144 0.13695201 -1.3977904 3.3360611 + 500 0.45822409 -1.9077531 0.13695201 -1.3988759 0.45428738 +Loop time of 0.0381773 on 4 procs for 500 steps with 1200 atoms + +Performance: 5657810.772 tau/day, 13096.784 timesteps/s, 15.716 Matom-step/s +99.6% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0059651 | 0.0062314 | 0.0066404 | 0.3 | 16.32 +Bond | 0.00021057 | 0.00022477 | 0.0002333 | 0.0 | 0.59 +Neigh | 0.0041424 | 0.0041487 | 0.0041512 | 0.0 | 10.87 +Comm | 0.004264 | 0.0047244 | 0.0050297 | 0.4 | 12.37 +Output | 8.2396e-05 | 8.6559e-05 | 9.6749e-05 | 0.0 | 0.23 +Modify | 0.021833 | 0.021946 | 0.022094 | 0.1 | 57.48 +Other | | 0.0008157 | | | 2.14 + +Nlocal: 300 ave 303 max 296 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 216.25 ave 219 max 214 min +Histogram: 1 0 1 0 0 0 1 0 0 1 +Neighs: 2189.75 ave 2205 max 2173 min +Histogram: 1 0 0 0 1 0 1 0 0 1 + +Total # of neighbors = 8759 +Ave neighs/atom = 7.2991667 +Ave special neighs/atom = 0.5 +Neighbor list builds = 46 +Dangerous builds = 2 +unfix 2 +unfix 4 +unfix 5 +fix 5 solute rigid/small molecule + create bodies CPU = 0.000 seconds + 150 rigid bodies with 450 atoms + 1.3043524 = max distance from body owner to body atom +fix 4 all enforce2d +run 500 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 9.233 | 9.233 | 9.234 Mbytes + Step Temp E_pair E_mol TotEng Press + 500 0.45822409 -1.9077531 0.13695201 -1.3988759 2.4509752 + 550 0.46736204 -1.9141964 0.13695201 -1.3979022 2.1695662 + 600 0.47872194 -1.9232781 0.13695201 -1.3977635 2.0058379 + 650 0.47491575 -1.9224109 0.13695201 -1.3999857 2.0637789 + 700 0.44714331 -1.8990682 0.13695201 -1.3991848 2.4863082 + 750 0.49089274 -1.9231004 0.13695201 -1.3877071 2.123147 + 800 0.4753839 -1.8959698 0.13695201 -1.3731645 2.3030481 + 850 0.46870816 -1.8972225 0.13695201 -1.3798357 2.2464703 + 900 0.49610454 -1.9070748 0.13695201 -1.3674513 2.2196388 + 950 0.4773035 -1.8925765 0.13695201 -1.3682132 2.3534786 + 1000 0.50413702 -1.9292393 0.13695201 -1.383096 2.1630987 +Loop time of 0.0236819 on 4 procs for 500 steps with 1200 atoms + +Performance: 9120883.727 tau/day, 21113.157 timesteps/s, 25.336 Matom-step/s +99.9% 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.0058656 | 0.0059718 | 0.0061355 | 0.1 | 25.22 +Bond | 0.0002083 | 0.00022447 | 0.00023485 | 0.0 | 0.95 +Neigh | 0.0035477 | 0.0035644 | 0.0035824 | 0.0 | 15.05 +Comm | 0.0041037 | 0.0042227 | 0.0043024 | 0.1 | 17.83 +Output | 7.4355e-05 | 7.8273e-05 | 8.7777e-05 | 0.0 | 0.33 +Modify | 0.008976 | 0.0090549 | 0.0091663 | 0.1 | 38.24 +Other | | 0.0005654 | | | 2.39 + +Nlocal: 300 ave 306 max 295 min +Histogram: 1 0 1 0 0 1 0 0 0 1 +Nghost: 221 ave 226 max 217 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Neighs: 2163.5 ave 2271 max 2100 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 8654 +Ave neighs/atom = 7.2116667 +Ave special neighs/atom = 0.5 +Neighbor list builds = 39 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/mliap/ACE_NN_Pytorch.pt b/examples/mliap/ACE_NN_Pytorch.pt new file mode 100644 index 00000000000..c8fa74f6e08 Binary files /dev/null and b/examples/mliap/ACE_NN_Pytorch.pt differ diff --git a/examples/mliap/Cu_ACE.mliap.pytorch.model.pt b/examples/mliap/Cu_ACE.mliap.pytorch.model.pt new file mode 100644 index 00000000000..cdcff59f448 Binary files /dev/null and b/examples/mliap/Cu_ACE.mliap.pytorch.model.pt differ diff --git a/examples/mliap/H_N_O_ccs.yace b/examples/mliap/H_N_O_ccs.yace new file mode 100644 index 00000000000..2953222216c --- /dev/null +++ b/examples/mliap/H_N_O_ccs.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/mliap/README b/examples/mliap/README index 070ce86bfdf..26d46409468 100644 --- a/examples/mliap/README +++ b/examples/mliap/README @@ -160,3 +160,44 @@ in.mliap.so3.nn.Si ------------------ Example of NN model with SO3 descriptors for Si + +NOTE: The use of ACE within mliap requires the generalized Glebsch-Gordan +coefficients (a.k.a. coupling coefficients, ccs, etc.) are defined within +a ctilde file. These are used to construct the ACE descriptors for both +linear models and non-linear models within mliap. These define the size +of the ACE basis used as well as hyperparameters for the basis functions +for descriptors in mliap. These files may be generated with various +software for fitting ACE models must follow the format for ACE C-Tilde +potential files in `../PACKAGES/pace/*.ace` or the convenient yaml-based +`.yace` format. For the ACE mliap interface, the coupling coefficient file +should NOT include linear model coefficients. If the linear model coefficients +are included in the coupling coefficient file, mliap will evaluate ACE +contributions to a linear model rather than ACE descriptors. + +One convenient feature of mliap/ace, is that it enables the user to +decouple the linear model coefficients and the ace descriptors. Both are +typically included in ACE potentials with C-Tilde format. This is +demonstrated in the first example for ACE: linear model coefficients are +provided separately (in `linear_ACE_coeff.acecoeff`) from coupling +coefficients (in `linear_ACE_ccs.yace`). They are combined in a linear +pytorch model using `convert_mliap_lin_ACE.py`. + +in.mliap.pytorch.ace +------------------ + +Example of linear model with ACE descriptors for minimal Ta dataset + +in.mliap.ace.compute +------------------ + +Example for calculating multi-element ACE descriptors through ML-IAP + +in.mliap.pytorch.ace.NN +------------------ + +Example of NN model with ACE descriptors for minimal Ta dataset + +mliap_pytorch_ACE.py +------------------ + +Example of NN model with ACE descriptors for minimal Ta dataset through mliappy diff --git a/examples/mliap/Ta06A.mliap.pytorch.model.pt b/examples/mliap/Ta06A.mliap.pytorch.model.pt new file mode 100644 index 00000000000..bbce9a22494 Binary files /dev/null and b/examples/mliap/Ta06A.mliap.pytorch.model.pt differ diff --git a/examples/mliap/Ta_ACE.mliap.pytorch.model.pt b/examples/mliap/Ta_ACE.mliap.pytorch.model.pt new file mode 100644 index 00000000000..905ef370865 Binary files /dev/null and b/examples/mliap/Ta_ACE.mliap.pytorch.model.pt differ diff --git a/examples/mliap/ace_compute_struct.data b/examples/mliap/ace_compute_struct.data new file mode 100644 index 00000000000..b18ec13a4d9 --- /dev/null +++ b/examples/mliap/ace_compute_struct.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/mliap/ccs_single_element.yace b/examples/mliap/ccs_single_element.yace new file mode 100644 index 00000000000..b51ee1320fc --- /dev/null +++ b/examples/mliap/ccs_single_element.yace @@ -0,0 +1,46 @@ +elements: [Ta] +E0: [0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 8, lmax: 2, nradbasemax: 8, radbasename: ChebExpCos, radparameters: [0.5723], radcoefficients: [[[1, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0]], [[0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0]], [[0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0]], [[0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0]], [[0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0]], [[0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0]], [[0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 0]], [[0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1]]], prehc: 0, lambdahc: 0.5723, rcut: 4.842, dcut: 0.01, rcut_in: 0.595, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [3], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [4], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [5], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [6], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [7], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [8], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 1], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 2], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 2], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [3, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [3, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [3, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 2, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 2, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 2, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 2, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 2, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [2, 2, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/mliap/convert_mliap_lin_ACE.py b/examples/mliap/convert_mliap_lin_ACE.py new file mode 100644 index 00000000000..a9925989e55 --- /dev/null +++ b/examples/mliap/convert_mliap_lin_ACE.py @@ -0,0 +1,32 @@ +import sys +import numpy as np +import torch + +# torch.nn.modules useful for defining a MLIAPPY model. +from lammps.mliap.pytorch import TorchWrapper, IgnoreElems + +# Read coefficients +coeffs = np.genfromtxt("linear_ACE_coeff.acecoeff",skip_header=4) +# If using the "linear_ACE_pot.yace" instead of just the clebsch-gordan coefficients in "linear_ACE_ccs.yace", +# uncomment below + +#B_coeffs = np.genfromtxt("linear_ACE_coeff.acecoeff",skip_header=4) +#coeffs = np.append(np.zeros(1),np.ones(len(B_coeffs)-1)) + +# Write coefficients to a pytorch linear model +bias = coeffs[0] +weights = coeffs[1:] +lin = torch.nn.Linear(weights.shape[0],1) +lin.to(torch.float64) +with torch.autograd.no_grad(): + lin.weight.set_(torch.from_numpy(weights).unsqueeze(0)) + lin.bias.set_(torch.as_tensor(bias,dtype=torch.float64).unsqueeze(0)) + +# Wrap the pytorch model for usage with mliappy coupling. +model = IgnoreElems(lin) # The linear module does not use the types. +n_descriptors = lin.weight.shape[1] +print ('ndescriptors',n_descriptors) +n_elements = 1 +linked_model = TorchWrapper(model,n_descriptors=n_descriptors,n_elements=n_elements) + +torch.save(linked_model,"Ta_ACE.mliap.pytorch.model.pt") diff --git a/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.1 b/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.1 new file mode 100644 index 00000000000..d416269aec6 --- /dev/null +++ b/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.1 @@ -0,0 +1,494 @@ +# Time-averaged data for fix ace +# TimeStep Number-of-rows +# Row c_ace[1] c_ace[2] c_ace[3] c_ace[4] c_ace[5] c_ace[6] c_ace[7] c_ace[8] c_ace[9] c_ace[10] c_ace[11] c_ace[12] c_ace[13] c_ace[14] c_ace[15] c_ace[16] c_ace[17] c_ace[18] c_ace[19] c_ace[20] c_ace[21] c_ace[22] c_ace[23] c_ace[24] c_ace[25] c_ace[26] c_ace[27] c_ace[28] c_ace[29] c_ace[30] c_ace[31] c_ace[32] c_ace[33] c_ace[34] c_ace[35] c_ace[36] c_ace[37] c_ace[38] c_ace[39] c_ace[40] c_ace[41] c_ace[42] c_ace[43] c_ace[44] c_ace[45] c_ace[46] c_ace[47] c_ace[48] c_ace[49] c_ace[50] c_ace[51] c_ace[52] c_ace[53] c_ace[54] c_ace[55] c_ace[56] c_ace[57] c_ace[58] c_ace[59] c_ace[60] c_ace[61] c_ace[62] c_ace[63] c_ace[64] c_ace[65] c_ace[66] c_ace[67] c_ace[68] c_ace[69] c_ace[70] c_ace[71] c_ace[72] c_ace[73] c_ace[74] c_ace[75] c_ace[76] c_ace[77] c_ace[78] c_ace[79] c_ace[80] c_ace[81] c_ace[82] c_ace[83] c_ace[84] c_ace[85] c_ace[86] c_ace[87] c_ace[88] c_ace[89] c_ace[90] c_ace[91] c_ace[92] c_ace[93] c_ace[94] c_ace[95] c_ace[96] c_ace[97] c_ace[98] c_ace[99] c_ace[100] c_ace[101] c_ace[102] c_ace[103] c_ace[104] c_ace[105] c_ace[106] c_ace[107] c_ace[108] c_ace[109] c_ace[110] c_ace[111] c_ace[112] c_ace[113] c_ace[114] c_ace[115] c_ace[116] c_ace[117] c_ace[118] c_ace[119] c_ace[120] c_ace[121] c_ace[122] c_ace[123] c_ace[124] c_ace[125] c_ace[126] c_ace[127] c_ace[128] c_ace[129] c_ace[130] c_ace[131] c_ace[132] c_ace[133] c_ace[134] c_ace[135] c_ace[136] c_ace[137] c_ace[138] c_ace[139] c_ace[140] c_ace[141] c_ace[142] c_ace[143] c_ace[144] c_ace[145] c_ace[146] c_ace[147] c_ace[148] c_ace[149] c_ace[150] c_ace[151] c_ace[152] c_ace[153] c_ace[154] c_ace[155] c_ace[156] c_ace[157] c_ace[158] c_ace[159] c_ace[160] c_ace[161] c_ace[162] c_ace[163] c_ace[164] c_ace[165] c_ace[166] c_ace[167] c_ace[168] c_ace[169] c_ace[170] c_ace[171] c_ace[172] c_ace[173] c_ace[174] c_ace[175] c_ace[176] c_ace[177] c_ace[178] c_ace[179] c_ace[180] c_ace[181] c_ace[182] c_ace[183] c_ace[184] c_ace[185] c_ace[186] c_ace[187] c_ace[188] c_ace[189] c_ace[190] c_ace[191] c_ace[192] c_ace[193] c_ace[194] c_ace[195] c_ace[196] c_ace[197] c_ace[198] c_ace[199] c_ace[200] c_ace[201] c_ace[202] c_ace[203] c_ace[204] c_ace[205] c_ace[206] c_ace[207] c_ace[208] c_ace[209] c_ace[210] c_ace[211] c_ace[212] c_ace[213] c_ace[214] c_ace[215] c_ace[216] c_ace[217] c_ace[218] c_ace[219] c_ace[220] c_ace[221] c_ace[222] c_ace[223] c_ace[224] c_ace[225] c_ace[226] c_ace[227] c_ace[228] c_ace[229] c_ace[230] c_ace[231] c_ace[232] c_ace[233] c_ace[234] c_ace[235] c_ace[236] c_ace[237] c_ace[238] c_ace[239] c_ace[240] c_ace[241] c_ace[242] c_ace[243] c_ace[244] c_ace[245] c_ace[246] c_ace[247] c_ace[248] c_ace[249] c_ace[250] c_ace[251] c_ace[252] c_ace[253] c_ace[254] c_ace[255] c_ace[256] c_ace[257] c_ace[258] c_ace[259] c_ace[260] c_ace[261] c_ace[262] c_ace[263] c_ace[264] c_ace[265] c_ace[266] c_ace[267] c_ace[268] c_ace[269] c_ace[270] c_ace[271] c_ace[272] c_ace[273] c_ace[274] c_ace[275] c_ace[276] c_ace[277] +0 490 +1 110 633.523 94.3568 17.1047 76.4593 415.72 84.4227 -10.3669 -22.6058 87.5916 -41.6713 14.2935 27.1643 -8.83449 45.539 0.0366547 86.1936 355.524 -9.24098 -4.62886 253.597 -3.89066 -13.051 12.2233 -13.4372 -10.3377 26.0544 5.90582 -29.6058 -123.735 14.1872 28.3718 -2.68723 -36.2963 17.3347 -7.52363 4.01093 21.5542 -150.176 49.1667 106.382 -20.5777 75.3918 12.7539 111.763 -61.6208 56.1044 -51.3912 -31.1257 -21.8452 31.6135 -16.4593 -46.7547 8.4484 -2.80826 -1.50179 2.5356 12.6505 -3.37075 15.4133 24.4245 -17.8721 -68.7976 3.20778 -20.9546 -24.8015 -0.708063 16.8285 25.2232 -31.5949 10.7568 -4.07798 17.5517 -24.71 -27.9933 19.8963 -19.4328 298.998 84.3421 43.4922 99.149 -70.3035 176.822 52.3432 -31.6464 42.3741 32.5112 80.4142 -51.6128 67.8793 -73.6841 197.193 8 1.52077 0.095878 25.0149 2.59269 17.1047 76.4593 0.0761166 0.811713 -1.30106 -0.00129584 0.111902 -0.0021799 0.0422313 -0.251236 0.0584668 -0.0193025 -0.01626 0.0327912 -0.206827 0.9039 -0.0332059 3.01698 -1.13334 0.00387133 6.40468 4.05506 0.00624923 -0.0527616 -2.82349 22.795 -2.42196 0.0251087 0.553167 6.5214 -0.15104 -5.49453 -0.0802715 0.913327 -0.334148 0.371537 0.101263 -0.293913 0.00293122 -14.9572 -0.0221277 -0.438643 -0.00945227 1.15262 0.325325 -0.0479565 -0.0576038 -2.21483 0.0504201 0.051311 -2.85708 -0.252836 -0.147617 0.195349 0.0168697 -0.173079 -0.290278 -0.122316 0.657922 -0.00989331 -3.23063 -0.0649301 -0.0401127 -0.245247 0.0816411 -0.366203 2.08759 -0.808832 -1.27672 0.0275694 0.976563 0.0311902 44.7557 2.54472 4.6908 0.618434 -0.591044 6.06674 0.00299428 0.0388937 0.216562 0.685479 0.0208758 -0.0286578 0.0927639 -0.175599 1.58264 43 415.72 25.0149 84.4227 2.59269 112.55 11.2771 19.2603 -1.22032 27.1819 -1.40836 -1.25201 -13.3198 -0.183368 -1.72716 2.25056 0.669987 -1.28528 -11.5485 4.82046 32.6867 -23.7778 -1.32993 -3.13072 0.649938 -11.5006 -2.62278 5.10788 0.548024 219.188 10.0932 -110.928 30.4814 0.276871 -8.57081 -42.4809 -0.452488 0.144132 -0.275055 1.20694 -20.9224 3.34223 -0.36309 69.1926 28.1069 -0.140381 1.18327 3.75663 4.05765 -1.06858 -3.14327 -1.12221 0.910422 2.88772 10.5331 -4.93061 -11.8662 3.67678 -3.34633 -0.0501799 0.46571 -1.69755 6.2103 -3.44241 -3.91512 26.2264 -1.55167 1.4658 -0.808121 0.272213 6.48859 2.32689 -2.05316 2.03777 1.25839 0.0492927 -7.12287 381.036 52.2256 27.4835 34.5144 -28.0414 61.287 8.66705 -6.46335 7.84842 5.0521 6.94067 -5.54313 6.83136 -6.70729 14.1039 0 +2 0 0 0 0 0 0.019982 -0.390456 1.12581 1.89207 0 0 -0.857617 -2.61627 0 -6.01795 -0.158418 0 0 0 -0.324065 -7.22232 0 0 0 0 0.667987 0 0 1.00017 8.66857 -1.52916 0 -0.312051 0 0 0.506707 -0.143287 0 0 -2.56201 -2.77154 0 0 -0.537342 -11.0941 0 -1.29022 2.76894 -0.277586 0.796272 0.890361 0.341017 0 0.787035 -0.300377 -0.356484 -0.855919 0.32443 -1.06247 0 0 -0.397307 5.54335 0 -0.407508 -0.911793 -1.37427 0 0 0 0 0.867341 -0.994681 0 2.84811 -0.402481 0 0 0 -3.22735 0 2.45634 -10.0229 0 0.16544 -1.18401 -5.69172 0 1.26917 -4.56391 7.1909 -20.1025 0 0 0 0.241195 0.0639042 0 0 0 -0.0459657 0.106911 0 -0.00389019 0 0.0158326 0.140044 0 0 0 0 0.225331 0 0.0323058 0 0.820656 0 -0.413236 0.587186 0 4.10491e-05 0 0 0.109714 0.0038492 0.159886 0 0.0169011 0 0.00532619 0.256212 0.00602296 0.0759359 0.0641599 0 0.000798758 0 0 0 0.00083204 0 0 -0.0094609 0.00781647 0.485082 0.0136809 0 0 -0.0263238 0 -0.00852847 0 0 0.0410094 0.077558 0.218977 -0.0752142 0 0 0.0530495 -0.0472733 -0.0351926 0.451547 -0.19332 0 0.123094 0.0203026 -0.0339193 0 0 0 -3.49898 0 -0.330478 -0.485167 0 -0.0275285 -0.0415255 -0.510493 0 -0.00307907 -0.00455077 -0.0352637 -0.0835054 0 0.019982 0.241195 -0.390456 0.0639042 -0.759856 -0.181214 1.03324 -1.30879 1.381 0.0063192 0.0219018 1.28024 -0.0002765 0.186461 0.160765 0.0231344 0.0116011 0.122308 -0.781495 -0.972351 -1.97601 -0.256802 0.606571 -0.0875305 0.30287 0.193061 0.128699 -0.0127352 -11.2867 -0.426996 -5.63257 -3.23686 0.0240278 -2.30602 -3.41254 0.0901742 -0.00727082 -0.139421 -0.0691262 1.12675 0.222273 0.0334162 -6.47851 -1.95093 -0.000893356 -0.0376847 -0.29641 -0.0975724 0.459619 0.550056 -4.23274 0.861876 0.0322437 -1.84277 -0.535132 -0.693252 0.39943 -0.607263 -0.496174 -0.341922 -1.2043 0.716828 -0.284252 -0.150106 -14.3868 0.29594 -0.691005 0.0741957 -0.0514309 0.0194368 0.191708 0.110249 -0.0389362 -0.203518 -0.053956 -0.39594 17.8276 -4.5702 9.57124 1.13339 -0.796077 1.31363 -0.24636 0.488727 -0.940132 1.38886 -0.0576275 0.192689 -0.428387 0.667578 -1.20912 0 +3 0 0 0 0 0 0.0808912 0.121547 -0.468948 -2.02778 0 0 -0.0211098 -0.110122 0 0.298021 -0.137775 0 0 0 -0.263913 0.537545 0 0 0 0 -0.476959 0 0 -0.292499 -2.83655 0.0284581 0 -0.289833 0 0 -0.17166 -0.0377945 0 0 -0.34874 0.341692 0 0 -0.179071 -0.0306183 0 0.0729532 -0.775892 -0.182881 0.178164 1.92643 0.269242 0 0.232228 -0.526754 -0.0367362 -1.32587 0.356648 0.304077 0 0 0.47708 0.850274 0 0.945601 -0.298679 0.109121 0 0 0 0 -0.199498 0.249846 0 -1.00804 0.646612 0 0 0 2.5315 0 -0.239321 4.86577 0 0.243573 0.0822844 4.38627 0 0.773894 1.24408 -1.78086 9.02317 0 0 0 0.0385285 0.016165 0 0 0 -0.0682327 0.0851058 0 -0.00878235 0 0.00824645 0.0229843 0 0 0 0 0.043077 0 0.00481633 0 0.115596 0 -0.404257 0.280861 0 -0.0200741 0 0 -0.560308 0.00143565 0.0942226 0 0.0201131 0 0.00419684 0.0452706 -0.112095 0.0332536 0.0209025 0 0.000341982 0 0 0 0.000965924 0 0 -0.00335762 0.00614112 0.140695 0.0200946 0 0 -0.0345502 0 -0.00670051 0 0 0.0320887 0.0351037 0.399265 -0.0186175 0 0 -0.0231112 0.0555032 -0.0687172 0.375625 -0.181111 0 -0.13627 -0.0146118 -0.140983 0 0 0 -0.383753 0 -0.10718 2.09452 0 -0.00349675 0.124709 0.0499567 0 -0.000849806 0.0181515 -0.1053 1.27839 0 0.0808912 0.0385285 0.121547 0.016165 0.0396667 0.107017 0.181988 -0.271861 0.283221 -0.0105426 -0.040489 -0.263158 -0.00303637 -0.0892919 0.0372701 0.0966975 -0.0478863 -0.0194905 -0.137559 0.0814059 0.0287002 -0.120067 -0.158307 0.00694866 -0.0952346 -0.157797 0.574322 0.0239262 -0.651573 -0.0681955 -0.85839 0.424409 0.0070428 -1.22533 -0.210788 -0.0368793 -0.00620844 -0.0149489 -0.0107778 -0.998628 0.0709918 -0.0252828 0.87795 -0.205236 -0.0093014 -0.027996 0.0898784 0.0930962 0.053969 -0.233099 -1.24983 0.032921 0.0470698 1.19676 -0.0965457 -1.05756 0.0766464 0.238181 -0.359521 -0.135526 -0.523919 0.820447 -0.140108 0.32224 7.181 -0.0147846 -0.109635 0.0451754 0.0674679 0.455292 0.24586 0.074375 0.0172685 0.137225 -0.0730147 -0.222617 2.71688 0.0287363 3.08648 0.233067 -0.106681 2.46371 0.0531921 -0.105177 0.116088 1.00822 0.00918331 -0.0242064 0.375106 -0.420228 1.24039 0 +4 0 0 0 0 0 0.0452898 -0.063578 0.368607 0.806365 0 0 0.228512 -0.160687 0 -0.712275 0.0279078 0 0 0 -0.0373852 -4.63921 0 0 0 0 0.360022 0 0 -0.24615 -0.451968 -0.173302 0 0.589696 0 0 0.18565 0.0167827 0 0 -0.0138997 -2.61012 0 0 -0.100685 -0.52385 0 -0.925998 -0.498529 0.818834 0.177402 -0.748757 0.209067 0 0.118052 -0.165513 0.648154 -0.648077 -0.854859 -0.992861 0 0 -0.0916018 7.60687 0 -0.877177 -0.186496 -0.681617 0 0 0 0 0.0259129 -0.225929 0 3.61376 -2.02877 0 0 0 -0.163508 0 0.313512 0.935185 0 -0.103632 -0.0491085 0.402943 0 0.553813 -0.845487 2.13829 -3.82208 0 0 0 -0.0138239 -0.00430116 0 0 0 0.0192541 -0.0135089 0 0.00290607 0 -0.00122098 -0.00158384 0 0 0 0 0.0715531 0 0.00921959 0 0.00644316 0 0.10678 -0.0727613 0 -0.00176368 0 0 -0.127885 -0.000127066 -0.0209269 0 -0.00301229 0 -0.000557267 -0.0422624 -0.0152574 -0.00376812 -0.00871224 0 -4.89132e-05 0 0 0 -0.000131848 0 0 0.000268561 -0.000769474 0.0270579 -0.0203729 0 0 -0.00204804 0 0.000839564 0 0 -0.0107921 0.000602497 0.00595497 -0.00104256 0 0 -0.143447 0.0416175 0.00609016 -0.32548 0.192233 0 -0.216201 -0.010181 -0.000871387 0 0 0 -0.0381932 0 0.00679639 0.526047 0 -0.000823092 0.0394045 0.0669008 0 2.52638e-05 0.00478025 0.00771428 0.185085 0 0.0452898 -0.0138239 -0.063578 -0.00430116 0.140598 0.00606572 -0.0610349 0.19885 2.05121 0.000876118 -0.0471416 -0.0526951 0.000336591 -0.00121708 -0.0104564 0.193935 -0.0149982 -0.00282643 -1.79166 0.728803 -0.195444 0.0802618 0.0368793 -0.261541 -0.123188 0.0695546 1.54961 0.00329416 2.3224 -0.199651 0.303343 0.254843 -0.00172064 0.593824 -0.0687065 0.00609889 -0.0074905 0.0453569 -0.0512152 0.475151 0.255687 0.0124658 0.817688 -1.5711 -0.00600475 -0.0293641 -0.30932 0.0892705 0.1872 0.920629 0.724226 -0.298566 -0.0825022 2.02287 0.0318566 -0.121482 0.0948204 -0.0567802 -0.0548485 0.0134769 0.0320435 -0.123632 0.0904469 -4.41836 -17.7616 -0.144281 -0.0750469 -0.0885355 -0.10918 -0.370314 -0.0387531 0.0262936 -0.000286176 -0.111368 0.125043 -0.16848 -0.960107 0.220408 -2.55308 -0.0669897 0.484527 -1.51276 0.0111375 0.0484268 -0.164428 -0.157305 0.00133172 0.0666093 -0.203816 0.371535 -0.752794 0 +5 0 -0.232794 -0.0616963 0.0467445 0.245503 -0.388057 -0.0359665 0.361907 1.38242 0.436281 -0.731379 0.115134 0.192089 -0.00173486 1.59436 -0.0435745 0.813172 4.11494 -0.102815 -0.0785589 2.69157 -0.0059298 0.147922 0.0058826 -0.186312 0.0302869 0.146664 -0.0251779 -0.217775 -1.36373 0.367893 0.051322 -0.370522 0.388197 0.0711514 -0.0568727 0.00652389 -0.15996 1.50343 0.373454 1.22771 -0.0100066 0.577914 0.0405684 1.27307 -0.0258927 0.499639 -0.475884 -0.653669 0.0299502 -1.51566 -0.35372 10.7643 0.0174314 -0.0518855 0.388459 4.06937 1.28049 0.950391 0.227165 -0.0240726 0.0280116 -1.93941 1.90871 1.46363 1.42964 0.493565 0.560752 -0.465615 -0.0853722 0.339786 -0.392852 -0.315104 -0.0763739 0.0482031 -0.385239 0.95256 -3.51566 1.92154 -4.4012 -1.71921 0.460434 0.324988 0.246866 -0.440832 1.45955 -2.218 0.0101897 -0.0766934 0.281728 -0.362182 1.41046 0 0 0 0 0 0.0467445 0.245503 0.00327173 0 0 0 0 0.000403883 0 0.00727051 0 0 0.00319542 0.0100245 -0.00624784 0 -0.000288429 0.0811033 0.0266167 0 0 -0.150209 0.000497364 0 0.0221567 1.00958 0 0 -0.0153113 0.312941 0 0.201718 0 -0.012899 0 0 -0.000988822 0 0 1.20553 0.0085498 0.06385 0 0.0679282 -0.0988161 0 0 0.37891 0 0.00613803 0.222204 -0.00196321 0 0 -0.00606188 -0.00518758 0 0.0154639 0.0280367 0.00847291 -1.06796 0.0174188 0.0194479 0 0.00946217 -0.0868087 0.175315 -0.0696412 0.077349 0 0 0 -10.2073 -0.676228 -0.689285 -0.0469851 0.0249716 -0.710714 -0.00250696 0.00114308 -0.0361361 0.00749362 0 0 0 0 0 0 -0.388057 0 -0.0359665 0 0 0 0 0.55978 0.06439 0 0 -0.848303 0 -0.107725 0 -0.0315963 0 0 0.151942 0 0.439286 0.177624 -0.387447 0.0207182 0 0 -0.22034 0 1.59205 0 0.271239 0.880185 0 1.27732 0.42582 -0.0501712 0 0.0713995 0 0 -0.0101758 0 1.30683 -0.376565 0 0 -0.0208858 0 0 -0.21399 1.26361 -0.174739 0 0.874533 0 1.14698 -0.14357 0.150074 0.0131105 0.136659 0.567175 -0.591667 0.0549897 0.935337 10.7712 -0.152709 0 0 0 0.347913 -0.013083 0 0 0 0 -0.249851 1.40239 3.27376 -4.33282 0.122262 -0.148392 0.150759 0.248971 -0.29801 0.493138 -0.677066 0 0 0 0 0 0 +6 0 0.408405 0.357908 0.0210414 0.069813 0.0121382 0.0988808 -0.0843766 -1.41271 0.139666 -0.0543387 0.0711436 0.522334 -0.00333143 1.14947 -0.0519767 1.56494 5.98634 0.0345361 -0.136925 3.40896 0.0224456 -0.266276 0.0048031 -0.0398739 -0.35053 0.397117 0.0528194 0.218718 0.183796 0.316476 0.0278382 -0.291541 -0.916301 0.197242 -0.0286349 0.0019955 0.189717 -3.57787 0.0817919 1.76818 -0.0184052 0.98968 -0.000744677 1.18492 -0.0784131 0.931365 0.27197 -0.827576 0.0559693 0.280085 -0.0454733 -6.97518 0.208065 -0.142803 0.0309335 -3.38332 0.646293 -0.484123 0.0835808 0.031293 -1.51917 -3.50286 -0.0703177 0.148122 -0.27325 0.101731 -0.20685 0.172928 -0.0456868 0.0342223 -0.580803 -0.267025 -0.327687 -3.95786 -0.177088 0.0320029 7.85294 -0.301634 4.79276 1.66839 -1.24125 2.597 -0.076337 0.486422 -1.19437 2.8777 0.0308582 -0.0258146 0.00438473 -0.0195124 -0.190093 0 0 0 0 0 0.0210414 0.069813 0.00390804 0 0 0 0 0.00070451 0 -0.0271846 0 0 0.001742 0.00793944 -0.0457844 0 -0.00571608 0.0686257 -0.222931 0 0 -0.0218148 0.000354441 0 -0.0173528 1.20073 0 0 -0.000884387 0.281065 0 -0.0165385 0 -0.00530048 0 0 -7.54096e-05 0 0 0.138385 0.014522 0.038599 0 0.0787747 -0.0531688 0 0 0.198838 0 0.00739533 -0.214807 -0.0200106 0 0 -0.00320281 -0.00625019 0 0.00381666 -0.0950474 0.0101133 -1.06633 -0.0155055 -0.00125055 0 0.016052 0.0366109 0.0759911 -0.102132 0.164446 0 0 0 -0.903147 -0.154794 0.785184 -0.00362794 0.0168752 -0.196163 -0.00113713 0.00445665 -0.053517 0.240793 0 0 0 0 0 0 0.0121382 0 0.0988808 0 0 0 0 -0.296856 1.53245 0 0 -0.0367949 0 0.000503111 0 0.0515035 0 0 0.140467 0 -0.168169 -0.126965 -0.00394148 0.0412205 0 0 0.421519 0 7.82274 0 -2.47619 0.605828 0 -0.70078 -0.663598 -0.000368307 0 -0.0586195 0 0 0.184372 0 2.16301 0.0488073 0 0 0.0711663 0 0 -0.0917698 0.736499 0.265291 0 0.248043 0 0.772304 0.155296 -0.205645 0.522816 0.0618484 0.166679 -0.251909 0.348489 -2.51221 -12.66 -0.0722265 0 0 0 0.078496 -0.0637418 0 0 0 0 -0.500808 8.23373 -0.404815 2.7087 0.872253 -0.818858 1.14246 -0.0226735 0.0453883 -0.0645815 0.47073 0 0 0 0 0 0 +7 0 -0.450487 0.675941 0.0219074 0.0382986 -0.0385997 0.194149 -0.909163 -1.10295 0.276846 -0.0273133 -0.203853 0.67938 -0.00102845 -0.730428 -0.0387389 2.44191 7.22677 0.0557517 -0.0780566 3.6871 0.0250138 -0.98717 0.00321615 -0.0476455 -0.856587 0.892877 -0.0277073 -0.518669 -0.126089 0.355706 0.0304564 -0.448159 -1.66909 -0.0730512 -0.70738 -0.0192773 0.133726 -3.04269 -0.182105 1.87127 -0.00917848 1.20036 -0.0152754 -2.26663 -0.0790092 0.931853 -0.343181 -0.904086 -0.00982556 0.863377 -0.307518 -11.0486 -0.0191785 0.0186644 0.177189 -0.677554 0.492212 0.788317 -0.0289736 -0.0137184 1.44049 -3.80813 0.568879 1.41253 -0.199002 0.053122 -0.731214 0.0336917 -0.0621426 -0.444531 0.631703 -0.0729355 -0.432256 -0.125489 0.201487 -1.63652 9.58292 0.803408 4.39175 0.737338 -0.339191 2.94042 -0.100519 -0.11011 0.522289 -0.181547 0.0310929 0.0260378 0.0656683 0.0785414 0.130409 0 0 0 0 0 0.0219074 0.0382986 0.00135175 0 0 0 0 0.000170666 0 -0.0142318 0 0 0.00156076 0.00496401 -0.0166897 0 -0.00218165 0.0562797 -0.105709 0 0 -0.0876842 0.000247232 0 0.0118746 0.873087 0 0 -0.00541252 0.230771 0 0.104156 0 -0.0059067 0 0 6.39643e-05 0 0 0.417075 0.00362105 0.0310469 0 0.0280098 -0.0604151 0 0 0.00172145 0 0.00253747 -0.503281 -0.0209521 0 0 -0.0029646 -0.00214456 0 0.00134368 0.0440069 -0.00483301 -0.74161 -0.0313344 -0.0103974 0 -0.00399341 0.0918387 0.112916 -0.0450966 -0.155518 0 0 0 -3.14068 -0.252856 0.308595 -0.0137953 0.00620799 -0.200916 -0.00123296 0.000416936 -0.016403 0.133891 0 0 0 0 0 0 -0.0385997 0 0.194149 0 0 0 0 -0.0967718 0.275058 0 0 -0.00415843 0 -0.0074572 0 -0.0288431 0 0 0.36345 0 -0.798876 -0.0304463 0.0691981 0.0395686 0 0 -0.215199 0 1.70101 0 -1.30977 -0.279605 0 -0.153047 -1.01579 0.00669675 0 -0.0157271 0 0 0.0281333 0 -0.133037 -0.252636 0 0 -0.029346 0 0 -0.115157 -3.02996 0.107171 0 0.507548 0 -0.193303 -0.00682507 -0.0233335 -0.122144 -0.0384146 -0.155622 -0.131978 -0.0350041 -0.793717 -5.44704 0.0515272 0 0 0 0.117069 0.0692092 0 0 0 0 -0.120104 -0.129237 0.00390137 -0.233918 0.300365 -0.505751 0.912965 0.0421739 -0.0157202 -0.0137363 0.0429891 0 0 0 0 0 0 +8 0 0.584324 0.29765 0.0636737 0.287644 -0.248735 0.153581 0.135495 1.68446 0.434626 -0.532894 0.19315 2.09657 -0.00824769 3.09109 -0.0402718 2.47489 11.7432 0.0580193 -0.0720326 4.44753 0.0556761 0.0044409 0.0115029 -0.0994597 0.191177 0.540984 0.0373197 -0.268626 -0.325856 0.781959 0.0708024 -0.111851 0.444128 0.362564 -0.178766 0.0302632 0.0502902 2.09309 0.559554 1.91428 -0.0452547 1.50719 0.0867806 8.02709 -0.212336 0.795289 -0.235012 -0.139933 -0.226286 1.54703 -0.0504195 -0.651988 -0.00941635 -0.254261 0.0670759 2.0856 -0.26459 -0.124975 -0.0150691 0.0441198 0.101082 -1.75331 -0.866645 0.711193 -0.39535 0.825997 -1.23592 -0.313545 -0.096901 -0.0800771 -0.73826 0.377743 -0.388239 -0.810143 0.437346 -2.30345 -5.72156 0.335825 -4.53023 -0.989095 -0.783149 0.0886175 -0.0237216 -0.370558 0.790827 -1.11686 0.112021 -0.150298 0.276383 -0.505962 0.584471 0 0 0 0 0 0.0636737 0.287644 0.00239925 0 0 0 0 2.23618e-05 0 -0.00586242 0 0 0.00314778 0.0104555 -0.00860371 0 -0.000874741 0.119954 -0.0577262 0 0 0.0565586 0.000542178 0 0.00935168 1.76942 0 0 0.0128946 0.47395 0 0.166484 0 0.0292118 0 0 0.00463587 0 0 0.987316 0.000677942 0.0625224 0 0.0473443 -0.123853 0 0 0.244484 0 0.00352773 -0.541365 -0.0133744 0 0 -0.00643665 -0.00444539 0 0.0074196 0.0371482 -0.00166275 -1.17522 -0.0437778 0.0144619 0 0.000700365 -0.0176131 0.0384149 -0.0469807 -0.0824571 0 0 0 -8.33186 -0.631117 -0.246891 -0.039225 0.002872 -0.414406 -0.00260963 -0.000219183 -0.0253829 0.0647454 0 0 0 0 0 0 -0.248735 0 0.153581 0 0 0 0 0.302408 1.75888 0 0 -0.543828 0 -0.0685075 0 0.0737097 0 0 0.492553 0 0.656941 0.111571 -0.147128 0.0607748 0 0 0.60657 0 13.9762 0 1.09502 1.59453 0 0.648153 0.981894 -0.0173027 0 0.053953 0 0 0.203376 0 4.58314 1.16437 0 0 0.164221 0 0 -0.129804 -0.277726 -0.167073 0 3.31741 0 -0.283863 -0.150368 0.144605 -0.232226 -0.0276781 -0.105026 -0.0673972 -0.0434842 -1.37371 7.74037 -0.0323949 0 0 0 0.571723 -0.00151934 0 0 0 0 -0.683725 3.8939 2.26122 -1.15804 -0.363648 0.512626 -0.513237 0.197519 -0.178479 0.23702 -0.226405 0 0 0 0 0 0 +9 0 0.154188 0.535924 -0.0267739 -0.0213723 0.0488454 0.284284 -1.7374 -3.06944 -0.25225 0.42952 -0.329674 0.330665 0.00774833 -0.182294 0.0316744 0.960508 1.49145 0.0159877 0.109613 -2.11335 -0.0299366 -0.827103 -0.00981428 0.049616 -0.966205 0.512866 -0.101995 -0.4639 -0.213681 0.2547 -0.0543654 0.131154 -1.73567 -0.112997 -0.682029 -0.0319448 -0.331141 -4.44741 -0.481056 -0.394358 0.0456259 -0.583577 -0.0597516 -0.241779 0.223269 0.305046 -0.372758 0.496298 0.117518 0.132261 0.680502 2.77461 -0.219732 0.260694 0.10241 2.33937 0.526661 0.675451 -0.257438 -0.116347 1.76258 -0.819692 2.99162 1.50207 0.378214 -0.0494956 0.0127507 -0.395871 0.110725 0.527135 0.955675 0.0918825 0.100926 0.180613 -0.149921 0.543808 14.1746 -0.138737 9.15513 0.596944 0.615138 3.68907 0.135092 0.406897 -1.0026 3.80971 -0.117789 0.129731 -0.143868 0.428708 0.383268 0 0 0 0 0 -0.0267739 -0.0213723 0.00393585 0 0 0 0 0.000648707 0 -0.0190722 0 0 0.00215017 0.00205954 -0.0137142 0 -0.00145775 -0.0306431 -0.164115 0 0 -0.143701 8.55657e-05 0 0.0398018 0.716856 0 0 -0.017334 0.0637653 0 0.151735 0 -0.0360641 0 0 -0.00487022 0 0 0.625088 0.0126608 0.0444846 0 0.0765527 -0.0485864 0 0 0.288534 0 0.00867682 0.1251 -0.021123 0 0 -0.00443442 -0.00538783 0 0.0172517 -0.00800338 0.00316036 -0.560336 0.037698 -0.000963914 0 0.0103024 0.0976422 0.426003 -0.146628 0.0500885 0 0 0 -5.87273 -0.425038 0.252088 -0.0280169 0.00551441 -0.322474 -0.00154028 0.00285888 -0.0430216 0.239943 0 0 0 0 0 0 0.0488454 0 0.284284 0 0 0 0 -0.402137 -1.04126 0 0 0.424921 0 0.060032 0 -0.0768639 0 0 -0.00410363 0 -0.464142 -0.143231 0.233608 0.00949784 0 0 -0.629343 0 -0.546806 0 -1.67645 -0.354268 0 -0.951349 -0.690361 0.031077 0 -0.0525322 0 0 -0.126852 0 -1.0584 0.500232 0 0 0.0885047 0 0 -0.171789 -1.55571 0.110432 0 -2.42795 0 -0.26519 0.188239 -0.23953 0.192753 -0.0846432 -0.295572 0.0577574 0.199748 2.27606 2.62445 0.102034 0 0 0 -0.0936066 -0.081837 0 0 0 0 0.294643 5.88268 -1.59725 3.79852 0.763623 -0.771099 1.01195 -0.162746 0.183131 -0.276591 0.559684 0 0 0 0 0 0 +10 0 0.0173956 -0.482869 -0.0118994 -0.0837503 -0.0470194 -0.128835 0.803505 1.0553 -0.0754237 -0.375026 0.0226336 -0.244588 0.00093001 0.339605 -0.00259327 -1.62261 -3.57304 -0.124053 -0.0161114 2.50218 -0.0488618 0.593496 -0.00143811 -0.150603 0.527207 -0.630259 -0.0541153 0.505202 0.994817 -0.28055 -0.00988343 -0.125648 1.22488 -0.128922 0.408986 -0.00390139 -0.27205 2.77858 -0.0512671 0.64386 0.00455731 -1.0159 -0.0159992 2.0944 0.0154753 -0.234041 0.69215 -0.229168 0.0696428 -0.838768 -0.11053 7.70174 0.0131702 -0.000168859 -0.0256962 1.95536 0.671473 0.55148 0.270033 0.0042576 -1.93902 -2.78855 -1.14775 -1.29658 0.472709 -0.977338 0.750232 -0.31154 0.00679921 0.247682 0.0264821 -0.140356 0.295913 -0.63911 -0.4447 1.37073 -8.04425 -0.262402 -3.16357 -0.563999 0.722309 -4.49167 0.674665 -0.34241 0.254433 -2.60695 -0.00816423 0.01372 -0.276294 0.0586189 -1.78435 0 0 0 0 0 -0.0118994 -0.0837503 -0.000498494 0 0 0 0 -1.52335e-06 0 -0.000363752 0 0 -0.000619375 -0.00154712 0.00165975 0 3.01919e-05 -0.0326659 0.0130897 0 0 0.0867996 -7.52074e-05 0 0.00258961 -0.518609 0 0 0.0111143 -0.16119 0 0.00956524 0 0.00847656 0 0 0.00102077 0 0 -0.137653 -0.000194711 -0.0130552 0 -0.0120778 0.0187154 0 0 -0.147885 0 -0.000855879 0.00806315 0.00387802 0 0 0.000972134 0.000827162 0 -0.00588206 -0.0607538 -0.00495171 0.282956 0.0122181 -0.00147389 0 0.000154639 0.0114193 -0.0916798 0.000741508 -0.0663118 0 0 0 1.12659 0.0905059 0.0337027 0.00495559 -0.00342695 0.0868583 0.000429701 -0.00101167 0.0135454 -0.0350344 0 0 0 0 0 0 -0.0470194 0 -0.128835 0 0 0 0 0.0690666 -1.01289 0 0 -0.225003 0 -0.034553 0 -0.0707201 0 0 1.03808 0 0.463917 0.0255822 -0.189126 0.130841 0 0 -0.531027 0 0.657536 0 0.748684 -0.00273801 0 0.225839 0.459011 -0.0264273 0 0.00036115 0 0 -0.136818 0 0.268223 1.79563 0 0 0.228033 0 0 -0.171953 0.758139 0.154944 0 -0.226404 0 0.452418 -0.141217 0.0363962 0.151569 -0.0455233 -0.0629108 -0.125153 0.0454194 2.10703 8.84509 0.0387567 0 0 0 0.235923 -0.0194963 0 0 0 0 0.0361043 -11.0068 0.46528 -2.75474 -0.0113142 -0.227614 0.140126 0.0364532 -0.0868196 0.196104 -0.184286 0 0 0 0 0 0 +11 0 -0.0693869 -0.0499976 0.0748276 0.247259 -0.342451 -0.0167211 0.451829 1.70015 0.556577 -1.09629 0.45859 0.782393 -0.0214446 2.06355 0.12846 0.139865 -0.633913 -0.219971 0.194682 -1.20466 -0.0271918 0.0763624 0.0323794 -0.249373 0.156305 0.140994 0.0243123 -0.279916 -1.59776 0.581485 0.133276 0.780227 0.054433 0.155025 -0.00890998 0.111441 0.159935 0.343293 0.792059 0.0123761 -0.0592228 1.03002 0.19089 2.66989 -0.0830764 0.308574 -0.650271 1.3518 -0.274166 -1.18262 -0.336313 7.48269 -0.468446 0.193032 0.257476 2.62296 0.926927 1.40077 0.337393 0.0445729 -0.538727 -3.69065 0.466801 -0.126965 0.702907 -0.00651531 0.391095 0.00546422 -0.227554 0.489555 -0.20343 0.478364 -0.382356 -0.366818 -0.673711 2.40646 -1.36542 2.73117 -4.54957 -1.51923 0.369952 0.106784 0.540714 -0.553168 1.91297 -2.78226 0.0779878 -0.411016 0.793886 -1.1737 1.69019 0 0 0 0 0 0.0748276 0.247259 0.00525403 0 0 0 0 0.00110809 0 -0.00723532 0 0 0.00364596 0.0186878 -0.0605195 0 -0.00799859 0.189166 -0.0612951 0 0 -0.169939 0.000888124 0 0.0695598 2.02629 0 0 -0.0105701 0.65966 0 0.352367 0 -0.0408651 0 0 -0.0020194 0 0 1.53213 0.023467 0.0744586 0 0.109254 -0.0966191 0 0 0.294938 0 0.00985245 0.181615 -0.0238228 0 0 -0.00687342 -0.00832684 0 0.0157197 0.0301861 0.0124275 -0.0203047 0.039244 0.00269476 0 0.0191249 -0.085905 0.548129 -0.0958675 -0.188713 0 0 0 -12.3513 -0.747986 -0.469465 -0.0555879 0.0728934 -1.2495 -0.00276318 0.00292839 -0.0555585 0.080557 0 0 0 0 0 0 -0.342451 0 -0.0167211 0 0 0 0 0.393571 0.809762 0 0 -0.923945 0 -0.116223 0 0.0381025 0 0 -0.16385 0 0.494512 0.149359 -0.370405 -0.0241201 0 0 0.27596 0 2.54857 0 0.364494 0.923363 0 1.195 0.407333 -0.0479318 0 0.0436596 0 0 0.102034 0 1.62258 -0.564493 0 0 -0.0519929 0 0 -0.664547 1.72801 -0.545285 0 1.76486 0 0.315445 -0.0169185 0.234796 0.569026 0.125845 0.115081 -0.269356 0.0640097 0.0472039 4.92086 -0.192473 0 0 0 0.612174 0.0231085 0 0 0 0 -0.317627 2.96093 3.07744 -3.33541 -0.137062 0.343769 -0.524661 0.286786 -0.326415 0.527595 -0.689124 0 0 0 0 0 0 +12 0 1.08763 -0.339703 0.0929581 0.0620113 0.0618232 -0.244834 1.09338 1.1106 0.501591 -1.66018 0.280322 -1.07438 -0.0410199 -1.1351 -0.0353698 -1.82408 -4.17528 -0.34578 -0.197758 -1.78141 -0.0978375 0.818244 0.0516006 -0.553804 0.762147 -0.744218 -0.0464321 0.38465 -0.551802 -0.568304 0.184114 -0.171205 0.984223 -0.0881162 0.698118 0.0594257 -0.00941733 -0.462672 0.636543 -1.28578 -0.152424 0.59185 0.167029 -2.3867 -0.486016 -0.934852 0.0678156 -0.613687 -0.338627 -0.557586 -0.76854 5.06392 0.344794 -0.186407 0.332673 0.958802 0.438991 0.00423121 0.775857 0.281996 -2.05366 -0.292218 -1.78961 -1.25907 0.505317 -0.244556 0.468115 -0.422644 -0.262368 -0.0731759 -0.491987 0.369057 -0.0129571 0.725302 -0.647967 1.06822 0.909611 1.33353 0.127095 1.92448 -1.7992 2.72689 1.70542 -1.1512 1.632 -0.275263 0.456247 -0.528363 0.516067 -0.597346 0.583723 0 0 0 0 0 0.0929581 0.0620113 -0.00112013 0 0 0 0 0.000192605 0 -0.0498714 0 0 -0.000243409 0.0145843 -0.146375 0 -0.0194829 0.0471023 -0.365096 0 0 -0.100086 0.000668821 0 -0.0188539 -0.78145 0 0 -0.010787 -0.083534 0 -0.0776348 0 -0.0274702 0 0 -0.00119387 0 0 -0.673992 0.00415405 -0.00162333 0 -0.0238746 0.00257757 0 0 -0.0934623 0 -0.00208484 -0.934988 -0.0232388 0 0 0.000548819 0.00176201 0 -0.00162163 0.0272933 -0.00503628 -0.453494 -0.074179 -0.0389019 0 -0.0110741 0.286128 0.099174 -0.0570806 0.0350712 0 0 0 5.72741 0.259743 1.69934 0.0264055 -0.0126404 0.386278 0.000387175 0.00318966 -0.0261531 0.397885 0 0 0 0 0 0 0.0618232 0 -0.244834 0 0 0 0 0.297952 1.42233 0 0 -0.490541 0 -0.0649882 0 0.0278932 0 0 -0.213933 0 0.41794 0.0230929 -0.20806 -0.0245706 0 0 0.225301 0 1.43929 0 -2.32828 -0.0767548 0 0.162597 0.0516616 -0.0277963 0 0.0432921 0 0 0.170198 0 0.0191173 -0.810889 0 0 -0.105753 0 0 -0.149354 0.167227 -0.0662433 0 1.26226 0 0.0865308 0.110864 -0.0101787 0.277215 0.113139 0.162118 -0.163754 -0.0303093 -1.4154 -1.3407 -0.117187 0 0 0 0.233394 0.0539795 0 0 0 0 -0.387902 13.0631 2.4701 -0.519182 0.780618 -0.621508 1.00488 0.175551 -0.169294 0.255116 -0.121288 0 0 0 0 0 0 +13 0 -0.17679 -0.466342 -0.0371808 -0.0858168 0.0607652 -0.040671 0.304687 1.15219 -0.247871 -0.926725 -0.315125 0.711885 0.0128282 1.3673 -0.105015 -2.06737 -6.37106 -0.241063 -0.107423 3.68447 -0.0998675 0.559434 -0.0178078 -0.301294 0.488495 -0.70835 -0.140282 0.410849 0.829927 0.225789 -0.0690255 -0.669395 1.20021 -0.631643 0.273392 -0.0806937 -0.693694 2.68222 -0.521829 1.74984 0.0413415 -2.99388 -0.130215 4.22726 0.0991218 0.644406 0.475722 -0.822277 0.255311 -1.72139 -0.43797 6.03403 0.191344 -0.065993 -0.119214 -2.84996 0.327311 0.564721 0.41989 -0.0563902 -0.649923 -4.1157 -0.749905 -0.93217 1.20768 -0.529732 0.389171 -0.831007 0.109998 0.4145 0.266359 -0.492412 1.05655 -3.00115 0.335764 3.22646 -6.27686 0.396117 -2.60513 -0.937835 1.21105 -2.95658 1.25349 -1.1381 1.52551 -2.60696 -0.0930504 0.291756 -0.441974 0.668053 -0.877937 0 0 0 0 0 -0.0371808 -0.0858168 -0.00256624 0 0 0 0 -0.000648208 0 -0.00170956 0 0 -0.00141757 -0.00987129 0.03109 0 0.00329595 -0.13609 0.0205494 0 0 -0.0606185 -0.00046328 0 0.0469787 -1.71755 0 0 -0.00576424 -0.497611 0 0.110522 0 -0.0102068 0 0 -0.00157108 0 0 -0.0426562 -0.0138335 -0.0301872 0 -0.0549834 0.0540398 0 0 -0.260402 0 -0.00476872 0.0882737 0.0129944 0 0 0.00263919 0.00403031 0 -0.00224748 0.0326018 -0.0111664 1.71736 0.0360411 -0.0230532 0 -0.00923211 0.0696225 0.0172462 0.0671114 -0.256297 0 0 0 0.373178 0.130143 -0.0505412 0.00174221 -9.30923e-05 0.0185015 0.000999429 -0.00238965 0.0326379 -0.0296978 0 0 0 0 0 0 0.0607652 0 -0.040671 0 0 0 0 0.223285 -2.47944 0 0 -0.150544 0 -0.0253725 0 -0.138329 0 0 0.649613 0 0.536738 0.0820745 -0.0886454 0.074966 0 0 -1.11769 0 -6.14128 0 1.79948 -0.505519 0 0.513 0.844503 -0.0127253 0 0.040738 0 0 -0.304716 0 -1.9048 1.44075 0 0 0.159769 0 0 -0.350117 -1.61871 -0.185738 0 -1.72483 0 -0.560699 -0.115015 0.0906634 -0.0596499 -0.110889 -0.45549 -0.0781626 -0.215349 4.70164 17.0008 0.129201 0 0 0 0.177493 0.048957 0 0 0 0 0.541416 -11.4229 0.675964 -3.05231 -0.225889 0.0408535 -0.273627 0.061797 -0.0943719 0.171823 -0.398009 0 0 0 0 0 0 +14 0 -0.360831 -0.0323764 0.0247246 0.0922011 -0.0937539 0.0191402 -0.00977133 -0.134655 -1.8134 0.534012 0.070036 1.11833 -0.165537 1.33332 0.0859014 -0.236246 -2.05392 0.064546 0.437357 0.0937475 0.0909388 0.0479156 -0.0842365 0.576013 0.154091 -0.0052173 -0.115528 -0.0197894 -0.107472 0.391286 -0.49032 0.215804 -0.0224407 -0.68737 0.0973663 0.0583622 -0.114608 -1.3143 0.168803 0.000614598 -0.17634 -2.18501 0.148003 4.10654 -0.204614 -0.00174825 -0.0431387 1.04419 -0.0542582 0.875643 1.0246 0.893025 -1.39882 0.0482768 -0.012478 0.167341 -1.12577 0.372293 -0.850319 0.024352 0.728422 0.169802 0.0912345 1.79032 -0.679794 -0.468785 -2.09532 0.417792 2.2887 0.000547628 0.229903 0.0449257 0.358037 0.81019 0.00305944 -0.279962 5.80864 -0.0584615 0.243582 -0.685418 0.223497 0.274363 -0.344856 -0.254808 0.209691 -0.514139 0.0716785 -0.0468577 0.0275614 -0.0162899 0.00917822 0 0 0 0 0 0.0247246 0.0922011 -0.0126745 0 0 0 0 -0.00328926 0 0.0291657 0 0 -0.000959255 -0.0142722 0.096627 0 0.0136195 1.06 0.274995 0 0 1.73126 -0.000649729 0 0.204086 7.00196 0 0 0.221197 2.69513 0 0.326197 0 0.618185 0 0 0.0762646 0 0 0.391743 -0.0656584 -0.0186367 0 -0.23839 0.0260846 0 0 0.447215 0 -0.00766656 -1.0004 -0.0273554 0 0 -0.0034553 0.0341754 0 0.0468895 0.607507 0.00307607 -4.5769 -0.0275743 0.0488413 0 -0.126849 -0.107715 0.722221 -0.285118 -0.142538 0 0 0 -10.0698 -0.574582 -1.74785 -0.0460902 -0.0577367 -0.00246348 0.000427544 -0.00123193 0.00232103 -0.0272104 0 0 0 0 0 0 -0.0937539 0 0.0191402 0 0 0 0 -0.0379776 -0.948336 0 0 -0.298171 0 -0.0304727 0 -0.0192381 0 0 0.0333784 0 -0.113881 -0.0242694 -0.0419105 0.00371701 0 0 -0.159549 0 -4.29269 0 -2.06952 0.00264889 0 -0.0927754 -0.567024 -0.00266828 0 -0.00903598 0 0 -0.11156 0 -0.543839 0.14633 0 0 0.024392 0 0 -0.304196 0.915784 -0.171196 0 -0.838088 0 0.0814484 0.0970918 0.0905956 -0.120931 -0.104641 0.327342 0.165942 0.108845 0.600114 -0.552073 0.0866875 0 0 0 -0.0415845 -0.127275 0 0 0 0 0.264042 19.7971 4.13295 -0.625901 1.16785 -0.526215 0.647859 0.301294 -0.170951 0.170054 -0.0174692 0 0 0 0 0 0 +15 0 -1.74981 -0.180366 0.19479 -0.141343 -0.0472079 -0.0341252 0.191641 0.460052 -0.0609859 0.822719 0.0158986 0.840814 -0.50052 0.255554 -0.00418887 1.50318 2.57965 -0.209189 -0.141686 -0.515926 -0.16209 0.17329 0.593498 0.533957 0.334929 0.609663 -0.0242707 0.00543818 0.0206274 0.202934 0.723957 0.171332 1.23261 -0.315158 0.106786 0.0312357 -0.647567 6.99018 0.0539241 -0.138911 -0.392623 -2.06232 0.115436 1.80929 -0.269384 -0.0341018 0.00848065 0.70482 -0.18143 0.728863 -0.384145 -6.85084 -0.537922 -0.20894 0.0820144 1.51728 -1.66906 0.582454 -0.21626 0.366449 1.06604 -0.52778 -2.19585 1.04007 -0.73044 0.486711 -0.935033 0.39592 0.0415486 -1.4075 -0.0265205 0.0760188 1.73671 1.41801 -0.0364445 -3.42038 -27.2244 -3.40676 -0.797515 -4.43193 4.10085 -6.50138 -0.898504 0.326861 -0.392984 -0.06427 0.0943683 -0.0322095 0.00788987 -0.000559474 -0.00176161 0 0 0 0 0 0.19479 -0.141343 -0.00147558 0 0 0 0 0.00220936 0 0.00148894 0 0 -0.00110761 -0.0890817 -0.0623125 0 -0.0146898 0.136818 -0.0254981 0 0 -0.360488 -0.0045075 0 -0.876518 -1.59451 0 0 -0.0547433 -0.310649 0 -1.50303 0 -0.375908 0 0 -0.0527484 0 0 -1.27408 0.0379102 -0.0247951 0 -0.0347726 0.171463 0 0 -0.708545 0 0.0072796 0.223667 0.00875984 0 0 0.00397294 0.00977134 0 -0.0282408 -0.112282 -0.0185688 1.22572 0.0614324 0.0152873 0 0.000355272 0.0228722 -0.128228 0.0471051 0.157396 0 0 0 11.2624 0.711635 0.897134 0.0483099 0.0573723 0.0673784 0.00205828 0.00189779 -0.00234957 0.00958323 0 0 0 0 0 0 -0.0472079 0 -0.0341252 0 0 0 0 -0.0125519 0.0550934 0 0 0.195177 0 0.00988143 0 0.00317 0 0 -0.037554 0 0.0377387 0.0234714 0.0424065 -0.00197988 0 0 0.00481324 0 -0.632316 0 2.89844 0.0223073 0 -0.103758 0.47372 0.00245101 0 0.00443619 0 0 0.020623 0 0.00812677 -0.304397 0 0 -0.0281381 0 0 -0.203358 -2.2523 0.106201 0 -0.56297 0 0.581282 -0.101024 0.0230202 0.363188 0.0121617 -0.649084 -0.964466 -0.0649957 -0.701258 -4.48499 -0.109519 0 0 0 -0.0926339 0.0599341 0 0 0 0 -0.0252643 -24.8125 -3.55909 1.50192 -1.9606 1.42751 -1.64924 -0.178869 0.15939 -0.163631 0.0868871 0 0 0 0 0 0 +16 0 -0.270966 -0.184027 -0.0604575 -0.0905579 0.108126 0.0158779 0.125162 0.40223 -3.1684 -0.433939 0.07774 0.333083 -0.103485 0.13427 0.107466 -1.60091 -4.80384 -0.126646 0.71951 -0.854627 -0.0484486 0.0237904 -0.486728 -0.25165 0.157382 -0.524219 -0.188433 -0.00190345 -0.220031 0.00350511 -1.29359 0.250847 0.0358596 -0.684426 0.0215307 0.0259091 -0.920623 0.611157 0.429761 -0.0969294 -0.308759 -2.85819 0.166827 1.29192 -0.812682 -0.003997 -0.0355014 1.73562 0.2048 -0.237984 0.24083 1.29722 -2.07015 0.158133 -0.0711534 1.77113 0.690086 1.34129 -0.198567 -0.313779 0.629697 -0.868479 0.226523 -0.104136 0.352967 -0.389257 0.703953 -0.392965 3.7119 -1.14959 0.403254 -0.100883 0.5074 -0.287565 0.0307212 0.85471 0.084667 0.48827 0.166338 1.1625 -0.425134 0.355631 -0.284864 0.166971 -0.0684344 -0.125126 0.284692 -0.143951 0.0732417 -0.0369448 0.0187909 0 0 0 0 0 -0.0604575 -0.0905579 -0.0129651 0 0 0 0 -0.00634987 0 -0.0285368 0 0 0.00265261 0.0272867 -0.0618557 0 -0.0107882 -0.392857 -0.162714 0 0 -0.654163 0.0015121 0 0.0116914 -4.49546 0 0 -0.0917846 -1.47753 0 0.0760712 0 -0.262716 0 0 -0.0361496 0 0 0.216779 -0.122143 0.0465453 0 -0.252922 -0.067637 0 0 -0.352807 0 -0.0154046 -1.27452 0.0217599 0 0 -0.00545827 0.0280088 0 -0.0296826 -0.0495605 -0.0310996 -1.29359 -0.164827 0.028381 0 0.01487 0.0716928 -0.229016 0.113973 0.0846319 0 0 0 -1.53676 -0.267678 0.636298 -0.00946113 -0.00249218 -0.0259062 -0.00212472 -0.00143468 -0.00446985 0.0155541 0 0 0 0 0 0 0.108126 0 0.0158779 0 0 0 0 0.0382177 -0.359555 0 0 -0.0389935 0 0.00262022 0 -0.0020522 0 0 0.0281428 0 0.0185873 0.0178359 -0.00902641 0.00167759 0 0 -0.0355253 0 -1.60602 0 0.208259 -0.0629378 0 0.0766525 0.0147731 0.000370438 0 0.00637339 0 0 -0.0266552 0 -0.192161 0.0950722 0 0 0.0145409 0 0 0.0883956 2.1377 -0.0814091 0 -0.00931382 0 -0.273262 0.0101873 0.0351078 -0.0616229 -0.0728945 -0.0530757 0.564867 0.0081787 0.108821 2.71833 0.0473585 0 0 0 -0.0639352 0.0157499 0 0 0 0 0.115802 2.05383 0.419007 -0.360624 -0.177772 0.0642749 0.109284 -0.0586237 0.0504371 -0.0151968 0.0355482 0 0 0 0 0 0 +17 0 0 0 0.212765 -0.247103 0 0 0 0 1.90144 0.443722 -0.270175 0 -0.405172 0 0.0329873 0 0 0.0504901 0.492016 0 -0.00617227 0 0.886639 0.0596703 0 0 0.815085 0 0 0 1.30839 -0.029645 0 1.61341 0 0.00610689 2.69664 0 -0.6611 0 0.00738461 5.69819 0.13687 0 2.45333 0 0 0.342499 0.849535 0 0.824258 0 0.874398 0.39809 0.409169 0 -0.433413 -0.501445 -0.141877 -0.628759 0 0 0 0 -0.610755 0 0.195522 2.62967 -3.72972 0.886809 0.0212973 -0.239565 -2.59791 0 0 -0.739295 0 0.617411 0 -5.09291 1.74743 0 -4.46389 1.71525 -0.0210415 0 -7.5895 3.97874 -3.02236 1.19652 0 0 -0.266115 -0.0356754 0.0482922 0.0052401 0.212765 -0.247103 -0.0656318 0.0565692 0.293856 0.00089649 0.0060006 -0.00267657 0.011479 -0.0619308 -0.0483397 0.00881545 -0.00489196 0.0599662 -0.253135 -0.521458 -0.0596328 1.26537 -0.187417 -0.00424296 0.323179 2.39854 0.0012312 -0.000532543 0.0385404 7.69227 -0.200986 -0.00589575 0.336841 3.41692 0.0395879 0.578348 0.0347478 0.80927 -0.0251328 -0.00147217 0.102588 0.0706185 4.92759e-05 1.08917 -0.0564824 -0.00961521 0.00456252 -0.725585 0.210018 0.041047 0.028912 -0.159788 -0.0580094 0.0377183 0.208707 -0.111394 0.157081 -0.0951465 0.00686678 0.347284 0.0108385 -0.0142693 -0.397972 -0.0263042 -4.62628 0.140562 0.0175739 0.0638331 -0.149648 0.273229 -2.52815 0.977903 -0.174669 -0.0424185 -0.114983 -0.0243863 -0.930114 -0.00946623 0.282982 -0.156304 0.16482 -0.0721522 0.0139157 -0.0158248 0.00649672 -0.0102697 -0.0174991 0.0192614 -0.0148423 0.00485937 0.0583008 0 0 0.0482922 0 0.0052401 0 0 0.406647 0 0.317393 0.0901651 -0.00782472 0.194512 0.0135066 0.00961929 0.0473058 -0.0184719 -0.0372978 0.602327 0 0 0 0 0.105335 0 -0.140367 0 -0.109714 0 0 -0.103642 0 0 0.00262537 0 0 0.0185053 -0.0064105 0 -0.0164844 0 0.0593789 0 0 0 -0.00296153 -0.04555 0 0 -0.129992 0 0 0 0.202435 0 -0.247488 0 -0.342808 0.408802 0.127298 0 0 -0.125017 -0.0298886 -0.713448 0 0.0795669 0 -0.0622147 0 -0.228533 0.0882673 0.181669 -0.0899495 -0.114944 0.0997537 0.155673 0 -0.677388 0 -3.68875 0.742404 0 -1.63313 0.704392 -0.268216 0 -1.7241 0.928037 -0.474432 0.0761165 0 0 +18 0 0 0 0.0170252 0.0251478 0 0 0 0 -3.27233 -1.78056 0.190677 0 -0.408804 0 0.0862514 0 0 -0.364901 0.960776 0 -0.0756892 0 -0.56623 -0.465425 0 0 0.0129813 0 0 0 -1.4562 -0.692185 0 -0.333989 0 0.0643235 0.177563 0 1.17549 0 -0.865098 -0.162913 0.282639 0 -2.68729 0 0 0.132767 -1.09976 0 -1.79966 0 -0.56313 -0.481657 -0.0451481 0 0.00729078 0.621319 1.77339 1.3606 0 0 0 0 -0.29862 0 0.455165 1.02177 5.17635 -0.113288 -1.71709 0.509904 2.80622 0 0 2.77689 0 5.85542 0 9.27 -2.72474 0 5.43163 -2.82224 2.7413 0 6.82766 -4.18246 4.37396 -2.32787 0 0 0.0278102 0.00688175 -0.0592334 -0.00576325 0.0170252 0.0251478 0.0498477 -0.0172671 0.272119 -0.000667838 -0.00157958 -0.00799829 -0.00861553 0.0025398 0.0089818 -0.00519899 -0.00685408 0.0526119 0.120802 0.0656159 0.0227879 0.542835 0.110879 0.00101293 -0.162123 -0.194067 0.0128278 0.00665277 0.0832237 1.35749 0.145641 0.0179547 -0.0287789 0.777423 0.0180991 0.000563703 0.0347912 0.0651418 0.0351835 0.112361 0.0232254 -0.0345594 -0.000326606 -0.234485 -0.174478 -0.109752 0.00334828 0.161893 -0.066804 -0.0582627 0.0546766 0.144062 0.0682334 0.143773 0.451906 -0.176613 -0.0205277 -0.0734932 -0.0133563 -0.115073 0.05157 -0.0661745 0.0899957 0.0434338 -4.01361 0.25931 -0.0665869 -0.0303287 -0.235447 0.0605575 -0.178311 -1.28315 -0.387027 -0.0394232 0.0340696 0.0117321 0.200242 -0.234596 -0.0910378 0.326982 -0.375229 -0.0281773 -0.0220996 0.0411602 -0.040174 0.0110575 0.00778003 -0.032954 0.0658127 -0.0679684 -0.0422467 0 0 -0.0592334 0 -0.00576325 0 0 -0.189999 0 -0.532728 -0.0744945 -0.00267574 -0.649663 -0.0118171 -0.157074 -0.00308347 -0.0422441 -0.0240215 -0.462607 0 0 0 0 -0.397897 0 -0.0844357 0 -0.37638 0 0 0.388862 0 0 0.0037239 0 0 -0.0873209 0.00816752 0 0.0540746 0 -0.0840212 0 0 0 -0.00250756 0.0659794 0 0 0.0676036 0 0 0 -0.073181 0 0.120709 0 0.215006 -0.198522 0.455283 0 0 0.230474 -0.653431 -0.37836 0 -0.302422 0 -0.152067 0 -0.0921082 0.859861 -0.486716 0.47947 0.383347 0.00176755 0.210176 0 2.66054 0 3.05874 -1.51844 0 1.84615 -1.10202 0.622801 0 0.898041 -0.896975 0.806183 -0.466616 0 0 +19 0 0 0 0.189262 0.189109 0 0 0 0 1.36504 0.442469 0.535548 0 -0.370522 0 -0.042021 0 0 -0.0990019 0.0105129 0 -0.043313 0 0.484059 0.26036 0 0 0.460825 0 0 0 0.766535 -0.519071 0 0.60759 0 0.126117 2.04398 0 1.6876 0 -0.731311 2.95645 0.547868 0 -1.96524 0 0 -1.91699 -1.61605 0 0.534619 0 0.346652 -0.403405 0.542684 0 -0.70036 -0.756551 -0.388359 1.23746 0 0 0 0 -0.0777269 0 0.223192 1.70519 -1.26385 -0.830242 0.242843 1.95786 -0.479965 0 0 -0.154975 0 0.0692085 0 3.3734 -1.85187 0 1.50348 -1.13977 0.10709 0 6.17173 -4.74081 2.83762 -2.2943 0 0 0.186972 0.0249731 0.099655 -0.065262 0.189262 0.189109 0.0584183 0.0498355 -0.510098 -0.000613067 0.00417534 0.0096217 -0.0170508 -0.155514 0.0338483 -0.00606851 0.0319483 0.170246 -0.207644 0.36605 -0.055214 0.653789 -0.681753 0.00296442 0.474181 0.2146 0.0140292 0.0196269 0.135665 4.45618 0.533057 -0.00157724 0.0181088 2.04641 -0.0432829 0.532865 -0.0464219 0.399388 0.101626 -0.0739045 0.0249684 -0.0488209 -0.000703918 1.27481 0.146418 0.40601 -0.00432529 0.689521 0.322951 -0.0390823 -0.0322803 0.0504726 0.0996584 0.0180803 0.788907 -0.0709673 -0.110244 0.123697 -0.0258754 -0.204249 -0.203515 0.0255235 -0.395037 0.00231497 -3.13932 0.158368 -0.0443101 -0.0237624 0.209014 0.204081 -0.450964 -0.239792 -0.57702 0.0229798 0.0237465 0.016865 -1.08864 -0.476829 0.528648 0.0452547 0.0194863 -0.412501 -0.036801 0.0573098 -0.103631 0.19821 0.0121206 -0.0110653 -0.00222535 0.0278078 -0.154626 0 0 0.099655 0 -0.065262 0 0 -0.365964 0 -0.883435 0.0444626 -0.0824521 -0.80394 0.011557 -0.131646 -0.101826 -0.0339916 -0.10642 -0.0808466 0 0 0 0 -0.133656 0 -0.718543 0 0.00303763 0 0 -0.11427 0 0 -0.0183293 0 0 -0.0346632 -0.0075032 0 -0.0241072 0 -0.244006 0 0 0 -0.0144863 -0.0556901 0 0 -0.278646 0 0 0 0.117479 0 0.225062 0 -1.03697 0.371279 0.356513 0 0 -0.690319 -0.413057 0.220879 0 -0.258532 0 -0.226701 0 -0.217285 0.350098 0.0768363 -0.0854188 -0.154644 0.0999986 0.234774 0 5.12984 0 2.0032 -0.148567 0 1.71372 -0.676144 0.571896 0 0.21079 0.0210786 0.0744976 0.0643425 0 0 +20 0 -0.664041 -0.142974 -0.077982 -0.237593 -0.0113006 -0.0149252 -0.157169 -0.311337 -0.709411 0.355996 -0.125918 0.478537 -0.00941327 0.222154 -0.18855 0.722532 0.824916 -0.121649 -0.640762 -0.185155 -0.165181 0.169936 -0.0918513 -0.144726 0.0510313 0.272096 -0.565665 0.0244481 0.281106 0.0776259 -0.197528 -0.327108 0.648855 -1.2833 0.0178366 -0.0627471 -1.95434 2.21037 -0.214557 -0.0875657 -0.16236 -4.69832 -0.143488 1.23055 -0.693874 -0.0319187 0.0875728 -1.03102 -0.146254 -1.05238 -0.0423472 -2.41323 -0.99657 -1.1885 0.525955 -1.34688 0.252958 1.03739 0.225502 0.436371 0.371651 -0.0884381 0.815282 1.33107 2.51343 0.280674 -0.824183 -4.62691 0.862032 -0.424548 -0.0209966 -0.0644562 -0.686088 0.162306 -0.246462 -2.15754 -6.92874 -4.79517 1.54096 -3.36449 3.00133 -4.19743 -0.384312 1.33931 -2.07104 1.23422 2.45624 -0.1946 -0.190448 0.327644 -0.248823 0 0 0 0 0 -0.077982 -0.237593 -0.0106516 0 0 0 0 -0.00419195 0 -0.0184747 0 0 0.014192 0.093648 -0.120399 0 -0.00833317 -0.561358 -0.306559 0 0 -0.434492 0.00671901 0 -0.420283 -5.62875 0 0 -0.0400822 -1.95775 0 -0.647682 0 -0.213309 0 0 -0.0227165 0 0 -0.879867 -0.0561034 0.196075 0 -0.141836 -0.0373761 0 0 -0.16371 0 -0.031884 -0.194268 0.0900707 0 0 0.0097229 -0.0207137 0 -0.0254882 0.157033 -0.0027159 2.37614 -0.091554 0.028855 0 -0.0383865 -0.176 1.02266 -0.30437 0.0859864 0 0 0 3.5732 0.0205486 0.528975 0.0342449 -0.0267602 0.130778 -0.00882182 0.0158748 -0.0366863 0.0715826 0 0 0 0 0 0 -0.0113006 0 -0.0149252 0 0 0 0 -0.0262373 -0.129883 0 0 0.456178 0 0.0550053 0 -0.00791248 0 0 0.0421651 0 0.160689 0.00206478 0.0891129 0.00852214 0 0 -0.0550186 0 -2.68538 0 1.73266 -0.137137 0 -0.0269651 0.481072 0.010443 0 -0.00168455 0 0 -0.0210196 0 -0.637673 -0.247685 0 0 -0.0261718 0 0 -0.0263238 -0.837777 -0.0474207 0 -0.264484 0 0.976932 -0.272267 0.15898 -0.0067358 0.10836 0.409666 -0.896657 0.0772785 0.594711 -0.898423 -0.00420613 0 0 0 0.0726041 -0.0397331 0 0 0 0 -0.00724648 -15.9556 -4.50995 1.13287 -1.47875 1.22799 -1.37518 -0.507626 0.361327 -0.293796 0.00015456 0 0 0 0 0 0 +21 0 0.0319981 0.0247466 -0.109306 -0.0819507 -0.0954576 0.0619015 -0.428762 -0.189193 1.56837 -0.590189 0.0523884 -0.653902 0.401673 -0.711798 -0.155879 -1.45417 0.0752931 0.0756677 -1.08859 0.340839 0.0656193 -0.269414 -0.251807 -0.0586711 -0.297821 -0.756918 -0.3825 -0.0358223 -0.297913 -0.204919 0.248371 -0.295435 -1.0012 -0.243736 -0.176002 -0.0105996 -0.682269 -4.61515 0.0106153 0.164619 0.686268 0.061248 -0.110059 -1.14163 1.03235 0.0474963 -0.110433 -1.80568 0.359524 -0.883232 0.305911 9.04235 1.12005 -0.411291 -0.00465213 4.62924 2.04682 0.469472 -0.214305 -0.886371 -3.28229 -0.206011 1.58255 -1.25858 0.252309 0.293916 0.982599 -0.192404 -1.91451 2.397 -0.789512 -0.0568331 0.221332 1.05921 0.140429 2.08549 22.6993 9.49064 -2.52003 5.40095 -3.93035 5.34446 -0.0196561 -0.231347 1.18024 -0.0755316 -3.6544 0.835737 0.0703962 -0.251296 0.2637 0 0 0 0 0 -0.109306 -0.0819507 0.0569866 0 0 0 0 0.0326494 0 -0.0388385 0 0 0.0016407 0.000711028 -0.0665751 0 -0.024122 0.0535761 -0.0839282 0 0 0.164178 -0.000212128 0 0.509228 4.91229 0 0 0.0321313 1.28203 0 0.771246 0 -0.146424 0 0 -0.0152615 0 0 0.990266 0.455328 0.0334995 0 0.793052 0.147863 0 0 -0.377843 0 -0.00683746 0.469051 0.0131059 0 0 0.00695974 -0.163101 0 0.0332731 0.0228978 -0.0583603 -5.1546 -0.00799976 -0.0511421 0 0.0952529 -0.0579831 0.218323 -0.728887 0.00111731 0 0 0 -3.34467 0.200886 -0.434596 -0.0644447 0.146287 -0.369901 -0.000431242 -0.00549223 0.0194057 -0.034365 0 0 0 0 0 0 -0.0954576 0 0.0619015 0 0 0 0 0.143848 0.29172 0 0 -0.287058 0 -0.0480163 0 0.0193121 0 0 -0.0468329 0 -0.126102 0.0716949 -0.126678 -0.00448511 0 0 0.130446 0 0.487437 0 -0.35406 -0.230284 0 0.490406 -0.260063 -0.0173849 0 0.0188034 0 0 0.0614323 0 -0.403059 0.234883 0 0 0.0372332 0 0 0.125793 0.0556662 0.455702 0 -0.13549 0 -0.986118 0.363551 -0.410136 0.662349 -0.0302341 -0.443325 0.841532 -0.180188 -0.131032 -3.32678 -0.0314139 0 0 0 0.0172726 0.16491 0 0 0 0 -0.121393 0.611755 2.35198 -3.1231 0.685462 -0.661497 0.656368 0.238193 -0.289325 0.384881 -0.484742 0 0 0 0 0 0 +22 0 -0.598676 -0.010691 -0.352259 -0.23929 0.238855 0.133435 -0.390972 -1.32564 -2.59168 2.37765 0.397905 0.554755 0.338948 1.17176 0.06809 -0.160738 -2.50543 0.83181 0.123697 0.758533 0.436444 -0.16029 -0.692349 0.904638 -0.376851 0.0801798 -0.261895 -0.116163 -1.46845 0.15214 -1.20952 0.24457 -0.0658772 -0.730425 -0.13334 0.105297 -1.28351 1.95093 1.53883 0.305999 0.175737 -4.42263 0.423561 3.83522 -0.852582 0.103168 -0.407069 0.956007 -0.606416 0.827037 0.523654 -0.213321 -0.34422 0.543162 -0.882791 -4.47256 -0.796813 -0.194991 -0.607109 0.327091 0.00192599 -0.636362 -1.19431 2.10738 -0.200768 0.807808 -1.62347 0.0964505 2.73871 -0.839014 -0.865622 0.493735 2.79222 -1.75441 0.809064 3.53514 -10.8909 -6.01523 1.19941 -2.4593 0.571146 -1.43816 -4.15905 1.83431 -1.38711 0.919057 3.01805 -3.42937 2.97641 -1.89656 1.29981 0 0 0 0 0 -0.352259 -0.23929 -0.0470368 0 0 0 0 -0.0165785 0 -0.00308638 0 0 0.00514511 0.0409363 -0.13456 0 -0.0193249 -0.361886 -0.0818727 0 0 0.443661 0.00325371 0 0.179494 -2.28397 0 0 0.0659173 -0.949552 0 0.244696 0 -0.00332503 0 0 0.00419998 0 0 0.530561 -0.230046 0.0657267 0 -0.655266 0.0452114 0 0 -0.203317 0 -0.0234149 0.299421 0.0267602 0 0 -0.0155317 0.124392 0 0.0122806 -0.0355682 0.0463416 3.16628 -0.0702109 -0.01657 0 -0.0831276 -0.0129788 -0.291981 0.521939 0.172351 0 0 0 -1.83492 -0.0646533 -0.00176 -0.045901 0.0808906 -0.170597 -0.00698498 0.0121071 -0.0239276 0.0316654 0 0 0 0 0 0 0.238855 0 0.133435 0 0 0 0 0.0310147 -0.680926 0 0 0.349674 0 0.0532498 0 -0.00408824 0 0 -0.222002 0 -0.191356 -0.0578038 -0.0813163 -0.0275882 0 0 -0.00505234 0 -2.55743 0 -0.399684 -0.0891882 0 -0.38256 -0.266744 -0.00805741 0 0.0011949 0 0 -0.0932367 0 -0.28721 -0.297028 0 0 -0.0377906 0 0 -0.238325 -1.43025 -0.375362 0 -0.721113 0 0.557721 -0.265946 0.31828 -0.386715 0.136449 -0.483378 -0.654664 0.0830981 0.773762 1.73743 -0.116226 0 0 0 -0.0258604 -0.128858 0 0 0 0 0.216815 10.6931 1.13831 0.173318 0.879573 -0.606023 0.497181 -0.261285 0.198613 -0.236538 0.286016 0 0 0 0 0 0 +23 0 0 0 0.180461 0.0875027 0 0 0 0 -0.0619498 -1.23643 -0.0924002 0 -0.332654 0 -0.0639647 0 0 -0.564226 -0.136511 0 -0.309284 0 0.432248 -0.605707 0 0 0.39927 0 0 0 0.471023 -0.279184 0 0.304763 0 0.00651134 1.27273 0 0.189967 0 -0.352637 1.17805 0.171366 0 0.0431431 0 0 -0.0479351 0.0148412 0 -0.89432 0 -0.236533 0.0116901 0.0617325 0 0.266737 1.22889 0.550112 0.0815072 0 0 0 0 0.1429 0 0.844935 1.07723 -0.103484 1.22588 0.247258 0.127508 -1.06878 0 0 -1.40224 0 2.13807 0 -0.12411 0.304362 0 1.59883 -1.1322 2.29351 0 0.726687 -0.281463 0.385471 -0.312596 0 0 0 0 -0.125562 0.00677147 0.180461 0.0875027 0 0.0419417 0 0 0.00887088 0 0 -0.109655 0 0 0 0 -0.325014 0 -0.0666747 1.16389 -0.539822 0 0.188977 -0.0197991 0 -0.00603468 0.561227 4.37501 -0.0613237 0 0.0162447 2.32658 0 0.821756 0 -0.0896296 -0.0186817 0 -0.010376 0 0 1.1997 0 0 0 0 0 0 0 -0.309274 0 0 -0.802185 0 0 0 0 0 0 0 0.0722602 0 -3.84715 0 0.0997353 0.0254288 0 0.10859 -0.49648 0 -0.0870648 0 0.0759879 0 -2.74739 0 0.610724 0 0 0.0185158 0 0 0 0.023642 0 0 0 0 0.00528562 0 0 -0.125562 0 0.00677147 0 0 0.189423 0 0.697503 0.0134184 0.0562856 -0.408781 0.00122711 0.014666 0.0370667 0.026845 0.075897 0.0730907 0 0 0 0 -0.295266 0 0.391588 0 -0.102824 0 0 0.158222 0 0 0.00613138 0 0 -0.00858199 0.0026039 0 0.00524051 0 0.206522 0 0 0 0.0111576 0.026124 0 0 0.200037 0 0 0 -0.168238 0 -0.105329 0 0.172628 0.157417 -0.458971 0 0 0.844958 -0.033672 -0.0183786 0 0.259382 0 0.153119 0 0.356729 -0.0615895 -0.0499094 -0.0300158 0.22541 -0.0559316 -0.669031 0 1.13858 0 -0.590091 -0.18835 0 -0.117313 -0.147442 0.533402 0 -0.106155 0.0274007 0.0664388 -0.0525278 0 0 +24 0 0 0 -0.377229 0.179532 0 0 0 0 -0.860779 3.01483 0.273422 0 0.642216 0 0.0800831 0 0 1.00609 0.459991 0 0.596975 0 -0.813591 1.93163 0 0 -1.159 0 0 0 -0.988585 0.339362 0 -2.0488 0 0.00388342 -3.26987 0 0.463837 0 0.852819 -6.88778 -0.177595 0 0.589656 0 0 0.668296 0.224213 0 1.53412 0 -0.444866 0.414888 -0.356242 0 -0.0119706 -0.25192 -2.24318 -0.763534 0 0 0 0 1.86791 0 -1.10979 -3.84838 0.539223 -4.04937 0.0643077 0.275804 3.17873 0 0 3.11048 0 -5.99398 0 -1.57136 -0.500757 0 -4.6937 1.95176 -1.53245 0 -1.9795 0.437746 -0.298122 -0.458726 0 0 0 0 0.0946151 -0.0104764 -0.377229 0.179532 0 -0.0161018 0 0 -0.00272277 0 0 0.124591 0 0 0 0 0.522876 0 0.0816185 -1.62827 0.801546 0 -0.0649998 0.99494 0 0.00548297 -1.20438 -1.11375 -0.0342185 0 0.114164 -1.61298 0 -1.81973 0 0.69402 0.0103017 0 0.0937854 0 0 -2.75029 0 0 0 0 0 0 0 0.296549 0 0 0.893438 0 0 0 0 0 0 0 0.143884 0 4.22857 0 -0.113948 0.00373456 0 0.032837 1.8019 0 0.074119 0 0.00393226 0 6.29836 0 -0.900855 0 0 0.157708 0 0 0 -0.0343326 0 0 0 0 0.00294937 0 0 0.0946151 0 -0.0104764 0 0 -0.805702 0 -0.338547 -0.0126815 0.0516877 0.183586 0.00123453 0.0750344 -0.121953 -0.0166193 0.0359649 -0.286553 0 0 0 0 -0.00815224 0 0.325791 0 0.125504 0 0 0.23446 0 0 -0.017472 0 0 0.0130877 0.00161452 0 0.0267841 0 -0.143327 0 0 0 0.00549718 0.0159305 0 0 0.162368 0 0 0 -0.254371 0 0.581965 0 0.0577953 -0.0356276 -0.466092 0 0 -0.136283 0.353196 0.00602802 0 0.257662 0 -0.00971212 0 -0.179182 -0.451757 -0.120826 0.0151394 0.227378 0.0606733 0.584508 0 -0.174066 0 0.712645 -0.68614 0 0.188573 -0.162444 0.0568077 0 0.236005 -0.153319 0.0649182 -0.0210479 0 0 +25 0 0 0 0.0423217 0.201305 0 0 0 0 0.188413 -0.685615 -0.301 0 -0.0586579 0 0.026227 0 0 -0.248593 -0.508911 0 -0.293011 0 0.0980494 -0.697499 0 0 -0.129505 0 0 0 0.211375 0.441133 0 0.138955 0 -0.0683124 -0.96087 0 -1.33759 0 -0.0145303 -0.911677 -0.320536 0 0.566477 0 0 0.46428 0.812184 0 0.0867564 0 0.231285 -0.216459 -0.0649416 0 0.20767 0.13392 0.628273 -0.0876843 0 0 0 0 -0.179356 0 -1.30793 -0.89734 -0.399151 0.852676 -0.00805945 -1.22262 0.298443 0 0 0.411877 0 1.40076 0 -0.148 2.31464 0 1.46652 0.500953 0.0555742 0 -0.47606 1.32101 -0.568423 1.03281 0 0 0 0 0.126351 0.0297198 0.0423217 0.201305 0 0.0641535 0 0 0.0132029 0 0 0.00377794 0 0 0 0 -0.100052 0 -0.00918809 -0.920157 -0.00874333 0 0.305654 -0.929199 0 -0.0105493 0.143078 -5.01442 -0.319041 0 -0.0647195 -2.72466 0 0.177037 0 -0.953137 -0.0618239 0 -0.125028 0 0 0.20836 0 0 0 0 0 0 0 0.0744826 0 0 0.19749 0 0 0 0 0 0 0 -0.177767 0 1.44096 0 0.0237017 0.0397082 0 0.161264 -0.511899 0 -0.155522 0 0.121063 0 -0.477159 0 0.0087277 0 0 0.356334 0 0 0 0.00234246 0 0 0 0 0.0274988 0 0 0.126351 0 0.0297198 0 0 0.0151998 0 0.648205 -0.0107062 0.0688384 0.160883 -0.00277167 0.046437 0.0483922 0.0698703 0.0255112 -0.0448279 0 0 0 0 0.21382 0 0.456565 0 0.186622 0 0 -0.0844712 0 0 0.0127466 0 0 0.036325 0.000788246 0 -0.00643069 0 0.202593 0 0 0 0.00616243 -0.000192459 0 0 0.0844742 0 0 0 -0.117104 0 -0.0128542 0 0.0189423 0.0233182 -0.198471 0 0 0.341053 0.203972 -0.642027 0 0.0226434 0 0.0181132 0 0.0754415 -0.0869222 0.0250199 0.0113062 -0.00623328 -0.0239694 -0.437684 0 0.477537 0 -0.196662 0.545437 0 -0.0506475 0.0354918 -0.00877514 0 -0.0787613 0.0763701 -0.0646958 0.0641525 0 0 +26 0 -0.332795 -0.653979 -0.353377 -0.150159 0.0315656 0.0789199 -0.897972 -1.93497 -0.611622 2.21667 0.0293377 -0.0913842 0.56941 -0.947359 0.0345107 -3.43145 -11.9639 1.07478 0.154352 -0.199169 0.671455 0.625686 -0.735105 1.30686 -0.614088 -1.16808 -0.411527 -0.0265658 -0.288922 -0.213156 -0.875864 0.0309597 1.17255 -0.853083 -0.212689 -0.0294574 -0.92605 2.30689 -0.0139686 -0.0476591 0.678441 -2.47191 -0.227642 -1.01813 0.47376 -0.00990424 -0.090548 -0.0138936 0.0993809 -2.15982 1.06765 12.7309 -0.0358915 0.0328951 0.0334114 1.14254 -0.230068 0.0272054 -1.22358 -0.409352 1.18564 -0.211923 -0.785249 1.97962 1.13605 0.450747 -1.38289 -0.91727 0.446639 -1.79576 0.252577 -0.0233225 1.09165 1.2902 0.0142106 3.34391 -9.20819 -6.58232 3.73076 -3.65635 1.04951 -0.0402383 -3.05904 1.65045 -1.56823 2.71155 -1.36139 0.363952 0.16463 -0.20233 0.305523 0 0 0 0 0 -0.353377 -0.150159 0 0 0 0 0 0 0 0.0115632 0 0 0 0 0.0820376 0 0.0125616 -0.382652 0.0985183 0 0 -0.241678 0 0 0.150966 -1.99201 0 0 -0.0351163 -0.890587 0 0.0807459 0 -0.0789292 0 0 -0.0102808 0 0 -0.102064 0 0 0 0 0 0 0 -0.00527704 0 0 0.134483 0 0 0 0 0 0 0 -0.0599054 0 1.37465 0 -0.0109327 0 0 -0.0119363 0.00437626 0 -0.0894015 0 0 0 0.233735 0 -0.112178 0 0 0.00439857 0 0 0 -0.00424575 0 0 0 0 0 0 0.0315656 0 0.0789199 0 0 0 0 0.0596976 -0.632172 0 0 0.136406 0 0.0152225 0 -0.00744932 0 0 0.0320671 0 0.0666348 0.000739183 -0.00608167 0.00368508 0 0 -0.044044 0 -3.61191 0 0.782237 -0.226171 0 0.146525 0.128799 0.000179422 0 0.00428714 0 0 -0.0756291 0 -1.0161 0.560368 0 0 0.0653709 0 0 0.231225 0.0623025 0.230768 0 -0.00886203 0 0.71037 -0.0474719 -0.0190384 -0.0921378 -0.0278931 0.239176 -0.238185 0.0365989 0.45536 2.81059 0.0246148 0 0 0 -0.190897 0.000693634 0 0 0 0 0.179912 -8.74212 -1.28979 -0.489025 -0.0846331 -0.0393118 -0.0854843 -0.0417574 0.0375623 -0.0375145 -0.063283 0 0 0 0 0 0 +27 0 -0.107555 -0.566413 -0.0349551 -0.0148533 0.0317719 -0.0484345 0.271729 1.09496 -0.0605 -0.806316 -0.156614 -0.395096 0.0563246 -0.857254 -0.117436 -2.31827 -10.4201 0.182568 -0.593171 -0.0513622 0.0881501 0.540213 -0.0727147 -0.347515 -0.124244 -0.597012 0.0584315 0.0348639 0.556239 -0.177832 -0.0866382 -0.233566 1.53778 -0.000728786 -0.0602213 -0.084381 0.140818 4.67573 -0.491875 -0.0485797 0.0671096 -0.0903328 -0.27302 -2.38074 0.0468631 -0.0125576 0.142061 -1.19272 0.374588 0.0895191 0.545017 -0.033502 0.576441 -0.528316 0.323458 -0.506477 -0.229442 -0.129857 0.332219 -0.040492 0.221173 -0.0400136 -1.32387 2.46829 -0.0426362 -0.223667 -1.80418 0.182557 0.0441804 1.2492 -0.0205336 -0.337673 -0.0401603 0.365614 -0.205517 -0.229735 -17.1602 -1.48747 -2.14236 -3.60286 3.36429 -5.38629 1.11014 0.141975 -0.476276 -0.793359 -0.134665 0.740739 -0.823979 0.663819 -0.5882 0 0 0 0 0 -0.0349551 -0.0148533 0 0 0 0 0 0 0 0.0238922 0 0 0 0 -0.00358268 0 0.0128605 0.526821 -0.0131592 0 0 -0.976887 0 0 0.775073 -0.393852 0 0 -0.13149 0.414474 0 1.32995 0 -0.49451 0 0 -0.0663969 0 0 2.2525 0 0 0 0 0 0 0 -0.262147 0 0 -0.143805 0 0 0 0 0 0 0 -0.137485 0 -3.39281 0 0.0031119 0 0 0.00253305 -1.02067 0 -0.0281211 0 0 0 -5.15839 0 0.00118978 0 0 -0.0970739 0 0 0 0.00056711 0 0 0 0 0 0 0.0317719 0 -0.0484345 0 0 0 0 0.0564945 -0.797297 0 0 -0.196332 0 -0.0148635 0 -0.0200483 0 0 0.1033 0 0.027239 0.0617571 -0.0023086 0.010958 0 0 -0.176417 0 -2.66072 0 0.974186 -0.164784 0 0.51078 0.131625 0.000476605 0 0.00827302 0 0 -0.094673 0 -0.514707 0.410344 0 0 0.0499459 0 0 0.31473 -1.18526 0.29718 0 -0.545618 0 0.0839808 -0.00420444 -0.0917142 -0.499623 -0.0189451 0.336136 -0.166172 -0.00866277 1.06721 2.24367 0.0151145 0 0 0 -0.244546 0.00237707 0 0 0 0 0.337416 -6.25095 0.644462 -2.55917 -0.0815529 0.113493 -0.462888 0.0805737 -0.0698856 0.0843566 -0.213826 0 0 0 0 0 0 +28 0 0.180002 0.00377013 -0.143963 -0.0611736 0.18233 0.107247 -0.5022 -1.88698 -0.24917 2.0986 0.178232 0.363114 0.231974 0.425923 0.0607121 0.280851 1.68155 0.636924 0.198073 0.0763437 0.396274 0.302782 -0.299477 1.11061 -0.286547 0.00836988 -0.16805 -0.0490078 -0.613757 0.100661 -0.356821 0.10396 0.774668 -0.254866 -0.0245851 0.0729212 0.124624 2.10952 0.551534 0.0189056 0.276392 -0.0328085 0.191843 1.92693 0.193007 0.0113859 -0.181389 0.25905 -0.373896 -1.43676 0.470193 4.03327 -0.143492 0.131513 0.0654416 0.576053 0.302001 0.1866 -1.17411 -0.166767 0.656011 -0.081561 -2.90261 0.321647 0.428283 -0.0368927 -0.532031 0.194537 0.181958 -1.961 0.438567 0.434081 -0.111077 0.380109 -0.0728182 0.813333 -11.0796 -8.35462 5.20469 -4.19372 0.505693 0.894438 -2.92047 0.7688 -0.601246 1.6329 -0.554621 -0.652345 0.779794 -0.737112 0.649022 0 0 0 0 0 -0.143963 -0.0611736 0 0 0 0 0 0 0 -0.0237594 0 0 0 0 -0.0835736 0 -0.00942268 0.492783 -0.188945 0 0 0.900124 0 0 0.124016 4.69739 0 0 0.130112 1.67899 0 0.141306 0 0.477836 0 0 0.069568 0 0 0.143291 0 0 0 0 0 0 0 -0.0743167 0 0 -0.240364 0 0 0 0 0 0 0 0.211398 0 -2.58563 0 0.0132144 0 0 0.0322808 0.283791 0 0.145607 0 0 0 -0.328148 0 0.215466 0 0 -0.00617529 0 0 0 0.00814278 0 0 0 0 0 0 0.18233 0 0.107247 0 0 0 0 0.0539495 -0.184293 0 0 0.0313978 0 0.00528473 0 0.00811384 0 0 0.0627081 0 0.0126638 -0.0107466 -0.0364938 0.0089678 0 0 0.0509382 0 0.216031 0 0.0166813 0.000862685 0 -0.152885 0.11064 -0.00459549 0 0.00900001 0 0 -0.00690647 0 -0.0969475 0.800595 0 0 0.0966626 0 0 0.18788 -0.178211 0.0507365 0 0.144827 0 0.187662 0.0414583 -0.0635818 -0.116349 -0.0330439 -0.0377057 -0.0662467 0.070382 -0.103926 -1.2171 0.00900138 0 0 0 -0.108162 -0.0168885 0 0 0 0 0.0546808 2.89613 -0.476242 1.76349 -0.0564686 0.0374077 0.123466 -0.0459607 0.0420156 -0.0446366 0.1065 0 0 0 0 0 0 +29 0 0.712197 0.748153 0.188621 0.0794154 -0.0967727 0.0114742 0.0712754 -0.0255796 0.323852 -0.413029 0.0815176 0.264179 -0.305585 0.809119 -0.0280419 1.70613 5.66456 -0.674498 0.146565 -0.280479 -0.41363 -0.874085 0.394509 -0.45165 0.325348 0.788461 0.0301461 -0.0224239 -0.408667 0.166236 0.467644 -0.0117842 -2.20001 0.155918 0.117037 0.0566687 -0.654724 -5.75726 0.384499 0.00203256 -0.362235 -0.653024 0.298661 2.26552 -0.250855 0.00692612 -0.0938016 0.589058 -0.326833 0.81782 -1.10476 -9.14191 -0.246397 0.225827 -0.17833 -0.428304 -0.544527 0.0920285 0.298597 0.217005 -0.00776231 0.0482806 -0.207482 -1.89841 -0.1694 -0.140264 0.51086 -0.724351 -0.236772 -1.14913 0.0336156 0.182296 0.42118 0.236624 0.115177 -2.69963 21.9694 4.8651 1.05639 6.06362 -5.1052 8.93223 0.830265 -1.23444 1.77212 -1.03157 0.722548 -0.710668 0.682772 -0.400062 0.306991 0 0 0 0 0 0.188621 0.0794154 0 0 0 0 0 0 0 -0.0273299 0 0 0 0 -0.0574396 0 -0.0187712 -0.316601 -0.074632 0 0 0.829929 0 0 -0.687522 0.89441 0 0 0.101978 -0.278846 0 -1.0762 0 0.324703 0 0 0.0369298 0 0 -1.68235 0 0 0 0 0 0 0 0.341142 0 0 0.353742 0 0 0 0 0 0 0 0.141637 0 -0.168267 0 0.0181007 0 0 0.0113352 0.556464 0 0.175822 0 0 0 3.8527 0 0.0958216 0 0 0.0725025 0 0 0 0.00321634 0 0 0 0 0 0 -0.0967727 0 0.0114742 0 0 0 0 -0.0151586 0.774583 0 0 0.0285995 0 -0.00113436 0 0.0155621 0 0 0.0370732 0 -0.0850408 -0.0259889 0.0034734 0.00544723 0 0 0.128431 0 5.40932 0 -2.10166 0.288483 0 -0.139853 -0.551441 -0.000842026 0 -0.00237207 0 0 0.0881486 0 0.950859 0.236104 0 0 0.0318051 0 0 0.0161718 0.799737 0.0501295 0 0.972863 0 -0.332345 0.0397738 -0.0575745 0.0411964 -0.0335249 0.37512 0.227226 -0.033414 -1.12011 -2.37654 0.0632781 0 0 0 0.103604 -0.00804579 0 0 0 0 -0.238616 14.238 -0.398841 2.84308 0.209504 -0.42942 1.85139 -0.0449878 0.019905 0.0246316 0.14682 0 0 0 0 0 0 +30 0 0.123552 0.303986 0.255286 0.107483 0.0628998 -0.0558254 0.586135 1.3216 0.438312 -1.96056 -0.0456424 -0.0155147 -0.413589 0.716904 -0.0809849 2.09512 7.24938 -0.67309 -0.428253 0.217376 -0.455606 -0.197503 0.533941 -1.21164 0.288837 0.654113 0.376388 0.0122949 0.270846 0.171937 0.632924 -0.09985 -0.327202 0.857302 0.1121 -0.00329874 0.571572 -0.97435 -0.152614 0.0509939 -0.490261 2.12648 0.059039 0.154415 -0.339515 0.0108772 0.0554496 -0.424489 0.0587268 1.14547 -0.599357 -1.52489 0.262004 -0.240131 0.0176815 0.0864323 -0.371512 -0.196646 1.13356 0.293702 -0.668922 0.156463 -2.02774 -0.28109 -0.706797 -0.225345 -0.558013 0.539593 -0.320455 1.94854 -0.346864 -0.0994869 -0.856706 -0.36609 -0.00493327 -2.42479 2.25056 3.3842 -1.33711 1.07815 -0.0587795 0.935131 2.8268 -1.01941 0.984108 -1.55373 0.977919 0.00740515 -0.262544 0.226751 -0.20346 0 0 0 0 0 0.255286 0.107483 0 0 0 0 0 0 0 -7.47269e-05 0 0 0 0 -0.0834977 0 -0.00647241 0.506007 -0.112234 0 0 -0.227773 0 0 0.290411 0.649155 0 0 -0.00478609 0.389658 0 0.660742 0 -0.253465 0 0 -0.0232624 0 0 1.33812 0 0 0 0 0 0 0 -0.209379 0 0 -0.412811 0 0 0 0 0 0 0 -0.017169 0 -0.467304 0 0.00723024 0 0 0.0173983 -0.462309 0 0.0482996 0 0 0 -3.0644 0 0.120268 0 0 -0.0576678 0 0 0 0.00483685 0 0 0 0 0 0 0.0628998 0 -0.0558254 0 0 0 0 0.00967598 0.208217 0 0 -0.280047 0 -0.0300074 0 0.00347108 0 0 -0.0255866 0 -0.0530592 0.0247977 -0.0323039 0.00177737 0 0 0.0204479 0 2.0303 0 -0.161596 0.0898791 0 0.229093 -0.0791701 -0.00441963 0 0.000241086 0 0 0.026359 0 0.56083 -0.141907 0 0 0.0147621 0 0 -0.0626526 0.0853167 0.0927888 0 0.56959 0 0.0565856 -0.0511581 -0.00536559 -0.24275 0.0951301 0.27087 -0.045438 -0.137371 -0.628858 -3.51614 -0.0598107 0 0 0 0.0819468 0.0794413 0 0 0 0 -0.0389294 2.6784 0.465276 0.450039 0.063102 -0.0548764 0.341482 0.103185 -0.0693623 0.0416357 0.029617 0 0 0 0 0 0 +31 0 -0.340284 -0.443988 -0.217214 -0.0914541 0.177005 0.081106 -0.689834 -2.1695 -0.372945 1.89591 0.0806017 -0.0865476 0.351909 -0.170238 0.0557851 -1.58152 -8.12367 0.776709 0.335262 -0.11868 0.459552 0.442766 -0.454313 0.952145 -0.484915 -0.425296 -0.231081 -0.024276 -0.636167 -0.0420525 -0.538535 0.0593741 1.27557 -0.467843 -0.120562 0.0242282 0.122447 3.77209 0.429673 -0.0328123 0.417147 -0.440581 0.10354 -0.310786 0.288882 -0.00519322 -0.124926 0.304399 -0.273193 -1.67325 0.0584854 4.56688 -0.195253 0.178953 -0.0359419 -0.47044 -0.00163912 -0.0128576 -0.888186 -0.249901 0.7473 0.144896 -1.54852 0.87 0.656857 0.0985201 -0.942492 0.0300403 0.272665 -1.32566 0.231857 0.224497 -0.0315139 -0.0267892 0.0402653 1.89706 -11.6693 -5.6009 2.81944 -3.24895 0.796639 -2.29143 -2.18737 0.367195 -0.542878 2.42057 -0.83208 -0.438092 0.807686 -0.559343 0.477889 0 0 0 0 0 -0.217214 -0.0914541 0 0 0 0 0 0 0 -0.014603 0 0 0 0 -0.0597715 0 -0.00201517 0.451821 -0.159562 0 0 0.648732 0 0 0.29344 2.42188 0 0 0.112738 1.29137 0 0.375668 0 0.448993 0 0 0.0755266 0 0 0.463788 0 0 0 0 0 0 0 0.04087 0 0 0.0303838 0 0 0 0 0 0 0 0.151502 0 -0.469916 0 0.0236634 0 0 0.0319319 0.13276 0 0.196095 0 0 0 -1.06211 0 0.179847 0 0 -0.0199874 0 0 0 0.00687648 0 0 0 0 0 0 0.177005 0 0.081106 0 0 0 0 -0.0326906 -0.208099 0 0 0.313467 0 0.0393309 0 0.0093954 0 0 -0.0166785 0 0.183004 -0.0390735 0.0510525 -0.00156152 0 0 0.0783862 0 -2.18683 0 1.85797 0.0229249 0 -0.359943 0.729892 0.00551703 0 -0.00158617 0 0 -0.0150747 0 -0.251367 0.443314 0 0 0.0516735 0 0 -0.0236191 0.971239 -0.104065 0 -0.506067 0 0.428213 -0.0325328 0.0775942 -0.0847584 -0.0109984 0.267299 -0.11224 0.0461786 -0.121101 -1.50069 0.0396486 0 0 0 -0.0637114 -0.0536451 0 0 0 0 0.00988484 -3.79677 -1.77367 2.46282 -0.485879 0.490638 -0.620844 -0.111413 0.106448 -0.154356 0.186159 0 0 0 0 0 0 +32 0 -0.234102 0.15425 -0.0369657 -0.0156126 -0.116126 0.0322931 -0.073771 -0.153386 -0.063642 0.705815 0.160677 0.349162 0.0597779 0.289311 0.268803 2.42835 6.2634 0.272131 0.641743 0.417957 0.143002 -0.0901531 -0.077173 0.277188 -0.0764594 0.873238 0.332868 -0.0423332 -0.0971555 0.0418773 -0.0916392 0.531105 -0.08268 0.774047 -0.040531 0.075888 1.02931 0.280538 0.0531935 0.0828745 0.0709835 2.07132 0.00403337 1.78881 0.0492969 0.0313778 -0.0982888 1.26656 -0.0302792 0.273935 0.152976 -10.6215 -0.615267 0.563902 -0.284981 -1.07413 -0.583474 0.16826 -0.337255 -0.042628 0.783986 0.0901729 0.982465 -0.849801 -0.511801 -0.206598 1.21659 1.16833 0.0465109 -0.802204 0.491915 0.0336063 -1.05441 0.614051 0.139054 -2.99084 -2.69692 -0.459612 -2.29723 0.718896 -1.05891 0.82271 -0.719548 0.295551 -0.190738 -0.292622 -0.141879 -0.0405471 0.121219 -0.0910085 0.0732757 0 0 0 0 0 -0.0369657 -0.0156126 0 0 0 0 0 0 0 -0.013457 0 0 0 0 -0.0252725 0 -0.0075763 -0.535675 -0.0347866 0 0 -0.198667 0 0 -0.313317 -3.19596 0 0 -0.0166007 -1.35507 0 -0.559478 0 -0.112401 0 0 -0.0107863 0 0 -0.976302 0 0 0 0 0 0 0 0.31604 0 0 0.360648 0 0 0 0 0 0 0 -0.0294354 0 3.00688 0 0.0197457 0 0 -0.0116565 0.172483 0 0.0119797 0 0 0 2.2358 0 0.045847 0 0 0.0420748 0 0 0 0.00149916 0 0 0 0 0 0 -0.116126 0 0.0322931 0 0 0 0 0.0686736 0.0355538 0 0 0.03536 0 -0.00141076 0 0.00939043 0 0 0.0595025 0 -0.0417783 0.0165611 0.00679614 0.00870908 0 0 0.0984295 0 2.17785 0 -0.236038 0.16433 0 0.21682 -0.140176 -0.00110631 0 0.00813016 0 0 -0.00265232 0 0.64398 0.413438 0 0 0.0602877 0 0 0.0484009 1.09598 0.192467 0 0.427492 0 0.259602 -0.0796438 0.00748107 0.153912 -0.0416329 0.444099 -0.112876 -0.0123435 -0.737009 -0.676641 0.0791692 0 0 0 -0.0333077 0.00319488 0 0 0 0 -0.0574767 2.92683 -1.09796 1.22871 -0.146817 -0.0541608 0.761966 -0.024686 0.0122512 0.0170633 -0.0865136 0 0 0 0 0 0 +33 0 0.437143 -0.242544 0.154477 0.0652437 0.0069154 -0.0663394 0.22696 0.572225 0.265955 -1.13944 -0.0508829 -0.635944 -0.249807 -0.507625 0.091218 -2.86535 -9.81042 -0.365446 0.353857 -0.0735917 -0.247355 0.0353222 0.322499 -0.720141 -0.00145482 -0.905917 0.430231 0.0219642 0.371272 -0.21229 0.382953 0.151974 0.269538 0.577087 -0.0411883 0.000697187 1.53004 0.995193 -0.324944 -0.0339982 -0.296634 2.99666 -0.069429 -2.62929 -0.206008 -0.013158 0.0855393 0.634413 0.202932 0.191812 -0.428844 2.02588 -0.316694 0.290255 -0.13175 -0.180076 0.470805 0.135008 0.715839 0.178139 0.0730229 -0.000687855 -1.33677 1.11068 -0.546415 0.116181 -0.374682 1.39214 -0.194365 0.906613 0.0132922 -0.269671 -1.39861 -0.290193 0.0589322 0.815144 -3.79227 1.1442 -0.639165 0.347778 0.617577 -2.04855 1.88825 -0.564377 0.125336 -0.210473 0.5929 0.317164 -0.456583 0.393664 -0.280017 0 0 0 0 0 0.154477 0.0652437 0 0 0 0 0 0 0 0.031486 0 0 0 0 0.0731818 0 0.0189851 0.700729 0.0820489 0 0 -0.0464958 0 0 0.540537 0.602235 0 0 0.00467444 0.895564 0 1.00631 0 0.0207062 0 0 0.0119398 0 0 1.81045 0 0 0 0 0 0 0 -0.197471 0 0 0.0216115 0 0 0 0 0 0 0 -0.0435391 0 -1.71634 0 -0.00519851 0 0 0.0256621 -0.619828 0 0.145899 0 0 0 -4.14605 0 -0.105103 0 0 -0.0780231 0 0 0 -0.00353598 0 0 0 0 0 0 0.0069154 0 -0.0663394 0 0 0 0 -0.0299665 0.298332 0 0 -0.0555753 0 0.00260849 0 -0.000704203 0 0 -0.0371647 0 0.122432 0.018201 0.027314 0.000492179 0 0 -0.00364989 0 -0.811643 0 0.796787 -0.088421 0 0.184196 0.227784 0.00490122 0 -0.00530354 0 0 0.0316035 0 -0.17928 -0.411816 0 0 -0.0238024 0 0 0.0931851 -0.0911589 0.149619 0 0.0645251 0 0.584076 -0.0282271 0.00600503 -0.475364 0.107645 0.580029 -0.210543 -0.101576 -0.338657 -2.07499 -0.0205175 0 0 0 -0.0155404 0.013729 0 0 0 0 -0.0721358 -2.81819 -0.110122 -0.108518 0.140847 -0.110223 0.00482553 0.0604145 -0.0401589 -0.00542137 0.023301 0 0 0 0 0 0 +34 0 0.568802 0.391619 0.349748 0.147717 -0.0426659 -0.112574 0.438669 1.00157 0.602144 -2.22088 -0.1631 -0.471511 -0.565584 -0.241296 -0.0364673 -0.192922 2.37115 -1.37657 0.0222228 0.0186235 -0.779128 -0.708198 0.730166 -1.22281 0.426592 -0.23755 0.323562 0.0595829 0.806004 -0.238879 0.867038 -0.130374 -1.78508 -0.00908518 0.0766142 -0.0229519 1.03054 -4.68538 -0.683213 -0.0822539 -0.671604 1.25022 -0.130311 -0.881665 -0.466419 -0.0565153 0.205113 -0.0845547 0.420392 -0.0869703 -0.672079 -0.724602 0.0239905 -0.0219876 0.0707504 1.67311 0.673497 0.180346 1.23438 0.403321 -0.00733422 -0.0200748 2.33145 -1.54461 0.372734 0.0722649 2.91774 0.625389 -0.440059 1.28701 -0.187122 -0.563958 -0.624347 0.182198 -0.0537385 -0.387507 18.0596 8.50855 -2.29344 6.20956 -2.44288 2.19486 3.02081 -1.04363 1.01394 -1.44629 1.34238 0.642553 -0.983972 0.846238 -0.607897 0 0 0 0 0 0.349748 0.147717 0 0 0 0 0 0 0 -0.0111202 0 0 0 0 0.0735959 0 0.000779058 0.138841 0.00594732 0 0 0.0650638 0 0 -0.51329 -0.0188615 0 0 0.0102307 0.260318 0 -0.738049 0 0.134117 0 0 0.026852 0 0 -1.0578 0 0 0 0 0 0 0 0.135066 0 0 -0.0185913 0 0 0 0 0 0 0 0.0456233 0 0.777161 0 -0.000420928 0 0 -0.00735409 0.291997 0 -0.108241 0 0 0 2.42243 0 -0.000292654 0 0 0.0455869 0 0 0 -0.000256306 0 0 0 0 0 0 -0.0426659 0 -0.112574 0 0 0 0 -0.0398103 0.554236 0 0 -0.290334 0 -0.0327501 0 -0.00511908 0 0 0.0472398 0 0.0948536 0.0207409 -0.00893056 0.00733238 0 0 -0.0723989 0 2.79051 0 -1.13709 -0.0421292 0 0.189937 -0.0851718 0.000253882 0 -0.00568432 0 0 0.0684588 0 0.316954 -0.253232 0 0 -0.0192599 0 0 0.0554316 0.0079656 0.047932 0 0.570729 0 0.19967 0.022657 -0.0418263 0.131812 0.00762093 -0.0294308 -0.172989 0.0275326 -0.795826 -2.18105 -0.0405077 0 0 0 0.0205194 0.0405581 0 0 0 0 -0.126476 8.71977 0.692576 0.972427 0.375032 -0.28266 0.443237 0.076018 -0.0551858 0.0675002 -0.059937 0 0 0 0 0 0 +35 0 0.2315 0.197083 -0.0702049 -0.165756 0.184175 0.154279 -0.928464 -2.79161 -0.720359 1.40434 -0.288865 -1.28507 0.0256505 -2.70285 -0.243116 1.53701 5.01133 0.457487 -0.301192 1.31943 0.131955 0.0276191 -0.0416366 0.415572 -0.916959 0.582248 0.0823104 0.153142 0.568883 -0.727598 -0.17654 -0.957574 0.00286056 0.364211 -0.421681 -0.0962623 0.0129012 -1.52441 -0.304174 0.717977 0.0625084 -0.135903 -0.146843 -3.69765 0.071119 0.301186 0.416165 -1.15696 0.204656 -0.283411 1.5767 1.5789 0.52681 -0.380669 0.643274 3.49133 1.38109 0.155688 -0.624499 -0.0988049 0.211141 -0.274474 -1.24011 4.13394 0.128258 0.160661 -1.8485 0.0325967 0.393092 -0.577677 -0.134979 -0.412291 0.239618 0.975557 -1.14848 0.876004 7.2611 -2.52241 7.77194 -1.40614 1.43445 0.883849 -0.872081 1.29109 -2.49459 5.03333 -0.0629656 0.202526 -0.402348 1.18668 -2.40796 0 0 0 0 0 -0.0702049 -0.165756 0 0 0 0 0 0 0 -0.000665475 0 0 0 0 -0.00118391 0 0.00199186 0.11072 -0.0350287 0 0 0.0236832 0 0 0.126058 0.534021 0 0 0.00955709 0.203048 0 0.223452 0 -0.0129989 0 0 0.000205807 0 0 0.30323 0 0 0 0 0 0 0 0.00926595 0 0 0.0700599 0 0 0 0 0 0 0 -0.0244661 0 -0.0651072 0 0.00108755 0 0 -0.0103225 -0.101734 0 -0.00868855 0 0 0 -0.721529 0 0.0397929 0 0 0.0118395 0 0 0 0.0155422 0 0 0 0 0 0 0.184175 0 0.154279 0 0 0 0 -0.490746 -0.503473 0 0 0.444192 0 0.0506944 0 0.0124181 0 0 0.147803 0 -0.832655 -0.167126 0.201823 0.0631889 0 0 0.0888474 0 -0.106482 0 -2.87585 -0.492545 0 -1.08204 -1.51208 0.0242464 0 -0.0792464 0 0 -0.0452861 0 -0.39615 0.83803 0 0 0.181318 0 0 0.0658232 1.98664 0.323101 0 -0.284776 0 1.44153 -0.0958144 -0.00225875 -0.457401 0.205901 1.0825 -0.497402 -0.144593 0.370776 4.0473 -0.0480707 0 0 0 -0.0648335 0.0692555 0 0 0 0 0.0716129 10.1093 -2.61292 5.72777 0.224512 -0.582674 2.03225 -0.113159 0.171151 -0.373701 0.765637 0 0 0 0 0 0 +36 0 0.0466962 0.258278 0.112197 0.0528537 -0.183698 -0.366846 0.698201 2.84627 0.362242 -2.20376 0.0878485 -0.28968 -0.0585853 -1.2879 -0.0488517 1.27878 7.78463 -0.632636 -0.0292905 -0.228948 -0.203194 -0.241234 0.0693576 -0.748369 1.13014 -0.0549971 0.0236347 0.633829 -0.141773 -0.353275 0.215398 -0.668498 -1.06617 0.285147 0.50745 0.0544014 0.492575 -3.90843 0.691119 -0.553759 -0.200738 1.81864 0.264625 -1.03494 -0.637114 -0.881783 0.49516 -0.441242 -0.601039 0.637991 -1.36673 -2.991 0.122301 0.0424418 -0.0535154 1.91835 0.291768 0.196983 0.968889 0.345994 0.507958 0.177979 2.67983 -4.20573 -1.34043 0.570475 2.71316 0.868629 -0.204715 1.12984 -0.228721 0.48006 -0.722103 0.874014 0.00390033 -2.49885 15.8418 7.87873 -5.22533 6.30697 -4.04473 3.56093 1.89741 -2.07776 3.41866 -5.52017 0.564073 -0.913993 1.41114 -1.59799 0.600096 0 0 0 0 0 0.112197 0.0528537 0 0 0 0 0 0 0 -0.0255799 0 0 0 0 -0.0132329 0 -0.00599593 -0.194207 -0.10933 0 0 0.154523 0 0 -0.239293 -0.146501 0 0 0.0138055 -0.257 0 -0.435372 0 0.0783152 0 0 0.00835099 0 0 -1.13894 0 0 0 0 0 0 0 0.126468 0 0 -0.00249026 0 0 0 0 0 0 0 -0.0454294 0 -0.280354 0 0.0292281 0 0 -0.0023467 -0.0414465 0 0.00462167 0 0 0 2.42056 0 0.176953 0 0 0.221523 0 0 0 0.0393784 0 0 0 0 0 0 -0.183698 0 -0.366846 0 0 0 0 0.205625 0.428821 0 0 -0.273372 0 -0.0371732 0 -0.0562718 0 0 0.321399 0 0.597509 0.100294 -0.0528974 0.027702 0 0 -0.448172 0 1.76043 0 1.39001 -0.736047 0 0.827047 0.767299 -0.00719304 0 0.0320836 0 0 0.0387243 0 -0.953183 -0.0147053 0 0 0.000574216 0 0 0.0863791 0.780851 -0.0154511 0 0.990245 0 -0.142869 0.00446724 -0.0229521 0.195103 0.0134392 -0.0242797 0.296089 -0.0853538 -0.747744 0.256155 -0.0192332 0 0 0 -0.0375408 0.0892853 0 0 0 0 -0.0453044 -5.46099 0.378164 -2.24122 -0.268656 0.219644 -0.665315 0.0928168 -0.0786989 0.081245 -0.297517 0 0 0 0 0 0 +37 0 0.555859 0.0316523 -0.0261373 -0.088938 0.165142 0.0670768 -0.954073 -2.94307 -0.369498 1.1189 -0.160152 -0.482191 0.00729087 -1.88711 -0.178134 -1.11519 -2.30981 0.229944 -0.176581 0.412905 0.0582821 -0.00844108 -0.0151397 0.255428 -0.608389 -0.320788 -0.00501817 0.23633 0.609893 -0.389275 -0.0742952 -0.803017 -0.22263 -0.0967926 -0.196465 -0.0520204 0.193379 -1.39743 0.041375 0.408619 0.0103239 0.492656 -0.0302802 -2.61519 -0.0407343 0.0189049 0.532163 -0.696991 0.0392597 -0.614122 0.562594 -2.73328 0.360971 -0.202393 0.6085 2.3961 0.78828 0.211854 -0.411652 -0.0126343 0.462469 -0.903696 -1.00555 1.51002 0.0885204 0.211284 -0.493677 0.365611 0.200726 -1.2486 0.0792348 0.0912853 -0.0809991 0.747432 -1.58588 -1.15146 5.13325 -3.15978 8.14545 -0.425069 0.750673 -0.101031 -0.60706 0.726792 -1.69189 3.96247 0.0360644 -0.0571919 -0.183776 0.494504 -2.58155 0 0 0 0 0 -0.0261373 -0.088938 0 0 0 0 0 0 0 -0.00806071 0 0 0 0 -0.0146765 0 -0.00119831 0.0412957 -0.0724795 0 0 0.0185409 0 0 0.0437159 0.000877971 0 0 -0.00115865 0.0422931 0 0.0639303 0 -0.00749781 0 0 -0.00177425 0 0 0.0195575 0 0 0 0 0 0 0 -0.032452 0 0 -0.143499 0 0 0 0 0 0 0 -0.0475526 0 -0.65471 0 0.0137095 0 0 0.0141928 -0.185413 0 0.125631 0 0 0 -0.098778 0 0.0999089 0 0 0.0487595 0 0 0 0.00544179 0 0 0 0 0 0 0.165142 0 0.0670768 0 0 0 0 -0.521052 0.00863096 0 0 0.431286 0 0.0569463 0 -0.0120808 0 0 0.148578 0 -0.0571044 -0.154882 0.151628 0.0357446 0 0 -0.10673 0 -2.20304 0 -1.29076 -0.541077 0 -1.18376 -0.385746 0.0195139 0 -0.0732699 0 0 0.00938126 0 -1.60252 0.734813 0 0 0.109872 0 0 0.0125317 0.0249471 0.334738 0 -0.789527 0 1.13798 0.0915474 -0.0993756 -0.646989 0.245381 0.689923 -0.461941 -0.162228 0.499018 1.68091 -0.0555493 0 0 0 -0.0640812 -0.0400082 0 0 0 0 -0.03763 6.28961 -1.907 5.06438 0.309159 -0.443601 1.04366 -0.156075 0.170252 -0.281571 0.774685 0 0 0 0 0 0 +38 0 0 0 0 0 0.389276 0.123289 0.371813 0.459603 0 0 0.173854 0.700539 0 0.227828 0.0775508 0 0 0 0.116431 -0.653762 0 0 0 0 0.226411 0 0 -0.326122 0.414575 0.197546 0 0.195738 0 0 0.115106 0.0813792 0 0 -0.258812 0.557576 0 0 0.0454944 0.764947 0 0.225571 -0.468146 0.518062 -0.0500955 -2.61355 0.139616 0 -0.0675242 0.0357602 -0.215682 -0.224912 0.219458 0.141646 0 0 -0.125095 -3.43315 0 0.709937 0.400721 0.116834 0 0 0 0 -0.0131111 -0.236536 0 -2.58526 1.01555 0 0 0 -1.15474 0 -0.0769406 0.906457 0 -0.12564 -0.66747 1.59075 0 -0.0569569 -1.1331 1.95053 -0.99557 0 0 0 0.268581 0.0285151 0 0 0 -0.0180361 0 0 -0.00348483 0 0 0.0050886 0 0 0 0 -0.0792083 0 -0.00735529 0 0.0158446 0 -0.0641573 0.127631 0 0.00427059 0 0 0.251494 0 0.0192808 0 0 0 0 0.0375425 0.0319631 0 0.00537692 0 0 0 0 0 0 0 0 0 0 -0.0479808 0 0 0 0 0 0 0 0 0 0 0.127059 0 0 0 -0.0101572 0.0458806 0 0.0272807 0.0530057 0 -0.0841975 0 0.132651 0 0 0 -0.00227395 0 0 -0.238884 0 0 0 -0.0646642 0 0 0 0 -0.202061 0 0.389276 0.268581 0.123289 0.0285151 -0.496608 -0.0873961 0.144537 0.743263 0.140744 -0.0150791 -0.0165744 -0.277695 -0.00138195 -0.0427007 0.0156208 0.0133664 -0.0198145 -0.152975 -0.0832589 -1.11305 -0.205565 0.138233 -0.152249 0.0196464 -0.0564616 0.0375018 0.109693 -0.00747523 2.70009 -0.181799 0.232204 0.481607 0.00158072 0.993615 -0.265832 -0.018978 -0.00256594 0.0923398 -0.0289675 0.378169 0.0109546 0.00115766 1.09713 -0.656711 -0.00322117 -0.0169628 -0.026926 -0.111146 0.179728 -0.779497 1.57903 -0.0664698 0.0232093 1.44784 -0.0128408 -0.335577 -0.0352987 -0.0200123 0.178027 -0.118299 -0.301446 0.141172 -0.0638114 -0.0139016 1.87213 -0.116196 -0.951384 -0.0136382 -0.0147751 0.460554 0.0925744 0.0163457 0.0238042 -0.0308625 -0.0605107 -0.0425843 -2.57316 1.47557 -4.77454 0.824859 0.317584 -2.37077 0.068736 0.0237273 0.183619 -1.51663 0.0299539 0.0624558 0.0124556 0.260041 -0.950038 0 +39 0 0 0 0 0 -0.452555 -0.349512 0.386406 2.70173 0 0 -0.244574 -0.850091 0 -1.01016 -0.1107 0 0 0 -0.260737 -3.49095 0 0 0 0 0.422665 0 0 0.0572717 0.630041 -0.236143 0 -0.430429 0 0 0.0638237 -0.0644678 0 0 -0.00651378 -2.0835 0 0 0.0436199 -3.69447 0 -0.948807 -0.0432743 -1.11061 -0.0615181 -0.305156 0.0569094 0 0.331373 -0.250414 0.630465 -1.0438 0.499218 0.0458634 0 0 0.917782 3.00502 0 0.83988 0.288715 1.21648 0 0 0 0 0.214257 0.190651 0 -0.691329 -0.308514 0 0 0 -5.68442 0 -0.0220689 -4.406 0 -0.192797 -0.1703 -5.93851 0 -0.156846 0.395734 0.137929 -6.12245 0 0 0 -0.0281126 -0.0130047 0 0 0 0.00637464 0 0 0.00244794 0 0 -0.00170172 0 0 0 0 0.0116525 0 0.0037159 0 -0.0190007 0 -0.0328867 -0.116197 0 -0.00285495 0 0 -0.142245 0 -0.0126223 0 0 0 0 -0.0150738 -0.0207791 0 -0.00295418 0 0 0 0 0 0 0 0 0 0 0.0256078 0 0 0 0 0 0 0 0 0 0 0.0337427 0 0 0 0.0430129 -0.0640923 0 -0.126613 0.0972442 0 0.0309572 0 0.00986106 0 0 0 0.0288838 0 0 0.130986 0 0 0 0.0102163 0 0 0 0 0.129453 0 -0.452555 -0.0281126 -0.349512 -0.0130047 -0.0218654 -0.0245709 -0.141528 0.370407 -0.270164 0.0100076 0.00253295 0.406214 0.000961333 0.0395737 -0.0143703 -0.0179635 0.00748698 0.084787 0.513832 0.360822 0.316157 0.232456 0.201764 0.0782035 0.0647131 0.0265522 -0.208002 0.0113197 1.40799 -0.0948348 1.81694 -0.185931 -0.00134042 1.45334 0.722804 0.0183118 -0.000464785 0.0727873 -0.00499504 0.57651 -0.0227261 -0.00647924 -0.0113109 0.871086 0.000611659 -0.00979152 0.123744 0.0671043 0.00956532 0.158675 2.48923 -0.200756 -0.0297694 0.384109 0.0308204 0.741697 -0.111448 0.204558 0.00707952 -0.0205391 -0.691441 -0.149692 0.137601 -0.289075 2.4766 0.0476963 0.0379432 0.00233364 0.175557 -0.179956 -0.0848508 0.02342 -0.024148 0.0695632 -0.0116082 0.0412061 -20.1343 -2.74421 -7.02579 -0.647669 0.157521 -2.37798 -0.0627987 -0.0782225 -0.266685 -1.12183 -0.0166021 0.0381549 -0.116349 0.0711681 -0.519105 0 +40 0 0 0 0 0 -0.499572 -0.326278 1.06792 3.95898 0 0 0.0532942 -0.265007 0 0.071667 0.034579 0 0 0 -0.0515522 -4.45231 0 0 0 0 0.759132 0 0 0.11716 6.03067 0.0803286 0 0.228256 0 0 0.223924 0.0127044 0 0 -0.103821 -0.424962 0 0 0.0221861 -3.10241 0 -0.115716 1.20422 -0.0786385 -0.0118879 -0.433036 0.0906674 0 -0.00905651 -0.080207 0.589917 2.01657 -0.242432 -0.00810997 0 0 1.48869 1.87168 0 -0.744786 0.27462 -0.320476 0 0 0 0 0.835539 0.376476 0 3.45766 -0.407298 0 0 0 -9.15366 0 -0.367409 -10.741 0 -0.289377 -0.974488 -11.0543 0 -0.025609 -1.71766 2.42338 -19.3034 0 0 0 0.0179859 0.000875953 0 0 0 -0.0183719 0 0 -0.00136973 0 0 -0.00055866 0 0 0 0 -0.0282474 0 -0.00174452 0 -0.0136238 0 -0.21787 -0.282826 0 0.00077767 0 0 0.0627332 0 -0.0177134 0 0 0 0 -0.0777465 0.00745774 0 -0.00506504 0 0 0 0 0 0 0 0 0 0 -0.00111573 0 0 0 0 0 0 0 0 0 0 -0.000980595 0 0 0 -0.00932271 0.0240561 0 0.0432108 0.0316969 0 -0.0403374 0 -0.0224321 0 0 0 0.0155496 0 0 -0.0580437 0 0 0 -0.0090538 0 0 0 0 -0.0560774 0 -0.499572 0.0179859 -0.326278 0.000875953 -0.824092 -0.272168 -0.00335939 0.976114 -0.312046 -0.000140281 0.0249592 -0.202865 -8.30014e-06 -0.012987 -0.000267617 0.000269454 -0.0157114 -0.00314979 -0.389218 -0.839497 0.179376 0.756541 -0.0725936 -0.0519669 -0.110795 0.569774 4.04254e-06 -0.020744 0.205849 -0.195489 1.74822 -0.0649509 -1.53472e-05 3.35758 0.637436 -0.00473187 0.000243261 0.245181 -0.0173951 3.21218 -0.0207193 0.100002 -0.253711 -0.539077 0.00211732 -0.0165416 0.010128 -0.128295 0.0347642 1.76142 1.59289 -0.505344 0.0262862 1.51647 0.00218069 0.241234 -0.0513665 0.265246 0.395936 -0.74282 -1.25596 0.0680657 0.450941 0.132045 0.155654 0.0353463 0.33465 -0.0370341 -0.565023 -0.161902 0.0195411 0.0167286 -0.000639854 0.195406 0.180884 0.0070882 -19.3729 0.649201 -17.952 -0.153707 1.50021 -15.6963 0.020717 0.20653 -0.680228 -5.5477 0.000616758 0.0494164 -0.527403 0.673737 -4.47132 0 +41 0 0.344009 -0.474983 0.0179099 -0.162161 0.295169 0.0903475 -0.384222 -2.02337 -0.0336068 0.363156 0.0261396 -0.990115 -0.0175917 -0.123141 0.00209406 -3.92561 -1.51952 0.168034 -0.018851 0.344344 0.0356036 1.49403 0.0189595 -0.0981594 -0.361605 -2.61768 0.143764 -0.0201472 -0.326331 -0.122276 0.0571007 0.0535329 0.826535 0.157726 -0.0483561 0.000832765 0.882361 -2.30529 -0.0178686 0.0402445 -0.0630261 2.49163 -0.0201524 -0.98595 -0.116954 0.00508826 -0.0867348 0.190315 0.15694 -1.71548 -0.0351327 17.2529 -0.00601524 -0.0680487 -0.232946 8.54561 0.866047 0.0624943 0.234345 0.152149 -1.39392 -0.272437 -2.59158 -0.793712 0.199255 -0.426178 -0.179567 0.393544 -0.0450447 0.400513 -0.298613 -0.193109 -1.4219 0.673837 0.242485 -3.10817 11.7688 -0.522441 8.3765 0.604352 -0.28392 7.21614 -1.1025 0.665269 -0.29891 3.32843 0.084358 -0.00183215 0.164095 -0.0160032 0.258965 0 0 0 0 0 0.0179099 -0.162161 0.00707729 0 0 0 0 0.00109369 0 -0.0582848 0 0 0.00656897 0.0233509 -0.0697686 0 -0.0105946 0.0641922 -0.465242 0 0 -0.191778 0.00153903 0 -0.023236 0.386657 0 0 -0.0394695 0.189431 0 -0.0706902 0 -0.0954249 0 0 -0.015385 0 0 -0.0809134 0.0170736 0.105237 0 0.109533 -0.0417677 0 0 0.00193264 0 0.0100014 -0.265446 0.00398475 0 0 -0.0113411 -0.0151556 0 0.030739 -0.152341 0.0137998 1.26043 -0.0911578 -0.0813863 0 0.0434069 -0.165127 0.325287 -0.0357345 0.0190905 0 0 0 1.00543 -0.199773 1.59988 0.0430491 -0.0662631 0.194979 -0.00745014 0.010566 -0.0408313 0.331755 0 0 0 0 0 0 0.295169 0 0.0903475 0 0 0 0 0.0499942 0.0209846 0 0 -0.183543 0 -0.0313637 0 0.00122562 0 0 0.062388 0 0.0166291 0.0204924 -0.0405804 0.00788819 0 0 -0.00750701 0 1.93131 0 -1.1173 0.0384196 0 0.025965 -0.0699639 -0.00570128 0 0.00818418 0 0 0.0196021 0 0.351825 0.500454 0 0 0.0532763 0 0 0.0380144 -0.561286 -0.128545 0 -0.0159355 0 -0.647762 -0.0323611 -0.0219166 -0.130937 0.056174 0.307643 0.0535585 -0.0971645 0.575423 4.17346 -0.0797491 0 0 0 0.0244348 0.0454102 0 0 0 0 0.00558568 5.08115 0.0180044 2.12095 0.102098 -0.0514636 1.17645 0.00929263 0.014267 0.0608626 0.0460789 0 0 0 0 0 0 +42 0 1.13192 0.29699 0.0633248 0.127521 -0.0213763 -0.0137977 -0.560681 -1.20921 0.455705 -1.48057 -0.132314 -4.3958 -0.0158247 -1.57167 -0.0167294 -2.89203 -7.23127 -0.0179595 -0.111378 0.442493 0.0341199 -0.825122 0.0208768 -0.311275 -0.86638 -0.469696 0.258298 0.0320999 0.555135 -0.870626 0.0984457 -0.120069 -2.83937 2.00909 -0.30048 -0.0187235 0.672237 -10.4719 -0.443141 0.0503697 -0.061539 3.33073 -0.0731791 -7.71666 -0.234861 0.00407259 0.129379 -0.683639 0.10443 -0.686427 0.0697704 27.9641 0.124346 -0.0659261 0.110769 10.7339 1.12579 -0.000195226 0.166644 0.0408485 -0.306876 -0.124186 4.48198 1.51072 0.918065 0.141217 0.395869 -0.731607 -0.179085 1.2707 0.693825 0.106978 -1.34458 0.467172 -0.258623 -2.03161 46.6091 9.00791 4.31145 7.98177 -3.68689 7.36065 1.41417 -0.408376 0.528489 2.00489 0.169403 0.143196 -0.107018 0.215116 -0.440537 0 0 0 0 0 0.0633248 0.127521 -0.00773143 0 0 0 0 -0.00073808 0 -0.0294953 0 0 -0.00171022 0.0112133 -0.0292792 0 -0.00823812 0.0595366 -0.0836287 0 0 -0.0742098 0.0007885 0 -0.0366373 1.17947 0 0 -0.0152715 0.335706 0 -0.135543 0 -0.0788822 0 0 -0.0118564 0 0 -0.882348 -0.0109855 -0.0257353 0 -0.114872 -0.0783737 0 0 -0.203003 0 -0.0134553 -0.308369 0.0161431 0 0 0.00175903 0.0154315 0 0.0201286 0.0448322 -0.0121734 0.323284 -0.00958052 -0.0317232 0 -0.0507602 -0.117891 0.26814 -0.0185342 -0.244652 0 0 0 3.41934 0.140408 0.487556 0.0391253 -0.0455306 0.4356 0.00175168 -0.00419406 0.0120814 0.128655 0 0 0 0 0 0 -0.0213763 0 -0.0137977 0 0 0 0 -0.0315468 0.305795 0 0 -0.175222 0 -0.0379611 0 0.00470764 0 0 -0.0416784 0 0.0101264 -0.00321217 -0.0362337 -0.00532765 0 0 0.0117655 0 0.988514 0 -0.330204 -0.104918 0 0.100932 -0.102043 -0.00903218 0 -0.0065001 0 0 0.0515335 0 -0.0450688 -0.226628 0 0 -0.0269996 0 0 -0.0288974 1.39918 0.0567247 0 -0.048926 0 -0.640729 0.0363948 -0.0967778 0.0217773 -0.0171525 -0.1092 0.804725 -0.0475103 -0.257044 -1.46329 0.0309507 0 0 0 0.0123363 0.0430822 0 0 0 0 -0.0506633 8.92179 2.3672 -1.86509 1.25323 -0.695347 0.232726 0.196331 -0.137664 0.129831 0.125513 0 0 0 0 0 0 +43 0 1.11769 0.331653 0.0630915 0.29013 -0.0819575 -0.0159877 -0.0677654 0.0874157 0.734255 -1.3733 -0.0388397 -1.2228 -0.00722887 -0.692705 -0.0039278 -0.134494 -0.406458 -0.150485 -0.0700033 -0.355448 -0.0255152 -0.478004 0.0195284 -0.394267 -0.204515 0.242749 0.0209262 0.00931568 0.283425 -0.247859 0.116431 -0.00997492 -1.45189 0.444883 -0.0649488 -0.00590355 -0.188775 -5.94824 -0.246543 -0.100255 -0.013264 0.598401 -0.0410864 -2.6242 0.0534018 -0.021575 0.049362 -0.344833 0.0244842 -0.471332 0.204431 19.4381 0.406389 0.110054 -0.00248324 4.54682 0.82151 -0.410162 -0.0465007 -0.0293502 1.02547 0.596393 3.55373 0.620338 0.751835 -0.520759 0.0349289 -1.50989 -0.228753 -0.52065 0.91223 0.0953668 0.0756976 -0.481458 -0.14168 1.20476 27.4534 5.55677 2.1778 4.45487 -1.93991 5.36117 1.11958 -0.592045 1.65488 -0.95169 -0.0385182 0.0926936 -0.123405 0.117881 -0.224917 0 0 0 0 0 0.0630915 0.29013 0.00724972 0 0 0 0 0.00122452 0 -0.0090208 0 0 0.0045368 0.0159462 -0.00596955 0 -0.00362691 0.0212385 0.022709 0 0 -0.289169 0.00116001 0 -0.00852133 0.633477 0 0 -0.0318894 0.102077 0 -0.0309931 0 -0.0889869 0 0 -0.0112957 0 0 -0.231831 0.0168226 0.0590338 0 0.098666 0.0433294 0 0 -0.223913 0 0.016159 0.273358 -0.0257507 0 0 -0.0106998 -0.0111302 0 0.0271549 -0.155576 0.0175478 -0.490609 -0.0362908 -0.0271046 0 0.0390099 0.0542762 0.0514301 -0.00531719 0.0911624 0 0 0 -0.431077 -0.0817336 -0.359568 0.0127818 -0.00788887 -0.127682 -0.00629546 0.0073509 0.000135802 -0.0776037 0 0 0 0 0 0 -0.0819575 0 -0.0159877 0 0 0 0 0.0465556 -0.271408 0 0 -0.688704 0 -0.0969446 0 -0.00780538 0 0 0.0984706 0 -0.075802 0.0473314 -0.104686 0.00935421 0 0 -0.0595079 0 -0.22019 0 -1.87154 -0.117224 0 0.467945 -0.338742 -0.0158953 0 0.00406594 0 0 -0.0427095 0 -0.338627 0.60081 0 0 0.0445344 0 0 0.267992 0.526296 0.240299 0 -0.561071 0 -0.469626 -0.0469339 -0.162713 0.0696964 -0.0933008 -0.4614 0.303816 0.0108186 0.50991 1.09259 -0.0246151 0 0 0 -0.0929768 0.00953644 0 0 0 0 0.031065 17.4951 5.63523 -3.17929 1.50788 -0.777328 0.734504 0.403901 -0.290281 0.496969 -0.499626 0 0 0 0 0 0 +44 0 0 0 0.10968 0.395433 0 0 0 0 -0.0264801 -1.7645 -0.136464 0 -0.00460693 0 0.185156 0 0 -0.0829252 -0.0333484 0 0.00574065 0 0.165663 -0.254835 0 0 0.160288 0 0 0 0.175613 1.05836 0 0.863058 0 -0.0579519 0.842352 0 0.179345 0 -0.125731 3.71857 -0.211312 0 -1.23827 0 0 2.05164 0.549093 0 0.0459174 0 0.113966 1.10842 -0.403975 0 -0.970638 -1.0955 0.0322435 -0.0811643 0 0 0 0 -0.471457 0 0.298559 0.686043 -0.1982 0.506302 0.441902 0.484852 1.31388 0 0 0.251957 0 3.7163 0 0.459077 0.466799 0 1.13444 -0.659734 1.2321 0 2.92009 -1.13883 1.13483 -1.18311 0 0 0.151685 0.0143799 -0.178512 0.000240669 0.10968 0.395433 0.0146551 0.118988 -0.227915 -0.000236771 0.0172423 0.00338152 -0.0137003 -0.105918 0.0133908 -0.00312575 -0.00228221 0.0522527 -0.0689585 0.198836 -0.0156309 0.455948 -0.444054 0.000850139 0.824048 -0.171793 0.00135053 -0.00814512 0.223201 4.10102 0.0157861 -0.00472748 0.0570261 1.59956 -0.0331498 0.5161 -0.0185265 -0.278344 -0.00490176 -0.0471149 0.00208449 -0.0366409 -0.00115559 1.72124 0.0792211 0.0951816 -0.00246312 0.284696 -0.00994563 0.00283682 -0.00771803 0.176284 0.0821787 0.0342654 0.767274 -0.00394394 -0.0408508 0.0660731 0.0286954 -0.0189809 -0.147143 -0.0144574 1.06766 -0.103403 -6.1595 0.236445 0.0424181 -0.0410325 -0.33389 0.03323 -0.894882 -0.214272 -0.17463 -0.0216497 0.451984 0.00849084 -3.90487 0.258698 1.10944 0.183874 -0.0321136 -0.232024 0.0226555 0.00805089 -0.0931624 0.0607946 0.00374733 0.000945728 0.00320888 -0.0370515 -0.00392749 0 0 -0.178512 0 0.000240669 0 0 -0.586035 0 -1.19286 -0.0723717 0.0105998 -0.859682 -0.0112912 -0.144949 -0.0962289 -0.0743489 0.0294473 -0.423512 0 0 0 0 -0.130507 0 0.0856617 0 -0.453192 0 0 -0.0595897 0 0 -0.0148438 0 0 0.00181387 -0.00448484 0 -0.0183745 0 -0.213228 0 0 0 0.00130598 -0.0102459 0 0 0.0792834 0 0 0 -0.128975 0 0.200497 0 0.335952 -0.0927582 0.265069 0 0 0.167898 0.0444279 1.44673 0 0.227139 0 0.148306 0 -0.019821 -0.151031 0.056806 -0.08032 -0.106307 -0.00820982 0.808322 0 5.40464 0 2.29433 -0.313927 0 1.18308 -0.320837 0.276252 0 0.88273 -0.360636 0.239421 0.0197802 0 0 +45 0 0 0 -0.279898 -0.218791 0 0 0 0 2.88035 1.64663 -0.710204 0 0.742446 0 -0.351273 0 0 0.575833 -1.76146 0 0.40078 0 -0.237442 0.905056 0 0 -0.999276 0 0 0 0.603461 -0.142949 0 -1.83247 0 -0.310801 -2.96595 0 -3.18232 0 1.26037 -5.66575 -1.53281 0 2.31892 0 0 -1.58781 3.69473 0 2.62248 0 1.77563 -0.593403 -0.648663 0 -1.96726 -1.30366 -1.35834 -1.07085 0 0 0 0 0.544519 0 -0.753571 -1.98841 -4.2673 -2.2564 -0.296995 -2.52151 3.35538 0 0 1.22114 0 -1.73079 0 -2.93432 3.01273 0 -5.60216 4.52907 -2.22292 0 -7.19309 7.58927 -4.60241 4.25374 0 0 0.00758076 0.00674921 0.102493 0.0436266 -0.279898 -0.218791 0.0280468 0.00547414 -0.191634 -0.000562669 0.000333622 0.022992 -0.0626525 0.0909758 0.00560399 -0.00631619 0.0119728 0.135512 0.222134 0.0282775 0.0535116 -2.14117 0.431178 0.000534714 0.0479212 -3.7961 0.0112883 -0.00101247 -0.991355 -5.9906 0.174701 -0.0343128 -0.415448 -3.52022 -0.0319132 -1.92886 -0.0178398 -2.07903 0.00853544 -0.393006 -0.218579 -0.0632569 -0.00553762 -3.73956 0.536823 0.190918 -0.00278769 0.775479 0.844877 0.0934195 -0.0260402 -1.37051 0.0409999 -0.0670275 -0.914505 0.204947 -0.00644162 0.0341301 -0.0309054 -0.126928 -0.159348 0.156237 -1.17707 0.208309 -4.61635 0.212285 0.158746 0.0679839 0.248956 0.342009 -3.16749 1.10104 -0.290802 -0.130971 0.132369 0.013393 8.48372 1.20666 -1.80512 0.272925 1.04973 0.267025 0.0500407 0.123651 -0.455984 0.00784307 0.00517376 0.0233589 -0.112387 0.183216 -0.0434646 0 0 0.102493 0 0.0436266 0 0 0.230002 0 -0.623786 -0.0642988 0.00883454 0.343629 -0.0120838 0.0188986 0.0481698 -0.0307795 0.0143962 -0.318028 0 0 0 0 0.179977 0 0.185567 0 -0.0464903 0 0 -0.0628869 0 0 0.0065563 0 0 0.036067 0.000199779 0 -0.0028937 0 -0.0896532 0 0 0 -0.000413313 -0.00643371 0 0 0.162542 0 0 0 -0.105029 0 0.128007 0 -0.718915 0.238407 -0.563241 0 0 -0.531793 0.47685 0.341422 0 0.119384 0 0.0280106 0 -0.0298357 -0.320043 0.122458 -0.0226845 -0.0709534 -0.0636243 0.458277 0 -0.309659 0 0.624012 0.656981 0 -0.342239 0.684252 -0.50859 0 0.475506 0.0507657 -0.266166 0.225808 0 0 +46 0 0 0 -0.0965119 -0.0763895 0 0 0 0 0.918428 -0.00303088 0.102066 0 0.304726 0 -0.0331261 0 0 0.0239174 -0.187546 0 0.0727289 0 -0.0687758 0.190154 0 0 -0.760598 0 0 0 0.423983 0.452105 0 -1.70869 0 -0.0355374 -2.64008 0 -0.320507 0 0.330808 -6.05675 -0.17161 0 -0.311097 0 0 0.399769 0.597662 0 0.100094 0 0.8545 0.45842 -0.585703 0 0.518846 -1.00914 0.143651 -0.110773 0 0 0 0 0.691423 0 -0.728837 -3.11898 -2.99006 -0.00683174 0.332789 -0.460774 1.02112 0 0 2.41241 0 -0.93073 0 0.595786 -0.148607 0 -0.778561 0.724198 0.097166 0 -0.156129 0.631529 0.876129 -0.065471 0 0 0.0371394 0.00384188 0.0946707 0.0261346 -0.0965119 -0.0763895 0.0242634 0.00907555 -0.159692 -8.72954e-05 -0.000281212 0.0189352 -0.0122741 0.0417885 0.00354136 -0.00109324 -0.00234131 0.0163181 0.160509 0.0496604 0.0257885 -1.05695 0.256253 0.000234355 0.0221682 -1.43123 0.00113513 -0.00655948 -0.475349 -4.14368 -0.0383311 -0.00461659 -0.261444 -2.07605 -0.0298984 -0.842576 -0.0101895 -0.671776 -0.018918 -0.0721645 -0.123508 -0.0122413 -0.000781114 -1.47095 0.383206 -0.0275137 -0.00175502 0.49164 0.210785 0.0106643 -0.0102078 -0.685345 -0.0592829 -0.0144584 -0.912605 -0.0201624 -0.0102363 0.0214874 0.00117336 -0.0913158 -0.038466 -0.0499895 -0.825346 0.0977509 0.0525919 -0.167865 0.133239 0.0166489 0.170211 0.0179397 -0.802063 -0.0896448 0.0845923 -0.00981601 -0.116986 0.00276931 3.33705 0.340764 -0.808327 0.0665249 0.245916 0.226461 0.00969763 0.0241106 -0.0365704 -0.0453667 0.00118297 0.00329185 -0.00497824 0.0424741 0.00953657 0 0 0.0946707 0 0.0261346 0 0 0.0646691 0 0.35216 -0.0463742 0.00729021 0.204103 -0.000353381 0.0577389 0.078175 0.0701728 -0.0358033 -0.45167 0 0 0 0 0.0480591 0 -0.015212 0 0.36616 0 0 0.133264 0 0 0.0195645 0 0 0.0202019 0.0050189 0 0.0335552 0 0.13612 0 0 0 -0.00311375 0.0271312 0 0 -0.217976 0 0 0 0.420723 0 -0.284652 0 0.432054 -0.0265262 1.4404 0 0 0.677433 -0.0373499 0.941653 0 0.124229 0 -0.0273949 0 0.18211 0.258154 0.0533028 0.0656624 -0.100878 0.0340398 -0.139205 0 0.804388 0 2.27319 -0.622063 0 0.748407 -0.383112 0.283688 0 0.545294 -0.284395 0.282447 -0.0573098 0 0 +47 0 -0.309405 -0.333361 0.0722735 0.0461157 -0.409428 -0.152147 0.602574 2.68075 1.05483 -1.10092 -0.308535 0.162133 -0.0489199 -0.175956 -0.0464326 -0.608302 -4.43965 -0.126813 -0.265514 0.327656 -0.067076 0.268056 0.218792 -0.326123 0.428687 -0.0867885 0.06214 0.061268 1.39655 0.0467333 0.482478 -0.0595011 0.933951 -0.042084 0.0772709 -0.133969 0.16234 3.80579 -1.66611 0.0358616 0.0566104 -0.281141 -0.684157 -1.17461 0.339595 -0.01418 0.291006 -0.666948 -0.0504844 3.59038 0.0652754 4.90719 -0.122282 -0.356986 0.205773 -1.36195 -0.417114 0.448649 -0.308508 -0.0405492 1.10372 -0.0656381 2.2167 2.43545 -1.64187 -0.148192 -1.76989 0.24183 -1.1483 0.105906 0.330231 0.409365 -1.25696 0.285798 -0.188006 0.169022 -13.7605 1.36772 -7.4831 -2.94442 5.25654 -9.77555 1.41618 -0.637609 1.26575 -5.63127 -0.643028 1.6715 -1.64498 1.97062 -2.65486 0 0 0 0 0 0.0722735 0.0461157 0.00233875 0 0 0 0 0.00208623 0 0.128699 0 0 -0.00223309 -0.0276281 0.554446 0 0.0709289 0.472532 1.04831 0 0 -0.527317 -0.00129698 0 0.391269 2.76118 0 0 -0.0327216 1.23164 0 0.939248 0 -0.216506 0 0 -0.00826218 0 0 2.15298 0.0452941 -0.0465706 0 0.0553809 0.130849 0 0 0.0190183 0 0.00615396 0.476982 -0.146958 0 0 0.00131732 -0.00211294 0 0.0193754 0.189613 0.0490939 -5.9599 0.042978 0.0605 0 -0.0472877 0.981084 0.373233 -0.350867 -0.307402 0 0 0 -18.551 -0.457427 -5.09614 -0.0832193 0.208466 -2.76559 0.00108674 -0.00245339 0.0356466 -1.10268 0 0 0 0 0 0 -0.409428 0 -0.152147 0 0 0 0 -0.0231614 -0.713117 0 0 0.00150344 0 0.005552 0 -0.0201281 0 0 0.0504224 0 0.0801948 0.0660556 0.0935796 0.00572808 0 0 -0.174242 0 -4.0758 0 0.980847 0.0471136 0 0.615543 0.158307 0.0122586 0 -0.00445738 0 0 -0.0904751 0 -0.560654 -0.243802 0 0 -0.0096479 0 0 0.0323832 0.815155 0.160888 0 -0.548775 0 0.475922 -0.116416 0.0270276 -0.243115 -0.00155765 0.537604 -0.296891 0.0666318 0.448813 -2.13202 0.0676606 0 0 0 -0.153733 -0.0653686 0 0 0 0 0.22508 -3.75383 -0.0633044 -2.43124 -0.179436 0.238421 -0.963924 -0.0126322 -0.0178821 0.0169872 -0.470574 0 0 0 0 0 0 +48 0 0.951496 0.208907 -0.189744 0.138484 -0.0827031 -0.0111755 0.253104 1.48331 1.49556 -0.470195 -0.0128523 -0.350247 0.553942 -0.209716 -0.13 -1.41907 -1.42212 0.14038 -0.718665 0.459658 0.269384 -0.303913 -0.455166 0.111703 0.269157 -0.634027 -0.0600155 -0.00419739 0.47303 -0.121521 -0.086458 -0.320983 -1.32971 -0.0397813 -0.0261136 -0.0213766 0.180998 -4.88777 0.0400257 0.0884664 0.692352 0.23813 0.0670048 -0.472117 0.862992 0.0213841 0.0188797 -1.5468 -0.0451399 0.386603 0.48683 3.03334 1.08589 -0.198049 0.0907113 -1.08293 -0.223164 -0.106183 -0.52222 -0.572993 -1.02584 0.107667 2.92695 -1.73877 -0.313791 -0.336516 1.71968 0.192791 -1.49944 1.96777 0.592756 0.163585 -0.615809 -0.103281 0.0999887 0.213425 15.2839 3.6384 -2.57933 4.48672 -3.81703 6.06029 0.692137 -0.447901 0.516651 -1.8191 -1.63409 0.201238 -1.26812 0.0930307 -0.899234 0 0 0 0 0 -0.189744 0.138484 0.0168413 0 0 0 0 0.00693258 0 0.00483502 0 0 -0.00144522 0.0227848 -0.132392 0 -0.0229419 -0.0900457 0.0827223 0 0 -0.936297 0.00125519 0 0.485493 1.79827 0 0 -0.0927238 0.342471 0 0.502496 0 -0.382421 0 0 -0.0399527 0 0 -0.406688 0.143256 -0.0398635 0 0.349172 0.178703 0 0 -0.800913 0 0.0183733 -0.163089 -0.0335426 0 0 0.00277994 -0.0370417 0 0.00159903 -0.0503297 -0.0438913 -8.28079 0.150544 -0.00897148 0 0.0524684 0.0918431 -0.151676 -0.303562 -0.491115 0 0 0 0.175893 0.159825 -0.255461 -0.00222942 0.0123515 -0.0858853 0.00165194 -0.00418004 0.0549714 0.0229846 0 0 0 0 0 0 -0.0827031 0 -0.0111755 0 0 0 0 0.0632071 -0.261054 0 0 -0.186538 0 -0.0166163 0 -0.00452976 0 0 0.0363317 0 -0.073458 0.0271256 -0.030735 0.00627062 0 0 -0.0189836 0 1.43945 0 -1.5555 -0.0529083 0 0.367447 -0.2505 -0.00278365 0 0.00554074 0 0 -0.0492894 0 0.0991792 0.27709 0 0 0.0379742 0 0 0.316018 0.186628 0.0725598 0 0.513215 0 -1.36988 0.0611951 -0.146668 -0.28715 -0.0658008 0.0980798 0.74921 -0.158429 0.103767 2.89338 0.0654504 0 0 0 -0.0657368 0.0490626 0 0 0 0 0.0558938 14.2941 2.76301 -1.76228 1.22429 -0.922726 1.36975 0.168424 -0.166655 0.210344 -0.224287 0 0 0 0 0 0 +49 0 0.727074 0.207731 0.254069 0.179395 0.0792974 -0.0298635 0.422933 1.19921 3.99209 -1.13674 -0.174978 -0.435512 -0.143642 -0.45272 -0.0974656 0.223238 0.829662 -0.212864 -0.762899 0.600346 0.01065 -0.124074 0.777076 0.112802 0.252475 0.037646 0.500232 0.0305262 0.646718 -0.104529 1.77467 -0.191123 -0.699176 1.33432 0.0632594 -0.0672093 2.02233 -3.76031 -0.88252 0.0642389 0.254998 5.50696 -0.401378 -1.55552 1.31062 0.00900462 0.143188 -1.60406 0.311651 0.390319 -1.01912 -1.51163 1.49813 -0.297019 0.261265 0.111408 0.731042 0.119203 0.0500855 -0.187783 -1.6792 -0.294257 0.492304 -1.27306 -1.19648 -0.163836 0.290835 1.8243 -4.33724 1.33304 0.107492 0.155107 -3.38682 0.249273 -0.328707 -3.08748 12.3839 2.66072 0.546376 0.915233 -0.302606 3.96693 1.38342 -1.55092 2.22713 -2.45169 -2.48168 1.1987 -1.85804 1.01804 -1.22942 0 0 0 0 0 0.254069 0.179395 0.0212322 0 0 0 0 0.0102342 0 -0.0284601 0 0 -0.00524581 -0.0898869 0.0556919 0 0.00314443 0.708924 -0.122618 0 0 -0.901126 -0.0041441 0 -0.147435 3.45568 0 0 -0.0809411 1.5606 0 -0.696384 0 -0.498287 0 0 -0.0450789 0 0 -1.7927 0.215861 -0.11612 0 0.444484 0.195983 0 0 -0.89934 0 0.0269997 0.43856 -0.0263697 0 0 0.00893733 -0.0430782 0 -0.0127293 0.0336571 -0.0713305 -8.21982 0.305745 -0.0580915 0 0.0569676 -0.217397 0.447028 -0.401605 -1.17398 0 0 0 12.7192 0.825248 1.16845 0.0545842 -0.131189 1.80431 0.00386217 -0.00943875 0.127939 0.158192 0 0 0 0 0 0 0.0792974 0 -0.0298635 0 0 0 0 0.0554304 0.737181 0 0 -0.419915 0 -0.05659 0 0.00762004 0 0 0.0111732 0 -0.0899871 0.0437063 -0.0755632 0.00328154 0 0 0.0391216 0 1.84581 0 -1.55033 0.163208 0 0.20174 -0.325145 -0.0116809 0 0.0085263 0 0 0.0996055 0 0.453644 -0.284251 0 0 -0.02721 0 0 0.0315271 0.548262 0.282858 0 0.627984 0 -0.650108 0.219835 -0.255142 0.455692 0.042941 -0.433924 0.553022 -0.132128 -1.12987 -4.48952 -0.116869 0 0 0 0.0841997 0.142832 0 0 0 0 -0.228902 10.8585 2.80919 -1.08895 0.809765 -0.655206 1.02034 0.263738 -0.253208 0.346646 -0.317343 0 0 0 0 0 0 +50 0 1.45105 0.439237 0.326244 0.288501 -0.133011 -0.122435 0.173007 0.971718 0.36857 -2.59652 -0.245174 0.387551 -0.515663 -0.208678 -0.0480204 1.68547 7.02247 -1.35499 0.226106 0.540805 -0.775662 -0.51185 0.604953 -1.31478 0.376618 0.55828 0.339844 0.056587 0.417731 0.0895559 0.532654 -0.164491 -1.28526 0.105631 0.125981 -0.0537335 0.70234 -5.32595 -0.605096 0.0329047 -0.625427 1.06726 -0.0594351 -0.260344 -0.227107 -0.0152614 0.159062 -0.0778375 0.534444 -0.12959 0.115034 -6.09278 -0.310802 0.360625 -0.163815 -1.34487 0.041543 0.107348 0.736715 0.0431376 0.56753 0.189447 1.70278 -1.96347 -0.149915 -0.346443 2.40491 0.212872 0.239576 1.01982 0.78118 -0.4454 -0.735229 -0.274494 0.014626 -1.71355 17.2157 7.47716 -2.40793 6.72851 -3.15338 4.04503 4.80517 -1.35556 1.67417 -1.42048 0.991826 1.0952 -0.784371 0.756333 -0.470098 0 0 0 0 0 0.326244 0.288501 0.00355687 0 0 0 0 -0.00254144 0 0.0343391 0 0 -0.00299187 0.00519342 0.119033 0 0.0223115 -0.123953 0.299257 0 0 0.084193 0.000431036 0 -0.296772 -0.384686 0 0 -0.0220692 -0.382273 0 -0.533083 0 0.266588 0 0 0.0135767 0 0 -1.6132 -0.0515984 -0.0618869 0 0.0707749 0.0480815 0 0 -0.543186 0 0.00581795 -0.273565 -0.0120013 0 0 0.00302892 -0.00956223 0 -0.00536835 -0.287945 0.0132637 0.850628 0.0666197 0.0444854 0 0.0886916 0.0576575 0.417604 -0.15623 -0.0615806 0 0 0 7.50731 0.494343 -0.757265 0.0291286 0.0248672 0.164528 0.00211695 -0.000295099 0.0252357 -0.175491 0 0 0 0 0 0 -0.133011 0 -0.122435 0 0 0 0 -0.053535 0.555182 0 0 -0.356319 0 -0.0401424 0 -0.00426789 0 0 -0.0201807 0 0.0375622 0.0171728 -0.00527476 -0.00537442 0 0 -0.0549343 0 -0.578282 0 -1.541 -0.316673 0 0.146773 -0.137587 -8.65485e-05 0 -0.00507896 0 0 0.0564238 0 -0.911111 -0.266249 0 0 -0.0313813 0 0 0.180921 0.250872 -0.00610559 0 0.875026 0 -0.0435322 0.172535 -0.123189 -0.18136 0.0707138 0.428827 0.0857088 -0.023293 0.0806175 3.74352 -0.0214563 0 0 0 0.0573314 0.0309027 0 0 0 0 -0.151976 16.7138 2.69617 -0.435853 1.04915 -0.519861 0.56473 0.234507 -0.195392 0.199935 -0.0655046 0 0 0 0 0 0 +51 0 -0.14529 -0.357642 0.016619 -0.0387256 0.136768 0.0438613 -0.297345 -1.55309 -0.146251 -0.354934 0.0488003 -0.145674 -0.11455 0.405844 -0.0366409 -1.85288 -6.81358 -0.0051271 -0.179544 -0.0919027 -0.144479 0.30535 0.129142 -0.538268 -0.463211 -0.51664 0.099821 -0.0020966 0.0147332 0.0492159 0.093639 -0.0618189 0.648409 0.180811 -0.0511017 0.0294272 0.0720014 1.47094 0.278578 -0.0192909 -0.302008 0.157866 0.221459 0.400378 -0.638233 -0.00334811 -0.0212426 -0.325722 -0.711016 -0.535203 -0.388687 2.15677 0.121602 -0.147238 0.0288107 -2.30348 0.200749 0.1282 1.23741 0.707908 -0.280856 -0.0326962 -1.34679 1.23006 1.10476 -0.583504 -0.586303 -0.346406 0.0690394 1.54911 -0.00487871 0.441815 -0.177005 -0.54295 0.0428038 1.90428 -2.73222 -1.16082 2.93872 -0.854551 1.30626 -3.62627 2.08427 -0.246212 -1.15126 2.52267 2.7873 -1.24367 0.326949 -0.142083 -0.0165802 0 0 0 0 0 0.016619 -0.0387256 -0.0241169 0 0 0 0 -0.0134244 0 -0.0687204 0 0 -0.0022336 -0.000882573 -0.215407 0 -0.0266376 0.26978 -0.50172 0 0 0.927009 -0.000792439 0 0.583832 -1.42298 0 0 0.0865371 -0.105291 0 1.08389 0 0.53272 0 0 0.0531625 0 0 2.04798 -0.262742 -0.0113186 0 -0.476036 -0.213203 0 0 0.696764 0 -0.00126125 1.44946 -0.00854 0 0 0.0085681 0.0742846 0 -0.0122929 -0.0112793 0.101064 3.58683 0.0238123 -0.201563 0 -0.101627 0.063411 0.181148 0.0579365 0.306331 0 0 0 -3.09824 0.217294 1.7484 0.00174758 0.132684 -1.42408 0.000565931 0.00671497 -0.0560685 0.153774 0 0 0 0 0 0 0.136768 0 0.0438613 0 0 0 0 -0.0541343 0.0415322 0 0 -0.00527611 0 -0.00933488 0 0.00344985 0 0 0.00167328 0 0.217483 -0.0207853 0.0150958 -0.00124255 0 0 0.0524398 0 -0.452361 0 0.802123 0.0774992 0 -0.174549 0.394253 0.00036997 0 -0.00514014 0 0 -0.00472504 0 0.193973 0.180455 0 0 0.015994 0 0 0.188748 -1.58478 -0.0960703 0 -0.0732507 0 0.659922 -0.104711 0.124996 -0.138604 -0.038403 0.143701 -0.726152 0.0601316 -0.0920034 -1.7356 0.00133888 0 0 0 -0.110539 -0.0241495 0 0 0 0 0.0194355 -2.34236 -0.804624 1.7705 -0.531678 0.705625 -0.92233 0.0173458 0.0573643 -0.1727 0.241746 0 0 0 0 0 0 +52 0 0.285161 0.371355 0.270295 0.204552 -0.00336214 -0.0719047 0.490567 1.11793 0.409516 -2.45911 -0.0416554 0.190127 -0.43833 -0.195317 0.214319 0.944586 2.36773 -0.916516 0.77592 0.146531 -0.505509 -0.522239 0.521897 -1.23183 0.341395 0.512342 0.718809 0.0187827 0.58706 0.0604018 0.504104 0.372846 -1.2318 1.03918 0.112852 0.0332082 2.00257 -3.10906 -0.536319 -0.0239697 -0.548067 3.77899 -0.0475057 -1.16742 -0.264512 -0.00888342 0.110182 1.11282 0.353911 0.27531 -0.229228 -1.62939 -0.402079 0.943479 -0.363295 -0.938064 -0.835513 -0.255259 0.734033 0.142055 0.372258 0.297769 1.60791 -0.750713 -0.370358 -0.584875 1.58049 2.02461 0.0649054 0.914955 0.759453 -0.301944 -0.547291 0.0341247 0.139303 -1.22989 6.70262 5.96747 -4.09317 5.82886 -2.1858 1.8533 4.36815 -1.0467 1.32868 -1.64768 1.15518 0.907784 -1.13307 0.886204 -0.660655 0 0 0 0 0 0.270295 0.204552 0.00468702 0 0 0 0 -0.00107555 0 -0.0199619 0 0 0.000171554 0.0287365 -0.0639946 0 0.0039855 0.522784 -0.203285 0 0 -0.36903 0.00161097 0 0.101409 2.43212 0 0 0.00141534 1.12861 0 0.401604 0 0.0709269 0 0 0.0325937 0 0 0.461081 -0.0238418 0.000444464 0 0.0904144 0.209762 0 0 -0.179645 0 0.00861757 0.506763 0.00546781 0 0 0.00500952 -0.00389948 0 -0.0140875 0.294733 -0.037216 -3.17472 0.06304 -0.0508287 0 -0.0715157 -0.0577974 -0.353021 0.0164286 -0.159543 0 0 0 3.09033 0.326197 1.1376 0.0213116 0.0031087 0.0811372 0.00120268 -0.000317853 0.0118638 0.0632013 0 0 0 0 0 0 -0.00336214 0 -0.0719047 0 0 0 0 0.0517495 0.624797 0 0 -0.404321 0 -0.0384972 0 0.0102363 0 0 0.00534916 0 0.0139552 0.0913482 -0.0212227 0.00369252 0 0 0.0529898 0 3.39142 0 0.790481 0.149643 0 0.555106 0.188316 -0.00171023 0 0.0108165 0 0 0.0914161 0 0.711671 -0.0609845 0 0 0.00643378 0 0 -0.316824 2.86753 0.152767 0 0.628298 0 -0.160208 0.162184 -0.113037 0.055034 0.0658995 0.367809 0.703789 -0.0141577 -0.452267 1.03129 -0.0337551 0 0 0 0.344206 0.0629751 0 0 0 0 -0.296023 2.946 2.72364 -2.98106 0.578264 -0.630564 0.419854 0.286393 -0.252572 0.266869 -0.309584 0 0 0 0 0 0 +53 0 0.627836 0.131904 0.0398322 0.117364 -0.180096 0.00421504 -0.188413 0.264855 0.165783 -0.407004 0.0632934 0.84639 -0.0389314 1.21901 0.0764618 1.38283 3.58023 -0.0402929 0.532824 0.123276 0.0202771 0.0810752 0.0743037 -0.0651056 0.140667 0.540303 0.420917 -0.0201611 -0.276656 0.269179 0.0688951 0.123256 -0.0393149 0.647989 0.0262415 0.0366956 0.563174 -1.77562 0.078028 0.0100463 -0.0169535 0.530494 0.0546332 3.76386 0.114151 -0.00577153 -0.0675606 0.883398 0.142129 0.558772 0.537108 -0.17878 0.130245 0.564436 -0.3152 -0.634961 -0.325272 -0.580209 -0.1781 -0.0445555 0.842297 0.51965 0.821994 -0.636443 -0.755474 -0.232613 1.28483 1.16492 -0.284874 -0.397476 0.843615 -0.140856 -0.676373 -0.946189 0.0575068 -0.355263 7.9368 1.58794 0.0699354 1.51752 -1.2305 1.57583 0.543874 -0.570819 0.940713 -1.5653 -0.347561 -0.0012355 0.319032 -0.354719 0.495103 0 0 0 0 0 0.0398322 0.117364 -0.00501976 0 0 0 0 -0.00292607 0 0.00478226 0 0 -0.00417126 -0.0410108 0.103644 0 -0.00351046 -0.336926 0.31355 0 0 0.378854 -0.00210244 0 -0.160695 -1.4561 0 0 0.0313934 -0.878559 0 -0.488876 0 0.139122 0 0 0.0087169 0 0 -1.33755 -0.0534199 -0.0832784 0 -0.0893089 -0.126906 0 0 -0.116846 0 0.000732418 0.26845 -0.033116 0 0 -0.00474867 0.0185532 0 0.0206478 -0.476652 0.0419044 3.24451 0.0463322 0.0230714 0 0.109622 0.100182 0.276689 0.116695 -0.0313154 0 0 0 1.53164 0.151359 -1.50473 0.00438059 0.0535977 -0.422619 0.000389745 0.00132966 0.0127477 -0.217666 0 0 0 0 0 0 -0.180096 0 0.00421504 0 0 0 0 -0.0107494 -0.358652 0 0 -0.134169 0 -0.0211366 0 -0.0156238 0 0 0.0864251 0 0.0456869 -0.0333979 -0.0441038 0.010776 0 0 -0.105784 0 -3.44488 0 -1.35795 -0.187009 0 -0.149198 -0.181355 -0.00692494 0 -0.0047647 0 0 -0.0532644 0 -0.942333 0.169119 0 0 0.0273991 0 0 0.252886 0.178531 -0.192089 0 0.0176665 0 -0.100175 -0.01472 0.0783595 -0.304262 0.0487109 0.244113 0.139132 -0.000936692 0.49171 4.64298 0.0126385 0 0 0 -0.18655 -0.045263 0 0 0 0 0.126491 18.6539 2.58031 0.223969 0.88302 -0.476638 0.762878 0.138441 -0.0968436 0.0966078 0.0550349 0 0 0 0 0 0 +54 0 0.189541 0.0493996 0.192928 0.0638854 0.140093 -0.0092573 -0.197867 -0.853797 -1.3807 -0.869055 0.0431119 -0.00601442 -0.549767 -0.110715 0.168508 -0.539366 -2.39002 -0.578192 0.84201 -0.20952 -0.437469 -0.202854 0.462772 -0.694164 -0.193442 -0.0493239 0.772629 0.0234458 0.621622 0.0282907 0.0189118 0.304415 -0.393961 0.921672 -0.012971 0.0766792 1.9543 -1.22358 0.132516 -0.0635219 -0.888225 2.71753 0.322002 -0.704091 -1.26118 -0.0168665 0.116095 1.36746 -0.876697 -0.839503 -0.0600357 -3.382 -1.28117 0.32761 0.001668 -1.44119 -0.289951 -0.0380533 0.744002 1.01426 -0.12063 0.277664 0.450133 0.361817 0.781723 -0.704674 0.894061 1.08754 1.74513 1.60481 0.431887 0.672638 -1.93611 0.355957 -0.113638 -0.76802 4.75205 0.828361 0.481935 2.54945 -0.784702 -1.23008 3.26691 -0.492761 -1.55355 2.53116 3.83998 -1.5005 0.182164 0.52157 -1.11245 0 0 0 0 0 0.192928 0.0638854 -0.0305561 0 0 0 0 -0.0172207 0 -0.0618582 0 0 -0.00205074 0.0056483 -0.158759 0 -0.0254843 0.421774 -0.396326 0 0 1.03732 -5.61422e-06 0 0.294324 -0.502665 0 0 0.079437 0.310672 0 0.573943 0 0.776866 0 0 0.0667475 0 0 0.966407 -0.345949 -0.0193612 0 -0.618485 -0.0725266 0 0 0.556376 0 0.00156381 1.15975 0.00300775 0 0 0.00452333 0.091857 0 -0.0118654 0.207934 0.060018 2.82782 0.00603712 -0.128853 0 -0.144247 0.0761064 0.718994 -0.16085 0.495632 0 0 0 2.34512 0.404494 1.58846 0.0238086 0.105968 -0.913444 0.000771823 0.00712706 -0.0562289 0.088372 0 0 0 0 0 0 0.140093 0 -0.0092573 0 0 0 0 -0.0378174 -0.150656 0 0 -0.124929 0 -0.0133892 0 -0.00983583 0 0 0.0519793 0 0.136394 -0.00603374 0.0297121 0.00383124 0 0 -0.0715217 0 -0.510718 0 0.92174 -0.0705216 0 0.0809071 0.408272 0.0032258 0 -0.00588488 0 0 -0.0273259 0 -0.10055 0.263695 0 0 0.0230689 0 0 0.360585 -0.311191 -0.175382 0 0.650048 0 0.519988 -0.130976 0.171397 -0.374984 -0.105819 0.513453 -0.440822 0.148448 0.558008 4.54507 0.0883159 0 0 0 -0.0937556 -0.0905295 0 0 0 0 0.167362 0.402162 0.392892 0.188196 -0.0522356 0.350845 -0.721562 0.0926361 0.012995 -0.146497 0.223761 0 0 0 0 0 0 +55 0 -0.266048 -0.494283 -0.330323 -0.203293 0.263161 0.17926 -0.291098 -1.69897 -3.36917 2.04217 0.370867 -0.0610474 0.361871 1.39733 0.115835 -2.97503 -11.1181 1.14193 0.308523 -0.788517 0.66341 0.677539 -0.795244 1.04662 -0.571065 -0.9422 -0.34364 -0.0943288 -1.30281 0.100623 -1.54388 0.244723 1.31308 -0.520314 -0.119863 0.113839 -0.509595 3.02998 1.56053 -0.0730259 0.128812 -2.08482 0.542793 2.84811 -0.81224 0.00652172 -0.361395 0.998302 -1.18415 -0.0227834 -0.150754 4.83026 -1.18167 0.100115 -0.0860377 -0.487622 -0.724068 -0.0103997 -0.548022 0.171583 0.908799 0.0470032 -3.0139 1.67749 0.237731 -0.307027 -2.42972 -0.150336 3.77692 -1.09037 -0.0920214 1.04515 0.165726 -1.06265 0.255396 0.369173 -11.2014 -6.04771 4.97882 -4.83539 2.08184 -1.57506 -2.37162 0.45994 -0.81294 1.40574 2.47307 -3.21215 2.71016 -2.73799 2.33151 0 0 0 0 0 -0.330323 -0.203293 -0.0323939 0 0 0 0 -0.0159471 0 -0.0682711 0 0 -0.00026129 -0.00561982 -0.196057 0 -0.0282503 -0.0317962 -0.449117 0 0 1.1417 -0.000977121 0 0.557248 -1.65474 0 0 0.0974688 -0.379548 0 1.01727 0 0.411541 0 0 0.0337769 0 0 1.9433 -0.32004 0.0139668 0 -0.650836 -0.223372 0 0 0.759803 0 -0.00747891 0.00391156 0.0221557 0 0 0.000375206 0.0916617 0 0.00438238 0.147646 0.0478583 1.81879 -0.0794576 -0.13125 0 -0.139903 -0.0532594 0.142738 -0.0418616 0.236999 0 0 0 -8.33436 -0.344346 1.06117 -0.0313016 0.0396332 -0.785061 -0.00122672 0.00215694 -0.0324855 0.218473 0 0 0 0 0 0 0.263161 0 0.17926 0 0 0 0 -0.0185691 -0.315838 0 0 0.151333 0 0.0387428 0 0.0255115 0 0 -0.0676711 0 0.0806394 -0.0258848 -0.0208226 -0.00264655 0 0 0.178704 0 0.560156 0 0.023774 0.235219 0 -0.388678 -0.000719972 0.00682783 0 -0.000749449 0 0 -0.00941204 0 0.791129 0.399501 0 0 0.0672108 0 0 -0.161676 1.20897 -0.332819 0 0.127744 0 0.337252 -0.193087 0.294854 -0.221428 0.0620658 0.160626 0.098313 -0.0223689 -0.423191 0.456871 -0.0277303 0 0 0 0.0914024 -0.0132629 0 0 0 0 -0.0136923 2.97153 -0.516043 2.207 -0.135128 -0.257427 0.663798 -0.166853 0.128075 -0.0962832 0.274262 0 0 0 0 0 0 +56 0 -0.0404916 -0.233571 -0.343126 0.00095837 -0.315225 0.0979722 -0.690927 -1.42935 0.392377 2.83807 0.0970542 -0.503429 0.606576 0.82062 -0.0283656 -0.509139 0.953511 1.46614 -0.234111 0.857441 0.849833 0.611464 -0.667519 1.44158 -0.676973 -0.415711 -0.563233 -0.0692642 -0.349724 -0.047472 -0.34672 -0.0353392 0.718362 -0.54606 -0.274376 0.0220357 -1.28057 0.0887757 0.082403 0.216573 0.744832 -2.41761 0.0494525 1.22643 0.651218 0.0574626 -0.160967 -0.462478 -0.261692 -0.179704 1.29749 5.94749 -0.263461 -0.382708 -0.017018 -5.01233 -0.538964 0.612489 -1.52265 -0.18045 1.27747 -0.144318 -0.207023 2.66841 1.18242 -0.288094 -2.80317 -0.986705 -0.370555 -2.10529 0.491416 0.0766118 1.39355 -0.60848 0.00970543 5.81212 12.107 -2.8443 2.67789 -2.24037 0.338972 -0.707403 -4.76584 1.74606 -2.15641 0.723265 -2.00456 -0.0140469 0.268868 -0.0946527 0.289338 0 0 0 0 0 -0.343126 0.00095837 -0.00308022 0 0 0 0 0.00536703 0 -0.0333616 0 0 0.00177804 0.01204 -0.123814 0 -0.0163785 0.0515492 -0.0801113 0 0 0.463585 0.000533022 0 0.335291 1.702 0 0 0.0836648 0.331416 0 0.682497 0 0.0749347 0 0 0.0202088 0 0 0.828586 0.107245 0.0313249 0 -0.0489018 -0.067964 0 0 0.39239 0 -0.0096209 0.158116 -0.000708922 0 0 -0.00606734 0.00550451 0 0.0372108 0.10502 0.020565 -0.504676 -0.0908201 -0.0610984 0 -0.018817 0.0554574 0.106192 0.0151424 0.248486 0 0 0 -7.24919 -0.412459 -0.280383 -0.00202113 -0.00143696 -0.654819 -0.00291273 0.00375188 -0.0241212 -0.00355426 0 0 0 0 0 0 -0.315225 0 0.0979722 0 0 0 0 0.0676525 -1.20393 0 0 -0.0154725 0 -0.0146499 0 -0.0204281 0 0 0.0893982 0 -0.153227 -0.00673019 -0.0854605 0.0102206 0 0 -0.142237 0 -1.92106 0 -1.06931 -0.100879 0 0.0576028 -0.530692 -0.012937 0 0.00129196 0 0 -0.139779 0 -0.26108 0.527522 0 0 0.0665149 0 0 -0.166915 1.83341 0.000140655 0 -1.17424 0 -0.111361 -0.00872107 0.00934997 -0.410743 -0.0593211 0.554125 0.403331 0.165556 1.57814 1.81314 0.167826 0 0 0 -0.124926 -0.141398 0 0 0 0 0.2916 18.5935 3.10726 -2.19762 1.24926 -0.488443 0.0947018 0.127951 -0.0633131 -0.00623437 -0.0184301 0 0 0 0 0 0 +57 0 0.00412685 -0.0401682 0.0381537 0.0273122 0.174181 0.110082 -0.393449 -1.97904 0.126 0.623194 0.246485 0.276919 -0.0441887 0.888919 0.319279 -0.831954 -1.87342 0.425011 1.44645 0.0842351 0.142086 0.0544304 0.0578757 0.145067 -0.554304 -0.362597 0.26924 -0.0413338 0.128608 0.103406 0.0983293 0.472145 -0.0554955 0.985835 -0.104101 0.164264 1.13422 -0.904196 0.83797 0.0511318 -0.015101 3.27268 0.553357 2.51956 0.0442765 0.0199638 -0.0508072 2.13242 -0.920407 -1.23077 -0.131649 3.00292 -1.62453 0.932023 0.159771 -2.67725 -0.471475 1.24452 0.125224 -0.129142 -0.79405 0.112195 -1.19123 1.45976 1.01897 -0.471281 -0.793766 -0.694393 -0.338103 0.689262 0.355688 0.212024 -2.44676 0.406326 0.103923 -0.615743 7.4199 -2.76676 6.68889 -1.73737 0.5979 0.302028 -0.887853 0.242412 -1.41291 3.86501 -0.13629 -1.28204 -0.216254 -0.324368 -0.106401 0 0 0 0 0 0.0381537 0.0273122 0.00180091 0 0 0 0 0.000771596 0 -0.0915273 0 0 -0.00468794 -0.0215402 -0.237314 0 -0.0346999 1.16179 -0.631879 0 0 1.36467 -0.00191696 0 0.5012 5.09643 0 0 0.170103 2.49042 0 0.765576 0 0.672955 0 0 0.0855888 0 0 1.07028 0.00743368 -0.053353 0 0.0216685 -0.246357 0 0 0.747689 0 0.00267746 0.320004 0.0467852 0 0 0.0111628 -0.00504205 0 -0.0153248 0.567203 0.100315 0.588903 0.02253 -0.209801 0 -0.087098 -0.204207 1.14685 -0.419576 0.639685 0 0 0 3.45174 0.528324 2.56086 0.0289102 0.0850086 -0.664265 0.00238997 0.0061876 -0.0514132 0.33183 0 0 0 0 0 0 0.174181 0 0.110082 0 0 0 0 0.000454742 0.514101 0 0 -0.298843 0 -0.0430865 0 0.0147152 0 0 0.0257227 0 -0.0548738 -0.008892 -0.0807016 0.000780323 0 0 0.13781 0 0.316401 0 -0.614298 -0.0182133 0 -0.151829 -0.189616 -0.0108058 0 -0.000820876 0 0 0.0609264 0 0.182921 0.304877 0 0 0.0245816 0 0 0.088532 -1.30205 -0.0678495 0 0.221637 0 0.489747 0.122972 -0.0185231 -0.121603 -0.07416 0.212338 -0.428509 0.0462361 0.169299 0.576811 0.00255204 0 0 0 0.0590192 -0.00995763 0 0 0 0 -0.0846265 8.1945 1.57871 1.38614 0.202474 0.301535 -0.370431 0.231676 -0.0876092 -0.0236288 0.231769 0 0 0 0 0 0 +58 0 0.342194 0.250964 0.211896 0.187931 0.0696207 -0.0205905 0.350872 0.612722 1.15001 -1.19821 -0.0608678 0.219481 -0.296689 0.434934 -0.0186446 0.45766 2.57008 -0.564929 -0.1286 0.54134 -0.325472 -0.374637 0.386471 -0.396351 0.23115 0.0455316 0.491833 0.0240254 0.421606 0.0625004 0.533221 -0.109502 -0.695553 0.92365 0.0916367 0.0170715 2.01532 -2.63062 -0.420617 0.0647556 -0.13179 4.32187 -0.097328 0.55483 0.607176 -0.002457 0.095485 -0.637776 -0.0783077 0.146624 -0.389476 5.46639 -0.860032 -0.241458 0.258307 1.01877 -0.681342 0.700416 0.323061 0.00294156 -0.181256 -0.119933 1.68251 -0.848379 -0.784798 -0.30752 1.98313 2.25652 0.524724 0.472962 0.062463 0.0933575 -0.667927 0.572105 -0.143807 -0.767529 8.77535 4.42921 -2.61879 2.85264 -2.21933 3.04063 1.32878 -1.30146 1.64709 -1.62428 -1.86899 0.752514 -0.900054 0.247009 -0.348808 0 0 0 0 0 0.211896 0.187931 0.00272467 0 0 0 0 -0.0020248 0 -0.0460971 0 0 -0.00386745 -0.0407944 0.00633383 0 -0.0165425 0.445247 -0.116288 0 0 0.031934 -0.00211804 0 -0.0477011 2.02992 0 0 0.0480628 0.947958 0 -0.255061 0 0.0791538 0 0 0.0340325 0 0 -0.855062 -0.0411707 -0.0759086 0 0.0522796 -0.0112795 0 0 -0.0508481 0 0.00912209 0.440103 0.00436926 0 0 -0.000992076 0.00432055 0 0.00183961 0.107612 0.00404185 -0.93102 0.0955659 -0.0453208 0 -0.00386084 -0.0853433 -0.00670539 0.0587013 -0.0586805 0 0 0 5.55999 0.422542 0.479816 0.0230712 0.0200861 0.105329 0.0010797 0.000842412 0.0168558 0.043629 0 0 0 0 0 0 0.0696207 0 -0.0205905 0 0 0 0 0.071936 0.193068 0 0 -0.572433 0 -0.0618098 0 0.00230457 0 0 0.0288458 0 0.0610231 0.0396997 -0.11806 0.00213088 0 0 -0.0222857 0 1.16886 0 -0.656267 0.205759 0 0.263094 -8.96201e-06 -0.0130976 0 0.00916474 0 0 0.0454047 0 0.568381 -0.0686588 0 0 -0.0118966 0 0 -0.146987 2.5904 -0.0151944 0 0.238985 0 -0.524822 0.205956 -0.0526446 -0.260589 -0.0115676 0.198129 1.09504 -0.05893 0.0177639 2.37231 -0.000796867 0 0 0 0.205308 0.0208522 0 0 0 0 -0.144052 13.4876 4.72348 -2.24059 0.973074 -0.864139 1.0495 0.43775 -0.311586 0.335443 -0.190393 0 0 0 0 0 0 +59 0 0 0 0 0 -0.493445 0.20096 0.489476 2.93738 0 0 0.320916 0.88833 0 1.70876 -0.0104092 0 0 0 -0.192209 4.00301 0 0 0 0 0.321035 0 0 -0.943977 -5.95709 0.722022 0 -0.0299352 0 0 -0.093143 0.0338779 0 0 1.2062 1.27929 0 0 0.232788 2.50926 0 0.945546 -2.04213 -0.66241 -0.32365 2.29532 -0.410426 0 0.0180782 0.0615 -0.392286 2.64146 1.24182 0.839698 0 0 -0.590434 -3.07311 0 -0.42178 -0.245914 1.11596 0 0 0 0 -0.198236 0.793973 0 -2.84592 2.30134 0 0 0 -5.63428 0 -1.01663 5.02328 0 -0.447476 2.22598 -5.51589 0 -0.0236781 2.67816 -6.87043 20.8341 0 0 0 -0.173426 -0.0466124 0 0 0 0.117567 -0.176603 0 0.0157768 0 -0.0200175 0.0393666 0 0 0 0 0.105312 0 0.0179854 0 0.257972 0 0.847181 -0.0593338 0 0.00785893 0 0 0.278795 -0.00707849 -0.0061316 0 -0.0263626 0 -0.0125557 -0.0228887 0.0525001 -0.0996203 -0.00387135 0 -0.00141625 0 0 0 -0.00186777 0 0 0.018665 -0.0196428 -0.0218073 -0.0537302 0 0 0.00934618 0 0.0218319 0 0 -0.0879649 0.0457722 -0.0974748 -0.0136815 0 0 0.000630081 0.0451758 0.00913563 -0.0401464 0.0204589 0 -0.0622508 -0.00564341 0.346096 0 0 0 -0.329655 0 0.123612 -0.37506 0 -0.0123678 0.0362312 -0.134621 0 0.00907502 -0.0255501 0.0601021 -0.134887 0 -0.493445 -0.173426 0.20096 -0.0466124 0.67151 0.175065 -0.876306 0.486149 -0.918396 0.00346453 0.0767434 -0.398411 0.00358612 -0.050216 -0.137592 0.0135853 0.0730679 -0.0755439 -0.419266 -0.309451 0.192436 0.296223 -0.0751598 -0.103074 0.403697 -0.287741 0.174795 -0.00472383 3.00166 0.65503 -0.0840313 1.68875 -0.0208768 1.55348 0.206478 -0.0163724 0.0129972 0.0674359 0.123922 -1.94793 -0.156736 -0.0420839 2.74394 -0.380223 0.0132152 0.0585034 -0.0799499 -0.0625837 0.082632 -0.0157978 1.40713 -0.353438 -0.203676 0.50834 0.474953 0.0214481 -0.238022 0.321467 0.187538 -0.0660161 0.44524 -0.222297 -0.0292457 0.075387 -4.46363 0.225732 -0.0411984 0.103458 -0.0845482 0.130849 -0.0422631 -0.110887 -0.0224624 0.205074 0.0157623 0.235612 0.236648 0.562012 -3.52201 0.120941 -1.28987 4.37817 0.0699767 -0.502073 1.19133 -1.74583 0.0261923 -0.297927 0.76725 -1.24584 2.66802 0 +60 0 0 0 0 0 0.130973 0.179034 -0.329444 0.372428 0 0 -0.250571 0.748422 0 0.563761 -0.122145 0 0 0 -0.0788784 -3.0712 0 0 0 0 -0.0340874 0 0 -0.374401 2.25899 0.277103 0 -0.182502 0 0 -0.155041 -0.0853201 0 0 -0.662489 -0.597554 0 0 -0.253726 2.10464 0 0.150101 0.0180023 0.569745 0.571009 -0.46826 0.787682 0 -0.345994 -0.327275 0.0522337 2.16818 0.37595 1.58083 0 0 0.326317 2.45234 0 0.569349 0.500544 -0.265899 0 0 0 0 0.124433 -1.10051 0 2.91241 0.61784 0 0 0 -1.72312 0 1.42898 -6.3149 0 0.76714 -1.51617 -3.80842 0 0.934466 -1.83504 2.10944 -10.1945 0 0 0 0.0367024 0.0448656 0 0 0 0.10764 -0.0676304 0 0.0211118 0 0.0069979 0.0158298 0 0 0 0 0.0467584 0 -0.00133015 0 0.149749 0 0.571387 -0.231552 0 0.00467032 0 0 0.225919 -0.00228345 -0.0562039 0 -0.00893555 0 -0.00489502 -0.152445 0.022562 -0.0300207 -0.0322746 0 0.000457649 0 0 0 -0.000658554 0 0 0.00626417 -0.0105576 0.0283959 -0.0340914 0 0 0.0255012 0 0.00630143 0 0 0.0220956 0.0251299 -0.149457 -0.0132883 0 0 -0.119019 -0.0351999 0.0144211 -0.122884 0.0168487 0 -0.115573 0.025263 -0.110355 0 0 0 -0.31093 0 0.126691 -0.653845 0 -0.00886134 0.0495639 -0.204561 0 0.00330664 -0.0230155 0.0799665 -0.261242 0 0.130973 0.0367024 0.179034 0.0448656 -0.230739 -0.0940335 0.163334 0.198931 0.243376 -0.0835266 0.0610125 -0.244341 -0.0196057 -0.0558521 0.0827681 0.0357558 0.0130126 -0.335111 -0.158004 -1.16949 0.275995 0.131574 -0.0700062 0.0157356 0.466896 0.0329941 0.113309 -0.028743 4.65764 0.410914 1.80939 1.11989 0.0201258 0.90018 0.897112 -0.0104942 0.0133105 0.0308238 0.0627182 0.482482 0.133922 0.00323069 2.66767 -0.491538 0.00167109 0.100826 -0.0246089 -0.182392 0.13976 0.897902 -0.4564 1.16876 -0.0812905 0.153442 -0.087418 -0.631587 0.386492 -0.607302 0.376053 -0.014665 -1.33724 -0.0145359 -0.108478 0.702207 3.29149 -0.227536 0.130189 -0.0732662 0.261631 -0.0110822 0.114178 -0.266235 0.169519 0.191778 0.0119465 -0.129795 -5.0956 0.32229 -3.81382 0.158194 -0.496295 -2.58817 0.0463897 -0.271426 0.144005 -1.50037 0.116189 -0.186421 0.157335 -0.227997 -0.918376 0 +61 0 0 0 0 0 -0.368169 -0.248729 0.833881 2.53229 0 0 0.163747 -1.18257 0 -1.36077 -0.040789 0 0 0 0.0730903 -1.96876 0 0 0 0 0.318401 0 0 0.264742 4.03966 -0.408931 0 -0.116005 0 0 0.140695 0.013271 0 0 -0.238382 -0.0731341 0 0 -0.0521012 -4.82253 0 -0.094414 0.60412 0.162467 -0.103325 0.749792 -0.0142953 0 -0.271806 -0.10531 0.465994 -3.40369 -1.19137 0.239984 0 0 -1.26773 -2.22962 0 -0.147247 0.0250622 -0.405847 0 0 0 0 0.11371 0.81934 0 1.23295 -1.06373 0 0 0 -5.51489 0 -0.999497 -4.8181 0 -0.838583 -0.37177 -6.14333 0 -0.107137 -1.35793 1.86872 -13.701 0 0 0 0.0553165 0.0168712 0 0 0 -0.0236588 0.0810885 0 -0.00099506 0 0.00828783 0.0230527 0 0 0 0 0.0489507 0 0.00277123 0 0.216843 0 -0.245137 -0.137896 0 -0.000711555 0 0 -0.0645016 0.00291151 -0.0170596 0 0.0124216 0 0.00573473 0.0591158 -0.00935832 0.0412162 0.00524675 0 0.00058398 0 0 0 0.000876191 0 0 -0.00768881 0.00913161 -0.127888 0.0241116 0 0 0.0137364 0 -0.00983731 0 0 0.0048512 0.036548 -0.020345 0.0348885 0 0 -0.115455 -0.0140221 0.0114203 -0.037223 0.0292473 0 -0.000755569 -0.00666463 0.386045 0 0 0 -0.308908 0 -0.0432239 0.0640609 0 0.00467723 -0.00715345 -0.0436876 0 -0.00371334 0.00581314 -0.0146837 0.0211629 0 -0.368169 0.0553165 -0.248729 0.0168712 -0.585154 -0.0971778 0.283872 0.467022 0.428582 -0.00431097 0.0286517 -0.390063 -0.00194625 -0.0749919 0.04745 -0.0104082 0.00823189 0.0122425 -0.235398 -0.434298 -0.416844 0.342509 -0.238077 -0.0660691 -0.000723893 0.17553 0.170491 -0.000438885 -0.767366 -0.34745 -2.29224 -0.705708 0.00755911 1.60184 -1.0403 -0.0464447 -0.00111214 0.0819033 -0.023407 1.80032 0.0253443 0.0118336 -0.824992 -0.580742 0.00544592 -0.0335144 -0.102223 -0.0597318 0.0830842 -0.3015 -0.565275 0.346942 0.00690171 0.907178 -0.154156 0.0901703 -0.100018 0.187483 -0.135036 -0.183413 -0.173513 0.254994 -0.0997799 0.351123 0.87712 -0.0558335 -0.534535 0.0195396 0.1392 0.0747563 0.0911042 0.0114305 0.0133891 0.0783658 -0.0444572 -0.0974198 6.45539 0.57682 -3.1381 0.380141 -0.233686 -1.81824 0.0674735 -0.0884612 0.0590126 -1.98641 -0.00424468 0.0973559 -0.530156 0.859397 -2.91793 0 +62 0 -1.04959 -0.239685 -0.0811961 -0.254899 0.203111 -0.0748439 -0.28562 -1.65026 -0.609443 1.36543 -0.448672 -0.476161 0.0247249 -0.915226 0.0112766 -1.20342 -4.54419 0.233264 0.0278653 -0.152686 0.0333861 0.099361 -0.0335228 0.308169 -0.267143 -0.317264 -0.0300722 0.581005 1.76099 -0.332136 -0.147668 -0.167851 0.864645 -0.457219 0.019489 -0.100952 -0.467525 5.68141 -0.811539 -0.293656 0.0926986 -2.60167 -0.210571 -0.867599 0.267531 -0.366222 0.983704 -0.254728 0.503241 -1.84918 0.88768 -0.723017 0.0505514 0.078363 0.213024 -3.09953 -0.869511 -0.093296 -0.360472 -0.153895 1.29493 0.275683 0.0697533 1.19778 0.898796 -0.547703 -0.130796 -0.0845462 0.263212 -0.68203 0.695338 -0.986998 1.01504 0.639951 -0.898773 1.62769 -16.7222 -4.3124 1.85158 -2.98313 3.6171 -9.05009 -0.362838 1.16082 -2.81043 2.69513 -0.252915 0.553934 -1.28007 2.47922 -5.89364 0 0 0 0 0 -0.0811961 -0.254899 -0.00967129 0 0 0 0 -0.00112731 0 0.0176742 0 0 -0.00764652 -0.0257764 0.0340309 0 0.00204484 0.0328776 0.151886 0 0 0.140488 -0.00181147 0 0.0374474 0.0769947 0 0 0.0158184 0.0302108 0 0.0922023 0 -0.0182246 0 0 -0.00474185 0 0 0.280639 -0.0160192 -0.108011 0 -0.136599 -0.0362369 0 0 0.190049 0 -0.0169306 -0.0105538 0.0261195 0 0 0.0156745 0.0183751 0 -0.0334706 0.0204987 -0.0255855 -0.0324418 0.0173132 0.0391547 0 -0.035877 -0.0399921 0.00029687 0.0156298 -0.0362879 0 0 0 -0.633484 0.145616 -0.237855 -0.0256629 0.0347307 -0.0540832 0.0097135 -0.0126759 0.0188613 -0.0302018 0 0 0 0 0 0 0.203111 0 -0.0748439 0 0 0 0 -0.622048 -1.5913 0 0 0.944722 0 0.137864 0 -0.0923249 0 0 0.341052 0 -0.0250824 -0.173213 0.378568 0.0620661 0 0 -0.727216 0 -7.49393 0 1.3223 -1.29189 0 -1.49489 0.135479 0.0628455 0 -0.0714856 0 0 -0.204805 0 -2.94452 0.558994 0 0 0.0953283 0 0 0.181249 -1.03918 0.0727495 0 -1.59732 0 0.383877 0.0695365 -0.00683361 -0.495749 -0.257466 -0.216725 0.0184936 0.264616 1.68992 3.77845 0.174783 0 0 0 -0.444619 -0.179318 0 0 0 0 0.615594 -8.82113 -3.52972 3.85652 -0.995515 0.710639 -1.16084 -0.329731 0.386983 -0.671271 1.0419 0 0 0 0 0 0 +63 0 0.246256 -0.10212 0.0844349 0.160658 -0.241052 -0.320018 1.18152 2.68213 0.603069 -1.7125 0.391592 -0.990108 -0.0307107 -1.12682 0.0105696 -0.304511 0.436641 -0.235633 -0.0324459 -1.27371 -0.0874011 0.138137 0.038262 -0.581591 0.596991 -0.330524 -0.015453 0.338792 -0.490819 -0.329334 0.163543 0.193268 0.10743 0.413693 0.365152 0.0623105 0.039774 -0.0654541 0.897268 -0.901326 -0.143837 1.88013 0.18373 -3.88135 -0.631524 -0.705221 0.100952 0.206612 -0.483055 0.667492 -1.14896 2.29143 0.0188246 -0.145562 -0.195857 3.37826 0.435928 -0.0474241 1.09245 0.318766 -1.46439 0.350795 1.47269 -1.65089 -0.585159 0.297252 0.799447 -0.012371 -0.277785 2.07587 -1.03662 0.589933 -0.346697 0.898738 0.181931 -0.489809 1.7007 4.23584 -5.40055 1.55299 -0.995555 -1.51939 2.3037 -1.66702 2.30437 -4.36068 0.597021 -0.826207 1.28879 -1.81398 1.64266 0 0 0 0 0 0.0844349 0.160658 -0.0046367 0 0 0 0 -0.00137554 0 0.0273503 0 0 -0.00303831 0.00861642 -0.0112759 0 0.00395355 -0.100093 0.0924241 0 0 0.395627 0.000600622 0 -0.024284 0.134908 0 0 0.0702492 -0.206422 0 0.0494558 0 0.115198 0 0 0.0193934 0 0 0.424021 -0.0195638 -0.0428281 0 -0.0661174 -0.0171909 0 0 0.0198317 0 -0.0209961 -0.169867 0.0335854 0 0 0.0070111 0.0010297 0 -0.0217571 0.014776 -0.0145409 -0.322735 0.0490832 0.0396259 0 -0.00595191 -0.0612578 -0.136227 -0.0249039 -0.0666848 0 0 0 -0.991548 0.146721 -0.310958 -0.0383617 0.053339 -0.0863748 0.00440768 -0.00850566 0.0182762 -0.0410722 0 0 0 0 0 0 -0.241052 0 -0.320018 0 0 0 0 0.308534 1.78414 0 0 -0.414875 0 -0.0587426 0 0.0958266 0 0 -0.611435 0 0.311042 0.109246 -0.173476 -0.0940895 0 0 0.742524 0 1.73267 0 -0.0850505 -0.0612787 0 0.985241 -0.077371 -0.023401 0 0.0386013 0 0 0.220498 0 0.333873 -1.56055 0 0 -0.217302 0 0 -0.0741716 -0.118381 0.134687 0 1.91707 0 0.467925 0.0318256 -0.00578491 -0.0179393 0.147865 0.267862 -0.0190623 -0.128168 -1.63642 -0.380849 -0.0457459 0 0 0 0.311893 0.0710929 0 0 0 0 -0.519122 -6.3005 0.216785 -2.99664 0.325132 -0.360117 -0.271417 0.170115 -0.175017 0.253993 -0.704563 0 0 0 0 0 0 +64 0 -0.81905 -0.32515 0.00487453 -0.00286122 -0.219042 -0.157116 0.631592 1.95493 0.0170374 -0.221558 -0.0605941 0.524195 -0.00175382 0.719122 0.0100138 -1.10964 -3.29002 -0.102291 0.0252685 -0.882389 -0.0140062 0.239224 0.00225062 -0.00591127 0.572969 -0.568433 -0.0196188 0.211683 0.154436 0.162308 0.00833533 -0.0119746 0.529078 -0.218691 0.295608 -0.0115949 0.14755 3.2579 -0.171075 -0.718086 -0.00637247 0.00054209 -0.0259685 0.960335 -0.0168735 -0.53987 0.14262 0.0334053 0.0775567 -0.965191 0.267449 -4.68318 -0.105319 0.0521202 -0.148096 0.353816 0.195501 0.1406 -0.034387 0.00915948 0.025016 0.164461 -0.0466812 0.455915 0.444778 0.105406 0.250508 0.288708 -0.00946772 -0.0199043 0.00834408 -0.380712 -0.27826 -0.981336 0.506788 -1.02566 -13.4428 -3.72979 -3.01693 -2.73497 2.41696 -5.66573 -0.268762 0.216848 0.291097 -2.72413 0.0159516 0.070121 -0.0447634 0.384603 -0.516864 0 0 0 0 0 0.00487453 -0.00286122 0.00197333 0 0 0 0 0.000437673 0 0.00258683 0 0 0.00126518 0.00427093 -0.00182486 0 0.000334524 0.0264622 0.00293536 0 0 -0.139481 0.000299187 0 0.0123249 -0.242262 0 0 -0.0133045 0.0662102 0 0.0764384 0 -0.0209841 0 0 -0.00167486 0 0 0.370174 0.00624459 0.0182402 0 0.0283625 0.035918 0 0 0.00769693 0 0.00532369 0.0292384 -0.0032417 0 0 -0.00282767 -0.00267296 0 -0.00869031 0.197003 0.00592053 0.0210355 0.0474254 0.00538315 0 -0.0289199 -0.0022564 -0.03652 0.0385572 -0.067164 0 0 0 -0.746565 0.0292012 -0.0843131 -0.0336989 0.0429672 -0.0614235 -0.00166999 0.00176503 -0.00169746 -0.00239865 0 0 0 0 0 0 -0.219042 0 -0.157116 0 0 0 0 0.405717 -0.900585 0 0 -0.356642 0 -0.0344512 0 -0.0356332 0 0 0.56866 0 0.727373 0.132047 -0.139269 0.0851344 0 0 -0.416696 0 0.908742 0 3.42764 0.332703 0 1.22025 1.171 -0.00920408 0 0.0380009 0 0 -0.079895 0 0.733847 0.867972 0 0 0.150843 0 0 -0.618988 2.74782 0.0521318 0 -0.996413 0 1.42099 -0.110965 0.108291 0.686073 0.0123816 -0.787062 -0.598459 0.199613 0.960732 0.743001 -0.0379185 0 0 0 0.292197 -0.0230776 0 0 0 0 -0.000665204 -10.299 0.754642 -3.98236 -0.717565 1.01015 -2.84748 0.113598 -0.178294 0.299734 -0.941285 0 0 0 0 0 0 +65 0 0 0 -0.170338 -0.071513 0 0 0 0 -0.921231 0.932075 -0.633092 0 0.262755 0 -0.0853935 0 0 0.330139 0.126772 0 0.16813 0 -0.341807 0.321588 0 0 -0.423042 0 0 0 -0.512093 -0.529969 0 -0.762227 0 -0.138419 -1.36589 0 -1.69426 0 0.376587 -2.72763 -0.672967 0 0.192909 0 0 0.463151 1.07258 0 1.62532 0 -0.170358 -0.0546738 -0.186507 0 -0.162278 0.858511 -0.427173 -0.42329 0 0 0 0 0.398294 0 0.306694 -2.08923 0.579732 -0.0128208 0.137966 -1.3584 1.20286 0 0 -0.0994756 0 -2.3844 0 -0.149101 2.00192 0 -1.12512 2.70624 -2.10439 0 -1.37853 2.48684 -1.05603 1.8016 0 0 0 0 0.0759403 0.0438281 -0.170338 -0.071513 0 0.0916293 0 0 0.0153594 0 0 0.129665 0 0 0 0 0.34931 0 0.0440995 -0.807705 0.889485 0 0.504804 -0.221892 0 0.00504011 -0.445988 -4.75629 -0.11363 0 0.106644 -1.98732 0 -0.854645 0 -0.239317 0.00618365 0 0.0391771 0 0 -1.6875 0 0 0 0 0 0 0 -0.802655 0 0 -1.06803 0 0 0 0 0 0 0 -0.50426 0 -0.306233 0 0.319152 -0.113524 0 -0.024492 -1.08604 0 0.696902 0 0.0375237 0 3.17584 0 -0.59318 0 0 0.812352 0 0 0 -0.355414 0 0 0 0 0.0950013 0 0 0.0759403 0 0.0438281 0 0 0.254736 0 1.61029 -0.00672453 0.0674137 0.981071 -0.00157896 0.122109 0.0631671 0.0581416 0.0525054 -0.119893 0 0 0 0 0.360325 0 0.670994 0 0.418766 0 0 0.0472641 0 0 0.0127483 0 0 0.0392556 0.0020263 0 0.0153392 0 0.238719 0 0 0 0.00511516 0.00144356 0 0 0.197013 0 0 0 -0.0443474 0 -0.159392 0 0.168068 0.0856157 0.152792 0 0 0.431784 0.250285 -0.517564 0 0.443561 0 0.122374 0 0.451124 -0.215527 0.0130283 -0.0619742 0.0548071 0.0189899 -0.703054 0 -2.78035 0 0.0922058 -0.194542 0 0.0217459 0.148679 -0.48606 0 0.134731 0.00370752 -0.0204697 -0.00533268 0 0 +66 0 0 0 -0.103808 -0.334039 0 0 0 0 -1.05008 4.61556 0.00735936 0 -0.0975337 0 0.161015 0 0 0.779577 0.59202 0 0.275109 0 0.114352 1.61244 0 0 0.652767 0 0 0 -0.148374 0.715261 0 0.877652 0 0.0338331 1.84309 0 0.859827 0 0.029056 1.22175 0.582714 0 0.783618 0 0 1.13175 -0.837015 0 0.720447 0 -0.7928 0.0932187 0.103151 0 -0.253977 -0.0802919 -1.978 -0.20226 0 0 0 0 0.343698 0 1.89434 0.99093 0.579296 -4.2923 0.495387 1.51605 -0.586813 0 0 0.606607 0 -7.21605 0 -0.461623 -1.95793 0 -4.23141 1.30221 -4.40415 0 -0.128702 -1.14627 -0.777945 -0.437086 0 0 0 0 -0.0958231 -0.0540598 -0.103808 -0.334039 0 0.0378022 0 0 -0.000271206 0 0 0.0739461 0 0 0 0 -0.156679 0 -0.025567 1.25274 0.115619 0 0.524709 1.63752 0 0.0235847 0.0153121 8.15272 0.557514 0 0.0844486 3.63909 0 -0.365586 0 0.753771 0.116784 0 0.0349152 0 0 -2.22894 0 0 0 0 0 0 0 -0.0779676 0 0 -0.749201 0 0 0 0 0 0 0 0.387874 0 -2.45567 0 0.201048 -0.00333417 0 -0.208368 0.0987094 0 0.137222 0 0.400477 0 4.19482 0 0.213246 0 0 0.407153 0 0 0 -0.128883 0 0 0 0 -0.466116 0 0 -0.0958231 0 -0.0540598 0 0 -0.445221 0 -1.51738 0.0568246 -0.0223812 1.44471 0.0123293 0.339731 -0.120535 -0.00647695 -0.000143879 0.371458 0 0 0 0 0.585472 0 -0.390842 0 -0.139521 0 0 -0.0500162 0 0 -0.0231713 0 0 0.146165 0.00251678 0 -0.0122964 0 -0.211514 0 0 0 0.00451957 0.0224017 0 0 -0.199984 0 0 0 -0.0498083 0 0.332557 0 -0.622248 0.16997 -0.926814 0 0 -0.718295 0.211161 0.10242 0 -0.00926809 0 -0.0200992 0 -0.221235 -0.552496 0.0198744 -0.167565 0.0918284 -0.0112787 0.443967 0 -3.92668 0 -1.17222 0.175334 0 -0.602602 0.481136 -0.588231 0 -0.363165 0.160769 -0.026131 -0.112962 0 0 +67 0 0 0 0.108132 -0.254147 0 0 0 0 -0.615649 0.890886 0.253858 0 -0.398565 0 -0.298507 0 0 -0.159979 -0.716738 0 -0.287375 0 0.489929 -0.0579167 0 0 0.279151 0 0 0 0.280112 -0.518871 0 0.381486 0 0.0107975 0.51887 0 1.8265 0 -0.373031 -0.069991 0.636912 0 -0.328965 0 0 -2.10432 -0.850046 0 -1.27921 0 0.812995 -0.772627 0.420298 0 -0.212134 -0.7461 -0.2522 0.131572 0 0 0 0 0.981376 0 -1.09442 0.317826 0.236637 -0.970552 -1.1533 1.29243 -0.00229338 0 0 -0.833535 0 -1.26033 0 1.08425 -3.44876 0 0.00398568 -1.18535 -1.48948 0 1.12248 -1.98791 -0.133984 -1.60277 0 0 0 0 -0.148495 -0.0692679 0.108132 -0.254147 0 0.000812443 0 0 -0.0105007 0 0 -0.0724313 0 0 0 0 -0.584433 0 -0.108181 1.7067 -0.68542 0 0.060409 0.222636 0 0.0299107 0.591177 4.5934 0.448405 0 0.0237062 2.61237 0 0.687237 0 0.0259764 0.123462 0 -0.000334666 0 0 0.844312 0 0 0 0 0 0 0 0.917723 0 0 2.60071 0 0 0 0 0 0 0 0.266998 0 3.75537 0 -0.225746 -0.162324 0 -0.595315 0.704014 0 -0.786794 0 0.0890982 0 -1.58897 0 0.522984 0 0 -0.774892 0 0 0 0.22174 0 0 0 0 -0.374894 0 0 -0.148495 0 -0.0692679 0 0 -0.687576 0 -1.06205 0.0253862 -0.0312426 0.271098 0.0107164 0.0798242 -0.182687 -0.0973515 0.091677 0.139892 0 0 0 0 0.0903434 0 -0.194161 0 -0.244467 0 0 0.0455038 0 0 -0.0381344 0 0 0.0485639 0.00126272 0 0.00667199 0 -0.27037 0 0 0 0.0099528 -0.00163964 0 0 0.121759 0 0 0 -0.318778 0 0.548747 0 -0.261991 -0.160843 -0.0807882 0 0 -1.16197 -0.344668 0.924156 0 -0.0385477 0 0.0709989 0 -0.201243 -0.0989557 -0.0953602 0.0163011 0.00602665 -0.0380311 0.542659 0 -1.88571 0 -0.109134 -0.657548 0 0.0163788 -0.0102787 -0.332781 0 -0.150108 0.0166181 -0.0278042 -0.0826048 0 0 +68 0 0.16086 -0.0133036 0.292913 0.12081 -0.15182 -0.0575947 -0.0952268 0.969534 0.492025 -3.30458 -0.140299 0.0892205 -0.482001 -0.60589 -0.0892617 -2.31504 -6.49371 -1.3132 -0.0385172 0.604049 -0.823181 -0.293195 0.622264 -1.87373 0.285068 -0.758525 0.124284 0.0495629 0.981345 -0.0524455 0.726966 -0.195905 -0.796906 -0.342752 0.0178438 -0.0387266 0.387522 -1.33201 -0.664841 0.0258574 -0.562456 -0.244248 -0.205968 -0.425414 -0.37879 -0.00449878 0.221868 -0.27708 0.44278 -0.725164 -0.337158 4.48608 0.108926 -0.0996118 0.202911 1.10202 0.893331 0.485703 1.83145 0.329418 0.343582 0.037201 0.837279 -0.139193 0.718466 -0.0478041 0.69942 -0.188642 -0.360925 3.00612 0.232757 -0.267564 0.0039191 0.783915 -0.269889 2.20677 -1.03018 8.69468 -3.95364 3.94769 1.59981 -4.39092 4.75765 -1.0249 1.24564 -1.07959 1.09808 0.754437 -1.14857 1.02267 -1.4189 0 0 0 0 0 0.292913 0.12081 0 0 0 0 0 0 0 0.0102371 0 0 0 0 0.138824 0 0.0216887 0.38196 0.0296387 0 0 0.548756 0 0 0.106975 1.62203 0 0 0.0782549 0.938107 0 0.633048 0 0.327716 0 0 0.0321589 0 0 1.48026 0 0 0 0 0 0 0 0.199169 0 0 0.552225 0 0 0 0 0 0 0 0.423745 0 4.00594 0 -0.106933 0 0 -0.0224381 1.39545 0 -0.0135312 0 0 0 -2.78508 0 -0.242016 0 0 -0.61946 0 0 0 -0.0123716 0 0 0 0 0 0 -0.15182 0 -0.0575947 0 0 0 0 0.0460791 0.645264 0 0 -0.198646 0 -0.0296757 0 0.0106916 0 0 0.160481 0 0.257993 0.0500222 0.0277478 0.0225053 0 0 0.065287 0 3.58826 0 2.91199 0.0062064 0 0.348375 0.964565 0.000720263 0 0.00746375 0 0 0.0799532 0 0.473487 0.395386 0 0 0.059612 0 0 0.14599 0.218594 0.074092 0 0.898448 0 0.230122 -0.0648694 0.0137244 -0.0813603 -0.0224998 0.638715 -0.106862 0.00588611 -1.24722 -3.9983 0.063252 0 0 0 0.0577839 -0.00226841 0 0 0 0 -0.216158 -20.5221 0.748981 -4.94344 -0.108877 0.274941 -1.99164 0.0758983 -0.0392051 0.0490849 -0.203216 0 0 0 0 0 0 +69 0 -1.06735 -0.529136 -0.248663 -0.0935985 -0.0653528 0.0460054 -0.380513 -0.448041 -0.418124 1.38601 0.0887654 -0.265659 0.409228 0.145125 -0.059898 -2.39543 -10.7034 0.72488 -0.429671 0.381437 0.41476 0.262892 -0.528294 0.737424 -0.35645 -0.472906 -0.920409 -0.00478578 -0.184645 -0.114529 -0.617292 -0.0952521 1.20602 -1.58035 -0.166181 0.0173351 -2.93523 6.34051 0.351538 0.0795015 0.481749 -5.70755 0.0646993 0.992235 0.337824 0.0164225 -0.0261896 -0.656489 -0.212709 -0.57593 0.535344 10.1655 0.344736 -0.31505 0.235958 0.0916911 0.731097 0.570361 -0.755871 -0.289167 0.538693 -0.162588 -3.62653 3.50708 1.12565 0.585599 -5.44875 -2.72354 0.306721 -1.17186 -0.61082 0.28568 2.71407 0.634725 -0.00604627 5.86089 -22.2423 -6.82716 2.1078 -4.95508 3.07763 -6.65331 -1.66592 0.583223 -1.10321 1.00374 -0.97932 -0.322946 0.023408 -0.356127 0.266974 0 0 0 0 0 -0.248663 -0.0935985 0 0 0 0 0 0 0 0.0173812 0 0 0 0 -0.0832013 0 -0.00479075 -0.195913 0.042182 0 0 0.297866 0 0 0.260519 -0.115399 0 0 0.0673756 -0.346459 0 0.541463 0 0.118409 0 0 0.0422564 0 0 1.60154 0 0 0 0 0 0 0 0.192011 0 0 0.61537 0 0 0 0 0 0 0 0.473 0 5.26909 0 -0.144789 0 0 0.0694669 1.67594 0 0.0562382 0 0 0 -3.00612 0 -0.273892 0 0 -0.676792 0 0 0 -0.0174261 0 0 0 0 0 0 -0.0653528 0 0.0460054 0 0 0 0 0.0428597 -0.752005 0 0 0.180788 0 0.039086 0 -0.0131823 0 0 0.0363433 0 0.161017 -0.00863664 -0.00897637 0.0075659 0 0 -0.096208 0 -3.596 0 2.69181 -0.127557 0 -0.0146381 0.617501 0.00336832 0 0.0050902 0 0 -0.0948921 0 -0.674556 0.534911 0 0 0.0748279 0 0 0.074534 -1.4265 0.212917 0 -0.764048 0 0.282378 0.0588519 -0.106746 -0.626532 0.0123919 0.253129 -0.473546 0.04104 1.5225 4.59021 0.0251915 0 0 0 -0.157373 -0.097228 0 0 0 0 0.302999 -11.5989 -1.15284 0.216483 -0.505412 0.589871 -0.975476 -0.0957541 0.0488381 0.0187834 -0.123963 0 0 0 0 0 0 +70 0 -0.812018 0.00707306 0.059318 0.02549 -0.139926 -0.131499 0.828282 2.54576 0.0995913 -1.57568 -0.21461 -0.198872 -0.0976054 0.228613 -0.0257491 1.08501 -2.10854 -0.248157 -0.364789 0.0755588 -0.14386 -0.0332532 0.126011 -0.806758 0.42665 0.757406 0.394387 0.0572718 1.27405 0.10709 0.147201 -0.0544715 0.578454 0.671258 0.11406 -0.104479 0.0675174 3.33783 -1.19063 -0.0673466 -0.113416 -0.138414 -0.589906 -1.69224 -0.0748495 -0.0267499 0.275976 -0.743856 0.878604 0.573208 0.673067 -2.99461 0.358081 -0.328532 0.187205 -0.287838 0.454164 0.229497 0.898118 0.0656225 -0.881984 -0.12636 -0.920796 -0.624645 -0.139068 -0.0952387 1.08576 -0.00691063 -0.0730543 1.9313 -0.025737 -0.554188 0.0144471 -0.663436 -0.290407 -0.888072 -13.7915 2.1531 -7.43539 -1.30759 3.78006 -7.50783 2.22627 0.316284 0.0294049 -3.21768 0.216982 1.68441 -1.79257 1.56446 -1.84213 0 0 0 0 0 0.059318 0.02549 0 0 0 0 0 0 0 0.0970156 0 0 0 0 0.330172 0 0.0536978 -0.782916 0.587826 0 0 -1.26611 0 0 -0.348456 -5.58439 0 0 -0.141777 -2.17357 0 -0.286481 0 -0.648687 0 0 -0.0753153 0 0 0.0760141 0 0 0 0 0 0 0 -0.443067 0 0 -0.805892 0 0 0 0 0 0 0 0.0952402 0 2.44407 0 0.028164 0 0 0.435986 0.620372 0 0.479925 0 0 0 -0.141927 0 -0.564516 0 0 -0.0328141 0 0 0 -0.245704 0 0 0 0 0 0 -0.139926 0 -0.131499 0 0 0 0 0.053692 -0.216609 0 0 0.137289 0 0.0213122 0 -0.0156979 0 0 0.105509 0 0.162437 0.0386062 0.033816 0.00972859 0 0 -0.136784 0 -1.80991 0 1.47032 -0.0629785 0 0.16915 0.46144 0.006842 0 0.011672 0 0 -0.0223212 0 -0.23405 -0.523958 0 0 -0.0822002 0 0 0.178458 -2.33524 0.022465 0 0.116237 0 -0.551545 0.0518176 -0.069592 -0.272884 -0.0420372 -0.106171 -0.0833048 -0.0477 -0.05717 0.811363 0.0722676 0 0 0 -0.110097 -0.0395687 0 0 0 0 0.077787 -13.0719 -0.199639 -3.09212 -0.231754 0.291628 -1.12895 -0.0705406 0.0213226 -0.00696315 -0.199819 0 0 0 0 0 0 +71 0 0.436461 0.360401 0.131723 0.0537063 -0.0961282 0.0612742 -0.24692 -0.731246 0.255881 0.0981168 0.175595 0.54474 -0.218402 0.322441 0.132662 2.32291 11.2756 -0.150216 0.434586 0.510321 -0.114341 -0.0953254 0.28229 0.0874944 -0.096564 0.549328 0.39705 -0.0101626 -0.24753 0.0846052 0.338122 0.259322 -0.367502 0.847047 0.0216485 0.108654 1.45748 -1.07036 0.423011 0.115602 -0.247964 3.23952 0.274959 2.95488 -0.154947 0.0211717 -0.0354997 0.870113 -0.331473 -0.500096 -0.368337 5.57452 -0.406009 0.389473 0.0214773 3.49434 0.865085 0.205098 -0.190775 0.146599 0.373047 -0.132218 2.23474 -0.540164 -0.300457 -0.386496 1.2875 1.55112 -0.189218 -0.255613 0.417438 0.192567 -1.40131 1.05278 -0.141263 -0.191458 3.37071 -0.0293502 0.939266 -1.18848 0.0827983 0.345481 -0.582886 -0.284303 0.257149 0.843788 0.442527 -0.676868 0.455714 -0.395442 0.326668 0 0 0 0 0 0.131723 0.0537063 0 0 0 0 0 0 0 -0.0437753 0 0 0 0 -0.186992 0 -0.0222112 0.597196 -0.371342 0 0 1.45138 0 0 0.142714 5.94722 0 0 0.165155 2.01426 0 0.155741 0 0.705081 0 0 0.0795763 0 0 0.253771 0 0 0 0 0 0 0 0.256764 0 0 0.200035 0 0 0 0 0 0 0 0.509278 0 3.19797 0 -0.136954 0 0 -0.0447677 1.5551 0 0.102793 0 0 0 -0.477057 0 0.312589 0 0 -0.106574 0 0 0 0.15522 0 0 0 0 0 0 -0.0961282 0 0.0612742 0 0 0 0 0.00565037 0.591165 0 0 -0.247759 0 -0.0332338 0 0.0160049 0 0 0.104435 0 -0.0324757 0.0217359 -0.0284509 0.010751 0 0 0.141532 0 7.09615 0 0.811443 0.195206 0 0.18765 0.117026 -0.00534224 0 0.000463276 0 0 0.067047 0 1.31243 1.0861 0 0 0.123068 0 0 0.109842 2.3839 0.029842 0 0.827858 0 0.162053 -0.0184522 -0.00123328 -0.00835476 0.00338808 1.07046 0.192203 -0.000383038 -0.670196 -0.147692 0.0442956 0 0 0 0.0437779 0.0303254 0 0 0 0 -0.119752 -2.20208 1.42209 -1.80359 0.0349506 0.0478611 -0.496247 0.0870697 -0.0349896 0.0731389 -0.0615955 0 0 0 0 0 0 +72 0 -0.064655 0.356679 0.3128 0.0685186 -0.0712384 -0.146787 0.502012 1.32396 0.369211 -2.22143 -0.182837 0.287772 -0.521377 0.403162 0.02442 1.85117 5.05719 -1.3027 0.00186792 -0.452341 -0.816491 -0.619813 0.670715 -1.43965 0.717945 0.718318 0.388759 0.0426494 0.463078 0.128073 0.741697 0.065507 -0.689251 0.632386 0.200505 -0.0629842 0.0682979 0.371961 -0.722235 -0.134857 -0.641541 0.590691 -0.278581 0.0781552 -0.557616 -0.0423611 0.14262 0.129937 0.561897 1.34896 -0.289069 -6.52061 -0.0374644 0.0174066 -0.406069 -1.65709 -1.39536 -0.56058 1.48387 0.407763 -0.133369 0.447918 0.0770756 -1.55316 -1.38483 0.142114 0.576638 0.0256582 -0.273184 2.29028 -0.40692 -0.491632 -0.151765 -0.211398 0.289375 -3.68414 3.42217 5.75813 -3.17382 2.84696 0.642967 -1.8068 3.71772 -0.566935 1.33339 -1.6301 1.59255 0.76932 -0.293326 0.694176 -0.61113 0 0 0 0 0 0.3128 0.0685186 0 0 0 0 0 0 0 0.0693792 0 0 0 0 0.257133 0 0.0385836 -0.553041 0.461372 0 0 -0.643007 0 0 -0.406943 -3.34458 0 0 -0.0664583 -1.66428 0 -0.509312 0 -0.46449 0 0 -0.0515633 0 0 0.00681536 0 0 0 0 0 0 0 -0.294443 0 0 -0.828034 0 0 0 0 0 0 0 -0.428272 0 -5.53415 0 0.0466895 0 0 0.0229451 -1.70399 0 -0.135422 0 0 0 0.047361 0 -0.455799 0 0 -0.0581451 0 0 0 -0.192374 0 0 0 0 0 0 -0.0712384 0 -0.146787 0 0 0 0 -0.0383905 0.568347 0 0 0.133039 0 0.0144216 0 -0.00243387 0 0 0.0015199 0 0.260042 -0.0289691 0.0508944 0.00527146 0 0 -0.0331382 0 0.618926 0 1.41949 0.315775 0 -0.174869 0.674762 0.00703912 0 -0.00642347 0 0 0.071229 0 0.643149 -0.902926 0 0 -0.0779693 0 0 -0.556638 -1.16535 -0.085643 0 -0.267309 0 0.309776 -0.0216845 0.0755458 -0.357849 -0.0463995 -0.191531 -0.385223 0.00857245 -0.786217 -4.38494 -0.0223797 0 0 0 0.174101 -0.0400801 0 0 0 0 -0.173044 -7.58029 -0.739024 0.732045 -0.202104 0.390629 -0.591974 -0.084699 0.0615096 -0.00648443 -0.0378922 0 0 0 0 0 0 +73 0 -0.594926 -0.404461 -0.192683 -0.0768385 -0.0796225 -0.00534097 -0.201549 0.0927666 -0.367341 0.87755 0.036213 -0.261056 0.319556 -0.206179 0.0666694 -2.21952 -10.1007 0.650003 0.327197 0.0665016 0.364174 0.240596 -0.412941 0.517186 -0.252461 -0.567004 -0.375998 -0.0257543 0.062594 -0.117818 -0.492814 0.117497 0.845057 -0.765145 -0.158111 -0.0055909 -0.709007 2.91577 -0.0222899 0.0833904 0.364256 -2.14502 -0.0901789 -0.722337 0.23219 0.0289517 -0.0412499 0.566064 0.0468523 0.182417 0.784603 0.998752 -0.289464 0.258743 -0.20408 -2.90114 -0.292057 -0.304015 -0.516602 -0.216183 -1.06336 0.0154648 -3.48263 2.12329 0.34142 0.0965695 -2.38351 -0.728827 0.271645 -0.670631 -0.208996 0.0466877 0.784379 -0.953997 0.0938291 2.75785 -10.8538 -3.53534 1.82703 -2.78953 2.58066 -3.94253 -1.12851 0.858041 -1.08309 0.1185 -0.663133 0.140938 -0.242596 0.0441215 -0.0826062 0 0 0 0 0 -0.192683 -0.0768385 0 0 0 0 0 0 0 0.0834096 0 0 0 0 0.23703 0 0.0426507 -0.420685 0.472727 0 0 0.12252 0 0 -0.0167568 -0.787525 0 0 0.0253902 -0.44417 0 0.350792 0 0.143826 0 0 0.0233489 0 0 1.14015 0 0 0 0 0 0 0 -0.202268 0 0 -0.993238 0 0 0 0 0 0 0 -0.349769 0 -6.52684 0 -0.0643527 0 0 0.058799 -1.58559 0 -0.27143 0 0 0 -2.14663 0 -0.609141 0 0 -0.475802 0 0 0 -0.197832 0 0 0 0 0 0 -0.0796225 0 -0.00534097 0 0 0 0 -0.00950342 -0.933227 0 0 0.142146 0 0.0264298 0 -0.0141169 0 0 -0.0489418 0 0.0666471 -0.0245588 0.0180523 -0.00720335 0 0 -0.108965 0 -5.20965 0 0.870133 -0.240983 0 -0.0219768 0.164516 0.00336632 0 -0.0043043 0 0 -0.10311 0 -0.965439 -0.0830803 0 0 -0.0170428 0 0 -0.0211328 -2.75935 0.0516633 0 -1.50975 0 -0.366417 0.0107541 -0.045138 -0.426223 -0.0586244 -0.166704 -0.242752 -0.0142881 1.18839 1.02175 0.0670064 0 0 0 -0.218462 -0.0554621 0 0 0 0 0.291112 -10.2811 -1.285 -0.456177 -0.232726 0.212607 -0.552982 -0.0667148 0.0373863 -0.048458 -0.0227652 0 0 0 0 0 0 +74 0 -0.375659 -0.577656 -0.277215 -0.112787 0.155588 0.121033 -0.824386 -2.38326 -0.461904 2.42826 0.0849979 -0.773113 0.458153 -0.795445 -0.129142 -2.47726 -7.56975 1.24335 -0.927141 -0.0436472 0.757394 0.698601 -0.591473 1.45901 -0.918342 -0.839341 -0.445564 -0.038154 -0.377992 -0.268173 -0.687972 -0.208284 1.30971 -0.618264 -0.264679 -0.00764446 -1.6543 2.86924 0.496653 0.0287311 0.532901 -2.4413 0.074476 -1.54328 0.357789 0.0122393 -0.118001 -1.53703 -0.300215 -1.06574 0.361738 -3.71902 0.784297 -0.71882 0.205225 -1.68606 -0.0411971 -0.366895 -1.40913 -0.310833 -1.49356 -0.102081 -2.92883 2.07144 1.08648 0.340994 -3.31251 -1.34195 0.339146 -2.74119 -1.25631 0.534297 1.28488 -0.246481 0.0218351 1.10058 -11.7208 -7.07994 4.95221 -3.46276 1.08732 -2.25214 -3.59886 1.16018 -1.72323 2.66759 -1.03938 -0.44501 0.34394 -0.576677 0.433348 0 0 0 0 0 -0.277215 -0.112787 0 0 0 0 0 0 0 -0.0821836 0 0 0 0 -0.32379 0 -0.0535112 -0.00959837 -0.539211 0 0 -0.860282 0 0 0.200701 -1.10618 0 0 -0.17649 -0.409495 0 -0.0467664 0 -0.561755 0 0 -0.108704 0 0 -0.331461 0 0 0 0 0 0 0 0.33496 0 0 0.503412 0 0 0 0 0 0 0 -0.273156 0 -4.89306 0 -0.0527043 0 0 -0.127325 -1.34917 0 -0.579646 0 0 0 0.623802 0 0.55528 0 0 0.138561 0 0 0 0.225406 0 0 0 0 0 0 0.155588 0 0.121033 0 0 0 0 -0.0339493 -0.294161 0 0 0.123059 0 0.0156322 0 0.00468846 0 0 0.00534672 0 0.0771939 -0.00199199 0.00097254 -0.00107311 0 0 0.065356 0 1.90075 0 1.93273 0.236442 0 -0.153669 0.463806 -0.000334004 0 -0.000249577 0 0 -0.0452045 0 0.774351 0.683607 0 0 0.0616819 0 0 0.257805 0.405832 0.0709054 0 1.19943 0 0.415246 -0.103644 0.0355494 -0.293056 0.0525335 0.737507 -0.104612 -0.0546573 -0.259793 1.71698 0.0174351 0 0 0 -0.0531169 0.0357278 0 0 0 0 0.0614653 -13.5793 -0.78856 -1.25885 -0.154091 0.0632643 -0.744417 -0.00661136 0.0134036 -0.0863174 0.10681 0 0 0 0 0 0 +75 0 -1.07264 -0.488692 -0.174524 -0.0710061 0.00554488 0.0200237 -0.13857 -0.179545 -0.290796 1.56586 0.0570556 0.41071 0.288435 1.00573 -0.0299056 0.185649 0.0733804 0.703641 -0.00743942 0.481251 0.414266 0.680493 -0.372368 0.787613 -0.0932411 -0.0485734 -0.258659 -0.0186123 -0.0197517 0.145306 -0.433119 -0.0324736 2.24889 -0.455196 -0.0681623 -0.00296609 -0.449809 8.27084 0.0636215 0.123724 0.335493 -0.836171 -0.0828647 2.22628 0.22525 0.0298463 -0.0390218 0.138429 -0.00278596 1.21292 0.804784 -0.598656 -0.0476535 0.0436751 -0.123743 -0.754568 -0.556727 0.182499 -0.810231 -0.195688 1.03024 0.344092 -0.849879 1.12341 -0.738769 -0.0290241 -1.75726 -0.113695 0.213513 -0.774915 0.169221 0.120854 0.35532 0.202844 0.112014 -0.387708 -29.5079 -9.20695 0.354134 -7.77 4.238 -7.89926 -1.71677 0.842744 -1.53126 0.847716 -0.654351 0.0815863 -0.100429 -0.0517268 0.0226443 0 0 0 0 0 -0.174524 -0.0710061 0 0 0 0 0 0 0 0.0423063 0 0 0 0 0.134011 0 0.0153079 -0.450519 0.309029 0 0 -0.586735 0 0 -0.0197167 -3.76135 0 0 -0.0250521 -1.48277 0 0.185804 0 -0.377173 0 0 -0.0236004 0 0 1.15579 0 0 0 0 0 0 0 -0.0122137 0 0 0.65657 0 0 0 0 0 0 0 0.303901 0 5.89361 0 0.00832564 0 0 0.0998151 1.36452 0 0.186054 0 0 0 -2.17516 0 -0.457783 0 0 -0.483154 0 0 0 -0.129184 0 0 0 0 0 0 0.00554488 0 0.0200237 0 0 0 0 -0.0131745 -0.352856 0 0 0.32735 0 0.052222 0 0.00446049 0 0 -0.135196 0 0.312833 -0.0285353 0.0434759 -0.0112249 0 0 0.0350595 0 -2.8291 0 2.32489 0.0742532 0 -0.307674 0.868207 0.00800661 0 0.00280036 0 0 -0.0430445 0 -0.205912 -0.451949 0 0 -0.0424156 0 0 0.0875314 -2.16841 0.104381 0 0.342018 0 0.395845 -0.0242945 0.0203343 -0.897924 0.0646547 0.245534 -0.52887 -0.0407411 0.139647 -0.230572 -0.00391793 0 0 0 -0.0132612 -0.0818471 0 0 0 0 0.0688424 -15.6821 -1.8894 0.225106 -0.317149 0.497117 -1.06931 -0.109822 0.0692151 -0.0828783 0.00152377 0 0 0 0 0 0 +76 0 -0.140053 -0.0465181 -0.21156 -0.0860748 -0.0649274 0.0861069 -0.356969 -0.811378 -0.352508 3.28712 0.21578 0.752707 0.349646 1.07584 0.0694697 0.441445 5.48655 0.98172 0.335074 -0.472299 0.590396 0.314411 -0.451391 1.85982 -0.201104 -0.222685 -0.503359 -0.070408 -0.816981 0.175589 -0.525035 0.163562 1.00449 -0.757153 -0.0872948 0.0727894 -1.05006 3.46356 0.672366 0.0020614 0.40669 -1.57526 0.209662 3.56837 0.273052 0.0268129 -0.256941 0.82827 -0.448445 1.59297 1.11225 6.17184 -0.381057 0.349245 -0.368769 1.8204 0.597944 0.921621 -1.91479 -0.237216 -0.126788 -0.0251917 -3.87185 0.949615 -1.12799 -0.235813 -2.23861 -0.802531 0.258824 -3.56907 0.344007 0.560101 0.805153 0.427843 0.157004 1.9097 -15.9857 -13.4442 5.6559 -7.56276 1.92948 -0.376132 -4.78797 1.55344 -1.38396 0.895411 -0.793215 -0.76569 1.03015 -1.0165 0.936627 0 0 0 0 0 -0.21156 -0.0860748 0 0 0 0 0 0 0 0.0584713 0 0 0 0 0.172671 0 0.0223008 -0.130232 0.39423 0 0 1.45926 0 0 -0.410356 3.85036 0 0 0.229497 0.792428 0 -0.785871 0 0.673585 0 0 0.106777 0 0 -1.05665 0 0 0 0 0 0 0 -0.452522 0 0 -1.28101 0 0 0 0 0 0 0 0.135573 0 1.1884 0 0.115477 0 0 0.126442 0.639953 0 0.642975 0 0 0 1.98859 0 -0.218298 0 0 0.441713 0 0 0 -0.1648 0 0 0 0 0 0 -0.0649274 0 0.0861069 0 0 0 0 -0.079034 -0.556801 0 0 0.185439 0 0.0299904 0 -0.000123339 0 0 0.0140558 0 -0.0240401 -0.054955 -0.0125596 0.00553546 0 0 -0.0038188 0 0.074831 0 -0.855534 0.00408854 0 -0.36198 -0.238309 -0.000332862 0 -0.0101917 0 0 -0.0554541 0 0.189977 0.395109 0 0 0.0502398 0 0 0.0715403 -2.16874 -0.0142843 0 -0.65803 0 -0.469788 0.0369023 -0.0105788 -0.563834 -0.0133987 0.179662 -0.115012 -0.0650978 0.287896 -0.546445 0.0260436 0 0 0 -0.163825 -0.0127516 0 0 0 0 0.228994 -2.62539 -1.33674 1.47424 0.0345698 0.00457335 0.10766 -0.063129 0.0595344 -0.0873 0.177099 0 0 0 0 0 0 +77 0 -1.09634 0.0594959 -0.0553899 -0.241206 0.143039 0.325516 -0.355379 -1.32525 -0.642177 1.47518 0.346656 0.556588 0.00647799 1.91186 0.0800627 0.465439 0.464502 0.290032 0.25202 0.403283 0.0399717 -0.244348 -0.0153769 0.345766 -0.656298 0.458503 0.0289018 -0.766646 -1.38139 0.468402 -0.0988193 0.559264 0.421388 0.0768909 -0.431811 0.0341884 0.0109176 5.07535 0.379707 1.11725 0.0207626 0.217733 0.0380445 2.83096 0.0127107 0.91274 -1.0168 1.71014 -0.127534 1.03273 -0.185789 -1.96338 -0.573167 0.174691 -0.328893 -2.55678 0.261851 0.71228 -0.298021 -0.00907707 0.0865928 -3.12401 -2.01442 -0.0437846 -0.320246 0.266083 -0.515946 0.0563898 0.253262 -0.920663 0.0521952 0.0603079 -0.131283 -2.8614 1.13646 0.725135 -16.2383 -5.31149 1.85645 -2.41796 1.21517 -2.55036 -0.770231 0.609887 -0.966071 1.82836 -0.00637321 -0.0904863 0.332026 -0.9386 3.10687 0 0 0 0 0 -0.0553899 -0.241206 0 0 0 0 0 0 0 0.00783967 0 0 0 0 0.0233748 0 0.00340231 -0.0146067 0.0610666 0 0 -0.0678455 0 0 -0.0142867 0.0911389 0 0 -0.00978692 -0.000608037 0 -0.0221543 0 -0.0117528 0 0 -0.000904659 0 0 0.205803 0 0 0 0 0 0 0 0.0560102 0 0 -0.175063 0 0 0 0 0 0 0 -0.112351 0 -1.46287 0 -0.026955 0 0 0.00760141 -0.441281 0 -0.155824 0 0 0 -0.274283 0 -0.125048 0 0 -0.189878 0 0 0 -0.0263739 0 0 0 0 0 0 0.143039 0 0.325516 0 0 0 0 0.0799095 -0.31131 0 0 0.201394 0 0.0310175 0 0.0106499 0 0 0.279424 0 -0.452181 -0.0272653 -0.153031 0.0378134 0 0 0.0914059 0 1.36194 0 1.2108 0.899576 0 -0.237092 -0.529887 -0.00913515 0 0.0225552 0 0 -0.0253247 0 1.77062 0.643926 0 0 0.095748 0 0 -0.318161 0.206266 -0.0700518 0 -1.29601 0 -0.395822 0.0311054 -0.014788 0.0331142 -0.116232 -0.0139769 0.254294 0.0691106 0.0424392 -5.53817 0.0502449 0 0 0 0.0257306 -0.020054 0 0 0 0 -0.0147672 0.0398661 -0.558829 1.68097 -0.331596 0.38866 -0.251449 -0.108216 0.122165 -0.130878 0.19999 0 0 0 0 0 0 +78 0 1.01435 0.585496 0.0542728 0.0469795 0.0207223 -0.0180194 0.722788 1.16674 0.305528 -1.81706 0.184893 -0.172984 -0.0172396 -0.335057 0.116803 1.55622 8.30152 -0.316855 0.113119 -2.17761 -0.0802587 -0.296215 0.0207531 -0.552041 0.2666 0.336003 -0.0414196 0.165107 0.764403 -0.270929 0.0956533 0.744676 -1.2496 -0.00134254 0.156831 0.0624758 0.125884 -6.29391 0.323199 -1.16138 -0.081366 0.920604 0.0975338 0.402409 -0.338596 -0.432899 0.334954 0.946599 -0.320108 0.355748 -1.70855 -2.17091 -0.377448 0.000780852 0.137323 0.540619 -0.287894 0.173945 0.878886 0.168776 -0.286526 1.41916 0.602714 -1.12661 -0.205691 0.654753 0.911147 0.223202 -0.143428 1.32951 -0.175531 0.167774 -0.304556 0.773932 -0.199646 -1.23907 22.4624 8.47307 -2.96786 5.1135 -2.94204 3.48919 1.25768 -0.885872 1.16122 -0.903718 0.169774 -0.206427 0.189126 -0.0803507 -1.7192 0 0 0 0 0 0.0542728 0.0469795 0 0 0 0 0 0 0 -0.0272286 0 0 0 0 -0.0498249 0 -0.00757336 0.0512532 -0.16957 0 0 0.182894 0 0 0.00187528 1.15104 0 0 0.0151419 0.216041 0 -0.101052 0 0.0288313 0 0 0.000896471 0 0 -0.4795 0 0 0 0 0 0 0 0.0845732 0 0 -0.0418363 0 0 0 0 0 0 0 0.110895 0 0.479516 0 -0.0263959 0 0 0.0381984 0.333212 0 -0.0255913 0 0 0 1.02132 0 0.18951 0 0 0.091195 0 0 0 0.0690991 0 0 0 0 0 0 0.0207223 0 -0.0180194 0 0 0 0 -0.382385 1.12255 0 0 -0.140171 0 -0.038803 0 0.043295 0 0 -0.00180391 0 -0.805521 -0.096335 -0.0111084 -0.000458906 0 0 0.351858 0 4.60475 0 -4.53135 -0.278354 0 -0.8395 -1.65365 -0.00926754 0 -0.0455155 0 0 0.14204 0 0.634783 -0.0294881 0 0 -0.00831625 0 0 -0.166459 4.77272 -0.400536 0 0.6064 0 0.326145 0.0409562 0.212289 0.939204 -0.0645971 -0.797579 0.920736 0.05619 -1.08367 -2.28865 -0.0294816 0 0 0 0.285349 0.0705698 0 0 0 0 -0.411822 40.4243 3.81073 4.41833 0.82741 -0.615141 2.03496 0.0182546 -0.00190003 0.0465261 0.391925 0 0 0 0 0 0 +79 0 -0.420052 0.066936 0.00461085 0.037427 -0.23533 -0.058771 0.1248 1.48669 0.083112 -0.230441 -0.0566531 -0.140188 0.000458623 -0.664217 -0.018479 0.998843 4.32351 0.0488996 -0.0256903 0.33329 0.0172709 -0.00810115 0.00075909 0.0505359 0.185621 0.186257 0.00716823 0.111219 0.258162 -0.170348 0.00833352 -0.131984 0.172058 0.102517 0.0413964 -0.00862296 0.0936794 1.44374 -0.169353 0.0152711 0.0038621 0.694604 -0.0217449 -1.16211 0.0288208 -0.124807 0.104056 -0.207949 0.0368927 -0.533764 0.267597 1.15227 0.0665146 -0.0107587 0.00280186 1.5 -0.0563756 0.351381 -0.012168 -0.0138917 -0.632291 -1.61663 0.569661 -0.41039 -0.270443 -0.121041 -0.0316508 0.0668984 -0.0306768 0.268407 -0.0782995 -0.0786889 0.0205243 1.67215 0.149249 0.192529 -5.94284 -1.08414 -2.21133 -0.800941 0.537439 -1.78264 -0.046499 -0.260597 0.663214 -2.81845 -0.0144509 0.0531312 -0.0971322 0.286055 -0.580627 0 0 0 0 0 0.00461085 0.037427 0 0 0 0 0 0 0 0.0138324 0 0 0 0 0.0113118 0 0.00205817 0.0365791 0.0732874 0 0 0.0925004 0 0 -0.00963293 0.767076 0 0 0.00107842 0.181995 0 -0.0276774 0 0.0129872 0 0 0.000129242 0 0 0.0555803 0 0 0 0 0 0 0 -0.0702042 0 0 -0.113589 0 0 0 0 0 0 0 -0.0114186 0 -0.715038 0 0.00395813 0 0 -0.0766195 -0.139847 0 0.0193379 0 0 0 -0.12941 0 -0.0658605 0 0 -0.000440927 0 0 0 -0.0356405 0 0 0 0 0 0 -0.23533 0 -0.058771 0 0 0 0 0.330133 0.154493 0 0 -0.226235 0 -0.0265706 0 -0.000257696 0 0 0.327637 0 -0.081307 0.078569 0.00267293 0.0401987 0 0 0.00836831 0 0.862671 0 1.85214 -0.178378 0 1.03543 0.417225 -0.000926455 0 0.021296 0 0 0.021396 0 0.126695 0.357101 0 0 0.0377973 0 0 0.104443 -1.42597 0.3382 0 -0.118157 0 -0.52737 0.0511704 -0.240833 0.222992 -0.237268 -0.788008 -0.0209705 0.119574 0.269036 2.04491 0.0279671 0 0 0 -0.0207874 0.036747 0 0 0 0 -0.0136334 -18.8144 -0.649579 -5.2171 -0.344655 0.108878 -0.816963 0.0983176 -0.105029 0.156402 -0.561947 0 0 0 0 0 0 +80 0 0 0 0 0 0.253911 -0.201418 0.393323 0.671467 0 0 -0.00986451 -0.947342 0 -1.76033 -0.0199116 0 0 0 -0.150287 0.832748 0 0 0 0 0.432698 0 0 0.839197 5.01617 -0.69632 0 -0.220915 0 0 0.293201 0.00922214 0 0 -0.10022 -0.0761374 0 0 0.033718 -3.16488 0 -0.523118 1.83336 -0.84759 -0.00245293 -0.945501 0.142462 0 0.19929 -0.154989 0.328472 -0.816069 0.300028 -0.292024 0 0 0.639302 -0.445262 0 -0.0891521 0.176647 -0.495178 0 0 0 0 -0.0894753 -0.101265 0 0.908356 -2.2971 0 0 0 0.136817 0 0.215684 -4.86107 0 -0.0457143 -0.0450468 -4.40929 0 -0.0653089 -0.186959 0.645642 -12.7508 0 0 0 0.150402 0.00447497 0 0 0 0.00214322 0 0 0.000211809 0 0 0.00289171 0 0 0 0 0.0594754 0 0.00241952 0 0.0499079 0 0.0306593 -0.0658673 0 0.000194817 0 0 0.0118274 0 -0.00160976 0 0 0 0 -0.0465069 0.00258414 0 -0.00174638 0 0 0 0 0 0 0 0 0 0 0.0757775 0 0 0 0 0 0 0 0 0 0 0.0484875 0 0 0 -0.0323804 0.0138009 0 0.0440085 0.090492 0 -0.00448478 0 -0.0128268 0 0 0 -0.071049 0 0 -0.0128101 0 0 0 0.0228252 0 0 0 0 -0.00371195 0 0.253911 0.150402 -0.201418 0.00447497 -0.373078 -0.123191 0.0158838 -0.290661 0.11748 -0.000579341 -0.0639935 0.170625 -1.45807e-05 0.00527568 0.000460724 0.00193796 -0.0237149 -0.0223075 0.800539 -0.113892 -0.420366 -0.0174448 0.138755 0.131139 -0.264129 0.262427 0.0966177 -0.0190789 -4.19879 -0.0780421 0.0353009 -1.38179 1.31013e-05 -0.322108 -0.308042 0.00397509 0.00104005 -0.0384684 -0.00124505 1.40662 0.00261765 0.0535516 -2.20617 0.71392 -0.00655969 -0.00385976 0.00177955 -0.0688315 -0.00451787 -0.301556 2.56607 0.0909134 0.00677957 1.53363 -0.000206722 0.154189 -0.00360453 -0.028206 0.0578761 0.174042 0.990059 -0.174779 0.031878 -0.0164965 9.0042 -0.112664 -0.310147 -0.0267936 -0.194227 -0.111019 -0.00802309 0.0270495 0.000779648 -0.0462694 0.0238099 -0.00265341 -0.185293 -0.446216 0.727907 0.0583631 0.252889 -4.02027 -0.00188297 0.0112737 -0.0213011 -0.81715 0.000230502 0.00942152 -0.0905917 0.236039 -1.76049 0 +81 0 0 0 0 0 0.721006 0.377503 -0.720444 -2.80667 0 0 0.00656472 0.511636 0 1.1695 0.00155479 0 0 0 -0.0144164 -1.15259 0 0 0 0 -0.561307 0 0 -0.709117 -2.26245 0.515247 0 0.0222042 0 0 -0.334628 -0.000243715 0 0 0.20148 0.759198 0 0 0.0719651 0.572901 0 1.10954 -0.793728 -0.00180063 -0.113808 0.737308 0.00500267 0 0.00364766 -0.00198686 -0.0247933 -0.584684 -0.0921681 -0.11746 0 0 0.401125 -3.04409 0 -0.79164 -0.0512639 -0.240611 0 0 0 0 -0.141986 0.121743 0 -2.90243 0.365563 0 0 0 3.89439 0 6.6861e-05 1.1115 0 -0.126647 -0.291984 4.65701 0 -0.215411 -0.0551412 0.306868 3.65662 0 0 0 -0.0244916 -0.00160316 0 0 0 -0.00877495 0 0 -0.000399959 0 0 -0.00391023 0 0 0 0 -0.0666596 0 -0.0022224 0 -0.127638 0 -0.111243 -0.025292 0 -0.000162462 0 0 0.00122913 0 -0.000287594 0 0 0 0 0.0354214 -0.00227154 0 0.00128904 0 0 0 0 0 0 0 0 0 0 -0.0104487 0 0 0 0 0 0 0 0 0 0 -0.0739554 0 0 0 0.00150498 0.0173468 0 0.047882 -0.073692 0 -0.0262795 0 -0.0338305 0 0 0 0.136372 0 0 0.000225356 0 0 0 0.0223543 0 0 0 0 -0.00610621 0 0.721006 -0.0244916 0.377503 -0.00160316 0.287616 0.0721514 -0.0119946 -0.445762 -0.0556844 0.000263374 0.014477 -0.0937773 7.78233e-06 -0.00324391 -0.00037753 0.00043599 0.0103391 0.00744595 -0.777718 -1.10686 0.180976 -0.387582 -0.052363 -0.14824 0.024488 -0.21521 0.0094139 -0.0149167 3.61444 0.0817819 1.22375 1.4543 -1.10311e-05 -1.66101 0.439172 -0.00190619 0.00140015 -0.127191 0.013247 -1.14006 -0.00101796 -0.0437863 2.17231 -1.97756 0.00278683 0.00827276 -0.425172 -0.160704 -0.00349808 1.03283 -1.25202 -0.690882 -0.0274006 -0.312195 0.000519696 -1.24018 -0.00378004 -0.0410309 0.0175939 -0.0432322 -0.405405 0.128357 0.216283 -0.0494412 -8.95522 -0.110576 0.778588 0.0467398 0.0626869 -0.102936 0.00517708 -0.0297728 -0.000430843 0.149357 -0.07896 0.00185224 -6.42339 0.301053 4.35766 -0.0258642 0.124744 1.81869 0.000818766 0.0860393 -0.282158 1.96854 -7.69386e-05 -0.0491518 0.112252 -0.264821 1.50934 0 +82 0 0 0 0 0 0.272517 0.240209 -0.555567 -1.15489 0 0 -0.0450836 1.0789 0 1.92474 -0.00659332 0 0 0 -0.0360269 2.1401 0 0 0 0 -0.431738 0 0 -0.640744 -2.36862 0.761883 0 -0.0731788 0 0 -0.270571 -0.00339697 0 0 -0.0696858 0.312498 0 0 -0.0170927 3.111 0 -0.0673734 -0.977875 -0.236436 0.0266759 1.12481 -0.0552324 0 0.00714093 -0.051177 -0.139566 -1.32289 0.0556597 -0.094509 0 0 -0.191973 1.61285 0 -0.271426 -0.103674 0.0890668 0 0 0 0 -0.217563 -0.221422 0 -0.504177 1.21604 0 0 0 1.34732 0 0.0830545 3.50862 0 0.0857565 0.11991 2.64136 0 0.0444979 -0.0944068 -0.149631 7.18232 0 0 0 0.0257601 0.000861169 0 0 0 -0.000227055 0 0 3.66742e-05 0 0 0.000887376 0 0 0 0 0.015608 0 0.000608415 0 0.0224144 0 -0.00497662 -0.0312611 0 4.30397e-05 0 0 0.00122763 0 -0.00060838 0 0 0 0 -0.0168748 0.000683691 0 -0.000511957 0 0 0 0 0 0 0 0 0 0 0.0137984 0 0 0 0 0 0 0 0 0 0 0.0106364 0 0 0 -0.00934035 0.00101196 0 0.00738721 0.0218837 0 -0.00110752 0 -0.00187506 0 0 0 -0.0267237 0 0 -0.000507952 0 0 0 0.000362635 0 0 0 0 -0.00340491 0 0.272517 0.0257601 0.240209 0.000861169 0.21377 0.0752477 0.00373959 0.235544 0.0293356 -0.000117536 -0.0175022 0.0792027 -3.0831e-06 0.00187632 0.000111678 0.000490284 -0.0121998 -0.00423377 1.10306 1.09599 0.502866 0.0342062 0.0618119 0.207052 -0.0868199 -0.122179 0.0379074 0.00311213 3.21015 -0.102272 2.73104 1.27663 3.20772e-06 0.327671 1.26114 0.00144249 -0.00365992 0.0148886 -0.0196597 -0.599517 0.000134094 -0.0219163 2.21387 2.51861 -0.00247318 -0.0160911 0.497915 0.128883 0.144028 -0.140615 -1.59567 0.0352613 -0.0207915 -0.357711 -8.8054e-05 -1.88106 -0.000132684 -0.0959583 0.071217 -0.267698 0.563833 0.0649486 -0.0917432 0.17701 -5.902 -0.118205 -0.558841 -0.0337766 0.0891048 0.0914674 -0.00256653 0.00932135 0.000166451 -0.121252 -0.0288793 0.00111281 -14.3351 -0.085262 -2.14489 -0.00299841 0.224473 2.34555 -0.000599264 0.00428703 0.115877 0.337136 4.37474e-05 0.00988299 -0.0250437 0.119924 0.749272 0 +83 0 0.214545 0.313245 0.000356378 0.0360603 -0.0901193 0.195289 0.338973 1.1009 0.000874734 0.0303488 -0.00903846 1.55055 -4.29534e-08 2.44556 -0.000179209 1.85661 5.56967 0.00866942 -0.000350006 3.73195 0.00237859 -0.123235 5.54526e-08 0.0142197 0.0191366 0.648732 -0.00612016 -0.259229 0.256211 0.716849 7.12793e-06 -0.0201733 0.105407 -0.0921757 -0.116556 -9.67373e-05 -0.0586747 1.1571 -0.00334445 2.26416 -5.52127e-06 -0.610577 -5.24317e-05 5.05044 -0.000677566 1.25313 -0.0428509 -0.0382035 5.43695e-05 -0.376114 -0.0155702 -7.3573 0.000198496 -0.000181925 -0.00146706 -3.53595 -0.151985 0.0319074 3.55408e-05 3.48662e-06 -1.38403 -3.12188 -0.713581 -0.349964 0.197261 -0.0585003 0.0702072 -0.0722791 -3.80421e-06 0.17146 -0.0172832 -0.00528099 0.0844723 -3.30075 0.328955 0.2616 -1.73328 0.0380198 -2.26412 -0.263396 0.579783 -2.36584 -0.0310455 0.0650109 -0.0232073 -1.45826 6.90566e-08 1.08076e-06 0.000238035 0.000895151 -0.189893 0 0 0 0 0 0.000356378 0.0360603 0 0 0 0 0 0 0 0.000938878 0 0 0 0 2.86894e-06 0 9.24563e-06 -0.000353065 0.000288861 0 0 0.0128431 0 0 0.0005558 -0.02177 0 0 0.00153319 -0.0181123 0 0.0286357 0 0.000124971 0 0 1.49095e-05 0 0 0.0856817 0 0 0 0 0 0 0 -0.0167101 0 0 0.0215282 0 0 0 0 0 0 0 0.00109257 0 0.111107 0 -0.000530642 0 0 -0.000632805 0.0247721 0 -0.00121422 0 0 0 -0.196218 0 -0.000858654 0 0 -0.00369254 0 0 0 -1.24487e-05 0 0 0 0 0 0 -0.0901193 0 0.195289 0 0 0 0 -0.00330332 -0.275186 0 0 -0.209686 0 -0.0125167 0 -0.00449724 0 0 0.444773 0 -0.257861 0.0939455 -0.0341827 0.0208418 0 0 -0.0857847 0 9.69877 0 -0.876361 1.22951 0 0.468519 -0.339124 -0.000816123 0 0.00767235 0 0 -0.023342 0 3.46614 1.39104 0 0 0.135343 0 0 -0.473402 -2.55042 -0.16386 0 -1.68494 0 0.410126 -0.0618826 0.12931 0.0617539 -0.094609 -1.4345 -0.162532 -0.00336799 -0.101734 -2.78922 -0.0376555 0 0 0 0.0474093 0.0159725 0 0 0 0 -0.01119 5.46021 1.05005 -0.929438 0.072743 0.0173907 0.358434 0.0188744 -0.00988609 0.128624 -0.329651 0 0 0 0 0 0 +84 0 0.474696 0.416387 -0.000211 -0.0213501 0.207491 0.0874546 0.0312698 0.081544 -0.000517901 -0.018122 0.0042624 -0.643926 2.54313e-08 -1.93266 0.000111831 1.51737 3.31137 -0.0168716 0.000221439 -2.58442 -0.00307032 -0.463611 -3.28317e-08 -0.00415433 -0.167958 0.744952 0.000527293 -0.172425 0.374147 -0.454105 -4.22021e-06 0.0128368 -0.710182 0.0172957 -0.210506 5.02897e-05 0.00986041 -2.44324 0.00115425 -1.07711 3.26896e-06 0.111378 2.57454e-05 -2.67761 0.000401164 -0.233795 -0.0449555 0.0248346 -2.85327e-05 -0.218681 0.00634567 -1.79515 -0.000123947 0.000113599 0.000615176 -0.614179 -0.0246968 -0.0185158 0.0040642 -2.06431e-06 -1.52546 2.2268 -0.36101 1.02452 0.0744316 -0.0466066 -0.0552394 0.0344041 2.25235e-06 0.214333 -0.0652254 0.00458042 -0.0204736 1.69966 -0.0715141 -0.0558132 6.50264 0.497757 0.432505 0.0815022 -0.125501 2.19358 0.00205528 -0.0529872 0.252949 -0.577924 -4.08861e-08 -5.97796e-07 -0.000167729 -0.000930416 -0.277301 0 0 0 0 0 -0.000211 -0.0213501 0 0 0 0 0 0 0 -0.000537665 0 0 0 0 -1.92602e-06 0 -5.3572e-06 0.000197152 -0.000206478 0 0 -0.00636397 0 0 -0.000321279 0.0129318 0 0 -0.000751728 0.00979734 0 -0.016341 0 -6.60369e-05 0 0 -7.8266e-06 0 0 -0.0488804 0 0 0 0 0 0 0 0.00984667 0 0 -0.0108858 0 0 0 0 0 0 0 -0.000372263 0 -0.0639219 0 0.000333414 0 0 0.000374256 -0.0133095 0 0.000833969 0 0 0 0.11194 0 0.000537585 0 0 0.00210655 0 0 0 8.8984e-06 0 0 0 0 0 0 0.207491 0 0.0874546 0 0 0 0 -0.243235 0.049011 0 0 0.121814 0 0.0117561 0 0.00154093 0 0 0.0244198 0 -1.29024 -0.122308 0.010957 0.0149046 0 0 0.00281187 0 -4.88716 0 -6.06637 -1.08662 0 -0.705127 -2.63104 5.96446e-05 0 -0.0480109 0 0 0.0131006 0 -2.23802 -0.108713 0 0 0.0172341 0 0 0.475911 -0.330239 0.330973 0 2.41831 0 0.620117 0.0567441 -0.0521051 0.27139 -0.0432296 -0.869775 -0.296103 0.0674851 -0.174794 10.166 -0.0306987 0 0 0 -0.0199715 -0.0350037 0 0 0 0 -0.0336135 35.9107 0.437604 4.68744 0.372674 -0.412264 2.27161 -0.0661946 0.0522853 -0.0494198 0.284775 0 0 0 0 0 0 +85 0 0.281817 0.052221 1.9647e-05 0.00198799 0.0266527 -0.154243 0.736196 0.575997 4.82237e-05 0.0415366 0.00112777 0.416491 -2.368e-09 0.203957 -2.88449e-05 1.04814 4.24608 0.00286699 -8.15213e-05 1.49912 -0.000639083 0.267415 3.05708e-09 -0.00318771 0.526202 -0.00578478 -0.00285748 0.568463 0.788196 -0.183089 3.9296e-07 -0.00406874 0.112317 -0.0518886 0.457025 5.09732e-06 -0.0219831 -1.53553 0.000793376 0.348461 -3.04385e-07 -0.268306 3.3813e-06 1.95151 -3.73539e-05 -0.197113 0.607651 -0.0118069 -1.3329e-06 0.109472 -0.0888064 -0.480146 3.90686e-05 -3.5807e-05 -0.00176005 1.2788 -0.169168 -0.00196513 0.00596316 1.92216e-07 -0.606935 -1.98092 -0.640612 0.339823 -0.0795194 -0.230561 -0.364103 -0.0195602 -2.09725e-07 -0.173256 -0.16396 0.00108046 0.0185511 0.248792 -0.163627 -0.135374 7.10653 0.219395 2.56343 0.205405 -0.25192 1.63765 -0.0182404 0.00666831 -0.222232 0.860868 3.80706e-09 9.75615e-09 -2.63234e-05 -0.00135297 -0.584176 0 0 0 0 0 1.9647e-05 0.00198799 0 0 0 0 0 0 0 1.27005e-05 0 0 0 0 -1.64043e-06 0 2.5916e-07 -1.96286e-05 -0.000264469 0 0 0.000180716 0 0 2.96877e-05 -0.00288937 0 0 4.15078e-05 -0.00101675 0 0.00150364 0 3.50708e-06 0 0 5.46024e-07 0 0 0.00449746 0 0 0 0 0 0 0 -0.000871243 0 0 0.0007978 0 0 0 0 0 0 0 6.07243e-05 0 0.0074326 0 -7.07419e-07 0 0 -3.81077e-05 0.00121105 0 -0.000139872 0 0 0 -0.0102995 0 0.000275117 0 0 -0.000193823 0 0 0 1.13975e-05 0 0 0 0 0 0 0.0266527 0 -0.154243 0 0 0 0 -0.0467241 -0.228528 0 0 -0.0489132 0 -0.00309977 0 -0.0011866 0 0 0.261522 0 0.011877 -0.0326045 -0.0032981 0.00735447 0 0 -0.0232361 0 3.63269 0 -2.72848 -0.0803847 0 -0.361071 -0.542294 -4.69016e-05 0 0.0056031 0 0 -0.0217757 0 0.840598 0.81184 0 0 0.0549796 0 0 0.144209 -1.74571 0.321093 0 0.306292 0 0.667913 -0.0367841 -0.0308907 -0.268727 0.0441602 -0.50316 -0.471011 -0.0917319 0.0980546 2.19135 -0.0508494 0 0 0 -0.0158408 0.00155527 0 0 0 0 0.0333984 19.227 0.652721 3.49455 0.267173 -0.224427 1.35865 -0.0313275 -0.0192053 0.000160415 0.357796 0 0 0 0 0 0 +86 0 0 0 -0.192569 -0.0152789 0 0 0 0 2.86995 1.36606 -0.0473332 0 0.364996 0 -0.0184284 0 0 0.56098 0.194665 0 0.441662 0 -0.40729 1.36678 0 0 -0.640971 0 0 0 0.0817475 -0.387043 0 -1.18579 0 -0.000466802 -1.11781 0 0.0679537 0 0.242717 -2.59504 0.244199 0 -0.40905 0 0 -1.12866 -0.949244 0 0.31457 0 1.44543 0.497562 0.0474978 0 0.97845 0.139452 -0.424528 0.87066 0 0 0 0 -0.68304 0 -1.32326 -0.19231 -1.51924 -2.09986 -0.424257 -0.293264 1.64904 0 0 2.68723 0 -4.31755 0 0.277909 -0.113928 0 -3.07535 1.18051 -0.454932 0 0.863542 -0.893479 0.917488 -0.339386 0 0 0.112974 0.0154989 0.115663 -0.00167963 -0.192569 -0.0152789 0.0546519 -0.0597658 -0.179242 -0.000422436 -0.00862743 0.0235191 -0.00115401 0.0600624 0.0220051 -0.00390638 0.0159667 0.106727 -0.157373 0.237228 0.0302117 -0.832666 0.036895 0.00193955 -0.43022 -0.433489 0.0101005 0.00278156 -0.816469 -0.570397 -0.159554 0.0099321 -0.0500749 -0.541033 -0.0525138 -1.57609 -0.0167952 0.137471 -0.00841395 0.0893642 0.0536418 -0.028605 0.000268578 -2.53356 0.322715 0.192488 -0.00426762 0.613326 -0.054995 -0.024062 -0.0148555 -0.119283 0.043241 0.110482 -0.352143 -0.173511 -0.0725474 0.0507956 -0.0431041 -0.12928 -0.102504 0.0644304 -0.0625145 0.145107 0.967542 0.0180949 -0.151696 -0.0483515 0.145788 0.225501 0.249995 -0.033067 -0.165802 0.0253528 0.331467 0.0117426 10.3298 -0.891047 1.02438 0.328783 -0.640825 1.32187 -0.029451 0.0556669 -0.113507 0.0547352 0.0078553 -0.0159534 0.0308384 -0.063704 0.125525 0 0 0.115663 0 -0.00167963 0 0 0.945575 0 -0.612232 0.0336995 -0.0417773 0.356111 0.00531575 0.0593091 0.1181 -0.0970955 -0.0218397 0.196467 0 0 0 0 0.0785823 0 -0.349799 0 -0.412223 0 0 0.0683877 0 0 0.0109844 0 0 -0.0116892 0.00321629 0 0.00670042 0 -0.0981231 0 0 0 -0.0012245 0.0363979 0 0 0.0227297 0 0 0 0.205517 0 -0.550849 0 -0.118414 -0.210113 0.232838 0 0 -0.304454 0.0293787 0.338135 0 0.197211 0 0.0116421 0 0.276293 0.0168378 -0.215334 0.0846403 0.254243 0.0983974 -0.295251 0 -1.28097 0 -1.21417 -0.0304978 0 -0.62162 0.209707 -0.0443872 0 -0.453126 0.0558491 -0.0618245 -0.106021 0 0 +87 0 0 0 0.251411 0.174361 0 0 0 0 -4.27476 -2.15839 -0.596198 0 -0.329918 0 0.221958 0 0 -0.647154 0.38837 0 -0.501998 0 0.627677 -1.41536 0 0 1.19821 0 0 0 -0.0917295 1.29206 0 2.06785 0 -0.0183395 2.14921 0 -3.43307 0 0.643474 3.06262 -0.769219 0 5.12565 0 0 2.92143 3.65474 0 1.98953 0 -1.64678 0.64981 -0.526177 0 -1.60864 -1.4074 -0.789448 -3.84732 0 0 0 0 -0.110838 0 1.30969 2.03149 2.53369 3.40975 0.720608 -1.66426 -2.32919 0 0 -4.57746 0 7.051 0 -10.5231 7.57174 0 -3.67728 2.61676 2.07286 0 -19.1849 11.1288 -6.44638 5.372 0 0 -0.591599 -0.0811614 0.354078 0.0764549 0.251411 0.174361 -0.126006 -0.0272245 0.33772 0.00293127 0.000170945 -0.00284253 -0.0057327 -0.02307 -0.0819502 0.0305327 -0.0542134 -0.411183 0.260346 -0.776071 -0.0132568 1.53385 0.489802 -0.00778138 -0.154212 -0.68613 -0.0421674 -0.0114377 1.013 -0.360195 -0.279391 -0.0352511 -0.213649 1.3581 0.049832 1.47736 0.0443178 -0.523858 -0.0673307 -0.237156 -0.155672 0.290942 -0.00226149 1.59243 -0.0329275 -0.603118 0.00599849 -1.00571 -0.0876683 0.0778848 0.0258273 -0.174551 -0.0430841 -0.118918 -2.09272 0.135881 0.207523 -0.120277 0.118152 0.293038 0.0306237 -0.139418 0.25354 -0.251478 2.02851 0.58206 0.285135 0.0463269 -0.0856418 0.0850264 0.866177 0.376992 -1.26084 -0.0210909 0.0720608 -0.0499971 -6.49262 1.58123 -1.68964 -0.664769 0.685766 -0.0568367 0.101163 -0.146907 0.202678 -0.0714105 -0.0488245 0.0653 -0.0752706 0.0287075 0.219803 0 0 0.354078 0 0.0764549 0 0 -0.31282 0 0.512084 0.0833757 0.0103001 -0.167734 0.00942072 -0.00345006 0.00481241 0.0862546 -0.0289714 0.631993 0 0 0 0 0.275467 0 0.188818 0 0.287642 0 0 -0.478031 0 0 0.0071478 0 0 0.0541691 -0.00795533 0 -0.0441257 0 0.139218 0 0 0 -0.00403015 -0.0854068 0 0 0.00736771 0 0 0 -0.0426757 0 0.248509 0 -0.13873 0.110976 0.598886 0 0 -0.176405 0.440617 -0.0872785 0 0.405783 0 0.208809 0 0.124742 -0.466781 0.681716 -0.585208 -0.615303 -0.125395 -0.149021 0 0.749983 0 -2.6616 1.78378 0 -1.82343 1.06083 0.317112 0 -1.84909 1.24608 -0.504694 0.430192 0 0 +88 0 0 0 -0.292515 -0.440274 0 0 0 0 -0.0638942 4.84691 -0.170889 0 0.462514 0 0.132791 0 0 1.05998 0.564629 0 0.515979 0 -0.380276 1.74216 0 0 -0.658196 0 0 0 -0.163495 0.548155 0 -1.15971 0 -0.0671974 -1.7625 0 0.821933 0 0.751404 -3.72635 0.102141 0 1.35573 0 0 2.00969 -0.393786 0 1.00408 0 -1.5933 0.455969 0.0369679 0 -0.382111 0.123015 -2.26962 -0.648562 0 0 0 0 0.27177 0 -1.67428 -1.70325 -1.24244 -6.9566 -0.0414827 1.17637 -0.501876 0 0 1.40522 0 -14.7893 0 -1.07051 -3.41109 0 -6.46783 2.08199 -5.7257 0 -3.45909 0.0763719 -1.44825 -1.70174 0 0 -0.062405 -0.00856134 -0.130279 -0.00709993 -0.292515 -0.440274 0.000781489 0.0477191 0.0145656 0.000212298 0.00594375 0.024029 -0.00956713 0.264498 -0.0131294 0.00186289 -0.0228488 -0.0489291 0.278411 -0.144687 0.0935281 -0.546516 1.00997 -0.0011409 0.237765 0.433807 -0.00485142 0.00962204 -0.627507 1.8163 0.377934 -0.00639989 0.13466 0.0687594 -0.0143529 -1.27328 0.00314576 -0.0365946 0.0635993 -0.0619448 0.0362669 0.0116696 -0.000889329 -3.50509 0.331582 -0.299534 -0.000791119 0.0877295 -0.412268 0.0259743 -0.00929273 1.07998 -0.0375865 -0.000891084 0.899172 -0.0224566 0.0451195 -0.0229864 0.033316 0.0259012 -0.0160522 -0.0603141 -0.0816909 -0.0814498 -1.26877 -0.513805 0.03825 -0.0917248 -0.0846586 0.0792954 0.184085 -0.336328 0.712822 0.0300783 -0.0179174 -0.00682288 14.2909 -0.0656776 -0.537673 0.289487 -0.463449 0.608316 0.0296329 -0.0638921 0.168894 -0.561312 -0.00411409 0.0120204 -0.0441673 0.101007 -0.297329 0 0 -0.130279 0 -0.00709993 0 0 -0.249761 0 -1.35472 0.00224336 0.0528526 1.67833 0.00261581 0.250391 -0.0353301 -0.130258 0.121696 -0.000859574 0 0 0 0 0.586914 0 0.455076 0 -0.429411 0 0 0.378838 0 0 -0.00542134 0 0 0.0874179 0.0088583 0 0.0324174 0 -0.245751 0 0 0 0.0123708 0.0805318 0 0 0.156256 0 0 0 -0.434861 0 0.183693 0 -0.566763 0.209783 -1.21729 0 0 -1.11934 0.215578 0.373691 0 0.0123408 0 0.137507 0 -0.551089 -0.49938 -0.164526 -0.0305856 0.234486 0.00716555 0.0185185 0 -6.05918 0 0.0357117 -1.76614 0 -0.423129 0.187624 -1.308 0 0.0976948 -0.209787 -0.260877 -0.239732 0 0 +89 0 -0.44032 -0.583985 -0.0648131 0.00679226 0.0701634 -0.0377753 0.0536749 0.276751 -0.175799 -1.32207 -0.226452 -0.591594 0.135686 -0.606136 -0.177826 -3.18417 -11.8959 0.0193219 -1.05098 0.384932 0.0185278 0.598117 -0.171847 -0.549347 -0.0887603 -0.950243 -0.224201 0.0480312 0.251012 -0.102802 -0.193676 -0.451072 1.14907 -0.381099 -0.0414477 -0.116272 -1.17658 1.50616 -0.500108 0.120675 0.177436 -2.03657 -0.318369 -3.04351 0.150853 0.0300005 0.131355 -2.27665 0.437751 -0.761894 -0.392314 6.87873 -0.061921 -1.1958 0.520379 -0.792993 -0.207794 0.321566 0.603488 -0.196665 -1.43392 -0.324283 -4.72102 0.791863 0.982283 -0.0348786 -2.01405 -1.54919 0.204927 1.30108 -0.349691 -0.343332 0.0932567 0.100481 -0.309509 0.685957 -13.9166 -1.01577 0.535654 -1.80237 2.13423 -3.27795 2.3582 -0.891514 1.10181 -1.33752 -0.615671 1.19169 -0.653582 0.753426 -0.47043 0 0 0 0 0 -0.0648131 0.00679226 0.00942029 0 0 0 0 0.00390839 0 0.00950797 0 0 -0.00259676 -0.0248189 -0.0239172 0 0.00556397 0.158243 -0.0671495 0 0 -0.883621 -0.0018181 0 0.585192 -1.15029 0 0 -0.1371 -0.201862 0 0.968589 0 -0.461868 0 0 -0.0677559 0 0 1.56112 0.0543027 -0.0346271 0 0.132739 0.0678181 0 0 -0.303061 0 0.0051853 -0.932512 0.0048357 0 0 0.0118309 -0.0239929 0 -0.01096 0.13219 -0.0405442 -0.597755 -0.060293 -0.00497137 0 -0.0382994 0.00858555 -0.290872 0.0853644 0.139798 0 0 0 -6.71612 0.393764 -0.636178 -0.156846 0.299499 -0.641137 0.00496915 -0.00956908 0.0196266 0.0221088 0 0 0 0 0 0 0.0701634 0 -0.0377753 0 0 0 0 0.0709244 0.12469 0 0 0.109979 0 0.0204298 0 -0.00347533 0 0 0.00874124 0 0.107306 0.0111847 0.0526093 0.00135845 0 0 0.0132228 0 -4.20087 0 1.66679 -0.407455 0 0.1364 0.519991 0.0089757 0 0.00653695 0 0 0.00124925 0 -1.18277 -0.425001 0 0 -0.0569885 0 0 0.109913 -1.22295 0.366134 0 -0.159745 0 -0.103961 -0.00792278 -0.146695 -0.0266564 0.0676607 0.302522 -0.320024 -0.116111 -0.409496 -2.11787 0.0346595 0 0 0 -0.034222 0.0132005 0 0 0 0 -0.0921587 -10.1307 -2.12454 0.464195 -1.10171 0.972876 -1.00881 -0.154037 0.0702442 -0.0937569 -0.1691 0 0 0 0 0 0 +90 0 0.5496 0.292426 -0.0730852 -0.271186 0.532602 0.0988293 -0.481092 -2.63809 0.86406 2.12015 0.139282 -0.174428 -0.0635535 0.456088 -0.0215308 0.87741 1.70918 0.0340416 0.117926 0.0380676 -0.0763894 -0.435436 0.136423 0.64842 -0.365503 0.443048 -0.2776 -0.023341 -0.537609 -0.024276 0.406328 0.00244055 -1.02102 -0.672514 -0.0197329 0.0602837 -0.874087 -3.25169 0.926054 0.0100793 -0.291889 -2.63045 0.520118 1.13644 -0.722947 0.00951347 -0.12962 0.310387 -1.46543 -0.776608 -0.374815 -9.50915 0.0387066 0.126981 -0.064725 -3.90154 -0.538511 -0.0514637 -0.450024 1.27199 1.0743 0.0174843 2.06862 1.89976 1.37245 -0.0230442 -0.892933 -1.84753 -1.49997 -2.30642 -0.0823739 0.844016 0.710299 -1.49467 0.0779398 -0.00974152 19.3691 -2.04973 10.6976 2.36861 -1.03147 5.74651 -3.47889 1.78574 -2.00612 5.36022 2.95053 -2.70997 1.77451 -1.47773 1.00755 0 0 0 0 0 -0.0730852 -0.271186 -0.0308853 0 0 0 0 -0.0133011 0 -0.0731723 0 0 0.0277096 0.202139 -0.414005 0 -0.0418113 -0.23702 -0.759383 0 0 1.18102 0.0147475 0 -0.643943 1.75881 0 0 0.183721 0.36404 0 -1.06094 0 0.57507 0 0 0.0934547 0 0 -1.63783 -0.18421 0.378357 0 -0.42871 0.135176 0 0 0.15966 0 -0.029855 1.62116 0.00558214 0 0 -0.056476 0.0742227 0 0.0490472 0.0479806 0.142567 -0.491732 -0.431925 -0.069142 0 -0.119859 0.110269 -0.335702 0.101178 1.09809 0 0 0 6.40182 -1.02435 2.22471 0.15087 -0.287346 0.623002 -0.0358592 0.0683568 -0.147572 0.301624 0 0 0 0 0 0 0.532602 0 0.0988293 0 0 0 0 -0.176767 -0.101191 0 0 0.328891 0 0.0405907 0 0.00793079 0 0 -0.144698 0 0.0482445 -0.093008 0.0408696 -0.0178945 0 0 0.0452901 0 1.11724 0 -1.77976 0.165722 0 -0.88127 -0.0254594 0.00311986 0 -0.0183269 0 0 -0.00166768 0 0.436014 -0.0517282 0 0 -0.0126951 0 0 -0.116558 0.210207 -0.650028 0 -0.0186072 0 0.754339 -0.308823 0.493786 -0.583254 -0.0757169 0.512202 -0.227248 0.189558 -0.0120565 -2.33509 0.027653 0 0 0 0.0451662 -0.137665 0 0 0 0 0.0518058 15.4115 -1.1599 5.81367 -0.38034 0.419409 1.90671 -0.423775 0.386364 -0.244121 0.754307 0 0 0 0 0 0 +91 0 0.208526 0.506952 0.41193 0.211097 -0.23676 -0.0980079 0.311508 1.83535 0.148658 -2.38972 -0.0888715 -0.707764 -0.664902 -0.345027 -0.0400319 0.73287 3.21695 -1.24961 0.0631712 -0.461608 -0.848799 -0.952133 0.791103 -1.30138 0.269549 0.426491 0.576377 0.0311142 0.539444 -0.103911 0.661279 -0.00854314 -1.60885 1.30418 0.0633603 0.00478729 1.03553 -1.1825 -0.37384 -0.095457 -0.679115 3.58066 0.0637606 -2.11818 -0.144433 -0.0155522 0.117785 0.208805 0.449015 1.34079 -0.221017 -2.27056 -0.240328 0.263664 -0.00604641 2.1218 0.649109 0.159896 1.18336 -0.112154 -1.02611 -0.200037 1.79159 -1.39469 -1.30325 0.121898 2.57358 1.65875 0.27603 3.39774 -0.0574447 -0.321459 -1.45296 0.405357 -0.133426 -2.00129 13.772 13.416 -6.49301 5.23326 -0.414621 -2.88497 4.15864 -1.92506 2.16518 -3.32704 0.58947 0.598998 -0.965461 0.962352 -1.01099 0 0 0 0 0 0.41193 0.211097 0.00660551 0 0 0 0 -0.00485853 0 0.0143045 0 0 -0.00346036 -0.0368822 -0.0231801 0 0.00143401 0.242776 0.0590678 0 0 -0.0401293 -0.002694 0 -0.249249 1.05765 0 0 -0.0130662 0.372599 0 -0.507241 0 0.0984315 0 0 0.00290018 0 0 -0.311161 -0.0666736 -0.0469081 0 0.0917674 -0.0484578 0 0 0.0948655 0 -0.00394822 -0.0640585 0.0126973 0 0 0.00227429 -0.0204818 0 -0.00542929 0.0104364 -0.00720617 -1.46203 0.0141509 0.00408623 0 -0.000449775 -0.026639 -0.106601 -0.116551 0.021399 0 0 0 0.605037 0.0490889 -0.0019371 0.015682 -0.0291033 0.0712716 0.00313068 -0.00589259 0.0135252 -0.00610782 0 0 0 0 0 0 -0.23676 0 -0.0980079 0 0 0 0 0.0832759 0.902142 0 0 -0.486675 0 -0.0563152 0 0.0163857 0 0 -0.000608614 0 0.109087 0.0687816 -0.0191043 0.00261544 0 0 0.0993507 0 0.122998 0 1.21348 -0.138134 0 0.712402 0.395876 -0.00127055 0 0.00650867 0 0 0.136642 0 -0.423711 -0.235948 0 0 -0.0202294 0 0 0.0566748 -1.32622 0.191272 0 -0.186123 0 -0.471892 0.462819 -0.453494 0.125088 -0.057734 -0.337755 0.347599 -0.112293 -1.06905 -0.788195 0.0216023 0 0 0 -0.0460506 0.0978535 0 0 0 0 -0.241759 -8.96971 2.08575 -4.34263 0.167852 -0.131853 -0.897677 0.365235 -0.318576 0.335136 -0.564878 0 0 0 0 0 0 +92 0 1.66544 0.880776 0.41375 0.0920457 0.138791 -0.0207779 0.471031 1.40757 -0.184592 -2.74111 0.0487753 -0.285598 -0.707081 -0.382677 -0.0183111 2.56404 12.1614 -1.31842 -0.05951 -1.27524 -0.839307 -0.920001 0.80196 -1.7122 0.386107 0.787824 0.59931 0.00409618 -0.109536 -0.0928892 0.669291 0.151806 -2.07804 1.3149 0.137583 0.0418166 1.23841 -5.34871 0.179335 -0.232668 -0.888949 4.85724 0.0218094 -1.25246 -0.881749 -0.0435858 0.00750398 0.874941 -0.0841277 0.846534 -1.44177 -0.314868 -0.547684 0.070296 0.0911224 5.46377 0.966163 0.446659 1.2392 0.395277 0.0229201 -0.177243 2.92009 -3.8935 -1.62613 -0.0292915 3.67287 1.89984 0.406959 1.21177 0.367903 0.00192514 -1.19416 0.315159 -0.0189701 -2.17414 19.8252 10.8874 -4.85443 9.68749 -6.66265 10.1991 6.80372 -3.30781 3.61834 -1.87136 3.30443 -0.457008 0.386645 -0.0519213 0.0450684 0 0 0 0 0 0.41375 0.0920457 0.00767635 0 0 0 0 -0.00585653 0 -0.0014553 0 0 -0.0044507 -0.00684112 0.113528 0 0.00478859 0.284912 0.061021 0 0 0.0652504 -0.000477673 0 -0.110995 1.72872 0 0 0.0017204 0.189197 0 -0.0892521 0 -0.0797308 0 0 -0.00795032 0 0 -0.619822 -0.0807988 -0.0706833 0 0.100376 0.0791707 0 0 -0.437974 0 -0.0129533 -1.21383 0.00250867 0 0 0.00871401 -0.0312087 0 -0.00873385 0.0598855 -0.00789883 -1.18856 0.0282399 -0.0395869 0 -0.00203765 0.00101651 0.188084 -0.211842 -0.316895 0 0 0 7.07832 0.719262 0.345389 -0.00314354 0.0966015 0.163546 0.00445428 -0.0045349 0.0220741 -0.0149734 0 0 0 0 0 0 0.138791 0 -0.0207779 0 0 0 0 -0.000836857 1.21088 0 0 -0.232475 0 -0.0394245 0 0.019401 0 0 -0.0464793 0 -0.0438924 0.0228852 -0.0105273 -0.00780966 0 0 0.14296 0 6.00938 0 -1.50551 0.157137 0 0.150208 -0.221072 -0.00357381 0 0.000228836 0 0 0.161059 0 0.912927 -0.247961 0 0 -0.037791 0 0 -0.0174975 1.1445 0.182182 0 1.08156 0 -1.26002 0.278696 -0.190541 0.281784 0.0292361 0.249769 1.21438 -0.231948 -0.736415 1.79109 0.0013052 0 0 0 0.177417 0.167382 0 0 0 0 -0.326762 13.6784 2.36078 -0.18796 0.830987 -0.694658 1.92452 0.217375 -0.236702 0.299111 -0.182311 0 0 0 0 0 0 +93 0 0.0991229 0.318922 -0.0213974 -0.299714 0.223243 0.0724448 -0.208875 -1.85007 0.620071 1.61723 0.166524 0.281915 -0.095166 1.35474 0.067852 1.65198 4.43568 0.0415701 0.091961 -0.326372 -0.110553 -0.440595 0.17127 0.281383 -0.334058 0.715534 0.00208515 -0.0201368 -0.198865 0.220429 0.350629 0.181764 -0.820189 -0.0697012 0.0174223 0.0765585 0.105706 -1.60928 0.278297 -0.0305446 -0.329062 -0.0742066 0.159196 2.50774 -0.710801 0.00290322 -0.0583381 0.462738 -0.329729 -0.663141 -0.241001 -3.93349 0.511846 0.13313 -0.0280935 -2.58166 -0.331148 -0.022198 0.336444 0.959242 2.59543 -0.062426 4.42674 0.930204 1.31583 -0.494765 1.65018 -0.929086 -1.27689 -1.53459 0.793557 -0.115101 0.989633 -1.18627 0.000366942 0.347473 13.64 -1.62277 7.56708 4.44482 -0.294492 1.44234 -1.60978 1.68418 -1.64776 3.00574 2.66379 -0.618991 0.518861 -0.0845359 0.0818228 0 0 0 0 0 -0.0213974 -0.299714 0.00504284 0 0 0 0 0.00318834 0 -0.0904069 0 0 0.0293635 0.209704 -0.410021 0 -0.0446111 -0.967434 -0.824594 0 0 -0.24675 0.0152867 0 -0.69128 -4.41987 0 0 0.0148657 -2.07761 0 -1.17831 0 -0.15951 0 0 0.00769785 0 0 -1.92023 0.0436699 0.398553 0 0.0675844 0.196 0 0 -0.0697331 0 0.01836 0.272997 0.0252858 0 0 -0.0508148 -0.0066732 0 0.0379388 -0.097127 0.136992 0.668329 -0.16958 -0.0761457 0 0.0354221 -0.187113 -0.403629 0.309777 0.258369 0 0 0 10.1761 -0.759731 2.5376 0.16716 -0.24609 0.461325 -0.0362848 0.0718072 -0.15686 0.28294 0 0 0 0 0 0 0.223243 0 0.0724448 0 0 0 0 -0.00930859 -0.0323667 0 0 0.212438 0 0.0237174 0 0.00753454 0 0 0.00786381 0 0.140025 0.005939 0.0106727 -0.000188661 0 0 0.0290857 0 0.599438 0 -0.0348555 0.0112908 0 -0.0694654 0.32055 -0.000279577 0 0.00276049 0 0 0.0122543 0 0.11878 0.278034 0 0 0.0193137 0 0 0.0955227 0.394075 -0.292847 0 0.399874 0 0.644054 -0.247789 0.198091 -0.402646 -0.108885 0.666922 -0.317379 0.239404 0.0984018 2.20727 0.1027 0 0 0 -0.0317096 -0.115246 0 0 0 0 0.0885926 -0.576474 -2.51547 2.36211 -1.02913 1.00262 -0.013231 -0.441476 0.371391 -0.166522 0.0851629 0 0 0 0 0 0 +94 0 -1.00306 -0.454923 -0.0620449 -0.0298645 -0.144387 -0.00144187 0.097606 1.34697 0.183024 0.316737 0.0225691 0.884651 0.0995829 0.622483 0.111845 0.586299 3.22606 0.33776 0.588261 -0.317661 0.201397 0.948902 -0.102053 0.288252 0.302194 -0.0682321 0.246444 0.00339711 0.175968 0.180276 -0.0363292 0.184688 2.60028 0.415636 0.036603 0.0109309 1.70223 8.65029 0.00568364 -0.0285034 0.121338 2.70466 0.028465 2.74215 0.111995 0.00387376 0.0281952 1.00474 -0.052784 0.482215 0.907807 1.53872 -0.308817 0.689019 -0.0334461 -3.35799 -0.267353 0.287726 -0.319407 -0.00375363 1.57675 -0.292216 -3.23029 -0.186677 -0.847092 -0.709521 0.471162 2.03582 -0.181722 1.93891 1.88564 0.0626561 -0.71404 -1.18493 -0.0965185 0.867145 -59.1789 -14.2039 -6.01777 -14.1083 6.01747 -9.714 -0.551724 0.386241 -0.991182 -1.43672 -0.419712 0.00471526 -0.352767 0.0229726 -0.0724017 0 0 0 0 0 -0.0620449 -0.0298645 -0.00238966 0 0 0 0 0.000913304 0 0.018301 0 0 0.00236102 0.0162728 0.027892 0 0.00503302 0.255399 0.105295 0 0 -0.100038 0.00118117 0 0.616746 0.907653 0 0 -0.0585813 0.551272 0 1.3698 0 -0.0943206 0 0 -0.0347966 0 0 3.08991 0.0125608 0.0339142 0 -0.031575 0.210774 0 0 -0.751608 0 0.00584558 -0.808266 -0.0013203 0 0 -0.00688377 0.0126824 0 0.0475086 -0.00795842 0.0320698 -0.64926 0.101974 -0.104654 0 -0.0207244 0.0314208 -0.695989 0.269338 0.0581642 0 0 0 -14.0077 0.347831 -1.61435 -0.297879 0.548336 -1.2105 -0.00333709 0.00541164 -0.0128277 -0.028429 0 0 0 0 0 0 -0.144387 0 -0.00144187 0 0 0 0 0.059853 -0.186224 0 0 0.00957481 0 0.00680556 0 -0.00400776 0 0 0.202977 0 0.203157 0.0229562 0.0164415 0.0235081 0 0 -0.0162831 0 -0.900307 0 2.97787 -0.147109 0 0.313344 0.799592 0.00423676 0 0.00610286 0 0 -0.0268304 0 -0.155235 0.64584 0 0 0.0738622 0 0 0.149725 -2.96128 0.308072 0 -1.30171 0 0.279141 -0.0522922 -0.127389 -0.164942 -0.0165611 0.120754 -0.662307 0.00474877 -0.0207891 -1.05617 0.100986 0 0 0 -0.195609 -0.0182973 0 0 0 0 0.0581951 -19.5434 -2.06251 -1.28342 -1.40205 1.29369 -2.32969 -0.0358945 0.0361964 -0.180207 -0.149167 0 0 0 0 0 0 +95 0 -1.18346 -0.236743 -0.0308378 -0.207368 0.346633 -0.097813 -0.482646 -1.49511 -0.312874 0.494182 0.0633347 -1.07025 0.000866535 -0.930823 0.0215074 -0.523892 -3.4078 0.129864 0.0622488 -3.01067 -0.00542369 0.0828685 -0.00301037 0.00279588 -0.205769 0.00973898 0.0349254 0.232662 0.178555 -0.469879 -0.0312629 0.251999 0.776107 0.219423 -0.00391866 0.0107584 -0.00236047 5.39759 -0.0961168 -1.37775 0.00647915 -0.100169 -0.00754637 -1.95563 0.0315211 -0.676455 0.0303117 0.626067 -0.00628033 1.38442 0.163237 0.957896 -0.0962638 0.0292208 -0.0712396 -0.0428797 -0.29132 -0.391205 -0.00041074 0.0090148 1.91652 3.57066 -0.0306215 -0.404718 -0.734067 -0.156224 0.515409 0.302098 0.07045 -0.246396 0.606626 0.0332949 -0.0214016 0.52719 -0.00628205 -0.774002 -19.631 -3.07387 -1.54146 -2.46518 2.4608 -9.10803 0.566089 0.415512 -1.5099 1.71365 -0.00766552 0.0120973 -0.0222641 0.00400882 -0.0062639 0 0 0 0 0 -0.0308378 -0.207368 -0.00620865 0 0 0 0 -0.000542049 0 0.0170085 0 0 -0.00582264 -0.0100527 0.017711 0 0.00179915 0.00785484 0.139171 0 0 0.11891 -0.000716263 0 0.0275694 -0.194023 0 0 0.0180607 0.0169724 0 0.143148 0 0.00516128 0 0 0.000836415 0 0 0.470669 -0.00755855 -0.0816003 0 -0.0866439 -0.0170208 0 0 0.065636 0 -0.0126892 -0.128402 0.0256036 0 0 0.0118937 0.0107243 0 -0.0239333 0.0699222 -0.0219854 0.0172595 0.0549129 0.0273987 0 -0.0229386 -0.049463 -0.0343871 0.0148154 -0.112436 0 0 0 -1.42413 0.180073 -0.360763 -0.043614 0.0697819 -0.131058 0.00750935 -0.0115103 0.020747 -0.0394868 0 0 0 0 0 0 0.346633 0 -0.097813 0 0 0 0 -0.209554 0.170422 0 0 0.758305 0 0.0848559 0 0.0341454 0 0 -0.712155 0 0.258979 -0.141668 0.204562 -0.0874934 0 0 0.263798 0 -6.15463 0 3.82531 -0.618248 0 -1.15553 1.2495 0.0193988 0 -0.0275759 0 0 0.0317898 0 -1.44786 -1.50777 0 0 -0.217285 0 0 0.320122 -2.3483 0.864193 0 -0.32241 0 -0.254209 0.232478 -0.415603 0.129206 -0.142188 -1.11809 0.0970639 0.066401 -0.454127 1.76148 0.0934962 0 0 0 -0.377095 -0.0995263 0 0 0 0 0.179073 -21.1085 -3.39615 1.70919 -1.26189 1.26518 -3.24965 -0.281907 0.32089 -0.529995 0.721136 0 0 0 0 0 0 +96 0 -0.00976625 0.177611 0.00623934 -0.00485417 -0.0810729 0.0602752 -0.212493 0.553923 0.0398007 -0.0695135 -0.128604 0.650603 -0.00145511 0.415645 -0.00360413 1.59186 5.18272 -0.1114 -0.0130546 1.5118 -0.017203 -0.179688 0.001602 -0.0504246 -0.041756 0.622421 -0.0114507 -0.0366668 0.0538741 0.136867 0.0100911 -0.116755 0.105598 -0.186189 -0.201182 -0.0149835 0.0100496 2.42175 -0.0160427 0.860553 -0.01008 -0.278416 0.00307028 2.04946 -0.0610644 0.431635 0.106337 -0.158155 -0.0280519 -0.310727 -0.140669 4.67904 0.0433637 0.029609 0.00803653 2.23258 0.280021 -0.0540399 0.149554 0.0254436 -0.102026 -0.669526 0.386847 -0.104862 -0.14427 0.435976 0.44346 0.106099 -0.0171811 0.843316 -0.0735709 -0.0177204 -0.157756 1.07742 0.0408516 0.954481 -12.1697 -1.77518 -2.94362 -2.42116 1.34295 -4.94642 0.291444 -0.196675 -0.236193 -1.45296 0.0148501 0.00115629 -0.00547965 0.000982261 -0.00188996 0 0 0 0 0 0.00623934 -0.00485417 -0.00400537 0 0 0 0 -0.000511484 0 0.016333 0 0 -0.00210356 -0.00184506 0.0111058 0 0.00194533 -0.0387415 0.104378 0 0 0.233456 -0.000149341 0 0.00935054 -0.555138 0 0 0.0383706 -0.187227 0 0.0629743 0 0.0299979 0 0 0.00505473 0 0 0.313681 -0.00714287 -0.0279111 0 -0.0562937 -0.00815077 0 0 -0.151034 0 -0.0081785 -0.208337 0.0188853 0 0 0.004327 0.00691209 0 0.00647704 -0.059932 -0.01236 0.206633 0.0590577 -0.00148271 0 0.014787 -0.0496864 -0.100893 0.0349178 -0.140206 0 0 0 -1.4557 0.153902 -0.434177 -0.0305265 0.062988 -0.142709 0.00289542 -0.00762803 0.0194953 -0.0552094 0 0 0 0 0 0 -0.0810729 0 0.0602752 0 0 0 0 0.0759186 -1.03239 0 0 0.0469226 0 -0.0152346 0 -0.101875 0 0 0.497537 0 -0.608628 0.0434069 -0.0216288 0.0600439 0 0 -0.690683 0 -7.4728 0 -0.097789 -1.19653 0 0.485062 -0.75616 -0.017233 0 0.010565 0 0 -0.162263 0 -3.32908 0.886771 0 0 0.10574 0 0 0.285113 -2.30241 -0.0993614 0 0.187595 0 -0.0201418 -0.0179904 0.0217735 -0.145352 0.0929575 -0.235866 -0.0500672 -0.244632 0.980646 4.93756 -0.0195811 0 0 0 -0.324749 0.0704768 0 0 0 0 0.411815 -10.5452 -1.88987 -1.54853 -0.0269559 -0.0117817 -1.18663 -0.06688 0.0492204 -0.102342 -0.410499 0 0 0 0 0 0 +97 0 -0.152816 0.144664 0.0231756 0.154646 -0.295692 0.171486 -0.624615 -0.0799519 0.234534 0.116496 -0.19697 -0.523536 -0.000683963 -0.812555 -0.000247965 0.676509 2.01471 0.123127 -0.0167578 -0.793146 0.0384051 -0.208063 0.00228778 0.0656113 -0.507205 0.407485 0.0209236 -0.554537 -0.00194596 0.0157422 0.0235914 -0.00618158 -0.0126514 0.33945 -0.442308 -0.0203157 0.0754512 1.55269 -0.148991 0.168723 -0.00509358 1.22826 -0.0121166 -2.55306 -0.0250879 0.524999 -0.231686 -0.117877 0.00208947 0.376446 0.406699 1.22017 0.111166 0.0327689 0.0434358 1.86245 0.650615 -0.255942 -0.269513 -0.00607745 1.7017 0.923135 -0.887183 0.0785816 -0.158864 -0.217549 -0.405101 -0.165915 -0.0530203 -0.398179 0.526038 -0.00261384 -0.327322 0.136571 0.0218519 -0.0691811 -8.32464 -2.72275 -0.344524 -1.25024 0.829227 -2.26196 -0.672988 0.487265 -0.332399 -0.795364 0.00610105 0.01779 0.000676671 0.00258807 6.82664e-05 0 0 0 0 0 0.0231756 0.154646 0.00440615 0 0 0 0 0.000385631 0 -0.00607633 0 0 0.00427297 0.00745881 -0.0124003 0 -0.000787558 -0.00481436 -0.0942646 0 0 -0.0437809 0.000530736 0 -0.0109078 -0.0237383 0 0 -0.00278945 -0.000857921 0 -0.0227365 0 0.00102565 0 0 0.000475768 0 0 0.106245 0.00538593 0.0599696 0 0.061595 0.0447628 0 0 -0.0773454 0 0.0090032 -0.0768677 -0.0168008 0 0 -0.00872654 -0.00760909 0 0.0110177 0.0282311 0.0163366 0.068712 0.0127025 -0.0157721 0 0.0106544 0.0303673 0.0104819 -0.00405425 -0.025121 0 0 0 -0.292696 -0.0669394 0.113135 -0.00976218 0.0148158 -0.0264388 -0.00550067 0.00825488 -0.0145611 0.0263209 0 0 0 0 0 0 -0.295692 0 0.171486 0 0 0 0 -0.407473 0.632332 0 0 -0.0284489 0 0.010698 0 0.0284686 0 0 -0.41125 0 -0.382983 0.02493 0.226072 -0.0585027 0 0 0.150903 0 1.23508 0 2.16598 0.250815 0 0.276426 0.170668 0.036438 0 -0.0471035 0 0 0.0889155 0 -0.0164519 -0.678197 0 0 -0.0823822 0 0 0.0943322 0.642384 0.371144 0 0.383525 0 -0.219427 0.171649 -0.218068 -0.0465983 -0.0912398 -0.0392535 0.351705 0.0877842 -0.328968 5.17183 0.0638452 0 0 0 -0.031124 0.00890725 0 0 0 0 -0.0667733 -10.3808 -0.11582 -2.43913 -0.460288 0.542171 -1.90234 0.0301661 0.0375748 -0.0630841 -0.208611 0 0 0 0 0 0 +98 0 -0.467531 -0.3134 -0.110501 -0.0276116 0.209551 0.0398845 -0.10724 -0.367398 -0.715191 0.824687 0.101077 0.156687 0.200151 -0.420524 0.141227 0.642989 2.6719 0.576177 0.830189 -0.187658 0.430066 0.745443 -0.270539 0.664322 0.000337986 -0.0480273 0.180847 -0.0215299 -0.425277 -0.0615603 -0.473721 0.260615 1.66996 0.36816 -0.0189736 0.0383064 1.59539 3.67529 0.424458 -0.0112292 0.283374 3.18586 0.118084 -0.34882 0.257452 0.00641612 -0.0972454 1.54043 -0.260702 -0.386644 -0.503963 -3.91814 -0.934868 0.841248 -0.282751 -0.344979 0.605389 0.270422 -0.73127 -0.378913 0.297882 -0.0621543 -0.140109 -1.55724 -0.633339 0.0205086 2.24369 2.51595 0.64272 -0.604237 0.80697 0.3146 -2.30618 0.22562 0.0901858 -0.684251 -26.2209 -8.85803 0.434705 -8.58725 1.46621 -0.436623 -2.24016 0.0324439 0.0953729 0.399947 -1.10419 -0.671304 0.775854 -0.619114 0.449742 0 0 0 0 0 -0.110501 -0.0276116 -0.038015 0 0 0 0 -0.0232259 0 0.0314939 0 0 -0.0123608 -0.125779 0.144642 0 0.0229743 0.597522 0.148784 0 0 0.541795 -0.00913569 0 0.545473 0.74689 0 0 0.0721346 0.770068 0 0.722171 0 0.348928 0 0 0.0510403 0 0 0.989906 -0.319795 -0.169835 0 -0.522623 -0.0679946 0 0 -0.0737198 0 -0.0826354 0.451976 0.117313 0 0 0.0275008 0.0622163 0 -0.040388 0.191686 -0.083682 0.539063 0.0228712 0.0536037 0 -0.113722 -0.131773 0.514171 -0.220007 -0.127389 0 0 0 -4.20425 0.535744 -0.768962 -0.0983612 0.187672 -0.402244 0.0168027 -0.0320317 0.0686604 -0.0589912 0 0 0 0 0 0 0.209551 0 0.0398845 0 0 0 0 -0.010239 0.227832 0 0 0.320567 0 0.0431104 0 0.00561678 0 0 0.00899396 0 -0.0708401 -0.0485094 0.0300189 0.00554987 0 0 0.0632751 0 -1.1842 0 1.25958 -0.0432623 0 -0.401455 0.198095 0.00512223 0 -0.00252766 0 0 0.0198654 0 -0.242194 -0.129592 0 0 -0.00628402 0 0 -0.0608931 -0.263662 0.0405096 0 0.64284 0 -0.145064 -0.0632336 0.0593461 -0.205818 0.0807576 0.412009 -0.0721298 -0.0936245 -0.388104 -1.31109 0.0255687 0 0 0 0.121628 -0.0201083 0 0 0 0 -0.121347 -9.0089 -1.75344 1.00212 -0.562542 0.290144 -0.373063 -0.185385 0.115629 -0.211307 0.269167 0 0 0 0 0 0 +99 0 -0.365481 -0.496609 -0.381518 -0.344192 0.3127 0.108946 -0.61707 -2.88729 -1.10259 4.79747 0.0691524 0.994303 0.663367 1.4652 0.104639 -1.38036 -7.21709 1.41002 0.314704 0.12786 0.806968 0.714116 -0.834344 2.32003 -0.425076 -0.485447 -0.706219 -0.0254141 -0.327027 0.425409 -1.12413 0.164323 1.78214 -1.16553 -0.0333242 -0.000374356 -1.56286 4.31552 -0.0588784 0.00852622 1.01108 -3.44192 -0.188431 3.52104 1.28638 -0.00105859 -0.103259 0.386734 0.21395 -0.314246 1.35268 2.03282 -0.285945 0.361164 -0.167384 -3.39834 -1.16232 -0.00306017 -2.83042 -1.18903 2.92815 0.0556854 -3.11968 1.86524 0.74276 -0.60654 -2.72884 -1.98972 0.939646 -5.37353 1.1789 0.0544741 1.43595 -0.841524 0.107837 2.09114 -29.5731 -24.0149 10.1773 -14.6439 5.03228 -1.61824 -11.8196 4.76598 -3.90729 4.18493 -5.51716 1.32008 0.0211022 -0.272363 0.34584 0 0 0 0 0 -0.381518 -0.344192 0.00474627 0 0 0 0 0.00143342 0 -0.0184043 0 0 0.00455862 -0.0752654 0.152672 0 0.0126159 -0.51839 -0.134341 0 0 -0.0992895 -0.00544292 0 -0.27765 -0.761434 0 0 -0.00369315 -0.446797 0 -0.786547 0 0.0528957 0 0 0.0244583 0 0 -1.46356 0.0194606 0.0604458 0 0.0633261 -0.092508 0 0 0.312416 0 0.038285 0.101926 -0.0758005 0 0 -0.00612504 0.00864041 0 -0.012985 0.000579001 0.0146626 0.372869 -0.236092 0.0463372 0 -0.0128641 0.1581 -0.265864 0.203696 0.504507 0 0 0 6.36863 -0.361603 0.903112 0.149105 -0.284057 0.60571 -0.00466086 0.00841384 -0.0181948 0.0390788 0 0 0 0 0 0 0.3127 0 0.108946 0 0 0 0 -0.103709 -0.730414 0 0 0.552114 0 0.0799335 0 -0.00814896 0 0 -0.0239496 0 0.161222 -0.0784301 0.0750129 -0.00587924 0 0 -0.0435149 0 -3.45879 0 0.39086 -0.00443153 0 -0.643035 0.341027 0.0135162 0 -0.0142612 0 0 -0.100373 0 -0.423557 0.286074 0 0 0.0163153 0 0 0.0619559 -0.573512 -0.600108 0 0.121836 0 0.595303 -0.367672 0.429134 -0.897611 -0.0942254 0.72952 -0.547301 0.333492 0.804333 4.74997 0.104489 0 0 0 -0.0323343 -0.240778 0 0 0 0 0.19581 -0.326818 -3.47204 4.65634 -1.19599 1.23101 -0.458215 -0.526671 0.481694 -0.478888 0.540655 0 0 0 0 0 0 +100 0 -1.32565 -0.859246 -0.152719 -0.0965437 -0.130079 -0.0106337 -0.221347 0.93398 -0.696177 -0.30295 -0.117006 0.243052 0.270421 0.163481 -0.0728991 -2.89841 -10.4523 0.332973 -0.397151 0.349735 0.232995 0.739317 -0.351692 -0.0501738 0.0369306 -1.02423 -0.201655 0.0178888 0.490348 -0.0693671 -0.543404 -0.167682 2.11902 -0.583723 -0.125232 -0.0707437 -0.757591 8.0069 -0.658119 0.0606451 0.396455 -2.36012 -0.406632 1.52325 0.433412 0.00506479 0.0956603 -0.890739 0.696175 0.0554573 0.880209 5.91658 0.410873 -0.453106 0.147036 0.12811 -0.747641 -0.199825 0.188557 -0.493022 -0.199506 -0.0711992 -4.98556 1.77623 0.05292 0.304913 -3.45247 -0.788959 0.6138 2.81614 -0.264233 -0.474174 0.460934 0.140642 -0.0268376 -0.44822 -41.2527 -4.0919 -6.6075 -9.33162 7.24947 -13.7835 0.778662 0.971354 -1.84601 -1.2882 -1.85886 1.81353 -1.2807 0.803055 -0.518557 0 0 0 0 0 -0.152719 -0.0965437 -0.025177 0 0 0 0 -0.0141103 0 0.0397968 0 0 -0.00748197 -0.0946799 0.282724 0 0.0277205 0.14929 0.385458 0 0 0.253116 -0.00686967 0 0.683796 -2.09674 0 0 0.016324 -0.342201 0 1.36625 0 0.147329 0 0 0.0162124 0 0 2.91702 -0.194433 -0.103757 0 -0.348028 0.128116 0 0 -0.730094 0 -0.0412623 -0.610883 0.124634 0 0 0.0141964 0.0497284 0 0.0213609 -0.0848744 -0.0150252 1.50675 0.444451 -0.0615536 0 0.0254719 -0.334943 -0.110249 0.238112 -0.94794 0 0 0 -12.0605 0.708825 -2.05815 -0.282708 0.539247 -1.1603 0.00968793 -0.0184569 0.0399312 -0.147626 0 0 0 0 0 0 -0.130079 0 -0.0106337 0 0 0 0 0.0805991 -0.571479 0 0 0.171892 0 0.0216945 0 -0.0163343 0 0 0.115594 0 0.30003 0.0456279 0.0234575 0.0118756 0 0 -0.105872 0 -4.36392 0 4.91814 -0.262113 0 0.463052 1.14996 0.00430727 0 0.00844338 0 0 -0.0812696 0 -0.786896 0.414321 0 0 0.0448163 0 0 0.170802 -2.61635 0.199661 0 -0.458206 0 0.814147 -0.202027 -0.0102733 -0.133463 0.0291146 0.249718 -1.15728 0.0540949 0.359498 4.56706 0.0951017 0 0 0 -0.244245 -0.0492869 0 0 0 0 0.200589 -36.3338 -3.41974 -3.21413 -1.84981 1.58843 -3.92341 -0.0995319 0.084004 -0.258751 -0.292683 0 0 0 0 0 0 +101 0 0 0 -0.352155 0.115963 0 0 0 0 -4.65427 0.745299 0.388132 0 0.660747 0 0.15976 0 0 0.325674 -0.169584 0 0.123848 0 -0.780055 0.299235 0 0 -0.556581 0 0 0 -1.36313 0.0127236 0 -1.2437 0 0.0760689 -2.70194 0 0.585473 0 1.01725 -7.72675 -0.076781 0 0.75173 0 0 -1.1295 0.785454 0 1.28939 0 0.00497619 0.171672 -0.265436 0 -1.12469 -0.470906 -0.871333 -1.99534 0 0 0 0 1.33358 0 0.684136 -2.99727 1.43551 0.148628 0.508186 0.322142 3.54922 0 0 1.39125 0 -2.83613 0 -0.689282 -1.09402 0 -2.25072 0.435271 -0.8623 0 -3.01084 -1.37776 1.36737 -1.56709 0 0 -0.149782 -0.0142225 -0.0361297 -0.0334569 -0.352155 0.115963 0.00174826 0.0442378 0.180649 0.000252044 0.00808486 0.00465454 -0.000413517 -0.0166904 -0.0120415 0.00343458 0.00287214 -0.0792841 0.0449274 -0.172369 0.0238921 -1.65851 -0.130917 -0.00078167 0.170695 -0.911016 -0.00326048 0.00474827 -0.277452 -8.02615 0.0627293 0.00311858 -0.037651 -3.553 0.0253357 -0.877425 0.0160018 -0.441655 0.0192731 0.02279 -0.0410867 0.0429172 0.000346954 -2.25727 0.0803365 -0.0606913 0.00207061 0.0499676 0.0980251 -0.00721828 0.0100045 -0.868988 0.00616054 -0.0154179 2.94148 0.126619 0.034587 -0.0505653 -0.0137361 -0.0176939 0.0635781 -0.0215264 -0.508452 0.0905652 8.97952 0.129244 -0.0690747 -0.023995 0.147614 0.0937135 -0.0391248 0.380085 0.899167 0.03176 0.0660082 -0.00790208 21.1711 0.873884 1.77777 -0.0957523 0.122363 -0.106168 -0.0202704 0.00467411 -0.0178553 -0.0214389 -0.00377684 -0.00107944 -0.00644386 -0.00599507 -0.0104492 0 0 -0.0361297 0 -0.0334569 0 0 -2.21163 0 -2.70499 -0.0422204 0.00478253 -1.05475 0.00224583 -0.201066 -0.330602 -0.0435013 -0.0308779 -0.666831 0 0 0 0 -0.517596 0 -0.0688153 0 -0.341929 0 0 -0.0229561 0 0 -0.0475316 0 0 -0.0981043 -0.0116574 0 -0.0235057 0 -0.47723 0 0 0 -0.00246034 -0.0621583 0 0 -0.250688 0 0 0 -0.152447 0 0.843402 0 -0.157543 -0.0363776 -0.0555535 0 0 0.487581 0.0417144 -0.54999 0 0.025486 0 0.0318663 0 -0.410054 0.196527 0.173162 -0.114009 -0.195481 -0.0640574 0.386329 0 3.55649 0 3.78312 -0.302019 0 1.87174 -0.645298 0.466418 0 1.15287 -0.401549 0.411151 -0.0519434 0 0 +102 0 0 0 -0.400499 -0.730465 0 0 0 0 -5.45879 2.82077 -0.166031 0 0.303232 0 -0.227648 0 0 0.391477 -0.234826 0 0.0858834 0 -0.789026 0.185672 0 0 -0.529899 0 0 0 -1.8897 -0.76387 0 -1.22325 0 -0.0711983 -2.36413 0 0.255615 0 0.80753 -5.96591 0.0232166 0 3.12241 0 0 -1.66827 0.468371 0 1.13969 0 -0.11083 -0.962087 0.853479 0 -0.583308 -0.163352 -0.719662 -1.8825 0 0 0 0 1.66213 0 0.01881 -4.18982 3.48596 1.22944 0.250348 0.221718 2.53438 0 0 -0.424587 0 -5.21866 0 -4.96534 -0.326952 0 -5.93277 2.08377 -2.98562 0 -8.58359 2.07152 -2.40148 -0.100064 0 0 -0.499394 -0.0474198 0.0210796 -0.0319104 -0.400499 -0.730465 -0.0214572 -0.0999117 0.585441 0.000900033 -0.017323 -0.00817415 0.0410452 0.0338141 -0.0357104 0.0126514 0.0503782 0.119422 -0.0888643 -0.485799 -0.00981918 -0.469702 -0.0703179 -0.0023855 -0.522577 -0.0262737 0.00944462 -0.00257519 -0.0936825 -3.28673 -0.0951859 0.0155655 0.00639762 -1.17957 0.0735419 0.0197217 0.0524595 0.292031 -0.0172773 0.173604 0.0510419 0.167134 0.00340259 0.318004 -0.179716 0.568412 0.00632506 -0.348845 -0.825267 -0.0460019 0.0464462 0.447338 -0.0260306 -0.0622878 -2.26673 0.027331 0.0939888 -0.132629 -0.0934123 0.0207751 0.186873 0.162266 0.365337 -0.120171 4.53686 -0.454762 0.0124796 0.0167163 0.0517307 -0.0561747 0.473431 0.389409 -0.455903 0.0745512 -0.121568 -0.0243802 -2.98258 -3.45672 0.165798 -0.699741 -0.514526 0.419892 -0.0948602 -0.068744 0.00202018 0.0549336 -0.0128051 -0.0098093 -0.0107713 -0.0143103 0.0158556 0 0 0.0210796 0 -0.0319104 0 0 -0.878565 0 0.259265 0.145587 0.0279429 1.38979 0.0234266 0.232503 -0.0924476 0.0137634 0.0476387 0.850987 0 0 0 0 0.365007 0 0.137557 0 0.016572 0 0 -0.0673067 0 0 -0.010637 0 0 0.0696818 0.0013417 0 0.00700756 0 0.157676 0 0 0 0.00682807 -0.00889844 0 0 -0.0507626 0 0 0 -0.327818 0 0.388046 0 -0.281681 0.303192 -0.190817 0 0 0.0320153 0.0971916 -0.88134 0 -0.278694 0 -0.135371 0 -0.276186 -0.17608 0.129543 -0.259258 0.0238062 0.0424238 -0.255611 0 -5.26066 0 -3.06476 0.244137 0 -1.5911 0.547417 -0.463141 0 -1.42274 0.5913 -0.335059 0.0360748 0 0 +103 0 0 0 0.027516 -0.116923 0 0 0 0 1.20082 -0.512625 -0.131808 0 0.0450792 0 0.0128034 0 0 -0.125319 0.2207 0 -0.0134435 0 0.250294 -0.155653 0 0 0.0249599 0 0 0 0.685703 0.0728464 0 -0.000971974 0 -0.0297493 0.868714 0 -0.280474 0 0.0711985 2.27376 -0.0969495 0 0.202058 0 0 1.14501 0.10371 0 -0.605361 0 1.02858 0.612514 -0.469525 0 0.635411 -0.11592 0.444666 0.3572 0 0 0 0 -0.185103 0 -0.258552 0.768922 -2.54965 0.426588 -0.247579 -0.22645 -1.32939 0 0 -2.00821 0 2.72112 0 0.172762 0.448562 0 1.25493 -0.749524 1.11341 0 0.471308 -0.200565 0.315473 0.114217 0 0 -0.0628595 -0.00596881 -0.0236714 0.0256094 0.027516 -0.116923 0.0060869 -0.0900349 0.140321 0.000108953 -0.0140453 0.00200939 0.017419 0.095355 -0.00481727 0.00150529 0.0100691 0.0233181 0.200913 -0.0676061 0.0328738 -0.214796 0.502515 -0.000316298 -0.565466 0.00441008 0.00162746 -0.00775259 0.163555 0.407234 -0.178699 0.00511113 -0.135461 -0.174572 0.0106295 0.459326 0.0101304 0.0359027 -0.0380705 0.0813919 -0.0445334 0.0192911 0.00107691 1.49855 0.0347731 0.141968 0.000868809 0.122094 -0.194363 -0.0151176 0.0146963 1.47663 -0.0337526 0.0165735 1.77365 -0.0519787 0.0133798 -0.0184598 -0.0168217 -0.00790582 0.0354884 0.141036 0.00830338 -0.126059 7.56799 0.224639 0.0314189 0.0647129 0.031835 -0.263863 1.5029 0.0609484 -0.669145 -0.00227198 -0.151504 -0.00321162 -14.055 -1.36441 -3.1292 -0.151774 -0.425399 0.713204 -0.0145991 -0.0399712 0.0671695 0.050282 -0.00159635 -0.00418481 0.00636873 9.80739e-05 0.0297668 0 0 -0.0236714 0 0.0256094 0 0 0.294537 0 0.791771 -0.0309638 0.0736124 -0.0751752 -0.00523524 -0.0444577 0.0736096 -0.00577371 0.0946242 -0.182695 0 0 0 0 -0.0634938 0 0.542094 0 0.0848939 0 0 0.143886 0 0 0.0134087 0 0 -0.0182389 0.0043674 0 0.0175839 0 0.153853 0 0 0 0.0115608 0.0318762 0 0 0.0232988 0 0 0 0.101453 0 -0.223771 0 0.77978 -0.276667 0.869331 0 0 0.366159 -0.140299 0.403418 0 -0.082848 0 0.176442 0 0.168796 0.21509 -0.0545224 0.14786 0.0394036 -0.130019 -0.235774 0 1.32996 0 0.71162 -0.861536 0 0.379631 -0.303254 0.000533111 0 -0.0261553 -0.0499469 -0.00432608 -0.012814 0 0 +104 0 -0.167967 -0.0601262 0.34633 0.158126 -0.24275 -0.119082 0.523029 0.706444 0.693517 -1.77477 -0.0113248 -0.233525 -0.560211 -0.131214 0.176843 -0.684944 -4.9249 -0.600181 0.74917 -0.810152 -0.297742 -0.128528 0.698353 -0.635031 0.163344 -0.0795852 0.559091 0.00482274 0.233532 0.019918 0.832224 0.347174 -0.303186 0.973937 0.114057 0.0658917 2.27067 -1.74999 -0.29603 -0.237199 -0.750782 4.25625 0.141884 -1.7137 -0.597409 -0.0681217 0.0377158 1.50922 0.0367886 0.446263 -0.608946 -0.0566174 -0.751981 0.87266 -0.418082 -0.706133 1.01288 0.582268 0.707579 0.547831 -0.0344389 -0.280499 0.518103 0.121053 -0.302817 -0.444466 1.05564 1.68506 -0.479221 -1.05164 -0.00476922 -0.229184 -2.79648 -0.634773 0.174936 0.0822755 -0.639232 2.83638 -0.62388 3.80408 -0.744377 0.660841 2.53853 -1.3649 1.4485 -1.46871 2.28236 0.0577743 -0.182958 0.328858 -0.205726 0 0 0 0 0 0.34633 0.158126 0.00228569 0 0 0 0 -0.00195371 0 0.0178176 0 0 0.00470881 0.0560114 0.00694145 0 0.00323128 0.749137 0.0937746 0 0 0.315246 0.00296366 0 0.0414201 2.63782 0 0 0.0399189 1.40668 0 0.590946 0 0.261765 0 0 0.0368112 0 0 1.67028 -0.0368637 0.0891498 0 0.0435258 -0.214864 0 0 0.652132 0 0.00167563 -0.705056 -0.00713926 0 0 -0.01014 -0.00588268 0 0.0270417 0.144121 -0.00727727 -2.21057 -0.0567267 0.0475174 0 -0.011136 -0.0306885 0.127646 -0.106633 -0.0551135 0 0 0 -16.5227 -1.2252 -1.37515 -0.0800922 -0.06948 -0.143281 -0.00428119 -0.00374481 -0.00736159 -0.00927544 0 0 0 0 0 0 -0.24275 0 -0.119082 0 0 0 0 -0.0223636 0.185344 0 0 -0.576463 0 -0.0618405 0 -0.0106484 0 0 0.043026 0 -0.128308 0.027331 -0.0376881 0.00832235 0 0 -0.097213 0 -1.66137 0 -2.27568 -0.044489 0 0.217586 -0.628587 -0.00251574 0 -0.00567876 0 0 0.0201902 0 -0.286402 -0.332403 0 0 -0.0227472 0 0 -0.0914261 0.442675 0.0987957 0 -0.347348 0 0.326063 0.191405 -0.14515 0.0514836 -0.0284963 0.29742 -0.329866 0.0551254 0.247576 0.400258 -0.0424188 0 0 0 0.00097744 -0.0272054 0 0 0 0 -0.00165839 14.3192 3.07541 0.0388356 0.999907 -0.65323 0.928572 0.309437 -0.227123 0.277248 -0.106921 0 0 0 0 0 0 +105 0 -1.09458 -0.304431 -0.19365 -0.270577 0.0702304 0.0527487 -0.560306 -1.02551 0.788407 2.88118 0.17363 0.124734 0.246765 0.537765 0.240216 -0.600051 -0.802118 0.912345 0.80194 0.211466 0.411059 0.100426 -0.240636 1.03774 -0.3586 -0.297982 0.433877 -0.0417064 -0.506604 0.0509389 0.00741443 0.534206 0.286744 0.819255 -0.157149 0.047659 2.43257 2.66865 0.425372 0.0638645 0.288651 3.84269 0.0872729 1.74156 0.267751 0.0322692 -0.141454 1.71065 -0.475726 0.493138 0.780742 0.56876 -0.394452 0.712872 -0.210973 1.09849 0.833584 0.0676822 -1.20396 0.276164 0.804086 0.726265 -1.21358 1.03827 -1.32767 0.0603748 -3.19403 1.81804 -1.08152 -0.492657 0.250038 0.330912 -3.05058 0.494818 -0.0058865 -0.455613 -5.03582 -3.51025 0.859499 -4.30724 2.20587 -2.47154 -4.82921 2.25187 -1.67626 0.716527 -1.02292 -0.585004 0.849787 -0.617898 0.446283 0 0 0 0 0 -0.19365 -0.270577 -0.00159166 0 0 0 0 0.00254978 0 0.0604802 0 0 0.0123531 0.1023 0.147469 0 0.0303848 0.519433 0.299307 0 0 0.849271 0.00547662 0 0.778936 4.94123 0 0 0.0952479 1.75552 0 1.67883 0 0.269793 0 0 0.0274993 0 0 3.96584 0.0466794 0.22779 0 -0.0372515 -0.33881 0 0 1.37578 0 0.0123666 -0.633059 -0.0199407 0 0 -0.0245063 0.0141331 0 0.0725467 0.218466 -0.0400335 -4.55195 0.0062145 0.155749 0 -0.0555247 -0.064478 0.543047 -0.352412 -0.00341084 0 0 0 -40.8991 -2.97642 -3.5696 -0.199436 -0.156823 -0.484201 -0.00982612 -0.00725635 -0.0316677 0.00744659 0 0 0 0 0 0 0.0702304 0 0.0527487 0 0 0 0 -0.00130048 -0.633421 0 0 0.550483 0 0.0712896 0 -0.00116236 0 0 0.0927374 0 0.228279 -0.0184541 0.105218 0.0116695 0 0 -0.00513051 0 1.97765 0 2.91769 0.178168 0 -0.198193 0.803153 0.0154033 0 0.00292275 0 0 -0.0748293 0 0.620409 0.575671 0 0 0.0805322 0 0 0.0370738 0.137556 -0.0537871 0 -0.22848 0 0.389692 -0.276836 0.15955 0.0229988 -0.00825525 -0.375108 -0.267747 0.135168 -0.0382344 -1.36827 0.022601 0 0 0 -0.171708 -0.119336 0 0 0 0 0.211637 -16.9011 -2.84822 0.271259 -1.06067 0.78062 -1.21945 -0.380792 0.275897 -0.239447 0.0864762 0 0 0 0 0 0 +106 0 0.157581 0.0748182 0.0136391 -0.021818 -0.065533 0.0323821 -0.277848 -0.65946 0.130308 0.416296 0.063135 0.153766 -0.0288742 0.174873 -0.0107521 0.825236 4.17146 0.0222579 -0.0892307 -0.638376 0.000880078 -0.013883 0.0424144 0.113672 -0.0972791 0.219766 0.0805336 -0.0195493 -0.233552 0.0580814 0.0794162 -0.0464524 -0.127439 0.219606 -0.0263726 0.0314156 0.109431 -0.440397 0.209589 -0.102387 -0.0477498 0.243858 0.0916095 0.79304 -0.058442 -0.00293816 -0.0705269 -0.149935 -0.164976 -0.121391 -0.0371788 -8.11265 0.0339591 -0.0734699 -0.0170859 -2.83927 0.122562 -0.368668 -0.0310629 0.0880978 -0.751501 -0.0304541 -0.570561 -0.455334 0.0420139 -0.22019 0.0654368 -0.273022 -0.155151 -0.169434 0.0778061 0.091868 -0.371989 -1.39072 0.0776162 0.751601 3.99282 -0.420157 2.2523 0.452045 -0.551024 1.23144 -0.432365 0.115104 -0.062885 0.610521 0.223273 -0.450027 0.471876 -0.2908 0.205743 0 0 0 0 0 0.0136391 -0.021818 -0.000250189 0 0 0 0 4.92095e-05 0 -0.0313686 0 0 0.00149218 0.0151604 -0.0876374 0 -0.0156012 0.12434 -0.171003 0 0 0.377375 0.000809019 0 -0.0723852 0.912308 0 0 0.064599 0.359725 0 -0.121325 0 0.218614 0 0 0.0366425 0 0 -0.235634 0.000751204 0.0272803 0 -0.00615021 -0.0848092 0 0 -0.522635 0 0.00110964 -1.28174 -0.00597467 0 0 -0.00322391 0.00152144 0 -0.0375984 -0.389029 -0.0204113 -3.53212 -0.086863 0.0169772 0 0.00903687 0.0386577 -1.24245 -0.00834693 -0.119277 0 0 0 2.0998 -0.0366049 0.909823 0.00995242 0.00684469 0.0372327 -0.00127647 -0.00126081 -0.000948725 0.0116027 0 0 0 0 0 0 -0.065533 0 0.0323821 0 0 0 0 -0.0104273 0.37749 0 0 -0.0940739 0 -0.0143755 0 0.0114347 0 0 0.171405 0 -0.011445 0.0200883 -0.00336306 0.0237331 0 0 0.0881677 0 2.48599 0 0.0389009 -0.146865 0 0.151138 -0.0713019 -0.00203713 0 -0.000995748 0 0 0.0481773 0 0.096085 0.753759 0 0 0.109175 0 0 -0.089065 0.0314882 0.114015 0 -0.0445892 0 -0.250181 0.0773392 -0.0920406 -0.0206038 -0.144464 -0.269199 0.286597 0.0325598 -0.332057 -2.71511 0.110978 0 0 0 0.0596287 0.0235302 0 0 0 0 -0.113103 -1.22574 0.476542 -1.24564 0.0058667 0.0118853 0.00293655 0.0228443 -0.0125301 0.0320838 -0.0516481 0 0 0 0 0 0 +107 0 0 0 0 0 0.618044 0.400796 -1.90553 -3.85534 0 0 -0.779752 2.2837 0 3.7507 -0.140328 0 0 0 -0.159278 7.04203 0 0 0 0 -0.870912 0 0 -0.0758199 4.6649 1.25451 0 -0.575663 0 0 -0.611128 -0.107602 0 0 -2.22084 3.48988 0 0 -0.437064 7.59461 0 1.40156 1.25499 -0.37771 0.891945 -0.903494 0.911412 0 0.167954 -0.323301 -0.0523329 -0.548103 0.465027 -0.0660231 0 0 2.88724 -7.36493 0 0.18789 0.235397 -0.715174 0 0 0 0 0.346001 -2.19456 0 -5.00465 0.24271 0 0 0 7.13214 0 3.31865 -5.12332 0 1.20438 -2.69126 6.26219 0 1.25256 -2.95186 6.39827 -13.2648 0 0 0 0.246166 0.0548499 0 0 0 -0.0117159 0 0 -0.00271325 0 0 0.0260493 0 0 0 0 0.0719923 0 0.0171917 0 0.109071 0 -0.040395 0.165584 0 0.00271884 0 0 0.0715008 0 0.0247344 0 0 0 0 0.0640003 0.0134565 0 0.0108242 0 0 0 0 0 0 0 0 0 0 -0.0631832 0 0 0 0 0 0 0 0 0 0 -0.0294383 0 0 0 -0.0318411 -0.0165817 0 -0.0811395 -0.0390743 0 -0.0137964 0 -0.0362656 0 0 0 -0.12489 0 0 -0.081871 0 0 0 -0.00514104 0 0 0 0 -0.0061628 0 0.618044 0.246166 0.400796 0.0548499 -0.189195 -0.0723093 0.391676 -0.486783 0.129996 -0.0502359 -0.0263135 0.221114 -0.00732424 -0.0301813 0.0648542 -0.0392342 -0.0648164 -0.303391 1.40687 -0.973712 2.08243 -0.184495 0.431703 0.103661 -0.174117 0.0199267 -0.278681 -0.0234372 10.08 -0.103109 6.11575 3.81351 0.00945555 -1.02965 3.77079 0.0312062 0.00127547 -0.0959799 -0.00338053 0.315778 0.0028455 0.000218164 6.44568 0.713829 -0.00803811 0.0043196 -0.0312925 -0.141499 -0.0583291 0.113954 0.943157 -0.472259 0.0966199 -1.8612 -0.11173 -0.708084 0.00715865 -0.0776739 -0.499799 -0.241152 1.31599 -0.0263793 0.0454659 1.31494 3.59647 -0.0642897 0.946361 -0.187149 -0.0177591 0.212581 0.0566652 -0.00393305 0.102402 -0.167267 0.0174251 -0.00605017 -35.328 -4.81899 5.50487 -0.464564 1.42917 -1.93241 0.158901 0.21005 -0.360685 0.749992 0.133034 0.0940909 -0.209192 0.399426 -0.374824 0 +108 0 0 0 0 0 0.221426 -0.0154176 0.604975 0.935972 0 0 0.000321165 -0.0586662 0 1.07967 0.0301888 0 0 0 0.078847 6.85289 0 0 0 0 0.173085 0 0 0.143142 0.231454 0.00978403 0 0.190211 0 0 0.125265 -0.00696683 0 0 -0.441583 2.25719 0 0 -0.153807 1.91703 0 0.502067 0.155119 0.482073 0.302784 -1.18036 0.312968 0 -0.0994709 0.034659 -0.0860479 -0.103869 -0.0180668 0.0610587 0 0 -1.54089 -7.48901 0 -0.0741292 0.159236 -0.919936 0 0 0 0 0.00620309 -0.703717 0 -1.90863 0.516975 0 0 0 -1.13176 0 1.25018 -2.56185 0 0.462867 -0.576642 -0.538548 0 0.563523 -1.01162 1.88658 -1.34614 0 0 0 0.0250666 0.00558525 0 0 0 0.0276955 0 0 0.00320008 0 0 0.0177135 0 0 0 0 0.0987738 0 0.011658 0 0.150115 0 0.233008 0.035266 0 0.000882588 0 0 0.00166635 0 0.00451275 0 0 0 0 -0.0601763 0.00386147 0 -0.00612372 0 0 0 0 0 0 0 0 0 0 0.0704746 0 0 0 0 0 0 0 0 0 0 0.124367 0 0 0 -0.011969 -0.00100105 0 0.00744592 0.141462 0 0.0359189 0 0.0468651 0 0 0 -0.171887 0 0 -0.00190804 0 0 0 -0.00647963 0 0 0 0 -0.000143627 0 0.221426 0.0250666 -0.0154176 0.00558525 0.37232 0.0114313 0.0398836 0.908887 -0.184339 -0.00511541 0.00522698 -0.159401 -0.000745812 -0.0227832 0.00660397 0.00542606 -0.00898283 -0.0308937 1.19622 0.375131 0.0737736 0.243815 -0.0507544 0.143728 0.00197735 0.0969699 0.0585775 0.0045701 4.07435 -0.112073 0.368005 0.451919 0.000962839 1.45871 0.295906 -0.00708418 -0.00153559 0.154496 -0.0172119 0.427635 -0.0211167 0.017508 1.89582 2.22146 -0.000597073 -0.00997577 0.272976 0.0392801 -0.116056 -1.1518 1.28364 -0.00648382 0.0209329 -3.52041 -0.0113772 0.351772 -0.0437288 0.358276 0.303307 -0.0929801 1.55117 0.224143 0.100844 1.00021 -9.46824 -0.0143924 0.272647 -0.0707902 0.0864068 0.283397 0.0467043 0.0612069 0.0104274 -0.146051 0.0109681 0.0369576 -2.1258 0.208849 -3.28046 0.00854659 0.666508 -2.48863 0.0560648 0.163507 -0.137666 -0.796747 0.0135465 0.109287 -0.163464 0.236449 -0.525812 0 +109 0 0 0 0 0 0.138221 -0.214971 1.12623 1.2335 0 0 -0.190345 -1.56056 0 -2.77828 -0.0614734 0 0 0 -0.0224752 2.63934 0 0 0 0 0.678567 0 0 0.662939 4.048 -1.17922 0 -0.452154 0 0 0.567997 -0.0372114 0 0 -0.886421 0.593311 0 0 -0.194719 -2.95097 0 -0.362102 1.53823 -0.297229 0.365071 -1.90842 0.272154 0 0.010945 -0.0970224 0.163505 -1.26951 -0.86554 -0.224554 0 0 -0.524472 -3.41499 0 -0.272668 0.367478 -0.131763 0 0 0 0 0.19455 -0.782408 0 1.43035 -0.0182009 0 0 0 -3.56744 0 0.47701 -5.45458 0 0.345899 -1.61289 -2.09003 0 0.688014 -2.09357 3.67252 -10.9454 0 0 0 0.0916471 0.0204205 0 0 0 -0.03462 0 0 -0.00474054 0 0 0.0106805 0 0 0 0 0.0328115 0 0.00705146 0 0.0496738 0 -0.255803 -0.271238 0 0.000244866 0 0 -0.0296814 0 -0.026858 0 0 0 0 -0.0505706 -0.0015814 0 -0.00403086 0 0 0 0 0 0 0 0 0 0 -0.0185065 0 0 0 0 0 0 0 0 0 0 -0.047567 0 0 0 -0.0228429 -0.00499539 0 -0.00322454 0.108675 0 -0.0241134 0 -0.0970946 0 0 0 -0.0568784 0 0 0.0339863 0 0 0 -0.00195787 0 0 0 0 0.0025583 0 0.138221 0.0916471 -0.214971 0.0204205 -0.345432 -0.0217537 0.14582 0.00851306 -1.22387 -0.0187027 -0.0235824 -0.352847 -0.0027268 -0.058385 0.0241451 -0.0822215 -0.0462559 -0.112952 0.826716 0.599387 -1.27741 0.178912 -0.177926 0.0660313 -0.236465 0.0970381 -0.727817 0.0198037 -8.36202 -0.23239 -3.0433 -1.62933 0.00352028 -0.0953443 -1.95864 -0.0250731 -0.00165073 0.0892545 -0.0170933 0.639267 -0.136785 0.0118709 -3.69099 1.22747 -0.00511835 -0.0219456 0.131621 0.10124 -0.0971339 0.469375 -0.723205 0.0828089 0.101119 -1.56326 -0.0415967 0.599324 -0.283615 0.323708 0.131217 -0.0688787 -0.322644 -0.460152 0.0665066 0.151542 -8.53979 -0.35467 0.278369 -0.106933 0.112708 -0.271325 0.119016 0.0560927 0.038124 -0.0315627 -0.0168894 0.239699 17.5798 3.09933 -0.276257 0.993463 0.518976 -2.28461 0.154567 0.277748 -0.592839 -0.00099641 0.0495281 0.179207 -0.279717 0.393912 -1.26206 0 +110 0 1.07195 0.00864504 0.0643405 0.244612 -0.0157802 -0.219406 1.75967 3.27397 0.439353 -1.41093 0.372868 -0.919563 -0.0110692 -1.05371 -0.000363494 0.678608 5.16697 -0.124019 -0.0214165 -5.80583 -0.0173059 0.506791 0.0142903 -0.293272 0.839967 -0.210899 -0.0327662 0.150234 -0.906501 -0.523445 0.0849465 0.191867 0.730585 0.220716 0.563139 0.0565723 0.0740775 -1.1341 0.788081 -2.35163 -0.0657993 1.50121 0.132134 -3.09222 -0.340322 -0.984407 -0.189226 0.348885 -0.340033 1.05295 -0.807053 1.59263 0.0245429 -0.022494 0.084911 1.40999 1.09145 0.668445 0.478232 0.129668 -1.68433 3.53209 0.359451 -1.51079 -0.620149 0.208451 0.619891 0.224243 -0.141479 1.01346 -0.426094 0.700197 -0.239041 0.329916 -0.393167 0.30232 4.58377 2.83867 -3.69909 1.15512 -1.57532 3.3291 0.834785 -1.09937 2.039 -3.55732 0.190162 -0.359222 0.614332 -1.20649 1.92353 0 0 0 0 0 0.0643405 0.244612 0 0 0 0 0 0 0 0.00365864 0 0 0 0 0.00836177 0 0.000960463 0.0398378 0.0375799 0 0 -0.0945266 0 0 0.000995329 0.285278 0 0 -0.0140861 0.115989 0 -0.0200002 0 -0.02759 0 0 -0.00413664 0 0 -0.0634844 0 0 0 0 0 0 0 -0.0425749 0 0 -0.166681 0 0 0 0 0 0 0 -0.0180662 0 -0.45242 0 -0.00788781 0 0 -0.000566379 -0.103218 0 -0.0474324 0 0 0 0.145384 0 -0.0426392 0 0 0.00273593 0 0 0 -0.00161955 0 0 0 0 0 0 -0.0157802 0 -0.219406 0 0 0 0 0.0635911 0.963632 0 0 -0.73449 0 -0.0763657 0 0.0495962 0 0 -0.966744 0 -0.625367 0.0710143 -0.246609 -0.0787205 0 0 0.474425 0 -1.97991 0 -4.65733 -1.42376 0 0.404781 -1.62779 -0.0263717 0 0.0199758 0 0 0.0937949 0 -1.94435 -1.68797 0 0 -0.150285 0 0 -0.0810678 -1.11572 -0.0586159 0 2.27894 0 -0.792254 0.0988673 -0.0776611 0.820113 0.101019 -2.06008 0.296742 -0.169993 0.185416 5.98166 -0.247665 0 0 0 0.364657 0.140241 0 0 0 0 -0.163318 29.1572 6.37103 -3.59303 1.36996 -0.977621 1.45033 0.266403 -0.216905 0.30798 -0.214306 0 0 0 0 0 0 +111 0 -0.478703 0.684775 0.0263918 0.100337 -0.0400696 0.196312 -0.658728 0.268859 0.180219 -1.01014 0.316316 0.820241 -0.0045405 0.784569 -0.0109004 1.86655 4.7475 -0.0604862 -0.0495751 -0.362711 -0.0164985 -1.16244 0.00586176 -0.279525 -0.766115 0.916419 -0.0242334 -0.801144 -1.25603 0.686849 0.0348442 -0.00824141 -1.76117 0.0210009 -0.776842 0.0434074 -0.020167 -2.78905 0.337818 0.37389 -0.0269902 0.462594 0.0559999 -0.268528 -0.139597 0.622009 -1.15989 -0.186754 -0.144251 0.241846 -0.732229 -1.89392 0.0808817 -0.0741293 0.0507374 -0.02019 0.380958 0.567341 0.418135 0.0531885 0.892169 -0.813522 1.43758 0.202093 0.0492526 1.6136 0.268078 -0.0631254 -0.0580334 0.675544 -0.327322 0.163178 -0.0313269 -0.173491 0.699057 -0.0479694 9.77067 3.29996 -0.807838 1.12314 -1.12067 3.02293 0.789042 -0.706813 1.39855 -0.521946 0.0780025 -0.151416 0.499024 -0.871587 2.66521 0 0 0 0 0 0.0263918 0.100337 0 0 0 0 0 0 0 0.00546234 0 0 0 0 0.00305617 0 0.000883857 0.00947099 0.0123924 0 0 0.0507429 0 0 0.0323003 0.216292 0 0 0.00699329 0.0259369 0 0.144981 0 -0.000247709 0 0 -0.00011754 0 0 0.365883 0 0 0 0 0 0 0 -0.0722086 0 0 0.0262036 0 0 0 0 0 0 0 -0.000439114 0 0.267777 0 -0.00340187 0 0 -0.000698068 0.0490752 0 0.00157904 0 0 0 -0.837899 0 -0.0164441 0 0 -0.0157681 0 0 0 -0.000534065 0 0 0 0 0 0 -0.0400696 0 0.196312 0 0 0 0 0.278255 0.74634 0 0 -0.402383 0 -0.0399399 0 0.0245683 0 0 -0.438815 0 -0.481579 0.103559 -0.282134 -0.0387686 0 0 0.220292 0 0.00965071 0 1.05621 -0.198056 0 0.679641 -0.369149 -0.0299663 0 0.0336422 0 0 0.0788503 0 -0.333535 -1.17114 0 0 -0.101053 0 0 -0.0483965 1.93152 -0.0912808 0 2.01158 0 0.0857312 0.0735212 -0.000400961 0.515816 0.102196 -1.18895 0.566004 -0.0972702 -0.220896 5.99219 -0.164181 0 0 0 0.216665 0.105015 0 0 0 0 -0.161461 -7.69041 2.28109 -4.85952 0.285353 -0.0918154 -0.939478 0.130714 -0.0868928 0.0790131 -0.286011 0 0 0 0 0 0 +112 0 0.188827 -0.487886 0.0242602 0.0922333 -0.275055 -0.146701 0.20312 1.11551 0.165663 -0.90274 0.0902781 -0.330226 -0.00417377 -0.699765 -0.00693399 -1.68951 -6.42167 -0.160991 -0.0585576 -3.26939 -0.0189275 0.633035 0.00538831 -0.149879 0.254318 -0.658306 -0.025477 -0.113311 -0.986457 0.00513448 0.0320299 0.01738 0.848018 -0.111873 0.204042 0.0151093 -0.0035189 1.44739 0.0937806 -1.45135 -0.0248103 -0.244086 0.0246737 -3.25054 -0.128322 -0.466467 -0.51948 -0.276691 -0.0615215 0.124919 -0.636296 -6.33948 0.0968946 -0.0888054 -0.142819 0.299772 -0.989488 -0.777706 0.254401 0.0488925 0.916525 6.80283 0.765778 0.0375876 0.19411 1.08998 0.438448 -0.086094 -0.0533461 0.0929098 -0.502954 -0.134267 0.00539734 3.34169 0.693432 -1.82162 -11.9192 -0.800191 -4.23525 -0.261232 -0.0941306 -2.04837 0.478259 -0.663328 1.35982 -1.87461 0.0717024 -0.0786289 0.411746 -0.502532 2.09319 0 0 0 0 0 0.0242602 0.0922333 0 0 0 0 0 0 0 -0.00297685 0 0 0 0 -0.00113643 0 -0.000176547 -0.0084966 -0.0205171 0 0 -0.201015 0 0 0.00226891 -0.816506 0 0 -0.0299659 -0.108492 0 0.00154429 0 -0.0308527 0 0 -0.0046085 0 0 -0.000827154 0 0 0 0 0 0 0 -0.025488 0 0 -0.0974638 0 0 0 0 0 0 0 -0.0490889 0 0.225474 0 -0.000224176 0 0 -0.00555861 -0.111814 0 -0.00372133 0 0 0 0.00189424 0 0.023498 0 0 3.56471e-05 0 0 0 0.000884208 0 0 0 0 0 0 -0.275055 0 -0.146701 0 0 0 0 0.204229 0.298032 0 0 -0.461373 0 -0.0507006 0 0.0181012 0 0 -1.49171 0 0.745333 0.101577 -0.110007 -0.200582 0 0 0.168908 0 -4.52336 0 1.21816 0.0875626 0 0.887663 0.892409 -0.0116213 0 0.014262 0 0 0.0271516 0 -1.03348 -2.79537 0 0 -0.364765 0 0 1.57635 2.38295 0.206098 0 3.98011 0 0.843511 -0.0147763 0.00350299 0.700798 0.0286741 -1.1534 0.146545 -0.00372828 -1.07869 9.19888 -0.0717213 0 0 0 -0.333569 0.0939042 0 0 0 0 -0.0230148 -7.59135 1.65432 -4.3935 0.483489 -0.375839 -0.728938 0.246448 -0.190457 0.182927 -0.568655 0 0 0 0 0 0 +113 0 0.00411173 0.869319 -0.050394 -0.226705 0.230464 0.0457535 -0.00543854 -1.20166 0.0269255 0.847227 -0.0177621 1.67887 0.0127497 0.87884 -0.00182179 4.85972 9.11015 0.0457021 -0.00702844 0.768276 -0.0649012 -1.9679 -0.00224434 -0.0198136 -0.0545178 2.54514 -0.0806364 0.00814997 0.0546973 0.283251 -0.0078493 -0.0167792 -2.44991 -0.185898 0.091077 -0.00696089 0.0604958 -4.55901 -0.112406 0.142072 0.081328 -0.904914 -0.0533097 4.54295 0.429002 0.0246969 0.0329595 -0.00688342 0.140064 -1.19133 0.695185 -1.86377 0.172195 0.249674 -0.136604 -3.91578 0.291061 0.0277188 0.00897543 -0.194148 -1.42432 -0.439378 1.78117 -1.46955 0.289758 -1.27481 -0.823891 -0.346901 -0.128688 1.28477 0.161147 0.11532 0.227893 -1.37625 -0.135554 3.15979 20.794 0.701343 3.82231 0.732747 -0.165358 4.2152 -1.72173 1.06623 -1.26658 1.22929 -0.404172 0.0649453 -0.152356 0.0346982 -0.0322802 0 0 0 0 0 -0.050394 -0.226705 0.00143117 0 0 0 0 0.000545493 0 -0.0693268 0 0 0.00677729 0.0238806 -0.106414 0 -0.0159298 0.0569404 -0.471942 0 0 -0.102218 0.00141916 0 0.0390953 0.189996 0 0 -0.0288288 0.161867 0 0.132987 0 -0.0305657 0 0 -0.00684635 0 0 0.386792 0.00836179 0.1149 0 0.0107242 -0.0930204 0 0 0.109364 0 0.00353637 -0.0451294 0.0234307 0 0 -0.0115864 -0.00229828 0 0.0405964 -0.108227 0.0205006 1.21474 -0.118147 -0.103059 0 0.0119447 -0.182189 0.281718 -0.01649 0.283735 0 0 0 -2.75332 -0.377047 1.43536 0.0332777 -0.043662 -0.220465 -0.00748025 0.00996243 -0.0522745 0.333062 0 0 0 0 0 0 0.230464 0 0.0457535 0 0 0 0 0.0445732 -0.390707 0 0 -0.0313015 0 -0.0141357 0 -0.000958065 0 0 -0.000527866 0 -0.017409 0.0341124 -0.00892877 -0.000408389 0 0 -0.038428 0 1.25401 0 -0.343138 0.114948 0 0.188141 0.0220071 -0.00181368 0 0.0063466 0 0 -0.0192353 0 0.536796 0.0744718 0 0 0.00440672 0 0 -0.146605 -0.0927234 -0.0598297 0 -0.63513 0 -0.427841 -0.092367 0.0633928 -0.275701 0.0519632 0.417273 0.0161237 -0.000980966 0.57211 0.885484 0.00698762 0 0 0 -0.0487086 -0.028631 0 0 0 0 0.0983654 0.972798 -0.411973 0.148335 0.0344715 0.0521086 0.25728 -0.038295 0.0501437 -0.051477 -0.0982952 0 0 0 0 0 0 +114 0 1.41429 0.160819 0.0349255 0.168758 0.0478386 0.073613 -0.676353 -1.32284 0.191623 -1.4372 -0.0984496 2.34262 -0.000934046 0.282258 -0.0113617 2.42366 10.1279 -0.447134 -0.0419627 0.0337414 -0.036082 0.537004 0.00482111 -0.178277 0.0774431 0.204028 -0.12242 -0.0355991 -0.216097 0.171263 0.0310752 -0.0843503 -0.65925 -1.72221 -0.058035 -0.0149642 0.06934 -8.18411 -0.382602 0.0430747 -0.00287301 -2.50802 -0.0639742 3.92626 0.00875406 0.0195678 -0.107315 -0.334486 0.0567464 -2.04259 0.191729 -17.2025 0.0138853 -0.058444 0.0733376 -10.1871 -0.864647 -0.0409449 0.130489 -0.0674916 0.736979 0.162193 3.80536 -2.77821 0.78495 -0.220182 2.98872 0.0254725 -0.0977628 0.0164686 0.446406 -0.0868363 0.922347 -0.898323 0.151541 4.56132 34.1565 8.19845 2.97994 6.11285 -3.89711 11.1683 0.872903 -0.303188 0.53029 3.25769 -0.00824739 0.180473 0.0992119 0.106856 0.127532 0 0 0 0 0 0.0349255 0.168758 -0.00747045 0 0 0 0 -0.00102396 0 -0.0444872 0 0 -0.001324 0.00518695 -0.0465412 0 -0.00958888 0.0654261 -0.203791 0 0 0.176699 0.000353103 0 -0.0537305 1.87329 0 0 0.0246902 0.433419 0 -0.229527 0 -0.0130663 0 0 -0.00177446 0 0 -1.32411 -0.0172005 -0.0236974 0 -0.118467 -0.0695843 0 0 -0.180318 0 -0.00534083 -0.423427 0.00782818 0 0 0.000790147 0.0201426 0 0.012476 0.10085 -0.00117115 0.349418 0.0192908 -0.0428361 0 -0.0580267 -0.186653 0.26845 -0.0205023 -0.345125 0 0 0 7.10316 0.269952 1.11908 0.0564997 -0.0660079 0.684106 0.000656251 0.000301907 0.00180957 0.241095 0 0 0 0 0 0 0.0478386 0 0.073613 0 0 0 0 0.00126145 0.0289314 0 0 -0.208888 0 -0.0391861 0 -0.00770982 0 0 0.00264986 0 -0.070181 -0.0255262 -0.042515 0.00051654 0 0 -0.062216 0 1.78672 0 -1.73532 -0.105538 0 -0.0633912 -0.379699 -0.00878254 0 -0.00490752 0 0 0.0039534 0 0.0606237 0.201765 0 0 0.0261036 0 0 0.11147 1.04506 -0.0718336 0 -0.0878319 0 -0.904331 0.0504172 -0.0998125 -0.104613 -0.0526876 0.0820469 0.752184 -0.00241059 0.111339 0.183991 0.0623139 0 0 0 -0.0647355 0.0181028 0 0 0 0 0.0348475 21.2689 3.52311 -0.823752 1.70757 -0.933822 1.15896 0.219064 -0.151774 0.135262 0.257531 0 0 0 0 0 0 +115 0 1.25129 0.0887716 0.068673 0.302033 -0.0277818 0.0071051 -0.131653 -0.0632303 0.979406 -1.48273 -0.0513274 -0.192932 -0.00156606 -0.415438 -0.0072899 -0.647091 0.635614 -0.167427 -0.073742 -0.222753 -0.031358 0.280337 0.0191986 -0.404985 0.00426043 -0.500534 -0.0505133 -0.00430924 -0.095076 -0.122864 0.139524 -0.0398711 -0.619317 0.0817152 -0.0269895 -0.00638808 -0.238654 -5.82102 -0.230828 -0.0558889 0.000484727 0.658416 -0.0265089 -0.989399 0.125958 -0.0130589 -0.0182704 -0.463017 -0.113404 -0.612056 0.214133 -5.23385 0.351391 0.0945202 0.00712317 -4.22567 -0.36022 -0.370501 0.0625742 0.00137372 -0.654681 0.481722 1.01938 -1.9479 -0.750223 -0.411657 1.39243 0.704722 -0.253592 0.53356 0.445645 0.0670187 1.09933 -0.101628 -0.00940965 3.31566 19.8351 6.39818 -0.364945 3.75517 -2.04905 7.14715 1.46982 -1.0647 2.18623 -0.728204 -0.118668 0.112256 0.00761887 0.0654543 0.0561101 0 0 0 0 0 0.068673 0.302033 0.00372252 0 0 0 0 0.000302298 0 -0.00434551 0 0 0.00161575 0.00304852 0.0232376 0 0.000420489 0.0216353 0.074483 0 0 -0.0431089 0.000339035 0 -0.00379369 1.07964 0 0 0.00179634 0.181339 0 -0.00587801 0 -0.0307173 0 0 -0.00296989 0 0 -0.3279 0.00371557 0.0126586 0 0.0550829 0.0577054 0 0 -0.256228 0 0.00900749 0.251531 -0.0206532 0 0 -0.00555646 -0.00441523 0 0.0176176 -0.120213 0.00615412 -0.741397 -0.000121279 -0.0184404 0 0.0266606 0.0280085 -0.0195739 7.01975e-05 -0.00752853 0 0 0 0.359967 0.0498931 -0.436417 0.00936179 0.00455084 -0.115965 -0.00302952 0.00332741 0.0142443 -0.092114 0 0 0 0 0 0 -0.0277818 0 0.0071051 0 0 0 0 0.0473918 -0.252171 0 0 -0.69178 0 -0.0948462 0 -0.00825731 0 0 0.100181 0 -0.104866 0.0289399 -0.122751 0.00919112 0 0 -0.0621815 0 0.436747 0 -2.43468 -0.0439197 0 0.307665 -0.491875 -0.0172686 0 0.00410344 0 0 -0.0426207 0 -0.14431 0.695868 0 0 0.0603299 0 0 0.245773 0.811718 0.177673 0 -0.406639 0 -0.595199 -0.0193559 -0.162494 -0.0261453 -0.0566209 -0.340935 0.455293 -0.0225299 0.436165 0.151696 -0.041527 0 0 0 -0.0739178 0.00989828 0 0 0 0 0.0111487 22.2922 6.25883 -2.68309 1.77535 -1.05806 1.3321 0.455441 -0.328147 0.490597 -0.369178 0 0 0 0 0 0 +116 0 1.17903 -0.0496002 0.0769302 0.258664 -0.176144 -0.262419 1.47415 2.63839 0.504937 -1.60317 0.36619 -2.27121 -0.0158369 -2.14154 0.0273751 -0.833924 -0.9771 -0.144463 -0.0422307 -4.90142 -0.0386739 0.302381 0.0204453 -0.448583 0.394983 -0.375858 0.00980658 0.132554 -1.51308 -0.78239 0.109459 0.374395 -0.0592199 0.378145 0.463945 0.0673858 0.240905 -2.94338 0.810988 -2.07822 -0.0847869 2.0477 0.158551 -6.93643 -0.391122 -0.808687 -0.485832 0.324882 -0.395427 0.983287 -1.01464 4.45067 0.0492875 -0.0451728 0.0721747 4.02893 0.392181 -0.124126 0.648736 0.161965 -3.05197 4.13601 0.0511149 -0.582459 -0.603506 0.0358615 0.329316 0.379786 -0.176718 1.16609 -0.627219 0.716044 -0.466112 4.18702 -0.155828 0.0774543 14.0018 3.88482 -1.16078 1.12656 -1.16304 4.13394 1.19776 -1.1488 2.12258 -3.66561 0.258152 -0.464661 0.84865 -1.48649 2.70267 0 0 0 0 0 0.0769302 0.258664 0 0 0 0 0 0 0 0.00995951 0 0 0 0 0.0101026 0 0.00261521 -0.000557476 0.0409803 0 0 0.108434 0 0 0.0852225 0.430441 0 0 0.012906 0.0510036 0 0.214329 0 0.0202886 0 0 0.0022193 0 0 0.454334 0 0 0 0 0 0 0 -0.10593 0 0 0.0529454 0 0 0 0 0 0 0 0.0074399 0 0.152979 0 -0.0080479 0 0 -0.000417162 0.0861391 0 -0.0129463 0 0 0 -1.04046 0 -0.0497232 0 0 -0.01958 0 0 0 -0.00176609 0 0 0 0 0 0 -0.176144 0 -0.262419 0 0 0 0 0.156513 1.3911 0 0 -0.585907 0 -0.0550716 0 0.0648131 0 0 -1.71651 0 -0.844451 0.0613882 -0.187751 -0.186183 0 0 0.590511 0 -5.49696 0 -5.24801 -1.70967 0 0.536952 -2.00617 -0.0190637 0 0.0142029 0 0 0.153356 0 -3.16723 -3.22527 0 0 -0.364256 0 0 0.703201 -0.0559583 0.0751971 0 3.14632 0 -0.518338 0.175306 -0.0741177 0.405854 0.110318 -0.980214 0.44692 -0.170439 -0.806284 0.318589 -0.236708 0 0 0 0.244932 0.108452 0 0 0 0 -0.304379 33.8613 5.00337 -1.91908 1.1924 -0.912435 2.05421 0.193682 -0.161217 0.224537 -0.159573 0 0 0 0 0 0 +117 0 0.957836 -0.684777 -0.0128582 -0.0432335 0.297123 -0.204379 0.796119 0.387785 -0.084396 0.196492 -0.384296 -0.832025 0.002647 0.183389 -0.0327753 -1.6175 -2.09599 -0.0442865 -0.0347422 0.0256468 -0.013581 1.36714 -0.00341727 -0.0017305 0.92409 -0.871351 0.0121511 0.864076 1.11374 -0.59566 -0.0182952 -0.26971 2.30671 -0.116167 0.877043 -0.0552496 0.0446952 4.88459 -0.344649 -0.493479 0.0141714 -0.509341 -0.0549679 2.07031 0.0653728 -0.695104 1.12522 -0.361336 0.140616 -0.78039 0.0902719 -1.51374 0.0633993 -0.0581064 0.105115 -0.212552 -0.204729 -0.182714 0.0126333 -0.027071 -1.1089 0.787921 -2.5843 -1.79717 0.016419 -0.843373 -0.153805 -0.00553366 0.0295369 0.105551 0.18262 -0.307538 0.0316897 0.647028 -0.43426 0.237197 -11.024 -1.30914 -1.25551 -0.893074 1.47742 -4.23833 0.0433785 0.0928559 -0.425279 0.259594 -0.0431479 0.14667 -0.425936 0.868843 -1.98937 0 0 0 0 0 -0.0128582 -0.0432335 0 0 0 0 0 0 0 0.00172553 0 0 0 0 -0.00228057 0 2.44406e-05 -0.0358557 -0.011198 0 0 0.162195 0 0 0.0161246 -0.13857 0 0 0.0212035 -0.145086 0 0.0988014 0 0.0211581 0 0 0.00280945 0 0 0.263292 0 0 0 0 0 0 0 -0.0123987 0 0 0.227612 0 0 0 0 0 0 0 0.0279397 0 0.539545 0 0.00283769 0 0 -0.000597113 0.183167 0 0.0270521 0 0 0 -0.602959 0 0.0111999 0 0 -0.0113469 0 0 0 0.000482588 0 0 0 0 0 0 0.297123 0 -0.204379 0 0 0 0 -0.0900201 -0.424806 0 0 0.334261 0 0.0377185 0 -0.0297841 0 0 0.795383 0 0.91402 -0.0162798 0.279762 0.10411 0 0 -0.273467 0 5.11066 0 2.98389 0.619756 0 -0.253462 1.87776 0.0313863 0 -0.010375 0 0 -0.0458241 0 1.70594 2.11139 0 0 0.243949 0 0 -0.243238 -0.134082 0.0349892 0 -1.0492 0 0.371909 -0.137401 0.0447177 -0.426184 -0.0324803 0.252267 -0.350984 0.012783 0.209971 0.279733 0.0686611 0 0 0 -0.124442 -0.043706 0 0 0 0 0.0806475 -10.4316 -1.75725 1.84778 -0.139768 0.00980356 0.336802 0.0113763 -0.0173589 -0.00784397 0.166694 0 0 0 0 0 0 +118 0 0.626828 -0.143344 0.0318597 0.107123 -0.0920623 -0.00833135 0.81005 1.51196 0.209114 -0.640691 0.257428 0.611157 -0.00655866 1.41749 0.0208808 -0.363415 3.18585 -0.0980823 0.0267172 -1.39327 -0.0275453 0.525753 0.00846719 -0.211526 0.364748 -0.429517 -0.0196335 0.0471019 -0.642635 0.274459 0.0453313 0.225152 0.843818 -0.0621373 0.211946 0.0423076 0.0602151 1.27438 0.53042 -0.506247 -0.0351135 0.450884 0.0921499 3.32819 -0.161979 -0.210803 -0.090656 0.459253 -0.233103 0.0197869 -0.336148 -1.52092 -0.0553486 0.0507279 0.188397 2.05448 0.666163 0.971896 0.282169 0.0670757 0.0715563 -2.50741 -0.719059 -0.754403 0.0723419 -0.00642643 0.299798 0.0516622 -0.0731856 0.432526 0.0634786 0.611218 -0.139154 -1.08765 -0.697584 -0.683097 -5.86381 -0.367554 -1.98858 -0.299864 0.404994 -2.85368 0.567245 -0.567595 0.586732 -1.68942 0.106911 -0.256641 0.356742 -0.79744 1.14788 0 0 0 0 0 0.0318597 0.107123 0 0 0 0 0 0 0 -0.000736874 0 0 0 0 -0.00115422 0 0.000421198 -0.0277138 -0.0222377 0 0 -0.0971275 0 0 0.0382566 -0.602534 0 0 -0.0143047 -0.132962 0 0.10188 0 -0.0109347 0 0 -0.00175605 0 0 0.221029 0 0 0 0 0 0 0 -0.0565973 0 0 -0.00538685 0 0 0 0 0 0 0 -0.026832 0 0.641919 0 -0.000327654 0 0 -0.00618552 0.02174 0 -0.00823188 0 0 0 -0.506172 0 0.0241012 0 0 -0.00952546 0 0 0 0.000958357 0 0 0 0 0 0 -0.0920623 0 -0.00833135 0 0 0 0 0.158923 0.454071 0 0 -0.502381 0 -0.0562303 0 0.0264056 0 0 0.865593 0 0.728929 0.0150383 -0.139897 0.117476 0 0 0.258403 0 11.15 0 -0.584473 1.14876 0 0.338829 0.58395 -0.0153312 0 0.00157191 0 0 0.0408896 0 4.0469 1.77179 0 0 0.244694 0 0 -1.51984 -0.463933 0.0328818 0 -1.81883 0 0.151731 0.0480637 -0.0597633 0.56768 0.0943676 -1.28512 -0.155286 -0.0428754 0.71129 -1.75539 -0.133632 0 0 0 0.50617 0.0951048 0 0 0 0 -0.0770658 6.29172 1.81584 -0.504093 0.539505 -0.422154 0.00501854 0.189106 -0.140874 0.128893 -0.142001 0 0 0 0 0 0 +119 0 0.467132 0.585521 0.0188532 0.15931 -0.120753 0.0776699 0.200718 1.16864 0.151362 -1.18621 -0.0310046 0.419971 -0.000691632 -0.960354 -0.0142587 0.95153 1.11845 -0.280512 -0.0413223 0.0779769 -0.0292451 -0.762484 0.000897205 -0.139014 0.0379838 0.615045 -0.0680806 -0.109863 -0.0366236 -0.0591291 0.0122939 -0.300179 -1.42084 -0.479003 -0.19585 -0.00589308 -0.319987 -4.22916 0.0466162 0.211321 -0.00913021 -1.49289 -0.000961281 -0.764455 -0.113682 0.192659 -0.0659545 -0.697635 0.00790632 -1.89515 -0.503701 -3.23844 0.0791402 -0.0516262 0.0666114 -4.23681 -0.858173 -0.253044 0.303465 0.019103 -2.2534 -0.116513 0.799951 0.892912 1.04444 0.571249 -0.242599 -0.567158 -0.0228547 0.71398 -0.593533 -0.138063 0.401139 -0.232423 0.017191 0.569679 17.1828 3.83422 1.14452 1.2162 -1.16023 5.10139 0.537688 -0.603116 1.38563 -1.49765 0.0106636 0.00675094 0.0503547 -0.0170648 0.0313375 0 0 0 0 0 0.0188532 0.15931 0.000497806 0 0 0 0 1.02705e-05 0 0.00541861 0 0 -2.15101e-05 -3.88627e-06 0.00323953 0 0.000571382 0.0134058 0.0311901 0 0 0.00193992 -2.82188e-07 0 0.0104093 0.423156 0 0 0.000322671 0.0919575 0 0.0406346 0 0.000856422 0 0 8.14448e-05 0 0 0.0619259 0.000141445 -0.000296235 0 0.00685575 -0.00694187 0 0 -0.0327281 0 0.00101917 -0.0712756 -0.00196204 0 0 4.40379e-05 -0.000861354 0 -0.00115572 0.00448204 -0.000422222 -0.225364 -0.00357955 -0.00351246 0 -0.000649543 0.00500508 -0.011744 -0.00300658 -0.0182734 0 0 0 0.0194746 -0.0146616 0.00493624 0.00863648 -0.0164681 0.0289432 2.83477e-05 -5.40535e-05 0.000116527 -0.000396547 0 0 0 0 0 0 -0.120753 0 0.0776699 0 0 0 0 0.172532 -1.18829 0 0 -0.746135 0 -0.0765598 0 -0.0704058 0 0 1.00372 0 -1.1272 0.0709457 -0.319996 0.145956 0 0 -0.652812 0 -2.15196 0 -5.61895 -0.75272 0 0.424823 -2.34733 -0.0347116 0 0.0300634 0 0 -0.128505 0 -1.5006 1.96309 0 0 0.282755 0 0 0.461774 -4.29125 -0.199767 0 -0.810909 0 0.573222 -0.38351 0.260356 0.690877 0.157315 -1.98608 -1.34176 -0.212851 -0.685429 -8.86914 -0.350768 0 0 0 -0.454958 0.175883 0 0 0 0 0.188655 31.1761 7.65035 -5.13751 2.12093 -1.51941 1.52041 0.341627 -0.262372 0.284714 -0.169584 0 0 0 0 0 0 +120 0 -0.18551 -0.145021 0.00245855 0.0257744 0.0909889 -0.0442523 -0.68838 -0.164255 0.0222456 -0.523469 -0.0272411 -0.602392 -8.20104e-05 -1.85196 -0.00101649 -1.16066 -7.39711 -0.0725635 -0.0105843 -4.67548 -0.00503236 -0.153803 0.000114257 -0.0861813 -0.131439 -0.102103 0.00604281 -0.329009 -0.638955 -0.143928 0.0016431 -0.0081985 -0.254588 0.0350231 -0.172198 -0.00252797 -0.0215231 0.328356 -0.0749648 -1.83552 -0.00101092 -0.108913 -0.00547258 -4.89863 -0.011218 -0.448476 -0.53082 -0.156172 0.0156243 -0.555867 -0.0859014 8.07776 0.0203881 -0.0160682 0.0356535 5.58636 0.0614369 -0.161857 0.146061 0.00208172 2.85876 7.3207 3.08758 0.484149 0.409538 1.30734 0.590669 -0.0994253 -0.00334093 0.474641 0.0920049 0.0198618 0.033642 4.54479 0.44301 0.140722 1.63221 1.23625 0.596627 -0.161475 0.602454 0.253996 0.400965 -0.393008 1.00557 -0.653404 0.00105226 0.00439781 0.0347668 0.0823047 0.546732 0 0 0 0 0 0.00245855 0.0257744 -5.38162e-05 0 0 0 0 -1.1111e-06 0 0.00163045 0 0 0.000111621 2.00663e-05 0.000303024 0 0.000137759 -0.00160854 0.000108012 0 0 0.0460019 1.45705e-06 0 0.00595628 0.0358835 0 0 0.0056777 -0.0149159 0 0.050093 0 0.00269656 0 0 0.000340884 0 0 0.143235 -1.5302e-05 0.00153723 0 -0.000741152 0.00151633 0 0 -0.0229933 0 -0.000110179 0.0466313 0.00030672 0 0 -0.000228523 9.3118e-05 0 0.000344987 0.0048465 0.000565929 0.156835 0.00199442 -0.00124198 0 0.000196256 -0.000967112 0.0460455 0.000256384 0.00267677 0 0 0 -0.335341 -0.00244076 -0.000171476 -0.00039208 0.000747621 -0.00760799 -0.000147103 0.000280496 -0.000604687 0.0010097 0 0 0 0 0 0 0.0909889 0 -0.0442523 0 0 0 0 0.0166755 0.0426871 0 0 -0.151255 0 -0.0187806 0 -0.00455162 0 0 -1.29308 0 0.0688861 0.103994 -0.0483508 -0.164215 0 0 -0.0270752 0 -7.27577 0 2.82872 -0.477578 0 0.464873 0.683196 -0.00573091 0 0.018349 0 0 -0.00477719 0 -2.31578 -2.54592 0 0 -0.323109 0 0 1.52766 2.3589 -0.0155634 0 3.69999 0 0.640064 -0.115246 0.104535 0.263519 0.00526898 -0.798946 0.319545 -0.0698087 -0.854086 9.8924 -0.0120237 0 0 0 -0.418893 0.0701828 0 0 0 0 0.0472358 -15.9726 1.30658 -4.34599 0.225581 -0.105121 -0.886857 0.18275 -0.14574 0.147309 -0.360596 0 0 0 0 0 0 +121 0 0.0812557 0.710795 0.0104139 0.0399973 -0.139997 0.294123 -1.47436 -0.719051 0.0595366 -0.691984 -0.214374 1.02094 -0.000460595 1.28673 0.00213618 1.4905 2.71951 -0.112426 -0.0140764 2.58893 0.00033416 -1.17921 0.000521928 -0.103778 -0.816092 0.944422 -0.00344957 -0.68861 -0.271853 0.754085 0.00640771 -0.0173548 -1.89251 0.0049849 -0.916816 -0.0138815 -0.0722893 -3.18283 -0.187402 1.41521 -0.00676861 0.101956 -0.0117859 1.6645 -0.0974242 1.05748 -0.523155 -0.258306 0.0260836 0.503642 0.0890284 2.25832 0.0333352 -0.0133455 0.0791986 -1.68254 0.614166 -0.0639879 0.124798 0.0144827 1.26766 -2.00941 1.32276 1.13645 0.0122007 0.903246 0.0936609 0.0467999 -0.00916249 0.197195 -0.0110862 0.0251005 0.0151346 -2.85975 0.37624 1.25335 12.1071 2.3701 2.71381 1.16316 -0.210838 1.89353 0.472489 -0.215809 0.453435 0.385958 0.00913852 0.0164484 0.0544314 0.101549 0.232616 0 0 0 0 0 0.0104139 0.0399973 0.00141601 0 0 0 0 2.92139e-05 0 0.00113304 0 0 1.12069e-05 1.95825e-06 0.00120516 0 0.000255929 0.00360609 0.00237565 0 0 -0.0982112 1.42191e-07 0 0.00555122 -0.06658 0 0 -0.0145901 0.00832189 0 -0.0102258 0 -0.00361572 0 0 -0.000575732 0 0 -0.141824 0.000402331 0.000154341 0 0.0195011 -0.0189711 0 0 0.0226739 0 0.00289901 -0.0929535 -0.00551812 0 0 -2.29441e-05 -0.00245011 0 -0.00286409 -0.00533672 -0.000545354 0.00857314 -0.0073294 0.00429033 0 -0.00143095 0.00953107 -0.0186006 -0.00569763 0.00124064 0 0 0 0.783835 -0.0437622 0.113921 0.0245804 -0.0468701 0.0960835 -1.47694e-05 2.81623e-05 -6.07116e-05 0.0021975 0 0 0 0 0 0 -0.139997 0 0.294123 0 0 0 0 -0.132573 0.640895 0 0 0.119257 0 0.0125267 0 0.0206333 0 0 -0.161186 0 -0.250658 -0.0204008 0.162539 -0.0193469 0 0 0.187734 0 2.47503 0 0.523578 0.288383 0 -0.114983 0.0603253 0.0172825 0 -0.0124222 0 0 0.0699266 0 0.567174 -0.325892 0 0 -0.0380795 0 0 -0.217041 -0.0997213 0.0415813 0 -0.0372356 0 -0.175277 0.160933 -0.117307 -0.366227 -0.0653885 -0.0146156 0.186347 0.0475218 0.220731 -0.64206 0.0268275 0 0 0 0.164433 -0.0312561 0 0 0 0 -0.108995 -1.7474 -0.178192 0.188516 0.622459 -0.426971 -0.605308 0.0552067 -0.0398078 -0.027151 -0.00305529 0 0 0 0 0 0 +122 0 0 0 0 0 -0.197764 0.296922 -0.828178 -2.2397 0 0 0.096876 1.8143 0 3.2535 0.238228 0 0 0 0.547102 2.68625 0 0 0 0 -0.450691 0 0 -0.758597 -5.15349 1.0085 0 0.64147 0 0 -0.208135 0.040608 0 0 0.734363 0.911173 0 0 0.195805 6.53066 0 0.668398 -1.59506 0.865547 -0.264598 4.31446 -0.522467 0 -0.642363 0.575457 -0.68772 -3.74818 -1.60177 -0.947983 0 0 -0.0207543 -0.531229 0 -1.70262 -1.32736 -0.0225349 0 0 0 0 0.230304 0.861873 0 -1.89413 1.35187 0 0 0 3.23701 0 -0.723607 6.58511 0 -0.276659 1.30195 4.28436 0 -0.493794 2.20879 -4.61595 16.1079 0 0 0 -0.168991 -0.0427173 0 0 0 -0.0141584 0 0 -0.0025635 0 0 0.0140269 0 0 0 0 0.116534 0 0.0249369 0 0.0667901 0 -0.0741729 0.0580458 0 -0.00361011 0 0 -0.204343 0 0.0131938 0 0 0 0 0.0662852 -0.0284956 0 0.0157807 0 0 0 0 0 0 0 0 0 0 -0.0435461 0 0 0 0 0 0 0 0 0 0 -0.338478 0 0 0 -0.0334463 -0.0500217 0 -0.0245521 -0.279108 0 0.109841 0 -0.269732 0 0 0 -0.0878558 0 0 0.192929 0 0 0 0.0471161 0 0 0 0 0.168473 0 -0.197764 -0.168991 0.296922 -0.0427173 0.38202 0.183464 -0.912686 -0.366807 -2.06447 -0.0107679 -0.00405763 0.00383106 -0.00084192 -0.00726135 -0.135699 -0.115286 0.0271391 -0.121402 0.408345 0.568016 0.358557 -0.216457 0.106323 0.00414276 -0.0133563 -0.270651 -0.779431 0.0158199 -3.08731 0.328374 0.761788 0.700331 -0.0194196 -0.847351 0.625622 0.00822388 0.00301557 -0.061107 0.038386 -1.63359 -0.31297 -0.0467538 -0.180007 1.22508 0.00229167 0.0271661 0.0656981 0.0759295 0.155055 0.508836 -2.60644 0.413877 -0.256314 -2.10759 0.51072 -0.840132 0.0480878 -0.107042 -0.1319 0.550136 0.353015 0.19762 -0.120098 2.44021 -0.916864 -0.0188447 0.139721 -0.112569 0.339327 -0.721879 -0.0769705 0.0448602 0.00280655 -0.184076 0.041724 1.23408 -3.16075 0.286333 0.139411 0.150009 -0.854673 2.81659 -0.0474101 0.0561565 -0.185155 1.85591 0.0324615 -0.0766327 0.297114 -0.630164 2.12789 0 +123 0 0 0 0 0 -0.193914 0.315971 -0.516918 -1.94217 0 0 0.298337 0.617233 0 1.74617 -0.0242227 0 0 0 -0.432082 0.837363 0 0 0 0 -0.59954 0 0 -0.859265 -1.88103 0.555846 0 0.273996 0 0 -0.204877 0.0403518 0 0 0.390897 -0.0713643 0 0 0.0651547 2.92765 0 0.445913 -1.35907 -0.625026 -0.0990307 -0.712247 -0.264838 0 0.363766 -0.416331 0.394656 -1.3523 -0.239128 0.130909 0 0 0.478083 0.700062 0 0.426905 0.652799 0.0486411 0 0 0 0 0.132774 0.0871868 0 -0.32577 0.344626 0 0 0 3.60741 0 -0.704894 3.7059 0 0.149773 0.351155 3.37643 0 -0.0616454 1.07573 -1.18151 3.99999 0 0 0 -2.6696e-05 -0.00108479 0 0 0 0.0206668 0 0 0.000182307 0 0 -0.16543 0 0 0 0 -0.254505 0 -0.0634381 0 -0.656058 0 0.175095 -0.192106 0 -0.014127 0 0 -0.220022 0 -0.050497 0 0 0 0 -0.237771 -0.0562995 0 -0.0594329 0 0 0 0 0 0 0 0 0 0 0.063969 0 0 0 0 0 0 0 0 0 0 -0.0778229 0 0 0 -0.00674081 0.0840555 0 0.102556 -0.217975 0 -0.0775898 0 -0.111333 0 0 0 0.689959 0 0 0.208098 0 0 0 0.171892 0 0 0 0 0.180055 0 -0.193914 -2.6696e-05 0.315971 -0.00108479 -0.00958466 0.0488179 -0.00139219 0.0994255 0.897997 0.00209787 -0.0348552 -0.636268 0.000516284 -0.154508 -0.00190023 0.142607 -0.0212064 0.00796107 -0.828032 1.14158 -0.224717 -0.0346264 -0.391602 -0.104098 -0.096612 0.0474198 1.06373 0.02999 4.55541 -0.115804 -0.968703 1.86908 -0.000498233 0.237356 -0.504858 -0.0920381 -0.00667499 0.00132389 -0.0313377 0.565036 0.136264 -0.00190187 3.48472 -0.191137 -0.00679196 -0.0287972 -0.0987038 0.162499 -0.100936 -0.601681 -1.36784 -0.509091 0.0555121 1.57997 0.000862836 -0.855684 0.0566158 0.294054 0.175765 -0.0292554 -0.186616 1.14834 -0.0353048 -2.28289 -13.6668 -0.0553732 0.0373338 0.011819 0.0705052 0.442349 0.282346 0.100867 -0.00418365 -0.169184 -0.00996277 -0.368722 4.01927 0.945765 0.629816 0.112994 -0.300969 0.107886 0.0881408 -0.243972 0.284535 0.0678017 -0.0021287 0.0219431 -0.0993685 0.0945511 -0.218587 0 +124 0 0 0 0 0 0.0497142 0.193706 -1.05325 -2.56048 0 0 0.385666 0.881734 0 1.67879 0.1825 0 0 0 0.411819 2.66981 0 0 0 0 -0.349605 0 0 -0.593152 -6.83725 0.362631 0 0.62572 0 0 -0.149483 0.0739703 0 0 1.0119 0.21725 0 0 0.228845 4.86185 0 0.0804304 -2.14468 1.07515 -0.343379 1.63311 -0.974661 0 -0.65619 0.413164 -0.532676 -5.07295 -1.82412 -0.391775 0 0 0.592952 0.0537463 0 -1.80947 -0.737855 -0.0114346 0 0 0 0 0.446287 -0.0573555 0 -0.852548 1.79477 0 0 0 3.82684 0 -1.82073 9.31369 0 -0.546207 1.05563 4.76061 0 -0.580539 1.98693 -4.21105 17.4749 0 0 0 -0.0893273 -0.0227158 0 0 0 0.0290809 0 0 0.0032211 0 0 -0.0197969 0 0 0 0 -0.0330806 0 -0.00237364 0 -0.100098 0 0.234226 0.0725527 0 -0.00130232 0 0 -0.0170868 0 0.0088393 0 0 0 0 -0.0398058 -0.00511931 0 -0.00454219 0 0 0 0 0 0 0 0 0 0 -0.0930192 0 0 0 0 0 0 0 0 0 0 -0.0673187 0 0 0 0.0038274 0.065745 0 0.176519 -0.0571976 0 -0.0785725 0 -0.124064 0 0 0 0.0895333 0 0 0.0293147 0 0 0 0.0438983 0 0 0 0 -0.0343567 0 0.0497142 -0.0893273 0.193706 -0.0227158 0.268562 0.201215 -0.482596 0.333225 -0.533532 -0.0054274 0.0490842 -0.00944191 -0.00038 -0.0151733 -0.0719661 -0.0404818 0.0881165 -0.0631672 0.317649 0.404693 0.362435 -0.095318 -0.133591 -0.030247 0.598711 -0.35718 -0.258388 0.0153064 0.502188 0.58001 1.92257 0.228141 -0.0103274 -0.266119 0.888138 -0.0240848 0.011631 0.0300182 0.0985748 -2.29593 -0.0950614 -0.0550237 0.421827 1.28248 0.00693998 0.068146 0.0355376 0.0684712 0.0603645 0.0295776 -0.837035 -0.986028 -0.260733 -1.58906 0.270061 -1.88716 -0.06439 0.188871 0.214787 0.172531 -0.105142 0.809066 -0.0270827 -1.7772 -11.7774 0.037458 0.0931255 0.0864309 0.381381 -0.727658 0.00596352 -0.0403018 0.000956624 -0.179629 -0.0848295 0.307809 -7.97696 0.76228 -1.64844 -0.125992 -0.640244 3.11292 -0.0231393 0.113354 -0.369904 1.75689 0.0168902 -0.185474 0.528118 -0.983558 2.79464 0 +125 0 -0.658268 -0.192136 -0.038181 -0.265945 0.269147 -0.185166 0.316809 -0.631129 -0.306874 0.202939 0.241265 0.268979 0.00131378 0.493466 0.0178641 -1.51217 -4.4207 -0.113694 0.0432506 -0.853264 -0.0571541 0.0501212 -0.00296755 0.00160544 0.288493 -0.69066 -0.0598851 0.551443 0.0504556 -0.0777825 -0.0306348 0.203854 -0.203192 -0.570105 0.393169 0.0215889 0.160592 -1.53389 0.101708 -0.799413 0.0106272 -1.19555 0.00256637 1.58568 0.066403 -0.687065 0.226456 0.474306 0.00645881 0.266995 -0.237848 2.05871 -0.181018 -0.0444013 -0.0786567 -1.24067 -0.512566 0.0785394 0.0714475 0.0107982 0.225438 0.423429 -1.50635 0.180914 -0.0306207 0.0183898 -0.0584822 0.371284 0.0469397 -0.24933 -0.0703101 0.0175982 0.0427069 -0.213636 0.0238455 0.264775 2.74013 -0.997259 2.67065 0.106759 -0.985587 3.13011 -0.0570102 -0.0287817 -0.115408 0.595178 -0.0185398 -0.00916381 -0.0474579 -0.0580759 -0.0614167 0 0 0 0 0 -0.038181 -0.265945 0 0 0 0 0 0 0 -0.00979057 0 0 0 0 -0.0100887 0 -0.00131146 0.0162358 -0.0835608 0 0 -0.126685 0 0 0.0260618 0.0714044 0 0 -0.0194671 0.0893175 0 0.120275 0 -0.0134798 0 0 -0.00218416 0 0 0.0431055 0 0 0 0 0 0 0 -0.0405155 0 0 -0.0953378 0 0 0 0 0 0 0 -0.0782441 0 -1.39892 0 0.0146054 0 0 -0.000199973 -0.40348 0 -0.038348 0 0 0 -0.237736 0 0.125454 0 0 0.125866 0 0 0 0.0349856 0 0 0 0 0 0 0.269147 0 -0.185166 0 0 0 0 0.18599 -0.453723 0 0 0.197469 0 0.0201364 0 0.0143772 0 0 -0.0540203 0 0.508583 -0.0161894 -0.151421 0.000782421 0 0 0.107875 0 -0.549508 0 1.52921 -0.407417 0 -0.179278 0.558585 -0.018627 0 0.0292325 0 0 -0.0412065 0 -0.210088 0.388929 0 0 0.0486734 0 0 0.171955 0.959129 0.139186 0 0.62298 0 0.369801 0.0102773 -0.0480824 0.154483 0.0583325 0.202146 0.0660335 0.0614421 0.0254592 0.116793 -0.0414268 0 0 0 -0.0370295 0.000687416 0 0 0 0 0.0663151 -16.5082 -2.63807 0.450281 -1.04376 0.768049 -1.01538 -0.165058 0.102709 -0.127727 0.0635519 0 0 0 0 0 0 +126 0 0.411421 0.26488 -0.011431 -0.0177302 0.0164077 0.0801804 -0.255053 -0.0303819 -0.0927637 -0.252723 -0.13065 -0.219592 0.00186117 -0.829346 0.0157763 0.151179 -0.590944 -0.0656335 0.0288071 0.597934 -0.026665 -0.394669 -0.00234842 -0.0648449 -0.248533 0.307714 -0.0496392 0.026075 0.473517 -0.179657 -0.0164427 0.0715764 -1.21887 -0.0215336 -0.253245 -0.0140311 -0.551762 -4.46018 -0.274419 0.313999 0.013242 -1.24064 -0.037102 -0.483537 0.0789681 0.192496 0.166911 0.0931812 0.0947427 -0.379629 -0.268947 1.61666 -0.0276725 0.117372 -0.175562 -0.807846 0.135793 -0.182227 0.139615 -0.0308584 0.9205 -0.0612106 0.612933 0.860727 0.400861 0.55575 0.193939 -0.441844 0.0313568 -0.119866 -0.0152371 -0.222385 0.628891 -0.523932 0.229646 1.2437 14.6823 3.40541 0.0142845 3.60963 -2.54052 4.12101 0.145794 -0.108032 0.00374775 0.0595356 -0.022048 0.0442962 -0.114165 0.202919 -0.576386 0 0 0 0 0 -0.011431 -0.0177302 0 0 0 0 0 0 0 -0.015665 0 0 0 0 -0.00826736 0 -0.00250059 -0.0481706 -0.0425499 0 0 0.108389 0 0 -0.0540807 -0.189094 0 0 0.00935731 -0.192521 0 -0.283275 0 0.0130268 0 0 0.000898991 0 0 -1.00596 0 0 0 0 0 0 0 0.05201 0 0 -0.0949763 0 0 0 0 0 0 0 0.0215875 0 0.093622 0 0.0439233 0 0 0.0278015 0.125864 0 0.0506435 0 0 0 2.10437 0 0.11433 0 0 0.226505 0 0 0 0.0168226 0 0 0 0 0 0 0.0164077 0 0.0801804 0 0 0 0 -0.141815 -0.510227 0 0 0.0857146 0 0.0107021 0 -0.0418421 0 0 0.364898 0 -0.813315 -0.0555111 0.0399492 0.0692526 0 0 -0.362924 0 -3.43589 0 -2.55885 -1.0436 0 -0.0892354 -1.51704 0.00527297 0 -0.0377415 0 0 -0.0584012 0 -2.24325 0.823785 0 0 0.149522 0 0 0.0788857 3.10162 0.133206 0 -2.12316 0 0.496352 0.0926728 -0.107081 0.89094 0.0479278 -0.118985 -0.0427645 0.0770647 1.23319 4.40241 0.0154299 0 0 0 -0.271761 -0.00993226 0 0 0 0 0.204899 14.1992 -1.25425 3.66867 0.145839 -0.611887 2.03149 -0.0452187 0.0640101 -0.100298 0.221991 0 0 0 0 0 0 +127 0 0.525192 0.420118 -0.0129232 -0.0829229 0.23687 0.11543 0.245343 -1.51862 -0.10397 0.649795 0.00644901 0.299481 0.000612881 0.377574 0.0148351 2.08539 10.8808 0.141689 0.0439634 -0.598666 0.0201302 -0.0726752 -0.00117173 0.123069 -0.274807 0.372758 0.0562294 0.193288 0.880384 0.00614478 -0.0112022 0.167686 -0.603781 0.159227 0.0796756 0.00135834 0.316227 -3.80092 0.0520461 -0.271479 0.00474985 0.81296 0.00119208 2.09573 0.0292465 -0.209182 0.510817 0.502225 0.00880811 1.55862 0.103283 -10.3189 -0.0550928 0.0142408 -0.136137 1.06261 0.228301 0.266826 -0.130578 -0.000251667 -0.473991 -0.285699 -1.0876 1.23735 -0.583945 -0.165706 -0.529036 0.440543 0.0178706 -0.815783 -0.253754 0.186357 -0.302067 0.229224 0.015091 -1.61766 11.157 -0.708276 4.72796 0.902822 -0.90596 2.5358 -0.338122 0.337002 -0.71521 1.6658 -0.00816566 -0.00504821 -0.140702 0.0350736 -1.07164 0 0 0 0 0 -0.0129232 -0.0829229 0 0 0 0 0 0 0 0.00140672 0 0 0 0 -0.000593874 0 -0.000120139 0.000390876 0.006633 0 0 0.13146 0 0 -0.00473405 0.419936 0 0 0.0180608 0.0271784 0 -0.0371789 0 0.0106393 0 0 0.00140284 0 0 -0.162458 0 0 0 0 0 0 0 -0.0540257 0 0 -0.16825 0 0 0 0 0 0 0 -0.00488552 0 -0.0602051 0 0.0175692 0 0 0.0233449 0.0129895 0 0.0961727 0 0 0 0.286719 0 0.0266545 0 0 0.0853886 0 0 0 -0.00824206 0 0 0 0 0 0 0.23687 0 0.11543 0 0 0 0 -0.534088 -0.00636821 0 0 0.487835 0 0.0668489 0 0.00651615 0 0 0.666065 0 -0.358751 -0.201516 0.124517 0.0946015 0 0 0.0244481 0 11.0356 0 -2.76311 0.480919 0 -1.52226 -0.981572 0.0157059 0 -0.0749268 0 0 0.0185518 0 2.76495 2.15371 0 0 0.273791 0 0 -0.429113 0.109282 1.06737 0 -0.636798 0 1.24087 0.187235 -0.430965 -0.38868 0.311075 0.477921 -0.666401 -0.17639 1.84019 5.55125 -0.136005 0 0 0 0.270745 -0.0208844 0 0 0 0 0.0996247 4.61261 -3.83617 7.78204 -0.132911 -0.2478 1.46159 -0.27415 0.238446 -0.320944 0.911592 0 0 0 0 0 0 +128 0 0 0 -0.0516719 -0.263973 0 0 0 0 5.86639 3.6231 -0.27735 0 -0.141145 0 -0.782251 0 0 0.514915 -2.6941 0 0.059546 0 0.776184 0.869007 0 0 0.180943 0 0 0 1.72933 -1.6455 0 0.0255635 0 -0.217977 -0.789353 0 -0.872319 0 0.058774 -2.91305 -0.595979 0 0.794344 0 0 -6.10189 -0.106889 0 1.48863 0 3.42763 -3.22146 1.48408 0 4.0315 0.66996 -0.616424 1.30825 0 0 0 0 1.39782 0 -0.663049 -0.700237 -4.81944 -2.76876 -0.753672 -0.469424 -1.19093 0 0 2.0234 0 -8.17963 0 -1.50781 0.0898814 0 -3.36364 2.65504 -3.45917 0 0.887655 1.65445 -1.20255 1.56878 0 0 0.153141 0.0201765 0.183074 -0.041163 -0.0516719 -0.263973 0.0834195 -0.238889 -0.00200528 -0.000474055 -0.0477414 0.0356304 0.0168335 -0.0375918 0.0263346 -0.00490907 0.000477677 -0.016163 -0.0933781 0.28423 -0.0706003 1.4203 0.0701611 0.00230342 -1.06785 -2.1868 -0.000143236 0.011271 0.177257 -1.11154 -0.216193 0.00859491 -0.325872 0.969805 0.0346577 -0.196476 -0.00999916 -1.28852 -0.0106298 0.0896438 -0.165045 -0.0420136 0.00161229 -1.26996 0.522618 -0.030182 0.00118595 1.12473 -0.136827 -0.0191661 -0.00591093 -0.146675 0.0209509 0.0933489 0.139946 -0.0713807 -0.0845332 0.0372555 -0.0106767 -0.22667 0.0873223 0.032304 0.767756 0.0218064 -0.362366 -0.134725 -0.0950124 0.0242178 0.0667462 0.0821345 0.317412 -0.26969 0.0735358 0.00996948 -0.565656 0.0126437 2.03143 -0.109002 0.129962 0.15276 -0.203123 0.328585 -0.00472652 0.00748217 -0.017337 0.0230764 0.0096438 -0.0135241 0.0238916 -0.032886 0.0530025 0 0 0.183074 0 -0.041163 0 0 1.8153 0 -0.0879011 0.114215 -0.0437439 1.12183 0.0203749 0.283759 0.179207 -0.0634224 -0.0765174 0.674517 0 0 0 0 0.40276 0 -0.444473 0 -0.197816 0 0 -0.255725 0 0 0.00859844 0 0 0.133112 -0.00315934 0 -0.0125408 0 -0.118995 0 0 0 -0.00821042 -0.0640547 0 0 0.119997 0 0 0 0.218767 0 -0.768571 0 -0.433411 0.337796 -0.508906 0 0 -0.62867 0.370903 0.502697 0 -0.128936 0 -0.267021 0 0.773607 0.0133962 -0.00657262 0.259514 -0.11599 0.0847669 -1.12407 0 -5.38967 0 -3.73614 1.5601 0 -2.32931 1.26235 -0.595403 0 -1.39574 0.891237 -0.426006 0.112829 0 0 +129 0 0 0 -0.0948532 -0.157887 0 0 0 0 2.02846 1.53335 0.720761 0 0.131115 0 0.368872 0 0 0.368746 0.970648 0 0.171019 0 -0.226775 0.489036 0 0 0.000298091 0 0 0 0.141891 1.18966 0 -0.15365 0 0.156327 0.621962 0 1.78107 0 -0.394585 1.12635 0.29523 0 -3.84095 0 0 2.73725 -2.05049 0 0.25718 0 -0.558558 0.287097 -0.152258 0 -2.00182 -1.45933 0.356743 1.97508 0 0 0 0 0.317462 0 0.955634 -0.646781 -0.134364 -1.98395 1.03091 1.51917 0.878395 0 0 -0.953876 0 -4.1965 0 6.525 -3.28792 0 2.11926 -0.909929 -1.47899 0 11.1538 -6.97774 4.92944 -1.95051 0 0 0.563789 0.0742797 -0.197922 -0.0466675 -0.0948532 -0.157887 0.100212 -0.089157 -0.623686 -0.00226343 -0.0154242 0.0276059 0.0221498 -0.0951084 0.0729684 -0.0253337 0.0418252 0.137456 -0.0681961 0.710455 0.00636918 -0.172114 -0.569583 0.00676845 -0.542225 -0.787892 0.0132928 -0.0104035 -0.148529 1.51222 0.0649945 0.0175729 -0.00110396 0.318405 -0.0897188 -0.165361 -0.080056 -0.0618692 -0.0106586 0.129513 0.0553638 -0.256382 0.00314139 -0.119694 0.448005 0.459905 -0.010882 1.19207 0.0622161 -0.0268582 -0.0826462 -0.446675 0.00480804 0.0809447 -0.512133 -0.108219 -0.186995 0.187935 -0.0938468 -0.217104 -0.166771 0.168565 -0.383282 0.0859863 -0.646842 -0.203526 -0.0840272 -0.062589 0.493978 0.195821 0.106144 0.00962798 0.0358524 0.0773088 -0.0527831 0.038265 0.191463 -0.369971 0.473091 0.202389 -0.108 -0.0373103 -0.060484 0.0558983 -0.0505104 0.0602973 0.0410444 -0.034391 0.0264711 -0.00972389 -0.0159343 0 0 -0.197922 0 -0.0466675 0 0 0.528096 0 0.737865 -0.0473572 0.0284606 0.0334824 0.00104077 -0.0184092 -0.0215483 0.0623007 0.105985 -0.643134 0 0 0 0 -0.0923475 0 0.133315 0 0.435855 0 0 -0.143214 0 0 -0.0130616 0 0 -0.0335446 -0.006897 0 -0.0175052 0 0.109654 0 0 0 0.0148892 -0.055971 0 0 -0.104535 0 0 0 0.0699533 0 -0.0977288 0 0.0622991 0.0208621 -0.450766 0 0 0.774199 0.125074 0.00169185 0 -0.0394299 0 0.00415618 0 -0.0150091 0.0886595 -0.066253 0.204892 -0.0978248 -0.0424269 -0.397773 0 0.263289 0 3.00158 -0.162863 0 1.31062 -0.513579 0.160402 0 1.59828 -0.648161 0.238889 0.206634 0 0 +130 0 0 0 -0.119656 0.02371 0 0 0 0 -5.11606 0.533457 0.379818 0 -0.0260791 0 0.148104 0 0 -0.0267706 0.905335 0 -0.0491146 0 -0.47533 0.0517704 0 0 -0.59911 0 0 0 -1.57412 -0.0722749 0 -1.92384 0 0.143856 -2.38394 0 0.895011 0 -0.137269 -7.98317 0.554171 0 -0.293226 0 0 0.329666 0.209278 0 -0.672851 0 -0.873655 -0.203151 0.38667 0 -0.189539 0.788357 0.239737 -0.864839 0 0 0 0 1.18046 0 -1.20985 -1.97484 3.38795 -0.110419 0.200481 -0.742711 2.7852 0 0 0.978133 0 0.27661 0 3.38949 -1.76595 0 0.871186 -0.410939 -0.832786 0 -1.23357 -0.336789 0.14327 -0.288504 0 0 -0.124567 -0.0164118 0.153578 -0.00317149 -0.119656 0.02371 -0.0837953 -0.0368426 0.102505 0.000400768 -0.00589098 -0.0341544 0.0205813 0.0440336 -0.0207189 0.00420561 -0.022251 -0.0759826 0.113483 -0.221363 0.0284821 -0.289495 0.348712 -0.00182353 -0.202441 3.45513 -0.00613745 -0.00937278 -0.131053 -3.58658 -0.0372699 0.00265287 0.455372 -0.999151 0.0131743 -0.253899 0.0152114 2.2267 -0.0272876 0.0645274 0.296326 0.0371512 0.00109344 -1.24957 -0.498818 -0.287028 0.00193781 -1.14205 -0.173075 7.54081e-05 0.0233949 0.138916 0.0343856 -0.110914 -0.265178 0.17343 0.0651246 -0.0362153 0.0320491 0.209843 -0.0109007 -0.00298351 2.2909 -0.0201073 0.384429 0.468732 -0.00302531 -0.0233144 -0.546578 -0.227203 -1.44281 0.408445 -0.436186 -0.0225632 0.186309 -0.0100421 1.99881 0.0814629 -0.0958121 0.0766042 -0.166682 0.182982 0.0264882 -0.0231269 0.0329331 -0.0372849 -0.00800655 0.000704119 -0.000992383 -0.0124417 0.00913721 0 0 0.153578 0 -0.00317149 0 0 -0.405979 0 -1.56732 0.0376675 -0.0558144 -0.0803668 0.00516561 0.0542249 -0.0525041 -0.0458119 -0.0317203 0.17284 0 0 0 0 -0.0728297 0 -0.420672 0 -0.147344 0 0 -0.0742445 0 0 -0.0046472 0 0 -0.0166439 0.00289182 0 -0.00367139 0 -0.287309 0 0 0 -0.00344171 0.0185743 0 0 -0.169383 0 0 0 0.0218407 0 0.23379 0 -0.992893 0.364115 0.946417 0 0 -0.60697 0.254236 0.103203 0 -0.227142 0 -0.0814489 0 -0.484328 0.0804629 0.0801473 -0.218652 -0.0181491 0.020037 0.251486 0 2.32473 0 0.567963 0.78737 0 0.392779 0.124764 -0.0562621 0 -0.552235 0.201505 0.101087 -0.0901356 0 0 +131 0 -0.379586 -0.163727 0.0551615 -0.00560592 0.261271 0.0729641 -0.107721 -0.055023 0.149762 -0.977266 0.377666 0.719905 -0.0910887 -0.241831 0.282241 -1.90566 -7.15753 -0.473435 1.56057 -1.43592 -0.246057 -0.0432448 0.103388 -0.511635 0.140086 -0.553603 -0.179745 -0.0618069 -1.02394 -0.035912 0.125184 0.604417 0.777257 -0.325691 -0.0397738 0.178927 -0.412066 3.97978 1.44758 -0.218071 -0.144236 -0.0317785 0.715081 1.68539 -0.215459 -0.024028 -0.256007 3.16982 -1.30799 0.327476 -1.5486 0.0895606 -1.56422 1.62126 -0.447364 0.994147 -2.11827 0.318627 1.12213 0.176433 -0.608558 0.605875 -2.62668 0.32444 -1.42562 0.737181 0.106013 -0.429245 -0.0250864 1.46092 -0.597382 0.701518 -0.0680473 3.02351 0.36013 -0.975013 -22.5509 -2.46993 1.92923 -3.14735 1.26456 -2.60005 2.29312 -1.94502 1.51075 0.912965 0.926318 -3.25697 2.30234 -1.37023 0.962255 0 0 0 0 0 0.0551615 -0.00560592 -0.0026274 0 0 0 0 -0.00467149 0 0.0684374 0 0 -0.00320178 -0.0231434 0.00384205 0 0.033953 -0.604813 0.00236464 0 0 2.10198 -0.00161695 0 -0.0995639 -1.14678 0 0 0.301287 -0.981585 0 0.208386 0 1.11276 0 0 0.156947 0 0 1.36 -0.066616 -0.0450442 0 -0.0319701 0.0612481 0 0 0.291845 0 -0.0219385 -0.965663 0.0236199 0 0 0.0101569 -0.0059467 0 -0.0706301 0.0577488 -0.0180546 0.223561 0.195286 0.107226 0 0.0876187 -0.0199121 -0.717068 -0.0599947 -0.236632 0 0 0 -2.30048 0.153377 -0.115958 -0.106302 0.12089 -0.166799 0.00515822 -0.005796 0.0052697 5.28655e-05 0 0 0 0 0 0 0.261271 0 0.0729641 0 0 0 0 -0.0206563 1.08386 0 0 0.168741 0 0.0202673 0 0.0224269 0 0 -0.0685608 0 0.0903262 -0.0356147 -0.0217411 -0.00883627 0 0 0.220397 0 0.500873 0 0.985688 -0.0928895 0 -0.438802 0.251845 -0.00425163 0 0.00108641 0 0 0.108262 0 -0.175004 0.00292485 0 0 -0.00277855 0 0 0.220566 -1.74319 -0.14258 0 2.20464 0 0.222999 0.111098 0.0386207 0.168094 0.00911715 -0.403525 0.0486978 -0.14329 -1.07943 3.20005 -0.120408 0 0 0 0.189136 0.101788 0 0 0 0 -0.281719 -13.0166 -3.52843 4.29447 -1.28334 0.895506 -0.629146 -0.213582 0.20827 -0.160013 0.247802 0 0 0 0 0 0 +132 0 0.00310037 0.35892 0.318713 0.361563 -0.270927 -0.0728157 0.470934 1.38868 0.0696219 -3.05877 -0.131452 0.193034 -0.521692 0.732847 -0.15498 1.17233 4.12087 -1.18216 -0.63693 0.0747264 -0.670789 -0.641128 0.611047 -1.38019 0.471791 0.406133 0.528363 0.0577473 0.671235 0.155573 0.586022 -0.28274 -1.20611 1.0686 0.180627 -0.0291507 0.52385 -1.9746 -0.100309 -0.135547 -0.745187 1.57331 0.0787937 1.32862 -0.837569 -0.0650371 0.209375 -1.2446 0.0715663 1.40429 -1.14127 -8.25304 0.479348 -0.836433 0.554345 -2.24532 -0.0595609 0.146768 1.61616 0.533768 1.68401 0.329009 5.28889 -0.8592 -0.75968 -0.160975 3.20966 0.917103 0.0760863 2.11842 -0.0805558 0.0961435 -1.01005 0.163957 -0.395101 -3.75577 7.68836 8.95467 -6.14328 5.96092 -2.24276 -1.0519 6.17411 -2.60002 1.8478 -1.11877 3.60094 -0.348813 -1.04936 0.499482 -0.630797 0 0 0 0 0 0.318713 0.361563 -0.0157996 0 0 0 0 -0.0135679 0 0.0079463 0 0 -0.0117809 -0.0370178 0.0044958 0 -0.0078164 0.140172 0.139924 0 0 0.505912 -0.0025668 0 -0.140754 0.0481295 0 0 0.0284044 -0.028283 0 -0.350184 0 0.162893 0 0 -0.00590056 0 0 -0.518871 -0.193819 -0.171022 0 -0.228965 -0.135212 0 0 0.14508 0 -0.0623899 0.0618877 0.0786555 0 0 0.0213768 0.00893335 0 -0.0130198 0.360256 -0.0325704 -0.323306 0.00914634 0.0305935 0 -0.136914 -0.101655 0.0473617 -0.141389 0.044534 0 0 0 0.947075 0.0681535 8.5916e-05 0.0537801 -0.0593394 0.0603615 0.0146995 -0.017002 0.0211002 -0.0168019 0 0 0 0 0 0 -0.270927 0 -0.0728157 0 0 0 0 -0.0732992 0.856998 0 0 -0.324321 0 -0.0402063 0 0.0052994 0 0 -0.0128208 0 -0.0361873 0.000210416 -0.0175234 -0.00500815 0 0 0.0464009 0 3.54477 0 1.00048 0.397712 0 0.027153 0.125766 0.000145348 0 -0.0103169 0 0 0.104963 0 1.18799 -0.356525 0 0 -0.046821 0 0 -0.139756 1.46735 0.0326775 0 0.463832 0 0.189721 0.130603 -0.04632 0.149105 -0.0452793 -0.134306 0.385141 -0.0580507 -0.845925 -2.3579 0.0275123 0 0 0 0.174142 0.0674751 0 0 0 0 -0.217855 -5.93508 1.0597 -1.60234 -0.0129471 0.000579894 -0.676911 0.369375 -0.191684 0.10776 0.115914 0 0 0 0 0 0 +133 0 -0.16446 0.396687 0.269523 0.124298 -0.0686128 -0.0537119 0.361289 1.08891 1.11518 -1.77992 0.00790596 0.225097 -0.473531 0.501504 0.0606894 0.792289 0.652382 -0.948291 -0.15209 0.48657 -0.55264 -0.720986 0.615752 -0.840781 0.385138 0.381052 0.696433 0.0151354 0.465468 0.211988 0.905333 0.160124 -1.40797 1.08463 0.136303 0.0258528 1.87895 -3.25298 -0.139966 0.086682 -0.675114 2.83077 0.0491753 0.115089 -0.63863 0.0196791 0.0848234 -0.144779 -0.00496184 -0.0537736 -0.273928 -5.03714 0.263496 -0.0902515 0.0528175 -0.445314 0.490846 -0.5022 0.635638 0.75335 0.968589 -0.00318493 2.10302 -0.865944 0.0398993 -0.462748 1.81435 0.471737 -0.968194 0.737111 0.59207 0.0419015 -1.87626 -1.21072 -0.155806 -2.80197 16.4535 7.21379 -4.47608 4.81251 -2.40805 1.8042 2.73907 -1.00847 1.08099 -1.12484 2.74565 -0.1295 -0.700509 0.379448 -0.437426 0 0 0 0 0 0.269523 0.124298 0.033814 0 0 0 0 0.0173157 0 -0.0291049 0 0 0.0159115 0.171183 -0.198433 0 -0.0299296 0.0866674 -0.213024 0 0 -1.32838 0.012012 0 -0.140008 0.72419 0 0 -0.145507 0.225295 0 -0.234435 0 -0.822509 0 0 -0.100661 0 0 -0.0707332 0.246765 0.22648 0 0.480931 0.0997369 0 0 -0.39679 0 0.067056 0.106645 -0.0844443 0 0 -0.0348311 -0.0584805 0 0.0553094 -0.528854 0.058339 0.222581 -0.12387 -0.0761803 0 0.186497 0.0985767 0.353036 0.0136986 0.146488 0 0 0 0.0589518 -0.176696 0.146552 -0.0018451 0.000694396 0.0108792 -0.020662 0.0236357 -0.0275735 0.0254048 0 0 0 0 0 0 -0.0686128 0 -0.0537119 0 0 0 0 0.0555064 0.261285 0 0 -0.35719 0 -0.0536115 0 0.00954643 0 0 -0.0662406 0 -0.0520617 0.0320417 -0.0225057 -0.0110516 0 0 0.0491911 0 -0.595705 0 -0.350365 0.0313854 0 0.311317 -0.00932453 -0.00569346 0 0.00498473 0 0 0.0451959 0 -0.0104712 -0.38765 0 0 -0.0650259 0 0 -0.0771699 0.507309 0.222279 0 -0.660725 0 0.113215 0.0969699 -0.167958 0.161784 -0.0500811 -0.482568 0.0210295 0.0271827 -0.399455 -2.82608 0.0264443 0 0 0 0.0543933 -0.0460559 0 0 0 0 -0.11084 10.7213 3.60006 -2.16235 0.698044 -0.205384 -0.36701 0.158138 -0.141406 0.271682 -0.355638 0 0 0 0 0 0 +134 0 -0.716357 -0.448385 -0.157533 -0.0447554 0.0641812 -0.00563591 -0.17429 -0.463372 -0.699592 1.59943 -0.00480419 -0.769028 0.284489 -0.826231 -0.0667661 -0.464122 -2.47975 0.643996 -0.440209 -0.700621 0.412103 0.56356 -0.373016 0.998052 -0.356828 -0.080705 -0.261393 -0.0137253 -0.0104244 -0.178205 -0.549714 -0.0351377 1.91854 -0.34712 -0.129102 -0.0411227 -0.536977 8.26954 -0.192423 -0.131408 0.404962 0.17641 -0.248961 -3.56964 0.374437 -0.0160074 -0.0300435 -0.545652 0.349406 0.712451 0.550264 1.05856 0.151442 -0.206912 0.0533572 -1.04505 0.0265285 0.0332383 -0.763092 -0.471131 -1.41165 -0.932255 -2.4585 1.13903 -0.654035 1.01166 -1.43147 1.08587 0.64489 -0.430556 -1.37239 -0.218204 0.477642 -0.53745 -0.0654301 1.84757 -38.1993 -11.1099 1.90658 -9.87125 5.4577 -6.93211 -3.20374 1.69613 -0.984366 0.345528 -1.61948 0.826532 -0.204018 0.105004 0.012615 0 0 0 0 0 -0.157533 -0.0447554 -0.0134801 0 0 0 0 -0.00677431 0 0.069052 0 0 -0.0102426 -0.103241 0.0867741 0 0.0333598 -0.347504 0.127583 0 0 -0.357943 -0.00723872 0 -0.105724 1.39659 0 0 -0.00916173 0.134001 0 -0.0373684 0 -0.206023 0 0 -0.0086233 0 0 0.659943 -0.0966685 -0.146442 0 -0.192745 -0.0380995 0 0 0.37723 0 -0.0329701 -0.067056 0.0274901 0 0 0.0241095 0.0182588 0 -0.0709444 -0.145881 -0.0377866 -0.723921 -0.00633237 0.11245 0 -0.0694824 -0.0226334 0.150972 -0.0207563 0.00357814 0 0 0 -1.11589 0.193926 -0.218405 -0.0618212 0.069851 -0.0793311 0.0137846 -0.0156496 0.0176679 -0.0155119 0 0 0 0 0 0 0.0641812 0 -0.00563591 0 0 0 0 0.0330528 0.2335 0 0 0.319031 0 0.0507266 0 -0.00684414 0 0 0.0614979 0 0.173674 0.0133436 0.0243002 0.0125422 0 0 -0.00552464 0 -0.630949 0 2.54189 -0.0325555 0 0.00586909 0.548457 0.00575764 0 0.00544646 0 0 0.00347308 0 -0.21656 0.0182429 0 0 0.0321997 0 0 -0.00177852 -0.526881 0.105226 0 0.599735 0 0.554997 0.092578 -0.0131919 0.120043 -0.0112713 0.0172322 -0.108243 -0.0180393 -0.333089 -1.803 -0.00612397 0 0 0 0.0441427 0.0448529 0 0 0 0 -0.0639373 -19.7021 -4.30785 2.18276 -1.73992 1.22118 -1.42361 -0.24283 0.16356 -0.162058 -0.0695475 0 0 0 0 0 0 +135 0 0.281779 0.155674 0.176186 0.286616 -0.217754 -0.0948474 0.570041 1.15931 -0.737219 -2.36922 -0.0995514 -0.177143 -0.256858 0.0976272 0.02031 -0.180578 -0.877588 -0.65037 0.261562 -0.901821 -0.38297 -0.299764 0.249692 -1.12425 0.202828 0.0105114 0.244228 0.00969056 0.075917 0.0190463 0.00286687 0.0348975 -0.520796 0.467743 0.0975062 -0.0445024 0.357553 -0.486868 -0.175881 -0.209171 -0.327042 0.842723 -0.0606315 -1.33253 -0.341372 -0.0450048 0.0332301 0.365795 0.402476 0.6781 -0.408998 3.96035 -0.651568 0.522868 -0.266999 -2.19518 -0.928737 -0.628821 0.887812 -0.0929278 1.66322 -0.0649755 0.751556 0.490042 -0.537447 -0.421165 0.263247 1.37324 0.95291 1.60681 0.249675 -0.428766 -0.00879173 -2.18826 0.081977 0.938265 3.06149 7.95966 -4.51865 4.52223 -1.18889 -0.109008 5.2387 -2.09238 1.92282 -1.42935 1.47647 0.00618433 0.04238 0.18963 -0.0918703 0 0 0 0 0 0.176186 0.286616 -0.0220539 0 0 0 0 -0.0158788 0 0.0709053 0 0 -0.0204396 -0.131961 0.184751 0 0.0352073 0.147984 0.40961 0 0 -0.581852 -0.00922913 0 0.230462 0.866256 0 0 -0.130624 0.159134 0 0.623637 0 -0.198042 0 0 -0.056895 0 0 1.27435 -0.22659 -0.293737 0 -0.31564 -0.073575 0 0 0.730519 0 -0.0662699 0.159428 0.070865 0 0 0.0367635 0.025209 0 -0.129846 -0.318079 -0.0404542 0.211013 -0.0784298 0.152801 0 -0.0918131 -0.0770067 0.555463 -0.131419 0.191427 0 0 0 -2.11032 0.366791 -0.529887 -0.118818 0.135057 -0.154038 0.0250497 -0.0290755 0.0363584 -0.0512266 0 0 0 0 0 0 -0.217754 0 -0.0948474 0 0 0 0 -0.133349 0.427462 0 0 -0.199986 0 -0.0147151 0 -0.00633375 0 0 0.0323163 0 -0.112677 -0.0287215 0.0323907 0.00742894 0 0 -0.0406927 0 2.5537 0 -0.942956 0.102337 0 -0.240029 -0.265592 0.00628951 0 -0.0155774 0 0 0.0372888 0 0.688583 -0.342145 0 0 -0.0244823 0 0 -0.176091 0.6737 -0.245027 0 0.015498 0 -0.329577 0.0476707 0.0780071 -0.0763254 0.0274801 0.27528 0.268407 -0.0329071 -0.210461 2.32506 -0.00114412 0 0 0 0.0602399 0.0085328 0 0 0 0 -0.0456577 7.20283 2.2814 -0.695015 0.935518 -0.955705 1.23836 0.25189 -0.130513 0.0380026 0.300085 0 0 0 0 0 0 +136 0 -0.388896 -0.7719 -0.35046 -0.239887 0.34989 0.111224 -0.109494 -0.568066 -0.604236 3.4797 0.240877 0.631945 0.594096 0.585185 0.147247 -2.18726 -8.66318 1.34798 0.333102 -0.193738 0.854264 0.951089 -0.723857 2.14286 -0.161291 -0.715527 -0.588627 -0.0652934 -1.00894 0.109976 -0.8369 0.365234 2.5153 -1.1417 -0.0744822 0.063827 -1.03307 7.50071 0.746594 0.0525301 0.817162 -2.21802 0.122359 2.26284 0.768588 0.0326607 -0.261989 0.972561 -0.495744 -0.244181 0.320205 0.837554 -0.158197 0.435913 -0.397019 -1.28991 -1.04952 -0.714974 -2.16735 -0.648579 -0.198777 0.231512 -4.00021 0.398383 -0.684897 0.279878 -1.71005 0.293771 0.379251 -3.72828 0.0926269 0.668473 1.25344 0.278261 0.292541 2.45407 -38.4545 -19.8207 5.0629 -14.6163 4.97129 -3.82921 -8.1641 1.78717 -0.532523 0.741561 -3.32422 -0.772122 1.71682 -1.5576 1.22095 0 0 0 0 0 -0.35046 -0.239887 -0.0141484 0 0 0 0 -0.000871252 0 -0.00961862 0 0 -0.0050073 -0.0758774 0.091349 0 -0.0114973 0.0369714 0.129092 0 0 0.070673 -0.00534185 0 0.069808 -0.565828 0 0 -0.0291142 0.270201 0 -0.154113 0 -0.0671847 0 0 -0.0260635 0 0 -0.173497 -0.012111 -0.0695879 0 -0.198954 -0.035209 0 0 0.140323 0 -0.00600172 0.120529 0.00713699 0 0 0.00979565 0.03789 0 -0.00997885 -0.163778 -0.0118595 0.573655 -0.0353977 -0.00773527 0 -0.014681 -0.00025362 0.0748803 0.0373379 0.0440203 0 0 0 0.211773 0.0468355 -0.0981689 0.0101804 -0.0131721 0.0232124 0.00594535 -0.00690019 0.00861187 -0.0162871 0 0 0 0 0 0 0.34989 0 0.111224 0 0 0 0 0.0612275 -0.380351 0 0 0.397075 0 0.0556838 0 0.000609176 0 0 -0.0616842 0 0.205469 -0.0368107 0.00235311 -0.00515806 0 0 0.0319272 0 -3.42922 0 -0.0275692 -0.10005 0 -0.446383 0.173846 0.00339629 0 0.010291 0 0 -0.0578464 0 -0.48741 -0.19879 0 0 -0.0300584 0 0 -0.0613511 -0.245808 -0.0450233 0 -1.11165 0 1.25855 -0.0900319 0.0644865 0.129275 0.0724005 -0.359235 -1.0935 0.0148483 0.457011 -0.621353 -0.100037 0 0 0 -0.0698582 -0.0478224 0 0 0 0 0.137669 3.70063 -1.35607 2.78574 -0.541461 0.376247 -0.151302 -0.323547 0.16955 -0.0937267 0.136879 0 0 0 0 0 0 +137 0 -1.36104 -0.20198 -0.411044 -0.41553 0.260467 0.139995 -0.993504 -2.83427 -0.427939 3.13989 0.182249 -0.379525 0.602854 -0.57062 -0.0691182 -1.21182 -5.20354 0.779703 -0.53143 -0.252767 0.301435 -0.223402 -0.662931 1.10546 -0.72595 -0.367401 -0.482463 -0.0780323 -1.02761 -0.19803 -0.649756 -0.0176614 -0.351909 -0.998322 -0.239165 -0.0071756 -1.81337 0.419764 0.639944 -0.00480756 0.820382 -5.21077 -0.0808082 -0.128955 0.429847 0.0125512 -0.283256 -0.455042 -0.627529 -0.118586 0.623682 -3.57796 0.295664 -0.747999 0.126072 -0.724457 -0.173147 0.17989 -0.918982 0.0337089 -0.289327 -0.044687 0.954535 2.49707 0.971402 1.19845 -1.9502 -1.83386 -0.587287 -0.579583 -1.10325 0.585736 0.887833 1.26424 0.206181 0.60824 -2.30934 -6.05247 4.42911 -1.5031 0.196829 -0.152602 -6.13065 3.0871 -2.70869 3.81603 -2.21162 -1.04342 2.20023 -2.10132 2.11984 0 0 0 0 0 -0.411044 -0.41553 -0.0277912 0 0 0 0 -0.00380527 0 -0.0105922 0 0 0.00628766 -0.0424135 0.0661378 0 0.00295241 -0.67975 -0.0973564 0 0 0.269791 -0.0032761 0 0.190672 -3.08098 0 0 0.0239297 -1.35555 0 -0.142484 0 -0.084283 0 0 -0.0192494 0 0 -0.444831 -0.0506814 0.0927392 0 -0.386298 0.0617836 0 0 -0.0730942 0 -0.0290255 0.337131 0.0491965 0 0 -0.0184275 0.0605353 0 0.0395637 0.0843317 0.0343847 3.00415 0.0533922 -0.0675241 0 -0.0612925 -0.0748377 0.0787237 0.326546 -0.104891 0 0 0 0.852175 -0.168736 0.252598 0.0255337 -0.0427638 0.0949552 -0.0101892 0.0147308 -0.0236984 0.0366388 0 0 0 0 0 0 0.260467 0 0.139995 0 0 0 0 -0.0415575 -0.828305 0 0 0.559205 0 0.0695474 0 0.00146622 0 0 -0.0224416 0 -0.0667879 -0.0706724 0.0230018 0.00111786 0 0 0.0367151 0 -2.257 0 1.23304 -0.0832433 0 -0.449962 0.202438 0.00346192 0 -0.008653 0 0 -0.0968847 0 -0.302698 0.322614 0 0 0.0496761 0 0 -0.160026 -0.611289 -0.271331 0 -0.773828 0 0.524977 -0.312643 0.335384 0.0153801 0.0252812 0.0680277 -0.264508 0.125951 0.630443 -2.65362 0.0224705 0 0 0 0.0120396 -0.100607 0 0 0 0 0.173482 -8.09703 -3.06632 1.79056 -1.01365 0.95285 -1.00147 -0.549345 0.407131 -0.364564 0.278648 0 0 0 0 0 0 +138 0 -0.0362446 -0.149635 0.109832 0.0595186 -0.108745 -0.0620116 0.352973 1.77569 0.383104 -2.42162 -0.133175 0.54582 -0.263982 -0.575993 -0.0786565 -1.0261 -4.04027 -0.701751 -0.189345 0.164112 -0.389493 -0.0923688 0.32968 -1.11756 0.358327 -0.190537 -0.396873 0.0514182 0.524722 0.0213031 0.406686 -0.129708 -0.375772 -1.19026 0.0885235 -0.0346928 -1.06901 -1.73088 -0.188627 -0.0105861 -0.50811 -2.94043 0.0306515 0.200275 -0.76059 -0.00619863 0.168518 -0.306012 -0.248137 -0.421105 -0.54476 4.43828 0.155295 -0.329445 0.178718 -1.16519 0.0644272 0.178638 1.3888 0.909756 -1.82489 -0.111238 -0.0994133 -1.15873 0.253811 -0.38334 0.953231 -0.923048 -0.364834 2.0631 0.347256 -0.0116857 0.500879 0.880081 -0.136581 0.835113 11.9909 5.72627 -2.40148 1.42977 -1.07122 2.32186 5.74167 -2.90634 2.65373 -2.45498 3.91333 -0.581497 -0.565378 0.930497 -1.08244 0 0 0 0 0 0.109832 0.0595186 -0.0445646 0 0 0 0 -0.0265886 0 -0.00621858 0 0 0.00116794 0.0478107 -0.0133514 0 -0.00436013 -0.609824 0.0805728 0 0 0.350813 0.00305216 0 -0.240973 -7.03713 0 0 -0.00228667 -2.42181 0 -0.186432 0 0.250776 0 0 0.00764344 0 0 -0.40528 -0.369339 0.0287415 0 -0.618855 -0.00757151 0 0 -0.0945573 0 0.0152874 0.0909989 -0.0158281 0 0 0.0116938 0.147177 0 0.0214425 0.254313 -0.037534 7.26573 0.0491585 -0.0502543 0 -0.0958914 0.0129115 -0.232386 1.16264 -0.114496 0 0 0 -0.513097 0.133554 -0.42298 0.00537567 0.0100689 -0.0295215 0.000657414 -0.00618837 0.0184932 -0.0483845 0 0 0 0 0 0 -0.108745 0 -0.0620116 0 0 0 0 0.0317404 -0.422309 0 0 -0.194346 0 -0.0253642 0 -0.0118195 0 0 -0.0372817 0 -0.1403 0.053493 0.0142303 -0.00819752 0 0 -0.123801 0 -4.47541 0 -0.537229 -0.355543 0 0.412581 -0.38975 0.000584792 0 0.00346524 0 0 -0.0428915 0 -1.39102 -0.134411 0 0 -0.0206967 0 0 0.0164748 0.536868 0.313963 0 -0.506521 0 -0.215604 0.129213 -0.234302 0.665794 0.0110562 -0.606714 0.0625113 -0.0996018 1.18083 1.89295 -0.0779568 0 0 0 -0.0263744 0.0791055 0 0 0 0 0.183768 5.41643 2.50906 -2.50115 0.718643 -0.610085 0.476502 0.176445 -0.249895 0.31527 -0.437758 0 0 0 0 0 0 +139 0 0.167365 -0.0552431 0.0613777 0.111914 0.0580599 -0.128693 0.743421 2.355 -0.165537 -2.28461 -0.317565 -0.139204 -0.0652639 -0.537309 -0.104704 0.121703 -3.86167 -0.598363 -0.817319 0.692295 -0.288209 0.103224 0.0536192 -0.960322 0.485684 0.301486 -0.443925 0.0608964 0.918935 -0.0473908 -0.0206837 -0.276589 0.504589 -1.00964 0.116294 -0.125362 -2.46369 2.05614 -1.12569 0.118014 -0.0589529 -5.32757 -0.443832 -2.48439 0.0754282 0.0224656 0.237872 -2.07545 0.96568 0.149483 -0.559025 -5.29773 -0.193805 -1.05046 0.372101 -1.71427 0.562412 0.449201 1.169 -0.254208 0.214614 -0.263993 -0.528123 0.671982 1.42505 0.530472 -0.960434 -4.15839 0.320534 1.0793 -0.538758 -1.13153 -0.165119 -1.39487 -0.0611394 -1.56397 -6.25049 3.17973 -6.13342 1.65379 -0.206993 -2.49677 5.72298 -2.41931 2.06382 -3.11256 -0.388087 3.0017 -2.44182 2.44992 -1.89565 0 0 0 0 0 0.0613777 0.111914 0.00171903 0 0 0 0 -0.000720597 0 0.0912759 0 0 -0.0085916 -0.0453356 0.20071 0 0.041895 -0.174194 0.453197 0 0 -0.893973 -0.00318452 0 -0.417218 -2.6247 0 0 -0.0692591 -0.958617 0 -0.6135 0 -0.342531 0 0 -0.021809 0 0 -0.729726 -0.00968554 -0.121602 0 0.0251911 -0.176504 0 0 0.145928 0 -0.0166739 -0.326216 0.0493015 0 0 -0.00485151 -0.0510979 0 -0.00240724 -0.00358649 0.0610067 -0.0528924 -0.129215 -0.0264736 0 -0.00598331 -0.0817302 1.20988 -0.684665 0.258558 0 0 0 -0.498109 0.177716 -0.668194 -0.0178996 0.0186621 0.0439816 0.00563264 -0.00873159 0.0199189 -0.0726405 0 0 0 0 0 0 0.0580599 0 -0.128693 0 0 0 0 -0.0145686 -0.172269 0 0 0.0169102 0 0.00900335 0 -0.0130979 0 0 -0.152925 0 0.0683256 0.0132528 0.0685146 -0.0214909 0 0 -0.12769 0 -4.12678 0 -0.415138 -0.144384 0 0.0642752 0.116254 0.00905149 0 0.00124536 0 0 -0.0243028 0 -0.787393 -1.27477 0 0 -0.160175 0 0 -0.233793 -0.268596 -0.0298793 0 -0.261256 0 0.269946 0.0811656 -0.00281962 -0.0611451 0.142 -0.161391 -0.317971 0.0201576 -0.111228 -1.30671 -0.111899 0 0 0 0.0368548 -0.0716143 0 0 0 0 0.0416127 11.6905 2.52891 -1.28484 1.36366 -0.905276 0.688808 0.00718132 -0.043155 0.0460433 -0.0378556 0 0 0 0 0 0 +140 0 -0.391984 -0.342327 -0.170674 -0.1046 0.179969 0.00651787 -0.238126 -0.496233 -3.8978 1.38722 0.125132 -0.500627 0.0877624 -0.640694 0.123278 0.0918662 0.3022 0.610732 0.743896 -0.505235 0.481161 0.591016 -0.970388 1.09871 -0.240213 0.0324715 -0.340965 -0.0222812 -0.507201 -0.256591 -2.02998 0.216704 1.79847 -0.606018 -0.137952 0.063226 -0.783189 6.36931 0.637428 -0.0571832 -0.271991 -1.0169 0.321243 -1.46582 -0.998962 -0.00556102 -0.104618 1.35736 0.116866 -1.08698 -0.249181 1.29174 -1.1181 0.39412 -0.251557 2.74236 -0.188072 -0.0973235 -1.06016 -0.412484 -0.646945 -0.0784122 -4.53053 1.30435 1.40116 1.14164 -2.88387 -2.12995 5.06903 -2.68112 -0.620744 -0.323722 2.90802 -0.364819 0.201135 0.990461 -25.7066 -8.12759 1.27529 -4.87384 2.21015 -3.32904 -2.16505 1.26457 -1.21154 1.17233 0.71527 -0.389906 0.494708 -0.281904 0.317966 0 0 0 0 0 -0.170674 -0.1046 -0.012985 0 0 0 0 -0.012711 0 0.0297716 0 0 0.0117911 0.126392 -0.142602 0 0.00335574 -0.176176 -0.188778 0 0 0.0627337 0.00891709 0 -0.187102 3.68889 0 0 0.0249873 0.740919 0 -0.121496 0 0.189577 0 0 0.0272178 0 0 0.672071 -0.182825 0.166779 0 -0.18847 0.0639393 0 0 -0.0779531 0 -0.0446297 -0.106162 0.0548393 0 0 -0.00921447 0.00968403 0 -0.0290482 -0.612198 0.0188706 -2.85589 -0.0468021 0.0531037 0 0.00619264 -0.0644671 0.334638 -0.416163 0.119908 0 0 0 -1.02695 -0.0148771 0.00725746 -0.0756795 0.0853291 -0.0771153 -0.0110961 0.0136158 -0.0221366 0.0250439 0 0 0 0 0 0 0.179969 0 0.00651787 0 0 0 0 -0.0538696 0.46597 0 0 0.362393 0 0.0522209 0 0.00137515 0 0 -0.0367906 0 0.186083 -0.0363367 0.0220977 -0.00152138 0 0 0.0659081 0 0.699148 0 1.06562 0.033393 0 -0.353434 0.344227 0.00473516 0 -0.00470242 0 0 0.0253931 0 0.0483557 -0.254633 0 0 -0.0177932 0 0 0.0620913 -0.798169 -0.219431 0 0.763215 0 0.339083 0.0344739 0.145334 0.194862 0.085401 -0.1259 0.022936 -0.0341637 -0.868414 0.0586058 -0.0876048 0 0 0 0.0243871 0.0822009 0 0 0 0 -0.16557 -10.7759 -3.73911 2.97088 -1.02544 0.649376 -0.469178 -0.361894 0.275873 -0.247925 0.207133 0 0 0 0 0 0 +141 0 -0.430662 -0.503415 -0.115123 0.248078 -0.140586 -0.0538369 0.325194 0.958508 3.53613 0.777697 -0.0702114 0.0382125 0.597683 -0.0423096 -0.161962 -0.989301 -1.90938 0.902696 -0.796442 -0.193395 0.72312 0.882405 -0.0671927 1.23171 -0.00470646 -0.458303 -0.3108 0.00136794 0.175788 -0.0142325 0.74917 -0.359146 2.07061 -0.206194 -0.0244189 -0.037721 -0.243638 5.74937 -0.320012 -0.0126382 0.672859 1.48706 -0.0974271 -0.570609 0.924881 0.00098474 0.0180739 -1.7788 -0.251356 0.166468 -0.0636368 -6.98346 1.5355 -0.334033 0.207826 -1.92749 1.32564 -0.083913 -0.973213 -0.164666 0.542355 -0.0462387 -4.90647 1.23056 -0.410239 0.37351 -3.17848 -0.607664 -4.43319 -2.52669 0.0190906 0.157435 -2.65582 -0.9771 -0.0315807 -1.25014 -26.2778 -6.15693 0.0226382 -5.01492 2.68354 -3.04941 0.151538 -0.918348 0.975252 -1.63421 -0.662227 0.264278 -0.352839 0.128764 -0.110202 0 0 0 0 0 -0.115123 0.248078 0.0322729 0 0 0 0 0.0119691 0 -0.00425092 0 0 -0.00503611 0.0721375 -0.0561402 0 -0.0275045 -0.116527 0.166596 0 0 -1.05865 0.00522961 0 0.119493 0.0916871 0 0 -0.137206 0.0381893 0 0.122112 0 -0.344203 0 0 -0.0439307 0 0 0.215431 0.168087 -0.0738012 0 0.454678 -0.0484577 0 0 0.0406134 0 0.0320184 0.0108418 -0.0524519 0 0 0.00529365 -0.0755885 0 -0.0138456 -0.0378476 -0.001296 0.132201 -0.0981962 0.008016 0 0.0769033 0.071139 0.254852 -0.0876054 0.174981 0 0 0 -0.881765 0.111372 -0.30249 -0.0166402 0.0274965 -0.0644901 0.00582268 -0.00943173 0.0188476 -0.0397813 0 0 0 0 0 0 -0.140586 0 -0.0538369 0 0 0 0 -0.0256345 -0.135176 0 0 -0.270787 0 -0.0200375 0 -0.00903373 0 0 0.0546966 0 -0.0233558 -0.0106108 0.00386012 0.00874425 0 0 -0.0472061 0 -1.2822 0 -0.163624 -0.100131 0 -0.0743244 -0.196062 0.00276615 0 -0.00279693 0 0 -0.0437095 0 -0.325797 0.114495 0 0 0.0255347 0 0 -0.0711759 0.592096 -0.059282 0 -0.934253 0 0.317026 0.109371 -0.0720355 0.496311 0.00200225 -0.43174 -0.416239 -0.0353007 -0.0665448 -0.96368 -0.0653218 0 0 0 -0.106106 0.0816204 0 0 0 0 0.0456129 2.47564 1.9612 -0.496077 0.0361602 -0.354041 0.665955 0.352629 -0.257617 0.180291 0.0737312 0 0 0 0 0 0 +142 0 -0.158861 0.105625 0.118309 0.035901 0.118321 -0.090905 0.467038 1.02006 2.56454 -1.22794 -0.278542 -0.601532 -0.082059 -0.539328 -0.0405138 -0.719119 -5.53996 -0.38703 -0.763728 -0.438584 -0.296527 -0.387717 0.652246 -0.764629 0.126024 3.0234e-05 0.573296 0.03896 0.653105 -0.0251867 1.34955 -0.0102771 -0.675572 1.05153 0.0620512 -0.136663 1.54041 -0.517423 -1.09918 -0.135697 0.157653 2.33556 -0.561939 -4.00066 0.646291 -0.0339545 0.159663 -1.31099 -0.290246 1.22842 0.456211 1.74714 0.787628 -0.433487 0.149271 0.166369 0.501065 -0.499631 0.239188 0.29342 0.251306 0.386025 -0.21615 0.715333 -0.959546 0.278291 0.112672 1.1681 -3.3006 0.845481 -0.739963 0.577599 -3.18325 -0.441011 -0.133575 -1.81168 5.2676 3.7727 -4.30795 -0.00716946 0.710551 -0.983313 0.961115 -0.305429 0.733224 -2.05585 -0.462753 0.498129 -0.436397 0.450259 -0.409434 0 0 0 0 0 0.118309 0.035901 0.0070683 0 0 0 0 0.00788066 0 0.06857 0 0 -0.00780216 -0.0879476 0.165039 0 0.0370897 -0.00960812 0.311472 0 0 -2.17208 -0.00621188 0 0.148906 0.30281 0 0 -0.280703 0.0598729 0 0.491803 0 -1.16634 0 0 -0.15233 0 0 1.21208 0.113617 -0.109831 0 0.104477 0.0244126 0 0 0.484291 0 0.0290899 0.11462 -0.0514834 0 0 0.00562109 -0.00216712 0 -0.0843666 -0.904022 0.0173014 2.01398 -0.167838 0.0757618 0 0.123075 0.0723709 0.774445 0.195431 0.263006 0 0 0 -2.41351 0.252136 -0.552403 -0.138837 0.151741 -0.141358 0.00722274 -0.00896241 0.0144083 -0.0420631 0 0 0 0 0 0 0.118321 0 -0.090905 0 0 0 0 -0.0198577 -0.38709 0 0 0.0575654 0 0.00885166 0 -0.0180684 0 0 0.0519293 0 -0.139963 0.00618475 0.0930832 0.0065574 0 0 -0.165775 0 -2.17768 0 -0.807702 -0.116905 0 0.0407522 -0.175031 0.0105972 0 -0.00205127 0 0 -0.0437323 0 -0.322075 -0.457498 0 0 -0.0507591 0 0 -0.249335 0.146035 0.00282713 0 -0.943851 0 0.158695 -0.0641969 0.0274533 -0.0853042 0.0247563 -0.124196 -0.21091 0.0680413 0.45264 0.134719 0.00497683 0 0 0 0.00395178 -0.141772 0 0 0 0 0.156319 17.0602 3.55393 -1.6156 1.38982 -0.814424 0.486926 -0.0918459 0.000430799 0.0666196 -0.129006 0 0 0 0 0 0 +143 0 0 0 -0.367543 -0.361163 0 0 0 0 -3.64447 3.5854 0.638152 0 0.406831 0 -0.0165755 0 0 0.512582 0.150757 0 0.168873 0 -0.64805 1.12225 0 0 -0.524096 0 0 0 -1.35131 -0.538708 0 -1.69121 0 0.0610738 -2.35136 0 3.80354 0 0.560615 -7.86045 0.781434 0 0.159149 0 0 -1.25275 -0.541871 0 2.19517 0 -0.445104 0.489856 0.264628 0 -0.642192 -0.145752 -1.00749 -0.718775 0 0 0 0 2.24389 0 2.59057 -1.63423 2.26002 1.13456 0.796595 2.19094 3.45489 0 0 0.71129 0 -6.24936 0 -0.650435 -5.6421 0 -3.5521 1.86563 -5.79122 0 -1.24567 -2.74664 0.344976 -6.44814 0 0 -0.00190351 -0.000157411 -0.465021 -0.108014 -0.367543 -0.361163 -0.0351526 0.0434664 -0.106319 -1.52728e-05 0.00751731 -0.013132 -0.0125363 0.0571853 -0.00134924 -0.000308834 -0.011698 -0.0993307 -0.0541553 -0.026467 0.0164024 -1.34127 0.0331738 -6.84695e-05 0.113292 0.144088 -0.00462879 0.0219734 -0.355068 -10.6885 0.877964 -0.00351709 0.00535372 -3.90477 -0.0167531 -1.55967 -0.00492277 0.172525 0.143826 -0.0742793 0.00628962 -0.00627633 -0.000592259 -4.50424 -0.279813 -0.251457 -0.000779528 -0.748366 0.247888 0.00983598 -0.00458694 -1.09878 -0.0123182 -0.0534497 0.1576 0.241695 0.00626372 0.00467135 0.0152902 0.0642089 -0.0541597 -0.0807842 -0.742928 -0.00764532 5.8169 -0.255603 0.118669 0.06379 -0.0536056 0.00392794 -2.60335 0.794361 1.9709 0.0208372 -0.0231365 -0.000588763 34.0693 1.90737 1.78811 0.154449 -0.0670963 1.59899 0.00733423 0.00103196 0.0371804 -0.409224 2.95034e-05 0.00265403 -0.0286117 0.157046 -1.91776 0 0 -0.465021 0 -0.108014 0 0 -2.12209 0 -3.25339 0.0226593 0.032134 0.606609 0.010823 0.144384 -0.321252 -0.0693069 0.0850077 -0.232052 0 0 0 0 -0.0935537 0 0.0870737 0 -0.754067 0 0 0.864931 0 0 -0.0451528 0 0 -0.00123314 0.00768187 0 0.101646 0 -0.36092 0 0 0 0.0113542 0.0769915 0 0 0.0345793 0 0 0 -0.439812 0 1.05732 0 -0.361175 0.416313 0.205439 0 0 0.655564 0.205092 -1.0358 0 0.205756 0 0.088322 0 -0.548911 -0.293104 -0.0425118 -0.169233 0.251467 -0.00459725 0.779121 0 -2.14366 0 0.692291 -2.63151 0 -0.317828 -0.141341 -0.573143 0 0.121891 -0.440557 0.265092 -0.688293 0 0 +144 0 0 0 0.192501 0.662168 0 0 0 0 0.303339 -2.26131 0.820941 0 -0.120811 0 0.099941 0 0 -0.270784 0.226106 0 -0.155525 0 -0.185425 -0.591923 0 0 -0.23327 0 0 0 -0.569853 0.376713 0 0.102628 0 0.040687 -0.624773 0 2.0787 0 -0.513387 1.45835 0.0202315 0 -2.95963 0 0 0.021688 -0.889582 0 -1.34174 0 0.0694978 0.433725 -0.269886 0 0.157654 -0.487933 0.484894 0.430296 0 0 0 0 -2.56047 0 -0.440627 3.1318 2.70437 -0.453799 -0.377873 0.320256 1.81768 0 0 0.556042 0 3.00488 0 4.63598 -2.50369 0 6.2903 -4.47981 3.86101 0 7.57457 -4.35892 4.56331 -3.31946 0 0 0.491813 0.0406706 -0.190251 -0.0641577 0.192501 0.662168 0.036744 0.0546712 -0.503063 -0.000337363 0.00450289 0.00810522 0.0139271 0.0451212 0.0301064 -0.00633524 -0.0614421 -0.31062 0.635226 0.457521 0.0740364 -0.19931 0.885425 0.00185078 0.31819 -1.08064 -0.0221086 0.0170519 0.0657117 -2.92624 0.494367 0.0179094 -0.293582 -0.956102 -0.0644882 -0.0383854 -0.03985 -0.525828 0.0988722 0.195336 -0.107955 -0.103877 0.00178578 0.406804 0.114641 -0.793862 -0.00459606 0.45846 0.387196 -0.0464488 -0.0174494 -0.0738153 -0.0463714 0.102948 3.49311 -0.172093 -0.0875472 0.117291 0.11489 -0.0442492 -0.0747714 -0.250144 0.164299 -0.194132 2.58913 0.257839 -0.0703325 -0.105083 0.0927074 -0.484605 1.66105 -0.446872 -0.338032 0.059932 -0.145859 0.0109872 -3.077 2.21207 -3.52143 0.415611 -0.437657 -2.31395 0.0457452 -0.0660676 0.497789 -1.17706 0.00763129 -0.0130302 0.11037 -0.0754687 -1.07986 0 0 -0.190251 0 -0.0641577 0 0 0.222011 0 0.609904 -0.0573582 -0.00820134 -1.04119 -0.00661348 -0.0912528 -0.025758 -0.0578805 0.0644695 -0.495643 0 0 0 0 -0.385916 0 0.038011 0 -0.0872165 0 0 0.363186 0 0 -0.00890556 0 0 -0.0520802 0.011061 0 0.044077 0 -0.0236345 0 0 0 0.0066988 0.071705 0 0 0.023742 0 0 0 0.147446 0 -0.276929 0 1.27516 -0.973025 0.678763 0 0 0.201648 -0.386366 1.10964 0 0.0557079 0 0.0480988 0 0.0865321 0.17391 -0.485236 0.362356 0.169283 0.0207187 0.167214 0 3.54466 0 1.65635 -0.926014 0 1.46563 -0.986127 0.902967 0 0.908318 -0.748604 0.662905 -0.351495 0 0 +145 0 0 0 -0.217625 0.034788 0 0 0 0 -2.53695 -2.37949 -0.0480891 0 0.467307 0 0.00918897 0 0 -0.286302 0.788627 0 -0.10627 0 -0.9368 -0.996829 0 0 -0.724304 0 0 0 -1.50488 0.313095 0 -1.39287 0 -0.0974167 -2.24292 0 -0.831199 0 0.0973751 -4.20442 -0.434614 0 -1.70469 0 0 2.96819 0.427406 0 -0.79738 0 -1.04871 0.128295 -0.475207 0 -1.08168 -0.117263 0.8725 0.0925157 0 0 0 0 -0.0755261 0 -0.33736 -1.87409 2.56341 -1.46381 -0.931268 -1.80301 4.06043 0 0 3.25593 0 4.50314 0 2.22479 1.71125 0 2.22523 -1.0577 3.29387 0 1.68897 0.406459 1.70646 1.6798 0 0 0.0257201 0.00212693 0.163355 0.0757021 -0.217625 0.034788 -0.0136567 0.0414091 0.0284895 -2.1658e-05 0.00695142 -0.0099204 0.00195251 0.205887 0.00127592 -0.000412044 -0.00189861 -0.0113359 0.858 0.0179457 0.152726 -1.37013 1.25363 8.19422e-05 0.186836 1.56123 -0.000926025 -0.0146105 0.259099 -6.17 -0.175199 0.00133976 0.13802 -3.05335 -0.00236018 0.634497 0.000485661 0.763692 -0.0594203 0.0188127 0.0615057 -0.0070498 0.000150796 1.52083 -0.214595 -0.0134826 -0.000192886 -0.308229 0.0427467 -0.00515484 -0.00012894 0.155585 -0.00500093 -0.0316639 1.32146 0.189404 -0.0031435 9.15082e-05 0.0062418 0.0150432 0.0139353 -0.00635527 -0.473076 0.0546054 14.4114 -0.0950887 -0.023022 -0.133111 0.0403377 -1.07998 -1.64261 0.868465 0.956414 0.0132573 -0.0813126 0.000442302 -11.5033 -0.30467 -5.38721 -0.0258803 0.0472581 -0.998406 0.00186993 -0.00571733 0.0547366 -1.29474 0.000413389 -0.00115616 0.0126032 -0.0360953 0.382691 0 0 0.163355 0 0.0757021 0 0 0.262561 0 -0.0789273 -0.132963 0.0227743 -0.618979 -0.0259594 -0.131724 0.0885493 -0.0692456 0.00657781 -0.574297 0 0 0 0 -0.159462 0 0.202257 0 -0.000215507 0 0 0.0866188 0 0 0.0190059 0 0 -0.043583 0.0103787 0 0.0242 0 -0.112101 0 0 0 -2.68426e-05 0.0704593 0 0 0.124379 0 0 0 -0.0195435 0 -0.0984755 0 0.179987 -0.226575 -0.284408 0 0 -0.188893 -0.297915 -0.149148 0 -0.250949 0 -0.162472 0 0.0392322 0.260475 -0.260155 0.309386 0.131478 -0.00255224 0.100625 0 2.08106 0 2.16369 -0.485305 0 0.695857 -0.358619 0.287993 0 0.61917 -0.45635 0.442785 -0.187184 0 0 +146 0 -0.869716 -0.421222 0.191523 0.123494 -0.496665 -0.195754 0.893554 3.52152 0.692878 -2.58919 -0.137303 -0.440035 -0.298634 -0.736982 0.117701 -2.28058 -12.6774 -0.314611 0.320376 -0.390992 -0.133995 0.0403022 0.386464 -0.934239 0.300213 -0.403854 0.388447 0.0277055 0.549939 0.00313159 0.57889 0.1844 0.310328 0.6145 0.0717598 -0.0115989 1.76022 2.33023 -0.873931 -0.11308 -0.426942 3.00613 -0.195466 -3.88703 -0.411832 -0.0282109 0.0978689 0.480375 0.519118 1.72929 -1.79301 -4.46019 -0.241427 0.263434 -0.76385 -3.10711 -0.292214 -0.259494 1.21 0.430076 0.461687 -0.0372596 1.13947 1.64202 -2.60453 0.627946 -2.14786 1.72175 -0.548552 -0.785417 -0.926986 -1.82618 -1.46429 -1.37051 0.929063 0.294459 -7.89068 2.99166 -6.40804 1.9378 -0.610913 -2.5272 3.35762 -3.33434 5.07241 -6.41635 1.44126 0.922872 -0.124894 2.58668 -2.23643 0 0 0 0 0 0.191523 0.123494 0.0110458 0 0 0 0 0.00572519 0 0.0728415 0 0 0.0043308 0.0693609 0.1558 0 0.0240275 0.548734 0.532855 0 0 -0.625464 0.00325581 0 0.193675 1.22104 0 0 -0.0560456 1.00804 0 1.11126 0 -0.194493 0 0 -0.0144322 0 0 3.12352 0.122025 0.0911131 0 0.234629 -0.0308533 0 0 0.581265 0 0.0190961 2.14054 0.0320551 0 0 -0.00849907 -0.0185424 0 0.0275426 -0.0209369 0.0633302 -2.48862 0.208236 0.0610632 0 0.0337217 -0.543944 0.212647 -0.171039 0.263094 0 0 0 -24.3398 -1.11641 -3.3905 -0.107026 0.251694 -3.44487 -0.00308888 0.00695224 -0.0966655 -0.561474 0 0 0 0 0 0 -0.496665 0 -0.195754 0 0 0 0 0.198194 -0.740047 0 0 -0.466079 0 -0.0517398 0 -0.0311421 0 0 -0.0721025 0 -0.0151894 0.174075 -0.0512421 -0.00599721 0 0 -0.255586 0 -8.4227 0 0.661828 -0.31596 0 1.35772 -0.135743 -0.00615929 0 0.025756 0 0 -0.0940447 0 -1.67848 -0.91853 0 0 -0.0867384 0 0 -0.192952 2.12537 0.0262582 0 -1.63681 0 0.683027 0.0456534 -0.039996 0.0667791 0.0191887 0.241141 -0.180195 -0.0481933 1.06205 -4.49082 -0.0112484 0 0 0 -0.0967358 0.0156187 0 0 0 0 0.275298 -6.26738 1.27583 -4.86365 -0.203 0.0770584 -0.756037 0.15654 -0.21494 0.361218 -0.985642 0 0 0 0 0 0 +147 0 1.38454 0.0410383 0.278259 0.244143 -0.135536 -0.152114 1.3144 3.53427 0.66196 -2.31623 -0.116899 -0.0270886 -0.429107 -0.208833 -0.0292446 0.848373 2.59161 -0.54753 0.263796 -0.271572 -0.282028 0.244809 0.538437 -0.744633 0.710403 0.314602 0.226697 0.0943949 0.123229 0.104393 0.721678 -0.0988353 0.837789 0.661601 0.293987 -0.00208144 0.351685 0.649332 0.492215 -0.127393 -0.693588 2.03924 0.454405 -1.49809 -0.990825 -0.0548997 0.202633 0.449815 -0.631854 -0.0211676 -1.33798 -4.11613 -0.215847 0.241589 -0.0205967 -0.281326 -0.328442 -0.232264 1.1436 0.779902 -0.447893 0.0272314 -0.545372 -2.82238 0.0227736 -0.1892 3.28381 0.585769 -0.496505 -0.791189 0.0860986 0.372127 -0.413188 -0.10222 0.0137948 -2.48697 -3.84019 4.76785 -8.19919 1.89597 -1.56365 0.222313 3.27808 -2.96438 4.75887 -6.9124 3.46752 -2.32009 1.79906 -0.819411 -0.501135 0 0 0 0 0 0.278259 0.244143 -0.00615899 0 0 0 0 -0.00438994 0 0.0210648 0 0 -0.00324786 0.00174844 -0.11261 0 -0.00879505 -0.0237252 0.105264 0 0 0.716628 0.000104855 0 -0.718786 -2.49579 0 0 0.055693 -0.476199 0 -1.2968 0 0.560405 0 0 0.0499914 0 0 -3.15902 -0.0942423 -0.0743435 0 -0.138685 0.103286 0 0 -0.368408 0 -0.0226468 -1.02673 0.0534476 0 0 0.00600446 0.000758367 0 -0.0265255 -0.280963 -0.0420685 5.97463 -0.176823 0.068954 0 0.030655 -0.114841 -0.991499 0.449518 0.234903 0 0 0 22.3807 1.01381 0.898664 0.0964665 -0.20045 2.89995 0.00282063 -0.00520423 0.0768287 -0.049436 0 0 0 0 0 0 -0.135536 0 -0.152114 0 0 0 0 0.0844212 0.221761 0 0 -0.345208 0 -0.0425175 0 -0.0214492 0 0 0.108874 0 -0.117467 0.0522793 -0.0488663 0.0049576 0 0 -0.162458 0 -2.37526 0 -2.2774 -0.586644 0 0.329703 -0.616804 -0.0071096 0 0.0184744 0 0 0.0165566 0 -1.37482 -0.212852 0 0 -0.0677536 0 0 -0.040588 0.737699 0.110935 0 -0.101796 0 -0.659226 0.120529 -0.081983 -0.0931988 0.0380829 -0.00969807 0.558999 -0.323159 0.980001 6.29917 0.0091101 0 0 0 0.0857498 0.141823 0 0 0 0 -0.023164 10.3141 2.44028 -2.13745 0.891069 -0.941028 1.51029 0.225256 -0.25065 0.348895 -0.356768 0 0 0 0 0 0 +148 0 0.721722 -0.0665103 0.181344 0.105027 0.0949083 -0.0191692 0.217556 0.759539 0.597414 -1.46347 0.00469275 -0.0681242 -0.282713 -0.135004 -0.0505952 -1.00482 -2.64656 -0.34235 -0.0817994 0.156809 -0.0916787 -0.0181636 0.36469 -0.34982 0.0904988 -0.296826 0.158453 0.0326883 0.433138 -0.0251479 0.531473 -0.133292 -0.307129 0.0781643 -0.000104056 0.0476947 1.21557 -1.95476 0.291481 -0.022382 -0.41926 2.33536 0.335418 -0.339143 -0.45824 -0.0100109 0.122428 -0.252415 -0.403055 0.816863 -0.274603 -0.899802 0.0327035 -0.0740254 0.191332 -0.605768 -0.0460796 0.164625 0.242067 0.43446 -0.902828 0.00840487 0.055664 0.466919 -0.317169 -0.386881 -0.220704 1.31902 -0.471996 0.205036 0.295393 0.516723 -1.42264 0.263734 -0.153569 -1.75023 7.97186 2.29527 1.7524 0.961243 -0.062759 1.59221 0.987671 -0.817868 1.90993 -1.97758 1.60367 -1.18471 0.17385 0.0450325 -1.76144 0 0 0 0 0 0.181344 0.105027 0.00952576 0 0 0 0 0.0047294 0 -0.115374 0 0 0.00365751 0.0602593 -0.502184 0 -0.0681406 0.711831 -0.816158 0 0 -0.657246 0.00283026 0 0.127757 3.46408 0 0 -0.0506546 1.70545 0 0.400014 0 -0.234022 0 0 -0.0149685 0 0 0.565082 0.100731 0.0764285 0 0.201203 -0.102327 0 0 -0.147876 0 0.0153549 -1.98123 -0.12804 0 0 -0.00693931 -0.016875 0 0.0126681 0.234834 -0.0210081 -7.23794 -0.0892876 -0.0939486 0 -0.00913368 0.722395 0.937547 -0.459103 -0.352638 0 0 0 -4.65919 -0.442962 2.83904 -0.0208495 0.0442225 -0.62271 -0.00253082 0.00572657 -0.0796715 0.908168 0 0 0 0 0 0 0.0949083 0 -0.0191692 0 0 0 0 0.0106186 0.541598 0 0 -0.290689 0 -0.049577 0 0.00645613 0 0 0.0262885 0 0.0395812 0.00128831 -0.0689713 0.00420514 0 0 0.0372303 0 1.53954 0 -1.0146 -0.182712 0 -0.0068972 -0.103454 -0.0132232 0 0.00169914 0 0 0.0721499 0 0.0628981 -0.239606 0 0 -0.0298244 0 0 0.324634 -0.883682 0.134056 0 0.865535 0 -0.416202 0.103781 -0.110293 0.66837 -0.00201506 -0.523062 0.0742638 -0.0786489 -0.343051 -0.378964 -0.082594 0 0 0 -0.0109099 0.122128 0 0 0 0 -0.0996543 5.70085 1.54432 -0.209439 0.429723 -0.278268 0.497968 0.153367 -0.133156 0.184739 -0.123336 0 0 0 0 0 0 +149 0 0 0 0 0 0.387595 0.00570398 -1.32063 -2.99759 0 0 0.0659271 -1.26356 0 -2.1722 -0.00319169 0 0 0 -0.0858463 -3.6565 0 0 0 0 -0.343617 0 0 0.310693 0.220538 -0.796842 0 0.0465164 0 0 -0.163959 0.0144927 0 0 0.243226 -1.24876 0 0 0.112918 -3.45454 0 -0.584343 0.343129 0.0414668 -0.20146 -3.10164 -0.157543 0 0.0527188 -0.0964325 0.173723 1.02396 0.133246 0.208663 0 0 0.432892 -0.903901 0 -2.59897 0.0606164 -0.0780782 0 0 0 0 -0.348231 0.21878 0 0.473856 -1.98502 0 0 0 4.5788 0 -0.332635 1.53324 0 -0.175794 0.157479 4.28549 0 -0.275503 0.0291878 -0.449821 1.59471 0 0 0 0.0888599 0.00225306 0 0 0 -0.0153801 0 0 -0.000680121 0 0 -0.00154365 0 0 0 0 -0.0345922 0 -0.000876089 0 -0.0610679 0 -0.153911 -0.0754833 0 0.000224549 0 0 0.0763796 0 -0.00189351 0 0 0 0 -0.000872187 0.00539337 0 -1.83592e-05 0 0 0 0 0 0 0 0 0 0 -0.00345633 0 0 0 0 0 0 0 0 0 0 -0.10495 0 0 0 -0.0393612 0.0362825 0 0.0815756 -0.104717 0 -0.0458523 0 -0.0840627 0 0 0 0.0574641 0 0 -0.0718722 0 0 0 0.0144928 0 0 0 0 -0.063858 0 0.387595 0.0888599 0.00570398 0.00225306 0.00935646 0.022731 0.0107317 -0.390606 -0.272424 -0.000171369 6.87618e-05 -0.0162582 -3.34606e-06 -0.00095131 0.000221237 -0.00260672 0.0206191 -0.00831272 -0.67582 0.92652 0.239109 -0.0836078 0.0446199 -0.0869768 0.0518687 0.0354528 -0.0956888 0.022769 -8.16622 0.0415859 3.80296 -1.32441 4.31975e-06 -0.600915 1.36821 0.000767258 0.00242061 -0.0852088 0.0132609 0.208494 -0.00707546 0.00266455 -3.67256 0.0194859 0.00235199 0.0100192 -0.00727215 0.147309 0.0529845 0.903176 3.17325 0.168163 -0.0553954 0.769857 -0.000232366 0.154166 -0.00960862 -0.0662636 -0.0301379 0.0383978 1.79055 -0.055967 -0.0537264 -0.1936 3.1884 -0.117161 0.545862 0.0614665 -0.113051 -0.0925387 0.00152662 -0.0550631 0.000212967 0.0263513 -0.041582 0.00812077 -11.9938 -0.0588759 1.51183 0.00830466 0.348118 -3.11202 0.000205271 0.0326932 0.00133483 -0.0237035 2.10004e-05 -0.0919828 0.099752 -0.0351026 -0.398532 0 +150 0 0 0 0 0 -0.248286 0.28146 0.0390752 0.364115 0 0 0.0336225 1.90818 0 3.83906 0.00151065 0 0 0 0.0318419 3.20622 0 0 0 0 -0.117651 0 0 -0.297834 4.04408 1.06008 0 0.00166688 0 0 -0.0973652 0.00683604 0 0 0.0325737 2.1021 0 0 0.0404656 6.82577 0 1.10456 0.7228 -0.0747212 -0.0826857 2.74196 -0.122112 0 -0.0211469 0.0123111 -0.0197406 -6.43734 -0.268883 -0.174762 0 0 0.13365 -2.57314 0 0.20423 -0.420172 0.198998 0 0 0 0 0.0482425 0.289162 0 -6.03356 -0.839815 0 0 0 -0.126645 0 -0.409796 -3.17937 0 -0.129196 0.145821 -2.40617 0 -0.135365 0.138974 -0.470562 -7.26847 0 0 0 0.00794077 0.00020134 0 0 0 -0.00128139 0 0 -5.91865e-05 0 0 -4.68913e-05 0 0 0 0 -0.00288021 0 -7.49393e-05 0 0.000278301 0 -0.00834824 0.00227918 0 3.31886e-05 0 0 0.0120249 0 -2.59405e-05 0 0 0 0 0.00041589 0.000936528 0 6.19913e-06 0 0 0 0 0 0 0 0 0 0 -0.00459136 0 0 0 0 0 0 0 0 0 0 -0.00607089 0 0 0 -0.00316373 0.00375085 0 0.00530822 -0.0104753 0 -0.00405204 0 -0.00370641 0 0 0 -0.000261877 0 0 -0.0113152 0 0 0 -0.00185371 0 0 0 0 -0.0100535 0 -0.248286 0.00794077 0.28146 0.00020134 -0.45355 -0.124802 0.000959013 -0.571771 0.0300069 -1.5314e-05 -0.0197653 0.0171943 -2.99014e-07 0.00021102 1.97703e-05 3.56957e-05 -0.01505 -0.000742849 0.0191562 -0.377227 0.176002 -0.162051 0.0223567 -0.0764033 -0.134628 0.278734 0.00837075 -0.0140222 5.59812 -0.00625564 0.519488 1.77085 3.86025e-07 -0.751341 0.648935 0.000360184 0.000635807 -0.123038 0.0051771 1.53027 0.000230568 0.0564613 3.59482 -0.582877 -0.00221757 2.28182e-05 -0.190555 -0.0696383 -0.0890871 -1.51216 2.5103 0.171326 0.0185258 -7.58494 -2.07649e-05 2.05289 6.96467e-05 -0.158288 -0.0179688 0.483704 0.300718 0.000495473 -0.0711158 0.146698 -31.0135 0.0432691 -0.154949 -0.0168203 -0.277973 -0.117639 -0.000182064 -0.0103788 1.90313e-05 -0.0424885 0.0895158 -5.88622e-05 -1.63837 -0.0386585 1.24994 0.000515211 -0.00143831 -3.88052 -5.21064e-06 -0.0221018 0.0580728 -0.498807 1.87666e-06 -0.0368515 -0.0921145 0.207635 -1.85343 0 +151 0 0 0 0 0 -0.656633 -0.033311 0.597133 3.08081 0 0 0.0698467 0.190526 0 1.13761 0.0072751 0 0 0 -0.0219901 -3.51126 0 0 0 0 0.207007 0 0 -0.170129 4.24538 0.43633 0 0.0813507 0 0 -0.0148 0.00511389 0 0 0.0470233 0.0959381 0 0 -0.0026686 -0.566011 0 0.427497 0.35415 0.0906264 -0.00263037 2.03853 0.111047 0 0.00363721 -0.0337973 0.12257 -0.137513 -0.023054 0.0333302 0 0 -0.181356 3.29741 0 1.19563 0.128505 0.228561 0 0 0 0 0.0906341 0.129828 0 3.75038 0.616679 0 0 0 -4.50058 0 0.131836 -6.40449 0 0.106988 -0.224298 -6.98591 0 0.04375 -0.462942 0.557348 -9.34162 0 0 0 -0.00477375 -0.000121039 0 0 0 -0.000482346 0 0 1.77932e-07 0 0 8.49556e-05 0 0 0 0 0.00021727 0 2.10123e-05 0 0.00340842 0 -0.0123215 -0.0213961 0 3.80071e-06 0 0 0.00167373 0 -0.000302324 0 0 0 0 -0.00658561 0.000255753 0 -0.000104307 0 0 0 0 0 0 0 0 0 0 9.0316e-05 0 0 0 0 0 0 0 0 0 0 0.000845966 0 0 0 -8.20761e-05 -0.000564062 0 -0.000645866 0.000175211 0 -0.000298486 0 0.0015964 0 0 0 -0.00320728 0 0 -0.00157496 0 0 0 -0.00166665 0 0 0 0 -0.00139934 0 -0.656633 -0.00477375 -0.033311 -0.000121039 -0.768105 -0.150848 -0.000576529 0.664851 -0.0571854 9.20632e-06 -0.0106605 -0.0291253 1.79758e-07 -0.000425135 -1.18853e-05 -0.000294953 0.000927084 0.000446577 1.41039 0.262906 0.0848104 0.567198 -0.0160417 0.201494 -0.0530387 0.393187 -0.0222598 0.0152914 8.46375 -0.00928164 0.224543 1.15938 -2.32066e-07 2.55427 0.415714 -0.000257832 0.0015826 0.105401 0.00347269 2.24889 -0.00076007 0.0580618 3.10534 2.94877 -0.000284391 0.00429446 0.475146 0.083787 0.0696673 0.388143 -1.81012 0.406477 -0.0312907 1.8343 1.24832e-05 -0.394681 -0.000710468 -0.186609 0.0323241 -0.530583 -0.737082 -0.0191177 0.0243274 -0.0347841 -1.80375 0.112677 0.185334 0.0127232 -0.355464 -0.0279307 0.000430352 -0.044514 -1.1441e-05 0.0312701 0.0891199 0.000600455 -0.708166 0.0409378 -6.75497 -0.000987841 0.268156 -5.81552 2.68653e-05 -0.0374631 0.186035 -3.25761 -1.12819e-06 -0.0944739 -0.16979 0.467791 -3.11152 0 +152 0 0.812414 0.228142 0 0 0.0101745 0.160125 0.540976 0.418948 0 0.204869 0 1.07799 0 1.26224 0 -0.2179 -1.68948 0.0258568 0 2.15911 0.00490041 -0.109546 0 0.0581957 0.0056018 0.0298551 0.000926795 -0.247142 0.373447 0.592551 0 0 -0.441402 0.00988687 -0.00592665 0 0.0209262 -3.36196 0 1.30508 0 0.0999492 0 1.99947 0 0.788973 -0.0692111 0 0 1.41603 0.105588 4.83843 0 0 0 -0.629956 -0.0420248 0 -0.11131 0 -1.04674 -1.64061 -0.772445 1.6266 -0.0125078 -0.369616 -0.246395 -0.00397612 0 -0.345933 0.0612614 0 -0.0384469 -0.834509 0.381706 -0.195366 12.1697 -0.21255 3.77253 0.21677 -0.311475 3.59442 -0.143088 0.148048 -0.446901 0.262357 0 0 0 0 -0.748141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0101745 0 0.160125 0 0 0 0 -0.124711 0.0319957 0 0 -0.0863773 0 -0.00453968 0 -0.000629036 0 0 0.814605 0 -0.587247 -0.0362965 -0.0164527 0.118923 0 0 -0.0441841 0 4.15987 0 -6.24951 0.692022 0 -0.295022 -2.08545 0.00072119 0 -0.00418862 0 0 0.0126068 0 1.78043 1.36988 0 0 0.203504 0 0 0.499563 0.947429 -0.00668475 0 1.94461 0 0.404909 -0.0131229 0.00726943 -0.173005 -0.0746725 -0.196014 -0.266108 0.00894397 -0.162854 5.37411 -0.00555949 0 0 0 -0.0234993 -0.0434709 0 0 0 0 -0.0420972 32.7582 0.840357 4.96712 0.505839 -0.485453 3.20288 0.0189436 -0.0378028 0.062023 0.140005 0 0 0 0 0 0 +153 0 -0.467307 0.139665 0 0 -0.1878 -0.222268 0.534456 1.54852 0 -0.0105307 0 -0.409436 0 -1.40547 0 0.742103 3.64782 -0.00508328 0 -1.23709 0.000935016 -0.140204 0 0.0132518 0.444904 0.14795 0.00106163 0.402369 -0.307163 -0.406935 0 0 -0.183744 -0.00539123 0.252257 0 0.0158141 1.13227 0 -0.926384 0 -0.0277868 0 -1.81239 0 -0.669222 0.183847 0 0 -2.29638 0.0873045 -4.15753 0 0 0 1.06974 0.015479 0 -0.0216887 0 0.462586 0.620432 0.492458 -0.654339 0.043379 -0.479099 -0.0362002 0.0122805 0 -0.075811 -0.0244109 0 -0.0266878 1.84427 -0.421516 0.0280794 -0.571424 -0.249591 -1.48534 -0.0919108 0.0448118 -0.367269 -0.0452315 0.0826797 -0.123447 -1.49988 0 0 0 0 0.615353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1878 0 -0.222268 0 0 0 0 0.381782 -0.165869 0 0 0.0177935 0 0.00127656 0 -0.00251217 0 0 -0.0250172 0 -0.276361 0.145642 0.000111146 0.00413876 0 0 -0.0245656 0 0.599369 0 0.844273 -0.84787 0 1.02878 -0.258307 -0.000746354 0 0.0456121 0 0 -0.0156632 0 -1.05154 0.347931 0 0 0.0474824 0 0 0.00717509 -1.4736 -0.291941 0 0.93583 0 -0.57174 -0.041284 0.0863605 -0.308237 -0.0864418 0.206541 -0.116059 -0.0502358 -0.116197 7.34368 0.0434629 0 0 0 -0.0219676 -0.00562555 0 0 0 0 0.0237057 -2.46604 -0.0999136 -2.09996 -0.226014 0.208116 -0.389822 -0.0244082 -0.0152117 0.0567459 -0.600482 0 0 0 0 0 0 +154 0 -1.29902 -0.136424 0 0 -0.383962 0.0161506 -0.516187 0.668912 0 -0.0586562 0 0.32569 0 -0.0749341 0 2.3554 4.38886 0.00670651 0 0.495418 6.40329e-05 0.0388702 0 -0.0223642 -0.0676997 0.954902 0.00220734 -0.553624 -2.01337 0.133508 0 0 0.724169 0.0298539 -0.272238 0 0.00571441 5.1106 0 0.490609 0 0.125542 0 -0.769593 0 0.35233 -0.996956 0 0 -2.24426 0.0378823 -5.98892 0 0 0 -0.508512 -0.0153994 0 0.00612253 0 0.741288 -0.966229 0.723891 -0.383686 0.0392235 0.584225 0.176881 -0.0328182 0 0.0989775 0.0225795 0 -0.0347818 -0.593269 0.151016 -0.104202 -14.6241 0.212165 -5.51873 0.00600846 0.184484 -3.5243 0.142712 -0.137902 0.0462201 0.185872 0 0 0 0 4.03347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.383962 0 0.0161506 0 0 0 0 0.61004 0.0615238 0 0 -0.0935966 0 -0.0129077 0 0.001693 0 0 -0.47401 0 -0.392621 0.217456 -0.0157154 -0.0498141 0 0 0.0230978 0 -8.31347 0 6.06909 -0.327476 0 1.78825 0.785814 -0.00137417 0 0.0794723 0 0 0.00470281 0 -1.8231 -1.70182 0 0 -0.172227 0 0 -0.227611 0.292658 -0.45236 0 0.637026 0 -1.0735 -0.0269333 0.157043 0.219265 -0.115966 0.0557972 0.342403 0.0711766 -0.179884 11.8431 0.0611079 0 0 0 0.0548849 -0.0198276 0 0 0 0 -0.0452261 -34.851 0.482336 -9.47522 -0.45004 0.46243 -3.31977 0.0556702 -0.116262 0.153564 -1.10397 0 0 0 0 0 0 +155 0 0.800114 0.275992 0.000577443 0.0477473 -0.0623695 0.0409086 1.34206 1.86447 -0.000396984 0.318999 -0.014906 1.32549 2.62561e-07 2.79579 -0.00107475 0.813479 4.43676 0.110278 -0.00287531 4.87109 0.0135339 -0.0229138 -3.16419e-07 0.082419 0.513568 0.0538813 0.0109666 0.277981 1.21385 0.621766 -1.41593e-05 -0.0729363 0.106465 0.06594 0.337235 -0.000307641 0.00478267 -0.65031 -0.0406835 1.66777 1.21169e-05 0.160436 -0.000780065 5.7408 0.000372767 0.510025 0.599086 -0.198606 0.00262706 2.11953 0.0494643 6.27467 0.00297775 -0.000586539 -0.0106824 3.35788 0.171402 -0.0672561 -0.150553 -6.28651e-05 -2.09425 0.542125 -2.51794 0.377777 -0.113981 -1.3392 -0.499241 0.0836385 5.86563e-05 -0.328946 0.0940529 -0.0691827 -0.0191206 0.0184242 0.280446 0.0853174 2.42296 -0.206257 -2.3383 0.0758467 0.131342 -3.15403 -0.225354 0.147214 -0.269514 -5.16253 -7.73592e-07 5.64588e-05 -0.00199091 0.126206 -4.76322 0 0 0 0 0 0.000577443 0.0477473 0.000155902 0 0 0 0 3.35758e-06 0 0.00413863 0 0 4.52877e-05 1.24185e-05 0.000419205 0 5.79307e-05 -0.000464453 0.029938 0 0 -0.0598634 8.81483e-07 0 -0.000575934 -0.154828 0 0 -0.0090996 -0.0166777 0 -0.0221999 0 -0.000886077 0 0 -0.000130698 0 0 -0.0438781 4.77904e-05 0.000627766 0 0.00221267 0.00172797 0 0 -0.0270991 0 0.000346659 -0.0597838 -0.000470991 0 0 -1.07101e-05 -0.000231016 0 -0.000914172 -0.0230851 2.48954e-05 -0.224373 2.72036e-05 0.0127043 0 0.00165133 0.00315325 -0.0700998 1.49625e-05 0.0110489 0 0 0 0.0901548 0.00157274 -0.0216341 -0.00181928 0.00212422 0.0247558 -3.54165e-05 4.62416e-05 -8.43412e-05 -0.0126338 0 0 0 0 0 0 -0.0623695 0 0.0409086 0 0 0 0 -0.146732 0.464442 0 0 0.0469764 0 0.0121454 0 0.0132082 0 0 0.583301 0 -0.0534786 -0.0476049 0.0600557 0.0675339 0 0 0.117298 0 10.134 0 -4.45966 0.853225 0 -0.325727 -1.14684 0.00979824 0 -0.0208197 0 0 0.0525688 0 3.0117 1.27787 0 0 0.146672 0 0 0.387719 -5.79435 -0.236723 0 1.68233 0 -1.32791 0.195678 -0.129054 -0.10449 -0.274991 -1.41999 -0.408694 0.0405898 -0.117124 0.806715 0.034118 0 0 0 0.0773124 -0.0930722 0 0 0 0 -0.114904 25.6639 1.91364 2.09631 0.68601 -0.45489 2.07875 -0.124367 0.0583373 0.0285075 0.0757165 0 0 0 0 0 0 +156 0 -0.281009 0.0509406 0.000265455 0.0254225 -0.280664 -0.174513 0.48818 1.49004 0.00132839 -0.0421517 0.00600881 -0.988706 -2.31985e-07 -2.62877 -9.96031e-05 1.46806 2.58887 -0.00968149 8.07368e-05 -2.9757 9.00421e-05 -0.0411394 2.01075e-07 0.00904292 0.171415 0.582956 -0.0069955 0.140611 0.467151 -0.646854 1.62724e-05 0.00310424 0.143817 -0.0894779 0.0320971 1.71124e-05 -0.029848 1.59717 0.0270867 -1.21316 -2.01635e-05 -0.344679 0.000213482 -4.92202 -0.00174399 -0.518734 0.252836 0.0272622 -0.00099627 -1.24629 0.101355 -12.8225 -0.000741492 0.00117478 -0.0162822 -2.6076 -0.0479785 0.0144693 0.012606 2.74067e-05 0.838534 0.726744 0.630435 0.66518 0.0618107 0.0576096 -0.118327 -0.10294 -2.36073e-05 -0.0130266 0.00194021 0.00532228 0.0723266 1.48396 -0.304915 -0.217534 -3.70175 -0.699071 -1.38987 -0.34384 0.277926 -1.3987 0.00597289 0.0664615 -0.181298 -1.52199 3.61924e-06 -9.47475e-05 0.00293702 -0.035294 -1.83313 0 0 0 0 0 0.000265455 0.0254225 -0.00014164 0 0 0 0 -1.16543e-06 0 -0.00117142 0 0 4.48165e-05 -8.39314e-06 -3.35568e-05 0 -7.93281e-06 0.000183426 -0.00574793 0 0 0.0135901 -4.7735e-07 0 0.000121267 0.0174847 0 0 0.0014646 0.00938004 0 0.00804198 0 0.00014025 0 0 1.45639e-05 0 0 0.0331844 -1.68592e-05 0.000455678 0 -0.00204181 0.00223495 0 0 -0.00161656 0 3.93555e-05 0.00514135 -0.000311318 0 0 0.000469393 0.000271402 0 -0.00110461 0.00645017 -0.0016421 -0.0454273 1.5334e-05 0.00253615 0 -0.00203547 0.00232492 -0.00858346 -0.00392383 -0.00317426 0 0 0 -0.0306423 -3.5623e-05 0.006343 -0.000800825 0.00144108 -0.00553905 0.000102703 -7.91141e-05 -0.000108248 0.000423795 0 0 0 0 0 0 -0.280664 0 -0.174513 0 0 0 0 0.0152186 -0.13671 0 0 0.00956972 0 0.00242372 0 -0.0025722 0 0 -0.303178 0 -0.66281 0.148878 0.0241962 -0.0424973 0 0 -0.0172553 0 -6.09926 0 -0.519314 -1.1776 0 0.795718 -1.29919 0.00319253 0 0.0250522 0 0 -0.0171893 0 -2.62551 -0.634904 0 0 -0.0981686 0 0 0.406978 0.213252 -0.0633456 0 3.29681 0 -0.416531 -0.0568816 0.1364 0.0788142 -0.0402631 0.871494 0.0422893 0.0234453 -0.790799 13.095 0.0295071 0 0 0 -0.0587618 0.00666665 0 0 0 0 -0.00310564 -4.123 -0.878335 -1.7137 -0.975629 0.583691 0.284824 -0.0510728 0.0127526 0.026186 -0.480221 0 0 0 0 0 0 +157 0 -1.27742 -0.165432 0.00193992 0.100616 -0.418183 -0.305642 0.964621 2.5428 0.00941732 0.181254 0.0589487 -0.585357 -2.16531e-06 -0.504707 0.00237511 -0.857323 -3.7637 0.109447 0.00549574 -0.1173 0.0123377 -0.133636 2.64492e-06 0.0509729 0.675502 -0.321604 0.00400082 0.804298 2.49203 -0.447578 0.000160127 0.128165 0.201918 0.0654491 0.361274 0.00121794 -0.0657688 3.07987 0.164294 -0.823641 -0.000136246 -0.0636696 0.00320688 -0.691542 -0.00835493 -0.767948 1.48647 0.30201 -0.00649002 -1.75118 0.0542863 -2.90949 -0.00657249 0.00761996 -0.0999738 -0.474716 -0.1618 -0.140336 -0.0136837 0.000164577 -1.23157 -0.133375 0.0318713 -2.30765 0.0144321 -2.29119 0.11376 -0.0942399 -0.000167294 0.128488 0.0305897 0.116827 0.124023 -0.562473 -2.43982 0.0175764 -8.67858 -0.4042 -5.72715 -0.671428 0.431325 -7.48439 -0.233528 0.0711963 -0.0456884 -7.47092 1.73387e-05 -0.000489736 0.0138068 -0.227123 -9.77888 0 0 0 0 0 0.00193992 0.100616 -0.00144014 0 0 0 0 -3.03125e-05 0 -0.00297404 0 0 -0.000211628 -0.000118588 -0.000206406 0 -2.91454e-05 0.000717842 -0.0195621 0 0 0.0855077 -8.15541e-06 0 -0.000429779 -0.0127491 0 0 0.00832696 0.0224612 0 -0.00175842 0 0.00160841 0 0 0.000145198 0 0 -0.0544749 -0.000432565 -0.00329283 0 -0.0205936 -0.00702696 0 0 -0.00960708 0 -0.00273055 0.0146552 0.00305021 0 0 0.00121239 0.00237352 0 0.00274944 0.0321212 -0.00377436 -0.00722377 0.00178699 -0.00263611 0 -0.0095204 -0.00176714 -0.0080812 -0.0101784 -0.00741271 0 0 0 0.115252 -0.00816578 0.0341741 0.00891674 -0.00952507 0.000988334 0.000492422 -0.000511636 0.000330093 0.00454034 0 0 0 0 0 0 -0.418183 0 -0.305642 0 0 0 0 -0.262233 -0.196073 0 0 0.0123495 0 0.0112488 0 -0.00241557 0 0 0.00659624 0 0.558085 0.0653638 0.0722061 0.00823718 0 0 -0.0190058 0 0.708797 0 3.9445 -0.155685 0 0.619563 0.908834 0.00964533 0 -0.0353194 0 0 -0.015939 0 0.349991 0.0572815 0 0 0.0292241 0 0 -0.220198 0.828616 -0.230628 0 -1.85583 0 0.565033 -0.0645186 0.12827 -0.0337263 0.0657017 -0.0198597 -0.0465071 -0.0635698 0.185586 -4.74841 -0.0377201 0 0 0 0.0161165 0.0157729 0 0 0 0 0.00202181 -25.5736 -1.2026 -4.16741 -0.656448 0.491031 -1.97577 -0.139297 0.0234524 0.0826805 -0.457297 0 0 0 0 0 0 +158 0 0.0236418 0.353064 0.121243 0.261902 -0.252012 -0.24105 0.168475 2.59353 0.614556 -2.30464 -0.0358988 -0.0908653 -0.049003 -0.131916 0.0557178 1.91959 5.50986 -0.366412 0.143149 0.728205 -0.0328483 -0.40616 0.0632349 -0.618615 0.579739 0.747172 0.357817 0.259171 1.20484 -0.0431648 0.218817 0.118684 -0.674542 1.08153 0.0504078 0.0322422 0.851557 -0.373716 0.0866678 0.0889859 -0.170215 3.08124 0.127324 -0.534781 -0.479612 -0.165534 0.540521 0.568844 -0.207861 1.08635 -1.14969 -1.67802 -0.214938 0.196531 -0.271812 2.02477 0.0730247 0.0825571 0.951805 0.263774 0.941494 0.0695215 2.71821 -3.54796 -1.39088 0.559134 2.372 1.21165 -0.285395 2.11542 0.0435102 -0.132147 -1.15565 1.08215 0.175584 -1.96578 5.75848 7.06797 -9.20219 1.98067 -1.76243 -1.75038 1.76762 -1.82642 3.08911 -4.78624 0.56522 -0.472552 0.32907 0.871061 -5.22029 0 0 0 0 0 0.121243 0.261902 0 0 0 0 0 0 0 0.0283327 0 0 0 0 0.0869431 0 0.0123198 0.0108684 0.194698 0 0 0.00883448 0 0 -0.0681279 0.28491 0 0 -0.00828211 0.0469095 0 -0.0316768 0 -0.0247021 0 0 -0.00870181 0 0 0.286324 0 0 0 0 0 0 0 -0.0799866 0 0 -0.206075 0 0 0 0 0 0 0 0.104908 0 0.769713 0 0.0131415 0 0 0.0643731 0.353092 0 0.0921795 0 0 0 -0.523212 0 -0.230059 0 0 -0.134064 0 0 0 -0.0810579 0 0 0 0 0 0 -0.252012 0 -0.24105 0 0 0 0 -0.00750811 0.749959 0 0 -0.293515 0 -0.0353457 0 0.00263224 0 0 0.0396058 0 0.473994 0.0220463 -0.00298695 0.00642713 0 0 0.012125 0 -0.67863 0 2.64764 -0.149566 0 0.25474 1.34226 -0.00207603 0 -0.00356908 0 0 0.0831481 0 -0.341139 -0.898704 0 0 -0.0773618 0 0 -0.327115 -0.94379 0.114307 0 -0.321594 0 0.0816425 0.061497 -0.0693996 0.0269099 -0.0324685 -0.157356 0.0176721 0.0227044 -0.179305 -0.927843 0.0102126 0 0 0 0.167466 0.00522887 0 0 0 0 -0.180352 -19.2829 0.918456 -4.26404 -0.0364713 0.298263 -2.00811 0.0673564 -0.027734 0.119802 -0.200448 0 0 0 0 0 0 +159 0 -1.0425 -0.42706 -0.0680125 -0.0887788 -0.135886 0.184293 -0.136377 -0.567282 -0.412904 1.20176 0.139726 0.857253 0.0278627 1.42047 0.050058 -0.874003 -3.8379 0.270892 0.0431236 0.895786 0.0769996 0.305789 -0.0360472 0.454577 -0.214982 -0.320548 0.0165635 -0.2367 -0.687318 0.253804 -0.131206 0.322656 1.10403 -0.219001 -0.00753527 0.00738572 -0.0811394 5.26112 -0.0216101 0.298043 0.0995304 -1.68671 -0.0642186 5.05374 0.298561 0.250461 -0.495561 0.245946 0.130096 -0.83202 0.554489 5.15672 -0.0871306 0.0719109 -0.237405 2.36177 0.159639 0.0922824 -0.621076 -0.170159 0.42368 -0.0455363 1.08462 2.06759 0.912207 0.174793 -0.776117 -0.306359 0.194047 -0.664924 -0.209726 0.110099 0.401338 0.993753 0.765301 2.04473 -20.2868 -5.92165 0.034791 -4.3761 2.60261 -3.90116 -1.31964 0.927868 -1.06088 0.505848 -0.351853 0.27511 -0.241797 -0.5572 2.97798 0 0 0 0 0 -0.0680125 -0.0887788 0 0 0 0 0 0 0 -0.00652003 0 0 0 0 -0.0397283 0 -0.0048914 0.0227655 -0.0598304 0 0 0.293969 0 0 0.0644192 0.761927 0 0 0.0459696 0.132009 0 0.116465 0 0.0784766 0 0 0.0140309 0 0 0.422577 0 0 0 0 0 0 0 0.119397 0 0 0.23169 0 0 0 0 0 0 0 0.162479 0 1.83847 0 -0.057711 0 0 0.00750411 0.602863 0 -0.00532705 0 0 0 -0.757562 0 -0.0180205 0 0 -0.211303 0 0 0 0.0258952 0 0 0 0 0 0 -0.135886 0 0.184293 0 0 0 0 0.186028 -0.494064 0 0 -0.0822416 0 0.00601411 0 -6.38946e-05 0 0 -0.120706 0 -0.0476054 0.0438026 -0.0947034 -0.0125475 0 0 0.0306378 0 -0.00536623 0 2.62276 0.214313 0 0.384835 0.357678 -0.00541714 0 0.022264 0 0 -0.0635324 0 0.280269 0.809969 0 0 0.0932974 0 0 0.192382 -1.02397 0.320867 0 -0.572325 0 0.0345827 0.00902172 -0.128932 -0.186305 0.0312945 0.33028 -0.279912 0.0207689 0.983162 2.69196 0.0117583 0 0 0 -0.133029 -0.0238062 0 0 0 0 0.208841 -12.8521 0.0303149 -2.33528 -0.462936 0.447489 -1.24105 0.0285407 -0.0272588 0.130486 -0.330785 0 0 0 0 0 0 +160 0 -1.1838 -0.585628 -0.0151131 -0.0270864 -0.231741 -0.147699 0.268086 2.58805 -0.0831244 -0.00729962 -0.165829 -0.823936 0.00614407 -1.43055 -0.073122 -2.46566 -10.5703 -0.0172534 -0.175077 0.391257 -0.0746131 0.321855 -0.00793732 -0.0684073 0.303386 -0.827064 -0.27857 0.0775831 1.36583 -0.389999 -0.0280848 -0.346353 1.63025 -0.527188 -0.0601437 -0.0379269 -0.881819 8.2111 -0.460393 -0.0224471 0.0216046 -2.04267 -0.105178 -3.8403 0.0626075 -0.0367633 0.284778 -0.861827 0.238609 -3.76589 0.711066 4.82064 0.264664 -0.24588 0.14222 2.0716 0.530788 0.141111 0.0510732 -0.0350023 -1.4964 -0.429628 -0.624125 -0.794709 1.96595 0.585749 1.25855 -0.985987 0.0388221 0.964386 -0.324643 -0.569658 0.902304 -0.0118638 0.30107 1.79263 -41.9444 -3.08127 -11.3318 -3.90897 5.89525 -17.8828 0.203357 0.328254 -0.932152 -4.35864 -0.0737826 0.326305 -0.940444 2.19768 -5.91781 0 0 0 0 0 -0.0151131 -0.0270864 0 0 0 0 0 0 0 0.017906 0 0 0 0 0.0136245 0 0.00278106 -0.124656 0.0979516 0 0 -0.324402 0 0 -0.0186388 -2.01972 0 0 -0.0222861 -0.513328 0 -0.0645435 0 -0.0610187 0 0 -0.00346992 0 0 -0.0164044 0 0 0 0 0 0 0 -0.0849474 0 0 -0.155532 0 0 0 0 0 0 0 -0.0268239 0 0.189362 0 -0.00479269 0 0 0.107197 -0.01724 0 0.076974 0 0 0 0.0337864 0 -0.0907304 0 0 0.00418054 0 0 0 -0.0410539 0 0 0 0 0 0 -0.231741 0 -0.147699 0 0 0 0 0.276284 -0.397666 0 0 0.29161 0 0.0377344 0 -0.00783976 0 0 0.396206 0 0.49995 0.123438 0.0936609 0.0418773 0 0 -0.103396 0 0.31821 0 5.44454 0.0587871 0 0.827172 1.58098 0.0112165 0 0.0429821 0 0 -0.0358631 0 0.431885 0.458309 0 0 0.0243016 0 0 0.259898 -4.84205 0.231277 0 0.546455 0 -0.931905 0.0454692 -0.142819 0.0132216 -0.219124 -0.367632 -0.300723 0.0622326 -0.175872 -0.24362 0.183638 0 0 0 -0.104606 -0.079126 0 0 0 0 0.0882244 -47.913 -1.22348 -10.7492 -0.660016 0.516825 -3.60282 -0.144949 0.0540945 -0.0737943 -0.656445 0 0 0 0 0 0 +161 0 0.339586 -0.315958 0.00334335 0.109568 -0.182859 -0.113729 0.32791 0.953143 0.017526 0.249747 0.0969979 -1.05718 -9.74574e-06 -1.57009 0.000577854 -2.55712 -9.7042 0.0647212 -0.00165103 -5.00417 0.0085207 0.147495 1.24865e-05 0.0865982 -0.0289811 -0.801007 -0.00760015 -0.393726 -1.98242 -0.219845 0.00048311 0.0560741 0.250278 -0.0346601 -0.00854074 0.00275031 -0.112019 0.867342 0.18614 -2.38274 -0.000388422 -0.505886 0.00524046 -4.61538 -0.0147019 -0.93624 -0.931895 0.0128785 -0.00995073 -1.91272 0.158874 -1.06753 0.00348937 -0.00336638 0.0194019 -2.07287 -0.0485194 0.00462186 -0.0787012 0.000560246 -1.17194 2.57475 0.201508 -0.388988 0.286732 -0.717775 0.095072 -0.145903 -0.000574166 0.119912 0.0813956 0.133517 0.128877 -0.89841 -0.294997 0.635963 -1.1574 -0.502112 -1.74253 -0.278588 0.266475 -0.628696 -0.193464 0.11173 -0.247847 -1.12282 8.73753e-05 -0.00121786 0.0186818 -0.251579 3.44947 0 0 0 0 0 0.00334335 0.109568 0 0 0 0 0 0 0 0.000224801 0 0 0 0 0.000376616 0 2.59141e-06 0.00073986 0.0105359 0 0 -0.0556317 0 0 -0.00211737 -0.149011 0 0 -0.00832397 0.00299105 0 -0.0268688 0 -0.00205912 0 0 -0.000305137 0 0 -0.188126 0 0 0 0 0 0 0 -0.0406248 0 0 -0.0174256 0 0 0 0 0 0 0 -0.021773 0 -0.0590394 0 0.0221682 0 0 -0.0164296 -0.0599221 0 0.0305825 0 0 0 0.342919 0 0.0209639 0 0 0.0888677 0 0 0 -0.0042665 0 0 0 0 0 0 -0.182859 0 -0.113729 0 0 0 0 0.499429 -0.339485 0 0 -0.224415 0 -0.0106783 0 -0.00974107 0 0 -0.928852 0 0.538463 0.211076 -0.0710118 -0.133128 0 0 -0.136331 0 -2.29106 0 0.0469392 0.133854 0 1.2489 0.484725 -0.00128658 0 0.0912542 0 0 -0.0272713 0 -0.510939 -1.80069 0 0 -0.26028 0 0 -0.51138 -2.49442 -0.542472 0 -2.76176 0 -0.428975 -0.0326172 0.143516 0.0434175 -0.121443 -1.29971 0.0437152 -0.0245688 -0.155176 -11.1334 -0.0367088 0 0 0 0.041528 0.0310395 0 0 0 0 0.00786053 -0.919146 0.949979 -3.66421 0.071842 -0.0019946 0.200887 0.0041682 -0.015354 0.122865 -0.631997 0 0 0 0 0 0 +162 0 0.782258 -0.186616 0.00179167 0.044879 0.0521036 -0.309429 0.412017 0.131424 0.0106277 -0.00922022 0.0159578 -0.584648 -5.32045e-06 -0.549376 -0.00111927 -2.20316 -7.58952 0.0068515 -0.00332321 0.122836 0.000137757 0.281976 6.93908e-06 0.0166131 0.293321 -0.869749 -0.000359139 0.860357 0.58672 -0.279873 0.000277948 -0.0439956 -0.184939 -0.00508664 0.360066 0.00063182 -0.0502974 -4.19552 0.0570828 -0.734562 -0.000205735 -0.070088 0.0019071 -2.17271 -0.00738553 -0.984127 0.795253 -0.123857 -0.00388652 0.108398 -0.0182997 5.23083 0.00371764 -0.00328559 0.0308421 1.42295 -0.0087179 -0.00653795 -0.0357228 0.000300933 -0.952964 0.544082 -0.487978 0.606945 0.0788561 -0.451601 -0.331763 -0.0814834 -0.000350921 -0.0649976 -0.00311775 0.0327345 0.0206978 0.303096 -0.778499 -0.274783 11.1914 0.580807 2.32638 0.498072 -0.783489 5.0024 -0.0635492 -0.0347057 0.111468 0.0371946 4.3893e-05 -0.000503556 0.00468206 -0.0231349 -1.02091 0 0 0 0 0 0.00179167 0.044879 0 0 0 0 0 0 0 0.000492775 0 0 0 0 0.000328621 0 1.7845e-05 0.000462572 0.0112348 0 0 -0.0420518 0 0 -0.0012956 -0.0632778 0 0 -0.00661617 0.0112654 0 -0.0291891 0 -0.00122042 0 0 -0.000192827 0 0 -0.130135 0 0 0 0 0 0 0 -0.0170851 0 0 -0.0345337 0 0 0 0 0 0 0 -0.0170564 0 -0.150126 0 0.0126856 0 0 -0.0076772 -0.0630611 0 0.0131044 0 0 0 0.255358 0 0.0047614 0 0 0.0448029 0 0 0 -0.00482835 0 0 0 0 0 0 0.0521036 0 -0.309429 0 0 0 0 -0.0557099 0.213835 0 0 0.0413666 0 0.00611653 0 0.00586372 0 0 -0.20499 0 0.676848 -0.0430183 -0.00221675 -0.0254472 0 0 0.0490537 0 -4.69358 0 -4.2097 -0.792317 0 -0.362617 -0.103743 0.00138708 0 0.000275402 0 0 0.0259423 0 -1.58984 -1.18941 0 0 -0.133153 0 0 0.208709 0.57351 0.216745 0 0.773286 0 0.582565 0.0621581 -0.054907 0.23795 -0.0611183 -0.110784 -0.270647 0.0535042 -0.191936 1.74939 -0.0104665 0 0 0 0.00228443 -0.0333688 0 0 0 0 -0.0458637 25.1243 0.878547 2.86341 0.495672 -0.499006 2.47426 -0.0790872 0.0498748 -0.0331487 0.215208 0 0 0 0 0 0 +163 0 0.172391 0.111339 0.000265754 0.0101964 0.0409577 0.0207388 -0.512615 -0.696363 0.00126028 0.0862341 0.00852795 -1.00141 -7.6415e-07 -1.8001 -8.91411e-05 -0.610195 -1.79047 -0.0258525 -0.000522508 -0.799614 -0.00166717 -0.386689 9.65892e-07 0.0187863 -0.358949 0.0348573 -0.0016075 0.00890994 -0.269708 -0.487841 3.63533e-05 -0.00166969 -0.532558 -0.0145704 -0.262105 0.000244615 0.00802231 -0.0803699 0.0246535 -0.056559 -3.11342e-05 0.0757172 0.000621212 -2.9819 -0.00122161 0.34665 -0.0935264 -0.0169242 -0.00112275 -0.749107 0.0117636 7.47484 0.00075964 -0.000761978 0.0145613 6.08398 -0.0293294 -0.0443985 -0.0404966 4.4457e-05 -0.32323 1.49755 -0.122115 0.517054 -0.0014 0.278429 -0.171137 0.0322113 -4.09926e-05 -0.149486 -0.0430107 0.0240455 -0.0458155 3.95716 -0.284134 -0.12068 -0.777459 0.0543001 -0.190395 -0.0672275 0.0363954 -0.647911 -0.084925 0.0247204 -0.131008 0.810196 7.26018e-06 -0.000128494 0.00186427 -0.0336436 0.4693 0 0 0 0 0 0.000265754 0.0101964 0 0 0 0 0 0 0 0.000939639 0 0 0 0 0.000136355 0 1.82711e-05 -0.000267845 0.00605101 0 0 -0.0221672 0 0 -0.00028268 -0.0892851 0 0 -0.00307064 -0.00938074 0 -0.00373906 0 -0.000542079 0 0 -7.53187e-05 0 0 -0.0111841 0 0 0 0 0 0 0 -0.00817641 0 0 -0.00715172 0 0 0 0 0 0 0 -0.00402342 0 -0.0485341 0 0.00196513 0 0 -0.000345973 -0.0169898 0 0.00195741 0 0 0 0.0183924 0 -0.00318931 0 0 0.00711525 0 0 0 -0.00250849 0 0 0 0 0 0 0.0409577 0 0.0207388 0 0 0 0 -0.187429 -0.112047 0 0 -0.0840651 0 -0.00977632 0 -0.00687592 0 0 -0.755016 0 -0.619723 -0.0572291 -0.0565057 -0.0731523 0 0 -0.0727554 0 -3.39346 0 -0.53055 -1.14873 0 -0.289454 -0.835984 -0.00623717 0 -0.0302292 0 0 -0.0109397 0 -2.40238 -0.846644 0 0 -0.0622977 0 0 -0.143113 -0.556674 -0.000578536 0 0.42625 0 0.446701 -0.0213417 0.0303095 -0.240056 -0.0123615 -0.976683 -0.198373 -0.0719156 0.114324 6.92862 -0.0185106 0 0 0 0.0604434 -0.0127501 0 0 0 0 -0.0265868 4.56623 0.463784 1.15123 0.0208962 0.0570036 -0.649003 -0.0448734 -0.0303319 0.0949772 0.00300722 0 0 0 0 0 0 +164 0 0 0 0 0 -0.750872 -0.197359 0.115565 2.33916 0 0 0.0980112 -0.277776 0 -1.06896 0.0332715 0 0 0 0.156427 1.14926 0 0 0 0 0.424114 0 0 0.268671 -3.08676 -0.344026 0 0.0593845 0 0 0.0801988 0.00634937 0 0 1.35763 0.348676 0 0 0.27858 -1.07948 0 -0.106177 -0.282514 0.337216 -0.395921 0.518964 -0.230338 0 -0.225826 0.17771 -0.273569 1.05284 0.135955 0.333577 0 0 -1.23736 -4.49913 0 -0.340152 -0.251053 0.00386248 0 0 0 0 -0.148293 0.977116 0 -0.839085 0.733347 0 0 0 -2.81254 0 -1.889 3.16758 0 -0.66642 0.161107 -1.66264 0 -0.743505 0.614856 -3.11722 9.9711 0 0 0 -0.288218 -0.0397015 0 0 0 0.0147945 0 0 0.00333691 0 0 0.011693 0 0 0 0 -0.0841865 0 -0.00936996 0 0.041762 0 0.067279 0.0250368 0 0.00495366 0 0 0.204564 0 -0.00996513 0 0 0 0 -0.00797922 0.0311411 0 -0.00435141 0 0 0 0 0 0 0 0 0 0 -0.0102403 0 0 0 0 0 0 0 0 0 0 -0.252411 0 0 0 -0.0547076 -0.0182576 0 -0.0366782 -0.252525 0 -0.0745294 0 -0.213874 0 0 0 -0.0172208 0 0 -0.19123 0 0 0 -0.0884346 0 0 0 0 -0.175667 0 -0.750872 -0.288218 -0.197359 -0.0397015 0.0774979 0.131906 -0.205434 0.358413 0.321449 0.0191455 0.0485723 0.596808 0.00233274 0.0938165 -0.0239206 -0.00156687 0.0429206 0.140602 -0.343242 0.0694648 0.16986 0.240106 0.228021 0.0272316 0.347746 -0.180499 0.0711863 0.027618 -1.71605 0.486869 2.04134 -1.10315 -0.00279534 1.33135 0.691771 0.0329691 0.00758102 0.0545178 0.0759375 -1.19137 0.00595067 -0.0310542 -2.3009 0.18261 0.00557409 0.0545531 0.232181 0.0905094 0.231479 -0.593189 1.47689 0.140967 -0.0809371 0.575167 0.00633099 0.608797 -0.216033 0.062363 -0.854978 0.0159446 0.554574 -0.413227 -0.448702 0.0130424 7.27299 0.119484 -0.66473 0.0393636 0.0402277 0.285649 -0.0954596 -0.092937 -0.00924729 0.0589833 -0.022651 -0.175335 -20.5462 -4.43966 -5.65688 -1.04132 -1.72284 4.05778 -0.196494 -0.285066 0.402201 -0.206 -0.0459738 -0.133621 0.227122 -0.564657 1.44715 0 +165 0 0 0 0 0 0.447365 0.475967 -1.70449 -4.06838 0 0 -0.249098 0.796549 0 0.000520222 -0.1399 0 0 0 -0.214469 3.24568 0 0 0 0 -0.920558 0 0 -0.846513 -3.89726 0.433842 0 -0.798392 0 0 -0.456801 -0.063285 0 0 -0.759831 1.20821 0 0 -0.244097 1.56671 0 0.819588 -1.52765 -1.03862 0.484063 -1.06902 0.845597 0 0.337426 -0.222692 -0.287439 -0.934685 -0.0377776 -0.279682 0 0 -1.62343 -0.738393 0 -0.430543 0.100252 -0.223666 0 0 0 0 -0.857235 -0.743979 0 -0.00722231 0.665426 0 0 0 7.46741 0 1.74165 5.39334 0 0.509463 1.55041 4.68759 0 0.443759 1.54621 -1.21223 10.0779 0 0 0 0.0399023 0.0196682 0 0 0 0.0178612 0 0 -6.91498e-05 0 0 -0.0165754 0 0 0 0 0.0160683 0 0.00384548 0 -0.0868132 0 0.232888 0.353923 0 -0.00649099 0 0 -0.26125 0 0.0451408 0 0 0 0 0.0356532 -0.0415361 0 0.00710531 0 0 0 0 0 0 0 0 0 0 -0.0211822 0 0 0 0 0 0 0 0 0 0 0.17112 0 0 0 0.0313786 -0.0316787 0 -0.120972 0.0114887 0 0.0281627 0 0.175236 0 0 0 0.0937847 0 0 0.247563 0 0 0 0.0506407 0 0 0 0 0.212066 0 0.447365 0.0399023 0.475967 0.0196682 0.347749 0.100771 0.175367 0.131909 -0.266788 -0.0203878 -0.00417461 -0.565193 -0.00268199 -0.0950396 0.0267346 -0.0350224 0.0187101 -0.125516 -0.00766213 0.185356 0.258914 -0.185527 -0.183553 0.00617885 0.107512 -0.135498 -0.333323 -0.00168183 -0.776494 -0.180728 1.78707 0.696138 0.00356187 -0.537178 0.849588 -0.0323092 -0.00340763 -0.00915805 -0.0284399 -0.813067 -0.00940668 -0.0182862 -0.203762 0.563364 8.10491e-06 -0.027372 0.0190126 -0.00515355 0.297566 -0.745772 -6.07816 0.141246 -0.125295 -2.00982 -0.0530142 -0.894748 0.0818311 -0.207506 0.399385 -0.0502482 -0.630206 -0.831814 0.0209999 0.116064 -3.72902 -0.288197 -0.999919 -0.0144282 0.0818061 -0.0737248 0.22215 0.0500887 0.0468936 -0.0567958 -0.0758333 -0.0190086 -17.9869 1.58702 0.868583 0.339492 1.04251 1.54855 0.180711 0.0276004 0.585386 0.407667 0.0410409 -0.00212634 0.219735 -0.122895 0.929237 0 +166 0 0 0 0 0 -0.33427 0.0498883 0.571309 1.63144 0 0 -0.0277652 0.797054 0 1.88502 -0.0043754 0 0 0 -0.0107258 -0.352191 0 0 0 0 0.143889 0 0 0.152817 5.82146 0.518693 0 -0.00559066 0 0 -0.0108612 0.00234693 0 0 -0.488027 0.760866 0 0 -0.0396184 2.50123 0 0.664491 1.26772 0.00320115 0.130147 0.903897 0.169173 0 0.0305259 -0.120599 0.254757 0.928419 0.726677 -0.221549 0 0 0.0553402 3.01113 0 0.562932 0.128102 -0.864281 0 0 0 0 0.105169 0.166953 0 -1.07421 -1.68825 0 0 0 -3.29984 0 0.0139151 -7.33123 0 0.0527709 -1.93282 -3.10662 0 0.344363 -2.31502 4.71525 -20.3364 0 0 0 0.0425123 0.00454843 0 0 0 0.00620027 0 0 5.46011e-05 0 0 0.000795371 0 0 0 0 -0.0121909 0 -0.000887321 0 0.0122266 0 0.122009 0.26714 0 0.00103501 0 0 0.0586685 0 0.0221522 0 0 0 0 0.0898577 0.00854911 0 0.00785127 0 0 0 0 0 0 0 0 0 0 -0.00729007 0 0 0 0 0 0 0 0 0 0 -0.0446979 0 0 0 -0.0277049 -0.0276015 0 0.0761857 -0.0902695 0 -0.0315944 0 -0.00262758 0 0 0 -0.0152493 0 0 -0.05158 0 0 0 -0.00916596 0 0 0 0 -0.0623769 0 -0.33427 0.0425123 0.0498883 0.00454843 -0.661963 -0.0973685 0.0167455 -0.363621 0.659995 -0.00118744 0.00661279 -0.106068 -0.000126424 -0.00895207 0.00136719 0.0227572 0.0197151 -0.0109542 0.146567 -0.67955 0.204403 0.113293 0.0271954 0.0655509 0.0980992 0.310442 0.29135 -0.00857911 5.10873 -0.391658 -0.626702 0.794902 0.000119385 0.342811 -0.232523 0.00037544 -0.00649185 -0.0345029 -0.063421 2.07954 0.0593723 0.0426946 2.01939 -0.153166 0.00161281 -0.0411464 0.0881853 -0.0655355 -0.108916 0.50041 5.36633 0.125447 -0.070187 1.32324 0.00387665 1.57014 0.0594112 0.405395 -0.0305789 -0.00155135 1.97281 0.709811 0.184157 0.508445 6.71866 0.119635 0.576616 -0.0295597 -0.356746 -0.122072 -0.00950072 0.0938972 -0.00284453 0.0534273 0.0963824 0.00662694 6.30777 0.974712 -1.44552 0.157586 1.32872 -7.47673 0.0250479 0.298713 -1.15501 -0.576545 0.00358178 0.185613 -0.610824 0.893288 -2.52842 0 +167 0 -1.37893 -0.466003 -0.0447667 -0.255434 0.286479 -0.0680473 -0.738 -1.89357 -0.295993 1.4855 -0.309345 0.388088 0.00496551 1.69341 0.0188356 -0.248593 -0.761461 0.179257 0.0434313 0.698272 0.0369711 0.422874 -0.00636838 0.317379 0.0280556 -0.409612 0.0601632 0.353013 0.368548 0.208285 -0.0465281 0.0095741 1.13157 0.154826 0.125747 -0.0363707 0.147282 5.12727 -0.432386 0.134535 0.0374801 -0.0757516 -0.0550587 2.60652 0.251271 -0.205211 0.433692 0.122873 0.14757 0.281473 0.768446 2.33439 -0.0813201 0.0775314 0.0669163 -2.33948 -0.280907 0.240302 -0.460672 -0.0747918 1.9177 -1.84696 -0.474474 0.048496 -0.332093 -0.174493 -0.285009 0.184469 0.0754577 -0.999797 0.485563 -0.123467 -0.12397 -2.26533 -0.6934 -0.0742275 -16.3814 -5.61454 2.67937 -2.81926 2.13595 -4.77505 -0.740001 0.646382 -1.55344 2.011 -0.0931052 0.117312 -0.309485 0.469633 -0.707567 0 0 0 0 0 -0.0447667 -0.255434 0 0 0 0 0 0 0 0.0197369 0 0 0 0 0.0281216 0 0.00387563 -0.0196586 0.14426 0 0 0.00212441 0 0 -0.0208523 -0.372046 0 0 0.0126523 -0.0877432 0 -0.0461016 0 0.00100349 0 0 0.00255986 0 0 0.157827 0 0 0 0 0 0 0 -0.0630538 0 0 -0.0652096 0 0 0 0 0 0 0 -0.063274 0 -0.325726 0 0.0175122 0 0 -0.0277446 -0.188559 0 -0.00911789 0 0 0 -0.278051 0 -0.164956 0 0 -0.0834091 0 0 0 -0.0603508 0 0 0 0 0 0 0.286479 0 -0.0680473 0 0 0 0 -0.0627843 -0.654145 0 0 0.819244 0 0.0870021 0 -0.0257847 0 0 0.264897 0 1.11161 -0.122372 0.274842 0.0245182 0 0 -0.275732 0 -3.47382 0 6.06183 0.3031 0 -0.686131 2.5658 0.0270768 0 -0.0282585 0 0 -0.0599884 0 0.14879 -0.160539 0 0 -0.0279804 0 0 -0.054511 -5.68479 0.123257 0 -1.16701 0 -0.826199 0.115946 -0.243504 -0.772629 0.118349 -0.0774503 -0.589177 0.00931799 0.236455 -6.50953 -0.0551639 0 0 0 -0.158802 -0.0789879 0 0 0 0 0.175229 -52.9569 -7.54282 0.867031 -1.2259 0.855096 -2.828 -0.194526 0.151924 -0.423733 0.419407 0 0 0 0 0 0 +168 0 0.659004 -0.10701 0.0292821 0.105828 0.0797816 -0.254599 0.46905 0.659831 0.245543 -0.931013 0.105396 -0.62388 -0.00334526 0.389937 -0.0129734 -0.807181 -3.10031 -0.177084 -0.05358 1.24136 -0.0324979 0.0859821 0.00435887 -0.230974 0.261389 -0.288982 -0.029315 0.572103 0.0987465 -0.25939 0.0340876 -0.0771357 -0.249039 -0.0745013 0.278133 0.0100658 -0.0397628 -1.93841 0.266947 -0.13505 -0.0252074 0.0854946 0.0312969 -0.639339 -0.16669 -0.65377 0.390038 -0.419365 -0.0822776 0.806152 -0.396252 -1.62788 0.0845159 -0.0844657 -0.0306876 2.6657 0.209056 -0.222745 0.329385 0.0543968 -0.608672 1.49073 0.802279 1.04283 0.154109 0.120143 -0.651998 -0.277166 -0.0643667 0.876327 -0.358369 0.0983731 -0.0763598 1.6179 0.229917 0.187234 7.81231 3.9325 -2.50545 1.50474 -1.0832 1.74408 0.514304 -0.402449 0.8953 -0.940733 0.0617646 -0.074138 0.141717 -0.241631 -0.189581 0 0 0 0 0 0.0292821 0.105828 0 0 0 0 0 0 0 -0.0106708 0 0 0 0 -0.0174966 0 -0.00225668 0.00843237 -0.0827231 0 0 -0.0639805 0 0 0.0194301 0.110093 0 0 -0.0174379 0.0286526 0 0.0482337 0 -0.0115885 0 0 -0.00335443 0 0 0.104784 0 0 0 0 0 0 0 0.073924 0 0 0.0483519 0 0 0 0 0 0 0 -0.0385962 0 -0.684387 0 -0.0349714 0 0 0.00690145 -0.162925 0 -0.115878 0 0 0 -0.175359 0 0.0553369 0 0 -0.0638693 0 0 0 0.0345114 0 0 0 0 0 0 0.0797816 0 -0.254599 0 0 0 0 0.296398 0.601843 0 0 -0.324724 0 -0.0345757 0 0.0176069 0 0 0.302896 0 0.498664 0.0531564 -0.173104 0.038823 0 0 0.151144 0 2.33161 0 -0.679838 -0.0408474 0 0.186127 0.450834 -0.0124 0 0.0483017 0 0 0.0600252 0 1.18273 -0.249794 0 0 -0.0232992 0 0 -0.0117846 4.84256 0.0768037 0 1.0711 0 0.916073 -0.038863 0.0870883 0.350923 0.0481497 0.331742 0.343289 -0.0395099 -0.418115 1.9953 -0.0133595 0 0 0 0.123231 0.062902 0 0 0 0 -0.13676 10.2461 3.37388 -2.27098 0.353203 -0.258489 0.468389 0.036003 -0.0360685 0.191883 -0.148323 0 0 0 0 0 0 +169 0 -1.08753 -0.23788 7.20825e-05 0.00636075 -0.379624 -0.152321 -0.276502 1.01948 -0.00456769 -0.594547 -0.0746064 -1.11253 1.455e-06 -1.60694 0.000947603 -1.82879 -7.30796 -0.0815627 -0.00790359 -1.75093 -0.00616483 -0.181014 -8.51988e-06 -0.030752 0.0902317 -0.430353 -0.0086731 -0.159424 -0.908042 -0.456055 -0.000279936 0.00648075 -0.295957 -0.0442393 -0.0785965 -0.00710496 -0.0721482 0.430684 -0.218663 -1.20361 6.81752e-06 -0.38729 -0.0212326 -3.70082 -0.000178064 -0.715008 -0.48075 -0.0873837 0.056082 -1.09875 0.037507 5.09373 0.0079562 -0.0147252 -0.262913 2.45148 -0.903941 -0.652088 0.125491 -0.000411382 -0.923024 3.32657 0.766448 -0.382258 0.178383 0.00189376 -0.0532848 -0.232777 0.00133639 0.478021 -0.342018 -0.266117 0.0176074 3.17369 0.780368 -0.426809 -3.3401 0.452688 -2.90284 0.104709 -0.162857 0.66433 0.260469 -0.475262 1.62891 -2.36795 6.59794e-05 0.040485 0.168402 0.0754523 1.74333 0 0 0 0 0 7.20825e-05 0.00636075 0 0 0 0 0 0 0 0.00945441 0 0 0 0 0.00547028 0 0.000934463 0.0227815 0.054713 0 0 0.141278 0 0 -0.00626315 0.760701 0 0 0.0125503 0.152749 0 -0.0293304 0 0.0144033 0 0 0.0013085 0 0 0.00663491 0 0 0 0 0 0 0 -0.0441894 0 0 -0.0797589 0 0 0 0 0 0 0 0.00268009 0 -0.144509 0 0.00146818 0 0 -0.0484243 -0.0219886 0 0.0315076 0 0 0 -0.015752 0 -0.0512377 0 0 0.000226293 0 0 0 -0.0230527 0 0 0 0 0 0 -0.379624 0 -0.152321 0 0 0 0 0.542234 -0.407322 0 0 -0.354494 0 -0.0413207 0 -0.0126487 0 0 -0.534045 0 0.0152868 0.152327 -0.0762073 -0.103713 0 0 -0.205063 0 -8.21343 0 3.06047 -0.726437 0 1.53588 0.716197 -0.00753272 0 0.0544279 0 0 -0.0202309 0 -2.40408 -1.53865 0 0 -0.264 0 0 -0.042333 1.51729 -0.715738 0 -0.964443 0 -0.444008 -0.11823 0.200322 0.310933 -0.24228 -0.44389 0.349137 0.0829949 -1.46261 -6.55216 0.0855144 0 0 0 -0.187115 0.0575866 0 0 0 0 -0.116995 -28.2757 0.219314 -9.19859 -0.196693 0.00218135 -1.67707 0.24975 -0.254881 0.299455 -0.929783 0 0 0 0 0 0 +170 0 0 0 0 0 0.0517455 0.00882616 0.208379 -0.208067 0 0 -0.114978 0.605077 0 1.57026 -0.0513957 0 0 0 -0.0328071 -1.24158 0 0 0 0 0.121412 0 0 0.426998 2.24486 0.133267 0 0.290408 0 0 0.0931503 -0.0493745 0 0 -1.54859 0.399429 0 0 -0.454376 4.458 0 0.202292 0.831175 1.61 0.846716 -1.66933 0.114507 0 0.606343 -0.0136235 0.287128 -0.0773819 -0.0417352 -0.615391 0 0 0.786531 -1.62993 0 -0.651971 0.919704 -0.294002 0 0 0 0 0.400428 -0.849121 0 -0.32055 -1.21155 0 0 0 0.563945 0 1.86355 -3.22482 0 0.716445 -0.342838 -0.93837 0 1.7604 -1.48131 2.79763 -5.10653 0 0 0 0.26784 0.0788471 0 0 0 -0.0544833 0.0263629 0 -0.00704016 0 -0.00675549 -0.0858068 0 0 0 0 -0.0388431 0 -0.0305045 0 -0.208289 0 -0.400323 -0.866428 0 -0.0114814 0 0 -0.251471 -0.00145005 -0.160543 0 -0.00201919 0 0.00127556 -0.338739 -0.054242 -0.0251651 -0.0615311 0 -0.000376885 0 0 0 -0.000121812 0 0 0.00276454 -0.00202591 -0.0486601 0.0124184 0 0 -0.0173786 0 -0.00615343 0 0 0.0569624 -0.0185914 -0.0571504 -0.00666949 0 0 -0.0898613 -0.0481689 -0.0108041 -0.175148 -0.104799 0 -0.175461 -0.0147181 -0.387558 0 0 0 1.28269 0 0.0913173 0.788013 0 0.00790417 0.0643517 0.060608 0 0.000828254 0.00678319 0.00819409 0.0680646 0 0.0517455 0.26784 0.00882616 0.0788471 -0.233058 -0.137176 0.606015 0.157075 0.141006 -0.0877987 0.0297342 -0.407673 -0.018659 -0.07089 0.117106 -0.0362248 0.0188819 -0.333026 0.595831 -0.958639 0.0520581 -0.0160979 -0.213698 0.0755635 0.315812 0.0948828 -0.0309507 -0.0208204 -0.966365 -0.267351 -0.0418946 -0.618945 0.0207097 0.201354 -0.0481825 -0.0289338 -0.00168118 0.00312158 -0.0426662 0.572193 0.0184416 0.0163726 -0.628577 1.15697 -0.0009484 -0.00134107 0.135128 -0.154039 0.00228551 -0.291349 1.79224 -0.701917 0.126895 0.414458 -0.153924 -1.19618 -0.0453418 0.252413 0.112422 -0.0660349 0.267794 0.860756 -0.126592 1.53764 3.5856 -0.0460253 0.0293212 -0.14319 -0.203773 0.140208 0.143249 0.0288365 0.184112 -0.159708 0.0774532 0.533354 0.205906 1.02956 -0.19429 0.843714 0.614005 -1.47133 0.466853 -0.0347294 -0.278929 -0.0379561 0.402603 -0.00437482 -0.264625 0.357494 -0.43672 0 +171 0 0 0 0 0 -0.652281 -0.414892 1.05681 3.25227 0 0 0.1214 -0.205098 0 -0.265988 0.079307 0 0 0 0.294674 2.74187 0 0 0 0 0.842839 0 0 0.947367 0.170949 -0.483796 0 0.381199 0 0 0.432973 0.00952547 0 0 1.30622 -0.228825 0 0 0.350952 1.78189 0 -0.691223 0.769329 0.775543 -0.607616 0.843077 -0.529337 0 -0.141462 -0.0849869 -0.147265 1.32107 0.0708954 1.07557 0 0 -0.0736127 -1.97403 0 -1.09629 -0.645842 -0.460995 0 0 0 0 -0.302431 0.944321 0 1.39661 -0.0395862 0 0 0 -4.72116 0 -1.67261 -0.675027 0 -0.927566 0.190544 -4.60756 0 -1.58063 -0.0117598 -1.05545 -0.454289 0 0 0 -0.203941 -0.022613 0 0 0 0.117997 -0.0142777 0 0.0183689 0 0.00337003 -0.0334786 0 0 0 0 -0.106404 0 -0.0256774 0 -0.0463887 0 0.744784 0.539538 0 0.0033942 0 0 0.239101 0.00168969 0.0715919 0 -0.00728821 0 -0.000859258 0.151523 0.0309192 0.0298994 0.0218302 0 0.000204525 0 0 0 -0.000388364 0 0 -0.00521287 -0.0043473 -0.606264 -0.0139754 0 0 -0.0221394 0 -0.00111148 0 0 -0.0181594 -0.0547604 0.234502 -0.0475696 0 0 -0.0767861 0.0803923 -0.011242 0.188718 0.0662418 0 -0.369015 -0.00604439 0.277391 0 0 0 -0.687293 0 -0.144977 -0.223373 0 -0.0137023 0.000819253 0.0610418 0 -0.00140078 -0.000235906 -0.00237437 -0.122089 0 -0.652281 -0.203941 -0.414892 -0.022613 0.0826453 0.00762266 -0.169818 0.282013 -0.24035 -0.00764147 0.0472605 0.0363528 -0.00189861 0.0140674 -0.00183539 0.0106579 0.0225956 -0.0360172 0.801219 -0.243882 0.0339848 0.176437 0.0378228 0.151575 0.196142 -0.0454959 0.290793 -0.014245 2.30206 0.25004 0.840188 -0.80971 0.00288212 0.819629 0.231324 0.0142679 0.00377671 0.0897455 0.0553295 -0.335554 -0.0612063 -0.000682163 0.547988 1.47713 0.00554931 0.017546 0.212348 -0.0870984 0.286731 -0.695084 1.57248 -0.986646 -0.19219 -3.59161 0.0423314 -0.9105 -0.61769 0.582391 0.135852 -0.277804 -0.394431 -0.197257 -0.0804706 3.07613 -1.51967 0.0120304 -0.512521 -0.0500783 -0.0920405 0.247974 0.068216 0.0269801 0.0439104 -0.145028 0.0674021 0.374716 -4.12942 -0.645457 -3.05633 -0.419352 -0.097625 -0.614774 0.00186594 -0.0260665 -0.0479102 -0.790178 0.0435421 -0.0874248 -0.0567083 -0.0356276 -0.071858 0 +172 0 0 0 0 0 -0.00940225 -0.120923 0.188108 -0.0482217 0 0 0.728356 -1.10461 0 -2.0821 0.122314 0 0 0 0.00900897 -2.04118 0 0 0 0 -0.0301658 0 0 -0.223767 -3.58637 -0.452052 0 0.218124 0 0 0.0633708 0.112412 0 0 1.64035 -1.82689 0 0 0.332297 -5.00457 0 -0.830025 -1.13721 -0.855523 -0.906787 0.702057 -0.137956 0 0.243132 0.313393 -0.0643275 2.9656 1.08015 0.91356 0 0 0.424366 2.21166 0 1.04866 -0.918681 0.321666 0 0 0 0 0.48156 1.66809 0 2.39471 -0.789452 0 0 0 1.21501 0 -1.63866 6.39354 0 -0.631827 1.17168 2.37437 0 -1.06858 1.51402 -3.06035 9.18541 0 0 0 -0.155772 -0.072294 0 0 0 0.130954 -0.0568568 0 0.0171583 0 0.00791973 0.0932243 0 0 0 0 0.122677 0 0.0370515 0 0.340369 0 0.973544 0.484096 0 0.010994 0 0 0.25894 0.00191004 0.123765 0 -0.00320119 0 -0.00279253 0.154583 0.0519738 0.0318718 0.0387994 0 0.000456064 0 0 0 -0.00014198 0 0 -0.0064305 0.000260919 -0.431629 -0.0217307 0 0 0.0279213 0 0.00870659 0 0 -0.0552562 -0.0130884 0.499338 -0.014734 0 0 0.0994797 0.029155 -0.0709056 0.015586 -0.07366 0 0.222092 0.017346 0.409596 0 0 0 -2.00497 0 -0.152427 -0.802077 0 -0.0143564 -0.0647084 -0.0715502 0 -0.00146903 -0.00703594 -0.00845043 -0.0189968 0 -0.00940225 -0.155772 -0.120923 -0.072294 0.346757 0.127245 -0.109639 0.0321817 -1.44648 0.134661 -0.144516 0.0451235 0.0238782 0.00849687 -0.0655747 -0.0921828 -0.132615 0.718888 -0.0417071 2.32726 -0.206063 -0.0367171 -0.431937 0.0107565 -1.104 -0.0653149 -0.668539 0.0522695 -0.903189 -0.18751 0.100019 -0.219291 -0.0156709 -0.547985 -0.219598 -0.0670516 -0.00993669 0.0246015 -0.0362359 -0.453095 -0.253621 -0.0106338 -0.696295 -0.0078584 -0.0173226 -0.0611689 0.0522462 0.351115 -0.266151 -0.423725 1.19071 -0.0568686 0.28015 1.21481 -0.000198902 -0.185049 -0.290326 0.124638 -0.0066416 -0.041094 0.067993 0.626674 -0.054418 0.474287 2.01848 0.0702971 -0.0329437 0.0217409 -0.226414 0.554686 -0.00654305 0.118714 -0.311004 0.137131 0.0341953 0.10535 -0.491582 -0.177091 1.42032 -1.82708 0.588666 1.2538 -0.503108 0.0890161 0.260276 0.128971 -0.869081 0.359386 0.0209438 -0.0849598 0.193906 0 +173 0 0.368868 0.383263 0.0559777 0.335583 -0.134133 0.197698 -0.243495 0.472315 0.384739 -1.43893 -0.10167 -0.114067 -0.00534818 -0.889849 -0.0269331 -0.15147 -0.488895 -0.302569 -0.0351245 1.65243 -0.0192571 -0.490622 0.00450535 -0.264446 -0.287804 0.357499 -0.0860645 -0.547908 -0.285342 0.0407012 0.0424805 -0.40015 -0.792104 -0.449201 -0.385162 -0.0118464 -0.220217 -1.45552 0.16996 1.19326 -0.0472479 -0.050601 0.0229674 -2.1372 -0.375398 0.852935 -0.455851 -0.582428 -0.112112 -0.115918 -0.678963 3.04186 0.0921524 -0.141275 0.321327 0.878053 -0.0374652 0.350391 0.40187 0.0937999 -0.739238 -1.24897 -1.01625 -0.876235 0.178854 0.153347 1.18509 -0.000874074 -0.0937921 -0.224883 0.0962756 -0.131292 0.293001 0.693862 0.316631 0.569996 4.70629 2.30876 1.05311 1.96152 -0.58904 1.7404 1.27291 -0.42868 1.17382 -0.215134 0.246919 -0.0846281 0.369399 -0.146597 0.418904 0 0 0 0 0 0.0559777 0.335583 0.00197793 0 0 0 0 -2.73305e-05 0 -0.0308093 0 0 -0.00203662 -0.0041482 -0.0231756 0 -0.00380312 -0.0623818 -0.176049 0 0 -0.335793 -0.000243395 0 -0.0187998 -1.46822 0 0 -0.0412219 -0.369035 0 -0.0504985 0 -0.0411072 0 0 -0.00493003 0 0 -0.343671 -0.000467587 -0.0341105 0 0.0320862 0.0303364 0 0 -0.21574 0 -0.00105234 0.0522766 0.00352968 0 0 0.00354888 -0.00617317 0 -0.0207384 -0.150326 0.00472828 -0.428652 -0.0225796 -0.0515713 0 0.025207 0.0318625 -0.400475 0.0647499 -0.116313 0 0 0 6.8755 0.498551 1.02979 0.0345266 0.0355876 -0.0137787 0.00137762 0.000962524 0.00314751 0.0255857 0 0 0 0 0 0 -0.134133 0 0.197698 0 0 0 0 -0.0109704 0.320497 0 0 -0.499776 0 -0.0554291 0 -0.0294798 0 0 0.321356 0 -0.80311 0.0541746 -0.100312 0.0463253 0 0 -0.221544 0 3.08689 0 -1.25915 0.526243 0 0.31107 -1.08014 -0.00553215 0 -0.000728578 0 0 0.0131032 0 0.918051 0.40919 0 0 0.0618808 0 0 -0.114716 -0.285652 -0.0582369 0 -0.746268 0 -0.129384 -0.193023 0.13413 -0.205222 -0.0970521 0.0221285 -0.0341324 -0.0560824 0.555126 -0.983868 -0.0323427 0 0 0 0.107921 0.0857003 0 0 0 0 0.0898844 1.86239 2.45736 -2.72836 0.956152 -0.592439 -0.0714121 0.270174 -0.189476 0.157496 -0.127651 0 0 0 0 0 0 +174 0 -1.03367 -0.351389 -0.0188612 -0.146988 0.0580612 0.0870318 -0.677308 -1.06109 -0.0806603 0.525001 -0.247398 0.615503 0.000987287 1.43327 0.0227001 -0.314781 -1.26121 0.0611461 0.039558 -0.0168124 0.00860863 0.202106 -0.000857767 0.132606 -0.18741 -0.177089 0.0310601 -0.298061 -0.261017 0.457186 -0.00786783 0.181115 0.689533 0.192284 -0.125148 -0.0215986 0.147538 3.27455 -0.33803 0.179921 0.00788686 0.341345 -0.0320454 2.34118 0.0453745 0.306153 -0.288072 0.323178 0.0870716 0.18583 -0.117331 1.26629 -0.0344214 0.12834 0.130984 -0.524639 0.344766 -0.344314 -0.0924873 0.00675636 0.299846 -0.146868 -0.254386 -0.0954491 0.0490268 0.393728 0.562518 0.168713 0.0205229 -0.449628 0.405839 -0.215255 -0.00682165 -2.32893 -0.0377392 -0.0634239 -9.51636 -1.70988 0.972733 -1.20985 1.50224 -2.39704 -0.652661 0.357613 -0.302485 0.994883 -0.0298453 0.114643 0.052536 0.228149 0.383193 0 0 0 0 0 -0.0188612 -0.146988 0.000996894 0 0 0 0 0.000141802 0 0.00841476 0 0 0.000142273 -0.000855926 0.00745695 0 0.000667617 0.0105382 0.0672055 0 0 0.0283304 -3.21066e-05 0 -0.0404461 -0.0361769 0 0 0.00527732 0.0237175 0 -0.164628 0 0.0088639 0 0 0.00141001 0 0 -0.389839 0.00294968 0.0015305 0 0.0238872 -0.0422029 0 0 -0.166577 0 -0.00332933 -0.673402 -0.00158309 0 0 -0.00124008 -0.00556794 0 -0.0037828 0.00331276 0.00082134 0.329846 -0.0510973 0.0151935 0 0.0152088 0.00411683 0.0812438 0.00863062 0.062927 0 0 0 1.14658 0.00105518 -0.0860345 0.00367477 0.0014303 0.0522551 -0.000278192 -0.000196799 4.88795e-05 -0.020949 0 0 0 0 0 0 0.0580612 0 0.0870318 0 0 0 0 -0.254746 -0.0370268 0 0 0.659935 0 0.0591567 0 -0.00129744 0 0 -0.744138 0 0.52226 -0.040638 0.356747 -0.10617 0 0 -0.0980297 0 -7.54981 0 3.13816 0.0561941 0 -0.57484 1.24757 0.0349556 0 -0.0231769 0 0 0.0157642 0 -1.90484 -1.62274 0 0 -0.226401 0 0 0.535517 -3.9575 0.0992308 0 1.81118 0 -0.308657 0.268891 -0.171265 0.0259831 0.0150469 -0.644126 -0.0937114 -0.068679 -3.08253 -6.46205 -0.0286811 0 0 0 -0.313119 0.0115224 0 0 0 0 -0.351434 -20.8623 -3.50278 0.698894 -1.97983 1.6942 -1.81295 -0.342286 0.272829 -0.257819 0.155052 0 0 0 0 0 0 +175 0 0.254638 0.267786 -0.027818 -0.128227 0.153204 0.190617 0.225889 -0.646684 -0.16455 0.975718 -0.143762 1.80383 0.00489093 3.7017 0.0231408 2.15312 11.414 0.235014 0.0346305 5.23804 0.0376862 0.0161047 -0.00357781 0.137115 -0.000249373 0.365587 0.0384874 0.209646 1.33904 0.633968 -0.027568 0.23287 0.0451638 0.190892 0.0352361 -0.0110835 0.0445228 -1.09259 -0.296599 2.26602 0.0436117 0.293244 -0.035699 9.459 0.344575 0.918394 0.662393 0.367373 0.120128 0.711442 0.758183 4.39317 -0.10561 0.185373 -0.0779698 1.55334 0.0668003 -0.305922 -0.432458 -0.140498 0.464275 -2.81554 -0.254203 -0.263213 -0.562599 -1.02804 -0.887695 0.272019 0.0580626 -0.126682 0.218363 0.149339 0.062957 -1.27761 -0.456197 0.532946 7.83646 -1.19572 4.39126 -0.685009 0.435938 0.222575 -0.412322 0.344653 -1.34482 0.80329 -0.226646 0.123918 -0.69331 0.320202 -1.96581 0 0 0 0 0 -0.027818 -0.128227 0.000506517 0 0 0 0 5.07426e-05 0 0.00735299 0 0 0.000854223 0.00215744 0.0140527 0 0.00172965 0.0355571 0.0790479 0 0 0.405306 0.000136693 0 0.0133345 1.03973 0 0 0.0446383 0.174902 0 0.10917 0 0.0472142 0 0 0.00545134 0 0 0.368782 0.000763941 0.014158 0 0.00333931 -0.0222627 0 0 0.171346 0 -9.29004e-05 -0.156647 -0.00271067 0 0 -0.00405353 -0.00127918 0 0.0146945 0.0527243 -0.00716749 -0.429471 0.0011084 0.034363 0 -0.00203253 -0.0459273 0.284523 -0.101558 -0.0253983 0 0 0 -4.97647 -0.352876 -0.73454 -0.0261717 -0.0208537 -0.0753313 -0.000903428 -0.0010015 -0.000789383 -0.00013184 0 0 0 0 0 0 0.153204 0 0.190617 0 0 0 0 -0.410953 0.959365 0 0 0.649263 0 0.0902142 0 0.0962356 0 0 0.853383 0 0.00518073 -0.150866 0.394084 0.118319 0 0 0.632674 0 7.44495 0 -1.73121 0.613839 0 -0.972621 -0.322144 0.0597179 0 -0.0670139 0 0 0.147857 0 2.55896 2.07919 0 0 0.303068 0 0 0.207614 -0.558315 0.213778 0 1.16758 0 0.0281424 0.375908 -0.335533 -0.324814 -0.135336 0.0914157 -0.401637 0.323594 0.887252 7.35514 0.0811495 0 0 0 0.0684361 -0.296595 0 0 0 0 -0.040762 11.4975 -1.65722 4.64314 -0.0141393 0.0290896 0.739543 -0.477603 0.365664 -0.243935 0.402324 0 0 0 0 0 0 +176 0 0.366884 -0.361207 0.0648764 0.163693 -0.042381 -0.270399 0.470356 1.06333 0.316659 -1.6726 -0.20202 -0.342784 -0.0190058 -0.524488 -0.0569424 -0.381667 -1.2461 -0.253187 -0.179636 -0.778666 -0.0597623 0.439314 0.0138018 -0.396606 0.519361 -0.46182 0.00915316 0.341107 0.794866 -0.129734 0.0758032 -0.285722 0.585153 0.293918 0.327431 -0.0127248 0.147193 -0.565927 -0.280105 -1.12337 -0.0775328 0.756151 -0.00230986 -2.05204 -0.257693 -0.835015 0.493547 -1.04631 -0.102221 -0.102309 -0.516361 -2.78335 -0.582473 -0.363003 0.138378 -1.35091 -1.10937 -0.0981919 0.655195 0.161011 -0.533777 2.20215 0.193279 -0.87788 -0.0625575 -0.0448384 0.838573 0.0791359 0.141841 0.743652 -0.417708 -0.122713 0.239481 0.000332501 -0.311214 -1.27477 1.39556 2.07257 -1.24366 1.1002 -0.418406 0.401262 1.79959 -1.21945 1.48463 -1.16088 0.323336 -0.00274205 -0.215106 0.858726 -1.74933 0 0 0 0 0 0.0648764 0.163693 0.00266046 0 0 0 0 0.000375864 0 -0.0163823 0 0 -0.00214308 -0.0103089 -0.0231217 0 -0.00511483 -0.0983115 -0.0609972 0 0 -0.165755 -0.000567034 0 -0.0473369 -1.19838 0 0 -0.0281527 -0.346368 0 -0.142337 0 -0.0404012 0 0 -0.00630859 0 0 -0.621119 0.00731763 -0.0389445 0 0.0516266 -0.000521199 0 0 -0.183338 0 0.000165435 -0.146289 0.00712834 0 0 0.0021417 -0.00828275 0 -0.0107699 -0.0757633 0.0101831 0.0867492 0.000781987 -0.0267464 0 0.0387838 0.0171976 0.261031 -0.0724912 0.0133596 0 0 0 5.2027 0.367991 0.496942 0.0243843 0.0212292 0.0589714 0.00117298 0.000999309 0.00383144 0.00444341 0 0 0 0 0 0 -0.042381 0 -0.270399 0 0 0 0 0.0171206 0.752214 0 0 -0.308306 0 -0.0458784 0 0.0458655 0 0 -0.609572 0 0.839733 0.0377 0.0381252 -0.0934044 0 0 0.237231 0 -2.65712 0 0.571291 0.00352718 0 0.0576919 1.13928 -0.00620802 0 0.0121222 0 0 0.118739 0 -0.416501 -1.8099 0 0 -0.251465 0 0 0.394328 -2.8062 0.0377593 0 0.782581 0 -0.354338 0.20968 -0.131634 0.0679255 -0.0396195 -0.517719 0.0185441 -0.163188 -2.16822 -1.9838 -0.0178345 0 0 0 -0.179889 0.121554 0 0 0 0 -0.475828 4.22593 0.961233 0.983119 -0.759097 0.796683 -0.263665 0.19923 -0.126765 0.114225 -0.00979433 0 0 0 0 0 0 +177 0 -1.15043 -0.0691265 -0.0137083 -0.103772 0.020368 0.201019 -0.262756 -0.21097 -0.318319 0.199021 0.354224 0.526991 -0.00281202 0.0107346 -0.039542 1.09689 5.10253 -0.0604117 0.021489 -0.67639 -0.0225257 -0.00281599 -0.00229842 0.0236999 -0.216414 0.330601 -0.0496931 -0.720933 -1.59596 0.341476 -0.0253194 -0.230294 0.329786 -0.119121 -0.207076 0.0387769 -0.329516 3.1547 0.516426 0.411531 -0.0238435 -0.733602 0.0591753 0.792054 -0.216041 0.524438 -1.08426 0.194922 -0.0569386 0.305478 -0.337738 -6.06523 -0.374332 0.139197 -0.525197 -2.36944 -0.516181 0.0954723 -0.0161005 0.0168968 -0.70863 0.435063 -1.46541 -0.143278 -0.160619 0.270575 0.0288241 -0.35825 0.108138 -0.861294 -0.0739856 -0.22627 0.251011 0.0228111 1.35636 0.0673251 -8.48781 -1.59675 0.122887 -1.06861 0.489614 -1.38921 -0.366476 -0.23914 0.615565 -0.0831126 0.271073 -0.473611 1.23898 -1.67359 3.51238 0 0 0 0 0 -0.0137083 -0.103772 0.00242061 0 0 0 0 0.000315624 0 0.007928 0 0 0.000358538 -0.00272979 0.00556181 0 0.00017757 -0.0315263 0.0546696 0 0 -0.00023211 -0.000121408 0 -0.114807 -0.257703 0 0 0.00711158 -0.141832 0 -0.26531 0 0.00457039 0 0 0.00245517 0 0 -0.380565 0.00685838 0.00701787 0 0.0521992 -0.0550379 0 0 -0.29359 0 -0.00655913 -0.989394 -0.00409614 0 0 -0.000727378 -0.0114707 0 -0.012846 -0.0168798 0.00110544 0.0885733 -0.0903063 0.0172234 0 0.0203733 -0.00164084 0.00566213 0.0379177 0.0315236 0 0 0 2.06465 0.04327 0.154484 0.00851342 0.00706151 0.0443025 -0.000341127 -0.000300378 -0.000559081 -0.0293133 0 0 0 0 0 0 0.020368 0 0.201019 0 0 0 0 0.218353 0.223081 0 0 -0.170146 0 -0.0458505 0 0.0213932 0 0 -0.357821 0 -0.150983 0.0564904 -0.324258 -0.0486634 0 0 0.0907251 0 -1.15753 0 1.25617 0.670012 0 0.185814 -0.15411 -0.0461141 0 0.0364063 0 0 0.0507457 0 0.204335 -0.580531 0 0 -0.0826117 0 0 0.160745 -3.01968 0.243404 0 0.959085 0 -0.488021 0.309907 -0.275747 0.126698 -0.0883782 -0.690054 0.118847 -0.0835738 -1.44715 -1.13188 0.0152558 0 0 0 -0.0867784 0.092277 0 0 0 0 -0.359948 -11.8899 -0.732043 -0.814197 -1.01873 1.07634 -1.41438 0.161845 -0.0965368 0.0184746 -0.119693 0 0 0 0 0 0 +178 0 -0.429959 -0.311531 -0.114414 -0.216524 0.105722 0.0849655 -1.36036 -2.73122 0.299508 1.82739 -0.643653 -0.207672 0.042594 -1.10116 -0.117403 -2.2637 -10.5428 0.176471 -0.257254 3.24862 0.0409288 -0.0759082 -0.0160566 0.480243 -0.456465 -0.424213 -0.0449742 0.0972732 0.875295 -0.0820939 -0.0404128 -0.932417 -0.197121 -0.687224 -0.226031 -0.134693 -0.598524 0.591908 -1.20349 0.981791 0.200056 -3.50274 -0.26108 -1.4203 0.877799 0.288555 0.352135 -2.22242 0.639493 -1.57117 0.685316 0.973229 0.596948 -0.295825 0.170226 -1.57934 -1.12768 -0.925566 -0.796507 -0.309957 0.310667 0.296967 1.18753 1.43005 1.22945 0.155209 -1.51685 -1.19074 -0.492918 -0.822444 -0.292964 -1.13006 0.381324 0.730858 0.0493608 -0.185802 -0.73791 -2.11891 4.86137 -2.68153 2.68415 -1.50641 -2.33739 1.8521 -2.25713 3.55497 -1.1014 1.36296 -1.51506 1.93051 -1.92634 0 0 0 0 0 -0.114414 -0.216524 -0.0061419 0 0 0 0 -0.000898381 0 0.0192122 0 0 0.00317799 0.0141685 0.0487416 0 0.00815366 0.147973 0.116693 0 0 0.677436 0.000829033 0 0.0482399 0.997366 0 0 0.0843635 0.392611 0 0.23859 0 0.155184 0 0 0.0199852 0 0 0.884028 -0.0177335 0.0544022 0 -0.120796 -0.0522378 0 0 0.34186 0 -0.00438393 -0.610571 -0.0122926 0 0 -0.00735517 0.0156815 0 0.0247844 0.180172 -0.0173946 -0.435597 -0.048274 0.0523692 0 -0.0501282 -0.0581256 0.436939 -0.13165 -0.101055 0 0 0 -10.6764 -0.778805 -1.33345 -0.0527929 -0.047596 -0.143658 -0.00237266 -0.00207658 -0.00460905 0.0113285 0 0 0 0 0 0 0.105722 0 0.0849655 0 0 0 0 -0.257752 -2.02752 0 0 0.75386 0 0.0981944 0 -0.100439 0 0 -0.0302944 0 0.144799 -0.0933477 0.290232 -0.00924508 0 0 -0.775653 0 -8.3103 0 0.339693 -0.429274 0 -0.676714 0.104084 0.043653 0 -0.0407442 0 0 -0.25462 0 -2.39251 0.312427 0 0 0.0392507 0 0 -0.213125 -0.869793 -0.370781 0 -3.08167 0 0.688952 -0.649088 0.463682 -0.0831966 -0.13467 -0.0644819 -1.01786 0.324172 -0.0182463 -9.08147 0.0954056 0 0 0 -0.616169 -0.291266 0 0 0 0 0.532943 -5.27713 -3.18792 2.53682 -0.685682 0.487465 -0.322437 -0.588902 0.437048 -0.326161 0.267413 0 0 0 0 0 0 +179 0 0 0 0 0 -0.192192 0.191009 -0.793053 0.132876 0 0 0.339829 1.00737 0 0.429183 0.0672358 0 0 0 0.327138 -0.256165 0 0 0 0 -0.0721483 0 0 -0.954498 -3.71276 0.612646 0 0.193109 0 0 -0.264938 0.016653 0 0 1.19518 0.452462 0 0 0.202411 0.501313 0 0.744962 -1.78584 0.678364 -0.361607 2.47931 -0.137742 0 -0.360179 0.47777 -0.958131 -1.68136 -0.325976 0.276834 0 0 0.952429 -1.0141 0 0.263794 -0.658666 0.778321 0 0 0 0 -0.153997 1.10929 0 -0.288163 2.06305 0 0 0 -1.0006 0 -2.33404 5.5412 0 -0.777454 0.604891 2.58569 0 -1.00866 2.08599 -5.31997 15.9691 0 0 0 -0.184549 -0.0352072 0 0 0 -0.0366162 -0.00527002 0 -0.00487332 0 9.40866e-06 0.0373105 0 0 0 0 0.142382 0 0.0246642 0 0.197309 0 -0.277273 -0.169327 0 0.00298443 0 0 0.0829178 -0.000101562 -0.0211409 0 3.86881e-05 0 -0.000405611 0.0258791 0.0151744 -0.00157632 0.00518741 0 3.59734e-07 0 0 0 9.68311e-07 0 0 0.000262322 -0.000648754 -0.0066081 -0.00188482 0 0 0.00534981 0 0.000707848 0 0 0.00182013 0.00469623 -0.124299 -0.00357849 0 0 -0.0456074 -0.0055198 -2.53767e-05 -0.0716226 -0.0514184 0 0.0579419 0.00168579 -0.0824363 0 0 0 -0.258017 0 0.002442 -0.125416 0 -0.000441612 -0.00142944 0.00492276 0 0.000122745 -0.00112494 0.00325389 -0.0116597 0 -0.192192 -0.184549 0.191009 -0.0352072 0.189208 0.0780375 -0.306035 0.386695 -0.583605 0.021797 0.0991115 -0.158027 0.00288065 -0.0118812 -0.0378814 -0.0316288 0.0357591 0.150117 -0.337559 1.03552 0.154792 0.237492 -0.210197 -0.0591646 0.264422 -0.14925 -0.189166 0.014221 -2.29961 0.310952 0.799929 0.297111 -0.00434812 1.00288 0.329467 -0.0242021 0.0124107 0.0795342 0.11062 -0.713681 -0.0893086 -0.028013 -1.03338 1.20816 0.0119713 0.03102 0.267091 0.131786 0.0138839 -0.630848 0.559028 1.07267 -0.0520901 1.04665 0.0761998 0.109232 -0.199553 -0.31388 0.0880391 -0.393856 -0.220045 -0.0897163 -0.0861911 0.313952 2.97786 0.170545 -0.282479 0.142432 0.161033 0.0729698 -0.00383333 -0.0557509 -0.0395123 0.227604 -0.227443 0.154296 -0.299018 0.0671825 -3.56387 -0.115518 -1.15106 2.29137 0.0243429 -0.527309 1.20463 -1.74257 -0.0328263 -0.300632 0.612855 -0.840396 1.0843 0 +180 0 0 0 0 0 -0.18193 0.0351071 0.604504 1.88503 0 0 -0.148326 0.0760929 0 -0.272791 0.075195 0 0 0 0.27803 -3.16249 0 0 0 0 0.165868 0 0 -0.244327 5.29588 0.229969 0 0.364369 0 0 -0.0233781 0.0150669 0 0 -0.56822 0.409555 0 0 -0.024127 -2.53081 0 0.787207 0.785478 1.26774 -0.00832483 0.81302 0.466056 0 -0.211141 0.16347 0.459338 0.73626 -0.103436 -0.457392 0 0 -1.8411 -0.174461 0 1.53987 0.339467 -1.04891 0 0 0 0 0.449342 0.35963 0 -0.738555 -0.981905 0 0 0 -2.65543 0 0.638593 -7.52138 0 0.108318 -0.160795 -5.79915 0 0.0621675 -1.2229 3.19035 -15.8098 0 0 0 0.0668954 0.0128492 0 0 0 -0.00549997 0.0146395 0 0.000280312 0 -3.79432e-05 -0.0121354 0 0 0 0 -0.0290335 0 -0.00746728 0 -0.0132782 0 -0.124031 0.252733 0 -0.00141216 0 0 -0.0517047 0.000269932 0.0238414 0 0.000734258 0 0.000720952 0.127239 -0.00759361 0.00569429 0.00832973 0 -2.34092e-06 0 0 0 3.83854e-05 0 0 -0.000650722 0.00105632 0.0382305 0.00285818 0 0 -0.00803637 0 -0.00115254 0 0 0.00448903 0.0126165 -0.127069 -0.00749953 0 0 0.0222692 0.0057006 0.00461489 0.105602 -0.104698 0 -0.0259754 -7.54155e-06 -0.0390798 0 0 0 -0.00222169 0 -0.0221996 0.126025 0 -0.00147579 0.00979297 -0.0273377 0 -0.000193109 0.000764712 -0.00323188 -0.0208212 0 -0.18193 0.0668954 0.0351071 0.0128492 -0.58529 -0.151738 0.0784208 -0.17842 0.818671 -0.0121671 0.0171812 0.165406 -0.0015335 0.0134769 0.0140922 0.0270437 0.00946337 -0.0908013 -1.19724 -1.02084 -0.156727 0.130385 0.20576 -0.19658 0.203554 0.403599 0.330217 -0.0393794 1.5731 -0.3739 -0.798491 0.604587 0.00184791 0.224411 -0.316595 0.0202502 -0.00913401 0.00554127 -0.0781167 2.52336 0.0797554 0.069082 0.562163 -3.00565 0.000214528 -0.0449493 -0.48853 -0.173803 -0.141766 1.30228 -0.596318 -0.16488 -0.0293297 1.13048 -0.0243905 0.163367 0.145474 0.133132 -0.0811888 -0.255845 -0.862749 0.0164009 0.1036 -0.125331 3.05109 -0.143329 1.12128 -0.0514591 -0.527235 -0.311194 -0.0130164 -0.00119729 0.0254452 0.187846 0.153111 -0.0548113 0.29848 -0.068494 0.352382 0.104275 1.12056 -4.7014 -0.0223582 0.261032 -0.552033 -0.84687 0.0198557 0.197241 -0.557891 0.743925 -2.3632 0 +181 0 0 0 0 0 0.117203 0.00512098 0.319168 1.855 0 0 0.125956 0.282743 0 -0.566847 -0.0295401 0 0 0 -0.246787 1.19993 0 0 0 0 0.36206 0 0 -0.168383 -0.313129 0.189411 0 -0.0810812 0 0 0.0106528 -0.00344443 0 0 0.300385 0.301859 0 0 0.100387 -1.76577 0 0.604494 -0.232497 -1.48854 -0.27536 1.96365 0.0875265 0 0.18614 -0.361106 -0.00964974 0.408995 -0.0319353 -1.01671 0 0 -0.683722 1.44632 0 -0.0243032 -0.803242 -0.528707 0 0 0 0 -0.0107536 0.925674 0 -0.425477 0.0208838 0 0 0 -3.52088 0 -0.751768 0.718156 0 -0.371511 0.868523 -4.39941 0 -0.601679 0.581481 -1.69688 2.86375 0 0 0 0.0753958 -0.0123414 0 0 0 -0.00874578 -0.0220811 0 -0.00153723 0 0.000776444 0.0356327 0 0 0 0 0.143904 0 0.0195989 0 0.345587 0 -0.0333259 -0.16765 0 0.00242343 0 0 0.100253 0.00083984 -0.0127933 0 -0.00127731 0 -0.00129825 -0.0126818 0.0165587 0.016828 0.00300373 0 4.06259e-05 0 0 0 -6.87436e-05 0 0 -0.00205685 -0.00198283 -0.164584 0.00528828 0 0 0.00420626 0 0.00216345 0 0 -0.00254706 -0.00889094 0.0161705 -0.0200338 0 0 0.084177 0.0103722 -0.0131668 0.135597 -0.202336 0 0.157542 0.0131384 0.0295116 0 0 0 -1.10532 0 -0.077152 -0.443305 0 -0.0069976 -0.0377387 -0.103834 0 -0.000644063 -0.00479703 -0.0073066 -0.040699 0 0.117203 0.0753958 0.00512098 -0.0123414 0.196097 -0.0617743 -0.0692454 0.040521 0.308036 0.0203274 -0.075801 0.205647 0.0023127 0.0100748 -0.0166077 0.0456628 -0.0961963 0.166377 -1.42476 0.376387 -0.151642 0.0553694 0.0648179 -0.157115 -0.899296 0.0696394 0.651214 -0.0171472 -2.905 -0.181826 -0.899669 0.50533 -0.00235342 0.0318633 -0.356396 0.00244106 -0.000330227 0.0111182 -0.00218796 0.116764 -0.0016925 0.0218868 -0.010241 -3.40425 -0.00878875 -0.0200268 -0.46981 -0.047553 -0.334971 -1.18405 -0.749272 0.492892 0.212253 -0.845619 0.020719 -1.30972 -0.104043 -0.346547 -0.0838768 -0.21387 -0.434551 0.119395 -0.0991084 -0.609219 -1.30377 -0.19241 -0.106751 -0.156726 -0.0641835 0.0861407 0.0209113 0.0365962 -0.0512984 0.00733392 -0.00150624 0.0360781 0.336301 -0.0807768 -1.26024 0.0672696 -0.154171 1.36439 -0.0146544 -0.0844168 0.410481 -0.654637 -0.036382 0.0330041 0.0606604 0.0624886 -0.191692 0 +182 0 -0.2035 0.0742617 -0.0064487 -0.0179131 -0.0639443 -0.0720703 0.727878 0.602563 -0.106263 0.882136 -0.00687344 -0.325319 -3.19741e-05 1.10909 -0.026774 0.586201 4.62208 0.261323 -0.0282073 3.19214 0.0340099 0.0331224 -0.000562727 0.128823 -0.0427603 0.00601732 0.0383798 0.5664 1.13065 -0.137888 -0.00827894 -0.241888 0.34501 0.279317 0.122119 -0.00573434 0.20694 2.26464 0.12167 1.21378 -0.00221829 1.28242 -0.000633939 2.04847 -0.0560254 0.137525 0.852646 -0.127357 -0.0107767 1.21808 0.212229 -3.0906 0.0637065 -0.0418015 0.171541 1.27221 0.0230322 -0.113326 -0.204062 0.0107026 -2.21989 -2.06017 -0.125788 -0.567169 -0.722459 -1.60543 0.0136233 0.340597 0.0278195 -0.359815 0.189331 -0.0905025 -0.351609 -0.704045 -0.996712 -1.15236 -10.9064 -3.87882 -0.465528 -1.38703 1.50709 -5.71834 -0.886535 1.05423 -1.34865 -2.99257 0.00779486 -0.0261413 0.0385977 0.102109 -4.73254 0 0 0 0 0 -0.0064487 -0.0179131 -0.00269487 0 0 0 0 -5.68091e-05 0 0.00385028 0 0 -0.00117311 -0.000699572 0.00145933 0 0.000166289 0.00654013 0.0409049 0 0 -0.0694464 -4.48136e-05 0 0.00562854 -0.351415 0 0 -0.00466161 0.0334936 0 0.0731612 0 -0.00485137 0 0 -0.000392537 0 0 0.00991949 -0.000572568 -0.0175024 0 -0.0362895 -0.0071764 0 0 -0.00276809 0 -0.00342156 0.206839 0.00869607 0 0 0.00113555 0.00523663 0 -0.00259737 -0.0305783 -0.00583634 0.0611001 0.0387893 0.00284563 0 -0.0027566 -0.00341363 -0.0977253 -0.00278594 -0.100974 0 0 0 0.557056 -0.0136979 0.0562576 0.0230858 -0.0508537 0.149336 0.00106589 -0.00209881 0.00866491 -0.00900312 0 0 0 0 0 0 -0.0639443 0 -0.0720703 0 0 0 0 -0.297928 0.568672 0 0 0.395142 0 0.0384859 0 0.031873 0 0 0.749613 0 -0.12122 -0.0926826 0.22512 0.109705 0 0 0.226384 0 7.59519 0 0.00546115 0.0505119 0 -0.522402 -0.241755 0.0230414 0 -0.0576855 0 0 0.0711267 0 2.11808 1.19347 0 0 0.187166 0 0 0.142661 -0.623153 -0.0441404 0 -0.0535507 0 -0.399817 0.163171 -0.155933 -0.0462236 0.0567995 -0.200296 -0.274443 0.0660895 -0.469214 1.08889 -0.112999 0 0 0 -0.0210696 -0.0474051 0 0 0 0 -0.151761 -8.75256 -1.86432 1.24143 -0.641403 0.339821 -0.317684 -0.254349 0.224467 -0.228735 0.303784 0 0 0 0 0 0 +183 0 -0.493704 -0.0412582 -0.0081422 0.0152136 -0.241724 -0.0421268 -0.522597 0.617192 -0.0905936 -0.033977 -0.115002 -1.31141 0.000674187 -0.847521 -0.0164437 -1.19878 -6.56163 0.0290712 -0.0200922 -0.111207 0.00682727 -0.248722 -0.000850159 0.107263 -0.242099 0.0431725 0.0127759 -0.131584 -0.531991 -0.336765 -0.00896025 -0.227198 -0.255853 0.134998 -0.217715 -0.0144625 0.0634767 1.13715 -0.219544 -0.16216 0.00734446 0.488471 -0.0281901 -3.29655 0.0704351 -0.076135 -0.32268 -0.35269 0.0850429 -1.39522 0.118919 -0.981711 0.00955864 -0.0138581 -0.000938729 -1.57458 -0.449967 -0.118238 -0.17066 -0.0163759 1.48728 -0.0150601 0.693364 0.0526912 0.210693 0.927782 -0.0406246 0.0878662 0.0121349 0.167516 0.165638 -0.412072 -0.0387636 0.124798 0.651889 -0.451367 1.24685 0.622778 -3.19633 0.401504 -0.795926 0.995528 -0.28294 -0.139191 0.222434 0.66354 -0.00979969 0.0374965 -0.110401 0.291615 2.22674 0 0 0 0 0 -0.0081422 0.0152136 0.001721 0 0 0 0 0.000126593 0 -0.00420655 0 0 0.00101151 -0.000148939 -0.00396826 0 -0.000772239 0.0247809 -0.0253137 0 0 -0.0998861 -7.51816e-06 0 -0.0131964 0.518119 0 0 -0.00934811 0.14407 0 -0.0875527 0 -0.0056503 0 0 -0.000490861 0 0 -0.0719921 0.00252583 0.0183462 0 0.0344089 -0.0331009 0 0 0.0161111 0 0.00204122 0.079904 0.00890339 0 0 -0.00141218 -0.0031903 0 -0.00514778 -0.00917236 0.00481284 -0.367104 0.0203257 0.0101154 0 0.0056197 -0.030192 -0.145179 0.0129235 0.101354 0 0 0 -0.164857 -0.0884938 0.0945093 0.00788564 -0.00237671 -0.153217 -0.000810337 0.00138186 -0.0131587 -0.0102394 0 0 0 0 0 0 -0.241724 0 -0.0421268 0 0 0 0 0.501458 -0.585966 0 0 -0.448465 0 -0.0567948 0 -0.0297581 0 0 0.38692 0 -0.228246 0.174528 -0.127347 0.0658087 0 0 -0.356056 0 -6.73445 0 0.621102 -0.467952 0 1.42254 0.112587 -0.0158432 0 0.0670162 0 0 -0.0550095 0 -1.65359 0.320092 0 0 0.0740304 0 0 0.308238 1.58716 -0.358264 0 -0.739655 0 0.395472 -0.0515034 0.224637 0.216058 -0.163926 -0.289082 0.147394 0.139523 0.0895785 -1.97196 0.0578999 0 0 0 -0.173232 0.0151289 0 0 0 0 0.0969568 11.4075 4.45505 -6.17663 1.35129 -0.985086 -0.246774 0.21385 -0.165347 0.225984 -0.625261 0 0 0 0 0 0 +184 0 -0.7455 -0.620719 0.0256941 0.25539 -0.262152 -0.388591 1.08141 1.87757 0.103448 -0.299357 0.21736 -0.383595 -0.00143009 -0.86571 -0.000268421 -0.733941 -5.37429 -0.0504856 -0.0063256 -2.15795 -0.00803077 0.538898 0.00155183 -0.0817354 0.692582 -0.434414 -0.01924 0.461967 -0.975658 -0.267671 0.0140148 -0.135595 1.61066 -0.0871595 0.446381 0.0207538 -0.230815 5.99809 0.606831 -1.36965 -0.0164176 -0.894843 0.0529331 -2.70346 -0.182133 -1.09627 0.203417 -0.157887 -0.117999 -0.634943 -0.0565465 -0.83885 0.0267071 0.0314982 -0.18363 -1.23176 -0.452287 0.160694 0.05275 0.0337296 0.223686 1.3637 0.669563 0.268402 0.593226 0.388555 -0.391678 -0.70647 -0.0133485 0.19143 -0.545212 0.125125 0.156429 1.08921 0.0101844 -0.107658 -21.9205 -0.969485 -7.50982 -1.99038 0.87323 -5.28971 0.175948 -0.04986 -0.323749 0.00221179 0.0253403 -0.0996813 0.449046 -1.57784 4.08378 0 0 0 0 0 0.0256941 0.25539 -0.00237135 0 0 0 0 -0.000187616 0 0.0183016 0 0 0.0012772 0.00302258 0.0101143 0 0.00193821 -0.0317726 0.103521 0 0 -0.113443 0.000154245 0 0.0322084 -0.911638 0 0 -0.0134274 -0.138649 0 0.21419 0 -0.00675339 0 0 -0.00104309 0 0 0.934996 -0.00318602 0.0279783 0 -0.0342703 -0.0635669 0 0 0.387129 0 -0.0036401 0.382851 0.0104515 0 0 -0.00315191 0.00451483 0 0.0183973 -0.00993664 0.00186547 -0.447355 0.0205066 0.0175984 0 -0.00096572 -0.0184899 0.0569664 -0.0431384 0.0889073 0 0 0 -7.63573 -0.520524 -0.752339 -0.0235672 -0.0417105 -0.172214 -0.00099278 -0.00142379 -0.00877393 -0.0194259 0 0 0 0 0 0 -0.262152 0 -0.388591 0 0 0 0 0.224809 -0.97202 0 0 -0.731658 0 -0.0800919 0 -0.0477367 0 0 -0.161169 0 0.509691 0.119757 -0.259518 -0.0398155 0 0 -0.44676 0 -10.2389 0 1.20306 -0.834982 0 0.788958 0.557764 -0.0272451 0 0.0267361 0 0 -0.1245 0 -2.67408 -1.41402 0 0 -0.186289 0 0 -0.104705 -0.577666 -0.382233 0 -1.40682 0 0.526156 -0.496094 0.446054 0.312746 -0.0515927 -0.678365 -0.587093 -0.0829784 0.0383998 -7.75449 -0.0631529 0 0 0 -0.180708 0.0936165 0 0 0 0 0.223899 -2.30837 2.76123 -3.13838 0.401567 -0.330878 -0.34477 0.441509 -0.385973 0.484677 -0.508913 0 0 0 0 0 0 +185 0 -0.634329 -0.0543663 -0.033679 -0.214765 0.102203 -0.0582514 0.422066 -0.140483 -0.237302 0.826946 -0.164408 0.443724 0.00231684 0.984771 0.0338301 0.688673 2.84508 -0.0441448 0.056376 1.08494 -0.0444374 -0.000749639 -0.00297169 0.0838322 0.24512 0.171461 -0.0550293 0.51671 1.88277 -0.0389123 -0.0283392 0.296553 0.238265 -0.273488 0.187616 -0.0132685 -0.0663511 2.17008 -0.40002 -0.14957 0.0230083 -0.693633 -0.0399322 3.69002 0.211088 -0.370447 0.99532 0.494334 0.108719 -0.00287608 0.538731 -4.84538 -0.0960856 0.094735 -0.158687 -3.33378 -0.316384 -0.424073 -0.174132 -0.0482319 -1.43882 -1.0568 -0.249614 0.0311168 -0.245982 -1.45758 -0.50171 0.125443 0.0483001 0.0298883 0.0915233 0.0167331 0.0614324 -3.0409 -0.744036 -0.285774 -6.45206 -2.81635 1.6449 -1.91768 2.06653 -3.82692 -0.633522 0.866868 -1.50445 0.0875537 -0.0456907 0.0720358 -0.409152 0.645583 -3.66382 0 0 0 0 0 -0.033679 -0.214765 -0.000400227 0 0 0 0 -2.90243e-06 0 0.00716531 0 0 -7.2464e-05 -8.15611e-06 0.00408054 0 0.00109948 0.00199944 0.0279189 0 0 -0.0558732 -4.29611e-07 0 0.0372762 -0.251758 0 0 -0.00555171 -0.00793353 0 0.141672 0 -0.00748061 0 0 -0.000773543 0 0 0.300378 -3.9118e-05 -0.00140784 0 -0.00543129 -0.00345235 0 0 -0.0896464 0 -0.000821233 0.0177404 0.00121002 0 0 0.000138353 0.000694068 0 -0.00102279 -0.00184358 -0.000489644 -0.164297 0.00291107 -0.00572463 0 -8.71882e-05 -0.00040359 -0.060507 6.55787e-05 -0.0633223 0 0 0 -0.423371 0.00182821 0.0146979 0.00728316 -0.0128941 0.0257246 6.11018e-05 -8.30326e-05 0.00103491 0.000851172 0 0 0 0 0 0 0.102203 0 -0.0582514 0 0 0 0 -0.421245 -0.414421 0 0 0.665812 0 0.0704072 0 -0.00218622 0 0 0.670977 0 0.0195218 -0.120496 0.263751 0.0933552 0 0 -0.102583 0 2.32268 0 0.56155 -0.149169 0 -0.984635 0.0632425 0.0293029 0 -0.0488451 0 0 -0.0256449 0 0.753952 1.51292 0 0 0.182302 0 0 -0.111688 -0.0597157 -0.397701 0 -1.90427 0 -0.3192 0.163184 -0.0499205 -0.236596 0.10738 0.595699 -0.171955 0.119072 0.849588 2.37298 -0.0254349 0 0 0 -0.111908 -0.11421 0 0 0 0 0.0970344 -6.64182 -1.67336 1.35068 -0.488287 0.400519 -0.711515 -0.310372 0.279142 -0.393088 0.527162 0 0 0 0 0 0 +186 0 -0.71087 -0.337485 0.00596979 0.0379245 -0.198178 -0.247585 1.17216 3.23473 0.0483292 -0.468808 0.0763085 1.27938 -0.000414524 1.45127 -0.00124101 0.99433 2.73305 -0.123417 -0.00377683 2.80234 0.00883297 0.499489 0.000536386 0.00338863 1.06954 0.0343935 0.0366776 0.605793 0.856286 0.291705 0.00533575 -0.0107863 1.6501 -0.0559102 0.466491 0.00512561 0.20229 5.99801 0.146723 0.589648 -0.00413497 0.154237 0.0115369 3.98571 -0.0381738 -0.154665 0.757071 -0.0388511 -0.0274181 -1.86971 0.0510389 2.84094 -0.0033447 -0.0101741 -0.0204164 -0.0381471 0.520922 0.42572 0.0219094 0.00909997 -0.132659 -2.40423 0.162512 -1.39737 0.43012 -0.579619 0.837076 0.113102 -0.00991738 0.244105 0.0427883 0.150766 -0.210567 -2.14953 -0.856202 0.299777 -17.9496 0.59501 -11.3538 -0.988765 0.743084 -8.0554 0.144098 -0.3908 0.923414 -5.13576 0.00826284 -0.0210773 -0.0555304 -0.0261619 -1.66631 0 0 0 0 0 0.00596979 0.0379245 7.31827e-05 0 0 0 0 5.70788e-07 0 -6.15401e-07 0 0 1.52675e-05 -4.40068e-06 -0.000912159 0 -7.78904e-05 0.00959475 -0.0076617 0 0 -0.0750861 -2.57799e-07 0 0.0013071 0.111766 0 0 -0.00960037 0.0728322 0 0.0203793 0 -0.00530159 0 0 -0.000717796 0 0 0.0690789 1.24878e-05 0.000398669 0 0.00162438 0.000149776 0 0 -0.00552097 0 0.000135177 -0.0284499 0.00102442 0 0 -2.61772e-05 -0.000114245 0 -0.00101738 -0.0141517 0.00101777 -0.260174 0.000177549 0.00265849 0 -0.000204846 -0.00433649 -0.10312 0.00210555 0.0258295 0 0 0 0.00221603 0.0109309 0.02513 0.00167342 0.00273633 -0.0301127 -8.88689e-06 0.00023823 -0.00181822 -0.00470061 0 0 0 0 0 0 -0.198178 0 -0.247585 0 0 0 0 0.339051 -0.0688352 0 0 -0.530961 0 -0.0532508 0 0.00103422 0 0 0.061489 0 0.543378 0.171876 -0.202244 0.00784983 0 0 0.0284347 0 -2.6846 0 2.15806 -0.424742 0 1.27247 0.828342 -0.0168349 0 0.0582825 0 0 -0.0158859 0 -0.468874 -0.170034 0 0 -0.0373018 0 0 0.444945 0.3672 -0.094549 0 1.55291 0 0.188411 -0.17298 0.186144 0.0545368 -0.148535 -0.441979 0.162154 -0.0189774 0.114821 4.27874 0.0961478 0 0 0 0.0626945 0.0428158 0 0 0 0 -0.016454 -7.25653 2.02289 -5.68493 0.478663 -0.390077 -1.06944 0.295775 -0.275236 0.282037 -0.619566 0 0 0 0 0 0 +187 0 0.301414 0.316353 -0.0133859 -0.0237878 0.0709528 0.145084 -0.230794 -0.584562 -0.106509 0.545646 -0.115878 -0.102923 0.000963892 1.27166 0.0107586 0.818027 1.39629 0.124593 0.022789 2.40851 -0.00299576 -0.302465 -0.0012256 0.106513 -0.379735 0.581324 -0.0156145 -0.229663 0.215246 0.0889583 -0.012043 0.071204 -0.238626 0.0381415 -0.224292 -0.00810721 -0.100599 0.695541 -0.261032 1.24842 0.0103121 -0.571192 -0.0218857 2.39614 0.105802 0.501605 -0.121868 0.152702 0.0584096 -0.0126922 0.519285 1.22731 -0.0460501 0.0539015 -0.055919 1.03353 -0.183462 -0.0138666 -0.233588 -0.0238066 -0.693208 -0.977615 -0.427337 0.950544 0.0182734 0.143591 -0.73016 -0.0678739 0.0218283 0.0719283 -0.0603399 -0.107033 0.112494 -0.0150294 0.609237 -0.173426 -1.59302 -1.28609 1.47907 -0.974575 1.3889 -2.33833 -0.60333 0.698407 -1.06365 0.880591 -0.0229012 0.0426572 -0.126239 0.283289 -0.418862 0 0 0 0 0 -0.0133859 -0.0237878 -0.000590402 0 0 0 0 -4.57098e-06 0 0.00370196 0 0 0.000274185 3.60488e-05 0.000350322 0 0.000293153 0.00777093 0.0106763 0 0 0.0437729 1.83314e-06 0 0.0161947 0.107894 0 0 0.006897 0.0301303 0 0.0681574 0 0.00211326 0 0 0.000396063 0 0 0.235777 -6.95019e-05 0.00547406 0 -0.00883829 -0.0129665 0 0 0.035283 0 -0.00119219 0.0476413 0.00309344 0 0 -0.000520382 0.00100759 0 0.00216177 0.0117626 0.00138669 -0.394878 0.00122746 0.00383796 0 -0.000258955 -0.00425424 -0.0106834 -0.00527321 0.0296634 0 0 0 -1.2561 -0.0837374 -0.0971047 0.00127539 -0.012828 -0.0316552 -0.000214303 3.50695e-05 -0.00271706 -0.00781076 0 0 0 0 0 0 0.0709528 0 0.145084 0 0 0 0 0.0927619 -0.957733 0 0 0.123243 0 0.0221084 0 -0.0188918 0 0 0.983743 0 -0.494866 0.0295072 0.11541 0.126461 0 0 -0.290707 0 3.37376 0 -0.565044 0.210327 0 -0.110349 -0.252301 0.0140617 0 0.0279326 0 0 -0.0863926 0 1.14939 2.38905 0 0 0.301421 0 0 0.140071 -0.814639 0.01953 0 -1.79591 0 0.921973 -0.145461 0.0990506 0.041204 -0.0129281 -0.717282 -0.823619 0.173811 1.09062 -1.9152 -0.0863098 0 0 0 -0.0571917 -0.0773337 0 0 0 0 0.132081 6.59015 -0.187774 1.86805 -0.125397 -0.00953289 -0.00496191 -0.084658 0.0727592 -0.0653638 0.0862053 0 0 0 0 0 0 +188 0 0 0 0 0 -0.462225 -0.0651334 1.56511 4.32801 0 0 0.490494 0.0419025 0 0.236156 0.0391085 0 0 0 0.0735151 -5.01403 0 0 0 0 0.440519 0 0 -0.456062 -0.222717 0.415234 0 0.32037 0 0 0.0639319 0.0205557 0 0 1.70732 -0.729249 0 0 0.264805 -3.20651 0 0.359723 -0.301157 -0.0945996 -0.296569 1.68718 0.0515992 0 -0.129188 0.341543 0.294125 -2.05188 -0.493202 -0.139004 0 0 -0.365791 0.91916 0 2.67097 0.364837 0.7435 0 0 0 0 0.551658 0.95329 0 -0.579524 0.74449 0 0 0 -7.97851 0 -3.24968 0.766145 0 -0.557436 0.375387 -6.58391 0 -0.657717 0.749723 -3.08046 -0.08111 0 0 0 -0.226562 -0.046512 0 0 0 -0.101411 0.010694 0 -0.014431 0 -0.000258478 -0.0165984 0 0 0 0 0.0450109 0 0.00372035 0 -0.0795486 0 -0.681416 -0.372364 0 -0.00540457 0 0 -0.182036 -0.000110228 -0.0848268 0 0.00225361 0 0.000426351 -0.0535188 -0.0322772 -0.00195188 -0.0157689 0 -1.33858e-05 0 0 0 0.000112346 0 0 -0.000718488 -0.000698447 0.0698681 0.000986357 0 0 -0.00234151 0 -0.00172595 0 0 -0.0167035 -0.000103283 -0.100726 -0.00752715 0 0 0.0260529 0.0372092 0.00780877 -0.052289 -0.13967 0 0.0770378 0.00487312 0.109874 0 0 0 -0.0179591 0 -0.00489668 0.213838 0 -0.000610667 0.00286037 0.0392337 0 -7.08905e-05 0.000657769 -0.00346364 0.175735 0 -0.462225 -0.226562 -0.0651334 -0.046512 -0.0131619 -0.070281 -0.524248 0.0276916 -1.03161 0.0148108 0.0608225 -0.570455 0.00305353 -0.0430191 -0.065842 -0.0507768 0.00981626 0.0443301 -0.0542357 -0.840118 -0.587802 0.18176 -0.326703 -0.0345664 0.0645329 -0.0316739 -0.252259 -0.0264207 -1.71083 0.330376 -5.16456 0.453437 -0.0080929 0.756777 -1.95346 -0.0369937 0.0108469 0.0361664 0.0869771 -0.272233 -0.158235 0.00142382 0.433372 -1.49012 0.00525413 0.0432102 -0.210177 -0.16129 -0.0111531 0.605447 -3.93995 0.616959 -0.0543024 3.02454 0.17748 -0.313709 -0.208082 0.11046 -0.387726 -0.258835 -0.392995 -0.548349 0.111709 -1.09562 -0.895139 0.086094 0.204199 0.14895 0.163508 -0.170772 0.048592 0.0665729 0.00148262 -0.0190221 -0.105849 0.267788 27.5769 3.49852 -0.666148 0.674376 -1.65148 2.59825 0.0706045 -0.524125 0.716468 -0.773873 -0.0136088 -0.227073 0.135643 -0.133731 0.00788954 0 +189 0 0 0 0 0 0.00313921 0.308843 -1.04225 -2.0013 0 0 0.188014 1.77786 0 2.92417 0.124632 0 0 0 0.388558 2.18042 0 0 0 0 -0.351566 0 0 -0.853361 -7.99171 0.784377 0 0.613721 0 0 -0.274309 0.0392932 0 0 0.511517 0.968501 0 0 0.0696557 7.12718 0 0.885336 -2.37943 1.52328 -0.249411 2.34385 -0.708143 0 -0.450413 0.469536 -0.889956 -3.61516 -0.939354 0.510968 0 0 1.82118 -1.81003 0 -1.77928 -1.37163 -0.113575 0 0 0 0 0.750152 0.110301 0 -0.515795 1.47114 0 0 0 3.65162 0 -1.06925 13.0851 0 -0.453459 2.36804 5.73681 0 -0.331858 2.6026 -3.57725 21.5865 0 0 0 -0.0344196 -0.00651349 0 0 0 0.0110345 0.0088641 0 0.000922749 0 -0.000259126 0.0137466 0 0 0 0 0.0532262 0 0.00347724 0 0.162906 0 0.118067 -0.119431 0 0.000314059 0 0 -0.060814 -0.000292107 -0.0186164 0 0.00118099 0 0.000450598 -0.0329869 -0.00270035 -0.00313877 -0.00343631 0 -1.98926e-05 0 0 0 5.92939e-05 0 0 0.000968324 -0.000157474 0.013001 0.0122536 0 0 -0.00205714 0 -0.00144858 0 0 -0.00336866 -0.00331367 0.137335 -0.00241362 0 0 0.0827456 -0.0611221 -0.0123739 -0.0443409 0.17477 0 0.0490345 0.00296687 0.0352695 0 0 0 -0.0859958 0 0.0151342 0.316717 0 0.00212223 0.0201955 -0.0918733 0 0.000175474 0.00306352 -0.0151559 0.161073 0 0.00313921 -0.0344196 0.308843 -0.00651349 0.898425 0.101215 -0.0315484 0.195573 0.87067 0.00286528 0.0553632 0.483103 0.000377191 0.0512117 -0.00680009 0.0523447 0.0221713 0.0221111 -1.10433 -0.265292 0.323816 -0.00722781 0.286039 -0.19116 0.184039 -0.279866 0.679561 -0.049796 -1.07896 0.543423 2.99245 0.500979 -0.00102553 0.0606281 1.29719 0.0281106 0.0120005 0.0181361 0.0905673 -2.123 0.0609297 -0.0284562 0.292549 -0.898254 0.00513806 0.0721325 -0.25446 -0.190184 0.208903 1.40548 3.11384 0.667752 -0.0362607 1.44469 0.0109522 -0.891953 0.126387 -0.483271 0.383251 0.260211 1.24608 1.01244 -0.222788 -0.286381 -0.436895 0.390121 0.356886 0.0367664 0.673273 -0.185176 0.0144985 -0.0264413 0.000887273 -0.366046 -0.12759 0.148667 -15.9786 -2.43445 -4.85566 -0.518355 -2.06915 4.29225 -0.0826111 -0.403234 0.573707 0.553673 -0.00678785 -0.223064 0.542872 -0.575569 1.65616 0 +190 0 0 0 0 0 0.517993 0.14461 -0.0413824 -1.18247 0 0 0.297219 -0.329845 0 -0.945124 -0.149513 0 0 0 -0.572613 2.59907 0 0 0 0 -0.150985 0 0 -0.28974 -0.634334 -0.0523087 0 -0.508797 0 0 -0.0988683 0.0224108 0 0 0.639086 0.665709 0 0 0.276358 -2.61309 0 0.519826 -0.576013 -2.56933 -0.273084 -1.59781 -0.246532 0 0.370373 -0.497397 0.52355 0.192005 0.36492 -0.143998 0 0 -0.414762 -1.43588 0 -0.0419105 0.894569 0.575875 0 0 0 0 -0.338899 0.281009 0 -1.0365 0.408474 0 0 0 1.8212 0 -1.87284 3.59508 0 -0.0678561 -0.361374 1.65832 0 -0.431246 -0.196 -0.708454 0.418349 0 0 0 0.189112 -0.00799993 0 0 0 0.0073053 -0.070475 0 -0.00229747 0 -0.000744456 -0.041884 0 0 0 0 -0.13743 0 -0.0117423 0 -0.425474 0 0.239656 -0.226855 0 0.000136455 0 0 0.226907 -0.00130242 -0.0764773 0 -0.00929695 0 -0.0036329 -0.0621707 0.0168096 -0.0251183 -0.0160613 0 -4.08379e-05 0 0 0 -0.00046678 0 0 0.00302606 -0.00030065 -0.10302 0.0189514 0 0 0.0234722 0 0.0101254 0 0 -0.0506606 0.000301291 0.32289 0.00919932 0 0 -0.111542 0.120037 -0.0322209 0.152404 0.182387 0 0.0331517 -0.00470823 0.24441 0 0 0 1.00409 0 0.105968 -0.534001 0 0.00888397 -0.0275791 0.109603 0 0.000973697 -0.00374771 0.0172175 -0.273934 0 0.517993 0.189112 0.14461 -0.00799993 -0.347498 0.0295012 0.0729095 -0.198778 1.82425 0.0260667 -0.0198866 -0.117439 0.00459852 0.00639382 -0.015528 0.0781852 -0.00266205 0.111451 -0.943272 0.660491 -0.00671647 -0.127698 -0.103041 -0.138577 0.00633945 -0.0751948 0.931173 0.0258224 4.69041 0.112027 -0.289228 0.347929 -0.00420837 -0.869153 -0.168482 -0.0115487 0.00656566 -0.0354998 0.0343023 -0.522431 0.130416 -0.0113463 1.61717 -1.52846 -0.00372915 0.0237595 -0.217838 0.136472 -0.109957 -0.589124 1.05944 -0.126458 0.0734544 0.906324 -0.0240797 -1.31119 -0.18879 -0.220672 0.345099 -0.163602 -0.944609 0.205061 -0.110152 -1.91 -2.66847 0.0832139 0.100073 0.0307803 0.0822171 0.20662 -0.0170305 -0.00775153 -0.0688704 -0.0895211 0.0242283 -0.37371 1.54437 0.424175 2.0783 -0.253158 -1.2666 3.17393 -0.0246051 -0.343256 0.362575 0.940091 -0.034214 -0.0903145 0.112337 -0.0907077 0.582259 0 +191 0 -1.33222 -0.470107 -0.0362852 -0.250196 0.110661 -0.166675 -0.11444 -0.303708 -0.243709 0.593875 -0.0682754 -0.276942 0.00281029 -0.0599176 0.0385661 -1.84457 -10.4097 -0.0852984 0.0820088 -0.66315 -0.063414 0.0271 -0.00361767 0.0231036 0.197986 -0.367774 -0.0947494 0.309932 -0.262595 -0.176181 -0.0306905 0.32508 0.429683 -0.298892 0.0944386 -0.00560283 -0.288824 4.09548 -0.264465 -0.48783 0.0232894 -1.09508 -0.024767 -0.948965 0.172204 -0.370562 0.121964 0.660179 0.0790012 -0.908917 0.128883 3.86475 -0.13359 0.121399 -0.138648 0.0117965 -0.0735966 -0.0833046 0.079238 -0.0397688 2.44945 0.722085 4.50652 -0.132669 0.415816 0.0376388 1.48574 -0.102048 0.0457694 0.789259 0.495103 0.00751642 0.39212 0.633852 -0.169479 0.985769 -12.8514 -1.95922 -0.195173 -0.832874 1.32145 -3.61543 -0.0599967 0.0955525 -0.525994 -0.0644552 -0.0445966 0.0213769 -0.0603755 0.164566 0.287836 0 0 0 0 0 -0.0362852 -0.250196 0.000610303 0 0 0 0 2.41467e-05 0 -0.0129967 0 0 2.14263e-05 2.00722e-06 -0.00569919 0 -0.00155723 -0.0305985 -0.0560329 0 0 -0.228308 4.99902e-07 0 -0.00594835 -0.764917 0 0 -0.0300275 -0.152962 0 -0.0302709 0 -0.0260635 0 0 -0.00334229 0 0 -0.300906 0.000480744 0.000213057 0 0.0121369 0.0024708 0 0 0.0115121 0 8.38875e-05 0.0279584 7.55891e-05 0 0 -0.000178928 -0.00166709 0 0.000330313 0.0179621 -0.00137544 -0.278706 -0.000453642 0.0337028 0 0.00210042 0.0332437 -0.0364785 0.0100002 -0.00377035 0 0 0 0.477321 -0.00796486 0.0989478 -0.000557756 -0.000466337 0.132835 -3.00123e-05 -2.73433e-05 2.92469e-06 0.0222794 0 0 0 0 0 0 0.110661 0 -0.166675 0 0 0 0 0.301421 -0.560762 0 0 0.578501 0 0.0691441 0 -0.00491878 0 0 -0.0520228 0 0.471721 0.0686377 0.163473 0.00946582 0 0 -0.0877361 0 -8.66024 0 5.62116 -0.654899 0 0.575708 1.41081 0.0224019 0 0.0226591 0 0 -0.0540183 0 -2.38888 -0.265287 0 0 -0.00565272 0 0 0.109624 5.52493 -0.21303 0 -1.98572 0 0.509862 0.299564 -0.0426797 0.871621 0.143633 0.0131886 1.09369 0.092222 1.1145 -1.14114 0.0130408 0 0 0 -0.237919 0.018766 0 0 0 0 0.282346 -38.4671 -5.93999 -2.03407 -2.13538 1.07481 -2.15755 -0.239474 0.0911499 -0.199536 -0.221862 0 0 0 0 0 0 +192 0 0.296096 0.176919 -0.0122078 -0.0757353 0.274133 -0.106133 1.00763 -0.745752 -0.0738079 0.791354 0.0749249 -0.204693 0.000916796 0.183891 0.0151249 1.35063 7.88646 0.00860157 0.0337094 -0.403892 -0.00487473 0.131729 -0.00115843 0.120029 0.124254 0.163291 -0.00463117 0.592846 0.912972 -0.190742 -0.00965613 0.0870983 -0.0991592 -0.202712 0.39161 0.00431526 0.156184 -1.76717 0.173239 -0.499071 0.00792699 -0.012747 0.0128543 0.831207 0.0627498 -0.516648 0.738543 0.21575 -0.0157334 0.944043 -0.00631936 -2.46806 -0.0780754 0.0537429 -0.00803132 -0.325592 0.289655 0.149762 -0.166687 -0.0138721 -1.42944 -1.40527 -1.40613 0.128802 -0.000530199 -1.04884 0.0631834 0.190636 0.0129785 -0.770895 0.00794109 0.0782237 -0.100151 -1.70745 -0.455999 0.0939349 0.46524 -2.8409 2.13063 -0.885375 -0.146149 -0.0923987 -0.274996 0.262315 -1.15302 1.03439 -0.0162507 -0.0271214 -0.152609 -0.163168 -1.00073 0 0 0 0 0 -0.0122078 -0.0757353 0.000518319 0 0 0 0 2.07444e-05 0 0.00245318 0 0 -0.000128972 -2.41422e-05 0.00202565 0 8.50394e-05 -0.0153722 0.0246271 0 0 -0.0714465 -1.39883e-06 0 -0.00211767 -0.517122 0 0 -0.0013398 -0.100206 0 0.000101236 0 -0.00985884 0 0 -0.000583125 0 0 0.0682388 0.000414856 -0.00226037 0 0.0104405 0.00686479 0 0 0.0107464 0 -0.00013748 0.0847241 -0.000493689 0 0 0.000297435 -0.00158038 0 0.000524374 0.0193762 0.000375381 0.504365 -0.0010033 0.00574433 0 0.00246424 0.0142181 0.120586 -0.00181009 0.0138058 0 0 0 0.0286538 0.019974 -0.00996208 0.000845192 0.000836798 -0.0225933 0.000101894 8.93507e-05 0.00018815 -0.0118643 0 0 0 0 0 0 0.274133 0 -0.106133 0 0 0 0 -0.319091 -0.568122 0 0 0.252346 0 0.0478091 0 -0.00932868 0 0 0.378735 0 -0.243152 -0.161631 -0.0915192 0.041289 0 0 -0.183717 0 6.30884 0 -3.12526 -0.0101076 0 -1.29216 -1.27962 0.000251823 0 -0.0556246 0 0 -0.0394888 0 1.15715 1.40648 0 0 0.144596 0 0 -0.236731 -3.033 0.486886 0 -0.30058 0 0.219075 -0.0103079 -0.154954 -0.644498 0.180041 0.121375 -0.863048 -0.135503 1.41761 4.18356 -0.123986 0 0 0 0.256147 -0.0839755 0 0 0 0 -0.0364803 6.54373 -2.45405 7.57933 -0.543483 0.665145 0.938034 -0.198442 0.206604 -0.215764 0.569602 0 0 0 0 0 0 +193 0 0.35231 0.408142 -0.0173264 0.0302562 -0.0463109 0.190538 -0.887063 -2.07444 -0.182993 0.804115 -0.221243 0.166222 0.00197239 0.131593 0.022423 0.868712 -0.19244 0.131159 0.0679998 0.0797514 -0.00379677 -0.417754 -0.00258321 0.223816 -0.541294 0.554676 -0.041635 -0.374426 0.0848504 0.0817692 -0.0231489 0.173498 -0.687492 -0.00269798 -0.335703 -0.0127188 -0.334309 -3.16095 -0.366987 0.636303 0.0182752 -1.58079 -0.0249962 1.07721 0.148131 0.483754 -0.103506 0.579009 0.0317554 -0.255163 0.195822 -2.91571 -0.10985 0.155066 -0.0735341 -0.971472 0.284176 0.427624 -0.184652 -0.0482445 -0.509303 -2.39342 -1.81724 -0.766104 -0.159394 -0.594848 0.166637 -0.136436 0.0495777 -0.388139 0.33595 0.0864001 0.126261 -0.853948 -0.236065 0.369172 11.7511 -1.38802 8.16524 -0.0930578 1.04805 1.21355 -0.696031 0.555227 -0.958237 1.8671 -0.0383624 0.0364512 -0.0921722 0.194791 -0.0930066 0 0 0 0 0 -0.0173264 0.0302562 -0.00192527 0 0 0 0 -7.41643e-05 0 0.00542093 0 0 -0.000436633 -0.000130848 0.00290146 0 -5.34023e-06 -0.0152307 0.0541455 0 0 0.214004 -8.17647e-06 0 -0.0131961 0.101673 0 0 0.0281384 -0.0420161 0 -0.0950682 0 0.00523646 0 0 0.00108264 0 0 -0.432801 -0.00147788 -0.00763485 0 -0.0382661 -0.00624022 0 0 -0.0800134 0 -0.000480918 -0.174986 -0.00147092 0 0 0.000742482 0.00512684 0 0.000482041 0.0640196 0.00652766 0.326895 0.0038801 0.0333168 0 -0.013397 0.0205934 0.224715 -0.0356444 0.111491 0 0 0 1.37799 0.062889 -0.0293168 0.00357035 0.00294951 0.131262 0.000279303 0.000241661 0.000701178 -0.0165475 0 0 0 0 0 0 -0.0463109 0 0.190538 0 0 0 0 -0.220507 -1.21847 0 0 0.42966 0 0.0674472 0 -0.0411052 0 0 0.818298 0 -0.809133 -0.0694495 0.226663 0.113619 0 0 -0.503778 0 0.764267 0 -2.18088 0.110896 0 -0.510968 -1.0388 0.029449 0 -0.0174929 0 0 -0.108837 0 -0.0198401 2.15478 0 0 0.28475 0 0 -0.496051 -0.937639 0.0363598 0 -3.15037 0 0.0546943 0.115677 -0.104232 0.112968 0.236684 0.258031 -0.238245 -0.0936825 1.73619 -3.5256 -0.0894957 0 0 0 0.0551087 0.00694353 0 0 0 0 0.230185 2.13186 -4.97458 6.80689 -0.601342 0.268285 0.984369 -0.248827 0.0936238 -0.155815 0.280346 0 0 0 0 0 0 +194 0 -1.2055 -0.218478 -0.0303658 -0.154709 -0.0815827 -0.0883971 -0.566669 -0.755305 -0.380763 0.634626 -0.334354 0.0634369 0.00290291 0.578229 -0.0810428 0.915873 0.844922 0.168433 -0.117095 5.02211 0.0208938 0.0927427 -0.00513528 0.135796 -0.0333192 0.363939 0.0448503 0.316012 0.0494039 0.063848 -0.0431279 -0.684079 0.634787 0.109895 0.000271275 -0.0448606 0.131951 2.79274 -0.478855 1.98476 0.0149768 -0.407406 -0.0721481 0.862304 0.0140829 0.613715 0.326697 -0.956459 0.231641 -0.000491803 0.187972 -6.9331 0.294634 -0.183648 -0.129117 -1.60527 -0.0767435 0.178777 0.02217 -0.0179258 -0.0253282 -4.47252 0.784003 -1.74557 -0.747128 0.265404 0.389923 0.495954 0.117988 0.770641 -0.294048 -0.822292 0.308842 -1.75175 0.219631 0.0480387 -14.3375 -2.07502 -1.27683 -0.330235 0.730384 -2.32873 -0.292168 0.423028 -0.5242 1.0692 -0.00974452 0.171779 -0.0374125 0.712373 -0.14257 0 0 0 0 0 -0.0303658 -0.154709 -0.000487106 0 0 0 0 0.000304065 0 -0.0192214 0 0 1.86288e-05 -0.0001737 -0.00473811 0 -0.00142889 -0.0131399 -0.0561909 0 0 -0.260722 -4.14705e-06 0 0.00837048 -0.253859 0 0 -0.0274455 -0.0341628 0 0.0488129 0 -0.034408 0 0 -0.0030802 0 0 -0.158076 0.00638422 0.000772804 0 -0.000311617 -0.0304288 0 0 0.082496 0 -0.00417123 0.155411 0.00437874 0 0 -0.00134994 -0.000809425 0 0.0135214 0.074548 -0.00215657 -0.846721 -0.0129695 0.00193643 0 -0.0232458 0.0098877 -0.230901 0.0454647 -0.00217617 0 0 0 -1.1825 -0.128719 -0.00869447 0.00896943 -0.0205123 -0.00574319 -0.000190289 -8.26713e-05 -0.00363457 0.0373453 0 0 0 0 0 0 -0.0815827 0 -0.0883971 0 0 0 0 0.0809637 -0.214234 0 0 0.780067 0 0.0818658 0 0.0160797 0 0 -0.1239 0 0.512776 0.0775353 0.415264 0.0283106 0 0 0.0254096 0 -0.778635 0 6.58604 0.0849141 0 0.315864 2.09558 0.0409758 0 0.0302157 0 0 0.00265904 0 0.193989 -0.266073 0 0 0.0512535 0 0 -0.492195 3.46563 0.00992412 0 -1.81135 0 0.652051 0.381992 -0.0998859 0.770358 0.181895 0.0571619 0.838705 0.0687672 1.21141 2.55561 -0.0142302 0 0 0 0.137748 0.0719183 0 0 0 0 0.0422521 -45.3131 -8.11124 -1.14586 -2.54357 1.13007 -2.35518 -0.353329 0.109745 -0.236195 -0.142554 0 0 0 0 0 0 +195 0 0.220527 0.150908 -0.00611383 -0.0403884 0.448996 0.022816 -0.469766 -2.43553 -0.0390357 0.411374 -0.180283 -0.693541 0.0009526 -2.63022 -0.041916 0.475663 2.8988 0.124649 -0.0515567 -0.903655 -0.00350195 -0.192378 -0.00216759 -0.057317 -0.322293 0.127995 0.00689256 0.367129 2.06161 -0.493291 -0.012942 -0.330142 -0.422094 0.205807 -0.0103653 -0.0238974 -0.0229324 -1.26772 -0.131195 -0.372625 0.00494019 0.497984 -0.0218101 -3.25009 0.00282092 -0.232059 0.995403 -0.441803 0.09743 -1.25666 0.164022 1.78447 0.103779 -0.0607336 0.34671 3.00692 0.387312 0.0731396 0.00921149 -0.00212234 -0.599546 0.741839 -0.745164 1.22967 0.133196 0.354104 -0.21542 0.287277 0.0172864 -0.756833 -0.330461 0.0117114 0.0635267 2.08153 -0.408837 -0.0564468 1.62856 -2.57829 8.69591 -1.3278 2.03467 -2.4301 -0.0350041 0.548041 -1.92648 3.08766 -0.00195191 0.0466133 -0.717329 1.08369 -5.94941 0 0 0 0 0 -0.00611383 -0.0403884 0.00216367 0 0 0 0 0.000398717 0 -0.0141009 0 0 -0.000746316 -0.00151702 -0.00795085 0 -0.00109509 0.000575267 -0.107675 0 0 0.179026 -9.84644e-05 0 0.016766 -0.0215078 0 0 0.0256272 -0.0311265 0 0.103601 0 0.0090786 0 0 0.0017621 0 0 0.336155 0.00789228 -0.00883059 0 0.0416458 0.000360481 0 0 0.162916 0 -0.000897606 0.0668896 0.0035823 0 0 0.00196891 -0.00709336 0 0.00119043 0.0124573 0.0107156 0.306411 -0.015707 -0.0341896 0 0.00745072 -0.0329509 0.140494 -0.0358168 0.0571414 0 0 0 -0.159116 0.0787929 0.406568 -0.00096344 0.021525 -0.193025 0.000614055 0.00126331 -0.0112682 0.0857122 0 0 0 0 0 0 0.448996 0 0.022816 0 0 0 0 -0.469423 -0.749911 0 0 0.332313 0 0.039258 0 -0.0372405 0 0 0.975106 0 -0.329187 -0.107944 0.0640442 0.102623 0 0 -0.467631 0 3.57207 0 -0.76407 -0.243858 0 -1.42828 -0.480571 0.00458103 0 -0.0232297 0 0 -0.0507098 0 0.146676 2.37012 0 0 0.233149 0 0 -0.421198 -1.35261 0.228273 0 -1.81131 0 0.621594 0.0396365 -0.153494 -0.415875 0.193929 -0.141807 -0.501174 -0.192707 0.930346 -3.72678 -0.231464 0 0 0 0.185841 0.0177696 0 0 0 0 -0.0111686 -11.9935 -4.79986 8.21176 -1.28518 0.892347 0.0432341 -0.200842 0.142667 -0.183194 0.55058 0 0 0 0 0 0 +196 0 1.52511 -0.0786125 0.0666015 0.388583 -0.352006 -0.278916 0.851549 2.76284 0.342403 -1.54707 0.220189 0.212456 -0.0113356 0.112848 -0.00721736 -0.543839 1.84986 -0.151351 -0.0433198 -0.946821 0.0162884 0.456581 0.0110986 -0.219629 0.825458 -0.5344 -0.0358259 0.551708 0.139039 -0.0408751 0.0684705 -0.201546 0.268429 -0.131737 0.448133 0.0336081 -0.127653 -2.09724 0.667696 -1.20116 -0.0898748 0.00357085 0.092026 1.05105 -0.66902 -0.969275 0.484782 -0.367436 -0.229489 -0.0850896 -0.53593 -3.76888 0.0725171 0.105503 -0.0393857 -3.06793 0.0527401 0.218841 0.632601 0.242526 -0.488874 0.775564 1.91207 -2.66148 -0.598875 0.124778 2.07899 0.351654 -0.116136 1.66927 0.152255 -0.109289 -0.209332 -1.42859 -0.473227 -0.142682 8.12283 3.33981 -4.17334 2.96469 -2.85662 2.09194 1.35403 -1.34499 1.86432 -3.87143 0.462923 -0.521244 0.917226 -0.9031 -0.40124 0 0 0 0 0 0.0666015 0.388583 -0.00330488 0 0 0 0 -0.000813759 0 -0.0025053 0 0 -0.00270608 -0.00443291 0.00718071 0 0.000292807 0.0368387 0.0597709 0 0 0.127068 -0.000250153 0 -0.0256279 0.393113 0 0 0.01145 0.114295 0 -0.168022 0 0.0406842 0 0 0.00332669 0 0 -1.13354 -0.0160749 -0.0505443 0 -0.0596183 0.0185698 0 0 -0.16829 0 -0.00048074 0.205584 -0.00670286 0 0 0.00426208 0.00926516 0 0.00339922 0.117907 0.0184295 -0.142206 0.046076 0.00325576 0 -0.0432586 0.0215455 0.26978 -0.0957414 -0.0341109 0 0 0 6.48904 0.432589 0.0463717 0.0392872 -0.00269305 0.268697 0.00182999 0.000607301 0.013752 -0.050684 0 0 0 0 0 0 -0.352006 0 -0.278916 0 0 0 0 0.0916251 0.524925 0 0 -0.552469 0 -0.0643026 0 -0.0152782 0 0 -0.252653 0 0.629831 0.0266948 -0.104606 -0.0377508 0 0 -0.109857 0 -0.732802 0 -1.65569 -0.610442 0 0.448003 0.311659 -0.0147494 0 0.00740532 0 0 0.0326947 0 -1.47675 -0.485939 0 0 -0.0689207 0 0 0.430888 -3.00494 -0.0445727 0 0.5898 0 -0.303843 -0.0667995 0.0139367 0.066652 -0.0895887 -0.544099 -0.223444 0.0631512 -0.41774 -2.85397 0.0203292 0 0 0 -0.130123 0.0313378 0 0 0 0 -0.0813242 18.9888 3.00337 -0.603121 1.17727 -0.730199 0.980909 0.335076 -0.246595 0.27276 -0.204782 0 0 0 0 0 0 +197 0 0 0 0 0 0.198149 -0.196371 0.109115 0.314999 0 0 -0.106279 -0.432449 0 -0.223568 -0.00340693 0 0 0 0.022026 1.39 0 0 0 0 0.293101 0 0 0.537852 0.681699 -0.340191 0 -0.0492196 0 0 0.165137 -0.0105982 0 0 -0.394436 0.159502 0 0 -0.0245836 -0.019307 0 -0.295198 0.529836 0.106768 0.0235265 -0.433817 0.0839404 0 -0.0713185 -0.110561 0.354173 1.77163 0.188454 0.233592 0 0 -1.15525 -2.50785 0 -0.0249772 0.141253 -0.39901 0 0 0 0 0.0535082 -0.111293 0 0.234209 -0.231736 0 0 0 -2.08528 0 0.25204 -2.13342 0 -0.00584356 -0.763215 -0.322291 0 0.134268 -1.18874 3.01136 -6.20631 0 0 0 0.00502656 2.85033e-05 0 0 0 9.76286e-05 0.000850195 0 1.04059e-06 0 8.35376e-06 7.06485e-06 0 0 0 0 0.000259493 0 1.49226e-06 0 0.00134674 0 0.00192236 -0.00231377 0 -2.37233e-06 0 0 -0.0027762 0.000103035 -1.25142e-05 0 4.89978e-06 0 5.96555e-05 0.00136562 -0.000208094 0.00146843 7.56019e-06 0 5.86158e-07 0 0 0 3.43803e-07 0 0 -0.000271102 9.41781e-05 -0.00108306 0.000679245 0 0 0.000103703 0 -0.000102757 0 0 -0.000136189 0.000373733 -0.0010792 0.000580197 0 0 -0.00147314 -0.000702583 1.99834e-05 -0.000112888 -5.33681e-05 0 0.00113681 0.000163169 0.00725662 0 0 0 -0.00107713 0 -0.00117445 0.00222041 0 0.000145777 -0.000275606 0.000241687 0 -0.000130036 0.000245846 -0.00046279 0.000680622 0 0.198149 0.00502656 -0.196371 2.85033e-05 0.358014 0.0158745 4.37702e-05 0.566127 -0.00846677 -1.59209e-07 -0.0372613 -0.00743502 -7.15405e-10 -4.62505e-05 2.05537e-07 -2.35551e-05 -0.0260915 -3.39043e-05 1.09261 -0.131188 0.278101 0.0340758 -0.00198808 0.0975424 -0.145375 0.00436817 -0.00473787 0.0188844 4.05796 -0.241025 2.21615 -0.528698 9.23584e-10 0.400091 1.04672 -1.38918e-05 -0.00750133 0.103659 -0.066133 0.002214 -4.19181e-05 -0.00359125 0.626107 1.27479 -0.00584484 -0.0310636 0.0885851 0.0263662 -0.0475297 -0.0549317 -2.36187 -0.577957 0.0243634 -0.30542 -6.83328e-08 -1.04297 -1.70041e-05 0.260563 0.00140492 0.038416 -0.309858 -0.00240372 0.216482 0.000475318 -2.04817 -0.216651 0.228253 -0.139292 -0.0171849 0.165572 2.08956e-05 0.056491 6.26281e-08 -0.0280233 0.141911 1.43711e-05 -15.3463 0.017559 -3.29838 0.000102836 1.12819 -3.16062 1.74025e-07 0.3654 -0.786478 0.527412 4.45278e-10 0.194444 -0.368388 0.514634 -0.112465 0 +198 0 0 0 0 0 0.863646 0.214489 -0.317375 -2.92 0 0 0.0237704 -0.273535 0 -0.402519 -0.000745614 0 0 0 -0.00137105 3.54097 0 0 0 0 -0.441744 0 0 -0.110812 -4.17463 -0.197512 0 -0.0452195 0 0 -0.0500473 0.00511866 0 0 0.149885 -0.324937 0 0 0.0487898 0.507481 0 -0.44445 -0.604874 -0.19938 -0.0483775 1.0625 -0.0299765 0 0.0251385 0.0884341 -0.418036 -0.69198 -0.109591 0.0577045 0 0 0.784395 -1.3886 0 -1.17707 -0.550454 -0.699629 0 0 0 0 -0.132112 -0.0541334 0 -2.31373 0.571145 0 0 0 5.39625 0 -0.0201425 4.67321 0 -0.174614 0.534193 4.74523 0 -0.311817 0.933309 -1.49525 9.26336 0 0 0 0.0137308 7.78611e-05 0 0 0 0.000319357 0.00222469 0 3.22095e-06 0 2.26948e-05 1.70195e-05 0 0 0 0 0.000818624 0 4.48483e-06 0 0.00306634 0 0.00623001 -0.00556901 0 -6.92715e-06 0 0 -0.0074317 0.000279104 -3.13882e-05 0 1.30208e-05 0 0.000156099 0.00341103 -0.000628187 0.00397771 1.94634e-05 0 1.59243e-06 0 0 0 9.13626e-07 0 0 -0.000734367 0.000246434 -0.00309915 0.00184813 0 0 0.00020259 0 -0.000268881 0 0 -6.22996e-05 0.000918132 -0.00266063 0.00151795 0 0 -0.00398187 -0.00210267 -1.17303e-05 -0.000120269 -0.000176981 0 0.00325164 0.000507636 0.0170546 0 0 0 -0.00245246 0 -0.00318138 0.00594388 0 0.000394885 -0.000737778 0.000713027 0 -0.000352245 0.000658113 -0.0012446 0.00182198 0 0.863646 0.0137308 0.214489 7.78611e-05 0.780779 0.20458 0.000119565 -0.707899 -0.0170309 -4.34903e-07 0.00457654 -0.0246526 -1.95424e-09 -0.0001425 5.61457e-07 -5.10892e-05 -0.00133392 -9.26147e-05 0.552475 1.7117 -0.00811931 -0.349794 -0.00844826 0.100231 -0.0212153 -0.348445 -0.00938005 0.0222154 4.49758 0.100137 1.38023 0.487694 2.52291e-09 -2.04384 -0.0497065 -4.9176e-05 0.00249805 -0.0839906 0.0228475 -1.96512 -9.18166e-05 -0.0574448 1.79552 1.75427 0.000716761 0.0135046 0.234241 0.185028 -0.0605528 0.353655 1.96116 -0.06949 -0.021332 -0.347714 -1.86661e-07 -0.111487 -3.89405e-05 -0.208858 0.00998225 0.155511 -0.429936 -0.000814094 0.0867404 -0.00284402 -2.25303 -0.270664 0.378641 0.0367629 0.540667 -0.000210401 6.24275e-05 -0.0156478 1.71078e-07 0.0503042 -0.211947 3.29107e-05 -9.55776 0.0802594 5.4185 0.000311603 -0.31675 5.28424 5.03892e-07 -0.012446 0.0952319 2.51046 1.21635e-09 -0.109154 0.418388 -0.69973 2.93797 0 +199 0 0 0 0 0 0.00326268 -0.317154 0.938009 1.24101 0 0 -0.0381803 -1.63722 0 -2.30709 0.00381749 0 0 0 0.041726 -1.37531 0 0 0 0 0.244941 0 0 0.611515 -0.271868 -0.927275 0 0.101302 0 0 0.266365 -0.00997313 0 0 -0.36735 -1.56866 0 0 -0.133171 -3.6963 0 -1.22905 0.593381 0.555365 0.202835 -0.837405 0.0793742 0 -0.0651715 -0.0295648 0.0131923 2.5719 -0.0328153 -0.0325246 0 0 -2.28696 3.2767 0 0.853184 0.149267 -1.67641 0 0 0 0 0.0511664 -0.301704 0 3.12802 -0.815118 0 0 0 -2.82063 0 0.583752 -0.735062 0 0.6677 -0.709703 -2.3586 0 0.820424 -1.36775 2.4295 -4.64258 0 0 0 -0.0194044 -0.000110033 0 0 0 -0.000331452 -0.00359564 0 -3.69056e-06 0 -3.26488e-05 -2.22785e-05 0 0 0 0 -0.000988614 0 -5.71183e-06 0 -0.00385674 0 -0.00658175 0.00758173 0 1.00183e-05 0 0 0.0109481 -0.000405298 4.32847e-05 0 -2.00818e-05 0 -0.000252295 -0.00492773 0.000919332 -0.00577621 -2.79048e-05 0 -2.29086e-06 0 0 0 -1.40908e-06 0 0 0.00106641 -0.000398298 0.00448913 -0.00266933 0 0 -0.000262601 0 0.000434578 0 0 -0.000172226 -0.0012383 0.00355101 -0.00214926 0 0 0.00580606 0.0030787 1.26964e-05 0.000122594 0.000319395 0 -0.00467939 -0.000738734 -0.0234132 0 0 0 0.00308462 0 0.00461981 -0.00875628 0 -0.00057343 0.00108686 -0.00113136 0 0.000511511 -0.000969505 0.00182324 -0.00268407 0 0.00326268 -0.0194044 -0.317154 -0.000110033 0.367002 0.0530283 -0.00016897 0.151163 0.0296565 6.14605e-07 0.0240576 0.0349333 2.76173e-09 0.000201732 -7.93452e-07 8.13821e-05 0.0330182 0.000130883 -0.287836 0.0672214 -0.333648 0.0827217 0.0113149 -0.0898508 0.294541 -0.0596393 0.0157236 0.00418647 0.0031709 -0.125114 -0.522059 -1.24177 -3.56538e-09 0.880835 -0.761336 6.71728e-05 -0.00584282 0.0238701 -0.042652 -0.31833 0.000150551 -0.0116513 -1.27331 -0.0270394 0.00210703 -0.0212461 -0.118687 0.0117779 0.0235465 0.398819 -0.872434 -1.53372 -0.0357396 -2.26393 2.6379e-07 -2.17085 6.19128e-05 0.169888 -0.0134232 -0.280248 -0.516131 0.00640049 -0.0489828 0.0120473 -6.83003 -0.0160049 0.364645 0.00818787 -0.0978085 0.0363463 -8.83387e-05 0.0209083 -2.41768e-07 -0.050787 -0.0132787 -5.23259e-05 3.61512 -0.119024 -3.39425 -0.000449738 0.0765579 1.73282 -7.12721e-07 0.188115 -0.235146 0.31217 -1.71894e-09 0.179185 -0.23785 0.303197 0.360391 0 +200 0 -0.0825556 -0.232015 0.00051196 0.010388 0.185325 -0.00490765 -0.0327161 0.561817 0.00297759 -0.337823 0.0251537 -0.122713 -6.53467e-07 -0.540332 0.000928775 -0.30609 -0.582548 -0.0678349 0.00154984 -1.31282 -0.00715739 0.20538 9.07519e-07 -0.0216886 0.102111 -0.210554 0.000935705 -0.228322 -0.553384 -0.0238753 5.30654e-05 0.0490038 0.687925 0.0146274 0.0022399 0.000560675 0.0118658 2.57798 0.0505644 -0.582558 -3.4479e-05 0.17312 0.00118208 -1.29587 -0.00159017 -0.196358 -0.391681 0.0738196 -0.00189561 -1.54807 0.0506933 2.15521 -0.00174599 0.000927144 -0.0272579 0.525517 0.114232 -0.0493654 0.00689119 4.17376e-05 1.41285 2.31848 -0.239792 -0.896469 0.333275 0.9989 0.157658 -0.11393 -5.71642e-05 0.108944 -0.0495219 0.0711595 -0.0660512 1.2438 0.514622 0.399742 -13.2455 -0.331072 -4.50939 -0.226421 -0.345873 -1.79081 0.12173 -0.359317 0.769891 0.00604296 3.10367e-06 -0.000111645 0.00436278 -0.143237 2.66065 0 0 0 0 0 0.00051196 0.010388 0.00016874 0 0 0 0 1.94422e-06 0 -0.00114779 0 0 0.000452398 0.00014505 -0.000202882 0 -2.332e-05 0.000235826 -0.011501 0 0 -0.0178171 1.0548e-05 0 -3.13898e-05 -0.0119163 0 0 -0.00273782 0.00421421 0 -0.0103395 0 -0.000174037 0 0 -4.16758e-05 0 0 -0.00253854 3.06623e-05 0.00618512 0 0.00313552 0.00651876 0 0 -0.0107199 0 0.000325439 -0.0344018 -0.000109992 0 0 -0.00092732 -0.000275046 0 0.00153184 0.00137378 0.00243103 -0.101988 0.00720668 -0.00260021 0 0.00112008 0.00410524 -0.00037451 -0.00202319 -0.0128016 0 0 0 0.180162 0.00674827 0.0294694 -0.00281161 0.00450463 0.0350327 -0.000599892 0.00114163 -0.00234365 0.00667603 0 0 0 0 0 0 0.185325 0 -0.00490765 0 0 0 0 0.138178 -0.17789 0 0 -0.244052 0 -0.032166 0 -0.00940283 0 0 -0.824785 0 0.394806 0.0267479 -0.102023 -0.117606 0 0 -0.066039 0 -5.04158 0 1.03547 0.10474 0 0.216831 0.75228 -0.0115658 0 0.0114452 0 0 -0.0317341 0 -0.85008 -1.89424 0 0 -0.26999 0 0 0.323884 -0.787538 0.00656871 0 0.969263 0 0.246233 -0.170831 0.113053 0.151311 0.0499077 -0.123339 0.0599207 -0.026238 0.662148 4.47055 0.0598861 0 0 0 0.00235213 0.0406534 0 0 0 0 0.0362114 -4.91255 1.73372 -2.85123 0.409459 -0.464672 -0.0959866 0.147635 -0.151645 0.192433 -0.134743 0 0 0 0 0 0 +201 0 1.96749 0.674078 -0.000955242 -0.040232 0.39993 0.329443 -0.79411 -2.42144 -0.00428079 0.033338 -0.00870094 0.109545 1.12434e-06 0.0427305 -0.000513662 1.37348 4.08195 -0.0110545 -0.00131928 0.613105 -0.000690599 -0.310877 -1.44597e-06 0.00661085 -0.58768 0.735177 4.98521e-05 -0.495823 -1.27576 0.129687 -8.06429e-05 -0.0129592 -1.04128 -0.019991 -0.301144 -0.000391512 0.0289944 -5.08952 -0.0389447 0.999832 6.34742e-05 -0.117247 -0.0011836 0.66903 0.00337163 0.835197 -0.839999 -0.0469903 0.00208642 1.21467 0.0446719 -3.03794 0.0015078 -0.00135882 0.0455301 -1.31552 0.138995 0.0529366 -0.00917615 -7.45284e-05 -2.26421 -0.441787 -0.507302 2.26086 -0.114965 0.774635 -0.438545 0.0706773 7.82669e-05 0.0163759 -0.208408 0.0118872 -0.0207289 0.593573 1.09003 -0.139883 26.1479 1.32771 12.5265 0.83603 -0.430199 12.2172 -0.0296985 0.189363 -0.376488 7.78577 -6.5807e-06 0.0001701 -0.00686033 0.0436402 6.13383 0 0 0 0 0 -0.000955242 -0.040232 0.000107479 0 0 0 0 7.7797e-07 0 0.00132523 0 0 -0.000666166 -0.000221979 0.000248432 0 3.24616e-05 -0.000370818 0.0100234 0 0 0.00703216 -1.61147e-05 0 -0.000132391 0.0273718 0 0 0.0021883 -0.00791263 0 -0.00368013 0 0.000172981 0 0 5.35274e-05 0 0 -0.0706701 1.03111e-05 -0.00919207 0 0.00139498 -0.0124943 0 0 0.0256045 0 0.000222147 0.0296628 -0.00166091 0 0 0.00136342 -0.000187749 0 -0.00307277 0.00277712 -0.00409705 -0.0118218 -0.0123885 0.00587795 0 -0.00168407 0.00476674 0.00901106 -0.00719365 0.0194019 0 0 0 0.27371 0.00521055 0.00939827 0.00702214 -0.0133171 0.0249077 0.000876488 -0.00167217 0.0036507 -0.00429463 0 0 0 0 0 0 0.39993 0 0.329443 0 0 0 0 0.0259372 -0.0100612 0 0 0.0798451 0 0.00951435 0 0.00192736 0 0 0.16569 0 -0.92162 -0.133742 0.00133072 0.0147458 0 0 0.0114792 0 3.61313 0 -6.84124 0.137401 0 -0.983286 -1.96494 0.00109885 0 -0.00238711 0 0 0.000858544 0 0.30331 1.42947 0 0 0.165997 0 0 -0.0187832 -4.95608 -0.05208 0 -0.557228 0 -0.999299 0.0935134 -0.158579 0.0465983 0.131209 -0.993072 -0.718187 0.0130554 -0.195923 -1.92914 -0.201049 0 0 0 -0.0132725 -0.00927423 0 0 0 0 -0.0811877 45.6238 1.44796 7.04133 1.06267 -0.802234 3.19366 -0.078406 0.112038 -0.188638 0.733884 0 0 0 0 0 0 +202 0 0.154267 -0.0198765 -0.00170606 -0.0861703 0.30864 0.196888 -1.575 -2.80103 -0.00677003 -0.33502 -0.0431199 -0.323089 1.94288e-06 -1.12341 -0.00157297 -0.298116 -1.96064 -0.0945513 -0.00330145 -2.84517 -0.0112436 -0.0423609 -2.41267e-06 -0.0897113 -0.505797 0.112057 -0.00198201 -0.75837 -2.4519 0.0181422 -0.000131414 -0.0737784 -0.190701 -0.0203224 -0.345768 -0.00100733 0.0601356 -0.701768 -0.118898 -0.606505 0.000112775 0.261782 -0.00264235 -3.33006 0.00629953 0.118142 -1.45955 -0.164673 0.00433111 -1.12592 -0.163855 1.25891 0.00302514 -0.00386526 0.103983 1.3104 -0.00265112 0.0859681 0.110205 -0.000130809 1.56162 2.11272 0.455273 -1.10003 0.0363201 1.5374 0.167951 0.0919424 0.000120288 0.0546404 -0.00228488 -0.064503 -0.0747805 2.30726 1.13457 -0.205762 10.1818 2.13792 9.87895 1.50039 -0.669953 11.1342 0.52252 -0.433354 0.597481 11.184 -1.22953e-05 0.000362835 -0.0127512 0.189767 11.7887 0 0 0 0 0 -0.00170606 -0.0861703 -0.000198399 0 0 0 0 -5.4677e-06 0 0.00265566 0 0 -0.00134697 -0.000419811 0.000500729 0 6.41066e-05 -0.000555627 0.0194119 0 0 0.0066882 -3.04666e-05 0 -0.000170366 0.0566314 0 0 0.00381236 -0.012148 0 -0.0152883 0 0.000385615 0 0 0.000107081 0 0 -0.150345 -7.12946e-05 -0.0185983 0 -0.0018958 -0.0239115 0 0 0.0447334 0 -0.000426824 0.0271403 -0.00156489 0 0 0.00275649 0.000360732 0 -0.00593862 0.00858024 -0.00818407 -0.163071 -0.019575 0.0115377 0 -0.00420535 0.0123433 0.0150433 -0.0181661 0.0296071 0 0 0 0.791087 0.0332389 0.0315348 0.0111834 -0.022223 0.0948356 0.00177125 -0.0033798 0.00741042 -0.00510067 0 0 0 0 0 0 0.30864 0 0.196888 0 0 0 0 0.448281 0.553098 0 0 0.138092 0 0.0118245 0 0.00854431 0 0 -0.232214 0 0.189293 -0.0242727 -0.0680045 -0.0279455 0 0 0.0662421 0 -0.206652 0 3.56054 0.427309 0 -0.109329 1.29453 -0.00680449 0 0.0554586 0 0 0.0693556 0 -0.0989987 -0.454554 0 0 -0.0526631 0 0 0.0539675 0.457069 0.578526 0 1.06227 0 0.195199 0.17796 -0.211706 -0.255615 0.0358567 0.572773 0.396349 0.0109402 0.0548458 2.06494 0.0487921 0 0 0 0.0743921 -0.0314357 0 0 0 0 -0.105304 -27.7181 -0.602332 -3.76292 0.51283 -0.646152 -1.55363 0.0228885 -0.0112252 -0.111192 0.180558 0 0 0 0 0 0 +203 0 0.149304 -0.0521563 0.0003213 0.00886409 0.193579 0.132345 0.383092 0.589974 0.00161919 -0.573983 0.012865 0.217164 -2.01956e-07 0.210844 -7.02366e-05 -0.322549 -2.19598 -0.134497 -0.000346048 0.110452 -0.0172731 -0.0559542 2.89402e-07 -0.0703842 -0.0195311 0.0329531 -0.00717689 -0.447669 -0.197736 0.225716 2.21757e-05 -0.000272245 0.080533 -0.024682 -0.134939 0.000205829 -0.0256121 -0.240388 0.0111159 0.345825 -1.42965e-05 -0.0415282 0.000203036 0.0937766 -0.000875906 0.472724 -0.306943 -0.0183008 -0.000268368 -0.0499025 -0.142224 4.14223 0.000465918 -0.000264907 0.00488195 0.246809 0.0292106 -0.00358044 0.110497 1.45202e-05 0.398648 0.916437 0.617248 1.24459 0.558937 0.44876 0.0928038 -0.201967 -1.9654e-05 0.255653 -0.0821391 -0.00214642 0.00713456 -0.201996 0.0254977 0.10166 2.35304 0.562851 0.954547 0.132804 -0.455357 2.41463 0.321595 -0.636952 1.38112 -1.07876 6.70333e-07 -7.77254e-06 0.000344402 -0.00420491 0.121336 0 0 0 0 0 0.0003213 0.00886409 0.000304923 0 0 0 0 4.19547e-06 0 -0.00120604 0 0 0.000494184 0.000115854 -0.000119589 0 -1.98068e-05 0.000125776 -0.00916848 0 0 -0.00821485 8.03029e-06 0 -6.86073e-05 -0.0408478 0 0 -0.000733842 0.000998648 0 -0.0101255 0 4.46181e-05 0 0 5.1131e-06 0 0 -0.0185838 6.31975e-05 0.00730403 0 0.0049728 0.00117953 0 0 0.00051382 0 0.000605757 -0.00117488 -0.000549966 0 0 -0.00100065 -0.000511958 0 0.000780209 0.0131465 0.00167066 -0.0968679 0.00239043 -0.000406644 0 -0.000502557 0.00585306 -3.95377e-06 -0.00503819 0.00425751 0 0 0 0.206715 -0.000186999 0.0279718 -3.59982e-06 -0.00125809 0.0310504 -0.000603064 0.000727161 -0.00165846 0.00426365 0 0 0 0 0 0 0.193579 0 0.132345 0 0 0 0 -0.181716 -0.0675843 0 0 -0.202529 0 -0.0333577 0 -0.0148974 0 0 -0.596147 0 -0.487662 -0.0518754 -0.139969 -0.101112 0 0 -0.0959812 0 -5.29535 0 -2.65664 0.0454726 0 -0.310876 -1.31739 -0.0164543 0 -0.0266436 0 0 -0.0201814 0 -1.04952 -1.57137 0 0 -0.247998 0 0 0.630389 3.03354 0.106801 0 1.78999 0 1.1698 -0.191224 0.214903 0.421119 -0.0325777 -0.41119 -0.0190804 -0.013606 -0.0632334 2.14375 -0.00546212 0 0 0 -0.0521866 0.0536979 0 0 0 0 0.00961793 16.2326 1.44774 1.55215 0.438912 -0.438612 1.63212 0.206851 -0.201172 0.214209 0.121944 0 0 0 0 0 0 +204 0 1.28357 0.0539786 0.000535577 0.0282254 0.288698 -0.108477 -0.0202661 -0.790312 0.00204293 0.284131 0.00536271 0.248424 -2.9938e-07 0.0693618 -0.000259832 -0.232956 2.20605 0.0604042 -0.000721176 -2.36017 0.00775227 0.179012 3.871e-07 0.0718581 0.0625819 -0.413272 0.000946755 0.398232 0.8349 0.0288511 2.87622e-05 -0.0160275 -0.211571 -0.0087144 0.295528 0.000133742 -0.0123097 -2.43603 0.00519891 -1.51412 -2.24749e-05 -0.0753208 0.000126171 1.52867 -0.00157053 -0.833995 0.375161 -0.0463939 -0.000177611 0.467443 0.0838031 -1.68749 0.000603528 -0.000606119 0.00668764 -1.67911 0.02953 -0.011095 -0.0835115 2.17494e-05 -1.21178 3.43171 -0.776441 0.660846 -0.133975 0.0733144 -0.641461 0.116844 -2.27212e-05 -0.063994 -0.140065 0.000374176 0.0213414 0.597839 -0.179613 0.0462039 1.57826 -0.716779 0.341427 -0.199217 0.168249 -0.672116 -0.417204 0.45156 -0.613967 0.895239 1.20193e-06 -8.29913e-06 0.000162382 0.0017592 -0.512315 0 0 0 0 0 0.000535577 0.0282254 0.000209555 0 0 0 0 4.00806e-06 0 -0.00165123 0 0 0.000603075 0.000150319 -0.000137242 0 -2.83803e-05 0.00016964 -0.00828085 0 0 0.01097 1.05235e-05 0 5.91177e-05 -0.0254514 0 0 0.00124922 0.0037083 0 -0.000602922 0 0.000213889 0 0 2.31806e-05 0 0 0.000976224 5.82572e-05 0.00864916 0 0.00320354 0.00414709 0 0 -0.009623 0 0.000421657 0.00228079 -0.000106464 0 0 -0.00122776 -0.000356365 0 0.00134815 0.0103028 0.00203856 -0.0338851 0.00259438 -0.00213651 0 0.000108667 0.00139947 -0.00481264 -0.00231914 -0.00112795 0 0 0 0.0623007 -0.0037559 0.0121512 -0.000681556 0.000328523 0.0102622 -0.000756826 0.000877514 -0.00121895 0.00189005 0 0 0 0 0 0 0.288698 0 -0.108477 0 0 0 0 -0.408124 -0.193992 0 0 0.0405496 0 0.0109611 0 -0.00293813 0 0 -0.724514 0 0.36593 -0.148939 0.0201398 -0.114774 0 0 -0.0316196 0 -4.09097 0 -5.01769 -0.599899 0 -1.26912 -0.476937 0.00265449 0 -0.0528287 0 0 -0.0223322 0 -1.86086 -0.869575 0 0 -0.171602 0 0 0.422373 -1.19638 0.931234 0 1.73906 0 1.91751 0.00325962 -0.11887 0.12474 0.0869954 -0.813301 -0.731547 -0.0357386 0.603714 5.85974 -0.086284 0 0 0 -0.0276132 0.0213111 0 0 0 0 0.0605321 38.1002 1.20884 7.64489 0.822106 -1.01139 3.18199 -0.140136 0.120754 -0.090988 0.887003 0 0 0 0 0 0 +205 0 -0.277383 -0.127356 -0.00103065 -0.0730377 0.162087 0.120705 0.0836407 0.148594 -0.00301809 -0.351888 -0.0289721 1.10957 5.24249e-07 2.0719 0.000328714 -0.390393 -0.338909 -0.0583646 0.000978075 0.967444 -0.0120098 0.126801 -6.12263e-07 -0.104617 0.0430978 -0.173608 0.00178706 -0.109462 0.535985 0.725623 -4.39315e-05 0.0131639 0.290091 0.0767248 0.0369774 -0.000370153 0.0521831 1.4912 -0.040924 0.727983 4.13625e-05 0.570663 -0.000426454 3.18674 0.00317607 0.542379 0.0719654 0.0445587 0.000453942 1.12364 -0.14505 1.79513 -0.000664275 0.000843699 -0.00389613 -2.29545 -0.143002 1.48461e-05 0.101996 -3.84375e-05 1.04923 -0.573059 -1.07046 -1.23937 -0.00139912 0.308348 0.245505 -0.0358745 2.97485e-05 0.0578305 0.0307429 -0.00135875 -0.0576798 -2.32388 0.215636 -0.0715283 -6.7347 0.639205 -2.30029 0.633502 -0.824892 -1.28027 0.631892 -0.797396 1.12484 -0.791177 -2.43065e-06 2.84198e-05 -0.00117955 0.0147093 -0.328893 0 0 0 0 0 -0.00103065 -0.0730377 -0.000469477 0 0 0 0 -8.89966e-06 0 0.00263544 0 0 -0.00104442 -0.000258413 0.000215889 0 4.8075e-05 -0.000398703 0.00946447 0 0 -0.035553 -1.82595e-05 0 -0.000301575 8.15646e-05 0 0 -0.00349432 -0.0152529 0 -0.0194589 0 -0.000388447 0 0 -3.95063e-05 0 0 -0.051083 -0.000122425 -0.0145484 0 -0.00587803 -0.0118989 0 0 0.0368781 0 -0.000977192 -0.0169825 0.000212959 0 0 0.00213704 0.000825878 0 -0.00343492 -0.00866831 -0.00349076 -0.118708 -0.0034069 0.00666484 0 -0.00192854 0.00752765 0.0140041 -0.00517662 0.0112342 0 0 0 0.319337 0.0167612 0.0254881 0.00230932 -0.004351 0.0448915 0.00134469 -0.00150362 0.000800289 0.0035492 0 0 0 0 0 0 0.162087 0 0.120705 0 0 0 0 -0.313113 0.349556 0 0 -0.0612207 0 -0.0167589 0 0.000369607 0 0 -0.313889 0 0.190888 -0.0937285 -0.0858691 -0.0199314 0 0 0.000336967 0 -3.26729 0 0.867377 0.211871 0 -0.675192 0.0504422 -0.0118369 0 -0.0374 0 0 0.0448147 0 -0.699375 -0.90359 0 0 -0.0784267 0 0 0.027944 -1.093 0.542284 0 0.687189 0 -0.478665 0.0646497 -0.172189 -0.0238546 -0.195128 0.0952473 0.401849 -0.0125638 0.27782 -0.957463 0.108708 0 0 0 0.0398757 0.00923214 0 0 0 0 -0.0210379 -9.4967 0.0786471 0.812252 0.32796 -0.473302 -0.0248199 0.171339 -0.153955 0.0594392 0.427078 0 0 0 0 0 0 +206 0 0 0 0 0 -0.0341455 0.181505 -0.657881 -0.316647 0 0 -0.0741076 0.335491 0 1.04567 -0.0321324 0 0 0 -0.189145 2.4215 0 0 0 0 -0.13004 0 0 -0.340096 -2.00546 0.339162 0 -0.216865 0 0 -0.187733 -0.01668 0 0 -0.117392 0.48019 0 0 -0.0288265 1.79872 0 0.409702 -0.684332 -0.729611 -0.0114841 -0.661409 -0.12461 0 0.149059 -0.238716 0.135288 0.983225 0.362623 -0.00173258 0 0 -0.61498 -0.3106 0 -1.39723 0.137765 -0.593916 0 0 0 0 -0.083728 -0.160697 0 -0.627033 -0.491219 0 0 0 -0.585446 0 0.803237 -0.852655 0 0.0899283 0.244337 -1.59604 0 0.305194 0.302098 -0.457044 3.53938 0 0 0 -0.0422375 -0.00288129 0 0 0 0.012612 -0.00136925 0 0.000954282 0 -0.000579267 0.00371995 0 0 0 0 0.0203839 0 0.00101796 0 0.0723924 0 0.119877 -0.0149885 0 0.000412049 0 0 0.0367561 -0.000786762 -0.000404404 0 0.00020046 0 -0.000102442 -0.0144414 0.00524889 -0.0110921 -0.000811265 0 -4.08736e-05 0 0 0 1.39279e-05 0 0 0.00207309 -0.000163076 -0.0390679 -0.00521709 0 0 0.00421651 0 0.000177931 0 0 0.00486896 0.00704266 -0.0237898 0.0026292 0 0 -0.0016293 0.0133118 0.00213085 -0.0122176 0.00378678 0 -0.0113258 -0.0057926 0.0291631 0 0 0 -0.0840403 0 0.0131599 -0.0469275 0 -0.00134304 0.00463767 -0.0240417 0 0.00100697 -0.00335595 0.00718176 -0.0166748 0 -0.0341455 -0.0422375 0.181505 -0.00288129 0.441394 0.122743 -0.0151022 0.246777 0.118557 0.000986437 0.00537188 0.126266 5.6508e-05 0.00423177 -0.00101543 0.00738374 -0.00408234 0.0162407 -1.3843 -0.294844 0.439608 0.11776 0.0867352 -0.189405 -0.0490163 0.0169754 0.121066 -0.00826249 -4.36361 0.118655 4.01034 -0.307624 -6.43904e-05 0.787836 1.57186 0.00279696 0.00197912 0.0256805 0.0293774 0.0907331 0.00694905 0.00742469 -1.45425 -2.91531 0.00107761 0.012693 -0.385184 -0.0605905 -0.0774326 -1.54022 1.09475 0.400756 -0.0061981 -1.59236 0.00102066 -0.266744 0.016599 0.00481939 0.141354 0.0569596 0.175033 0.00740335 0.104459 -0.452621 1.85783 -0.0295492 -0.689235 0.0341353 -0.10501 -0.256835 -0.00404121 -0.0446617 -0.00166682 0.0688288 0.00472522 -0.02037 -20.6482 -0.554134 -4.61059 -0.182202 0.874847 -4.06393 -0.00534798 0.0179975 0.0457375 -1.44394 -0.00113709 -0.0968083 0.269504 -0.20909 -0.393109 0 +207 0 0 0 0 0 -0.273459 -0.37723 0.591816 2.02256 0 0 -0.011095 -1.42988 0 -2.45625 0.0161766 0 0 0 0.0773707 -4.37951 0 0 0 0 0.456671 0 0 1.07118 6.54028 -0.851769 0 0.11887 0 0 0.295026 0.0078722 0 0 -0.199147 -1.61907 0 0 -0.0553775 -4.73164 0 -0.993321 2.24394 0.536797 0.128265 -1.60508 0.454225 0 -0.122207 -0.0174421 0.497336 0.681191 -0.25899 0.624401 0 0 -0.639378 1.49836 0 0.523162 0.308058 -0.739777 0 0 0 0 0.310495 0.133786 0 3.38622 -3.27291 0 0 0 -4.46322 0 0.616628 -11.3519 0 0.278762 -1.57194 -8.31022 0 0.355714 -1.69077 2.56931 -24.8467 0 0 0 0.0285095 0.00621571 0 0 0 0.00491821 -0.0328007 0 0.000395801 0 2.35713e-05 -0.00251531 0 0 0 0 0.029722 0 -0.000606259 0 0.0473246 0 0.082539 -0.116744 0 4.54789e-05 0 0 0.0719443 -0.00115181 -0.00467822 0 -0.00215002 0 -0.00230839 0.00628975 0.00407309 -0.0157508 -0.000121188 0 2.58278e-07 0 0 0 -0.00015115 0 0 0.00304708 -0.0036457 -0.0555893 -0.011815 0 0 0.00408352 0 0.00397779 0 0 -0.0105271 0.0147678 0.00233024 -0.00386032 0 0 -0.0770276 -0.0277194 -0.0022276 -0.0371462 0.0261393 0 -0.0451678 0.0134363 0.00713106 0 0 0 -0.188775 0 0.0362227 -0.181714 0 -0.00289615 0.0141458 -0.0781492 0 0.00153095 -0.00708656 0.022503 -0.0719223 0 -0.273459 0.0285095 -0.37723 0.00621571 -0.665363 -0.129977 0.0660202 -0.229417 0.219202 -0.00281557 0.0382471 0.183047 -0.000172962 0.00629081 0.00416378 0.00326355 0.0331716 -0.0380382 1.15939 0.191065 0.00802367 0.368731 0.115277 0.26657 0.259454 0.35667 0.0804927 0.0245524 -1.1087 0.110694 -0.93355 -0.731811 0.000245243 0.563561 -0.199088 0.00576599 0.000858797 0.0636441 0.00563508 1.89615 0.0137423 0.0555679 -1.11838 2.32228 0.00429097 0.0111298 0.605341 0.11748 0.0900699 -0.176181 1.67499 0.610134 -0.023199 1.29546 -0.00820777 1.85691 0.00684443 -0.114463 -0.217032 -0.263995 0.726432 -0.363637 0.0214901 0.306986 11.1271 0.045349 -0.18943 0.000941061 -0.358689 0.393187 -0.00691539 -0.0556691 0.00629865 0.0950828 0.0387372 -0.0212497 4.8066 -0.417904 -2.76431 0.130606 -0.179486 -6.29697 -0.00423522 -0.000816479 -0.62976 -1.99476 0.00266325 -0.100293 -0.101155 0.198219 -3.16714 0 +208 0 0 0 0 0 0.555286 0.11616 -0.184861 -1.49216 0 0 0.0011525 0.972828 0 0.790083 0.00863106 0 0 0 0.00274403 1.71 0 0 0 0 0.0550816 0 0 0.0947096 1.34514 0.221433 0 -0.127728 0 0 0.0754964 0.0373973 0 0 0.170561 0.821871 0 0 0.140439 2.83305 0 0.255973 0.535181 -0.283287 -0.165786 -0.882866 -0.123147 0 0.138145 -0.073387 -0.0456464 0.692355 0.587723 0.219499 0 0 0.417161 -2.40468 0 0.151026 -0.0574885 0.605723 0 0 0 0 -0.26887 -0.200372 0 -2.78575 -0.878343 0 0 0 3.14071 0 -0.642626 -0.299836 0 -0.529634 1.44329 1.08395 0 -1.05353 2.16967 -0.828891 -3.5555 0 0 0 0.216519 0.0142201 0 0 0 0.00928052 -0.0120278 0 0.000522101 0 0.00228385 -0.0114932 0 0 0 0 -0.0911884 0 -0.00488011 0 -0.200481 0 0.128834 0.0465724 0 -0.000863525 0 0 -0.174908 0.00303958 -7.5618e-05 0 -0.00169885 0 -0.000822535 -0.0275501 -0.01298 0.0426755 -0.00143761 0 0.000161531 0 0 0 -0.000118676 0 0 -0.0080136 -0.00129399 0.0385149 0.0192204 0 0 -0.0103622 0 0.00141186 0 0 0.00744186 -0.0162992 0.000798486 -0.0019414 0 0 0.0161853 -0.0202492 -0.00569855 0.042451 0.00540472 0 0.0397661 0.0144162 -0.146534 0 0 0 0.278962 0 -0.0570213 0.253748 0 0.00552759 -0.0237856 0.102554 0 -0.00391102 0.0161451 -0.0354594 0.0926554 0 0.555286 0.216519 0.11616 0.0142201 -0.426509 -0.0878544 0.0702283 -0.400455 0.389787 -0.00477986 -0.0599747 -0.000188616 -0.000272311 0.00230492 0.00475741 0.00372554 -0.0329155 -0.0797665 0.0244786 -0.842378 0.223489 -0.318767 0.133091 -0.0492701 -0.172133 0.116776 0.113845 -0.00806897 5.91036 -0.0024618 1.22955 0.912166 0.000304095 -1.38163 0.746887 0.00894924 0.000673565 -0.0597612 -0.0140919 0.495195 0.0203262 0.0273878 2.76934 -1.15626 -0.00972497 0.0058113 -0.305937 -0.0829108 -0.0434373 0.146538 0.307614 -0.702011 0.106474 0.516889 -0.0042639 -0.144314 0.0356269 -7.11817e-05 0.0219496 0.867853 1.04742 -0.107928 -0.213296 0.68564 9.02226 0.063749 0.0437389 -0.0590742 -0.256902 0.260189 -0.012512 0.00526643 0.00787825 -0.128162 0.10783 0.00655191 -6.33065 -0.069749 3.14778 0.162304 0.0920005 -2.84936 0.00456302 -0.107139 0.211723 0.287506 0.00558487 -0.00470787 0.243127 -0.190304 -0.413905 0 +209 0 0.179351 0.292814 -0.000868534 -0.0140482 0.348679 0.186561 -0.0422905 -0.159193 -0.00239763 -0.176836 0.104025 -0.460943 1.00341e-05 -1.11358 0.0101814 0.742789 0.663419 -0.0109031 0.0162628 -2.8242 -0.0143235 -0.320816 -5.81783e-06 -0.0767728 -0.31355 0.484103 -0.0178327 -0.273314 1.16843 -0.261187 -0.00011925 0.221662 -0.0692588 -0.0371101 -0.216294 0.00502254 -0.138569 1.35094 0.125689 -0.809406 0.000195752 -0.354483 0.00630478 -1.48658 0.00363626 -0.0494971 -0.00740287 0.354728 -0.0129239 0.16346 -0.0880811 3.72452 0.004561 0.0199007 0.0651522 0.0200842 -0.113669 -0.0626333 0.0697692 -1.07499e-05 -0.0451091 1.661 0.871051 1.38422 0.443974 1.15584 0.444617 -0.341009 -0.000429045 -0.100917 -0.0392819 0.267145 0.0952228 0.659498 0.551899 0.42831 -3.45423 0.998444 -1.25164 -0.0454194 0.239455 -3.49079 0.347832 -0.121758 0.314435 -0.3889 -0.000308776 -0.00474601 -0.0542129 0.0306073 -2.95868 0 0 0 0 0 -0.000868534 -0.0140482 -0.000742559 0 0 0 0 -3.07812e-05 0 0.00261736 0 0 -0.00055337 -0.000382599 0.000350437 0 0.000111557 0.00223304 0.00570277 0 0 0.0433556 -2.73434e-05 0 0.00218514 0.0266876 0 0 0.00460406 0.0194275 0 0.0229294 0 0.00124266 0 0 0.000101063 0 0 0.098986 -0.000427239 -0.00776012 0 -0.0103435 0.00237728 0 0 0.00720718 0 -0.001518 -0.0454479 0.00181642 0 0 0.00113025 0.00128295 0 -0.00379802 0.014188 -0.0027792 0.00425206 0.0101882 0.00447414 0 -0.00190838 0.000205973 -0.015739 0.000519862 -0.0124472 0 0 0 -0.286695 0.0241461 -0.0346019 -0.00913551 0.0142589 -0.0261623 0.000713087 -0.00108281 0.00193335 -0.000839639 0 0 0 0 0 0 0.348679 0 0.186561 0 0 0 0 -0.292355 -0.095201 0 0 0.0378534 0 -0.00358148 0 -0.00314841 0 0 0.657066 0 -0.797633 -0.0723931 -0.0392369 0.102793 0 0 -0.00931835 0 0.80154 0 -2.25178 0.254804 0 -0.803002 -1.28296 -0.00662057 0 -0.0302611 0 0 -0.0199867 0 0.565072 1.35042 0 0 0.190764 0 0 0.211492 -0.221059 0.146742 0 -0.714569 0 0.492039 -0.0342857 0.0779875 0.0597777 -0.29795 -0.812748 0.230705 0.00883376 0.164009 -1.95705 0.0062818 0 0 0 0.0912535 0.000460979 0 0 0 0 0.025807 13.1558 0.906293 3.43398 0.140986 -0.134118 1.39777 -0.023901 0.0644652 0.119038 0.372799 0 0 0 0 0 0 +210 0 -0.471088 -0.11406 -0.0057705 -0.0330072 -0.115827 0.131115 0.122475 0.611127 -0.0545727 0.366787 0.0130633 0.23843 0.000206633 1.44658 -0.00832505 0.372419 -0.135832 0.033908 -0.0107521 1.92379 0.00414499 -0.00675219 -0.000280779 0.0723831 -0.0940191 0.252111 0.0288494 -0.614742 -1.98189 0.498613 -0.00409124 -0.125219 0.431399 0.0190109 -0.133377 -0.00235957 0.29148 3.9491 0.0186646 1.53139 0.00303747 0.524665 -0.00349651 0.438326 0.0372687 0.953864 -1.0198 -0.136666 0.0179482 -0.534696 0.231993 -0.0976833 0.0215229 -0.00831192 0.0147873 1.9992 0.493369 0.176054 -0.155202 -0.00663587 -0.319508 -1.95971 -1.898 -2.06277 -0.0995544 -0.686874 0.154063 0.35635 0.00759389 0.283441 0.0791389 -0.135376 -0.377369 -1.05329 0.228937 -0.305283 -23.8974 -3.35672 -6.85462 -3.1106 1.96549 -6.79756 -0.063571 -0.160388 0.0817808 -3.6197 -0.0031647 0.0052596 0.0369614 -0.34547 5.01851 0 0 0 0 0 -0.0057705 -0.0330072 -0.000510373 0 0 0 0 -4.34963e-05 0 0.00483857 0 0 -0.00101625 -0.00173313 0.00558976 0 0.000532792 0.00504864 0.0544231 0 0 -0.097084 -0.00012845 0 0.0155302 -0.312691 0 0 -0.0179633 0.0156752 0 0.0994874 0 -0.00754775 0 0 -0.00129765 0 0 0.328351 -0.00062011 -0.0133961 0 -0.00752866 0.00887829 0 0 -0.179787 0 -0.00103528 -0.242518 0.00316359 0 0 0.00209211 0.000874974 0 0.0130571 -0.0174471 -0.0061233 0.0947399 0.0326481 -0.0178864 0 0.000254308 -0.0112888 0.0457552 -0.011035 -0.10437 0 0 0 -1.78215 0.117414 -0.342493 -0.0326985 0.0743396 -0.177621 0.00140905 -0.00387993 0.0100919 -0.0296241 0 0 0 0 0 0 -0.115827 0 0.131115 0 0 0 0 0.541736 -0.0483978 0 0 0.0423547 0 0.0165556 0 0.00314822 0 0 -0.115609 0 0.138054 0.12324 -0.0816634 -0.0278074 0 0 -0.0250018 0 3.05083 0 2.48014 1.17195 0 1.13302 0.404502 -0.00300275 0 0.0715259 0 0 0.0117253 0 2.1936 -0.465878 0 0 -0.081014 0 0 -0.297443 -0.981625 -0.413721 0 0.0165564 0 -1.14482 0.058657 -0.0263126 -0.25597 0.0632632 0.422554 0.00313787 0.033789 0.366175 0.92394 0.04396 0 0 0 0.0388238 -0.0525269 0 0 0 0 -0.000286707 -22.8354 -1.63587 -5.42463 -0.410039 0.465523 -2.83278 -0.0935647 0.0500498 -0.0459367 -0.869074 0 0 0 0 0 0 +211 0 1.13967 0.0729891 0.0169317 0.243332 -0.404305 -0.15904 0.651575 1.43002 0.0662973 0.249533 0.103961 -0.0086329 -0.000266446 -0.421373 0.009042 0.419664 2.4968 0.0617003 0.0143984 -1.01335 0.0362342 0.27279 0.000235952 0.202148 0.482188 -0.0575479 0.00144822 0.210568 -0.435488 -0.15579 0.00399427 0.117288 0.169311 -0.0298676 0.232394 0.00664431 -0.0241074 -2.10237 0.246042 -0.752517 -0.00469512 -0.00475928 0.01494 -0.570927 -0.0775217 -0.46129 0.0608897 0.168877 -0.0101349 -0.229616 0.104254 -3.89282 -0.00230634 0.0409104 -0.165594 -3.3355 -0.121297 -0.0922389 -0.274513 0.00353174 0.695474 1.70633 0.675543 -0.257294 -0.219991 -0.533406 -0.610305 0.0451901 0.00307824 -0.41945 0.0838941 -0.00698708 0.173756 0.00841983 0.356961 0.851771 12.1353 0.998086 0.996311 1.63284 -1.44192 5.68685 -1.26457 0.412771 0.202351 -1.66761 0.00658281 -0.0230351 0.116639 -0.38223 1.10273 0 0 0 0 0 0.0169317 0.243332 0.00203802 0 0 0 0 0.000105702 0 -0.0151271 0 0 0.00487664 0.00452417 -0.00978162 0 -0.00105642 -0.00587002 -0.138314 0 0 0.00202269 0.000325272 0 -0.0208657 0.278273 0 0 -0.00104337 -0.0281059 0 -0.159475 0 0.00252232 0 0 0.000279009 0 0 -0.574942 0.00145239 0.068033 0 0.0281154 0.00339672 0 0 0.00564327 0 0.00417155 0.214371 -0.0137021 0 0 -0.00996724 -0.0035256 0 0.0167924 -0.0547557 0.0182435 -0.0603975 -0.0618076 -0.016348 0 0.0084149 0.0347892 0.0114792 -0.0138874 0.13914 0 0 0 1.93622 -0.192338 0.436526 0.0538428 -0.0916371 0.181577 -0.00632534 0.0103253 -0.0197454 0.0439948 0 0 0 0 0 0 -0.404305 0 -0.15904 0 0 0 0 0.349549 -0.147407 0 0 -0.386903 0 -0.0255533 0 -0.0160861 0 0 0.0304788 0 0.0706414 0.126733 -0.116111 0.00572621 0 0 -0.0662382 0 -0.275905 0 -3.35081 -0.364963 0 0.91023 -0.600062 -0.0047056 0 0.0420333 0 0 -0.036571 0 -0.424014 -0.272541 0 0 -0.0250604 0 0 -0.0300414 1.71836 -0.590593 0 -0.343188 0 -1.02467 -0.0747417 0.172873 -0.294221 -0.151179 0.914006 0.542433 -0.0586088 0.0971291 -7.18876 0.0665236 0 0 0 0.0168613 0.0319099 0 0 0 0 0.0499907 22.3818 2.41008 -1.0113 0.784492 -0.616647 2.87666 0.058395 -0.041205 0.251186 -0.560338 0 0 0 0 0 0 +212 0 -0.617945 -0.404923 -0.000309655 0.0109044 0.0448548 -0.257784 0.749949 1.1331 9.29931e-05 0.124377 0.045785 0.137932 1.21219e-06 0.918889 0.000217997 -1.5166 -5.69054 0.042848 -3.87267e-05 2.26667 0.0022795 0.359971 -3.42287e-07 -0.00687814 0.534867 -0.57162 0.000564597 0.5412 -0.00364565 0.137295 -1.25408e-05 0.0143458 0.83344 0.00936997 0.351342 0.000720882 -0.0171619 3.44188 0.0422063 0.501714 7.58666e-05 -0.118227 0.00058513 0.417442 0.00476872 -0.300349 0.344606 -0.00914424 -0.000185658 -0.128967 0.086763 -0.346417 -0.000516679 -0.000339337 -0.0273624 0.579982 -0.00412724 0.0195663 0.0150948 -8.2565e-05 0.498034 -0.221989 0.255702 -0.2442 0.149318 -0.117758 0.386759 -0.0157257 -2.25739e-05 0.164065 0.237947 0.0122015 0.0103625 0.20744 0.153554 -0.458475 -10.4426 -0.527643 -5.18222 -0.527696 0.642298 -4.8482 0.21079 -0.0209499 0.0397052 -2.21445 -8.90148e-06 -5.63991e-05 -0.00262289 -0.0232314 0.00401556 0 0 0 0 0 -0.000309655 0.0109044 0.00029079 0 0 0 0 7.38378e-06 0 0.00303031 0 0 -0.000574133 -0.000149615 0.000321515 0 4.14263e-05 -0.000306465 0.0202574 0 0 -0.0251645 -1.06753e-05 0 0.00149924 -0.126125 0 0 -0.00209608 -0.0186151 0 0.0449315 0 -0.000356706 0 0 -2.53343e-05 0 0 0.154243 0.000105193 -0.00802996 0 0.004152 0.00198949 0 0 -0.0241588 0 0.000592507 -0.0210038 0.000171875 0 0 0.00117307 -0.00050076 0 -0.00274259 0.00614974 -0.0018213 0.0494563 0.00724675 0.00577723 0 -8.12728e-05 -0.00422677 0.0072297 0.00166885 -0.0146647 0 0 0 -0.44638 0.0257372 -0.0571151 -0.00912765 0.014785 -0.0173016 0.000742324 -0.00117061 0.00216901 -0.00771453 0 0 0 0 0 0 0.0448548 0 -0.257784 0 0 0 0 0.456063 -0.336637 0 0 -0.0160539 0 0.00482045 0 -0.00269571 0 0 0.212242 0 0.791131 0.102866 -0.033228 0.0105045 0 0 -0.0783109 0 -4.45229 0 1.9719 -0.43469 0 0.608286 1.09043 9.17563e-05 0 0.0707097 0 0 -0.0215203 0 -0.657922 -0.65226 0 0 -0.111194 0 0 -0.502764 -2.31752 -0.483065 0 -2.05701 0 -0.75051 0.0314895 0.0686655 0.120552 -0.128104 -0.893622 0.190987 0.00297573 -0.158982 -10.2572 0.0456671 0 0 0 0.00695449 -0.0223191 0 0 0 0 -0.0194036 -14.3784 -0.215512 -3.68462 -0.411174 0.452126 -1.62997 -0.0591098 0.0662667 0.0459246 -0.466846 0 0 0 0 0 0 +213 0 -0.0717653 -0.0921198 -0.000104101 -0.0202483 -0.185724 0.0502073 0.0248355 0.894326 0.00199593 0.211627 -0.0349702 0.336238 -7.05939e-07 0.316169 0.000231752 -1.00761 -2.26102 0.0461848 0.000873894 -0.0462243 0.00642091 0.103248 1.08228e-06 0.0417886 0.137036 -0.422998 0.0114959 -0.35389 -0.773376 0.250142 5.14022e-05 -1.04816e-05 0.252789 0.123158 -0.0229104 -0.00065762 0.12235 1.53815 -0.0243739 0.25771 -2.72162e-05 0.709501 -0.000421266 0.0187947 -0.000627589 0.39337 -0.468184 0.0267818 0.000367223 -1.41499 0.139293 1.84084 -0.000886907 0.00145582 0.0281585 1.01934 0.332617 0.0332019 -0.107715 5.49496e-05 0.23814 -0.34611 -0.0352541 -0.888877 -0.0778772 -0.313012 0.255897 0.130925 -9.66758e-05 0.0409933 0.226339 -0.0113054 -0.164848 -0.145947 -0.154103 0.151235 -8.09958 -0.666837 -4.02199 -0.653555 0.417823 -2.45229 -0.0817701 -0.0425334 0.0489369 -2.351 1.17148e-06 2.49869e-05 0.00106744 0.0161817 0.851848 0 0 0 0 0 -0.000104101 -0.0202483 -0.000527002 0 0 0 0 -1.27364e-05 0 0.00256915 0 0 -0.000400839 -6.33668e-05 0.000335538 0 3.61885e-05 -0.000170326 0.0265934 0 0 -0.00816035 -4.84996e-06 0 -0.000298504 -0.170673 0 0 -0.00217054 -0.00385959 0 -0.0140364 0 0.000242238 0 0 8.99382e-06 0 0 -0.017293 -0.000182924 -0.00538503 0 -0.00761131 0.000918964 0 0 -0.042061 0 -0.00107214 -0.099959 0.00209393 0 0 0.000823245 0.000906126 0 0.0036512 -0.0139221 -0.00204071 -0.0909487 0.0118374 -0.00170912 0 0.00114748 -0.0064656 -0.0355922 -0.00170428 -0.0293611 0 0 0 -0.251554 0.0338745 -0.105434 -0.00842339 0.0196071 -0.0340413 0.000543997 -0.00130651 0.00320636 -0.0118171 0 0 0 0 0 0 -0.185724 0 0.0502073 0 0 0 0 0.153895 0.162016 0 0 0.220213 0 0.0258418 0 0.00275123 0 0 -0.646601 0 0.0699079 0.0311047 0.0385862 -0.101624 0 0 -0.0187511 0 -0.493436 0 1.27238 0.278678 0 0.583397 0.205169 0.00392584 0 0.00263275 0 0 0.0297062 0 -0.000965686 -1.28859 0 0 -0.192359 0 0 -0.18426 -3.10433 -0.398613 0 -0.425219 0 -1.01145 0.0901901 -0.0476822 -0.063385 -0.219343 -0.769572 -0.0442863 0.0553721 0.192642 -4.51821 0.0797538 0 0 0 -0.0358662 -0.0743546 0 0 0 0 -0.0342345 -12.3772 -0.689158 -3.86169 0.217616 0.0207229 -1.70952 -0.163166 0.0813404 -0.0650692 -0.530868 0 0 0 0 0 0 +214 0 0.710563 0.10575 0.00194307 0.0822414 -0.0749878 0.0456858 -0.266985 -0.778815 0.00530268 0.278623 -0.0348559 0.373415 -2.1622e-06 0.0937661 -0.000816467 0.220192 -1.51182 0.00288035 -0.00129532 1.90304 0.00746936 -0.0859641 1.66676e-06 0.129835 -0.176721 0.328092 -0.00724372 -0.125474 0.0840606 0.330046 9.75393e-05 -0.0631025 -0.26077 -0.135181 -0.111692 -0.000707293 -0.0292756 -2.27353 -0.035314 1.29563 -0.000126586 -0.45111 -0.00063034 -0.210892 -0.00735597 0.875668 -0.0872801 -0.100956 0.000931235 0.456552 -0.0810252 -0.0731882 -0.0015944 -0.000800974 0.0115521 -3.76387 -0.111207 0.0549771 -0.158037 0.000108091 0.306136 -1.32424 0.587674 1.11799 -0.0812511 0.448717 -0.299393 -0.0222153 1.03468e-05 -0.464514 -0.149398 -0.029931 0.120597 -1.50023 0.416842 0.674425 6.65248 -0.149665 2.84339 0.16517 -0.60692 4.24887 -0.692664 0.338489 -0.190739 1.17934 1.37309e-05 5.91936e-05 0.00397272 0.0191488 -0.09259 0 0 0 0 0 0.00194307 0.0822414 -0.00081733 0 0 0 0 -1.92593e-05 0 -0.00429596 0 0 0.00134505 0.00035535 -0.00084185 0 -7.02446e-05 -0.000314642 -0.0472936 0 0 0.0684316 2.53742e-05 0 -0.00217374 0.133927 0 0 0.00748494 0.000174529 0 -0.0603611 0 0.00130594 0 0 0.000138537 0 0 -0.227608 -0.000274043 0.0187956 0 -0.0116372 -0.00262144 0 0 0.0148227 0 -0.00166601 0.0536581 -0.00017408 0 0 -0.00274852 0.00140803 0 0.00536777 -0.0153013 0.00416034 -0.0240557 -0.0146842 -0.00583321 0 0.00068773 0.00705349 -0.0126288 -0.00379162 0.0371106 0 0 0 0.720482 -0.0579125 0.140885 0.0190119 -0.031556 0.0544311 -0.00174101 0.00277919 -0.00520855 0.0150834 0 0 0 0 0 0 -0.0749878 0 0.0456858 0 0 0 0 -0.0502508 -0.47187 0 0 0.0438437 0 0.0172173 0 -0.011185 0 0 -0.631455 0 -0.492096 -0.00866051 -0.024019 -0.0826587 0 0 -0.187552 0 -11.9193 0 -4.37272 -0.923267 0 -0.233027 -1.46065 0.00291467 0 -0.00191989 0 0 -0.0400733 0 -3.8133 -1.50055 0 0 -0.203554 0 0 0.01683 2.14665 -0.111808 0 -1.62788 0 0.549407 -0.0484133 0.0941125 -0.46505 -0.133006 1.39463 0.195682 -0.0963354 -0.28412 -10.815 0.0918782 0 0 0 -0.137652 -0.011341 0 0 0 0 0.127578 26.2808 0.684685 3.23282 0.450943 -0.512824 3.18544 -0.0741942 0.0852876 -0.0128003 0.163889 0 0 0 0 0 0 +215 0 0 0 0 0 -0.178297 0.0866722 -0.00824465 0.122011 0 0 -0.231293 0.331735 0 0.869898 -0.113092 0 0 0 -0.202892 -1.62179 0 0 0 0 -0.157199 0 0 0.3735 6.36121 0.0513144 0 -0.541937 0 0 -0.063005 -0.0151135 0 0 -0.656176 -0.108921 0 0 -0.0450916 3.12615 0 0.189874 1.67217 -0.727705 0.015349 5.56324 0.23008 0 0.27333 -0.240392 0.829921 6.75205 1.41716 1.25343 0 0 -0.368717 -2.04763 0 0.494709 -0.616498 0.306143 0 0 0 0 0.180434 0.795803 0 0.682167 -2.20997 0 0 0 -0.294089 0 0.37524 -5.0424 0 0.17756 -0.809266 -1.66604 0 -0.0658191 -2.49134 4.87975 -22.4195 0 0 0 0.115169 0.0163155 0 0 0 0.00985804 0.0155734 0 0.0010973 0 0.00419884 0.00812452 0 0 0 0 -0.0645661 0 -0.0157575 0 0.13882 0 0.0419529 0.228365 0 0.00131907 0 0 0.130067 0.00129695 0.0404812 0 0.00194882 0 0.000722223 0.0447 0.0129423 0.0270797 0.00811699 0 0.000197384 0 0 0 9.12065e-05 0 0 -0.00313595 0.0010375 -0.153695 0.0233923 0 0 -0.0156287 0 -0.00113201 0 0 0.00358364 0.00496445 -0.0218533 -0.0225992 0 0 0.0835973 -0.0284079 -0.00519928 0.448087 -0.1238 0 0.161609 0.0102835 -0.0397627 0 0 0 -0.784507 0 -0.106481 -0.449301 0 -0.0072246 -0.0278909 -0.248046 0 -0.000947015 -0.00376414 -0.0175188 -0.219945 0 -0.178297 0.115169 0.0866722 0.0163155 -0.33507 -0.15067 0.475955 -1.20605 0.761584 0.0178325 -0.0115609 0.45027 0.00289295 0.0400049 0.0639165 0.0317105 -0.0363695 0.126972 0.0194405 -0.365438 0.255629 -0.285008 0.26851 0.0446254 -0.171472 0.271469 0.273179 -0.0178278 4.69087 -0.52006 1.2093 0.381872 0.00828403 -1.75627 0.566164 0.0291797 -0.0135404 -0.18937 -0.095323 1.62679 0.0805409 0.0483548 1.17812 0.689014 -0.00394561 -0.0707956 0.172065 -0.0731202 -0.206509 0.31558 1.74208 0.107987 0.185362 1.35895 -0.26455 -1.34893 -0.070307 0.168535 0.123721 0.195146 0.296806 0.52422 -0.310501 1.35653 16.9497 0.0237429 0.541093 0.00187976 0.0933597 0.372553 0.0854689 0.0906592 -0.00853868 -0.178693 -0.0167975 -0.303014 -2.6658 -0.814726 2.791 -0.247451 0.940369 -3.04541 -0.0734612 0.206552 -0.643753 1.15541 -0.0225744 0.143565 -0.451024 0.838788 -1.96825 0 +216 0 0 0 0 0 0.105204 0.330848 -0.531671 -1.05558 0 0 0.260591 1.23622 0 2.42922 0.242495 0 0 0 0.299402 -6.24796 0 0 0 0 -0.277087 0 0 -0.953876 -1.44122 0.80592 0 1.27464 0 0 -0.235911 0.0909017 0 0 -0.0519082 -1.93299 0 0 0.0183937 4.14774 0 -0.0500307 -1.26752 2.21062 0.0534996 2.76914 -0.305839 0 -0.526507 0.136407 -0.611454 -6.44848 -2.03815 -0.0694023 0 0 -0.471359 3.45547 0 -1.1719 -0.710519 0.454873 0 0 0 0 -0.375803 0.624632 0 1.21416 1.06161 0 0 0 0.671377 0 0.399756 0.0390044 0 0.35198 -0.352896 2.00006 0 0.163915 0.454261 -1.78835 7.0708 0 0 0 0.0524037 0.0168496 0 0 0 0.0450569 -0.029709 0 0.00460744 0 0.00294367 0.00188325 0 0 0 0 -0.0371083 0 -0.00953362 0 -0.0554432 0 0.374501 0.0414446 0 0.00136285 0 0 -0.00390155 6.54982e-06 0.0225799 0 -0.00317113 0 -0.00136801 -0.0211791 0.00312184 0.000863148 0.00220141 0 0.000137387 0 0 0 -0.000148279 0 0 9.35795e-06 -0.00196081 -0.102195 0.00506478 0 0 -0.0142933 0 0.00213942 0 0 0.00927043 -0.0211726 -0.0802535 -0.009945 0 0 0.00823962 -0.031362 0.0369876 0.135355 0.512218 0 7.2962e-05 0.00121658 -0.183401 0 0 0 0.695537 0 0.00183077 0.114531 0 0.000960807 0.011377 0.207353 0 3.92011e-05 0.0013857 -0.00802078 0.0518343 0 0.105204 0.0524037 0.330848 0.0168496 -0.159 0.00447668 0.633358 -0.377632 1.3038 0.0192164 -0.0758062 0.256607 0.00389933 0.0374845 0.0791095 0.11607 -0.0635563 0.107511 -1.26974 0.563836 0.163748 -0.171707 0.131679 -0.239577 -0.431087 -0.0548718 0.993573 0.0154143 -0.83555 -0.31778 0.478676 0.844716 0.0096111 -1.13916 0.282413 0.021604 -0.00729102 -0.0705255 -0.0488302 -0.285979 0.14342 -0.0117959 0.592586 -1.50749 -0.0115059 -0.0442252 -0.342988 0.102953 -0.198093 -1.78287 -0.660425 -1.00107 0.281357 2.81474 -0.359241 0.840899 -0.251697 0.441905 -0.0498782 0.310022 -0.395531 -0.473551 -0.108983 -2.40457 -3.06296 -0.156542 -0.336864 -2.17425e-05 0.213244 1.23538 -0.0139838 0.0962919 -0.0197985 -0.217506 -0.00581622 -1.08901 -1.0552 -0.40888 1.56044 -0.161051 0.644428 -0.153263 -0.0511209 0.134115 0.0927963 0.303682 -0.0191144 0.123003 0.0322191 0.0269419 0.406793 0 +217 0 0 0 0 0 -0.293278 -0.168671 -0.260443 -0.100858 0 0 -0.125978 -0.903533 0 -1.83895 -0.0648663 0 0 0 0.0926396 6.4702 0 0 0 0 -0.111291 0 0 0.500883 -4.06121 -0.677884 0 -1.3403 0 0 -0.0260704 -0.00718487 0 0 1.0394 1.88171 0 0 0.389504 -1.57971 0 0.00722738 -0.339945 -1.65088 -0.553726 -0.919535 -0.334807 0 0.462581 0.209348 -0.488554 1.6417 1.39684 -0.408325 0 0 0.693237 -2.40582 0 -0.337084 -0.442985 0.231334 0 0 0 0 -0.0128543 -0.140163 0 -3.01304 2.17502 0 0 0 0.0431016 0 -1.50717 4.45321 0 -0.507502 0.796133 1.41888 0 -1.72944 3.10388 -4.10342 12.2962 0 0 0 -0.0444799 -0.0362201 0 0 0 -0.0156996 0.0222842 0 -0.00683071 0 0.00667669 -0.00305149 0 0 0 0 -0.0950646 0 -0.0227848 0 0.0329148 0 -0.0134777 0.0835044 0 0.000123022 0 0 -0.154608 0.00194887 -0.0485765 0 0.00284502 0 0.00103277 -0.000317756 -0.0108083 0.0408677 -0.0251512 0 0.000313683 0 0 0 0.000133163 0 0 -0.00470614 0.00148332 -0.155371 0.0107546 0 0 -0.0531557 0 -0.00161843 0 0 0.00679337 -0.0142187 0.0364081 -0.048657 0 0 0.0757657 -0.0254462 -0.0172162 0.256983 -0.030521 0 -0.220385 -0.00626367 -0.170615 0 0 0 -0.244803 0 -0.159429 0.952239 0 -0.0106141 0.0670224 0.100557 0 -0.00141236 0.00968722 -0.064439 0.659156 0 -0.293278 -0.0444799 -0.168671 -0.0362201 0.287174 0.14446 -0.55338 0.295754 -3.51723 0.0253125 0.0525459 0.0193191 0.00719625 0.019305 -0.103773 -0.253309 0.0702752 0.0658712 1.94603 0.00875935 0.0135833 0.0665975 -0.000222113 0.285455 0.459634 -0.267294 -1.79137 0.0266004 -6.69227 0.252225 -0.0266824 -1.77219 -0.0174824 0.124499 0.0023079 0.0143889 0.00571535 0.075796 0.0781072 -1.54121 -0.558123 -0.0462903 -3.73168 4.11461 0.00682645 0.00025009 0.692997 0.0760714 0.158544 0.56616 0.836799 0.161859 -0.27229 -6.77438 0.3091 -0.62256 -0.234982 0.165722 0.0799344 -0.252145 -0.162745 0.00964131 0.272797 7.50944 21.7296 0.0479503 -0.343774 -0.0141565 0.0532794 -1.51219 -0.0486812 0.0869439 -0.0630333 0.134664 -0.0300585 1.81159 0.0588192 -0.0142677 -0.44362 -0.070232 -0.444405 2.5899 -0.0190627 -0.051464 0.430642 -0.525331 -0.0117113 -0.0519011 0.309645 -0.666886 1.82643 0 +218 0 0.42245 0.252126 -0.00331518 0.0611976 -0.137951 0.0301629 0.436002 0.9689 0.391503 0.650872 0.0811735 0.318183 0.00830866 0.879455 0.128192 3.09539 12.0926 0.258013 0.0499026 1.23163 0.0910853 0.0734465 -0.00100026 0.268566 0.0102489 0.881246 0.123313 -0.196009 -0.0587091 0.323239 0.0413195 0.535042 0.259659 0.749407 0.0125506 0.022789 0.217255 0.87078 -0.236835 0.285625 0.0445106 1.55759 -0.0561728 1.40164 0.215558 0.19187 -0.280671 0.0847034 0.168339 -1.4077 0.990108 -2.73841 0.017115 0.123058 -0.3967 -0.404106 -0.228497 -0.967246 -0.312257 -0.0544829 1.38909 1.49457 1.06708 1.05 0.0861082 -0.388302 0.401005 0.0752232 -0.241279 0.0654742 0.405021 -0.422889 -0.7801 -0.39107 1.04007 -1.8065 1.91944 0.457147 -1.44891 -0.299968 0.75755 -2.07774 -0.812961 0.79664 -1.09776 -1.8198 -0.222752 0.360532 -0.482253 0.498316 0.279214 0 0 0 0 0 -0.00331518 0.0611976 8.54807e-06 0 0 0 0 -3.75821e-06 0 0.000293791 0 0 0.000495241 0.00076258 0.00280276 0 -0.000415608 0.0294343 0.0188338 0 0 0.099309 3.57602e-05 0 -0.0676667 0.869028 0 0 0.00525343 0.175754 0 -0.203959 0 0.0161387 0 0 0.000227966 0 0 -0.300363 -8.01433e-05 0.0105609 0 0.000182286 -0.0160101 0 0 0.200514 0 1.59076e-05 -0.0190458 0.0034783 0 0 -0.000921626 -1.34444e-05 0 0.000717438 -0.0190358 0.00515216 -0.443279 -0.0132663 0.014566 0 0.00101132 -0.0403443 -0.0389173 0.00779968 0.134578 0 0 0 0.266347 -0.0585269 -0.0904957 -0.00263566 0.00643134 -0.0709027 -0.000348263 0.000849806 -0.0115343 -0.0156585 0 0 0 0 0 0 -0.137951 0 0.0301629 0 0 0 0 0.467475 0.0347425 0 0 -0.286477 0 -0.0336206 0 0.00780247 0 0 0.519287 0 -0.478127 0.129341 -0.150607 0.0463146 0 0 0.00348603 0 5.9019 0 -1.80388 0.309723 0 1.00027 -1.0709 -0.019099 0 0.0690381 0 0 0.0154726 0 1.53385 1.12855 0 0 0.101138 0 0 0.858165 -0.471034 0.603779 0 1.21526 0 0.656844 0.103763 -0.258677 -0.181938 -0.0961447 -0.00875649 0.0302385 0.18891 -0.600915 2.86126 0.0448756 0 0 0 -0.386171 -0.027369 0 0 0 0 0.0676032 5.26985 0.666433 -1.82291 0.388677 -0.616883 1.23754 0.050174 -0.0869617 0.197515 -0.493371 0 0 0 0 0 0 +219 0 -0.121033 0.162239 -0.0395099 0.0172472 0.00296572 0.0518954 -0.524525 -1.12774 0.14426 0.888812 -0.276516 -2.21482 0.0283466 -3.45551 -0.251731 0.972797 2.1104 0.469183 -0.419813 2.1322 0.142344 0.0134088 -0.0285012 0.314452 -0.795252 0.433197 0.176783 0.114432 0.60905 -1.00494 -0.0499589 -1.04258 0.243818 0.896244 -0.379039 -0.0892604 0.150714 0.846075 -0.543704 0.690935 0.095194 1.19518 -0.17511 -6.38876 0.319539 0.085657 0.295309 -1.93586 0.36431 -2.15833 1.73322 1.62977 0.763046 -0.354301 0.54828 10.9095 2.8584 0.516851 -0.46582 -0.137226 -0.217198 -0.474919 -1.35435 3.94861 0.502664 -0.223237 -1.9605 -0.0397551 -0.0893351 -0.181767 -0.0155934 -0.82942 -0.538288 2.12665 -0.715093 -0.37667 -3.15999 -1.17744 0.722831 -1.67592 1.47904 -1.53458 -0.665063 1.31696 -2.59123 3.65172 -0.330203 0.633972 -1.07454 1.96582 -2.89658 0 0 0 0 0 -0.0395099 0.0172472 -0.000649353 0 0 0 0 -3.33816e-05 0 0.0137579 0 0 0.000247545 0.000584196 0.0149772 0 0.00390539 -0.092583 0.0306745 0 0 0.0614599 2.73951e-05 0 0.0963382 0.0250244 0 0 0.00353242 -0.150937 0 0.238951 0 -0.0142348 0 0 -0.00314471 0 0 0.567363 -0.000711857 0.00527887 0 -0.0138474 -0.0158915 0 0 -0.0123497 0 -0.00120842 0.148495 0.00353508 0 0 -0.000460673 0.0010213 0 -0.0012257 -0.0103298 0.00208752 1.07663 -0.0238054 0.00765453 0 0.00195906 -0.0488917 0.107358 0.0333199 -0.0185433 0 0 0 -0.55651 0.0127892 0.0245302 0.00464465 -0.0113335 0.123307 -0.000174079 0.000424774 -0.0057654 0.000340965 0 0 0 0 0 0 0.00296572 0 0.0518954 0 0 0 0 0.0304493 -1.69117 0 0 -0.365893 0 -0.0351034 0 -0.0935593 0 0 0.851565 0 -0.822831 -0.00748877 -0.129256 0.138174 0 0 -0.801843 0 -1.9627 0 -2.59868 -0.66403 0 0.104831 -1.40138 -0.0114964 0 -0.00714953 0 0 -0.195926 0 -1.13687 1.80255 0 0 0.288454 0 0 0.259137 -0.243666 0.238258 0 -2.98086 0 -0.261765 0.0528418 -0.126397 -0.648223 0.0543383 0.525961 0.032649 0.0140172 3.87501 10.4179 0.0285983 0 0 0 -0.396829 -0.00878887 0 0 0 0 0.657705 5.70558 1.59617 -1.78853 0.462003 -0.629127 1.32829 0.107354 -0.103283 0.156052 -0.00522473 0 0 0 0 0 0 +220 0 -0.294132 -0.137889 -0.157723 -0.110941 0.172035 0.43 -2.10209 -5.18987 -0.565742 3.44527 -0.0122754 0.12323 0.0953151 1.85832 -0.0166403 -0.667449 -4.52631 0.86011 -0.0600495 0.361715 0.306493 0.0051848 -0.117963 1.23523 -1.40707 0.0785214 -0.0670601 -0.699638 -0.940475 0.431785 -0.336381 0.390308 0.310718 0.0315057 -0.658609 -0.0668631 -0.759952 2.37462 -0.525416 0.530747 0.270114 -1.74853 -0.295508 2.35942 0.707652 0.809012 -0.939761 0.0163046 0.540126 0.95867 2.67118 7.75434 -0.0101524 -0.0840872 0.00120955 -0.290542 -0.241309 -0.0918794 -1.70812 -0.418512 -0.528953 -0.251978 -1.69452 3.9553 0.874357 0.857208 -2.74053 -1.2146 0.346838 -1.786 -0.354517 0.144901 0.739819 -0.725686 0.445877 1.95167 -8.67862 -6.79396 6.08916 -3.19433 2.3216 -1.78428 -3.3196 3.27619 -5.11584 9.24119 -0.731267 1.05333 -1.19683 0.210314 4.47281 0 0 0 0 0 -0.157723 -0.110941 -2.23431e-05 0 0 0 0 -9.22823e-06 0 0.00103419 0 0 0.00096803 0.00150272 0.0414246 0 0.00439778 -0.227565 0.0133545 0 0 0.0228091 7.04679e-05 0 -0.0785198 -0.534125 0 0 -0.00845552 -0.39975 0 -0.227816 0 -0.0576088 0 0 -0.012723 0 0 -0.313418 -0.000196791 0.0206431 0 -0.000476463 -0.040248 0 0 0.157856 0 -4.15797e-05 -0.255512 1.80626e-05 0 0 -0.00180147 3.51413e-05 0 0.000106941 -0.0814749 0.00550584 0.785663 -0.0453778 0.00400981 0 0.00348075 -0.063609 -0.066734 0.0143984 0.0944177 0 0 0 0.976019 -0.066682 0.147884 0.00161495 -0.00394067 0.0648827 -0.000680737 0.00166108 -0.0225457 0.0554176 0 0 0 0 0 0 0.172035 0 0.43 0 0 0 0 0.00998968 -0.321971 0 0 0.408264 0 0.0447135 0 0.0539447 0 0 -0.227958 0 -0.129782 -0.0951471 -0.0156809 -0.00139909 0 0 0.430505 0 -1.4574 0 1.13186 0.997197 0 -0.77945 0.296598 -0.0087207 0 0.0049985 0 0 -0.0216399 0 1.10424 0.588359 0 0 0.0854373 0 0 -0.375441 0.630315 -0.212983 0 -0.928243 0 -0.192273 -0.0826813 0.119796 -0.0827816 0.00313995 0.322455 0.0136273 0.0612497 -0.00225666 -1.99448 0.0127872 0 0 0 0.0937448 -0.0542764 0 0 0 0 -0.0450445 -3.61177 -1.57884 2.54977 -0.438633 0.535435 -0.749333 -0.111664 0.134682 -0.226965 0.443981 0 0 0 0 0 0 +221 0 -0.528872 -0.218296 0.0375067 0.0849779 -0.27285 -0.251508 0.149138 1.39557 0.531307 -0.583818 0.0784165 -0.611959 -0.0100109 -1.73947 0.0284045 -1.4219 -5.32569 -0.135634 -0.0180082 -3.09158 -0.0323394 0.000934555 0.0208371 -0.103255 0.292807 -0.373777 -0.0620932 0.0143887 -1.43497 -0.139929 0.114089 0.210711 0.0953352 -0.196922 0.144934 0.0262072 -0.081326 1.37887 0.0793955 -1.29107 -0.0321834 -0.019848 0.0560151 -5.19499 -0.0794006 -0.451462 -0.490793 0.0718704 -0.249688 -2.17138 -0.496813 2.98867 0.165818 0.00337657 -0.187279 -4.22696 -0.762602 -0.877378 0.18376 0.0931703 0.738531 3.08926 0.35794 -1.07901 0.294978 0.564373 0.847392 -0.0524947 -0.327795 0.0897885 -0.132103 0.000237932 0.0570731 0.134907 0.74483 0.374185 -9.36233 0.860069 -7.06141 -2.2035 0.446217 -1.06933 0.205889 -0.530166 1.15932 -1.62915 0.018622 -0.0371869 0.313017 -0.648531 5.23176 0 0 0 0 0 0.0375067 0.0849779 0.000573572 0 0 0 0 -3.48383e-05 0 0.0257374 0 0 0.000994658 0.00593186 0.0251858 0 0.00407423 -0.00120012 0.184083 0 0 -0.0815881 0.000278447 0 -0.0429966 -0.399853 0 0 -0.0116776 -0.0726189 0 -0.0222551 0 0.0143491 0 0 0.00106817 0 0 0.404636 -0.000749436 0.0207936 0 0.0117825 -0.00966147 0 0 0.215785 0 0.000463512 0.285859 0.0151568 0 0 -0.0018565 -0.00139453 0 0.00412032 -0.0270162 0.0166589 -0.000801125 0.00750347 0.0289118 0 0.000575322 -0.0904497 -0.137789 0.00630906 0.193397 0 0 0 -3.86471 -0.206344 -0.888604 -0.0182512 0.0448688 -0.599624 -0.00067153 0.00163236 -0.0222298 -0.180536 0 0 0 0 0 0 -0.27285 0 -0.251508 0 0 0 0 0.392018 0.361669 0 0 -0.364893 0 -0.0385538 0 0.016837 0 0 -0.978673 0 0.137949 0.185863 -0.0644 -0.0849188 0 0 0.143975 0 -7.4455 0 0.150864 -0.357823 0 1.41204 -0.0886059 -0.00790476 0 0.0611271 0 0 0.0409262 0 -2.21507 -2.47879 0 0 -0.253378 0 0 0.0136778 0.00562976 0.0532776 0 -1.67406 0 0.9843 0.0544077 -0.052563 0.168293 -0.0424711 -0.377824 -0.102262 0.134683 -1.33857 -18.5696 -0.0133678 0 0 0 -0.155798 0.0141225 0 0 0 0 -0.0486751 -3.42472 0.716854 -3.8245 0.0748525 -0.26851 -0.178414 0.116085 -0.165308 0.272998 -0.88166 0 0 0 0 0 0 +222 0 0.285111 -0.095318 0.0261123 0.0563966 -0.113337 -0.280664 0.690272 1.28124 0.090042 -0.716359 -0.110678 0.292703 -0.0124365 -0.324222 -0.0825072 -2.53985 -6.14767 -0.338078 -0.153485 1.20895 -0.097971 -0.0114095 0.0118457 -0.187987 0.701441 -0.945127 -0.268737 0.770917 1.14734 -0.356859 0.0490543 -0.462013 -0.156596 -1.14733 0.381494 -0.015024 -0.76911 -1.37608 0.0586268 -0.0612265 -0.0522776 -2.81763 0.0287732 1.59403 -0.21777 -0.594121 1.05125 -0.728562 -0.186762 -0.172713 -1.06852 8.63309 0.320069 -0.168427 0.369672 -0.178479 0.975257 0.139185 0.5345 0.107753 0.429253 -0.780279 -0.599002 -1.06811 0.495622 -0.248942 1.09252 -0.545999 -0.0555488 -0.496221 0.0101544 0.183392 1.59852 -0.874137 -1.0089 5.55727 1.38793 0.895302 -1.24285 0.844016 -1.48133 2.59641 0.677748 -0.960777 1.80936 -3.42007 0.0510743 -0.0833312 0.262441 0.295943 -4.18311 0 0 0 0 0 0.0261123 0.0563966 -0.00203713 0 0 0 0 -0.000585841 0 0.0229491 0 0 -0.00098322 -0.00160819 0.0157569 0 0.00297027 -0.0396472 0.139785 0 0 0.109733 -7.43078e-05 0 -0.0850337 -1.30642 0 0 0.00230437 -0.296123 0 -0.231321 0 0.0503055 0 0 0.00379325 0 0 -0.734226 -0.0125189 -0.0226161 0 -0.0452458 0.0281652 0 0 -0.0826513 0 -0.00600639 0.0751965 0.014574 0 0 0.00192029 0.00140329 0 -0.007749 -0.0779934 -0.0093041 3.32227 -0.0177635 0.0258884 0 0.0119863 -0.0720292 -0.0226756 0.145639 -0.110145 0 0 0 5.69408 0.270907 -0.0981528 0.0254818 -0.0610957 0.837193 0.000818052 -0.00202808 0.0271491 -0.0994427 0 0 0 0 0 0 -0.113337 0 -0.280664 0 0 0 0 -0.133912 -0.152096 0 0 -0.118201 0 -0.0163838 0 -0.0164819 0 0 0.582103 0 0.468358 -0.0254624 0.0565632 0.0856943 0 0 -0.166783 0 2.25837 0 -1.07328 -0.409015 0 -0.132199 0.182477 0.00323852 0 -0.0141128 0 0 -0.0172992 0 0.23553 0.775849 0 0 0.0876367 0 0 -0.0633049 -0.0835789 0.0104502 0 0.0144387 0 -0.482109 -0.0180345 0.047893 -0.0653006 0.0371875 0.0805897 0.171777 -0.245887 0.969654 7.50003 0.0290132 0 0 0 0.0193138 0.087127 0 0 0 0 0.0541804 4.31283 1.10863 -0.9329 0.531752 -0.588658 0.859996 0.106957 -0.107463 0.136289 0.00257819 0 0 0 0 0 0 +223 0 -0.190583 0.0775913 0.0528822 0.0358331 0.0194153 -0.0543225 0.20448 -0.717693 0.00810602 0.177034 0.476812 1.30122 -0.026261 1.8081 0.190841 1.04419 5.57683 0.00975924 0.289414 -5.4927 0.0394365 0.0801075 0.0239136 0.0760701 0.463038 0.0993119 0.193009 -0.0452237 -1.18042 0.503665 0.0879406 1.43568 -0.0566445 0.44176 0.378645 0.115202 0.643214 -0.937406 0.956247 -1.99049 -0.10555 1.73491 0.227337 3.82455 -0.426782 -0.575357 -0.28427 2.6736 -0.502076 1.99507 -0.477023 2.39624 -1.08304 -0.042601 0.00200064 0.147135 -1.38378 1.03391 0.023517 0.198292 -0.0317555 1.54895 0.705952 -1.87792 -0.991955 0.441015 0.915017 0.742273 -0.00490732 -0.239562 -0.487032 1.27153 -0.675465 3.78056 -0.789685 -0.954611 3.83687 -0.62252 3.71969 0.757292 -0.446156 0.849852 -0.885651 0.715231 -0.558683 1.93412 0.100094 -0.261973 0.916428 -2.15762 4.30369 0 0 0 0 0 0.0528822 0.0358331 0.00103414 0 0 0 0 -0.000101546 0 -0.0128909 0 0 0.0018694 0.0113188 -0.0271225 0 -0.00239442 0.0555922 -0.110728 0 0 0.131583 0.000531401 0 -0.132921 0.358218 0 0 0.00591703 0.12802 0 -0.272951 0 0.0722241 0 0 0.00589088 0 0 -0.407417 -0.00218071 0.0389279 0 0.0209542 -0.0682784 0 0 0.18811 0 0.000552465 -0.699797 -0.00617225 0 0 -0.00343876 -0.00273526 0 9.87556e-06 -0.104127 0.00331311 0.433063 -0.0929838 0.00917469 0 0.0116774 -0.0748694 -0.103203 0.0126001 0.171022 0 0 0 1.8488 -0.102214 0.649541 0.00594522 -0.0139006 0.20384 -0.0012443 0.00301885 -0.0411803 0.188707 0 0 0 0 0 0 0.0194153 0 -0.0543225 0 0 0 0 -0.413903 2.50551 0 0 0.418743 0 0.0534537 0 0.13019 0 0 -0.818805 0 0.638165 -0.153297 0.196842 -0.0985943 0 0 1.09577 0 7.39841 0 0.988447 1.10709 0 -1.15595 1.00809 0.0288863 0 -0.0586108 0 0 0.298045 0 2.79171 -1.75772 0 0 -0.225395 0 0 -0.511325 -1.94862 -0.172824 0 3.84516 0 1.2973 -0.0726819 0.15406 0.53266 0.0936983 -0.494423 -0.726382 0.169297 -5.21424 -15.6812 -0.0976349 0 0 0 0.665777 -0.0115102 0 0 0 0 -0.980792 -1.99501 -1.00027 2.71003 -0.0748671 0.263784 -0.67039 -0.0360139 0.0973795 -0.239202 0.593664 0 0 0 0 0 0 +224 0 0.341728 0.336282 0.0413582 0.127954 -0.150276 -0.107676 0.0247781 -0.283589 0.270933 -1.03304 -0.027499 -0.00864626 -0.0130759 -0.536555 -0.0301 1.06454 6.40653 -0.206674 -0.0910997 0.973636 -0.0604437 -0.119989 0.0179991 -0.306675 0.20971 0.188412 -0.020375 0.392919 0.567557 -0.201943 0.0729694 -0.237336 -0.960593 -0.117059 0.230155 -0.00298091 0.154998 -4.64668 -0.0262613 0.10275 -0.0432497 0.143624 0.0117813 0.00184121 -0.0994893 -0.244417 0.471039 -0.534941 0.0361468 -0.869788 -0.297462 0.935965 0.0986925 -0.0442525 0.140008 1.48384 0.167087 0.496583 0.312405 0.0594623 1.21199 -1.5717 0.337066 -0.155289 0.334814 -0.0393175 0.493067 0.205053 -0.115755 0.0392819 0.102093 -0.18518 -0.101432 0.97625 -0.386488 -0.307973 11.6135 4.41504 -0.971142 2.56316 -1.62484 3.15034 0.630945 -0.249753 0.309122 0.90524 0.0888781 -0.0435036 -0.178765 0.334823 -0.852811 0 0 0 0 0 0.0413582 0.127954 -0.000113323 0 0 0 0 -4.4008e-07 0 -0.0260213 0 0 -2.08147e-05 -2.81231e-06 -0.0434472 0 -0.00671631 -0.0258838 -0.180827 0 0 0.0673539 -1.20321e-07 0 0.0288307 -0.184126 0 0 0.0170537 -0.0882135 0 0.0541429 0 0.0268558 0 0 0.00599774 0 0 -0.0863913 -9.13166e-06 -0.0005236 0 -0.00233433 0.00186224 0 0 0.0968814 0 -0.000100906 0.132444 0.000697582 0 0 4.9188e-05 0.000248593 0 -9.71973e-05 0.128606 -0.00106331 1.45071 -0.00085422 -0.0249683 0 -0.00101487 0.0926051 0.488604 -0.000622448 0.038783 0 0 0 0.249773 0.00646009 0.215554 0.000572276 -0.00143769 0.0606844 2.164e-05 -5.4737e-05 0.000720075 0.0815301 0 0 0 0 0 0 -0.150276 0 -0.107676 0 0 0 0 0.171652 -0.642045 0 0 -0.49345 0 -0.0505822 0 -0.0428335 0 0 0.8833 0 -0.409274 0.0308381 -0.158998 0.107983 0 0 -0.475925 0 0.783174 0 -1.46888 -1.36538 0 0.25847 -0.592071 -0.0147465 0 0.0192997 0 0 -0.0576179 0 -1.48992 1.8302 0 0 0.2252 0 0 0.108175 1.48226 -0.0806089 0 0.205552 0 -0.406884 0.0222095 0.0253048 -0.412945 0.101908 1.47799 0.468638 -0.0886611 -0.125818 3.4407 0.0599976 0 0 0 -0.0463784 -0.0138049 0 0 0 0 0.0524168 13.1789 3.34883 -1.66223 0.53135 -0.400835 0.443676 0.0906431 -0.0932688 0.194971 -0.084409 0 0 0 0 0 0 +225 0 1.36682 0.232918 0.0894764 0.0734969 -0.0531474 -0.255288 0.239288 0.955119 0.497545 -2.09472 0.139774 -0.803391 -0.0352486 -0.760205 -0.00293773 -0.722535 0.640778 -0.511064 -0.0930431 -1.39609 -0.165256 -0.311013 0.0443124 -0.709944 0.489652 -0.310321 -0.018435 0.460257 -0.26077 -0.427576 0.168197 -0.0201605 -1.84714 0.12547 0.338814 0.0394105 0.336142 -7.8236 0.509064 -1.1734 -0.141117 1.91013 0.147011 -2.47313 -0.499437 -0.841466 0.249228 -0.239676 -0.336562 -0.1597 -1.14101 -1.63293 0.216095 -0.12493 0.277644 1.55538 0.361837 -0.546784 1.0561 0.264801 -0.543279 2.37219 2.50849 -2.08904 -0.143834 0.0634329 2.25335 0.334231 -0.240562 1.55958 0.0456824 0.324669 -0.550703 -0.505064 -0.73093 -1.69403 27.2562 8.84765 -3.23607 6.43294 -5.39534 8.42769 1.92701 -1.56966 1.99958 -1.21441 0.446169 -0.504659 0.491706 -0.527233 0.391833 0 0 0 0 0 0.0894764 0.0734969 -2.57035e-05 0 0 0 0 -2.29447e-08 0 -0.0265865 0 0 2.48294e-05 2.12057e-06 -0.0495513 0 -0.00946466 0.0393477 -0.118391 0 0 0.198235 1.09157e-07 0 -0.0133296 0.930814 0 0 0.0412302 0.222193 0 -0.22616 0 0.0666105 0 0 0.0133098 0 0 -0.758543 -2.62315e-07 0.000463443 0 -0.000472934 0.00102019 0 0 0.0852299 0 5.34639e-05 -0.0633204 -0.000398921 0 0 -3.5521e-05 0.000106237 0 6.95413e-05 -0.0133216 0.000121495 0.5533 0.000283313 0.0362656 0 -0.000297982 -0.00408791 0.0571084 -0.00161975 0.0440244 0 0 0 1.52555 -0.00376921 0.156692 -0.000342874 0.000795921 0.168131 -1.13662e-05 2.60044e-05 -0.000373427 0.0396129 0 0 0 0 0 0 -0.0531474 0 -0.255288 0 0 0 0 0.0608504 1.48092 0 0 -0.211394 0 -0.0436767 0 0.0527329 0 0 -0.773081 0 0.144759 -0.0184095 -0.0024875 -0.0948881 0 0 0.465453 0 1.56023 0 -2.19576 -1.16574 0 -0.0397836 -0.0588432 -0.00537232 0 0.00759634 0 0 0.173226 0 -0.973225 -1.74681 0 0 -0.199192 0 0 -0.229063 0.297314 -0.0932304 0 0.622617 0 -0.204063 -0.00546811 0.0364959 0.583424 -0.112016 -0.961174 0.253733 0.095096 -1.41548 -0.602276 -0.0592368 0 0 0 0.261175 0.047862 0 0 0 0 -0.398306 12.1838 0.997544 1.21671 0.361891 -0.361287 1.01235 0.0256452 0.00206268 0.0368534 0.0567514 0 0 0 0 0 0 +226 0 0.00630626 0.182189 0.0671491 0.187838 -0.187776 0.00571614 0.969376 2.52246 0.502764 -1.75294 0.558831 0.185017 -0.0199107 1.0353 0.204431 1.5308 4.77103 -0.252248 0.255491 -1.8817 -0.0461088 -0.101865 0.0282537 -0.462102 0.236911 0.469119 0.0500777 -0.461221 -1.5683 0.30506 0.120302 1.14209 -0.416405 0.488412 0.000236193 0.130474 0.385335 -2.46217 0.775415 -0.670582 -0.0645368 2.43955 0.19335 0.0251803 -0.149923 -0.0623097 -0.867325 1.48833 -0.367286 1.13234 -1.2538 -3.67649 -0.469884 0.294476 -0.169796 -0.0525969 -0.383434 -0.295447 0.533876 0.0800971 -1.00174 0.98311 2.09138 -2.06299 -0.683128 -0.18498 1.66496 0.288727 -0.204966 1.3645 0.383247 0.833904 -0.681986 -0.169819 0.0325574 -1.5976 9.3 4.74071 -4.97609 2.13346 -2.7967 5.22392 1.10523 -1.70188 3.00555 -4.64474 0.133933 -0.429589 0.813152 -1.45325 2.35653 0 0 0 0 0 0.0671491 0.187838 0.000222022 0 0 0 0 8.68476e-07 0 0.00284103 0 0 4.13119e-05 5.63e-06 -0.0191396 0 -0.00353072 0.0325058 0.0128795 0 0 -0.148184 2.41276e-07 0 -0.018573 -0.445791 0 0 -0.0254063 0.0150666 0 -0.0899066 0 -0.0109354 0 0 -0.000993136 0 0 -0.309879 1.80363e-05 0.00103872 0 0.00457857 -0.00359546 0 0 -0.0885137 0 0.000201707 0.20522 -0.00141908 0 0 -0.000100467 -0.000484655 0 0.000217781 0.0665882 0.00214228 1.20837 0.00173449 0.0380733 0 0.00207374 -0.0485069 0.295485 0.00131669 0.169393 0 0 0 0.284796 -0.0134749 0.0010133 -0.00122326 0.00306885 0.180186 -4.33281e-05 0.000109736 -0.001442 -0.0154235 0 0 0 0 0 0 -0.187776 0 0.00571614 0 0 0 0 0.291339 2.11796 0 0 -0.670801 0 -0.0839361 0 0.0962048 0 0 -0.563345 0 -0.643491 0.0739374 -0.3253 -0.059156 0 0 0.773202 0 -2.29485 0 -2.4067 -1.01912 0 0.582057 -1.30025 -0.0384499 0 0.0391653 0 0 0.257712 0 -1.69229 -1.82805 0 0 -0.207871 0 0 -0.30658 0.918147 -0.0510658 0 1.81067 0 -0.763835 0.168622 -0.0591345 0.691306 -0.0143827 -0.633617 0.794614 0.055027 -1.23064 9.24304 -0.0347165 0 0 0 0.442893 -0.000275416 0 0 0 0 -0.525289 15.6069 3.29207 -2.35411 0.251941 -0.257583 0.535557 0.0841649 -0.0765937 0.135788 -0.0994145 0 0 0 0 0 0 +227 0 0 0 0 0 0.232485 0.286394 -0.725371 -2.39397 0 0 -0.304515 1.34364 0 2.59718 -0.0609351 0 0 0 -0.0452085 1.11435 0 0 0 0 -0.444824 0 0 -0.127713 2.00797 0.732394 0 -0.113866 0 0 -0.199195 -0.0310999 0 0 -1.20123 0.962901 0 0 -0.252206 5.32005 0 0.644381 0.473232 -0.0591606 0.143683 0.667151 -0.260375 0 -0.0483813 -0.214156 0.525425 -0.0423319 -0.0979219 -0.0850263 0 0 -0.326377 -0.897017 0 0.00454568 -0.238528 1.25024 0 0 0 0 -0.314205 -0.474244 0 -1.97949 -1.2085 0 0 0 2.54912 0 1.61648 -2.49449 0 0.570634 -0.0641513 2.72965 0 0.580373 -0.00821687 2.00172 -5.54573 0 0 0 0.172584 0.0384259 0 0 0 0.0150808 0 0 0.00348625 0 0 -0.0166065 0 0 0 0 0.0707767 0 0.0108004 0 -0.0479278 0 0.0573945 -0.0792356 0 -0.00506874 0 0 -0.207095 0 -0.00664187 0 0 0 0 -0.024171 -0.0316838 0 -0.00308781 0 0 0 0 0 0 0 0 0 0 0.0450805 0 0 0 0 0 0 0 0 0 0 0.342113 0 0 0 0.0916219 0.0216073 0 -0.0127146 0.3755 0 0.0851616 0 0.265304 0 0 0 0.0314084 0 0 0.19177 0 0 0 0.0772181 0 0 0 0 0.184553 0 0.232485 0.172584 0.286394 0.0384259 -0.48172 -0.0627485 0.492563 -1.01467 1.46182 -0.00623004 0.0195301 0.384708 -0.00175124 0.00372432 0.0677804 0.075003 -0.0293479 0.0121001 -0.0710172 -0.353323 0.721494 -0.360997 0.316333 0.0721697 -0.0889603 -0.000894546 0.716444 -0.0145177 10.8465 -0.3854 0.930389 3.55208 0.00904721 -2.06768 0.879431 0.0178892 -0.00461889 -0.178281 -0.0413836 0.34912 0.162706 -0.00850969 6.22521 0.214721 2.66697e-06 -0.038743 0.200004 -0.0702184 -0.16711 -0.162714 0.55085 -0.082834 0.156411 -0.568896 -0.193672 2.05726 -0.202376 0.265135 0.779677 0.561397 -0.625695 -0.460011 0.0999307 -0.279586 -11.6287 -0.0652155 0.645617 -0.00205585 0.129044 0.472426 0.0526236 0.0578946 -0.0130491 -0.191266 0.0326526 -0.530193 -5.22382 -1.63964 7.09104 -0.223164 1.47674 -1.49445 -0.0855091 0.245416 -0.314448 0.526135 -0.00492115 0.0752573 -0.0730468 0.264873 -0.566857 0 +228 0 0 0 0 0 0.548625 0.231362 -0.549007 -3.47345 0 0 -0.0418479 0.138578 0 0.287647 0.02269 0 0 0 0.0134544 -3.59825 0 0 0 0 -0.694045 0 0 0.0396184 -0.43422 0.120922 0 0.612793 0 0 -0.149407 0.014009 0 0 -0.158275 -0.860236 0 0 -0.0143487 0.938217 0 0.0706341 0.247134 1.03387 -0.0121461 -0.425062 0.173498 0 -0.26716 -0.225626 0.512847 -1.66486 -0.673936 0.554393 0 0 1.46098 -1.36996 0 -0.116808 0.711078 -0.435756 0 0 0 0 0.0662386 0.829213 0 0.269333 -1.80698 0 0 0 5.12246 0 0.465673 1.45776 0 0.00743976 0.633271 4.98254 0 0.025618 0.815911 -0.255434 2.29758 0 0 0 0.0170849 0.0199463 0 0 0 -0.00412298 0 0 0.00266979 0 0 -0.121132 0 0 0 0 -0.210793 0 -0.0400236 0 -0.554009 0 -0.114706 0.165965 0 -0.0116067 0 0 -0.213372 0 0.0360839 0 0 0 0 0.160462 -0.0512703 0 0.0340579 0 0 0 0 0 0 0 0 0 0 -0.00202695 0 0 0 0 0 0 0 0 0 0 0.0653834 0 0 0 0.0500361 0.075464 0 0.142645 0.236689 0 -0.0917297 0 0.0369599 0 0 0 0.577615 0 0 0.212899 0 0 0 0.150756 0 0 0 0 0.133859 0 0.548625 0.0170849 0.231362 0.0199463 0.0932107 0.00860218 0.116667 -0.684046 0.26162 -0.0295868 0.0532414 -0.465323 -0.00620532 -0.138638 0.0358997 0.0153194 0.0266254 -0.120348 0.577659 -0.771934 0.205515 -0.248855 -0.00095072 0.147483 0.265331 -0.0400967 0.270977 -0.0121027 2.7587 -0.104521 -0.456083 1.52412 0.00748744 -1.64272 0.111754 -0.0246738 -0.00532813 -0.100324 -0.0259712 -0.388084 0.0298989 -0.00361786 2.24575 1.46667 0.00551996 -0.0262888 0.313394 -0.0960674 0.0367671 0.0808478 3.23481 -0.18322 -0.0811552 -1.06771 -0.056562 0.436875 -0.0772551 0.251335 0.70706 -0.100279 0.885211 0.345414 -0.0325413 -0.634594 -6.69998 -0.120916 -0.0344049 -0.0249571 -0.258941 -0.407022 0.359066 0.0461012 0.0629212 0.124402 -0.000234416 -0.112714 2.56075 1.58066 4.04487 0.430602 0.32146 0.970344 0.167014 -0.0258664 0.144092 0.605901 0.0489458 -0.00302025 0.0588613 -0.0635606 0.348483 0 +229 0 0 0 0 0 0.258887 0.177464 -0.989501 -1.79639 0 0 -0.435691 0.730535 0 0.61557 -0.0128036 0 0 0 0.293013 -0.212342 0 0 0 0 -0.36067 0 0 -0.170739 3.6278 0.327233 0 0.0139711 0 0 -0.206478 -0.0511469 0 0 -1.66184 1.24131 0 0 -0.337148 1.62457 0 1.02465 0.540466 1.26766 0.516879 -0.918289 1.06031 0 -0.306977 0.0903033 -0.445072 -1.05918 -0.0426451 1.23161 0 0 -0.853956 -4.66378 0 0.578779 0.549221 -0.165903 0 0 0 0 -0.502821 -0.807542 0 -0.202306 0.818088 0 0 0 2.41492 0 2.39829 -5.24658 0 1.01679 -1.97838 4.15817 0 0.904209 -1.96467 4.10625 -8.58032 0 0 0 0.184648 0.038594 0 0 0 -0.0303126 0 0 -0.00377874 0 0 -0.000289055 0 0 0 0 0.0638318 0 0.0113804 0 0.0389446 0 -0.21753 -0.362383 0 0.000671854 0 0 0.0318189 0 -0.0445056 0 0 0 0 -0.107488 0.0054392 0 -0.013065 0 0 0 0 0 0 0 0 0 0 0.208971 0 0 0 0 0 0 0 0 0 0 0.11773 0 0 0 -0.0700281 0.00921723 0 0.166703 0.150907 0 -0.0355992 0 0.0662203 0 0 0 -0.0724834 0 0 -0.0262775 0 0 0 0.0424885 0 0 0 0 -0.0400663 0 0.258887 0.184648 0.177464 0.038594 -0.297632 -0.125232 0.516401 0.0346445 0.643994 -0.0021468 -0.011124 0.251674 -0.000932796 0.0215468 0.0679652 0.0120948 -0.0190251 0.0319045 0.28738 -0.528844 0.694976 -0.00784661 0.154625 0.010198 -0.062095 0.133543 0.155123 -0.0220315 9.21194 -0.493457 3.63556 3.07674 0.00865142 -0.0753357 1.84807 0.0191099 -0.00882046 0.00995679 -0.0892674 0.830267 0.0727316 0.0213378 5.13162 0.477041 -0.0028636 -0.0487548 -0.0510584 -0.112985 0.0968087 0.501028 -2.7383 -0.339605 0.0856086 1.2517 -0.201377 -0.980463 -0.154466 0.0349093 -0.867278 -0.526646 0.572661 -0.563766 0.234266 -1.31404 -14.4514 0.245554 -0.0616332 0.0576518 0.163433 0.197327 -0.109781 0.0571774 -0.0239771 -0.0339968 -0.118011 -0.354039 -20.4124 -2.89335 1.73355 -0.82886 1.9647 -3.25838 -0.0703689 0.203702 -0.471618 0.224698 -0.0129756 0.0846011 -0.183537 0.276671 -0.353166 0 +230 0 0.522667 0.178085 0.042814 0.178627 -0.346386 -0.0893105 0.3116 0.530279 0.817923 -0.559068 0.221669 -1.03251 -0.00130798 -1.8956 0.047042 0.181911 1.96414 0.00753316 -0.00117662 -1.70142 0.00709154 -0.201273 0.0169452 -0.150952 -0.148517 -0.00480248 0.0374483 -0.0936026 -0.775181 -0.430468 0.119445 0.254729 -0.733954 0.33237 -0.0820921 0.0377099 0.205857 -3.97288 0.14664 -0.705577 0.00360785 1.61843 0.0423963 -4.57425 0.0949918 -0.155969 -0.444279 -0.0316633 0.031027 0.512832 0.295171 0.947547 0.435512 0.182604 -0.479118 1.45138 0.334239 -0.496469 0.0410606 -0.0011711 0.493475 0.960601 0.0300197 0.570439 -0.338026 -0.926786 -0.516001 0.11724 -0.422445 0.194365 0.212321 0.0717862 -0.432799 1.49736 0.900731 -0.674439 7.48267 2.39143 -1.38487 1.36482 -1.81054 5.32412 0.44986 -0.363504 0.534545 -0.625038 -0.0320519 0.0183019 -0.0109562 -0.570038 2.31327 0 0 0 0 0 0.042814 0.178627 0 0 0 0 0 0 0 -0.00764364 0 0 0 0 -0.00682904 0 -0.000342387 -0.0278941 -0.0657278 0 0 -0.041562 0 0 0.0437427 -0.325741 0 0 -0.00948515 -0.0620808 0 0.0868444 0 -0.00358551 0 0 -0.00125888 0 0 -0.0142315 0 0 0 0 0 0 0 0.0232495 0 0 0.174552 0 0 0 0 0 0 0 0.0567389 0 0.55024 0 0.00291042 0 0 0.00826048 0.187703 0 0.0793613 0 0 0 -0.0502495 0 0.0888511 0 0 0.0767219 0 0 0 0.0296141 0 0 0 0 0 0 -0.346386 0 -0.0893105 0 0 0 0 0.157397 0.334824 0 0 -0.56078 0 -0.0609833 0 0.00764593 0 0 -0.732115 0 -0.905235 0.0557306 -0.247197 -0.118348 0 0 0.127593 0 -5.75638 0 -4.31487 -2.02821 0 0.544437 -2.01649 -0.0279161 0 0.0139044 0 0 0.0194873 0 -3.62524 -1.45797 0 0 -0.225366 0 0 0.629311 2.62368 0.297541 0 1.5163 0 -0.39296 0.191427 -0.267872 -0.00805195 0.0343456 1.80702 0.263943 -0.0398051 0.3121 10.8308 0.103482 0 0 0 -0.297928 -0.00525662 0 0 0 0 0.309771 27.0476 4.02738 -2.32401 0.708654 -0.681402 1.39615 0.101075 -0.110498 0.224959 -0.279582 0 0 0 0 0 0 +231 0 0.586306 0.385518 -0.0390699 -0.0166229 0.134463 0.227885 -0.464215 -0.908273 -0.128571 0.510186 -0.263029 1.24686 0.0156502 0.672345 -0.175487 1.28035 2.95024 0.0528061 -0.221528 6.14038 0.060551 -0.220106 -0.0168161 0.298303 -0.170046 0.551853 -0.0403503 -0.331579 0.368396 0.556259 -0.0701753 -1.3324 -0.880817 -0.287914 -0.210652 -0.0821673 -0.256409 -4.83042 -0.601301 2.61767 0.0668236 -1.51088 -0.17075 2.63769 0.262868 0.971309 -0.180604 -2.07578 0.50521 -0.377449 0.607612 -2.30994 0.5707 0.0436214 -0.204601 -0.282395 0.113643 -0.66061 -0.378889 -0.135333 -1.50691 0.185315 1.09737 0.438996 0.559238 -0.0212048 0.891882 -0.243879 0.0701551 -0.195039 0.153406 -1.53003 0.430739 -0.125119 1.49722 0.0940908 11.2006 0.418686 1.37844 1.74192 -1.94859 6.2622 -0.897696 0.39341 -0.186719 1.08055 -0.0886962 0.220552 -0.454373 1.06411 -1.09936 0 0 0 0 0 -0.0390699 -0.0166229 0 0 0 0 0 0 0 -0.0231577 0 0 0 0 -0.0172024 0 -0.00538765 0.127168 -0.0853788 0 0 -0.206555 0 0 -0.16006 0.0532412 0 0 -0.0192212 0.252988 0 -0.443829 0 -0.0473953 0 0 -0.00420981 0 0 -1.32448 0 0 0 0 0 0 0 0.0636522 0 0 -0.234308 0 0 0 0 0 0 0 0.0267628 0 0.377415 0 0.0459807 0 0 -0.0281114 -0.00493165 0 0.114324 0 0 0 2.78095 0 0.179205 0 0 0.288793 0 0 0 0.0260976 0 0 0 0 0 0 0.134463 0 0.227885 0 0 0 0 0.226927 -1.37153 0 0 -0.281085 0 -0.0512585 0 -0.0784391 0 0 0.605582 0 -0.797588 0.00522572 -0.25451 0.0565315 0 0 -0.750224 0 -4.02199 0 -5.38396 -0.423873 0 -0.0476698 -1.95501 -0.0333085 0 0.0344399 0 0 -0.138087 0 -1.52555 0.83902 0 0 0.0696799 0 0 0.544908 -0.872624 0.119728 0 -0.478103 0 -0.666483 0.102382 -0.156225 0.9247 -0.153916 -0.875516 0.262307 0.139208 1.30605 8.18206 0.0106961 0 0 0 -0.335605 0.0331343 0 0 0 0 0.283849 30.0257 3.07159 -0.263919 0.823876 -0.80005 1.61897 0.0603545 -0.0402683 0.0542636 0.0603923 0 0 0 0 0 0 +232 0 0.0104287 0.0218586 0.0271898 0.0948471 -0.160595 -0.311776 1.61787 3.10251 0.440963 -1.11283 -0.288494 0.264229 -0.00266691 0.0731295 -0.135014 0.326955 1.87864 -0.262134 -0.286097 3.46082 -0.0342961 0.154879 0.0109332 -0.180867 1.05622 0.043932 -0.00695005 0.895852 2.07504 -0.119628 0.0709247 -1.0095 0.00120767 -0.385748 0.671631 -0.0386811 0.258281 -0.83589 -0.345471 0.429254 -0.00661475 -0.245357 -0.0394999 0.991113 0.0159268 -0.584068 1.40847 -2.03887 0.0350194 -0.0227519 -0.458778 1.18323 0.621911 -0.124974 0.334483 1.99045 0.468767 -0.613898 0.223628 0.0165818 -0.528263 0.817717 -1.20673 -1.02829 -0.244354 -1.34408 0.179591 0.389995 -0.228227 0.456265 0.282255 -0.637377 -0.113332 -0.338622 -0.994058 0.174366 2.09361 2.01581 -4.49247 0.220977 -0.170468 -1.31747 0.3844 -0.538174 1.00684 -4.47221 -0.00537399 0.0655004 -0.373842 1.45568 -6.19227 0 0 0 0 0 0.0271898 0.0948471 0 0 0 0 0 0 0 0.00535872 0 0 0 0 -0.00116488 0 0.000824387 -0.0536737 0.00463728 0 0 -0.0565299 0 0 0.0454475 -0.462102 0 0 -0.0111994 -0.16039 0 0.100294 0 0.0027043 0 0 -0.0002301 0 0 0.237042 0 0 0 0 0 0 0 -0.075835 0 0 0.082559 0 0 0 0 0 0 0 0.00535424 0 0.043398 0 0.00770428 0 0 -0.0249811 0.0392439 0 -0.00555475 0 0 0 -0.564746 0 0.00874537 0 0 0.0099067 0 0 0 -0.015069 0 0 0 0 0 0 -0.160595 0 -0.311776 0 0 0 0 -0.0857573 -0.764143 0 0 -0.458804 0 -0.0590237 0 -0.0438797 0 0 0.451101 0 -0.245655 0.0133571 -0.0574085 0.0521301 0 0 -0.462438 0 -0.902448 0 -2.10593 -1.52011 0 0.172718 -0.96618 -0.0135625 0 -0.00749708 0 0 -0.0783733 0 -1.60754 0.629971 0 0 0.070139 0 0 0.131214 -1.00101 0.154401 0 -0.10113 0 -0.625287 0.0780503 -0.131181 0.69171 -0.0169486 -0.90774 0.291378 -0.0199079 1.157 8.7968 -0.0324584 0 0 0 -0.0443555 0.069227 0 0 0 0 0.151322 11.0033 2.09864 -1.17984 0.36755 -0.409416 0.442176 0.0794946 -0.0731535 0.115022 -0.0524576 0 0 0 0 0 0 +233 0 0 0 0 0 0.0261543 0.238687 0.242283 1.25607 0 0 -0.0506152 1.42685 0 2.58017 0.00838158 0 0 0 -0.00879265 0.0643178 0 0 0 0 0.0176961 0 0 -0.27542 3.16277 0.827002 0 -0.0650743 0 0 -0.144026 -0.00490875 0 0 0.248627 0.961452 0 0 0.124362 4.36991 0 0.974404 0.555236 -0.465248 -0.151175 0.578509 -0.0659474 0 0.114622 -0.0188686 0.319979 -0.809213 0.0164181 -0.93582 0 0 0.401444 -0.191676 0 0.58348 0.154589 -0.395966 0 0 0 0 0.0318752 0.505459 0 -2.72592 -1.42648 0 0 0 -1.78448 0 -0.452772 -2.89444 0 -0.120162 -0.188813 -3.26875 0 -0.065514 -0.40896 0.940822 -9.20711 0 0 0 -0.0526595 -0.0147599 0 0 0 -0.0156539 -0.0203504 0 -0.00167447 0 -0.0042575 -0.00427462 0 0 0 0 -0.016073 0 -0.00221705 0 0.00252501 0 -0.133152 0.0895674 0 0.00164873 0 0 0.0434802 -0.00188334 0.0116572 0 -0.00141473 0 -0.00142766 -0.0214985 0.0112304 -0.0268375 -0.00526137 0 -0.000298738 0 0 0 -9.92661e-05 0 0 0.00501944 -0.00222259 0.0479282 -0.0132212 0 0 0.00346244 0 0.00246016 0 0 -0.0140843 -0.00703625 0.0174417 -0.00715162 0 0 0.0300174 0.0286344 0.00390813 -0.0046273 -0.0126986 0 -0.0351138 -0.00617387 -0.0841587 0 0 0 -0.000558603 0 0.0215331 -0.0349081 0 -0.0026854 0.00441359 -0.00371187 0 0.00238785 -0.00391617 0.00778185 -0.0104045 0 0.0261543 -0.0526595 0.238687 -0.0147599 -0.294016 -0.0463511 -0.106225 -0.450604 -0.578299 0.0142692 -0.0805529 0.0853128 0.00196696 0.00259333 -0.0175115 -0.0281184 -0.048244 0.0947365 -0.161866 0.37682 0.114714 0.0305884 0.034747 0.048848 -0.492926 0.255772 -0.258105 0.0143242 1.25403 -0.265211 -1.15136 1.29575 -0.00253214 -0.18073 -0.439697 -0.00136529 -0.00302979 -0.0629446 -0.0241348 1.62138 -0.0640435 0.0405123 1.42479 -0.465085 -0.0080059 -0.0334013 0.0513183 0.0837488 -0.173767 -0.167652 0.443625 0.00589366 0.0968296 -0.901361 0.030446 0.437597 -0.138045 0.255192 0.0632047 -0.225864 -0.0138183 0.125925 -0.0750793 0.933861 0.220462 0.129452 -0.056451 -0.0514594 -0.400355 -0.150853 -0.00665093 0.0780662 -0.0307517 -0.0652544 0.17484 0.117838 2.81622 -0.547395 0.268278 0.139125 0.117022 -2.64087 0.0175618 0.117055 -0.00772351 -0.792867 -0.0419619 0.238459 -0.549776 0.863865 -2.55961 0 +234 0 0 0 0 0 0.688018 -0.0849664 0.0235471 -1.89041 0 0 0.0830673 -1.02639 0 -2.18306 0.0554679 0 0 0 0.0334868 -2.79954 0 0 0 0 -0.144282 0 0 0.102578 -0.589251 -0.621473 0 0.181462 0 0 0.0970199 0.0293858 0 0 -0.322875 -1.24935 0 0 -0.0922598 -3.74581 0 -0.912785 0.203864 0.269132 0.223141 0.209904 0.0266883 0 0.0908531 -0.162148 -0.108503 3.30434 0.182189 0.442693 0 0 1.21729 -0.245384 0 -0.10557 -0.576248 0.537887 0 0 0 0 -0.0251562 -0.544345 0 4.18519 -0.0388146 0 0 0 2.46787 0 0.626344 0.12489 0 0.211775 -0.362049 2.75496 0 0.317681 -0.527718 0.603566 1.59928 0 0 0 0.12268 0.0205813 0 0 0 -0.000433396 -0.0566418 0 -0.0004697 0 0.000104119 0.0226685 0 0 0 0 0.0251905 0 0.00456004 0 0.126041 0 0.0144561 -0.0253265 0 0.00165117 0 0 0.0727396 -0.00122453 -0.00836462 0 -0.00799121 0 -0.00397047 0.0167175 0.0102883 -0.0176995 0.00614371 0 7.46313e-06 0 0 0 -0.00056068 0 0 0.0025425 -0.00741788 0.0608832 -0.000934809 0 0 0.00651169 0 0.00580186 0 0 -0.048669 0.00345679 0.0225111 0.00428527 0 0 0.0409994 0.0279025 -0.00444196 -0.000429229 0.0157098 0 -0.0234509 -0.00811446 0.0956725 0 0 0 -0.104486 0 0.0135218 -0.0529701 0 -0.00156142 0.00559897 -0.0204985 0 0.00146306 -0.00557275 0.00885226 -0.0185272 0 0.688018 0.12268 -0.0849664 0.0205813 -0.127985 -0.019069 0.173974 0.0150595 -0.10347 -0.0201829 -0.00142408 0.192452 -0.00271739 0.0310669 0.0256464 -0.0165416 0.0216008 -0.139949 0.534538 -0.755451 -0.000620234 -0.122929 -0.0100815 -0.0228216 0.216115 -0.0773227 -0.146732 -0.0108324 0.356356 0.148642 0.380939 -0.743959 0.00349918 -1.40301 -0.0351595 0.00626299 0.00303754 0.0755729 0.00622873 -0.961028 -0.0100536 -0.00192985 -0.328489 0.830144 -0.000502824 0.0298647 -0.0903317 -0.0847978 0.0209585 -0.396731 0.618134 -0.124848 -0.0340683 -0.369279 -0.0497892 0.423831 -0.0223518 0.069018 0.159818 0.47355 0.79008 -0.242608 0.0067286 -0.108721 0.776478 0.0198078 -0.293605 -0.0356325 0.0871412 -0.0112261 -0.0714358 -0.085131 0.0468544 -0.066846 0.0547272 0.0191965 -0.931773 -0.0887781 3.65785 0.0867923 -0.0691146 2.26485 -0.0964758 0.137203 -0.333262 1.80254 0.0619881 -0.120351 0.285033 -0.372983 1.37344 0 +235 0 0 0 0 0 0.0107182 0.281365 -1.44212 -3.11346 0 0 -0.0310891 0.889347 0 1.10742 -0.189806 0 0 0 -0.521875 8.20945 0 0 0 0 -0.494237 0 0 -0.801045 -8.44758 0.460467 0 -0.873761 0 0 -0.265495 -0.076039 0 0 0.604281 2.02203 0 0 0.0723567 3.73782 0 0.758181 -2.50322 -2.17922 -0.0298262 -0.311554 -0.013393 0 0.720104 -0.367605 0.350199 -0.00757393 0.270996 -0.164831 0 0 0.0421472 -3.9221 0 -0.166425 0.0636576 0.82024 0 0 0 0 -0.409578 -0.105633 0 -2.89627 1.69422 0 0 0 5.1754 0 0.624215 8.8951 0 1.07743 -1.04965 11.0406 0 0.580767 0.122748 -1.79328 22.42 0 0 0 -0.254075 -0.0528934 0 0 0 -0.0199663 -0.000454604 0 -0.00291505 0 -0.0101877 -0.0381356 0 0 0 0 -0.00682854 0 -0.00390532 0 -0.164801 0 -0.0728135 0.162515 0 -0.000725394 0 0 0.0804616 -0.0034407 0.0313981 0 0.00355097 0 -3.75807e-05 -0.0435306 0.00549308 -0.048797 -0.0141428 0 -0.000714992 0 0 0 0.000249113 0 0 0.00963769 0.00117759 -0.00269363 -0.0268982 0 0 -0.0129691 0 0.00114721 0 0 0.0603806 -0.0271752 0.0618388 -0.0278401 0 0 0.0435149 0.001988 -0.006803 0.0187848 -0.0146644 0 -0.0132162 0.000430236 -0.577693 0 0 0 0.136115 0 0.0395625 -0.0687964 0 -0.00500925 0.00934852 0.00615557 0 0.00440914 -0.00784814 0.014778 -0.0192338 0 0.0107182 -0.254075 0.281365 -0.0528934 0.955753 0.271874 -0.405115 0.522739 -2.31212 0.0503072 0.00570431 -0.460518 0.00700681 -0.0766161 -0.0638637 -0.117986 0.000253479 0.328083 0.819688 1.63295 0.139812 -0.239051 -0.425464 0.102934 -0.0509115 -0.41989 -1.10733 0.0337031 0.750329 -0.0151102 1.23729 0.917533 -0.00903175 -0.879894 0.640755 -0.0658512 -0.000341036 0.0450344 0.0266474 -2.56459 -0.252222 -0.0641973 1.15978 2.10008 0.00127585 -0.0282813 0.276139 0.228213 -0.299705 0.491647 -0.823902 -1.78661 0.0369341 -0.242081 0.116003 -1.59447 -0.534956 0.931552 -0.124876 -0.119191 -0.440816 1.00522 -0.167207 0.300719 -0.282003 0.0663593 0.814834 0.0913569 0.141212 -0.28845 0.164103 0.138181 -0.109652 0.00248479 -0.106617 0.449478 -3.02639 1.03934 1.88731 -0.675262 0.359724 4.13326 0.22824 -0.212674 0.194547 2.07437 -0.145319 0.161537 -0.0100626 -0.471304 3.69413 0 +236 0 -0.251508 0.270142 -0.0038619 -0.04333 -0.134838 -0.0403002 0.474484 1.72359 -0.0291205 0.112707 -0.0159597 -0.0693386 0.000100693 -0.692879 0.000935078 1.86319 5.33751 0.0159129 0.00207579 0.583391 -0.00122483 -0.114189 -0.000129994 0.0209163 0.288578 0.685311 -0.001014 -0.0420989 0.146446 -0.171082 -0.00202698 0.0383965 0.102784 -0.0429644 0.099921 -0.000146112 0.0416375 2.2754 -0.0526641 0.00632945 0.00157009 -0.131693 -0.00274959 -0.365675 0.0225566 -0.130422 -0.0338269 0.0667113 0.0068136 -0.119781 0.216526 -1.34744 -0.00275506 0.00252505 -0.000331967 0.863735 -0.176063 0.0934686 -0.0423781 -0.00321582 -0.0827873 0.846751 1.12256 -0.0524968 0.0073431 -0.0768474 0.345804 0.0290739 0.00350874 0.216683 0.165607 0.0208475 -0.00703945 1.87488 0.526249 -0.0526876 -6.39299 -0.235442 -4.03637 -0.292764 0.301025 -3.18772 0.133721 -0.131583 0.069076 -2.40116 -0.00176464 0.00228419 -0.0269658 0.0510396 -0.275762 0 0 0 0 0 -0.0038619 -0.04333 -0.000941939 0 0 0 0 -4.92063e-05 0 0.00338074 0 0 -0.00109552 -0.00117722 0.00107196 0 0.000179937 -0.0027376 0.014146 0 0 -0.0133785 -8.26018e-05 0 -0.00062707 0.0541914 0 0 -0.000612259 -0.0157326 0 -0.00545401 0 -0.00114748 0 0 -8.32072e-05 0 0 -0.00294419 -0.000701275 -0.015613 0 -0.0134243 -0.00771965 0 0 0.0258856 0 -0.00191976 -0.00519835 0.00136907 0 0 0.00223276 0.00162249 0 -0.00348446 -0.0185681 -0.00366761 -0.000911328 -0.00382794 0.00563561 0 -0.00221547 -0.000715419 0.00919934 0.00239667 0.00360807 0 0 0 0.00470953 0.012195 -0.0108826 0.000260722 -0.0002999 0.000360904 0.00138261 -0.00159037 0.00191387 -0.00173404 0 0 0 0 0 0 -0.134838 0 -0.0403002 0 0 0 0 0.284236 0.0358695 0 0 0.0103551 0 0.00465489 0 0.0190098 0 0 0.0273696 0 -0.604074 0.114651 0.0801517 -0.0328201 0 0 0.16657 0 1.15818 0 0.246029 -0.16296 0 0.881173 -0.44656 0.0088053 0 0.0304589 0 0 0.00828183 0 0.247984 0.177415 0 0 -0.0419063 0 0 -0.109367 1.10536 -0.40144 0 -0.221943 0 0.0645761 0.0335283 0.0944143 0.090115 -0.230628 -0.484399 0.0784556 0.114114 -0.466423 0.12992 0.106876 0 0 0 0.041963 -0.00176801 0 0 0 0 0.0188427 -5.8158 0.249971 -3.1413 0.331698 -0.423919 0.252538 0.128596 -0.101165 0.0512653 -0.693034 0 0 0 0 0 0 +237 0 1.48387 0.258084 0.00918448 0.103049 0.109263 0.26463 -0.38143 -1.19067 0.0692553 0.126673 -0.141836 0.414583 -0.000239471 0.486205 0.0103779 0.228506 -2.44252 0.0366985 0.0121157 2.08479 0.0224252 -0.209324 0.000309155 0.0687815 -0.538924 0.434064 0.0242945 -0.43503 0.199002 0.349984 0.00482062 0.160288 -0.588892 -0.000114264 -0.34669 -0.00865747 0.138999 -3.93582 -0.045642 1.61324 -0.00373404 0.200508 -0.00201991 0.315563 -0.053645 1.18368 -0.127863 0.18181 0.00476406 0.356814 -0.148792 -0.304992 -0.0207964 0.0190602 0.0843634 -0.750852 -0.1488 -0.1615 -0.0555418 0.00764796 -1.20343 -1.18817 -0.272147 0.874731 0.00170863 0.0816014 -0.122524 0.147415 -0.00834461 -0.315912 -0.0508911 -0.031988 -0.0863118 -0.468159 -0.00768525 -0.323124 6.70381 -1.80417 4.89677 -1.0337 0.610701 3.047 -0.499439 0.28153 -0.0981966 1.09783 0.00419672 0.00125213 0.0427234 0.0449506 -0.374728 0 0 0 0 0 0.00918448 0.103049 -0.0013697 0 0 0 0 -6.37771e-05 0 0.00134648 0 0 0.00104298 0.00168444 -0.00134249 0 4.2204e-05 0.00528473 -0.00954635 0 0 0.0459553 0.000118192 0 0.0018596 -0.125817 0 0 0.00333604 0.0252543 0 0.0208652 0 0.00343709 0 0 0.000292044 0 0 0.175427 -0.000908934 0.0148642 0 -0.0195206 0.0196926 0 0 0.0048552 0 -0.00279157 0.0228577 0.00410751 0 0 -0.00212568 0.00235931 0 -0.00443632 0.0816206 0.00385368 0.00119275 0.0218138 0.00398176 0 -0.018183 -0.00561973 -0.0276215 0.00382369 -0.0208998 0 0 0 -0.280613 0.00552701 -0.0180686 -0.0155349 0.0178693 -0.0215041 -0.0013163 0.00151409 -0.00182208 0.00117021 0 0 0 0 0 0 0.109263 0 0.26463 0 0 0 0 -0.563171 0.735187 0 0 0.189715 0 0.0211776 0 0.0336674 0 0 -0.211154 0 -0.706152 -0.120834 0.238127 -0.00578159 0 0 0.321283 0 1.10587 0 -5.95397 0.521623 0 -1.05329 -1.54944 0.0260438 0 -0.0663659 0 0 0.0787234 0 0.470085 -0.425674 0 0 -0.0324035 0 0 0.0382943 0.771187 0.544137 0 0.359281 0 1.02547 0.104816 -0.208099 0.197676 0.01404 -0.107997 -0.509033 0.0756935 -0.33001 -1.94735 -0.0250439 0 0 0 0.0548167 -0.0454459 0 0 0 0 -0.143757 30.269 -0.115827 5.86023 0.682928 -0.887385 3.16217 -0.0923065 0.121102 -0.24947 0.797555 0 0 0 0 0 0 +238 0 0.352038 0.12759 -0.0152213 -0.170781 0.363761 0.0344008 -0.0820148 -1.53163 -0.114776 -0.101041 0.0707886 -0.480027 0.00039687 -0.187873 0.00134276 -0.262562 0.977558 -0.0206074 0.00913709 1.08428 -0.0299251 -0.0245668 -0.000512357 -0.132696 -0.330814 -0.151145 -0.0291442 0.422083 1.18639 -0.359767 -0.00798913 0.104561 -0.406664 0.0295873 -0.0241834 0.00612015 -0.182914 -2.56382 -0.0448431 0.490012 0.00618835 -0.252021 -0.00268698 0.471078 0.0889048 0.0400923 0.668041 0.282015 0.00688827 0.474894 -0.0313576 2.74285 -0.0123914 0.0113569 -0.115492 -0.896791 0.095159 -0.120471 0.182404 -0.0126748 -0.550507 -1.15413 0.274614 0.0546877 -0.0132528 -0.503146 -0.0377347 -0.253144 0.0138294 0.565845 0.0793308 0.134763 0.209634 -1.02093 -0.594692 0.387677 10.3034 3.57235 2.38514 2.21985 -1.32803 2.65722 0.972523 -0.491949 -0.0363505 1.27768 -0.00695515 0.00263772 -0.130112 0.0540124 -2.23401 0 0 0 0 0 -0.0152213 -0.170781 -0.000880062 0 0 0 0 -5.20748e-05 0 0.00148488 0 0 -0.00309191 -0.00376479 0.00358924 0 0.000116193 -0.00795503 0.0430618 0 0 -0.0377224 -0.000264164 0 -0.00114863 0.211593 0 0 -0.00540861 -0.0337574 0 -0.012607 0 -0.00377102 0 0 -0.000477981 0 0 -0.183989 -0.000742156 -0.0440651 0 -0.0125424 -0.034349 0 0 0.0462545 0 -0.00179365 -0.0197561 0.000644798 0 0 0.00630159 0.00151591 0 -0.00220779 -0.129443 -0.0100616 -0.00130428 -0.0329375 0.00383772 0 0.0158363 0.00103691 0.0567226 -0.0117538 0.035385 0 0 0 0.294309 0.0169779 -0.00748253 0.0162931 -0.0187414 0.0225536 0.00390217 -0.00448853 0.00540157 -0.00527858 0 0 0 0 0 0 0.363761 0 0.0344008 0 0 0 0 -0.592917 1.10768 0 0 0.450782 0 0.0458521 0 0.057902 0 0 -0.0853096 0 -0.0958508 -0.222388 0.155483 -0.000798299 0 0 0.540327 0 1.42611 0 -2.98019 -0.536177 0 -1.73104 -0.851272 0.0165129 0 -0.079899 0 0 0.117651 0 -0.44789 0.34146 0 0 0.0740122 0 0 0.0139942 -1.08183 1.05079 0 0.684992 0 -0.179681 0.286783 -0.546524 0.0612203 0.0160709 -0.114815 -0.128197 0.132847 -0.343034 1.47133 0.0277941 0 0 0 0.0139337 -0.0713111 0 0 0 0 -0.177671 7.07204 -1.70113 5.68446 0.558158 -1.08611 2.88909 -0.0475635 0.131363 -0.403741 1.42314 0 0 0 0 0 0 +239 0 -0.133808 -0.116087 -0.00754952 0.00808323 -0.0650697 -0.263203 0.58374 1.77954 -0.00978332 0.0899961 0.112937 -0.0591964 0.000664105 -0.502437 0.00633432 0.420076 2.47584 -0.019797 0.0144817 1.08378 -0.0206978 0.122523 -0.000568331 0.00127011 0.505688 -0.00171192 -0.0438107 0.55673 0.868706 -0.259321 -0.00509176 0.101132 0.259674 -0.127989 0.265654 0.00905029 -0.292848 1.03956 -0.0521107 -0.216517 0.00840746 -0.980014 -0.00474498 0.387261 0.104581 -0.501099 0.534712 0.136551 0.0200219 -1.63193 0.268273 -3.49663 -0.0122771 0.034918 -0.142007 -1.69761 -0.399678 -0.157857 0.00794064 -0.018373 0.032089 -0.152892 1.23569 -0.619719 0.253636 -0.702847 -0.128138 -0.312242 0.00224054 0.2606 0.197587 0.0586968 0.394042 0.940837 -0.237272 0.26985 2.76511 1.94636 -3.78998 1.75439 -1.50101 -1.05115 0.335683 -0.225796 0.00493578 -2.15918 -0.00994962 0.0117886 -0.151081 0.132022 -1.82341 0 0 0 0 0 -0.00754952 0.00808323 0.000849355 0 0 0 0 0.000133514 0 -0.0022664 0 0 -0.00125695 -0.0017266 0.000925313 0 -0.000223128 -0.00358846 0.00566571 0 0 0.0236871 -0.000121151 0 -0.00451208 0.546473 0 0 0.00535694 0.0293823 0 -0.041131 0 -0.00124357 0 0 0.000126667 0 0 -0.284909 0.00190281 -0.0179072 0 0.0121053 -0.0187391 0 0 -0.00503228 0 0.00175836 -0.0418824 -0.00299203 0 0 0.00257319 -0.00143875 0 0.00235314 -0.0932272 -0.0046858 -0.101171 -0.0192823 0.0184574 0 0.0143643 -0.0142207 -0.016799 -4.13385e-05 0.029916 0 0 0 0.49636 4.92971e-05 0.0379271 0.0127127 -0.0146104 0.0768233 0.00158795 -0.00182597 0.0021943 0.00104635 0 0 0 0 0 0 -0.0650697 0 -0.263203 0 0 0 0 0.359998 -0.549821 0 0 -0.123174 0 -0.0106235 0 -0.00403482 0 0 0.0947855 0 0.260759 0.120655 -0.0733063 0.0044876 0 0 -0.0341526 0 -3.70166 0 1.6403 -0.909806 0 0.923133 0.654195 -0.00801834 0 0.0566415 0 0 -0.0615751 0 -1.41527 -0.142341 0 0 -0.0237004 0 0 0.0482766 0.517535 -0.166195 0 -0.0321262 0 -0.323169 -0.0634595 0.107586 -0.00190247 -0.167096 -0.157681 0.300738 0.0522622 -0.128507 -0.758147 0.0623141 0 0 0 -0.106878 0.017997 0 0 0 0 0.114239 -4.85532 0.972373 -3.38477 -0.222298 0.439867 -1.45801 0.0972076 -0.0996721 0.166184 -0.69155 0 0 0 0 0 0 +240 0 0.783754 -0.0866499 0.00635965 0.0693803 -0.0208534 -0.0955821 0.71797 -0.0737964 0.0810279 0.112111 0.0668533 1.07097 -0.000199469 2.92698 -0.0124528 -0.181259 1.52439 0.0487491 -0.0310793 4.49668 0.014355 0.320674 0.000403555 0.0342729 0.334564 -0.309542 0.00314762 0.438634 0.464347 0.511313 0.00579357 -0.2209 0.0814308 0.0197602 0.335356 0.00478006 -0.0566954 -3.23261 0.126763 1.43074 -0.00184574 -0.107685 0.0106211 5.22159 -0.0139193 0.215814 0.515468 -0.481894 -0.0225984 0.0900417 0.105374 -2.49017 0.0685625 -0.0279849 0.0639222 -3.22051 0.181737 -0.115532 -0.0628096 0.00395307 -0.334552 -2.51453 0.648797 -0.126674 0.338237 -1.14736 -0.631166 -0.205787 -0.0154766 -0.144307 -0.0803686 0.0524829 0.133312 -4.3139 -0.420377 0.442266 10.5265 -0.0611661 2.58814 0.136891 -0.729082 3.69847 -0.0707731 0.101041 -0.193077 0.212486 0.00132425 -0.00726904 -0.00748022 -0.0917012 -0.974663 0 0 0 0 0 0.00635965 0.0693803 -0.00194046 0 0 0 0 -0.00016415 0 0.0054209 0 0 -0.00099164 -0.000649392 0.00134251 0 0.00039078 0.00466892 0.0270484 0 0 -0.0248607 -4.5564e-05 0 0.00262683 0.149971 0 0 -0.00883388 0.0325273 0 0.020865 0 -0.0015875 0 0 -0.00057812 0 0 0.145375 -0.00233943 -0.0141589 0 -0.0276569 0.00331433 0 0 0.0490801 0 -0.00406191 0.0102368 0.00423274 0 0 0.00197701 0.00324458 0 -0.0101963 -0.0116688 -0.00230878 -0.0865313 -9.39643e-05 0.0146481 0 -0.0105625 -0.00764687 0.0146129 -0.00614991 0.0029257 0 0 0 -0.234266 0.0262633 -0.0443962 -0.0132437 0.0151822 -0.0171476 0.00124551 -0.00143494 0.00173867 -0.00488114 0 0 0 0 0 0 -0.0208534 0 -0.0955821 0 0 0 0 0.0674369 -0.139173 0 0 -0.326263 0 -0.0279211 0 -0.0195355 0 0 0.263621 0 0.680911 -0.021476 -0.189856 0.0611126 0 0 -0.181463 0 2.90175 0 -3.3937 0.425345 0 -0.20941 -0.155259 -0.0186471 0 0.0179367 0 0 -0.0106657 0 1.04723 0.245472 0 0 0.0824141 0 0 -0.0453131 2.35859 0.0513378 0 -1.09821 0 0.77546 -0.109325 0.067234 -0.749637 0.27897 1.31991 -0.0487238 -0.272074 0.572918 -2.81224 -0.0878032 0 0 0 -0.065954 0.0393406 0 0 0 0 0.0127193 26.0642 1.12413 4.59663 0.441333 -0.443881 2.09046 0.0363564 -0.113813 0.303735 0.0784387 0 0 0 0 0 0 +241 0 0.774903 0.190165 -0.0215843 -0.137183 0.283732 0.00951263 0.0127536 -1.23833 -0.183064 -0.169036 0.017326 -0.468779 0.00112244 -0.99348 0.0247674 0.307148 2.56526 -0.0727273 0.0588716 -3.64266 -0.0498463 -0.129036 -0.00146284 -0.091792 -0.11788 0.0450799 -0.0684416 0.242238 1.44972 -0.477173 -0.0177376 0.381753 -0.860656 -0.143555 0.0690274 0.00358991 -0.322937 -5.62617 -0.206855 -2.0114 0.0126699 -0.781807 -0.019203 0.25088 0.136937 -0.959952 0.584203 0.729935 0.0503591 1.44806 -0.0801831 -2.86716 -0.118681 0.0806265 -0.297971 -3.21825 0.153209 0.178764 0.121276 -0.0273543 -0.695835 1.34704 0.437882 1.07416 -0.0567436 -0.191313 -0.329791 -0.360291 0.0353757 0.0958837 0.0084694 0.153458 0.263517 -0.521333 -0.0266555 0.0816851 25.9581 4.36296 6.61034 3.45191 -2.47534 7.42272 0.755444 -0.435465 0.145813 1.60286 -0.0130279 0.0220299 -0.212677 0.346148 -3.04296 0 0 0 0 0 -0.0215843 -0.137183 0.00279608 0 0 0 0 0.000342707 0 -0.00779996 0 0 -0.00148054 -0.00252379 0.00171938 0 -0.000834308 -0.00926541 0.0196162 0 0 -0.00428342 -0.000177089 0 -0.0060395 0.335893 0 0 -0.000438676 0.000579471 0 -0.0566052 0 -0.00214554 0 0 2.00199e-05 0 0 -0.480762 0.00488417 -0.0210708 0 0.0398517 -0.0368946 0 0 -0.0435266 0 0.00582158 -0.0690228 -0.007455 0 0 0.00306601 -0.00470536 0 0.0122179 -0.156592 -0.00569549 -0.0929183 -0.0393583 -0.000207023 0 0.0370308 -0.00240185 -0.00869187 -0.0124314 0.0495896 0 0 0 0.799809 -0.0212826 0.0544471 0.0339262 -0.0389671 0.0884046 0.00187507 -0.00215433 0.00257954 -0.00425964 0 0 0 0 0 0 0.283732 0 0.00951263 0 0 0 0 -0.782562 0.509951 0 0 0.416893 0 0.0373359 0 0.0368988 0 0 -0.0251393 0 -0.352178 -0.223735 0.209012 -0.0182943 0 0 0.337787 0 1.21286 0 -5.11483 -0.325469 0 -1.90172 -1.34716 0.0212008 0 -0.088929 0 0 0.0545497 0 -0.133357 0.339396 0 0 0.0145696 0 0 0.131797 0.815375 0.339184 0 0.26931 0 0.636936 0.159456 -0.305471 0.309985 -0.0010622 -0.356777 -0.383466 0.149983 -0.346139 -0.508635 -0.0456638 0 0 0 -0.025346 -0.0581583 0 0 0 0 -0.0754689 22.7433 -0.708775 7.11746 0.60419 -0.850509 3.30217 -0.0545749 0.16325 -0.44977 1.58308 0 0 0 0 0 0 +242 0 0 0 0 0 0.262311 0.20631 -1.29895 -2.9213 0 0 -0.497776 0.314566 0 -0.0466449 -0.0754477 0 0 0 -0.261988 -5.99925 0 0 0 0 -0.419328 0 0 -0.363108 -0.584199 0.0454593 0 0.18068 0 0 -0.258768 -0.0888048 0 0 -1.64387 -2.47734 0 0 -0.431358 1.51828 0 -0.695152 -0.28355 0.631231 0.828144 0.00609121 -0.239681 0 -0.229134 -0.34958 0.0507824 -0.0251059 -0.544583 -0.934879 0 0 0.26062 7.9951 0 -0.443149 0.0237531 0.495396 0 0 0 0 0.105696 -1.40896 0 1.46027 -0.481828 0 0 0 2.81493 0 1.09779 2.65793 0 0.789654 -0.169316 2.85092 0 1.98891 -1.24581 1.97204 0.791505 0 0 0 0.169497 0.0543416 0 0 0 0.0498633 0.0327633 0 0.00621177 0 -0.00551281 -0.0334869 0 0 0 0 0.0215239 0 -0.00881241 0 -0.0888666 0 0.362978 0.0182618 0 -0.000204048 0 0 0.0204172 -0.00161478 -0.0209261 0 0.00122385 0 0.00176053 -0.0970166 0.000156908 -0.0275906 -0.0231696 0 -0.000309402 0 0 0 5.19386e-05 0 0 0.00205817 -0.00153677 -0.291763 0.0297683 0 0 0.0236788 0 -0.00763551 0 0 0.000996372 -0.0198602 0.337737 0.00218198 0 0 0.00806796 -0.0532253 -0.0504189 0.0364236 0.0741999 0 0.23147 0.00329866 0.0669128 0 0 0 0.398531 0 0.0905882 -0.220298 0 0.00780396 -0.0240926 -0.0146448 0 0.000901246 -0.00265332 0.00102563 0.0226095 0 0.262311 0.169497 0.20631 0.0543416 0.111538 -0.0728698 0.331967 -0.656866 2.23417 -0.0714175 0.0440212 0.827655 -0.0123621 0.0983595 0.0611294 0.125777 0.024676 -0.369014 -1.0013 -0.229833 0.144038 -0.338091 0.602815 -0.153851 0.407601 0.0247484 1.08424 -0.0315547 0.301958 0.138128 2.30108 0.0939635 0.0096802 -1.38757 1.03525 0.0781382 -0.000408473 -0.140107 -0.0497479 -0.484729 0.25169 0.0207357 -0.0369093 -0.836911 0.00274379 0.0479476 -0.216754 -0.109187 0.108583 0.701086 -0.33218 1.44229 -0.228856 -1.87718 -0.0258698 -1.21282 0.718964 -1.19151 0.42394 0.43016 -0.572431 0.249806 0.0748924 0.230922 1.25277 -0.239784 -0.179336 -0.109253 0.334419 -1.11446 -0.192733 -0.127125 0.162663 0.068482 -0.103518 0.11382 -7.85382 -1.57926 0.972184 -0.786168 0.163663 1.9151 -0.482525 0.15212 0.328219 0.451439 0.454128 -0.33673 0.586981 -0.330431 0.492042 0 +243 0 0 0 0 0 -0.411696 0.00318343 0.462923 1.84755 0 0 0.256792 -0.201655 0 -0.307815 -0.0207396 0 0 0 -0.157903 1.77491 0 0 0 0 -0.0150842 0 0 -0.500461 -2.22846 0.149397 0 -0.62066 0 0 -0.0786681 0.0254225 0 0 0.975953 0.297735 0 0 0.146571 -1.49197 0 0.11894 -0.875643 -1.5774 -0.360107 0.172004 -0.437739 0 0.288629 -0.196414 0.298992 3.1674 0.452318 1.04949 0 0 -0.402983 -1.95581 0 0.710237 -0.246405 0.842871 0 0 0 0 -0.191997 -0.0577512 0 2.56478 0.981481 0 0 0 -2.90205 0 -0.813551 1.60151 0 -0.24021 0.839083 -2.06012 0 -0.513168 0.736544 -1.85519 5.66604 0 0 0 -0.143789 -0.0293294 0 0 0 -0.0434155 -3.31157e-07 0 -0.0042972 0 0.0011858 -0.0103149 0 0 0 0 -0.00768867 0 -0.00838811 0 0.028226 0 -0.361125 -0.176117 0 0.000313891 0 0 -0.032875 0.00109597 -0.0202039 0 -0.00259921 0 -0.000130934 -0.0972016 -0.00115706 0.0183788 -0.0164857 0 9.66411e-05 0 0 0 -0.00014156 0 0 -0.00484852 -0.0042787 -0.328108 -0.0196995 0 0 -0.0124561 0 -0.003563 0 0 -0.0149465 -0.0437635 -0.0931508 -0.0222165 0 0 0.0511215 0.0509875 0.0244248 0.0251891 -0.255117 0 -0.027634 0.00802822 0.248385 0 0 0 -0.818093 0 -0.10827 -0.159976 0 -0.0107105 -0.022772 0.0065818 0 -0.00108922 -0.00238491 -0.0033638 0.0608159 0 -0.411696 -0.143789 0.00318343 -0.0293294 0.297256 0.0139357 -0.0877173 0.695287 -1.31166 0.0322792 0.0125058 -0.216164 0.00478738 -0.0235575 -0.0149005 -0.0813621 -0.0119367 0.202164 0.280029 0.424951 -0.196247 0.226757 -0.481926 0.0567421 -0.150275 -0.00493558 -0.8968 -0.00217011 0.0599686 0.241705 -1.63141 1.0463 -0.00184427 1.57594 -0.967003 -0.0638539 0.00506741 0.10591 0.0481691 -0.203799 -0.136307 0.00124595 0.861182 0.115566 0.00250074 0.022908 0.0462669 0.00489268 0.0367185 -0.479302 -0.26125 0.233527 0.119916 2.68826 -0.0266196 1.15927 -0.655833 0.551008 -0.378729 -0.0477971 0.307426 -0.204694 0.0128078 -0.01975 1.68068 -0.0176996 -0.297262 0.0400366 0.0884603 0.478343 0.0997755 -0.0349068 -0.0587898 0.0921132 -0.0194988 0.411132 5.56817 0.487171 -2.63637 0.658843 -1.09431 0.680295 0.118355 -0.149595 0.159743 -0.782469 -0.248794 -0.00915267 0.0882107 -0.303557 0.378754 0 +244 0 0 0 0 0 -0.13717 -0.288516 0.805232 1.59058 0 0 -0.568004 -0.301691 0 0.176552 -0.100099 0 0 0 0.0757324 1.55788 0 0 0 0 0.494818 0 0 1.15518 6.25341 -0.413372 0 -0.0487461 0 0 0.36106 -0.102751 0 0 -1.99267 1.04982 0 0 -0.486854 1.12255 0 -0.22972 2.36471 1.7971 0.901276 -2.1881 0.648092 0 -0.0252895 0.00449571 -0.0971391 -0.0609441 -0.693334 -0.375259 0 0 -0.856283 -0.482669 0 0.13148 0.965241 -0.892001 0 0 0 0 0.167495 -1.45705 0 -0.168528 -0.223633 0 0 0 -2.0821 0 2.39043 -7.69434 0 0.714953 -0.306771 -4.75845 0 1.27585 -1.4384 4.00775 -13.8606 0 0 0 0.210959 0.0881666 0 0 0 -0.0371793 0.0644068 0 -0.00204045 0 -0.00786112 -0.0544598 0 0 0 0 -0.000631518 0 -0.0176256 0 -0.207059 0 -0.489898 -0.237529 0 -0.0053295 0 0 -0.33889 -0.00197423 -0.0470264 0 0.00549934 0 0.00311013 -0.0448205 -0.0438622 -0.0330412 -0.0196261 0 -0.00046055 0 0 0 0.000254946 0 0 0.00707674 -0.00035538 0.0779126 0.034257 0 0 -0.00968473 0 -0.00952357 0 0 0.0393485 0.0024004 -0.0514069 0.0149247 0 0 -0.108794 -0.0999027 0.0296882 -0.125137 0.240396 0 0.0775499 -0.0144675 -0.0827075 0 0 0 1.65012 0 0.162922 0.577331 0 0.0153923 0.0304349 0.0464336 0 0.00155185 0.00350247 0.00529573 0.173835 0 -0.13717 0.210959 -0.288516 0.0881666 -0.522286 -0.157105 0.237092 0.237288 -0.167713 -0.140087 0.111841 -0.241457 -0.0219552 -0.0343712 0.0774325 -0.0333071 0.0506179 -0.850787 1.54255 -1.65368 0.00600293 0.219625 0.149298 0.270707 0.85477 0.208266 -0.336548 -0.0132907 0.475903 0.0833994 0.0665042 -0.762812 0.0145584 1.15906 0.199331 0.0288734 0.00251979 0.0650433 -0.000977509 1.4019 -0.0060604 0.0287351 -0.319649 1.88424 0.00779323 0.0298586 0.390522 -0.171557 0.14384 1.30561 -0.241288 0.202044 -0.217127 0.415008 -0.00926655 0.437399 0.178532 -0.0412085 -0.126357 -0.385084 -0.883754 -0.227543 0.221631 0.30824 -2.13312 -0.0899018 0.323195 -0.164568 -0.221785 -0.163669 0.129904 -0.0823686 0.313393 0.104248 0.0656536 -0.0592296 -0.226986 0.407239 -1.33539 1.41099 0.246845 -2.67434 0.210256 0.0578537 0.00148754 -1.07296 1.04702 -0.407965 -0.118187 0.3793 -1.35159 0 +245 0 0.636154 0.394873 0.0112907 0.108764 0.125808 0.09183 0.164964 -0.914224 0.225679 -0.449071 -0.0604012 -0.432218 -0.000193989 -0.00468364 0.00093279 0.527215 3.1077 -0.0197721 -0.00885291 3.25527 0.00431254 -0.372816 0.00105002 -0.0859486 -0.363104 0.223595 0.00782578 0.106923 0.740306 -0.127431 0.0158673 -0.0212136 -1.20013 0.090731 -0.0894485 -0.00867639 -0.0456524 -5.74035 -0.0154851 1.56401 -0.00309288 0.236809 -0.00822794 -0.0960349 -0.0383226 0.610971 0.397438 -0.145056 0.0588932 0.290926 -0.287513 -2.48472 0.0028086 -0.00544418 -0.0333917 1.45244 -0.65054 -0.00223301 0.223781 0.0141936 -1.02887 -1.92497 -0.508164 0.625819 0.160434 -0.831035 -0.422504 -0.208766 -0.0464192 -0.54084 -0.382838 -0.0780318 -0.0738057 1.03244 -0.0958367 -1.8016 16.6316 1.45202 5.29274 1.66249 -1.23529 4.87769 0.469447 -0.270649 0.210798 0.907128 0.00508232 0.00125539 -0.0205871 0.00710148 -1.1012 0 0 0 0 0 0.0112907 0.108764 -0.000338428 0 0 0 0 -5.29074e-05 0 -0.00522517 0 0 -0.000785732 -0.00117272 -0.00414483 0 -0.000590281 0.00249195 -0.0369971 0 0 0.171086 -6.74642e-05 0 0.00102493 0.290435 0 0 0.0150241 0.0278572 0 0.0142418 0 0.012528 0 0 0.000926846 0 0 -0.109116 -0.00100041 -0.0138505 0 -0.00624416 0.0056449 0 0 0.0425695 0 -0.00106886 0.073064 -0.00225538 0 0 0.00138923 -7.5834e-05 0 0.00127633 0.0103199 0.00788394 0.2247 -0.00309058 -0.0194107 0 -0.00413245 -0.0384756 0.157281 -0.0439827 -0.0413852 0 0 0 1.352 0.124668 0.0689567 0.00700619 0.00612058 0.00526704 0.000527816 0.00045799 0.00125063 0.0195032 0 0 0 0 0 0 0.125808 0 0.09183 0 0 0 0 -0.0591604 -0.962753 0 0 -0.275434 0 -0.0234362 0 -0.0793945 0 0 0.723156 0 -0.719625 -0.00941339 -0.205919 0.0629473 0 0 -0.655313 0 3.12762 0 -3.63825 -0.434151 0 -0.444271 -1.5606 -0.0214802 0 0.0141117 0 0 -0.117174 0 -0.19148 1.77734 0 0 0.159218 0 0 -0.172661 0.437899 0.121999 0 -0.103721 0 1.51525 -0.44189 0.203913 -0.649009 0.268948 1.1235 -1.26215 -0.173576 -1.10989 -6.16974 -0.188912 0 0 0 0.158191 0.108474 0 0 0 0 -0.033984 9.09966 -1.45138 4.79737 1.19126 -0.877615 1.44314 0.101004 -0.0729971 0.0213039 0.305498 0 0 0 0 0 0 +246 0 -0.558079 0.154859 -0.0225588 -0.110603 0.140259 0.139735 -0.757432 -1.86541 -0.27941 0.753924 -0.164012 -0.724701 0.000530589 -0.465626 -0.00502438 0.161133 0.241345 0.173562 0.0110052 1.67124 0.013444 -0.336408 -0.00190727 0.0958308 -0.557353 0.353988 0.0435844 -0.0276715 0.59439 -0.158362 -0.0244889 0.0750081 -0.47267 0.287493 -0.279464 -0.0164722 0.143603 0.146945 -0.255321 1.01777 0.00574283 0.582013 -0.0262355 -0.78856 0.0685352 0.605118 0.199256 0.310022 -0.0188593 0.148915 0.00157918 2.9847 -0.114974 0.0240387 0.0926268 2.12038 0.710134 -0.120622 -0.177611 0.00887146 1.22498 -0.0216562 1.2591 -0.193905 -0.152434 0.249031 0.127199 0.139575 0.0926927 -0.386424 0.311962 0.011396 -0.225736 -0.465824 0.0269427 0.32799 -2.45821 -0.660176 1.29365 0.86698 -0.174265 -0.775061 -0.0247028 0.135417 -0.912951 1.93495 -0.00908911 0.0165215 -0.0903869 0.18635 -0.884154 0 0 0 0 0 -0.0225588 -0.110603 0.00142368 0 0 0 0 0.000133909 0 -0.0203617 0 0 -2.08661e-05 -0.000478098 -0.0100165 0 -0.00213955 -0.0107516 -0.0892311 0 0 -0.221888 -1.78807e-05 0 -0.00268599 -0.471174 0 0 -0.0337804 -0.1085 0 -0.0625712 0 -0.025514 0 0 -0.00390407 0 0 -0.32542 0.00269238 -0.00122657 0 0.0292163 -0.00169243 0 0 0.140033 0 -0.00182753 0.0486584 -0.00120801 0 0 -0.000984061 -0.00554176 0 0.00370013 0.0362434 -0.00307152 -0.285279 -0.0219391 0.0089122 0 0.00103096 -0.00819136 -0.0411362 0.0284001 -0.0658328 0 0 0 0.254098 -0.0378926 0.0185407 -0.00261929 -0.00241055 0.0516589 -0.000136154 -0.000129013 0.000295899 0.034408 0 0 0 0 0 0 0.140259 0 0.139735 0 0 0 0 -0.315531 0.66586 0 0 0.745942 0 0.0869498 0 0.0599327 0 0 0.201757 0 -0.31136 -0.0284166 0.435587 0.0409655 0 0 0.545514 0 2.71992 0 2.83281 -0.113356 0 -0.534406 0.456256 0.0505747 0 -0.0283255 0 0 0.075301 0 0.437782 1.07861 0 0 0.143229 0 0 -0.0232757 2.0844 0.36558 0 -0.41593 0 0.339338 0.559651 -0.461545 0.242514 0.11039 0.279942 -0.0428035 0.133917 1.25436 6.60112 -0.00294596 0 0 0 0.349811 -0.161286 0 0 0 0 -0.423938 -10.2455 -2.55385 1.27462 -0.931379 0.543394 -0.804429 -0.369591 0.273883 -0.295996 0.27293 0 0 0 0 0 0 +247 0 -0.176802 0.160631 0.00932301 0.0956879 0.0423946 0.258876 -0.259741 0.0660077 0.166942 -0.743034 -0.322848 0.682574 -0.000676409 0.635868 0.00901045 0.461574 -0.371561 -0.216477 -0.0055415 -0.628137 -0.0395194 -0.12193 0.000432178 -0.152902 -0.157739 0.431341 -0.0714801 -0.62815 0.0520276 0.367437 0.0100683 0.211781 0.00651057 -0.468229 -0.287424 -0.0344667 -0.332714 0.266562 -0.352751 0.0397541 -0.0124073 -1.46519 -0.0437258 2.0701 -0.180784 0.589797 -0.425559 -0.0354107 0.16206 -0.709673 -0.197986 3.96116 -0.0187354 -0.0313088 -0.00760937 0.944426 0.0918235 0.107853 0.338046 0.0369836 -0.136177 -0.0527275 -0.0886863 -1.00358 0.455141 0.32104 0.795479 -0.430256 -0.0580029 0.591176 -0.129175 -0.0707698 0.547891 -0.180293 0.346847 0.466006 -0.879122 1.31444 -1.4959 0.717529 -0.428472 0.83406 0.118992 -0.127194 0.725233 -0.293392 0.0239756 0.0244691 0.131008 0.262048 -0.0773909 0 0 0 0 0 0.00932301 0.0956879 -0.000773276 0 0 0 0 -0.000134876 0 -0.0226195 0 0 -0.00127965 -0.00175392 -0.0192743 0 -0.00285698 0.00148363 -0.161892 0 0 0.00504858 -0.000109557 0 0.00538798 -0.343488 0 0 -0.0144074 -0.011271 0 0.0140762 0 0.00155249 0 0 -0.00184545 0 0 -0.398061 -0.00254043 -0.0210586 0 -0.013982 0.0213986 0 0 -0.0287966 0 -0.00108232 0.0749507 -0.00296577 0 0 0.00395953 0.00155939 0 -0.00627869 -0.019443 0.0137095 0.102119 -0.00521142 -0.0159064 0 0.0011335 -0.0369664 0.0390204 -0.0225386 -0.114431 0 0 0 4.24359 0.321843 0.57098 0.0208569 0.0188151 0.141193 0.00110131 0.000973377 0.001599 0.0578958 0 0 0 0 0 0 0.0423946 0 0.258876 0 0 0 0 -0.142781 0.117791 0 0 0.079333 0 0.0128931 0 0.0287369 0 0 -0.443732 0 -0.308379 -0.0159709 0.246688 -0.0519576 0 0 0.25224 0 0.531097 0 -0.0172324 0.868276 0 0.0697056 -0.29164 0.0350181 0 -0.0303011 0 0 0.00941056 0 1.02131 -0.213679 0 0 -0.0291918 0 0 0.0719394 -0.0375027 -0.0615039 0 0.863754 0 0.0939685 -0.175086 0.0663164 0.362138 -0.0500075 -0.341401 -0.233573 0.0389095 0.180846 5.55791 0.0419438 0 0 0 -0.0571154 -0.00720189 0 0 0 0 0.0978732 2.02181 -0.111677 0.403621 0.147759 -0.138572 0.181563 0.0147148 -0.0140286 -0.0259355 -0.0137661 0 0 0 0 0 0 +248 0 0.371147 -0.0348113 0.0345919 0.0743965 -0.00410588 -0.201113 0.800267 0.381708 0.155892 -0.400781 0.174049 -0.164083 -0.00858438 -1.20405 -0.00273901 -0.169069 1.70253 -0.114442 -0.0150619 -0.962468 -0.0319199 0.207286 0.00937802 -0.18514 0.368521 -0.28879 -0.0158281 0.423394 -0.432494 -0.275481 0.0472117 -0.0157537 0.0421726 -0.0738309 0.351208 0.0243948 0.0253715 -1.61254 0.559744 -0.712345 -0.0513206 0.319159 0.090549 -1.71764 -0.292372 -0.576385 0.26128 0.0514373 -0.292776 -0.594568 -0.110709 -2.39919 -0.118097 -0.0199307 0.114465 -0.566136 -0.0388334 0.607782 0.227704 0.114617 -0.384295 -0.781736 -0.226601 0.381823 -0.00118048 -0.555693 -0.172418 0.190193 -0.0636244 0.0335598 -0.273872 0.469296 -0.430157 1.10655 -0.65152 -0.423532 -0.823371 0.161219 1.32855 -0.17431 0.248629 0.782709 0.469632 -0.0425291 0.002691 -0.164509 0.262564 -0.383831 0.510982 -0.802468 0.937205 0 0 0 0 0 0.0345919 0.0743965 -0.000514516 0 0 0 0 -0.000293898 0 0.0094172 0 0 -5.04248e-05 -0.00073917 0.00931316 0 0.00164299 -0.0706923 0.0550725 0 0 0.130806 -4.10757e-05 0 0.0143128 -0.42642 0 0 0.0128056 -0.213657 0 0.116413 0 0.0309943 0 0 0.00310626 0 0 0.320937 -0.00551851 -0.00057297 0 -0.00931763 -0.00863177 0 0 0.213713 0 -0.0025478 0.152802 -0.0026005 0 0 -0.000421575 -0.000504861 0 0.0134462 -0.00291708 0.00600997 -0.273588 -0.00449905 0.00139024 0 -0.00353903 -0.00214435 0.215917 -0.0798916 0.0115235 0 0 0 -2.91472 -0.14401 -0.42742 -0.0135572 -0.0119944 -0.0145771 -0.000124339 -0.000116579 0.000199709 -0.00142033 0 0 0 0 0 0 -0.00410588 0 -0.201113 0 0 0 0 0.132148 -0.0979574 0 0 -0.437876 0 -0.0403256 0 0.000173456 0 0 0.269289 0 0.0305096 0.0227765 -0.301009 0.0497105 0 0 -0.0676763 0 2.90905 0 -2.1521 0.0477266 0 0.0282387 -0.802958 -0.0316289 0 0.0160392 0 0 0.00351902 0 0.509146 0.488542 0 0 0.0873681 0 0 -0.585405 -1.51269 0.166812 0 -0.33772 0 1.06792 -0.115489 -0.00489567 -0.252166 0.14532 0.356035 -1.02749 -0.0902096 -0.452353 -5.43739 -0.133261 0 0 0 0.393048 0.102062 0 0 0 0 -0.295015 -2.24675 -1.3631 2.43615 0.313067 -0.416505 0.811976 0.170139 -0.140627 0.122589 0.0358332 0 0 0 0 0 0 +249 0 -0.530754 -0.376752 -0.0196158 -0.141726 0.0215072 -0.237541 0.362656 0.887791 0.08604 0.451304 -0.0146735 0.68088 0.00422473 0.484387 0.0181065 -0.0823301 0.879231 -0.0762363 0.00856398 -1.02384 -0.00917014 0.45603 -0.000635581 0.0789324 0.714156 -0.280302 -0.025916 0.556437 0.272131 -0.0590085 0.00284526 0.193941 0.952311 -0.377402 0.408358 -0.010199 0.0434473 3.78808 -0.221847 -0.895996 0.0371987 -1.00384 -0.0316591 2.49483 0.335089 -0.677807 0.424125 0.114363 0.132321 -0.860853 0.0266443 6.23145 0.0949386 0.14594 -0.167951 0.0875932 0.0632625 -0.587655 -0.194351 -0.0949328 2.10461 1.86018 1.24953 -0.129979 0.272294 0.839554 -0.103748 -0.130753 -0.0937059 -0.0248588 -0.0831959 -0.167872 0.0348029 -0.127934 -0.00439845 1.27612 -9.88533 0.174818 -4.73361 -0.944358 1.01891 -4.05189 -0.293444 0.155428 -0.276568 -1.00527 -0.300926 0.251465 -0.48526 0.36369 -0.589704 0 0 0 0 0 -0.0196158 -0.141726 -0.00184974 0 0 0 0 -0.000279222 0 0.00156506 0 0 0.00232477 0.00579393 0.00659196 0 0.00102101 0.00968654 0.0234802 0 0 -0.128768 0.000326235 0 0.0139978 -0.12282 0 0 -0.0150855 0.00377046 0 0.041996 0 -0.0140405 0 0 -0.00150676 0 0 0.327615 -0.00546666 0.0405836 0 -0.0361741 -0.0440591 0 0 0.213984 0 -0.00230676 -0.250147 0.00198975 0 0 -0.00545085 0.00414701 0 0.0116693 0.0469105 -0.0172777 -1.03806 -0.0369462 0.0427675 0 -0.00799436 0.00806976 -0.160378 0.0373218 0.0426602 0 0 0 -6.0757 -0.516065 -0.582957 -0.0327688 -0.0291468 -0.0080004 -0.00184034 -0.00161434 -0.00336709 0.00281779 0 0 0 0 0 0 0.0215072 0 -0.237541 0 0 0 0 0.0770314 -0.0440698 0 0 0.260776 0 0.0338005 0 0.0222815 0 0 -0.382138 0 0.68272 0.0416965 0.128691 -0.0610036 0 0 0.257224 0 -2.53162 0 4.13251 -0.591545 0 0.350156 1.4922 0.0166288 0 -0.00535265 0 0 -0.0159366 0 -0.980187 -0.445438 0 0 -0.0774026 0 0 0.19899 1.96276 -0.156011 0 -0.248605 0 0.118082 0.030266 0.0190293 0.63584 -0.0649776 -0.571589 0.310298 0.204934 0.734202 5.78698 0.0340508 0 0 0 -0.298868 -0.0954391 0 0 0 0 0.263024 -12.5716 -0.839605 -1.60426 -1.46405 1.05611 -1.4993 -0.168113 0.140251 -0.129643 -0.0881734 0 0 0 0 0 0 +250 0 -0.596487 -0.263589 0.0874824 0.249556 -0.278107 -0.0908482 0.265473 2.47281 0.421479 -1.6274 0.363651 0.333679 -0.0206767 -0.210921 -0.0423608 0.24016 1.06361 -0.225681 -0.107502 -3.07423 -0.0357741 0.430051 0.0213243 -0.376117 0.582311 -0.227861 -0.0138971 -0.348464 -2.15726 0.241799 0.109809 -0.22109 1.26303 0.343056 0.148835 0.0626191 -0.0509001 5.33093 1.05501 -1.10512 -0.12787 1.43106 0.185472 -1.5516 -0.766136 -0.279584 -0.895421 -0.37298 -0.541937 0.450662 -0.372471 3.33962 0.337562 -0.399298 0.317128 1.62341 0.140564 -0.118907 0.495022 0.301609 0.96153 1.83403 -0.324027 -0.68891 -0.363467 1.08694 0.104653 -0.0864803 -0.141555 0.758911 -0.426902 0.55995 -0.0515396 1.57107 0.0728253 -0.658414 -16.7434 2.14328 -8.35952 -0.695664 0.326008 -3.01608 0.824962 -0.60332 1.31467 -1.48584 0.688026 -0.820913 1.79876 -2.1207 4.67475 0 0 0 0 0 0.0874824 0.249556 0.000754205 0 0 0 0 -0.000443355 0 -0.00439708 0 0 -0.0010461 -0.00432641 0.00130047 0 0.000421032 -0.0733665 -0.0465079 0 0 -0.046019 -0.000245844 0 -0.0271527 -0.415245 0 0 -0.00894446 -0.146905 0 0.0255395 0 0.0328835 0 0 0.00299543 0 0 0.0573813 -0.00807458 -0.016439 0 0.0179682 -0.0102491 0 0 0.0324931 0 -0.00438906 -0.193071 -0.00431855 0 0 0.00266507 -0.00555444 0 -0.00190819 0.055099 0.0140372 0.627979 -0.0475693 -0.0291876 0 0.00458101 -0.0102372 0.209834 0.00640662 -0.10541 0 0 0 2.24073 0.215255 0.294551 0.0141349 0.0128946 0.0176779 0.000676085 0.000589593 0.00143412 0.0146135 0 0 0 0 0 0 -0.278107 0 -0.0908482 0 0 0 0 0.520753 0.870905 0 0 -1.04187 0 -0.139335 0 0.0353924 0 0 -0.836614 0 0.674254 0.18625 -0.45787 -0.0984772 0 0 0.270461 0 -2.0742 0 3.1911 0.574893 0 1.40688 1.33337 -0.0623338 0 0.0704105 0 0 0.10491 0 0.260569 -2.13763 0 0 -0.246921 0 0 0.0529088 -1.52815 -0.348818 0 1.74923 0 -0.545897 -0.174955 0.210465 0.558528 0.030841 -0.512489 0.191211 -0.18873 -0.946119 2.86921 -0.191488 0 0 0 -0.124516 0.307563 0 0 0 0 0.0280393 -7.3103 3.43074 -4.87875 -0.852241 0.807549 -1.37119 0.674498 -0.489765 0.429388 -0.627709 0 0 0 0 0 0 +251 0 0 0 0 0 0.0181512 -0.264104 0.642329 2.01104 0 0 0.0306374 -0.770399 0 -0.495419 0.0151095 0 0 0 -0.0361999 -4.02414 0 0 0 0 0.510051 0 0 0.312902 2.19038 -0.364653 0 0.250457 0 0 0.217097 0.00214117 0 0 -0.415473 -1.81174 0 0 -0.0479464 -2.02005 0 -0.890332 0.573337 -0.0222368 0.0973771 -1.94927 0.223766 0 0.0641813 -0.129368 0.308992 -2.01395 -0.748046 -1.34355 0 0 -0.784841 2.92719 0 -1.08149 0.0116287 -1.45397 0 0 0 0 0.378494 -0.22768 0 -0.563604 -0.966071 0 0 0 -4.73592 0 0.545757 -5.32462 0 0.191012 -1.02227 -6.58236 0 0.385531 -1.44703 1.98757 -9.82344 0 0 0 0.101029 0.0029169 0 0 0 -0.0144844 0.00366164 0 -0.00116491 0 -0.000260364 0.00816108 0 0 0 0 0.0917139 0 0.00457878 0 0.151375 0 -0.142062 -0.0942476 0 0.000216261 0 0 -0.0090668 -0.000282574 -0.00433736 0 0.000368056 0 0.000264247 -0.00169375 0.00185425 -0.00387411 0.000236876 0 -1.89168e-05 0 0 0 2.67122e-05 0 0 0.000834347 0.000355595 -0.0739966 -0.00401917 0 0 -0.00246402 0 -0.000483491 0 0 -0.004737 0.00366811 -0.000287035 0.0037357 0 0 -0.0443034 -0.00435082 0.000231085 -0.00286954 0.0740497 0 -0.00200071 -0.000493473 -1.56647e-07 0 0 0 -0.226572 0 0.00829174 0.00314715 0 -0.000700487 0.00126192 -0.0307233 0 0.000387463 -0.00068158 0.00288775 -0.00420406 0 0.0181512 0.101029 -0.264104 0.0029169 -0.101339 -0.081748 -0.0100363 0.589572 0.36135 0.00121209 0.00455906 0.362126 8.12565e-05 0.0178487 -0.00128528 0.0104471 0.0030477 0.0141289 0.248644 -0.565695 0.102334 0.350123 0.0837701 0.0465686 -0.0140361 0.203566 0.160031 0.003978 3.8382 -0.240156 1.91148 -0.143054 -0.000100135 0.847499 0.548983 0.00422757 -0.00259846 0.143913 -0.0262213 0.949683 0.0191354 0.0323486 0.737357 0.235629 0.00240233 -0.0273714 0.150334 -0.0152371 -0.0136395 0.0281291 1.85759 0.479275 -0.02969 -0.40422 0.00610253 -0.538585 -0.0137805 -0.0438544 -0.0755975 -0.0586917 0.592123 0.078855 0.153945 -0.0711819 1.46912 -0.024398 -0.796739 -0.0221754 -0.163546 -0.362219 -0.033852 0.0687454 -0.00639704 -0.104082 0.0524664 -0.0387533 -15.4768 -1.96267 -3.56461 -0.144579 0.930193 -5.38054 -0.020225 0.238774 -0.913234 -0.798108 -0.00129176 0.146558 -0.397652 0.419207 -1.36446 0 +252 0 0 0 0 0 0.416611 -0.0322213 -0.567782 -1.84752 0 0 -0.180512 -0.319392 0 -0.247195 -0.032251 0 0 0 -0.161829 6.57552 0 0 0 0 -0.0162663 0 0 0.477918 -5.06048 -0.505001 0 -0.12537 0 0 0.0820646 -0.0328575 0 0 -0.0121371 0.268831 0 0 -0.0778889 2.05559 0 -0.988137 -0.423496 -0.261366 0.100286 -0.803455 -0.043166 0 0.205412 -0.0402105 -0.353551 1.28633 0.494713 0.386897 0 0 0.338517 -0.997495 0 -1.50493 -0.324114 -0.352668 0 0 0 0 -0.146498 -0.598212 0 -0.175324 0.968381 0 0 0 4.09603 0 0.402261 8.3374 0 0.100355 0.623161 6.77263 0 0.355367 -0.0110818 0.383057 13.8111 0 0 0 -0.100049 -0.00599664 0 0 0 0.00212959 0.0117123 0 -0.000302955 0 0.000540941 0.00708028 0 0 0 0 0.00462644 0 0.00191527 0 0.0562216 0 0.0426606 0.0524816 0 -2.25366e-05 0 0 -0.0113926 0.000801047 0.000287522 0 0.00154191 0 0.000867583 -0.00805737 0.000263458 0.0107254 -0.00113829 0 3.94935e-05 0 0 0 0.000112128 0 0 -0.00281737 0.00250733 -0.00722016 0.0150358 0 0 0.00110213 0 -0.000458589 0 0 -0.00994865 -0.0149489 0.0201284 0.00934572 0 0 0.00268462 -0.00345117 -0.00543396 0.00700018 -0.0422414 0 -0.0211947 -0.00147754 0.0517434 0 0 0 -0.136551 0 -0.0246826 0.0491567 0 0.00213743 -0.00503848 -0.0110947 0 -0.00114604 0.00230992 -0.00911578 0.0178249 0 0.416611 -0.100049 -0.0322213 -0.00599664 0.897349 0.278446 -0.0444114 0.0757659 -0.283638 0.00231586 0.00845717 0.265367 0.000143502 0.0185786 -0.00288743 -0.00335507 0.0137841 0.037893 0.795393 1.99874 0.331873 -0.204695 0.129641 0.129447 0.0946549 -0.385112 -0.123227 0.0299325 -0.197447 0.165291 3.55766 -0.617011 -0.000185433 -0.131616 1.21647 0.00814694 0.00191927 -0.060756 0.0249697 -2.16319 -0.010545 -0.0603435 -0.302927 2.05467 0.0013853 0.0178578 0.294409 0.2422 0.0913402 0.266365 -0.909763 0.136192 -0.0117285 0.139129 0.00441157 -2.32671 -0.015334 -0.247577 -0.251626 -0.424119 -0.572108 0.0923198 -0.0989143 -0.351276 -7.28937 0.0381415 -0.0326372 0.0697944 0.116771 0.086203 -0.0410426 -0.0291085 -0.00413371 -0.0457447 -0.150326 -0.0119956 -28.8056 -1.99866 -1.95842 -0.316039 -0.163525 3.44972 -0.0219762 0.0327095 0.153117 1.01623 -0.00346444 0.0185774 0.124751 -0.354078 3.11887 0 +253 0 0 0 0 0 0.915882 0.350563 -2.42735 -6.0866 0 0 -0.146479 0.774747 0 0.270097 -0.00107763 0 0 0 -0.0559847 0.12147 0 0 0 0 -0.803464 0 0 -0.41617 -2.07666 0.311444 0 -0.367282 0 0 -0.403289 0.0250936 0 0 -0.504072 0.424507 0 0 0.0265166 1.52021 0 0.604891 -0.682294 -0.984688 0.17836 -1.43621 0.142841 0 0.249961 -0.176561 -0.0627466 -1.11635 0.739678 0.394921 0 0 2.34409 -3.90332 0 0.152023 0.310711 2.08229 0 0 0 0 -0.305993 -1.03712 0 -3.19235 0.755601 0 0 0 15.6967 0 1.75576 7.33946 0 0.271269 1.15924 14.6664 0 -0.450541 1.97319 -0.216778 13.6548 0 0 0 0.194229 0.0180915 0 0 0 0.0302591 -0.0377413 0 0.00344376 0 0.00119034 -0.0331249 0 0 0 0 -0.137841 0 -0.0128348 0 -0.350419 0 0.251377 0.14921 0 -0.00121739 0 0 -0.146694 0.00108784 0.0135855 0 -0.00456913 0 -0.00275858 0.00223681 -0.0146556 0.0152792 0.00111638 0 8.6226e-05 0 0 0 -0.000331942 0 0 -0.00225847 -0.00565399 0.18087 -0.00121586 0 0 -0.0169264 0 0.0036397 0 0 0.00647149 -0.00209211 -0.0504086 -0.0215502 0 0 0.125542 0.0223752 0.00931158 0.0863008 -0.00694877 0 0.10676 0.00266033 -0.0739351 0 0 0 0.707405 0 -0.0287209 0.276194 0 0.00230594 -0.022051 0.185876 0 -0.00135902 0.012946 -0.0302713 0.107475 0 0.915882 0.194229 0.350563 0.0180915 0.142107 -0.0481362 0.145086 -0.548598 -0.271313 -0.00818704 -0.0280189 -0.352309 -0.000563134 -0.0362475 0.0106131 -0.0212677 -0.0271334 -0.111478 -0.670007 -0.725246 0.358225 -0.601648 -0.0804346 -0.118935 -0.187993 -0.133829 -0.371595 -0.0191066 -7.11441 -0.132895 2.09959 0.218014 0.000733625 -2.55809 1.27093 -0.00958593 -0.00237167 -0.164447 -0.0112147 -0.615663 -0.00781887 -0.0221785 -2.02729 -1.72688 -0.00485953 -0.0217344 -0.364761 -0.127865 -0.01277 0.319448 -1.35598 -0.253087 0.0497201 0.906178 -0.0178907 1.14427 0.0209391 0.10707 0.217044 0.375833 -0.041345 -0.0248428 0.0335698 0.236172 3.0433 -0.0608104 0.461926 -0.0959886 0.108436 0.152654 0.0920619 0.0871816 0.0162344 -0.262808 0.0205225 -0.00106692 -16.9999 0.88077 7.55032 0.355327 0.640094 0.664912 0.0450694 0.0976893 0.552252 2.39934 0.0101921 0.0669835 0.237242 0.0419831 1.26787 0 +254 0 -0.782463 -0.603832 -0.00256973 0.0719372 -0.0935438 -0.172201 0.148989 1.4144 -0.0182564 0.0919456 -0.138438 0.421756 0.00087685 -0.461435 -0.0209872 -0.839859 -3.14184 -0.0247123 -0.0286679 -0.43574 -0.0132059 0.521063 -0.000732007 0.0234985 0.582935 -0.576796 -0.0107955 0.267857 0.825346 0.087169 -0.00567921 -0.345754 1.78577 0.0172301 0.223221 -0.0132397 -0.0655828 7.86204 -0.183033 -0.350517 0.0105573 -0.130226 -0.0186398 -1.08229 0.121186 -0.341685 0.509979 -0.511792 0.135983 -1.25879 0.340263 -2.73882 0.111778 -0.0204803 0.197217 -0.396777 0.395702 0.455976 -0.0414527 -0.0360988 1.48873 -0.671207 -0.774738 -0.551591 0.658046 0.976257 0.368845 -0.224227 0.00764048 0.522532 0.218084 -0.268805 0.148847 -1.06194 -0.276427 -0.579209 -41.2475 -5.31455 -10.6594 -4.50551 4.55289 -20.5848 0.289368 -0.346845 -0.583746 -5.67389 -0.0376467 0.0726214 -0.49597 0.856432 -5.00946 0 0 0 0 0 -0.00256973 0.0719372 0.00101792 0 0 0 0 0.000153487 0 0.00153486 0 0 -0.000112071 -0.00016526 0.000553574 0 0.000176844 0.000366704 -0.00759842 0 0 -0.148893 -1.18953e-05 0 0.0175576 -0.35829 0 0 -0.0209965 -0.00869462 0 0.11842 0 -0.0119169 0 0 -0.00157434 0 0 0.397122 0.00211615 -0.00155221 0 0.014128 0.0146633 0 0 -0.105914 0 0.00246372 -0.211247 -0.00390393 0 0 0.000849612 -0.000947395 0 0.00123591 0.00338573 -0.00143694 0.143287 -0.00267877 -0.00604942 0 -0.00492099 0.00716033 -0.0548279 0.0127802 -0.00777159 0 0 0 -1.43757 0.0549909 -0.12266 -0.0264554 0.0505133 -0.11391 0.000316139 -0.000612319 0.00121857 -0.00152952 0 0 0 0 0 0 -0.0935438 0 -0.172201 0 0 0 0 -0.0598833 -0.224526 0 0 -0.272886 0 -0.0203093 0 -0.0021617 0 0 -0.441937 0 0.932015 0.0646978 -0.00179244 -0.0417996 0 0 -0.0824037 0 -7.22392 0 3.8379 -0.199613 0 0.507486 1.79455 0.000770398 0 -0.0116385 0 0 -0.00528499 0 -1.5789 -1.3641 0 0 -0.137492 0 0 -0.192287 -2.73446 -0.191371 0 -0.129766 0 1.08811 0.0366582 0.0170732 0.00274727 -0.0364602 -1.37585 -0.393759 -0.0644624 -0.544302 -1.27202 -0.0387447 0 0 0 -0.0645555 0.0260379 0 0 0 0 0.0325503 -26.2835 -0.437796 -3.17557 -0.65963 0.819616 -3.16063 0.145233 -0.12197 0.137061 -0.352741 0 0 0 0 0 0 +255 0 1.29247 0.358311 -0.00850213 -0.126841 0.489619 0.369846 -1.28305 -3.98419 -0.0857509 0.444334 0.173725 0.535096 0.000554127 1.00915 0.0135958 -0.278821 0.149682 0.0461763 0.029916 -0.666109 -0.00914148 -0.369737 -0.000504397 -0.0130623 -0.890049 0.0879842 -0.0161123 -0.725092 -1.83657 0.365442 -0.00634557 0.146223 -1.13107 -0.0167745 -0.432353 0.0127107 -0.110921 -5.32046 0.206099 0.360961 0.00748858 -0.0504562 0.0165543 2.32856 0.103149 0.591645 -1.18052 0.310874 -0.0118857 0.755661 -0.436528 -0.322279 -0.0410463 0.0758183 -0.14002 -2.48532 0.121778 -0.121319 -0.0236865 -0.0246602 -1.18989 -0.128804 -1.24163 -0.184865 -0.277125 0.565629 -0.396801 0.156863 0.0220907 -0.46068 -0.253585 0.105949 0.183913 -2.07037 0.681373 0.908753 25.3858 0.469695 15.2026 1.03108 -1.87588 16.0104 -0.0804993 -0.00189724 -0.699992 11.9173 -0.0320433 0.00560164 -0.0277664 -1.29518 11.1471 0 0 0 0 0 -0.00850213 -0.126841 -0.00114067 0 0 0 0 -5.64569e-05 0 0.00186453 0 0 0.0015957 0.00204632 -0.00273287 0 -9.81179e-05 0.00170708 -0.0229184 0 0 0.14044 0.000152603 0 -0.00603232 0.413052 0 0 0.0202642 0.0476304 0 -0.0529031 0 0.00754783 0 0 0.00119908 0 0 -0.105051 -0.000816582 0.0209098 0 -0.0163834 -0.00157854 0 0 -0.00897147 0 0.000359339 0.0480246 -0.00400307 0 0 -0.00592747 0.00404603 0 0.00612136 0.0239526 0.0192159 -0.371548 -0.0451766 -0.0102617 0 -0.0144592 0.0156149 -0.0010668 -0.0265884 0.110611 0 0 0 0.172757 -0.0625544 0.0995728 0.00645643 -0.0119351 0.0283767 -0.00262555 0.00504182 -0.0104909 0.0172531 0 0 0 0 0 0 0.489619 0 0.369846 0 0 0 0 0.0130913 0.262498 0 0 0.0576875 0 0.0132008 0 0.0092238 0 0 -0.327494 0 -0.221034 -0.126039 -0.0933398 -0.0600741 0 0 0.147594 0 2.32841 0 -3.62911 0.326821 0 -1.19712 -0.733732 -0.00374033 0 0.0151888 0 0 0.0157412 0 0.376109 0.454498 0 0 0.0229527 0 0 -0.395123 -2.48991 -0.286059 0 -1.24005 0 -0.664869 0.0598936 -0.10098 -0.163364 0.13958 -0.348559 -0.257983 -0.0860836 0.699453 -0.577949 -0.0978793 0 0 0 0.0973776 -0.0201128 0 0 0 0 0.012943 31.407 1.1339 6.92853 0.336642 -0.431672 3.41974 -0.0334631 0.0282985 -0.00710551 0.871118 0 0 0 0 0 0 +256 0 1.52726 0.178146 0.0418614 0.302628 -0.031206 -0.203226 1.8 2.1327 0.39241 -1.37799 0.220822 -0.478404 -0.00338461 -0.487512 0.0265842 -0.120721 0.493721 -0.0283699 0.0241435 -1.21577 0.0548291 0.0320267 0.00410543 -0.120916 0.43978 -0.211955 0.0919257 0.492143 1.38793 -0.21919 0.0416257 0.409525 -0.911257 0.2429 0.379034 0.02604 0.279723 -8.86098 0.497193 -0.743974 -0.034958 0.974285 0.0504934 -2.00905 -0.339693 -0.468219 0.920842 0.479143 -0.190331 0.106717 -1.00903 -1.05749 -0.039833 0.101294 -0.389779 -2.55979 0.120264 -0.47481 0.461762 0.0940625 -4.86918 0.239802 0.921423 -2.34313 -0.207651 -2.70444 1.39155 0.34771 -0.0954763 0.66979 -0.560405 0.380821 -0.216532 -1.7511 -1.45609 0.602641 50.1861 10.6947 -0.171988 5.96595 -5.52587 12.158 0.252197 -0.534312 3.04872 -8.1861 0.105526 -0.201099 0.815308 -1.00274 -8.42406 0 0 0 0 0 0.0418614 0.302628 -0.00136516 0 0 0 0 -0.000588725 0 -0.00983664 0 0 4.66424e-05 -0.000493331 -0.00802187 0 -0.000836013 0.00795479 -0.0689789 0 0 0.056413 -4.02042e-05 0 -0.0366577 0.265388 0 0 0.00545193 0.0042228 0 -0.171244 0 0.017068 0 0 0.00167081 0 0 -0.724069 -0.00805337 0.00187246 0 -0.0176158 -0.0380157 0 0 0.221783 0 -0.0104625 0.386089 0.0200592 0 0 0.00199482 -0.00250591 0 -0.0116583 -0.0367508 -0.0141681 0.129388 0.00762181 0.0262163 0 0.014809 -0.0351109 -0.0255314 0.0238172 0.0379203 0 0 0 3.05726 -0.1174 0.431945 0.0679197 -0.12977 0.27966 0.000277981 -0.000555978 0.000921834 0.0215632 0 0 0 0 0 0 -0.031206 0 -0.203226 0 0 0 0 -0.506659 0.532574 0 0 -0.512932 0 -0.0612878 0 0.0124067 0 0 -0.07908 0 -0.531159 -0.0491742 -0.0745555 -0.0324396 0 0 0.221856 0 2.64084 0 -7.86573 -0.439065 0 -0.540202 -2.37274 -0.0101238 0 -0.0606849 0 0 0.041725 0 0.184133 -0.50866 0 0 -0.111489 0 0 -0.283751 1.62021 -0.739931 0 -0.98495 0 -1.98174 -0.00527915 0.0769152 0.49411 -0.0188993 0.146038 0.829326 -0.239218 -0.302786 -8.66868 -0.0701384 0 0 0 0.0911833 0.150555 0 0 0 0 -0.0607264 61.2388 5.17144 5.9796 1.54797 -1.49729 6.52566 0.255429 -0.236369 0.469192 0.530051 0 0 0 0 0 0 +257 0 0.0310395 0.182619 0.00280282 0.0341236 0.0860848 0.213491 -0.278863 -0.543675 0.0229862 -0.228919 0.0450138 -0.431441 -8.14888e-05 -0.862471 -0.00649457 -0.282814 -3.1823 -0.0139878 -0.00736097 2.26978 0.00420968 -0.36271 0.000104936 0.00374881 -0.368488 0.33227 0.00815141 -0.681013 -1.42554 -0.0674666 0.00160368 -0.112758 -0.444605 -0.0601148 -0.364481 0.00235431 0.0903324 -0.516643 0.096937 1.60171 -0.00126606 -0.0723434 0.00510405 -2.43507 -0.0186057 0.931112 -0.825152 -0.115607 -0.0133741 0.608295 -0.33955 -1.95744 0.0127135 -0.0124771 -0.0581047 -0.639101 -0.469402 -0.0647875 0.0590755 0.00279902 0.323519 -2.43822 0.443308 -0.00540291 -0.0687925 0.459436 0.233907 -0.0124431 -0.00295932 -0.0484414 -0.0966576 -0.0825675 0.0387268 0.670975 0.661705 -0.211642 4.75944 1.11565 2.22607 0.277707 -0.635055 5.51125 0.0979066 -0.250052 0.744925 1.85981 0.00167148 -0.00489678 0.0824585 -0.137566 2.82347 0 0 0 0 0 0.00280282 0.0341236 -0.000541412 0 0 0 0 -5.50107e-05 0 -0.000870485 0 0 -6.20235e-05 1.98957e-05 -0.000934644 0 -6.62281e-05 0.00184005 -0.012823 0 0 0.0119515 1.42803e-06 0 -0.00258698 0.0843112 0 0 -0.000392691 0.0197338 0 -0.0105745 0 0.00181403 0 0 0.000132479 0 0 -0.0774439 -0.000757453 -0.000806807 0 -0.00742398 -0.00582813 0 0 0.025555 0 -0.00134837 0.0554293 0.00226506 0 0 0.000185405 0.000750359 0 -0.00195825 -0.00366954 -0.00197542 -0.00996584 -0.00287599 0.00381473 0 7.30047e-05 -0.00196143 -0.0204669 0.00769318 0.0198028 0 0 0 0.328871 -0.0119323 0.0605303 0.00768947 -0.0146781 0.0314741 8.8872e-05 -0.000170123 0.000359685 0.00477491 0 0 0 0 0 0 0.0860848 0 0.213491 0 0 0 0 0.232276 -0.0777432 0 0 -0.393277 0 -0.0468383 0 -0.000470929 0 0 0.0634485 0 -0.771516 0.0652941 -0.0899888 0.00645759 0 0 -0.00929072 0 -0.444554 0 -1.22713 0.165116 0 0.380506 -0.709103 -0.0093464 0 0.0264872 0 0 -0.0176066 0 -0.0847049 -0.0128565 0 0 0.0233751 0 0 -0.110849 1.00181 -0.00539004 0 -0.218506 0 -0.226307 -0.111616 0.131571 0.359207 -0.120833 -0.0218948 0.30667 -0.0599111 -0.925835 -9.0383 0.0329871 0 0 0 -0.0577103 0.0908168 0 0 0 0 0.0167783 15.7866 2.50533 0.0635172 0.468183 -0.272357 2.04403 0.217727 -0.18283 0.348547 -0.360151 0 0 0 0 0 0 +258 0 0.377832 0.184146 -0.00439692 -0.0613918 0.357311 0.174723 0.099429 -0.764201 -0.038949 -0.00450075 -0.0207365 0.85173 0.000127637 1.17653 0.00227767 0.964349 5.0252 -0.0103283 0.0110741 -0.439358 -0.0152067 0.194231 -0.000163912 -0.079515 -0.15002 -0.0309263 -0.00658831 0.128239 1.18255 0.444694 -0.00258375 0.0297831 0.104594 0.0388861 0.0876809 -0.00100783 -0.0759499 -0.987706 0.00155206 0.329255 0.00207805 0.081688 0.000320425 2.72981 0.0327944 0.537985 0.446022 0.180306 0.000760156 2.58008 -0.188486 3.51829 -0.0190057 0.0199727 0.0560994 -0.978717 0.276509 0.100997 0.0871708 -0.0048714 0.531182 0.422409 0.177387 1.63867 -0.223762 0.414889 -0.0986378 -0.0303529 0.00501306 -0.107428 0.0747435 0.100535 0.121949 -1.19245 0.127205 0.817513 0.967315 -0.502357 3.00068 -0.152751 -0.00450833 -0.946519 0.574504 -0.598168 -0.208392 1.84504 -0.00294614 0.000886541 -0.0855951 0.0329451 -2.3422 0 0 0 0 0 -0.00439692 -0.0613918 0.00115408 0 0 0 0 0.00010778 0 -0.000907726 0 0 0.000890415 0.000546947 -0.000460421 0 -4.08105e-05 -0.00216985 -0.014759 0 0 -0.0136801 3.97692e-05 0 0.00438975 0.0330384 0 0 -0.000523722 -0.0172999 0 0.0169741 0 -0.00285206 0 0 -0.000288355 0 0 0.119289 0.00148389 0.0121096 0 0.0158041 0.0163616 0 0 -0.0418294 0 0.00308047 -0.0422729 -0.00712292 0 0 -0.00197824 -0.00139687 0 0.00404838 0.00820787 0.00615621 -0.0994636 -0.0195206 -0.00830493 0 -0.00335769 0.0163916 -0.00675283 -0.00537479 0.0364955 0 0 0 -0.533214 -0.00249729 -0.0249572 -0.0124102 0.0237202 -0.0505332 -0.0011875 0.00226595 -0.00486752 0.00669089 0 0 0 0 0 0 0.357311 0 0.174723 0 0 0 0 -0.827717 0.17216 0 0 0.165459 0 0.0160251 0 0.00251335 0 0 -0.0506569 0 -0.0205169 -0.231136 0.0724254 0.0196657 0 0 0.0570445 0 1.89722 0 -2.70401 0.280529 0 -1.74303 -0.686051 0.00445521 0 -0.111161 0 0 0.0165281 0 0.469658 0.38251 0 0 0.08253 0 0 0.0849735 -1.72226 0.44852 0 1.0053 0 1.13847 0.0783028 -0.211513 -0.416247 0.0305589 -0.288537 -0.378436 -0.1352 0.24111 7.79842 -0.0016611 0 0 0 -0.0415243 -0.0104115 0 0 0 0 0.0260954 19.9174 -0.423032 8.23928 0.0778286 -0.256613 2.1528 0.0890957 -0.0902026 -0.173722 1.49011 0 0 0 0 0 0 +259 0 1.83649 0.497033 0.0191048 0.216804 -0.0343152 -0.00881814 1.23664 1.60936 0.150876 -0.354036 0.129272 -0.273654 -0.000555851 -0.619275 -0.00948095 0.830968 5.96745 -0.0207662 -0.0213086 -0.659886 0.0265502 -0.176937 0.00071669 0.070611 0.110269 0.150997 -0.00625819 0.115374 0.551271 -0.322967 0.0107946 -0.0908396 -0.992752 -0.158583 0.126754 0.00688858 -0.0849003 -7.30025 0.287269 -0.596106 -0.00844516 -0.470858 0.0160123 0.317044 -0.119576 -0.517665 0.213809 -0.21322 -0.0423889 0.29219 -0.473728 -0.0649023 0.0393123 -0.0386077 0.011134 -0.424455 0.321857 0.0181499 0.0659757 0.0181137 -0.710945 0.500512 2.63374 1.98544 0.402413 0.0541255 -0.179513 -0.188162 -0.019427 0.0134951 -0.42556 0.019409 0.135495 -0.811863 0.25091 1.27775 36.8433 5.7875 1.22679 4.26453 -3.92116 11.3119 -0.760978 0.435326 0.404594 -0.523356 0.0107423 -0.0163904 0.0936562 -0.268413 -1.09187 0 0 0 0 0 0.0191048 0.216804 -0.00318089 0 0 0 0 -0.000332142 0 -0.00725633 0 0 0.0011355 0.00129552 -0.00517989 0 -0.000572565 -0.0030029 -0.0607905 0 0 0.15828 9.40174e-05 0 -0.0281079 0.211783 0 0 0.0228449 -0.0152305 0 -0.18111 0 0.0157755 0 0 0.00218577 0 0 -0.726154 -0.00457379 0.0157858 0 -0.0437144 -0.0395551 0 0 0.181093 0 -0.00727033 0.36574 0.0122618 0 0 -0.00218694 0.0048948 0 -0.00592764 -0.0310739 0.00197853 0.0792062 -0.0177066 0.0169908 0 0.00412335 -0.0213624 -0.0297513 0.0153175 0.0726569 0 0 0 3.00355 -0.156891 0.442136 0.070399 -0.134289 0.288945 -0.00148618 0.00283246 -0.00612094 0.0231106 0 0 0 0 0 0 -0.0343152 0 -0.00881814 0 0 0 0 -0.0546906 -0.0118383 0 0 -0.468744 0 -0.0430618 0 -0.00549995 0 0 0.943207 0 -0.681374 0.0168652 -0.139636 0.143394 0 0 0.0762029 0 12.4091 0 -8.88087 0.647925 0 -0.172591 -2.60749 -0.00917854 0 0.00728398 0 0 -0.028507 0 3.715 2.07511 0 0 0.305877 0 0 -0.0521207 2.4687 0.154219 0 -0.370946 0 0.0992157 -0.198982 0.170122 0.50398 0.102734 -0.374922 0.0552789 -0.156735 0.443297 2.91045 -0.130418 0 0 0 -0.0340988 0.0983945 0 0 0 0 0.0549856 65.2001 4.88649 4.99808 1.47092 -1.51725 6.74204 0.113083 -0.114427 0.376865 0.221191 0 0 0 0 0 0 +260 0 0 0 0 0 0.68805 0.378693 -2.37319 -7.34661 0 0 0.149715 0.797972 0 1.12755 -0.0507609 0 0 0 -0.0241995 5.90836 0 0 0 0 -1.15251 0 0 -0.42258 -7.64237 0.0917408 0 0.0419408 0 0 -0.385093 0.0291655 0 0 -0.300313 1.62734 0 0 -0.0703341 5.64995 0 0.438381 -1.89411 0.476477 0.188897 -5.09135 -0.106305 0 0.349243 -0.0712728 -1.12134 -1.2269 0.148596 -0.257713 0 0 2.19727 -0.549211 0 -2.22872 0.492928 1.77964 0 0 0 0 -0.663672 -1.1963 0 -0.747398 2.49376 0 0 0 16.8725 0 1.54323 14.5312 0 0.759727 2.03968 22.8595 0 -0.0713188 4.62866 -2.78862 29.3541 0 0 0 0.0205373 0.0374084 0 0 0 0.0625334 0.0738784 0 0.0123222 0 0.0140567 -0.119562 0 0 0 0 -0.185146 0 -0.0512173 0 -0.604334 0 0.379498 0.906607 0 -0.0114775 0 0 -0.620623 0.00328773 0.0986804 0 0.00940062 0 0.00484707 0.155872 -0.0875597 0.0417709 -0.00822107 0 0.00104214 0 0 0 0.000640735 0 0 -0.0090214 0.00569874 0.128093 -0.00126453 0 0 -0.0350852 0 -0.00974637 0 0 0.0478128 -0.0457874 0.197593 -0.00479162 0 0 -0.0255761 -0.0372489 -0.00784559 -0.295039 0.228021 0 -0.232335 -0.0251631 -0.19419 0 0 0 1.73781 0 -0.0573345 1.82538 0 0.0112389 0.0316479 0.703292 0 -0.00471518 0.0381335 -0.0838768 0.946955 0 0.68805 0.0205373 0.378693 0.0374084 0.852319 0.186379 0.273349 0.529217 1.56336 -0.0677056 -0.0345059 -0.552324 -0.0141423 -0.0858213 0.0770678 0.140976 -0.0333847 -0.280883 -0.151084 1.49277 0.631377 -0.0745836 -0.30655 -0.0374957 0.047646 -0.0877035 0.772646 0.0354137 1.57747 -0.0500098 6.40089 0.397258 0.0175724 0.287029 2.05681 -0.0455969 0.00433487 0.0456274 0.00275793 -0.544035 0.294883 -0.01431 0.56235 1.59182 -0.0102422 0.0134775 0.152351 0.228989 -8.41797e-05 0.473107 3.81191 -1.04989 0.0263523 0.647379 -0.134493 1.48595 0.706453 -0.390356 0.134148 0.417202 0.41887 -0.0420972 -0.502082 -0.937178 -1.20818 -0.0155731 0.766459 -0.103923 -0.0624512 0.103197 0.0832044 -0.0593692 0.154588 -0.385652 0.0173532 -0.248257 -60.9388 -1.81087 -7.77665 -1.13398 1.3645 -5.62603 0.408059 -0.0415675 0.628485 0.0924715 0.216867 -0.000912153 0.281789 0.125823 0.700853 0 +261 0 0 0 0 0 0.0167241 0.144709 0.491483 2.42723 0 0 0.435369 2.37192 0 5.12821 0.416658 0 0 0 0.835921 -5.00823 0 0 0 0 0.710995 0 0 -0.71571 -1.65085 1.41175 0 1.49147 0 0 0.189011 0.115658 0 0 1.79322 -0.611905 0 0 0.484104 7.22946 0 0.389392 -1.16978 2.5487 -0.899313 3.46079 -0.456983 0 -0.735405 1.25055 -0.249908 -6.50057 -2.07582 -0.954941 0 0 0.202883 1.71051 0 -2.34304 -1.92595 1.29059 0 0 0 0 0.623051 1.55342 0 -1.90284 3.03396 0 0 0 -5.97117 0 -3.71813 6.25809 0 -1.53476 1.15608 0.560425 0 -1.86124 0.600597 -2.6839 10.7467 0 0 0 -0.0926188 -0.057447 0 0 0 -0.103414 0.0643917 0 -0.0200191 0 -0.00970971 0.119398 0 0 0 0 0.133437 0 0.0580503 0 0.303102 0 -0.58288 -0.0989186 0 0.00654294 0 0 0.090391 0.00149155 -0.00272136 0 0.0105572 0 0.0049641 0.0299087 0.0318023 0.0193429 0.0288265 0 -0.000703394 0 0 0 0.000784607 0 0 -0.00320049 0.0117082 -0.302833 0.0131177 0 0 -0.0036014 0 -0.00557721 0 0 0.00551471 -0.0145976 -0.021678 0.0339601 0 0 -0.0700044 0.04266 0.0112457 0.0672845 -0.0479855 0 0.112384 -0.00671782 -0.0354028 0 0 0 -0.802379 0 0.00797408 -0.52488 0 0.00260135 -0.036608 -0.23046 0 -0.00173311 -0.0002881 0.0119075 -0.310344 0 0.0167241 -0.0926188 0.144709 -0.057447 -0.411745 -0.0260388 -0.548577 0.41954 -0.185924 0.0801754 -0.0215083 0.661062 0.0167948 0.17738 -0.110964 -0.01664 0.0122154 0.339167 -1.698 -0.963568 0.511808 -0.0207808 0.327581 -0.193281 -0.0626929 -0.0102818 0.163766 -0.00801626 0.990234 -0.0374596 3.32102 0.80894 -0.0222881 -0.0327702 1.67206 0.0832497 -0.00250947 0.0276543 -0.00634578 -0.258868 -0.129384 0.000709613 1.20077 -3.72773 -0.000610431 -0.0190914 -0.428186 -0.0888992 -0.107334 -0.491048 0.465265 0.567132 -0.0797026 1.88877 0.180124 1.80005 -0.521432 0.42035 -0.388101 0.330878 0.390563 -0.921998 0.118288 -1.03586 -10.8453 0.254998 0.123969 0.122901 0.0992962 -0.0531797 -0.423269 0.00457619 -0.16603 0.179414 0.0170383 0.321012 -31.6173 -5.45043 -2.71204 -2.89657 0.714729 -2.29772 -0.490467 0.0697954 -0.489327 0.181289 -0.261869 0.0258208 -0.275977 -0.0121454 0.716466 0 +262 0 0 0 0 0 0.23002 0.269164 0.409209 0.222344 0 0 0.108232 0.158113 0 0.608377 0.0452219 0 0 0 -0.134294 -8.39174 0 0 0 0 -0.303584 0 0 -0.762286 4.49096 0.462871 0 0.590971 0 0 -0.103397 0.061602 0 0 -1.0884 -1.64154 0 0 -0.181431 -0.763792 0 0.298325 -0.00100921 0.766583 -0.0185213 2.19449 -0.0669431 0 0.301611 -0.369101 0.644867 -2.98019 -1.29194 -0.772079 0 0 -0.0227512 5.3674 0 0.494466 -0.487089 -0.303831 0 0 0 0 0.270047 0.458414 0 3.28222 -0.959805 0 0 0 0.0520782 0 1.44907 -8.28067 0 -0.019613 -1.11969 -2.672 0 0.458417 -2.16981 5.99031 -21.3566 0 0 0 0.303236 0.0669646 0 0 0 -0.0287686 0.111888 0 0.00385144 0 0.0217246 -0.0725109 0 0 0 0 -0.0980866 0 -0.0504439 0 -0.0198163 0 -0.450672 -0.364986 0 -0.00744911 0 0 -0.117809 0.00677733 -0.0416057 0 0.0173729 0 0.00834253 -0.255985 -0.0388178 0.0959251 -0.0552676 0 0.00156515 0 0 0 0.0012822 0 0 -0.0181503 0.0120558 0.115109 0.0796151 0 0 0.0185654 0 -0.0154618 0 0 0.0208652 -0.0549159 -0.105538 0.0288433 0 0 0.192693 0.000557827 -0.00987898 0.188747 -0.223624 0 0.211707 0.00761772 -0.0816344 0 0 0 -0.338826 0 -0.188933 -0.0951257 0 0.0132154 -0.0852845 -0.0939209 0 -0.00880951 0.0217021 -0.0738754 -0.161184 0 0.23002 0.303236 0.269164 0.0669646 -0.811681 -0.231922 0.396125 -0.390922 2.8104 -0.0543255 -0.030219 0.190166 -0.0141973 -0.063239 0.0896834 0.29399 -0.0786184 -0.151423 -2.24796 -0.875323 -0.273598 0.0378166 -0.0341821 -0.270373 -0.304097 0.403084 1.52969 -0.0299956 9.13667 -0.624458 -1.5936 2.33291 0.0196895 -0.870471 -0.743302 -0.0283951 -0.0102816 -0.0372783 -0.0957116 2.40412 0.536452 0.0624834 4.56938 -4.51972 -0.00724452 -0.0748299 -0.557606 -0.151466 -0.273233 -0.792286 -2.52058 -1.00062 0.177157 5.62734 -0.139945 0.206098 0.620547 0.639472 -0.0593439 -0.395285 -1.28014 1.19197 0.12795 -4.90813 -15.4203 -0.0285975 0.329794 0.0287554 -0.2549 0.781461 0.155684 0.181207 0.0492142 0.0699417 -0.0814762 -0.830557 15.1717 0.200189 6.12529 1.33601 1.80384 -7.09249 0.0316231 0.426404 -1.33137 -0.0378581 0.116913 0.234042 -0.535998 1.05016 -4.10277 0 +263 0 1.74655 0.569372 -0.000108155 -0.045138 0.358487 0.257954 -0.592158 -3.35157 -0.00300994 -0.132836 -0.180012 -0.43993 -0.000639879 0.0371189 -0.00412306 3.38381 11.8743 0.0562215 -0.0426093 0.180934 0.043275 0.059541 0.000828019 0.0704574 -0.701041 1.11596 0.0866008 -0.127271 0.235396 -0.0490074 0.0037276 -0.0704767 -1.01025 0.449134 -0.221868 -0.0264481 0.150204 -8.88215 -0.473145 0.0712504 -0.00282491 0.816781 -0.0684049 -0.0484292 0.00243722 0.175753 0.0468414 -0.423802 0.186056 0.539205 -0.392389 -17.0349 0.0434959 -0.015828 0.049832 0.778495 0.203378 0.0801459 -0.166513 0.0131642 -2.16436 0.282819 -1.82517 1.15618 -0.149899 -2.17172 -1.13028 0.336933 -0.0111608 -0.624372 -0.341166 -0.547598 -0.000357891 0.576307 -2.08326 -1.41512 37.7985 4.70383 13.3499 4.96695 -1.66778 12.9455 -0.978836 0.637681 1.14918 5.83035 -0.000668423 0.065177 -0.0410309 1.72754 -1.69053 0 0 0 0 0 -0.000108155 -0.045138 0.00601351 0 0 0 0 0.000704965 0 -0.0508669 0 0 0.00474853 0.00822825 -0.0471865 0 -0.00608572 0.0345628 -0.400771 0 0 0.0964969 0.000600467 0 -0.0531847 1.61469 0 0 0.0109836 0.286394 0 -0.238913 0 0.00964428 0 0 0.00157804 0 0 -1.03353 0.0110833 0.0658566 0 0.0940923 -0.0149807 0 0 -0.0590224 0 0.0121258 -0.498097 -0.0299969 0 0 -0.00942457 -0.0101228 0 0.00969839 -0.0790753 0.00516042 1.00894 -0.0808437 -0.0433265 0 0.0290527 -0.0831103 0.291664 -0.0150475 -0.269308 0 0 0 6.19147 -0.0480012 1.68984 0.0689583 -0.135823 0.818333 -0.00623928 0.0104335 -0.0181891 0.321689 0 0 0 0 0 0 0.358487 0 0.257954 0 0 0 0 -0.244459 -0.81915 0 0 -0.177607 0 -0.0359661 0 -0.0602608 0 0 0.735287 0 -0.815653 -0.0930306 -0.0358705 0.0676846 0 0 -0.464827 0 5.42484 0 -6.56467 0.0686065 0 -0.876103 -2.06586 -0.00772539 0 -0.031531 0 0 -0.110627 0 0.928714 2.16045 0 0 0.228132 0 0 0.551662 -3.53439 -0.798192 0 -0.411835 0 -2.96537 -0.0817087 -0.151978 -0.333527 -0.0186084 0.770057 -0.199144 -0.0967024 1.43811 6.6217 -0.0758721 0 0 0 -0.142579 0.0772779 0 0 0 0 0.114732 55.9748 4.37227 8.55833 2.0976 -1.27598 6.76297 0.0549409 -0.0342685 0.164866 0.832262 0 0 0 0 0 0 +264 0 -0.476125 0.0347301 -0.0187796 -0.00412598 -0.118234 -0.365115 1.82997 4.18483 -0.201514 0.802004 0.156012 0.65682 0.00177751 -1.45638 -0.0137957 1.9933 7.37675 0.125627 0.0228574 -0.715301 0.00772947 0.204106 -0.00277946 0.252156 1.42684 0.201595 -0.0240055 0.7482 2.17969 -0.179322 -0.0240059 -0.110625 1.49279 -0.312137 0.664496 0.0262949 0.381763 6.23769 0.327842 -0.629373 0.0134849 0.279756 0.0513224 -0.976713 0.0786956 -0.778814 1.39421 0.244302 -0.164612 1.49449 -0.655103 -7.6711 0.0418857 0.0393168 0.00438306 -1.82609 0.0660735 -0.0149459 -0.332168 -0.0180917 -1.03321 0.405422 -3.84595 -3.2166 -1.05787 -1.13366 -0.679212 0.790024 0.0252032 -0.171306 0.366539 -0.345495 -0.128871 0.719231 -1.44519 0.505529 -32.0241 -4.72459 -16.5097 -3.74621 0.57873 -18.759 -0.593914 -0.016329 -0.957742 -17.7081 -0.0215827 -0.0354091 -0.581479 -0.912791 -15.6538 0 0 0 0 0 -0.0187796 -0.00412598 0.000723732 0 0 0 0 -0.000177779 0 0.00549947 0 0 -0.00122815 -0.00651309 0.0156444 0 0.00153522 0.0532965 0.0883046 0 0 -0.309254 -0.000459222 0 0.0498546 0.477596 0 0 -0.0550108 0.222439 0 0.148893 0 -0.0240054 0 0 -0.0049534 0 0 0.0914429 -0.00245648 -0.0206307 0 0.00959173 0.0249348 0 0 -0.337433 0 0.00158027 -0.247422 -0.0141776 0 0 0.00211303 -0.00117475 0 0.0193545 -0.0602514 -0.0140924 -0.00534879 0.0101328 -0.0229936 0 0.0039387 0.072368 0.146619 -0.0186094 -0.155106 0 0 0 -0.731573 0.239086 -0.509363 -0.0295364 0.0754845 -0.0281754 0.00139903 -0.00581195 0.0286196 -0.0741525 0 0 0 0 0 0 -0.118234 0 -0.365115 0 0 0 0 -0.418252 -0.281034 0 0 0.0516387 0 -0.0053657 0 -0.00664908 0 0 0.318404 0 0.19577 -0.02976 -0.0904854 0.028292 0 0 -0.115572 0 -2.12406 0 0.0907881 -0.567972 0 -0.0937491 -0.182279 -0.0250744 0 -0.0467549 0 0 -0.01775 0 -1.11211 -0.284243 0 0 -0.0451116 0 0 0.059361 -2.50503 -0.203727 0 0.118912 0 -1.22681 0.0550989 -0.151411 -0.0944284 0.0680384 -0.0600848 0.0848608 -0.0670285 -0.211312 0.564396 -0.0344759 0 0 0 -0.0908081 0.0339213 0 0 0 0 -0.000781694 4.01265 -0.0156742 1.73156 0.243983 0.157518 0.390896 -0.0317719 -0.000621241 -0.0307627 0.3162 0 0 0 0 0 0 +265 0 0.305573 0.207418 0.0359562 0.311094 -0.3916 -0.139657 0.62079 2.03359 0.169691 -0.0370704 0.209397 -0.689065 -0.000826324 -0.11655 -0.010683 2.64168 6.43193 0.202098 -0.031479 2.01533 0.0509762 -0.0380887 0.00145609 0.0159705 0.0857658 0.941775 0.0468688 0.165564 0.87618 -0.0529752 0.0151288 -0.0718124 0.283132 0.489783 0.014203 0.0105215 -0.0917526 1.66779 0.217139 0.525532 -0.00521279 1.02785 0.0098798 -2.13971 -0.0119367 -0.0411693 0.271849 -0.249536 0.0522404 -0.687674 0.489558 -12.8776 -0.019183 -0.0036455 -0.481119 2.08656 0.13401 0.0577421 -0.233991 -0.0184184 0.0366647 -0.835959 -2.11093 0.879839 1.19148 -0.611526 -0.93115 -0.518929 -0.00458948 -0.403992 0.184454 0.149202 0.121007 0.0807588 0.784437 -1.87698 -7.2002 -0.525253 -7.27793 -0.0844875 0.00643988 -6.81107 -0.377939 -0.172316 -0.0926724 -7.52415 0.00327371 -0.031224 -0.077286 -0.673415 -6.29242 0 0 0 0 0 0.0359562 0.311094 0.00650442 0 0 0 0 0.000585176 0 -0.000382316 0 0 0.00565137 0.00879641 0.000814846 0 7.63845e-05 -0.0487947 0.0137231 0 0 -0.278357 0.000631333 0 -0.017566 -0.642786 0 0 -0.0343071 -0.214139 0 -0.0368002 0 -0.0205493 0 0 -0.00218214 0 0 0.0637004 0.00743668 0.0787019 0 0.0851447 0.047398 0 0 -0.0553054 0 0.0134103 0.515902 -0.0188293 0 0 -0.0117325 -0.0113494 0 0.0252755 -0.0560713 0.0316403 -0.694181 -0.0343773 -0.0207212 0 0.013645 0.0881269 -0.119688 0.000816548 0.312846 0 0 0 -2.22668 -0.272226 -0.384558 0.0160603 -0.0133171 -0.384186 -0.00732076 0.0119298 -0.0233068 -0.0997196 0 0 0 0 0 0 -0.3916 0 -0.139657 0 0 0 0 0.496257 -1.21871 0 0 -1.04628 0 -0.13629 0 -0.123714 0 0 0.929803 0 -0.444416 0.1884 -0.431269 0.10562 0 0 -0.709541 0 -5.12955 0 -1.27011 -1.22531 0 1.43845 -0.670441 -0.0614516 0 0.0708153 0 0 -0.222321 0 -2.65438 1.55376 0 0 0.171799 0 0 0.46671 1.0272 0.896729 0 -3.22644 0 -0.179772 -0.321683 -0.191425 0.657079 -0.307337 -0.377503 -0.148888 0.144991 2.66437 7.3739 -0.0181841 0 0 0 -0.354848 0.120394 0 0 0 0 0.338572 12.8886 6.06974 -5.4574 1.04107 -0.394826 1.30927 0.412972 -0.277617 0.969749 -1.39336 0 0 0 0 0 0 +266 0 1.30736 0.33236 0.081335 0.0315011 0.430181 -0.101713 0.565037 0.690138 0.430214 -1.0252 -0.0212326 0.333624 -0.0561114 -0.632333 -0.00306533 -1.00127 -0.586317 -0.459501 0.0572819 -2.89407 -0.172677 -0.459371 0.0697651 -0.34791 0.525079 -0.541861 -0.0100516 0.417551 1.43509 -0.0874061 0.194724 0.0597701 -1.55735 -0.0249613 0.360663 0.033451 0.446459 -6.27535 0.448735 -1.33759 -0.173991 1.54491 0.198445 -0.152757 -0.502483 -0.632811 0.807028 0.561884 -0.591275 2.64598 -0.402507 -0.263065 -0.0881348 -0.106094 0.767303 -1.59573 -0.511604 0.437844 0.421827 0.319953 -0.819962 2.09578 3.24133 -0.319364 -0.819468 -0.626151 1.58529 0.396916 -0.257269 0.78662 0.178046 1.14032 -0.243473 2.38995 -1.98195 -0.928212 35.6155 9.71226 1.35682 6.70233 -3.19918 6.17543 1.18417 -0.653674 0.214026 -2.51493 0.771263 -0.720682 -0.193653 0.264095 -5.18481 0 0 0 0 0 0.081335 0.0315011 0.0108548 0 0 0 0 0.00307206 0 -0.0356395 0 0 0.00437992 0.034214 -0.0937757 0 -0.0094934 -0.0397721 -0.335648 0 0 0.121461 0.00249511 0 -0.157439 2.29302 0 0 0.00422114 0.385293 0 -0.335316 0 0.0329967 0 0 0.0031266 0 0 -1.07328 0.0426068 0.0574132 0 0.155654 0.0128935 0 0 0.016929 0 0.0170556 -0.180744 -0.0592225 0 0 -0.00917658 -0.0217014 0 0.00044154 -0.0415184 0.00419599 0.341853 -0.126306 -0.0162968 0 0.0289397 0.0957749 0.195952 -0.0568461 -0.0276605 0 0 0 6.39716 -0.0376554 1.36542 0.0653584 -0.13417 0.83119 -0.006148 0.0112016 -0.0144992 0.22356 0 0 0 0 0 0 0.430181 0 -0.101713 0 0 0 0 -0.65573 0.753336 0 0 0.0905839 0 0.00145908 0 -1.75299e-05 0 0 -0.463992 0 0.134524 -0.132572 0.224515 -0.0581986 0 0 0.0886449 0 3.40319 0 -3.32555 -0.249024 0 -1.13478 -0.522106 0.0265658 0 -0.0858562 0 0 0.0846349 0 0.0103244 -0.746411 0 0 -0.0975773 0 0 -0.141852 1.19599 -0.637128 0 1.05744 0 -0.526621 -0.106258 0.587834 -0.211031 0.0520456 0.284949 1.25164 -0.214967 -1.18681 -8.39688 -0.0643769 0 0 0 0.254137 0.0823351 0 0 0 0 -0.272457 31.6813 1.85786 7.50537 1.186 -0.812356 4.15614 0.00542879 -0.0478637 -0.0641214 1.16225 0 0 0 0 0 0 +267 0 -0.27819 -0.246107 -0.148031 -0.169424 -0.0560917 0.117908 -1.59028 -3.16064 -0.938753 3.48442 -0.578621 -2.25148 0.0953694 -3.978 -0.416093 -0.0808383 -1.77638 0.973212 -0.636846 3.55947 0.365785 0.681241 -0.122119 1.16243 -1.0703 0.108259 0.0116278 0.00231981 0.384552 -1.05051 -0.360619 -1.61308 2.07311 0.0508221 -0.686676 -0.208011 -0.230626 6.83205 -1.14121 1.39416 0.291327 -0.436352 -0.395937 -8.24711 0.836707 0.446905 0.190488 -2.72998 0.943094 -3.26286 2.04222 -0.43986 0.88144 -0.643765 0.457189 6.56355 2.08382 -0.0428979 -1.83528 -0.530788 1.04717 0.276508 -6.83998 4.05368 1.76775 0.543463 -3.81494 -0.283541 0.539991 -2.31294 0.303926 -1.27046 0.582474 -0.2081 -0.202974 0.673764 -37.4299 -18.1358 10.4137 -13.4803 9.33389 -6.166 -4.70999 3.48652 -4.85228 5.5205 -1.28426 1.50241 -1.80659 2.34951 -1.38934 0 0 0 0 0 -0.148031 -0.169424 0.00352382 0 0 0 0 -6.5662e-05 0 0.00719543 0 0 0.00147888 -0.0356622 0.0704718 0 0.00904031 0.211236 0.0287289 0 0 -0.314519 -0.00259005 0 0.288542 -0.315042 0 0 -0.0668445 0.141995 0 0.469839 0 -0.0779207 0 0 -0.0195549 0 0 0.894741 -0.00101506 0.0200632 0 0.0458737 0.0527699 0 0 -0.303867 0 0.018983 -0.238751 -0.0369802 0 0 -0.00157215 0.000910072 0 0.0168827 -0.00139756 0.00323118 0.307736 0.00379395 -0.0240518 0 0.00506867 0.109032 -0.00320021 0.0709054 0.0651096 0 0 0 -4.49311 0.13073 -0.653206 -0.0798269 0.164477 -0.482283 -0.00125247 -2.9786e-05 0.00420512 -0.0608168 0 0 0 0 0 0 -0.0560917 0 0.117908 0 0 0 0 0.178715 -1.81449 0 0 0.52351 0 0.0896298 0 -0.111686 0 0 0.992978 0 -0.582228 -0.0167838 0.122627 0.103219 0 0 -0.716653 0 -7.60954 0 -0.31757 -0.940453 0 0.0595158 -0.548807 0.0262265 0 0.0127741 0 0 -0.273763 0 -2.4098 1.71005 0 0 0.181713 0 0 0.390802 -2.70472 0.088272 0 -3.52167 0 -0.579 -0.375014 -0.00120059 -1.34749 0.0606947 1.65658 -1.15966 0.177631 2.91617 12.4705 0.193303 0 0 0 -0.328131 -0.223158 0 0 0 0 0.343835 2.38332 -3.53675 2.29912 -0.990164 1.02551 0.210879 -0.394044 0.301664 -0.53201 -0.107341 0 0 0 0 0 0 +268 0 -0.621531 -0.104325 0.0850129 0.19032 -0.311716 -0.348605 -0.255323 1.27177 0.60706 -1.68672 -0.525778 -1.02316 -0.0491498 -2.20037 -0.245036 -2.05957 -8.38689 -0.485832 -0.521386 1.16135 -0.181104 -0.298812 0.0669375 -0.555708 0.511142 -0.497231 0.0179393 0.672462 1.39113 -0.719761 0.208386 -1.03348 -0.447223 -0.0736589 0.169936 -0.101189 0.390059 0.739729 -0.857067 -0.198436 -0.109007 0.778028 -0.166374 -4.45844 -0.128208 -0.633537 0.881214 -2.05655 0.435735 -2.61518 -0.330171 3.87109 0.786574 -0.560446 0.227611 4.27194 0.770864 -0.305037 0.631673 0.145255 -1.02918 0.319175 -1.50801 -2.74396 0.257092 0.71332 0.969474 0.0661158 -0.341397 0.634476 -0.963794 -0.964834 -0.178058 -0.0108381 -0.386005 -2.2794 -9.35122 1.99998 -5.43125 1.74192 0.306892 -5.02316 1.55084 -1.1007 2.33359 -5.14916 0.196787 0.561745 -0.836022 2.59003 -5.02599 0 0 0 0 0 0.0850129 0.19032 0.0172213 0 0 0 0 0.00504615 0 -0.0142506 0 0 0.00777589 0.0428383 -0.0676327 0 -0.00809688 -0.139208 -0.113468 0 0 -0.48554 0.00310639 0 -0.117427 -0.739171 0 0 -0.0633471 -0.229454 0 -0.0666042 0 -0.110029 0 0 -0.012181 0 0 0.403285 0.0694338 0.108448 0 0.236169 0.102563 0 0 -0.148634 0 0.0335961 -0.329692 -0.0501112 0 0 -0.0163312 -0.0306934 0 0.0313995 0.00299037 0.0456122 -0.359595 -0.00405914 -0.0516216 0 0.0244592 0.0740619 -0.0272621 -0.0150149 0.0485632 0 0 0 -2.38912 -0.216686 -0.0169995 -0.0280069 0.0586366 -0.297217 -0.0102779 0.0189355 -0.0419599 0.0215357 0 0 0 0 0 0 -0.311716 0 -0.348605 0 0 0 0 0.373998 -0.244946 0 0 -0.306566 0 -0.0172319 0 -0.0663733 0 0 0.470538 0 0.7289 0.154289 0.195226 0.0506599 0 0 -0.39747 0 -3.89747 0 4.79228 -0.881791 0 1.41244 2.02851 0.0406895 0 0.036336 0 0 -0.039657 0 -1.78502 0.39918 0 0 0.0279676 0 0 0.405845 -2.93057 0.578649 0 -1.03332 0 -0.638758 0.122289 -0.521198 -0.070908 -0.0439827 0.129505 -0.710389 0.0366435 0.222438 1.97268 0.133539 0 0 0 -0.324749 -0.0249761 0 0 0 0 0.10437 -39.4329 -1.37754 -8.83839 -1.15877 0.922839 -4.62809 0.170585 -0.171535 0.104506 -1.22618 0 0 0 0 0 0 +269 0 0 0 0 0 0.0116619 -0.318508 1.14057 1.53517 0 0 0.0113977 -0.985987 0 -0.543878 -0.00467029 0 0 0 0.221131 -2.09559 0 0 0 0 0.5356 0 0 0.642557 -0.411952 -0.495312 0 -0.115325 0 0 0.362481 0.0240559 0 0 -0.219543 -1.63272 0 0 0.0550139 -2.60077 0 -1.22559 0.476485 0.102489 -0.0556608 0.260539 0.138042 0 0.194688 0.38576 -0.374942 -0.855518 -0.644992 -1.27013 0 0 0.402263 1.45325 0 -0.00727314 -0.159423 -1.31429 0 0 0 0 0.913676 -0.180602 0 0.210477 0.373718 0 0 0 -2.61188 0 0.325655 -0.637302 0 -0.0507591 1.2025 -4.93061 0 0.0538004 0.998749 -1.86566 3.9333 0 0 0 0.111313 0.00493309 0 0 0 -0.0910859 -0.0185246 0 -0.0172426 0 -0.00162106 0.0148044 0 0 0 0 0.0347671 0 0.00400211 0 -0.0218981 0 -0.499093 -0.695038 0 0.00110042 0 0 -0.0324352 -0.00116944 -0.109221 0 -0.00559448 0 -0.000946258 -0.101531 -0.00207316 -0.0235013 -0.0127299 0 -7.68266e-05 0 0 0 -0.00028282 0 0 0.00100211 0.000489888 -0.0979861 -0.00419469 0 0 0.0105287 0 0.00305985 0 0 0.0259687 0.000168407 -0.0159267 0.0135484 0 0 -0.0749122 -0.0768269 -0.0135923 -0.223461 -0.0187341 0 0.0399568 -8.91952e-05 -0.217197 0 0 0 0.36265 0 0.0753528 0.0344258 0 0.00541978 0.00360947 -0.0271577 0 0.000646757 7.65531e-05 0.0137544 -0.0299198 0 0.0116619 0.111313 -0.318508 0.00493309 0.0696481 0.0107239 0.354052 0.114374 0.0771461 0.0192536 -0.024069 0.00938661 0.00570636 0.0280292 0.035733 -0.00781368 0.0240525 0.0666089 0.381368 -0.378506 -0.104938 -0.0477767 -0.0311024 0.0614553 -0.0738852 -0.135198 0.0357248 -0.00729647 2.99026 -0.00542258 -0.898322 -0.286643 0.00291863 -0.0815797 -0.376679 0.0026452 0.00641388 0.017718 0.00311165 -0.884488 0.00971448 -0.0156035 0.891849 -0.15614 0.00189376 0.0186394 -0.0871559 -0.0665348 0.178316 1.33423 -0.234761 -0.3737 0.0506747 -0.090219 -0.196404 -1.01013 0.0996004 -0.105572 -0.584626 0.0398542 0.739775 -0.100112 -0.154474 -0.241623 -2.03599 0.355398 -0.0585474 -0.00540407 0.285245 -0.275956 -0.108913 0.024975 0.00984537 -0.340539 0.0368578 -0.224828 1.45851 -0.0863018 2.78512 -0.00704615 0.238044 2.17545 0.00534273 -0.00683682 0.462097 0.380545 -0.00697389 -0.0243734 0.363395 -0.343931 1.10945 0 +270 0 0 0 0 0 -0.0488866 0.0724026 0.473947 1.08482 0 0 -0.0898117 -0.0936738 0 0.256048 0.118602 0 0 0 0.0838109 -9.00742 0 0 0 0 -0.0455563 0 0 -0.650944 0.753825 0.228659 0 0.846183 0 0 -0.0403703 -0.00361524 0 0 -0.637527 -2.29198 0 0 -0.186806 -1.47761 0 -0.283008 -0.536831 1.802 0.219635 0.272171 0.965505 0 0.11734 0.0733345 0.162251 -2.30178 -0.802643 -1.23221 0 0 0.797502 5.22092 0 1.05922 -0.0417952 -0.926228 0 0 0 0 0.783949 0.363161 0 0.272569 -0.594088 0 0 0 -1.1705 0 0.817657 -1.02892 0 0.639214 -0.164648 -1.88679 0 0.63111 -0.13745 1.13949 -3.718 0 0 0 0.0920529 0.0349667 0 0 0 -0.0200631 -0.0378282 0 0.00113517 0 0.000665172 0.0495184 0 0 0 0 0.0502485 0 0.0215357 0 0.258159 0 -0.278187 -0.363205 0 -0.00557243 0 0 -0.0549144 -0.000422981 -0.0585377 0 -0.00759252 0 -0.00189981 -0.108691 -0.0223946 -0.00384061 -0.0237772 0 1.34598e-05 0 0 0 -0.000380698 0 0 0.00157385 0.000984797 0.172624 0.0332747 0 0 -0.0088926 0 0.00648778 0 0 -0.00296572 0.0113148 -0.452279 -0.00615651 0 0 -0.0104701 -0.0578414 0.003221 0.0397048 -0.540641 0 0.266306 -0.0121093 -0.410643 0 0 0 0.0662416 0 0.0222826 -0.113128 0 0.00350729 -0.00604987 -0.264849 0 0.000243983 -0.00159466 0.000318102 -0.236746 0 -0.0488866 0.0920529 0.0724026 0.0349667 -0.505358 -0.069747 0.712375 0.0462967 1.4762 0.00604198 -0.0436726 0.34147 -0.00116369 0.0381141 0.151884 0.134296 -0.0688334 0.0702448 -1.45203 0.563729 -0.193156 0.0927795 0.191839 -0.233186 -0.116123 0.113839 0.753732 0.0169754 1.58674 -0.171863 -1.41161 0.425863 0.0281105 0.506803 -0.468647 0.0174329 -0.00385064 -0.0179292 -0.0364448 0.792408 0.298643 0.00920253 0.515051 -1.80601 -0.0123227 -0.0137067 -0.299035 0.1163 0.0397449 -0.0706166 -1.21771 0.323613 0.43202 3.78496 -0.546041 -0.521166 0.0455298 -0.165238 -0.279463 0.0446148 0.0460467 0.290178 -0.204079 -2.4375 -3.7474 -0.0306911 -0.304803 -0.0277425 -0.110663 1.0772 0.116234 -0.109894 0.0131369 0.317504 0.0176443 -1.09919 2.29188 -0.400844 -2.94913 0.0168729 -0.0689673 -1.3551 -0.0117232 -0.0921586 0.0778178 -0.723665 -0.00735456 -0.0179454 0.00977815 -0.034111 -0.281853 0 +271 0 0 0 0 0 -0.131625 0.122989 -0.14578 -0.960282 0 0 0.361323 0.508826 0 1.33793 0.249962 0 0 0 0.31309 -4.51231 0 0 0 0 -0.324326 0 0 -0.516489 -3.1815 0.411806 0 1.39709 0 0 -0.0716068 0.0142667 0 0 0.412703 -1.64102 0 0 -0.204008 1.8087 0 -0.1027 -1.23465 2.43015 0.159522 -0.23587 0.648272 0 -0.766282 0.00344873 0.109955 -0.764392 -0.298652 0.877904 0 0 0.973564 -0.475223 0 1.0574 0.435796 0.910649 0 0 0 0 -0.109561 0.613866 0 -1.23269 0.124679 0 0 0 2.91628 0 0.451789 3.64255 0 0.361243 1.57264 0.683956 0 -0.289955 2.46212 -3.90437 12.0441 0 0 0 -0.185192 0.0269538 0 0 0 -0.00159019 0.0423561 0 0.0110586 0 0.00141689 -0.0273631 0 0 0 0 0.116664 0 0.0294808 0 0.174435 0 -0.0877008 -0.299085 0 -0.0215012 0 0 -0.266854 0.00145229 -0.0983695 0 0.0154257 0 0.00213641 -0.230872 -0.0866374 0.0321079 -0.0745785 0 4.54063e-05 0 0 0 0.000774807 0 0 -0.00415628 -0.00142548 -0.109674 0.0495174 0 0 -0.00500464 0 -0.00716898 0 0 0.0478499 -0.0196994 0.0923914 -0.0667304 0 0 0.172506 0.140921 0.0345801 0.357769 0.327478 0 0.311233 -0.000162365 -0.1245 0 0 0 -1.28294 0 -0.147725 -0.121359 0 -0.0111999 -0.0356293 -0.17494 0 -0.00136976 -0.00448757 -0.0237611 0.171548 0 -0.131625 -0.185192 0.122989 0.0269538 -0.0220171 0.027068 -0.0149798 0.123113 1.57142 -0.0441207 0.0358139 -0.484056 -0.0206364 -0.143741 0.0817991 0.245563 -0.0476704 -0.0273736 -1.75614 -0.239292 -0.188411 -0.0483052 -0.405617 -0.195492 0.168226 -0.0875298 1.57174 -0.0171911 3.31894 0.227955 -1.1703 0.834616 0.0225326 -0.0419547 -0.537031 -0.107907 0.00233074 0.00361748 0.0253914 -0.843057 0.333413 -0.00892057 2.13395 -1.89736 -0.00210202 0.0339853 -0.221962 -0.0683979 -0.180559 -0.561584 0.358172 0.122284 0.0144029 1.18613 -0.0750181 -0.389213 -0.00273751 -0.0470615 0.210214 0.105535 -0.519279 0.714906 -0.0443395 -2.10272 -3.48438 -0.229311 0.0636629 -0.041777 -0.0684298 0.334231 0.222458 -0.0569513 0.0223805 0.13794 0.0135811 -0.586649 1.90009 0.290451 1.04394 0.0834863 -0.456923 2.2972 0.0229425 -0.301953 0.884885 -0.93983 0.00286598 -0.222355 0.512858 -0.722021 1.23662 0 +272 0 -0.450872 -0.498727 -0.0350717 0.0208915 0.0794917 0.032327 -0.816334 -1.44062 0.141611 -0.000700637 -0.0042566 0.430614 0.0344584 -1.13232 0.0643889 -3.00207 -13.4467 -0.0780536 0.228958 -0.9194 0.00107743 0.214166 -0.0369622 0.104702 -0.0753713 -0.799315 -0.258788 -0.22 -0.486296 -0.0344129 -0.0458285 0.302145 0.706535 -1.13816 -0.123922 -0.00975188 -0.468326 1.85913 -0.0732488 -0.114087 0.0909841 -2.36537 -0.046761 -1.36759 0.241377 0.129582 -0.296918 0.77516 0.0919658 -1.23872 -0.574816 -3.75014 -0.30936 0.239162 -0.328129 -2.73219 -0.960272 -0.0859386 -0.169994 -0.110241 -0.71835 0.335666 -1.42274 0.351576 0.962285 0.713395 -0.930134 -0.390494 -0.0984949 -0.62933 -0.589204 0.0126098 0.901052 -0.174157 0.299344 0.693752 -9.02855 -1.19757 0.899312 -1.96463 0.986891 -0.927767 -0.449277 0.403049 -0.128658 2.55163 -0.339053 0.318993 -0.0948183 -0.406604 1.75824 0 0 0 0 0 -0.0350717 0.0208915 -0.000878495 0 0 0 0 -6.64704e-05 0 -0.0108936 0 0 -0.000178384 -9.2405e-05 -0.0134706 0 0.000474292 -0.201874 -0.113133 0 0 -0.840999 -4.5666e-06 0 0.0530874 -3.41334 0 0 -0.122872 -0.875077 0 0.209333 0 -0.283347 0 0 -0.0417815 0 0 0.513298 -0.00132434 -0.00357445 0 -0.0174871 0.00232452 0 0 0.137018 0 -8.91153e-05 0.149347 0.000809441 0 0 -3.12465e-05 0.002425 0 0.000301738 -0.0594334 -0.0012207 -1.28772 -0.000819871 -0.0884248 0 -0.000269458 0.124709 -0.303366 -0.0117967 -0.259012 0 0 0 -0.820253 0.0153043 0.0548296 0.000839466 -0.000950738 -0.204241 6.23055e-05 -7.67585e-05 0.00155599 0.0468287 0 0 0 0 0 0 0.0794917 0 0.032327 0 0 0 0 -0.0897356 -0.603585 0 0 -0.0871003 0 -0.000224081 0 -0.00884595 0 0 -0.81528 0 0.444417 -0.00979342 -0.0425077 -0.138307 0 0 -0.13502 0 -7.7148 0 2.10069 -0.30075 0 -0.253568 0.947668 -0.0061133 0 -0.00313774 0 0 -0.0600988 0 -2.1931 -1.13781 0 0 -0.214377 0 0 -0.155472 -0.600839 0.0167494 0 0.639971 0 0.213097 -0.0643482 0.0800194 0.0191407 0.173364 0.379965 -0.0885848 -0.12455 0.468614 2.83551 -0.00740772 0 0 0 0.0186337 -0.0392353 0 0 0 0 0.18918 -2.29123 0.91811 -0.146216 -0.000688688 0.0021986 -0.223879 -0.0446985 0.0315626 -0.0199058 0.17206 0 0 0 0 0 0 +273 0 -0.773129 -0.191908 0.0629742 0.0655229 -0.186902 -0.154832 -0.659181 -0.282517 0.55195 -0.79657 -0.0942841 -1.24232 -0.0471834 -2.11204 -0.0653488 0.184406 0.0953816 -0.113322 -0.113846 0.628644 -0.0703719 0.0756606 0.0713764 -0.35031 -0.128841 0.0227527 0.235073 0.160807 0.187156 -0.503789 0.208308 -0.451072 0.333889 0.764348 -0.145622 -0.00453703 0.707574 1.81514 -0.200368 -0.0342942 -0.0777736 2.66632 -0.00138525 -4.83059 -0.0609338 -0.24163 0.151066 -0.650372 0.0546747 -0.569367 -0.721378 -1.03284 0.282385 -0.0139724 -0.106037 1.36004 0.718995 0.427411 0.374516 0.120639 -1.15521 -0.52079 0.160574 -1.34251 -0.551009 0.65806 0.423696 0.876928 -0.386063 0.564454 -0.69093 -0.744624 -0.987941 1.3855 0.311414 -1.08551 -3.29254 0.0176721 1.2017 -0.377703 0.140121 -0.592686 0.866308 -0.683508 1.15489 0.438832 0.0855914 0.0731838 -0.0212897 0.56967 -0.676675 0 0 0 0 0 0.0629742 0.0655229 -0.000421635 0 0 0 0 -2.81218e-05 0 0.00866329 0 0 2.05587e-05 -5.29614e-06 -0.0125788 0 -0.00211345 -0.112482 0.0521272 0 0 -0.156834 -2.16564e-06 0 0.0889838 -0.969016 0 0 -0.0227105 -0.289613 0 0.238862 0 -0.0295843 0 0 -0.00191887 0 0 0.987831 -0.000560203 0.00147446 0 -0.0083962 -0.00893283 0 0 0.151568 0 -2.06694e-05 0.179318 -0.00136383 0 0 6.56749e-05 0.00120682 0 -0.000119162 -0.235952 0.00363992 -3.82125 -0.00180892 -0.0447377 0 -9.58402e-05 -0.0889404 -1.08606 0.00734851 -0.394921 0 0 0 -2.0352 -0.0126347 -0.175871 -0.00117868 0.00385594 -0.422683 -6.19212e-05 0.000241006 -0.00283101 -0.0324926 0 0 0 0 0 0 -0.186902 0 -0.154832 0 0 0 0 0.224715 -0.44371 0 0 -0.186872 0 -0.00788011 0 -0.0855077 0 0 0.368492 0 0.197298 0.0212203 -0.101566 0.0509137 0 0 -0.62907 0 -7.27105 0 3.02834 -0.884927 0 0.493712 0.891501 -0.0013822 0 0.0145877 0 0 -0.0696224 0 -2.65311 -0.109528 0 0 0.0170213 0 0 -0.344092 -1.18966 0.0821768 0 -2.67492 0 0.153731 0.0371925 -0.0595776 -0.283266 -0.10651 -0.188632 -0.381301 0.171267 1.791 1.21185 0.00267109 0 0 0 -0.26646 -0.0998808 0 0 0 0 0.464053 -15.3428 -0.955404 -0.850151 -0.497485 0.511898 -1.02029 -0.02958 0.0166344 0.0285374 -0.176954 0 0 0 0 0 0 +274 0 0.13287 0.0752641 0.209246 0.0213784 -0.0676118 -0.3745 1.02021 2.8058 0.193437 -3.3358 0.00798858 0.187492 -0.188079 -1.62883 0.0217333 0.937141 5.70263 -1.10458 0.160925 -0.695938 -0.466234 -0.0497542 0.226364 -1.38644 1.22627 -0.0881503 0.332396 0.580291 0.385872 -0.142356 0.434825 -0.488701 -0.994405 0.690574 0.645438 0.0778296 1.46997 -4.30466 0.659853 -0.309908 -0.431739 4.01546 0.385817 -2.71536 -0.944577 -0.626082 0.680631 0.321388 -0.57701 0.641059 -1.8826 -4.02889 -0.138884 0.161466 -0.0709475 -0.381658 0.237406 -0.0346038 1.63839 0.550578 -0.990362 0.3862 3.631 -3.17966 -1.33602 0.24169 3.84737 1.9614 -0.135164 2.32482 -0.078946 0.142164 -1.6099 -0.253209 -0.210352 -2.37918 18.5301 9.66392 -5.77172 6.18173 -4.50594 4.42981 3.50558 -2.98775 3.97236 -4.07005 1.32681 -1.51043 1.43658 -0.765165 -1.39515 0 0 0 0 0 0.209246 0.0213784 0.00295498 0 0 0 0 0.000226389 0 -0.0283886 0 0 0.000126354 -6.14927e-05 -0.177705 0 -0.0286612 -0.273791 -0.1801 0 0 -0.155846 -4.46104e-06 0 0.154952 -0.673312 0 0 0.0011632 -0.4001 0 -0.0264788 0 0.0231043 0 0 0.0168909 0 0 -0.354143 0.0045148 0.00314235 0 0.0589123 -0.0295246 0 0 0.109139 0 0.000262357 0.19198 -0.00185775 0 0 -0.000421152 -0.00821904 0 0.000433522 0.00197224 0.00797847 0.740836 0.00314224 0.00104543 0 0.0181248 0.118705 0.164974 0.0305561 0.0342167 0 0 0 0.254175 -0.0347363 0.0631153 -0.0020153 0.0051096 0.054232 -0.000155966 0.0003145 -0.00438846 0.0774533 0 0 0 0 0 0 -0.0676118 0 -0.3745 0 0 0 0 -0.0906701 1.07032 0 0 -0.0416528 0 -0.00785326 0 -0.0590754 0 0 0.0948993 0 0.463719 0.012506 0.0451396 -0.00780935 0 0 -0.423322 0 -0.384181 0 0.222938 -0.482245 0 -0.0818463 0.426946 0.0254205 0 -0.000384094 0 0 0.117228 0 -1.20608 -1.41718 0 0 -0.194998 0 0 -0.0339026 -0.649803 0.0395131 0 1.29569 0 -0.146431 0.15335 -0.0903736 0.247355 -0.0156018 -0.526599 0.192228 -0.00633619 -0.750152 1.64844 -0.0200125 0 0 0 0.158459 0.00845596 0 0 0 0 -0.284787 1.90325 0.529663 -0.0144527 -0.569852 0.729414 -0.740467 -0.0592103 0.0640211 -0.0169073 -0.0273087 0 0 0 0 0 0 +275 0 0.376225 0.31034 0.0472976 0.293328 -0.121784 0.215083 -0.513709 -0.925273 0.975392 -0.162114 0.0687356 -0.508905 0.000265309 -0.87305 -0.0467753 2.159 8.04949 0.276838 -0.119415 1.68566 0.103819 0.0193687 0.0163886 0.0522217 -0.548269 0.558809 0.220239 -0.629057 -1.32886 0.0148569 0.128189 -0.40612 0.194639 1.04691 -0.301151 0.0065968 0.903856 -0.325977 0.145499 1.01378 0.00369878 3.99325 0.0192549 -2.69805 0.0631853 0.683027 -0.907878 -0.921052 -0.172222 0.870089 -0.204343 -2.96028 0.345611 -0.114677 0.216375 1.80588 0.313864 0.571763 -0.0518619 0.0199933 0.645008 -2.04648 0.0791734 -1.19582 -1.19393 0.778475 0.76482 0.916992 -0.501532 -0.0342079 -0.0518402 -0.0812157 -1.26055 0.977742 0.811563 -3.1671 1.25601 1.20529 0.201238 0.558751 -0.39309 2.35841 0.37298 -0.00635383 0.361948 2.04119 -0.0197637 -0.0306865 0.163915 0.0656848 1.84704 0 0 0 0 0 0.0472976 0.293328 -0.00181284 0 0 0 0 -0.000542323 0 -0.0207247 0 0 -0.00118774 -0.000624534 -0.0173645 0 -0.00258937 -0.0175886 -0.121927 0 0 -0.0831579 -2.19572e-05 0 0.0239598 -1.07792 0 0 -0.0138408 -0.173418 0 0.0576783 0 0.00788179 0 0 0.000371386 0 0 -0.212526 -0.0107955 -0.0245346 0 -0.0358413 0.0488697 0 0 -0.0657004 0 0.000906928 0.00766397 0.00608834 0 0 0.00168806 0.0054284 0 -0.00471317 -0.0241783 -0.0103114 -0.22135 0.0151407 -0.0397852 0 -0.00517383 0.0136474 -0.00328507 -0.0455498 -0.181733 0 0 0 3.04873 0.232352 0.409453 0.0155428 -0.00621605 0.160776 0.000856465 -0.000661227 0.01512 0.0472639 0 0 0 0 0 0 -0.121784 0 0.215083 0 0 0 0 0.0786152 0.872557 0 0 -0.431312 0 -0.0185792 0 0.0117463 0 0 -0.28537 0 -0.430542 0.00351459 -0.0552114 -0.044838 0 0 0.0774077 0 0.813234 0 -1.01851 0.303739 0 0.0481834 -0.396936 0.0109215 0 0.00257444 0 0 0.105488 0 0.0529375 -0.670723 0 0 -0.0852632 0 0 -0.336521 -0.674099 -0.127883 0 2.43098 0 -0.646476 0.0101391 0.0671103 -0.57598 0.0865361 0.624951 0.567295 -0.139713 -0.485902 4.42361 -0.0275542 0 0 0 0.517084 0.0455481 0 0 0 0 -0.252221 9.93399 2.98422 -0.939609 0.895623 -0.784678 0.949439 0.160611 -0.151956 0.209467 0.0549163 0 0 0 0 0 0 +276 0 -0.694354 0.0531061 0.0151804 0.0351826 -0.238304 -0.0335704 -0.117678 0.414647 0.257007 -0.379641 0.111065 0.116903 -6.81001e-06 0.0475759 -0.0202658 -0.505545 -0.375149 -0.109159 -0.0621598 3.52763 -0.0328468 -0.127723 0.00706546 -0.168374 0.15669 -0.193396 -0.0630441 0.352405 0.547254 -0.163842 0.0470356 -0.105882 -0.0677411 -0.169681 0.0114018 0.0115049 -0.158747 1.21464 0.119372 1.15227 6.46073e-05 0.0660836 0.0109379 1.11028 0.00944971 0.198732 0.422053 -0.332435 0.0494405 -0.381787 0.0458233 3.48959 0.1248 -0.00850898 -0.0966722 2.63811 0.853484 0.960579 0.182797 -0.0107368 -1.16774 -4.18588 1.13481 -0.269106 0.477229 -0.102301 0.134236 -0.304205 -0.139165 0.989311 -0.366015 0.119486 0.195462 0.251983 -0.194025 1.31046 -2.24658 0.553615 -0.971246 -0.257475 0.464845 -2.44525 0.40031 -0.304169 0.191169 -0.985934 -0.00295577 -0.0198552 -0.0921549 -0.151653 -0.760651 0 0 0 0 0 0.0151804 0.0351826 -0.00194618 0 0 0 0 -0.000338418 0 0.000373713 0 0 -0.000133833 0.000786466 -0.0059761 0 -0.000829579 -0.0117019 0.00310291 0 0 -0.0670386 1.88629e-05 0 0.0278784 -0.167352 0 0 -0.0132222 -0.0364966 0 0.100998 0 0.00325802 0 0 9.42179e-05 0 0 0.599973 -0.0067095 0.00212439 0 -0.0385837 -0.0162575 0 0 0.156259 0 0.000631149 0.520714 -0.00936184 0 0 0.000908673 0.00633657 0 -0.00402342 -0.0946348 0.0182787 -0.639026 -0.000650936 -0.0247617 0 -0.00118835 0.00610774 -0.306904 0.0430768 -0.0519355 0 0 0 -1.09299 0.0372275 -0.0323774 -3.63261e-05 0.0384095 -0.487342 3.57953e-05 0.00167129 -0.0152753 -0.0706706 0 0 0 0 0 0 -0.238304 0 -0.0335704 0 0 0 0 0.208864 0.0938012 0 0 -0.261152 0 -0.0355742 0 -0.00811292 0 0 1.03208 0 0.133358 0.0104459 -0.174093 0.160966 0 0 -0.00642695 0 2.81637 0 2.52274 0.183208 0 0.434701 0.686303 -0.028363 0 0.0122515 0 0 0.000658287 0 1.05723 1.91064 0 0 0.301631 0 0 -0.345047 0.962188 0.104476 0 0.0406356 0 0.35868 -0.0547002 -0.0173773 0.255878 -0.0580929 0.21079 -0.397764 0.204821 2.39789 11.1208 0.0238875 0 0 0 0.294131 -0.137917 0 0 0 0 0.255945 -10.097 -0.424984 -0.457905 -0.288144 0.203743 -0.507595 -0.0532749 0.0521335 -0.0389912 0.0278212 0 0 0 0 0 0 +277 0 0.50709 0.443876 0.00355429 -0.0984714 0.0850492 0.228492 -0.704201 -1.66622 0.190619 0.037357 -0.275342 -0.337233 0.000979464 0.349614 -0.0642615 0.763894 3.37902 0.00857322 -0.180425 5.96401 -0.0103373 -0.490982 0.00397376 -0.216562 -0.560927 0.47956 0.0803141 -0.0578882 0.859446 -0.0285573 0.0285021 -0.589317 -1.37699 0.399121 -0.354315 -0.0462501 0.140269 -4.74947 -0.503985 2.40135 0.021113 0.753951 -0.0866365 1.29624 0.208725 1.04048 0.227405 -1.50307 0.287203 -0.619708 0.218158 1.86586 0.519788 0.141589 -0.21173 -0.221597 1.07788 -0.49276 0.231485 -0.0676369 -0.85213 -2.46168 1.78464 0.574293 0.537839 -0.562466 0.504122 0.0464859 -0.0888088 0.832474 0.0931816 -0.543528 0.0125369 -2.22991 0.507965 0.928955 18.1714 3.20614 4.4827 2.30672 -1.05974 4.00442 -0.0144721 0.254426 -0.70688 2.00026 -0.065287 0.0526207 -0.279471 0.242375 -1.19458 0 0 0 0 0 0.00355429 -0.0984714 0.00208723 0 0 0 0 0.000716666 0 -0.0188318 0 0 0.000637992 -0.000920518 -0.0263184 0 -0.00562234 -0.0655843 -0.0755342 0 0 0.257193 -6.62257e-05 0 0.0192986 0.174642 0 0 0.0478781 -0.11633 0 0.0511997 0 0.0326397 0 0 0.00842031 0 0 0.110571 0.0143386 0.0153736 0 0.0417062 -0.091826 0 0 0.285618 0 -0.00172868 0.171456 -0.00872805 0 0 -0.00297987 -0.00740181 0 0.00868728 -0.110947 0.0221873 1.05149 -0.0267472 0.028229 0 0.0367417 0.0663993 0.0779338 0.0431822 0.102969 0 0 0 -3.93596 -0.27512 -0.457044 -0.0212421 0.0275519 -0.363348 -0.000961436 0.00129133 -0.0206884 0.0191076 0 0 0 0 0 0 0.0850492 0 0.228492 0 0 0 0 0.0043743 -0.793422 0 0 0.135784 0 -0.0322126 0 -0.105113 0 0 1.20342 0 -0.736597 -0.0633564 0.00674602 0.170022 0 0 -0.762731 0 0.842983 0 -2.89175 -0.179547 0 -0.481862 -1.24239 -0.0246002 0 -0.00791086 0 0 -0.12209 0 -0.322413 1.9396 0 0 0.291552 0 0 0.309912 0.570224 -0.150419 0 -2.66923 0 -0.00746072 -2.77294e-05 0.0387524 0.431208 -0.114804 -0.18677 -0.325574 0.0915654 1.1349 -2.6137 -0.0237277 0 0 0 -0.462614 -0.0147382 0 0 0 0 0.339425 13.1168 -0.324325 2.97211 -0.169773 0.19969 0.451944 -0.179969 0.187452 -0.172442 0.371447 0 0 0 0 0 0 +278 0 0 0 0 0 -0.128651 -0.0508837 1.52214 2.49219 0 0 -0.0750587 -0.267127 0 0.423899 0.0141333 0 0 0 0.0534348 -1.69915 0 0 0 0 0.204579 0 0 -0.0502596 2.75411 0.174718 0 0.0518011 0 0 0.199649 -0.0548986 0 0 -0.790708 -0.00136682 0 0 -0.342541 -1.79908 0 -0.0106414 0.451622 0.0920462 0.42556 1.21861 0.553703 0 0.270787 0.25087 0.38914 0.900002 0.434724 0.854042 0 0 2.44217 -1.33045 0 1.63085 -0.101707 -0.469547 0 0 0 0 1.29029 -0.374032 0 0.0350081 -0.156146 0 0 0 -7.40946 0 1.25981 -5.45221 0 1.13878 -2.07618 -2.77778 0 1.7909 -3.43861 3.6533 -8.08068 0 0 0 0.0755604 0.0124851 0 0 0 -0.063502 -0.0362329 0 -0.00860503 0 -0.00373898 0.0426443 0 0 0 0 0.199943 0 0.0318482 0 0.365087 0 -0.382847 -1.05747 0 -0.00501609 0 0 0.0849661 -0.00231867 -0.246909 0 -0.0124614 0 -0.00199788 -0.183306 0.00389102 -0.0224015 -0.055665 0 -0.000424917 0 0 0 -0.00091024 0 0 0.000826511 -0.00456022 0.150186 -0.0772094 0 0 -0.0712182 0 0.00100923 0 0 -0.0299598 0.0130716 -0.217136 -0.0346373 0 0 0.0624867 0.0738695 0.0816097 0.0331347 0.350398 0 -0.14868 0.0143027 0.504004 0 0 0 -1.61538 0 -0.156532 -0.0452126 0 -0.0257103 0.0225799 -0.0695032 0 0.00385007 -0.0110311 0.0155425 0.0410975 0 -0.128651 0.0755604 -0.0508837 0.0124851 -0.2756 -0.0776447 0.328638 0.187667 2.27408 0.0023342 -0.0111359 -0.0792604 -8.32093e-05 -0.00306044 0.0531159 0.146795 0.0913547 0.032211 0.318858 -1.18461 -0.65587 0.0547404 -0.0969091 -0.0263502 0.265849 0.0868983 0.631208 -0.0189553 7.67539 -0.178911 -3.70293 0.904327 0.010741 0.671767 -1.79656 -0.0175723 -0.00247101 -0.000537433 -0.0421708 0.79174 0.510735 0.00918904 3.3156 -0.819896 0.00433819 0.00518253 -0.209574 -0.137393 0.0892533 0.4141 2.50677 -0.0267084 0.0168442 2.18029 -0.180411 0.125782 -0.0437597 0.0578905 -1.59396 0.125356 1.59841 0.846078 0.00566281 -1.01679 -2.4905 0.147369 -0.021304 -0.0421666 -0.125548 0.41474 -0.366782 -0.147366 -0.0419397 0.125393 0.135694 -0.672952 51.2031 7.86803 -6.04869 3.00205 -0.549279 -2.19455 0.00534959 0.268695 -0.92222 0.218389 -0.0561028 0.201919 -0.598937 0.455867 -0.800107 0 +279 0 0 0 0 0 -0.309336 -0.207987 1.9595 4.84293 0 0 0.0112769 -0.351966 0 -0.523474 -0.0835364 0 0 0 -0.413865 1.04426 0 0 0 0 0.812938 0 0 -0.122979 -2.27583 0.16481 0 -0.148296 0 0 0.304861 -0.0302484 0 0 -0.45241 0.137105 0 0 -0.225121 -4.06722 0 -0.0159391 -0.428631 -0.459025 0.371256 3.48351 -0.374249 0 0.388936 -0.2676 -1.01122 2.84901 0.407061 0.852481 0 0 -0.4768 -0.488811 0 -2.02737 -1.8255 -1.77523 0 0 0 0 0.74235 -1.32252 0 3.3623 0.718151 0 0 0 -14.838 0 -0.618854 3.8497 0 -0.296567 1.5393 -5.77703 0 0.9579 1.11754 -1.34333 10.692 0 0 0 0.0737526 0.00549344 0 0 0 0.0896974 0.0172509 0 0.012834 0 -0.00806875 0.105451 0 0 0 0 0.300777 0 0.0412416 0 0.713268 0 0.57373 -0.643656 0 0.0100164 0 0 0.120202 -0.00445783 -0.0633079 0 0.00845627 0 0.000269098 -0.143134 0.0313977 -0.0559798 -0.0180967 0 -0.000557227 0 0 0 0.000479456 0 0 0.00733551 0.00489901 -0.541659 -0.0213919 0 0 0.0393276 0 0.0013773 0 0 0.0791412 -0.0490528 -0.123125 0.0180543 0 0 0.244858 0.0445969 0.0428564 -0.0655273 0.17184 0 0.362289 -0.0230357 -0.113839 0 0 0 -1.51562 0 0.00859391 -0.401442 0 -0.0105109 -0.014492 -0.211565 0 0.00503378 -0.0183991 0.0172298 0.0905524 0 -0.309336 0.0737526 -0.207987 0.00549344 0.452863 0.0407444 -0.133418 0.302837 -0.890586 -0.00922931 -0.0526592 0.341118 -0.000982248 0.0595007 -0.0279356 -0.0168878 -0.0941587 -0.0599706 -0.663826 0.52661 -0.360714 0.188575 0.000476311 -0.154184 -0.354789 -0.0718009 -0.109928 -0.00642296 -2.41313 0.355184 -0.911819 -0.429892 -0.0044438 0.96594 -0.88192 -0.0011518 0.00465469 0.0486991 0.0377025 -0.847796 -0.218233 -0.00408424 -1.51584 -0.728829 -0.0124079 0.0350899 -0.222296 0.0185583 0.0575566 0.180974 6.1755 0.685725 0.0555712 2.1079 0.0621515 -1.67012 0.121997 -0.528507 0.31528 -0.0222107 -0.084418 2.1633 0.303779 2.64733 10.2056 -0.361605 -0.0401225 -0.177619 0.0131675 0.583434 0.0720645 0.145473 -0.0246808 -0.204975 -0.00699423 0.209683 12.6084 -0.555936 -7.1376 1.2087 -2.48378 3.1681 -0.178516 -0.492304 0.583136 -0.692305 0.104452 -0.310229 0.378043 -0.283775 0.580475 0 +280 0 0 0 0 0 0.508505 0.589213 -1.39838 -4.06678 0 0 -0.190608 2.65716 0 4.53287 0.419584 0 0 0 0.716747 0.587641 0 0 0 0 -0.727964 0 0 -1.00205 3.26615 1.20328 0 2.24576 0 0 -0.339986 0.0861775 0 0 -3.08504 0.716745 0 0 -0.626539 11.3476 0 0.82552 -0.432414 4.46754 -0.0451985 0.516772 -0.367217 0 -0.235759 0.041712 0.262929 -1.18915 -0.175042 -3.32437 0 0 -0.319495 5.81509 0 -0.127698 -0.338884 1.58839 0 0 0 0 -0.713781 1.14678 0 -5.1212 -0.868476 0 0 0 10.176 0 5.07751 -3.53902 0 2.24824 -2.24784 5.65801 0 3.71635 -4.24341 7.79236 -11.3348 0 0 0 0.468728 0.129019 0 0 0 0.14824 0.0131959 0 0.0307939 0 -0.0154876 -0.0696257 0 0 0 0 0.0722674 0 0.0133999 0 -0.241037 0 0.599853 0.931013 0 -0.00504076 0 0 0.126231 -0.00428678 0.178488 0 -0.00877302 0 0.00046463 0.139308 0.00411795 -0.0704226 0.0320119 0 -0.000933025 0 0 0 -0.00060418 0 0 0.00257573 -0.000935799 -0.305207 0.0422093 0 0 0.0278864 0 0.00204759 0 0 0.0127546 -0.00727285 -0.236392 -0.00187037 0 0 -0.00144351 -0.0796321 0.0557854 0.0118693 -0.248374 0 0.287219 0.00241977 0.132457 0 0 0 0.783528 0 0.170029 -0.170637 0 0.0117864 -0.00198658 0.00554855 0 0.00273765 -0.00801753 0.0222752 -0.0787575 0 0.508505 0.468728 0.589213 0.129019 -0.774449 -0.0781549 1.43324 -0.652686 3.53437 0.0181423 -0.169646 1.32172 -0.00332647 0.0647018 0.216173 0.257621 -0.130167 0.461265 -1.28409 0.716119 0.318177 -0.445535 0.349892 -0.16976 -0.891323 0.228804 1.59876 0.0224604 3.86808 -1.31599 3.11419 1.45366 0.0336368 -2.40933 1.19001 0.00400797 -0.0325301 -0.121589 -0.25242 1.69897 0.526692 0.025815 2.73088 -3.17437 -0.0225587 -0.156363 -0.374349 0.146273 0.270699 0.259905 -7.6369 -2.33203 0.0332886 1.81716 -0.605487 2.75368 -1.80365 1.80251 -1.61674 0.19634 1.18687 -4.05792 -0.188992 -3.93002 -6.54585 0.631052 -0.387589 0.298378 -0.373929 0.323595 -0.523762 0.0293373 -0.237757 0.108674 0.0913937 -1.51542 -43.0621 -15.2944 18.68 -5.90116 7.78125 -8.20755 -2.06288 2.42516 -2.5493 2.33232 -0.803398 1.23204 -1.45564 1.41776 -1.58302 0 +281 0 -0.19063 -0.136701 0.155879 0.0194966 0.00524396 -0.315686 0.474946 1.47203 -0.692807 -2.78838 0.0804515 0.418779 -0.143675 -0.204337 0.166955 -1.61125 -4.83508 -0.940911 0.444539 -4.10892 -0.478906 -0.107397 0.101987 -1.39436 0.963391 -0.583699 0.0153615 0.415872 0.704614 -0.0310697 0.099926 0.815414 -0.438628 -0.178756 0.488313 0.102722 0.604755 -0.254499 0.41395 -1.99625 -0.339451 1.56504 0.255079 -0.291984 -0.755707 -0.972039 0.567483 2.12657 -0.68927 0.378177 -3.17083 5.26517 -0.459358 0.0493151 0.374585 1.91833 -0.109843 -1.93345 1.89738 0.489049 0.359446 5.12873 2.76372 -2.19991 -1.46221 0.907096 2.40066 1.72195 0.862543 2.31215 -0.098699 0.290464 0.220355 -1.24883 -0.886394 -0.871404 -2.48309 7.88459 -5.08788 4.96463 -1.66982 -3.10911 4.33637 -2.71733 2.57954 -1.30971 1.07915 -0.92245 0.474156 0.0492029 -1.82235 0 0 0 0 0 0.155879 0.0194966 0.0138866 0 0 0 0 0.00103274 0 0.011217 0 0 -0.00457939 -0.0347986 0.0348101 0 -0.00295717 -0.148828 0.0752014 0 0 -0.336488 -0.00252669 0 0.0612721 -2.27248 0 0 -0.0501805 -0.586366 0 0.0787482 0 0.0143892 0 0 0.00403903 0 0 0.691918 0.0164728 -0.0561249 0 0.204043 -0.0671418 0 0 0.134102 0 0.00222562 -0.248639 0.0040672 0 0 0.0080412 -0.0405366 0 -0.0182291 0.153375 -0.0409101 1.37326 -0.0313954 0.0507435 0 0.0338409 0.0140406 0.00306812 0.0300899 0.00233282 0 0 0 -4.66712 -0.319923 -0.133771 -0.0104731 -0.0267379 -0.0751624 0.00728373 -0.0123352 0.00992984 -0.012326 0 0 0 0 0 0 0.00524396 0 -0.315686 0 0 0 0 -0.297731 1.66325 0 0 0.37172 0 0.0466843 0 0.0667685 0 0 -0.763089 0 1.07501 0.0260845 0.471483 -0.08783 0 0 0.626667 0 -0.734828 0 4.421 -0.425739 0 -0.0207334 2.29433 0.0639485 0 -0.0156303 0 0 0.203419 0 -0.887486 -1.5679 0 0 -0.189067 0 0 0.249651 -2.3618 -0.154147 0 1.6259 0 1.26376 -0.521672 0.349163 0.8592 0.172117 -1.08288 -1.3824 -0.227141 -1.65481 4.79097 -0.248989 0 0 0 0.0187339 0.212362 0 0 0 0 -0.456119 -56.3707 -10.955 4.94224 -3.45264 1.43793 -1.27017 -0.393164 0.198209 -0.103705 -0.0615705 0 0 0 0 0 0 +282 0 -0.827283 -0.45532 -0.0245021 0.196454 0.0451741 0.112771 -0.805384 -1.38234 -0.334829 -0.0517191 0.361752 -0.954464 0.0544878 -0.681025 -0.117069 -0.782513 -8.07669 0.497623 -0.304801 -0.762427 0.196325 0.408282 -0.0846409 0.1201 -0.790465 0.166974 -0.0173364 -0.246946 -0.852613 -0.292351 -0.212043 -0.0214061 2.06964 0.656263 -0.432136 -0.00454345 -0.590143 8.22867 0.628793 -0.0207121 0.104131 0.227557 0.000740838 -1.71031 0.201177 0.222375 -0.458191 -0.428938 0.314666 -0.998363 -0.135333 0.143078 -0.194293 0.563376 -0.285785 2.24934 0.263911 0.44411 -0.124821 -0.184205 -1.75316 -0.665964 -4.34514 1.7787 0.425153 0.817629 -2.20536 0.108775 0.660551 -0.31893 -1.34519 0.215323 1.27226 1.33864 0.359308 0.646818 -41.4728 -7.10582 6.34899 -7.48669 3.63244 -5.48813 0.765663 -0.657531 0.534148 1.83963 -0.28728 -0.282073 0.348611 -1.52041 2.20513 0 0 0 0 0 -0.0245021 0.196454 0.0043474 0 0 0 0 0.0030217 0 0.0400662 0 0 -0.0104485 -0.0303706 0.0333868 0 0.0124104 -0.00826879 0.182989 0 0 0.365774 -0.0021053 0 0.106816 -1.14998 0 0 0.0505113 -0.158597 0 0.50853 0 0.0449494 0 0 0.00504868 0 0 1.44332 0.0438222 -0.146644 0 0.070737 0.0383458 0 0 0.519944 0 0.0203397 -0.123445 -0.0302936 0 0 0.0138132 -0.000537333 0 -0.0447189 0.0857126 -0.0195037 0.727069 0.0182667 0.0571878 0 0.0470933 0.0309441 -0.253524 0.169234 -0.0951815 0 0 0 -4.41001 0.0810466 -0.460513 -0.0837067 0.076491 -0.179865 0.0114082 -0.0145315 0.0222652 -0.0291199 0 0 0 0 0 0 0.0451741 0 0.112771 0 0 0 0 -0.00040159 0.330876 0 0 -0.443263 0 -0.0390377 0 0.010134 0 0 0.271702 0 -0.105146 -0.0129811 -0.254488 0.0489281 0 0 0.267262 0 -3.9423 0 2.14753 -0.0978147 0 -0.308103 0.33825 -0.0269851 0 0.00875832 0 0 -0.0174714 0 -0.797293 0.671826 0 0 0.104678 0 0 0.201319 -2.74473 -0.19923 0 0.343837 0 1.23694 0.328266 -0.0561257 0.492532 -0.0782415 -0.349014 -1.29602 -0.11603 -1.04062 0.890237 -0.120126 0 0 0 -0.0457246 0.0168294 0 0 0 0 -0.0522954 -25.0331 -0.652232 3.29418 -2.12522 1.18589 -0.89813 0.472197 -0.238972 0.163653 0.155853 0 0 0 0 0 0 +283 0 0.89497 0.547477 0.111043 0.272669 -0.106699 -0.161257 0.192011 0.703737 2.15686 -1.22341 -0.312011 -0.288052 -0.0249664 -2.43894 -0.286848 2.20912 10.058 -0.385084 -0.595135 1.88107 -0.146165 -0.281206 0.109689 -0.563981 0.484263 0.547963 0.190072 0.53764 1.58078 -0.501517 0.475431 -1.61944 -1.00832 0.458977 0.189855 -0.0622514 0.647315 -3.76284 -0.646872 0.143678 0.0698379 2.23176 -0.102011 -3.15754 0.727005 -0.311557 0.920814 -3.41193 0.265077 -1.75203 0.0613283 -1.433 -0.0320379 -0.144758 0.70405 -0.110882 0.554408 3.12704 0.460146 0.0956521 1.10747 -2.76573 2.25735 -0.784571 0.0603728 -0.547917 2.30857 1.20857 -0.70898 0.178015 0.535603 -0.714723 -0.943528 4.00131 -1.35459 -0.571832 12.5808 3.48804 -0.560597 1.89463 -0.937438 -1.1343 1.54285 -0.704048 0.262654 0.209049 -1.03816 1.06495 -2.06881 2.14783 -4.08841 0 0 0 0 0 0.111043 0.272669 -0.000419401 0 0 0 0 -0.00120253 0 -0.00168187 0 0 -0.00223128 -0.0105809 0.0230581 0 -0.003743 -0.164454 0.0836881 0 0 0.426593 -0.000694619 0 0.0463852 1.07508 0 0 0.080033 -0.132183 0 0.0247616 0 0.158899 0 0 0.0287112 0 0 -0.143344 -0.0176873 -0.0359596 0 -0.00770833 -0.00569101 0 0 0.0597023 0 -0.00244483 -0.143514 -0.0031608 0 0 -0.0014242 0.00532476 0 -0.00505624 -0.183087 0.0200355 0.35823 -0.00434195 -0.0177806 0 0.0665035 -0.00838936 -0.199632 0.165238 0.0207663 0 0 0 1.02489 0.146547 -0.0533994 -0.0066371 0.016163 0.0152841 0.000939203 -0.000340165 0.00469591 -0.0125002 0 0 0 0 0 0 -0.106699 0 -0.161257 0 0 0 0 0.025184 -1.4089 0 0 -1.1274 0 -0.145941 0 -0.118612 0 0 0.686361 0 -0.590951 0.0132332 -0.370772 0.101959 0 0 -0.89468 0 -1.47531 0 -5.15178 -0.591739 0 0.303926 -1.61891 -0.0491775 0 -0.00328179 0 0 -0.184038 0 -1.09406 1.24728 0 0 0.179087 0 0 -0.277604 2.12276 0.226128 0 -0.996013 0 -1.56899 0.994074 -0.551059 -0.274934 -0.212872 0.13613 2.06458 0.135411 1.45275 2.71966 0.0926253 0 0 0 0.0250015 -0.142022 0 0 0 0 0.450603 60.6742 14.9991 -6.04546 4.60133 -2.55561 2.22535 0.862376 -0.506225 0.506623 -0.230587 0 0 0 0 0 0 +284 0 0.0290236 -0.0348444 -0.105986 0.12333 -0.159715 0.17962 -1.06206 -1.01987 1.27031 0.76854 -0.102559 -1.24934 0.09276 -2.25688 -0.135678 0.540305 -0.649666 0.489384 -0.274551 1.11234 0.198694 -0.11402 -0.0287794 0.313803 -0.783772 0.402327 0.194375 -0.341258 -0.453103 -0.518121 0.0867172 -0.913479 0.0189818 0.672546 -0.551162 -0.0940253 0.0723785 1.12266 -0.427 0.63589 0.256672 0.094436 -0.22929 -4.11929 0.697975 0.464993 -0.444966 -2.01175 0.597041 -2.17324 0.697616 -0.601585 0.639029 -0.113085 -0.150679 -1.12348 0.520916 0.907194 -0.63173 -0.284923 2.52371 -2.63818 2.21922 1.07754 1.32798 -0.0415089 -0.776077 -0.780875 -1.02542 -1.10353 0.227286 -0.951802 -0.166237 0.975146 0.552633 0.675575 -3.44063 -1.61049 5.58541 -2.68313 2.36905 -0.128098 -0.569019 0.362794 -0.288571 1.25159 -0.908609 0.868581 -0.600162 0.164153 1.16212 0 0 0 0 0 -0.105986 0.12333 -0.0154548 0 0 0 0 -0.00318561 0 0.0157701 0 0 -0.00148895 0.0214291 0.0253868 0 0.00270493 -0.135651 0.192589 0 0 0.116541 0.00102281 0 0.114777 -1.88837 0 0 0.0196091 -0.473379 0 0.485257 0 -0.0595186 0 0 -0.00684788 0 0 1.13876 -0.0563978 -0.00530677 0 -0.272849 -0.0869222 0 0 0.284267 0 -0.0105413 -0.317539 0.0037971 0 0 -0.0053608 0.0409508 0 0.0177119 0.19655 -0.0403687 1.14447 -0.0858091 0.0660604 0 -0.0508212 0.00919529 -0.36301 0.305515 0.063195 0 0 0 -12.341 -0.908389 -1.09076 -0.0482628 -0.0649356 -0.0934856 0.00248514 -0.0108584 0.00701027 -0.0292876 0 0 0 0 0 0 -0.159715 0 0.17962 0 0 0 0 0.20097 -2.0689 0 0 -0.553033 0 -0.0709248 0 -0.10976 0 0 0.113422 0 -0.662357 0.0293423 -0.44725 0.0395015 0 0 -0.865594 0 -5.90127 0 -0.453198 -0.423115 0 0.389642 -0.908495 -0.056498 0 0.0186063 0 0 -0.261906 0 -2.06034 0.558794 0 0 0.11684 0 0 -0.333976 2.87936 -0.0165878 0 -1.61862 0 -0.709902 0.5632 -0.158029 -0.223002 -0.151173 0.59364 0.974106 0.0251586 1.20483 1.92376 0.179092 0 0 0 -0.23871 -0.141651 0 0 0 0 0.690824 8.75201 5.76906 -4.0163 0.760431 -0.505716 0.316896 0.607723 -0.308937 0.262345 -0.21243 0 0 0 0 0 0 +285 0 -1.66581 -0.720595 0.042999 -0.0280592 0.184411 -0.20633 -0.315024 -1.12095 0.150867 -0.434987 -0.29259 -0.532673 -0.0605903 -1.06336 0.147779 -3.55737 -16.7034 -0.410918 0.328272 -2.83831 -0.200488 0.205532 0.0828027 -0.246804 0.179516 -0.859793 -0.0260607 0.254396 -0.172888 -0.288101 0.163421 0.229794 1.39788 -0.694512 0.150925 0.0131979 -0.13462 8.7295 -0.118477 -1.11873 -0.115003 -1.62487 0.118589 -3.23188 -0.208026 -0.541911 0.181105 0.802769 -0.225179 -0.666644 -1.37136 7.34012 0.634676 -0.334426 0.325815 1.21786 1.01432 -1.17929 0.546443 0.104825 1.8483 1.49664 -1.04047 -0.107017 0.376822 1.57519 -0.986643 -0.157695 -0.357487 -0.94342 -1.71358 0.254617 0.204332 -2.8323 -0.496098 1.58779 -43.3339 -4.43195 5.75752 -6.28786 6.44132 -8.28325 0.310226 -0.14739 0.489004 2.0449 0.270803 -0.0989235 0.379303 0.00563027 0.443423 0 0 0 0 0 0.042999 -0.0280592 -0.00223119 0 0 0 0 -0.00129479 0 0.039215 0 0 -0.000290431 0.0019938 0.0372739 0 0.0102089 -0.100156 0.135807 0 0 0.0820558 0.000101306 0 0.131382 -1.92186 0 0 0.00644492 -0.386017 0 0.49115 0 0.10249 0 0 0.0125444 0 0 1.90648 -0.0243929 0.0096509 0 -0.0338045 0.0186494 0 0 0.654776 0 -0.00274609 0.0609727 -0.0193591 0 0 -0.000457855 0.00399434 0 0.0120474 -0.146587 -0.015376 0.306352 -0.0743669 0.0344664 0 0.0357827 0.0441105 -0.225561 0.112454 -0.0571683 0 0 0 -12.2988 -0.632477 -1.07124 -0.0830765 -0.0106345 -0.194272 0.00120225 -0.00604529 0.00397128 -0.0210304 0 0 0 0 0 0 0.184411 0 -0.20633 0 0 0 0 -0.215676 -0.518343 0 0 0.38204 0 0.0596121 0 -0.0333664 0 0 -0.362673 0 0.923321 -0.00468166 0.36395 -0.035556 0 0 -0.30282 0 -3.96591 0 5.2667 -0.247515 0 -0.456315 2.19568 0.0519577 0 -0.00513261 0 0 -0.0559544 0 -0.679954 -1.11049 0 0 -0.120132 0 0 -0.162219 -4.57392 -0.139118 0 -1.17269 0 1.048 -0.545936 0.349745 0.915352 0.141194 -1.24039 -2.59329 -0.229472 -1.28969 -6.26314 -0.319042 0 0 0 -0.360899 0.144412 0 0 0 0 0.190771 -66.2793 -11.4596 7.42773 -4.53766 2.22745 -1.86248 -0.349117 0.183826 -0.141614 0.175654 0 0 0 0 0 0 +286 0 0.460978 0.235239 0.13836 0.273221 -0.211924 -0.262349 0.654904 1.16937 1.62529 -1.46931 -0.290408 -1.08198 -0.0383111 -0.954058 -0.171421 0.71238 2.33236 -0.242629 -0.363245 2.75637 -0.0715574 -0.15566 0.0919176 -0.362779 0.239538 0.295387 0.0667096 0.528425 1.26686 -0.436983 0.362804 -1.04258 -0.791283 0.543685 0.212936 -0.0285559 0.679385 -4.07479 -0.814934 0.482189 0.0203897 3.38265 -0.0730687 -3.8187 0.622032 -0.4155 0.709744 -2.3107 0.023378 0.76013 0.299318 -4.37866 -0.759041 -0.0560298 0.0748195 0.313385 -0.953704 1.64071 0.230897 0.162305 0.454283 -2.39557 -1.39873 2.0422 -0.615624 -1.10032 -1.34865 0.910917 0.218408 -0.0516202 0.500487 -0.3744 -0.0790196 2.966 -0.192624 -1.25711 24.9352 4.35947 -4.49204 2.46485 -1.50858 1.12529 1.93149 -1.10776 1.12378 -2.21655 -0.809748 1.05682 -1.62228 2.11713 -3.24924 0 0 0 0 0 0.13836 0.273221 0.00425577 0 0 0 0 0.0006151 0 -0.0137127 0 0 -0.00305071 -0.0214409 -0.00298645 0 -0.00263905 0.292824 -0.0296545 0 0 0.0119142 -0.00118205 0 0.0234274 2.35113 0 0 0.0196165 0.774833 0 -0.0415259 0 0.05847 0 0 0.0118382 0 0 -0.371902 0.0126493 -0.0527425 0 0.0853536 0.0291179 0 0 -0.0444467 0 0.00192073 0.148169 -1.96178e-05 0 0 0.00276097 -0.00827058 0 -0.00757686 -0.00944392 0.0173975 -1.28657 0.0328599 -0.0352936 0 0.0369955 -0.0066795 -0.474065 0.137527 -0.0647281 0 0 0 4.05108 0.384223 0.396427 0.0164337 0.0219367 0.0267772 0.00182888 0.000822076 0.00559953 0.00129384 0 0 0 0 0 0 -0.211924 0 -0.262349 0 0 0 0 0.36005 -0.550669 0 0 -1.12645 0 -0.145212 0 -0.076371 0 0 0.679365 0 -0.302514 0.0947048 -0.230904 0.0932323 0 0 -0.48608 0 -4.69936 0 -3.81623 -0.572363 0 1.0088 -1.12546 -0.0320431 0 0.0300796 0 0 -0.0933639 0 -1.14449 0.472265 0 0 0.0856469 0 0 -0.0554326 5.42154 0.136121 0 -0.130356 0 -1.53864 0.983555 -0.457471 -0.8007 -0.24198 0.879373 2.78945 -0.00309938 0.81576 4.03649 0.290658 0 0 0 0.0720655 -0.0403934 0 0 0 0 0.20683 54.3597 13.664 -9.39686 3.82077 -2.02698 1.67985 0.832849 -0.501396 0.48629 -0.423249 0 0 0 0 0 0 +287 0 0 0 0 0 0.145002 -0.0340451 -0.330445 -0.865234 0 0 -0.220809 -0.304625 0 -0.544609 -0.00435757 0 0 0 0.133036 0.734876 0 0 0 0 -0.11973 0 0 0.216989 -0.0274938 -0.0420291 0 -0.19744 0 0 -0.0345498 -0.0605914 0 0 -0.0518032 0.397409 0 0 -0.0103993 -2.38446 0 0.13945 0.30575 -0.379162 -0.247455 -1.06631 -0.0146015 0 -0.00418917 0.281644 -0.131041 0.847903 0.316173 0.562883 0 0 -0.213774 -2.56483 0 -0.32662 0.418882 -0.887172 0 0 0 0 0.358429 0.465043 0 0.467546 -0.465905 0 0 0 1.35523 0 -0.561394 1.72695 0 -0.496275 0.163865 1.70864 0 -0.574956 0.920581 -1.24058 2.6407 0 0 0 -0.0653608 -0.0175982 0 0 0 -0.00256611 -0.0903771 0 -0.000241082 0 0.00148254 0.0218582 0 0 0 0 0.0365842 0 0.0242118 0 -0.175475 0 -0.0358152 -0.714482 0 -0.00419271 0 0 -0.150517 0.000210742 -0.0890195 0 -0.0139784 0 -0.00546599 -0.0810128 -0.0295792 0.0048587 -0.0115918 0 1.46025e-05 0 0 0 -0.00075756 0 0 -0.00668584 0.0007251 0.278767 0.0256387 0 0 -0.0025836 0 0.0160903 0 0 -0.0506645 0.0352481 0.0682126 0.0543282 0 0 -0.12907 -0.162715 0.0665801 -0.225125 0.644699 0 0.120505 0.0174871 0.30044 0 0 0 1.16279 0 0.0710388 0.384945 0 0.0149582 0.0143286 0.0763823 0 -0.00225532 0.00836525 -0.000116988 0.0275803 0 0.145002 -0.0653608 -0.0340451 -0.0175982 0.241167 0.0309599 -0.0358107 0.0408386 -0.406926 0.0336288 -0.0604706 0.26882 0.00342344 0.0278442 -0.00619194 -0.0539386 -0.0392889 0.290063 0.57319 0.108796 0.33586 0.101335 0.20259 0.10841 -0.393731 0.0732563 -0.596202 0.00786711 -1.3507 -0.197243 0.964814 -0.525293 -0.000721576 0.107575 0.649705 0.0312336 -0.000113912 0.0241743 0.000455248 0.52088 -0.0298731 0.00850098 -1.46907 0.226188 -0.00630603 -0.0226715 0.0864103 0.0336003 0.0863449 -0.4123 -0.849535 0.350076 0.103141 1.07693 -0.0063687 0.373366 -0.280231 -0.318388 0.0963123 -0.19806 -0.381692 -0.780781 0.284704 1.84526 11.1112 -0.176681 -0.0474741 0.0323722 0.164802 0.605767 -0.143422 0.0591451 -0.141436 0.0597208 -0.185773 0.0852329 -2.03173 -0.0797756 -0.211158 -0.382246 0.664063 -1.24491 0.0397029 0.194008 -0.4192 0.406701 -0.0461997 0.0852875 -0.392014 0.407663 -0.536032 0 +288 0 0 0 0 0 -0.370834 0.169074 -0.0715462 0.120985 0 0 0.0856658 0.419546 0 0.693388 0.0586981 0 0 0 0.269421 0.549414 0 0 0 0 -0.3277 0 0 -0.656533 -0.0588708 0.374797 0 0.194795 0 0 -0.251481 0.0422395 0 0 -0.123744 1.06525 0 0 0.0374333 0.850967 0 0.947809 -0.712122 0.698013 -0.0209663 1.01722 0.191468 0 -0.523816 0.313568 -0.458074 -3.86574 -1.35908 -0.917028 0 0 0.0221905 -1.489 0 0.73009 -0.345228 0.294801 0 0 0 0 0.150818 0.0233931 0 -1.95536 2.28721 0 0 0 0.158772 0 0.789083 -0.682197 0 0.345641 -0.0686318 0.572823 0 -0.483486 0.00912155 0.849982 -0.980018 0 0 0 0.042142 0.00752046 0 0 0 -0.0431727 -0.0217331 0 -0.00415819 0 0.00326546 -0.0213613 0 0 0 0 -0.0644267 0 -0.0124822 0 -0.115329 0 -0.371586 -0.292955 0 -0.00258853 0 0 -0.0817889 0.000756024 -0.0126827 0 -0.00112383 0 -0.00239232 0.0301262 -0.01682 0.00861104 0.00826325 0 0.000265648 0 0 0 -0.000206226 0 0 0.00622826 0.00549691 0.0356502 0.0144851 0 0 -0.00796497 0 0.0129231 0 0 0.0056342 -0.0173795 -0.165706 -0.0334648 0 0 0.0137887 0.00156408 0.0623058 0.100922 0.0844722 0 -0.0405628 -0.0131908 -0.137145 0 0 0 0.292201 0 0.0247357 0.140088 0 0.00138938 0.0137683 -0.0628519 0 0.000152244 0.000219601 -0.00508125 0.0165263 0 -0.370834 0.042142 0.169074 0.00752046 -0.373755 -0.0107912 0.110656 -0.223086 1.02949 -0.00795004 -0.0159651 0.1184 -0.000913062 0.00535372 0.0162176 0.0481418 -0.0189345 -0.0494755 -0.792375 0.292975 -0.348722 -0.0634976 0.142587 -0.0983764 -0.0820347 -0.0801814 0.724319 0.00901654 -2.19714 -0.0594712 -1.29323 0.282922 0.00232342 0.00497178 -0.722712 0.0044548 -0.00307812 -0.0666166 -0.00695498 -0.20826 0.0758975 -0.0188293 -0.0831761 -1.09644 -0.00346744 -0.0132344 -0.126323 0.0529636 0.160806 -0.0397399 -1.03846 0.745254 -0.107789 0.245486 -0.0500709 0.626477 0.160768 -0.337062 -0.343111 -0.105755 0.111536 0.114052 0.112988 -4.0507 -15.298 0.0798345 -0.517416 0.0191456 0.322507 -0.305671 0.0563919 0.0720587 0.0291388 -0.11532 -0.142798 -0.563819 2.72332 -0.397125 0.42873 0.155083 -0.049228 0.556161 -0.0198527 0.109894 0.104532 -0.246348 0.00788019 0.0420341 -0.0178262 0.023104 0.256693 0 +289 0 0 0 0 0 0.173119 -0.381163 0.378535 1.43511 0 0 -0.774766 -2.17598 0 -3.63885 -0.193114 0 0 0 -0.593668 -4.83651 0 0 0 0 0.291931 0 0 0.890887 5.92967 -0.951649 0 -1.29869 0 0 0.184537 -0.100954 0 0 -1.55389 -1.64903 0 0 -0.258575 -8.95231 0 -1.04279 2.17603 -2.58238 0.642323 -0.276232 0.668895 0 0.504038 -1.09145 0.363972 0.985769 0.589272 -0.0587216 0 0 -0.265164 2.32216 0 1.69244 0.653817 0.921276 0 0 0 0 -0.639641 -1.09315 0 1.55144 0.675381 0 0 0 -2.44616 0 1.03106 -5.95469 0 0.530183 -1.1449 -3.21489 0 1.15362 -3.17072 4.57246 -13.1168 0 0 0 0.164275 0.0235532 0 0 0 -0.0406825 -0.0196261 0 -0.00208194 0 -0.000796528 0.015835 0 0 0 0 -0.025798 0 0.000266956 0 0.0432914 0 -0.533196 -0.0909368 0 0.00221849 0 0 -0.00927826 -0.00118515 -0.00391431 0 -0.004118 0 -0.0011089 -0.0274687 0.00725787 -0.0171033 -0.00098152 0 -7.22218e-05 0 0 0 -0.000220649 0 0 0.00204258 -0.0021194 0.199386 0.00819743 0 0 -0.000625284 0 -0.00117177 0 0 -0.0344071 -0.00234879 0.00488007 0.00760947 0 0 0.0229294 -0.0220502 -0.010494 -0.0633723 -0.0601039 0 -0.0417093 -0.00765302 0.0258655 0 0 0 0.262408 0 0.037981 0.150141 0 0.00239697 0.0124657 0.00362949 0 0.00116065 -0.00260192 0.00950446 0.0070738 0 0.173119 0.164275 -0.381163 0.0235532 -0.181319 -0.17701 0.760316 -0.192153 -1.14218 0.010497 0.0113704 0.120341 0.000880929 0.010717 0.076954 -0.0805378 -0.0221624 0.124249 -1.00609 -1.66491 -0.626406 -0.0177708 0.0928776 -0.18519 -0.28424 0.183094 -1.10917 -0.0471721 -14.0084 -0.355171 -2.27882 -2.33256 0.00770162 0.16967 -1.2821 0.0093944 -0.00262613 -0.0466036 -0.0343615 1.34575 -0.0568102 0.0279661 -6.09411 -3.1206 0.00243545 -0.0303779 -0.506008 -0.287145 -0.194653 -1.25364 -1.32048 1.56503 0.185311 -5.56014 -0.372187 1.11277 0.203291 -0.592142 -0.771958 0.232359 0.145966 -0.310804 -0.163466 1.4726 -4.46944 -0.0119655 -0.508562 0.117157 0.360054 -0.412616 0.0112385 -0.00129251 0.0141204 0.100354 -0.179166 0.0563119 4.7988 -0.606814 0.696321 0.0506552 0.097606 -1.46145 0.0165935 0.0248153 -0.215629 -0.21437 -0.0197898 0.147735 -0.41775 0.490357 -1.15919 0 +290 0 0.73202 -0.306186 0.0335954 0.0829466 0.144047 -0.188438 0.939865 1.79965 0.0469795 -1.74081 0.337558 0.146227 -0.00746898 0.938388 -0.000801393 -2.23825 -6.93435 -0.326204 -0.0143895 -0.237716 -0.0609252 0.489733 0.005617 -0.437066 0.625525 -0.753403 -0.102329 0.403739 -0.11161 0.126993 0.0323422 0.195571 0.592887 -0.593923 0.402114 0.0339526 -0.354039 -0.262064 0.588048 -0.436725 -0.0582061 -1.00638 0.0682671 0.86245 -0.44502 -0.379631 0.214782 0.203705 -0.207389 0.364249 -0.505925 6.14434 -0.0886799 -0.164693 -0.00483578 -2.23606 -0.14259 -0.388616 0.588683 0.172556 -0.926781 -0.38379 -0.881973 -2.31408 -0.203471 -0.541325 1.179 -0.221754 -0.013942 0.664544 -0.208793 0.297924 0.629328 -3.1499 -0.376454 1.6036 1.57448 1.04208 -1.13325 0.879102 -1.08047 1.10033 1.65871 -1.0848 1.45143 -1.24055 0.135723 -0.159397 0.154052 -0.198561 0.068735 0 0 0 0 0 0.0335954 0.0829466 0.00233451 0 0 0 0 7.75567e-06 0 -0.0118275 0 0 -0.00257491 -0.00338863 -0.00835974 0 -0.00051534 -0.0201012 -0.0447645 0 0 -0.0735829 -0.000283335 0 0.0269341 -0.9794 0 0 -0.0135236 -0.181729 0 0.0409578 0 0.0042167 0 0 0.000233131 0 0 -0.332612 -0.0016875 -0.037557 0 0.0304016 0.0591328 0 0 -0.189266 0 -0.00224941 0.373699 0.00190154 0 0 -0.00213354 -0.0110132 0 0.00568737 -0.000550201 0.0209297 1.74344 0.0303618 -0.07087 0 0.0123261 0.00302769 0.195052 -0.00213199 -0.0895738 0 0 0 5.56295 0.407206 0.704205 0.0382733 0.0158245 0.0104758 0.000374288 0.00163079 0.00426474 0.00105701 0 0 0 0 0 0 0.144047 0 -0.188438 0 0 0 0 0.241369 1.40882 0 0 -0.187005 0 -0.0206952 0 0.0587076 0 0 -0.548073 0 1.08066 0.0443946 -0.0800646 -0.0713341 0 0 0.701615 0 4.50812 0 0.504478 0.589585 0 0.262545 1.19232 -0.00736959 0 0.0371052 0 0 0.118019 0 1.90058 -1.12328 0 0 -0.156937 0 0 0.357976 -1.50238 0.0973107 0 1.20681 0 -0.233824 0.040052 -0.101036 0.0967032 -0.032344 -0.451226 -0.429768 0.0442313 -3.61652 -13.696 -0.0624603 0 0 0 -0.026815 -0.0297159 0 0 0 0 -0.515282 3.21569 1.38409 -0.530732 0.150295 0.0642085 -0.0764121 0.121243 -0.107689 0.0907601 -0.0794203 0 0 0 0 0 0 +291 0 -0.601136 -0.183823 -0.0146429 -0.0262238 0.00455978 -0.106551 -0.553419 -0.886189 -0.0856401 0.0181564 -0.0905888 0.0930574 0.00300005 -0.26985 0.0131566 -1.86502 -6.55958 -0.186905 0.0228608 -0.402521 -0.0465844 -0.221834 -0.00390093 -0.014926 0.0963462 -0.47122 -0.0904414 0.411047 0.331972 -0.169657 -0.025175 -0.0431489 -0.681594 -0.580839 0.050067 -0.0190855 -0.405765 -0.917487 -0.12985 -0.628681 0.0179969 -1.7048 -0.0308805 0.470202 0.088531 -0.589916 0.399892 -0.0291995 0.152875 -1.257 -0.282902 1.36715 0.0861306 0.0662286 0.0220837 -2.16365 -0.143845 0.235537 0.0784113 -0.0393768 0.614317 1.13179 0.320808 -0.230454 0.829424 0.313581 -0.124874 -0.532978 0.0348803 0.131627 0.00718019 -0.267622 0.608688 0.522724 -0.478247 1.44399 2.51806 1.82376 -0.237433 1.04188 -0.78867 0.847635 0.0128503 -0.106526 0.106796 0.828569 -0.0270003 0.0336718 -0.0778835 0.091997 -0.204445 0 0 0 0 0 -0.0146429 -0.0262238 -0.000355474 0 0 0 0 0.00024894 0 -0.0136413 0 0 0.000463216 -0.00103815 -9.77484e-05 0 -0.00107338 -0.0188074 -0.0426979 0 0 -0.164488 -1.58139e-05 0 -0.0232555 -0.545748 0 0 -0.0242813 -0.0879193 0 -0.105942 0 -0.0237098 0 0 -0.00313534 0 0 -0.412498 0.00673026 0.00228256 0 0.0160495 -0.0337523 0 0 -0.0157094 0 0.000555632 -0.0908284 -0.00198034 0 0 0.00129552 0.0018634 0 -0.000460025 -0.00906187 0.00536062 0.264508 -0.0221464 -0.00933859 0 0.0072284 0.00645227 -0.181237 0.122686 -0.0239124 0 0 0 2.1474 0.112973 0.109832 0.0135765 0.00130689 0.0453533 -0.000547188 0.00155453 -0.000870078 0.00831592 0 0 0 0 0 0 0.00455978 0 -0.106551 0 0 0 0 0.164195 -1.40108 0 0 -0.0384091 0 -0.00423701 0 -0.0625764 0 0 0.827185 0 0.383092 0.0278374 -0.123163 0.107549 0 0 -0.738081 0 -2.7783 0 3.14613 -0.571373 0 0.12988 0.996895 -0.0103185 0 0.0203245 0 0 -0.120461 0 -1.36319 1.77622 0 0 0.238043 0 0 -0.181607 2.57479 -0.0743251 0 0.103722 0 0.370765 -0.0545671 0.101716 0.697821 0.20911 0.0686559 0.0521941 -0.0134502 2.80097 11.6196 -0.162665 0 0 0 0.17433 0.0620806 0 0 0 0 0.391577 -10.6495 -0.795084 -0.220301 -1.31747 1.09832 -1.40899 -0.0540408 0.0258781 -0.00459618 -0.00349161 0 0 0 0 0 0 +292 0 0.389556 -0.190941 0.0340675 0.209117 -0.158301 0.0281344 -0.0724064 0.614197 0.637648 -0.649361 0.261111 -0.545928 -0.0022492 -0.458186 -0.00757559 -1.7836 -7.9092 -0.0277547 -0.0319949 -0.998197 0.00967221 -0.0324678 0.00638414 -0.0904771 -0.123133 -0.393218 0.0027366 -0.365182 -1.07108 -0.0177793 0.0630479 0.15456 0.0340181 0.189857 -0.161762 0.025781 0.030802 0.914951 0.360654 0.158116 -0.0129742 1.14721 0.0371931 -3.27192 -0.0601433 0.348855 -0.611814 0.0230192 -0.0753587 -0.51758 -0.401962 -6.1544 0.209024 -1.71874e-05 0.0336852 -2.21976 -0.416413 -0.461261 0.25893 0.0358015 -0.485991 -0.31187 0.751058 -0.679816 0.424792 0.391503 0.383301 -0.342175 -0.242656 0.413748 -0.655747 0.0660122 -0.335453 -0.367316 0.0298341 -1.44744 -4.30332 0.161503 -2.70072 -0.721455 0.316034 -1.09396 0.239941 -0.28326 0.549252 -1.00699 0.0183426 -0.0644196 0.18185 -0.278871 0.659626 0 0 0 0 0 0.0340675 0.209117 -0.00102003 0 0 0 0 -0.000256416 0 -0.00825147 0 0 -0.000779683 0.000548067 -0.00987783 0 -0.000515569 1.02398e-05 -0.0959246 0 0 -0.206047 1.65946e-05 0 0.00616454 -0.23996 0 0 -0.0201654 -0.00841128 0 -0.00999246 0 -0.00925804 0 0 -0.00046713 0 0 -0.0528084 -0.00453586 -0.0119019 0 -0.0154044 0.0190165 0 0 -0.0171028 0 3.77333e-05 0.238309 0.00270271 0 0 0.00389729 0.00262795 0 -0.0135565 -0.00973555 0.00414194 0.0245491 -4.27804e-05 -0.0239288 0 -0.00753398 -0.00933879 -0.140727 0.0442186 -0.0588644 0 0 0 2.81691 0.239204 0.518734 0.013674 0.0159807 -0.00232393 0.00113222 0.000102608 0.000779797 0.021164 0 0 0 0 0 0 -0.158301 0 0.0281344 0 0 0 0 0.347927 1.13133 0 0 -0.57495 0 -0.0629389 0 0.0342814 0 0 0.216839 0 0.367782 0.168915 -0.161757 0.0297058 0 0 0.477143 0 3.82093 0 2.71468 0.503509 0 1.09826 0.997188 -0.0177067 0 0.0594008 0 0 0.0893501 0 1.31258 0.111661 0 0 0.0161926 0 0 0.168085 2.21588 -0.252204 0 2.12942 0 0.530011 -0.0219802 0.115943 0.569211 0.165915 0.452239 -0.249565 0.0992039 -1.74751 -1.26113 -0.143615 0 0 0 0.194601 0.0699392 0 0 0 0 -0.330481 -6.44311 1.37865 -3.21134 -0.0528202 0.109053 -0.607846 0.283874 -0.221032 0.215288 -0.399955 0 0 0 0 0 0 +293 0 -0.920105 0.0216021 -0.106438 -0.306817 0.196218 0.283997 -0.467724 -1.83009 -0.316947 2.63805 -0.314192 0.76884 0.0306315 1.31286 0.0133355 1.01374 -0.253716 0.483704 0.0808397 1.88986 0.00778161 -0.255281 -0.0228839 0.520775 -0.6522 0.502729 -0.0187098 -0.396782 0.793682 0.401595 -0.106423 0.110036 0.245793 0.162509 -0.325012 -0.0561461 0.0347503 2.60888 -1.07511 1.26811 0.177105 -0.476171 -0.199125 2.6668 0.968785 0.86334 -0.1247 0.358814 0.509643 0.736452 1.58453 -4.90602 0.0509813 0.119064 -0.400958 -0.507338 -0.154209 -0.350615 -1.12897 -0.407961 -0.534328 1.18673 0.112483 1.5031 -0.0909395 -0.33381 -0.495447 0.0324261 0.00661293 -0.535971 0.197756 -0.490774 -0.154183 -0.286799 1.07673 -0.485004 -4.45004 -4.85809 3.45144 -4.09156 2.92879 -3.36774 -3.39768 2.68245 -3.09484 2.82711 -1.31851 1.60795 -1.76826 2.0809 -2.01236 0 0 0 0 0 -0.106438 -0.306817 -0.0123915 0 0 0 0 -0.00156165 0 -0.00972578 0 0 0.00241629 -0.00110557 0.010332 0 -0.00130017 -0.110567 -0.0154219 0 0 0.0210881 -0.000153234 0 0.0355372 -1.76601 0 0 -0.00265182 -0.380106 0 0.0372854 0 -0.024899 0 0 -0.00470425 0 0 -0.0324253 -0.0220464 0.04087 0 -0.18407 0.0389451 0 0 -0.0741728 0 -0.00559307 0.328118 0.005643 0 0 -0.0109328 0.0310968 0 0.0301765 0.108458 0.0196488 1.9157 0.0260099 -0.0662773 0 -0.0418744 -0.00827905 0.110084 0.175674 -0.0730613 0 0 0 -0.207429 -0.0715096 0.150022 0.0178834 -0.0248222 0.00752545 -0.00489583 0.00509347 -0.00463509 0.000903602 0 0 0 0 0 0 0.196218 0 0.283997 0 0 0 0 -0.300279 -1.96961 0 0 0.60197 0 0.0671811 0 -0.02918 0 0 0.233965 0 -0.992941 -0.121625 0.211095 0.0223294 0 0 -0.372199 0 -6.36095 0 -0.966599 -0.0531502 0 -0.704043 -0.984494 0.021994 0 -0.0543512 0 0 -0.188278 0 -0.746891 0.499272 0 0 0.0450651 0 0 0.019512 -0.679138 0.0835541 0 -2.08992 0 0.200763 -0.29148 0.128906 -0.2729 -0.0666535 -0.188933 -0.361655 0.0163646 2.01217 -1.82593 0.0608223 0 0 0 -0.264971 -0.115728 0 0 0 0 0.580462 3.09516 -0.691908 1.35672 -0.00618784 -0.083804 0.31887 -0.30715 0.177326 -0.211093 0.267107 0 0 0 0 0 0 +294 0 -0.781933 0.293424 0.0376416 0.0419921 -0.270855 -0.106366 -0.108417 -0.037062 0.234186 -0.0161363 0.130201 -0.899624 -0.0131382 -0.673896 0.0451775 2.47259 8.07024 0.270154 0.0455739 -3.20448 0.114141 -0.105771 0.0156235 0.079555 -0.0819047 0.724459 0.311785 0.0531757 -0.649869 -0.344876 0.072357 0.196735 -0.324975 1.09715 0.055052 0.0384554 1.0042 -1.29662 0.382812 -1.61044 -0.0636324 3.03062 0.0990629 -2.14968 -0.26202 -0.892445 -0.160843 0.36788 -0.238932 1.28354 -0.125158 -10.5175 0.0881553 0.0994562 0.0710521 2.24911 0.80292 0.27782 -0.0920828 0.136972 0.496018 1.52664 1.15944 0.00157622 -1.3593 0.318586 0.242304 1.55516 -0.0943397 -0.0988655 0.0450249 0.329963 -1.75801 0.655502 -0.356525 -3.97106 5.22628 1.76502 -0.660958 0.370589 -0.91169 2.91629 -0.809917 0.15456 0.432221 -0.0545178 0.356606 -0.49752 0.774405 -1.07316 1.64773 0 0 0 0 0 0.0376416 0.0419921 -0.00655094 0 0 0 0 -0.0013314 0 -0.0122636 0 0 0.00244397 0.0135683 -0.0172205 0 -0.00286467 0.0872135 -0.0375322 0 0 -0.089902 0.000984205 0 -0.0387089 -0.343964 0 0 -0.0205921 0.1778 0 -0.0705074 0 0.0176408 0 0 0.00143182 0 0 -0.159728 -0.018541 0.0334818 0 -0.0858733 -0.0262207 0 0 0.00544525 0 0.0139661 -0.062353 -0.0168521 0 0 0.0058127 0.0329085 0 -0.00610795 0.0195727 -0.00718421 0.30447 -0.0189075 0.00809338 0 -0.01877 0.0183191 -0.159596 0.208705 0.0548415 0 0 0 0.227537 -0.0075319 -0.0245009 0.00544879 -0.00634803 0.0189535 -0.000592786 0.0012786 -0.00446159 0.00482484 0 0 0 0 0 0 -0.270855 0 -0.106366 0 0 0 0 0.101317 0.140351 0 0 -0.293788 0 -0.0348769 0 0.0104786 0 0 0.148995 0 -0.20707 0.0455986 -0.0516636 0.0399649 0 0 0.000617185 0 5.0215 0 1.3316 0.190838 0 0.392639 0.101948 -0.00697305 0 0.0118049 0 0 0.029033 0 1.11562 0.590198 0 0 0.12952 0 0 -0.605865 3.25651 0.0973995 0 -0.659459 0 0.698995 0.0556787 -0.0817707 0.754028 0.169513 0.108292 -0.40021 0.0346235 2.43185 10.1402 -0.147002 0 0 0 0.39777 0.066048 0 0 0 0 0.0284795 -3.78316 0.871879 -1.70146 -0.690957 0.41489 -0.45257 0.133205 -0.136628 0.193341 -0.207524 0 0 0 0 0 0 +295 0 -0.249778 -0.0988696 0.045751 0.227322 -0.190815 0.0284879 0.618012 1.19096 0.413828 -0.171224 0.738149 0.308052 -0.00973974 1.86018 0.179873 0.740404 0.286293 0.159548 0.310206 -3.67059 0.0724941 0.0891141 0.00936028 0.0391537 0.0982619 0.391289 0.174684 -0.588696 -2.43091 0.518955 0.0620567 1.41992 0.52579 0.850146 0.0415834 0.113522 0.450935 2.43989 1.07833 -0.781446 -0.044843 2.84969 0.178224 0.419699 -0.143912 0.0666154 -1.20831 2.4595 -0.542409 2.46326 -0.353602 0.962689 -0.582756 0.738309 -0.447199 0.106353 -0.081925 0.723078 0.0954456 0.109208 1.482 -3.08409 1.13926 -0.630068 -1.19388 -0.409102 0.850066 0.94716 -0.119256 0.260511 0.379497 1.29767 -0.416026 -1.8436 -0.0514067 -0.48613 -7.8356 -0.309639 -3.85326 -1.53957 0.16364 -0.97572 -0.174174 -0.248896 0.745708 -2.41632 0.195863 -0.863977 1.83666 -3.56599 6.1635 0 0 0 0 0 0.045751 0.227322 0.0025288 0 0 0 0 0.000437698 0 0.0253092 0 0 -0.00158304 -0.00191467 0.0076562 0 0.00356424 0.0231321 0.0650403 0 0 -0.246327 -0.000118796 0 -0.0356539 0.346141 0 0 -0.0182853 0.0692753 0 -0.0705932 0 -0.0220121 0 0 -0.000825794 0 0 0.152625 0.00578267 -0.0222846 0 0.0309629 -0.030905 0 0 0.115712 0 -0.00124667 -0.135552 0.00790552 0 0 0.00385876 -0.011077 0 -0.020393 -0.0589054 0.0052576 -0.498751 -0.0313723 0.0203089 0 0.00796751 -0.025299 0.22578 -0.127074 0.0718736 0 0 0 -0.513029 0.0468646 -0.0760572 -0.0185249 0.01649 -0.0139005 0.00232467 -0.00272572 0.00285066 -0.00923747 0 0 0 0 0 0 -0.190815 0 0.0284879 0 0 0 0 0.315738 2.24786 0 0 -0.508545 0 -0.0468145 0 0.110968 0 0 -0.549917 0 0.251364 0.104769 -0.175212 -0.0456803 0 0 1.24153 0 6.52233 0 1.80705 1.29528 0 0.722301 0.881599 -0.0129854 0 0.0463151 0 0 0.199603 0 3.22085 -1.45533 0 0 -0.136013 0 0 -0.232674 2.63343 -0.200883 0 2.65148 0 0.421864 0.160726 0.0238904 0.503962 0.281276 0.70515 -0.0641809 0.0537659 -2.76337 -3.99093 -0.204526 0 0 0 0.488962 0.0607802 0 0 0 0 -0.675709 -0.789889 1.06719 -1.04306 0.0908538 0.0955415 -0.295674 0.171153 -0.135937 0.173412 -0.218364 0 0 0 0 0 0 +296 0 0 0 0 0 0.196971 0.00618773 -0.170317 -0.779264 0 0 0.121593 -0.882093 0 -2.60416 -0.0512837 0 0 0 -0.345102 -3.70533 0 0 0 0 -0.126637 0 0 -0.240879 -4.00315 -0.521071 0 -0.251083 0 0 -0.0671356 -0.015108 0 0 0.531265 -2.09011 0 0 0.0183845 -3.99218 0 -0.729793 -0.871505 -1.23512 0.0349115 -0.858085 -0.141562 0 0.295777 -0.196389 0.21866 1.65127 0.272947 -0.414028 0 0 -0.181251 3.81202 0 -0.176517 -0.113574 0.211579 0 0 0 0 -0.297062 -0.060919 0 1.26896 -0.135368 0 0 0 3.42442 0 0.27285 4.55672 0 0.452916 0.0887401 2.08315 0 0.342476 0.802843 -2.48837 10.9201 0 0 0 -0.0730653 -0.0124474 0 0 0 0.00182269 -0.0405835 0 0.00106528 0 -0.00422685 -0.0170696 0 0 0 0 -0.0429216 0 -0.00342101 0 -0.258424 0 -0.0458017 -0.264329 0 6.97864e-05 0 0 -0.0961793 -0.00375232 -0.0112272 0 -0.00148637 0 -0.00249902 -0.161482 -0.00786621 -0.0516328 -0.0101126 0 -0.000307305 0 0 0 -9.14009e-05 0 0 0.00992275 -0.00384651 0.0495554 -0.0483681 0 0 -0.0180382 0 0.00419689 0 0 -0.0281579 -0.0349395 -0.149087 -0.0445674 0 0 0.167946 0.0709361 -0.00211162 -0.182974 -0.24212 0 -0.288487 -0.00684918 -0.0280091 0 0 0 0.775496 0 0.083149 0.721274 0 -0.00828919 0.0920551 0.254285 0 0.00493034 -0.00784374 0.0226789 0.480587 0 0.196971 -0.0730653 0.00618773 -0.0124474 0.187312 0.100248 -0.0816111 -0.147754 0.116097 0.00846553 -0.0273501 -0.119948 0.000681343 -0.0155437 -0.00859918 0.0102315 -0.0256739 0.0987124 -0.85107 0.190103 -0.159167 -0.0153045 -0.106026 -0.0329459 -0.187762 -0.199874 0.218767 0.00504613 -2.65535 0.210885 -1.262 -0.333484 -0.00078935 -0.77434 -0.563381 -0.0116288 0.00485597 0.0398699 0.0460823 -1.41363 -0.00676374 -0.0262907 -1.04943 -1.24268 -0.00371518 0.0306642 -0.102396 0.0201118 -0.285275 0.122355 0.507312 0.0321442 0.0915137 1.13303 0.0119727 0.366898 -0.0395414 0.131051 -0.126539 -0.165272 -1.34083 0.105109 -0.111644 -0.220795 -0.230563 -0.188256 0.851612 0.0173772 0.152135 0.00337209 0.0374127 -0.00611482 -0.0177425 0.0212864 -0.10566 0.0393802 7.77942 0.189394 2.24691 -0.225338 -0.486676 3.61008 0.021604 -0.0784784 0.220782 0.855418 -0.012345 -0.0604828 0.316571 -0.532523 1.55099 0 +297 0 0 0 0 0 0.194774 0.508754 -0.687788 -0.968522 0 0 0.144037 1.92367 0 2.9485 0.0157747 0 0 0 0.0809667 2.44324 0 0 0 0 -0.292667 0 0 -0.796563 -0.826677 0.950176 0 0.0436463 0 0 -0.312271 0.0132435 0 0 0.688466 1.11011 0 0 0.199332 6.85532 0 0.909046 -0.725359 0.16461 -0.376023 1.51469 -0.583111 0 -0.27136 0.42495 -0.22126 0.189716 0.403122 0.544502 0 0 -0.221777 -0.379473 0 -0.885287 -0.334805 0.081501 0 0 0 0 0.390775 0.682974 0 -1.24403 0.523085 0 0 0 1.67791 0 -1.48997 2.84455 0 -1.09321 1.13349 -0.840466 0 -0.928594 0.917217 -1.72143 2.4015 0 0 0 -0.0419757 -0.0123504 0 0 0 0.001155 0.0350618 0 0.000362938 0 -0.00184645 -0.0150871 0 0 0 0 -0.0765954 0 -0.00584633 0 -0.156623 0 -0.0174925 -0.0803971 0 0.000783337 0 0 0.0130234 0.00020496 -0.00204684 0 0.00246298 0 0.00258743 -0.0712746 0.00633147 0.00268707 -0.00634966 0 -0.000134293 0 0 0 0.000180185 0 0 -0.00055069 0.00411478 0.0115542 -0.00351088 0 0 0.0118311 0 -0.00448959 0 0 -0.00573735 -0.012017 -0.114378 -0.0125727 0 0 0.0790439 0.0334608 0.011451 -0.0706923 -0.0609115 0 -0.036593 -0.00963436 0.111534 0 0 0 0.418646 0 0.0227734 -0.0579467 0 -1.40149e-05 0.0110291 0.0748599 0 -0.000258033 -0.00245389 0.0132924 -0.0150048 0 0.194774 -0.0419757 0.508754 -0.0123504 0.161562 0.0823167 -0.133283 -0.275716 -0.233578 0.00721792 -0.0587869 -0.0716834 0.000626152 -0.010576 -0.0109316 -0.00207457 -0.0502749 0.0727104 -0.0155556 1.8213 0.346817 0.0574567 -0.0590363 -0.0230801 -0.407849 0.0323529 0.0161656 0.0329053 2.88363 0.0697137 1.16724 1.48421 -0.000877546 -0.377545 0.626063 -0.00763186 0.00160261 -0.0140185 0.0105019 0.0837226 -0.0243381 0.00786021 1.94979 1.54539 -0.00688414 0.00906481 0.176453 0.233241 0.07213 -0.34886 -1.85902 0.543828 0.0517728 0.203862 0.0184482 0.166279 -0.0584003 -0.088161 0.326869 -0.533529 -1.07416 0.352674 0.0491922 0.36666 3.71473 0.00941763 -0.159882 0.0312591 -0.129516 0.387743 0.0258282 -0.0117736 -0.0147842 0.144636 -0.0510605 0.0242662 -7.1953 0.387712 1.9581 -0.297095 -0.16165 0.90132 0.0148709 -0.129993 0.478957 -0.588228 -0.00909316 -0.0546853 0.0592964 -0.10267 -0.187871 0 +298 0 0 0 0 0 -0.185026 -0.0200537 0.2436 1.3819 0 0 0.0638382 -0.163954 0 -1.40566 -0.016345 0 0 0 -0.0569278 -3.42358 0 0 0 0 0.0911094 0 0 -0.00579696 1.5113 0.0265339 0 0.0293007 0 0 -0.0440814 -0.0341548 0 0 0.16147 -0.709906 0 0 -0.0410956 -3.55416 0 0.222316 0.173274 -0.252877 0.228741 -0.800832 0.381525 0 0.102023 0.0742138 -0.175823 0.839327 0.0825575 -0.00638767 0 0 0.2109 5.50597 0 0.982763 0.281577 -0.361148 0 0 0 0 0.146448 -0.223893 0 4.08011 0.320961 0 0 0 -1.4014 0 0.554294 -2.99484 0 0.652529 -1.83782 -1.51507 0 0.656954 -2.43695 2.0011 -6.10701 0 0 0 -0.208368 -0.0170389 0 0 0 0.00816571 0.000913998 0 0.00133196 0 -0.00359996 -0.00428782 0 0 0 0 0.0267504 0 -0.000622057 0 0.037775 0 0.0554176 0.091447 0 0.00193551 0 0 0.295249 -0.00293694 0.0023059 0 0.000281539 0 -0.000112023 -0.00978123 0.0247234 -0.0410924 -0.00452246 0 -0.000259893 0 0 0 1.36582e-05 0 0 0.00774447 -0.000225159 0.0845014 -0.0165649 0 0 0.0191472 0 0.000245669 0 0 0.0114183 -0.0101959 -0.00248603 -0.0169195 0 0 0.0140573 -0.00286886 0.0104851 0.0168627 0.05412 0 0.062545 -0.00289743 -0.112658 0 0 0 -0.228078 0 0.0723465 -0.777555 0 -0.00588957 0.000445546 -0.192898 0 0.00380581 -0.0206214 0.0536417 -0.384568 0 -0.185026 -0.208368 -0.0200537 -0.0170389 0.451383 -0.078864 -0.0839857 0.0860937 -0.821243 0.00611191 0.0676421 -0.157434 0.000552046 -0.0188914 -0.00782942 -0.0315412 0.0210495 0.0605242 0.0603476 -0.566846 -0.460343 0.0847187 -0.22174 0.0988878 0.173139 0.122818 -0.426748 -0.0310228 -5.85517 0.227893 -2.50243 0.083154 -0.000705677 0.760948 -1.31 -0.0180235 0.00239946 -0.00838804 0.0445299 0.763713 -0.065947 0.0212702 -1.55364 -0.0504978 0.0081708 0.0155164 0.16386 -0.151194 -0.272679 0.0932122 -0.440954 0.376642 -0.0097212 -0.501712 0.0103248 1.06045 -0.12665 0.0770093 -0.214389 -0.159107 -0.88893 0.472767 0.0290624 -0.062772 -4.25088 0.0683207 0.85475 0.0646266 0.10227 -0.123444 0.0366662 0.00917044 -0.00775183 -0.0226934 -0.112689 0.0651871 15.4259 0.127704 -1.24214 -0.03007 -0.914231 -1.21083 0.0184918 -0.0307064 -0.0613583 -0.43314 -0.00756916 -0.00716121 -0.204373 0.278832 -1.08092 0 +299 0 0.828475 -0.227817 0.00900215 0.0751083 0.0721073 -0.185493 0.511331 -0.272676 0.0996131 -0.325497 0.128316 0.412092 -0.000226755 2.23775 0.00504363 -0.167434 0.45174 0.0176449 0.00514388 0.979675 -0.00524064 0.561611 0.00029289 -0.152752 0.3471 -0.319137 -0.0160735 0.5218 0.339322 0.238501 0.00549606 0.133152 0.699883 0.00412082 0.443634 0.00635735 -0.258446 -1.15844 0.153045 0.138729 -0.00423477 -0.45825 0.00767437 3.09807 -0.0744308 -0.39072 0.435769 0.146237 -0.0233615 0.578326 -0.264417 -0.529602 -0.0117441 0.000385155 -0.0475529 -0.815977 -0.271002 0.0129588 0.273567 0.00902048 0.453072 -0.215505 -0.532307 -0.552418 0.171972 -0.344673 -0.148136 -0.39804 -0.00892695 0.135752 0.0992269 0.0271199 0.161195 -0.209072 -0.0858992 0.0995409 9.08677 3.10277 1.89396 2.46231 -1.04473 1.58173 0.782371 -0.298995 0.111143 0.957471 0.00324765 -0.00596296 0.0262 -0.0571314 -0.306384 0 0 0 0 0 0.00900215 0.0751083 -0.00103266 0 0 0 0 -8.18937e-05 0 -0.022937 0 0 -0.00228734 -0.00116516 -0.0128496 0 -0.00188106 -0.0295269 -0.137525 0 0 -0.0921106 -7.60456e-05 0 -0.00870465 -0.844972 0 0 -0.0107685 -0.231356 0 -0.0828865 0 -0.00628084 0 0 -0.000776626 0 0 -0.662113 -0.00175935 -0.0332824 0 -0.0215567 -0.0304422 0 0 -0.0722094 0 -0.00239784 -0.600446 0.0107994 0 0 0.00494238 0.00126979 0 -0.00794641 -0.00151797 -0.0251572 -0.985147 -0.0530811 -0.00757301 0 -0.0102072 0.0829335 -0.19624 -0.00878613 0.0600421 0 0 0 4.411 0.164534 0.916098 0.0302809 -0.0628251 0.617384 0.00305993 -0.00494697 0.0128822 0.196296 0 0 0 0 0 0 0.0721073 0 -0.185493 0 0 0 0 0.0825088 -0.0186773 0 0 -0.0624914 0 -0.00532717 0 -0.00926422 0 0 0.509347 0 1.05942 -0.0356491 -0.0450622 0.0767067 0 0 -0.0657375 0 3.58094 0 -0.137729 0.535027 0 -0.292226 1.26077 -0.00456272 0 0.0128833 0 0 -0.0100689 0 1.65879 0.312344 0 0 0.0536712 0 0 0.402576 -1.70285 0.139448 0 0.308547 0 -0.25963 -0.0240108 -0.0623415 0.0657872 0.116805 0.332299 0.0898614 -0.0686946 0.120356 2.78238 -0.0695555 0 0 0 -0.130879 0.0718254 0 0 0 0 0.0185907 -4.71606 1.10517 -0.816125 0.530104 -0.624423 0.850976 0.0812976 -0.0633518 0.0628755 0.168785 0 0 0 0 0 0 +300 0 0.777555 0.0996608 -0.000852917 0.0159573 0.0307995 -0.257735 0.537866 1.23165 0.00295034 0.131484 -0.00714218 -1.65347 1.34473e-05 -2.34001 -0.00896611 -0.0378696 0.895931 0.0435371 -0.0132548 -1.19702 0.00908184 0.0334592 -9.93678e-06 0.0555922 0.215363 -0.113808 -0.000970742 0.343077 -0.114131 -0.764254 -3.98959e-05 -0.220503 0.0172518 -0.016476 0.203955 -0.00214841 -0.0242441 -0.0497914 0.0213911 -0.760866 0.000125725 -0.234915 -0.00125297 -5.07939 -0.00122399 -0.726811 0.148861 -0.333571 0.00855344 -0.908964 0.207672 4.12151 0.0147874 -0.00196556 0.021031 1.96392 0.141679 0.0285161 -0.0314908 0.000315358 -0.0321739 0.226048 0.72275 0.746972 0.145183 -0.514705 -0.0133502 0.156346 -0.00085521 0.0942933 -0.0189673 -0.0679718 -0.11307 1.15988 -0.052632 0.516597 1.90667 -0.390966 -1.6807 -0.549145 0.659141 -1.87782 -0.236632 0.215883 -0.227746 -1.34414 5.34067e-05 -0.000509832 0.00304254 -0.013681 0.103052 0 0 0 0 0 -0.000852917 0.0159573 0.000299522 0 0 0 0 1.31779e-05 0 0.00998103 0 0 -0.00033191 -0.000343957 0.00267652 0 0.000406404 -0.00123329 0.0562199 0 0 0.0422318 -1.92214e-05 0 -0.0010642 0.00126144 0 0 0.00948347 -0.0233107 0 -0.0265286 0 0.0011091 0 0 0.000253455 0 0 -0.0497115 0.000274496 -0.00620007 0 0.00596095 0.0152758 0 0 -0.0128943 0 0.000405323 0.120033 0.00502981 0 0 0.000904872 -0.000602083 0 -0.00465295 0.0358136 -0.00528869 -0.0366178 0.0222644 0.0123083 0 -0.00584898 -0.0429574 -0.0561091 0.0164385 -0.0153863 0 0 0 0.586772 0.0426068 -0.136398 0.00364041 -0.0131928 0.077433 0.000481714 -0.0018281 0.0107005 -0.0499157 0 0 0 0 0 0 0.0307995 0 -0.257735 0 0 0 0 0.264284 -0.478919 0 0 -0.148152 0 -0.0153917 0 -0.0103791 0 0 0.069084 0 -0.221561 0.096135 -0.0712538 0.0011827 0 0 -0.132462 0 0.257769 0 -1.52599 -0.73036 0 0.664283 -0.484727 -0.00598329 0 0.043001 0 0 -0.0533882 0 -0.578984 -0.0617479 0 0 -0.0279194 0 0 -0.309218 1.22617 -0.0286423 0 -1.3329 0 0.38224 -0.0150291 0.0540259 0.000559412 -0.0530748 -0.187689 -0.201054 0.0234928 0.644104 -4.06497 -0.0105916 0 0 0 0.00303218 0.0260281 0 0 0 0 0.0437043 11.0162 0.646499 -0.789516 0.0571052 0.155808 -0.213259 0.0286265 -0.0317508 0.0679031 -0.393804 0 0 0 0 0 0 +301 0 -0.261322 0.0532551 -0.00899504 -0.188211 0.109561 0.00607325 0.35924 0.873657 -0.0494936 -0.101175 -0.0756037 -0.144853 8.87753e-05 0.251319 -0.00473977 0.436084 -0.36533 -0.0366202 -0.00448625 1.2211 -0.0175698 -0.164453 -0.000133261 -0.0969299 0.018563 0.316866 -0.00851011 -0.054626 0.118919 -0.059693 -0.00254285 -0.102261 -0.293703 -0.078919 -0.0118758 -0.00372633 -0.00214786 -0.303977 -0.0704593 0.358812 0.00147715 -0.412454 -0.00347521 0.732381 0.0234659 0.018949 0.0209228 -0.0791389 0.00518509 0.196904 -0.191833 -1.43598 0.0101109 -0.00903731 0.0658301 1.62465 -0.0226489 0.0775253 0.23342 -0.00102215 -0.647539 -0.820199 1.05602 -0.0260684 -0.0145147 0.0821805 0.148825 -0.0168065 0.00412529 0.684151 -0.182145 -0.0131954 0.120656 0.695207 0.0197923 0.263572 2.64582 2.23378 -2.33533 0.906144 -0.690559 0.799347 0.733884 -0.616607 0.789656 -1.67562 -0.00102389 0.00236447 -0.0131884 0.0360023 -0.107375 0 0 0 0 0 -0.00899504 -0.188211 0.000576114 0 0 0 0 4.63181e-05 0 0.0133876 0 0 -0.00135089 -0.000432834 0.00822831 0 0.000991534 0.0125536 0.130716 0 0 0.00570767 -3.43647e-05 0 0.0064791 0.400656 0 0 0.000701393 0.0847365 0 0.068195 0 0.00179918 0 0 0.000255052 0 0 0.268951 0.000959915 -0.0183501 0 0.0116775 -0.0131485 0 0 0.0592131 0 0.00133413 0.252394 -0.00349062 0 0 0.0026167 -0.000737558 0 7.17095e-05 -0.0339214 0.00271638 0.410744 0.010819 0.00804077 0 0.00790527 -0.0417237 0.0911221 0.00377529 -0.0376896 0 0 0 -2.36974 -0.0642525 -0.548776 -0.00504872 0.0178498 -0.353144 0.00169137 -0.00267451 0.00350851 -0.11589 0 0 0 0 0 0 0.109561 0 0.00607325 0 0 0 0 0.0788167 0.410675 0 0 0.296827 0 0.0193719 0 0.0275495 0 0 0.0392691 0 -0.142474 0.0958021 0.164169 0.0228755 0 0 0.336803 0 2.77759 0 1.08134 0.176114 0 0.466503 0.1053 0.0103864 0 0.0316262 0 0 0.0324173 0 1.0921 0.165609 0 0 0.0454205 0 0 0.327953 2.16144 -0.0902993 0 0.337099 0 -0.360214 0.167434 -0.163934 0.230138 0.0177033 0.0937939 -0.108769 -0.0123256 -0.250899 -0.728928 -0.0716424 0 0 0 -0.180941 0.0113599 0 0 0 0 0.0328455 -9.04231 -0.894213 -1.93207 0.0406849 -0.0528225 -0.0647503 0.0290375 -0.0625775 0.0577117 -0.342696 0 0 0 0 0 0 +302 0 0.245189 0.338607 -0.00953057 -0.1388 0.133191 0.259783 -0.190073 -0.890369 -0.036682 0.399448 -0.052621 0.136941 0.000142547 0.735155 0.0032191 0.584354 -0.253513 0.0533758 0.00784158 2.76202 -0.0110374 -0.353286 -0.000122377 -0.0303152 -0.471391 0.549246 -0.0158809 -0.48163 -0.144406 0.278142 -0.00214498 0.0473452 -0.579161 -0.0258951 -0.321198 -0.00273208 -0.119364 -0.800795 -0.122259 1.75265 0.00257614 -0.546611 -0.00716704 0.756478 0.0434759 1.01953 -0.381579 0.135673 0.00930111 0.900675 0.0286382 2.19695 0.0148834 0.00407451 -0.00325446 1.31675 -0.244775 -0.0157748 0.069484 -0.00181662 -0.63993 -1.53315 0.229514 0.98335 -0.0380201 -0.0209281 -0.047501 -0.0921043 -0.00197182 0.0546084 0.219214 -0.0230583 0.174796 0.0595903 0.637674 0.0444078 7.23994 1.16641 2.53579 0.776119 0.377569 0.0412438 0.379471 0.0579918 -0.743926 1.31445 -0.00359315 0.00847069 -0.0202675 0.0624207 0.17428 0 0 0 0 0 -0.00953057 -0.1388 -0.00289562 0 0 0 0 -0.000143147 0 0.00669119 0 0 -0.00341592 -0.00299558 0.00458952 0 0.000416922 -0.00502164 0.0676027 0 0 0.0399249 -0.000214726 0 0.000375404 0.068984 0 0 0.00808187 -0.0340049 0 0.00446361 0 0.00191064 0 0 0.000455101 0 0 -0.107109 -0.00200032 -0.0477908 0 -0.0405536 -0.0387372 0 0 0.0708652 0 -0.00591527 0.0306459 0.00785411 0 0 0.0069791 0.00499932 0 -0.0102784 -0.0314001 -0.0147222 -0.0874847 -0.0251692 0.0167769 0 -0.00722213 -0.0089274 0.00279426 -0.00853431 0.0382346 0 0 0 0.36869 0.0537389 -0.0694194 0.0100537 -0.0173313 0.0346992 0.00441486 -0.00693169 0.0127906 -0.0200784 0 0 0 0 0 0 0.133191 0 0.259783 0 0 0 0 -0.161373 -0.352357 0 0 0.45728 0 0.0521866 0 -0.00242335 0 0 0.217603 0 -0.853875 -0.0524438 0.161176 0.00817064 0 0 -0.0629191 0 0.344289 0 -2.20831 0.17767 0 -0.596392 -1.3446 0.0130728 0 -0.00413172 0 0 -0.0327124 0 0.22277 0.537638 0 0 0.0359335 0 0 0.13111 1.05937 0.0258116 0 -0.464988 0 -0.0514698 0.0318726 -0.0149495 -0.140719 -0.111127 -0.667187 -0.0528349 0.0376034 0.153017 0.698065 0.0127474 0 0 0 -0.122597 -0.0381061 0 0 0 0 0.103938 10.6121 -1.51834 2.80216 0.383343 -0.534134 1.00046 -0.0661805 0.0726661 -0.171521 0.286824 0 0 0 0 0 0 +303 0 0.701385 0.473382 -0.00394457 -0.0124018 0.032094 -0.0738926 0.843668 1.48861 -0.0439255 0.0869758 0.0199614 0.725826 0.000162125 -0.193175 0.0109287 2.33269 9.65178 -0.0320308 0.014366 1.15643 -0.00514527 -0.0456563 -0.000229352 0.0778684 0.59939 0.542942 -0.0076697 0.523609 0.995957 -0.109771 -0.00333338 0.221644 -0.0760476 -0.082577 0.326288 0.00159992 0.0340428 -0.753378 -0.0120273 0.0567843 0.00235258 -0.182525 -0.00236829 2.62721 0.0276998 -0.100857 0.710887 0.284729 0.00973044 -0.358326 0.128316 -4.44203 -0.00298237 0.0095654 -0.102276 -3.41503 0.0983733 -0.0198191 -0.0860415 -0.00560146 -0.371209 -0.0340378 -2.17819 0.174888 -0.241503 0.146385 -0.226721 0.291165 0.00690917 -0.321965 -0.194903 0.0918187 -0.123382 -0.879869 -0.301374 0.495314 5.75788 -0.19804 -0.0817186 -0.300038 0.623078 -2.04273 -0.462708 0.309147 -0.146263 -1.16958 -0.0022893 0.00267505 -0.0578715 0.0855701 -1.20199 0 0 0 0 0 -0.00394457 -0.0124018 0.00105162 0 0 0 0 3.98832e-05 0 0.00523212 0 0 6.18943e-05 -0.000770411 0.00304804 0 0.000447739 -0.00719191 0.0228503 0 0 0.0348468 -6.0276e-05 0 -0.00487088 -0.140863 0 0 0.011527 -0.0467168 0 -0.0461537 0 0.00257104 0 0 0.000862442 0 0 -0.135193 0.000570742 0.0018865 0 0.0147559 -0.0183476 0 0 0.0439801 0 0.00214775 0.00578039 -0.00270481 0 0 -0.000106833 -0.00181518 0 -0.00614003 0.0824055 -0.00372716 -0.160161 -0.00380978 0.0149956 0 -0.0137475 0.00602307 -0.0982959 0.0167515 0.0311465 0 0 0 0.854448 0.002785 0.006273 0.0138108 -0.0345343 0.0863216 3.87366e-05 -0.00213163 0.00757496 -0.0179519 0 0 0 0 0 0 0.032094 0 -0.0738926 0 0 0 0 -0.207844 -0.328203 0 0 0.136339 0 0.0138804 0 -0.00647804 0 0 0.0192917 0 -0.72158 -0.0692462 0.0578897 0.00860583 0 0 -0.0620408 0 -0.0563389 0 -4.45562 -0.802656 0 -0.349186 -1.77412 0.00526433 0 -0.0411078 0 0 -0.0369496 0 -1.04286 0.484942 0 0 0.0635057 0 0 -0.129876 -0.00407034 -0.049749 0 -0.703887 0 0.238497 0.0539961 -0.0227155 0.159533 -0.124655 -1.65167 -0.345168 0.0615342 0.237206 -4.51606 -0.0180442 0 0 0 0.036214 -0.0278595 0 0 0 0 0.0278935 31.2311 -0.141565 4.13712 0.485418 -0.155912 0.557922 -0.0436095 0.0425493 -0.0683143 -0.0154108 0 0 0 0 0 0 +304 0 -0.218835 -0.0718726 -0.0141834 -0.201997 0.261602 -0.107931 0.590015 0.430099 -0.0575031 -0.155846 -0.104617 0.724072 0.000222589 1.42395 0.0054871 0.301369 1.1579 -0.103107 0.0124652 1.96073 -0.0354653 0.0626949 -0.000200231 -0.166641 0.45451 -0.012414 -0.0199155 0.345847 0.920362 0.258393 -0.00344001 0.0462428 0.0691411 -0.04497 0.329695 -0.00363363 -0.10755 0.414768 -0.167289 0.453559 0.00396418 -0.195466 -0.00829825 2.851 0.0656843 -0.157079 0.623154 0.13971 0.00485274 0.169738 -0.180652 -0.0269499 -0.00132398 0.0139591 0.0194457 -1.06287 0.0282148 0.0149706 0.324026 -0.00319497 -0.482454 -3.696 0.341996 -1.28803 -0.046519 -0.245438 0.225307 -0.110921 -0.00215154 0.756632 -0.248662 0.0605727 0.14607 -2.94485 -0.599684 0.164908 4.72582 3.63297 -2.17184 2.01495 -0.634581 -1.68952 1.06767 -0.568181 0.352531 -0.666437 -0.00542861 0.0120777 -0.0776689 0.173316 -1.11076 0 0 0 0 0 -0.0141834 -0.201997 -0.00245238 0 0 0 0 -0.000141111 0 0.00799507 0 0 -0.00432676 -0.00408514 0.0072342 0 0.000576559 -0.00766202 0.105462 0 0 0.025545 -0.000293437 0 0.000244322 0.022165 0 0 0.00526423 -0.0448546 0 0.00614876 0 0.0018103 0 0 0.000473794 0 0 -0.130153 -0.00196769 -0.0603952 0 -0.0342564 -0.0497898 0 0 0.075333 0 -0.00501151 0.0277637 0.00965646 0 0 0.00884271 0.0042355 0 -0.0112967 -0.044635 -0.0176095 -0.121507 -0.0234507 0.018271 0 -0.00361223 -0.0173831 -0.0290722 0.00538297 0.040605 0 0 0 0.423415 0.0744198 -0.136144 0.0121458 -0.0202598 0.0394764 0.00560821 -0.00908695 0.0172628 -0.0338766 0 0 0 0 0 0 0.261602 0 -0.107931 0 0 0 0 -0.0212627 0.191457 0 0 0.487343 0 0.0424139 0 0.01138 0 0 0.0174306 0 0.357394 0.0108605 0.156488 -0.0495905 0 0 0.0711804 0 2.7895 0 2.34455 0.086817 0 -0.173003 0.911026 0.0104146 0 0.0122378 0 0 0.0307219 0 0.925163 -0.033382 0 0 -0.102538 0 0 0.079882 0.638828 0.0506679 0 -0.39312 0 -0.066218 0.104225 -0.0503903 0.305514 0.0460768 0.0263231 0.0208811 0.0679392 -0.189927 0.940799 -0.0503822 0 0 0 -0.103265 -0.0334134 0 0 0 0 -0.00563797 -18.8746 -1.83789 -0.986373 -0.218576 0.0602405 -0.31621 -0.0664407 0.0714538 -0.192695 0.185257 0 0 0 0 0 0 +305 0 0 0 0 0 -0.491594 0.0629505 0.197927 2.01803 0 0 -0.140343 -0.105087 0 0.163364 -0.00825546 0 0 0 -0.0768316 -5.95868 0 0 0 0 -0.0579931 0 0 -0.452441 3.95198 0.19715 0 -0.0153502 0 0 -0.135878 -0.0218406 0 0 -0.432115 -1.83087 0 0 -0.165926 -0.852087 0 -0.246896 0.415524 -0.0285672 0.241528 -0.439159 0.352733 0 0.0870988 -0.0358081 0.24833 -0.0271581 0.0894546 0.121676 0 0 0.635556 2.74962 0 0.755322 0.508101 0.835644 0 0 0 0 0.125023 -0.333525 0 0.815351 0.55253 0 0 0 -2.44572 0 0.549427 -4.79223 0 0.207128 0.0055279 -5.01001 0 0.193221 -0.198489 0.658698 -8.81119 0 0 0 -0.0714133 -0.00177383 0 0 0 0.00477551 -0.00490965 0 0.000212941 0 5.36144e-07 -0.00192596 0 0 0 0 -0.00788096 0 -0.000476045 0 -0.0627039 0 0.054854 0.0118097 0 -5.4733e-05 0 0 -0.00479592 1.01725e-05 0.000603192 0 -2.01434e-05 0 -0.000350612 -0.00958588 -0.00164009 0.000142437 -0.000325887 0 3.82992e-08 0 0 0 -1.4385e-06 0 0 2.0862e-05 -8.10041e-05 -0.0292484 -0.00122037 0 0 -0.000146473 0 0.000718167 0 0 -0.00230562 1.84569e-05 0.0258847 0.00151335 0 0 -0.0105804 0.0421407 -0.000181271 0.0551496 -0.00599688 0 -0.0177925 5.61624e-05 0.0405034 0 0 0 0.0610614 0 -6.08182e-05 0.00112039 0 -2.24305e-06 0.000103837 0.0307537 0 -3.87977e-06 0.000179605 -0.000337536 0.000421617 0 -0.491594 -0.0714133 0.0629505 -0.00177383 -0.196941 -0.124673 -0.00805062 0.299942 -0.0294037 0.000136015 0.0711117 -0.0147478 2.5162e-06 -0.000248546 -0.000165632 -0.000821129 0.040998 0.00710977 0.536502 -0.841415 0.213342 0.231682 -0.0587573 0.0816711 0.450023 0.211641 -0.0405956 -0.00885813 8.57196 0.115301 1.25914 1.55481 -3.19628e-06 1.50118 0.648132 -0.00131393 -0.00054675 0.0430049 0.0022172 1.29245 3.15075e-05 0.0345143 3.4311 1.42941 0.0069681 0.00261996 0.240579 -0.0894648 0.0480715 -1.46132 -0.674124 -0.581121 -0.10158 -5.07307 0.000167332 -0.36428 0.000596147 0.0285567 0.0305107 -0.4933 -0.500707 -0.0556984 0.155909 -0.216621 -14.9463 0.168141 -0.979761 0.0106096 -0.465013 -0.457043 0.000184143 -0.0712622 -0.000166439 0.25049 0.148723 0.000152751 -2.31963 0.0117807 -3.13296 -0.00795251 -0.500809 -1.35117 6.25386e-06 -0.147052 0.146248 -1.26583 -1.58506e-05 -0.0661734 -0.103063 0.034031 -0.962292 0 +306 0 0 0 0 0 -0.127274 0.246059 -0.867716 -2.02587 0 0 0.0379413 0.41444 0 0.931415 0.000154786 0 0 0 -0.0166043 -1.50732 0 0 0 0 -0.4937 0 0 -0.89486 -2.41635 0.418537 0 0.0360488 0 0 -0.278633 0.001698 0 0 0.260778 -0.266678 0 0 0.0197932 1.15455 0 0.261443 -1.29068 0.147088 -0.116834 -0.693055 -0.129631 0 0.0164162 0.107949 -0.0526412 -1.33927 0.277026 -0.294463 0 0 -0.612506 0.395289 0 -0.590637 0.198036 0.428285 0 0 0 0 -0.265647 0.263585 0 -2.8165 0.565459 0 0 0 3.18216 0 -0.360316 3.53484 0 -0.105505 0.32689 3.42249 0 -0.292882 1.01532 -2.01414 7.32748 0 0 0 -0.0402713 -0.00113684 0 0 0 0.00415241 -0.000257388 0 0.000159118 0 8.95827e-09 -0.00122889 0 0 0 0 -0.0186452 0 -0.000354168 0 -0.0551269 0 0.0464793 0.0113697 0 -1.61371e-05 0 0 0.00826247 -1.48514e-07 0.000377426 0 -1.05488e-06 0 -1.83906e-05 -0.0123817 -0.000292205 3.9324e-07 -0.000226077 0 1.62831e-10 0 0 0 -7.53586e-08 0 0 1.52262e-06 -4.32079e-06 -0.0102754 -7.06124e-05 0 0 2.124e-05 0 3.75484e-05 0 0 -9.32363e-05 -2.47642e-06 0.036811 8.83517e-05 0 0 -0.00178226 0.0270377 -6.20727e-06 0.0384361 0.0215728 0 -0.0173907 9.30952e-06 0.0338706 0 0 0 0.0535761 0 -1.67907e-07 -0.00792849 0 -6.19263e-09 4.80617e-06 0.0190969 0 -1.07113e-08 8.31314e-06 -1.47239e-05 -0.00708652 0 -0.127274 -0.0402713 0.246059 -0.00113684 -0.166361 0.00620779 -0.00561652 -0.2176 0.0171169 8.12645e-05 0.0364737 -0.0160083 1.58454e-06 -0.000170921 -0.000110269 -0.000357498 0.0390072 0.00392356 -0.290652 -0.57665 0.371606 -0.189002 -0.0317028 -0.0653681 0.303411 -0.220346 -0.0196979 0.00541563 3.37399 0.189562 -0.0590462 1.55418 -2.06871e-06 -1.21436 0.592334 -0.000768057 0.00543396 -0.0397886 0.0463977 -1.06186 0.000539242 -0.0430929 2.69943 -0.806674 0.00506117 0.0222812 -0.0450569 -0.00935109 -0.154174 -0.293566 0.841132 0.42686 -0.0674709 -2.2199 0.000115843 0.664871 0.000750595 -0.0643881 0.0135908 0.194913 -0.310495 -0.000825927 -0.160246 -0.149871 -10.0891 0.0452199 0.0179868 0.13561 0.199456 -0.310686 0.000149736 -0.126507 -9.81821e-05 0.190292 -0.0689764 -0.000898332 0.108777 0.0148301 3.12467 -0.00354825 -0.266214 2.39058 1.22235e-05 -0.15117 0.255074 0.735411 -8.74723e-06 -0.18267 0.41003 -0.629461 1.35573 0 +307 0 0 0 0 0 0.193737 0.23035 0.165666 -0.482814 0 0 0.118573 0.510868 0 2.11647 0.0100328 0 0 0 0.070214 3.60956 0 0 0 0 -0.291771 0 0 -0.421433 -3.14224 0.538466 0 0.0139174 0 0 -0.112357 0.0174528 0 0 0.558375 1.52657 0 0 0.12417 2.9359 0 0.85527 -0.832383 -0.0754486 -0.0870088 2.06639 -0.158911 0 -0.0235554 0.228474 -0.405341 -2.47029 0.0534736 0.570984 0 0 -0.0682578 -4.41634 0 0.323685 -0.131456 -1.16402 0 0 0 0 0.341648 0.0279274 0 -2.96154 0.368252 0 0 0 -0.545828 0 -2.20029 7.00735 0 -0.576782 1.29255 0.901259 0 -0.705375 1.66827 -2.73953 8.46165 0 0 0 0.00154034 -0.000265888 0 0 0 0.0032784 -0.00779389 0 9.45403e-05 0 6.44737e-07 -0.000317129 0 0 0 0 0.00424207 0 -8.4557e-05 0 -0.00219139 0 0.0391729 -0.000879122 0 -2.20529e-06 0 0 -0.00334317 1.07203e-05 0.000346614 0 -3.19711e-05 0 -0.000556583 0.000762774 -0.000824225 0.000149823 -4.97814e-06 0 4.61148e-08 0 0 0 -2.28315e-06 0 0 2.17757e-05 -0.000129468 -0.00202761 -0.00189832 0 0 -0.000232785 0 0.00113761 0 0 -0.00367712 -6.07255e-06 0.0170503 0.00239713 0 0 -0.00312025 0.00910049 -0.000333077 0.0096966 0.0172474 0 0.000734668 0.000117166 0.01927 0 0 0 0.00854196 0 -6.3972e-05 -0.00209486 0 -2.35937e-06 0.000160762 0.00164666 0 -4.08096e-06 0.000278067 -0.000512325 -0.00280266 0 0.193737 0.00154034 0.23035 -0.000265888 0.241524 0.072458 -0.00137717 -0.374794 -0.054887 3.13932e-05 0.00275135 -0.0201387 5.02515e-07 -0.000217907 -2.96931e-05 -0.000780052 -0.0108129 0.00194154 0.652363 0.796667 0.0294704 -0.181631 -0.0292529 0.0397815 -0.151254 -0.285048 -0.0529409 0.0214942 2.68838 0.360184 -1.80192 1.03693 -5.80108e-07 -0.816974 -0.557321 -0.000429609 0.00928874 -0.0795682 0.0703899 -1.75397 -0.000488781 -0.0481199 2.59932 0.319788 0.0020241 0.051709 0.0405985 0.127851 0.0785693 0.973985 2.18424 1.85194 0.0367234 1.32766 2.93428e-05 1.24119 0.000229774 -0.398189 -0.0131975 0.0355023 2.41974 0.00431507 0.103526 -0.0132522 -5.0376 0.40769 0.70121 0.103017 0.59753 0.175565 1.13278e-05 -0.00706109 -4.21977e-05 -0.00130532 -0.261843 0.000384321 3.31958 0.0211317 -2.73064 0.000220228 -1.71805 4.46697 1.96673e-05 -0.568018 0.660431 0.00881553 -4.32849e-06 -0.37625 0.574868 -0.769533 1.63943 0 +308 0 -0.708174 -0.370377 0 0 -0.00248781 -0.303786 1.09526 2.2947 0 -0.275569 0 -0.652688 0 -1.02641 0 -1.10018 -2.90031 -0.0535881 0 0.529983 -0.00362135 0.217637 0 -0.0288172 0.573421 -0.425869 -0.00142814 0.6085 1.36685 -0.365037 0 0 0.540563 -0.0117816 0.363115 0 -0.0212404 2.96695 0 -0.254579 0 -0.0804609 0 -2.20815 0 -0.58322 0.939459 0 0 -0.125339 -0.0470584 1.54172 0 0 0 1.90881 0.0241654 0 0.0290557 0 0.367232 -0.343256 0.863333 -0.0785649 0.0592663 -0.665688 0.202843 -0.0670886 0 0.0451737 0.13989 0 -0.0179236 0.788147 -0.727823 -0.125648 -8.65259 0.292475 -6.25286 -0.270206 0.647564 -6.29832 -0.0388398 0.0378151 0.192651 -5.16446 0 0 0 0 -3.85624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00248781 0 -0.303786 0 0 0 0 -0.0649966 0.29816 0 0 0.0347129 0 -0.00282881 0 0.000843637 0 0 0.232739 0 0.289806 0.0507145 -0.0128633 0.0338991 0 0 0.0270108 0 0.114288 0 1.4922 -0.268901 0 0.299558 0.212456 -0.00162573 0 0.00237588 0 0 0.0220252 0 0.177354 -0.308798 0 0 -0.0201873 0 0 -0.259034 0.930719 -0.0675551 0 -0.911596 0 -0.0890918 -0.0904434 0.126972 -0.0325081 -0.132117 0.286413 0.198956 0.0911262 -0.587026 -6.36908 0.113869 0 0 0 0.055169 -0.0497774 0 0 0 0 -0.0898594 -6.91823 -0.820652 -0.590007 -0.307719 0.296814 -0.857591 0.000517622 -0.0045108 -0.0119064 -0.175733 0 0 0 0 0 0 +309 0 -0.570576 -0.319128 0 0 -0.148403 -0.228157 -0.339015 -1.1202 0 0.213617 0 -1.71261 0 -2.22377 0 -2.56368 -10.5261 0.0132255 0 -2.12592 0.0027588 -0.100725 0 0.0363832 -0.307721 -0.567775 0.00269986 0.369709 0.454057 -0.634203 0 0 -0.620904 0.0110748 -0.0454757 0 0.0339856 -2.33774 0 -1.10034 0 0.157098 0 -5.99352 0 -0.628662 0.431639 0 0 0.744893 0.116597 9.4761 0 0 0 5.97037 -0.12556 0 -0.0738295 0 0.823708 2.9883 0.84425 0.921123 -0.169176 0.161861 -0.06547 0.109438 0 -0.121293 0.113601 0 -0.0618735 5.04532 -0.159389 -0.262523 5.63478 -0.725317 4.28646 -0.0407754 0.0215715 1.39942 -0.221204 0.271787 -0.461101 0.901852 0 0 0 0 -1.28101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.148403 0 -0.228157 0 0 0 0 -0.29013 0.281501 0 0 0.10887 0 0.0164643 0 0.00387835 0 0 -0.399997 0 -0.0937219 -0.0991472 0.0203961 -0.0436409 0 0 0.014879 0 -9.78677 0 -0.94713 -1.30652 0 -0.424718 -0.452655 0.00407784 0 -0.0490477 0 0 0.0404207 0 -3.55177 -1.40446 0 0 -0.157437 0 0 0.239925 2.0522 -0.128927 0 1.6495 0 -0.140268 0.165109 -0.105679 -0.281308 0.0841248 1.40006 0.254969 0.0978064 -0.423457 8.14064 0.069245 0 0 0 -0.0209603 -0.0796439 0 0 0 0 -0.0845971 2.5819 -0.592379 1.5615 0.042469 0.0459978 0.237008 -0.151454 0.156127 -0.128302 0.175136 0 0 0 0 0 0 +310 0 0.329597 0.228685 0 0 -0.0347146 0.102118 -0.926779 -1.73251 0 0.303395 0 -0.709012 0 -1.4433 0 0.260707 -1.23302 0.0338843 0 -1.68366 0.00688876 -0.41599 0 0.0595974 -0.650262 0.421786 0.00183969 -0.308745 -1.05005 -0.33045 0 0 -0.866946 -0.0196236 -0.441423 0 0.00623616 -1.88489 0 -0.393764 0 -0.113485 0 -2.83692 0 0.115451 -0.600897 0 0 0.509667 0.115551 0.999989 0 0 0 5.53616 -0.0558403 0 -0.0645238 0 1.18575 3.76584 1.83731 1.57729 -0.149463 1.16261 0.0392022 0.151472 0 -0.132646 -0.0646177 0 0.0414049 5.45751 0.75423 -0.0888162 3.83135 -2.22147 8.22948 -1.19316 1.33685 4.24916 -0.571999 0.596341 -0.658528 4.4669 0 0 0 0 2.96246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0347146 0 0.102118 0 0 0 0 -0.058027 -0.234744 0 0 0.0905644 0 0.0127481 0 -0.0017286 0 0 -0.409167 0 -0.689437 -0.0229438 0.048408 -0.0228412 0 0 0.0124418 0 -5.042 0 -1.06453 -0.874194 0 -0.180816 -0.861552 0.00548169 0 -0.0146855 0 0 -0.0360235 0 -2.37733 -0.27017 0 0 0.0201994 0 0 0.595425 1.66411 -0.0213231 0 3.27492 0 0.39179 0.0242463 -0.0166695 0.400609 0.22074 0.133991 -0.0262408 -0.0132575 -0.0176593 18.5018 -0.152099 0 0 0 -0.0714932 0.0470898 0 0 0 0 0.0704296 -9.66578 -2.60703 1.94138 -1.4139 1.00657 -0.470394 -0.189518 0.167297 -0.142227 0.0525536 0 0 0 0 0 0 +311 0 -1.16493 -0.199292 0.00149833 0.0360699 -0.156669 -0.071762 -0.476737 1.22069 0.00781737 -0.22048 0.0409605 -0.298629 -3.04838e-06 -0.56248 0.00133365 0.095243 -2.89715 -0.0253537 0.00193337 2.30291 0.00180676 -0.121812 3.90884e-06 -0.0801331 0.119231 0.352089 0.0100272 -0.118742 -1.23079 -0.159654 0.000181136 0.0636259 0.43373 0.0827384 -0.214368 0.00103711 -0.0397812 5.13022 0.0817096 1.08465 -0.000149138 0.26751 0.00184192 -1.57082 -0.00673078 0.531532 -0.514828 0.0945703 -0.0031799 -1.00027 0.0349675 -0.177177 -0.00204023 0.00233811 -0.0149407 -1.24059 0.00638655 -0.0419173 0.0811998 0.000205185 0.092135 -1.89102 0.558225 -1.37911 0.0748445 0.121161 0.877357 0.0619701 -0.000196603 0.548284 0.0748695 0.0305941 0.0817868 -0.966368 -0.0574876 0.302436 -15.765 -0.183474 -5.5303 -1.11195 1.51172 -4.91515 -0.18694 0.286826 -0.0819003 -1.43376 2.67193e-05 -0.000331997 0.00565689 -0.0700687 1.17541 0 0 0 0 0 0.00149833 0.0360699 -0.00211067 0 0 0 0 -6.02966e-05 0 -0.0058755 0 0 1.21474e-05 -6.69348e-06 -0.000570189 0 -0.000138068 7.02993e-05 -0.0247807 0 0 -0.0030703 -5.82672e-07 0 0.00212717 -0.194177 0 0 0.000815298 0.0023887 0 0.0355571 0 0.000104375 0 0 4.43217e-05 0 0 0.0649227 -0.000836797 0.000252365 0 -0.0288473 0.0141675 0 0 -0.0230375 0 -0.000418944 0.0522496 0.00148241 0 0 1.69956e-05 0.00432937 0 -0.00111964 0.0119019 -0.00413105 0.0862809 0.000285902 0.00367446 0 -0.00685669 0.00231733 0.00512549 -0.000908546 -0.0178078 0 0 0 0.0993541 0.00443111 0.0583268 -0.00210575 0.00555236 -0.00423453 -9.50371e-06 -8.11082e-07 -2.74755e-05 0.00361879 0 0 0 0 0 0 -0.156669 0 -0.071762 0 0 0 0 0.394331 0.437768 0 0 0.0154739 0 -0.00921645 0 0.0106044 0 0 -0.923812 0 -0.184518 0.16125 0.0376857 -0.0873935 0 0 0.121398 0 -13.0184 0 3.80527 -1.11291 0 1.22978 0.541212 0.00277703 0 0.0527287 0 0 0.0340882 0 -4.07774 -2.44869 0 0 -0.245779 0 0 0.38529 -0.197524 -0.599743 0 2.50257 0 -1.05922 0.00134915 0.169728 0.361999 -0.103821 -0.299811 0.517992 0.139387 -0.886201 10.6299 0.091723 0 0 0 -0.0355483 -0.0234676 0 0 0 0 -0.0787237 -17.1895 -1.36866 -2.73963 -1.458 1.19496 -2.01399 -0.0547388 0.0427081 -0.0213979 -0.500232 0 0 0 0 0 0 +312 0 0.0770564 0.193714 -9.90077e-05 -0.0104506 -0.0952974 -0.0197658 -0.0322284 -0.349397 -0.000576533 0.158278 -0.0174339 0.607828 1.13806e-07 0.743891 -0.000403665 1.12194 4.85842 0.0388024 -0.000608353 1.95688 0.00830366 -0.0786709 -1.85262e-07 0.0098434 0.0514298 0.255224 0.0104781 0.34319 0.242777 0.0489654 -1.06452e-05 -0.026509 -0.245157 0.0316443 0.0279045 -0.000298753 0.0347238 -2.11298 -0.0219627 0.757671 1.2617e-06 0.266684 -0.00042418 2.74703 -0.000242401 0.208365 0.331794 -0.0422757 0.000686637 0.735216 0.177067 -4.22961 0.000522617 -0.000739129 -0.00035063 -1.77943 -0.223284 0.035923 -0.107606 1.23303e-06 0.346325 -1.09771 -0.0815991 0.803397 -0.423364 0.238273 -0.479282 0.173852 1.4234e-05 -0.127374 0.0646512 -0.0226427 -0.0252834 -0.328947 0.0194752 -0.0650509 9.03557 0.132358 2.64305 0.626663 -0.635328 2.40424 -0.339219 0.462481 -0.598107 1.06292 9.62262e-07 3.74771e-05 -0.000366132 0.0166124 -0.231853 0 0 0 0 0 -9.90077e-05 -0.0104506 0.000162609 0 0 0 0 3.80574e-06 0 4.22105e-05 0 0 1.66074e-06 3.73152e-07 3.23221e-05 0 5.56419e-06 -3.72974e-05 0.0010167 0 0 -0.00682546 -1.10711e-07 0 -0.000107892 0.00631866 0 0 -0.000574889 -0.00305167 0 -0.00304199 0 -0.000104275 0 0 -8.57799e-06 0 0 -0.0175421 5.32586e-05 0.000185664 0 0.00227597 -0.000939073 0 0 0.00139473 0 3.5505e-05 -0.00629554 2.99528e-05 0 0 -1.04886e-05 -0.000367683 0 0.000221196 -0.00100819 7.8413e-06 -0.0110077 0.000977912 0.00123965 0 0.00096981 0.00106647 0.00136647 -0.000415924 0.00286597 0 0 0 -0.0159853 -0.00377599 -0.00278367 -6.19273e-05 -0.000554627 0.00730314 -1.07051e-05 -1.88675e-05 -7.32583e-06 3.81426e-05 0 0 0 0 0 0 -0.0952974 0 -0.0197658 0 0 0 0 -0.015777 0.62478 0 0 0.15377 0 0.0149507 0 0.0213703 0 0 0.331828 0 -0.258945 -0.0730592 0.124095 0.0527319 0 0 0.170002 0 1.75145 0 -1.71979 -0.775452 0 -0.212894 -0.43649 0.0131761 0 -0.0180419 0 0 0.0780003 0 -0.549869 0.682726 0 0 0.109755 0 0 -0.0398238 -1.57962 0.129742 0 0.603335 0 -0.498247 0.257295 -0.269723 -0.309391 0.0461147 0.517113 -0.240462 0.156257 -1.10475 4.58686 0.0287523 0 0 0 -0.130793 -0.138408 0 0 0 0 -0.147251 16.2642 1.41452 1.29613 0.540092 -0.196881 0.652751 -0.193828 0.252336 -0.236838 0.300169 0 0 0 0 0 0 +313 0 0.555257 -0.224565 0.00253709 0.114564 -0.0381954 -0.205541 -0.570044 -2.20359 0.0105843 0.720458 0.0413896 -0.720387 -4.44833e-06 -1.59597 0.000976977 -1.88204 -3.87033 0.153983 0.00160288 -4.5039 0.0276698 0.219094 4.82003e-06 0.149124 -0.0886097 -0.782206 0.0165286 0.48795 -0.0229557 -0.402477 0.000228762 0.0565671 0.0710785 0.0414113 0.218601 0.000969335 0.0274394 -1.04605 0.0652997 -2.28084 -0.000235529 -0.190207 0.00172098 -2.02633 -0.0122795 -1.17458 0.290836 0.0980957 -0.00341994 -0.400781 0.149191 4.39159 -0.00185939 0.00349057 0.00130382 0.990382 0.272038 -0.0457823 -0.137727 0.000327996 -0.917892 3.72454 -0.747168 -1.54402 -0.429707 0.085217 0.343409 0.264308 -0.000224729 -0.12977 -0.0969555 0.00932437 -0.0109357 1.17911 -0.102039 0.510359 -4.04232 -3.74135 8.04168 -2.31197 2.85675 -1.88807 -0.988171 1.1709 -1.43664 2.61994 4.87461e-05 -0.000439417 0.00590904 -0.0317598 0.0219228 0 0 0 0 0 0.00253709 0.114564 -0.00319568 0 0 0 0 -8.0922e-05 0 -0.00340924 0 0 -0.000152628 -4.76965e-05 -0.000461 0 -0.000128362 -0.000741983 -0.00942992 0 0 0.0408477 -3.47453e-06 0 0.00308428 -0.391244 0 0 0.00626172 -0.0368491 0 0.0654761 0 0.000608894 0 0 0.000111165 0 0 0.16763 -0.00115434 -0.00211849 0 -0.0467271 0.0216315 0 0 0.0343284 0 -0.0015972 0.119044 0.00119522 0 0 -0.00019611 0.00640071 0 0.00289537 0.0121678 -0.00338518 0.0775371 -0.00452367 0.00207989 0 -0.0102391 0.000906281 0.0424784 -0.0115766 -0.0155724 0 0 0 -0.580772 -0.0236452 -0.0476697 -0.00574959 0.00390697 -0.0185629 5.96043e-05 -9.24603e-05 0.000300666 0.00217066 0 0 0 0 0 0 -0.0381954 0 -0.205541 0 0 0 0 -0.0648904 -0.0587101 0 0 0.225449 0 0.0431119 0 0.0116714 0 0 -0.498259 0 0.887587 -0.036493 0.1703 -0.054159 0 0 0.0847486 0 2.95584 0 1.58882 -0.336247 0 -0.462691 1.33505 0.0235358 0 0.00573417 0 0 -0.00226444 0 -0.497632 0.539383 0 0 0.0678976 0 0 0.229469 -0.497907 0.139701 0 0.876248 0 -0.0728031 -0.0166352 -0.0844891 0.268403 0.0352653 -0.972748 -0.215125 0.0146065 0.301609 -0.0332794 -0.16094 0 0 0 0.125382 -0.013005 0 0 0 0 -0.0131243 -19.8913 -5.82835 5.76604 -2.26902 1.43381 -0.905975 -0.292814 0.208975 -0.169431 0.287375 0 0 0 0 0 0 +314 0 0 0 0 0 -0.431967 -0.298838 0.208346 2.27891 0 0 1.05687 -1.08944 0 -1.31312 0.196398 0 0 0 0.311347 2.53945 0 0 0 0 0.383867 0 0 -0.127144 -8.82304 -0.591804 0 0.557991 0 0 0.100097 0.193298 0 0 3.81639 -0.881028 0 0 0.94051 -2.40464 0 -1.08639 -2.32281 0.175861 -1.90935 2.84059 -1.8334 0 -0.347383 0.498794 -0.856521 -0.813539 -0.916688 -1.77321 0 0 -0.461388 2.706 0 -1.81868 -1.89065 1.27405 0 0 0 0 -0.673443 3.18787 0 -0.767415 3.2466 0 0 0 -6.01876 0 -6.68287 10.9852 0 -2.70172 3.29998 -3.37707 0 -3.94036 6.50043 -13.3195 30.5348 0 0 0 -0.228354 -0.0928584 0 0 0 0.050262 -0.032966 0 0.00477875 0 0.000273218 -0.0166959 0 0 0 0 -0.0914098 0 -0.0220098 0 -0.0637211 0 0.393577 0.231232 0 -0.000769152 0 0 -0.172611 0.00029948 0.0491929 0 0.0147331 0 -0.00222386 0.0374585 -0.00379137 0.0091973 -0.0138631 0 3.28814e-06 0 0 0 0.00108746 0 0 -0.00245169 0.00934579 0.0426113 0.0123666 0 0 -0.015983 0 0.0138427 0 0 0.00663858 -0.0313672 -0.136043 -0.0343547 0 0 0.0892956 0.0745189 0.0368431 0.0161014 -0.101487 0 -0.405068 -0.0235598 -0.102382 0 0 0 0.338181 0 -0.0575646 0.855646 0 -0.00532989 0.0983324 0.153598 0 4.84641e-05 -0.00470457 -0.0140793 0.549978 0 -0.431967 -0.228354 -0.298838 -0.0928584 0.419254 0.217412 -0.480202 0.845529 0.96376 0.152185 -0.035603 1.05346 0.0266185 0.221962 -0.141401 0.107851 -0.0641264 0.850931 -0.247811 1.44846 0.32212 0.0570716 0.1868 -0.0237847 -0.652121 -0.316786 0.974009 0.0209576 2.46871 0.0114886 2.88935 -0.44614 -0.0281785 0.536211 1.1292 0.0629102 0.00261748 0.109092 0.0621908 -1.57109 -0.0636704 -0.0562346 0.456181 -0.579781 -0.00356523 -0.042043 0.0221198 0.147297 -0.521583 -0.832536 -2.534 1.32541 0.193783 -1.51863 0.206866 -1.635 -0.185468 -0.721413 -0.438361 -0.190727 -0.376782 -0.966073 0.621086 -2.41748 -3.22037 -0.156272 0.54173 0.00089676 0.0466204 0.0502774 -0.53439 0.234441 -0.379458 0.251348 -0.0166674 -0.391429 -13.0703 -4.01191 -1.27944 -3.20918 1.43045 0.347369 -0.948147 0.679923 -0.488794 -0.842104 -0.756609 0.519603 -0.284907 -0.558665 2.01356 0 +315 0 0 0 0 0 0.385881 0.101956 0.657435 0.147254 0 0 0.809701 0.659513 0 2.12337 0.147506 0 0 0 0.262986 1.18148 0 0 0 0 0.0960762 0 0 -0.504602 -8.55469 0.398513 0 0.719021 0 0 0.130646 0.156078 0 0 1.99068 -0.103982 0 0 0.388249 3.6724 0 -0.0413236 -2.18747 1.24718 -1.02852 1.76034 -1.62449 0 -0.15999 0.129333 -0.58252 -0.382715 -0.484599 -1.42436 0 0 1.37008 1.74954 0 -1.40149 -0.847696 0.195476 0 0 0 0 0.208944 2.00101 0 -2.22575 1.55571 0 0 0 -0.811365 0 -4.08198 12.384 0 -2.14967 5.05007 -1.64857 0 -2.0478 6.61834 -10.7771 29.8586 0 0 0 -0.138465 -0.0276299 0 0 0 0.0310631 -0.0653752 0 0.00209441 0 0.00840703 -0.0220063 0 0 0 0 -0.0997976 0 -0.0157319 0 -0.181561 0 0.310783 0.440374 0 -0.00527068 0 0 -0.402153 0.00379918 0.0615481 0 -0.00516139 0 -0.00434885 0.207617 -0.0452103 0.0525167 0.0262435 0 0.000613629 0 0 0 -0.000348262 0 0 -0.0164802 0.000268551 -0.0297366 0.0506139 0 0 -0.036856 0 0.0124605 0 0 -0.0335469 0.000394246 -0.0525387 0.00818543 0 0 0.0674149 0.0407596 -0.0200843 0.0514076 -0.153941 0 -0.121227 -0.00387208 0.0267087 0 0 0 0.670878 0 -0.145744 1.14414 0 0.00960567 0.00350829 0.341329 0 -0.00582415 0.0275958 -0.0850944 0.572458 0 0.385881 -0.138465 0.101956 -0.0276299 0.960272 0.155398 0.00178911 0.683749 0.667677 0.0589948 -0.0256687 0.0813999 0.00806242 0.0168317 -0.0146555 0.0856026 -0.0081592 0.43545 0.320773 0.740321 -0.0332311 -0.0162029 -0.286349 0.0440427 -0.1593 -0.22925 0.724698 0.010118 8.75287 -0.00472798 0.507204 1.25868 -0.00437409 -0.163048 0.105276 -0.0379651 -0.00164322 0.0786709 -0.0118467 -2.02097 0.0400902 -0.0253989 4.35301 0.615642 -0.00214649 -0.00081139 0.0521494 0.0868016 -0.118685 0.919229 1.43414 0.0236277 0.0476414 -1.37079 -0.0351245 -1.03615 -0.230398 -0.0212138 0.304854 0.338599 -0.204813 0.227441 -0.519205 0.0548217 -4.41009 -0.0215209 0.417855 -0.116607 -0.304271 -0.341534 -0.0229961 0.019242 -0.167031 0.236617 0.23558 -0.272331 -2.29439 -0.4701 1.17666 -1.2104 0.357522 4.34562 -0.281719 -0.0823363 0.979707 -0.371883 -0.387183 0.234717 0.305725 -0.845812 3.06735 0 +316 0 0 0 0 0 -0.294425 0.369753 -0.633302 -0.259072 0 0 0.0419898 1.16032 0 1.95903 -0.0177538 0 0 0 0.125898 -0.777206 0 0 0 0 -0.427316 0 0 -0.880527 0.136065 0.655347 0 -0.158461 0 0 -0.357628 -0.00815825 0 0 -0.122848 0.243314 0 0 -0.119586 5.25634 0 0.609598 -1.03404 0.52272 0.11578 2.73808 0.110254 0 -0.161662 0.060867 0.127952 1.65401 0.85808 0.069699 0 0 -0.23826 0.934058 0 -0.556263 -0.237872 1.00562 0 0 0 0 -0.368541 -0.0261118 0 -1.27546 0.95723 0 0 0 -0.801456 0 0.0890807 0.641306 0 0.171807 -0.376936 3.04478 0 0.344286 -0.419241 0.975829 -0.504911 0 0 0 -0.000763814 0.0106558 0 0 0 0.0160971 -0.0160053 0 0.00326132 0 0.000661787 0.0377643 0 0 0 0 0.0752808 0 0.014929 0 0.210877 0 0.0866352 -0.10264 0 0.00020269 0 0 -0.00461827 0.000182385 -0.0144178 0 -0.0031548 0 -0.00111811 -0.0298628 -0.000166385 0.00329801 -0.0017513 0 4.45579e-05 0 0 0 -0.000226498 0 0 -0.0021821 -0.00150962 0.0623643 0.0118145 0 0 0.000353012 0 0.000933412 0 0 -0.0175623 -0.00219264 0.12567 0.0187535 0 0 -0.0897838 -0.0291511 -0.0392391 -0.0580661 -0.085317 0 -0.10672 0.00812501 0.0764398 0 0 0 -0.468925 0 -0.0193652 0.23321 0 0.000501641 0.018726 -0.0485113 0 -0.000510135 0.000769718 -0.00731724 0.150548 0 -0.294425 -0.000763814 0.369753 0.0106558 -0.176236 -0.0300921 0.236732 0.00285798 0.640864 -0.0113717 0.00465852 0.13089 -0.00227286 0.0185163 0.0302011 -0.0219249 0.0100957 -0.0474991 -0.489654 0.404806 0.417648 -0.182668 0.0124781 -0.0633965 0.0887163 0.0538766 -0.210652 0.00513243 7.3305 -0.0546494 2.26509 1.25881 0.00408189 -0.0695904 1.17142 0.00227675 -0.00321561 -0.0891821 -0.0275359 0.450088 0.0910111 0.00772859 2.39226 -0.0717052 0.000514422 -0.00246734 0.0333924 0.0590468 0.0141766 0.556319 -0.253288 0.582056 -0.0194359 0.0491153 -0.101886 -0.329784 0.157885 0.0114952 0.199691 0.146384 -0.40349 -0.0379955 0.0723217 0.959261 -1.78178 -0.210764 0.301289 -0.0113469 -0.000370481 -0.368438 -0.015965 -0.0153275 0.0419063 0.0542277 0.0434638 -0.118177 -10.2464 -1.57323 -0.835992 -0.899575 1.68948 -4.14721 -0.0314084 0.221761 -0.571766 0.352291 0.042234 0.0315006 -0.126098 0.208003 -0.622115 0 +317 0 -0.766556 -0.382749 -0.13044 -0.236826 0.19572 0.324218 -1.69466 -4.4333 -0.580475 3.70463 -0.307456 0.0929174 0.0569196 0.154023 -0.0392673 -2.19277 -10.0791 0.518106 -0.0454852 3.00665 0.131007 -0.120942 -0.0697618 0.976034 -0.926035 -0.216994 -0.0328719 -0.392589 0.378901 0.108432 -0.238501 -0.376578 0.787532 -0.517166 -0.542362 -0.0834347 -0.461253 7.13089 -0.865119 1.72854 0.231313 -2.24243 -0.259978 0.526477 0.862912 0.989165 -0.115182 -0.681277 0.629862 1.32684 1.8387 3.75921 0.13307 0.0100011 0.0539015 -2.78328 -0.617334 0.0660708 -1.57229 -0.451674 0.847588 -2.23218 -3.65563 3.18085 0.234896 0.482393 -2.8204 -0.636078 0.297633 -2.67774 0.409025 -0.668316 0.655833 -0.088763 0.135689 1.50684 -31.146 -14.7759 10.9415 -8.20949 7.07131 -11.0496 -3.86599 3.96132 -6.18879 8.21441 -1.28716 1.57499 -1.71686 1.84619 -1.25956 0 0 0 0 0 -0.13044 -0.236826 -0.00472892 0 0 0 0 0.000982074 0 0.00472933 0 0 -0.00447502 -0.0221041 0.0689384 0 0.00540861 -0.122306 0.087424 0 0 0.117679 -0.00160469 0 0.0115325 -0.713509 0 0 0.0216259 -0.204088 0 0.0417257 0 0.020985 0 0 0.00462222 0 0 0.0830471 0.0133874 -0.0600593 0 -0.0689403 -0.0614336 0 0 -0.0278867 0 0.00160233 -0.371487 0.00417795 0 0 0.00940092 0.0149259 0 -0.00989801 -0.0358295 -0.0210005 0.0526604 -0.0190537 0.0147502 0 -0.000115853 6.92673e-05 -0.191081 0.113317 0.00641931 0 0 0 0.415715 0.197189 -0.0503084 -0.0176445 0.0302187 0.106338 0.00630536 -0.0119083 0.0192324 0.027495 0 0 0 0 0 0 0.19572 0 0.324218 0 0 0 0 -0.438854 -1.9931 0 0 0.943526 0 0.117654 0 -0.0927491 0 0 0.415486 0 -0.305993 -0.181998 0.154365 0.0318039 0 0 -0.744374 0 -8.98992 0 1.82355 -0.0605843 0 -1.45775 -0.122774 0.0140393 0 -0.0381719 0 0 -0.256237 0 -1.83145 0.910083 0 0 0.0592098 0 0 0.157962 -2.65119 0.0189617 0 -0.706657 0 1.05368 -0.406147 0.299332 -0.615829 -0.00390193 0.0922914 -1.19469 0.22423 2.35128 6.96585 0.0908101 0 0 0 -0.25573 -0.209765 0 0 0 0 0.723477 -17.2957 -4.72396 3.09793 -0.792531 0.403764 -1.64022 -0.449358 0.480654 -0.816398 1.12181 0 0 0 0 0 0 +318 0 0.407273 -0.259989 -0.0748758 -0.262528 0.351908 -0.0560296 -1.3027 -3.82403 -0.410782 2.8121 -0.6982 -0.44338 0.0311135 -1.70636 -0.149035 -1.69091 -4.86973 0.495939 -0.303435 0.65715 0.129425 0.33979 -0.0360873 0.74474 -0.345733 -0.686692 0.0632326 0.653689 2.19867 -0.413916 -0.130094 -0.698814 0.741843 0.18397 0.0140392 -0.153816 -0.00772366 2.51515 -1.20289 -0.179069 0.138318 -0.459201 -0.266017 -1.65348 0.609277 -0.337787 1.18374 -1.53713 0.764596 -0.116816 1.77649 12.6845 0.363075 -0.266818 0.472143 1.35816 0.586546 -0.101301 -1.31322 -0.317232 0.893149 0.177516 -2.38124 2.29004 0.127343 0.580156 -1.90184 -0.169676 0.195262 -3.01734 -0.148296 -1.35647 0.265733 0.195295 -0.804093 1.06817 -13.9396 -10.5202 8.26548 -3.77719 3.42816 -5.12428 -3.9353 3.69719 -6.0546 9.45036 -0.908826 1.55362 -2.65251 4.36836 -7.30892 0 0 0 0 0 -0.0748758 -0.262528 -0.00016476 0 0 0 0 0.00167377 0 -0.0189892 0 0 0.00488899 0.0100729 -0.00438325 0 -0.00183205 -0.00472984 -0.138292 0 0 0.125858 0.000740845 0 -0.0702102 0.641209 0 0 0.00330064 0.178865 0 -0.182533 0 0.0153118 0 0 -0.000758362 0 0 -0.381176 0.0228492 0.0657402 0 -0.00623408 0.0188021 0 0 0.023601 0 0.018098 -0.0639836 -0.0467165 0 0 -0.0125695 0.0113135 0 0.0109056 -0.0130836 0.0319913 0.139633 -0.0329791 -0.011492 0 0.0020754 0.11847 -0.0584918 0.0553392 0.111214 0 0 0 2.25056 -0.198265 0.561393 0.038825 -0.0760883 0.24273 -0.00671427 0.012857 -0.0287174 0.0747509 0 0 0 0 0 0 0.351908 0 -0.0560296 0 0 0 0 -0.75099 -1.04462 0 0 1.04784 0 0.14344 0 -0.0836069 0 0 -0.0708494 0 0.785081 -0.220733 0.491646 -0.0418265 0 0 -0.555587 0 -6.34434 0 0.648642 -1.00345 0 -1.87823 1.0569 0.0726905 0 -0.092531 0 0 -0.148179 0 -2.97721 0.360756 0 0 -0.0195805 0 0 0.0486133 -3.25895 -0.220766 0 0.951009 0 1.41381 -0.400947 0.403835 -1.25472 -0.20022 0.290725 -1.17782 0.561267 2.28771 13.665 0.143953 0 0 0 0.0319146 -0.377794 0 0 0 0 0.383088 0.716021 -4.05002 7.23507 -1.15598 1.30166 -1.07692 -0.56449 0.663098 -0.972751 1.63408 0 0 0 0 0 0 +319 0 -0.774559 0.258309 0.00973433 0.0208922 -0.217656 -0.0375974 -0.58269 -0.0889393 0.0935252 0.275269 -0.00797254 -0.46348 -0.00408177 -1.58425 -0.0149707 2.32594 9.79185 0.0699966 -0.0101983 -0.710023 0.0276839 -0.04789 0.00558139 0.0340912 -0.0958991 0.70414 0.0573327 0.177473 -0.18504 -0.3622 0.0239122 -0.0542978 0.385055 0.0724397 -0.120179 -0.00035309 0.433632 3.58171 -0.0309344 -0.284778 -0.0123317 1.21983 0.00667835 -2.03855 -0.0162089 -0.113362 0.0150134 0.00538816 -0.00717922 -1.54894 0.489814 1.50437 -0.00451973 0.0242403 -0.0145549 -0.44201 -0.642708 0.260332 -0.170054 0.0218307 -0.0738931 0.370247 -0.147172 1.21197 -0.0483806 0.182592 -0.0877448 0.415143 -0.0488286 -0.0538251 0.137506 -0.132985 -0.20044 2.37128 -0.0042045 0.477783 -20.6192 -5.78003 2.23667 -3.67672 2.71896 -4.39708 -0.167636 0.260759 -0.292773 -0.492122 0.0241779 0.0056069 0.164948 -0.147958 0.615117 0 0 0 0 0 0.00973433 0.0208922 -0.00018275 0 0 0 0 -7.32352e-06 0 0.00160064 0 0 0.000818117 0.00340128 -0.00124436 0 4.23384e-05 0.00634859 0.00589792 0 0 0.0200699 0.000247237 0 0.0563573 -0.26797 0 0 0.00517046 -0.00822362 0 0.205897 0 -0.000776666 0 0 0.000410621 0 0 0.736012 -0.000124874 0.0113099 0 -0.00317115 0.0621202 0 0 -0.209498 0 0.00106153 -0.144576 -0.00220301 0 0 -0.00258581 0.000682763 0 0.0131326 0.0139231 0.01013 0.156292 0.0423025 -0.0314603 0 0.00319212 0.000988483 0.151667 -0.0528722 -0.154482 0 0 0 -3.05566 0.10745 -0.313446 -0.0737161 0.140421 -0.287071 -0.00128057 0.0024648 -0.00568365 0.0086587 0 0 0 0 0 0 -0.217656 0 -0.0375974 0 0 0 0 0.128496 0.0514798 0 0 -0.11764 0 -0.0113518 0 -0.000310087 0 0 0.51763 0 -0.570783 0.0507798 -0.0213414 0.0768241 0 0 0.0191456 0 -2.9891 0 1.26175 -0.878101 0 0.639841 -0.348982 0.00108541 0 0.00346602 0 0 0.00323145 0 -1.94496 1.22811 0 0 0.180474 0 0 -0.0867092 -1.3546 -0.0521727 0 0.80559 0 0.403753 -0.0190111 -0.028286 -0.169226 0.0391204 0.206936 -0.259457 0.085248 -0.684153 7.13797 0.0625933 0 0 0 0.183499 0.00438218 0 0 0 0 0.000163211 -14.8849 0.337502 -4.42816 0.0999562 -0.371541 -0.589784 0.0618383 -0.0634529 0.0245568 -0.46639 0 0 0 0 0 0 +320 0 -0.694489 -0.190806 -0.0957768 -0.321298 0.356947 0.0976251 -0.986096 -4.52963 -0.510124 4.16302 -0.43696 0.410183 0.0224197 0.958639 0.089029 0.98948 5.50583 0.742046 0.176148 -2.1649 0.141649 0.363959 -0.0231286 0.94365 -0.512419 -0.0882321 0.108442 0.0689846 0.937229 0.213728 -0.124656 0.407654 0.909319 0.501761 0.0444106 -0.050358 0.0603207 3.52384 -1.06116 -0.76041 0.141234 0.215508 -0.154098 2.20286 0.842377 -0.176957 0.380499 0.761599 0.467255 -0.470179 1.99208 -15.9183 -0.0942282 0.39844 0.378876 -2.63403 -0.480315 -0.122594 -1.64552 -0.351789 3.19147 1.24705 -2.8265 0.537878 -0.243091 -1.22105 -2.20145 0.0927543 0.176908 -2.64866 1.96134 -0.366005 -0.0467605 0.112021 -1.45256 -2.43137 -13.0125 -10.9645 6.71465 -4.14716 3.9721 -8.67032 -3.96511 3.24928 -7.04167 6.91401 -0.872175 1.01867 -2.31941 2.83276 -4.08149 0 0 0 0 0 -0.0957768 -0.321298 -0.00155088 0 0 0 0 0.000908029 0 -0.0215854 0 0 0.00171267 0.00455611 -0.000586009 0 -0.00171248 0.0133189 -0.123588 0 0 0.0576071 0.000332216 0 -0.0809993 0.479306 0 0 -0.000248613 0.131512 0 -0.212613 0 0.00595356 0 0 -0.00190095 0 0 -0.483444 0.0123375 0.0268176 0 -0.0225712 -0.0534351 0 0 0.123707 0 0.0123399 -0.468342 -0.0336849 0 0 -0.00414464 0.0128919 0 -0.00135465 -0.0171047 0.00839523 -0.233858 -0.0405854 0.00939513 0 0.00149374 0.111944 -0.127307 0.08981 0.0928466 0 0 0 2.70397 -0.156047 0.716828 0.0509129 -0.0990319 0.280961 -0.00175859 0.00360034 -0.0204494 0.125598 0 0 0 0 0 0 0.356947 0 0.0976251 0 0 0 0 -0.653609 -1.54517 0 0 1.2952 0 0.175835 0 -0.0576747 0 0 -0.148114 0 0.583359 -0.226952 0.528678 -0.0368939 0 0 -0.520444 0 0.300013 0 3.30718 0.414442 0 -1.63474 1.40922 0.0756382 0 -0.089476 0 0 -0.173776 0 0.706317 0.126301 0 0 -0.0299157 0 0 0.224388 -4.59844 -0.593952 0 -0.950944 0 1.69619 -0.311522 0.451402 -0.620456 -0.09905 -0.645644 -1.43256 0.595572 1.05512 -7.45994 0.0746253 0 0 0 -0.40158 -0.334456 0 0 0 0 0.519619 -18.5979 -6.44392 5.87698 -1.72392 1.92941 -3.24125 -0.6096 0.714493 -1.12361 1.3098 0 0 0 0 0 0 +321 0 0.641413 0.399763 -0.0192529 -0.11244 0.29254 0.247875 -1.02578 -2.96833 0.0280916 0.920679 -0.128378 -0.0630054 0.00404313 -1.18082 -0.0134876 2.011 6.81223 0.0138793 -0.00163981 0.377412 0.0201081 -0.250304 -0.000956367 0.189639 -0.455152 0.746258 -0.0201687 -0.202106 -0.0136873 -0.145469 -0.00202379 -0.193321 -0.392862 -0.226554 -0.304985 -0.00905419 0.049341 -1.22301 -0.3347 0.448415 0.0387316 -0.321563 -0.02494 -0.494065 0.366063 0.36871 -0.101682 -0.18183 0.0850938 -1.53762 0.346128 -10.8515 0.0441573 0.0895481 0.21898 -3.28077 -1.21365 0.0981728 -0.486669 -0.116138 0.0445671 -0.248237 -1.70009 -0.571183 0.479054 -0.611465 -0.55082 -0.547022 -0.0505215 -1.4862 0.418642 -0.140056 0.127672 1.52109 -0.789366 -0.913897 1.00183 -3.75811 8.69836 0.282997 0.0329922 2.81951 -1.00933 1.09823 -1.8878 5.04092 -0.379011 0.377217 -0.789989 0.721158 0.0596061 0 0 0 0 0 -0.0192529 -0.11244 -0.00353598 0 0 0 0 -0.000592359 0 -0.0284032 0 0 0.00377223 0.0070314 -0.0212783 0 -0.00263977 0.0580144 -0.221615 0 0 0.0314274 0.000518279 0 -0.00857358 0.806606 0 0 -0.00197544 0.262469 0 -0.0377298 0 0.00456407 0 0 -0.000382761 0 0 -0.149792 -0.00832689 0.0529255 0 -0.0508961 0.0269437 0 0 0.026134 0 -0.00383498 -0.244958 -0.00724954 0 0 -0.0117066 0.00933295 0 0.00824806 0.0125636 0.0190308 -0.464091 -0.00567886 -0.011976 0 -0.0106597 0.0673966 -0.0117925 -0.0373771 0.00227497 0 0 0 1.67478 -0.162933 0.764965 0.0217697 -0.0442762 0.188592 -0.00553665 0.0107434 -0.0295107 0.141697 0 0 0 0 0 0 0.29254 0 0.247875 0 0 0 0 -0.329897 -0.0518161 0 0 0.366384 0 0.0433591 0 -0.0224513 0 0 0.256675 0 -0.603162 -0.137595 0.0810669 0.0373568 0 0 -0.264776 0 0.979945 0 -1.88508 -0.118992 0 -1.24559 -0.801238 0.00814048 0 -0.0319722 0 0 0.0140105 0 -0.620352 0.906803 0 0 0.111868 0 0 0.184184 -0.437212 -0.475028 0 1.76464 0 -0.821988 -0.124603 0.191518 -0.86754 -0.115368 0.980192 0.347988 0.212112 -2.33659 -3.14091 0.150198 0 0 0 0.000564008 -0.159086 0 0 0 0 -0.0435602 10.9458 -0.503358 4.10171 0.61129 -0.989588 2.19187 -0.19876 0.238859 -0.351063 1.03803 0 0 0 0 0 0 +322 0 -0.477498 -0.340883 -0.0216658 -0.10989 0.0066691 -0.296899 0.524153 0.971026 -0.196603 0.183062 -0.195508 -0.56301 0.00445426 0.239364 0.0418535 -1.696 -5.97913 0.074809 0.036247 -0.200025 0.0174545 0.130801 -0.00473467 0.0632794 0.326663 -0.554204 0.044905 0.73196 2.15981 -0.277095 -0.0304045 0.311606 0.208105 0.170805 0.295934 -0.0199853 0.108708 1.54399 -0.449057 -0.658694 0.0262226 -0.143728 -0.0575065 -0.515548 0.135677 -0.737822 1.25036 0.216575 0.216201 1.76676 0.327879 2.29663 -0.0719847 0.0867298 0.0361743 1.52298 -0.298459 0.144157 -0.0754981 -0.0721559 1.01452 -0.0682556 -0.242868 1.41799 -0.250631 -0.473207 -0.582062 0.051892 0.0648654 -0.145992 0.339689 -0.0250412 -0.103234 0.502617 -0.934957 -0.83573 -9.84157 -1.4345 -3.65872 -0.864266 0.2792 -3.27583 -0.275407 0.0441014 -0.467663 -4.17129 -0.140476 0.308061 -1.41353 2.1811 -9.40565 0 0 0 0 0 -0.0216658 -0.10989 -0.00253627 0 0 0 0 -2.37414e-05 0 0.00403882 0 0 8.09832e-05 0.00119018 0.00417604 0 0.000139894 -0.000847863 0.0404857 0 0 0.165527 9.31662e-05 0 0.00514277 0.170855 0 0 0.0245839 0.0360703 0 0.0704676 0 0.0205502 0 0 0.00266039 0 0 0.343564 -0.00043425 -0.000118511 0 -0.0363583 0.0295765 0 0 -0.114488 0 0.00109771 0.115015 -0.00550801 0 0 -0.00293487 0.00678284 0 0.00920556 -0.0141134 0.0118785 -0.0241768 0.0129753 -0.0185389 0 -0.000163952 0.0168579 0.0208593 -0.0239164 -0.0394111 0 0 0 -1.48188 0.0406358 -0.216353 -0.0326408 0.0625291 -0.147554 -0.000736778 0.00142197 -0.00155706 -0.0144764 0 0 0 0 0 0 0.0066691 0 -0.296899 0 0 0 0 -0.291347 -0.282845 0 0 0.118371 0 0.008562 0 0.0215864 0 0 0.21185 0 0.438311 0.0269719 0.106354 0.0361935 0 0 0.150973 0 -1.15276 0 0.984953 -0.210667 0 0.0326872 0.299201 0.0111194 0 -0.0203204 0 0 -0.0284861 0 0.25167 0.183185 0 0 0.0475059 0 0 0.0965419 0.031598 -0.196307 0 0.624989 0 0.387773 -0.101558 0.117272 -0.342902 -0.0342939 0.318554 -0.0944585 0.0603246 -1.00765 -1.91002 0.0792743 0 0 0 0.0128972 -0.0574129 0 0 0 0 -0.00462024 -15.8588 -0.018598 -3.45726 0.0960277 -0.406775 -0.0259784 -0.0513232 0.0527348 -0.103107 0.125549 0 0 0 0 0 0 +323 0 0 0 0 0 0.0507744 0.229604 -0.996679 -1.45059 0 0 -0.448183 1.08054 0 1.29927 0.0580834 0 0 0 0.268382 1.53969 0 0 0 0 -0.324256 0 0 -0.132796 2.37013 0.507669 0 0.464964 0 0 -0.227899 -0.0688451 0 0 -1.48963 0.608381 0 0 -0.266367 3.49964 0 0.613085 0.21956 1.34812 0.409305 1.16401 0.252518 0 -0.404373 0.00506314 -0.0766016 1.03485 0.556862 -0.102273 0 0 -0.290507 0.899425 0 0.0795216 -0.509889 0.850554 0 0 0 0 -0.171855 -0.350361 0 -0.0170689 0.250337 0 0 0 1.3081 0 1.72017 -2.51104 0 0.333875 -0.639608 1.54177 0 0.753953 -1.57116 3.16162 -4.41452 0 0 0 0.163732 0.0409429 0 0 0 0.000893257 -0.00254393 0 0.000637003 0 0.00304789 0.0220947 0 0 0 0 0.11083 0 0.0215754 0 0.178028 0 0.012208 0.0029828 0 -0.012584 0 0 -0.223265 0.000706413 -0.0275964 0 -0.00429208 0 -8.58608e-05 0.042455 -0.0608951 0.0141351 -0.00702672 0 0.000143959 0 0 0 -0.00020044 0 0 -0.00179274 -0.000905204 -0.242727 -0.00775489 0 0 -0.0116364 0 -0.000704005 0 0 0.00876468 -0.00424256 0.171775 0.00166088 0 0 -0.206729 -0.0492116 0.014714 -0.0385378 0.554214 0 -0.136929 0.00196274 0.00509411 0 0 0 -0.787971 0 -0.0523109 0.864185 0 -0.00329297 0.053406 -0.128443 0 -0.00045542 0.00754962 -0.0326288 0.501948 0 0.0507744 0.163732 0.229604 0.0409429 -0.178195 -0.0759884 0.495295 -0.193061 0.499077 -0.0361977 -0.0227099 0.391418 -0.00748456 0.0342167 0.0814945 -0.0161758 -0.04684 -0.151683 0.188202 0.430009 0.574632 -0.0635029 0.418551 0.0388314 -0.254371 0.148816 0.128856 -0.0136062 3.10632 -0.375745 2.95546 0.615757 0.0121781 -0.317766 1.63736 0.0592757 -0.00725348 -0.051385 -0.0725481 0.892271 0.0118578 0.0240509 1.0241 0.872935 -0.00487214 -0.037784 0.191957 0.0069686 0.310492 -0.616762 1.46996 0.493003 0.127811 0.733068 -0.215448 0.166183 -0.0504195 -0.159507 -0.407429 0.00644557 1.0434 0.30921 0.131911 0.249215 5.911 0.100262 -1.18766 -0.0913052 -0.0437435 0.46131 -0.0196862 0.0279083 0.0893162 -0.0488119 0.0492286 0.023786 -14.4796 -2.29136 1.54042 -0.239973 1.1408 -2.42818 -0.0126027 0.147388 -0.444147 0.0441796 0.0627723 0.112512 -0.332282 0.532717 -0.992381 0 +324 0 0 0 0 0 0.621088 0.331841 -0.366855 -2.06885 0 0 -0.25879 1.16894 0 2.20103 0.0396228 0 0 0 0.0519854 3.75416 0 0 0 0 -0.328374 0 0 -0.0352098 0.950089 0.614758 0 0.236435 0 0 -0.170524 -0.0491155 0 0 -0.863878 2.03651 0 0 -0.179993 4.14046 0 1.16638 0.537024 0.33044 0.367605 -0.104418 -0.415064 0 -0.232716 -0.0605113 0.136582 -1.05647 0.220335 0.0303079 0 0 0.155111 -3.45907 0 0.482987 0.728768 1.43125 0 0 0 0 -0.367136 -0.573446 0 -3.8011 0.18856 0 0 0 2.4673 0 0.817098 -0.110709 0 0.0662852 -0.278578 3.06848 0 0.842421 -0.838701 1.62066 -1.66078 0 0 0 0.100367 0.0202279 0 0 0 -0.0154631 -0.0174583 0 -0.00247649 0 -0.00266315 -0.0411047 0 0 0 0 -0.0428442 0 -0.00101072 0 -0.329717 0 -0.0713984 -0.748573 0 -0.00749947 0 0 -0.165701 -0.00105132 -0.116856 0 -0.00631733 0 -0.000743161 -0.295968 -0.0383718 -0.0244566 -0.0440599 0 -0.000122169 0 0 0 -0.000294108 0 0 0.00256367 -0.00278503 -0.0144064 -0.0416864 0 0 0.0104386 0 -0.000695511 0 0 -0.0148589 -0.0117171 -0.282164 0.0348693 0 0 0.0646738 -0.0182719 0.0165035 -0.456512 -0.00587606 0 -0.225918 0.0169006 -0.0024664 0 0 0 1.10315 0 0.10141 0.518134 0 0.00658708 0.0288681 0.368974 0 0.000905745 0.00404693 0.0178996 0.296255 0 0.621088 0.100367 0.331841 0.0202279 0.181886 -0.0127733 0.0904788 -0.813088 -0.486267 -0.035148 0.0469653 0.0749501 -0.00549673 0.0173519 0.0279186 -0.0462319 0.0056037 -0.223447 0.0513699 -0.715481 0.049564 -0.244041 0.23255 -0.0333713 0.112036 0.0139327 -0.27879 -0.0356687 1.23109 -0.0427139 -0.262494 1.18719 0.00544659 -1.72214 0.039604 0.0363236 0.00344385 -0.133936 0.0174924 -0.0142225 -0.0705719 0.00763616 1.86097 -0.535163 0.00517247 0.00223238 -0.204791 -0.186505 -0.355623 -0.49161 1.10756 -0.0827963 0.0359746 -2.3707 -0.0404648 1.64007 -0.159574 0.190419 -0.436318 0.201785 0.11014 -0.324259 -0.257143 0.17318 -2.35165 -0.0942605 0.252124 -0.0133268 0.116721 -0.466626 0.0451311 0.0477814 0.0846915 -0.224403 -0.0718776 0.248967 1.28603 -0.0652501 5.32816 0.60168 0.23076 0.429889 0.0852368 0.133114 -0.194607 0.942273 0.092471 0.0924488 -0.177952 0.415887 -0.572921 0 +325 0 0 0 0 0 -0.194951 0.114448 -0.00949756 0.99826 0 0 0.412437 -0.084605 0 -1.07941 -0.0752964 0 0 0 -0.325405 -2.22846 0 0 0 0 -0.0280512 0 0 -0.803097 0.357939 0.171464 0 -0.86471 0 0 -0.22268 0.0828029 0 0 0.917737 -0.724206 0 0 0.189167 -3.67869 0 0.0858301 -0.719732 -2.68067 -0.309458 -0.53246 -0.111242 0 0.619012 -0.0567179 0.0182884 -0.39787 0.332487 -0.464147 0 0 0.196851 2.19617 0 0.89588 0.305916 0.66546 0 0 0 0 -0.0198197 0.0281733 0 0.524001 0.102014 0 0 0 -1.19538 0 -0.66221 -1.9235 0 0.0136946 -0.199154 -1.94377 0 -0.32597 -0.909907 -0.247277 -2.20149 0 0 0 -0.0788986 -0.0522331 0 0 0 0.0412092 0.000944799 0 0.00447625 0 -0.00502098 0.0325315 0 0 0 0 0.108163 0 0.00140016 0 0.231111 0 0.302111 0.245398 0 0.0248609 0 0 0.680659 -0.00118902 0.0856998 0 0.00654672 0 -1.98825e-05 0.153537 0.136738 -0.0239403 0.038987 0 -0.000237056 0 0 0 0.000305508 0 0 0.00283218 0.00131369 0.2293 0.0265421 0 0 0.0530497 0 0.00145325 0 0 0.0254054 0.0218812 -0.0100824 0.0235161 0 0 -0.0249734 -0.133281 0.0252147 0.109117 0.312497 0 0.618115 0.00993256 -0.175939 0 0 0 -0.566104 0 0.0863111 -2.48189 0 0.00530236 -0.149339 -0.408443 0 0.000745135 -0.021143 0.0756873 -1.38975 0 -0.194951 -0.0788986 0.114448 -0.0522331 -0.123809 -0.00401786 -0.197736 -0.11965 0.757072 0.0831711 -0.0445816 0.360929 0.0142302 0.0696014 -0.0760464 0.0404649 -0.0144395 0.478585 -1.21553 0.246145 -0.332008 0.0556479 -0.217152 -0.134808 -0.409314 0.0999226 -0.0273288 0.0136208 -5.78204 0.024709 -1.45659 0.228896 -0.0150599 0.0165283 -0.967596 -0.0312026 0.00153761 -0.00118853 0.0123589 0.619985 0.14931 0.0153497 -1.71502 -3.32192 -0.00128941 -9.06786e-06 -0.344428 0.0597128 -0.039618 -1.09909 0.3002 -0.227393 0.100649 0.82266 0.0855938 0.965995 0.406019 -0.0966728 -0.0114355 0.280526 -0.181763 0.912125 -0.25668 0.472534 0.168455 0.16358 -0.473926 0.131194 -0.0505507 0.759959 -0.162573 -0.00224822 -0.18235 -0.237642 0.0357087 -0.240072 7.13623 -0.227415 -0.102017 -0.870965 -0.154423 -1.1074 -0.290462 -0.0677468 0.165302 -0.684908 -0.198057 -0.0326287 -0.0432565 0.0598681 -0.583263 0 +326 0 0.504778 0.276514 0.0373431 0.213024 -0.194322 0.00838352 0.574749 1.15771 0.372474 -1.00052 0.169278 0.23082 -0.00489427 0.677664 -0.0358806 0.776522 3.50993 -0.128519 -0.0840809 2.96218 -0.0213677 -0.34667 0.00658934 -0.15525 -0.0161914 0.287683 -0.01979 -0.113106 -0.334853 0.101792 0.0503922 -0.173757 -0.59635 -0.146089 -0.0384827 0.0119807 0.145957 -1.99522 0.293317 1.30242 -0.0317805 0.398492 0.0294032 1.58897 -0.186397 0.529568 -0.187825 -0.481211 -0.0681416 -0.395612 -0.207188 -0.266643 0.289732 -0.13401 -0.00104541 -2.23694 0.427585 0.54967 0.195898 0.0764596 0.264985 -3.00478 0.336128 0.382298 0.307143 -0.348204 -0.309997 -0.065999 -0.103116 -0.00207942 -0.199791 0.00752681 -0.135692 -1.65634 0.261352 1.02911 4.50522 2.24175 -1.64969 0.742314 -0.823109 2.69684 0.553823 -0.551864 1.3102 -1.1176 0.0796853 -0.0800556 0.139803 -0.138547 0.245134 0 0 0 0 0 0.0373431 0.213024 -0.00037282 0 0 0 0 -0.000211809 0 -0.0184967 0 0 1.0079e-05 -0.000411541 -0.0318742 0 -0.0047711 -0.0407725 -0.113274 0 0 0.0335191 -1.55864e-05 0 0.0247874 -0.321833 0 0 0.00397132 -0.0966801 0 0.0713173 0 -0.000112514 0 0 8.29469e-05 0 0 0.0188412 -0.00456074 -0.001329 0 -0.00880632 0.026302 0 0 -0.148313 0 -0.00207891 -0.588813 0.00654247 0 0 -0.000172462 -0.000622799 0 0.00215951 0.00194944 -0.0122876 1.01315 -0.0184826 -0.0211074 0 6.27823e-05 -0.0122867 0.00509073 0.025811 -0.21635 0 0 0 -0.551459 -0.0131348 0.366176 -0.00291251 0.00784056 -0.0967463 7.69067e-05 -0.00020228 0.00257259 0.127042 0 0 0 0 0 0 -0.194322 0 0.00838352 0 0 0 0 0.206057 0.152859 0 0 -0.74777 0 -0.0846324 0 -0.00424303 0 0 -0.117623 0 -0.784751 0.0833815 -0.28828 -0.0623639 0 0 -0.0209683 0 1.02156 0 -2.80589 -0.453805 0 0.48501 -1.37513 -0.0342189 0 0.0419088 0 0 0.0195168 0 -0.223764 -0.140939 0 0 -0.0966696 0 0 -0.44654 0.0451371 -0.156364 0 -0.873625 0 -0.104297 -0.0304987 0.0891231 0.220826 0.0980191 0.0877543 -0.0590181 -0.0879915 0.376614 -2.32739 -0.0801694 0 0 0 0.252237 0.105149 0 0 0 0 -0.0963064 16.2083 3.9309 -1.93958 0.794835 -0.387259 0.485964 0.208691 -0.164704 0.256986 -0.197272 0 0 0 0 0 0 +327 0 0.923777 0.0341057 0.00546155 0.12372 0.000282031 -0.273574 0.692394 0.929407 -0.0340633 0.0462632 0.155092 -0.377011 -0.000558208 -0.80663 0.0214046 -0.249882 1.32169 0.126479 0.0373207 -2.19758 0.033736 0.302494 -0.000173392 0.122512 0.473516 -0.454594 0.0292953 0.604586 0.279823 -0.334311 -0.00288308 0.275923 0.103397 0.165025 0.425751 0.0150703 0.132797 -2.73881 0.314965 -1.51088 -0.00820423 0.313433 0.0310267 -0.971046 -0.114597 -0.958673 0.496929 0.520377 -0.0646341 -0.56419 0.118097 -0.0083747 -0.0461829 -0.028916 -0.0493878 -0.907911 0.224135 0.130774 -0.127037 0.0209214 0.728202 1.15097 -0.829641 0.00425582 -0.188511 -0.483402 -0.0805923 0.211213 0.0330814 -0.514872 0.141825 0.128727 -0.383102 0.310564 -0.516381 -0.013482 5.27475 1.11168 -2.60107 1.63586 -1.9819 2.59135 -0.0554456 0.054496 -0.0434298 -0.621659 0.0489908 -0.0779965 -0.0178665 -0.0892284 -0.204849 0 0 0 0 0 0.00546155 0.12372 0.000773275 0 0 0 0 6.78542e-05 0 -0.00320789 0 0 -0.0009281 -0.00275064 0.00557935 0 0.000580634 -0.0127182 4.49243e-05 0 0 0.0676825 -0.000122268 0 -0.0111158 -0.113506 0 0 0.0108209 -0.0673699 0 -0.0960421 0 0.00127854 0 0 0.00010311 0 0 -0.646272 0.00138478 -0.0224869 0 0.0155632 0.0685423 0 0 -0.107543 0 0.000410004 0.179949 0.0204284 0 0 0.00191387 -0.00225276 0 -0.00382558 0.0161879 -0.0159636 0.0195915 0.0364144 0.0176116 0 -0.0021427 -0.101561 -0.0157218 -0.0104332 0.00307561 0 0 0 3.41439 0.184818 -0.0291042 0.0125572 -0.0303794 0.480046 0.000865239 -0.00216595 0.0287515 -0.0527173 0 0 0 0 0 0 0.000282031 0 -0.273574 0 0 0 0 0.0435675 -0.100535 0 0 -0.293423 0 -0.0351251 0 0.0156514 0 0 -0.459425 0 0.3241 0.0364696 -0.0775501 -0.073158 0 0 0.16898 0 0.126252 0 -2.48346 -0.69335 0 0.201302 -0.118837 -0.0105617 0 0.000798989 0 0 -0.021057 0 -0.899619 -0.403437 0 0 -0.0905454 0 0 0.0240714 0.422446 0.0808275 0 -0.458298 0 -0.039885 0.0509083 -0.0358607 0.330991 -0.0418702 -0.402624 0.339504 -0.0598947 -0.664692 -6.66248 -0.00611219 0 0 0 -0.14611 0.115858 0 0 0 0 0.0435743 15.9535 2.28926 -0.745562 0.679279 -0.705319 1.18858 0.138601 -0.11786 0.172405 -0.182756 0 0 0 0 0 0 +328 0 -0.683721 0.062812 -0.0488438 -0.113995 -0.00486001 -0.0113138 -0.483207 -1.0343 -0.356954 1.44826 -0.201195 -0.0243541 0.00849479 -0.187708 0.0626164 -0.411534 -2.17728 0.199596 0.132901 2.29718 0.04475 -0.181675 -0.00961612 0.314269 -0.151249 -0.0992484 0.00600211 0.321174 0.939807 -0.183214 -0.0647182 0.430726 -0.10283 -0.114751 -0.0872274 -0.0186297 -0.140159 1.10263 -0.505247 0.839412 0.0648624 -0.994388 -0.055702 0.690274 0.488292 0.135092 0.542045 0.889099 0.186533 -0.25617 0.474742 0.187579 -0.239959 0.271634 -0.214008 -0.752634 -0.00544679 0.101271 -0.480023 -0.158007 1.2737 -1.38815 0.574548 -0.279533 -0.377153 0.0331216 -0.286686 0.109738 0.118222 -0.460744 0.286772 0.00533337 0.342656 -0.6129 0.0302306 0.867012 -4.06766 -1.87559 0.115431 -1.54539 1.16052 -1.98296 -1.00901 0.857003 -1.69516 1.28447 -0.208747 0.153471 -0.379617 0.272458 -0.688 0 0 0 0 0 -0.0488438 -0.113995 0.000246653 0 0 0 0 0.000320681 0 0.032125 0 0 -0.000187226 0.000437275 0.0599592 0 0.0084399 0.106025 0.234204 0 0 0.187377 1.46059e-05 0 0.00931441 1.18135 0 0 0.0239247 0.371054 0 0.190414 0 0.0241768 0 0 0.00275494 0 0 0.674443 0.00693114 -0.0014077 0 0.00744112 -0.0104518 0 0 0.191952 0 0.0031123 1.15341 -0.0103504 0 0 0.00019437 0.00182832 0 0.00300244 -0.0342194 0.0250967 1.56825 0.0544811 0.0251706 0 0.0152553 -0.128108 0.340454 0.0218221 0.050731 0 0 0 -4.66185 -0.141015 -1.24088 -0.0193326 0.046477 -0.580364 -6.8585e-05 0.000218176 -0.00236009 -0.287268 0 0 0 0 0 0 -0.00486001 0 -0.0113138 0 0 0 0 0.0153 -0.886739 0 0 0.510752 0 0.0747645 0 -0.0187953 0 0 0.581969 0 -0.087506 0.0224287 0.273172 0.0717757 0 0 -0.219145 0 -1.91834 0 1.77215 -0.491295 0 0.146383 0.473972 0.0434876 0 -0.0067259 0 0 -0.099599 0 -0.881404 1.41741 0 0 0.187992 0 0 0.138218 0.528785 -0.143763 0 -1.45187 0 -0.199021 -0.0518642 0.0282074 -0.909313 0.00489134 1.32437 -0.431259 -0.00378471 0.577267 -4.06848 0.145942 0 0 0 -0.281644 -0.19625 0 0 0 0 0.276915 -7.97034 -1.83453 -0.132442 -0.57055 0.43619 -0.557254 -0.195664 0.128962 -0.138424 0.0377159 0 0 0 0 0 0 +329 0 -0.2273 -0.300469 0.00599149 0.0150893 -0.0590706 -0.271173 0.738815 1.26109 0.0294434 -0.603131 -0.0692433 -0.500945 -0.00112476 -0.974201 -0.0283659 -1.38216 -6.04497 -0.126677 -0.0674711 0.117395 -0.020673 0.151233 0.00119584 -0.109947 0.534444 -0.376784 0.0069074 0.518597 1.2481 -0.313857 0.00838182 -0.352662 -0.0658993 0.0157947 0.368423 -0.00339278 0.0196717 -0.481848 -0.162343 -0.573517 -0.00724549 -0.196006 -0.0132893 -1.89563 -0.0464775 -0.725246 0.835693 -0.764654 -0.0340268 -0.783282 -0.202831 -1.7777 0.217141 -0.0149152 0.0235247 1.55064 -0.611809 -0.264865 0.120979 0.0159807 -0.52381 0.666328 -0.800156 -0.0958946 0.15773 -0.567104 -0.310163 -0.024755 -0.0123161 0.0348466 -0.242277 -0.256172 0.135975 1.25101 -0.670343 -1.34635 -1.20757 0.882916 -3.11765 -0.114005 0.514566 -2.47986 0.148706 -0.00238338 0.311198 -2.3498 0.00191801 0.00708482 0.031568 0.0999167 -3.07859 0 0 0 0 0 0.00599149 0.0150893 -0.000220448 0 0 0 0 -6.17647e-05 0 -0.00456191 0 0 0.000338861 0.00102284 -0.00829417 0 -0.00145571 0.00561264 -0.0125658 0 0 0.0301101 4.79894e-05 0 0.0182277 0.0481584 0 0 0.00102185 0.0516519 0 0.0784437 0 0.00490895 0 0 0.0004164 0 0 0.299246 -0.00131744 0.0070499 0 -0.00480816 0.00554024 0 0 0.00436593 0 -0.00047482 0.0583089 0.000999956 0 0 -0.000640921 0.000289448 0 0.00388194 -0.0349321 0.00230647 1.73771 0.0076424 -0.00677659 0 0.00817344 -0.0878666 0.12267 0.0454077 -0.126747 0 0 0 -2.95491 -0.128927 -0.173951 -0.0141962 0.032865 -0.449123 -0.000241322 0.00046204 -0.0068015 -0.00221521 0 0 0 0 0 0 -0.0590706 0 -0.271173 0 0 0 0 0.0146111 -0.691034 0 0 -0.42451 0 -0.0637563 0 -0.0170678 0 0 0.183807 0 0.217152 0.0627504 -0.223809 0.0254201 0 0 -0.242084 0 -2.6055 0 0.122641 -0.330329 0 0.367991 -0.194324 -0.037351 0 0.0121762 0 0 -0.0601164 0 -0.77342 0.54336 0 0 0.0619254 0 0 -0.146641 -0.163551 -0.0706587 0 -0.672377 0 0.477882 -0.0641217 0.0053959 0.706309 0.000969953 -0.305533 -0.586181 0.0487293 -0.0234833 -4.95393 -0.0806293 0 0 0 -0.147498 0.0964684 0 0 0 0 0.220097 -0.205354 0.852105 -0.589398 -0.261035 0.561969 -0.996997 0.0691225 -0.0149164 0.0303249 -0.169289 0 0 0 0 0 0 +330 0 1.11865 0.446508 0.00661211 0.0192926 0.17197 0.0672542 0.216617 -0.393853 -7.72213e-05 -0.457364 -0.059147 -0.732092 -0.00160388 -1.59079 -0.0236849 0.536697 -0.625678 -0.100127 -0.0509002 -0.330915 -0.0277205 -0.472835 0.00117015 -0.124375 -0.245201 0.574566 -0.0275039 -0.245772 0.142527 -0.297673 0.0069558 -0.258604 -1.27787 -0.344801 -0.089079 -0.00855668 -0.0399853 -5.0816 -0.0753921 -0.192136 -0.0106203 -1.0663 -0.012203 -2.74805 -0.0707262 -0.0782472 -0.131228 -0.495797 0.0474531 -0.689754 -0.121022 -2.29437 0.132721 -0.0350233 -0.0441015 -0.106772 -0.644025 -0.0706351 0.209212 0.0218133 -0.233779 0.211904 0.522181 0.677062 0.118138 -1.00745 -0.00441471 -0.0968233 0.000123436 -0.7258 0.00172546 -0.191006 0.148805 2.11431 -0.325039 0.174836 12.2203 1.08104 4.55525 1.14049 -0.554946 5.73251 0.327743 -0.114662 0.407698 0.678856 0.00291869 0.0072394 0.0842862 0.0815277 -0.351558 0 0 0 0 0 0.00661211 0.0192926 -0.001398 0 0 0 0 -0.000190638 0 -0.0151673 0 0 -0.000738039 -0.000780452 -0.0181378 0 -0.00271314 -0.0431398 -0.100646 0 0 0.0200933 -3.65732e-05 0 0.0120133 -1.01887 0 0 -0.00289688 -0.266109 0 0.0284341 0 0.00277857 0 0 -6.15063e-05 0 0 -0.254173 -0.00406571 -0.0158285 0 -0.0298853 0.0246851 0 0 -0.150673 0 -0.00295202 -0.34194 0.0147569 0 0 0.00135217 0.00190917 0 -0.00173404 -0.0112062 -0.0103371 0.608035 -0.0121764 -0.0130729 0 -0.00559473 -0.0085055 -0.12757 0.0392831 -0.0653274 0 0 0 1.98957 0.129088 0.402111 0.00894547 -0.0172466 0.262647 0.000555904 -0.00104823 0.0154756 0.0787284 0 0 0 0 0 0 0.17197 0 0.0672542 0 0 0 0 -0.0156402 -0.343077 0 0 -0.229426 0 -0.0251238 0 -0.0168045 0 0 0.01319 0 -1.13437 0.0156049 -0.0957823 -0.0349444 0 0 -0.17771 0 -3.48207 0 -6.02075 -0.724223 0 -0.222374 -2.38401 -0.0110216 0 0.0198333 0 0 -0.0320698 0 -1.64064 0.0561662 0 0 -0.0615592 0 0 0.295143 0.919205 -0.0284462 0 -0.488595 0 -0.296631 -0.0118321 -0.0341252 -0.469375 0.0805441 0.555279 -0.225978 -0.10122 -1.43329 -8.01885 -0.103953 0 0 0 -0.353575 0.0822993 0 0 0 0 0.101154 33.804 3.27591 1.17705 1.33827 -0.730976 1.47812 0.111444 -0.0864709 0.12152 0.0010988 0 0 0 0 0 0 +331 0 -0.57337 -0.251308 -0.0211497 -0.0393952 -0.153607 -0.225767 0.572044 0.620049 -0.0972012 1.24821 0.0893891 -1.14849 0.00412125 -0.654475 0.0531701 -0.674867 -3.09901 0.28751 0.103341 -1.75375 0.0562284 0.0639451 -0.00417461 0.250631 0.0689092 -0.202122 0.0185293 0.397964 0.0502746 -0.381361 -0.0290155 0.553574 0.337996 0.32076 0.154419 0.0163401 -0.130123 2.14429 0.193092 -1.02984 0.0266207 0.446914 0.0331792 -3.17987 0.171776 -0.623898 0.402849 0.901133 -0.108771 0.783885 0.369826 -3.83862 -0.268182 0.0869981 -0.00800899 1.53135 0.452671 0.365615 -0.398856 -0.057832 1.11043 0.0237508 0.914626 0.439213 -0.303995 -0.40222 0.0629078 -0.0238544 0.0407275 -0.370272 0.198822 0.687616 -0.11697 -0.103238 -0.661873 -1.35968 -7.74264 -2.06755 -3.17575 -1.03458 -0.0695479 -2.25626 -0.480713 0.312096 -1.37898 -0.695337 -0.00708876 -0.0177887 -0.21289 -0.242181 -0.124008 0 0 0 0 0 -0.0211497 -0.0393952 0.000814789 0 0 0 0 0.000219828 0 0.0471652 0 0 -0.00117055 -0.00378265 0.0569609 0 0.00836699 0.0341378 0.319629 0 0 -0.00427083 -0.000177441 0 -0.0218613 0.0449033 0 0 -0.00393657 0.10981 0 -0.0224205 0 0.000297273 0 0 -0.000441388 0 0 0.0116114 0.00468858 -0.0245674 0 0.0176248 0.0350819 0 0 0.0459087 0 0.00175617 0.997427 0.0107706 0 0 0.0022011 -0.00107563 0 -0.00394654 -0.0551258 0.00734654 -0.808747 0.0573079 0.0303522 0 0.00739269 -0.119767 -0.233083 0.00536752 0.181864 0 0 0 1.02244 0.141967 -1.02597 0.00656838 -0.013593 0.190963 0.00081873 -0.00181575 0.0254196 -0.308435 0 0 0 0 0 0 -0.153607 0 -0.225767 0 0 0 0 -0.0779612 0.592235 0 0 0.422374 0 0.0612984 0 0.0458682 0 0 -0.290327 0 0.171707 0.0218202 0.220524 -0.0482745 0 0 0.461372 0 -0.259475 0 1.11295 -0.419843 0 0.139471 0.242069 0.0315736 0 -0.0128994 0 0 0.0434738 0 -0.0241468 -0.744936 0 0 -0.100117 0 0 -0.230794 2.55867 -0.0476391 0 -0.516647 0 -0.112632 0.0119587 0.0703354 -0.855059 0.0365998 1.25986 0.279052 -0.0980328 -0.0939387 0.629357 0.0930966 0 0 0 0.103265 -0.129891 0 0 0 0 -0.167441 -6.0649 -1.5107 -0.420765 -0.338188 0.26053 -0.440444 -0.172552 0.108561 -0.118244 -0.0107703 0 0 0 0 0 0 +332 0 0 0 0 0 -0.0633584 0.279315 -0.768156 -1.2083 0 0 -0.167528 0.795295 0 0.947971 -0.0297869 0 0 0 0.00873516 3.8354 0 0 0 0 -0.431444 0 0 -0.856072 2.54935 0.542946 0 -0.237889 0 0 -0.304342 0.0037287 0 0 -0.683524 1.46389 0 0 -0.0291994 1.84129 0 0.648565 -0.404389 -0.333005 0.0715944 1.16583 -0.00326475 0 0.0680438 -0.0437402 0.251795 0.385124 0.798575 1.30334 0 0 -0.562697 -2.17831 0 0.236571 -0.208659 0.994218 0 0 0 0 -0.210289 0.154728 0 0.505414 -0.498884 0 0 0 0.0788036 0 0.665575 -3.54461 0 0.471425 -0.92239 1.11384 0 0.245209 -0.584709 1.45441 -8.63621 0 0 0 0.227797 0.0236284 0 0 0 0.0258002 -0.00903657 0 0.00311169 0 -2.88567e-05 0.00978395 0 0 0 0 -0.0191792 0 0.00752244 0 -0.0530502 0 0.249655 0.102382 0 -7.11447e-05 0 0 -0.040192 -0.000298493 0.013696 0 -0.000527048 0 -0.00029179 0.0226152 -0.00310124 -0.0038672 0.000543685 0 -2.8071e-06 0 0 0 -2.30061e-05 0 0 0.000796698 -0.00036683 0.0337841 -0.0031972 0 0 -0.00473661 0 0.000400245 0 0 0.00975081 -0.00640232 0.0185376 -0.00763057 0 0 -0.0308287 -0.00352876 0.019005 0.105834 0.20077 0 -0.087888 -0.000212823 -0.00315934 0 0 0 0.378038 0 0.00668454 0.111937 0 -0.000930406 0.0139909 0.154363 0 0.000413203 -0.00205859 0.00433986 0.0462578 0 -0.0633584 0.227797 0.279315 0.0236284 -0.887866 -0.0130277 0.0458131 -0.184246 0.146781 -0.0117409 -0.105595 -0.0818389 -0.00130199 0.00352186 0.00900184 0.0124308 -0.0403814 -0.104541 -0.858976 0.773209 -0.0661721 -0.0199498 0.066075 -0.165023 -0.258823 0.160615 0.165751 0.055011 -7.91763 -0.297926 -0.917914 0.204118 0.00133375 0.301336 -0.364918 0.00988909 -0.00450497 -0.0312735 -0.0654952 1.46116 0.0111115 0.00531672 -1.76999 -1.50684 -0.0132228 -0.023447 -0.283286 0.250021 -0.0302357 0.610891 -1.24062 0.0941082 0.0928174 2.56971 -0.00824923 2.23832 -0.0340103 0.13688 -0.124617 -0.0335692 0.429271 -0.506476 0.107052 0.0626622 -1.90277 0.113543 0.574499 -0.0285302 0.0911974 0.476769 -0.0434332 0.0263538 0.00926801 -0.0334855 0.064923 0.0135327 2.78456 0.194245 -1.59353 0.279163 0.36656 -3.799 0.0187371 0.0953037 -0.293258 -0.815651 0.0274694 0.085549 -0.246431 0.401364 -1.77996 0 +333 0 0 0 0 0 0.153432 0.304525 0.0747194 -0.362386 0 0 0.398226 1.00782 0 2.51266 0.0667317 0 0 0 0.174578 0.957202 0 0 0 0 -0.309943 0 0 -0.350373 -0.104058 0.741601 0 0.223464 0 0 -0.140576 0.0605102 0 0 1.0616 0.87671 0 0 0.271504 3.79517 0 0.901041 -0.342941 0.0570514 -0.42994 3.12492 -0.337071 0 -0.108569 0.351435 -0.0908011 1.50209 0.147049 0.122061 0 0 0.618851 -1.56631 0 -0.292782 0.0906834 -0.0562401 0 0 0 0 0.357377 0.615053 0 -1.11988 0.670389 0 0 0 0.916031 0 -0.664993 -0.630542 0 -0.653178 0.24292 0.455865 0 -0.669915 -0.00140514 -0.518725 -1.29579 0 0 0 -0.0992458 -0.0228346 0 0 0 -0.0344149 0.00505476 0 -0.00452678 0 -0.000113924 -0.030475 0 0 0 0 -0.129108 0 -0.0187197 0 -0.234204 0 -0.27861 -0.33566 0 0.000560511 0 0 0.162931 -0.000358857 -0.023129 0 6.01935e-05 0 0.000372244 -0.0659856 0.013524 -0.00595063 -0.00132352 0 -6.41215e-06 0 0 0 4.45745e-06 0 0 0.000916362 0.000591693 0.0613024 -0.00239936 0 0 0.00664765 0 -0.00064559 0 0 0.00418998 0.00267242 -0.130124 0.00321492 0 0 -0.0204561 0.012035 0.0015689 0.0277485 -0.116285 0 -0.0715505 -0.000237203 -0.12342 0 0 0 0.275391 0 0.0170947 -0.239394 0 0.000137233 0.00085051 0.0317529 0 0.000390859 -0.0029925 0.010305 -0.103456 0 0.153432 -0.0992458 0.304525 -0.0228346 0.169473 0.0354372 -0.188512 -0.176339 -0.233654 0.0173242 -0.0286214 -0.370691 0.00201322 -0.0272213 -0.0228102 0.00760668 -0.0086358 0.119164 1.20199 -0.171723 0.692705 -0.0268887 -0.255523 0.216635 -0.232856 -0.0621362 0.0195463 -0.00146938 12.4028 0.123164 2.0229 2.2909 -0.002664 -0.330712 1.1943 -0.0177201 0.00217723 -0.0173284 0.0253523 -0.386559 -0.0102693 -0.00692011 5.56941 2.20692 -0.000280583 0.00356413 0.414517 -0.0209263 -0.0714907 0.0318423 1.16632 0.429766 -0.0773762 2.89284 0.0333873 -1.19583 0.0731401 -0.226381 0.222054 -0.197466 0.840259 -0.0975919 -0.141811 -0.0247591 13.8424 -0.0560056 0.0871761 0.0605909 -0.0870757 0.0787893 0.0301174 -0.0119209 -0.0348792 0.000566473 -0.0361791 -0.0319537 -6.13664 0.407747 1.06325 -0.446516 0.112207 0.151741 0.0395995 -0.118632 0.143905 0.18498 -0.0313116 -0.0781919 0.146406 -0.116308 0.13257 0 +334 0 0 0 0 0 0.13209 -0.126219 0.00708796 -0.115533 0 0 0.101279 -1.00796 0 -1.29879 -0.0201529 0 0 0 -0.278633 -1.65953 0 0 0 0 0.0354793 0 0 -0.0465969 -6.27474 -0.375005 0 -0.151065 0 0 0.0492529 0.0276706 0 0 1.50864 -1.32956 0 0 0.426498 -3.84123 0 -0.639 -1.10259 -0.963458 -0.656365 -0.866293 -0.846097 0 0.295916 -0.206653 -0.187872 -0.767579 0.00431021 -0.613959 0 0 0.339608 2.78348 0 -0.567877 -0.246098 0.637607 0 0 0 0 -0.131646 0.576207 0 -0.953959 0.984985 0 0 0 0.142823 0 -2.12207 6.93271 0 -1.03087 3.09233 -0.689372 0 -1.47119 4.40511 -6.38898 18.0169 0 0 0 -0.0966322 -0.0213803 0 0 0 0.00225026 -0.0185671 0 -0.00166144 0 7.49385e-05 -0.0303349 0 0 0 0 -0.194736 0 -0.0205031 0 -0.288661 0 0.155602 0.208983 0 -0.000935182 0 0 -0.100712 0.000327904 0.00675069 0 -0.000637505 0 -0.000994838 0.128819 -0.0081102 0.00469539 0.0110774 0 4.85598e-06 0 0 0 -3.14957e-05 0 0 -0.000860956 -0.00148466 -0.106945 -0.00215187 0 0 -0.0152193 0 0.00161989 0 0 0.00100001 -0.00762207 -0.133819 -0.00954895 0 0 0.115175 -0.0239498 0.0156967 -0.0878138 0.0585393 0 -0.0766472 -0.000125163 -0.0921757 0 0 0 0.768973 0 -0.0104556 0.334919 0 0.000590591 0.0118836 0.192902 0 -0.000417528 0.00543433 -0.0138629 0.19751 0 0.13209 -0.0966322 -0.126219 -0.0213803 0.232609 0.107388 -0.14692 0.0187805 0.290146 0.0154861 -0.015596 0.200654 0.00168134 0.0104739 -0.0174019 0.00682301 0.0016503 0.131777 -0.92038 -0.943512 -0.127099 0.00662227 0.122732 -0.0543644 0.0543444 -0.273653 0.0869145 -0.0150305 -1.24784 0.374167 -0.145337 -0.557959 -0.00203377 -0.247423 -0.146418 0.00732282 0.00766342 0.0246045 0.0583274 -1.93637 0.0143156 -0.0404271 -0.993227 -2.93839 -0.00245878 0.0489352 -0.279505 -0.110321 -0.317884 -0.390225 0.0584688 -0.351878 0.0817464 -2.03587 0.0200233 0.658293 -0.0903812 0.0480624 -0.0180674 0.617954 0.651059 -0.20268 -0.238947 0.673136 -3.39799 -0.0168636 0.502453 0.0162169 0.0567909 -0.0240304 0.0049387 -0.0734496 -0.0274196 0.0449865 0.0469421 0.0348327 0.440893 -0.293248 0.690629 -0.180784 -0.810225 3.66973 -0.0364274 -0.229792 0.95203 -0.743848 -0.0346258 -0.13284 0.663246 -1.07658 2.46523 0 +335 0 0.441301 0.134612 0.0206984 0.293575 -0.475567 -0.140214 0.295324 1.48928 0.0887852 -0.591897 0.120108 -0.367158 -0.0003222 -0.107911 0.00103381 -0.629535 -0.455643 -0.0962271 -0.00649897 -0.942351 0.0144347 -0.0701127 0.000343226 0.131819 0.288061 -0.317601 -0.0331562 0.40887 0.256654 -0.376435 0.00540584 -0.000615166 -0.635277 -0.194885 0.148052 0.00691374 -0.16063 -3.44228 0.183064 -0.779742 -0.00473398 -0.769411 0.0108625 0.593132 -0.0619595 -0.640416 0.369829 -0.141237 0.00717855 -1.4706 -0.0432802 0.124407 -0.0269331 0.0206948 -0.131126 -0.193074 0.1469 0.0434735 -0.0526285 -0.00231853 0.60444 0.773309 -1.06277 -0.12451 0.672163 -0.304295 -0.272984 -0.262605 -0.00471763 -0.208769 -0.173458 -0.0335028 0.291398 0.166153 0.190413 1.67282 6.26967 1.09782 -0.592025 0.974106 -1.41732 3.96671 -0.30639 -0.134953 0.675694 -2.02071 0.00750122 -0.0179862 0.0311912 -0.109458 -0.387116 0 0 0 0 0 0.0206984 0.293575 -0.000594957 0 0 0 0 -8.56003e-05 0 0.00658994 0 0 1.28472e-05 -0.000317651 -0.00122817 0 0.000174356 0.00384362 0.0111239 0 0 0.152109 -1.3435e-05 0 -0.0237713 0.159705 0 0 0.0156818 0.0359152 0 -0.169454 0 0.0130405 0 0 0.0012766 0 0 -0.522276 -0.00184588 -0.00111085 0 -0.0136194 0.00137051 0 0 -0.0130962 0 -0.00181064 -0.14209 0.00559865 0 0 0.000326131 0.000371166 0 -0.0048498 -0.0314051 -0.00501404 1.30276 -0.018922 0.0260733 0 0.0102131 -0.0785407 0.0209842 0.0621247 1.49985e-05 0 0 0 3.73874 0.127738 0.188676 0.0162631 -0.0391998 0.565376 0.000137014 -0.000378689 0.00461516 -0.00578513 0 0 0 0 0 0 -0.475567 0 -0.140214 0 0 0 0 0.342198 -0.435646 0 0 -0.818593 0 -0.0779266 0 -0.0360051 0 0 1.15008 0 0.112686 0.112896 -0.298581 0.171136 0 0 -0.367543 0 7.87477 0 0.0393859 0.0463521 0 1.20808 0.0129453 -0.025858 0 0.0350324 0 0 -0.0433482 0 1.54153 2.55934 0 0 0.373333 0 0 -0.349778 3.5162 -0.349075 0 -0.781445 0 -0.238042 -0.119582 0.21478 0.279443 0.178422 0.337177 0.322598 -0.0796804 1.07652 8.76832 -0.09334 0 0 0 0.0691351 0.113834 0 0 0 0 0.00261491 -0.619797 2.37826 -4.31491 0.334175 -0.365507 0.111902 0.282166 -0.268142 0.372202 -0.623497 0 0 0 0 0 0 +336 0 0.178659 -0.0970152 -0.00706106 -0.0271158 -0.0376025 -0.191799 0.0892059 0.392892 -0.02943 0.388471 -0.0541569 -0.314251 0.000167981 -0.821673 -0.0148915 -0.22496 -0.887364 0.0558906 -0.0245702 0.0834571 0.01233 0.186989 -0.000125408 0.155827 0.213373 -0.104621 0.028856 0.264105 -0.193731 -0.139847 -0.00199501 -0.225469 0.319302 0.0522648 0.193496 -0.0029033 0.234162 0.575937 -0.0659883 -0.457695 0.00240509 0.0895 -0.00472752 -1.40953 0.0268335 -0.520144 0.144849 -0.375091 0.00226586 -1.12382 -0.0797936 -1.14226 0.0270302 0.0173564 -0.0393486 -1.28227 -0.0962532 -0.00676165 -0.163144 -0.00105846 0.299006 1.35659 0.578295 0.0618529 0.067551 -0.0557117 0.555773 0.276947 -0.00365093 -0.176614 0.278328 -0.0431466 -0.320007 0.386704 -0.216032 -0.492651 -0.00380809 -0.807406 -0.476046 -0.817826 0.394263 -0.279852 -0.50918 0.0468407 0.175563 -1.58106 -0.00324863 0.00698479 -0.00850949 0.0281763 0.292208 0 0 0 0 0 -0.00706106 -0.0271158 0.000541143 0 0 0 0 3.35347e-05 0 0.0125888 0 0 -0.000162484 -0.000311544 0.00563911 0 0.000542881 -0.00654311 0.104957 0 0 -0.162915 -1.33047e-05 0 -0.0121353 -0.686789 0 0 -0.0203764 -0.0909039 0 -0.123149 0 -0.0106775 0 0 -0.00136612 0 0 -0.410868 0.000700484 -0.00466115 0 0.0109883 0.0279534 0 0 -0.0984801 0 0.000830192 -0.0102612 0.000341735 0 0 0.000704323 -0.000971862 0 -0.00075135 -0.0307636 -0.0043816 -0.435471 0.0236596 0.0123455 0 0.0026823 -0.00529009 -0.0812556 -0.0148334 -0.0340216 0 0 0 0.893201 0.0279274 -0.179442 0.000163369 -0.000153781 0.076611 0.000254851 -0.000666562 0.00851843 -0.0514129 0 0 0 0 0 0 -0.0376025 0 -0.191799 0 0 0 0 0.00673127 -0.171026 0 0 0.167249 0 0.00986187 0 0.00915207 0 0 -1.04603 0 -0.0261046 0.0238008 0.0882829 -0.117408 0 0 0.0738279 0 -8.3889 0 -1.88706 -0.862164 0 0.150991 -0.564978 0.00652141 0 0.0214972 0 0 -0.0109548 0 -2.71917 -2.22791 0 0 -0.275075 0 0 0.216742 -2.66264 -0.107554 0 -1.18361 0 0.0955556 0.0116263 -0.00884094 -0.0277526 -0.113172 -1.0484 -0.151768 -0.0167383 -0.623402 -10.1006 0.0557638 0 0 0 -0.145882 -0.0220143 0 0 0 0 -0.109316 5.64798 0.285078 -0.88418 0.538641 -0.44788 0.492144 -0.0665803 0.0225578 0.00934638 -0.234239 0 0 0 0 0 0 +337 0 0.28665 -0.319616 0.000536598 -0.029331 0.0773652 -0.115409 -0.224565 -1.71611 0.0798096 0.665515 0.0653787 0.0892359 -0.000227382 0.669321 0.0135108 -1.37356 -1.98753 0.0635852 0.0212384 -1.6773 0.00550842 0.406444 0.00037717 0.121052 0.119228 -0.722052 -0.0216977 0.384846 0.887199 0.0954909 0.00546781 0.283947 0.495284 0.0124759 0.281856 0.00722942 -0.130082 0.543679 0.0653806 -0.907254 -0.00310854 0.306283 0.00796136 0.952062 -0.0388828 -0.562096 0.592804 0.466454 -0.0459972 1.25983 -0.184285 -1.27644 -0.00552125 -0.0030737 0.061759 0.0105306 -0.35379 -0.240214 -0.0838003 0.00928499 0.686484 1.50069 -0.985766 -0.941599 -0.322269 0.373152 -0.0874521 -0.184621 -0.00641795 -0.644193 -0.150137 0.108386 0.13012 0.558172 -0.703141 -0.442554 -0.0484892 -1.37251 3.78652 0.9795 -0.288863 -0.442443 -0.527805 0.61609 -1.11915 3.16701 0.0047074 -0.00829078 -0.0243812 0.0495618 -1.33818 0 0 0 0 0 0.000536598 -0.029331 -0.000503604 0 0 0 0 -8.0313e-05 0 -0.0071522 0 0 1.736e-05 -0.000320874 -0.00398723 0 -0.000540938 0.0041575 -0.054175 0 0 0.114444 -1.35382e-05 0 -0.0335698 0.120621 0 0 0.00811976 0.0369862 0 -0.231816 0 0.00968124 0 0 0.000608827 0 0 -0.67318 -0.00173472 -0.00107027 0 -0.0117725 -0.000716672 0 0 0.060411 0 -0.00167664 -0.206339 0.00662123 0 0 0.000372546 0.000226742 0 -0.00531309 -0.0377526 -0.00897195 1.03671 -0.0228525 -0.00357384 0 0.00784157 -0.0340842 -0.0173888 0.0504857 -0.0136025 0 0 0 4.69902 0.150277 0.428365 0.0193327 -0.0468227 0.56346 0.000145615 -0.000404069 0.00490767 0.0741087 0 0 0 0 0 0 0.0773652 0 -0.115409 0 0 0 0 -0.313135 0.34801 0 0 0.536757 0 0.0613286 0 0.00863533 0 0 0.0849337 0 1.10807 -0.114382 0.154764 -0.0340753 0 0 0.111104 0 1.31394 0 2.50139 0.317422 0 -1.07328 1.73975 0.0136369 0 -0.0187449 0 0 0.032384 0 0.607527 0.293473 0 0 -0.0735983 0 0 0.426163 -0.33343 0.264665 0 2.47482 0 0.55747 -0.0317547 -0.0522949 -0.236276 -0.0117585 0.77974 -0.384558 0.0295212 -0.65738 5.9167 0.0395785 0 0 0 -0.043818 -0.0528118 0 0 0 0 -0.0423654 -8.78257 -2.08387 3.4732 -0.555662 0.571081 -0.625762 -0.135321 0.181541 -0.294001 0.61273 0 0 0 0 0 0 +338 0 0.314193 0.164067 0.031988 0.219386 -0.457652 -0.13367 0.444843 1.78998 0.211135 -0.833207 0.0844336 -0.597163 -0.00220333 -0.474442 -0.000754484 -0.176093 -1.5537 -0.0722304 -0.0516562 -1.11384 0.0093306 -0.174109 0.00370295 -0.0712836 0.172065 0.0704665 0.0157165 0.269978 0.25986 -0.362732 0.02807 0.0895573 -0.714436 0.00106736 0.0471644 0.0141508 0.0749819 -3.66412 0.123392 -0.687831 -0.0131533 -0.0495548 0.025577 -1.14431 -0.0604998 -0.47395 0.244729 -0.153397 0.0293156 0.0115019 0.100876 2.24217 0.267325 0.0465593 -0.131965 0.549205 0.209867 -0.851373 0.0110318 5.58743e-05 1.19159 1.55591 0.113504 0.325935 -0.0197468 -0.91024 -0.304877 0.12562 -0.0443737 -0.113039 0.220626 -0.0403446 0.184054 -0.583344 0.105318 1.18201 6.23809 1.70383 -1.21846 0.84408 -1.2901 4.38175 0.190619 -0.33835 0.881508 -2.76809 0.0224392 -0.0494642 0.0461565 -0.0782527 -0.810486 0 0 0 0 0 0.031988 0.219386 -0.000167694 0 0 0 0 -1.53118e-06 0 -0.00068704 0 0 -5.8929e-07 -1.16422e-07 -0.00366139 0 0.000143526 -0.0118141 -0.0302042 0 0 0.056544 -5.45945e-09 0 0.0310581 0.143292 0 0 0.00585424 0.00867844 0 0.0577134 0 0.00623697 0 0 0.000844369 0 0 -0.00379833 -3.26522e-05 -1.25665e-05 0 -0.00357606 -0.00279373 0 0 -0.0269943 0 -0.000312073 0.066465 0.000761843 0 0 1.09665e-06 0.00026375 0 -0.000581266 0.0325512 -5.61635e-05 0.154772 -0.00398143 0.013545 0 0.000760563 -0.0265239 0.0822669 0.00947372 0.0480921 0 0 0 0.272132 0.0150603 0.0880515 0.00212891 -0.00519482 0.138662 4.144e-07 -1.01119e-06 1.37247e-05 0.00607647 0 0 0 0 0 0 -0.457652 0 -0.13367 0 0 0 0 0.0778884 0.194611 0 0 -0.527444 0 -0.0493198 0 0.00350256 0 0 0.0715093 0 -0.220017 0.0534444 -0.104816 0.0491442 0 0 0.0536266 0 3.12523 0 -1.41991 -0.229733 0 0.829959 -0.654814 -0.00757499 0 -0.0185237 0 0 0.0107549 0 0.371642 0.193799 0 0 0.087751 0 0 0.445845 4.47773 0.138634 0 0.667029 0 -0.600049 0.118313 -0.143615 0.0911277 0.0246128 1.07377 0.665193 -0.0127021 0.801985 6.82093 0.0636079 0 0 0 -0.0828221 0.038114 0 0 0 0 0.117883 7.22159 1.96945 -3.14847 0.279232 -0.320446 0.538819 0.142025 -0.123201 0.20794 -0.450642 0 0 0 0 0 0 +339 0 0.2749 0.124106 -0.0315607 -0.0593694 0.056438 -0.0466001 -0.171517 -0.169116 -0.244729 0.870699 -0.235018 -0.249965 0.00563542 -1.01922 0.0101984 0.321454 -0.218057 0.133935 0.0581231 0.0950285 0.0578289 -0.047454 -0.00723419 0.369749 -0.0183373 0.238414 0.0379076 0.210439 0.577852 -0.343611 -0.0460555 0.0876419 -0.146388 -0.109575 -0.0478156 -0.0367995 0.116396 -0.870636 -0.458983 -0.200978 0.0362545 -0.677276 -0.0789832 -0.638128 0.196484 -0.170752 0.346471 0.254834 0.209954 -0.223848 0.348852 -0.765334 -0.111976 0.0711519 -0.158753 0.167604 -0.402261 -0.095973 -0.430917 -0.0794792 0.103199 1.78049 1.44133 0.395803 -0.0905271 0.252648 0.895968 0.257602 0.0842472 -0.595029 0.123255 -0.175704 0.0257425 1.64316 0.0691262 -0.691175 4.17338 -0.994019 0.661321 -0.330817 -0.177202 1.79512 -1.02763 0.50669 -0.53338 0.318664 -0.0728755 0.171446 -0.413572 0.969655 -1.80228 0 0 0 0 0 -0.0315607 -0.0593694 1.19925e-05 0 0 0 0 1.09208e-07 0 0.00326923 0 0 -9.95686e-06 -1.25779e-06 0.00903155 0 -0.000133482 0.0286838 0.0701829 0 0 -0.2495 -5.89825e-08 0 -0.0891742 -0.777354 0 0 -0.0351721 -0.0127201 0 -0.31671 0 -0.0345661 0 0 -0.00497029 0 0 -0.8897 2.32885e-06 -0.000212328 0 0.000255737 0.000470149 0 0 -0.0014855 0 2.23175e-05 -0.214072 -4.26208e-05 0 0 1.85294e-05 -1.88618e-05 0 9.64849e-06 -0.0584551 -4.89126e-05 -0.855184 0.000710236 0.0269945 0 -2.95829e-05 -0.0245937 -0.297238 -0.00054929 0.0644836 0 0 0 1.87797 0.000386512 -0.0194337 -5.90619e-05 0.000144118 0.174328 7.00185e-06 -1.70854e-05 0.000231898 -0.0168727 0 0 0 0 0 0 0.056438 0 -0.0466001 0 0 0 0 -0.207458 -0.841469 0 0 0.414815 0 0.0352967 0 -0.0362349 0 0 -0.130968 0 -0.503893 -0.0667216 0.199733 0.00286974 0 0 -0.367028 0 -9.09721 0 -3.30668 -1.08758 0 -0.444995 -1.33259 0.017468 0 -0.0258343 0 0 -0.0785014 0 -3.29436 -0.693204 0 0 -0.068797 0 0 -0.142758 -1.87499 -0.121937 0 -2.21452 0 -0.204814 -0.0879779 0.107429 0.116678 -0.17135 -1.02018 0.0277019 0.113337 0.0416513 -6.64405 0.118426 0 0 0 -0.169009 -0.079664 0 0 0 0 0.0199563 13.6594 -0.00666913 0.577477 0.541566 -0.533977 0.949039 -0.123009 0.0814888 -0.0812987 0.0798748 0 0 0 0 0 0 +340 0 -0.241961 0.222107 -0.0304733 -0.165169 0.256633 0.331208 -1.07403 -2.77382 -0.261821 1.2277 0.16367 -0.57314 0.00197131 -0.808529 0.022357 0.0904394 -1.46176 0.246192 0.0982487 -1.56225 0.0172224 -0.460014 -0.00346115 0.245129 -1.0497 0.245084 -0.00183007 -0.747045 -1.55948 -0.200046 -0.0292433 0.241289 -0.486697 0.218002 -0.656221 0.00870417 -0.174993 0.00326719 0.109793 0.234909 0.012006 -0.199329 -0.00232101 -1.37569 0.060931 0.58093 -1.16099 0.904027 -0.0385925 -0.228912 0.222529 0.858808 -0.117684 0.0322655 -0.180906 0.73765 -0.176378 0.152159 -0.243673 0.000841763 0.782975 -0.190463 0.001794 1.3614 0.109749 0.706955 -0.520797 -0.198912 0.0381438 -0.645018 -0.0991223 0.0706825 0.174202 1.50777 1.13273 0.33202 -1.43593 -1.62632 2.50264 -0.150422 -0.00576333 1.01904 -0.630129 0.747083 -1.46249 3.75617 -0.0225992 0.00640989 0.194184 -0.856396 4.86391 0 0 0 0 0 -0.0304733 -0.165169 -0.000227183 0 0 0 0 -2.07438e-06 0 -0.00225857 0 0 -1.37384e-06 -2.30594e-07 0.000500543 0 -0.00056932 0.0419664 -0.000186393 0 0 0.0301042 -1.08134e-08 0 -0.0380116 0.592369 0 0 0.00686545 0.18214 0 -0.145603 0 -0.00495348 0 0 -0.000304095 0 0 -0.203299 -4.42358e-05 -2.92969e-05 0 -0.00484464 -0.00393929 0 0 0.098229 0 -0.000422779 -0.247891 0.00103353 0 0 2.55666e-06 0.000357314 0 -0.000811536 -0.0227529 -0.000184774 -0.477292 -0.0055868 -0.0132887 0 0.00103939 0.00949405 -0.182329 0.0128017 -0.0480876 0 0 0 1.05563 0.0213935 0.0144398 0.00301803 -0.00736437 0.00610047 9.66109e-07 -2.35743e-06 3.1997e-05 -0.00224138 0 0 0 0 0 0 0.256633 0 0.331208 0 0 0 0 0.0528167 -0.779494 0 0 0.315225 0 0.0443203 0 -0.0100249 0 0 -0.0987382 0 -0.717203 -0.114518 -0.0539172 -0.0109615 0 0 -0.103295 0 -5.0016 0 -1.27362 -0.02899 0 -0.728458 -0.891352 -0.0005667 0 -0.0109462 0 0 -0.074096 0 -0.766715 0.0950382 0 0 0.0207033 0 0 -0.0696042 0.832915 0.0771654 0 -0.67917 0 -0.163483 -0.0489169 0.0172399 -0.413536 -0.0328752 0.384032 0.0829876 -0.0251356 -0.0109164 0.167723 0.0919712 0 0 0 -0.153185 -0.0566467 0 0 0 0 0.116836 3.75097 -1.34777 2.38795 -0.0575765 -0.0323872 0.458975 -0.128938 0.129305 -0.183135 0.444907 0 0 0 0 0 0 +341 0 0 0 0 0 0.107418 -0.286917 0.722713 0.854817 0 0 0.266819 -0.639807 0 -0.495804 0.0447201 0 0 0 0.0706094 4.23644 0 0 0 0 0.44302 0 0 0.58299 -1.49734 -0.532318 0 0.032519 0 0 0.358782 0.0604417 0 0 0.921352 0.0508222 0 0 0.247599 0.603531 0 -0.940697 0.248708 0.192159 -0.549128 -0.498327 -0.196596 0 -0.10146 0.0900667 -0.419561 0.0984327 -0.0500464 -0.478419 0 0 -0.623138 -2.36597 0 -0.531223 -0.338329 -0.414202 0 0 0 0 -0.0150242 0.371963 0 -1.99261 0.40215 0 0 0 -1.69194 0 -0.976001 0.984453 0 -0.522811 0.872627 -2.2746 0 -0.813562 1.70888 -3.29053 5.78612 0 0 0 0.00490001 -0.031961 0 0 0 -0.0354341 -0.0345323 0 -0.00544892 0 -0.0053383 -0.028714 0 0 0 0 0.0238965 0 -0.00960532 0 0.00753418 0 -0.158692 0.239288 0 0.00148544 0 0 0.21462 -0.00271385 0.0361151 0 0.00147341 0 -0.00261958 0.175844 0.0201705 -0.0419432 0.0287822 0 -0.00029904 0 0 0 4.96609e-05 0 0 0.00249338 0.000201883 0.262487 0.0123518 0 0 0.0305612 0 0.0094622 0 0 -0.0048694 0.0164554 -0.345879 0.0298928 0 0 0.0597311 -0.0179535 0.0548786 0.014445 -0.0659605 0 0.139015 0.010726 -0.036841 0 0 0 0.11571 0 0.101486 -0.46262 0 0.00536115 -0.0138099 -0.0758447 0 0.00230249 -0.012181 0.0219535 -0.0883951 0 0.107418 0.00490001 -0.286917 -0.031961 0.0387225 0.162697 -0.318367 0.274053 -0.156242 0.0360997 -0.0435047 0.0509694 0.00629477 0.0482414 -0.0549938 -0.0156631 0.0292991 0.128872 0.713904 0.720777 -0.022479 0.0366679 -0.0409161 0.0388434 0.127687 -0.227838 -0.146319 0.0460842 0.482817 0.312186 -0.490129 -1.18964 -0.00866672 -0.0281631 0.101366 0.00703576 0.00930483 0.0781257 0.0579307 -1.11679 -0.0129284 -0.049714 -0.895819 1.33862 -0.00354729 0.041506 0.0662608 0.203233 0.00647048 1.79026 -1.12136 -0.345207 -0.0761343 -0.418965 0.109214 -0.464613 -0.226933 -0.0133455 -0.124881 0.278545 -0.31565 -0.681229 -0.289766 -0.742327 -1.74545 -0.203929 0.881535 -0.00250574 0.256713 -0.542 -0.110211 -0.10561 -0.0785603 -0.0311463 0.00607162 0.110335 2.77814 0.175329 0.719564 -0.197349 -1.22073 4.38252 -0.10154 -0.36214 1.10906 -0.0010782 -0.0882854 -0.229429 0.682115 -0.676175 1.19224 0 +342 0 0 0 0 0 -0.729771 -0.257218 0.740975 2.08941 0 0 -0.234201 -0.314572 0 -0.932389 -0.178741 0 0 0 -0.10177 -1.18314 0 0 0 0 0.328662 0 0 0.351016 2.025 -0.306344 0 -0.748972 0 0 0.136795 -0.0588065 0 0 0.260113 -0.23546 0 0 0.0322617 -1.05061 0 -0.309509 0.764669 -0.471481 -0.0138816 -1.17422 -0.0145156 0 0.040052 -0.35608 0.742304 0.176252 0.0304511 0.557214 0 0 0.564451 2.56451 0 0.578547 0.216046 -0.107167 0 0 0 0 0.337354 -0.388228 0 1.40852 -1.35033 0 0 0 -4.24128 0 -1.39643 -2.48734 0 -0.629863 -0.363437 -4.44451 0 -0.285757 -1.07516 1.35636 -8.13355 0 0 0 -0.0743961 -0.0138841 0 0 0 -0.0257457 0.0481625 0 -0.00300995 0 0.00187488 0.0184777 0 0 0 0 0.0441931 0 0.00234644 0 0.250831 0 -0.19979 0.182734 0 0.00134808 0 0 0.0688005 0.00180481 0.0224619 0 0.00721142 0 0.00249818 0.0827579 0.0106369 0.03145 0.00969546 0 9.99081e-05 0 0 0 0.000375671 0 0 -0.00312204 0.00284227 0.416843 -0.00697978 0 0 -0.00107054 0 -0.00507342 0 0 0.0117118 0.0440077 -0.145072 -0.0190593 0 0 0.0782022 0.0125255 -0.012289 0.0102236 -0.0597388 0 -0.0579426 0.0169475 -0.208082 0 0 0 -1.07245 0 -0.110906 -0.30944 0 -0.00987113 -0.0176964 -0.0785015 0 -0.00143071 -0.0039731 -0.000271376 -0.0327162 0 -0.729771 -0.0743961 -0.257218 -0.0138841 -0.542986 -0.0618775 -0.114142 -0.231961 -1.1851 0.0184047 -0.0312537 -0.0201299 0.00264475 -0.00500961 -0.0210489 -0.0704739 -0.0232298 0.118761 0.351026 0.425149 -0.389348 0.0428301 0.138686 0.0541993 -0.159241 0.0544749 -0.47937 0.0103832 -0.772131 -0.0808708 -3.05092 -0.37651 -0.00348488 0.427085 -1.43229 0.0158788 -0.00308157 -0.0382201 -0.0159153 0.488596 -0.172276 0.00714711 -0.627889 0.989459 -0.00494488 -0.019301 0.121945 0.0584926 0.172184 1.17495 -1.12642 -0.762166 0.00711784 0.301329 0.0431722 1.10362 -0.442628 0.839628 -0.117922 0.364695 -0.527442 -0.822073 0.110154 -0.565651 -6.44385 -0.221915 -0.0890596 -0.0247574 -0.16021 -0.228762 -0.00325659 0.0261142 -0.0448764 0.153055 0.129086 0.299133 17.2932 2.0476 -2.09781 0.708459 -0.400743 -0.382434 -0.0705892 -0.0311134 -0.409684 -0.0942266 -0.0813586 0.031174 -0.31704 0.208545 -0.434612 0 +343 0 0 0 0 0 -0.412342 -0.132184 0.0864169 0.626104 0 0 -0.0845354 0.236528 0 0.223325 -0.0643483 0 0 0 0.0479021 0.301397 0 0 0 0 0.13768 0 0 0.166748 -1.32451 0.060468 0 -0.456286 0 0 0.102973 -0.0372619 0 0 1.39006 0.491184 0 0 0.221035 0.549688 0 0.0905398 0.0280556 0.0162528 -0.207864 -0.88201 -0.0260302 0 0.225512 0.56054 -0.321732 0.829681 1.00394 0.577987 0 0 0.284965 -6.17302 0 0.106434 0.4455 -0.246546 0 0 0 0 0.274117 0.00828873 0 -3.92173 0.881897 0 0 0 -0.0977033 0 -1.79926 3.27803 0 -0.484796 1.7627 -2.27432 0 -1.01239 2.2847 -3.81563 3.82918 0 0 0 -0.445425 -0.0659927 0 0 0 -0.0206574 0.0483603 0 -0.00206343 0 -0.00739605 -0.0917692 0 0 0 0 -0.225399 0 -0.038131 0 -0.503547 0 -0.169512 0.00484805 0 -0.00274397 0 0 -0.225757 0.000548793 0.0295653 0 0.00411227 0 0.00356536 0.0153619 -0.0217605 -0.00200156 0.019211 0 -0.000370714 0 0 0 0.000253355 0 0 0.00419324 0.0011609 -0.0117006 0.0011911 0 0 -0.0246432 0 -0.0116347 0 0 0.0204789 -0.00292923 -0.0646187 0.0476951 0 0 -0.116636 -0.0186299 -0.0388008 0.0681759 -0.358614 0 -0.0392344 -0.0117473 -0.10137 0 0 0 2.12034 0 0.137187 0.482462 0 0.0182741 0.00840178 0.134518 0 -0.000335913 0.0147078 -0.024329 0.103909 0 -0.412342 -0.445425 -0.132184 -0.0659927 0.280803 0.0298444 -0.253643 0.189413 -0.282437 0.0702234 0.0439256 0.349327 0.0105731 0.0808429 -0.060953 -0.0599925 0.0622582 0.458917 0.924642 -0.761357 -0.0805095 0.0668952 0.123627 0.141946 0.180121 -0.0111971 -0.456633 -0.0146782 3.92719 0.323637 0.0177073 0.277419 -0.0122249 0.50619 0.135805 0.0390626 -0.00184458 0.0297058 0.0203353 -0.285552 -0.01758 0.00325667 1.59219 0.810202 0.0106207 0.0181667 0.184682 -0.102302 0.0606517 -0.715787 -2.20895 0.429365 -0.00452041 -0.121753 0.0471207 -0.41584 0.0330432 -0.24458 0.141736 -0.304349 -0.644215 -0.468187 0.0487291 0.280384 1.28756 0.354595 -0.125544 0.287717 0.0881825 0.489995 -0.14615 -0.00423256 -0.126111 0.121262 -0.11018 -0.0974008 -0.100368 -1.00158 -2.37233 -1.30668 -1.27805 1.34272 -0.419072 -0.367122 0.552723 -0.779955 -0.314387 -0.222092 0.325404 -0.541238 0.426575 0 +344 0 -0.364788 -0.0587506 -0.0135798 -0.124259 0.0359222 0.249924 -1.31246 -2.60162 -0.0832183 0.786786 -0.141633 -0.381493 0.00120494 -0.107552 0.0137731 -0.43557 -1.77799 0.223339 0.0292206 -0.733432 0.0523499 -0.104956 -0.00158401 0.141917 -0.810311 -0.0488808 0.108977 -0.686257 -1.36049 0.137375 -0.0122977 0.0921891 -0.0822958 0.569145 -0.46323 -0.00896322 0.396517 0.225937 -0.170997 0.379588 0.00867754 1.7684 -0.0100808 -1.89554 0.0493025 0.573494 -0.923973 0.165073 0.0160705 1.17554 0.306815 -0.709286 -0.0676223 0.042132 0.112633 2.04703 -0.529467 -0.241832 -0.314388 -0.0142609 0.779134 1.84757 0.312323 -0.0169448 -0.943418 0.970396 0.191267 0.817395 0.0193155 -0.0594984 0.0766007 -0.0814934 -0.603667 2.45365 0.786841 -2.04732 -1.83724 -1.17793 2.10532 -0.7095 1.21641 -0.669796 -0.726449 0.988876 -1.10594 3.61479 -0.015216 0.0213882 0.171163 0.272432 2.14009 0 0 0 0 0 -0.0135798 -0.124259 0.000724577 0 0 0 0 0.000100402 0 0.00534456 0 0 -0.000162018 -0.000964436 0.00306577 0 0.000545311 0.0230403 0.0232803 0 0 -0.1313 -5.10545e-05 0 0.00401697 0.178686 0 0 -0.0163617 0.0980989 0 0.0630845 0 -0.0167163 0 0 -0.00191319 0 0 0.177583 0.00189663 -0.00306057 0 0.0136875 0.0147246 0 0 0.0802936 0 0.00139581 0.429889 0.00309116 0 0 0.000312107 -0.00117967 0 0.00689193 0.0149069 0.00244297 0.16964 0.0370032 0.00107261 0 0.00277593 0.000653912 -0.0814395 0.038267 0.0605203 0 0 0 -1.19094 -0.0337997 -0.183738 -0.00493407 -0.00432641 -0.00516336 0.000137817 0.000120844 0.000254908 -0.00272162 0 0 0 0 0 0 0.0359222 0 0.249924 0 0 0 0 -0.0739151 0.368948 0 0 0.686457 0 0.0816238 0 0.00218732 0 0 -0.539183 0 0.146808 -0.061843 0.337613 -0.0637085 0 0 0.0972011 0 -1.13625 0 2.26907 0.52389 0 -0.38291 0.774152 0.035205 0 -0.00352981 0 0 0.036871 0 0.241739 -1.08373 0 0 -0.134187 0 0 0.0260565 0.461099 -0.0430887 0 1.32749 0 -0.0969263 0.166576 0.0189203 -0.585392 0.0444837 0.869393 0.311095 0.0407674 -0.323994 -0.811957 0.150731 0 0 0 0.135645 -0.137491 0 0 0 0 -0.115909 -10.6935 -3.38869 1.45373 -0.568508 0.218691 -0.538765 -0.338058 0.214245 -0.281835 0.244913 0 0 0 0 0 0 +345 0 -1.08219 -0.242361 -0.00945412 -0.0337009 -0.212494 -0.029515 -0.270174 -0.429179 -0.0726309 0.102003 -0.0312072 0.555535 0.000979423 1.48805 0.00733201 -0.666045 -1.86624 -0.0378914 0.00612209 2.02864 -0.00920649 0.0635059 -0.00125033 0.0372989 0.035286 -0.27275 -0.0240697 0.0803068 -0.226999 0.246126 -0.0101576 0.0965937 -0.0134432 -0.155398 0.0298101 -0.00274308 -0.0453718 -0.164271 -0.143835 0.788125 0.00845543 -0.370432 -0.0138784 2.609 0.0682261 0.245246 -0.0416037 0.0787043 0.0428138 -0.44589 0.112218 -0.602282 0.00825571 0.00911037 -0.10207 -0.940239 0.204906 0.161793 -0.078051 -0.0188585 -0.447642 -2.74631 -0.761368 -1.05983 0.0950542 -0.272855 -0.149814 -0.119645 0.0182235 -0.0187286 -0.169406 0.116962 0.0491352 -1.63083 0.0251865 0.315723 -0.120769 -0.709966 0.540984 -0.662857 0.899816 -0.769453 -0.174084 0.0635184 0.0549007 0.142544 -0.0210563 0.0152781 -0.0186321 0.136144 0.357076 0 0 0 0 0 -0.00945412 -0.0337009 0.00197538 0 0 0 0 0.000208145 0 0.0052724 0 0 0.000822839 0.000905122 0.00267734 0 0.000513698 0.019944 0.0302938 0 0 -0.0353015 4.79146e-05 0 0.00381293 0.421817 0 0 -0.00230223 0.0958676 0 0.0291906 0 -0.0076711 0 0 -0.000728742 0 0 0.241025 0.00393192 0.0155437 0 0.0373156 -0.0304744 0 0 0.145586 0 0.00380531 0.269473 0.00151174 0 0 -0.00158509 -0.00321608 0 0.00648346 -0.0404448 -0.0011118 -0.0190155 0.0303805 0.00882407 0 0.00640149 0.000696406 -0.115858 0.00384247 0.0350984 0 0 0 -2.77554 -0.210216 -0.277234 -0.0140712 -0.0123383 -0.0152611 -0.000699932 -0.000613732 -0.0012946 -0.0029213 0 0 0 0 0 0 -0.212494 0 -0.029515 0 0 0 0 0.198897 0.0431859 0 0 0.185402 0 0.0191709 0 0.00289215 0 0 -0.0688474 0 0.520026 0.0151901 0.074764 -0.00611035 0 0 -0.015656 0 -1.11026 0 4.18487 0.0431116 0 0.408002 1.51766 0.0103522 0 0.0101198 0 0 0.00999621 0 -0.207009 -0.309936 0 0 -0.0322338 0 0 -0.691048 4.0118 0.171012 0 0.0994107 0 0.806825 0.0699629 0.0852461 0.385208 -0.0843167 0.895563 0.778017 0.172404 0.101661 1.01517 0.191813 0 0 0 0.275083 -0.0653967 0 0 0 0 -0.0667876 -25.8465 -3.34891 -1.32515 -1.17628 0.483892 -1.27064 -0.045369 0.0167893 -0.0399633 -0.132418 0 0 0 0 0 0 +346 0 -0.262436 -0.474449 -0.0445958 -0.207221 0.116391 -0.205434 0.326456 0.424132 -0.347316 0.886364 -0.0387535 0.0941485 0.00439407 -0.646346 0.0572508 -1.12511 -2.80446 0.033226 0.141931 -3.62639 0.00384455 0.388007 -0.00567014 0.219853 0.435149 -0.612093 -0.00495708 0.39063 0.500699 -0.228436 -0.0466662 0.54232 0.605043 -0.111015 0.276283 0.00205941 -0.00102296 1.19801 -0.12481 -1.84043 0.0360428 0.00272663 -0.00589805 -0.266036 0.267741 -0.939574 0.47228 1.29317 0.0170694 -0.0214413 0.121469 6.67994 -0.247207 0.217679 0.102257 1.40289 -0.914588 -0.35038 -0.329004 -0.0767948 0.922634 6.21897 -0.407125 -0.515539 -0.332551 -0.20731 0.00322584 0.246004 0.084179 -0.215461 0.524058 0.274962 0.1213 4.51181 -0.956498 0.474491 -3.82805 -1.23665 -2.43698 0.172692 -1.08074 -1.06686 -0.387069 -0.109077 -0.546682 -0.94954 -0.0826317 -0.00788656 -0.287847 0.0473992 -0.787615 0 0 0 0 0 -0.0445958 -0.207221 0.000838999 0 0 0 0 0.000195894 0 2.37833e-05 0 0 -0.00172329 -0.00540902 0.00261331 0 0.000243111 0.0551065 0.0122634 0 0 -0.15121 -0.000286338 0 -0.0327448 0.307504 0 0 -0.0144609 0.16878 0 -0.16584 0 -0.0298529 0 0 -0.00300501 0 0 -0.601883 0.00370051 -0.0325536 0 0.015849 0.0693826 0 0 -0.0797484 0 0.00161622 0.390033 0.00495737 0 0 0.0033197 -0.00136596 0 -0.000739036 -0.0337365 0.00619138 -0.706151 0.0300996 -0.0187999 0 0.00744837 0.00761958 -0.294568 0.0359944 0.0732491 0 0 0 5.24969 0.392348 0.235824 0.0245602 0.0215355 0.0433923 0.00146589 0.00128536 0.00271132 -0.000523087 0 0 0 0 0 0 0.116391 0 -0.205434 0 0 0 0 -0.2586 0.130836 0 0 0.679639 0 0.0753273 0 0.0248264 0 0 -0.950344 0 0.705391 -0.0781751 0.23803 -0.136034 0 0 0.200946 0 -7.04993 0 1.22616 -0.512932 0 -0.390771 0.73903 0.0310058 0 -0.0525256 0 0 0.0165705 0 -2.07758 -2.09333 0 0 -0.290747 0 0 -0.0531346 0.606417 -0.143138 0 0.463377 0 -0.0131407 0.315233 -0.0262762 -0.533532 0.130697 0.859624 0.57934 0.0303651 0.582116 2.84511 0.0943098 0 0 0 0.0934282 -0.135366 0 0 0 0 0.0495561 -10.9711 -3.0419 0.402456 -0.379948 0.0341375 -0.341943 -0.284126 0.160877 -0.229282 0.0982473 0 0 0 0 0 0 +347 0 0.260285 -0.121114 -0.0873193 0.0122675 -0.000611546 0.185374 -0.667938 -1.50933 -0.756158 1.19834 0.0717804 0.593479 0.0480855 -0.72216 -0.132122 -1.1945 -5.6268 0.14824 -0.143989 -1.43434 0.0371764 0.149635 -0.0630588 0.409703 -0.315582 -0.343414 -0.203064 -0.332856 -0.881538 0.121357 -0.222898 -0.460145 0.349281 -0.918511 -0.201199 -0.0521958 -0.68446 0.965423 0.01975 -0.0781051 0.165174 -3.15375 -0.12629 -0.287642 0.4208 0.287505 -0.516463 -0.534729 0.417387 -1.74437 0.616837 0.305764 0.225944 -0.0748001 0.0515728 -1.87293 0.140943 0.701194 -0.688715 -0.356626 0.933322 -0.555577 -0.724748 1.10894 1.50864 0.769684 -1.33895 -1.32081 0.39829 -0.0489328 -0.284727 -0.205321 1.02346 -0.169965 0.000598437 0.915175 -4.27279 -2.47733 0.680849 -1.45742 0.854708 -1.99918 -1.2172 1.02961 -1.63272 2.48835 -0.736012 0.522347 -0.0244305 -1.16779 3.33246 0 0 0 0 0 -0.0873193 0.0122675 -0.00431194 0 0 0 0 0.000422437 0 0.0277504 0 0 -0.00335339 -0.00913411 0.0209618 0 0.00324799 0.183255 0.198989 0 0 -0.102037 -0.000510346 0 -0.0211807 0.931952 0 0 -0.00926981 0.460155 0 0.0496476 0 -0.0832216 0 0 -0.0082058 0 0 0.243225 0.00876346 -0.0493049 0 -0.0622442 0.051869 0 0 0.155403 0 0.00238971 0.864983 0.00284897 0 0 0.0013585 0.0172791 0 0.01636 0.0127427 0.0029927 0.103321 0.0893019 0.00192418 0 -0.0103265 0.0142563 -0.533499 0.196441 0.149303 0 0 0 -2.3243 0.0253712 -0.702468 -0.0261422 0.0235244 -0.0650734 0.0030571 -0.00398606 0.00946631 -0.0340363 0 0 0 0 0 0 -0.000611546 0 0.185374 0 0 0 0 -0.2205 -0.759085 0 0 0.0451062 0 0.0222652 0 -0.0229375 0 0 -0.636473 0 0.172202 -0.11751 -0.110888 -0.0806474 0 0 -0.113397 0 -3.3104 0 -1.26875 0.198188 0 -0.528705 -0.363241 -0.00480483 0 -0.0485206 0 0 -0.119707 0 -0.753947 -0.61218 0 0 -0.0693335 0 0 -0.0819666 0.305842 -0.219276 0 1.19013 0 0.627512 -0.0603139 0.319554 -0.0548687 0.185225 -0.482806 0.217548 -0.0798609 -0.124053 -0.476914 -0.141012 0 0 0 0.085053 -0.0391588 0 0 0 0 0.117476 10.8351 1.47154 1.14175 1.02556 -0.831572 0.970641 -0.0505574 0.0570307 -0.03184 0.21977 0 0 0 0 0 0 +348 0 -1.32842 0.01472 -0.0217859 -0.149188 -0.179282 0.120676 -0.5951 -0.813848 -0.0708621 0.828175 0.344523 -0.235988 0.0101386 -0.265697 0.243954 0.832215 3.72117 0.17859 0.323357 -1.713 0.0409869 -0.170111 -0.0110032 0.139428 -0.399918 0.272483 0.0459943 -0.469188 -1.13896 0.0495061 -0.0306264 0.935076 -0.0801027 0.200858 -0.262184 0.0823561 0.245497 1.64078 0.163102 -0.469282 0.0494146 0.757291 0.0415486 -1.11316 0.257314 0.180213 -0.822298 1.15429 -0.0345863 -1.02865 0.117409 1.47243 -0.332744 0.333359 -0.505134 1.2126 0.611196 -0.498293 -0.191498 -0.111814 -0.333626 -0.504303 0.123204 -0.0265824 0.592286 0.509337 -0.410151 -0.393208 0.0535754 -0.14764 -0.40695 0.388565 -0.24921 -0.387723 0.754717 1.32606 -9.90644 -3.40629 -0.429058 -1.90666 0.557168 -1.21883 -0.95209 0.841725 -1.20272 1.50194 -0.450063 0.187333 0.509708 -1.76885 4.3056 0 0 0 0 0 -0.0217859 -0.149188 0.00418044 0 0 0 0 0.00121295 0 0.0229032 0 0 0.00440761 0.01512 0.0152534 0 0.00344331 -0.00154039 0.0993571 0 0 -0.150374 0.000806589 0 0.0636484 0.2833 0 0 -0.0210039 0.0774236 0 0.254417 0 -0.030327 0 0 -0.00364733 0 0 1.25875 0.0228446 0.0804443 0 0.077501 -0.101107 0 0 0.306219 0 0.00972393 0.538142 0.00437576 0 0 -0.00721458 -0.00576521 0 0.0215791 -0.120863 -0.0158964 0.545864 0.0878562 0.0432951 0 0.00241455 0.000214251 -0.112932 -0.0420398 0.0793359 0 0 0 -11.9961 -0.857624 -1.07948 -0.0652831 -0.0301981 -0.136707 -0.00332825 -0.00291631 -0.00555303 -0.0177344 0 0 0 0 0 0 -0.179282 0 0.120676 0 0 0 0 0.273974 0.713482 0 0 -0.0327835 0 -0.00624847 0 0.0594834 0 0 -0.0993285 0 -0.132181 0.0437338 -0.206446 -0.00238716 0 0 0.474188 0 5.37659 0 2.86811 0.607236 0 0.471812 0.415347 -0.0236635 0 0.028671 0 0 0.084622 0 1.62648 0.355295 0 0 0.062843 0 0 -0.299282 -0.411701 0.161012 0 0.700003 0 -0.388482 0.143178 -0.259072 0.618287 -0.103865 -0.256526 0.119329 0.102874 0.58568 4.78575 0.0452703 0 0 0 0.244827 0.035528 0 0 0 0 -0.148232 -22.9514 -2.53136 -1.45533 -0.887706 0.374413 -0.962203 -0.0466106 0.02453 0.0223417 -0.175195 0 0 0 0 0 0 +349 0 -0.590091 0.314644 -0.145067 -0.499444 0.263468 0.338014 -0.64628 -1.68173 -0.37192 1.76499 0.0389891 -0.31097 0.069048 -0.0545749 -0.0661996 1.28095 3.22773 0.314119 -0.253232 1.55528 0.0853513 -0.398258 -0.0843011 0.409449 -0.745016 0.630401 -0.0805922 -0.536289 -0.202356 0.0190545 -0.215811 0.0651231 -0.513756 -0.107258 -0.453755 -0.0525369 -0.438474 -0.169179 -0.412061 0.936962 0.228251 -1.18641 -0.214397 -0.16217 0.66193 0.761654 -0.536666 -0.638796 0.217244 0.289163 0.814095 3.50025 0.270821 -0.447653 0.195705 -0.501993 0.0432433 -0.228083 -0.449487 -0.277291 -0.780513 0.216783 0.34142 0.0946651 0.214504 0.233743 0.445366 -0.318133 0.154233 0.748137 0.0771267 0.150712 0.60172 0.0345279 0.379898 1.18075 5.06386 -0.967295 2.71366 0.32673 0.645621 -1.40704 -1.70809 1.90131 -2.68525 2.7062 -1.15777 1.2092 -1.07417 0.519359 0.764964 0 0 0 0 0 -0.145067 -0.499444 0.00225635 0 0 0 0 0.000649219 0 -0.0139188 0 0 0.00118998 -0.0146737 -0.014338 0 -0.00300293 0.0505896 -0.116017 0 0 0.0228107 -0.000746782 0 -0.180272 -0.158601 0 0 0.00193824 0.00264936 0 -0.497816 0 -0.0152477 0 0 -0.000937479 0 0 -1.13176 0.0115059 0.00754836 0 0.0240399 0.0884695 0 0 -0.418574 0 0.000857431 -0.431744 0.00082939 0 0 0.00268569 -0.00834308 0 -0.0177427 -0.0644895 -0.00452419 -1.24171 -0.0395209 -0.00472556 0 0.00311144 -0.000849265 0.0467003 -0.140432 0.0120135 0 0 0 9.60657 0.528709 0.853804 0.0542469 0.0182541 0.129819 -0.000712214 0.00511254 -0.00561204 0.022796 0 0 0 0 0 0 0.263468 0 0.338014 0 0 0 0 0.00395195 -0.517877 0 0 0.765438 0 0.0862829 0 0.0197195 0 0 -0.117058 0 -0.701118 -0.00825926 -0.0877864 -0.0147318 0 0 0.0857782 0 -0.929332 0 0.633988 -0.0343553 0 -0.354387 -0.871473 -0.0135516 0 0.0218104 0 0 -0.0350227 0 -0.469009 0.494324 0 0 0.0485999 0 0 0.226909 0.0368242 -0.10069 0 -1.09225 0 -0.267616 -0.251263 0.0914505 -0.196185 -0.0277092 -0.0675596 0.123676 0.0943121 0.376214 -2.82555 0.0150409 0 0 0 -0.136166 -0.0441486 0 0 0 0 0.0624197 -7.96179 -4.48734 2.76596 -0.853771 0.69563 -0.458788 -0.614142 0.446268 -0.410407 0.245595 0 0 0 0 0 0 +350 0 0 0 0 0 0.185259 0.187587 -0.856932 -2.10849 0 0 -0.279181 -0.258453 0 -0.996732 -0.0753669 0 0 0 0.0617164 -6.07294 0 0 0 0 -0.552917 0 0 -0.328993 5.20215 0.0119084 0 -0.269297 0 0 -0.287067 -0.0493269 0 0 -2.25576 -0.935021 0 0 -0.495233 -2.41876 0 0.289457 0.56974 0.45676 1.09135 -3.27889 0.959768 0 0.199483 -0.027123 0.282739 -0.325046 -0.0612562 -0.114854 0 0 -1.44594 2.07866 0 1.13813 1.14966 0.720901 0 0 0 0 -0.792945 -1.76305 0 0.661804 -0.519547 0 0 0 6.9694 0 4.88583 -9.27762 0 2.4077 -2.95587 3.7571 0 2.80531 -3.4615 6.35969 -16.5526 0 0 0 0.205857 0.07772 0 0 0 -0.0507792 0.0590264 0 -0.00593702 0 -0.0105568 -0.0107134 0 0 0 0 0.020727 0 0.0194791 0 -0.175647 0 -0.3554 0.0393413 0 -0.00605545 0 0 -0.0740485 -0.00395975 -0.0352939 0 -0.00331546 0 0.00394829 0.0566842 -0.0184034 -0.0562358 0.00804417 0 -0.000773657 0 0 0 -0.000255683 0 0 0.0150779 0.0040312 0.00433614 -0.0777317 0 0 -0.0107362 0 -0.0131516 0 0 0.0474728 0.0424499 0.0751759 0.0041882 0 0 -0.135488 0.0467958 -0.0114785 -0.15716 0.187247 0 -0.0509994 -0.0316897 -0.0137267 0 0 0 1.07065 0 0.152397 0.188937 0 -0.00414919 0.0643582 0.000761761 0 0.00556985 -0.00652145 0.0414613 -0.052165 0 0.185259 0.205857 0.187587 0.07772 -0.52684 -0.193719 0.426073 -0.217943 -0.122447 -0.134667 -0.0680549 -1.55472 -0.0244413 -0.249099 0.0947867 0.00703039 0.0157765 -0.591781 -0.484519 -1.49964 -0.421067 -0.140166 -0.5824 -0.112359 0.0930223 0.286144 -0.107214 -0.024675 -9.20904 -0.586947 -4.41021 -0.14702 0.018471 -0.424979 -1.39982 -0.0953794 -0.00830801 -0.0442579 -0.11938 2.0494 0.080228 0.0396395 -2.18468 -2.3289 -0.00679476 -0.0194555 -0.463796 -0.16309 -0.0731578 -0.302427 -0.596376 -2.50475 0.0750011 -1.29364 -0.0830473 2.77485 -0.0197806 1.28438 0.787641 0.221848 -1.7046 -1.07566 -0.209004 4.6253 19.3516 -0.422047 0.321028 -0.124413 -0.124867 0.139758 0.519801 0.0255406 0.312284 -0.282947 0.137937 0.589112 32.8095 11.8762 -0.983876 7.03465 -2.56548 -1.89299 2.52149 -1.01319 -0.186424 1.29339 1.29713 -0.192037 -0.725252 1.47446 -2.72394 0 +351 0 0 0 0 0 0.0862447 0.308539 -0.489025 -3.31332 0 0 -0.208231 1.07866 0 1.70357 -0.164933 0 0 0 -0.235924 2.73832 0 0 0 0 -0.653217 0 0 -0.165984 -0.618686 0.412213 0 -0.492045 0 0 -0.109156 -0.0337822 0 0 -0.161063 0.82788 0 0 -0.0175605 5.68413 0 0.32241 -0.0799551 -0.533644 -0.0432061 0.866779 -0.0604171 0 -0.0994704 -1.17549 0.838521 -3.11095 -0.618299 0.705481 0 0 0.164339 0.171065 0 0.803531 0.186962 -0.254991 0 0 0 0 -0.788792 0.0498773 0 -0.169534 -1.0864 0 0 0 10.1594 0 2.44875 -1.83868 0 0.371706 0.102998 5.61977 0 0.0278256 0.182047 1.54005 2.45125 0 0 0 -0.101002 -0.000959211 0 0 0 0.0016671 0.0852517 0 -0.000466002 0 -0.00107388 -0.0925189 0 0 0 0 -0.263625 0 -0.0504349 0 -0.436354 0 -0.0706423 0.567229 0 0.00494489 0 0 -0.0350882 0.00278026 0.0921929 0 0.0168631 0 0.00573473 0.0222738 0.0157002 0.0410077 0.0105596 0 -8.3842e-05 0 0 0 0.00117434 0 0 -0.00560275 -0.00933039 0.240095 0.02551 0 0 0.00620638 0 -0.0191932 0 0 0.0843645 0.0318062 0.0544308 -0.0418266 0 0 0.0327812 -0.0366265 -0.0314148 0.0163597 -0.0983095 0 -0.129692 0.0168311 -0.367984 0 0 0 0.750236 0 -0.0519588 0.216959 0 0.00257047 -0.00175939 0.196192 0 -0.00331894 0.00769291 -0.0147085 0.0237024 0 0.0862447 -0.101002 0.308539 -0.000959211 0.143325 0.033645 0.062796 -0.419166 -0.343347 0.0048061 0.00979199 -0.167617 -0.000263723 -0.0614745 0.00436836 -0.0590185 0.00912187 0.100651 1.12394 1.05464 -0.343017 -0.254071 -0.04209 0.128547 0.0578284 -0.0125686 -0.460217 0.0137986 1.83203 -0.0967014 -2.05711 0.255217 7.06285e-07 -1.63745 -0.892014 -0.0170369 -0.00437978 -0.0706516 -0.015951 -0.204587 -0.0330569 0.00117768 0.419388 3.16396 0.00211713 -0.026056 0.378172 0.118394 0.145402 -0.059455 4.45821 -1.1133 0.0251479 -0.290399 -0.0100993 1.04544 -0.563606 1.21899 0.268393 -0.0352324 -0.374829 0.899745 -0.236977 1.58041 -1.07467 0.025717 -0.221812 -0.0143469 -0.249206 0.295371 0.15455 -0.0237333 -0.00521627 0.13256 0.121253 0.238353 15.3037 3.46554 6.49822 1.88011 -0.927033 2.42236 0.0446434 0.053723 0.31702 1.09978 -0.220619 0.104664 0.253357 -0.190648 0.543998 0 +352 0 0 0 0 0 0.63407 0.320839 -0.359884 -1.34264 0 0 -0.663771 0.705999 0 0.549707 -0.165522 0 0 0 -0.284604 1.73554 0 0 0 0 -0.338217 0 0 -0.41384 5.90954 0.362818 0 -0.518864 0 0 -0.240583 -0.0827736 0 0 -3.65791 2.39709 0 0 -0.769591 0.556132 0 1.33613 0.812303 -0.364067 1.17677 -0.97606 0.781463 0 0.65074 -1.01003 0.239971 2.51358 1.30351 0.870033 0 0 0.858268 -4.89365 0 0.718892 0.139958 0.782448 0 0 0 0 -1.17121 -2.34832 0 -0.249342 0.56394 0 0 0 2.44826 0 6.53903 -10.0151 0 3.25629 -5.06633 5.16046 0 5.10751 -7.74023 12.6728 -20.0123 0 0 0 0.559163 0.117468 0 0 0 -0.0304982 0.0117393 0 -0.00311041 0 -0.0172642 0.0117227 0 0 0 0 0.208614 0 0.0314432 0 0.245709 0 -0.271142 -0.0718515 0 0.00225817 0 0 0.43025 -0.00655014 -0.023816 0 -0.00918064 0 0.00110413 0.142508 0.0485552 -0.0855985 0.0308105 0 -0.0012937 0 0 0 -0.000625701 0 0 0.00779621 0.00238672 -0.106911 -0.0458416 0 0 0.0484633 0 -0.00241109 0 0 -0.000154767 0.0166423 0.085892 -0.0331428 0 0 0.152213 0.0489794 -0.0489359 -0.133247 -0.150206 0 0.232811 0.00455005 0.0780239 0 0 0 -1.08369 0 0.0598224 -1.03148 0 -0.0175 0.00221499 -0.161198 0 0.00680814 -0.0332877 0.0742644 -0.235757 0 0.63407 0.559163 0.320839 0.117468 -0.835404 -0.177583 0.0591556 0.279052 -0.330935 -0.165808 -0.0226289 -0.529476 -0.0296306 -0.194511 0.0587977 -0.00485123 0.0522223 -0.797732 0.902291 -1.36199 -0.123721 0.113923 -0.183545 0.0219317 0.383976 0.15153 -0.433191 -0.0235298 1.38116 -0.184436 -0.351886 0.751082 0.0161212 0.514684 -0.246959 -0.0817988 0.000360281 0.0684099 -0.061941 0.8466 0.131506 0.0257925 0.946295 1.43083 -0.00137429 0.0380758 -0.0718264 -0.154076 0.11615 0.345689 2.51411 -0.966307 -0.00962764 2.22089 0.00106916 1.68789 -0.146333 0.575442 0.421732 -0.190689 1.19972 -0.371216 0.181135 4.76011 31.3255 0.0910067 -0.226849 0.071208 -0.309729 0.415967 0.295136 0.00418388 0.222404 -0.205274 -0.000400142 0.438151 2.61783 2.45565 -1.61151 3.35298 0.377824 -2.27464 1.68241 -0.403886 -0.471526 0.29343 1.74856 -0.746305 -0.0530215 0.744188 -1.29729 0 +353 0 1.09903 0.455539 0.104756 0.203827 -0.0389028 -0.116716 1.42788 3.28727 0.380168 -2.89667 0.405549 0.81712 -0.0438861 1.14231 0.0990772 1.23893 3.10815 -0.603619 0.16341 -0.189715 -0.123533 -0.388443 0.0354247 -0.760778 0.764075 0.438076 -0.0505963 0.0699526 -0.0164448 0.303011 0.121341 0.474082 -1.55101 -0.191465 0.310431 0.0986387 0.209709 -6.84792 0.724683 -0.199644 -0.176527 0.453457 0.216525 1.55725 -0.575839 -0.23586 0.0162034 0.825465 -0.52416 0.62997 -1.09637 1.42977 0.0398909 0.16267 -0.0869587 0.586534 0.565895 0.0951706 1.14534 0.292767 1.0964 0.808926 3.34808 -1.01768 0.316215 -0.324095 1.58781 -0.0125955 0.0113036 2.00075 0.484682 0.938553 0.422405 -0.074938 0.0666363 1.52557 41.4336 15.7413 -7.9221 9.78805 -7.79352 10.7786 4.48451 -3.74858 4.19488 -5.96148 1.38577 -1.66759 1.03639 -1.3021 0.0580644 0 0 0 0 0 0.104756 0.203827 0.00802354 0 0 0 0 0.000487374 0 -0.0105751 0 0 -0.00422445 -0.0169499 0.0120701 0 -0.000194109 0.0417576 -0.0271159 0 0 -0.077135 -0.00124152 0 -0.0301721 0.73939 0 0 -0.0171893 0.0908652 0 -0.150913 0 -0.00175679 0 0 -0.00194798 0 0 -0.743921 0.00694804 -0.0603467 0 0.112847 -0.0132915 0 0 -0.0366442 0 -0.000909622 0.0108395 0.00222782 0 0 0.0109991 -0.0264113 0 -0.0271691 -0.0566929 -0.0353072 0.27688 0.0443936 0.0231568 0 0.0478877 -0.0257595 0.105822 -0.0483138 -0.155066 0 0 0 5.69133 0.28649 0.531866 0.0580348 -0.0576974 0.191071 0.00547068 -0.00850904 0.0206703 -0.0101779 0 0 0 0 0 0 -0.0389028 0 -0.116716 0 0 0 0 0.426311 1.20224 0 0 -0.925896 0 -0.13213 0 0.0530911 0 0 0.272332 0 -0.255153 0.145559 -0.326531 0.0345878 0 0 0.419941 0 9.10577 0 -2.71637 0.312758 0 1.06184 -0.745383 -0.0485879 0 0.0597848 0 0 0.150193 0 2.56172 0.0318183 0 0 0.00779598 0 0 0.289419 4.69265 0.610414 0 2.24233 0 -2.94295 0.53929 -0.466506 0.949541 -0.102211 0.544363 3.10419 -0.344078 -1.6032 -6.78376 0.141219 0 0 0 0.215459 0.352648 0 0 0 0 -0.315696 25.1074 5.84784 -3.55515 1.65399 -1.25537 2.69741 0.760867 -0.676366 0.793503 -0.870448 0 0 0 0 0 0 +354 0 1.03692 0.0949916 0.00136728 -0.155762 0.208893 -0.211788 -0.639998 -1.62432 0.322753 -0.0434673 -0.506978 -0.781122 -0.0102839 -1.54941 -0.131487 -0.157022 3.29485 -0.219353 -0.229904 0.337374 -0.0644531 -0.0394398 0.0241909 -0.0630439 0.206306 -0.38263 -0.0463402 0.806864 1.71098 -0.549444 0.086767 -0.456727 -1.19122 -0.171516 0.225054 -0.0820951 -0.142231 -6.85546 -0.640784 -0.566927 -0.0220262 -0.524267 -0.0802423 -1.30126 0.0660737 -0.642109 1.21733 -0.895017 0.1562 -2.06346 -0.281753 -5.16562 0.290248 -0.345429 0.568261 1.59492 1.32359 0.600881 0.277218 0.0887228 -0.118354 -0.876973 3.4769 -0.709769 0.8037 0.818225 1.72724 -0.244797 -0.177519 -0.0922473 -0.608318 -0.510757 -0.783225 0.671654 -1.25797 -0.740772 38.9485 7.57862 2.32865 6.20059 -3.6305 6.60544 -0.585041 0.366586 -0.841135 5.37476 -0.159008 0.862323 -2.17541 3.49524 -6.04126 0 0 0 0 0 0.00136728 -0.155762 -0.00102904 0 0 0 0 -0.0014798 0 -0.0108097 0 0 0.00592594 0.0137073 -0.0200571 0 -0.00110489 -0.045391 -0.144216 0 0 0.30938 0.0010195 0 -0.171006 0.69288 0 0 0.0500453 -0.0986033 0 -0.553929 0 0.0796396 0 0 0.01185 0 0 -1.34152 -0.0200886 0.0792483 0 -0.00993692 -0.0422302 0 0 0.0523781 0 -0.0150855 0.172894 0.0288596 0 0 -0.00945051 -0.00158055 0 -0.00295096 -0.0482354 0.0352529 -0.141414 -0.0490174 -0.00439299 0 0.0103802 -0.0676861 -0.0969867 0.0338736 0.14727 0 0 0 5.81375 -0.156214 0.845946 0.0971052 -0.154448 0.38443 -0.00714978 0.0144406 -0.0304576 0.0582005 0 0 0 0 0 0 0.208893 0 -0.211788 0 0 0 0 -0.386795 -0.31781 0 0 0.385093 0 0.0398689 0 -0.0245054 0 0 0.0387094 0 0.891154 -0.0659362 0.393961 -0.0038363 0 0 -0.155089 0 2.27117 0 -1.02059 -0.347764 0 -0.626911 1.16406 0.0469938 0 -0.0456657 0 0 -0.0390663 0 -0.238322 0.636782 0 0 0.0538666 0 0 -0.122456 -1.83832 -0.338057 0 0.125937 0 1.30647 -0.285331 0.305756 -0.276811 -0.0232385 -0.0463153 -1.16712 0.22324 1.03924 5.54664 -0.00211373 0 0 0 0.103225 -0.150793 0 0 0 0 0.0814193 13.6473 -1.11872 3.76607 -0.545104 0.783531 0.17896 -0.572682 0.511335 -0.353713 0.612677 0 0 0 0 0 0 +355 0 0.462399 0.327275 0.146472 0.449478 -0.353421 -0.243044 0.607451 2.59799 0.164097 -3.85137 0.497484 0.284538 -0.0590044 0.484466 0.153324 0.90116 1.42796 -0.851618 0.341711 -3.37774 -0.21353 -0.400031 0.0492328 -1.05655 0.668512 0.366275 -0.147313 0.0511912 -1.33121 0.209732 0.132254 0.597207 -1.44532 -0.369853 0.234198 0.123395 -0.018321 -5.51726 0.877688 -1.52485 -0.22406 0.120937 0.268815 -0.404809 -0.685737 -0.619712 -0.476765 1.30584 -0.346678 -0.599999 -2.03384 -5.32617 -0.273416 0.483782 -0.76351 -4.04028 -0.85875 -1.17747 1.40174 0.248893 -1.25194 4.25834 4.08342 -3.01592 0.1807 -0.617197 2.70526 -0.232949 0.00735025 1.50628 0.189109 0.266139 0.268768 -1.08965 0.675069 -0.365316 24.0854 15.9954 -12.6188 11.76 -10.3743 10.541 6.43038 -5.84857 7.45492 -6.48575 1.65025 -2.00354 2.81242 -3.38876 4.70033 0 0 0 0 0 0.146472 0.449478 0.00379455 0 0 0 0 -0.000558654 0 0.017397 0 0 -0.00394275 -0.0190059 0.0429554 0 0.00265568 0.0942083 0.185834 0 0 -0.151066 -0.00141362 0 -0.0514722 0.451635 0 0 -0.0133645 0.205226 0 -0.0232492 0 -0.000710187 0 0 0.000455314 0 0 0.155927 -0.00766099 -0.0488124 0 0.0531277 -0.0610511 0 0 0.289749 0 -0.00362692 0.112672 0.00953963 0 0 0.00221359 -0.0122174 0 0.00864647 -0.0048537 -0.0109126 -0.759809 0.0972482 0.0121785 0 0.00693706 -0.0127514 0.131215 -0.164887 -0.138277 0 0 0 -2.86421 -0.222613 -0.509703 0.00819473 -0.0697809 0.0770088 0.00378008 -0.00911812 0.0179908 -0.0538756 0 0 0 0 0 0 -0.353421 0 -0.243044 0 0 0 0 0.429016 1.2294 0 0 -1.48192 0 -0.170813 0 0.0669276 0 0 -0.881568 0 -0.0819458 0.140227 -0.511173 -0.0570764 0 0 0.463216 0 -1.02438 0 -1.58108 -0.317636 0 1.22308 -0.267266 -0.0566632 0 0.0415158 0 0 0.176235 0 -0.745122 -2.18703 0 0 -0.175413 0 0 -0.0761032 1.46749 0.317633 0 -0.929495 0 -1.93899 0.897076 -0.601113 0.987782 -0.165141 -1.42591 2.32028 -0.371588 -3.72957 -22.6008 -0.05391 0 0 0 -0.219863 0.320112 0 0 0 0 -0.365661 14.5645 8.27937 -6.23501 1.99671 -1.66212 1.59856 1.32987 -1.13635 1.24156 -1.03032 0 0 0 0 0 0 +356 0 0.740877 0.0237546 0.150426 0.147296 -0.152095 -0.268876 1.26299 3.22417 0.532309 -3.46326 -0.245259 -0.991694 -0.098739 -1.39431 0.13241 -0.815295 -3.22836 -0.592143 0.27584 -1.3181 -0.147744 -0.0701385 0.0882212 -0.901167 0.642358 -0.241818 0.175676 0.38237 1.57114 -0.357405 0.215483 0.162672 -0.909356 0.561368 0.338387 0.0485693 0.863941 -5.88184 -0.39659 -0.863552 -0.295131 2.63012 0.1406 -4.19256 -0.605322 -0.550704 0.753398 0.291879 -0.151125 0.402692 -1.05679 -6.77742 -0.157193 -0.137862 0.254815 -0.930677 -1.40577 -0.850347 1.14556 0.32085 -1.52655 0.664546 -1.48362 -1.04245 -0.565974 -1.68357 0.383147 0.710493 0.207627 1.40634 0.626556 -0.335302 -0.418587 0.860846 -0.790012 -3.30147 32.5014 13.6459 -10.3488 9.13746 -6.09733 5.5415 6.00773 -4.14113 4.00384 -5.17765 2.11847 -0.482405 -1.34059 3.9763 -7.31267 0 0 0 0 0 0.150426 0.147296 0.0103103 0 0 0 0 -0.00067941 0 -0.0210152 0 0 -0.00291456 -0.00789996 -0.0328979 0 -0.0100148 -0.0685739 -0.0888446 0 0 -0.399083 -0.000622961 0 0.15607 -0.356279 0 0 -0.0491458 -0.293161 0 0.131595 0 -0.0875983 0 0 -0.00722759 0 0 -0.0401713 -0.00925043 -0.0412665 0 0.149485 0.031458 0 0 -0.192347 0 0.0149699 -0.19763 -0.0227945 0 0 0.0165193 -0.0286453 0 -0.0364544 -0.0499423 -0.0521831 0.747109 0.0187098 0.0311532 0 0.042854 0.0364501 0.12359 -0.0524269 -0.168305 0 0 0 3.71592 0.365721 0.409118 0.00236408 0.0482402 -0.0350548 0.00589211 -0.00880374 0.0176347 -0.00641812 0 0 0 0 0 0 -0.152095 0 -0.268876 0 0 0 0 -0.103798 0.779611 0 0 -0.351235 0 -0.0573336 0 0.0143429 0 0 -0.285192 0 -0.112279 0.0979517 0.188896 -0.0102626 0 0 0.0514358 0 1.21136 0 -1.88988 -0.017646 0 0.723769 -0.615361 0.0152532 0 -0.00261026 0 0 0.111855 0 0.163991 -0.748482 0 0 -0.0475204 0 0 0.206286 3.06046 0.413017 0 -0.323354 0 -1.12345 0.118844 -0.205231 0.0976684 -0.0370466 0.701709 1.65972 -0.0808376 -2.21857 -10.2637 0.0971273 0 0 0 -0.150494 0.148479 0 0 0 0 -0.25882 21.7458 4.32649 -4.46248 1.88525 -1.38902 1.4489 0.105065 -0.0602547 0.144258 -0.411369 0 0 0 0 0 0 +357 0 0.543644 0.678519 -0.0120969 -0.0683798 0.0910983 0.153819 0.300461 0.441825 -0.248314 -0.0839043 0.632805 0.281269 0.0296655 -0.366786 0.168702 1.46784 6.64992 -0.0556573 0.257227 0.543324 0.0263178 -0.697599 -0.0544919 0.0214366 -0.116979 0.519253 -0.0510704 -0.509725 -1.8889 0.00885108 -0.124957 0.610907 -2.13214 0.0396477 -0.195966 0.108442 -0.0956263 -8.49714 0.746034 0.56411 0.0889443 0.272069 0.100553 -0.204608 0.230978 0.471597 -1.06956 1.00846 -0.0301764 0.546826 0.33882 3.68868 -0.2155 1.23885 -1.49584 5.94576 0.448496 -0.341748 -0.155075 -0.23997 -2.29984 -0.126896 2.95085 -0.0826481 -0.253698 -0.143808 0.534798 -0.0354032 0.263365 0.734081 -0.0784219 0.555343 0.270205 1.95839 2.00883 -0.210725 50.2344 10.8939 -6.01993 10.8409 -13.138 19.6671 -0.675865 -0.19735 1.69623 -1.74966 -0.808364 -0.85658 2.76781 -5.40707 8.79167 0 0 0 0 0 -0.0120969 -0.0683798 0.017286 0 0 0 0 0.00671997 0 0.0138384 0 0 0.00102403 -0.00980463 0.0527986 0 0.00826691 0.0545667 0.0805437 0 0 -0.329925 -0.000785048 0 -0.14513 2.10184 0 0 -0.0415888 0.401928 0 -0.356762 0 -0.0850777 0 0 -0.0120519 0 0 -0.797974 0.0939677 0.0210248 0 0.243943 -0.0778375 0 0 0.133531 0 -0.00929727 -0.10588 0.0155036 0 0 -0.000910414 -0.0494819 0 0.00127505 -0.234007 -0.000719238 -0.828913 0.114532 -0.000231297 0 0.0876682 -0.0432401 0.176407 -0.189397 -0.108944 0 0 0 1.95128 -0.0884542 0.00970792 0.0534073 -0.11311 0.259423 -0.00131959 -0.00205309 0.00912624 -0.0323052 0 0 0 0 0 0 0.0910983 0 0.153819 0 0 0 0 0.440278 1.0714 0 0 -0.70974 0 -0.103024 0 0.0981525 0 0 -0.101117 0 -1.00865 0.0726848 -0.526477 0.0243185 0 0 0.675088 0 8.94321 0 -5.64802 0.703556 0 0.479078 -2.24782 -0.0703737 0 0.0567109 0 0 0.161899 0 2.72881 -0.172965 0 0 0.049242 0 0 0.139248 3.5772 0.648742 0 0.445008 0 -2.96082 0.968838 -0.775493 0.636853 -0.0458127 0.044302 2.95428 -0.227508 -3.02625 -12.5848 -0.0250072 0 0 0 -0.118605 0.212561 0 0 0 0 -0.335476 49.0546 11.0617 -6.38196 5.30939 -4.20694 4.487 0.675505 -0.622026 0.750927 -0.51624 0 0 0 0 0 0 +358 0 0.943597 0.199175 0.193893 0.543366 -0.351411 -0.267606 1.59455 4.0304 -0.0575072 -3.71948 0.0682118 -0.496246 -0.0978896 -1.01262 0.0769923 0.582146 3.85204 -0.556823 0.264114 -2.33333 -0.153589 0.013167 0.0697013 -1.04104 0.833906 -0.0169154 0.10854 0.418726 0.914892 -0.32757 0.107781 0.0702595 -0.20977 0.529734 0.387181 0.071804 0.54323 -2.4251 0.219173 -1.14512 -0.263785 2.5095 0.206058 -2.02626 -0.401365 -0.597252 0.625166 0.637153 0.432107 -0.0302225 -0.776918 4.56496 -0.0780617 1.1755 -0.265367 2.58612 0.273733 0.523609 0.880612 -0.133685 0.434164 1.11579 0.452627 -0.730453 -0.969008 -1.44924 0.501624 1.85606 0.300095 1.30301 1.37077 -0.587526 0.271476 1.83178 -0.890474 0.73954 6.02713 10.4989 -11.1537 5.55744 -3.90633 1.08968 6.60399 -5.18293 4.757 -7.27339 1.40468 -1.16354 -0.666892 1.26795 -4.25825 0 0 0 0 0 0.193893 0.543366 0.00912797 0 0 0 0 -0.000498683 0 0.0343348 0 0 -0.0115526 -0.0406644 0.0516192 0 0.00159525 0.136533 0.32664 0 0 -0.182655 -0.00298771 0 0.202346 0.723496 0 0 -0.0180436 0.24119 0 0.387178 0 -0.0324256 0 0 -0.00132047 0 0 0.725088 -0.007918 -0.156989 0 0.122478 -0.0415235 0 0 0.250545 0 0.0202366 0.0160437 -0.0308492 0 0 0.00846403 -0.0125845 0 0.0031282 0.0435084 -0.0228773 -1.07214 0.00926199 0.00781955 0 0.00917073 0.0473084 0.0586803 -0.0980006 -0.00281775 0 0 0 -4.77024 0.0237818 -0.882701 -0.0461226 0.0376611 -0.145763 0.0111695 -0.0199046 0.0399314 -0.0844013 0 0 0 0 0 0 -0.351411 0 -0.267606 0 0 0 0 -0.152329 1.0446 0 0 -0.976484 0 -0.110224 0 0.0225979 0 0 -0.187034 0 -0.277607 0.0234126 -0.0282081 -0.014552 0 0 0.238949 0 2.51477 0 -3.83931 -0.353449 0 0.333326 -1.02394 0.00142986 0 -0.0221312 0 0 0.114764 0 0.133922 -0.633429 0 0 -0.0541181 0 0 -0.0713182 -0.287748 0.261824 0 0.221362 0 -1.54608 0.859811 -0.56441 0.0679356 -0.0132481 -0.80146 1.12505 -0.235728 -1.35035 -6.60328 -0.136045 0 0 0 0.066145 0.120953 0 0 0 0 -0.266611 35.2646 9.85977 -4.80048 4.11262 -3.29712 3.17604 0.861139 -0.668209 0.670848 -0.223166 0 0 0 0 0 0 +359 0 0 0 0 0 0.0671499 0.0125151 -0.763468 -1.9488 0 0 0.103739 -0.188774 0 -1.67965 -0.0324329 0 0 0 -0.133608 -0.975021 0 0 0 0 -0.267298 0 0 -0.125419 -6.76544 -0.226718 0 -0.0292471 0 0 -0.0588626 -0.0208116 0 0 0.439676 -1.26648 0 0 -0.00990394 -1.43305 0 -0.534363 -1.6557 -0.199578 0.00101739 -1.04779 -0.0644264 0 0.0694566 -0.0530164 -0.286895 2.38328 0.0290192 0.113863 0 0 -0.785297 2.77968 0 0.273053 0.0766399 1.47774 0 0 0 0 -0.635537 -0.0306738 0 3.58296 1.72028 0 0 0 3.29927 0 -0.397253 9.23605 0 0.00700063 0.735341 9.02849 0 -0.183838 1.39388 -2.7669 24.2008 0 0 0 -0.133667 -0.0086969 0 0 0 0.0215891 -0.00413894 0 0.00162037 0 2.02121e-05 0.00212639 0 0 0 0 0.010413 0 0.00148895 0 0.00167854 0 0.214228 0.073913 0 0.000188417 0 0 0.00496868 0.000136209 0.0039854 0 -4.44886e-05 0 -0.000305475 -0.0194945 0.00129126 0.00183263 -0.000924249 0 1.47019e-06 0 0 0 -3.23442e-06 0 0 -0.000361389 -0.000485736 0.0744457 0.000904999 0 0 -0.000580593 0 0.000529982 0 0 0.000607795 -0.000847012 0.0630594 -0.0024806 0 0 -0.0138843 -0.0053818 0.000428905 -0.0384153 0.00380377 0 -0.0229967 0.000346931 0.0624934 0 0 0 0.0355624 0 -0.00352317 0.0111831 0 0.000359014 -0.00102745 0.0201983 0 -0.000183026 0.00106845 -0.00272498 0.0128908 0 0.0671499 -0.133667 0.0125151 -0.0086969 0.732455 0.127373 -0.0616299 0.210539 0.0151127 0.00223108 -0.00717625 -0.228917 9.66867e-05 -0.0105815 -0.00286831 0.00548131 -0.00807676 0.0487521 -0.763559 0.158817 -0.171228 -0.265721 -0.129335 -0.0706555 -0.0121081 -0.372244 0.115866 -0.00739552 -5.07063 0.169102 -2.47029 -0.871346 -0.000124476 -0.879373 -0.620838 -0.00517148 0.00203335 -0.0119806 0.0287921 -2.50722 -0.00173669 -0.0497259 -2.21912 -1.2532 -0.00171112 0.0131546 -0.217171 -0.0330023 -0.0747884 -0.381849 -1.52387 0.049141 0.0268681 -2.01173 0.00448482 0.81607 -0.00630612 0.178764 -0.06151 -0.0414729 -2.04424 0.196612 -0.0202032 -0.527567 -11.0619 -0.12078 0.221239 0.00518814 0.252313 -0.0482014 0.0188026 -0.00258456 -0.00410872 -0.0254544 -0.0726179 0.00338589 13.6533 0.446158 5.42765 -0.101823 -0.645661 9.03619 0.00672902 -0.128296 0.769873 1.79328 -0.00129876 -0.0673507 0.327436 -0.455772 3.01319 0 +360 0 0 0 0 0 -0.0487263 0.334773 -0.686347 0.0223721 0 0 0.0199064 1.12421 0 1.588 -0.0131223 0 0 0 -0.10654 -0.284595 0 0 0 0 -0.239764 0 0 -0.959952 -1.77812 0.676604 0 0.00212001 0 0 -0.348644 -0.0121672 0 0 -0.0520851 0.656443 0 0 -0.0774799 2.21086 0 0.758116 -1.33992 -0.339076 0.195154 -0.757379 0.0538044 0 0.157765 -0.117955 0.0669408 -1.04085 -0.00693298 -0.61899 0 0 0.76335 0.239972 0 -0.99907 0.0447182 -0.505663 0 0 0 0 0.138496 -0.384393 0 -2.24577 0.596105 0 0 0 -0.15766 0 0.208522 2.52774 0 0.284669 -0.586303 1.32153 0 0.567601 -1.20343 1.22527 1.88317 0 0 0 -0.0479214 -0.00235579 0 0 0 -0.000244539 0.00253757 0 0.000168839 0 -8.0299e-06 0.00179003 0 0 0 0 0.033159 0 0.00113751 0 0.0577448 0 -0.0104184 0.000819621 0 9.6025e-05 0 0 0.00870059 -4.34293e-05 0.000551064 0 2.58527e-05 0 0.00018702 0.00413097 0.00150754 -0.000575072 4.97542e-05 0 -5.84439e-07 0 0 0 1.87945e-06 0 0 0.000115521 0.000297313 -0.00904447 -0.000222586 0 0 0.000188305 0 -0.000324395 0 0 -0.000273554 2.62497e-05 -0.00683163 0.00145121 0 0 -0.0141729 -0.00152669 -0.000183501 -0.00727441 -0.0295303 0 0.000283115 -0.000230426 0.012393 0 0 0 -0.0854429 0 0.00105897 -0.0174021 0 -0.000123392 0.00020701 -0.0123084 0 5.91091e-05 -0.00038725 0.000948052 -0.00663313 0 -0.0487263 -0.0479214 0.334773 -0.00235579 0.0793801 0.0305297 -0.0159179 0.319001 -0.0792143 0.000504204 0.0303479 0.00213932 2.3505e-05 -0.00124059 -0.000724724 -0.000251553 0.0197449 0.00981269 0.0293146 -0.207734 0.405493 0.272404 -0.0114639 0.0642516 0.0603025 0.00461179 -0.014963 0.00842247 1.92923 -0.0270951 2.32189 1.70564 -3.13194e-05 1.09445 0.862228 -0.000618556 0.00201458 0.0718654 0.014745 -0.0686131 -0.00321493 -0.00017602 2.0195 0.409668 0.00515926 -0.00153713 0.210678 -0.00278358 -0.0700026 -0.83598 3.01144 -0.43751 -0.0309416 -5.37254 0.0011257 0.0768201 -0.00508845 -0.0104965 0.0952793 -0.127392 0.952965 0.123378 -0.0707475 -0.160367 -13.2116 0.247501 0.143387 0.012439 -0.0915742 -0.333552 0.00383693 0.0233403 -0.000857486 -0.127887 0.0651956 0.00504434 -12.8331 0.169345 -5.66913 -0.0580451 -0.0802922 -0.865959 0.00071217 0.126671 -0.409632 0.0458077 -0.000261411 0.156525 -0.369102 0.32277 0.0958802 0 +361 0 0 0 0 0 0.678516 0.222452 -0.649247 -1.92097 0 0 0.0592348 0.30458 0 -0.558013 -0.00197843 0 0 0 -0.0364968 4.62666 0 0 0 0 -0.260902 0 0 -0.132006 -1.19591 -0.0079212 0 -0.0803179 0 0 -0.0997912 0.0129666 0 0 0.522204 -0.135052 0 0 0.166354 1.54789 0 -0.135727 -0.392546 -0.585257 -0.240684 0.697742 -0.158923 0 0.0724415 0.0438053 -0.0627994 1.77931 0.446479 0.0339518 0 0 0.0101575 -1.10716 0 -0.352717 -0.339384 -0.374308 0 0 0 0 -0.181286 0.427197 0 0.622614 -1.06417 0 0 0 3.34291 0 -1.15762 3.0886 0 -0.54564 1.0184 2.70891 0 -0.882211 1.53074 -2.18333 7.17699 0 0 0 0.0172315 -0.000889328 0 0 0 0.0106368 -0.00789939 0 0.000491454 0 3.77149e-05 -0.000350899 0 0 0 0 -0.0267687 0 -9.44127e-05 0 -0.0569358 0 0.116032 0.0619521 0 -4.48676e-05 0 0 -0.0202576 0.000277758 0.00251624 0 -7.87308e-05 0 -0.000564495 -0.0050884 -0.00146203 0.00390478 0.000105196 0 2.73383e-06 0 0 0 -5.70935e-06 0 0 -0.000731603 -0.000892808 0.0472407 0.00284142 0 0 -0.00056012 0 0.000974134 0 0 0.000305207 -0.0018684 0.0138466 -0.00442874 0 0 0.0192578 0.00312855 0.000741606 0.016177 -0.0118368 0 0.00607622 0.00115332 0.00985052 0 0 0 0.114383 0 -0.00835162 0.0245353 0 0.000570292 -0.00425407 0.0270647 0 -0.000359582 0.00150713 -0.00447051 0.00262753 0 0.678516 0.0172315 0.222452 -0.000889328 0.204599 0.0951211 -0.00901106 -0.313357 0.244712 0.000431427 -0.0324397 0.0339622 1.55956e-05 0.00219769 -0.000423013 0.00323649 -0.0257429 0.011599 -0.69607 1.47633 0.202644 -0.202668 0.0431873 -0.05135 -0.271549 -0.135998 0.10173 0.0241025 -3.5456 0.0288718 1.2135 -0.690184 -1.78912e-05 -1.37733 0.426082 0.00153837 0.00525778 -0.0146255 0.031577 -0.611289 0.00682773 -0.0235107 -2.16831 -0.359623 -0.00274981 0.0164112 -0.0166116 0.183977 -0.0736069 -0.0658815 3.93281 0.929888 0.0357325 3.69208 0.000723198 1.59852 0.00473059 -0.154356 0.179093 0.462631 1.22046 -0.0607526 0.0887272 -0.34342 6.35569 -0.184654 0.00486622 -0.0381124 0.324565 0.140068 -0.00490278 -0.0443599 -0.000957319 0.0465159 -0.0363046 -0.00786697 -6.70703 -0.00225966 3.74239 -0.0482178 -0.130742 2.43686 0.000423121 -0.108905 0.350596 0.918929 -0.000308999 -0.110691 0.253866 -0.325074 1.14239 0 +362 0 0.846573 0.229857 -0.00184261 -0.0801091 0.355117 0.1005 0.236951 -1.88062 -0.00230468 -0.00197644 -0.0271486 0.876354 2.2685e-06 2.29293 -5.87936e-05 1.23685 6.07573 0.029838 0.000810291 3.14694 -0.00226506 0.135138 -7.65251e-07 -0.0648594 -0.11143 0.192733 -0.00895367 0.28147 1.19375 0.319618 -4.26332e-05 0.00232432 -0.462655 0.00227083 0.16649 -0.000501666 -0.108967 -5.63996 -0.108222 1.28961 0.000124681 -0.0405933 -0.0024298 5.09779 0.00640153 0.363854 0.713504 0.0445043 0.0026958 1.33129 -0.21353 -1.75375 -0.00223429 0.00334616 -0.0157687 -2.35494 0.149331 -0.0286875 0.0775969 -3.08476e-05 -0.0861243 -2.34035 -0.0314338 0.200381 -0.378251 -1.20309 -0.554238 -0.0543096 -9.95469e-05 -0.0110237 -0.031483 -0.0267534 0.0601102 -3.11771 -1.21677 0.315834 22.3824 1.96627 9.48229 1.82746 -1.1559 8.71448 -0.0139304 0.114912 -0.281413 2.95077 -3.65203e-05 0.000563982 -0.0143385 0.23244 -4.07769 0 0 0 0 0 -0.00184261 -0.0801091 -0.00013239 0 0 0 0 -2.60328e-06 0 -0.00762381 0 0 0.0003851 9.74083e-05 -0.00132198 0 -0.000185773 0.000691251 -0.054282 0 0 0.0840912 8.67268e-06 0 -0.00116021 0.264659 0 0 0.0130275 0.0136282 0 -0.0273664 0 0.00192978 0 0 0.000299079 0 0 -0.231946 1.86732e-05 0.00437451 0 0.000416555 -0.00557698 0 0 -0.0249153 0 -0.000326307 -0.0216254 -0.00199919 0 0 -0.000811343 0.00027578 0 -0.000887722 -0.000392019 -0.00136114 0.123042 -0.00687715 -0.00698124 0 0.00301165 -0.0101407 0.0740762 -0.00180933 -0.0696285 0 0 0 1.2973 -0.010526 0.304718 0.0184131 -0.0367044 0.161553 -0.000583122 0.00106577 0.000112239 0.0556525 0 0 0 0 0 0 0.355117 0 0.1005 0 0 0 0 -0.578501 0.306914 0 0 0.346565 0 0.0204911 0 0.00559169 0 0 0.769887 0 0.129769 -0.197003 0.133348 0.0930379 0 0 0.115083 0 9.61008 0 -2.63751 0.974669 0 -1.77128 -0.296809 0.00915666 0 -0.0591566 0 0 0.0139526 0 3.32161 1.66083 0 0 0.199578 0 0 0.56839 1.7327 0.438071 0 2.39746 0 0.418938 0.0337891 -0.21791 0.096449 0.26554 1.14057 -0.267764 -0.0463004 0.566906 12.3093 -0.0553238 0 0 0 0.0415917 -0.00213521 0 0 0 0 0.0168257 21.0368 0.0675413 7.20261 0.538132 -0.441312 1.90058 -0.0641562 0.0560854 -0.23827 1.11683 0 0 0 0 0 0 +363 0 -0.213512 -0.206194 -0.00103029 -0.0468708 0.0455761 -0.258884 -0.0734906 0.0133459 -0.00313985 0.00742952 -0.0203737 -1.86149 4.00656e-07 -1.71143 -0.000509226 -0.95565 -4.89233 0.00681979 -0.00185216 -1.64826 -0.00374581 -0.03069 -8.07912e-07 -0.0732807 -0.0836531 -0.145381 -0.000341841 0.238409 -0.457161 -0.676422 -5.21368e-05 -0.0366291 -0.0418265 -0.0016734 0.0597883 -0.000198241 -0.0427997 1.45135 -0.0064932 -1.2038 2.26697e-05 -0.22383 0.000113207 -5.48949 0.0012019 -0.919044 0.0893441 -0.101031 -0.00128006 1.08403 -0.218558 -0.293265 0.000974009 -0.000767592 0.0182167 1.40744 -0.478449 0.0228981 0.16715 6.1821e-05 -0.350031 1.46671 0.531644 0.512869 0.0225202 0.615976 0.367761 -0.00931637 8.35704e-06 0.165297 -0.0165262 0.0309878 0.0838263 3.27482 0.204397 -0.537211 -7.692 -0.71831 -2.57745 -0.239055 -0.0595931 -2.89708 0.47517 -0.44174 -0.00205066 -0.295956 -6.85679e-06 6.64514e-05 -0.000748731 -0.00714078 1.5616 0 0 0 0 0 -0.00103029 -0.0468708 0.000367382 0 0 0 0 7.15781e-06 0 0.00438971 0 0 -0.000299604 -0.000100409 0.000708197 0 0.000100446 -0.000415162 0.0303986 0 0 -0.0175768 -7.32057e-06 0 0.00146637 -0.0839373 0 0 -0.0031004 -0.0103034 0 0.0346903 0 -0.000386835 0 0 -6.99811e-05 0 0 0.159811 7.60935e-05 -0.0042628 0 0.00400201 0.00747164 0 0 -0.028359 0 0.000778241 -0.0115894 -0.00151068 0 0 0.000610012 -0.000657733 0 0.000497949 0.0100004 -0.000385881 -0.0179102 0.00310616 -0.000528658 0 -0.00126337 0.0136687 -0.00106407 -0.000119532 0.00519098 0 0 0 -0.67476 0.0259811 -0.153065 -0.0122367 0.0236361 -0.0676728 0.000383719 -0.000738464 0.00194649 -0.0242956 0 0 0 0 0 0 0.0455761 0 -0.258884 0 0 0 0 0.232536 0.186681 0 0 -0.000826396 0 0.0053569 0 0.0144114 0 0 -0.0911865 0 0.0633126 0.0158192 0.00905368 -0.0252126 0 0 0.0950009 0 -3.34301 0 2.02022 -0.66257 0 0.302754 0.758718 0.00266425 0 0.0236782 0 0 0.0478053 0 -0.846352 -1.43052 0 0 -0.188737 0 0 -0.0802837 -2.28876 -0.112452 0 1.38668 0 -0.964781 0.106548 0.00967971 -0.110489 -0.0750597 0.0466374 0.313197 -0.0281364 -1.35066 -3.85061 0.0987664 0 0 0 -0.00160599 0.00781605 0 0 0 0 -0.103119 -12.0734 -0.619465 -2.20279 -0.253952 0.238943 -0.936766 0.122977 -0.127295 0.00269883 -0.191448 0 0 0 0 0 0 +364 0 0.873702 -0.265762 0.00276398 0.115993 -0.226416 -0.242476 0.45318 0.164047 0.00475912 0.346494 0.0609795 0.0576585 -4.20217e-06 1.43249 0.000838342 -1.31001 -1.85713 0.0618957 0.0012729 1.75698 0.0096398 0.425027 1.80562e-06 0.0870887 0.318123 -0.643851 -0.00404212 0.607246 -0.331877 0.0573716 9.43964e-05 0.0479358 0.362944 -0.0198731 0.37462 0.00144583 -0.109587 -1.21464 0.109961 0.659588 -0.000225474 -0.429015 0.00258821 2.13277 -0.011372 -0.260699 0.425589 0.0760993 -0.00334346 0.250859 0.0230645 4.6028 0.000441667 0.000873972 -0.0311272 -0.383604 -0.131814 -0.00965971 -0.0621855 0.000147235 0.275267 -1.17835 1.13437 0.10504 0.102076 -0.406532 -0.191559 -0.0371433 9.21877e-05 0.00880497 -0.0476211 0.0495255 0.146716 -0.969157 -0.167238 0.466809 2.22265 -0.184517 -0.630289 -0.00978333 -0.270921 0.847136 -0.495124 0.322511 -0.574475 0.764144 6.48765e-05 -0.000767153 0.0203692 -0.20104 1.13364 0 0 0 0 0 0.00276398 0.115993 -0.00102474 0 0 0 0 -2.47897e-05 0 0.00768993 0 0 0.00101144 0.000347299 0.0012643 0 0.0001913 -0.00500105 0.0507165 0 0 0.033008 2.28148e-05 0 -0.00269449 -0.363496 0 0 0.00782759 -0.110654 0 -0.0587279 0 0.000709547 0 0 0.000170704 0 0 -0.0630081 -0.000424307 0.0153179 0 -0.0175245 -0.00862649 0 0 0.106873 0 -0.00201379 0.289757 0.00714665 0 0 -0.00203648 0.00170196 0 0.000885951 0.00470456 0.00971767 -0.19356 -0.0103195 0.0123021 0 -0.00376461 0.015395 -0.074723 0.00401246 0.158188 0 0 0 -0.322398 -0.117917 -0.198919 0.017288 -0.0299837 -0.0913704 -0.00121997 0.00239518 -0.00876489 -0.0709608 0 0 0 0 0 0 -0.226416 0 -0.242476 0 0 0 0 0.0732141 -0.0790909 0 0 -0.0214495 0 0.0182147 0 0.00987084 0 0 0.60108 0 0.857303 0.0360241 0.045844 0.0783332 0 0 0.0509147 0 2.94092 0 -1.40652 0.455833 0 0.143692 0.774521 0.0126287 0 0.0104935 0 0 0.00450773 0 1.55186 0.696917 0 0 0.115174 0 0 -0.188497 2.12717 -0.0582792 0 -0.906818 0 0.721161 -0.0351872 0.0858066 -0.024652 0.160384 0.634171 -0.0579241 0.00409721 0.22988 -1.54723 0.0264942 0 0 0 0.0761341 -0.0451919 0 0 0 0 -0.00846142 10.5537 0.449532 -0.157295 0.0143226 -0.225156 0.324734 -0.0551627 0.0227143 -0.0806685 -0.0780888 0 0 0 0 0 0 +365 0 0.245762 0.126169 -0.00866272 -0.150141 0.398611 0.125751 -0.400474 -1.78915 -0.0595776 -0.217946 -0.0744565 -0.246892 9.05312e-05 0.237282 0.00542626 -0.0393307 -0.739916 -0.06511 0.0108386 0.346913 -0.02141 -0.177552 -0.000116875 -0.129455 -0.375304 0.117643 -0.0116834 -0.220649 0.289266 0.0091324 -0.00273156 0.0924708 -0.663072 -0.00433695 -0.141017 -0.00287576 -0.0562112 -2.76966 -0.203998 0.10539 0.00211586 -0.0387828 -0.0102735 -0.049127 0.0461486 0.0109969 0.041573 0.207852 0.0249826 1.13778 -0.153709 2.31747 -0.0174066 0.0159534 -0.0451384 0.812005 -0.213416 -0.318664 0.147637 -0.00388462 0.126963 2.19555 -0.0937397 0.581566 -0.108632 0.216911 -0.292901 -0.0524333 0.00423847 0.288779 -0.0561863 -0.115787 0.0318241 0.809315 0.283208 -0.183403 10.2798 2.22289 3.85775 1.40134 -0.640888 3.18504 0.325616 -0.15004 -0.0344532 2.80465 -0.0012586 0.00662286 -0.0422966 0.19361 -0.480793 0 0 0 0 0 -0.00866272 -0.150141 0 0 0 0 0 0 0 2.9876e-06 0 0 0 0 0.000134171 0 5.60924e-06 -0.000971412 0.00235133 0 0 0.130196 0 0 0.000536235 0.304103 0 0 0.0191549 2.55192e-05 0 0.00214966 0 0.00738848 0 0 0.00108534 0 0 0.00485707 0 0 0 0 0 0 0 -0.0336518 0 0 -0.00116877 0 0 0 0 0 0 0 0.0307589 0 0.0411079 0 -0.00303744 0 0 0.00261554 0.0956495 0 -0.0162069 0 0 0 -0.0111231 0 -0.00272228 0 0 -0.000209321 0 0 0 -0.000101333 0 0 0 0 0 0 0.398611 0 0.125751 0 0 0 0 -0.361731 -0.129197 0 0 0.381525 0 0.0258764 0 -0.00692496 0 0 0.0899576 0 -0.240579 -0.158576 0.056234 -0.0246303 0 0 -0.132517 0 -1.97509 0 -0.180136 0.0373035 0 -1.37938 -0.190984 0.000479055 0 -0.031727 0 0 0.00100503 0 -0.353446 -0.0943902 0 0 -0.0890457 0 0 -0.111945 0.596743 -0.480165 0 -0.100053 0 -1.0973 0.0498846 -0.0629856 0.126765 0.156441 0.705639 0.127407 0.0390566 0.433319 0.975646 -0.0215799 0 0 0 0.0937899 -0.0201834 0 0 0 0 0.00946089 5.30604 -0.505781 4.38095 0.146143 -0.105987 0.0454012 -0.0587133 0.0525005 -0.215295 0.735371 0 0 0 0 0 0 +366 0 0.632008 0.189533 -0.00356978 -0.0618709 0.210081 -0.0721606 1.09116 1.59165 -0.0245511 0.0917795 -0.0533139 0.488194 3.73066e-05 -0.286954 0.00258851 0.686444 4.58368 0.0420704 0.00331745 1.5978 -0.00162134 0.105772 -4.81627e-05 -0.0518104 0.570262 0.00147718 -0.0016047 0.597882 1.89057 -0.206983 -0.00112564 0.0484712 0.548739 0.0364293 0.308948 -0.00195454 -0.0647124 2.16592 -0.104174 0.00970772 0.000871916 -0.129149 -0.0049173 2.58343 0.0190172 -0.259649 1.14481 0.0518592 0.0117519 -1.14845 -0.0242619 -1.16025 -0.00557026 0.00510523 -0.0157842 -1.219 -0.243037 -0.163944 0.0722957 -0.0016008 -0.0863416 1.8596 -1.20912 -1.05519 -0.0701537 0.174444 0.106656 -0.0170605 0.00174661 0.0346689 0.00209625 -0.0102266 0.072115 0.193627 -0.4234 -0.093102 -4.59997 0.0514046 -3.18684 0.273446 0.224863 -5.13155 0.204062 -0.115248 -0.0705184 -3.08843 -0.00051865 0.00300341 -0.0415848 0.243932 -3.14234 0 0 0 0 0 -0.00356978 -0.0618709 0 0 0 0 0 0 0 0.000612021 0 0 0 0 3.94727e-05 0 2.30786e-05 -0.00029545 0.000503739 0 0 0.0395721 0 0 0.0015729 0.0925657 0 0 0.00560708 0.000995706 0 0.0217941 0 0.00256597 0 0 0.000369517 0 0 0.0624256 0 0 0 0 0 0 0 -0.0223153 0 0 0.00673858 0 0 0 0 0 0 0 0.0104804 0 -0.0562819 0 -0.00127807 0 0 0.00108786 0.0235609 0 -0.00601979 0 0 0 -0.142959 0 -0.000961413 0 0 -0.0026903 0 0 0 -2.17091e-05 0 0 0 0 0 0 0.210081 0 -0.0721606 0 0 0 0 -0.375386 -0.063764 0 0 0.158609 0 0.0111213 0 0.00433748 0 0 -0.115255 0 -0.357708 -0.112308 0.10636 -0.0346862 0 0 0.0125172 0 -0.28996 0 -2.48087 -0.8623 0 -0.850061 -1.07183 0.00754887 0 -0.0474744 0 0 0.00834234 0 -1.15494 0.216498 0 0 -0.009608 0 0 0.0982281 -3.80243 -0.365162 0 0.192755 0 -1.31559 0.0678666 -0.0150679 -0.164263 -0.066934 -1.14689 0.20063 0.0334439 -0.453967 -3.1979 0.0167248 0 0 0 -0.0374515 -0.0143676 0 0 0 0 -0.0333395 11.0617 -1.45171 4.49866 -0.12023 -0.058344 0.863478 0.0264951 -0.0108544 -0.104018 0.437539 0 0 0 0 0 0 +367 0 0.677949 0.51917 0.000188098 0.00326008 0.0128981 0.20683 0.0741336 0.605882 0.00129364 0.0970012 0.011739 0.90206 -1.96575e-06 1.7943 -0.00126837 2.04052 5.46429 0.0236279 -0.00120655 4.32726 0.0029433 -0.355833 2.53777e-06 0.0435136 -0.283071 0.814604 0.000790699 -0.40969 -0.210171 0.47633 5.93117e-05 -0.0358471 -0.379717 -0.0425604 -0.237714 0.000406606 0.0526793 -0.30419 0.00908504 2.40045 -4.59427e-05 -0.1986 0.000381363 3.80118 -0.00100205 1.25184 -0.437796 -0.0330776 -0.000879741 1.47015 0.115305 -0.46319 0.00173271 -0.00158805 -0.0347664 -2.55959 0.152424 0.15872 -0.0408926 8.43486e-05 -0.150803 -4.19515 1.07978 2.56619 0.0543962 1.25111 -0.134279 0.0408951 -9.20318e-05 0.0486448 -0.0287248 0.00130456 -0.0355245 -3.27261 1.64561 0.498365 1.05424 -0.576421 -0.913121 -0.166244 -0.176542 -0.292037 -0.146916 0.0720849 -0.29628 0.0227232 2.73285e-05 -0.00020729 0.00369872 -0.0250433 0.349327 0 0 0 0 0 0.000188098 0.00326008 0 0 0 0 0 0 0 -0.000774075 0 0 0 0 -0.000187562 0 -2.64385e-05 0.000477215 -0.00548183 0 0 0.0107583 0 0 -0.000151642 0.0876631 0 0 0.00131893 0.00830959 0 -0.00221184 0 0.000301476 0 0 3.54191e-05 0 0 -0.00636381 0 0 0 0 0 0 0 0.00227297 0 0 -0.00415849 0 0 0 0 0 0 0 0.0021625 0 -0.0271508 0 0.000647593 0 0 6.02617e-05 0.00791986 0 0.00396298 0 0 0 0.0145736 0 0.00631611 0 0 0.000274255 0 0 0 0.000236245 0 0 0 0 0 0 0.0128981 0 0.20683 0 0 0 0 0.0785449 -0.421043 0 0 -0.168809 0 -0.00798327 0 -0.0070753 0 0 0.49284 0 -0.9102 9.77314e-05 -0.0445424 0.0532527 0 0 -0.097625 0 1.37735 0 -4.06132 0.256759 0 0.0920208 -1.52922 -0.00232295 0 0.00293022 0 0 -0.0318092 0 1.01387 0.730609 0 0 0.0583515 0 0 0.0610921 -3.28202 -0.0783788 0 0.0272072 0 -0.115046 -0.0948953 0.0568554 -0.0360058 -0.0519439 -1.36029 -0.365621 -0.0346255 0.431416 5.80873 -0.0155974 0 0 0 -0.0013418 0.0129248 0 0 0 0 0.0173249 23.9654 1.12372 1.38091 0.410103 -0.692007 1.77795 0.0274487 -0.0647498 0.0216833 0.0321162 0 0 0 0 0 0 +368 0 0 0 0 0 -0.222114 -0.278755 0.760551 0.974733 0 0 -0.350472 -2.16724 0 -1.61211 -0.071299 0 0 0 -0.185391 6.90311 0 0 0 0 0.0684013 0 0 0.688325 3.68655 -1.04951 0 -0.341081 0 0 0.198901 -0.0596346 0 0 -1.24414 1.1621 0 0 -0.360332 -3.16538 0 -0.791652 1.29618 -0.49178 0.607996 -2.23453 0.521123 0 0.0437203 -0.200458 0.185967 3.36658 0.617345 -0.00572223 0 0 -2.05485 2.75903 0 1.06146 0.9572 -0.377681 0 0 0 0 -0.0235906 -1.2394 0 1.21155 -0.325135 0 0 0 -2.31917 0 1.98233 -6.85487 0 0.995322 -0.272191 -4.9655 0 1.18454 -0.497293 2.70886 -11.7436 0 0 0 0.133599 0.0385165 0 0 0 0.0929996 0.00255786 0 0.012942 0 0.000286795 -0.000966453 0 0 0 0 0.0768181 0 0.00609738 0 0.0282138 0 0.600844 0.406014 0 -0.0041633 0 0 -0.199334 0.000447999 0.0932285 0 0.000142558 0 0.000672677 0.0369997 -0.0298931 0.00756008 0.0156843 0 1.76278e-05 0 0 0 2.56822e-05 0 0 -0.000246099 0.00250092 -0.0854656 -0.00587109 0 0 -0.00943299 0 0.000586722 0 0 0.00752877 0.00122696 -0.11203 0.00335727 0 0 0.0180683 -0.0476402 0.00333753 -0.150928 -0.147825 0 0.140483 0.00621002 -0.0487874 0 0 0 -0.0455271 0 -0.00687042 0.185148 0 0.000391887 -0.000812084 -0.011769 0 -0.000420504 0.00239393 -0.00365127 0.119199 0 -0.222114 0.133599 -0.278755 0.0385165 -0.509855 -0.0200174 0.0648052 0.755734 -0.798444 -0.0417739 0.00646191 -0.305873 -0.00598992 -0.0527417 0.0350161 -0.0435139 -0.0341943 -0.292415 2.19116 1.3662 0.357038 0.452989 -0.000780114 0.297609 0.132727 0.175277 -0.477559 0.0581554 9.53793 -0.0710952 0.276927 0.645384 0.00662213 2.44636 0.385414 -0.00235682 -0.00150722 0.168618 -0.0159792 1.40234 -0.0755793 0.0156049 3.22013 4.48048 -0.00480528 -0.00765673 0.725279 0.324232 0.127995 -0.00942177 1.27143 -0.302347 0.0408534 -3.37727 -0.0118105 0.651836 0.0302821 -0.10216 0.254918 -0.486845 -1.31518 -0.860264 0.35088 1.47789 -4.17229 -0.33573 -0.86165 -0.0738622 -0.364251 -0.319875 0.0957845 -0.0559236 0.0762945 0.321694 0.0150279 0.334529 -1.42937 0.74347 -8.16578 0.70916 0.28377 -4.76708 0.0987374 -0.0197461 -0.0143148 -2.42352 0.0960815 -0.0250566 -0.012612 0.0845508 -1.32634 0 +369 0 0 0 0 0 -0.53786 0.215479 -0.962523 -0.250714 0 0 0.262915 0.922264 0 1.4397 0.0749047 0 0 0 0.177389 -1.14946 0 0 0 0 -0.446348 0 0 -0.926974 -4.25998 0.293051 0 0.589551 0 0 -0.418085 0.0425209 0 0 0.65024 -1.18239 0 0 0.156403 4.05913 0 -0.280389 -2.06278 0.961385 -0.310794 1.42527 -0.0606203 0 -0.290525 0.234979 -0.774621 -2.00339 -0.0999793 -0.0960301 0 0 -0.305804 1.47216 0 0.634942 -0.823125 0.704785 0 0 0 0 -0.255234 0.463967 0 -0.94986 1.89659 0 0 0 2.13344 0 -1.03451 7.14312 0 -0.0526578 0.0579321 5.10046 0 -0.456895 0.958974 -2.54918 13.089 0 0 0 -0.0599627 -0.0130704 0 0 0 -0.0356818 0.00444491 0 -0.00519964 0 -8.46809e-05 0.0148106 0 0 0 0 -0.0100366 0 0.000241152 0 0.0927679 0 -0.220948 -0.148482 0 0.00249809 0 0 0.129198 -0.000258267 -0.027009 0 0.000285341 0 0.000168236 -0.0224353 0.0174762 -0.0039343 -0.00439518 0 -5.42872e-06 0 0 0 1.60148e-05 0 0 0.000483681 0.000460134 -0.000836656 0.0039929 0 0 -0.00182549 0 -0.000726737 0 0 0.0128521 -0.00292711 0.0570745 -0.00960053 0 0 -0.0043542 -0.0308994 -0.000977814 -0.0204637 -0.00885048 0 -0.0181142 0.000200257 0.0353083 0 0 0 -0.0969655 0 0.00346608 -0.114216 0 -0.000287998 0.000313143 -0.0632883 0 0.00027475 -0.00093682 0.00176972 -0.0946288 0 -0.53786 -0.0599627 0.215479 -0.0130704 -0.0520506 0.131638 -0.103279 -0.0202073 1.02794 0.00979462 -0.00552861 0.257451 0.00162685 0.0393671 -0.0169041 0.0557175 0.0409742 0.0542773 -0.772894 1.26231 0.160934 -0.142342 0.161326 -0.110644 0.0847672 -0.287582 0.571861 0.0318493 2.16935 0.154612 -0.232967 0.484437 -0.00240028 0.126258 0.110461 0.0205472 0.00743352 -0.0735584 0.0482301 -1.19155 0.102975 -0.059693 0.871084 -0.546337 0.00518314 0.0275668 -0.0642765 0.201242 0.0191027 -0.996695 1.13512 0.456938 -0.0512689 2.03767 0.030242 0.405101 0.135893 -0.37654 -0.300941 0.623187 1.31259 0.479689 -0.209752 -0.352092 6.96335 0.156759 0.125294 0.0841032 0.568171 0.470226 -0.088314 -0.0945051 -0.0204291 -0.118843 -0.132135 -0.202928 1.20247 -0.625793 2.89308 -0.101803 -0.514509 4.92432 -0.0512962 -0.166091 0.375156 1.26675 -0.0178344 -0.12151 0.339416 -0.268496 1.34534 0 +370 0 0 0 0 0 0.0248246 0.323548 -1.51158 -4.53323 0 0 -0.132536 0.882743 0 0.405311 0.00573752 0 0 0 0.527249 -0.175078 0 0 0 0 -0.913521 0 0 -0.417735 -3.39078 0.174716 0 0.207212 0 0 -0.335698 -0.0156492 0 0 -0.710069 0.0754875 0 0 -0.296868 4.75235 0 0.298333 -0.99282 2.77917 0.347032 -2.74314 -0.032257 0 -0.671238 0.455935 -0.342878 -0.19555 -0.223388 0.948368 0 0 2.40476 -1.86576 0 0.125085 0.692748 1.14143 0 0 0 0 -0.117702 -1.24973 0 -1.89618 0.172072 0 0 0 11.1199 0 0.987625 8.91918 0 0.879799 -0.447868 13.2142 0 1.00867 -0.00337141 0.367027 12.1873 0 0 0 -0.009016 0.0388349 0 0 0 0.0555409 0.0522454 0 0.00703575 0 0.000138309 -0.013982 0 0 0 0 -0.0410869 0 -0.00386228 0 -0.186759 0 0.406671 0.525754 0 -0.000663633 0 0 0.0985974 0.000258971 0.113828 0 0.00168431 0 0.00323229 0.126166 0.000718391 0.00289 0.0273834 0 1.17498e-05 0 0 0 0.000104107 0 0 -0.00159495 0.00260609 -0.119001 -0.000552086 0 0 -0.00357781 0 -0.00662285 0 0 0.0490371 0.000348706 -0.0771917 -0.00652817 0 0 -0.0664121 0.0233481 0.00256213 0.0778721 -0.099069 0 -0.0232746 0.00899304 -0.133671 0 0 0 0.191935 0 -0.0013949 -0.115434 0 0.000727763 -0.0026185 0.0331346 0 -0.000559183 0.00238373 -0.00374148 -0.0837445 0 0.0248246 -0.009016 0.323548 0.0388349 0.233596 0.0593722 0.202798 -0.489025 0.859266 -0.0480528 0.0676463 -0.0906078 -0.00678386 -0.00542994 0.0494364 0.0389975 0.038885 -0.333022 -1.14363 -0.489769 0.121373 -0.245506 0.0305205 -0.127252 0.686108 -0.183164 0.224938 -0.0166024 -1.33332 0.223884 1.75313 0.109705 0.0080345 -1.20098 0.350653 0.0111455 0.00051253 -0.091473 0.0143548 -1.30057 0.12739 -0.0267945 -0.903861 -0.809803 0.00286865 0.0180857 -0.12879 -0.0929528 0.141594 -0.659838 0.806049 -0.376948 -0.159627 -0.0219586 -0.071656 -0.195698 0.208328 -0.0577125 -0.221862 0.441641 1.85815 0.297823 -0.0488261 -0.158933 5.84773 -0.10112 0.195866 -0.0607795 0.10918 -0.000278572 0.00764118 -0.0558812 0.0994969 -0.0971408 -0.0577836 -0.255804 -9.04884 -0.0568499 3.64118 0.571433 -0.200519 3.18012 0.0701047 0.0142559 0.0121237 1.84535 0.109424 -0.0522576 0.234901 -0.285284 1.65537 0 +371 0 -0.0378871 -0.0118266 0.0654118 0.220128 -0.278082 -0.00485897 0.236588 1.84495 0.426128 -1.05553 0.430095 0.83904 -0.0124556 1.23532 -0.0194702 1.8735 10.0563 -0.0917083 -0.0654713 -2.77729 0.0158011 0.164701 0.0160615 -0.304975 0.393132 0.267337 0.105888 -0.423098 -2.06586 0.589816 0.0894325 0.0440062 0.39327 0.708373 0.0794432 0.0660026 0.422829 1.84731 0.860643 -0.819537 -0.0707041 2.80605 0.15232 1.79212 -0.353046 0.120953 -0.980793 -0.00160804 -0.385421 2.56831 -0.521254 -2.29398 0.0895229 -0.100458 0.159199 4.63711 1.02489 0.679935 0.413856 0.137743 1.37203 -1.35087 0.799988 -1.69059 -1.5425 0.802552 0.819392 0.721603 -0.144056 1.09788 -0.30109 0.717823 -0.759479 1.43207 -0.224554 -1.35984 -2.94274 4.87405 -7.57297 2.50304 -1.57472 -1.66898 0.834212 -0.811147 1.38416 -2.36641 0.215263 -0.438557 1.05196 -2.06001 4.94049 0 0 0 0 0 0.0654118 0.220128 0.00021445 0 0 0 0 1.05188e-06 0 -0.00347251 0 0 3.50647e-05 2.48928e-06 0.00775142 0 8.76614e-05 0.0800549 0.00529145 0 0 0.286932 1.74665e-07 0 -0.00565372 1.3746 0 0 0.0286859 0.316474 0 0.00373982 0 0.0587876 0 0 0.0046681 0 0 0.00684581 1.49912e-05 0.000499732 0 0.00305628 -0.00176514 0 0 0.0110774 0 0.000437068 -0.0357719 -0.000481389 0 0 -7.14649e-05 -0.00036939 0 0.00138432 8.4676e-06 3.65691e-05 -0.370363 -0.00125154 0.01948 0 0.00199062 -0.0436684 -0.0335696 4.10523e-05 -0.0292479 0 0 0 -0.0208035 -0.00318408 -0.00609861 0.00248374 -0.00285695 -0.0111483 -4.42537e-05 5.09034e-05 -6.1258e-05 -0.00260443 0 0 0 0 0 0 -0.278082 0 -0.00485897 0 0 0 0 0.153001 1.44782 0 0 -0.564667 0 -0.0697843 0 0.0581077 0 0 -1.46232 0 0.352887 0.0724066 -0.254917 -0.162984 0 0 0.55954 0 -3.56912 0 3.00755 -0.107451 0 0.811033 0.8397 -0.0325578 0 0.00567203 0 0 0.150809 0 -1.22812 -2.79516 0 0 -0.2786 0 0 -1.06181 -2.74086 -0.220524 0 1.45516 0 -1.45796 0.148677 0.0756099 0.726616 -0.248079 -1.7259 0.913544 0.100893 -0.205131 6.4251 -0.0654493 0 0 0 0.591703 0.0806253 0 0 0 0 -0.329429 -20.1129 2.15371 -6.64538 -0.0729964 0.268116 -2.17272 0.0809478 -0.0360839 0.219142 -0.544963 0 0 0 0 0 0 +372 0 -0.78307 0.281484 -0.0205952 -0.0761514 0.0264565 0.0718604 -0.300781 -1.49367 -0.142393 0.983074 -0.0981888 0.0159209 0.00390962 0.15471 0.000749163 2.91089 10.5509 0.217806 0.0241549 2.58819 0.0521158 -0.231593 -0.00505381 0.25504 -0.4327 0.872814 0.0727269 0.323972 0.684788 0.0142272 -0.0286793 -0.053126 -0.283443 0.175309 -0.0231854 -0.0163351 0.367498 1.19103 -0.169574 1.41447 0.0216259 0.770346 -0.0357923 0.921525 0.102155 0.596292 0.479919 0.0400019 0.0898022 1.65056 0.509106 -4.58996 -0.0391426 0.0314903 0.00378108 1.89358 0.213567 0.21273 -0.402263 -0.0417961 0.338991 -2.45847 1.34168 2.26674 -0.56247 -0.338587 -1.10873 0.482956 0.0481348 -0.465512 0.0688555 -0.0681741 -0.348351 -0.659992 -0.173353 -0.669456 1.65724 -3.52743 5.82345 -1.97955 1.07052 -0.690748 -0.711803 0.653083 -1.35605 2.46832 -0.0622874 0.102675 -0.33092 0.54449 -1.63766 0 0 0 0 0 -0.0205952 -0.0761514 5.49153e-05 0 0 0 0 2.64726e-07 0 0.00864645 0 0 1.82867e-06 2.97137e-07 0.0032197 0 0.00100817 -0.0199241 0.0411097 0 0 -0.0319095 2.08492e-08 0 0.00856582 -0.16535 0 0 -0.00693408 -0.06377 0 0.0476487 0 -0.0111948 0 0 -0.00126307 0 0 0.348835 3.7728e-06 2.60617e-05 0 0.000782638 -0.000466203 0 0 0.0169735 0 0.000111922 0.0162786 -0.00012781 0 0 -3.72699e-06 -9.45916e-05 0 0.000307802 0.0690415 -1.0502e-05 0.283748 -0.000384766 -0.0283057 0 0.000530437 0.026079 0.176764 -4.75414e-05 -0.0199186 0 0 0 -0.658389 -0.000685518 -0.0890992 0.000592903 -0.000681995 -0.147802 -2.30789e-06 2.65468e-06 -3.19468e-06 -0.0172453 0 0 0 0 0 0 0.0264565 0 0.0718604 0 0 0 0 -0.342582 -0.478334 0 0 0.147075 0 0.0277555 0 -0.014641 0 0 0.477741 0 -0.624526 -0.13242 0.0733122 0.0830028 0 0 -0.159028 0 2.63616 0 0.0192484 0.0504608 0 -0.64888 -0.679217 0.0107242 0 -0.0697277 0 0 -0.0378104 0 0.596113 1.63005 0 0 0.245431 0 0 0.214692 1.02011 0.553173 0 -2.54038 0 1.34009 0.0215365 -0.0677667 -0.59374 0.224635 0.973817 -0.658927 -0.10154 1.14796 -3.18994 -0.0166275 0 0 0 -0.146828 -0.0738067 0 0 0 0 0.102972 15.3217 -0.363219 5.96699 -0.239663 0.25025 0.711143 -0.107953 0.0470534 0.0125462 0.315865 0 0 0 0 0 0 +373 0 0.212684 -0.217141 0.0397856 0.123816 -0.130029 -0.30778 0.457709 0.876241 0.247077 -0.620278 0.107853 0.45027 -0.00759373 0.518237 -0.0050023 0.195439 -0.136534 -0.288071 -0.0174793 -2.33906 0.011179 0.451508 0.00977391 -0.0984853 0.747021 -0.0185251 0.0503931 0.468043 -1.33642 0.0449296 0.0536287 0.0811166 0.553127 -0.12855 0.391705 0.0193601 0.402749 0.00748926 0.580848 -1.16453 -0.0439402 1.33319 0.0985335 -0.69335 -0.227987 -0.85268 0.0309113 0.186456 -0.249213 2.21231 -0.602629 1.44224 0.00883117 -0.0339326 0.172201 2.75632 0.314584 0.126478 0.183714 0.0860951 0.633756 0.560491 -0.545715 -0.223177 -1.07876 0.58451 0.403723 0.556663 -0.0835305 -0.251823 -0.0621014 0.490719 -0.529168 -0.0890748 -0.661684 -1.54726 0.709329 2.53383 -3.44702 1.14107 -1.04182 1.4514 0.322006 -0.420345 0.667992 -0.488161 0.139011 -0.29085 0.680044 -1.36145 3.19604 0 0 0 0 0 0.0397856 0.123816 0.000304793 0 0 0 0 1.49804e-06 0 0.0151036 0 0 5.45015e-05 3.75996e-06 0.0199185 0 0.00237914 0.0379132 0.118669 0 0 -0.119248 2.63825e-07 0 -0.0234844 0.0957954 0 0 -0.0303916 0.100369 0 -0.0827609 0 -0.00314342 0 0 -0.00351562 0 0 -0.119794 2.13497e-05 0.00077674 0 0.00434382 -0.00250817 0 0 -0.0993528 0 0.000621195 -0.195781 -0.000682468 0 0 -0.000111079 -0.000525005 0 0.00200175 -0.0160337 6.88174e-05 -0.378881 -0.001758 0.0303085 0 0.00283154 0.00618024 -0.0766391 2.7611e-05 0.0484428 0 0 0 0.214069 -0.00462223 -0.094549 0.00356897 -0.00410526 0.0381704 -6.87841e-05 7.91199e-05 -9.52141e-05 -0.0501789 0 0 0 0 0 0 -0.130029 0 -0.30778 0 0 0 0 0.176403 1.06984 0 0 -0.186396 0 -0.0266468 0 0.0335589 0 0 -0.570529 0 0.71256 0.0278453 -0.0744009 -0.0606012 0 0 0.322468 0 -4.32961 0 0.188134 -0.525029 0 0.192461 0.71143 -0.00515114 0 0.0149842 0 0 0.107132 0 -1.3746 -2.07004 0 0 -0.242552 0 0 -0.317525 -1.68843 -0.157387 0 1.46956 0 -0.985809 0.144327 -0.0195488 0.510129 -0.136529 -1.16258 0.634391 0.0066152 -0.957117 0.719843 0.0203616 0 0 0 0.295274 0.0263646 0 0 0 0 -0.251598 2.09313 1.19181 -0.795339 -0.272268 0.160333 0.26969 0.0152445 -0.0229327 0.0949629 -0.0573149 0 0 0 0 0 0 +374 0 -0.635925 0.0737646 -0.00690006 -0.0567039 -0.0807792 0.222575 -0.977349 -0.189553 -0.0580225 -0.553796 -0.213167 1.38878 0.000450038 2.07937 0.0106896 -0.672711 -0.576762 -0.155218 0.0145264 -0.512942 -0.0189194 -0.104909 -0.000271 -0.0829163 -0.0735403 -0.179544 -0.0351898 -0.510188 -0.180692 0.611771 -0.00417133 0.246093 -0.280452 -0.347566 -0.211836 -0.0176265 -0.101772 0.00888207 -0.564073 0.152618 0.00763932 -1.20324 -0.0430436 5.81621 0.122317 0.564795 -0.597481 0.296859 0.142752 -0.521079 -0.0804916 -0.136591 -0.045189 0.0268065 -0.141565 -2.07941 -0.0581133 0.0507545 0.103732 -0.02491 0.816298 -0.803813 0.650344 -0.281594 0.257392 0.653787 -0.0392197 -0.100909 0.0116863 0.132865 -0.370025 -0.0697637 -0.0173649 -1.07877 0.461169 0.235789 6.7285 4.07006 1.24594 1.85358 0.391215 1.80581 0.302568 -0.516046 1.078 1.26167 -0.00627777 0.0402036 -0.227142 1.03086 0.684789 0 0 0 0 0 -0.00690006 -0.0567039 0.00246289 0 0 0 0 0.000230969 0 -0.0183089 0 0 0.0012377 0.0013633 -0.00384882 0 -0.00134855 0.00567851 -0.0657484 0 0 0.265641 9.38079e-05 0 0.00094286 0.770768 0 0 0.0356497 0.077694 0 0.0148044 0 0.020125 0 0 0.00268375 0 0 -0.152478 0.00325736 0.0184192 0 0.032804 0.00519875 0 0 -0.0542363 0 0.00467998 0.0306961 -0.00455226 0 0 -0.000888742 -0.00315109 0 0.0162603 -0.00911336 -0.00441478 -0.429943 -0.00466233 -0.01034 0 0.0140648 -0.0199359 -0.104729 0.00646718 -0.0432674 0 0 0 0.279693 -0.046321 0.126635 0.0243507 -0.0267484 0.0145213 -0.00124293 0.00150313 -0.00236851 0.011287 0 0 0 0 0 0 -0.0807792 0 0.222575 0 0 0 0 -0.0016368 -0.128705 0 0 0.164659 0 0.0229783 0 0.027086 0 0 -0.546315 0 0.0395897 0.0134143 0.193425 -0.064295 0 0 0.216005 0 -3.60731 0 3.46487 0.122283 0 0.366259 0.959481 0.0252394 0 -0.015928 0 0 -0.00415699 0 -0.596359 -0.403077 0 0 -0.0272357 0 0 -0.300758 -0.00627134 -0.0747821 0 1.25175 0 -0.633619 0.0738698 -0.0308911 0.297038 -0.117973 0.19074 0.391418 0.164526 0.051722 5.67648 0.157552 0 0 0 0.14713 -0.0770199 0 0 0 0 0.00761115 -21.605 -0.552459 -4.13611 -0.507366 0.287161 -1.45306 -0.0446019 0.0340547 -0.0359708 -0.194875 0 0 0 0 0 0 +375 0 -0.659931 0.20295 -0.00426132 -0.0409871 -0.113102 -0.066126 0.295688 -0.316416 -0.0867331 0.391555 -0.0178565 -0.135951 -4.83888e-05 -0.431999 -0.0220592 0.224373 3.34247 0.0832211 -0.0273748 1.23917 -0.00341043 -0.393906 -0.000352673 0.0230964 -0.0523546 -0.183879 -0.00360666 0.42229 0.731886 -0.18042 -0.00584597 -0.454959 -0.716952 -0.0125554 0.177222 -0.000955592 -0.0404499 -0.0427044 0.0524865 0.309987 -0.00119412 0.094612 0.00193648 -0.272496 -0.027773 -0.225045 0.636134 -0.591475 -0.00464748 -0.598147 -0.316715 -0.626292 0.103277 -0.0226154 0.144633 -0.0435475 -0.169308 -0.010876 0.0106883 0.00328971 -0.742241 -0.233742 -0.589503 -0.309481 0.0212072 -0.210986 -0.134219 0.0415444 0.0228999 -0.187686 0.0320542 -0.30177 -0.0558031 0.282681 -0.74094 -0.0935071 1.2625 0.314847 -2.22865 0.426574 -0.612047 -2.52309 -0.0619439 0.157613 -0.443325 -1.61712 0.00142541 -0.00718873 0.0338456 0.0544896 -2.77371 0 0 0 0 0 -0.00426132 -0.0409871 -0.00101332 0 0 0 0 -1.63348e-05 0 0.00611368 0 0 -0.000609907 -0.000215658 0.00174547 0 0.000189027 -0.00675776 0.0431828 0 0 -0.076683 -1.41301e-05 0 -0.00583956 -0.476285 0 0 -0.00822578 -0.0560674 0 -0.0534296 0 -0.0038322 0 0 -0.000265825 0 0 -0.170165 -0.000195425 -0.00891631 0 -0.0131551 -0.0305593 0 0 -0.00285292 0 0.00263313 -0.061183 -0.00313898 0 0 0.000722771 0.00273596 0 0.00391834 -0.0290987 0.00330025 0.250432 -0.0139844 -0.0143003 0 0.00842035 0.015851 0.0604318 -0.00375133 0.0214617 0 0 0 0.17557 -0.00285879 -0.0472069 0.0134743 -0.0173093 0.00167405 0.000665533 -0.000789757 0.00112907 -0.00916998 0 0 0 0 0 0 -0.113102 0 -0.066126 0 0 0 0 -0.286664 -0.672897 0 0 -0.0243465 0 0.000448298 0 -0.042563 0 0 0.701101 0 -0.403019 -0.135939 -0.121357 0.0796198 0 0 -0.469282 0 3.05566 0 -0.648721 -0.059191 0 -0.722827 -0.759014 -0.0162481 0 -0.0600286 0 0 -0.0506938 0 0.439404 1.5211 0 0 0.174798 0 0 0.674075 -0.377091 0.227356 0 0.47844 0 0.390059 -0.0430351 -0.156573 -0.126844 0.155493 -0.317519 -0.662888 -0.0841006 -0.481551 -1.5469 -0.141354 0 0 0 -0.249907 0.00568948 0 0 0 0 0.0951535 14.487 0.348175 4.64199 0.0514873 -0.00228049 0.753381 -0.0776971 0.0715017 -0.0384363 0.439098 0 0 0 0 0 0 +376 0 0.859079 0.91195 -0.0119723 -0.168251 0.349434 0.300523 0.0382194 -1.24891 -0.135868 -0.115404 -0.34948 -0.40654 0.000518669 0.603355 -0.0106527 3.30445 14.6332 0.023365 -0.0176205 4.61484 0.00881581 -0.645606 -0.000529212 -0.0154384 -0.484449 1.06078 0.0415627 -0.0351518 2.38021 -0.0344531 -0.00882536 -0.246201 -1.91187 0.280668 -0.100819 -0.025063 0.364447 -7.64316 -0.757415 1.72279 0.00880501 1.14466 -0.0537373 2.73553 0.141245 0.67104 0.680873 -0.498109 0.205991 -0.214949 -0.0451412 -8.45897 0.0780517 0.00525324 0.0250469 -2.08306 0.21639 -0.309378 -0.0472958 -0.0309457 -3.9169 0.22311 -0.738853 -1.07368 -0.541463 -2.71298 -0.32327 0.494507 0.0310263 -0.389957 0.354252 -0.498723 -0.439688 -0.210167 -0.667665 -0.575113 33.2283 3.47773 5.78857 2.54139 -0.0969634 1.34924 0.0665886 -0.13158 0.88806 -4.10974 -0.00724921 0.0491465 -0.328726 1.93589 -9.02052 0 0 0 0 0 -0.0119723 -0.168251 0.00374596 0 0 0 0 0.000291278 0 -0.0208284 0 0 0.00131423 0.001644 -0.00372646 0 -0.0016517 0.00814916 -0.0399641 0 0 0.295304 0.000111967 0 0.00441716 0.772919 0 0 0.0299771 0.0971573 0 0.029763 0 0.0224745 0 0 0.00254848 0 0 -0.225101 0.00412502 0.0193435 0 0.0541645 0.017575 0 0 -0.116669 0 0.00486758 0.0147711 -0.00589159 0 0 -0.00275109 -0.00528274 0 0.0215468 0.000863426 -0.00466845 -0.292067 0.00610091 -0.00815249 0 0.020102 -0.0162804 -0.141428 0.0301154 -0.034421 0 0 0 0.526087 -0.05205 0.0914738 0.0258384 -0.026443 0.0315951 -0.00181805 0.00208473 -0.00235418 -9.72763e-05 0 0 0 0 0 0 0.349434 0 0.300523 0 0 0 0 -0.466375 -0.359679 0 0 0.22451 0 0.00985978 0 -0.019977 0 0 1.31793 0 -1.33855 -0.18669 0.0869092 0.166037 0 0 -0.214155 0 8.59661 0 -7.47131 0.713236 0 -1.4779 -2.79773 0.00578992 0 -0.056625 0 0 -0.024619 0 2.71695 2.97401 0 0 0.372598 0 0 0.799931 1.2309 0.281575 0 -2.03112 0 0.822797 0.00891735 -0.156744 -0.467558 0.0507121 0.156848 -0.718763 -0.06438 -0.0311188 -8.93027 -0.12599 0 0 0 -0.342939 -0.00594164 0 0 0 0 0.060992 45.9252 -0.285552 11.2727 0.528992 -0.289782 3.27779 -0.0827155 0.0976656 -0.149858 0.818985 0 0 0 0 0 0 +377 0 0 0 0 0 0.265474 0.328753 -1.83648 -4.23157 0 0 -1.01592 0.854608 0 0.145109 -0.229051 0 0 0 -0.134462 1.26692 0 0 0 0 -0.857952 0 0 -0.185128 5.9897 0.23871 0 -0.842943 0 0 -0.443692 -0.112793 0 0 -3.14543 2.32462 0 0 -0.530394 2.51546 0 1.2903 1.17583 0.502943 1.096 -4.11588 0.59151 0 -0.395844 -0.657167 0.156928 -2.17953 -0.582207 1.44108 0 0 0.324733 -5.17825 0 0.635966 1.37717 0.0415923 0 0 0 0 -0.264701 -3.12894 0 0.81452 0.612921 0 0 0 5.97981 0 4.05793 -6.01919 0 2.43327 -4.59683 9.60214 0 2.84554 -5.06615 9.49194 -16.8799 0 0 0 0.328827 0.105612 0 0 0 -0.0607973 0.115855 0 -0.00574861 0 -0.00544513 -0.181202 0 0 0 0 -0.276047 0 -0.0709482 0 -0.751824 0 -0.565408 -0.143659 0 -0.00158418 0 0 0.048218 -0.00128186 -0.0643439 0 0.0114466 0 0.00642572 -0.00136871 -0.0131964 -0.0299422 -0.0192551 0 -0.000200242 0 0 0 0.000623907 0 0 0.00504147 0.00362349 0.556242 -0.0759146 0 0 -0.0092578 0 -0.0163898 0 0 0.060498 0.0237688 0.103174 0.0524751 0 0 -0.0842218 -0.029555 0.00941292 -0.457924 0.155484 0 -0.40058 0.000837591 -0.0581899 0 0 0 2.49977 0 0.128668 0.22093 0 0.00737092 0.0242958 0.779022 0 0.00195293 -0.000140051 0.0345533 0.181538 0 0.265474 0.328827 0.328753 0.105612 -0.7731 -0.187851 0.265088 0.0736032 -1.40773 -0.155279 0.0682052 -0.844954 -0.0251413 -0.169487 0.0862547 -0.0707711 0.0633265 -0.889222 0.792643 -0.47119 -0.0665467 -0.015866 -0.0418722 0.0290001 0.80889 0.19264 -0.651913 -0.00311122 -5.40357 0.0299655 -0.662099 0.0764196 0.0165099 0.315226 -0.0339932 -0.0271958 0.00108028 0.00265635 -0.041006 1.13675 -0.104875 0.0293535 -1.24849 3.10129 0.00596596 0.0541175 0.20402 -0.0327692 0.389901 0.582567 -1.8604 -0.0804399 -0.352328 -0.82516 0.0512617 2.13373 -0.310507 0.331972 0.17884 0.000962249 -0.209532 -0.87296 0.0388224 1.34715 1.18288 -0.200407 -0.389159 -0.175433 0.142546 -0.687194 0.314329 -0.174386 0.324199 0.0987381 0.0216842 0.342548 2.69843 2.43809 -1.52986 2.23318 -0.4647 -1.7147 1.4994 -0.680773 0.0735566 0.39259 1.1312 -0.644455 0.248517 0.441543 -1.46404 0 +378 0 0 0 0 0 -0.0228417 0.288355 -0.152036 0.550008 0 0 0.0500033 0.93086 0 0.997661 0.0377831 0 0 0 0.220486 2.22593 0 0 0 0 -0.119848 0 0 -0.527646 5.21639 0.552818 0 -0.304443 0 0 -0.241728 0.0553082 0 0 -0.297008 1.97492 0 0 0.0508254 0.966794 0 1.23858 0.593873 -0.695001 -0.0334786 1.66122 0.603877 0 -0.371994 0.114724 0.319436 1.2103 1.1492 0.852942 0 0 0.0277345 -2.38863 0 1.29471 0.293037 0.129049 0 0 0 0 -0.146862 0.0185216 0 -1.46409 -0.992905 0 0 0 -0.976089 0 0.319068 -6.68213 0 -0.1596 -1.73775 -1.60484 0 -0.178057 -2.9002 4.34039 -18.3406 0 0 0 0.0853779 -0.000449365 0 0 0 0.0288106 -0.0190809 0 0.00542918 0 0.00292832 0.0848781 0 0 0 0 0.112908 0 0.025922 0 0.350893 0 0.17674 0.577627 0 0.0110209 0 0 0.337044 8.31539e-05 0.12036 0 0.00410905 0 -0.00138674 0.211105 0.0651639 -0.000148835 0.0423687 0 0.000170557 0 0 0 0.000180133 0 0 0.00270171 0.00223895 -0.0901083 -0.00617101 0 0 0.0362388 0 0.00738429 0 0 -0.0338968 0.0375457 0.373035 0.0574674 0 0 -0.220557 -0.038187 -0.0394493 -0.0174326 -0.0505409 0 0.318743 -0.00682958 0.299815 0 0 0 -0.951394 0 0.035665 -1.3289 0 0.0027708 -0.0830449 -0.406945 0 0.000470507 -0.0114131 0.041547 -0.775074 0 -0.0228417 0.0853779 0.288355 -0.000449365 -0.733522 -0.062008 0.0421672 -0.259873 0.206698 0.0150895 -0.015447 -0.0774988 0.00266535 -0.0202441 -0.0132883 0.000905736 -0.00817067 0.0977926 0.12538 -0.250184 0.0869806 -0.0452816 -0.094511 -0.0227343 -0.222765 0.25845 -0.16007 0.0184688 2.85393 -0.304569 -0.194074 1.0142 -0.00403518 -0.240599 0.0128161 -0.0239265 -0.00504629 -0.0365155 -0.0451576 2.09416 0.0428117 0.0293374 1.36872 -0.763919 0.00118987 -0.0284618 -0.119787 0.0475663 -0.112781 -0.741976 -0.227647 -0.866253 0.190307 -1.42692 0.0157451 0.179782 0.0451505 0.408312 0.307817 -0.110053 0.175183 -0.148344 -0.15835 0.653322 4.92487 0.0205134 -0.0839043 -0.0376582 -0.337895 0.332641 0.067344 0.0584768 -0.0290168 -0.149147 0.130487 -0.166283 0.790961 0.367874 -0.0386816 -0.0758379 0.409649 -3.96671 -0.056498 0.131727 -0.981799 1.14588 -0.124404 0.214767 -0.844715 1.21246 -2.98544 0 +379 0 0 0 0 0 0.245256 0.108231 0.328532 0.257944 0 0 0.198111 0.261692 0 -0.0337132 -0.0464708 0 0 0 -0.234998 -6.57714 0 0 0 0 -0.0671825 0 0 -0.361351 2.42219 0.0637079 0 0.05956 0 0 -0.0701834 0.0130899 0 0 -0.666936 -1.41437 0 0 -0.235457 0.421106 0 -0.225695 0.189493 0.2796 0.172208 0.346478 0.0192351 0 -0.438231 0.0423557 -0.132204 0.652376 -0.971186 -0.0667116 0 0 0.70033 4.06974 0 0.074223 -0.130742 -0.640591 0 0 0 0 0.503006 0.0644049 0 1.57329 -0.333513 0 0 0 -0.715115 0 0.430949 -1.65155 0 -0.206206 -0.104588 -2.4079 0 0.479575 -0.489499 0.532006 -4.54408 0 0 0 0.121684 0.0260315 0 0 0 -0.0369712 0.0165113 0 -0.00411862 0 -0.000942338 -0.031716 0 0 0 0 0.0198904 0 -0.0050958 0 -0.0835953 0 -0.343813 -0.239673 0 -0.00505018 0 0 -0.267452 1.13885e-05 -0.0449086 0 0.00240492 0 0.000770967 -0.117558 -0.0373628 -0.00260947 -0.0195438 0 -2.61207e-05 0 0 0 0.000122459 0 0 0.000484704 -2.51401e-05 0.138857 -0.0345682 0 0 -0.00706906 0 -0.00228186 0 0 -0.0529872 0.0127247 -0.231101 0.0245751 0 0 0.108363 0.0104319 -0.0284641 -0.364734 -0.750515 0 -0.246528 0.00678604 0.308025 0 0 0 0.469033 0 0.0280144 0.96274 0 0.00227203 0.0578345 0.247158 0 8.66455e-05 0.00871023 -0.0113325 0.549714 0 0.245256 0.121684 0.108231 0.0260315 -0.244397 -0.118263 0.197549 0.13682 0.331584 -0.0267475 0.0546604 -0.580945 -0.00512404 -0.0985139 0.0296 0.0221333 0.0329207 -0.104817 0.43804 -0.68827 -0.114957 0.0270742 -0.359356 0.0208354 0.320504 0.151671 0.186888 -0.00405325 5.39866 -0.280286 -1.32404 1.0248 0.00414128 0.265655 -0.550792 -0.0567885 -0.00266454 0.0167308 -0.0366004 1.15806 0.0474885 0.019589 2.50945 1.48291 0.00611637 -0.0188745 0.115823 -0.0710651 0.328186 0.385899 1.29027 0.369112 -0.072272 1.47209 -0.0210309 0.158181 0.393102 -0.299248 0.629218 -0.0604103 0.12289 0.811113 0.0249937 -0.454891 3.12977 0.048413 -0.468897 0.0307944 0.103886 0.275025 0.233834 0.0697677 0.0604296 0.0503147 -0.105002 -0.439584 5.39621 2.61618 -1.33056 1.05576 -0.311202 -0.53486 0.482906 -0.186313 -0.140544 0.351074 0.13334 0.0679342 -0.417517 0.707746 -1.58255 0 +380 0 1.16417 0.332912 0.16182 0.408542 -0.422139 -0.274573 1.47875 4.09854 0.1687 -3.44873 0.458521 -0.744203 -0.0481691 -0.180239 0.0586629 -0.182753 2.34904 -0.574031 0.00504501 -0.69793 -0.102149 -0.261527 0.0271021 -0.773714 0.802211 -0.317345 -0.0865096 0.371629 -0.166798 -0.263702 0.0975463 0.616282 -1.40424 0.328481 0.364521 0.104589 -0.0817753 -6.96033 1.03316 -0.710072 -0.212868 1.69016 0.259071 -1.39434 -0.774748 -0.451123 0.255653 0.759912 -0.282136 0.982509 -1.39724 -2.02264 -0.3716 0.264592 -0.289645 1.31035 0.181399 0.234999 0.810575 0.156048 -1.56069 -0.155004 0.87304 -2.51996 -0.396072 -0.196173 1.589 0.0625319 0.348199 0.653745 -0.325023 0.761988 -0.00827988 -0.156611 -0.350153 -1.46515 18.6336 9.42675 -7.82189 7.75778 -7.0127 10.4208 4.40011 -4.34495 5.80478 -7.55432 1.60908 -1.96824 1.73963 -2.28166 0.674479 0 0 0 0 0 0.16182 0.408542 0.00992717 0 0 0 0 0.00176903 0 0.00491752 0 0 -0.00159135 -0.0108395 -0.0219404 0 -0.0015164 -0.0754342 0.0396465 0 0 -0.414827 -0.000399417 0 -0.166643 -0.189371 0 0 -0.0439355 -0.140005 0 -0.494454 0 -0.0857837 0 0 -0.0083458 0 0 -1.56395 0.0350848 -0.0410297 0 0.194572 0.128665 0 0 -0.468198 0 0.0054471 -0.120705 0.0215158 0 0 0.00365756 -0.0264189 0 -0.00943897 -0.010553 -0.0471418 -1.13715 0.0722348 0.0256869 0 0.0389546 -0.133419 -0.00127089 -0.0431741 -0.296302 0 0 0 10.077 0.472034 0.491321 0.0470353 -0.104996 1.39454 0.00190216 -0.00450822 0.0556925 0.029419 0 0 0 0 0 0 -0.422139 0 -0.274573 0 0 0 0 0.0580865 2.98724 0 0 -0.889632 0 -0.102908 0 0.117364 0 0 -0.403077 0 -0.0262023 0.085076 -0.194735 -0.0269286 0 0 1.03345 0 8.51519 0 -2.22163 0.00772093 0 0.724267 -0.477459 -0.0255968 0 0.00689134 0 0 0.343413 0 1.61204 -1.26489 0 0 -0.112581 0 0 -0.24642 2.6256 0.438281 0 1.20213 0 -1.51849 0.74304 -0.660584 0.629566 0.195482 -0.030055 1.30198 -0.317612 -2.18283 -6.11994 -0.17413 0 0 0 0.466524 0.246049 0 0 0 0 -0.658295 10.0942 4.8357 -4.40466 1.55079 -1.5561 2.03738 0.495813 -0.506699 0.67927 -0.524674 0 0 0 0 0 0 +381 0 -0.236756 0.26014 -0.00282511 0.0462871 -0.292072 -0.0715095 0.313024 1.98074 -0.0344535 -0.451214 -0.0599382 -0.312161 0.00512252 -0.396482 0.0222454 0.708655 1.33483 -0.0798315 0.0628648 -0.561373 0.0194587 -0.355444 -0.00937265 0.0261706 0.258006 0.309987 -0.0277891 0.018507 0.114 -0.241706 -0.0255328 0.129592 -0.488269 -0.240763 -0.0461922 -0.012698 0.132098 -0.124027 -0.176789 -0.379294 0.0173423 -0.573283 -0.0156173 -0.505541 0.0539785 -0.200083 -0.0757325 0.218067 0.058533 0.414828 0.0259444 0.849833 0.0982696 -0.0531015 -0.134439 1.48309 -0.052507 -0.558447 -0.0251642 -0.0402628 -1.10002 1.61801 2.19596 -0.167196 -0.679779 0.125616 -0.353358 0.0572601 0.0802588 1.10414 -0.482014 0.025265 -0.622886 1.28553 0.582815 -0.330182 -0.565717 2.06701 -6.85438 -0.217013 -0.349199 0.479458 0.169114 -0.197335 0.860416 -2.83741 -0.112108 0.245969 -0.227519 0.489187 -0.46098 0 0 0 0 0 -0.00282511 0.0462871 -0.000661656 0 0 0 0 0.000416413 0 0.0407321 0 0 0.000483343 0.00775626 0.0677138 0 0.0107047 0.237862 0.249231 0 0 0.176452 0.00042834 0 0.0766872 2.53341 0 0 0.034363 0.821511 0 0.306351 0 0.0415648 0 0 0.00810645 0 0 0.990788 0.00860653 0.00705641 0 -0.00839089 0.108557 0 0 -0.0203845 0 0.0062879 0.60009 -0.0174545 0 0 0.00188503 0.00765298 0 -0.000167748 0.141837 0.000375328 0.265983 0.0886652 0.012845 0 -0.0269253 -0.138424 0.561998 -0.0972282 -0.312987 0 0 0 -5.60266 -0.12964 -1.16516 -0.0247223 0.0532533 -0.739498 0.000253544 -0.000899217 0.0101219 -0.29539 0 0 0 0 0 0 -0.292072 0 -0.0715095 0 0 0 0 0.285156 -0.489583 0 0 -0.189726 0 -0.00419192 0 -0.0164808 0 0 0.180109 0 -0.542505 0.104082 0.0338349 0.0378864 0 0 -0.0815993 0 -0.340921 0 0.0577134 -0.328604 0 1.19776 -0.485861 0.0125952 0 0.00818638 0 0 -0.068753 0 -0.164153 0.358854 0 0 0.0865676 0 0 -0.0420185 1.82174 0.38061 0 -0.580134 0 -0.984322 -0.0750137 -0.123661 -0.338922 -0.12563 0.523741 0.663023 0.0217371 -0.173115 -5.59886 0.106607 0 0 0 -0.116355 -0.0434795 0 0 0 0 0.285933 -0.242972 1.73328 -4.47089 0.661544 -0.638142 0.533941 0.083659 -0.106187 0.159382 -0.753324 0 0 0 0 0 0 +382 0 0.327854 -0.359101 -0.0132705 -0.0371744 0.0875353 -0.277088 0.500723 0.946955 -0.0326879 -0.675537 -0.817483 -0.479355 0.00411286 -0.482592 -0.103348 -0.134785 -0.179237 -0.0877956 -0.237289 1.28716 -0.0463602 0.579232 -0.00270361 -0.188381 0.460947 -0.260679 -0.0097919 0.813823 2.99294 -0.239944 -0.0107312 -0.693968 0.991993 -0.0974246 0.387432 -0.131177 -0.145526 0.902211 -1.10525 -0.361418 0.0164865 -1.09852 -0.181072 -1.17677 0.0471999 -0.660315 1.65498 -1.58461 0.405839 -0.412089 0.925924 -0.487953 -0.0165956 -0.746359 1.03653 1.07663 0.444764 0.52361 0.222029 -0.0136827 -0.0117679 -0.456272 -0.0113277 0.80168 0.444124 -0.653235 -0.168149 -0.12057 -0.0221096 0.615112 -0.0957254 -0.669458 -0.424045 -0.030615 -2.03805 -0.77611 -3.52127 0.250198 -0.944211 -1.23548 2.6735 -6.43346 0.828573 0.740862 -2.4874 2.32113 -0.0980296 1.20229 -3.20345 5.69348 -12.1025 0 0 0 0 0 -0.0132705 -0.0371744 -0.00140709 0 0 0 0 -0.000218231 0 -0.0227524 0 0 -7.72897e-05 0.000689175 -0.017115 0 -0.00323019 -0.0207647 -0.12665 0 0 -0.0841596 2.3296e-05 0 0.0675116 -0.32716 0 0 -0.00796291 -0.0910777 0 0.232756 0 -0.0120913 0 0 -0.00103111 0 0 0.453943 -0.00422499 -0.000615788 0 -0.0274763 0.00745056 0 0 -0.0302067 0 -0.000326931 -0.402173 0.00591358 0 0 -0.000438698 0.00364606 0 0.00489759 0.10578 -0.00444092 -2.36912 -0.0128041 -0.0368167 0 -0.0426305 0.0938781 -0.264353 -0.0865019 0.0283962 0 0 0 -2.82136 -0.0897702 0.294708 -0.0116874 0.0270377 -0.383921 -0.000103537 0.000302709 -0.00342871 0.108662 0 0 0 0 0 0 0.0875353 0 -0.277088 0 0 0 0 -0.468793 -1.18732 0 0 0.315704 0 0.043756 0 -0.0642453 0 0 0.191922 0 0.66567 0.0136314 0.437803 0.013566 0 0 -0.570232 0 -1.82394 0 1.06141 -0.440836 0 -0.0668232 0.911602 0.0555992 0 -0.0508698 0 0 -0.130301 0 -0.757262 0.125497 0 0 0.0079364 0 0 -0.0947043 0.269019 -0.443091 0 -0.878958 0 1.39358 -0.418261 0.461196 -0.299232 -0.0615681 0.247021 -0.823536 0.176886 0.794366 0.660889 0.0444912 0 0 0 -0.0810388 -0.080419 0 0 0 0 0.138067 -1.18771 -1.75404 2.07766 -0.754932 0.81575 -1.1862 -0.211982 0.193881 -0.22561 0.044295 0 0 0 0 0 0 +383 0 0.563238 0.451753 0.0913894 0.301953 -0.352286 -0.140437 1.2454 3.82515 0.285608 -2.77713 0.483494 -0.284906 -0.0196982 -0.390908 -0.0150882 1.27821 4.78564 -0.456951 -0.0635776 -2.20412 0.0062902 -0.356484 0.0152424 -0.36545 0.70795 0.398967 0.0693953 -0.127793 -1.29936 -0.203229 0.0811058 -0.0143922 -1.40467 0.0321579 0.194558 0.0681105 0.418575 -6.60688 1.12407 -1.2131 -0.130256 0.996933 0.180785 -1.15095 -0.818804 -0.673211 -0.508638 -0.187268 -0.541123 -0.0112364 -1.47797 -3.13124 0.165019 -0.4962 0.352705 0.977595 -0.0554436 -0.954111 0.667228 0.287097 -2.97667 4.01187 0.872695 -1.73912 -0.228671 0.887454 1.07038 0.272385 -0.00345327 0.999276 -1.40702 0.772968 -0.520634 0.0108536 -0.525702 -1.1234 18.4231 7.86073 -7.3577 6.10724 -6.23605 11.185 2.42708 -2.88939 5.08032 -5.74067 0.869084 -1.04829 1.67848 -2.07446 3.13859 0 0 0 0 0 0.0913894 0.301953 0.00439105 0 0 0 0 0.000255313 0 0.0123413 0 0 -0.000387102 0.000836818 0.00917482 0 0.00332418 0.0406546 0.0878241 0 0 -0.164801 0.000118994 0 -0.0772897 0.212985 0 0 -0.0214119 0.168014 0 -0.278109 0 0.00939439 0 0 0.00204705 0 0 -1.10373 0.00416482 -0.0148894 0 0.0752635 0.0941096 0 0 -0.315587 0 0.00720104 0.00646364 0.00197967 0 0 0.0027988 -0.00812465 0 -0.00632144 0.0253824 -0.0284166 0.722811 0.0390063 0.0240165 0 0.0201879 -0.0974451 0.337888 -0.0208206 -0.20901 0 0 0 7.36031 0.316738 0.219427 0.0405242 -0.0857539 1.03884 0.000995878 -0.00280109 0.0359755 -0.0388292 0 0 0 0 0 0 -0.352286 0 -0.140437 0 0 0 0 0.498032 0.925001 0 0 -1.15216 0 -0.134108 0 0.00346717 0 0 0.0312959 0 -0.517759 0.137627 -0.551529 0.014393 0 0 0.143205 0 8.52727 0 -2.67587 0.293807 0 1.20362 -1.16454 -0.0698541 0 0.0631194 0 0 0.0759329 0 1.96221 -0.123703 0 0 0.0094125 0 0 0.0407691 3.49941 0.448865 0 0.454843 0 -1.35091 0.188882 -0.374888 0.964963 0.218383 -0.417453 0.742508 -0.299827 -1.7248 -1.27955 -0.228036 0 0 0 0.115089 0.284196 0 0 0 0 -0.376222 12.0064 6.05004 -6.41656 1.83441 -1.84806 2.33999 0.674381 -0.672591 0.873325 -0.841297 0 0 0 0 0 0 +384 0 -0.38075 -0.182252 0.00379691 -0.0137118 -0.215169 -0.249282 0.589902 1.38431 0.118145 0.259652 0.0379768 0.131253 -0.00193004 0.720727 -0.00661318 0.549549 2.11357 0.152542 -0.0366435 1.88855 0.0478186 0.282045 0.00533246 0.102448 0.430181 -0.0330404 0.161936 0.705503 1.66513 -0.0433118 0.0266145 0.114994 0.623288 0.490809 0.320954 0.00617484 0.68815 2.13015 -0.126934 0.0986759 -0.000865959 1.54327 0.00045036 1.74823 0.105416 -0.381596 0.988463 0.0390846 0.0184103 -0.177164 0.567017 0.0958176 0.14338 0.0757183 -0.00917075 0.980351 0.303205 0.560797 -0.160774 -0.00880262 -0.190572 -2.66379 1.29486 0.838895 -0.0145549 -0.749393 0.146007 0.703621 -0.092746 0.604927 0.28846 0.131896 -0.170473 -0.543199 -1.12866 0.143949 -7.09211 -2.37556 -2.15004 -3.62582 2.30994 -5.21681 -1.05056 0.602085 -1.44294 -1.66723 -0.111889 0.125523 -1.01101 1.07197 -4.02211 0 0 0 0 0 0.00379691 -0.0137118 -0.00508202 0 0 0 0 -0.000730081 0 0.0129572 0 0 0.000678054 0.00510391 0.00561854 0 0.00179944 0.0558439 0.051869 0 0 0.218159 0.000243223 0 0.0550983 0.851225 0 0 0.0323151 0.244504 0 0.294046 0 0.0375707 0 0 0.00534473 0 0 1.18498 -0.0143904 0.0176671 0 -0.0973636 0.0121974 0 0 0.105137 0 0.00129533 0.138891 -0.0140601 0 0 0.00118435 0.0174647 0 0.000307747 0.0724454 0.0123133 -0.370458 0.0144103 -0.0132042 0 -0.0322136 0.0371932 0.222985 -0.070028 -0.0128521 0 0 0 -6.83601 -0.240014 -0.508507 -0.0314961 0.0672775 -0.909374 -3.51785e-05 0.000532827 -0.0144132 -0.0930225 0 0 0 0 0 0 -0.215169 0 -0.249282 0 0 0 0 -0.0381054 0.223991 0 0 -0.167977 0 -0.0235052 0 0.0329193 0 0 -0.208831 0 0.522753 0.0625019 0.0397908 -0.00911081 0 0 0.287579 0 -0.729086 0 0.552311 -0.516172 0 0.56674 0.511718 0.00143246 0 0.0115631 0 0 0.0238828 0 -0.324338 -0.341981 0 0 0.00117339 0 0 0.024459 0.0816193 -0.0447645 0 -0.319364 0 -0.521092 -0.0510745 0.0569592 0.0921434 -0.0438872 -0.0766131 0.376002 0.000900456 -0.511133 -7.74513 0.0356597 0 0 0 -0.0669367 0.0172975 0 0 0 0 0.119661 -3.77008 0.257979 -1.32388 -0.093462 0.148572 -0.299783 0.0811695 -0.0803181 0.112792 -0.373082 0 0 0 0 0 0 +385 0 -0.0453675 0.346948 0.0400996 0.176903 -0.106441 0.073112 0.384469 1.30512 0.331267 -1.03741 0.284776 0.572341 -0.00739998 1.07969 0.0120788 1.18764 4.12008 -0.1494 0.0204581 3.69817 -0.0242984 -0.459678 0.0069603 -0.283315 0.0892825 0.493085 -0.0852395 -0.182243 -1.07389 0.247445 0.0471272 0.147314 -0.701699 -0.145935 -0.119156 0.0413545 -0.374545 -1.0303 0.454806 2.15527 -0.0414575 0.152204 0.081055 1.17172 -0.183596 1.05841 -0.526263 0.269264 -0.201996 -0.15436 -0.568475 3.79899 0.367038 -0.0823277 0.110783 2.99788 1.34314 0.656021 0.339287 0.0969799 -0.542479 -5.4141 1.40761 -0.246812 0.276703 0.749818 0.197154 -0.55502 -0.058749 0.506123 -0.40829 0.326602 -0.0603846 -0.000346586 0.477699 0.382098 2.58592 2.03089 -2.97311 1.38981 -1.33103 1.92527 1.01599 -0.844803 1.66143 -2.07659 0.19487 -0.342658 0.791652 -1.14176 2.59397 0 0 0 0 0 0.0400996 0.176903 0.000414812 0 0 0 0 3.68259e-05 0 -0.00751367 0 0 2.50569e-05 0.000826252 -0.0067419 0 0.000133618 0.0239071 -0.0905992 0 0 -0.0764503 7.21465e-05 0 -0.0159322 0.297472 0 0 -4.61436e-05 0.0635682 0 -0.026266 0 -0.000242317 0 0 0.00136517 0 0 -0.150125 0.000658158 -0.00259268 0 0.0107016 0.060876 0 0 -0.0985425 0 0.000403993 -0.0277532 0.00998952 0 0 0.00131654 -0.000398356 0 -0.00618111 0.111895 -0.0197876 -1.31287 0.0228949 -0.00610913 0 -0.025996 -0.0218131 -0.0716192 -0.0313363 -0.0475549 0 0 0 2.43735 0.130773 0.490163 0.00781535 -0.026736 0.390133 0.000359427 -0.00105914 0.0134143 0.077978 0 0 0 0 0 0 -0.106441 0 0.073112 0 0 0 0 0.501986 1.00905 0 0 -0.474454 0 -0.0440946 0 0.0261991 0 0 0.232388 0 -0.612735 0.143155 -0.198687 0.0482329 0 0 0.271343 0 4.7744 0 0.287721 -0.0708238 0 1.13448 -0.502446 -0.0184913 0 0.0492984 0 0 0.10319 0 0.577421 0.397222 0 0 0.100076 0 0 -0.196378 3.43764 0.357724 0 1.20523 0 -0.380423 0.0416746 -0.0708869 0.412171 0.0548915 0.224957 0.702993 0.0856275 0.332245 3.89101 -0.0845044 0 0 0 0.225623 0.0872755 0 0 0 0 0.150732 2.88008 2.46193 -4.1529 0.642893 -0.650171 0.518472 0.280038 -0.25919 0.307875 -0.733596 0 0 0 0 0 0 +386 0 0 0 0 0 0.42378 0.0658383 -0.427247 -2.18886 0 0 -0.00360667 -0.840843 0 -2.21209 0.00566614 0 0 0 0.093656 -4.74042 0 0 0 0 -0.371617 0 0 0.051755 -1.42351 -0.493509 0 0.0430673 0 0 -0.115732 -0.000452676 0 0 0.221534 -1.87547 0 0 0.069768 -3.23214 0 -0.657082 0.0821479 0.440879 -0.0683808 -0.924773 -0.373388 0 0.0202708 0.0757625 0.0719034 1.23 0.0504637 0.00801834 0 0 0.57689 3.16951 0 -0.74767 -0.0482539 -0.523814 0 0 0 0 -0.188489 -0.0470642 0 3.60778 -1.90635 0 0 0 3.67271 0 -0.841971 4.15823 0 -0.234271 0.256415 3.45226 0 -0.198727 -0.00310376 -0.260453 1.80861 0 0 0 -0.00231077 0.0010212 0 0 0 -0.0138508 -0.00276171 0 -0.000888751 0 -0.000259814 0.000583759 0 0 0 0 -0.0231178 0 -0.000467743 0 -0.0037888 0 -0.158239 -0.0250431 0 0.000409378 0 0 0.0278181 -0.000379756 -0.000867237 0 -0.000294339 0 -0.000302479 0.0131619 0.00543768 -0.00560728 0.000596494 0 -1.79928e-05 0 0 0 -2.22045e-05 0 0 0.000391057 0.000326071 0.0706999 0.00277101 0 0 7.57924e-05 0 0.000655832 0 0 -0.00806852 0.00278158 -0.00433261 -0.00233598 0 0 0.0124146 0.00881008 -0.000914974 0.00908473 -0.00556186 0 -0.0305204 -0.00305662 -0.0260098 0 0 0 0.0457371 0 0.00598563 -0.0161556 0 -6.57197e-05 0.00023849 0.00290719 0 0.000368528 -0.00120852 0.0023982 -0.00769827 0 0.42378 -0.00231077 0.0658383 0.0010212 0.354033 0.0264273 0.016882 -0.894409 -0.25493 -0.00042895 0.0110583 0.0364754 -2.39817e-05 0.0023932 0.000691053 -0.00357829 0.019956 -0.00556908 0.967419 0.492108 -0.110456 -0.448153 0.01032 0.109601 0.0487376 -0.205761 -0.076655 -0.013689 5.13567 -0.013277 -0.257825 0.573169 2.76199e-05 -2.22035 -0.494922 0.00100414 -0.00199847 -0.146251 -0.00847832 -1.09331 -0.011285 -0.0325085 1.69552 2.19384 0.00289412 -0.00709475 0.157241 -0.0184209 -0.113461 -0.0567929 0.221705 0.390538 0.0306164 0.921596 -0.00175111 1.14287 -0.024593 0.0743846 -0.0159853 0.968444 1.08934 -0.158809 -0.278532 -0.0141516 1.59297 -0.154829 0.689818 -0.0197627 0.365578 0.121189 -0.00641481 -0.0453099 0.00133422 -0.0507026 0.00611633 0.0127512 0.626783 -0.0577646 7.25854 0.0205371 -0.212336 5.40936 -0.00223782 0.0357259 -0.0599322 2.99386 0.000594772 0.0841745 -0.115464 0.083323 1.41038 0 +387 0 0 0 0 0 -0.639353 -0.0542718 1.01793 3.12517 0 0 0.117598 -0.192853 0 0.195654 0.0288095 0 0 0 0.13529 -2.20487 0 0 0 0 0.341924 0 0 -0.454558 0.736069 -0.00725465 0 0.108909 0 0 0.120257 0.0178635 0 0 0.54647 -1.00885 0 0 0.101548 0.0421407 0 -0.338299 -0.49295 0.574549 -0.262227 0.176957 -0.232407 0 -0.172712 0.30492 -0.273457 4.47168 -0.233371 0.0921276 0 0 -2.04866 3.87535 0 0.518169 0.375185 -0.898722 0 0 0 0 -0.0758976 0.678518 0 2.55831 0.535503 0 0 0 -3.38913 0 -0.344441 -1.05257 0 -0.0857954 1.0995 -6.45733 0 -0.500336 1.91197 -3.72823 1.65395 0 0 0 -0.0355219 -0.00441864 0 0 0 -0.00374963 0.00427116 0 -0.000163841 0 -0.000220165 -0.0053271 0 0 0 0 -0.0213331 0 -0.0016602 0 -0.0722145 0 -0.0648109 0.00702237 0 3.77745e-05 0 0 0.0275555 -0.000654354 0.000924393 0 0.000993541 0 0.000306316 -0.0113238 0.00234202 -0.00909068 -0.000848089 0 -1.56735e-05 0 0 0 6.92249e-05 0 0 0.000157702 0.00266711 -0.0154844 0.00128454 0 0 -0.00220777 0 0.00120012 0 0 0.0115761 -0.00412684 -0.00561482 -0.0109598 0 0 -0.00534134 -0.00437613 0.0106133 0.00929117 0.0263601 0 -0.00985724 0.00113296 -0.0640493 0 0 0 0.0223045 0 0.00359421 -0.012889 0 -0.000624355 -0.000991169 0.0153324 0 0.000536786 -0.000580169 0.00236087 -0.00806054 0 -0.639353 -0.0355219 -0.0542718 -0.00441864 -0.317005 -0.0456836 -0.0364083 0.358159 -0.0621678 0.00186896 0.0331654 -0.133905 0.000106274 -0.00667637 -0.0024206 -0.00365312 0.0437524 0.0253152 0.117889 0.179204 -0.0303208 0.307361 -0.0630566 -0.0164861 0.223983 0.0027776 -0.0473557 0.00360773 6.08617 0.167447 -2.06018 1.01831 -0.000137215 1.56527 -0.338847 -0.00570459 0.00755574 0.073671 0.0408547 0.466668 -0.00219588 -0.0149752 2.51949 0.416098 0.00744869 0.0323808 0.0273813 0.0360901 -0.0463109 0.544508 -0.0747463 -0.279244 -0.0617583 1.44228 0.00452663 -0.130702 -0.00191249 0.121791 -0.107994 0.0657896 -0.321021 -0.263757 -0.416464 -0.149358 4.43992 -0.19677 0.106274 0.0347295 0.0760078 -0.145829 0.0159739 -0.154153 -0.00426019 0.21024 -0.0130746 -0.00101593 5.00836 0.0554652 -3.09381 0.0792412 -1.15301 1.67491 0.0084689 -0.427484 1.11642 -1.62872 -0.00270363 -0.161689 0.349034 -0.301808 -0.31835 0 +388 0 0 0 0 0 -0.507853 0.357037 -0.412276 0.323609 0 0 -0.0839683 2.05356 0 3.33305 0.0333829 0 0 0 0.377576 5.97674 0 0 0 0 -0.338681 0 0 -0.503918 -3.41143e-05 0.993259 0 0.0852634 0 0 -0.341883 -0.025724 0 0 0.428267 2.75195 0 0 0.025462 7.73829 0 1.54313 -0.37997 1.11398 -0.0979258 0.933536 -0.0601843 0 -0.583456 0.454903 -0.318143 -3.6021 -0.759015 -0.270833 0 0 0.626614 -1.84805 0 1.03338 0.397845 0.61473 0 0 0 0 0.192358 0.338507 0 -3.37662 1.18696 0 0 0 -0.24283 0 -1.0227 2.39381 0 0.00636353 -0.32361 2.20922 0 0.0161099 0.121586 -0.579027 1.70999 0 0 0 -0.314413 -0.0179613 0 0 0 -0.000261571 0.0797669 0 0.000380121 0 0.00176325 -0.00831301 0 0 0 0 -0.0221699 0 -0.00221034 0 -0.0863912 0 -0.0791108 0.17609 0 -0.00154569 0 0 -0.17514 0.00228631 0.00849033 0 0.00448355 0 0.00558549 0.0365986 -0.0198935 0.0326292 0.000955789 0 0.000123359 0 0 0 0.000316641 0 0 -4.65772e-05 0.00397601 0.00865452 -0.0161101 0 0 -0.00642854 0 -0.0135528 0 0 0.0225176 0.000861817 0.0181107 0.00732669 0 0 -0.0422611 -0.026728 -0.0304503 -0.0231219 -0.181175 0 0.0293448 0.0131145 0.040225 0 0 0 0.14578 0 -0.0175705 0.10254 0 0.0015391 -0.00475278 -0.00120445 0 -0.00185277 0.008922 -0.016406 0.0476959 0 -0.507853 -0.314413 0.357037 -0.0179613 0.1771 0.0328587 -0.160999 0.414581 -0.380316 0.00839207 0.0768755 -0.324873 0.000392878 -0.0120377 -0.0084956 -0.012541 0.0517578 0.171495 1.52902 0.141289 0.371495 -0.0395102 -0.32381 0.226804 0.548994 0.0480427 -0.361845 0.00669798 6.92624 0.0472722 0.339163 1.63019 -0.000428079 0.580838 0.776772 -0.0177348 -0.00244746 -0.0275073 0.00585175 0.210288 -0.00373776 0.0129235 3.47376 2.99431 0.00682824 0.000614927 0.469545 0.0262408 0.35143 -0.292835 0.739722 -0.593027 -0.110146 -0.940746 0.0199165 0.343079 -0.0106957 0.283272 0.0327731 -0.0824507 -0.252289 0.16975 -0.0228133 -0.0356599 -5.48196 0.151133 -0.923664 0.241433 -0.176574 0.076966 0.036115 -0.0221157 -0.0247089 0.198053 -0.0721297 0.0133705 -0.824517 0.412553 -3.26741 -0.226567 -0.470256 -0.242282 0.0262799 0.000269113 -0.365149 0.132208 -0.0183155 0.023237 -0.218446 0.00267191 0.100598 0 +389 0 1.03088 0.366746 -5.47668e-05 -0.0126231 0.372427 0.216298 -0.816297 -1.99783 0.000281659 0.0316346 -0.0193566 0.813813 -1.4952e-08 0.240896 0.000308618 1.16287 2.85986 -0.0361816 0.000257863 -0.340499 -0.00616851 -0.426488 9.94914e-08 0.00167803 -0.462129 0.603454 -0.00381362 -0.624119 -1.5512 0.33069 6.26532e-06 0.0271337 -0.921865 -0.00830223 -0.270532 -0.000235383 -0.00961131 -4.19772 -0.031958 0.316591 1.03286e-06 0.05378 -0.000411876 1.60815 0.000363094 0.636628 -1.06213 0.0260038 0.000465847 -0.542869 0.0165201 1.1761 -0.000449564 0.000471694 0.0153088 1.32777 0.15466 -0.00771936 -0.0147659 -9.93511e-07 0.802049 -0.756408 -0.198558 -0.0905092 -0.00663124 0.427709 -0.0105167 0.0319776 -8.02333e-06 -0.334551 0.204118 0.0376862 0.0342715 -0.481187 0.576125 0.0274769 14.3825 -0.597178 7.81868 -0.00986213 -0.201255 7.60256 -0.0983065 0.136962 -0.242792 5.54858 -3.63593e-07 8.88073e-06 0.000159268 0.0847597 5.27526 0 0 0 0 0 -5.47668e-05 -0.0126231 2.4304e-05 0 0 0 0 -6.91799e-07 0 0.000706915 0 0 -0.000127185 -2.27798e-05 4.54842e-05 0 7.02504e-06 0.000163379 0.00400861 0 0 -0.00989626 -1.46998e-06 0 -4.26813e-05 0.0190629 0 0 -0.00150063 0.00852917 0 -0.00445234 0 -6.03094e-05 0 0 -1.27957e-05 0 0 -0.000206548 4.13928e-07 -0.00199771 0 0.00142994 0.00201116 0 0 0.00574432 0 0.000117378 0.0340885 0.000701999 0 0 0.000193188 4.52885e-05 0 -0.00102843 -0.010154 0.000205811 -0.0556647 0.00386103 0.000508145 0 0.000475698 0.000702982 -0.0266586 0.000134354 0.00806212 0 0 0 0.150641 0.015108 -0.000799411 -0.000928532 0.00281884 -0.000703686 0.000129714 -8.41306e-05 0.000220428 -0.000460788 0 0 0 0 0 0 0.372427 0 0.216298 0 0 0 0 -0.0769858 0.624833 0 0 0.239884 0 0.0125439 0 0.0132846 0 0 -0.979579 0 -0.94131 -0.108168 0.119434 -0.111144 0 0 0.234699 0 -1.70632 0 -3.33556 -0.476793 0 -0.642609 -1.20855 0.0036622 0 -0.0175966 0 0 0.0532114 0 -1.49402 -1.12633 0 0 -0.131115 0 0 -0.376835 1.43103 0.200745 0 -0.611367 0 0.383947 0.0639895 -0.0713777 -0.326214 0.0846741 0.855074 0.0211205 0.0224639 0.0511626 0.891542 0.0820912 0 0 0 0.0824584 -0.0808828 0 0 0 0 -0.0442313 20.8547 -1.27068 6.59142 0.26671 -0.361312 1.9176 -0.0355336 0.0263981 -0.0916645 0.465838 0 0 0 0 0 0 +390 0 -1.15928 -0.398829 -0.000400097 -0.0205301 -0.303412 -0.161994 -0.229411 -0.120258 -0.00149231 0.399485 0.0176459 -0.182139 2.37261e-07 0.0908012 -0.000182284 -0.981401 -3.56976 0.0537508 -2.51475e-05 -0.37941 0.00981824 0.256932 -2.90406e-07 0.0644998 0.119347 -0.283677 0.0160197 0.235342 -0.15045 0.0130632 -2.15373e-05 -0.0102872 0.833342 0.0968693 0.033661 0.00030028 0.1504 3.46699 0.0345943 -0.423235 1.82083e-05 0.750172 0.000624499 -0.528785 0.00125875 -0.339923 0.203232 -0.000897092 -0.000843073 1.61555 0.238682 8.45324 2.28776e-05 4.31969e-05 -0.0168312 1.03359 0.0823795 0.0167088 -0.180742 -1.86602e-05 0.444727 0.287238 0.0404889 -0.143493 -0.609413 -0.121265 0.38038 0.339569 1.67707e-05 -0.380479 0.264754 -0.0203875 -0.193524 0.496988 -0.161725 -0.0811613 -9.16219 -0.785573 -3.49232 -0.197963 0.15294 -4.44204 -0.434943 0.602003 -1.09466 0.890332 -1.26048e-06 -4.20049e-05 -0.00206503 -0.0558731 0.511643 0 0 0 0 0 -0.000400097 -0.0205301 0.000420339 0 0 0 0 7.43646e-06 0 -0.000223728 0 0 7.84496e-05 2.3617e-05 -6.81324e-05 0 -5.70599e-06 -2.38573e-05 -0.00338934 0 0 -0.015295 1.59362e-06 0 -0.000194682 0.00844121 0 0 -0.00105579 -0.00202733 0 -0.00485122 0 -0.000258614 0 0 -1.74562e-05 0 0 -0.029668 0.000103522 0.00123552 0 0.00574986 -0.00340928 0 0 -0.00702958 0 0.000905472 -0.00952596 -0.00122883 0 0 -0.000184774 -0.000698927 0 0.0021147 0.00219326 -9.42818e-05 0.0157117 -0.00238734 -0.00149032 0 0.00102565 0.000908357 0.008835 0.00192685 -0.00129122 0 0 0 -0.0354065 -0.0114457 0.00315763 0.00304373 -0.00447911 0.00406874 -9.51096e-05 6.41182e-05 -0.000130354 0.000407359 0 0 0 0 0 0 -0.303412 0 -0.161994 0 0 0 0 0.0432622 0.490054 0 0 0.221419 0 0.0350844 0 0.0130373 0 0 -0.102762 0 0.47613 -0.00880227 0.0278148 0.00262971 0 0 0.0711207 0 -7.91078 0 4.08505 -0.902744 0 0.300127 1.0255 0.0083645 0 -0.00259116 0 0 0.0719706 0 -2.51565 -1.00632 0 0 -0.0902857 0 0 -0.147945 0.402926 0.272569 0 0.533295 0 -0.372307 0.127272 -0.140386 -0.624008 -0.105541 0.448515 0.583601 0.128261 -0.239191 0.380212 0.187294 0 0 0 0.0974872 -0.138 0 0 0 0 -0.126012 -21.3569 -2.67969 -0.746717 -0.889296 0.641248 -1.5957 -0.172052 0.113217 -0.114423 -0.107862 0 0 0 0 0 0 +391 0 -1.04144 0.0588943 -0.00130095 -0.0954568 -0.0927468 -0.210362 0.921716 2.3055 -0.00414757 -0.536995 0.0364294 -0.369082 6.74283e-07 -0.562341 -6.25509e-05 1.57559 5.21357 -0.122589 0.00062132 -0.293329 -0.0213836 -0.0228722 -6.58414e-07 -0.151867 0.601312 0.415396 -0.00732033 0.341381 0.108625 -0.257874 -5.26746e-05 0.00777075 0.218821 0.00211979 0.266367 0.000609071 0.0219652 2.10318 0.0738133 -0.246749 5.83188e-05 0.304686 0.00129279 -1.45516 0.00491579 -0.308741 0.412616 0.0604797 -0.00207908 0.785898 -0.270055 -6.37236 -0.00120951 0.00135285 -0.000708944 -0.614067 -0.0230308 0.0172987 0.205945 -6.29001e-05 0.314489 -0.686281 2.31137 1.09956 0.0169038 -0.283201 0.619006 0.0667652 3.74984e-05 0.14472 0.0872333 -0.00795712 -0.0383412 0.272624 -0.159568 -0.19379 -6.66954 1.13368 -5.6233 1.06105 -1.26956 -0.742458 0.806579 -0.956182 1.2372 -3.61617 -4.92255e-06 -0.000133355 -0.0084131 -0.127641 -0.369409 0 0 0 0 0 -0.00130095 -0.0954568 0.00136777 0 0 0 0 1.89067e-05 0 -0.0012075 0 0 0.000293339 5.89529e-05 -0.000164846 0 -1.46959e-05 0.000211501 -0.011639 0 0 -0.044682 4.306e-06 0 -0.000718052 0.0670073 0 0 -0.00328362 0.010935 0 -0.0256497 0 -0.000650254 0 0 -4.56208e-05 0 0 -0.108758 0.000282327 0.00392846 0 0.0207967 -0.00166865 0 0 -0.0265522 0 0.00245499 0.0352085 -0.00124763 0 0 -0.000405403 -0.00254036 0 0.00489559 -0.00659132 0.000231366 -0.114867 0.00140856 -0.00505874 0 0.00362763 0.00226771 -0.0275509 -0.000677327 0.00938483 0 0 0 0.39921 0.00505566 0.0328879 0.00870623 -0.00733075 0.0120983 -0.000346179 0.000503934 -0.000538549 0.00151309 0 0 0 0 0 0 -0.0927468 0 -0.210362 0 0 0 0 0.0208906 0.777007 0 0 0.195264 0 -0.00342013 0 0.014222 0 0 -0.715323 0 -0.396098 0.0813286 0.00727483 -0.0802375 0 0 0.277966 0 -2.40511 0 1.01938 -0.377053 0 0.402126 -0.657419 -0.00615676 0 0.017134 0 0 0.0586144 0 -0.788911 -1.83653 0 0 -0.209071 0 0 -0.834169 0.278153 -0.101761 0 -1.10364 0 -0.903375 0.244685 -0.0967762 0.0754676 -0.108367 0.62228 0.691586 0.0838483 0.44108 1.96775 0.155095 0 0 0 0.267562 -0.0260579 0 0 0 0 -0.0814612 -18.5886 -1.52901 -3.02868 -0.586681 0.516667 -1.49634 0.0559272 -0.0525975 -0.0375907 -0.288037 0 0 0 0 0 0 +392 0 0.435763 -0.194955 -0.00012328 0.00768963 -0.107424 -0.136581 0.698094 -0.0110405 -0.0013247 0.341425 0.0270961 -0.605889 1.72613e-07 0.126752 -0.000119889 -1.43968 -2.95063 0.0904482 0.000133096 1.09721 0.0136157 0.261799 -2.38551e-07 0.0993508 0.0950617 -0.719296 0.00798535 0.597012 1.30451 -0.219896 -1.79806e-05 -0.000305693 -0.240737 0.0304892 0.28704 0.000320162 0.09737 -3.54254 0.0365838 0.0151173 1.20177e-05 0.255295 0.000484682 -0.617131 0.000793207 -0.390995 0.852877 0.0231994 -0.000768397 1.59245 0.190498 2.27379 -0.000211954 -0.000511076 -0.00852543 1.89699 -0.0408436 -0.00818287 -0.149063 -1.74888e-05 -2.69093 -0.257144 0.309331 1.51217 -0.0950473 -1.19207 -0.462134 0.0935403 2.18492e-05 -0.500342 0.0487683 -0.0272093 -0.105601 0.406054 -0.00540843 -0.331159 14.8825 -1.18588 4.74487 0.440013 -1.13623 2.70223 -0.14476 0.0686466 -0.483262 -0.140308 -1.02571e-06 -3.99622e-05 -0.00139571 -0.0522924 -1.81652 0 0 0 0 0 -0.00012328 0.00768963 0.00015538 0 0 0 0 3.27956e-06 0 0.000831048 0 0 1.63548e-05 7.85103e-06 1.30499e-06 0 4.42449e-07 3.23039e-05 0.00602351 0 0 -0.00676777 5.51079e-07 0 -0.000135206 0.049719 0 0 -0.00153438 0.00688283 0 -0.00694313 0 -9.54722e-05 0 0 -8.28095e-06 0 0 -0.0186223 4.6753e-05 0.000232128 0 0.00221844 -0.000913879 0 0 -0.00782133 0 0.000340778 -0.0132698 -0.000373703 0 0 -4.23126e-05 -0.000263095 0 0.000673 -0.000874544 3.80343e-06 -0.0375021 -0.000585994 0.00215 0 0.000332147 -0.000313304 -0.00489205 0.000615318 0.00218423 0 0 0 0.0306499 -0.00146477 -0.00327789 0.00116061 -0.00134738 0.00377781 -2.25696e-05 2.54118e-05 -2.77173e-05 -0.00284493 0 0 0 0 0 0 -0.107424 0 -0.136581 0 0 0 0 -0.183859 -0.538936 0 0 -0.311403 0 -0.025905 0 -0.0119814 0 0 0.517313 0 0.434593 -0.0851843 -0.115526 0.0363967 0 0 -0.230973 0 1.00095 0 -4.4497 0.11641 0 -0.480463 -0.714818 -0.00500514 0 -0.0299802 0 0 -0.0321998 0 0.77258 0.798653 0 0 0.0536137 0 0 0.525419 2.82938 0.326653 0 -0.345692 0 1.17339 -0.0962945 0.0402637 -0.273392 0.0659227 0.426448 -0.165226 -0.0643948 0.485973 -0.668006 -0.0869426 0 0 0 -0.148584 0.0283136 0 0 0 0 0.075268 35.6522 1.09883 7.37825 0.456481 -0.441518 2.73775 0.125928 -0.101499 0.102757 0.329644 0 0 0 0 0 0 +393 0 -1.00405 -0.281106 -0.000564715 -0.0300412 -0.197126 -0.0453378 -0.836388 -0.916037 -0.00194087 0.330202 0.00359255 -0.153758 4.53953e-07 -1.61774 5.23702e-05 -0.502335 -1.82327 0.0292255 0.000555989 1.59208 0.00202816 0.0368287 -5.81218e-07 0.0179658 -0.169656 -0.0781386 0.00414384 -0.0428382 -0.688971 -0.18265 -3.5006e-05 0.00247478 0.515297 0.0412648 -0.190015 0.000183327 0.0541715 3.56099 0.011159 0.732273 2.77631e-05 0.406307 0.000417683 -2.02377 0.00156209 0.351983 -0.221959 0.0228748 -0.000605618 -0.838226 0.203501 -0.976489 -0.000474223 0.000729136 0.00262809 -1.9959 0.22383 0.0332757 -0.0757262 -2.73802e-05 0.277945 -3.00675 -1.93526 -1.93094 -0.434184 -0.15352 0.231239 0.230035 2.85592e-05 -0.120624 0.240289 -0.000504841 -0.0897395 -0.748289 -0.29155 0.0815389 -9.2909 -0.387028 -2.52419 0.0324153 0.150884 -4.24938 -0.247436 0.488483 -0.913145 1.23648 -2.01997e-06 -3.9332e-05 -0.000642136 0.00639601 0.959389 0 0 0 0 0 -0.000564715 -0.0300412 0.000407683 0 0 0 0 9.4192e-06 0 -0.000807344 0 0 5.24708e-06 1.77025e-05 -7.60075e-05 0 -1.77843e-05 -0.000246511 -0.0040291 0 0 -0.00430963 1.2428e-06 0 -0.000258463 -0.00793919 0 0 0.00109713 -0.00886826 0 -0.00656327 0 -5.38736e-05 0 0 2.03797e-05 0 0 -0.0528971 0.000134334 7.2564e-05 0 0.00583851 -0.00411663 0 0 -0.0079132 0 0.00101723 -0.00300555 -0.00120534 0 0 -0.000112141 -0.000612655 0 0.00250634 -0.00528079 0.000137679 0.0199318 -0.00238511 -0.0036094 0 0.00303728 0.00175298 0.000527344 0.00241212 0.000681545 0 0 0 0.0807495 -0.0051873 0.0104318 0.00462636 -0.0053935 0.00589391 -2.97856e-05 2.78894e-05 -3.40138e-07 0.00120913 0 0 0 0 0 0 -0.197126 0 -0.0453378 0 0 0 0 0.0850888 0.427152 0 0 0.299572 0 0.035625 0 0.0133871 0 0 -0.580136 0 0.130958 -0.00833405 0.0906287 -0.101157 0 0 0.141377 0 -2.97064 0 5.71367 -0.366113 0 0.308023 1.31999 0.00841374 0 -0.00406713 0 0 0.0548238 0 -1.07475 -1.18161 0 0 -0.200347 0 0 -0.367764 -2.69229 0.238088 0 -1.22295 0 -0.879087 0.128634 -0.172802 -0.549139 -0.0726638 0.404177 0.289057 0.0771886 0.0940755 -3.93124 0.168271 0 0 0 0.113337 -0.103081 0 0 0 0 -0.084552 -26.3733 -2.67774 -1.08037 -0.925635 0.760247 -2.35005 -0.183795 0.136342 -0.156638 -0.0421412 0 0 0 0 0 0 +394 0 -1.01838 -0.143099 -0.00150383 -0.0831842 -0.185889 -0.20231 -0.0191326 0.480255 -0.00694655 -0.277569 0.0413815 -0.639561 1.28073e-06 -1.66119 8.75392e-07 -1.19754 -4.99669 -0.0447321 0.00158312 -3.20992 -0.00652972 -0.0643242 -1.63518e-06 -0.0958898 0.328643 -0.274379 0.00277024 0.309344 -0.981453 -0.363896 -0.000108151 0.00782404 0.0567406 0.0838992 0.136766 0.000730129 0.0613068 1.33538 0.0715874 -1.4679 8.67229e-05 0.528586 0.00138207 -3.56732 0.00570475 -0.7352 0.00880269 0.102591 -0.00252627 -1.66943 -0.030614 3.28908 -0.00153359 0.00155107 -0.000479603 1.00049 -0.111515 0.0545401 0.083413 -0.000101985 0.12339 1.40279 -0.95237 -1.59429 -0.0743177 -0.256252 0.558183 0.101425 0.000105874 0.239475 0.0498572 -0.0217903 -0.170743 1.76826 -0.716484 -0.482729 -6.34402 0.909889 -2.28769 0.778435 -0.211046 -0.908477 0.650492 -0.64908 0.615094 -1.01055 -7.37694e-06 -0.000163577 -0.00333735 -0.0296636 1.36667 0 0 0 0 0 -0.00150383 -0.0831842 0.00156581 0 0 0 0 2.49999e-05 0 -0.00382757 0 0 0.000492652 0.000108509 -0.000262217 0 -5.76947e-05 -0.000498044 -0.01722 0 0 0.00322788 7.60909e-06 0 -0.000700963 0.074453 0 0 0.00349733 -0.00655173 0 -0.0146591 0 5.15452e-05 0 0 7.43331e-05 0 0 -0.119497 0.000355843 0.00704093 0 0.0221819 -0.00402318 0 0 -0.0374526 0 0.00236124 -0.00958113 -0.00209662 0 0 -0.000520343 -0.00308922 0 0.00731158 -0.00220911 -0.000744024 -0.0662815 -0.00427297 -0.00645854 0 0.00697385 0.000780381 -0.00654601 -0.00187991 8.84073e-05 0 0 0 0.206694 -0.0190356 0.0352827 0.0117167 -0.0131368 0.0145708 -0.000512781 0.000620038 -0.000903639 0.00170782 0 0 0 0 0 0 -0.185889 0 -0.20231 0 0 0 0 0.148198 0.524114 0 0 0.156561 0 -0.00481871 0 0.00908092 0 0 -0.766552 0 -0.108996 0.0982314 0.0483378 -0.0725233 0 0 0.231952 0 -8.2909 0 2.92113 -1.09727 0 0.679752 0.286899 -0.000981147 0 0.0163505 0 0 0.0258287 0 -2.88451 -1.77576 0 0 -0.169618 0 0 -0.486078 -1.34611 -0.172566 0 0.720827 0 -1.32936 0.160814 -0.0721712 0.367373 -0.229106 -0.0634592 0.520599 0.117472 -0.147835 5.49432 0.158304 0 0 0 0.193475 -0.0200997 0 0 0 0 -0.0717347 -23.6791 -0.771564 -4.82104 -0.628017 0.51852 -1.71666 0.0557702 -0.0600169 -0.0405442 -0.333515 0 0 0 0 0 0 +395 0 0 0 0 0 -0.206969 0.138937 -0.502735 -0.96387 0 0 0.190686 0.973854 0 1.22732 0.035152 0 0 0 0.109323 3.64768 0 0 0 0 -0.239459 0 0 -0.278306 -3.82105 0.336074 0 0.241847 0 0 -0.0879463 0.0127807 0 0 0.817269 0.256681 0 0 0.15628 4.77613 0 -0.0666899 -1.10358 0.414551 -0.239789 0.99416 -0.340594 0 -0.149531 0.230963 -0.34508 -0.151509 -0.147591 -0.128798 0 0 -0.164433 2.93725 0 -0.54497 -0.288299 -0.162632 0 0 0 0 0.256452 0.354416 0 -0.0956857 1.4465 0 0 0 1.04452 0 -1.29509 4.47858 0 -0.337738 -1.04067 5.31546 0 -0.41962 -0.753433 0.0662634 6.85696 0 0 0 -0.209097 -0.020967 0 0 0 0.0577037 0.00514182 0 0.00721379 0 4.5702e-05 -0.00946209 0 0 0 0 -0.08845 0 -0.00910756 0 -0.0813314 0 0.437194 0.326393 0 0.00348991 0 0 0.260547 0.000261728 0.0320971 0 7.90896e-05 0 0.000198369 0.0607033 0.0307974 0.00406784 0.00605969 0 2.89394e-06 0 0 0 3.35668e-06 0 0 -0.000397272 -0.000318108 0.0441112 0.00136026 0 0 9.11161e-05 0 -0.000853807 0 0 1.97167e-05 0.00126217 0.191154 0.00224893 0 0 -0.0248713 0.0618904 0.00187871 0.20344 0.228399 0 -0.128055 0.000198261 0.17542 0 0 0 0.0738957 0 -0.00401141 -0.247648 0 0.000205712 -0.000503671 0.00121434 0 -0.000248114 0.000210154 -0.000800353 -0.216558 0 -0.206969 -0.209097 0.138937 -0.020967 0.503763 0.135864 -0.146173 0.0985813 -0.384482 0.0101163 0.00714261 -0.188398 0.000727123 -0.0230455 -0.0121883 -0.00306476 0.000275877 0.131935 -0.262531 0.82422 0.114321 -0.0180553 -0.124809 -0.000731524 0.0201345 -0.122621 0.0151456 -0.00308796 0.241781 0.0969145 -0.443921 0.680764 -0.00092047 -0.389496 0.0740027 -0.0125023 0.000469252 0.033289 0.0165361 -0.994354 -0.0381286 -0.011012 1.04026 0.731515 0.000359872 0.00668236 0.159848 0.0569386 -0.0535241 -0.951504 -2.32351 -0.192849 -0.00351447 -4.64502 0.0199572 -0.702524 -0.0792785 -0.13045 0.22636 -0.380993 -1.63547 -0.00473846 0.0880084 0.0254772 -12.4508 0.0793314 -0.00388385 0.0858503 0.101133 -0.146678 0.0490062 0.0260955 -0.0207039 0.0335031 -0.110664 0.0628377 3.95847 0.748009 0.26607 -0.564695 -0.0928531 2.4863 0.0373242 -0.0682229 -0.454532 1.46299 -0.013992 -0.0205516 -0.119125 -0.0678504 1.29465 0 +396 0 0 0 0 0 -0.102809 -0.178262 1.11301 2.6775 0 0 -0.125795 -0.663817 0 -1.99147 0.00482634 0 0 0 -0.00366031 -4.13782 0 0 0 0 0.542363 0 0 0.347348 5.97667 -0.444224 0 0.0170485 0 0 0.205816 -0.00461531 0 0 -0.367765 -1.07223 0 0 -0.00619684 -4.16025 0 -0.414405 1.81309 -0.133844 0.0187306 0.677573 0.209665 0 -0.0427482 -0.140423 0.394616 -1.79324 -0.252459 -0.0500321 0 0 1.31058 0.265076 0 1.216 -0.206152 0.470514 0 0 0 0 0.204831 0.177559 0 0.867552 -1.55371 0 0 0 -3.94574 0 0.560626 -8.69637 0 0.0962347 -0.586537 -5.22433 0 0.12233 -1.10351 2.75284 -15.7673 0 0 0 0.0235389 0.00177376 0 0 0 -0.0100551 -0.00153992 0 -0.00100186 0 -7.62842e-07 0.00367411 0 0 0 0 0.0134219 0 0.00101631 0 0.0589449 0 -0.10317 -0.117807 0 4.39336e-05 0 0 0.0121782 -1.97808e-05 -0.0076444 0 -1.53708e-05 0 -9.59066e-05 -0.0121751 0.00114027 -0.000334159 -0.000812032 0 -3.45715e-08 0 0 0 -9.1906e-07 0 0 2.53536e-05 -0.000116392 0.0201446 0.000422988 0 0 0.000115756 0 0.000190997 0 0 -3.31164e-05 -4.97975e-05 -0.0943459 -0.000130415 0 0 -0.00876596 -0.0267689 -0.000238547 -0.0401737 -0.0714869 0 0.0161005 -2.84494e-05 -0.0795019 0 0 0 -0.0489261 0 0.00101041 -0.00853148 0 8.33496e-05 0.000379663 -0.0268263 0 6.14811e-06 -7.39987e-06 0.000116541 -0.0114045 0 -0.102809 0.0235389 -0.178262 0.00177376 -0.310145 -0.156491 0.0123466 -0.332943 0.418933 -0.000773847 -0.0325729 0.236666 -5.87127e-05 0.0148568 0.00101056 0.0161349 -0.0232022 -0.00932445 0.394567 0.28146 -0.483588 0.228799 0.176768 0.0324381 -0.23007 0.379929 0.272563 0.0108551 3.08218 -0.187081 -1.59537 0.243882 7.59627e-05 0.296346 -0.946818 0.010641 -0.00258919 0.00301936 -0.0263611 1.94627 0.0256683 0.0682269 1.1917 1.16208 -0.00339293 -0.017052 0.204159 0.0662053 -0.167405 0.494577 2.9749 1.51044 0.0284389 3.02194 -0.0016254 1.5781 0.046371 -0.375301 0.223572 -0.0916117 1.37485 -0.246849 0.1249 0.351066 12.3775 0.163292 0.427511 -0.0731699 -0.259227 0.0337798 -0.0292386 0.0786462 0.00148857 -0.160771 0.103861 -0.0413267 14.2261 -1.38571 2.35947 0.12617 0.654559 -6.54984 -0.0144814 0.223557 -0.618035 -1.44059 0.000988883 0.0940454 -0.322462 0.668691 -2.86103 0 +397 0 0 0 0 0 -0.389912 -0.555887 0.574155 2.36299 0 0 -0.289972 -1.70821 0 -3.35029 -0.0127614 0 0 0 0.112484 -6.87111 0 0 0 0 0.516601 0 0 0.805633 4.95195 -0.861207 0 0.0175532 0 0 0.348999 -0.0378089 0 0 -0.846174 -2.55868 0 0 -0.234414 -6.9519 0 -1.24703 1.56647 0.665653 0.31254 -1.36167 0.0590486 0 -0.150549 -0.106157 0.237775 4.62277 -0.102403 -0.364743 0 0 0.554175 4.87928 0 0.957958 0.646136 0.433125 0 0 0 0 -0.00586437 -0.583081 0 5.12668 -0.784562 0 0 0 -3.55488 0 0.666793 -6.08201 0 0.434854 -1.43327 -2.3147 0 0.873054 -2.50985 5.14313 -16.4262 0 0 0 -0.0322727 0.00455319 0 0 0 -0.0198791 0.0205666 0 -0.00181603 0 -1.80868e-05 0.0029076 0 0 0 0 0.00379149 0 0.00175386 0 0.0296813 0 -0.195381 0.10679 0 -0.00044953 0 0 -0.0172241 -0.000222366 0.00168017 0 0.000259234 0 0.00113917 0.0333324 -0.000109214 -0.00245641 0.00150932 0 -1.89516e-06 0 0 0 1.40882e-05 0 0 0.00118767 0.000609755 0.0191506 -0.00336839 0 0 -0.000336939 0 -0.00295449 0 0 0.00209118 -0.00171852 -0.081727 -0.000601698 0 0 -0.00803298 -0.0240762 0.00448635 -0.0248338 -0.0969364 0 -0.000801563 -0.00183973 -0.0478395 0 0 0 -0.0393776 0 0.000184189 0.0124084 0 -0.00068264 4.99299e-05 -0.00696113 0 0.000451274 -0.00057513 0.000839242 0.0224615 0 -0.389912 -0.0322727 -0.555887 0.00455319 -0.377425 -0.128632 0.0494678 0.211547 -0.0575194 -0.00290361 0.0627307 0.0910335 -0.000197016 0.00102346 0.0037132 -0.009996 0.0408001 -0.0389589 -1.15543 -2.09716 -0.308081 0.27975 0.0502259 -0.157524 0.52027 0.287137 -0.18542 -0.0363429 -6.07726 -0.230572 -1.6264 -1.97728 0.000257545 1.29925 -0.717833 0.000652292 -0.0132871 0.0984963 -0.0891604 1.62357 -0.00191676 0.0445994 -4.22162 -2.30188 0.00337439 -0.04728 -0.345905 -0.276378 0.19052 1.2949 5.20248 0.556819 -0.143222 4.55663 -0.00793624 4.00264 0.00472428 0.40763 -0.409092 0.431185 0.3266 -0.547085 0.0086532 -0.155555 21.8215 -0.131694 -0.298455 -0.101313 -0.282121 -0.370728 0.00376137 0.0139169 0.00715006 0.0886324 0.20757 0.00857172 14.5027 -0.742832 -2.83935 0.259941 0.22485 -3.67057 -0.0128986 0.322965 -0.746681 -1.04008 0.00413169 0.320072 -0.793582 1.04687 -2.47773 0 +398 0 -0.409091 0.49951 -0.0265395 -0.250865 0.326582 0.23311 0.185582 -0.530555 -0.125737 0.606038 -0.147242 0.738132 0.00104024 0.189845 0.00558225 4.00916 13.3403 0.0485994 0.0141173 1.07198 -0.00385952 -0.328618 -0.00115176 0.0786258 -0.180055 1.2399 0.0229462 -0.229152 0.638769 0.166694 -0.0125187 -0.0196419 -0.500297 0.0278959 -0.0613897 -0.0129023 0.104844 -0.469679 -0.367751 0.913703 0.0128273 0.113738 -0.0351155 1.7729 0.150595 0.75047 0.0615642 -0.00279337 0.065282 0.0187918 0.11132 -8.10712 -0.0278313 -0.00698505 -0.0134095 -0.714436 0.0941808 -0.015375 -0.0626749 -0.0186633 -0.893777 -0.439352 -0.0108704 0.849487 -0.357137 0.457533 -0.237824 0.281723 0.00798588 -0.211414 -0.264578 -0.165467 -0.211973 1.10568 0.283322 -0.106539 0.664158 -2.57218 2.84027 -1.06638 0.785045 -0.244771 -0.258142 0.0218447 -0.248106 -0.0732743 -0.0234055 0.0693416 -0.203041 0.54751 -1.30135 0 0 0 0 0 -0.0265395 -0.250865 0.000887263 0 0 0 0 5.21642e-05 0 0.023469 0 0 0.000547564 0.000197889 0.0178699 0 0.00261524 0.0244172 0.158369 0 0 0.167565 1.09243e-05 0 -0.0219613 0.838902 0 0 0.0259767 0.150798 0 -0.102101 0 0.0219854 0 0 0.00324904 0 0 -0.066394 0.00105136 0.00904396 0 0.0187372 -0.0024894 0 0 -0.1299 0 -0.000292136 -0.13827 0.000375548 0 0 -0.000677016 -0.00275091 0 0.000541008 0.043003 0.00259346 0.38708 0.00194637 0.0330712 0 0.00172648 -0.0453257 0.0877927 0.0119654 0.141945 0 0 0 -0.0221421 -0.022763 -0.152753 -0.00147973 -7.67695e-05 0.0352676 -0.000520808 0.000542585 -0.00208314 -0.0641473 0 0 0 0 0 0 0.326582 0 0.23311 0 0 0 0 -0.537918 -0.163719 0 0 0.661965 0 0.0630593 0 -0.00289978 0 0 0.0981057 0 -1.18003 -0.169539 0.159949 0.00707869 0 0 -0.121553 0 0.994662 0 -2.60959 0.0934409 0 -1.3156 -1.85372 0.0140089 0 -0.0713357 0 0 -0.00120638 0 0.0171888 0.336177 0 0 0.0119451 0 0 0.147847 1.38281 0.467273 0 1.22375 0 1.00936 0.253681 -0.237342 -0.011202 0.0218155 -0.386729 -0.271674 0.0791939 0.41763 10.0198 -0.074878 0 0 0 -0.0179644 -0.0328035 0 0 0 0 0.032233 19.5768 -4.97924 11.0672 -0.796004 0.409125 1.55945 -0.262717 0.247205 -0.396748 0.887934 0 0 0 0 0 0 +399 0 -0.3779 -0.228949 0.00616345 0.0805893 -0.0949238 -0.0145801 0.0410366 0.733263 0.03079 -0.251581 0.147248 -0.382729 -0.000215113 -0.558595 0.00290564 -0.0186543 -4.21869 0.0156476 0.0042051 0.134799 -0.00307805 -0.156802 0.000236833 -0.02904 -0.081084 0.125991 0.00356435 -0.435372 -1.52674 -0.0968954 0.00269898 0.120709 0.292396 0.145162 -0.218778 0.00775258 -0.0637178 1.90119 0.223376 0.21629 -0.00253821 0.17308 0.0137294 -2.65501 -0.0296765 0.210047 -0.804425 0.175741 -0.0158951 -2.07869 0.0818861 -3.40954 0.035384 0.0262696 -0.070711 1.47003 0.121651 -0.129506 0.0616655 0.00279477 -0.550812 0.172651 1.17414 -0.339868 0.588418 -0.687523 -0.0833199 -0.251527 -0.000863839 0.593205 0.165971 0.0430316 0.0911152 0.365262 0.136996 -0.399276 -7.51836 -0.39074 -2.54705 -0.370132 -0.266394 0.507948 0.295063 -0.4061 0.639019 -1.2678 0.00461232 -0.0253915 0.148873 -0.640804 3.11039 0 0 0 0 0 0.00616345 0.0805893 -0.000450685 0 0 0 0 -1.79555e-05 0 -0.00454638 0 0 -0.000154719 -7.5928e-05 -0.00282214 0 -0.000397917 -0.00664539 -0.0290248 0 0 -0.09757 -4.46855e-06 0 0.00607181 -0.497484 0 0 -0.0133408 -0.0637943 0 0.0306421 0 -0.00833271 0 0 -0.00115505 0 0 0.111483 -0.000358108 -0.00261107 0 -0.00852986 -0.00192413 0 0 0.0353258 0 -0.000228174 0.0754393 0.000535544 0 0 0.000137071 0.00119746 0 -0.00115518 -0.0389705 0.00224919 -0.487338 -0.000618363 -0.0176833 0 -1.13564e-05 -0.00457901 -0.139325 -0.00670281 -0.0669 0 0 0 0.278368 0.0394653 0.075385 0.00267278 0.00256565 -0.058388 3.68516e-05 0.000318436 -0.00116435 0.00925112 0 0 0 0 0 0 -0.0949238 0 -0.0145801 0 0 0 0 0.468504 -0.150166 0 0 -0.418958 0 -0.0368979 0 -0.00716088 0 0 -0.734621 0 -0.149046 0.167161 -0.149517 -0.0918444 0 0 -0.0289347 0 -6.38946 0 1.18293 -0.330842 0 1.09456 0.248372 -0.0121333 0 0.0681652 0 0 -0.0216794 0 -1.63332 -1.93134 0 0 -0.256916 0 0 0.349972 1.16397 -0.576319 0 -0.399854 0 0.123518 -0.0974966 0.198958 0.124168 0.0436275 -0.440599 0.0494041 -0.131474 -0.276494 -1.94284 -0.0772594 0 0 0 -0.250645 0.108268 0 0 0 0 0.0933742 -4.95789 2.20276 -5.72324 0.0454336 -0.0646977 -0.337682 0.136648 -0.1746 0.345259 -0.806428 0 0 0 0 0 0 +400 0 -0.794587 -0.1544 0.00440279 -0.109567 0.0972266 0.134655 0.376573 0.96787 0.0814954 -0.725169 0.0781497 0.0687158 -0.00050007 0.155675 -0.0118201 0.360522 0.537022 -0.19114 -0.0156148 1.52087 -0.0413962 0.141423 0.000741664 -0.279329 0.0746662 0.159534 -0.0171471 -0.460964 -0.766158 0.173824 0.00842552 -0.171208 0.452533 0.0253403 -0.0861767 0.00760739 -0.0150174 2.16837 0.178131 1.03861 -0.00577518 0.641255 0.0199956 -1.13494 -0.0481686 0.571949 -0.515113 -0.211397 -0.0785652 -0.112902 -0.175813 -4.04527 0.0182843 -0.0262134 0.031107 -2.13028 -0.172845 0.140646 0.268701 0.0183706 -0.160157 -1.74794 1.502 -0.0200179 0.185481 -0.253616 0.0637612 -0.148126 -0.0234733 0.489169 -0.080583 0.252771 -0.0128817 -0.428171 0.136696 0.182473 -5.4921 1.09968 -3.12084 0.548244 -0.988224 0.600134 0.916285 -1.14174 1.65476 -2.29773 0.00748636 -0.026881 0.108604 -0.388838 1.56087 0 0 0 0 0 0.00440279 -0.109567 0.00248331 0 0 0 0 0.000115874 0 -0.000419159 0 0 0.00016357 0.000312809 -0.00753716 0 -0.000796352 -0.00837291 -0.0506608 0 0 -0.290384 1.41686e-05 0 0.00950947 -0.129964 0 0 -0.0387315 -0.0472552 0 0.0353603 0 -0.0201718 0 0 -0.00287687 0 0 0.203203 0.00229425 0.00594039 0 0.048103 -0.00916299 0 0 0.0756441 0 0.000554801 0.103166 -0.0014923 0 0 0.00104397 -0.00719187 0 -0.0017833 -0.0211467 -0.000512326 -0.747375 -0.00311179 -0.0143167 0 0.00118349 0.0229864 -0.218066 0.0236307 -0.0552099 0 0 0 -0.899158 -0.0574011 0.0170238 -0.0028613 -0.00331667 -0.0433158 0.000338035 -0.000641629 -0.00283815 0.0278166 0 0 0 0 0 0 0.0972266 0 0.134655 0 0 0 0 0.294992 0.711811 0 0 -0.256872 0 -0.047328 0 0.0108355 0 0 0.314505 0 0.107918 0.0572375 -0.24558 0.0374882 0 0 0.161664 0 5.72527 0 2.80508 1.23019 0 0.524632 0.552533 -0.0276722 0 0.025113 0 0 0.0628789 0 2.84369 -0.137368 0 0 -0.021326 0 0 -0.347007 -1.76238 -0.0569088 0 -1.16056 0 -1.27315 0.0529459 -0.0776874 0.175166 -0.142071 0.312931 0.64141 0.00422104 -0.450965 -10.6617 0.149564 0 0 0 0.165635 0.0155648 0 0 0 0 -0.206906 -23.8979 0.695189 -5.27717 -0.418663 0.581531 -2.17403 0.17518 -0.167944 0.193919 -0.412428 0 0 0 0 0 0 +401 0 0.713939 -0.0394151 0.000386315 -0.0576316 0.157569 -0.136752 -0.131715 -0.440663 0.00465292 -0.268624 0.026544 -0.676195 -1.70017e-05 -0.511192 -0.00257244 -1.17482 0.11401 -0.064879 -0.00549888 -0.777487 -0.00926832 0.277755 1.36337e-05 -0.0454575 0.201107 -0.533154 -0.0139554 0.495305 0.825494 -0.371127 0.000323372 -0.106373 -0.0946399 -0.0446533 0.204967 0.000972984 -0.00428387 -2.30815 -0.0083574 -0.842063 -0.000468534 -0.0576103 0.000258634 -0.012024 -0.0108683 -0.750867 0.534108 -0.188415 -0.00181544 0.0617981 -0.189516 2.41656 0.00957295 -0.00139283 -0.0203113 -0.624478 -0.0777442 0.032154 0.0841007 0.00101207 0.397669 0.368215 -0.677641 0.0163758 0.169626 0.467252 0.0524306 0.00666503 -0.000614119 -0.161379 -0.204482 0.0250518 0.00609525 0.0697368 -0.156954 0.208939 6.13885 -0.569769 3.95168 -0.167543 -0.0845016 2.66775 0.0601523 -0.273606 0.609019 0.287988 0.000116729 -0.000155047 -5.66304e-05 0.0185507 -0.664815 0 0 0 0 0 0.000386315 -0.0576316 -0.000369281 0 0 0 0 -2.93546e-05 0 0.00724873 0 0 0.000504991 0.000273004 0.00100731 0 0.000114982 0.00149951 0.0499518 0 0 0.116205 1.88933e-05 0 -0.000661096 0.24975 0 0 0.0157863 0.0339594 0 -0.0255726 0 0.00405662 0 0 0.000502305 0 0 0.00693795 -0.000402176 0.00774367 0 -0.00315861 0.00817346 0 0 -0.0414475 0 -0.00141978 -0.0498543 0.00209985 0 0 -0.000788086 0.000194946 0 -0.00179072 0.0394709 0.00122282 0.279551 0.00711702 0.018113 0 -0.00365462 -0.00878213 0.060731 0.0018746 0.0595895 0 0 0 -0.122761 -0.0110078 -0.0564684 -0.0068428 0.00628159 0.0254032 -0.000527766 0.000513001 -0.000915445 -0.0202983 0 0 0 0 0 0 0.157569 0 -0.136752 0 0 0 0 0.058406 0.409639 0 0 0.0496839 0 -0.00572969 0 0.00412288 0 0 0.159868 0 0.736383 -0.0531342 -0.0621127 0.00322033 0 0 0.0806375 0 3.38195 0 -0.837409 -0.519037 0 -0.323359 0.656229 -0.00819985 0 0.000173841 0 0 0.0307584 0 -0.317773 0.785046 0 0 0.0602092 0 0 0.0314282 -0.524758 0.0885225 0 0.0416367 0 -0.256234 -0.0266487 0.0271564 0.0753029 0.0413925 0.581767 0.11757 0.00512909 -0.524359 -6.02713 0.0288598 0 0 0 0.0926248 -0.0217151 0 0 0 0 -0.120411 -8.02844 -0.450451 -0.565941 0.191376 -0.0316044 -0.162794 0.0791999 -0.0708374 0.012392 0.176591 0 0 0 0 0 0 +402 0 -0.423442 -0.205751 0.000134275 0.0139073 -0.195681 -0.130158 0.294874 1.37677 -0.000321506 -0.265593 -0.0180842 0.549431 -5.49354e-07 1.95023 -0.00199018 0.052994 0.475871 -0.053942 -0.00280134 2.36667 -0.000861194 0.274175 4.88116e-07 -0.0148586 0.39979 -0.0275661 0.00139938 0.229515 -0.422997 0.401522 5.93841e-06 -0.0862809 0.622813 -0.05529 0.214945 -0.000693954 -0.0240934 2.66014 -0.0243955 0.88902 -3.30432e-05 -0.363597 -0.00102573 2.80184 -0.0019028 0.138753 0.00582824 -0.124839 0.00189169 -1.95038 0.0380432 -4.33359 0.00225516 -0.00133733 -0.00936992 -0.908337 0.000249336 0.059624 0.0200519 4.57873e-05 0.411392 -1.59532 -0.728926 -2.17826 0.474554 -0.483317 0.182271 -0.175786 3.86688e-05 0.223132 -0.0802651 -0.0381251 -0.00680176 -2.00966 -0.016489 -0.059527 -7.98584 0.747939 -4.45463 -0.262337 0.379154 -2.10743 0.137273 -0.22649 0.639573 -2.51583 2.04367e-05 9.60054e-05 0.00303778 0.0020423 0.340662 0 0 0 0 0 0.000134275 0.0139073 -0.000500693 0 0 0 0 -1.24038e-05 0 0.000649376 0 0 -0.000399752 -0.000133846 0.000179758 0 2.1618e-05 -0.000355347 0.00589972 0 0 0.00746042 -9.30267e-06 0 0.000181014 -0.0203814 0 0 0.000729547 -0.0072899 0 0.00293805 0 0.000255388 0 0 2.67459e-05 0 0 0.00550603 -0.000178106 -0.00594751 0 -0.00743363 0.000700778 0 0 0.00175603 0 -0.00104986 -0.0129054 0.000653976 0 0 0.00081581 0.000827484 0 -0.00224788 -0.00479179 -0.000864029 -0.00991997 -0.00170193 0.00104157 0 -0.000646961 -0.00231061 0.0021887 -0.000795511 -0.00487185 0 0 0 0.136592 0.0186849 0.00954306 -0.000286484 0.00207058 -0.00441067 0.000480376 -0.000453045 0.000686148 -0.00135421 0 0 0 0 0 0 -0.195681 0 -0.130158 0 0 0 0 0.686197 -0.657021 0 0 -0.308119 0 -0.0239605 0 -0.0172575 0 0 0.537806 0 0.846954 0.230584 -0.113724 0.0848315 0 0 -0.28182 0 4.72398 0 4.34367 0.464092 0 1.59092 1.83578 -0.00757228 0 0.0965186 0 0 -0.0472328 0 1.4558 1.12279 0 0 0.159417 0 0 -0.216128 -2.22308 -1.09611 0 -2.38838 0 -1.26581 -0.174478 0.330045 -0.0575367 0.00735397 -0.0928408 0.178355 -0.102116 -0.291579 -11.159 -0.01418 0 0 0 -0.119496 0.0579531 0 0 0 0 0.0331591 -31.8592 2.25221 -11.3892 -0.0799396 0.365627 -2.49594 0.10465 -0.144268 0.284474 -1.11272 0 0 0 0 0 0 +403 0 -0.538312 -0.329146 -0.00548801 -0.145442 0.0625674 0.129067 0.350701 0.946747 -0.0340772 -0.654875 -0.0944315 0.512542 3.28255e-05 1.57098 -0.00376869 -0.425505 0.135873 -0.253751 -0.00178126 2.88326 -0.0378907 0.132358 -4.43297e-05 -0.180067 0.0667811 -0.275985 -0.0127386 -0.279673 0.0704116 0.261601 -0.00128944 -0.074312 0.250707 -0.157149 -0.117473 -0.00335214 0.0450088 1.56185 -0.121714 1.60574 0.000985406 0.0497799 -0.00353928 2.50912 0.0299381 0.789863 -0.0492502 -0.0206635 0.00607878 -0.0241976 -0.181665 -2.52091 0.00267692 -0.000730562 0.0296843 -3.38629 -0.291617 -0.0453205 0.166144 -0.0015354 1.11619 -2.29179 1.39809 -0.619821 0.212605 0.00864193 0.755256 -0.160043 0.00167694 0.102751 0.112582 -0.0141891 -0.0624717 -2.81678 0.0967042 -0.520025 -5.62064 1.60826 -4.72599 0.905057 -1.07378 -0.222501 0.856593 -0.98074 1.4233 -2.28173 -0.000321546 0.00120435 -0.0124335 0.0503065 -0.0567062 0 0 0 0 0 -0.00548801 -0.145442 0.00213318 0 0 0 0 7.76291e-05 0 0.00361331 0 0 -0.000911609 -0.000668416 -4.92678e-05 0 0.000133432 0.000242263 -0.00452846 0 0 -0.195541 -4.72696e-05 0 -0.00175886 0.0196065 0 0 -0.0229681 -0.00168849 0 -0.0159936 0 -0.00701081 0 0 -0.000799685 0 0 -0.0230075 0.00112761 -0.0122026 0 0.0332003 -0.0136786 0 0 0.0246943 0 0.00348766 0.0278611 -0.00479987 0 0 0.00218018 -0.0042476 0 0.00102124 -0.0320933 -0.00495543 -0.196002 -0.00960958 -0.00142652 0 0.00379566 0.00881188 -0.0380216 0.00849549 -0.0104964 0 0 0 -0.18201 -0.017487 -0.00370533 0.00702986 -0.0105379 -0.00541715 0.00130126 -0.00164466 0.00155056 0.00495987 0 0 0 0 0 0 0.0625674 0 0.129067 0 0 0 0 0.108087 0.531685 0 0 0.00981078 0 -0.024052 0 0.0162714 0 0 0.315798 0 0.366716 0.0546169 -0.0211344 0.0371925 0 0 0.218321 0 3.31034 0 3.3388 0.981556 0 0.375489 0.869998 -0.0120181 0 0.0171294 0 0 0.0464132 0 2.11124 0.188079 0 0 0.0334052 0 0 -0.359237 -0.595936 -0.156863 0 -1.3329 0 -1.18183 -0.0728397 0.0114015 0.293515 -0.202955 0.23931 0.508438 0.153099 -0.527955 -10.6934 0.170893 0 0 0 0.0949829 -0.0357319 0 0 0 0 -0.11425 -29.2532 -0.0999146 -5.70373 -0.073349 0.205957 -2.10744 0.261855 -0.215916 0.0471738 -0.270671 0 0 0 0 0 0 +404 0 0 0 0 0 0.161461 -0.422499 0.669863 1.42924 0 0 -0.366387 -1.76548 0 -3.30335 -0.0307054 0 0 0 -0.0360551 -3.03368 0 0 0 0 0.433658 0 0 0.697222 3.0286 -0.83383 0 -0.514299 0 0 0.236253 -0.0239145 0 0 -0.32934 -1.64335 0 0 0.0579399 -7.81105 0 -1.0539 1.42457 -1.13717 -0.134986 -0.512977 0.101707 0 0.0444242 -0.169771 0.489582 1.30838 0.241643 0.278342 0 0 1.88424 2.10825 0 0.811807 -0.0176973 0.310728 0 0 0 0 0.354719 -0.255719 0 3.58038 -0.903349 0 0 0 -2.36317 0 0.349444 -4.7739 0 -0.150082 -0.499452 -1.91901 0 -0.0370303 -1.00575 3.47333 -11.8493 0 0 0 -0.0277982 -0.00260959 0 0 0 -0.00618161 0.0428878 0 -0.000661155 0 0.000688597 0.000849492 0 0 0 0 -0.0252827 0 0.000850196 0 -0.0499226 0 -0.0231065 0.282015 0 -0.000967364 0 0 -0.0760152 0.00145584 0.0149014 0 0.00281254 0 0.00306485 0.0841263 -0.0107695 0.0201347 0.00323223 0 5.01217e-05 0 0 0 0.000200846 0 0 -0.00147763 0.00098233 -0.120082 -0.00436577 0 0 -0.00537073 0 -0.00658187 0 0 0.0172706 0.00597032 0.0268994 0.00727685 0 0 0.0035498 -0.000191396 -0.00202433 -0.0439923 -0.0893032 0 0.0474749 -0.000307986 0.0586469 0 0 0 0.196815 0 -0.0263138 0.0773419 0 0.00189712 -0.00746252 0.026751 0 -0.00141532 0.00712796 -0.0182851 0.0408769 0 0.161461 -0.0277982 -0.422499 -0.00260959 0.0540513 -0.1285 -0.0400966 -0.106282 -0.730454 0.00234075 -0.00111618 0.0218587 0.000106741 0.00407434 -0.00202598 -0.0124982 -0.0144351 0.0522217 -1.08167 -1.13734 -0.368445 -0.0141736 0.0723337 -0.266995 -0.262551 0.135529 -0.401585 -0.0441205 -5.43583 -0.232574 -1.36794 -1.22913 -8.98457e-05 0.0938317 -0.742741 0.00458207 -0.00287484 -0.0293348 -0.0326204 0.894157 -0.0211253 0.0204829 -2.65703 -3.39351 0.0033005 -0.0167584 -0.74095 -0.239835 -0.162663 2.21162 4.1027 -0.0135106 0.0619472 2.6196 0.00720534 1.69458 -0.00739467 0.158982 -0.0732915 -0.283459 2.02987 -0.199443 0.308124 -0.596999 -5.66389 0.365603 0.951826 0.108981 -0.169424 -0.201096 -0.0179285 0.0613698 -0.00569782 -0.0100185 -0.0307604 0.0504305 14.6308 -0.221192 1.73298 -0.267156 1.49564 -4.61221 0.00378808 0.227206 -0.521278 -1.19307 -0.000924686 0.0687834 -0.288506 0.460241 -1.61435 0 +405 0 0 0 0 0 -0.513384 -0.459992 0.657604 2.19988 0 0 -0.145677 -1.62585 0 -2.11043 -0.00998071 0 0 0 0.00321456 -5.01246 0 0 0 0 0.502182 0 0 0.337818 1.92661 -0.711038 0 -0.138673 0 0 0.256371 -0.0118543 0 0 -0.406059 -2.27394 0 0 -0.100782 -5.6697 0 -1.33936 0.427237 -0.288791 0.182447 -2.23034 0.368994 0 0.0146366 -0.09481 0.503528 3.2695 0.0917678 -0.147068 0 0 1.19261 5.42608 0 -0.211374 0.83715 -0.0058111 0 0 0 0 0.247927 -0.252887 0 3.97221 -0.761737 0 0 0 -4.63645 0 0.948275 -4.68921 0 0.303773 -0.308438 -6.06797 0 0.318907 -0.544413 1.29895 -7.26415 0 0 0 0.0279426 0.00207675 0 0 0 0.00884776 0.0115702 0 0.000351632 0 -0.000186591 0.00292995 0 0 0 0 0.0522392 0 0.00204544 0 0.0648111 0 0.056837 0.0774688 0 -7.86343e-05 0 0 0.00997073 -0.000278602 0.00730449 0 0.000939792 0 0.00081942 0.00534726 -0.00053963 -0.00345283 0.00127265 0 -1.43519e-05 0 0 0 6.69743e-05 0 0 0.000916193 -0.000752816 0.0263688 -0.00802174 0 0 0.00214663 0 -0.00221042 0 0 0.00602495 -0.00264752 -0.0446691 0.00978861 0 0 -0.0241605 -0.0197454 -0.00202835 -0.0481812 -0.0804712 0 0.00391973 0.00422852 -0.0192956 0 0 0 -0.146224 0 0.0110957 -0.0565796 0 -0.000830445 0.00417843 -0.0352717 0 0.000364875 -0.00150304 0.00571873 0.00406783 0 -0.513384 0.0279426 -0.459992 0.00207675 -0.263019 -0.147631 0.0485431 0.922882 0.233071 0.000296116 -0.00444654 0.122262 2.52508e-05 0.0044165 0.00183849 0.00368732 -0.0325247 0.0001781 -1.01413 -0.942154 0.212684 0.390663 0.0375224 -0.165796 -0.136967 0.272835 0.0477084 -0.0129567 -0.311857 -0.0267021 1.05714 -0.772671 6.94196e-05 2.31426 0.532327 0.00181646 -0.00337934 0.168927 -0.0226453 1.38964 0.0131484 0.0518653 -0.693863 -2.9962 -0.00462126 -0.0111436 -0.417712 -0.106852 0.190265 0.250697 2.06129 -1.19008 0.0224706 1.94513 -0.00799657 -1.61021 -0.00207633 0.198871 0.0746217 -0.345726 0.3219 0.0943295 0.0945079 -0.0122271 0.830257 0.096571 -0.797954 -0.0392172 -0.462212 0.062834 0.0141404 0.0415526 -0.00110183 -0.00153698 0.135548 -0.0328339 -11.3065 -0.573223 -13.4068 -0.0103117 0.0106157 -7.24453 -0.00106887 -0.0194571 -0.357088 -3.15951 -3.1536e-06 -0.00382365 -0.201429 0.149722 -1.71729 0 +406 0 0 0 0 0 -0.0204602 0.143657 -0.233124 -1.72191 0 0 0.0764633 0.899719 0 2.78033 0.0367757 0 0 0 0.228919 1.85515 0 0 0 0 -0.258942 0 0 -0.30451 -4.45935 0.443846 0 0.475551 0 0 0.018996 -0.000820358 0 0 0.309109 -0.365198 0 0 0.00745808 6.27961 0 -0.328626 -1.19761 1.63959 -0.328373 -0.550249 -0.477967 0 -0.157077 0.32932 -0.584282 -1.45918 -0.149206 -0.033631 0 0 0.594878 0.0543098 0 -0.768602 -0.377847 -0.178735 0 0 0 0 -0.298599 0.567578 0 -3.87887 -0.745706 0 0 0 3.60923 0 -1.31638 10.5262 0 -0.273899 0.382128 8.61824 0 -0.000309033 1.78828 -3.75493 17.2714 0 0 0 -0.101275 -0.00711938 0 0 0 -0.017117 0.0782877 0 -0.00141322 0 0.000706033 0.0038748 0 0 0 0 0.00671607 0 0.00360402 0 -0.0256534 0 -0.108663 0.434644 0 -0.00170457 0 0 -0.114196 0.00152144 0.0249335 0 0.00528455 0 0.0055949 0.100801 -0.017403 0.0208267 0.00396032 0 5.21771e-05 0 0 0 0.000377454 0 0 -0.00333227 0.0017701 -0.165216 -0.00606031 0 0 -0.00704428 0 -0.0111303 0 0 0.0371075 0.0122604 -0.0250511 0.0176064 0 0 -0.000161465 0.00512134 0.00543892 -0.0684014 -0.119834 0 0.0787953 -0.00152568 -0.0113485 0 0 0 0.241357 0 -0.0349406 0.112794 0 0.00287569 -0.00965843 0.0320089 0 -0.00180924 0.00957275 -0.024088 0.0556877 0 -0.0204602 -0.101275 0.143657 -0.00711938 0.297664 0.186343 -0.107526 -0.111491 0.205793 0.00343844 0.0104543 0.0926252 0.00016623 0.00627539 -0.00513212 0.00112259 0.0450499 0.0714641 -0.293956 1.28186 0.395959 -0.126627 0.125251 -0.0488161 0.359197 -0.19366 0.0500476 0.0248971 6.92621 -0.0395756 2.20883 0.554476 -0.000223697 -0.235136 0.899207 0.0068115 -0.000518708 -0.0490238 -0.00431472 -0.85283 0.00802033 -0.0403588 1.86516 1.00893 0.00330995 -5.46697e-06 0.0519731 0.170744 0.165749 -1.00137 2.86874 -0.908732 -0.0523846 -0.593703 0.0159325 0.3235 -0.00749622 0.0806758 0.575975 0.0674253 -0.0995589 -0.252296 -0.0627401 0.787533 3.63349 0.132831 -0.422472 0.120347 0.0886197 0.327031 -0.00910476 -0.0522968 -0.00905299 0.0736276 -0.108301 0.0242291 -23.6243 -0.326923 -4.14279 -0.401726 0.214572 2.69893 0.00462867 -0.250392 0.438217 0.379289 -0.00126541 -0.123225 0.227773 -0.275943 1.32841 0 +407 0 -0.1132 -0.397762 0.00714939 0.108344 -0.0853291 -0.0346355 -0.414278 0.0250028 0.0353997 -0.212607 0.10758 0.144 -9.86223e-05 1.28849 0.00829551 -2.33328 -8.97365 -0.0488615 0.0116129 0.254883 0.0038189 0.0624605 0.000108607 0.0267106 0.000488954 -0.616889 -0.00224189 -0.0513897 -0.587024 0.293368 0.00209411 0.189911 0.222374 -0.050643 -0.111079 0.00517181 -0.0387406 1.12861 0.14772 0.119143 -0.00205406 -0.260117 0.00678838 1.33269 -0.0421454 0.186653 -0.245229 0.256532 -0.0144937 -0.614988 -0.178248 4.16025 -0.0142814 0.00233019 0.014926 -1.26454 -0.228458 -0.194991 -0.0332055 0.003662 0.358596 0.841092 1.41278 -1.36702 0.258103 -0.195376 0.31551 -0.152836 -0.00178733 0.327743 0.0175956 0.0385262 0.0296468 -1.85692 -0.0982745 0.289031 -3.67046 0.394575 -1.45543 -0.135201 0.28789 -1.97774 0.163049 -0.515062 0.891603 -1.78875 0.00109164 -0.00358343 0.012959 -0.04204 0.149218 0 0 0 0 0 0.00714939 0.108344 0.00145639 0 0 0 0 3.81305e-05 0 -0.00091314 0 0 0.000279676 6.53993e-05 0.00160336 0 0.000116285 0.00889305 0.0154374 0 0 0.0788939 4.58005e-06 0 0.000571984 0.667876 0 0 0.00483693 0.0963781 0 0.0113153 0 0.00473757 0 0 0.000237711 0 0 0.106945 0.000533652 0.00398484 0 0.0203923 0.00925535 0 0 -0.00607093 0 0.000442283 -0.00924645 -7.13453e-05 0 0 0.000149859 -0.00315923 0 0.000497149 0.0225763 -0.00284585 -0.192939 -0.00136822 0.00359927 0 0.00445028 -0.0170525 0.0350038 -0.00324608 -0.0253049 0 0 0 -0.117831 -0.00486132 -0.0259801 -0.000296717 0.00143336 -0.0511551 -0.000185921 0.0002594 -0.000549611 -0.00856608 0 0 0 0 0 0 -0.0853291 0 -0.0346355 0 0 0 0 0.249189 0.199422 0 0 -0.245345 0 -0.0278473 0 0.00517473 0 0 0.0416711 0 0.802044 0.12142 -0.014028 0.0601308 0 0 0.146316 0 -5.42548 0 3.28874 0.0385391 0 0.815112 1.51441 -0.0015406 0 0.0442339 0 0 -5.14173e-05 0 -0.885113 -0.363029 0 0 0.0732723 0 0 -0.180753 -3.60603 -0.655318 0 0.673856 0 -2.01573 0.122511 0.0156689 0.714073 -0.179302 -1.06738 0.470659 0.114351 0.295145 7.86662 -0.0199243 0 0 0 0.0826646 0.0243112 0 0 0 0 0.0136105 -30.6841 1.88258 -9.72339 -0.176696 0.319735 -2.34933 0.0683115 -0.0606032 0.18719 -0.650053 0 0 0 0 0 0 +408 0 -0.702167 -0.496947 -0.00527956 -0.0474858 -0.195297 0.141885 -0.279518 -0.161516 -0.0552903 0.185691 0.00471162 0.0312999 8.1743e-05 -0.53022 -0.000762248 -1.23294 -6.06249 0.0496176 -0.000660458 0.446175 -0.0148994 0.451095 -0.000129304 -0.0247781 -0.148712 -0.226365 -0.00675736 -0.393902 -0.0995357 0.151542 -0.00277158 -0.00957762 1.45404 0.0973903 -0.226213 -0.000498136 -0.106545 5.47264 -0.0118858 0.996752 0.00152067 -0.38704 -0.00170827 -1.35513 0.0256182 0.951423 -0.189772 0.00478117 0.00323614 0.0569385 0.0822318 6.22228 -0.00287013 -0.00656461 0.0183948 0.16992 -0.0663388 0.0763833 0.0484209 -0.00260136 -0.824766 -1.54247 -1.75115 -0.713228 -0.0183193 0.283938 0.343424 -0.0320348 0.0056304 0.38827 -0.105448 0.0122551 0.116142 -0.397598 -0.05881 0.187212 -25.1166 -0.0595211 -5.61383 -0.72897 1.52631 -6.83267 -0.031399 0.209728 -0.259443 -0.480223 -0.000663555 0.00116924 -0.00196692 -0.00243419 0.0253014 0 0 0 0 0 -0.00527956 -0.0474858 -0.000190964 0 0 0 0 -5.49611e-06 0 -0.00151304 0 0 5.15475e-05 -3.84785e-06 -0.0014499 0 -0.000148174 -0.00682153 -0.0131102 0 0 -0.0750272 -3.65947e-07 0 -0.000371463 -0.406329 0 0 -0.00365704 -0.0531241 0 -0.0167119 0 -0.00498892 0 0 -0.000263765 0 0 -0.100128 -7.71513e-05 0.000816996 0 -0.00267473 -0.00128269 0 0 -0.000805912 0 7.88978e-05 0.00140372 -0.000107135 0 0 -0.000171495 0.000488943 0 0.00118853 -0.00126265 0.000415666 0.0508456 0.00122605 -0.0147847 0 -0.000762315 0.0152841 -0.00936407 0.000365448 -0.0120189 0 0 0 0.193875 -0.00221279 0.0156522 0.00167206 -0.00208394 0.0163323 -9.36285e-05 0.000101893 -9.23556e-05 0.00967924 0 0 0 0 0 0 -0.195297 0 0.141885 0 0 0 0 -0.252672 0.0902411 0 0 0.179901 0 0.015419 0 0.00400749 0 0 -0.203916 0 0.00256779 -0.00467866 0.0494287 -0.0200909 0 0 0.0734625 0 -3.52492 0 3.62018 0.00537351 0 -0.04363 0.44955 0.00215978 0 -0.0374408 0 0 -0.00372488 0 -1.03754 -0.121548 0 0 -0.013685 0 0 -0.130974 -4.74002 0.13189 0 0.330541 0 -1.06228 0.0353851 -0.0799011 -0.0612591 -0.138569 -0.00127824 -0.0317663 0.0459474 -0.574683 -2.55944 0.0899198 0 0 0 0.0951401 -0.027795 0 0 0 0 -0.0354147 -26.6819 -2.22954 -1.82762 -1.0212 0.818024 -2.37829 -0.111147 0.0983523 -0.150495 0.101239 0 0 0 0 0 0 +409 0 0.215731 -0.288194 0.00404389 0.0313149 0.0591196 -0.0788602 -0.822161 -1.445 0.000723586 0.0758606 0.0330421 -1.3589 -8.90555e-05 -2.37701 0.000755096 -2.16355 -4.82734 -0.00687458 0.00370364 -3.17948 0.0125104 0.171405 6.21103e-05 0.0523099 -0.281528 -0.822709 0.0157916 0.239552 -0.159183 -0.649862 0.000861283 0.0215191 0.0086879 0.0520369 -0.109567 0.0017654 0.205466 -1.21717 0.112581 -1.31297 -0.00204697 0.968225 0.00492762 -4.59111 -0.0476303 -0.59065 -0.0080335 0.133404 -0.0144942 1.03598 0.14038 4.75575 -0.0187563 -0.011836 0.0717241 2.02223 0.00769777 0.172161 -0.170977 0.00359652 -1.8048 0.751221 1.98338 0.547657 -0.386444 -1.16992 0.00773305 0.15933 0.000508073 -0.272132 0.284531 0.0493043 -0.263555 2.49716 -0.297696 -0.457318 7.23516 -1.11457 7.25718 0.216601 -0.176876 1.77963 0.08115 -0.0351938 -0.171421 1.38503 0.00123371 -0.00334573 0.00811524 -0.0206176 0.0404634 0 0 0 0 0 0.00404389 0.0313149 0.0032495 0 0 0 0 8.56858e-05 0 -0.00265526 0 0 0.000327065 8.98435e-05 0.00145152 0 7.4389e-05 0.00680692 0.0122515 0 0 0.0158498 6.23191e-06 0 0.00113 0.649246 0 0 -0.00474315 0.0757016 0 0.0278063 0 0.00200327 0 0 -0.000110475 0 0 0.134456 0.00119948 0.00470353 0 0.0455052 0.0213747 0 0 -0.034756 0 0.00106002 -0.0191614 -0.00105798 0 0 0.000122831 -0.00671297 0 0.000751873 0.00965118 -0.00586972 -0.21072 -0.00133689 0.00708318 0 0.0103054 -0.00555238 0.0212961 0.000493178 -0.0075444 0 0 0 -0.0880555 -0.00728476 -0.00783131 -0.00195234 0.00470516 -0.0416241 -0.000236531 0.000321169 -0.000642482 -0.0121042 0 0 0 0 0 0 0.0591196 0 -0.0788602 0 0 0 0 -0.0668143 0.303343 0 0 -0.117614 0 -0.0245087 0 -0.000499389 0 0 -0.144647 0 0.46682 -0.0364165 -0.057023 -0.012498 0 0 0.0594672 0 -4.77577 0 -0.593204 -0.732843 0 -0.288292 0.327129 -0.00830889 0 -0.00903204 0 0 0.0210121 0 -2.08847 -0.228822 0 0 -0.0207337 0 0 -0.252681 -3.02547 0.440394 0 -1.56446 0 -0.641234 0.0704284 -0.0902583 -0.076878 -0.110969 0.0878855 0.364348 0.00917987 0.604057 -1.2513 0.0234128 0 0 0 0.10895 0.0141247 0 0 0 0 -0.03592 -2.97516 0.226864 1.2781 -0.0842449 0.277898 -0.358307 0.0316653 -0.0100391 0.0162371 0.223219 0 0 0 0 0 0 +410 0 -0.429844 -0.148969 -0.0177552 -0.195569 0.0817677 0.161411 -0.152816 -0.606639 -0.157545 0.0174428 0.242405 -0.810866 0.00124396 -0.331491 0.0302227 -0.971445 -7.38923 -0.00843912 0.0474528 -2.39637 -0.0324551 -0.246618 -0.00121999 -0.0608263 -0.470636 -0.0584864 -0.0096498 -0.735417 -1.81981 -0.0637538 -0.0143376 0.482145 -0.409547 0.0674861 -0.26075 0.0111817 -0.139588 -0.924704 0.000459699 -0.255162 0.0162918 -0.785617 -0.0110203 -2.77733 0.202285 0.462416 -1.26328 0.71122 0.0581676 0.399952 0.231419 0.984203 -0.0667544 0.11763 -0.392718 3.02156 -0.0721141 -0.046624 0.0265104 -0.0541749 -1.93109 0.799186 1.77326 1.82169 0.532965 -0.668913 0.194656 -0.402235 0.0302306 0.333408 0.0381127 0.238815 0.0593386 2.39719 1.01144 0.109635 4.18259 -1.38414 4.16545 -0.140691 -1.33488 6.93241 0.389341 -0.484567 -0.0484856 2.78952 -0.090543 0.130983 0.0101704 -1.18019 7.14496 0 0 0 0 0 -0.0177552 -0.195569 0.00241518 0 0 0 0 0.000376355 0 -0.0161989 0 0 0.00324003 0.00315203 -0.00926765 0 -0.00152478 0.00254334 -0.108345 0 0 -0.0567829 0.000227282 0 -0.000717187 -0.154012 0 0 -0.00621587 0.0127262 0 -0.0573187 0 -0.00757832 0 0 -0.00102705 0 0 -0.248616 0.00527794 0.0451636 0 0.0338656 0.00660541 0 0 0.0134439 0 -0.000585126 -0.0306309 0.00670092 0 0 -0.0020044 -0.00754459 0 0.00257447 0.0356316 -0.000881255 -0.0650033 0.00129459 0.00395708 0 0.00382607 -0.0222017 0.0754009 -0.0336034 -0.0121834 0 0 0 1.18458 -0.107786 0.277836 0.0312851 -0.054422 0.104176 -0.00301664 0.00495975 -0.010389 0.0260001 0 0 0 0 0 0 0.0817677 0 0.161411 0 0 0 0 0.280019 -0.114953 0 0 -0.111881 0 -0.0148464 0 0.00997331 0 0 -0.631701 0 -0.450802 0.0763487 -0.113452 -0.0652515 0 0 0.255186 0 -5.27451 0 0.284305 -0.0629979 0 0.489705 -0.353514 -0.0129458 0 0.0351208 0 0 -0.031945 0 -0.877835 -1.08215 0 0 -0.100645 0 0 0.000277228 0.458279 -0.12661 0 0.443817 0 -0.442793 0.0817301 -0.00124347 0.476107 0.00442 -0.172858 0.351228 -0.0441966 -0.178605 1.38296 0.0192623 0 0 0 0.0476117 0.057673 0 0 0 0 -0.0202327 -6.75619 0.877269 -3.8808 -0.315641 0.301503 -0.567155 0.088805 -0.0767688 0.135453 -0.409584 0 0 0 0 0 0 +411 0 -1.00227 -0.454213 -0.000572768 -0.0122429 -0.178193 0.0224241 -0.584205 0.254935 -0.00786275 -0.374001 -0.0461359 1.12246 0.000105032 2.74699 0.00432712 -1.92748 -6.70616 -0.143876 0.0145812 5.30593 -0.00538244 0.330031 -0.000263065 -0.0517821 0.217723 -0.626255 0.0107463 0.189695 0.582621 0.635743 -0.0022223 0.106678 0.816438 -0.113128 -0.0460187 -0.00372184 0.166033 3.26077 -0.163746 2.5989 0.00113218 0.0494019 -0.013009 4.5665 0.00891497 1.13175 0.224784 0.294804 0.0455675 0.697414 -0.351187 4.0688 -0.0480845 0.0637156 -0.284146 -1.0665 -0.266773 -0.243553 0.0929385 -0.00258331 -0.058322 -5.76772 -0.469017 -1.85321 -0.198791 0.343551 0.77611 0.0958103 0.00224627 0.293184 -0.183981 -0.266589 -0.219225 -3.51177 1.01704 -0.30215 -13.6371 1.2741 -3.04637 0.250186 0.663831 -4.33984 0.137195 -0.218946 0.763102 -0.662853 -0.00399035 0.0424236 -0.147892 0.699004 -2.28749 0 0 0 0 0 -0.000572768 -0.0122429 0.0013832 0 0 0 0 0.000233102 0 -0.00563371 0 0 0.00021304 -0.000441356 -6.23395e-05 0 -0.000362274 -0.000972002 -0.0049409 0 0 0.212688 -3.76226e-05 0 0.018234 0.335564 0 0 0.0312005 0.00131485 0 0.111062 0 0.00993418 0 0 0.00140741 0 0 0.273619 0.00326104 0.00431728 0 0.0194289 0.0293252 0 0 -0.142293 0 -0.00261144 0.13325 0.00530356 0 0 0.000123613 -0.00437885 0 0.0134666 0.0199628 -0.00593936 -0.319766 0.00294566 -0.0210652 0 0.00351713 -0.0128472 -0.0609992 -0.0180322 -0.0158933 0 0 0 -1.32783 0.0613357 -0.1712 -0.0233521 0.0551125 -0.136875 -0.000210197 -0.000765136 0.00328331 -0.00805303 0 0 0 0 0 0 -0.178193 0 0.0224241 0 0 0 0 0.353177 -0.312161 0 0 9.04847e-05 0 -0.00786318 0 -0.0172724 0 0 0.741893 0 1.12597 0.145659 0.0103939 0.138376 0 0 -0.132151 0 -3.36062 0 7.32253 0.278508 0 0.922608 2.71981 0.00146308 0 0.0559815 0 0 -0.0463139 0 -0.36784 1.22434 0 0 0.24698 0 0 -0.28906 -6.04687 -0.195493 0 -0.36262 0 -1.4814 -0.0290954 0.0159716 0.319899 -0.185688 0.0556119 0.118033 0.0723306 -0.332661 0.503984 0.126622 0 0 0 0.114245 0.0108935 0 0 0 0 -0.036632 -71.6008 -1.96918 -12.3408 -1.48667 1.37673 -4.80758 -0.0544049 0.0485572 -0.00998656 -0.617428 0 0 0 0 0 0 +412 0 0.291005 0.342907 -0.0438231 -0.423026 0.373597 0.279568 -0.545173 -2.49165 -0.389314 0.875763 -0.332086 0.0174419 0.00315742 -1.79371 -0.036829 1.53325 5.65197 0.109035 -0.0480371 2.59434 -0.0336684 -0.168419 -0.00327404 0.00626055 -0.564289 0.482604 -0.00695393 -0.0301514 2.52218 -0.220515 -0.0373129 -0.498521 -0.543974 -0.000680298 -0.20516 -0.032652 0.121233 -2.33497 -1.02523 1.3936 0.0395534 -0.112475 -0.0974964 -1.07861 0.45666 0.697369 0.663182 -0.753484 0.402036 -0.501145 0.630125 2.27161 0.146961 -0.189007 0.15958 0.867122 0.439426 0.160901 -0.337625 -0.126373 -0.10969 -0.410453 0.0515461 0.6063 0.169213 -0.315652 -0.47946 -0.104739 0.0801632 -0.594204 0.268772 -0.875553 0.0472092 2.75054 0.515386 0.686058 11.11 -2.40814 9.13881 0.0960534 1.5941 -1.87567 -0.303766 0.708245 -1.68188 2.0812 -0.204401 0.525375 -1.46094 3.64707 -9.9026 0 0 0 0 0 -0.0438231 -0.423026 0.00679595 0 0 0 0 0.00110157 0 -0.0329096 0 0 0.00444932 0.00448358 -0.0187643 0 -0.0035311 0.00859693 -0.184734 0 0 -0.0491511 0.000326525 0 0.020095 0.565502 0 0 -0.0114715 0.102028 0 0.00880042 0 -0.0132026 0 0 -0.00219102 0 0 -0.208427 0.0154388 0.0615438 0 0.0952359 0.0436004 0 0 0.0103582 0 0.000223869 0.0174763 0.00311159 0 0 -0.00662045 -0.014272 0 0.00832552 0.0113912 0.000306056 -0.178804 0.0230961 0.0012777 0 0.0232945 -0.0200274 -0.0242137 0.0161534 -0.0456775 0 0 0 1.80786 -0.187351 0.501094 0.0460885 -0.080878 0.145616 -0.0050741 0.00848863 -0.0170576 0.0439508 0 0 0 0 0 0 0.373597 0 0.279568 0 0 0 0 -0.593883 -0.25711 0 0 0.701512 0 0.0745941 0 0.00773231 0 0 0.837124 0 -0.877924 -0.240617 0.160414 0.0579155 0 0 -0.132474 0 6.00294 0 -2.63383 0.105249 0 -1.64554 -1.49449 0.0168787 0 -0.0963388 0 0 0.031825 0 1.06598 2.58513 0 0 0.228951 0 0 0.183614 0.358893 0.329933 0 0.259814 0 -0.320795 0.210809 -0.215172 -1.09786 -0.101819 1.44831 0.320678 0.129911 -0.645681 -4.12462 0.188034 0 0 0 -0.101969 -0.197593 0 0 0 0 -0.0300184 24.1794 -5.94144 15.3832 -1.56742 1.19656 1.23095 -0.49062 0.421041 -0.49809 1.17336 0 0 0 0 0 0 +413 0 0 0 0 0 -0.0228797 0.321832 0.340268 0.453276 0 0 -0.0537688 1.09905 0 3.8548 0.0783371 0 0 0 -0.0725027 1.87499 0 0 0 0 -0.18939 0 0 -0.711782 -1.23299 1.12003 0 -0.0867087 0 0 -0.0497169 -0.0152489 0 0 0.186874 1.72274 0 0 -0.117985 3.82603 0 1.21993 -0.715086 -0.896884 0.307087 1.80627 0.36303 0 0.525657 0.376852 -1.21631 -5.07272 0.418572 0.26989 0 0 0.804689 -2.57192 0 -0.571518 -0.365534 -0.970028 0 0 0 0 0.503822 -0.9334 0 -4.30269 2.77701 0 0 0 -0.435738 0 -0.332929 1.22055 0 -0.428137 0.552705 -2.22993 0 -0.588482 0.34232 -2.36341 7.89383 0 0 0 -0.108952 -0.0050937 0 0 0 0.0937307 -0.0242255 0 0.0192539 0 0.0179813 0.0805791 0 0 0 0 0.108508 0 0.023331 0 0.503656 0 0.36692 -0.52143 0 0.000713473 0 0 0.104089 0.00374495 -0.0845998 0 -0.00630362 0 -0.00194675 -0.308285 0.0223779 0.0693197 -0.0705453 0 0.00107961 0 0 0 -0.000679967 0 0 -0.0113037 -0.00877344 -0.0870429 0.00707229 0 0 -0.0362801 0 -0.000666785 0 0 0.0142419 -0.00784199 -0.312064 -0.0233591 0 0 0.0820228 0.0601015 0.0613139 0.266148 0.253566 0 -0.0628475 0.0133451 -0.0721032 0 0 0 -1.90279 0 -0.246866 -0.135858 0 -0.0173549 -0.0173615 -0.0518325 0 -0.00325941 -0.00310488 -0.0268402 0.159551 0 -0.0228797 -0.108952 0.321832 -0.0050937 0.111827 -0.00381174 0.219254 0.299884 -1.01855 0.00404589 0.0392547 -0.158956 -0.0053101 -0.103699 0.0547456 -0.0202512 -0.0360083 0.101272 1.09744 -0.216484 0.0630031 0.133314 -0.300079 0.182342 -0.0564995 -0.0179922 -0.561547 -0.0132705 12.2559 0.214968 0.92504 2.74918 0.0160892 0.433103 0.202054 -0.103277 0.00288416 0.055741 0.0205024 -0.282546 -0.0549247 0.00268007 5.89325 2.57077 0.00339504 0.0273774 0.43573 -0.0640479 -0.00681753 -1.24316 2.13013 1.42385 0.0767715 -4.94284 0.0176949 -1.78826 1.13993 -1.35372 0.488431 0.138016 -0.592688 1.98115 -0.292761 3.94761 -15.1353 -0.395907 -0.571896 0.0321243 0.160008 -0.175319 0.355147 -0.0371553 -0.0387021 0.000203671 -0.0992583 0.895028 -3.37011 -0.34929 -1.33798 -0.993951 -0.101535 0.372355 0.0691576 -0.386336 0.329785 -0.535009 -0.17724 -0.118485 0.124692 -0.244826 0.168207 0 +414 0 0 0 0 0 -0.239902 -0.117149 0.496438 2.15189 0 0 -0.561413 -0.265343 0 -0.570866 -0.109954 0 0 0 -0.239901 -1.18864 0 0 0 0 0.329591 0 0 0.146479 2.39529 -0.12373 0 -0.26196 0 0 0.0606356 -0.0815739 0 0 -1.56329 -0.633944 0 0 -0.358439 -1.40969 0 -0.286766 0.791032 -0.375519 0.512984 0.0468724 0.269734 0 0.692571 -0.0348117 0.137157 -1.73225 -0.286662 -1.62206 0 0 -1.9388 4.32413 0 0.972184 -0.164826 0.815223 0 0 0 0 -0.360068 -0.779101 0 -0.416626 -0.882678 0 0 0 -3.21586 0 1.98969 -3.68276 0 1.03224 -1.01702 -1.03223 0 1.92886 -1.98512 5.08252 -6.24427 0 0 0 0.147271 0.0259512 0 0 0 0.0269495 -0.0349542 0 0.00427367 0 -0.0168369 0.00113692 0 0 0 0 0.100307 0 0.0111722 0 0.134354 0 0.180559 -0.121467 0 0.00200831 0 0 -0.0452306 -0.00640383 0.0315431 0 -0.00185701 0 -0.00322373 -0.128111 0.00365743 -0.0881823 0.00211133 0 -0.00113484 0 0 0 -0.000273025 0 0 0.0124514 -0.00867087 -0.306685 0.010661 0 0 0.000944424 0 0.00349232 0 0 -0.00879514 -0.0198461 -0.116164 -0.0277967 0 0 0.11134 -0.00954487 0.05786 0.0584066 0.0386571 0 0.0662485 -0.017669 0.312 0 0 0 0.218212 0 0.0878839 0.58769 0 -0.00241423 0.0585348 0.003291 0 0.0069124 -0.0100416 0.00443437 0.285415 0 -0.239902 0.147271 -0.117149 0.0259512 -0.210857 -0.0550663 0.0210062 -0.39355 -0.294691 -0.0154319 -0.0335396 0.416508 -0.00117479 0.0406632 -0.00736306 -0.0209771 -0.0516614 -0.106795 -0.500987 -0.37242 -0.327162 -0.0833078 0.31597 -0.068306 -0.360171 0.136839 0.0753001 -0.000381488 -7.36771 -0.549547 -2.82879 -0.542759 -0.00386098 -0.491442 -1.08283 0.0421771 -0.0139422 -0.0699207 -0.102717 0.849741 -0.120282 0.0214829 -2.10039 -2.17631 -0.00435711 -0.0680907 -0.22262 -0.0215734 -0.113254 -0.961976 -2.68408 -0.764607 0.0130113 -4.20679 -0.062529 0.588882 0.103889 0.180299 -0.266244 0.113462 -1.02226 -0.271998 0.0836104 -0.469453 -12.7359 0.104196 0.0260638 0.16518 -0.296683 -0.184322 -0.0948788 0.0259519 -0.0481363 -0.00621623 0.042388 -0.141783 10.3059 1.19489 -0.752575 2.66993 -0.217085 -0.602213 -0.290719 0.905043 -0.658686 0.174352 0.186907 0.343902 -0.423194 0.597853 -0.869065 0 +415 0 0 0 0 0 -0.35018 -0.135456 0.709431 3.06753 0 0 0.192255 -0.663658 0 -0.943283 -0.227214 0 0 0 -0.461941 -0.810147 0 0 0 0 0.489357 0 0 -0.019786 -6.18752 -0.163919 0 -0.980978 0 0 0.0567405 -0.0190665 0 0 2.61509 0.0159974 0 0 0.557101 -4.60779 0 0.121816 -0.712852 -2.06612 -0.200102 2.96594 -0.0068686 0 0.959082 -0.197624 -0.356078 -0.355042 0.832435 0.485979 0 0 -0.89543 -3.14664 0 -1.55993 -1.28203 -0.744831 0 0 0 0 -0.28243 -0.695859 0 -0.560227 0.889568 0 0 0 -7.31039 0 -3.83924 6.59988 0 -2.18882 3.21446 -3.91669 0 -3.14219 5.49396 -9.01313 22.0889 0 0 0 -0.50702 -0.123004 0 0 0 -0.145783 0.0259891 0 -0.0319592 0 0.00287089 0.084165 0 0 0 0 -0.00638783 0 -0.00381185 0 0.441103 0 -0.468889 -0.891485 0 0.0115392 0 0 -0.152226 0.00231523 -0.12879 0 0.0188383 0 0.00172459 -0.13182 0.00989369 0.0446424 -0.00730564 0 7.7798e-05 0 0 0 0.00118687 0 0 0.00129324 0.00154545 0.099679 -0.0374288 0 0 -0.0136209 0 -0.00630123 0 0 0.0184374 -0.0028912 0.101996 0.0015639 0 0 0.0884352 0.0799761 -0.0209198 -0.0486481 0.266294 0 -0.251015 -0.0203244 -0.0471724 0 0 0 -0.95391 0 -0.147087 0.431827 0 -0.0132898 0.0285089 -0.0361598 0 -0.000640848 0.00293782 -0.0188265 0.204069 0 -0.35018 -0.50702 -0.135456 -0.123004 1.31728 0.175478 -1.05265 -0.447223 -0.0634736 0.0173658 0.0962965 0.409634 0.00766302 0.104943 -0.184691 -0.0721378 0.0855437 -0.136085 0.117431 -0.687865 0.119545 0.143409 0.559871 0.0330413 0.480154 -0.374258 -0.116598 -0.0327355 3.06725 1.10143 0.988219 0.400388 -0.0330563 -0.129676 0.605167 0.0892401 0.0310203 -0.00641624 0.257932 -2.52311 -0.132202 -0.0450903 1.23922 -0.319538 0.0158311 0.109726 -0.0335777 -0.18464 -0.444192 1.22267 -1.95729 1.85292 -0.279211 -0.427502 0.516193 -0.90548 0.944476 -1.46249 0.406151 0.340545 -1.07604 -0.472247 -0.144445 -2.05487 -12.2325 -0.914499 1.24249 -0.371849 0.183991 -1.4395 0.318421 -0.227224 0.274562 0.121227 0.0284062 0.81379 -3.60028 -1.42867 -1.2249 -0.616868 -3.03715 7.41696 -0.264476 -0.873981 1.54471 -0.204328 0.238168 -1.05709 1.70807 -2.06137 3.4161 0 +416 0 -0.689269 0.123343 0.149684 -0.108142 -0.00371067 -0.28082 0.133138 0.603828 -0.0437285 -1.48313 0.096425 -0.875176 -0.180131 -1.32487 0.257908 0.65791 0.753503 -0.61234 0.618888 -3.09463 -0.348246 -0.265626 0.18736 -0.977931 0.56363 0.245805 0.550277 0.411937 0.8891 -0.330853 0.331843 0.932311 -0.520954 1.63091 0.259962 0.126883 1.95725 0.802202 0.674952 -1.4682 -0.436764 5.59606 0.440895 -3.79919 -0.984571 -0.7712 0.700519 2.43226 -1.40682 0.788026 -2.27652 -1.10403 -0.915238 0.0495304 0.476916 4.07665 -1.88844 -0.769811 1.45463 0.763672 0.00801675 3.83432 0.792063 -1.1581 -1.6002 1.23085 1.73628 1.67254 0.0249252 1.81175 -0.636795 1.91888 -1.81979 3.78904 -1.62724 -5.1989 -6.18976 3.01818 -2.56934 1.78672 -0.460965 -2.20573 2.70027 -1.89387 1.39518 0.943872 1.64493 -1.82496 1.52162 -0.413419 -4.08954 0 0 0 0 0 0.149684 -0.108142 0.00447617 0 0 0 0 -0.00184556 0 0.0107153 0 0 0.00362531 0.024688 -0.00289395 0 -0.00677227 -0.233832 -0.00719655 0 0 0.108701 0.00162657 0 0.0934144 -1.80614 0 0 0.00145833 -0.568865 0 0.181009 0 0.249151 0 0 0.031292 0 0 1.14544 -0.0233903 0.0655201 0 0.0769448 -0.00602761 0 0 0.17862 0 -0.00967872 -0.239992 0.0161216 0 0 -0.00752991 -0.0195376 0 -0.0112997 -0.12116 0.00119168 1.15888 -0.0293712 0.0263161 0 0.0550704 -0.0104162 -0.173774 0.0318851 0.0474307 0 0 0 -5.82017 -0.391814 -0.108553 -0.0565436 0.0180168 -0.118401 -0.00300134 0.000620295 -0.0149692 0.0477874 0 0 0 0 0 0 -0.00371067 0 -0.28082 0 0 0 0 -0.410269 1.56214 0 0 0.632921 0 0.0706423 0 0.0527827 0 0 -0.387947 0 0.317849 -0.00169168 0.51182 -0.0613216 0 0 0.514826 0 -2.02043 0 3.10166 -0.962946 0 -0.302864 1.24279 0.0671367 0 -0.0263464 0 0 0.191799 0 -1.61272 -1.23091 0 0 -0.176806 0 0 -0.0722091 -2.90069 -0.273007 0 1.56072 0 1.71216 -0.54438 0.407561 0.466945 0.198351 -0.343696 -2.16607 -0.18742 -1.55012 7.2659 -0.222826 0 0 0 0.271847 0.115 0 0 0 0 -0.405461 -25.721 -5.32404 2.28719 -2.1927 1.64248 -1.99372 -0.647916 0.503381 -0.368072 0.124825 0 0 0 0 0 0 +417 0 -0.30387 0.00853524 0.0208568 0.246318 -0.0919134 0.0597052 0.27 0.619722 0.163863 -0.957637 0.308256 1.23298 0.0126478 1.07844 0.066499 1.1576 1.87357 -0.101716 -0.0509908 1.18328 0.00274892 0.0839376 -0.0122037 -0.250978 0.214045 0.562507 -0.0659544 -0.0232628 0.133654 0.307458 -0.00644969 0.358119 0.410363 -0.248968 0.0627689 0.0381082 -0.432209 2.562 0.356185 0.453364 0.0380528 -1.06639 0.0224296 3.71569 0.0652506 0.213383 -0.0407268 -0.0762618 0.146301 0.09716 -0.296717 -1.98182 -0.143597 0.577749 -0.415284 2.00069 1.47796 1.13503 0.153499 -0.128947 1.24363 -2.47907 -1.39716 0.260009 -0.367675 -0.471572 0.480085 1.3365 -0.137971 -0.0961778 0.212205 0.564174 0.451074 -0.109434 0.233479 1.21227 -8.36142 0.686243 -2.01217 -1.26418 -0.203593 -0.774818 1.58426 -1.35736 0.896509 0.057563 -0.109015 -0.213961 -0.261713 -0.647964 -0.61476 0 0 0 0 0 0.0208568 0.246318 -0.0104672 0 0 0 0 -0.00304585 0 0.0236576 0 0 -0.0132927 -0.0535551 0.0585124 0 0.0088609 -0.123101 0.152248 0 0 0.610721 -0.00372344 0 0.0608946 -0.287163 0 0 0.084702 -0.276171 0 0.218733 0 0.174992 0 0 0.0246615 0 0 0.431322 -0.0428883 -0.189756 0 -0.144977 -0.0525444 0 0 0.436141 0 -0.0239461 -0.247742 0.0195368 0 0 0.020259 0.018631 0 -0.0498767 0.123315 -0.0133139 0.719225 0.0159347 0.0394114 0 -0.020452 -0.0368667 -0.272329 0.174254 -0.0320946 0 0 0 0.114325 0.259712 0.107825 -0.0275828 0.0383756 -0.031415 0.0149201 -0.0158356 0.0152312 0.0309203 0 0 0 0 0 0 -0.0919134 0 0.0597052 0 0 0 0 0.180158 0.169174 0 0 -0.67225 0 -0.0675414 0 0.00615398 0 0 0.721383 0 -0.132905 0.0274379 -0.293996 0.105805 0 0 0.0743183 0 2.96642 0 0.139718 0.612353 0 0.16495 -0.111532 -0.0323333 0 0.0244764 0 0 0.00459779 0 1.64413 1.35662 0 0 0.212829 0 0 -0.0799115 0.706221 0.211502 0 1.25764 0 -0.252016 0.572637 -0.341674 0.179341 -0.234294 0.441748 0.428904 -0.0128931 -0.0101054 5.36633 0.170419 0 0 0 0.147114 -0.0194303 0 0 0 0 0.186329 5.72687 3.95668 -1.45547 0.18736 0.0839182 -0.163754 0.613336 -0.390946 0.273699 -0.00209143 0 0 0 0 0 0 +418 0 -0.41601 -0.352066 -0.147388 -0.330406 0.60379 0.279262 -0.906291 -2.71624 -2.11363 1.85959 0.334988 -0.527456 0.0755162 0.203022 0.251675 1.64699 -2.03785 0.825953 0.443427 -3.11811 0.319838 0.672766 -0.168222 0.688988 -1.09977 0.957568 0.00146586 -0.580577 -2.11748 0.0548441 -0.592287 1.32165 2.51745 0.347685 -0.494335 0.0508708 -0.622071 7.81861 0.95338 -0.499064 0.0503287 -1.25414 0.100091 -0.438045 -0.338213 0.380018 -1.01416 2.47233 -0.278036 3.20852 -0.638516 -10.9271 -0.378058 0.080999 -0.127275 0.515245 -1.31425 -1.34314 -0.222822 -0.0966037 -3.10478 2.24095 -6.25323 0.826732 -1.73037 2.19474 -1.71955 0.716838 1.37701 0.355556 -1.81728 1.56511 1.6124 1.11868 0.531921 -0.351607 -36.9558 -11.6639 10.5575 -8.73271 6.71824 -8.25676 -2.32073 1.50822 -1.34866 3.03592 0.565054 -1.22963 2.54667 -4.90488 9.73964 0 0 0 0 0 -0.147388 -0.330406 -0.000454558 0 0 0 0 0.00174524 0 0.0207429 0 0 0.00109521 -0.00711844 0.00480921 0 0.012735 0.159027 -0.0323862 0 0 0.0680556 -0.000533282 0 -0.00990742 -1.2238 0 0 -0.0150587 -0.0250192 0 0.158244 0 -0.0819512 0 0 -0.0189888 0 0 0.925488 0.0256449 0.0203756 0 -0.00257856 0.0501773 0 0 0.1632 0 0.00494947 -0.260831 -0.00260965 0 0 0.00141269 0.00337453 0 -0.0387142 0.0633857 -0.00765132 0.600649 0.0562115 0.0421873 0 0.00649058 0.00868329 0.0173935 -0.0296469 -0.0739424 0 0 0 -2.04097 0.00457196 0.0287175 -0.0707768 0.0740213 -0.107189 -0.00034871 -1.53543e-05 -0.00497773 0.0209322 0 0 0 0 0 0 0.60379 0 0.279262 0 0 0 0 -0.204476 0.763842 0 0 0.867899 0 0.1056 0 0.0960215 0 0 -0.837211 0 -0.480507 -0.103565 0.265374 -0.115169 0 0 0.666484 0 -6.35082 0 -0.278495 -0.5285 0 -1.14424 -0.32571 0.0231711 0 -0.0142209 0 0 0.0996735 0 -1.84619 -1.31321 0 0 -0.19971 0 0 0.150466 -2.78916 -0.756304 0 1.51325 0 1.96311 -0.742399 0.766045 0.620608 0.211724 -1.23533 -2.05063 -0.0590516 -0.99801 11.4538 -0.300544 0 0 0 0.110322 0.0206351 0 0 0 0 -0.237421 -2.57965 -4.89678 7.00058 -0.923027 0.262949 0.663243 -0.792453 0.594149 -0.515179 0.713914 0 0 0 0 0 0 +419 0 0.128817 0.0024062 0.0198392 -0.063754 0.0212097 -0.164627 0.372319 0.300718 0.291982 -0.327354 0.483854 -0.967011 -0.00773403 -2.34036 -0.0571135 0.00939729 0.249166 -0.170846 -0.12644 -1.0036 -0.0566145 -0.00876429 0.0115344 -0.264547 0.110758 0.0168845 -0.0644639 0.249142 -1.01828 -0.636382 0.0614643 -0.377338 -0.0346249 -0.0616528 0.0270878 0.0481824 0.164699 0.210016 0.739031 -0.803682 -0.0406933 1.09432 0.105114 -4.32608 -0.113897 -0.604218 -0.190858 -0.736626 -0.278994 0.532928 -0.785538 -2.61392 0.202729 -0.571255 0.408322 3.35198 1.65084 0.389637 0.374871 0.121591 0.368752 -0.710576 -0.207057 -0.480136 -0.590965 0.559085 -0.105459 0.188964 -0.116229 0.382275 -0.515039 0.368508 -0.0685571 -0.524472 -0.543592 1.60941 -2.56341 -1.319 1.72826 -1.57816 1.20268 -0.317387 0.178857 -0.404354 0.840549 -0.584712 0.120047 -0.429516 0.58321 -0.66026 0.832814 0 0 0 0 0 0.0198392 -0.063754 -0.000331416 0 0 0 0 -0.000503971 0 0.01946 0 0 0.0015458 0.00529342 0.00456413 0 0.000686703 -0.023464 0.0678047 0 0 -0.0204589 0.000327905 0 0.0221534 -0.584168 0 0 -0.0104166 -0.12975 0 0.0988494 0 0.0344435 0 0 0.00313525 0 0 0.706981 -0.00592316 0.0288917 0 0.00782165 0.00855993 0 0 0.120686 0 -0.00566805 0.0366972 0.00553712 0 0 -0.00361919 -0.00221008 0 -0.00836685 -0.000336674 0.000840452 0.248878 0.0137588 0.0263538 0 -0.00533504 0.00300149 -0.232107 0.0547562 0.00503153 0 0 0 -3.87929 -0.224881 -0.343505 -0.043357 0.0174197 -0.0725325 -0.00123516 -0.000563482 -0.00260513 -0.00791996 0 0 0 0 0 0 0.0212097 0 -0.164627 0 0 0 0 0.44452 1.46459 0 0 -0.357427 0 -0.0669942 0 0.0718481 0 0 -0.602793 0 -0.161979 0.0295148 -0.476264 -0.0942168 0 0 0.632022 0 -1.33034 0 -1.45553 -1.21109 0 0.38359 -0.669 -0.0682036 0 0.0376918 0 0 0.158445 0 -2.08016 -0.985132 0 0 -0.165813 0 0 -0.0930581 -0.542292 -0.456523 0 1.66487 0 0.515372 -0.613638 0.538036 0.0852537 -0.0380503 -0.116125 -0.671671 0.0264127 -1.45357 7.58254 0.0994414 0 0 0 0.337539 -0.0756498 0 0 0 0 -0.418216 -2.98125 0.369087 -1.94373 1.26361 -1.08076 0.581871 0.315792 -0.316488 0.30834 -0.347303 0 0 0 0 0 0 +420 0 -0.497078 -0.262318 0.00516672 0.150686 -0.17412 -0.0534645 -0.000181503 0.804335 -0.0565624 -0.894024 0.0218146 -0.403033 0.000853537 -0.345119 -0.0120493 -2.79938 -9.64577 -0.236281 -0.0385278 1.0776 -0.0361675 0.0114949 -0.00240327 -0.136583 0.0999482 -0.833023 -0.0623103 0.0291527 -0.146263 -0.152264 -0.0122509 -0.253411 0.211329 -0.424518 -0.0621458 -0.00430692 -0.356882 2.10187 -0.0143833 0.356449 -0.0023808 -1.8662 -0.0209731 -0.728546 -0.116364 0.124908 -0.128536 -0.587421 0.0594604 -0.663849 -0.221681 5.54533 -0.136465 -0.0476456 0.105903 -0.11932 -0.986924 0.115203 0.0997399 -0.0112503 1.20342 -0.199242 -0.387707 -0.665033 0.883532 -0.21743 -0.323333 -0.612305 0.0248084 0.213627 0.134686 -0.199134 0.356231 0.866341 0.0378781 -0.429187 -6.25667 1.68846 -3.36597 0.0772599 -0.238137 -1.00631 0.909822 -1.0049 1.62861 -1.78449 0.122648 -0.0333359 0.124665 -0.0455471 0.119623 0 0 0 0 0 0.00516672 0.150686 -0.00325618 0 0 0 0 -0.000306822 0 0.0112092 0 0 -0.00501491 -0.00873413 0.00738317 0 0.00132416 -0.00881966 0.0655527 0 0 0.0247891 -0.000599219 0 0.00678213 -0.0042947 0 0 0.00245598 -0.0699052 0 0.0631496 0 -0.00076018 0 0 -4.93495e-05 0 0 0.103044 -0.00438106 -0.0725279 0 -0.044997 -0.014759 0 0 0.104181 0 -0.00718719 -0.15681 -0.000202189 0 0 0.0074792 0.00597835 0 -0.0180262 0.00372953 -0.0033854 0.240602 -0.0227034 0.0104102 0 -0.00165622 0.000517914 0.00751058 0.0700733 -0.0322899 0 0 0 0.237979 0.118228 0.0354104 -0.0052895 0.0106623 -0.0146205 0.00547597 -0.0058205 0.0088571 -0.00881228 0 0 0 0 0 0 -0.17412 0 -0.0534645 0 0 0 0 0.258 -0.7177 0 0 -0.639941 0 -0.0573627 0 -0.0395002 0 0 -0.28108 0 0.364431 0.0977918 -0.276097 -0.0280788 0 0 -0.350611 0 -2.65907 0 2.2731 -0.311867 0 0.732671 0.804926 -0.0247146 0 0.0355791 0 0 -0.0834229 0 -0.854651 -0.415848 0 0 -0.0236284 0 0 0.407384 1.34361 -0.410899 0 0.448944 0 -0.650894 -0.507283 0.424406 0.135668 -0.211033 0.36007 0.289233 -0.0411943 -1.41998 -4.35285 0.145205 0 0 0 -0.274258 0.0235653 0 0 0 0 -0.0780006 -10.0166 2.65635 -4.14745 -0.368789 0.562066 -1.3376 0.478829 -0.370435 0.340529 -0.461336 0 0 0 0 0 0 +421 0 -1.11997 -0.0969136 -0.0883432 -0.536777 0.605759 -0.0976424 0.595486 -2.17067 -0.232629 2.80808 0.253798 -0.22462 0.012691 0.438467 0.0677408 -1.2519 -2.67954 0.516216 0.133207 -1.97988 0.0314543 -0.0881175 -0.0116256 0.477878 -0.0546099 -0.55353 0.00666032 0.5701 0.57158 0.13188 -0.0533885 0.334481 0.102357 0.28953 0.47099 0.0168418 0.213512 3.02151 -0.194379 -1.4344 0.0817851 1.16486 -0.0643047 -0.259767 0.512703 -0.872813 0.407602 0.589583 0.108248 0.379189 0.272123 4.99416 -0.283728 0.00854007 -0.537765 0.0906361 -1.19144 0.0144347 -0.342286 -0.0507115 -1.20871 2.49132 -2.51785 1.67 0.142535 -0.213181 -2.99865 -0.614581 -0.0135194 -0.291003 -0.689524 -0.10748 -0.314803 2.19044 0.526266 -0.804546 -16.1489 -5.99756 4.12077 -4.43069 2.26973 -0.630311 -2.3306 1.49725 -1.88014 2.31678 -0.540387 0.282714 -0.510881 0.280466 -0.467472 0 0 0 0 0 -0.0883432 -0.536777 0.00454394 0 0 0 0 0.00113305 0 0.0147035 0 0 0.000975891 -0.00257412 0.000201538 0 0.00340201 0.0279686 -0.020443 0 0 -0.424941 -0.000217845 0 -0.0255778 -0.511683 0 0 -0.0591142 0.00916874 0 -0.0362373 0 -0.0983087 0 0 -0.0129263 0 0 0.396274 0.0170765 0.0203106 0 0.0736536 -0.000703977 0 0 0.0536555 0 0.0068329 -0.00788258 -0.0071039 0 0 0.00335185 -0.0111572 0 -0.00811494 -0.0016739 -0.0185729 -0.21356 -0.00422747 0.0262309 0 -0.00817268 0.0215805 0.0219431 -0.0483675 -0.0141127 0 0 0 -2.1536 -0.151592 -0.0591624 -0.0147173 -0.000637642 -0.0419224 0.000536163 -0.00183993 -0.00220866 0.00317236 0 0 0 0 0 0 0.605759 0 -0.0976424 0 0 0 0 -0.0532924 -0.787694 0 0 0.78633 0 0.107222 0 -0.0345258 0 0 0.21789 0 0.528203 -0.118063 -0.103761 0.0367552 0 0 -0.348428 0 3.42614 0 0.862972 0.0233788 0 -1.1971 0.379554 -0.00342871 0 -0.0125648 0 0 -0.0803038 0 0.275842 1.24719 0 0 0.153323 0 0 0.132298 -1.12408 0.409065 0 -0.979 0 0.185276 0.217751 -0.305566 -0.108539 0.0594972 -0.0883175 -0.286003 0.040693 0.260731 -9.72587 -0.109582 0 0 0 -0.264536 0.0177837 0 0 0 0 0.255693 -10.8103 -7.33501 8.81453 -2.35025 1.37731 -0.0142025 -0.528739 0.389762 -0.471618 0.830868 0 0 0 0 0 0 +422 0 0 0 0 0 0.0763614 -0.155057 -0.374892 -0.822279 0 0 -0.512341 -0.678678 0 -1.38957 0.0254302 0 0 0 0.144779 1.5159 0 0 0 0 -0.0874136 0 0 1.06862 2.80204 -0.442121 0 -0.0773484 0 0 0.0612464 -0.0783716 0 0 -0.535663 0.241132 0 0 -0.106372 -2.161 0 -0.29206 1.84755 -0.00501518 0.672886 -1.75433 0.586335 0 -0.0673616 0.241112 0.262678 -0.451594 -0.673629 0.134087 0 0 -0.0981543 0.486815 0 -0.011925 0.602911 0.198316 0 0 0 0 -0.144211 -1.20419 0 2.57556 -1.42864 0 0 0 2.13753 0 1.61318 -3.53762 0 1.02718 -1.88792 2.77491 0 0.515763 -2.3739 4.81383 -12.5353 0 0 0 -0.0755649 0.00287386 0 0 0 0.0242349 0.00808218 0 0.00487037 0 -0.00127343 -0.0108868 0 0 0 0 -0.100534 0 -0.0047499 0 -0.208161 0 0.100909 -0.283569 0 0.00167791 0 0 -0.0503033 -0.000761369 -0.0384134 0 0.000578581 0 0.000593712 -0.137927 0.00163321 -0.0144188 -0.0185753 0 -8.6258e-05 0 0 0 4.4192e-05 0 0 0.0057687 -0.000566541 0.135617 -0.0061637 0 0 -0.0216062 0 -0.00748432 0 0 0.000544243 -0.0219236 0.124041 0.00750766 0 0 -0.0883603 -0.0183397 -0.0505868 0.0744563 -0.0793379 0 -0.0676478 -0.00899261 -0.0177531 0 0 0 0.828494 0 0.0928236 0.244113 0 0.00548869 0.0113643 0.0401288 0 0.00131599 0.00449994 0.000231487 0.025222 0 0.0763614 -0.0755649 -0.155057 0.00287386 0.208846 -0.0187263 0.183176 -0.706468 0.717083 -0.00545614 0.0511945 0.967473 -0.00125061 0.109355 0.0182034 -0.0156545 0.0461879 0.0137553 0.355749 -0.412346 0.0860054 -0.19982 0.538548 0.135297 0.341738 0.0268654 -0.0370541 -0.0148173 -1.11969 0.181473 1.39331 -1.00559 0.0012201 -1.03673 0.341533 0.0634524 0.00105922 -0.130055 0.017819 -0.0842901 0.0672239 0.0141193 -1.8361 0.750424 0.00644524 0.0208036 0.244346 -0.0725986 0.153344 -0.648721 2.70413 1.00177 -0.138947 2.3996 -0.00393861 -1.62433 0.488192 -0.80853 -1.10799 -0.302574 0.982614 1.62093 0.103204 -1.93717 5.69872 0.578468 -0.753683 0.237793 0.260234 -0.118159 -0.250499 -0.0862344 0.0352915 0.0570822 -0.202383 -0.21611 -13.148 -6.94583 4.55835 -1.48031 0.371018 -0.687232 -1.00633 0.490535 -0.35204 0.219106 -0.027947 -0.171329 0.199902 -0.217811 -0.000177863 0 +423 0 0 0 0 0 -0.605773 -0.335299 0.5842 1.71314 0 0 -0.327661 -0.521659 0 -1.19088 -0.0900235 0 0 0 0.105476 -4.13007 0 0 0 0 0.42403 0 0 0.476509 2.11732 -0.39114 0 -0.256569 0 0 0.246693 -0.112363 0 0 -0.316022 -1.4642 0 0 -0.212899 -2.42887 0 -0.869636 0.708856 0.433551 0.318601 -2.33321 0.757932 0 -0.482301 -0.358563 0.699378 -1.6455 -1.38544 -0.0876359 0 0 1.36909 3.55185 0 1.62477 1.04125 0.617817 0 0 0 0 0.0324201 -0.351121 0 2.72034 -1.24244 0 0 0 -5.23967 0 -0.500125 -1.9707 0 0.0105366 -0.787161 -2.81275 0 0.553244 -1.41053 2.9674 -10.8595 0 0 0 -0.122453 0.00974052 0 0 0 0.0450652 0.0245811 0 0.00686021 0 0.00647577 0.0922348 0 0 0 0 0.0619344 0 0.034935 0 0.209389 0 0.299645 0.277387 0 -0.00483702 0 0 -0.299033 0.00559224 0.0419855 0 -0.000119746 0 0.00159278 0.0712804 -0.0352009 0.077979 0.00166676 0 0.000466327 0 0 0 -3.22134e-05 0 0 -0.00723174 -0.0129338 0.142416 0.0125547 0 0 0.00642593 0 -0.0145688 0 0 0.0291801 0.0404225 0.0485517 0.0639971 0 0 -0.173465 -0.139844 -0.0488102 -0.0859071 -0.202187 0 -0.00204652 0.0522579 0.0204255 0 0 0 -0.244922 0 -0.0809437 0.313878 0 0.00913202 -0.0125674 -0.0735994 0 -0.00592644 0.0178232 -0.0456775 0.116686 0 -0.605773 -0.122453 -0.335299 0.00974052 -0.162704 -0.119552 0.15735 0.261206 0.0747564 -0.0143313 0.0341436 -0.494735 -0.00532593 -0.0893799 0.0379999 -0.00771219 0.0286927 0.0906132 0.928546 -1.20625 -0.242199 0.099929 0.0333623 0.159222 0.160576 0.241105 -0.0965856 -0.0329055 1.86617 -0.468213 -2.06388 0.0753301 0.00852283 1.28862 -0.557807 -0.0075418 -0.00868629 -0.000108765 -0.0727348 1.67236 0.0535208 0.0376846 0.891595 0.284882 0.0042528 -0.0483555 0.077668 -0.194839 -0.1664 -0.603927 0.163955 -1.03282 0.105841 -0.0296884 -0.109759 -0.920652 0.091842 0.403601 0.492557 0.267911 0.204773 0.812453 0.0627882 -0.798502 -1.97462 -0.0635041 0.093922 -0.0164625 -0.179399 0.137684 0.231694 0.180653 0.022628 -0.240011 0.0947136 -0.170583 19.4759 5.86125 -7.81447 1.66908 0.506243 -5.89078 0.347735 0.356892 -1.3605 -0.416793 -0.184101 0.548779 -1.14626 1.31579 -2.46862 0 +424 0 0 0 0 0 -0.740001 -0.415155 1.43309 3.49505 0 0 1.35322 -0.699594 0 -1.50008 0.0781116 0 0 0 -0.0928247 -2.87982 0 0 0 0 0.832697 0 0 -0.0339524 -10.0419 -0.434071 0 0.614287 0 0 0.451152 0.174085 0 0 4.98325 -2.22161 0 0 0.946638 -3.17191 0 -1.18076 -2.16235 -0.0168304 -2.04432 0.926535 -2.11324 0 0.0818547 0.511049 -0.137793 0.0769771 0.169673 0.092138 0 0 0.52126 1.13084 0 -0.884579 -0.719772 -0.380937 0 0 0 0 0.819392 3.98132 0 -1.01091 -0.676883 0 0 0 -6.4417 0 -9.05496 14.9422 0 -4.89619 7.43281 -10.0261 0 -6.25434 11.1697 -21.1845 38.9006 0 0 0 -0.570548 -0.136033 0 0 0 -0.122312 -0.0120241 0 -0.0242966 0 0.0241346 -0.112639 0 0 0 0 -0.208182 0 -0.0520814 0 -0.422702 0 -0.466007 -0.617277 0 -0.0177641 0 0 -0.600656 0.00807508 -0.132101 0 0.0131076 0 -0.000925156 -0.0768659 -0.109039 0.108694 -0.0106296 0 0.00177106 0 0 0 0.000927679 0 0 -0.0104211 -0.00259853 -0.331584 0.0215958 0 0 -0.0515804 0 -0.000235996 0 0 0.0117281 0.0421351 0.184348 0.015055 0 0 -0.100638 -0.00990462 0.0182257 0.178329 0.275287 0 0.108277 0.00926402 0.142499 0 0 0 1.28533 0 -0.125669 0.885447 0 0.0149889 -0.0455461 0.280983 0 -0.00824505 0.0414734 -0.104067 0.328751 0 -0.740001 -0.570548 -0.415155 -0.136033 0.953976 0.229489 -0.416645 0.512964 0.650672 0.210234 -0.0650943 0.344638 0.037498 0.150089 -0.122695 0.121312 -0.0188159 1.02608 -0.68577 2.04295 -0.389876 0.0299722 -0.287782 -0.110778 -0.473519 -0.179043 0.882495 0.0510862 -0.421661 0.0996017 -3.0474 -0.513039 -0.0270433 0.499092 -1.25903 -0.00269992 -0.00867968 0.0606989 0.00241923 -1.31423 -0.00517973 -0.0285996 -0.189007 -0.831366 -0.00186111 -0.0635891 -0.101917 0.314326 -0.063823 -0.503371 2.09459 0.816949 0.197386 -0.0991761 0.0148674 -1.67503 0.764729 -0.78718 0.354284 0.668416 -2.26906 1.74066 -0.50255 -0.675598 6.14571 -0.329092 0.0570639 -0.0125794 -0.044812 0.615593 -0.189085 0.116068 -0.421073 0.11192 0.13788 -0.496617 28.757 3.58158 -3.13091 -1.74561 -2.08811 7.75236 -2.10357 0.647243 0.748099 0.0605564 -2.08472 1.06425 -0.168244 -0.511586 1.90546 0 +425 0 0.0631056 0.191912 0.0162115 -0.0815671 0.0384698 0.0190623 0.733991 1.04852 0.386433 0.388804 0.11273 0.951468 -0.00807286 1.23121 0.0346637 1.66748 7.24932 0.0375724 0.044161 -1.59224 0.0462088 0.191764 0.00939373 0.0864993 0.486765 0.371074 0.132956 -0.183008 -1.16412 0.453169 0.0579588 0.258625 0.136002 0.325564 0.305169 0.0353706 0.500909 0.121294 0.407132 -0.534261 -0.0396822 1.70399 0.104816 2.23861 -0.109796 0.0166912 -0.414791 0.335982 -0.453271 2.6428 -0.337764 0.532061 0.13923 0.0836354 -0.028587 -0.749541 1.078 -0.293315 0.284192 0.146361 -0.803419 0.778121 -0.295808 -1.17121 -1.77464 -0.71451 1.18056 1.80458 0.00706964 0.26371 0.226651 0.945826 -0.320243 -2.52969 -0.133706 0.837628 2.839 1.1063 -1.7595 -0.374602 0.207817 0.324491 -0.601121 0.202088 0.54809 -3.39737 0.263792 -0.679588 1.70886 -3.17093 6.58255 0 0 0 0 0 0.0162115 -0.0815671 -5.69251e-05 0 0 0 0 -0.000611396 0 0.00889751 0 0 -0.000779506 -0.00206569 0.0100891 0 0.00275906 -0.025865 0.00277766 0 0 -0.0752364 -0.000137862 0 -0.0464332 -0.693391 0 0 -0.000847747 -0.173054 0 -0.215821 0 0.00343471 0 0 0.00158899 0 0 -0.538616 -0.0084405 -0.0148943 0 0.00214358 -0.00472533 0 0 -0.16178 0 0.000517417 -0.0669208 0.00213151 0 0 0.00526052 -0.00830667 0 -0.0142634 -0.0317892 0.000899498 -0.437403 -0.0379392 -0.00510949 0 -0.00674471 0.00460984 0.143031 -0.15404 0.0274416 0 0 0 3.90986 0.336698 0.227407 0.00931058 0.0381635 0.0130427 0.00151668 -0.000687955 0.0036089 -0.00139485 0 0 0 0 0 0 0.0384698 0 0.0190623 0 0 0 0 0.0256806 0.697901 0 0 0.154163 0 0.0125983 0 0.0300854 0 0 -0.448638 0 -0.0391216 0.00796508 -0.0337981 -0.0632847 0 0 0.230345 0 3.90412 0 -1.09487 0.780376 0 -0.0286855 -0.408319 -0.00591824 0 0.00907003 0 0 0.0926192 0 1.53938 -0.922778 0 0 -0.135702 0 0 -0.428892 -0.840134 0.0316253 0 -2.97568 0 0.924824 0.0786561 -0.0860862 0.0544214 0.243467 -0.157706 -0.894157 -0.0627464 2.04183 -0.407302 -0.172821 0 0 0 0.0457149 0.0362823 0 0 0 0 0.051922 5.60736 -0.510652 0.909191 0.2216 -0.308052 0.687421 -0.0820674 0.0107008 0.0118676 -0.0340277 0 0 0 0 0 0 +426 0 -1.05348 0.346124 -0.00034626 -0.0747579 -0.198098 0.289088 -0.358202 0.404128 -0.00805361 -0.57666 0.235323 0.771128 0.00108813 -0.459961 -0.00342907 3.62825 13.1282 -0.121609 0.00850918 0.199286 0.00282577 -0.208834 -0.00423763 -0.100727 -0.284214 1.17669 0.0763568 -0.670105 -0.658736 0.170285 -0.0114145 -0.0586598 -0.184475 -0.0443732 -0.309116 0.0196283 0.629838 0.408086 -0.00429983 0.473855 0.00885296 1.17317 -0.0120006 1.58052 0.0764014 0.699766 -0.877237 -0.0955541 0.0326113 -0.725548 -0.31791 -7.16762 -0.0405043 0.0171367 -0.128496 -4.54753 -0.249028 0.0555502 0.208894 -0.0210042 -1.16323 -0.102636 0.551813 0.0362503 0.022507 0.630983 0.00398246 0.271966 0.000799894 1.18476 -0.445481 -0.0761747 -0.811374 -0.465636 0.53967 -0.0148863 -4.70818 1.84431 -2.56492 1.48117 -1.58708 0.97374 0.966713 -1.10152 2.12976 -1.77435 -0.18356 0.137729 0.575323 -1.13081 3.72484 0 0 0 0 0 -0.00034626 -0.0747579 0.00344947 0 0 0 0 0.00109541 0 -0.0101513 0 0 0.00240889 0.00109765 0.00383183 0 -0.00121461 0.041137 -0.0184905 0 0 0.37253 3.99591e-05 0 0.070355 1.45978 0 0 0.0558229 0.288166 0 0.194362 0 0.0501827 0 0 0.00765854 0 0 0.516329 0.0152326 0.0377182 0 0.0495854 0.0592417 0 0 -0.302933 0 -0.00905438 0.2414 0.0188703 0 0 -0.00120233 -0.0157901 0 0.0316076 0.0634033 -0.00780102 -1.66069 0.033738 -0.045627 0 -0.0113386 -0.0271745 -0.0840982 -0.180024 -0.0247759 0 0 0 -2.77868 0.0744869 -0.372685 -0.0454999 0.1042 -0.261947 -0.00234879 0.000954547 0.0016204 -0.019483 0 0 0 0 0 0 -0.198098 0 0.289088 0 0 0 0 0.197112 0.21414 0 0 -0.361115 0 -0.0505031 0 -0.0106584 0 0 -0.456451 0 -0.981477 0.0695486 -0.343631 -0.0650297 0 0 0.0143566 0 -0.857817 0 0.488186 0.120174 0 0.60326 -1.17208 -0.0382281 0 0.0115051 0 0 0.0208863 0 -0.56174 -0.205901 0 0 -0.0171153 0 0 -0.181578 1.10645 -0.013802 0 -0.1611 0 -1.28368 0.218717 -0.115725 0.551404 -0.0161842 -0.600024 1.37306 -0.139069 0.143232 2.29787 -0.0385682 0 0 0 0.112353 0.174794 0 0 0 0 -0.076455 -3.40926 3.64913 -5.85939 1.24254 -1.19585 0.427558 0.41851 -0.376927 0.367302 -0.46294 0 0 0 0 0 0 +427 0 -0.677206 -0.238602 -0.154325 -0.625654 0.560233 0.310684 -1.17337 -4.62966 -0.323454 3.85572 -0.735383 1.04009 0.0452356 0.84474 -0.0749955 0.447742 3.90292 0.425511 -0.151586 3.09258 0.0263411 0.249379 -0.0316568 0.775008 -0.64893 -0.158383 -0.0288386 0.103391 2.35076 0.243954 -0.1228 -0.573708 0.831639 -0.232205 -0.216255 -0.134051 -0.10849 2.87941 -1.60642 1.01352 0.238409 -1.2391 -0.363141 4.46743 1.01051 0.385353 0.86585 -1.34992 0.693524 -2.90276 1.52319 -1.42891 0.336016 -0.783884 1.54577 0.345893 -0.378138 -0.848024 -1.18795 -0.332593 1.12285 0.244788 -1.44058 0.103908 1.71765 -0.160914 -0.540166 -1.2311 -0.121346 -1.91885 0.611301 -1.16085 0.0441366 0.713795 -2.54563 -0.48884 -9.27397 -11.1249 10.4745 -5.15006 4.97143 -6.79595 -5.83016 5.78555 -8.40302 10.5461 -2.42783 3.6831 -5.68092 8.62055 -13.2924 0 0 0 0 0 -0.154325 -0.625654 -0.000729876 0 0 0 0 0.00191584 0 -0.0492273 0 0 0.011342 0.0333159 -0.085972 0 -0.0124671 -0.0337498 -0.364596 0 0 -0.0777894 0.00241633 0 -0.0329856 -0.823527 0 0 -0.0080002 -0.136112 0 -0.199106 0 -0.0675737 0 0 -0.00761571 0 0 -0.582075 0.0271852 0.155698 0 -0.00790289 0.0665014 0 0 -0.11692 0 -0.0181104 0.0069869 0.045232 0 0 -0.0106126 -0.0117844 0 0.00760249 0.0612636 0.0127979 0.234876 0.018651 -0.00340398 0 0.00237934 -0.104367 0.25185 -0.0938845 -0.0698342 0 0 0 4.05549 -0.20114 0.921805 0.0663746 -0.0947243 0.210347 -0.0115074 0.0198127 -0.0398387 0.0913896 0 0 0 0 0 0 0.560233 0 0.310684 0 0 0 0 -0.642719 -1.0529 0 0 1.75101 0 0.222855 0 -0.0407241 0 0 0.989109 0 0.421752 -0.244556 0.608066 0.112163 0 0 -0.453811 0 4.06685 0 3.48351 0.184369 0 -1.78008 1.18787 0.0837157 0 -0.0937775 0 0 -0.0849106 0 0.946873 2.61781 0 0 0.291682 0 0 0.884557 -4.0958 0.00398666 0 0.789282 0 2.43465 -0.861315 0.386816 -1.84145 -0.0117924 1.68411 -2.93176 0.481749 -0.583306 -6.59797 0.211188 0 0 0 -0.565159 -0.484191 0 0 0 0 0.355978 -24.0203 -13.288 12.766 -3.46248 2.7373 -2.04051 -1.53069 1.2377 -1.23174 1.35935 0 0 0 0 0 0 +428 0 0.850052 0.254563 0.0445495 0.0226476 0.152197 0.194058 0.304673 0.994953 0.310103 -1.17402 0.511616 0.62482 -0.0216936 2.10564 0.0426934 0.0323446 -0.275748 -0.166705 0.077688 2.15188 -0.0344356 -0.43454 0.0196065 -0.345675 -0.142357 0.160199 0.100782 -0.660073 -1.60563 0.530525 0.0772774 0.0953003 -0.984414 0.365095 -0.204136 0.114338 0.523315 -3.12316 0.869819 1.45082 -0.0970837 1.83175 0.204084 2.59886 -0.366093 0.855536 -1.05507 0.202932 -0.640952 2.91013 -1.25413 -6.88481 0.084385 0.073452 -0.617949 -3.49569 -0.601817 -0.349202 0.766739 0.24578 -2.26898 -2.39331 -1.97387 -0.540008 -1.59426 0.224289 -0.692818 0.737514 -0.0748984 1.31397 -0.813759 0.885714 0.324504 -3.60693 1.52793 -0.783459 16.1537 9.41716 -4.13838 5.59934 -5.27873 9.28745 2.22587 -2.33994 4.28308 -3.09183 0.817045 -1.36367 2.47189 -3.33987 5.96626 0 0 0 0 0 0.0445495 0.0226476 0.000777654 0 0 0 0 -0.000249253 0 0.00935664 0 0 -0.0045391 -0.0126042 0.0233457 0 0.00327414 -0.0288108 0.0553416 0 0 0.369611 -0.000879639 0 0.063668 0.649883 0 0 0.0542365 -0.00748346 0 0.0424836 0 0.0771337 0 0 0.0111123 0 0 -0.216809 -0.00379583 -0.070417 0 0.00586199 0.065123 0 0 -0.36894 0 -0.00252705 0.048602 -0.00732281 0 0 0.00790936 -0.00649915 0 -0.00977792 -0.0461502 -0.00426368 -0.825779 -0.0688842 -0.0317947 0 0.0103583 0.0130632 -0.00810484 -0.0831761 0.0349433 0 0 0 4.07523 0.657703 0.086199 -0.0298487 0.147718 -0.187415 0.00471677 -0.0048466 0.0159131 -0.0202954 0 0 0 0 0 0 0.152197 0 0.194058 0 0 0 0 0.47672 1.2432 0 0 -0.41175 0 -0.0665625 0 0.0727336 0 0 0.0598262 0 -0.293196 0.0959425 -0.402402 -0.0130848 0 0 0.442234 0 5.3473 0 -0.679072 0.774004 0 0.592781 -0.349387 -0.0584683 0 0.0727461 0 0 0.179679 0 2.25841 -0.364318 0 0 -0.0771181 0 0 0.0358443 -0.624307 0.568455 0 -1.32419 0 -0.644428 0.436687 -0.511993 0.518677 0.0726291 0.0199145 0.293855 -0.268255 -0.103125 -0.68324 -0.0392046 0 0 0 -0.171367 0.199995 0 0 0 0 -0.080212 2.37289 2.82364 -3.48811 0.450679 -0.421993 0.570122 0.45131 -0.421343 0.428605 -0.553783 0 0 0 0 0 0 +429 0 -0.237884 -0.436152 0.0166921 -0.173086 -0.00915752 -0.165517 0.574336 1.35919 0.38432 -0.716055 -0.321699 0.480999 -0.0157461 1.76155 0.00776981 -1.49006 -3.18002 -0.202084 -0.0590944 2.51637 -0.0992904 0.418012 0.0274655 -0.343724 0.605834 -0.757884 -0.0141808 0.415605 1.60841 0.291069 0.104331 0.0421762 0.492521 0.209328 0.355503 -0.0128166 0.00640128 0.505861 -0.710798 0.579833 -0.0450927 0.590511 -0.034236 2.69848 0.031113 -0.0457172 0.776642 -0.330032 0.00263465 1.42257 -0.0147745 -1.57752 0.396466 -0.287618 0.121368 1.51572 1.37778 -0.0378327 0.546458 0.126281 -1.01342 -2.2959 1.12194 -2.01583 -0.509848 -1.08816 1.01875 -0.0362051 -0.192354 1.63626 -0.0481155 -0.0315591 -0.0760859 -3.02195 -0.142064 -0.764133 -8.20624 0.490577 -4.91345 -0.370074 1.02413 -3.79571 0.716772 0.328166 -1.15928 -0.985797 -0.069438 0.826582 -1.85263 3.04741 -5.9766 0 0 0 0 0 0.0166921 -0.173086 -0.000421967 0 0 0 0 -0.00118267 0 -0.0323139 0 0 0.00819248 0.0163839 -0.0245045 0 -0.00396937 0.013588 -0.227791 0 0 -0.0536184 0.00120835 0 0.0274124 -0.295894 0 0 -0.010074 0.0050679 0 0.00483451 0 0.00725103 0 0 -0.000146423 0 0 0.0918437 -0.0159671 0.110927 0 -0.00209804 0.118611 0 0 -0.279022 0 -0.0186445 -0.124866 0.051431 0 0 -0.008395 -0.0124836 0 0.0145131 -0.019419 0.0206687 -0.261018 0.0864332 -0.0343398 0 0.0184726 -0.118939 0.0924244 -0.073857 -0.155297 0 0 0 1.51171 0.0279817 0.419502 -0.0112074 0.0594058 -0.0945374 -0.0087855 0.0168932 -0.0345931 0.0584121 0 0 0 0 0 0 -0.00915752 0 -0.165517 0 0 0 0 -0.0177347 0.535928 0 0 0.353065 0 0.0156387 0 0.0340285 0 0 -0.252359 0 1.12338 0.0952196 0.254125 -0.0519048 0 0 0.19972 0 2.56712 0 5.06065 0.115675 0 0.361259 2.25539 0.020049 0 0.0207039 0 0 0.0931449 0 0.723941 -0.550127 0 0 -0.112593 0 0 0.281223 1.10956 0.143695 0 -1.49064 0 0.828722 -0.194836 0.0378685 0.091357 -0.233935 1.63613 -0.447776 0.143373 0.620292 -3.13304 0.338085 0 0 0 -0.379861 -0.0418411 0 0 0 0 0.2087 -46.0257 -8.55852 1.63042 -4.03932 3.27548 -3.37398 -0.376974 0.286309 -0.202235 -0.237899 0 0 0 0 0 0 +430 0 -1.51258 -0.444788 -0.162687 -0.52289 0.281638 0.27503 -2.22368 -5.84016 -0.327705 4.41948 -0.601121 -0.153933 0.0615838 1.41848 -0.0646258 -2.10989 -10.1713 0.673215 -0.208276 4.07867 0.138113 -0.0222396 -0.0538793 1.10286 -1.15669 -0.378493 -0.0399023 -0.117317 0.619599 0.228433 -0.159176 -0.42115 0.563713 -0.199502 -0.465696 -0.129568 -0.606635 4.86638 -1.20745 1.71061 0.245449 -2.12383 -0.298561 1.31116 0.826173 0.754448 0.0882284 -1.23806 0.505352 0.279684 1.63579 0.645255 0.430002 -0.538796 0.621245 -0.716059 -0.0402567 -0.20038 -1.49027 -0.31511 1.07771 0.301767 -0.822274 2.05123 1.31391 1.04284 -0.893834 -1.22066 0.0478736 -2.90896 -0.0911258 -0.723996 0.785129 -0.36175 0.241706 0.858191 -16.5852 -11.9049 11.0584 -7.04142 7.65046 -9.47785 -7.16877 6.91784 -8.34278 11.4769 -1.84385 2.23437 -2.22637 2.90854 -2.30233 0 0 0 0 0 -0.162687 -0.52289 -0.00239193 0 0 0 0 0.00121417 0 -0.0300501 0 0 0.00619496 0.023046 -0.0794127 0 -0.00816894 -0.0888164 -0.270803 0 0 -0.11722 0.00170448 0 -0.145769 -1.64727 0 0 -0.0147092 -0.414889 0 -0.389814 0 -0.0811748 0 0 -0.0094989 0 0 -0.884234 0.0167862 0.0809321 0 -0.0342841 0.0137776 0 0 -0.0194884 0 0.00081236 -0.104038 0.00557533 0 0 -0.00464833 0.00442866 0 -0.0132392 0.0252867 0.00872121 1.22599 -0.0449694 0.0171501 0 0.00807191 -0.0395152 0.212136 0.0660646 -0.0317821 0 0 0 5.62264 -0.0517241 0.960742 0.0772566 -0.107097 0.276351 -0.00602518 0.0124672 -0.0256051 0.0792304 0 0 0 0 0 0 0.281638 0 0.27503 0 0 0 0 -0.341333 -1.73662 0 0 1.71192 0 0.209871 0 -0.113715 0 0 0.506558 0 0.691261 -0.15855 0.507001 0.0898021 0 0 -0.82211 0 -5.39231 0 7.10014 0.440123 0 -1.19498 2.28862 0.0618075 0 -0.0442336 0 0 -0.238556 0 -0.591318 0.817062 0 0 0.134294 0 0 0.0344586 0.0611202 -0.80093 0 0.430111 0 1.14986 -1.11071 0.96795 -1.51835 -0.192787 2.51303 -1.04185 0.498469 1.66115 3.63216 0.464671 0 0 0 -0.00208095 -0.472658 0 0 0 0 0.399947 -53.1128 -15.6183 9.44569 -5.29466 4.27158 -4.50234 -1.392 1.13571 -1.2011 0.915985 0 0 0 0 0 0 +431 0 0 0 0 0 0.166814 -0.283683 0.625375 0.147698 0 0 0.047996 -0.185539 0 -0.921146 0.000670045 0 0 0 -0.0942697 1.4766 0 0 0 0 0.469233 0 0 0.966811 0.977473 -0.577559 0 0.562897 0 0 0.410904 0.0156416 0 0 0.22076 -0.175184 0 0 0.0465382 0.921912 0 -0.810899 1.15411 1.02189 -0.0700139 -4.01066 0.358889 0 0.0791036 -0.257055 0.1922 0.095339 -0.127279 -0.390034 0 0 -0.325654 -2.58619 0 -0.472326 1.07059 -0.0351712 0 0 0 0 -0.169938 0.387186 0 0.19119 -1.01633 0 0 0 -1.29102 0 -0.163913 -2.21856 0 0.152855 -0.656688 0.74255 0 -0.169019 0.304179 0.422383 -3.6406 0 0 0 -0.0503519 0.0154628 0 0 0 -0.0405315 0.0219154 0 -0.00745101 0 0.00823418 -0.0357659 0 0 0 0 -0.210227 0 -0.0275474 0 -0.410376 0 -0.193043 0.0136417 0 -0.00407522 0 0 -0.164241 0.00205257 -0.00883729 0 0.00414893 0 0.00163545 0.0220537 -0.0261073 0.0175547 0.0053679 0 0.000668666 0 0 0 0.00026299 0 0 -0.00617019 0.00234824 -0.482416 0.0317276 0 0 0.0160604 0 -0.00293505 0 0 0.00466942 0.00600807 -0.121882 0.0600821 0 0 -0.150553 0.00991278 -0.0103771 -0.259791 -0.503055 0 -0.167088 -0.00196937 0.0727363 0 0 0 1.93108 0 0.0394277 0.411531 0 0.0199184 -0.0109189 0.477474 0 -0.00371394 0.0143319 -0.022068 0.127531 0 0.166814 -0.0503519 -0.283683 0.0154628 0.0288934 2.41004e-05 0.17858 0.272949 1.94016 -0.0311895 0.0267063 -0.201276 -0.00574627 -0.0201409 0.0381891 0.0901437 0.0331294 -0.130056 0.261142 -0.46654 -0.372397 0.0208653 0.169995 0.0315707 0.210857 0.0310216 0.833302 -0.0145415 -0.442295 -0.0393745 -0.765878 -1.63169 0.00713247 0.230339 -0.203984 0.0359235 0.000430238 0.00928547 -0.00916968 0.164406 0.273754 0.00552691 -1.88647 0.901064 0.0046187 0.00253564 0.0881651 -0.0811283 -0.0999623 -0.125738 -0.926712 -1.1361 -0.0483994 0.576755 -0.0525506 -0.42966 0.501499 0.201591 -0.14882 -0.00290521 -0.490979 0.311908 -0.123381 -1.67264 -4.75736 0.0856942 0.303216 0.0453315 -0.123785 -0.10115 0.0256022 -0.0235538 0.0824009 -0.0676798 0.0522621 -0.165843 2.09477 0.580152 -0.0378632 0.382734 0.0895636 -0.495601 0.105617 0.0443492 -0.0457515 0.171858 0.0695806 -0.00417386 0.0213807 0.0456888 -0.0639553 0 +432 0 0 0 0 0 0.520017 0.0869866 0.106645 -0.729851 0 0 0.189221 -0.857359 0 0.133091 0.0534214 0 0 0 -0.0242913 -2.43143 0 0 0 0 -0.223283 0 0 -0.141048 -1.79834 0.00848001 0 0.424993 0 0 -0.0795449 0.0150288 0 0 0.648375 -0.667171 0 0 0.113899 -2.99666 0 0.0982065 -0.41116 0.290887 -0.279589 1.88763 -0.562738 0 0.0704117 0.157485 -0.239675 -0.609718 -0.105575 -0.427167 0 0 -1.14535 1.41927 0 -0.461065 -0.475293 -1.04232 0 0 0 0 -0.26998 0.530251 0 0.231869 -0.244083 0 0 0 3.06416 0 -0.615678 3.4164 0 -0.533934 2.25362 -0.749613 0 -0.796287 2.03732 -2.99266 5.14845 0 0 0 -0.121764 -0.0195168 0 0 0 0.0283764 0.0264114 0 0.00330857 0 -0.00334808 -0.0106535 0 0 0 0 -0.0555656 0 0.00481481 0 -0.288088 0 0.277723 -0.0659351 0 0.000947603 0 0 -0.0566115 -0.000393942 0.00428076 0 0.00542973 0 0.00318036 -0.0920978 -0.00262996 -0.014632 -0.0103022 0 -0.000223688 0 0 0 0.000478865 0 0 0.00142701 0.00572722 -0.225427 0.0105566 0 0 -0.00503435 0 -0.00575117 0 0 0.01983 -0.0615365 -1.03195e-05 0.041297 0 0 -0.021918 -0.00256925 0.0162534 0.0612002 0.172246 0 0.217121 -0.0263203 -0.0232914 0 0 0 1.07669 0 0.125874 -0.0274377 0 0.0156268 -0.0313429 -0.0566143 0 -0.000133481 0.0106741 -0.00733771 -0.188232 0 0.520017 -0.121764 0.0869866 -0.0195168 0.353997 0.0765511 -0.0296721 -0.239573 -0.267552 0.0228735 0.0414676 0.272028 0.00376446 0.0384332 -0.0177967 0.00480532 0.0159098 0.140265 -0.110832 0.0769342 -0.124489 -0.0521777 -0.0829151 0.00352852 0.15753 -0.0443966 0.0334064 0.014455 -0.931275 0.260328 -0.650053 0.17513 -0.00414059 -0.703074 -0.513835 -0.0178809 0.00552115 -0.0510073 0.0524505 -0.348085 -0.0571149 -0.00724333 0.163457 -0.208281 0.00466891 0.0245731 0.0389446 0.0459058 -0.021578 -0.237763 1.03347 1.29972 0.0226205 -0.767912 0.0473516 -0.330756 -0.00385485 -0.720862 0.0468856 -0.215781 0.147309 -0.0167484 -0.10923 -0.0628949 -5.88519 0.153263 -0.230615 0.0603303 0.295458 -0.136105 -0.0414558 -0.0465301 -0.0379911 0.0734422 -0.154758 0.175691 1.77798 -0.113231 0.804219 -0.0179309 -0.885157 0.585026 -0.128607 -0.154175 0.296815 -0.589224 -0.0750423 -0.118313 0.186124 -0.246113 -0.253853 0 +433 0 0 0 0 0 -0.770223 -0.139363 0.142778 1.53614 0 0 0.563324 0.378459 0 -1.36286 0.0394823 0 0 0 0.0847357 -3.43879 0 0 0 0 0.364739 0 0 -0.105384 -5.45714 -0.139717 0 0.035988 0 0 0.0162403 0.0315002 0 0 2.04382 -1.33108 0 0 0.293798 -0.568743 0 -0.436134 -1.2418 0.172802 -0.241013 -2.61368 -0.0401736 0 -0.325036 0.327972 -0.12909 0.243069 -0.112272 0.415702 0 0 0.746127 3.49852 0 -1.19368 0.266681 0.598911 0 0 0 0 0.0337609 0.35089 0 3.85866 -0.100785 0 0 0 -2.50747 0 -1.27974 3.01734 0 -0.0183995 1.77109 -4.22823 0 -0.92452 3.88946 -8.73876 16.6301 0 0 0 -0.333988 -0.0588274 0 0 0 0.0540734 -0.0433065 0 0.00726339 0 -0.0135381 -0.0370448 0 0 0 0 -0.0219234 0 0.00181536 0 -0.29568 0 0.449391 0.47768 0 0.00203517 0 0 -0.0400099 -0.00516329 0.0694908 0 -0.00322374 0 -0.00306683 0.123552 0.00334545 -0.0782077 0.0129425 0 -0.00093824 0 0 0 -0.000255261 0 0 0.013801 -0.00461437 -0.248614 -0.0657566 0 0 -0.0253022 0 0.00537401 0 0 -0.00916906 -0.0183298 0.140856 -0.00946523 0 0 -0.150128 0.0512711 -0.0157256 -0.235269 0.0483647 0 -0.198579 -0.0280996 0.0489854 0 0 0 1.39903 0 0.204412 0.410591 0 -0.00252518 0.0695084 0.314658 0 0.00628982 -0.00736802 0.0495511 0.23831 0 -0.770223 -0.333988 -0.139363 -0.0588274 0.549819 0.118871 -0.391384 0.645316 -1.72198 0.0265812 -0.0321275 -0.500477 0.0047905 -0.0296737 -0.0583789 -0.0833405 -0.0400812 0.113515 0.179361 0.397468 -0.305008 0.235361 -0.523373 0.0361719 -0.245739 -0.0969803 -0.641294 0.0105931 -9.44435 0.660005 -2.93992 -0.70501 -0.00873645 1.94939 -1.50101 -0.0615116 0.00657775 0.0719243 0.0750908 -0.964329 -0.264415 -0.0101431 -3.20912 0.468751 -0.00579677 0.0640048 0.0896061 0.0616281 0.13839 -0.180931 -1.11036 -0.0587954 0.0215004 -0.579904 0.10397 -0.274954 -0.0533442 -0.11616 0.0147827 0.52487 0.385799 -0.0116399 -0.243812 1.93902 -1.78366 0.0302889 -0.552438 -0.113133 -0.0777669 0.18184 0.0641994 -0.15335 0.0105066 0.150975 0.257164 0.539334 8.04106 1.85481 -6.65378 0.631196 -2.91839 3.96757 0.0886883 -0.619245 1.0545 -1.26148 -0.0607312 -0.301173 0.611044 -1.04062 1.81088 0 +434 0 0.0443457 -0.0886585 -0.0382877 -0.0876078 0.0660319 0.130099 -0.315531 -0.356004 -0.359329 0.783747 -0.265396 0.0475781 0.008069 0.0704876 -0.0592166 -0.66294 -1.48435 0.00126102 -0.0601028 -1.02346 0.0158559 0.00534485 -0.0106121 0.253474 -0.0821424 -0.232687 -0.0323212 -0.338256 0.198014 0.135187 -0.0640163 -0.567472 -0.131673 -0.182767 -0.153352 -0.0495817 -0.387472 -0.380543 -0.427248 -0.179181 0.0482786 -1.36864 -0.0845374 -0.0429637 0.252271 0.153587 -0.200828 -0.736706 0.220479 1.16867 0.372621 2.39252 0.0345868 0.00656059 -0.0359827 0.494905 -0.250502 -0.217777 -0.351946 -0.105456 0.219229 1.12361 -1.05508 -0.629913 -0.125422 -0.503214 0.506013 -0.158706 0.114578 -0.163058 0.289746 -0.416416 0.391168 0.0641378 0.322681 0.0674301 -2.37849 -3.20652 1.39223 0.0879457 -0.523901 1.48066 -1.09836 0.567336 -0.709618 -0.121039 -0.115439 0.223347 -0.342601 0.602082 -0.466709 0 0 0 0 0 -0.0382877 -0.0876078 0.00530108 0 0 0 0 0.000671903 0 -0.0119931 0 0 0.00415724 0.00347407 -0.02222 0 -0.00214812 -0.00221342 -0.119546 0 0 -0.309511 0.000320753 0 -0.118499 -0.0979792 0 0 -0.0353055 -0.0146179 0 -0.366642 0 -0.0532516 0 0 -0.00511757 0 0 -0.825575 0.011926 0.0535729 0 0.0807957 0.0308971 0 0 -0.0217515 0 0.0114812 -0.559968 -0.0177771 0 0 -0.00819054 -0.00844069 0 0.0083952 0.0512303 0.0215826 -2.38228 0.0131548 -0.0162859 0 -9.90545e-05 0.125381 -0.0694336 -0.0852507 -0.0662987 0 0 0 6.81535 0.168206 0.655731 0.0296478 -0.0667956 0.965321 -0.00585313 0.0100697 -0.0077263 0.0453312 0 0 0 0 0 0 0.0660319 0 0.130099 0 0 0 0 -0.126182 -1.01136 0 0 0.0810468 0 -0.000255498 0 -0.0514507 0 0 0.189943 0 0.277218 -0.0106237 0.0145252 0.00891826 0 0 -0.476606 0 2.89627 0 -0.32686 0.960926 0 -0.0565346 0.0412992 -0.00153083 0 -0.0189583 0 0 -0.11486 0 1.77356 0.165671 0 0 -0.016214 0 0 0.10772 0.0838019 -0.140793 0 -0.238033 0 -0.71759 -0.0249138 0.0418097 -0.355949 -0.041265 0.367871 0.520575 0.00441373 0.86494 5.07425 0.0406906 0 0 0 -0.010915 -0.0116162 0 0 0 0 0.0170324 3.32488 0.0116816 0.299806 0.105804 -0.0807211 0.420446 -0.0683125 0.0736325 -0.0445012 0.0653979 0 0 0 0 0 0 +435 0 1.56771 -0.26356 0.000743796 0.0440078 0.19774 -0.194159 0.381015 -0.164756 -0.0684436 -0.130832 -0.105631 -0.334093 -0.00249782 -0.574537 -0.0744613 -1.88075 -7.38879 -0.0170422 -0.132797 0.537195 -0.0150555 0.385589 0.00167877 -0.0270371 0.3095 -0.731902 0.0213553 0.596017 0.390614 -0.183635 0.00252902 -0.558289 0.21541 0.186087 0.374506 -0.0203866 -0.094099 -2.25944 0.0157317 -0.522767 -0.0166765 -0.555542 -0.00560002 -0.924523 -0.106467 -0.695706 0.683003 -0.959239 -0.0168115 -0.428106 -0.0554415 -3.52472 0.257454 -0.0773748 0.136486 1.57982 -0.0597202 0.294113 -0.000827882 0.0534531 -0.62186 -0.558511 -1.48419 0.0307731 -0.164411 0.35026 -0.908545 -0.0930325 -0.0191653 -0.277293 -0.192023 -0.24539 -0.037937 0.442302 -0.545928 -1.03671 14.8714 3.49828 3.20855 1.64859 0.0895204 1.8391 0.114554 0.361098 -0.384517 0.942784 0.0487193 -0.0566039 0.0360969 0.175927 -0.920659 0 0 0 0 0 0.000743796 0.0440078 0.0019627 0 0 0 0 -0.000138929 0 0.0105164 0 0 -0.00152337 -0.00595616 0.0188226 0 0.00226017 0.0074989 0.110942 0 0 0.160089 -0.000361062 0 0.0290613 0.533234 0 0 0.0151063 0.0583592 0 0.0159722 0 0.0311386 0 0 0.00308308 0 0 -0.492434 -0.00325909 -0.0321641 0 0.0191546 0.0439853 0 0 -0.211082 0 0.00369498 0.0430671 -0.0188407 0 0 0.00214162 -0.00384678 0 -0.00105288 -0.0645273 -0.0142468 0.0631368 -0.0606261 0.00664156 0 0.0126944 0.0639943 -0.104148 0.0102297 0.0428929 0 0 0 2.42017 0.206645 -0.339165 0.0213408 -0.0231249 0.164608 0.00120281 -0.00386883 0.0356906 -0.121776 0 0 0 0 0 0 0.19774 0 -0.194159 0 0 0 0 -0.0127801 -0.53938 0 0 0.265233 0 0.0214385 0 -0.0254238 0 0 0.0805228 0 0.783283 -0.0490978 0.0718839 0.00485336 0 0 -0.2804 0 0.755448 0 -1.00853 -0.171557 0 -0.379634 0.761972 -0.00131379 0 0.00314728 0 0 -0.0620707 0 -0.0989348 0.450027 0 0 0.0519434 0 0 -0.125318 -0.822583 -0.0414574 0 -0.17413 0 0.0184471 -0.0577761 0.0709243 -0.25051 0.116684 -0.266031 -0.141955 -0.0872119 0.0491492 0.611588 -0.0970895 0 0 0 0.0474255 0.0206259 0 0 0 0 -0.0837805 9.82569 -0.583548 2.38854 0.1271 0.0470491 0.453198 -0.120896 0.0786611 -0.0883377 0.0582377 0 0 0 0 0 0 +436 0 -0.871533 0.217481 -0.0502506 -0.315134 0.522041 0.20576 -0.207921 -1.82207 -0.428998 1.02111 -0.238347 0.964786 0.00379034 1.79709 -0.0300308 1.60557 6.63884 0.162083 -0.0369276 6.03347 0.00894703 -0.0953532 -0.00793287 0.136318 -0.115682 0.312175 0.0268406 0.166489 1.60594 0.353545 -0.0576606 -0.140603 -0.170806 0.11239 -0.0118842 -0.0312178 0.142204 -0.814564 -0.386163 2.61913 0.0193335 0.491798 -0.0624201 4.10078 0.062846 0.999576 0.764144 -0.170578 -0.0214579 0.260948 0.00185224 -4.16055 0.12921 -0.120624 0.295865 -1.99857 0.802152 0.34666 -0.00153901 0.00336104 -0.463314 -6.23685 -0.550978 -1.21003 -0.17375 -0.655675 0.755217 0.210588 0.129508 0.437566 0.147912 0.13638 -0.0890996 -4.35085 -0.637728 0.323162 4.73921 -0.0577024 3.03853 0.824837 -0.126282 0.838884 -0.313552 0.880475 -2.14286 3.45867 -0.0287583 0.119642 -0.441501 1.2546 -3.78512 0 0 0 0 0 -0.0502506 -0.315134 -0.00278991 0 0 0 0 -3.02241e-05 0 -0.0120269 0 0 -0.00411013 -0.0065249 -0.0207366 0 -0.00239974 0.0468567 -0.10548 0 0 0.169105 -0.000424895 0 -0.0474313 1.06804 0 0 0.0212347 0.269831 0 -0.104705 0 0.00112488 0 0 0.000958196 0 0 -0.520521 0.00119677 -0.0602039 0 -0.0346319 -0.0366658 0 0 -0.0490645 0 -0.00535277 -0.883045 -0.00361544 0 0 0.00857869 0.00521321 0 -0.0182514 0.0298375 -0.0300926 0.506412 -0.0169026 0.00294433 0 -0.00638141 -0.0178796 0.199339 -0.0329749 -0.417932 0 0 0 5.17533 0.355351 0.791113 0.0058735 -0.0251337 0.771056 0.00506229 -0.00896842 0.0275106 0.155974 0 0 0 0 0 0 0.522041 0 0.20576 0 0 0 0 -0.361865 0.470378 0 0 1.18775 0 0.126294 0 0.043356 0 0 0.686282 0 0.0531001 -0.141961 0.442939 0.0974227 0 0 0.334213 0 10.0469 0 3.67566 0.996036 0 -1.16729 0.885182 0.0467823 0 -0.0480195 0 0 0.0677339 0 3.69811 1.40663 0 0 0.195974 0 0 -0.356149 0.300954 -0.404952 0 -1.01265 0 0.101779 -0.0315253 0.207721 -0.109816 0.0424067 0.523584 -0.146624 0.0759085 -1.32427 -5.50393 0.0159642 0 0 0 -0.0319799 -0.101878 0 0 0 0 -0.139648 -17.499 -5.60996 4.98491 -1.67928 1.62776 -1.93912 -0.470948 0.449995 -0.658614 0.787436 0 0 0 0 0 0 +437 0 -0.182214 0.311243 -0.000704638 -0.0389806 -0.135072 0.258218 -0.68086 -0.582077 0.0470579 0.233732 -0.0349974 1.10079 -0.00046207 1.31957 -0.0161749 2.18675 10.005 0.104257 -0.0311245 0.0432753 0.0325571 0.0508569 0.000834961 0.0875665 -0.216713 0.435204 -0.0169265 -0.559506 -0.822657 0.55794 0.00645992 -0.147548 0.147523 0.00456214 -0.233142 -0.0132839 -0.100918 -0.444023 -0.0536444 0.679076 -0.00360563 0.0481017 -0.0124278 2.5035 -0.0218291 0.700668 -0.719657 -0.285493 0.00588929 0.769613 0.15032 -1.47434 -0.00240926 -0.00628184 0.00723162 -3.60041 0.123778 0.0457652 -0.137452 0.0142046 0.559655 -0.6472 -0.936023 -1.37272 -0.135607 0.0473461 0.891003 -0.0542028 -0.00524771 -0.00888764 0.343958 -0.107983 -0.0823597 -2.73 0.640433 0.104542 -8.26815 -3.24111 -0.48163 -0.528931 -0.512724 1.09491 -0.299858 0.0464146 -0.0178903 0.443998 0.00889584 0.00503638 0.18756 -0.173144 1.50254 0 0 0 0 0 -0.000704638 -0.0389806 -0.00339872 0 0 0 0 -0.000419614 0 0.0046908 0 0 0.000220768 -0.00031942 0.00246988 0 8.40697e-05 -0.0083838 0.0470707 0 0 -0.0425328 0.000103661 0 -0.0547569 -0.668252 0 0 -0.00874473 -0.104993 0 -0.237087 0 -0.00701021 0 0 -0.00105527 0 0 -0.776515 -0.00662484 -0.0118858 0 -0.0572585 0.110553 0 0 -0.245775 0 -0.00670823 -0.444755 0.0134021 0 0 -0.000814223 0.00566949 0 0.00285529 0.0231823 0.0142515 -1.20634 0.0329743 -0.0199417 0 -0.0148294 0.0409345 -0.291837 0.0281244 -0.0401518 0 0 0 7.41067 0.48268 0.157377 0.0137616 0.00612277 0.670844 -0.00156289 0.00519874 0.0161132 -0.0724962 0 0 0 0 0 0 -0.135072 0 0.258218 0 0 0 0 0.117688 -0.440061 0 0 -0.0347384 0 -0.00897051 0 -0.0428821 0 0 0.221188 0 0.0639261 0.0261511 -0.0649611 0.0192544 0 0 -0.389994 0 4.4802 0 0.413686 0.889667 0 0.156233 0.354447 -0.00772471 0 0.0209823 0 0 -0.0504036 0 1.6306 0.444635 0 0 0.0518401 0 0 0.0449918 0.391658 0.0048022 0 -0.77096 0 -0.794588 -0.0615227 0.0452952 -0.0772063 -0.109673 0.296904 0.860783 -0.0774579 0.363924 -1.60052 0.142245 0 0 0 -0.000730069 0.0502857 0 0 0 0 -0.0331953 -0.834596 -0.556603 0.185849 -0.334524 0.17206 0.24111 0.0396899 -0.0275556 0.0506768 -0.105066 0 0 0 0 0 0 +438 0 0.149064 0.447033 -0.00529229 -0.0951111 0.10928 0.229019 -0.862245 -1.06775 0.136325 -0.00389884 -0.0245063 -0.200777 8.99658e-05 -1.02522 -0.0186019 0.114402 -1.66676 -0.0433586 -0.0308657 -0.441122 -0.023076 -0.583047 0.0013953 -0.0803222 -0.51844 0.429411 -0.0348642 -0.555517 -0.609268 -0.055688 0.0137504 -0.189219 -1.0444 -0.265062 -0.452028 -0.00330784 -0.0471325 -1.99757 -0.0555129 0.38867 0.00246935 -0.195535 -0.00689775 -2.20953 0.0418578 0.483672 -0.57587 -0.320716 0.0048534 -0.0457323 -0.342552 1.42 -0.0941669 0.0371052 -0.0666297 0.897579 -0.339065 0.210237 0.10541 0.00197185 0.461787 -0.130691 0.209468 0.460923 -0.2816 0.544359 -0.362628 0.147822 -0.014147 -0.307267 0.00569013 -0.160841 0.0270696 1.45848 0.508363 -0.334902 7.60506 1.96232 1.83215 1.27198 -0.226389 1.56328 0.0812475 0.0515364 0.0779654 1.1428 -0.017058 0.0226138 0.0859197 -0.113818 1.11279 0 0 0 0 0 -0.00529229 -0.0951111 -0.000806406 0 0 0 0 -9.83184e-05 0 -0.0103772 0 0 -0.000968431 -0.00222725 -0.00490969 0 -0.00104317 -0.0145704 -0.052016 0 0 0.189584 -0.000111809 0 0.00324666 -0.432127 0 0 0.019949 -0.101899 0 -0.0622003 0 0.0196335 0 0 0.00208552 0 0 -0.518486 -0.00366854 -0.0242316 0 -0.0356598 0.113564 0 0 -0.299067 0 -0.00106111 0.0794115 -0.00647501 0 0 0.00172774 0.000896803 0 -0.00641619 0.00616859 0.0156971 1.01106 -0.0615826 -0.0349434 0 0.00454528 -0.0495932 0.00036909 0.0829658 0.0687229 0 0 0 5.10677 0.422506 0.442536 0.038495 0.0568144 -0.507737 0.000258222 0.00576409 -0.0103387 -0.01816 0 0 0 0 0 0 0.10928 0 0.229019 0 0 0 0 -0.0246672 0.531425 0 0 0.278331 0 0.0351069 0 0.0210325 0 0 -0.464713 0 -0.79968 -0.00525749 0.0971874 -0.0639276 0 0 0.204615 0 -3.71875 0 -0.926709 -0.427683 0 -0.0113543 -0.868802 0.0179401 0 -0.00728976 0 0 0.0588012 0 -1.52717 -0.721145 0 0 -0.0847657 0 0 0.0405418 -0.427345 -0.0328417 0 0.445921 0 0.625758 -0.0266927 0.0833084 -0.0613066 0.129178 0.0781299 -0.567883 0.065931 0.042469 4.24213 -0.0916802 0 0 0 -0.0214441 -0.0738314 0 0 0 0 0.0489586 -2.0519 -1.37606 0.109279 -0.408313 0.582892 -0.716584 -0.141951 0.116975 -0.110431 -0.174207 0 0 0 0 0 0 +439 0 -0.746771 -0.108887 -0.0481256 -0.348211 0.279816 0.0547343 -0.126672 -1.11169 -0.176817 0.808727 -0.309792 0.202718 0.00139871 1.21558 0.011242 0.170847 1.86177 0.00726021 0.00326125 1.83211 -0.0174644 0.0050597 -0.00181576 0.108913 -0.0841059 -0.101136 -0.0187281 0.119575 1.21912 0.138858 -0.0175972 0.00108953 0.117951 -0.0902123 0.0301042 -0.0205866 -0.163904 1.24339 -0.533785 0.438439 0.0113954 -0.800814 -0.0435766 2.47818 0.0585261 0.076258 0.480987 -0.157634 -0.0890593 1.51468 0.231821 1.66775 -0.0578885 -0.0532406 0.0468462 2.74297 -0.342046 -0.0567096 -0.10839 0.0318946 -0.370821 0.587255 -0.842548 -0.0399441 -0.299482 -0.808291 -0.160093 -0.10247 0.0246346 0.10285 0.335142 0.165219 -0.0372386 0.833012 0.0166574 -0.755818 0.510578 1.37438 -0.197894 1.1925 0.993854 -3.8884 -0.333925 1.02809 -1.90346 1.03504 -0.0238507 0.124568 -0.301856 0.816648 -2.22664 0 0 0 0 0 -0.0481256 -0.348211 -0.0010687 0 0 0 0 2.19735e-05 0 -0.00611094 0 0 -0.00420644 -0.00878255 -0.00311681 0 -0.000155823 0.00140446 -0.0499682 0 0 0.26528 -0.000526046 0 -0.0320326 0.677572 0 0 0.0303195 0.0611912 0 -0.184096 0 0.0220567 0 0 0.00268323 0 0 -1.07946 -0.00061542 -0.0715571 0 -0.0265314 0.0355207 0 0 -0.252944 0 -0.00190566 -0.789658 -0.0209993 0 0 0.00828185 0.00161057 0 -0.0214082 0.0242375 -0.023051 -0.00977122 -0.0857833 -0.000431564 0 -0.00459104 0.0783092 0.0739872 -0.0183785 -0.214789 0 0 0 9.31631 0.624172 0.739302 0.0351507 -0.0228717 0.787453 0.00437649 -0.00601316 0.036724 0.0402438 0 0 0 0 0 0 0.279816 0 0.0547343 0 0 0 0 -0.304452 -0.266383 0 0 1.16944 0 0.12587 0 0.00880993 0 0 -0.0753613 0 0.31552 -0.096709 0.396712 -0.0330399 0 0 -0.0158937 0 0.941247 0 5.21766 -0.0347153 0 -0.774052 1.38427 0.0400693 0 -0.0390899 0 0 -0.0116798 0 0.462503 -0.0882383 0 0 -0.0566654 0 0 0.0336433 2.24331 -0.395411 0 1.39705 0 -0.063627 -0.182234 0.346523 -0.197118 -0.0310514 1.02263 0.476581 0.0996749 -0.257865 7.79205 0.148322 0 0 0 0.0372312 -0.110189 0 0 0 0 -0.082675 -26.4265 -6.13573 3.14846 -1.86395 1.60004 -2.1592 -0.480779 0.416494 -0.577536 0.473568 0 0 0 0 0 0 +440 0 0 0 0 0 -0.0836394 0.146309 -0.618506 0.512189 0 0 -0.169727 0.464348 0 -0.446408 -0.0788371 0 0 0 -0.404586 -4.13486 0 0 0 0 -0.108092 0 0 -0.856626 0.908677 0.360036 0 -0.239391 0 0 -0.236514 -0.0312952 0 0 -0.230356 -1.00097 0 0 -0.0267963 -0.39138 0 0.301113 -0.958186 -0.620555 0.137339 -0.665802 -0.198418 0 0.198177 -0.350408 0.186923 0.136787 -0.36438 -1.55363 0 0 -0.188399 8.29039 0 0.457187 0.269346 1.21581 0 0 0 0 -0.340812 -0.336516 0 0.852011 0.789106 0 0 0 -1.3656 0 -0.0775601 -0.831697 0 0.148047 0.201425 -3.05697 0 0.279829 -0.858633 0.881761 -5.70905 0 0 0 0.0143713 -0.00349588 0 0 0 0.0144089 -0.00802369 0 0.00146965 0 -0.000556491 0.0074744 0 0 0 0 -0.0102979 0 0.00160024 0 0.0223663 0 0.147251 0.347836 0 0.000748986 0 0 0.126121 -0.000236305 0.0430457 0 -0.00089559 0 -0.000397764 0.0749275 0.01061 -0.00570571 0.00950694 0 -2.28355e-05 0 0 0 -4.30512e-05 0 0 0.000198779 -0.000433863 -0.196218 0.00575645 0 0 0.0141729 0 0.000554449 0 0 -0.0037663 -0.00502178 0.102227 0.00697997 0 0 0.00736897 0.0175365 0.00105403 -0.0508673 0.130631 0 0.199618 -0.00312849 0.0705191 0 0 0 -0.0568176 0 0.0199542 -0.681439 0 0.00119602 -0.0460427 -0.109765 0 0.000170635 -0.00659809 0.0212207 -0.336298 0 -0.0836394 0.0143713 0.146309 -0.00349588 -0.304529 -0.0501717 0.0865654 -0.0942403 -0.50971 0.00645122 0.00385651 0.0824692 0.0017978 0.00807512 0.00110093 -0.0298865 -0.013099 0.00847332 -1.24189 0.273293 -0.0941789 -0.0333187 0.131145 -0.195827 -0.0877546 0.130871 -0.426221 -0.00512749 -6.53231 -0.171619 -0.29175 0.252484 -0.000890633 -0.0616565 0.059289 0.0113259 -0.0061854 -0.0230256 -0.0337354 0.91473 -0.0556036 0.0162702 -1.82136 -2.33901 -3.77215e-05 -0.0302354 -0.32986 0.0219241 0.0483348 0.84388 -1.05546 0.12182 0.0216263 0.553751 -0.0575335 1.30167 -0.0707189 0.181981 0.223676 0.0199075 -1.30493 -0.356097 0.229434 -1.18519 -1.00971 -0.210477 -0.0428758 0.000369491 -0.194187 -0.431583 -0.0213717 0.0251181 -0.0129264 0.205809 -0.0314252 -0.192811 0.618955 -0.0375952 -0.575034 -5.72867e-05 0.150014 -2.01851 -0.00397332 0.00312983 -0.298089 -0.347362 -0.000518761 0.0186074 -0.1565 0.14625 -0.71377 0 +441 0 0 0 0 0 0.31405 0.295565 -0.72258 -2.15775 0 0 0.0295886 0.691588 0 0.289495 -0.0114522 0 0 0 0.187799 -3.63297 0 0 0 0 -0.512649 0 0 -0.848566 -1.10619 0.461011 0 0.062255 0 0 -0.287387 0.0090063 0 0 -0.348427 0.172392 0 0 -0.0854219 -0.258428 0 0.712249 -0.976914 0.970405 0.159156 -1.002 0.335738 0 -0.515155 0.0606719 -0.281155 -1.63154 -0.390248 -0.0549418 0 0 1.21933 -2.67487 0 0.122322 0.656228 -0.178962 0 0 0 0 -0.0130814 -0.430651 0 -4.11343 0.849216 0 0 0 4.84222 0 1.06731 0.323745 0 -0.0695191 -0.559282 3.61238 0 0.0319645 -0.589704 0.807048 3.07588 0 0 0 0.0187016 0.0286749 0 0 0 0.0489831 -0.00829585 0 0.00751207 0 0.000402624 -0.0141102 0 0 0 0 -0.0830822 0 -0.00986223 0 -0.105408 0 0.290696 0.17082 0 0.00351692 0 0 0.182439 -2.12534e-05 0.0427184 0 0.000420287 0 -0.000483188 0.0125696 0.022981 -0.00139808 0.0040172 0 2.46474e-05 0 0 0 1.49865e-05 0 0 0.00074807 0.00160245 0.00147408 -0.00867274 0 0 0.00754759 0 0.00292179 0 0 -0.0053649 0.0119999 -0.0875548 0.0125595 0 0 -0.0894008 -0.0170492 -0.0307371 -0.0659383 -0.458121 0 -0.188047 -0.00435916 -0.11008 0 0 0 0.000417207 0 0.0156829 -0.0447844 0 0.00116235 0.011028 -0.0295637 0 0.000158227 0.00150474 0.00121152 -0.029716 0 0.31405 0.0187016 0.295565 0.0286749 -0.0588939 -0.0326326 0.535095 0.0100259 0.622965 -0.0157084 -0.0251343 -0.189843 -0.00442236 -0.0439516 0.079439 -0.0155238 -0.0317056 -0.0672517 -1.40797 -0.594884 -0.0700165 -0.0541994 -0.126505 -0.203702 -0.132004 -0.0160082 0.00101971 0.00914044 -3.8088 0.0715328 0.234266 -0.114528 0.010646 -0.454336 -0.0599645 -0.0258707 -0.00286965 0.00542196 -0.0163812 -0.316861 0.0593846 -0.00288445 -1.79518 -2.88398 -0.00457649 0.00538253 -0.406152 -0.0160437 -0.193711 1.18067 -0.0825056 -0.464194 0.254839 -0.0554587 -0.357347 -0.310496 0.0317103 -0.0366831 -0.0692439 0.0356391 0.342135 0.127124 0.0214404 -0.503664 1.96494 -0.0094272 0.381186 -0.0171471 -0.291622 -0.658234 0.0300726 0.0068552 0.00690246 0.0520967 0.0278092 -0.0228429 -0.497 0.161322 1.25176 0.0641668 -0.105375 1.36249 0.0173104 -0.0248096 0.107097 0.235342 0.00411734 -0.0272826 0.0701398 -0.101422 0.364411 0 +442 0 0 0 0 0 0.126001 -0.116272 1.1098 2.47095 0 0 0.314087 0.0518455 0 0.172086 0.0474963 0 0 0 -0.0983802 2.11291 0 0 0 0 0.655833 0 0 0.196078 -0.382362 0.0262236 0 0.307367 0 0 0.30318 0.0975532 0 0 1.23307 1.02183 0 0 0.464437 -0.351965 0 0.353531 0.123889 0.00836313 -0.500806 0.0217401 -0.880348 0 0.0484239 -0.123384 -0.116911 0.402401 0.772999 0.719001 0 0 -1.67229 -6.45975 0 -0.453223 0.30948 0.341876 0 0 0 0 -0.374894 0.278699 0 -2.34171 1.27789 0 0 0 -4.48528 0 -2.08663 -0.27106 0 -0.565415 -0.167346 -5.10373 0 -0.819189 -0.0910718 -2.48354 1.96369 0 0 0 0.100688 -0.0146257 0 0 0 -0.0173911 -0.00759374 0 -0.00295043 0 -0.00163656 -0.0164518 0 0 0 0 -0.26822 0 -0.0213205 0 -0.338308 0 -0.0807461 -0.359966 0 0.00654279 0 0 0.424805 -0.000361466 -0.0717508 0 -0.00227624 0 -0.000296695 -0.102061 0.0549986 -0.0118785 -0.018424 0 -5.98327e-05 0 0 0 -0.000103501 0 0 0.00180415 -0.00105918 -0.0256163 -0.021127 0 0 0.0117133 0 -0.000455464 0 0 0.0416544 -0.00194593 0.0877142 0.0286455 0 0 -0.161277 0.0811463 0.0301224 -0.130662 0.695967 0 -0.022217 -0.00716959 -0.306778 0 0 0 1.28426 0 0.0685257 -1.04785 0 0.00466317 -0.0532684 0.235372 0 0.000646279 -0.00774466 0.0390661 -0.576594 0 0.126001 0.100688 -0.116272 -0.0146257 -0.112091 -0.0186355 0.249773 0.154884 0.572873 0.0292813 -0.0437129 0.324017 0.00767473 0.0680509 -0.0110866 0.041118 -0.0211823 0.0733694 0.722818 0.14528 -0.0665974 0.0393771 0.102866 0.0826933 -0.411527 -0.115506 0.163672 0.00341118 4.85707 0.198231 -0.0903741 0.495994 -0.00555479 0.0594157 -0.17784 0.0149311 0.00309601 0.0390432 0.0253424 -0.734124 0.057267 -0.0170388 1.75348 0.586252 -0.00150148 0.020168 0.0797196 0.0136164 0.206023 -0.669978 0.593825 -0.0675824 0.110418 -0.0769187 -0.0973283 -0.657742 -0.0190018 -0.117016 0.0581524 0.107324 -0.264832 -0.0827923 -0.0354401 -0.242493 -1.6987 -0.0163984 -0.652305 -0.0239379 0.081935 0.431598 -0.170096 0.0131638 -0.0438484 -0.225105 0.0927248 -0.131859 0.191731 -0.328253 -1.45324 -0.0750609 -0.809248 2.2487 -0.0224637 -0.0273299 0.158276 0.300146 -0.00449188 0.0247558 0.0324692 -0.0378192 0.345996 0 +443 0 -1.20338 -0.50898 -0.0241127 -0.172855 -0.142559 -0.334631 0.825805 1.0947 -0.313938 0.462867 0.0584826 -0.58492 0.00104282 -0.644455 0.0422684 -0.147311 -2.91807 0.0446805 0.0891686 -3.74222 -0.0118553 0.421875 -0.00377981 0.00403943 0.475577 -0.258434 0.0247703 0.59037 0.330861 -0.343599 -0.0344888 0.496421 1.29808 0.208869 0.40068 0.00717677 -0.0335254 6.22292 0.0447989 -1.91267 0.00247044 0.0612818 0.00858345 -2.89664 -0.0378195 -1.11558 0.621754 0.888825 0.00822872 0.815643 0.412633 -2.13518 -0.0401397 0.0549677 0.00385932 -1.16866 -0.35237 -0.28559 0.0354614 -0.0103156 1.0075 2.30392 1.7189 1.4932 0.299645 -0.380587 0.300485 -0.0855216 0.0651384 0.178431 0.283873 0.481538 -0.232419 0.244672 -1.06017 -1.22088 -21.3299 -2.83443 -6.11766 -1.37619 0.838348 -8.93343 0.116465 0.0171458 -0.731164 -2.04843 0.00533537 0.00568932 0.0202538 -0.129054 -0.762719 0 0 0 0 0 -0.0241127 -0.172855 -0.000190291 0 0 0 0 -6.18501e-06 0 0.000446155 0 0 -9.29575e-05 -5.30894e-05 0.00119471 0 -0.000122072 -0.0154536 0.0273908 0 0 -0.12059 -3.02946e-06 0 0.0124644 -0.239278 0 0 -0.0149534 -0.0705154 0 0.0631517 0 -0.0169433 0 0 -0.00185032 0 0 0.271374 -0.0001139 -0.00170084 0 -0.0035686 0.00160306 0 0 0.0747046 0 -6.1839e-05 0.160267 -0.00266223 0 0 -0.000137236 0.000500565 0 0.00161777 0.0072764 0.00354879 -0.392173 0.00460163 -0.0131619 0 -0.00775611 0.0795612 -0.0447463 -0.0163742 -0.0138216 0 0 0 -1.44572 -0.0385226 -0.274742 -0.00559084 0.0140947 -0.27985 1.03602e-06 2.17989e-05 -8.09454e-06 -0.0381784 0 0 0 0 0 0 -0.142559 0 -0.334631 0 0 0 0 -0.0235085 0.108883 0 0 0.395953 0 0.0510784 0 0.0292789 0 0 -0.24787 0 0.440313 0.00983489 0.0210225 -0.0309792 0 0 0.333852 0 -3.08322 0 3.37513 -0.617122 0 0.105849 0.85334 0.0043675 0 -0.00159133 0 0 0.0185964 0 -0.543961 -0.721616 0 0 -0.0829698 0 0 -0.353253 -0.115421 0.0280957 0 0.206542 0 0.621971 -0.0228801 0.0509902 -0.0273234 0.0260413 -0.289165 -0.173312 0.0442032 -0.551283 -3.83325 0.017962 0 0 0 0.186922 -0.0280346 0 0 0 0 -0.0820778 -20.8565 -3.04065 -1.22543 -0.753717 0.463813 -1.60107 -0.139901 0.0794957 -0.20345 -0.0813444 0 0 0 0 0 0 +444 0 0.342418 0.455616 0.021339 0.0462997 -0.0456129 0.0860913 -0.139457 -0.429084 0.326283 -0.691601 0.0185974 -0.765265 -0.00203034 -0.691969 -0.037802 -0.29002 -1.33383 -0.168895 -0.110972 1.95609 -0.0164015 -0.483314 0.00407387 -0.125141 -0.343498 0.269403 -0.0448316 0.11113 0.568821 -0.31168 0.036911 -0.302962 -1.33847 -0.28198 -0.210169 -0.00231152 0.0223886 -4.78163 -0.0221519 0.588956 -0.0113067 0.155326 -0.0165697 -1.71137 -0.0666399 0.167742 0.240375 -0.847714 0.0539133 -0.188525 -0.174869 -3.36976 0.250413 -0.0987308 -0.262436 -2.18603 -0.581898 -0.695377 0.145712 0.0084346 -3.05081 1.55197 -0.522395 -0.65441 -0.0488062 -0.647466 -0.149501 -0.112328 -0.117398 0.476578 -0.680186 -0.0799917 -0.366807 1.65939 0.00322363 -0.772561 20.1219 3.93478 4.0469 1.92528 -0.39684 4.03248 0.0964023 0.0644682 0.551207 0.258235 0.00940119 0.0171555 0.0366879 -0.107565 -1.31128 0 0 0 0 0 0.021339 0.0462997 -0.000229516 0 0 0 0 2.18534e-05 0 0.00252193 0 0 -6.73176e-05 0.000136624 -0.00248283 0 -4.39216e-05 0.0290123 0.0125836 0 0 0.202161 9.77235e-06 0 -0.00455341 0.900249 0 0 0.0223795 0.159897 0 -0.0568623 0 0.027633 0 0 0.0027705 0 0 -0.221601 0.000529106 -0.00231541 0 -0.00339831 0.0107338 0 0 -0.14665 0 0.00160422 -0.239153 -0.00543453 0 0 0.000299344 0.00173895 0 -6.99214e-05 -0.0199722 -0.00501322 -0.877011 0.0146185 -0.0224946 0 -0.000403116 -0.0149206 -0.0203176 -0.0372248 -0.0677638 0 0 0 0.511685 0.0156144 0.0791591 0.000382714 0.0002421 0.00620977 0.000133129 -0.00034994 0.0044529 0.0385327 0 0 0 0 0 0 -0.0456129 0 0.0860913 0 0 0 0 0.142727 0.0552127 0 0 -0.146466 0 -0.0339885 0 -0.0106382 0 0 1.44449 0 -0.540883 -0.0385072 -0.139471 0.21917 0 0 -0.113516 0 6.12118 0 -2.543 0.416875 0 -0.130717 -0.892387 -0.0232481 0 0.00157196 0 0 0.00358104 0 2.0867 2.31365 0 0 0.359559 0 0 -0.646868 0.503253 -0.039673 0 -0.395572 0 -0.462174 -0.0375198 -0.0220137 0.337865 -0.13316 0.0527155 -0.0264155 0.0307307 0.283131 -1.15354 -0.00783244 0 0 0 0.427246 0.0412482 0 0 0 0 -0.0753787 10.3422 1.16261 0.651651 0.39575 -0.155789 0.474157 -0.0317699 0.0359354 0.030212 0.143202 0 0 0 0 0 0 +445 0 0.244262 -0.191645 -0.00371036 0.132579 -0.19585 -0.00860353 -0.654893 -0.609288 0.186809 1.33103 0.0284285 -0.982131 0.00308776 -0.665258 0.0171945 -1.39865 -6.24127 0.247126 0.0563009 -3.07742 0.0663677 0.091569 -0.00181629 0.427158 -0.487237 -0.167637 0.0490053 -0.375207 -1.98573 -0.109878 -0.00129608 -0.019639 0.703945 0.209372 -0.28015 0.00308025 0.0657629 4.18312 0.200803 -1.02821 0.0174913 0.655092 0.0239133 -3.38164 0.0688624 -0.128985 -0.917653 0.0703563 -0.143968 0.347697 -0.0805535 2.58525 -0.0605834 0.096282 0.363913 -0.553749 0.404361 0.355208 -0.409033 -0.0354739 4.32233 -0.137278 0.717803 0.580407 0.144932 1.5555 0.678964 0.0262496 -0.0401912 -1.25391 0.645078 0.0357535 -0.172826 -1.38819 0.191146 0.628211 -15.5815 -3.68514 -1.58509 -1.86125 0.0168347 0.145914 -0.697735 0.0401358 -0.445193 3.31322 -0.00971473 -0.0302771 0.0606948 0.233185 4.5776 0 0 0 0 0 -0.00371036 0.132579 -0.000992196 0 0 0 0 -0.000120509 0 0.0438304 0 0 -0.000471713 -0.00141321 0.0295659 0 0.00411139 -0.0468181 0.305473 0 0 -0.10886 -5.69985e-05 0 -0.0365155 -1.17418 0 0 -0.00397863 -0.269405 0 -0.254143 0 -0.0211158 0 0 -0.00125002 0 0 -0.542074 -0.0025566 -0.0132846 0 -0.021202 0.0365723 0 0 -0.0874123 0 -0.00186437 0.0198832 -0.00299086 0 0 0.00100866 0.00118701 0 -0.00517141 -0.0784042 -0.00296476 1.44387 0.00980002 0.0594109 0 0.00896201 0.0455986 -0.0141278 0.0470264 -0.126927 0 0 0 3.37509 0.158599 -0.754104 0.0140409 -0.0309233 0.380027 0.000572681 -0.00145689 0.0190706 -0.228447 0 0 0 0 0 0 -0.19585 0 -0.00860353 0 0 0 0 0.0437388 -0.0765822 0 0 0.191505 0 0.0534197 0 6.76929e-05 0 0 -0.877506 0 0.199142 -0.0267756 0.0488102 -0.0702562 0 0 -0.00219189 0 -5.11552 0 0.709454 -0.0877932 0 -0.0401689 0.492242 0.0203754 0 0.000320347 0 0 -0.0150761 0 -1.35057 -1.84237 0 0 -0.158619 0 0 -0.653147 -0.942363 -0.0105671 0 -0.595196 0 0.666024 -0.0480757 0.111004 -0.734628 0.156807 0.434925 -0.304269 -0.0492917 1.26012 2.86602 0.0252035 0 0 0 0.346897 -0.0447584 0 0 0 0 0.0200689 -5.8826 -1.69174 0.931484 0.0729132 -0.117054 0.00538293 -0.0123082 -0.0143385 -0.0480647 0.0229348 0 0 0 0 0 0 +446 0 -0.178895 0.303613 -0.00801197 0.0442045 -0.155844 0.105627 -0.0403845 0.0590773 0.127391 -0.0220968 -0.0161936 0.170737 0.005239 1.30097 -0.0230034 0.282409 2.50792 0.010597 -0.066406 6.61046 -0.00150185 -0.352309 -0.00353572 0.0252926 -0.247589 0.328514 -0.0530904 0.276433 1.15171 0.0159607 -0.00603083 -0.220489 -0.482765 -0.274888 -0.171037 -0.0139798 -0.309088 -0.176252 -0.185497 2.58536 0.0240751 -0.842263 -0.0586456 3.65483 0.110272 0.799464 0.565807 -0.57925 0.155951 0.0549753 0.309467 4.50789 0.312217 -0.0146261 -0.0495703 2.55033 0.369646 1.08232 0.0819855 -0.0364326 -0.180946 -6.69205 -0.329368 0.332526 0.0909257 -0.122011 -0.656876 -0.410401 -0.061916 0.160112 -0.195859 -0.0678501 0.300093 1.30294 0.164057 0.718411 2.29274 0.893544 1.03387 0.626013 0.11446 -0.700409 0.129716 -0.0313367 -0.0390129 -0.336787 -0.0187986 0.0367153 -0.181644 0.358748 -1.74369 0 0 0 0 0 -0.00801197 0.0442045 -0.000760558 0 0 0 0 -8.31058e-05 0 -0.00245453 0 0 -0.00028978 -0.000285218 -0.0124733 0 -0.0017496 0.0557432 -0.018552 0 0 0.211658 -9.71575e-06 0 0.0212275 1.34931 0 0 0.0131073 0.275609 0 0.0460161 0 0.0287913 0 0 0.00148616 0 0 0.0447015 -0.00165685 -0.00667242 0 -0.0149963 0.00342275 0 0 0.0628496 0 -0.000242843 0.159843 -0.00366383 0 0 0.000215404 0.00176526 0 -0.000693079 0.0409333 0.00132199 0.716259 0.00806065 -0.0219306 0 -0.00205174 -0.00525897 0.219362 -0.00289878 -0.0913361 0 0 0 0.26861 0.037394 -0.207983 0.00235274 -0.00391207 -0.0278074 0.000190769 -0.000452569 0.00629563 -0.0221714 0 0 0 0 0 0 -0.155844 0 0.105627 0 0 0 0 0.240714 0.157696 0 0 -0.198703 0 -0.0145807 0 -0.0108934 0 0 1.43134 0 -0.317878 0.0665275 -0.0755313 0.211631 0 0 -0.0271057 0 8.31145 0 0.745629 0.260988 0 0.670227 -0.147905 -0.00524701 0 0.0162152 0 0 -0.00219163 0 2.06845 2.98395 0 0 0.432012 0 0 -0.221423 1.76 0.122599 0 0.73442 0 -0.230168 0.0503245 -0.13109 0.0293089 -0.050198 1.11774 0.119609 0.118114 1.08983 5.63267 0.00695879 0 0 0 0.338875 0.0600655 0 0 0 0 0.162997 -3.82694 -0.0429724 -1.34827 -0.128541 0.100656 -0.286286 0.0463915 -0.0348261 0.0787423 -0.17736 0 0 0 0 0 0 +447 0 0.186089 -0.234412 0.033981 0.0428456 0.0615284 -0.318096 0.554503 0.592162 0.45827 -0.397874 -0.179804 -0.254976 -0.00621827 -0.168245 -0.0291536 0.235026 -0.348396 -0.0615601 -0.138567 -0.571199 -0.03277 0.335974 0.0150567 -0.190854 0.57878 -0.290798 -0.0372695 0.702182 1.11617 -0.194295 0.0911035 -0.09282 0.615975 0.27032 0.420801 -0.0201739 -0.0446504 0.566334 -0.169763 -0.970425 -0.0192993 0.94226 -0.00351332 -1.90692 -0.0410566 -0.899151 0.913599 -0.694806 -0.0912549 0.382025 0.0515014 -2.43896 0.266651 -0.108838 0.337747 -1.00042 0.696997 -0.138974 0.156396 0.045596 -1.43587 0.445175 -1.43917 -0.0405315 -0.318013 -0.392952 -0.618318 -0.217176 -0.279686 0.308664 -0.135297 0.232465 -0.372201 -2.05721 -1.32478 -0.937523 -0.134949 -0.247797 -0.457179 -0.638791 0.621693 -1.99294 0.119919 0.0566722 0.229416 -0.647894 0.0069991 0.00668713 -0.0640594 0.340102 -1.68989 0 0 0 0 0 0.033981 0.0428456 -0.00168861 0 0 0 0 -0.000149075 0 0.0127068 0 0 0.000416865 0.000914862 0.0202487 0 0.00380232 -0.0138115 0.0619735 0 0 0.27261 4.24381e-05 0 -0.00872828 0.342136 0 0 0.0454814 0.0110798 0 0.0816015 0 0.0499789 0 0 0.00840188 0 0 0.603928 -0.00293683 0.00972372 0 -0.0327908 -0.0120265 0 0 -0.0658918 0 0.000938598 -0.263216 -0.000679653 0 0 -0.000241972 0.00579059 0 0.00205192 -0.0335051 0.00353232 -0.941239 -0.00118108 -0.0308837 0 -0.0109881 0.0424534 -0.0651385 -0.0555608 0.107168 0 0 0 -2.74681 -0.098896 -0.0396562 -0.00953443 0.0225052 -0.433405 -0.000273201 0.000645675 -0.00901171 0.0103646 0 0 0 0 0 0 0.0615284 0 -0.318096 0 0 0 0 -0.143287 0.522004 0 0 0.27762 0 0.0325992 0 0.0145371 0 0 -0.00629233 0 0.572126 -0.069494 0.0669096 0.00974299 0 0 0.11257 0 -1.0987 0 0.196395 -0.319543 0 -0.596285 0.75765 0.0121116 0 -0.0127288 0 0 0.0588215 0 -0.174383 -0.816723 0 0 -0.0774656 0 0 -0.101605 -2.18232 -0.0471675 0 0.0548701 0 -0.0460559 -0.00596611 0.059534 -0.380367 -0.0119226 -0.0806836 -0.232703 -0.0463157 -1.14266 -7.91678 -0.00113563 0 0 0 0.0416569 -0.0287449 0 0 0 0 -0.07878 -0.744763 -0.795685 2.46738 0.181685 0.145496 -0.162403 -0.112386 0.102087 -0.105044 0.187695 0 0 0 0 0 0 +448 0 0.0928517 -0.333731 -0.0542801 0.0915572 0.00247686 -0.0101009 -0.479692 -0.846492 -0.0116826 1.62158 -0.315241 0.93415 0.0236647 0.216705 -0.0280524 -0.266735 -1.79274 0.200052 0.000794616 2.99895 0.0701926 0.358612 -0.0243345 0.621751 0.0908378 -0.111797 0.0525099 0.103868 1.01434 0.09943 -0.100092 -0.454791 1.33005 -0.310607 -0.0146727 -0.0827164 0.013366 4.68195 -0.610269 0.663735 0.0969057 -1.21855 -0.155203 2.42492 0.382184 -0.0334649 0.418051 -1.00542 0.339343 -1.04542 0.719332 -0.818631 0.478681 0.161606 -0.207209 0.266167 -0.625586 -1.38146 -0.70125 -0.172931 1.86379 5.32044 -1.66033 0.468775 0.417841 0.513622 -0.481363 -0.0784855 0.0276946 -1.2425 0.20701 -0.482005 0.0722202 2.38516 0.477851 0.0802279 -15.6642 -4.85241 -0.438484 -2.18112 1.26345 -4.04718 -1.28987 0.71487 -1.31236 0.68655 -0.0651526 0.124468 -0.375774 0.654261 -1.53571 0 0 0 0 0 -0.0542801 0.0915572 -0.0016877 0 0 0 0 -0.000237796 0 0.0186665 0 0 -0.000259613 -3.82666e-05 -0.00568472 0 -0.00135352 -0.0325615 0.115143 0 0 -0.106463 1.75276e-05 0 0.0109078 -0.888689 0 0 -0.0159869 -0.182154 0 -0.123571 0 -0.0554905 0 0 -0.00805413 0 0 -0.432348 -0.00482242 -0.009223 0 -0.0342727 0.0452682 0 0 -0.0959523 0 0.000131515 0.110117 -0.00228757 0 0 0.00177273 0.004915 0 -0.00717982 -0.0220051 -0.00962711 2.09242 0.0215255 0.0366906 0 0.0116474 0.0211947 0.382302 0.00201111 -0.19458 0 0 0 3.76551 0.185677 -0.237699 0.0174622 -0.040558 0.471529 0.000623228 -0.00166176 0.0208868 -0.0899333 0 0 0 0 0 0 0.00247686 0 -0.0101009 0 0 0 0 0.0145184 -1.44191 0 0 0.1776 0 0.0516509 0 -0.0859776 0 0 0.172166 0 0.309741 -0.0435688 0.040098 -0.0035993 0 0 -0.598753 0 -4.89486 0 0.652415 -0.36129 0 -0.131576 0.561196 0.0208806 0 -0.00112869 0 0 -0.205715 0 -1.37053 0.345812 0 0 -0.0110448 0 0 1.32272 -2.55386 -0.0288376 0 1.38399 0 0.275047 -0.113122 0.0726844 -0.649337 0.126241 0.0491368 -0.397709 -0.112201 0.880391 4.19192 0.0187619 0 0 0 -0.497919 -0.0236647 0 0 0 0 0.523061 -4.31505 -1.20323 1.07011 0.295662 -0.26277 0.38176 0.0337947 -0.0440312 -0.00260971 0.034446 0 0 0 0 0 0 +449 0 0 0 0 0 -0.508141 -0.279635 -0.508479 -0.0735797 0 0 -0.528127 -1.88875 0 -4.14034 -0.28967 0 0 0 -0.793291 0.75561 0 0 0 0 -0.0771212 0 0 0.794218 3.25158 -1.11841 0 -1.23818 0 0 -0.121239 -0.147894 0 0 -0.630006 0.124501 0 0 -0.212128 -7.5052 0 -0.226741 1.65248 -2.81534 0.398593 -2.15468 0.118328 0 1.06976 -0.844052 0.918812 2.13891 1.38459 -0.495765 0 0 -0.66762 1.41404 0 0.44718 0.604512 1.6082 0 0 0 0 -0.767318 -0.392897 0 0.368097 -1.86811 0 0 0 -0.268496 0 0.283529 -3.2189 0 0.15859 -0.868181 0.730721 0 0.50702 -0.990867 1.58577 -6.78566 0 0 0 -0.0171853 -0.0137756 0 0 0 -0.0116207 0.00905507 0 -0.00283888 0 0.00185273 0.0198979 0 0 0 0 0.0567242 0 0.00795702 0 0.16734 0 -0.0352457 -0.358326 0 -0.00164462 0 0 -0.0803226 0.00100248 -0.0491129 0 0.000324536 0 0.000475896 -0.165013 -0.0121982 0.0190934 -0.0227765 0 9.78819e-05 0 0 0 1.7107e-05 0 0 -0.0024877 0.000708757 0.0231693 -0.00541039 0 0 -0.00804386 0 -0.000773317 0 0 0.000255303 0.00311638 0.12127 -0.0251276 0 0 0.0165908 0.0160321 -0.0141498 0.0595818 0.237985 0 -0.0547876 1.63983e-05 -0.123076 0 0 0 -0.758441 0 -0.088298 0.110659 0 -0.00810773 0.0016793 -0.0294079 0 -0.000843292 0.000235048 -0.00351679 0.0217412 0 -0.508141 -0.0171853 -0.279635 -0.0137756 -0.133451 -0.0429206 -0.0927567 -0.888811 -1.95733 0.0164615 -0.0240949 0.0738384 0.00308881 0.0333288 -0.0234189 -0.10431 -0.0280155 0.0861645 0.0461399 0.372552 -0.273627 -0.227837 0.110487 0.00562758 -0.360252 0.0886451 -1.05341 0.00432354 -11.7129 -0.382837 -2.3167 -1.44616 -0.003666 -1.14466 -0.870896 0.0278492 -0.009278 -0.156045 -0.0645876 0.580256 -0.216414 0.0161418 -4.49819 -0.717758 -0.00108472 -0.0562274 -0.0707402 0.0406311 -0.354398 -0.391886 -2.74081 0.394795 0.0187547 -4.27462 0.0421874 1.31147 -0.127818 0.0346904 -0.89094 0.269119 -1.50677 -0.685286 0.175973 1.38789 -5.292 -0.327223 0.091923 -0.0726092 -0.0299604 -0.807721 -0.144477 0.0933843 -0.0346773 0.0552345 0.0258302 0.592719 10.5328 0.239722 4.03471 -0.107062 0.653639 0.186271 -0.0179894 0.108868 -0.372543 0.887808 -0.00660617 0.107273 -0.282933 0.290774 -0.253325 0 +450 0 0 0 0 0 0.0452273 -0.301852 0.547598 0.93661 0 0 -0.0860229 -0.89695 0 -1.94878 -0.0642786 0 0 0 -0.0409444 -3.1174 0 0 0 0 0.353246 0 0 0.653169 2.31596 -0.654368 0 -0.376706 0 0 0.233838 -0.0119411 0 0 -0.323958 -1.10066 0 0 -0.106118 -3.6496 0 -0.807328 1.11358 -0.444276 0.17366 -0.657111 0.533714 0 0.0876917 -0.0516302 0.334799 -0.404098 -0.215934 -0.47645 0 0 0.777182 2.40689 0 0.386828 -0.141491 0.150317 0 0 0 0 0.293086 -0.701726 0 0.988864 -0.412383 0 0 0 -0.681684 0 0.458491 -2.67008 0 0.350751 -1.03931 -0.872701 0 0.341248 -1.18756 1.89438 -6.60407 0 0 0 0.0131711 0.0055001 0 0 0 -0.0434183 0.0275415 0 -0.00420825 0 -0.00101648 0.00434066 0 0 0 0 0.112825 0 0.00524601 0 0.177779 0 -0.406343 0.100982 0 0.00215002 0 0 -0.0108357 0.000154669 0.00743598 0 0.0021959 0 0.00145129 0.173577 0.00858544 0.00392581 0.0194236 0 -5.51353e-05 0 0 0 0.000115994 0 0 -0.000349826 0.00216293 0.109246 0.00629596 0 0 0.00779634 0 -0.00235995 0 0 0.0123199 0.0239349 -0.0929835 0.00536974 0 0 0.0298623 -0.00326606 0.00799948 0.0730221 0.0316837 0 0.151015 0.00858021 -0.00188392 0 0 0 -0.527157 0 -0.0104277 0.106983 0 9.45423e-05 0.000492422 -0.0577449 0 -7.07693e-05 0.00114407 -0.021273 0.248226 0 0.0452273 0.0131711 -0.301852 0.0055001 -0.000759462 -0.0702237 -0.205695 0.184478 -1.31729 -0.0171683 -0.00420544 -0.323976 -0.0031621 -0.0553211 -0.00925249 -0.0440368 0.00397209 -0.0936563 0.195687 -0.454507 -0.365109 0.0411601 -0.19222 0.00187022 0.117277 -0.0118179 -0.514787 -0.00475851 -5.34517 0.134742 -1.84362 -1.53546 0.000179718 0.454146 -0.862748 -0.033683 0.00354156 0.0266004 0.00566599 -0.042638 -0.106701 -0.00502797 -2.96801 0.779984 -0.00114628 0.0331718 0.090577 -0.0310486 0.172412 0.512617 1.58192 -0.010864 -0.0458885 1.18646 0.101205 -0.534142 0.0894316 -0.114218 -0.00883025 0.259556 -0.66796 0.493707 -0.173492 2.77375 11.4292 -0.128387 -0.0972172 -0.00772412 0.18614 0.0471774 0.0605189 -0.0711022 0.0282956 -0.124137 0.00539288 0.630899 8.38195 1.06082 -1.07651 0.283577 -0.470975 0.820629 0.0288963 -0.0378515 -0.073425 0.276781 0.00718056 0.0118583 0.0257822 -0.0849274 0.263696 0 +451 0 0 0 0 0 0.0541101 0.253474 -0.460166 -1.71197 0 0 0.0652358 0.125386 0 0.820754 0.0206052 0 0 0 -0.0156056 -6.03553 0 0 0 0 -0.572588 0 0 -0.151961 3.99942 0.285019 0 0.232535 0 0 -0.276304 0.0450923 0 0 -0.565192 -0.298378 0 0 -0.136464 -0.167388 0 0.81423 0.888487 0.627361 0.275344 -1.12736 0.351629 0 -0.0424861 -0.0673944 -0.0572604 -2.29834 -0.413928 -0.037067 0 0 -0.52929 -1.92433 0 1.35293 0.906451 1.07952 0 0 0 0 -0.463601 -0.853567 0 -1.77798 0.536461 0 0 0 2.34534 0 1.16341 -4.17848 0 0.608406 -1.49187 3.00708 0 0.659225 -1.50981 2.67774 -9.27082 0 0 0 -0.00263876 0.0299535 0 0 0 -0.0242921 -0.00180662 0 -0.000138615 0 -0.00349082 -0.0521829 0 0 0 0 -0.162635 0 -0.024601 0 -0.397448 0 -0.251384 -0.220025 0 0.00287643 0 0 0.258989 -0.00194736 0.011035 0 0.0006504 0 -6.93384e-05 -0.0272121 0.0299582 -0.0379594 0.0142189 0 -0.000183319 0 0 0 3.4984e-05 0 0 0.00480227 -9.31252e-05 0.202947 0.0105227 0 0 0.0411843 0 0.000101608 0 0 0.00939611 0.0098384 -0.0235003 0.0515038 0 0 0.0814361 -0.0256114 0.016044 -0.0679641 0.13025 0 0.308839 0.00903673 0.0736952 0 0 0 1.18454 0 0.168685 -0.754543 0 0.0145552 -0.0452551 0.0295359 0 0.00158545 -0.00575707 0.0218709 -0.283015 0 0.0541101 -0.00263876 0.253474 0.0299535 -0.251344 -0.171672 0.234684 -0.874646 1.35156 -0.0381956 0.0870073 -0.458588 -0.00692634 -0.0736246 0.0543332 0.0701247 0.0502309 -0.21143 -1.25834 -2.56153 -0.143188 -0.194048 -0.182937 -0.160488 0.608947 0.0349477 0.511622 -0.0535908 2.1347 0.291464 -2.19341 1.01578 0.00832978 -1.02866 -0.865142 -0.0284384 0.00614132 -0.150689 0.029044 0.223199 0.217914 0.00643245 1.15129 -2.37336 0.00866076 0.0563432 -0.343379 -0.355385 -0.0120391 0.791531 -1.60617 0.099974 -0.179308 -0.0836832 -0.115107 0.387889 0.255077 -0.184554 -0.177974 0.0329571 -0.874892 0.579481 -0.271835 -4.70191 -21.0185 0.0131768 0.365594 0.0425024 0.0829885 -0.631028 0.142947 -0.200087 0.07777 0.117101 -0.00908402 -0.6947 9.9723 1.42836 2.40867 0.564715 -0.962076 0.607683 0.0547764 -0.154601 0.295875 0.296716 0.0162102 -0.0700342 0.176447 -0.10322 -0.319454 0 +452 0 -0.591234 -0.149704 0.00190827 -0.0303333 -0.145327 -0.0888754 0.573862 0.952195 0.00137139 -0.618903 0.00915888 0.873623 -0.000842184 0.963034 0.00653155 -1.06603 -2.41975 -0.231731 0.00965237 -2.16258 -0.068409 0.132004 0.000484171 -0.226785 0.621866 -0.494543 -0.118029 -0.00284116 -0.233306 0.273644 0.00305866 0.0714028 -0.00446371 -0.642894 0.361574 0.00590482 -0.413687 -0.48659 -0.0692312 -1.17874 -0.00590827 -1.74248 -0.00134533 2.28701 -0.0439227 -0.61178 -0.132441 0.0987907 -0.0297282 -0.12411 -0.159892 5.31387 -0.114716 -0.0120648 -0.0208616 -1.20647 -0.291239 -0.118041 0.307924 0.0082424 -0.379891 1.40012 0.218139 0.192434 0.529069 -0.24832 0.0857127 -0.538049 -0.00845816 0.286669 -0.153736 -0.0659626 0.539911 -0.36223 0.258241 2.22677 2.07804 0.679526 -1.37006 0.305633 -0.499458 1.07319 0.596887 -0.330311 0.430709 -0.7231 0.000567231 0.00180876 0.0259935 0.0458296 0.260137 0 0 0 0 0 0.00190827 -0.0303333 -0.00010235 0 0 0 0 -6.13904e-05 0 -0.00265061 0 0 0.000848474 0.00198992 -0.00493395 0 -0.000467682 -0.033595 -0.0336614 0 0 0.045996 0.00010534 0 0.017713 -0.621626 0 0 1.26179e-05 -0.190599 0 0.0993129 0 0.0110675 0 0 0.000738008 0 0 0.323338 -0.00115968 0.0160368 0 -0.00192692 -0.0343897 0 0 0.0374118 0 -0.000209901 -0.181753 -0.00288117 0 0 -0.00163447 0.000156615 0 0.000448433 -0.0245968 -0.0029967 0.470208 -0.0127139 0.013889 0 -0.00252492 -0.00311676 0.156746 -0.0391207 -0.00534575 0 0 0 -2.65713 -0.192702 -0.0794383 -0.0120364 -0.0105523 -0.00416797 -0.000722725 -0.000633747 -0.00133508 0.00308115 0 0 0 0 0 0 -0.145327 0 -0.0888754 0 0 0 0 0.217955 0.187127 0 0 -0.138408 0 -0.0159472 0 0.0229359 0 0 0.100841 0 0.491298 0.0624314 -0.0268799 0.0118754 0 0 0.21954 0 4.69639 0 1.57219 0.932037 0 0.420415 0.825191 -0.00200947 0 0.0301182 0 0 0.0223004 0 2.47503 0.0896714 0 0 0.0161977 0 0 -0.0737568 0.0271088 -0.10087 0 0.0298194 0 0.749693 -0.137212 0.0587847 0.295263 -0.00940075 0.771704 -0.604823 0.131582 -1.01228 -3.05885 0.0196474 0 0 0 -0.00669762 0.0507456 0 0 0 0 -0.184612 -1.97648 0.0616562 0.382507 0.272059 -0.0350279 -0.48487 0.152831 -0.100503 0.02643 -0.0993628 0 0 0 0 0 0 +453 0 -0.103913 0.245471 0.000264626 -0.0532952 -0.172014 0.256313 -0.34299 -0.113633 0.252374 0.338631 -0.0220635 0.300878 0.000916996 0.651027 -0.00459884 3.29778 10.6911 0.165835 -0.00722392 1.50597 0.0563865 -0.12808 0.00132332 0.122258 -0.422297 1.07691 0.0990303 -0.619636 -0.649823 0.302123 0.0186624 -0.111256 -0.00724949 0.61155 -0.371503 -0.00165752 0.444276 0.411415 -3.76547e-05 1.228 0.00566528 2.05049 0.00185907 1.05771 0.0352622 0.961492 -0.593475 -0.181894 -0.00648396 0.631001 0.132593 -7.74504 0.0324082 0.0121953 0.0309651 -0.0897136 0.175571 0.244477 -0.185095 -0.00998693 -0.677743 -1.25232 -0.526875 0.929993 -0.298489 0.516634 -0.533308 0.396 -0.117067 0.0812237 -0.239165 -0.151338 -0.863292 0.262496 0.486581 -2.44083 0.0526788 -0.0965409 -0.913599 -0.124424 -0.0259768 -0.880258 -0.323247 0.185905 -0.235546 0.302301 -0.000455387 -0.00109298 -0.0154628 0.0201672 0.724555 0 0 0 0 0 0.000264626 -0.0532952 0.00163468 0 0 0 0 0.000192842 0 0.0111069 0 0 0.000696842 0.000584229 0.00845195 0 0.00115628 0.039711 0.074532 0 0 0.0140852 3.09373e-05 0 -0.00207869 1.0126 0 0 0.00743147 0.241485 0 0.00136361 0 -0.00572624 0 0 -7.75382e-05 0 0 0.0492218 0.00364272 0.0130442 0 0.0307938 -0.0187801 0 0 0.162591 0 0.00330883 0.208333 0.000642428 0 0 -0.00134785 -0.00253502 0 0.00967456 0.0154577 -0.000109871 -0.105132 0.0349319 0.0179718 0 0.00179046 0.0136259 -0.0689327 0.00666176 0.0497104 0 0 0 -2.77507 -0.220151 -0.377403 -0.0163205 -0.0143349 0.0618544 -0.00058077 -0.000508913 -0.00109312 -0.00599226 0 0 0 0 0 0 -0.172014 0 0.256313 0 0 0 0 -0.0565483 0.152699 0 0 0.110682 0 0.016333 0 -0.00226185 0 0 0.288085 0 -0.53694 -0.00315393 0.00336901 0.0452819 0 0 -0.0303252 0 5.09475 0 0.521808 0.756549 0 0.037105 -0.436074 0.0037952 0 -0.00753263 0 0 0.0169858 0 1.74399 0.348493 0 0 0.0498033 0 0 -0.175719 0.558189 -0.00654015 0 0.804735 0 0.281718 0.0408293 -0.0101525 0.0369778 0.0512192 0.325976 0.0679488 0.0136069 0.440032 5.98983 0.0155683 0 0 0 0.210231 -0.00172829 0 0 0 0 -0.0529546 -4.24068 -0.70716 -0.256351 0.0367875 -0.21813 0.105857 -0.0016922 -0.00262581 -0.0284508 0.0319828 0 0 0 0 0 0 +454 0 -0.165301 0.122601 -0.0128443 0.000703636 -0.0075436 -0.0904831 0.0587629 0.829665 -0.218566 -0.11716 -0.144234 -0.722066 0.00175935 -2.36356 -0.0207349 -0.51198 -3.94949 -0.0784968 -0.00878749 -1.43701 0.00956759 -0.296753 -0.00308456 0.0250142 0.100926 0.10569 -0.0243574 -0.12662 -0.402356 -0.38771 -0.0279192 -0.317941 -0.889212 -0.31447 -0.0501498 -0.021664 -0.181646 -2.63258 -0.119269 -0.849095 0.0111173 -0.946526 -0.0162577 -4.46667 0.0685818 -0.493514 -0.204825 -0.266255 0.012695 -1.27226 -0.0724648 4.65264 0.0835541 0.0306515 0.104545 1.82417 0.764828 0.318597 -0.0720582 -0.0237788 0.413926 0.718969 1.95667 1.03112 0.672389 0.351562 -0.0408835 -0.155435 0.094048 0.375231 0.00303296 -0.046902 0.395594 0.0770055 0.182685 1.95659 5.74899 1.7739 -2.69298 1.30481 -1.5237 2.87387 0.0744738 -0.164699 0.235301 -0.972318 -0.000885685 -0.00135609 -0.0356364 0.0789666 0.448629 0 0 0 0 0 -0.0128443 0.000703636 0.00135135 0 0 0 0 0.000254883 0 0.0087045 0 0 -0.00114936 -0.00343641 0.0123581 0 0.00140507 0.0266985 0.0837799 0 0 -0.194396 -0.000181905 0 -0.0207055 -0.0463544 0 0 -0.0210587 0.0523214 0 -0.115711 0 -0.0331406 0 0 -0.0035567 0 0 -0.356029 0.00481471 -0.0218137 0 0.0254526 0.0616434 0 0 0.158243 0 0.00274216 0.90306 0.00664125 0 0 0.00220928 -0.00209051 0 0.00931176 0.0506014 0.00641323 0.729309 0.0751816 -0.0182991 0 0.00797865 -0.00665816 0.103762 0.0319154 0.024103 0 0 0 1.54349 0.144975 -0.220392 0.00434761 0.00379144 -0.026848 0.000987884 0.000866503 0.00181113 -0.00748555 0 0 0 0 0 0 -0.0075436 0 -0.0904831 0 0 0 0 0.398329 -1.09992 0 0 -0.0717431 0 -0.0154306 0 -0.0613585 0 0 0.251147 0 -0.752118 0.0606598 -0.107315 0.000303068 0 0 -0.62705 0 -6.42681 0 -2.66202 -0.810815 0 0.544915 -1.31564 -0.0179547 0 0.0520164 0 0 -0.118364 0 -2.18441 -0.284512 0 0 -0.0898578 0 0 -0.0606401 3.42642 -0.302304 0 -0.692965 0 -0.694275 0.0899162 0.03538 0.39529 0.0650517 0.364629 0.538904 -0.0927521 2.35698 11.0822 -0.00995015 0 0 0 -0.022052 -0.0119937 0 0 0 0 0.318113 12.4252 0.634607 -0.908053 0.570775 -0.562689 1.05968 -0.0833063 0.0266413 0.063053 -0.292152 0 0 0 0 0 0 +455 0 -0.596238 0.175492 -0.0242066 -0.0049721 -0.12181 0.25711 0.366313 -0.0969165 0.0232853 0.908958 0.401552 1.45398 0.00991346 3.52669 0.183359 2.05388 8.08953 0.218797 0.315338 -0.135463 -0.00513747 -0.021717 -0.0111192 0.152412 -0.28234 0.534729 -0.171492 -0.660806 -1.52131 0.967951 -0.0297521 1.07671 0.357225 -0.0262277 -0.0705383 0.0745534 -0.48167 2.23709 0.250259 0.446843 0.0455392 -0.260577 0.0394018 6.38156 0.207668 0.655445 -1.09124 1.78284 -0.111786 2.30864 0.579189 2.8626 -0.566057 0.401881 -0.662762 -0.850193 -1.13601 -0.131177 -0.309025 -0.0748358 1.70553 -0.0860244 -1.18067 1.27974 -0.0194358 -1.38773 -1.01271 -0.709271 -0.0111606 -0.863663 0.829194 0.857431 0.249697 -0.0129329 1.20354 0.358574 -6.95622 -2.70908 0.682676 -0.900009 0.9338 -1.69668 -0.453921 0.617927 -0.666317 -1.2045 -0.187857 0.0681619 0.323087 -1.7684 5.34776 0 0 0 0 0 -0.0242066 -0.0049721 -0.000199505 0 0 0 0 -8.39877e-06 0 -0.00636941 0 0 0.000369548 0.00023134 -0.00947719 0 -0.00134797 -0.0824972 -0.0367937 0 0 -0.0498879 1.22465e-05 0 -0.0115281 -1.08353 0 0 -0.00821112 -0.312902 0 -0.0613687 0 -0.0230667 0 0 -0.0037581 0 0 -0.107549 -0.000158656 0.00698089 0 -0.00376871 -0.0175227 0 0 0.0641101 0 -0.00038432 -0.0834721 -0.00162403 0 0 -0.000711887 0.00032481 0 -0.00147687 -0.0334941 -0.00173255 0.834003 -0.0152054 0.0100959 0 -0.00182218 -0.00752879 0.0425267 -0.010794 0.00202473 0 0 0 -0.215887 -0.0613471 0.0379925 -0.0029316 -0.00257056 0.00262825 -0.000314349 -0.000275635 -0.000581422 0.00202046 0 0 0 0 0 0 -0.12181 0 0.25711 0 0 0 0 0.339881 0.507653 0 0 -0.173861 0 -0.0330416 0 0.0613923 0 0 -0.10416 0 -0.646589 0.0825957 -0.120294 -0.0106983 0 0 0.644314 0 6.63977 0 -0.488398 0.899628 0 0.612504 -0.817477 -0.0219764 0 0.045802 0 0 0.0377875 0 2.91005 0.448443 0 0 0.0692516 0 0 -0.083765 1.48104 0.17698 0 0.883495 0 -0.0520263 -0.132252 0.00842365 0.38213 -0.0264132 0.246715 -0.179797 -0.0644236 -0.772475 3.17091 0.0512004 0 0 0 0.114091 0.0518327 0 0 0 0 -0.198054 7.29249 -0.327701 0.755135 -0.152123 0.0363816 0.612203 0.049755 -0.0400545 0.0615798 -0.219804 0 0 0 0 0 0 +456 0 -0.157547 -0.0821711 0.0452497 0.0337447 -0.101066 -0.0652373 0.790643 1.6482 0.168637 -1.0128 0.27626 1.38768 -0.0172727 1.93567 0.112135 -0.646139 -0.710164 -0.199098 0.175334 -0.605982 -0.0149172 0.195475 0.0210646 -0.29425 0.6256 -0.346253 0.0878084 -0.0209967 -0.669588 0.656878 0.0751442 0.577684 0.199971 -0.0333853 0.336153 0.0670087 0.29932 -0.201813 0.502086 -0.337308 -0.0713441 0.4528 0.129846 3.40257 -0.280428 -0.102735 -0.253019 0.959467 -0.287402 0.722356 -1.05415 6.02402 -0.304532 0.219182 -0.317441 1.14827 -0.3812 -0.228315 0.467353 0.124327 0.358559 1.26965 1.91599 -1.90082 -0.38778 -0.148363 1.31181 0.494926 -0.0800873 1.05994 0.164416 0.563724 -0.272586 0.277065 0.327708 0.0370394 2.97759 1.71626 -3.42164 -0.1229 -1.14459 1.95879 0.897672 -1.1907 1.93002 -3.43559 0.253676 -0.471989 0.795742 -1.46722 2.35376 0 0 0 0 0 0.0452497 0.0337447 0.000445143 0 0 0 0 1.35883e-05 0 0.0110454 0 0 -0.000181855 -0.000150837 0.0150195 0 0.00248823 0.0959501 0.0487009 0 0 -0.0808322 -7.98485e-06 0 0.0288953 0.2199 0 0 -0.00548687 0.245572 0 0.150429 0 0.00224527 0 0 0.00205343 0 0 0.339558 0.000256687 -0.00343529 0 0.00840891 0.0108175 0 0 -0.00742057 0 0.000857512 0.170996 0.00147121 0 0 0.00035032 -0.00072473 0 0.00267229 -0.0101477 0.00137705 -0.514339 0.0186614 -0.00257763 0 0.00210626 0.0107533 -0.206058 0.00629271 0.0416761 0 0 0 -0.873286 0.0112747 -0.10049 -0.000495455 -0.000434437 0.00116154 0.000154691 0.00013564 0.000286118 -0.00092301 0 0 0 0 0 0 -0.101066 0 -0.0652373 0 0 0 0 0.153603 1.32732 0 0 -0.0135 0 0.00221311 0 0.0546102 0 0 -0.0927143 0 0.699537 0.0266307 -0.00859999 0.0148894 0 0 0.56743 0 5.76852 0 2.23022 1.0374 0 0.326366 1.13574 -0.00137634 0 0.0138805 0 0 0.132581 0 2.6747 -0.789935 0 0 -0.0419603 0 0 -0.0332616 -0.251335 0.114974 0 1.12477 0 0.347534 -0.0275567 -0.000508235 0.235343 0.157971 0.306208 -0.142274 -0.155138 -1.36702 -2.19224 -0.0223658 0 0 0 0.231573 0.0316866 0 0 0 0 -0.435399 -10.7185 -0.603129 -0.577652 0.210843 -0.144284 -0.583532 0.0690879 -0.0526042 0.00393079 -0.0529428 0 0 0 0 0 0 +457 0 0.466328 0.464227 0.111663 0.171787 -0.22975 -0.297956 1.88234 4.19889 0.478617 -2.25649 0.295472 0.327274 -0.0415639 1.4033 0.143935 3.59726 11.0146 -0.173766 0.23217 -0.765132 0.0387966 -0.166676 0.0519595 -0.578909 1.04733 1.14769 0.5018 0.410227 -0.240011 0.380535 0.190998 0.637081 -1.05305 1.68671 0.582115 0.0906502 1.04351 -5.70262 0.744417 -0.545176 -0.164388 4.19054 0.230538 0.738515 -0.60167 -0.460696 0.228107 1.17906 -0.468197 2.36303 -1.4534 -16.8877 -0.384569 0.319019 -0.430115 -1.68186 -0.603213 -0.00208347 0.930603 0.280204 1.2753 -0.151001 4.13817 -4.06279 -2.01524 -0.956631 3.01357 1.61507 -0.228011 1.4943 0.397036 0.538904 -1.42974 -0.754169 0.286385 -5.13378 18.4353 7.64669 -7.28236 4.58351 -4.64937 7.15821 1.72437 -2.25638 3.56108 -6.63441 0.544271 -0.862132 1.16606 -1.518 0.843695 0 0 0 0 0 0.111663 0.171787 0.000461931 0 0 0 0 1.69148e-05 0 0.00470345 0 0 -0.000539799 -0.000356099 0.0280669 0 0.00198976 0.0956417 0.0734165 0 0 -0.00795111 -1.88509e-05 0 -0.0996567 0.382424 0 0 0.00656512 0.201286 0 -0.228543 0 0.0349839 0 0 0.00814271 0 0 -0.533026 0.000319526 -0.010197 0 0.00872603 0.0271558 0 0 0.0921096 0 0.000889851 0.302251 0.0027022 0 0 0.00103985 -0.000752061 0 0.00318032 0.0503482 0.00278823 0.250075 0.0294033 -0.00995032 0 0.00354147 0.00437538 0.100362 0.010894 -0.0438288 0 0 0 1.68392 0.0761614 -0.104695 0.00290418 0.00254651 0.0200088 0.00045917 0.000402621 0.000849284 -0.00441368 0 0 0 0 0 0 -0.22975 0 -0.297956 0 0 0 0 0.244187 1.80931 0 0 -0.311485 0 -0.0361483 0 0.0496923 0 0 0.0158847 0 0.0662863 0.0703429 -0.0425528 0.0114968 0 0 0.508636 0 5.23854 0 -1.73041 -0.135067 0 0.610605 -0.239447 -0.00483275 0 0.0323541 0 0 0.183047 0 1.18819 -1.09558 0 0 -0.119288 0 0 -0.00765763 1.81895 0.235787 0 1.65363 0 -0.331505 0.113856 -0.169219 0.399072 0.0595778 0.387761 0.0710193 0.0294003 -1.03843 3.58244 -0.0614331 0 0 0 0.250844 0.0249573 0 0 0 0 -0.454315 11.0323 1.26604 -0.419868 0.606341 -0.394729 0.489759 0.0633703 -0.0671886 0.1251 -0.273054 0 0 0 0 0 0 +458 0 0 0 0 0 -0.0420824 0.00200912 -0.573145 -0.426739 0 0 0.316174 0.0678952 0 -0.359524 0.0229051 0 0 0 -0.0597296 -1.37646 0 0 0 0 0.192378 0 0 -0.150198 -3.49555 -0.101178 0 -0.356431 0 0 0.031624 0.0513134 0 0 1.49526 -1.12562 0 0 0.402711 0.335633 0 -0.591908 -0.909714 -1.47721 -0.879495 -0.0861151 -0.718679 0 0.177196 -0.0393848 0.528522 -0.683273 -0.343208 -0.81281 0 0 0.0847611 0.563647 0 -2.61717 -0.525277 -0.350568 0 0 0 0 -0.0513922 1.21054 0 -1.16618 -1.14838 0 0 0 0.079893 0 -1.08149 1.8199 0 -1.11008 0.886659 0.774698 0 -1.90452 2.4795 -3.5565 9.05514 0 0 0 -0.12266 -0.0422807 0 0 0 -0.0263009 -0.0165526 0 -0.00350873 0 0.00488964 0.00748795 0 0 0 0 -0.0759867 0 -0.0045064 0 0.0373455 0 -0.181206 0.0981371 0 0.00161096 0 0 0.0990725 0.00180071 0.0159707 0 -0.00105613 0 -0.00118721 -0.0713383 0.0166267 0.026254 -0.00868395 0 0.00033318 0 0 0 -8.09572e-05 0 0 -0.00155779 0.00437792 -0.0518369 0.0140046 0 0 0.0205882 0 0.0109034 0 0 0.045641 -0.017849 -0.102875 0.00644062 0 0 0.018708 0.0407315 0.043385 0.0450712 -0.0530431 0 -0.0807357 -0.0149909 -0.431233 0 0 0 -0.0592387 0 -0.0177822 -0.0765621 0 0.00161421 -0.0022861 0.000503272 0 -0.00179602 0.000506418 -0.0033735 -0.0726868 0 -0.0420824 -0.12266 0.00200912 -0.0422807 0.33634 0.0788617 -0.117931 0.298891 -2.56134 0.0682774 -0.150505 -0.174705 0.0101589 -0.0145804 -0.0388833 -0.111728 -0.11736 0.429219 0.811389 1.93157 0.323334 -0.0553972 -0.507243 0.0778429 -1.23262 -0.136226 -0.897638 0.0215785 -0.092696 -0.104191 2.6717 0.305627 -0.00739985 -0.422736 0.951325 -0.0693723 -0.00722836 0.050822 -0.0525485 -1.06231 -0.333257 -0.017476 0.394619 2.15973 -0.0146198 -0.0199369 0.225362 0.210244 -0.531666 -0.329471 2.61179 -1.00043 0.274341 0.14258 0.00221825 -0.168255 -1.20304 0.962405 0.432681 -0.225507 0.039714 -0.646964 -0.0337401 -2.34835 -1.06981 -0.140988 0.328698 -0.172536 -0.407316 -0.332327 0.0651298 0.0688508 -0.161687 -0.0308713 0.195251 0.211821 -5.05376 0.0533676 1.69025 -2.42649 1.27887 0.978843 0.114153 -9.6336e-05 0.356129 0.0684254 -0.649215 0.287003 0.149352 -0.306587 0.947739 0 +459 0 0 0 0 0 -0.552966 -0.197443 0.265572 0.914421 0 0 -0.161659 -0.321169 0 0.0852474 0.0580344 0 0 0 0.252899 0.665506 0 0 0 0 0.193859 0 0 0.483486 3.94216 -0.255588 0 0.658886 0 0 0.120589 -0.0133245 0 0 -1.04644 -0.175819 0 0 -0.171259 0.313105 0 -0.347374 1.11992 1.29807 0.420114 1.1829 -0.0104188 0 -0.750379 0.0151461 0.0456052 -0.631325 -0.430027 0.290175 0 0 0.095833 -1.60221 0 0.16349 -0.41824 0.210256 0 0 0 0 -0.107322 -0.175871 0 -0.521194 -0.527325 0 0 0 -2.03106 0 0.709473 -3.12225 0 0.50509 -1.01667 -1.31618 0 1.05959 -1.74027 2.20289 -7.39217 0 0 0 0.144232 0.0341451 0 0 0 0.00150369 0.00115728 0 0.000627675 0 0.00368588 0.0356197 0 0 0 0 0.0832798 0 0.0142794 0 0.196353 0 -0.0123809 0.219177 0 -0.00598371 0 0 -0.111177 5.43279e-05 0.0699515 0 0.00509179 0 5.73062e-05 0.18322 -0.028158 -0.000751813 0.0350062 0 0.00028884 0 0 0 0.00036831 0 0 0.0109248 0.00976691 0.0117851 -0.0411817 0 0 -0.0119407 0 0.0087341 0 0 -0.0280845 0.00963036 -0.13489 0.0126829 0 0 0.00418204 0.0917905 0.0214831 0.00466596 -0.129351 0 0.018404 -0.0370417 0.145133 0 0 0 -0.110906 0 0.0133477 0.0153233 0 -0.00400717 0.0127465 -0.0789728 0 0.00216294 -0.00310213 -0.000456794 0.0407082 0 -0.552966 0.144232 -0.197443 0.0341451 -0.486268 -0.110654 0.152781 -0.283247 1.76138 -0.0485675 0.00190774 0.198736 -0.00753394 0.0386542 0.030862 0.128299 0.00721622 -0.276792 -0.937803 -0.682301 -0.0656619 -0.050823 0.360345 -0.152138 0.0120613 0.0818213 1.13608 -0.0296925 -0.843239 -0.326589 -1.13601 -0.838654 0.00494051 0.274087 -0.318693 0.0559469 -0.00390057 -0.0518363 -0.0441479 1.00082 0.212682 0.00539014 -0.9455 -1.49858 0.00151791 -0.0251736 -0.281913 -0.150316 0.0934952 -0.279695 -2.75991 0.589732 -0.0644275 -0.913395 -0.0194866 0.206177 1.07652 -0.386244 -0.251672 -0.150936 -0.114715 0.505484 0.25611 -1.13992 -6.26597 0.313147 -0.250708 -0.120782 -0.00618822 0.13829 -0.098012 0.115181 0.117869 -0.000326196 0.102099 -0.470377 2.14886 -0.140397 -1.66044 1.12092 0.0467377 -1.9207 -0.138709 0.220402 -0.520827 -0.173662 0.418662 0.132843 -0.65646 0.618823 -1.06316 0 +460 0 0 0 0 0 0.483647 -0.173367 -0.0610553 -1.38214 0 0 -0.380333 -0.265926 0 -0.927493 -0.0585696 0 0 0 0.169809 3.57197 0 0 0 0 0.289218 0 0 0.660767 0.544581 -0.570984 0 0.220999 0 0 0.35391 -0.0364333 0 0 -1.86443 -0.108057 0 0 -0.404916 2.13692 0 -0.913541 0.537537 2.07492 1.09577 -3.14194 0.481345 0 -0.215543 0.281928 -0.492356 1.64269 -0.664646 -1.03986 0 0 0.107017 1.91735 0 0.955491 1.29363 0.509837 0 0 0 0 -0.0548264 -2.34961 0 0.175223 0.72958 0 0 0 2.37919 0 2.27185 -0.800263 0 1.23884 -0.976005 3.79858 0 2.00572 -1.46096 3.7926 -2.59338 0 0 0 0.373305 0.100605 0 0 0 0.109328 0.120902 0 0.0173404 0 -0.00577385 0.0102699 0 0 0 0 -0.0120368 0 -0.00474162 0 0.0732153 0 0.580544 0.722149 0 0.00185582 0 0 -0.0927816 -0.00170442 0.104539 0 0.0135906 0 0.00873929 0.132608 -0.00310924 -0.027003 0.0246409 0 -0.000366656 0 0 0 0.000995207 0 0 0.0107509 -0.00150905 -0.0802065 -0.0283573 0 0 -0.0225023 0 -0.0255213 0 0 0.0499027 0.0106361 -0.00537201 -0.0184648 0 0 0.0360545 0.0496431 -0.0874676 0.0439734 -0.393631 0 -0.065297 -0.0153233 -0.0381119 0 0 0 -0.0402489 0 0.0296157 0.0441088 0 -0.00515464 0.00890213 -0.0359136 0 0.00371006 -0.00364159 0.00527419 0.0639409 0 0.483647 0.373305 -0.173367 0.100605 -0.238522 -0.0420759 0.453234 0.220413 0.732626 -0.147616 0.00282047 -0.504384 -0.0233249 -0.0686209 0.101382 0.053469 -0.0183665 -0.829484 -0.23005 -1.31287 0.184363 -0.130522 0.0169686 -0.0333363 0.243395 -0.126621 0.277771 -0.0253078 -1.51884 -0.0409608 0.144867 -0.852105 0.0173141 -0.481696 0.245186 0.0302433 -0.00271957 0.0416533 -0.0420476 -0.70825 0.172067 -0.0203674 -1.04862 -1.3208 -0.0055728 0.0145948 -0.244872 -0.18324 0.025506 -0.680957 0.630351 -0.607741 -0.0692267 -4.87017 -0.0700223 0.568766 0.668316 0.462608 0.0913003 0.355613 -0.131161 0.00461766 -0.204271 -0.534371 -8.07592 -0.252325 -0.317867 -0.351336 0.0715701 -0.314787 0.185728 -0.0084357 0.352934 -0.324237 0.176048 -0.0984443 -0.27403 0.470979 1.36311 0.674962 0.21473 1.63574 0.416185 -0.178129 0.126088 0.925922 1.25464 -0.282144 0.24348 -0.0163823 0.909923 0 +461 0 0.405613 0.221661 -0.0201743 -0.0941972 0.175253 0.196771 0.136797 -0.0526275 -0.147673 0.357901 -0.23983 1.24965 0.00318978 1.77433 0.00276344 0.35766 1.43388 -0.0549697 -0.022895 7.2546 -0.0163774 -0.230259 -0.00360433 0.0783287 -0.0409292 0.222172 -0.0336747 -0.0346442 1.66572 0.392705 -0.024756 0.0394638 -0.290365 -0.339824 -0.130868 -0.0212389 -0.234694 0.0467207 -0.425899 3.06221 0.0236124 -1.60081 -0.0462041 5.52275 0.149156 1.25327 0.586051 -0.228282 0.163207 0.760746 0.396469 8.97385 0.0835291 -0.0716984 -0.00588388 1.03633 0.0156919 -0.0858935 -0.183468 -0.0601392 -0.131454 -3.01857 -2.07371 1.31106 0.624223 0.160463 -0.531943 -0.493753 0.0461077 -0.492745 0.198881 0.100986 0.451728 0.268676 0.694908 1.49437 -0.0965214 -0.792441 1.1242 -0.593642 0.428108 0.663457 -0.132988 0.292629 -0.479449 0.367821 -0.125508 0.218732 -0.79419 0.708236 -2.08552 0 0 0 0 0 -0.0201743 -0.0941972 0.00129853 0 0 0 0 0.000318086 0 0.00868692 0 0 0.000176666 0.000561781 0.00165544 0 0.000813257 -0.0131556 0.0116006 0 0 0.0847052 3.88294e-05 0 0.0060159 0.337013 0 0 0.0204354 -0.0279781 0 0.0157465 0 -0.0014982 0 0 0.00109476 0 0 0.254355 0.00452957 0.00256537 0 0.0183449 0.0141487 0 0 0.0606773 0 0.00470442 -0.113904 -0.00601921 0 0 0.00123221 0.000445629 0 -0.015154 -0.0813675 2.24941e-06 -0.127729 0.00839519 0.0175719 0 0.0252532 0.0057325 -0.0574251 0.0200414 -0.00598574 0 0 0 -0.442561 0.0309291 -0.0625681 -0.0254596 0.0284846 -0.0301043 0.000138557 -5.96153e-05 -0.000448407 -0.00141676 0 0 0 0 0 0 0.175253 0 0.196771 0 0 0 0 -0.453098 0.39133 0 0 0.602236 0 0.0675262 0 0.0276448 0 0 0.320792 0 -0.601268 -0.145888 0.370372 0.0232941 0 0 0.249115 0 0.54909 0 -3.48908 -0.112088 0 -1.12566 -1.3635 0.0425048 0 -0.0573387 0 0 0.0407556 0 0.0279176 0.570589 0 0 0.0152819 0 0 0.270611 -4.65998 0.0257349 0 -0.498043 0 -0.913988 0.249694 -0.254129 -0.387564 -0.331209 -0.718569 -0.189723 0.0553838 0.0686015 -5.54683 0.257283 0 0 0 -0.175678 -0.217233 0 0 0 0 0.0723209 15.3112 0.966855 2.31441 1.35449 -0.670481 1.09303 -0.402723 0.235834 -0.19835 0.407352 0 0 0 0 0 0 +462 0 -0.839831 0.10896 0.0236001 0.19966 -0.283122 0.117043 -0.195848 0.661119 0.166451 -0.777854 -0.172015 -0.283716 -0.00306896 0.344793 -0.0147145 0.80243 -0.0672075 0.00535723 -0.0158038 -2.19186 -0.00327014 -0.356027 0.00214328 -0.121263 -0.322861 0.484371 -0.0282025 -0.630462 -0.498249 0.173898 0.0186162 -0.146788 -0.307846 0.103791 -0.264729 -0.0125359 -0.258857 0.391813 -0.171124 -0.171324 -0.0287337 0.144605 -0.00934008 -1.44935 -0.267864 0.356048 -0.684159 -0.190747 0.0352924 0.770759 -0.370574 -1.03348 0.0947399 -0.0950728 0.392682 0.025393 -0.147939 -0.304122 0.332677 0.0921541 0.301667 0.208186 -0.169374 0.0994308 0.45851 -0.745695 0.0628241 -0.162933 -0.0352661 -0.0440188 0.491253 -0.289643 0.201636 -2.01212 0.0940642 -0.87042 -5.6909 0.672676 -2.26201 0.717386 0.413425 -1.6005 0.861698 -0.308326 0.65218 -1.3913 0.225397 0.000980093 0.377314 -0.0249709 0.62382 0 0 0 0 0 0.0236001 0.19966 0.00313287 0 0 0 0 0.000378012 0 -0.00462915 0 0 -0.00155834 -0.00326545 -0.00116808 0 -0.000240904 0.026455 -0.0212065 0 0 0.111708 -0.000215707 0 0.0101901 0.455591 0 0 0.0136499 0.155852 0 0.0722254 0 0.0134524 0 0 0.00159114 0 0 0.265519 0.00524222 -0.0240708 0 0.043438 -0.000553425 0 0 0.0531888 0 0.00286826 -0.0284093 -0.0032518 0 0 0.007989 -0.00784477 0 -0.0190324 0.0882662 -0.017522 -0.698556 0.00505965 0.0322801 0 -0.0113001 0.00812299 -0.0833529 -0.0658453 -0.0207329 0 0 0 -0.263627 0.0283521 0.0233685 -0.0102653 0.0154215 -0.0373994 0.00338023 -0.00354756 0.00249336 0.00420198 0 0 0 0 0 0 -0.283122 0 0.117043 0 0 0 0 -0.0323597 -0.0652183 0 0 -0.20998 0 -0.0265136 0 -0.0270196 0 0 0.252827 0 -0.576991 0.0909881 0.0588558 0.0465246 0 0 -0.248515 0 1.23654 0 1.73281 0.812549 0 0.697448 -0.382888 0.00488094 0 -0.00233292 0 0 -0.00379159 0 1.32634 -0.142673 0 0 -0.00617503 0 0 -0.114332 2.8638 -0.133259 0 -0.161225 0 0.354123 -0.164583 0.18149 0.548909 0.0718392 0.0844537 -0.125368 0.0431315 -0.363706 2.59196 -0.168699 0 0 0 0.0240336 0.094009 0 0 0 0 -0.131381 -15.5056 -0.915287 -2.56619 -1.17371 0.665067 -1.13761 0.11546 -0.0952251 0.136754 -0.441407 0 0 0 0 0 0 +463 0 1.58906 -0.194222 0.0724102 0.389288 -0.181686 -0.0119537 0.173442 0.319026 0.526429 -1.46279 0.265236 -0.816072 -0.0110698 -0.509833 -0.0572604 -1.66738 -1.96919 -0.164868 -0.114346 -1.88474 0.0123246 0.394996 0.0117506 -0.221491 -0.346843 -0.80323 -0.0306285 -0.253054 -0.890851 -0.141833 0.0829368 -0.415509 0.217938 0.197453 -0.166413 0.030435 -0.0405765 -2.65541 0.697636 -0.415269 -0.0853867 1.27905 0.0909387 -2.64364 -0.588786 0.000192317 -0.412648 -0.811094 -0.307147 0.72006 -0.792189 7.52298 0.377329 -0.319493 0.365177 1.1436 1.01442 0.554735 0.640459 0.228329 0.52888 -1.48332 2.14358 -0.832875 -0.493678 0.701195 1.35234 0.167752 -0.154808 0.77838 -0.460262 0.165023 0.144059 -1.41929 -0.372889 -0.0146672 8.22849 2.85691 0.512461 1.79 -1.46502 3.2356 0.967852 -0.761616 1.38841 -0.0455208 0.495439 -0.449615 0.743394 -0.672912 1.11537 0 0 0 0 0 0.0724102 0.389288 0.00205687 0 0 0 0 -0.000490803 0 0.000485874 0 0 -0.000173027 -0.00257953 -0.00550932 0 0.000420365 0.00227114 -0.0447649 0 0 0.295403 -0.000169328 0 -0.0217798 0.50456 0 0 0.0330222 0.0318754 0 -0.0609095 0 0.0649557 0 0 0.00689748 0 0 -0.102807 -0.00717335 -0.0042624 0 0.0271464 -0.0211215 0 0 -0.0429644 0 -0.00954164 -0.112875 0.0114992 0 0 0.00277159 -0.0117387 0 0.00223704 -0.00213839 -0.0076555 -0.660832 -0.0041573 0.0118179 0 0.0052263 -0.0134125 -0.0432591 -0.119834 0.0159898 0 0 0 0.2491 -0.0156658 0.0746477 0.0160651 -0.0165803 0.010053 0.00106645 -0.00103876 0.000270166 0.00633103 0 0 0 0 0 0 -0.181686 0 -0.0119537 0 0 0 0 -0.0279182 0.220671 0 0 -0.970439 0 -0.113366 0 -0.0218992 0 0 -0.42312 0 0.365158 -0.00481689 -0.492486 -0.0846719 0 0 -0.185499 0 -2.17875 0 -3.02521 -0.20508 0 0.00651871 -0.354721 -0.0587831 0 -0.00421733 0 0 0.0173035 0 -1.02401 -1.06792 0 0 -0.200028 0 0 0.207834 0.915185 -0.118798 0 2.88583 0 -0.694853 -0.402921 0.212755 -0.404257 0.157808 0.816604 1.49435 -0.31844 0.875539 6.16063 -0.088775 0 0 0 0.097447 0.31883 0 0 0 0 0.155917 9.85778 1.0522 1.48806 1.08939 -0.611157 1.45202 0.655452 -0.270458 0.247366 0.0719841 0 0 0 0 0 0 +464 0 0.529024 -0.256926 -0.00699185 -0.0173451 0.0310663 -0.142183 0.304144 -0.266568 0.0281165 0.59453 0.19674 -0.908876 0.000951292 -1.49547 -0.00669659 -1.4326 -4.46818 0.0361374 -0.0321547 -2.95975 0.00693031 0.412357 -0.00037902 0.120838 -0.0795035 -0.544064 -0.00250833 0.132412 -0.266901 -0.283925 -0.00271508 -0.0265312 0.461816 -0.0326379 0.0811398 0.0127713 -0.0295944 0.117908 0.0909541 -1.63746 0.0139087 -0.583334 0.00577446 -4.05538 0.201919 -0.624787 -0.0393285 -0.449756 0.00666029 -0.0951708 0.582165 -3.00614 0.0645182 -0.0911002 -0.247805 -4.54278 0.0960414 0.181721 -0.253436 -0.042748 -0.54418 1.19877 -1.39901 0.369592 -0.112472 -0.365577 -0.266967 0.0561625 -0.00875478 -0.108151 -0.000376672 0.182144 0.0316293 -1.45055 -0.090473 0.413433 -1.21531 -1.36911 0.0488653 -0.428704 -0.237355 0.369863 -0.617741 0.406013 -0.597743 0.941949 -0.0427348 -0.0414238 -0.124032 -0.0265602 0.402566 0 0 0 0 0 -0.00699185 -0.0173451 0.000628643 0 0 0 0 7.15574e-05 0 0.0186465 0 0 0.000751723 0.000442128 0.00764501 0 0.00116202 -0.0154019 0.11774 0 0 -0.216917 2.63812e-05 0 -0.0107661 -0.460924 0 0 -0.0247989 -0.130814 0 -0.0931279 0 -0.0160025 0 0 -0.00185968 0 0 -0.0895223 0.0010391 0.0112816 0 0.00911819 0.00012375 0 0 -0.0706027 0 0.00237757 -0.206185 -0.00254502 0 0 -0.0021618 0.00140731 0 0.000336605 -0.0766987 0.00753432 -0.247067 -0.00360807 0.0144023 0 0.0116448 0.0296134 -0.0862229 0.0407991 0.0639686 0 0 0 0.0653699 0.00174103 -0.126876 -0.00534303 0.00401076 0.0320005 -0.00118558 0.00131285 -0.0013146 -0.0440972 0 0 0 0 0 0 0.0310663 0 -0.142183 0 0 0 0 -0.209844 -0.145224 0 0 0.0663914 0 0.0102715 0 0.000622544 0 0 -0.559743 0 0.236286 -0.108871 -0.0977396 -0.0653511 0 0 0.0133571 0 -2.71618 0 -3.05676 -0.399998 0 -0.749947 -0.569643 -0.0111871 0 -0.0284235 0 0 -0.00949827 0 -1.01947 -1.26098 0 0 -0.168555 0 0 -0.783404 -3.77146 0.0655741 0 -2.84679 0 -1.23364 0.114919 -0.276245 -0.3531 -0.216825 -0.652774 0.48214 -0.0539116 2.19342 -4.04294 0.264651 0 0 0 0.16156 -0.0511384 0 0 0 0 0.0868659 14.8179 1.77801 0.637317 1.33247 -0.750347 1.14439 -0.0350009 0.0495964 -0.0178866 0.231209 0 0 0 0 0 0 +465 0 -0.893021 -0.335015 0.0102249 0.0629173 -0.287526 -0.124689 0.410591 1.14838 0.0908475 -0.444034 0.0660991 0.787509 -0.000665192 0.504878 -0.0228893 -0.533905 1.28923 -0.117475 -0.0329829 1.67306 -0.00932623 0.452234 0.000789216 -0.0362314 0.492154 -0.425639 -0.00904851 0.234379 0.316785 0.202778 0.00951603 -0.43212 0.57588 -0.0981554 0.258309 0.00251619 0.0529791 1.09021 0.0697006 0.574027 -0.00800294 -0.133685 0.0038994 2.53954 -0.0878884 -0.0452464 0.236842 -0.566159 -0.0262806 -0.440297 -0.0401631 4.45711 0.102249 -0.0370832 0.0412983 3.46464 0.015927 0.0151264 0.0956496 0.0226478 0.731308 1.69335 0.759414 0.381552 0.204954 0.426716 -0.0878454 -0.115069 -0.0230187 -0.0254836 -0.034096 -0.218319 -0.266832 3.77902 0.260033 0.158967 -4.99346 -0.261568 -1.55327 0.0729526 0.194516 -1.77154 0.0922542 0.0378032 0.11992 -0.936534 0.018601 0.00646513 0.032758 -0.102453 -0.477806 0 0 0 0 0 0.0102249 0.0629173 -0.00301441 0 0 0 0 -0.000259805 0 -0.0129518 0 0 0.00135049 0.00250523 -0.00775006 0 -0.00135504 0.0159979 -0.0705044 0 0 0.078953 0.000183221 0 0.00917313 0.256699 0 0 0.00907753 0.0933213 0 0.0675324 0 0.00858635 0 0 0.000975803 0 0 0.261272 -0.00367124 0.0185372 0 -0.0421623 0.020682 0 0 0.014514 0 0.0047138 0.0831695 -0.00952067 0 0 0.00309439 0.0128386 0 -0.00808898 0.0247769 -0.0103648 0.224837 0.00206619 0.00749536 0 -0.0114108 0.0203131 -0.0398971 0.06522 -0.0229693 0 0 0 -0.316171 -0.00413702 0.0484689 -0.00842987 0.0123384 -0.0523293 -0.000235482 0.000654406 -0.00278726 0.014373 0 0 0 0 0 0 -0.287526 0 -0.124689 0 0 0 0 0.345331 -1.45921 0 0 -0.721185 0 -0.0833033 0 -0.0938382 0 0 0.530176 0 0.570348 0.125309 -0.444712 0.0394377 0 0 -0.845528 0 -1.77871 0 2.51382 0.00595963 0 0.898833 0.806278 -0.052195 0 0.045971 0 0 -0.159237 0 -0.504946 0.99198 0 0 0.0721229 0 0 0.468458 3.5619 -0.0213111 0 1.26449 0 0.707154 -0.877288 0.490877 0.402893 0.0278625 0.336625 0.48484 -0.029441 1.35459 6.76888 -0.0174116 0 0 0 -0.240915 0.234793 0 0 0 0 0.527508 -16.1948 0.156038 -3.80537 -1.66837 0.854367 -1.17266 0.528592 -0.258502 0.222597 -0.408885 0 0 0 0 0 0 +466 0 0.613756 0.133853 0.0301975 0.270099 -0.0499709 0.259174 -1.36795 -1.90549 0.311914 -0.996195 -0.366685 1.04204 -0.00182169 0.706158 0.0149127 0.456132 3.13318 -0.226384 0.00624083 -2.0529 -0.0127931 -0.102336 0.00184465 -0.0539566 -0.450942 0.132786 -0.0563542 -0.707202 -1.03138 0.467974 0.0253587 0.224789 -0.346802 -0.349992 -0.376122 -0.0289752 -0.258735 -2.28935 -0.413896 -0.0532236 -0.0240049 -0.886966 -0.0312816 2.50001 -0.301955 0.595396 -0.87627 0.0895549 0.12651 0.412144 -0.547999 -2.45478 0.0256233 0.00978154 0.218034 -3.34601 0.159268 0.220432 0.383632 0.0779844 1.42959 -0.0285781 1.1111 0.0305178 0.253629 0.780109 0.142422 -0.506193 -0.0716163 0.0437227 0.419215 0.0600074 0.362826 -0.784881 0.762812 1.45127 4.35717 1.85035 1.5029 1.3602 -0.606714 2.52462 0.27282 -0.101175 1.20103 1.6855 0.0639069 0.0913522 0.336861 0.474564 1.55562 0 0 0 0 0 0.0301975 0.270099 0.000104932 0 0 0 0 -9.05675e-05 0 -0.0117012 0 0 -0.000120671 0.000859728 -0.0107854 0 -0.00129765 0.0305858 -0.113489 0 0 0.358038 7.55311e-05 0 0.00650719 0.963404 0 0 0.0454145 0.19797 0 0.0443242 0 0.0303905 0 0 0.0036632 0 0 0.179227 -0.00140064 -0.00373204 0 0.000185543 -0.00782896 0 0 0.0568184 0 -0.000241034 -0.00194157 -0.00170474 0 0 0.00742636 0.00127176 0 -0.0127244 0.0355879 -0.0171724 -0.489002 0.00189336 0.0147069 0 -0.00509256 -0.00810392 -0.0737881 -0.0448955 -0.0240757 0 0 0 -0.165568 0.00559063 0.104077 -4.4376e-05 0.00310043 -0.0415708 0.00213871 -0.00196685 -0.000204734 0.0329459 0 0 0 0 0 0 -0.0499709 0 0.259174 0 0 0 0 -0.158406 0.130304 0 0 -0.039477 0 -0.000630318 0 0.0134569 0 0 -0.369122 0 -0.0517294 -0.0465821 0.239669 -0.0559778 0 0 0.119336 0 1.30993 0 0.821645 0.630883 0 -0.19905 0.556461 0.0294512 0 -0.0220163 0 0 0.0107052 0 0.949477 -0.220121 0 0 -0.0465525 0 0 -0.030815 0.230302 -0.0111713 0 0.209333 0 0.0433014 -0.21435 0.0945499 -0.106738 -0.00115763 0.331001 0.477972 -0.137866 0.808242 1.71404 0.17202 0 0 0 0.0478868 0.0521727 0 0 0 0 0.0483343 -6.40488 -0.67798 0.438142 -0.586613 0.149045 -0.0805428 0.0112908 -0.00194542 0.0067353 0.149708 0 0 0 0 0 0 +467 0 0 0 0 0 -0.440916 -0.312759 0.490896 0.999492 0 0 0.338295 -1.22098 0 -1.18216 0.0200155 0 0 0 -0.502314 -5.91897 0 0 0 0 0.232132 0 0 0.67589 -1.69362 -0.599033 0 0.456628 0 0 0.231401 0.0213434 0 0 1.54679 -2.93828 0 0 0.235658 -3.35877 0 -1.39161 0.164528 -0.85472 -0.439575 1.02253 0.0374406 0 0.285698 -0.0561876 -0.0354373 -2.04266 -0.909729 -0.406956 0 0 0.919794 4.89095 0 -0.372713 -0.308964 -0.730248 0 0 0 0 0.0988125 1.63408 0 0.534996 -0.841672 0 0 0 -0.337095 0 -1.70621 1.64758 0 -0.751557 0.666576 -3.10303 0 -1.46836 1.1479 -4.37175 5.72118 0 0 0 -0.203255 -0.0515722 0 0 0 -0.0412832 -0.000886398 0 -0.00636561 0 0.00464152 0.0202309 0 0 0 0 -0.0293624 0 -0.0131584 0 0.178515 0 -0.162874 0.0622186 0 0.00418797 0 0 0.254896 0.00216782 -0.0169343 0 0.00141612 0 0.000270989 0.0127326 0.0271413 0.0373936 -0.00936545 0 0.000217305 0 0 0 7.84894e-05 0 0 -0.00542544 0.00210202 0.29736 0.0561714 0 0 -0.00277421 0 0.00142278 0 0 0.00219217 0.00319412 -0.0179187 -0.0289679 0 0 0.121085 0.0641367 0.00278168 0.495677 -0.206896 0 0.257909 -0.000671987 0.00766528 0 0 0 -0.63356 0 -0.0792176 -0.879282 0 -0.00154099 -0.0562528 -0.294484 0 -0.00261597 -0.00325724 -0.00745625 -0.557257 0 -0.440916 -0.203255 -0.312759 -0.0515722 0.0969198 0.066346 -0.272639 -0.284047 1.53788 0.0629094 0.0657098 0.310002 0.0107949 0.0615583 -0.0507224 0.107474 0.0177748 0.293196 0.369347 0.145956 -0.0171501 0.0252221 0.190368 0.109834 0.20963 -0.153427 0.90871 0.00187726 0.261521 0.390695 -0.634279 -0.84851 -0.00867773 -0.0576079 -0.216718 0.0360033 0.00376282 -0.0555624 0.0971745 -1.02995 0.1634 -0.0256698 -0.539187 0.651265 0.00728867 -0.00695687 0.242439 0.0252788 -0.135906 0.156781 2.92015 1.23734 0.0194101 -0.0386072 0.0357872 -1.23394 0.500715 -0.80316 -0.157981 0.0126389 0.881814 1.09116 -0.0731708 -1.34396 -6.67901 -0.00585831 0.0650891 0.122164 0.137137 -0.063721 -0.0662743 0.0292241 -0.123674 0.115673 -0.170702 -0.117581 4.79429 -0.547557 0.0401343 -0.676217 -1.58943 4.25387 -0.499535 -0.0364113 0.25045 0.224103 -0.399259 0.0197673 0.203057 -0.751706 1.71775 0 +468 0 0 0 0 0 0.961667 0.263701 -0.560622 -2.92544 0 0 0.555775 1.12801 0 1.30148 0.0886227 0 0 0 -0.0341137 3.98683 0 0 0 0 -0.284605 0 0 -0.650417 -4.16018 0.507535 0 0.467462 0 0 -0.0680364 0.143437 0 0 0.497151 1.42612 0 0 0.268054 2.89225 0 0.595683 -1.6908 -0.0284454 -0.523656 0.748872 -0.162412 0 -0.111371 0.626742 -1.00704 -0.406589 -0.438369 0.213401 0 0 1.35516 -3.58987 0 -0.896159 -0.317833 -0.158339 0 0 0 0 0.62586 1.31264 0 -0.0899451 2.38615 0 0 0 4.82088 0 0.181857 4.14197 0 0.0526212 1.68977 1.64335 0 -0.56231 3.58371 -8.11013 22.8674 0 0 0 0.16404 0.00539688 0 0 0 0.00113432 -0.015205 0 -0.000670119 0 -0.00191599 -0.0636842 0 0 0 0 -0.119826 0 -0.0318205 0 -0.387257 0 0.0926267 0.190988 0 0.00125584 0 0 0.0299762 -0.000357736 0.0148926 0 0.000430189 0 -0.000882712 0.0847125 0.00309578 -0.0143445 0.00949577 0 -6.88985e-05 0 0 0 -5.92186e-06 0 0 -0.00154045 0.00365292 -0.11405 -0.00784386 0 0 0.007636 0 0.00644329 0 0 -0.014063 0.0150066 0.184896 0.00811055 0 0 0.0324716 0.0602123 -0.068033 -0.168035 -0.590635 0 0.0541233 -0.00716588 0.080986 0 0 0 1.22273 0 0.0713262 -0.385745 0 0.00591708 -0.0314072 0.303113 0 -0.000497434 -0.00200632 0.027836 -0.200577 0 0.961667 0.16404 0.263701 0.00539688 0.116979 0.0960889 -0.155408 0.593494 1.22819 0.0010191 -0.0789317 -0.341312 0.00119507 -0.0606858 -0.0249725 0.0976197 -0.0320363 -0.0481446 -0.299932 -0.42452 0.0978288 -0.107861 -0.268611 -0.0791075 -0.177055 -0.185112 0.730724 -0.00192234 3.78104 0.114527 2.81931 0.524137 -0.00447484 0.188303 0.536416 -0.0332296 0.00382077 0.0685324 0.0120455 -1.06544 0.15482 -0.0314284 1.40442 -0.996597 -0.0106818 0.0136839 -0.316413 -0.0332441 0.0180121 0.606975 -0.469731 0.342366 -0.0292344 1.99104 0.0498703 -1.84935 0.741758 -0.745452 0.66469 -0.101365 0.204257 0.484218 -0.204728 0.295707 4.84292 0.101173 0.333222 -0.00817437 0.013155 0.108966 0.0784736 0.0336742 -0.0207442 -0.116305 0.0174582 -0.172588 -21.3102 -1.48387 2.15737 -1.73764 1.835 0.682426 0.279758 -0.390174 0.89543 0.0471566 0.0655609 -0.189423 0.544346 -0.642666 1.74904 0 +469 0 0 0 0 0 -0.559918 -0.132389 -0.172958 0.591589 0 0 0.815339 0.133833 0 0.726155 0.0328479 0 0 0 -0.0194683 4.36047 0 0 0 0 0.127388 0 0 -0.0636118 -9.40597 -0.215041 0 0.0854022 0 0 0.0400644 0.111842 0 0 3.07502 0.0473351 0 0 0.535042 3.31279 0 -0.553057 -1.89243 -0.632871 -0.660921 -0.864501 -0.132504 0 0.125716 0.530418 -0.885057 0.245086 -0.162488 -0.69325 0 0 -0.253453 1.24752 0 -0.839881 0.0226817 0.557378 0 0 0 0 0.000518647 1.20765 0 -0.626761 1.45722 0 0 0 -0.998505 0 -3.79779 11.8097 0 -1.21206 3.86302 0.985759 0 -2.67549 7.25515 -12.7327 34.5307 0 0 0 -0.380453 -0.0934841 0 0 0 -0.0970071 -0.0241493 0 -0.01426 0 0.00725677 -0.00445633 0 0 0 0 -0.0447788 0 -0.0312122 0 0.0828857 0 -0.482501 -0.482008 0 -0.0048669 0 0 -0.471068 0.000269784 -0.0882606 0 0.00288238 0 -0.00136656 -0.168326 -0.0541347 0.0175306 -0.0337538 0 0.000302103 0 0 0 0.000137002 0 0 0.00200227 -0.000550067 0.164211 0.0209103 0 0 -0.0459193 0 0.00345534 0 0 -0.0487721 0.0263445 0.100235 -0.0608315 0 0 0.191726 0.0555932 -0.0231275 0.189749 -0.219115 0 -0.113509 -0.00663949 0.365846 0 0 0 0.260606 0 -0.102473 1.24852 0 -0.00849422 0.0692081 0.209306 0 0.000471879 0.00661545 -0.0488726 0.716139 0 -0.559918 -0.380453 -0.132389 -0.0934841 1.16491 0.251543 -0.346103 0.533834 0.939203 0.1245 -0.0288373 0.126581 0.0199937 0.0570198 -0.0796656 0.12587 -0.0423921 0.685035 0.159398 2.31317 0.28646 0.00801591 -0.088824 -0.0357453 -0.503017 -0.229811 0.759559 0.0400882 3.48602 -0.131096 2.15631 -0.217886 -0.0152157 0.616693 0.909944 0.0105451 -0.00328904 0.0496789 0.0255022 -1.19817 0.140235 -0.0355349 0.859086 1.40283 0.00031701 -0.071368 0.159 0.307632 -0.0312747 -0.692459 -1.06649 1.42689 0.162893 0.0425967 0.0424963 -0.202407 0.466106 -1.17645 0.499538 -0.190165 -1.21752 -0.627956 0.155295 -0.692188 -4.30086 0.088447 -0.510417 0.235376 0.299485 0.503934 -0.130554 0.203819 -0.250655 -0.147281 -0.243523 -0.365384 -16.2988 -2.59989 -0.358817 -4.05714 2.50099 1.85058 -0.760161 0.293116 0.418874 -0.32263 -0.932846 0.636054 -0.352751 -0.0639561 1.40806 0 +470 0 -0.412954 0.000337385 -0.0257947 -0.140948 -0.0293689 0.269874 -1.34426 -2.36412 -0.186363 1.07448 0.140854 0.0881887 0.00567666 0.584359 0.00592906 -0.747615 -3.09753 0.210794 0.0903236 -0.114413 0.0192948 -0.158313 -0.00612099 0.131354 -0.780858 -0.0447095 -0.00208822 -0.76691 -1.76137 0.374942 -0.0343046 -0.0336626 -0.151318 0.21866 -0.487648 0.0206546 -0.0859979 0.955226 0.262576 0.899388 0.0225562 0.604139 0.0240445 -0.195441 0.052108 0.801224 -1.07566 0.537948 -0.0823526 1.45193 0.0124222 -0.700999 -0.00741584 0.17914 -0.355888 1.39199 -0.524125 -0.162405 -0.166009 -0.0296217 -0.489558 -0.959841 0.748092 0.586755 -0.632726 1.07966 -0.278423 0.0226896 0.0271928 0.0577819 -0.238368 0.0526355 0.258125 0.0915802 1.27122 -1.06236 -0.694541 -1.88124 4.02986 -1.29527 1.15945 -0.370877 -0.861827 1.02035 -1.64496 5.2448 -0.070552 -0.139689 1.11479 -1.67796 5.24761 0 0 0 0 0 -0.0257947 -0.140948 -0.000972948 0 0 0 0 -1.90644e-05 0 0.0331089 0 0 -3.72413e-05 0.00131589 0.0357182 0 0.00495358 0.053694 0.249515 0 0 0.171056 5.31642e-05 0 0.00967609 0.854829 0 0 0.0135235 0.252245 0 0.103046 0 0.0201788 0 0 0.00184314 0 0 0.622018 -0.000255192 0.000855753 0 -0.0187817 -0.010031 0 0 0.0953078 0 0.000360561 0.79763 -0.0133915 0 0 -0.000587416 0.00361638 0 0.00480361 -0.0773781 0.0196919 0.894992 0.0176537 0.0156431 0 0.012933 -0.0629253 0.0518501 0.0509771 0.154007 0 0 0 -4.71258 -0.162284 -1.11121 -0.020416 0.0506351 -0.702261 -0.000182553 0.000513652 -0.00616496 -0.24095 0 0 0 0 0 0 -0.0293689 0 0.269874 0 0 0 0 0.107988 -0.071311 0 0 0.442198 0 0.0391966 0 -0.0147929 0 0 0.0247728 0 -0.0700542 -0.0392565 0.00982679 -0.0114119 0 0 -0.140302 0 0.503873 0 2.30984 0.541971 0 -0.215297 0.469743 -0.00708478 0 0.0133209 0 0 -0.00941793 0 0.439768 0.376041 0 0 0.0487317 0 0 -0.00179957 -1.76904 -0.065827 0 0.0406056 0 0.576504 -0.139328 0.0923945 -0.09691 -0.0299527 0.0847257 -0.870754 0.0948305 -0.156975 1.97196 0.0101293 0 0 0 -0.129927 -0.0941221 0 0 0 0 0.0281887 -13.6535 -4.00477 2.96378 -1.50491 1.39746 -1.4647 -0.264464 0.241725 -0.306484 0.161942 0 0 0 0 0 0 +471 0 1.58924 0.421558 0.00386065 0.177774 0.014214 0.170566 -0.0349134 -0.404485 -0.0659835 0.2984 0.189558 -0.173683 0.00359268 0.673263 -0.02341 0.696384 1.81555 0.0875157 -0.00433494 -0.658857 0.068661 -0.278 -0.00844642 0.243993 -0.481375 0.371163 0.0382585 -0.197341 -0.58384 -0.0610477 -0.0319605 -0.279165 -0.656102 -0.0652744 -0.303364 0.0106041 0.115398 -3.4493 0.415391 0.22688 0.0129659 -0.0651174 0.0222483 0.843307 0.0043376 0.250347 -0.271042 -0.228664 -0.0294996 1.12771 0.18208 0.462005 -0.348116 0.0902622 0.12797 0.186176 0.388653 0.759353 -0.340897 -0.0418608 0.116019 0.170172 -0.691293 -0.164019 -0.621592 0.084006 0.516909 0.681111 0.101343 -0.463211 0.05538 0.0908782 -0.346338 -1.24403 -0.344568 -0.237212 8.6266 1.30527 0.536611 1.96367 -2.24733 4.93912 -0.419048 0.517709 -0.592798 1.57482 -0.00587292 -0.278042 0.388786 -1.04532 1.73942 0 0 0 0 0 0.00386065 0.177774 0.000599657 0 0 0 0 0.000344891 0 0.00885134 0 0 -0.00159624 -0.00439399 0.0264292 0 0.00351226 0.0352112 0.0908075 0 0 0.0663969 -0.000185638 0 -0.0649257 0.5586 0 0 0.00797249 0.152361 0 -0.184049 0 -0.0066927 0 0 -0.000650523 0 0 -0.809321 0.00763204 -0.0362468 0 0.016074 0.0587661 0 0 -0.0422588 0 0.00437225 0.159523 -0.00306309 0 0 0.00175428 0.00140975 0 -0.00474682 0.00996842 -0.0144406 -2.00594 0.0445905 0.0223541 0 -0.00377287 7.31792e-05 0.0791814 -0.130096 -0.020792 0 0 0 5.17961 0.278209 -0.256174 0.0215208 -0.0507786 0.725474 0.00109817 -0.00263674 0.0362959 -0.127675 0 0 0 0 0 0 0.014214 0 0.170566 0 0 0 0 -0.15447 -0.0121918 0 0 -0.271702 0 -0.00399333 0 -0.0188051 0 0 0.408383 0 -0.525005 -0.0713813 -0.164663 0.0686474 0 0 -0.114913 0 4.256 0 -5.40697 0.062296 0 -0.512118 -1.67792 -0.00743746 0 -0.0252692 0 0 -0.0146816 0 0.899523 0.856013 0 0 0.151282 0 0 -0.0970547 1.76538 -0.0869794 0 0.0168747 0 -1.2827 0.0865805 0.047873 -0.466205 0.104938 0.273614 1.46561 -0.229091 -0.878054 -2.00302 -0.015652 0 0 0 0.211504 0.0710094 0 0 0 0 -0.247709 45.6086 5.83461 1.4307 3.00007 -3.41731 5.55856 0.150969 -0.188336 0.303843 0.36228 0 0 0 0 0 0 +472 0 -0.365445 -0.215031 -0.118176 -0.352698 0.459876 0.0969314 -0.907948 -3.4928 -0.477848 2.50324 -0.641273 0.155669 0.0325385 0.239855 0.0360341 -0.581714 -0.24693 0.322342 0.101465 -2.03326 0.0481504 0.133866 -0.0297581 0.546269 -0.38051 -0.364493 -0.00930144 0.154022 1.94478 0.0967992 -0.13167 0.0780405 0.179534 -0.115804 -0.0169354 -0.10779 -0.329296 0.843241 -1.58335 -0.843729 0.171103 -2.0661 -0.29703 1.90821 0.812611 -0.258477 0.601826 0.24387 0.781348 3.28537 0.909412 -2.72189 0.0121049 0.417254 -0.363716 -0.897715 -0.373533 0.424714 -0.612571 -0.338193 1.01773 0.400839 -1.38005 0.138144 -1.10726 -1.39224 -0.586845 0.0480537 0.0727954 -0.191343 0.812124 -1.35975 0.234997 0.948427 0.232883 -0.449454 -1.4714 -4.05336 5.16896 -2.71204 3.40725 -4.25516 -2.73731 2.97849 -5.17223 6.29502 -1.10024 1.66557 -2.52707 3.77942 -5.79403 0 0 0 0 0 -0.118176 -0.352698 -0.00174564 0 0 0 0 0.000179495 0 -0.0114891 0 0 0.00117126 0.00863318 0.00488753 0 0.00266785 -0.0361673 -0.126411 0 0 -0.208732 0.000375789 0 -0.0944185 -0.519516 0 0 -0.0182749 -0.147947 0 -0.0480877 0 -0.0781217 0 0 -0.00747097 0 0 0.186501 0.00400964 0.0296844 0 -0.0346972 -0.101167 0 0 0.434075 0 0.00190813 0.548448 -0.0105832 0 0 -0.00102678 0.00680729 0 -0.00254814 0.114603 0.0258618 -1.00933 -0.00329785 0.000566303 0 -0.0228346 0.162224 0.211953 -0.0633259 0.283922 0 0 0 -0.134385 -0.104685 0.275152 0.000553357 -0.00543147 0.0575419 -0.000980592 0.00239352 -0.032478 0.0362749 0 0 0 0 0 0 0.459876 0 0.0969314 0 0 0 0 -0.770033 -2.35294 0 0 1.18233 0 0.135839 0 -0.11322 0 0 -0.0079199 0 0.402099 -0.165211 0.552518 0.00949386 0 0 -0.834866 0 -3.80582 0 1.45078 -0.40395 0 -1.59055 0.650552 0.0646564 0 -0.0818672 0 0 -0.301525 0 -1.48303 1.02103 0 0 0.139142 0 0 -0.141494 -2.75692 -0.60194 0 -0.623345 0 0.453655 -0.514237 0.541575 -0.933423 -0.115387 0.979567 -0.976879 0.31205 1.58077 5.42213 0.185997 0 0 0 -0.19922 -0.310593 0 0 0 0 0.531989 -6.00561 -5.5878 7.48796 -1.32313 1.38522 -1.49191 -0.766588 0.817196 -1.11416 1.53458 0 0 0 0 0 0 +473 0 -0.473174 -0.362433 -0.0821574 -0.171961 0.135542 0.0943549 -0.688198 -1.98728 -0.278707 1.5702 -0.309118 0.225925 0.026397 -0.163496 -0.117537 -1.77716 -6.21259 0.250829 -0.154735 3.24075 -0.0241184 0.153973 -0.0171493 0.229914 -0.401027 -0.690459 -0.199061 0.0500167 0.2296 0.0410918 -0.0728695 -0.491955 0.29285 -0.536893 -0.111552 -0.0903504 -1.06935 0.663324 -0.628125 1.60134 0.116238 -2.94143 -0.216733 0.316573 0.377617 0.710403 0.148552 -0.552247 0.44816 -2.04519 0.706248 -0.902789 0.290427 -0.366456 0.36802 -0.186579 1.59424 0.923274 -0.33374 -0.141615 -0.339281 -3.43647 -1.04382 1.97138 1.59759 0.125975 -1.66464 -1.64727 -0.133344 -0.241094 0.0329188 -1.2239 0.477029 -0.806157 -0.056121 1.60878 2.40357 -2.77912 3.92012 -1.85161 2.31941 -3.60373 -1.79169 2.01713 -3.67999 5.30539 -0.787341 1.3421 -1.54689 2.59282 -1.59002 0 0 0 0 0 -0.0821574 -0.171961 -0.00208682 0 0 0 0 -0.000167258 0 0.00498285 0 0 0.00335214 0.00851541 -0.00472112 0 0.000230883 -0.0615412 0.0711509 0 0 -0.0191868 0.000391023 0 0.00859522 -0.0829326 0 0 0.00285159 -0.116588 0 0.0937594 0 -0.0466751 0 0 -0.00397302 0 0 0.520301 -0.0041243 0.0584111 0 -0.0489695 -0.0860766 0 0 0.18559 0 -0.000297042 0.60866 -0.0123555 0 0 -0.00692308 0.00679985 0 0.018021 0.00367432 0.0397337 0.103335 -0.0321763 -0.00812465 0 -0.00546123 0.103977 -0.0696513 0.0670696 0.368611 0 0 0 -4.63908 -0.305733 -0.559038 -0.0114611 0.0310698 -0.60192 -0.00408873 0.00568987 -0.0340609 -0.0939737 0 0 0 0 0 0 0.135542 0 0.0943549 0 0 0 0 -0.147543 -1.59085 0 0 0.705379 0 0.0653444 0 -0.0740671 0 0 -0.278306 0 0.360526 -0.0894819 0.237445 -0.0556095 0 0 -0.557437 0 -5.68655 0 1.27642 -0.262592 0 -0.5504 0.608492 0.0243713 0 -0.0264412 0 0 -0.210088 0 -1.58991 -0.147416 0 0 -0.0682133 0 0 0.107461 -3.70709 -0.215364 0 -0.345627 0 1.87282 -0.481708 0.320929 -0.137044 0.0835087 -0.550056 -2.11276 0.277886 1.23457 3.68753 -0.121767 0 0 0 -0.373411 -0.172582 0 0 0 0 0.400749 -7.01878 -4.32427 3.82793 -1.33746 1.55725 -1.77203 -0.450034 0.459669 -0.578305 0.46304 0 0 0 0 0 0 +474 0 0.78537 -0.0159593 0.0192481 0.16839 -0.0111978 -0.188651 0.0668301 0.646822 0.00216482 -0.332433 -0.489521 -0.298936 -0.00950554 -1.09469 -0.0390417 0.0979242 2.84835 0.00595646 -0.0461104 1.05899 0.0303108 0.277873 0.0129652 0.0769244 0.482086 -0.32149 0.0195709 0.747456 2.61434 -0.396078 0.0316629 -0.312136 0.232792 0.175605 0.28257 -0.0533108 0.0141845 -1.58058 -0.501809 -0.212901 -0.0397109 0.0160318 -0.0337011 -0.486351 -0.122975 -0.540968 1.48916 -0.418184 0.102607 0.986555 0.527759 6.21655 0.060177 -0.487382 0.9003 4.68319 0.730096 0.116444 -0.0579749 0.0483557 0.398215 0.0237282 1.15119 -1.13786 -0.939297 -0.069277 1.2938 0.684512 -0.0564518 0.738002 0.219021 -0.350438 -0.299521 1.11506 -1.69044 -1.14293 7.40165 1.2026 -1.12847 2.16444 -0.852563 -0.856497 0.70353 -0.408382 -0.237885 -1.29881 0.256405 0.299324 -2.29967 6.49574 -18.1048 0 0 0 0 0 0.0192481 0.16839 -0.00451267 0 0 0 0 -0.00123046 0 -0.0223104 0 0 -0.00124563 0.000891392 -0.0139144 0 -0.00323979 0.0119644 -0.0968064 0 0 0.0752395 4.1387e-05 0 -0.0809505 0.116122 0 0 0.0115512 0.0464654 0 -0.236895 0 0.0342885 0 0 0.00393683 0 0 -0.95509 -0.0240827 -0.0243392 0 -0.0851271 -0.0197431 0 0 0.0694053 0 0.00504829 0.263451 -0.00571197 0 0 0.000188138 0.0180038 0 -0.00470985 0.0864719 0.0134868 -1.14142 0.0510129 -0.0153256 0 -0.0192238 0.0735692 0.442948 -0.160317 0.0642847 0 0 0 7.87978 0.407442 0.674815 0.0400558 -0.023664 0.546634 0.000151787 0.00241286 -0.00383655 0.0294792 0 0 0 0 0 0 -0.0111978 0 -0.188651 0 0 0 0 -0.598212 -0.597376 0 0 0.305826 0 0.0496951 0 -0.0437939 0 0 0.325993 0 0.678172 -0.0915662 0.48053 0.0426674 0 0 -0.408223 0 -1.85422 0 0.0336121 -0.278356 0 -0.721766 1.00894 0.0587911 0 -0.0657561 0 0 -0.0663342 0 -0.595359 0.111147 0 0 0.0190901 0 0 0.424369 -0.159548 -0.611123 0 1.56166 0 0.85064 -0.503628 0.613529 -0.85756 -0.0937614 0.468812 -0.305659 0.204907 0.276674 7.42923 0.0990865 0 0 0 -0.0854649 -0.161933 0 0 0 0 0.20139 10.8367 0.0742912 2.80639 0.404728 -0.136782 0.246029 -0.239231 0.327961 -0.494481 0.905235 0 0 0 0 0 0 +475 0 -0.649451 0.0192183 -0.135106 -0.428859 0.67776 0.368105 -1.26523 -5.18283 -0.190185 3.57865 -0.260495 0.51203 0.0382792 -0.226948 -0.048345 0.533726 1.68598 0.634311 -0.104191 1.18424 0.108184 -0.075019 -0.0215307 0.752564 -1.12127 0.280639 0.0410311 -0.197515 1.42829 0.170204 -0.0755054 -0.253647 0.189075 -0.0951635 -0.384826 -0.078622 0.120158 2.90196 -0.842781 0.892371 0.166978 -0.535799 -0.250432 1.14856 0.567731 0.666962 0.169483 -0.655391 0.0325921 -0.295678 1.08502 2.38457 0.161955 -0.517282 0.750427 0.457957 -0.170194 -0.465495 -0.636433 -0.0874031 0.0380148 0.104834 -1.628 3.71023 0.964139 0.612354 -1.95542 -0.621866 -0.21968 -0.359795 -0.443677 0.443672 0.369584 0.220539 -0.754372 0.410203 -8.39843 -7.37883 9.86242 -5.64946 5.5102 -6.6816 -4.16078 4.62933 -8.06282 12.6544 -1.18373 1.9119 -3.45483 5.51775 -9.89118 0 0 0 0 0 -0.135106 -0.428859 -0.00406106 0 0 0 0 -0.000199942 0 -0.0298441 0 0 0.00137352 0.0125111 -0.0607035 0 -0.00502873 -0.102587 -0.313809 0 0 0.0295797 0.000507818 0 0.020987 -1.54668 0 0 -0.00120967 -0.368084 0 0.207966 0 -0.0468073 0 0 -0.00559732 0 0 0.984238 -0.00489802 0.0413562 0 -0.0831688 -0.113084 0 0 0.482581 0 -0.00507929 -0.161604 0.0219203 0 0 0.000367083 0.00762537 0 -0.0075777 0.101336 0.011337 1.02711 -0.0558254 -0.0258587 0 -0.0262867 0.00181267 0.0166607 0.0181405 0.177237 0 0 0 -3.84661 -0.290346 0.947061 -0.0222293 0.0115593 -0.218707 -0.000256687 0.00123945 -0.0454873 0.249821 0 0 0 0 0 0 0.67776 0 0.368105 0 0 0 0 -0.513257 -1.32347 0 0 0.88509 0 0.117982 0 -0.0516765 0 0 0.512011 0 -0.42173 -0.186307 0.150988 0.083727 0 0 -0.42042 0 -0.115162 0 -1.46973 0.501633 0 -1.7379 -1.03386 0.0275308 0 -0.0630427 0 0 -0.147397 0 0.384667 1.88843 0 0 0.266147 0 0 -0.0451428 -0.522985 -0.690015 0 -0.384821 0 1.09015 -0.415899 0.631221 -0.364399 0.095941 0.295588 -0.77301 0.0544965 1.22297 3.86041 -0.0502986 0 0 0 -0.139551 -0.113613 0 0 0 0 0.533391 14.1133 -3.37204 9.32017 -0.303267 -0.32515 1.92449 -0.666033 0.616318 -0.717019 1.45232 0 0 0 0 0 0 +476 0 0 0 0 0 0.220915 -0.380436 0.833272 1.46459 0 0 0.239607 -1.77863 0 -2.78012 0.0674089 0 0 0 0.00143571 1.33573 0 0 0 0 0.401323 0 0 0.576382 -4.01055 -0.883237 0 0.0122016 0 0 0.366264 0.0444982 0 0 1.7334 -1.03892 0 0 0.359857 -5.69296 0 -1.15037 -0.216236 -0.589383 -0.813686 -1.67244 -0.603729 0 0.0511774 0.459072 -0.280587 0.866386 0.188461 0.838772 0 0 -0.35597 -0.883832 0 -0.170899 0.172902 -0.802869 0 0 0 0 0.332415 0.947309 0 3.07108 0.351262 0 0 0 -1.82412 0 -2.62009 6.74325 0 -1.18192 1.64026 -0.205545 0 -1.68799 2.50946 -4.35419 13.2159 0 0 0 -0.20491 -0.0437211 0 0 0 0.000890918 0.0356482 0 0.000172399 0 -0.00737194 -0.0163336 0 0 0 0 -0.108238 0 -0.00293798 0 -0.151299 0 0.0635655 0.174724 0 0.00479906 0 0 0.0936485 -0.000159711 0.0323914 0 0.0134058 0 0.00263815 0.0744618 0.0228119 -0.00376707 0.0142906 0 -0.00051279 0 0 0 0.000968136 0 0 -0.0135252 -0.00533538 0.0777458 0.0634841 0 0 0.00105881 0 -0.0166457 0 0 -0.0156323 -0.016621 0.183631 0.0019304 0 0 0.0175357 -0.0585796 -0.107377 0.0412448 -0.28391 0 -0.0973151 0.0235562 0.103281 0 0 0 0.162251 0 -0.0480045 0.109177 0 0.0071007 -0.0167318 0.072725 0 -0.00243058 0.00384015 -0.0143651 -0.0147467 0 0.220915 -0.20491 -0.380436 -0.0437211 0.587387 0.149868 -0.520762 0.50193 0.0975664 0.0491041 0.0171982 0.530768 0.00655867 0.0792129 -0.0718132 0.0418157 0.027381 0.367012 -0.337332 0.124414 -0.402383 0.120931 0.082716 -0.0732126 0.154971 -0.271991 0.211509 0.00547712 -2.90562 0.576482 0.0717041 -1.32013 -0.00882081 0.4923 -0.438339 0.0181652 0.0128564 0.0714069 0.113978 -1.92088 0.0217693 -0.0410206 -1.95974 -0.763078 0.00355213 0.0663497 -0.178904 -0.00152103 0.205779 0.220263 1.26612 0.0758129 -0.102378 1.65382 0.188305 -1.38411 -0.142745 -0.105191 -0.29952 -0.573847 0.301712 0.458574 -0.0295815 -1.65543 1.08547 0.433206 -0.288493 0.188693 -0.200373 0.152912 -0.228935 -0.153286 -0.139695 0.180642 -0.00662404 -0.238108 -0.181651 -0.69213 0.129874 -0.477383 -1.06879 4.35011 -0.193994 -0.105471 0.41511 -0.0705616 -0.127965 -0.260318 0.564454 -0.965596 2.37885 0 +477 0 0 0 0 0 0.0908665 -0.182813 1.33228 1.81031 0 0 0.29659 -0.617595 0 -0.47715 0.0572835 0 0 0 -0.0136377 -6.07734 0 0 0 0 0.354829 0 0 0.0294614 0.43991 -0.0861962 0 0.600208 0 0 0.239225 0.0434774 0 0 -0.212155 -1.49154 0 0 -0.124938 -3.85122 0 -0.15419 0.0387874 0.750114 0.0641271 -2.69717 0.14312 0 -0.15084 0.0508201 -0.314411 0.141219 -0.388217 -0.503247 0 0 -0.681386 0.48085 0 0.845586 0.872024 -1.50752 0 0 0 0 0.510173 -0.183487 0 -0.211952 0.0910518 0 0 0 -2.35092 0 0.127119 -1.11907 0 0.278068 0.286303 -4.38282 0 0.876331 -0.678675 0.0833192 -0.615851 0 0 0 0.0993569 0.00467862 0 0 0 -0.0602007 0.0656566 0 -0.0067138 0 -0.00387103 -0.00902234 0 0 0 0 0.0140335 0 0.000118654 0 -0.102357 0 -0.500865 -0.380809 0 0.000821598 0 0 -0.0258689 -0.00206353 -0.0352593 0 0.0098549 0 0.00460364 -0.105129 0.000169504 -0.0272826 -0.0133177 0 -0.000285853 0 0 0 0.000696199 0 0 0.000564853 -0.00328868 -0.0783614 -0.0098115 0 0 0.00405416 0 -0.0185114 0 0 0.0349353 0.00449041 -0.00980525 -0.00689887 0 0 0.0123821 -0.036927 -0.0126464 -0.0387097 0.0743004 0 0.0437489 0.00988394 -0.082668 0 0 0 0.101218 0 0.0362547 0.0373699 0 -0.00214758 0.0020014 0.0317504 0 0.00156225 -0.00329284 0.0150527 0.0178092 0 0.0908665 0.0993569 -0.182813 0.00467862 0.132054 -0.122263 0.233063 0.618532 0.88634 0.0131556 0.00614319 -0.0970392 0.00191523 -0.00663314 0.0127463 0.0426248 -0.0190092 0.0751866 -0.134586 -0.985865 -0.285568 0.1532 -0.149041 -0.0122033 -0.145464 0.140227 0.456223 -0.0352485 4.52792 -0.120799 -0.528815 0.439047 0.000356948 1.01958 -0.491179 -0.0154684 -0.00275246 0.0889098 -0.0321662 0.627982 0.0759898 0.028944 1.84603 -1.394 -0.000889279 -0.0109521 -0.181439 -0.184074 -0.0730586 0.140763 0.804374 -0.11778 0.108272 -0.288383 -0.0887669 0.120748 0.120246 -0.172658 0.420111 0.00299952 -0.259614 0.372627 0.175715 0.116415 2.54679 -0.173493 0.105242 0.043704 0.0649226 -0.0772474 0.0472602 0.0511403 -0.0301196 -0.0540914 -0.112176 -0.180425 1.33967 0.269112 -1.06843 -0.00304647 0.128555 -0.496308 -0.00386878 0.0319398 -0.158116 -0.344662 -0.0262151 0.0733426 -0.193623 0.242285 -0.719514 0 +478 0 0 0 0 0 0.161089 -0.0585817 -0.92698 -2.18129 0 0 -0.253985 -0.894058 0 -0.876264 -0.101178 0 0 0 -0.163507 3.08924 0 0 0 0 -0.39548 0 0 0.0922974 -1.59545 -0.396704 0 -0.603924 0 0 -0.0803373 -0.038606 0 0 -0.670389 -0.00748496 0 0 -0.0789536 -1.58437 0 -0.534556 -0.483785 -1.11286 0.408955 0.234553 0.672322 0 0.391192 -0.37089 -0.0986525 0.44755 -0.271644 -0.804804 0 0 -0.344715 1.29799 0 0.409461 -0.072749 -0.107229 0 0 0 0 -0.262578 -1.18822 0 0.32961 1.50874 0 0 0 5.31981 0 2.25317 1.34178 0 0.832656 0.113075 4.62363 0 0.0494213 0.43956 0.832104 4.89604 0 0 0 0.0994597 0.0282454 0 0 0 0.0255242 -0.0320234 0 0.00210149 0 0.00603011 0.00463336 0 0 0 0 0.0196587 0 -0.00505997 0 0.0394849 0 0.191492 0.0101196 0 -0.00142812 0 0 -0.0256312 0.000233538 -0.0160698 0 -0.0106008 0 -0.00228784 -0.0168952 -0.00516034 0.00402319 -0.00708648 0 0.00042037 0 0 0 -0.00076509 0 0 0.0108634 0.00426725 -0.0739805 -0.0332891 0 0 -0.00121236 0 0.0144583 0 0 -0.00156828 -0.00844022 -0.00598736 -0.016773 0 0 0.0124961 0.013958 0.0794712 0.0223474 0.17831 0 0.0173827 -0.0142346 0.0859997 0 0 0 -0.0702163 0 0.0422064 -0.0754758 0 -0.00476558 0.0131591 -0.0305821 0 0.00184207 -0.00485347 0.0144195 0.0157088 0 0.161089 0.0994597 -0.0585817 0.0282454 -0.0957185 0.0818667 0.175415 0.319831 -0.773307 -0.0459736 -0.0608775 -0.497405 -0.00584306 -0.0605291 0.038583 -0.0270201 -0.059597 -0.365611 -0.0185972 1.82725 0.0725258 0.088337 -0.180051 0.0442463 -0.402546 -0.115687 -0.229958 0.0336859 -2.10572 0.141664 0.247848 -0.42552 0.00562783 0.459123 0.119486 -0.0200083 0.000972143 0.0623715 0.0131418 -0.707212 -0.0511889 -0.02134 -0.606401 0.987692 -0.00848985 0.0154728 0.156843 0.238645 0.24295 0.12245 -0.765512 0.782025 0.192044 0.961488 -0.0730879 0.262421 0.0844188 -0.132281 -0.227015 -0.13919 0.205637 0.0136705 0.0633309 -0.319128 -2.49349 0.0536568 -0.613033 -0.109662 0.0706676 0.433075 0.106414 0.033139 0.12447 -0.201807 -0.0190051 0.132523 -0.627884 0.561528 1.67295 0.4199 -0.25393 3.04732 0.18779 -0.0893865 0.29039 0.875394 0.127476 0.00158526 0.0634548 0.00994615 0.902762 0 +479 0 -0.482888 -0.072025 -0.0737154 -0.249376 0.328488 0.335194 -1.7611 -4.02042 -0.307062 2.86549 -0.00396581 1.03809 0.0194137 1.02129 -0.0101925 -0.556058 -4.8269 0.203649 0.0408607 1.82001 0.0466491 -0.205819 -0.0169225 0.61899 -0.684899 0.116307 0.0137417 -0.568349 -1.17321 0.434095 -0.0876379 -0.167785 -0.12823 -0.304844 -0.43484 -0.0205393 -0.0150026 2.99567 -0.210654 1.24993 0.117471 -1.17414 -0.0656543 2.78641 0.689989 0.839731 -0.823229 -0.153276 0.274454 -0.605697 0.619941 1.24745 0.152645 0.196043 -0.0245845 2.07322 0.559056 0.187934 -1.04218 -0.298064 2.31637 -1.45472 0.797941 0.355692 0.252649 1.92178 -0.0957707 0.21232 0.0803161 -1.66851 0.092433 -0.191874 0.0667968 -0.982703 0.695553 0.535228 -12.6068 -8.25679 8.37571 -4.10723 2.61349 -1.61622 -3.23025 2.26573 -3.21649 6.61974 -0.711762 0.558932 -0.601788 -0.397156 4.10425 0 0 0 0 0 -0.0737154 -0.249376 -0.00330053 0 0 0 0 -5.71086e-05 0 0.00519306 0 0 0.0019883 -0.00300353 0.0140372 0 0.00308033 0.0860821 -0.00172527 0 0 0.159627 -0.000177012 0 -0.0230681 0.420635 0 0 0.0256939 0.248639 0 -0.1258 0 0.0280581 0 0 0.00506473 0 0 -0.152823 -0.00110964 0.0254618 0 -0.0470786 0.00419762 0 0 -0.0690034 0 -0.00387722 -0.154586 0.00556703 0 0 -0.010792 0.0065609 0 0.0160106 0.0443288 0.0381479 -1.10203 -0.040977 -0.0284708 0 -0.0303682 -0.00305501 0.00391634 -0.126187 0.109773 0 0 0 -0.243982 -0.0583066 0.00614872 -0.00878998 0.0178547 -0.0260297 -0.00405996 0.00769448 -0.0153932 0.0136277 0 0 0 0 0 0 0.328488 0 0.335194 0 0 0 0 0.107674 -0.971262 0 0 0.639159 0 0.0902483 0 -0.0320274 0 0 0.203883 0 0.359423 -0.0936025 -0.0258072 0.0262938 0 0 -0.284941 0 -1.9031 0 3.06401 0.678616 0 -0.69681 1.20755 0.00425591 0 0.0192636 0 0 -0.10603 0 0.542035 0.717745 0 0 0.0665892 0 0 -0.183764 -1.57423 -0.41402 0 -0.743298 0 0.346423 -0.0604696 0.187356 -0.18549 -0.0368989 -0.61551 -0.450098 0.156645 2.01201 4.57533 0.00378755 0 0 0 0.0420998 -0.204607 0 0 0 0 0.361414 -11.7629 -3.20176 3.09731 -1.21724 1.26011 -2.04775 -0.412959 0.356808 -0.429668 0.501576 0 0 0 0 0 0 +480 0 -0.190135 -0.526843 -0.0158584 0.0649746 0.0743427 -0.208629 0.481022 1.54003 0.0366046 -0.523956 -0.463683 0.519533 0.00735112 0.611551 -0.0504561 -1.4183 -7.47226 -0.170502 -0.0729133 1.06307 -0.00918124 0.587741 -0.00860189 -0.0289942 0.791184 -0.465162 0.00268077 0.583009 1.89463 0.163262 -0.0335213 -0.545587 1.24495 -0.242682 0.389743 -0.0660312 -0.150844 2.80766 -0.633938 -0.13127 0.0402042 -0.89893 -0.0914676 0.632548 0.208265 -0.461218 1.10824 -1.03134 0.281424 -0.6423 0.295109 -2.06526 0.504125 -0.25976 0.60845 -0.818704 0.0730213 -0.270744 0.0868984 -0.0735445 -0.762367 -0.31483 -0.0184086 -2.3529 0.521753 -0.488347 1.07605 -0.26921 0.00486893 0.972768 -0.00491473 -0.321313 0.471738 -2.08964 -1.52453 -0.134286 -6.02255 0.259627 -3.51322 -1.41738 2.27761 -7.1641 0.575023 -0.179894 -0.0314399 -2.76839 -0.214837 0.462884 -1.3415 2.34528 -6.62803 0 0 0 0 0 -0.0158584 0.0649746 0.00907133 0 0 0 0 0.00174112 0 0.00872953 0 0 -0.00335547 -0.0116634 0.0184905 0 0.00293967 0.00200303 0.0487917 0 0 -0.282124 -0.000837877 0 0.0090066 -0.196154 0 0 -0.0307054 -0.0336429 0 -0.0107797 0 -0.0388282 0 0 -0.00369239 0 0 -0.279249 0.0243796 -0.045741 0 0.128077 -0.0268367 0 0 0.0720432 0 -0.0114021 0.030678 0.026227 0 0 -0.00231545 -0.0388048 0 0.00254655 -0.0155374 0.00208739 -0.425096 0.00748772 -0.00672205 0 0.0229156 -0.0509461 0.151983 -0.194468 -0.011852 0 0 0 0.763422 0.0119548 0.0585806 0.0191477 -0.0356774 0.0809327 0.0018968 -0.0036867 0.00976945 -0.00585162 0 0 0 0 0 0 0.0743427 0 -0.208629 0 0 0 0 -0.161973 -0.827997 0 0 0.119184 0 0.0175604 0 -0.0494001 0 0 0.199972 0 1.01901 0.012163 0.185299 0.0118781 0 0 -0.465932 0 -4.96092 0 1.95105 -0.138219 0 -0.106242 1.62499 0.0225442 0 -0.0130303 0 0 -0.0947856 0 -0.997314 -0.37461 0 0 -0.065068 0 0 -0.0106723 0.16041 -0.105049 0 -0.475018 0 0.332089 -0.0852983 0.112534 -0.0137383 0.0760828 -0.0972421 -0.518813 -0.056429 0.155325 -4.6322 -0.0666469 0 0 0 -0.114634 -0.0459758 0 0 0 0 0.286176 0.971914 -0.208616 1.68986 0.174832 0.23373 -0.634588 -0.00875493 -0.00540041 -0.00277912 -0.0065624 0 0 0 0 0 0 +481 0 1.14703 -0.00367279 0.0726373 0.227004 -0.15971 -0.0316504 0.69542 1.56148 0.246609 -1.92835 0.501572 0.189119 -0.0197276 1.06618 0.0739221 -1.14716 -2.07639 -0.183297 0.0926428 -0.562763 -0.0386587 0.103152 0.0169256 -0.485356 0.205823 -0.487242 -0.0411883 0.15657 -0.238448 0.123793 0.083915 0.892491 -0.61416 0.186308 0.16799 0.0777891 -0.221688 -4.4997 1.11055 -0.390825 -0.120221 0.425573 0.17204 2.39656 -0.714414 -0.121756 0.103051 1.54711 -0.57943 0.460329 -1.16941 3.34888 -0.19044 0.17215 -0.265108 1.22967 0.326674 0.226283 0.82081 0.299308 -1.52257 0.301746 -0.543093 -1.32527 -0.0797168 -0.178646 0.281924 -0.181302 -0.0591319 1.3262 -0.241972 1.19635 0.312392 -0.548378 -0.461915 -0.338194 22.9052 7.55976 -0.446979 2.9196 -3.107 7.19849 2.19349 -2.05613 2.90801 -2.4996 0.736958 -1.03902 1.37261 -2.09814 0.834166 0 0 0 0 0 0.0726373 0.227004 0.00379669 0 0 0 0 0.000104449 0 0.00901531 0 0 -0.00114385 0.00490573 -0.00742082 0 -0.00109563 -0.0829837 0.0472649 0 0 -0.0696558 0.000312863 0 -0.0121203 -0.460633 0 0 -0.0142006 -0.258565 0 0.0128272 0 -0.0172655 0 0 -0.00429881 0 0 0.0633261 0.00181245 -0.0136635 0 0.0542463 -0.0330245 0 0 0.0294756 0 0.00652867 -0.0894011 -0.00141322 0 0 0.0115591 -0.00258798 0 -0.0137394 0.0169388 -0.0267611 0.886729 -0.006007 0.0185266 0 0.0186343 -0.021122 0.0708274 0.162029 0.0203065 0 0 0 -0.565011 0.103463 -0.206361 -0.00882502 0.0170939 -0.0337729 0.0035888 -0.00683826 0.0131566 -0.0196552 0 0 0 0 0 0 -0.15971 0 -0.0316504 0 0 0 0 -0.246998 1.11043 0 0 -0.36715 0 -0.0487212 0 0.0459894 0 0 -0.350905 0 0.385956 -0.105415 -0.104131 -0.0639206 0 0 0.541635 0 2.58686 0 -2.08879 0.0666479 0 -0.528641 -0.131469 -0.0154318 0 -0.0479351 0 0 0.0954887 0 0.382377 -0.325535 0 0 -0.0703717 0 0 -0.415147 0.23792 -0.418669 0 -0.0101143 0 -0.713009 0.242321 -0.100657 0.677315 0.122351 -0.294443 0.331578 -0.322818 0.633989 1.78572 -0.135733 0 0 0 0.362508 0.203885 0 0 0 0 -0.231438 18.4762 1.60327 3.31621 0.473423 -0.364525 1.54014 0.238204 -0.203446 0.258407 0.23086 0 0 0 0 0 0 +482 0 0.31495 -0.124451 -0.0209937 -0.0702934 0.169363 0.155299 -0.587584 -1.59921 -0.215997 1.60061 -0.042287 -0.271631 0.00244653 -0.160062 0.0228369 -1.01461 -2.75854 0.29454 0.0560184 -1.70795 0.0444744 0.138335 -0.00294068 0.277185 -0.368188 -0.391748 0.0650417 -0.308113 -0.38796 0.101541 -0.0275193 0.23342 0.549878 0.393391 -0.165745 -0.00565096 0.202987 2.97401 -0.0788899 -0.411933 0.0225679 1.08276 -0.0105033 -1.17601 0.209348 0.15144 -0.345661 0.538997 0.032193 1.17895 0.505227 2.72684 -0.134313 0.091168 -0.106603 0.348195 0.656227 0.023382 -0.535896 -0.0500139 0.444812 -0.0211802 0.640417 -0.305748 -0.778964 0.390007 0.442782 0.720096 0.0676178 -0.543259 0.139078 0.0801957 -0.0713217 -0.942028 0.417632 1.1258 -7.55903 -3.82149 2.54593 -1.80825 1.14975 -2.34352 -0.977022 0.609035 -1.51617 2.9527 -0.0288502 -0.00886412 -0.173415 0.101923 0.74182 0 0 0 0 0 -0.0209937 -0.0702934 0.0042773 0 0 0 0 0.000809557 0 0.0178391 0 0 -0.000981709 -0.00517411 0.0146149 0 0.00238374 -0.00150764 0.111712 0 0 -0.0961617 -0.000367745 0 -0.0128222 -0.13061 0 0 -0.00827702 -0.0335532 0 -0.131141 0 -0.0162187 0 0 -0.00147577 0 0 -0.269485 0.0113171 -0.0139876 0 0.0598323 -0.0169538 0 0 -0.0187623 0 -0.00363952 -0.150414 0.00910631 0 0 -0.00595611 -0.0169404 0 0.0100059 0.0158136 0.0203038 -0.284991 -0.0136026 -0.0171296 0 0.00547826 0.00190583 0.186884 -0.127205 0.0815522 0 0 0 0.318921 -0.00898034 -0.095852 0.00425796 -0.00697192 0.00153139 -0.000716634 0.00115801 -0.000757834 -0.0288128 0 0 0 0 0 0 0.169363 0 0.155299 0 0 0 0 -0.408978 0.122478 0 0 0.792169 0 0.0916032 0 -0.00129037 0 0 -0.273085 0 0.414909 -0.1688 0.325618 -0.0361366 0 0 0.0441172 0 -0.472839 0 0.520473 0.436537 0 -1.24509 0.751423 0.0341901 0 -0.0538046 0 0 0.00197967 0 0.294959 -0.571084 0 0 -0.0747858 0 0 -0.320623 -2.31955 -0.294788 0 -0.756836 0 0.109134 0.254478 -0.0795161 -0.640684 0.0220502 -0.151366 -0.338066 0.0456276 1.30444 0.839093 0.0516751 0 0 0 0.203928 -0.211547 0 0 0 0 0.0291521 4.44273 -1.21149 3.76156 0.0136382 0.20802 -0.126862 -0.333183 0.269585 -0.342567 0.644384 0 0 0 0 0 0 +483 0 -0.682427 0.00196631 0.00483024 0.0681694 0.0979732 0.127731 -0.933003 -0.975591 0.0625138 0.0853035 -0.0621769 -0.46336 0.000142759 -1.54401 -0.0093878 0.139795 -2.04685 0.0944908 -0.00757655 1.2067 0.0231496 -0.336514 0.000294045 0.0506364 -0.509403 0.35558 0.0392007 -0.517458 -1.26492 -0.0554972 0.00429191 -0.183918 0.133492 0.26617 -0.435745 -0.00378677 0.231952 2.44736 -0.0112913 1.16309 0.000595769 1.18313 -0.000453956 -3.91839 -0.00713783 0.721101 -0.790005 -0.183045 -0.00674159 -0.808312 -0.1077 0.100633 -0.0262276 0.00652586 0.156375 -2.02385 -0.466681 0.32465 -0.0984955 -0.0049964 1.93255 -2.19015 1.29287 -0.799942 -0.284336 1.35895 0.861891 0.32408 -0.0126995 -0.194156 0.0948525 -0.262054 -0.184813 0.781533 0.835979 -0.534079 -8.48096 -2.27851 0.56907 -1.68316 1.16701 -1.23977 -0.0529688 -0.0385075 0.25889 1.46447 0.000983663 0.00126559 0.0939833 0.0971985 2.41866 0 0 0 0 0 0.00483024 0.0681694 0.000825175 0 0 0 0 6.15861e-05 0 -0.0124823 0 0 -0.000711649 -0.000306423 -0.00246869 0 -0.000553332 -0.0199092 -0.0629072 0 0 -0.174249 -2.86013e-05 0 -0.00308603 -0.776834 0 0 -0.0276278 -0.123528 0 -0.00943175 0 -0.0123127 0 0 -0.00188984 0 0 -0.212393 0.000951518 -0.00865089 0 0.0124897 -0.00283502 0 0 0.0569226 0 -0.000337142 0.0194627 0.00232115 0 0 0.00131053 -0.00278532 0 0.000158803 -0.0372631 -0.00548483 0.54854 0.0103794 -0.00840597 0 0.0113728 -0.0348509 -0.0747557 0.0622811 -0.0521927 0 0 0 0.464624 0.0166822 0.0609852 0.00310387 -0.00545531 0.033295 0.000733641 -0.00168828 0.00414501 0.0217673 0 0 0 0 0 0 0.0979732 0 0.127731 0 0 0 0 0.351865 -0.0493363 0 0 -0.237928 0 -0.0194096 0 -0.0113123 0 0 -0.330607 0 -0.413562 0.125613 -0.045433 -0.0385737 0 0 -0.160249 0 -6.60744 0 1.80011 -0.603827 0 0.796426 0.219352 -0.00110506 0 0.0576089 0 0 -0.00628411 0 -2.37023 -0.889479 0 0 -0.096961 0 0 0.150415 1.7101 0.0679523 0 0.356631 0 0.231415 0.019424 0.0424232 0.176954 0.083732 0.145641 0.0941533 0.101882 -1.33553 -3.95128 -0.0743438 0 0 0 -0.0512852 0.00797195 0 0 0 0 -0.0930752 -7.62132 -0.11332 -1.40554 -0.0767255 0.317624 -1.13108 0.130933 -0.0864819 0.0934895 -0.417164 0 0 0 0 0 0 +484 0 0.55697 0.525856 0.0266658 0.104402 -0.00671236 0.258499 -0.553515 -0.97822 0.287125 -0.802344 -0.00717127 0.365447 -0.00286947 -0.481753 -0.0398151 0.85688 4.69555 -0.125441 -0.0833172 -0.254948 -0.0145012 -0.485005 0.00364605 -0.130856 -0.409858 0.27211 -0.0465105 -0.482043 -0.687481 0.0668742 0.0348929 -0.368082 -1.40961 -0.28065 -0.288328 -0.000783215 -0.0376545 -5.3012 0.114758 0.485132 -0.0257749 -0.504082 0.0100204 0.629197 -0.231959 0.519539 -0.536326 -0.706897 -0.00478271 -0.424948 -0.686902 -1.64088 0.226321 -0.137002 -0.0399699 -1.73739 -0.0330632 -0.214296 0.358052 0.0575786 -1.2487 0.320277 -0.454285 0.104057 -0.184819 0.113583 -0.772679 -0.172906 -0.0852747 0.419978 -0.513975 -0.253304 0.17485 0.418588 0.175239 0.623544 20.4102 4.9085 1.9173 2.36766 -2.35539 8.77684 -0.105551 0.0448343 1.16391 1.72394 0.0319662 0.00793716 0.269136 -0.0627542 1.31454 0 0 0 0 0 0.0266658 0.104402 -0.00473246 0 0 0 0 -0.00093713 0 -0.0146015 0 0 0.00183509 0.00690322 -0.0155451 0 -0.00226197 0.00613502 -0.112446 0 0 0.177887 0.000490954 0 -0.00120549 0.283961 0 0 0.0180655 0.0591466 0 0.0427532 0 0.0224482 0 0 0.0019849 0 0 0.104214 -0.0130979 0.0259614 0 -0.0661732 -0.00572837 0 0 0.036411 0 0.00638229 0.0304034 -0.0093879 0 0 0.00773619 0.0238027 0 -0.0123927 -0.00529397 -0.0183949 0.33312 0.00329453 0.0180121 0 -0.00476279 -0.014298 -0.189463 0.193139 -0.0168003 0 0 0 -0.176049 0.0103303 0.0660815 -0.00139848 0.0019721 0.0143812 0.000495518 -0.000752596 -0.000731009 0.0293075 0 0 0 0 0 0 -0.00671236 0 0.258499 0 0 0 0 -0.162076 -0.24954 0 0 -0.27166 0 -0.0407186 0 -0.0172577 0 0 0.53056 0 -0.808536 -0.103663 -0.0874552 0.0431974 0 0 -0.195427 0 2.89034 0 -2.82325 0.339799 0 -0.489204 -1.34251 -0.0157342 0 -0.0378185 0 0 -0.0265379 0 0.65741 1.37751 0 0 0.158824 0 0 -0.205982 1.60872 -0.295674 0 -0.28499 0 -0.51193 -0.111961 0.0352817 0.385482 0.141509 0.239881 0.477738 -0.235944 1.01823 3.73949 -0.0633131 0 0 0 0.0644002 0.198042 0 0 0 0 0.10542 17.4734 0.778617 3.78372 0.1901 -0.259086 1.79243 0.179544 -0.10685 0.115629 0.308333 0 0 0 0 0 0 +485 0 709.17 111.767 12.7482 63.8744 413.785 70.6369 6.52241 11.3974 48.6322 -26.6786 11.3688 16.8981 -6.37298 18.0965 -2.35025 83.0316 271.202 -6.53872 -7.48527 91.1938 -3.67324 -10.8551 8.4867 -12.9345 1.22385 30.8791 7.21473 -12.4313 -65.6324 11.8311 15.9067 -13.5476 -26.5934 20.6711 -0.977078 4.27756 23.0392 -104.409 39.6257 43.2393 -11.7736 81.142 10.0208 16.0843 -32.8192 30.0283 -19.7496 -46.1745 -4.93955 27.7445 -5.04273 -3.31064 14.4285 -4.29236 6.46501 38.2143 13.7937 -5.70934 6.19506 4.08996 -23.5619 -13.2453 7.63657 -28.1616 -23.0082 -6.24714 20.2253 17.5462 -11.3545 12.3302 3.09044 4.40197 -14.2284 -15.501 -7.88688 -20.6079 442.208 103.984 48.8039 102.506 -88.8952 223.526 43.544 -39.0481 53.2266 15.9784 43.2398 -47.0789 83.204 -103.416 214.884 0 0.319656 0.0373586 30.4608 4.55467 12.7482 63.8744 0.16161 0.95578 -0.423891 -0.000833992 0.213677 0.00738969 0.0298833 -0.255376 0.0437319 -0.00913654 0.030348 0.201957 1.0095 0.511219 0.00826795 3.21463 3.16921 0.00358156 3.27069 -0.65917 0.0155587 -0.143294 -0.961281 17.9994 -3.3053 0.0145791 0.28857 6.42205 -0.243237 0.848157 -0.0399705 1.16763 -0.613214 0.185867 0.325381 -0.0879675 0.00283553 3.15696 0.0922605 0.422268 -0.0171582 2.19186 -0.0480494 -0.00451103 -0.0374248 0.626721 -0.040505 0.151259 7.38398 -0.505734 -0.137707 0.119665 -0.0678143 -0.420128 0.0900136 0.700965 3.01856 0.15816 -3.782 0.972149 0.681558 -0.236459 0.394107 1.0448 8.21965 -1.6323 1.69641 0.00838285 0.322101 0.0236123 -70.2958 -4.46334 -13.4207 0.183429 -0.58631 3.70424 -0.0300159 0.0701042 0.214242 -1.02655 0.0153098 -0.0188296 0.155585 -0.409608 4.12247 0 413.785 30.4608 70.6369 4.55467 141.599 20.4403 26.2319 -2.89452 30.4024 -3.39681 -2.44841 -14.506 -0.583517 -3.51812 4.35114 1.08104 -2.37992 -18.9262 5.96237 32.174 -8.86223 -1.06767 -3.30212 1.32088 -16.5526 -6.12666 4.60789 1.48562 97.8517 18.8341 -84.1634 21.3899 0.697538 -7.14319 -24.9844 -1.0178 0.540952 -0.102001 3.53081 -32.9594 6.20828 -1.11818 43.3645 2.43286 -0.333806 3.15899 3.83233 7.05808 -5.98203 -4.2023 0.703896 6.99834 6.50257 11.2875 -9.43054 -19.7954 11.1037 -10.2089 -3.1948 -0.852591 -12.5632 8.54066 -4.14666 1.21154 36.0001 -4.39713 10.489 -0.495246 0.8179 8.96908 2.0914 -3.53947 3.07421 3.37688 -1.11978 -10.407 607.221 104.193 25.2903 85.4265 -77.4518 137.195 27.2301 -21.8462 21.8963 6.21994 22.6875 -18.94 22.4449 -24.0696 44.0676 0 +486 0 715.139 116.03 14.1301 71.4096 409.926 72.7162 -1.50226 -8.03564 87.4014 -58.1024 18.854 19.6594 -6.99152 29.7654 -2.13919 86.7148 299.813 -12.0901 -12.6448 143.262 -4.45206 -16.0069 9.26191 -16.4308 -6.5545 31.9482 5.82121 -15.0157 -103.172 13.3594 22.4915 -8.1997 -40.52 18.0309 -4.72972 5.20621 15.2794 -164.697 65.7357 51.8154 -19.604 66.7131 15.6279 59.9654 -73.0718 32.6719 -32.3574 -63.3041 -32.0942 14.2398 -29.9689 -21.0641 17.7491 -8.94896 6.90809 20.8306 33.3216 -7.24156 21.8576 27.8646 -29.9068 11.4008 -9.8791 -36.8519 -24.1852 -11.5061 16.8608 24.6898 -25.0984 8.88094 -5.51393 25.2331 -26.0181 -23.5873 -12.2908 -9.29626 608.6 152.098 120.786 201.733 -157.455 359.132 123.209 -87.8661 111.094 32.7096 178.858 -134.183 158.71 -163.31 323.039 0 6.50373 0.729259 27.2778 3.8263 14.1301 71.4096 0.641754 1.83949 -7.78224 -0.0188735 0.30241 0.00539449 0.386718 -0.171054 0.656552 -0.221081 -0.285691 -0.744129 -0.962768 7.30205 -0.232149 0.383528 -1.34117 0.0554306 11.7691 1.94116 -0.0122376 -0.136607 -2.54074 15.3178 -4.27642 0.242019 0.951345 1.31936 -0.906773 -5.91903 -0.746282 0.891433 -0.808126 2.39542 0.204182 -2.43773 0.0351976 -17.4354 0.216606 -4.21997 -0.0880966 5.74098 3.07048 -0.486093 -0.542027 -8.5719 0.235848 0.445933 -0.0597816 -1.66479 -1.71752 1.95 0.413358 -1.49055 -2.0362 -1.52719 -1.43393 -0.406757 -4.52552 -0.992552 -0.211531 -0.122614 0.879805 0.487191 1.52466 -4.14952 -1.93472 0.162751 1.76452 0.366208 171.645 25.1022 15.6215 6.43889 -4.66722 22.5835 0.218027 0.221938 1.95338 3.03039 0.323827 -0.384018 1.11631 -1.60106 5.64464 0 409.926 27.2778 72.7162 3.8263 144.751 21.0993 33.9434 2.36914 41.9733 -2.91118 -3.87922 -24.6291 -0.442665 -3.29391 5.13058 1.4607 -3.56312 -19.7231 7.45252 54.5867 -12.867 -2.20084 -5.98347 1.98628 -24.6966 -5.40311 8.79844 1.69609 179.196 17.4056 -101.744 20.3872 0.772061 2.13568 -29.3863 -0.780362 0.356417 -0.549963 2.41574 -31.5398 6.47784 -0.989938 51.5478 30.2773 -0.525787 2.55133 7.65048 9.73868 -2.00958 -5.18026 3.37516 -3.89872 8.45916 17.9186 -13.1371 -20.3418 5.2576 -4.16594 0.364826 5.28101 -3.28411 9.87603 -9.99236 -8.18072 -12.9343 -7.51433 1.99601 -4.4103 -1.41405 17.7596 6.85585 -4.10821 4.9751 0.364522 1.84394 -18.1741 689.857 161.178 -22.1725 103.314 -82.6389 152.76 29.8681 -22.6095 28.9694 5.05039 23.0752 -19.0946 23.8697 -21.0649 40.2935 0 +487 0 713.332 115.618 12.8996 66.0678 411.631 72.6553 1.17807 9.20751 81.8211 -38.0631 12.311 21.4827 -6.12701 34.8202 -0.0426395 94.2084 333.265 -8.20863 -8.98217 123.279 -3.70773 -12.9567 9.27944 -10.803 -3.69514 33.3531 7.90305 -11.6104 -23.1069 12.3184 22.5398 -0.231498 -30.5216 23.221 -2.11057 5.36395 21.6749 -110.267 19.1471 46.5888 -10.9597 82.6745 7.92433 70.934 -26.4325 29.1248 -17.7118 -45.9062 -10.1056 28.2138 -15.0253 47.4943 17.6086 -4.12418 -2.85228 57.409 29.2333 -16.1755 11.4129 10.1433 -15.6164 25.1343 -2.99835 -41.1686 -23.6534 10.3345 23.8155 18.8561 -34.0158 9.7884 -11.1757 7.75445 -33.9477 -3.53321 12.8745 -13.4395 403.601 124.175 21.5383 110.096 -77.3892 164.339 39.3154 -23.457 44.3997 9.42305 31.7443 -24.1629 46.9433 -53.1395 116.074 0 0.126294 0.0156262 34.5156 5.27442 12.8996 66.0678 0.0698858 2.16591 -1.19846 -0.000363023 0.419868 0.0209415 -0.0333672 -0.431503 0.0191403 -0.00387001 0.0170981 0.0657825 -1.57711 0.212868 -0.0626295 2.32477 -3.24235 0.00163301 9.33956 6.70236 0.00628365 -0.114981 -1.2783 17.337 0.247015 -0.0131807 1.71281 5.4942 -0.2686 -4.69826 -0.0840462 0.960323 -0.25867 -0.221259 0.339163 -0.0356355 -0.00186825 -12.0322 0.37012 0.153803 -0.0171173 0.967971 0.445556 -0.0519916 -0.0643266 0.25171 0.275747 0.0565456 -2.03455 -0.135113 -0.0605113 0.207557 -0.0621547 -0.189176 -0.618255 -0.336378 -1.02319 -0.0836598 -7.19163 -0.288682 0.782661 -0.198899 0.224926 -1.0369 1.69868 -1.11336 -2.67477 -0.0368164 1.57475 0.00972777 67.0477 1.97782 11.9168 0.507376 -0.798147 10.3053 -0.0335086 0.0707065 0.264834 3.56151 0.00698478 -0.0037965 -0.0283137 0.0724362 2.14939 0 411.631 34.5156 72.6553 5.27442 134.768 19.7163 37.8531 -1.50673 47.9426 -3.05037 -3.56567 -22.5794 -0.580628 -4.05746 6.49723 2.20077 -4.16107 -15.1821 6.3024 46.0197 -11.6735 -0.63608 -3.24896 1.75733 -25.9676 -4.32582 12.9724 1.49815 193.045 12.444 -57.7319 21.787 1.07039 10.0989 -17.5216 -0.896942 0.450841 -1.01938 2.64452 -16.1613 8.72581 -0.930239 60.2361 19.8641 -0.547616 2.52035 7.11551 8.50964 -4.15914 -5.9482 4.49258 9.44999 8.10088 27.7991 -13.0208 -7.17368 1.62379 -6.33833 4.59169 2.78412 -2.01581 -0.169024 -6.17203 -16.2242 5.50214 -2.41269 6.30368 -1.62727 2.94917 14.9924 3.04612 -3.59238 3.27039 2.01914 -0.306263 -18.3334 394.034 121.788 -28.7487 70.6511 -56.3141 89.1634 21.448 -17.8309 27.2521 -8.94553 17.1245 -13.6148 16.927 -14.8959 24.7553 0 +488 0 -1.32533 -0.708712 0.310437 -0.0303702 -3.98658 -1.313 7.17562 25.9501 4.40527 -8.76672 -0.724497 -0.930452 -0.174603 6.0467 -0.0371201 6.06345 27.4161 -0.226891 -1.31427 -23.1375 -0.0214786 1.18806 0.348089 -2.8799 4.15731 0.0223876 0.672576 0.828128 18.5522 1.32487 1.53186 0.561083 1.90236 4.31104 1.18509 0.148592 1.54679 -0.85705 -2.61847 -3.92537 -1.0243 11.3225 0.164559 -7.5913 -2.57223 -0.112329 3.77163 -0.510778 -0.678979 5.03846 -9.60987 -41.6165 2.33708 -3.87082 2.11934 -20.3963 0.119892 -4.87453 4.84368 2.64597 -3.77198 2.36514 2.50877 -14.202 1.69252 -0.692634 5.71412 -4.42529 -4.03796 -0.00622227 -2.22691 -4.45566 -3.46285 -23.7114 1.39839 -9.62191 8.65808 22.6298 -72.4771 15.7563 -16.038 -29.6722 12.6549 -11.9831 0.940549 -36.231 10.2659 1.30719 -18.4004 25.0207 -58.418 0 0.107184 0.00377767 -0.35981 0.0278581 0.310437 -0.0303702 -0.018301 -0.379666 0.322541 0.000112625 -0.0525323 -0.0216879 -0.00685029 -0.0156252 -0.00154049 0.000513949 -0.00141878 0.25678 -0.176974 0.0605158 -0.0460085 1.83593 0.25976 -0.000611401 -2.51434 0.385943 0.0184781 0.0208291 -0.458576 6.68521 0.333414 -0.00255544 0.295683 4.29458 0.1217 -1.12339 0.032159 2.08083 0.0998354 -0.000359639 0.388189 -0.0113481 -0.00127864 -2.24813 -0.293265 0.0995555 0.00972535 -0.260388 -0.0360447 0.0167394 0.0698476 -2.87711 -0.0274904 0.119563 -3.19917 -0.254751 0.00194299 -0.036686 0.0164832 0.119342 0.187514 -0.0622205 0.935945 0.147973 6.57206 -0.427203 -0.987116 -0.211178 -0.0555496 -0.249343 1.13812 1.01818 -0.673144 -0.153193 -0.310453 0.00270878 9.73714 0.867077 0.631163 0.834691 -0.650925 -1.25277 0.00590052 0.0580047 -0.0675791 -0.0158354 -0.00447432 0.00761242 -0.000445686 0.0200541 -0.329108 0 -3.98658 -0.35981 -1.313 0.0278581 -2.51256 -0.584412 0.182506 -0.315798 3.50833 -0.0349874 0.294145 -1.31006 -0.00456437 -0.25193 0.032737 0.356263 0.169484 -0.445227 -3.47325 -5.55707 2.86826 0.224854 0.380707 -0.60479 1.89008 0.212931 1.59595 -0.0761674 26.7689 0.0439201 0.577895 2.23324 0.00537352 3.55646 1.94656 -0.074582 0.014951 0.0138449 0.0787511 2.80017 0.576271 0.0416152 9.09714 -9.04058 0.0364426 0.0511861 -1.50344 -0.661162 -0.691308 -6.42381 -3.02358 0.189364 0.272378 3.20793 -0.00854755 -2.68234 -0.256894 -0.540434 -1.05023 0.726535 6.26358 0.977457 0.00626111 1.42396 3.75979 1.84651 -2.42929 0.193627 -0.322707 1.07519 -0.418249 -0.581632 0.44318 0.864126 0.13813 -0.49341 -1.02407 6.75714 -21.2708 -0.00611611 3.00799 -19.1614 1.42585 -0.399385 -2.6345 -4.47421 0.638709 0.0415532 -1.95774 1.77379 -5.50044 0 +489 0 6.48135 1.11172 0.637761 0.675066 0.844992 1.20883 -2.48425 -10.0947 7.84818 -7.41694 -1.03638 1.33722 -0.544773 3.68794 0.260176 0.815007 9.80776 -2.0827 1.32953 -6.29959 -0.914661 -1.192 0.89498 -3.72871 -2.10434 0.730306 0.761194 -1.14002 -0.306434 0.999653 2.40305 2.87883 -5.77388 1.45285 -1.03958 0.033106 4.17061 -27.0804 -4.94245 0.523481 -1.05826 14.0775 -0.684617 5.81796 -0.689375 1.5585 -0.170617 8.55688 0.648791 -14.7614 -1.79816 6.69629 -1.18044 1.02491 -1.40824 7.41314 4.31149 9.18351 3.67926 1.64711 -2.49212 -10.1237 10.3468 -5.6308 3.70185 -6.22575 9.85305 3.68003 -5.06533 4.97463 1.46876 -2.66848 -5.38903 6.39589 0.513014 -1.96446 103.28 38.114 19.3046 18.4584 -1.45462 32.2847 4.43121 6.06069 1.32544 19.7247 2.08335 0.998187 1.04283 -0.217852 16.1095 0 -0.0731037 -0.0119432 0.87097 0.29521 0.637761 0.675066 0.0198503 0.144099 0.280025 0.000327094 0.0156015 0.0231883 -0.0364042 0.0401706 -0.0188647 0.00289707 0.00850609 0.178191 -0.412543 -0.189137 0.0431115 -0.0527586 -0.576407 -0.00175138 0.529309 0.736589 0.0080008 0.050934 1.23749 0.713713 1.39947 -0.0116691 0.294458 0.0271835 0.0485913 2.19763 0.0236449 0.254134 0.289055 -0.131043 0.0767693 0.0174293 -0.00304164 3.91509 0.348117 0.255642 0.00408404 0.430596 0.204458 0.0172813 0.0211231 0.981862 -0.158073 0.103116 -2.81203 -0.167168 0.0630573 -0.0733476 -0.0565629 0.0583924 -0.0912881 0.0752447 1.74223 0.0056339 9.26457 -0.0135204 -0.0137639 -0.14143 -0.154562 -0.652322 4.14515 -0.0153155 -0.795173 -0.0844102 1.39272 -0.00858579 -17.1922 -1.69161 2.33772 0.0461219 -0.171617 -3.59526 -0.008332 0.00275126 -0.234216 0.583808 -0.00700035 0.0148837 -0.0274091 0.0995972 -1.38493 0 0.844992 0.87097 1.20883 0.29521 -1.10863 -0.0826081 2.98352 -0.402221 5.2814 -0.358653 0.542296 2.11206 -0.0559575 0.127425 0.359256 0.285919 0.144454 -1.21263 6.09614 -3.31607 0.204589 -0.380484 0.617116 1.04404 1.53652 -0.591318 0.512349 -0.0168729 45.385 2.5364 -7.79246 5.65976 0.0407566 -5.35147 -1.51557 0.149576 0.089536 -0.123944 0.575389 -5.23618 0.941393 -0.076841 14.8924 10.5435 0.0628016 0.50068 1.96505 -0.479465 1.16831 -4.53426 5.83272 1.69673 -0.466023 -12.3368 -0.455553 -5.41649 1.69444 -1.51773 1.09847 -1.23753 1.28023 3.97355 -1.04971 0.236018 -25.9599 0.908922 -4.36393 0.0357096 0.239566 0.183314 0.431878 -1.20691 0.959995 0.932382 -0.239638 -1.50677 26.8327 -22.1142 37.845 -4.28263 -4.87658 22.8565 -1.27986 -2.5888 5.74261 -1.41072 2.43303 -4.42997 5.8916 -5.26824 6.58995 0 +490 0 -5.45705 -3.20404 -0.15165 0.121147 3.57285 -0.527747 1.72153 -12.2986 4.35711 7.26771 -1.05039 4.40357 -0.190014 7.26292 -0.711694 -1.40129 -33.2057 0.947957 -3.24541 13.697 -0.529298 2.53815 1.01059 1.24088 0.721162 -0.0333592 -0.231655 1.52409 -3.90155 2.89614 2.03005 -2.00243 9.62884 -2.03133 1.09959 -0.342412 -1.52252 27.7372 0.328641 1.92618 0.0360569 -10.1762 1.33137 3.57842 1.06234 2.2924 2.56217 -13.6417 -2.45469 8.22184 3.45487 40.6032 5.31173 -0.0451398 1.97347 15.1497 13.9031 5.22826 -2.08521 0.779626 -3.04586 5.47615 7.56217 0.204151 -0.948924 -5.77773 -1.86539 -1.23773 -5.80122 2.61595 0.759376 4.14743 0.973944 1.42816 -8.98685 21.6576 -143.077 -32.9073 9.67235 -21.153 16.7681 -21.9364 1.20047 0.0260855 -12.6697 35.8202 5.56092 -3.41968 -4.20056 2.01185 27.1485 0 0.561687 0.0555287 -0.0550541 -0.444588 -0.15165 0.121147 0.0696616 -0.152543 -0.562579 -0.000944794 -0.0190333 0.0315273 -0.0993236 0.491113 0.0433841 -0.014192 -0.0537379 -0.0814859 -0.565765 0.560164 0.115193 -0.378002 -0.142328 0.00307907 -1.18424 -3.63103 -0.012908 0.0395564 0.0213462 -3.35037 0.464771 -0.0370028 -0.390862 -0.943191 -0.059377 1.22344 -0.0640941 -0.536478 0.13823 -0.418691 0.00887406 -0.18932 -0.00799127 5.42099 0.501035 -0.600604 -0.00697162 1.23767 0.421442 0.068587 -0.0586003 0.921296 -0.169205 -0.0409049 2.20275 -0.0461771 -0.11472 0.181058 0.0457817 -0.188295 -0.0406809 0.0123562 -0.0552838 0.0509684 7.04953 0.136715 -0.655631 0.121335 0.547564 0.382223 4.95922 -0.611779 -0.315263 -0.164711 -0.214788 0.0241342 -39.2357 0.368708 -1.61364 0.300948 0.674127 -0.0261883 0.106277 -0.00519683 0.162997 1.03903 0.0162709 0.0347909 -0.0190052 0.0409546 1.73009 0 3.57285 -0.0550541 -0.527747 -0.444588 4.08631 0.1957 -1.31491 -4.30411 -7.98324 0.426792 -0.46202 6.81327 0.0850973 1.13291 -0.347492 -0.474851 -0.42294 1.55577 0.571317 4.25915 4.09073 -2.17707 3.82838 0.341378 -4.74905 -0.203726 -2.66634 -0.0775865 -48.0281 -0.310203 5.37433 1.96399 -0.0659725 -13.7711 7.40565 0.515475 -0.0249172 -0.65564 -0.0308012 -2.0487 -1.43116 -0.0158888 -6.92515 -5.95796 -0.0357136 -0.194234 -0.767528 0.0118209 0.0780052 3.91601 -19.6127 1.30233 0.671868 20.8764 -0.296887 7.78508 -1.46411 0.61173 -6.38478 1.2373 3.18546 -8.01273 1.61338 11.0295 76.3328 -0.0272367 2.79981 -0.125313 0.996112 3.05001 -2.54373 0.515527 -0.715533 -0.0253005 -0.0908025 1.54838 -96.8991 -29.6753 25.7231 -7.83316 1.05908 3.90979 -3.21038 1.51359 -2.72086 8.64121 -0.735253 -0.303906 -0.082213 -0.461399 3.78221 0 diff --git a/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.4 b/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.4 new file mode 100644 index 00000000000..d416269aec6 --- /dev/null +++ b/examples/mliap/dat_out.03Mar24.mliap.ace.compute.g++.4 @@ -0,0 +1,494 @@ +# Time-averaged data for fix ace +# TimeStep Number-of-rows +# Row c_ace[1] c_ace[2] c_ace[3] c_ace[4] c_ace[5] c_ace[6] c_ace[7] c_ace[8] c_ace[9] c_ace[10] c_ace[11] c_ace[12] c_ace[13] c_ace[14] c_ace[15] c_ace[16] c_ace[17] c_ace[18] c_ace[19] c_ace[20] c_ace[21] c_ace[22] c_ace[23] c_ace[24] c_ace[25] c_ace[26] c_ace[27] c_ace[28] c_ace[29] c_ace[30] c_ace[31] c_ace[32] c_ace[33] c_ace[34] c_ace[35] c_ace[36] c_ace[37] c_ace[38] c_ace[39] c_ace[40] c_ace[41] c_ace[42] c_ace[43] c_ace[44] c_ace[45] c_ace[46] c_ace[47] c_ace[48] c_ace[49] c_ace[50] c_ace[51] c_ace[52] c_ace[53] c_ace[54] c_ace[55] c_ace[56] c_ace[57] c_ace[58] c_ace[59] c_ace[60] c_ace[61] c_ace[62] c_ace[63] c_ace[64] c_ace[65] c_ace[66] c_ace[67] c_ace[68] c_ace[69] c_ace[70] c_ace[71] c_ace[72] c_ace[73] c_ace[74] c_ace[75] c_ace[76] c_ace[77] c_ace[78] c_ace[79] c_ace[80] c_ace[81] c_ace[82] c_ace[83] c_ace[84] c_ace[85] c_ace[86] c_ace[87] c_ace[88] c_ace[89] c_ace[90] c_ace[91] c_ace[92] c_ace[93] c_ace[94] c_ace[95] c_ace[96] c_ace[97] c_ace[98] c_ace[99] c_ace[100] c_ace[101] c_ace[102] c_ace[103] c_ace[104] c_ace[105] c_ace[106] c_ace[107] c_ace[108] c_ace[109] c_ace[110] c_ace[111] c_ace[112] c_ace[113] c_ace[114] c_ace[115] c_ace[116] c_ace[117] c_ace[118] c_ace[119] c_ace[120] c_ace[121] c_ace[122] c_ace[123] c_ace[124] c_ace[125] c_ace[126] c_ace[127] c_ace[128] c_ace[129] c_ace[130] c_ace[131] c_ace[132] c_ace[133] c_ace[134] c_ace[135] c_ace[136] c_ace[137] c_ace[138] c_ace[139] c_ace[140] c_ace[141] c_ace[142] c_ace[143] c_ace[144] c_ace[145] c_ace[146] c_ace[147] c_ace[148] c_ace[149] c_ace[150] c_ace[151] c_ace[152] c_ace[153] c_ace[154] c_ace[155] c_ace[156] c_ace[157] c_ace[158] c_ace[159] c_ace[160] c_ace[161] c_ace[162] c_ace[163] c_ace[164] c_ace[165] c_ace[166] c_ace[167] c_ace[168] c_ace[169] c_ace[170] c_ace[171] c_ace[172] c_ace[173] c_ace[174] c_ace[175] c_ace[176] c_ace[177] c_ace[178] c_ace[179] c_ace[180] c_ace[181] c_ace[182] c_ace[183] c_ace[184] c_ace[185] c_ace[186] c_ace[187] c_ace[188] c_ace[189] c_ace[190] c_ace[191] c_ace[192] c_ace[193] c_ace[194] c_ace[195] c_ace[196] c_ace[197] c_ace[198] c_ace[199] c_ace[200] c_ace[201] c_ace[202] c_ace[203] c_ace[204] c_ace[205] c_ace[206] c_ace[207] c_ace[208] c_ace[209] c_ace[210] c_ace[211] c_ace[212] c_ace[213] c_ace[214] c_ace[215] c_ace[216] c_ace[217] c_ace[218] c_ace[219] c_ace[220] c_ace[221] c_ace[222] c_ace[223] c_ace[224] c_ace[225] c_ace[226] c_ace[227] c_ace[228] c_ace[229] c_ace[230] c_ace[231] c_ace[232] c_ace[233] c_ace[234] c_ace[235] c_ace[236] c_ace[237] c_ace[238] c_ace[239] c_ace[240] c_ace[241] c_ace[242] c_ace[243] c_ace[244] c_ace[245] c_ace[246] c_ace[247] c_ace[248] c_ace[249] c_ace[250] c_ace[251] c_ace[252] c_ace[253] c_ace[254] c_ace[255] c_ace[256] c_ace[257] c_ace[258] c_ace[259] c_ace[260] c_ace[261] c_ace[262] c_ace[263] c_ace[264] c_ace[265] c_ace[266] c_ace[267] c_ace[268] c_ace[269] c_ace[270] c_ace[271] c_ace[272] c_ace[273] c_ace[274] c_ace[275] c_ace[276] c_ace[277] +0 490 +1 110 633.523 94.3568 17.1047 76.4593 415.72 84.4227 -10.3669 -22.6058 87.5916 -41.6713 14.2935 27.1643 -8.83449 45.539 0.0366547 86.1936 355.524 -9.24098 -4.62886 253.597 -3.89066 -13.051 12.2233 -13.4372 -10.3377 26.0544 5.90582 -29.6058 -123.735 14.1872 28.3718 -2.68723 -36.2963 17.3347 -7.52363 4.01093 21.5542 -150.176 49.1667 106.382 -20.5777 75.3918 12.7539 111.763 -61.6208 56.1044 -51.3912 -31.1257 -21.8452 31.6135 -16.4593 -46.7547 8.4484 -2.80826 -1.50179 2.5356 12.6505 -3.37075 15.4133 24.4245 -17.8721 -68.7976 3.20778 -20.9546 -24.8015 -0.708063 16.8285 25.2232 -31.5949 10.7568 -4.07798 17.5517 -24.71 -27.9933 19.8963 -19.4328 298.998 84.3421 43.4922 99.149 -70.3035 176.822 52.3432 -31.6464 42.3741 32.5112 80.4142 -51.6128 67.8793 -73.6841 197.193 8 1.52077 0.095878 25.0149 2.59269 17.1047 76.4593 0.0761166 0.811713 -1.30106 -0.00129584 0.111902 -0.0021799 0.0422313 -0.251236 0.0584668 -0.0193025 -0.01626 0.0327912 -0.206827 0.9039 -0.0332059 3.01698 -1.13334 0.00387133 6.40468 4.05506 0.00624923 -0.0527616 -2.82349 22.795 -2.42196 0.0251087 0.553167 6.5214 -0.15104 -5.49453 -0.0802715 0.913327 -0.334148 0.371537 0.101263 -0.293913 0.00293122 -14.9572 -0.0221277 -0.438643 -0.00945227 1.15262 0.325325 -0.0479565 -0.0576038 -2.21483 0.0504201 0.051311 -2.85708 -0.252836 -0.147617 0.195349 0.0168697 -0.173079 -0.290278 -0.122316 0.657922 -0.00989331 -3.23063 -0.0649301 -0.0401127 -0.245247 0.0816411 -0.366203 2.08759 -0.808832 -1.27672 0.0275694 0.976563 0.0311902 44.7557 2.54472 4.6908 0.618434 -0.591044 6.06674 0.00299428 0.0388937 0.216562 0.685479 0.0208758 -0.0286578 0.0927639 -0.175599 1.58264 43 415.72 25.0149 84.4227 2.59269 112.55 11.2771 19.2603 -1.22032 27.1819 -1.40836 -1.25201 -13.3198 -0.183368 -1.72716 2.25056 0.669987 -1.28528 -11.5485 4.82046 32.6867 -23.7778 -1.32993 -3.13072 0.649938 -11.5006 -2.62278 5.10788 0.548024 219.188 10.0932 -110.928 30.4814 0.276871 -8.57081 -42.4809 -0.452488 0.144132 -0.275055 1.20694 -20.9224 3.34223 -0.36309 69.1926 28.1069 -0.140381 1.18327 3.75663 4.05765 -1.06858 -3.14327 -1.12221 0.910422 2.88772 10.5331 -4.93061 -11.8662 3.67678 -3.34633 -0.0501799 0.46571 -1.69755 6.2103 -3.44241 -3.91512 26.2264 -1.55167 1.4658 -0.808121 0.272213 6.48859 2.32689 -2.05316 2.03777 1.25839 0.0492927 -7.12287 381.036 52.2256 27.4835 34.5144 -28.0414 61.287 8.66705 -6.46335 7.84842 5.0521 6.94067 -5.54313 6.83136 -6.70729 14.1039 0 +2 0 0 0 0 0 0.019982 -0.390456 1.12581 1.89207 0 0 -0.857617 -2.61627 0 -6.01795 -0.158418 0 0 0 -0.324065 -7.22232 0 0 0 0 0.667987 0 0 1.00017 8.66857 -1.52916 0 -0.312051 0 0 0.506707 -0.143287 0 0 -2.56201 -2.77154 0 0 -0.537342 -11.0941 0 -1.29022 2.76894 -0.277586 0.796272 0.890361 0.341017 0 0.787035 -0.300377 -0.356484 -0.855919 0.32443 -1.06247 0 0 -0.397307 5.54335 0 -0.407508 -0.911793 -1.37427 0 0 0 0 0.867341 -0.994681 0 2.84811 -0.402481 0 0 0 -3.22735 0 2.45634 -10.0229 0 0.16544 -1.18401 -5.69172 0 1.26917 -4.56391 7.1909 -20.1025 0 0 0 0.241195 0.0639042 0 0 0 -0.0459657 0.106911 0 -0.00389019 0 0.0158326 0.140044 0 0 0 0 0.225331 0 0.0323058 0 0.820656 0 -0.413236 0.587186 0 4.10491e-05 0 0 0.109714 0.0038492 0.159886 0 0.0169011 0 0.00532619 0.256212 0.00602296 0.0759359 0.0641599 0 0.000798758 0 0 0 0.00083204 0 0 -0.0094609 0.00781647 0.485082 0.0136809 0 0 -0.0263238 0 -0.00852847 0 0 0.0410094 0.077558 0.218977 -0.0752142 0 0 0.0530495 -0.0472733 -0.0351926 0.451547 -0.19332 0 0.123094 0.0203026 -0.0339193 0 0 0 -3.49898 0 -0.330478 -0.485167 0 -0.0275285 -0.0415255 -0.510493 0 -0.00307907 -0.00455077 -0.0352637 -0.0835054 0 0.019982 0.241195 -0.390456 0.0639042 -0.759856 -0.181214 1.03324 -1.30879 1.381 0.0063192 0.0219018 1.28024 -0.0002765 0.186461 0.160765 0.0231344 0.0116011 0.122308 -0.781495 -0.972351 -1.97601 -0.256802 0.606571 -0.0875305 0.30287 0.193061 0.128699 -0.0127352 -11.2867 -0.426996 -5.63257 -3.23686 0.0240278 -2.30602 -3.41254 0.0901742 -0.00727082 -0.139421 -0.0691262 1.12675 0.222273 0.0334162 -6.47851 -1.95093 -0.000893356 -0.0376847 -0.29641 -0.0975724 0.459619 0.550056 -4.23274 0.861876 0.0322437 -1.84277 -0.535132 -0.693252 0.39943 -0.607263 -0.496174 -0.341922 -1.2043 0.716828 -0.284252 -0.150106 -14.3868 0.29594 -0.691005 0.0741957 -0.0514309 0.0194368 0.191708 0.110249 -0.0389362 -0.203518 -0.053956 -0.39594 17.8276 -4.5702 9.57124 1.13339 -0.796077 1.31363 -0.24636 0.488727 -0.940132 1.38886 -0.0576275 0.192689 -0.428387 0.667578 -1.20912 0 +3 0 0 0 0 0 0.0808912 0.121547 -0.468948 -2.02778 0 0 -0.0211098 -0.110122 0 0.298021 -0.137775 0 0 0 -0.263913 0.537545 0 0 0 0 -0.476959 0 0 -0.292499 -2.83655 0.0284581 0 -0.289833 0 0 -0.17166 -0.0377945 0 0 -0.34874 0.341692 0 0 -0.179071 -0.0306183 0 0.0729532 -0.775892 -0.182881 0.178164 1.92643 0.269242 0 0.232228 -0.526754 -0.0367362 -1.32587 0.356648 0.304077 0 0 0.47708 0.850274 0 0.945601 -0.298679 0.109121 0 0 0 0 -0.199498 0.249846 0 -1.00804 0.646612 0 0 0 2.5315 0 -0.239321 4.86577 0 0.243573 0.0822844 4.38627 0 0.773894 1.24408 -1.78086 9.02317 0 0 0 0.0385285 0.016165 0 0 0 -0.0682327 0.0851058 0 -0.00878235 0 0.00824645 0.0229843 0 0 0 0 0.043077 0 0.00481633 0 0.115596 0 -0.404257 0.280861 0 -0.0200741 0 0 -0.560308 0.00143565 0.0942226 0 0.0201131 0 0.00419684 0.0452706 -0.112095 0.0332536 0.0209025 0 0.000341982 0 0 0 0.000965924 0 0 -0.00335762 0.00614112 0.140695 0.0200946 0 0 -0.0345502 0 -0.00670051 0 0 0.0320887 0.0351037 0.399265 -0.0186175 0 0 -0.0231112 0.0555032 -0.0687172 0.375625 -0.181111 0 -0.13627 -0.0146118 -0.140983 0 0 0 -0.383753 0 -0.10718 2.09452 0 -0.00349675 0.124709 0.0499567 0 -0.000849806 0.0181515 -0.1053 1.27839 0 0.0808912 0.0385285 0.121547 0.016165 0.0396667 0.107017 0.181988 -0.271861 0.283221 -0.0105426 -0.040489 -0.263158 -0.00303637 -0.0892919 0.0372701 0.0966975 -0.0478863 -0.0194905 -0.137559 0.0814059 0.0287002 -0.120067 -0.158307 0.00694866 -0.0952346 -0.157797 0.574322 0.0239262 -0.651573 -0.0681955 -0.85839 0.424409 0.0070428 -1.22533 -0.210788 -0.0368793 -0.00620844 -0.0149489 -0.0107778 -0.998628 0.0709918 -0.0252828 0.87795 -0.205236 -0.0093014 -0.027996 0.0898784 0.0930962 0.053969 -0.233099 -1.24983 0.032921 0.0470698 1.19676 -0.0965457 -1.05756 0.0766464 0.238181 -0.359521 -0.135526 -0.523919 0.820447 -0.140108 0.32224 7.181 -0.0147846 -0.109635 0.0451754 0.0674679 0.455292 0.24586 0.074375 0.0172685 0.137225 -0.0730147 -0.222617 2.71688 0.0287363 3.08648 0.233067 -0.106681 2.46371 0.0531921 -0.105177 0.116088 1.00822 0.00918331 -0.0242064 0.375106 -0.420228 1.24039 0 +4 0 0 0 0 0 0.0452898 -0.063578 0.368607 0.806365 0 0 0.228512 -0.160687 0 -0.712275 0.0279078 0 0 0 -0.0373852 -4.63921 0 0 0 0 0.360022 0 0 -0.24615 -0.451968 -0.173302 0 0.589696 0 0 0.18565 0.0167827 0 0 -0.0138997 -2.61012 0 0 -0.100685 -0.52385 0 -0.925998 -0.498529 0.818834 0.177402 -0.748757 0.209067 0 0.118052 -0.165513 0.648154 -0.648077 -0.854859 -0.992861 0 0 -0.0916018 7.60687 0 -0.877177 -0.186496 -0.681617 0 0 0 0 0.0259129 -0.225929 0 3.61376 -2.02877 0 0 0 -0.163508 0 0.313512 0.935185 0 -0.103632 -0.0491085 0.402943 0 0.553813 -0.845487 2.13829 -3.82208 0 0 0 -0.0138239 -0.00430116 0 0 0 0.0192541 -0.0135089 0 0.00290607 0 -0.00122098 -0.00158384 0 0 0 0 0.0715531 0 0.00921959 0 0.00644316 0 0.10678 -0.0727613 0 -0.00176368 0 0 -0.127885 -0.000127066 -0.0209269 0 -0.00301229 0 -0.000557267 -0.0422624 -0.0152574 -0.00376812 -0.00871224 0 -4.89132e-05 0 0 0 -0.000131848 0 0 0.000268561 -0.000769474 0.0270579 -0.0203729 0 0 -0.00204804 0 0.000839564 0 0 -0.0107921 0.000602497 0.00595497 -0.00104256 0 0 -0.143447 0.0416175 0.00609016 -0.32548 0.192233 0 -0.216201 -0.010181 -0.000871387 0 0 0 -0.0381932 0 0.00679639 0.526047 0 -0.000823092 0.0394045 0.0669008 0 2.52638e-05 0.00478025 0.00771428 0.185085 0 0.0452898 -0.0138239 -0.063578 -0.00430116 0.140598 0.00606572 -0.0610349 0.19885 2.05121 0.000876118 -0.0471416 -0.0526951 0.000336591 -0.00121708 -0.0104564 0.193935 -0.0149982 -0.00282643 -1.79166 0.728803 -0.195444 0.0802618 0.0368793 -0.261541 -0.123188 0.0695546 1.54961 0.00329416 2.3224 -0.199651 0.303343 0.254843 -0.00172064 0.593824 -0.0687065 0.00609889 -0.0074905 0.0453569 -0.0512152 0.475151 0.255687 0.0124658 0.817688 -1.5711 -0.00600475 -0.0293641 -0.30932 0.0892705 0.1872 0.920629 0.724226 -0.298566 -0.0825022 2.02287 0.0318566 -0.121482 0.0948204 -0.0567802 -0.0548485 0.0134769 0.0320435 -0.123632 0.0904469 -4.41836 -17.7616 -0.144281 -0.0750469 -0.0885355 -0.10918 -0.370314 -0.0387531 0.0262936 -0.000286176 -0.111368 0.125043 -0.16848 -0.960107 0.220408 -2.55308 -0.0669897 0.484527 -1.51276 0.0111375 0.0484268 -0.164428 -0.157305 0.00133172 0.0666093 -0.203816 0.371535 -0.752794 0 +5 0 -0.232794 -0.0616963 0.0467445 0.245503 -0.388057 -0.0359665 0.361907 1.38242 0.436281 -0.731379 0.115134 0.192089 -0.00173486 1.59436 -0.0435745 0.813172 4.11494 -0.102815 -0.0785589 2.69157 -0.0059298 0.147922 0.0058826 -0.186312 0.0302869 0.146664 -0.0251779 -0.217775 -1.36373 0.367893 0.051322 -0.370522 0.388197 0.0711514 -0.0568727 0.00652389 -0.15996 1.50343 0.373454 1.22771 -0.0100066 0.577914 0.0405684 1.27307 -0.0258927 0.499639 -0.475884 -0.653669 0.0299502 -1.51566 -0.35372 10.7643 0.0174314 -0.0518855 0.388459 4.06937 1.28049 0.950391 0.227165 -0.0240726 0.0280116 -1.93941 1.90871 1.46363 1.42964 0.493565 0.560752 -0.465615 -0.0853722 0.339786 -0.392852 -0.315104 -0.0763739 0.0482031 -0.385239 0.95256 -3.51566 1.92154 -4.4012 -1.71921 0.460434 0.324988 0.246866 -0.440832 1.45955 -2.218 0.0101897 -0.0766934 0.281728 -0.362182 1.41046 0 0 0 0 0 0.0467445 0.245503 0.00327173 0 0 0 0 0.000403883 0 0.00727051 0 0 0.00319542 0.0100245 -0.00624784 0 -0.000288429 0.0811033 0.0266167 0 0 -0.150209 0.000497364 0 0.0221567 1.00958 0 0 -0.0153113 0.312941 0 0.201718 0 -0.012899 0 0 -0.000988822 0 0 1.20553 0.0085498 0.06385 0 0.0679282 -0.0988161 0 0 0.37891 0 0.00613803 0.222204 -0.00196321 0 0 -0.00606188 -0.00518758 0 0.0154639 0.0280367 0.00847291 -1.06796 0.0174188 0.0194479 0 0.00946217 -0.0868087 0.175315 -0.0696412 0.077349 0 0 0 -10.2073 -0.676228 -0.689285 -0.0469851 0.0249716 -0.710714 -0.00250696 0.00114308 -0.0361361 0.00749362 0 0 0 0 0 0 -0.388057 0 -0.0359665 0 0 0 0 0.55978 0.06439 0 0 -0.848303 0 -0.107725 0 -0.0315963 0 0 0.151942 0 0.439286 0.177624 -0.387447 0.0207182 0 0 -0.22034 0 1.59205 0 0.271239 0.880185 0 1.27732 0.42582 -0.0501712 0 0.0713995 0 0 -0.0101758 0 1.30683 -0.376565 0 0 -0.0208858 0 0 -0.21399 1.26361 -0.174739 0 0.874533 0 1.14698 -0.14357 0.150074 0.0131105 0.136659 0.567175 -0.591667 0.0549897 0.935337 10.7712 -0.152709 0 0 0 0.347913 -0.013083 0 0 0 0 -0.249851 1.40239 3.27376 -4.33282 0.122262 -0.148392 0.150759 0.248971 -0.29801 0.493138 -0.677066 0 0 0 0 0 0 +6 0 0.408405 0.357908 0.0210414 0.069813 0.0121382 0.0988808 -0.0843766 -1.41271 0.139666 -0.0543387 0.0711436 0.522334 -0.00333143 1.14947 -0.0519767 1.56494 5.98634 0.0345361 -0.136925 3.40896 0.0224456 -0.266276 0.0048031 -0.0398739 -0.35053 0.397117 0.0528194 0.218718 0.183796 0.316476 0.0278382 -0.291541 -0.916301 0.197242 -0.0286349 0.0019955 0.189717 -3.57787 0.0817919 1.76818 -0.0184052 0.98968 -0.000744677 1.18492 -0.0784131 0.931365 0.27197 -0.827576 0.0559693 0.280085 -0.0454733 -6.97518 0.208065 -0.142803 0.0309335 -3.38332 0.646293 -0.484123 0.0835808 0.031293 -1.51917 -3.50286 -0.0703177 0.148122 -0.27325 0.101731 -0.20685 0.172928 -0.0456868 0.0342223 -0.580803 -0.267025 -0.327687 -3.95786 -0.177088 0.0320029 7.85294 -0.301634 4.79276 1.66839 -1.24125 2.597 -0.076337 0.486422 -1.19437 2.8777 0.0308582 -0.0258146 0.00438473 -0.0195124 -0.190093 0 0 0 0 0 0.0210414 0.069813 0.00390804 0 0 0 0 0.00070451 0 -0.0271846 0 0 0.001742 0.00793944 -0.0457844 0 -0.00571608 0.0686257 -0.222931 0 0 -0.0218148 0.000354441 0 -0.0173528 1.20073 0 0 -0.000884387 0.281065 0 -0.0165385 0 -0.00530048 0 0 -7.54096e-05 0 0 0.138385 0.014522 0.038599 0 0.0787747 -0.0531688 0 0 0.198838 0 0.00739533 -0.214807 -0.0200106 0 0 -0.00320281 -0.00625019 0 0.00381666 -0.0950474 0.0101133 -1.06633 -0.0155055 -0.00125055 0 0.016052 0.0366109 0.0759911 -0.102132 0.164446 0 0 0 -0.903147 -0.154794 0.785184 -0.00362794 0.0168752 -0.196163 -0.00113713 0.00445665 -0.053517 0.240793 0 0 0 0 0 0 0.0121382 0 0.0988808 0 0 0 0 -0.296856 1.53245 0 0 -0.0367949 0 0.000503111 0 0.0515035 0 0 0.140467 0 -0.168169 -0.126965 -0.00394148 0.0412205 0 0 0.421519 0 7.82274 0 -2.47619 0.605828 0 -0.70078 -0.663598 -0.000368307 0 -0.0586195 0 0 0.184372 0 2.16301 0.0488073 0 0 0.0711663 0 0 -0.0917698 0.736499 0.265291 0 0.248043 0 0.772304 0.155296 -0.205645 0.522816 0.0618484 0.166679 -0.251909 0.348489 -2.51221 -12.66 -0.0722265 0 0 0 0.078496 -0.0637418 0 0 0 0 -0.500808 8.23373 -0.404815 2.7087 0.872253 -0.818858 1.14246 -0.0226735 0.0453883 -0.0645815 0.47073 0 0 0 0 0 0 +7 0 -0.450487 0.675941 0.0219074 0.0382986 -0.0385997 0.194149 -0.909163 -1.10295 0.276846 -0.0273133 -0.203853 0.67938 -0.00102845 -0.730428 -0.0387389 2.44191 7.22677 0.0557517 -0.0780566 3.6871 0.0250138 -0.98717 0.00321615 -0.0476455 -0.856587 0.892877 -0.0277073 -0.518669 -0.126089 0.355706 0.0304564 -0.448159 -1.66909 -0.0730512 -0.70738 -0.0192773 0.133726 -3.04269 -0.182105 1.87127 -0.00917848 1.20036 -0.0152754 -2.26663 -0.0790092 0.931853 -0.343181 -0.904086 -0.00982556 0.863377 -0.307518 -11.0486 -0.0191785 0.0186644 0.177189 -0.677554 0.492212 0.788317 -0.0289736 -0.0137184 1.44049 -3.80813 0.568879 1.41253 -0.199002 0.053122 -0.731214 0.0336917 -0.0621426 -0.444531 0.631703 -0.0729355 -0.432256 -0.125489 0.201487 -1.63652 9.58292 0.803408 4.39175 0.737338 -0.339191 2.94042 -0.100519 -0.11011 0.522289 -0.181547 0.0310929 0.0260378 0.0656683 0.0785414 0.130409 0 0 0 0 0 0.0219074 0.0382986 0.00135175 0 0 0 0 0.000170666 0 -0.0142318 0 0 0.00156076 0.00496401 -0.0166897 0 -0.00218165 0.0562797 -0.105709 0 0 -0.0876842 0.000247232 0 0.0118746 0.873087 0 0 -0.00541252 0.230771 0 0.104156 0 -0.0059067 0 0 6.39643e-05 0 0 0.417075 0.00362105 0.0310469 0 0.0280098 -0.0604151 0 0 0.00172145 0 0.00253747 -0.503281 -0.0209521 0 0 -0.0029646 -0.00214456 0 0.00134368 0.0440069 -0.00483301 -0.74161 -0.0313344 -0.0103974 0 -0.00399341 0.0918387 0.112916 -0.0450966 -0.155518 0 0 0 -3.14068 -0.252856 0.308595 -0.0137953 0.00620799 -0.200916 -0.00123296 0.000416936 -0.016403 0.133891 0 0 0 0 0 0 -0.0385997 0 0.194149 0 0 0 0 -0.0967718 0.275058 0 0 -0.00415843 0 -0.0074572 0 -0.0288431 0 0 0.36345 0 -0.798876 -0.0304463 0.0691981 0.0395686 0 0 -0.215199 0 1.70101 0 -1.30977 -0.279605 0 -0.153047 -1.01579 0.00669675 0 -0.0157271 0 0 0.0281333 0 -0.133037 -0.252636 0 0 -0.029346 0 0 -0.115157 -3.02996 0.107171 0 0.507548 0 -0.193303 -0.00682507 -0.0233335 -0.122144 -0.0384146 -0.155622 -0.131978 -0.0350041 -0.793717 -5.44704 0.0515272 0 0 0 0.117069 0.0692092 0 0 0 0 -0.120104 -0.129237 0.00390137 -0.233918 0.300365 -0.505751 0.912965 0.0421739 -0.0157202 -0.0137363 0.0429891 0 0 0 0 0 0 +8 0 0.584324 0.29765 0.0636737 0.287644 -0.248735 0.153581 0.135495 1.68446 0.434626 -0.532894 0.19315 2.09657 -0.00824769 3.09109 -0.0402718 2.47489 11.7432 0.0580193 -0.0720326 4.44753 0.0556761 0.0044409 0.0115029 -0.0994597 0.191177 0.540984 0.0373197 -0.268626 -0.325856 0.781959 0.0708024 -0.111851 0.444128 0.362564 -0.178766 0.0302632 0.0502902 2.09309 0.559554 1.91428 -0.0452547 1.50719 0.0867806 8.02709 -0.212336 0.795289 -0.235012 -0.139933 -0.226286 1.54703 -0.0504195 -0.651988 -0.00941635 -0.254261 0.0670759 2.0856 -0.26459 -0.124975 -0.0150691 0.0441198 0.101082 -1.75331 -0.866645 0.711193 -0.39535 0.825997 -1.23592 -0.313545 -0.096901 -0.0800771 -0.73826 0.377743 -0.388239 -0.810143 0.437346 -2.30345 -5.72156 0.335825 -4.53023 -0.989095 -0.783149 0.0886175 -0.0237216 -0.370558 0.790827 -1.11686 0.112021 -0.150298 0.276383 -0.505962 0.584471 0 0 0 0 0 0.0636737 0.287644 0.00239925 0 0 0 0 2.23618e-05 0 -0.00586242 0 0 0.00314778 0.0104555 -0.00860371 0 -0.000874741 0.119954 -0.0577262 0 0 0.0565586 0.000542178 0 0.00935168 1.76942 0 0 0.0128946 0.47395 0 0.166484 0 0.0292118 0 0 0.00463587 0 0 0.987316 0.000677942 0.0625224 0 0.0473443 -0.123853 0 0 0.244484 0 0.00352773 -0.541365 -0.0133744 0 0 -0.00643665 -0.00444539 0 0.0074196 0.0371482 -0.00166275 -1.17522 -0.0437778 0.0144619 0 0.000700365 -0.0176131 0.0384149 -0.0469807 -0.0824571 0 0 0 -8.33186 -0.631117 -0.246891 -0.039225 0.002872 -0.414406 -0.00260963 -0.000219183 -0.0253829 0.0647454 0 0 0 0 0 0 -0.248735 0 0.153581 0 0 0 0 0.302408 1.75888 0 0 -0.543828 0 -0.0685075 0 0.0737097 0 0 0.492553 0 0.656941 0.111571 -0.147128 0.0607748 0 0 0.60657 0 13.9762 0 1.09502 1.59453 0 0.648153 0.981894 -0.0173027 0 0.053953 0 0 0.203376 0 4.58314 1.16437 0 0 0.164221 0 0 -0.129804 -0.277726 -0.167073 0 3.31741 0 -0.283863 -0.150368 0.144605 -0.232226 -0.0276781 -0.105026 -0.0673972 -0.0434842 -1.37371 7.74037 -0.0323949 0 0 0 0.571723 -0.00151934 0 0 0 0 -0.683725 3.8939 2.26122 -1.15804 -0.363648 0.512626 -0.513237 0.197519 -0.178479 0.23702 -0.226405 0 0 0 0 0 0 +9 0 0.154188 0.535924 -0.0267739 -0.0213723 0.0488454 0.284284 -1.7374 -3.06944 -0.25225 0.42952 -0.329674 0.330665 0.00774833 -0.182294 0.0316744 0.960508 1.49145 0.0159877 0.109613 -2.11335 -0.0299366 -0.827103 -0.00981428 0.049616 -0.966205 0.512866 -0.101995 -0.4639 -0.213681 0.2547 -0.0543654 0.131154 -1.73567 -0.112997 -0.682029 -0.0319448 -0.331141 -4.44741 -0.481056 -0.394358 0.0456259 -0.583577 -0.0597516 -0.241779 0.223269 0.305046 -0.372758 0.496298 0.117518 0.132261 0.680502 2.77461 -0.219732 0.260694 0.10241 2.33937 0.526661 0.675451 -0.257438 -0.116347 1.76258 -0.819692 2.99162 1.50207 0.378214 -0.0494956 0.0127507 -0.395871 0.110725 0.527135 0.955675 0.0918825 0.100926 0.180613 -0.149921 0.543808 14.1746 -0.138737 9.15513 0.596944 0.615138 3.68907 0.135092 0.406897 -1.0026 3.80971 -0.117789 0.129731 -0.143868 0.428708 0.383268 0 0 0 0 0 -0.0267739 -0.0213723 0.00393585 0 0 0 0 0.000648707 0 -0.0190722 0 0 0.00215017 0.00205954 -0.0137142 0 -0.00145775 -0.0306431 -0.164115 0 0 -0.143701 8.55657e-05 0 0.0398018 0.716856 0 0 -0.017334 0.0637653 0 0.151735 0 -0.0360641 0 0 -0.00487022 0 0 0.625088 0.0126608 0.0444846 0 0.0765527 -0.0485864 0 0 0.288534 0 0.00867682 0.1251 -0.021123 0 0 -0.00443442 -0.00538783 0 0.0172517 -0.00800338 0.00316036 -0.560336 0.037698 -0.000963914 0 0.0103024 0.0976422 0.426003 -0.146628 0.0500885 0 0 0 -5.87273 -0.425038 0.252088 -0.0280169 0.00551441 -0.322474 -0.00154028 0.00285888 -0.0430216 0.239943 0 0 0 0 0 0 0.0488454 0 0.284284 0 0 0 0 -0.402137 -1.04126 0 0 0.424921 0 0.060032 0 -0.0768639 0 0 -0.00410363 0 -0.464142 -0.143231 0.233608 0.00949784 0 0 -0.629343 0 -0.546806 0 -1.67645 -0.354268 0 -0.951349 -0.690361 0.031077 0 -0.0525322 0 0 -0.126852 0 -1.0584 0.500232 0 0 0.0885047 0 0 -0.171789 -1.55571 0.110432 0 -2.42795 0 -0.26519 0.188239 -0.23953 0.192753 -0.0846432 -0.295572 0.0577574 0.199748 2.27606 2.62445 0.102034 0 0 0 -0.0936066 -0.081837 0 0 0 0 0.294643 5.88268 -1.59725 3.79852 0.763623 -0.771099 1.01195 -0.162746 0.183131 -0.276591 0.559684 0 0 0 0 0 0 +10 0 0.0173956 -0.482869 -0.0118994 -0.0837503 -0.0470194 -0.128835 0.803505 1.0553 -0.0754237 -0.375026 0.0226336 -0.244588 0.00093001 0.339605 -0.00259327 -1.62261 -3.57304 -0.124053 -0.0161114 2.50218 -0.0488618 0.593496 -0.00143811 -0.150603 0.527207 -0.630259 -0.0541153 0.505202 0.994817 -0.28055 -0.00988343 -0.125648 1.22488 -0.128922 0.408986 -0.00390139 -0.27205 2.77858 -0.0512671 0.64386 0.00455731 -1.0159 -0.0159992 2.0944 0.0154753 -0.234041 0.69215 -0.229168 0.0696428 -0.838768 -0.11053 7.70174 0.0131702 -0.000168859 -0.0256962 1.95536 0.671473 0.55148 0.270033 0.0042576 -1.93902 -2.78855 -1.14775 -1.29658 0.472709 -0.977338 0.750232 -0.31154 0.00679921 0.247682 0.0264821 -0.140356 0.295913 -0.63911 -0.4447 1.37073 -8.04425 -0.262402 -3.16357 -0.563999 0.722309 -4.49167 0.674665 -0.34241 0.254433 -2.60695 -0.00816423 0.01372 -0.276294 0.0586189 -1.78435 0 0 0 0 0 -0.0118994 -0.0837503 -0.000498494 0 0 0 0 -1.52335e-06 0 -0.000363752 0 0 -0.000619375 -0.00154712 0.00165975 0 3.01919e-05 -0.0326659 0.0130897 0 0 0.0867996 -7.52074e-05 0 0.00258961 -0.518609 0 0 0.0111143 -0.16119 0 0.00956524 0 0.00847656 0 0 0.00102077 0 0 -0.137653 -0.000194711 -0.0130552 0 -0.0120778 0.0187154 0 0 -0.147885 0 -0.000855879 0.00806315 0.00387802 0 0 0.000972134 0.000827162 0 -0.00588206 -0.0607538 -0.00495171 0.282956 0.0122181 -0.00147389 0 0.000154639 0.0114193 -0.0916798 0.000741508 -0.0663118 0 0 0 1.12659 0.0905059 0.0337027 0.00495559 -0.00342695 0.0868583 0.000429701 -0.00101167 0.0135454 -0.0350344 0 0 0 0 0 0 -0.0470194 0 -0.128835 0 0 0 0 0.0690666 -1.01289 0 0 -0.225003 0 -0.034553 0 -0.0707201 0 0 1.03808 0 0.463917 0.0255822 -0.189126 0.130841 0 0 -0.531027 0 0.657536 0 0.748684 -0.00273801 0 0.225839 0.459011 -0.0264273 0 0.00036115 0 0 -0.136818 0 0.268223 1.79563 0 0 0.228033 0 0 -0.171953 0.758139 0.154944 0 -0.226404 0 0.452418 -0.141217 0.0363962 0.151569 -0.0455233 -0.0629108 -0.125153 0.0454194 2.10703 8.84509 0.0387567 0 0 0 0.235923 -0.0194963 0 0 0 0 0.0361043 -11.0068 0.46528 -2.75474 -0.0113142 -0.227614 0.140126 0.0364532 -0.0868196 0.196104 -0.184286 0 0 0 0 0 0 +11 0 -0.0693869 -0.0499976 0.0748276 0.247259 -0.342451 -0.0167211 0.451829 1.70015 0.556577 -1.09629 0.45859 0.782393 -0.0214446 2.06355 0.12846 0.139865 -0.633913 -0.219971 0.194682 -1.20466 -0.0271918 0.0763624 0.0323794 -0.249373 0.156305 0.140994 0.0243123 -0.279916 -1.59776 0.581485 0.133276 0.780227 0.054433 0.155025 -0.00890998 0.111441 0.159935 0.343293 0.792059 0.0123761 -0.0592228 1.03002 0.19089 2.66989 -0.0830764 0.308574 -0.650271 1.3518 -0.274166 -1.18262 -0.336313 7.48269 -0.468446 0.193032 0.257476 2.62296 0.926927 1.40077 0.337393 0.0445729 -0.538727 -3.69065 0.466801 -0.126965 0.702907 -0.00651531 0.391095 0.00546422 -0.227554 0.489555 -0.20343 0.478364 -0.382356 -0.366818 -0.673711 2.40646 -1.36542 2.73117 -4.54957 -1.51923 0.369952 0.106784 0.540714 -0.553168 1.91297 -2.78226 0.0779878 -0.411016 0.793886 -1.1737 1.69019 0 0 0 0 0 0.0748276 0.247259 0.00525403 0 0 0 0 0.00110809 0 -0.00723532 0 0 0.00364596 0.0186878 -0.0605195 0 -0.00799859 0.189166 -0.0612951 0 0 -0.169939 0.000888124 0 0.0695598 2.02629 0 0 -0.0105701 0.65966 0 0.352367 0 -0.0408651 0 0 -0.0020194 0 0 1.53213 0.023467 0.0744586 0 0.109254 -0.0966191 0 0 0.294938 0 0.00985245 0.181615 -0.0238228 0 0 -0.00687342 -0.00832684 0 0.0157197 0.0301861 0.0124275 -0.0203047 0.039244 0.00269476 0 0.0191249 -0.085905 0.548129 -0.0958675 -0.188713 0 0 0 -12.3513 -0.747986 -0.469465 -0.0555879 0.0728934 -1.2495 -0.00276318 0.00292839 -0.0555585 0.080557 0 0 0 0 0 0 -0.342451 0 -0.0167211 0 0 0 0 0.393571 0.809762 0 0 -0.923945 0 -0.116223 0 0.0381025 0 0 -0.16385 0 0.494512 0.149359 -0.370405 -0.0241201 0 0 0.27596 0 2.54857 0 0.364494 0.923363 0 1.195 0.407333 -0.0479318 0 0.0436596 0 0 0.102034 0 1.62258 -0.564493 0 0 -0.0519929 0 0 -0.664547 1.72801 -0.545285 0 1.76486 0 0.315445 -0.0169185 0.234796 0.569026 0.125845 0.115081 -0.269356 0.0640097 0.0472039 4.92086 -0.192473 0 0 0 0.612174 0.0231085 0 0 0 0 -0.317627 2.96093 3.07744 -3.33541 -0.137062 0.343769 -0.524661 0.286786 -0.326415 0.527595 -0.689124 0 0 0 0 0 0 +12 0 1.08763 -0.339703 0.0929581 0.0620113 0.0618232 -0.244834 1.09338 1.1106 0.501591 -1.66018 0.280322 -1.07438 -0.0410199 -1.1351 -0.0353698 -1.82408 -4.17528 -0.34578 -0.197758 -1.78141 -0.0978375 0.818244 0.0516006 -0.553804 0.762147 -0.744218 -0.0464321 0.38465 -0.551802 -0.568304 0.184114 -0.171205 0.984223 -0.0881162 0.698118 0.0594257 -0.00941733 -0.462672 0.636543 -1.28578 -0.152424 0.59185 0.167029 -2.3867 -0.486016 -0.934852 0.0678156 -0.613687 -0.338627 -0.557586 -0.76854 5.06392 0.344794 -0.186407 0.332673 0.958802 0.438991 0.00423121 0.775857 0.281996 -2.05366 -0.292218 -1.78961 -1.25907 0.505317 -0.244556 0.468115 -0.422644 -0.262368 -0.0731759 -0.491987 0.369057 -0.0129571 0.725302 -0.647967 1.06822 0.909611 1.33353 0.127095 1.92448 -1.7992 2.72689 1.70542 -1.1512 1.632 -0.275263 0.456247 -0.528363 0.516067 -0.597346 0.583723 0 0 0 0 0 0.0929581 0.0620113 -0.00112013 0 0 0 0 0.000192605 0 -0.0498714 0 0 -0.000243409 0.0145843 -0.146375 0 -0.0194829 0.0471023 -0.365096 0 0 -0.100086 0.000668821 0 -0.0188539 -0.78145 0 0 -0.010787 -0.083534 0 -0.0776348 0 -0.0274702 0 0 -0.00119387 0 0 -0.673992 0.00415405 -0.00162333 0 -0.0238746 0.00257757 0 0 -0.0934623 0 -0.00208484 -0.934988 -0.0232388 0 0 0.000548819 0.00176201 0 -0.00162163 0.0272933 -0.00503628 -0.453494 -0.074179 -0.0389019 0 -0.0110741 0.286128 0.099174 -0.0570806 0.0350712 0 0 0 5.72741 0.259743 1.69934 0.0264055 -0.0126404 0.386278 0.000387175 0.00318966 -0.0261531 0.397885 0 0 0 0 0 0 0.0618232 0 -0.244834 0 0 0 0 0.297952 1.42233 0 0 -0.490541 0 -0.0649882 0 0.0278932 0 0 -0.213933 0 0.41794 0.0230929 -0.20806 -0.0245706 0 0 0.225301 0 1.43929 0 -2.32828 -0.0767548 0 0.162597 0.0516616 -0.0277963 0 0.0432921 0 0 0.170198 0 0.0191173 -0.810889 0 0 -0.105753 0 0 -0.149354 0.167227 -0.0662433 0 1.26226 0 0.0865308 0.110864 -0.0101787 0.277215 0.113139 0.162118 -0.163754 -0.0303093 -1.4154 -1.3407 -0.117187 0 0 0 0.233394 0.0539795 0 0 0 0 -0.387902 13.0631 2.4701 -0.519182 0.780618 -0.621508 1.00488 0.175551 -0.169294 0.255116 -0.121288 0 0 0 0 0 0 +13 0 -0.17679 -0.466342 -0.0371808 -0.0858168 0.0607652 -0.040671 0.304687 1.15219 -0.247871 -0.926725 -0.315125 0.711885 0.0128282 1.3673 -0.105015 -2.06737 -6.37106 -0.241063 -0.107423 3.68447 -0.0998675 0.559434 -0.0178078 -0.301294 0.488495 -0.70835 -0.140282 0.410849 0.829927 0.225789 -0.0690255 -0.669395 1.20021 -0.631643 0.273392 -0.0806937 -0.693694 2.68222 -0.521829 1.74984 0.0413415 -2.99388 -0.130215 4.22726 0.0991218 0.644406 0.475722 -0.822277 0.255311 -1.72139 -0.43797 6.03403 0.191344 -0.065993 -0.119214 -2.84996 0.327311 0.564721 0.41989 -0.0563902 -0.649923 -4.1157 -0.749905 -0.93217 1.20768 -0.529732 0.389171 -0.831007 0.109998 0.4145 0.266359 -0.492412 1.05655 -3.00115 0.335764 3.22646 -6.27686 0.396117 -2.60513 -0.937835 1.21105 -2.95658 1.25349 -1.1381 1.52551 -2.60696 -0.0930504 0.291756 -0.441974 0.668053 -0.877937 0 0 0 0 0 -0.0371808 -0.0858168 -0.00256624 0 0 0 0 -0.000648208 0 -0.00170956 0 0 -0.00141757 -0.00987129 0.03109 0 0.00329595 -0.13609 0.0205494 0 0 -0.0606185 -0.00046328 0 0.0469787 -1.71755 0 0 -0.00576424 -0.497611 0 0.110522 0 -0.0102068 0 0 -0.00157108 0 0 -0.0426562 -0.0138335 -0.0301872 0 -0.0549834 0.0540398 0 0 -0.260402 0 -0.00476872 0.0882737 0.0129944 0 0 0.00263919 0.00403031 0 -0.00224748 0.0326018 -0.0111664 1.71736 0.0360411 -0.0230532 0 -0.00923211 0.0696225 0.0172462 0.0671114 -0.256297 0 0 0 0.373178 0.130143 -0.0505412 0.00174221 -9.30923e-05 0.0185015 0.000999429 -0.00238965 0.0326379 -0.0296978 0 0 0 0 0 0 0.0607652 0 -0.040671 0 0 0 0 0.223285 -2.47944 0 0 -0.150544 0 -0.0253725 0 -0.138329 0 0 0.649613 0 0.536738 0.0820745 -0.0886454 0.074966 0 0 -1.11769 0 -6.14128 0 1.79948 -0.505519 0 0.513 0.844503 -0.0127253 0 0.040738 0 0 -0.304716 0 -1.9048 1.44075 0 0 0.159769 0 0 -0.350117 -1.61871 -0.185738 0 -1.72483 0 -0.560699 -0.115015 0.0906634 -0.0596499 -0.110889 -0.45549 -0.0781626 -0.215349 4.70164 17.0008 0.129201 0 0 0 0.177493 0.048957 0 0 0 0 0.541416 -11.4229 0.675964 -3.05231 -0.225889 0.0408535 -0.273627 0.061797 -0.0943719 0.171823 -0.398009 0 0 0 0 0 0 +14 0 -0.360831 -0.0323764 0.0247246 0.0922011 -0.0937539 0.0191402 -0.00977133 -0.134655 -1.8134 0.534012 0.070036 1.11833 -0.165537 1.33332 0.0859014 -0.236246 -2.05392 0.064546 0.437357 0.0937475 0.0909388 0.0479156 -0.0842365 0.576013 0.154091 -0.0052173 -0.115528 -0.0197894 -0.107472 0.391286 -0.49032 0.215804 -0.0224407 -0.68737 0.0973663 0.0583622 -0.114608 -1.3143 0.168803 0.000614598 -0.17634 -2.18501 0.148003 4.10654 -0.204614 -0.00174825 -0.0431387 1.04419 -0.0542582 0.875643 1.0246 0.893025 -1.39882 0.0482768 -0.012478 0.167341 -1.12577 0.372293 -0.850319 0.024352 0.728422 0.169802 0.0912345 1.79032 -0.679794 -0.468785 -2.09532 0.417792 2.2887 0.000547628 0.229903 0.0449257 0.358037 0.81019 0.00305944 -0.279962 5.80864 -0.0584615 0.243582 -0.685418 0.223497 0.274363 -0.344856 -0.254808 0.209691 -0.514139 0.0716785 -0.0468577 0.0275614 -0.0162899 0.00917822 0 0 0 0 0 0.0247246 0.0922011 -0.0126745 0 0 0 0 -0.00328926 0 0.0291657 0 0 -0.000959255 -0.0142722 0.096627 0 0.0136195 1.06 0.274995 0 0 1.73126 -0.000649729 0 0.204086 7.00196 0 0 0.221197 2.69513 0 0.326197 0 0.618185 0 0 0.0762646 0 0 0.391743 -0.0656584 -0.0186367 0 -0.23839 0.0260846 0 0 0.447215 0 -0.00766656 -1.0004 -0.0273554 0 0 -0.0034553 0.0341754 0 0.0468895 0.607507 0.00307607 -4.5769 -0.0275743 0.0488413 0 -0.126849 -0.107715 0.722221 -0.285118 -0.142538 0 0 0 -10.0698 -0.574582 -1.74785 -0.0460902 -0.0577367 -0.00246348 0.000427544 -0.00123193 0.00232103 -0.0272104 0 0 0 0 0 0 -0.0937539 0 0.0191402 0 0 0 0 -0.0379776 -0.948336 0 0 -0.298171 0 -0.0304727 0 -0.0192381 0 0 0.0333784 0 -0.113881 -0.0242694 -0.0419105 0.00371701 0 0 -0.159549 0 -4.29269 0 -2.06952 0.00264889 0 -0.0927754 -0.567024 -0.00266828 0 -0.00903598 0 0 -0.11156 0 -0.543839 0.14633 0 0 0.024392 0 0 -0.304196 0.915784 -0.171196 0 -0.838088 0 0.0814484 0.0970918 0.0905956 -0.120931 -0.104641 0.327342 0.165942 0.108845 0.600114 -0.552073 0.0866875 0 0 0 -0.0415845 -0.127275 0 0 0 0 0.264042 19.7971 4.13295 -0.625901 1.16785 -0.526215 0.647859 0.301294 -0.170951 0.170054 -0.0174692 0 0 0 0 0 0 +15 0 -1.74981 -0.180366 0.19479 -0.141343 -0.0472079 -0.0341252 0.191641 0.460052 -0.0609859 0.822719 0.0158986 0.840814 -0.50052 0.255554 -0.00418887 1.50318 2.57965 -0.209189 -0.141686 -0.515926 -0.16209 0.17329 0.593498 0.533957 0.334929 0.609663 -0.0242707 0.00543818 0.0206274 0.202934 0.723957 0.171332 1.23261 -0.315158 0.106786 0.0312357 -0.647567 6.99018 0.0539241 -0.138911 -0.392623 -2.06232 0.115436 1.80929 -0.269384 -0.0341018 0.00848065 0.70482 -0.18143 0.728863 -0.384145 -6.85084 -0.537922 -0.20894 0.0820144 1.51728 -1.66906 0.582454 -0.21626 0.366449 1.06604 -0.52778 -2.19585 1.04007 -0.73044 0.486711 -0.935033 0.39592 0.0415486 -1.4075 -0.0265205 0.0760188 1.73671 1.41801 -0.0364445 -3.42038 -27.2244 -3.40676 -0.797515 -4.43193 4.10085 -6.50138 -0.898504 0.326861 -0.392984 -0.06427 0.0943683 -0.0322095 0.00788987 -0.000559474 -0.00176161 0 0 0 0 0 0.19479 -0.141343 -0.00147558 0 0 0 0 0.00220936 0 0.00148894 0 0 -0.00110761 -0.0890817 -0.0623125 0 -0.0146898 0.136818 -0.0254981 0 0 -0.360488 -0.0045075 0 -0.876518 -1.59451 0 0 -0.0547433 -0.310649 0 -1.50303 0 -0.375908 0 0 -0.0527484 0 0 -1.27408 0.0379102 -0.0247951 0 -0.0347726 0.171463 0 0 -0.708545 0 0.0072796 0.223667 0.00875984 0 0 0.00397294 0.00977134 0 -0.0282408 -0.112282 -0.0185688 1.22572 0.0614324 0.0152873 0 0.000355272 0.0228722 -0.128228 0.0471051 0.157396 0 0 0 11.2624 0.711635 0.897134 0.0483099 0.0573723 0.0673784 0.00205828 0.00189779 -0.00234957 0.00958323 0 0 0 0 0 0 -0.0472079 0 -0.0341252 0 0 0 0 -0.0125519 0.0550934 0 0 0.195177 0 0.00988143 0 0.00317 0 0 -0.037554 0 0.0377387 0.0234714 0.0424065 -0.00197988 0 0 0.00481324 0 -0.632316 0 2.89844 0.0223073 0 -0.103758 0.47372 0.00245101 0 0.00443619 0 0 0.020623 0 0.00812677 -0.304397 0 0 -0.0281381 0 0 -0.203358 -2.2523 0.106201 0 -0.56297 0 0.581282 -0.101024 0.0230202 0.363188 0.0121617 -0.649084 -0.964466 -0.0649957 -0.701258 -4.48499 -0.109519 0 0 0 -0.0926339 0.0599341 0 0 0 0 -0.0252643 -24.8125 -3.55909 1.50192 -1.9606 1.42751 -1.64924 -0.178869 0.15939 -0.163631 0.0868871 0 0 0 0 0 0 +16 0 -0.270966 -0.184027 -0.0604575 -0.0905579 0.108126 0.0158779 0.125162 0.40223 -3.1684 -0.433939 0.07774 0.333083 -0.103485 0.13427 0.107466 -1.60091 -4.80384 -0.126646 0.71951 -0.854627 -0.0484486 0.0237904 -0.486728 -0.25165 0.157382 -0.524219 -0.188433 -0.00190345 -0.220031 0.00350511 -1.29359 0.250847 0.0358596 -0.684426 0.0215307 0.0259091 -0.920623 0.611157 0.429761 -0.0969294 -0.308759 -2.85819 0.166827 1.29192 -0.812682 -0.003997 -0.0355014 1.73562 0.2048 -0.237984 0.24083 1.29722 -2.07015 0.158133 -0.0711534 1.77113 0.690086 1.34129 -0.198567 -0.313779 0.629697 -0.868479 0.226523 -0.104136 0.352967 -0.389257 0.703953 -0.392965 3.7119 -1.14959 0.403254 -0.100883 0.5074 -0.287565 0.0307212 0.85471 0.084667 0.48827 0.166338 1.1625 -0.425134 0.355631 -0.284864 0.166971 -0.0684344 -0.125126 0.284692 -0.143951 0.0732417 -0.0369448 0.0187909 0 0 0 0 0 -0.0604575 -0.0905579 -0.0129651 0 0 0 0 -0.00634987 0 -0.0285368 0 0 0.00265261 0.0272867 -0.0618557 0 -0.0107882 -0.392857 -0.162714 0 0 -0.654163 0.0015121 0 0.0116914 -4.49546 0 0 -0.0917846 -1.47753 0 0.0760712 0 -0.262716 0 0 -0.0361496 0 0 0.216779 -0.122143 0.0465453 0 -0.252922 -0.067637 0 0 -0.352807 0 -0.0154046 -1.27452 0.0217599 0 0 -0.00545827 0.0280088 0 -0.0296826 -0.0495605 -0.0310996 -1.29359 -0.164827 0.028381 0 0.01487 0.0716928 -0.229016 0.113973 0.0846319 0 0 0 -1.53676 -0.267678 0.636298 -0.00946113 -0.00249218 -0.0259062 -0.00212472 -0.00143468 -0.00446985 0.0155541 0 0 0 0 0 0 0.108126 0 0.0158779 0 0 0 0 0.0382177 -0.359555 0 0 -0.0389935 0 0.00262022 0 -0.0020522 0 0 0.0281428 0 0.0185873 0.0178359 -0.00902641 0.00167759 0 0 -0.0355253 0 -1.60602 0 0.208259 -0.0629378 0 0.0766525 0.0147731 0.000370438 0 0.00637339 0 0 -0.0266552 0 -0.192161 0.0950722 0 0 0.0145409 0 0 0.0883956 2.1377 -0.0814091 0 -0.00931382 0 -0.273262 0.0101873 0.0351078 -0.0616229 -0.0728945 -0.0530757 0.564867 0.0081787 0.108821 2.71833 0.0473585 0 0 0 -0.0639352 0.0157499 0 0 0 0 0.115802 2.05383 0.419007 -0.360624 -0.177772 0.0642749 0.109284 -0.0586237 0.0504371 -0.0151968 0.0355482 0 0 0 0 0 0 +17 0 0 0 0.212765 -0.247103 0 0 0 0 1.90144 0.443722 -0.270175 0 -0.405172 0 0.0329873 0 0 0.0504901 0.492016 0 -0.00617227 0 0.886639 0.0596703 0 0 0.815085 0 0 0 1.30839 -0.029645 0 1.61341 0 0.00610689 2.69664 0 -0.6611 0 0.00738461 5.69819 0.13687 0 2.45333 0 0 0.342499 0.849535 0 0.824258 0 0.874398 0.39809 0.409169 0 -0.433413 -0.501445 -0.141877 -0.628759 0 0 0 0 -0.610755 0 0.195522 2.62967 -3.72972 0.886809 0.0212973 -0.239565 -2.59791 0 0 -0.739295 0 0.617411 0 -5.09291 1.74743 0 -4.46389 1.71525 -0.0210415 0 -7.5895 3.97874 -3.02236 1.19652 0 0 -0.266115 -0.0356754 0.0482922 0.0052401 0.212765 -0.247103 -0.0656318 0.0565692 0.293856 0.00089649 0.0060006 -0.00267657 0.011479 -0.0619308 -0.0483397 0.00881545 -0.00489196 0.0599662 -0.253135 -0.521458 -0.0596328 1.26537 -0.187417 -0.00424296 0.323179 2.39854 0.0012312 -0.000532543 0.0385404 7.69227 -0.200986 -0.00589575 0.336841 3.41692 0.0395879 0.578348 0.0347478 0.80927 -0.0251328 -0.00147217 0.102588 0.0706185 4.92759e-05 1.08917 -0.0564824 -0.00961521 0.00456252 -0.725585 0.210018 0.041047 0.028912 -0.159788 -0.0580094 0.0377183 0.208707 -0.111394 0.157081 -0.0951465 0.00686678 0.347284 0.0108385 -0.0142693 -0.397972 -0.0263042 -4.62628 0.140562 0.0175739 0.0638331 -0.149648 0.273229 -2.52815 0.977903 -0.174669 -0.0424185 -0.114983 -0.0243863 -0.930114 -0.00946623 0.282982 -0.156304 0.16482 -0.0721522 0.0139157 -0.0158248 0.00649672 -0.0102697 -0.0174991 0.0192614 -0.0148423 0.00485937 0.0583008 0 0 0.0482922 0 0.0052401 0 0 0.406647 0 0.317393 0.0901651 -0.00782472 0.194512 0.0135066 0.00961929 0.0473058 -0.0184719 -0.0372978 0.602327 0 0 0 0 0.105335 0 -0.140367 0 -0.109714 0 0 -0.103642 0 0 0.00262537 0 0 0.0185053 -0.0064105 0 -0.0164844 0 0.0593789 0 0 0 -0.00296153 -0.04555 0 0 -0.129992 0 0 0 0.202435 0 -0.247488 0 -0.342808 0.408802 0.127298 0 0 -0.125017 -0.0298886 -0.713448 0 0.0795669 0 -0.0622147 0 -0.228533 0.0882673 0.181669 -0.0899495 -0.114944 0.0997537 0.155673 0 -0.677388 0 -3.68875 0.742404 0 -1.63313 0.704392 -0.268216 0 -1.7241 0.928037 -0.474432 0.0761165 0 0 +18 0 0 0 0.0170252 0.0251478 0 0 0 0 -3.27233 -1.78056 0.190677 0 -0.408804 0 0.0862514 0 0 -0.364901 0.960776 0 -0.0756892 0 -0.56623 -0.465425 0 0 0.0129813 0 0 0 -1.4562 -0.692185 0 -0.333989 0 0.0643235 0.177563 0 1.17549 0 -0.865098 -0.162913 0.282639 0 -2.68729 0 0 0.132767 -1.09976 0 -1.79966 0 -0.56313 -0.481657 -0.0451481 0 0.00729078 0.621319 1.77339 1.3606 0 0 0 0 -0.29862 0 0.455165 1.02177 5.17635 -0.113288 -1.71709 0.509904 2.80622 0 0 2.77689 0 5.85542 0 9.27 -2.72474 0 5.43163 -2.82224 2.7413 0 6.82766 -4.18246 4.37396 -2.32787 0 0 0.0278102 0.00688175 -0.0592334 -0.00576325 0.0170252 0.0251478 0.0498477 -0.0172671 0.272119 -0.000667838 -0.00157958 -0.00799829 -0.00861553 0.0025398 0.0089818 -0.00519899 -0.00685408 0.0526119 0.120802 0.0656159 0.0227879 0.542835 0.110879 0.00101293 -0.162123 -0.194067 0.0128278 0.00665277 0.0832237 1.35749 0.145641 0.0179547 -0.0287789 0.777423 0.0180991 0.000563703 0.0347912 0.0651418 0.0351835 0.112361 0.0232254 -0.0345594 -0.000326606 -0.234485 -0.174478 -0.109752 0.00334828 0.161893 -0.066804 -0.0582627 0.0546766 0.144062 0.0682334 0.143773 0.451906 -0.176613 -0.0205277 -0.0734932 -0.0133563 -0.115073 0.05157 -0.0661745 0.0899957 0.0434338 -4.01361 0.25931 -0.0665869 -0.0303287 -0.235447 0.0605575 -0.178311 -1.28315 -0.387027 -0.0394232 0.0340696 0.0117321 0.200242 -0.234596 -0.0910378 0.326982 -0.375229 -0.0281773 -0.0220996 0.0411602 -0.040174 0.0110575 0.00778003 -0.032954 0.0658127 -0.0679684 -0.0422467 0 0 -0.0592334 0 -0.00576325 0 0 -0.189999 0 -0.532728 -0.0744945 -0.00267574 -0.649663 -0.0118171 -0.157074 -0.00308347 -0.0422441 -0.0240215 -0.462607 0 0 0 0 -0.397897 0 -0.0844357 0 -0.37638 0 0 0.388862 0 0 0.0037239 0 0 -0.0873209 0.00816752 0 0.0540746 0 -0.0840212 0 0 0 -0.00250756 0.0659794 0 0 0.0676036 0 0 0 -0.073181 0 0.120709 0 0.215006 -0.198522 0.455283 0 0 0.230474 -0.653431 -0.37836 0 -0.302422 0 -0.152067 0 -0.0921082 0.859861 -0.486716 0.47947 0.383347 0.00176755 0.210176 0 2.66054 0 3.05874 -1.51844 0 1.84615 -1.10202 0.622801 0 0.898041 -0.896975 0.806183 -0.466616 0 0 +19 0 0 0 0.189262 0.189109 0 0 0 0 1.36504 0.442469 0.535548 0 -0.370522 0 -0.042021 0 0 -0.0990019 0.0105129 0 -0.043313 0 0.484059 0.26036 0 0 0.460825 0 0 0 0.766535 -0.519071 0 0.60759 0 0.126117 2.04398 0 1.6876 0 -0.731311 2.95645 0.547868 0 -1.96524 0 0 -1.91699 -1.61605 0 0.534619 0 0.346652 -0.403405 0.542684 0 -0.70036 -0.756551 -0.388359 1.23746 0 0 0 0 -0.0777269 0 0.223192 1.70519 -1.26385 -0.830242 0.242843 1.95786 -0.479965 0 0 -0.154975 0 0.0692085 0 3.3734 -1.85187 0 1.50348 -1.13977 0.10709 0 6.17173 -4.74081 2.83762 -2.2943 0 0 0.186972 0.0249731 0.099655 -0.065262 0.189262 0.189109 0.0584183 0.0498355 -0.510098 -0.000613067 0.00417534 0.0096217 -0.0170508 -0.155514 0.0338483 -0.00606851 0.0319483 0.170246 -0.207644 0.36605 -0.055214 0.653789 -0.681753 0.00296442 0.474181 0.2146 0.0140292 0.0196269 0.135665 4.45618 0.533057 -0.00157724 0.0181088 2.04641 -0.0432829 0.532865 -0.0464219 0.399388 0.101626 -0.0739045 0.0249684 -0.0488209 -0.000703918 1.27481 0.146418 0.40601 -0.00432529 0.689521 0.322951 -0.0390823 -0.0322803 0.0504726 0.0996584 0.0180803 0.788907 -0.0709673 -0.110244 0.123697 -0.0258754 -0.204249 -0.203515 0.0255235 -0.395037 0.00231497 -3.13932 0.158368 -0.0443101 -0.0237624 0.209014 0.204081 -0.450964 -0.239792 -0.57702 0.0229798 0.0237465 0.016865 -1.08864 -0.476829 0.528648 0.0452547 0.0194863 -0.412501 -0.036801 0.0573098 -0.103631 0.19821 0.0121206 -0.0110653 -0.00222535 0.0278078 -0.154626 0 0 0.099655 0 -0.065262 0 0 -0.365964 0 -0.883435 0.0444626 -0.0824521 -0.80394 0.011557 -0.131646 -0.101826 -0.0339916 -0.10642 -0.0808466 0 0 0 0 -0.133656 0 -0.718543 0 0.00303763 0 0 -0.11427 0 0 -0.0183293 0 0 -0.0346632 -0.0075032 0 -0.0241072 0 -0.244006 0 0 0 -0.0144863 -0.0556901 0 0 -0.278646 0 0 0 0.117479 0 0.225062 0 -1.03697 0.371279 0.356513 0 0 -0.690319 -0.413057 0.220879 0 -0.258532 0 -0.226701 0 -0.217285 0.350098 0.0768363 -0.0854188 -0.154644 0.0999986 0.234774 0 5.12984 0 2.0032 -0.148567 0 1.71372 -0.676144 0.571896 0 0.21079 0.0210786 0.0744976 0.0643425 0 0 +20 0 -0.664041 -0.142974 -0.077982 -0.237593 -0.0113006 -0.0149252 -0.157169 -0.311337 -0.709411 0.355996 -0.125918 0.478537 -0.00941327 0.222154 -0.18855 0.722532 0.824916 -0.121649 -0.640762 -0.185155 -0.165181 0.169936 -0.0918513 -0.144726 0.0510313 0.272096 -0.565665 0.0244481 0.281106 0.0776259 -0.197528 -0.327108 0.648855 -1.2833 0.0178366 -0.0627471 -1.95434 2.21037 -0.214557 -0.0875657 -0.16236 -4.69832 -0.143488 1.23055 -0.693874 -0.0319187 0.0875728 -1.03102 -0.146254 -1.05238 -0.0423472 -2.41323 -0.99657 -1.1885 0.525955 -1.34688 0.252958 1.03739 0.225502 0.436371 0.371651 -0.0884381 0.815282 1.33107 2.51343 0.280674 -0.824183 -4.62691 0.862032 -0.424548 -0.0209966 -0.0644562 -0.686088 0.162306 -0.246462 -2.15754 -6.92874 -4.79517 1.54096 -3.36449 3.00133 -4.19743 -0.384312 1.33931 -2.07104 1.23422 2.45624 -0.1946 -0.190448 0.327644 -0.248823 0 0 0 0 0 -0.077982 -0.237593 -0.0106516 0 0 0 0 -0.00419195 0 -0.0184747 0 0 0.014192 0.093648 -0.120399 0 -0.00833317 -0.561358 -0.306559 0 0 -0.434492 0.00671901 0 -0.420283 -5.62875 0 0 -0.0400822 -1.95775 0 -0.647682 0 -0.213309 0 0 -0.0227165 0 0 -0.879867 -0.0561034 0.196075 0 -0.141836 -0.0373761 0 0 -0.16371 0 -0.031884 -0.194268 0.0900707 0 0 0.0097229 -0.0207137 0 -0.0254882 0.157033 -0.0027159 2.37614 -0.091554 0.028855 0 -0.0383865 -0.176 1.02266 -0.30437 0.0859864 0 0 0 3.5732 0.0205486 0.528975 0.0342449 -0.0267602 0.130778 -0.00882182 0.0158748 -0.0366863 0.0715826 0 0 0 0 0 0 -0.0113006 0 -0.0149252 0 0 0 0 -0.0262373 -0.129883 0 0 0.456178 0 0.0550053 0 -0.00791248 0 0 0.0421651 0 0.160689 0.00206478 0.0891129 0.00852214 0 0 -0.0550186 0 -2.68538 0 1.73266 -0.137137 0 -0.0269651 0.481072 0.010443 0 -0.00168455 0 0 -0.0210196 0 -0.637673 -0.247685 0 0 -0.0261718 0 0 -0.0263238 -0.837777 -0.0474207 0 -0.264484 0 0.976932 -0.272267 0.15898 -0.0067358 0.10836 0.409666 -0.896657 0.0772785 0.594711 -0.898423 -0.00420613 0 0 0 0.0726041 -0.0397331 0 0 0 0 -0.00724648 -15.9556 -4.50995 1.13287 -1.47875 1.22799 -1.37518 -0.507626 0.361327 -0.293796 0.00015456 0 0 0 0 0 0 +21 0 0.0319981 0.0247466 -0.109306 -0.0819507 -0.0954576 0.0619015 -0.428762 -0.189193 1.56837 -0.590189 0.0523884 -0.653902 0.401673 -0.711798 -0.155879 -1.45417 0.0752931 0.0756677 -1.08859 0.340839 0.0656193 -0.269414 -0.251807 -0.0586711 -0.297821 -0.756918 -0.3825 -0.0358223 -0.297913 -0.204919 0.248371 -0.295435 -1.0012 -0.243736 -0.176002 -0.0105996 -0.682269 -4.61515 0.0106153 0.164619 0.686268 0.061248 -0.110059 -1.14163 1.03235 0.0474963 -0.110433 -1.80568 0.359524 -0.883232 0.305911 9.04235 1.12005 -0.411291 -0.00465213 4.62924 2.04682 0.469472 -0.214305 -0.886371 -3.28229 -0.206011 1.58255 -1.25858 0.252309 0.293916 0.982599 -0.192404 -1.91451 2.397 -0.789512 -0.0568331 0.221332 1.05921 0.140429 2.08549 22.6993 9.49064 -2.52003 5.40095 -3.93035 5.34446 -0.0196561 -0.231347 1.18024 -0.0755316 -3.6544 0.835737 0.0703962 -0.251296 0.2637 0 0 0 0 0 -0.109306 -0.0819507 0.0569866 0 0 0 0 0.0326494 0 -0.0388385 0 0 0.0016407 0.000711028 -0.0665751 0 -0.024122 0.0535761 -0.0839282 0 0 0.164178 -0.000212128 0 0.509228 4.91229 0 0 0.0321313 1.28203 0 0.771246 0 -0.146424 0 0 -0.0152615 0 0 0.990266 0.455328 0.0334995 0 0.793052 0.147863 0 0 -0.377843 0 -0.00683746 0.469051 0.0131059 0 0 0.00695974 -0.163101 0 0.0332731 0.0228978 -0.0583603 -5.1546 -0.00799976 -0.0511421 0 0.0952529 -0.0579831 0.218323 -0.728887 0.00111731 0 0 0 -3.34467 0.200886 -0.434596 -0.0644447 0.146287 -0.369901 -0.000431242 -0.00549223 0.0194057 -0.034365 0 0 0 0 0 0 -0.0954576 0 0.0619015 0 0 0 0 0.143848 0.29172 0 0 -0.287058 0 -0.0480163 0 0.0193121 0 0 -0.0468329 0 -0.126102 0.0716949 -0.126678 -0.00448511 0 0 0.130446 0 0.487437 0 -0.35406 -0.230284 0 0.490406 -0.260063 -0.0173849 0 0.0188034 0 0 0.0614323 0 -0.403059 0.234883 0 0 0.0372332 0 0 0.125793 0.0556662 0.455702 0 -0.13549 0 -0.986118 0.363551 -0.410136 0.662349 -0.0302341 -0.443325 0.841532 -0.180188 -0.131032 -3.32678 -0.0314139 0 0 0 0.0172726 0.16491 0 0 0 0 -0.121393 0.611755 2.35198 -3.1231 0.685462 -0.661497 0.656368 0.238193 -0.289325 0.384881 -0.484742 0 0 0 0 0 0 +22 0 -0.598676 -0.010691 -0.352259 -0.23929 0.238855 0.133435 -0.390972 -1.32564 -2.59168 2.37765 0.397905 0.554755 0.338948 1.17176 0.06809 -0.160738 -2.50543 0.83181 0.123697 0.758533 0.436444 -0.16029 -0.692349 0.904638 -0.376851 0.0801798 -0.261895 -0.116163 -1.46845 0.15214 -1.20952 0.24457 -0.0658772 -0.730425 -0.13334 0.105297 -1.28351 1.95093 1.53883 0.305999 0.175737 -4.42263 0.423561 3.83522 -0.852582 0.103168 -0.407069 0.956007 -0.606416 0.827037 0.523654 -0.213321 -0.34422 0.543162 -0.882791 -4.47256 -0.796813 -0.194991 -0.607109 0.327091 0.00192599 -0.636362 -1.19431 2.10738 -0.200768 0.807808 -1.62347 0.0964505 2.73871 -0.839014 -0.865622 0.493735 2.79222 -1.75441 0.809064 3.53514 -10.8909 -6.01523 1.19941 -2.4593 0.571146 -1.43816 -4.15905 1.83431 -1.38711 0.919057 3.01805 -3.42937 2.97641 -1.89656 1.29981 0 0 0 0 0 -0.352259 -0.23929 -0.0470368 0 0 0 0 -0.0165785 0 -0.00308638 0 0 0.00514511 0.0409363 -0.13456 0 -0.0193249 -0.361886 -0.0818727 0 0 0.443661 0.00325371 0 0.179494 -2.28397 0 0 0.0659173 -0.949552 0 0.244696 0 -0.00332503 0 0 0.00419998 0 0 0.530561 -0.230046 0.0657267 0 -0.655266 0.0452114 0 0 -0.203317 0 -0.0234149 0.299421 0.0267602 0 0 -0.0155317 0.124392 0 0.0122806 -0.0355682 0.0463416 3.16628 -0.0702109 -0.01657 0 -0.0831276 -0.0129788 -0.291981 0.521939 0.172351 0 0 0 -1.83492 -0.0646533 -0.00176 -0.045901 0.0808906 -0.170597 -0.00698498 0.0121071 -0.0239276 0.0316654 0 0 0 0 0 0 0.238855 0 0.133435 0 0 0 0 0.0310147 -0.680926 0 0 0.349674 0 0.0532498 0 -0.00408824 0 0 -0.222002 0 -0.191356 -0.0578038 -0.0813163 -0.0275882 0 0 -0.00505234 0 -2.55743 0 -0.399684 -0.0891882 0 -0.38256 -0.266744 -0.00805741 0 0.0011949 0 0 -0.0932367 0 -0.28721 -0.297028 0 0 -0.0377906 0 0 -0.238325 -1.43025 -0.375362 0 -0.721113 0 0.557721 -0.265946 0.31828 -0.386715 0.136449 -0.483378 -0.654664 0.0830981 0.773762 1.73743 -0.116226 0 0 0 -0.0258604 -0.128858 0 0 0 0 0.216815 10.6931 1.13831 0.173318 0.879573 -0.606023 0.497181 -0.261285 0.198613 -0.236538 0.286016 0 0 0 0 0 0 +23 0 0 0 0.180461 0.0875027 0 0 0 0 -0.0619498 -1.23643 -0.0924002 0 -0.332654 0 -0.0639647 0 0 -0.564226 -0.136511 0 -0.309284 0 0.432248 -0.605707 0 0 0.39927 0 0 0 0.471023 -0.279184 0 0.304763 0 0.00651134 1.27273 0 0.189967 0 -0.352637 1.17805 0.171366 0 0.0431431 0 0 -0.0479351 0.0148412 0 -0.89432 0 -0.236533 0.0116901 0.0617325 0 0.266737 1.22889 0.550112 0.0815072 0 0 0 0 0.1429 0 0.844935 1.07723 -0.103484 1.22588 0.247258 0.127508 -1.06878 0 0 -1.40224 0 2.13807 0 -0.12411 0.304362 0 1.59883 -1.1322 2.29351 0 0.726687 -0.281463 0.385471 -0.312596 0 0 0 0 -0.125562 0.00677147 0.180461 0.0875027 0 0.0419417 0 0 0.00887088 0 0 -0.109655 0 0 0 0 -0.325014 0 -0.0666747 1.16389 -0.539822 0 0.188977 -0.0197991 0 -0.00603468 0.561227 4.37501 -0.0613237 0 0.0162447 2.32658 0 0.821756 0 -0.0896296 -0.0186817 0 -0.010376 0 0 1.1997 0 0 0 0 0 0 0 -0.309274 0 0 -0.802185 0 0 0 0 0 0 0 0.0722602 0 -3.84715 0 0.0997353 0.0254288 0 0.10859 -0.49648 0 -0.0870648 0 0.0759879 0 -2.74739 0 0.610724 0 0 0.0185158 0 0 0 0.023642 0 0 0 0 0.00528562 0 0 -0.125562 0 0.00677147 0 0 0.189423 0 0.697503 0.0134184 0.0562856 -0.408781 0.00122711 0.014666 0.0370667 0.026845 0.075897 0.0730907 0 0 0 0 -0.295266 0 0.391588 0 -0.102824 0 0 0.158222 0 0 0.00613138 0 0 -0.00858199 0.0026039 0 0.00524051 0 0.206522 0 0 0 0.0111576 0.026124 0 0 0.200037 0 0 0 -0.168238 0 -0.105329 0 0.172628 0.157417 -0.458971 0 0 0.844958 -0.033672 -0.0183786 0 0.259382 0 0.153119 0 0.356729 -0.0615895 -0.0499094 -0.0300158 0.22541 -0.0559316 -0.669031 0 1.13858 0 -0.590091 -0.18835 0 -0.117313 -0.147442 0.533402 0 -0.106155 0.0274007 0.0664388 -0.0525278 0 0 +24 0 0 0 -0.377229 0.179532 0 0 0 0 -0.860779 3.01483 0.273422 0 0.642216 0 0.0800831 0 0 1.00609 0.459991 0 0.596975 0 -0.813591 1.93163 0 0 -1.159 0 0 0 -0.988585 0.339362 0 -2.0488 0 0.00388342 -3.26987 0 0.463837 0 0.852819 -6.88778 -0.177595 0 0.589656 0 0 0.668296 0.224213 0 1.53412 0 -0.444866 0.414888 -0.356242 0 -0.0119706 -0.25192 -2.24318 -0.763534 0 0 0 0 1.86791 0 -1.10979 -3.84838 0.539223 -4.04937 0.0643077 0.275804 3.17873 0 0 3.11048 0 -5.99398 0 -1.57136 -0.500757 0 -4.6937 1.95176 -1.53245 0 -1.9795 0.437746 -0.298122 -0.458726 0 0 0 0 0.0946151 -0.0104764 -0.377229 0.179532 0 -0.0161018 0 0 -0.00272277 0 0 0.124591 0 0 0 0 0.522876 0 0.0816185 -1.62827 0.801546 0 -0.0649998 0.99494 0 0.00548297 -1.20438 -1.11375 -0.0342185 0 0.114164 -1.61298 0 -1.81973 0 0.69402 0.0103017 0 0.0937854 0 0 -2.75029 0 0 0 0 0 0 0 0.296549 0 0 0.893438 0 0 0 0 0 0 0 0.143884 0 4.22857 0 -0.113948 0.00373456 0 0.032837 1.8019 0 0.074119 0 0.00393226 0 6.29836 0 -0.900855 0 0 0.157708 0 0 0 -0.0343326 0 0 0 0 0.00294937 0 0 0.0946151 0 -0.0104764 0 0 -0.805702 0 -0.338547 -0.0126815 0.0516877 0.183586 0.00123453 0.0750344 -0.121953 -0.0166193 0.0359649 -0.286553 0 0 0 0 -0.00815224 0 0.325791 0 0.125504 0 0 0.23446 0 0 -0.017472 0 0 0.0130877 0.00161452 0 0.0267841 0 -0.143327 0 0 0 0.00549718 0.0159305 0 0 0.162368 0 0 0 -0.254371 0 0.581965 0 0.0577953 -0.0356276 -0.466092 0 0 -0.136283 0.353196 0.00602802 0 0.257662 0 -0.00971212 0 -0.179182 -0.451757 -0.120826 0.0151394 0.227378 0.0606733 0.584508 0 -0.174066 0 0.712645 -0.68614 0 0.188573 -0.162444 0.0568077 0 0.236005 -0.153319 0.0649182 -0.0210479 0 0 +25 0 0 0 0.0423217 0.201305 0 0 0 0 0.188413 -0.685615 -0.301 0 -0.0586579 0 0.026227 0 0 -0.248593 -0.508911 0 -0.293011 0 0.0980494 -0.697499 0 0 -0.129505 0 0 0 0.211375 0.441133 0 0.138955 0 -0.0683124 -0.96087 0 -1.33759 0 -0.0145303 -0.911677 -0.320536 0 0.566477 0 0 0.46428 0.812184 0 0.0867564 0 0.231285 -0.216459 -0.0649416 0 0.20767 0.13392 0.628273 -0.0876843 0 0 0 0 -0.179356 0 -1.30793 -0.89734 -0.399151 0.852676 -0.00805945 -1.22262 0.298443 0 0 0.411877 0 1.40076 0 -0.148 2.31464 0 1.46652 0.500953 0.0555742 0 -0.47606 1.32101 -0.568423 1.03281 0 0 0 0 0.126351 0.0297198 0.0423217 0.201305 0 0.0641535 0 0 0.0132029 0 0 0.00377794 0 0 0 0 -0.100052 0 -0.00918809 -0.920157 -0.00874333 0 0.305654 -0.929199 0 -0.0105493 0.143078 -5.01442 -0.319041 0 -0.0647195 -2.72466 0 0.177037 0 -0.953137 -0.0618239 0 -0.125028 0 0 0.20836 0 0 0 0 0 0 0 0.0744826 0 0 0.19749 0 0 0 0 0 0 0 -0.177767 0 1.44096 0 0.0237017 0.0397082 0 0.161264 -0.511899 0 -0.155522 0 0.121063 0 -0.477159 0 0.0087277 0 0 0.356334 0 0 0 0.00234246 0 0 0 0 0.0274988 0 0 0.126351 0 0.0297198 0 0 0.0151998 0 0.648205 -0.0107062 0.0688384 0.160883 -0.00277167 0.046437 0.0483922 0.0698703 0.0255112 -0.0448279 0 0 0 0 0.21382 0 0.456565 0 0.186622 0 0 -0.0844712 0 0 0.0127466 0 0 0.036325 0.000788246 0 -0.00643069 0 0.202593 0 0 0 0.00616243 -0.000192459 0 0 0.0844742 0 0 0 -0.117104 0 -0.0128542 0 0.0189423 0.0233182 -0.198471 0 0 0.341053 0.203972 -0.642027 0 0.0226434 0 0.0181132 0 0.0754415 -0.0869222 0.0250199 0.0113062 -0.00623328 -0.0239694 -0.437684 0 0.477537 0 -0.196662 0.545437 0 -0.0506475 0.0354918 -0.00877514 0 -0.0787613 0.0763701 -0.0646958 0.0641525 0 0 +26 0 -0.332795 -0.653979 -0.353377 -0.150159 0.0315656 0.0789199 -0.897972 -1.93497 -0.611622 2.21667 0.0293377 -0.0913842 0.56941 -0.947359 0.0345107 -3.43145 -11.9639 1.07478 0.154352 -0.199169 0.671455 0.625686 -0.735105 1.30686 -0.614088 -1.16808 -0.411527 -0.0265658 -0.288922 -0.213156 -0.875864 0.0309597 1.17255 -0.853083 -0.212689 -0.0294574 -0.92605 2.30689 -0.0139686 -0.0476591 0.678441 -2.47191 -0.227642 -1.01813 0.47376 -0.00990424 -0.090548 -0.0138936 0.0993809 -2.15982 1.06765 12.7309 -0.0358915 0.0328951 0.0334114 1.14254 -0.230068 0.0272054 -1.22358 -0.409352 1.18564 -0.211923 -0.785249 1.97962 1.13605 0.450747 -1.38289 -0.91727 0.446639 -1.79576 0.252577 -0.0233225 1.09165 1.2902 0.0142106 3.34391 -9.20819 -6.58232 3.73076 -3.65635 1.04951 -0.0402383 -3.05904 1.65045 -1.56823 2.71155 -1.36139 0.363952 0.16463 -0.20233 0.305523 0 0 0 0 0 -0.353377 -0.150159 0 0 0 0 0 0 0 0.0115632 0 0 0 0 0.0820376 0 0.0125616 -0.382652 0.0985183 0 0 -0.241678 0 0 0.150966 -1.99201 0 0 -0.0351163 -0.890587 0 0.0807459 0 -0.0789292 0 0 -0.0102808 0 0 -0.102064 0 0 0 0 0 0 0 -0.00527704 0 0 0.134483 0 0 0 0 0 0 0 -0.0599054 0 1.37465 0 -0.0109327 0 0 -0.0119363 0.00437626 0 -0.0894015 0 0 0 0.233735 0 -0.112178 0 0 0.00439857 0 0 0 -0.00424575 0 0 0 0 0 0 0.0315656 0 0.0789199 0 0 0 0 0.0596976 -0.632172 0 0 0.136406 0 0.0152225 0 -0.00744932 0 0 0.0320671 0 0.0666348 0.000739183 -0.00608167 0.00368508 0 0 -0.044044 0 -3.61191 0 0.782237 -0.226171 0 0.146525 0.128799 0.000179422 0 0.00428714 0 0 -0.0756291 0 -1.0161 0.560368 0 0 0.0653709 0 0 0.231225 0.0623025 0.230768 0 -0.00886203 0 0.71037 -0.0474719 -0.0190384 -0.0921378 -0.0278931 0.239176 -0.238185 0.0365989 0.45536 2.81059 0.0246148 0 0 0 -0.190897 0.000693634 0 0 0 0 0.179912 -8.74212 -1.28979 -0.489025 -0.0846331 -0.0393118 -0.0854843 -0.0417574 0.0375623 -0.0375145 -0.063283 0 0 0 0 0 0 +27 0 -0.107555 -0.566413 -0.0349551 -0.0148533 0.0317719 -0.0484345 0.271729 1.09496 -0.0605 -0.806316 -0.156614 -0.395096 0.0563246 -0.857254 -0.117436 -2.31827 -10.4201 0.182568 -0.593171 -0.0513622 0.0881501 0.540213 -0.0727147 -0.347515 -0.124244 -0.597012 0.0584315 0.0348639 0.556239 -0.177832 -0.0866382 -0.233566 1.53778 -0.000728786 -0.0602213 -0.084381 0.140818 4.67573 -0.491875 -0.0485797 0.0671096 -0.0903328 -0.27302 -2.38074 0.0468631 -0.0125576 0.142061 -1.19272 0.374588 0.0895191 0.545017 -0.033502 0.576441 -0.528316 0.323458 -0.506477 -0.229442 -0.129857 0.332219 -0.040492 0.221173 -0.0400136 -1.32387 2.46829 -0.0426362 -0.223667 -1.80418 0.182557 0.0441804 1.2492 -0.0205336 -0.337673 -0.0401603 0.365614 -0.205517 -0.229735 -17.1602 -1.48747 -2.14236 -3.60286 3.36429 -5.38629 1.11014 0.141975 -0.476276 -0.793359 -0.134665 0.740739 -0.823979 0.663819 -0.5882 0 0 0 0 0 -0.0349551 -0.0148533 0 0 0 0 0 0 0 0.0238922 0 0 0 0 -0.00358268 0 0.0128605 0.526821 -0.0131592 0 0 -0.976887 0 0 0.775073 -0.393852 0 0 -0.13149 0.414474 0 1.32995 0 -0.49451 0 0 -0.0663969 0 0 2.2525 0 0 0 0 0 0 0 -0.262147 0 0 -0.143805 0 0 0 0 0 0 0 -0.137485 0 -3.39281 0 0.0031119 0 0 0.00253305 -1.02067 0 -0.0281211 0 0 0 -5.15839 0 0.00118978 0 0 -0.0970739 0 0 0 0.00056711 0 0 0 0 0 0 0.0317719 0 -0.0484345 0 0 0 0 0.0564945 -0.797297 0 0 -0.196332 0 -0.0148635 0 -0.0200483 0 0 0.1033 0 0.027239 0.0617571 -0.0023086 0.010958 0 0 -0.176417 0 -2.66072 0 0.974186 -0.164784 0 0.51078 0.131625 0.000476605 0 0.00827302 0 0 -0.094673 0 -0.514707 0.410344 0 0 0.0499459 0 0 0.31473 -1.18526 0.29718 0 -0.545618 0 0.0839808 -0.00420444 -0.0917142 -0.499623 -0.0189451 0.336136 -0.166172 -0.00866277 1.06721 2.24367 0.0151145 0 0 0 -0.244546 0.00237707 0 0 0 0 0.337416 -6.25095 0.644462 -2.55917 -0.0815529 0.113493 -0.462888 0.0805737 -0.0698856 0.0843566 -0.213826 0 0 0 0 0 0 +28 0 0.180002 0.00377013 -0.143963 -0.0611736 0.18233 0.107247 -0.5022 -1.88698 -0.24917 2.0986 0.178232 0.363114 0.231974 0.425923 0.0607121 0.280851 1.68155 0.636924 0.198073 0.0763437 0.396274 0.302782 -0.299477 1.11061 -0.286547 0.00836988 -0.16805 -0.0490078 -0.613757 0.100661 -0.356821 0.10396 0.774668 -0.254866 -0.0245851 0.0729212 0.124624 2.10952 0.551534 0.0189056 0.276392 -0.0328085 0.191843 1.92693 0.193007 0.0113859 -0.181389 0.25905 -0.373896 -1.43676 0.470193 4.03327 -0.143492 0.131513 0.0654416 0.576053 0.302001 0.1866 -1.17411 -0.166767 0.656011 -0.081561 -2.90261 0.321647 0.428283 -0.0368927 -0.532031 0.194537 0.181958 -1.961 0.438567 0.434081 -0.111077 0.380109 -0.0728182 0.813333 -11.0796 -8.35462 5.20469 -4.19372 0.505693 0.894438 -2.92047 0.7688 -0.601246 1.6329 -0.554621 -0.652345 0.779794 -0.737112 0.649022 0 0 0 0 0 -0.143963 -0.0611736 0 0 0 0 0 0 0 -0.0237594 0 0 0 0 -0.0835736 0 -0.00942268 0.492783 -0.188945 0 0 0.900124 0 0 0.124016 4.69739 0 0 0.130112 1.67899 0 0.141306 0 0.477836 0 0 0.069568 0 0 0.143291 0 0 0 0 0 0 0 -0.0743167 0 0 -0.240364 0 0 0 0 0 0 0 0.211398 0 -2.58563 0 0.0132144 0 0 0.0322808 0.283791 0 0.145607 0 0 0 -0.328148 0 0.215466 0 0 -0.00617529 0 0 0 0.00814278 0 0 0 0 0 0 0.18233 0 0.107247 0 0 0 0 0.0539495 -0.184293 0 0 0.0313978 0 0.00528473 0 0.00811384 0 0 0.0627081 0 0.0126638 -0.0107466 -0.0364938 0.0089678 0 0 0.0509382 0 0.216031 0 0.0166813 0.000862685 0 -0.152885 0.11064 -0.00459549 0 0.00900001 0 0 -0.00690647 0 -0.0969475 0.800595 0 0 0.0966626 0 0 0.18788 -0.178211 0.0507365 0 0.144827 0 0.187662 0.0414583 -0.0635818 -0.116349 -0.0330439 -0.0377057 -0.0662467 0.070382 -0.103926 -1.2171 0.00900138 0 0 0 -0.108162 -0.0168885 0 0 0 0 0.0546808 2.89613 -0.476242 1.76349 -0.0564686 0.0374077 0.123466 -0.0459607 0.0420156 -0.0446366 0.1065 0 0 0 0 0 0 +29 0 0.712197 0.748153 0.188621 0.0794154 -0.0967727 0.0114742 0.0712754 -0.0255796 0.323852 -0.413029 0.0815176 0.264179 -0.305585 0.809119 -0.0280419 1.70613 5.66456 -0.674498 0.146565 -0.280479 -0.41363 -0.874085 0.394509 -0.45165 0.325348 0.788461 0.0301461 -0.0224239 -0.408667 0.166236 0.467644 -0.0117842 -2.20001 0.155918 0.117037 0.0566687 -0.654724 -5.75726 0.384499 0.00203256 -0.362235 -0.653024 0.298661 2.26552 -0.250855 0.00692612 -0.0938016 0.589058 -0.326833 0.81782 -1.10476 -9.14191 -0.246397 0.225827 -0.17833 -0.428304 -0.544527 0.0920285 0.298597 0.217005 -0.00776231 0.0482806 -0.207482 -1.89841 -0.1694 -0.140264 0.51086 -0.724351 -0.236772 -1.14913 0.0336156 0.182296 0.42118 0.236624 0.115177 -2.69963 21.9694 4.8651 1.05639 6.06362 -5.1052 8.93223 0.830265 -1.23444 1.77212 -1.03157 0.722548 -0.710668 0.682772 -0.400062 0.306991 0 0 0 0 0 0.188621 0.0794154 0 0 0 0 0 0 0 -0.0273299 0 0 0 0 -0.0574396 0 -0.0187712 -0.316601 -0.074632 0 0 0.829929 0 0 -0.687522 0.89441 0 0 0.101978 -0.278846 0 -1.0762 0 0.324703 0 0 0.0369298 0 0 -1.68235 0 0 0 0 0 0 0 0.341142 0 0 0.353742 0 0 0 0 0 0 0 0.141637 0 -0.168267 0 0.0181007 0 0 0.0113352 0.556464 0 0.175822 0 0 0 3.8527 0 0.0958216 0 0 0.0725025 0 0 0 0.00321634 0 0 0 0 0 0 -0.0967727 0 0.0114742 0 0 0 0 -0.0151586 0.774583 0 0 0.0285995 0 -0.00113436 0 0.0155621 0 0 0.0370732 0 -0.0850408 -0.0259889 0.0034734 0.00544723 0 0 0.128431 0 5.40932 0 -2.10166 0.288483 0 -0.139853 -0.551441 -0.000842026 0 -0.00237207 0 0 0.0881486 0 0.950859 0.236104 0 0 0.0318051 0 0 0.0161718 0.799737 0.0501295 0 0.972863 0 -0.332345 0.0397738 -0.0575745 0.0411964 -0.0335249 0.37512 0.227226 -0.033414 -1.12011 -2.37654 0.0632781 0 0 0 0.103604 -0.00804579 0 0 0 0 -0.238616 14.238 -0.398841 2.84308 0.209504 -0.42942 1.85139 -0.0449878 0.019905 0.0246316 0.14682 0 0 0 0 0 0 +30 0 0.123552 0.303986 0.255286 0.107483 0.0628998 -0.0558254 0.586135 1.3216 0.438312 -1.96056 -0.0456424 -0.0155147 -0.413589 0.716904 -0.0809849 2.09512 7.24938 -0.67309 -0.428253 0.217376 -0.455606 -0.197503 0.533941 -1.21164 0.288837 0.654113 0.376388 0.0122949 0.270846 0.171937 0.632924 -0.09985 -0.327202 0.857302 0.1121 -0.00329874 0.571572 -0.97435 -0.152614 0.0509939 -0.490261 2.12648 0.059039 0.154415 -0.339515 0.0108772 0.0554496 -0.424489 0.0587268 1.14547 -0.599357 -1.52489 0.262004 -0.240131 0.0176815 0.0864323 -0.371512 -0.196646 1.13356 0.293702 -0.668922 0.156463 -2.02774 -0.28109 -0.706797 -0.225345 -0.558013 0.539593 -0.320455 1.94854 -0.346864 -0.0994869 -0.856706 -0.36609 -0.00493327 -2.42479 2.25056 3.3842 -1.33711 1.07815 -0.0587795 0.935131 2.8268 -1.01941 0.984108 -1.55373 0.977919 0.00740515 -0.262544 0.226751 -0.20346 0 0 0 0 0 0.255286 0.107483 0 0 0 0 0 0 0 -7.47269e-05 0 0 0 0 -0.0834977 0 -0.00647241 0.506007 -0.112234 0 0 -0.227773 0 0 0.290411 0.649155 0 0 -0.00478609 0.389658 0 0.660742 0 -0.253465 0 0 -0.0232624 0 0 1.33812 0 0 0 0 0 0 0 -0.209379 0 0 -0.412811 0 0 0 0 0 0 0 -0.017169 0 -0.467304 0 0.00723024 0 0 0.0173983 -0.462309 0 0.0482996 0 0 0 -3.0644 0 0.120268 0 0 -0.0576678 0 0 0 0.00483685 0 0 0 0 0 0 0.0628998 0 -0.0558254 0 0 0 0 0.00967598 0.208217 0 0 -0.280047 0 -0.0300074 0 0.00347108 0 0 -0.0255866 0 -0.0530592 0.0247977 -0.0323039 0.00177737 0 0 0.0204479 0 2.0303 0 -0.161596 0.0898791 0 0.229093 -0.0791701 -0.00441963 0 0.000241086 0 0 0.026359 0 0.56083 -0.141907 0 0 0.0147621 0 0 -0.0626526 0.0853167 0.0927888 0 0.56959 0 0.0565856 -0.0511581 -0.00536559 -0.24275 0.0951301 0.27087 -0.045438 -0.137371 -0.628858 -3.51614 -0.0598107 0 0 0 0.0819468 0.0794413 0 0 0 0 -0.0389294 2.6784 0.465276 0.450039 0.063102 -0.0548764 0.341482 0.103185 -0.0693623 0.0416357 0.029617 0 0 0 0 0 0 +31 0 -0.340284 -0.443988 -0.217214 -0.0914541 0.177005 0.081106 -0.689834 -2.1695 -0.372945 1.89591 0.0806017 -0.0865476 0.351909 -0.170238 0.0557851 -1.58152 -8.12367 0.776709 0.335262 -0.11868 0.459552 0.442766 -0.454313 0.952145 -0.484915 -0.425296 -0.231081 -0.024276 -0.636167 -0.0420525 -0.538535 0.0593741 1.27557 -0.467843 -0.120562 0.0242282 0.122447 3.77209 0.429673 -0.0328123 0.417147 -0.440581 0.10354 -0.310786 0.288882 -0.00519322 -0.124926 0.304399 -0.273193 -1.67325 0.0584854 4.56688 -0.195253 0.178953 -0.0359419 -0.47044 -0.00163912 -0.0128576 -0.888186 -0.249901 0.7473 0.144896 -1.54852 0.87 0.656857 0.0985201 -0.942492 0.0300403 0.272665 -1.32566 0.231857 0.224497 -0.0315139 -0.0267892 0.0402653 1.89706 -11.6693 -5.6009 2.81944 -3.24895 0.796639 -2.29143 -2.18737 0.367195 -0.542878 2.42057 -0.83208 -0.438092 0.807686 -0.559343 0.477889 0 0 0 0 0 -0.217214 -0.0914541 0 0 0 0 0 0 0 -0.014603 0 0 0 0 -0.0597715 0 -0.00201517 0.451821 -0.159562 0 0 0.648732 0 0 0.29344 2.42188 0 0 0.112738 1.29137 0 0.375668 0 0.448993 0 0 0.0755266 0 0 0.463788 0 0 0 0 0 0 0 0.04087 0 0 0.0303838 0 0 0 0 0 0 0 0.151502 0 -0.469916 0 0.0236634 0 0 0.0319319 0.13276 0 0.196095 0 0 0 -1.06211 0 0.179847 0 0 -0.0199874 0 0 0 0.00687648 0 0 0 0 0 0 0.177005 0 0.081106 0 0 0 0 -0.0326906 -0.208099 0 0 0.313467 0 0.0393309 0 0.0093954 0 0 -0.0166785 0 0.183004 -0.0390735 0.0510525 -0.00156152 0 0 0.0783862 0 -2.18683 0 1.85797 0.0229249 0 -0.359943 0.729892 0.00551703 0 -0.00158617 0 0 -0.0150747 0 -0.251367 0.443314 0 0 0.0516735 0 0 -0.0236191 0.971239 -0.104065 0 -0.506067 0 0.428213 -0.0325328 0.0775942 -0.0847584 -0.0109984 0.267299 -0.11224 0.0461786 -0.121101 -1.50069 0.0396486 0 0 0 -0.0637114 -0.0536451 0 0 0 0 0.00988484 -3.79677 -1.77367 2.46282 -0.485879 0.490638 -0.620844 -0.111413 0.106448 -0.154356 0.186159 0 0 0 0 0 0 +32 0 -0.234102 0.15425 -0.0369657 -0.0156126 -0.116126 0.0322931 -0.073771 -0.153386 -0.063642 0.705815 0.160677 0.349162 0.0597779 0.289311 0.268803 2.42835 6.2634 0.272131 0.641743 0.417957 0.143002 -0.0901531 -0.077173 0.277188 -0.0764594 0.873238 0.332868 -0.0423332 -0.0971555 0.0418773 -0.0916392 0.531105 -0.08268 0.774047 -0.040531 0.075888 1.02931 0.280538 0.0531935 0.0828745 0.0709835 2.07132 0.00403337 1.78881 0.0492969 0.0313778 -0.0982888 1.26656 -0.0302792 0.273935 0.152976 -10.6215 -0.615267 0.563902 -0.284981 -1.07413 -0.583474 0.16826 -0.337255 -0.042628 0.783986 0.0901729 0.982465 -0.849801 -0.511801 -0.206598 1.21659 1.16833 0.0465109 -0.802204 0.491915 0.0336063 -1.05441 0.614051 0.139054 -2.99084 -2.69692 -0.459612 -2.29723 0.718896 -1.05891 0.82271 -0.719548 0.295551 -0.190738 -0.292622 -0.141879 -0.0405471 0.121219 -0.0910085 0.0732757 0 0 0 0 0 -0.0369657 -0.0156126 0 0 0 0 0 0 0 -0.013457 0 0 0 0 -0.0252725 0 -0.0075763 -0.535675 -0.0347866 0 0 -0.198667 0 0 -0.313317 -3.19596 0 0 -0.0166007 -1.35507 0 -0.559478 0 -0.112401 0 0 -0.0107863 0 0 -0.976302 0 0 0 0 0 0 0 0.31604 0 0 0.360648 0 0 0 0 0 0 0 -0.0294354 0 3.00688 0 0.0197457 0 0 -0.0116565 0.172483 0 0.0119797 0 0 0 2.2358 0 0.045847 0 0 0.0420748 0 0 0 0.00149916 0 0 0 0 0 0 -0.116126 0 0.0322931 0 0 0 0 0.0686736 0.0355538 0 0 0.03536 0 -0.00141076 0 0.00939043 0 0 0.0595025 0 -0.0417783 0.0165611 0.00679614 0.00870908 0 0 0.0984295 0 2.17785 0 -0.236038 0.16433 0 0.21682 -0.140176 -0.00110631 0 0.00813016 0 0 -0.00265232 0 0.64398 0.413438 0 0 0.0602877 0 0 0.0484009 1.09598 0.192467 0 0.427492 0 0.259602 -0.0796438 0.00748107 0.153912 -0.0416329 0.444099 -0.112876 -0.0123435 -0.737009 -0.676641 0.0791692 0 0 0 -0.0333077 0.00319488 0 0 0 0 -0.0574767 2.92683 -1.09796 1.22871 -0.146817 -0.0541608 0.761966 -0.024686 0.0122512 0.0170633 -0.0865136 0 0 0 0 0 0 +33 0 0.437143 -0.242544 0.154477 0.0652437 0.0069154 -0.0663394 0.22696 0.572225 0.265955 -1.13944 -0.0508829 -0.635944 -0.249807 -0.507625 0.091218 -2.86535 -9.81042 -0.365446 0.353857 -0.0735917 -0.247355 0.0353222 0.322499 -0.720141 -0.00145482 -0.905917 0.430231 0.0219642 0.371272 -0.21229 0.382953 0.151974 0.269538 0.577087 -0.0411883 0.000697187 1.53004 0.995193 -0.324944 -0.0339982 -0.296634 2.99666 -0.069429 -2.62929 -0.206008 -0.013158 0.0855393 0.634413 0.202932 0.191812 -0.428844 2.02588 -0.316694 0.290255 -0.13175 -0.180076 0.470805 0.135008 0.715839 0.178139 0.0730229 -0.000687855 -1.33677 1.11068 -0.546415 0.116181 -0.374682 1.39214 -0.194365 0.906613 0.0132922 -0.269671 -1.39861 -0.290193 0.0589322 0.815144 -3.79227 1.1442 -0.639165 0.347778 0.617577 -2.04855 1.88825 -0.564377 0.125336 -0.210473 0.5929 0.317164 -0.456583 0.393664 -0.280017 0 0 0 0 0 0.154477 0.0652437 0 0 0 0 0 0 0 0.031486 0 0 0 0 0.0731818 0 0.0189851 0.700729 0.0820489 0 0 -0.0464958 0 0 0.540537 0.602235 0 0 0.00467444 0.895564 0 1.00631 0 0.0207062 0 0 0.0119398 0 0 1.81045 0 0 0 0 0 0 0 -0.197471 0 0 0.0216115 0 0 0 0 0 0 0 -0.0435391 0 -1.71634 0 -0.00519851 0 0 0.0256621 -0.619828 0 0.145899 0 0 0 -4.14605 0 -0.105103 0 0 -0.0780231 0 0 0 -0.00353598 0 0 0 0 0 0 0.0069154 0 -0.0663394 0 0 0 0 -0.0299665 0.298332 0 0 -0.0555753 0 0.00260849 0 -0.000704203 0 0 -0.0371647 0 0.122432 0.018201 0.027314 0.000492179 0 0 -0.00364989 0 -0.811643 0 0.796787 -0.088421 0 0.184196 0.227784 0.00490122 0 -0.00530354 0 0 0.0316035 0 -0.17928 -0.411816 0 0 -0.0238024 0 0 0.0931851 -0.0911589 0.149619 0 0.0645251 0 0.584076 -0.0282271 0.00600503 -0.475364 0.107645 0.580029 -0.210543 -0.101576 -0.338657 -2.07499 -0.0205175 0 0 0 -0.0155404 0.013729 0 0 0 0 -0.0721358 -2.81819 -0.110122 -0.108518 0.140847 -0.110223 0.00482553 0.0604145 -0.0401589 -0.00542137 0.023301 0 0 0 0 0 0 +34 0 0.568802 0.391619 0.349748 0.147717 -0.0426659 -0.112574 0.438669 1.00157 0.602144 -2.22088 -0.1631 -0.471511 -0.565584 -0.241296 -0.0364673 -0.192922 2.37115 -1.37657 0.0222228 0.0186235 -0.779128 -0.708198 0.730166 -1.22281 0.426592 -0.23755 0.323562 0.0595829 0.806004 -0.238879 0.867038 -0.130374 -1.78508 -0.00908518 0.0766142 -0.0229519 1.03054 -4.68538 -0.683213 -0.0822539 -0.671604 1.25022 -0.130311 -0.881665 -0.466419 -0.0565153 0.205113 -0.0845547 0.420392 -0.0869703 -0.672079 -0.724602 0.0239905 -0.0219876 0.0707504 1.67311 0.673497 0.180346 1.23438 0.403321 -0.00733422 -0.0200748 2.33145 -1.54461 0.372734 0.0722649 2.91774 0.625389 -0.440059 1.28701 -0.187122 -0.563958 -0.624347 0.182198 -0.0537385 -0.387507 18.0596 8.50855 -2.29344 6.20956 -2.44288 2.19486 3.02081 -1.04363 1.01394 -1.44629 1.34238 0.642553 -0.983972 0.846238 -0.607897 0 0 0 0 0 0.349748 0.147717 0 0 0 0 0 0 0 -0.0111202 0 0 0 0 0.0735959 0 0.000779058 0.138841 0.00594732 0 0 0.0650638 0 0 -0.51329 -0.0188615 0 0 0.0102307 0.260318 0 -0.738049 0 0.134117 0 0 0.026852 0 0 -1.0578 0 0 0 0 0 0 0 0.135066 0 0 -0.0185913 0 0 0 0 0 0 0 0.0456233 0 0.777161 0 -0.000420928 0 0 -0.00735409 0.291997 0 -0.108241 0 0 0 2.42243 0 -0.000292654 0 0 0.0455869 0 0 0 -0.000256306 0 0 0 0 0 0 -0.0426659 0 -0.112574 0 0 0 0 -0.0398103 0.554236 0 0 -0.290334 0 -0.0327501 0 -0.00511908 0 0 0.0472398 0 0.0948536 0.0207409 -0.00893056 0.00733238 0 0 -0.0723989 0 2.79051 0 -1.13709 -0.0421292 0 0.189937 -0.0851718 0.000253882 0 -0.00568432 0 0 0.0684588 0 0.316954 -0.253232 0 0 -0.0192599 0 0 0.0554316 0.0079656 0.047932 0 0.570729 0 0.19967 0.022657 -0.0418263 0.131812 0.00762093 -0.0294308 -0.172989 0.0275326 -0.795826 -2.18105 -0.0405077 0 0 0 0.0205194 0.0405581 0 0 0 0 -0.126476 8.71977 0.692576 0.972427 0.375032 -0.28266 0.443237 0.076018 -0.0551858 0.0675002 -0.059937 0 0 0 0 0 0 +35 0 0.2315 0.197083 -0.0702049 -0.165756 0.184175 0.154279 -0.928464 -2.79161 -0.720359 1.40434 -0.288865 -1.28507 0.0256505 -2.70285 -0.243116 1.53701 5.01133 0.457487 -0.301192 1.31943 0.131955 0.0276191 -0.0416366 0.415572 -0.916959 0.582248 0.0823104 0.153142 0.568883 -0.727598 -0.17654 -0.957574 0.00286056 0.364211 -0.421681 -0.0962623 0.0129012 -1.52441 -0.304174 0.717977 0.0625084 -0.135903 -0.146843 -3.69765 0.071119 0.301186 0.416165 -1.15696 0.204656 -0.283411 1.5767 1.5789 0.52681 -0.380669 0.643274 3.49133 1.38109 0.155688 -0.624499 -0.0988049 0.211141 -0.274474 -1.24011 4.13394 0.128258 0.160661 -1.8485 0.0325967 0.393092 -0.577677 -0.134979 -0.412291 0.239618 0.975557 -1.14848 0.876004 7.2611 -2.52241 7.77194 -1.40614 1.43445 0.883849 -0.872081 1.29109 -2.49459 5.03333 -0.0629656 0.202526 -0.402348 1.18668 -2.40796 0 0 0 0 0 -0.0702049 -0.165756 0 0 0 0 0 0 0 -0.000665475 0 0 0 0 -0.00118391 0 0.00199186 0.11072 -0.0350287 0 0 0.0236832 0 0 0.126058 0.534021 0 0 0.00955709 0.203048 0 0.223452 0 -0.0129989 0 0 0.000205807 0 0 0.30323 0 0 0 0 0 0 0 0.00926595 0 0 0.0700599 0 0 0 0 0 0 0 -0.0244661 0 -0.0651072 0 0.00108755 0 0 -0.0103225 -0.101734 0 -0.00868855 0 0 0 -0.721529 0 0.0397929 0 0 0.0118395 0 0 0 0.0155422 0 0 0 0 0 0 0.184175 0 0.154279 0 0 0 0 -0.490746 -0.503473 0 0 0.444192 0 0.0506944 0 0.0124181 0 0 0.147803 0 -0.832655 -0.167126 0.201823 0.0631889 0 0 0.0888474 0 -0.106482 0 -2.87585 -0.492545 0 -1.08204 -1.51208 0.0242464 0 -0.0792464 0 0 -0.0452861 0 -0.39615 0.83803 0 0 0.181318 0 0 0.0658232 1.98664 0.323101 0 -0.284776 0 1.44153 -0.0958144 -0.00225875 -0.457401 0.205901 1.0825 -0.497402 -0.144593 0.370776 4.0473 -0.0480707 0 0 0 -0.0648335 0.0692555 0 0 0 0 0.0716129 10.1093 -2.61292 5.72777 0.224512 -0.582674 2.03225 -0.113159 0.171151 -0.373701 0.765637 0 0 0 0 0 0 +36 0 0.0466962 0.258278 0.112197 0.0528537 -0.183698 -0.366846 0.698201 2.84627 0.362242 -2.20376 0.0878485 -0.28968 -0.0585853 -1.2879 -0.0488517 1.27878 7.78463 -0.632636 -0.0292905 -0.228948 -0.203194 -0.241234 0.0693576 -0.748369 1.13014 -0.0549971 0.0236347 0.633829 -0.141773 -0.353275 0.215398 -0.668498 -1.06617 0.285147 0.50745 0.0544014 0.492575 -3.90843 0.691119 -0.553759 -0.200738 1.81864 0.264625 -1.03494 -0.637114 -0.881783 0.49516 -0.441242 -0.601039 0.637991 -1.36673 -2.991 0.122301 0.0424418 -0.0535154 1.91835 0.291768 0.196983 0.968889 0.345994 0.507958 0.177979 2.67983 -4.20573 -1.34043 0.570475 2.71316 0.868629 -0.204715 1.12984 -0.228721 0.48006 -0.722103 0.874014 0.00390033 -2.49885 15.8418 7.87873 -5.22533 6.30697 -4.04473 3.56093 1.89741 -2.07776 3.41866 -5.52017 0.564073 -0.913993 1.41114 -1.59799 0.600096 0 0 0 0 0 0.112197 0.0528537 0 0 0 0 0 0 0 -0.0255799 0 0 0 0 -0.0132329 0 -0.00599593 -0.194207 -0.10933 0 0 0.154523 0 0 -0.239293 -0.146501 0 0 0.0138055 -0.257 0 -0.435372 0 0.0783152 0 0 0.00835099 0 0 -1.13894 0 0 0 0 0 0 0 0.126468 0 0 -0.00249026 0 0 0 0 0 0 0 -0.0454294 0 -0.280354 0 0.0292281 0 0 -0.0023467 -0.0414465 0 0.00462167 0 0 0 2.42056 0 0.176953 0 0 0.221523 0 0 0 0.0393784 0 0 0 0 0 0 -0.183698 0 -0.366846 0 0 0 0 0.205625 0.428821 0 0 -0.273372 0 -0.0371732 0 -0.0562718 0 0 0.321399 0 0.597509 0.100294 -0.0528974 0.027702 0 0 -0.448172 0 1.76043 0 1.39001 -0.736047 0 0.827047 0.767299 -0.00719304 0 0.0320836 0 0 0.0387243 0 -0.953183 -0.0147053 0 0 0.000574216 0 0 0.0863791 0.780851 -0.0154511 0 0.990245 0 -0.142869 0.00446724 -0.0229521 0.195103 0.0134392 -0.0242797 0.296089 -0.0853538 -0.747744 0.256155 -0.0192332 0 0 0 -0.0375408 0.0892853 0 0 0 0 -0.0453044 -5.46099 0.378164 -2.24122 -0.268656 0.219644 -0.665315 0.0928168 -0.0786989 0.081245 -0.297517 0 0 0 0 0 0 +37 0 0.555859 0.0316523 -0.0261373 -0.088938 0.165142 0.0670768 -0.954073 -2.94307 -0.369498 1.1189 -0.160152 -0.482191 0.00729087 -1.88711 -0.178134 -1.11519 -2.30981 0.229944 -0.176581 0.412905 0.0582821 -0.00844108 -0.0151397 0.255428 -0.608389 -0.320788 -0.00501817 0.23633 0.609893 -0.389275 -0.0742952 -0.803017 -0.22263 -0.0967926 -0.196465 -0.0520204 0.193379 -1.39743 0.041375 0.408619 0.0103239 0.492656 -0.0302802 -2.61519 -0.0407343 0.0189049 0.532163 -0.696991 0.0392597 -0.614122 0.562594 -2.73328 0.360971 -0.202393 0.6085 2.3961 0.78828 0.211854 -0.411652 -0.0126343 0.462469 -0.903696 -1.00555 1.51002 0.0885204 0.211284 -0.493677 0.365611 0.200726 -1.2486 0.0792348 0.0912853 -0.0809991 0.747432 -1.58588 -1.15146 5.13325 -3.15978 8.14545 -0.425069 0.750673 -0.101031 -0.60706 0.726792 -1.69189 3.96247 0.0360644 -0.0571919 -0.183776 0.494504 -2.58155 0 0 0 0 0 -0.0261373 -0.088938 0 0 0 0 0 0 0 -0.00806071 0 0 0 0 -0.0146765 0 -0.00119831 0.0412957 -0.0724795 0 0 0.0185409 0 0 0.0437159 0.000877971 0 0 -0.00115865 0.0422931 0 0.0639303 0 -0.00749781 0 0 -0.00177425 0 0 0.0195575 0 0 0 0 0 0 0 -0.032452 0 0 -0.143499 0 0 0 0 0 0 0 -0.0475526 0 -0.65471 0 0.0137095 0 0 0.0141928 -0.185413 0 0.125631 0 0 0 -0.098778 0 0.0999089 0 0 0.0487595 0 0 0 0.00544179 0 0 0 0 0 0 0.165142 0 0.0670768 0 0 0 0 -0.521052 0.00863096 0 0 0.431286 0 0.0569463 0 -0.0120808 0 0 0.148578 0 -0.0571044 -0.154882 0.151628 0.0357446 0 0 -0.10673 0 -2.20304 0 -1.29076 -0.541077 0 -1.18376 -0.385746 0.0195139 0 -0.0732699 0 0 0.00938126 0 -1.60252 0.734813 0 0 0.109872 0 0 0.0125317 0.0249471 0.334738 0 -0.789527 0 1.13798 0.0915474 -0.0993756 -0.646989 0.245381 0.689923 -0.461941 -0.162228 0.499018 1.68091 -0.0555493 0 0 0 -0.0640812 -0.0400082 0 0 0 0 -0.03763 6.28961 -1.907 5.06438 0.309159 -0.443601 1.04366 -0.156075 0.170252 -0.281571 0.774685 0 0 0 0 0 0 +38 0 0 0 0 0 0.389276 0.123289 0.371813 0.459603 0 0 0.173854 0.700539 0 0.227828 0.0775508 0 0 0 0.116431 -0.653762 0 0 0 0 0.226411 0 0 -0.326122 0.414575 0.197546 0 0.195738 0 0 0.115106 0.0813792 0 0 -0.258812 0.557576 0 0 0.0454944 0.764947 0 0.225571 -0.468146 0.518062 -0.0500955 -2.61355 0.139616 0 -0.0675242 0.0357602 -0.215682 -0.224912 0.219458 0.141646 0 0 -0.125095 -3.43315 0 0.709937 0.400721 0.116834 0 0 0 0 -0.0131111 -0.236536 0 -2.58526 1.01555 0 0 0 -1.15474 0 -0.0769406 0.906457 0 -0.12564 -0.66747 1.59075 0 -0.0569569 -1.1331 1.95053 -0.99557 0 0 0 0.268581 0.0285151 0 0 0 -0.0180361 0 0 -0.00348483 0 0 0.0050886 0 0 0 0 -0.0792083 0 -0.00735529 0 0.0158446 0 -0.0641573 0.127631 0 0.00427059 0 0 0.251494 0 0.0192808 0 0 0 0 0.0375425 0.0319631 0 0.00537692 0 0 0 0 0 0 0 0 0 0 -0.0479808 0 0 0 0 0 0 0 0 0 0 0.127059 0 0 0 -0.0101572 0.0458806 0 0.0272807 0.0530057 0 -0.0841975 0 0.132651 0 0 0 -0.00227395 0 0 -0.238884 0 0 0 -0.0646642 0 0 0 0 -0.202061 0 0.389276 0.268581 0.123289 0.0285151 -0.496608 -0.0873961 0.144537 0.743263 0.140744 -0.0150791 -0.0165744 -0.277695 -0.00138195 -0.0427007 0.0156208 0.0133664 -0.0198145 -0.152975 -0.0832589 -1.11305 -0.205565 0.138233 -0.152249 0.0196464 -0.0564616 0.0375018 0.109693 -0.00747523 2.70009 -0.181799 0.232204 0.481607 0.00158072 0.993615 -0.265832 -0.018978 -0.00256594 0.0923398 -0.0289675 0.378169 0.0109546 0.00115766 1.09713 -0.656711 -0.00322117 -0.0169628 -0.026926 -0.111146 0.179728 -0.779497 1.57903 -0.0664698 0.0232093 1.44784 -0.0128408 -0.335577 -0.0352987 -0.0200123 0.178027 -0.118299 -0.301446 0.141172 -0.0638114 -0.0139016 1.87213 -0.116196 -0.951384 -0.0136382 -0.0147751 0.460554 0.0925744 0.0163457 0.0238042 -0.0308625 -0.0605107 -0.0425843 -2.57316 1.47557 -4.77454 0.824859 0.317584 -2.37077 0.068736 0.0237273 0.183619 -1.51663 0.0299539 0.0624558 0.0124556 0.260041 -0.950038 0 +39 0 0 0 0 0 -0.452555 -0.349512 0.386406 2.70173 0 0 -0.244574 -0.850091 0 -1.01016 -0.1107 0 0 0 -0.260737 -3.49095 0 0 0 0 0.422665 0 0 0.0572717 0.630041 -0.236143 0 -0.430429 0 0 0.0638237 -0.0644678 0 0 -0.00651378 -2.0835 0 0 0.0436199 -3.69447 0 -0.948807 -0.0432743 -1.11061 -0.0615181 -0.305156 0.0569094 0 0.331373 -0.250414 0.630465 -1.0438 0.499218 0.0458634 0 0 0.917782 3.00502 0 0.83988 0.288715 1.21648 0 0 0 0 0.214257 0.190651 0 -0.691329 -0.308514 0 0 0 -5.68442 0 -0.0220689 -4.406 0 -0.192797 -0.1703 -5.93851 0 -0.156846 0.395734 0.137929 -6.12245 0 0 0 -0.0281126 -0.0130047 0 0 0 0.00637464 0 0 0.00244794 0 0 -0.00170172 0 0 0 0 0.0116525 0 0.0037159 0 -0.0190007 0 -0.0328867 -0.116197 0 -0.00285495 0 0 -0.142245 0 -0.0126223 0 0 0 0 -0.0150738 -0.0207791 0 -0.00295418 0 0 0 0 0 0 0 0 0 0 0.0256078 0 0 0 0 0 0 0 0 0 0 0.0337427 0 0 0 0.0430129 -0.0640923 0 -0.126613 0.0972442 0 0.0309572 0 0.00986106 0 0 0 0.0288838 0 0 0.130986 0 0 0 0.0102163 0 0 0 0 0.129453 0 -0.452555 -0.0281126 -0.349512 -0.0130047 -0.0218654 -0.0245709 -0.141528 0.370407 -0.270164 0.0100076 0.00253295 0.406214 0.000961333 0.0395737 -0.0143703 -0.0179635 0.00748698 0.084787 0.513832 0.360822 0.316157 0.232456 0.201764 0.0782035 0.0647131 0.0265522 -0.208002 0.0113197 1.40799 -0.0948348 1.81694 -0.185931 -0.00134042 1.45334 0.722804 0.0183118 -0.000464785 0.0727873 -0.00499504 0.57651 -0.0227261 -0.00647924 -0.0113109 0.871086 0.000611659 -0.00979152 0.123744 0.0671043 0.00956532 0.158675 2.48923 -0.200756 -0.0297694 0.384109 0.0308204 0.741697 -0.111448 0.204558 0.00707952 -0.0205391 -0.691441 -0.149692 0.137601 -0.289075 2.4766 0.0476963 0.0379432 0.00233364 0.175557 -0.179956 -0.0848508 0.02342 -0.024148 0.0695632 -0.0116082 0.0412061 -20.1343 -2.74421 -7.02579 -0.647669 0.157521 -2.37798 -0.0627987 -0.0782225 -0.266685 -1.12183 -0.0166021 0.0381549 -0.116349 0.0711681 -0.519105 0 +40 0 0 0 0 0 -0.499572 -0.326278 1.06792 3.95898 0 0 0.0532942 -0.265007 0 0.071667 0.034579 0 0 0 -0.0515522 -4.45231 0 0 0 0 0.759132 0 0 0.11716 6.03067 0.0803286 0 0.228256 0 0 0.223924 0.0127044 0 0 -0.103821 -0.424962 0 0 0.0221861 -3.10241 0 -0.115716 1.20422 -0.0786385 -0.0118879 -0.433036 0.0906674 0 -0.00905651 -0.080207 0.589917 2.01657 -0.242432 -0.00810997 0 0 1.48869 1.87168 0 -0.744786 0.27462 -0.320476 0 0 0 0 0.835539 0.376476 0 3.45766 -0.407298 0 0 0 -9.15366 0 -0.367409 -10.741 0 -0.289377 -0.974488 -11.0543 0 -0.025609 -1.71766 2.42338 -19.3034 0 0 0 0.0179859 0.000875953 0 0 0 -0.0183719 0 0 -0.00136973 0 0 -0.00055866 0 0 0 0 -0.0282474 0 -0.00174452 0 -0.0136238 0 -0.21787 -0.282826 0 0.00077767 0 0 0.0627332 0 -0.0177134 0 0 0 0 -0.0777465 0.00745774 0 -0.00506504 0 0 0 0 0 0 0 0 0 0 -0.00111573 0 0 0 0 0 0 0 0 0 0 -0.000980595 0 0 0 -0.00932271 0.0240561 0 0.0432108 0.0316969 0 -0.0403374 0 -0.0224321 0 0 0 0.0155496 0 0 -0.0580437 0 0 0 -0.0090538 0 0 0 0 -0.0560774 0 -0.499572 0.0179859 -0.326278 0.000875953 -0.824092 -0.272168 -0.00335939 0.976114 -0.312046 -0.000140281 0.0249592 -0.202865 -8.30014e-06 -0.012987 -0.000267617 0.000269454 -0.0157114 -0.00314979 -0.389218 -0.839497 0.179376 0.756541 -0.0725936 -0.0519669 -0.110795 0.569774 4.04254e-06 -0.020744 0.205849 -0.195489 1.74822 -0.0649509 -1.53472e-05 3.35758 0.637436 -0.00473187 0.000243261 0.245181 -0.0173951 3.21218 -0.0207193 0.100002 -0.253711 -0.539077 0.00211732 -0.0165416 0.010128 -0.128295 0.0347642 1.76142 1.59289 -0.505344 0.0262862 1.51647 0.00218069 0.241234 -0.0513665 0.265246 0.395936 -0.74282 -1.25596 0.0680657 0.450941 0.132045 0.155654 0.0353463 0.33465 -0.0370341 -0.565023 -0.161902 0.0195411 0.0167286 -0.000639854 0.195406 0.180884 0.0070882 -19.3729 0.649201 -17.952 -0.153707 1.50021 -15.6963 0.020717 0.20653 -0.680228 -5.5477 0.000616758 0.0494164 -0.527403 0.673737 -4.47132 0 +41 0 0.344009 -0.474983 0.0179099 -0.162161 0.295169 0.0903475 -0.384222 -2.02337 -0.0336068 0.363156 0.0261396 -0.990115 -0.0175917 -0.123141 0.00209406 -3.92561 -1.51952 0.168034 -0.018851 0.344344 0.0356036 1.49403 0.0189595 -0.0981594 -0.361605 -2.61768 0.143764 -0.0201472 -0.326331 -0.122276 0.0571007 0.0535329 0.826535 0.157726 -0.0483561 0.000832765 0.882361 -2.30529 -0.0178686 0.0402445 -0.0630261 2.49163 -0.0201524 -0.98595 -0.116954 0.00508826 -0.0867348 0.190315 0.15694 -1.71548 -0.0351327 17.2529 -0.00601524 -0.0680487 -0.232946 8.54561 0.866047 0.0624943 0.234345 0.152149 -1.39392 -0.272437 -2.59158 -0.793712 0.199255 -0.426178 -0.179567 0.393544 -0.0450447 0.400513 -0.298613 -0.193109 -1.4219 0.673837 0.242485 -3.10817 11.7688 -0.522441 8.3765 0.604352 -0.28392 7.21614 -1.1025 0.665269 -0.29891 3.32843 0.084358 -0.00183215 0.164095 -0.0160032 0.258965 0 0 0 0 0 0.0179099 -0.162161 0.00707729 0 0 0 0 0.00109369 0 -0.0582848 0 0 0.00656897 0.0233509 -0.0697686 0 -0.0105946 0.0641922 -0.465242 0 0 -0.191778 0.00153903 0 -0.023236 0.386657 0 0 -0.0394695 0.189431 0 -0.0706902 0 -0.0954249 0 0 -0.015385 0 0 -0.0809134 0.0170736 0.105237 0 0.109533 -0.0417677 0 0 0.00193264 0 0.0100014 -0.265446 0.00398475 0 0 -0.0113411 -0.0151556 0 0.030739 -0.152341 0.0137998 1.26043 -0.0911578 -0.0813863 0 0.0434069 -0.165127 0.325287 -0.0357345 0.0190905 0 0 0 1.00543 -0.199773 1.59988 0.0430491 -0.0662631 0.194979 -0.00745014 0.010566 -0.0408313 0.331755 0 0 0 0 0 0 0.295169 0 0.0903475 0 0 0 0 0.0499942 0.0209846 0 0 -0.183543 0 -0.0313637 0 0.00122562 0 0 0.062388 0 0.0166291 0.0204924 -0.0405804 0.00788819 0 0 -0.00750701 0 1.93131 0 -1.1173 0.0384196 0 0.025965 -0.0699639 -0.00570128 0 0.00818418 0 0 0.0196021 0 0.351825 0.500454 0 0 0.0532763 0 0 0.0380144 -0.561286 -0.128545 0 -0.0159355 0 -0.647762 -0.0323611 -0.0219166 -0.130937 0.056174 0.307643 0.0535585 -0.0971645 0.575423 4.17346 -0.0797491 0 0 0 0.0244348 0.0454102 0 0 0 0 0.00558568 5.08115 0.0180044 2.12095 0.102098 -0.0514636 1.17645 0.00929263 0.014267 0.0608626 0.0460789 0 0 0 0 0 0 +42 0 1.13192 0.29699 0.0633248 0.127521 -0.0213763 -0.0137977 -0.560681 -1.20921 0.455705 -1.48057 -0.132314 -4.3958 -0.0158247 -1.57167 -0.0167294 -2.89203 -7.23127 -0.0179595 -0.111378 0.442493 0.0341199 -0.825122 0.0208768 -0.311275 -0.86638 -0.469696 0.258298 0.0320999 0.555135 -0.870626 0.0984457 -0.120069 -2.83937 2.00909 -0.30048 -0.0187235 0.672237 -10.4719 -0.443141 0.0503697 -0.061539 3.33073 -0.0731791 -7.71666 -0.234861 0.00407259 0.129379 -0.683639 0.10443 -0.686427 0.0697704 27.9641 0.124346 -0.0659261 0.110769 10.7339 1.12579 -0.000195226 0.166644 0.0408485 -0.306876 -0.124186 4.48198 1.51072 0.918065 0.141217 0.395869 -0.731607 -0.179085 1.2707 0.693825 0.106978 -1.34458 0.467172 -0.258623 -2.03161 46.6091 9.00791 4.31145 7.98177 -3.68689 7.36065 1.41417 -0.408376 0.528489 2.00489 0.169403 0.143196 -0.107018 0.215116 -0.440537 0 0 0 0 0 0.0633248 0.127521 -0.00773143 0 0 0 0 -0.00073808 0 -0.0294953 0 0 -0.00171022 0.0112133 -0.0292792 0 -0.00823812 0.0595366 -0.0836287 0 0 -0.0742098 0.0007885 0 -0.0366373 1.17947 0 0 -0.0152715 0.335706 0 -0.135543 0 -0.0788822 0 0 -0.0118564 0 0 -0.882348 -0.0109855 -0.0257353 0 -0.114872 -0.0783737 0 0 -0.203003 0 -0.0134553 -0.308369 0.0161431 0 0 0.00175903 0.0154315 0 0.0201286 0.0448322 -0.0121734 0.323284 -0.00958052 -0.0317232 0 -0.0507602 -0.117891 0.26814 -0.0185342 -0.244652 0 0 0 3.41934 0.140408 0.487556 0.0391253 -0.0455306 0.4356 0.00175168 -0.00419406 0.0120814 0.128655 0 0 0 0 0 0 -0.0213763 0 -0.0137977 0 0 0 0 -0.0315468 0.305795 0 0 -0.175222 0 -0.0379611 0 0.00470764 0 0 -0.0416784 0 0.0101264 -0.00321217 -0.0362337 -0.00532765 0 0 0.0117655 0 0.988514 0 -0.330204 -0.104918 0 0.100932 -0.102043 -0.00903218 0 -0.0065001 0 0 0.0515335 0 -0.0450688 -0.226628 0 0 -0.0269996 0 0 -0.0288974 1.39918 0.0567247 0 -0.048926 0 -0.640729 0.0363948 -0.0967778 0.0217773 -0.0171525 -0.1092 0.804725 -0.0475103 -0.257044 -1.46329 0.0309507 0 0 0 0.0123363 0.0430822 0 0 0 0 -0.0506633 8.92179 2.3672 -1.86509 1.25323 -0.695347 0.232726 0.196331 -0.137664 0.129831 0.125513 0 0 0 0 0 0 +43 0 1.11769 0.331653 0.0630915 0.29013 -0.0819575 -0.0159877 -0.0677654 0.0874157 0.734255 -1.3733 -0.0388397 -1.2228 -0.00722887 -0.692705 -0.0039278 -0.134494 -0.406458 -0.150485 -0.0700033 -0.355448 -0.0255152 -0.478004 0.0195284 -0.394267 -0.204515 0.242749 0.0209262 0.00931568 0.283425 -0.247859 0.116431 -0.00997492 -1.45189 0.444883 -0.0649488 -0.00590355 -0.188775 -5.94824 -0.246543 -0.100255 -0.013264 0.598401 -0.0410864 -2.6242 0.0534018 -0.021575 0.049362 -0.344833 0.0244842 -0.471332 0.204431 19.4381 0.406389 0.110054 -0.00248324 4.54682 0.82151 -0.410162 -0.0465007 -0.0293502 1.02547 0.596393 3.55373 0.620338 0.751835 -0.520759 0.0349289 -1.50989 -0.228753 -0.52065 0.91223 0.0953668 0.0756976 -0.481458 -0.14168 1.20476 27.4534 5.55677 2.1778 4.45487 -1.93991 5.36117 1.11958 -0.592045 1.65488 -0.95169 -0.0385182 0.0926936 -0.123405 0.117881 -0.224917 0 0 0 0 0 0.0630915 0.29013 0.00724972 0 0 0 0 0.00122452 0 -0.0090208 0 0 0.0045368 0.0159462 -0.00596955 0 -0.00362691 0.0212385 0.022709 0 0 -0.289169 0.00116001 0 -0.00852133 0.633477 0 0 -0.0318894 0.102077 0 -0.0309931 0 -0.0889869 0 0 -0.0112957 0 0 -0.231831 0.0168226 0.0590338 0 0.098666 0.0433294 0 0 -0.223913 0 0.016159 0.273358 -0.0257507 0 0 -0.0106998 -0.0111302 0 0.0271549 -0.155576 0.0175478 -0.490609 -0.0362908 -0.0271046 0 0.0390099 0.0542762 0.0514301 -0.00531719 0.0911624 0 0 0 -0.431077 -0.0817336 -0.359568 0.0127818 -0.00788887 -0.127682 -0.00629546 0.0073509 0.000135802 -0.0776037 0 0 0 0 0 0 -0.0819575 0 -0.0159877 0 0 0 0 0.0465556 -0.271408 0 0 -0.688704 0 -0.0969446 0 -0.00780538 0 0 0.0984706 0 -0.075802 0.0473314 -0.104686 0.00935421 0 0 -0.0595079 0 -0.22019 0 -1.87154 -0.117224 0 0.467945 -0.338742 -0.0158953 0 0.00406594 0 0 -0.0427095 0 -0.338627 0.60081 0 0 0.0445344 0 0 0.267992 0.526296 0.240299 0 -0.561071 0 -0.469626 -0.0469339 -0.162713 0.0696964 -0.0933008 -0.4614 0.303816 0.0108186 0.50991 1.09259 -0.0246151 0 0 0 -0.0929768 0.00953644 0 0 0 0 0.031065 17.4951 5.63523 -3.17929 1.50788 -0.777328 0.734504 0.403901 -0.290281 0.496969 -0.499626 0 0 0 0 0 0 +44 0 0 0 0.10968 0.395433 0 0 0 0 -0.0264801 -1.7645 -0.136464 0 -0.00460693 0 0.185156 0 0 -0.0829252 -0.0333484 0 0.00574065 0 0.165663 -0.254835 0 0 0.160288 0 0 0 0.175613 1.05836 0 0.863058 0 -0.0579519 0.842352 0 0.179345 0 -0.125731 3.71857 -0.211312 0 -1.23827 0 0 2.05164 0.549093 0 0.0459174 0 0.113966 1.10842 -0.403975 0 -0.970638 -1.0955 0.0322435 -0.0811643 0 0 0 0 -0.471457 0 0.298559 0.686043 -0.1982 0.506302 0.441902 0.484852 1.31388 0 0 0.251957 0 3.7163 0 0.459077 0.466799 0 1.13444 -0.659734 1.2321 0 2.92009 -1.13883 1.13483 -1.18311 0 0 0.151685 0.0143799 -0.178512 0.000240669 0.10968 0.395433 0.0146551 0.118988 -0.227915 -0.000236771 0.0172423 0.00338152 -0.0137003 -0.105918 0.0133908 -0.00312575 -0.00228221 0.0522527 -0.0689585 0.198836 -0.0156309 0.455948 -0.444054 0.000850139 0.824048 -0.171793 0.00135053 -0.00814512 0.223201 4.10102 0.0157861 -0.00472748 0.0570261 1.59956 -0.0331498 0.5161 -0.0185265 -0.278344 -0.00490176 -0.0471149 0.00208449 -0.0366409 -0.00115559 1.72124 0.0792211 0.0951816 -0.00246312 0.284696 -0.00994563 0.00283682 -0.00771803 0.176284 0.0821787 0.0342654 0.767274 -0.00394394 -0.0408508 0.0660731 0.0286954 -0.0189809 -0.147143 -0.0144574 1.06766 -0.103403 -6.1595 0.236445 0.0424181 -0.0410325 -0.33389 0.03323 -0.894882 -0.214272 -0.17463 -0.0216497 0.451984 0.00849084 -3.90487 0.258698 1.10944 0.183874 -0.0321136 -0.232024 0.0226555 0.00805089 -0.0931624 0.0607946 0.00374733 0.000945728 0.00320888 -0.0370515 -0.00392749 0 0 -0.178512 0 0.000240669 0 0 -0.586035 0 -1.19286 -0.0723717 0.0105998 -0.859682 -0.0112912 -0.144949 -0.0962289 -0.0743489 0.0294473 -0.423512 0 0 0 0 -0.130507 0 0.0856617 0 -0.453192 0 0 -0.0595897 0 0 -0.0148438 0 0 0.00181387 -0.00448484 0 -0.0183745 0 -0.213228 0 0 0 0.00130598 -0.0102459 0 0 0.0792834 0 0 0 -0.128975 0 0.200497 0 0.335952 -0.0927582 0.265069 0 0 0.167898 0.0444279 1.44673 0 0.227139 0 0.148306 0 -0.019821 -0.151031 0.056806 -0.08032 -0.106307 -0.00820982 0.808322 0 5.40464 0 2.29433 -0.313927 0 1.18308 -0.320837 0.276252 0 0.88273 -0.360636 0.239421 0.0197802 0 0 +45 0 0 0 -0.279898 -0.218791 0 0 0 0 2.88035 1.64663 -0.710204 0 0.742446 0 -0.351273 0 0 0.575833 -1.76146 0 0.40078 0 -0.237442 0.905056 0 0 -0.999276 0 0 0 0.603461 -0.142949 0 -1.83247 0 -0.310801 -2.96595 0 -3.18232 0 1.26037 -5.66575 -1.53281 0 2.31892 0 0 -1.58781 3.69473 0 2.62248 0 1.77563 -0.593403 -0.648663 0 -1.96726 -1.30366 -1.35834 -1.07085 0 0 0 0 0.544519 0 -0.753571 -1.98841 -4.2673 -2.2564 -0.296995 -2.52151 3.35538 0 0 1.22114 0 -1.73079 0 -2.93432 3.01273 0 -5.60216 4.52907 -2.22292 0 -7.19309 7.58927 -4.60241 4.25374 0 0 0.00758076 0.00674921 0.102493 0.0436266 -0.279898 -0.218791 0.0280468 0.00547414 -0.191634 -0.000562669 0.000333622 0.022992 -0.0626525 0.0909758 0.00560399 -0.00631619 0.0119728 0.135512 0.222134 0.0282775 0.0535116 -2.14117 0.431178 0.000534714 0.0479212 -3.7961 0.0112883 -0.00101247 -0.991355 -5.9906 0.174701 -0.0343128 -0.415448 -3.52022 -0.0319132 -1.92886 -0.0178398 -2.07903 0.00853544 -0.393006 -0.218579 -0.0632569 -0.00553762 -3.73956 0.536823 0.190918 -0.00278769 0.775479 0.844877 0.0934195 -0.0260402 -1.37051 0.0409999 -0.0670275 -0.914505 0.204947 -0.00644162 0.0341301 -0.0309054 -0.126928 -0.159348 0.156237 -1.17707 0.208309 -4.61635 0.212285 0.158746 0.0679839 0.248956 0.342009 -3.16749 1.10104 -0.290802 -0.130971 0.132369 0.013393 8.48372 1.20666 -1.80512 0.272925 1.04973 0.267025 0.0500407 0.123651 -0.455984 0.00784307 0.00517376 0.0233589 -0.112387 0.183216 -0.0434646 0 0 0.102493 0 0.0436266 0 0 0.230002 0 -0.623786 -0.0642988 0.00883454 0.343629 -0.0120838 0.0188986 0.0481698 -0.0307795 0.0143962 -0.318028 0 0 0 0 0.179977 0 0.185567 0 -0.0464903 0 0 -0.0628869 0 0 0.0065563 0 0 0.036067 0.000199779 0 -0.0028937 0 -0.0896532 0 0 0 -0.000413313 -0.00643371 0 0 0.162542 0 0 0 -0.105029 0 0.128007 0 -0.718915 0.238407 -0.563241 0 0 -0.531793 0.47685 0.341422 0 0.119384 0 0.0280106 0 -0.0298357 -0.320043 0.122458 -0.0226845 -0.0709534 -0.0636243 0.458277 0 -0.309659 0 0.624012 0.656981 0 -0.342239 0.684252 -0.50859 0 0.475506 0.0507657 -0.266166 0.225808 0 0 +46 0 0 0 -0.0965119 -0.0763895 0 0 0 0 0.918428 -0.00303088 0.102066 0 0.304726 0 -0.0331261 0 0 0.0239174 -0.187546 0 0.0727289 0 -0.0687758 0.190154 0 0 -0.760598 0 0 0 0.423983 0.452105 0 -1.70869 0 -0.0355374 -2.64008 0 -0.320507 0 0.330808 -6.05675 -0.17161 0 -0.311097 0 0 0.399769 0.597662 0 0.100094 0 0.8545 0.45842 -0.585703 0 0.518846 -1.00914 0.143651 -0.110773 0 0 0 0 0.691423 0 -0.728837 -3.11898 -2.99006 -0.00683174 0.332789 -0.460774 1.02112 0 0 2.41241 0 -0.93073 0 0.595786 -0.148607 0 -0.778561 0.724198 0.097166 0 -0.156129 0.631529 0.876129 -0.065471 0 0 0.0371394 0.00384188 0.0946707 0.0261346 -0.0965119 -0.0763895 0.0242634 0.00907555 -0.159692 -8.72954e-05 -0.000281212 0.0189352 -0.0122741 0.0417885 0.00354136 -0.00109324 -0.00234131 0.0163181 0.160509 0.0496604 0.0257885 -1.05695 0.256253 0.000234355 0.0221682 -1.43123 0.00113513 -0.00655948 -0.475349 -4.14368 -0.0383311 -0.00461659 -0.261444 -2.07605 -0.0298984 -0.842576 -0.0101895 -0.671776 -0.018918 -0.0721645 -0.123508 -0.0122413 -0.000781114 -1.47095 0.383206 -0.0275137 -0.00175502 0.49164 0.210785 0.0106643 -0.0102078 -0.685345 -0.0592829 -0.0144584 -0.912605 -0.0201624 -0.0102363 0.0214874 0.00117336 -0.0913158 -0.038466 -0.0499895 -0.825346 0.0977509 0.0525919 -0.167865 0.133239 0.0166489 0.170211 0.0179397 -0.802063 -0.0896448 0.0845923 -0.00981601 -0.116986 0.00276931 3.33705 0.340764 -0.808327 0.0665249 0.245916 0.226461 0.00969763 0.0241106 -0.0365704 -0.0453667 0.00118297 0.00329185 -0.00497824 0.0424741 0.00953657 0 0 0.0946707 0 0.0261346 0 0 0.0646691 0 0.35216 -0.0463742 0.00729021 0.204103 -0.000353381 0.0577389 0.078175 0.0701728 -0.0358033 -0.45167 0 0 0 0 0.0480591 0 -0.015212 0 0.36616 0 0 0.133264 0 0 0.0195645 0 0 0.0202019 0.0050189 0 0.0335552 0 0.13612 0 0 0 -0.00311375 0.0271312 0 0 -0.217976 0 0 0 0.420723 0 -0.284652 0 0.432054 -0.0265262 1.4404 0 0 0.677433 -0.0373499 0.941653 0 0.124229 0 -0.0273949 0 0.18211 0.258154 0.0533028 0.0656624 -0.100878 0.0340398 -0.139205 0 0.804388 0 2.27319 -0.622063 0 0.748407 -0.383112 0.283688 0 0.545294 -0.284395 0.282447 -0.0573098 0 0 +47 0 -0.309405 -0.333361 0.0722735 0.0461157 -0.409428 -0.152147 0.602574 2.68075 1.05483 -1.10092 -0.308535 0.162133 -0.0489199 -0.175956 -0.0464326 -0.608302 -4.43965 -0.126813 -0.265514 0.327656 -0.067076 0.268056 0.218792 -0.326123 0.428687 -0.0867885 0.06214 0.061268 1.39655 0.0467333 0.482478 -0.0595011 0.933951 -0.042084 0.0772709 -0.133969 0.16234 3.80579 -1.66611 0.0358616 0.0566104 -0.281141 -0.684157 -1.17461 0.339595 -0.01418 0.291006 -0.666948 -0.0504844 3.59038 0.0652754 4.90719 -0.122282 -0.356986 0.205773 -1.36195 -0.417114 0.448649 -0.308508 -0.0405492 1.10372 -0.0656381 2.2167 2.43545 -1.64187 -0.148192 -1.76989 0.24183 -1.1483 0.105906 0.330231 0.409365 -1.25696 0.285798 -0.188006 0.169022 -13.7605 1.36772 -7.4831 -2.94442 5.25654 -9.77555 1.41618 -0.637609 1.26575 -5.63127 -0.643028 1.6715 -1.64498 1.97062 -2.65486 0 0 0 0 0 0.0722735 0.0461157 0.00233875 0 0 0 0 0.00208623 0 0.128699 0 0 -0.00223309 -0.0276281 0.554446 0 0.0709289 0.472532 1.04831 0 0 -0.527317 -0.00129698 0 0.391269 2.76118 0 0 -0.0327216 1.23164 0 0.939248 0 -0.216506 0 0 -0.00826218 0 0 2.15298 0.0452941 -0.0465706 0 0.0553809 0.130849 0 0 0.0190183 0 0.00615396 0.476982 -0.146958 0 0 0.00131732 -0.00211294 0 0.0193754 0.189613 0.0490939 -5.9599 0.042978 0.0605 0 -0.0472877 0.981084 0.373233 -0.350867 -0.307402 0 0 0 -18.551 -0.457427 -5.09614 -0.0832193 0.208466 -2.76559 0.00108674 -0.00245339 0.0356466 -1.10268 0 0 0 0 0 0 -0.409428 0 -0.152147 0 0 0 0 -0.0231614 -0.713117 0 0 0.00150344 0 0.005552 0 -0.0201281 0 0 0.0504224 0 0.0801948 0.0660556 0.0935796 0.00572808 0 0 -0.174242 0 -4.0758 0 0.980847 0.0471136 0 0.615543 0.158307 0.0122586 0 -0.00445738 0 0 -0.0904751 0 -0.560654 -0.243802 0 0 -0.0096479 0 0 0.0323832 0.815155 0.160888 0 -0.548775 0 0.475922 -0.116416 0.0270276 -0.243115 -0.00155765 0.537604 -0.296891 0.0666318 0.448813 -2.13202 0.0676606 0 0 0 -0.153733 -0.0653686 0 0 0 0 0.22508 -3.75383 -0.0633044 -2.43124 -0.179436 0.238421 -0.963924 -0.0126322 -0.0178821 0.0169872 -0.470574 0 0 0 0 0 0 +48 0 0.951496 0.208907 -0.189744 0.138484 -0.0827031 -0.0111755 0.253104 1.48331 1.49556 -0.470195 -0.0128523 -0.350247 0.553942 -0.209716 -0.13 -1.41907 -1.42212 0.14038 -0.718665 0.459658 0.269384 -0.303913 -0.455166 0.111703 0.269157 -0.634027 -0.0600155 -0.00419739 0.47303 -0.121521 -0.086458 -0.320983 -1.32971 -0.0397813 -0.0261136 -0.0213766 0.180998 -4.88777 0.0400257 0.0884664 0.692352 0.23813 0.0670048 -0.472117 0.862992 0.0213841 0.0188797 -1.5468 -0.0451399 0.386603 0.48683 3.03334 1.08589 -0.198049 0.0907113 -1.08293 -0.223164 -0.106183 -0.52222 -0.572993 -1.02584 0.107667 2.92695 -1.73877 -0.313791 -0.336516 1.71968 0.192791 -1.49944 1.96777 0.592756 0.163585 -0.615809 -0.103281 0.0999887 0.213425 15.2839 3.6384 -2.57933 4.48672 -3.81703 6.06029 0.692137 -0.447901 0.516651 -1.8191 -1.63409 0.201238 -1.26812 0.0930307 -0.899234 0 0 0 0 0 -0.189744 0.138484 0.0168413 0 0 0 0 0.00693258 0 0.00483502 0 0 -0.00144522 0.0227848 -0.132392 0 -0.0229419 -0.0900457 0.0827223 0 0 -0.936297 0.00125519 0 0.485493 1.79827 0 0 -0.0927238 0.342471 0 0.502496 0 -0.382421 0 0 -0.0399527 0 0 -0.406688 0.143256 -0.0398635 0 0.349172 0.178703 0 0 -0.800913 0 0.0183733 -0.163089 -0.0335426 0 0 0.00277994 -0.0370417 0 0.00159903 -0.0503297 -0.0438913 -8.28079 0.150544 -0.00897148 0 0.0524684 0.0918431 -0.151676 -0.303562 -0.491115 0 0 0 0.175893 0.159825 -0.255461 -0.00222942 0.0123515 -0.0858853 0.00165194 -0.00418004 0.0549714 0.0229846 0 0 0 0 0 0 -0.0827031 0 -0.0111755 0 0 0 0 0.0632071 -0.261054 0 0 -0.186538 0 -0.0166163 0 -0.00452976 0 0 0.0363317 0 -0.073458 0.0271256 -0.030735 0.00627062 0 0 -0.0189836 0 1.43945 0 -1.5555 -0.0529083 0 0.367447 -0.2505 -0.00278365 0 0.00554074 0 0 -0.0492894 0 0.0991792 0.27709 0 0 0.0379742 0 0 0.316018 0.186628 0.0725598 0 0.513215 0 -1.36988 0.0611951 -0.146668 -0.28715 -0.0658008 0.0980798 0.74921 -0.158429 0.103767 2.89338 0.0654504 0 0 0 -0.0657368 0.0490626 0 0 0 0 0.0558938 14.2941 2.76301 -1.76228 1.22429 -0.922726 1.36975 0.168424 -0.166655 0.210344 -0.224287 0 0 0 0 0 0 +49 0 0.727074 0.207731 0.254069 0.179395 0.0792974 -0.0298635 0.422933 1.19921 3.99209 -1.13674 -0.174978 -0.435512 -0.143642 -0.45272 -0.0974656 0.223238 0.829662 -0.212864 -0.762899 0.600346 0.01065 -0.124074 0.777076 0.112802 0.252475 0.037646 0.500232 0.0305262 0.646718 -0.104529 1.77467 -0.191123 -0.699176 1.33432 0.0632594 -0.0672093 2.02233 -3.76031 -0.88252 0.0642389 0.254998 5.50696 -0.401378 -1.55552 1.31062 0.00900462 0.143188 -1.60406 0.311651 0.390319 -1.01912 -1.51163 1.49813 -0.297019 0.261265 0.111408 0.731042 0.119203 0.0500855 -0.187783 -1.6792 -0.294257 0.492304 -1.27306 -1.19648 -0.163836 0.290835 1.8243 -4.33724 1.33304 0.107492 0.155107 -3.38682 0.249273 -0.328707 -3.08748 12.3839 2.66072 0.546376 0.915233 -0.302606 3.96693 1.38342 -1.55092 2.22713 -2.45169 -2.48168 1.1987 -1.85804 1.01804 -1.22942 0 0 0 0 0 0.254069 0.179395 0.0212322 0 0 0 0 0.0102342 0 -0.0284601 0 0 -0.00524581 -0.0898869 0.0556919 0 0.00314443 0.708924 -0.122618 0 0 -0.901126 -0.0041441 0 -0.147435 3.45568 0 0 -0.0809411 1.5606 0 -0.696384 0 -0.498287 0 0 -0.0450789 0 0 -1.7927 0.215861 -0.11612 0 0.444484 0.195983 0 0 -0.89934 0 0.0269997 0.43856 -0.0263697 0 0 0.00893733 -0.0430782 0 -0.0127293 0.0336571 -0.0713305 -8.21982 0.305745 -0.0580915 0 0.0569676 -0.217397 0.447028 -0.401605 -1.17398 0 0 0 12.7192 0.825248 1.16845 0.0545842 -0.131189 1.80431 0.00386217 -0.00943875 0.127939 0.158192 0 0 0 0 0 0 0.0792974 0 -0.0298635 0 0 0 0 0.0554304 0.737181 0 0 -0.419915 0 -0.05659 0 0.00762004 0 0 0.0111732 0 -0.0899871 0.0437063 -0.0755632 0.00328154 0 0 0.0391216 0 1.84581 0 -1.55033 0.163208 0 0.20174 -0.325145 -0.0116809 0 0.0085263 0 0 0.0996055 0 0.453644 -0.284251 0 0 -0.02721 0 0 0.0315271 0.548262 0.282858 0 0.627984 0 -0.650108 0.219835 -0.255142 0.455692 0.042941 -0.433924 0.553022 -0.132128 -1.12987 -4.48952 -0.116869 0 0 0 0.0841997 0.142832 0 0 0 0 -0.228902 10.8585 2.80919 -1.08895 0.809765 -0.655206 1.02034 0.263738 -0.253208 0.346646 -0.317343 0 0 0 0 0 0 +50 0 1.45105 0.439237 0.326244 0.288501 -0.133011 -0.122435 0.173007 0.971718 0.36857 -2.59652 -0.245174 0.387551 -0.515663 -0.208678 -0.0480204 1.68547 7.02247 -1.35499 0.226106 0.540805 -0.775662 -0.51185 0.604953 -1.31478 0.376618 0.55828 0.339844 0.056587 0.417731 0.0895559 0.532654 -0.164491 -1.28526 0.105631 0.125981 -0.0537335 0.70234 -5.32595 -0.605096 0.0329047 -0.625427 1.06726 -0.0594351 -0.260344 -0.227107 -0.0152614 0.159062 -0.0778375 0.534444 -0.12959 0.115034 -6.09278 -0.310802 0.360625 -0.163815 -1.34487 0.041543 0.107348 0.736715 0.0431376 0.56753 0.189447 1.70278 -1.96347 -0.149915 -0.346443 2.40491 0.212872 0.239576 1.01982 0.78118 -0.4454 -0.735229 -0.274494 0.014626 -1.71355 17.2157 7.47716 -2.40793 6.72851 -3.15338 4.04503 4.80517 -1.35556 1.67417 -1.42048 0.991826 1.0952 -0.784371 0.756333 -0.470098 0 0 0 0 0 0.326244 0.288501 0.00355687 0 0 0 0 -0.00254144 0 0.0343391 0 0 -0.00299187 0.00519342 0.119033 0 0.0223115 -0.123953 0.299257 0 0 0.084193 0.000431036 0 -0.296772 -0.384686 0 0 -0.0220692 -0.382273 0 -0.533083 0 0.266588 0 0 0.0135767 0 0 -1.6132 -0.0515984 -0.0618869 0 0.0707749 0.0480815 0 0 -0.543186 0 0.00581795 -0.273565 -0.0120013 0 0 0.00302892 -0.00956223 0 -0.00536835 -0.287945 0.0132637 0.850628 0.0666197 0.0444854 0 0.0886916 0.0576575 0.417604 -0.15623 -0.0615806 0 0 0 7.50731 0.494343 -0.757265 0.0291286 0.0248672 0.164528 0.00211695 -0.000295099 0.0252357 -0.175491 0 0 0 0 0 0 -0.133011 0 -0.122435 0 0 0 0 -0.053535 0.555182 0 0 -0.356319 0 -0.0401424 0 -0.00426789 0 0 -0.0201807 0 0.0375622 0.0171728 -0.00527476 -0.00537442 0 0 -0.0549343 0 -0.578282 0 -1.541 -0.316673 0 0.146773 -0.137587 -8.65485e-05 0 -0.00507896 0 0 0.0564238 0 -0.911111 -0.266249 0 0 -0.0313813 0 0 0.180921 0.250872 -0.00610559 0 0.875026 0 -0.0435322 0.172535 -0.123189 -0.18136 0.0707138 0.428827 0.0857088 -0.023293 0.0806175 3.74352 -0.0214563 0 0 0 0.0573314 0.0309027 0 0 0 0 -0.151976 16.7138 2.69617 -0.435853 1.04915 -0.519861 0.56473 0.234507 -0.195392 0.199935 -0.0655046 0 0 0 0 0 0 +51 0 -0.14529 -0.357642 0.016619 -0.0387256 0.136768 0.0438613 -0.297345 -1.55309 -0.146251 -0.354934 0.0488003 -0.145674 -0.11455 0.405844 -0.0366409 -1.85288 -6.81358 -0.0051271 -0.179544 -0.0919027 -0.144479 0.30535 0.129142 -0.538268 -0.463211 -0.51664 0.099821 -0.0020966 0.0147332 0.0492159 0.093639 -0.0618189 0.648409 0.180811 -0.0511017 0.0294272 0.0720014 1.47094 0.278578 -0.0192909 -0.302008 0.157866 0.221459 0.400378 -0.638233 -0.00334811 -0.0212426 -0.325722 -0.711016 -0.535203 -0.388687 2.15677 0.121602 -0.147238 0.0288107 -2.30348 0.200749 0.1282 1.23741 0.707908 -0.280856 -0.0326962 -1.34679 1.23006 1.10476 -0.583504 -0.586303 -0.346406 0.0690394 1.54911 -0.00487871 0.441815 -0.177005 -0.54295 0.0428038 1.90428 -2.73222 -1.16082 2.93872 -0.854551 1.30626 -3.62627 2.08427 -0.246212 -1.15126 2.52267 2.7873 -1.24367 0.326949 -0.142083 -0.0165802 0 0 0 0 0 0.016619 -0.0387256 -0.0241169 0 0 0 0 -0.0134244 0 -0.0687204 0 0 -0.0022336 -0.000882573 -0.215407 0 -0.0266376 0.26978 -0.50172 0 0 0.927009 -0.000792439 0 0.583832 -1.42298 0 0 0.0865371 -0.105291 0 1.08389 0 0.53272 0 0 0.0531625 0 0 2.04798 -0.262742 -0.0113186 0 -0.476036 -0.213203 0 0 0.696764 0 -0.00126125 1.44946 -0.00854 0 0 0.0085681 0.0742846 0 -0.0122929 -0.0112793 0.101064 3.58683 0.0238123 -0.201563 0 -0.101627 0.063411 0.181148 0.0579365 0.306331 0 0 0 -3.09824 0.217294 1.7484 0.00174758 0.132684 -1.42408 0.000565931 0.00671497 -0.0560685 0.153774 0 0 0 0 0 0 0.136768 0 0.0438613 0 0 0 0 -0.0541343 0.0415322 0 0 -0.00527611 0 -0.00933488 0 0.00344985 0 0 0.00167328 0 0.217483 -0.0207853 0.0150958 -0.00124255 0 0 0.0524398 0 -0.452361 0 0.802123 0.0774992 0 -0.174549 0.394253 0.00036997 0 -0.00514014 0 0 -0.00472504 0 0.193973 0.180455 0 0 0.015994 0 0 0.188748 -1.58478 -0.0960703 0 -0.0732507 0 0.659922 -0.104711 0.124996 -0.138604 -0.038403 0.143701 -0.726152 0.0601316 -0.0920034 -1.7356 0.00133888 0 0 0 -0.110539 -0.0241495 0 0 0 0 0.0194355 -2.34236 -0.804624 1.7705 -0.531678 0.705625 -0.92233 0.0173458 0.0573643 -0.1727 0.241746 0 0 0 0 0 0 +52 0 0.285161 0.371355 0.270295 0.204552 -0.00336214 -0.0719047 0.490567 1.11793 0.409516 -2.45911 -0.0416554 0.190127 -0.43833 -0.195317 0.214319 0.944586 2.36773 -0.916516 0.77592 0.146531 -0.505509 -0.522239 0.521897 -1.23183 0.341395 0.512342 0.718809 0.0187827 0.58706 0.0604018 0.504104 0.372846 -1.2318 1.03918 0.112852 0.0332082 2.00257 -3.10906 -0.536319 -0.0239697 -0.548067 3.77899 -0.0475057 -1.16742 -0.264512 -0.00888342 0.110182 1.11282 0.353911 0.27531 -0.229228 -1.62939 -0.402079 0.943479 -0.363295 -0.938064 -0.835513 -0.255259 0.734033 0.142055 0.372258 0.297769 1.60791 -0.750713 -0.370358 -0.584875 1.58049 2.02461 0.0649054 0.914955 0.759453 -0.301944 -0.547291 0.0341247 0.139303 -1.22989 6.70262 5.96747 -4.09317 5.82886 -2.1858 1.8533 4.36815 -1.0467 1.32868 -1.64768 1.15518 0.907784 -1.13307 0.886204 -0.660655 0 0 0 0 0 0.270295 0.204552 0.00468702 0 0 0 0 -0.00107555 0 -0.0199619 0 0 0.000171554 0.0287365 -0.0639946 0 0.0039855 0.522784 -0.203285 0 0 -0.36903 0.00161097 0 0.101409 2.43212 0 0 0.00141534 1.12861 0 0.401604 0 0.0709269 0 0 0.0325937 0 0 0.461081 -0.0238418 0.000444464 0 0.0904144 0.209762 0 0 -0.179645 0 0.00861757 0.506763 0.00546781 0 0 0.00500952 -0.00389948 0 -0.0140875 0.294733 -0.037216 -3.17472 0.06304 -0.0508287 0 -0.0715157 -0.0577974 -0.353021 0.0164286 -0.159543 0 0 0 3.09033 0.326197 1.1376 0.0213116 0.0031087 0.0811372 0.00120268 -0.000317853 0.0118638 0.0632013 0 0 0 0 0 0 -0.00336214 0 -0.0719047 0 0 0 0 0.0517495 0.624797 0 0 -0.404321 0 -0.0384972 0 0.0102363 0 0 0.00534916 0 0.0139552 0.0913482 -0.0212227 0.00369252 0 0 0.0529898 0 3.39142 0 0.790481 0.149643 0 0.555106 0.188316 -0.00171023 0 0.0108165 0 0 0.0914161 0 0.711671 -0.0609845 0 0 0.00643378 0 0 -0.316824 2.86753 0.152767 0 0.628298 0 -0.160208 0.162184 -0.113037 0.055034 0.0658995 0.367809 0.703789 -0.0141577 -0.452267 1.03129 -0.0337551 0 0 0 0.344206 0.0629751 0 0 0 0 -0.296023 2.946 2.72364 -2.98106 0.578264 -0.630564 0.419854 0.286393 -0.252572 0.266869 -0.309584 0 0 0 0 0 0 +53 0 0.627836 0.131904 0.0398322 0.117364 -0.180096 0.00421504 -0.188413 0.264855 0.165783 -0.407004 0.0632934 0.84639 -0.0389314 1.21901 0.0764618 1.38283 3.58023 -0.0402929 0.532824 0.123276 0.0202771 0.0810752 0.0743037 -0.0651056 0.140667 0.540303 0.420917 -0.0201611 -0.276656 0.269179 0.0688951 0.123256 -0.0393149 0.647989 0.0262415 0.0366956 0.563174 -1.77562 0.078028 0.0100463 -0.0169535 0.530494 0.0546332 3.76386 0.114151 -0.00577153 -0.0675606 0.883398 0.142129 0.558772 0.537108 -0.17878 0.130245 0.564436 -0.3152 -0.634961 -0.325272 -0.580209 -0.1781 -0.0445555 0.842297 0.51965 0.821994 -0.636443 -0.755474 -0.232613 1.28483 1.16492 -0.284874 -0.397476 0.843615 -0.140856 -0.676373 -0.946189 0.0575068 -0.355263 7.9368 1.58794 0.0699354 1.51752 -1.2305 1.57583 0.543874 -0.570819 0.940713 -1.5653 -0.347561 -0.0012355 0.319032 -0.354719 0.495103 0 0 0 0 0 0.0398322 0.117364 -0.00501976 0 0 0 0 -0.00292607 0 0.00478226 0 0 -0.00417126 -0.0410108 0.103644 0 -0.00351046 -0.336926 0.31355 0 0 0.378854 -0.00210244 0 -0.160695 -1.4561 0 0 0.0313934 -0.878559 0 -0.488876 0 0.139122 0 0 0.0087169 0 0 -1.33755 -0.0534199 -0.0832784 0 -0.0893089 -0.126906 0 0 -0.116846 0 0.000732418 0.26845 -0.033116 0 0 -0.00474867 0.0185532 0 0.0206478 -0.476652 0.0419044 3.24451 0.0463322 0.0230714 0 0.109622 0.100182 0.276689 0.116695 -0.0313154 0 0 0 1.53164 0.151359 -1.50473 0.00438059 0.0535977 -0.422619 0.000389745 0.00132966 0.0127477 -0.217666 0 0 0 0 0 0 -0.180096 0 0.00421504 0 0 0 0 -0.0107494 -0.358652 0 0 -0.134169 0 -0.0211366 0 -0.0156238 0 0 0.0864251 0 0.0456869 -0.0333979 -0.0441038 0.010776 0 0 -0.105784 0 -3.44488 0 -1.35795 -0.187009 0 -0.149198 -0.181355 -0.00692494 0 -0.0047647 0 0 -0.0532644 0 -0.942333 0.169119 0 0 0.0273991 0 0 0.252886 0.178531 -0.192089 0 0.0176665 0 -0.100175 -0.01472 0.0783595 -0.304262 0.0487109 0.244113 0.139132 -0.000936692 0.49171 4.64298 0.0126385 0 0 0 -0.18655 -0.045263 0 0 0 0 0.126491 18.6539 2.58031 0.223969 0.88302 -0.476638 0.762878 0.138441 -0.0968436 0.0966078 0.0550349 0 0 0 0 0 0 +54 0 0.189541 0.0493996 0.192928 0.0638854 0.140093 -0.0092573 -0.197867 -0.853797 -1.3807 -0.869055 0.0431119 -0.00601442 -0.549767 -0.110715 0.168508 -0.539366 -2.39002 -0.578192 0.84201 -0.20952 -0.437469 -0.202854 0.462772 -0.694164 -0.193442 -0.0493239 0.772629 0.0234458 0.621622 0.0282907 0.0189118 0.304415 -0.393961 0.921672 -0.012971 0.0766792 1.9543 -1.22358 0.132516 -0.0635219 -0.888225 2.71753 0.322002 -0.704091 -1.26118 -0.0168665 0.116095 1.36746 -0.876697 -0.839503 -0.0600357 -3.382 -1.28117 0.32761 0.001668 -1.44119 -0.289951 -0.0380533 0.744002 1.01426 -0.12063 0.277664 0.450133 0.361817 0.781723 -0.704674 0.894061 1.08754 1.74513 1.60481 0.431887 0.672638 -1.93611 0.355957 -0.113638 -0.76802 4.75205 0.828361 0.481935 2.54945 -0.784702 -1.23008 3.26691 -0.492761 -1.55355 2.53116 3.83998 -1.5005 0.182164 0.52157 -1.11245 0 0 0 0 0 0.192928 0.0638854 -0.0305561 0 0 0 0 -0.0172207 0 -0.0618582 0 0 -0.00205074 0.0056483 -0.158759 0 -0.0254843 0.421774 -0.396326 0 0 1.03732 -5.61422e-06 0 0.294324 -0.502665 0 0 0.079437 0.310672 0 0.573943 0 0.776866 0 0 0.0667475 0 0 0.966407 -0.345949 -0.0193612 0 -0.618485 -0.0725266 0 0 0.556376 0 0.00156381 1.15975 0.00300775 0 0 0.00452333 0.091857 0 -0.0118654 0.207934 0.060018 2.82782 0.00603712 -0.128853 0 -0.144247 0.0761064 0.718994 -0.16085 0.495632 0 0 0 2.34512 0.404494 1.58846 0.0238086 0.105968 -0.913444 0.000771823 0.00712706 -0.0562289 0.088372 0 0 0 0 0 0 0.140093 0 -0.0092573 0 0 0 0 -0.0378174 -0.150656 0 0 -0.124929 0 -0.0133892 0 -0.00983583 0 0 0.0519793 0 0.136394 -0.00603374 0.0297121 0.00383124 0 0 -0.0715217 0 -0.510718 0 0.92174 -0.0705216 0 0.0809071 0.408272 0.0032258 0 -0.00588488 0 0 -0.0273259 0 -0.10055 0.263695 0 0 0.0230689 0 0 0.360585 -0.311191 -0.175382 0 0.650048 0 0.519988 -0.130976 0.171397 -0.374984 -0.105819 0.513453 -0.440822 0.148448 0.558008 4.54507 0.0883159 0 0 0 -0.0937556 -0.0905295 0 0 0 0 0.167362 0.402162 0.392892 0.188196 -0.0522356 0.350845 -0.721562 0.0926361 0.012995 -0.146497 0.223761 0 0 0 0 0 0 +55 0 -0.266048 -0.494283 -0.330323 -0.203293 0.263161 0.17926 -0.291098 -1.69897 -3.36917 2.04217 0.370867 -0.0610474 0.361871 1.39733 0.115835 -2.97503 -11.1181 1.14193 0.308523 -0.788517 0.66341 0.677539 -0.795244 1.04662 -0.571065 -0.9422 -0.34364 -0.0943288 -1.30281 0.100623 -1.54388 0.244723 1.31308 -0.520314 -0.119863 0.113839 -0.509595 3.02998 1.56053 -0.0730259 0.128812 -2.08482 0.542793 2.84811 -0.81224 0.00652172 -0.361395 0.998302 -1.18415 -0.0227834 -0.150754 4.83026 -1.18167 0.100115 -0.0860377 -0.487622 -0.724068 -0.0103997 -0.548022 0.171583 0.908799 0.0470032 -3.0139 1.67749 0.237731 -0.307027 -2.42972 -0.150336 3.77692 -1.09037 -0.0920214 1.04515 0.165726 -1.06265 0.255396 0.369173 -11.2014 -6.04771 4.97882 -4.83539 2.08184 -1.57506 -2.37162 0.45994 -0.81294 1.40574 2.47307 -3.21215 2.71016 -2.73799 2.33151 0 0 0 0 0 -0.330323 -0.203293 -0.0323939 0 0 0 0 -0.0159471 0 -0.0682711 0 0 -0.00026129 -0.00561982 -0.196057 0 -0.0282503 -0.0317962 -0.449117 0 0 1.1417 -0.000977121 0 0.557248 -1.65474 0 0 0.0974688 -0.379548 0 1.01727 0 0.411541 0 0 0.0337769 0 0 1.9433 -0.32004 0.0139668 0 -0.650836 -0.223372 0 0 0.759803 0 -0.00747891 0.00391156 0.0221557 0 0 0.000375206 0.0916617 0 0.00438238 0.147646 0.0478583 1.81879 -0.0794576 -0.13125 0 -0.139903 -0.0532594 0.142738 -0.0418616 0.236999 0 0 0 -8.33436 -0.344346 1.06117 -0.0313016 0.0396332 -0.785061 -0.00122672 0.00215694 -0.0324855 0.218473 0 0 0 0 0 0 0.263161 0 0.17926 0 0 0 0 -0.0185691 -0.315838 0 0 0.151333 0 0.0387428 0 0.0255115 0 0 -0.0676711 0 0.0806394 -0.0258848 -0.0208226 -0.00264655 0 0 0.178704 0 0.560156 0 0.023774 0.235219 0 -0.388678 -0.000719972 0.00682783 0 -0.000749449 0 0 -0.00941204 0 0.791129 0.399501 0 0 0.0672108 0 0 -0.161676 1.20897 -0.332819 0 0.127744 0 0.337252 -0.193087 0.294854 -0.221428 0.0620658 0.160626 0.098313 -0.0223689 -0.423191 0.456871 -0.0277303 0 0 0 0.0914024 -0.0132629 0 0 0 0 -0.0136923 2.97153 -0.516043 2.207 -0.135128 -0.257427 0.663798 -0.166853 0.128075 -0.0962832 0.274262 0 0 0 0 0 0 +56 0 -0.0404916 -0.233571 -0.343126 0.00095837 -0.315225 0.0979722 -0.690927 -1.42935 0.392377 2.83807 0.0970542 -0.503429 0.606576 0.82062 -0.0283656 -0.509139 0.953511 1.46614 -0.234111 0.857441 0.849833 0.611464 -0.667519 1.44158 -0.676973 -0.415711 -0.563233 -0.0692642 -0.349724 -0.047472 -0.34672 -0.0353392 0.718362 -0.54606 -0.274376 0.0220357 -1.28057 0.0887757 0.082403 0.216573 0.744832 -2.41761 0.0494525 1.22643 0.651218 0.0574626 -0.160967 -0.462478 -0.261692 -0.179704 1.29749 5.94749 -0.263461 -0.382708 -0.017018 -5.01233 -0.538964 0.612489 -1.52265 -0.18045 1.27747 -0.144318 -0.207023 2.66841 1.18242 -0.288094 -2.80317 -0.986705 -0.370555 -2.10529 0.491416 0.0766118 1.39355 -0.60848 0.00970543 5.81212 12.107 -2.8443 2.67789 -2.24037 0.338972 -0.707403 -4.76584 1.74606 -2.15641 0.723265 -2.00456 -0.0140469 0.268868 -0.0946527 0.289338 0 0 0 0 0 -0.343126 0.00095837 -0.00308022 0 0 0 0 0.00536703 0 -0.0333616 0 0 0.00177804 0.01204 -0.123814 0 -0.0163785 0.0515492 -0.0801113 0 0 0.463585 0.000533022 0 0.335291 1.702 0 0 0.0836648 0.331416 0 0.682497 0 0.0749347 0 0 0.0202088 0 0 0.828586 0.107245 0.0313249 0 -0.0489018 -0.067964 0 0 0.39239 0 -0.0096209 0.158116 -0.000708922 0 0 -0.00606734 0.00550451 0 0.0372108 0.10502 0.020565 -0.504676 -0.0908201 -0.0610984 0 -0.018817 0.0554574 0.106192 0.0151424 0.248486 0 0 0 -7.24919 -0.412459 -0.280383 -0.00202113 -0.00143696 -0.654819 -0.00291273 0.00375188 -0.0241212 -0.00355426 0 0 0 0 0 0 -0.315225 0 0.0979722 0 0 0 0 0.0676525 -1.20393 0 0 -0.0154725 0 -0.0146499 0 -0.0204281 0 0 0.0893982 0 -0.153227 -0.00673019 -0.0854605 0.0102206 0 0 -0.142237 0 -1.92106 0 -1.06931 -0.100879 0 0.0576028 -0.530692 -0.012937 0 0.00129196 0 0 -0.139779 0 -0.26108 0.527522 0 0 0.0665149 0 0 -0.166915 1.83341 0.000140655 0 -1.17424 0 -0.111361 -0.00872107 0.00934997 -0.410743 -0.0593211 0.554125 0.403331 0.165556 1.57814 1.81314 0.167826 0 0 0 -0.124926 -0.141398 0 0 0 0 0.2916 18.5935 3.10726 -2.19762 1.24926 -0.488443 0.0947018 0.127951 -0.0633131 -0.00623437 -0.0184301 0 0 0 0 0 0 +57 0 0.00412685 -0.0401682 0.0381537 0.0273122 0.174181 0.110082 -0.393449 -1.97904 0.126 0.623194 0.246485 0.276919 -0.0441887 0.888919 0.319279 -0.831954 -1.87342 0.425011 1.44645 0.0842351 0.142086 0.0544304 0.0578757 0.145067 -0.554304 -0.362597 0.26924 -0.0413338 0.128608 0.103406 0.0983293 0.472145 -0.0554955 0.985835 -0.104101 0.164264 1.13422 -0.904196 0.83797 0.0511318 -0.015101 3.27268 0.553357 2.51956 0.0442765 0.0199638 -0.0508072 2.13242 -0.920407 -1.23077 -0.131649 3.00292 -1.62453 0.932023 0.159771 -2.67725 -0.471475 1.24452 0.125224 -0.129142 -0.79405 0.112195 -1.19123 1.45976 1.01897 -0.471281 -0.793766 -0.694393 -0.338103 0.689262 0.355688 0.212024 -2.44676 0.406326 0.103923 -0.615743 7.4199 -2.76676 6.68889 -1.73737 0.5979 0.302028 -0.887853 0.242412 -1.41291 3.86501 -0.13629 -1.28204 -0.216254 -0.324368 -0.106401 0 0 0 0 0 0.0381537 0.0273122 0.00180091 0 0 0 0 0.000771596 0 -0.0915273 0 0 -0.00468794 -0.0215402 -0.237314 0 -0.0346999 1.16179 -0.631879 0 0 1.36467 -0.00191696 0 0.5012 5.09643 0 0 0.170103 2.49042 0 0.765576 0 0.672955 0 0 0.0855888 0 0 1.07028 0.00743368 -0.053353 0 0.0216685 -0.246357 0 0 0.747689 0 0.00267746 0.320004 0.0467852 0 0 0.0111628 -0.00504205 0 -0.0153248 0.567203 0.100315 0.588903 0.02253 -0.209801 0 -0.087098 -0.204207 1.14685 -0.419576 0.639685 0 0 0 3.45174 0.528324 2.56086 0.0289102 0.0850086 -0.664265 0.00238997 0.0061876 -0.0514132 0.33183 0 0 0 0 0 0 0.174181 0 0.110082 0 0 0 0 0.000454742 0.514101 0 0 -0.298843 0 -0.0430865 0 0.0147152 0 0 0.0257227 0 -0.0548738 -0.008892 -0.0807016 0.000780323 0 0 0.13781 0 0.316401 0 -0.614298 -0.0182133 0 -0.151829 -0.189616 -0.0108058 0 -0.000820876 0 0 0.0609264 0 0.182921 0.304877 0 0 0.0245816 0 0 0.088532 -1.30205 -0.0678495 0 0.221637 0 0.489747 0.122972 -0.0185231 -0.121603 -0.07416 0.212338 -0.428509 0.0462361 0.169299 0.576811 0.00255204 0 0 0 0.0590192 -0.00995763 0 0 0 0 -0.0846265 8.1945 1.57871 1.38614 0.202474 0.301535 -0.370431 0.231676 -0.0876092 -0.0236288 0.231769 0 0 0 0 0 0 +58 0 0.342194 0.250964 0.211896 0.187931 0.0696207 -0.0205905 0.350872 0.612722 1.15001 -1.19821 -0.0608678 0.219481 -0.296689 0.434934 -0.0186446 0.45766 2.57008 -0.564929 -0.1286 0.54134 -0.325472 -0.374637 0.386471 -0.396351 0.23115 0.0455316 0.491833 0.0240254 0.421606 0.0625004 0.533221 -0.109502 -0.695553 0.92365 0.0916367 0.0170715 2.01532 -2.63062 -0.420617 0.0647556 -0.13179 4.32187 -0.097328 0.55483 0.607176 -0.002457 0.095485 -0.637776 -0.0783077 0.146624 -0.389476 5.46639 -0.860032 -0.241458 0.258307 1.01877 -0.681342 0.700416 0.323061 0.00294156 -0.181256 -0.119933 1.68251 -0.848379 -0.784798 -0.30752 1.98313 2.25652 0.524724 0.472962 0.062463 0.0933575 -0.667927 0.572105 -0.143807 -0.767529 8.77535 4.42921 -2.61879 2.85264 -2.21933 3.04063 1.32878 -1.30146 1.64709 -1.62428 -1.86899 0.752514 -0.900054 0.247009 -0.348808 0 0 0 0 0 0.211896 0.187931 0.00272467 0 0 0 0 -0.0020248 0 -0.0460971 0 0 -0.00386745 -0.0407944 0.00633383 0 -0.0165425 0.445247 -0.116288 0 0 0.031934 -0.00211804 0 -0.0477011 2.02992 0 0 0.0480628 0.947958 0 -0.255061 0 0.0791538 0 0 0.0340325 0 0 -0.855062 -0.0411707 -0.0759086 0 0.0522796 -0.0112795 0 0 -0.0508481 0 0.00912209 0.440103 0.00436926 0 0 -0.000992076 0.00432055 0 0.00183961 0.107612 0.00404185 -0.93102 0.0955659 -0.0453208 0 -0.00386084 -0.0853433 -0.00670539 0.0587013 -0.0586805 0 0 0 5.55999 0.422542 0.479816 0.0230712 0.0200861 0.105329 0.0010797 0.000842412 0.0168558 0.043629 0 0 0 0 0 0 0.0696207 0 -0.0205905 0 0 0 0 0.071936 0.193068 0 0 -0.572433 0 -0.0618098 0 0.00230457 0 0 0.0288458 0 0.0610231 0.0396997 -0.11806 0.00213088 0 0 -0.0222857 0 1.16886 0 -0.656267 0.205759 0 0.263094 -8.96201e-06 -0.0130976 0 0.00916474 0 0 0.0454047 0 0.568381 -0.0686588 0 0 -0.0118966 0 0 -0.146987 2.5904 -0.0151944 0 0.238985 0 -0.524822 0.205956 -0.0526446 -0.260589 -0.0115676 0.198129 1.09504 -0.05893 0.0177639 2.37231 -0.000796867 0 0 0 0.205308 0.0208522 0 0 0 0 -0.144052 13.4876 4.72348 -2.24059 0.973074 -0.864139 1.0495 0.43775 -0.311586 0.335443 -0.190393 0 0 0 0 0 0 +59 0 0 0 0 0 -0.493445 0.20096 0.489476 2.93738 0 0 0.320916 0.88833 0 1.70876 -0.0104092 0 0 0 -0.192209 4.00301 0 0 0 0 0.321035 0 0 -0.943977 -5.95709 0.722022 0 -0.0299352 0 0 -0.093143 0.0338779 0 0 1.2062 1.27929 0 0 0.232788 2.50926 0 0.945546 -2.04213 -0.66241 -0.32365 2.29532 -0.410426 0 0.0180782 0.0615 -0.392286 2.64146 1.24182 0.839698 0 0 -0.590434 -3.07311 0 -0.42178 -0.245914 1.11596 0 0 0 0 -0.198236 0.793973 0 -2.84592 2.30134 0 0 0 -5.63428 0 -1.01663 5.02328 0 -0.447476 2.22598 -5.51589 0 -0.0236781 2.67816 -6.87043 20.8341 0 0 0 -0.173426 -0.0466124 0 0 0 0.117567 -0.176603 0 0.0157768 0 -0.0200175 0.0393666 0 0 0 0 0.105312 0 0.0179854 0 0.257972 0 0.847181 -0.0593338 0 0.00785893 0 0 0.278795 -0.00707849 -0.0061316 0 -0.0263626 0 -0.0125557 -0.0228887 0.0525001 -0.0996203 -0.00387135 0 -0.00141625 0 0 0 -0.00186777 0 0 0.018665 -0.0196428 -0.0218073 -0.0537302 0 0 0.00934618 0 0.0218319 0 0 -0.0879649 0.0457722 -0.0974748 -0.0136815 0 0 0.000630081 0.0451758 0.00913563 -0.0401464 0.0204589 0 -0.0622508 -0.00564341 0.346096 0 0 0 -0.329655 0 0.123612 -0.37506 0 -0.0123678 0.0362312 -0.134621 0 0.00907502 -0.0255501 0.0601021 -0.134887 0 -0.493445 -0.173426 0.20096 -0.0466124 0.67151 0.175065 -0.876306 0.486149 -0.918396 0.00346453 0.0767434 -0.398411 0.00358612 -0.050216 -0.137592 0.0135853 0.0730679 -0.0755439 -0.419266 -0.309451 0.192436 0.296223 -0.0751598 -0.103074 0.403697 -0.287741 0.174795 -0.00472383 3.00166 0.65503 -0.0840313 1.68875 -0.0208768 1.55348 0.206478 -0.0163724 0.0129972 0.0674359 0.123922 -1.94793 -0.156736 -0.0420839 2.74394 -0.380223 0.0132152 0.0585034 -0.0799499 -0.0625837 0.082632 -0.0157978 1.40713 -0.353438 -0.203676 0.50834 0.474953 0.0214481 -0.238022 0.321467 0.187538 -0.0660161 0.44524 -0.222297 -0.0292457 0.075387 -4.46363 0.225732 -0.0411984 0.103458 -0.0845482 0.130849 -0.0422631 -0.110887 -0.0224624 0.205074 0.0157623 0.235612 0.236648 0.562012 -3.52201 0.120941 -1.28987 4.37817 0.0699767 -0.502073 1.19133 -1.74583 0.0261923 -0.297927 0.76725 -1.24584 2.66802 0 +60 0 0 0 0 0 0.130973 0.179034 -0.329444 0.372428 0 0 -0.250571 0.748422 0 0.563761 -0.122145 0 0 0 -0.0788784 -3.0712 0 0 0 0 -0.0340874 0 0 -0.374401 2.25899 0.277103 0 -0.182502 0 0 -0.155041 -0.0853201 0 0 -0.662489 -0.597554 0 0 -0.253726 2.10464 0 0.150101 0.0180023 0.569745 0.571009 -0.46826 0.787682 0 -0.345994 -0.327275 0.0522337 2.16818 0.37595 1.58083 0 0 0.326317 2.45234 0 0.569349 0.500544 -0.265899 0 0 0 0 0.124433 -1.10051 0 2.91241 0.61784 0 0 0 -1.72312 0 1.42898 -6.3149 0 0.76714 -1.51617 -3.80842 0 0.934466 -1.83504 2.10944 -10.1945 0 0 0 0.0367024 0.0448656 0 0 0 0.10764 -0.0676304 0 0.0211118 0 0.0069979 0.0158298 0 0 0 0 0.0467584 0 -0.00133015 0 0.149749 0 0.571387 -0.231552 0 0.00467032 0 0 0.225919 -0.00228345 -0.0562039 0 -0.00893555 0 -0.00489502 -0.152445 0.022562 -0.0300207 -0.0322746 0 0.000457649 0 0 0 -0.000658554 0 0 0.00626417 -0.0105576 0.0283959 -0.0340914 0 0 0.0255012 0 0.00630143 0 0 0.0220956 0.0251299 -0.149457 -0.0132883 0 0 -0.119019 -0.0351999 0.0144211 -0.122884 0.0168487 0 -0.115573 0.025263 -0.110355 0 0 0 -0.31093 0 0.126691 -0.653845 0 -0.00886134 0.0495639 -0.204561 0 0.00330664 -0.0230155 0.0799665 -0.261242 0 0.130973 0.0367024 0.179034 0.0448656 -0.230739 -0.0940335 0.163334 0.198931 0.243376 -0.0835266 0.0610125 -0.244341 -0.0196057 -0.0558521 0.0827681 0.0357558 0.0130126 -0.335111 -0.158004 -1.16949 0.275995 0.131574 -0.0700062 0.0157356 0.466896 0.0329941 0.113309 -0.028743 4.65764 0.410914 1.80939 1.11989 0.0201258 0.90018 0.897112 -0.0104942 0.0133105 0.0308238 0.0627182 0.482482 0.133922 0.00323069 2.66767 -0.491538 0.00167109 0.100826 -0.0246089 -0.182392 0.13976 0.897902 -0.4564 1.16876 -0.0812905 0.153442 -0.087418 -0.631587 0.386492 -0.607302 0.376053 -0.014665 -1.33724 -0.0145359 -0.108478 0.702207 3.29149 -0.227536 0.130189 -0.0732662 0.261631 -0.0110822 0.114178 -0.266235 0.169519 0.191778 0.0119465 -0.129795 -5.0956 0.32229 -3.81382 0.158194 -0.496295 -2.58817 0.0463897 -0.271426 0.144005 -1.50037 0.116189 -0.186421 0.157335 -0.227997 -0.918376 0 +61 0 0 0 0 0 -0.368169 -0.248729 0.833881 2.53229 0 0 0.163747 -1.18257 0 -1.36077 -0.040789 0 0 0 0.0730903 -1.96876 0 0 0 0 0.318401 0 0 0.264742 4.03966 -0.408931 0 -0.116005 0 0 0.140695 0.013271 0 0 -0.238382 -0.0731341 0 0 -0.0521012 -4.82253 0 -0.094414 0.60412 0.162467 -0.103325 0.749792 -0.0142953 0 -0.271806 -0.10531 0.465994 -3.40369 -1.19137 0.239984 0 0 -1.26773 -2.22962 0 -0.147247 0.0250622 -0.405847 0 0 0 0 0.11371 0.81934 0 1.23295 -1.06373 0 0 0 -5.51489 0 -0.999497 -4.8181 0 -0.838583 -0.37177 -6.14333 0 -0.107137 -1.35793 1.86872 -13.701 0 0 0 0.0553165 0.0168712 0 0 0 -0.0236588 0.0810885 0 -0.00099506 0 0.00828783 0.0230527 0 0 0 0 0.0489507 0 0.00277123 0 0.216843 0 -0.245137 -0.137896 0 -0.000711555 0 0 -0.0645016 0.00291151 -0.0170596 0 0.0124216 0 0.00573473 0.0591158 -0.00935832 0.0412162 0.00524675 0 0.00058398 0 0 0 0.000876191 0 0 -0.00768881 0.00913161 -0.127888 0.0241116 0 0 0.0137364 0 -0.00983731 0 0 0.0048512 0.036548 -0.020345 0.0348885 0 0 -0.115455 -0.0140221 0.0114203 -0.037223 0.0292473 0 -0.000755569 -0.00666463 0.386045 0 0 0 -0.308908 0 -0.0432239 0.0640609 0 0.00467723 -0.00715345 -0.0436876 0 -0.00371334 0.00581314 -0.0146837 0.0211629 0 -0.368169 0.0553165 -0.248729 0.0168712 -0.585154 -0.0971778 0.283872 0.467022 0.428582 -0.00431097 0.0286517 -0.390063 -0.00194625 -0.0749919 0.04745 -0.0104082 0.00823189 0.0122425 -0.235398 -0.434298 -0.416844 0.342509 -0.238077 -0.0660691 -0.000723893 0.17553 0.170491 -0.000438885 -0.767366 -0.34745 -2.29224 -0.705708 0.00755911 1.60184 -1.0403 -0.0464447 -0.00111214 0.0819033 -0.023407 1.80032 0.0253443 0.0118336 -0.824992 -0.580742 0.00544592 -0.0335144 -0.102223 -0.0597318 0.0830842 -0.3015 -0.565275 0.346942 0.00690171 0.907178 -0.154156 0.0901703 -0.100018 0.187483 -0.135036 -0.183413 -0.173513 0.254994 -0.0997799 0.351123 0.87712 -0.0558335 -0.534535 0.0195396 0.1392 0.0747563 0.0911042 0.0114305 0.0133891 0.0783658 -0.0444572 -0.0974198 6.45539 0.57682 -3.1381 0.380141 -0.233686 -1.81824 0.0674735 -0.0884612 0.0590126 -1.98641 -0.00424468 0.0973559 -0.530156 0.859397 -2.91793 0 +62 0 -1.04959 -0.239685 -0.0811961 -0.254899 0.203111 -0.0748439 -0.28562 -1.65026 -0.609443 1.36543 -0.448672 -0.476161 0.0247249 -0.915226 0.0112766 -1.20342 -4.54419 0.233264 0.0278653 -0.152686 0.0333861 0.099361 -0.0335228 0.308169 -0.267143 -0.317264 -0.0300722 0.581005 1.76099 -0.332136 -0.147668 -0.167851 0.864645 -0.457219 0.019489 -0.100952 -0.467525 5.68141 -0.811539 -0.293656 0.0926986 -2.60167 -0.210571 -0.867599 0.267531 -0.366222 0.983704 -0.254728 0.503241 -1.84918 0.88768 -0.723017 0.0505514 0.078363 0.213024 -3.09953 -0.869511 -0.093296 -0.360472 -0.153895 1.29493 0.275683 0.0697533 1.19778 0.898796 -0.547703 -0.130796 -0.0845462 0.263212 -0.68203 0.695338 -0.986998 1.01504 0.639951 -0.898773 1.62769 -16.7222 -4.3124 1.85158 -2.98313 3.6171 -9.05009 -0.362838 1.16082 -2.81043 2.69513 -0.252915 0.553934 -1.28007 2.47922 -5.89364 0 0 0 0 0 -0.0811961 -0.254899 -0.00967129 0 0 0 0 -0.00112731 0 0.0176742 0 0 -0.00764652 -0.0257764 0.0340309 0 0.00204484 0.0328776 0.151886 0 0 0.140488 -0.00181147 0 0.0374474 0.0769947 0 0 0.0158184 0.0302108 0 0.0922023 0 -0.0182246 0 0 -0.00474185 0 0 0.280639 -0.0160192 -0.108011 0 -0.136599 -0.0362369 0 0 0.190049 0 -0.0169306 -0.0105538 0.0261195 0 0 0.0156745 0.0183751 0 -0.0334706 0.0204987 -0.0255855 -0.0324418 0.0173132 0.0391547 0 -0.035877 -0.0399921 0.00029687 0.0156298 -0.0362879 0 0 0 -0.633484 0.145616 -0.237855 -0.0256629 0.0347307 -0.0540832 0.0097135 -0.0126759 0.0188613 -0.0302018 0 0 0 0 0 0 0.203111 0 -0.0748439 0 0 0 0 -0.622048 -1.5913 0 0 0.944722 0 0.137864 0 -0.0923249 0 0 0.341052 0 -0.0250824 -0.173213 0.378568 0.0620661 0 0 -0.727216 0 -7.49393 0 1.3223 -1.29189 0 -1.49489 0.135479 0.0628455 0 -0.0714856 0 0 -0.204805 0 -2.94452 0.558994 0 0 0.0953283 0 0 0.181249 -1.03918 0.0727495 0 -1.59732 0 0.383877 0.0695365 -0.00683361 -0.495749 -0.257466 -0.216725 0.0184936 0.264616 1.68992 3.77845 0.174783 0 0 0 -0.444619 -0.179318 0 0 0 0 0.615594 -8.82113 -3.52972 3.85652 -0.995515 0.710639 -1.16084 -0.329731 0.386983 -0.671271 1.0419 0 0 0 0 0 0 +63 0 0.246256 -0.10212 0.0844349 0.160658 -0.241052 -0.320018 1.18152 2.68213 0.603069 -1.7125 0.391592 -0.990108 -0.0307107 -1.12682 0.0105696 -0.304511 0.436641 -0.235633 -0.0324459 -1.27371 -0.0874011 0.138137 0.038262 -0.581591 0.596991 -0.330524 -0.015453 0.338792 -0.490819 -0.329334 0.163543 0.193268 0.10743 0.413693 0.365152 0.0623105 0.039774 -0.0654541 0.897268 -0.901326 -0.143837 1.88013 0.18373 -3.88135 -0.631524 -0.705221 0.100952 0.206612 -0.483055 0.667492 -1.14896 2.29143 0.0188246 -0.145562 -0.195857 3.37826 0.435928 -0.0474241 1.09245 0.318766 -1.46439 0.350795 1.47269 -1.65089 -0.585159 0.297252 0.799447 -0.012371 -0.277785 2.07587 -1.03662 0.589933 -0.346697 0.898738 0.181931 -0.489809 1.7007 4.23584 -5.40055 1.55299 -0.995555 -1.51939 2.3037 -1.66702 2.30437 -4.36068 0.597021 -0.826207 1.28879 -1.81398 1.64266 0 0 0 0 0 0.0844349 0.160658 -0.0046367 0 0 0 0 -0.00137554 0 0.0273503 0 0 -0.00303831 0.00861642 -0.0112759 0 0.00395355 -0.100093 0.0924241 0 0 0.395627 0.000600622 0 -0.024284 0.134908 0 0 0.0702492 -0.206422 0 0.0494558 0 0.115198 0 0 0.0193934 0 0 0.424021 -0.0195638 -0.0428281 0 -0.0661174 -0.0171909 0 0 0.0198317 0 -0.0209961 -0.169867 0.0335854 0 0 0.0070111 0.0010297 0 -0.0217571 0.014776 -0.0145409 -0.322735 0.0490832 0.0396259 0 -0.00595191 -0.0612578 -0.136227 -0.0249039 -0.0666848 0 0 0 -0.991548 0.146721 -0.310958 -0.0383617 0.053339 -0.0863748 0.00440768 -0.00850566 0.0182762 -0.0410722 0 0 0 0 0 0 -0.241052 0 -0.320018 0 0 0 0 0.308534 1.78414 0 0 -0.414875 0 -0.0587426 0 0.0958266 0 0 -0.611435 0 0.311042 0.109246 -0.173476 -0.0940895 0 0 0.742524 0 1.73267 0 -0.0850505 -0.0612787 0 0.985241 -0.077371 -0.023401 0 0.0386013 0 0 0.220498 0 0.333873 -1.56055 0 0 -0.217302 0 0 -0.0741716 -0.118381 0.134687 0 1.91707 0 0.467925 0.0318256 -0.00578491 -0.0179393 0.147865 0.267862 -0.0190623 -0.128168 -1.63642 -0.380849 -0.0457459 0 0 0 0.311893 0.0710929 0 0 0 0 -0.519122 -6.3005 0.216785 -2.99664 0.325132 -0.360117 -0.271417 0.170115 -0.175017 0.253993 -0.704563 0 0 0 0 0 0 +64 0 -0.81905 -0.32515 0.00487453 -0.00286122 -0.219042 -0.157116 0.631592 1.95493 0.0170374 -0.221558 -0.0605941 0.524195 -0.00175382 0.719122 0.0100138 -1.10964 -3.29002 -0.102291 0.0252685 -0.882389 -0.0140062 0.239224 0.00225062 -0.00591127 0.572969 -0.568433 -0.0196188 0.211683 0.154436 0.162308 0.00833533 -0.0119746 0.529078 -0.218691 0.295608 -0.0115949 0.14755 3.2579 -0.171075 -0.718086 -0.00637247 0.00054209 -0.0259685 0.960335 -0.0168735 -0.53987 0.14262 0.0334053 0.0775567 -0.965191 0.267449 -4.68318 -0.105319 0.0521202 -0.148096 0.353816 0.195501 0.1406 -0.034387 0.00915948 0.025016 0.164461 -0.0466812 0.455915 0.444778 0.105406 0.250508 0.288708 -0.00946772 -0.0199043 0.00834408 -0.380712 -0.27826 -0.981336 0.506788 -1.02566 -13.4428 -3.72979 -3.01693 -2.73497 2.41696 -5.66573 -0.268762 0.216848 0.291097 -2.72413 0.0159516 0.070121 -0.0447634 0.384603 -0.516864 0 0 0 0 0 0.00487453 -0.00286122 0.00197333 0 0 0 0 0.000437673 0 0.00258683 0 0 0.00126518 0.00427093 -0.00182486 0 0.000334524 0.0264622 0.00293536 0 0 -0.139481 0.000299187 0 0.0123249 -0.242262 0 0 -0.0133045 0.0662102 0 0.0764384 0 -0.0209841 0 0 -0.00167486 0 0 0.370174 0.00624459 0.0182402 0 0.0283625 0.035918 0 0 0.00769693 0 0.00532369 0.0292384 -0.0032417 0 0 -0.00282767 -0.00267296 0 -0.00869031 0.197003 0.00592053 0.0210355 0.0474254 0.00538315 0 -0.0289199 -0.0022564 -0.03652 0.0385572 -0.067164 0 0 0 -0.746565 0.0292012 -0.0843131 -0.0336989 0.0429672 -0.0614235 -0.00166999 0.00176503 -0.00169746 -0.00239865 0 0 0 0 0 0 -0.219042 0 -0.157116 0 0 0 0 0.405717 -0.900585 0 0 -0.356642 0 -0.0344512 0 -0.0356332 0 0 0.56866 0 0.727373 0.132047 -0.139269 0.0851344 0 0 -0.416696 0 0.908742 0 3.42764 0.332703 0 1.22025 1.171 -0.00920408 0 0.0380009 0 0 -0.079895 0 0.733847 0.867972 0 0 0.150843 0 0 -0.618988 2.74782 0.0521318 0 -0.996413 0 1.42099 -0.110965 0.108291 0.686073 0.0123816 -0.787062 -0.598459 0.199613 0.960732 0.743001 -0.0379185 0 0 0 0.292197 -0.0230776 0 0 0 0 -0.000665204 -10.299 0.754642 -3.98236 -0.717565 1.01015 -2.84748 0.113598 -0.178294 0.299734 -0.941285 0 0 0 0 0 0 +65 0 0 0 -0.170338 -0.071513 0 0 0 0 -0.921231 0.932075 -0.633092 0 0.262755 0 -0.0853935 0 0 0.330139 0.126772 0 0.16813 0 -0.341807 0.321588 0 0 -0.423042 0 0 0 -0.512093 -0.529969 0 -0.762227 0 -0.138419 -1.36589 0 -1.69426 0 0.376587 -2.72763 -0.672967 0 0.192909 0 0 0.463151 1.07258 0 1.62532 0 -0.170358 -0.0546738 -0.186507 0 -0.162278 0.858511 -0.427173 -0.42329 0 0 0 0 0.398294 0 0.306694 -2.08923 0.579732 -0.0128208 0.137966 -1.3584 1.20286 0 0 -0.0994756 0 -2.3844 0 -0.149101 2.00192 0 -1.12512 2.70624 -2.10439 0 -1.37853 2.48684 -1.05603 1.8016 0 0 0 0 0.0759403 0.0438281 -0.170338 -0.071513 0 0.0916293 0 0 0.0153594 0 0 0.129665 0 0 0 0 0.34931 0 0.0440995 -0.807705 0.889485 0 0.504804 -0.221892 0 0.00504011 -0.445988 -4.75629 -0.11363 0 0.106644 -1.98732 0 -0.854645 0 -0.239317 0.00618365 0 0.0391771 0 0 -1.6875 0 0 0 0 0 0 0 -0.802655 0 0 -1.06803 0 0 0 0 0 0 0 -0.50426 0 -0.306233 0 0.319152 -0.113524 0 -0.024492 -1.08604 0 0.696902 0 0.0375237 0 3.17584 0 -0.59318 0 0 0.812352 0 0 0 -0.355414 0 0 0 0 0.0950013 0 0 0.0759403 0 0.0438281 0 0 0.254736 0 1.61029 -0.00672453 0.0674137 0.981071 -0.00157896 0.122109 0.0631671 0.0581416 0.0525054 -0.119893 0 0 0 0 0.360325 0 0.670994 0 0.418766 0 0 0.0472641 0 0 0.0127483 0 0 0.0392556 0.0020263 0 0.0153392 0 0.238719 0 0 0 0.00511516 0.00144356 0 0 0.197013 0 0 0 -0.0443474 0 -0.159392 0 0.168068 0.0856157 0.152792 0 0 0.431784 0.250285 -0.517564 0 0.443561 0 0.122374 0 0.451124 -0.215527 0.0130283 -0.0619742 0.0548071 0.0189899 -0.703054 0 -2.78035 0 0.0922058 -0.194542 0 0.0217459 0.148679 -0.48606 0 0.134731 0.00370752 -0.0204697 -0.00533268 0 0 +66 0 0 0 -0.103808 -0.334039 0 0 0 0 -1.05008 4.61556 0.00735936 0 -0.0975337 0 0.161015 0 0 0.779577 0.59202 0 0.275109 0 0.114352 1.61244 0 0 0.652767 0 0 0 -0.148374 0.715261 0 0.877652 0 0.0338331 1.84309 0 0.859827 0 0.029056 1.22175 0.582714 0 0.783618 0 0 1.13175 -0.837015 0 0.720447 0 -0.7928 0.0932187 0.103151 0 -0.253977 -0.0802919 -1.978 -0.20226 0 0 0 0 0.343698 0 1.89434 0.99093 0.579296 -4.2923 0.495387 1.51605 -0.586813 0 0 0.606607 0 -7.21605 0 -0.461623 -1.95793 0 -4.23141 1.30221 -4.40415 0 -0.128702 -1.14627 -0.777945 -0.437086 0 0 0 0 -0.0958231 -0.0540598 -0.103808 -0.334039 0 0.0378022 0 0 -0.000271206 0 0 0.0739461 0 0 0 0 -0.156679 0 -0.025567 1.25274 0.115619 0 0.524709 1.63752 0 0.0235847 0.0153121 8.15272 0.557514 0 0.0844486 3.63909 0 -0.365586 0 0.753771 0.116784 0 0.0349152 0 0 -2.22894 0 0 0 0 0 0 0 -0.0779676 0 0 -0.749201 0 0 0 0 0 0 0 0.387874 0 -2.45567 0 0.201048 -0.00333417 0 -0.208368 0.0987094 0 0.137222 0 0.400477 0 4.19482 0 0.213246 0 0 0.407153 0 0 0 -0.128883 0 0 0 0 -0.466116 0 0 -0.0958231 0 -0.0540598 0 0 -0.445221 0 -1.51738 0.0568246 -0.0223812 1.44471 0.0123293 0.339731 -0.120535 -0.00647695 -0.000143879 0.371458 0 0 0 0 0.585472 0 -0.390842 0 -0.139521 0 0 -0.0500162 0 0 -0.0231713 0 0 0.146165 0.00251678 0 -0.0122964 0 -0.211514 0 0 0 0.00451957 0.0224017 0 0 -0.199984 0 0 0 -0.0498083 0 0.332557 0 -0.622248 0.16997 -0.926814 0 0 -0.718295 0.211161 0.10242 0 -0.00926809 0 -0.0200992 0 -0.221235 -0.552496 0.0198744 -0.167565 0.0918284 -0.0112787 0.443967 0 -3.92668 0 -1.17222 0.175334 0 -0.602602 0.481136 -0.588231 0 -0.363165 0.160769 -0.026131 -0.112962 0 0 +67 0 0 0 0.108132 -0.254147 0 0 0 0 -0.615649 0.890886 0.253858 0 -0.398565 0 -0.298507 0 0 -0.159979 -0.716738 0 -0.287375 0 0.489929 -0.0579167 0 0 0.279151 0 0 0 0.280112 -0.518871 0 0.381486 0 0.0107975 0.51887 0 1.8265 0 -0.373031 -0.069991 0.636912 0 -0.328965 0 0 -2.10432 -0.850046 0 -1.27921 0 0.812995 -0.772627 0.420298 0 -0.212134 -0.7461 -0.2522 0.131572 0 0 0 0 0.981376 0 -1.09442 0.317826 0.236637 -0.970552 -1.1533 1.29243 -0.00229338 0 0 -0.833535 0 -1.26033 0 1.08425 -3.44876 0 0.00398568 -1.18535 -1.48948 0 1.12248 -1.98791 -0.133984 -1.60277 0 0 0 0 -0.148495 -0.0692679 0.108132 -0.254147 0 0.000812443 0 0 -0.0105007 0 0 -0.0724313 0 0 0 0 -0.584433 0 -0.108181 1.7067 -0.68542 0 0.060409 0.222636 0 0.0299107 0.591177 4.5934 0.448405 0 0.0237062 2.61237 0 0.687237 0 0.0259764 0.123462 0 -0.000334666 0 0 0.844312 0 0 0 0 0 0 0 0.917723 0 0 2.60071 0 0 0 0 0 0 0 0.266998 0 3.75537 0 -0.225746 -0.162324 0 -0.595315 0.704014 0 -0.786794 0 0.0890982 0 -1.58897 0 0.522984 0 0 -0.774892 0 0 0 0.22174 0 0 0 0 -0.374894 0 0 -0.148495 0 -0.0692679 0 0 -0.687576 0 -1.06205 0.0253862 -0.0312426 0.271098 0.0107164 0.0798242 -0.182687 -0.0973515 0.091677 0.139892 0 0 0 0 0.0903434 0 -0.194161 0 -0.244467 0 0 0.0455038 0 0 -0.0381344 0 0 0.0485639 0.00126272 0 0.00667199 0 -0.27037 0 0 0 0.0099528 -0.00163964 0 0 0.121759 0 0 0 -0.318778 0 0.548747 0 -0.261991 -0.160843 -0.0807882 0 0 -1.16197 -0.344668 0.924156 0 -0.0385477 0 0.0709989 0 -0.201243 -0.0989557 -0.0953602 0.0163011 0.00602665 -0.0380311 0.542659 0 -1.88571 0 -0.109134 -0.657548 0 0.0163788 -0.0102787 -0.332781 0 -0.150108 0.0166181 -0.0278042 -0.0826048 0 0 +68 0 0.16086 -0.0133036 0.292913 0.12081 -0.15182 -0.0575947 -0.0952268 0.969534 0.492025 -3.30458 -0.140299 0.0892205 -0.482001 -0.60589 -0.0892617 -2.31504 -6.49371 -1.3132 -0.0385172 0.604049 -0.823181 -0.293195 0.622264 -1.87373 0.285068 -0.758525 0.124284 0.0495629 0.981345 -0.0524455 0.726966 -0.195905 -0.796906 -0.342752 0.0178438 -0.0387266 0.387522 -1.33201 -0.664841 0.0258574 -0.562456 -0.244248 -0.205968 -0.425414 -0.37879 -0.00449878 0.221868 -0.27708 0.44278 -0.725164 -0.337158 4.48608 0.108926 -0.0996118 0.202911 1.10202 0.893331 0.485703 1.83145 0.329418 0.343582 0.037201 0.837279 -0.139193 0.718466 -0.0478041 0.69942 -0.188642 -0.360925 3.00612 0.232757 -0.267564 0.0039191 0.783915 -0.269889 2.20677 -1.03018 8.69468 -3.95364 3.94769 1.59981 -4.39092 4.75765 -1.0249 1.24564 -1.07959 1.09808 0.754437 -1.14857 1.02267 -1.4189 0 0 0 0 0 0.292913 0.12081 0 0 0 0 0 0 0 0.0102371 0 0 0 0 0.138824 0 0.0216887 0.38196 0.0296387 0 0 0.548756 0 0 0.106975 1.62203 0 0 0.0782549 0.938107 0 0.633048 0 0.327716 0 0 0.0321589 0 0 1.48026 0 0 0 0 0 0 0 0.199169 0 0 0.552225 0 0 0 0 0 0 0 0.423745 0 4.00594 0 -0.106933 0 0 -0.0224381 1.39545 0 -0.0135312 0 0 0 -2.78508 0 -0.242016 0 0 -0.61946 0 0 0 -0.0123716 0 0 0 0 0 0 -0.15182 0 -0.0575947 0 0 0 0 0.0460791 0.645264 0 0 -0.198646 0 -0.0296757 0 0.0106916 0 0 0.160481 0 0.257993 0.0500222 0.0277478 0.0225053 0 0 0.065287 0 3.58826 0 2.91199 0.0062064 0 0.348375 0.964565 0.000720263 0 0.00746375 0 0 0.0799532 0 0.473487 0.395386 0 0 0.059612 0 0 0.14599 0.218594 0.074092 0 0.898448 0 0.230122 -0.0648694 0.0137244 -0.0813603 -0.0224998 0.638715 -0.106862 0.00588611 -1.24722 -3.9983 0.063252 0 0 0 0.0577839 -0.00226841 0 0 0 0 -0.216158 -20.5221 0.748981 -4.94344 -0.108877 0.274941 -1.99164 0.0758983 -0.0392051 0.0490849 -0.203216 0 0 0 0 0 0 +69 0 -1.06735 -0.529136 -0.248663 -0.0935985 -0.0653528 0.0460054 -0.380513 -0.448041 -0.418124 1.38601 0.0887654 -0.265659 0.409228 0.145125 -0.059898 -2.39543 -10.7034 0.72488 -0.429671 0.381437 0.41476 0.262892 -0.528294 0.737424 -0.35645 -0.472906 -0.920409 -0.00478578 -0.184645 -0.114529 -0.617292 -0.0952521 1.20602 -1.58035 -0.166181 0.0173351 -2.93523 6.34051 0.351538 0.0795015 0.481749 -5.70755 0.0646993 0.992235 0.337824 0.0164225 -0.0261896 -0.656489 -0.212709 -0.57593 0.535344 10.1655 0.344736 -0.31505 0.235958 0.0916911 0.731097 0.570361 -0.755871 -0.289167 0.538693 -0.162588 -3.62653 3.50708 1.12565 0.585599 -5.44875 -2.72354 0.306721 -1.17186 -0.61082 0.28568 2.71407 0.634725 -0.00604627 5.86089 -22.2423 -6.82716 2.1078 -4.95508 3.07763 -6.65331 -1.66592 0.583223 -1.10321 1.00374 -0.97932 -0.322946 0.023408 -0.356127 0.266974 0 0 0 0 0 -0.248663 -0.0935985 0 0 0 0 0 0 0 0.0173812 0 0 0 0 -0.0832013 0 -0.00479075 -0.195913 0.042182 0 0 0.297866 0 0 0.260519 -0.115399 0 0 0.0673756 -0.346459 0 0.541463 0 0.118409 0 0 0.0422564 0 0 1.60154 0 0 0 0 0 0 0 0.192011 0 0 0.61537 0 0 0 0 0 0 0 0.473 0 5.26909 0 -0.144789 0 0 0.0694669 1.67594 0 0.0562382 0 0 0 -3.00612 0 -0.273892 0 0 -0.676792 0 0 0 -0.0174261 0 0 0 0 0 0 -0.0653528 0 0.0460054 0 0 0 0 0.0428597 -0.752005 0 0 0.180788 0 0.039086 0 -0.0131823 0 0 0.0363433 0 0.161017 -0.00863664 -0.00897637 0.0075659 0 0 -0.096208 0 -3.596 0 2.69181 -0.127557 0 -0.0146381 0.617501 0.00336832 0 0.0050902 0 0 -0.0948921 0 -0.674556 0.534911 0 0 0.0748279 0 0 0.074534 -1.4265 0.212917 0 -0.764048 0 0.282378 0.0588519 -0.106746 -0.626532 0.0123919 0.253129 -0.473546 0.04104 1.5225 4.59021 0.0251915 0 0 0 -0.157373 -0.097228 0 0 0 0 0.302999 -11.5989 -1.15284 0.216483 -0.505412 0.589871 -0.975476 -0.0957541 0.0488381 0.0187834 -0.123963 0 0 0 0 0 0 +70 0 -0.812018 0.00707306 0.059318 0.02549 -0.139926 -0.131499 0.828282 2.54576 0.0995913 -1.57568 -0.21461 -0.198872 -0.0976054 0.228613 -0.0257491 1.08501 -2.10854 -0.248157 -0.364789 0.0755588 -0.14386 -0.0332532 0.126011 -0.806758 0.42665 0.757406 0.394387 0.0572718 1.27405 0.10709 0.147201 -0.0544715 0.578454 0.671258 0.11406 -0.104479 0.0675174 3.33783 -1.19063 -0.0673466 -0.113416 -0.138414 -0.589906 -1.69224 -0.0748495 -0.0267499 0.275976 -0.743856 0.878604 0.573208 0.673067 -2.99461 0.358081 -0.328532 0.187205 -0.287838 0.454164 0.229497 0.898118 0.0656225 -0.881984 -0.12636 -0.920796 -0.624645 -0.139068 -0.0952387 1.08576 -0.00691063 -0.0730543 1.9313 -0.025737 -0.554188 0.0144471 -0.663436 -0.290407 -0.888072 -13.7915 2.1531 -7.43539 -1.30759 3.78006 -7.50783 2.22627 0.316284 0.0294049 -3.21768 0.216982 1.68441 -1.79257 1.56446 -1.84213 0 0 0 0 0 0.059318 0.02549 0 0 0 0 0 0 0 0.0970156 0 0 0 0 0.330172 0 0.0536978 -0.782916 0.587826 0 0 -1.26611 0 0 -0.348456 -5.58439 0 0 -0.141777 -2.17357 0 -0.286481 0 -0.648687 0 0 -0.0753153 0 0 0.0760141 0 0 0 0 0 0 0 -0.443067 0 0 -0.805892 0 0 0 0 0 0 0 0.0952402 0 2.44407 0 0.028164 0 0 0.435986 0.620372 0 0.479925 0 0 0 -0.141927 0 -0.564516 0 0 -0.0328141 0 0 0 -0.245704 0 0 0 0 0 0 -0.139926 0 -0.131499 0 0 0 0 0.053692 -0.216609 0 0 0.137289 0 0.0213122 0 -0.0156979 0 0 0.105509 0 0.162437 0.0386062 0.033816 0.00972859 0 0 -0.136784 0 -1.80991 0 1.47032 -0.0629785 0 0.16915 0.46144 0.006842 0 0.011672 0 0 -0.0223212 0 -0.23405 -0.523958 0 0 -0.0822002 0 0 0.178458 -2.33524 0.022465 0 0.116237 0 -0.551545 0.0518176 -0.069592 -0.272884 -0.0420372 -0.106171 -0.0833048 -0.0477 -0.05717 0.811363 0.0722676 0 0 0 -0.110097 -0.0395687 0 0 0 0 0.077787 -13.0719 -0.199639 -3.09212 -0.231754 0.291628 -1.12895 -0.0705406 0.0213226 -0.00696315 -0.199819 0 0 0 0 0 0 +71 0 0.436461 0.360401 0.131723 0.0537063 -0.0961282 0.0612742 -0.24692 -0.731246 0.255881 0.0981168 0.175595 0.54474 -0.218402 0.322441 0.132662 2.32291 11.2756 -0.150216 0.434586 0.510321 -0.114341 -0.0953254 0.28229 0.0874944 -0.096564 0.549328 0.39705 -0.0101626 -0.24753 0.0846052 0.338122 0.259322 -0.367502 0.847047 0.0216485 0.108654 1.45748 -1.07036 0.423011 0.115602 -0.247964 3.23952 0.274959 2.95488 -0.154947 0.0211717 -0.0354997 0.870113 -0.331473 -0.500096 -0.368337 5.57452 -0.406009 0.389473 0.0214773 3.49434 0.865085 0.205098 -0.190775 0.146599 0.373047 -0.132218 2.23474 -0.540164 -0.300457 -0.386496 1.2875 1.55112 -0.189218 -0.255613 0.417438 0.192567 -1.40131 1.05278 -0.141263 -0.191458 3.37071 -0.0293502 0.939266 -1.18848 0.0827983 0.345481 -0.582886 -0.284303 0.257149 0.843788 0.442527 -0.676868 0.455714 -0.395442 0.326668 0 0 0 0 0 0.131723 0.0537063 0 0 0 0 0 0 0 -0.0437753 0 0 0 0 -0.186992 0 -0.0222112 0.597196 -0.371342 0 0 1.45138 0 0 0.142714 5.94722 0 0 0.165155 2.01426 0 0.155741 0 0.705081 0 0 0.0795763 0 0 0.253771 0 0 0 0 0 0 0 0.256764 0 0 0.200035 0 0 0 0 0 0 0 0.509278 0 3.19797 0 -0.136954 0 0 -0.0447677 1.5551 0 0.102793 0 0 0 -0.477057 0 0.312589 0 0 -0.106574 0 0 0 0.15522 0 0 0 0 0 0 -0.0961282 0 0.0612742 0 0 0 0 0.00565037 0.591165 0 0 -0.247759 0 -0.0332338 0 0.0160049 0 0 0.104435 0 -0.0324757 0.0217359 -0.0284509 0.010751 0 0 0.141532 0 7.09615 0 0.811443 0.195206 0 0.18765 0.117026 -0.00534224 0 0.000463276 0 0 0.067047 0 1.31243 1.0861 0 0 0.123068 0 0 0.109842 2.3839 0.029842 0 0.827858 0 0.162053 -0.0184522 -0.00123328 -0.00835476 0.00338808 1.07046 0.192203 -0.000383038 -0.670196 -0.147692 0.0442956 0 0 0 0.0437779 0.0303254 0 0 0 0 -0.119752 -2.20208 1.42209 -1.80359 0.0349506 0.0478611 -0.496247 0.0870697 -0.0349896 0.0731389 -0.0615955 0 0 0 0 0 0 +72 0 -0.064655 0.356679 0.3128 0.0685186 -0.0712384 -0.146787 0.502012 1.32396 0.369211 -2.22143 -0.182837 0.287772 -0.521377 0.403162 0.02442 1.85117 5.05719 -1.3027 0.00186792 -0.452341 -0.816491 -0.619813 0.670715 -1.43965 0.717945 0.718318 0.388759 0.0426494 0.463078 0.128073 0.741697 0.065507 -0.689251 0.632386 0.200505 -0.0629842 0.0682979 0.371961 -0.722235 -0.134857 -0.641541 0.590691 -0.278581 0.0781552 -0.557616 -0.0423611 0.14262 0.129937 0.561897 1.34896 -0.289069 -6.52061 -0.0374644 0.0174066 -0.406069 -1.65709 -1.39536 -0.56058 1.48387 0.407763 -0.133369 0.447918 0.0770756 -1.55316 -1.38483 0.142114 0.576638 0.0256582 -0.273184 2.29028 -0.40692 -0.491632 -0.151765 -0.211398 0.289375 -3.68414 3.42217 5.75813 -3.17382 2.84696 0.642967 -1.8068 3.71772 -0.566935 1.33339 -1.6301 1.59255 0.76932 -0.293326 0.694176 -0.61113 0 0 0 0 0 0.3128 0.0685186 0 0 0 0 0 0 0 0.0693792 0 0 0 0 0.257133 0 0.0385836 -0.553041 0.461372 0 0 -0.643007 0 0 -0.406943 -3.34458 0 0 -0.0664583 -1.66428 0 -0.509312 0 -0.46449 0 0 -0.0515633 0 0 0.00681536 0 0 0 0 0 0 0 -0.294443 0 0 -0.828034 0 0 0 0 0 0 0 -0.428272 0 -5.53415 0 0.0466895 0 0 0.0229451 -1.70399 0 -0.135422 0 0 0 0.047361 0 -0.455799 0 0 -0.0581451 0 0 0 -0.192374 0 0 0 0 0 0 -0.0712384 0 -0.146787 0 0 0 0 -0.0383905 0.568347 0 0 0.133039 0 0.0144216 0 -0.00243387 0 0 0.0015199 0 0.260042 -0.0289691 0.0508944 0.00527146 0 0 -0.0331382 0 0.618926 0 1.41949 0.315775 0 -0.174869 0.674762 0.00703912 0 -0.00642347 0 0 0.071229 0 0.643149 -0.902926 0 0 -0.0779693 0 0 -0.556638 -1.16535 -0.085643 0 -0.267309 0 0.309776 -0.0216845 0.0755458 -0.357849 -0.0463995 -0.191531 -0.385223 0.00857245 -0.786217 -4.38494 -0.0223797 0 0 0 0.174101 -0.0400801 0 0 0 0 -0.173044 -7.58029 -0.739024 0.732045 -0.202104 0.390629 -0.591974 -0.084699 0.0615096 -0.00648443 -0.0378922 0 0 0 0 0 0 +73 0 -0.594926 -0.404461 -0.192683 -0.0768385 -0.0796225 -0.00534097 -0.201549 0.0927666 -0.367341 0.87755 0.036213 -0.261056 0.319556 -0.206179 0.0666694 -2.21952 -10.1007 0.650003 0.327197 0.0665016 0.364174 0.240596 -0.412941 0.517186 -0.252461 -0.567004 -0.375998 -0.0257543 0.062594 -0.117818 -0.492814 0.117497 0.845057 -0.765145 -0.158111 -0.0055909 -0.709007 2.91577 -0.0222899 0.0833904 0.364256 -2.14502 -0.0901789 -0.722337 0.23219 0.0289517 -0.0412499 0.566064 0.0468523 0.182417 0.784603 0.998752 -0.289464 0.258743 -0.20408 -2.90114 -0.292057 -0.304015 -0.516602 -0.216183 -1.06336 0.0154648 -3.48263 2.12329 0.34142 0.0965695 -2.38351 -0.728827 0.271645 -0.670631 -0.208996 0.0466877 0.784379 -0.953997 0.0938291 2.75785 -10.8538 -3.53534 1.82703 -2.78953 2.58066 -3.94253 -1.12851 0.858041 -1.08309 0.1185 -0.663133 0.140938 -0.242596 0.0441215 -0.0826062 0 0 0 0 0 -0.192683 -0.0768385 0 0 0 0 0 0 0 0.0834096 0 0 0 0 0.23703 0 0.0426507 -0.420685 0.472727 0 0 0.12252 0 0 -0.0167568 -0.787525 0 0 0.0253902 -0.44417 0 0.350792 0 0.143826 0 0 0.0233489 0 0 1.14015 0 0 0 0 0 0 0 -0.202268 0 0 -0.993238 0 0 0 0 0 0 0 -0.349769 0 -6.52684 0 -0.0643527 0 0 0.058799 -1.58559 0 -0.27143 0 0 0 -2.14663 0 -0.609141 0 0 -0.475802 0 0 0 -0.197832 0 0 0 0 0 0 -0.0796225 0 -0.00534097 0 0 0 0 -0.00950342 -0.933227 0 0 0.142146 0 0.0264298 0 -0.0141169 0 0 -0.0489418 0 0.0666471 -0.0245588 0.0180523 -0.00720335 0 0 -0.108965 0 -5.20965 0 0.870133 -0.240983 0 -0.0219768 0.164516 0.00336632 0 -0.0043043 0 0 -0.10311 0 -0.965439 -0.0830803 0 0 -0.0170428 0 0 -0.0211328 -2.75935 0.0516633 0 -1.50975 0 -0.366417 0.0107541 -0.045138 -0.426223 -0.0586244 -0.166704 -0.242752 -0.0142881 1.18839 1.02175 0.0670064 0 0 0 -0.218462 -0.0554621 0 0 0 0 0.291112 -10.2811 -1.285 -0.456177 -0.232726 0.212607 -0.552982 -0.0667148 0.0373863 -0.048458 -0.0227652 0 0 0 0 0 0 +74 0 -0.375659 -0.577656 -0.277215 -0.112787 0.155588 0.121033 -0.824386 -2.38326 -0.461904 2.42826 0.0849979 -0.773113 0.458153 -0.795445 -0.129142 -2.47726 -7.56975 1.24335 -0.927141 -0.0436472 0.757394 0.698601 -0.591473 1.45901 -0.918342 -0.839341 -0.445564 -0.038154 -0.377992 -0.268173 -0.687972 -0.208284 1.30971 -0.618264 -0.264679 -0.00764446 -1.6543 2.86924 0.496653 0.0287311 0.532901 -2.4413 0.074476 -1.54328 0.357789 0.0122393 -0.118001 -1.53703 -0.300215 -1.06574 0.361738 -3.71902 0.784297 -0.71882 0.205225 -1.68606 -0.0411971 -0.366895 -1.40913 -0.310833 -1.49356 -0.102081 -2.92883 2.07144 1.08648 0.340994 -3.31251 -1.34195 0.339146 -2.74119 -1.25631 0.534297 1.28488 -0.246481 0.0218351 1.10058 -11.7208 -7.07994 4.95221 -3.46276 1.08732 -2.25214 -3.59886 1.16018 -1.72323 2.66759 -1.03938 -0.44501 0.34394 -0.576677 0.433348 0 0 0 0 0 -0.277215 -0.112787 0 0 0 0 0 0 0 -0.0821836 0 0 0 0 -0.32379 0 -0.0535112 -0.00959837 -0.539211 0 0 -0.860282 0 0 0.200701 -1.10618 0 0 -0.17649 -0.409495 0 -0.0467664 0 -0.561755 0 0 -0.108704 0 0 -0.331461 0 0 0 0 0 0 0 0.33496 0 0 0.503412 0 0 0 0 0 0 0 -0.273156 0 -4.89306 0 -0.0527043 0 0 -0.127325 -1.34917 0 -0.579646 0 0 0 0.623802 0 0.55528 0 0 0.138561 0 0 0 0.225406 0 0 0 0 0 0 0.155588 0 0.121033 0 0 0 0 -0.0339493 -0.294161 0 0 0.123059 0 0.0156322 0 0.00468846 0 0 0.00534672 0 0.0771939 -0.00199199 0.00097254 -0.00107311 0 0 0.065356 0 1.90075 0 1.93273 0.236442 0 -0.153669 0.463806 -0.000334004 0 -0.000249577 0 0 -0.0452045 0 0.774351 0.683607 0 0 0.0616819 0 0 0.257805 0.405832 0.0709054 0 1.19943 0 0.415246 -0.103644 0.0355494 -0.293056 0.0525335 0.737507 -0.104612 -0.0546573 -0.259793 1.71698 0.0174351 0 0 0 -0.0531169 0.0357278 0 0 0 0 0.0614653 -13.5793 -0.78856 -1.25885 -0.154091 0.0632643 -0.744417 -0.00661136 0.0134036 -0.0863174 0.10681 0 0 0 0 0 0 +75 0 -1.07264 -0.488692 -0.174524 -0.0710061 0.00554488 0.0200237 -0.13857 -0.179545 -0.290796 1.56586 0.0570556 0.41071 0.288435 1.00573 -0.0299056 0.185649 0.0733804 0.703641 -0.00743942 0.481251 0.414266 0.680493 -0.372368 0.787613 -0.0932411 -0.0485734 -0.258659 -0.0186123 -0.0197517 0.145306 -0.433119 -0.0324736 2.24889 -0.455196 -0.0681623 -0.00296609 -0.449809 8.27084 0.0636215 0.123724 0.335493 -0.836171 -0.0828647 2.22628 0.22525 0.0298463 -0.0390218 0.138429 -0.00278596 1.21292 0.804784 -0.598656 -0.0476535 0.0436751 -0.123743 -0.754568 -0.556727 0.182499 -0.810231 -0.195688 1.03024 0.344092 -0.849879 1.12341 -0.738769 -0.0290241 -1.75726 -0.113695 0.213513 -0.774915 0.169221 0.120854 0.35532 0.202844 0.112014 -0.387708 -29.5079 -9.20695 0.354134 -7.77 4.238 -7.89926 -1.71677 0.842744 -1.53126 0.847716 -0.654351 0.0815863 -0.100429 -0.0517268 0.0226443 0 0 0 0 0 -0.174524 -0.0710061 0 0 0 0 0 0 0 0.0423063 0 0 0 0 0.134011 0 0.0153079 -0.450519 0.309029 0 0 -0.586735 0 0 -0.0197167 -3.76135 0 0 -0.0250521 -1.48277 0 0.185804 0 -0.377173 0 0 -0.0236004 0 0 1.15579 0 0 0 0 0 0 0 -0.0122137 0 0 0.65657 0 0 0 0 0 0 0 0.303901 0 5.89361 0 0.00832564 0 0 0.0998151 1.36452 0 0.186054 0 0 0 -2.17516 0 -0.457783 0 0 -0.483154 0 0 0 -0.129184 0 0 0 0 0 0 0.00554488 0 0.0200237 0 0 0 0 -0.0131745 -0.352856 0 0 0.32735 0 0.052222 0 0.00446049 0 0 -0.135196 0 0.312833 -0.0285353 0.0434759 -0.0112249 0 0 0.0350595 0 -2.8291 0 2.32489 0.0742532 0 -0.307674 0.868207 0.00800661 0 0.00280036 0 0 -0.0430445 0 -0.205912 -0.451949 0 0 -0.0424156 0 0 0.0875314 -2.16841 0.104381 0 0.342018 0 0.395845 -0.0242945 0.0203343 -0.897924 0.0646547 0.245534 -0.52887 -0.0407411 0.139647 -0.230572 -0.00391793 0 0 0 -0.0132612 -0.0818471 0 0 0 0 0.0688424 -15.6821 -1.8894 0.225106 -0.317149 0.497117 -1.06931 -0.109822 0.0692151 -0.0828783 0.00152377 0 0 0 0 0 0 +76 0 -0.140053 -0.0465181 -0.21156 -0.0860748 -0.0649274 0.0861069 -0.356969 -0.811378 -0.352508 3.28712 0.21578 0.752707 0.349646 1.07584 0.0694697 0.441445 5.48655 0.98172 0.335074 -0.472299 0.590396 0.314411 -0.451391 1.85982 -0.201104 -0.222685 -0.503359 -0.070408 -0.816981 0.175589 -0.525035 0.163562 1.00449 -0.757153 -0.0872948 0.0727894 -1.05006 3.46356 0.672366 0.0020614 0.40669 -1.57526 0.209662 3.56837 0.273052 0.0268129 -0.256941 0.82827 -0.448445 1.59297 1.11225 6.17184 -0.381057 0.349245 -0.368769 1.8204 0.597944 0.921621 -1.91479 -0.237216 -0.126788 -0.0251917 -3.87185 0.949615 -1.12799 -0.235813 -2.23861 -0.802531 0.258824 -3.56907 0.344007 0.560101 0.805153 0.427843 0.157004 1.9097 -15.9857 -13.4442 5.6559 -7.56276 1.92948 -0.376132 -4.78797 1.55344 -1.38396 0.895411 -0.793215 -0.76569 1.03015 -1.0165 0.936627 0 0 0 0 0 -0.21156 -0.0860748 0 0 0 0 0 0 0 0.0584713 0 0 0 0 0.172671 0 0.0223008 -0.130232 0.39423 0 0 1.45926 0 0 -0.410356 3.85036 0 0 0.229497 0.792428 0 -0.785871 0 0.673585 0 0 0.106777 0 0 -1.05665 0 0 0 0 0 0 0 -0.452522 0 0 -1.28101 0 0 0 0 0 0 0 0.135573 0 1.1884 0 0.115477 0 0 0.126442 0.639953 0 0.642975 0 0 0 1.98859 0 -0.218298 0 0 0.441713 0 0 0 -0.1648 0 0 0 0 0 0 -0.0649274 0 0.0861069 0 0 0 0 -0.079034 -0.556801 0 0 0.185439 0 0.0299904 0 -0.000123339 0 0 0.0140558 0 -0.0240401 -0.054955 -0.0125596 0.00553546 0 0 -0.0038188 0 0.074831 0 -0.855534 0.00408854 0 -0.36198 -0.238309 -0.000332862 0 -0.0101917 0 0 -0.0554541 0 0.189977 0.395109 0 0 0.0502398 0 0 0.0715403 -2.16874 -0.0142843 0 -0.65803 0 -0.469788 0.0369023 -0.0105788 -0.563834 -0.0133987 0.179662 -0.115012 -0.0650978 0.287896 -0.546445 0.0260436 0 0 0 -0.163825 -0.0127516 0 0 0 0 0.228994 -2.62539 -1.33674 1.47424 0.0345698 0.00457335 0.10766 -0.063129 0.0595344 -0.0873 0.177099 0 0 0 0 0 0 +77 0 -1.09634 0.0594959 -0.0553899 -0.241206 0.143039 0.325516 -0.355379 -1.32525 -0.642177 1.47518 0.346656 0.556588 0.00647799 1.91186 0.0800627 0.465439 0.464502 0.290032 0.25202 0.403283 0.0399717 -0.244348 -0.0153769 0.345766 -0.656298 0.458503 0.0289018 -0.766646 -1.38139 0.468402 -0.0988193 0.559264 0.421388 0.0768909 -0.431811 0.0341884 0.0109176 5.07535 0.379707 1.11725 0.0207626 0.217733 0.0380445 2.83096 0.0127107 0.91274 -1.0168 1.71014 -0.127534 1.03273 -0.185789 -1.96338 -0.573167 0.174691 -0.328893 -2.55678 0.261851 0.71228 -0.298021 -0.00907707 0.0865928 -3.12401 -2.01442 -0.0437846 -0.320246 0.266083 -0.515946 0.0563898 0.253262 -0.920663 0.0521952 0.0603079 -0.131283 -2.8614 1.13646 0.725135 -16.2383 -5.31149 1.85645 -2.41796 1.21517 -2.55036 -0.770231 0.609887 -0.966071 1.82836 -0.00637321 -0.0904863 0.332026 -0.9386 3.10687 0 0 0 0 0 -0.0553899 -0.241206 0 0 0 0 0 0 0 0.00783967 0 0 0 0 0.0233748 0 0.00340231 -0.0146067 0.0610666 0 0 -0.0678455 0 0 -0.0142867 0.0911389 0 0 -0.00978692 -0.000608037 0 -0.0221543 0 -0.0117528 0 0 -0.000904659 0 0 0.205803 0 0 0 0 0 0 0 0.0560102 0 0 -0.175063 0 0 0 0 0 0 0 -0.112351 0 -1.46287 0 -0.026955 0 0 0.00760141 -0.441281 0 -0.155824 0 0 0 -0.274283 0 -0.125048 0 0 -0.189878 0 0 0 -0.0263739 0 0 0 0 0 0 0.143039 0 0.325516 0 0 0 0 0.0799095 -0.31131 0 0 0.201394 0 0.0310175 0 0.0106499 0 0 0.279424 0 -0.452181 -0.0272653 -0.153031 0.0378134 0 0 0.0914059 0 1.36194 0 1.2108 0.899576 0 -0.237092 -0.529887 -0.00913515 0 0.0225552 0 0 -0.0253247 0 1.77062 0.643926 0 0 0.095748 0 0 -0.318161 0.206266 -0.0700518 0 -1.29601 0 -0.395822 0.0311054 -0.014788 0.0331142 -0.116232 -0.0139769 0.254294 0.0691106 0.0424392 -5.53817 0.0502449 0 0 0 0.0257306 -0.020054 0 0 0 0 -0.0147672 0.0398661 -0.558829 1.68097 -0.331596 0.38866 -0.251449 -0.108216 0.122165 -0.130878 0.19999 0 0 0 0 0 0 +78 0 1.01435 0.585496 0.0542728 0.0469795 0.0207223 -0.0180194 0.722788 1.16674 0.305528 -1.81706 0.184893 -0.172984 -0.0172396 -0.335057 0.116803 1.55622 8.30152 -0.316855 0.113119 -2.17761 -0.0802587 -0.296215 0.0207531 -0.552041 0.2666 0.336003 -0.0414196 0.165107 0.764403 -0.270929 0.0956533 0.744676 -1.2496 -0.00134254 0.156831 0.0624758 0.125884 -6.29391 0.323199 -1.16138 -0.081366 0.920604 0.0975338 0.402409 -0.338596 -0.432899 0.334954 0.946599 -0.320108 0.355748 -1.70855 -2.17091 -0.377448 0.000780852 0.137323 0.540619 -0.287894 0.173945 0.878886 0.168776 -0.286526 1.41916 0.602714 -1.12661 -0.205691 0.654753 0.911147 0.223202 -0.143428 1.32951 -0.175531 0.167774 -0.304556 0.773932 -0.199646 -1.23907 22.4624 8.47307 -2.96786 5.1135 -2.94204 3.48919 1.25768 -0.885872 1.16122 -0.903718 0.169774 -0.206427 0.189126 -0.0803507 -1.7192 0 0 0 0 0 0.0542728 0.0469795 0 0 0 0 0 0 0 -0.0272286 0 0 0 0 -0.0498249 0 -0.00757336 0.0512532 -0.16957 0 0 0.182894 0 0 0.00187528 1.15104 0 0 0.0151419 0.216041 0 -0.101052 0 0.0288313 0 0 0.000896471 0 0 -0.4795 0 0 0 0 0 0 0 0.0845732 0 0 -0.0418363 0 0 0 0 0 0 0 0.110895 0 0.479516 0 -0.0263959 0 0 0.0381984 0.333212 0 -0.0255913 0 0 0 1.02132 0 0.18951 0 0 0.091195 0 0 0 0.0690991 0 0 0 0 0 0 0.0207223 0 -0.0180194 0 0 0 0 -0.382385 1.12255 0 0 -0.140171 0 -0.038803 0 0.043295 0 0 -0.00180391 0 -0.805521 -0.096335 -0.0111084 -0.000458906 0 0 0.351858 0 4.60475 0 -4.53135 -0.278354 0 -0.8395 -1.65365 -0.00926754 0 -0.0455155 0 0 0.14204 0 0.634783 -0.0294881 0 0 -0.00831625 0 0 -0.166459 4.77272 -0.400536 0 0.6064 0 0.326145 0.0409562 0.212289 0.939204 -0.0645971 -0.797579 0.920736 0.05619 -1.08367 -2.28865 -0.0294816 0 0 0 0.285349 0.0705698 0 0 0 0 -0.411822 40.4243 3.81073 4.41833 0.82741 -0.615141 2.03496 0.0182546 -0.00190003 0.0465261 0.391925 0 0 0 0 0 0 +79 0 -0.420052 0.066936 0.00461085 0.037427 -0.23533 -0.058771 0.1248 1.48669 0.083112 -0.230441 -0.0566531 -0.140188 0.000458623 -0.664217 -0.018479 0.998843 4.32351 0.0488996 -0.0256903 0.33329 0.0172709 -0.00810115 0.00075909 0.0505359 0.185621 0.186257 0.00716823 0.111219 0.258162 -0.170348 0.00833352 -0.131984 0.172058 0.102517 0.0413964 -0.00862296 0.0936794 1.44374 -0.169353 0.0152711 0.0038621 0.694604 -0.0217449 -1.16211 0.0288208 -0.124807 0.104056 -0.207949 0.0368927 -0.533764 0.267597 1.15227 0.0665146 -0.0107587 0.00280186 1.5 -0.0563756 0.351381 -0.012168 -0.0138917 -0.632291 -1.61663 0.569661 -0.41039 -0.270443 -0.121041 -0.0316508 0.0668984 -0.0306768 0.268407 -0.0782995 -0.0786889 0.0205243 1.67215 0.149249 0.192529 -5.94284 -1.08414 -2.21133 -0.800941 0.537439 -1.78264 -0.046499 -0.260597 0.663214 -2.81845 -0.0144509 0.0531312 -0.0971322 0.286055 -0.580627 0 0 0 0 0 0.00461085 0.037427 0 0 0 0 0 0 0 0.0138324 0 0 0 0 0.0113118 0 0.00205817 0.0365791 0.0732874 0 0 0.0925004 0 0 -0.00963293 0.767076 0 0 0.00107842 0.181995 0 -0.0276774 0 0.0129872 0 0 0.000129242 0 0 0.0555803 0 0 0 0 0 0 0 -0.0702042 0 0 -0.113589 0 0 0 0 0 0 0 -0.0114186 0 -0.715038 0 0.00395813 0 0 -0.0766195 -0.139847 0 0.0193379 0 0 0 -0.12941 0 -0.0658605 0 0 -0.000440927 0 0 0 -0.0356405 0 0 0 0 0 0 -0.23533 0 -0.058771 0 0 0 0 0.330133 0.154493 0 0 -0.226235 0 -0.0265706 0 -0.000257696 0 0 0.327637 0 -0.081307 0.078569 0.00267293 0.0401987 0 0 0.00836831 0 0.862671 0 1.85214 -0.178378 0 1.03543 0.417225 -0.000926455 0 0.021296 0 0 0.021396 0 0.126695 0.357101 0 0 0.0377973 0 0 0.104443 -1.42597 0.3382 0 -0.118157 0 -0.52737 0.0511704 -0.240833 0.222992 -0.237268 -0.788008 -0.0209705 0.119574 0.269036 2.04491 0.0279671 0 0 0 -0.0207874 0.036747 0 0 0 0 -0.0136334 -18.8144 -0.649579 -5.2171 -0.344655 0.108878 -0.816963 0.0983176 -0.105029 0.156402 -0.561947 0 0 0 0 0 0 +80 0 0 0 0 0 0.253911 -0.201418 0.393323 0.671467 0 0 -0.00986451 -0.947342 0 -1.76033 -0.0199116 0 0 0 -0.150287 0.832748 0 0 0 0 0.432698 0 0 0.839197 5.01617 -0.69632 0 -0.220915 0 0 0.293201 0.00922214 0 0 -0.10022 -0.0761374 0 0 0.033718 -3.16488 0 -0.523118 1.83336 -0.84759 -0.00245293 -0.945501 0.142462 0 0.19929 -0.154989 0.328472 -0.816069 0.300028 -0.292024 0 0 0.639302 -0.445262 0 -0.0891521 0.176647 -0.495178 0 0 0 0 -0.0894753 -0.101265 0 0.908356 -2.2971 0 0 0 0.136817 0 0.215684 -4.86107 0 -0.0457143 -0.0450468 -4.40929 0 -0.0653089 -0.186959 0.645642 -12.7508 0 0 0 0.150402 0.00447497 0 0 0 0.00214322 0 0 0.000211809 0 0 0.00289171 0 0 0 0 0.0594754 0 0.00241952 0 0.0499079 0 0.0306593 -0.0658673 0 0.000194817 0 0 0.0118274 0 -0.00160976 0 0 0 0 -0.0465069 0.00258414 0 -0.00174638 0 0 0 0 0 0 0 0 0 0 0.0757775 0 0 0 0 0 0 0 0 0 0 0.0484875 0 0 0 -0.0323804 0.0138009 0 0.0440085 0.090492 0 -0.00448478 0 -0.0128268 0 0 0 -0.071049 0 0 -0.0128101 0 0 0 0.0228252 0 0 0 0 -0.00371195 0 0.253911 0.150402 -0.201418 0.00447497 -0.373078 -0.123191 0.0158838 -0.290661 0.11748 -0.000579341 -0.0639935 0.170625 -1.45807e-05 0.00527568 0.000460724 0.00193796 -0.0237149 -0.0223075 0.800539 -0.113892 -0.420366 -0.0174448 0.138755 0.131139 -0.264129 0.262427 0.0966177 -0.0190789 -4.19879 -0.0780421 0.0353009 -1.38179 1.31013e-05 -0.322108 -0.308042 0.00397509 0.00104005 -0.0384684 -0.00124505 1.40662 0.00261765 0.0535516 -2.20617 0.71392 -0.00655969 -0.00385976 0.00177955 -0.0688315 -0.00451787 -0.301556 2.56607 0.0909134 0.00677957 1.53363 -0.000206722 0.154189 -0.00360453 -0.028206 0.0578761 0.174042 0.990059 -0.174779 0.031878 -0.0164965 9.0042 -0.112664 -0.310147 -0.0267936 -0.194227 -0.111019 -0.00802309 0.0270495 0.000779648 -0.0462694 0.0238099 -0.00265341 -0.185293 -0.446216 0.727907 0.0583631 0.252889 -4.02027 -0.00188297 0.0112737 -0.0213011 -0.81715 0.000230502 0.00942152 -0.0905917 0.236039 -1.76049 0 +81 0 0 0 0 0 0.721006 0.377503 -0.720444 -2.80667 0 0 0.00656472 0.511636 0 1.1695 0.00155479 0 0 0 -0.0144164 -1.15259 0 0 0 0 -0.561307 0 0 -0.709117 -2.26245 0.515247 0 0.0222042 0 0 -0.334628 -0.000243715 0 0 0.20148 0.759198 0 0 0.0719651 0.572901 0 1.10954 -0.793728 -0.00180063 -0.113808 0.737308 0.00500267 0 0.00364766 -0.00198686 -0.0247933 -0.584684 -0.0921681 -0.11746 0 0 0.401125 -3.04409 0 -0.79164 -0.0512639 -0.240611 0 0 0 0 -0.141986 0.121743 0 -2.90243 0.365563 0 0 0 3.89439 0 6.6861e-05 1.1115 0 -0.126647 -0.291984 4.65701 0 -0.215411 -0.0551412 0.306868 3.65662 0 0 0 -0.0244916 -0.00160316 0 0 0 -0.00877495 0 0 -0.000399959 0 0 -0.00391023 0 0 0 0 -0.0666596 0 -0.0022224 0 -0.127638 0 -0.111243 -0.025292 0 -0.000162462 0 0 0.00122913 0 -0.000287594 0 0 0 0 0.0354214 -0.00227154 0 0.00128904 0 0 0 0 0 0 0 0 0 0 -0.0104487 0 0 0 0 0 0 0 0 0 0 -0.0739554 0 0 0 0.00150498 0.0173468 0 0.047882 -0.073692 0 -0.0262795 0 -0.0338305 0 0 0 0.136372 0 0 0.000225356 0 0 0 0.0223543 0 0 0 0 -0.00610621 0 0.721006 -0.0244916 0.377503 -0.00160316 0.287616 0.0721514 -0.0119946 -0.445762 -0.0556844 0.000263374 0.014477 -0.0937773 7.78233e-06 -0.00324391 -0.00037753 0.00043599 0.0103391 0.00744595 -0.777718 -1.10686 0.180976 -0.387582 -0.052363 -0.14824 0.024488 -0.21521 0.0094139 -0.0149167 3.61444 0.0817819 1.22375 1.4543 -1.10311e-05 -1.66101 0.439172 -0.00190619 0.00140015 -0.127191 0.013247 -1.14006 -0.00101796 -0.0437863 2.17231 -1.97756 0.00278683 0.00827276 -0.425172 -0.160704 -0.00349808 1.03283 -1.25202 -0.690882 -0.0274006 -0.312195 0.000519696 -1.24018 -0.00378004 -0.0410309 0.0175939 -0.0432322 -0.405405 0.128357 0.216283 -0.0494412 -8.95522 -0.110576 0.778588 0.0467398 0.0626869 -0.102936 0.00517708 -0.0297728 -0.000430843 0.149357 -0.07896 0.00185224 -6.42339 0.301053 4.35766 -0.0258642 0.124744 1.81869 0.000818766 0.0860393 -0.282158 1.96854 -7.69386e-05 -0.0491518 0.112252 -0.264821 1.50934 0 +82 0 0 0 0 0 0.272517 0.240209 -0.555567 -1.15489 0 0 -0.0450836 1.0789 0 1.92474 -0.00659332 0 0 0 -0.0360269 2.1401 0 0 0 0 -0.431738 0 0 -0.640744 -2.36862 0.761883 0 -0.0731788 0 0 -0.270571 -0.00339697 0 0 -0.0696858 0.312498 0 0 -0.0170927 3.111 0 -0.0673734 -0.977875 -0.236436 0.0266759 1.12481 -0.0552324 0 0.00714093 -0.051177 -0.139566 -1.32289 0.0556597 -0.094509 0 0 -0.191973 1.61285 0 -0.271426 -0.103674 0.0890668 0 0 0 0 -0.217563 -0.221422 0 -0.504177 1.21604 0 0 0 1.34732 0 0.0830545 3.50862 0 0.0857565 0.11991 2.64136 0 0.0444979 -0.0944068 -0.149631 7.18232 0 0 0 0.0257601 0.000861169 0 0 0 -0.000227055 0 0 3.66742e-05 0 0 0.000887376 0 0 0 0 0.015608 0 0.000608415 0 0.0224144 0 -0.00497662 -0.0312611 0 4.30397e-05 0 0 0.00122763 0 -0.00060838 0 0 0 0 -0.0168748 0.000683691 0 -0.000511957 0 0 0 0 0 0 0 0 0 0 0.0137984 0 0 0 0 0 0 0 0 0 0 0.0106364 0 0 0 -0.00934035 0.00101196 0 0.00738721 0.0218837 0 -0.00110752 0 -0.00187506 0 0 0 -0.0267237 0 0 -0.000507952 0 0 0 0.000362635 0 0 0 0 -0.00340491 0 0.272517 0.0257601 0.240209 0.000861169 0.21377 0.0752477 0.00373959 0.235544 0.0293356 -0.000117536 -0.0175022 0.0792027 -3.0831e-06 0.00187632 0.000111678 0.000490284 -0.0121998 -0.00423377 1.10306 1.09599 0.502866 0.0342062 0.0618119 0.207052 -0.0868199 -0.122179 0.0379074 0.00311213 3.21015 -0.102272 2.73104 1.27663 3.20772e-06 0.327671 1.26114 0.00144249 -0.00365992 0.0148886 -0.0196597 -0.599517 0.000134094 -0.0219163 2.21387 2.51861 -0.00247318 -0.0160911 0.497915 0.128883 0.144028 -0.140615 -1.59567 0.0352613 -0.0207915 -0.357711 -8.8054e-05 -1.88106 -0.000132684 -0.0959583 0.071217 -0.267698 0.563833 0.0649486 -0.0917432 0.17701 -5.902 -0.118205 -0.558841 -0.0337766 0.0891048 0.0914674 -0.00256653 0.00932135 0.000166451 -0.121252 -0.0288793 0.00111281 -14.3351 -0.085262 -2.14489 -0.00299841 0.224473 2.34555 -0.000599264 0.00428703 0.115877 0.337136 4.37474e-05 0.00988299 -0.0250437 0.119924 0.749272 0 +83 0 0.214545 0.313245 0.000356378 0.0360603 -0.0901193 0.195289 0.338973 1.1009 0.000874734 0.0303488 -0.00903846 1.55055 -4.29534e-08 2.44556 -0.000179209 1.85661 5.56967 0.00866942 -0.000350006 3.73195 0.00237859 -0.123235 5.54526e-08 0.0142197 0.0191366 0.648732 -0.00612016 -0.259229 0.256211 0.716849 7.12793e-06 -0.0201733 0.105407 -0.0921757 -0.116556 -9.67373e-05 -0.0586747 1.1571 -0.00334445 2.26416 -5.52127e-06 -0.610577 -5.24317e-05 5.05044 -0.000677566 1.25313 -0.0428509 -0.0382035 5.43695e-05 -0.376114 -0.0155702 -7.3573 0.000198496 -0.000181925 -0.00146706 -3.53595 -0.151985 0.0319074 3.55408e-05 3.48662e-06 -1.38403 -3.12188 -0.713581 -0.349964 0.197261 -0.0585003 0.0702072 -0.0722791 -3.80421e-06 0.17146 -0.0172832 -0.00528099 0.0844723 -3.30075 0.328955 0.2616 -1.73328 0.0380198 -2.26412 -0.263396 0.579783 -2.36584 -0.0310455 0.0650109 -0.0232073 -1.45826 6.90566e-08 1.08076e-06 0.000238035 0.000895151 -0.189893 0 0 0 0 0 0.000356378 0.0360603 0 0 0 0 0 0 0 0.000938878 0 0 0 0 2.86894e-06 0 9.24563e-06 -0.000353065 0.000288861 0 0 0.0128431 0 0 0.0005558 -0.02177 0 0 0.00153319 -0.0181123 0 0.0286357 0 0.000124971 0 0 1.49095e-05 0 0 0.0856817 0 0 0 0 0 0 0 -0.0167101 0 0 0.0215282 0 0 0 0 0 0 0 0.00109257 0 0.111107 0 -0.000530642 0 0 -0.000632805 0.0247721 0 -0.00121422 0 0 0 -0.196218 0 -0.000858654 0 0 -0.00369254 0 0 0 -1.24487e-05 0 0 0 0 0 0 -0.0901193 0 0.195289 0 0 0 0 -0.00330332 -0.275186 0 0 -0.209686 0 -0.0125167 0 -0.00449724 0 0 0.444773 0 -0.257861 0.0939455 -0.0341827 0.0208418 0 0 -0.0857847 0 9.69877 0 -0.876361 1.22951 0 0.468519 -0.339124 -0.000816123 0 0.00767235 0 0 -0.023342 0 3.46614 1.39104 0 0 0.135343 0 0 -0.473402 -2.55042 -0.16386 0 -1.68494 0 0.410126 -0.0618826 0.12931 0.0617539 -0.094609 -1.4345 -0.162532 -0.00336799 -0.101734 -2.78922 -0.0376555 0 0 0 0.0474093 0.0159725 0 0 0 0 -0.01119 5.46021 1.05005 -0.929438 0.072743 0.0173907 0.358434 0.0188744 -0.00988609 0.128624 -0.329651 0 0 0 0 0 0 +84 0 0.474696 0.416387 -0.000211 -0.0213501 0.207491 0.0874546 0.0312698 0.081544 -0.000517901 -0.018122 0.0042624 -0.643926 2.54313e-08 -1.93266 0.000111831 1.51737 3.31137 -0.0168716 0.000221439 -2.58442 -0.00307032 -0.463611 -3.28317e-08 -0.00415433 -0.167958 0.744952 0.000527293 -0.172425 0.374147 -0.454105 -4.22021e-06 0.0128368 -0.710182 0.0172957 -0.210506 5.02897e-05 0.00986041 -2.44324 0.00115425 -1.07711 3.26896e-06 0.111378 2.57454e-05 -2.67761 0.000401164 -0.233795 -0.0449555 0.0248346 -2.85327e-05 -0.218681 0.00634567 -1.79515 -0.000123947 0.000113599 0.000615176 -0.614179 -0.0246968 -0.0185158 0.0040642 -2.06431e-06 -1.52546 2.2268 -0.36101 1.02452 0.0744316 -0.0466066 -0.0552394 0.0344041 2.25235e-06 0.214333 -0.0652254 0.00458042 -0.0204736 1.69966 -0.0715141 -0.0558132 6.50264 0.497757 0.432505 0.0815022 -0.125501 2.19358 0.00205528 -0.0529872 0.252949 -0.577924 -4.08861e-08 -5.97796e-07 -0.000167729 -0.000930416 -0.277301 0 0 0 0 0 -0.000211 -0.0213501 0 0 0 0 0 0 0 -0.000537665 0 0 0 0 -1.92602e-06 0 -5.3572e-06 0.000197152 -0.000206478 0 0 -0.00636397 0 0 -0.000321279 0.0129318 0 0 -0.000751728 0.00979734 0 -0.016341 0 -6.60369e-05 0 0 -7.8266e-06 0 0 -0.0488804 0 0 0 0 0 0 0 0.00984667 0 0 -0.0108858 0 0 0 0 0 0 0 -0.000372263 0 -0.0639219 0 0.000333414 0 0 0.000374256 -0.0133095 0 0.000833969 0 0 0 0.11194 0 0.000537585 0 0 0.00210655 0 0 0 8.8984e-06 0 0 0 0 0 0 0.207491 0 0.0874546 0 0 0 0 -0.243235 0.049011 0 0 0.121814 0 0.0117561 0 0.00154093 0 0 0.0244198 0 -1.29024 -0.122308 0.010957 0.0149046 0 0 0.00281187 0 -4.88716 0 -6.06637 -1.08662 0 -0.705127 -2.63104 5.96446e-05 0 -0.0480109 0 0 0.0131006 0 -2.23802 -0.108713 0 0 0.0172341 0 0 0.475911 -0.330239 0.330973 0 2.41831 0 0.620117 0.0567441 -0.0521051 0.27139 -0.0432296 -0.869775 -0.296103 0.0674851 -0.174794 10.166 -0.0306987 0 0 0 -0.0199715 -0.0350037 0 0 0 0 -0.0336135 35.9107 0.437604 4.68744 0.372674 -0.412264 2.27161 -0.0661946 0.0522853 -0.0494198 0.284775 0 0 0 0 0 0 +85 0 0.281817 0.052221 1.9647e-05 0.00198799 0.0266527 -0.154243 0.736196 0.575997 4.82237e-05 0.0415366 0.00112777 0.416491 -2.368e-09 0.203957 -2.88449e-05 1.04814 4.24608 0.00286699 -8.15213e-05 1.49912 -0.000639083 0.267415 3.05708e-09 -0.00318771 0.526202 -0.00578478 -0.00285748 0.568463 0.788196 -0.183089 3.9296e-07 -0.00406874 0.112317 -0.0518886 0.457025 5.09732e-06 -0.0219831 -1.53553 0.000793376 0.348461 -3.04385e-07 -0.268306 3.3813e-06 1.95151 -3.73539e-05 -0.197113 0.607651 -0.0118069 -1.3329e-06 0.109472 -0.0888064 -0.480146 3.90686e-05 -3.5807e-05 -0.00176005 1.2788 -0.169168 -0.00196513 0.00596316 1.92216e-07 -0.606935 -1.98092 -0.640612 0.339823 -0.0795194 -0.230561 -0.364103 -0.0195602 -2.09725e-07 -0.173256 -0.16396 0.00108046 0.0185511 0.248792 -0.163627 -0.135374 7.10653 0.219395 2.56343 0.205405 -0.25192 1.63765 -0.0182404 0.00666831 -0.222232 0.860868 3.80706e-09 9.75615e-09 -2.63234e-05 -0.00135297 -0.584176 0 0 0 0 0 1.9647e-05 0.00198799 0 0 0 0 0 0 0 1.27005e-05 0 0 0 0 -1.64043e-06 0 2.5916e-07 -1.96286e-05 -0.000264469 0 0 0.000180716 0 0 2.96877e-05 -0.00288937 0 0 4.15078e-05 -0.00101675 0 0.00150364 0 3.50708e-06 0 0 5.46024e-07 0 0 0.00449746 0 0 0 0 0 0 0 -0.000871243 0 0 0.0007978 0 0 0 0 0 0 0 6.07243e-05 0 0.0074326 0 -7.07419e-07 0 0 -3.81077e-05 0.00121105 0 -0.000139872 0 0 0 -0.0102995 0 0.000275117 0 0 -0.000193823 0 0 0 1.13975e-05 0 0 0 0 0 0 0.0266527 0 -0.154243 0 0 0 0 -0.0467241 -0.228528 0 0 -0.0489132 0 -0.00309977 0 -0.0011866 0 0 0.261522 0 0.011877 -0.0326045 -0.0032981 0.00735447 0 0 -0.0232361 0 3.63269 0 -2.72848 -0.0803847 0 -0.361071 -0.542294 -4.69016e-05 0 0.0056031 0 0 -0.0217757 0 0.840598 0.81184 0 0 0.0549796 0 0 0.144209 -1.74571 0.321093 0 0.306292 0 0.667913 -0.0367841 -0.0308907 -0.268727 0.0441602 -0.50316 -0.471011 -0.0917319 0.0980546 2.19135 -0.0508494 0 0 0 -0.0158408 0.00155527 0 0 0 0 0.0333984 19.227 0.652721 3.49455 0.267173 -0.224427 1.35865 -0.0313275 -0.0192053 0.000160415 0.357796 0 0 0 0 0 0 +86 0 0 0 -0.192569 -0.0152789 0 0 0 0 2.86995 1.36606 -0.0473332 0 0.364996 0 -0.0184284 0 0 0.56098 0.194665 0 0.441662 0 -0.40729 1.36678 0 0 -0.640971 0 0 0 0.0817475 -0.387043 0 -1.18579 0 -0.000466802 -1.11781 0 0.0679537 0 0.242717 -2.59504 0.244199 0 -0.40905 0 0 -1.12866 -0.949244 0 0.31457 0 1.44543 0.497562 0.0474978 0 0.97845 0.139452 -0.424528 0.87066 0 0 0 0 -0.68304 0 -1.32326 -0.19231 -1.51924 -2.09986 -0.424257 -0.293264 1.64904 0 0 2.68723 0 -4.31755 0 0.277909 -0.113928 0 -3.07535 1.18051 -0.454932 0 0.863542 -0.893479 0.917488 -0.339386 0 0 0.112974 0.0154989 0.115663 -0.00167963 -0.192569 -0.0152789 0.0546519 -0.0597658 -0.179242 -0.000422436 -0.00862743 0.0235191 -0.00115401 0.0600624 0.0220051 -0.00390638 0.0159667 0.106727 -0.157373 0.237228 0.0302117 -0.832666 0.036895 0.00193955 -0.43022 -0.433489 0.0101005 0.00278156 -0.816469 -0.570397 -0.159554 0.0099321 -0.0500749 -0.541033 -0.0525138 -1.57609 -0.0167952 0.137471 -0.00841395 0.0893642 0.0536418 -0.028605 0.000268578 -2.53356 0.322715 0.192488 -0.00426762 0.613326 -0.054995 -0.024062 -0.0148555 -0.119283 0.043241 0.110482 -0.352143 -0.173511 -0.0725474 0.0507956 -0.0431041 -0.12928 -0.102504 0.0644304 -0.0625145 0.145107 0.967542 0.0180949 -0.151696 -0.0483515 0.145788 0.225501 0.249995 -0.033067 -0.165802 0.0253528 0.331467 0.0117426 10.3298 -0.891047 1.02438 0.328783 -0.640825 1.32187 -0.029451 0.0556669 -0.113507 0.0547352 0.0078553 -0.0159534 0.0308384 -0.063704 0.125525 0 0 0.115663 0 -0.00167963 0 0 0.945575 0 -0.612232 0.0336995 -0.0417773 0.356111 0.00531575 0.0593091 0.1181 -0.0970955 -0.0218397 0.196467 0 0 0 0 0.0785823 0 -0.349799 0 -0.412223 0 0 0.0683877 0 0 0.0109844 0 0 -0.0116892 0.00321629 0 0.00670042 0 -0.0981231 0 0 0 -0.0012245 0.0363979 0 0 0.0227297 0 0 0 0.205517 0 -0.550849 0 -0.118414 -0.210113 0.232838 0 0 -0.304454 0.0293787 0.338135 0 0.197211 0 0.0116421 0 0.276293 0.0168378 -0.215334 0.0846403 0.254243 0.0983974 -0.295251 0 -1.28097 0 -1.21417 -0.0304978 0 -0.62162 0.209707 -0.0443872 0 -0.453126 0.0558491 -0.0618245 -0.106021 0 0 +87 0 0 0 0.251411 0.174361 0 0 0 0 -4.27476 -2.15839 -0.596198 0 -0.329918 0 0.221958 0 0 -0.647154 0.38837 0 -0.501998 0 0.627677 -1.41536 0 0 1.19821 0 0 0 -0.0917295 1.29206 0 2.06785 0 -0.0183395 2.14921 0 -3.43307 0 0.643474 3.06262 -0.769219 0 5.12565 0 0 2.92143 3.65474 0 1.98953 0 -1.64678 0.64981 -0.526177 0 -1.60864 -1.4074 -0.789448 -3.84732 0 0 0 0 -0.110838 0 1.30969 2.03149 2.53369 3.40975 0.720608 -1.66426 -2.32919 0 0 -4.57746 0 7.051 0 -10.5231 7.57174 0 -3.67728 2.61676 2.07286 0 -19.1849 11.1288 -6.44638 5.372 0 0 -0.591599 -0.0811614 0.354078 0.0764549 0.251411 0.174361 -0.126006 -0.0272245 0.33772 0.00293127 0.000170945 -0.00284253 -0.0057327 -0.02307 -0.0819502 0.0305327 -0.0542134 -0.411183 0.260346 -0.776071 -0.0132568 1.53385 0.489802 -0.00778138 -0.154212 -0.68613 -0.0421674 -0.0114377 1.013 -0.360195 -0.279391 -0.0352511 -0.213649 1.3581 0.049832 1.47736 0.0443178 -0.523858 -0.0673307 -0.237156 -0.155672 0.290942 -0.00226149 1.59243 -0.0329275 -0.603118 0.00599849 -1.00571 -0.0876683 0.0778848 0.0258273 -0.174551 -0.0430841 -0.118918 -2.09272 0.135881 0.207523 -0.120277 0.118152 0.293038 0.0306237 -0.139418 0.25354 -0.251478 2.02851 0.58206 0.285135 0.0463269 -0.0856418 0.0850264 0.866177 0.376992 -1.26084 -0.0210909 0.0720608 -0.0499971 -6.49262 1.58123 -1.68964 -0.664769 0.685766 -0.0568367 0.101163 -0.146907 0.202678 -0.0714105 -0.0488245 0.0653 -0.0752706 0.0287075 0.219803 0 0 0.354078 0 0.0764549 0 0 -0.31282 0 0.512084 0.0833757 0.0103001 -0.167734 0.00942072 -0.00345006 0.00481241 0.0862546 -0.0289714 0.631993 0 0 0 0 0.275467 0 0.188818 0 0.287642 0 0 -0.478031 0 0 0.0071478 0 0 0.0541691 -0.00795533 0 -0.0441257 0 0.139218 0 0 0 -0.00403015 -0.0854068 0 0 0.00736771 0 0 0 -0.0426757 0 0.248509 0 -0.13873 0.110976 0.598886 0 0 -0.176405 0.440617 -0.0872785 0 0.405783 0 0.208809 0 0.124742 -0.466781 0.681716 -0.585208 -0.615303 -0.125395 -0.149021 0 0.749983 0 -2.6616 1.78378 0 -1.82343 1.06083 0.317112 0 -1.84909 1.24608 -0.504694 0.430192 0 0 +88 0 0 0 -0.292515 -0.440274 0 0 0 0 -0.0638942 4.84691 -0.170889 0 0.462514 0 0.132791 0 0 1.05998 0.564629 0 0.515979 0 -0.380276 1.74216 0 0 -0.658196 0 0 0 -0.163495 0.548155 0 -1.15971 0 -0.0671974 -1.7625 0 0.821933 0 0.751404 -3.72635 0.102141 0 1.35573 0 0 2.00969 -0.393786 0 1.00408 0 -1.5933 0.455969 0.0369679 0 -0.382111 0.123015 -2.26962 -0.648562 0 0 0 0 0.27177 0 -1.67428 -1.70325 -1.24244 -6.9566 -0.0414827 1.17637 -0.501876 0 0 1.40522 0 -14.7893 0 -1.07051 -3.41109 0 -6.46783 2.08199 -5.7257 0 -3.45909 0.0763719 -1.44825 -1.70174 0 0 -0.062405 -0.00856134 -0.130279 -0.00709993 -0.292515 -0.440274 0.000781489 0.0477191 0.0145656 0.000212298 0.00594375 0.024029 -0.00956713 0.264498 -0.0131294 0.00186289 -0.0228488 -0.0489291 0.278411 -0.144687 0.0935281 -0.546516 1.00997 -0.0011409 0.237765 0.433807 -0.00485142 0.00962204 -0.627507 1.8163 0.377934 -0.00639989 0.13466 0.0687594 -0.0143529 -1.27328 0.00314576 -0.0365946 0.0635993 -0.0619448 0.0362669 0.0116696 -0.000889329 -3.50509 0.331582 -0.299534 -0.000791119 0.0877295 -0.412268 0.0259743 -0.00929273 1.07998 -0.0375865 -0.000891084 0.899172 -0.0224566 0.0451195 -0.0229864 0.033316 0.0259012 -0.0160522 -0.0603141 -0.0816909 -0.0814498 -1.26877 -0.513805 0.03825 -0.0917248 -0.0846586 0.0792954 0.184085 -0.336328 0.712822 0.0300783 -0.0179174 -0.00682288 14.2909 -0.0656776 -0.537673 0.289487 -0.463449 0.608316 0.0296329 -0.0638921 0.168894 -0.561312 -0.00411409 0.0120204 -0.0441673 0.101007 -0.297329 0 0 -0.130279 0 -0.00709993 0 0 -0.249761 0 -1.35472 0.00224336 0.0528526 1.67833 0.00261581 0.250391 -0.0353301 -0.130258 0.121696 -0.000859574 0 0 0 0 0.586914 0 0.455076 0 -0.429411 0 0 0.378838 0 0 -0.00542134 0 0 0.0874179 0.0088583 0 0.0324174 0 -0.245751 0 0 0 0.0123708 0.0805318 0 0 0.156256 0 0 0 -0.434861 0 0.183693 0 -0.566763 0.209783 -1.21729 0 0 -1.11934 0.215578 0.373691 0 0.0123408 0 0.137507 0 -0.551089 -0.49938 -0.164526 -0.0305856 0.234486 0.00716555 0.0185185 0 -6.05918 0 0.0357117 -1.76614 0 -0.423129 0.187624 -1.308 0 0.0976948 -0.209787 -0.260877 -0.239732 0 0 +89 0 -0.44032 -0.583985 -0.0648131 0.00679226 0.0701634 -0.0377753 0.0536749 0.276751 -0.175799 -1.32207 -0.226452 -0.591594 0.135686 -0.606136 -0.177826 -3.18417 -11.8959 0.0193219 -1.05098 0.384932 0.0185278 0.598117 -0.171847 -0.549347 -0.0887603 -0.950243 -0.224201 0.0480312 0.251012 -0.102802 -0.193676 -0.451072 1.14907 -0.381099 -0.0414477 -0.116272 -1.17658 1.50616 -0.500108 0.120675 0.177436 -2.03657 -0.318369 -3.04351 0.150853 0.0300005 0.131355 -2.27665 0.437751 -0.761894 -0.392314 6.87873 -0.061921 -1.1958 0.520379 -0.792993 -0.207794 0.321566 0.603488 -0.196665 -1.43392 -0.324283 -4.72102 0.791863 0.982283 -0.0348786 -2.01405 -1.54919 0.204927 1.30108 -0.349691 -0.343332 0.0932567 0.100481 -0.309509 0.685957 -13.9166 -1.01577 0.535654 -1.80237 2.13423 -3.27795 2.3582 -0.891514 1.10181 -1.33752 -0.615671 1.19169 -0.653582 0.753426 -0.47043 0 0 0 0 0 -0.0648131 0.00679226 0.00942029 0 0 0 0 0.00390839 0 0.00950797 0 0 -0.00259676 -0.0248189 -0.0239172 0 0.00556397 0.158243 -0.0671495 0 0 -0.883621 -0.0018181 0 0.585192 -1.15029 0 0 -0.1371 -0.201862 0 0.968589 0 -0.461868 0 0 -0.0677559 0 0 1.56112 0.0543027 -0.0346271 0 0.132739 0.0678181 0 0 -0.303061 0 0.0051853 -0.932512 0.0048357 0 0 0.0118309 -0.0239929 0 -0.01096 0.13219 -0.0405442 -0.597755 -0.060293 -0.00497137 0 -0.0382994 0.00858555 -0.290872 0.0853644 0.139798 0 0 0 -6.71612 0.393764 -0.636178 -0.156846 0.299499 -0.641137 0.00496915 -0.00956908 0.0196266 0.0221088 0 0 0 0 0 0 0.0701634 0 -0.0377753 0 0 0 0 0.0709244 0.12469 0 0 0.109979 0 0.0204298 0 -0.00347533 0 0 0.00874124 0 0.107306 0.0111847 0.0526093 0.00135845 0 0 0.0132228 0 -4.20087 0 1.66679 -0.407455 0 0.1364 0.519991 0.0089757 0 0.00653695 0 0 0.00124925 0 -1.18277 -0.425001 0 0 -0.0569885 0 0 0.109913 -1.22295 0.366134 0 -0.159745 0 -0.103961 -0.00792278 -0.146695 -0.0266564 0.0676607 0.302522 -0.320024 -0.116111 -0.409496 -2.11787 0.0346595 0 0 0 -0.034222 0.0132005 0 0 0 0 -0.0921587 -10.1307 -2.12454 0.464195 -1.10171 0.972876 -1.00881 -0.154037 0.0702442 -0.0937569 -0.1691 0 0 0 0 0 0 +90 0 0.5496 0.292426 -0.0730852 -0.271186 0.532602 0.0988293 -0.481092 -2.63809 0.86406 2.12015 0.139282 -0.174428 -0.0635535 0.456088 -0.0215308 0.87741 1.70918 0.0340416 0.117926 0.0380676 -0.0763894 -0.435436 0.136423 0.64842 -0.365503 0.443048 -0.2776 -0.023341 -0.537609 -0.024276 0.406328 0.00244055 -1.02102 -0.672514 -0.0197329 0.0602837 -0.874087 -3.25169 0.926054 0.0100793 -0.291889 -2.63045 0.520118 1.13644 -0.722947 0.00951347 -0.12962 0.310387 -1.46543 -0.776608 -0.374815 -9.50915 0.0387066 0.126981 -0.064725 -3.90154 -0.538511 -0.0514637 -0.450024 1.27199 1.0743 0.0174843 2.06862 1.89976 1.37245 -0.0230442 -0.892933 -1.84753 -1.49997 -2.30642 -0.0823739 0.844016 0.710299 -1.49467 0.0779398 -0.00974152 19.3691 -2.04973 10.6976 2.36861 -1.03147 5.74651 -3.47889 1.78574 -2.00612 5.36022 2.95053 -2.70997 1.77451 -1.47773 1.00755 0 0 0 0 0 -0.0730852 -0.271186 -0.0308853 0 0 0 0 -0.0133011 0 -0.0731723 0 0 0.0277096 0.202139 -0.414005 0 -0.0418113 -0.23702 -0.759383 0 0 1.18102 0.0147475 0 -0.643943 1.75881 0 0 0.183721 0.36404 0 -1.06094 0 0.57507 0 0 0.0934547 0 0 -1.63783 -0.18421 0.378357 0 -0.42871 0.135176 0 0 0.15966 0 -0.029855 1.62116 0.00558214 0 0 -0.056476 0.0742227 0 0.0490472 0.0479806 0.142567 -0.491732 -0.431925 -0.069142 0 -0.119859 0.110269 -0.335702 0.101178 1.09809 0 0 0 6.40182 -1.02435 2.22471 0.15087 -0.287346 0.623002 -0.0358592 0.0683568 -0.147572 0.301624 0 0 0 0 0 0 0.532602 0 0.0988293 0 0 0 0 -0.176767 -0.101191 0 0 0.328891 0 0.0405907 0 0.00793079 0 0 -0.144698 0 0.0482445 -0.093008 0.0408696 -0.0178945 0 0 0.0452901 0 1.11724 0 -1.77976 0.165722 0 -0.88127 -0.0254594 0.00311986 0 -0.0183269 0 0 -0.00166768 0 0.436014 -0.0517282 0 0 -0.0126951 0 0 -0.116558 0.210207 -0.650028 0 -0.0186072 0 0.754339 -0.308823 0.493786 -0.583254 -0.0757169 0.512202 -0.227248 0.189558 -0.0120565 -2.33509 0.027653 0 0 0 0.0451662 -0.137665 0 0 0 0 0.0518058 15.4115 -1.1599 5.81367 -0.38034 0.419409 1.90671 -0.423775 0.386364 -0.244121 0.754307 0 0 0 0 0 0 +91 0 0.208526 0.506952 0.41193 0.211097 -0.23676 -0.0980079 0.311508 1.83535 0.148658 -2.38972 -0.0888715 -0.707764 -0.664902 -0.345027 -0.0400319 0.73287 3.21695 -1.24961 0.0631712 -0.461608 -0.848799 -0.952133 0.791103 -1.30138 0.269549 0.426491 0.576377 0.0311142 0.539444 -0.103911 0.661279 -0.00854314 -1.60885 1.30418 0.0633603 0.00478729 1.03553 -1.1825 -0.37384 -0.095457 -0.679115 3.58066 0.0637606 -2.11818 -0.144433 -0.0155522 0.117785 0.208805 0.449015 1.34079 -0.221017 -2.27056 -0.240328 0.263664 -0.00604641 2.1218 0.649109 0.159896 1.18336 -0.112154 -1.02611 -0.200037 1.79159 -1.39469 -1.30325 0.121898 2.57358 1.65875 0.27603 3.39774 -0.0574447 -0.321459 -1.45296 0.405357 -0.133426 -2.00129 13.772 13.416 -6.49301 5.23326 -0.414621 -2.88497 4.15864 -1.92506 2.16518 -3.32704 0.58947 0.598998 -0.965461 0.962352 -1.01099 0 0 0 0 0 0.41193 0.211097 0.00660551 0 0 0 0 -0.00485853 0 0.0143045 0 0 -0.00346036 -0.0368822 -0.0231801 0 0.00143401 0.242776 0.0590678 0 0 -0.0401293 -0.002694 0 -0.249249 1.05765 0 0 -0.0130662 0.372599 0 -0.507241 0 0.0984315 0 0 0.00290018 0 0 -0.311161 -0.0666736 -0.0469081 0 0.0917674 -0.0484578 0 0 0.0948655 0 -0.00394822 -0.0640585 0.0126973 0 0 0.00227429 -0.0204818 0 -0.00542929 0.0104364 -0.00720617 -1.46203 0.0141509 0.00408623 0 -0.000449775 -0.026639 -0.106601 -0.116551 0.021399 0 0 0 0.605037 0.0490889 -0.0019371 0.015682 -0.0291033 0.0712716 0.00313068 -0.00589259 0.0135252 -0.00610782 0 0 0 0 0 0 -0.23676 0 -0.0980079 0 0 0 0 0.0832759 0.902142 0 0 -0.486675 0 -0.0563152 0 0.0163857 0 0 -0.000608614 0 0.109087 0.0687816 -0.0191043 0.00261544 0 0 0.0993507 0 0.122998 0 1.21348 -0.138134 0 0.712402 0.395876 -0.00127055 0 0.00650867 0 0 0.136642 0 -0.423711 -0.235948 0 0 -0.0202294 0 0 0.0566748 -1.32622 0.191272 0 -0.186123 0 -0.471892 0.462819 -0.453494 0.125088 -0.057734 -0.337755 0.347599 -0.112293 -1.06905 -0.788195 0.0216023 0 0 0 -0.0460506 0.0978535 0 0 0 0 -0.241759 -8.96971 2.08575 -4.34263 0.167852 -0.131853 -0.897677 0.365235 -0.318576 0.335136 -0.564878 0 0 0 0 0 0 +92 0 1.66544 0.880776 0.41375 0.0920457 0.138791 -0.0207779 0.471031 1.40757 -0.184592 -2.74111 0.0487753 -0.285598 -0.707081 -0.382677 -0.0183111 2.56404 12.1614 -1.31842 -0.05951 -1.27524 -0.839307 -0.920001 0.80196 -1.7122 0.386107 0.787824 0.59931 0.00409618 -0.109536 -0.0928892 0.669291 0.151806 -2.07804 1.3149 0.137583 0.0418166 1.23841 -5.34871 0.179335 -0.232668 -0.888949 4.85724 0.0218094 -1.25246 -0.881749 -0.0435858 0.00750398 0.874941 -0.0841277 0.846534 -1.44177 -0.314868 -0.547684 0.070296 0.0911224 5.46377 0.966163 0.446659 1.2392 0.395277 0.0229201 -0.177243 2.92009 -3.8935 -1.62613 -0.0292915 3.67287 1.89984 0.406959 1.21177 0.367903 0.00192514 -1.19416 0.315159 -0.0189701 -2.17414 19.8252 10.8874 -4.85443 9.68749 -6.66265 10.1991 6.80372 -3.30781 3.61834 -1.87136 3.30443 -0.457008 0.386645 -0.0519213 0.0450684 0 0 0 0 0 0.41375 0.0920457 0.00767635 0 0 0 0 -0.00585653 0 -0.0014553 0 0 -0.0044507 -0.00684112 0.113528 0 0.00478859 0.284912 0.061021 0 0 0.0652504 -0.000477673 0 -0.110995 1.72872 0 0 0.0017204 0.189197 0 -0.0892521 0 -0.0797308 0 0 -0.00795032 0 0 -0.619822 -0.0807988 -0.0706833 0 0.100376 0.0791707 0 0 -0.437974 0 -0.0129533 -1.21383 0.00250867 0 0 0.00871401 -0.0312087 0 -0.00873385 0.0598855 -0.00789883 -1.18856 0.0282399 -0.0395869 0 -0.00203765 0.00101651 0.188084 -0.211842 -0.316895 0 0 0 7.07832 0.719262 0.345389 -0.00314354 0.0966015 0.163546 0.00445428 -0.0045349 0.0220741 -0.0149734 0 0 0 0 0 0 0.138791 0 -0.0207779 0 0 0 0 -0.000836857 1.21088 0 0 -0.232475 0 -0.0394245 0 0.019401 0 0 -0.0464793 0 -0.0438924 0.0228852 -0.0105273 -0.00780966 0 0 0.14296 0 6.00938 0 -1.50551 0.157137 0 0.150208 -0.221072 -0.00357381 0 0.000228836 0 0 0.161059 0 0.912927 -0.247961 0 0 -0.037791 0 0 -0.0174975 1.1445 0.182182 0 1.08156 0 -1.26002 0.278696 -0.190541 0.281784 0.0292361 0.249769 1.21438 -0.231948 -0.736415 1.79109 0.0013052 0 0 0 0.177417 0.167382 0 0 0 0 -0.326762 13.6784 2.36078 -0.18796 0.830987 -0.694658 1.92452 0.217375 -0.236702 0.299111 -0.182311 0 0 0 0 0 0 +93 0 0.0991229 0.318922 -0.0213974 -0.299714 0.223243 0.0724448 -0.208875 -1.85007 0.620071 1.61723 0.166524 0.281915 -0.095166 1.35474 0.067852 1.65198 4.43568 0.0415701 0.091961 -0.326372 -0.110553 -0.440595 0.17127 0.281383 -0.334058 0.715534 0.00208515 -0.0201368 -0.198865 0.220429 0.350629 0.181764 -0.820189 -0.0697012 0.0174223 0.0765585 0.105706 -1.60928 0.278297 -0.0305446 -0.329062 -0.0742066 0.159196 2.50774 -0.710801 0.00290322 -0.0583381 0.462738 -0.329729 -0.663141 -0.241001 -3.93349 0.511846 0.13313 -0.0280935 -2.58166 -0.331148 -0.022198 0.336444 0.959242 2.59543 -0.062426 4.42674 0.930204 1.31583 -0.494765 1.65018 -0.929086 -1.27689 -1.53459 0.793557 -0.115101 0.989633 -1.18627 0.000366942 0.347473 13.64 -1.62277 7.56708 4.44482 -0.294492 1.44234 -1.60978 1.68418 -1.64776 3.00574 2.66379 -0.618991 0.518861 -0.0845359 0.0818228 0 0 0 0 0 -0.0213974 -0.299714 0.00504284 0 0 0 0 0.00318834 0 -0.0904069 0 0 0.0293635 0.209704 -0.410021 0 -0.0446111 -0.967434 -0.824594 0 0 -0.24675 0.0152867 0 -0.69128 -4.41987 0 0 0.0148657 -2.07761 0 -1.17831 0 -0.15951 0 0 0.00769785 0 0 -1.92023 0.0436699 0.398553 0 0.0675844 0.196 0 0 -0.0697331 0 0.01836 0.272997 0.0252858 0 0 -0.0508148 -0.0066732 0 0.0379388 -0.097127 0.136992 0.668329 -0.16958 -0.0761457 0 0.0354221 -0.187113 -0.403629 0.309777 0.258369 0 0 0 10.1761 -0.759731 2.5376 0.16716 -0.24609 0.461325 -0.0362848 0.0718072 -0.15686 0.28294 0 0 0 0 0 0 0.223243 0 0.0724448 0 0 0 0 -0.00930859 -0.0323667 0 0 0.212438 0 0.0237174 0 0.00753454 0 0 0.00786381 0 0.140025 0.005939 0.0106727 -0.000188661 0 0 0.0290857 0 0.599438 0 -0.0348555 0.0112908 0 -0.0694654 0.32055 -0.000279577 0 0.00276049 0 0 0.0122543 0 0.11878 0.278034 0 0 0.0193137 0 0 0.0955227 0.394075 -0.292847 0 0.399874 0 0.644054 -0.247789 0.198091 -0.402646 -0.108885 0.666922 -0.317379 0.239404 0.0984018 2.20727 0.1027 0 0 0 -0.0317096 -0.115246 0 0 0 0 0.0885926 -0.576474 -2.51547 2.36211 -1.02913 1.00262 -0.013231 -0.441476 0.371391 -0.166522 0.0851629 0 0 0 0 0 0 +94 0 -1.00306 -0.454923 -0.0620449 -0.0298645 -0.144387 -0.00144187 0.097606 1.34697 0.183024 0.316737 0.0225691 0.884651 0.0995829 0.622483 0.111845 0.586299 3.22606 0.33776 0.588261 -0.317661 0.201397 0.948902 -0.102053 0.288252 0.302194 -0.0682321 0.246444 0.00339711 0.175968 0.180276 -0.0363292 0.184688 2.60028 0.415636 0.036603 0.0109309 1.70223 8.65029 0.00568364 -0.0285034 0.121338 2.70466 0.028465 2.74215 0.111995 0.00387376 0.0281952 1.00474 -0.052784 0.482215 0.907807 1.53872 -0.308817 0.689019 -0.0334461 -3.35799 -0.267353 0.287726 -0.319407 -0.00375363 1.57675 -0.292216 -3.23029 -0.186677 -0.847092 -0.709521 0.471162 2.03582 -0.181722 1.93891 1.88564 0.0626561 -0.71404 -1.18493 -0.0965185 0.867145 -59.1789 -14.2039 -6.01777 -14.1083 6.01747 -9.714 -0.551724 0.386241 -0.991182 -1.43672 -0.419712 0.00471526 -0.352767 0.0229726 -0.0724017 0 0 0 0 0 -0.0620449 -0.0298645 -0.00238966 0 0 0 0 0.000913304 0 0.018301 0 0 0.00236102 0.0162728 0.027892 0 0.00503302 0.255399 0.105295 0 0 -0.100038 0.00118117 0 0.616746 0.907653 0 0 -0.0585813 0.551272 0 1.3698 0 -0.0943206 0 0 -0.0347966 0 0 3.08991 0.0125608 0.0339142 0 -0.031575 0.210774 0 0 -0.751608 0 0.00584558 -0.808266 -0.0013203 0 0 -0.00688377 0.0126824 0 0.0475086 -0.00795842 0.0320698 -0.64926 0.101974 -0.104654 0 -0.0207244 0.0314208 -0.695989 0.269338 0.0581642 0 0 0 -14.0077 0.347831 -1.61435 -0.297879 0.548336 -1.2105 -0.00333709 0.00541164 -0.0128277 -0.028429 0 0 0 0 0 0 -0.144387 0 -0.00144187 0 0 0 0 0.059853 -0.186224 0 0 0.00957481 0 0.00680556 0 -0.00400776 0 0 0.202977 0 0.203157 0.0229562 0.0164415 0.0235081 0 0 -0.0162831 0 -0.900307 0 2.97787 -0.147109 0 0.313344 0.799592 0.00423676 0 0.00610286 0 0 -0.0268304 0 -0.155235 0.64584 0 0 0.0738622 0 0 0.149725 -2.96128 0.308072 0 -1.30171 0 0.279141 -0.0522922 -0.127389 -0.164942 -0.0165611 0.120754 -0.662307 0.00474877 -0.0207891 -1.05617 0.100986 0 0 0 -0.195609 -0.0182973 0 0 0 0 0.0581951 -19.5434 -2.06251 -1.28342 -1.40205 1.29369 -2.32969 -0.0358945 0.0361964 -0.180207 -0.149167 0 0 0 0 0 0 +95 0 -1.18346 -0.236743 -0.0308378 -0.207368 0.346633 -0.097813 -0.482646 -1.49511 -0.312874 0.494182 0.0633347 -1.07025 0.000866535 -0.930823 0.0215074 -0.523892 -3.4078 0.129864 0.0622488 -3.01067 -0.00542369 0.0828685 -0.00301037 0.00279588 -0.205769 0.00973898 0.0349254 0.232662 0.178555 -0.469879 -0.0312629 0.251999 0.776107 0.219423 -0.00391866 0.0107584 -0.00236047 5.39759 -0.0961168 -1.37775 0.00647915 -0.100169 -0.00754637 -1.95563 0.0315211 -0.676455 0.0303117 0.626067 -0.00628033 1.38442 0.163237 0.957896 -0.0962638 0.0292208 -0.0712396 -0.0428797 -0.29132 -0.391205 -0.00041074 0.0090148 1.91652 3.57066 -0.0306215 -0.404718 -0.734067 -0.156224 0.515409 0.302098 0.07045 -0.246396 0.606626 0.0332949 -0.0214016 0.52719 -0.00628205 -0.774002 -19.631 -3.07387 -1.54146 -2.46518 2.4608 -9.10803 0.566089 0.415512 -1.5099 1.71365 -0.00766552 0.0120973 -0.0222641 0.00400882 -0.0062639 0 0 0 0 0 -0.0308378 -0.207368 -0.00620865 0 0 0 0 -0.000542049 0 0.0170085 0 0 -0.00582264 -0.0100527 0.017711 0 0.00179915 0.00785484 0.139171 0 0 0.11891 -0.000716263 0 0.0275694 -0.194023 0 0 0.0180607 0.0169724 0 0.143148 0 0.00516128 0 0 0.000836415 0 0 0.470669 -0.00755855 -0.0816003 0 -0.0866439 -0.0170208 0 0 0.065636 0 -0.0126892 -0.128402 0.0256036 0 0 0.0118937 0.0107243 0 -0.0239333 0.0699222 -0.0219854 0.0172595 0.0549129 0.0273987 0 -0.0229386 -0.049463 -0.0343871 0.0148154 -0.112436 0 0 0 -1.42413 0.180073 -0.360763 -0.043614 0.0697819 -0.131058 0.00750935 -0.0115103 0.020747 -0.0394868 0 0 0 0 0 0 0.346633 0 -0.097813 0 0 0 0 -0.209554 0.170422 0 0 0.758305 0 0.0848559 0 0.0341454 0 0 -0.712155 0 0.258979 -0.141668 0.204562 -0.0874934 0 0 0.263798 0 -6.15463 0 3.82531 -0.618248 0 -1.15553 1.2495 0.0193988 0 -0.0275759 0 0 0.0317898 0 -1.44786 -1.50777 0 0 -0.217285 0 0 0.320122 -2.3483 0.864193 0 -0.32241 0 -0.254209 0.232478 -0.415603 0.129206 -0.142188 -1.11809 0.0970639 0.066401 -0.454127 1.76148 0.0934962 0 0 0 -0.377095 -0.0995263 0 0 0 0 0.179073 -21.1085 -3.39615 1.70919 -1.26189 1.26518 -3.24965 -0.281907 0.32089 -0.529995 0.721136 0 0 0 0 0 0 +96 0 -0.00976625 0.177611 0.00623934 -0.00485417 -0.0810729 0.0602752 -0.212493 0.553923 0.0398007 -0.0695135 -0.128604 0.650603 -0.00145511 0.415645 -0.00360413 1.59186 5.18272 -0.1114 -0.0130546 1.5118 -0.017203 -0.179688 0.001602 -0.0504246 -0.041756 0.622421 -0.0114507 -0.0366668 0.0538741 0.136867 0.0100911 -0.116755 0.105598 -0.186189 -0.201182 -0.0149835 0.0100496 2.42175 -0.0160427 0.860553 -0.01008 -0.278416 0.00307028 2.04946 -0.0610644 0.431635 0.106337 -0.158155 -0.0280519 -0.310727 -0.140669 4.67904 0.0433637 0.029609 0.00803653 2.23258 0.280021 -0.0540399 0.149554 0.0254436 -0.102026 -0.669526 0.386847 -0.104862 -0.14427 0.435976 0.44346 0.106099 -0.0171811 0.843316 -0.0735709 -0.0177204 -0.157756 1.07742 0.0408516 0.954481 -12.1697 -1.77518 -2.94362 -2.42116 1.34295 -4.94642 0.291444 -0.196675 -0.236193 -1.45296 0.0148501 0.00115629 -0.00547965 0.000982261 -0.00188996 0 0 0 0 0 0.00623934 -0.00485417 -0.00400537 0 0 0 0 -0.000511484 0 0.016333 0 0 -0.00210356 -0.00184506 0.0111058 0 0.00194533 -0.0387415 0.104378 0 0 0.233456 -0.000149341 0 0.00935054 -0.555138 0 0 0.0383706 -0.187227 0 0.0629743 0 0.0299979 0 0 0.00505473 0 0 0.313681 -0.00714287 -0.0279111 0 -0.0562937 -0.00815077 0 0 -0.151034 0 -0.0081785 -0.208337 0.0188853 0 0 0.004327 0.00691209 0 0.00647704 -0.059932 -0.01236 0.206633 0.0590577 -0.00148271 0 0.014787 -0.0496864 -0.100893 0.0349178 -0.140206 0 0 0 -1.4557 0.153902 -0.434177 -0.0305265 0.062988 -0.142709 0.00289542 -0.00762803 0.0194953 -0.0552094 0 0 0 0 0 0 -0.0810729 0 0.0602752 0 0 0 0 0.0759186 -1.03239 0 0 0.0469226 0 -0.0152346 0 -0.101875 0 0 0.497537 0 -0.608628 0.0434069 -0.0216288 0.0600439 0 0 -0.690683 0 -7.4728 0 -0.097789 -1.19653 0 0.485062 -0.75616 -0.017233 0 0.010565 0 0 -0.162263 0 -3.32908 0.886771 0 0 0.10574 0 0 0.285113 -2.30241 -0.0993614 0 0.187595 0 -0.0201418 -0.0179904 0.0217735 -0.145352 0.0929575 -0.235866 -0.0500672 -0.244632 0.980646 4.93756 -0.0195811 0 0 0 -0.324749 0.0704768 0 0 0 0 0.411815 -10.5452 -1.88987 -1.54853 -0.0269559 -0.0117817 -1.18663 -0.06688 0.0492204 -0.102342 -0.410499 0 0 0 0 0 0 +97 0 -0.152816 0.144664 0.0231756 0.154646 -0.295692 0.171486 -0.624615 -0.0799519 0.234534 0.116496 -0.19697 -0.523536 -0.000683963 -0.812555 -0.000247965 0.676509 2.01471 0.123127 -0.0167578 -0.793146 0.0384051 -0.208063 0.00228778 0.0656113 -0.507205 0.407485 0.0209236 -0.554537 -0.00194596 0.0157422 0.0235914 -0.00618158 -0.0126514 0.33945 -0.442308 -0.0203157 0.0754512 1.55269 -0.148991 0.168723 -0.00509358 1.22826 -0.0121166 -2.55306 -0.0250879 0.524999 -0.231686 -0.117877 0.00208947 0.376446 0.406699 1.22017 0.111166 0.0327689 0.0434358 1.86245 0.650615 -0.255942 -0.269513 -0.00607745 1.7017 0.923135 -0.887183 0.0785816 -0.158864 -0.217549 -0.405101 -0.165915 -0.0530203 -0.398179 0.526038 -0.00261384 -0.327322 0.136571 0.0218519 -0.0691811 -8.32464 -2.72275 -0.344524 -1.25024 0.829227 -2.26196 -0.672988 0.487265 -0.332399 -0.795364 0.00610105 0.01779 0.000676671 0.00258807 6.82664e-05 0 0 0 0 0 0.0231756 0.154646 0.00440615 0 0 0 0 0.000385631 0 -0.00607633 0 0 0.00427297 0.00745881 -0.0124003 0 -0.000787558 -0.00481436 -0.0942646 0 0 -0.0437809 0.000530736 0 -0.0109078 -0.0237383 0 0 -0.00278945 -0.000857921 0 -0.0227365 0 0.00102565 0 0 0.000475768 0 0 0.106245 0.00538593 0.0599696 0 0.061595 0.0447628 0 0 -0.0773454 0 0.0090032 -0.0768677 -0.0168008 0 0 -0.00872654 -0.00760909 0 0.0110177 0.0282311 0.0163366 0.068712 0.0127025 -0.0157721 0 0.0106544 0.0303673 0.0104819 -0.00405425 -0.025121 0 0 0 -0.292696 -0.0669394 0.113135 -0.00976218 0.0148158 -0.0264388 -0.00550067 0.00825488 -0.0145611 0.0263209 0 0 0 0 0 0 -0.295692 0 0.171486 0 0 0 0 -0.407473 0.632332 0 0 -0.0284489 0 0.010698 0 0.0284686 0 0 -0.41125 0 -0.382983 0.02493 0.226072 -0.0585027 0 0 0.150903 0 1.23508 0 2.16598 0.250815 0 0.276426 0.170668 0.036438 0 -0.0471035 0 0 0.0889155 0 -0.0164519 -0.678197 0 0 -0.0823822 0 0 0.0943322 0.642384 0.371144 0 0.383525 0 -0.219427 0.171649 -0.218068 -0.0465983 -0.0912398 -0.0392535 0.351705 0.0877842 -0.328968 5.17183 0.0638452 0 0 0 -0.031124 0.00890725 0 0 0 0 -0.0667733 -10.3808 -0.11582 -2.43913 -0.460288 0.542171 -1.90234 0.0301661 0.0375748 -0.0630841 -0.208611 0 0 0 0 0 0 +98 0 -0.467531 -0.3134 -0.110501 -0.0276116 0.209551 0.0398845 -0.10724 -0.367398 -0.715191 0.824687 0.101077 0.156687 0.200151 -0.420524 0.141227 0.642989 2.6719 0.576177 0.830189 -0.187658 0.430066 0.745443 -0.270539 0.664322 0.000337986 -0.0480273 0.180847 -0.0215299 -0.425277 -0.0615603 -0.473721 0.260615 1.66996 0.36816 -0.0189736 0.0383064 1.59539 3.67529 0.424458 -0.0112292 0.283374 3.18586 0.118084 -0.34882 0.257452 0.00641612 -0.0972454 1.54043 -0.260702 -0.386644 -0.503963 -3.91814 -0.934868 0.841248 -0.282751 -0.344979 0.605389 0.270422 -0.73127 -0.378913 0.297882 -0.0621543 -0.140109 -1.55724 -0.633339 0.0205086 2.24369 2.51595 0.64272 -0.604237 0.80697 0.3146 -2.30618 0.22562 0.0901858 -0.684251 -26.2209 -8.85803 0.434705 -8.58725 1.46621 -0.436623 -2.24016 0.0324439 0.0953729 0.399947 -1.10419 -0.671304 0.775854 -0.619114 0.449742 0 0 0 0 0 -0.110501 -0.0276116 -0.038015 0 0 0 0 -0.0232259 0 0.0314939 0 0 -0.0123608 -0.125779 0.144642 0 0.0229743 0.597522 0.148784 0 0 0.541795 -0.00913569 0 0.545473 0.74689 0 0 0.0721346 0.770068 0 0.722171 0 0.348928 0 0 0.0510403 0 0 0.989906 -0.319795 -0.169835 0 -0.522623 -0.0679946 0 0 -0.0737198 0 -0.0826354 0.451976 0.117313 0 0 0.0275008 0.0622163 0 -0.040388 0.191686 -0.083682 0.539063 0.0228712 0.0536037 0 -0.113722 -0.131773 0.514171 -0.220007 -0.127389 0 0 0 -4.20425 0.535744 -0.768962 -0.0983612 0.187672 -0.402244 0.0168027 -0.0320317 0.0686604 -0.0589912 0 0 0 0 0 0 0.209551 0 0.0398845 0 0 0 0 -0.010239 0.227832 0 0 0.320567 0 0.0431104 0 0.00561678 0 0 0.00899396 0 -0.0708401 -0.0485094 0.0300189 0.00554987 0 0 0.0632751 0 -1.1842 0 1.25958 -0.0432623 0 -0.401455 0.198095 0.00512223 0 -0.00252766 0 0 0.0198654 0 -0.242194 -0.129592 0 0 -0.00628402 0 0 -0.0608931 -0.263662 0.0405096 0 0.64284 0 -0.145064 -0.0632336 0.0593461 -0.205818 0.0807576 0.412009 -0.0721298 -0.0936245 -0.388104 -1.31109 0.0255687 0 0 0 0.121628 -0.0201083 0 0 0 0 -0.121347 -9.0089 -1.75344 1.00212 -0.562542 0.290144 -0.373063 -0.185385 0.115629 -0.211307 0.269167 0 0 0 0 0 0 +99 0 -0.365481 -0.496609 -0.381518 -0.344192 0.3127 0.108946 -0.61707 -2.88729 -1.10259 4.79747 0.0691524 0.994303 0.663367 1.4652 0.104639 -1.38036 -7.21709 1.41002 0.314704 0.12786 0.806968 0.714116 -0.834344 2.32003 -0.425076 -0.485447 -0.706219 -0.0254141 -0.327027 0.425409 -1.12413 0.164323 1.78214 -1.16553 -0.0333242 -0.000374356 -1.56286 4.31552 -0.0588784 0.00852622 1.01108 -3.44192 -0.188431 3.52104 1.28638 -0.00105859 -0.103259 0.386734 0.21395 -0.314246 1.35268 2.03282 -0.285945 0.361164 -0.167384 -3.39834 -1.16232 -0.00306017 -2.83042 -1.18903 2.92815 0.0556854 -3.11968 1.86524 0.74276 -0.60654 -2.72884 -1.98972 0.939646 -5.37353 1.1789 0.0544741 1.43595 -0.841524 0.107837 2.09114 -29.5731 -24.0149 10.1773 -14.6439 5.03228 -1.61824 -11.8196 4.76598 -3.90729 4.18493 -5.51716 1.32008 0.0211022 -0.272363 0.34584 0 0 0 0 0 -0.381518 -0.344192 0.00474627 0 0 0 0 0.00143342 0 -0.0184043 0 0 0.00455862 -0.0752654 0.152672 0 0.0126159 -0.51839 -0.134341 0 0 -0.0992895 -0.00544292 0 -0.27765 -0.761434 0 0 -0.00369315 -0.446797 0 -0.786547 0 0.0528957 0 0 0.0244583 0 0 -1.46356 0.0194606 0.0604458 0 0.0633261 -0.092508 0 0 0.312416 0 0.038285 0.101926 -0.0758005 0 0 -0.00612504 0.00864041 0 -0.012985 0.000579001 0.0146626 0.372869 -0.236092 0.0463372 0 -0.0128641 0.1581 -0.265864 0.203696 0.504507 0 0 0 6.36863 -0.361603 0.903112 0.149105 -0.284057 0.60571 -0.00466086 0.00841384 -0.0181948 0.0390788 0 0 0 0 0 0 0.3127 0 0.108946 0 0 0 0 -0.103709 -0.730414 0 0 0.552114 0 0.0799335 0 -0.00814896 0 0 -0.0239496 0 0.161222 -0.0784301 0.0750129 -0.00587924 0 0 -0.0435149 0 -3.45879 0 0.39086 -0.00443153 0 -0.643035 0.341027 0.0135162 0 -0.0142612 0 0 -0.100373 0 -0.423557 0.286074 0 0 0.0163153 0 0 0.0619559 -0.573512 -0.600108 0 0.121836 0 0.595303 -0.367672 0.429134 -0.897611 -0.0942254 0.72952 -0.547301 0.333492 0.804333 4.74997 0.104489 0 0 0 -0.0323343 -0.240778 0 0 0 0 0.19581 -0.326818 -3.47204 4.65634 -1.19599 1.23101 -0.458215 -0.526671 0.481694 -0.478888 0.540655 0 0 0 0 0 0 +100 0 -1.32565 -0.859246 -0.152719 -0.0965437 -0.130079 -0.0106337 -0.221347 0.93398 -0.696177 -0.30295 -0.117006 0.243052 0.270421 0.163481 -0.0728991 -2.89841 -10.4523 0.332973 -0.397151 0.349735 0.232995 0.739317 -0.351692 -0.0501738 0.0369306 -1.02423 -0.201655 0.0178888 0.490348 -0.0693671 -0.543404 -0.167682 2.11902 -0.583723 -0.125232 -0.0707437 -0.757591 8.0069 -0.658119 0.0606451 0.396455 -2.36012 -0.406632 1.52325 0.433412 0.00506479 0.0956603 -0.890739 0.696175 0.0554573 0.880209 5.91658 0.410873 -0.453106 0.147036 0.12811 -0.747641 -0.199825 0.188557 -0.493022 -0.199506 -0.0711992 -4.98556 1.77623 0.05292 0.304913 -3.45247 -0.788959 0.6138 2.81614 -0.264233 -0.474174 0.460934 0.140642 -0.0268376 -0.44822 -41.2527 -4.0919 -6.6075 -9.33162 7.24947 -13.7835 0.778662 0.971354 -1.84601 -1.2882 -1.85886 1.81353 -1.2807 0.803055 -0.518557 0 0 0 0 0 -0.152719 -0.0965437 -0.025177 0 0 0 0 -0.0141103 0 0.0397968 0 0 -0.00748197 -0.0946799 0.282724 0 0.0277205 0.14929 0.385458 0 0 0.253116 -0.00686967 0 0.683796 -2.09674 0 0 0.016324 -0.342201 0 1.36625 0 0.147329 0 0 0.0162124 0 0 2.91702 -0.194433 -0.103757 0 -0.348028 0.128116 0 0 -0.730094 0 -0.0412623 -0.610883 0.124634 0 0 0.0141964 0.0497284 0 0.0213609 -0.0848744 -0.0150252 1.50675 0.444451 -0.0615536 0 0.0254719 -0.334943 -0.110249 0.238112 -0.94794 0 0 0 -12.0605 0.708825 -2.05815 -0.282708 0.539247 -1.1603 0.00968793 -0.0184569 0.0399312 -0.147626 0 0 0 0 0 0 -0.130079 0 -0.0106337 0 0 0 0 0.0805991 -0.571479 0 0 0.171892 0 0.0216945 0 -0.0163343 0 0 0.115594 0 0.30003 0.0456279 0.0234575 0.0118756 0 0 -0.105872 0 -4.36392 0 4.91814 -0.262113 0 0.463052 1.14996 0.00430727 0 0.00844338 0 0 -0.0812696 0 -0.786896 0.414321 0 0 0.0448163 0 0 0.170802 -2.61635 0.199661 0 -0.458206 0 0.814147 -0.202027 -0.0102733 -0.133463 0.0291146 0.249718 -1.15728 0.0540949 0.359498 4.56706 0.0951017 0 0 0 -0.244245 -0.0492869 0 0 0 0 0.200589 -36.3338 -3.41974 -3.21413 -1.84981 1.58843 -3.92341 -0.0995319 0.084004 -0.258751 -0.292683 0 0 0 0 0 0 +101 0 0 0 -0.352155 0.115963 0 0 0 0 -4.65427 0.745299 0.388132 0 0.660747 0 0.15976 0 0 0.325674 -0.169584 0 0.123848 0 -0.780055 0.299235 0 0 -0.556581 0 0 0 -1.36313 0.0127236 0 -1.2437 0 0.0760689 -2.70194 0 0.585473 0 1.01725 -7.72675 -0.076781 0 0.75173 0 0 -1.1295 0.785454 0 1.28939 0 0.00497619 0.171672 -0.265436 0 -1.12469 -0.470906 -0.871333 -1.99534 0 0 0 0 1.33358 0 0.684136 -2.99727 1.43551 0.148628 0.508186 0.322142 3.54922 0 0 1.39125 0 -2.83613 0 -0.689282 -1.09402 0 -2.25072 0.435271 -0.8623 0 -3.01084 -1.37776 1.36737 -1.56709 0 0 -0.149782 -0.0142225 -0.0361297 -0.0334569 -0.352155 0.115963 0.00174826 0.0442378 0.180649 0.000252044 0.00808486 0.00465454 -0.000413517 -0.0166904 -0.0120415 0.00343458 0.00287214 -0.0792841 0.0449274 -0.172369 0.0238921 -1.65851 -0.130917 -0.00078167 0.170695 -0.911016 -0.00326048 0.00474827 -0.277452 -8.02615 0.0627293 0.00311858 -0.037651 -3.553 0.0253357 -0.877425 0.0160018 -0.441655 0.0192731 0.02279 -0.0410867 0.0429172 0.000346954 -2.25727 0.0803365 -0.0606913 0.00207061 0.0499676 0.0980251 -0.00721828 0.0100045 -0.868988 0.00616054 -0.0154179 2.94148 0.126619 0.034587 -0.0505653 -0.0137361 -0.0176939 0.0635781 -0.0215264 -0.508452 0.0905652 8.97952 0.129244 -0.0690747 -0.023995 0.147614 0.0937135 -0.0391248 0.380085 0.899167 0.03176 0.0660082 -0.00790208 21.1711 0.873884 1.77777 -0.0957523 0.122363 -0.106168 -0.0202704 0.00467411 -0.0178553 -0.0214389 -0.00377684 -0.00107944 -0.00644386 -0.00599507 -0.0104492 0 0 -0.0361297 0 -0.0334569 0 0 -2.21163 0 -2.70499 -0.0422204 0.00478253 -1.05475 0.00224583 -0.201066 -0.330602 -0.0435013 -0.0308779 -0.666831 0 0 0 0 -0.517596 0 -0.0688153 0 -0.341929 0 0 -0.0229561 0 0 -0.0475316 0 0 -0.0981043 -0.0116574 0 -0.0235057 0 -0.47723 0 0 0 -0.00246034 -0.0621583 0 0 -0.250688 0 0 0 -0.152447 0 0.843402 0 -0.157543 -0.0363776 -0.0555535 0 0 0.487581 0.0417144 -0.54999 0 0.025486 0 0.0318663 0 -0.410054 0.196527 0.173162 -0.114009 -0.195481 -0.0640574 0.386329 0 3.55649 0 3.78312 -0.302019 0 1.87174 -0.645298 0.466418 0 1.15287 -0.401549 0.411151 -0.0519434 0 0 +102 0 0 0 -0.400499 -0.730465 0 0 0 0 -5.45879 2.82077 -0.166031 0 0.303232 0 -0.227648 0 0 0.391477 -0.234826 0 0.0858834 0 -0.789026 0.185672 0 0 -0.529899 0 0 0 -1.8897 -0.76387 0 -1.22325 0 -0.0711983 -2.36413 0 0.255615 0 0.80753 -5.96591 0.0232166 0 3.12241 0 0 -1.66827 0.468371 0 1.13969 0 -0.11083 -0.962087 0.853479 0 -0.583308 -0.163352 -0.719662 -1.8825 0 0 0 0 1.66213 0 0.01881 -4.18982 3.48596 1.22944 0.250348 0.221718 2.53438 0 0 -0.424587 0 -5.21866 0 -4.96534 -0.326952 0 -5.93277 2.08377 -2.98562 0 -8.58359 2.07152 -2.40148 -0.100064 0 0 -0.499394 -0.0474198 0.0210796 -0.0319104 -0.400499 -0.730465 -0.0214572 -0.0999117 0.585441 0.000900033 -0.017323 -0.00817415 0.0410452 0.0338141 -0.0357104 0.0126514 0.0503782 0.119422 -0.0888643 -0.485799 -0.00981918 -0.469702 -0.0703179 -0.0023855 -0.522577 -0.0262737 0.00944462 -0.00257519 -0.0936825 -3.28673 -0.0951859 0.0155655 0.00639762 -1.17957 0.0735419 0.0197217 0.0524595 0.292031 -0.0172773 0.173604 0.0510419 0.167134 0.00340259 0.318004 -0.179716 0.568412 0.00632506 -0.348845 -0.825267 -0.0460019 0.0464462 0.447338 -0.0260306 -0.0622878 -2.26673 0.027331 0.0939888 -0.132629 -0.0934123 0.0207751 0.186873 0.162266 0.365337 -0.120171 4.53686 -0.454762 0.0124796 0.0167163 0.0517307 -0.0561747 0.473431 0.389409 -0.455903 0.0745512 -0.121568 -0.0243802 -2.98258 -3.45672 0.165798 -0.699741 -0.514526 0.419892 -0.0948602 -0.068744 0.00202018 0.0549336 -0.0128051 -0.0098093 -0.0107713 -0.0143103 0.0158556 0 0 0.0210796 0 -0.0319104 0 0 -0.878565 0 0.259265 0.145587 0.0279429 1.38979 0.0234266 0.232503 -0.0924476 0.0137634 0.0476387 0.850987 0 0 0 0 0.365007 0 0.137557 0 0.016572 0 0 -0.0673067 0 0 -0.010637 0 0 0.0696818 0.0013417 0 0.00700756 0 0.157676 0 0 0 0.00682807 -0.00889844 0 0 -0.0507626 0 0 0 -0.327818 0 0.388046 0 -0.281681 0.303192 -0.190817 0 0 0.0320153 0.0971916 -0.88134 0 -0.278694 0 -0.135371 0 -0.276186 -0.17608 0.129543 -0.259258 0.0238062 0.0424238 -0.255611 0 -5.26066 0 -3.06476 0.244137 0 -1.5911 0.547417 -0.463141 0 -1.42274 0.5913 -0.335059 0.0360748 0 0 +103 0 0 0 0.027516 -0.116923 0 0 0 0 1.20082 -0.512625 -0.131808 0 0.0450792 0 0.0128034 0 0 -0.125319 0.2207 0 -0.0134435 0 0.250294 -0.155653 0 0 0.0249599 0 0 0 0.685703 0.0728464 0 -0.000971974 0 -0.0297493 0.868714 0 -0.280474 0 0.0711985 2.27376 -0.0969495 0 0.202058 0 0 1.14501 0.10371 0 -0.605361 0 1.02858 0.612514 -0.469525 0 0.635411 -0.11592 0.444666 0.3572 0 0 0 0 -0.185103 0 -0.258552 0.768922 -2.54965 0.426588 -0.247579 -0.22645 -1.32939 0 0 -2.00821 0 2.72112 0 0.172762 0.448562 0 1.25493 -0.749524 1.11341 0 0.471308 -0.200565 0.315473 0.114217 0 0 -0.0628595 -0.00596881 -0.0236714 0.0256094 0.027516 -0.116923 0.0060869 -0.0900349 0.140321 0.000108953 -0.0140453 0.00200939 0.017419 0.095355 -0.00481727 0.00150529 0.0100691 0.0233181 0.200913 -0.0676061 0.0328738 -0.214796 0.502515 -0.000316298 -0.565466 0.00441008 0.00162746 -0.00775259 0.163555 0.407234 -0.178699 0.00511113 -0.135461 -0.174572 0.0106295 0.459326 0.0101304 0.0359027 -0.0380705 0.0813919 -0.0445334 0.0192911 0.00107691 1.49855 0.0347731 0.141968 0.000868809 0.122094 -0.194363 -0.0151176 0.0146963 1.47663 -0.0337526 0.0165735 1.77365 -0.0519787 0.0133798 -0.0184598 -0.0168217 -0.00790582 0.0354884 0.141036 0.00830338 -0.126059 7.56799 0.224639 0.0314189 0.0647129 0.031835 -0.263863 1.5029 0.0609484 -0.669145 -0.00227198 -0.151504 -0.00321162 -14.055 -1.36441 -3.1292 -0.151774 -0.425399 0.713204 -0.0145991 -0.0399712 0.0671695 0.050282 -0.00159635 -0.00418481 0.00636873 9.80739e-05 0.0297668 0 0 -0.0236714 0 0.0256094 0 0 0.294537 0 0.791771 -0.0309638 0.0736124 -0.0751752 -0.00523524 -0.0444577 0.0736096 -0.00577371 0.0946242 -0.182695 0 0 0 0 -0.0634938 0 0.542094 0 0.0848939 0 0 0.143886 0 0 0.0134087 0 0 -0.0182389 0.0043674 0 0.0175839 0 0.153853 0 0 0 0.0115608 0.0318762 0 0 0.0232988 0 0 0 0.101453 0 -0.223771 0 0.77978 -0.276667 0.869331 0 0 0.366159 -0.140299 0.403418 0 -0.082848 0 0.176442 0 0.168796 0.21509 -0.0545224 0.14786 0.0394036 -0.130019 -0.235774 0 1.32996 0 0.71162 -0.861536 0 0.379631 -0.303254 0.000533111 0 -0.0261553 -0.0499469 -0.00432608 -0.012814 0 0 +104 0 -0.167967 -0.0601262 0.34633 0.158126 -0.24275 -0.119082 0.523029 0.706444 0.693517 -1.77477 -0.0113248 -0.233525 -0.560211 -0.131214 0.176843 -0.684944 -4.9249 -0.600181 0.74917 -0.810152 -0.297742 -0.128528 0.698353 -0.635031 0.163344 -0.0795852 0.559091 0.00482274 0.233532 0.019918 0.832224 0.347174 -0.303186 0.973937 0.114057 0.0658917 2.27067 -1.74999 -0.29603 -0.237199 -0.750782 4.25625 0.141884 -1.7137 -0.597409 -0.0681217 0.0377158 1.50922 0.0367886 0.446263 -0.608946 -0.0566174 -0.751981 0.87266 -0.418082 -0.706133 1.01288 0.582268 0.707579 0.547831 -0.0344389 -0.280499 0.518103 0.121053 -0.302817 -0.444466 1.05564 1.68506 -0.479221 -1.05164 -0.00476922 -0.229184 -2.79648 -0.634773 0.174936 0.0822755 -0.639232 2.83638 -0.62388 3.80408 -0.744377 0.660841 2.53853 -1.3649 1.4485 -1.46871 2.28236 0.0577743 -0.182958 0.328858 -0.205726 0 0 0 0 0 0.34633 0.158126 0.00228569 0 0 0 0 -0.00195371 0 0.0178176 0 0 0.00470881 0.0560114 0.00694145 0 0.00323128 0.749137 0.0937746 0 0 0.315246 0.00296366 0 0.0414201 2.63782 0 0 0.0399189 1.40668 0 0.590946 0 0.261765 0 0 0.0368112 0 0 1.67028 -0.0368637 0.0891498 0 0.0435258 -0.214864 0 0 0.652132 0 0.00167563 -0.705056 -0.00713926 0 0 -0.01014 -0.00588268 0 0.0270417 0.144121 -0.00727727 -2.21057 -0.0567267 0.0475174 0 -0.011136 -0.0306885 0.127646 -0.106633 -0.0551135 0 0 0 -16.5227 -1.2252 -1.37515 -0.0800922 -0.06948 -0.143281 -0.00428119 -0.00374481 -0.00736159 -0.00927544 0 0 0 0 0 0 -0.24275 0 -0.119082 0 0 0 0 -0.0223636 0.185344 0 0 -0.576463 0 -0.0618405 0 -0.0106484 0 0 0.043026 0 -0.128308 0.027331 -0.0376881 0.00832235 0 0 -0.097213 0 -1.66137 0 -2.27568 -0.044489 0 0.217586 -0.628587 -0.00251574 0 -0.00567876 0 0 0.0201902 0 -0.286402 -0.332403 0 0 -0.0227472 0 0 -0.0914261 0.442675 0.0987957 0 -0.347348 0 0.326063 0.191405 -0.14515 0.0514836 -0.0284963 0.29742 -0.329866 0.0551254 0.247576 0.400258 -0.0424188 0 0 0 0.00097744 -0.0272054 0 0 0 0 -0.00165839 14.3192 3.07541 0.0388356 0.999907 -0.65323 0.928572 0.309437 -0.227123 0.277248 -0.106921 0 0 0 0 0 0 +105 0 -1.09458 -0.304431 -0.19365 -0.270577 0.0702304 0.0527487 -0.560306 -1.02551 0.788407 2.88118 0.17363 0.124734 0.246765 0.537765 0.240216 -0.600051 -0.802118 0.912345 0.80194 0.211466 0.411059 0.100426 -0.240636 1.03774 -0.3586 -0.297982 0.433877 -0.0417064 -0.506604 0.0509389 0.00741443 0.534206 0.286744 0.819255 -0.157149 0.047659 2.43257 2.66865 0.425372 0.0638645 0.288651 3.84269 0.0872729 1.74156 0.267751 0.0322692 -0.141454 1.71065 -0.475726 0.493138 0.780742 0.56876 -0.394452 0.712872 -0.210973 1.09849 0.833584 0.0676822 -1.20396 0.276164 0.804086 0.726265 -1.21358 1.03827 -1.32767 0.0603748 -3.19403 1.81804 -1.08152 -0.492657 0.250038 0.330912 -3.05058 0.494818 -0.0058865 -0.455613 -5.03582 -3.51025 0.859499 -4.30724 2.20587 -2.47154 -4.82921 2.25187 -1.67626 0.716527 -1.02292 -0.585004 0.849787 -0.617898 0.446283 0 0 0 0 0 -0.19365 -0.270577 -0.00159166 0 0 0 0 0.00254978 0 0.0604802 0 0 0.0123531 0.1023 0.147469 0 0.0303848 0.519433 0.299307 0 0 0.849271 0.00547662 0 0.778936 4.94123 0 0 0.0952479 1.75552 0 1.67883 0 0.269793 0 0 0.0274993 0 0 3.96584 0.0466794 0.22779 0 -0.0372515 -0.33881 0 0 1.37578 0 0.0123666 -0.633059 -0.0199407 0 0 -0.0245063 0.0141331 0 0.0725467 0.218466 -0.0400335 -4.55195 0.0062145 0.155749 0 -0.0555247 -0.064478 0.543047 -0.352412 -0.00341084 0 0 0 -40.8991 -2.97642 -3.5696 -0.199436 -0.156823 -0.484201 -0.00982612 -0.00725635 -0.0316677 0.00744659 0 0 0 0 0 0 0.0702304 0 0.0527487 0 0 0 0 -0.00130048 -0.633421 0 0 0.550483 0 0.0712896 0 -0.00116236 0 0 0.0927374 0 0.228279 -0.0184541 0.105218 0.0116695 0 0 -0.00513051 0 1.97765 0 2.91769 0.178168 0 -0.198193 0.803153 0.0154033 0 0.00292275 0 0 -0.0748293 0 0.620409 0.575671 0 0 0.0805322 0 0 0.0370738 0.137556 -0.0537871 0 -0.22848 0 0.389692 -0.276836 0.15955 0.0229988 -0.00825525 -0.375108 -0.267747 0.135168 -0.0382344 -1.36827 0.022601 0 0 0 -0.171708 -0.119336 0 0 0 0 0.211637 -16.9011 -2.84822 0.271259 -1.06067 0.78062 -1.21945 -0.380792 0.275897 -0.239447 0.0864762 0 0 0 0 0 0 +106 0 0.157581 0.0748182 0.0136391 -0.021818 -0.065533 0.0323821 -0.277848 -0.65946 0.130308 0.416296 0.063135 0.153766 -0.0288742 0.174873 -0.0107521 0.825236 4.17146 0.0222579 -0.0892307 -0.638376 0.000880078 -0.013883 0.0424144 0.113672 -0.0972791 0.219766 0.0805336 -0.0195493 -0.233552 0.0580814 0.0794162 -0.0464524 -0.127439 0.219606 -0.0263726 0.0314156 0.109431 -0.440397 0.209589 -0.102387 -0.0477498 0.243858 0.0916095 0.79304 -0.058442 -0.00293816 -0.0705269 -0.149935 -0.164976 -0.121391 -0.0371788 -8.11265 0.0339591 -0.0734699 -0.0170859 -2.83927 0.122562 -0.368668 -0.0310629 0.0880978 -0.751501 -0.0304541 -0.570561 -0.455334 0.0420139 -0.22019 0.0654368 -0.273022 -0.155151 -0.169434 0.0778061 0.091868 -0.371989 -1.39072 0.0776162 0.751601 3.99282 -0.420157 2.2523 0.452045 -0.551024 1.23144 -0.432365 0.115104 -0.062885 0.610521 0.223273 -0.450027 0.471876 -0.2908 0.205743 0 0 0 0 0 0.0136391 -0.021818 -0.000250189 0 0 0 0 4.92095e-05 0 -0.0313686 0 0 0.00149218 0.0151604 -0.0876374 0 -0.0156012 0.12434 -0.171003 0 0 0.377375 0.000809019 0 -0.0723852 0.912308 0 0 0.064599 0.359725 0 -0.121325 0 0.218614 0 0 0.0366425 0 0 -0.235634 0.000751204 0.0272803 0 -0.00615021 -0.0848092 0 0 -0.522635 0 0.00110964 -1.28174 -0.00597467 0 0 -0.00322391 0.00152144 0 -0.0375984 -0.389029 -0.0204113 -3.53212 -0.086863 0.0169772 0 0.00903687 0.0386577 -1.24245 -0.00834693 -0.119277 0 0 0 2.0998 -0.0366049 0.909823 0.00995242 0.00684469 0.0372327 -0.00127647 -0.00126081 -0.000948725 0.0116027 0 0 0 0 0 0 -0.065533 0 0.0323821 0 0 0 0 -0.0104273 0.37749 0 0 -0.0940739 0 -0.0143755 0 0.0114347 0 0 0.171405 0 -0.011445 0.0200883 -0.00336306 0.0237331 0 0 0.0881677 0 2.48599 0 0.0389009 -0.146865 0 0.151138 -0.0713019 -0.00203713 0 -0.000995748 0 0 0.0481773 0 0.096085 0.753759 0 0 0.109175 0 0 -0.089065 0.0314882 0.114015 0 -0.0445892 0 -0.250181 0.0773392 -0.0920406 -0.0206038 -0.144464 -0.269199 0.286597 0.0325598 -0.332057 -2.71511 0.110978 0 0 0 0.0596287 0.0235302 0 0 0 0 -0.113103 -1.22574 0.476542 -1.24564 0.0058667 0.0118853 0.00293655 0.0228443 -0.0125301 0.0320838 -0.0516481 0 0 0 0 0 0 +107 0 0 0 0 0 0.618044 0.400796 -1.90553 -3.85534 0 0 -0.779752 2.2837 0 3.7507 -0.140328 0 0 0 -0.159278 7.04203 0 0 0 0 -0.870912 0 0 -0.0758199 4.6649 1.25451 0 -0.575663 0 0 -0.611128 -0.107602 0 0 -2.22084 3.48988 0 0 -0.437064 7.59461 0 1.40156 1.25499 -0.37771 0.891945 -0.903494 0.911412 0 0.167954 -0.323301 -0.0523329 -0.548103 0.465027 -0.0660231 0 0 2.88724 -7.36493 0 0.18789 0.235397 -0.715174 0 0 0 0 0.346001 -2.19456 0 -5.00465 0.24271 0 0 0 7.13214 0 3.31865 -5.12332 0 1.20438 -2.69126 6.26219 0 1.25256 -2.95186 6.39827 -13.2648 0 0 0 0.246166 0.0548499 0 0 0 -0.0117159 0 0 -0.00271325 0 0 0.0260493 0 0 0 0 0.0719923 0 0.0171917 0 0.109071 0 -0.040395 0.165584 0 0.00271884 0 0 0.0715008 0 0.0247344 0 0 0 0 0.0640003 0.0134565 0 0.0108242 0 0 0 0 0 0 0 0 0 0 -0.0631832 0 0 0 0 0 0 0 0 0 0 -0.0294383 0 0 0 -0.0318411 -0.0165817 0 -0.0811395 -0.0390743 0 -0.0137964 0 -0.0362656 0 0 0 -0.12489 0 0 -0.081871 0 0 0 -0.00514104 0 0 0 0 -0.0061628 0 0.618044 0.246166 0.400796 0.0548499 -0.189195 -0.0723093 0.391676 -0.486783 0.129996 -0.0502359 -0.0263135 0.221114 -0.00732424 -0.0301813 0.0648542 -0.0392342 -0.0648164 -0.303391 1.40687 -0.973712 2.08243 -0.184495 0.431703 0.103661 -0.174117 0.0199267 -0.278681 -0.0234372 10.08 -0.103109 6.11575 3.81351 0.00945555 -1.02965 3.77079 0.0312062 0.00127547 -0.0959799 -0.00338053 0.315778 0.0028455 0.000218164 6.44568 0.713829 -0.00803811 0.0043196 -0.0312925 -0.141499 -0.0583291 0.113954 0.943157 -0.472259 0.0966199 -1.8612 -0.11173 -0.708084 0.00715865 -0.0776739 -0.499799 -0.241152 1.31599 -0.0263793 0.0454659 1.31494 3.59647 -0.0642897 0.946361 -0.187149 -0.0177591 0.212581 0.0566652 -0.00393305 0.102402 -0.167267 0.0174251 -0.00605017 -35.328 -4.81899 5.50487 -0.464564 1.42917 -1.93241 0.158901 0.21005 -0.360685 0.749992 0.133034 0.0940909 -0.209192 0.399426 -0.374824 0 +108 0 0 0 0 0 0.221426 -0.0154176 0.604975 0.935972 0 0 0.000321165 -0.0586662 0 1.07967 0.0301888 0 0 0 0.078847 6.85289 0 0 0 0 0.173085 0 0 0.143142 0.231454 0.00978403 0 0.190211 0 0 0.125265 -0.00696683 0 0 -0.441583 2.25719 0 0 -0.153807 1.91703 0 0.502067 0.155119 0.482073 0.302784 -1.18036 0.312968 0 -0.0994709 0.034659 -0.0860479 -0.103869 -0.0180668 0.0610587 0 0 -1.54089 -7.48901 0 -0.0741292 0.159236 -0.919936 0 0 0 0 0.00620309 -0.703717 0 -1.90863 0.516975 0 0 0 -1.13176 0 1.25018 -2.56185 0 0.462867 -0.576642 -0.538548 0 0.563523 -1.01162 1.88658 -1.34614 0 0 0 0.0250666 0.00558525 0 0 0 0.0276955 0 0 0.00320008 0 0 0.0177135 0 0 0 0 0.0987738 0 0.011658 0 0.150115 0 0.233008 0.035266 0 0.000882588 0 0 0.00166635 0 0.00451275 0 0 0 0 -0.0601763 0.00386147 0 -0.00612372 0 0 0 0 0 0 0 0 0 0 0.0704746 0 0 0 0 0 0 0 0 0 0 0.124367 0 0 0 -0.011969 -0.00100105 0 0.00744592 0.141462 0 0.0359189 0 0.0468651 0 0 0 -0.171887 0 0 -0.00190804 0 0 0 -0.00647963 0 0 0 0 -0.000143627 0 0.221426 0.0250666 -0.0154176 0.00558525 0.37232 0.0114313 0.0398836 0.908887 -0.184339 -0.00511541 0.00522698 -0.159401 -0.000745812 -0.0227832 0.00660397 0.00542606 -0.00898283 -0.0308937 1.19622 0.375131 0.0737736 0.243815 -0.0507544 0.143728 0.00197735 0.0969699 0.0585775 0.0045701 4.07435 -0.112073 0.368005 0.451919 0.000962839 1.45871 0.295906 -0.00708418 -0.00153559 0.154496 -0.0172119 0.427635 -0.0211167 0.017508 1.89582 2.22146 -0.000597073 -0.00997577 0.272976 0.0392801 -0.116056 -1.1518 1.28364 -0.00648382 0.0209329 -3.52041 -0.0113772 0.351772 -0.0437288 0.358276 0.303307 -0.0929801 1.55117 0.224143 0.100844 1.00021 -9.46824 -0.0143924 0.272647 -0.0707902 0.0864068 0.283397 0.0467043 0.0612069 0.0104274 -0.146051 0.0109681 0.0369576 -2.1258 0.208849 -3.28046 0.00854659 0.666508 -2.48863 0.0560648 0.163507 -0.137666 -0.796747 0.0135465 0.109287 -0.163464 0.236449 -0.525812 0 +109 0 0 0 0 0 0.138221 -0.214971 1.12623 1.2335 0 0 -0.190345 -1.56056 0 -2.77828 -0.0614734 0 0 0 -0.0224752 2.63934 0 0 0 0 0.678567 0 0 0.662939 4.048 -1.17922 0 -0.452154 0 0 0.567997 -0.0372114 0 0 -0.886421 0.593311 0 0 -0.194719 -2.95097 0 -0.362102 1.53823 -0.297229 0.365071 -1.90842 0.272154 0 0.010945 -0.0970224 0.163505 -1.26951 -0.86554 -0.224554 0 0 -0.524472 -3.41499 0 -0.272668 0.367478 -0.131763 0 0 0 0 0.19455 -0.782408 0 1.43035 -0.0182009 0 0 0 -3.56744 0 0.47701 -5.45458 0 0.345899 -1.61289 -2.09003 0 0.688014 -2.09357 3.67252 -10.9454 0 0 0 0.0916471 0.0204205 0 0 0 -0.03462 0 0 -0.00474054 0 0 0.0106805 0 0 0 0 0.0328115 0 0.00705146 0 0.0496738 0 -0.255803 -0.271238 0 0.000244866 0 0 -0.0296814 0 -0.026858 0 0 0 0 -0.0505706 -0.0015814 0 -0.00403086 0 0 0 0 0 0 0 0 0 0 -0.0185065 0 0 0 0 0 0 0 0 0 0 -0.047567 0 0 0 -0.0228429 -0.00499539 0 -0.00322454 0.108675 0 -0.0241134 0 -0.0970946 0 0 0 -0.0568784 0 0 0.0339863 0 0 0 -0.00195787 0 0 0 0 0.0025583 0 0.138221 0.0916471 -0.214971 0.0204205 -0.345432 -0.0217537 0.14582 0.00851306 -1.22387 -0.0187027 -0.0235824 -0.352847 -0.0027268 -0.058385 0.0241451 -0.0822215 -0.0462559 -0.112952 0.826716 0.599387 -1.27741 0.178912 -0.177926 0.0660313 -0.236465 0.0970381 -0.727817 0.0198037 -8.36202 -0.23239 -3.0433 -1.62933 0.00352028 -0.0953443 -1.95864 -0.0250731 -0.00165073 0.0892545 -0.0170933 0.639267 -0.136785 0.0118709 -3.69099 1.22747 -0.00511835 -0.0219456 0.131621 0.10124 -0.0971339 0.469375 -0.723205 0.0828089 0.101119 -1.56326 -0.0415967 0.599324 -0.283615 0.323708 0.131217 -0.0688787 -0.322644 -0.460152 0.0665066 0.151542 -8.53979 -0.35467 0.278369 -0.106933 0.112708 -0.271325 0.119016 0.0560927 0.038124 -0.0315627 -0.0168894 0.239699 17.5798 3.09933 -0.276257 0.993463 0.518976 -2.28461 0.154567 0.277748 -0.592839 -0.00099641 0.0495281 0.179207 -0.279717 0.393912 -1.26206 0 +110 0 1.07195 0.00864504 0.0643405 0.244612 -0.0157802 -0.219406 1.75967 3.27397 0.439353 -1.41093 0.372868 -0.919563 -0.0110692 -1.05371 -0.000363494 0.678608 5.16697 -0.124019 -0.0214165 -5.80583 -0.0173059 0.506791 0.0142903 -0.293272 0.839967 -0.210899 -0.0327662 0.150234 -0.906501 -0.523445 0.0849465 0.191867 0.730585 0.220716 0.563139 0.0565723 0.0740775 -1.1341 0.788081 -2.35163 -0.0657993 1.50121 0.132134 -3.09222 -0.340322 -0.984407 -0.189226 0.348885 -0.340033 1.05295 -0.807053 1.59263 0.0245429 -0.022494 0.084911 1.40999 1.09145 0.668445 0.478232 0.129668 -1.68433 3.53209 0.359451 -1.51079 -0.620149 0.208451 0.619891 0.224243 -0.141479 1.01346 -0.426094 0.700197 -0.239041 0.329916 -0.393167 0.30232 4.58377 2.83867 -3.69909 1.15512 -1.57532 3.3291 0.834785 -1.09937 2.039 -3.55732 0.190162 -0.359222 0.614332 -1.20649 1.92353 0 0 0 0 0 0.0643405 0.244612 0 0 0 0 0 0 0 0.00365864 0 0 0 0 0.00836177 0 0.000960463 0.0398378 0.0375799 0 0 -0.0945266 0 0 0.000995329 0.285278 0 0 -0.0140861 0.115989 0 -0.0200002 0 -0.02759 0 0 -0.00413664 0 0 -0.0634844 0 0 0 0 0 0 0 -0.0425749 0 0 -0.166681 0 0 0 0 0 0 0 -0.0180662 0 -0.45242 0 -0.00788781 0 0 -0.000566379 -0.103218 0 -0.0474324 0 0 0 0.145384 0 -0.0426392 0 0 0.00273593 0 0 0 -0.00161955 0 0 0 0 0 0 -0.0157802 0 -0.219406 0 0 0 0 0.0635911 0.963632 0 0 -0.73449 0 -0.0763657 0 0.0495962 0 0 -0.966744 0 -0.625367 0.0710143 -0.246609 -0.0787205 0 0 0.474425 0 -1.97991 0 -4.65733 -1.42376 0 0.404781 -1.62779 -0.0263717 0 0.0199758 0 0 0.0937949 0 -1.94435 -1.68797 0 0 -0.150285 0 0 -0.0810678 -1.11572 -0.0586159 0 2.27894 0 -0.792254 0.0988673 -0.0776611 0.820113 0.101019 -2.06008 0.296742 -0.169993 0.185416 5.98166 -0.247665 0 0 0 0.364657 0.140241 0 0 0 0 -0.163318 29.1572 6.37103 -3.59303 1.36996 -0.977621 1.45033 0.266403 -0.216905 0.30798 -0.214306 0 0 0 0 0 0 +111 0 -0.478703 0.684775 0.0263918 0.100337 -0.0400696 0.196312 -0.658728 0.268859 0.180219 -1.01014 0.316316 0.820241 -0.0045405 0.784569 -0.0109004 1.86655 4.7475 -0.0604862 -0.0495751 -0.362711 -0.0164985 -1.16244 0.00586176 -0.279525 -0.766115 0.916419 -0.0242334 -0.801144 -1.25603 0.686849 0.0348442 -0.00824141 -1.76117 0.0210009 -0.776842 0.0434074 -0.020167 -2.78905 0.337818 0.37389 -0.0269902 0.462594 0.0559999 -0.268528 -0.139597 0.622009 -1.15989 -0.186754 -0.144251 0.241846 -0.732229 -1.89392 0.0808817 -0.0741293 0.0507374 -0.02019 0.380958 0.567341 0.418135 0.0531885 0.892169 -0.813522 1.43758 0.202093 0.0492526 1.6136 0.268078 -0.0631254 -0.0580334 0.675544 -0.327322 0.163178 -0.0313269 -0.173491 0.699057 -0.0479694 9.77067 3.29996 -0.807838 1.12314 -1.12067 3.02293 0.789042 -0.706813 1.39855 -0.521946 0.0780025 -0.151416 0.499024 -0.871587 2.66521 0 0 0 0 0 0.0263918 0.100337 0 0 0 0 0 0 0 0.00546234 0 0 0 0 0.00305617 0 0.000883857 0.00947099 0.0123924 0 0 0.0507429 0 0 0.0323003 0.216292 0 0 0.00699329 0.0259369 0 0.144981 0 -0.000247709 0 0 -0.00011754 0 0 0.365883 0 0 0 0 0 0 0 -0.0722086 0 0 0.0262036 0 0 0 0 0 0 0 -0.000439114 0 0.267777 0 -0.00340187 0 0 -0.000698068 0.0490752 0 0.00157904 0 0 0 -0.837899 0 -0.0164441 0 0 -0.0157681 0 0 0 -0.000534065 0 0 0 0 0 0 -0.0400696 0 0.196312 0 0 0 0 0.278255 0.74634 0 0 -0.402383 0 -0.0399399 0 0.0245683 0 0 -0.438815 0 -0.481579 0.103559 -0.282134 -0.0387686 0 0 0.220292 0 0.00965071 0 1.05621 -0.198056 0 0.679641 -0.369149 -0.0299663 0 0.0336422 0 0 0.0788503 0 -0.333535 -1.17114 0 0 -0.101053 0 0 -0.0483965 1.93152 -0.0912808 0 2.01158 0 0.0857312 0.0735212 -0.000400961 0.515816 0.102196 -1.18895 0.566004 -0.0972702 -0.220896 5.99219 -0.164181 0 0 0 0.216665 0.105015 0 0 0 0 -0.161461 -7.69041 2.28109 -4.85952 0.285353 -0.0918154 -0.939478 0.130714 -0.0868928 0.0790131 -0.286011 0 0 0 0 0 0 +112 0 0.188827 -0.487886 0.0242602 0.0922333 -0.275055 -0.146701 0.20312 1.11551 0.165663 -0.90274 0.0902781 -0.330226 -0.00417377 -0.699765 -0.00693399 -1.68951 -6.42167 -0.160991 -0.0585576 -3.26939 -0.0189275 0.633035 0.00538831 -0.149879 0.254318 -0.658306 -0.025477 -0.113311 -0.986457 0.00513448 0.0320299 0.01738 0.848018 -0.111873 0.204042 0.0151093 -0.0035189 1.44739 0.0937806 -1.45135 -0.0248103 -0.244086 0.0246737 -3.25054 -0.128322 -0.466467 -0.51948 -0.276691 -0.0615215 0.124919 -0.636296 -6.33948 0.0968946 -0.0888054 -0.142819 0.299772 -0.989488 -0.777706 0.254401 0.0488925 0.916525 6.80283 0.765778 0.0375876 0.19411 1.08998 0.438448 -0.086094 -0.0533461 0.0929098 -0.502954 -0.134267 0.00539734 3.34169 0.693432 -1.82162 -11.9192 -0.800191 -4.23525 -0.261232 -0.0941306 -2.04837 0.478259 -0.663328 1.35982 -1.87461 0.0717024 -0.0786289 0.411746 -0.502532 2.09319 0 0 0 0 0 0.0242602 0.0922333 0 0 0 0 0 0 0 -0.00297685 0 0 0 0 -0.00113643 0 -0.000176547 -0.0084966 -0.0205171 0 0 -0.201015 0 0 0.00226891 -0.816506 0 0 -0.0299659 -0.108492 0 0.00154429 0 -0.0308527 0 0 -0.0046085 0 0 -0.000827154 0 0 0 0 0 0 0 -0.025488 0 0 -0.0974638 0 0 0 0 0 0 0 -0.0490889 0 0.225474 0 -0.000224176 0 0 -0.00555861 -0.111814 0 -0.00372133 0 0 0 0.00189424 0 0.023498 0 0 3.56471e-05 0 0 0 0.000884208 0 0 0 0 0 0 -0.275055 0 -0.146701 0 0 0 0 0.204229 0.298032 0 0 -0.461373 0 -0.0507006 0 0.0181012 0 0 -1.49171 0 0.745333 0.101577 -0.110007 -0.200582 0 0 0.168908 0 -4.52336 0 1.21816 0.0875626 0 0.887663 0.892409 -0.0116213 0 0.014262 0 0 0.0271516 0 -1.03348 -2.79537 0 0 -0.364765 0 0 1.57635 2.38295 0.206098 0 3.98011 0 0.843511 -0.0147763 0.00350299 0.700798 0.0286741 -1.1534 0.146545 -0.00372828 -1.07869 9.19888 -0.0717213 0 0 0 -0.333569 0.0939042 0 0 0 0 -0.0230148 -7.59135 1.65432 -4.3935 0.483489 -0.375839 -0.728938 0.246448 -0.190457 0.182927 -0.568655 0 0 0 0 0 0 +113 0 0.00411173 0.869319 -0.050394 -0.226705 0.230464 0.0457535 -0.00543854 -1.20166 0.0269255 0.847227 -0.0177621 1.67887 0.0127497 0.87884 -0.00182179 4.85972 9.11015 0.0457021 -0.00702844 0.768276 -0.0649012 -1.9679 -0.00224434 -0.0198136 -0.0545178 2.54514 -0.0806364 0.00814997 0.0546973 0.283251 -0.0078493 -0.0167792 -2.44991 -0.185898 0.091077 -0.00696089 0.0604958 -4.55901 -0.112406 0.142072 0.081328 -0.904914 -0.0533097 4.54295 0.429002 0.0246969 0.0329595 -0.00688342 0.140064 -1.19133 0.695185 -1.86377 0.172195 0.249674 -0.136604 -3.91578 0.291061 0.0277188 0.00897543 -0.194148 -1.42432 -0.439378 1.78117 -1.46955 0.289758 -1.27481 -0.823891 -0.346901 -0.128688 1.28477 0.161147 0.11532 0.227893 -1.37625 -0.135554 3.15979 20.794 0.701343 3.82231 0.732747 -0.165358 4.2152 -1.72173 1.06623 -1.26658 1.22929 -0.404172 0.0649453 -0.152356 0.0346982 -0.0322802 0 0 0 0 0 -0.050394 -0.226705 0.00143117 0 0 0 0 0.000545493 0 -0.0693268 0 0 0.00677729 0.0238806 -0.106414 0 -0.0159298 0.0569404 -0.471942 0 0 -0.102218 0.00141916 0 0.0390953 0.189996 0 0 -0.0288288 0.161867 0 0.132987 0 -0.0305657 0 0 -0.00684635 0 0 0.386792 0.00836179 0.1149 0 0.0107242 -0.0930204 0 0 0.109364 0 0.00353637 -0.0451294 0.0234307 0 0 -0.0115864 -0.00229828 0 0.0405964 -0.108227 0.0205006 1.21474 -0.118147 -0.103059 0 0.0119447 -0.182189 0.281718 -0.01649 0.283735 0 0 0 -2.75332 -0.377047 1.43536 0.0332777 -0.043662 -0.220465 -0.00748025 0.00996243 -0.0522745 0.333062 0 0 0 0 0 0 0.230464 0 0.0457535 0 0 0 0 0.0445732 -0.390707 0 0 -0.0313015 0 -0.0141357 0 -0.000958065 0 0 -0.000527866 0 -0.017409 0.0341124 -0.00892877 -0.000408389 0 0 -0.038428 0 1.25401 0 -0.343138 0.114948 0 0.188141 0.0220071 -0.00181368 0 0.0063466 0 0 -0.0192353 0 0.536796 0.0744718 0 0 0.00440672 0 0 -0.146605 -0.0927234 -0.0598297 0 -0.63513 0 -0.427841 -0.092367 0.0633928 -0.275701 0.0519632 0.417273 0.0161237 -0.000980966 0.57211 0.885484 0.00698762 0 0 0 -0.0487086 -0.028631 0 0 0 0 0.0983654 0.972798 -0.411973 0.148335 0.0344715 0.0521086 0.25728 -0.038295 0.0501437 -0.051477 -0.0982952 0 0 0 0 0 0 +114 0 1.41429 0.160819 0.0349255 0.168758 0.0478386 0.073613 -0.676353 -1.32284 0.191623 -1.4372 -0.0984496 2.34262 -0.000934046 0.282258 -0.0113617 2.42366 10.1279 -0.447134 -0.0419627 0.0337414 -0.036082 0.537004 0.00482111 -0.178277 0.0774431 0.204028 -0.12242 -0.0355991 -0.216097 0.171263 0.0310752 -0.0843503 -0.65925 -1.72221 -0.058035 -0.0149642 0.06934 -8.18411 -0.382602 0.0430747 -0.00287301 -2.50802 -0.0639742 3.92626 0.00875406 0.0195678 -0.107315 -0.334486 0.0567464 -2.04259 0.191729 -17.2025 0.0138853 -0.058444 0.0733376 -10.1871 -0.864647 -0.0409449 0.130489 -0.0674916 0.736979 0.162193 3.80536 -2.77821 0.78495 -0.220182 2.98872 0.0254725 -0.0977628 0.0164686 0.446406 -0.0868363 0.922347 -0.898323 0.151541 4.56132 34.1565 8.19845 2.97994 6.11285 -3.89711 11.1683 0.872903 -0.303188 0.53029 3.25769 -0.00824739 0.180473 0.0992119 0.106856 0.127532 0 0 0 0 0 0.0349255 0.168758 -0.00747045 0 0 0 0 -0.00102396 0 -0.0444872 0 0 -0.001324 0.00518695 -0.0465412 0 -0.00958888 0.0654261 -0.203791 0 0 0.176699 0.000353103 0 -0.0537305 1.87329 0 0 0.0246902 0.433419 0 -0.229527 0 -0.0130663 0 0 -0.00177446 0 0 -1.32411 -0.0172005 -0.0236974 0 -0.118467 -0.0695843 0 0 -0.180318 0 -0.00534083 -0.423427 0.00782818 0 0 0.000790147 0.0201426 0 0.012476 0.10085 -0.00117115 0.349418 0.0192908 -0.0428361 0 -0.0580267 -0.186653 0.26845 -0.0205023 -0.345125 0 0 0 7.10316 0.269952 1.11908 0.0564997 -0.0660079 0.684106 0.000656251 0.000301907 0.00180957 0.241095 0 0 0 0 0 0 0.0478386 0 0.073613 0 0 0 0 0.00126145 0.0289314 0 0 -0.208888 0 -0.0391861 0 -0.00770982 0 0 0.00264986 0 -0.070181 -0.0255262 -0.042515 0.00051654 0 0 -0.062216 0 1.78672 0 -1.73532 -0.105538 0 -0.0633912 -0.379699 -0.00878254 0 -0.00490752 0 0 0.0039534 0 0.0606237 0.201765 0 0 0.0261036 0 0 0.11147 1.04506 -0.0718336 0 -0.0878319 0 -0.904331 0.0504172 -0.0998125 -0.104613 -0.0526876 0.0820469 0.752184 -0.00241059 0.111339 0.183991 0.0623139 0 0 0 -0.0647355 0.0181028 0 0 0 0 0.0348475 21.2689 3.52311 -0.823752 1.70757 -0.933822 1.15896 0.219064 -0.151774 0.135262 0.257531 0 0 0 0 0 0 +115 0 1.25129 0.0887716 0.068673 0.302033 -0.0277818 0.0071051 -0.131653 -0.0632303 0.979406 -1.48273 -0.0513274 -0.192932 -0.00156606 -0.415438 -0.0072899 -0.647091 0.635614 -0.167427 -0.073742 -0.222753 -0.031358 0.280337 0.0191986 -0.404985 0.00426043 -0.500534 -0.0505133 -0.00430924 -0.095076 -0.122864 0.139524 -0.0398711 -0.619317 0.0817152 -0.0269895 -0.00638808 -0.238654 -5.82102 -0.230828 -0.0558889 0.000484727 0.658416 -0.0265089 -0.989399 0.125958 -0.0130589 -0.0182704 -0.463017 -0.113404 -0.612056 0.214133 -5.23385 0.351391 0.0945202 0.00712317 -4.22567 -0.36022 -0.370501 0.0625742 0.00137372 -0.654681 0.481722 1.01938 -1.9479 -0.750223 -0.411657 1.39243 0.704722 -0.253592 0.53356 0.445645 0.0670187 1.09933 -0.101628 -0.00940965 3.31566 19.8351 6.39818 -0.364945 3.75517 -2.04905 7.14715 1.46982 -1.0647 2.18623 -0.728204 -0.118668 0.112256 0.00761887 0.0654543 0.0561101 0 0 0 0 0 0.068673 0.302033 0.00372252 0 0 0 0 0.000302298 0 -0.00434551 0 0 0.00161575 0.00304852 0.0232376 0 0.000420489 0.0216353 0.074483 0 0 -0.0431089 0.000339035 0 -0.00379369 1.07964 0 0 0.00179634 0.181339 0 -0.00587801 0 -0.0307173 0 0 -0.00296989 0 0 -0.3279 0.00371557 0.0126586 0 0.0550829 0.0577054 0 0 -0.256228 0 0.00900749 0.251531 -0.0206532 0 0 -0.00555646 -0.00441523 0 0.0176176 -0.120213 0.00615412 -0.741397 -0.000121279 -0.0184404 0 0.0266606 0.0280085 -0.0195739 7.01975e-05 -0.00752853 0 0 0 0.359967 0.0498931 -0.436417 0.00936179 0.00455084 -0.115965 -0.00302952 0.00332741 0.0142443 -0.092114 0 0 0 0 0 0 -0.0277818 0 0.0071051 0 0 0 0 0.0473918 -0.252171 0 0 -0.69178 0 -0.0948462 0 -0.00825731 0 0 0.100181 0 -0.104866 0.0289399 -0.122751 0.00919112 0 0 -0.0621815 0 0.436747 0 -2.43468 -0.0439197 0 0.307665 -0.491875 -0.0172686 0 0.00410344 0 0 -0.0426207 0 -0.14431 0.695868 0 0 0.0603299 0 0 0.245773 0.811718 0.177673 0 -0.406639 0 -0.595199 -0.0193559 -0.162494 -0.0261453 -0.0566209 -0.340935 0.455293 -0.0225299 0.436165 0.151696 -0.041527 0 0 0 -0.0739178 0.00989828 0 0 0 0 0.0111487 22.2922 6.25883 -2.68309 1.77535 -1.05806 1.3321 0.455441 -0.328147 0.490597 -0.369178 0 0 0 0 0 0 +116 0 1.17903 -0.0496002 0.0769302 0.258664 -0.176144 -0.262419 1.47415 2.63839 0.504937 -1.60317 0.36619 -2.27121 -0.0158369 -2.14154 0.0273751 -0.833924 -0.9771 -0.144463 -0.0422307 -4.90142 -0.0386739 0.302381 0.0204453 -0.448583 0.394983 -0.375858 0.00980658 0.132554 -1.51308 -0.78239 0.109459 0.374395 -0.0592199 0.378145 0.463945 0.0673858 0.240905 -2.94338 0.810988 -2.07822 -0.0847869 2.0477 0.158551 -6.93643 -0.391122 -0.808687 -0.485832 0.324882 -0.395427 0.983287 -1.01464 4.45067 0.0492875 -0.0451728 0.0721747 4.02893 0.392181 -0.124126 0.648736 0.161965 -3.05197 4.13601 0.0511149 -0.582459 -0.603506 0.0358615 0.329316 0.379786 -0.176718 1.16609 -0.627219 0.716044 -0.466112 4.18702 -0.155828 0.0774543 14.0018 3.88482 -1.16078 1.12656 -1.16304 4.13394 1.19776 -1.1488 2.12258 -3.66561 0.258152 -0.464661 0.84865 -1.48649 2.70267 0 0 0 0 0 0.0769302 0.258664 0 0 0 0 0 0 0 0.00995951 0 0 0 0 0.0101026 0 0.00261521 -0.000557476 0.0409803 0 0 0.108434 0 0 0.0852225 0.430441 0 0 0.012906 0.0510036 0 0.214329 0 0.0202886 0 0 0.0022193 0 0 0.454334 0 0 0 0 0 0 0 -0.10593 0 0 0.0529454 0 0 0 0 0 0 0 0.0074399 0 0.152979 0 -0.0080479 0 0 -0.000417162 0.0861391 0 -0.0129463 0 0 0 -1.04046 0 -0.0497232 0 0 -0.01958 0 0 0 -0.00176609 0 0 0 0 0 0 -0.176144 0 -0.262419 0 0 0 0 0.156513 1.3911 0 0 -0.585907 0 -0.0550716 0 0.0648131 0 0 -1.71651 0 -0.844451 0.0613882 -0.187751 -0.186183 0 0 0.590511 0 -5.49696 0 -5.24801 -1.70967 0 0.536952 -2.00617 -0.0190637 0 0.0142029 0 0 0.153356 0 -3.16723 -3.22527 0 0 -0.364256 0 0 0.703201 -0.0559583 0.0751971 0 3.14632 0 -0.518338 0.175306 -0.0741177 0.405854 0.110318 -0.980214 0.44692 -0.170439 -0.806284 0.318589 -0.236708 0 0 0 0.244932 0.108452 0 0 0 0 -0.304379 33.8613 5.00337 -1.91908 1.1924 -0.912435 2.05421 0.193682 -0.161217 0.224537 -0.159573 0 0 0 0 0 0 +117 0 0.957836 -0.684777 -0.0128582 -0.0432335 0.297123 -0.204379 0.796119 0.387785 -0.084396 0.196492 -0.384296 -0.832025 0.002647 0.183389 -0.0327753 -1.6175 -2.09599 -0.0442865 -0.0347422 0.0256468 -0.013581 1.36714 -0.00341727 -0.0017305 0.92409 -0.871351 0.0121511 0.864076 1.11374 -0.59566 -0.0182952 -0.26971 2.30671 -0.116167 0.877043 -0.0552496 0.0446952 4.88459 -0.344649 -0.493479 0.0141714 -0.509341 -0.0549679 2.07031 0.0653728 -0.695104 1.12522 -0.361336 0.140616 -0.78039 0.0902719 -1.51374 0.0633993 -0.0581064 0.105115 -0.212552 -0.204729 -0.182714 0.0126333 -0.027071 -1.1089 0.787921 -2.5843 -1.79717 0.016419 -0.843373 -0.153805 -0.00553366 0.0295369 0.105551 0.18262 -0.307538 0.0316897 0.647028 -0.43426 0.237197 -11.024 -1.30914 -1.25551 -0.893074 1.47742 -4.23833 0.0433785 0.0928559 -0.425279 0.259594 -0.0431479 0.14667 -0.425936 0.868843 -1.98937 0 0 0 0 0 -0.0128582 -0.0432335 0 0 0 0 0 0 0 0.00172553 0 0 0 0 -0.00228057 0 2.44406e-05 -0.0358557 -0.011198 0 0 0.162195 0 0 0.0161246 -0.13857 0 0 0.0212035 -0.145086 0 0.0988014 0 0.0211581 0 0 0.00280945 0 0 0.263292 0 0 0 0 0 0 0 -0.0123987 0 0 0.227612 0 0 0 0 0 0 0 0.0279397 0 0.539545 0 0.00283769 0 0 -0.000597113 0.183167 0 0.0270521 0 0 0 -0.602959 0 0.0111999 0 0 -0.0113469 0 0 0 0.000482588 0 0 0 0 0 0 0.297123 0 -0.204379 0 0 0 0 -0.0900201 -0.424806 0 0 0.334261 0 0.0377185 0 -0.0297841 0 0 0.795383 0 0.91402 -0.0162798 0.279762 0.10411 0 0 -0.273467 0 5.11066 0 2.98389 0.619756 0 -0.253462 1.87776 0.0313863 0 -0.010375 0 0 -0.0458241 0 1.70594 2.11139 0 0 0.243949 0 0 -0.243238 -0.134082 0.0349892 0 -1.0492 0 0.371909 -0.137401 0.0447177 -0.426184 -0.0324803 0.252267 -0.350984 0.012783 0.209971 0.279733 0.0686611 0 0 0 -0.124442 -0.043706 0 0 0 0 0.0806475 -10.4316 -1.75725 1.84778 -0.139768 0.00980356 0.336802 0.0113763 -0.0173589 -0.00784397 0.166694 0 0 0 0 0 0 +118 0 0.626828 -0.143344 0.0318597 0.107123 -0.0920623 -0.00833135 0.81005 1.51196 0.209114 -0.640691 0.257428 0.611157 -0.00655866 1.41749 0.0208808 -0.363415 3.18585 -0.0980823 0.0267172 -1.39327 -0.0275453 0.525753 0.00846719 -0.211526 0.364748 -0.429517 -0.0196335 0.0471019 -0.642635 0.274459 0.0453313 0.225152 0.843818 -0.0621373 0.211946 0.0423076 0.0602151 1.27438 0.53042 -0.506247 -0.0351135 0.450884 0.0921499 3.32819 -0.161979 -0.210803 -0.090656 0.459253 -0.233103 0.0197869 -0.336148 -1.52092 -0.0553486 0.0507279 0.188397 2.05448 0.666163 0.971896 0.282169 0.0670757 0.0715563 -2.50741 -0.719059 -0.754403 0.0723419 -0.00642643 0.299798 0.0516622 -0.0731856 0.432526 0.0634786 0.611218 -0.139154 -1.08765 -0.697584 -0.683097 -5.86381 -0.367554 -1.98858 -0.299864 0.404994 -2.85368 0.567245 -0.567595 0.586732 -1.68942 0.106911 -0.256641 0.356742 -0.79744 1.14788 0 0 0 0 0 0.0318597 0.107123 0 0 0 0 0 0 0 -0.000736874 0 0 0 0 -0.00115422 0 0.000421198 -0.0277138 -0.0222377 0 0 -0.0971275 0 0 0.0382566 -0.602534 0 0 -0.0143047 -0.132962 0 0.10188 0 -0.0109347 0 0 -0.00175605 0 0 0.221029 0 0 0 0 0 0 0 -0.0565973 0 0 -0.00538685 0 0 0 0 0 0 0 -0.026832 0 0.641919 0 -0.000327654 0 0 -0.00618552 0.02174 0 -0.00823188 0 0 0 -0.506172 0 0.0241012 0 0 -0.00952546 0 0 0 0.000958357 0 0 0 0 0 0 -0.0920623 0 -0.00833135 0 0 0 0 0.158923 0.454071 0 0 -0.502381 0 -0.0562303 0 0.0264056 0 0 0.865593 0 0.728929 0.0150383 -0.139897 0.117476 0 0 0.258403 0 11.15 0 -0.584473 1.14876 0 0.338829 0.58395 -0.0153312 0 0.00157191 0 0 0.0408896 0 4.0469 1.77179 0 0 0.244694 0 0 -1.51984 -0.463933 0.0328818 0 -1.81883 0 0.151731 0.0480637 -0.0597633 0.56768 0.0943676 -1.28512 -0.155286 -0.0428754 0.71129 -1.75539 -0.133632 0 0 0 0.50617 0.0951048 0 0 0 0 -0.0770658 6.29172 1.81584 -0.504093 0.539505 -0.422154 0.00501854 0.189106 -0.140874 0.128893 -0.142001 0 0 0 0 0 0 +119 0 0.467132 0.585521 0.0188532 0.15931 -0.120753 0.0776699 0.200718 1.16864 0.151362 -1.18621 -0.0310046 0.419971 -0.000691632 -0.960354 -0.0142587 0.95153 1.11845 -0.280512 -0.0413223 0.0779769 -0.0292451 -0.762484 0.000897205 -0.139014 0.0379838 0.615045 -0.0680806 -0.109863 -0.0366236 -0.0591291 0.0122939 -0.300179 -1.42084 -0.479003 -0.19585 -0.00589308 -0.319987 -4.22916 0.0466162 0.211321 -0.00913021 -1.49289 -0.000961281 -0.764455 -0.113682 0.192659 -0.0659545 -0.697635 0.00790632 -1.89515 -0.503701 -3.23844 0.0791402 -0.0516262 0.0666114 -4.23681 -0.858173 -0.253044 0.303465 0.019103 -2.2534 -0.116513 0.799951 0.892912 1.04444 0.571249 -0.242599 -0.567158 -0.0228547 0.71398 -0.593533 -0.138063 0.401139 -0.232423 0.017191 0.569679 17.1828 3.83422 1.14452 1.2162 -1.16023 5.10139 0.537688 -0.603116 1.38563 -1.49765 0.0106636 0.00675094 0.0503547 -0.0170648 0.0313375 0 0 0 0 0 0.0188532 0.15931 0.000497806 0 0 0 0 1.02705e-05 0 0.00541861 0 0 -2.15101e-05 -3.88627e-06 0.00323953 0 0.000571382 0.0134058 0.0311901 0 0 0.00193992 -2.82188e-07 0 0.0104093 0.423156 0 0 0.000322671 0.0919575 0 0.0406346 0 0.000856422 0 0 8.14448e-05 0 0 0.0619259 0.000141445 -0.000296235 0 0.00685575 -0.00694187 0 0 -0.0327281 0 0.00101917 -0.0712756 -0.00196204 0 0 4.40379e-05 -0.000861354 0 -0.00115572 0.00448204 -0.000422222 -0.225364 -0.00357955 -0.00351246 0 -0.000649543 0.00500508 -0.011744 -0.00300658 -0.0182734 0 0 0 0.0194746 -0.0146616 0.00493624 0.00863648 -0.0164681 0.0289432 2.83477e-05 -5.40535e-05 0.000116527 -0.000396547 0 0 0 0 0 0 -0.120753 0 0.0776699 0 0 0 0 0.172532 -1.18829 0 0 -0.746135 0 -0.0765598 0 -0.0704058 0 0 1.00372 0 -1.1272 0.0709457 -0.319996 0.145956 0 0 -0.652812 0 -2.15196 0 -5.61895 -0.75272 0 0.424823 -2.34733 -0.0347116 0 0.0300634 0 0 -0.128505 0 -1.5006 1.96309 0 0 0.282755 0 0 0.461774 -4.29125 -0.199767 0 -0.810909 0 0.573222 -0.38351 0.260356 0.690877 0.157315 -1.98608 -1.34176 -0.212851 -0.685429 -8.86914 -0.350768 0 0 0 -0.454958 0.175883 0 0 0 0 0.188655 31.1761 7.65035 -5.13751 2.12093 -1.51941 1.52041 0.341627 -0.262372 0.284714 -0.169584 0 0 0 0 0 0 +120 0 -0.18551 -0.145021 0.00245855 0.0257744 0.0909889 -0.0442523 -0.68838 -0.164255 0.0222456 -0.523469 -0.0272411 -0.602392 -8.20104e-05 -1.85196 -0.00101649 -1.16066 -7.39711 -0.0725635 -0.0105843 -4.67548 -0.00503236 -0.153803 0.000114257 -0.0861813 -0.131439 -0.102103 0.00604281 -0.329009 -0.638955 -0.143928 0.0016431 -0.0081985 -0.254588 0.0350231 -0.172198 -0.00252797 -0.0215231 0.328356 -0.0749648 -1.83552 -0.00101092 -0.108913 -0.00547258 -4.89863 -0.011218 -0.448476 -0.53082 -0.156172 0.0156243 -0.555867 -0.0859014 8.07776 0.0203881 -0.0160682 0.0356535 5.58636 0.0614369 -0.161857 0.146061 0.00208172 2.85876 7.3207 3.08758 0.484149 0.409538 1.30734 0.590669 -0.0994253 -0.00334093 0.474641 0.0920049 0.0198618 0.033642 4.54479 0.44301 0.140722 1.63221 1.23625 0.596627 -0.161475 0.602454 0.253996 0.400965 -0.393008 1.00557 -0.653404 0.00105226 0.00439781 0.0347668 0.0823047 0.546732 0 0 0 0 0 0.00245855 0.0257744 -5.38162e-05 0 0 0 0 -1.1111e-06 0 0.00163045 0 0 0.000111621 2.00663e-05 0.000303024 0 0.000137759 -0.00160854 0.000108012 0 0 0.0460019 1.45705e-06 0 0.00595628 0.0358835 0 0 0.0056777 -0.0149159 0 0.050093 0 0.00269656 0 0 0.000340884 0 0 0.143235 -1.5302e-05 0.00153723 0 -0.000741152 0.00151633 0 0 -0.0229933 0 -0.000110179 0.0466313 0.00030672 0 0 -0.000228523 9.3118e-05 0 0.000344987 0.0048465 0.000565929 0.156835 0.00199442 -0.00124198 0 0.000196256 -0.000967112 0.0460455 0.000256384 0.00267677 0 0 0 -0.335341 -0.00244076 -0.000171476 -0.00039208 0.000747621 -0.00760799 -0.000147103 0.000280496 -0.000604687 0.0010097 0 0 0 0 0 0 0.0909889 0 -0.0442523 0 0 0 0 0.0166755 0.0426871 0 0 -0.151255 0 -0.0187806 0 -0.00455162 0 0 -1.29308 0 0.0688861 0.103994 -0.0483508 -0.164215 0 0 -0.0270752 0 -7.27577 0 2.82872 -0.477578 0 0.464873 0.683196 -0.00573091 0 0.018349 0 0 -0.00477719 0 -2.31578 -2.54592 0 0 -0.323109 0 0 1.52766 2.3589 -0.0155634 0 3.69999 0 0.640064 -0.115246 0.104535 0.263519 0.00526898 -0.798946 0.319545 -0.0698087 -0.854086 9.8924 -0.0120237 0 0 0 -0.418893 0.0701828 0 0 0 0 0.0472358 -15.9726 1.30658 -4.34599 0.225581 -0.105121 -0.886857 0.18275 -0.14574 0.147309 -0.360596 0 0 0 0 0 0 +121 0 0.0812557 0.710795 0.0104139 0.0399973 -0.139997 0.294123 -1.47436 -0.719051 0.0595366 -0.691984 -0.214374 1.02094 -0.000460595 1.28673 0.00213618 1.4905 2.71951 -0.112426 -0.0140764 2.58893 0.00033416 -1.17921 0.000521928 -0.103778 -0.816092 0.944422 -0.00344957 -0.68861 -0.271853 0.754085 0.00640771 -0.0173548 -1.89251 0.0049849 -0.916816 -0.0138815 -0.0722893 -3.18283 -0.187402 1.41521 -0.00676861 0.101956 -0.0117859 1.6645 -0.0974242 1.05748 -0.523155 -0.258306 0.0260836 0.503642 0.0890284 2.25832 0.0333352 -0.0133455 0.0791986 -1.68254 0.614166 -0.0639879 0.124798 0.0144827 1.26766 -2.00941 1.32276 1.13645 0.0122007 0.903246 0.0936609 0.0467999 -0.00916249 0.197195 -0.0110862 0.0251005 0.0151346 -2.85975 0.37624 1.25335 12.1071 2.3701 2.71381 1.16316 -0.210838 1.89353 0.472489 -0.215809 0.453435 0.385958 0.00913852 0.0164484 0.0544314 0.101549 0.232616 0 0 0 0 0 0.0104139 0.0399973 0.00141601 0 0 0 0 2.92139e-05 0 0.00113304 0 0 1.12069e-05 1.95825e-06 0.00120516 0 0.000255929 0.00360609 0.00237565 0 0 -0.0982112 1.42191e-07 0 0.00555122 -0.06658 0 0 -0.0145901 0.00832189 0 -0.0102258 0 -0.00361572 0 0 -0.000575732 0 0 -0.141824 0.000402331 0.000154341 0 0.0195011 -0.0189711 0 0 0.0226739 0 0.00289901 -0.0929535 -0.00551812 0 0 -2.29441e-05 -0.00245011 0 -0.00286409 -0.00533672 -0.000545354 0.00857314 -0.0073294 0.00429033 0 -0.00143095 0.00953107 -0.0186006 -0.00569763 0.00124064 0 0 0 0.783835 -0.0437622 0.113921 0.0245804 -0.0468701 0.0960835 -1.47694e-05 2.81623e-05 -6.07116e-05 0.0021975 0 0 0 0 0 0 -0.139997 0 0.294123 0 0 0 0 -0.132573 0.640895 0 0 0.119257 0 0.0125267 0 0.0206333 0 0 -0.161186 0 -0.250658 -0.0204008 0.162539 -0.0193469 0 0 0.187734 0 2.47503 0 0.523578 0.288383 0 -0.114983 0.0603253 0.0172825 0 -0.0124222 0 0 0.0699266 0 0.567174 -0.325892 0 0 -0.0380795 0 0 -0.217041 -0.0997213 0.0415813 0 -0.0372356 0 -0.175277 0.160933 -0.117307 -0.366227 -0.0653885 -0.0146156 0.186347 0.0475218 0.220731 -0.64206 0.0268275 0 0 0 0.164433 -0.0312561 0 0 0 0 -0.108995 -1.7474 -0.178192 0.188516 0.622459 -0.426971 -0.605308 0.0552067 -0.0398078 -0.027151 -0.00305529 0 0 0 0 0 0 +122 0 0 0 0 0 -0.197764 0.296922 -0.828178 -2.2397 0 0 0.096876 1.8143 0 3.2535 0.238228 0 0 0 0.547102 2.68625 0 0 0 0 -0.450691 0 0 -0.758597 -5.15349 1.0085 0 0.64147 0 0 -0.208135 0.040608 0 0 0.734363 0.911173 0 0 0.195805 6.53066 0 0.668398 -1.59506 0.865547 -0.264598 4.31446 -0.522467 0 -0.642363 0.575457 -0.68772 -3.74818 -1.60177 -0.947983 0 0 -0.0207543 -0.531229 0 -1.70262 -1.32736 -0.0225349 0 0 0 0 0.230304 0.861873 0 -1.89413 1.35187 0 0 0 3.23701 0 -0.723607 6.58511 0 -0.276659 1.30195 4.28436 0 -0.493794 2.20879 -4.61595 16.1079 0 0 0 -0.168991 -0.0427173 0 0 0 -0.0141584 0 0 -0.0025635 0 0 0.0140269 0 0 0 0 0.116534 0 0.0249369 0 0.0667901 0 -0.0741729 0.0580458 0 -0.00361011 0 0 -0.204343 0 0.0131938 0 0 0 0 0.0662852 -0.0284956 0 0.0157807 0 0 0 0 0 0 0 0 0 0 -0.0435461 0 0 0 0 0 0 0 0 0 0 -0.338478 0 0 0 -0.0334463 -0.0500217 0 -0.0245521 -0.279108 0 0.109841 0 -0.269732 0 0 0 -0.0878558 0 0 0.192929 0 0 0 0.0471161 0 0 0 0 0.168473 0 -0.197764 -0.168991 0.296922 -0.0427173 0.38202 0.183464 -0.912686 -0.366807 -2.06447 -0.0107679 -0.00405763 0.00383106 -0.00084192 -0.00726135 -0.135699 -0.115286 0.0271391 -0.121402 0.408345 0.568016 0.358557 -0.216457 0.106323 0.00414276 -0.0133563 -0.270651 -0.779431 0.0158199 -3.08731 0.328374 0.761788 0.700331 -0.0194196 -0.847351 0.625622 0.00822388 0.00301557 -0.061107 0.038386 -1.63359 -0.31297 -0.0467538 -0.180007 1.22508 0.00229167 0.0271661 0.0656981 0.0759295 0.155055 0.508836 -2.60644 0.413877 -0.256314 -2.10759 0.51072 -0.840132 0.0480878 -0.107042 -0.1319 0.550136 0.353015 0.19762 -0.120098 2.44021 -0.916864 -0.0188447 0.139721 -0.112569 0.339327 -0.721879 -0.0769705 0.0448602 0.00280655 -0.184076 0.041724 1.23408 -3.16075 0.286333 0.139411 0.150009 -0.854673 2.81659 -0.0474101 0.0561565 -0.185155 1.85591 0.0324615 -0.0766327 0.297114 -0.630164 2.12789 0 +123 0 0 0 0 0 -0.193914 0.315971 -0.516918 -1.94217 0 0 0.298337 0.617233 0 1.74617 -0.0242227 0 0 0 -0.432082 0.837363 0 0 0 0 -0.59954 0 0 -0.859265 -1.88103 0.555846 0 0.273996 0 0 -0.204877 0.0403518 0 0 0.390897 -0.0713643 0 0 0.0651547 2.92765 0 0.445913 -1.35907 -0.625026 -0.0990307 -0.712247 -0.264838 0 0.363766 -0.416331 0.394656 -1.3523 -0.239128 0.130909 0 0 0.478083 0.700062 0 0.426905 0.652799 0.0486411 0 0 0 0 0.132774 0.0871868 0 -0.32577 0.344626 0 0 0 3.60741 0 -0.704894 3.7059 0 0.149773 0.351155 3.37643 0 -0.0616454 1.07573 -1.18151 3.99999 0 0 0 -2.6696e-05 -0.00108479 0 0 0 0.0206668 0 0 0.000182307 0 0 -0.16543 0 0 0 0 -0.254505 0 -0.0634381 0 -0.656058 0 0.175095 -0.192106 0 -0.014127 0 0 -0.220022 0 -0.050497 0 0 0 0 -0.237771 -0.0562995 0 -0.0594329 0 0 0 0 0 0 0 0 0 0 0.063969 0 0 0 0 0 0 0 0 0 0 -0.0778229 0 0 0 -0.00674081 0.0840555 0 0.102556 -0.217975 0 -0.0775898 0 -0.111333 0 0 0 0.689959 0 0 0.208098 0 0 0 0.171892 0 0 0 0 0.180055 0 -0.193914 -2.6696e-05 0.315971 -0.00108479 -0.00958466 0.0488179 -0.00139219 0.0994255 0.897997 0.00209787 -0.0348552 -0.636268 0.000516284 -0.154508 -0.00190023 0.142607 -0.0212064 0.00796107 -0.828032 1.14158 -0.224717 -0.0346264 -0.391602 -0.104098 -0.096612 0.0474198 1.06373 0.02999 4.55541 -0.115804 -0.968703 1.86908 -0.000498233 0.237356 -0.504858 -0.0920381 -0.00667499 0.00132389 -0.0313377 0.565036 0.136264 -0.00190187 3.48472 -0.191137 -0.00679196 -0.0287972 -0.0987038 0.162499 -0.100936 -0.601681 -1.36784 -0.509091 0.0555121 1.57997 0.000862836 -0.855684 0.0566158 0.294054 0.175765 -0.0292554 -0.186616 1.14834 -0.0353048 -2.28289 -13.6668 -0.0553732 0.0373338 0.011819 0.0705052 0.442349 0.282346 0.100867 -0.00418365 -0.169184 -0.00996277 -0.368722 4.01927 0.945765 0.629816 0.112994 -0.300969 0.107886 0.0881408 -0.243972 0.284535 0.0678017 -0.0021287 0.0219431 -0.0993685 0.0945511 -0.218587 0 +124 0 0 0 0 0 0.0497142 0.193706 -1.05325 -2.56048 0 0 0.385666 0.881734 0 1.67879 0.1825 0 0 0 0.411819 2.66981 0 0 0 0 -0.349605 0 0 -0.593152 -6.83725 0.362631 0 0.62572 0 0 -0.149483 0.0739703 0 0 1.0119 0.21725 0 0 0.228845 4.86185 0 0.0804304 -2.14468 1.07515 -0.343379 1.63311 -0.974661 0 -0.65619 0.413164 -0.532676 -5.07295 -1.82412 -0.391775 0 0 0.592952 0.0537463 0 -1.80947 -0.737855 -0.0114346 0 0 0 0 0.446287 -0.0573555 0 -0.852548 1.79477 0 0 0 3.82684 0 -1.82073 9.31369 0 -0.546207 1.05563 4.76061 0 -0.580539 1.98693 -4.21105 17.4749 0 0 0 -0.0893273 -0.0227158 0 0 0 0.0290809 0 0 0.0032211 0 0 -0.0197969 0 0 0 0 -0.0330806 0 -0.00237364 0 -0.100098 0 0.234226 0.0725527 0 -0.00130232 0 0 -0.0170868 0 0.0088393 0 0 0 0 -0.0398058 -0.00511931 0 -0.00454219 0 0 0 0 0 0 0 0 0 0 -0.0930192 0 0 0 0 0 0 0 0 0 0 -0.0673187 0 0 0 0.0038274 0.065745 0 0.176519 -0.0571976 0 -0.0785725 0 -0.124064 0 0 0 0.0895333 0 0 0.0293147 0 0 0 0.0438983 0 0 0 0 -0.0343567 0 0.0497142 -0.0893273 0.193706 -0.0227158 0.268562 0.201215 -0.482596 0.333225 -0.533532 -0.0054274 0.0490842 -0.00944191 -0.00038 -0.0151733 -0.0719661 -0.0404818 0.0881165 -0.0631672 0.317649 0.404693 0.362435 -0.095318 -0.133591 -0.030247 0.598711 -0.35718 -0.258388 0.0153064 0.502188 0.58001 1.92257 0.228141 -0.0103274 -0.266119 0.888138 -0.0240848 0.011631 0.0300182 0.0985748 -2.29593 -0.0950614 -0.0550237 0.421827 1.28248 0.00693998 0.068146 0.0355376 0.0684712 0.0603645 0.0295776 -0.837035 -0.986028 -0.260733 -1.58906 0.270061 -1.88716 -0.06439 0.188871 0.214787 0.172531 -0.105142 0.809066 -0.0270827 -1.7772 -11.7774 0.037458 0.0931255 0.0864309 0.381381 -0.727658 0.00596352 -0.0403018 0.000956624 -0.179629 -0.0848295 0.307809 -7.97696 0.76228 -1.64844 -0.125992 -0.640244 3.11292 -0.0231393 0.113354 -0.369904 1.75689 0.0168902 -0.185474 0.528118 -0.983558 2.79464 0 +125 0 -0.658268 -0.192136 -0.038181 -0.265945 0.269147 -0.185166 0.316809 -0.631129 -0.306874 0.202939 0.241265 0.268979 0.00131378 0.493466 0.0178641 -1.51217 -4.4207 -0.113694 0.0432506 -0.853264 -0.0571541 0.0501212 -0.00296755 0.00160544 0.288493 -0.69066 -0.0598851 0.551443 0.0504556 -0.0777825 -0.0306348 0.203854 -0.203192 -0.570105 0.393169 0.0215889 0.160592 -1.53389 0.101708 -0.799413 0.0106272 -1.19555 0.00256637 1.58568 0.066403 -0.687065 0.226456 0.474306 0.00645881 0.266995 -0.237848 2.05871 -0.181018 -0.0444013 -0.0786567 -1.24067 -0.512566 0.0785394 0.0714475 0.0107982 0.225438 0.423429 -1.50635 0.180914 -0.0306207 0.0183898 -0.0584822 0.371284 0.0469397 -0.24933 -0.0703101 0.0175982 0.0427069 -0.213636 0.0238455 0.264775 2.74013 -0.997259 2.67065 0.106759 -0.985587 3.13011 -0.0570102 -0.0287817 -0.115408 0.595178 -0.0185398 -0.00916381 -0.0474579 -0.0580759 -0.0614167 0 0 0 0 0 -0.038181 -0.265945 0 0 0 0 0 0 0 -0.00979057 0 0 0 0 -0.0100887 0 -0.00131146 0.0162358 -0.0835608 0 0 -0.126685 0 0 0.0260618 0.0714044 0 0 -0.0194671 0.0893175 0 0.120275 0 -0.0134798 0 0 -0.00218416 0 0 0.0431055 0 0 0 0 0 0 0 -0.0405155 0 0 -0.0953378 0 0 0 0 0 0 0 -0.0782441 0 -1.39892 0 0.0146054 0 0 -0.000199973 -0.40348 0 -0.038348 0 0 0 -0.237736 0 0.125454 0 0 0.125866 0 0 0 0.0349856 0 0 0 0 0 0 0.269147 0 -0.185166 0 0 0 0 0.18599 -0.453723 0 0 0.197469 0 0.0201364 0 0.0143772 0 0 -0.0540203 0 0.508583 -0.0161894 -0.151421 0.000782421 0 0 0.107875 0 -0.549508 0 1.52921 -0.407417 0 -0.179278 0.558585 -0.018627 0 0.0292325 0 0 -0.0412065 0 -0.210088 0.388929 0 0 0.0486734 0 0 0.171955 0.959129 0.139186 0 0.62298 0 0.369801 0.0102773 -0.0480824 0.154483 0.0583325 0.202146 0.0660335 0.0614421 0.0254592 0.116793 -0.0414268 0 0 0 -0.0370295 0.000687416 0 0 0 0 0.0663151 -16.5082 -2.63807 0.450281 -1.04376 0.768049 -1.01538 -0.165058 0.102709 -0.127727 0.0635519 0 0 0 0 0 0 +126 0 0.411421 0.26488 -0.011431 -0.0177302 0.0164077 0.0801804 -0.255053 -0.0303819 -0.0927637 -0.252723 -0.13065 -0.219592 0.00186117 -0.829346 0.0157763 0.151179 -0.590944 -0.0656335 0.0288071 0.597934 -0.026665 -0.394669 -0.00234842 -0.0648449 -0.248533 0.307714 -0.0496392 0.026075 0.473517 -0.179657 -0.0164427 0.0715764 -1.21887 -0.0215336 -0.253245 -0.0140311 -0.551762 -4.46018 -0.274419 0.313999 0.013242 -1.24064 -0.037102 -0.483537 0.0789681 0.192496 0.166911 0.0931812 0.0947427 -0.379629 -0.268947 1.61666 -0.0276725 0.117372 -0.175562 -0.807846 0.135793 -0.182227 0.139615 -0.0308584 0.9205 -0.0612106 0.612933 0.860727 0.400861 0.55575 0.193939 -0.441844 0.0313568 -0.119866 -0.0152371 -0.222385 0.628891 -0.523932 0.229646 1.2437 14.6823 3.40541 0.0142845 3.60963 -2.54052 4.12101 0.145794 -0.108032 0.00374775 0.0595356 -0.022048 0.0442962 -0.114165 0.202919 -0.576386 0 0 0 0 0 -0.011431 -0.0177302 0 0 0 0 0 0 0 -0.015665 0 0 0 0 -0.00826736 0 -0.00250059 -0.0481706 -0.0425499 0 0 0.108389 0 0 -0.0540807 -0.189094 0 0 0.00935731 -0.192521 0 -0.283275 0 0.0130268 0 0 0.000898991 0 0 -1.00596 0 0 0 0 0 0 0 0.05201 0 0 -0.0949763 0 0 0 0 0 0 0 0.0215875 0 0.093622 0 0.0439233 0 0 0.0278015 0.125864 0 0.0506435 0 0 0 2.10437 0 0.11433 0 0 0.226505 0 0 0 0.0168226 0 0 0 0 0 0 0.0164077 0 0.0801804 0 0 0 0 -0.141815 -0.510227 0 0 0.0857146 0 0.0107021 0 -0.0418421 0 0 0.364898 0 -0.813315 -0.0555111 0.0399492 0.0692526 0 0 -0.362924 0 -3.43589 0 -2.55885 -1.0436 0 -0.0892354 -1.51704 0.00527297 0 -0.0377415 0 0 -0.0584012 0 -2.24325 0.823785 0 0 0.149522 0 0 0.0788857 3.10162 0.133206 0 -2.12316 0 0.496352 0.0926728 -0.107081 0.89094 0.0479278 -0.118985 -0.0427645 0.0770647 1.23319 4.40241 0.0154299 0 0 0 -0.271761 -0.00993226 0 0 0 0 0.204899 14.1992 -1.25425 3.66867 0.145839 -0.611887 2.03149 -0.0452187 0.0640101 -0.100298 0.221991 0 0 0 0 0 0 +127 0 0.525192 0.420118 -0.0129232 -0.0829229 0.23687 0.11543 0.245343 -1.51862 -0.10397 0.649795 0.00644901 0.299481 0.000612881 0.377574 0.0148351 2.08539 10.8808 0.141689 0.0439634 -0.598666 0.0201302 -0.0726752 -0.00117173 0.123069 -0.274807 0.372758 0.0562294 0.193288 0.880384 0.00614478 -0.0112022 0.167686 -0.603781 0.159227 0.0796756 0.00135834 0.316227 -3.80092 0.0520461 -0.271479 0.00474985 0.81296 0.00119208 2.09573 0.0292465 -0.209182 0.510817 0.502225 0.00880811 1.55862 0.103283 -10.3189 -0.0550928 0.0142408 -0.136137 1.06261 0.228301 0.266826 -0.130578 -0.000251667 -0.473991 -0.285699 -1.0876 1.23735 -0.583945 -0.165706 -0.529036 0.440543 0.0178706 -0.815783 -0.253754 0.186357 -0.302067 0.229224 0.015091 -1.61766 11.157 -0.708276 4.72796 0.902822 -0.90596 2.5358 -0.338122 0.337002 -0.71521 1.6658 -0.00816566 -0.00504821 -0.140702 0.0350736 -1.07164 0 0 0 0 0 -0.0129232 -0.0829229 0 0 0 0 0 0 0 0.00140672 0 0 0 0 -0.000593874 0 -0.000120139 0.000390876 0.006633 0 0 0.13146 0 0 -0.00473405 0.419936 0 0 0.0180608 0.0271784 0 -0.0371789 0 0.0106393 0 0 0.00140284 0 0 -0.162458 0 0 0 0 0 0 0 -0.0540257 0 0 -0.16825 0 0 0 0 0 0 0 -0.00488552 0 -0.0602051 0 0.0175692 0 0 0.0233449 0.0129895 0 0.0961727 0 0 0 0.286719 0 0.0266545 0 0 0.0853886 0 0 0 -0.00824206 0 0 0 0 0 0 0.23687 0 0.11543 0 0 0 0 -0.534088 -0.00636821 0 0 0.487835 0 0.0668489 0 0.00651615 0 0 0.666065 0 -0.358751 -0.201516 0.124517 0.0946015 0 0 0.0244481 0 11.0356 0 -2.76311 0.480919 0 -1.52226 -0.981572 0.0157059 0 -0.0749268 0 0 0.0185518 0 2.76495 2.15371 0 0 0.273791 0 0 -0.429113 0.109282 1.06737 0 -0.636798 0 1.24087 0.187235 -0.430965 -0.38868 0.311075 0.477921 -0.666401 -0.17639 1.84019 5.55125 -0.136005 0 0 0 0.270745 -0.0208844 0 0 0 0 0.0996247 4.61261 -3.83617 7.78204 -0.132911 -0.2478 1.46159 -0.27415 0.238446 -0.320944 0.911592 0 0 0 0 0 0 +128 0 0 0 -0.0516719 -0.263973 0 0 0 0 5.86639 3.6231 -0.27735 0 -0.141145 0 -0.782251 0 0 0.514915 -2.6941 0 0.059546 0 0.776184 0.869007 0 0 0.180943 0 0 0 1.72933 -1.6455 0 0.0255635 0 -0.217977 -0.789353 0 -0.872319 0 0.058774 -2.91305 -0.595979 0 0.794344 0 0 -6.10189 -0.106889 0 1.48863 0 3.42763 -3.22146 1.48408 0 4.0315 0.66996 -0.616424 1.30825 0 0 0 0 1.39782 0 -0.663049 -0.700237 -4.81944 -2.76876 -0.753672 -0.469424 -1.19093 0 0 2.0234 0 -8.17963 0 -1.50781 0.0898814 0 -3.36364 2.65504 -3.45917 0 0.887655 1.65445 -1.20255 1.56878 0 0 0.153141 0.0201765 0.183074 -0.041163 -0.0516719 -0.263973 0.0834195 -0.238889 -0.00200528 -0.000474055 -0.0477414 0.0356304 0.0168335 -0.0375918 0.0263346 -0.00490907 0.000477677 -0.016163 -0.0933781 0.28423 -0.0706003 1.4203 0.0701611 0.00230342 -1.06785 -2.1868 -0.000143236 0.011271 0.177257 -1.11154 -0.216193 0.00859491 -0.325872 0.969805 0.0346577 -0.196476 -0.00999916 -1.28852 -0.0106298 0.0896438 -0.165045 -0.0420136 0.00161229 -1.26996 0.522618 -0.030182 0.00118595 1.12473 -0.136827 -0.0191661 -0.00591093 -0.146675 0.0209509 0.0933489 0.139946 -0.0713807 -0.0845332 0.0372555 -0.0106767 -0.22667 0.0873223 0.032304 0.767756 0.0218064 -0.362366 -0.134725 -0.0950124 0.0242178 0.0667462 0.0821345 0.317412 -0.26969 0.0735358 0.00996948 -0.565656 0.0126437 2.03143 -0.109002 0.129962 0.15276 -0.203123 0.328585 -0.00472652 0.00748217 -0.017337 0.0230764 0.0096438 -0.0135241 0.0238916 -0.032886 0.0530025 0 0 0.183074 0 -0.041163 0 0 1.8153 0 -0.0879011 0.114215 -0.0437439 1.12183 0.0203749 0.283759 0.179207 -0.0634224 -0.0765174 0.674517 0 0 0 0 0.40276 0 -0.444473 0 -0.197816 0 0 -0.255725 0 0 0.00859844 0 0 0.133112 -0.00315934 0 -0.0125408 0 -0.118995 0 0 0 -0.00821042 -0.0640547 0 0 0.119997 0 0 0 0.218767 0 -0.768571 0 -0.433411 0.337796 -0.508906 0 0 -0.62867 0.370903 0.502697 0 -0.128936 0 -0.267021 0 0.773607 0.0133962 -0.00657262 0.259514 -0.11599 0.0847669 -1.12407 0 -5.38967 0 -3.73614 1.5601 0 -2.32931 1.26235 -0.595403 0 -1.39574 0.891237 -0.426006 0.112829 0 0 +129 0 0 0 -0.0948532 -0.157887 0 0 0 0 2.02846 1.53335 0.720761 0 0.131115 0 0.368872 0 0 0.368746 0.970648 0 0.171019 0 -0.226775 0.489036 0 0 0.000298091 0 0 0 0.141891 1.18966 0 -0.15365 0 0.156327 0.621962 0 1.78107 0 -0.394585 1.12635 0.29523 0 -3.84095 0 0 2.73725 -2.05049 0 0.25718 0 -0.558558 0.287097 -0.152258 0 -2.00182 -1.45933 0.356743 1.97508 0 0 0 0 0.317462 0 0.955634 -0.646781 -0.134364 -1.98395 1.03091 1.51917 0.878395 0 0 -0.953876 0 -4.1965 0 6.525 -3.28792 0 2.11926 -0.909929 -1.47899 0 11.1538 -6.97774 4.92944 -1.95051 0 0 0.563789 0.0742797 -0.197922 -0.0466675 -0.0948532 -0.157887 0.100212 -0.089157 -0.623686 -0.00226343 -0.0154242 0.0276059 0.0221498 -0.0951084 0.0729684 -0.0253337 0.0418252 0.137456 -0.0681961 0.710455 0.00636918 -0.172114 -0.569583 0.00676845 -0.542225 -0.787892 0.0132928 -0.0104035 -0.148529 1.51222 0.0649945 0.0175729 -0.00110396 0.318405 -0.0897188 -0.165361 -0.080056 -0.0618692 -0.0106586 0.129513 0.0553638 -0.256382 0.00314139 -0.119694 0.448005 0.459905 -0.010882 1.19207 0.0622161 -0.0268582 -0.0826462 -0.446675 0.00480804 0.0809447 -0.512133 -0.108219 -0.186995 0.187935 -0.0938468 -0.217104 -0.166771 0.168565 -0.383282 0.0859863 -0.646842 -0.203526 -0.0840272 -0.062589 0.493978 0.195821 0.106144 0.00962798 0.0358524 0.0773088 -0.0527831 0.038265 0.191463 -0.369971 0.473091 0.202389 -0.108 -0.0373103 -0.060484 0.0558983 -0.0505104 0.0602973 0.0410444 -0.034391 0.0264711 -0.00972389 -0.0159343 0 0 -0.197922 0 -0.0466675 0 0 0.528096 0 0.737865 -0.0473572 0.0284606 0.0334824 0.00104077 -0.0184092 -0.0215483 0.0623007 0.105985 -0.643134 0 0 0 0 -0.0923475 0 0.133315 0 0.435855 0 0 -0.143214 0 0 -0.0130616 0 0 -0.0335446 -0.006897 0 -0.0175052 0 0.109654 0 0 0 0.0148892 -0.055971 0 0 -0.104535 0 0 0 0.0699533 0 -0.0977288 0 0.0622991 0.0208621 -0.450766 0 0 0.774199 0.125074 0.00169185 0 -0.0394299 0 0.00415618 0 -0.0150091 0.0886595 -0.066253 0.204892 -0.0978248 -0.0424269 -0.397773 0 0.263289 0 3.00158 -0.162863 0 1.31062 -0.513579 0.160402 0 1.59828 -0.648161 0.238889 0.206634 0 0 +130 0 0 0 -0.119656 0.02371 0 0 0 0 -5.11606 0.533457 0.379818 0 -0.0260791 0 0.148104 0 0 -0.0267706 0.905335 0 -0.0491146 0 -0.47533 0.0517704 0 0 -0.59911 0 0 0 -1.57412 -0.0722749 0 -1.92384 0 0.143856 -2.38394 0 0.895011 0 -0.137269 -7.98317 0.554171 0 -0.293226 0 0 0.329666 0.209278 0 -0.672851 0 -0.873655 -0.203151 0.38667 0 -0.189539 0.788357 0.239737 -0.864839 0 0 0 0 1.18046 0 -1.20985 -1.97484 3.38795 -0.110419 0.200481 -0.742711 2.7852 0 0 0.978133 0 0.27661 0 3.38949 -1.76595 0 0.871186 -0.410939 -0.832786 0 -1.23357 -0.336789 0.14327 -0.288504 0 0 -0.124567 -0.0164118 0.153578 -0.00317149 -0.119656 0.02371 -0.0837953 -0.0368426 0.102505 0.000400768 -0.00589098 -0.0341544 0.0205813 0.0440336 -0.0207189 0.00420561 -0.022251 -0.0759826 0.113483 -0.221363 0.0284821 -0.289495 0.348712 -0.00182353 -0.202441 3.45513 -0.00613745 -0.00937278 -0.131053 -3.58658 -0.0372699 0.00265287 0.455372 -0.999151 0.0131743 -0.253899 0.0152114 2.2267 -0.0272876 0.0645274 0.296326 0.0371512 0.00109344 -1.24957 -0.498818 -0.287028 0.00193781 -1.14205 -0.173075 7.54081e-05 0.0233949 0.138916 0.0343856 -0.110914 -0.265178 0.17343 0.0651246 -0.0362153 0.0320491 0.209843 -0.0109007 -0.00298351 2.2909 -0.0201073 0.384429 0.468732 -0.00302531 -0.0233144 -0.546578 -0.227203 -1.44281 0.408445 -0.436186 -0.0225632 0.186309 -0.0100421 1.99881 0.0814629 -0.0958121 0.0766042 -0.166682 0.182982 0.0264882 -0.0231269 0.0329331 -0.0372849 -0.00800655 0.000704119 -0.000992383 -0.0124417 0.00913721 0 0 0.153578 0 -0.00317149 0 0 -0.405979 0 -1.56732 0.0376675 -0.0558144 -0.0803668 0.00516561 0.0542249 -0.0525041 -0.0458119 -0.0317203 0.17284 0 0 0 0 -0.0728297 0 -0.420672 0 -0.147344 0 0 -0.0742445 0 0 -0.0046472 0 0 -0.0166439 0.00289182 0 -0.00367139 0 -0.287309 0 0 0 -0.00344171 0.0185743 0 0 -0.169383 0 0 0 0.0218407 0 0.23379 0 -0.992893 0.364115 0.946417 0 0 -0.60697 0.254236 0.103203 0 -0.227142 0 -0.0814489 0 -0.484328 0.0804629 0.0801473 -0.218652 -0.0181491 0.020037 0.251486 0 2.32473 0 0.567963 0.78737 0 0.392779 0.124764 -0.0562621 0 -0.552235 0.201505 0.101087 -0.0901356 0 0 +131 0 -0.379586 -0.163727 0.0551615 -0.00560592 0.261271 0.0729641 -0.107721 -0.055023 0.149762 -0.977266 0.377666 0.719905 -0.0910887 -0.241831 0.282241 -1.90566 -7.15753 -0.473435 1.56057 -1.43592 -0.246057 -0.0432448 0.103388 -0.511635 0.140086 -0.553603 -0.179745 -0.0618069 -1.02394 -0.035912 0.125184 0.604417 0.777257 -0.325691 -0.0397738 0.178927 -0.412066 3.97978 1.44758 -0.218071 -0.144236 -0.0317785 0.715081 1.68539 -0.215459 -0.024028 -0.256007 3.16982 -1.30799 0.327476 -1.5486 0.0895606 -1.56422 1.62126 -0.447364 0.994147 -2.11827 0.318627 1.12213 0.176433 -0.608558 0.605875 -2.62668 0.32444 -1.42562 0.737181 0.106013 -0.429245 -0.0250864 1.46092 -0.597382 0.701518 -0.0680473 3.02351 0.36013 -0.975013 -22.5509 -2.46993 1.92923 -3.14735 1.26456 -2.60005 2.29312 -1.94502 1.51075 0.912965 0.926318 -3.25697 2.30234 -1.37023 0.962255 0 0 0 0 0 0.0551615 -0.00560592 -0.0026274 0 0 0 0 -0.00467149 0 0.0684374 0 0 -0.00320178 -0.0231434 0.00384205 0 0.033953 -0.604813 0.00236464 0 0 2.10198 -0.00161695 0 -0.0995639 -1.14678 0 0 0.301287 -0.981585 0 0.208386 0 1.11276 0 0 0.156947 0 0 1.36 -0.066616 -0.0450442 0 -0.0319701 0.0612481 0 0 0.291845 0 -0.0219385 -0.965663 0.0236199 0 0 0.0101569 -0.0059467 0 -0.0706301 0.0577488 -0.0180546 0.223561 0.195286 0.107226 0 0.0876187 -0.0199121 -0.717068 -0.0599947 -0.236632 0 0 0 -2.30048 0.153377 -0.115958 -0.106302 0.12089 -0.166799 0.00515822 -0.005796 0.0052697 5.28655e-05 0 0 0 0 0 0 0.261271 0 0.0729641 0 0 0 0 -0.0206563 1.08386 0 0 0.168741 0 0.0202673 0 0.0224269 0 0 -0.0685608 0 0.0903262 -0.0356147 -0.0217411 -0.00883627 0 0 0.220397 0 0.500873 0 0.985688 -0.0928895 0 -0.438802 0.251845 -0.00425163 0 0.00108641 0 0 0.108262 0 -0.175004 0.00292485 0 0 -0.00277855 0 0 0.220566 -1.74319 -0.14258 0 2.20464 0 0.222999 0.111098 0.0386207 0.168094 0.00911715 -0.403525 0.0486978 -0.14329 -1.07943 3.20005 -0.120408 0 0 0 0.189136 0.101788 0 0 0 0 -0.281719 -13.0166 -3.52843 4.29447 -1.28334 0.895506 -0.629146 -0.213582 0.20827 -0.160013 0.247802 0 0 0 0 0 0 +132 0 0.00310037 0.35892 0.318713 0.361563 -0.270927 -0.0728157 0.470934 1.38868 0.0696219 -3.05877 -0.131452 0.193034 -0.521692 0.732847 -0.15498 1.17233 4.12087 -1.18216 -0.63693 0.0747264 -0.670789 -0.641128 0.611047 -1.38019 0.471791 0.406133 0.528363 0.0577473 0.671235 0.155573 0.586022 -0.28274 -1.20611 1.0686 0.180627 -0.0291507 0.52385 -1.9746 -0.100309 -0.135547 -0.745187 1.57331 0.0787937 1.32862 -0.837569 -0.0650371 0.209375 -1.2446 0.0715663 1.40429 -1.14127 -8.25304 0.479348 -0.836433 0.554345 -2.24532 -0.0595609 0.146768 1.61616 0.533768 1.68401 0.329009 5.28889 -0.8592 -0.75968 -0.160975 3.20966 0.917103 0.0760863 2.11842 -0.0805558 0.0961435 -1.01005 0.163957 -0.395101 -3.75577 7.68836 8.95467 -6.14328 5.96092 -2.24276 -1.0519 6.17411 -2.60002 1.8478 -1.11877 3.60094 -0.348813 -1.04936 0.499482 -0.630797 0 0 0 0 0 0.318713 0.361563 -0.0157996 0 0 0 0 -0.0135679 0 0.0079463 0 0 -0.0117809 -0.0370178 0.0044958 0 -0.0078164 0.140172 0.139924 0 0 0.505912 -0.0025668 0 -0.140754 0.0481295 0 0 0.0284044 -0.028283 0 -0.350184 0 0.162893 0 0 -0.00590056 0 0 -0.518871 -0.193819 -0.171022 0 -0.228965 -0.135212 0 0 0.14508 0 -0.0623899 0.0618877 0.0786555 0 0 0.0213768 0.00893335 0 -0.0130198 0.360256 -0.0325704 -0.323306 0.00914634 0.0305935 0 -0.136914 -0.101655 0.0473617 -0.141389 0.044534 0 0 0 0.947075 0.0681535 8.5916e-05 0.0537801 -0.0593394 0.0603615 0.0146995 -0.017002 0.0211002 -0.0168019 0 0 0 0 0 0 -0.270927 0 -0.0728157 0 0 0 0 -0.0732992 0.856998 0 0 -0.324321 0 -0.0402063 0 0.0052994 0 0 -0.0128208 0 -0.0361873 0.000210416 -0.0175234 -0.00500815 0 0 0.0464009 0 3.54477 0 1.00048 0.397712 0 0.027153 0.125766 0.000145348 0 -0.0103169 0 0 0.104963 0 1.18799 -0.356525 0 0 -0.046821 0 0 -0.139756 1.46735 0.0326775 0 0.463832 0 0.189721 0.130603 -0.04632 0.149105 -0.0452793 -0.134306 0.385141 -0.0580507 -0.845925 -2.3579 0.0275123 0 0 0 0.174142 0.0674751 0 0 0 0 -0.217855 -5.93508 1.0597 -1.60234 -0.0129471 0.000579894 -0.676911 0.369375 -0.191684 0.10776 0.115914 0 0 0 0 0 0 +133 0 -0.16446 0.396687 0.269523 0.124298 -0.0686128 -0.0537119 0.361289 1.08891 1.11518 -1.77992 0.00790596 0.225097 -0.473531 0.501504 0.0606894 0.792289 0.652382 -0.948291 -0.15209 0.48657 -0.55264 -0.720986 0.615752 -0.840781 0.385138 0.381052 0.696433 0.0151354 0.465468 0.211988 0.905333 0.160124 -1.40797 1.08463 0.136303 0.0258528 1.87895 -3.25298 -0.139966 0.086682 -0.675114 2.83077 0.0491753 0.115089 -0.63863 0.0196791 0.0848234 -0.144779 -0.00496184 -0.0537736 -0.273928 -5.03714 0.263496 -0.0902515 0.0528175 -0.445314 0.490846 -0.5022 0.635638 0.75335 0.968589 -0.00318493 2.10302 -0.865944 0.0398993 -0.462748 1.81435 0.471737 -0.968194 0.737111 0.59207 0.0419015 -1.87626 -1.21072 -0.155806 -2.80197 16.4535 7.21379 -4.47608 4.81251 -2.40805 1.8042 2.73907 -1.00847 1.08099 -1.12484 2.74565 -0.1295 -0.700509 0.379448 -0.437426 0 0 0 0 0 0.269523 0.124298 0.033814 0 0 0 0 0.0173157 0 -0.0291049 0 0 0.0159115 0.171183 -0.198433 0 -0.0299296 0.0866674 -0.213024 0 0 -1.32838 0.012012 0 -0.140008 0.72419 0 0 -0.145507 0.225295 0 -0.234435 0 -0.822509 0 0 -0.100661 0 0 -0.0707332 0.246765 0.22648 0 0.480931 0.0997369 0 0 -0.39679 0 0.067056 0.106645 -0.0844443 0 0 -0.0348311 -0.0584805 0 0.0553094 -0.528854 0.058339 0.222581 -0.12387 -0.0761803 0 0.186497 0.0985767 0.353036 0.0136986 0.146488 0 0 0 0.0589518 -0.176696 0.146552 -0.0018451 0.000694396 0.0108792 -0.020662 0.0236357 -0.0275735 0.0254048 0 0 0 0 0 0 -0.0686128 0 -0.0537119 0 0 0 0 0.0555064 0.261285 0 0 -0.35719 0 -0.0536115 0 0.00954643 0 0 -0.0662406 0 -0.0520617 0.0320417 -0.0225057 -0.0110516 0 0 0.0491911 0 -0.595705 0 -0.350365 0.0313854 0 0.311317 -0.00932453 -0.00569346 0 0.00498473 0 0 0.0451959 0 -0.0104712 -0.38765 0 0 -0.0650259 0 0 -0.0771699 0.507309 0.222279 0 -0.660725 0 0.113215 0.0969699 -0.167958 0.161784 -0.0500811 -0.482568 0.0210295 0.0271827 -0.399455 -2.82608 0.0264443 0 0 0 0.0543933 -0.0460559 0 0 0 0 -0.11084 10.7213 3.60006 -2.16235 0.698044 -0.205384 -0.36701 0.158138 -0.141406 0.271682 -0.355638 0 0 0 0 0 0 +134 0 -0.716357 -0.448385 -0.157533 -0.0447554 0.0641812 -0.00563591 -0.17429 -0.463372 -0.699592 1.59943 -0.00480419 -0.769028 0.284489 -0.826231 -0.0667661 -0.464122 -2.47975 0.643996 -0.440209 -0.700621 0.412103 0.56356 -0.373016 0.998052 -0.356828 -0.080705 -0.261393 -0.0137253 -0.0104244 -0.178205 -0.549714 -0.0351377 1.91854 -0.34712 -0.129102 -0.0411227 -0.536977 8.26954 -0.192423 -0.131408 0.404962 0.17641 -0.248961 -3.56964 0.374437 -0.0160074 -0.0300435 -0.545652 0.349406 0.712451 0.550264 1.05856 0.151442 -0.206912 0.0533572 -1.04505 0.0265285 0.0332383 -0.763092 -0.471131 -1.41165 -0.932255 -2.4585 1.13903 -0.654035 1.01166 -1.43147 1.08587 0.64489 -0.430556 -1.37239 -0.218204 0.477642 -0.53745 -0.0654301 1.84757 -38.1993 -11.1099 1.90658 -9.87125 5.4577 -6.93211 -3.20374 1.69613 -0.984366 0.345528 -1.61948 0.826532 -0.204018 0.105004 0.012615 0 0 0 0 0 -0.157533 -0.0447554 -0.0134801 0 0 0 0 -0.00677431 0 0.069052 0 0 -0.0102426 -0.103241 0.0867741 0 0.0333598 -0.347504 0.127583 0 0 -0.357943 -0.00723872 0 -0.105724 1.39659 0 0 -0.00916173 0.134001 0 -0.0373684 0 -0.206023 0 0 -0.0086233 0 0 0.659943 -0.0966685 -0.146442 0 -0.192745 -0.0380995 0 0 0.37723 0 -0.0329701 -0.067056 0.0274901 0 0 0.0241095 0.0182588 0 -0.0709444 -0.145881 -0.0377866 -0.723921 -0.00633237 0.11245 0 -0.0694824 -0.0226334 0.150972 -0.0207563 0.00357814 0 0 0 -1.11589 0.193926 -0.218405 -0.0618212 0.069851 -0.0793311 0.0137846 -0.0156496 0.0176679 -0.0155119 0 0 0 0 0 0 0.0641812 0 -0.00563591 0 0 0 0 0.0330528 0.2335 0 0 0.319031 0 0.0507266 0 -0.00684414 0 0 0.0614979 0 0.173674 0.0133436 0.0243002 0.0125422 0 0 -0.00552464 0 -0.630949 0 2.54189 -0.0325555 0 0.00586909 0.548457 0.00575764 0 0.00544646 0 0 0.00347308 0 -0.21656 0.0182429 0 0 0.0321997 0 0 -0.00177852 -0.526881 0.105226 0 0.599735 0 0.554997 0.092578 -0.0131919 0.120043 -0.0112713 0.0172322 -0.108243 -0.0180393 -0.333089 -1.803 -0.00612397 0 0 0 0.0441427 0.0448529 0 0 0 0 -0.0639373 -19.7021 -4.30785 2.18276 -1.73992 1.22118 -1.42361 -0.24283 0.16356 -0.162058 -0.0695475 0 0 0 0 0 0 +135 0 0.281779 0.155674 0.176186 0.286616 -0.217754 -0.0948474 0.570041 1.15931 -0.737219 -2.36922 -0.0995514 -0.177143 -0.256858 0.0976272 0.02031 -0.180578 -0.877588 -0.65037 0.261562 -0.901821 -0.38297 -0.299764 0.249692 -1.12425 0.202828 0.0105114 0.244228 0.00969056 0.075917 0.0190463 0.00286687 0.0348975 -0.520796 0.467743 0.0975062 -0.0445024 0.357553 -0.486868 -0.175881 -0.209171 -0.327042 0.842723 -0.0606315 -1.33253 -0.341372 -0.0450048 0.0332301 0.365795 0.402476 0.6781 -0.408998 3.96035 -0.651568 0.522868 -0.266999 -2.19518 -0.928737 -0.628821 0.887812 -0.0929278 1.66322 -0.0649755 0.751556 0.490042 -0.537447 -0.421165 0.263247 1.37324 0.95291 1.60681 0.249675 -0.428766 -0.00879173 -2.18826 0.081977 0.938265 3.06149 7.95966 -4.51865 4.52223 -1.18889 -0.109008 5.2387 -2.09238 1.92282 -1.42935 1.47647 0.00618433 0.04238 0.18963 -0.0918703 0 0 0 0 0 0.176186 0.286616 -0.0220539 0 0 0 0 -0.0158788 0 0.0709053 0 0 -0.0204396 -0.131961 0.184751 0 0.0352073 0.147984 0.40961 0 0 -0.581852 -0.00922913 0 0.230462 0.866256 0 0 -0.130624 0.159134 0 0.623637 0 -0.198042 0 0 -0.056895 0 0 1.27435 -0.22659 -0.293737 0 -0.31564 -0.073575 0 0 0.730519 0 -0.0662699 0.159428 0.070865 0 0 0.0367635 0.025209 0 -0.129846 -0.318079 -0.0404542 0.211013 -0.0784298 0.152801 0 -0.0918131 -0.0770067 0.555463 -0.131419 0.191427 0 0 0 -2.11032 0.366791 -0.529887 -0.118818 0.135057 -0.154038 0.0250497 -0.0290755 0.0363584 -0.0512266 0 0 0 0 0 0 -0.217754 0 -0.0948474 0 0 0 0 -0.133349 0.427462 0 0 -0.199986 0 -0.0147151 0 -0.00633375 0 0 0.0323163 0 -0.112677 -0.0287215 0.0323907 0.00742894 0 0 -0.0406927 0 2.5537 0 -0.942956 0.102337 0 -0.240029 -0.265592 0.00628951 0 -0.0155774 0 0 0.0372888 0 0.688583 -0.342145 0 0 -0.0244823 0 0 -0.176091 0.6737 -0.245027 0 0.015498 0 -0.329577 0.0476707 0.0780071 -0.0763254 0.0274801 0.27528 0.268407 -0.0329071 -0.210461 2.32506 -0.00114412 0 0 0 0.0602399 0.0085328 0 0 0 0 -0.0456577 7.20283 2.2814 -0.695015 0.935518 -0.955705 1.23836 0.25189 -0.130513 0.0380026 0.300085 0 0 0 0 0 0 +136 0 -0.388896 -0.7719 -0.35046 -0.239887 0.34989 0.111224 -0.109494 -0.568066 -0.604236 3.4797 0.240877 0.631945 0.594096 0.585185 0.147247 -2.18726 -8.66318 1.34798 0.333102 -0.193738 0.854264 0.951089 -0.723857 2.14286 -0.161291 -0.715527 -0.588627 -0.0652934 -1.00894 0.109976 -0.8369 0.365234 2.5153 -1.1417 -0.0744822 0.063827 -1.03307 7.50071 0.746594 0.0525301 0.817162 -2.21802 0.122359 2.26284 0.768588 0.0326607 -0.261989 0.972561 -0.495744 -0.244181 0.320205 0.837554 -0.158197 0.435913 -0.397019 -1.28991 -1.04952 -0.714974 -2.16735 -0.648579 -0.198777 0.231512 -4.00021 0.398383 -0.684897 0.279878 -1.71005 0.293771 0.379251 -3.72828 0.0926269 0.668473 1.25344 0.278261 0.292541 2.45407 -38.4545 -19.8207 5.0629 -14.6163 4.97129 -3.82921 -8.1641 1.78717 -0.532523 0.741561 -3.32422 -0.772122 1.71682 -1.5576 1.22095 0 0 0 0 0 -0.35046 -0.239887 -0.0141484 0 0 0 0 -0.000871252 0 -0.00961862 0 0 -0.0050073 -0.0758774 0.091349 0 -0.0114973 0.0369714 0.129092 0 0 0.070673 -0.00534185 0 0.069808 -0.565828 0 0 -0.0291142 0.270201 0 -0.154113 0 -0.0671847 0 0 -0.0260635 0 0 -0.173497 -0.012111 -0.0695879 0 -0.198954 -0.035209 0 0 0.140323 0 -0.00600172 0.120529 0.00713699 0 0 0.00979565 0.03789 0 -0.00997885 -0.163778 -0.0118595 0.573655 -0.0353977 -0.00773527 0 -0.014681 -0.00025362 0.0748803 0.0373379 0.0440203 0 0 0 0.211773 0.0468355 -0.0981689 0.0101804 -0.0131721 0.0232124 0.00594535 -0.00690019 0.00861187 -0.0162871 0 0 0 0 0 0 0.34989 0 0.111224 0 0 0 0 0.0612275 -0.380351 0 0 0.397075 0 0.0556838 0 0.000609176 0 0 -0.0616842 0 0.205469 -0.0368107 0.00235311 -0.00515806 0 0 0.0319272 0 -3.42922 0 -0.0275692 -0.10005 0 -0.446383 0.173846 0.00339629 0 0.010291 0 0 -0.0578464 0 -0.48741 -0.19879 0 0 -0.0300584 0 0 -0.0613511 -0.245808 -0.0450233 0 -1.11165 0 1.25855 -0.0900319 0.0644865 0.129275 0.0724005 -0.359235 -1.0935 0.0148483 0.457011 -0.621353 -0.100037 0 0 0 -0.0698582 -0.0478224 0 0 0 0 0.137669 3.70063 -1.35607 2.78574 -0.541461 0.376247 -0.151302 -0.323547 0.16955 -0.0937267 0.136879 0 0 0 0 0 0 +137 0 -1.36104 -0.20198 -0.411044 -0.41553 0.260467 0.139995 -0.993504 -2.83427 -0.427939 3.13989 0.182249 -0.379525 0.602854 -0.57062 -0.0691182 -1.21182 -5.20354 0.779703 -0.53143 -0.252767 0.301435 -0.223402 -0.662931 1.10546 -0.72595 -0.367401 -0.482463 -0.0780323 -1.02761 -0.19803 -0.649756 -0.0176614 -0.351909 -0.998322 -0.239165 -0.0071756 -1.81337 0.419764 0.639944 -0.00480756 0.820382 -5.21077 -0.0808082 -0.128955 0.429847 0.0125512 -0.283256 -0.455042 -0.627529 -0.118586 0.623682 -3.57796 0.295664 -0.747999 0.126072 -0.724457 -0.173147 0.17989 -0.918982 0.0337089 -0.289327 -0.044687 0.954535 2.49707 0.971402 1.19845 -1.9502 -1.83386 -0.587287 -0.579583 -1.10325 0.585736 0.887833 1.26424 0.206181 0.60824 -2.30934 -6.05247 4.42911 -1.5031 0.196829 -0.152602 -6.13065 3.0871 -2.70869 3.81603 -2.21162 -1.04342 2.20023 -2.10132 2.11984 0 0 0 0 0 -0.411044 -0.41553 -0.0277912 0 0 0 0 -0.00380527 0 -0.0105922 0 0 0.00628766 -0.0424135 0.0661378 0 0.00295241 -0.67975 -0.0973564 0 0 0.269791 -0.0032761 0 0.190672 -3.08098 0 0 0.0239297 -1.35555 0 -0.142484 0 -0.084283 0 0 -0.0192494 0 0 -0.444831 -0.0506814 0.0927392 0 -0.386298 0.0617836 0 0 -0.0730942 0 -0.0290255 0.337131 0.0491965 0 0 -0.0184275 0.0605353 0 0.0395637 0.0843317 0.0343847 3.00415 0.0533922 -0.0675241 0 -0.0612925 -0.0748377 0.0787237 0.326546 -0.104891 0 0 0 0.852175 -0.168736 0.252598 0.0255337 -0.0427638 0.0949552 -0.0101892 0.0147308 -0.0236984 0.0366388 0 0 0 0 0 0 0.260467 0 0.139995 0 0 0 0 -0.0415575 -0.828305 0 0 0.559205 0 0.0695474 0 0.00146622 0 0 -0.0224416 0 -0.0667879 -0.0706724 0.0230018 0.00111786 0 0 0.0367151 0 -2.257 0 1.23304 -0.0832433 0 -0.449962 0.202438 0.00346192 0 -0.008653 0 0 -0.0968847 0 -0.302698 0.322614 0 0 0.0496761 0 0 -0.160026 -0.611289 -0.271331 0 -0.773828 0 0.524977 -0.312643 0.335384 0.0153801 0.0252812 0.0680277 -0.264508 0.125951 0.630443 -2.65362 0.0224705 0 0 0 0.0120396 -0.100607 0 0 0 0 0.173482 -8.09703 -3.06632 1.79056 -1.01365 0.95285 -1.00147 -0.549345 0.407131 -0.364564 0.278648 0 0 0 0 0 0 +138 0 -0.0362446 -0.149635 0.109832 0.0595186 -0.108745 -0.0620116 0.352973 1.77569 0.383104 -2.42162 -0.133175 0.54582 -0.263982 -0.575993 -0.0786565 -1.0261 -4.04027 -0.701751 -0.189345 0.164112 -0.389493 -0.0923688 0.32968 -1.11756 0.358327 -0.190537 -0.396873 0.0514182 0.524722 0.0213031 0.406686 -0.129708 -0.375772 -1.19026 0.0885235 -0.0346928 -1.06901 -1.73088 -0.188627 -0.0105861 -0.50811 -2.94043 0.0306515 0.200275 -0.76059 -0.00619863 0.168518 -0.306012 -0.248137 -0.421105 -0.54476 4.43828 0.155295 -0.329445 0.178718 -1.16519 0.0644272 0.178638 1.3888 0.909756 -1.82489 -0.111238 -0.0994133 -1.15873 0.253811 -0.38334 0.953231 -0.923048 -0.364834 2.0631 0.347256 -0.0116857 0.500879 0.880081 -0.136581 0.835113 11.9909 5.72627 -2.40148 1.42977 -1.07122 2.32186 5.74167 -2.90634 2.65373 -2.45498 3.91333 -0.581497 -0.565378 0.930497 -1.08244 0 0 0 0 0 0.109832 0.0595186 -0.0445646 0 0 0 0 -0.0265886 0 -0.00621858 0 0 0.00116794 0.0478107 -0.0133514 0 -0.00436013 -0.609824 0.0805728 0 0 0.350813 0.00305216 0 -0.240973 -7.03713 0 0 -0.00228667 -2.42181 0 -0.186432 0 0.250776 0 0 0.00764344 0 0 -0.40528 -0.369339 0.0287415 0 -0.618855 -0.00757151 0 0 -0.0945573 0 0.0152874 0.0909989 -0.0158281 0 0 0.0116938 0.147177 0 0.0214425 0.254313 -0.037534 7.26573 0.0491585 -0.0502543 0 -0.0958914 0.0129115 -0.232386 1.16264 -0.114496 0 0 0 -0.513097 0.133554 -0.42298 0.00537567 0.0100689 -0.0295215 0.000657414 -0.00618837 0.0184932 -0.0483845 0 0 0 0 0 0 -0.108745 0 -0.0620116 0 0 0 0 0.0317404 -0.422309 0 0 -0.194346 0 -0.0253642 0 -0.0118195 0 0 -0.0372817 0 -0.1403 0.053493 0.0142303 -0.00819752 0 0 -0.123801 0 -4.47541 0 -0.537229 -0.355543 0 0.412581 -0.38975 0.000584792 0 0.00346524 0 0 -0.0428915 0 -1.39102 -0.134411 0 0 -0.0206967 0 0 0.0164748 0.536868 0.313963 0 -0.506521 0 -0.215604 0.129213 -0.234302 0.665794 0.0110562 -0.606714 0.0625113 -0.0996018 1.18083 1.89295 -0.0779568 0 0 0 -0.0263744 0.0791055 0 0 0 0 0.183768 5.41643 2.50906 -2.50115 0.718643 -0.610085 0.476502 0.176445 -0.249895 0.31527 -0.437758 0 0 0 0 0 0 +139 0 0.167365 -0.0552431 0.0613777 0.111914 0.0580599 -0.128693 0.743421 2.355 -0.165537 -2.28461 -0.317565 -0.139204 -0.0652639 -0.537309 -0.104704 0.121703 -3.86167 -0.598363 -0.817319 0.692295 -0.288209 0.103224 0.0536192 -0.960322 0.485684 0.301486 -0.443925 0.0608964 0.918935 -0.0473908 -0.0206837 -0.276589 0.504589 -1.00964 0.116294 -0.125362 -2.46369 2.05614 -1.12569 0.118014 -0.0589529 -5.32757 -0.443832 -2.48439 0.0754282 0.0224656 0.237872 -2.07545 0.96568 0.149483 -0.559025 -5.29773 -0.193805 -1.05046 0.372101 -1.71427 0.562412 0.449201 1.169 -0.254208 0.214614 -0.263993 -0.528123 0.671982 1.42505 0.530472 -0.960434 -4.15839 0.320534 1.0793 -0.538758 -1.13153 -0.165119 -1.39487 -0.0611394 -1.56397 -6.25049 3.17973 -6.13342 1.65379 -0.206993 -2.49677 5.72298 -2.41931 2.06382 -3.11256 -0.388087 3.0017 -2.44182 2.44992 -1.89565 0 0 0 0 0 0.0613777 0.111914 0.00171903 0 0 0 0 -0.000720597 0 0.0912759 0 0 -0.0085916 -0.0453356 0.20071 0 0.041895 -0.174194 0.453197 0 0 -0.893973 -0.00318452 0 -0.417218 -2.6247 0 0 -0.0692591 -0.958617 0 -0.6135 0 -0.342531 0 0 -0.021809 0 0 -0.729726 -0.00968554 -0.121602 0 0.0251911 -0.176504 0 0 0.145928 0 -0.0166739 -0.326216 0.0493015 0 0 -0.00485151 -0.0510979 0 -0.00240724 -0.00358649 0.0610067 -0.0528924 -0.129215 -0.0264736 0 -0.00598331 -0.0817302 1.20988 -0.684665 0.258558 0 0 0 -0.498109 0.177716 -0.668194 -0.0178996 0.0186621 0.0439816 0.00563264 -0.00873159 0.0199189 -0.0726405 0 0 0 0 0 0 0.0580599 0 -0.128693 0 0 0 0 -0.0145686 -0.172269 0 0 0.0169102 0 0.00900335 0 -0.0130979 0 0 -0.152925 0 0.0683256 0.0132528 0.0685146 -0.0214909 0 0 -0.12769 0 -4.12678 0 -0.415138 -0.144384 0 0.0642752 0.116254 0.00905149 0 0.00124536 0 0 -0.0243028 0 -0.787393 -1.27477 0 0 -0.160175 0 0 -0.233793 -0.268596 -0.0298793 0 -0.261256 0 0.269946 0.0811656 -0.00281962 -0.0611451 0.142 -0.161391 -0.317971 0.0201576 -0.111228 -1.30671 -0.111899 0 0 0 0.0368548 -0.0716143 0 0 0 0 0.0416127 11.6905 2.52891 -1.28484 1.36366 -0.905276 0.688808 0.00718132 -0.043155 0.0460433 -0.0378556 0 0 0 0 0 0 +140 0 -0.391984 -0.342327 -0.170674 -0.1046 0.179969 0.00651787 -0.238126 -0.496233 -3.8978 1.38722 0.125132 -0.500627 0.0877624 -0.640694 0.123278 0.0918662 0.3022 0.610732 0.743896 -0.505235 0.481161 0.591016 -0.970388 1.09871 -0.240213 0.0324715 -0.340965 -0.0222812 -0.507201 -0.256591 -2.02998 0.216704 1.79847 -0.606018 -0.137952 0.063226 -0.783189 6.36931 0.637428 -0.0571832 -0.271991 -1.0169 0.321243 -1.46582 -0.998962 -0.00556102 -0.104618 1.35736 0.116866 -1.08698 -0.249181 1.29174 -1.1181 0.39412 -0.251557 2.74236 -0.188072 -0.0973235 -1.06016 -0.412484 -0.646945 -0.0784122 -4.53053 1.30435 1.40116 1.14164 -2.88387 -2.12995 5.06903 -2.68112 -0.620744 -0.323722 2.90802 -0.364819 0.201135 0.990461 -25.7066 -8.12759 1.27529 -4.87384 2.21015 -3.32904 -2.16505 1.26457 -1.21154 1.17233 0.71527 -0.389906 0.494708 -0.281904 0.317966 0 0 0 0 0 -0.170674 -0.1046 -0.012985 0 0 0 0 -0.012711 0 0.0297716 0 0 0.0117911 0.126392 -0.142602 0 0.00335574 -0.176176 -0.188778 0 0 0.0627337 0.00891709 0 -0.187102 3.68889 0 0 0.0249873 0.740919 0 -0.121496 0 0.189577 0 0 0.0272178 0 0 0.672071 -0.182825 0.166779 0 -0.18847 0.0639393 0 0 -0.0779531 0 -0.0446297 -0.106162 0.0548393 0 0 -0.00921447 0.00968403 0 -0.0290482 -0.612198 0.0188706 -2.85589 -0.0468021 0.0531037 0 0.00619264 -0.0644671 0.334638 -0.416163 0.119908 0 0 0 -1.02695 -0.0148771 0.00725746 -0.0756795 0.0853291 -0.0771153 -0.0110961 0.0136158 -0.0221366 0.0250439 0 0 0 0 0 0 0.179969 0 0.00651787 0 0 0 0 -0.0538696 0.46597 0 0 0.362393 0 0.0522209 0 0.00137515 0 0 -0.0367906 0 0.186083 -0.0363367 0.0220977 -0.00152138 0 0 0.0659081 0 0.699148 0 1.06562 0.033393 0 -0.353434 0.344227 0.00473516 0 -0.00470242 0 0 0.0253931 0 0.0483557 -0.254633 0 0 -0.0177932 0 0 0.0620913 -0.798169 -0.219431 0 0.763215 0 0.339083 0.0344739 0.145334 0.194862 0.085401 -0.1259 0.022936 -0.0341637 -0.868414 0.0586058 -0.0876048 0 0 0 0.0243871 0.0822009 0 0 0 0 -0.16557 -10.7759 -3.73911 2.97088 -1.02544 0.649376 -0.469178 -0.361894 0.275873 -0.247925 0.207133 0 0 0 0 0 0 +141 0 -0.430662 -0.503415 -0.115123 0.248078 -0.140586 -0.0538369 0.325194 0.958508 3.53613 0.777697 -0.0702114 0.0382125 0.597683 -0.0423096 -0.161962 -0.989301 -1.90938 0.902696 -0.796442 -0.193395 0.72312 0.882405 -0.0671927 1.23171 -0.00470646 -0.458303 -0.3108 0.00136794 0.175788 -0.0142325 0.74917 -0.359146 2.07061 -0.206194 -0.0244189 -0.037721 -0.243638 5.74937 -0.320012 -0.0126382 0.672859 1.48706 -0.0974271 -0.570609 0.924881 0.00098474 0.0180739 -1.7788 -0.251356 0.166468 -0.0636368 -6.98346 1.5355 -0.334033 0.207826 -1.92749 1.32564 -0.083913 -0.973213 -0.164666 0.542355 -0.0462387 -4.90647 1.23056 -0.410239 0.37351 -3.17848 -0.607664 -4.43319 -2.52669 0.0190906 0.157435 -2.65582 -0.9771 -0.0315807 -1.25014 -26.2778 -6.15693 0.0226382 -5.01492 2.68354 -3.04941 0.151538 -0.918348 0.975252 -1.63421 -0.662227 0.264278 -0.352839 0.128764 -0.110202 0 0 0 0 0 -0.115123 0.248078 0.0322729 0 0 0 0 0.0119691 0 -0.00425092 0 0 -0.00503611 0.0721375 -0.0561402 0 -0.0275045 -0.116527 0.166596 0 0 -1.05865 0.00522961 0 0.119493 0.0916871 0 0 -0.137206 0.0381893 0 0.122112 0 -0.344203 0 0 -0.0439307 0 0 0.215431 0.168087 -0.0738012 0 0.454678 -0.0484577 0 0 0.0406134 0 0.0320184 0.0108418 -0.0524519 0 0 0.00529365 -0.0755885 0 -0.0138456 -0.0378476 -0.001296 0.132201 -0.0981962 0.008016 0 0.0769033 0.071139 0.254852 -0.0876054 0.174981 0 0 0 -0.881765 0.111372 -0.30249 -0.0166402 0.0274965 -0.0644901 0.00582268 -0.00943173 0.0188476 -0.0397813 0 0 0 0 0 0 -0.140586 0 -0.0538369 0 0 0 0 -0.0256345 -0.135176 0 0 -0.270787 0 -0.0200375 0 -0.00903373 0 0 0.0546966 0 -0.0233558 -0.0106108 0.00386012 0.00874425 0 0 -0.0472061 0 -1.2822 0 -0.163624 -0.100131 0 -0.0743244 -0.196062 0.00276615 0 -0.00279693 0 0 -0.0437095 0 -0.325797 0.114495 0 0 0.0255347 0 0 -0.0711759 0.592096 -0.059282 0 -0.934253 0 0.317026 0.109371 -0.0720355 0.496311 0.00200225 -0.43174 -0.416239 -0.0353007 -0.0665448 -0.96368 -0.0653218 0 0 0 -0.106106 0.0816204 0 0 0 0 0.0456129 2.47564 1.9612 -0.496077 0.0361602 -0.354041 0.665955 0.352629 -0.257617 0.180291 0.0737312 0 0 0 0 0 0 +142 0 -0.158861 0.105625 0.118309 0.035901 0.118321 -0.090905 0.467038 1.02006 2.56454 -1.22794 -0.278542 -0.601532 -0.082059 -0.539328 -0.0405138 -0.719119 -5.53996 -0.38703 -0.763728 -0.438584 -0.296527 -0.387717 0.652246 -0.764629 0.126024 3.0234e-05 0.573296 0.03896 0.653105 -0.0251867 1.34955 -0.0102771 -0.675572 1.05153 0.0620512 -0.136663 1.54041 -0.517423 -1.09918 -0.135697 0.157653 2.33556 -0.561939 -4.00066 0.646291 -0.0339545 0.159663 -1.31099 -0.290246 1.22842 0.456211 1.74714 0.787628 -0.433487 0.149271 0.166369 0.501065 -0.499631 0.239188 0.29342 0.251306 0.386025 -0.21615 0.715333 -0.959546 0.278291 0.112672 1.1681 -3.3006 0.845481 -0.739963 0.577599 -3.18325 -0.441011 -0.133575 -1.81168 5.2676 3.7727 -4.30795 -0.00716946 0.710551 -0.983313 0.961115 -0.305429 0.733224 -2.05585 -0.462753 0.498129 -0.436397 0.450259 -0.409434 0 0 0 0 0 0.118309 0.035901 0.0070683 0 0 0 0 0.00788066 0 0.06857 0 0 -0.00780216 -0.0879476 0.165039 0 0.0370897 -0.00960812 0.311472 0 0 -2.17208 -0.00621188 0 0.148906 0.30281 0 0 -0.280703 0.0598729 0 0.491803 0 -1.16634 0 0 -0.15233 0 0 1.21208 0.113617 -0.109831 0 0.104477 0.0244126 0 0 0.484291 0 0.0290899 0.11462 -0.0514834 0 0 0.00562109 -0.00216712 0 -0.0843666 -0.904022 0.0173014 2.01398 -0.167838 0.0757618 0 0.123075 0.0723709 0.774445 0.195431 0.263006 0 0 0 -2.41351 0.252136 -0.552403 -0.138837 0.151741 -0.141358 0.00722274 -0.00896241 0.0144083 -0.0420631 0 0 0 0 0 0 0.118321 0 -0.090905 0 0 0 0 -0.0198577 -0.38709 0 0 0.0575654 0 0.00885166 0 -0.0180684 0 0 0.0519293 0 -0.139963 0.00618475 0.0930832 0.0065574 0 0 -0.165775 0 -2.17768 0 -0.807702 -0.116905 0 0.0407522 -0.175031 0.0105972 0 -0.00205127 0 0 -0.0437323 0 -0.322075 -0.457498 0 0 -0.0507591 0 0 -0.249335 0.146035 0.00282713 0 -0.943851 0 0.158695 -0.0641969 0.0274533 -0.0853042 0.0247563 -0.124196 -0.21091 0.0680413 0.45264 0.134719 0.00497683 0 0 0 0.00395178 -0.141772 0 0 0 0 0.156319 17.0602 3.55393 -1.6156 1.38982 -0.814424 0.486926 -0.0918459 0.000430799 0.0666196 -0.129006 0 0 0 0 0 0 +143 0 0 0 -0.367543 -0.361163 0 0 0 0 -3.64447 3.5854 0.638152 0 0.406831 0 -0.0165755 0 0 0.512582 0.150757 0 0.168873 0 -0.64805 1.12225 0 0 -0.524096 0 0 0 -1.35131 -0.538708 0 -1.69121 0 0.0610738 -2.35136 0 3.80354 0 0.560615 -7.86045 0.781434 0 0.159149 0 0 -1.25275 -0.541871 0 2.19517 0 -0.445104 0.489856 0.264628 0 -0.642192 -0.145752 -1.00749 -0.718775 0 0 0 0 2.24389 0 2.59057 -1.63423 2.26002 1.13456 0.796595 2.19094 3.45489 0 0 0.71129 0 -6.24936 0 -0.650435 -5.6421 0 -3.5521 1.86563 -5.79122 0 -1.24567 -2.74664 0.344976 -6.44814 0 0 -0.00190351 -0.000157411 -0.465021 -0.108014 -0.367543 -0.361163 -0.0351526 0.0434664 -0.106319 -1.52728e-05 0.00751731 -0.013132 -0.0125363 0.0571853 -0.00134924 -0.000308834 -0.011698 -0.0993307 -0.0541553 -0.026467 0.0164024 -1.34127 0.0331738 -6.84695e-05 0.113292 0.144088 -0.00462879 0.0219734 -0.355068 -10.6885 0.877964 -0.00351709 0.00535372 -3.90477 -0.0167531 -1.55967 -0.00492277 0.172525 0.143826 -0.0742793 0.00628962 -0.00627633 -0.000592259 -4.50424 -0.279813 -0.251457 -0.000779528 -0.748366 0.247888 0.00983598 -0.00458694 -1.09878 -0.0123182 -0.0534497 0.1576 0.241695 0.00626372 0.00467135 0.0152902 0.0642089 -0.0541597 -0.0807842 -0.742928 -0.00764532 5.8169 -0.255603 0.118669 0.06379 -0.0536056 0.00392794 -2.60335 0.794361 1.9709 0.0208372 -0.0231365 -0.000588763 34.0693 1.90737 1.78811 0.154449 -0.0670963 1.59899 0.00733423 0.00103196 0.0371804 -0.409224 2.95034e-05 0.00265403 -0.0286117 0.157046 -1.91776 0 0 -0.465021 0 -0.108014 0 0 -2.12209 0 -3.25339 0.0226593 0.032134 0.606609 0.010823 0.144384 -0.321252 -0.0693069 0.0850077 -0.232052 0 0 0 0 -0.0935537 0 0.0870737 0 -0.754067 0 0 0.864931 0 0 -0.0451528 0 0 -0.00123314 0.00768187 0 0.101646 0 -0.36092 0 0 0 0.0113542 0.0769915 0 0 0.0345793 0 0 0 -0.439812 0 1.05732 0 -0.361175 0.416313 0.205439 0 0 0.655564 0.205092 -1.0358 0 0.205756 0 0.088322 0 -0.548911 -0.293104 -0.0425118 -0.169233 0.251467 -0.00459725 0.779121 0 -2.14366 0 0.692291 -2.63151 0 -0.317828 -0.141341 -0.573143 0 0.121891 -0.440557 0.265092 -0.688293 0 0 +144 0 0 0 0.192501 0.662168 0 0 0 0 0.303339 -2.26131 0.820941 0 -0.120811 0 0.099941 0 0 -0.270784 0.226106 0 -0.155525 0 -0.185425 -0.591923 0 0 -0.23327 0 0 0 -0.569853 0.376713 0 0.102628 0 0.040687 -0.624773 0 2.0787 0 -0.513387 1.45835 0.0202315 0 -2.95963 0 0 0.021688 -0.889582 0 -1.34174 0 0.0694978 0.433725 -0.269886 0 0.157654 -0.487933 0.484894 0.430296 0 0 0 0 -2.56047 0 -0.440627 3.1318 2.70437 -0.453799 -0.377873 0.320256 1.81768 0 0 0.556042 0 3.00488 0 4.63598 -2.50369 0 6.2903 -4.47981 3.86101 0 7.57457 -4.35892 4.56331 -3.31946 0 0 0.491813 0.0406706 -0.190251 -0.0641577 0.192501 0.662168 0.036744 0.0546712 -0.503063 -0.000337363 0.00450289 0.00810522 0.0139271 0.0451212 0.0301064 -0.00633524 -0.0614421 -0.31062 0.635226 0.457521 0.0740364 -0.19931 0.885425 0.00185078 0.31819 -1.08064 -0.0221086 0.0170519 0.0657117 -2.92624 0.494367 0.0179094 -0.293582 -0.956102 -0.0644882 -0.0383854 -0.03985 -0.525828 0.0988722 0.195336 -0.107955 -0.103877 0.00178578 0.406804 0.114641 -0.793862 -0.00459606 0.45846 0.387196 -0.0464488 -0.0174494 -0.0738153 -0.0463714 0.102948 3.49311 -0.172093 -0.0875472 0.117291 0.11489 -0.0442492 -0.0747714 -0.250144 0.164299 -0.194132 2.58913 0.257839 -0.0703325 -0.105083 0.0927074 -0.484605 1.66105 -0.446872 -0.338032 0.059932 -0.145859 0.0109872 -3.077 2.21207 -3.52143 0.415611 -0.437657 -2.31395 0.0457452 -0.0660676 0.497789 -1.17706 0.00763129 -0.0130302 0.11037 -0.0754687 -1.07986 0 0 -0.190251 0 -0.0641577 0 0 0.222011 0 0.609904 -0.0573582 -0.00820134 -1.04119 -0.00661348 -0.0912528 -0.025758 -0.0578805 0.0644695 -0.495643 0 0 0 0 -0.385916 0 0.038011 0 -0.0872165 0 0 0.363186 0 0 -0.00890556 0 0 -0.0520802 0.011061 0 0.044077 0 -0.0236345 0 0 0 0.0066988 0.071705 0 0 0.023742 0 0 0 0.147446 0 -0.276929 0 1.27516 -0.973025 0.678763 0 0 0.201648 -0.386366 1.10964 0 0.0557079 0 0.0480988 0 0.0865321 0.17391 -0.485236 0.362356 0.169283 0.0207187 0.167214 0 3.54466 0 1.65635 -0.926014 0 1.46563 -0.986127 0.902967 0 0.908318 -0.748604 0.662905 -0.351495 0 0 +145 0 0 0 -0.217625 0.034788 0 0 0 0 -2.53695 -2.37949 -0.0480891 0 0.467307 0 0.00918897 0 0 -0.286302 0.788627 0 -0.10627 0 -0.9368 -0.996829 0 0 -0.724304 0 0 0 -1.50488 0.313095 0 -1.39287 0 -0.0974167 -2.24292 0 -0.831199 0 0.0973751 -4.20442 -0.434614 0 -1.70469 0 0 2.96819 0.427406 0 -0.79738 0 -1.04871 0.128295 -0.475207 0 -1.08168 -0.117263 0.8725 0.0925157 0 0 0 0 -0.0755261 0 -0.33736 -1.87409 2.56341 -1.46381 -0.931268 -1.80301 4.06043 0 0 3.25593 0 4.50314 0 2.22479 1.71125 0 2.22523 -1.0577 3.29387 0 1.68897 0.406459 1.70646 1.6798 0 0 0.0257201 0.00212693 0.163355 0.0757021 -0.217625 0.034788 -0.0136567 0.0414091 0.0284895 -2.1658e-05 0.00695142 -0.0099204 0.00195251 0.205887 0.00127592 -0.000412044 -0.00189861 -0.0113359 0.858 0.0179457 0.152726 -1.37013 1.25363 8.19422e-05 0.186836 1.56123 -0.000926025 -0.0146105 0.259099 -6.17 -0.175199 0.00133976 0.13802 -3.05335 -0.00236018 0.634497 0.000485661 0.763692 -0.0594203 0.0188127 0.0615057 -0.0070498 0.000150796 1.52083 -0.214595 -0.0134826 -0.000192886 -0.308229 0.0427467 -0.00515484 -0.00012894 0.155585 -0.00500093 -0.0316639 1.32146 0.189404 -0.0031435 9.15082e-05 0.0062418 0.0150432 0.0139353 -0.00635527 -0.473076 0.0546054 14.4114 -0.0950887 -0.023022 -0.133111 0.0403377 -1.07998 -1.64261 0.868465 0.956414 0.0132573 -0.0813126 0.000442302 -11.5033 -0.30467 -5.38721 -0.0258803 0.0472581 -0.998406 0.00186993 -0.00571733 0.0547366 -1.29474 0.000413389 -0.00115616 0.0126032 -0.0360953 0.382691 0 0 0.163355 0 0.0757021 0 0 0.262561 0 -0.0789273 -0.132963 0.0227743 -0.618979 -0.0259594 -0.131724 0.0885493 -0.0692456 0.00657781 -0.574297 0 0 0 0 -0.159462 0 0.202257 0 -0.000215507 0 0 0.0866188 0 0 0.0190059 0 0 -0.043583 0.0103787 0 0.0242 0 -0.112101 0 0 0 -2.68426e-05 0.0704593 0 0 0.124379 0 0 0 -0.0195435 0 -0.0984755 0 0.179987 -0.226575 -0.284408 0 0 -0.188893 -0.297915 -0.149148 0 -0.250949 0 -0.162472 0 0.0392322 0.260475 -0.260155 0.309386 0.131478 -0.00255224 0.100625 0 2.08106 0 2.16369 -0.485305 0 0.695857 -0.358619 0.287993 0 0.61917 -0.45635 0.442785 -0.187184 0 0 +146 0 -0.869716 -0.421222 0.191523 0.123494 -0.496665 -0.195754 0.893554 3.52152 0.692878 -2.58919 -0.137303 -0.440035 -0.298634 -0.736982 0.117701 -2.28058 -12.6774 -0.314611 0.320376 -0.390992 -0.133995 0.0403022 0.386464 -0.934239 0.300213 -0.403854 0.388447 0.0277055 0.549939 0.00313159 0.57889 0.1844 0.310328 0.6145 0.0717598 -0.0115989 1.76022 2.33023 -0.873931 -0.11308 -0.426942 3.00613 -0.195466 -3.88703 -0.411832 -0.0282109 0.0978689 0.480375 0.519118 1.72929 -1.79301 -4.46019 -0.241427 0.263434 -0.76385 -3.10711 -0.292214 -0.259494 1.21 0.430076 0.461687 -0.0372596 1.13947 1.64202 -2.60453 0.627946 -2.14786 1.72175 -0.548552 -0.785417 -0.926986 -1.82618 -1.46429 -1.37051 0.929063 0.294459 -7.89068 2.99166 -6.40804 1.9378 -0.610913 -2.5272 3.35762 -3.33434 5.07241 -6.41635 1.44126 0.922872 -0.124894 2.58668 -2.23643 0 0 0 0 0 0.191523 0.123494 0.0110458 0 0 0 0 0.00572519 0 0.0728415 0 0 0.0043308 0.0693609 0.1558 0 0.0240275 0.548734 0.532855 0 0 -0.625464 0.00325581 0 0.193675 1.22104 0 0 -0.0560456 1.00804 0 1.11126 0 -0.194493 0 0 -0.0144322 0 0 3.12352 0.122025 0.0911131 0 0.234629 -0.0308533 0 0 0.581265 0 0.0190961 2.14054 0.0320551 0 0 -0.00849907 -0.0185424 0 0.0275426 -0.0209369 0.0633302 -2.48862 0.208236 0.0610632 0 0.0337217 -0.543944 0.212647 -0.171039 0.263094 0 0 0 -24.3398 -1.11641 -3.3905 -0.107026 0.251694 -3.44487 -0.00308888 0.00695224 -0.0966655 -0.561474 0 0 0 0 0 0 -0.496665 0 -0.195754 0 0 0 0 0.198194 -0.740047 0 0 -0.466079 0 -0.0517398 0 -0.0311421 0 0 -0.0721025 0 -0.0151894 0.174075 -0.0512421 -0.00599721 0 0 -0.255586 0 -8.4227 0 0.661828 -0.31596 0 1.35772 -0.135743 -0.00615929 0 0.025756 0 0 -0.0940447 0 -1.67848 -0.91853 0 0 -0.0867384 0 0 -0.192952 2.12537 0.0262582 0 -1.63681 0 0.683027 0.0456534 -0.039996 0.0667791 0.0191887 0.241141 -0.180195 -0.0481933 1.06205 -4.49082 -0.0112484 0 0 0 -0.0967358 0.0156187 0 0 0 0 0.275298 -6.26738 1.27583 -4.86365 -0.203 0.0770584 -0.756037 0.15654 -0.21494 0.361218 -0.985642 0 0 0 0 0 0 +147 0 1.38454 0.0410383 0.278259 0.244143 -0.135536 -0.152114 1.3144 3.53427 0.66196 -2.31623 -0.116899 -0.0270886 -0.429107 -0.208833 -0.0292446 0.848373 2.59161 -0.54753 0.263796 -0.271572 -0.282028 0.244809 0.538437 -0.744633 0.710403 0.314602 0.226697 0.0943949 0.123229 0.104393 0.721678 -0.0988353 0.837789 0.661601 0.293987 -0.00208144 0.351685 0.649332 0.492215 -0.127393 -0.693588 2.03924 0.454405 -1.49809 -0.990825 -0.0548997 0.202633 0.449815 -0.631854 -0.0211676 -1.33798 -4.11613 -0.215847 0.241589 -0.0205967 -0.281326 -0.328442 -0.232264 1.1436 0.779902 -0.447893 0.0272314 -0.545372 -2.82238 0.0227736 -0.1892 3.28381 0.585769 -0.496505 -0.791189 0.0860986 0.372127 -0.413188 -0.10222 0.0137948 -2.48697 -3.84019 4.76785 -8.19919 1.89597 -1.56365 0.222313 3.27808 -2.96438 4.75887 -6.9124 3.46752 -2.32009 1.79906 -0.819411 -0.501135 0 0 0 0 0 0.278259 0.244143 -0.00615899 0 0 0 0 -0.00438994 0 0.0210648 0 0 -0.00324786 0.00174844 -0.11261 0 -0.00879505 -0.0237252 0.105264 0 0 0.716628 0.000104855 0 -0.718786 -2.49579 0 0 0.055693 -0.476199 0 -1.2968 0 0.560405 0 0 0.0499914 0 0 -3.15902 -0.0942423 -0.0743435 0 -0.138685 0.103286 0 0 -0.368408 0 -0.0226468 -1.02673 0.0534476 0 0 0.00600446 0.000758367 0 -0.0265255 -0.280963 -0.0420685 5.97463 -0.176823 0.068954 0 0.030655 -0.114841 -0.991499 0.449518 0.234903 0 0 0 22.3807 1.01381 0.898664 0.0964665 -0.20045 2.89995 0.00282063 -0.00520423 0.0768287 -0.049436 0 0 0 0 0 0 -0.135536 0 -0.152114 0 0 0 0 0.0844212 0.221761 0 0 -0.345208 0 -0.0425175 0 -0.0214492 0 0 0.108874 0 -0.117467 0.0522793 -0.0488663 0.0049576 0 0 -0.162458 0 -2.37526 0 -2.2774 -0.586644 0 0.329703 -0.616804 -0.0071096 0 0.0184744 0 0 0.0165566 0 -1.37482 -0.212852 0 0 -0.0677536 0 0 -0.040588 0.737699 0.110935 0 -0.101796 0 -0.659226 0.120529 -0.081983 -0.0931988 0.0380829 -0.00969807 0.558999 -0.323159 0.980001 6.29917 0.0091101 0 0 0 0.0857498 0.141823 0 0 0 0 -0.023164 10.3141 2.44028 -2.13745 0.891069 -0.941028 1.51029 0.225256 -0.25065 0.348895 -0.356768 0 0 0 0 0 0 +148 0 0.721722 -0.0665103 0.181344 0.105027 0.0949083 -0.0191692 0.217556 0.759539 0.597414 -1.46347 0.00469275 -0.0681242 -0.282713 -0.135004 -0.0505952 -1.00482 -2.64656 -0.34235 -0.0817994 0.156809 -0.0916787 -0.0181636 0.36469 -0.34982 0.0904988 -0.296826 0.158453 0.0326883 0.433138 -0.0251479 0.531473 -0.133292 -0.307129 0.0781643 -0.000104056 0.0476947 1.21557 -1.95476 0.291481 -0.022382 -0.41926 2.33536 0.335418 -0.339143 -0.45824 -0.0100109 0.122428 -0.252415 -0.403055 0.816863 -0.274603 -0.899802 0.0327035 -0.0740254 0.191332 -0.605768 -0.0460796 0.164625 0.242067 0.43446 -0.902828 0.00840487 0.055664 0.466919 -0.317169 -0.386881 -0.220704 1.31902 -0.471996 0.205036 0.295393 0.516723 -1.42264 0.263734 -0.153569 -1.75023 7.97186 2.29527 1.7524 0.961243 -0.062759 1.59221 0.987671 -0.817868 1.90993 -1.97758 1.60367 -1.18471 0.17385 0.0450325 -1.76144 0 0 0 0 0 0.181344 0.105027 0.00952576 0 0 0 0 0.0047294 0 -0.115374 0 0 0.00365751 0.0602593 -0.502184 0 -0.0681406 0.711831 -0.816158 0 0 -0.657246 0.00283026 0 0.127757 3.46408 0 0 -0.0506546 1.70545 0 0.400014 0 -0.234022 0 0 -0.0149685 0 0 0.565082 0.100731 0.0764285 0 0.201203 -0.102327 0 0 -0.147876 0 0.0153549 -1.98123 -0.12804 0 0 -0.00693931 -0.016875 0 0.0126681 0.234834 -0.0210081 -7.23794 -0.0892876 -0.0939486 0 -0.00913368 0.722395 0.937547 -0.459103 -0.352638 0 0 0 -4.65919 -0.442962 2.83904 -0.0208495 0.0442225 -0.62271 -0.00253082 0.00572657 -0.0796715 0.908168 0 0 0 0 0 0 0.0949083 0 -0.0191692 0 0 0 0 0.0106186 0.541598 0 0 -0.290689 0 -0.049577 0 0.00645613 0 0 0.0262885 0 0.0395812 0.00128831 -0.0689713 0.00420514 0 0 0.0372303 0 1.53954 0 -1.0146 -0.182712 0 -0.0068972 -0.103454 -0.0132232 0 0.00169914 0 0 0.0721499 0 0.0628981 -0.239606 0 0 -0.0298244 0 0 0.324634 -0.883682 0.134056 0 0.865535 0 -0.416202 0.103781 -0.110293 0.66837 -0.00201506 -0.523062 0.0742638 -0.0786489 -0.343051 -0.378964 -0.082594 0 0 0 -0.0109099 0.122128 0 0 0 0 -0.0996543 5.70085 1.54432 -0.209439 0.429723 -0.278268 0.497968 0.153367 -0.133156 0.184739 -0.123336 0 0 0 0 0 0 +149 0 0 0 0 0 0.387595 0.00570398 -1.32063 -2.99759 0 0 0.0659271 -1.26356 0 -2.1722 -0.00319169 0 0 0 -0.0858463 -3.6565 0 0 0 0 -0.343617 0 0 0.310693 0.220538 -0.796842 0 0.0465164 0 0 -0.163959 0.0144927 0 0 0.243226 -1.24876 0 0 0.112918 -3.45454 0 -0.584343 0.343129 0.0414668 -0.20146 -3.10164 -0.157543 0 0.0527188 -0.0964325 0.173723 1.02396 0.133246 0.208663 0 0 0.432892 -0.903901 0 -2.59897 0.0606164 -0.0780782 0 0 0 0 -0.348231 0.21878 0 0.473856 -1.98502 0 0 0 4.5788 0 -0.332635 1.53324 0 -0.175794 0.157479 4.28549 0 -0.275503 0.0291878 -0.449821 1.59471 0 0 0 0.0888599 0.00225306 0 0 0 -0.0153801 0 0 -0.000680121 0 0 -0.00154365 0 0 0 0 -0.0345922 0 -0.000876089 0 -0.0610679 0 -0.153911 -0.0754833 0 0.000224549 0 0 0.0763796 0 -0.00189351 0 0 0 0 -0.000872187 0.00539337 0 -1.83592e-05 0 0 0 0 0 0 0 0 0 0 -0.00345633 0 0 0 0 0 0 0 0 0 0 -0.10495 0 0 0 -0.0393612 0.0362825 0 0.0815756 -0.104717 0 -0.0458523 0 -0.0840627 0 0 0 0.0574641 0 0 -0.0718722 0 0 0 0.0144928 0 0 0 0 -0.063858 0 0.387595 0.0888599 0.00570398 0.00225306 0.00935646 0.022731 0.0107317 -0.390606 -0.272424 -0.000171369 6.87618e-05 -0.0162582 -3.34606e-06 -0.00095131 0.000221237 -0.00260672 0.0206191 -0.00831272 -0.67582 0.92652 0.239109 -0.0836078 0.0446199 -0.0869768 0.0518687 0.0354528 -0.0956888 0.022769 -8.16622 0.0415859 3.80296 -1.32441 4.31975e-06 -0.600915 1.36821 0.000767258 0.00242061 -0.0852088 0.0132609 0.208494 -0.00707546 0.00266455 -3.67256 0.0194859 0.00235199 0.0100192 -0.00727215 0.147309 0.0529845 0.903176 3.17325 0.168163 -0.0553954 0.769857 -0.000232366 0.154166 -0.00960862 -0.0662636 -0.0301379 0.0383978 1.79055 -0.055967 -0.0537264 -0.1936 3.1884 -0.117161 0.545862 0.0614665 -0.113051 -0.0925387 0.00152662 -0.0550631 0.000212967 0.0263513 -0.041582 0.00812077 -11.9938 -0.0588759 1.51183 0.00830466 0.348118 -3.11202 0.000205271 0.0326932 0.00133483 -0.0237035 2.10004e-05 -0.0919828 0.099752 -0.0351026 -0.398532 0 +150 0 0 0 0 0 -0.248286 0.28146 0.0390752 0.364115 0 0 0.0336225 1.90818 0 3.83906 0.00151065 0 0 0 0.0318419 3.20622 0 0 0 0 -0.117651 0 0 -0.297834 4.04408 1.06008 0 0.00166688 0 0 -0.0973652 0.00683604 0 0 0.0325737 2.1021 0 0 0.0404656 6.82577 0 1.10456 0.7228 -0.0747212 -0.0826857 2.74196 -0.122112 0 -0.0211469 0.0123111 -0.0197406 -6.43734 -0.268883 -0.174762 0 0 0.13365 -2.57314 0 0.20423 -0.420172 0.198998 0 0 0 0 0.0482425 0.289162 0 -6.03356 -0.839815 0 0 0 -0.126645 0 -0.409796 -3.17937 0 -0.129196 0.145821 -2.40617 0 -0.135365 0.138974 -0.470562 -7.26847 0 0 0 0.00794077 0.00020134 0 0 0 -0.00128139 0 0 -5.91865e-05 0 0 -4.68913e-05 0 0 0 0 -0.00288021 0 -7.49393e-05 0 0.000278301 0 -0.00834824 0.00227918 0 3.31886e-05 0 0 0.0120249 0 -2.59405e-05 0 0 0 0 0.00041589 0.000936528 0 6.19913e-06 0 0 0 0 0 0 0 0 0 0 -0.00459136 0 0 0 0 0 0 0 0 0 0 -0.00607089 0 0 0 -0.00316373 0.00375085 0 0.00530822 -0.0104753 0 -0.00405204 0 -0.00370641 0 0 0 -0.000261877 0 0 -0.0113152 0 0 0 -0.00185371 0 0 0 0 -0.0100535 0 -0.248286 0.00794077 0.28146 0.00020134 -0.45355 -0.124802 0.000959013 -0.571771 0.0300069 -1.5314e-05 -0.0197653 0.0171943 -2.99014e-07 0.00021102 1.97703e-05 3.56957e-05 -0.01505 -0.000742849 0.0191562 -0.377227 0.176002 -0.162051 0.0223567 -0.0764033 -0.134628 0.278734 0.00837075 -0.0140222 5.59812 -0.00625564 0.519488 1.77085 3.86025e-07 -0.751341 0.648935 0.000360184 0.000635807 -0.123038 0.0051771 1.53027 0.000230568 0.0564613 3.59482 -0.582877 -0.00221757 2.28182e-05 -0.190555 -0.0696383 -0.0890871 -1.51216 2.5103 0.171326 0.0185258 -7.58494 -2.07649e-05 2.05289 6.96467e-05 -0.158288 -0.0179688 0.483704 0.300718 0.000495473 -0.0711158 0.146698 -31.0135 0.0432691 -0.154949 -0.0168203 -0.277973 -0.117639 -0.000182064 -0.0103788 1.90313e-05 -0.0424885 0.0895158 -5.88622e-05 -1.63837 -0.0386585 1.24994 0.000515211 -0.00143831 -3.88052 -5.21064e-06 -0.0221018 0.0580728 -0.498807 1.87666e-06 -0.0368515 -0.0921145 0.207635 -1.85343 0 +151 0 0 0 0 0 -0.656633 -0.033311 0.597133 3.08081 0 0 0.0698467 0.190526 0 1.13761 0.0072751 0 0 0 -0.0219901 -3.51126 0 0 0 0 0.207007 0 0 -0.170129 4.24538 0.43633 0 0.0813507 0 0 -0.0148 0.00511389 0 0 0.0470233 0.0959381 0 0 -0.0026686 -0.566011 0 0.427497 0.35415 0.0906264 -0.00263037 2.03853 0.111047 0 0.00363721 -0.0337973 0.12257 -0.137513 -0.023054 0.0333302 0 0 -0.181356 3.29741 0 1.19563 0.128505 0.228561 0 0 0 0 0.0906341 0.129828 0 3.75038 0.616679 0 0 0 -4.50058 0 0.131836 -6.40449 0 0.106988 -0.224298 -6.98591 0 0.04375 -0.462942 0.557348 -9.34162 0 0 0 -0.00477375 -0.000121039 0 0 0 -0.000482346 0 0 1.77932e-07 0 0 8.49556e-05 0 0 0 0 0.00021727 0 2.10123e-05 0 0.00340842 0 -0.0123215 -0.0213961 0 3.80071e-06 0 0 0.00167373 0 -0.000302324 0 0 0 0 -0.00658561 0.000255753 0 -0.000104307 0 0 0 0 0 0 0 0 0 0 9.0316e-05 0 0 0 0 0 0 0 0 0 0 0.000845966 0 0 0 -8.20761e-05 -0.000564062 0 -0.000645866 0.000175211 0 -0.000298486 0 0.0015964 0 0 0 -0.00320728 0 0 -0.00157496 0 0 0 -0.00166665 0 0 0 0 -0.00139934 0 -0.656633 -0.00477375 -0.033311 -0.000121039 -0.768105 -0.150848 -0.000576529 0.664851 -0.0571854 9.20632e-06 -0.0106605 -0.0291253 1.79758e-07 -0.000425135 -1.18853e-05 -0.000294953 0.000927084 0.000446577 1.41039 0.262906 0.0848104 0.567198 -0.0160417 0.201494 -0.0530387 0.393187 -0.0222598 0.0152914 8.46375 -0.00928164 0.224543 1.15938 -2.32066e-07 2.55427 0.415714 -0.000257832 0.0015826 0.105401 0.00347269 2.24889 -0.00076007 0.0580618 3.10534 2.94877 -0.000284391 0.00429446 0.475146 0.083787 0.0696673 0.388143 -1.81012 0.406477 -0.0312907 1.8343 1.24832e-05 -0.394681 -0.000710468 -0.186609 0.0323241 -0.530583 -0.737082 -0.0191177 0.0243274 -0.0347841 -1.80375 0.112677 0.185334 0.0127232 -0.355464 -0.0279307 0.000430352 -0.044514 -1.1441e-05 0.0312701 0.0891199 0.000600455 -0.708166 0.0409378 -6.75497 -0.000987841 0.268156 -5.81552 2.68653e-05 -0.0374631 0.186035 -3.25761 -1.12819e-06 -0.0944739 -0.16979 0.467791 -3.11152 0 +152 0 0.812414 0.228142 0 0 0.0101745 0.160125 0.540976 0.418948 0 0.204869 0 1.07799 0 1.26224 0 -0.2179 -1.68948 0.0258568 0 2.15911 0.00490041 -0.109546 0 0.0581957 0.0056018 0.0298551 0.000926795 -0.247142 0.373447 0.592551 0 0 -0.441402 0.00988687 -0.00592665 0 0.0209262 -3.36196 0 1.30508 0 0.0999492 0 1.99947 0 0.788973 -0.0692111 0 0 1.41603 0.105588 4.83843 0 0 0 -0.629956 -0.0420248 0 -0.11131 0 -1.04674 -1.64061 -0.772445 1.6266 -0.0125078 -0.369616 -0.246395 -0.00397612 0 -0.345933 0.0612614 0 -0.0384469 -0.834509 0.381706 -0.195366 12.1697 -0.21255 3.77253 0.21677 -0.311475 3.59442 -0.143088 0.148048 -0.446901 0.262357 0 0 0 0 -0.748141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0101745 0 0.160125 0 0 0 0 -0.124711 0.0319957 0 0 -0.0863773 0 -0.00453968 0 -0.000629036 0 0 0.814605 0 -0.587247 -0.0362965 -0.0164527 0.118923 0 0 -0.0441841 0 4.15987 0 -6.24951 0.692022 0 -0.295022 -2.08545 0.00072119 0 -0.00418862 0 0 0.0126068 0 1.78043 1.36988 0 0 0.203504 0 0 0.499563 0.947429 -0.00668475 0 1.94461 0 0.404909 -0.0131229 0.00726943 -0.173005 -0.0746725 -0.196014 -0.266108 0.00894397 -0.162854 5.37411 -0.00555949 0 0 0 -0.0234993 -0.0434709 0 0 0 0 -0.0420972 32.7582 0.840357 4.96712 0.505839 -0.485453 3.20288 0.0189436 -0.0378028 0.062023 0.140005 0 0 0 0 0 0 +153 0 -0.467307 0.139665 0 0 -0.1878 -0.222268 0.534456 1.54852 0 -0.0105307 0 -0.409436 0 -1.40547 0 0.742103 3.64782 -0.00508328 0 -1.23709 0.000935016 -0.140204 0 0.0132518 0.444904 0.14795 0.00106163 0.402369 -0.307163 -0.406935 0 0 -0.183744 -0.00539123 0.252257 0 0.0158141 1.13227 0 -0.926384 0 -0.0277868 0 -1.81239 0 -0.669222 0.183847 0 0 -2.29638 0.0873045 -4.15753 0 0 0 1.06974 0.015479 0 -0.0216887 0 0.462586 0.620432 0.492458 -0.654339 0.043379 -0.479099 -0.0362002 0.0122805 0 -0.075811 -0.0244109 0 -0.0266878 1.84427 -0.421516 0.0280794 -0.571424 -0.249591 -1.48534 -0.0919108 0.0448118 -0.367269 -0.0452315 0.0826797 -0.123447 -1.49988 0 0 0 0 0.615353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1878 0 -0.222268 0 0 0 0 0.381782 -0.165869 0 0 0.0177935 0 0.00127656 0 -0.00251217 0 0 -0.0250172 0 -0.276361 0.145642 0.000111146 0.00413876 0 0 -0.0245656 0 0.599369 0 0.844273 -0.84787 0 1.02878 -0.258307 -0.000746354 0 0.0456121 0 0 -0.0156632 0 -1.05154 0.347931 0 0 0.0474824 0 0 0.00717509 -1.4736 -0.291941 0 0.93583 0 -0.57174 -0.041284 0.0863605 -0.308237 -0.0864418 0.206541 -0.116059 -0.0502358 -0.116197 7.34368 0.0434629 0 0 0 -0.0219676 -0.00562555 0 0 0 0 0.0237057 -2.46604 -0.0999136 -2.09996 -0.226014 0.208116 -0.389822 -0.0244082 -0.0152117 0.0567459 -0.600482 0 0 0 0 0 0 +154 0 -1.29902 -0.136424 0 0 -0.383962 0.0161506 -0.516187 0.668912 0 -0.0586562 0 0.32569 0 -0.0749341 0 2.3554 4.38886 0.00670651 0 0.495418 6.40329e-05 0.0388702 0 -0.0223642 -0.0676997 0.954902 0.00220734 -0.553624 -2.01337 0.133508 0 0 0.724169 0.0298539 -0.272238 0 0.00571441 5.1106 0 0.490609 0 0.125542 0 -0.769593 0 0.35233 -0.996956 0 0 -2.24426 0.0378823 -5.98892 0 0 0 -0.508512 -0.0153994 0 0.00612253 0 0.741288 -0.966229 0.723891 -0.383686 0.0392235 0.584225 0.176881 -0.0328182 0 0.0989775 0.0225795 0 -0.0347818 -0.593269 0.151016 -0.104202 -14.6241 0.212165 -5.51873 0.00600846 0.184484 -3.5243 0.142712 -0.137902 0.0462201 0.185872 0 0 0 0 4.03347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.383962 0 0.0161506 0 0 0 0 0.61004 0.0615238 0 0 -0.0935966 0 -0.0129077 0 0.001693 0 0 -0.47401 0 -0.392621 0.217456 -0.0157154 -0.0498141 0 0 0.0230978 0 -8.31347 0 6.06909 -0.327476 0 1.78825 0.785814 -0.00137417 0 0.0794723 0 0 0.00470281 0 -1.8231 -1.70182 0 0 -0.172227 0 0 -0.227611 0.292658 -0.45236 0 0.637026 0 -1.0735 -0.0269333 0.157043 0.219265 -0.115966 0.0557972 0.342403 0.0711766 -0.179884 11.8431 0.0611079 0 0 0 0.0548849 -0.0198276 0 0 0 0 -0.0452261 -34.851 0.482336 -9.47522 -0.45004 0.46243 -3.31977 0.0556702 -0.116262 0.153564 -1.10397 0 0 0 0 0 0 +155 0 0.800114 0.275992 0.000577443 0.0477473 -0.0623695 0.0409086 1.34206 1.86447 -0.000396984 0.318999 -0.014906 1.32549 2.62561e-07 2.79579 -0.00107475 0.813479 4.43676 0.110278 -0.00287531 4.87109 0.0135339 -0.0229138 -3.16419e-07 0.082419 0.513568 0.0538813 0.0109666 0.277981 1.21385 0.621766 -1.41593e-05 -0.0729363 0.106465 0.06594 0.337235 -0.000307641 0.00478267 -0.65031 -0.0406835 1.66777 1.21169e-05 0.160436 -0.000780065 5.7408 0.000372767 0.510025 0.599086 -0.198606 0.00262706 2.11953 0.0494643 6.27467 0.00297775 -0.000586539 -0.0106824 3.35788 0.171402 -0.0672561 -0.150553 -6.28651e-05 -2.09425 0.542125 -2.51794 0.377777 -0.113981 -1.3392 -0.499241 0.0836385 5.86563e-05 -0.328946 0.0940529 -0.0691827 -0.0191206 0.0184242 0.280446 0.0853174 2.42296 -0.206257 -2.3383 0.0758467 0.131342 -3.15403 -0.225354 0.147214 -0.269514 -5.16253 -7.73592e-07 5.64588e-05 -0.00199091 0.126206 -4.76322 0 0 0 0 0 0.000577443 0.0477473 0.000155902 0 0 0 0 3.35758e-06 0 0.00413863 0 0 4.52877e-05 1.24185e-05 0.000419205 0 5.79307e-05 -0.000464453 0.029938 0 0 -0.0598634 8.81483e-07 0 -0.000575934 -0.154828 0 0 -0.0090996 -0.0166777 0 -0.0221999 0 -0.000886077 0 0 -0.000130698 0 0 -0.0438781 4.77904e-05 0.000627766 0 0.00221267 0.00172797 0 0 -0.0270991 0 0.000346659 -0.0597838 -0.000470991 0 0 -1.07101e-05 -0.000231016 0 -0.000914172 -0.0230851 2.48954e-05 -0.224373 2.72036e-05 0.0127043 0 0.00165133 0.00315325 -0.0700998 1.49625e-05 0.0110489 0 0 0 0.0901548 0.00157274 -0.0216341 -0.00181928 0.00212422 0.0247558 -3.54165e-05 4.62416e-05 -8.43412e-05 -0.0126338 0 0 0 0 0 0 -0.0623695 0 0.0409086 0 0 0 0 -0.146732 0.464442 0 0 0.0469764 0 0.0121454 0 0.0132082 0 0 0.583301 0 -0.0534786 -0.0476049 0.0600557 0.0675339 0 0 0.117298 0 10.134 0 -4.45966 0.853225 0 -0.325727 -1.14684 0.00979824 0 -0.0208197 0 0 0.0525688 0 3.0117 1.27787 0 0 0.146672 0 0 0.387719 -5.79435 -0.236723 0 1.68233 0 -1.32791 0.195678 -0.129054 -0.10449 -0.274991 -1.41999 -0.408694 0.0405898 -0.117124 0.806715 0.034118 0 0 0 0.0773124 -0.0930722 0 0 0 0 -0.114904 25.6639 1.91364 2.09631 0.68601 -0.45489 2.07875 -0.124367 0.0583373 0.0285075 0.0757165 0 0 0 0 0 0 +156 0 -0.281009 0.0509406 0.000265455 0.0254225 -0.280664 -0.174513 0.48818 1.49004 0.00132839 -0.0421517 0.00600881 -0.988706 -2.31985e-07 -2.62877 -9.96031e-05 1.46806 2.58887 -0.00968149 8.07368e-05 -2.9757 9.00421e-05 -0.0411394 2.01075e-07 0.00904292 0.171415 0.582956 -0.0069955 0.140611 0.467151 -0.646854 1.62724e-05 0.00310424 0.143817 -0.0894779 0.0320971 1.71124e-05 -0.029848 1.59717 0.0270867 -1.21316 -2.01635e-05 -0.344679 0.000213482 -4.92202 -0.00174399 -0.518734 0.252836 0.0272622 -0.00099627 -1.24629 0.101355 -12.8225 -0.000741492 0.00117478 -0.0162822 -2.6076 -0.0479785 0.0144693 0.012606 2.74067e-05 0.838534 0.726744 0.630435 0.66518 0.0618107 0.0576096 -0.118327 -0.10294 -2.36073e-05 -0.0130266 0.00194021 0.00532228 0.0723266 1.48396 -0.304915 -0.217534 -3.70175 -0.699071 -1.38987 -0.34384 0.277926 -1.3987 0.00597289 0.0664615 -0.181298 -1.52199 3.61924e-06 -9.47475e-05 0.00293702 -0.035294 -1.83313 0 0 0 0 0 0.000265455 0.0254225 -0.00014164 0 0 0 0 -1.16543e-06 0 -0.00117142 0 0 4.48165e-05 -8.39314e-06 -3.35568e-05 0 -7.93281e-06 0.000183426 -0.00574793 0 0 0.0135901 -4.7735e-07 0 0.000121267 0.0174847 0 0 0.0014646 0.00938004 0 0.00804198 0 0.00014025 0 0 1.45639e-05 0 0 0.0331844 -1.68592e-05 0.000455678 0 -0.00204181 0.00223495 0 0 -0.00161656 0 3.93555e-05 0.00514135 -0.000311318 0 0 0.000469393 0.000271402 0 -0.00110461 0.00645017 -0.0016421 -0.0454273 1.5334e-05 0.00253615 0 -0.00203547 0.00232492 -0.00858346 -0.00392383 -0.00317426 0 0 0 -0.0306423 -3.5623e-05 0.006343 -0.000800825 0.00144108 -0.00553905 0.000102703 -7.91141e-05 -0.000108248 0.000423795 0 0 0 0 0 0 -0.280664 0 -0.174513 0 0 0 0 0.0152186 -0.13671 0 0 0.00956972 0 0.00242372 0 -0.0025722 0 0 -0.303178 0 -0.66281 0.148878 0.0241962 -0.0424973 0 0 -0.0172553 0 -6.09926 0 -0.519314 -1.1776 0 0.795718 -1.29919 0.00319253 0 0.0250522 0 0 -0.0171893 0 -2.62551 -0.634904 0 0 -0.0981686 0 0 0.406978 0.213252 -0.0633456 0 3.29681 0 -0.416531 -0.0568816 0.1364 0.0788142 -0.0402631 0.871494 0.0422893 0.0234453 -0.790799 13.095 0.0295071 0 0 0 -0.0587618 0.00666665 0 0 0 0 -0.00310564 -4.123 -0.878335 -1.7137 -0.975629 0.583691 0.284824 -0.0510728 0.0127526 0.026186 -0.480221 0 0 0 0 0 0 +157 0 -1.27742 -0.165432 0.00193992 0.100616 -0.418183 -0.305642 0.964621 2.5428 0.00941732 0.181254 0.0589487 -0.585357 -2.16531e-06 -0.504707 0.00237511 -0.857323 -3.7637 0.109447 0.00549574 -0.1173 0.0123377 -0.133636 2.64492e-06 0.0509729 0.675502 -0.321604 0.00400082 0.804298 2.49203 -0.447578 0.000160127 0.128165 0.201918 0.0654491 0.361274 0.00121794 -0.0657688 3.07987 0.164294 -0.823641 -0.000136246 -0.0636696 0.00320688 -0.691542 -0.00835493 -0.767948 1.48647 0.30201 -0.00649002 -1.75118 0.0542863 -2.90949 -0.00657249 0.00761996 -0.0999738 -0.474716 -0.1618 -0.140336 -0.0136837 0.000164577 -1.23157 -0.133375 0.0318713 -2.30765 0.0144321 -2.29119 0.11376 -0.0942399 -0.000167294 0.128488 0.0305897 0.116827 0.124023 -0.562473 -2.43982 0.0175764 -8.67858 -0.4042 -5.72715 -0.671428 0.431325 -7.48439 -0.233528 0.0711963 -0.0456884 -7.47092 1.73387e-05 -0.000489736 0.0138068 -0.227123 -9.77888 0 0 0 0 0 0.00193992 0.100616 -0.00144014 0 0 0 0 -3.03125e-05 0 -0.00297404 0 0 -0.000211628 -0.000118588 -0.000206406 0 -2.91454e-05 0.000717842 -0.0195621 0 0 0.0855077 -8.15541e-06 0 -0.000429779 -0.0127491 0 0 0.00832696 0.0224612 0 -0.00175842 0 0.00160841 0 0 0.000145198 0 0 -0.0544749 -0.000432565 -0.00329283 0 -0.0205936 -0.00702696 0 0 -0.00960708 0 -0.00273055 0.0146552 0.00305021 0 0 0.00121239 0.00237352 0 0.00274944 0.0321212 -0.00377436 -0.00722377 0.00178699 -0.00263611 0 -0.0095204 -0.00176714 -0.0080812 -0.0101784 -0.00741271 0 0 0 0.115252 -0.00816578 0.0341741 0.00891674 -0.00952507 0.000988334 0.000492422 -0.000511636 0.000330093 0.00454034 0 0 0 0 0 0 -0.418183 0 -0.305642 0 0 0 0 -0.262233 -0.196073 0 0 0.0123495 0 0.0112488 0 -0.00241557 0 0 0.00659624 0 0.558085 0.0653638 0.0722061 0.00823718 0 0 -0.0190058 0 0.708797 0 3.9445 -0.155685 0 0.619563 0.908834 0.00964533 0 -0.0353194 0 0 -0.015939 0 0.349991 0.0572815 0 0 0.0292241 0 0 -0.220198 0.828616 -0.230628 0 -1.85583 0 0.565033 -0.0645186 0.12827 -0.0337263 0.0657017 -0.0198597 -0.0465071 -0.0635698 0.185586 -4.74841 -0.0377201 0 0 0 0.0161165 0.0157729 0 0 0 0 0.00202181 -25.5736 -1.2026 -4.16741 -0.656448 0.491031 -1.97577 -0.139297 0.0234524 0.0826805 -0.457297 0 0 0 0 0 0 +158 0 0.0236418 0.353064 0.121243 0.261902 -0.252012 -0.24105 0.168475 2.59353 0.614556 -2.30464 -0.0358988 -0.0908653 -0.049003 -0.131916 0.0557178 1.91959 5.50986 -0.366412 0.143149 0.728205 -0.0328483 -0.40616 0.0632349 -0.618615 0.579739 0.747172 0.357817 0.259171 1.20484 -0.0431648 0.218817 0.118684 -0.674542 1.08153 0.0504078 0.0322422 0.851557 -0.373716 0.0866678 0.0889859 -0.170215 3.08124 0.127324 -0.534781 -0.479612 -0.165534 0.540521 0.568844 -0.207861 1.08635 -1.14969 -1.67802 -0.214938 0.196531 -0.271812 2.02477 0.0730247 0.0825571 0.951805 0.263774 0.941494 0.0695215 2.71821 -3.54796 -1.39088 0.559134 2.372 1.21165 -0.285395 2.11542 0.0435102 -0.132147 -1.15565 1.08215 0.175584 -1.96578 5.75848 7.06797 -9.20219 1.98067 -1.76243 -1.75038 1.76762 -1.82642 3.08911 -4.78624 0.56522 -0.472552 0.32907 0.871061 -5.22029 0 0 0 0 0 0.121243 0.261902 0 0 0 0 0 0 0 0.0283327 0 0 0 0 0.0869431 0 0.0123198 0.0108684 0.194698 0 0 0.00883448 0 0 -0.0681279 0.28491 0 0 -0.00828211 0.0469095 0 -0.0316768 0 -0.0247021 0 0 -0.00870181 0 0 0.286324 0 0 0 0 0 0 0 -0.0799866 0 0 -0.206075 0 0 0 0 0 0 0 0.104908 0 0.769713 0 0.0131415 0 0 0.0643731 0.353092 0 0.0921795 0 0 0 -0.523212 0 -0.230059 0 0 -0.134064 0 0 0 -0.0810579 0 0 0 0 0 0 -0.252012 0 -0.24105 0 0 0 0 -0.00750811 0.749959 0 0 -0.293515 0 -0.0353457 0 0.00263224 0 0 0.0396058 0 0.473994 0.0220463 -0.00298695 0.00642713 0 0 0.012125 0 -0.67863 0 2.64764 -0.149566 0 0.25474 1.34226 -0.00207603 0 -0.00356908 0 0 0.0831481 0 -0.341139 -0.898704 0 0 -0.0773618 0 0 -0.327115 -0.94379 0.114307 0 -0.321594 0 0.0816425 0.061497 -0.0693996 0.0269099 -0.0324685 -0.157356 0.0176721 0.0227044 -0.179305 -0.927843 0.0102126 0 0 0 0.167466 0.00522887 0 0 0 0 -0.180352 -19.2829 0.918456 -4.26404 -0.0364713 0.298263 -2.00811 0.0673564 -0.027734 0.119802 -0.200448 0 0 0 0 0 0 +159 0 -1.0425 -0.42706 -0.0680125 -0.0887788 -0.135886 0.184293 -0.136377 -0.567282 -0.412904 1.20176 0.139726 0.857253 0.0278627 1.42047 0.050058 -0.874003 -3.8379 0.270892 0.0431236 0.895786 0.0769996 0.305789 -0.0360472 0.454577 -0.214982 -0.320548 0.0165635 -0.2367 -0.687318 0.253804 -0.131206 0.322656 1.10403 -0.219001 -0.00753527 0.00738572 -0.0811394 5.26112 -0.0216101 0.298043 0.0995304 -1.68671 -0.0642186 5.05374 0.298561 0.250461 -0.495561 0.245946 0.130096 -0.83202 0.554489 5.15672 -0.0871306 0.0719109 -0.237405 2.36177 0.159639 0.0922824 -0.621076 -0.170159 0.42368 -0.0455363 1.08462 2.06759 0.912207 0.174793 -0.776117 -0.306359 0.194047 -0.664924 -0.209726 0.110099 0.401338 0.993753 0.765301 2.04473 -20.2868 -5.92165 0.034791 -4.3761 2.60261 -3.90116 -1.31964 0.927868 -1.06088 0.505848 -0.351853 0.27511 -0.241797 -0.5572 2.97798 0 0 0 0 0 -0.0680125 -0.0887788 0 0 0 0 0 0 0 -0.00652003 0 0 0 0 -0.0397283 0 -0.0048914 0.0227655 -0.0598304 0 0 0.293969 0 0 0.0644192 0.761927 0 0 0.0459696 0.132009 0 0.116465 0 0.0784766 0 0 0.0140309 0 0 0.422577 0 0 0 0 0 0 0 0.119397 0 0 0.23169 0 0 0 0 0 0 0 0.162479 0 1.83847 0 -0.057711 0 0 0.00750411 0.602863 0 -0.00532705 0 0 0 -0.757562 0 -0.0180205 0 0 -0.211303 0 0 0 0.0258952 0 0 0 0 0 0 -0.135886 0 0.184293 0 0 0 0 0.186028 -0.494064 0 0 -0.0822416 0 0.00601411 0 -6.38946e-05 0 0 -0.120706 0 -0.0476054 0.0438026 -0.0947034 -0.0125475 0 0 0.0306378 0 -0.00536623 0 2.62276 0.214313 0 0.384835 0.357678 -0.00541714 0 0.022264 0 0 -0.0635324 0 0.280269 0.809969 0 0 0.0932974 0 0 0.192382 -1.02397 0.320867 0 -0.572325 0 0.0345827 0.00902172 -0.128932 -0.186305 0.0312945 0.33028 -0.279912 0.0207689 0.983162 2.69196 0.0117583 0 0 0 -0.133029 -0.0238062 0 0 0 0 0.208841 -12.8521 0.0303149 -2.33528 -0.462936 0.447489 -1.24105 0.0285407 -0.0272588 0.130486 -0.330785 0 0 0 0 0 0 +160 0 -1.1838 -0.585628 -0.0151131 -0.0270864 -0.231741 -0.147699 0.268086 2.58805 -0.0831244 -0.00729962 -0.165829 -0.823936 0.00614407 -1.43055 -0.073122 -2.46566 -10.5703 -0.0172534 -0.175077 0.391257 -0.0746131 0.321855 -0.00793732 -0.0684073 0.303386 -0.827064 -0.27857 0.0775831 1.36583 -0.389999 -0.0280848 -0.346353 1.63025 -0.527188 -0.0601437 -0.0379269 -0.881819 8.2111 -0.460393 -0.0224471 0.0216046 -2.04267 -0.105178 -3.8403 0.0626075 -0.0367633 0.284778 -0.861827 0.238609 -3.76589 0.711066 4.82064 0.264664 -0.24588 0.14222 2.0716 0.530788 0.141111 0.0510732 -0.0350023 -1.4964 -0.429628 -0.624125 -0.794709 1.96595 0.585749 1.25855 -0.985987 0.0388221 0.964386 -0.324643 -0.569658 0.902304 -0.0118638 0.30107 1.79263 -41.9444 -3.08127 -11.3318 -3.90897 5.89525 -17.8828 0.203357 0.328254 -0.932152 -4.35864 -0.0737826 0.326305 -0.940444 2.19768 -5.91781 0 0 0 0 0 -0.0151131 -0.0270864 0 0 0 0 0 0 0 0.017906 0 0 0 0 0.0136245 0 0.00278106 -0.124656 0.0979516 0 0 -0.324402 0 0 -0.0186388 -2.01972 0 0 -0.0222861 -0.513328 0 -0.0645435 0 -0.0610187 0 0 -0.00346992 0 0 -0.0164044 0 0 0 0 0 0 0 -0.0849474 0 0 -0.155532 0 0 0 0 0 0 0 -0.0268239 0 0.189362 0 -0.00479269 0 0 0.107197 -0.01724 0 0.076974 0 0 0 0.0337864 0 -0.0907304 0 0 0.00418054 0 0 0 -0.0410539 0 0 0 0 0 0 -0.231741 0 -0.147699 0 0 0 0 0.276284 -0.397666 0 0 0.29161 0 0.0377344 0 -0.00783976 0 0 0.396206 0 0.49995 0.123438 0.0936609 0.0418773 0 0 -0.103396 0 0.31821 0 5.44454 0.0587871 0 0.827172 1.58098 0.0112165 0 0.0429821 0 0 -0.0358631 0 0.431885 0.458309 0 0 0.0243016 0 0 0.259898 -4.84205 0.231277 0 0.546455 0 -0.931905 0.0454692 -0.142819 0.0132216 -0.219124 -0.367632 -0.300723 0.0622326 -0.175872 -0.24362 0.183638 0 0 0 -0.104606 -0.079126 0 0 0 0 0.0882244 -47.913 -1.22348 -10.7492 -0.660016 0.516825 -3.60282 -0.144949 0.0540945 -0.0737943 -0.656445 0 0 0 0 0 0 +161 0 0.339586 -0.315958 0.00334335 0.109568 -0.182859 -0.113729 0.32791 0.953143 0.017526 0.249747 0.0969979 -1.05718 -9.74574e-06 -1.57009 0.000577854 -2.55712 -9.7042 0.0647212 -0.00165103 -5.00417 0.0085207 0.147495 1.24865e-05 0.0865982 -0.0289811 -0.801007 -0.00760015 -0.393726 -1.98242 -0.219845 0.00048311 0.0560741 0.250278 -0.0346601 -0.00854074 0.00275031 -0.112019 0.867342 0.18614 -2.38274 -0.000388422 -0.505886 0.00524046 -4.61538 -0.0147019 -0.93624 -0.931895 0.0128785 -0.00995073 -1.91272 0.158874 -1.06753 0.00348937 -0.00336638 0.0194019 -2.07287 -0.0485194 0.00462186 -0.0787012 0.000560246 -1.17194 2.57475 0.201508 -0.388988 0.286732 -0.717775 0.095072 -0.145903 -0.000574166 0.119912 0.0813956 0.133517 0.128877 -0.89841 -0.294997 0.635963 -1.1574 -0.502112 -1.74253 -0.278588 0.266475 -0.628696 -0.193464 0.11173 -0.247847 -1.12282 8.73753e-05 -0.00121786 0.0186818 -0.251579 3.44947 0 0 0 0 0 0.00334335 0.109568 0 0 0 0 0 0 0 0.000224801 0 0 0 0 0.000376616 0 2.59141e-06 0.00073986 0.0105359 0 0 -0.0556317 0 0 -0.00211737 -0.149011 0 0 -0.00832397 0.00299105 0 -0.0268688 0 -0.00205912 0 0 -0.000305137 0 0 -0.188126 0 0 0 0 0 0 0 -0.0406248 0 0 -0.0174256 0 0 0 0 0 0 0 -0.021773 0 -0.0590394 0 0.0221682 0 0 -0.0164296 -0.0599221 0 0.0305825 0 0 0 0.342919 0 0.0209639 0 0 0.0888677 0 0 0 -0.0042665 0 0 0 0 0 0 -0.182859 0 -0.113729 0 0 0 0 0.499429 -0.339485 0 0 -0.224415 0 -0.0106783 0 -0.00974107 0 0 -0.928852 0 0.538463 0.211076 -0.0710118 -0.133128 0 0 -0.136331 0 -2.29106 0 0.0469392 0.133854 0 1.2489 0.484725 -0.00128658 0 0.0912542 0 0 -0.0272713 0 -0.510939 -1.80069 0 0 -0.26028 0 0 -0.51138 -2.49442 -0.542472 0 -2.76176 0 -0.428975 -0.0326172 0.143516 0.0434175 -0.121443 -1.29971 0.0437152 -0.0245688 -0.155176 -11.1334 -0.0367088 0 0 0 0.041528 0.0310395 0 0 0 0 0.00786053 -0.919146 0.949979 -3.66421 0.071842 -0.0019946 0.200887 0.0041682 -0.015354 0.122865 -0.631997 0 0 0 0 0 0 +162 0 0.782258 -0.186616 0.00179167 0.044879 0.0521036 -0.309429 0.412017 0.131424 0.0106277 -0.00922022 0.0159578 -0.584648 -5.32045e-06 -0.549376 -0.00111927 -2.20316 -7.58952 0.0068515 -0.00332321 0.122836 0.000137757 0.281976 6.93908e-06 0.0166131 0.293321 -0.869749 -0.000359139 0.860357 0.58672 -0.279873 0.000277948 -0.0439956 -0.184939 -0.00508664 0.360066 0.00063182 -0.0502974 -4.19552 0.0570828 -0.734562 -0.000205735 -0.070088 0.0019071 -2.17271 -0.00738553 -0.984127 0.795253 -0.123857 -0.00388652 0.108398 -0.0182997 5.23083 0.00371764 -0.00328559 0.0308421 1.42295 -0.0087179 -0.00653795 -0.0357228 0.000300933 -0.952964 0.544082 -0.487978 0.606945 0.0788561 -0.451601 -0.331763 -0.0814834 -0.000350921 -0.0649976 -0.00311775 0.0327345 0.0206978 0.303096 -0.778499 -0.274783 11.1914 0.580807 2.32638 0.498072 -0.783489 5.0024 -0.0635492 -0.0347057 0.111468 0.0371946 4.3893e-05 -0.000503556 0.00468206 -0.0231349 -1.02091 0 0 0 0 0 0.00179167 0.044879 0 0 0 0 0 0 0 0.000492775 0 0 0 0 0.000328621 0 1.7845e-05 0.000462572 0.0112348 0 0 -0.0420518 0 0 -0.0012956 -0.0632778 0 0 -0.00661617 0.0112654 0 -0.0291891 0 -0.00122042 0 0 -0.000192827 0 0 -0.130135 0 0 0 0 0 0 0 -0.0170851 0 0 -0.0345337 0 0 0 0 0 0 0 -0.0170564 0 -0.150126 0 0.0126856 0 0 -0.0076772 -0.0630611 0 0.0131044 0 0 0 0.255358 0 0.0047614 0 0 0.0448029 0 0 0 -0.00482835 0 0 0 0 0 0 0.0521036 0 -0.309429 0 0 0 0 -0.0557099 0.213835 0 0 0.0413666 0 0.00611653 0 0.00586372 0 0 -0.20499 0 0.676848 -0.0430183 -0.00221675 -0.0254472 0 0 0.0490537 0 -4.69358 0 -4.2097 -0.792317 0 -0.362617 -0.103743 0.00138708 0 0.000275402 0 0 0.0259423 0 -1.58984 -1.18941 0 0 -0.133153 0 0 0.208709 0.57351 0.216745 0 0.773286 0 0.582565 0.0621581 -0.054907 0.23795 -0.0611183 -0.110784 -0.270647 0.0535042 -0.191936 1.74939 -0.0104665 0 0 0 0.00228443 -0.0333688 0 0 0 0 -0.0458637 25.1243 0.878547 2.86341 0.495672 -0.499006 2.47426 -0.0790872 0.0498748 -0.0331487 0.215208 0 0 0 0 0 0 +163 0 0.172391 0.111339 0.000265754 0.0101964 0.0409577 0.0207388 -0.512615 -0.696363 0.00126028 0.0862341 0.00852795 -1.00141 -7.6415e-07 -1.8001 -8.91411e-05 -0.610195 -1.79047 -0.0258525 -0.000522508 -0.799614 -0.00166717 -0.386689 9.65892e-07 0.0187863 -0.358949 0.0348573 -0.0016075 0.00890994 -0.269708 -0.487841 3.63533e-05 -0.00166969 -0.532558 -0.0145704 -0.262105 0.000244615 0.00802231 -0.0803699 0.0246535 -0.056559 -3.11342e-05 0.0757172 0.000621212 -2.9819 -0.00122161 0.34665 -0.0935264 -0.0169242 -0.00112275 -0.749107 0.0117636 7.47484 0.00075964 -0.000761978 0.0145613 6.08398 -0.0293294 -0.0443985 -0.0404966 4.4457e-05 -0.32323 1.49755 -0.122115 0.517054 -0.0014 0.278429 -0.171137 0.0322113 -4.09926e-05 -0.149486 -0.0430107 0.0240455 -0.0458155 3.95716 -0.284134 -0.12068 -0.777459 0.0543001 -0.190395 -0.0672275 0.0363954 -0.647911 -0.084925 0.0247204 -0.131008 0.810196 7.26018e-06 -0.000128494 0.00186427 -0.0336436 0.4693 0 0 0 0 0 0.000265754 0.0101964 0 0 0 0 0 0 0 0.000939639 0 0 0 0 0.000136355 0 1.82711e-05 -0.000267845 0.00605101 0 0 -0.0221672 0 0 -0.00028268 -0.0892851 0 0 -0.00307064 -0.00938074 0 -0.00373906 0 -0.000542079 0 0 -7.53187e-05 0 0 -0.0111841 0 0 0 0 0 0 0 -0.00817641 0 0 -0.00715172 0 0 0 0 0 0 0 -0.00402342 0 -0.0485341 0 0.00196513 0 0 -0.000345973 -0.0169898 0 0.00195741 0 0 0 0.0183924 0 -0.00318931 0 0 0.00711525 0 0 0 -0.00250849 0 0 0 0 0 0 0.0409577 0 0.0207388 0 0 0 0 -0.187429 -0.112047 0 0 -0.0840651 0 -0.00977632 0 -0.00687592 0 0 -0.755016 0 -0.619723 -0.0572291 -0.0565057 -0.0731523 0 0 -0.0727554 0 -3.39346 0 -0.53055 -1.14873 0 -0.289454 -0.835984 -0.00623717 0 -0.0302292 0 0 -0.0109397 0 -2.40238 -0.846644 0 0 -0.0622977 0 0 -0.143113 -0.556674 -0.000578536 0 0.42625 0 0.446701 -0.0213417 0.0303095 -0.240056 -0.0123615 -0.976683 -0.198373 -0.0719156 0.114324 6.92862 -0.0185106 0 0 0 0.0604434 -0.0127501 0 0 0 0 -0.0265868 4.56623 0.463784 1.15123 0.0208962 0.0570036 -0.649003 -0.0448734 -0.0303319 0.0949772 0.00300722 0 0 0 0 0 0 +164 0 0 0 0 0 -0.750872 -0.197359 0.115565 2.33916 0 0 0.0980112 -0.277776 0 -1.06896 0.0332715 0 0 0 0.156427 1.14926 0 0 0 0 0.424114 0 0 0.268671 -3.08676 -0.344026 0 0.0593845 0 0 0.0801988 0.00634937 0 0 1.35763 0.348676 0 0 0.27858 -1.07948 0 -0.106177 -0.282514 0.337216 -0.395921 0.518964 -0.230338 0 -0.225826 0.17771 -0.273569 1.05284 0.135955 0.333577 0 0 -1.23736 -4.49913 0 -0.340152 -0.251053 0.00386248 0 0 0 0 -0.148293 0.977116 0 -0.839085 0.733347 0 0 0 -2.81254 0 -1.889 3.16758 0 -0.66642 0.161107 -1.66264 0 -0.743505 0.614856 -3.11722 9.9711 0 0 0 -0.288218 -0.0397015 0 0 0 0.0147945 0 0 0.00333691 0 0 0.011693 0 0 0 0 -0.0841865 0 -0.00936996 0 0.041762 0 0.067279 0.0250368 0 0.00495366 0 0 0.204564 0 -0.00996513 0 0 0 0 -0.00797922 0.0311411 0 -0.00435141 0 0 0 0 0 0 0 0 0 0 -0.0102403 0 0 0 0 0 0 0 0 0 0 -0.252411 0 0 0 -0.0547076 -0.0182576 0 -0.0366782 -0.252525 0 -0.0745294 0 -0.213874 0 0 0 -0.0172208 0 0 -0.19123 0 0 0 -0.0884346 0 0 0 0 -0.175667 0 -0.750872 -0.288218 -0.197359 -0.0397015 0.0774979 0.131906 -0.205434 0.358413 0.321449 0.0191455 0.0485723 0.596808 0.00233274 0.0938165 -0.0239206 -0.00156687 0.0429206 0.140602 -0.343242 0.0694648 0.16986 0.240106 0.228021 0.0272316 0.347746 -0.180499 0.0711863 0.027618 -1.71605 0.486869 2.04134 -1.10315 -0.00279534 1.33135 0.691771 0.0329691 0.00758102 0.0545178 0.0759375 -1.19137 0.00595067 -0.0310542 -2.3009 0.18261 0.00557409 0.0545531 0.232181 0.0905094 0.231479 -0.593189 1.47689 0.140967 -0.0809371 0.575167 0.00633099 0.608797 -0.216033 0.062363 -0.854978 0.0159446 0.554574 -0.413227 -0.448702 0.0130424 7.27299 0.119484 -0.66473 0.0393636 0.0402277 0.285649 -0.0954596 -0.092937 -0.00924729 0.0589833 -0.022651 -0.175335 -20.5462 -4.43966 -5.65688 -1.04132 -1.72284 4.05778 -0.196494 -0.285066 0.402201 -0.206 -0.0459738 -0.133621 0.227122 -0.564657 1.44715 0 +165 0 0 0 0 0 0.447365 0.475967 -1.70449 -4.06838 0 0 -0.249098 0.796549 0 0.000520222 -0.1399 0 0 0 -0.214469 3.24568 0 0 0 0 -0.920558 0 0 -0.846513 -3.89726 0.433842 0 -0.798392 0 0 -0.456801 -0.063285 0 0 -0.759831 1.20821 0 0 -0.244097 1.56671 0 0.819588 -1.52765 -1.03862 0.484063 -1.06902 0.845597 0 0.337426 -0.222692 -0.287439 -0.934685 -0.0377776 -0.279682 0 0 -1.62343 -0.738393 0 -0.430543 0.100252 -0.223666 0 0 0 0 -0.857235 -0.743979 0 -0.00722231 0.665426 0 0 0 7.46741 0 1.74165 5.39334 0 0.509463 1.55041 4.68759 0 0.443759 1.54621 -1.21223 10.0779 0 0 0 0.0399023 0.0196682 0 0 0 0.0178612 0 0 -6.91498e-05 0 0 -0.0165754 0 0 0 0 0.0160683 0 0.00384548 0 -0.0868132 0 0.232888 0.353923 0 -0.00649099 0 0 -0.26125 0 0.0451408 0 0 0 0 0.0356532 -0.0415361 0 0.00710531 0 0 0 0 0 0 0 0 0 0 -0.0211822 0 0 0 0 0 0 0 0 0 0 0.17112 0 0 0 0.0313786 -0.0316787 0 -0.120972 0.0114887 0 0.0281627 0 0.175236 0 0 0 0.0937847 0 0 0.247563 0 0 0 0.0506407 0 0 0 0 0.212066 0 0.447365 0.0399023 0.475967 0.0196682 0.347749 0.100771 0.175367 0.131909 -0.266788 -0.0203878 -0.00417461 -0.565193 -0.00268199 -0.0950396 0.0267346 -0.0350224 0.0187101 -0.125516 -0.00766213 0.185356 0.258914 -0.185527 -0.183553 0.00617885 0.107512 -0.135498 -0.333323 -0.00168183 -0.776494 -0.180728 1.78707 0.696138 0.00356187 -0.537178 0.849588 -0.0323092 -0.00340763 -0.00915805 -0.0284399 -0.813067 -0.00940668 -0.0182862 -0.203762 0.563364 8.10491e-06 -0.027372 0.0190126 -0.00515355 0.297566 -0.745772 -6.07816 0.141246 -0.125295 -2.00982 -0.0530142 -0.894748 0.0818311 -0.207506 0.399385 -0.0502482 -0.630206 -0.831814 0.0209999 0.116064 -3.72902 -0.288197 -0.999919 -0.0144282 0.0818061 -0.0737248 0.22215 0.0500887 0.0468936 -0.0567958 -0.0758333 -0.0190086 -17.9869 1.58702 0.868583 0.339492 1.04251 1.54855 0.180711 0.0276004 0.585386 0.407667 0.0410409 -0.00212634 0.219735 -0.122895 0.929237 0 +166 0 0 0 0 0 -0.33427 0.0498883 0.571309 1.63144 0 0 -0.0277652 0.797054 0 1.88502 -0.0043754 0 0 0 -0.0107258 -0.352191 0 0 0 0 0.143889 0 0 0.152817 5.82146 0.518693 0 -0.00559066 0 0 -0.0108612 0.00234693 0 0 -0.488027 0.760866 0 0 -0.0396184 2.50123 0 0.664491 1.26772 0.00320115 0.130147 0.903897 0.169173 0 0.0305259 -0.120599 0.254757 0.928419 0.726677 -0.221549 0 0 0.0553402 3.01113 0 0.562932 0.128102 -0.864281 0 0 0 0 0.105169 0.166953 0 -1.07421 -1.68825 0 0 0 -3.29984 0 0.0139151 -7.33123 0 0.0527709 -1.93282 -3.10662 0 0.344363 -2.31502 4.71525 -20.3364 0 0 0 0.0425123 0.00454843 0 0 0 0.00620027 0 0 5.46011e-05 0 0 0.000795371 0 0 0 0 -0.0121909 0 -0.000887321 0 0.0122266 0 0.122009 0.26714 0 0.00103501 0 0 0.0586685 0 0.0221522 0 0 0 0 0.0898577 0.00854911 0 0.00785127 0 0 0 0 0 0 0 0 0 0 -0.00729007 0 0 0 0 0 0 0 0 0 0 -0.0446979 0 0 0 -0.0277049 -0.0276015 0 0.0761857 -0.0902695 0 -0.0315944 0 -0.00262758 0 0 0 -0.0152493 0 0 -0.05158 0 0 0 -0.00916596 0 0 0 0 -0.0623769 0 -0.33427 0.0425123 0.0498883 0.00454843 -0.661963 -0.0973685 0.0167455 -0.363621 0.659995 -0.00118744 0.00661279 -0.106068 -0.000126424 -0.00895207 0.00136719 0.0227572 0.0197151 -0.0109542 0.146567 -0.67955 0.204403 0.113293 0.0271954 0.0655509 0.0980992 0.310442 0.29135 -0.00857911 5.10873 -0.391658 -0.626702 0.794902 0.000119385 0.342811 -0.232523 0.00037544 -0.00649185 -0.0345029 -0.063421 2.07954 0.0593723 0.0426946 2.01939 -0.153166 0.00161281 -0.0411464 0.0881853 -0.0655355 -0.108916 0.50041 5.36633 0.125447 -0.070187 1.32324 0.00387665 1.57014 0.0594112 0.405395 -0.0305789 -0.00155135 1.97281 0.709811 0.184157 0.508445 6.71866 0.119635 0.576616 -0.0295597 -0.356746 -0.122072 -0.00950072 0.0938972 -0.00284453 0.0534273 0.0963824 0.00662694 6.30777 0.974712 -1.44552 0.157586 1.32872 -7.47673 0.0250479 0.298713 -1.15501 -0.576545 0.00358178 0.185613 -0.610824 0.893288 -2.52842 0 +167 0 -1.37893 -0.466003 -0.0447667 -0.255434 0.286479 -0.0680473 -0.738 -1.89357 -0.295993 1.4855 -0.309345 0.388088 0.00496551 1.69341 0.0188356 -0.248593 -0.761461 0.179257 0.0434313 0.698272 0.0369711 0.422874 -0.00636838 0.317379 0.0280556 -0.409612 0.0601632 0.353013 0.368548 0.208285 -0.0465281 0.0095741 1.13157 0.154826 0.125747 -0.0363707 0.147282 5.12727 -0.432386 0.134535 0.0374801 -0.0757516 -0.0550587 2.60652 0.251271 -0.205211 0.433692 0.122873 0.14757 0.281473 0.768446 2.33439 -0.0813201 0.0775314 0.0669163 -2.33948 -0.280907 0.240302 -0.460672 -0.0747918 1.9177 -1.84696 -0.474474 0.048496 -0.332093 -0.174493 -0.285009 0.184469 0.0754577 -0.999797 0.485563 -0.123467 -0.12397 -2.26533 -0.6934 -0.0742275 -16.3814 -5.61454 2.67937 -2.81926 2.13595 -4.77505 -0.740001 0.646382 -1.55344 2.011 -0.0931052 0.117312 -0.309485 0.469633 -0.707567 0 0 0 0 0 -0.0447667 -0.255434 0 0 0 0 0 0 0 0.0197369 0 0 0 0 0.0281216 0 0.00387563 -0.0196586 0.14426 0 0 0.00212441 0 0 -0.0208523 -0.372046 0 0 0.0126523 -0.0877432 0 -0.0461016 0 0.00100349 0 0 0.00255986 0 0 0.157827 0 0 0 0 0 0 0 -0.0630538 0 0 -0.0652096 0 0 0 0 0 0 0 -0.063274 0 -0.325726 0 0.0175122 0 0 -0.0277446 -0.188559 0 -0.00911789 0 0 0 -0.278051 0 -0.164956 0 0 -0.0834091 0 0 0 -0.0603508 0 0 0 0 0 0 0.286479 0 -0.0680473 0 0 0 0 -0.0627843 -0.654145 0 0 0.819244 0 0.0870021 0 -0.0257847 0 0 0.264897 0 1.11161 -0.122372 0.274842 0.0245182 0 0 -0.275732 0 -3.47382 0 6.06183 0.3031 0 -0.686131 2.5658 0.0270768 0 -0.0282585 0 0 -0.0599884 0 0.14879 -0.160539 0 0 -0.0279804 0 0 -0.054511 -5.68479 0.123257 0 -1.16701 0 -0.826199 0.115946 -0.243504 -0.772629 0.118349 -0.0774503 -0.589177 0.00931799 0.236455 -6.50953 -0.0551639 0 0 0 -0.158802 -0.0789879 0 0 0 0 0.175229 -52.9569 -7.54282 0.867031 -1.2259 0.855096 -2.828 -0.194526 0.151924 -0.423733 0.419407 0 0 0 0 0 0 +168 0 0.659004 -0.10701 0.0292821 0.105828 0.0797816 -0.254599 0.46905 0.659831 0.245543 -0.931013 0.105396 -0.62388 -0.00334526 0.389937 -0.0129734 -0.807181 -3.10031 -0.177084 -0.05358 1.24136 -0.0324979 0.0859821 0.00435887 -0.230974 0.261389 -0.288982 -0.029315 0.572103 0.0987465 -0.25939 0.0340876 -0.0771357 -0.249039 -0.0745013 0.278133 0.0100658 -0.0397628 -1.93841 0.266947 -0.13505 -0.0252074 0.0854946 0.0312969 -0.639339 -0.16669 -0.65377 0.390038 -0.419365 -0.0822776 0.806152 -0.396252 -1.62788 0.0845159 -0.0844657 -0.0306876 2.6657 0.209056 -0.222745 0.329385 0.0543968 -0.608672 1.49073 0.802279 1.04283 0.154109 0.120143 -0.651998 -0.277166 -0.0643667 0.876327 -0.358369 0.0983731 -0.0763598 1.6179 0.229917 0.187234 7.81231 3.9325 -2.50545 1.50474 -1.0832 1.74408 0.514304 -0.402449 0.8953 -0.940733 0.0617646 -0.074138 0.141717 -0.241631 -0.189581 0 0 0 0 0 0.0292821 0.105828 0 0 0 0 0 0 0 -0.0106708 0 0 0 0 -0.0174966 0 -0.00225668 0.00843237 -0.0827231 0 0 -0.0639805 0 0 0.0194301 0.110093 0 0 -0.0174379 0.0286526 0 0.0482337 0 -0.0115885 0 0 -0.00335443 0 0 0.104784 0 0 0 0 0 0 0 0.073924 0 0 0.0483519 0 0 0 0 0 0 0 -0.0385962 0 -0.684387 0 -0.0349714 0 0 0.00690145 -0.162925 0 -0.115878 0 0 0 -0.175359 0 0.0553369 0 0 -0.0638693 0 0 0 0.0345114 0 0 0 0 0 0 0.0797816 0 -0.254599 0 0 0 0 0.296398 0.601843 0 0 -0.324724 0 -0.0345757 0 0.0176069 0 0 0.302896 0 0.498664 0.0531564 -0.173104 0.038823 0 0 0.151144 0 2.33161 0 -0.679838 -0.0408474 0 0.186127 0.450834 -0.0124 0 0.0483017 0 0 0.0600252 0 1.18273 -0.249794 0 0 -0.0232992 0 0 -0.0117846 4.84256 0.0768037 0 1.0711 0 0.916073 -0.038863 0.0870883 0.350923 0.0481497 0.331742 0.343289 -0.0395099 -0.418115 1.9953 -0.0133595 0 0 0 0.123231 0.062902 0 0 0 0 -0.13676 10.2461 3.37388 -2.27098 0.353203 -0.258489 0.468389 0.036003 -0.0360685 0.191883 -0.148323 0 0 0 0 0 0 +169 0 -1.08753 -0.23788 7.20825e-05 0.00636075 -0.379624 -0.152321 -0.276502 1.01948 -0.00456769 -0.594547 -0.0746064 -1.11253 1.455e-06 -1.60694 0.000947603 -1.82879 -7.30796 -0.0815627 -0.00790359 -1.75093 -0.00616483 -0.181014 -8.51988e-06 -0.030752 0.0902317 -0.430353 -0.0086731 -0.159424 -0.908042 -0.456055 -0.000279936 0.00648075 -0.295957 -0.0442393 -0.0785965 -0.00710496 -0.0721482 0.430684 -0.218663 -1.20361 6.81752e-06 -0.38729 -0.0212326 -3.70082 -0.000178064 -0.715008 -0.48075 -0.0873837 0.056082 -1.09875 0.037507 5.09373 0.0079562 -0.0147252 -0.262913 2.45148 -0.903941 -0.652088 0.125491 -0.000411382 -0.923024 3.32657 0.766448 -0.382258 0.178383 0.00189376 -0.0532848 -0.232777 0.00133639 0.478021 -0.342018 -0.266117 0.0176074 3.17369 0.780368 -0.426809 -3.3401 0.452688 -2.90284 0.104709 -0.162857 0.66433 0.260469 -0.475262 1.62891 -2.36795 6.59794e-05 0.040485 0.168402 0.0754523 1.74333 0 0 0 0 0 7.20825e-05 0.00636075 0 0 0 0 0 0 0 0.00945441 0 0 0 0 0.00547028 0 0.000934463 0.0227815 0.054713 0 0 0.141278 0 0 -0.00626315 0.760701 0 0 0.0125503 0.152749 0 -0.0293304 0 0.0144033 0 0 0.0013085 0 0 0.00663491 0 0 0 0 0 0 0 -0.0441894 0 0 -0.0797589 0 0 0 0 0 0 0 0.00268009 0 -0.144509 0 0.00146818 0 0 -0.0484243 -0.0219886 0 0.0315076 0 0 0 -0.015752 0 -0.0512377 0 0 0.000226293 0 0 0 -0.0230527 0 0 0 0 0 0 -0.379624 0 -0.152321 0 0 0 0 0.542234 -0.407322 0 0 -0.354494 0 -0.0413207 0 -0.0126487 0 0 -0.534045 0 0.0152868 0.152327 -0.0762073 -0.103713 0 0 -0.205063 0 -8.21343 0 3.06047 -0.726437 0 1.53588 0.716197 -0.00753272 0 0.0544279 0 0 -0.0202309 0 -2.40408 -1.53865 0 0 -0.264 0 0 -0.042333 1.51729 -0.715738 0 -0.964443 0 -0.444008 -0.11823 0.200322 0.310933 -0.24228 -0.44389 0.349137 0.0829949 -1.46261 -6.55216 0.0855144 0 0 0 -0.187115 0.0575866 0 0 0 0 -0.116995 -28.2757 0.219314 -9.19859 -0.196693 0.00218135 -1.67707 0.24975 -0.254881 0.299455 -0.929783 0 0 0 0 0 0 +170 0 0 0 0 0 0.0517455 0.00882616 0.208379 -0.208067 0 0 -0.114978 0.605077 0 1.57026 -0.0513957 0 0 0 -0.0328071 -1.24158 0 0 0 0 0.121412 0 0 0.426998 2.24486 0.133267 0 0.290408 0 0 0.0931503 -0.0493745 0 0 -1.54859 0.399429 0 0 -0.454376 4.458 0 0.202292 0.831175 1.61 0.846716 -1.66933 0.114507 0 0.606343 -0.0136235 0.287128 -0.0773819 -0.0417352 -0.615391 0 0 0.786531 -1.62993 0 -0.651971 0.919704 -0.294002 0 0 0 0 0.400428 -0.849121 0 -0.32055 -1.21155 0 0 0 0.563945 0 1.86355 -3.22482 0 0.716445 -0.342838 -0.93837 0 1.7604 -1.48131 2.79763 -5.10653 0 0 0 0.26784 0.0788471 0 0 0 -0.0544833 0.0263629 0 -0.00704016 0 -0.00675549 -0.0858068 0 0 0 0 -0.0388431 0 -0.0305045 0 -0.208289 0 -0.400323 -0.866428 0 -0.0114814 0 0 -0.251471 -0.00145005 -0.160543 0 -0.00201919 0 0.00127556 -0.338739 -0.054242 -0.0251651 -0.0615311 0 -0.000376885 0 0 0 -0.000121812 0 0 0.00276454 -0.00202591 -0.0486601 0.0124184 0 0 -0.0173786 0 -0.00615343 0 0 0.0569624 -0.0185914 -0.0571504 -0.00666949 0 0 -0.0898613 -0.0481689 -0.0108041 -0.175148 -0.104799 0 -0.175461 -0.0147181 -0.387558 0 0 0 1.28269 0 0.0913173 0.788013 0 0.00790417 0.0643517 0.060608 0 0.000828254 0.00678319 0.00819409 0.0680646 0 0.0517455 0.26784 0.00882616 0.0788471 -0.233058 -0.137176 0.606015 0.157075 0.141006 -0.0877987 0.0297342 -0.407673 -0.018659 -0.07089 0.117106 -0.0362248 0.0188819 -0.333026 0.595831 -0.958639 0.0520581 -0.0160979 -0.213698 0.0755635 0.315812 0.0948828 -0.0309507 -0.0208204 -0.966365 -0.267351 -0.0418946 -0.618945 0.0207097 0.201354 -0.0481825 -0.0289338 -0.00168118 0.00312158 -0.0426662 0.572193 0.0184416 0.0163726 -0.628577 1.15697 -0.0009484 -0.00134107 0.135128 -0.154039 0.00228551 -0.291349 1.79224 -0.701917 0.126895 0.414458 -0.153924 -1.19618 -0.0453418 0.252413 0.112422 -0.0660349 0.267794 0.860756 -0.126592 1.53764 3.5856 -0.0460253 0.0293212 -0.14319 -0.203773 0.140208 0.143249 0.0288365 0.184112 -0.159708 0.0774532 0.533354 0.205906 1.02956 -0.19429 0.843714 0.614005 -1.47133 0.466853 -0.0347294 -0.278929 -0.0379561 0.402603 -0.00437482 -0.264625 0.357494 -0.43672 0 +171 0 0 0 0 0 -0.652281 -0.414892 1.05681 3.25227 0 0 0.1214 -0.205098 0 -0.265988 0.079307 0 0 0 0.294674 2.74187 0 0 0 0 0.842839 0 0 0.947367 0.170949 -0.483796 0 0.381199 0 0 0.432973 0.00952547 0 0 1.30622 -0.228825 0 0 0.350952 1.78189 0 -0.691223 0.769329 0.775543 -0.607616 0.843077 -0.529337 0 -0.141462 -0.0849869 -0.147265 1.32107 0.0708954 1.07557 0 0 -0.0736127 -1.97403 0 -1.09629 -0.645842 -0.460995 0 0 0 0 -0.302431 0.944321 0 1.39661 -0.0395862 0 0 0 -4.72116 0 -1.67261 -0.675027 0 -0.927566 0.190544 -4.60756 0 -1.58063 -0.0117598 -1.05545 -0.454289 0 0 0 -0.203941 -0.022613 0 0 0 0.117997 -0.0142777 0 0.0183689 0 0.00337003 -0.0334786 0 0 0 0 -0.106404 0 -0.0256774 0 -0.0463887 0 0.744784 0.539538 0 0.0033942 0 0 0.239101 0.00168969 0.0715919 0 -0.00728821 0 -0.000859258 0.151523 0.0309192 0.0298994 0.0218302 0 0.000204525 0 0 0 -0.000388364 0 0 -0.00521287 -0.0043473 -0.606264 -0.0139754 0 0 -0.0221394 0 -0.00111148 0 0 -0.0181594 -0.0547604 0.234502 -0.0475696 0 0 -0.0767861 0.0803923 -0.011242 0.188718 0.0662418 0 -0.369015 -0.00604439 0.277391 0 0 0 -0.687293 0 -0.144977 -0.223373 0 -0.0137023 0.000819253 0.0610418 0 -0.00140078 -0.000235906 -0.00237437 -0.122089 0 -0.652281 -0.203941 -0.414892 -0.022613 0.0826453 0.00762266 -0.169818 0.282013 -0.24035 -0.00764147 0.0472605 0.0363528 -0.00189861 0.0140674 -0.00183539 0.0106579 0.0225956 -0.0360172 0.801219 -0.243882 0.0339848 0.176437 0.0378228 0.151575 0.196142 -0.0454959 0.290793 -0.014245 2.30206 0.25004 0.840188 -0.80971 0.00288212 0.819629 0.231324 0.0142679 0.00377671 0.0897455 0.0553295 -0.335554 -0.0612063 -0.000682163 0.547988 1.47713 0.00554931 0.017546 0.212348 -0.0870984 0.286731 -0.695084 1.57248 -0.986646 -0.19219 -3.59161 0.0423314 -0.9105 -0.61769 0.582391 0.135852 -0.277804 -0.394431 -0.197257 -0.0804706 3.07613 -1.51967 0.0120304 -0.512521 -0.0500783 -0.0920405 0.247974 0.068216 0.0269801 0.0439104 -0.145028 0.0674021 0.374716 -4.12942 -0.645457 -3.05633 -0.419352 -0.097625 -0.614774 0.00186594 -0.0260665 -0.0479102 -0.790178 0.0435421 -0.0874248 -0.0567083 -0.0356276 -0.071858 0 +172 0 0 0 0 0 -0.00940225 -0.120923 0.188108 -0.0482217 0 0 0.728356 -1.10461 0 -2.0821 0.122314 0 0 0 0.00900897 -2.04118 0 0 0 0 -0.0301658 0 0 -0.223767 -3.58637 -0.452052 0 0.218124 0 0 0.0633708 0.112412 0 0 1.64035 -1.82689 0 0 0.332297 -5.00457 0 -0.830025 -1.13721 -0.855523 -0.906787 0.702057 -0.137956 0 0.243132 0.313393 -0.0643275 2.9656 1.08015 0.91356 0 0 0.424366 2.21166 0 1.04866 -0.918681 0.321666 0 0 0 0 0.48156 1.66809 0 2.39471 -0.789452 0 0 0 1.21501 0 -1.63866 6.39354 0 -0.631827 1.17168 2.37437 0 -1.06858 1.51402 -3.06035 9.18541 0 0 0 -0.155772 -0.072294 0 0 0 0.130954 -0.0568568 0 0.0171583 0 0.00791973 0.0932243 0 0 0 0 0.122677 0 0.0370515 0 0.340369 0 0.973544 0.484096 0 0.010994 0 0 0.25894 0.00191004 0.123765 0 -0.00320119 0 -0.00279253 0.154583 0.0519738 0.0318718 0.0387994 0 0.000456064 0 0 0 -0.00014198 0 0 -0.0064305 0.000260919 -0.431629 -0.0217307 0 0 0.0279213 0 0.00870659 0 0 -0.0552562 -0.0130884 0.499338 -0.014734 0 0 0.0994797 0.029155 -0.0709056 0.015586 -0.07366 0 0.222092 0.017346 0.409596 0 0 0 -2.00497 0 -0.152427 -0.802077 0 -0.0143564 -0.0647084 -0.0715502 0 -0.00146903 -0.00703594 -0.00845043 -0.0189968 0 -0.00940225 -0.155772 -0.120923 -0.072294 0.346757 0.127245 -0.109639 0.0321817 -1.44648 0.134661 -0.144516 0.0451235 0.0238782 0.00849687 -0.0655747 -0.0921828 -0.132615 0.718888 -0.0417071 2.32726 -0.206063 -0.0367171 -0.431937 0.0107565 -1.104 -0.0653149 -0.668539 0.0522695 -0.903189 -0.18751 0.100019 -0.219291 -0.0156709 -0.547985 -0.219598 -0.0670516 -0.00993669 0.0246015 -0.0362359 -0.453095 -0.253621 -0.0106338 -0.696295 -0.0078584 -0.0173226 -0.0611689 0.0522462 0.351115 -0.266151 -0.423725 1.19071 -0.0568686 0.28015 1.21481 -0.000198902 -0.185049 -0.290326 0.124638 -0.0066416 -0.041094 0.067993 0.626674 -0.054418 0.474287 2.01848 0.0702971 -0.0329437 0.0217409 -0.226414 0.554686 -0.00654305 0.118714 -0.311004 0.137131 0.0341953 0.10535 -0.491582 -0.177091 1.42032 -1.82708 0.588666 1.2538 -0.503108 0.0890161 0.260276 0.128971 -0.869081 0.359386 0.0209438 -0.0849598 0.193906 0 +173 0 0.368868 0.383263 0.0559777 0.335583 -0.134133 0.197698 -0.243495 0.472315 0.384739 -1.43893 -0.10167 -0.114067 -0.00534818 -0.889849 -0.0269331 -0.15147 -0.488895 -0.302569 -0.0351245 1.65243 -0.0192571 -0.490622 0.00450535 -0.264446 -0.287804 0.357499 -0.0860645 -0.547908 -0.285342 0.0407012 0.0424805 -0.40015 -0.792104 -0.449201 -0.385162 -0.0118464 -0.220217 -1.45552 0.16996 1.19326 -0.0472479 -0.050601 0.0229674 -2.1372 -0.375398 0.852935 -0.455851 -0.582428 -0.112112 -0.115918 -0.678963 3.04186 0.0921524 -0.141275 0.321327 0.878053 -0.0374652 0.350391 0.40187 0.0937999 -0.739238 -1.24897 -1.01625 -0.876235 0.178854 0.153347 1.18509 -0.000874074 -0.0937921 -0.224883 0.0962756 -0.131292 0.293001 0.693862 0.316631 0.569996 4.70629 2.30876 1.05311 1.96152 -0.58904 1.7404 1.27291 -0.42868 1.17382 -0.215134 0.246919 -0.0846281 0.369399 -0.146597 0.418904 0 0 0 0 0 0.0559777 0.335583 0.00197793 0 0 0 0 -2.73305e-05 0 -0.0308093 0 0 -0.00203662 -0.0041482 -0.0231756 0 -0.00380312 -0.0623818 -0.176049 0 0 -0.335793 -0.000243395 0 -0.0187998 -1.46822 0 0 -0.0412219 -0.369035 0 -0.0504985 0 -0.0411072 0 0 -0.00493003 0 0 -0.343671 -0.000467587 -0.0341105 0 0.0320862 0.0303364 0 0 -0.21574 0 -0.00105234 0.0522766 0.00352968 0 0 0.00354888 -0.00617317 0 -0.0207384 -0.150326 0.00472828 -0.428652 -0.0225796 -0.0515713 0 0.025207 0.0318625 -0.400475 0.0647499 -0.116313 0 0 0 6.8755 0.498551 1.02979 0.0345266 0.0355876 -0.0137787 0.00137762 0.000962524 0.00314751 0.0255857 0 0 0 0 0 0 -0.134133 0 0.197698 0 0 0 0 -0.0109704 0.320497 0 0 -0.499776 0 -0.0554291 0 -0.0294798 0 0 0.321356 0 -0.80311 0.0541746 -0.100312 0.0463253 0 0 -0.221544 0 3.08689 0 -1.25915 0.526243 0 0.31107 -1.08014 -0.00553215 0 -0.000728578 0 0 0.0131032 0 0.918051 0.40919 0 0 0.0618808 0 0 -0.114716 -0.285652 -0.0582369 0 -0.746268 0 -0.129384 -0.193023 0.13413 -0.205222 -0.0970521 0.0221285 -0.0341324 -0.0560824 0.555126 -0.983868 -0.0323427 0 0 0 0.107921 0.0857003 0 0 0 0 0.0898844 1.86239 2.45736 -2.72836 0.956152 -0.592439 -0.0714121 0.270174 -0.189476 0.157496 -0.127651 0 0 0 0 0 0 +174 0 -1.03367 -0.351389 -0.0188612 -0.146988 0.0580612 0.0870318 -0.677308 -1.06109 -0.0806603 0.525001 -0.247398 0.615503 0.000987287 1.43327 0.0227001 -0.314781 -1.26121 0.0611461 0.039558 -0.0168124 0.00860863 0.202106 -0.000857767 0.132606 -0.18741 -0.177089 0.0310601 -0.298061 -0.261017 0.457186 -0.00786783 0.181115 0.689533 0.192284 -0.125148 -0.0215986 0.147538 3.27455 -0.33803 0.179921 0.00788686 0.341345 -0.0320454 2.34118 0.0453745 0.306153 -0.288072 0.323178 0.0870716 0.18583 -0.117331 1.26629 -0.0344214 0.12834 0.130984 -0.524639 0.344766 -0.344314 -0.0924873 0.00675636 0.299846 -0.146868 -0.254386 -0.0954491 0.0490268 0.393728 0.562518 0.168713 0.0205229 -0.449628 0.405839 -0.215255 -0.00682165 -2.32893 -0.0377392 -0.0634239 -9.51636 -1.70988 0.972733 -1.20985 1.50224 -2.39704 -0.652661 0.357613 -0.302485 0.994883 -0.0298453 0.114643 0.052536 0.228149 0.383193 0 0 0 0 0 -0.0188612 -0.146988 0.000996894 0 0 0 0 0.000141802 0 0.00841476 0 0 0.000142273 -0.000855926 0.00745695 0 0.000667617 0.0105382 0.0672055 0 0 0.0283304 -3.21066e-05 0 -0.0404461 -0.0361769 0 0 0.00527732 0.0237175 0 -0.164628 0 0.0088639 0 0 0.00141001 0 0 -0.389839 0.00294968 0.0015305 0 0.0238872 -0.0422029 0 0 -0.166577 0 -0.00332933 -0.673402 -0.00158309 0 0 -0.00124008 -0.00556794 0 -0.0037828 0.00331276 0.00082134 0.329846 -0.0510973 0.0151935 0 0.0152088 0.00411683 0.0812438 0.00863062 0.062927 0 0 0 1.14658 0.00105518 -0.0860345 0.00367477 0.0014303 0.0522551 -0.000278192 -0.000196799 4.88795e-05 -0.020949 0 0 0 0 0 0 0.0580612 0 0.0870318 0 0 0 0 -0.254746 -0.0370268 0 0 0.659935 0 0.0591567 0 -0.00129744 0 0 -0.744138 0 0.52226 -0.040638 0.356747 -0.10617 0 0 -0.0980297 0 -7.54981 0 3.13816 0.0561941 0 -0.57484 1.24757 0.0349556 0 -0.0231769 0 0 0.0157642 0 -1.90484 -1.62274 0 0 -0.226401 0 0 0.535517 -3.9575 0.0992308 0 1.81118 0 -0.308657 0.268891 -0.171265 0.0259831 0.0150469 -0.644126 -0.0937114 -0.068679 -3.08253 -6.46205 -0.0286811 0 0 0 -0.313119 0.0115224 0 0 0 0 -0.351434 -20.8623 -3.50278 0.698894 -1.97983 1.6942 -1.81295 -0.342286 0.272829 -0.257819 0.155052 0 0 0 0 0 0 +175 0 0.254638 0.267786 -0.027818 -0.128227 0.153204 0.190617 0.225889 -0.646684 -0.16455 0.975718 -0.143762 1.80383 0.00489093 3.7017 0.0231408 2.15312 11.414 0.235014 0.0346305 5.23804 0.0376862 0.0161047 -0.00357781 0.137115 -0.000249373 0.365587 0.0384874 0.209646 1.33904 0.633968 -0.027568 0.23287 0.0451638 0.190892 0.0352361 -0.0110835 0.0445228 -1.09259 -0.296599 2.26602 0.0436117 0.293244 -0.035699 9.459 0.344575 0.918394 0.662393 0.367373 0.120128 0.711442 0.758183 4.39317 -0.10561 0.185373 -0.0779698 1.55334 0.0668003 -0.305922 -0.432458 -0.140498 0.464275 -2.81554 -0.254203 -0.263213 -0.562599 -1.02804 -0.887695 0.272019 0.0580626 -0.126682 0.218363 0.149339 0.062957 -1.27761 -0.456197 0.532946 7.83646 -1.19572 4.39126 -0.685009 0.435938 0.222575 -0.412322 0.344653 -1.34482 0.80329 -0.226646 0.123918 -0.69331 0.320202 -1.96581 0 0 0 0 0 -0.027818 -0.128227 0.000506517 0 0 0 0 5.07426e-05 0 0.00735299 0 0 0.000854223 0.00215744 0.0140527 0 0.00172965 0.0355571 0.0790479 0 0 0.405306 0.000136693 0 0.0133345 1.03973 0 0 0.0446383 0.174902 0 0.10917 0 0.0472142 0 0 0.00545134 0 0 0.368782 0.000763941 0.014158 0 0.00333931 -0.0222627 0 0 0.171346 0 -9.29004e-05 -0.156647 -0.00271067 0 0 -0.00405353 -0.00127918 0 0.0146945 0.0527243 -0.00716749 -0.429471 0.0011084 0.034363 0 -0.00203253 -0.0459273 0.284523 -0.101558 -0.0253983 0 0 0 -4.97647 -0.352876 -0.73454 -0.0261717 -0.0208537 -0.0753313 -0.000903428 -0.0010015 -0.000789383 -0.00013184 0 0 0 0 0 0 0.153204 0 0.190617 0 0 0 0 -0.410953 0.959365 0 0 0.649263 0 0.0902142 0 0.0962356 0 0 0.853383 0 0.00518073 -0.150866 0.394084 0.118319 0 0 0.632674 0 7.44495 0 -1.73121 0.613839 0 -0.972621 -0.322144 0.0597179 0 -0.0670139 0 0 0.147857 0 2.55896 2.07919 0 0 0.303068 0 0 0.207614 -0.558315 0.213778 0 1.16758 0 0.0281424 0.375908 -0.335533 -0.324814 -0.135336 0.0914157 -0.401637 0.323594 0.887252 7.35514 0.0811495 0 0 0 0.0684361 -0.296595 0 0 0 0 -0.040762 11.4975 -1.65722 4.64314 -0.0141393 0.0290896 0.739543 -0.477603 0.365664 -0.243935 0.402324 0 0 0 0 0 0 +176 0 0.366884 -0.361207 0.0648764 0.163693 -0.042381 -0.270399 0.470356 1.06333 0.316659 -1.6726 -0.20202 -0.342784 -0.0190058 -0.524488 -0.0569424 -0.381667 -1.2461 -0.253187 -0.179636 -0.778666 -0.0597623 0.439314 0.0138018 -0.396606 0.519361 -0.46182 0.00915316 0.341107 0.794866 -0.129734 0.0758032 -0.285722 0.585153 0.293918 0.327431 -0.0127248 0.147193 -0.565927 -0.280105 -1.12337 -0.0775328 0.756151 -0.00230986 -2.05204 -0.257693 -0.835015 0.493547 -1.04631 -0.102221 -0.102309 -0.516361 -2.78335 -0.582473 -0.363003 0.138378 -1.35091 -1.10937 -0.0981919 0.655195 0.161011 -0.533777 2.20215 0.193279 -0.87788 -0.0625575 -0.0448384 0.838573 0.0791359 0.141841 0.743652 -0.417708 -0.122713 0.239481 0.000332501 -0.311214 -1.27477 1.39556 2.07257 -1.24366 1.1002 -0.418406 0.401262 1.79959 -1.21945 1.48463 -1.16088 0.323336 -0.00274205 -0.215106 0.858726 -1.74933 0 0 0 0 0 0.0648764 0.163693 0.00266046 0 0 0 0 0.000375864 0 -0.0163823 0 0 -0.00214308 -0.0103089 -0.0231217 0 -0.00511483 -0.0983115 -0.0609972 0 0 -0.165755 -0.000567034 0 -0.0473369 -1.19838 0 0 -0.0281527 -0.346368 0 -0.142337 0 -0.0404012 0 0 -0.00630859 0 0 -0.621119 0.00731763 -0.0389445 0 0.0516266 -0.000521199 0 0 -0.183338 0 0.000165435 -0.146289 0.00712834 0 0 0.0021417 -0.00828275 0 -0.0107699 -0.0757633 0.0101831 0.0867492 0.000781987 -0.0267464 0 0.0387838 0.0171976 0.261031 -0.0724912 0.0133596 0 0 0 5.2027 0.367991 0.496942 0.0243843 0.0212292 0.0589714 0.00117298 0.000999309 0.00383144 0.00444341 0 0 0 0 0 0 -0.042381 0 -0.270399 0 0 0 0 0.0171206 0.752214 0 0 -0.308306 0 -0.0458784 0 0.0458655 0 0 -0.609572 0 0.839733 0.0377 0.0381252 -0.0934044 0 0 0.237231 0 -2.65712 0 0.571291 0.00352718 0 0.0576919 1.13928 -0.00620802 0 0.0121222 0 0 0.118739 0 -0.416501 -1.8099 0 0 -0.251465 0 0 0.394328 -2.8062 0.0377593 0 0.782581 0 -0.354338 0.20968 -0.131634 0.0679255 -0.0396195 -0.517719 0.0185441 -0.163188 -2.16822 -1.9838 -0.0178345 0 0 0 -0.179889 0.121554 0 0 0 0 -0.475828 4.22593 0.961233 0.983119 -0.759097 0.796683 -0.263665 0.19923 -0.126765 0.114225 -0.00979433 0 0 0 0 0 0 +177 0 -1.15043 -0.0691265 -0.0137083 -0.103772 0.020368 0.201019 -0.262756 -0.21097 -0.318319 0.199021 0.354224 0.526991 -0.00281202 0.0107346 -0.039542 1.09689 5.10253 -0.0604117 0.021489 -0.67639 -0.0225257 -0.00281599 -0.00229842 0.0236999 -0.216414 0.330601 -0.0496931 -0.720933 -1.59596 0.341476 -0.0253194 -0.230294 0.329786 -0.119121 -0.207076 0.0387769 -0.329516 3.1547 0.516426 0.411531 -0.0238435 -0.733602 0.0591753 0.792054 -0.216041 0.524438 -1.08426 0.194922 -0.0569386 0.305478 -0.337738 -6.06523 -0.374332 0.139197 -0.525197 -2.36944 -0.516181 0.0954723 -0.0161005 0.0168968 -0.70863 0.435063 -1.46541 -0.143278 -0.160619 0.270575 0.0288241 -0.35825 0.108138 -0.861294 -0.0739856 -0.22627 0.251011 0.0228111 1.35636 0.0673251 -8.48781 -1.59675 0.122887 -1.06861 0.489614 -1.38921 -0.366476 -0.23914 0.615565 -0.0831126 0.271073 -0.473611 1.23898 -1.67359 3.51238 0 0 0 0 0 -0.0137083 -0.103772 0.00242061 0 0 0 0 0.000315624 0 0.007928 0 0 0.000358538 -0.00272979 0.00556181 0 0.00017757 -0.0315263 0.0546696 0 0 -0.00023211 -0.000121408 0 -0.114807 -0.257703 0 0 0.00711158 -0.141832 0 -0.26531 0 0.00457039 0 0 0.00245517 0 0 -0.380565 0.00685838 0.00701787 0 0.0521992 -0.0550379 0 0 -0.29359 0 -0.00655913 -0.989394 -0.00409614 0 0 -0.000727378 -0.0114707 0 -0.012846 -0.0168798 0.00110544 0.0885733 -0.0903063 0.0172234 0 0.0203733 -0.00164084 0.00566213 0.0379177 0.0315236 0 0 0 2.06465 0.04327 0.154484 0.00851342 0.00706151 0.0443025 -0.000341127 -0.000300378 -0.000559081 -0.0293133 0 0 0 0 0 0 0.020368 0 0.201019 0 0 0 0 0.218353 0.223081 0 0 -0.170146 0 -0.0458505 0 0.0213932 0 0 -0.357821 0 -0.150983 0.0564904 -0.324258 -0.0486634 0 0 0.0907251 0 -1.15753 0 1.25617 0.670012 0 0.185814 -0.15411 -0.0461141 0 0.0364063 0 0 0.0507457 0 0.204335 -0.580531 0 0 -0.0826117 0 0 0.160745 -3.01968 0.243404 0 0.959085 0 -0.488021 0.309907 -0.275747 0.126698 -0.0883782 -0.690054 0.118847 -0.0835738 -1.44715 -1.13188 0.0152558 0 0 0 -0.0867784 0.092277 0 0 0 0 -0.359948 -11.8899 -0.732043 -0.814197 -1.01873 1.07634 -1.41438 0.161845 -0.0965368 0.0184746 -0.119693 0 0 0 0 0 0 +178 0 -0.429959 -0.311531 -0.114414 -0.216524 0.105722 0.0849655 -1.36036 -2.73122 0.299508 1.82739 -0.643653 -0.207672 0.042594 -1.10116 -0.117403 -2.2637 -10.5428 0.176471 -0.257254 3.24862 0.0409288 -0.0759082 -0.0160566 0.480243 -0.456465 -0.424213 -0.0449742 0.0972732 0.875295 -0.0820939 -0.0404128 -0.932417 -0.197121 -0.687224 -0.226031 -0.134693 -0.598524 0.591908 -1.20349 0.981791 0.200056 -3.50274 -0.26108 -1.4203 0.877799 0.288555 0.352135 -2.22242 0.639493 -1.57117 0.685316 0.973229 0.596948 -0.295825 0.170226 -1.57934 -1.12768 -0.925566 -0.796507 -0.309957 0.310667 0.296967 1.18753 1.43005 1.22945 0.155209 -1.51685 -1.19074 -0.492918 -0.822444 -0.292964 -1.13006 0.381324 0.730858 0.0493608 -0.185802 -0.73791 -2.11891 4.86137 -2.68153 2.68415 -1.50641 -2.33739 1.8521 -2.25713 3.55497 -1.1014 1.36296 -1.51506 1.93051 -1.92634 0 0 0 0 0 -0.114414 -0.216524 -0.0061419 0 0 0 0 -0.000898381 0 0.0192122 0 0 0.00317799 0.0141685 0.0487416 0 0.00815366 0.147973 0.116693 0 0 0.677436 0.000829033 0 0.0482399 0.997366 0 0 0.0843635 0.392611 0 0.23859 0 0.155184 0 0 0.0199852 0 0 0.884028 -0.0177335 0.0544022 0 -0.120796 -0.0522378 0 0 0.34186 0 -0.00438393 -0.610571 -0.0122926 0 0 -0.00735517 0.0156815 0 0.0247844 0.180172 -0.0173946 -0.435597 -0.048274 0.0523692 0 -0.0501282 -0.0581256 0.436939 -0.13165 -0.101055 0 0 0 -10.6764 -0.778805 -1.33345 -0.0527929 -0.047596 -0.143658 -0.00237266 -0.00207658 -0.00460905 0.0113285 0 0 0 0 0 0 0.105722 0 0.0849655 0 0 0 0 -0.257752 -2.02752 0 0 0.75386 0 0.0981944 0 -0.100439 0 0 -0.0302944 0 0.144799 -0.0933477 0.290232 -0.00924508 0 0 -0.775653 0 -8.3103 0 0.339693 -0.429274 0 -0.676714 0.104084 0.043653 0 -0.0407442 0 0 -0.25462 0 -2.39251 0.312427 0 0 0.0392507 0 0 -0.213125 -0.869793 -0.370781 0 -3.08167 0 0.688952 -0.649088 0.463682 -0.0831966 -0.13467 -0.0644819 -1.01786 0.324172 -0.0182463 -9.08147 0.0954056 0 0 0 -0.616169 -0.291266 0 0 0 0 0.532943 -5.27713 -3.18792 2.53682 -0.685682 0.487465 -0.322437 -0.588902 0.437048 -0.326161 0.267413 0 0 0 0 0 0 +179 0 0 0 0 0 -0.192192 0.191009 -0.793053 0.132876 0 0 0.339829 1.00737 0 0.429183 0.0672358 0 0 0 0.327138 -0.256165 0 0 0 0 -0.0721483 0 0 -0.954498 -3.71276 0.612646 0 0.193109 0 0 -0.264938 0.016653 0 0 1.19518 0.452462 0 0 0.202411 0.501313 0 0.744962 -1.78584 0.678364 -0.361607 2.47931 -0.137742 0 -0.360179 0.47777 -0.958131 -1.68136 -0.325976 0.276834 0 0 0.952429 -1.0141 0 0.263794 -0.658666 0.778321 0 0 0 0 -0.153997 1.10929 0 -0.288163 2.06305 0 0 0 -1.0006 0 -2.33404 5.5412 0 -0.777454 0.604891 2.58569 0 -1.00866 2.08599 -5.31997 15.9691 0 0 0 -0.184549 -0.0352072 0 0 0 -0.0366162 -0.00527002 0 -0.00487332 0 9.40866e-06 0.0373105 0 0 0 0 0.142382 0 0.0246642 0 0.197309 0 -0.277273 -0.169327 0 0.00298443 0 0 0.0829178 -0.000101562 -0.0211409 0 3.86881e-05 0 -0.000405611 0.0258791 0.0151744 -0.00157632 0.00518741 0 3.59734e-07 0 0 0 9.68311e-07 0 0 0.000262322 -0.000648754 -0.0066081 -0.00188482 0 0 0.00534981 0 0.000707848 0 0 0.00182013 0.00469623 -0.124299 -0.00357849 0 0 -0.0456074 -0.0055198 -2.53767e-05 -0.0716226 -0.0514184 0 0.0579419 0.00168579 -0.0824363 0 0 0 -0.258017 0 0.002442 -0.125416 0 -0.000441612 -0.00142944 0.00492276 0 0.000122745 -0.00112494 0.00325389 -0.0116597 0 -0.192192 -0.184549 0.191009 -0.0352072 0.189208 0.0780375 -0.306035 0.386695 -0.583605 0.021797 0.0991115 -0.158027 0.00288065 -0.0118812 -0.0378814 -0.0316288 0.0357591 0.150117 -0.337559 1.03552 0.154792 0.237492 -0.210197 -0.0591646 0.264422 -0.14925 -0.189166 0.014221 -2.29961 0.310952 0.799929 0.297111 -0.00434812 1.00288 0.329467 -0.0242021 0.0124107 0.0795342 0.11062 -0.713681 -0.0893086 -0.028013 -1.03338 1.20816 0.0119713 0.03102 0.267091 0.131786 0.0138839 -0.630848 0.559028 1.07267 -0.0520901 1.04665 0.0761998 0.109232 -0.199553 -0.31388 0.0880391 -0.393856 -0.220045 -0.0897163 -0.0861911 0.313952 2.97786 0.170545 -0.282479 0.142432 0.161033 0.0729698 -0.00383333 -0.0557509 -0.0395123 0.227604 -0.227443 0.154296 -0.299018 0.0671825 -3.56387 -0.115518 -1.15106 2.29137 0.0243429 -0.527309 1.20463 -1.74257 -0.0328263 -0.300632 0.612855 -0.840396 1.0843 0 +180 0 0 0 0 0 -0.18193 0.0351071 0.604504 1.88503 0 0 -0.148326 0.0760929 0 -0.272791 0.075195 0 0 0 0.27803 -3.16249 0 0 0 0 0.165868 0 0 -0.244327 5.29588 0.229969 0 0.364369 0 0 -0.0233781 0.0150669 0 0 -0.56822 0.409555 0 0 -0.024127 -2.53081 0 0.787207 0.785478 1.26774 -0.00832483 0.81302 0.466056 0 -0.211141 0.16347 0.459338 0.73626 -0.103436 -0.457392 0 0 -1.8411 -0.174461 0 1.53987 0.339467 -1.04891 0 0 0 0 0.449342 0.35963 0 -0.738555 -0.981905 0 0 0 -2.65543 0 0.638593 -7.52138 0 0.108318 -0.160795 -5.79915 0 0.0621675 -1.2229 3.19035 -15.8098 0 0 0 0.0668954 0.0128492 0 0 0 -0.00549997 0.0146395 0 0.000280312 0 -3.79432e-05 -0.0121354 0 0 0 0 -0.0290335 0 -0.00746728 0 -0.0132782 0 -0.124031 0.252733 0 -0.00141216 0 0 -0.0517047 0.000269932 0.0238414 0 0.000734258 0 0.000720952 0.127239 -0.00759361 0.00569429 0.00832973 0 -2.34092e-06 0 0 0 3.83854e-05 0 0 -0.000650722 0.00105632 0.0382305 0.00285818 0 0 -0.00803637 0 -0.00115254 0 0 0.00448903 0.0126165 -0.127069 -0.00749953 0 0 0.0222692 0.0057006 0.00461489 0.105602 -0.104698 0 -0.0259754 -7.54155e-06 -0.0390798 0 0 0 -0.00222169 0 -0.0221996 0.126025 0 -0.00147579 0.00979297 -0.0273377 0 -0.000193109 0.000764712 -0.00323188 -0.0208212 0 -0.18193 0.0668954 0.0351071 0.0128492 -0.58529 -0.151738 0.0784208 -0.17842 0.818671 -0.0121671 0.0171812 0.165406 -0.0015335 0.0134769 0.0140922 0.0270437 0.00946337 -0.0908013 -1.19724 -1.02084 -0.156727 0.130385 0.20576 -0.19658 0.203554 0.403599 0.330217 -0.0393794 1.5731 -0.3739 -0.798491 0.604587 0.00184791 0.224411 -0.316595 0.0202502 -0.00913401 0.00554127 -0.0781167 2.52336 0.0797554 0.069082 0.562163 -3.00565 0.000214528 -0.0449493 -0.48853 -0.173803 -0.141766 1.30228 -0.596318 -0.16488 -0.0293297 1.13048 -0.0243905 0.163367 0.145474 0.133132 -0.0811888 -0.255845 -0.862749 0.0164009 0.1036 -0.125331 3.05109 -0.143329 1.12128 -0.0514591 -0.527235 -0.311194 -0.0130164 -0.00119729 0.0254452 0.187846 0.153111 -0.0548113 0.29848 -0.068494 0.352382 0.104275 1.12056 -4.7014 -0.0223582 0.261032 -0.552033 -0.84687 0.0198557 0.197241 -0.557891 0.743925 -2.3632 0 +181 0 0 0 0 0 0.117203 0.00512098 0.319168 1.855 0 0 0.125956 0.282743 0 -0.566847 -0.0295401 0 0 0 -0.246787 1.19993 0 0 0 0 0.36206 0 0 -0.168383 -0.313129 0.189411 0 -0.0810812 0 0 0.0106528 -0.00344443 0 0 0.300385 0.301859 0 0 0.100387 -1.76577 0 0.604494 -0.232497 -1.48854 -0.27536 1.96365 0.0875265 0 0.18614 -0.361106 -0.00964974 0.408995 -0.0319353 -1.01671 0 0 -0.683722 1.44632 0 -0.0243032 -0.803242 -0.528707 0 0 0 0 -0.0107536 0.925674 0 -0.425477 0.0208838 0 0 0 -3.52088 0 -0.751768 0.718156 0 -0.371511 0.868523 -4.39941 0 -0.601679 0.581481 -1.69688 2.86375 0 0 0 0.0753958 -0.0123414 0 0 0 -0.00874578 -0.0220811 0 -0.00153723 0 0.000776444 0.0356327 0 0 0 0 0.143904 0 0.0195989 0 0.345587 0 -0.0333259 -0.16765 0 0.00242343 0 0 0.100253 0.00083984 -0.0127933 0 -0.00127731 0 -0.00129825 -0.0126818 0.0165587 0.016828 0.00300373 0 4.06259e-05 0 0 0 -6.87436e-05 0 0 -0.00205685 -0.00198283 -0.164584 0.00528828 0 0 0.00420626 0 0.00216345 0 0 -0.00254706 -0.00889094 0.0161705 -0.0200338 0 0 0.084177 0.0103722 -0.0131668 0.135597 -0.202336 0 0.157542 0.0131384 0.0295116 0 0 0 -1.10532 0 -0.077152 -0.443305 0 -0.0069976 -0.0377387 -0.103834 0 -0.000644063 -0.00479703 -0.0073066 -0.040699 0 0.117203 0.0753958 0.00512098 -0.0123414 0.196097 -0.0617743 -0.0692454 0.040521 0.308036 0.0203274 -0.075801 0.205647 0.0023127 0.0100748 -0.0166077 0.0456628 -0.0961963 0.166377 -1.42476 0.376387 -0.151642 0.0553694 0.0648179 -0.157115 -0.899296 0.0696394 0.651214 -0.0171472 -2.905 -0.181826 -0.899669 0.50533 -0.00235342 0.0318633 -0.356396 0.00244106 -0.000330227 0.0111182 -0.00218796 0.116764 -0.0016925 0.0218868 -0.010241 -3.40425 -0.00878875 -0.0200268 -0.46981 -0.047553 -0.334971 -1.18405 -0.749272 0.492892 0.212253 -0.845619 0.020719 -1.30972 -0.104043 -0.346547 -0.0838768 -0.21387 -0.434551 0.119395 -0.0991084 -0.609219 -1.30377 -0.19241 -0.106751 -0.156726 -0.0641835 0.0861407 0.0209113 0.0365962 -0.0512984 0.00733392 -0.00150624 0.0360781 0.336301 -0.0807768 -1.26024 0.0672696 -0.154171 1.36439 -0.0146544 -0.0844168 0.410481 -0.654637 -0.036382 0.0330041 0.0606604 0.0624886 -0.191692 0 +182 0 -0.2035 0.0742617 -0.0064487 -0.0179131 -0.0639443 -0.0720703 0.727878 0.602563 -0.106263 0.882136 -0.00687344 -0.325319 -3.19741e-05 1.10909 -0.026774 0.586201 4.62208 0.261323 -0.0282073 3.19214 0.0340099 0.0331224 -0.000562727 0.128823 -0.0427603 0.00601732 0.0383798 0.5664 1.13065 -0.137888 -0.00827894 -0.241888 0.34501 0.279317 0.122119 -0.00573434 0.20694 2.26464 0.12167 1.21378 -0.00221829 1.28242 -0.000633939 2.04847 -0.0560254 0.137525 0.852646 -0.127357 -0.0107767 1.21808 0.212229 -3.0906 0.0637065 -0.0418015 0.171541 1.27221 0.0230322 -0.113326 -0.204062 0.0107026 -2.21989 -2.06017 -0.125788 -0.567169 -0.722459 -1.60543 0.0136233 0.340597 0.0278195 -0.359815 0.189331 -0.0905025 -0.351609 -0.704045 -0.996712 -1.15236 -10.9064 -3.87882 -0.465528 -1.38703 1.50709 -5.71834 -0.886535 1.05423 -1.34865 -2.99257 0.00779486 -0.0261413 0.0385977 0.102109 -4.73254 0 0 0 0 0 -0.0064487 -0.0179131 -0.00269487 0 0 0 0 -5.68091e-05 0 0.00385028 0 0 -0.00117311 -0.000699572 0.00145933 0 0.000166289 0.00654013 0.0409049 0 0 -0.0694464 -4.48136e-05 0 0.00562854 -0.351415 0 0 -0.00466161 0.0334936 0 0.0731612 0 -0.00485137 0 0 -0.000392537 0 0 0.00991949 -0.000572568 -0.0175024 0 -0.0362895 -0.0071764 0 0 -0.00276809 0 -0.00342156 0.206839 0.00869607 0 0 0.00113555 0.00523663 0 -0.00259737 -0.0305783 -0.00583634 0.0611001 0.0387893 0.00284563 0 -0.0027566 -0.00341363 -0.0977253 -0.00278594 -0.100974 0 0 0 0.557056 -0.0136979 0.0562576 0.0230858 -0.0508537 0.149336 0.00106589 -0.00209881 0.00866491 -0.00900312 0 0 0 0 0 0 -0.0639443 0 -0.0720703 0 0 0 0 -0.297928 0.568672 0 0 0.395142 0 0.0384859 0 0.031873 0 0 0.749613 0 -0.12122 -0.0926826 0.22512 0.109705 0 0 0.226384 0 7.59519 0 0.00546115 0.0505119 0 -0.522402 -0.241755 0.0230414 0 -0.0576855 0 0 0.0711267 0 2.11808 1.19347 0 0 0.187166 0 0 0.142661 -0.623153 -0.0441404 0 -0.0535507 0 -0.399817 0.163171 -0.155933 -0.0462236 0.0567995 -0.200296 -0.274443 0.0660895 -0.469214 1.08889 -0.112999 0 0 0 -0.0210696 -0.0474051 0 0 0 0 -0.151761 -8.75256 -1.86432 1.24143 -0.641403 0.339821 -0.317684 -0.254349 0.224467 -0.228735 0.303784 0 0 0 0 0 0 +183 0 -0.493704 -0.0412582 -0.0081422 0.0152136 -0.241724 -0.0421268 -0.522597 0.617192 -0.0905936 -0.033977 -0.115002 -1.31141 0.000674187 -0.847521 -0.0164437 -1.19878 -6.56163 0.0290712 -0.0200922 -0.111207 0.00682727 -0.248722 -0.000850159 0.107263 -0.242099 0.0431725 0.0127759 -0.131584 -0.531991 -0.336765 -0.00896025 -0.227198 -0.255853 0.134998 -0.217715 -0.0144625 0.0634767 1.13715 -0.219544 -0.16216 0.00734446 0.488471 -0.0281901 -3.29655 0.0704351 -0.076135 -0.32268 -0.35269 0.0850429 -1.39522 0.118919 -0.981711 0.00955864 -0.0138581 -0.000938729 -1.57458 -0.449967 -0.118238 -0.17066 -0.0163759 1.48728 -0.0150601 0.693364 0.0526912 0.210693 0.927782 -0.0406246 0.0878662 0.0121349 0.167516 0.165638 -0.412072 -0.0387636 0.124798 0.651889 -0.451367 1.24685 0.622778 -3.19633 0.401504 -0.795926 0.995528 -0.28294 -0.139191 0.222434 0.66354 -0.00979969 0.0374965 -0.110401 0.291615 2.22674 0 0 0 0 0 -0.0081422 0.0152136 0.001721 0 0 0 0 0.000126593 0 -0.00420655 0 0 0.00101151 -0.000148939 -0.00396826 0 -0.000772239 0.0247809 -0.0253137 0 0 -0.0998861 -7.51816e-06 0 -0.0131964 0.518119 0 0 -0.00934811 0.14407 0 -0.0875527 0 -0.0056503 0 0 -0.000490861 0 0 -0.0719921 0.00252583 0.0183462 0 0.0344089 -0.0331009 0 0 0.0161111 0 0.00204122 0.079904 0.00890339 0 0 -0.00141218 -0.0031903 0 -0.00514778 -0.00917236 0.00481284 -0.367104 0.0203257 0.0101154 0 0.0056197 -0.030192 -0.145179 0.0129235 0.101354 0 0 0 -0.164857 -0.0884938 0.0945093 0.00788564 -0.00237671 -0.153217 -0.000810337 0.00138186 -0.0131587 -0.0102394 0 0 0 0 0 0 -0.241724 0 -0.0421268 0 0 0 0 0.501458 -0.585966 0 0 -0.448465 0 -0.0567948 0 -0.0297581 0 0 0.38692 0 -0.228246 0.174528 -0.127347 0.0658087 0 0 -0.356056 0 -6.73445 0 0.621102 -0.467952 0 1.42254 0.112587 -0.0158432 0 0.0670162 0 0 -0.0550095 0 -1.65359 0.320092 0 0 0.0740304 0 0 0.308238 1.58716 -0.358264 0 -0.739655 0 0.395472 -0.0515034 0.224637 0.216058 -0.163926 -0.289082 0.147394 0.139523 0.0895785 -1.97196 0.0578999 0 0 0 -0.173232 0.0151289 0 0 0 0 0.0969568 11.4075 4.45505 -6.17663 1.35129 -0.985086 -0.246774 0.21385 -0.165347 0.225984 -0.625261 0 0 0 0 0 0 +184 0 -0.7455 -0.620719 0.0256941 0.25539 -0.262152 -0.388591 1.08141 1.87757 0.103448 -0.299357 0.21736 -0.383595 -0.00143009 -0.86571 -0.000268421 -0.733941 -5.37429 -0.0504856 -0.0063256 -2.15795 -0.00803077 0.538898 0.00155183 -0.0817354 0.692582 -0.434414 -0.01924 0.461967 -0.975658 -0.267671 0.0140148 -0.135595 1.61066 -0.0871595 0.446381 0.0207538 -0.230815 5.99809 0.606831 -1.36965 -0.0164176 -0.894843 0.0529331 -2.70346 -0.182133 -1.09627 0.203417 -0.157887 -0.117999 -0.634943 -0.0565465 -0.83885 0.0267071 0.0314982 -0.18363 -1.23176 -0.452287 0.160694 0.05275 0.0337296 0.223686 1.3637 0.669563 0.268402 0.593226 0.388555 -0.391678 -0.70647 -0.0133485 0.19143 -0.545212 0.125125 0.156429 1.08921 0.0101844 -0.107658 -21.9205 -0.969485 -7.50982 -1.99038 0.87323 -5.28971 0.175948 -0.04986 -0.323749 0.00221179 0.0253403 -0.0996813 0.449046 -1.57784 4.08378 0 0 0 0 0 0.0256941 0.25539 -0.00237135 0 0 0 0 -0.000187616 0 0.0183016 0 0 0.0012772 0.00302258 0.0101143 0 0.00193821 -0.0317726 0.103521 0 0 -0.113443 0.000154245 0 0.0322084 -0.911638 0 0 -0.0134274 -0.138649 0 0.21419 0 -0.00675339 0 0 -0.00104309 0 0 0.934996 -0.00318602 0.0279783 0 -0.0342703 -0.0635669 0 0 0.387129 0 -0.0036401 0.382851 0.0104515 0 0 -0.00315191 0.00451483 0 0.0183973 -0.00993664 0.00186547 -0.447355 0.0205066 0.0175984 0 -0.00096572 -0.0184899 0.0569664 -0.0431384 0.0889073 0 0 0 -7.63573 -0.520524 -0.752339 -0.0235672 -0.0417105 -0.172214 -0.00099278 -0.00142379 -0.00877393 -0.0194259 0 0 0 0 0 0 -0.262152 0 -0.388591 0 0 0 0 0.224809 -0.97202 0 0 -0.731658 0 -0.0800919 0 -0.0477367 0 0 -0.161169 0 0.509691 0.119757 -0.259518 -0.0398155 0 0 -0.44676 0 -10.2389 0 1.20306 -0.834982 0 0.788958 0.557764 -0.0272451 0 0.0267361 0 0 -0.1245 0 -2.67408 -1.41402 0 0 -0.186289 0 0 -0.104705 -0.577666 -0.382233 0 -1.40682 0 0.526156 -0.496094 0.446054 0.312746 -0.0515927 -0.678365 -0.587093 -0.0829784 0.0383998 -7.75449 -0.0631529 0 0 0 -0.180708 0.0936165 0 0 0 0 0.223899 -2.30837 2.76123 -3.13838 0.401567 -0.330878 -0.34477 0.441509 -0.385973 0.484677 -0.508913 0 0 0 0 0 0 +185 0 -0.634329 -0.0543663 -0.033679 -0.214765 0.102203 -0.0582514 0.422066 -0.140483 -0.237302 0.826946 -0.164408 0.443724 0.00231684 0.984771 0.0338301 0.688673 2.84508 -0.0441448 0.056376 1.08494 -0.0444374 -0.000749639 -0.00297169 0.0838322 0.24512 0.171461 -0.0550293 0.51671 1.88277 -0.0389123 -0.0283392 0.296553 0.238265 -0.273488 0.187616 -0.0132685 -0.0663511 2.17008 -0.40002 -0.14957 0.0230083 -0.693633 -0.0399322 3.69002 0.211088 -0.370447 0.99532 0.494334 0.108719 -0.00287608 0.538731 -4.84538 -0.0960856 0.094735 -0.158687 -3.33378 -0.316384 -0.424073 -0.174132 -0.0482319 -1.43882 -1.0568 -0.249614 0.0311168 -0.245982 -1.45758 -0.50171 0.125443 0.0483001 0.0298883 0.0915233 0.0167331 0.0614324 -3.0409 -0.744036 -0.285774 -6.45206 -2.81635 1.6449 -1.91768 2.06653 -3.82692 -0.633522 0.866868 -1.50445 0.0875537 -0.0456907 0.0720358 -0.409152 0.645583 -3.66382 0 0 0 0 0 -0.033679 -0.214765 -0.000400227 0 0 0 0 -2.90243e-06 0 0.00716531 0 0 -7.2464e-05 -8.15611e-06 0.00408054 0 0.00109948 0.00199944 0.0279189 0 0 -0.0558732 -4.29611e-07 0 0.0372762 -0.251758 0 0 -0.00555171 -0.00793353 0 0.141672 0 -0.00748061 0 0 -0.000773543 0 0 0.300378 -3.9118e-05 -0.00140784 0 -0.00543129 -0.00345235 0 0 -0.0896464 0 -0.000821233 0.0177404 0.00121002 0 0 0.000138353 0.000694068 0 -0.00102279 -0.00184358 -0.000489644 -0.164297 0.00291107 -0.00572463 0 -8.71882e-05 -0.00040359 -0.060507 6.55787e-05 -0.0633223 0 0 0 -0.423371 0.00182821 0.0146979 0.00728316 -0.0128941 0.0257246 6.11018e-05 -8.30326e-05 0.00103491 0.000851172 0 0 0 0 0 0 0.102203 0 -0.0582514 0 0 0 0 -0.421245 -0.414421 0 0 0.665812 0 0.0704072 0 -0.00218622 0 0 0.670977 0 0.0195218 -0.120496 0.263751 0.0933552 0 0 -0.102583 0 2.32268 0 0.56155 -0.149169 0 -0.984635 0.0632425 0.0293029 0 -0.0488451 0 0 -0.0256449 0 0.753952 1.51292 0 0 0.182302 0 0 -0.111688 -0.0597157 -0.397701 0 -1.90427 0 -0.3192 0.163184 -0.0499205 -0.236596 0.10738 0.595699 -0.171955 0.119072 0.849588 2.37298 -0.0254349 0 0 0 -0.111908 -0.11421 0 0 0 0 0.0970344 -6.64182 -1.67336 1.35068 -0.488287 0.400519 -0.711515 -0.310372 0.279142 -0.393088 0.527162 0 0 0 0 0 0 +186 0 -0.71087 -0.337485 0.00596979 0.0379245 -0.198178 -0.247585 1.17216 3.23473 0.0483292 -0.468808 0.0763085 1.27938 -0.000414524 1.45127 -0.00124101 0.99433 2.73305 -0.123417 -0.00377683 2.80234 0.00883297 0.499489 0.000536386 0.00338863 1.06954 0.0343935 0.0366776 0.605793 0.856286 0.291705 0.00533575 -0.0107863 1.6501 -0.0559102 0.466491 0.00512561 0.20229 5.99801 0.146723 0.589648 -0.00413497 0.154237 0.0115369 3.98571 -0.0381738 -0.154665 0.757071 -0.0388511 -0.0274181 -1.86971 0.0510389 2.84094 -0.0033447 -0.0101741 -0.0204164 -0.0381471 0.520922 0.42572 0.0219094 0.00909997 -0.132659 -2.40423 0.162512 -1.39737 0.43012 -0.579619 0.837076 0.113102 -0.00991738 0.244105 0.0427883 0.150766 -0.210567 -2.14953 -0.856202 0.299777 -17.9496 0.59501 -11.3538 -0.988765 0.743084 -8.0554 0.144098 -0.3908 0.923414 -5.13576 0.00826284 -0.0210773 -0.0555304 -0.0261619 -1.66631 0 0 0 0 0 0.00596979 0.0379245 7.31827e-05 0 0 0 0 5.70788e-07 0 -6.15401e-07 0 0 1.52675e-05 -4.40068e-06 -0.000912159 0 -7.78904e-05 0.00959475 -0.0076617 0 0 -0.0750861 -2.57799e-07 0 0.0013071 0.111766 0 0 -0.00960037 0.0728322 0 0.0203793 0 -0.00530159 0 0 -0.000717796 0 0 0.0690789 1.24878e-05 0.000398669 0 0.00162438 0.000149776 0 0 -0.00552097 0 0.000135177 -0.0284499 0.00102442 0 0 -2.61772e-05 -0.000114245 0 -0.00101738 -0.0141517 0.00101777 -0.260174 0.000177549 0.00265849 0 -0.000204846 -0.00433649 -0.10312 0.00210555 0.0258295 0 0 0 0.00221603 0.0109309 0.02513 0.00167342 0.00273633 -0.0301127 -8.88689e-06 0.00023823 -0.00181822 -0.00470061 0 0 0 0 0 0 -0.198178 0 -0.247585 0 0 0 0 0.339051 -0.0688352 0 0 -0.530961 0 -0.0532508 0 0.00103422 0 0 0.061489 0 0.543378 0.171876 -0.202244 0.00784983 0 0 0.0284347 0 -2.6846 0 2.15806 -0.424742 0 1.27247 0.828342 -0.0168349 0 0.0582825 0 0 -0.0158859 0 -0.468874 -0.170034 0 0 -0.0373018 0 0 0.444945 0.3672 -0.094549 0 1.55291 0 0.188411 -0.17298 0.186144 0.0545368 -0.148535 -0.441979 0.162154 -0.0189774 0.114821 4.27874 0.0961478 0 0 0 0.0626945 0.0428158 0 0 0 0 -0.016454 -7.25653 2.02289 -5.68493 0.478663 -0.390077 -1.06944 0.295775 -0.275236 0.282037 -0.619566 0 0 0 0 0 0 +187 0 0.301414 0.316353 -0.0133859 -0.0237878 0.0709528 0.145084 -0.230794 -0.584562 -0.106509 0.545646 -0.115878 -0.102923 0.000963892 1.27166 0.0107586 0.818027 1.39629 0.124593 0.022789 2.40851 -0.00299576 -0.302465 -0.0012256 0.106513 -0.379735 0.581324 -0.0156145 -0.229663 0.215246 0.0889583 -0.012043 0.071204 -0.238626 0.0381415 -0.224292 -0.00810721 -0.100599 0.695541 -0.261032 1.24842 0.0103121 -0.571192 -0.0218857 2.39614 0.105802 0.501605 -0.121868 0.152702 0.0584096 -0.0126922 0.519285 1.22731 -0.0460501 0.0539015 -0.055919 1.03353 -0.183462 -0.0138666 -0.233588 -0.0238066 -0.693208 -0.977615 -0.427337 0.950544 0.0182734 0.143591 -0.73016 -0.0678739 0.0218283 0.0719283 -0.0603399 -0.107033 0.112494 -0.0150294 0.609237 -0.173426 -1.59302 -1.28609 1.47907 -0.974575 1.3889 -2.33833 -0.60333 0.698407 -1.06365 0.880591 -0.0229012 0.0426572 -0.126239 0.283289 -0.418862 0 0 0 0 0 -0.0133859 -0.0237878 -0.000590402 0 0 0 0 -4.57098e-06 0 0.00370196 0 0 0.000274185 3.60488e-05 0.000350322 0 0.000293153 0.00777093 0.0106763 0 0 0.0437729 1.83314e-06 0 0.0161947 0.107894 0 0 0.006897 0.0301303 0 0.0681574 0 0.00211326 0 0 0.000396063 0 0 0.235777 -6.95019e-05 0.00547406 0 -0.00883829 -0.0129665 0 0 0.035283 0 -0.00119219 0.0476413 0.00309344 0 0 -0.000520382 0.00100759 0 0.00216177 0.0117626 0.00138669 -0.394878 0.00122746 0.00383796 0 -0.000258955 -0.00425424 -0.0106834 -0.00527321 0.0296634 0 0 0 -1.2561 -0.0837374 -0.0971047 0.00127539 -0.012828 -0.0316552 -0.000214303 3.50695e-05 -0.00271706 -0.00781076 0 0 0 0 0 0 0.0709528 0 0.145084 0 0 0 0 0.0927619 -0.957733 0 0 0.123243 0 0.0221084 0 -0.0188918 0 0 0.983743 0 -0.494866 0.0295072 0.11541 0.126461 0 0 -0.290707 0 3.37376 0 -0.565044 0.210327 0 -0.110349 -0.252301 0.0140617 0 0.0279326 0 0 -0.0863926 0 1.14939 2.38905 0 0 0.301421 0 0 0.140071 -0.814639 0.01953 0 -1.79591 0 0.921973 -0.145461 0.0990506 0.041204 -0.0129281 -0.717282 -0.823619 0.173811 1.09062 -1.9152 -0.0863098 0 0 0 -0.0571917 -0.0773337 0 0 0 0 0.132081 6.59015 -0.187774 1.86805 -0.125397 -0.00953289 -0.00496191 -0.084658 0.0727592 -0.0653638 0.0862053 0 0 0 0 0 0 +188 0 0 0 0 0 -0.462225 -0.0651334 1.56511 4.32801 0 0 0.490494 0.0419025 0 0.236156 0.0391085 0 0 0 0.0735151 -5.01403 0 0 0 0 0.440519 0 0 -0.456062 -0.222717 0.415234 0 0.32037 0 0 0.0639319 0.0205557 0 0 1.70732 -0.729249 0 0 0.264805 -3.20651 0 0.359723 -0.301157 -0.0945996 -0.296569 1.68718 0.0515992 0 -0.129188 0.341543 0.294125 -2.05188 -0.493202 -0.139004 0 0 -0.365791 0.91916 0 2.67097 0.364837 0.7435 0 0 0 0 0.551658 0.95329 0 -0.579524 0.74449 0 0 0 -7.97851 0 -3.24968 0.766145 0 -0.557436 0.375387 -6.58391 0 -0.657717 0.749723 -3.08046 -0.08111 0 0 0 -0.226562 -0.046512 0 0 0 -0.101411 0.010694 0 -0.014431 0 -0.000258478 -0.0165984 0 0 0 0 0.0450109 0 0.00372035 0 -0.0795486 0 -0.681416 -0.372364 0 -0.00540457 0 0 -0.182036 -0.000110228 -0.0848268 0 0.00225361 0 0.000426351 -0.0535188 -0.0322772 -0.00195188 -0.0157689 0 -1.33858e-05 0 0 0 0.000112346 0 0 -0.000718488 -0.000698447 0.0698681 0.000986357 0 0 -0.00234151 0 -0.00172595 0 0 -0.0167035 -0.000103283 -0.100726 -0.00752715 0 0 0.0260529 0.0372092 0.00780877 -0.052289 -0.13967 0 0.0770378 0.00487312 0.109874 0 0 0 -0.0179591 0 -0.00489668 0.213838 0 -0.000610667 0.00286037 0.0392337 0 -7.08905e-05 0.000657769 -0.00346364 0.175735 0 -0.462225 -0.226562 -0.0651334 -0.046512 -0.0131619 -0.070281 -0.524248 0.0276916 -1.03161 0.0148108 0.0608225 -0.570455 0.00305353 -0.0430191 -0.065842 -0.0507768 0.00981626 0.0443301 -0.0542357 -0.840118 -0.587802 0.18176 -0.326703 -0.0345664 0.0645329 -0.0316739 -0.252259 -0.0264207 -1.71083 0.330376 -5.16456 0.453437 -0.0080929 0.756777 -1.95346 -0.0369937 0.0108469 0.0361664 0.0869771 -0.272233 -0.158235 0.00142382 0.433372 -1.49012 0.00525413 0.0432102 -0.210177 -0.16129 -0.0111531 0.605447 -3.93995 0.616959 -0.0543024 3.02454 0.17748 -0.313709 -0.208082 0.11046 -0.387726 -0.258835 -0.392995 -0.548349 0.111709 -1.09562 -0.895139 0.086094 0.204199 0.14895 0.163508 -0.170772 0.048592 0.0665729 0.00148262 -0.0190221 -0.105849 0.267788 27.5769 3.49852 -0.666148 0.674376 -1.65148 2.59825 0.0706045 -0.524125 0.716468 -0.773873 -0.0136088 -0.227073 0.135643 -0.133731 0.00788954 0 +189 0 0 0 0 0 0.00313921 0.308843 -1.04225 -2.0013 0 0 0.188014 1.77786 0 2.92417 0.124632 0 0 0 0.388558 2.18042 0 0 0 0 -0.351566 0 0 -0.853361 -7.99171 0.784377 0 0.613721 0 0 -0.274309 0.0392932 0 0 0.511517 0.968501 0 0 0.0696557 7.12718 0 0.885336 -2.37943 1.52328 -0.249411 2.34385 -0.708143 0 -0.450413 0.469536 -0.889956 -3.61516 -0.939354 0.510968 0 0 1.82118 -1.81003 0 -1.77928 -1.37163 -0.113575 0 0 0 0 0.750152 0.110301 0 -0.515795 1.47114 0 0 0 3.65162 0 -1.06925 13.0851 0 -0.453459 2.36804 5.73681 0 -0.331858 2.6026 -3.57725 21.5865 0 0 0 -0.0344196 -0.00651349 0 0 0 0.0110345 0.0088641 0 0.000922749 0 -0.000259126 0.0137466 0 0 0 0 0.0532262 0 0.00347724 0 0.162906 0 0.118067 -0.119431 0 0.000314059 0 0 -0.060814 -0.000292107 -0.0186164 0 0.00118099 0 0.000450598 -0.0329869 -0.00270035 -0.00313877 -0.00343631 0 -1.98926e-05 0 0 0 5.92939e-05 0 0 0.000968324 -0.000157474 0.013001 0.0122536 0 0 -0.00205714 0 -0.00144858 0 0 -0.00336866 -0.00331367 0.137335 -0.00241362 0 0 0.0827456 -0.0611221 -0.0123739 -0.0443409 0.17477 0 0.0490345 0.00296687 0.0352695 0 0 0 -0.0859958 0 0.0151342 0.316717 0 0.00212223 0.0201955 -0.0918733 0 0.000175474 0.00306352 -0.0151559 0.161073 0 0.00313921 -0.0344196 0.308843 -0.00651349 0.898425 0.101215 -0.0315484 0.195573 0.87067 0.00286528 0.0553632 0.483103 0.000377191 0.0512117 -0.00680009 0.0523447 0.0221713 0.0221111 -1.10433 -0.265292 0.323816 -0.00722781 0.286039 -0.19116 0.184039 -0.279866 0.679561 -0.049796 -1.07896 0.543423 2.99245 0.500979 -0.00102553 0.0606281 1.29719 0.0281106 0.0120005 0.0181361 0.0905673 -2.123 0.0609297 -0.0284562 0.292549 -0.898254 0.00513806 0.0721325 -0.25446 -0.190184 0.208903 1.40548 3.11384 0.667752 -0.0362607 1.44469 0.0109522 -0.891953 0.126387 -0.483271 0.383251 0.260211 1.24608 1.01244 -0.222788 -0.286381 -0.436895 0.390121 0.356886 0.0367664 0.673273 -0.185176 0.0144985 -0.0264413 0.000887273 -0.366046 -0.12759 0.148667 -15.9786 -2.43445 -4.85566 -0.518355 -2.06915 4.29225 -0.0826111 -0.403234 0.573707 0.553673 -0.00678785 -0.223064 0.542872 -0.575569 1.65616 0 +190 0 0 0 0 0 0.517993 0.14461 -0.0413824 -1.18247 0 0 0.297219 -0.329845 0 -0.945124 -0.149513 0 0 0 -0.572613 2.59907 0 0 0 0 -0.150985 0 0 -0.28974 -0.634334 -0.0523087 0 -0.508797 0 0 -0.0988683 0.0224108 0 0 0.639086 0.665709 0 0 0.276358 -2.61309 0 0.519826 -0.576013 -2.56933 -0.273084 -1.59781 -0.246532 0 0.370373 -0.497397 0.52355 0.192005 0.36492 -0.143998 0 0 -0.414762 -1.43588 0 -0.0419105 0.894569 0.575875 0 0 0 0 -0.338899 0.281009 0 -1.0365 0.408474 0 0 0 1.8212 0 -1.87284 3.59508 0 -0.0678561 -0.361374 1.65832 0 -0.431246 -0.196 -0.708454 0.418349 0 0 0 0.189112 -0.00799993 0 0 0 0.0073053 -0.070475 0 -0.00229747 0 -0.000744456 -0.041884 0 0 0 0 -0.13743 0 -0.0117423 0 -0.425474 0 0.239656 -0.226855 0 0.000136455 0 0 0.226907 -0.00130242 -0.0764773 0 -0.00929695 0 -0.0036329 -0.0621707 0.0168096 -0.0251183 -0.0160613 0 -4.08379e-05 0 0 0 -0.00046678 0 0 0.00302606 -0.00030065 -0.10302 0.0189514 0 0 0.0234722 0 0.0101254 0 0 -0.0506606 0.000301291 0.32289 0.00919932 0 0 -0.111542 0.120037 -0.0322209 0.152404 0.182387 0 0.0331517 -0.00470823 0.24441 0 0 0 1.00409 0 0.105968 -0.534001 0 0.00888397 -0.0275791 0.109603 0 0.000973697 -0.00374771 0.0172175 -0.273934 0 0.517993 0.189112 0.14461 -0.00799993 -0.347498 0.0295012 0.0729095 -0.198778 1.82425 0.0260667 -0.0198866 -0.117439 0.00459852 0.00639382 -0.015528 0.0781852 -0.00266205 0.111451 -0.943272 0.660491 -0.00671647 -0.127698 -0.103041 -0.138577 0.00633945 -0.0751948 0.931173 0.0258224 4.69041 0.112027 -0.289228 0.347929 -0.00420837 -0.869153 -0.168482 -0.0115487 0.00656566 -0.0354998 0.0343023 -0.522431 0.130416 -0.0113463 1.61717 -1.52846 -0.00372915 0.0237595 -0.217838 0.136472 -0.109957 -0.589124 1.05944 -0.126458 0.0734544 0.906324 -0.0240797 -1.31119 -0.18879 -0.220672 0.345099 -0.163602 -0.944609 0.205061 -0.110152 -1.91 -2.66847 0.0832139 0.100073 0.0307803 0.0822171 0.20662 -0.0170305 -0.00775153 -0.0688704 -0.0895211 0.0242283 -0.37371 1.54437 0.424175 2.0783 -0.253158 -1.2666 3.17393 -0.0246051 -0.343256 0.362575 0.940091 -0.034214 -0.0903145 0.112337 -0.0907077 0.582259 0 +191 0 -1.33222 -0.470107 -0.0362852 -0.250196 0.110661 -0.166675 -0.11444 -0.303708 -0.243709 0.593875 -0.0682754 -0.276942 0.00281029 -0.0599176 0.0385661 -1.84457 -10.4097 -0.0852984 0.0820088 -0.66315 -0.063414 0.0271 -0.00361767 0.0231036 0.197986 -0.367774 -0.0947494 0.309932 -0.262595 -0.176181 -0.0306905 0.32508 0.429683 -0.298892 0.0944386 -0.00560283 -0.288824 4.09548 -0.264465 -0.48783 0.0232894 -1.09508 -0.024767 -0.948965 0.172204 -0.370562 0.121964 0.660179 0.0790012 -0.908917 0.128883 3.86475 -0.13359 0.121399 -0.138648 0.0117965 -0.0735966 -0.0833046 0.079238 -0.0397688 2.44945 0.722085 4.50652 -0.132669 0.415816 0.0376388 1.48574 -0.102048 0.0457694 0.789259 0.495103 0.00751642 0.39212 0.633852 -0.169479 0.985769 -12.8514 -1.95922 -0.195173 -0.832874 1.32145 -3.61543 -0.0599967 0.0955525 -0.525994 -0.0644552 -0.0445966 0.0213769 -0.0603755 0.164566 0.287836 0 0 0 0 0 -0.0362852 -0.250196 0.000610303 0 0 0 0 2.41467e-05 0 -0.0129967 0 0 2.14263e-05 2.00722e-06 -0.00569919 0 -0.00155723 -0.0305985 -0.0560329 0 0 -0.228308 4.99902e-07 0 -0.00594835 -0.764917 0 0 -0.0300275 -0.152962 0 -0.0302709 0 -0.0260635 0 0 -0.00334229 0 0 -0.300906 0.000480744 0.000213057 0 0.0121369 0.0024708 0 0 0.0115121 0 8.38875e-05 0.0279584 7.55891e-05 0 0 -0.000178928 -0.00166709 0 0.000330313 0.0179621 -0.00137544 -0.278706 -0.000453642 0.0337028 0 0.00210042 0.0332437 -0.0364785 0.0100002 -0.00377035 0 0 0 0.477321 -0.00796486 0.0989478 -0.000557756 -0.000466337 0.132835 -3.00123e-05 -2.73433e-05 2.92469e-06 0.0222794 0 0 0 0 0 0 0.110661 0 -0.166675 0 0 0 0 0.301421 -0.560762 0 0 0.578501 0 0.0691441 0 -0.00491878 0 0 -0.0520228 0 0.471721 0.0686377 0.163473 0.00946582 0 0 -0.0877361 0 -8.66024 0 5.62116 -0.654899 0 0.575708 1.41081 0.0224019 0 0.0226591 0 0 -0.0540183 0 -2.38888 -0.265287 0 0 -0.00565272 0 0 0.109624 5.52493 -0.21303 0 -1.98572 0 0.509862 0.299564 -0.0426797 0.871621 0.143633 0.0131886 1.09369 0.092222 1.1145 -1.14114 0.0130408 0 0 0 -0.237919 0.018766 0 0 0 0 0.282346 -38.4671 -5.93999 -2.03407 -2.13538 1.07481 -2.15755 -0.239474 0.0911499 -0.199536 -0.221862 0 0 0 0 0 0 +192 0 0.296096 0.176919 -0.0122078 -0.0757353 0.274133 -0.106133 1.00763 -0.745752 -0.0738079 0.791354 0.0749249 -0.204693 0.000916796 0.183891 0.0151249 1.35063 7.88646 0.00860157 0.0337094 -0.403892 -0.00487473 0.131729 -0.00115843 0.120029 0.124254 0.163291 -0.00463117 0.592846 0.912972 -0.190742 -0.00965613 0.0870983 -0.0991592 -0.202712 0.39161 0.00431526 0.156184 -1.76717 0.173239 -0.499071 0.00792699 -0.012747 0.0128543 0.831207 0.0627498 -0.516648 0.738543 0.21575 -0.0157334 0.944043 -0.00631936 -2.46806 -0.0780754 0.0537429 -0.00803132 -0.325592 0.289655 0.149762 -0.166687 -0.0138721 -1.42944 -1.40527 -1.40613 0.128802 -0.000530199 -1.04884 0.0631834 0.190636 0.0129785 -0.770895 0.00794109 0.0782237 -0.100151 -1.70745 -0.455999 0.0939349 0.46524 -2.8409 2.13063 -0.885375 -0.146149 -0.0923987 -0.274996 0.262315 -1.15302 1.03439 -0.0162507 -0.0271214 -0.152609 -0.163168 -1.00073 0 0 0 0 0 -0.0122078 -0.0757353 0.000518319 0 0 0 0 2.07444e-05 0 0.00245318 0 0 -0.000128972 -2.41422e-05 0.00202565 0 8.50394e-05 -0.0153722 0.0246271 0 0 -0.0714465 -1.39883e-06 0 -0.00211767 -0.517122 0 0 -0.0013398 -0.100206 0 0.000101236 0 -0.00985884 0 0 -0.000583125 0 0 0.0682388 0.000414856 -0.00226037 0 0.0104405 0.00686479 0 0 0.0107464 0 -0.00013748 0.0847241 -0.000493689 0 0 0.000297435 -0.00158038 0 0.000524374 0.0193762 0.000375381 0.504365 -0.0010033 0.00574433 0 0.00246424 0.0142181 0.120586 -0.00181009 0.0138058 0 0 0 0.0286538 0.019974 -0.00996208 0.000845192 0.000836798 -0.0225933 0.000101894 8.93507e-05 0.00018815 -0.0118643 0 0 0 0 0 0 0.274133 0 -0.106133 0 0 0 0 -0.319091 -0.568122 0 0 0.252346 0 0.0478091 0 -0.00932868 0 0 0.378735 0 -0.243152 -0.161631 -0.0915192 0.041289 0 0 -0.183717 0 6.30884 0 -3.12526 -0.0101076 0 -1.29216 -1.27962 0.000251823 0 -0.0556246 0 0 -0.0394888 0 1.15715 1.40648 0 0 0.144596 0 0 -0.236731 -3.033 0.486886 0 -0.30058 0 0.219075 -0.0103079 -0.154954 -0.644498 0.180041 0.121375 -0.863048 -0.135503 1.41761 4.18356 -0.123986 0 0 0 0.256147 -0.0839755 0 0 0 0 -0.0364803 6.54373 -2.45405 7.57933 -0.543483 0.665145 0.938034 -0.198442 0.206604 -0.215764 0.569602 0 0 0 0 0 0 +193 0 0.35231 0.408142 -0.0173264 0.0302562 -0.0463109 0.190538 -0.887063 -2.07444 -0.182993 0.804115 -0.221243 0.166222 0.00197239 0.131593 0.022423 0.868712 -0.19244 0.131159 0.0679998 0.0797514 -0.00379677 -0.417754 -0.00258321 0.223816 -0.541294 0.554676 -0.041635 -0.374426 0.0848504 0.0817692 -0.0231489 0.173498 -0.687492 -0.00269798 -0.335703 -0.0127188 -0.334309 -3.16095 -0.366987 0.636303 0.0182752 -1.58079 -0.0249962 1.07721 0.148131 0.483754 -0.103506 0.579009 0.0317554 -0.255163 0.195822 -2.91571 -0.10985 0.155066 -0.0735341 -0.971472 0.284176 0.427624 -0.184652 -0.0482445 -0.509303 -2.39342 -1.81724 -0.766104 -0.159394 -0.594848 0.166637 -0.136436 0.0495777 -0.388139 0.33595 0.0864001 0.126261 -0.853948 -0.236065 0.369172 11.7511 -1.38802 8.16524 -0.0930578 1.04805 1.21355 -0.696031 0.555227 -0.958237 1.8671 -0.0383624 0.0364512 -0.0921722 0.194791 -0.0930066 0 0 0 0 0 -0.0173264 0.0302562 -0.00192527 0 0 0 0 -7.41643e-05 0 0.00542093 0 0 -0.000436633 -0.000130848 0.00290146 0 -5.34023e-06 -0.0152307 0.0541455 0 0 0.214004 -8.17647e-06 0 -0.0131961 0.101673 0 0 0.0281384 -0.0420161 0 -0.0950682 0 0.00523646 0 0 0.00108264 0 0 -0.432801 -0.00147788 -0.00763485 0 -0.0382661 -0.00624022 0 0 -0.0800134 0 -0.000480918 -0.174986 -0.00147092 0 0 0.000742482 0.00512684 0 0.000482041 0.0640196 0.00652766 0.326895 0.0038801 0.0333168 0 -0.013397 0.0205934 0.224715 -0.0356444 0.111491 0 0 0 1.37799 0.062889 -0.0293168 0.00357035 0.00294951 0.131262 0.000279303 0.000241661 0.000701178 -0.0165475 0 0 0 0 0 0 -0.0463109 0 0.190538 0 0 0 0 -0.220507 -1.21847 0 0 0.42966 0 0.0674472 0 -0.0411052 0 0 0.818298 0 -0.809133 -0.0694495 0.226663 0.113619 0 0 -0.503778 0 0.764267 0 -2.18088 0.110896 0 -0.510968 -1.0388 0.029449 0 -0.0174929 0 0 -0.108837 0 -0.0198401 2.15478 0 0 0.28475 0 0 -0.496051 -0.937639 0.0363598 0 -3.15037 0 0.0546943 0.115677 -0.104232 0.112968 0.236684 0.258031 -0.238245 -0.0936825 1.73619 -3.5256 -0.0894957 0 0 0 0.0551087 0.00694353 0 0 0 0 0.230185 2.13186 -4.97458 6.80689 -0.601342 0.268285 0.984369 -0.248827 0.0936238 -0.155815 0.280346 0 0 0 0 0 0 +194 0 -1.2055 -0.218478 -0.0303658 -0.154709 -0.0815827 -0.0883971 -0.566669 -0.755305 -0.380763 0.634626 -0.334354 0.0634369 0.00290291 0.578229 -0.0810428 0.915873 0.844922 0.168433 -0.117095 5.02211 0.0208938 0.0927427 -0.00513528 0.135796 -0.0333192 0.363939 0.0448503 0.316012 0.0494039 0.063848 -0.0431279 -0.684079 0.634787 0.109895 0.000271275 -0.0448606 0.131951 2.79274 -0.478855 1.98476 0.0149768 -0.407406 -0.0721481 0.862304 0.0140829 0.613715 0.326697 -0.956459 0.231641 -0.000491803 0.187972 -6.9331 0.294634 -0.183648 -0.129117 -1.60527 -0.0767435 0.178777 0.02217 -0.0179258 -0.0253282 -4.47252 0.784003 -1.74557 -0.747128 0.265404 0.389923 0.495954 0.117988 0.770641 -0.294048 -0.822292 0.308842 -1.75175 0.219631 0.0480387 -14.3375 -2.07502 -1.27683 -0.330235 0.730384 -2.32873 -0.292168 0.423028 -0.5242 1.0692 -0.00974452 0.171779 -0.0374125 0.712373 -0.14257 0 0 0 0 0 -0.0303658 -0.154709 -0.000487106 0 0 0 0 0.000304065 0 -0.0192214 0 0 1.86288e-05 -0.0001737 -0.00473811 0 -0.00142889 -0.0131399 -0.0561909 0 0 -0.260722 -4.14705e-06 0 0.00837048 -0.253859 0 0 -0.0274455 -0.0341628 0 0.0488129 0 -0.034408 0 0 -0.0030802 0 0 -0.158076 0.00638422 0.000772804 0 -0.000311617 -0.0304288 0 0 0.082496 0 -0.00417123 0.155411 0.00437874 0 0 -0.00134994 -0.000809425 0 0.0135214 0.074548 -0.00215657 -0.846721 -0.0129695 0.00193643 0 -0.0232458 0.0098877 -0.230901 0.0454647 -0.00217617 0 0 0 -1.1825 -0.128719 -0.00869447 0.00896943 -0.0205123 -0.00574319 -0.000190289 -8.26713e-05 -0.00363457 0.0373453 0 0 0 0 0 0 -0.0815827 0 -0.0883971 0 0 0 0 0.0809637 -0.214234 0 0 0.780067 0 0.0818658 0 0.0160797 0 0 -0.1239 0 0.512776 0.0775353 0.415264 0.0283106 0 0 0.0254096 0 -0.778635 0 6.58604 0.0849141 0 0.315864 2.09558 0.0409758 0 0.0302157 0 0 0.00265904 0 0.193989 -0.266073 0 0 0.0512535 0 0 -0.492195 3.46563 0.00992412 0 -1.81135 0 0.652051 0.381992 -0.0998859 0.770358 0.181895 0.0571619 0.838705 0.0687672 1.21141 2.55561 -0.0142302 0 0 0 0.137748 0.0719183 0 0 0 0 0.0422521 -45.3131 -8.11124 -1.14586 -2.54357 1.13007 -2.35518 -0.353329 0.109745 -0.236195 -0.142554 0 0 0 0 0 0 +195 0 0.220527 0.150908 -0.00611383 -0.0403884 0.448996 0.022816 -0.469766 -2.43553 -0.0390357 0.411374 -0.180283 -0.693541 0.0009526 -2.63022 -0.041916 0.475663 2.8988 0.124649 -0.0515567 -0.903655 -0.00350195 -0.192378 -0.00216759 -0.057317 -0.322293 0.127995 0.00689256 0.367129 2.06161 -0.493291 -0.012942 -0.330142 -0.422094 0.205807 -0.0103653 -0.0238974 -0.0229324 -1.26772 -0.131195 -0.372625 0.00494019 0.497984 -0.0218101 -3.25009 0.00282092 -0.232059 0.995403 -0.441803 0.09743 -1.25666 0.164022 1.78447 0.103779 -0.0607336 0.34671 3.00692 0.387312 0.0731396 0.00921149 -0.00212234 -0.599546 0.741839 -0.745164 1.22967 0.133196 0.354104 -0.21542 0.287277 0.0172864 -0.756833 -0.330461 0.0117114 0.0635267 2.08153 -0.408837 -0.0564468 1.62856 -2.57829 8.69591 -1.3278 2.03467 -2.4301 -0.0350041 0.548041 -1.92648 3.08766 -0.00195191 0.0466133 -0.717329 1.08369 -5.94941 0 0 0 0 0 -0.00611383 -0.0403884 0.00216367 0 0 0 0 0.000398717 0 -0.0141009 0 0 -0.000746316 -0.00151702 -0.00795085 0 -0.00109509 0.000575267 -0.107675 0 0 0.179026 -9.84644e-05 0 0.016766 -0.0215078 0 0 0.0256272 -0.0311265 0 0.103601 0 0.0090786 0 0 0.0017621 0 0 0.336155 0.00789228 -0.00883059 0 0.0416458 0.000360481 0 0 0.162916 0 -0.000897606 0.0668896 0.0035823 0 0 0.00196891 -0.00709336 0 0.00119043 0.0124573 0.0107156 0.306411 -0.015707 -0.0341896 0 0.00745072 -0.0329509 0.140494 -0.0358168 0.0571414 0 0 0 -0.159116 0.0787929 0.406568 -0.00096344 0.021525 -0.193025 0.000614055 0.00126331 -0.0112682 0.0857122 0 0 0 0 0 0 0.448996 0 0.022816 0 0 0 0 -0.469423 -0.749911 0 0 0.332313 0 0.039258 0 -0.0372405 0 0 0.975106 0 -0.329187 -0.107944 0.0640442 0.102623 0 0 -0.467631 0 3.57207 0 -0.76407 -0.243858 0 -1.42828 -0.480571 0.00458103 0 -0.0232297 0 0 -0.0507098 0 0.146676 2.37012 0 0 0.233149 0 0 -0.421198 -1.35261 0.228273 0 -1.81131 0 0.621594 0.0396365 -0.153494 -0.415875 0.193929 -0.141807 -0.501174 -0.192707 0.930346 -3.72678 -0.231464 0 0 0 0.185841 0.0177696 0 0 0 0 -0.0111686 -11.9935 -4.79986 8.21176 -1.28518 0.892347 0.0432341 -0.200842 0.142667 -0.183194 0.55058 0 0 0 0 0 0 +196 0 1.52511 -0.0786125 0.0666015 0.388583 -0.352006 -0.278916 0.851549 2.76284 0.342403 -1.54707 0.220189 0.212456 -0.0113356 0.112848 -0.00721736 -0.543839 1.84986 -0.151351 -0.0433198 -0.946821 0.0162884 0.456581 0.0110986 -0.219629 0.825458 -0.5344 -0.0358259 0.551708 0.139039 -0.0408751 0.0684705 -0.201546 0.268429 -0.131737 0.448133 0.0336081 -0.127653 -2.09724 0.667696 -1.20116 -0.0898748 0.00357085 0.092026 1.05105 -0.66902 -0.969275 0.484782 -0.367436 -0.229489 -0.0850896 -0.53593 -3.76888 0.0725171 0.105503 -0.0393857 -3.06793 0.0527401 0.218841 0.632601 0.242526 -0.488874 0.775564 1.91207 -2.66148 -0.598875 0.124778 2.07899 0.351654 -0.116136 1.66927 0.152255 -0.109289 -0.209332 -1.42859 -0.473227 -0.142682 8.12283 3.33981 -4.17334 2.96469 -2.85662 2.09194 1.35403 -1.34499 1.86432 -3.87143 0.462923 -0.521244 0.917226 -0.9031 -0.40124 0 0 0 0 0 0.0666015 0.388583 -0.00330488 0 0 0 0 -0.000813759 0 -0.0025053 0 0 -0.00270608 -0.00443291 0.00718071 0 0.000292807 0.0368387 0.0597709 0 0 0.127068 -0.000250153 0 -0.0256279 0.393113 0 0 0.01145 0.114295 0 -0.168022 0 0.0406842 0 0 0.00332669 0 0 -1.13354 -0.0160749 -0.0505443 0 -0.0596183 0.0185698 0 0 -0.16829 0 -0.00048074 0.205584 -0.00670286 0 0 0.00426208 0.00926516 0 0.00339922 0.117907 0.0184295 -0.142206 0.046076 0.00325576 0 -0.0432586 0.0215455 0.26978 -0.0957414 -0.0341109 0 0 0 6.48904 0.432589 0.0463717 0.0392872 -0.00269305 0.268697 0.00182999 0.000607301 0.013752 -0.050684 0 0 0 0 0 0 -0.352006 0 -0.278916 0 0 0 0 0.0916251 0.524925 0 0 -0.552469 0 -0.0643026 0 -0.0152782 0 0 -0.252653 0 0.629831 0.0266948 -0.104606 -0.0377508 0 0 -0.109857 0 -0.732802 0 -1.65569 -0.610442 0 0.448003 0.311659 -0.0147494 0 0.00740532 0 0 0.0326947 0 -1.47675 -0.485939 0 0 -0.0689207 0 0 0.430888 -3.00494 -0.0445727 0 0.5898 0 -0.303843 -0.0667995 0.0139367 0.066652 -0.0895887 -0.544099 -0.223444 0.0631512 -0.41774 -2.85397 0.0203292 0 0 0 -0.130123 0.0313378 0 0 0 0 -0.0813242 18.9888 3.00337 -0.603121 1.17727 -0.730199 0.980909 0.335076 -0.246595 0.27276 -0.204782 0 0 0 0 0 0 +197 0 0 0 0 0 0.198149 -0.196371 0.109115 0.314999 0 0 -0.106279 -0.432449 0 -0.223568 -0.00340693 0 0 0 0.022026 1.39 0 0 0 0 0.293101 0 0 0.537852 0.681699 -0.340191 0 -0.0492196 0 0 0.165137 -0.0105982 0 0 -0.394436 0.159502 0 0 -0.0245836 -0.019307 0 -0.295198 0.529836 0.106768 0.0235265 -0.433817 0.0839404 0 -0.0713185 -0.110561 0.354173 1.77163 0.188454 0.233592 0 0 -1.15525 -2.50785 0 -0.0249772 0.141253 -0.39901 0 0 0 0 0.0535082 -0.111293 0 0.234209 -0.231736 0 0 0 -2.08528 0 0.25204 -2.13342 0 -0.00584356 -0.763215 -0.322291 0 0.134268 -1.18874 3.01136 -6.20631 0 0 0 0.00502656 2.85033e-05 0 0 0 9.76286e-05 0.000850195 0 1.04059e-06 0 8.35376e-06 7.06485e-06 0 0 0 0 0.000259493 0 1.49226e-06 0 0.00134674 0 0.00192236 -0.00231377 0 -2.37233e-06 0 0 -0.0027762 0.000103035 -1.25142e-05 0 4.89978e-06 0 5.96555e-05 0.00136562 -0.000208094 0.00146843 7.56019e-06 0 5.86158e-07 0 0 0 3.43803e-07 0 0 -0.000271102 9.41781e-05 -0.00108306 0.000679245 0 0 0.000103703 0 -0.000102757 0 0 -0.000136189 0.000373733 -0.0010792 0.000580197 0 0 -0.00147314 -0.000702583 1.99834e-05 -0.000112888 -5.33681e-05 0 0.00113681 0.000163169 0.00725662 0 0 0 -0.00107713 0 -0.00117445 0.00222041 0 0.000145777 -0.000275606 0.000241687 0 -0.000130036 0.000245846 -0.00046279 0.000680622 0 0.198149 0.00502656 -0.196371 2.85033e-05 0.358014 0.0158745 4.37702e-05 0.566127 -0.00846677 -1.59209e-07 -0.0372613 -0.00743502 -7.15405e-10 -4.62505e-05 2.05537e-07 -2.35551e-05 -0.0260915 -3.39043e-05 1.09261 -0.131188 0.278101 0.0340758 -0.00198808 0.0975424 -0.145375 0.00436817 -0.00473787 0.0188844 4.05796 -0.241025 2.21615 -0.528698 9.23584e-10 0.400091 1.04672 -1.38918e-05 -0.00750133 0.103659 -0.066133 0.002214 -4.19181e-05 -0.00359125 0.626107 1.27479 -0.00584484 -0.0310636 0.0885851 0.0263662 -0.0475297 -0.0549317 -2.36187 -0.577957 0.0243634 -0.30542 -6.83328e-08 -1.04297 -1.70041e-05 0.260563 0.00140492 0.038416 -0.309858 -0.00240372 0.216482 0.000475318 -2.04817 -0.216651 0.228253 -0.139292 -0.0171849 0.165572 2.08956e-05 0.056491 6.26281e-08 -0.0280233 0.141911 1.43711e-05 -15.3463 0.017559 -3.29838 0.000102836 1.12819 -3.16062 1.74025e-07 0.3654 -0.786478 0.527412 4.45278e-10 0.194444 -0.368388 0.514634 -0.112465 0 +198 0 0 0 0 0 0.863646 0.214489 -0.317375 -2.92 0 0 0.0237704 -0.273535 0 -0.402519 -0.000745614 0 0 0 -0.00137105 3.54097 0 0 0 0 -0.441744 0 0 -0.110812 -4.17463 -0.197512 0 -0.0452195 0 0 -0.0500473 0.00511866 0 0 0.149885 -0.324937 0 0 0.0487898 0.507481 0 -0.44445 -0.604874 -0.19938 -0.0483775 1.0625 -0.0299765 0 0.0251385 0.0884341 -0.418036 -0.69198 -0.109591 0.0577045 0 0 0.784395 -1.3886 0 -1.17707 -0.550454 -0.699629 0 0 0 0 -0.132112 -0.0541334 0 -2.31373 0.571145 0 0 0 5.39625 0 -0.0201425 4.67321 0 -0.174614 0.534193 4.74523 0 -0.311817 0.933309 -1.49525 9.26336 0 0 0 0.0137308 7.78611e-05 0 0 0 0.000319357 0.00222469 0 3.22095e-06 0 2.26948e-05 1.70195e-05 0 0 0 0 0.000818624 0 4.48483e-06 0 0.00306634 0 0.00623001 -0.00556901 0 -6.92715e-06 0 0 -0.0074317 0.000279104 -3.13882e-05 0 1.30208e-05 0 0.000156099 0.00341103 -0.000628187 0.00397771 1.94634e-05 0 1.59243e-06 0 0 0 9.13626e-07 0 0 -0.000734367 0.000246434 -0.00309915 0.00184813 0 0 0.00020259 0 -0.000268881 0 0 -6.22996e-05 0.000918132 -0.00266063 0.00151795 0 0 -0.00398187 -0.00210267 -1.17303e-05 -0.000120269 -0.000176981 0 0.00325164 0.000507636 0.0170546 0 0 0 -0.00245246 0 -0.00318138 0.00594388 0 0.000394885 -0.000737778 0.000713027 0 -0.000352245 0.000658113 -0.0012446 0.00182198 0 0.863646 0.0137308 0.214489 7.78611e-05 0.780779 0.20458 0.000119565 -0.707899 -0.0170309 -4.34903e-07 0.00457654 -0.0246526 -1.95424e-09 -0.0001425 5.61457e-07 -5.10892e-05 -0.00133392 -9.26147e-05 0.552475 1.7117 -0.00811931 -0.349794 -0.00844826 0.100231 -0.0212153 -0.348445 -0.00938005 0.0222154 4.49758 0.100137 1.38023 0.487694 2.52291e-09 -2.04384 -0.0497065 -4.9176e-05 0.00249805 -0.0839906 0.0228475 -1.96512 -9.18166e-05 -0.0574448 1.79552 1.75427 0.000716761 0.0135046 0.234241 0.185028 -0.0605528 0.353655 1.96116 -0.06949 -0.021332 -0.347714 -1.86661e-07 -0.111487 -3.89405e-05 -0.208858 0.00998225 0.155511 -0.429936 -0.000814094 0.0867404 -0.00284402 -2.25303 -0.270664 0.378641 0.0367629 0.540667 -0.000210401 6.24275e-05 -0.0156478 1.71078e-07 0.0503042 -0.211947 3.29107e-05 -9.55776 0.0802594 5.4185 0.000311603 -0.31675 5.28424 5.03892e-07 -0.012446 0.0952319 2.51046 1.21635e-09 -0.109154 0.418388 -0.69973 2.93797 0 +199 0 0 0 0 0 0.00326268 -0.317154 0.938009 1.24101 0 0 -0.0381803 -1.63722 0 -2.30709 0.00381749 0 0 0 0.041726 -1.37531 0 0 0 0 0.244941 0 0 0.611515 -0.271868 -0.927275 0 0.101302 0 0 0.266365 -0.00997313 0 0 -0.36735 -1.56866 0 0 -0.133171 -3.6963 0 -1.22905 0.593381 0.555365 0.202835 -0.837405 0.0793742 0 -0.0651715 -0.0295648 0.0131923 2.5719 -0.0328153 -0.0325246 0 0 -2.28696 3.2767 0 0.853184 0.149267 -1.67641 0 0 0 0 0.0511664 -0.301704 0 3.12802 -0.815118 0 0 0 -2.82063 0 0.583752 -0.735062 0 0.6677 -0.709703 -2.3586 0 0.820424 -1.36775 2.4295 -4.64258 0 0 0 -0.0194044 -0.000110033 0 0 0 -0.000331452 -0.00359564 0 -3.69056e-06 0 -3.26488e-05 -2.22785e-05 0 0 0 0 -0.000988614 0 -5.71183e-06 0 -0.00385674 0 -0.00658175 0.00758173 0 1.00183e-05 0 0 0.0109481 -0.000405298 4.32847e-05 0 -2.00818e-05 0 -0.000252295 -0.00492773 0.000919332 -0.00577621 -2.79048e-05 0 -2.29086e-06 0 0 0 -1.40908e-06 0 0 0.00106641 -0.000398298 0.00448913 -0.00266933 0 0 -0.000262601 0 0.000434578 0 0 -0.000172226 -0.0012383 0.00355101 -0.00214926 0 0 0.00580606 0.0030787 1.26964e-05 0.000122594 0.000319395 0 -0.00467939 -0.000738734 -0.0234132 0 0 0 0.00308462 0 0.00461981 -0.00875628 0 -0.00057343 0.00108686 -0.00113136 0 0.000511511 -0.000969505 0.00182324 -0.00268407 0 0.00326268 -0.0194044 -0.317154 -0.000110033 0.367002 0.0530283 -0.00016897 0.151163 0.0296565 6.14605e-07 0.0240576 0.0349333 2.76173e-09 0.000201732 -7.93452e-07 8.13821e-05 0.0330182 0.000130883 -0.287836 0.0672214 -0.333648 0.0827217 0.0113149 -0.0898508 0.294541 -0.0596393 0.0157236 0.00418647 0.0031709 -0.125114 -0.522059 -1.24177 -3.56538e-09 0.880835 -0.761336 6.71728e-05 -0.00584282 0.0238701 -0.042652 -0.31833 0.000150551 -0.0116513 -1.27331 -0.0270394 0.00210703 -0.0212461 -0.118687 0.0117779 0.0235465 0.398819 -0.872434 -1.53372 -0.0357396 -2.26393 2.6379e-07 -2.17085 6.19128e-05 0.169888 -0.0134232 -0.280248 -0.516131 0.00640049 -0.0489828 0.0120473 -6.83003 -0.0160049 0.364645 0.00818787 -0.0978085 0.0363463 -8.83387e-05 0.0209083 -2.41768e-07 -0.050787 -0.0132787 -5.23259e-05 3.61512 -0.119024 -3.39425 -0.000449738 0.0765579 1.73282 -7.12721e-07 0.188115 -0.235146 0.31217 -1.71894e-09 0.179185 -0.23785 0.303197 0.360391 0 +200 0 -0.0825556 -0.232015 0.00051196 0.010388 0.185325 -0.00490765 -0.0327161 0.561817 0.00297759 -0.337823 0.0251537 -0.122713 -6.53467e-07 -0.540332 0.000928775 -0.30609 -0.582548 -0.0678349 0.00154984 -1.31282 -0.00715739 0.20538 9.07519e-07 -0.0216886 0.102111 -0.210554 0.000935705 -0.228322 -0.553384 -0.0238753 5.30654e-05 0.0490038 0.687925 0.0146274 0.0022399 0.000560675 0.0118658 2.57798 0.0505644 -0.582558 -3.4479e-05 0.17312 0.00118208 -1.29587 -0.00159017 -0.196358 -0.391681 0.0738196 -0.00189561 -1.54807 0.0506933 2.15521 -0.00174599 0.000927144 -0.0272579 0.525517 0.114232 -0.0493654 0.00689119 4.17376e-05 1.41285 2.31848 -0.239792 -0.896469 0.333275 0.9989 0.157658 -0.11393 -5.71642e-05 0.108944 -0.0495219 0.0711595 -0.0660512 1.2438 0.514622 0.399742 -13.2455 -0.331072 -4.50939 -0.226421 -0.345873 -1.79081 0.12173 -0.359317 0.769891 0.00604296 3.10367e-06 -0.000111645 0.00436278 -0.143237 2.66065 0 0 0 0 0 0.00051196 0.010388 0.00016874 0 0 0 0 1.94422e-06 0 -0.00114779 0 0 0.000452398 0.00014505 -0.000202882 0 -2.332e-05 0.000235826 -0.011501 0 0 -0.0178171 1.0548e-05 0 -3.13898e-05 -0.0119163 0 0 -0.00273782 0.00421421 0 -0.0103395 0 -0.000174037 0 0 -4.16758e-05 0 0 -0.00253854 3.06623e-05 0.00618512 0 0.00313552 0.00651876 0 0 -0.0107199 0 0.000325439 -0.0344018 -0.000109992 0 0 -0.00092732 -0.000275046 0 0.00153184 0.00137378 0.00243103 -0.101988 0.00720668 -0.00260021 0 0.00112008 0.00410524 -0.00037451 -0.00202319 -0.0128016 0 0 0 0.180162 0.00674827 0.0294694 -0.00281161 0.00450463 0.0350327 -0.000599892 0.00114163 -0.00234365 0.00667603 0 0 0 0 0 0 0.185325 0 -0.00490765 0 0 0 0 0.138178 -0.17789 0 0 -0.244052 0 -0.032166 0 -0.00940283 0 0 -0.824785 0 0.394806 0.0267479 -0.102023 -0.117606 0 0 -0.066039 0 -5.04158 0 1.03547 0.10474 0 0.216831 0.75228 -0.0115658 0 0.0114452 0 0 -0.0317341 0 -0.85008 -1.89424 0 0 -0.26999 0 0 0.323884 -0.787538 0.00656871 0 0.969263 0 0.246233 -0.170831 0.113053 0.151311 0.0499077 -0.123339 0.0599207 -0.026238 0.662148 4.47055 0.0598861 0 0 0 0.00235213 0.0406534 0 0 0 0 0.0362114 -4.91255 1.73372 -2.85123 0.409459 -0.464672 -0.0959866 0.147635 -0.151645 0.192433 -0.134743 0 0 0 0 0 0 +201 0 1.96749 0.674078 -0.000955242 -0.040232 0.39993 0.329443 -0.79411 -2.42144 -0.00428079 0.033338 -0.00870094 0.109545 1.12434e-06 0.0427305 -0.000513662 1.37348 4.08195 -0.0110545 -0.00131928 0.613105 -0.000690599 -0.310877 -1.44597e-06 0.00661085 -0.58768 0.735177 4.98521e-05 -0.495823 -1.27576 0.129687 -8.06429e-05 -0.0129592 -1.04128 -0.019991 -0.301144 -0.000391512 0.0289944 -5.08952 -0.0389447 0.999832 6.34742e-05 -0.117247 -0.0011836 0.66903 0.00337163 0.835197 -0.839999 -0.0469903 0.00208642 1.21467 0.0446719 -3.03794 0.0015078 -0.00135882 0.0455301 -1.31552 0.138995 0.0529366 -0.00917615 -7.45284e-05 -2.26421 -0.441787 -0.507302 2.26086 -0.114965 0.774635 -0.438545 0.0706773 7.82669e-05 0.0163759 -0.208408 0.0118872 -0.0207289 0.593573 1.09003 -0.139883 26.1479 1.32771 12.5265 0.83603 -0.430199 12.2172 -0.0296985 0.189363 -0.376488 7.78577 -6.5807e-06 0.0001701 -0.00686033 0.0436402 6.13383 0 0 0 0 0 -0.000955242 -0.040232 0.000107479 0 0 0 0 7.7797e-07 0 0.00132523 0 0 -0.000666166 -0.000221979 0.000248432 0 3.24616e-05 -0.000370818 0.0100234 0 0 0.00703216 -1.61147e-05 0 -0.000132391 0.0273718 0 0 0.0021883 -0.00791263 0 -0.00368013 0 0.000172981 0 0 5.35274e-05 0 0 -0.0706701 1.03111e-05 -0.00919207 0 0.00139498 -0.0124943 0 0 0.0256045 0 0.000222147 0.0296628 -0.00166091 0 0 0.00136342 -0.000187749 0 -0.00307277 0.00277712 -0.00409705 -0.0118218 -0.0123885 0.00587795 0 -0.00168407 0.00476674 0.00901106 -0.00719365 0.0194019 0 0 0 0.27371 0.00521055 0.00939827 0.00702214 -0.0133171 0.0249077 0.000876488 -0.00167217 0.0036507 -0.00429463 0 0 0 0 0 0 0.39993 0 0.329443 0 0 0 0 0.0259372 -0.0100612 0 0 0.0798451 0 0.00951435 0 0.00192736 0 0 0.16569 0 -0.92162 -0.133742 0.00133072 0.0147458 0 0 0.0114792 0 3.61313 0 -6.84124 0.137401 0 -0.983286 -1.96494 0.00109885 0 -0.00238711 0 0 0.000858544 0 0.30331 1.42947 0 0 0.165997 0 0 -0.0187832 -4.95608 -0.05208 0 -0.557228 0 -0.999299 0.0935134 -0.158579 0.0465983 0.131209 -0.993072 -0.718187 0.0130554 -0.195923 -1.92914 -0.201049 0 0 0 -0.0132725 -0.00927423 0 0 0 0 -0.0811877 45.6238 1.44796 7.04133 1.06267 -0.802234 3.19366 -0.078406 0.112038 -0.188638 0.733884 0 0 0 0 0 0 +202 0 0.154267 -0.0198765 -0.00170606 -0.0861703 0.30864 0.196888 -1.575 -2.80103 -0.00677003 -0.33502 -0.0431199 -0.323089 1.94288e-06 -1.12341 -0.00157297 -0.298116 -1.96064 -0.0945513 -0.00330145 -2.84517 -0.0112436 -0.0423609 -2.41267e-06 -0.0897113 -0.505797 0.112057 -0.00198201 -0.75837 -2.4519 0.0181422 -0.000131414 -0.0737784 -0.190701 -0.0203224 -0.345768 -0.00100733 0.0601356 -0.701768 -0.118898 -0.606505 0.000112775 0.261782 -0.00264235 -3.33006 0.00629953 0.118142 -1.45955 -0.164673 0.00433111 -1.12592 -0.163855 1.25891 0.00302514 -0.00386526 0.103983 1.3104 -0.00265112 0.0859681 0.110205 -0.000130809 1.56162 2.11272 0.455273 -1.10003 0.0363201 1.5374 0.167951 0.0919424 0.000120288 0.0546404 -0.00228488 -0.064503 -0.0747805 2.30726 1.13457 -0.205762 10.1818 2.13792 9.87895 1.50039 -0.669953 11.1342 0.52252 -0.433354 0.597481 11.184 -1.22953e-05 0.000362835 -0.0127512 0.189767 11.7887 0 0 0 0 0 -0.00170606 -0.0861703 -0.000198399 0 0 0 0 -5.4677e-06 0 0.00265566 0 0 -0.00134697 -0.000419811 0.000500729 0 6.41066e-05 -0.000555627 0.0194119 0 0 0.0066882 -3.04666e-05 0 -0.000170366 0.0566314 0 0 0.00381236 -0.012148 0 -0.0152883 0 0.000385615 0 0 0.000107081 0 0 -0.150345 -7.12946e-05 -0.0185983 0 -0.0018958 -0.0239115 0 0 0.0447334 0 -0.000426824 0.0271403 -0.00156489 0 0 0.00275649 0.000360732 0 -0.00593862 0.00858024 -0.00818407 -0.163071 -0.019575 0.0115377 0 -0.00420535 0.0123433 0.0150433 -0.0181661 0.0296071 0 0 0 0.791087 0.0332389 0.0315348 0.0111834 -0.022223 0.0948356 0.00177125 -0.0033798 0.00741042 -0.00510067 0 0 0 0 0 0 0.30864 0 0.196888 0 0 0 0 0.448281 0.553098 0 0 0.138092 0 0.0118245 0 0.00854431 0 0 -0.232214 0 0.189293 -0.0242727 -0.0680045 -0.0279455 0 0 0.0662421 0 -0.206652 0 3.56054 0.427309 0 -0.109329 1.29453 -0.00680449 0 0.0554586 0 0 0.0693556 0 -0.0989987 -0.454554 0 0 -0.0526631 0 0 0.0539675 0.457069 0.578526 0 1.06227 0 0.195199 0.17796 -0.211706 -0.255615 0.0358567 0.572773 0.396349 0.0109402 0.0548458 2.06494 0.0487921 0 0 0 0.0743921 -0.0314357 0 0 0 0 -0.105304 -27.7181 -0.602332 -3.76292 0.51283 -0.646152 -1.55363 0.0228885 -0.0112252 -0.111192 0.180558 0 0 0 0 0 0 +203 0 0.149304 -0.0521563 0.0003213 0.00886409 0.193579 0.132345 0.383092 0.589974 0.00161919 -0.573983 0.012865 0.217164 -2.01956e-07 0.210844 -7.02366e-05 -0.322549 -2.19598 -0.134497 -0.000346048 0.110452 -0.0172731 -0.0559542 2.89402e-07 -0.0703842 -0.0195311 0.0329531 -0.00717689 -0.447669 -0.197736 0.225716 2.21757e-05 -0.000272245 0.080533 -0.024682 -0.134939 0.000205829 -0.0256121 -0.240388 0.0111159 0.345825 -1.42965e-05 -0.0415282 0.000203036 0.0937766 -0.000875906 0.472724 -0.306943 -0.0183008 -0.000268368 -0.0499025 -0.142224 4.14223 0.000465918 -0.000264907 0.00488195 0.246809 0.0292106 -0.00358044 0.110497 1.45202e-05 0.398648 0.916437 0.617248 1.24459 0.558937 0.44876 0.0928038 -0.201967 -1.9654e-05 0.255653 -0.0821391 -0.00214642 0.00713456 -0.201996 0.0254977 0.10166 2.35304 0.562851 0.954547 0.132804 -0.455357 2.41463 0.321595 -0.636952 1.38112 -1.07876 6.70333e-07 -7.77254e-06 0.000344402 -0.00420491 0.121336 0 0 0 0 0 0.0003213 0.00886409 0.000304923 0 0 0 0 4.19547e-06 0 -0.00120604 0 0 0.000494184 0.000115854 -0.000119589 0 -1.98068e-05 0.000125776 -0.00916848 0 0 -0.00821485 8.03029e-06 0 -6.86073e-05 -0.0408478 0 0 -0.000733842 0.000998648 0 -0.0101255 0 4.46181e-05 0 0 5.1131e-06 0 0 -0.0185838 6.31975e-05 0.00730403 0 0.0049728 0.00117953 0 0 0.00051382 0 0.000605757 -0.00117488 -0.000549966 0 0 -0.00100065 -0.000511958 0 0.000780209 0.0131465 0.00167066 -0.0968679 0.00239043 -0.000406644 0 -0.000502557 0.00585306 -3.95377e-06 -0.00503819 0.00425751 0 0 0 0.206715 -0.000186999 0.0279718 -3.59982e-06 -0.00125809 0.0310504 -0.000603064 0.000727161 -0.00165846 0.00426365 0 0 0 0 0 0 0.193579 0 0.132345 0 0 0 0 -0.181716 -0.0675843 0 0 -0.202529 0 -0.0333577 0 -0.0148974 0 0 -0.596147 0 -0.487662 -0.0518754 -0.139969 -0.101112 0 0 -0.0959812 0 -5.29535 0 -2.65664 0.0454726 0 -0.310876 -1.31739 -0.0164543 0 -0.0266436 0 0 -0.0201814 0 -1.04952 -1.57137 0 0 -0.247998 0 0 0.630389 3.03354 0.106801 0 1.78999 0 1.1698 -0.191224 0.214903 0.421119 -0.0325777 -0.41119 -0.0190804 -0.013606 -0.0632334 2.14375 -0.00546212 0 0 0 -0.0521866 0.0536979 0 0 0 0 0.00961793 16.2326 1.44774 1.55215 0.438912 -0.438612 1.63212 0.206851 -0.201172 0.214209 0.121944 0 0 0 0 0 0 +204 0 1.28357 0.0539786 0.000535577 0.0282254 0.288698 -0.108477 -0.0202661 -0.790312 0.00204293 0.284131 0.00536271 0.248424 -2.9938e-07 0.0693618 -0.000259832 -0.232956 2.20605 0.0604042 -0.000721176 -2.36017 0.00775227 0.179012 3.871e-07 0.0718581 0.0625819 -0.413272 0.000946755 0.398232 0.8349 0.0288511 2.87622e-05 -0.0160275 -0.211571 -0.0087144 0.295528 0.000133742 -0.0123097 -2.43603 0.00519891 -1.51412 -2.24749e-05 -0.0753208 0.000126171 1.52867 -0.00157053 -0.833995 0.375161 -0.0463939 -0.000177611 0.467443 0.0838031 -1.68749 0.000603528 -0.000606119 0.00668764 -1.67911 0.02953 -0.011095 -0.0835115 2.17494e-05 -1.21178 3.43171 -0.776441 0.660846 -0.133975 0.0733144 -0.641461 0.116844 -2.27212e-05 -0.063994 -0.140065 0.000374176 0.0213414 0.597839 -0.179613 0.0462039 1.57826 -0.716779 0.341427 -0.199217 0.168249 -0.672116 -0.417204 0.45156 -0.613967 0.895239 1.20193e-06 -8.29913e-06 0.000162382 0.0017592 -0.512315 0 0 0 0 0 0.000535577 0.0282254 0.000209555 0 0 0 0 4.00806e-06 0 -0.00165123 0 0 0.000603075 0.000150319 -0.000137242 0 -2.83803e-05 0.00016964 -0.00828085 0 0 0.01097 1.05235e-05 0 5.91177e-05 -0.0254514 0 0 0.00124922 0.0037083 0 -0.000602922 0 0.000213889 0 0 2.31806e-05 0 0 0.000976224 5.82572e-05 0.00864916 0 0.00320354 0.00414709 0 0 -0.009623 0 0.000421657 0.00228079 -0.000106464 0 0 -0.00122776 -0.000356365 0 0.00134815 0.0103028 0.00203856 -0.0338851 0.00259438 -0.00213651 0 0.000108667 0.00139947 -0.00481264 -0.00231914 -0.00112795 0 0 0 0.0623007 -0.0037559 0.0121512 -0.000681556 0.000328523 0.0102622 -0.000756826 0.000877514 -0.00121895 0.00189005 0 0 0 0 0 0 0.288698 0 -0.108477 0 0 0 0 -0.408124 -0.193992 0 0 0.0405496 0 0.0109611 0 -0.00293813 0 0 -0.724514 0 0.36593 -0.148939 0.0201398 -0.114774 0 0 -0.0316196 0 -4.09097 0 -5.01769 -0.599899 0 -1.26912 -0.476937 0.00265449 0 -0.0528287 0 0 -0.0223322 0 -1.86086 -0.869575 0 0 -0.171602 0 0 0.422373 -1.19638 0.931234 0 1.73906 0 1.91751 0.00325962 -0.11887 0.12474 0.0869954 -0.813301 -0.731547 -0.0357386 0.603714 5.85974 -0.086284 0 0 0 -0.0276132 0.0213111 0 0 0 0 0.0605321 38.1002 1.20884 7.64489 0.822106 -1.01139 3.18199 -0.140136 0.120754 -0.090988 0.887003 0 0 0 0 0 0 +205 0 -0.277383 -0.127356 -0.00103065 -0.0730377 0.162087 0.120705 0.0836407 0.148594 -0.00301809 -0.351888 -0.0289721 1.10957 5.24249e-07 2.0719 0.000328714 -0.390393 -0.338909 -0.0583646 0.000978075 0.967444 -0.0120098 0.126801 -6.12263e-07 -0.104617 0.0430978 -0.173608 0.00178706 -0.109462 0.535985 0.725623 -4.39315e-05 0.0131639 0.290091 0.0767248 0.0369774 -0.000370153 0.0521831 1.4912 -0.040924 0.727983 4.13625e-05 0.570663 -0.000426454 3.18674 0.00317607 0.542379 0.0719654 0.0445587 0.000453942 1.12364 -0.14505 1.79513 -0.000664275 0.000843699 -0.00389613 -2.29545 -0.143002 1.48461e-05 0.101996 -3.84375e-05 1.04923 -0.573059 -1.07046 -1.23937 -0.00139912 0.308348 0.245505 -0.0358745 2.97485e-05 0.0578305 0.0307429 -0.00135875 -0.0576798 -2.32388 0.215636 -0.0715283 -6.7347 0.639205 -2.30029 0.633502 -0.824892 -1.28027 0.631892 -0.797396 1.12484 -0.791177 -2.43065e-06 2.84198e-05 -0.00117955 0.0147093 -0.328893 0 0 0 0 0 -0.00103065 -0.0730377 -0.000469477 0 0 0 0 -8.89966e-06 0 0.00263544 0 0 -0.00104442 -0.000258413 0.000215889 0 4.8075e-05 -0.000398703 0.00946447 0 0 -0.035553 -1.82595e-05 0 -0.000301575 8.15646e-05 0 0 -0.00349432 -0.0152529 0 -0.0194589 0 -0.000388447 0 0 -3.95063e-05 0 0 -0.051083 -0.000122425 -0.0145484 0 -0.00587803 -0.0118989 0 0 0.0368781 0 -0.000977192 -0.0169825 0.000212959 0 0 0.00213704 0.000825878 0 -0.00343492 -0.00866831 -0.00349076 -0.118708 -0.0034069 0.00666484 0 -0.00192854 0.00752765 0.0140041 -0.00517662 0.0112342 0 0 0 0.319337 0.0167612 0.0254881 0.00230932 -0.004351 0.0448915 0.00134469 -0.00150362 0.000800289 0.0035492 0 0 0 0 0 0 0.162087 0 0.120705 0 0 0 0 -0.313113 0.349556 0 0 -0.0612207 0 -0.0167589 0 0.000369607 0 0 -0.313889 0 0.190888 -0.0937285 -0.0858691 -0.0199314 0 0 0.000336967 0 -3.26729 0 0.867377 0.211871 0 -0.675192 0.0504422 -0.0118369 0 -0.0374 0 0 0.0448147 0 -0.699375 -0.90359 0 0 -0.0784267 0 0 0.027944 -1.093 0.542284 0 0.687189 0 -0.478665 0.0646497 -0.172189 -0.0238546 -0.195128 0.0952473 0.401849 -0.0125638 0.27782 -0.957463 0.108708 0 0 0 0.0398757 0.00923214 0 0 0 0 -0.0210379 -9.4967 0.0786471 0.812252 0.32796 -0.473302 -0.0248199 0.171339 -0.153955 0.0594392 0.427078 0 0 0 0 0 0 +206 0 0 0 0 0 -0.0341455 0.181505 -0.657881 -0.316647 0 0 -0.0741076 0.335491 0 1.04567 -0.0321324 0 0 0 -0.189145 2.4215 0 0 0 0 -0.13004 0 0 -0.340096 -2.00546 0.339162 0 -0.216865 0 0 -0.187733 -0.01668 0 0 -0.117392 0.48019 0 0 -0.0288265 1.79872 0 0.409702 -0.684332 -0.729611 -0.0114841 -0.661409 -0.12461 0 0.149059 -0.238716 0.135288 0.983225 0.362623 -0.00173258 0 0 -0.61498 -0.3106 0 -1.39723 0.137765 -0.593916 0 0 0 0 -0.083728 -0.160697 0 -0.627033 -0.491219 0 0 0 -0.585446 0 0.803237 -0.852655 0 0.0899283 0.244337 -1.59604 0 0.305194 0.302098 -0.457044 3.53938 0 0 0 -0.0422375 -0.00288129 0 0 0 0.012612 -0.00136925 0 0.000954282 0 -0.000579267 0.00371995 0 0 0 0 0.0203839 0 0.00101796 0 0.0723924 0 0.119877 -0.0149885 0 0.000412049 0 0 0.0367561 -0.000786762 -0.000404404 0 0.00020046 0 -0.000102442 -0.0144414 0.00524889 -0.0110921 -0.000811265 0 -4.08736e-05 0 0 0 1.39279e-05 0 0 0.00207309 -0.000163076 -0.0390679 -0.00521709 0 0 0.00421651 0 0.000177931 0 0 0.00486896 0.00704266 -0.0237898 0.0026292 0 0 -0.0016293 0.0133118 0.00213085 -0.0122176 0.00378678 0 -0.0113258 -0.0057926 0.0291631 0 0 0 -0.0840403 0 0.0131599 -0.0469275 0 -0.00134304 0.00463767 -0.0240417 0 0.00100697 -0.00335595 0.00718176 -0.0166748 0 -0.0341455 -0.0422375 0.181505 -0.00288129 0.441394 0.122743 -0.0151022 0.246777 0.118557 0.000986437 0.00537188 0.126266 5.6508e-05 0.00423177 -0.00101543 0.00738374 -0.00408234 0.0162407 -1.3843 -0.294844 0.439608 0.11776 0.0867352 -0.189405 -0.0490163 0.0169754 0.121066 -0.00826249 -4.36361 0.118655 4.01034 -0.307624 -6.43904e-05 0.787836 1.57186 0.00279696 0.00197912 0.0256805 0.0293774 0.0907331 0.00694905 0.00742469 -1.45425 -2.91531 0.00107761 0.012693 -0.385184 -0.0605905 -0.0774326 -1.54022 1.09475 0.400756 -0.0061981 -1.59236 0.00102066 -0.266744 0.016599 0.00481939 0.141354 0.0569596 0.175033 0.00740335 0.104459 -0.452621 1.85783 -0.0295492 -0.689235 0.0341353 -0.10501 -0.256835 -0.00404121 -0.0446617 -0.00166682 0.0688288 0.00472522 -0.02037 -20.6482 -0.554134 -4.61059 -0.182202 0.874847 -4.06393 -0.00534798 0.0179975 0.0457375 -1.44394 -0.00113709 -0.0968083 0.269504 -0.20909 -0.393109 0 +207 0 0 0 0 0 -0.273459 -0.37723 0.591816 2.02256 0 0 -0.011095 -1.42988 0 -2.45625 0.0161766 0 0 0 0.0773707 -4.37951 0 0 0 0 0.456671 0 0 1.07118 6.54028 -0.851769 0 0.11887 0 0 0.295026 0.0078722 0 0 -0.199147 -1.61907 0 0 -0.0553775 -4.73164 0 -0.993321 2.24394 0.536797 0.128265 -1.60508 0.454225 0 -0.122207 -0.0174421 0.497336 0.681191 -0.25899 0.624401 0 0 -0.639378 1.49836 0 0.523162 0.308058 -0.739777 0 0 0 0 0.310495 0.133786 0 3.38622 -3.27291 0 0 0 -4.46322 0 0.616628 -11.3519 0 0.278762 -1.57194 -8.31022 0 0.355714 -1.69077 2.56931 -24.8467 0 0 0 0.0285095 0.00621571 0 0 0 0.00491821 -0.0328007 0 0.000395801 0 2.35713e-05 -0.00251531 0 0 0 0 0.029722 0 -0.000606259 0 0.0473246 0 0.082539 -0.116744 0 4.54789e-05 0 0 0.0719443 -0.00115181 -0.00467822 0 -0.00215002 0 -0.00230839 0.00628975 0.00407309 -0.0157508 -0.000121188 0 2.58278e-07 0 0 0 -0.00015115 0 0 0.00304708 -0.0036457 -0.0555893 -0.011815 0 0 0.00408352 0 0.00397779 0 0 -0.0105271 0.0147678 0.00233024 -0.00386032 0 0 -0.0770276 -0.0277194 -0.0022276 -0.0371462 0.0261393 0 -0.0451678 0.0134363 0.00713106 0 0 0 -0.188775 0 0.0362227 -0.181714 0 -0.00289615 0.0141458 -0.0781492 0 0.00153095 -0.00708656 0.022503 -0.0719223 0 -0.273459 0.0285095 -0.37723 0.00621571 -0.665363 -0.129977 0.0660202 -0.229417 0.219202 -0.00281557 0.0382471 0.183047 -0.000172962 0.00629081 0.00416378 0.00326355 0.0331716 -0.0380382 1.15939 0.191065 0.00802367 0.368731 0.115277 0.26657 0.259454 0.35667 0.0804927 0.0245524 -1.1087 0.110694 -0.93355 -0.731811 0.000245243 0.563561 -0.199088 0.00576599 0.000858797 0.0636441 0.00563508 1.89615 0.0137423 0.0555679 -1.11838 2.32228 0.00429097 0.0111298 0.605341 0.11748 0.0900699 -0.176181 1.67499 0.610134 -0.023199 1.29546 -0.00820777 1.85691 0.00684443 -0.114463 -0.217032 -0.263995 0.726432 -0.363637 0.0214901 0.306986 11.1271 0.045349 -0.18943 0.000941061 -0.358689 0.393187 -0.00691539 -0.0556691 0.00629865 0.0950828 0.0387372 -0.0212497 4.8066 -0.417904 -2.76431 0.130606 -0.179486 -6.29697 -0.00423522 -0.000816479 -0.62976 -1.99476 0.00266325 -0.100293 -0.101155 0.198219 -3.16714 0 +208 0 0 0 0 0 0.555286 0.11616 -0.184861 -1.49216 0 0 0.0011525 0.972828 0 0.790083 0.00863106 0 0 0 0.00274403 1.71 0 0 0 0 0.0550816 0 0 0.0947096 1.34514 0.221433 0 -0.127728 0 0 0.0754964 0.0373973 0 0 0.170561 0.821871 0 0 0.140439 2.83305 0 0.255973 0.535181 -0.283287 -0.165786 -0.882866 -0.123147 0 0.138145 -0.073387 -0.0456464 0.692355 0.587723 0.219499 0 0 0.417161 -2.40468 0 0.151026 -0.0574885 0.605723 0 0 0 0 -0.26887 -0.200372 0 -2.78575 -0.878343 0 0 0 3.14071 0 -0.642626 -0.299836 0 -0.529634 1.44329 1.08395 0 -1.05353 2.16967 -0.828891 -3.5555 0 0 0 0.216519 0.0142201 0 0 0 0.00928052 -0.0120278 0 0.000522101 0 0.00228385 -0.0114932 0 0 0 0 -0.0911884 0 -0.00488011 0 -0.200481 0 0.128834 0.0465724 0 -0.000863525 0 0 -0.174908 0.00303958 -7.5618e-05 0 -0.00169885 0 -0.000822535 -0.0275501 -0.01298 0.0426755 -0.00143761 0 0.000161531 0 0 0 -0.000118676 0 0 -0.0080136 -0.00129399 0.0385149 0.0192204 0 0 -0.0103622 0 0.00141186 0 0 0.00744186 -0.0162992 0.000798486 -0.0019414 0 0 0.0161853 -0.0202492 -0.00569855 0.042451 0.00540472 0 0.0397661 0.0144162 -0.146534 0 0 0 0.278962 0 -0.0570213 0.253748 0 0.00552759 -0.0237856 0.102554 0 -0.00391102 0.0161451 -0.0354594 0.0926554 0 0.555286 0.216519 0.11616 0.0142201 -0.426509 -0.0878544 0.0702283 -0.400455 0.389787 -0.00477986 -0.0599747 -0.000188616 -0.000272311 0.00230492 0.00475741 0.00372554 -0.0329155 -0.0797665 0.0244786 -0.842378 0.223489 -0.318767 0.133091 -0.0492701 -0.172133 0.116776 0.113845 -0.00806897 5.91036 -0.0024618 1.22955 0.912166 0.000304095 -1.38163 0.746887 0.00894924 0.000673565 -0.0597612 -0.0140919 0.495195 0.0203262 0.0273878 2.76934 -1.15626 -0.00972497 0.0058113 -0.305937 -0.0829108 -0.0434373 0.146538 0.307614 -0.702011 0.106474 0.516889 -0.0042639 -0.144314 0.0356269 -7.11817e-05 0.0219496 0.867853 1.04742 -0.107928 -0.213296 0.68564 9.02226 0.063749 0.0437389 -0.0590742 -0.256902 0.260189 -0.012512 0.00526643 0.00787825 -0.128162 0.10783 0.00655191 -6.33065 -0.069749 3.14778 0.162304 0.0920005 -2.84936 0.00456302 -0.107139 0.211723 0.287506 0.00558487 -0.00470787 0.243127 -0.190304 -0.413905 0 +209 0 0.179351 0.292814 -0.000868534 -0.0140482 0.348679 0.186561 -0.0422905 -0.159193 -0.00239763 -0.176836 0.104025 -0.460943 1.00341e-05 -1.11358 0.0101814 0.742789 0.663419 -0.0109031 0.0162628 -2.8242 -0.0143235 -0.320816 -5.81783e-06 -0.0767728 -0.31355 0.484103 -0.0178327 -0.273314 1.16843 -0.261187 -0.00011925 0.221662 -0.0692588 -0.0371101 -0.216294 0.00502254 -0.138569 1.35094 0.125689 -0.809406 0.000195752 -0.354483 0.00630478 -1.48658 0.00363626 -0.0494971 -0.00740287 0.354728 -0.0129239 0.16346 -0.0880811 3.72452 0.004561 0.0199007 0.0651522 0.0200842 -0.113669 -0.0626333 0.0697692 -1.07499e-05 -0.0451091 1.661 0.871051 1.38422 0.443974 1.15584 0.444617 -0.341009 -0.000429045 -0.100917 -0.0392819 0.267145 0.0952228 0.659498 0.551899 0.42831 -3.45423 0.998444 -1.25164 -0.0454194 0.239455 -3.49079 0.347832 -0.121758 0.314435 -0.3889 -0.000308776 -0.00474601 -0.0542129 0.0306073 -2.95868 0 0 0 0 0 -0.000868534 -0.0140482 -0.000742559 0 0 0 0 -3.07812e-05 0 0.00261736 0 0 -0.00055337 -0.000382599 0.000350437 0 0.000111557 0.00223304 0.00570277 0 0 0.0433556 -2.73434e-05 0 0.00218514 0.0266876 0 0 0.00460406 0.0194275 0 0.0229294 0 0.00124266 0 0 0.000101063 0 0 0.098986 -0.000427239 -0.00776012 0 -0.0103435 0.00237728 0 0 0.00720718 0 -0.001518 -0.0454479 0.00181642 0 0 0.00113025 0.00128295 0 -0.00379802 0.014188 -0.0027792 0.00425206 0.0101882 0.00447414 0 -0.00190838 0.000205973 -0.015739 0.000519862 -0.0124472 0 0 0 -0.286695 0.0241461 -0.0346019 -0.00913551 0.0142589 -0.0261623 0.000713087 -0.00108281 0.00193335 -0.000839639 0 0 0 0 0 0 0.348679 0 0.186561 0 0 0 0 -0.292355 -0.095201 0 0 0.0378534 0 -0.00358148 0 -0.00314841 0 0 0.657066 0 -0.797633 -0.0723931 -0.0392369 0.102793 0 0 -0.00931835 0 0.80154 0 -2.25178 0.254804 0 -0.803002 -1.28296 -0.00662057 0 -0.0302611 0 0 -0.0199867 0 0.565072 1.35042 0 0 0.190764 0 0 0.211492 -0.221059 0.146742 0 -0.714569 0 0.492039 -0.0342857 0.0779875 0.0597777 -0.29795 -0.812748 0.230705 0.00883376 0.164009 -1.95705 0.0062818 0 0 0 0.0912535 0.000460979 0 0 0 0 0.025807 13.1558 0.906293 3.43398 0.140986 -0.134118 1.39777 -0.023901 0.0644652 0.119038 0.372799 0 0 0 0 0 0 +210 0 -0.471088 -0.11406 -0.0057705 -0.0330072 -0.115827 0.131115 0.122475 0.611127 -0.0545727 0.366787 0.0130633 0.23843 0.000206633 1.44658 -0.00832505 0.372419 -0.135832 0.033908 -0.0107521 1.92379 0.00414499 -0.00675219 -0.000280779 0.0723831 -0.0940191 0.252111 0.0288494 -0.614742 -1.98189 0.498613 -0.00409124 -0.125219 0.431399 0.0190109 -0.133377 -0.00235957 0.29148 3.9491 0.0186646 1.53139 0.00303747 0.524665 -0.00349651 0.438326 0.0372687 0.953864 -1.0198 -0.136666 0.0179482 -0.534696 0.231993 -0.0976833 0.0215229 -0.00831192 0.0147873 1.9992 0.493369 0.176054 -0.155202 -0.00663587 -0.319508 -1.95971 -1.898 -2.06277 -0.0995544 -0.686874 0.154063 0.35635 0.00759389 0.283441 0.0791389 -0.135376 -0.377369 -1.05329 0.228937 -0.305283 -23.8974 -3.35672 -6.85462 -3.1106 1.96549 -6.79756 -0.063571 -0.160388 0.0817808 -3.6197 -0.0031647 0.0052596 0.0369614 -0.34547 5.01851 0 0 0 0 0 -0.0057705 -0.0330072 -0.000510373 0 0 0 0 -4.34963e-05 0 0.00483857 0 0 -0.00101625 -0.00173313 0.00558976 0 0.000532792 0.00504864 0.0544231 0 0 -0.097084 -0.00012845 0 0.0155302 -0.312691 0 0 -0.0179633 0.0156752 0 0.0994874 0 -0.00754775 0 0 -0.00129765 0 0 0.328351 -0.00062011 -0.0133961 0 -0.00752866 0.00887829 0 0 -0.179787 0 -0.00103528 -0.242518 0.00316359 0 0 0.00209211 0.000874974 0 0.0130571 -0.0174471 -0.0061233 0.0947399 0.0326481 -0.0178864 0 0.000254308 -0.0112888 0.0457552 -0.011035 -0.10437 0 0 0 -1.78215 0.117414 -0.342493 -0.0326985 0.0743396 -0.177621 0.00140905 -0.00387993 0.0100919 -0.0296241 0 0 0 0 0 0 -0.115827 0 0.131115 0 0 0 0 0.541736 -0.0483978 0 0 0.0423547 0 0.0165556 0 0.00314822 0 0 -0.115609 0 0.138054 0.12324 -0.0816634 -0.0278074 0 0 -0.0250018 0 3.05083 0 2.48014 1.17195 0 1.13302 0.404502 -0.00300275 0 0.0715259 0 0 0.0117253 0 2.1936 -0.465878 0 0 -0.081014 0 0 -0.297443 -0.981625 -0.413721 0 0.0165564 0 -1.14482 0.058657 -0.0263126 -0.25597 0.0632632 0.422554 0.00313787 0.033789 0.366175 0.92394 0.04396 0 0 0 0.0388238 -0.0525269 0 0 0 0 -0.000286707 -22.8354 -1.63587 -5.42463 -0.410039 0.465523 -2.83278 -0.0935647 0.0500498 -0.0459367 -0.869074 0 0 0 0 0 0 +211 0 1.13967 0.0729891 0.0169317 0.243332 -0.404305 -0.15904 0.651575 1.43002 0.0662973 0.249533 0.103961 -0.0086329 -0.000266446 -0.421373 0.009042 0.419664 2.4968 0.0617003 0.0143984 -1.01335 0.0362342 0.27279 0.000235952 0.202148 0.482188 -0.0575479 0.00144822 0.210568 -0.435488 -0.15579 0.00399427 0.117288 0.169311 -0.0298676 0.232394 0.00664431 -0.0241074 -2.10237 0.246042 -0.752517 -0.00469512 -0.00475928 0.01494 -0.570927 -0.0775217 -0.46129 0.0608897 0.168877 -0.0101349 -0.229616 0.104254 -3.89282 -0.00230634 0.0409104 -0.165594 -3.3355 -0.121297 -0.0922389 -0.274513 0.00353174 0.695474 1.70633 0.675543 -0.257294 -0.219991 -0.533406 -0.610305 0.0451901 0.00307824 -0.41945 0.0838941 -0.00698708 0.173756 0.00841983 0.356961 0.851771 12.1353 0.998086 0.996311 1.63284 -1.44192 5.68685 -1.26457 0.412771 0.202351 -1.66761 0.00658281 -0.0230351 0.116639 -0.38223 1.10273 0 0 0 0 0 0.0169317 0.243332 0.00203802 0 0 0 0 0.000105702 0 -0.0151271 0 0 0.00487664 0.00452417 -0.00978162 0 -0.00105642 -0.00587002 -0.138314 0 0 0.00202269 0.000325272 0 -0.0208657 0.278273 0 0 -0.00104337 -0.0281059 0 -0.159475 0 0.00252232 0 0 0.000279009 0 0 -0.574942 0.00145239 0.068033 0 0.0281154 0.00339672 0 0 0.00564327 0 0.00417155 0.214371 -0.0137021 0 0 -0.00996724 -0.0035256 0 0.0167924 -0.0547557 0.0182435 -0.0603975 -0.0618076 -0.016348 0 0.0084149 0.0347892 0.0114792 -0.0138874 0.13914 0 0 0 1.93622 -0.192338 0.436526 0.0538428 -0.0916371 0.181577 -0.00632534 0.0103253 -0.0197454 0.0439948 0 0 0 0 0 0 -0.404305 0 -0.15904 0 0 0 0 0.349549 -0.147407 0 0 -0.386903 0 -0.0255533 0 -0.0160861 0 0 0.0304788 0 0.0706414 0.126733 -0.116111 0.00572621 0 0 -0.0662382 0 -0.275905 0 -3.35081 -0.364963 0 0.91023 -0.600062 -0.0047056 0 0.0420333 0 0 -0.036571 0 -0.424014 -0.272541 0 0 -0.0250604 0 0 -0.0300414 1.71836 -0.590593 0 -0.343188 0 -1.02467 -0.0747417 0.172873 -0.294221 -0.151179 0.914006 0.542433 -0.0586088 0.0971291 -7.18876 0.0665236 0 0 0 0.0168613 0.0319099 0 0 0 0 0.0499907 22.3818 2.41008 -1.0113 0.784492 -0.616647 2.87666 0.058395 -0.041205 0.251186 -0.560338 0 0 0 0 0 0 +212 0 -0.617945 -0.404923 -0.000309655 0.0109044 0.0448548 -0.257784 0.749949 1.1331 9.29931e-05 0.124377 0.045785 0.137932 1.21219e-06 0.918889 0.000217997 -1.5166 -5.69054 0.042848 -3.87267e-05 2.26667 0.0022795 0.359971 -3.42287e-07 -0.00687814 0.534867 -0.57162 0.000564597 0.5412 -0.00364565 0.137295 -1.25408e-05 0.0143458 0.83344 0.00936997 0.351342 0.000720882 -0.0171619 3.44188 0.0422063 0.501714 7.58666e-05 -0.118227 0.00058513 0.417442 0.00476872 -0.300349 0.344606 -0.00914424 -0.000185658 -0.128967 0.086763 -0.346417 -0.000516679 -0.000339337 -0.0273624 0.579982 -0.00412724 0.0195663 0.0150948 -8.2565e-05 0.498034 -0.221989 0.255702 -0.2442 0.149318 -0.117758 0.386759 -0.0157257 -2.25739e-05 0.164065 0.237947 0.0122015 0.0103625 0.20744 0.153554 -0.458475 -10.4426 -0.527643 -5.18222 -0.527696 0.642298 -4.8482 0.21079 -0.0209499 0.0397052 -2.21445 -8.90148e-06 -5.63991e-05 -0.00262289 -0.0232314 0.00401556 0 0 0 0 0 -0.000309655 0.0109044 0.00029079 0 0 0 0 7.38378e-06 0 0.00303031 0 0 -0.000574133 -0.000149615 0.000321515 0 4.14263e-05 -0.000306465 0.0202574 0 0 -0.0251645 -1.06753e-05 0 0.00149924 -0.126125 0 0 -0.00209608 -0.0186151 0 0.0449315 0 -0.000356706 0 0 -2.53343e-05 0 0 0.154243 0.000105193 -0.00802996 0 0.004152 0.00198949 0 0 -0.0241588 0 0.000592507 -0.0210038 0.000171875 0 0 0.00117307 -0.00050076 0 -0.00274259 0.00614974 -0.0018213 0.0494563 0.00724675 0.00577723 0 -8.12728e-05 -0.00422677 0.0072297 0.00166885 -0.0146647 0 0 0 -0.44638 0.0257372 -0.0571151 -0.00912765 0.014785 -0.0173016 0.000742324 -0.00117061 0.00216901 -0.00771453 0 0 0 0 0 0 0.0448548 0 -0.257784 0 0 0 0 0.456063 -0.336637 0 0 -0.0160539 0 0.00482045 0 -0.00269571 0 0 0.212242 0 0.791131 0.102866 -0.033228 0.0105045 0 0 -0.0783109 0 -4.45229 0 1.9719 -0.43469 0 0.608286 1.09043 9.17563e-05 0 0.0707097 0 0 -0.0215203 0 -0.657922 -0.65226 0 0 -0.111194 0 0 -0.502764 -2.31752 -0.483065 0 -2.05701 0 -0.75051 0.0314895 0.0686655 0.120552 -0.128104 -0.893622 0.190987 0.00297573 -0.158982 -10.2572 0.0456671 0 0 0 0.00695449 -0.0223191 0 0 0 0 -0.0194036 -14.3784 -0.215512 -3.68462 -0.411174 0.452126 -1.62997 -0.0591098 0.0662667 0.0459246 -0.466846 0 0 0 0 0 0 +213 0 -0.0717653 -0.0921198 -0.000104101 -0.0202483 -0.185724 0.0502073 0.0248355 0.894326 0.00199593 0.211627 -0.0349702 0.336238 -7.05939e-07 0.316169 0.000231752 -1.00761 -2.26102 0.0461848 0.000873894 -0.0462243 0.00642091 0.103248 1.08228e-06 0.0417886 0.137036 -0.422998 0.0114959 -0.35389 -0.773376 0.250142 5.14022e-05 -1.04816e-05 0.252789 0.123158 -0.0229104 -0.00065762 0.12235 1.53815 -0.0243739 0.25771 -2.72162e-05 0.709501 -0.000421266 0.0187947 -0.000627589 0.39337 -0.468184 0.0267818 0.000367223 -1.41499 0.139293 1.84084 -0.000886907 0.00145582 0.0281585 1.01934 0.332617 0.0332019 -0.107715 5.49496e-05 0.23814 -0.34611 -0.0352541 -0.888877 -0.0778772 -0.313012 0.255897 0.130925 -9.66758e-05 0.0409933 0.226339 -0.0113054 -0.164848 -0.145947 -0.154103 0.151235 -8.09958 -0.666837 -4.02199 -0.653555 0.417823 -2.45229 -0.0817701 -0.0425334 0.0489369 -2.351 1.17148e-06 2.49869e-05 0.00106744 0.0161817 0.851848 0 0 0 0 0 -0.000104101 -0.0202483 -0.000527002 0 0 0 0 -1.27364e-05 0 0.00256915 0 0 -0.000400839 -6.33668e-05 0.000335538 0 3.61885e-05 -0.000170326 0.0265934 0 0 -0.00816035 -4.84996e-06 0 -0.000298504 -0.170673 0 0 -0.00217054 -0.00385959 0 -0.0140364 0 0.000242238 0 0 8.99382e-06 0 0 -0.017293 -0.000182924 -0.00538503 0 -0.00761131 0.000918964 0 0 -0.042061 0 -0.00107214 -0.099959 0.00209393 0 0 0.000823245 0.000906126 0 0.0036512 -0.0139221 -0.00204071 -0.0909487 0.0118374 -0.00170912 0 0.00114748 -0.0064656 -0.0355922 -0.00170428 -0.0293611 0 0 0 -0.251554 0.0338745 -0.105434 -0.00842339 0.0196071 -0.0340413 0.000543997 -0.00130651 0.00320636 -0.0118171 0 0 0 0 0 0 -0.185724 0 0.0502073 0 0 0 0 0.153895 0.162016 0 0 0.220213 0 0.0258418 0 0.00275123 0 0 -0.646601 0 0.0699079 0.0311047 0.0385862 -0.101624 0 0 -0.0187511 0 -0.493436 0 1.27238 0.278678 0 0.583397 0.205169 0.00392584 0 0.00263275 0 0 0.0297062 0 -0.000965686 -1.28859 0 0 -0.192359 0 0 -0.18426 -3.10433 -0.398613 0 -0.425219 0 -1.01145 0.0901901 -0.0476822 -0.063385 -0.219343 -0.769572 -0.0442863 0.0553721 0.192642 -4.51821 0.0797538 0 0 0 -0.0358662 -0.0743546 0 0 0 0 -0.0342345 -12.3772 -0.689158 -3.86169 0.217616 0.0207229 -1.70952 -0.163166 0.0813404 -0.0650692 -0.530868 0 0 0 0 0 0 +214 0 0.710563 0.10575 0.00194307 0.0822414 -0.0749878 0.0456858 -0.266985 -0.778815 0.00530268 0.278623 -0.0348559 0.373415 -2.1622e-06 0.0937661 -0.000816467 0.220192 -1.51182 0.00288035 -0.00129532 1.90304 0.00746936 -0.0859641 1.66676e-06 0.129835 -0.176721 0.328092 -0.00724372 -0.125474 0.0840606 0.330046 9.75393e-05 -0.0631025 -0.26077 -0.135181 -0.111692 -0.000707293 -0.0292756 -2.27353 -0.035314 1.29563 -0.000126586 -0.45111 -0.00063034 -0.210892 -0.00735597 0.875668 -0.0872801 -0.100956 0.000931235 0.456552 -0.0810252 -0.0731882 -0.0015944 -0.000800974 0.0115521 -3.76387 -0.111207 0.0549771 -0.158037 0.000108091 0.306136 -1.32424 0.587674 1.11799 -0.0812511 0.448717 -0.299393 -0.0222153 1.03468e-05 -0.464514 -0.149398 -0.029931 0.120597 -1.50023 0.416842 0.674425 6.65248 -0.149665 2.84339 0.16517 -0.60692 4.24887 -0.692664 0.338489 -0.190739 1.17934 1.37309e-05 5.91936e-05 0.00397272 0.0191488 -0.09259 0 0 0 0 0 0.00194307 0.0822414 -0.00081733 0 0 0 0 -1.92593e-05 0 -0.00429596 0 0 0.00134505 0.00035535 -0.00084185 0 -7.02446e-05 -0.000314642 -0.0472936 0 0 0.0684316 2.53742e-05 0 -0.00217374 0.133927 0 0 0.00748494 0.000174529 0 -0.0603611 0 0.00130594 0 0 0.000138537 0 0 -0.227608 -0.000274043 0.0187956 0 -0.0116372 -0.00262144 0 0 0.0148227 0 -0.00166601 0.0536581 -0.00017408 0 0 -0.00274852 0.00140803 0 0.00536777 -0.0153013 0.00416034 -0.0240557 -0.0146842 -0.00583321 0 0.00068773 0.00705349 -0.0126288 -0.00379162 0.0371106 0 0 0 0.720482 -0.0579125 0.140885 0.0190119 -0.031556 0.0544311 -0.00174101 0.00277919 -0.00520855 0.0150834 0 0 0 0 0 0 -0.0749878 0 0.0456858 0 0 0 0 -0.0502508 -0.47187 0 0 0.0438437 0 0.0172173 0 -0.011185 0 0 -0.631455 0 -0.492096 -0.00866051 -0.024019 -0.0826587 0 0 -0.187552 0 -11.9193 0 -4.37272 -0.923267 0 -0.233027 -1.46065 0.00291467 0 -0.00191989 0 0 -0.0400733 0 -3.8133 -1.50055 0 0 -0.203554 0 0 0.01683 2.14665 -0.111808 0 -1.62788 0 0.549407 -0.0484133 0.0941125 -0.46505 -0.133006 1.39463 0.195682 -0.0963354 -0.28412 -10.815 0.0918782 0 0 0 -0.137652 -0.011341 0 0 0 0 0.127578 26.2808 0.684685 3.23282 0.450943 -0.512824 3.18544 -0.0741942 0.0852876 -0.0128003 0.163889 0 0 0 0 0 0 +215 0 0 0 0 0 -0.178297 0.0866722 -0.00824465 0.122011 0 0 -0.231293 0.331735 0 0.869898 -0.113092 0 0 0 -0.202892 -1.62179 0 0 0 0 -0.157199 0 0 0.3735 6.36121 0.0513144 0 -0.541937 0 0 -0.063005 -0.0151135 0 0 -0.656176 -0.108921 0 0 -0.0450916 3.12615 0 0.189874 1.67217 -0.727705 0.015349 5.56324 0.23008 0 0.27333 -0.240392 0.829921 6.75205 1.41716 1.25343 0 0 -0.368717 -2.04763 0 0.494709 -0.616498 0.306143 0 0 0 0 0.180434 0.795803 0 0.682167 -2.20997 0 0 0 -0.294089 0 0.37524 -5.0424 0 0.17756 -0.809266 -1.66604 0 -0.0658191 -2.49134 4.87975 -22.4195 0 0 0 0.115169 0.0163155 0 0 0 0.00985804 0.0155734 0 0.0010973 0 0.00419884 0.00812452 0 0 0 0 -0.0645661 0 -0.0157575 0 0.13882 0 0.0419529 0.228365 0 0.00131907 0 0 0.130067 0.00129695 0.0404812 0 0.00194882 0 0.000722223 0.0447 0.0129423 0.0270797 0.00811699 0 0.000197384 0 0 0 9.12065e-05 0 0 -0.00313595 0.0010375 -0.153695 0.0233923 0 0 -0.0156287 0 -0.00113201 0 0 0.00358364 0.00496445 -0.0218533 -0.0225992 0 0 0.0835973 -0.0284079 -0.00519928 0.448087 -0.1238 0 0.161609 0.0102835 -0.0397627 0 0 0 -0.784507 0 -0.106481 -0.449301 0 -0.0072246 -0.0278909 -0.248046 0 -0.000947015 -0.00376414 -0.0175188 -0.219945 0 -0.178297 0.115169 0.0866722 0.0163155 -0.33507 -0.15067 0.475955 -1.20605 0.761584 0.0178325 -0.0115609 0.45027 0.00289295 0.0400049 0.0639165 0.0317105 -0.0363695 0.126972 0.0194405 -0.365438 0.255629 -0.285008 0.26851 0.0446254 -0.171472 0.271469 0.273179 -0.0178278 4.69087 -0.52006 1.2093 0.381872 0.00828403 -1.75627 0.566164 0.0291797 -0.0135404 -0.18937 -0.095323 1.62679 0.0805409 0.0483548 1.17812 0.689014 -0.00394561 -0.0707956 0.172065 -0.0731202 -0.206509 0.31558 1.74208 0.107987 0.185362 1.35895 -0.26455 -1.34893 -0.070307 0.168535 0.123721 0.195146 0.296806 0.52422 -0.310501 1.35653 16.9497 0.0237429 0.541093 0.00187976 0.0933597 0.372553 0.0854689 0.0906592 -0.00853868 -0.178693 -0.0167975 -0.303014 -2.6658 -0.814726 2.791 -0.247451 0.940369 -3.04541 -0.0734612 0.206552 -0.643753 1.15541 -0.0225744 0.143565 -0.451024 0.838788 -1.96825 0 +216 0 0 0 0 0 0.105204 0.330848 -0.531671 -1.05558 0 0 0.260591 1.23622 0 2.42922 0.242495 0 0 0 0.299402 -6.24796 0 0 0 0 -0.277087 0 0 -0.953876 -1.44122 0.80592 0 1.27464 0 0 -0.235911 0.0909017 0 0 -0.0519082 -1.93299 0 0 0.0183937 4.14774 0 -0.0500307 -1.26752 2.21062 0.0534996 2.76914 -0.305839 0 -0.526507 0.136407 -0.611454 -6.44848 -2.03815 -0.0694023 0 0 -0.471359 3.45547 0 -1.1719 -0.710519 0.454873 0 0 0 0 -0.375803 0.624632 0 1.21416 1.06161 0 0 0 0.671377 0 0.399756 0.0390044 0 0.35198 -0.352896 2.00006 0 0.163915 0.454261 -1.78835 7.0708 0 0 0 0.0524037 0.0168496 0 0 0 0.0450569 -0.029709 0 0.00460744 0 0.00294367 0.00188325 0 0 0 0 -0.0371083 0 -0.00953362 0 -0.0554432 0 0.374501 0.0414446 0 0.00136285 0 0 -0.00390155 6.54982e-06 0.0225799 0 -0.00317113 0 -0.00136801 -0.0211791 0.00312184 0.000863148 0.00220141 0 0.000137387 0 0 0 -0.000148279 0 0 9.35795e-06 -0.00196081 -0.102195 0.00506478 0 0 -0.0142933 0 0.00213942 0 0 0.00927043 -0.0211726 -0.0802535 -0.009945 0 0 0.00823962 -0.031362 0.0369876 0.135355 0.512218 0 7.2962e-05 0.00121658 -0.183401 0 0 0 0.695537 0 0.00183077 0.114531 0 0.000960807 0.011377 0.207353 0 3.92011e-05 0.0013857 -0.00802078 0.0518343 0 0.105204 0.0524037 0.330848 0.0168496 -0.159 0.00447668 0.633358 -0.377632 1.3038 0.0192164 -0.0758062 0.256607 0.00389933 0.0374845 0.0791095 0.11607 -0.0635563 0.107511 -1.26974 0.563836 0.163748 -0.171707 0.131679 -0.239577 -0.431087 -0.0548718 0.993573 0.0154143 -0.83555 -0.31778 0.478676 0.844716 0.0096111 -1.13916 0.282413 0.021604 -0.00729102 -0.0705255 -0.0488302 -0.285979 0.14342 -0.0117959 0.592586 -1.50749 -0.0115059 -0.0442252 -0.342988 0.102953 -0.198093 -1.78287 -0.660425 -1.00107 0.281357 2.81474 -0.359241 0.840899 -0.251697 0.441905 -0.0498782 0.310022 -0.395531 -0.473551 -0.108983 -2.40457 -3.06296 -0.156542 -0.336864 -2.17425e-05 0.213244 1.23538 -0.0139838 0.0962919 -0.0197985 -0.217506 -0.00581622 -1.08901 -1.0552 -0.40888 1.56044 -0.161051 0.644428 -0.153263 -0.0511209 0.134115 0.0927963 0.303682 -0.0191144 0.123003 0.0322191 0.0269419 0.406793 0 +217 0 0 0 0 0 -0.293278 -0.168671 -0.260443 -0.100858 0 0 -0.125978 -0.903533 0 -1.83895 -0.0648663 0 0 0 0.0926396 6.4702 0 0 0 0 -0.111291 0 0 0.500883 -4.06121 -0.677884 0 -1.3403 0 0 -0.0260704 -0.00718487 0 0 1.0394 1.88171 0 0 0.389504 -1.57971 0 0.00722738 -0.339945 -1.65088 -0.553726 -0.919535 -0.334807 0 0.462581 0.209348 -0.488554 1.6417 1.39684 -0.408325 0 0 0.693237 -2.40582 0 -0.337084 -0.442985 0.231334 0 0 0 0 -0.0128543 -0.140163 0 -3.01304 2.17502 0 0 0 0.0431016 0 -1.50717 4.45321 0 -0.507502 0.796133 1.41888 0 -1.72944 3.10388 -4.10342 12.2962 0 0 0 -0.0444799 -0.0362201 0 0 0 -0.0156996 0.0222842 0 -0.00683071 0 0.00667669 -0.00305149 0 0 0 0 -0.0950646 0 -0.0227848 0 0.0329148 0 -0.0134777 0.0835044 0 0.000123022 0 0 -0.154608 0.00194887 -0.0485765 0 0.00284502 0 0.00103277 -0.000317756 -0.0108083 0.0408677 -0.0251512 0 0.000313683 0 0 0 0.000133163 0 0 -0.00470614 0.00148332 -0.155371 0.0107546 0 0 -0.0531557 0 -0.00161843 0 0 0.00679337 -0.0142187 0.0364081 -0.048657 0 0 0.0757657 -0.0254462 -0.0172162 0.256983 -0.030521 0 -0.220385 -0.00626367 -0.170615 0 0 0 -0.244803 0 -0.159429 0.952239 0 -0.0106141 0.0670224 0.100557 0 -0.00141236 0.00968722 -0.064439 0.659156 0 -0.293278 -0.0444799 -0.168671 -0.0362201 0.287174 0.14446 -0.55338 0.295754 -3.51723 0.0253125 0.0525459 0.0193191 0.00719625 0.019305 -0.103773 -0.253309 0.0702752 0.0658712 1.94603 0.00875935 0.0135833 0.0665975 -0.000222113 0.285455 0.459634 -0.267294 -1.79137 0.0266004 -6.69227 0.252225 -0.0266824 -1.77219 -0.0174824 0.124499 0.0023079 0.0143889 0.00571535 0.075796 0.0781072 -1.54121 -0.558123 -0.0462903 -3.73168 4.11461 0.00682645 0.00025009 0.692997 0.0760714 0.158544 0.56616 0.836799 0.161859 -0.27229 -6.77438 0.3091 -0.62256 -0.234982 0.165722 0.0799344 -0.252145 -0.162745 0.00964131 0.272797 7.50944 21.7296 0.0479503 -0.343774 -0.0141565 0.0532794 -1.51219 -0.0486812 0.0869439 -0.0630333 0.134664 -0.0300585 1.81159 0.0588192 -0.0142677 -0.44362 -0.070232 -0.444405 2.5899 -0.0190627 -0.051464 0.430642 -0.525331 -0.0117113 -0.0519011 0.309645 -0.666886 1.82643 0 +218 0 0.42245 0.252126 -0.00331518 0.0611976 -0.137951 0.0301629 0.436002 0.9689 0.391503 0.650872 0.0811735 0.318183 0.00830866 0.879455 0.128192 3.09539 12.0926 0.258013 0.0499026 1.23163 0.0910853 0.0734465 -0.00100026 0.268566 0.0102489 0.881246 0.123313 -0.196009 -0.0587091 0.323239 0.0413195 0.535042 0.259659 0.749407 0.0125506 0.022789 0.217255 0.87078 -0.236835 0.285625 0.0445106 1.55759 -0.0561728 1.40164 0.215558 0.19187 -0.280671 0.0847034 0.168339 -1.4077 0.990108 -2.73841 0.017115 0.123058 -0.3967 -0.404106 -0.228497 -0.967246 -0.312257 -0.0544829 1.38909 1.49457 1.06708 1.05 0.0861082 -0.388302 0.401005 0.0752232 -0.241279 0.0654742 0.405021 -0.422889 -0.7801 -0.39107 1.04007 -1.8065 1.91944 0.457147 -1.44891 -0.299968 0.75755 -2.07774 -0.812961 0.79664 -1.09776 -1.8198 -0.222752 0.360532 -0.482253 0.498316 0.279214 0 0 0 0 0 -0.00331518 0.0611976 8.54807e-06 0 0 0 0 -3.75821e-06 0 0.000293791 0 0 0.000495241 0.00076258 0.00280276 0 -0.000415608 0.0294343 0.0188338 0 0 0.099309 3.57602e-05 0 -0.0676667 0.869028 0 0 0.00525343 0.175754 0 -0.203959 0 0.0161387 0 0 0.000227966 0 0 -0.300363 -8.01433e-05 0.0105609 0 0.000182286 -0.0160101 0 0 0.200514 0 1.59076e-05 -0.0190458 0.0034783 0 0 -0.000921626 -1.34444e-05 0 0.000717438 -0.0190358 0.00515216 -0.443279 -0.0132663 0.014566 0 0.00101132 -0.0403443 -0.0389173 0.00779968 0.134578 0 0 0 0.266347 -0.0585269 -0.0904957 -0.00263566 0.00643134 -0.0709027 -0.000348263 0.000849806 -0.0115343 -0.0156585 0 0 0 0 0 0 -0.137951 0 0.0301629 0 0 0 0 0.467475 0.0347425 0 0 -0.286477 0 -0.0336206 0 0.00780247 0 0 0.519287 0 -0.478127 0.129341 -0.150607 0.0463146 0 0 0.00348603 0 5.9019 0 -1.80388 0.309723 0 1.00027 -1.0709 -0.019099 0 0.0690381 0 0 0.0154726 0 1.53385 1.12855 0 0 0.101138 0 0 0.858165 -0.471034 0.603779 0 1.21526 0 0.656844 0.103763 -0.258677 -0.181938 -0.0961447 -0.00875649 0.0302385 0.18891 -0.600915 2.86126 0.0448756 0 0 0 -0.386171 -0.027369 0 0 0 0 0.0676032 5.26985 0.666433 -1.82291 0.388677 -0.616883 1.23754 0.050174 -0.0869617 0.197515 -0.493371 0 0 0 0 0 0 +219 0 -0.121033 0.162239 -0.0395099 0.0172472 0.00296572 0.0518954 -0.524525 -1.12774 0.14426 0.888812 -0.276516 -2.21482 0.0283466 -3.45551 -0.251731 0.972797 2.1104 0.469183 -0.419813 2.1322 0.142344 0.0134088 -0.0285012 0.314452 -0.795252 0.433197 0.176783 0.114432 0.60905 -1.00494 -0.0499589 -1.04258 0.243818 0.896244 -0.379039 -0.0892604 0.150714 0.846075 -0.543704 0.690935 0.095194 1.19518 -0.17511 -6.38876 0.319539 0.085657 0.295309 -1.93586 0.36431 -2.15833 1.73322 1.62977 0.763046 -0.354301 0.54828 10.9095 2.8584 0.516851 -0.46582 -0.137226 -0.217198 -0.474919 -1.35435 3.94861 0.502664 -0.223237 -1.9605 -0.0397551 -0.0893351 -0.181767 -0.0155934 -0.82942 -0.538288 2.12665 -0.715093 -0.37667 -3.15999 -1.17744 0.722831 -1.67592 1.47904 -1.53458 -0.665063 1.31696 -2.59123 3.65172 -0.330203 0.633972 -1.07454 1.96582 -2.89658 0 0 0 0 0 -0.0395099 0.0172472 -0.000649353 0 0 0 0 -3.33816e-05 0 0.0137579 0 0 0.000247545 0.000584196 0.0149772 0 0.00390539 -0.092583 0.0306745 0 0 0.0614599 2.73951e-05 0 0.0963382 0.0250244 0 0 0.00353242 -0.150937 0 0.238951 0 -0.0142348 0 0 -0.00314471 0 0 0.567363 -0.000711857 0.00527887 0 -0.0138474 -0.0158915 0 0 -0.0123497 0 -0.00120842 0.148495 0.00353508 0 0 -0.000460673 0.0010213 0 -0.0012257 -0.0103298 0.00208752 1.07663 -0.0238054 0.00765453 0 0.00195906 -0.0488917 0.107358 0.0333199 -0.0185433 0 0 0 -0.55651 0.0127892 0.0245302 0.00464465 -0.0113335 0.123307 -0.000174079 0.000424774 -0.0057654 0.000340965 0 0 0 0 0 0 0.00296572 0 0.0518954 0 0 0 0 0.0304493 -1.69117 0 0 -0.365893 0 -0.0351034 0 -0.0935593 0 0 0.851565 0 -0.822831 -0.00748877 -0.129256 0.138174 0 0 -0.801843 0 -1.9627 0 -2.59868 -0.66403 0 0.104831 -1.40138 -0.0114964 0 -0.00714953 0 0 -0.195926 0 -1.13687 1.80255 0 0 0.288454 0 0 0.259137 -0.243666 0.238258 0 -2.98086 0 -0.261765 0.0528418 -0.126397 -0.648223 0.0543383 0.525961 0.032649 0.0140172 3.87501 10.4179 0.0285983 0 0 0 -0.396829 -0.00878887 0 0 0 0 0.657705 5.70558 1.59617 -1.78853 0.462003 -0.629127 1.32829 0.107354 -0.103283 0.156052 -0.00522473 0 0 0 0 0 0 +220 0 -0.294132 -0.137889 -0.157723 -0.110941 0.172035 0.43 -2.10209 -5.18987 -0.565742 3.44527 -0.0122754 0.12323 0.0953151 1.85832 -0.0166403 -0.667449 -4.52631 0.86011 -0.0600495 0.361715 0.306493 0.0051848 -0.117963 1.23523 -1.40707 0.0785214 -0.0670601 -0.699638 -0.940475 0.431785 -0.336381 0.390308 0.310718 0.0315057 -0.658609 -0.0668631 -0.759952 2.37462 -0.525416 0.530747 0.270114 -1.74853 -0.295508 2.35942 0.707652 0.809012 -0.939761 0.0163046 0.540126 0.95867 2.67118 7.75434 -0.0101524 -0.0840872 0.00120955 -0.290542 -0.241309 -0.0918794 -1.70812 -0.418512 -0.528953 -0.251978 -1.69452 3.9553 0.874357 0.857208 -2.74053 -1.2146 0.346838 -1.786 -0.354517 0.144901 0.739819 -0.725686 0.445877 1.95167 -8.67862 -6.79396 6.08916 -3.19433 2.3216 -1.78428 -3.3196 3.27619 -5.11584 9.24119 -0.731267 1.05333 -1.19683 0.210314 4.47281 0 0 0 0 0 -0.157723 -0.110941 -2.23431e-05 0 0 0 0 -9.22823e-06 0 0.00103419 0 0 0.00096803 0.00150272 0.0414246 0 0.00439778 -0.227565 0.0133545 0 0 0.0228091 7.04679e-05 0 -0.0785198 -0.534125 0 0 -0.00845552 -0.39975 0 -0.227816 0 -0.0576088 0 0 -0.012723 0 0 -0.313418 -0.000196791 0.0206431 0 -0.000476463 -0.040248 0 0 0.157856 0 -4.15797e-05 -0.255512 1.80626e-05 0 0 -0.00180147 3.51413e-05 0 0.000106941 -0.0814749 0.00550584 0.785663 -0.0453778 0.00400981 0 0.00348075 -0.063609 -0.066734 0.0143984 0.0944177 0 0 0 0.976019 -0.066682 0.147884 0.00161495 -0.00394067 0.0648827 -0.000680737 0.00166108 -0.0225457 0.0554176 0 0 0 0 0 0 0.172035 0 0.43 0 0 0 0 0.00998968 -0.321971 0 0 0.408264 0 0.0447135 0 0.0539447 0 0 -0.227958 0 -0.129782 -0.0951471 -0.0156809 -0.00139909 0 0 0.430505 0 -1.4574 0 1.13186 0.997197 0 -0.77945 0.296598 -0.0087207 0 0.0049985 0 0 -0.0216399 0 1.10424 0.588359 0 0 0.0854373 0 0 -0.375441 0.630315 -0.212983 0 -0.928243 0 -0.192273 -0.0826813 0.119796 -0.0827816 0.00313995 0.322455 0.0136273 0.0612497 -0.00225666 -1.99448 0.0127872 0 0 0 0.0937448 -0.0542764 0 0 0 0 -0.0450445 -3.61177 -1.57884 2.54977 -0.438633 0.535435 -0.749333 -0.111664 0.134682 -0.226965 0.443981 0 0 0 0 0 0 +221 0 -0.528872 -0.218296 0.0375067 0.0849779 -0.27285 -0.251508 0.149138 1.39557 0.531307 -0.583818 0.0784165 -0.611959 -0.0100109 -1.73947 0.0284045 -1.4219 -5.32569 -0.135634 -0.0180082 -3.09158 -0.0323394 0.000934555 0.0208371 -0.103255 0.292807 -0.373777 -0.0620932 0.0143887 -1.43497 -0.139929 0.114089 0.210711 0.0953352 -0.196922 0.144934 0.0262072 -0.081326 1.37887 0.0793955 -1.29107 -0.0321834 -0.019848 0.0560151 -5.19499 -0.0794006 -0.451462 -0.490793 0.0718704 -0.249688 -2.17138 -0.496813 2.98867 0.165818 0.00337657 -0.187279 -4.22696 -0.762602 -0.877378 0.18376 0.0931703 0.738531 3.08926 0.35794 -1.07901 0.294978 0.564373 0.847392 -0.0524947 -0.327795 0.0897885 -0.132103 0.000237932 0.0570731 0.134907 0.74483 0.374185 -9.36233 0.860069 -7.06141 -2.2035 0.446217 -1.06933 0.205889 -0.530166 1.15932 -1.62915 0.018622 -0.0371869 0.313017 -0.648531 5.23176 0 0 0 0 0 0.0375067 0.0849779 0.000573572 0 0 0 0 -3.48383e-05 0 0.0257374 0 0 0.000994658 0.00593186 0.0251858 0 0.00407423 -0.00120012 0.184083 0 0 -0.0815881 0.000278447 0 -0.0429966 -0.399853 0 0 -0.0116776 -0.0726189 0 -0.0222551 0 0.0143491 0 0 0.00106817 0 0 0.404636 -0.000749436 0.0207936 0 0.0117825 -0.00966147 0 0 0.215785 0 0.000463512 0.285859 0.0151568 0 0 -0.0018565 -0.00139453 0 0.00412032 -0.0270162 0.0166589 -0.000801125 0.00750347 0.0289118 0 0.000575322 -0.0904497 -0.137789 0.00630906 0.193397 0 0 0 -3.86471 -0.206344 -0.888604 -0.0182512 0.0448688 -0.599624 -0.00067153 0.00163236 -0.0222298 -0.180536 0 0 0 0 0 0 -0.27285 0 -0.251508 0 0 0 0 0.392018 0.361669 0 0 -0.364893 0 -0.0385538 0 0.016837 0 0 -0.978673 0 0.137949 0.185863 -0.0644 -0.0849188 0 0 0.143975 0 -7.4455 0 0.150864 -0.357823 0 1.41204 -0.0886059 -0.00790476 0 0.0611271 0 0 0.0409262 0 -2.21507 -2.47879 0 0 -0.253378 0 0 0.0136778 0.00562976 0.0532776 0 -1.67406 0 0.9843 0.0544077 -0.052563 0.168293 -0.0424711 -0.377824 -0.102262 0.134683 -1.33857 -18.5696 -0.0133678 0 0 0 -0.155798 0.0141225 0 0 0 0 -0.0486751 -3.42472 0.716854 -3.8245 0.0748525 -0.26851 -0.178414 0.116085 -0.165308 0.272998 -0.88166 0 0 0 0 0 0 +222 0 0.285111 -0.095318 0.0261123 0.0563966 -0.113337 -0.280664 0.690272 1.28124 0.090042 -0.716359 -0.110678 0.292703 -0.0124365 -0.324222 -0.0825072 -2.53985 -6.14767 -0.338078 -0.153485 1.20895 -0.097971 -0.0114095 0.0118457 -0.187987 0.701441 -0.945127 -0.268737 0.770917 1.14734 -0.356859 0.0490543 -0.462013 -0.156596 -1.14733 0.381494 -0.015024 -0.76911 -1.37608 0.0586268 -0.0612265 -0.0522776 -2.81763 0.0287732 1.59403 -0.21777 -0.594121 1.05125 -0.728562 -0.186762 -0.172713 -1.06852 8.63309 0.320069 -0.168427 0.369672 -0.178479 0.975257 0.139185 0.5345 0.107753 0.429253 -0.780279 -0.599002 -1.06811 0.495622 -0.248942 1.09252 -0.545999 -0.0555488 -0.496221 0.0101544 0.183392 1.59852 -0.874137 -1.0089 5.55727 1.38793 0.895302 -1.24285 0.844016 -1.48133 2.59641 0.677748 -0.960777 1.80936 -3.42007 0.0510743 -0.0833312 0.262441 0.295943 -4.18311 0 0 0 0 0 0.0261123 0.0563966 -0.00203713 0 0 0 0 -0.000585841 0 0.0229491 0 0 -0.00098322 -0.00160819 0.0157569 0 0.00297027 -0.0396472 0.139785 0 0 0.109733 -7.43078e-05 0 -0.0850337 -1.30642 0 0 0.00230437 -0.296123 0 -0.231321 0 0.0503055 0 0 0.00379325 0 0 -0.734226 -0.0125189 -0.0226161 0 -0.0452458 0.0281652 0 0 -0.0826513 0 -0.00600639 0.0751965 0.014574 0 0 0.00192029 0.00140329 0 -0.007749 -0.0779934 -0.0093041 3.32227 -0.0177635 0.0258884 0 0.0119863 -0.0720292 -0.0226756 0.145639 -0.110145 0 0 0 5.69408 0.270907 -0.0981528 0.0254818 -0.0610957 0.837193 0.000818052 -0.00202808 0.0271491 -0.0994427 0 0 0 0 0 0 -0.113337 0 -0.280664 0 0 0 0 -0.133912 -0.152096 0 0 -0.118201 0 -0.0163838 0 -0.0164819 0 0 0.582103 0 0.468358 -0.0254624 0.0565632 0.0856943 0 0 -0.166783 0 2.25837 0 -1.07328 -0.409015 0 -0.132199 0.182477 0.00323852 0 -0.0141128 0 0 -0.0172992 0 0.23553 0.775849 0 0 0.0876367 0 0 -0.0633049 -0.0835789 0.0104502 0 0.0144387 0 -0.482109 -0.0180345 0.047893 -0.0653006 0.0371875 0.0805897 0.171777 -0.245887 0.969654 7.50003 0.0290132 0 0 0 0.0193138 0.087127 0 0 0 0 0.0541804 4.31283 1.10863 -0.9329 0.531752 -0.588658 0.859996 0.106957 -0.107463 0.136289 0.00257819 0 0 0 0 0 0 +223 0 -0.190583 0.0775913 0.0528822 0.0358331 0.0194153 -0.0543225 0.20448 -0.717693 0.00810602 0.177034 0.476812 1.30122 -0.026261 1.8081 0.190841 1.04419 5.57683 0.00975924 0.289414 -5.4927 0.0394365 0.0801075 0.0239136 0.0760701 0.463038 0.0993119 0.193009 -0.0452237 -1.18042 0.503665 0.0879406 1.43568 -0.0566445 0.44176 0.378645 0.115202 0.643214 -0.937406 0.956247 -1.99049 -0.10555 1.73491 0.227337 3.82455 -0.426782 -0.575357 -0.28427 2.6736 -0.502076 1.99507 -0.477023 2.39624 -1.08304 -0.042601 0.00200064 0.147135 -1.38378 1.03391 0.023517 0.198292 -0.0317555 1.54895 0.705952 -1.87792 -0.991955 0.441015 0.915017 0.742273 -0.00490732 -0.239562 -0.487032 1.27153 -0.675465 3.78056 -0.789685 -0.954611 3.83687 -0.62252 3.71969 0.757292 -0.446156 0.849852 -0.885651 0.715231 -0.558683 1.93412 0.100094 -0.261973 0.916428 -2.15762 4.30369 0 0 0 0 0 0.0528822 0.0358331 0.00103414 0 0 0 0 -0.000101546 0 -0.0128909 0 0 0.0018694 0.0113188 -0.0271225 0 -0.00239442 0.0555922 -0.110728 0 0 0.131583 0.000531401 0 -0.132921 0.358218 0 0 0.00591703 0.12802 0 -0.272951 0 0.0722241 0 0 0.00589088 0 0 -0.407417 -0.00218071 0.0389279 0 0.0209542 -0.0682784 0 0 0.18811 0 0.000552465 -0.699797 -0.00617225 0 0 -0.00343876 -0.00273526 0 9.87556e-06 -0.104127 0.00331311 0.433063 -0.0929838 0.00917469 0 0.0116774 -0.0748694 -0.103203 0.0126001 0.171022 0 0 0 1.8488 -0.102214 0.649541 0.00594522 -0.0139006 0.20384 -0.0012443 0.00301885 -0.0411803 0.188707 0 0 0 0 0 0 0.0194153 0 -0.0543225 0 0 0 0 -0.413903 2.50551 0 0 0.418743 0 0.0534537 0 0.13019 0 0 -0.818805 0 0.638165 -0.153297 0.196842 -0.0985943 0 0 1.09577 0 7.39841 0 0.988447 1.10709 0 -1.15595 1.00809 0.0288863 0 -0.0586108 0 0 0.298045 0 2.79171 -1.75772 0 0 -0.225395 0 0 -0.511325 -1.94862 -0.172824 0 3.84516 0 1.2973 -0.0726819 0.15406 0.53266 0.0936983 -0.494423 -0.726382 0.169297 -5.21424 -15.6812 -0.0976349 0 0 0 0.665777 -0.0115102 0 0 0 0 -0.980792 -1.99501 -1.00027 2.71003 -0.0748671 0.263784 -0.67039 -0.0360139 0.0973795 -0.239202 0.593664 0 0 0 0 0 0 +224 0 0.341728 0.336282 0.0413582 0.127954 -0.150276 -0.107676 0.0247781 -0.283589 0.270933 -1.03304 -0.027499 -0.00864626 -0.0130759 -0.536555 -0.0301 1.06454 6.40653 -0.206674 -0.0910997 0.973636 -0.0604437 -0.119989 0.0179991 -0.306675 0.20971 0.188412 -0.020375 0.392919 0.567557 -0.201943 0.0729694 -0.237336 -0.960593 -0.117059 0.230155 -0.00298091 0.154998 -4.64668 -0.0262613 0.10275 -0.0432497 0.143624 0.0117813 0.00184121 -0.0994893 -0.244417 0.471039 -0.534941 0.0361468 -0.869788 -0.297462 0.935965 0.0986925 -0.0442525 0.140008 1.48384 0.167087 0.496583 0.312405 0.0594623 1.21199 -1.5717 0.337066 -0.155289 0.334814 -0.0393175 0.493067 0.205053 -0.115755 0.0392819 0.102093 -0.18518 -0.101432 0.97625 -0.386488 -0.307973 11.6135 4.41504 -0.971142 2.56316 -1.62484 3.15034 0.630945 -0.249753 0.309122 0.90524 0.0888781 -0.0435036 -0.178765 0.334823 -0.852811 0 0 0 0 0 0.0413582 0.127954 -0.000113323 0 0 0 0 -4.4008e-07 0 -0.0260213 0 0 -2.08147e-05 -2.81231e-06 -0.0434472 0 -0.00671631 -0.0258838 -0.180827 0 0 0.0673539 -1.20321e-07 0 0.0288307 -0.184126 0 0 0.0170537 -0.0882135 0 0.0541429 0 0.0268558 0 0 0.00599774 0 0 -0.0863913 -9.13166e-06 -0.0005236 0 -0.00233433 0.00186224 0 0 0.0968814 0 -0.000100906 0.132444 0.000697582 0 0 4.9188e-05 0.000248593 0 -9.71973e-05 0.128606 -0.00106331 1.45071 -0.00085422 -0.0249683 0 -0.00101487 0.0926051 0.488604 -0.000622448 0.038783 0 0 0 0.249773 0.00646009 0.215554 0.000572276 -0.00143769 0.0606844 2.164e-05 -5.4737e-05 0.000720075 0.0815301 0 0 0 0 0 0 -0.150276 0 -0.107676 0 0 0 0 0.171652 -0.642045 0 0 -0.49345 0 -0.0505822 0 -0.0428335 0 0 0.8833 0 -0.409274 0.0308381 -0.158998 0.107983 0 0 -0.475925 0 0.783174 0 -1.46888 -1.36538 0 0.25847 -0.592071 -0.0147465 0 0.0192997 0 0 -0.0576179 0 -1.48992 1.8302 0 0 0.2252 0 0 0.108175 1.48226 -0.0806089 0 0.205552 0 -0.406884 0.0222095 0.0253048 -0.412945 0.101908 1.47799 0.468638 -0.0886611 -0.125818 3.4407 0.0599976 0 0 0 -0.0463784 -0.0138049 0 0 0 0 0.0524168 13.1789 3.34883 -1.66223 0.53135 -0.400835 0.443676 0.0906431 -0.0932688 0.194971 -0.084409 0 0 0 0 0 0 +225 0 1.36682 0.232918 0.0894764 0.0734969 -0.0531474 -0.255288 0.239288 0.955119 0.497545 -2.09472 0.139774 -0.803391 -0.0352486 -0.760205 -0.00293773 -0.722535 0.640778 -0.511064 -0.0930431 -1.39609 -0.165256 -0.311013 0.0443124 -0.709944 0.489652 -0.310321 -0.018435 0.460257 -0.26077 -0.427576 0.168197 -0.0201605 -1.84714 0.12547 0.338814 0.0394105 0.336142 -7.8236 0.509064 -1.1734 -0.141117 1.91013 0.147011 -2.47313 -0.499437 -0.841466 0.249228 -0.239676 -0.336562 -0.1597 -1.14101 -1.63293 0.216095 -0.12493 0.277644 1.55538 0.361837 -0.546784 1.0561 0.264801 -0.543279 2.37219 2.50849 -2.08904 -0.143834 0.0634329 2.25335 0.334231 -0.240562 1.55958 0.0456824 0.324669 -0.550703 -0.505064 -0.73093 -1.69403 27.2562 8.84765 -3.23607 6.43294 -5.39534 8.42769 1.92701 -1.56966 1.99958 -1.21441 0.446169 -0.504659 0.491706 -0.527233 0.391833 0 0 0 0 0 0.0894764 0.0734969 -2.57035e-05 0 0 0 0 -2.29447e-08 0 -0.0265865 0 0 2.48294e-05 2.12057e-06 -0.0495513 0 -0.00946466 0.0393477 -0.118391 0 0 0.198235 1.09157e-07 0 -0.0133296 0.930814 0 0 0.0412302 0.222193 0 -0.22616 0 0.0666105 0 0 0.0133098 0 0 -0.758543 -2.62315e-07 0.000463443 0 -0.000472934 0.00102019 0 0 0.0852299 0 5.34639e-05 -0.0633204 -0.000398921 0 0 -3.5521e-05 0.000106237 0 6.95413e-05 -0.0133216 0.000121495 0.5533 0.000283313 0.0362656 0 -0.000297982 -0.00408791 0.0571084 -0.00161975 0.0440244 0 0 0 1.52555 -0.00376921 0.156692 -0.000342874 0.000795921 0.168131 -1.13662e-05 2.60044e-05 -0.000373427 0.0396129 0 0 0 0 0 0 -0.0531474 0 -0.255288 0 0 0 0 0.0608504 1.48092 0 0 -0.211394 0 -0.0436767 0 0.0527329 0 0 -0.773081 0 0.144759 -0.0184095 -0.0024875 -0.0948881 0 0 0.465453 0 1.56023 0 -2.19576 -1.16574 0 -0.0397836 -0.0588432 -0.00537232 0 0.00759634 0 0 0.173226 0 -0.973225 -1.74681 0 0 -0.199192 0 0 -0.229063 0.297314 -0.0932304 0 0.622617 0 -0.204063 -0.00546811 0.0364959 0.583424 -0.112016 -0.961174 0.253733 0.095096 -1.41548 -0.602276 -0.0592368 0 0 0 0.261175 0.047862 0 0 0 0 -0.398306 12.1838 0.997544 1.21671 0.361891 -0.361287 1.01235 0.0256452 0.00206268 0.0368534 0.0567514 0 0 0 0 0 0 +226 0 0.00630626 0.182189 0.0671491 0.187838 -0.187776 0.00571614 0.969376 2.52246 0.502764 -1.75294 0.558831 0.185017 -0.0199107 1.0353 0.204431 1.5308 4.77103 -0.252248 0.255491 -1.8817 -0.0461088 -0.101865 0.0282537 -0.462102 0.236911 0.469119 0.0500777 -0.461221 -1.5683 0.30506 0.120302 1.14209 -0.416405 0.488412 0.000236193 0.130474 0.385335 -2.46217 0.775415 -0.670582 -0.0645368 2.43955 0.19335 0.0251803 -0.149923 -0.0623097 -0.867325 1.48833 -0.367286 1.13234 -1.2538 -3.67649 -0.469884 0.294476 -0.169796 -0.0525969 -0.383434 -0.295447 0.533876 0.0800971 -1.00174 0.98311 2.09138 -2.06299 -0.683128 -0.18498 1.66496 0.288727 -0.204966 1.3645 0.383247 0.833904 -0.681986 -0.169819 0.0325574 -1.5976 9.3 4.74071 -4.97609 2.13346 -2.7967 5.22392 1.10523 -1.70188 3.00555 -4.64474 0.133933 -0.429589 0.813152 -1.45325 2.35653 0 0 0 0 0 0.0671491 0.187838 0.000222022 0 0 0 0 8.68476e-07 0 0.00284103 0 0 4.13119e-05 5.63e-06 -0.0191396 0 -0.00353072 0.0325058 0.0128795 0 0 -0.148184 2.41276e-07 0 -0.018573 -0.445791 0 0 -0.0254063 0.0150666 0 -0.0899066 0 -0.0109354 0 0 -0.000993136 0 0 -0.309879 1.80363e-05 0.00103872 0 0.00457857 -0.00359546 0 0 -0.0885137 0 0.000201707 0.20522 -0.00141908 0 0 -0.000100467 -0.000484655 0 0.000217781 0.0665882 0.00214228 1.20837 0.00173449 0.0380733 0 0.00207374 -0.0485069 0.295485 0.00131669 0.169393 0 0 0 0.284796 -0.0134749 0.0010133 -0.00122326 0.00306885 0.180186 -4.33281e-05 0.000109736 -0.001442 -0.0154235 0 0 0 0 0 0 -0.187776 0 0.00571614 0 0 0 0 0.291339 2.11796 0 0 -0.670801 0 -0.0839361 0 0.0962048 0 0 -0.563345 0 -0.643491 0.0739374 -0.3253 -0.059156 0 0 0.773202 0 -2.29485 0 -2.4067 -1.01912 0 0.582057 -1.30025 -0.0384499 0 0.0391653 0 0 0.257712 0 -1.69229 -1.82805 0 0 -0.207871 0 0 -0.30658 0.918147 -0.0510658 0 1.81067 0 -0.763835 0.168622 -0.0591345 0.691306 -0.0143827 -0.633617 0.794614 0.055027 -1.23064 9.24304 -0.0347165 0 0 0 0.442893 -0.000275416 0 0 0 0 -0.525289 15.6069 3.29207 -2.35411 0.251941 -0.257583 0.535557 0.0841649 -0.0765937 0.135788 -0.0994145 0 0 0 0 0 0 +227 0 0 0 0 0 0.232485 0.286394 -0.725371 -2.39397 0 0 -0.304515 1.34364 0 2.59718 -0.0609351 0 0 0 -0.0452085 1.11435 0 0 0 0 -0.444824 0 0 -0.127713 2.00797 0.732394 0 -0.113866 0 0 -0.199195 -0.0310999 0 0 -1.20123 0.962901 0 0 -0.252206 5.32005 0 0.644381 0.473232 -0.0591606 0.143683 0.667151 -0.260375 0 -0.0483813 -0.214156 0.525425 -0.0423319 -0.0979219 -0.0850263 0 0 -0.326377 -0.897017 0 0.00454568 -0.238528 1.25024 0 0 0 0 -0.314205 -0.474244 0 -1.97949 -1.2085 0 0 0 2.54912 0 1.61648 -2.49449 0 0.570634 -0.0641513 2.72965 0 0.580373 -0.00821687 2.00172 -5.54573 0 0 0 0.172584 0.0384259 0 0 0 0.0150808 0 0 0.00348625 0 0 -0.0166065 0 0 0 0 0.0707767 0 0.0108004 0 -0.0479278 0 0.0573945 -0.0792356 0 -0.00506874 0 0 -0.207095 0 -0.00664187 0 0 0 0 -0.024171 -0.0316838 0 -0.00308781 0 0 0 0 0 0 0 0 0 0 0.0450805 0 0 0 0 0 0 0 0 0 0 0.342113 0 0 0 0.0916219 0.0216073 0 -0.0127146 0.3755 0 0.0851616 0 0.265304 0 0 0 0.0314084 0 0 0.19177 0 0 0 0.0772181 0 0 0 0 0.184553 0 0.232485 0.172584 0.286394 0.0384259 -0.48172 -0.0627485 0.492563 -1.01467 1.46182 -0.00623004 0.0195301 0.384708 -0.00175124 0.00372432 0.0677804 0.075003 -0.0293479 0.0121001 -0.0710172 -0.353323 0.721494 -0.360997 0.316333 0.0721697 -0.0889603 -0.000894546 0.716444 -0.0145177 10.8465 -0.3854 0.930389 3.55208 0.00904721 -2.06768 0.879431 0.0178892 -0.00461889 -0.178281 -0.0413836 0.34912 0.162706 -0.00850969 6.22521 0.214721 2.66697e-06 -0.038743 0.200004 -0.0702184 -0.16711 -0.162714 0.55085 -0.082834 0.156411 -0.568896 -0.193672 2.05726 -0.202376 0.265135 0.779677 0.561397 -0.625695 -0.460011 0.0999307 -0.279586 -11.6287 -0.0652155 0.645617 -0.00205585 0.129044 0.472426 0.0526236 0.0578946 -0.0130491 -0.191266 0.0326526 -0.530193 -5.22382 -1.63964 7.09104 -0.223164 1.47674 -1.49445 -0.0855091 0.245416 -0.314448 0.526135 -0.00492115 0.0752573 -0.0730468 0.264873 -0.566857 0 +228 0 0 0 0 0 0.548625 0.231362 -0.549007 -3.47345 0 0 -0.0418479 0.138578 0 0.287647 0.02269 0 0 0 0.0134544 -3.59825 0 0 0 0 -0.694045 0 0 0.0396184 -0.43422 0.120922 0 0.612793 0 0 -0.149407 0.014009 0 0 -0.158275 -0.860236 0 0 -0.0143487 0.938217 0 0.0706341 0.247134 1.03387 -0.0121461 -0.425062 0.173498 0 -0.26716 -0.225626 0.512847 -1.66486 -0.673936 0.554393 0 0 1.46098 -1.36996 0 -0.116808 0.711078 -0.435756 0 0 0 0 0.0662386 0.829213 0 0.269333 -1.80698 0 0 0 5.12246 0 0.465673 1.45776 0 0.00743976 0.633271 4.98254 0 0.025618 0.815911 -0.255434 2.29758 0 0 0 0.0170849 0.0199463 0 0 0 -0.00412298 0 0 0.00266979 0 0 -0.121132 0 0 0 0 -0.210793 0 -0.0400236 0 -0.554009 0 -0.114706 0.165965 0 -0.0116067 0 0 -0.213372 0 0.0360839 0 0 0 0 0.160462 -0.0512703 0 0.0340579 0 0 0 0 0 0 0 0 0 0 -0.00202695 0 0 0 0 0 0 0 0 0 0 0.0653834 0 0 0 0.0500361 0.075464 0 0.142645 0.236689 0 -0.0917297 0 0.0369599 0 0 0 0.577615 0 0 0.212899 0 0 0 0.150756 0 0 0 0 0.133859 0 0.548625 0.0170849 0.231362 0.0199463 0.0932107 0.00860218 0.116667 -0.684046 0.26162 -0.0295868 0.0532414 -0.465323 -0.00620532 -0.138638 0.0358997 0.0153194 0.0266254 -0.120348 0.577659 -0.771934 0.205515 -0.248855 -0.00095072 0.147483 0.265331 -0.0400967 0.270977 -0.0121027 2.7587 -0.104521 -0.456083 1.52412 0.00748744 -1.64272 0.111754 -0.0246738 -0.00532813 -0.100324 -0.0259712 -0.388084 0.0298989 -0.00361786 2.24575 1.46667 0.00551996 -0.0262888 0.313394 -0.0960674 0.0367671 0.0808478 3.23481 -0.18322 -0.0811552 -1.06771 -0.056562 0.436875 -0.0772551 0.251335 0.70706 -0.100279 0.885211 0.345414 -0.0325413 -0.634594 -6.69998 -0.120916 -0.0344049 -0.0249571 -0.258941 -0.407022 0.359066 0.0461012 0.0629212 0.124402 -0.000234416 -0.112714 2.56075 1.58066 4.04487 0.430602 0.32146 0.970344 0.167014 -0.0258664 0.144092 0.605901 0.0489458 -0.00302025 0.0588613 -0.0635606 0.348483 0 +229 0 0 0 0 0 0.258887 0.177464 -0.989501 -1.79639 0 0 -0.435691 0.730535 0 0.61557 -0.0128036 0 0 0 0.293013 -0.212342 0 0 0 0 -0.36067 0 0 -0.170739 3.6278 0.327233 0 0.0139711 0 0 -0.206478 -0.0511469 0 0 -1.66184 1.24131 0 0 -0.337148 1.62457 0 1.02465 0.540466 1.26766 0.516879 -0.918289 1.06031 0 -0.306977 0.0903033 -0.445072 -1.05918 -0.0426451 1.23161 0 0 -0.853956 -4.66378 0 0.578779 0.549221 -0.165903 0 0 0 0 -0.502821 -0.807542 0 -0.202306 0.818088 0 0 0 2.41492 0 2.39829 -5.24658 0 1.01679 -1.97838 4.15817 0 0.904209 -1.96467 4.10625 -8.58032 0 0 0 0.184648 0.038594 0 0 0 -0.0303126 0 0 -0.00377874 0 0 -0.000289055 0 0 0 0 0.0638318 0 0.0113804 0 0.0389446 0 -0.21753 -0.362383 0 0.000671854 0 0 0.0318189 0 -0.0445056 0 0 0 0 -0.107488 0.0054392 0 -0.013065 0 0 0 0 0 0 0 0 0 0 0.208971 0 0 0 0 0 0 0 0 0 0 0.11773 0 0 0 -0.0700281 0.00921723 0 0.166703 0.150907 0 -0.0355992 0 0.0662203 0 0 0 -0.0724834 0 0 -0.0262775 0 0 0 0.0424885 0 0 0 0 -0.0400663 0 0.258887 0.184648 0.177464 0.038594 -0.297632 -0.125232 0.516401 0.0346445 0.643994 -0.0021468 -0.011124 0.251674 -0.000932796 0.0215468 0.0679652 0.0120948 -0.0190251 0.0319045 0.28738 -0.528844 0.694976 -0.00784661 0.154625 0.010198 -0.062095 0.133543 0.155123 -0.0220315 9.21194 -0.493457 3.63556 3.07674 0.00865142 -0.0753357 1.84807 0.0191099 -0.00882046 0.00995679 -0.0892674 0.830267 0.0727316 0.0213378 5.13162 0.477041 -0.0028636 -0.0487548 -0.0510584 -0.112985 0.0968087 0.501028 -2.7383 -0.339605 0.0856086 1.2517 -0.201377 -0.980463 -0.154466 0.0349093 -0.867278 -0.526646 0.572661 -0.563766 0.234266 -1.31404 -14.4514 0.245554 -0.0616332 0.0576518 0.163433 0.197327 -0.109781 0.0571774 -0.0239771 -0.0339968 -0.118011 -0.354039 -20.4124 -2.89335 1.73355 -0.82886 1.9647 -3.25838 -0.0703689 0.203702 -0.471618 0.224698 -0.0129756 0.0846011 -0.183537 0.276671 -0.353166 0 +230 0 0.522667 0.178085 0.042814 0.178627 -0.346386 -0.0893105 0.3116 0.530279 0.817923 -0.559068 0.221669 -1.03251 -0.00130798 -1.8956 0.047042 0.181911 1.96414 0.00753316 -0.00117662 -1.70142 0.00709154 -0.201273 0.0169452 -0.150952 -0.148517 -0.00480248 0.0374483 -0.0936026 -0.775181 -0.430468 0.119445 0.254729 -0.733954 0.33237 -0.0820921 0.0377099 0.205857 -3.97288 0.14664 -0.705577 0.00360785 1.61843 0.0423963 -4.57425 0.0949918 -0.155969 -0.444279 -0.0316633 0.031027 0.512832 0.295171 0.947547 0.435512 0.182604 -0.479118 1.45138 0.334239 -0.496469 0.0410606 -0.0011711 0.493475 0.960601 0.0300197 0.570439 -0.338026 -0.926786 -0.516001 0.11724 -0.422445 0.194365 0.212321 0.0717862 -0.432799 1.49736 0.900731 -0.674439 7.48267 2.39143 -1.38487 1.36482 -1.81054 5.32412 0.44986 -0.363504 0.534545 -0.625038 -0.0320519 0.0183019 -0.0109562 -0.570038 2.31327 0 0 0 0 0 0.042814 0.178627 0 0 0 0 0 0 0 -0.00764364 0 0 0 0 -0.00682904 0 -0.000342387 -0.0278941 -0.0657278 0 0 -0.041562 0 0 0.0437427 -0.325741 0 0 -0.00948515 -0.0620808 0 0.0868444 0 -0.00358551 0 0 -0.00125888 0 0 -0.0142315 0 0 0 0 0 0 0 0.0232495 0 0 0.174552 0 0 0 0 0 0 0 0.0567389 0 0.55024 0 0.00291042 0 0 0.00826048 0.187703 0 0.0793613 0 0 0 -0.0502495 0 0.0888511 0 0 0.0767219 0 0 0 0.0296141 0 0 0 0 0 0 -0.346386 0 -0.0893105 0 0 0 0 0.157397 0.334824 0 0 -0.56078 0 -0.0609833 0 0.00764593 0 0 -0.732115 0 -0.905235 0.0557306 -0.247197 -0.118348 0 0 0.127593 0 -5.75638 0 -4.31487 -2.02821 0 0.544437 -2.01649 -0.0279161 0 0.0139044 0 0 0.0194873 0 -3.62524 -1.45797 0 0 -0.225366 0 0 0.629311 2.62368 0.297541 0 1.5163 0 -0.39296 0.191427 -0.267872 -0.00805195 0.0343456 1.80702 0.263943 -0.0398051 0.3121 10.8308 0.103482 0 0 0 -0.297928 -0.00525662 0 0 0 0 0.309771 27.0476 4.02738 -2.32401 0.708654 -0.681402 1.39615 0.101075 -0.110498 0.224959 -0.279582 0 0 0 0 0 0 +231 0 0.586306 0.385518 -0.0390699 -0.0166229 0.134463 0.227885 -0.464215 -0.908273 -0.128571 0.510186 -0.263029 1.24686 0.0156502 0.672345 -0.175487 1.28035 2.95024 0.0528061 -0.221528 6.14038 0.060551 -0.220106 -0.0168161 0.298303 -0.170046 0.551853 -0.0403503 -0.331579 0.368396 0.556259 -0.0701753 -1.3324 -0.880817 -0.287914 -0.210652 -0.0821673 -0.256409 -4.83042 -0.601301 2.61767 0.0668236 -1.51088 -0.17075 2.63769 0.262868 0.971309 -0.180604 -2.07578 0.50521 -0.377449 0.607612 -2.30994 0.5707 0.0436214 -0.204601 -0.282395 0.113643 -0.66061 -0.378889 -0.135333 -1.50691 0.185315 1.09737 0.438996 0.559238 -0.0212048 0.891882 -0.243879 0.0701551 -0.195039 0.153406 -1.53003 0.430739 -0.125119 1.49722 0.0940908 11.2006 0.418686 1.37844 1.74192 -1.94859 6.2622 -0.897696 0.39341 -0.186719 1.08055 -0.0886962 0.220552 -0.454373 1.06411 -1.09936 0 0 0 0 0 -0.0390699 -0.0166229 0 0 0 0 0 0 0 -0.0231577 0 0 0 0 -0.0172024 0 -0.00538765 0.127168 -0.0853788 0 0 -0.206555 0 0 -0.16006 0.0532412 0 0 -0.0192212 0.252988 0 -0.443829 0 -0.0473953 0 0 -0.00420981 0 0 -1.32448 0 0 0 0 0 0 0 0.0636522 0 0 -0.234308 0 0 0 0 0 0 0 0.0267628 0 0.377415 0 0.0459807 0 0 -0.0281114 -0.00493165 0 0.114324 0 0 0 2.78095 0 0.179205 0 0 0.288793 0 0 0 0.0260976 0 0 0 0 0 0 0.134463 0 0.227885 0 0 0 0 0.226927 -1.37153 0 0 -0.281085 0 -0.0512585 0 -0.0784391 0 0 0.605582 0 -0.797588 0.00522572 -0.25451 0.0565315 0 0 -0.750224 0 -4.02199 0 -5.38396 -0.423873 0 -0.0476698 -1.95501 -0.0333085 0 0.0344399 0 0 -0.138087 0 -1.52555 0.83902 0 0 0.0696799 0 0 0.544908 -0.872624 0.119728 0 -0.478103 0 -0.666483 0.102382 -0.156225 0.9247 -0.153916 -0.875516 0.262307 0.139208 1.30605 8.18206 0.0106961 0 0 0 -0.335605 0.0331343 0 0 0 0 0.283849 30.0257 3.07159 -0.263919 0.823876 -0.80005 1.61897 0.0603545 -0.0402683 0.0542636 0.0603923 0 0 0 0 0 0 +232 0 0.0104287 0.0218586 0.0271898 0.0948471 -0.160595 -0.311776 1.61787 3.10251 0.440963 -1.11283 -0.288494 0.264229 -0.00266691 0.0731295 -0.135014 0.326955 1.87864 -0.262134 -0.286097 3.46082 -0.0342961 0.154879 0.0109332 -0.180867 1.05622 0.043932 -0.00695005 0.895852 2.07504 -0.119628 0.0709247 -1.0095 0.00120767 -0.385748 0.671631 -0.0386811 0.258281 -0.83589 -0.345471 0.429254 -0.00661475 -0.245357 -0.0394999 0.991113 0.0159268 -0.584068 1.40847 -2.03887 0.0350194 -0.0227519 -0.458778 1.18323 0.621911 -0.124974 0.334483 1.99045 0.468767 -0.613898 0.223628 0.0165818 -0.528263 0.817717 -1.20673 -1.02829 -0.244354 -1.34408 0.179591 0.389995 -0.228227 0.456265 0.282255 -0.637377 -0.113332 -0.338622 -0.994058 0.174366 2.09361 2.01581 -4.49247 0.220977 -0.170468 -1.31747 0.3844 -0.538174 1.00684 -4.47221 -0.00537399 0.0655004 -0.373842 1.45568 -6.19227 0 0 0 0 0 0.0271898 0.0948471 0 0 0 0 0 0 0 0.00535872 0 0 0 0 -0.00116488 0 0.000824387 -0.0536737 0.00463728 0 0 -0.0565299 0 0 0.0454475 -0.462102 0 0 -0.0111994 -0.16039 0 0.100294 0 0.0027043 0 0 -0.0002301 0 0 0.237042 0 0 0 0 0 0 0 -0.075835 0 0 0.082559 0 0 0 0 0 0 0 0.00535424 0 0.043398 0 0.00770428 0 0 -0.0249811 0.0392439 0 -0.00555475 0 0 0 -0.564746 0 0.00874537 0 0 0.0099067 0 0 0 -0.015069 0 0 0 0 0 0 -0.160595 0 -0.311776 0 0 0 0 -0.0857573 -0.764143 0 0 -0.458804 0 -0.0590237 0 -0.0438797 0 0 0.451101 0 -0.245655 0.0133571 -0.0574085 0.0521301 0 0 -0.462438 0 -0.902448 0 -2.10593 -1.52011 0 0.172718 -0.96618 -0.0135625 0 -0.00749708 0 0 -0.0783733 0 -1.60754 0.629971 0 0 0.070139 0 0 0.131214 -1.00101 0.154401 0 -0.10113 0 -0.625287 0.0780503 -0.131181 0.69171 -0.0169486 -0.90774 0.291378 -0.0199079 1.157 8.7968 -0.0324584 0 0 0 -0.0443555 0.069227 0 0 0 0 0.151322 11.0033 2.09864 -1.17984 0.36755 -0.409416 0.442176 0.0794946 -0.0731535 0.115022 -0.0524576 0 0 0 0 0 0 +233 0 0 0 0 0 0.0261543 0.238687 0.242283 1.25607 0 0 -0.0506152 1.42685 0 2.58017 0.00838158 0 0 0 -0.00879265 0.0643178 0 0 0 0 0.0176961 0 0 -0.27542 3.16277 0.827002 0 -0.0650743 0 0 -0.144026 -0.00490875 0 0 0.248627 0.961452 0 0 0.124362 4.36991 0 0.974404 0.555236 -0.465248 -0.151175 0.578509 -0.0659474 0 0.114622 -0.0188686 0.319979 -0.809213 0.0164181 -0.93582 0 0 0.401444 -0.191676 0 0.58348 0.154589 -0.395966 0 0 0 0 0.0318752 0.505459 0 -2.72592 -1.42648 0 0 0 -1.78448 0 -0.452772 -2.89444 0 -0.120162 -0.188813 -3.26875 0 -0.065514 -0.40896 0.940822 -9.20711 0 0 0 -0.0526595 -0.0147599 0 0 0 -0.0156539 -0.0203504 0 -0.00167447 0 -0.0042575 -0.00427462 0 0 0 0 -0.016073 0 -0.00221705 0 0.00252501 0 -0.133152 0.0895674 0 0.00164873 0 0 0.0434802 -0.00188334 0.0116572 0 -0.00141473 0 -0.00142766 -0.0214985 0.0112304 -0.0268375 -0.00526137 0 -0.000298738 0 0 0 -9.92661e-05 0 0 0.00501944 -0.00222259 0.0479282 -0.0132212 0 0 0.00346244 0 0.00246016 0 0 -0.0140843 -0.00703625 0.0174417 -0.00715162 0 0 0.0300174 0.0286344 0.00390813 -0.0046273 -0.0126986 0 -0.0351138 -0.00617387 -0.0841587 0 0 0 -0.000558603 0 0.0215331 -0.0349081 0 -0.0026854 0.00441359 -0.00371187 0 0.00238785 -0.00391617 0.00778185 -0.0104045 0 0.0261543 -0.0526595 0.238687 -0.0147599 -0.294016 -0.0463511 -0.106225 -0.450604 -0.578299 0.0142692 -0.0805529 0.0853128 0.00196696 0.00259333 -0.0175115 -0.0281184 -0.048244 0.0947365 -0.161866 0.37682 0.114714 0.0305884 0.034747 0.048848 -0.492926 0.255772 -0.258105 0.0143242 1.25403 -0.265211 -1.15136 1.29575 -0.00253214 -0.18073 -0.439697 -0.00136529 -0.00302979 -0.0629446 -0.0241348 1.62138 -0.0640435 0.0405123 1.42479 -0.465085 -0.0080059 -0.0334013 0.0513183 0.0837488 -0.173767 -0.167652 0.443625 0.00589366 0.0968296 -0.901361 0.030446 0.437597 -0.138045 0.255192 0.0632047 -0.225864 -0.0138183 0.125925 -0.0750793 0.933861 0.220462 0.129452 -0.056451 -0.0514594 -0.400355 -0.150853 -0.00665093 0.0780662 -0.0307517 -0.0652544 0.17484 0.117838 2.81622 -0.547395 0.268278 0.139125 0.117022 -2.64087 0.0175618 0.117055 -0.00772351 -0.792867 -0.0419619 0.238459 -0.549776 0.863865 -2.55961 0 +234 0 0 0 0 0 0.688018 -0.0849664 0.0235471 -1.89041 0 0 0.0830673 -1.02639 0 -2.18306 0.0554679 0 0 0 0.0334868 -2.79954 0 0 0 0 -0.144282 0 0 0.102578 -0.589251 -0.621473 0 0.181462 0 0 0.0970199 0.0293858 0 0 -0.322875 -1.24935 0 0 -0.0922598 -3.74581 0 -0.912785 0.203864 0.269132 0.223141 0.209904 0.0266883 0 0.0908531 -0.162148 -0.108503 3.30434 0.182189 0.442693 0 0 1.21729 -0.245384 0 -0.10557 -0.576248 0.537887 0 0 0 0 -0.0251562 -0.544345 0 4.18519 -0.0388146 0 0 0 2.46787 0 0.626344 0.12489 0 0.211775 -0.362049 2.75496 0 0.317681 -0.527718 0.603566 1.59928 0 0 0 0.12268 0.0205813 0 0 0 -0.000433396 -0.0566418 0 -0.0004697 0 0.000104119 0.0226685 0 0 0 0 0.0251905 0 0.00456004 0 0.126041 0 0.0144561 -0.0253265 0 0.00165117 0 0 0.0727396 -0.00122453 -0.00836462 0 -0.00799121 0 -0.00397047 0.0167175 0.0102883 -0.0176995 0.00614371 0 7.46313e-06 0 0 0 -0.00056068 0 0 0.0025425 -0.00741788 0.0608832 -0.000934809 0 0 0.00651169 0 0.00580186 0 0 -0.048669 0.00345679 0.0225111 0.00428527 0 0 0.0409994 0.0279025 -0.00444196 -0.000429229 0.0157098 0 -0.0234509 -0.00811446 0.0956725 0 0 0 -0.104486 0 0.0135218 -0.0529701 0 -0.00156142 0.00559897 -0.0204985 0 0.00146306 -0.00557275 0.00885226 -0.0185272 0 0.688018 0.12268 -0.0849664 0.0205813 -0.127985 -0.019069 0.173974 0.0150595 -0.10347 -0.0201829 -0.00142408 0.192452 -0.00271739 0.0310669 0.0256464 -0.0165416 0.0216008 -0.139949 0.534538 -0.755451 -0.000620234 -0.122929 -0.0100815 -0.0228216 0.216115 -0.0773227 -0.146732 -0.0108324 0.356356 0.148642 0.380939 -0.743959 0.00349918 -1.40301 -0.0351595 0.00626299 0.00303754 0.0755729 0.00622873 -0.961028 -0.0100536 -0.00192985 -0.328489 0.830144 -0.000502824 0.0298647 -0.0903317 -0.0847978 0.0209585 -0.396731 0.618134 -0.124848 -0.0340683 -0.369279 -0.0497892 0.423831 -0.0223518 0.069018 0.159818 0.47355 0.79008 -0.242608 0.0067286 -0.108721 0.776478 0.0198078 -0.293605 -0.0356325 0.0871412 -0.0112261 -0.0714358 -0.085131 0.0468544 -0.066846 0.0547272 0.0191965 -0.931773 -0.0887781 3.65785 0.0867923 -0.0691146 2.26485 -0.0964758 0.137203 -0.333262 1.80254 0.0619881 -0.120351 0.285033 -0.372983 1.37344 0 +235 0 0 0 0 0 0.0107182 0.281365 -1.44212 -3.11346 0 0 -0.0310891 0.889347 0 1.10742 -0.189806 0 0 0 -0.521875 8.20945 0 0 0 0 -0.494237 0 0 -0.801045 -8.44758 0.460467 0 -0.873761 0 0 -0.265495 -0.076039 0 0 0.604281 2.02203 0 0 0.0723567 3.73782 0 0.758181 -2.50322 -2.17922 -0.0298262 -0.311554 -0.013393 0 0.720104 -0.367605 0.350199 -0.00757393 0.270996 -0.164831 0 0 0.0421472 -3.9221 0 -0.166425 0.0636576 0.82024 0 0 0 0 -0.409578 -0.105633 0 -2.89627 1.69422 0 0 0 5.1754 0 0.624215 8.8951 0 1.07743 -1.04965 11.0406 0 0.580767 0.122748 -1.79328 22.42 0 0 0 -0.254075 -0.0528934 0 0 0 -0.0199663 -0.000454604 0 -0.00291505 0 -0.0101877 -0.0381356 0 0 0 0 -0.00682854 0 -0.00390532 0 -0.164801 0 -0.0728135 0.162515 0 -0.000725394 0 0 0.0804616 -0.0034407 0.0313981 0 0.00355097 0 -3.75807e-05 -0.0435306 0.00549308 -0.048797 -0.0141428 0 -0.000714992 0 0 0 0.000249113 0 0 0.00963769 0.00117759 -0.00269363 -0.0268982 0 0 -0.0129691 0 0.00114721 0 0 0.0603806 -0.0271752 0.0618388 -0.0278401 0 0 0.0435149 0.001988 -0.006803 0.0187848 -0.0146644 0 -0.0132162 0.000430236 -0.577693 0 0 0 0.136115 0 0.0395625 -0.0687964 0 -0.00500925 0.00934852 0.00615557 0 0.00440914 -0.00784814 0.014778 -0.0192338 0 0.0107182 -0.254075 0.281365 -0.0528934 0.955753 0.271874 -0.405115 0.522739 -2.31212 0.0503072 0.00570431 -0.460518 0.00700681 -0.0766161 -0.0638637 -0.117986 0.000253479 0.328083 0.819688 1.63295 0.139812 -0.239051 -0.425464 0.102934 -0.0509115 -0.41989 -1.10733 0.0337031 0.750329 -0.0151102 1.23729 0.917533 -0.00903175 -0.879894 0.640755 -0.0658512 -0.000341036 0.0450344 0.0266474 -2.56459 -0.252222 -0.0641973 1.15978 2.10008 0.00127585 -0.0282813 0.276139 0.228213 -0.299705 0.491647 -0.823902 -1.78661 0.0369341 -0.242081 0.116003 -1.59447 -0.534956 0.931552 -0.124876 -0.119191 -0.440816 1.00522 -0.167207 0.300719 -0.282003 0.0663593 0.814834 0.0913569 0.141212 -0.28845 0.164103 0.138181 -0.109652 0.00248479 -0.106617 0.449478 -3.02639 1.03934 1.88731 -0.675262 0.359724 4.13326 0.22824 -0.212674 0.194547 2.07437 -0.145319 0.161537 -0.0100626 -0.471304 3.69413 0 +236 0 -0.251508 0.270142 -0.0038619 -0.04333 -0.134838 -0.0403002 0.474484 1.72359 -0.0291205 0.112707 -0.0159597 -0.0693386 0.000100693 -0.692879 0.000935078 1.86319 5.33751 0.0159129 0.00207579 0.583391 -0.00122483 -0.114189 -0.000129994 0.0209163 0.288578 0.685311 -0.001014 -0.0420989 0.146446 -0.171082 -0.00202698 0.0383965 0.102784 -0.0429644 0.099921 -0.000146112 0.0416375 2.2754 -0.0526641 0.00632945 0.00157009 -0.131693 -0.00274959 -0.365675 0.0225566 -0.130422 -0.0338269 0.0667113 0.0068136 -0.119781 0.216526 -1.34744 -0.00275506 0.00252505 -0.000331967 0.863735 -0.176063 0.0934686 -0.0423781 -0.00321582 -0.0827873 0.846751 1.12256 -0.0524968 0.0073431 -0.0768474 0.345804 0.0290739 0.00350874 0.216683 0.165607 0.0208475 -0.00703945 1.87488 0.526249 -0.0526876 -6.39299 -0.235442 -4.03637 -0.292764 0.301025 -3.18772 0.133721 -0.131583 0.069076 -2.40116 -0.00176464 0.00228419 -0.0269658 0.0510396 -0.275762 0 0 0 0 0 -0.0038619 -0.04333 -0.000941939 0 0 0 0 -4.92063e-05 0 0.00338074 0 0 -0.00109552 -0.00117722 0.00107196 0 0.000179937 -0.0027376 0.014146 0 0 -0.0133785 -8.26018e-05 0 -0.00062707 0.0541914 0 0 -0.000612259 -0.0157326 0 -0.00545401 0 -0.00114748 0 0 -8.32072e-05 0 0 -0.00294419 -0.000701275 -0.015613 0 -0.0134243 -0.00771965 0 0 0.0258856 0 -0.00191976 -0.00519835 0.00136907 0 0 0.00223276 0.00162249 0 -0.00348446 -0.0185681 -0.00366761 -0.000911328 -0.00382794 0.00563561 0 -0.00221547 -0.000715419 0.00919934 0.00239667 0.00360807 0 0 0 0.00470953 0.012195 -0.0108826 0.000260722 -0.0002999 0.000360904 0.00138261 -0.00159037 0.00191387 -0.00173404 0 0 0 0 0 0 -0.134838 0 -0.0403002 0 0 0 0 0.284236 0.0358695 0 0 0.0103551 0 0.00465489 0 0.0190098 0 0 0.0273696 0 -0.604074 0.114651 0.0801517 -0.0328201 0 0 0.16657 0 1.15818 0 0.246029 -0.16296 0 0.881173 -0.44656 0.0088053 0 0.0304589 0 0 0.00828183 0 0.247984 0.177415 0 0 -0.0419063 0 0 -0.109367 1.10536 -0.40144 0 -0.221943 0 0.0645761 0.0335283 0.0944143 0.090115 -0.230628 -0.484399 0.0784556 0.114114 -0.466423 0.12992 0.106876 0 0 0 0.041963 -0.00176801 0 0 0 0 0.0188427 -5.8158 0.249971 -3.1413 0.331698 -0.423919 0.252538 0.128596 -0.101165 0.0512653 -0.693034 0 0 0 0 0 0 +237 0 1.48387 0.258084 0.00918448 0.103049 0.109263 0.26463 -0.38143 -1.19067 0.0692553 0.126673 -0.141836 0.414583 -0.000239471 0.486205 0.0103779 0.228506 -2.44252 0.0366985 0.0121157 2.08479 0.0224252 -0.209324 0.000309155 0.0687815 -0.538924 0.434064 0.0242945 -0.43503 0.199002 0.349984 0.00482062 0.160288 -0.588892 -0.000114264 -0.34669 -0.00865747 0.138999 -3.93582 -0.045642 1.61324 -0.00373404 0.200508 -0.00201991 0.315563 -0.053645 1.18368 -0.127863 0.18181 0.00476406 0.356814 -0.148792 -0.304992 -0.0207964 0.0190602 0.0843634 -0.750852 -0.1488 -0.1615 -0.0555418 0.00764796 -1.20343 -1.18817 -0.272147 0.874731 0.00170863 0.0816014 -0.122524 0.147415 -0.00834461 -0.315912 -0.0508911 -0.031988 -0.0863118 -0.468159 -0.00768525 -0.323124 6.70381 -1.80417 4.89677 -1.0337 0.610701 3.047 -0.499439 0.28153 -0.0981966 1.09783 0.00419672 0.00125213 0.0427234 0.0449506 -0.374728 0 0 0 0 0 0.00918448 0.103049 -0.0013697 0 0 0 0 -6.37771e-05 0 0.00134648 0 0 0.00104298 0.00168444 -0.00134249 0 4.2204e-05 0.00528473 -0.00954635 0 0 0.0459553 0.000118192 0 0.0018596 -0.125817 0 0 0.00333604 0.0252543 0 0.0208652 0 0.00343709 0 0 0.000292044 0 0 0.175427 -0.000908934 0.0148642 0 -0.0195206 0.0196926 0 0 0.0048552 0 -0.00279157 0.0228577 0.00410751 0 0 -0.00212568 0.00235931 0 -0.00443632 0.0816206 0.00385368 0.00119275 0.0218138 0.00398176 0 -0.018183 -0.00561973 -0.0276215 0.00382369 -0.0208998 0 0 0 -0.280613 0.00552701 -0.0180686 -0.0155349 0.0178693 -0.0215041 -0.0013163 0.00151409 -0.00182208 0.00117021 0 0 0 0 0 0 0.109263 0 0.26463 0 0 0 0 -0.563171 0.735187 0 0 0.189715 0 0.0211776 0 0.0336674 0 0 -0.211154 0 -0.706152 -0.120834 0.238127 -0.00578159 0 0 0.321283 0 1.10587 0 -5.95397 0.521623 0 -1.05329 -1.54944 0.0260438 0 -0.0663659 0 0 0.0787234 0 0.470085 -0.425674 0 0 -0.0324035 0 0 0.0382943 0.771187 0.544137 0 0.359281 0 1.02547 0.104816 -0.208099 0.197676 0.01404 -0.107997 -0.509033 0.0756935 -0.33001 -1.94735 -0.0250439 0 0 0 0.0548167 -0.0454459 0 0 0 0 -0.143757 30.269 -0.115827 5.86023 0.682928 -0.887385 3.16217 -0.0923065 0.121102 -0.24947 0.797555 0 0 0 0 0 0 +238 0 0.352038 0.12759 -0.0152213 -0.170781 0.363761 0.0344008 -0.0820148 -1.53163 -0.114776 -0.101041 0.0707886 -0.480027 0.00039687 -0.187873 0.00134276 -0.262562 0.977558 -0.0206074 0.00913709 1.08428 -0.0299251 -0.0245668 -0.000512357 -0.132696 -0.330814 -0.151145 -0.0291442 0.422083 1.18639 -0.359767 -0.00798913 0.104561 -0.406664 0.0295873 -0.0241834 0.00612015 -0.182914 -2.56382 -0.0448431 0.490012 0.00618835 -0.252021 -0.00268698 0.471078 0.0889048 0.0400923 0.668041 0.282015 0.00688827 0.474894 -0.0313576 2.74285 -0.0123914 0.0113569 -0.115492 -0.896791 0.095159 -0.120471 0.182404 -0.0126748 -0.550507 -1.15413 0.274614 0.0546877 -0.0132528 -0.503146 -0.0377347 -0.253144 0.0138294 0.565845 0.0793308 0.134763 0.209634 -1.02093 -0.594692 0.387677 10.3034 3.57235 2.38514 2.21985 -1.32803 2.65722 0.972523 -0.491949 -0.0363505 1.27768 -0.00695515 0.00263772 -0.130112 0.0540124 -2.23401 0 0 0 0 0 -0.0152213 -0.170781 -0.000880062 0 0 0 0 -5.20748e-05 0 0.00148488 0 0 -0.00309191 -0.00376479 0.00358924 0 0.000116193 -0.00795503 0.0430618 0 0 -0.0377224 -0.000264164 0 -0.00114863 0.211593 0 0 -0.00540861 -0.0337574 0 -0.012607 0 -0.00377102 0 0 -0.000477981 0 0 -0.183989 -0.000742156 -0.0440651 0 -0.0125424 -0.034349 0 0 0.0462545 0 -0.00179365 -0.0197561 0.000644798 0 0 0.00630159 0.00151591 0 -0.00220779 -0.129443 -0.0100616 -0.00130428 -0.0329375 0.00383772 0 0.0158363 0.00103691 0.0567226 -0.0117538 0.035385 0 0 0 0.294309 0.0169779 -0.00748253 0.0162931 -0.0187414 0.0225536 0.00390217 -0.00448853 0.00540157 -0.00527858 0 0 0 0 0 0 0.363761 0 0.0344008 0 0 0 0 -0.592917 1.10768 0 0 0.450782 0 0.0458521 0 0.057902 0 0 -0.0853096 0 -0.0958508 -0.222388 0.155483 -0.000798299 0 0 0.540327 0 1.42611 0 -2.98019 -0.536177 0 -1.73104 -0.851272 0.0165129 0 -0.079899 0 0 0.117651 0 -0.44789 0.34146 0 0 0.0740122 0 0 0.0139942 -1.08183 1.05079 0 0.684992 0 -0.179681 0.286783 -0.546524 0.0612203 0.0160709 -0.114815 -0.128197 0.132847 -0.343034 1.47133 0.0277941 0 0 0 0.0139337 -0.0713111 0 0 0 0 -0.177671 7.07204 -1.70113 5.68446 0.558158 -1.08611 2.88909 -0.0475635 0.131363 -0.403741 1.42314 0 0 0 0 0 0 +239 0 -0.133808 -0.116087 -0.00754952 0.00808323 -0.0650697 -0.263203 0.58374 1.77954 -0.00978332 0.0899961 0.112937 -0.0591964 0.000664105 -0.502437 0.00633432 0.420076 2.47584 -0.019797 0.0144817 1.08378 -0.0206978 0.122523 -0.000568331 0.00127011 0.505688 -0.00171192 -0.0438107 0.55673 0.868706 -0.259321 -0.00509176 0.101132 0.259674 -0.127989 0.265654 0.00905029 -0.292848 1.03956 -0.0521107 -0.216517 0.00840746 -0.980014 -0.00474498 0.387261 0.104581 -0.501099 0.534712 0.136551 0.0200219 -1.63193 0.268273 -3.49663 -0.0122771 0.034918 -0.142007 -1.69761 -0.399678 -0.157857 0.00794064 -0.018373 0.032089 -0.152892 1.23569 -0.619719 0.253636 -0.702847 -0.128138 -0.312242 0.00224054 0.2606 0.197587 0.0586968 0.394042 0.940837 -0.237272 0.26985 2.76511 1.94636 -3.78998 1.75439 -1.50101 -1.05115 0.335683 -0.225796 0.00493578 -2.15918 -0.00994962 0.0117886 -0.151081 0.132022 -1.82341 0 0 0 0 0 -0.00754952 0.00808323 0.000849355 0 0 0 0 0.000133514 0 -0.0022664 0 0 -0.00125695 -0.0017266 0.000925313 0 -0.000223128 -0.00358846 0.00566571 0 0 0.0236871 -0.000121151 0 -0.00451208 0.546473 0 0 0.00535694 0.0293823 0 -0.041131 0 -0.00124357 0 0 0.000126667 0 0 -0.284909 0.00190281 -0.0179072 0 0.0121053 -0.0187391 0 0 -0.00503228 0 0.00175836 -0.0418824 -0.00299203 0 0 0.00257319 -0.00143875 0 0.00235314 -0.0932272 -0.0046858 -0.101171 -0.0192823 0.0184574 0 0.0143643 -0.0142207 -0.016799 -4.13385e-05 0.029916 0 0 0 0.49636 4.92971e-05 0.0379271 0.0127127 -0.0146104 0.0768233 0.00158795 -0.00182597 0.0021943 0.00104635 0 0 0 0 0 0 -0.0650697 0 -0.263203 0 0 0 0 0.359998 -0.549821 0 0 -0.123174 0 -0.0106235 0 -0.00403482 0 0 0.0947855 0 0.260759 0.120655 -0.0733063 0.0044876 0 0 -0.0341526 0 -3.70166 0 1.6403 -0.909806 0 0.923133 0.654195 -0.00801834 0 0.0566415 0 0 -0.0615751 0 -1.41527 -0.142341 0 0 -0.0237004 0 0 0.0482766 0.517535 -0.166195 0 -0.0321262 0 -0.323169 -0.0634595 0.107586 -0.00190247 -0.167096 -0.157681 0.300738 0.0522622 -0.128507 -0.758147 0.0623141 0 0 0 -0.106878 0.017997 0 0 0 0 0.114239 -4.85532 0.972373 -3.38477 -0.222298 0.439867 -1.45801 0.0972076 -0.0996721 0.166184 -0.69155 0 0 0 0 0 0 +240 0 0.783754 -0.0866499 0.00635965 0.0693803 -0.0208534 -0.0955821 0.71797 -0.0737964 0.0810279 0.112111 0.0668533 1.07097 -0.000199469 2.92698 -0.0124528 -0.181259 1.52439 0.0487491 -0.0310793 4.49668 0.014355 0.320674 0.000403555 0.0342729 0.334564 -0.309542 0.00314762 0.438634 0.464347 0.511313 0.00579357 -0.2209 0.0814308 0.0197602 0.335356 0.00478006 -0.0566954 -3.23261 0.126763 1.43074 -0.00184574 -0.107685 0.0106211 5.22159 -0.0139193 0.215814 0.515468 -0.481894 -0.0225984 0.0900417 0.105374 -2.49017 0.0685625 -0.0279849 0.0639222 -3.22051 0.181737 -0.115532 -0.0628096 0.00395307 -0.334552 -2.51453 0.648797 -0.126674 0.338237 -1.14736 -0.631166 -0.205787 -0.0154766 -0.144307 -0.0803686 0.0524829 0.133312 -4.3139 -0.420377 0.442266 10.5265 -0.0611661 2.58814 0.136891 -0.729082 3.69847 -0.0707731 0.101041 -0.193077 0.212486 0.00132425 -0.00726904 -0.00748022 -0.0917012 -0.974663 0 0 0 0 0 0.00635965 0.0693803 -0.00194046 0 0 0 0 -0.00016415 0 0.0054209 0 0 -0.00099164 -0.000649392 0.00134251 0 0.00039078 0.00466892 0.0270484 0 0 -0.0248607 -4.5564e-05 0 0.00262683 0.149971 0 0 -0.00883388 0.0325273 0 0.020865 0 -0.0015875 0 0 -0.00057812 0 0 0.145375 -0.00233943 -0.0141589 0 -0.0276569 0.00331433 0 0 0.0490801 0 -0.00406191 0.0102368 0.00423274 0 0 0.00197701 0.00324458 0 -0.0101963 -0.0116688 -0.00230878 -0.0865313 -9.39643e-05 0.0146481 0 -0.0105625 -0.00764687 0.0146129 -0.00614991 0.0029257 0 0 0 -0.234266 0.0262633 -0.0443962 -0.0132437 0.0151822 -0.0171476 0.00124551 -0.00143494 0.00173867 -0.00488114 0 0 0 0 0 0 -0.0208534 0 -0.0955821 0 0 0 0 0.0674369 -0.139173 0 0 -0.326263 0 -0.0279211 0 -0.0195355 0 0 0.263621 0 0.680911 -0.021476 -0.189856 0.0611126 0 0 -0.181463 0 2.90175 0 -3.3937 0.425345 0 -0.20941 -0.155259 -0.0186471 0 0.0179367 0 0 -0.0106657 0 1.04723 0.245472 0 0 0.0824141 0 0 -0.0453131 2.35859 0.0513378 0 -1.09821 0 0.77546 -0.109325 0.067234 -0.749637 0.27897 1.31991 -0.0487238 -0.272074 0.572918 -2.81224 -0.0878032 0 0 0 -0.065954 0.0393406 0 0 0 0 0.0127193 26.0642 1.12413 4.59663 0.441333 -0.443881 2.09046 0.0363564 -0.113813 0.303735 0.0784387 0 0 0 0 0 0 +241 0 0.774903 0.190165 -0.0215843 -0.137183 0.283732 0.00951263 0.0127536 -1.23833 -0.183064 -0.169036 0.017326 -0.468779 0.00112244 -0.99348 0.0247674 0.307148 2.56526 -0.0727273 0.0588716 -3.64266 -0.0498463 -0.129036 -0.00146284 -0.091792 -0.11788 0.0450799 -0.0684416 0.242238 1.44972 -0.477173 -0.0177376 0.381753 -0.860656 -0.143555 0.0690274 0.00358991 -0.322937 -5.62617 -0.206855 -2.0114 0.0126699 -0.781807 -0.019203 0.25088 0.136937 -0.959952 0.584203 0.729935 0.0503591 1.44806 -0.0801831 -2.86716 -0.118681 0.0806265 -0.297971 -3.21825 0.153209 0.178764 0.121276 -0.0273543 -0.695835 1.34704 0.437882 1.07416 -0.0567436 -0.191313 -0.329791 -0.360291 0.0353757 0.0958837 0.0084694 0.153458 0.263517 -0.521333 -0.0266555 0.0816851 25.9581 4.36296 6.61034 3.45191 -2.47534 7.42272 0.755444 -0.435465 0.145813 1.60286 -0.0130279 0.0220299 -0.212677 0.346148 -3.04296 0 0 0 0 0 -0.0215843 -0.137183 0.00279608 0 0 0 0 0.000342707 0 -0.00779996 0 0 -0.00148054 -0.00252379 0.00171938 0 -0.000834308 -0.00926541 0.0196162 0 0 -0.00428342 -0.000177089 0 -0.0060395 0.335893 0 0 -0.000438676 0.000579471 0 -0.0566052 0 -0.00214554 0 0 2.00199e-05 0 0 -0.480762 0.00488417 -0.0210708 0 0.0398517 -0.0368946 0 0 -0.0435266 0 0.00582158 -0.0690228 -0.007455 0 0 0.00306601 -0.00470536 0 0.0122179 -0.156592 -0.00569549 -0.0929183 -0.0393583 -0.000207023 0 0.0370308 -0.00240185 -0.00869187 -0.0124314 0.0495896 0 0 0 0.799809 -0.0212826 0.0544471 0.0339262 -0.0389671 0.0884046 0.00187507 -0.00215433 0.00257954 -0.00425964 0 0 0 0 0 0 0.283732 0 0.00951263 0 0 0 0 -0.782562 0.509951 0 0 0.416893 0 0.0373359 0 0.0368988 0 0 -0.0251393 0 -0.352178 -0.223735 0.209012 -0.0182943 0 0 0.337787 0 1.21286 0 -5.11483 -0.325469 0 -1.90172 -1.34716 0.0212008 0 -0.088929 0 0 0.0545497 0 -0.133357 0.339396 0 0 0.0145696 0 0 0.131797 0.815375 0.339184 0 0.26931 0 0.636936 0.159456 -0.305471 0.309985 -0.0010622 -0.356777 -0.383466 0.149983 -0.346139 -0.508635 -0.0456638 0 0 0 -0.025346 -0.0581583 0 0 0 0 -0.0754689 22.7433 -0.708775 7.11746 0.60419 -0.850509 3.30217 -0.0545749 0.16325 -0.44977 1.58308 0 0 0 0 0 0 +242 0 0 0 0 0 0.262311 0.20631 -1.29895 -2.9213 0 0 -0.497776 0.314566 0 -0.0466449 -0.0754477 0 0 0 -0.261988 -5.99925 0 0 0 0 -0.419328 0 0 -0.363108 -0.584199 0.0454593 0 0.18068 0 0 -0.258768 -0.0888048 0 0 -1.64387 -2.47734 0 0 -0.431358 1.51828 0 -0.695152 -0.28355 0.631231 0.828144 0.00609121 -0.239681 0 -0.229134 -0.34958 0.0507824 -0.0251059 -0.544583 -0.934879 0 0 0.26062 7.9951 0 -0.443149 0.0237531 0.495396 0 0 0 0 0.105696 -1.40896 0 1.46027 -0.481828 0 0 0 2.81493 0 1.09779 2.65793 0 0.789654 -0.169316 2.85092 0 1.98891 -1.24581 1.97204 0.791505 0 0 0 0.169497 0.0543416 0 0 0 0.0498633 0.0327633 0 0.00621177 0 -0.00551281 -0.0334869 0 0 0 0 0.0215239 0 -0.00881241 0 -0.0888666 0 0.362978 0.0182618 0 -0.000204048 0 0 0.0204172 -0.00161478 -0.0209261 0 0.00122385 0 0.00176053 -0.0970166 0.000156908 -0.0275906 -0.0231696 0 -0.000309402 0 0 0 5.19386e-05 0 0 0.00205817 -0.00153677 -0.291763 0.0297683 0 0 0.0236788 0 -0.00763551 0 0 0.000996372 -0.0198602 0.337737 0.00218198 0 0 0.00806796 -0.0532253 -0.0504189 0.0364236 0.0741999 0 0.23147 0.00329866 0.0669128 0 0 0 0.398531 0 0.0905882 -0.220298 0 0.00780396 -0.0240926 -0.0146448 0 0.000901246 -0.00265332 0.00102563 0.0226095 0 0.262311 0.169497 0.20631 0.0543416 0.111538 -0.0728698 0.331967 -0.656866 2.23417 -0.0714175 0.0440212 0.827655 -0.0123621 0.0983595 0.0611294 0.125777 0.024676 -0.369014 -1.0013 -0.229833 0.144038 -0.338091 0.602815 -0.153851 0.407601 0.0247484 1.08424 -0.0315547 0.301958 0.138128 2.30108 0.0939635 0.0096802 -1.38757 1.03525 0.0781382 -0.000408473 -0.140107 -0.0497479 -0.484729 0.25169 0.0207357 -0.0369093 -0.836911 0.00274379 0.0479476 -0.216754 -0.109187 0.108583 0.701086 -0.33218 1.44229 -0.228856 -1.87718 -0.0258698 -1.21282 0.718964 -1.19151 0.42394 0.43016 -0.572431 0.249806 0.0748924 0.230922 1.25277 -0.239784 -0.179336 -0.109253 0.334419 -1.11446 -0.192733 -0.127125 0.162663 0.068482 -0.103518 0.11382 -7.85382 -1.57926 0.972184 -0.786168 0.163663 1.9151 -0.482525 0.15212 0.328219 0.451439 0.454128 -0.33673 0.586981 -0.330431 0.492042 0 +243 0 0 0 0 0 -0.411696 0.00318343 0.462923 1.84755 0 0 0.256792 -0.201655 0 -0.307815 -0.0207396 0 0 0 -0.157903 1.77491 0 0 0 0 -0.0150842 0 0 -0.500461 -2.22846 0.149397 0 -0.62066 0 0 -0.0786681 0.0254225 0 0 0.975953 0.297735 0 0 0.146571 -1.49197 0 0.11894 -0.875643 -1.5774 -0.360107 0.172004 -0.437739 0 0.288629 -0.196414 0.298992 3.1674 0.452318 1.04949 0 0 -0.402983 -1.95581 0 0.710237 -0.246405 0.842871 0 0 0 0 -0.191997 -0.0577512 0 2.56478 0.981481 0 0 0 -2.90205 0 -0.813551 1.60151 0 -0.24021 0.839083 -2.06012 0 -0.513168 0.736544 -1.85519 5.66604 0 0 0 -0.143789 -0.0293294 0 0 0 -0.0434155 -3.31157e-07 0 -0.0042972 0 0.0011858 -0.0103149 0 0 0 0 -0.00768867 0 -0.00838811 0 0.028226 0 -0.361125 -0.176117 0 0.000313891 0 0 -0.032875 0.00109597 -0.0202039 0 -0.00259921 0 -0.000130934 -0.0972016 -0.00115706 0.0183788 -0.0164857 0 9.66411e-05 0 0 0 -0.00014156 0 0 -0.00484852 -0.0042787 -0.328108 -0.0196995 0 0 -0.0124561 0 -0.003563 0 0 -0.0149465 -0.0437635 -0.0931508 -0.0222165 0 0 0.0511215 0.0509875 0.0244248 0.0251891 -0.255117 0 -0.027634 0.00802822 0.248385 0 0 0 -0.818093 0 -0.10827 -0.159976 0 -0.0107105 -0.022772 0.0065818 0 -0.00108922 -0.00238491 -0.0033638 0.0608159 0 -0.411696 -0.143789 0.00318343 -0.0293294 0.297256 0.0139357 -0.0877173 0.695287 -1.31166 0.0322792 0.0125058 -0.216164 0.00478738 -0.0235575 -0.0149005 -0.0813621 -0.0119367 0.202164 0.280029 0.424951 -0.196247 0.226757 -0.481926 0.0567421 -0.150275 -0.00493558 -0.8968 -0.00217011 0.0599686 0.241705 -1.63141 1.0463 -0.00184427 1.57594 -0.967003 -0.0638539 0.00506741 0.10591 0.0481691 -0.203799 -0.136307 0.00124595 0.861182 0.115566 0.00250074 0.022908 0.0462669 0.00489268 0.0367185 -0.479302 -0.26125 0.233527 0.119916 2.68826 -0.0266196 1.15927 -0.655833 0.551008 -0.378729 -0.0477971 0.307426 -0.204694 0.0128078 -0.01975 1.68068 -0.0176996 -0.297262 0.0400366 0.0884603 0.478343 0.0997755 -0.0349068 -0.0587898 0.0921132 -0.0194988 0.411132 5.56817 0.487171 -2.63637 0.658843 -1.09431 0.680295 0.118355 -0.149595 0.159743 -0.782469 -0.248794 -0.00915267 0.0882107 -0.303557 0.378754 0 +244 0 0 0 0 0 -0.13717 -0.288516 0.805232 1.59058 0 0 -0.568004 -0.301691 0 0.176552 -0.100099 0 0 0 0.0757324 1.55788 0 0 0 0 0.494818 0 0 1.15518 6.25341 -0.413372 0 -0.0487461 0 0 0.36106 -0.102751 0 0 -1.99267 1.04982 0 0 -0.486854 1.12255 0 -0.22972 2.36471 1.7971 0.901276 -2.1881 0.648092 0 -0.0252895 0.00449571 -0.0971391 -0.0609441 -0.693334 -0.375259 0 0 -0.856283 -0.482669 0 0.13148 0.965241 -0.892001 0 0 0 0 0.167495 -1.45705 0 -0.168528 -0.223633 0 0 0 -2.0821 0 2.39043 -7.69434 0 0.714953 -0.306771 -4.75845 0 1.27585 -1.4384 4.00775 -13.8606 0 0 0 0.210959 0.0881666 0 0 0 -0.0371793 0.0644068 0 -0.00204045 0 -0.00786112 -0.0544598 0 0 0 0 -0.000631518 0 -0.0176256 0 -0.207059 0 -0.489898 -0.237529 0 -0.0053295 0 0 -0.33889 -0.00197423 -0.0470264 0 0.00549934 0 0.00311013 -0.0448205 -0.0438622 -0.0330412 -0.0196261 0 -0.00046055 0 0 0 0.000254946 0 0 0.00707674 -0.00035538 0.0779126 0.034257 0 0 -0.00968473 0 -0.00952357 0 0 0.0393485 0.0024004 -0.0514069 0.0149247 0 0 -0.108794 -0.0999027 0.0296882 -0.125137 0.240396 0 0.0775499 -0.0144675 -0.0827075 0 0 0 1.65012 0 0.162922 0.577331 0 0.0153923 0.0304349 0.0464336 0 0.00155185 0.00350247 0.00529573 0.173835 0 -0.13717 0.210959 -0.288516 0.0881666 -0.522286 -0.157105 0.237092 0.237288 -0.167713 -0.140087 0.111841 -0.241457 -0.0219552 -0.0343712 0.0774325 -0.0333071 0.0506179 -0.850787 1.54255 -1.65368 0.00600293 0.219625 0.149298 0.270707 0.85477 0.208266 -0.336548 -0.0132907 0.475903 0.0833994 0.0665042 -0.762812 0.0145584 1.15906 0.199331 0.0288734 0.00251979 0.0650433 -0.000977509 1.4019 -0.0060604 0.0287351 -0.319649 1.88424 0.00779323 0.0298586 0.390522 -0.171557 0.14384 1.30561 -0.241288 0.202044 -0.217127 0.415008 -0.00926655 0.437399 0.178532 -0.0412085 -0.126357 -0.385084 -0.883754 -0.227543 0.221631 0.30824 -2.13312 -0.0899018 0.323195 -0.164568 -0.221785 -0.163669 0.129904 -0.0823686 0.313393 0.104248 0.0656536 -0.0592296 -0.226986 0.407239 -1.33539 1.41099 0.246845 -2.67434 0.210256 0.0578537 0.00148754 -1.07296 1.04702 -0.407965 -0.118187 0.3793 -1.35159 0 +245 0 0.636154 0.394873 0.0112907 0.108764 0.125808 0.09183 0.164964 -0.914224 0.225679 -0.449071 -0.0604012 -0.432218 -0.000193989 -0.00468364 0.00093279 0.527215 3.1077 -0.0197721 -0.00885291 3.25527 0.00431254 -0.372816 0.00105002 -0.0859486 -0.363104 0.223595 0.00782578 0.106923 0.740306 -0.127431 0.0158673 -0.0212136 -1.20013 0.090731 -0.0894485 -0.00867639 -0.0456524 -5.74035 -0.0154851 1.56401 -0.00309288 0.236809 -0.00822794 -0.0960349 -0.0383226 0.610971 0.397438 -0.145056 0.0588932 0.290926 -0.287513 -2.48472 0.0028086 -0.00544418 -0.0333917 1.45244 -0.65054 -0.00223301 0.223781 0.0141936 -1.02887 -1.92497 -0.508164 0.625819 0.160434 -0.831035 -0.422504 -0.208766 -0.0464192 -0.54084 -0.382838 -0.0780318 -0.0738057 1.03244 -0.0958367 -1.8016 16.6316 1.45202 5.29274 1.66249 -1.23529 4.87769 0.469447 -0.270649 0.210798 0.907128 0.00508232 0.00125539 -0.0205871 0.00710148 -1.1012 0 0 0 0 0 0.0112907 0.108764 -0.000338428 0 0 0 0 -5.29074e-05 0 -0.00522517 0 0 -0.000785732 -0.00117272 -0.00414483 0 -0.000590281 0.00249195 -0.0369971 0 0 0.171086 -6.74642e-05 0 0.00102493 0.290435 0 0 0.0150241 0.0278572 0 0.0142418 0 0.012528 0 0 0.000926846 0 0 -0.109116 -0.00100041 -0.0138505 0 -0.00624416 0.0056449 0 0 0.0425695 0 -0.00106886 0.073064 -0.00225538 0 0 0.00138923 -7.5834e-05 0 0.00127633 0.0103199 0.00788394 0.2247 -0.00309058 -0.0194107 0 -0.00413245 -0.0384756 0.157281 -0.0439827 -0.0413852 0 0 0 1.352 0.124668 0.0689567 0.00700619 0.00612058 0.00526704 0.000527816 0.00045799 0.00125063 0.0195032 0 0 0 0 0 0 0.125808 0 0.09183 0 0 0 0 -0.0591604 -0.962753 0 0 -0.275434 0 -0.0234362 0 -0.0793945 0 0 0.723156 0 -0.719625 -0.00941339 -0.205919 0.0629473 0 0 -0.655313 0 3.12762 0 -3.63825 -0.434151 0 -0.444271 -1.5606 -0.0214802 0 0.0141117 0 0 -0.117174 0 -0.19148 1.77734 0 0 0.159218 0 0 -0.172661 0.437899 0.121999 0 -0.103721 0 1.51525 -0.44189 0.203913 -0.649009 0.268948 1.1235 -1.26215 -0.173576 -1.10989 -6.16974 -0.188912 0 0 0 0.158191 0.108474 0 0 0 0 -0.033984 9.09966 -1.45138 4.79737 1.19126 -0.877615 1.44314 0.101004 -0.0729971 0.0213039 0.305498 0 0 0 0 0 0 +246 0 -0.558079 0.154859 -0.0225588 -0.110603 0.140259 0.139735 -0.757432 -1.86541 -0.27941 0.753924 -0.164012 -0.724701 0.000530589 -0.465626 -0.00502438 0.161133 0.241345 0.173562 0.0110052 1.67124 0.013444 -0.336408 -0.00190727 0.0958308 -0.557353 0.353988 0.0435844 -0.0276715 0.59439 -0.158362 -0.0244889 0.0750081 -0.47267 0.287493 -0.279464 -0.0164722 0.143603 0.146945 -0.255321 1.01777 0.00574283 0.582013 -0.0262355 -0.78856 0.0685352 0.605118 0.199256 0.310022 -0.0188593 0.148915 0.00157918 2.9847 -0.114974 0.0240387 0.0926268 2.12038 0.710134 -0.120622 -0.177611 0.00887146 1.22498 -0.0216562 1.2591 -0.193905 -0.152434 0.249031 0.127199 0.139575 0.0926927 -0.386424 0.311962 0.011396 -0.225736 -0.465824 0.0269427 0.32799 -2.45821 -0.660176 1.29365 0.86698 -0.174265 -0.775061 -0.0247028 0.135417 -0.912951 1.93495 -0.00908911 0.0165215 -0.0903869 0.18635 -0.884154 0 0 0 0 0 -0.0225588 -0.110603 0.00142368 0 0 0 0 0.000133909 0 -0.0203617 0 0 -2.08661e-05 -0.000478098 -0.0100165 0 -0.00213955 -0.0107516 -0.0892311 0 0 -0.221888 -1.78807e-05 0 -0.00268599 -0.471174 0 0 -0.0337804 -0.1085 0 -0.0625712 0 -0.025514 0 0 -0.00390407 0 0 -0.32542 0.00269238 -0.00122657 0 0.0292163 -0.00169243 0 0 0.140033 0 -0.00182753 0.0486584 -0.00120801 0 0 -0.000984061 -0.00554176 0 0.00370013 0.0362434 -0.00307152 -0.285279 -0.0219391 0.0089122 0 0.00103096 -0.00819136 -0.0411362 0.0284001 -0.0658328 0 0 0 0.254098 -0.0378926 0.0185407 -0.00261929 -0.00241055 0.0516589 -0.000136154 -0.000129013 0.000295899 0.034408 0 0 0 0 0 0 0.140259 0 0.139735 0 0 0 0 -0.315531 0.66586 0 0 0.745942 0 0.0869498 0 0.0599327 0 0 0.201757 0 -0.31136 -0.0284166 0.435587 0.0409655 0 0 0.545514 0 2.71992 0 2.83281 -0.113356 0 -0.534406 0.456256 0.0505747 0 -0.0283255 0 0 0.075301 0 0.437782 1.07861 0 0 0.143229 0 0 -0.0232757 2.0844 0.36558 0 -0.41593 0 0.339338 0.559651 -0.461545 0.242514 0.11039 0.279942 -0.0428035 0.133917 1.25436 6.60112 -0.00294596 0 0 0 0.349811 -0.161286 0 0 0 0 -0.423938 -10.2455 -2.55385 1.27462 -0.931379 0.543394 -0.804429 -0.369591 0.273883 -0.295996 0.27293 0 0 0 0 0 0 +247 0 -0.176802 0.160631 0.00932301 0.0956879 0.0423946 0.258876 -0.259741 0.0660077 0.166942 -0.743034 -0.322848 0.682574 -0.000676409 0.635868 0.00901045 0.461574 -0.371561 -0.216477 -0.0055415 -0.628137 -0.0395194 -0.12193 0.000432178 -0.152902 -0.157739 0.431341 -0.0714801 -0.62815 0.0520276 0.367437 0.0100683 0.211781 0.00651057 -0.468229 -0.287424 -0.0344667 -0.332714 0.266562 -0.352751 0.0397541 -0.0124073 -1.46519 -0.0437258 2.0701 -0.180784 0.589797 -0.425559 -0.0354107 0.16206 -0.709673 -0.197986 3.96116 -0.0187354 -0.0313088 -0.00760937 0.944426 0.0918235 0.107853 0.338046 0.0369836 -0.136177 -0.0527275 -0.0886863 -1.00358 0.455141 0.32104 0.795479 -0.430256 -0.0580029 0.591176 -0.129175 -0.0707698 0.547891 -0.180293 0.346847 0.466006 -0.879122 1.31444 -1.4959 0.717529 -0.428472 0.83406 0.118992 -0.127194 0.725233 -0.293392 0.0239756 0.0244691 0.131008 0.262048 -0.0773909 0 0 0 0 0 0.00932301 0.0956879 -0.000773276 0 0 0 0 -0.000134876 0 -0.0226195 0 0 -0.00127965 -0.00175392 -0.0192743 0 -0.00285698 0.00148363 -0.161892 0 0 0.00504858 -0.000109557 0 0.00538798 -0.343488 0 0 -0.0144074 -0.011271 0 0.0140762 0 0.00155249 0 0 -0.00184545 0 0 -0.398061 -0.00254043 -0.0210586 0 -0.013982 0.0213986 0 0 -0.0287966 0 -0.00108232 0.0749507 -0.00296577 0 0 0.00395953 0.00155939 0 -0.00627869 -0.019443 0.0137095 0.102119 -0.00521142 -0.0159064 0 0.0011335 -0.0369664 0.0390204 -0.0225386 -0.114431 0 0 0 4.24359 0.321843 0.57098 0.0208569 0.0188151 0.141193 0.00110131 0.000973377 0.001599 0.0578958 0 0 0 0 0 0 0.0423946 0 0.258876 0 0 0 0 -0.142781 0.117791 0 0 0.079333 0 0.0128931 0 0.0287369 0 0 -0.443732 0 -0.308379 -0.0159709 0.246688 -0.0519576 0 0 0.25224 0 0.531097 0 -0.0172324 0.868276 0 0.0697056 -0.29164 0.0350181 0 -0.0303011 0 0 0.00941056 0 1.02131 -0.213679 0 0 -0.0291918 0 0 0.0719394 -0.0375027 -0.0615039 0 0.863754 0 0.0939685 -0.175086 0.0663164 0.362138 -0.0500075 -0.341401 -0.233573 0.0389095 0.180846 5.55791 0.0419438 0 0 0 -0.0571154 -0.00720189 0 0 0 0 0.0978732 2.02181 -0.111677 0.403621 0.147759 -0.138572 0.181563 0.0147148 -0.0140286 -0.0259355 -0.0137661 0 0 0 0 0 0 +248 0 0.371147 -0.0348113 0.0345919 0.0743965 -0.00410588 -0.201113 0.800267 0.381708 0.155892 -0.400781 0.174049 -0.164083 -0.00858438 -1.20405 -0.00273901 -0.169069 1.70253 -0.114442 -0.0150619 -0.962468 -0.0319199 0.207286 0.00937802 -0.18514 0.368521 -0.28879 -0.0158281 0.423394 -0.432494 -0.275481 0.0472117 -0.0157537 0.0421726 -0.0738309 0.351208 0.0243948 0.0253715 -1.61254 0.559744 -0.712345 -0.0513206 0.319159 0.090549 -1.71764 -0.292372 -0.576385 0.26128 0.0514373 -0.292776 -0.594568 -0.110709 -2.39919 -0.118097 -0.0199307 0.114465 -0.566136 -0.0388334 0.607782 0.227704 0.114617 -0.384295 -0.781736 -0.226601 0.381823 -0.00118048 -0.555693 -0.172418 0.190193 -0.0636244 0.0335598 -0.273872 0.469296 -0.430157 1.10655 -0.65152 -0.423532 -0.823371 0.161219 1.32855 -0.17431 0.248629 0.782709 0.469632 -0.0425291 0.002691 -0.164509 0.262564 -0.383831 0.510982 -0.802468 0.937205 0 0 0 0 0 0.0345919 0.0743965 -0.000514516 0 0 0 0 -0.000293898 0 0.0094172 0 0 -5.04248e-05 -0.00073917 0.00931316 0 0.00164299 -0.0706923 0.0550725 0 0 0.130806 -4.10757e-05 0 0.0143128 -0.42642 0 0 0.0128056 -0.213657 0 0.116413 0 0.0309943 0 0 0.00310626 0 0 0.320937 -0.00551851 -0.00057297 0 -0.00931763 -0.00863177 0 0 0.213713 0 -0.0025478 0.152802 -0.0026005 0 0 -0.000421575 -0.000504861 0 0.0134462 -0.00291708 0.00600997 -0.273588 -0.00449905 0.00139024 0 -0.00353903 -0.00214435 0.215917 -0.0798916 0.0115235 0 0 0 -2.91472 -0.14401 -0.42742 -0.0135572 -0.0119944 -0.0145771 -0.000124339 -0.000116579 0.000199709 -0.00142033 0 0 0 0 0 0 -0.00410588 0 -0.201113 0 0 0 0 0.132148 -0.0979574 0 0 -0.437876 0 -0.0403256 0 0.000173456 0 0 0.269289 0 0.0305096 0.0227765 -0.301009 0.0497105 0 0 -0.0676763 0 2.90905 0 -2.1521 0.0477266 0 0.0282387 -0.802958 -0.0316289 0 0.0160392 0 0 0.00351902 0 0.509146 0.488542 0 0 0.0873681 0 0 -0.585405 -1.51269 0.166812 0 -0.33772 0 1.06792 -0.115489 -0.00489567 -0.252166 0.14532 0.356035 -1.02749 -0.0902096 -0.452353 -5.43739 -0.133261 0 0 0 0.393048 0.102062 0 0 0 0 -0.295015 -2.24675 -1.3631 2.43615 0.313067 -0.416505 0.811976 0.170139 -0.140627 0.122589 0.0358332 0 0 0 0 0 0 +249 0 -0.530754 -0.376752 -0.0196158 -0.141726 0.0215072 -0.237541 0.362656 0.887791 0.08604 0.451304 -0.0146735 0.68088 0.00422473 0.484387 0.0181065 -0.0823301 0.879231 -0.0762363 0.00856398 -1.02384 -0.00917014 0.45603 -0.000635581 0.0789324 0.714156 -0.280302 -0.025916 0.556437 0.272131 -0.0590085 0.00284526 0.193941 0.952311 -0.377402 0.408358 -0.010199 0.0434473 3.78808 -0.221847 -0.895996 0.0371987 -1.00384 -0.0316591 2.49483 0.335089 -0.677807 0.424125 0.114363 0.132321 -0.860853 0.0266443 6.23145 0.0949386 0.14594 -0.167951 0.0875932 0.0632625 -0.587655 -0.194351 -0.0949328 2.10461 1.86018 1.24953 -0.129979 0.272294 0.839554 -0.103748 -0.130753 -0.0937059 -0.0248588 -0.0831959 -0.167872 0.0348029 -0.127934 -0.00439845 1.27612 -9.88533 0.174818 -4.73361 -0.944358 1.01891 -4.05189 -0.293444 0.155428 -0.276568 -1.00527 -0.300926 0.251465 -0.48526 0.36369 -0.589704 0 0 0 0 0 -0.0196158 -0.141726 -0.00184974 0 0 0 0 -0.000279222 0 0.00156506 0 0 0.00232477 0.00579393 0.00659196 0 0.00102101 0.00968654 0.0234802 0 0 -0.128768 0.000326235 0 0.0139978 -0.12282 0 0 -0.0150855 0.00377046 0 0.041996 0 -0.0140405 0 0 -0.00150676 0 0 0.327615 -0.00546666 0.0405836 0 -0.0361741 -0.0440591 0 0 0.213984 0 -0.00230676 -0.250147 0.00198975 0 0 -0.00545085 0.00414701 0 0.0116693 0.0469105 -0.0172777 -1.03806 -0.0369462 0.0427675 0 -0.00799436 0.00806976 -0.160378 0.0373218 0.0426602 0 0 0 -6.0757 -0.516065 -0.582957 -0.0327688 -0.0291468 -0.0080004 -0.00184034 -0.00161434 -0.00336709 0.00281779 0 0 0 0 0 0 0.0215072 0 -0.237541 0 0 0 0 0.0770314 -0.0440698 0 0 0.260776 0 0.0338005 0 0.0222815 0 0 -0.382138 0 0.68272 0.0416965 0.128691 -0.0610036 0 0 0.257224 0 -2.53162 0 4.13251 -0.591545 0 0.350156 1.4922 0.0166288 0 -0.00535265 0 0 -0.0159366 0 -0.980187 -0.445438 0 0 -0.0774026 0 0 0.19899 1.96276 -0.156011 0 -0.248605 0 0.118082 0.030266 0.0190293 0.63584 -0.0649776 -0.571589 0.310298 0.204934 0.734202 5.78698 0.0340508 0 0 0 -0.298868 -0.0954391 0 0 0 0 0.263024 -12.5716 -0.839605 -1.60426 -1.46405 1.05611 -1.4993 -0.168113 0.140251 -0.129643 -0.0881734 0 0 0 0 0 0 +250 0 -0.596487 -0.263589 0.0874824 0.249556 -0.278107 -0.0908482 0.265473 2.47281 0.421479 -1.6274 0.363651 0.333679 -0.0206767 -0.210921 -0.0423608 0.24016 1.06361 -0.225681 -0.107502 -3.07423 -0.0357741 0.430051 0.0213243 -0.376117 0.582311 -0.227861 -0.0138971 -0.348464 -2.15726 0.241799 0.109809 -0.22109 1.26303 0.343056 0.148835 0.0626191 -0.0509001 5.33093 1.05501 -1.10512 -0.12787 1.43106 0.185472 -1.5516 -0.766136 -0.279584 -0.895421 -0.37298 -0.541937 0.450662 -0.372471 3.33962 0.337562 -0.399298 0.317128 1.62341 0.140564 -0.118907 0.495022 0.301609 0.96153 1.83403 -0.324027 -0.68891 -0.363467 1.08694 0.104653 -0.0864803 -0.141555 0.758911 -0.426902 0.55995 -0.0515396 1.57107 0.0728253 -0.658414 -16.7434 2.14328 -8.35952 -0.695664 0.326008 -3.01608 0.824962 -0.60332 1.31467 -1.48584 0.688026 -0.820913 1.79876 -2.1207 4.67475 0 0 0 0 0 0.0874824 0.249556 0.000754205 0 0 0 0 -0.000443355 0 -0.00439708 0 0 -0.0010461 -0.00432641 0.00130047 0 0.000421032 -0.0733665 -0.0465079 0 0 -0.046019 -0.000245844 0 -0.0271527 -0.415245 0 0 -0.00894446 -0.146905 0 0.0255395 0 0.0328835 0 0 0.00299543 0 0 0.0573813 -0.00807458 -0.016439 0 0.0179682 -0.0102491 0 0 0.0324931 0 -0.00438906 -0.193071 -0.00431855 0 0 0.00266507 -0.00555444 0 -0.00190819 0.055099 0.0140372 0.627979 -0.0475693 -0.0291876 0 0.00458101 -0.0102372 0.209834 0.00640662 -0.10541 0 0 0 2.24073 0.215255 0.294551 0.0141349 0.0128946 0.0176779 0.000676085 0.000589593 0.00143412 0.0146135 0 0 0 0 0 0 -0.278107 0 -0.0908482 0 0 0 0 0.520753 0.870905 0 0 -1.04187 0 -0.139335 0 0.0353924 0 0 -0.836614 0 0.674254 0.18625 -0.45787 -0.0984772 0 0 0.270461 0 -2.0742 0 3.1911 0.574893 0 1.40688 1.33337 -0.0623338 0 0.0704105 0 0 0.10491 0 0.260569 -2.13763 0 0 -0.246921 0 0 0.0529088 -1.52815 -0.348818 0 1.74923 0 -0.545897 -0.174955 0.210465 0.558528 0.030841 -0.512489 0.191211 -0.18873 -0.946119 2.86921 -0.191488 0 0 0 -0.124516 0.307563 0 0 0 0 0.0280393 -7.3103 3.43074 -4.87875 -0.852241 0.807549 -1.37119 0.674498 -0.489765 0.429388 -0.627709 0 0 0 0 0 0 +251 0 0 0 0 0 0.0181512 -0.264104 0.642329 2.01104 0 0 0.0306374 -0.770399 0 -0.495419 0.0151095 0 0 0 -0.0361999 -4.02414 0 0 0 0 0.510051 0 0 0.312902 2.19038 -0.364653 0 0.250457 0 0 0.217097 0.00214117 0 0 -0.415473 -1.81174 0 0 -0.0479464 -2.02005 0 -0.890332 0.573337 -0.0222368 0.0973771 -1.94927 0.223766 0 0.0641813 -0.129368 0.308992 -2.01395 -0.748046 -1.34355 0 0 -0.784841 2.92719 0 -1.08149 0.0116287 -1.45397 0 0 0 0 0.378494 -0.22768 0 -0.563604 -0.966071 0 0 0 -4.73592 0 0.545757 -5.32462 0 0.191012 -1.02227 -6.58236 0 0.385531 -1.44703 1.98757 -9.82344 0 0 0 0.101029 0.0029169 0 0 0 -0.0144844 0.00366164 0 -0.00116491 0 -0.000260364 0.00816108 0 0 0 0 0.0917139 0 0.00457878 0 0.151375 0 -0.142062 -0.0942476 0 0.000216261 0 0 -0.0090668 -0.000282574 -0.00433736 0 0.000368056 0 0.000264247 -0.00169375 0.00185425 -0.00387411 0.000236876 0 -1.89168e-05 0 0 0 2.67122e-05 0 0 0.000834347 0.000355595 -0.0739966 -0.00401917 0 0 -0.00246402 0 -0.000483491 0 0 -0.004737 0.00366811 -0.000287035 0.0037357 0 0 -0.0443034 -0.00435082 0.000231085 -0.00286954 0.0740497 0 -0.00200071 -0.000493473 -1.56647e-07 0 0 0 -0.226572 0 0.00829174 0.00314715 0 -0.000700487 0.00126192 -0.0307233 0 0.000387463 -0.00068158 0.00288775 -0.00420406 0 0.0181512 0.101029 -0.264104 0.0029169 -0.101339 -0.081748 -0.0100363 0.589572 0.36135 0.00121209 0.00455906 0.362126 8.12565e-05 0.0178487 -0.00128528 0.0104471 0.0030477 0.0141289 0.248644 -0.565695 0.102334 0.350123 0.0837701 0.0465686 -0.0140361 0.203566 0.160031 0.003978 3.8382 -0.240156 1.91148 -0.143054 -0.000100135 0.847499 0.548983 0.00422757 -0.00259846 0.143913 -0.0262213 0.949683 0.0191354 0.0323486 0.737357 0.235629 0.00240233 -0.0273714 0.150334 -0.0152371 -0.0136395 0.0281291 1.85759 0.479275 -0.02969 -0.40422 0.00610253 -0.538585 -0.0137805 -0.0438544 -0.0755975 -0.0586917 0.592123 0.078855 0.153945 -0.0711819 1.46912 -0.024398 -0.796739 -0.0221754 -0.163546 -0.362219 -0.033852 0.0687454 -0.00639704 -0.104082 0.0524664 -0.0387533 -15.4768 -1.96267 -3.56461 -0.144579 0.930193 -5.38054 -0.020225 0.238774 -0.913234 -0.798108 -0.00129176 0.146558 -0.397652 0.419207 -1.36446 0 +252 0 0 0 0 0 0.416611 -0.0322213 -0.567782 -1.84752 0 0 -0.180512 -0.319392 0 -0.247195 -0.032251 0 0 0 -0.161829 6.57552 0 0 0 0 -0.0162663 0 0 0.477918 -5.06048 -0.505001 0 -0.12537 0 0 0.0820646 -0.0328575 0 0 -0.0121371 0.268831 0 0 -0.0778889 2.05559 0 -0.988137 -0.423496 -0.261366 0.100286 -0.803455 -0.043166 0 0.205412 -0.0402105 -0.353551 1.28633 0.494713 0.386897 0 0 0.338517 -0.997495 0 -1.50493 -0.324114 -0.352668 0 0 0 0 -0.146498 -0.598212 0 -0.175324 0.968381 0 0 0 4.09603 0 0.402261 8.3374 0 0.100355 0.623161 6.77263 0 0.355367 -0.0110818 0.383057 13.8111 0 0 0 -0.100049 -0.00599664 0 0 0 0.00212959 0.0117123 0 -0.000302955 0 0.000540941 0.00708028 0 0 0 0 0.00462644 0 0.00191527 0 0.0562216 0 0.0426606 0.0524816 0 -2.25366e-05 0 0 -0.0113926 0.000801047 0.000287522 0 0.00154191 0 0.000867583 -0.00805737 0.000263458 0.0107254 -0.00113829 0 3.94935e-05 0 0 0 0.000112128 0 0 -0.00281737 0.00250733 -0.00722016 0.0150358 0 0 0.00110213 0 -0.000458589 0 0 -0.00994865 -0.0149489 0.0201284 0.00934572 0 0 0.00268462 -0.00345117 -0.00543396 0.00700018 -0.0422414 0 -0.0211947 -0.00147754 0.0517434 0 0 0 -0.136551 0 -0.0246826 0.0491567 0 0.00213743 -0.00503848 -0.0110947 0 -0.00114604 0.00230992 -0.00911578 0.0178249 0 0.416611 -0.100049 -0.0322213 -0.00599664 0.897349 0.278446 -0.0444114 0.0757659 -0.283638 0.00231586 0.00845717 0.265367 0.000143502 0.0185786 -0.00288743 -0.00335507 0.0137841 0.037893 0.795393 1.99874 0.331873 -0.204695 0.129641 0.129447 0.0946549 -0.385112 -0.123227 0.0299325 -0.197447 0.165291 3.55766 -0.617011 -0.000185433 -0.131616 1.21647 0.00814694 0.00191927 -0.060756 0.0249697 -2.16319 -0.010545 -0.0603435 -0.302927 2.05467 0.0013853 0.0178578 0.294409 0.2422 0.0913402 0.266365 -0.909763 0.136192 -0.0117285 0.139129 0.00441157 -2.32671 -0.015334 -0.247577 -0.251626 -0.424119 -0.572108 0.0923198 -0.0989143 -0.351276 -7.28937 0.0381415 -0.0326372 0.0697944 0.116771 0.086203 -0.0410426 -0.0291085 -0.00413371 -0.0457447 -0.150326 -0.0119956 -28.8056 -1.99866 -1.95842 -0.316039 -0.163525 3.44972 -0.0219762 0.0327095 0.153117 1.01623 -0.00346444 0.0185774 0.124751 -0.354078 3.11887 0 +253 0 0 0 0 0 0.915882 0.350563 -2.42735 -6.0866 0 0 -0.146479 0.774747 0 0.270097 -0.00107763 0 0 0 -0.0559847 0.12147 0 0 0 0 -0.803464 0 0 -0.41617 -2.07666 0.311444 0 -0.367282 0 0 -0.403289 0.0250936 0 0 -0.504072 0.424507 0 0 0.0265166 1.52021 0 0.604891 -0.682294 -0.984688 0.17836 -1.43621 0.142841 0 0.249961 -0.176561 -0.0627466 -1.11635 0.739678 0.394921 0 0 2.34409 -3.90332 0 0.152023 0.310711 2.08229 0 0 0 0 -0.305993 -1.03712 0 -3.19235 0.755601 0 0 0 15.6967 0 1.75576 7.33946 0 0.271269 1.15924 14.6664 0 -0.450541 1.97319 -0.216778 13.6548 0 0 0 0.194229 0.0180915 0 0 0 0.0302591 -0.0377413 0 0.00344376 0 0.00119034 -0.0331249 0 0 0 0 -0.137841 0 -0.0128348 0 -0.350419 0 0.251377 0.14921 0 -0.00121739 0 0 -0.146694 0.00108784 0.0135855 0 -0.00456913 0 -0.00275858 0.00223681 -0.0146556 0.0152792 0.00111638 0 8.6226e-05 0 0 0 -0.000331942 0 0 -0.00225847 -0.00565399 0.18087 -0.00121586 0 0 -0.0169264 0 0.0036397 0 0 0.00647149 -0.00209211 -0.0504086 -0.0215502 0 0 0.125542 0.0223752 0.00931158 0.0863008 -0.00694877 0 0.10676 0.00266033 -0.0739351 0 0 0 0.707405 0 -0.0287209 0.276194 0 0.00230594 -0.022051 0.185876 0 -0.00135902 0.012946 -0.0302713 0.107475 0 0.915882 0.194229 0.350563 0.0180915 0.142107 -0.0481362 0.145086 -0.548598 -0.271313 -0.00818704 -0.0280189 -0.352309 -0.000563134 -0.0362475 0.0106131 -0.0212677 -0.0271334 -0.111478 -0.670007 -0.725246 0.358225 -0.601648 -0.0804346 -0.118935 -0.187993 -0.133829 -0.371595 -0.0191066 -7.11441 -0.132895 2.09959 0.218014 0.000733625 -2.55809 1.27093 -0.00958593 -0.00237167 -0.164447 -0.0112147 -0.615663 -0.00781887 -0.0221785 -2.02729 -1.72688 -0.00485953 -0.0217344 -0.364761 -0.127865 -0.01277 0.319448 -1.35598 -0.253087 0.0497201 0.906178 -0.0178907 1.14427 0.0209391 0.10707 0.217044 0.375833 -0.041345 -0.0248428 0.0335698 0.236172 3.0433 -0.0608104 0.461926 -0.0959886 0.108436 0.152654 0.0920619 0.0871816 0.0162344 -0.262808 0.0205225 -0.00106692 -16.9999 0.88077 7.55032 0.355327 0.640094 0.664912 0.0450694 0.0976893 0.552252 2.39934 0.0101921 0.0669835 0.237242 0.0419831 1.26787 0 +254 0 -0.782463 -0.603832 -0.00256973 0.0719372 -0.0935438 -0.172201 0.148989 1.4144 -0.0182564 0.0919456 -0.138438 0.421756 0.00087685 -0.461435 -0.0209872 -0.839859 -3.14184 -0.0247123 -0.0286679 -0.43574 -0.0132059 0.521063 -0.000732007 0.0234985 0.582935 -0.576796 -0.0107955 0.267857 0.825346 0.087169 -0.00567921 -0.345754 1.78577 0.0172301 0.223221 -0.0132397 -0.0655828 7.86204 -0.183033 -0.350517 0.0105573 -0.130226 -0.0186398 -1.08229 0.121186 -0.341685 0.509979 -0.511792 0.135983 -1.25879 0.340263 -2.73882 0.111778 -0.0204803 0.197217 -0.396777 0.395702 0.455976 -0.0414527 -0.0360988 1.48873 -0.671207 -0.774738 -0.551591 0.658046 0.976257 0.368845 -0.224227 0.00764048 0.522532 0.218084 -0.268805 0.148847 -1.06194 -0.276427 -0.579209 -41.2475 -5.31455 -10.6594 -4.50551 4.55289 -20.5848 0.289368 -0.346845 -0.583746 -5.67389 -0.0376467 0.0726214 -0.49597 0.856432 -5.00946 0 0 0 0 0 -0.00256973 0.0719372 0.00101792 0 0 0 0 0.000153487 0 0.00153486 0 0 -0.000112071 -0.00016526 0.000553574 0 0.000176844 0.000366704 -0.00759842 0 0 -0.148893 -1.18953e-05 0 0.0175576 -0.35829 0 0 -0.0209965 -0.00869462 0 0.11842 0 -0.0119169 0 0 -0.00157434 0 0 0.397122 0.00211615 -0.00155221 0 0.014128 0.0146633 0 0 -0.105914 0 0.00246372 -0.211247 -0.00390393 0 0 0.000849612 -0.000947395 0 0.00123591 0.00338573 -0.00143694 0.143287 -0.00267877 -0.00604942 0 -0.00492099 0.00716033 -0.0548279 0.0127802 -0.00777159 0 0 0 -1.43757 0.0549909 -0.12266 -0.0264554 0.0505133 -0.11391 0.000316139 -0.000612319 0.00121857 -0.00152952 0 0 0 0 0 0 -0.0935438 0 -0.172201 0 0 0 0 -0.0598833 -0.224526 0 0 -0.272886 0 -0.0203093 0 -0.0021617 0 0 -0.441937 0 0.932015 0.0646978 -0.00179244 -0.0417996 0 0 -0.0824037 0 -7.22392 0 3.8379 -0.199613 0 0.507486 1.79455 0.000770398 0 -0.0116385 0 0 -0.00528499 0 -1.5789 -1.3641 0 0 -0.137492 0 0 -0.192287 -2.73446 -0.191371 0 -0.129766 0 1.08811 0.0366582 0.0170732 0.00274727 -0.0364602 -1.37585 -0.393759 -0.0644624 -0.544302 -1.27202 -0.0387447 0 0 0 -0.0645555 0.0260379 0 0 0 0 0.0325503 -26.2835 -0.437796 -3.17557 -0.65963 0.819616 -3.16063 0.145233 -0.12197 0.137061 -0.352741 0 0 0 0 0 0 +255 0 1.29247 0.358311 -0.00850213 -0.126841 0.489619 0.369846 -1.28305 -3.98419 -0.0857509 0.444334 0.173725 0.535096 0.000554127 1.00915 0.0135958 -0.278821 0.149682 0.0461763 0.029916 -0.666109 -0.00914148 -0.369737 -0.000504397 -0.0130623 -0.890049 0.0879842 -0.0161123 -0.725092 -1.83657 0.365442 -0.00634557 0.146223 -1.13107 -0.0167745 -0.432353 0.0127107 -0.110921 -5.32046 0.206099 0.360961 0.00748858 -0.0504562 0.0165543 2.32856 0.103149 0.591645 -1.18052 0.310874 -0.0118857 0.755661 -0.436528 -0.322279 -0.0410463 0.0758183 -0.14002 -2.48532 0.121778 -0.121319 -0.0236865 -0.0246602 -1.18989 -0.128804 -1.24163 -0.184865 -0.277125 0.565629 -0.396801 0.156863 0.0220907 -0.46068 -0.253585 0.105949 0.183913 -2.07037 0.681373 0.908753 25.3858 0.469695 15.2026 1.03108 -1.87588 16.0104 -0.0804993 -0.00189724 -0.699992 11.9173 -0.0320433 0.00560164 -0.0277664 -1.29518 11.1471 0 0 0 0 0 -0.00850213 -0.126841 -0.00114067 0 0 0 0 -5.64569e-05 0 0.00186453 0 0 0.0015957 0.00204632 -0.00273287 0 -9.81179e-05 0.00170708 -0.0229184 0 0 0.14044 0.000152603 0 -0.00603232 0.413052 0 0 0.0202642 0.0476304 0 -0.0529031 0 0.00754783 0 0 0.00119908 0 0 -0.105051 -0.000816582 0.0209098 0 -0.0163834 -0.00157854 0 0 -0.00897147 0 0.000359339 0.0480246 -0.00400307 0 0 -0.00592747 0.00404603 0 0.00612136 0.0239526 0.0192159 -0.371548 -0.0451766 -0.0102617 0 -0.0144592 0.0156149 -0.0010668 -0.0265884 0.110611 0 0 0 0.172757 -0.0625544 0.0995728 0.00645643 -0.0119351 0.0283767 -0.00262555 0.00504182 -0.0104909 0.0172531 0 0 0 0 0 0 0.489619 0 0.369846 0 0 0 0 0.0130913 0.262498 0 0 0.0576875 0 0.0132008 0 0.0092238 0 0 -0.327494 0 -0.221034 -0.126039 -0.0933398 -0.0600741 0 0 0.147594 0 2.32841 0 -3.62911 0.326821 0 -1.19712 -0.733732 -0.00374033 0 0.0151888 0 0 0.0157412 0 0.376109 0.454498 0 0 0.0229527 0 0 -0.395123 -2.48991 -0.286059 0 -1.24005 0 -0.664869 0.0598936 -0.10098 -0.163364 0.13958 -0.348559 -0.257983 -0.0860836 0.699453 -0.577949 -0.0978793 0 0 0 0.0973776 -0.0201128 0 0 0 0 0.012943 31.407 1.1339 6.92853 0.336642 -0.431672 3.41974 -0.0334631 0.0282985 -0.00710551 0.871118 0 0 0 0 0 0 +256 0 1.52726 0.178146 0.0418614 0.302628 -0.031206 -0.203226 1.8 2.1327 0.39241 -1.37799 0.220822 -0.478404 -0.00338461 -0.487512 0.0265842 -0.120721 0.493721 -0.0283699 0.0241435 -1.21577 0.0548291 0.0320267 0.00410543 -0.120916 0.43978 -0.211955 0.0919257 0.492143 1.38793 -0.21919 0.0416257 0.409525 -0.911257 0.2429 0.379034 0.02604 0.279723 -8.86098 0.497193 -0.743974 -0.034958 0.974285 0.0504934 -2.00905 -0.339693 -0.468219 0.920842 0.479143 -0.190331 0.106717 -1.00903 -1.05749 -0.039833 0.101294 -0.389779 -2.55979 0.120264 -0.47481 0.461762 0.0940625 -4.86918 0.239802 0.921423 -2.34313 -0.207651 -2.70444 1.39155 0.34771 -0.0954763 0.66979 -0.560405 0.380821 -0.216532 -1.7511 -1.45609 0.602641 50.1861 10.6947 -0.171988 5.96595 -5.52587 12.158 0.252197 -0.534312 3.04872 -8.1861 0.105526 -0.201099 0.815308 -1.00274 -8.42406 0 0 0 0 0 0.0418614 0.302628 -0.00136516 0 0 0 0 -0.000588725 0 -0.00983664 0 0 4.66424e-05 -0.000493331 -0.00802187 0 -0.000836013 0.00795479 -0.0689789 0 0 0.056413 -4.02042e-05 0 -0.0366577 0.265388 0 0 0.00545193 0.0042228 0 -0.171244 0 0.017068 0 0 0.00167081 0 0 -0.724069 -0.00805337 0.00187246 0 -0.0176158 -0.0380157 0 0 0.221783 0 -0.0104625 0.386089 0.0200592 0 0 0.00199482 -0.00250591 0 -0.0116583 -0.0367508 -0.0141681 0.129388 0.00762181 0.0262163 0 0.014809 -0.0351109 -0.0255314 0.0238172 0.0379203 0 0 0 3.05726 -0.1174 0.431945 0.0679197 -0.12977 0.27966 0.000277981 -0.000555978 0.000921834 0.0215632 0 0 0 0 0 0 -0.031206 0 -0.203226 0 0 0 0 -0.506659 0.532574 0 0 -0.512932 0 -0.0612878 0 0.0124067 0 0 -0.07908 0 -0.531159 -0.0491742 -0.0745555 -0.0324396 0 0 0.221856 0 2.64084 0 -7.86573 -0.439065 0 -0.540202 -2.37274 -0.0101238 0 -0.0606849 0 0 0.041725 0 0.184133 -0.50866 0 0 -0.111489 0 0 -0.283751 1.62021 -0.739931 0 -0.98495 0 -1.98174 -0.00527915 0.0769152 0.49411 -0.0188993 0.146038 0.829326 -0.239218 -0.302786 -8.66868 -0.0701384 0 0 0 0.0911833 0.150555 0 0 0 0 -0.0607264 61.2388 5.17144 5.9796 1.54797 -1.49729 6.52566 0.255429 -0.236369 0.469192 0.530051 0 0 0 0 0 0 +257 0 0.0310395 0.182619 0.00280282 0.0341236 0.0860848 0.213491 -0.278863 -0.543675 0.0229862 -0.228919 0.0450138 -0.431441 -8.14888e-05 -0.862471 -0.00649457 -0.282814 -3.1823 -0.0139878 -0.00736097 2.26978 0.00420968 -0.36271 0.000104936 0.00374881 -0.368488 0.33227 0.00815141 -0.681013 -1.42554 -0.0674666 0.00160368 -0.112758 -0.444605 -0.0601148 -0.364481 0.00235431 0.0903324 -0.516643 0.096937 1.60171 -0.00126606 -0.0723434 0.00510405 -2.43507 -0.0186057 0.931112 -0.825152 -0.115607 -0.0133741 0.608295 -0.33955 -1.95744 0.0127135 -0.0124771 -0.0581047 -0.639101 -0.469402 -0.0647875 0.0590755 0.00279902 0.323519 -2.43822 0.443308 -0.00540291 -0.0687925 0.459436 0.233907 -0.0124431 -0.00295932 -0.0484414 -0.0966576 -0.0825675 0.0387268 0.670975 0.661705 -0.211642 4.75944 1.11565 2.22607 0.277707 -0.635055 5.51125 0.0979066 -0.250052 0.744925 1.85981 0.00167148 -0.00489678 0.0824585 -0.137566 2.82347 0 0 0 0 0 0.00280282 0.0341236 -0.000541412 0 0 0 0 -5.50107e-05 0 -0.000870485 0 0 -6.20235e-05 1.98957e-05 -0.000934644 0 -6.62281e-05 0.00184005 -0.012823 0 0 0.0119515 1.42803e-06 0 -0.00258698 0.0843112 0 0 -0.000392691 0.0197338 0 -0.0105745 0 0.00181403 0 0 0.000132479 0 0 -0.0774439 -0.000757453 -0.000806807 0 -0.00742398 -0.00582813 0 0 0.025555 0 -0.00134837 0.0554293 0.00226506 0 0 0.000185405 0.000750359 0 -0.00195825 -0.00366954 -0.00197542 -0.00996584 -0.00287599 0.00381473 0 7.30047e-05 -0.00196143 -0.0204669 0.00769318 0.0198028 0 0 0 0.328871 -0.0119323 0.0605303 0.00768947 -0.0146781 0.0314741 8.8872e-05 -0.000170123 0.000359685 0.00477491 0 0 0 0 0 0 0.0860848 0 0.213491 0 0 0 0 0.232276 -0.0777432 0 0 -0.393277 0 -0.0468383 0 -0.000470929 0 0 0.0634485 0 -0.771516 0.0652941 -0.0899888 0.00645759 0 0 -0.00929072 0 -0.444554 0 -1.22713 0.165116 0 0.380506 -0.709103 -0.0093464 0 0.0264872 0 0 -0.0176066 0 -0.0847049 -0.0128565 0 0 0.0233751 0 0 -0.110849 1.00181 -0.00539004 0 -0.218506 0 -0.226307 -0.111616 0.131571 0.359207 -0.120833 -0.0218948 0.30667 -0.0599111 -0.925835 -9.0383 0.0329871 0 0 0 -0.0577103 0.0908168 0 0 0 0 0.0167783 15.7866 2.50533 0.0635172 0.468183 -0.272357 2.04403 0.217727 -0.18283 0.348547 -0.360151 0 0 0 0 0 0 +258 0 0.377832 0.184146 -0.00439692 -0.0613918 0.357311 0.174723 0.099429 -0.764201 -0.038949 -0.00450075 -0.0207365 0.85173 0.000127637 1.17653 0.00227767 0.964349 5.0252 -0.0103283 0.0110741 -0.439358 -0.0152067 0.194231 -0.000163912 -0.079515 -0.15002 -0.0309263 -0.00658831 0.128239 1.18255 0.444694 -0.00258375 0.0297831 0.104594 0.0388861 0.0876809 -0.00100783 -0.0759499 -0.987706 0.00155206 0.329255 0.00207805 0.081688 0.000320425 2.72981 0.0327944 0.537985 0.446022 0.180306 0.000760156 2.58008 -0.188486 3.51829 -0.0190057 0.0199727 0.0560994 -0.978717 0.276509 0.100997 0.0871708 -0.0048714 0.531182 0.422409 0.177387 1.63867 -0.223762 0.414889 -0.0986378 -0.0303529 0.00501306 -0.107428 0.0747435 0.100535 0.121949 -1.19245 0.127205 0.817513 0.967315 -0.502357 3.00068 -0.152751 -0.00450833 -0.946519 0.574504 -0.598168 -0.208392 1.84504 -0.00294614 0.000886541 -0.0855951 0.0329451 -2.3422 0 0 0 0 0 -0.00439692 -0.0613918 0.00115408 0 0 0 0 0.00010778 0 -0.000907726 0 0 0.000890415 0.000546947 -0.000460421 0 -4.08105e-05 -0.00216985 -0.014759 0 0 -0.0136801 3.97692e-05 0 0.00438975 0.0330384 0 0 -0.000523722 -0.0172999 0 0.0169741 0 -0.00285206 0 0 -0.000288355 0 0 0.119289 0.00148389 0.0121096 0 0.0158041 0.0163616 0 0 -0.0418294 0 0.00308047 -0.0422729 -0.00712292 0 0 -0.00197824 -0.00139687 0 0.00404838 0.00820787 0.00615621 -0.0994636 -0.0195206 -0.00830493 0 -0.00335769 0.0163916 -0.00675283 -0.00537479 0.0364955 0 0 0 -0.533214 -0.00249729 -0.0249572 -0.0124102 0.0237202 -0.0505332 -0.0011875 0.00226595 -0.00486752 0.00669089 0 0 0 0 0 0 0.357311 0 0.174723 0 0 0 0 -0.827717 0.17216 0 0 0.165459 0 0.0160251 0 0.00251335 0 0 -0.0506569 0 -0.0205169 -0.231136 0.0724254 0.0196657 0 0 0.0570445 0 1.89722 0 -2.70401 0.280529 0 -1.74303 -0.686051 0.00445521 0 -0.111161 0 0 0.0165281 0 0.469658 0.38251 0 0 0.08253 0 0 0.0849735 -1.72226 0.44852 0 1.0053 0 1.13847 0.0783028 -0.211513 -0.416247 0.0305589 -0.288537 -0.378436 -0.1352 0.24111 7.79842 -0.0016611 0 0 0 -0.0415243 -0.0104115 0 0 0 0 0.0260954 19.9174 -0.423032 8.23928 0.0778286 -0.256613 2.1528 0.0890957 -0.0902026 -0.173722 1.49011 0 0 0 0 0 0 +259 0 1.83649 0.497033 0.0191048 0.216804 -0.0343152 -0.00881814 1.23664 1.60936 0.150876 -0.354036 0.129272 -0.273654 -0.000555851 -0.619275 -0.00948095 0.830968 5.96745 -0.0207662 -0.0213086 -0.659886 0.0265502 -0.176937 0.00071669 0.070611 0.110269 0.150997 -0.00625819 0.115374 0.551271 -0.322967 0.0107946 -0.0908396 -0.992752 -0.158583 0.126754 0.00688858 -0.0849003 -7.30025 0.287269 -0.596106 -0.00844516 -0.470858 0.0160123 0.317044 -0.119576 -0.517665 0.213809 -0.21322 -0.0423889 0.29219 -0.473728 -0.0649023 0.0393123 -0.0386077 0.011134 -0.424455 0.321857 0.0181499 0.0659757 0.0181137 -0.710945 0.500512 2.63374 1.98544 0.402413 0.0541255 -0.179513 -0.188162 -0.019427 0.0134951 -0.42556 0.019409 0.135495 -0.811863 0.25091 1.27775 36.8433 5.7875 1.22679 4.26453 -3.92116 11.3119 -0.760978 0.435326 0.404594 -0.523356 0.0107423 -0.0163904 0.0936562 -0.268413 -1.09187 0 0 0 0 0 0.0191048 0.216804 -0.00318089 0 0 0 0 -0.000332142 0 -0.00725633 0 0 0.0011355 0.00129552 -0.00517989 0 -0.000572565 -0.0030029 -0.0607905 0 0 0.15828 9.40174e-05 0 -0.0281079 0.211783 0 0 0.0228449 -0.0152305 0 -0.18111 0 0.0157755 0 0 0.00218577 0 0 -0.726154 -0.00457379 0.0157858 0 -0.0437144 -0.0395551 0 0 0.181093 0 -0.00727033 0.36574 0.0122618 0 0 -0.00218694 0.0048948 0 -0.00592764 -0.0310739 0.00197853 0.0792062 -0.0177066 0.0169908 0 0.00412335 -0.0213624 -0.0297513 0.0153175 0.0726569 0 0 0 3.00355 -0.156891 0.442136 0.070399 -0.134289 0.288945 -0.00148618 0.00283246 -0.00612094 0.0231106 0 0 0 0 0 0 -0.0343152 0 -0.00881814 0 0 0 0 -0.0546906 -0.0118383 0 0 -0.468744 0 -0.0430618 0 -0.00549995 0 0 0.943207 0 -0.681374 0.0168652 -0.139636 0.143394 0 0 0.0762029 0 12.4091 0 -8.88087 0.647925 0 -0.172591 -2.60749 -0.00917854 0 0.00728398 0 0 -0.028507 0 3.715 2.07511 0 0 0.305877 0 0 -0.0521207 2.4687 0.154219 0 -0.370946 0 0.0992157 -0.198982 0.170122 0.50398 0.102734 -0.374922 0.0552789 -0.156735 0.443297 2.91045 -0.130418 0 0 0 -0.0340988 0.0983945 0 0 0 0 0.0549856 65.2001 4.88649 4.99808 1.47092 -1.51725 6.74204 0.113083 -0.114427 0.376865 0.221191 0 0 0 0 0 0 +260 0 0 0 0 0 0.68805 0.378693 -2.37319 -7.34661 0 0 0.149715 0.797972 0 1.12755 -0.0507609 0 0 0 -0.0241995 5.90836 0 0 0 0 -1.15251 0 0 -0.42258 -7.64237 0.0917408 0 0.0419408 0 0 -0.385093 0.0291655 0 0 -0.300313 1.62734 0 0 -0.0703341 5.64995 0 0.438381 -1.89411 0.476477 0.188897 -5.09135 -0.106305 0 0.349243 -0.0712728 -1.12134 -1.2269 0.148596 -0.257713 0 0 2.19727 -0.549211 0 -2.22872 0.492928 1.77964 0 0 0 0 -0.663672 -1.1963 0 -0.747398 2.49376 0 0 0 16.8725 0 1.54323 14.5312 0 0.759727 2.03968 22.8595 0 -0.0713188 4.62866 -2.78862 29.3541 0 0 0 0.0205373 0.0374084 0 0 0 0.0625334 0.0738784 0 0.0123222 0 0.0140567 -0.119562 0 0 0 0 -0.185146 0 -0.0512173 0 -0.604334 0 0.379498 0.906607 0 -0.0114775 0 0 -0.620623 0.00328773 0.0986804 0 0.00940062 0 0.00484707 0.155872 -0.0875597 0.0417709 -0.00822107 0 0.00104214 0 0 0 0.000640735 0 0 -0.0090214 0.00569874 0.128093 -0.00126453 0 0 -0.0350852 0 -0.00974637 0 0 0.0478128 -0.0457874 0.197593 -0.00479162 0 0 -0.0255761 -0.0372489 -0.00784559 -0.295039 0.228021 0 -0.232335 -0.0251631 -0.19419 0 0 0 1.73781 0 -0.0573345 1.82538 0 0.0112389 0.0316479 0.703292 0 -0.00471518 0.0381335 -0.0838768 0.946955 0 0.68805 0.0205373 0.378693 0.0374084 0.852319 0.186379 0.273349 0.529217 1.56336 -0.0677056 -0.0345059 -0.552324 -0.0141423 -0.0858213 0.0770678 0.140976 -0.0333847 -0.280883 -0.151084 1.49277 0.631377 -0.0745836 -0.30655 -0.0374957 0.047646 -0.0877035 0.772646 0.0354137 1.57747 -0.0500098 6.40089 0.397258 0.0175724 0.287029 2.05681 -0.0455969 0.00433487 0.0456274 0.00275793 -0.544035 0.294883 -0.01431 0.56235 1.59182 -0.0102422 0.0134775 0.152351 0.228989 -8.41797e-05 0.473107 3.81191 -1.04989 0.0263523 0.647379 -0.134493 1.48595 0.706453 -0.390356 0.134148 0.417202 0.41887 -0.0420972 -0.502082 -0.937178 -1.20818 -0.0155731 0.766459 -0.103923 -0.0624512 0.103197 0.0832044 -0.0593692 0.154588 -0.385652 0.0173532 -0.248257 -60.9388 -1.81087 -7.77665 -1.13398 1.3645 -5.62603 0.408059 -0.0415675 0.628485 0.0924715 0.216867 -0.000912153 0.281789 0.125823 0.700853 0 +261 0 0 0 0 0 0.0167241 0.144709 0.491483 2.42723 0 0 0.435369 2.37192 0 5.12821 0.416658 0 0 0 0.835921 -5.00823 0 0 0 0 0.710995 0 0 -0.71571 -1.65085 1.41175 0 1.49147 0 0 0.189011 0.115658 0 0 1.79322 -0.611905 0 0 0.484104 7.22946 0 0.389392 -1.16978 2.5487 -0.899313 3.46079 -0.456983 0 -0.735405 1.25055 -0.249908 -6.50057 -2.07582 -0.954941 0 0 0.202883 1.71051 0 -2.34304 -1.92595 1.29059 0 0 0 0 0.623051 1.55342 0 -1.90284 3.03396 0 0 0 -5.97117 0 -3.71813 6.25809 0 -1.53476 1.15608 0.560425 0 -1.86124 0.600597 -2.6839 10.7467 0 0 0 -0.0926188 -0.057447 0 0 0 -0.103414 0.0643917 0 -0.0200191 0 -0.00970971 0.119398 0 0 0 0 0.133437 0 0.0580503 0 0.303102 0 -0.58288 -0.0989186 0 0.00654294 0 0 0.090391 0.00149155 -0.00272136 0 0.0105572 0 0.0049641 0.0299087 0.0318023 0.0193429 0.0288265 0 -0.000703394 0 0 0 0.000784607 0 0 -0.00320049 0.0117082 -0.302833 0.0131177 0 0 -0.0036014 0 -0.00557721 0 0 0.00551471 -0.0145976 -0.021678 0.0339601 0 0 -0.0700044 0.04266 0.0112457 0.0672845 -0.0479855 0 0.112384 -0.00671782 -0.0354028 0 0 0 -0.802379 0 0.00797408 -0.52488 0 0.00260135 -0.036608 -0.23046 0 -0.00173311 -0.0002881 0.0119075 -0.310344 0 0.0167241 -0.0926188 0.144709 -0.057447 -0.411745 -0.0260388 -0.548577 0.41954 -0.185924 0.0801754 -0.0215083 0.661062 0.0167948 0.17738 -0.110964 -0.01664 0.0122154 0.339167 -1.698 -0.963568 0.511808 -0.0207808 0.327581 -0.193281 -0.0626929 -0.0102818 0.163766 -0.00801626 0.990234 -0.0374596 3.32102 0.80894 -0.0222881 -0.0327702 1.67206 0.0832497 -0.00250947 0.0276543 -0.00634578 -0.258868 -0.129384 0.000709613 1.20077 -3.72773 -0.000610431 -0.0190914 -0.428186 -0.0888992 -0.107334 -0.491048 0.465265 0.567132 -0.0797026 1.88877 0.180124 1.80005 -0.521432 0.42035 -0.388101 0.330878 0.390563 -0.921998 0.118288 -1.03586 -10.8453 0.254998 0.123969 0.122901 0.0992962 -0.0531797 -0.423269 0.00457619 -0.16603 0.179414 0.0170383 0.321012 -31.6173 -5.45043 -2.71204 -2.89657 0.714729 -2.29772 -0.490467 0.0697954 -0.489327 0.181289 -0.261869 0.0258208 -0.275977 -0.0121454 0.716466 0 +262 0 0 0 0 0 0.23002 0.269164 0.409209 0.222344 0 0 0.108232 0.158113 0 0.608377 0.0452219 0 0 0 -0.134294 -8.39174 0 0 0 0 -0.303584 0 0 -0.762286 4.49096 0.462871 0 0.590971 0 0 -0.103397 0.061602 0 0 -1.0884 -1.64154 0 0 -0.181431 -0.763792 0 0.298325 -0.00100921 0.766583 -0.0185213 2.19449 -0.0669431 0 0.301611 -0.369101 0.644867 -2.98019 -1.29194 -0.772079 0 0 -0.0227512 5.3674 0 0.494466 -0.487089 -0.303831 0 0 0 0 0.270047 0.458414 0 3.28222 -0.959805 0 0 0 0.0520782 0 1.44907 -8.28067 0 -0.019613 -1.11969 -2.672 0 0.458417 -2.16981 5.99031 -21.3566 0 0 0 0.303236 0.0669646 0 0 0 -0.0287686 0.111888 0 0.00385144 0 0.0217246 -0.0725109 0 0 0 0 -0.0980866 0 -0.0504439 0 -0.0198163 0 -0.450672 -0.364986 0 -0.00744911 0 0 -0.117809 0.00677733 -0.0416057 0 0.0173729 0 0.00834253 -0.255985 -0.0388178 0.0959251 -0.0552676 0 0.00156515 0 0 0 0.0012822 0 0 -0.0181503 0.0120558 0.115109 0.0796151 0 0 0.0185654 0 -0.0154618 0 0 0.0208652 -0.0549159 -0.105538 0.0288433 0 0 0.192693 0.000557827 -0.00987898 0.188747 -0.223624 0 0.211707 0.00761772 -0.0816344 0 0 0 -0.338826 0 -0.188933 -0.0951257 0 0.0132154 -0.0852845 -0.0939209 0 -0.00880951 0.0217021 -0.0738754 -0.161184 0 0.23002 0.303236 0.269164 0.0669646 -0.811681 -0.231922 0.396125 -0.390922 2.8104 -0.0543255 -0.030219 0.190166 -0.0141973 -0.063239 0.0896834 0.29399 -0.0786184 -0.151423 -2.24796 -0.875323 -0.273598 0.0378166 -0.0341821 -0.270373 -0.304097 0.403084 1.52969 -0.0299956 9.13667 -0.624458 -1.5936 2.33291 0.0196895 -0.870471 -0.743302 -0.0283951 -0.0102816 -0.0372783 -0.0957116 2.40412 0.536452 0.0624834 4.56938 -4.51972 -0.00724452 -0.0748299 -0.557606 -0.151466 -0.273233 -0.792286 -2.52058 -1.00062 0.177157 5.62734 -0.139945 0.206098 0.620547 0.639472 -0.0593439 -0.395285 -1.28014 1.19197 0.12795 -4.90813 -15.4203 -0.0285975 0.329794 0.0287554 -0.2549 0.781461 0.155684 0.181207 0.0492142 0.0699417 -0.0814762 -0.830557 15.1717 0.200189 6.12529 1.33601 1.80384 -7.09249 0.0316231 0.426404 -1.33137 -0.0378581 0.116913 0.234042 -0.535998 1.05016 -4.10277 0 +263 0 1.74655 0.569372 -0.000108155 -0.045138 0.358487 0.257954 -0.592158 -3.35157 -0.00300994 -0.132836 -0.180012 -0.43993 -0.000639879 0.0371189 -0.00412306 3.38381 11.8743 0.0562215 -0.0426093 0.180934 0.043275 0.059541 0.000828019 0.0704574 -0.701041 1.11596 0.0866008 -0.127271 0.235396 -0.0490074 0.0037276 -0.0704767 -1.01025 0.449134 -0.221868 -0.0264481 0.150204 -8.88215 -0.473145 0.0712504 -0.00282491 0.816781 -0.0684049 -0.0484292 0.00243722 0.175753 0.0468414 -0.423802 0.186056 0.539205 -0.392389 -17.0349 0.0434959 -0.015828 0.049832 0.778495 0.203378 0.0801459 -0.166513 0.0131642 -2.16436 0.282819 -1.82517 1.15618 -0.149899 -2.17172 -1.13028 0.336933 -0.0111608 -0.624372 -0.341166 -0.547598 -0.000357891 0.576307 -2.08326 -1.41512 37.7985 4.70383 13.3499 4.96695 -1.66778 12.9455 -0.978836 0.637681 1.14918 5.83035 -0.000668423 0.065177 -0.0410309 1.72754 -1.69053 0 0 0 0 0 -0.000108155 -0.045138 0.00601351 0 0 0 0 0.000704965 0 -0.0508669 0 0 0.00474853 0.00822825 -0.0471865 0 -0.00608572 0.0345628 -0.400771 0 0 0.0964969 0.000600467 0 -0.0531847 1.61469 0 0 0.0109836 0.286394 0 -0.238913 0 0.00964428 0 0 0.00157804 0 0 -1.03353 0.0110833 0.0658566 0 0.0940923 -0.0149807 0 0 -0.0590224 0 0.0121258 -0.498097 -0.0299969 0 0 -0.00942457 -0.0101228 0 0.00969839 -0.0790753 0.00516042 1.00894 -0.0808437 -0.0433265 0 0.0290527 -0.0831103 0.291664 -0.0150475 -0.269308 0 0 0 6.19147 -0.0480012 1.68984 0.0689583 -0.135823 0.818333 -0.00623928 0.0104335 -0.0181891 0.321689 0 0 0 0 0 0 0.358487 0 0.257954 0 0 0 0 -0.244459 -0.81915 0 0 -0.177607 0 -0.0359661 0 -0.0602608 0 0 0.735287 0 -0.815653 -0.0930306 -0.0358705 0.0676846 0 0 -0.464827 0 5.42484 0 -6.56467 0.0686065 0 -0.876103 -2.06586 -0.00772539 0 -0.031531 0 0 -0.110627 0 0.928714 2.16045 0 0 0.228132 0 0 0.551662 -3.53439 -0.798192 0 -0.411835 0 -2.96537 -0.0817087 -0.151978 -0.333527 -0.0186084 0.770057 -0.199144 -0.0967024 1.43811 6.6217 -0.0758721 0 0 0 -0.142579 0.0772779 0 0 0 0 0.114732 55.9748 4.37227 8.55833 2.0976 -1.27598 6.76297 0.0549409 -0.0342685 0.164866 0.832262 0 0 0 0 0 0 +264 0 -0.476125 0.0347301 -0.0187796 -0.00412598 -0.118234 -0.365115 1.82997 4.18483 -0.201514 0.802004 0.156012 0.65682 0.00177751 -1.45638 -0.0137957 1.9933 7.37675 0.125627 0.0228574 -0.715301 0.00772947 0.204106 -0.00277946 0.252156 1.42684 0.201595 -0.0240055 0.7482 2.17969 -0.179322 -0.0240059 -0.110625 1.49279 -0.312137 0.664496 0.0262949 0.381763 6.23769 0.327842 -0.629373 0.0134849 0.279756 0.0513224 -0.976713 0.0786956 -0.778814 1.39421 0.244302 -0.164612 1.49449 -0.655103 -7.6711 0.0418857 0.0393168 0.00438306 -1.82609 0.0660735 -0.0149459 -0.332168 -0.0180917 -1.03321 0.405422 -3.84595 -3.2166 -1.05787 -1.13366 -0.679212 0.790024 0.0252032 -0.171306 0.366539 -0.345495 -0.128871 0.719231 -1.44519 0.505529 -32.0241 -4.72459 -16.5097 -3.74621 0.57873 -18.759 -0.593914 -0.016329 -0.957742 -17.7081 -0.0215827 -0.0354091 -0.581479 -0.912791 -15.6538 0 0 0 0 0 -0.0187796 -0.00412598 0.000723732 0 0 0 0 -0.000177779 0 0.00549947 0 0 -0.00122815 -0.00651309 0.0156444 0 0.00153522 0.0532965 0.0883046 0 0 -0.309254 -0.000459222 0 0.0498546 0.477596 0 0 -0.0550108 0.222439 0 0.148893 0 -0.0240054 0 0 -0.0049534 0 0 0.0914429 -0.00245648 -0.0206307 0 0.00959173 0.0249348 0 0 -0.337433 0 0.00158027 -0.247422 -0.0141776 0 0 0.00211303 -0.00117475 0 0.0193545 -0.0602514 -0.0140924 -0.00534879 0.0101328 -0.0229936 0 0.0039387 0.072368 0.146619 -0.0186094 -0.155106 0 0 0 -0.731573 0.239086 -0.509363 -0.0295364 0.0754845 -0.0281754 0.00139903 -0.00581195 0.0286196 -0.0741525 0 0 0 0 0 0 -0.118234 0 -0.365115 0 0 0 0 -0.418252 -0.281034 0 0 0.0516387 0 -0.0053657 0 -0.00664908 0 0 0.318404 0 0.19577 -0.02976 -0.0904854 0.028292 0 0 -0.115572 0 -2.12406 0 0.0907881 -0.567972 0 -0.0937491 -0.182279 -0.0250744 0 -0.0467549 0 0 -0.01775 0 -1.11211 -0.284243 0 0 -0.0451116 0 0 0.059361 -2.50503 -0.203727 0 0.118912 0 -1.22681 0.0550989 -0.151411 -0.0944284 0.0680384 -0.0600848 0.0848608 -0.0670285 -0.211312 0.564396 -0.0344759 0 0 0 -0.0908081 0.0339213 0 0 0 0 -0.000781694 4.01265 -0.0156742 1.73156 0.243983 0.157518 0.390896 -0.0317719 -0.000621241 -0.0307627 0.3162 0 0 0 0 0 0 +265 0 0.305573 0.207418 0.0359562 0.311094 -0.3916 -0.139657 0.62079 2.03359 0.169691 -0.0370704 0.209397 -0.689065 -0.000826324 -0.11655 -0.010683 2.64168 6.43193 0.202098 -0.031479 2.01533 0.0509762 -0.0380887 0.00145609 0.0159705 0.0857658 0.941775 0.0468688 0.165564 0.87618 -0.0529752 0.0151288 -0.0718124 0.283132 0.489783 0.014203 0.0105215 -0.0917526 1.66779 0.217139 0.525532 -0.00521279 1.02785 0.0098798 -2.13971 -0.0119367 -0.0411693 0.271849 -0.249536 0.0522404 -0.687674 0.489558 -12.8776 -0.019183 -0.0036455 -0.481119 2.08656 0.13401 0.0577421 -0.233991 -0.0184184 0.0366647 -0.835959 -2.11093 0.879839 1.19148 -0.611526 -0.93115 -0.518929 -0.00458948 -0.403992 0.184454 0.149202 0.121007 0.0807588 0.784437 -1.87698 -7.2002 -0.525253 -7.27793 -0.0844875 0.00643988 -6.81107 -0.377939 -0.172316 -0.0926724 -7.52415 0.00327371 -0.031224 -0.077286 -0.673415 -6.29242 0 0 0 0 0 0.0359562 0.311094 0.00650442 0 0 0 0 0.000585176 0 -0.000382316 0 0 0.00565137 0.00879641 0.000814846 0 7.63845e-05 -0.0487947 0.0137231 0 0 -0.278357 0.000631333 0 -0.017566 -0.642786 0 0 -0.0343071 -0.214139 0 -0.0368002 0 -0.0205493 0 0 -0.00218214 0 0 0.0637004 0.00743668 0.0787019 0 0.0851447 0.047398 0 0 -0.0553054 0 0.0134103 0.515902 -0.0188293 0 0 -0.0117325 -0.0113494 0 0.0252755 -0.0560713 0.0316403 -0.694181 -0.0343773 -0.0207212 0 0.013645 0.0881269 -0.119688 0.000816548 0.312846 0 0 0 -2.22668 -0.272226 -0.384558 0.0160603 -0.0133171 -0.384186 -0.00732076 0.0119298 -0.0233068 -0.0997196 0 0 0 0 0 0 -0.3916 0 -0.139657 0 0 0 0 0.496257 -1.21871 0 0 -1.04628 0 -0.13629 0 -0.123714 0 0 0.929803 0 -0.444416 0.1884 -0.431269 0.10562 0 0 -0.709541 0 -5.12955 0 -1.27011 -1.22531 0 1.43845 -0.670441 -0.0614516 0 0.0708153 0 0 -0.222321 0 -2.65438 1.55376 0 0 0.171799 0 0 0.46671 1.0272 0.896729 0 -3.22644 0 -0.179772 -0.321683 -0.191425 0.657079 -0.307337 -0.377503 -0.148888 0.144991 2.66437 7.3739 -0.0181841 0 0 0 -0.354848 0.120394 0 0 0 0 0.338572 12.8886 6.06974 -5.4574 1.04107 -0.394826 1.30927 0.412972 -0.277617 0.969749 -1.39336 0 0 0 0 0 0 +266 0 1.30736 0.33236 0.081335 0.0315011 0.430181 -0.101713 0.565037 0.690138 0.430214 -1.0252 -0.0212326 0.333624 -0.0561114 -0.632333 -0.00306533 -1.00127 -0.586317 -0.459501 0.0572819 -2.89407 -0.172677 -0.459371 0.0697651 -0.34791 0.525079 -0.541861 -0.0100516 0.417551 1.43509 -0.0874061 0.194724 0.0597701 -1.55735 -0.0249613 0.360663 0.033451 0.446459 -6.27535 0.448735 -1.33759 -0.173991 1.54491 0.198445 -0.152757 -0.502483 -0.632811 0.807028 0.561884 -0.591275 2.64598 -0.402507 -0.263065 -0.0881348 -0.106094 0.767303 -1.59573 -0.511604 0.437844 0.421827 0.319953 -0.819962 2.09578 3.24133 -0.319364 -0.819468 -0.626151 1.58529 0.396916 -0.257269 0.78662 0.178046 1.14032 -0.243473 2.38995 -1.98195 -0.928212 35.6155 9.71226 1.35682 6.70233 -3.19918 6.17543 1.18417 -0.653674 0.214026 -2.51493 0.771263 -0.720682 -0.193653 0.264095 -5.18481 0 0 0 0 0 0.081335 0.0315011 0.0108548 0 0 0 0 0.00307206 0 -0.0356395 0 0 0.00437992 0.034214 -0.0937757 0 -0.0094934 -0.0397721 -0.335648 0 0 0.121461 0.00249511 0 -0.157439 2.29302 0 0 0.00422114 0.385293 0 -0.335316 0 0.0329967 0 0 0.0031266 0 0 -1.07328 0.0426068 0.0574132 0 0.155654 0.0128935 0 0 0.016929 0 0.0170556 -0.180744 -0.0592225 0 0 -0.00917658 -0.0217014 0 0.00044154 -0.0415184 0.00419599 0.341853 -0.126306 -0.0162968 0 0.0289397 0.0957749 0.195952 -0.0568461 -0.0276605 0 0 0 6.39716 -0.0376554 1.36542 0.0653584 -0.13417 0.83119 -0.006148 0.0112016 -0.0144992 0.22356 0 0 0 0 0 0 0.430181 0 -0.101713 0 0 0 0 -0.65573 0.753336 0 0 0.0905839 0 0.00145908 0 -1.75299e-05 0 0 -0.463992 0 0.134524 -0.132572 0.224515 -0.0581986 0 0 0.0886449 0 3.40319 0 -3.32555 -0.249024 0 -1.13478 -0.522106 0.0265658 0 -0.0858562 0 0 0.0846349 0 0.0103244 -0.746411 0 0 -0.0975773 0 0 -0.141852 1.19599 -0.637128 0 1.05744 0 -0.526621 -0.106258 0.587834 -0.211031 0.0520456 0.284949 1.25164 -0.214967 -1.18681 -8.39688 -0.0643769 0 0 0 0.254137 0.0823351 0 0 0 0 -0.272457 31.6813 1.85786 7.50537 1.186 -0.812356 4.15614 0.00542879 -0.0478637 -0.0641214 1.16225 0 0 0 0 0 0 +267 0 -0.27819 -0.246107 -0.148031 -0.169424 -0.0560917 0.117908 -1.59028 -3.16064 -0.938753 3.48442 -0.578621 -2.25148 0.0953694 -3.978 -0.416093 -0.0808383 -1.77638 0.973212 -0.636846 3.55947 0.365785 0.681241 -0.122119 1.16243 -1.0703 0.108259 0.0116278 0.00231981 0.384552 -1.05051 -0.360619 -1.61308 2.07311 0.0508221 -0.686676 -0.208011 -0.230626 6.83205 -1.14121 1.39416 0.291327 -0.436352 -0.395937 -8.24711 0.836707 0.446905 0.190488 -2.72998 0.943094 -3.26286 2.04222 -0.43986 0.88144 -0.643765 0.457189 6.56355 2.08382 -0.0428979 -1.83528 -0.530788 1.04717 0.276508 -6.83998 4.05368 1.76775 0.543463 -3.81494 -0.283541 0.539991 -2.31294 0.303926 -1.27046 0.582474 -0.2081 -0.202974 0.673764 -37.4299 -18.1358 10.4137 -13.4803 9.33389 -6.166 -4.70999 3.48652 -4.85228 5.5205 -1.28426 1.50241 -1.80659 2.34951 -1.38934 0 0 0 0 0 -0.148031 -0.169424 0.00352382 0 0 0 0 -6.5662e-05 0 0.00719543 0 0 0.00147888 -0.0356622 0.0704718 0 0.00904031 0.211236 0.0287289 0 0 -0.314519 -0.00259005 0 0.288542 -0.315042 0 0 -0.0668445 0.141995 0 0.469839 0 -0.0779207 0 0 -0.0195549 0 0 0.894741 -0.00101506 0.0200632 0 0.0458737 0.0527699 0 0 -0.303867 0 0.018983 -0.238751 -0.0369802 0 0 -0.00157215 0.000910072 0 0.0168827 -0.00139756 0.00323118 0.307736 0.00379395 -0.0240518 0 0.00506867 0.109032 -0.00320021 0.0709054 0.0651096 0 0 0 -4.49311 0.13073 -0.653206 -0.0798269 0.164477 -0.482283 -0.00125247 -2.9786e-05 0.00420512 -0.0608168 0 0 0 0 0 0 -0.0560917 0 0.117908 0 0 0 0 0.178715 -1.81449 0 0 0.52351 0 0.0896298 0 -0.111686 0 0 0.992978 0 -0.582228 -0.0167838 0.122627 0.103219 0 0 -0.716653 0 -7.60954 0 -0.31757 -0.940453 0 0.0595158 -0.548807 0.0262265 0 0.0127741 0 0 -0.273763 0 -2.4098 1.71005 0 0 0.181713 0 0 0.390802 -2.70472 0.088272 0 -3.52167 0 -0.579 -0.375014 -0.00120059 -1.34749 0.0606947 1.65658 -1.15966 0.177631 2.91617 12.4705 0.193303 0 0 0 -0.328131 -0.223158 0 0 0 0 0.343835 2.38332 -3.53675 2.29912 -0.990164 1.02551 0.210879 -0.394044 0.301664 -0.53201 -0.107341 0 0 0 0 0 0 +268 0 -0.621531 -0.104325 0.0850129 0.19032 -0.311716 -0.348605 -0.255323 1.27177 0.60706 -1.68672 -0.525778 -1.02316 -0.0491498 -2.20037 -0.245036 -2.05957 -8.38689 -0.485832 -0.521386 1.16135 -0.181104 -0.298812 0.0669375 -0.555708 0.511142 -0.497231 0.0179393 0.672462 1.39113 -0.719761 0.208386 -1.03348 -0.447223 -0.0736589 0.169936 -0.101189 0.390059 0.739729 -0.857067 -0.198436 -0.109007 0.778028 -0.166374 -4.45844 -0.128208 -0.633537 0.881214 -2.05655 0.435735 -2.61518 -0.330171 3.87109 0.786574 -0.560446 0.227611 4.27194 0.770864 -0.305037 0.631673 0.145255 -1.02918 0.319175 -1.50801 -2.74396 0.257092 0.71332 0.969474 0.0661158 -0.341397 0.634476 -0.963794 -0.964834 -0.178058 -0.0108381 -0.386005 -2.2794 -9.35122 1.99998 -5.43125 1.74192 0.306892 -5.02316 1.55084 -1.1007 2.33359 -5.14916 0.196787 0.561745 -0.836022 2.59003 -5.02599 0 0 0 0 0 0.0850129 0.19032 0.0172213 0 0 0 0 0.00504615 0 -0.0142506 0 0 0.00777589 0.0428383 -0.0676327 0 -0.00809688 -0.139208 -0.113468 0 0 -0.48554 0.00310639 0 -0.117427 -0.739171 0 0 -0.0633471 -0.229454 0 -0.0666042 0 -0.110029 0 0 -0.012181 0 0 0.403285 0.0694338 0.108448 0 0.236169 0.102563 0 0 -0.148634 0 0.0335961 -0.329692 -0.0501112 0 0 -0.0163312 -0.0306934 0 0.0313995 0.00299037 0.0456122 -0.359595 -0.00405914 -0.0516216 0 0.0244592 0.0740619 -0.0272621 -0.0150149 0.0485632 0 0 0 -2.38912 -0.216686 -0.0169995 -0.0280069 0.0586366 -0.297217 -0.0102779 0.0189355 -0.0419599 0.0215357 0 0 0 0 0 0 -0.311716 0 -0.348605 0 0 0 0 0.373998 -0.244946 0 0 -0.306566 0 -0.0172319 0 -0.0663733 0 0 0.470538 0 0.7289 0.154289 0.195226 0.0506599 0 0 -0.39747 0 -3.89747 0 4.79228 -0.881791 0 1.41244 2.02851 0.0406895 0 0.036336 0 0 -0.039657 0 -1.78502 0.39918 0 0 0.0279676 0 0 0.405845 -2.93057 0.578649 0 -1.03332 0 -0.638758 0.122289 -0.521198 -0.070908 -0.0439827 0.129505 -0.710389 0.0366435 0.222438 1.97268 0.133539 0 0 0 -0.324749 -0.0249761 0 0 0 0 0.10437 -39.4329 -1.37754 -8.83839 -1.15877 0.922839 -4.62809 0.170585 -0.171535 0.104506 -1.22618 0 0 0 0 0 0 +269 0 0 0 0 0 0.0116619 -0.318508 1.14057 1.53517 0 0 0.0113977 -0.985987 0 -0.543878 -0.00467029 0 0 0 0.221131 -2.09559 0 0 0 0 0.5356 0 0 0.642557 -0.411952 -0.495312 0 -0.115325 0 0 0.362481 0.0240559 0 0 -0.219543 -1.63272 0 0 0.0550139 -2.60077 0 -1.22559 0.476485 0.102489 -0.0556608 0.260539 0.138042 0 0.194688 0.38576 -0.374942 -0.855518 -0.644992 -1.27013 0 0 0.402263 1.45325 0 -0.00727314 -0.159423 -1.31429 0 0 0 0 0.913676 -0.180602 0 0.210477 0.373718 0 0 0 -2.61188 0 0.325655 -0.637302 0 -0.0507591 1.2025 -4.93061 0 0.0538004 0.998749 -1.86566 3.9333 0 0 0 0.111313 0.00493309 0 0 0 -0.0910859 -0.0185246 0 -0.0172426 0 -0.00162106 0.0148044 0 0 0 0 0.0347671 0 0.00400211 0 -0.0218981 0 -0.499093 -0.695038 0 0.00110042 0 0 -0.0324352 -0.00116944 -0.109221 0 -0.00559448 0 -0.000946258 -0.101531 -0.00207316 -0.0235013 -0.0127299 0 -7.68266e-05 0 0 0 -0.00028282 0 0 0.00100211 0.000489888 -0.0979861 -0.00419469 0 0 0.0105287 0 0.00305985 0 0 0.0259687 0.000168407 -0.0159267 0.0135484 0 0 -0.0749122 -0.0768269 -0.0135923 -0.223461 -0.0187341 0 0.0399568 -8.91952e-05 -0.217197 0 0 0 0.36265 0 0.0753528 0.0344258 0 0.00541978 0.00360947 -0.0271577 0 0.000646757 7.65531e-05 0.0137544 -0.0299198 0 0.0116619 0.111313 -0.318508 0.00493309 0.0696481 0.0107239 0.354052 0.114374 0.0771461 0.0192536 -0.024069 0.00938661 0.00570636 0.0280292 0.035733 -0.00781368 0.0240525 0.0666089 0.381368 -0.378506 -0.104938 -0.0477767 -0.0311024 0.0614553 -0.0738852 -0.135198 0.0357248 -0.00729647 2.99026 -0.00542258 -0.898322 -0.286643 0.00291863 -0.0815797 -0.376679 0.0026452 0.00641388 0.017718 0.00311165 -0.884488 0.00971448 -0.0156035 0.891849 -0.15614 0.00189376 0.0186394 -0.0871559 -0.0665348 0.178316 1.33423 -0.234761 -0.3737 0.0506747 -0.090219 -0.196404 -1.01013 0.0996004 -0.105572 -0.584626 0.0398542 0.739775 -0.100112 -0.154474 -0.241623 -2.03599 0.355398 -0.0585474 -0.00540407 0.285245 -0.275956 -0.108913 0.024975 0.00984537 -0.340539 0.0368578 -0.224828 1.45851 -0.0863018 2.78512 -0.00704615 0.238044 2.17545 0.00534273 -0.00683682 0.462097 0.380545 -0.00697389 -0.0243734 0.363395 -0.343931 1.10945 0 +270 0 0 0 0 0 -0.0488866 0.0724026 0.473947 1.08482 0 0 -0.0898117 -0.0936738 0 0.256048 0.118602 0 0 0 0.0838109 -9.00742 0 0 0 0 -0.0455563 0 0 -0.650944 0.753825 0.228659 0 0.846183 0 0 -0.0403703 -0.00361524 0 0 -0.637527 -2.29198 0 0 -0.186806 -1.47761 0 -0.283008 -0.536831 1.802 0.219635 0.272171 0.965505 0 0.11734 0.0733345 0.162251 -2.30178 -0.802643 -1.23221 0 0 0.797502 5.22092 0 1.05922 -0.0417952 -0.926228 0 0 0 0 0.783949 0.363161 0 0.272569 -0.594088 0 0 0 -1.1705 0 0.817657 -1.02892 0 0.639214 -0.164648 -1.88679 0 0.63111 -0.13745 1.13949 -3.718 0 0 0 0.0920529 0.0349667 0 0 0 -0.0200631 -0.0378282 0 0.00113517 0 0.000665172 0.0495184 0 0 0 0 0.0502485 0 0.0215357 0 0.258159 0 -0.278187 -0.363205 0 -0.00557243 0 0 -0.0549144 -0.000422981 -0.0585377 0 -0.00759252 0 -0.00189981 -0.108691 -0.0223946 -0.00384061 -0.0237772 0 1.34598e-05 0 0 0 -0.000380698 0 0 0.00157385 0.000984797 0.172624 0.0332747 0 0 -0.0088926 0 0.00648778 0 0 -0.00296572 0.0113148 -0.452279 -0.00615651 0 0 -0.0104701 -0.0578414 0.003221 0.0397048 -0.540641 0 0.266306 -0.0121093 -0.410643 0 0 0 0.0662416 0 0.0222826 -0.113128 0 0.00350729 -0.00604987 -0.264849 0 0.000243983 -0.00159466 0.000318102 -0.236746 0 -0.0488866 0.0920529 0.0724026 0.0349667 -0.505358 -0.069747 0.712375 0.0462967 1.4762 0.00604198 -0.0436726 0.34147 -0.00116369 0.0381141 0.151884 0.134296 -0.0688334 0.0702448 -1.45203 0.563729 -0.193156 0.0927795 0.191839 -0.233186 -0.116123 0.113839 0.753732 0.0169754 1.58674 -0.171863 -1.41161 0.425863 0.0281105 0.506803 -0.468647 0.0174329 -0.00385064 -0.0179292 -0.0364448 0.792408 0.298643 0.00920253 0.515051 -1.80601 -0.0123227 -0.0137067 -0.299035 0.1163 0.0397449 -0.0706166 -1.21771 0.323613 0.43202 3.78496 -0.546041 -0.521166 0.0455298 -0.165238 -0.279463 0.0446148 0.0460467 0.290178 -0.204079 -2.4375 -3.7474 -0.0306911 -0.304803 -0.0277425 -0.110663 1.0772 0.116234 -0.109894 0.0131369 0.317504 0.0176443 -1.09919 2.29188 -0.400844 -2.94913 0.0168729 -0.0689673 -1.3551 -0.0117232 -0.0921586 0.0778178 -0.723665 -0.00735456 -0.0179454 0.00977815 -0.034111 -0.281853 0 +271 0 0 0 0 0 -0.131625 0.122989 -0.14578 -0.960282 0 0 0.361323 0.508826 0 1.33793 0.249962 0 0 0 0.31309 -4.51231 0 0 0 0 -0.324326 0 0 -0.516489 -3.1815 0.411806 0 1.39709 0 0 -0.0716068 0.0142667 0 0 0.412703 -1.64102 0 0 -0.204008 1.8087 0 -0.1027 -1.23465 2.43015 0.159522 -0.23587 0.648272 0 -0.766282 0.00344873 0.109955 -0.764392 -0.298652 0.877904 0 0 0.973564 -0.475223 0 1.0574 0.435796 0.910649 0 0 0 0 -0.109561 0.613866 0 -1.23269 0.124679 0 0 0 2.91628 0 0.451789 3.64255 0 0.361243 1.57264 0.683956 0 -0.289955 2.46212 -3.90437 12.0441 0 0 0 -0.185192 0.0269538 0 0 0 -0.00159019 0.0423561 0 0.0110586 0 0.00141689 -0.0273631 0 0 0 0 0.116664 0 0.0294808 0 0.174435 0 -0.0877008 -0.299085 0 -0.0215012 0 0 -0.266854 0.00145229 -0.0983695 0 0.0154257 0 0.00213641 -0.230872 -0.0866374 0.0321079 -0.0745785 0 4.54063e-05 0 0 0 0.000774807 0 0 -0.00415628 -0.00142548 -0.109674 0.0495174 0 0 -0.00500464 0 -0.00716898 0 0 0.0478499 -0.0196994 0.0923914 -0.0667304 0 0 0.172506 0.140921 0.0345801 0.357769 0.327478 0 0.311233 -0.000162365 -0.1245 0 0 0 -1.28294 0 -0.147725 -0.121359 0 -0.0111999 -0.0356293 -0.17494 0 -0.00136976 -0.00448757 -0.0237611 0.171548 0 -0.131625 -0.185192 0.122989 0.0269538 -0.0220171 0.027068 -0.0149798 0.123113 1.57142 -0.0441207 0.0358139 -0.484056 -0.0206364 -0.143741 0.0817991 0.245563 -0.0476704 -0.0273736 -1.75614 -0.239292 -0.188411 -0.0483052 -0.405617 -0.195492 0.168226 -0.0875298 1.57174 -0.0171911 3.31894 0.227955 -1.1703 0.834616 0.0225326 -0.0419547 -0.537031 -0.107907 0.00233074 0.00361748 0.0253914 -0.843057 0.333413 -0.00892057 2.13395 -1.89736 -0.00210202 0.0339853 -0.221962 -0.0683979 -0.180559 -0.561584 0.358172 0.122284 0.0144029 1.18613 -0.0750181 -0.389213 -0.00273751 -0.0470615 0.210214 0.105535 -0.519279 0.714906 -0.0443395 -2.10272 -3.48438 -0.229311 0.0636629 -0.041777 -0.0684298 0.334231 0.222458 -0.0569513 0.0223805 0.13794 0.0135811 -0.586649 1.90009 0.290451 1.04394 0.0834863 -0.456923 2.2972 0.0229425 -0.301953 0.884885 -0.93983 0.00286598 -0.222355 0.512858 -0.722021 1.23662 0 +272 0 -0.450872 -0.498727 -0.0350717 0.0208915 0.0794917 0.032327 -0.816334 -1.44062 0.141611 -0.000700637 -0.0042566 0.430614 0.0344584 -1.13232 0.0643889 -3.00207 -13.4467 -0.0780536 0.228958 -0.9194 0.00107743 0.214166 -0.0369622 0.104702 -0.0753713 -0.799315 -0.258788 -0.22 -0.486296 -0.0344129 -0.0458285 0.302145 0.706535 -1.13816 -0.123922 -0.00975188 -0.468326 1.85913 -0.0732488 -0.114087 0.0909841 -2.36537 -0.046761 -1.36759 0.241377 0.129582 -0.296918 0.77516 0.0919658 -1.23872 -0.574816 -3.75014 -0.30936 0.239162 -0.328129 -2.73219 -0.960272 -0.0859386 -0.169994 -0.110241 -0.71835 0.335666 -1.42274 0.351576 0.962285 0.713395 -0.930134 -0.390494 -0.0984949 -0.62933 -0.589204 0.0126098 0.901052 -0.174157 0.299344 0.693752 -9.02855 -1.19757 0.899312 -1.96463 0.986891 -0.927767 -0.449277 0.403049 -0.128658 2.55163 -0.339053 0.318993 -0.0948183 -0.406604 1.75824 0 0 0 0 0 -0.0350717 0.0208915 -0.000878495 0 0 0 0 -6.64704e-05 0 -0.0108936 0 0 -0.000178384 -9.2405e-05 -0.0134706 0 0.000474292 -0.201874 -0.113133 0 0 -0.840999 -4.5666e-06 0 0.0530874 -3.41334 0 0 -0.122872 -0.875077 0 0.209333 0 -0.283347 0 0 -0.0417815 0 0 0.513298 -0.00132434 -0.00357445 0 -0.0174871 0.00232452 0 0 0.137018 0 -8.91153e-05 0.149347 0.000809441 0 0 -3.12465e-05 0.002425 0 0.000301738 -0.0594334 -0.0012207 -1.28772 -0.000819871 -0.0884248 0 -0.000269458 0.124709 -0.303366 -0.0117967 -0.259012 0 0 0 -0.820253 0.0153043 0.0548296 0.000839466 -0.000950738 -0.204241 6.23055e-05 -7.67585e-05 0.00155599 0.0468287 0 0 0 0 0 0 0.0794917 0 0.032327 0 0 0 0 -0.0897356 -0.603585 0 0 -0.0871003 0 -0.000224081 0 -0.00884595 0 0 -0.81528 0 0.444417 -0.00979342 -0.0425077 -0.138307 0 0 -0.13502 0 -7.7148 0 2.10069 -0.30075 0 -0.253568 0.947668 -0.0061133 0 -0.00313774 0 0 -0.0600988 0 -2.1931 -1.13781 0 0 -0.214377 0 0 -0.155472 -0.600839 0.0167494 0 0.639971 0 0.213097 -0.0643482 0.0800194 0.0191407 0.173364 0.379965 -0.0885848 -0.12455 0.468614 2.83551 -0.00740772 0 0 0 0.0186337 -0.0392353 0 0 0 0 0.18918 -2.29123 0.91811 -0.146216 -0.000688688 0.0021986 -0.223879 -0.0446985 0.0315626 -0.0199058 0.17206 0 0 0 0 0 0 +273 0 -0.773129 -0.191908 0.0629742 0.0655229 -0.186902 -0.154832 -0.659181 -0.282517 0.55195 -0.79657 -0.0942841 -1.24232 -0.0471834 -2.11204 -0.0653488 0.184406 0.0953816 -0.113322 -0.113846 0.628644 -0.0703719 0.0756606 0.0713764 -0.35031 -0.128841 0.0227527 0.235073 0.160807 0.187156 -0.503789 0.208308 -0.451072 0.333889 0.764348 -0.145622 -0.00453703 0.707574 1.81514 -0.200368 -0.0342942 -0.0777736 2.66632 -0.00138525 -4.83059 -0.0609338 -0.24163 0.151066 -0.650372 0.0546747 -0.569367 -0.721378 -1.03284 0.282385 -0.0139724 -0.106037 1.36004 0.718995 0.427411 0.374516 0.120639 -1.15521 -0.52079 0.160574 -1.34251 -0.551009 0.65806 0.423696 0.876928 -0.386063 0.564454 -0.69093 -0.744624 -0.987941 1.3855 0.311414 -1.08551 -3.29254 0.0176721 1.2017 -0.377703 0.140121 -0.592686 0.866308 -0.683508 1.15489 0.438832 0.0855914 0.0731838 -0.0212897 0.56967 -0.676675 0 0 0 0 0 0.0629742 0.0655229 -0.000421635 0 0 0 0 -2.81218e-05 0 0.00866329 0 0 2.05587e-05 -5.29614e-06 -0.0125788 0 -0.00211345 -0.112482 0.0521272 0 0 -0.156834 -2.16564e-06 0 0.0889838 -0.969016 0 0 -0.0227105 -0.289613 0 0.238862 0 -0.0295843 0 0 -0.00191887 0 0 0.987831 -0.000560203 0.00147446 0 -0.0083962 -0.00893283 0 0 0.151568 0 -2.06694e-05 0.179318 -0.00136383 0 0 6.56749e-05 0.00120682 0 -0.000119162 -0.235952 0.00363992 -3.82125 -0.00180892 -0.0447377 0 -9.58402e-05 -0.0889404 -1.08606 0.00734851 -0.394921 0 0 0 -2.0352 -0.0126347 -0.175871 -0.00117868 0.00385594 -0.422683 -6.19212e-05 0.000241006 -0.00283101 -0.0324926 0 0 0 0 0 0 -0.186902 0 -0.154832 0 0 0 0 0.224715 -0.44371 0 0 -0.186872 0 -0.00788011 0 -0.0855077 0 0 0.368492 0 0.197298 0.0212203 -0.101566 0.0509137 0 0 -0.62907 0 -7.27105 0 3.02834 -0.884927 0 0.493712 0.891501 -0.0013822 0 0.0145877 0 0 -0.0696224 0 -2.65311 -0.109528 0 0 0.0170213 0 0 -0.344092 -1.18966 0.0821768 0 -2.67492 0 0.153731 0.0371925 -0.0595776 -0.283266 -0.10651 -0.188632 -0.381301 0.171267 1.791 1.21185 0.00267109 0 0 0 -0.26646 -0.0998808 0 0 0 0 0.464053 -15.3428 -0.955404 -0.850151 -0.497485 0.511898 -1.02029 -0.02958 0.0166344 0.0285374 -0.176954 0 0 0 0 0 0 +274 0 0.13287 0.0752641 0.209246 0.0213784 -0.0676118 -0.3745 1.02021 2.8058 0.193437 -3.3358 0.00798858 0.187492 -0.188079 -1.62883 0.0217333 0.937141 5.70263 -1.10458 0.160925 -0.695938 -0.466234 -0.0497542 0.226364 -1.38644 1.22627 -0.0881503 0.332396 0.580291 0.385872 -0.142356 0.434825 -0.488701 -0.994405 0.690574 0.645438 0.0778296 1.46997 -4.30466 0.659853 -0.309908 -0.431739 4.01546 0.385817 -2.71536 -0.944577 -0.626082 0.680631 0.321388 -0.57701 0.641059 -1.8826 -4.02889 -0.138884 0.161466 -0.0709475 -0.381658 0.237406 -0.0346038 1.63839 0.550578 -0.990362 0.3862 3.631 -3.17966 -1.33602 0.24169 3.84737 1.9614 -0.135164 2.32482 -0.078946 0.142164 -1.6099 -0.253209 -0.210352 -2.37918 18.5301 9.66392 -5.77172 6.18173 -4.50594 4.42981 3.50558 -2.98775 3.97236 -4.07005 1.32681 -1.51043 1.43658 -0.765165 -1.39515 0 0 0 0 0 0.209246 0.0213784 0.00295498 0 0 0 0 0.000226389 0 -0.0283886 0 0 0.000126354 -6.14927e-05 -0.177705 0 -0.0286612 -0.273791 -0.1801 0 0 -0.155846 -4.46104e-06 0 0.154952 -0.673312 0 0 0.0011632 -0.4001 0 -0.0264788 0 0.0231043 0 0 0.0168909 0 0 -0.354143 0.0045148 0.00314235 0 0.0589123 -0.0295246 0 0 0.109139 0 0.000262357 0.19198 -0.00185775 0 0 -0.000421152 -0.00821904 0 0.000433522 0.00197224 0.00797847 0.740836 0.00314224 0.00104543 0 0.0181248 0.118705 0.164974 0.0305561 0.0342167 0 0 0 0.254175 -0.0347363 0.0631153 -0.0020153 0.0051096 0.054232 -0.000155966 0.0003145 -0.00438846 0.0774533 0 0 0 0 0 0 -0.0676118 0 -0.3745 0 0 0 0 -0.0906701 1.07032 0 0 -0.0416528 0 -0.00785326 0 -0.0590754 0 0 0.0948993 0 0.463719 0.012506 0.0451396 -0.00780935 0 0 -0.423322 0 -0.384181 0 0.222938 -0.482245 0 -0.0818463 0.426946 0.0254205 0 -0.000384094 0 0 0.117228 0 -1.20608 -1.41718 0 0 -0.194998 0 0 -0.0339026 -0.649803 0.0395131 0 1.29569 0 -0.146431 0.15335 -0.0903736 0.247355 -0.0156018 -0.526599 0.192228 -0.00633619 -0.750152 1.64844 -0.0200125 0 0 0 0.158459 0.00845596 0 0 0 0 -0.284787 1.90325 0.529663 -0.0144527 -0.569852 0.729414 -0.740467 -0.0592103 0.0640211 -0.0169073 -0.0273087 0 0 0 0 0 0 +275 0 0.376225 0.31034 0.0472976 0.293328 -0.121784 0.215083 -0.513709 -0.925273 0.975392 -0.162114 0.0687356 -0.508905 0.000265309 -0.87305 -0.0467753 2.159 8.04949 0.276838 -0.119415 1.68566 0.103819 0.0193687 0.0163886 0.0522217 -0.548269 0.558809 0.220239 -0.629057 -1.32886 0.0148569 0.128189 -0.40612 0.194639 1.04691 -0.301151 0.0065968 0.903856 -0.325977 0.145499 1.01378 0.00369878 3.99325 0.0192549 -2.69805 0.0631853 0.683027 -0.907878 -0.921052 -0.172222 0.870089 -0.204343 -2.96028 0.345611 -0.114677 0.216375 1.80588 0.313864 0.571763 -0.0518619 0.0199933 0.645008 -2.04648 0.0791734 -1.19582 -1.19393 0.778475 0.76482 0.916992 -0.501532 -0.0342079 -0.0518402 -0.0812157 -1.26055 0.977742 0.811563 -3.1671 1.25601 1.20529 0.201238 0.558751 -0.39309 2.35841 0.37298 -0.00635383 0.361948 2.04119 -0.0197637 -0.0306865 0.163915 0.0656848 1.84704 0 0 0 0 0 0.0472976 0.293328 -0.00181284 0 0 0 0 -0.000542323 0 -0.0207247 0 0 -0.00118774 -0.000624534 -0.0173645 0 -0.00258937 -0.0175886 -0.121927 0 0 -0.0831579 -2.19572e-05 0 0.0239598 -1.07792 0 0 -0.0138408 -0.173418 0 0.0576783 0 0.00788179 0 0 0.000371386 0 0 -0.212526 -0.0107955 -0.0245346 0 -0.0358413 0.0488697 0 0 -0.0657004 0 0.000906928 0.00766397 0.00608834 0 0 0.00168806 0.0054284 0 -0.00471317 -0.0241783 -0.0103114 -0.22135 0.0151407 -0.0397852 0 -0.00517383 0.0136474 -0.00328507 -0.0455498 -0.181733 0 0 0 3.04873 0.232352 0.409453 0.0155428 -0.00621605 0.160776 0.000856465 -0.000661227 0.01512 0.0472639 0 0 0 0 0 0 -0.121784 0 0.215083 0 0 0 0 0.0786152 0.872557 0 0 -0.431312 0 -0.0185792 0 0.0117463 0 0 -0.28537 0 -0.430542 0.00351459 -0.0552114 -0.044838 0 0 0.0774077 0 0.813234 0 -1.01851 0.303739 0 0.0481834 -0.396936 0.0109215 0 0.00257444 0 0 0.105488 0 0.0529375 -0.670723 0 0 -0.0852632 0 0 -0.336521 -0.674099 -0.127883 0 2.43098 0 -0.646476 0.0101391 0.0671103 -0.57598 0.0865361 0.624951 0.567295 -0.139713 -0.485902 4.42361 -0.0275542 0 0 0 0.517084 0.0455481 0 0 0 0 -0.252221 9.93399 2.98422 -0.939609 0.895623 -0.784678 0.949439 0.160611 -0.151956 0.209467 0.0549163 0 0 0 0 0 0 +276 0 -0.694354 0.0531061 0.0151804 0.0351826 -0.238304 -0.0335704 -0.117678 0.414647 0.257007 -0.379641 0.111065 0.116903 -6.81001e-06 0.0475759 -0.0202658 -0.505545 -0.375149 -0.109159 -0.0621598 3.52763 -0.0328468 -0.127723 0.00706546 -0.168374 0.15669 -0.193396 -0.0630441 0.352405 0.547254 -0.163842 0.0470356 -0.105882 -0.0677411 -0.169681 0.0114018 0.0115049 -0.158747 1.21464 0.119372 1.15227 6.46073e-05 0.0660836 0.0109379 1.11028 0.00944971 0.198732 0.422053 -0.332435 0.0494405 -0.381787 0.0458233 3.48959 0.1248 -0.00850898 -0.0966722 2.63811 0.853484 0.960579 0.182797 -0.0107368 -1.16774 -4.18588 1.13481 -0.269106 0.477229 -0.102301 0.134236 -0.304205 -0.139165 0.989311 -0.366015 0.119486 0.195462 0.251983 -0.194025 1.31046 -2.24658 0.553615 -0.971246 -0.257475 0.464845 -2.44525 0.40031 -0.304169 0.191169 -0.985934 -0.00295577 -0.0198552 -0.0921549 -0.151653 -0.760651 0 0 0 0 0 0.0151804 0.0351826 -0.00194618 0 0 0 0 -0.000338418 0 0.000373713 0 0 -0.000133833 0.000786466 -0.0059761 0 -0.000829579 -0.0117019 0.00310291 0 0 -0.0670386 1.88629e-05 0 0.0278784 -0.167352 0 0 -0.0132222 -0.0364966 0 0.100998 0 0.00325802 0 0 9.42179e-05 0 0 0.599973 -0.0067095 0.00212439 0 -0.0385837 -0.0162575 0 0 0.156259 0 0.000631149 0.520714 -0.00936184 0 0 0.000908673 0.00633657 0 -0.00402342 -0.0946348 0.0182787 -0.639026 -0.000650936 -0.0247617 0 -0.00118835 0.00610774 -0.306904 0.0430768 -0.0519355 0 0 0 -1.09299 0.0372275 -0.0323774 -3.63261e-05 0.0384095 -0.487342 3.57953e-05 0.00167129 -0.0152753 -0.0706706 0 0 0 0 0 0 -0.238304 0 -0.0335704 0 0 0 0 0.208864 0.0938012 0 0 -0.261152 0 -0.0355742 0 -0.00811292 0 0 1.03208 0 0.133358 0.0104459 -0.174093 0.160966 0 0 -0.00642695 0 2.81637 0 2.52274 0.183208 0 0.434701 0.686303 -0.028363 0 0.0122515 0 0 0.000658287 0 1.05723 1.91064 0 0 0.301631 0 0 -0.345047 0.962188 0.104476 0 0.0406356 0 0.35868 -0.0547002 -0.0173773 0.255878 -0.0580929 0.21079 -0.397764 0.204821 2.39789 11.1208 0.0238875 0 0 0 0.294131 -0.137917 0 0 0 0 0.255945 -10.097 -0.424984 -0.457905 -0.288144 0.203743 -0.507595 -0.0532749 0.0521335 -0.0389912 0.0278212 0 0 0 0 0 0 +277 0 0.50709 0.443876 0.00355429 -0.0984714 0.0850492 0.228492 -0.704201 -1.66622 0.190619 0.037357 -0.275342 -0.337233 0.000979464 0.349614 -0.0642615 0.763894 3.37902 0.00857322 -0.180425 5.96401 -0.0103373 -0.490982 0.00397376 -0.216562 -0.560927 0.47956 0.0803141 -0.0578882 0.859446 -0.0285573 0.0285021 -0.589317 -1.37699 0.399121 -0.354315 -0.0462501 0.140269 -4.74947 -0.503985 2.40135 0.021113 0.753951 -0.0866365 1.29624 0.208725 1.04048 0.227405 -1.50307 0.287203 -0.619708 0.218158 1.86586 0.519788 0.141589 -0.21173 -0.221597 1.07788 -0.49276 0.231485 -0.0676369 -0.85213 -2.46168 1.78464 0.574293 0.537839 -0.562466 0.504122 0.0464859 -0.0888088 0.832474 0.0931816 -0.543528 0.0125369 -2.22991 0.507965 0.928955 18.1714 3.20614 4.4827 2.30672 -1.05974 4.00442 -0.0144721 0.254426 -0.70688 2.00026 -0.065287 0.0526207 -0.279471 0.242375 -1.19458 0 0 0 0 0 0.00355429 -0.0984714 0.00208723 0 0 0 0 0.000716666 0 -0.0188318 0 0 0.000637992 -0.000920518 -0.0263184 0 -0.00562234 -0.0655843 -0.0755342 0 0 0.257193 -6.62257e-05 0 0.0192986 0.174642 0 0 0.0478781 -0.11633 0 0.0511997 0 0.0326397 0 0 0.00842031 0 0 0.110571 0.0143386 0.0153736 0 0.0417062 -0.091826 0 0 0.285618 0 -0.00172868 0.171456 -0.00872805 0 0 -0.00297987 -0.00740181 0 0.00868728 -0.110947 0.0221873 1.05149 -0.0267472 0.028229 0 0.0367417 0.0663993 0.0779338 0.0431822 0.102969 0 0 0 -3.93596 -0.27512 -0.457044 -0.0212421 0.0275519 -0.363348 -0.000961436 0.00129133 -0.0206884 0.0191076 0 0 0 0 0 0 0.0850492 0 0.228492 0 0 0 0 0.0043743 -0.793422 0 0 0.135784 0 -0.0322126 0 -0.105113 0 0 1.20342 0 -0.736597 -0.0633564 0.00674602 0.170022 0 0 -0.762731 0 0.842983 0 -2.89175 -0.179547 0 -0.481862 -1.24239 -0.0246002 0 -0.00791086 0 0 -0.12209 0 -0.322413 1.9396 0 0 0.291552 0 0 0.309912 0.570224 -0.150419 0 -2.66923 0 -0.00746072 -2.77294e-05 0.0387524 0.431208 -0.114804 -0.18677 -0.325574 0.0915654 1.1349 -2.6137 -0.0237277 0 0 0 -0.462614 -0.0147382 0 0 0 0 0.339425 13.1168 -0.324325 2.97211 -0.169773 0.19969 0.451944 -0.179969 0.187452 -0.172442 0.371447 0 0 0 0 0 0 +278 0 0 0 0 0 -0.128651 -0.0508837 1.52214 2.49219 0 0 -0.0750587 -0.267127 0 0.423899 0.0141333 0 0 0 0.0534348 -1.69915 0 0 0 0 0.204579 0 0 -0.0502596 2.75411 0.174718 0 0.0518011 0 0 0.199649 -0.0548986 0 0 -0.790708 -0.00136682 0 0 -0.342541 -1.79908 0 -0.0106414 0.451622 0.0920462 0.42556 1.21861 0.553703 0 0.270787 0.25087 0.38914 0.900002 0.434724 0.854042 0 0 2.44217 -1.33045 0 1.63085 -0.101707 -0.469547 0 0 0 0 1.29029 -0.374032 0 0.0350081 -0.156146 0 0 0 -7.40946 0 1.25981 -5.45221 0 1.13878 -2.07618 -2.77778 0 1.7909 -3.43861 3.6533 -8.08068 0 0 0 0.0755604 0.0124851 0 0 0 -0.063502 -0.0362329 0 -0.00860503 0 -0.00373898 0.0426443 0 0 0 0 0.199943 0 0.0318482 0 0.365087 0 -0.382847 -1.05747 0 -0.00501609 0 0 0.0849661 -0.00231867 -0.246909 0 -0.0124614 0 -0.00199788 -0.183306 0.00389102 -0.0224015 -0.055665 0 -0.000424917 0 0 0 -0.00091024 0 0 0.000826511 -0.00456022 0.150186 -0.0772094 0 0 -0.0712182 0 0.00100923 0 0 -0.0299598 0.0130716 -0.217136 -0.0346373 0 0 0.0624867 0.0738695 0.0816097 0.0331347 0.350398 0 -0.14868 0.0143027 0.504004 0 0 0 -1.61538 0 -0.156532 -0.0452126 0 -0.0257103 0.0225799 -0.0695032 0 0.00385007 -0.0110311 0.0155425 0.0410975 0 -0.128651 0.0755604 -0.0508837 0.0124851 -0.2756 -0.0776447 0.328638 0.187667 2.27408 0.0023342 -0.0111359 -0.0792604 -8.32093e-05 -0.00306044 0.0531159 0.146795 0.0913547 0.032211 0.318858 -1.18461 -0.65587 0.0547404 -0.0969091 -0.0263502 0.265849 0.0868983 0.631208 -0.0189553 7.67539 -0.178911 -3.70293 0.904327 0.010741 0.671767 -1.79656 -0.0175723 -0.00247101 -0.000537433 -0.0421708 0.79174 0.510735 0.00918904 3.3156 -0.819896 0.00433819 0.00518253 -0.209574 -0.137393 0.0892533 0.4141 2.50677 -0.0267084 0.0168442 2.18029 -0.180411 0.125782 -0.0437597 0.0578905 -1.59396 0.125356 1.59841 0.846078 0.00566281 -1.01679 -2.4905 0.147369 -0.021304 -0.0421666 -0.125548 0.41474 -0.366782 -0.147366 -0.0419397 0.125393 0.135694 -0.672952 51.2031 7.86803 -6.04869 3.00205 -0.549279 -2.19455 0.00534959 0.268695 -0.92222 0.218389 -0.0561028 0.201919 -0.598937 0.455867 -0.800107 0 +279 0 0 0 0 0 -0.309336 -0.207987 1.9595 4.84293 0 0 0.0112769 -0.351966 0 -0.523474 -0.0835364 0 0 0 -0.413865 1.04426 0 0 0 0 0.812938 0 0 -0.122979 -2.27583 0.16481 0 -0.148296 0 0 0.304861 -0.0302484 0 0 -0.45241 0.137105 0 0 -0.225121 -4.06722 0 -0.0159391 -0.428631 -0.459025 0.371256 3.48351 -0.374249 0 0.388936 -0.2676 -1.01122 2.84901 0.407061 0.852481 0 0 -0.4768 -0.488811 0 -2.02737 -1.8255 -1.77523 0 0 0 0 0.74235 -1.32252 0 3.3623 0.718151 0 0 0 -14.838 0 -0.618854 3.8497 0 -0.296567 1.5393 -5.77703 0 0.9579 1.11754 -1.34333 10.692 0 0 0 0.0737526 0.00549344 0 0 0 0.0896974 0.0172509 0 0.012834 0 -0.00806875 0.105451 0 0 0 0 0.300777 0 0.0412416 0 0.713268 0 0.57373 -0.643656 0 0.0100164 0 0 0.120202 -0.00445783 -0.0633079 0 0.00845627 0 0.000269098 -0.143134 0.0313977 -0.0559798 -0.0180967 0 -0.000557227 0 0 0 0.000479456 0 0 0.00733551 0.00489901 -0.541659 -0.0213919 0 0 0.0393276 0 0.0013773 0 0 0.0791412 -0.0490528 -0.123125 0.0180543 0 0 0.244858 0.0445969 0.0428564 -0.0655273 0.17184 0 0.362289 -0.0230357 -0.113839 0 0 0 -1.51562 0 0.00859391 -0.401442 0 -0.0105109 -0.014492 -0.211565 0 0.00503378 -0.0183991 0.0172298 0.0905524 0 -0.309336 0.0737526 -0.207987 0.00549344 0.452863 0.0407444 -0.133418 0.302837 -0.890586 -0.00922931 -0.0526592 0.341118 -0.000982248 0.0595007 -0.0279356 -0.0168878 -0.0941587 -0.0599706 -0.663826 0.52661 -0.360714 0.188575 0.000476311 -0.154184 -0.354789 -0.0718009 -0.109928 -0.00642296 -2.41313 0.355184 -0.911819 -0.429892 -0.0044438 0.96594 -0.88192 -0.0011518 0.00465469 0.0486991 0.0377025 -0.847796 -0.218233 -0.00408424 -1.51584 -0.728829 -0.0124079 0.0350899 -0.222296 0.0185583 0.0575566 0.180974 6.1755 0.685725 0.0555712 2.1079 0.0621515 -1.67012 0.121997 -0.528507 0.31528 -0.0222107 -0.084418 2.1633 0.303779 2.64733 10.2056 -0.361605 -0.0401225 -0.177619 0.0131675 0.583434 0.0720645 0.145473 -0.0246808 -0.204975 -0.00699423 0.209683 12.6084 -0.555936 -7.1376 1.2087 -2.48378 3.1681 -0.178516 -0.492304 0.583136 -0.692305 0.104452 -0.310229 0.378043 -0.283775 0.580475 0 +280 0 0 0 0 0 0.508505 0.589213 -1.39838 -4.06678 0 0 -0.190608 2.65716 0 4.53287 0.419584 0 0 0 0.716747 0.587641 0 0 0 0 -0.727964 0 0 -1.00205 3.26615 1.20328 0 2.24576 0 0 -0.339986 0.0861775 0 0 -3.08504 0.716745 0 0 -0.626539 11.3476 0 0.82552 -0.432414 4.46754 -0.0451985 0.516772 -0.367217 0 -0.235759 0.041712 0.262929 -1.18915 -0.175042 -3.32437 0 0 -0.319495 5.81509 0 -0.127698 -0.338884 1.58839 0 0 0 0 -0.713781 1.14678 0 -5.1212 -0.868476 0 0 0 10.176 0 5.07751 -3.53902 0 2.24824 -2.24784 5.65801 0 3.71635 -4.24341 7.79236 -11.3348 0 0 0 0.468728 0.129019 0 0 0 0.14824 0.0131959 0 0.0307939 0 -0.0154876 -0.0696257 0 0 0 0 0.0722674 0 0.0133999 0 -0.241037 0 0.599853 0.931013 0 -0.00504076 0 0 0.126231 -0.00428678 0.178488 0 -0.00877302 0 0.00046463 0.139308 0.00411795 -0.0704226 0.0320119 0 -0.000933025 0 0 0 -0.00060418 0 0 0.00257573 -0.000935799 -0.305207 0.0422093 0 0 0.0278864 0 0.00204759 0 0 0.0127546 -0.00727285 -0.236392 -0.00187037 0 0 -0.00144351 -0.0796321 0.0557854 0.0118693 -0.248374 0 0.287219 0.00241977 0.132457 0 0 0 0.783528 0 0.170029 -0.170637 0 0.0117864 -0.00198658 0.00554855 0 0.00273765 -0.00801753 0.0222752 -0.0787575 0 0.508505 0.468728 0.589213 0.129019 -0.774449 -0.0781549 1.43324 -0.652686 3.53437 0.0181423 -0.169646 1.32172 -0.00332647 0.0647018 0.216173 0.257621 -0.130167 0.461265 -1.28409 0.716119 0.318177 -0.445535 0.349892 -0.16976 -0.891323 0.228804 1.59876 0.0224604 3.86808 -1.31599 3.11419 1.45366 0.0336368 -2.40933 1.19001 0.00400797 -0.0325301 -0.121589 -0.25242 1.69897 0.526692 0.025815 2.73088 -3.17437 -0.0225587 -0.156363 -0.374349 0.146273 0.270699 0.259905 -7.6369 -2.33203 0.0332886 1.81716 -0.605487 2.75368 -1.80365 1.80251 -1.61674 0.19634 1.18687 -4.05792 -0.188992 -3.93002 -6.54585 0.631052 -0.387589 0.298378 -0.373929 0.323595 -0.523762 0.0293373 -0.237757 0.108674 0.0913937 -1.51542 -43.0621 -15.2944 18.68 -5.90116 7.78125 -8.20755 -2.06288 2.42516 -2.5493 2.33232 -0.803398 1.23204 -1.45564 1.41776 -1.58302 0 +281 0 -0.19063 -0.136701 0.155879 0.0194966 0.00524396 -0.315686 0.474946 1.47203 -0.692807 -2.78838 0.0804515 0.418779 -0.143675 -0.204337 0.166955 -1.61125 -4.83508 -0.940911 0.444539 -4.10892 -0.478906 -0.107397 0.101987 -1.39436 0.963391 -0.583699 0.0153615 0.415872 0.704614 -0.0310697 0.099926 0.815414 -0.438628 -0.178756 0.488313 0.102722 0.604755 -0.254499 0.41395 -1.99625 -0.339451 1.56504 0.255079 -0.291984 -0.755707 -0.972039 0.567483 2.12657 -0.68927 0.378177 -3.17083 5.26517 -0.459358 0.0493151 0.374585 1.91833 -0.109843 -1.93345 1.89738 0.489049 0.359446 5.12873 2.76372 -2.19991 -1.46221 0.907096 2.40066 1.72195 0.862543 2.31215 -0.098699 0.290464 0.220355 -1.24883 -0.886394 -0.871404 -2.48309 7.88459 -5.08788 4.96463 -1.66982 -3.10911 4.33637 -2.71733 2.57954 -1.30971 1.07915 -0.92245 0.474156 0.0492029 -1.82235 0 0 0 0 0 0.155879 0.0194966 0.0138866 0 0 0 0 0.00103274 0 0.011217 0 0 -0.00457939 -0.0347986 0.0348101 0 -0.00295717 -0.148828 0.0752014 0 0 -0.336488 -0.00252669 0 0.0612721 -2.27248 0 0 -0.0501805 -0.586366 0 0.0787482 0 0.0143892 0 0 0.00403903 0 0 0.691918 0.0164728 -0.0561249 0 0.204043 -0.0671418 0 0 0.134102 0 0.00222562 -0.248639 0.0040672 0 0 0.0080412 -0.0405366 0 -0.0182291 0.153375 -0.0409101 1.37326 -0.0313954 0.0507435 0 0.0338409 0.0140406 0.00306812 0.0300899 0.00233282 0 0 0 -4.66712 -0.319923 -0.133771 -0.0104731 -0.0267379 -0.0751624 0.00728373 -0.0123352 0.00992984 -0.012326 0 0 0 0 0 0 0.00524396 0 -0.315686 0 0 0 0 -0.297731 1.66325 0 0 0.37172 0 0.0466843 0 0.0667685 0 0 -0.763089 0 1.07501 0.0260845 0.471483 -0.08783 0 0 0.626667 0 -0.734828 0 4.421 -0.425739 0 -0.0207334 2.29433 0.0639485 0 -0.0156303 0 0 0.203419 0 -0.887486 -1.5679 0 0 -0.189067 0 0 0.249651 -2.3618 -0.154147 0 1.6259 0 1.26376 -0.521672 0.349163 0.8592 0.172117 -1.08288 -1.3824 -0.227141 -1.65481 4.79097 -0.248989 0 0 0 0.0187339 0.212362 0 0 0 0 -0.456119 -56.3707 -10.955 4.94224 -3.45264 1.43793 -1.27017 -0.393164 0.198209 -0.103705 -0.0615705 0 0 0 0 0 0 +282 0 -0.827283 -0.45532 -0.0245021 0.196454 0.0451741 0.112771 -0.805384 -1.38234 -0.334829 -0.0517191 0.361752 -0.954464 0.0544878 -0.681025 -0.117069 -0.782513 -8.07669 0.497623 -0.304801 -0.762427 0.196325 0.408282 -0.0846409 0.1201 -0.790465 0.166974 -0.0173364 -0.246946 -0.852613 -0.292351 -0.212043 -0.0214061 2.06964 0.656263 -0.432136 -0.00454345 -0.590143 8.22867 0.628793 -0.0207121 0.104131 0.227557 0.000740838 -1.71031 0.201177 0.222375 -0.458191 -0.428938 0.314666 -0.998363 -0.135333 0.143078 -0.194293 0.563376 -0.285785 2.24934 0.263911 0.44411 -0.124821 -0.184205 -1.75316 -0.665964 -4.34514 1.7787 0.425153 0.817629 -2.20536 0.108775 0.660551 -0.31893 -1.34519 0.215323 1.27226 1.33864 0.359308 0.646818 -41.4728 -7.10582 6.34899 -7.48669 3.63244 -5.48813 0.765663 -0.657531 0.534148 1.83963 -0.28728 -0.282073 0.348611 -1.52041 2.20513 0 0 0 0 0 -0.0245021 0.196454 0.0043474 0 0 0 0 0.0030217 0 0.0400662 0 0 -0.0104485 -0.0303706 0.0333868 0 0.0124104 -0.00826879 0.182989 0 0 0.365774 -0.0021053 0 0.106816 -1.14998 0 0 0.0505113 -0.158597 0 0.50853 0 0.0449494 0 0 0.00504868 0 0 1.44332 0.0438222 -0.146644 0 0.070737 0.0383458 0 0 0.519944 0 0.0203397 -0.123445 -0.0302936 0 0 0.0138132 -0.000537333 0 -0.0447189 0.0857126 -0.0195037 0.727069 0.0182667 0.0571878 0 0.0470933 0.0309441 -0.253524 0.169234 -0.0951815 0 0 0 -4.41001 0.0810466 -0.460513 -0.0837067 0.076491 -0.179865 0.0114082 -0.0145315 0.0222652 -0.0291199 0 0 0 0 0 0 0.0451741 0 0.112771 0 0 0 0 -0.00040159 0.330876 0 0 -0.443263 0 -0.0390377 0 0.010134 0 0 0.271702 0 -0.105146 -0.0129811 -0.254488 0.0489281 0 0 0.267262 0 -3.9423 0 2.14753 -0.0978147 0 -0.308103 0.33825 -0.0269851 0 0.00875832 0 0 -0.0174714 0 -0.797293 0.671826 0 0 0.104678 0 0 0.201319 -2.74473 -0.19923 0 0.343837 0 1.23694 0.328266 -0.0561257 0.492532 -0.0782415 -0.349014 -1.29602 -0.11603 -1.04062 0.890237 -0.120126 0 0 0 -0.0457246 0.0168294 0 0 0 0 -0.0522954 -25.0331 -0.652232 3.29418 -2.12522 1.18589 -0.89813 0.472197 -0.238972 0.163653 0.155853 0 0 0 0 0 0 +283 0 0.89497 0.547477 0.111043 0.272669 -0.106699 -0.161257 0.192011 0.703737 2.15686 -1.22341 -0.312011 -0.288052 -0.0249664 -2.43894 -0.286848 2.20912 10.058 -0.385084 -0.595135 1.88107 -0.146165 -0.281206 0.109689 -0.563981 0.484263 0.547963 0.190072 0.53764 1.58078 -0.501517 0.475431 -1.61944 -1.00832 0.458977 0.189855 -0.0622514 0.647315 -3.76284 -0.646872 0.143678 0.0698379 2.23176 -0.102011 -3.15754 0.727005 -0.311557 0.920814 -3.41193 0.265077 -1.75203 0.0613283 -1.433 -0.0320379 -0.144758 0.70405 -0.110882 0.554408 3.12704 0.460146 0.0956521 1.10747 -2.76573 2.25735 -0.784571 0.0603728 -0.547917 2.30857 1.20857 -0.70898 0.178015 0.535603 -0.714723 -0.943528 4.00131 -1.35459 -0.571832 12.5808 3.48804 -0.560597 1.89463 -0.937438 -1.1343 1.54285 -0.704048 0.262654 0.209049 -1.03816 1.06495 -2.06881 2.14783 -4.08841 0 0 0 0 0 0.111043 0.272669 -0.000419401 0 0 0 0 -0.00120253 0 -0.00168187 0 0 -0.00223128 -0.0105809 0.0230581 0 -0.003743 -0.164454 0.0836881 0 0 0.426593 -0.000694619 0 0.0463852 1.07508 0 0 0.080033 -0.132183 0 0.0247616 0 0.158899 0 0 0.0287112 0 0 -0.143344 -0.0176873 -0.0359596 0 -0.00770833 -0.00569101 0 0 0.0597023 0 -0.00244483 -0.143514 -0.0031608 0 0 -0.0014242 0.00532476 0 -0.00505624 -0.183087 0.0200355 0.35823 -0.00434195 -0.0177806 0 0.0665035 -0.00838936 -0.199632 0.165238 0.0207663 0 0 0 1.02489 0.146547 -0.0533994 -0.0066371 0.016163 0.0152841 0.000939203 -0.000340165 0.00469591 -0.0125002 0 0 0 0 0 0 -0.106699 0 -0.161257 0 0 0 0 0.025184 -1.4089 0 0 -1.1274 0 -0.145941 0 -0.118612 0 0 0.686361 0 -0.590951 0.0132332 -0.370772 0.101959 0 0 -0.89468 0 -1.47531 0 -5.15178 -0.591739 0 0.303926 -1.61891 -0.0491775 0 -0.00328179 0 0 -0.184038 0 -1.09406 1.24728 0 0 0.179087 0 0 -0.277604 2.12276 0.226128 0 -0.996013 0 -1.56899 0.994074 -0.551059 -0.274934 -0.212872 0.13613 2.06458 0.135411 1.45275 2.71966 0.0926253 0 0 0 0.0250015 -0.142022 0 0 0 0 0.450603 60.6742 14.9991 -6.04546 4.60133 -2.55561 2.22535 0.862376 -0.506225 0.506623 -0.230587 0 0 0 0 0 0 +284 0 0.0290236 -0.0348444 -0.105986 0.12333 -0.159715 0.17962 -1.06206 -1.01987 1.27031 0.76854 -0.102559 -1.24934 0.09276 -2.25688 -0.135678 0.540305 -0.649666 0.489384 -0.274551 1.11234 0.198694 -0.11402 -0.0287794 0.313803 -0.783772 0.402327 0.194375 -0.341258 -0.453103 -0.518121 0.0867172 -0.913479 0.0189818 0.672546 -0.551162 -0.0940253 0.0723785 1.12266 -0.427 0.63589 0.256672 0.094436 -0.22929 -4.11929 0.697975 0.464993 -0.444966 -2.01175 0.597041 -2.17324 0.697616 -0.601585 0.639029 -0.113085 -0.150679 -1.12348 0.520916 0.907194 -0.63173 -0.284923 2.52371 -2.63818 2.21922 1.07754 1.32798 -0.0415089 -0.776077 -0.780875 -1.02542 -1.10353 0.227286 -0.951802 -0.166237 0.975146 0.552633 0.675575 -3.44063 -1.61049 5.58541 -2.68313 2.36905 -0.128098 -0.569019 0.362794 -0.288571 1.25159 -0.908609 0.868581 -0.600162 0.164153 1.16212 0 0 0 0 0 -0.105986 0.12333 -0.0154548 0 0 0 0 -0.00318561 0 0.0157701 0 0 -0.00148895 0.0214291 0.0253868 0 0.00270493 -0.135651 0.192589 0 0 0.116541 0.00102281 0 0.114777 -1.88837 0 0 0.0196091 -0.473379 0 0.485257 0 -0.0595186 0 0 -0.00684788 0 0 1.13876 -0.0563978 -0.00530677 0 -0.272849 -0.0869222 0 0 0.284267 0 -0.0105413 -0.317539 0.0037971 0 0 -0.0053608 0.0409508 0 0.0177119 0.19655 -0.0403687 1.14447 -0.0858091 0.0660604 0 -0.0508212 0.00919529 -0.36301 0.305515 0.063195 0 0 0 -12.341 -0.908389 -1.09076 -0.0482628 -0.0649356 -0.0934856 0.00248514 -0.0108584 0.00701027 -0.0292876 0 0 0 0 0 0 -0.159715 0 0.17962 0 0 0 0 0.20097 -2.0689 0 0 -0.553033 0 -0.0709248 0 -0.10976 0 0 0.113422 0 -0.662357 0.0293423 -0.44725 0.0395015 0 0 -0.865594 0 -5.90127 0 -0.453198 -0.423115 0 0.389642 -0.908495 -0.056498 0 0.0186063 0 0 -0.261906 0 -2.06034 0.558794 0 0 0.11684 0 0 -0.333976 2.87936 -0.0165878 0 -1.61862 0 -0.709902 0.5632 -0.158029 -0.223002 -0.151173 0.59364 0.974106 0.0251586 1.20483 1.92376 0.179092 0 0 0 -0.23871 -0.141651 0 0 0 0 0.690824 8.75201 5.76906 -4.0163 0.760431 -0.505716 0.316896 0.607723 -0.308937 0.262345 -0.21243 0 0 0 0 0 0 +285 0 -1.66581 -0.720595 0.042999 -0.0280592 0.184411 -0.20633 -0.315024 -1.12095 0.150867 -0.434987 -0.29259 -0.532673 -0.0605903 -1.06336 0.147779 -3.55737 -16.7034 -0.410918 0.328272 -2.83831 -0.200488 0.205532 0.0828027 -0.246804 0.179516 -0.859793 -0.0260607 0.254396 -0.172888 -0.288101 0.163421 0.229794 1.39788 -0.694512 0.150925 0.0131979 -0.13462 8.7295 -0.118477 -1.11873 -0.115003 -1.62487 0.118589 -3.23188 -0.208026 -0.541911 0.181105 0.802769 -0.225179 -0.666644 -1.37136 7.34012 0.634676 -0.334426 0.325815 1.21786 1.01432 -1.17929 0.546443 0.104825 1.8483 1.49664 -1.04047 -0.107017 0.376822 1.57519 -0.986643 -0.157695 -0.357487 -0.94342 -1.71358 0.254617 0.204332 -2.8323 -0.496098 1.58779 -43.3339 -4.43195 5.75752 -6.28786 6.44132 -8.28325 0.310226 -0.14739 0.489004 2.0449 0.270803 -0.0989235 0.379303 0.00563027 0.443423 0 0 0 0 0 0.042999 -0.0280592 -0.00223119 0 0 0 0 -0.00129479 0 0.039215 0 0 -0.000290431 0.0019938 0.0372739 0 0.0102089 -0.100156 0.135807 0 0 0.0820558 0.000101306 0 0.131382 -1.92186 0 0 0.00644492 -0.386017 0 0.49115 0 0.10249 0 0 0.0125444 0 0 1.90648 -0.0243929 0.0096509 0 -0.0338045 0.0186494 0 0 0.654776 0 -0.00274609 0.0609727 -0.0193591 0 0 -0.000457855 0.00399434 0 0.0120474 -0.146587 -0.015376 0.306352 -0.0743669 0.0344664 0 0.0357827 0.0441105 -0.225561 0.112454 -0.0571683 0 0 0 -12.2988 -0.632477 -1.07124 -0.0830765 -0.0106345 -0.194272 0.00120225 -0.00604529 0.00397128 -0.0210304 0 0 0 0 0 0 0.184411 0 -0.20633 0 0 0 0 -0.215676 -0.518343 0 0 0.38204 0 0.0596121 0 -0.0333664 0 0 -0.362673 0 0.923321 -0.00468166 0.36395 -0.035556 0 0 -0.30282 0 -3.96591 0 5.2667 -0.247515 0 -0.456315 2.19568 0.0519577 0 -0.00513261 0 0 -0.0559544 0 -0.679954 -1.11049 0 0 -0.120132 0 0 -0.162219 -4.57392 -0.139118 0 -1.17269 0 1.048 -0.545936 0.349745 0.915352 0.141194 -1.24039 -2.59329 -0.229472 -1.28969 -6.26314 -0.319042 0 0 0 -0.360899 0.144412 0 0 0 0 0.190771 -66.2793 -11.4596 7.42773 -4.53766 2.22745 -1.86248 -0.349117 0.183826 -0.141614 0.175654 0 0 0 0 0 0 +286 0 0.460978 0.235239 0.13836 0.273221 -0.211924 -0.262349 0.654904 1.16937 1.62529 -1.46931 -0.290408 -1.08198 -0.0383111 -0.954058 -0.171421 0.71238 2.33236 -0.242629 -0.363245 2.75637 -0.0715574 -0.15566 0.0919176 -0.362779 0.239538 0.295387 0.0667096 0.528425 1.26686 -0.436983 0.362804 -1.04258 -0.791283 0.543685 0.212936 -0.0285559 0.679385 -4.07479 -0.814934 0.482189 0.0203897 3.38265 -0.0730687 -3.8187 0.622032 -0.4155 0.709744 -2.3107 0.023378 0.76013 0.299318 -4.37866 -0.759041 -0.0560298 0.0748195 0.313385 -0.953704 1.64071 0.230897 0.162305 0.454283 -2.39557 -1.39873 2.0422 -0.615624 -1.10032 -1.34865 0.910917 0.218408 -0.0516202 0.500487 -0.3744 -0.0790196 2.966 -0.192624 -1.25711 24.9352 4.35947 -4.49204 2.46485 -1.50858 1.12529 1.93149 -1.10776 1.12378 -2.21655 -0.809748 1.05682 -1.62228 2.11713 -3.24924 0 0 0 0 0 0.13836 0.273221 0.00425577 0 0 0 0 0.0006151 0 -0.0137127 0 0 -0.00305071 -0.0214409 -0.00298645 0 -0.00263905 0.292824 -0.0296545 0 0 0.0119142 -0.00118205 0 0.0234274 2.35113 0 0 0.0196165 0.774833 0 -0.0415259 0 0.05847 0 0 0.0118382 0 0 -0.371902 0.0126493 -0.0527425 0 0.0853536 0.0291179 0 0 -0.0444467 0 0.00192073 0.148169 -1.96178e-05 0 0 0.00276097 -0.00827058 0 -0.00757686 -0.00944392 0.0173975 -1.28657 0.0328599 -0.0352936 0 0.0369955 -0.0066795 -0.474065 0.137527 -0.0647281 0 0 0 4.05108 0.384223 0.396427 0.0164337 0.0219367 0.0267772 0.00182888 0.000822076 0.00559953 0.00129384 0 0 0 0 0 0 -0.211924 0 -0.262349 0 0 0 0 0.36005 -0.550669 0 0 -1.12645 0 -0.145212 0 -0.076371 0 0 0.679365 0 -0.302514 0.0947048 -0.230904 0.0932323 0 0 -0.48608 0 -4.69936 0 -3.81623 -0.572363 0 1.0088 -1.12546 -0.0320431 0 0.0300796 0 0 -0.0933639 0 -1.14449 0.472265 0 0 0.0856469 0 0 -0.0554326 5.42154 0.136121 0 -0.130356 0 -1.53864 0.983555 -0.457471 -0.8007 -0.24198 0.879373 2.78945 -0.00309938 0.81576 4.03649 0.290658 0 0 0 0.0720655 -0.0403934 0 0 0 0 0.20683 54.3597 13.664 -9.39686 3.82077 -2.02698 1.67985 0.832849 -0.501396 0.48629 -0.423249 0 0 0 0 0 0 +287 0 0 0 0 0 0.145002 -0.0340451 -0.330445 -0.865234 0 0 -0.220809 -0.304625 0 -0.544609 -0.00435757 0 0 0 0.133036 0.734876 0 0 0 0 -0.11973 0 0 0.216989 -0.0274938 -0.0420291 0 -0.19744 0 0 -0.0345498 -0.0605914 0 0 -0.0518032 0.397409 0 0 -0.0103993 -2.38446 0 0.13945 0.30575 -0.379162 -0.247455 -1.06631 -0.0146015 0 -0.00418917 0.281644 -0.131041 0.847903 0.316173 0.562883 0 0 -0.213774 -2.56483 0 -0.32662 0.418882 -0.887172 0 0 0 0 0.358429 0.465043 0 0.467546 -0.465905 0 0 0 1.35523 0 -0.561394 1.72695 0 -0.496275 0.163865 1.70864 0 -0.574956 0.920581 -1.24058 2.6407 0 0 0 -0.0653608 -0.0175982 0 0 0 -0.00256611 -0.0903771 0 -0.000241082 0 0.00148254 0.0218582 0 0 0 0 0.0365842 0 0.0242118 0 -0.175475 0 -0.0358152 -0.714482 0 -0.00419271 0 0 -0.150517 0.000210742 -0.0890195 0 -0.0139784 0 -0.00546599 -0.0810128 -0.0295792 0.0048587 -0.0115918 0 1.46025e-05 0 0 0 -0.00075756 0 0 -0.00668584 0.0007251 0.278767 0.0256387 0 0 -0.0025836 0 0.0160903 0 0 -0.0506645 0.0352481 0.0682126 0.0543282 0 0 -0.12907 -0.162715 0.0665801 -0.225125 0.644699 0 0.120505 0.0174871 0.30044 0 0 0 1.16279 0 0.0710388 0.384945 0 0.0149582 0.0143286 0.0763823 0 -0.00225532 0.00836525 -0.000116988 0.0275803 0 0.145002 -0.0653608 -0.0340451 -0.0175982 0.241167 0.0309599 -0.0358107 0.0408386 -0.406926 0.0336288 -0.0604706 0.26882 0.00342344 0.0278442 -0.00619194 -0.0539386 -0.0392889 0.290063 0.57319 0.108796 0.33586 0.101335 0.20259 0.10841 -0.393731 0.0732563 -0.596202 0.00786711 -1.3507 -0.197243 0.964814 -0.525293 -0.000721576 0.107575 0.649705 0.0312336 -0.000113912 0.0241743 0.000455248 0.52088 -0.0298731 0.00850098 -1.46907 0.226188 -0.00630603 -0.0226715 0.0864103 0.0336003 0.0863449 -0.4123 -0.849535 0.350076 0.103141 1.07693 -0.0063687 0.373366 -0.280231 -0.318388 0.0963123 -0.19806 -0.381692 -0.780781 0.284704 1.84526 11.1112 -0.176681 -0.0474741 0.0323722 0.164802 0.605767 -0.143422 0.0591451 -0.141436 0.0597208 -0.185773 0.0852329 -2.03173 -0.0797756 -0.211158 -0.382246 0.664063 -1.24491 0.0397029 0.194008 -0.4192 0.406701 -0.0461997 0.0852875 -0.392014 0.407663 -0.536032 0 +288 0 0 0 0 0 -0.370834 0.169074 -0.0715462 0.120985 0 0 0.0856658 0.419546 0 0.693388 0.0586981 0 0 0 0.269421 0.549414 0 0 0 0 -0.3277 0 0 -0.656533 -0.0588708 0.374797 0 0.194795 0 0 -0.251481 0.0422395 0 0 -0.123744 1.06525 0 0 0.0374333 0.850967 0 0.947809 -0.712122 0.698013 -0.0209663 1.01722 0.191468 0 -0.523816 0.313568 -0.458074 -3.86574 -1.35908 -0.917028 0 0 0.0221905 -1.489 0 0.73009 -0.345228 0.294801 0 0 0 0 0.150818 0.0233931 0 -1.95536 2.28721 0 0 0 0.158772 0 0.789083 -0.682197 0 0.345641 -0.0686318 0.572823 0 -0.483486 0.00912155 0.849982 -0.980018 0 0 0 0.042142 0.00752046 0 0 0 -0.0431727 -0.0217331 0 -0.00415819 0 0.00326546 -0.0213613 0 0 0 0 -0.0644267 0 -0.0124822 0 -0.115329 0 -0.371586 -0.292955 0 -0.00258853 0 0 -0.0817889 0.000756024 -0.0126827 0 -0.00112383 0 -0.00239232 0.0301262 -0.01682 0.00861104 0.00826325 0 0.000265648 0 0 0 -0.000206226 0 0 0.00622826 0.00549691 0.0356502 0.0144851 0 0 -0.00796497 0 0.0129231 0 0 0.0056342 -0.0173795 -0.165706 -0.0334648 0 0 0.0137887 0.00156408 0.0623058 0.100922 0.0844722 0 -0.0405628 -0.0131908 -0.137145 0 0 0 0.292201 0 0.0247357 0.140088 0 0.00138938 0.0137683 -0.0628519 0 0.000152244 0.000219601 -0.00508125 0.0165263 0 -0.370834 0.042142 0.169074 0.00752046 -0.373755 -0.0107912 0.110656 -0.223086 1.02949 -0.00795004 -0.0159651 0.1184 -0.000913062 0.00535372 0.0162176 0.0481418 -0.0189345 -0.0494755 -0.792375 0.292975 -0.348722 -0.0634976 0.142587 -0.0983764 -0.0820347 -0.0801814 0.724319 0.00901654 -2.19714 -0.0594712 -1.29323 0.282922 0.00232342 0.00497178 -0.722712 0.0044548 -0.00307812 -0.0666166 -0.00695498 -0.20826 0.0758975 -0.0188293 -0.0831761 -1.09644 -0.00346744 -0.0132344 -0.126323 0.0529636 0.160806 -0.0397399 -1.03846 0.745254 -0.107789 0.245486 -0.0500709 0.626477 0.160768 -0.337062 -0.343111 -0.105755 0.111536 0.114052 0.112988 -4.0507 -15.298 0.0798345 -0.517416 0.0191456 0.322507 -0.305671 0.0563919 0.0720587 0.0291388 -0.11532 -0.142798 -0.563819 2.72332 -0.397125 0.42873 0.155083 -0.049228 0.556161 -0.0198527 0.109894 0.104532 -0.246348 0.00788019 0.0420341 -0.0178262 0.023104 0.256693 0 +289 0 0 0 0 0 0.173119 -0.381163 0.378535 1.43511 0 0 -0.774766 -2.17598 0 -3.63885 -0.193114 0 0 0 -0.593668 -4.83651 0 0 0 0 0.291931 0 0 0.890887 5.92967 -0.951649 0 -1.29869 0 0 0.184537 -0.100954 0 0 -1.55389 -1.64903 0 0 -0.258575 -8.95231 0 -1.04279 2.17603 -2.58238 0.642323 -0.276232 0.668895 0 0.504038 -1.09145 0.363972 0.985769 0.589272 -0.0587216 0 0 -0.265164 2.32216 0 1.69244 0.653817 0.921276 0 0 0 0 -0.639641 -1.09315 0 1.55144 0.675381 0 0 0 -2.44616 0 1.03106 -5.95469 0 0.530183 -1.1449 -3.21489 0 1.15362 -3.17072 4.57246 -13.1168 0 0 0 0.164275 0.0235532 0 0 0 -0.0406825 -0.0196261 0 -0.00208194 0 -0.000796528 0.015835 0 0 0 0 -0.025798 0 0.000266956 0 0.0432914 0 -0.533196 -0.0909368 0 0.00221849 0 0 -0.00927826 -0.00118515 -0.00391431 0 -0.004118 0 -0.0011089 -0.0274687 0.00725787 -0.0171033 -0.00098152 0 -7.22218e-05 0 0 0 -0.000220649 0 0 0.00204258 -0.0021194 0.199386 0.00819743 0 0 -0.000625284 0 -0.00117177 0 0 -0.0344071 -0.00234879 0.00488007 0.00760947 0 0 0.0229294 -0.0220502 -0.010494 -0.0633723 -0.0601039 0 -0.0417093 -0.00765302 0.0258655 0 0 0 0.262408 0 0.037981 0.150141 0 0.00239697 0.0124657 0.00362949 0 0.00116065 -0.00260192 0.00950446 0.0070738 0 0.173119 0.164275 -0.381163 0.0235532 -0.181319 -0.17701 0.760316 -0.192153 -1.14218 0.010497 0.0113704 0.120341 0.000880929 0.010717 0.076954 -0.0805378 -0.0221624 0.124249 -1.00609 -1.66491 -0.626406 -0.0177708 0.0928776 -0.18519 -0.28424 0.183094 -1.10917 -0.0471721 -14.0084 -0.355171 -2.27882 -2.33256 0.00770162 0.16967 -1.2821 0.0093944 -0.00262613 -0.0466036 -0.0343615 1.34575 -0.0568102 0.0279661 -6.09411 -3.1206 0.00243545 -0.0303779 -0.506008 -0.287145 -0.194653 -1.25364 -1.32048 1.56503 0.185311 -5.56014 -0.372187 1.11277 0.203291 -0.592142 -0.771958 0.232359 0.145966 -0.310804 -0.163466 1.4726 -4.46944 -0.0119655 -0.508562 0.117157 0.360054 -0.412616 0.0112385 -0.00129251 0.0141204 0.100354 -0.179166 0.0563119 4.7988 -0.606814 0.696321 0.0506552 0.097606 -1.46145 0.0165935 0.0248153 -0.215629 -0.21437 -0.0197898 0.147735 -0.41775 0.490357 -1.15919 0 +290 0 0.73202 -0.306186 0.0335954 0.0829466 0.144047 -0.188438 0.939865 1.79965 0.0469795 -1.74081 0.337558 0.146227 -0.00746898 0.938388 -0.000801393 -2.23825 -6.93435 -0.326204 -0.0143895 -0.237716 -0.0609252 0.489733 0.005617 -0.437066 0.625525 -0.753403 -0.102329 0.403739 -0.11161 0.126993 0.0323422 0.195571 0.592887 -0.593923 0.402114 0.0339526 -0.354039 -0.262064 0.588048 -0.436725 -0.0582061 -1.00638 0.0682671 0.86245 -0.44502 -0.379631 0.214782 0.203705 -0.207389 0.364249 -0.505925 6.14434 -0.0886799 -0.164693 -0.00483578 -2.23606 -0.14259 -0.388616 0.588683 0.172556 -0.926781 -0.38379 -0.881973 -2.31408 -0.203471 -0.541325 1.179 -0.221754 -0.013942 0.664544 -0.208793 0.297924 0.629328 -3.1499 -0.376454 1.6036 1.57448 1.04208 -1.13325 0.879102 -1.08047 1.10033 1.65871 -1.0848 1.45143 -1.24055 0.135723 -0.159397 0.154052 -0.198561 0.068735 0 0 0 0 0 0.0335954 0.0829466 0.00233451 0 0 0 0 7.75567e-06 0 -0.0118275 0 0 -0.00257491 -0.00338863 -0.00835974 0 -0.00051534 -0.0201012 -0.0447645 0 0 -0.0735829 -0.000283335 0 0.0269341 -0.9794 0 0 -0.0135236 -0.181729 0 0.0409578 0 0.0042167 0 0 0.000233131 0 0 -0.332612 -0.0016875 -0.037557 0 0.0304016 0.0591328 0 0 -0.189266 0 -0.00224941 0.373699 0.00190154 0 0 -0.00213354 -0.0110132 0 0.00568737 -0.000550201 0.0209297 1.74344 0.0303618 -0.07087 0 0.0123261 0.00302769 0.195052 -0.00213199 -0.0895738 0 0 0 5.56295 0.407206 0.704205 0.0382733 0.0158245 0.0104758 0.000374288 0.00163079 0.00426474 0.00105701 0 0 0 0 0 0 0.144047 0 -0.188438 0 0 0 0 0.241369 1.40882 0 0 -0.187005 0 -0.0206952 0 0.0587076 0 0 -0.548073 0 1.08066 0.0443946 -0.0800646 -0.0713341 0 0 0.701615 0 4.50812 0 0.504478 0.589585 0 0.262545 1.19232 -0.00736959 0 0.0371052 0 0 0.118019 0 1.90058 -1.12328 0 0 -0.156937 0 0 0.357976 -1.50238 0.0973107 0 1.20681 0 -0.233824 0.040052 -0.101036 0.0967032 -0.032344 -0.451226 -0.429768 0.0442313 -3.61652 -13.696 -0.0624603 0 0 0 -0.026815 -0.0297159 0 0 0 0 -0.515282 3.21569 1.38409 -0.530732 0.150295 0.0642085 -0.0764121 0.121243 -0.107689 0.0907601 -0.0794203 0 0 0 0 0 0 +291 0 -0.601136 -0.183823 -0.0146429 -0.0262238 0.00455978 -0.106551 -0.553419 -0.886189 -0.0856401 0.0181564 -0.0905888 0.0930574 0.00300005 -0.26985 0.0131566 -1.86502 -6.55958 -0.186905 0.0228608 -0.402521 -0.0465844 -0.221834 -0.00390093 -0.014926 0.0963462 -0.47122 -0.0904414 0.411047 0.331972 -0.169657 -0.025175 -0.0431489 -0.681594 -0.580839 0.050067 -0.0190855 -0.405765 -0.917487 -0.12985 -0.628681 0.0179969 -1.7048 -0.0308805 0.470202 0.088531 -0.589916 0.399892 -0.0291995 0.152875 -1.257 -0.282902 1.36715 0.0861306 0.0662286 0.0220837 -2.16365 -0.143845 0.235537 0.0784113 -0.0393768 0.614317 1.13179 0.320808 -0.230454 0.829424 0.313581 -0.124874 -0.532978 0.0348803 0.131627 0.00718019 -0.267622 0.608688 0.522724 -0.478247 1.44399 2.51806 1.82376 -0.237433 1.04188 -0.78867 0.847635 0.0128503 -0.106526 0.106796 0.828569 -0.0270003 0.0336718 -0.0778835 0.091997 -0.204445 0 0 0 0 0 -0.0146429 -0.0262238 -0.000355474 0 0 0 0 0.00024894 0 -0.0136413 0 0 0.000463216 -0.00103815 -9.77484e-05 0 -0.00107338 -0.0188074 -0.0426979 0 0 -0.164488 -1.58139e-05 0 -0.0232555 -0.545748 0 0 -0.0242813 -0.0879193 0 -0.105942 0 -0.0237098 0 0 -0.00313534 0 0 -0.412498 0.00673026 0.00228256 0 0.0160495 -0.0337523 0 0 -0.0157094 0 0.000555632 -0.0908284 -0.00198034 0 0 0.00129552 0.0018634 0 -0.000460025 -0.00906187 0.00536062 0.264508 -0.0221464 -0.00933859 0 0.0072284 0.00645227 -0.181237 0.122686 -0.0239124 0 0 0 2.1474 0.112973 0.109832 0.0135765 0.00130689 0.0453533 -0.000547188 0.00155453 -0.000870078 0.00831592 0 0 0 0 0 0 0.00455978 0 -0.106551 0 0 0 0 0.164195 -1.40108 0 0 -0.0384091 0 -0.00423701 0 -0.0625764 0 0 0.827185 0 0.383092 0.0278374 -0.123163 0.107549 0 0 -0.738081 0 -2.7783 0 3.14613 -0.571373 0 0.12988 0.996895 -0.0103185 0 0.0203245 0 0 -0.120461 0 -1.36319 1.77622 0 0 0.238043 0 0 -0.181607 2.57479 -0.0743251 0 0.103722 0 0.370765 -0.0545671 0.101716 0.697821 0.20911 0.0686559 0.0521941 -0.0134502 2.80097 11.6196 -0.162665 0 0 0 0.17433 0.0620806 0 0 0 0 0.391577 -10.6495 -0.795084 -0.220301 -1.31747 1.09832 -1.40899 -0.0540408 0.0258781 -0.00459618 -0.00349161 0 0 0 0 0 0 +292 0 0.389556 -0.190941 0.0340675 0.209117 -0.158301 0.0281344 -0.0724064 0.614197 0.637648 -0.649361 0.261111 -0.545928 -0.0022492 -0.458186 -0.00757559 -1.7836 -7.9092 -0.0277547 -0.0319949 -0.998197 0.00967221 -0.0324678 0.00638414 -0.0904771 -0.123133 -0.393218 0.0027366 -0.365182 -1.07108 -0.0177793 0.0630479 0.15456 0.0340181 0.189857 -0.161762 0.025781 0.030802 0.914951 0.360654 0.158116 -0.0129742 1.14721 0.0371931 -3.27192 -0.0601433 0.348855 -0.611814 0.0230192 -0.0753587 -0.51758 -0.401962 -6.1544 0.209024 -1.71874e-05 0.0336852 -2.21976 -0.416413 -0.461261 0.25893 0.0358015 -0.485991 -0.31187 0.751058 -0.679816 0.424792 0.391503 0.383301 -0.342175 -0.242656 0.413748 -0.655747 0.0660122 -0.335453 -0.367316 0.0298341 -1.44744 -4.30332 0.161503 -2.70072 -0.721455 0.316034 -1.09396 0.239941 -0.28326 0.549252 -1.00699 0.0183426 -0.0644196 0.18185 -0.278871 0.659626 0 0 0 0 0 0.0340675 0.209117 -0.00102003 0 0 0 0 -0.000256416 0 -0.00825147 0 0 -0.000779683 0.000548067 -0.00987783 0 -0.000515569 1.02398e-05 -0.0959246 0 0 -0.206047 1.65946e-05 0 0.00616454 -0.23996 0 0 -0.0201654 -0.00841128 0 -0.00999246 0 -0.00925804 0 0 -0.00046713 0 0 -0.0528084 -0.00453586 -0.0119019 0 -0.0154044 0.0190165 0 0 -0.0171028 0 3.77333e-05 0.238309 0.00270271 0 0 0.00389729 0.00262795 0 -0.0135565 -0.00973555 0.00414194 0.0245491 -4.27804e-05 -0.0239288 0 -0.00753398 -0.00933879 -0.140727 0.0442186 -0.0588644 0 0 0 2.81691 0.239204 0.518734 0.013674 0.0159807 -0.00232393 0.00113222 0.000102608 0.000779797 0.021164 0 0 0 0 0 0 -0.158301 0 0.0281344 0 0 0 0 0.347927 1.13133 0 0 -0.57495 0 -0.0629389 0 0.0342814 0 0 0.216839 0 0.367782 0.168915 -0.161757 0.0297058 0 0 0.477143 0 3.82093 0 2.71468 0.503509 0 1.09826 0.997188 -0.0177067 0 0.0594008 0 0 0.0893501 0 1.31258 0.111661 0 0 0.0161926 0 0 0.168085 2.21588 -0.252204 0 2.12942 0 0.530011 -0.0219802 0.115943 0.569211 0.165915 0.452239 -0.249565 0.0992039 -1.74751 -1.26113 -0.143615 0 0 0 0.194601 0.0699392 0 0 0 0 -0.330481 -6.44311 1.37865 -3.21134 -0.0528202 0.109053 -0.607846 0.283874 -0.221032 0.215288 -0.399955 0 0 0 0 0 0 +293 0 -0.920105 0.0216021 -0.106438 -0.306817 0.196218 0.283997 -0.467724 -1.83009 -0.316947 2.63805 -0.314192 0.76884 0.0306315 1.31286 0.0133355 1.01374 -0.253716 0.483704 0.0808397 1.88986 0.00778161 -0.255281 -0.0228839 0.520775 -0.6522 0.502729 -0.0187098 -0.396782 0.793682 0.401595 -0.106423 0.110036 0.245793 0.162509 -0.325012 -0.0561461 0.0347503 2.60888 -1.07511 1.26811 0.177105 -0.476171 -0.199125 2.6668 0.968785 0.86334 -0.1247 0.358814 0.509643 0.736452 1.58453 -4.90602 0.0509813 0.119064 -0.400958 -0.507338 -0.154209 -0.350615 -1.12897 -0.407961 -0.534328 1.18673 0.112483 1.5031 -0.0909395 -0.33381 -0.495447 0.0324261 0.00661293 -0.535971 0.197756 -0.490774 -0.154183 -0.286799 1.07673 -0.485004 -4.45004 -4.85809 3.45144 -4.09156 2.92879 -3.36774 -3.39768 2.68245 -3.09484 2.82711 -1.31851 1.60795 -1.76826 2.0809 -2.01236 0 0 0 0 0 -0.106438 -0.306817 -0.0123915 0 0 0 0 -0.00156165 0 -0.00972578 0 0 0.00241629 -0.00110557 0.010332 0 -0.00130017 -0.110567 -0.0154219 0 0 0.0210881 -0.000153234 0 0.0355372 -1.76601 0 0 -0.00265182 -0.380106 0 0.0372854 0 -0.024899 0 0 -0.00470425 0 0 -0.0324253 -0.0220464 0.04087 0 -0.18407 0.0389451 0 0 -0.0741728 0 -0.00559307 0.328118 0.005643 0 0 -0.0109328 0.0310968 0 0.0301765 0.108458 0.0196488 1.9157 0.0260099 -0.0662773 0 -0.0418744 -0.00827905 0.110084 0.175674 -0.0730613 0 0 0 -0.207429 -0.0715096 0.150022 0.0178834 -0.0248222 0.00752545 -0.00489583 0.00509347 -0.00463509 0.000903602 0 0 0 0 0 0 0.196218 0 0.283997 0 0 0 0 -0.300279 -1.96961 0 0 0.60197 0 0.0671811 0 -0.02918 0 0 0.233965 0 -0.992941 -0.121625 0.211095 0.0223294 0 0 -0.372199 0 -6.36095 0 -0.966599 -0.0531502 0 -0.704043 -0.984494 0.021994 0 -0.0543512 0 0 -0.188278 0 -0.746891 0.499272 0 0 0.0450651 0 0 0.019512 -0.679138 0.0835541 0 -2.08992 0 0.200763 -0.29148 0.128906 -0.2729 -0.0666535 -0.188933 -0.361655 0.0163646 2.01217 -1.82593 0.0608223 0 0 0 -0.264971 -0.115728 0 0 0 0 0.580462 3.09516 -0.691908 1.35672 -0.00618784 -0.083804 0.31887 -0.30715 0.177326 -0.211093 0.267107 0 0 0 0 0 0 +294 0 -0.781933 0.293424 0.0376416 0.0419921 -0.270855 -0.106366 -0.108417 -0.037062 0.234186 -0.0161363 0.130201 -0.899624 -0.0131382 -0.673896 0.0451775 2.47259 8.07024 0.270154 0.0455739 -3.20448 0.114141 -0.105771 0.0156235 0.079555 -0.0819047 0.724459 0.311785 0.0531757 -0.649869 -0.344876 0.072357 0.196735 -0.324975 1.09715 0.055052 0.0384554 1.0042 -1.29662 0.382812 -1.61044 -0.0636324 3.03062 0.0990629 -2.14968 -0.26202 -0.892445 -0.160843 0.36788 -0.238932 1.28354 -0.125158 -10.5175 0.0881553 0.0994562 0.0710521 2.24911 0.80292 0.27782 -0.0920828 0.136972 0.496018 1.52664 1.15944 0.00157622 -1.3593 0.318586 0.242304 1.55516 -0.0943397 -0.0988655 0.0450249 0.329963 -1.75801 0.655502 -0.356525 -3.97106 5.22628 1.76502 -0.660958 0.370589 -0.91169 2.91629 -0.809917 0.15456 0.432221 -0.0545178 0.356606 -0.49752 0.774405 -1.07316 1.64773 0 0 0 0 0 0.0376416 0.0419921 -0.00655094 0 0 0 0 -0.0013314 0 -0.0122636 0 0 0.00244397 0.0135683 -0.0172205 0 -0.00286467 0.0872135 -0.0375322 0 0 -0.089902 0.000984205 0 -0.0387089 -0.343964 0 0 -0.0205921 0.1778 0 -0.0705074 0 0.0176408 0 0 0.00143182 0 0 -0.159728 -0.018541 0.0334818 0 -0.0858733 -0.0262207 0 0 0.00544525 0 0.0139661 -0.062353 -0.0168521 0 0 0.0058127 0.0329085 0 -0.00610795 0.0195727 -0.00718421 0.30447 -0.0189075 0.00809338 0 -0.01877 0.0183191 -0.159596 0.208705 0.0548415 0 0 0 0.227537 -0.0075319 -0.0245009 0.00544879 -0.00634803 0.0189535 -0.000592786 0.0012786 -0.00446159 0.00482484 0 0 0 0 0 0 -0.270855 0 -0.106366 0 0 0 0 0.101317 0.140351 0 0 -0.293788 0 -0.0348769 0 0.0104786 0 0 0.148995 0 -0.20707 0.0455986 -0.0516636 0.0399649 0 0 0.000617185 0 5.0215 0 1.3316 0.190838 0 0.392639 0.101948 -0.00697305 0 0.0118049 0 0 0.029033 0 1.11562 0.590198 0 0 0.12952 0 0 -0.605865 3.25651 0.0973995 0 -0.659459 0 0.698995 0.0556787 -0.0817707 0.754028 0.169513 0.108292 -0.40021 0.0346235 2.43185 10.1402 -0.147002 0 0 0 0.39777 0.066048 0 0 0 0 0.0284795 -3.78316 0.871879 -1.70146 -0.690957 0.41489 -0.45257 0.133205 -0.136628 0.193341 -0.207524 0 0 0 0 0 0 +295 0 -0.249778 -0.0988696 0.045751 0.227322 -0.190815 0.0284879 0.618012 1.19096 0.413828 -0.171224 0.738149 0.308052 -0.00973974 1.86018 0.179873 0.740404 0.286293 0.159548 0.310206 -3.67059 0.0724941 0.0891141 0.00936028 0.0391537 0.0982619 0.391289 0.174684 -0.588696 -2.43091 0.518955 0.0620567 1.41992 0.52579 0.850146 0.0415834 0.113522 0.450935 2.43989 1.07833 -0.781446 -0.044843 2.84969 0.178224 0.419699 -0.143912 0.0666154 -1.20831 2.4595 -0.542409 2.46326 -0.353602 0.962689 -0.582756 0.738309 -0.447199 0.106353 -0.081925 0.723078 0.0954456 0.109208 1.482 -3.08409 1.13926 -0.630068 -1.19388 -0.409102 0.850066 0.94716 -0.119256 0.260511 0.379497 1.29767 -0.416026 -1.8436 -0.0514067 -0.48613 -7.8356 -0.309639 -3.85326 -1.53957 0.16364 -0.97572 -0.174174 -0.248896 0.745708 -2.41632 0.195863 -0.863977 1.83666 -3.56599 6.1635 0 0 0 0 0 0.045751 0.227322 0.0025288 0 0 0 0 0.000437698 0 0.0253092 0 0 -0.00158304 -0.00191467 0.0076562 0 0.00356424 0.0231321 0.0650403 0 0 -0.246327 -0.000118796 0 -0.0356539 0.346141 0 0 -0.0182853 0.0692753 0 -0.0705932 0 -0.0220121 0 0 -0.000825794 0 0 0.152625 0.00578267 -0.0222846 0 0.0309629 -0.030905 0 0 0.115712 0 -0.00124667 -0.135552 0.00790552 0 0 0.00385876 -0.011077 0 -0.020393 -0.0589054 0.0052576 -0.498751 -0.0313723 0.0203089 0 0.00796751 -0.025299 0.22578 -0.127074 0.0718736 0 0 0 -0.513029 0.0468646 -0.0760572 -0.0185249 0.01649 -0.0139005 0.00232467 -0.00272572 0.00285066 -0.00923747 0 0 0 0 0 0 -0.190815 0 0.0284879 0 0 0 0 0.315738 2.24786 0 0 -0.508545 0 -0.0468145 0 0.110968 0 0 -0.549917 0 0.251364 0.104769 -0.175212 -0.0456803 0 0 1.24153 0 6.52233 0 1.80705 1.29528 0 0.722301 0.881599 -0.0129854 0 0.0463151 0 0 0.199603 0 3.22085 -1.45533 0 0 -0.136013 0 0 -0.232674 2.63343 -0.200883 0 2.65148 0 0.421864 0.160726 0.0238904 0.503962 0.281276 0.70515 -0.0641809 0.0537659 -2.76337 -3.99093 -0.204526 0 0 0 0.488962 0.0607802 0 0 0 0 -0.675709 -0.789889 1.06719 -1.04306 0.0908538 0.0955415 -0.295674 0.171153 -0.135937 0.173412 -0.218364 0 0 0 0 0 0 +296 0 0 0 0 0 0.196971 0.00618773 -0.170317 -0.779264 0 0 0.121593 -0.882093 0 -2.60416 -0.0512837 0 0 0 -0.345102 -3.70533 0 0 0 0 -0.126637 0 0 -0.240879 -4.00315 -0.521071 0 -0.251083 0 0 -0.0671356 -0.015108 0 0 0.531265 -2.09011 0 0 0.0183845 -3.99218 0 -0.729793 -0.871505 -1.23512 0.0349115 -0.858085 -0.141562 0 0.295777 -0.196389 0.21866 1.65127 0.272947 -0.414028 0 0 -0.181251 3.81202 0 -0.176517 -0.113574 0.211579 0 0 0 0 -0.297062 -0.060919 0 1.26896 -0.135368 0 0 0 3.42442 0 0.27285 4.55672 0 0.452916 0.0887401 2.08315 0 0.342476 0.802843 -2.48837 10.9201 0 0 0 -0.0730653 -0.0124474 0 0 0 0.00182269 -0.0405835 0 0.00106528 0 -0.00422685 -0.0170696 0 0 0 0 -0.0429216 0 -0.00342101 0 -0.258424 0 -0.0458017 -0.264329 0 6.97864e-05 0 0 -0.0961793 -0.00375232 -0.0112272 0 -0.00148637 0 -0.00249902 -0.161482 -0.00786621 -0.0516328 -0.0101126 0 -0.000307305 0 0 0 -9.14009e-05 0 0 0.00992275 -0.00384651 0.0495554 -0.0483681 0 0 -0.0180382 0 0.00419689 0 0 -0.0281579 -0.0349395 -0.149087 -0.0445674 0 0 0.167946 0.0709361 -0.00211162 -0.182974 -0.24212 0 -0.288487 -0.00684918 -0.0280091 0 0 0 0.775496 0 0.083149 0.721274 0 -0.00828919 0.0920551 0.254285 0 0.00493034 -0.00784374 0.0226789 0.480587 0 0.196971 -0.0730653 0.00618773 -0.0124474 0.187312 0.100248 -0.0816111 -0.147754 0.116097 0.00846553 -0.0273501 -0.119948 0.000681343 -0.0155437 -0.00859918 0.0102315 -0.0256739 0.0987124 -0.85107 0.190103 -0.159167 -0.0153045 -0.106026 -0.0329459 -0.187762 -0.199874 0.218767 0.00504613 -2.65535 0.210885 -1.262 -0.333484 -0.00078935 -0.77434 -0.563381 -0.0116288 0.00485597 0.0398699 0.0460823 -1.41363 -0.00676374 -0.0262907 -1.04943 -1.24268 -0.00371518 0.0306642 -0.102396 0.0201118 -0.285275 0.122355 0.507312 0.0321442 0.0915137 1.13303 0.0119727 0.366898 -0.0395414 0.131051 -0.126539 -0.165272 -1.34083 0.105109 -0.111644 -0.220795 -0.230563 -0.188256 0.851612 0.0173772 0.152135 0.00337209 0.0374127 -0.00611482 -0.0177425 0.0212864 -0.10566 0.0393802 7.77942 0.189394 2.24691 -0.225338 -0.486676 3.61008 0.021604 -0.0784784 0.220782 0.855418 -0.012345 -0.0604828 0.316571 -0.532523 1.55099 0 +297 0 0 0 0 0 0.194774 0.508754 -0.687788 -0.968522 0 0 0.144037 1.92367 0 2.9485 0.0157747 0 0 0 0.0809667 2.44324 0 0 0 0 -0.292667 0 0 -0.796563 -0.826677 0.950176 0 0.0436463 0 0 -0.312271 0.0132435 0 0 0.688466 1.11011 0 0 0.199332 6.85532 0 0.909046 -0.725359 0.16461 -0.376023 1.51469 -0.583111 0 -0.27136 0.42495 -0.22126 0.189716 0.403122 0.544502 0 0 -0.221777 -0.379473 0 -0.885287 -0.334805 0.081501 0 0 0 0 0.390775 0.682974 0 -1.24403 0.523085 0 0 0 1.67791 0 -1.48997 2.84455 0 -1.09321 1.13349 -0.840466 0 -0.928594 0.917217 -1.72143 2.4015 0 0 0 -0.0419757 -0.0123504 0 0 0 0.001155 0.0350618 0 0.000362938 0 -0.00184645 -0.0150871 0 0 0 0 -0.0765954 0 -0.00584633 0 -0.156623 0 -0.0174925 -0.0803971 0 0.000783337 0 0 0.0130234 0.00020496 -0.00204684 0 0.00246298 0 0.00258743 -0.0712746 0.00633147 0.00268707 -0.00634966 0 -0.000134293 0 0 0 0.000180185 0 0 -0.00055069 0.00411478 0.0115542 -0.00351088 0 0 0.0118311 0 -0.00448959 0 0 -0.00573735 -0.012017 -0.114378 -0.0125727 0 0 0.0790439 0.0334608 0.011451 -0.0706923 -0.0609115 0 -0.036593 -0.00963436 0.111534 0 0 0 0.418646 0 0.0227734 -0.0579467 0 -1.40149e-05 0.0110291 0.0748599 0 -0.000258033 -0.00245389 0.0132924 -0.0150048 0 0.194774 -0.0419757 0.508754 -0.0123504 0.161562 0.0823167 -0.133283 -0.275716 -0.233578 0.00721792 -0.0587869 -0.0716834 0.000626152 -0.010576 -0.0109316 -0.00207457 -0.0502749 0.0727104 -0.0155556 1.8213 0.346817 0.0574567 -0.0590363 -0.0230801 -0.407849 0.0323529 0.0161656 0.0329053 2.88363 0.0697137 1.16724 1.48421 -0.000877546 -0.377545 0.626063 -0.00763186 0.00160261 -0.0140185 0.0105019 0.0837226 -0.0243381 0.00786021 1.94979 1.54539 -0.00688414 0.00906481 0.176453 0.233241 0.07213 -0.34886 -1.85902 0.543828 0.0517728 0.203862 0.0184482 0.166279 -0.0584003 -0.088161 0.326869 -0.533529 -1.07416 0.352674 0.0491922 0.36666 3.71473 0.00941763 -0.159882 0.0312591 -0.129516 0.387743 0.0258282 -0.0117736 -0.0147842 0.144636 -0.0510605 0.0242662 -7.1953 0.387712 1.9581 -0.297095 -0.16165 0.90132 0.0148709 -0.129993 0.478957 -0.588228 -0.00909316 -0.0546853 0.0592964 -0.10267 -0.187871 0 +298 0 0 0 0 0 -0.185026 -0.0200537 0.2436 1.3819 0 0 0.0638382 -0.163954 0 -1.40566 -0.016345 0 0 0 -0.0569278 -3.42358 0 0 0 0 0.0911094 0 0 -0.00579696 1.5113 0.0265339 0 0.0293007 0 0 -0.0440814 -0.0341548 0 0 0.16147 -0.709906 0 0 -0.0410956 -3.55416 0 0.222316 0.173274 -0.252877 0.228741 -0.800832 0.381525 0 0.102023 0.0742138 -0.175823 0.839327 0.0825575 -0.00638767 0 0 0.2109 5.50597 0 0.982763 0.281577 -0.361148 0 0 0 0 0.146448 -0.223893 0 4.08011 0.320961 0 0 0 -1.4014 0 0.554294 -2.99484 0 0.652529 -1.83782 -1.51507 0 0.656954 -2.43695 2.0011 -6.10701 0 0 0 -0.208368 -0.0170389 0 0 0 0.00816571 0.000913998 0 0.00133196 0 -0.00359996 -0.00428782 0 0 0 0 0.0267504 0 -0.000622057 0 0.037775 0 0.0554176 0.091447 0 0.00193551 0 0 0.295249 -0.00293694 0.0023059 0 0.000281539 0 -0.000112023 -0.00978123 0.0247234 -0.0410924 -0.00452246 0 -0.000259893 0 0 0 1.36582e-05 0 0 0.00774447 -0.000225159 0.0845014 -0.0165649 0 0 0.0191472 0 0.000245669 0 0 0.0114183 -0.0101959 -0.00248603 -0.0169195 0 0 0.0140573 -0.00286886 0.0104851 0.0168627 0.05412 0 0.062545 -0.00289743 -0.112658 0 0 0 -0.228078 0 0.0723465 -0.777555 0 -0.00588957 0.000445546 -0.192898 0 0.00380581 -0.0206214 0.0536417 -0.384568 0 -0.185026 -0.208368 -0.0200537 -0.0170389 0.451383 -0.078864 -0.0839857 0.0860937 -0.821243 0.00611191 0.0676421 -0.157434 0.000552046 -0.0188914 -0.00782942 -0.0315412 0.0210495 0.0605242 0.0603476 -0.566846 -0.460343 0.0847187 -0.22174 0.0988878 0.173139 0.122818 -0.426748 -0.0310228 -5.85517 0.227893 -2.50243 0.083154 -0.000705677 0.760948 -1.31 -0.0180235 0.00239946 -0.00838804 0.0445299 0.763713 -0.065947 0.0212702 -1.55364 -0.0504978 0.0081708 0.0155164 0.16386 -0.151194 -0.272679 0.0932122 -0.440954 0.376642 -0.0097212 -0.501712 0.0103248 1.06045 -0.12665 0.0770093 -0.214389 -0.159107 -0.88893 0.472767 0.0290624 -0.062772 -4.25088 0.0683207 0.85475 0.0646266 0.10227 -0.123444 0.0366662 0.00917044 -0.00775183 -0.0226934 -0.112689 0.0651871 15.4259 0.127704 -1.24214 -0.03007 -0.914231 -1.21083 0.0184918 -0.0307064 -0.0613583 -0.43314 -0.00756916 -0.00716121 -0.204373 0.278832 -1.08092 0 +299 0 0.828475 -0.227817 0.00900215 0.0751083 0.0721073 -0.185493 0.511331 -0.272676 0.0996131 -0.325497 0.128316 0.412092 -0.000226755 2.23775 0.00504363 -0.167434 0.45174 0.0176449 0.00514388 0.979675 -0.00524064 0.561611 0.00029289 -0.152752 0.3471 -0.319137 -0.0160735 0.5218 0.339322 0.238501 0.00549606 0.133152 0.699883 0.00412082 0.443634 0.00635735 -0.258446 -1.15844 0.153045 0.138729 -0.00423477 -0.45825 0.00767437 3.09807 -0.0744308 -0.39072 0.435769 0.146237 -0.0233615 0.578326 -0.264417 -0.529602 -0.0117441 0.000385155 -0.0475529 -0.815977 -0.271002 0.0129588 0.273567 0.00902048 0.453072 -0.215505 -0.532307 -0.552418 0.171972 -0.344673 -0.148136 -0.39804 -0.00892695 0.135752 0.0992269 0.0271199 0.161195 -0.209072 -0.0858992 0.0995409 9.08677 3.10277 1.89396 2.46231 -1.04473 1.58173 0.782371 -0.298995 0.111143 0.957471 0.00324765 -0.00596296 0.0262 -0.0571314 -0.306384 0 0 0 0 0 0.00900215 0.0751083 -0.00103266 0 0 0 0 -8.18937e-05 0 -0.022937 0 0 -0.00228734 -0.00116516 -0.0128496 0 -0.00188106 -0.0295269 -0.137525 0 0 -0.0921106 -7.60456e-05 0 -0.00870465 -0.844972 0 0 -0.0107685 -0.231356 0 -0.0828865 0 -0.00628084 0 0 -0.000776626 0 0 -0.662113 -0.00175935 -0.0332824 0 -0.0215567 -0.0304422 0 0 -0.0722094 0 -0.00239784 -0.600446 0.0107994 0 0 0.00494238 0.00126979 0 -0.00794641 -0.00151797 -0.0251572 -0.985147 -0.0530811 -0.00757301 0 -0.0102072 0.0829335 -0.19624 -0.00878613 0.0600421 0 0 0 4.411 0.164534 0.916098 0.0302809 -0.0628251 0.617384 0.00305993 -0.00494697 0.0128822 0.196296 0 0 0 0 0 0 0.0721073 0 -0.185493 0 0 0 0 0.0825088 -0.0186773 0 0 -0.0624914 0 -0.00532717 0 -0.00926422 0 0 0.509347 0 1.05942 -0.0356491 -0.0450622 0.0767067 0 0 -0.0657375 0 3.58094 0 -0.137729 0.535027 0 -0.292226 1.26077 -0.00456272 0 0.0128833 0 0 -0.0100689 0 1.65879 0.312344 0 0 0.0536712 0 0 0.402576 -1.70285 0.139448 0 0.308547 0 -0.25963 -0.0240108 -0.0623415 0.0657872 0.116805 0.332299 0.0898614 -0.0686946 0.120356 2.78238 -0.0695555 0 0 0 -0.130879 0.0718254 0 0 0 0 0.0185907 -4.71606 1.10517 -0.816125 0.530104 -0.624423 0.850976 0.0812976 -0.0633518 0.0628755 0.168785 0 0 0 0 0 0 +300 0 0.777555 0.0996608 -0.000852917 0.0159573 0.0307995 -0.257735 0.537866 1.23165 0.00295034 0.131484 -0.00714218 -1.65347 1.34473e-05 -2.34001 -0.00896611 -0.0378696 0.895931 0.0435371 -0.0132548 -1.19702 0.00908184 0.0334592 -9.93678e-06 0.0555922 0.215363 -0.113808 -0.000970742 0.343077 -0.114131 -0.764254 -3.98959e-05 -0.220503 0.0172518 -0.016476 0.203955 -0.00214841 -0.0242441 -0.0497914 0.0213911 -0.760866 0.000125725 -0.234915 -0.00125297 -5.07939 -0.00122399 -0.726811 0.148861 -0.333571 0.00855344 -0.908964 0.207672 4.12151 0.0147874 -0.00196556 0.021031 1.96392 0.141679 0.0285161 -0.0314908 0.000315358 -0.0321739 0.226048 0.72275 0.746972 0.145183 -0.514705 -0.0133502 0.156346 -0.00085521 0.0942933 -0.0189673 -0.0679718 -0.11307 1.15988 -0.052632 0.516597 1.90667 -0.390966 -1.6807 -0.549145 0.659141 -1.87782 -0.236632 0.215883 -0.227746 -1.34414 5.34067e-05 -0.000509832 0.00304254 -0.013681 0.103052 0 0 0 0 0 -0.000852917 0.0159573 0.000299522 0 0 0 0 1.31779e-05 0 0.00998103 0 0 -0.00033191 -0.000343957 0.00267652 0 0.000406404 -0.00123329 0.0562199 0 0 0.0422318 -1.92214e-05 0 -0.0010642 0.00126144 0 0 0.00948347 -0.0233107 0 -0.0265286 0 0.0011091 0 0 0.000253455 0 0 -0.0497115 0.000274496 -0.00620007 0 0.00596095 0.0152758 0 0 -0.0128943 0 0.000405323 0.120033 0.00502981 0 0 0.000904872 -0.000602083 0 -0.00465295 0.0358136 -0.00528869 -0.0366178 0.0222644 0.0123083 0 -0.00584898 -0.0429574 -0.0561091 0.0164385 -0.0153863 0 0 0 0.586772 0.0426068 -0.136398 0.00364041 -0.0131928 0.077433 0.000481714 -0.0018281 0.0107005 -0.0499157 0 0 0 0 0 0 0.0307995 0 -0.257735 0 0 0 0 0.264284 -0.478919 0 0 -0.148152 0 -0.0153917 0 -0.0103791 0 0 0.069084 0 -0.221561 0.096135 -0.0712538 0.0011827 0 0 -0.132462 0 0.257769 0 -1.52599 -0.73036 0 0.664283 -0.484727 -0.00598329 0 0.043001 0 0 -0.0533882 0 -0.578984 -0.0617479 0 0 -0.0279194 0 0 -0.309218 1.22617 -0.0286423 0 -1.3329 0 0.38224 -0.0150291 0.0540259 0.000559412 -0.0530748 -0.187689 -0.201054 0.0234928 0.644104 -4.06497 -0.0105916 0 0 0 0.00303218 0.0260281 0 0 0 0 0.0437043 11.0162 0.646499 -0.789516 0.0571052 0.155808 -0.213259 0.0286265 -0.0317508 0.0679031 -0.393804 0 0 0 0 0 0 +301 0 -0.261322 0.0532551 -0.00899504 -0.188211 0.109561 0.00607325 0.35924 0.873657 -0.0494936 -0.101175 -0.0756037 -0.144853 8.87753e-05 0.251319 -0.00473977 0.436084 -0.36533 -0.0366202 -0.00448625 1.2211 -0.0175698 -0.164453 -0.000133261 -0.0969299 0.018563 0.316866 -0.00851011 -0.054626 0.118919 -0.059693 -0.00254285 -0.102261 -0.293703 -0.078919 -0.0118758 -0.00372633 -0.00214786 -0.303977 -0.0704593 0.358812 0.00147715 -0.412454 -0.00347521 0.732381 0.0234659 0.018949 0.0209228 -0.0791389 0.00518509 0.196904 -0.191833 -1.43598 0.0101109 -0.00903731 0.0658301 1.62465 -0.0226489 0.0775253 0.23342 -0.00102215 -0.647539 -0.820199 1.05602 -0.0260684 -0.0145147 0.0821805 0.148825 -0.0168065 0.00412529 0.684151 -0.182145 -0.0131954 0.120656 0.695207 0.0197923 0.263572 2.64582 2.23378 -2.33533 0.906144 -0.690559 0.799347 0.733884 -0.616607 0.789656 -1.67562 -0.00102389 0.00236447 -0.0131884 0.0360023 -0.107375 0 0 0 0 0 -0.00899504 -0.188211 0.000576114 0 0 0 0 4.63181e-05 0 0.0133876 0 0 -0.00135089 -0.000432834 0.00822831 0 0.000991534 0.0125536 0.130716 0 0 0.00570767 -3.43647e-05 0 0.0064791 0.400656 0 0 0.000701393 0.0847365 0 0.068195 0 0.00179918 0 0 0.000255052 0 0 0.268951 0.000959915 -0.0183501 0 0.0116775 -0.0131485 0 0 0.0592131 0 0.00133413 0.252394 -0.00349062 0 0 0.0026167 -0.000737558 0 7.17095e-05 -0.0339214 0.00271638 0.410744 0.010819 0.00804077 0 0.00790527 -0.0417237 0.0911221 0.00377529 -0.0376896 0 0 0 -2.36974 -0.0642525 -0.548776 -0.00504872 0.0178498 -0.353144 0.00169137 -0.00267451 0.00350851 -0.11589 0 0 0 0 0 0 0.109561 0 0.00607325 0 0 0 0 0.0788167 0.410675 0 0 0.296827 0 0.0193719 0 0.0275495 0 0 0.0392691 0 -0.142474 0.0958021 0.164169 0.0228755 0 0 0.336803 0 2.77759 0 1.08134 0.176114 0 0.466503 0.1053 0.0103864 0 0.0316262 0 0 0.0324173 0 1.0921 0.165609 0 0 0.0454205 0 0 0.327953 2.16144 -0.0902993 0 0.337099 0 -0.360214 0.167434 -0.163934 0.230138 0.0177033 0.0937939 -0.108769 -0.0123256 -0.250899 -0.728928 -0.0716424 0 0 0 -0.180941 0.0113599 0 0 0 0 0.0328455 -9.04231 -0.894213 -1.93207 0.0406849 -0.0528225 -0.0647503 0.0290375 -0.0625775 0.0577117 -0.342696 0 0 0 0 0 0 +302 0 0.245189 0.338607 -0.00953057 -0.1388 0.133191 0.259783 -0.190073 -0.890369 -0.036682 0.399448 -0.052621 0.136941 0.000142547 0.735155 0.0032191 0.584354 -0.253513 0.0533758 0.00784158 2.76202 -0.0110374 -0.353286 -0.000122377 -0.0303152 -0.471391 0.549246 -0.0158809 -0.48163 -0.144406 0.278142 -0.00214498 0.0473452 -0.579161 -0.0258951 -0.321198 -0.00273208 -0.119364 -0.800795 -0.122259 1.75265 0.00257614 -0.546611 -0.00716704 0.756478 0.0434759 1.01953 -0.381579 0.135673 0.00930111 0.900675 0.0286382 2.19695 0.0148834 0.00407451 -0.00325446 1.31675 -0.244775 -0.0157748 0.069484 -0.00181662 -0.63993 -1.53315 0.229514 0.98335 -0.0380201 -0.0209281 -0.047501 -0.0921043 -0.00197182 0.0546084 0.219214 -0.0230583 0.174796 0.0595903 0.637674 0.0444078 7.23994 1.16641 2.53579 0.776119 0.377569 0.0412438 0.379471 0.0579918 -0.743926 1.31445 -0.00359315 0.00847069 -0.0202675 0.0624207 0.17428 0 0 0 0 0 -0.00953057 -0.1388 -0.00289562 0 0 0 0 -0.000143147 0 0.00669119 0 0 -0.00341592 -0.00299558 0.00458952 0 0.000416922 -0.00502164 0.0676027 0 0 0.0399249 -0.000214726 0 0.000375404 0.068984 0 0 0.00808187 -0.0340049 0 0.00446361 0 0.00191064 0 0 0.000455101 0 0 -0.107109 -0.00200032 -0.0477908 0 -0.0405536 -0.0387372 0 0 0.0708652 0 -0.00591527 0.0306459 0.00785411 0 0 0.0069791 0.00499932 0 -0.0102784 -0.0314001 -0.0147222 -0.0874847 -0.0251692 0.0167769 0 -0.00722213 -0.0089274 0.00279426 -0.00853431 0.0382346 0 0 0 0.36869 0.0537389 -0.0694194 0.0100537 -0.0173313 0.0346992 0.00441486 -0.00693169 0.0127906 -0.0200784 0 0 0 0 0 0 0.133191 0 0.259783 0 0 0 0 -0.161373 -0.352357 0 0 0.45728 0 0.0521866 0 -0.00242335 0 0 0.217603 0 -0.853875 -0.0524438 0.161176 0.00817064 0 0 -0.0629191 0 0.344289 0 -2.20831 0.17767 0 -0.596392 -1.3446 0.0130728 0 -0.00413172 0 0 -0.0327124 0 0.22277 0.537638 0 0 0.0359335 0 0 0.13111 1.05937 0.0258116 0 -0.464988 0 -0.0514698 0.0318726 -0.0149495 -0.140719 -0.111127 -0.667187 -0.0528349 0.0376034 0.153017 0.698065 0.0127474 0 0 0 -0.122597 -0.0381061 0 0 0 0 0.103938 10.6121 -1.51834 2.80216 0.383343 -0.534134 1.00046 -0.0661805 0.0726661 -0.171521 0.286824 0 0 0 0 0 0 +303 0 0.701385 0.473382 -0.00394457 -0.0124018 0.032094 -0.0738926 0.843668 1.48861 -0.0439255 0.0869758 0.0199614 0.725826 0.000162125 -0.193175 0.0109287 2.33269 9.65178 -0.0320308 0.014366 1.15643 -0.00514527 -0.0456563 -0.000229352 0.0778684 0.59939 0.542942 -0.0076697 0.523609 0.995957 -0.109771 -0.00333338 0.221644 -0.0760476 -0.082577 0.326288 0.00159992 0.0340428 -0.753378 -0.0120273 0.0567843 0.00235258 -0.182525 -0.00236829 2.62721 0.0276998 -0.100857 0.710887 0.284729 0.00973044 -0.358326 0.128316 -4.44203 -0.00298237 0.0095654 -0.102276 -3.41503 0.0983733 -0.0198191 -0.0860415 -0.00560146 -0.371209 -0.0340378 -2.17819 0.174888 -0.241503 0.146385 -0.226721 0.291165 0.00690917 -0.321965 -0.194903 0.0918187 -0.123382 -0.879869 -0.301374 0.495314 5.75788 -0.19804 -0.0817186 -0.300038 0.623078 -2.04273 -0.462708 0.309147 -0.146263 -1.16958 -0.0022893 0.00267505 -0.0578715 0.0855701 -1.20199 0 0 0 0 0 -0.00394457 -0.0124018 0.00105162 0 0 0 0 3.98832e-05 0 0.00523212 0 0 6.18943e-05 -0.000770411 0.00304804 0 0.000447739 -0.00719191 0.0228503 0 0 0.0348468 -6.0276e-05 0 -0.00487088 -0.140863 0 0 0.011527 -0.0467168 0 -0.0461537 0 0.00257104 0 0 0.000862442 0 0 -0.135193 0.000570742 0.0018865 0 0.0147559 -0.0183476 0 0 0.0439801 0 0.00214775 0.00578039 -0.00270481 0 0 -0.000106833 -0.00181518 0 -0.00614003 0.0824055 -0.00372716 -0.160161 -0.00380978 0.0149956 0 -0.0137475 0.00602307 -0.0982959 0.0167515 0.0311465 0 0 0 0.854448 0.002785 0.006273 0.0138108 -0.0345343 0.0863216 3.87366e-05 -0.00213163 0.00757496 -0.0179519 0 0 0 0 0 0 0.032094 0 -0.0738926 0 0 0 0 -0.207844 -0.328203 0 0 0.136339 0 0.0138804 0 -0.00647804 0 0 0.0192917 0 -0.72158 -0.0692462 0.0578897 0.00860583 0 0 -0.0620408 0 -0.0563389 0 -4.45562 -0.802656 0 -0.349186 -1.77412 0.00526433 0 -0.0411078 0 0 -0.0369496 0 -1.04286 0.484942 0 0 0.0635057 0 0 -0.129876 -0.00407034 -0.049749 0 -0.703887 0 0.238497 0.0539961 -0.0227155 0.159533 -0.124655 -1.65167 -0.345168 0.0615342 0.237206 -4.51606 -0.0180442 0 0 0 0.036214 -0.0278595 0 0 0 0 0.0278935 31.2311 -0.141565 4.13712 0.485418 -0.155912 0.557922 -0.0436095 0.0425493 -0.0683143 -0.0154108 0 0 0 0 0 0 +304 0 -0.218835 -0.0718726 -0.0141834 -0.201997 0.261602 -0.107931 0.590015 0.430099 -0.0575031 -0.155846 -0.104617 0.724072 0.000222589 1.42395 0.0054871 0.301369 1.1579 -0.103107 0.0124652 1.96073 -0.0354653 0.0626949 -0.000200231 -0.166641 0.45451 -0.012414 -0.0199155 0.345847 0.920362 0.258393 -0.00344001 0.0462428 0.0691411 -0.04497 0.329695 -0.00363363 -0.10755 0.414768 -0.167289 0.453559 0.00396418 -0.195466 -0.00829825 2.851 0.0656843 -0.157079 0.623154 0.13971 0.00485274 0.169738 -0.180652 -0.0269499 -0.00132398 0.0139591 0.0194457 -1.06287 0.0282148 0.0149706 0.324026 -0.00319497 -0.482454 -3.696 0.341996 -1.28803 -0.046519 -0.245438 0.225307 -0.110921 -0.00215154 0.756632 -0.248662 0.0605727 0.14607 -2.94485 -0.599684 0.164908 4.72582 3.63297 -2.17184 2.01495 -0.634581 -1.68952 1.06767 -0.568181 0.352531 -0.666437 -0.00542861 0.0120777 -0.0776689 0.173316 -1.11076 0 0 0 0 0 -0.0141834 -0.201997 -0.00245238 0 0 0 0 -0.000141111 0 0.00799507 0 0 -0.00432676 -0.00408514 0.0072342 0 0.000576559 -0.00766202 0.105462 0 0 0.025545 -0.000293437 0 0.000244322 0.022165 0 0 0.00526423 -0.0448546 0 0.00614876 0 0.0018103 0 0 0.000473794 0 0 -0.130153 -0.00196769 -0.0603952 0 -0.0342564 -0.0497898 0 0 0.075333 0 -0.00501151 0.0277637 0.00965646 0 0 0.00884271 0.0042355 0 -0.0112967 -0.044635 -0.0176095 -0.121507 -0.0234507 0.018271 0 -0.00361223 -0.0173831 -0.0290722 0.00538297 0.040605 0 0 0 0.423415 0.0744198 -0.136144 0.0121458 -0.0202598 0.0394764 0.00560821 -0.00908695 0.0172628 -0.0338766 0 0 0 0 0 0 0.261602 0 -0.107931 0 0 0 0 -0.0212627 0.191457 0 0 0.487343 0 0.0424139 0 0.01138 0 0 0.0174306 0 0.357394 0.0108605 0.156488 -0.0495905 0 0 0.0711804 0 2.7895 0 2.34455 0.086817 0 -0.173003 0.911026 0.0104146 0 0.0122378 0 0 0.0307219 0 0.925163 -0.033382 0 0 -0.102538 0 0 0.079882 0.638828 0.0506679 0 -0.39312 0 -0.066218 0.104225 -0.0503903 0.305514 0.0460768 0.0263231 0.0208811 0.0679392 -0.189927 0.940799 -0.0503822 0 0 0 -0.103265 -0.0334134 0 0 0 0 -0.00563797 -18.8746 -1.83789 -0.986373 -0.218576 0.0602405 -0.31621 -0.0664407 0.0714538 -0.192695 0.185257 0 0 0 0 0 0 +305 0 0 0 0 0 -0.491594 0.0629505 0.197927 2.01803 0 0 -0.140343 -0.105087 0 0.163364 -0.00825546 0 0 0 -0.0768316 -5.95868 0 0 0 0 -0.0579931 0 0 -0.452441 3.95198 0.19715 0 -0.0153502 0 0 -0.135878 -0.0218406 0 0 -0.432115 -1.83087 0 0 -0.165926 -0.852087 0 -0.246896 0.415524 -0.0285672 0.241528 -0.439159 0.352733 0 0.0870988 -0.0358081 0.24833 -0.0271581 0.0894546 0.121676 0 0 0.635556 2.74962 0 0.755322 0.508101 0.835644 0 0 0 0 0.125023 -0.333525 0 0.815351 0.55253 0 0 0 -2.44572 0 0.549427 -4.79223 0 0.207128 0.0055279 -5.01001 0 0.193221 -0.198489 0.658698 -8.81119 0 0 0 -0.0714133 -0.00177383 0 0 0 0.00477551 -0.00490965 0 0.000212941 0 5.36144e-07 -0.00192596 0 0 0 0 -0.00788096 0 -0.000476045 0 -0.0627039 0 0.054854 0.0118097 0 -5.4733e-05 0 0 -0.00479592 1.01725e-05 0.000603192 0 -2.01434e-05 0 -0.000350612 -0.00958588 -0.00164009 0.000142437 -0.000325887 0 3.82992e-08 0 0 0 -1.4385e-06 0 0 2.0862e-05 -8.10041e-05 -0.0292484 -0.00122037 0 0 -0.000146473 0 0.000718167 0 0 -0.00230562 1.84569e-05 0.0258847 0.00151335 0 0 -0.0105804 0.0421407 -0.000181271 0.0551496 -0.00599688 0 -0.0177925 5.61624e-05 0.0405034 0 0 0 0.0610614 0 -6.08182e-05 0.00112039 0 -2.24305e-06 0.000103837 0.0307537 0 -3.87977e-06 0.000179605 -0.000337536 0.000421617 0 -0.491594 -0.0714133 0.0629505 -0.00177383 -0.196941 -0.124673 -0.00805062 0.299942 -0.0294037 0.000136015 0.0711117 -0.0147478 2.5162e-06 -0.000248546 -0.000165632 -0.000821129 0.040998 0.00710977 0.536502 -0.841415 0.213342 0.231682 -0.0587573 0.0816711 0.450023 0.211641 -0.0405956 -0.00885813 8.57196 0.115301 1.25914 1.55481 -3.19628e-06 1.50118 0.648132 -0.00131393 -0.00054675 0.0430049 0.0022172 1.29245 3.15075e-05 0.0345143 3.4311 1.42941 0.0069681 0.00261996 0.240579 -0.0894648 0.0480715 -1.46132 -0.674124 -0.581121 -0.10158 -5.07307 0.000167332 -0.36428 0.000596147 0.0285567 0.0305107 -0.4933 -0.500707 -0.0556984 0.155909 -0.216621 -14.9463 0.168141 -0.979761 0.0106096 -0.465013 -0.457043 0.000184143 -0.0712622 -0.000166439 0.25049 0.148723 0.000152751 -2.31963 0.0117807 -3.13296 -0.00795251 -0.500809 -1.35117 6.25386e-06 -0.147052 0.146248 -1.26583 -1.58506e-05 -0.0661734 -0.103063 0.034031 -0.962292 0 +306 0 0 0 0 0 -0.127274 0.246059 -0.867716 -2.02587 0 0 0.0379413 0.41444 0 0.931415 0.000154786 0 0 0 -0.0166043 -1.50732 0 0 0 0 -0.4937 0 0 -0.89486 -2.41635 0.418537 0 0.0360488 0 0 -0.278633 0.001698 0 0 0.260778 -0.266678 0 0 0.0197932 1.15455 0 0.261443 -1.29068 0.147088 -0.116834 -0.693055 -0.129631 0 0.0164162 0.107949 -0.0526412 -1.33927 0.277026 -0.294463 0 0 -0.612506 0.395289 0 -0.590637 0.198036 0.428285 0 0 0 0 -0.265647 0.263585 0 -2.8165 0.565459 0 0 0 3.18216 0 -0.360316 3.53484 0 -0.105505 0.32689 3.42249 0 -0.292882 1.01532 -2.01414 7.32748 0 0 0 -0.0402713 -0.00113684 0 0 0 0.00415241 -0.000257388 0 0.000159118 0 8.95827e-09 -0.00122889 0 0 0 0 -0.0186452 0 -0.000354168 0 -0.0551269 0 0.0464793 0.0113697 0 -1.61371e-05 0 0 0.00826247 -1.48514e-07 0.000377426 0 -1.05488e-06 0 -1.83906e-05 -0.0123817 -0.000292205 3.9324e-07 -0.000226077 0 1.62831e-10 0 0 0 -7.53586e-08 0 0 1.52262e-06 -4.32079e-06 -0.0102754 -7.06124e-05 0 0 2.124e-05 0 3.75484e-05 0 0 -9.32363e-05 -2.47642e-06 0.036811 8.83517e-05 0 0 -0.00178226 0.0270377 -6.20727e-06 0.0384361 0.0215728 0 -0.0173907 9.30952e-06 0.0338706 0 0 0 0.0535761 0 -1.67907e-07 -0.00792849 0 -6.19263e-09 4.80617e-06 0.0190969 0 -1.07113e-08 8.31314e-06 -1.47239e-05 -0.00708652 0 -0.127274 -0.0402713 0.246059 -0.00113684 -0.166361 0.00620779 -0.00561652 -0.2176 0.0171169 8.12645e-05 0.0364737 -0.0160083 1.58454e-06 -0.000170921 -0.000110269 -0.000357498 0.0390072 0.00392356 -0.290652 -0.57665 0.371606 -0.189002 -0.0317028 -0.0653681 0.303411 -0.220346 -0.0196979 0.00541563 3.37399 0.189562 -0.0590462 1.55418 -2.06871e-06 -1.21436 0.592334 -0.000768057 0.00543396 -0.0397886 0.0463977 -1.06186 0.000539242 -0.0430929 2.69943 -0.806674 0.00506117 0.0222812 -0.0450569 -0.00935109 -0.154174 -0.293566 0.841132 0.42686 -0.0674709 -2.2199 0.000115843 0.664871 0.000750595 -0.0643881 0.0135908 0.194913 -0.310495 -0.000825927 -0.160246 -0.149871 -10.0891 0.0452199 0.0179868 0.13561 0.199456 -0.310686 0.000149736 -0.126507 -9.81821e-05 0.190292 -0.0689764 -0.000898332 0.108777 0.0148301 3.12467 -0.00354825 -0.266214 2.39058 1.22235e-05 -0.15117 0.255074 0.735411 -8.74723e-06 -0.18267 0.41003 -0.629461 1.35573 0 +307 0 0 0 0 0 0.193737 0.23035 0.165666 -0.482814 0 0 0.118573 0.510868 0 2.11647 0.0100328 0 0 0 0.070214 3.60956 0 0 0 0 -0.291771 0 0 -0.421433 -3.14224 0.538466 0 0.0139174 0 0 -0.112357 0.0174528 0 0 0.558375 1.52657 0 0 0.12417 2.9359 0 0.85527 -0.832383 -0.0754486 -0.0870088 2.06639 -0.158911 0 -0.0235554 0.228474 -0.405341 -2.47029 0.0534736 0.570984 0 0 -0.0682578 -4.41634 0 0.323685 -0.131456 -1.16402 0 0 0 0 0.341648 0.0279274 0 -2.96154 0.368252 0 0 0 -0.545828 0 -2.20029 7.00735 0 -0.576782 1.29255 0.901259 0 -0.705375 1.66827 -2.73953 8.46165 0 0 0 0.00154034 -0.000265888 0 0 0 0.0032784 -0.00779389 0 9.45403e-05 0 6.44737e-07 -0.000317129 0 0 0 0 0.00424207 0 -8.4557e-05 0 -0.00219139 0 0.0391729 -0.000879122 0 -2.20529e-06 0 0 -0.00334317 1.07203e-05 0.000346614 0 -3.19711e-05 0 -0.000556583 0.000762774 -0.000824225 0.000149823 -4.97814e-06 0 4.61148e-08 0 0 0 -2.28315e-06 0 0 2.17757e-05 -0.000129468 -0.00202761 -0.00189832 0 0 -0.000232785 0 0.00113761 0 0 -0.00367712 -6.07255e-06 0.0170503 0.00239713 0 0 -0.00312025 0.00910049 -0.000333077 0.0096966 0.0172474 0 0.000734668 0.000117166 0.01927 0 0 0 0.00854196 0 -6.3972e-05 -0.00209486 0 -2.35937e-06 0.000160762 0.00164666 0 -4.08096e-06 0.000278067 -0.000512325 -0.00280266 0 0.193737 0.00154034 0.23035 -0.000265888 0.241524 0.072458 -0.00137717 -0.374794 -0.054887 3.13932e-05 0.00275135 -0.0201387 5.02515e-07 -0.000217907 -2.96931e-05 -0.000780052 -0.0108129 0.00194154 0.652363 0.796667 0.0294704 -0.181631 -0.0292529 0.0397815 -0.151254 -0.285048 -0.0529409 0.0214942 2.68838 0.360184 -1.80192 1.03693 -5.80108e-07 -0.816974 -0.557321 -0.000429609 0.00928874 -0.0795682 0.0703899 -1.75397 -0.000488781 -0.0481199 2.59932 0.319788 0.0020241 0.051709 0.0405985 0.127851 0.0785693 0.973985 2.18424 1.85194 0.0367234 1.32766 2.93428e-05 1.24119 0.000229774 -0.398189 -0.0131975 0.0355023 2.41974 0.00431507 0.103526 -0.0132522 -5.0376 0.40769 0.70121 0.103017 0.59753 0.175565 1.13278e-05 -0.00706109 -4.21977e-05 -0.00130532 -0.261843 0.000384321 3.31958 0.0211317 -2.73064 0.000220228 -1.71805 4.46697 1.96673e-05 -0.568018 0.660431 0.00881553 -4.32849e-06 -0.37625 0.574868 -0.769533 1.63943 0 +308 0 -0.708174 -0.370377 0 0 -0.00248781 -0.303786 1.09526 2.2947 0 -0.275569 0 -0.652688 0 -1.02641 0 -1.10018 -2.90031 -0.0535881 0 0.529983 -0.00362135 0.217637 0 -0.0288172 0.573421 -0.425869 -0.00142814 0.6085 1.36685 -0.365037 0 0 0.540563 -0.0117816 0.363115 0 -0.0212404 2.96695 0 -0.254579 0 -0.0804609 0 -2.20815 0 -0.58322 0.939459 0 0 -0.125339 -0.0470584 1.54172 0 0 0 1.90881 0.0241654 0 0.0290557 0 0.367232 -0.343256 0.863333 -0.0785649 0.0592663 -0.665688 0.202843 -0.0670886 0 0.0451737 0.13989 0 -0.0179236 0.788147 -0.727823 -0.125648 -8.65259 0.292475 -6.25286 -0.270206 0.647564 -6.29832 -0.0388398 0.0378151 0.192651 -5.16446 0 0 0 0 -3.85624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00248781 0 -0.303786 0 0 0 0 -0.0649966 0.29816 0 0 0.0347129 0 -0.00282881 0 0.000843637 0 0 0.232739 0 0.289806 0.0507145 -0.0128633 0.0338991 0 0 0.0270108 0 0.114288 0 1.4922 -0.268901 0 0.299558 0.212456 -0.00162573 0 0.00237588 0 0 0.0220252 0 0.177354 -0.308798 0 0 -0.0201873 0 0 -0.259034 0.930719 -0.0675551 0 -0.911596 0 -0.0890918 -0.0904434 0.126972 -0.0325081 -0.132117 0.286413 0.198956 0.0911262 -0.587026 -6.36908 0.113869 0 0 0 0.055169 -0.0497774 0 0 0 0 -0.0898594 -6.91823 -0.820652 -0.590007 -0.307719 0.296814 -0.857591 0.000517622 -0.0045108 -0.0119064 -0.175733 0 0 0 0 0 0 +309 0 -0.570576 -0.319128 0 0 -0.148403 -0.228157 -0.339015 -1.1202 0 0.213617 0 -1.71261 0 -2.22377 0 -2.56368 -10.5261 0.0132255 0 -2.12592 0.0027588 -0.100725 0 0.0363832 -0.307721 -0.567775 0.00269986 0.369709 0.454057 -0.634203 0 0 -0.620904 0.0110748 -0.0454757 0 0.0339856 -2.33774 0 -1.10034 0 0.157098 0 -5.99352 0 -0.628662 0.431639 0 0 0.744893 0.116597 9.4761 0 0 0 5.97037 -0.12556 0 -0.0738295 0 0.823708 2.9883 0.84425 0.921123 -0.169176 0.161861 -0.06547 0.109438 0 -0.121293 0.113601 0 -0.0618735 5.04532 -0.159389 -0.262523 5.63478 -0.725317 4.28646 -0.0407754 0.0215715 1.39942 -0.221204 0.271787 -0.461101 0.901852 0 0 0 0 -1.28101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.148403 0 -0.228157 0 0 0 0 -0.29013 0.281501 0 0 0.10887 0 0.0164643 0 0.00387835 0 0 -0.399997 0 -0.0937219 -0.0991472 0.0203961 -0.0436409 0 0 0.014879 0 -9.78677 0 -0.94713 -1.30652 0 -0.424718 -0.452655 0.00407784 0 -0.0490477 0 0 0.0404207 0 -3.55177 -1.40446 0 0 -0.157437 0 0 0.239925 2.0522 -0.128927 0 1.6495 0 -0.140268 0.165109 -0.105679 -0.281308 0.0841248 1.40006 0.254969 0.0978064 -0.423457 8.14064 0.069245 0 0 0 -0.0209603 -0.0796439 0 0 0 0 -0.0845971 2.5819 -0.592379 1.5615 0.042469 0.0459978 0.237008 -0.151454 0.156127 -0.128302 0.175136 0 0 0 0 0 0 +310 0 0.329597 0.228685 0 0 -0.0347146 0.102118 -0.926779 -1.73251 0 0.303395 0 -0.709012 0 -1.4433 0 0.260707 -1.23302 0.0338843 0 -1.68366 0.00688876 -0.41599 0 0.0595974 -0.650262 0.421786 0.00183969 -0.308745 -1.05005 -0.33045 0 0 -0.866946 -0.0196236 -0.441423 0 0.00623616 -1.88489 0 -0.393764 0 -0.113485 0 -2.83692 0 0.115451 -0.600897 0 0 0.509667 0.115551 0.999989 0 0 0 5.53616 -0.0558403 0 -0.0645238 0 1.18575 3.76584 1.83731 1.57729 -0.149463 1.16261 0.0392022 0.151472 0 -0.132646 -0.0646177 0 0.0414049 5.45751 0.75423 -0.0888162 3.83135 -2.22147 8.22948 -1.19316 1.33685 4.24916 -0.571999 0.596341 -0.658528 4.4669 0 0 0 0 2.96246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0347146 0 0.102118 0 0 0 0 -0.058027 -0.234744 0 0 0.0905644 0 0.0127481 0 -0.0017286 0 0 -0.409167 0 -0.689437 -0.0229438 0.048408 -0.0228412 0 0 0.0124418 0 -5.042 0 -1.06453 -0.874194 0 -0.180816 -0.861552 0.00548169 0 -0.0146855 0 0 -0.0360235 0 -2.37733 -0.27017 0 0 0.0201994 0 0 0.595425 1.66411 -0.0213231 0 3.27492 0 0.39179 0.0242463 -0.0166695 0.400609 0.22074 0.133991 -0.0262408 -0.0132575 -0.0176593 18.5018 -0.152099 0 0 0 -0.0714932 0.0470898 0 0 0 0 0.0704296 -9.66578 -2.60703 1.94138 -1.4139 1.00657 -0.470394 -0.189518 0.167297 -0.142227 0.0525536 0 0 0 0 0 0 +311 0 -1.16493 -0.199292 0.00149833 0.0360699 -0.156669 -0.071762 -0.476737 1.22069 0.00781737 -0.22048 0.0409605 -0.298629 -3.04838e-06 -0.56248 0.00133365 0.095243 -2.89715 -0.0253537 0.00193337 2.30291 0.00180676 -0.121812 3.90884e-06 -0.0801331 0.119231 0.352089 0.0100272 -0.118742 -1.23079 -0.159654 0.000181136 0.0636259 0.43373 0.0827384 -0.214368 0.00103711 -0.0397812 5.13022 0.0817096 1.08465 -0.000149138 0.26751 0.00184192 -1.57082 -0.00673078 0.531532 -0.514828 0.0945703 -0.0031799 -1.00027 0.0349675 -0.177177 -0.00204023 0.00233811 -0.0149407 -1.24059 0.00638655 -0.0419173 0.0811998 0.000205185 0.092135 -1.89102 0.558225 -1.37911 0.0748445 0.121161 0.877357 0.0619701 -0.000196603 0.548284 0.0748695 0.0305941 0.0817868 -0.966368 -0.0574876 0.302436 -15.765 -0.183474 -5.5303 -1.11195 1.51172 -4.91515 -0.18694 0.286826 -0.0819003 -1.43376 2.67193e-05 -0.000331997 0.00565689 -0.0700687 1.17541 0 0 0 0 0 0.00149833 0.0360699 -0.00211067 0 0 0 0 -6.02966e-05 0 -0.0058755 0 0 1.21474e-05 -6.69348e-06 -0.000570189 0 -0.000138068 7.02993e-05 -0.0247807 0 0 -0.0030703 -5.82672e-07 0 0.00212717 -0.194177 0 0 0.000815298 0.0023887 0 0.0355571 0 0.000104375 0 0 4.43217e-05 0 0 0.0649227 -0.000836797 0.000252365 0 -0.0288473 0.0141675 0 0 -0.0230375 0 -0.000418944 0.0522496 0.00148241 0 0 1.69956e-05 0.00432937 0 -0.00111964 0.0119019 -0.00413105 0.0862809 0.000285902 0.00367446 0 -0.00685669 0.00231733 0.00512549 -0.000908546 -0.0178078 0 0 0 0.0993541 0.00443111 0.0583268 -0.00210575 0.00555236 -0.00423453 -9.50371e-06 -8.11082e-07 -2.74755e-05 0.00361879 0 0 0 0 0 0 -0.156669 0 -0.071762 0 0 0 0 0.394331 0.437768 0 0 0.0154739 0 -0.00921645 0 0.0106044 0 0 -0.923812 0 -0.184518 0.16125 0.0376857 -0.0873935 0 0 0.121398 0 -13.0184 0 3.80527 -1.11291 0 1.22978 0.541212 0.00277703 0 0.0527287 0 0 0.0340882 0 -4.07774 -2.44869 0 0 -0.245779 0 0 0.38529 -0.197524 -0.599743 0 2.50257 0 -1.05922 0.00134915 0.169728 0.361999 -0.103821 -0.299811 0.517992 0.139387 -0.886201 10.6299 0.091723 0 0 0 -0.0355483 -0.0234676 0 0 0 0 -0.0787237 -17.1895 -1.36866 -2.73963 -1.458 1.19496 -2.01399 -0.0547388 0.0427081 -0.0213979 -0.500232 0 0 0 0 0 0 +312 0 0.0770564 0.193714 -9.90077e-05 -0.0104506 -0.0952974 -0.0197658 -0.0322284 -0.349397 -0.000576533 0.158278 -0.0174339 0.607828 1.13806e-07 0.743891 -0.000403665 1.12194 4.85842 0.0388024 -0.000608353 1.95688 0.00830366 -0.0786709 -1.85262e-07 0.0098434 0.0514298 0.255224 0.0104781 0.34319 0.242777 0.0489654 -1.06452e-05 -0.026509 -0.245157 0.0316443 0.0279045 -0.000298753 0.0347238 -2.11298 -0.0219627 0.757671 1.2617e-06 0.266684 -0.00042418 2.74703 -0.000242401 0.208365 0.331794 -0.0422757 0.000686637 0.735216 0.177067 -4.22961 0.000522617 -0.000739129 -0.00035063 -1.77943 -0.223284 0.035923 -0.107606 1.23303e-06 0.346325 -1.09771 -0.0815991 0.803397 -0.423364 0.238273 -0.479282 0.173852 1.4234e-05 -0.127374 0.0646512 -0.0226427 -0.0252834 -0.328947 0.0194752 -0.0650509 9.03557 0.132358 2.64305 0.626663 -0.635328 2.40424 -0.339219 0.462481 -0.598107 1.06292 9.62262e-07 3.74771e-05 -0.000366132 0.0166124 -0.231853 0 0 0 0 0 -9.90077e-05 -0.0104506 0.000162609 0 0 0 0 3.80574e-06 0 4.22105e-05 0 0 1.66074e-06 3.73152e-07 3.23221e-05 0 5.56419e-06 -3.72974e-05 0.0010167 0 0 -0.00682546 -1.10711e-07 0 -0.000107892 0.00631866 0 0 -0.000574889 -0.00305167 0 -0.00304199 0 -0.000104275 0 0 -8.57799e-06 0 0 -0.0175421 5.32586e-05 0.000185664 0 0.00227597 -0.000939073 0 0 0.00139473 0 3.5505e-05 -0.00629554 2.99528e-05 0 0 -1.04886e-05 -0.000367683 0 0.000221196 -0.00100819 7.8413e-06 -0.0110077 0.000977912 0.00123965 0 0.00096981 0.00106647 0.00136647 -0.000415924 0.00286597 0 0 0 -0.0159853 -0.00377599 -0.00278367 -6.19273e-05 -0.000554627 0.00730314 -1.07051e-05 -1.88675e-05 -7.32583e-06 3.81426e-05 0 0 0 0 0 0 -0.0952974 0 -0.0197658 0 0 0 0 -0.015777 0.62478 0 0 0.15377 0 0.0149507 0 0.0213703 0 0 0.331828 0 -0.258945 -0.0730592 0.124095 0.0527319 0 0 0.170002 0 1.75145 0 -1.71979 -0.775452 0 -0.212894 -0.43649 0.0131761 0 -0.0180419 0 0 0.0780003 0 -0.549869 0.682726 0 0 0.109755 0 0 -0.0398238 -1.57962 0.129742 0 0.603335 0 -0.498247 0.257295 -0.269723 -0.309391 0.0461147 0.517113 -0.240462 0.156257 -1.10475 4.58686 0.0287523 0 0 0 -0.130793 -0.138408 0 0 0 0 -0.147251 16.2642 1.41452 1.29613 0.540092 -0.196881 0.652751 -0.193828 0.252336 -0.236838 0.300169 0 0 0 0 0 0 +313 0 0.555257 -0.224565 0.00253709 0.114564 -0.0381954 -0.205541 -0.570044 -2.20359 0.0105843 0.720458 0.0413896 -0.720387 -4.44833e-06 -1.59597 0.000976977 -1.88204 -3.87033 0.153983 0.00160288 -4.5039 0.0276698 0.219094 4.82003e-06 0.149124 -0.0886097 -0.782206 0.0165286 0.48795 -0.0229557 -0.402477 0.000228762 0.0565671 0.0710785 0.0414113 0.218601 0.000969335 0.0274394 -1.04605 0.0652997 -2.28084 -0.000235529 -0.190207 0.00172098 -2.02633 -0.0122795 -1.17458 0.290836 0.0980957 -0.00341994 -0.400781 0.149191 4.39159 -0.00185939 0.00349057 0.00130382 0.990382 0.272038 -0.0457823 -0.137727 0.000327996 -0.917892 3.72454 -0.747168 -1.54402 -0.429707 0.085217 0.343409 0.264308 -0.000224729 -0.12977 -0.0969555 0.00932437 -0.0109357 1.17911 -0.102039 0.510359 -4.04232 -3.74135 8.04168 -2.31197 2.85675 -1.88807 -0.988171 1.1709 -1.43664 2.61994 4.87461e-05 -0.000439417 0.00590904 -0.0317598 0.0219228 0 0 0 0 0 0.00253709 0.114564 -0.00319568 0 0 0 0 -8.0922e-05 0 -0.00340924 0 0 -0.000152628 -4.76965e-05 -0.000461 0 -0.000128362 -0.000741983 -0.00942992 0 0 0.0408477 -3.47453e-06 0 0.00308428 -0.391244 0 0 0.00626172 -0.0368491 0 0.0654761 0 0.000608894 0 0 0.000111165 0 0 0.16763 -0.00115434 -0.00211849 0 -0.0467271 0.0216315 0 0 0.0343284 0 -0.0015972 0.119044 0.00119522 0 0 -0.00019611 0.00640071 0 0.00289537 0.0121678 -0.00338518 0.0775371 -0.00452367 0.00207989 0 -0.0102391 0.000906281 0.0424784 -0.0115766 -0.0155724 0 0 0 -0.580772 -0.0236452 -0.0476697 -0.00574959 0.00390697 -0.0185629 5.96043e-05 -9.24603e-05 0.000300666 0.00217066 0 0 0 0 0 0 -0.0381954 0 -0.205541 0 0 0 0 -0.0648904 -0.0587101 0 0 0.225449 0 0.0431119 0 0.0116714 0 0 -0.498259 0 0.887587 -0.036493 0.1703 -0.054159 0 0 0.0847486 0 2.95584 0 1.58882 -0.336247 0 -0.462691 1.33505 0.0235358 0 0.00573417 0 0 -0.00226444 0 -0.497632 0.539383 0 0 0.0678976 0 0 0.229469 -0.497907 0.139701 0 0.876248 0 -0.0728031 -0.0166352 -0.0844891 0.268403 0.0352653 -0.972748 -0.215125 0.0146065 0.301609 -0.0332794 -0.16094 0 0 0 0.125382 -0.013005 0 0 0 0 -0.0131243 -19.8913 -5.82835 5.76604 -2.26902 1.43381 -0.905975 -0.292814 0.208975 -0.169431 0.287375 0 0 0 0 0 0 +314 0 0 0 0 0 -0.431967 -0.298838 0.208346 2.27891 0 0 1.05687 -1.08944 0 -1.31312 0.196398 0 0 0 0.311347 2.53945 0 0 0 0 0.383867 0 0 -0.127144 -8.82304 -0.591804 0 0.557991 0 0 0.100097 0.193298 0 0 3.81639 -0.881028 0 0 0.94051 -2.40464 0 -1.08639 -2.32281 0.175861 -1.90935 2.84059 -1.8334 0 -0.347383 0.498794 -0.856521 -0.813539 -0.916688 -1.77321 0 0 -0.461388 2.706 0 -1.81868 -1.89065 1.27405 0 0 0 0 -0.673443 3.18787 0 -0.767415 3.2466 0 0 0 -6.01876 0 -6.68287 10.9852 0 -2.70172 3.29998 -3.37707 0 -3.94036 6.50043 -13.3195 30.5348 0 0 0 -0.228354 -0.0928584 0 0 0 0.050262 -0.032966 0 0.00477875 0 0.000273218 -0.0166959 0 0 0 0 -0.0914098 0 -0.0220098 0 -0.0637211 0 0.393577 0.231232 0 -0.000769152 0 0 -0.172611 0.00029948 0.0491929 0 0.0147331 0 -0.00222386 0.0374585 -0.00379137 0.0091973 -0.0138631 0 3.28814e-06 0 0 0 0.00108746 0 0 -0.00245169 0.00934579 0.0426113 0.0123666 0 0 -0.015983 0 0.0138427 0 0 0.00663858 -0.0313672 -0.136043 -0.0343547 0 0 0.0892956 0.0745189 0.0368431 0.0161014 -0.101487 0 -0.405068 -0.0235598 -0.102382 0 0 0 0.338181 0 -0.0575646 0.855646 0 -0.00532989 0.0983324 0.153598 0 4.84641e-05 -0.00470457 -0.0140793 0.549978 0 -0.431967 -0.228354 -0.298838 -0.0928584 0.419254 0.217412 -0.480202 0.845529 0.96376 0.152185 -0.035603 1.05346 0.0266185 0.221962 -0.141401 0.107851 -0.0641264 0.850931 -0.247811 1.44846 0.32212 0.0570716 0.1868 -0.0237847 -0.652121 -0.316786 0.974009 0.0209576 2.46871 0.0114886 2.88935 -0.44614 -0.0281785 0.536211 1.1292 0.0629102 0.00261748 0.109092 0.0621908 -1.57109 -0.0636704 -0.0562346 0.456181 -0.579781 -0.00356523 -0.042043 0.0221198 0.147297 -0.521583 -0.832536 -2.534 1.32541 0.193783 -1.51863 0.206866 -1.635 -0.185468 -0.721413 -0.438361 -0.190727 -0.376782 -0.966073 0.621086 -2.41748 -3.22037 -0.156272 0.54173 0.00089676 0.0466204 0.0502774 -0.53439 0.234441 -0.379458 0.251348 -0.0166674 -0.391429 -13.0703 -4.01191 -1.27944 -3.20918 1.43045 0.347369 -0.948147 0.679923 -0.488794 -0.842104 -0.756609 0.519603 -0.284907 -0.558665 2.01356 0 +315 0 0 0 0 0 0.385881 0.101956 0.657435 0.147254 0 0 0.809701 0.659513 0 2.12337 0.147506 0 0 0 0.262986 1.18148 0 0 0 0 0.0960762 0 0 -0.504602 -8.55469 0.398513 0 0.719021 0 0 0.130646 0.156078 0 0 1.99068 -0.103982 0 0 0.388249 3.6724 0 -0.0413236 -2.18747 1.24718 -1.02852 1.76034 -1.62449 0 -0.15999 0.129333 -0.58252 -0.382715 -0.484599 -1.42436 0 0 1.37008 1.74954 0 -1.40149 -0.847696 0.195476 0 0 0 0 0.208944 2.00101 0 -2.22575 1.55571 0 0 0 -0.811365 0 -4.08198 12.384 0 -2.14967 5.05007 -1.64857 0 -2.0478 6.61834 -10.7771 29.8586 0 0 0 -0.138465 -0.0276299 0 0 0 0.0310631 -0.0653752 0 0.00209441 0 0.00840703 -0.0220063 0 0 0 0 -0.0997976 0 -0.0157319 0 -0.181561 0 0.310783 0.440374 0 -0.00527068 0 0 -0.402153 0.00379918 0.0615481 0 -0.00516139 0 -0.00434885 0.207617 -0.0452103 0.0525167 0.0262435 0 0.000613629 0 0 0 -0.000348262 0 0 -0.0164802 0.000268551 -0.0297366 0.0506139 0 0 -0.036856 0 0.0124605 0 0 -0.0335469 0.000394246 -0.0525387 0.00818543 0 0 0.0674149 0.0407596 -0.0200843 0.0514076 -0.153941 0 -0.121227 -0.00387208 0.0267087 0 0 0 0.670878 0 -0.145744 1.14414 0 0.00960567 0.00350829 0.341329 0 -0.00582415 0.0275958 -0.0850944 0.572458 0 0.385881 -0.138465 0.101956 -0.0276299 0.960272 0.155398 0.00178911 0.683749 0.667677 0.0589948 -0.0256687 0.0813999 0.00806242 0.0168317 -0.0146555 0.0856026 -0.0081592 0.43545 0.320773 0.740321 -0.0332311 -0.0162029 -0.286349 0.0440427 -0.1593 -0.22925 0.724698 0.010118 8.75287 -0.00472798 0.507204 1.25868 -0.00437409 -0.163048 0.105276 -0.0379651 -0.00164322 0.0786709 -0.0118467 -2.02097 0.0400902 -0.0253989 4.35301 0.615642 -0.00214649 -0.00081139 0.0521494 0.0868016 -0.118685 0.919229 1.43414 0.0236277 0.0476414 -1.37079 -0.0351245 -1.03615 -0.230398 -0.0212138 0.304854 0.338599 -0.204813 0.227441 -0.519205 0.0548217 -4.41009 -0.0215209 0.417855 -0.116607 -0.304271 -0.341534 -0.0229961 0.019242 -0.167031 0.236617 0.23558 -0.272331 -2.29439 -0.4701 1.17666 -1.2104 0.357522 4.34562 -0.281719 -0.0823363 0.979707 -0.371883 -0.387183 0.234717 0.305725 -0.845812 3.06735 0 +316 0 0 0 0 0 -0.294425 0.369753 -0.633302 -0.259072 0 0 0.0419898 1.16032 0 1.95903 -0.0177538 0 0 0 0.125898 -0.777206 0 0 0 0 -0.427316 0 0 -0.880527 0.136065 0.655347 0 -0.158461 0 0 -0.357628 -0.00815825 0 0 -0.122848 0.243314 0 0 -0.119586 5.25634 0 0.609598 -1.03404 0.52272 0.11578 2.73808 0.110254 0 -0.161662 0.060867 0.127952 1.65401 0.85808 0.069699 0 0 -0.23826 0.934058 0 -0.556263 -0.237872 1.00562 0 0 0 0 -0.368541 -0.0261118 0 -1.27546 0.95723 0 0 0 -0.801456 0 0.0890807 0.641306 0 0.171807 -0.376936 3.04478 0 0.344286 -0.419241 0.975829 -0.504911 0 0 0 -0.000763814 0.0106558 0 0 0 0.0160971 -0.0160053 0 0.00326132 0 0.000661787 0.0377643 0 0 0 0 0.0752808 0 0.014929 0 0.210877 0 0.0866352 -0.10264 0 0.00020269 0 0 -0.00461827 0.000182385 -0.0144178 0 -0.0031548 0 -0.00111811 -0.0298628 -0.000166385 0.00329801 -0.0017513 0 4.45579e-05 0 0 0 -0.000226498 0 0 -0.0021821 -0.00150962 0.0623643 0.0118145 0 0 0.000353012 0 0.000933412 0 0 -0.0175623 -0.00219264 0.12567 0.0187535 0 0 -0.0897838 -0.0291511 -0.0392391 -0.0580661 -0.085317 0 -0.10672 0.00812501 0.0764398 0 0 0 -0.468925 0 -0.0193652 0.23321 0 0.000501641 0.018726 -0.0485113 0 -0.000510135 0.000769718 -0.00731724 0.150548 0 -0.294425 -0.000763814 0.369753 0.0106558 -0.176236 -0.0300921 0.236732 0.00285798 0.640864 -0.0113717 0.00465852 0.13089 -0.00227286 0.0185163 0.0302011 -0.0219249 0.0100957 -0.0474991 -0.489654 0.404806 0.417648 -0.182668 0.0124781 -0.0633965 0.0887163 0.0538766 -0.210652 0.00513243 7.3305 -0.0546494 2.26509 1.25881 0.00408189 -0.0695904 1.17142 0.00227675 -0.00321561 -0.0891821 -0.0275359 0.450088 0.0910111 0.00772859 2.39226 -0.0717052 0.000514422 -0.00246734 0.0333924 0.0590468 0.0141766 0.556319 -0.253288 0.582056 -0.0194359 0.0491153 -0.101886 -0.329784 0.157885 0.0114952 0.199691 0.146384 -0.40349 -0.0379955 0.0723217 0.959261 -1.78178 -0.210764 0.301289 -0.0113469 -0.000370481 -0.368438 -0.015965 -0.0153275 0.0419063 0.0542277 0.0434638 -0.118177 -10.2464 -1.57323 -0.835992 -0.899575 1.68948 -4.14721 -0.0314084 0.221761 -0.571766 0.352291 0.042234 0.0315006 -0.126098 0.208003 -0.622115 0 +317 0 -0.766556 -0.382749 -0.13044 -0.236826 0.19572 0.324218 -1.69466 -4.4333 -0.580475 3.70463 -0.307456 0.0929174 0.0569196 0.154023 -0.0392673 -2.19277 -10.0791 0.518106 -0.0454852 3.00665 0.131007 -0.120942 -0.0697618 0.976034 -0.926035 -0.216994 -0.0328719 -0.392589 0.378901 0.108432 -0.238501 -0.376578 0.787532 -0.517166 -0.542362 -0.0834347 -0.461253 7.13089 -0.865119 1.72854 0.231313 -2.24243 -0.259978 0.526477 0.862912 0.989165 -0.115182 -0.681277 0.629862 1.32684 1.8387 3.75921 0.13307 0.0100011 0.0539015 -2.78328 -0.617334 0.0660708 -1.57229 -0.451674 0.847588 -2.23218 -3.65563 3.18085 0.234896 0.482393 -2.8204 -0.636078 0.297633 -2.67774 0.409025 -0.668316 0.655833 -0.088763 0.135689 1.50684 -31.146 -14.7759 10.9415 -8.20949 7.07131 -11.0496 -3.86599 3.96132 -6.18879 8.21441 -1.28716 1.57499 -1.71686 1.84619 -1.25956 0 0 0 0 0 -0.13044 -0.236826 -0.00472892 0 0 0 0 0.000982074 0 0.00472933 0 0 -0.00447502 -0.0221041 0.0689384 0 0.00540861 -0.122306 0.087424 0 0 0.117679 -0.00160469 0 0.0115325 -0.713509 0 0 0.0216259 -0.204088 0 0.0417257 0 0.020985 0 0 0.00462222 0 0 0.0830471 0.0133874 -0.0600593 0 -0.0689403 -0.0614336 0 0 -0.0278867 0 0.00160233 -0.371487 0.00417795 0 0 0.00940092 0.0149259 0 -0.00989801 -0.0358295 -0.0210005 0.0526604 -0.0190537 0.0147502 0 -0.000115853 6.92673e-05 -0.191081 0.113317 0.00641931 0 0 0 0.415715 0.197189 -0.0503084 -0.0176445 0.0302187 0.106338 0.00630536 -0.0119083 0.0192324 0.027495 0 0 0 0 0 0 0.19572 0 0.324218 0 0 0 0 -0.438854 -1.9931 0 0 0.943526 0 0.117654 0 -0.0927491 0 0 0.415486 0 -0.305993 -0.181998 0.154365 0.0318039 0 0 -0.744374 0 -8.98992 0 1.82355 -0.0605843 0 -1.45775 -0.122774 0.0140393 0 -0.0381719 0 0 -0.256237 0 -1.83145 0.910083 0 0 0.0592098 0 0 0.157962 -2.65119 0.0189617 0 -0.706657 0 1.05368 -0.406147 0.299332 -0.615829 -0.00390193 0.0922914 -1.19469 0.22423 2.35128 6.96585 0.0908101 0 0 0 -0.25573 -0.209765 0 0 0 0 0.723477 -17.2957 -4.72396 3.09793 -0.792531 0.403764 -1.64022 -0.449358 0.480654 -0.816398 1.12181 0 0 0 0 0 0 +318 0 0.407273 -0.259989 -0.0748758 -0.262528 0.351908 -0.0560296 -1.3027 -3.82403 -0.410782 2.8121 -0.6982 -0.44338 0.0311135 -1.70636 -0.149035 -1.69091 -4.86973 0.495939 -0.303435 0.65715 0.129425 0.33979 -0.0360873 0.74474 -0.345733 -0.686692 0.0632326 0.653689 2.19867 -0.413916 -0.130094 -0.698814 0.741843 0.18397 0.0140392 -0.153816 -0.00772366 2.51515 -1.20289 -0.179069 0.138318 -0.459201 -0.266017 -1.65348 0.609277 -0.337787 1.18374 -1.53713 0.764596 -0.116816 1.77649 12.6845 0.363075 -0.266818 0.472143 1.35816 0.586546 -0.101301 -1.31322 -0.317232 0.893149 0.177516 -2.38124 2.29004 0.127343 0.580156 -1.90184 -0.169676 0.195262 -3.01734 -0.148296 -1.35647 0.265733 0.195295 -0.804093 1.06817 -13.9396 -10.5202 8.26548 -3.77719 3.42816 -5.12428 -3.9353 3.69719 -6.0546 9.45036 -0.908826 1.55362 -2.65251 4.36836 -7.30892 0 0 0 0 0 -0.0748758 -0.262528 -0.00016476 0 0 0 0 0.00167377 0 -0.0189892 0 0 0.00488899 0.0100729 -0.00438325 0 -0.00183205 -0.00472984 -0.138292 0 0 0.125858 0.000740845 0 -0.0702102 0.641209 0 0 0.00330064 0.178865 0 -0.182533 0 0.0153118 0 0 -0.000758362 0 0 -0.381176 0.0228492 0.0657402 0 -0.00623408 0.0188021 0 0 0.023601 0 0.018098 -0.0639836 -0.0467165 0 0 -0.0125695 0.0113135 0 0.0109056 -0.0130836 0.0319913 0.139633 -0.0329791 -0.011492 0 0.0020754 0.11847 -0.0584918 0.0553392 0.111214 0 0 0 2.25056 -0.198265 0.561393 0.038825 -0.0760883 0.24273 -0.00671427 0.012857 -0.0287174 0.0747509 0 0 0 0 0 0 0.351908 0 -0.0560296 0 0 0 0 -0.75099 -1.04462 0 0 1.04784 0 0.14344 0 -0.0836069 0 0 -0.0708494 0 0.785081 -0.220733 0.491646 -0.0418265 0 0 -0.555587 0 -6.34434 0 0.648642 -1.00345 0 -1.87823 1.0569 0.0726905 0 -0.092531 0 0 -0.148179 0 -2.97721 0.360756 0 0 -0.0195805 0 0 0.0486133 -3.25895 -0.220766 0 0.951009 0 1.41381 -0.400947 0.403835 -1.25472 -0.20022 0.290725 -1.17782 0.561267 2.28771 13.665 0.143953 0 0 0 0.0319146 -0.377794 0 0 0 0 0.383088 0.716021 -4.05002 7.23507 -1.15598 1.30166 -1.07692 -0.56449 0.663098 -0.972751 1.63408 0 0 0 0 0 0 +319 0 -0.774559 0.258309 0.00973433 0.0208922 -0.217656 -0.0375974 -0.58269 -0.0889393 0.0935252 0.275269 -0.00797254 -0.46348 -0.00408177 -1.58425 -0.0149707 2.32594 9.79185 0.0699966 -0.0101983 -0.710023 0.0276839 -0.04789 0.00558139 0.0340912 -0.0958991 0.70414 0.0573327 0.177473 -0.18504 -0.3622 0.0239122 -0.0542978 0.385055 0.0724397 -0.120179 -0.00035309 0.433632 3.58171 -0.0309344 -0.284778 -0.0123317 1.21983 0.00667835 -2.03855 -0.0162089 -0.113362 0.0150134 0.00538816 -0.00717922 -1.54894 0.489814 1.50437 -0.00451973 0.0242403 -0.0145549 -0.44201 -0.642708 0.260332 -0.170054 0.0218307 -0.0738931 0.370247 -0.147172 1.21197 -0.0483806 0.182592 -0.0877448 0.415143 -0.0488286 -0.0538251 0.137506 -0.132985 -0.20044 2.37128 -0.0042045 0.477783 -20.6192 -5.78003 2.23667 -3.67672 2.71896 -4.39708 -0.167636 0.260759 -0.292773 -0.492122 0.0241779 0.0056069 0.164948 -0.147958 0.615117 0 0 0 0 0 0.00973433 0.0208922 -0.00018275 0 0 0 0 -7.32352e-06 0 0.00160064 0 0 0.000818117 0.00340128 -0.00124436 0 4.23384e-05 0.00634859 0.00589792 0 0 0.0200699 0.000247237 0 0.0563573 -0.26797 0 0 0.00517046 -0.00822362 0 0.205897 0 -0.000776666 0 0 0.000410621 0 0 0.736012 -0.000124874 0.0113099 0 -0.00317115 0.0621202 0 0 -0.209498 0 0.00106153 -0.144576 -0.00220301 0 0 -0.00258581 0.000682763 0 0.0131326 0.0139231 0.01013 0.156292 0.0423025 -0.0314603 0 0.00319212 0.000988483 0.151667 -0.0528722 -0.154482 0 0 0 -3.05566 0.10745 -0.313446 -0.0737161 0.140421 -0.287071 -0.00128057 0.0024648 -0.00568365 0.0086587 0 0 0 0 0 0 -0.217656 0 -0.0375974 0 0 0 0 0.128496 0.0514798 0 0 -0.11764 0 -0.0113518 0 -0.000310087 0 0 0.51763 0 -0.570783 0.0507798 -0.0213414 0.0768241 0 0 0.0191456 0 -2.9891 0 1.26175 -0.878101 0 0.639841 -0.348982 0.00108541 0 0.00346602 0 0 0.00323145 0 -1.94496 1.22811 0 0 0.180474 0 0 -0.0867092 -1.3546 -0.0521727 0 0.80559 0 0.403753 -0.0190111 -0.028286 -0.169226 0.0391204 0.206936 -0.259457 0.085248 -0.684153 7.13797 0.0625933 0 0 0 0.183499 0.00438218 0 0 0 0 0.000163211 -14.8849 0.337502 -4.42816 0.0999562 -0.371541 -0.589784 0.0618383 -0.0634529 0.0245568 -0.46639 0 0 0 0 0 0 +320 0 -0.694489 -0.190806 -0.0957768 -0.321298 0.356947 0.0976251 -0.986096 -4.52963 -0.510124 4.16302 -0.43696 0.410183 0.0224197 0.958639 0.089029 0.98948 5.50583 0.742046 0.176148 -2.1649 0.141649 0.363959 -0.0231286 0.94365 -0.512419 -0.0882321 0.108442 0.0689846 0.937229 0.213728 -0.124656 0.407654 0.909319 0.501761 0.0444106 -0.050358 0.0603207 3.52384 -1.06116 -0.76041 0.141234 0.215508 -0.154098 2.20286 0.842377 -0.176957 0.380499 0.761599 0.467255 -0.470179 1.99208 -15.9183 -0.0942282 0.39844 0.378876 -2.63403 -0.480315 -0.122594 -1.64552 -0.351789 3.19147 1.24705 -2.8265 0.537878 -0.243091 -1.22105 -2.20145 0.0927543 0.176908 -2.64866 1.96134 -0.366005 -0.0467605 0.112021 -1.45256 -2.43137 -13.0125 -10.9645 6.71465 -4.14716 3.9721 -8.67032 -3.96511 3.24928 -7.04167 6.91401 -0.872175 1.01867 -2.31941 2.83276 -4.08149 0 0 0 0 0 -0.0957768 -0.321298 -0.00155088 0 0 0 0 0.000908029 0 -0.0215854 0 0 0.00171267 0.00455611 -0.000586009 0 -0.00171248 0.0133189 -0.123588 0 0 0.0576071 0.000332216 0 -0.0809993 0.479306 0 0 -0.000248613 0.131512 0 -0.212613 0 0.00595356 0 0 -0.00190095 0 0 -0.483444 0.0123375 0.0268176 0 -0.0225712 -0.0534351 0 0 0.123707 0 0.0123399 -0.468342 -0.0336849 0 0 -0.00414464 0.0128919 0 -0.00135465 -0.0171047 0.00839523 -0.233858 -0.0405854 0.00939513 0 0.00149374 0.111944 -0.127307 0.08981 0.0928466 0 0 0 2.70397 -0.156047 0.716828 0.0509129 -0.0990319 0.280961 -0.00175859 0.00360034 -0.0204494 0.125598 0 0 0 0 0 0 0.356947 0 0.0976251 0 0 0 0 -0.653609 -1.54517 0 0 1.2952 0 0.175835 0 -0.0576747 0 0 -0.148114 0 0.583359 -0.226952 0.528678 -0.0368939 0 0 -0.520444 0 0.300013 0 3.30718 0.414442 0 -1.63474 1.40922 0.0756382 0 -0.089476 0 0 -0.173776 0 0.706317 0.126301 0 0 -0.0299157 0 0 0.224388 -4.59844 -0.593952 0 -0.950944 0 1.69619 -0.311522 0.451402 -0.620456 -0.09905 -0.645644 -1.43256 0.595572 1.05512 -7.45994 0.0746253 0 0 0 -0.40158 -0.334456 0 0 0 0 0.519619 -18.5979 -6.44392 5.87698 -1.72392 1.92941 -3.24125 -0.6096 0.714493 -1.12361 1.3098 0 0 0 0 0 0 +321 0 0.641413 0.399763 -0.0192529 -0.11244 0.29254 0.247875 -1.02578 -2.96833 0.0280916 0.920679 -0.128378 -0.0630054 0.00404313 -1.18082 -0.0134876 2.011 6.81223 0.0138793 -0.00163981 0.377412 0.0201081 -0.250304 -0.000956367 0.189639 -0.455152 0.746258 -0.0201687 -0.202106 -0.0136873 -0.145469 -0.00202379 -0.193321 -0.392862 -0.226554 -0.304985 -0.00905419 0.049341 -1.22301 -0.3347 0.448415 0.0387316 -0.321563 -0.02494 -0.494065 0.366063 0.36871 -0.101682 -0.18183 0.0850938 -1.53762 0.346128 -10.8515 0.0441573 0.0895481 0.21898 -3.28077 -1.21365 0.0981728 -0.486669 -0.116138 0.0445671 -0.248237 -1.70009 -0.571183 0.479054 -0.611465 -0.55082 -0.547022 -0.0505215 -1.4862 0.418642 -0.140056 0.127672 1.52109 -0.789366 -0.913897 1.00183 -3.75811 8.69836 0.282997 0.0329922 2.81951 -1.00933 1.09823 -1.8878 5.04092 -0.379011 0.377217 -0.789989 0.721158 0.0596061 0 0 0 0 0 -0.0192529 -0.11244 -0.00353598 0 0 0 0 -0.000592359 0 -0.0284032 0 0 0.00377223 0.0070314 -0.0212783 0 -0.00263977 0.0580144 -0.221615 0 0 0.0314274 0.000518279 0 -0.00857358 0.806606 0 0 -0.00197544 0.262469 0 -0.0377298 0 0.00456407 0 0 -0.000382761 0 0 -0.149792 -0.00832689 0.0529255 0 -0.0508961 0.0269437 0 0 0.026134 0 -0.00383498 -0.244958 -0.00724954 0 0 -0.0117066 0.00933295 0 0.00824806 0.0125636 0.0190308 -0.464091 -0.00567886 -0.011976 0 -0.0106597 0.0673966 -0.0117925 -0.0373771 0.00227497 0 0 0 1.67478 -0.162933 0.764965 0.0217697 -0.0442762 0.188592 -0.00553665 0.0107434 -0.0295107 0.141697 0 0 0 0 0 0 0.29254 0 0.247875 0 0 0 0 -0.329897 -0.0518161 0 0 0.366384 0 0.0433591 0 -0.0224513 0 0 0.256675 0 -0.603162 -0.137595 0.0810669 0.0373568 0 0 -0.264776 0 0.979945 0 -1.88508 -0.118992 0 -1.24559 -0.801238 0.00814048 0 -0.0319722 0 0 0.0140105 0 -0.620352 0.906803 0 0 0.111868 0 0 0.184184 -0.437212 -0.475028 0 1.76464 0 -0.821988 -0.124603 0.191518 -0.86754 -0.115368 0.980192 0.347988 0.212112 -2.33659 -3.14091 0.150198 0 0 0 0.000564008 -0.159086 0 0 0 0 -0.0435602 10.9458 -0.503358 4.10171 0.61129 -0.989588 2.19187 -0.19876 0.238859 -0.351063 1.03803 0 0 0 0 0 0 +322 0 -0.477498 -0.340883 -0.0216658 -0.10989 0.0066691 -0.296899 0.524153 0.971026 -0.196603 0.183062 -0.195508 -0.56301 0.00445426 0.239364 0.0418535 -1.696 -5.97913 0.074809 0.036247 -0.200025 0.0174545 0.130801 -0.00473467 0.0632794 0.326663 -0.554204 0.044905 0.73196 2.15981 -0.277095 -0.0304045 0.311606 0.208105 0.170805 0.295934 -0.0199853 0.108708 1.54399 -0.449057 -0.658694 0.0262226 -0.143728 -0.0575065 -0.515548 0.135677 -0.737822 1.25036 0.216575 0.216201 1.76676 0.327879 2.29663 -0.0719847 0.0867298 0.0361743 1.52298 -0.298459 0.144157 -0.0754981 -0.0721559 1.01452 -0.0682556 -0.242868 1.41799 -0.250631 -0.473207 -0.582062 0.051892 0.0648654 -0.145992 0.339689 -0.0250412 -0.103234 0.502617 -0.934957 -0.83573 -9.84157 -1.4345 -3.65872 -0.864266 0.2792 -3.27583 -0.275407 0.0441014 -0.467663 -4.17129 -0.140476 0.308061 -1.41353 2.1811 -9.40565 0 0 0 0 0 -0.0216658 -0.10989 -0.00253627 0 0 0 0 -2.37414e-05 0 0.00403882 0 0 8.09832e-05 0.00119018 0.00417604 0 0.000139894 -0.000847863 0.0404857 0 0 0.165527 9.31662e-05 0 0.00514277 0.170855 0 0 0.0245839 0.0360703 0 0.0704676 0 0.0205502 0 0 0.00266039 0 0 0.343564 -0.00043425 -0.000118511 0 -0.0363583 0.0295765 0 0 -0.114488 0 0.00109771 0.115015 -0.00550801 0 0 -0.00293487 0.00678284 0 0.00920556 -0.0141134 0.0118785 -0.0241768 0.0129753 -0.0185389 0 -0.000163952 0.0168579 0.0208593 -0.0239164 -0.0394111 0 0 0 -1.48188 0.0406358 -0.216353 -0.0326408 0.0625291 -0.147554 -0.000736778 0.00142197 -0.00155706 -0.0144764 0 0 0 0 0 0 0.0066691 0 -0.296899 0 0 0 0 -0.291347 -0.282845 0 0 0.118371 0 0.008562 0 0.0215864 0 0 0.21185 0 0.438311 0.0269719 0.106354 0.0361935 0 0 0.150973 0 -1.15276 0 0.984953 -0.210667 0 0.0326872 0.299201 0.0111194 0 -0.0203204 0 0 -0.0284861 0 0.25167 0.183185 0 0 0.0475059 0 0 0.0965419 0.031598 -0.196307 0 0.624989 0 0.387773 -0.101558 0.117272 -0.342902 -0.0342939 0.318554 -0.0944585 0.0603246 -1.00765 -1.91002 0.0792743 0 0 0 0.0128972 -0.0574129 0 0 0 0 -0.00462024 -15.8588 -0.018598 -3.45726 0.0960277 -0.406775 -0.0259784 -0.0513232 0.0527348 -0.103107 0.125549 0 0 0 0 0 0 +323 0 0 0 0 0 0.0507744 0.229604 -0.996679 -1.45059 0 0 -0.448183 1.08054 0 1.29927 0.0580834 0 0 0 0.268382 1.53969 0 0 0 0 -0.324256 0 0 -0.132796 2.37013 0.507669 0 0.464964 0 0 -0.227899 -0.0688451 0 0 -1.48963 0.608381 0 0 -0.266367 3.49964 0 0.613085 0.21956 1.34812 0.409305 1.16401 0.252518 0 -0.404373 0.00506314 -0.0766016 1.03485 0.556862 -0.102273 0 0 -0.290507 0.899425 0 0.0795216 -0.509889 0.850554 0 0 0 0 -0.171855 -0.350361 0 -0.0170689 0.250337 0 0 0 1.3081 0 1.72017 -2.51104 0 0.333875 -0.639608 1.54177 0 0.753953 -1.57116 3.16162 -4.41452 0 0 0 0.163732 0.0409429 0 0 0 0.000893257 -0.00254393 0 0.000637003 0 0.00304789 0.0220947 0 0 0 0 0.11083 0 0.0215754 0 0.178028 0 0.012208 0.0029828 0 -0.012584 0 0 -0.223265 0.000706413 -0.0275964 0 -0.00429208 0 -8.58608e-05 0.042455 -0.0608951 0.0141351 -0.00702672 0 0.000143959 0 0 0 -0.00020044 0 0 -0.00179274 -0.000905204 -0.242727 -0.00775489 0 0 -0.0116364 0 -0.000704005 0 0 0.00876468 -0.00424256 0.171775 0.00166088 0 0 -0.206729 -0.0492116 0.014714 -0.0385378 0.554214 0 -0.136929 0.00196274 0.00509411 0 0 0 -0.787971 0 -0.0523109 0.864185 0 -0.00329297 0.053406 -0.128443 0 -0.00045542 0.00754962 -0.0326288 0.501948 0 0.0507744 0.163732 0.229604 0.0409429 -0.178195 -0.0759884 0.495295 -0.193061 0.499077 -0.0361977 -0.0227099 0.391418 -0.00748456 0.0342167 0.0814945 -0.0161758 -0.04684 -0.151683 0.188202 0.430009 0.574632 -0.0635029 0.418551 0.0388314 -0.254371 0.148816 0.128856 -0.0136062 3.10632 -0.375745 2.95546 0.615757 0.0121781 -0.317766 1.63736 0.0592757 -0.00725348 -0.051385 -0.0725481 0.892271 0.0118578 0.0240509 1.0241 0.872935 -0.00487214 -0.037784 0.191957 0.0069686 0.310492 -0.616762 1.46996 0.493003 0.127811 0.733068 -0.215448 0.166183 -0.0504195 -0.159507 -0.407429 0.00644557 1.0434 0.30921 0.131911 0.249215 5.911 0.100262 -1.18766 -0.0913052 -0.0437435 0.46131 -0.0196862 0.0279083 0.0893162 -0.0488119 0.0492286 0.023786 -14.4796 -2.29136 1.54042 -0.239973 1.1408 -2.42818 -0.0126027 0.147388 -0.444147 0.0441796 0.0627723 0.112512 -0.332282 0.532717 -0.992381 0 +324 0 0 0 0 0 0.621088 0.331841 -0.366855 -2.06885 0 0 -0.25879 1.16894 0 2.20103 0.0396228 0 0 0 0.0519854 3.75416 0 0 0 0 -0.328374 0 0 -0.0352098 0.950089 0.614758 0 0.236435 0 0 -0.170524 -0.0491155 0 0 -0.863878 2.03651 0 0 -0.179993 4.14046 0 1.16638 0.537024 0.33044 0.367605 -0.104418 -0.415064 0 -0.232716 -0.0605113 0.136582 -1.05647 0.220335 0.0303079 0 0 0.155111 -3.45907 0 0.482987 0.728768 1.43125 0 0 0 0 -0.367136 -0.573446 0 -3.8011 0.18856 0 0 0 2.4673 0 0.817098 -0.110709 0 0.0662852 -0.278578 3.06848 0 0.842421 -0.838701 1.62066 -1.66078 0 0 0 0.100367 0.0202279 0 0 0 -0.0154631 -0.0174583 0 -0.00247649 0 -0.00266315 -0.0411047 0 0 0 0 -0.0428442 0 -0.00101072 0 -0.329717 0 -0.0713984 -0.748573 0 -0.00749947 0 0 -0.165701 -0.00105132 -0.116856 0 -0.00631733 0 -0.000743161 -0.295968 -0.0383718 -0.0244566 -0.0440599 0 -0.000122169 0 0 0 -0.000294108 0 0 0.00256367 -0.00278503 -0.0144064 -0.0416864 0 0 0.0104386 0 -0.000695511 0 0 -0.0148589 -0.0117171 -0.282164 0.0348693 0 0 0.0646738 -0.0182719 0.0165035 -0.456512 -0.00587606 0 -0.225918 0.0169006 -0.0024664 0 0 0 1.10315 0 0.10141 0.518134 0 0.00658708 0.0288681 0.368974 0 0.000905745 0.00404693 0.0178996 0.296255 0 0.621088 0.100367 0.331841 0.0202279 0.181886 -0.0127733 0.0904788 -0.813088 -0.486267 -0.035148 0.0469653 0.0749501 -0.00549673 0.0173519 0.0279186 -0.0462319 0.0056037 -0.223447 0.0513699 -0.715481 0.049564 -0.244041 0.23255 -0.0333713 0.112036 0.0139327 -0.27879 -0.0356687 1.23109 -0.0427139 -0.262494 1.18719 0.00544659 -1.72214 0.039604 0.0363236 0.00344385 -0.133936 0.0174924 -0.0142225 -0.0705719 0.00763616 1.86097 -0.535163 0.00517247 0.00223238 -0.204791 -0.186505 -0.355623 -0.49161 1.10756 -0.0827963 0.0359746 -2.3707 -0.0404648 1.64007 -0.159574 0.190419 -0.436318 0.201785 0.11014 -0.324259 -0.257143 0.17318 -2.35165 -0.0942605 0.252124 -0.0133268 0.116721 -0.466626 0.0451311 0.0477814 0.0846915 -0.224403 -0.0718776 0.248967 1.28603 -0.0652501 5.32816 0.60168 0.23076 0.429889 0.0852368 0.133114 -0.194607 0.942273 0.092471 0.0924488 -0.177952 0.415887 -0.572921 0 +325 0 0 0 0 0 -0.194951 0.114448 -0.00949756 0.99826 0 0 0.412437 -0.084605 0 -1.07941 -0.0752964 0 0 0 -0.325405 -2.22846 0 0 0 0 -0.0280512 0 0 -0.803097 0.357939 0.171464 0 -0.86471 0 0 -0.22268 0.0828029 0 0 0.917737 -0.724206 0 0 0.189167 -3.67869 0 0.0858301 -0.719732 -2.68067 -0.309458 -0.53246 -0.111242 0 0.619012 -0.0567179 0.0182884 -0.39787 0.332487 -0.464147 0 0 0.196851 2.19617 0 0.89588 0.305916 0.66546 0 0 0 0 -0.0198197 0.0281733 0 0.524001 0.102014 0 0 0 -1.19538 0 -0.66221 -1.9235 0 0.0136946 -0.199154 -1.94377 0 -0.32597 -0.909907 -0.247277 -2.20149 0 0 0 -0.0788986 -0.0522331 0 0 0 0.0412092 0.000944799 0 0.00447625 0 -0.00502098 0.0325315 0 0 0 0 0.108163 0 0.00140016 0 0.231111 0 0.302111 0.245398 0 0.0248609 0 0 0.680659 -0.00118902 0.0856998 0 0.00654672 0 -1.98825e-05 0.153537 0.136738 -0.0239403 0.038987 0 -0.000237056 0 0 0 0.000305508 0 0 0.00283218 0.00131369 0.2293 0.0265421 0 0 0.0530497 0 0.00145325 0 0 0.0254054 0.0218812 -0.0100824 0.0235161 0 0 -0.0249734 -0.133281 0.0252147 0.109117 0.312497 0 0.618115 0.00993256 -0.175939 0 0 0 -0.566104 0 0.0863111 -2.48189 0 0.00530236 -0.149339 -0.408443 0 0.000745135 -0.021143 0.0756873 -1.38975 0 -0.194951 -0.0788986 0.114448 -0.0522331 -0.123809 -0.00401786 -0.197736 -0.11965 0.757072 0.0831711 -0.0445816 0.360929 0.0142302 0.0696014 -0.0760464 0.0404649 -0.0144395 0.478585 -1.21553 0.246145 -0.332008 0.0556479 -0.217152 -0.134808 -0.409314 0.0999226 -0.0273288 0.0136208 -5.78204 0.024709 -1.45659 0.228896 -0.0150599 0.0165283 -0.967596 -0.0312026 0.00153761 -0.00118853 0.0123589 0.619985 0.14931 0.0153497 -1.71502 -3.32192 -0.00128941 -9.06786e-06 -0.344428 0.0597128 -0.039618 -1.09909 0.3002 -0.227393 0.100649 0.82266 0.0855938 0.965995 0.406019 -0.0966728 -0.0114355 0.280526 -0.181763 0.912125 -0.25668 0.472534 0.168455 0.16358 -0.473926 0.131194 -0.0505507 0.759959 -0.162573 -0.00224822 -0.18235 -0.237642 0.0357087 -0.240072 7.13623 -0.227415 -0.102017 -0.870965 -0.154423 -1.1074 -0.290462 -0.0677468 0.165302 -0.684908 -0.198057 -0.0326287 -0.0432565 0.0598681 -0.583263 0 +326 0 0.504778 0.276514 0.0373431 0.213024 -0.194322 0.00838352 0.574749 1.15771 0.372474 -1.00052 0.169278 0.23082 -0.00489427 0.677664 -0.0358806 0.776522 3.50993 -0.128519 -0.0840809 2.96218 -0.0213677 -0.34667 0.00658934 -0.15525 -0.0161914 0.287683 -0.01979 -0.113106 -0.334853 0.101792 0.0503922 -0.173757 -0.59635 -0.146089 -0.0384827 0.0119807 0.145957 -1.99522 0.293317 1.30242 -0.0317805 0.398492 0.0294032 1.58897 -0.186397 0.529568 -0.187825 -0.481211 -0.0681416 -0.395612 -0.207188 -0.266643 0.289732 -0.13401 -0.00104541 -2.23694 0.427585 0.54967 0.195898 0.0764596 0.264985 -3.00478 0.336128 0.382298 0.307143 -0.348204 -0.309997 -0.065999 -0.103116 -0.00207942 -0.199791 0.00752681 -0.135692 -1.65634 0.261352 1.02911 4.50522 2.24175 -1.64969 0.742314 -0.823109 2.69684 0.553823 -0.551864 1.3102 -1.1176 0.0796853 -0.0800556 0.139803 -0.138547 0.245134 0 0 0 0 0 0.0373431 0.213024 -0.00037282 0 0 0 0 -0.000211809 0 -0.0184967 0 0 1.0079e-05 -0.000411541 -0.0318742 0 -0.0047711 -0.0407725 -0.113274 0 0 0.0335191 -1.55864e-05 0 0.0247874 -0.321833 0 0 0.00397132 -0.0966801 0 0.0713173 0 -0.000112514 0 0 8.29469e-05 0 0 0.0188412 -0.00456074 -0.001329 0 -0.00880632 0.026302 0 0 -0.148313 0 -0.00207891 -0.588813 0.00654247 0 0 -0.000172462 -0.000622799 0 0.00215951 0.00194944 -0.0122876 1.01315 -0.0184826 -0.0211074 0 6.27823e-05 -0.0122867 0.00509073 0.025811 -0.21635 0 0 0 -0.551459 -0.0131348 0.366176 -0.00291251 0.00784056 -0.0967463 7.69067e-05 -0.00020228 0.00257259 0.127042 0 0 0 0 0 0 -0.194322 0 0.00838352 0 0 0 0 0.206057 0.152859 0 0 -0.74777 0 -0.0846324 0 -0.00424303 0 0 -0.117623 0 -0.784751 0.0833815 -0.28828 -0.0623639 0 0 -0.0209683 0 1.02156 0 -2.80589 -0.453805 0 0.48501 -1.37513 -0.0342189 0 0.0419088 0 0 0.0195168 0 -0.223764 -0.140939 0 0 -0.0966696 0 0 -0.44654 0.0451371 -0.156364 0 -0.873625 0 -0.104297 -0.0304987 0.0891231 0.220826 0.0980191 0.0877543 -0.0590181 -0.0879915 0.376614 -2.32739 -0.0801694 0 0 0 0.252237 0.105149 0 0 0 0 -0.0963064 16.2083 3.9309 -1.93958 0.794835 -0.387259 0.485964 0.208691 -0.164704 0.256986 -0.197272 0 0 0 0 0 0 +327 0 0.923777 0.0341057 0.00546155 0.12372 0.000282031 -0.273574 0.692394 0.929407 -0.0340633 0.0462632 0.155092 -0.377011 -0.000558208 -0.80663 0.0214046 -0.249882 1.32169 0.126479 0.0373207 -2.19758 0.033736 0.302494 -0.000173392 0.122512 0.473516 -0.454594 0.0292953 0.604586 0.279823 -0.334311 -0.00288308 0.275923 0.103397 0.165025 0.425751 0.0150703 0.132797 -2.73881 0.314965 -1.51088 -0.00820423 0.313433 0.0310267 -0.971046 -0.114597 -0.958673 0.496929 0.520377 -0.0646341 -0.56419 0.118097 -0.0083747 -0.0461829 -0.028916 -0.0493878 -0.907911 0.224135 0.130774 -0.127037 0.0209214 0.728202 1.15097 -0.829641 0.00425582 -0.188511 -0.483402 -0.0805923 0.211213 0.0330814 -0.514872 0.141825 0.128727 -0.383102 0.310564 -0.516381 -0.013482 5.27475 1.11168 -2.60107 1.63586 -1.9819 2.59135 -0.0554456 0.054496 -0.0434298 -0.621659 0.0489908 -0.0779965 -0.0178665 -0.0892284 -0.204849 0 0 0 0 0 0.00546155 0.12372 0.000773275 0 0 0 0 6.78542e-05 0 -0.00320789 0 0 -0.0009281 -0.00275064 0.00557935 0 0.000580634 -0.0127182 4.49243e-05 0 0 0.0676825 -0.000122268 0 -0.0111158 -0.113506 0 0 0.0108209 -0.0673699 0 -0.0960421 0 0.00127854 0 0 0.00010311 0 0 -0.646272 0.00138478 -0.0224869 0 0.0155632 0.0685423 0 0 -0.107543 0 0.000410004 0.179949 0.0204284 0 0 0.00191387 -0.00225276 0 -0.00382558 0.0161879 -0.0159636 0.0195915 0.0364144 0.0176116 0 -0.0021427 -0.101561 -0.0157218 -0.0104332 0.00307561 0 0 0 3.41439 0.184818 -0.0291042 0.0125572 -0.0303794 0.480046 0.000865239 -0.00216595 0.0287515 -0.0527173 0 0 0 0 0 0 0.000282031 0 -0.273574 0 0 0 0 0.0435675 -0.100535 0 0 -0.293423 0 -0.0351251 0 0.0156514 0 0 -0.459425 0 0.3241 0.0364696 -0.0775501 -0.073158 0 0 0.16898 0 0.126252 0 -2.48346 -0.69335 0 0.201302 -0.118837 -0.0105617 0 0.000798989 0 0 -0.021057 0 -0.899619 -0.403437 0 0 -0.0905454 0 0 0.0240714 0.422446 0.0808275 0 -0.458298 0 -0.039885 0.0509083 -0.0358607 0.330991 -0.0418702 -0.402624 0.339504 -0.0598947 -0.664692 -6.66248 -0.00611219 0 0 0 -0.14611 0.115858 0 0 0 0 0.0435743 15.9535 2.28926 -0.745562 0.679279 -0.705319 1.18858 0.138601 -0.11786 0.172405 -0.182756 0 0 0 0 0 0 +328 0 -0.683721 0.062812 -0.0488438 -0.113995 -0.00486001 -0.0113138 -0.483207 -1.0343 -0.356954 1.44826 -0.201195 -0.0243541 0.00849479 -0.187708 0.0626164 -0.411534 -2.17728 0.199596 0.132901 2.29718 0.04475 -0.181675 -0.00961612 0.314269 -0.151249 -0.0992484 0.00600211 0.321174 0.939807 -0.183214 -0.0647182 0.430726 -0.10283 -0.114751 -0.0872274 -0.0186297 -0.140159 1.10263 -0.505247 0.839412 0.0648624 -0.994388 -0.055702 0.690274 0.488292 0.135092 0.542045 0.889099 0.186533 -0.25617 0.474742 0.187579 -0.239959 0.271634 -0.214008 -0.752634 -0.00544679 0.101271 -0.480023 -0.158007 1.2737 -1.38815 0.574548 -0.279533 -0.377153 0.0331216 -0.286686 0.109738 0.118222 -0.460744 0.286772 0.00533337 0.342656 -0.6129 0.0302306 0.867012 -4.06766 -1.87559 0.115431 -1.54539 1.16052 -1.98296 -1.00901 0.857003 -1.69516 1.28447 -0.208747 0.153471 -0.379617 0.272458 -0.688 0 0 0 0 0 -0.0488438 -0.113995 0.000246653 0 0 0 0 0.000320681 0 0.032125 0 0 -0.000187226 0.000437275 0.0599592 0 0.0084399 0.106025 0.234204 0 0 0.187377 1.46059e-05 0 0.00931441 1.18135 0 0 0.0239247 0.371054 0 0.190414 0 0.0241768 0 0 0.00275494 0 0 0.674443 0.00693114 -0.0014077 0 0.00744112 -0.0104518 0 0 0.191952 0 0.0031123 1.15341 -0.0103504 0 0 0.00019437 0.00182832 0 0.00300244 -0.0342194 0.0250967 1.56825 0.0544811 0.0251706 0 0.0152553 -0.128108 0.340454 0.0218221 0.050731 0 0 0 -4.66185 -0.141015 -1.24088 -0.0193326 0.046477 -0.580364 -6.8585e-05 0.000218176 -0.00236009 -0.287268 0 0 0 0 0 0 -0.00486001 0 -0.0113138 0 0 0 0 0.0153 -0.886739 0 0 0.510752 0 0.0747645 0 -0.0187953 0 0 0.581969 0 -0.087506 0.0224287 0.273172 0.0717757 0 0 -0.219145 0 -1.91834 0 1.77215 -0.491295 0 0.146383 0.473972 0.0434876 0 -0.0067259 0 0 -0.099599 0 -0.881404 1.41741 0 0 0.187992 0 0 0.138218 0.528785 -0.143763 0 -1.45187 0 -0.199021 -0.0518642 0.0282074 -0.909313 0.00489134 1.32437 -0.431259 -0.00378471 0.577267 -4.06848 0.145942 0 0 0 -0.281644 -0.19625 0 0 0 0 0.276915 -7.97034 -1.83453 -0.132442 -0.57055 0.43619 -0.557254 -0.195664 0.128962 -0.138424 0.0377159 0 0 0 0 0 0 +329 0 -0.2273 -0.300469 0.00599149 0.0150893 -0.0590706 -0.271173 0.738815 1.26109 0.0294434 -0.603131 -0.0692433 -0.500945 -0.00112476 -0.974201 -0.0283659 -1.38216 -6.04497 -0.126677 -0.0674711 0.117395 -0.020673 0.151233 0.00119584 -0.109947 0.534444 -0.376784 0.0069074 0.518597 1.2481 -0.313857 0.00838182 -0.352662 -0.0658993 0.0157947 0.368423 -0.00339278 0.0196717 -0.481848 -0.162343 -0.573517 -0.00724549 -0.196006 -0.0132893 -1.89563 -0.0464775 -0.725246 0.835693 -0.764654 -0.0340268 -0.783282 -0.202831 -1.7777 0.217141 -0.0149152 0.0235247 1.55064 -0.611809 -0.264865 0.120979 0.0159807 -0.52381 0.666328 -0.800156 -0.0958946 0.15773 -0.567104 -0.310163 -0.024755 -0.0123161 0.0348466 -0.242277 -0.256172 0.135975 1.25101 -0.670343 -1.34635 -1.20757 0.882916 -3.11765 -0.114005 0.514566 -2.47986 0.148706 -0.00238338 0.311198 -2.3498 0.00191801 0.00708482 0.031568 0.0999167 -3.07859 0 0 0 0 0 0.00599149 0.0150893 -0.000220448 0 0 0 0 -6.17647e-05 0 -0.00456191 0 0 0.000338861 0.00102284 -0.00829417 0 -0.00145571 0.00561264 -0.0125658 0 0 0.0301101 4.79894e-05 0 0.0182277 0.0481584 0 0 0.00102185 0.0516519 0 0.0784437 0 0.00490895 0 0 0.0004164 0 0 0.299246 -0.00131744 0.0070499 0 -0.00480816 0.00554024 0 0 0.00436593 0 -0.00047482 0.0583089 0.000999956 0 0 -0.000640921 0.000289448 0 0.00388194 -0.0349321 0.00230647 1.73771 0.0076424 -0.00677659 0 0.00817344 -0.0878666 0.12267 0.0454077 -0.126747 0 0 0 -2.95491 -0.128927 -0.173951 -0.0141962 0.032865 -0.449123 -0.000241322 0.00046204 -0.0068015 -0.00221521 0 0 0 0 0 0 -0.0590706 0 -0.271173 0 0 0 0 0.0146111 -0.691034 0 0 -0.42451 0 -0.0637563 0 -0.0170678 0 0 0.183807 0 0.217152 0.0627504 -0.223809 0.0254201 0 0 -0.242084 0 -2.6055 0 0.122641 -0.330329 0 0.367991 -0.194324 -0.037351 0 0.0121762 0 0 -0.0601164 0 -0.77342 0.54336 0 0 0.0619254 0 0 -0.146641 -0.163551 -0.0706587 0 -0.672377 0 0.477882 -0.0641217 0.0053959 0.706309 0.000969953 -0.305533 -0.586181 0.0487293 -0.0234833 -4.95393 -0.0806293 0 0 0 -0.147498 0.0964684 0 0 0 0 0.220097 -0.205354 0.852105 -0.589398 -0.261035 0.561969 -0.996997 0.0691225 -0.0149164 0.0303249 -0.169289 0 0 0 0 0 0 +330 0 1.11865 0.446508 0.00661211 0.0192926 0.17197 0.0672542 0.216617 -0.393853 -7.72213e-05 -0.457364 -0.059147 -0.732092 -0.00160388 -1.59079 -0.0236849 0.536697 -0.625678 -0.100127 -0.0509002 -0.330915 -0.0277205 -0.472835 0.00117015 -0.124375 -0.245201 0.574566 -0.0275039 -0.245772 0.142527 -0.297673 0.0069558 -0.258604 -1.27787 -0.344801 -0.089079 -0.00855668 -0.0399853 -5.0816 -0.0753921 -0.192136 -0.0106203 -1.0663 -0.012203 -2.74805 -0.0707262 -0.0782472 -0.131228 -0.495797 0.0474531 -0.689754 -0.121022 -2.29437 0.132721 -0.0350233 -0.0441015 -0.106772 -0.644025 -0.0706351 0.209212 0.0218133 -0.233779 0.211904 0.522181 0.677062 0.118138 -1.00745 -0.00441471 -0.0968233 0.000123436 -0.7258 0.00172546 -0.191006 0.148805 2.11431 -0.325039 0.174836 12.2203 1.08104 4.55525 1.14049 -0.554946 5.73251 0.327743 -0.114662 0.407698 0.678856 0.00291869 0.0072394 0.0842862 0.0815277 -0.351558 0 0 0 0 0 0.00661211 0.0192926 -0.001398 0 0 0 0 -0.000190638 0 -0.0151673 0 0 -0.000738039 -0.000780452 -0.0181378 0 -0.00271314 -0.0431398 -0.100646 0 0 0.0200933 -3.65732e-05 0 0.0120133 -1.01887 0 0 -0.00289688 -0.266109 0 0.0284341 0 0.00277857 0 0 -6.15063e-05 0 0 -0.254173 -0.00406571 -0.0158285 0 -0.0298853 0.0246851 0 0 -0.150673 0 -0.00295202 -0.34194 0.0147569 0 0 0.00135217 0.00190917 0 -0.00173404 -0.0112062 -0.0103371 0.608035 -0.0121764 -0.0130729 0 -0.00559473 -0.0085055 -0.12757 0.0392831 -0.0653274 0 0 0 1.98957 0.129088 0.402111 0.00894547 -0.0172466 0.262647 0.000555904 -0.00104823 0.0154756 0.0787284 0 0 0 0 0 0 0.17197 0 0.0672542 0 0 0 0 -0.0156402 -0.343077 0 0 -0.229426 0 -0.0251238 0 -0.0168045 0 0 0.01319 0 -1.13437 0.0156049 -0.0957823 -0.0349444 0 0 -0.17771 0 -3.48207 0 -6.02075 -0.724223 0 -0.222374 -2.38401 -0.0110216 0 0.0198333 0 0 -0.0320698 0 -1.64064 0.0561662 0 0 -0.0615592 0 0 0.295143 0.919205 -0.0284462 0 -0.488595 0 -0.296631 -0.0118321 -0.0341252 -0.469375 0.0805441 0.555279 -0.225978 -0.10122 -1.43329 -8.01885 -0.103953 0 0 0 -0.353575 0.0822993 0 0 0 0 0.101154 33.804 3.27591 1.17705 1.33827 -0.730976 1.47812 0.111444 -0.0864709 0.12152 0.0010988 0 0 0 0 0 0 +331 0 -0.57337 -0.251308 -0.0211497 -0.0393952 -0.153607 -0.225767 0.572044 0.620049 -0.0972012 1.24821 0.0893891 -1.14849 0.00412125 -0.654475 0.0531701 -0.674867 -3.09901 0.28751 0.103341 -1.75375 0.0562284 0.0639451 -0.00417461 0.250631 0.0689092 -0.202122 0.0185293 0.397964 0.0502746 -0.381361 -0.0290155 0.553574 0.337996 0.32076 0.154419 0.0163401 -0.130123 2.14429 0.193092 -1.02984 0.0266207 0.446914 0.0331792 -3.17987 0.171776 -0.623898 0.402849 0.901133 -0.108771 0.783885 0.369826 -3.83862 -0.268182 0.0869981 -0.00800899 1.53135 0.452671 0.365615 -0.398856 -0.057832 1.11043 0.0237508 0.914626 0.439213 -0.303995 -0.40222 0.0629078 -0.0238544 0.0407275 -0.370272 0.198822 0.687616 -0.11697 -0.103238 -0.661873 -1.35968 -7.74264 -2.06755 -3.17575 -1.03458 -0.0695479 -2.25626 -0.480713 0.312096 -1.37898 -0.695337 -0.00708876 -0.0177887 -0.21289 -0.242181 -0.124008 0 0 0 0 0 -0.0211497 -0.0393952 0.000814789 0 0 0 0 0.000219828 0 0.0471652 0 0 -0.00117055 -0.00378265 0.0569609 0 0.00836699 0.0341378 0.319629 0 0 -0.00427083 -0.000177441 0 -0.0218613 0.0449033 0 0 -0.00393657 0.10981 0 -0.0224205 0 0.000297273 0 0 -0.000441388 0 0 0.0116114 0.00468858 -0.0245674 0 0.0176248 0.0350819 0 0 0.0459087 0 0.00175617 0.997427 0.0107706 0 0 0.0022011 -0.00107563 0 -0.00394654 -0.0551258 0.00734654 -0.808747 0.0573079 0.0303522 0 0.00739269 -0.119767 -0.233083 0.00536752 0.181864 0 0 0 1.02244 0.141967 -1.02597 0.00656838 -0.013593 0.190963 0.00081873 -0.00181575 0.0254196 -0.308435 0 0 0 0 0 0 -0.153607 0 -0.225767 0 0 0 0 -0.0779612 0.592235 0 0 0.422374 0 0.0612984 0 0.0458682 0 0 -0.290327 0 0.171707 0.0218202 0.220524 -0.0482745 0 0 0.461372 0 -0.259475 0 1.11295 -0.419843 0 0.139471 0.242069 0.0315736 0 -0.0128994 0 0 0.0434738 0 -0.0241468 -0.744936 0 0 -0.100117 0 0 -0.230794 2.55867 -0.0476391 0 -0.516647 0 -0.112632 0.0119587 0.0703354 -0.855059 0.0365998 1.25986 0.279052 -0.0980328 -0.0939387 0.629357 0.0930966 0 0 0 0.103265 -0.129891 0 0 0 0 -0.167441 -6.0649 -1.5107 -0.420765 -0.338188 0.26053 -0.440444 -0.172552 0.108561 -0.118244 -0.0107703 0 0 0 0 0 0 +332 0 0 0 0 0 -0.0633584 0.279315 -0.768156 -1.2083 0 0 -0.167528 0.795295 0 0.947971 -0.0297869 0 0 0 0.00873516 3.8354 0 0 0 0 -0.431444 0 0 -0.856072 2.54935 0.542946 0 -0.237889 0 0 -0.304342 0.0037287 0 0 -0.683524 1.46389 0 0 -0.0291994 1.84129 0 0.648565 -0.404389 -0.333005 0.0715944 1.16583 -0.00326475 0 0.0680438 -0.0437402 0.251795 0.385124 0.798575 1.30334 0 0 -0.562697 -2.17831 0 0.236571 -0.208659 0.994218 0 0 0 0 -0.210289 0.154728 0 0.505414 -0.498884 0 0 0 0.0788036 0 0.665575 -3.54461 0 0.471425 -0.92239 1.11384 0 0.245209 -0.584709 1.45441 -8.63621 0 0 0 0.227797 0.0236284 0 0 0 0.0258002 -0.00903657 0 0.00311169 0 -2.88567e-05 0.00978395 0 0 0 0 -0.0191792 0 0.00752244 0 -0.0530502 0 0.249655 0.102382 0 -7.11447e-05 0 0 -0.040192 -0.000298493 0.013696 0 -0.000527048 0 -0.00029179 0.0226152 -0.00310124 -0.0038672 0.000543685 0 -2.8071e-06 0 0 0 -2.30061e-05 0 0 0.000796698 -0.00036683 0.0337841 -0.0031972 0 0 -0.00473661 0 0.000400245 0 0 0.00975081 -0.00640232 0.0185376 -0.00763057 0 0 -0.0308287 -0.00352876 0.019005 0.105834 0.20077 0 -0.087888 -0.000212823 -0.00315934 0 0 0 0.378038 0 0.00668454 0.111937 0 -0.000930406 0.0139909 0.154363 0 0.000413203 -0.00205859 0.00433986 0.0462578 0 -0.0633584 0.227797 0.279315 0.0236284 -0.887866 -0.0130277 0.0458131 -0.184246 0.146781 -0.0117409 -0.105595 -0.0818389 -0.00130199 0.00352186 0.00900184 0.0124308 -0.0403814 -0.104541 -0.858976 0.773209 -0.0661721 -0.0199498 0.066075 -0.165023 -0.258823 0.160615 0.165751 0.055011 -7.91763 -0.297926 -0.917914 0.204118 0.00133375 0.301336 -0.364918 0.00988909 -0.00450497 -0.0312735 -0.0654952 1.46116 0.0111115 0.00531672 -1.76999 -1.50684 -0.0132228 -0.023447 -0.283286 0.250021 -0.0302357 0.610891 -1.24062 0.0941082 0.0928174 2.56971 -0.00824923 2.23832 -0.0340103 0.13688 -0.124617 -0.0335692 0.429271 -0.506476 0.107052 0.0626622 -1.90277 0.113543 0.574499 -0.0285302 0.0911974 0.476769 -0.0434332 0.0263538 0.00926801 -0.0334855 0.064923 0.0135327 2.78456 0.194245 -1.59353 0.279163 0.36656 -3.799 0.0187371 0.0953037 -0.293258 -0.815651 0.0274694 0.085549 -0.246431 0.401364 -1.77996 0 +333 0 0 0 0 0 0.153432 0.304525 0.0747194 -0.362386 0 0 0.398226 1.00782 0 2.51266 0.0667317 0 0 0 0.174578 0.957202 0 0 0 0 -0.309943 0 0 -0.350373 -0.104058 0.741601 0 0.223464 0 0 -0.140576 0.0605102 0 0 1.0616 0.87671 0 0 0.271504 3.79517 0 0.901041 -0.342941 0.0570514 -0.42994 3.12492 -0.337071 0 -0.108569 0.351435 -0.0908011 1.50209 0.147049 0.122061 0 0 0.618851 -1.56631 0 -0.292782 0.0906834 -0.0562401 0 0 0 0 0.357377 0.615053 0 -1.11988 0.670389 0 0 0 0.916031 0 -0.664993 -0.630542 0 -0.653178 0.24292 0.455865 0 -0.669915 -0.00140514 -0.518725 -1.29579 0 0 0 -0.0992458 -0.0228346 0 0 0 -0.0344149 0.00505476 0 -0.00452678 0 -0.000113924 -0.030475 0 0 0 0 -0.129108 0 -0.0187197 0 -0.234204 0 -0.27861 -0.33566 0 0.000560511 0 0 0.162931 -0.000358857 -0.023129 0 6.01935e-05 0 0.000372244 -0.0659856 0.013524 -0.00595063 -0.00132352 0 -6.41215e-06 0 0 0 4.45745e-06 0 0 0.000916362 0.000591693 0.0613024 -0.00239936 0 0 0.00664765 0 -0.00064559 0 0 0.00418998 0.00267242 -0.130124 0.00321492 0 0 -0.0204561 0.012035 0.0015689 0.0277485 -0.116285 0 -0.0715505 -0.000237203 -0.12342 0 0 0 0.275391 0 0.0170947 -0.239394 0 0.000137233 0.00085051 0.0317529 0 0.000390859 -0.0029925 0.010305 -0.103456 0 0.153432 -0.0992458 0.304525 -0.0228346 0.169473 0.0354372 -0.188512 -0.176339 -0.233654 0.0173242 -0.0286214 -0.370691 0.00201322 -0.0272213 -0.0228102 0.00760668 -0.0086358 0.119164 1.20199 -0.171723 0.692705 -0.0268887 -0.255523 0.216635 -0.232856 -0.0621362 0.0195463 -0.00146938 12.4028 0.123164 2.0229 2.2909 -0.002664 -0.330712 1.1943 -0.0177201 0.00217723 -0.0173284 0.0253523 -0.386559 -0.0102693 -0.00692011 5.56941 2.20692 -0.000280583 0.00356413 0.414517 -0.0209263 -0.0714907 0.0318423 1.16632 0.429766 -0.0773762 2.89284 0.0333873 -1.19583 0.0731401 -0.226381 0.222054 -0.197466 0.840259 -0.0975919 -0.141811 -0.0247591 13.8424 -0.0560056 0.0871761 0.0605909 -0.0870757 0.0787893 0.0301174 -0.0119209 -0.0348792 0.000566473 -0.0361791 -0.0319537 -6.13664 0.407747 1.06325 -0.446516 0.112207 0.151741 0.0395995 -0.118632 0.143905 0.18498 -0.0313116 -0.0781919 0.146406 -0.116308 0.13257 0 +334 0 0 0 0 0 0.13209 -0.126219 0.00708796 -0.115533 0 0 0.101279 -1.00796 0 -1.29879 -0.0201529 0 0 0 -0.278633 -1.65953 0 0 0 0 0.0354793 0 0 -0.0465969 -6.27474 -0.375005 0 -0.151065 0 0 0.0492529 0.0276706 0 0 1.50864 -1.32956 0 0 0.426498 -3.84123 0 -0.639 -1.10259 -0.963458 -0.656365 -0.866293 -0.846097 0 0.295916 -0.206653 -0.187872 -0.767579 0.00431021 -0.613959 0 0 0.339608 2.78348 0 -0.567877 -0.246098 0.637607 0 0 0 0 -0.131646 0.576207 0 -0.953959 0.984985 0 0 0 0.142823 0 -2.12207 6.93271 0 -1.03087 3.09233 -0.689372 0 -1.47119 4.40511 -6.38898 18.0169 0 0 0 -0.0966322 -0.0213803 0 0 0 0.00225026 -0.0185671 0 -0.00166144 0 7.49385e-05 -0.0303349 0 0 0 0 -0.194736 0 -0.0205031 0 -0.288661 0 0.155602 0.208983 0 -0.000935182 0 0 -0.100712 0.000327904 0.00675069 0 -0.000637505 0 -0.000994838 0.128819 -0.0081102 0.00469539 0.0110774 0 4.85598e-06 0 0 0 -3.14957e-05 0 0 -0.000860956 -0.00148466 -0.106945 -0.00215187 0 0 -0.0152193 0 0.00161989 0 0 0.00100001 -0.00762207 -0.133819 -0.00954895 0 0 0.115175 -0.0239498 0.0156967 -0.0878138 0.0585393 0 -0.0766472 -0.000125163 -0.0921757 0 0 0 0.768973 0 -0.0104556 0.334919 0 0.000590591 0.0118836 0.192902 0 -0.000417528 0.00543433 -0.0138629 0.19751 0 0.13209 -0.0966322 -0.126219 -0.0213803 0.232609 0.107388 -0.14692 0.0187805 0.290146 0.0154861 -0.015596 0.200654 0.00168134 0.0104739 -0.0174019 0.00682301 0.0016503 0.131777 -0.92038 -0.943512 -0.127099 0.00662227 0.122732 -0.0543644 0.0543444 -0.273653 0.0869145 -0.0150305 -1.24784 0.374167 -0.145337 -0.557959 -0.00203377 -0.247423 -0.146418 0.00732282 0.00766342 0.0246045 0.0583274 -1.93637 0.0143156 -0.0404271 -0.993227 -2.93839 -0.00245878 0.0489352 -0.279505 -0.110321 -0.317884 -0.390225 0.0584688 -0.351878 0.0817464 -2.03587 0.0200233 0.658293 -0.0903812 0.0480624 -0.0180674 0.617954 0.651059 -0.20268 -0.238947 0.673136 -3.39799 -0.0168636 0.502453 0.0162169 0.0567909 -0.0240304 0.0049387 -0.0734496 -0.0274196 0.0449865 0.0469421 0.0348327 0.440893 -0.293248 0.690629 -0.180784 -0.810225 3.66973 -0.0364274 -0.229792 0.95203 -0.743848 -0.0346258 -0.13284 0.663246 -1.07658 2.46523 0 +335 0 0.441301 0.134612 0.0206984 0.293575 -0.475567 -0.140214 0.295324 1.48928 0.0887852 -0.591897 0.120108 -0.367158 -0.0003222 -0.107911 0.00103381 -0.629535 -0.455643 -0.0962271 -0.00649897 -0.942351 0.0144347 -0.0701127 0.000343226 0.131819 0.288061 -0.317601 -0.0331562 0.40887 0.256654 -0.376435 0.00540584 -0.000615166 -0.635277 -0.194885 0.148052 0.00691374 -0.16063 -3.44228 0.183064 -0.779742 -0.00473398 -0.769411 0.0108625 0.593132 -0.0619595 -0.640416 0.369829 -0.141237 0.00717855 -1.4706 -0.0432802 0.124407 -0.0269331 0.0206948 -0.131126 -0.193074 0.1469 0.0434735 -0.0526285 -0.00231853 0.60444 0.773309 -1.06277 -0.12451 0.672163 -0.304295 -0.272984 -0.262605 -0.00471763 -0.208769 -0.173458 -0.0335028 0.291398 0.166153 0.190413 1.67282 6.26967 1.09782 -0.592025 0.974106 -1.41732 3.96671 -0.30639 -0.134953 0.675694 -2.02071 0.00750122 -0.0179862 0.0311912 -0.109458 -0.387116 0 0 0 0 0 0.0206984 0.293575 -0.000594957 0 0 0 0 -8.56003e-05 0 0.00658994 0 0 1.28472e-05 -0.000317651 -0.00122817 0 0.000174356 0.00384362 0.0111239 0 0 0.152109 -1.3435e-05 0 -0.0237713 0.159705 0 0 0.0156818 0.0359152 0 -0.169454 0 0.0130405 0 0 0.0012766 0 0 -0.522276 -0.00184588 -0.00111085 0 -0.0136194 0.00137051 0 0 -0.0130962 0 -0.00181064 -0.14209 0.00559865 0 0 0.000326131 0.000371166 0 -0.0048498 -0.0314051 -0.00501404 1.30276 -0.018922 0.0260733 0 0.0102131 -0.0785407 0.0209842 0.0621247 1.49985e-05 0 0 0 3.73874 0.127738 0.188676 0.0162631 -0.0391998 0.565376 0.000137014 -0.000378689 0.00461516 -0.00578513 0 0 0 0 0 0 -0.475567 0 -0.140214 0 0 0 0 0.342198 -0.435646 0 0 -0.818593 0 -0.0779266 0 -0.0360051 0 0 1.15008 0 0.112686 0.112896 -0.298581 0.171136 0 0 -0.367543 0 7.87477 0 0.0393859 0.0463521 0 1.20808 0.0129453 -0.025858 0 0.0350324 0 0 -0.0433482 0 1.54153 2.55934 0 0 0.373333 0 0 -0.349778 3.5162 -0.349075 0 -0.781445 0 -0.238042 -0.119582 0.21478 0.279443 0.178422 0.337177 0.322598 -0.0796804 1.07652 8.76832 -0.09334 0 0 0 0.0691351 0.113834 0 0 0 0 0.00261491 -0.619797 2.37826 -4.31491 0.334175 -0.365507 0.111902 0.282166 -0.268142 0.372202 -0.623497 0 0 0 0 0 0 +336 0 0.178659 -0.0970152 -0.00706106 -0.0271158 -0.0376025 -0.191799 0.0892059 0.392892 -0.02943 0.388471 -0.0541569 -0.314251 0.000167981 -0.821673 -0.0148915 -0.22496 -0.887364 0.0558906 -0.0245702 0.0834571 0.01233 0.186989 -0.000125408 0.155827 0.213373 -0.104621 0.028856 0.264105 -0.193731 -0.139847 -0.00199501 -0.225469 0.319302 0.0522648 0.193496 -0.0029033 0.234162 0.575937 -0.0659883 -0.457695 0.00240509 0.0895 -0.00472752 -1.40953 0.0268335 -0.520144 0.144849 -0.375091 0.00226586 -1.12382 -0.0797936 -1.14226 0.0270302 0.0173564 -0.0393486 -1.28227 -0.0962532 -0.00676165 -0.163144 -0.00105846 0.299006 1.35659 0.578295 0.0618529 0.067551 -0.0557117 0.555773 0.276947 -0.00365093 -0.176614 0.278328 -0.0431466 -0.320007 0.386704 -0.216032 -0.492651 -0.00380809 -0.807406 -0.476046 -0.817826 0.394263 -0.279852 -0.50918 0.0468407 0.175563 -1.58106 -0.00324863 0.00698479 -0.00850949 0.0281763 0.292208 0 0 0 0 0 -0.00706106 -0.0271158 0.000541143 0 0 0 0 3.35347e-05 0 0.0125888 0 0 -0.000162484 -0.000311544 0.00563911 0 0.000542881 -0.00654311 0.104957 0 0 -0.162915 -1.33047e-05 0 -0.0121353 -0.686789 0 0 -0.0203764 -0.0909039 0 -0.123149 0 -0.0106775 0 0 -0.00136612 0 0 -0.410868 0.000700484 -0.00466115 0 0.0109883 0.0279534 0 0 -0.0984801 0 0.000830192 -0.0102612 0.000341735 0 0 0.000704323 -0.000971862 0 -0.00075135 -0.0307636 -0.0043816 -0.435471 0.0236596 0.0123455 0 0.0026823 -0.00529009 -0.0812556 -0.0148334 -0.0340216 0 0 0 0.893201 0.0279274 -0.179442 0.000163369 -0.000153781 0.076611 0.000254851 -0.000666562 0.00851843 -0.0514129 0 0 0 0 0 0 -0.0376025 0 -0.191799 0 0 0 0 0.00673127 -0.171026 0 0 0.167249 0 0.00986187 0 0.00915207 0 0 -1.04603 0 -0.0261046 0.0238008 0.0882829 -0.117408 0 0 0.0738279 0 -8.3889 0 -1.88706 -0.862164 0 0.150991 -0.564978 0.00652141 0 0.0214972 0 0 -0.0109548 0 -2.71917 -2.22791 0 0 -0.275075 0 0 0.216742 -2.66264 -0.107554 0 -1.18361 0 0.0955556 0.0116263 -0.00884094 -0.0277526 -0.113172 -1.0484 -0.151768 -0.0167383 -0.623402 -10.1006 0.0557638 0 0 0 -0.145882 -0.0220143 0 0 0 0 -0.109316 5.64798 0.285078 -0.88418 0.538641 -0.44788 0.492144 -0.0665803 0.0225578 0.00934638 -0.234239 0 0 0 0 0 0 +337 0 0.28665 -0.319616 0.000536598 -0.029331 0.0773652 -0.115409 -0.224565 -1.71611 0.0798096 0.665515 0.0653787 0.0892359 -0.000227382 0.669321 0.0135108 -1.37356 -1.98753 0.0635852 0.0212384 -1.6773 0.00550842 0.406444 0.00037717 0.121052 0.119228 -0.722052 -0.0216977 0.384846 0.887199 0.0954909 0.00546781 0.283947 0.495284 0.0124759 0.281856 0.00722942 -0.130082 0.543679 0.0653806 -0.907254 -0.00310854 0.306283 0.00796136 0.952062 -0.0388828 -0.562096 0.592804 0.466454 -0.0459972 1.25983 -0.184285 -1.27644 -0.00552125 -0.0030737 0.061759 0.0105306 -0.35379 -0.240214 -0.0838003 0.00928499 0.686484 1.50069 -0.985766 -0.941599 -0.322269 0.373152 -0.0874521 -0.184621 -0.00641795 -0.644193 -0.150137 0.108386 0.13012 0.558172 -0.703141 -0.442554 -0.0484892 -1.37251 3.78652 0.9795 -0.288863 -0.442443 -0.527805 0.61609 -1.11915 3.16701 0.0047074 -0.00829078 -0.0243812 0.0495618 -1.33818 0 0 0 0 0 0.000536598 -0.029331 -0.000503604 0 0 0 0 -8.0313e-05 0 -0.0071522 0 0 1.736e-05 -0.000320874 -0.00398723 0 -0.000540938 0.0041575 -0.054175 0 0 0.114444 -1.35382e-05 0 -0.0335698 0.120621 0 0 0.00811976 0.0369862 0 -0.231816 0 0.00968124 0 0 0.000608827 0 0 -0.67318 -0.00173472 -0.00107027 0 -0.0117725 -0.000716672 0 0 0.060411 0 -0.00167664 -0.206339 0.00662123 0 0 0.000372546 0.000226742 0 -0.00531309 -0.0377526 -0.00897195 1.03671 -0.0228525 -0.00357384 0 0.00784157 -0.0340842 -0.0173888 0.0504857 -0.0136025 0 0 0 4.69902 0.150277 0.428365 0.0193327 -0.0468227 0.56346 0.000145615 -0.000404069 0.00490767 0.0741087 0 0 0 0 0 0 0.0773652 0 -0.115409 0 0 0 0 -0.313135 0.34801 0 0 0.536757 0 0.0613286 0 0.00863533 0 0 0.0849337 0 1.10807 -0.114382 0.154764 -0.0340753 0 0 0.111104 0 1.31394 0 2.50139 0.317422 0 -1.07328 1.73975 0.0136369 0 -0.0187449 0 0 0.032384 0 0.607527 0.293473 0 0 -0.0735983 0 0 0.426163 -0.33343 0.264665 0 2.47482 0 0.55747 -0.0317547 -0.0522949 -0.236276 -0.0117585 0.77974 -0.384558 0.0295212 -0.65738 5.9167 0.0395785 0 0 0 -0.043818 -0.0528118 0 0 0 0 -0.0423654 -8.78257 -2.08387 3.4732 -0.555662 0.571081 -0.625762 -0.135321 0.181541 -0.294001 0.61273 0 0 0 0 0 0 +338 0 0.314193 0.164067 0.031988 0.219386 -0.457652 -0.13367 0.444843 1.78998 0.211135 -0.833207 0.0844336 -0.597163 -0.00220333 -0.474442 -0.000754484 -0.176093 -1.5537 -0.0722304 -0.0516562 -1.11384 0.0093306 -0.174109 0.00370295 -0.0712836 0.172065 0.0704665 0.0157165 0.269978 0.25986 -0.362732 0.02807 0.0895573 -0.714436 0.00106736 0.0471644 0.0141508 0.0749819 -3.66412 0.123392 -0.687831 -0.0131533 -0.0495548 0.025577 -1.14431 -0.0604998 -0.47395 0.244729 -0.153397 0.0293156 0.0115019 0.100876 2.24217 0.267325 0.0465593 -0.131965 0.549205 0.209867 -0.851373 0.0110318 5.58743e-05 1.19159 1.55591 0.113504 0.325935 -0.0197468 -0.91024 -0.304877 0.12562 -0.0443737 -0.113039 0.220626 -0.0403446 0.184054 -0.583344 0.105318 1.18201 6.23809 1.70383 -1.21846 0.84408 -1.2901 4.38175 0.190619 -0.33835 0.881508 -2.76809 0.0224392 -0.0494642 0.0461565 -0.0782527 -0.810486 0 0 0 0 0 0.031988 0.219386 -0.000167694 0 0 0 0 -1.53118e-06 0 -0.00068704 0 0 -5.8929e-07 -1.16422e-07 -0.00366139 0 0.000143526 -0.0118141 -0.0302042 0 0 0.056544 -5.45945e-09 0 0.0310581 0.143292 0 0 0.00585424 0.00867844 0 0.0577134 0 0.00623697 0 0 0.000844369 0 0 -0.00379833 -3.26522e-05 -1.25665e-05 0 -0.00357606 -0.00279373 0 0 -0.0269943 0 -0.000312073 0.066465 0.000761843 0 0 1.09665e-06 0.00026375 0 -0.000581266 0.0325512 -5.61635e-05 0.154772 -0.00398143 0.013545 0 0.000760563 -0.0265239 0.0822669 0.00947372 0.0480921 0 0 0 0.272132 0.0150603 0.0880515 0.00212891 -0.00519482 0.138662 4.144e-07 -1.01119e-06 1.37247e-05 0.00607647 0 0 0 0 0 0 -0.457652 0 -0.13367 0 0 0 0 0.0778884 0.194611 0 0 -0.527444 0 -0.0493198 0 0.00350256 0 0 0.0715093 0 -0.220017 0.0534444 -0.104816 0.0491442 0 0 0.0536266 0 3.12523 0 -1.41991 -0.229733 0 0.829959 -0.654814 -0.00757499 0 -0.0185237 0 0 0.0107549 0 0.371642 0.193799 0 0 0.087751 0 0 0.445845 4.47773 0.138634 0 0.667029 0 -0.600049 0.118313 -0.143615 0.0911277 0.0246128 1.07377 0.665193 -0.0127021 0.801985 6.82093 0.0636079 0 0 0 -0.0828221 0.038114 0 0 0 0 0.117883 7.22159 1.96945 -3.14847 0.279232 -0.320446 0.538819 0.142025 -0.123201 0.20794 -0.450642 0 0 0 0 0 0 +339 0 0.2749 0.124106 -0.0315607 -0.0593694 0.056438 -0.0466001 -0.171517 -0.169116 -0.244729 0.870699 -0.235018 -0.249965 0.00563542 -1.01922 0.0101984 0.321454 -0.218057 0.133935 0.0581231 0.0950285 0.0578289 -0.047454 -0.00723419 0.369749 -0.0183373 0.238414 0.0379076 0.210439 0.577852 -0.343611 -0.0460555 0.0876419 -0.146388 -0.109575 -0.0478156 -0.0367995 0.116396 -0.870636 -0.458983 -0.200978 0.0362545 -0.677276 -0.0789832 -0.638128 0.196484 -0.170752 0.346471 0.254834 0.209954 -0.223848 0.348852 -0.765334 -0.111976 0.0711519 -0.158753 0.167604 -0.402261 -0.095973 -0.430917 -0.0794792 0.103199 1.78049 1.44133 0.395803 -0.0905271 0.252648 0.895968 0.257602 0.0842472 -0.595029 0.123255 -0.175704 0.0257425 1.64316 0.0691262 -0.691175 4.17338 -0.994019 0.661321 -0.330817 -0.177202 1.79512 -1.02763 0.50669 -0.53338 0.318664 -0.0728755 0.171446 -0.413572 0.969655 -1.80228 0 0 0 0 0 -0.0315607 -0.0593694 1.19925e-05 0 0 0 0 1.09208e-07 0 0.00326923 0 0 -9.95686e-06 -1.25779e-06 0.00903155 0 -0.000133482 0.0286838 0.0701829 0 0 -0.2495 -5.89825e-08 0 -0.0891742 -0.777354 0 0 -0.0351721 -0.0127201 0 -0.31671 0 -0.0345661 0 0 -0.00497029 0 0 -0.8897 2.32885e-06 -0.000212328 0 0.000255737 0.000470149 0 0 -0.0014855 0 2.23175e-05 -0.214072 -4.26208e-05 0 0 1.85294e-05 -1.88618e-05 0 9.64849e-06 -0.0584551 -4.89126e-05 -0.855184 0.000710236 0.0269945 0 -2.95829e-05 -0.0245937 -0.297238 -0.00054929 0.0644836 0 0 0 1.87797 0.000386512 -0.0194337 -5.90619e-05 0.000144118 0.174328 7.00185e-06 -1.70854e-05 0.000231898 -0.0168727 0 0 0 0 0 0 0.056438 0 -0.0466001 0 0 0 0 -0.207458 -0.841469 0 0 0.414815 0 0.0352967 0 -0.0362349 0 0 -0.130968 0 -0.503893 -0.0667216 0.199733 0.00286974 0 0 -0.367028 0 -9.09721 0 -3.30668 -1.08758 0 -0.444995 -1.33259 0.017468 0 -0.0258343 0 0 -0.0785014 0 -3.29436 -0.693204 0 0 -0.068797 0 0 -0.142758 -1.87499 -0.121937 0 -2.21452 0 -0.204814 -0.0879779 0.107429 0.116678 -0.17135 -1.02018 0.0277019 0.113337 0.0416513 -6.64405 0.118426 0 0 0 -0.169009 -0.079664 0 0 0 0 0.0199563 13.6594 -0.00666913 0.577477 0.541566 -0.533977 0.949039 -0.123009 0.0814888 -0.0812987 0.0798748 0 0 0 0 0 0 +340 0 -0.241961 0.222107 -0.0304733 -0.165169 0.256633 0.331208 -1.07403 -2.77382 -0.261821 1.2277 0.16367 -0.57314 0.00197131 -0.808529 0.022357 0.0904394 -1.46176 0.246192 0.0982487 -1.56225 0.0172224 -0.460014 -0.00346115 0.245129 -1.0497 0.245084 -0.00183007 -0.747045 -1.55948 -0.200046 -0.0292433 0.241289 -0.486697 0.218002 -0.656221 0.00870417 -0.174993 0.00326719 0.109793 0.234909 0.012006 -0.199329 -0.00232101 -1.37569 0.060931 0.58093 -1.16099 0.904027 -0.0385925 -0.228912 0.222529 0.858808 -0.117684 0.0322655 -0.180906 0.73765 -0.176378 0.152159 -0.243673 0.000841763 0.782975 -0.190463 0.001794 1.3614 0.109749 0.706955 -0.520797 -0.198912 0.0381438 -0.645018 -0.0991223 0.0706825 0.174202 1.50777 1.13273 0.33202 -1.43593 -1.62632 2.50264 -0.150422 -0.00576333 1.01904 -0.630129 0.747083 -1.46249 3.75617 -0.0225992 0.00640989 0.194184 -0.856396 4.86391 0 0 0 0 0 -0.0304733 -0.165169 -0.000227183 0 0 0 0 -2.07438e-06 0 -0.00225857 0 0 -1.37384e-06 -2.30594e-07 0.000500543 0 -0.00056932 0.0419664 -0.000186393 0 0 0.0301042 -1.08134e-08 0 -0.0380116 0.592369 0 0 0.00686545 0.18214 0 -0.145603 0 -0.00495348 0 0 -0.000304095 0 0 -0.203299 -4.42358e-05 -2.92969e-05 0 -0.00484464 -0.00393929 0 0 0.098229 0 -0.000422779 -0.247891 0.00103353 0 0 2.55666e-06 0.000357314 0 -0.000811536 -0.0227529 -0.000184774 -0.477292 -0.0055868 -0.0132887 0 0.00103939 0.00949405 -0.182329 0.0128017 -0.0480876 0 0 0 1.05563 0.0213935 0.0144398 0.00301803 -0.00736437 0.00610047 9.66109e-07 -2.35743e-06 3.1997e-05 -0.00224138 0 0 0 0 0 0 0.256633 0 0.331208 0 0 0 0 0.0528167 -0.779494 0 0 0.315225 0 0.0443203 0 -0.0100249 0 0 -0.0987382 0 -0.717203 -0.114518 -0.0539172 -0.0109615 0 0 -0.103295 0 -5.0016 0 -1.27362 -0.02899 0 -0.728458 -0.891352 -0.0005667 0 -0.0109462 0 0 -0.074096 0 -0.766715 0.0950382 0 0 0.0207033 0 0 -0.0696042 0.832915 0.0771654 0 -0.67917 0 -0.163483 -0.0489169 0.0172399 -0.413536 -0.0328752 0.384032 0.0829876 -0.0251356 -0.0109164 0.167723 0.0919712 0 0 0 -0.153185 -0.0566467 0 0 0 0 0.116836 3.75097 -1.34777 2.38795 -0.0575765 -0.0323872 0.458975 -0.128938 0.129305 -0.183135 0.444907 0 0 0 0 0 0 +341 0 0 0 0 0 0.107418 -0.286917 0.722713 0.854817 0 0 0.266819 -0.639807 0 -0.495804 0.0447201 0 0 0 0.0706094 4.23644 0 0 0 0 0.44302 0 0 0.58299 -1.49734 -0.532318 0 0.032519 0 0 0.358782 0.0604417 0 0 0.921352 0.0508222 0 0 0.247599 0.603531 0 -0.940697 0.248708 0.192159 -0.549128 -0.498327 -0.196596 0 -0.10146 0.0900667 -0.419561 0.0984327 -0.0500464 -0.478419 0 0 -0.623138 -2.36597 0 -0.531223 -0.338329 -0.414202 0 0 0 0 -0.0150242 0.371963 0 -1.99261 0.40215 0 0 0 -1.69194 0 -0.976001 0.984453 0 -0.522811 0.872627 -2.2746 0 -0.813562 1.70888 -3.29053 5.78612 0 0 0 0.00490001 -0.031961 0 0 0 -0.0354341 -0.0345323 0 -0.00544892 0 -0.0053383 -0.028714 0 0 0 0 0.0238965 0 -0.00960532 0 0.00753418 0 -0.158692 0.239288 0 0.00148544 0 0 0.21462 -0.00271385 0.0361151 0 0.00147341 0 -0.00261958 0.175844 0.0201705 -0.0419432 0.0287822 0 -0.00029904 0 0 0 4.96609e-05 0 0 0.00249338 0.000201883 0.262487 0.0123518 0 0 0.0305612 0 0.0094622 0 0 -0.0048694 0.0164554 -0.345879 0.0298928 0 0 0.0597311 -0.0179535 0.0548786 0.014445 -0.0659605 0 0.139015 0.010726 -0.036841 0 0 0 0.11571 0 0.101486 -0.46262 0 0.00536115 -0.0138099 -0.0758447 0 0.00230249 -0.012181 0.0219535 -0.0883951 0 0.107418 0.00490001 -0.286917 -0.031961 0.0387225 0.162697 -0.318367 0.274053 -0.156242 0.0360997 -0.0435047 0.0509694 0.00629477 0.0482414 -0.0549938 -0.0156631 0.0292991 0.128872 0.713904 0.720777 -0.022479 0.0366679 -0.0409161 0.0388434 0.127687 -0.227838 -0.146319 0.0460842 0.482817 0.312186 -0.490129 -1.18964 -0.00866672 -0.0281631 0.101366 0.00703576 0.00930483 0.0781257 0.0579307 -1.11679 -0.0129284 -0.049714 -0.895819 1.33862 -0.00354729 0.041506 0.0662608 0.203233 0.00647048 1.79026 -1.12136 -0.345207 -0.0761343 -0.418965 0.109214 -0.464613 -0.226933 -0.0133455 -0.124881 0.278545 -0.31565 -0.681229 -0.289766 -0.742327 -1.74545 -0.203929 0.881535 -0.00250574 0.256713 -0.542 -0.110211 -0.10561 -0.0785603 -0.0311463 0.00607162 0.110335 2.77814 0.175329 0.719564 -0.197349 -1.22073 4.38252 -0.10154 -0.36214 1.10906 -0.0010782 -0.0882854 -0.229429 0.682115 -0.676175 1.19224 0 +342 0 0 0 0 0 -0.729771 -0.257218 0.740975 2.08941 0 0 -0.234201 -0.314572 0 -0.932389 -0.178741 0 0 0 -0.10177 -1.18314 0 0 0 0 0.328662 0 0 0.351016 2.025 -0.306344 0 -0.748972 0 0 0.136795 -0.0588065 0 0 0.260113 -0.23546 0 0 0.0322617 -1.05061 0 -0.309509 0.764669 -0.471481 -0.0138816 -1.17422 -0.0145156 0 0.040052 -0.35608 0.742304 0.176252 0.0304511 0.557214 0 0 0.564451 2.56451 0 0.578547 0.216046 -0.107167 0 0 0 0 0.337354 -0.388228 0 1.40852 -1.35033 0 0 0 -4.24128 0 -1.39643 -2.48734 0 -0.629863 -0.363437 -4.44451 0 -0.285757 -1.07516 1.35636 -8.13355 0 0 0 -0.0743961 -0.0138841 0 0 0 -0.0257457 0.0481625 0 -0.00300995 0 0.00187488 0.0184777 0 0 0 0 0.0441931 0 0.00234644 0 0.250831 0 -0.19979 0.182734 0 0.00134808 0 0 0.0688005 0.00180481 0.0224619 0 0.00721142 0 0.00249818 0.0827579 0.0106369 0.03145 0.00969546 0 9.99081e-05 0 0 0 0.000375671 0 0 -0.00312204 0.00284227 0.416843 -0.00697978 0 0 -0.00107054 0 -0.00507342 0 0 0.0117118 0.0440077 -0.145072 -0.0190593 0 0 0.0782022 0.0125255 -0.012289 0.0102236 -0.0597388 0 -0.0579426 0.0169475 -0.208082 0 0 0 -1.07245 0 -0.110906 -0.30944 0 -0.00987113 -0.0176964 -0.0785015 0 -0.00143071 -0.0039731 -0.000271376 -0.0327162 0 -0.729771 -0.0743961 -0.257218 -0.0138841 -0.542986 -0.0618775 -0.114142 -0.231961 -1.1851 0.0184047 -0.0312537 -0.0201299 0.00264475 -0.00500961 -0.0210489 -0.0704739 -0.0232298 0.118761 0.351026 0.425149 -0.389348 0.0428301 0.138686 0.0541993 -0.159241 0.0544749 -0.47937 0.0103832 -0.772131 -0.0808708 -3.05092 -0.37651 -0.00348488 0.427085 -1.43229 0.0158788 -0.00308157 -0.0382201 -0.0159153 0.488596 -0.172276 0.00714711 -0.627889 0.989459 -0.00494488 -0.019301 0.121945 0.0584926 0.172184 1.17495 -1.12642 -0.762166 0.00711784 0.301329 0.0431722 1.10362 -0.442628 0.839628 -0.117922 0.364695 -0.527442 -0.822073 0.110154 -0.565651 -6.44385 -0.221915 -0.0890596 -0.0247574 -0.16021 -0.228762 -0.00325659 0.0261142 -0.0448764 0.153055 0.129086 0.299133 17.2932 2.0476 -2.09781 0.708459 -0.400743 -0.382434 -0.0705892 -0.0311134 -0.409684 -0.0942266 -0.0813586 0.031174 -0.31704 0.208545 -0.434612 0 +343 0 0 0 0 0 -0.412342 -0.132184 0.0864169 0.626104 0 0 -0.0845354 0.236528 0 0.223325 -0.0643483 0 0 0 0.0479021 0.301397 0 0 0 0 0.13768 0 0 0.166748 -1.32451 0.060468 0 -0.456286 0 0 0.102973 -0.0372619 0 0 1.39006 0.491184 0 0 0.221035 0.549688 0 0.0905398 0.0280556 0.0162528 -0.207864 -0.88201 -0.0260302 0 0.225512 0.56054 -0.321732 0.829681 1.00394 0.577987 0 0 0.284965 -6.17302 0 0.106434 0.4455 -0.246546 0 0 0 0 0.274117 0.00828873 0 -3.92173 0.881897 0 0 0 -0.0977033 0 -1.79926 3.27803 0 -0.484796 1.7627 -2.27432 0 -1.01239 2.2847 -3.81563 3.82918 0 0 0 -0.445425 -0.0659927 0 0 0 -0.0206574 0.0483603 0 -0.00206343 0 -0.00739605 -0.0917692 0 0 0 0 -0.225399 0 -0.038131 0 -0.503547 0 -0.169512 0.00484805 0 -0.00274397 0 0 -0.225757 0.000548793 0.0295653 0 0.00411227 0 0.00356536 0.0153619 -0.0217605 -0.00200156 0.019211 0 -0.000370714 0 0 0 0.000253355 0 0 0.00419324 0.0011609 -0.0117006 0.0011911 0 0 -0.0246432 0 -0.0116347 0 0 0.0204789 -0.00292923 -0.0646187 0.0476951 0 0 -0.116636 -0.0186299 -0.0388008 0.0681759 -0.358614 0 -0.0392344 -0.0117473 -0.10137 0 0 0 2.12034 0 0.137187 0.482462 0 0.0182741 0.00840178 0.134518 0 -0.000335913 0.0147078 -0.024329 0.103909 0 -0.412342 -0.445425 -0.132184 -0.0659927 0.280803 0.0298444 -0.253643 0.189413 -0.282437 0.0702234 0.0439256 0.349327 0.0105731 0.0808429 -0.060953 -0.0599925 0.0622582 0.458917 0.924642 -0.761357 -0.0805095 0.0668952 0.123627 0.141946 0.180121 -0.0111971 -0.456633 -0.0146782 3.92719 0.323637 0.0177073 0.277419 -0.0122249 0.50619 0.135805 0.0390626 -0.00184458 0.0297058 0.0203353 -0.285552 -0.01758 0.00325667 1.59219 0.810202 0.0106207 0.0181667 0.184682 -0.102302 0.0606517 -0.715787 -2.20895 0.429365 -0.00452041 -0.121753 0.0471207 -0.41584 0.0330432 -0.24458 0.141736 -0.304349 -0.644215 -0.468187 0.0487291 0.280384 1.28756 0.354595 -0.125544 0.287717 0.0881825 0.489995 -0.14615 -0.00423256 -0.126111 0.121262 -0.11018 -0.0974008 -0.100368 -1.00158 -2.37233 -1.30668 -1.27805 1.34272 -0.419072 -0.367122 0.552723 -0.779955 -0.314387 -0.222092 0.325404 -0.541238 0.426575 0 +344 0 -0.364788 -0.0587506 -0.0135798 -0.124259 0.0359222 0.249924 -1.31246 -2.60162 -0.0832183 0.786786 -0.141633 -0.381493 0.00120494 -0.107552 0.0137731 -0.43557 -1.77799 0.223339 0.0292206 -0.733432 0.0523499 -0.104956 -0.00158401 0.141917 -0.810311 -0.0488808 0.108977 -0.686257 -1.36049 0.137375 -0.0122977 0.0921891 -0.0822958 0.569145 -0.46323 -0.00896322 0.396517 0.225937 -0.170997 0.379588 0.00867754 1.7684 -0.0100808 -1.89554 0.0493025 0.573494 -0.923973 0.165073 0.0160705 1.17554 0.306815 -0.709286 -0.0676223 0.042132 0.112633 2.04703 -0.529467 -0.241832 -0.314388 -0.0142609 0.779134 1.84757 0.312323 -0.0169448 -0.943418 0.970396 0.191267 0.817395 0.0193155 -0.0594984 0.0766007 -0.0814934 -0.603667 2.45365 0.786841 -2.04732 -1.83724 -1.17793 2.10532 -0.7095 1.21641 -0.669796 -0.726449 0.988876 -1.10594 3.61479 -0.015216 0.0213882 0.171163 0.272432 2.14009 0 0 0 0 0 -0.0135798 -0.124259 0.000724577 0 0 0 0 0.000100402 0 0.00534456 0 0 -0.000162018 -0.000964436 0.00306577 0 0.000545311 0.0230403 0.0232803 0 0 -0.1313 -5.10545e-05 0 0.00401697 0.178686 0 0 -0.0163617 0.0980989 0 0.0630845 0 -0.0167163 0 0 -0.00191319 0 0 0.177583 0.00189663 -0.00306057 0 0.0136875 0.0147246 0 0 0.0802936 0 0.00139581 0.429889 0.00309116 0 0 0.000312107 -0.00117967 0 0.00689193 0.0149069 0.00244297 0.16964 0.0370032 0.00107261 0 0.00277593 0.000653912 -0.0814395 0.038267 0.0605203 0 0 0 -1.19094 -0.0337997 -0.183738 -0.00493407 -0.00432641 -0.00516336 0.000137817 0.000120844 0.000254908 -0.00272162 0 0 0 0 0 0 0.0359222 0 0.249924 0 0 0 0 -0.0739151 0.368948 0 0 0.686457 0 0.0816238 0 0.00218732 0 0 -0.539183 0 0.146808 -0.061843 0.337613 -0.0637085 0 0 0.0972011 0 -1.13625 0 2.26907 0.52389 0 -0.38291 0.774152 0.035205 0 -0.00352981 0 0 0.036871 0 0.241739 -1.08373 0 0 -0.134187 0 0 0.0260565 0.461099 -0.0430887 0 1.32749 0 -0.0969263 0.166576 0.0189203 -0.585392 0.0444837 0.869393 0.311095 0.0407674 -0.323994 -0.811957 0.150731 0 0 0 0.135645 -0.137491 0 0 0 0 -0.115909 -10.6935 -3.38869 1.45373 -0.568508 0.218691 -0.538765 -0.338058 0.214245 -0.281835 0.244913 0 0 0 0 0 0 +345 0 -1.08219 -0.242361 -0.00945412 -0.0337009 -0.212494 -0.029515 -0.270174 -0.429179 -0.0726309 0.102003 -0.0312072 0.555535 0.000979423 1.48805 0.00733201 -0.666045 -1.86624 -0.0378914 0.00612209 2.02864 -0.00920649 0.0635059 -0.00125033 0.0372989 0.035286 -0.27275 -0.0240697 0.0803068 -0.226999 0.246126 -0.0101576 0.0965937 -0.0134432 -0.155398 0.0298101 -0.00274308 -0.0453718 -0.164271 -0.143835 0.788125 0.00845543 -0.370432 -0.0138784 2.609 0.0682261 0.245246 -0.0416037 0.0787043 0.0428138 -0.44589 0.112218 -0.602282 0.00825571 0.00911037 -0.10207 -0.940239 0.204906 0.161793 -0.078051 -0.0188585 -0.447642 -2.74631 -0.761368 -1.05983 0.0950542 -0.272855 -0.149814 -0.119645 0.0182235 -0.0187286 -0.169406 0.116962 0.0491352 -1.63083 0.0251865 0.315723 -0.120769 -0.709966 0.540984 -0.662857 0.899816 -0.769453 -0.174084 0.0635184 0.0549007 0.142544 -0.0210563 0.0152781 -0.0186321 0.136144 0.357076 0 0 0 0 0 -0.00945412 -0.0337009 0.00197538 0 0 0 0 0.000208145 0 0.0052724 0 0 0.000822839 0.000905122 0.00267734 0 0.000513698 0.019944 0.0302938 0 0 -0.0353015 4.79146e-05 0 0.00381293 0.421817 0 0 -0.00230223 0.0958676 0 0.0291906 0 -0.0076711 0 0 -0.000728742 0 0 0.241025 0.00393192 0.0155437 0 0.0373156 -0.0304744 0 0 0.145586 0 0.00380531 0.269473 0.00151174 0 0 -0.00158509 -0.00321608 0 0.00648346 -0.0404448 -0.0011118 -0.0190155 0.0303805 0.00882407 0 0.00640149 0.000696406 -0.115858 0.00384247 0.0350984 0 0 0 -2.77554 -0.210216 -0.277234 -0.0140712 -0.0123383 -0.0152611 -0.000699932 -0.000613732 -0.0012946 -0.0029213 0 0 0 0 0 0 -0.212494 0 -0.029515 0 0 0 0 0.198897 0.0431859 0 0 0.185402 0 0.0191709 0 0.00289215 0 0 -0.0688474 0 0.520026 0.0151901 0.074764 -0.00611035 0 0 -0.015656 0 -1.11026 0 4.18487 0.0431116 0 0.408002 1.51766 0.0103522 0 0.0101198 0 0 0.00999621 0 -0.207009 -0.309936 0 0 -0.0322338 0 0 -0.691048 4.0118 0.171012 0 0.0994107 0 0.806825 0.0699629 0.0852461 0.385208 -0.0843167 0.895563 0.778017 0.172404 0.101661 1.01517 0.191813 0 0 0 0.275083 -0.0653967 0 0 0 0 -0.0667876 -25.8465 -3.34891 -1.32515 -1.17628 0.483892 -1.27064 -0.045369 0.0167893 -0.0399633 -0.132418 0 0 0 0 0 0 +346 0 -0.262436 -0.474449 -0.0445958 -0.207221 0.116391 -0.205434 0.326456 0.424132 -0.347316 0.886364 -0.0387535 0.0941485 0.00439407 -0.646346 0.0572508 -1.12511 -2.80446 0.033226 0.141931 -3.62639 0.00384455 0.388007 -0.00567014 0.219853 0.435149 -0.612093 -0.00495708 0.39063 0.500699 -0.228436 -0.0466662 0.54232 0.605043 -0.111015 0.276283 0.00205941 -0.00102296 1.19801 -0.12481 -1.84043 0.0360428 0.00272663 -0.00589805 -0.266036 0.267741 -0.939574 0.47228 1.29317 0.0170694 -0.0214413 0.121469 6.67994 -0.247207 0.217679 0.102257 1.40289 -0.914588 -0.35038 -0.329004 -0.0767948 0.922634 6.21897 -0.407125 -0.515539 -0.332551 -0.20731 0.00322584 0.246004 0.084179 -0.215461 0.524058 0.274962 0.1213 4.51181 -0.956498 0.474491 -3.82805 -1.23665 -2.43698 0.172692 -1.08074 -1.06686 -0.387069 -0.109077 -0.546682 -0.94954 -0.0826317 -0.00788656 -0.287847 0.0473992 -0.787615 0 0 0 0 0 -0.0445958 -0.207221 0.000838999 0 0 0 0 0.000195894 0 2.37833e-05 0 0 -0.00172329 -0.00540902 0.00261331 0 0.000243111 0.0551065 0.0122634 0 0 -0.15121 -0.000286338 0 -0.0327448 0.307504 0 0 -0.0144609 0.16878 0 -0.16584 0 -0.0298529 0 0 -0.00300501 0 0 -0.601883 0.00370051 -0.0325536 0 0.015849 0.0693826 0 0 -0.0797484 0 0.00161622 0.390033 0.00495737 0 0 0.0033197 -0.00136596 0 -0.000739036 -0.0337365 0.00619138 -0.706151 0.0300996 -0.0187999 0 0.00744837 0.00761958 -0.294568 0.0359944 0.0732491 0 0 0 5.24969 0.392348 0.235824 0.0245602 0.0215355 0.0433923 0.00146589 0.00128536 0.00271132 -0.000523087 0 0 0 0 0 0 0.116391 0 -0.205434 0 0 0 0 -0.2586 0.130836 0 0 0.679639 0 0.0753273 0 0.0248264 0 0 -0.950344 0 0.705391 -0.0781751 0.23803 -0.136034 0 0 0.200946 0 -7.04993 0 1.22616 -0.512932 0 -0.390771 0.73903 0.0310058 0 -0.0525256 0 0 0.0165705 0 -2.07758 -2.09333 0 0 -0.290747 0 0 -0.0531346 0.606417 -0.143138 0 0.463377 0 -0.0131407 0.315233 -0.0262762 -0.533532 0.130697 0.859624 0.57934 0.0303651 0.582116 2.84511 0.0943098 0 0 0 0.0934282 -0.135366 0 0 0 0 0.0495561 -10.9711 -3.0419 0.402456 -0.379948 0.0341375 -0.341943 -0.284126 0.160877 -0.229282 0.0982473 0 0 0 0 0 0 +347 0 0.260285 -0.121114 -0.0873193 0.0122675 -0.000611546 0.185374 -0.667938 -1.50933 -0.756158 1.19834 0.0717804 0.593479 0.0480855 -0.72216 -0.132122 -1.1945 -5.6268 0.14824 -0.143989 -1.43434 0.0371764 0.149635 -0.0630588 0.409703 -0.315582 -0.343414 -0.203064 -0.332856 -0.881538 0.121357 -0.222898 -0.460145 0.349281 -0.918511 -0.201199 -0.0521958 -0.68446 0.965423 0.01975 -0.0781051 0.165174 -3.15375 -0.12629 -0.287642 0.4208 0.287505 -0.516463 -0.534729 0.417387 -1.74437 0.616837 0.305764 0.225944 -0.0748001 0.0515728 -1.87293 0.140943 0.701194 -0.688715 -0.356626 0.933322 -0.555577 -0.724748 1.10894 1.50864 0.769684 -1.33895 -1.32081 0.39829 -0.0489328 -0.284727 -0.205321 1.02346 -0.169965 0.000598437 0.915175 -4.27279 -2.47733 0.680849 -1.45742 0.854708 -1.99918 -1.2172 1.02961 -1.63272 2.48835 -0.736012 0.522347 -0.0244305 -1.16779 3.33246 0 0 0 0 0 -0.0873193 0.0122675 -0.00431194 0 0 0 0 0.000422437 0 0.0277504 0 0 -0.00335339 -0.00913411 0.0209618 0 0.00324799 0.183255 0.198989 0 0 -0.102037 -0.000510346 0 -0.0211807 0.931952 0 0 -0.00926981 0.460155 0 0.0496476 0 -0.0832216 0 0 -0.0082058 0 0 0.243225 0.00876346 -0.0493049 0 -0.0622442 0.051869 0 0 0.155403 0 0.00238971 0.864983 0.00284897 0 0 0.0013585 0.0172791 0 0.01636 0.0127427 0.0029927 0.103321 0.0893019 0.00192418 0 -0.0103265 0.0142563 -0.533499 0.196441 0.149303 0 0 0 -2.3243 0.0253712 -0.702468 -0.0261422 0.0235244 -0.0650734 0.0030571 -0.00398606 0.00946631 -0.0340363 0 0 0 0 0 0 -0.000611546 0 0.185374 0 0 0 0 -0.2205 -0.759085 0 0 0.0451062 0 0.0222652 0 -0.0229375 0 0 -0.636473 0 0.172202 -0.11751 -0.110888 -0.0806474 0 0 -0.113397 0 -3.3104 0 -1.26875 0.198188 0 -0.528705 -0.363241 -0.00480483 0 -0.0485206 0 0 -0.119707 0 -0.753947 -0.61218 0 0 -0.0693335 0 0 -0.0819666 0.305842 -0.219276 0 1.19013 0 0.627512 -0.0603139 0.319554 -0.0548687 0.185225 -0.482806 0.217548 -0.0798609 -0.124053 -0.476914 -0.141012 0 0 0 0.085053 -0.0391588 0 0 0 0 0.117476 10.8351 1.47154 1.14175 1.02556 -0.831572 0.970641 -0.0505574 0.0570307 -0.03184 0.21977 0 0 0 0 0 0 +348 0 -1.32842 0.01472 -0.0217859 -0.149188 -0.179282 0.120676 -0.5951 -0.813848 -0.0708621 0.828175 0.344523 -0.235988 0.0101386 -0.265697 0.243954 0.832215 3.72117 0.17859 0.323357 -1.713 0.0409869 -0.170111 -0.0110032 0.139428 -0.399918 0.272483 0.0459943 -0.469188 -1.13896 0.0495061 -0.0306264 0.935076 -0.0801027 0.200858 -0.262184 0.0823561 0.245497 1.64078 0.163102 -0.469282 0.0494146 0.757291 0.0415486 -1.11316 0.257314 0.180213 -0.822298 1.15429 -0.0345863 -1.02865 0.117409 1.47243 -0.332744 0.333359 -0.505134 1.2126 0.611196 -0.498293 -0.191498 -0.111814 -0.333626 -0.504303 0.123204 -0.0265824 0.592286 0.509337 -0.410151 -0.393208 0.0535754 -0.14764 -0.40695 0.388565 -0.24921 -0.387723 0.754717 1.32606 -9.90644 -3.40629 -0.429058 -1.90666 0.557168 -1.21883 -0.95209 0.841725 -1.20272 1.50194 -0.450063 0.187333 0.509708 -1.76885 4.3056 0 0 0 0 0 -0.0217859 -0.149188 0.00418044 0 0 0 0 0.00121295 0 0.0229032 0 0 0.00440761 0.01512 0.0152534 0 0.00344331 -0.00154039 0.0993571 0 0 -0.150374 0.000806589 0 0.0636484 0.2833 0 0 -0.0210039 0.0774236 0 0.254417 0 -0.030327 0 0 -0.00364733 0 0 1.25875 0.0228446 0.0804443 0 0.077501 -0.101107 0 0 0.306219 0 0.00972393 0.538142 0.00437576 0 0 -0.00721458 -0.00576521 0 0.0215791 -0.120863 -0.0158964 0.545864 0.0878562 0.0432951 0 0.00241455 0.000214251 -0.112932 -0.0420398 0.0793359 0 0 0 -11.9961 -0.857624 -1.07948 -0.0652831 -0.0301981 -0.136707 -0.00332825 -0.00291631 -0.00555303 -0.0177344 0 0 0 0 0 0 -0.179282 0 0.120676 0 0 0 0 0.273974 0.713482 0 0 -0.0327835 0 -0.00624847 0 0.0594834 0 0 -0.0993285 0 -0.132181 0.0437338 -0.206446 -0.00238716 0 0 0.474188 0 5.37659 0 2.86811 0.607236 0 0.471812 0.415347 -0.0236635 0 0.028671 0 0 0.084622 0 1.62648 0.355295 0 0 0.062843 0 0 -0.299282 -0.411701 0.161012 0 0.700003 0 -0.388482 0.143178 -0.259072 0.618287 -0.103865 -0.256526 0.119329 0.102874 0.58568 4.78575 0.0452703 0 0 0 0.244827 0.035528 0 0 0 0 -0.148232 -22.9514 -2.53136 -1.45533 -0.887706 0.374413 -0.962203 -0.0466106 0.02453 0.0223417 -0.175195 0 0 0 0 0 0 +349 0 -0.590091 0.314644 -0.145067 -0.499444 0.263468 0.338014 -0.64628 -1.68173 -0.37192 1.76499 0.0389891 -0.31097 0.069048 -0.0545749 -0.0661996 1.28095 3.22773 0.314119 -0.253232 1.55528 0.0853513 -0.398258 -0.0843011 0.409449 -0.745016 0.630401 -0.0805922 -0.536289 -0.202356 0.0190545 -0.215811 0.0651231 -0.513756 -0.107258 -0.453755 -0.0525369 -0.438474 -0.169179 -0.412061 0.936962 0.228251 -1.18641 -0.214397 -0.16217 0.66193 0.761654 -0.536666 -0.638796 0.217244 0.289163 0.814095 3.50025 0.270821 -0.447653 0.195705 -0.501993 0.0432433 -0.228083 -0.449487 -0.277291 -0.780513 0.216783 0.34142 0.0946651 0.214504 0.233743 0.445366 -0.318133 0.154233 0.748137 0.0771267 0.150712 0.60172 0.0345279 0.379898 1.18075 5.06386 -0.967295 2.71366 0.32673 0.645621 -1.40704 -1.70809 1.90131 -2.68525 2.7062 -1.15777 1.2092 -1.07417 0.519359 0.764964 0 0 0 0 0 -0.145067 -0.499444 0.00225635 0 0 0 0 0.000649219 0 -0.0139188 0 0 0.00118998 -0.0146737 -0.014338 0 -0.00300293 0.0505896 -0.116017 0 0 0.0228107 -0.000746782 0 -0.180272 -0.158601 0 0 0.00193824 0.00264936 0 -0.497816 0 -0.0152477 0 0 -0.000937479 0 0 -1.13176 0.0115059 0.00754836 0 0.0240399 0.0884695 0 0 -0.418574 0 0.000857431 -0.431744 0.00082939 0 0 0.00268569 -0.00834308 0 -0.0177427 -0.0644895 -0.00452419 -1.24171 -0.0395209 -0.00472556 0 0.00311144 -0.000849265 0.0467003 -0.140432 0.0120135 0 0 0 9.60657 0.528709 0.853804 0.0542469 0.0182541 0.129819 -0.000712214 0.00511254 -0.00561204 0.022796 0 0 0 0 0 0 0.263468 0 0.338014 0 0 0 0 0.00395195 -0.517877 0 0 0.765438 0 0.0862829 0 0.0197195 0 0 -0.117058 0 -0.701118 -0.00825926 -0.0877864 -0.0147318 0 0 0.0857782 0 -0.929332 0 0.633988 -0.0343553 0 -0.354387 -0.871473 -0.0135516 0 0.0218104 0 0 -0.0350227 0 -0.469009 0.494324 0 0 0.0485999 0 0 0.226909 0.0368242 -0.10069 0 -1.09225 0 -0.267616 -0.251263 0.0914505 -0.196185 -0.0277092 -0.0675596 0.123676 0.0943121 0.376214 -2.82555 0.0150409 0 0 0 -0.136166 -0.0441486 0 0 0 0 0.0624197 -7.96179 -4.48734 2.76596 -0.853771 0.69563 -0.458788 -0.614142 0.446268 -0.410407 0.245595 0 0 0 0 0 0 +350 0 0 0 0 0 0.185259 0.187587 -0.856932 -2.10849 0 0 -0.279181 -0.258453 0 -0.996732 -0.0753669 0 0 0 0.0617164 -6.07294 0 0 0 0 -0.552917 0 0 -0.328993 5.20215 0.0119084 0 -0.269297 0 0 -0.287067 -0.0493269 0 0 -2.25576 -0.935021 0 0 -0.495233 -2.41876 0 0.289457 0.56974 0.45676 1.09135 -3.27889 0.959768 0 0.199483 -0.027123 0.282739 -0.325046 -0.0612562 -0.114854 0 0 -1.44594 2.07866 0 1.13813 1.14966 0.720901 0 0 0 0 -0.792945 -1.76305 0 0.661804 -0.519547 0 0 0 6.9694 0 4.88583 -9.27762 0 2.4077 -2.95587 3.7571 0 2.80531 -3.4615 6.35969 -16.5526 0 0 0 0.205857 0.07772 0 0 0 -0.0507792 0.0590264 0 -0.00593702 0 -0.0105568 -0.0107134 0 0 0 0 0.020727 0 0.0194791 0 -0.175647 0 -0.3554 0.0393413 0 -0.00605545 0 0 -0.0740485 -0.00395975 -0.0352939 0 -0.00331546 0 0.00394829 0.0566842 -0.0184034 -0.0562358 0.00804417 0 -0.000773657 0 0 0 -0.000255683 0 0 0.0150779 0.0040312 0.00433614 -0.0777317 0 0 -0.0107362 0 -0.0131516 0 0 0.0474728 0.0424499 0.0751759 0.0041882 0 0 -0.135488 0.0467958 -0.0114785 -0.15716 0.187247 0 -0.0509994 -0.0316897 -0.0137267 0 0 0 1.07065 0 0.152397 0.188937 0 -0.00414919 0.0643582 0.000761761 0 0.00556985 -0.00652145 0.0414613 -0.052165 0 0.185259 0.205857 0.187587 0.07772 -0.52684 -0.193719 0.426073 -0.217943 -0.122447 -0.134667 -0.0680549 -1.55472 -0.0244413 -0.249099 0.0947867 0.00703039 0.0157765 -0.591781 -0.484519 -1.49964 -0.421067 -0.140166 -0.5824 -0.112359 0.0930223 0.286144 -0.107214 -0.024675 -9.20904 -0.586947 -4.41021 -0.14702 0.018471 -0.424979 -1.39982 -0.0953794 -0.00830801 -0.0442579 -0.11938 2.0494 0.080228 0.0396395 -2.18468 -2.3289 -0.00679476 -0.0194555 -0.463796 -0.16309 -0.0731578 -0.302427 -0.596376 -2.50475 0.0750011 -1.29364 -0.0830473 2.77485 -0.0197806 1.28438 0.787641 0.221848 -1.7046 -1.07566 -0.209004 4.6253 19.3516 -0.422047 0.321028 -0.124413 -0.124867 0.139758 0.519801 0.0255406 0.312284 -0.282947 0.137937 0.589112 32.8095 11.8762 -0.983876 7.03465 -2.56548 -1.89299 2.52149 -1.01319 -0.186424 1.29339 1.29713 -0.192037 -0.725252 1.47446 -2.72394 0 +351 0 0 0 0 0 0.0862447 0.308539 -0.489025 -3.31332 0 0 -0.208231 1.07866 0 1.70357 -0.164933 0 0 0 -0.235924 2.73832 0 0 0 0 -0.653217 0 0 -0.165984 -0.618686 0.412213 0 -0.492045 0 0 -0.109156 -0.0337822 0 0 -0.161063 0.82788 0 0 -0.0175605 5.68413 0 0.32241 -0.0799551 -0.533644 -0.0432061 0.866779 -0.0604171 0 -0.0994704 -1.17549 0.838521 -3.11095 -0.618299 0.705481 0 0 0.164339 0.171065 0 0.803531 0.186962 -0.254991 0 0 0 0 -0.788792 0.0498773 0 -0.169534 -1.0864 0 0 0 10.1594 0 2.44875 -1.83868 0 0.371706 0.102998 5.61977 0 0.0278256 0.182047 1.54005 2.45125 0 0 0 -0.101002 -0.000959211 0 0 0 0.0016671 0.0852517 0 -0.000466002 0 -0.00107388 -0.0925189 0 0 0 0 -0.263625 0 -0.0504349 0 -0.436354 0 -0.0706423 0.567229 0 0.00494489 0 0 -0.0350882 0.00278026 0.0921929 0 0.0168631 0 0.00573473 0.0222738 0.0157002 0.0410077 0.0105596 0 -8.3842e-05 0 0 0 0.00117434 0 0 -0.00560275 -0.00933039 0.240095 0.02551 0 0 0.00620638 0 -0.0191932 0 0 0.0843645 0.0318062 0.0544308 -0.0418266 0 0 0.0327812 -0.0366265 -0.0314148 0.0163597 -0.0983095 0 -0.129692 0.0168311 -0.367984 0 0 0 0.750236 0 -0.0519588 0.216959 0 0.00257047 -0.00175939 0.196192 0 -0.00331894 0.00769291 -0.0147085 0.0237024 0 0.0862447 -0.101002 0.308539 -0.000959211 0.143325 0.033645 0.062796 -0.419166 -0.343347 0.0048061 0.00979199 -0.167617 -0.000263723 -0.0614745 0.00436836 -0.0590185 0.00912187 0.100651 1.12394 1.05464 -0.343017 -0.254071 -0.04209 0.128547 0.0578284 -0.0125686 -0.460217 0.0137986 1.83203 -0.0967014 -2.05711 0.255217 7.06285e-07 -1.63745 -0.892014 -0.0170369 -0.00437978 -0.0706516 -0.015951 -0.204587 -0.0330569 0.00117768 0.419388 3.16396 0.00211713 -0.026056 0.378172 0.118394 0.145402 -0.059455 4.45821 -1.1133 0.0251479 -0.290399 -0.0100993 1.04544 -0.563606 1.21899 0.268393 -0.0352324 -0.374829 0.899745 -0.236977 1.58041 -1.07467 0.025717 -0.221812 -0.0143469 -0.249206 0.295371 0.15455 -0.0237333 -0.00521627 0.13256 0.121253 0.238353 15.3037 3.46554 6.49822 1.88011 -0.927033 2.42236 0.0446434 0.053723 0.31702 1.09978 -0.220619 0.104664 0.253357 -0.190648 0.543998 0 +352 0 0 0 0 0 0.63407 0.320839 -0.359884 -1.34264 0 0 -0.663771 0.705999 0 0.549707 -0.165522 0 0 0 -0.284604 1.73554 0 0 0 0 -0.338217 0 0 -0.41384 5.90954 0.362818 0 -0.518864 0 0 -0.240583 -0.0827736 0 0 -3.65791 2.39709 0 0 -0.769591 0.556132 0 1.33613 0.812303 -0.364067 1.17677 -0.97606 0.781463 0 0.65074 -1.01003 0.239971 2.51358 1.30351 0.870033 0 0 0.858268 -4.89365 0 0.718892 0.139958 0.782448 0 0 0 0 -1.17121 -2.34832 0 -0.249342 0.56394 0 0 0 2.44826 0 6.53903 -10.0151 0 3.25629 -5.06633 5.16046 0 5.10751 -7.74023 12.6728 -20.0123 0 0 0 0.559163 0.117468 0 0 0 -0.0304982 0.0117393 0 -0.00311041 0 -0.0172642 0.0117227 0 0 0 0 0.208614 0 0.0314432 0 0.245709 0 -0.271142 -0.0718515 0 0.00225817 0 0 0.43025 -0.00655014 -0.023816 0 -0.00918064 0 0.00110413 0.142508 0.0485552 -0.0855985 0.0308105 0 -0.0012937 0 0 0 -0.000625701 0 0 0.00779621 0.00238672 -0.106911 -0.0458416 0 0 0.0484633 0 -0.00241109 0 0 -0.000154767 0.0166423 0.085892 -0.0331428 0 0 0.152213 0.0489794 -0.0489359 -0.133247 -0.150206 0 0.232811 0.00455005 0.0780239 0 0 0 -1.08369 0 0.0598224 -1.03148 0 -0.0175 0.00221499 -0.161198 0 0.00680814 -0.0332877 0.0742644 -0.235757 0 0.63407 0.559163 0.320839 0.117468 -0.835404 -0.177583 0.0591556 0.279052 -0.330935 -0.165808 -0.0226289 -0.529476 -0.0296306 -0.194511 0.0587977 -0.00485123 0.0522223 -0.797732 0.902291 -1.36199 -0.123721 0.113923 -0.183545 0.0219317 0.383976 0.15153 -0.433191 -0.0235298 1.38116 -0.184436 -0.351886 0.751082 0.0161212 0.514684 -0.246959 -0.0817988 0.000360281 0.0684099 -0.061941 0.8466 0.131506 0.0257925 0.946295 1.43083 -0.00137429 0.0380758 -0.0718264 -0.154076 0.11615 0.345689 2.51411 -0.966307 -0.00962764 2.22089 0.00106916 1.68789 -0.146333 0.575442 0.421732 -0.190689 1.19972 -0.371216 0.181135 4.76011 31.3255 0.0910067 -0.226849 0.071208 -0.309729 0.415967 0.295136 0.00418388 0.222404 -0.205274 -0.000400142 0.438151 2.61783 2.45565 -1.61151 3.35298 0.377824 -2.27464 1.68241 -0.403886 -0.471526 0.29343 1.74856 -0.746305 -0.0530215 0.744188 -1.29729 0 +353 0 1.09903 0.455539 0.104756 0.203827 -0.0389028 -0.116716 1.42788 3.28727 0.380168 -2.89667 0.405549 0.81712 -0.0438861 1.14231 0.0990772 1.23893 3.10815 -0.603619 0.16341 -0.189715 -0.123533 -0.388443 0.0354247 -0.760778 0.764075 0.438076 -0.0505963 0.0699526 -0.0164448 0.303011 0.121341 0.474082 -1.55101 -0.191465 0.310431 0.0986387 0.209709 -6.84792 0.724683 -0.199644 -0.176527 0.453457 0.216525 1.55725 -0.575839 -0.23586 0.0162034 0.825465 -0.52416 0.62997 -1.09637 1.42977 0.0398909 0.16267 -0.0869587 0.586534 0.565895 0.0951706 1.14534 0.292767 1.0964 0.808926 3.34808 -1.01768 0.316215 -0.324095 1.58781 -0.0125955 0.0113036 2.00075 0.484682 0.938553 0.422405 -0.074938 0.0666363 1.52557 41.4336 15.7413 -7.9221 9.78805 -7.79352 10.7786 4.48451 -3.74858 4.19488 -5.96148 1.38577 -1.66759 1.03639 -1.3021 0.0580644 0 0 0 0 0 0.104756 0.203827 0.00802354 0 0 0 0 0.000487374 0 -0.0105751 0 0 -0.00422445 -0.0169499 0.0120701 0 -0.000194109 0.0417576 -0.0271159 0 0 -0.077135 -0.00124152 0 -0.0301721 0.73939 0 0 -0.0171893 0.0908652 0 -0.150913 0 -0.00175679 0 0 -0.00194798 0 0 -0.743921 0.00694804 -0.0603467 0 0.112847 -0.0132915 0 0 -0.0366442 0 -0.000909622 0.0108395 0.00222782 0 0 0.0109991 -0.0264113 0 -0.0271691 -0.0566929 -0.0353072 0.27688 0.0443936 0.0231568 0 0.0478877 -0.0257595 0.105822 -0.0483138 -0.155066 0 0 0 5.69133 0.28649 0.531866 0.0580348 -0.0576974 0.191071 0.00547068 -0.00850904 0.0206703 -0.0101779 0 0 0 0 0 0 -0.0389028 0 -0.116716 0 0 0 0 0.426311 1.20224 0 0 -0.925896 0 -0.13213 0 0.0530911 0 0 0.272332 0 -0.255153 0.145559 -0.326531 0.0345878 0 0 0.419941 0 9.10577 0 -2.71637 0.312758 0 1.06184 -0.745383 -0.0485879 0 0.0597848 0 0 0.150193 0 2.56172 0.0318183 0 0 0.00779598 0 0 0.289419 4.69265 0.610414 0 2.24233 0 -2.94295 0.53929 -0.466506 0.949541 -0.102211 0.544363 3.10419 -0.344078 -1.6032 -6.78376 0.141219 0 0 0 0.215459 0.352648 0 0 0 0 -0.315696 25.1074 5.84784 -3.55515 1.65399 -1.25537 2.69741 0.760867 -0.676366 0.793503 -0.870448 0 0 0 0 0 0 +354 0 1.03692 0.0949916 0.00136728 -0.155762 0.208893 -0.211788 -0.639998 -1.62432 0.322753 -0.0434673 -0.506978 -0.781122 -0.0102839 -1.54941 -0.131487 -0.157022 3.29485 -0.219353 -0.229904 0.337374 -0.0644531 -0.0394398 0.0241909 -0.0630439 0.206306 -0.38263 -0.0463402 0.806864 1.71098 -0.549444 0.086767 -0.456727 -1.19122 -0.171516 0.225054 -0.0820951 -0.142231 -6.85546 -0.640784 -0.566927 -0.0220262 -0.524267 -0.0802423 -1.30126 0.0660737 -0.642109 1.21733 -0.895017 0.1562 -2.06346 -0.281753 -5.16562 0.290248 -0.345429 0.568261 1.59492 1.32359 0.600881 0.277218 0.0887228 -0.118354 -0.876973 3.4769 -0.709769 0.8037 0.818225 1.72724 -0.244797 -0.177519 -0.0922473 -0.608318 -0.510757 -0.783225 0.671654 -1.25797 -0.740772 38.9485 7.57862 2.32865 6.20059 -3.6305 6.60544 -0.585041 0.366586 -0.841135 5.37476 -0.159008 0.862323 -2.17541 3.49524 -6.04126 0 0 0 0 0 0.00136728 -0.155762 -0.00102904 0 0 0 0 -0.0014798 0 -0.0108097 0 0 0.00592594 0.0137073 -0.0200571 0 -0.00110489 -0.045391 -0.144216 0 0 0.30938 0.0010195 0 -0.171006 0.69288 0 0 0.0500453 -0.0986033 0 -0.553929 0 0.0796396 0 0 0.01185 0 0 -1.34152 -0.0200886 0.0792483 0 -0.00993692 -0.0422302 0 0 0.0523781 0 -0.0150855 0.172894 0.0288596 0 0 -0.00945051 -0.00158055 0 -0.00295096 -0.0482354 0.0352529 -0.141414 -0.0490174 -0.00439299 0 0.0103802 -0.0676861 -0.0969867 0.0338736 0.14727 0 0 0 5.81375 -0.156214 0.845946 0.0971052 -0.154448 0.38443 -0.00714978 0.0144406 -0.0304576 0.0582005 0 0 0 0 0 0 0.208893 0 -0.211788 0 0 0 0 -0.386795 -0.31781 0 0 0.385093 0 0.0398689 0 -0.0245054 0 0 0.0387094 0 0.891154 -0.0659362 0.393961 -0.0038363 0 0 -0.155089 0 2.27117 0 -1.02059 -0.347764 0 -0.626911 1.16406 0.0469938 0 -0.0456657 0 0 -0.0390663 0 -0.238322 0.636782 0 0 0.0538666 0 0 -0.122456 -1.83832 -0.338057 0 0.125937 0 1.30647 -0.285331 0.305756 -0.276811 -0.0232385 -0.0463153 -1.16712 0.22324 1.03924 5.54664 -0.00211373 0 0 0 0.103225 -0.150793 0 0 0 0 0.0814193 13.6473 -1.11872 3.76607 -0.545104 0.783531 0.17896 -0.572682 0.511335 -0.353713 0.612677 0 0 0 0 0 0 +355 0 0.462399 0.327275 0.146472 0.449478 -0.353421 -0.243044 0.607451 2.59799 0.164097 -3.85137 0.497484 0.284538 -0.0590044 0.484466 0.153324 0.90116 1.42796 -0.851618 0.341711 -3.37774 -0.21353 -0.400031 0.0492328 -1.05655 0.668512 0.366275 -0.147313 0.0511912 -1.33121 0.209732 0.132254 0.597207 -1.44532 -0.369853 0.234198 0.123395 -0.018321 -5.51726 0.877688 -1.52485 -0.22406 0.120937 0.268815 -0.404809 -0.685737 -0.619712 -0.476765 1.30584 -0.346678 -0.599999 -2.03384 -5.32617 -0.273416 0.483782 -0.76351 -4.04028 -0.85875 -1.17747 1.40174 0.248893 -1.25194 4.25834 4.08342 -3.01592 0.1807 -0.617197 2.70526 -0.232949 0.00735025 1.50628 0.189109 0.266139 0.268768 -1.08965 0.675069 -0.365316 24.0854 15.9954 -12.6188 11.76 -10.3743 10.541 6.43038 -5.84857 7.45492 -6.48575 1.65025 -2.00354 2.81242 -3.38876 4.70033 0 0 0 0 0 0.146472 0.449478 0.00379455 0 0 0 0 -0.000558654 0 0.017397 0 0 -0.00394275 -0.0190059 0.0429554 0 0.00265568 0.0942083 0.185834 0 0 -0.151066 -0.00141362 0 -0.0514722 0.451635 0 0 -0.0133645 0.205226 0 -0.0232492 0 -0.000710187 0 0 0.000455314 0 0 0.155927 -0.00766099 -0.0488124 0 0.0531277 -0.0610511 0 0 0.289749 0 -0.00362692 0.112672 0.00953963 0 0 0.00221359 -0.0122174 0 0.00864647 -0.0048537 -0.0109126 -0.759809 0.0972482 0.0121785 0 0.00693706 -0.0127514 0.131215 -0.164887 -0.138277 0 0 0 -2.86421 -0.222613 -0.509703 0.00819473 -0.0697809 0.0770088 0.00378008 -0.00911812 0.0179908 -0.0538756 0 0 0 0 0 0 -0.353421 0 -0.243044 0 0 0 0 0.429016 1.2294 0 0 -1.48192 0 -0.170813 0 0.0669276 0 0 -0.881568 0 -0.0819458 0.140227 -0.511173 -0.0570764 0 0 0.463216 0 -1.02438 0 -1.58108 -0.317636 0 1.22308 -0.267266 -0.0566632 0 0.0415158 0 0 0.176235 0 -0.745122 -2.18703 0 0 -0.175413 0 0 -0.0761032 1.46749 0.317633 0 -0.929495 0 -1.93899 0.897076 -0.601113 0.987782 -0.165141 -1.42591 2.32028 -0.371588 -3.72957 -22.6008 -0.05391 0 0 0 -0.219863 0.320112 0 0 0 0 -0.365661 14.5645 8.27937 -6.23501 1.99671 -1.66212 1.59856 1.32987 -1.13635 1.24156 -1.03032 0 0 0 0 0 0 +356 0 0.740877 0.0237546 0.150426 0.147296 -0.152095 -0.268876 1.26299 3.22417 0.532309 -3.46326 -0.245259 -0.991694 -0.098739 -1.39431 0.13241 -0.815295 -3.22836 -0.592143 0.27584 -1.3181 -0.147744 -0.0701385 0.0882212 -0.901167 0.642358 -0.241818 0.175676 0.38237 1.57114 -0.357405 0.215483 0.162672 -0.909356 0.561368 0.338387 0.0485693 0.863941 -5.88184 -0.39659 -0.863552 -0.295131 2.63012 0.1406 -4.19256 -0.605322 -0.550704 0.753398 0.291879 -0.151125 0.402692 -1.05679 -6.77742 -0.157193 -0.137862 0.254815 -0.930677 -1.40577 -0.850347 1.14556 0.32085 -1.52655 0.664546 -1.48362 -1.04245 -0.565974 -1.68357 0.383147 0.710493 0.207627 1.40634 0.626556 -0.335302 -0.418587 0.860846 -0.790012 -3.30147 32.5014 13.6459 -10.3488 9.13746 -6.09733 5.5415 6.00773 -4.14113 4.00384 -5.17765 2.11847 -0.482405 -1.34059 3.9763 -7.31267 0 0 0 0 0 0.150426 0.147296 0.0103103 0 0 0 0 -0.00067941 0 -0.0210152 0 0 -0.00291456 -0.00789996 -0.0328979 0 -0.0100148 -0.0685739 -0.0888446 0 0 -0.399083 -0.000622961 0 0.15607 -0.356279 0 0 -0.0491458 -0.293161 0 0.131595 0 -0.0875983 0 0 -0.00722759 0 0 -0.0401713 -0.00925043 -0.0412665 0 0.149485 0.031458 0 0 -0.192347 0 0.0149699 -0.19763 -0.0227945 0 0 0.0165193 -0.0286453 0 -0.0364544 -0.0499423 -0.0521831 0.747109 0.0187098 0.0311532 0 0.042854 0.0364501 0.12359 -0.0524269 -0.168305 0 0 0 3.71592 0.365721 0.409118 0.00236408 0.0482402 -0.0350548 0.00589211 -0.00880374 0.0176347 -0.00641812 0 0 0 0 0 0 -0.152095 0 -0.268876 0 0 0 0 -0.103798 0.779611 0 0 -0.351235 0 -0.0573336 0 0.0143429 0 0 -0.285192 0 -0.112279 0.0979517 0.188896 -0.0102626 0 0 0.0514358 0 1.21136 0 -1.88988 -0.017646 0 0.723769 -0.615361 0.0152532 0 -0.00261026 0 0 0.111855 0 0.163991 -0.748482 0 0 -0.0475204 0 0 0.206286 3.06046 0.413017 0 -0.323354 0 -1.12345 0.118844 -0.205231 0.0976684 -0.0370466 0.701709 1.65972 -0.0808376 -2.21857 -10.2637 0.0971273 0 0 0 -0.150494 0.148479 0 0 0 0 -0.25882 21.7458 4.32649 -4.46248 1.88525 -1.38902 1.4489 0.105065 -0.0602547 0.144258 -0.411369 0 0 0 0 0 0 +357 0 0.543644 0.678519 -0.0120969 -0.0683798 0.0910983 0.153819 0.300461 0.441825 -0.248314 -0.0839043 0.632805 0.281269 0.0296655 -0.366786 0.168702 1.46784 6.64992 -0.0556573 0.257227 0.543324 0.0263178 -0.697599 -0.0544919 0.0214366 -0.116979 0.519253 -0.0510704 -0.509725 -1.8889 0.00885108 -0.124957 0.610907 -2.13214 0.0396477 -0.195966 0.108442 -0.0956263 -8.49714 0.746034 0.56411 0.0889443 0.272069 0.100553 -0.204608 0.230978 0.471597 -1.06956 1.00846 -0.0301764 0.546826 0.33882 3.68868 -0.2155 1.23885 -1.49584 5.94576 0.448496 -0.341748 -0.155075 -0.23997 -2.29984 -0.126896 2.95085 -0.0826481 -0.253698 -0.143808 0.534798 -0.0354032 0.263365 0.734081 -0.0784219 0.555343 0.270205 1.95839 2.00883 -0.210725 50.2344 10.8939 -6.01993 10.8409 -13.138 19.6671 -0.675865 -0.19735 1.69623 -1.74966 -0.808364 -0.85658 2.76781 -5.40707 8.79167 0 0 0 0 0 -0.0120969 -0.0683798 0.017286 0 0 0 0 0.00671997 0 0.0138384 0 0 0.00102403 -0.00980463 0.0527986 0 0.00826691 0.0545667 0.0805437 0 0 -0.329925 -0.000785048 0 -0.14513 2.10184 0 0 -0.0415888 0.401928 0 -0.356762 0 -0.0850777 0 0 -0.0120519 0 0 -0.797974 0.0939677 0.0210248 0 0.243943 -0.0778375 0 0 0.133531 0 -0.00929727 -0.10588 0.0155036 0 0 -0.000910414 -0.0494819 0 0.00127505 -0.234007 -0.000719238 -0.828913 0.114532 -0.000231297 0 0.0876682 -0.0432401 0.176407 -0.189397 -0.108944 0 0 0 1.95128 -0.0884542 0.00970792 0.0534073 -0.11311 0.259423 -0.00131959 -0.00205309 0.00912624 -0.0323052 0 0 0 0 0 0 0.0910983 0 0.153819 0 0 0 0 0.440278 1.0714 0 0 -0.70974 0 -0.103024 0 0.0981525 0 0 -0.101117 0 -1.00865 0.0726848 -0.526477 0.0243185 0 0 0.675088 0 8.94321 0 -5.64802 0.703556 0 0.479078 -2.24782 -0.0703737 0 0.0567109 0 0 0.161899 0 2.72881 -0.172965 0 0 0.049242 0 0 0.139248 3.5772 0.648742 0 0.445008 0 -2.96082 0.968838 -0.775493 0.636853 -0.0458127 0.044302 2.95428 -0.227508 -3.02625 -12.5848 -0.0250072 0 0 0 -0.118605 0.212561 0 0 0 0 -0.335476 49.0546 11.0617 -6.38196 5.30939 -4.20694 4.487 0.675505 -0.622026 0.750927 -0.51624 0 0 0 0 0 0 +358 0 0.943597 0.199175 0.193893 0.543366 -0.351411 -0.267606 1.59455 4.0304 -0.0575072 -3.71948 0.0682118 -0.496246 -0.0978896 -1.01262 0.0769923 0.582146 3.85204 -0.556823 0.264114 -2.33333 -0.153589 0.013167 0.0697013 -1.04104 0.833906 -0.0169154 0.10854 0.418726 0.914892 -0.32757 0.107781 0.0702595 -0.20977 0.529734 0.387181 0.071804 0.54323 -2.4251 0.219173 -1.14512 -0.263785 2.5095 0.206058 -2.02626 -0.401365 -0.597252 0.625166 0.637153 0.432107 -0.0302225 -0.776918 4.56496 -0.0780617 1.1755 -0.265367 2.58612 0.273733 0.523609 0.880612 -0.133685 0.434164 1.11579 0.452627 -0.730453 -0.969008 -1.44924 0.501624 1.85606 0.300095 1.30301 1.37077 -0.587526 0.271476 1.83178 -0.890474 0.73954 6.02713 10.4989 -11.1537 5.55744 -3.90633 1.08968 6.60399 -5.18293 4.757 -7.27339 1.40468 -1.16354 -0.666892 1.26795 -4.25825 0 0 0 0 0 0.193893 0.543366 0.00912797 0 0 0 0 -0.000498683 0 0.0343348 0 0 -0.0115526 -0.0406644 0.0516192 0 0.00159525 0.136533 0.32664 0 0 -0.182655 -0.00298771 0 0.202346 0.723496 0 0 -0.0180436 0.24119 0 0.387178 0 -0.0324256 0 0 -0.00132047 0 0 0.725088 -0.007918 -0.156989 0 0.122478 -0.0415235 0 0 0.250545 0 0.0202366 0.0160437 -0.0308492 0 0 0.00846403 -0.0125845 0 0.0031282 0.0435084 -0.0228773 -1.07214 0.00926199 0.00781955 0 0.00917073 0.0473084 0.0586803 -0.0980006 -0.00281775 0 0 0 -4.77024 0.0237818 -0.882701 -0.0461226 0.0376611 -0.145763 0.0111695 -0.0199046 0.0399314 -0.0844013 0 0 0 0 0 0 -0.351411 0 -0.267606 0 0 0 0 -0.152329 1.0446 0 0 -0.976484 0 -0.110224 0 0.0225979 0 0 -0.187034 0 -0.277607 0.0234126 -0.0282081 -0.014552 0 0 0.238949 0 2.51477 0 -3.83931 -0.353449 0 0.333326 -1.02394 0.00142986 0 -0.0221312 0 0 0.114764 0 0.133922 -0.633429 0 0 -0.0541181 0 0 -0.0713182 -0.287748 0.261824 0 0.221362 0 -1.54608 0.859811 -0.56441 0.0679356 -0.0132481 -0.80146 1.12505 -0.235728 -1.35035 -6.60328 -0.136045 0 0 0 0.066145 0.120953 0 0 0 0 -0.266611 35.2646 9.85977 -4.80048 4.11262 -3.29712 3.17604 0.861139 -0.668209 0.670848 -0.223166 0 0 0 0 0 0 +359 0 0 0 0 0 0.0671499 0.0125151 -0.763468 -1.9488 0 0 0.103739 -0.188774 0 -1.67965 -0.0324329 0 0 0 -0.133608 -0.975021 0 0 0 0 -0.267298 0 0 -0.125419 -6.76544 -0.226718 0 -0.0292471 0 0 -0.0588626 -0.0208116 0 0 0.439676 -1.26648 0 0 -0.00990394 -1.43305 0 -0.534363 -1.6557 -0.199578 0.00101739 -1.04779 -0.0644264 0 0.0694566 -0.0530164 -0.286895 2.38328 0.0290192 0.113863 0 0 -0.785297 2.77968 0 0.273053 0.0766399 1.47774 0 0 0 0 -0.635537 -0.0306738 0 3.58296 1.72028 0 0 0 3.29927 0 -0.397253 9.23605 0 0.00700063 0.735341 9.02849 0 -0.183838 1.39388 -2.7669 24.2008 0 0 0 -0.133667 -0.0086969 0 0 0 0.0215891 -0.00413894 0 0.00162037 0 2.02121e-05 0.00212639 0 0 0 0 0.010413 0 0.00148895 0 0.00167854 0 0.214228 0.073913 0 0.000188417 0 0 0.00496868 0.000136209 0.0039854 0 -4.44886e-05 0 -0.000305475 -0.0194945 0.00129126 0.00183263 -0.000924249 0 1.47019e-06 0 0 0 -3.23442e-06 0 0 -0.000361389 -0.000485736 0.0744457 0.000904999 0 0 -0.000580593 0 0.000529982 0 0 0.000607795 -0.000847012 0.0630594 -0.0024806 0 0 -0.0138843 -0.0053818 0.000428905 -0.0384153 0.00380377 0 -0.0229967 0.000346931 0.0624934 0 0 0 0.0355624 0 -0.00352317 0.0111831 0 0.000359014 -0.00102745 0.0201983 0 -0.000183026 0.00106845 -0.00272498 0.0128908 0 0.0671499 -0.133667 0.0125151 -0.0086969 0.732455 0.127373 -0.0616299 0.210539 0.0151127 0.00223108 -0.00717625 -0.228917 9.66867e-05 -0.0105815 -0.00286831 0.00548131 -0.00807676 0.0487521 -0.763559 0.158817 -0.171228 -0.265721 -0.129335 -0.0706555 -0.0121081 -0.372244 0.115866 -0.00739552 -5.07063 0.169102 -2.47029 -0.871346 -0.000124476 -0.879373 -0.620838 -0.00517148 0.00203335 -0.0119806 0.0287921 -2.50722 -0.00173669 -0.0497259 -2.21912 -1.2532 -0.00171112 0.0131546 -0.217171 -0.0330023 -0.0747884 -0.381849 -1.52387 0.049141 0.0268681 -2.01173 0.00448482 0.81607 -0.00630612 0.178764 -0.06151 -0.0414729 -2.04424 0.196612 -0.0202032 -0.527567 -11.0619 -0.12078 0.221239 0.00518814 0.252313 -0.0482014 0.0188026 -0.00258456 -0.00410872 -0.0254544 -0.0726179 0.00338589 13.6533 0.446158 5.42765 -0.101823 -0.645661 9.03619 0.00672902 -0.128296 0.769873 1.79328 -0.00129876 -0.0673507 0.327436 -0.455772 3.01319 0 +360 0 0 0 0 0 -0.0487263 0.334773 -0.686347 0.0223721 0 0 0.0199064 1.12421 0 1.588 -0.0131223 0 0 0 -0.10654 -0.284595 0 0 0 0 -0.239764 0 0 -0.959952 -1.77812 0.676604 0 0.00212001 0 0 -0.348644 -0.0121672 0 0 -0.0520851 0.656443 0 0 -0.0774799 2.21086 0 0.758116 -1.33992 -0.339076 0.195154 -0.757379 0.0538044 0 0.157765 -0.117955 0.0669408 -1.04085 -0.00693298 -0.61899 0 0 0.76335 0.239972 0 -0.99907 0.0447182 -0.505663 0 0 0 0 0.138496 -0.384393 0 -2.24577 0.596105 0 0 0 -0.15766 0 0.208522 2.52774 0 0.284669 -0.586303 1.32153 0 0.567601 -1.20343 1.22527 1.88317 0 0 0 -0.0479214 -0.00235579 0 0 0 -0.000244539 0.00253757 0 0.000168839 0 -8.0299e-06 0.00179003 0 0 0 0 0.033159 0 0.00113751 0 0.0577448 0 -0.0104184 0.000819621 0 9.6025e-05 0 0 0.00870059 -4.34293e-05 0.000551064 0 2.58527e-05 0 0.00018702 0.00413097 0.00150754 -0.000575072 4.97542e-05 0 -5.84439e-07 0 0 0 1.87945e-06 0 0 0.000115521 0.000297313 -0.00904447 -0.000222586 0 0 0.000188305 0 -0.000324395 0 0 -0.000273554 2.62497e-05 -0.00683163 0.00145121 0 0 -0.0141729 -0.00152669 -0.000183501 -0.00727441 -0.0295303 0 0.000283115 -0.000230426 0.012393 0 0 0 -0.0854429 0 0.00105897 -0.0174021 0 -0.000123392 0.00020701 -0.0123084 0 5.91091e-05 -0.00038725 0.000948052 -0.00663313 0 -0.0487263 -0.0479214 0.334773 -0.00235579 0.0793801 0.0305297 -0.0159179 0.319001 -0.0792143 0.000504204 0.0303479 0.00213932 2.3505e-05 -0.00124059 -0.000724724 -0.000251553 0.0197449 0.00981269 0.0293146 -0.207734 0.405493 0.272404 -0.0114639 0.0642516 0.0603025 0.00461179 -0.014963 0.00842247 1.92923 -0.0270951 2.32189 1.70564 -3.13194e-05 1.09445 0.862228 -0.000618556 0.00201458 0.0718654 0.014745 -0.0686131 -0.00321493 -0.00017602 2.0195 0.409668 0.00515926 -0.00153713 0.210678 -0.00278358 -0.0700026 -0.83598 3.01144 -0.43751 -0.0309416 -5.37254 0.0011257 0.0768201 -0.00508845 -0.0104965 0.0952793 -0.127392 0.952965 0.123378 -0.0707475 -0.160367 -13.2116 0.247501 0.143387 0.012439 -0.0915742 -0.333552 0.00383693 0.0233403 -0.000857486 -0.127887 0.0651956 0.00504434 -12.8331 0.169345 -5.66913 -0.0580451 -0.0802922 -0.865959 0.00071217 0.126671 -0.409632 0.0458077 -0.000261411 0.156525 -0.369102 0.32277 0.0958802 0 +361 0 0 0 0 0 0.678516 0.222452 -0.649247 -1.92097 0 0 0.0592348 0.30458 0 -0.558013 -0.00197843 0 0 0 -0.0364968 4.62666 0 0 0 0 -0.260902 0 0 -0.132006 -1.19591 -0.0079212 0 -0.0803179 0 0 -0.0997912 0.0129666 0 0 0.522204 -0.135052 0 0 0.166354 1.54789 0 -0.135727 -0.392546 -0.585257 -0.240684 0.697742 -0.158923 0 0.0724415 0.0438053 -0.0627994 1.77931 0.446479 0.0339518 0 0 0.0101575 -1.10716 0 -0.352717 -0.339384 -0.374308 0 0 0 0 -0.181286 0.427197 0 0.622614 -1.06417 0 0 0 3.34291 0 -1.15762 3.0886 0 -0.54564 1.0184 2.70891 0 -0.882211 1.53074 -2.18333 7.17699 0 0 0 0.0172315 -0.000889328 0 0 0 0.0106368 -0.00789939 0 0.000491454 0 3.77149e-05 -0.000350899 0 0 0 0 -0.0267687 0 -9.44127e-05 0 -0.0569358 0 0.116032 0.0619521 0 -4.48676e-05 0 0 -0.0202576 0.000277758 0.00251624 0 -7.87308e-05 0 -0.000564495 -0.0050884 -0.00146203 0.00390478 0.000105196 0 2.73383e-06 0 0 0 -5.70935e-06 0 0 -0.000731603 -0.000892808 0.0472407 0.00284142 0 0 -0.00056012 0 0.000974134 0 0 0.000305207 -0.0018684 0.0138466 -0.00442874 0 0 0.0192578 0.00312855 0.000741606 0.016177 -0.0118368 0 0.00607622 0.00115332 0.00985052 0 0 0 0.114383 0 -0.00835162 0.0245353 0 0.000570292 -0.00425407 0.0270647 0 -0.000359582 0.00150713 -0.00447051 0.00262753 0 0.678516 0.0172315 0.222452 -0.000889328 0.204599 0.0951211 -0.00901106 -0.313357 0.244712 0.000431427 -0.0324397 0.0339622 1.55956e-05 0.00219769 -0.000423013 0.00323649 -0.0257429 0.011599 -0.69607 1.47633 0.202644 -0.202668 0.0431873 -0.05135 -0.271549 -0.135998 0.10173 0.0241025 -3.5456 0.0288718 1.2135 -0.690184 -1.78912e-05 -1.37733 0.426082 0.00153837 0.00525778 -0.0146255 0.031577 -0.611289 0.00682773 -0.0235107 -2.16831 -0.359623 -0.00274981 0.0164112 -0.0166116 0.183977 -0.0736069 -0.0658815 3.93281 0.929888 0.0357325 3.69208 0.000723198 1.59852 0.00473059 -0.154356 0.179093 0.462631 1.22046 -0.0607526 0.0887272 -0.34342 6.35569 -0.184654 0.00486622 -0.0381124 0.324565 0.140068 -0.00490278 -0.0443599 -0.000957319 0.0465159 -0.0363046 -0.00786697 -6.70703 -0.00225966 3.74239 -0.0482178 -0.130742 2.43686 0.000423121 -0.108905 0.350596 0.918929 -0.000308999 -0.110691 0.253866 -0.325074 1.14239 0 +362 0 0.846573 0.229857 -0.00184261 -0.0801091 0.355117 0.1005 0.236951 -1.88062 -0.00230468 -0.00197644 -0.0271486 0.876354 2.2685e-06 2.29293 -5.87936e-05 1.23685 6.07573 0.029838 0.000810291 3.14694 -0.00226506 0.135138 -7.65251e-07 -0.0648594 -0.11143 0.192733 -0.00895367 0.28147 1.19375 0.319618 -4.26332e-05 0.00232432 -0.462655 0.00227083 0.16649 -0.000501666 -0.108967 -5.63996 -0.108222 1.28961 0.000124681 -0.0405933 -0.0024298 5.09779 0.00640153 0.363854 0.713504 0.0445043 0.0026958 1.33129 -0.21353 -1.75375 -0.00223429 0.00334616 -0.0157687 -2.35494 0.149331 -0.0286875 0.0775969 -3.08476e-05 -0.0861243 -2.34035 -0.0314338 0.200381 -0.378251 -1.20309 -0.554238 -0.0543096 -9.95469e-05 -0.0110237 -0.031483 -0.0267534 0.0601102 -3.11771 -1.21677 0.315834 22.3824 1.96627 9.48229 1.82746 -1.1559 8.71448 -0.0139304 0.114912 -0.281413 2.95077 -3.65203e-05 0.000563982 -0.0143385 0.23244 -4.07769 0 0 0 0 0 -0.00184261 -0.0801091 -0.00013239 0 0 0 0 -2.60328e-06 0 -0.00762381 0 0 0.0003851 9.74083e-05 -0.00132198 0 -0.000185773 0.000691251 -0.054282 0 0 0.0840912 8.67268e-06 0 -0.00116021 0.264659 0 0 0.0130275 0.0136282 0 -0.0273664 0 0.00192978 0 0 0.000299079 0 0 -0.231946 1.86732e-05 0.00437451 0 0.000416555 -0.00557698 0 0 -0.0249153 0 -0.000326307 -0.0216254 -0.00199919 0 0 -0.000811343 0.00027578 0 -0.000887722 -0.000392019 -0.00136114 0.123042 -0.00687715 -0.00698124 0 0.00301165 -0.0101407 0.0740762 -0.00180933 -0.0696285 0 0 0 1.2973 -0.010526 0.304718 0.0184131 -0.0367044 0.161553 -0.000583122 0.00106577 0.000112239 0.0556525 0 0 0 0 0 0 0.355117 0 0.1005 0 0 0 0 -0.578501 0.306914 0 0 0.346565 0 0.0204911 0 0.00559169 0 0 0.769887 0 0.129769 -0.197003 0.133348 0.0930379 0 0 0.115083 0 9.61008 0 -2.63751 0.974669 0 -1.77128 -0.296809 0.00915666 0 -0.0591566 0 0 0.0139526 0 3.32161 1.66083 0 0 0.199578 0 0 0.56839 1.7327 0.438071 0 2.39746 0 0.418938 0.0337891 -0.21791 0.096449 0.26554 1.14057 -0.267764 -0.0463004 0.566906 12.3093 -0.0553238 0 0 0 0.0415917 -0.00213521 0 0 0 0 0.0168257 21.0368 0.0675413 7.20261 0.538132 -0.441312 1.90058 -0.0641562 0.0560854 -0.23827 1.11683 0 0 0 0 0 0 +363 0 -0.213512 -0.206194 -0.00103029 -0.0468708 0.0455761 -0.258884 -0.0734906 0.0133459 -0.00313985 0.00742952 -0.0203737 -1.86149 4.00656e-07 -1.71143 -0.000509226 -0.95565 -4.89233 0.00681979 -0.00185216 -1.64826 -0.00374581 -0.03069 -8.07912e-07 -0.0732807 -0.0836531 -0.145381 -0.000341841 0.238409 -0.457161 -0.676422 -5.21368e-05 -0.0366291 -0.0418265 -0.0016734 0.0597883 -0.000198241 -0.0427997 1.45135 -0.0064932 -1.2038 2.26697e-05 -0.22383 0.000113207 -5.48949 0.0012019 -0.919044 0.0893441 -0.101031 -0.00128006 1.08403 -0.218558 -0.293265 0.000974009 -0.000767592 0.0182167 1.40744 -0.478449 0.0228981 0.16715 6.1821e-05 -0.350031 1.46671 0.531644 0.512869 0.0225202 0.615976 0.367761 -0.00931637 8.35704e-06 0.165297 -0.0165262 0.0309878 0.0838263 3.27482 0.204397 -0.537211 -7.692 -0.71831 -2.57745 -0.239055 -0.0595931 -2.89708 0.47517 -0.44174 -0.00205066 -0.295956 -6.85679e-06 6.64514e-05 -0.000748731 -0.00714078 1.5616 0 0 0 0 0 -0.00103029 -0.0468708 0.000367382 0 0 0 0 7.15781e-06 0 0.00438971 0 0 -0.000299604 -0.000100409 0.000708197 0 0.000100446 -0.000415162 0.0303986 0 0 -0.0175768 -7.32057e-06 0 0.00146637 -0.0839373 0 0 -0.0031004 -0.0103034 0 0.0346903 0 -0.000386835 0 0 -6.99811e-05 0 0 0.159811 7.60935e-05 -0.0042628 0 0.00400201 0.00747164 0 0 -0.028359 0 0.000778241 -0.0115894 -0.00151068 0 0 0.000610012 -0.000657733 0 0.000497949 0.0100004 -0.000385881 -0.0179102 0.00310616 -0.000528658 0 -0.00126337 0.0136687 -0.00106407 -0.000119532 0.00519098 0 0 0 -0.67476 0.0259811 -0.153065 -0.0122367 0.0236361 -0.0676728 0.000383719 -0.000738464 0.00194649 -0.0242956 0 0 0 0 0 0 0.0455761 0 -0.258884 0 0 0 0 0.232536 0.186681 0 0 -0.000826396 0 0.0053569 0 0.0144114 0 0 -0.0911865 0 0.0633126 0.0158192 0.00905368 -0.0252126 0 0 0.0950009 0 -3.34301 0 2.02022 -0.66257 0 0.302754 0.758718 0.00266425 0 0.0236782 0 0 0.0478053 0 -0.846352 -1.43052 0 0 -0.188737 0 0 -0.0802837 -2.28876 -0.112452 0 1.38668 0 -0.964781 0.106548 0.00967971 -0.110489 -0.0750597 0.0466374 0.313197 -0.0281364 -1.35066 -3.85061 0.0987664 0 0 0 -0.00160599 0.00781605 0 0 0 0 -0.103119 -12.0734 -0.619465 -2.20279 -0.253952 0.238943 -0.936766 0.122977 -0.127295 0.00269883 -0.191448 0 0 0 0 0 0 +364 0 0.873702 -0.265762 0.00276398 0.115993 -0.226416 -0.242476 0.45318 0.164047 0.00475912 0.346494 0.0609795 0.0576585 -4.20217e-06 1.43249 0.000838342 -1.31001 -1.85713 0.0618957 0.0012729 1.75698 0.0096398 0.425027 1.80562e-06 0.0870887 0.318123 -0.643851 -0.00404212 0.607246 -0.331877 0.0573716 9.43964e-05 0.0479358 0.362944 -0.0198731 0.37462 0.00144583 -0.109587 -1.21464 0.109961 0.659588 -0.000225474 -0.429015 0.00258821 2.13277 -0.011372 -0.260699 0.425589 0.0760993 -0.00334346 0.250859 0.0230645 4.6028 0.000441667 0.000873972 -0.0311272 -0.383604 -0.131814 -0.00965971 -0.0621855 0.000147235 0.275267 -1.17835 1.13437 0.10504 0.102076 -0.406532 -0.191559 -0.0371433 9.21877e-05 0.00880497 -0.0476211 0.0495255 0.146716 -0.969157 -0.167238 0.466809 2.22265 -0.184517 -0.630289 -0.00978333 -0.270921 0.847136 -0.495124 0.322511 -0.574475 0.764144 6.48765e-05 -0.000767153 0.0203692 -0.20104 1.13364 0 0 0 0 0 0.00276398 0.115993 -0.00102474 0 0 0 0 -2.47897e-05 0 0.00768993 0 0 0.00101144 0.000347299 0.0012643 0 0.0001913 -0.00500105 0.0507165 0 0 0.033008 2.28148e-05 0 -0.00269449 -0.363496 0 0 0.00782759 -0.110654 0 -0.0587279 0 0.000709547 0 0 0.000170704 0 0 -0.0630081 -0.000424307 0.0153179 0 -0.0175245 -0.00862649 0 0 0.106873 0 -0.00201379 0.289757 0.00714665 0 0 -0.00203648 0.00170196 0 0.000885951 0.00470456 0.00971767 -0.19356 -0.0103195 0.0123021 0 -0.00376461 0.015395 -0.074723 0.00401246 0.158188 0 0 0 -0.322398 -0.117917 -0.198919 0.017288 -0.0299837 -0.0913704 -0.00121997 0.00239518 -0.00876489 -0.0709608 0 0 0 0 0 0 -0.226416 0 -0.242476 0 0 0 0 0.0732141 -0.0790909 0 0 -0.0214495 0 0.0182147 0 0.00987084 0 0 0.60108 0 0.857303 0.0360241 0.045844 0.0783332 0 0 0.0509147 0 2.94092 0 -1.40652 0.455833 0 0.143692 0.774521 0.0126287 0 0.0104935 0 0 0.00450773 0 1.55186 0.696917 0 0 0.115174 0 0 -0.188497 2.12717 -0.0582792 0 -0.906818 0 0.721161 -0.0351872 0.0858066 -0.024652 0.160384 0.634171 -0.0579241 0.00409721 0.22988 -1.54723 0.0264942 0 0 0 0.0761341 -0.0451919 0 0 0 0 -0.00846142 10.5537 0.449532 -0.157295 0.0143226 -0.225156 0.324734 -0.0551627 0.0227143 -0.0806685 -0.0780888 0 0 0 0 0 0 +365 0 0.245762 0.126169 -0.00866272 -0.150141 0.398611 0.125751 -0.400474 -1.78915 -0.0595776 -0.217946 -0.0744565 -0.246892 9.05312e-05 0.237282 0.00542626 -0.0393307 -0.739916 -0.06511 0.0108386 0.346913 -0.02141 -0.177552 -0.000116875 -0.129455 -0.375304 0.117643 -0.0116834 -0.220649 0.289266 0.0091324 -0.00273156 0.0924708 -0.663072 -0.00433695 -0.141017 -0.00287576 -0.0562112 -2.76966 -0.203998 0.10539 0.00211586 -0.0387828 -0.0102735 -0.049127 0.0461486 0.0109969 0.041573 0.207852 0.0249826 1.13778 -0.153709 2.31747 -0.0174066 0.0159534 -0.0451384 0.812005 -0.213416 -0.318664 0.147637 -0.00388462 0.126963 2.19555 -0.0937397 0.581566 -0.108632 0.216911 -0.292901 -0.0524333 0.00423847 0.288779 -0.0561863 -0.115787 0.0318241 0.809315 0.283208 -0.183403 10.2798 2.22289 3.85775 1.40134 -0.640888 3.18504 0.325616 -0.15004 -0.0344532 2.80465 -0.0012586 0.00662286 -0.0422966 0.19361 -0.480793 0 0 0 0 0 -0.00866272 -0.150141 0 0 0 0 0 0 0 2.9876e-06 0 0 0 0 0.000134171 0 5.60924e-06 -0.000971412 0.00235133 0 0 0.130196 0 0 0.000536235 0.304103 0 0 0.0191549 2.55192e-05 0 0.00214966 0 0.00738848 0 0 0.00108534 0 0 0.00485707 0 0 0 0 0 0 0 -0.0336518 0 0 -0.00116877 0 0 0 0 0 0 0 0.0307589 0 0.0411079 0 -0.00303744 0 0 0.00261554 0.0956495 0 -0.0162069 0 0 0 -0.0111231 0 -0.00272228 0 0 -0.000209321 0 0 0 -0.000101333 0 0 0 0 0 0 0.398611 0 0.125751 0 0 0 0 -0.361731 -0.129197 0 0 0.381525 0 0.0258764 0 -0.00692496 0 0 0.0899576 0 -0.240579 -0.158576 0.056234 -0.0246303 0 0 -0.132517 0 -1.97509 0 -0.180136 0.0373035 0 -1.37938 -0.190984 0.000479055 0 -0.031727 0 0 0.00100503 0 -0.353446 -0.0943902 0 0 -0.0890457 0 0 -0.111945 0.596743 -0.480165 0 -0.100053 0 -1.0973 0.0498846 -0.0629856 0.126765 0.156441 0.705639 0.127407 0.0390566 0.433319 0.975646 -0.0215799 0 0 0 0.0937899 -0.0201834 0 0 0 0 0.00946089 5.30604 -0.505781 4.38095 0.146143 -0.105987 0.0454012 -0.0587133 0.0525005 -0.215295 0.735371 0 0 0 0 0 0 +366 0 0.632008 0.189533 -0.00356978 -0.0618709 0.210081 -0.0721606 1.09116 1.59165 -0.0245511 0.0917795 -0.0533139 0.488194 3.73066e-05 -0.286954 0.00258851 0.686444 4.58368 0.0420704 0.00331745 1.5978 -0.00162134 0.105772 -4.81627e-05 -0.0518104 0.570262 0.00147718 -0.0016047 0.597882 1.89057 -0.206983 -0.00112564 0.0484712 0.548739 0.0364293 0.308948 -0.00195454 -0.0647124 2.16592 -0.104174 0.00970772 0.000871916 -0.129149 -0.0049173 2.58343 0.0190172 -0.259649 1.14481 0.0518592 0.0117519 -1.14845 -0.0242619 -1.16025 -0.00557026 0.00510523 -0.0157842 -1.219 -0.243037 -0.163944 0.0722957 -0.0016008 -0.0863416 1.8596 -1.20912 -1.05519 -0.0701537 0.174444 0.106656 -0.0170605 0.00174661 0.0346689 0.00209625 -0.0102266 0.072115 0.193627 -0.4234 -0.093102 -4.59997 0.0514046 -3.18684 0.273446 0.224863 -5.13155 0.204062 -0.115248 -0.0705184 -3.08843 -0.00051865 0.00300341 -0.0415848 0.243932 -3.14234 0 0 0 0 0 -0.00356978 -0.0618709 0 0 0 0 0 0 0 0.000612021 0 0 0 0 3.94727e-05 0 2.30786e-05 -0.00029545 0.000503739 0 0 0.0395721 0 0 0.0015729 0.0925657 0 0 0.00560708 0.000995706 0 0.0217941 0 0.00256597 0 0 0.000369517 0 0 0.0624256 0 0 0 0 0 0 0 -0.0223153 0 0 0.00673858 0 0 0 0 0 0 0 0.0104804 0 -0.0562819 0 -0.00127807 0 0 0.00108786 0.0235609 0 -0.00601979 0 0 0 -0.142959 0 -0.000961413 0 0 -0.0026903 0 0 0 -2.17091e-05 0 0 0 0 0 0 0.210081 0 -0.0721606 0 0 0 0 -0.375386 -0.063764 0 0 0.158609 0 0.0111213 0 0.00433748 0 0 -0.115255 0 -0.357708 -0.112308 0.10636 -0.0346862 0 0 0.0125172 0 -0.28996 0 -2.48087 -0.8623 0 -0.850061 -1.07183 0.00754887 0 -0.0474744 0 0 0.00834234 0 -1.15494 0.216498 0 0 -0.009608 0 0 0.0982281 -3.80243 -0.365162 0 0.192755 0 -1.31559 0.0678666 -0.0150679 -0.164263 -0.066934 -1.14689 0.20063 0.0334439 -0.453967 -3.1979 0.0167248 0 0 0 -0.0374515 -0.0143676 0 0 0 0 -0.0333395 11.0617 -1.45171 4.49866 -0.12023 -0.058344 0.863478 0.0264951 -0.0108544 -0.104018 0.437539 0 0 0 0 0 0 +367 0 0.677949 0.51917 0.000188098 0.00326008 0.0128981 0.20683 0.0741336 0.605882 0.00129364 0.0970012 0.011739 0.90206 -1.96575e-06 1.7943 -0.00126837 2.04052 5.46429 0.0236279 -0.00120655 4.32726 0.0029433 -0.355833 2.53777e-06 0.0435136 -0.283071 0.814604 0.000790699 -0.40969 -0.210171 0.47633 5.93117e-05 -0.0358471 -0.379717 -0.0425604 -0.237714 0.000406606 0.0526793 -0.30419 0.00908504 2.40045 -4.59427e-05 -0.1986 0.000381363 3.80118 -0.00100205 1.25184 -0.437796 -0.0330776 -0.000879741 1.47015 0.115305 -0.46319 0.00173271 -0.00158805 -0.0347664 -2.55959 0.152424 0.15872 -0.0408926 8.43486e-05 -0.150803 -4.19515 1.07978 2.56619 0.0543962 1.25111 -0.134279 0.0408951 -9.20318e-05 0.0486448 -0.0287248 0.00130456 -0.0355245 -3.27261 1.64561 0.498365 1.05424 -0.576421 -0.913121 -0.166244 -0.176542 -0.292037 -0.146916 0.0720849 -0.29628 0.0227232 2.73285e-05 -0.00020729 0.00369872 -0.0250433 0.349327 0 0 0 0 0 0.000188098 0.00326008 0 0 0 0 0 0 0 -0.000774075 0 0 0 0 -0.000187562 0 -2.64385e-05 0.000477215 -0.00548183 0 0 0.0107583 0 0 -0.000151642 0.0876631 0 0 0.00131893 0.00830959 0 -0.00221184 0 0.000301476 0 0 3.54191e-05 0 0 -0.00636381 0 0 0 0 0 0 0 0.00227297 0 0 -0.00415849 0 0 0 0 0 0 0 0.0021625 0 -0.0271508 0 0.000647593 0 0 6.02617e-05 0.00791986 0 0.00396298 0 0 0 0.0145736 0 0.00631611 0 0 0.000274255 0 0 0 0.000236245 0 0 0 0 0 0 0.0128981 0 0.20683 0 0 0 0 0.0785449 -0.421043 0 0 -0.168809 0 -0.00798327 0 -0.0070753 0 0 0.49284 0 -0.9102 9.77314e-05 -0.0445424 0.0532527 0 0 -0.097625 0 1.37735 0 -4.06132 0.256759 0 0.0920208 -1.52922 -0.00232295 0 0.00293022 0 0 -0.0318092 0 1.01387 0.730609 0 0 0.0583515 0 0 0.0610921 -3.28202 -0.0783788 0 0.0272072 0 -0.115046 -0.0948953 0.0568554 -0.0360058 -0.0519439 -1.36029 -0.365621 -0.0346255 0.431416 5.80873 -0.0155974 0 0 0 -0.0013418 0.0129248 0 0 0 0 0.0173249 23.9654 1.12372 1.38091 0.410103 -0.692007 1.77795 0.0274487 -0.0647498 0.0216833 0.0321162 0 0 0 0 0 0 +368 0 0 0 0 0 -0.222114 -0.278755 0.760551 0.974733 0 0 -0.350472 -2.16724 0 -1.61211 -0.071299 0 0 0 -0.185391 6.90311 0 0 0 0 0.0684013 0 0 0.688325 3.68655 -1.04951 0 -0.341081 0 0 0.198901 -0.0596346 0 0 -1.24414 1.1621 0 0 -0.360332 -3.16538 0 -0.791652 1.29618 -0.49178 0.607996 -2.23453 0.521123 0 0.0437203 -0.200458 0.185967 3.36658 0.617345 -0.00572223 0 0 -2.05485 2.75903 0 1.06146 0.9572 -0.377681 0 0 0 0 -0.0235906 -1.2394 0 1.21155 -0.325135 0 0 0 -2.31917 0 1.98233 -6.85487 0 0.995322 -0.272191 -4.9655 0 1.18454 -0.497293 2.70886 -11.7436 0 0 0 0.133599 0.0385165 0 0 0 0.0929996 0.00255786 0 0.012942 0 0.000286795 -0.000966453 0 0 0 0 0.0768181 0 0.00609738 0 0.0282138 0 0.600844 0.406014 0 -0.0041633 0 0 -0.199334 0.000447999 0.0932285 0 0.000142558 0 0.000672677 0.0369997 -0.0298931 0.00756008 0.0156843 0 1.76278e-05 0 0 0 2.56822e-05 0 0 -0.000246099 0.00250092 -0.0854656 -0.00587109 0 0 -0.00943299 0 0.000586722 0 0 0.00752877 0.00122696 -0.11203 0.00335727 0 0 0.0180683 -0.0476402 0.00333753 -0.150928 -0.147825 0 0.140483 0.00621002 -0.0487874 0 0 0 -0.0455271 0 -0.00687042 0.185148 0 0.000391887 -0.000812084 -0.011769 0 -0.000420504 0.00239393 -0.00365127 0.119199 0 -0.222114 0.133599 -0.278755 0.0385165 -0.509855 -0.0200174 0.0648052 0.755734 -0.798444 -0.0417739 0.00646191 -0.305873 -0.00598992 -0.0527417 0.0350161 -0.0435139 -0.0341943 -0.292415 2.19116 1.3662 0.357038 0.452989 -0.000780114 0.297609 0.132727 0.175277 -0.477559 0.0581554 9.53793 -0.0710952 0.276927 0.645384 0.00662213 2.44636 0.385414 -0.00235682 -0.00150722 0.168618 -0.0159792 1.40234 -0.0755793 0.0156049 3.22013 4.48048 -0.00480528 -0.00765673 0.725279 0.324232 0.127995 -0.00942177 1.27143 -0.302347 0.0408534 -3.37727 -0.0118105 0.651836 0.0302821 -0.10216 0.254918 -0.486845 -1.31518 -0.860264 0.35088 1.47789 -4.17229 -0.33573 -0.86165 -0.0738622 -0.364251 -0.319875 0.0957845 -0.0559236 0.0762945 0.321694 0.0150279 0.334529 -1.42937 0.74347 -8.16578 0.70916 0.28377 -4.76708 0.0987374 -0.0197461 -0.0143148 -2.42352 0.0960815 -0.0250566 -0.012612 0.0845508 -1.32634 0 +369 0 0 0 0 0 -0.53786 0.215479 -0.962523 -0.250714 0 0 0.262915 0.922264 0 1.4397 0.0749047 0 0 0 0.177389 -1.14946 0 0 0 0 -0.446348 0 0 -0.926974 -4.25998 0.293051 0 0.589551 0 0 -0.418085 0.0425209 0 0 0.65024 -1.18239 0 0 0.156403 4.05913 0 -0.280389 -2.06278 0.961385 -0.310794 1.42527 -0.0606203 0 -0.290525 0.234979 -0.774621 -2.00339 -0.0999793 -0.0960301 0 0 -0.305804 1.47216 0 0.634942 -0.823125 0.704785 0 0 0 0 -0.255234 0.463967 0 -0.94986 1.89659 0 0 0 2.13344 0 -1.03451 7.14312 0 -0.0526578 0.0579321 5.10046 0 -0.456895 0.958974 -2.54918 13.089 0 0 0 -0.0599627 -0.0130704 0 0 0 -0.0356818 0.00444491 0 -0.00519964 0 -8.46809e-05 0.0148106 0 0 0 0 -0.0100366 0 0.000241152 0 0.0927679 0 -0.220948 -0.148482 0 0.00249809 0 0 0.129198 -0.000258267 -0.027009 0 0.000285341 0 0.000168236 -0.0224353 0.0174762 -0.0039343 -0.00439518 0 -5.42872e-06 0 0 0 1.60148e-05 0 0 0.000483681 0.000460134 -0.000836656 0.0039929 0 0 -0.00182549 0 -0.000726737 0 0 0.0128521 -0.00292711 0.0570745 -0.00960053 0 0 -0.0043542 -0.0308994 -0.000977814 -0.0204637 -0.00885048 0 -0.0181142 0.000200257 0.0353083 0 0 0 -0.0969655 0 0.00346608 -0.114216 0 -0.000287998 0.000313143 -0.0632883 0 0.00027475 -0.00093682 0.00176972 -0.0946288 0 -0.53786 -0.0599627 0.215479 -0.0130704 -0.0520506 0.131638 -0.103279 -0.0202073 1.02794 0.00979462 -0.00552861 0.257451 0.00162685 0.0393671 -0.0169041 0.0557175 0.0409742 0.0542773 -0.772894 1.26231 0.160934 -0.142342 0.161326 -0.110644 0.0847672 -0.287582 0.571861 0.0318493 2.16935 0.154612 -0.232967 0.484437 -0.00240028 0.126258 0.110461 0.0205472 0.00743352 -0.0735584 0.0482301 -1.19155 0.102975 -0.059693 0.871084 -0.546337 0.00518314 0.0275668 -0.0642765 0.201242 0.0191027 -0.996695 1.13512 0.456938 -0.0512689 2.03767 0.030242 0.405101 0.135893 -0.37654 -0.300941 0.623187 1.31259 0.479689 -0.209752 -0.352092 6.96335 0.156759 0.125294 0.0841032 0.568171 0.470226 -0.088314 -0.0945051 -0.0204291 -0.118843 -0.132135 -0.202928 1.20247 -0.625793 2.89308 -0.101803 -0.514509 4.92432 -0.0512962 -0.166091 0.375156 1.26675 -0.0178344 -0.12151 0.339416 -0.268496 1.34534 0 +370 0 0 0 0 0 0.0248246 0.323548 -1.51158 -4.53323 0 0 -0.132536 0.882743 0 0.405311 0.00573752 0 0 0 0.527249 -0.175078 0 0 0 0 -0.913521 0 0 -0.417735 -3.39078 0.174716 0 0.207212 0 0 -0.335698 -0.0156492 0 0 -0.710069 0.0754875 0 0 -0.296868 4.75235 0 0.298333 -0.99282 2.77917 0.347032 -2.74314 -0.032257 0 -0.671238 0.455935 -0.342878 -0.19555 -0.223388 0.948368 0 0 2.40476 -1.86576 0 0.125085 0.692748 1.14143 0 0 0 0 -0.117702 -1.24973 0 -1.89618 0.172072 0 0 0 11.1199 0 0.987625 8.91918 0 0.879799 -0.447868 13.2142 0 1.00867 -0.00337141 0.367027 12.1873 0 0 0 -0.009016 0.0388349 0 0 0 0.0555409 0.0522454 0 0.00703575 0 0.000138309 -0.013982 0 0 0 0 -0.0410869 0 -0.00386228 0 -0.186759 0 0.406671 0.525754 0 -0.000663633 0 0 0.0985974 0.000258971 0.113828 0 0.00168431 0 0.00323229 0.126166 0.000718391 0.00289 0.0273834 0 1.17498e-05 0 0 0 0.000104107 0 0 -0.00159495 0.00260609 -0.119001 -0.000552086 0 0 -0.00357781 0 -0.00662285 0 0 0.0490371 0.000348706 -0.0771917 -0.00652817 0 0 -0.0664121 0.0233481 0.00256213 0.0778721 -0.099069 0 -0.0232746 0.00899304 -0.133671 0 0 0 0.191935 0 -0.0013949 -0.115434 0 0.000727763 -0.0026185 0.0331346 0 -0.000559183 0.00238373 -0.00374148 -0.0837445 0 0.0248246 -0.009016 0.323548 0.0388349 0.233596 0.0593722 0.202798 -0.489025 0.859266 -0.0480528 0.0676463 -0.0906078 -0.00678386 -0.00542994 0.0494364 0.0389975 0.038885 -0.333022 -1.14363 -0.489769 0.121373 -0.245506 0.0305205 -0.127252 0.686108 -0.183164 0.224938 -0.0166024 -1.33332 0.223884 1.75313 0.109705 0.0080345 -1.20098 0.350653 0.0111455 0.00051253 -0.091473 0.0143548 -1.30057 0.12739 -0.0267945 -0.903861 -0.809803 0.00286865 0.0180857 -0.12879 -0.0929528 0.141594 -0.659838 0.806049 -0.376948 -0.159627 -0.0219586 -0.071656 -0.195698 0.208328 -0.0577125 -0.221862 0.441641 1.85815 0.297823 -0.0488261 -0.158933 5.84773 -0.10112 0.195866 -0.0607795 0.10918 -0.000278572 0.00764118 -0.0558812 0.0994969 -0.0971408 -0.0577836 -0.255804 -9.04884 -0.0568499 3.64118 0.571433 -0.200519 3.18012 0.0701047 0.0142559 0.0121237 1.84535 0.109424 -0.0522576 0.234901 -0.285284 1.65537 0 +371 0 -0.0378871 -0.0118266 0.0654118 0.220128 -0.278082 -0.00485897 0.236588 1.84495 0.426128 -1.05553 0.430095 0.83904 -0.0124556 1.23532 -0.0194702 1.8735 10.0563 -0.0917083 -0.0654713 -2.77729 0.0158011 0.164701 0.0160615 -0.304975 0.393132 0.267337 0.105888 -0.423098 -2.06586 0.589816 0.0894325 0.0440062 0.39327 0.708373 0.0794432 0.0660026 0.422829 1.84731 0.860643 -0.819537 -0.0707041 2.80605 0.15232 1.79212 -0.353046 0.120953 -0.980793 -0.00160804 -0.385421 2.56831 -0.521254 -2.29398 0.0895229 -0.100458 0.159199 4.63711 1.02489 0.679935 0.413856 0.137743 1.37203 -1.35087 0.799988 -1.69059 -1.5425 0.802552 0.819392 0.721603 -0.144056 1.09788 -0.30109 0.717823 -0.759479 1.43207 -0.224554 -1.35984 -2.94274 4.87405 -7.57297 2.50304 -1.57472 -1.66898 0.834212 -0.811147 1.38416 -2.36641 0.215263 -0.438557 1.05196 -2.06001 4.94049 0 0 0 0 0 0.0654118 0.220128 0.00021445 0 0 0 0 1.05188e-06 0 -0.00347251 0 0 3.50647e-05 2.48928e-06 0.00775142 0 8.76614e-05 0.0800549 0.00529145 0 0 0.286932 1.74665e-07 0 -0.00565372 1.3746 0 0 0.0286859 0.316474 0 0.00373982 0 0.0587876 0 0 0.0046681 0 0 0.00684581 1.49912e-05 0.000499732 0 0.00305628 -0.00176514 0 0 0.0110774 0 0.000437068 -0.0357719 -0.000481389 0 0 -7.14649e-05 -0.00036939 0 0.00138432 8.4676e-06 3.65691e-05 -0.370363 -0.00125154 0.01948 0 0.00199062 -0.0436684 -0.0335696 4.10523e-05 -0.0292479 0 0 0 -0.0208035 -0.00318408 -0.00609861 0.00248374 -0.00285695 -0.0111483 -4.42537e-05 5.09034e-05 -6.1258e-05 -0.00260443 0 0 0 0 0 0 -0.278082 0 -0.00485897 0 0 0 0 0.153001 1.44782 0 0 -0.564667 0 -0.0697843 0 0.0581077 0 0 -1.46232 0 0.352887 0.0724066 -0.254917 -0.162984 0 0 0.55954 0 -3.56912 0 3.00755 -0.107451 0 0.811033 0.8397 -0.0325578 0 0.00567203 0 0 0.150809 0 -1.22812 -2.79516 0 0 -0.2786 0 0 -1.06181 -2.74086 -0.220524 0 1.45516 0 -1.45796 0.148677 0.0756099 0.726616 -0.248079 -1.7259 0.913544 0.100893 -0.205131 6.4251 -0.0654493 0 0 0 0.591703 0.0806253 0 0 0 0 -0.329429 -20.1129 2.15371 -6.64538 -0.0729964 0.268116 -2.17272 0.0809478 -0.0360839 0.219142 -0.544963 0 0 0 0 0 0 +372 0 -0.78307 0.281484 -0.0205952 -0.0761514 0.0264565 0.0718604 -0.300781 -1.49367 -0.142393 0.983074 -0.0981888 0.0159209 0.00390962 0.15471 0.000749163 2.91089 10.5509 0.217806 0.0241549 2.58819 0.0521158 -0.231593 -0.00505381 0.25504 -0.4327 0.872814 0.0727269 0.323972 0.684788 0.0142272 -0.0286793 -0.053126 -0.283443 0.175309 -0.0231854 -0.0163351 0.367498 1.19103 -0.169574 1.41447 0.0216259 0.770346 -0.0357923 0.921525 0.102155 0.596292 0.479919 0.0400019 0.0898022 1.65056 0.509106 -4.58996 -0.0391426 0.0314903 0.00378108 1.89358 0.213567 0.21273 -0.402263 -0.0417961 0.338991 -2.45847 1.34168 2.26674 -0.56247 -0.338587 -1.10873 0.482956 0.0481348 -0.465512 0.0688555 -0.0681741 -0.348351 -0.659992 -0.173353 -0.669456 1.65724 -3.52743 5.82345 -1.97955 1.07052 -0.690748 -0.711803 0.653083 -1.35605 2.46832 -0.0622874 0.102675 -0.33092 0.54449 -1.63766 0 0 0 0 0 -0.0205952 -0.0761514 5.49153e-05 0 0 0 0 2.64726e-07 0 0.00864645 0 0 1.82867e-06 2.97137e-07 0.0032197 0 0.00100817 -0.0199241 0.0411097 0 0 -0.0319095 2.08492e-08 0 0.00856582 -0.16535 0 0 -0.00693408 -0.06377 0 0.0476487 0 -0.0111948 0 0 -0.00126307 0 0 0.348835 3.7728e-06 2.60617e-05 0 0.000782638 -0.000466203 0 0 0.0169735 0 0.000111922 0.0162786 -0.00012781 0 0 -3.72699e-06 -9.45916e-05 0 0.000307802 0.0690415 -1.0502e-05 0.283748 -0.000384766 -0.0283057 0 0.000530437 0.026079 0.176764 -4.75414e-05 -0.0199186 0 0 0 -0.658389 -0.000685518 -0.0890992 0.000592903 -0.000681995 -0.147802 -2.30789e-06 2.65468e-06 -3.19468e-06 -0.0172453 0 0 0 0 0 0 0.0264565 0 0.0718604 0 0 0 0 -0.342582 -0.478334 0 0 0.147075 0 0.0277555 0 -0.014641 0 0 0.477741 0 -0.624526 -0.13242 0.0733122 0.0830028 0 0 -0.159028 0 2.63616 0 0.0192484 0.0504608 0 -0.64888 -0.679217 0.0107242 0 -0.0697277 0 0 -0.0378104 0 0.596113 1.63005 0 0 0.245431 0 0 0.214692 1.02011 0.553173 0 -2.54038 0 1.34009 0.0215365 -0.0677667 -0.59374 0.224635 0.973817 -0.658927 -0.10154 1.14796 -3.18994 -0.0166275 0 0 0 -0.146828 -0.0738067 0 0 0 0 0.102972 15.3217 -0.363219 5.96699 -0.239663 0.25025 0.711143 -0.107953 0.0470534 0.0125462 0.315865 0 0 0 0 0 0 +373 0 0.212684 -0.217141 0.0397856 0.123816 -0.130029 -0.30778 0.457709 0.876241 0.247077 -0.620278 0.107853 0.45027 -0.00759373 0.518237 -0.0050023 0.195439 -0.136534 -0.288071 -0.0174793 -2.33906 0.011179 0.451508 0.00977391 -0.0984853 0.747021 -0.0185251 0.0503931 0.468043 -1.33642 0.0449296 0.0536287 0.0811166 0.553127 -0.12855 0.391705 0.0193601 0.402749 0.00748926 0.580848 -1.16453 -0.0439402 1.33319 0.0985335 -0.69335 -0.227987 -0.85268 0.0309113 0.186456 -0.249213 2.21231 -0.602629 1.44224 0.00883117 -0.0339326 0.172201 2.75632 0.314584 0.126478 0.183714 0.0860951 0.633756 0.560491 -0.545715 -0.223177 -1.07876 0.58451 0.403723 0.556663 -0.0835305 -0.251823 -0.0621014 0.490719 -0.529168 -0.0890748 -0.661684 -1.54726 0.709329 2.53383 -3.44702 1.14107 -1.04182 1.4514 0.322006 -0.420345 0.667992 -0.488161 0.139011 -0.29085 0.680044 -1.36145 3.19604 0 0 0 0 0 0.0397856 0.123816 0.000304793 0 0 0 0 1.49804e-06 0 0.0151036 0 0 5.45015e-05 3.75996e-06 0.0199185 0 0.00237914 0.0379132 0.118669 0 0 -0.119248 2.63825e-07 0 -0.0234844 0.0957954 0 0 -0.0303916 0.100369 0 -0.0827609 0 -0.00314342 0 0 -0.00351562 0 0 -0.119794 2.13497e-05 0.00077674 0 0.00434382 -0.00250817 0 0 -0.0993528 0 0.000621195 -0.195781 -0.000682468 0 0 -0.000111079 -0.000525005 0 0.00200175 -0.0160337 6.88174e-05 -0.378881 -0.001758 0.0303085 0 0.00283154 0.00618024 -0.0766391 2.7611e-05 0.0484428 0 0 0 0.214069 -0.00462223 -0.094549 0.00356897 -0.00410526 0.0381704 -6.87841e-05 7.91199e-05 -9.52141e-05 -0.0501789 0 0 0 0 0 0 -0.130029 0 -0.30778 0 0 0 0 0.176403 1.06984 0 0 -0.186396 0 -0.0266468 0 0.0335589 0 0 -0.570529 0 0.71256 0.0278453 -0.0744009 -0.0606012 0 0 0.322468 0 -4.32961 0 0.188134 -0.525029 0 0.192461 0.71143 -0.00515114 0 0.0149842 0 0 0.107132 0 -1.3746 -2.07004 0 0 -0.242552 0 0 -0.317525 -1.68843 -0.157387 0 1.46956 0 -0.985809 0.144327 -0.0195488 0.510129 -0.136529 -1.16258 0.634391 0.0066152 -0.957117 0.719843 0.0203616 0 0 0 0.295274 0.0263646 0 0 0 0 -0.251598 2.09313 1.19181 -0.795339 -0.272268 0.160333 0.26969 0.0152445 -0.0229327 0.0949629 -0.0573149 0 0 0 0 0 0 +374 0 -0.635925 0.0737646 -0.00690006 -0.0567039 -0.0807792 0.222575 -0.977349 -0.189553 -0.0580225 -0.553796 -0.213167 1.38878 0.000450038 2.07937 0.0106896 -0.672711 -0.576762 -0.155218 0.0145264 -0.512942 -0.0189194 -0.104909 -0.000271 -0.0829163 -0.0735403 -0.179544 -0.0351898 -0.510188 -0.180692 0.611771 -0.00417133 0.246093 -0.280452 -0.347566 -0.211836 -0.0176265 -0.101772 0.00888207 -0.564073 0.152618 0.00763932 -1.20324 -0.0430436 5.81621 0.122317 0.564795 -0.597481 0.296859 0.142752 -0.521079 -0.0804916 -0.136591 -0.045189 0.0268065 -0.141565 -2.07941 -0.0581133 0.0507545 0.103732 -0.02491 0.816298 -0.803813 0.650344 -0.281594 0.257392 0.653787 -0.0392197 -0.100909 0.0116863 0.132865 -0.370025 -0.0697637 -0.0173649 -1.07877 0.461169 0.235789 6.7285 4.07006 1.24594 1.85358 0.391215 1.80581 0.302568 -0.516046 1.078 1.26167 -0.00627777 0.0402036 -0.227142 1.03086 0.684789 0 0 0 0 0 -0.00690006 -0.0567039 0.00246289 0 0 0 0 0.000230969 0 -0.0183089 0 0 0.0012377 0.0013633 -0.00384882 0 -0.00134855 0.00567851 -0.0657484 0 0 0.265641 9.38079e-05 0 0.00094286 0.770768 0 0 0.0356497 0.077694 0 0.0148044 0 0.020125 0 0 0.00268375 0 0 -0.152478 0.00325736 0.0184192 0 0.032804 0.00519875 0 0 -0.0542363 0 0.00467998 0.0306961 -0.00455226 0 0 -0.000888742 -0.00315109 0 0.0162603 -0.00911336 -0.00441478 -0.429943 -0.00466233 -0.01034 0 0.0140648 -0.0199359 -0.104729 0.00646718 -0.0432674 0 0 0 0.279693 -0.046321 0.126635 0.0243507 -0.0267484 0.0145213 -0.00124293 0.00150313 -0.00236851 0.011287 0 0 0 0 0 0 -0.0807792 0 0.222575 0 0 0 0 -0.0016368 -0.128705 0 0 0.164659 0 0.0229783 0 0.027086 0 0 -0.546315 0 0.0395897 0.0134143 0.193425 -0.064295 0 0 0.216005 0 -3.60731 0 3.46487 0.122283 0 0.366259 0.959481 0.0252394 0 -0.015928 0 0 -0.00415699 0 -0.596359 -0.403077 0 0 -0.0272357 0 0 -0.300758 -0.00627134 -0.0747821 0 1.25175 0 -0.633619 0.0738698 -0.0308911 0.297038 -0.117973 0.19074 0.391418 0.164526 0.051722 5.67648 0.157552 0 0 0 0.14713 -0.0770199 0 0 0 0 0.00761115 -21.605 -0.552459 -4.13611 -0.507366 0.287161 -1.45306 -0.0446019 0.0340547 -0.0359708 -0.194875 0 0 0 0 0 0 +375 0 -0.659931 0.20295 -0.00426132 -0.0409871 -0.113102 -0.066126 0.295688 -0.316416 -0.0867331 0.391555 -0.0178565 -0.135951 -4.83888e-05 -0.431999 -0.0220592 0.224373 3.34247 0.0832211 -0.0273748 1.23917 -0.00341043 -0.393906 -0.000352673 0.0230964 -0.0523546 -0.183879 -0.00360666 0.42229 0.731886 -0.18042 -0.00584597 -0.454959 -0.716952 -0.0125554 0.177222 -0.000955592 -0.0404499 -0.0427044 0.0524865 0.309987 -0.00119412 0.094612 0.00193648 -0.272496 -0.027773 -0.225045 0.636134 -0.591475 -0.00464748 -0.598147 -0.316715 -0.626292 0.103277 -0.0226154 0.144633 -0.0435475 -0.169308 -0.010876 0.0106883 0.00328971 -0.742241 -0.233742 -0.589503 -0.309481 0.0212072 -0.210986 -0.134219 0.0415444 0.0228999 -0.187686 0.0320542 -0.30177 -0.0558031 0.282681 -0.74094 -0.0935071 1.2625 0.314847 -2.22865 0.426574 -0.612047 -2.52309 -0.0619439 0.157613 -0.443325 -1.61712 0.00142541 -0.00718873 0.0338456 0.0544896 -2.77371 0 0 0 0 0 -0.00426132 -0.0409871 -0.00101332 0 0 0 0 -1.63348e-05 0 0.00611368 0 0 -0.000609907 -0.000215658 0.00174547 0 0.000189027 -0.00675776 0.0431828 0 0 -0.076683 -1.41301e-05 0 -0.00583956 -0.476285 0 0 -0.00822578 -0.0560674 0 -0.0534296 0 -0.0038322 0 0 -0.000265825 0 0 -0.170165 -0.000195425 -0.00891631 0 -0.0131551 -0.0305593 0 0 -0.00285292 0 0.00263313 -0.061183 -0.00313898 0 0 0.000722771 0.00273596 0 0.00391834 -0.0290987 0.00330025 0.250432 -0.0139844 -0.0143003 0 0.00842035 0.015851 0.0604318 -0.00375133 0.0214617 0 0 0 0.17557 -0.00285879 -0.0472069 0.0134743 -0.0173093 0.00167405 0.000665533 -0.000789757 0.00112907 -0.00916998 0 0 0 0 0 0 -0.113102 0 -0.066126 0 0 0 0 -0.286664 -0.672897 0 0 -0.0243465 0 0.000448298 0 -0.042563 0 0 0.701101 0 -0.403019 -0.135939 -0.121357 0.0796198 0 0 -0.469282 0 3.05566 0 -0.648721 -0.059191 0 -0.722827 -0.759014 -0.0162481 0 -0.0600286 0 0 -0.0506938 0 0.439404 1.5211 0 0 0.174798 0 0 0.674075 -0.377091 0.227356 0 0.47844 0 0.390059 -0.0430351 -0.156573 -0.126844 0.155493 -0.317519 -0.662888 -0.0841006 -0.481551 -1.5469 -0.141354 0 0 0 -0.249907 0.00568948 0 0 0 0 0.0951535 14.487 0.348175 4.64199 0.0514873 -0.00228049 0.753381 -0.0776971 0.0715017 -0.0384363 0.439098 0 0 0 0 0 0 +376 0 0.859079 0.91195 -0.0119723 -0.168251 0.349434 0.300523 0.0382194 -1.24891 -0.135868 -0.115404 -0.34948 -0.40654 0.000518669 0.603355 -0.0106527 3.30445 14.6332 0.023365 -0.0176205 4.61484 0.00881581 -0.645606 -0.000529212 -0.0154384 -0.484449 1.06078 0.0415627 -0.0351518 2.38021 -0.0344531 -0.00882536 -0.246201 -1.91187 0.280668 -0.100819 -0.025063 0.364447 -7.64316 -0.757415 1.72279 0.00880501 1.14466 -0.0537373 2.73553 0.141245 0.67104 0.680873 -0.498109 0.205991 -0.214949 -0.0451412 -8.45897 0.0780517 0.00525324 0.0250469 -2.08306 0.21639 -0.309378 -0.0472958 -0.0309457 -3.9169 0.22311 -0.738853 -1.07368 -0.541463 -2.71298 -0.32327 0.494507 0.0310263 -0.389957 0.354252 -0.498723 -0.439688 -0.210167 -0.667665 -0.575113 33.2283 3.47773 5.78857 2.54139 -0.0969634 1.34924 0.0665886 -0.13158 0.88806 -4.10974 -0.00724921 0.0491465 -0.328726 1.93589 -9.02052 0 0 0 0 0 -0.0119723 -0.168251 0.00374596 0 0 0 0 0.000291278 0 -0.0208284 0 0 0.00131423 0.001644 -0.00372646 0 -0.0016517 0.00814916 -0.0399641 0 0 0.295304 0.000111967 0 0.00441716 0.772919 0 0 0.0299771 0.0971573 0 0.029763 0 0.0224745 0 0 0.00254848 0 0 -0.225101 0.00412502 0.0193435 0 0.0541645 0.017575 0 0 -0.116669 0 0.00486758 0.0147711 -0.00589159 0 0 -0.00275109 -0.00528274 0 0.0215468 0.000863426 -0.00466845 -0.292067 0.00610091 -0.00815249 0 0.020102 -0.0162804 -0.141428 0.0301154 -0.034421 0 0 0 0.526087 -0.05205 0.0914738 0.0258384 -0.026443 0.0315951 -0.00181805 0.00208473 -0.00235418 -9.72763e-05 0 0 0 0 0 0 0.349434 0 0.300523 0 0 0 0 -0.466375 -0.359679 0 0 0.22451 0 0.00985978 0 -0.019977 0 0 1.31793 0 -1.33855 -0.18669 0.0869092 0.166037 0 0 -0.214155 0 8.59661 0 -7.47131 0.713236 0 -1.4779 -2.79773 0.00578992 0 -0.056625 0 0 -0.024619 0 2.71695 2.97401 0 0 0.372598 0 0 0.799931 1.2309 0.281575 0 -2.03112 0 0.822797 0.00891735 -0.156744 -0.467558 0.0507121 0.156848 -0.718763 -0.06438 -0.0311188 -8.93027 -0.12599 0 0 0 -0.342939 -0.00594164 0 0 0 0 0.060992 45.9252 -0.285552 11.2727 0.528992 -0.289782 3.27779 -0.0827155 0.0976656 -0.149858 0.818985 0 0 0 0 0 0 +377 0 0 0 0 0 0.265474 0.328753 -1.83648 -4.23157 0 0 -1.01592 0.854608 0 0.145109 -0.229051 0 0 0 -0.134462 1.26692 0 0 0 0 -0.857952 0 0 -0.185128 5.9897 0.23871 0 -0.842943 0 0 -0.443692 -0.112793 0 0 -3.14543 2.32462 0 0 -0.530394 2.51546 0 1.2903 1.17583 0.502943 1.096 -4.11588 0.59151 0 -0.395844 -0.657167 0.156928 -2.17953 -0.582207 1.44108 0 0 0.324733 -5.17825 0 0.635966 1.37717 0.0415923 0 0 0 0 -0.264701 -3.12894 0 0.81452 0.612921 0 0 0 5.97981 0 4.05793 -6.01919 0 2.43327 -4.59683 9.60214 0 2.84554 -5.06615 9.49194 -16.8799 0 0 0 0.328827 0.105612 0 0 0 -0.0607973 0.115855 0 -0.00574861 0 -0.00544513 -0.181202 0 0 0 0 -0.276047 0 -0.0709482 0 -0.751824 0 -0.565408 -0.143659 0 -0.00158418 0 0 0.048218 -0.00128186 -0.0643439 0 0.0114466 0 0.00642572 -0.00136871 -0.0131964 -0.0299422 -0.0192551 0 -0.000200242 0 0 0 0.000623907 0 0 0.00504147 0.00362349 0.556242 -0.0759146 0 0 -0.0092578 0 -0.0163898 0 0 0.060498 0.0237688 0.103174 0.0524751 0 0 -0.0842218 -0.029555 0.00941292 -0.457924 0.155484 0 -0.40058 0.000837591 -0.0581899 0 0 0 2.49977 0 0.128668 0.22093 0 0.00737092 0.0242958 0.779022 0 0.00195293 -0.000140051 0.0345533 0.181538 0 0.265474 0.328827 0.328753 0.105612 -0.7731 -0.187851 0.265088 0.0736032 -1.40773 -0.155279 0.0682052 -0.844954 -0.0251413 -0.169487 0.0862547 -0.0707711 0.0633265 -0.889222 0.792643 -0.47119 -0.0665467 -0.015866 -0.0418722 0.0290001 0.80889 0.19264 -0.651913 -0.00311122 -5.40357 0.0299655 -0.662099 0.0764196 0.0165099 0.315226 -0.0339932 -0.0271958 0.00108028 0.00265635 -0.041006 1.13675 -0.104875 0.0293535 -1.24849 3.10129 0.00596596 0.0541175 0.20402 -0.0327692 0.389901 0.582567 -1.8604 -0.0804399 -0.352328 -0.82516 0.0512617 2.13373 -0.310507 0.331972 0.17884 0.000962249 -0.209532 -0.87296 0.0388224 1.34715 1.18288 -0.200407 -0.389159 -0.175433 0.142546 -0.687194 0.314329 -0.174386 0.324199 0.0987381 0.0216842 0.342548 2.69843 2.43809 -1.52986 2.23318 -0.4647 -1.7147 1.4994 -0.680773 0.0735566 0.39259 1.1312 -0.644455 0.248517 0.441543 -1.46404 0 +378 0 0 0 0 0 -0.0228417 0.288355 -0.152036 0.550008 0 0 0.0500033 0.93086 0 0.997661 0.0377831 0 0 0 0.220486 2.22593 0 0 0 0 -0.119848 0 0 -0.527646 5.21639 0.552818 0 -0.304443 0 0 -0.241728 0.0553082 0 0 -0.297008 1.97492 0 0 0.0508254 0.966794 0 1.23858 0.593873 -0.695001 -0.0334786 1.66122 0.603877 0 -0.371994 0.114724 0.319436 1.2103 1.1492 0.852942 0 0 0.0277345 -2.38863 0 1.29471 0.293037 0.129049 0 0 0 0 -0.146862 0.0185216 0 -1.46409 -0.992905 0 0 0 -0.976089 0 0.319068 -6.68213 0 -0.1596 -1.73775 -1.60484 0 -0.178057 -2.9002 4.34039 -18.3406 0 0 0 0.0853779 -0.000449365 0 0 0 0.0288106 -0.0190809 0 0.00542918 0 0.00292832 0.0848781 0 0 0 0 0.112908 0 0.025922 0 0.350893 0 0.17674 0.577627 0 0.0110209 0 0 0.337044 8.31539e-05 0.12036 0 0.00410905 0 -0.00138674 0.211105 0.0651639 -0.000148835 0.0423687 0 0.000170557 0 0 0 0.000180133 0 0 0.00270171 0.00223895 -0.0901083 -0.00617101 0 0 0.0362388 0 0.00738429 0 0 -0.0338968 0.0375457 0.373035 0.0574674 0 0 -0.220557 -0.038187 -0.0394493 -0.0174326 -0.0505409 0 0.318743 -0.00682958 0.299815 0 0 0 -0.951394 0 0.035665 -1.3289 0 0.0027708 -0.0830449 -0.406945 0 0.000470507 -0.0114131 0.041547 -0.775074 0 -0.0228417 0.0853779 0.288355 -0.000449365 -0.733522 -0.062008 0.0421672 -0.259873 0.206698 0.0150895 -0.015447 -0.0774988 0.00266535 -0.0202441 -0.0132883 0.000905736 -0.00817067 0.0977926 0.12538 -0.250184 0.0869806 -0.0452816 -0.094511 -0.0227343 -0.222765 0.25845 -0.16007 0.0184688 2.85393 -0.304569 -0.194074 1.0142 -0.00403518 -0.240599 0.0128161 -0.0239265 -0.00504629 -0.0365155 -0.0451576 2.09416 0.0428117 0.0293374 1.36872 -0.763919 0.00118987 -0.0284618 -0.119787 0.0475663 -0.112781 -0.741976 -0.227647 -0.866253 0.190307 -1.42692 0.0157451 0.179782 0.0451505 0.408312 0.307817 -0.110053 0.175183 -0.148344 -0.15835 0.653322 4.92487 0.0205134 -0.0839043 -0.0376582 -0.337895 0.332641 0.067344 0.0584768 -0.0290168 -0.149147 0.130487 -0.166283 0.790961 0.367874 -0.0386816 -0.0758379 0.409649 -3.96671 -0.056498 0.131727 -0.981799 1.14588 -0.124404 0.214767 -0.844715 1.21246 -2.98544 0 +379 0 0 0 0 0 0.245256 0.108231 0.328532 0.257944 0 0 0.198111 0.261692 0 -0.0337132 -0.0464708 0 0 0 -0.234998 -6.57714 0 0 0 0 -0.0671825 0 0 -0.361351 2.42219 0.0637079 0 0.05956 0 0 -0.0701834 0.0130899 0 0 -0.666936 -1.41437 0 0 -0.235457 0.421106 0 -0.225695 0.189493 0.2796 0.172208 0.346478 0.0192351 0 -0.438231 0.0423557 -0.132204 0.652376 -0.971186 -0.0667116 0 0 0.70033 4.06974 0 0.074223 -0.130742 -0.640591 0 0 0 0 0.503006 0.0644049 0 1.57329 -0.333513 0 0 0 -0.715115 0 0.430949 -1.65155 0 -0.206206 -0.104588 -2.4079 0 0.479575 -0.489499 0.532006 -4.54408 0 0 0 0.121684 0.0260315 0 0 0 -0.0369712 0.0165113 0 -0.00411862 0 -0.000942338 -0.031716 0 0 0 0 0.0198904 0 -0.0050958 0 -0.0835953 0 -0.343813 -0.239673 0 -0.00505018 0 0 -0.267452 1.13885e-05 -0.0449086 0 0.00240492 0 0.000770967 -0.117558 -0.0373628 -0.00260947 -0.0195438 0 -2.61207e-05 0 0 0 0.000122459 0 0 0.000484704 -2.51401e-05 0.138857 -0.0345682 0 0 -0.00706906 0 -0.00228186 0 0 -0.0529872 0.0127247 -0.231101 0.0245751 0 0 0.108363 0.0104319 -0.0284641 -0.364734 -0.750515 0 -0.246528 0.00678604 0.308025 0 0 0 0.469033 0 0.0280144 0.96274 0 0.00227203 0.0578345 0.247158 0 8.66455e-05 0.00871023 -0.0113325 0.549714 0 0.245256 0.121684 0.108231 0.0260315 -0.244397 -0.118263 0.197549 0.13682 0.331584 -0.0267475 0.0546604 -0.580945 -0.00512404 -0.0985139 0.0296 0.0221333 0.0329207 -0.104817 0.43804 -0.68827 -0.114957 0.0270742 -0.359356 0.0208354 0.320504 0.151671 0.186888 -0.00405325 5.39866 -0.280286 -1.32404 1.0248 0.00414128 0.265655 -0.550792 -0.0567885 -0.00266454 0.0167308 -0.0366004 1.15806 0.0474885 0.019589 2.50945 1.48291 0.00611637 -0.0188745 0.115823 -0.0710651 0.328186 0.385899 1.29027 0.369112 -0.072272 1.47209 -0.0210309 0.158181 0.393102 -0.299248 0.629218 -0.0604103 0.12289 0.811113 0.0249937 -0.454891 3.12977 0.048413 -0.468897 0.0307944 0.103886 0.275025 0.233834 0.0697677 0.0604296 0.0503147 -0.105002 -0.439584 5.39621 2.61618 -1.33056 1.05576 -0.311202 -0.53486 0.482906 -0.186313 -0.140544 0.351074 0.13334 0.0679342 -0.417517 0.707746 -1.58255 0 +380 0 1.16417 0.332912 0.16182 0.408542 -0.422139 -0.274573 1.47875 4.09854 0.1687 -3.44873 0.458521 -0.744203 -0.0481691 -0.180239 0.0586629 -0.182753 2.34904 -0.574031 0.00504501 -0.69793 -0.102149 -0.261527 0.0271021 -0.773714 0.802211 -0.317345 -0.0865096 0.371629 -0.166798 -0.263702 0.0975463 0.616282 -1.40424 0.328481 0.364521 0.104589 -0.0817753 -6.96033 1.03316 -0.710072 -0.212868 1.69016 0.259071 -1.39434 -0.774748 -0.451123 0.255653 0.759912 -0.282136 0.982509 -1.39724 -2.02264 -0.3716 0.264592 -0.289645 1.31035 0.181399 0.234999 0.810575 0.156048 -1.56069 -0.155004 0.87304 -2.51996 -0.396072 -0.196173 1.589 0.0625319 0.348199 0.653745 -0.325023 0.761988 -0.00827988 -0.156611 -0.350153 -1.46515 18.6336 9.42675 -7.82189 7.75778 -7.0127 10.4208 4.40011 -4.34495 5.80478 -7.55432 1.60908 -1.96824 1.73963 -2.28166 0.674479 0 0 0 0 0 0.16182 0.408542 0.00992717 0 0 0 0 0.00176903 0 0.00491752 0 0 -0.00159135 -0.0108395 -0.0219404 0 -0.0015164 -0.0754342 0.0396465 0 0 -0.414827 -0.000399417 0 -0.166643 -0.189371 0 0 -0.0439355 -0.140005 0 -0.494454 0 -0.0857837 0 0 -0.0083458 0 0 -1.56395 0.0350848 -0.0410297 0 0.194572 0.128665 0 0 -0.468198 0 0.0054471 -0.120705 0.0215158 0 0 0.00365756 -0.0264189 0 -0.00943897 -0.010553 -0.0471418 -1.13715 0.0722348 0.0256869 0 0.0389546 -0.133419 -0.00127089 -0.0431741 -0.296302 0 0 0 10.077 0.472034 0.491321 0.0470353 -0.104996 1.39454 0.00190216 -0.00450822 0.0556925 0.029419 0 0 0 0 0 0 -0.422139 0 -0.274573 0 0 0 0 0.0580865 2.98724 0 0 -0.889632 0 -0.102908 0 0.117364 0 0 -0.403077 0 -0.0262023 0.085076 -0.194735 -0.0269286 0 0 1.03345 0 8.51519 0 -2.22163 0.00772093 0 0.724267 -0.477459 -0.0255968 0 0.00689134 0 0 0.343413 0 1.61204 -1.26489 0 0 -0.112581 0 0 -0.24642 2.6256 0.438281 0 1.20213 0 -1.51849 0.74304 -0.660584 0.629566 0.195482 -0.030055 1.30198 -0.317612 -2.18283 -6.11994 -0.17413 0 0 0 0.466524 0.246049 0 0 0 0 -0.658295 10.0942 4.8357 -4.40466 1.55079 -1.5561 2.03738 0.495813 -0.506699 0.67927 -0.524674 0 0 0 0 0 0 +381 0 -0.236756 0.26014 -0.00282511 0.0462871 -0.292072 -0.0715095 0.313024 1.98074 -0.0344535 -0.451214 -0.0599382 -0.312161 0.00512252 -0.396482 0.0222454 0.708655 1.33483 -0.0798315 0.0628648 -0.561373 0.0194587 -0.355444 -0.00937265 0.0261706 0.258006 0.309987 -0.0277891 0.018507 0.114 -0.241706 -0.0255328 0.129592 -0.488269 -0.240763 -0.0461922 -0.012698 0.132098 -0.124027 -0.176789 -0.379294 0.0173423 -0.573283 -0.0156173 -0.505541 0.0539785 -0.200083 -0.0757325 0.218067 0.058533 0.414828 0.0259444 0.849833 0.0982696 -0.0531015 -0.134439 1.48309 -0.052507 -0.558447 -0.0251642 -0.0402628 -1.10002 1.61801 2.19596 -0.167196 -0.679779 0.125616 -0.353358 0.0572601 0.0802588 1.10414 -0.482014 0.025265 -0.622886 1.28553 0.582815 -0.330182 -0.565717 2.06701 -6.85438 -0.217013 -0.349199 0.479458 0.169114 -0.197335 0.860416 -2.83741 -0.112108 0.245969 -0.227519 0.489187 -0.46098 0 0 0 0 0 -0.00282511 0.0462871 -0.000661656 0 0 0 0 0.000416413 0 0.0407321 0 0 0.000483343 0.00775626 0.0677138 0 0.0107047 0.237862 0.249231 0 0 0.176452 0.00042834 0 0.0766872 2.53341 0 0 0.034363 0.821511 0 0.306351 0 0.0415648 0 0 0.00810645 0 0 0.990788 0.00860653 0.00705641 0 -0.00839089 0.108557 0 0 -0.0203845 0 0.0062879 0.60009 -0.0174545 0 0 0.00188503 0.00765298 0 -0.000167748 0.141837 0.000375328 0.265983 0.0886652 0.012845 0 -0.0269253 -0.138424 0.561998 -0.0972282 -0.312987 0 0 0 -5.60266 -0.12964 -1.16516 -0.0247223 0.0532533 -0.739498 0.000253544 -0.000899217 0.0101219 -0.29539 0 0 0 0 0 0 -0.292072 0 -0.0715095 0 0 0 0 0.285156 -0.489583 0 0 -0.189726 0 -0.00419192 0 -0.0164808 0 0 0.180109 0 -0.542505 0.104082 0.0338349 0.0378864 0 0 -0.0815993 0 -0.340921 0 0.0577134 -0.328604 0 1.19776 -0.485861 0.0125952 0 0.00818638 0 0 -0.068753 0 -0.164153 0.358854 0 0 0.0865676 0 0 -0.0420185 1.82174 0.38061 0 -0.580134 0 -0.984322 -0.0750137 -0.123661 -0.338922 -0.12563 0.523741 0.663023 0.0217371 -0.173115 -5.59886 0.106607 0 0 0 -0.116355 -0.0434795 0 0 0 0 0.285933 -0.242972 1.73328 -4.47089 0.661544 -0.638142 0.533941 0.083659 -0.106187 0.159382 -0.753324 0 0 0 0 0 0 +382 0 0.327854 -0.359101 -0.0132705 -0.0371744 0.0875353 -0.277088 0.500723 0.946955 -0.0326879 -0.675537 -0.817483 -0.479355 0.00411286 -0.482592 -0.103348 -0.134785 -0.179237 -0.0877956 -0.237289 1.28716 -0.0463602 0.579232 -0.00270361 -0.188381 0.460947 -0.260679 -0.0097919 0.813823 2.99294 -0.239944 -0.0107312 -0.693968 0.991993 -0.0974246 0.387432 -0.131177 -0.145526 0.902211 -1.10525 -0.361418 0.0164865 -1.09852 -0.181072 -1.17677 0.0471999 -0.660315 1.65498 -1.58461 0.405839 -0.412089 0.925924 -0.487953 -0.0165956 -0.746359 1.03653 1.07663 0.444764 0.52361 0.222029 -0.0136827 -0.0117679 -0.456272 -0.0113277 0.80168 0.444124 -0.653235 -0.168149 -0.12057 -0.0221096 0.615112 -0.0957254 -0.669458 -0.424045 -0.030615 -2.03805 -0.77611 -3.52127 0.250198 -0.944211 -1.23548 2.6735 -6.43346 0.828573 0.740862 -2.4874 2.32113 -0.0980296 1.20229 -3.20345 5.69348 -12.1025 0 0 0 0 0 -0.0132705 -0.0371744 -0.00140709 0 0 0 0 -0.000218231 0 -0.0227524 0 0 -7.72897e-05 0.000689175 -0.017115 0 -0.00323019 -0.0207647 -0.12665 0 0 -0.0841596 2.3296e-05 0 0.0675116 -0.32716 0 0 -0.00796291 -0.0910777 0 0.232756 0 -0.0120913 0 0 -0.00103111 0 0 0.453943 -0.00422499 -0.000615788 0 -0.0274763 0.00745056 0 0 -0.0302067 0 -0.000326931 -0.402173 0.00591358 0 0 -0.000438698 0.00364606 0 0.00489759 0.10578 -0.00444092 -2.36912 -0.0128041 -0.0368167 0 -0.0426305 0.0938781 -0.264353 -0.0865019 0.0283962 0 0 0 -2.82136 -0.0897702 0.294708 -0.0116874 0.0270377 -0.383921 -0.000103537 0.000302709 -0.00342871 0.108662 0 0 0 0 0 0 0.0875353 0 -0.277088 0 0 0 0 -0.468793 -1.18732 0 0 0.315704 0 0.043756 0 -0.0642453 0 0 0.191922 0 0.66567 0.0136314 0.437803 0.013566 0 0 -0.570232 0 -1.82394 0 1.06141 -0.440836 0 -0.0668232 0.911602 0.0555992 0 -0.0508698 0 0 -0.130301 0 -0.757262 0.125497 0 0 0.0079364 0 0 -0.0947043 0.269019 -0.443091 0 -0.878958 0 1.39358 -0.418261 0.461196 -0.299232 -0.0615681 0.247021 -0.823536 0.176886 0.794366 0.660889 0.0444912 0 0 0 -0.0810388 -0.080419 0 0 0 0 0.138067 -1.18771 -1.75404 2.07766 -0.754932 0.81575 -1.1862 -0.211982 0.193881 -0.22561 0.044295 0 0 0 0 0 0 +383 0 0.563238 0.451753 0.0913894 0.301953 -0.352286 -0.140437 1.2454 3.82515 0.285608 -2.77713 0.483494 -0.284906 -0.0196982 -0.390908 -0.0150882 1.27821 4.78564 -0.456951 -0.0635776 -2.20412 0.0062902 -0.356484 0.0152424 -0.36545 0.70795 0.398967 0.0693953 -0.127793 -1.29936 -0.203229 0.0811058 -0.0143922 -1.40467 0.0321579 0.194558 0.0681105 0.418575 -6.60688 1.12407 -1.2131 -0.130256 0.996933 0.180785 -1.15095 -0.818804 -0.673211 -0.508638 -0.187268 -0.541123 -0.0112364 -1.47797 -3.13124 0.165019 -0.4962 0.352705 0.977595 -0.0554436 -0.954111 0.667228 0.287097 -2.97667 4.01187 0.872695 -1.73912 -0.228671 0.887454 1.07038 0.272385 -0.00345327 0.999276 -1.40702 0.772968 -0.520634 0.0108536 -0.525702 -1.1234 18.4231 7.86073 -7.3577 6.10724 -6.23605 11.185 2.42708 -2.88939 5.08032 -5.74067 0.869084 -1.04829 1.67848 -2.07446 3.13859 0 0 0 0 0 0.0913894 0.301953 0.00439105 0 0 0 0 0.000255313 0 0.0123413 0 0 -0.000387102 0.000836818 0.00917482 0 0.00332418 0.0406546 0.0878241 0 0 -0.164801 0.000118994 0 -0.0772897 0.212985 0 0 -0.0214119 0.168014 0 -0.278109 0 0.00939439 0 0 0.00204705 0 0 -1.10373 0.00416482 -0.0148894 0 0.0752635 0.0941096 0 0 -0.315587 0 0.00720104 0.00646364 0.00197967 0 0 0.0027988 -0.00812465 0 -0.00632144 0.0253824 -0.0284166 0.722811 0.0390063 0.0240165 0 0.0201879 -0.0974451 0.337888 -0.0208206 -0.20901 0 0 0 7.36031 0.316738 0.219427 0.0405242 -0.0857539 1.03884 0.000995878 -0.00280109 0.0359755 -0.0388292 0 0 0 0 0 0 -0.352286 0 -0.140437 0 0 0 0 0.498032 0.925001 0 0 -1.15216 0 -0.134108 0 0.00346717 0 0 0.0312959 0 -0.517759 0.137627 -0.551529 0.014393 0 0 0.143205 0 8.52727 0 -2.67587 0.293807 0 1.20362 -1.16454 -0.0698541 0 0.0631194 0 0 0.0759329 0 1.96221 -0.123703 0 0 0.0094125 0 0 0.0407691 3.49941 0.448865 0 0.454843 0 -1.35091 0.188882 -0.374888 0.964963 0.218383 -0.417453 0.742508 -0.299827 -1.7248 -1.27955 -0.228036 0 0 0 0.115089 0.284196 0 0 0 0 -0.376222 12.0064 6.05004 -6.41656 1.83441 -1.84806 2.33999 0.674381 -0.672591 0.873325 -0.841297 0 0 0 0 0 0 +384 0 -0.38075 -0.182252 0.00379691 -0.0137118 -0.215169 -0.249282 0.589902 1.38431 0.118145 0.259652 0.0379768 0.131253 -0.00193004 0.720727 -0.00661318 0.549549 2.11357 0.152542 -0.0366435 1.88855 0.0478186 0.282045 0.00533246 0.102448 0.430181 -0.0330404 0.161936 0.705503 1.66513 -0.0433118 0.0266145 0.114994 0.623288 0.490809 0.320954 0.00617484 0.68815 2.13015 -0.126934 0.0986759 -0.000865959 1.54327 0.00045036 1.74823 0.105416 -0.381596 0.988463 0.0390846 0.0184103 -0.177164 0.567017 0.0958176 0.14338 0.0757183 -0.00917075 0.980351 0.303205 0.560797 -0.160774 -0.00880262 -0.190572 -2.66379 1.29486 0.838895 -0.0145549 -0.749393 0.146007 0.703621 -0.092746 0.604927 0.28846 0.131896 -0.170473 -0.543199 -1.12866 0.143949 -7.09211 -2.37556 -2.15004 -3.62582 2.30994 -5.21681 -1.05056 0.602085 -1.44294 -1.66723 -0.111889 0.125523 -1.01101 1.07197 -4.02211 0 0 0 0 0 0.00379691 -0.0137118 -0.00508202 0 0 0 0 -0.000730081 0 0.0129572 0 0 0.000678054 0.00510391 0.00561854 0 0.00179944 0.0558439 0.051869 0 0 0.218159 0.000243223 0 0.0550983 0.851225 0 0 0.0323151 0.244504 0 0.294046 0 0.0375707 0 0 0.00534473 0 0 1.18498 -0.0143904 0.0176671 0 -0.0973636 0.0121974 0 0 0.105137 0 0.00129533 0.138891 -0.0140601 0 0 0.00118435 0.0174647 0 0.000307747 0.0724454 0.0123133 -0.370458 0.0144103 -0.0132042 0 -0.0322136 0.0371932 0.222985 -0.070028 -0.0128521 0 0 0 -6.83601 -0.240014 -0.508507 -0.0314961 0.0672775 -0.909374 -3.51785e-05 0.000532827 -0.0144132 -0.0930225 0 0 0 0 0 0 -0.215169 0 -0.249282 0 0 0 0 -0.0381054 0.223991 0 0 -0.167977 0 -0.0235052 0 0.0329193 0 0 -0.208831 0 0.522753 0.0625019 0.0397908 -0.00911081 0 0 0.287579 0 -0.729086 0 0.552311 -0.516172 0 0.56674 0.511718 0.00143246 0 0.0115631 0 0 0.0238828 0 -0.324338 -0.341981 0 0 0.00117339 0 0 0.024459 0.0816193 -0.0447645 0 -0.319364 0 -0.521092 -0.0510745 0.0569592 0.0921434 -0.0438872 -0.0766131 0.376002 0.000900456 -0.511133 -7.74513 0.0356597 0 0 0 -0.0669367 0.0172975 0 0 0 0 0.119661 -3.77008 0.257979 -1.32388 -0.093462 0.148572 -0.299783 0.0811695 -0.0803181 0.112792 -0.373082 0 0 0 0 0 0 +385 0 -0.0453675 0.346948 0.0400996 0.176903 -0.106441 0.073112 0.384469 1.30512 0.331267 -1.03741 0.284776 0.572341 -0.00739998 1.07969 0.0120788 1.18764 4.12008 -0.1494 0.0204581 3.69817 -0.0242984 -0.459678 0.0069603 -0.283315 0.0892825 0.493085 -0.0852395 -0.182243 -1.07389 0.247445 0.0471272 0.147314 -0.701699 -0.145935 -0.119156 0.0413545 -0.374545 -1.0303 0.454806 2.15527 -0.0414575 0.152204 0.081055 1.17172 -0.183596 1.05841 -0.526263 0.269264 -0.201996 -0.15436 -0.568475 3.79899 0.367038 -0.0823277 0.110783 2.99788 1.34314 0.656021 0.339287 0.0969799 -0.542479 -5.4141 1.40761 -0.246812 0.276703 0.749818 0.197154 -0.55502 -0.058749 0.506123 -0.40829 0.326602 -0.0603846 -0.000346586 0.477699 0.382098 2.58592 2.03089 -2.97311 1.38981 -1.33103 1.92527 1.01599 -0.844803 1.66143 -2.07659 0.19487 -0.342658 0.791652 -1.14176 2.59397 0 0 0 0 0 0.0400996 0.176903 0.000414812 0 0 0 0 3.68259e-05 0 -0.00751367 0 0 2.50569e-05 0.000826252 -0.0067419 0 0.000133618 0.0239071 -0.0905992 0 0 -0.0764503 7.21465e-05 0 -0.0159322 0.297472 0 0 -4.61436e-05 0.0635682 0 -0.026266 0 -0.000242317 0 0 0.00136517 0 0 -0.150125 0.000658158 -0.00259268 0 0.0107016 0.060876 0 0 -0.0985425 0 0.000403993 -0.0277532 0.00998952 0 0 0.00131654 -0.000398356 0 -0.00618111 0.111895 -0.0197876 -1.31287 0.0228949 -0.00610913 0 -0.025996 -0.0218131 -0.0716192 -0.0313363 -0.0475549 0 0 0 2.43735 0.130773 0.490163 0.00781535 -0.026736 0.390133 0.000359427 -0.00105914 0.0134143 0.077978 0 0 0 0 0 0 -0.106441 0 0.073112 0 0 0 0 0.501986 1.00905 0 0 -0.474454 0 -0.0440946 0 0.0261991 0 0 0.232388 0 -0.612735 0.143155 -0.198687 0.0482329 0 0 0.271343 0 4.7744 0 0.287721 -0.0708238 0 1.13448 -0.502446 -0.0184913 0 0.0492984 0 0 0.10319 0 0.577421 0.397222 0 0 0.100076 0 0 -0.196378 3.43764 0.357724 0 1.20523 0 -0.380423 0.0416746 -0.0708869 0.412171 0.0548915 0.224957 0.702993 0.0856275 0.332245 3.89101 -0.0845044 0 0 0 0.225623 0.0872755 0 0 0 0 0.150732 2.88008 2.46193 -4.1529 0.642893 -0.650171 0.518472 0.280038 -0.25919 0.307875 -0.733596 0 0 0 0 0 0 +386 0 0 0 0 0 0.42378 0.0658383 -0.427247 -2.18886 0 0 -0.00360667 -0.840843 0 -2.21209 0.00566614 0 0 0 0.093656 -4.74042 0 0 0 0 -0.371617 0 0 0.051755 -1.42351 -0.493509 0 0.0430673 0 0 -0.115732 -0.000452676 0 0 0.221534 -1.87547 0 0 0.069768 -3.23214 0 -0.657082 0.0821479 0.440879 -0.0683808 -0.924773 -0.373388 0 0.0202708 0.0757625 0.0719034 1.23 0.0504637 0.00801834 0 0 0.57689 3.16951 0 -0.74767 -0.0482539 -0.523814 0 0 0 0 -0.188489 -0.0470642 0 3.60778 -1.90635 0 0 0 3.67271 0 -0.841971 4.15823 0 -0.234271 0.256415 3.45226 0 -0.198727 -0.00310376 -0.260453 1.80861 0 0 0 -0.00231077 0.0010212 0 0 0 -0.0138508 -0.00276171 0 -0.000888751 0 -0.000259814 0.000583759 0 0 0 0 -0.0231178 0 -0.000467743 0 -0.0037888 0 -0.158239 -0.0250431 0 0.000409378 0 0 0.0278181 -0.000379756 -0.000867237 0 -0.000294339 0 -0.000302479 0.0131619 0.00543768 -0.00560728 0.000596494 0 -1.79928e-05 0 0 0 -2.22045e-05 0 0 0.000391057 0.000326071 0.0706999 0.00277101 0 0 7.57924e-05 0 0.000655832 0 0 -0.00806852 0.00278158 -0.00433261 -0.00233598 0 0 0.0124146 0.00881008 -0.000914974 0.00908473 -0.00556186 0 -0.0305204 -0.00305662 -0.0260098 0 0 0 0.0457371 0 0.00598563 -0.0161556 0 -6.57197e-05 0.00023849 0.00290719 0 0.000368528 -0.00120852 0.0023982 -0.00769827 0 0.42378 -0.00231077 0.0658383 0.0010212 0.354033 0.0264273 0.016882 -0.894409 -0.25493 -0.00042895 0.0110583 0.0364754 -2.39817e-05 0.0023932 0.000691053 -0.00357829 0.019956 -0.00556908 0.967419 0.492108 -0.110456 -0.448153 0.01032 0.109601 0.0487376 -0.205761 -0.076655 -0.013689 5.13567 -0.013277 -0.257825 0.573169 2.76199e-05 -2.22035 -0.494922 0.00100414 -0.00199847 -0.146251 -0.00847832 -1.09331 -0.011285 -0.0325085 1.69552 2.19384 0.00289412 -0.00709475 0.157241 -0.0184209 -0.113461 -0.0567929 0.221705 0.390538 0.0306164 0.921596 -0.00175111 1.14287 -0.024593 0.0743846 -0.0159853 0.968444 1.08934 -0.158809 -0.278532 -0.0141516 1.59297 -0.154829 0.689818 -0.0197627 0.365578 0.121189 -0.00641481 -0.0453099 0.00133422 -0.0507026 0.00611633 0.0127512 0.626783 -0.0577646 7.25854 0.0205371 -0.212336 5.40936 -0.00223782 0.0357259 -0.0599322 2.99386 0.000594772 0.0841745 -0.115464 0.083323 1.41038 0 +387 0 0 0 0 0 -0.639353 -0.0542718 1.01793 3.12517 0 0 0.117598 -0.192853 0 0.195654 0.0288095 0 0 0 0.13529 -2.20487 0 0 0 0 0.341924 0 0 -0.454558 0.736069 -0.00725465 0 0.108909 0 0 0.120257 0.0178635 0 0 0.54647 -1.00885 0 0 0.101548 0.0421407 0 -0.338299 -0.49295 0.574549 -0.262227 0.176957 -0.232407 0 -0.172712 0.30492 -0.273457 4.47168 -0.233371 0.0921276 0 0 -2.04866 3.87535 0 0.518169 0.375185 -0.898722 0 0 0 0 -0.0758976 0.678518 0 2.55831 0.535503 0 0 0 -3.38913 0 -0.344441 -1.05257 0 -0.0857954 1.0995 -6.45733 0 -0.500336 1.91197 -3.72823 1.65395 0 0 0 -0.0355219 -0.00441864 0 0 0 -0.00374963 0.00427116 0 -0.000163841 0 -0.000220165 -0.0053271 0 0 0 0 -0.0213331 0 -0.0016602 0 -0.0722145 0 -0.0648109 0.00702237 0 3.77745e-05 0 0 0.0275555 -0.000654354 0.000924393 0 0.000993541 0 0.000306316 -0.0113238 0.00234202 -0.00909068 -0.000848089 0 -1.56735e-05 0 0 0 6.92249e-05 0 0 0.000157702 0.00266711 -0.0154844 0.00128454 0 0 -0.00220777 0 0.00120012 0 0 0.0115761 -0.00412684 -0.00561482 -0.0109598 0 0 -0.00534134 -0.00437613 0.0106133 0.00929117 0.0263601 0 -0.00985724 0.00113296 -0.0640493 0 0 0 0.0223045 0 0.00359421 -0.012889 0 -0.000624355 -0.000991169 0.0153324 0 0.000536786 -0.000580169 0.00236087 -0.00806054 0 -0.639353 -0.0355219 -0.0542718 -0.00441864 -0.317005 -0.0456836 -0.0364083 0.358159 -0.0621678 0.00186896 0.0331654 -0.133905 0.000106274 -0.00667637 -0.0024206 -0.00365312 0.0437524 0.0253152 0.117889 0.179204 -0.0303208 0.307361 -0.0630566 -0.0164861 0.223983 0.0027776 -0.0473557 0.00360773 6.08617 0.167447 -2.06018 1.01831 -0.000137215 1.56527 -0.338847 -0.00570459 0.00755574 0.073671 0.0408547 0.466668 -0.00219588 -0.0149752 2.51949 0.416098 0.00744869 0.0323808 0.0273813 0.0360901 -0.0463109 0.544508 -0.0747463 -0.279244 -0.0617583 1.44228 0.00452663 -0.130702 -0.00191249 0.121791 -0.107994 0.0657896 -0.321021 -0.263757 -0.416464 -0.149358 4.43992 -0.19677 0.106274 0.0347295 0.0760078 -0.145829 0.0159739 -0.154153 -0.00426019 0.21024 -0.0130746 -0.00101593 5.00836 0.0554652 -3.09381 0.0792412 -1.15301 1.67491 0.0084689 -0.427484 1.11642 -1.62872 -0.00270363 -0.161689 0.349034 -0.301808 -0.31835 0 +388 0 0 0 0 0 -0.507853 0.357037 -0.412276 0.323609 0 0 -0.0839683 2.05356 0 3.33305 0.0333829 0 0 0 0.377576 5.97674 0 0 0 0 -0.338681 0 0 -0.503918 -3.41143e-05 0.993259 0 0.0852634 0 0 -0.341883 -0.025724 0 0 0.428267 2.75195 0 0 0.025462 7.73829 0 1.54313 -0.37997 1.11398 -0.0979258 0.933536 -0.0601843 0 -0.583456 0.454903 -0.318143 -3.6021 -0.759015 -0.270833 0 0 0.626614 -1.84805 0 1.03338 0.397845 0.61473 0 0 0 0 0.192358 0.338507 0 -3.37662 1.18696 0 0 0 -0.24283 0 -1.0227 2.39381 0 0.00636353 -0.32361 2.20922 0 0.0161099 0.121586 -0.579027 1.70999 0 0 0 -0.314413 -0.0179613 0 0 0 -0.000261571 0.0797669 0 0.000380121 0 0.00176325 -0.00831301 0 0 0 0 -0.0221699 0 -0.00221034 0 -0.0863912 0 -0.0791108 0.17609 0 -0.00154569 0 0 -0.17514 0.00228631 0.00849033 0 0.00448355 0 0.00558549 0.0365986 -0.0198935 0.0326292 0.000955789 0 0.000123359 0 0 0 0.000316641 0 0 -4.65772e-05 0.00397601 0.00865452 -0.0161101 0 0 -0.00642854 0 -0.0135528 0 0 0.0225176 0.000861817 0.0181107 0.00732669 0 0 -0.0422611 -0.026728 -0.0304503 -0.0231219 -0.181175 0 0.0293448 0.0131145 0.040225 0 0 0 0.14578 0 -0.0175705 0.10254 0 0.0015391 -0.00475278 -0.00120445 0 -0.00185277 0.008922 -0.016406 0.0476959 0 -0.507853 -0.314413 0.357037 -0.0179613 0.1771 0.0328587 -0.160999 0.414581 -0.380316 0.00839207 0.0768755 -0.324873 0.000392878 -0.0120377 -0.0084956 -0.012541 0.0517578 0.171495 1.52902 0.141289 0.371495 -0.0395102 -0.32381 0.226804 0.548994 0.0480427 -0.361845 0.00669798 6.92624 0.0472722 0.339163 1.63019 -0.000428079 0.580838 0.776772 -0.0177348 -0.00244746 -0.0275073 0.00585175 0.210288 -0.00373776 0.0129235 3.47376 2.99431 0.00682824 0.000614927 0.469545 0.0262408 0.35143 -0.292835 0.739722 -0.593027 -0.110146 -0.940746 0.0199165 0.343079 -0.0106957 0.283272 0.0327731 -0.0824507 -0.252289 0.16975 -0.0228133 -0.0356599 -5.48196 0.151133 -0.923664 0.241433 -0.176574 0.076966 0.036115 -0.0221157 -0.0247089 0.198053 -0.0721297 0.0133705 -0.824517 0.412553 -3.26741 -0.226567 -0.470256 -0.242282 0.0262799 0.000269113 -0.365149 0.132208 -0.0183155 0.023237 -0.218446 0.00267191 0.100598 0 +389 0 1.03088 0.366746 -5.47668e-05 -0.0126231 0.372427 0.216298 -0.816297 -1.99783 0.000281659 0.0316346 -0.0193566 0.813813 -1.4952e-08 0.240896 0.000308618 1.16287 2.85986 -0.0361816 0.000257863 -0.340499 -0.00616851 -0.426488 9.94914e-08 0.00167803 -0.462129 0.603454 -0.00381362 -0.624119 -1.5512 0.33069 6.26532e-06 0.0271337 -0.921865 -0.00830223 -0.270532 -0.000235383 -0.00961131 -4.19772 -0.031958 0.316591 1.03286e-06 0.05378 -0.000411876 1.60815 0.000363094 0.636628 -1.06213 0.0260038 0.000465847 -0.542869 0.0165201 1.1761 -0.000449564 0.000471694 0.0153088 1.32777 0.15466 -0.00771936 -0.0147659 -9.93511e-07 0.802049 -0.756408 -0.198558 -0.0905092 -0.00663124 0.427709 -0.0105167 0.0319776 -8.02333e-06 -0.334551 0.204118 0.0376862 0.0342715 -0.481187 0.576125 0.0274769 14.3825 -0.597178 7.81868 -0.00986213 -0.201255 7.60256 -0.0983065 0.136962 -0.242792 5.54858 -3.63593e-07 8.88073e-06 0.000159268 0.0847597 5.27526 0 0 0 0 0 -5.47668e-05 -0.0126231 2.4304e-05 0 0 0 0 -6.91799e-07 0 0.000706915 0 0 -0.000127185 -2.27798e-05 4.54842e-05 0 7.02504e-06 0.000163379 0.00400861 0 0 -0.00989626 -1.46998e-06 0 -4.26813e-05 0.0190629 0 0 -0.00150063 0.00852917 0 -0.00445234 0 -6.03094e-05 0 0 -1.27957e-05 0 0 -0.000206548 4.13928e-07 -0.00199771 0 0.00142994 0.00201116 0 0 0.00574432 0 0.000117378 0.0340885 0.000701999 0 0 0.000193188 4.52885e-05 0 -0.00102843 -0.010154 0.000205811 -0.0556647 0.00386103 0.000508145 0 0.000475698 0.000702982 -0.0266586 0.000134354 0.00806212 0 0 0 0.150641 0.015108 -0.000799411 -0.000928532 0.00281884 -0.000703686 0.000129714 -8.41306e-05 0.000220428 -0.000460788 0 0 0 0 0 0 0.372427 0 0.216298 0 0 0 0 -0.0769858 0.624833 0 0 0.239884 0 0.0125439 0 0.0132846 0 0 -0.979579 0 -0.94131 -0.108168 0.119434 -0.111144 0 0 0.234699 0 -1.70632 0 -3.33556 -0.476793 0 -0.642609 -1.20855 0.0036622 0 -0.0175966 0 0 0.0532114 0 -1.49402 -1.12633 0 0 -0.131115 0 0 -0.376835 1.43103 0.200745 0 -0.611367 0 0.383947 0.0639895 -0.0713777 -0.326214 0.0846741 0.855074 0.0211205 0.0224639 0.0511626 0.891542 0.0820912 0 0 0 0.0824584 -0.0808828 0 0 0 0 -0.0442313 20.8547 -1.27068 6.59142 0.26671 -0.361312 1.9176 -0.0355336 0.0263981 -0.0916645 0.465838 0 0 0 0 0 0 +390 0 -1.15928 -0.398829 -0.000400097 -0.0205301 -0.303412 -0.161994 -0.229411 -0.120258 -0.00149231 0.399485 0.0176459 -0.182139 2.37261e-07 0.0908012 -0.000182284 -0.981401 -3.56976 0.0537508 -2.51475e-05 -0.37941 0.00981824 0.256932 -2.90406e-07 0.0644998 0.119347 -0.283677 0.0160197 0.235342 -0.15045 0.0130632 -2.15373e-05 -0.0102872 0.833342 0.0968693 0.033661 0.00030028 0.1504 3.46699 0.0345943 -0.423235 1.82083e-05 0.750172 0.000624499 -0.528785 0.00125875 -0.339923 0.203232 -0.000897092 -0.000843073 1.61555 0.238682 8.45324 2.28776e-05 4.31969e-05 -0.0168312 1.03359 0.0823795 0.0167088 -0.180742 -1.86602e-05 0.444727 0.287238 0.0404889 -0.143493 -0.609413 -0.121265 0.38038 0.339569 1.67707e-05 -0.380479 0.264754 -0.0203875 -0.193524 0.496988 -0.161725 -0.0811613 -9.16219 -0.785573 -3.49232 -0.197963 0.15294 -4.44204 -0.434943 0.602003 -1.09466 0.890332 -1.26048e-06 -4.20049e-05 -0.00206503 -0.0558731 0.511643 0 0 0 0 0 -0.000400097 -0.0205301 0.000420339 0 0 0 0 7.43646e-06 0 -0.000223728 0 0 7.84496e-05 2.3617e-05 -6.81324e-05 0 -5.70599e-06 -2.38573e-05 -0.00338934 0 0 -0.015295 1.59362e-06 0 -0.000194682 0.00844121 0 0 -0.00105579 -0.00202733 0 -0.00485122 0 -0.000258614 0 0 -1.74562e-05 0 0 -0.029668 0.000103522 0.00123552 0 0.00574986 -0.00340928 0 0 -0.00702958 0 0.000905472 -0.00952596 -0.00122883 0 0 -0.000184774 -0.000698927 0 0.0021147 0.00219326 -9.42818e-05 0.0157117 -0.00238734 -0.00149032 0 0.00102565 0.000908357 0.008835 0.00192685 -0.00129122 0 0 0 -0.0354065 -0.0114457 0.00315763 0.00304373 -0.00447911 0.00406874 -9.51096e-05 6.41182e-05 -0.000130354 0.000407359 0 0 0 0 0 0 -0.303412 0 -0.161994 0 0 0 0 0.0432622 0.490054 0 0 0.221419 0 0.0350844 0 0.0130373 0 0 -0.102762 0 0.47613 -0.00880227 0.0278148 0.00262971 0 0 0.0711207 0 -7.91078 0 4.08505 -0.902744 0 0.300127 1.0255 0.0083645 0 -0.00259116 0 0 0.0719706 0 -2.51565 -1.00632 0 0 -0.0902857 0 0 -0.147945 0.402926 0.272569 0 0.533295 0 -0.372307 0.127272 -0.140386 -0.624008 -0.105541 0.448515 0.583601 0.128261 -0.239191 0.380212 0.187294 0 0 0 0.0974872 -0.138 0 0 0 0 -0.126012 -21.3569 -2.67969 -0.746717 -0.889296 0.641248 -1.5957 -0.172052 0.113217 -0.114423 -0.107862 0 0 0 0 0 0 +391 0 -1.04144 0.0588943 -0.00130095 -0.0954568 -0.0927468 -0.210362 0.921716 2.3055 -0.00414757 -0.536995 0.0364294 -0.369082 6.74283e-07 -0.562341 -6.25509e-05 1.57559 5.21357 -0.122589 0.00062132 -0.293329 -0.0213836 -0.0228722 -6.58414e-07 -0.151867 0.601312 0.415396 -0.00732033 0.341381 0.108625 -0.257874 -5.26746e-05 0.00777075 0.218821 0.00211979 0.266367 0.000609071 0.0219652 2.10318 0.0738133 -0.246749 5.83188e-05 0.304686 0.00129279 -1.45516 0.00491579 -0.308741 0.412616 0.0604797 -0.00207908 0.785898 -0.270055 -6.37236 -0.00120951 0.00135285 -0.000708944 -0.614067 -0.0230308 0.0172987 0.205945 -6.29001e-05 0.314489 -0.686281 2.31137 1.09956 0.0169038 -0.283201 0.619006 0.0667652 3.74984e-05 0.14472 0.0872333 -0.00795712 -0.0383412 0.272624 -0.159568 -0.19379 -6.66954 1.13368 -5.6233 1.06105 -1.26956 -0.742458 0.806579 -0.956182 1.2372 -3.61617 -4.92255e-06 -0.000133355 -0.0084131 -0.127641 -0.369409 0 0 0 0 0 -0.00130095 -0.0954568 0.00136777 0 0 0 0 1.89067e-05 0 -0.0012075 0 0 0.000293339 5.89529e-05 -0.000164846 0 -1.46959e-05 0.000211501 -0.011639 0 0 -0.044682 4.306e-06 0 -0.000718052 0.0670073 0 0 -0.00328362 0.010935 0 -0.0256497 0 -0.000650254 0 0 -4.56208e-05 0 0 -0.108758 0.000282327 0.00392846 0 0.0207967 -0.00166865 0 0 -0.0265522 0 0.00245499 0.0352085 -0.00124763 0 0 -0.000405403 -0.00254036 0 0.00489559 -0.00659132 0.000231366 -0.114867 0.00140856 -0.00505874 0 0.00362763 0.00226771 -0.0275509 -0.000677327 0.00938483 0 0 0 0.39921 0.00505566 0.0328879 0.00870623 -0.00733075 0.0120983 -0.000346179 0.000503934 -0.000538549 0.00151309 0 0 0 0 0 0 -0.0927468 0 -0.210362 0 0 0 0 0.0208906 0.777007 0 0 0.195264 0 -0.00342013 0 0.014222 0 0 -0.715323 0 -0.396098 0.0813286 0.00727483 -0.0802375 0 0 0.277966 0 -2.40511 0 1.01938 -0.377053 0 0.402126 -0.657419 -0.00615676 0 0.017134 0 0 0.0586144 0 -0.788911 -1.83653 0 0 -0.209071 0 0 -0.834169 0.278153 -0.101761 0 -1.10364 0 -0.903375 0.244685 -0.0967762 0.0754676 -0.108367 0.62228 0.691586 0.0838483 0.44108 1.96775 0.155095 0 0 0 0.267562 -0.0260579 0 0 0 0 -0.0814612 -18.5886 -1.52901 -3.02868 -0.586681 0.516667 -1.49634 0.0559272 -0.0525975 -0.0375907 -0.288037 0 0 0 0 0 0 +392 0 0.435763 -0.194955 -0.00012328 0.00768963 -0.107424 -0.136581 0.698094 -0.0110405 -0.0013247 0.341425 0.0270961 -0.605889 1.72613e-07 0.126752 -0.000119889 -1.43968 -2.95063 0.0904482 0.000133096 1.09721 0.0136157 0.261799 -2.38551e-07 0.0993508 0.0950617 -0.719296 0.00798535 0.597012 1.30451 -0.219896 -1.79806e-05 -0.000305693 -0.240737 0.0304892 0.28704 0.000320162 0.09737 -3.54254 0.0365838 0.0151173 1.20177e-05 0.255295 0.000484682 -0.617131 0.000793207 -0.390995 0.852877 0.0231994 -0.000768397 1.59245 0.190498 2.27379 -0.000211954 -0.000511076 -0.00852543 1.89699 -0.0408436 -0.00818287 -0.149063 -1.74888e-05 -2.69093 -0.257144 0.309331 1.51217 -0.0950473 -1.19207 -0.462134 0.0935403 2.18492e-05 -0.500342 0.0487683 -0.0272093 -0.105601 0.406054 -0.00540843 -0.331159 14.8825 -1.18588 4.74487 0.440013 -1.13623 2.70223 -0.14476 0.0686466 -0.483262 -0.140308 -1.02571e-06 -3.99622e-05 -0.00139571 -0.0522924 -1.81652 0 0 0 0 0 -0.00012328 0.00768963 0.00015538 0 0 0 0 3.27956e-06 0 0.000831048 0 0 1.63548e-05 7.85103e-06 1.30499e-06 0 4.42449e-07 3.23039e-05 0.00602351 0 0 -0.00676777 5.51079e-07 0 -0.000135206 0.049719 0 0 -0.00153438 0.00688283 0 -0.00694313 0 -9.54722e-05 0 0 -8.28095e-06 0 0 -0.0186223 4.6753e-05 0.000232128 0 0.00221844 -0.000913879 0 0 -0.00782133 0 0.000340778 -0.0132698 -0.000373703 0 0 -4.23126e-05 -0.000263095 0 0.000673 -0.000874544 3.80343e-06 -0.0375021 -0.000585994 0.00215 0 0.000332147 -0.000313304 -0.00489205 0.000615318 0.00218423 0 0 0 0.0306499 -0.00146477 -0.00327789 0.00116061 -0.00134738 0.00377781 -2.25696e-05 2.54118e-05 -2.77173e-05 -0.00284493 0 0 0 0 0 0 -0.107424 0 -0.136581 0 0 0 0 -0.183859 -0.538936 0 0 -0.311403 0 -0.025905 0 -0.0119814 0 0 0.517313 0 0.434593 -0.0851843 -0.115526 0.0363967 0 0 -0.230973 0 1.00095 0 -4.4497 0.11641 0 -0.480463 -0.714818 -0.00500514 0 -0.0299802 0 0 -0.0321998 0 0.77258 0.798653 0 0 0.0536137 0 0 0.525419 2.82938 0.326653 0 -0.345692 0 1.17339 -0.0962945 0.0402637 -0.273392 0.0659227 0.426448 -0.165226 -0.0643948 0.485973 -0.668006 -0.0869426 0 0 0 -0.148584 0.0283136 0 0 0 0 0.075268 35.6522 1.09883 7.37825 0.456481 -0.441518 2.73775 0.125928 -0.101499 0.102757 0.329644 0 0 0 0 0 0 +393 0 -1.00405 -0.281106 -0.000564715 -0.0300412 -0.197126 -0.0453378 -0.836388 -0.916037 -0.00194087 0.330202 0.00359255 -0.153758 4.53953e-07 -1.61774 5.23702e-05 -0.502335 -1.82327 0.0292255 0.000555989 1.59208 0.00202816 0.0368287 -5.81218e-07 0.0179658 -0.169656 -0.0781386 0.00414384 -0.0428382 -0.688971 -0.18265 -3.5006e-05 0.00247478 0.515297 0.0412648 -0.190015 0.000183327 0.0541715 3.56099 0.011159 0.732273 2.77631e-05 0.406307 0.000417683 -2.02377 0.00156209 0.351983 -0.221959 0.0228748 -0.000605618 -0.838226 0.203501 -0.976489 -0.000474223 0.000729136 0.00262809 -1.9959 0.22383 0.0332757 -0.0757262 -2.73802e-05 0.277945 -3.00675 -1.93526 -1.93094 -0.434184 -0.15352 0.231239 0.230035 2.85592e-05 -0.120624 0.240289 -0.000504841 -0.0897395 -0.748289 -0.29155 0.0815389 -9.2909 -0.387028 -2.52419 0.0324153 0.150884 -4.24938 -0.247436 0.488483 -0.913145 1.23648 -2.01997e-06 -3.9332e-05 -0.000642136 0.00639601 0.959389 0 0 0 0 0 -0.000564715 -0.0300412 0.000407683 0 0 0 0 9.4192e-06 0 -0.000807344 0 0 5.24708e-06 1.77025e-05 -7.60075e-05 0 -1.77843e-05 -0.000246511 -0.0040291 0 0 -0.00430963 1.2428e-06 0 -0.000258463 -0.00793919 0 0 0.00109713 -0.00886826 0 -0.00656327 0 -5.38736e-05 0 0 2.03797e-05 0 0 -0.0528971 0.000134334 7.2564e-05 0 0.00583851 -0.00411663 0 0 -0.0079132 0 0.00101723 -0.00300555 -0.00120534 0 0 -0.000112141 -0.000612655 0 0.00250634 -0.00528079 0.000137679 0.0199318 -0.00238511 -0.0036094 0 0.00303728 0.00175298 0.000527344 0.00241212 0.000681545 0 0 0 0.0807495 -0.0051873 0.0104318 0.00462636 -0.0053935 0.00589391 -2.97856e-05 2.78894e-05 -3.40138e-07 0.00120913 0 0 0 0 0 0 -0.197126 0 -0.0453378 0 0 0 0 0.0850888 0.427152 0 0 0.299572 0 0.035625 0 0.0133871 0 0 -0.580136 0 0.130958 -0.00833405 0.0906287 -0.101157 0 0 0.141377 0 -2.97064 0 5.71367 -0.366113 0 0.308023 1.31999 0.00841374 0 -0.00406713 0 0 0.0548238 0 -1.07475 -1.18161 0 0 -0.200347 0 0 -0.367764 -2.69229 0.238088 0 -1.22295 0 -0.879087 0.128634 -0.172802 -0.549139 -0.0726638 0.404177 0.289057 0.0771886 0.0940755 -3.93124 0.168271 0 0 0 0.113337 -0.103081 0 0 0 0 -0.084552 -26.3733 -2.67774 -1.08037 -0.925635 0.760247 -2.35005 -0.183795 0.136342 -0.156638 -0.0421412 0 0 0 0 0 0 +394 0 -1.01838 -0.143099 -0.00150383 -0.0831842 -0.185889 -0.20231 -0.0191326 0.480255 -0.00694655 -0.277569 0.0413815 -0.639561 1.28073e-06 -1.66119 8.75392e-07 -1.19754 -4.99669 -0.0447321 0.00158312 -3.20992 -0.00652972 -0.0643242 -1.63518e-06 -0.0958898 0.328643 -0.274379 0.00277024 0.309344 -0.981453 -0.363896 -0.000108151 0.00782404 0.0567406 0.0838992 0.136766 0.000730129 0.0613068 1.33538 0.0715874 -1.4679 8.67229e-05 0.528586 0.00138207 -3.56732 0.00570475 -0.7352 0.00880269 0.102591 -0.00252627 -1.66943 -0.030614 3.28908 -0.00153359 0.00155107 -0.000479603 1.00049 -0.111515 0.0545401 0.083413 -0.000101985 0.12339 1.40279 -0.95237 -1.59429 -0.0743177 -0.256252 0.558183 0.101425 0.000105874 0.239475 0.0498572 -0.0217903 -0.170743 1.76826 -0.716484 -0.482729 -6.34402 0.909889 -2.28769 0.778435 -0.211046 -0.908477 0.650492 -0.64908 0.615094 -1.01055 -7.37694e-06 -0.000163577 -0.00333735 -0.0296636 1.36667 0 0 0 0 0 -0.00150383 -0.0831842 0.00156581 0 0 0 0 2.49999e-05 0 -0.00382757 0 0 0.000492652 0.000108509 -0.000262217 0 -5.76947e-05 -0.000498044 -0.01722 0 0 0.00322788 7.60909e-06 0 -0.000700963 0.074453 0 0 0.00349733 -0.00655173 0 -0.0146591 0 5.15452e-05 0 0 7.43331e-05 0 0 -0.119497 0.000355843 0.00704093 0 0.0221819 -0.00402318 0 0 -0.0374526 0 0.00236124 -0.00958113 -0.00209662 0 0 -0.000520343 -0.00308922 0 0.00731158 -0.00220911 -0.000744024 -0.0662815 -0.00427297 -0.00645854 0 0.00697385 0.000780381 -0.00654601 -0.00187991 8.84073e-05 0 0 0 0.206694 -0.0190356 0.0352827 0.0117167 -0.0131368 0.0145708 -0.000512781 0.000620038 -0.000903639 0.00170782 0 0 0 0 0 0 -0.185889 0 -0.20231 0 0 0 0 0.148198 0.524114 0 0 0.156561 0 -0.00481871 0 0.00908092 0 0 -0.766552 0 -0.108996 0.0982314 0.0483378 -0.0725233 0 0 0.231952 0 -8.2909 0 2.92113 -1.09727 0 0.679752 0.286899 -0.000981147 0 0.0163505 0 0 0.0258287 0 -2.88451 -1.77576 0 0 -0.169618 0 0 -0.486078 -1.34611 -0.172566 0 0.720827 0 -1.32936 0.160814 -0.0721712 0.367373 -0.229106 -0.0634592 0.520599 0.117472 -0.147835 5.49432 0.158304 0 0 0 0.193475 -0.0200997 0 0 0 0 -0.0717347 -23.6791 -0.771564 -4.82104 -0.628017 0.51852 -1.71666 0.0557702 -0.0600169 -0.0405442 -0.333515 0 0 0 0 0 0 +395 0 0 0 0 0 -0.206969 0.138937 -0.502735 -0.96387 0 0 0.190686 0.973854 0 1.22732 0.035152 0 0 0 0.109323 3.64768 0 0 0 0 -0.239459 0 0 -0.278306 -3.82105 0.336074 0 0.241847 0 0 -0.0879463 0.0127807 0 0 0.817269 0.256681 0 0 0.15628 4.77613 0 -0.0666899 -1.10358 0.414551 -0.239789 0.99416 -0.340594 0 -0.149531 0.230963 -0.34508 -0.151509 -0.147591 -0.128798 0 0 -0.164433 2.93725 0 -0.54497 -0.288299 -0.162632 0 0 0 0 0.256452 0.354416 0 -0.0956857 1.4465 0 0 0 1.04452 0 -1.29509 4.47858 0 -0.337738 -1.04067 5.31546 0 -0.41962 -0.753433 0.0662634 6.85696 0 0 0 -0.209097 -0.020967 0 0 0 0.0577037 0.00514182 0 0.00721379 0 4.5702e-05 -0.00946209 0 0 0 0 -0.08845 0 -0.00910756 0 -0.0813314 0 0.437194 0.326393 0 0.00348991 0 0 0.260547 0.000261728 0.0320971 0 7.90896e-05 0 0.000198369 0.0607033 0.0307974 0.00406784 0.00605969 0 2.89394e-06 0 0 0 3.35668e-06 0 0 -0.000397272 -0.000318108 0.0441112 0.00136026 0 0 9.11161e-05 0 -0.000853807 0 0 1.97167e-05 0.00126217 0.191154 0.00224893 0 0 -0.0248713 0.0618904 0.00187871 0.20344 0.228399 0 -0.128055 0.000198261 0.17542 0 0 0 0.0738957 0 -0.00401141 -0.247648 0 0.000205712 -0.000503671 0.00121434 0 -0.000248114 0.000210154 -0.000800353 -0.216558 0 -0.206969 -0.209097 0.138937 -0.020967 0.503763 0.135864 -0.146173 0.0985813 -0.384482 0.0101163 0.00714261 -0.188398 0.000727123 -0.0230455 -0.0121883 -0.00306476 0.000275877 0.131935 -0.262531 0.82422 0.114321 -0.0180553 -0.124809 -0.000731524 0.0201345 -0.122621 0.0151456 -0.00308796 0.241781 0.0969145 -0.443921 0.680764 -0.00092047 -0.389496 0.0740027 -0.0125023 0.000469252 0.033289 0.0165361 -0.994354 -0.0381286 -0.011012 1.04026 0.731515 0.000359872 0.00668236 0.159848 0.0569386 -0.0535241 -0.951504 -2.32351 -0.192849 -0.00351447 -4.64502 0.0199572 -0.702524 -0.0792785 -0.13045 0.22636 -0.380993 -1.63547 -0.00473846 0.0880084 0.0254772 -12.4508 0.0793314 -0.00388385 0.0858503 0.101133 -0.146678 0.0490062 0.0260955 -0.0207039 0.0335031 -0.110664 0.0628377 3.95847 0.748009 0.26607 -0.564695 -0.0928531 2.4863 0.0373242 -0.0682229 -0.454532 1.46299 -0.013992 -0.0205516 -0.119125 -0.0678504 1.29465 0 +396 0 0 0 0 0 -0.102809 -0.178262 1.11301 2.6775 0 0 -0.125795 -0.663817 0 -1.99147 0.00482634 0 0 0 -0.00366031 -4.13782 0 0 0 0 0.542363 0 0 0.347348 5.97667 -0.444224 0 0.0170485 0 0 0.205816 -0.00461531 0 0 -0.367765 -1.07223 0 0 -0.00619684 -4.16025 0 -0.414405 1.81309 -0.133844 0.0187306 0.677573 0.209665 0 -0.0427482 -0.140423 0.394616 -1.79324 -0.252459 -0.0500321 0 0 1.31058 0.265076 0 1.216 -0.206152 0.470514 0 0 0 0 0.204831 0.177559 0 0.867552 -1.55371 0 0 0 -3.94574 0 0.560626 -8.69637 0 0.0962347 -0.586537 -5.22433 0 0.12233 -1.10351 2.75284 -15.7673 0 0 0 0.0235389 0.00177376 0 0 0 -0.0100551 -0.00153992 0 -0.00100186 0 -7.62842e-07 0.00367411 0 0 0 0 0.0134219 0 0.00101631 0 0.0589449 0 -0.10317 -0.117807 0 4.39336e-05 0 0 0.0121782 -1.97808e-05 -0.0076444 0 -1.53708e-05 0 -9.59066e-05 -0.0121751 0.00114027 -0.000334159 -0.000812032 0 -3.45715e-08 0 0 0 -9.1906e-07 0 0 2.53536e-05 -0.000116392 0.0201446 0.000422988 0 0 0.000115756 0 0.000190997 0 0 -3.31164e-05 -4.97975e-05 -0.0943459 -0.000130415 0 0 -0.00876596 -0.0267689 -0.000238547 -0.0401737 -0.0714869 0 0.0161005 -2.84494e-05 -0.0795019 0 0 0 -0.0489261 0 0.00101041 -0.00853148 0 8.33496e-05 0.000379663 -0.0268263 0 6.14811e-06 -7.39987e-06 0.000116541 -0.0114045 0 -0.102809 0.0235389 -0.178262 0.00177376 -0.310145 -0.156491 0.0123466 -0.332943 0.418933 -0.000773847 -0.0325729 0.236666 -5.87127e-05 0.0148568 0.00101056 0.0161349 -0.0232022 -0.00932445 0.394567 0.28146 -0.483588 0.228799 0.176768 0.0324381 -0.23007 0.379929 0.272563 0.0108551 3.08218 -0.187081 -1.59537 0.243882 7.59627e-05 0.296346 -0.946818 0.010641 -0.00258919 0.00301936 -0.0263611 1.94627 0.0256683 0.0682269 1.1917 1.16208 -0.00339293 -0.017052 0.204159 0.0662053 -0.167405 0.494577 2.9749 1.51044 0.0284389 3.02194 -0.0016254 1.5781 0.046371 -0.375301 0.223572 -0.0916117 1.37485 -0.246849 0.1249 0.351066 12.3775 0.163292 0.427511 -0.0731699 -0.259227 0.0337798 -0.0292386 0.0786462 0.00148857 -0.160771 0.103861 -0.0413267 14.2261 -1.38571 2.35947 0.12617 0.654559 -6.54984 -0.0144814 0.223557 -0.618035 -1.44059 0.000988883 0.0940454 -0.322462 0.668691 -2.86103 0 +397 0 0 0 0 0 -0.389912 -0.555887 0.574155 2.36299 0 0 -0.289972 -1.70821 0 -3.35029 -0.0127614 0 0 0 0.112484 -6.87111 0 0 0 0 0.516601 0 0 0.805633 4.95195 -0.861207 0 0.0175532 0 0 0.348999 -0.0378089 0 0 -0.846174 -2.55868 0 0 -0.234414 -6.9519 0 -1.24703 1.56647 0.665653 0.31254 -1.36167 0.0590486 0 -0.150549 -0.106157 0.237775 4.62277 -0.102403 -0.364743 0 0 0.554175 4.87928 0 0.957958 0.646136 0.433125 0 0 0 0 -0.00586437 -0.583081 0 5.12668 -0.784562 0 0 0 -3.55488 0 0.666793 -6.08201 0 0.434854 -1.43327 -2.3147 0 0.873054 -2.50985 5.14313 -16.4262 0 0 0 -0.0322727 0.00455319 0 0 0 -0.0198791 0.0205666 0 -0.00181603 0 -1.80868e-05 0.0029076 0 0 0 0 0.00379149 0 0.00175386 0 0.0296813 0 -0.195381 0.10679 0 -0.00044953 0 0 -0.0172241 -0.000222366 0.00168017 0 0.000259234 0 0.00113917 0.0333324 -0.000109214 -0.00245641 0.00150932 0 -1.89516e-06 0 0 0 1.40882e-05 0 0 0.00118767 0.000609755 0.0191506 -0.00336839 0 0 -0.000336939 0 -0.00295449 0 0 0.00209118 -0.00171852 -0.081727 -0.000601698 0 0 -0.00803298 -0.0240762 0.00448635 -0.0248338 -0.0969364 0 -0.000801563 -0.00183973 -0.0478395 0 0 0 -0.0393776 0 0.000184189 0.0124084 0 -0.00068264 4.99299e-05 -0.00696113 0 0.000451274 -0.00057513 0.000839242 0.0224615 0 -0.389912 -0.0322727 -0.555887 0.00455319 -0.377425 -0.128632 0.0494678 0.211547 -0.0575194 -0.00290361 0.0627307 0.0910335 -0.000197016 0.00102346 0.0037132 -0.009996 0.0408001 -0.0389589 -1.15543 -2.09716 -0.308081 0.27975 0.0502259 -0.157524 0.52027 0.287137 -0.18542 -0.0363429 -6.07726 -0.230572 -1.6264 -1.97728 0.000257545 1.29925 -0.717833 0.000652292 -0.0132871 0.0984963 -0.0891604 1.62357 -0.00191676 0.0445994 -4.22162 -2.30188 0.00337439 -0.04728 -0.345905 -0.276378 0.19052 1.2949 5.20248 0.556819 -0.143222 4.55663 -0.00793624 4.00264 0.00472428 0.40763 -0.409092 0.431185 0.3266 -0.547085 0.0086532 -0.155555 21.8215 -0.131694 -0.298455 -0.101313 -0.282121 -0.370728 0.00376137 0.0139169 0.00715006 0.0886324 0.20757 0.00857172 14.5027 -0.742832 -2.83935 0.259941 0.22485 -3.67057 -0.0128986 0.322965 -0.746681 -1.04008 0.00413169 0.320072 -0.793582 1.04687 -2.47773 0 +398 0 -0.409091 0.49951 -0.0265395 -0.250865 0.326582 0.23311 0.185582 -0.530555 -0.125737 0.606038 -0.147242 0.738132 0.00104024 0.189845 0.00558225 4.00916 13.3403 0.0485994 0.0141173 1.07198 -0.00385952 -0.328618 -0.00115176 0.0786258 -0.180055 1.2399 0.0229462 -0.229152 0.638769 0.166694 -0.0125187 -0.0196419 -0.500297 0.0278959 -0.0613897 -0.0129023 0.104844 -0.469679 -0.367751 0.913703 0.0128273 0.113738 -0.0351155 1.7729 0.150595 0.75047 0.0615642 -0.00279337 0.065282 0.0187918 0.11132 -8.10712 -0.0278313 -0.00698505 -0.0134095 -0.714436 0.0941808 -0.015375 -0.0626749 -0.0186633 -0.893777 -0.439352 -0.0108704 0.849487 -0.357137 0.457533 -0.237824 0.281723 0.00798588 -0.211414 -0.264578 -0.165467 -0.211973 1.10568 0.283322 -0.106539 0.664158 -2.57218 2.84027 -1.06638 0.785045 -0.244771 -0.258142 0.0218447 -0.248106 -0.0732743 -0.0234055 0.0693416 -0.203041 0.54751 -1.30135 0 0 0 0 0 -0.0265395 -0.250865 0.000887263 0 0 0 0 5.21642e-05 0 0.023469 0 0 0.000547564 0.000197889 0.0178699 0 0.00261524 0.0244172 0.158369 0 0 0.167565 1.09243e-05 0 -0.0219613 0.838902 0 0 0.0259767 0.150798 0 -0.102101 0 0.0219854 0 0 0.00324904 0 0 -0.066394 0.00105136 0.00904396 0 0.0187372 -0.0024894 0 0 -0.1299 0 -0.000292136 -0.13827 0.000375548 0 0 -0.000677016 -0.00275091 0 0.000541008 0.043003 0.00259346 0.38708 0.00194637 0.0330712 0 0.00172648 -0.0453257 0.0877927 0.0119654 0.141945 0 0 0 -0.0221421 -0.022763 -0.152753 -0.00147973 -7.67695e-05 0.0352676 -0.000520808 0.000542585 -0.00208314 -0.0641473 0 0 0 0 0 0 0.326582 0 0.23311 0 0 0 0 -0.537918 -0.163719 0 0 0.661965 0 0.0630593 0 -0.00289978 0 0 0.0981057 0 -1.18003 -0.169539 0.159949 0.00707869 0 0 -0.121553 0 0.994662 0 -2.60959 0.0934409 0 -1.3156 -1.85372 0.0140089 0 -0.0713357 0 0 -0.00120638 0 0.0171888 0.336177 0 0 0.0119451 0 0 0.147847 1.38281 0.467273 0 1.22375 0 1.00936 0.253681 -0.237342 -0.011202 0.0218155 -0.386729 -0.271674 0.0791939 0.41763 10.0198 -0.074878 0 0 0 -0.0179644 -0.0328035 0 0 0 0 0.032233 19.5768 -4.97924 11.0672 -0.796004 0.409125 1.55945 -0.262717 0.247205 -0.396748 0.887934 0 0 0 0 0 0 +399 0 -0.3779 -0.228949 0.00616345 0.0805893 -0.0949238 -0.0145801 0.0410366 0.733263 0.03079 -0.251581 0.147248 -0.382729 -0.000215113 -0.558595 0.00290564 -0.0186543 -4.21869 0.0156476 0.0042051 0.134799 -0.00307805 -0.156802 0.000236833 -0.02904 -0.081084 0.125991 0.00356435 -0.435372 -1.52674 -0.0968954 0.00269898 0.120709 0.292396 0.145162 -0.218778 0.00775258 -0.0637178 1.90119 0.223376 0.21629 -0.00253821 0.17308 0.0137294 -2.65501 -0.0296765 0.210047 -0.804425 0.175741 -0.0158951 -2.07869 0.0818861 -3.40954 0.035384 0.0262696 -0.070711 1.47003 0.121651 -0.129506 0.0616655 0.00279477 -0.550812 0.172651 1.17414 -0.339868 0.588418 -0.687523 -0.0833199 -0.251527 -0.000863839 0.593205 0.165971 0.0430316 0.0911152 0.365262 0.136996 -0.399276 -7.51836 -0.39074 -2.54705 -0.370132 -0.266394 0.507948 0.295063 -0.4061 0.639019 -1.2678 0.00461232 -0.0253915 0.148873 -0.640804 3.11039 0 0 0 0 0 0.00616345 0.0805893 -0.000450685 0 0 0 0 -1.79555e-05 0 -0.00454638 0 0 -0.000154719 -7.5928e-05 -0.00282214 0 -0.000397917 -0.00664539 -0.0290248 0 0 -0.09757 -4.46855e-06 0 0.00607181 -0.497484 0 0 -0.0133408 -0.0637943 0 0.0306421 0 -0.00833271 0 0 -0.00115505 0 0 0.111483 -0.000358108 -0.00261107 0 -0.00852986 -0.00192413 0 0 0.0353258 0 -0.000228174 0.0754393 0.000535544 0 0 0.000137071 0.00119746 0 -0.00115518 -0.0389705 0.00224919 -0.487338 -0.000618363 -0.0176833 0 -1.13564e-05 -0.00457901 -0.139325 -0.00670281 -0.0669 0 0 0 0.278368 0.0394653 0.075385 0.00267278 0.00256565 -0.058388 3.68516e-05 0.000318436 -0.00116435 0.00925112 0 0 0 0 0 0 -0.0949238 0 -0.0145801 0 0 0 0 0.468504 -0.150166 0 0 -0.418958 0 -0.0368979 0 -0.00716088 0 0 -0.734621 0 -0.149046 0.167161 -0.149517 -0.0918444 0 0 -0.0289347 0 -6.38946 0 1.18293 -0.330842 0 1.09456 0.248372 -0.0121333 0 0.0681652 0 0 -0.0216794 0 -1.63332 -1.93134 0 0 -0.256916 0 0 0.349972 1.16397 -0.576319 0 -0.399854 0 0.123518 -0.0974966 0.198958 0.124168 0.0436275 -0.440599 0.0494041 -0.131474 -0.276494 -1.94284 -0.0772594 0 0 0 -0.250645 0.108268 0 0 0 0 0.0933742 -4.95789 2.20276 -5.72324 0.0454336 -0.0646977 -0.337682 0.136648 -0.1746 0.345259 -0.806428 0 0 0 0 0 0 +400 0 -0.794587 -0.1544 0.00440279 -0.109567 0.0972266 0.134655 0.376573 0.96787 0.0814954 -0.725169 0.0781497 0.0687158 -0.00050007 0.155675 -0.0118201 0.360522 0.537022 -0.19114 -0.0156148 1.52087 -0.0413962 0.141423 0.000741664 -0.279329 0.0746662 0.159534 -0.0171471 -0.460964 -0.766158 0.173824 0.00842552 -0.171208 0.452533 0.0253403 -0.0861767 0.00760739 -0.0150174 2.16837 0.178131 1.03861 -0.00577518 0.641255 0.0199956 -1.13494 -0.0481686 0.571949 -0.515113 -0.211397 -0.0785652 -0.112902 -0.175813 -4.04527 0.0182843 -0.0262134 0.031107 -2.13028 -0.172845 0.140646 0.268701 0.0183706 -0.160157 -1.74794 1.502 -0.0200179 0.185481 -0.253616 0.0637612 -0.148126 -0.0234733 0.489169 -0.080583 0.252771 -0.0128817 -0.428171 0.136696 0.182473 -5.4921 1.09968 -3.12084 0.548244 -0.988224 0.600134 0.916285 -1.14174 1.65476 -2.29773 0.00748636 -0.026881 0.108604 -0.388838 1.56087 0 0 0 0 0 0.00440279 -0.109567 0.00248331 0 0 0 0 0.000115874 0 -0.000419159 0 0 0.00016357 0.000312809 -0.00753716 0 -0.000796352 -0.00837291 -0.0506608 0 0 -0.290384 1.41686e-05 0 0.00950947 -0.129964 0 0 -0.0387315 -0.0472552 0 0.0353603 0 -0.0201718 0 0 -0.00287687 0 0 0.203203 0.00229425 0.00594039 0 0.048103 -0.00916299 0 0 0.0756441 0 0.000554801 0.103166 -0.0014923 0 0 0.00104397 -0.00719187 0 -0.0017833 -0.0211467 -0.000512326 -0.747375 -0.00311179 -0.0143167 0 0.00118349 0.0229864 -0.218066 0.0236307 -0.0552099 0 0 0 -0.899158 -0.0574011 0.0170238 -0.0028613 -0.00331667 -0.0433158 0.000338035 -0.000641629 -0.00283815 0.0278166 0 0 0 0 0 0 0.0972266 0 0.134655 0 0 0 0 0.294992 0.711811 0 0 -0.256872 0 -0.047328 0 0.0108355 0 0 0.314505 0 0.107918 0.0572375 -0.24558 0.0374882 0 0 0.161664 0 5.72527 0 2.80508 1.23019 0 0.524632 0.552533 -0.0276722 0 0.025113 0 0 0.0628789 0 2.84369 -0.137368 0 0 -0.021326 0 0 -0.347007 -1.76238 -0.0569088 0 -1.16056 0 -1.27315 0.0529459 -0.0776874 0.175166 -0.142071 0.312931 0.64141 0.00422104 -0.450965 -10.6617 0.149564 0 0 0 0.165635 0.0155648 0 0 0 0 -0.206906 -23.8979 0.695189 -5.27717 -0.418663 0.581531 -2.17403 0.17518 -0.167944 0.193919 -0.412428 0 0 0 0 0 0 +401 0 0.713939 -0.0394151 0.000386315 -0.0576316 0.157569 -0.136752 -0.131715 -0.440663 0.00465292 -0.268624 0.026544 -0.676195 -1.70017e-05 -0.511192 -0.00257244 -1.17482 0.11401 -0.064879 -0.00549888 -0.777487 -0.00926832 0.277755 1.36337e-05 -0.0454575 0.201107 -0.533154 -0.0139554 0.495305 0.825494 -0.371127 0.000323372 -0.106373 -0.0946399 -0.0446533 0.204967 0.000972984 -0.00428387 -2.30815 -0.0083574 -0.842063 -0.000468534 -0.0576103 0.000258634 -0.012024 -0.0108683 -0.750867 0.534108 -0.188415 -0.00181544 0.0617981 -0.189516 2.41656 0.00957295 -0.00139283 -0.0203113 -0.624478 -0.0777442 0.032154 0.0841007 0.00101207 0.397669 0.368215 -0.677641 0.0163758 0.169626 0.467252 0.0524306 0.00666503 -0.000614119 -0.161379 -0.204482 0.0250518 0.00609525 0.0697368 -0.156954 0.208939 6.13885 -0.569769 3.95168 -0.167543 -0.0845016 2.66775 0.0601523 -0.273606 0.609019 0.287988 0.000116729 -0.000155047 -5.66304e-05 0.0185507 -0.664815 0 0 0 0 0 0.000386315 -0.0576316 -0.000369281 0 0 0 0 -2.93546e-05 0 0.00724873 0 0 0.000504991 0.000273004 0.00100731 0 0.000114982 0.00149951 0.0499518 0 0 0.116205 1.88933e-05 0 -0.000661096 0.24975 0 0 0.0157863 0.0339594 0 -0.0255726 0 0.00405662 0 0 0.000502305 0 0 0.00693795 -0.000402176 0.00774367 0 -0.00315861 0.00817346 0 0 -0.0414475 0 -0.00141978 -0.0498543 0.00209985 0 0 -0.000788086 0.000194946 0 -0.00179072 0.0394709 0.00122282 0.279551 0.00711702 0.018113 0 -0.00365462 -0.00878213 0.060731 0.0018746 0.0595895 0 0 0 -0.122761 -0.0110078 -0.0564684 -0.0068428 0.00628159 0.0254032 -0.000527766 0.000513001 -0.000915445 -0.0202983 0 0 0 0 0 0 0.157569 0 -0.136752 0 0 0 0 0.058406 0.409639 0 0 0.0496839 0 -0.00572969 0 0.00412288 0 0 0.159868 0 0.736383 -0.0531342 -0.0621127 0.00322033 0 0 0.0806375 0 3.38195 0 -0.837409 -0.519037 0 -0.323359 0.656229 -0.00819985 0 0.000173841 0 0 0.0307584 0 -0.317773 0.785046 0 0 0.0602092 0 0 0.0314282 -0.524758 0.0885225 0 0.0416367 0 -0.256234 -0.0266487 0.0271564 0.0753029 0.0413925 0.581767 0.11757 0.00512909 -0.524359 -6.02713 0.0288598 0 0 0 0.0926248 -0.0217151 0 0 0 0 -0.120411 -8.02844 -0.450451 -0.565941 0.191376 -0.0316044 -0.162794 0.0791999 -0.0708374 0.012392 0.176591 0 0 0 0 0 0 +402 0 -0.423442 -0.205751 0.000134275 0.0139073 -0.195681 -0.130158 0.294874 1.37677 -0.000321506 -0.265593 -0.0180842 0.549431 -5.49354e-07 1.95023 -0.00199018 0.052994 0.475871 -0.053942 -0.00280134 2.36667 -0.000861194 0.274175 4.88116e-07 -0.0148586 0.39979 -0.0275661 0.00139938 0.229515 -0.422997 0.401522 5.93841e-06 -0.0862809 0.622813 -0.05529 0.214945 -0.000693954 -0.0240934 2.66014 -0.0243955 0.88902 -3.30432e-05 -0.363597 -0.00102573 2.80184 -0.0019028 0.138753 0.00582824 -0.124839 0.00189169 -1.95038 0.0380432 -4.33359 0.00225516 -0.00133733 -0.00936992 -0.908337 0.000249336 0.059624 0.0200519 4.57873e-05 0.411392 -1.59532 -0.728926 -2.17826 0.474554 -0.483317 0.182271 -0.175786 3.86688e-05 0.223132 -0.0802651 -0.0381251 -0.00680176 -2.00966 -0.016489 -0.059527 -7.98584 0.747939 -4.45463 -0.262337 0.379154 -2.10743 0.137273 -0.22649 0.639573 -2.51583 2.04367e-05 9.60054e-05 0.00303778 0.0020423 0.340662 0 0 0 0 0 0.000134275 0.0139073 -0.000500693 0 0 0 0 -1.24038e-05 0 0.000649376 0 0 -0.000399752 -0.000133846 0.000179758 0 2.1618e-05 -0.000355347 0.00589972 0 0 0.00746042 -9.30267e-06 0 0.000181014 -0.0203814 0 0 0.000729547 -0.0072899 0 0.00293805 0 0.000255388 0 0 2.67459e-05 0 0 0.00550603 -0.000178106 -0.00594751 0 -0.00743363 0.000700778 0 0 0.00175603 0 -0.00104986 -0.0129054 0.000653976 0 0 0.00081581 0.000827484 0 -0.00224788 -0.00479179 -0.000864029 -0.00991997 -0.00170193 0.00104157 0 -0.000646961 -0.00231061 0.0021887 -0.000795511 -0.00487185 0 0 0 0.136592 0.0186849 0.00954306 -0.000286484 0.00207058 -0.00441067 0.000480376 -0.000453045 0.000686148 -0.00135421 0 0 0 0 0 0 -0.195681 0 -0.130158 0 0 0 0 0.686197 -0.657021 0 0 -0.308119 0 -0.0239605 0 -0.0172575 0 0 0.537806 0 0.846954 0.230584 -0.113724 0.0848315 0 0 -0.28182 0 4.72398 0 4.34367 0.464092 0 1.59092 1.83578 -0.00757228 0 0.0965186 0 0 -0.0472328 0 1.4558 1.12279 0 0 0.159417 0 0 -0.216128 -2.22308 -1.09611 0 -2.38838 0 -1.26581 -0.174478 0.330045 -0.0575367 0.00735397 -0.0928408 0.178355 -0.102116 -0.291579 -11.159 -0.01418 0 0 0 -0.119496 0.0579531 0 0 0 0 0.0331591 -31.8592 2.25221 -11.3892 -0.0799396 0.365627 -2.49594 0.10465 -0.144268 0.284474 -1.11272 0 0 0 0 0 0 +403 0 -0.538312 -0.329146 -0.00548801 -0.145442 0.0625674 0.129067 0.350701 0.946747 -0.0340772 -0.654875 -0.0944315 0.512542 3.28255e-05 1.57098 -0.00376869 -0.425505 0.135873 -0.253751 -0.00178126 2.88326 -0.0378907 0.132358 -4.43297e-05 -0.180067 0.0667811 -0.275985 -0.0127386 -0.279673 0.0704116 0.261601 -0.00128944 -0.074312 0.250707 -0.157149 -0.117473 -0.00335214 0.0450088 1.56185 -0.121714 1.60574 0.000985406 0.0497799 -0.00353928 2.50912 0.0299381 0.789863 -0.0492502 -0.0206635 0.00607878 -0.0241976 -0.181665 -2.52091 0.00267692 -0.000730562 0.0296843 -3.38629 -0.291617 -0.0453205 0.166144 -0.0015354 1.11619 -2.29179 1.39809 -0.619821 0.212605 0.00864193 0.755256 -0.160043 0.00167694 0.102751 0.112582 -0.0141891 -0.0624717 -2.81678 0.0967042 -0.520025 -5.62064 1.60826 -4.72599 0.905057 -1.07378 -0.222501 0.856593 -0.98074 1.4233 -2.28173 -0.000321546 0.00120435 -0.0124335 0.0503065 -0.0567062 0 0 0 0 0 -0.00548801 -0.145442 0.00213318 0 0 0 0 7.76291e-05 0 0.00361331 0 0 -0.000911609 -0.000668416 -4.92678e-05 0 0.000133432 0.000242263 -0.00452846 0 0 -0.195541 -4.72696e-05 0 -0.00175886 0.0196065 0 0 -0.0229681 -0.00168849 0 -0.0159936 0 -0.00701081 0 0 -0.000799685 0 0 -0.0230075 0.00112761 -0.0122026 0 0.0332003 -0.0136786 0 0 0.0246943 0 0.00348766 0.0278611 -0.00479987 0 0 0.00218018 -0.0042476 0 0.00102124 -0.0320933 -0.00495543 -0.196002 -0.00960958 -0.00142652 0 0.00379566 0.00881188 -0.0380216 0.00849549 -0.0104964 0 0 0 -0.18201 -0.017487 -0.00370533 0.00702986 -0.0105379 -0.00541715 0.00130126 -0.00164466 0.00155056 0.00495987 0 0 0 0 0 0 0.0625674 0 0.129067 0 0 0 0 0.108087 0.531685 0 0 0.00981078 0 -0.024052 0 0.0162714 0 0 0.315798 0 0.366716 0.0546169 -0.0211344 0.0371925 0 0 0.218321 0 3.31034 0 3.3388 0.981556 0 0.375489 0.869998 -0.0120181 0 0.0171294 0 0 0.0464132 0 2.11124 0.188079 0 0 0.0334052 0 0 -0.359237 -0.595936 -0.156863 0 -1.3329 0 -1.18183 -0.0728397 0.0114015 0.293515 -0.202955 0.23931 0.508438 0.153099 -0.527955 -10.6934 0.170893 0 0 0 0.0949829 -0.0357319 0 0 0 0 -0.11425 -29.2532 -0.0999146 -5.70373 -0.073349 0.205957 -2.10744 0.261855 -0.215916 0.0471738 -0.270671 0 0 0 0 0 0 +404 0 0 0 0 0 0.161461 -0.422499 0.669863 1.42924 0 0 -0.366387 -1.76548 0 -3.30335 -0.0307054 0 0 0 -0.0360551 -3.03368 0 0 0 0 0.433658 0 0 0.697222 3.0286 -0.83383 0 -0.514299 0 0 0.236253 -0.0239145 0 0 -0.32934 -1.64335 0 0 0.0579399 -7.81105 0 -1.0539 1.42457 -1.13717 -0.134986 -0.512977 0.101707 0 0.0444242 -0.169771 0.489582 1.30838 0.241643 0.278342 0 0 1.88424 2.10825 0 0.811807 -0.0176973 0.310728 0 0 0 0 0.354719 -0.255719 0 3.58038 -0.903349 0 0 0 -2.36317 0 0.349444 -4.7739 0 -0.150082 -0.499452 -1.91901 0 -0.0370303 -1.00575 3.47333 -11.8493 0 0 0 -0.0277982 -0.00260959 0 0 0 -0.00618161 0.0428878 0 -0.000661155 0 0.000688597 0.000849492 0 0 0 0 -0.0252827 0 0.000850196 0 -0.0499226 0 -0.0231065 0.282015 0 -0.000967364 0 0 -0.0760152 0.00145584 0.0149014 0 0.00281254 0 0.00306485 0.0841263 -0.0107695 0.0201347 0.00323223 0 5.01217e-05 0 0 0 0.000200846 0 0 -0.00147763 0.00098233 -0.120082 -0.00436577 0 0 -0.00537073 0 -0.00658187 0 0 0.0172706 0.00597032 0.0268994 0.00727685 0 0 0.0035498 -0.000191396 -0.00202433 -0.0439923 -0.0893032 0 0.0474749 -0.000307986 0.0586469 0 0 0 0.196815 0 -0.0263138 0.0773419 0 0.00189712 -0.00746252 0.026751 0 -0.00141532 0.00712796 -0.0182851 0.0408769 0 0.161461 -0.0277982 -0.422499 -0.00260959 0.0540513 -0.1285 -0.0400966 -0.106282 -0.730454 0.00234075 -0.00111618 0.0218587 0.000106741 0.00407434 -0.00202598 -0.0124982 -0.0144351 0.0522217 -1.08167 -1.13734 -0.368445 -0.0141736 0.0723337 -0.266995 -0.262551 0.135529 -0.401585 -0.0441205 -5.43583 -0.232574 -1.36794 -1.22913 -8.98457e-05 0.0938317 -0.742741 0.00458207 -0.00287484 -0.0293348 -0.0326204 0.894157 -0.0211253 0.0204829 -2.65703 -3.39351 0.0033005 -0.0167584 -0.74095 -0.239835 -0.162663 2.21162 4.1027 -0.0135106 0.0619472 2.6196 0.00720534 1.69458 -0.00739467 0.158982 -0.0732915 -0.283459 2.02987 -0.199443 0.308124 -0.596999 -5.66389 0.365603 0.951826 0.108981 -0.169424 -0.201096 -0.0179285 0.0613698 -0.00569782 -0.0100185 -0.0307604 0.0504305 14.6308 -0.221192 1.73298 -0.267156 1.49564 -4.61221 0.00378808 0.227206 -0.521278 -1.19307 -0.000924686 0.0687834 -0.288506 0.460241 -1.61435 0 +405 0 0 0 0 0 -0.513384 -0.459992 0.657604 2.19988 0 0 -0.145677 -1.62585 0 -2.11043 -0.00998071 0 0 0 0.00321456 -5.01246 0 0 0 0 0.502182 0 0 0.337818 1.92661 -0.711038 0 -0.138673 0 0 0.256371 -0.0118543 0 0 -0.406059 -2.27394 0 0 -0.100782 -5.6697 0 -1.33936 0.427237 -0.288791 0.182447 -2.23034 0.368994 0 0.0146366 -0.09481 0.503528 3.2695 0.0917678 -0.147068 0 0 1.19261 5.42608 0 -0.211374 0.83715 -0.0058111 0 0 0 0 0.247927 -0.252887 0 3.97221 -0.761737 0 0 0 -4.63645 0 0.948275 -4.68921 0 0.303773 -0.308438 -6.06797 0 0.318907 -0.544413 1.29895 -7.26415 0 0 0 0.0279426 0.00207675 0 0 0 0.00884776 0.0115702 0 0.000351632 0 -0.000186591 0.00292995 0 0 0 0 0.0522392 0 0.00204544 0 0.0648111 0 0.056837 0.0774688 0 -7.86343e-05 0 0 0.00997073 -0.000278602 0.00730449 0 0.000939792 0 0.00081942 0.00534726 -0.00053963 -0.00345283 0.00127265 0 -1.43519e-05 0 0 0 6.69743e-05 0 0 0.000916193 -0.000752816 0.0263688 -0.00802174 0 0 0.00214663 0 -0.00221042 0 0 0.00602495 -0.00264752 -0.0446691 0.00978861 0 0 -0.0241605 -0.0197454 -0.00202835 -0.0481812 -0.0804712 0 0.00391973 0.00422852 -0.0192956 0 0 0 -0.146224 0 0.0110957 -0.0565796 0 -0.000830445 0.00417843 -0.0352717 0 0.000364875 -0.00150304 0.00571873 0.00406783 0 -0.513384 0.0279426 -0.459992 0.00207675 -0.263019 -0.147631 0.0485431 0.922882 0.233071 0.000296116 -0.00444654 0.122262 2.52508e-05 0.0044165 0.00183849 0.00368732 -0.0325247 0.0001781 -1.01413 -0.942154 0.212684 0.390663 0.0375224 -0.165796 -0.136967 0.272835 0.0477084 -0.0129567 -0.311857 -0.0267021 1.05714 -0.772671 6.94196e-05 2.31426 0.532327 0.00181646 -0.00337934 0.168927 -0.0226453 1.38964 0.0131484 0.0518653 -0.693863 -2.9962 -0.00462126 -0.0111436 -0.417712 -0.106852 0.190265 0.250697 2.06129 -1.19008 0.0224706 1.94513 -0.00799657 -1.61021 -0.00207633 0.198871 0.0746217 -0.345726 0.3219 0.0943295 0.0945079 -0.0122271 0.830257 0.096571 -0.797954 -0.0392172 -0.462212 0.062834 0.0141404 0.0415526 -0.00110183 -0.00153698 0.135548 -0.0328339 -11.3065 -0.573223 -13.4068 -0.0103117 0.0106157 -7.24453 -0.00106887 -0.0194571 -0.357088 -3.15951 -3.1536e-06 -0.00382365 -0.201429 0.149722 -1.71729 0 +406 0 0 0 0 0 -0.0204602 0.143657 -0.233124 -1.72191 0 0 0.0764633 0.899719 0 2.78033 0.0367757 0 0 0 0.228919 1.85515 0 0 0 0 -0.258942 0 0 -0.30451 -4.45935 0.443846 0 0.475551 0 0 0.018996 -0.000820358 0 0 0.309109 -0.365198 0 0 0.00745808 6.27961 0 -0.328626 -1.19761 1.63959 -0.328373 -0.550249 -0.477967 0 -0.157077 0.32932 -0.584282 -1.45918 -0.149206 -0.033631 0 0 0.594878 0.0543098 0 -0.768602 -0.377847 -0.178735 0 0 0 0 -0.298599 0.567578 0 -3.87887 -0.745706 0 0 0 3.60923 0 -1.31638 10.5262 0 -0.273899 0.382128 8.61824 0 -0.000309033 1.78828 -3.75493 17.2714 0 0 0 -0.101275 -0.00711938 0 0 0 -0.017117 0.0782877 0 -0.00141322 0 0.000706033 0.0038748 0 0 0 0 0.00671607 0 0.00360402 0 -0.0256534 0 -0.108663 0.434644 0 -0.00170457 0 0 -0.114196 0.00152144 0.0249335 0 0.00528455 0 0.0055949 0.100801 -0.017403 0.0208267 0.00396032 0 5.21771e-05 0 0 0 0.000377454 0 0 -0.00333227 0.0017701 -0.165216 -0.00606031 0 0 -0.00704428 0 -0.0111303 0 0 0.0371075 0.0122604 -0.0250511 0.0176064 0 0 -0.000161465 0.00512134 0.00543892 -0.0684014 -0.119834 0 0.0787953 -0.00152568 -0.0113485 0 0 0 0.241357 0 -0.0349406 0.112794 0 0.00287569 -0.00965843 0.0320089 0 -0.00180924 0.00957275 -0.024088 0.0556877 0 -0.0204602 -0.101275 0.143657 -0.00711938 0.297664 0.186343 -0.107526 -0.111491 0.205793 0.00343844 0.0104543 0.0926252 0.00016623 0.00627539 -0.00513212 0.00112259 0.0450499 0.0714641 -0.293956 1.28186 0.395959 -0.126627 0.125251 -0.0488161 0.359197 -0.19366 0.0500476 0.0248971 6.92621 -0.0395756 2.20883 0.554476 -0.000223697 -0.235136 0.899207 0.0068115 -0.000518708 -0.0490238 -0.00431472 -0.85283 0.00802033 -0.0403588 1.86516 1.00893 0.00330995 -5.46697e-06 0.0519731 0.170744 0.165749 -1.00137 2.86874 -0.908732 -0.0523846 -0.593703 0.0159325 0.3235 -0.00749622 0.0806758 0.575975 0.0674253 -0.0995589 -0.252296 -0.0627401 0.787533 3.63349 0.132831 -0.422472 0.120347 0.0886197 0.327031 -0.00910476 -0.0522968 -0.00905299 0.0736276 -0.108301 0.0242291 -23.6243 -0.326923 -4.14279 -0.401726 0.214572 2.69893 0.00462867 -0.250392 0.438217 0.379289 -0.00126541 -0.123225 0.227773 -0.275943 1.32841 0 +407 0 -0.1132 -0.397762 0.00714939 0.108344 -0.0853291 -0.0346355 -0.414278 0.0250028 0.0353997 -0.212607 0.10758 0.144 -9.86223e-05 1.28849 0.00829551 -2.33328 -8.97365 -0.0488615 0.0116129 0.254883 0.0038189 0.0624605 0.000108607 0.0267106 0.000488954 -0.616889 -0.00224189 -0.0513897 -0.587024 0.293368 0.00209411 0.189911 0.222374 -0.050643 -0.111079 0.00517181 -0.0387406 1.12861 0.14772 0.119143 -0.00205406 -0.260117 0.00678838 1.33269 -0.0421454 0.186653 -0.245229 0.256532 -0.0144937 -0.614988 -0.178248 4.16025 -0.0142814 0.00233019 0.014926 -1.26454 -0.228458 -0.194991 -0.0332055 0.003662 0.358596 0.841092 1.41278 -1.36702 0.258103 -0.195376 0.31551 -0.152836 -0.00178733 0.327743 0.0175956 0.0385262 0.0296468 -1.85692 -0.0982745 0.289031 -3.67046 0.394575 -1.45543 -0.135201 0.28789 -1.97774 0.163049 -0.515062 0.891603 -1.78875 0.00109164 -0.00358343 0.012959 -0.04204 0.149218 0 0 0 0 0 0.00714939 0.108344 0.00145639 0 0 0 0 3.81305e-05 0 -0.00091314 0 0 0.000279676 6.53993e-05 0.00160336 0 0.000116285 0.00889305 0.0154374 0 0 0.0788939 4.58005e-06 0 0.000571984 0.667876 0 0 0.00483693 0.0963781 0 0.0113153 0 0.00473757 0 0 0.000237711 0 0 0.106945 0.000533652 0.00398484 0 0.0203923 0.00925535 0 0 -0.00607093 0 0.000442283 -0.00924645 -7.13453e-05 0 0 0.000149859 -0.00315923 0 0.000497149 0.0225763 -0.00284585 -0.192939 -0.00136822 0.00359927 0 0.00445028 -0.0170525 0.0350038 -0.00324608 -0.0253049 0 0 0 -0.117831 -0.00486132 -0.0259801 -0.000296717 0.00143336 -0.0511551 -0.000185921 0.0002594 -0.000549611 -0.00856608 0 0 0 0 0 0 -0.0853291 0 -0.0346355 0 0 0 0 0.249189 0.199422 0 0 -0.245345 0 -0.0278473 0 0.00517473 0 0 0.0416711 0 0.802044 0.12142 -0.014028 0.0601308 0 0 0.146316 0 -5.42548 0 3.28874 0.0385391 0 0.815112 1.51441 -0.0015406 0 0.0442339 0 0 -5.14173e-05 0 -0.885113 -0.363029 0 0 0.0732723 0 0 -0.180753 -3.60603 -0.655318 0 0.673856 0 -2.01573 0.122511 0.0156689 0.714073 -0.179302 -1.06738 0.470659 0.114351 0.295145 7.86662 -0.0199243 0 0 0 0.0826646 0.0243112 0 0 0 0 0.0136105 -30.6841 1.88258 -9.72339 -0.176696 0.319735 -2.34933 0.0683115 -0.0606032 0.18719 -0.650053 0 0 0 0 0 0 +408 0 -0.702167 -0.496947 -0.00527956 -0.0474858 -0.195297 0.141885 -0.279518 -0.161516 -0.0552903 0.185691 0.00471162 0.0312999 8.1743e-05 -0.53022 -0.000762248 -1.23294 -6.06249 0.0496176 -0.000660458 0.446175 -0.0148994 0.451095 -0.000129304 -0.0247781 -0.148712 -0.226365 -0.00675736 -0.393902 -0.0995357 0.151542 -0.00277158 -0.00957762 1.45404 0.0973903 -0.226213 -0.000498136 -0.106545 5.47264 -0.0118858 0.996752 0.00152067 -0.38704 -0.00170827 -1.35513 0.0256182 0.951423 -0.189772 0.00478117 0.00323614 0.0569385 0.0822318 6.22228 -0.00287013 -0.00656461 0.0183948 0.16992 -0.0663388 0.0763833 0.0484209 -0.00260136 -0.824766 -1.54247 -1.75115 -0.713228 -0.0183193 0.283938 0.343424 -0.0320348 0.0056304 0.38827 -0.105448 0.0122551 0.116142 -0.397598 -0.05881 0.187212 -25.1166 -0.0595211 -5.61383 -0.72897 1.52631 -6.83267 -0.031399 0.209728 -0.259443 -0.480223 -0.000663555 0.00116924 -0.00196692 -0.00243419 0.0253014 0 0 0 0 0 -0.00527956 -0.0474858 -0.000190964 0 0 0 0 -5.49611e-06 0 -0.00151304 0 0 5.15475e-05 -3.84785e-06 -0.0014499 0 -0.000148174 -0.00682153 -0.0131102 0 0 -0.0750272 -3.65947e-07 0 -0.000371463 -0.406329 0 0 -0.00365704 -0.0531241 0 -0.0167119 0 -0.00498892 0 0 -0.000263765 0 0 -0.100128 -7.71513e-05 0.000816996 0 -0.00267473 -0.00128269 0 0 -0.000805912 0 7.88978e-05 0.00140372 -0.000107135 0 0 -0.000171495 0.000488943 0 0.00118853 -0.00126265 0.000415666 0.0508456 0.00122605 -0.0147847 0 -0.000762315 0.0152841 -0.00936407 0.000365448 -0.0120189 0 0 0 0.193875 -0.00221279 0.0156522 0.00167206 -0.00208394 0.0163323 -9.36285e-05 0.000101893 -9.23556e-05 0.00967924 0 0 0 0 0 0 -0.195297 0 0.141885 0 0 0 0 -0.252672 0.0902411 0 0 0.179901 0 0.015419 0 0.00400749 0 0 -0.203916 0 0.00256779 -0.00467866 0.0494287 -0.0200909 0 0 0.0734625 0 -3.52492 0 3.62018 0.00537351 0 -0.04363 0.44955 0.00215978 0 -0.0374408 0 0 -0.00372488 0 -1.03754 -0.121548 0 0 -0.013685 0 0 -0.130974 -4.74002 0.13189 0 0.330541 0 -1.06228 0.0353851 -0.0799011 -0.0612591 -0.138569 -0.00127824 -0.0317663 0.0459474 -0.574683 -2.55944 0.0899198 0 0 0 0.0951401 -0.027795 0 0 0 0 -0.0354147 -26.6819 -2.22954 -1.82762 -1.0212 0.818024 -2.37829 -0.111147 0.0983523 -0.150495 0.101239 0 0 0 0 0 0 +409 0 0.215731 -0.288194 0.00404389 0.0313149 0.0591196 -0.0788602 -0.822161 -1.445 0.000723586 0.0758606 0.0330421 -1.3589 -8.90555e-05 -2.37701 0.000755096 -2.16355 -4.82734 -0.00687458 0.00370364 -3.17948 0.0125104 0.171405 6.21103e-05 0.0523099 -0.281528 -0.822709 0.0157916 0.239552 -0.159183 -0.649862 0.000861283 0.0215191 0.0086879 0.0520369 -0.109567 0.0017654 0.205466 -1.21717 0.112581 -1.31297 -0.00204697 0.968225 0.00492762 -4.59111 -0.0476303 -0.59065 -0.0080335 0.133404 -0.0144942 1.03598 0.14038 4.75575 -0.0187563 -0.011836 0.0717241 2.02223 0.00769777 0.172161 -0.170977 0.00359652 -1.8048 0.751221 1.98338 0.547657 -0.386444 -1.16992 0.00773305 0.15933 0.000508073 -0.272132 0.284531 0.0493043 -0.263555 2.49716 -0.297696 -0.457318 7.23516 -1.11457 7.25718 0.216601 -0.176876 1.77963 0.08115 -0.0351938 -0.171421 1.38503 0.00123371 -0.00334573 0.00811524 -0.0206176 0.0404634 0 0 0 0 0 0.00404389 0.0313149 0.0032495 0 0 0 0 8.56858e-05 0 -0.00265526 0 0 0.000327065 8.98435e-05 0.00145152 0 7.4389e-05 0.00680692 0.0122515 0 0 0.0158498 6.23191e-06 0 0.00113 0.649246 0 0 -0.00474315 0.0757016 0 0.0278063 0 0.00200327 0 0 -0.000110475 0 0 0.134456 0.00119948 0.00470353 0 0.0455052 0.0213747 0 0 -0.034756 0 0.00106002 -0.0191614 -0.00105798 0 0 0.000122831 -0.00671297 0 0.000751873 0.00965118 -0.00586972 -0.21072 -0.00133689 0.00708318 0 0.0103054 -0.00555238 0.0212961 0.000493178 -0.0075444 0 0 0 -0.0880555 -0.00728476 -0.00783131 -0.00195234 0.00470516 -0.0416241 -0.000236531 0.000321169 -0.000642482 -0.0121042 0 0 0 0 0 0 0.0591196 0 -0.0788602 0 0 0 0 -0.0668143 0.303343 0 0 -0.117614 0 -0.0245087 0 -0.000499389 0 0 -0.144647 0 0.46682 -0.0364165 -0.057023 -0.012498 0 0 0.0594672 0 -4.77577 0 -0.593204 -0.732843 0 -0.288292 0.327129 -0.00830889 0 -0.00903204 0 0 0.0210121 0 -2.08847 -0.228822 0 0 -0.0207337 0 0 -0.252681 -3.02547 0.440394 0 -1.56446 0 -0.641234 0.0704284 -0.0902583 -0.076878 -0.110969 0.0878855 0.364348 0.00917987 0.604057 -1.2513 0.0234128 0 0 0 0.10895 0.0141247 0 0 0 0 -0.03592 -2.97516 0.226864 1.2781 -0.0842449 0.277898 -0.358307 0.0316653 -0.0100391 0.0162371 0.223219 0 0 0 0 0 0 +410 0 -0.429844 -0.148969 -0.0177552 -0.195569 0.0817677 0.161411 -0.152816 -0.606639 -0.157545 0.0174428 0.242405 -0.810866 0.00124396 -0.331491 0.0302227 -0.971445 -7.38923 -0.00843912 0.0474528 -2.39637 -0.0324551 -0.246618 -0.00121999 -0.0608263 -0.470636 -0.0584864 -0.0096498 -0.735417 -1.81981 -0.0637538 -0.0143376 0.482145 -0.409547 0.0674861 -0.26075 0.0111817 -0.139588 -0.924704 0.000459699 -0.255162 0.0162918 -0.785617 -0.0110203 -2.77733 0.202285 0.462416 -1.26328 0.71122 0.0581676 0.399952 0.231419 0.984203 -0.0667544 0.11763 -0.392718 3.02156 -0.0721141 -0.046624 0.0265104 -0.0541749 -1.93109 0.799186 1.77326 1.82169 0.532965 -0.668913 0.194656 -0.402235 0.0302306 0.333408 0.0381127 0.238815 0.0593386 2.39719 1.01144 0.109635 4.18259 -1.38414 4.16545 -0.140691 -1.33488 6.93241 0.389341 -0.484567 -0.0484856 2.78952 -0.090543 0.130983 0.0101704 -1.18019 7.14496 0 0 0 0 0 -0.0177552 -0.195569 0.00241518 0 0 0 0 0.000376355 0 -0.0161989 0 0 0.00324003 0.00315203 -0.00926765 0 -0.00152478 0.00254334 -0.108345 0 0 -0.0567829 0.000227282 0 -0.000717187 -0.154012 0 0 -0.00621587 0.0127262 0 -0.0573187 0 -0.00757832 0 0 -0.00102705 0 0 -0.248616 0.00527794 0.0451636 0 0.0338656 0.00660541 0 0 0.0134439 0 -0.000585126 -0.0306309 0.00670092 0 0 -0.0020044 -0.00754459 0 0.00257447 0.0356316 -0.000881255 -0.0650033 0.00129459 0.00395708 0 0.00382607 -0.0222017 0.0754009 -0.0336034 -0.0121834 0 0 0 1.18458 -0.107786 0.277836 0.0312851 -0.054422 0.104176 -0.00301664 0.00495975 -0.010389 0.0260001 0 0 0 0 0 0 0.0817677 0 0.161411 0 0 0 0 0.280019 -0.114953 0 0 -0.111881 0 -0.0148464 0 0.00997331 0 0 -0.631701 0 -0.450802 0.0763487 -0.113452 -0.0652515 0 0 0.255186 0 -5.27451 0 0.284305 -0.0629979 0 0.489705 -0.353514 -0.0129458 0 0.0351208 0 0 -0.031945 0 -0.877835 -1.08215 0 0 -0.100645 0 0 0.000277228 0.458279 -0.12661 0 0.443817 0 -0.442793 0.0817301 -0.00124347 0.476107 0.00442 -0.172858 0.351228 -0.0441966 -0.178605 1.38296 0.0192623 0 0 0 0.0476117 0.057673 0 0 0 0 -0.0202327 -6.75619 0.877269 -3.8808 -0.315641 0.301503 -0.567155 0.088805 -0.0767688 0.135453 -0.409584 0 0 0 0 0 0 +411 0 -1.00227 -0.454213 -0.000572768 -0.0122429 -0.178193 0.0224241 -0.584205 0.254935 -0.00786275 -0.374001 -0.0461359 1.12246 0.000105032 2.74699 0.00432712 -1.92748 -6.70616 -0.143876 0.0145812 5.30593 -0.00538244 0.330031 -0.000263065 -0.0517821 0.217723 -0.626255 0.0107463 0.189695 0.582621 0.635743 -0.0022223 0.106678 0.816438 -0.113128 -0.0460187 -0.00372184 0.166033 3.26077 -0.163746 2.5989 0.00113218 0.0494019 -0.013009 4.5665 0.00891497 1.13175 0.224784 0.294804 0.0455675 0.697414 -0.351187 4.0688 -0.0480845 0.0637156 -0.284146 -1.0665 -0.266773 -0.243553 0.0929385 -0.00258331 -0.058322 -5.76772 -0.469017 -1.85321 -0.198791 0.343551 0.77611 0.0958103 0.00224627 0.293184 -0.183981 -0.266589 -0.219225 -3.51177 1.01704 -0.30215 -13.6371 1.2741 -3.04637 0.250186 0.663831 -4.33984 0.137195 -0.218946 0.763102 -0.662853 -0.00399035 0.0424236 -0.147892 0.699004 -2.28749 0 0 0 0 0 -0.000572768 -0.0122429 0.0013832 0 0 0 0 0.000233102 0 -0.00563371 0 0 0.00021304 -0.000441356 -6.23395e-05 0 -0.000362274 -0.000972002 -0.0049409 0 0 0.212688 -3.76226e-05 0 0.018234 0.335564 0 0 0.0312005 0.00131485 0 0.111062 0 0.00993418 0 0 0.00140741 0 0 0.273619 0.00326104 0.00431728 0 0.0194289 0.0293252 0 0 -0.142293 0 -0.00261144 0.13325 0.00530356 0 0 0.000123613 -0.00437885 0 0.0134666 0.0199628 -0.00593936 -0.319766 0.00294566 -0.0210652 0 0.00351713 -0.0128472 -0.0609992 -0.0180322 -0.0158933 0 0 0 -1.32783 0.0613357 -0.1712 -0.0233521 0.0551125 -0.136875 -0.000210197 -0.000765136 0.00328331 -0.00805303 0 0 0 0 0 0 -0.178193 0 0.0224241 0 0 0 0 0.353177 -0.312161 0 0 9.04847e-05 0 -0.00786318 0 -0.0172724 0 0 0.741893 0 1.12597 0.145659 0.0103939 0.138376 0 0 -0.132151 0 -3.36062 0 7.32253 0.278508 0 0.922608 2.71981 0.00146308 0 0.0559815 0 0 -0.0463139 0 -0.36784 1.22434 0 0 0.24698 0 0 -0.28906 -6.04687 -0.195493 0 -0.36262 0 -1.4814 -0.0290954 0.0159716 0.319899 -0.185688 0.0556119 0.118033 0.0723306 -0.332661 0.503984 0.126622 0 0 0 0.114245 0.0108935 0 0 0 0 -0.036632 -71.6008 -1.96918 -12.3408 -1.48667 1.37673 -4.80758 -0.0544049 0.0485572 -0.00998656 -0.617428 0 0 0 0 0 0 +412 0 0.291005 0.342907 -0.0438231 -0.423026 0.373597 0.279568 -0.545173 -2.49165 -0.389314 0.875763 -0.332086 0.0174419 0.00315742 -1.79371 -0.036829 1.53325 5.65197 0.109035 -0.0480371 2.59434 -0.0336684 -0.168419 -0.00327404 0.00626055 -0.564289 0.482604 -0.00695393 -0.0301514 2.52218 -0.220515 -0.0373129 -0.498521 -0.543974 -0.000680298 -0.20516 -0.032652 0.121233 -2.33497 -1.02523 1.3936 0.0395534 -0.112475 -0.0974964 -1.07861 0.45666 0.697369 0.663182 -0.753484 0.402036 -0.501145 0.630125 2.27161 0.146961 -0.189007 0.15958 0.867122 0.439426 0.160901 -0.337625 -0.126373 -0.10969 -0.410453 0.0515461 0.6063 0.169213 -0.315652 -0.47946 -0.104739 0.0801632 -0.594204 0.268772 -0.875553 0.0472092 2.75054 0.515386 0.686058 11.11 -2.40814 9.13881 0.0960534 1.5941 -1.87567 -0.303766 0.708245 -1.68188 2.0812 -0.204401 0.525375 -1.46094 3.64707 -9.9026 0 0 0 0 0 -0.0438231 -0.423026 0.00679595 0 0 0 0 0.00110157 0 -0.0329096 0 0 0.00444932 0.00448358 -0.0187643 0 -0.0035311 0.00859693 -0.184734 0 0 -0.0491511 0.000326525 0 0.020095 0.565502 0 0 -0.0114715 0.102028 0 0.00880042 0 -0.0132026 0 0 -0.00219102 0 0 -0.208427 0.0154388 0.0615438 0 0.0952359 0.0436004 0 0 0.0103582 0 0.000223869 0.0174763 0.00311159 0 0 -0.00662045 -0.014272 0 0.00832552 0.0113912 0.000306056 -0.178804 0.0230961 0.0012777 0 0.0232945 -0.0200274 -0.0242137 0.0161534 -0.0456775 0 0 0 1.80786 -0.187351 0.501094 0.0460885 -0.080878 0.145616 -0.0050741 0.00848863 -0.0170576 0.0439508 0 0 0 0 0 0 0.373597 0 0.279568 0 0 0 0 -0.593883 -0.25711 0 0 0.701512 0 0.0745941 0 0.00773231 0 0 0.837124 0 -0.877924 -0.240617 0.160414 0.0579155 0 0 -0.132474 0 6.00294 0 -2.63383 0.105249 0 -1.64554 -1.49449 0.0168787 0 -0.0963388 0 0 0.031825 0 1.06598 2.58513 0 0 0.228951 0 0 0.183614 0.358893 0.329933 0 0.259814 0 -0.320795 0.210809 -0.215172 -1.09786 -0.101819 1.44831 0.320678 0.129911 -0.645681 -4.12462 0.188034 0 0 0 -0.101969 -0.197593 0 0 0 0 -0.0300184 24.1794 -5.94144 15.3832 -1.56742 1.19656 1.23095 -0.49062 0.421041 -0.49809 1.17336 0 0 0 0 0 0 +413 0 0 0 0 0 -0.0228797 0.321832 0.340268 0.453276 0 0 -0.0537688 1.09905 0 3.8548 0.0783371 0 0 0 -0.0725027 1.87499 0 0 0 0 -0.18939 0 0 -0.711782 -1.23299 1.12003 0 -0.0867087 0 0 -0.0497169 -0.0152489 0 0 0.186874 1.72274 0 0 -0.117985 3.82603 0 1.21993 -0.715086 -0.896884 0.307087 1.80627 0.36303 0 0.525657 0.376852 -1.21631 -5.07272 0.418572 0.26989 0 0 0.804689 -2.57192 0 -0.571518 -0.365534 -0.970028 0 0 0 0 0.503822 -0.9334 0 -4.30269 2.77701 0 0 0 -0.435738 0 -0.332929 1.22055 0 -0.428137 0.552705 -2.22993 0 -0.588482 0.34232 -2.36341 7.89383 0 0 0 -0.108952 -0.0050937 0 0 0 0.0937307 -0.0242255 0 0.0192539 0 0.0179813 0.0805791 0 0 0 0 0.108508 0 0.023331 0 0.503656 0 0.36692 -0.52143 0 0.000713473 0 0 0.104089 0.00374495 -0.0845998 0 -0.00630362 0 -0.00194675 -0.308285 0.0223779 0.0693197 -0.0705453 0 0.00107961 0 0 0 -0.000679967 0 0 -0.0113037 -0.00877344 -0.0870429 0.00707229 0 0 -0.0362801 0 -0.000666785 0 0 0.0142419 -0.00784199 -0.312064 -0.0233591 0 0 0.0820228 0.0601015 0.0613139 0.266148 0.253566 0 -0.0628475 0.0133451 -0.0721032 0 0 0 -1.90279 0 -0.246866 -0.135858 0 -0.0173549 -0.0173615 -0.0518325 0 -0.00325941 -0.00310488 -0.0268402 0.159551 0 -0.0228797 -0.108952 0.321832 -0.0050937 0.111827 -0.00381174 0.219254 0.299884 -1.01855 0.00404589 0.0392547 -0.158956 -0.0053101 -0.103699 0.0547456 -0.0202512 -0.0360083 0.101272 1.09744 -0.216484 0.0630031 0.133314 -0.300079 0.182342 -0.0564995 -0.0179922 -0.561547 -0.0132705 12.2559 0.214968 0.92504 2.74918 0.0160892 0.433103 0.202054 -0.103277 0.00288416 0.055741 0.0205024 -0.282546 -0.0549247 0.00268007 5.89325 2.57077 0.00339504 0.0273774 0.43573 -0.0640479 -0.00681753 -1.24316 2.13013 1.42385 0.0767715 -4.94284 0.0176949 -1.78826 1.13993 -1.35372 0.488431 0.138016 -0.592688 1.98115 -0.292761 3.94761 -15.1353 -0.395907 -0.571896 0.0321243 0.160008 -0.175319 0.355147 -0.0371553 -0.0387021 0.000203671 -0.0992583 0.895028 -3.37011 -0.34929 -1.33798 -0.993951 -0.101535 0.372355 0.0691576 -0.386336 0.329785 -0.535009 -0.17724 -0.118485 0.124692 -0.244826 0.168207 0 +414 0 0 0 0 0 -0.239902 -0.117149 0.496438 2.15189 0 0 -0.561413 -0.265343 0 -0.570866 -0.109954 0 0 0 -0.239901 -1.18864 0 0 0 0 0.329591 0 0 0.146479 2.39529 -0.12373 0 -0.26196 0 0 0.0606356 -0.0815739 0 0 -1.56329 -0.633944 0 0 -0.358439 -1.40969 0 -0.286766 0.791032 -0.375519 0.512984 0.0468724 0.269734 0 0.692571 -0.0348117 0.137157 -1.73225 -0.286662 -1.62206 0 0 -1.9388 4.32413 0 0.972184 -0.164826 0.815223 0 0 0 0 -0.360068 -0.779101 0 -0.416626 -0.882678 0 0 0 -3.21586 0 1.98969 -3.68276 0 1.03224 -1.01702 -1.03223 0 1.92886 -1.98512 5.08252 -6.24427 0 0 0 0.147271 0.0259512 0 0 0 0.0269495 -0.0349542 0 0.00427367 0 -0.0168369 0.00113692 0 0 0 0 0.100307 0 0.0111722 0 0.134354 0 0.180559 -0.121467 0 0.00200831 0 0 -0.0452306 -0.00640383 0.0315431 0 -0.00185701 0 -0.00322373 -0.128111 0.00365743 -0.0881823 0.00211133 0 -0.00113484 0 0 0 -0.000273025 0 0 0.0124514 -0.00867087 -0.306685 0.010661 0 0 0.000944424 0 0.00349232 0 0 -0.00879514 -0.0198461 -0.116164 -0.0277967 0 0 0.11134 -0.00954487 0.05786 0.0584066 0.0386571 0 0.0662485 -0.017669 0.312 0 0 0 0.218212 0 0.0878839 0.58769 0 -0.00241423 0.0585348 0.003291 0 0.0069124 -0.0100416 0.00443437 0.285415 0 -0.239902 0.147271 -0.117149 0.0259512 -0.210857 -0.0550663 0.0210062 -0.39355 -0.294691 -0.0154319 -0.0335396 0.416508 -0.00117479 0.0406632 -0.00736306 -0.0209771 -0.0516614 -0.106795 -0.500987 -0.37242 -0.327162 -0.0833078 0.31597 -0.068306 -0.360171 0.136839 0.0753001 -0.000381488 -7.36771 -0.549547 -2.82879 -0.542759 -0.00386098 -0.491442 -1.08283 0.0421771 -0.0139422 -0.0699207 -0.102717 0.849741 -0.120282 0.0214829 -2.10039 -2.17631 -0.00435711 -0.0680907 -0.22262 -0.0215734 -0.113254 -0.961976 -2.68408 -0.764607 0.0130113 -4.20679 -0.062529 0.588882 0.103889 0.180299 -0.266244 0.113462 -1.02226 -0.271998 0.0836104 -0.469453 -12.7359 0.104196 0.0260638 0.16518 -0.296683 -0.184322 -0.0948788 0.0259519 -0.0481363 -0.00621623 0.042388 -0.141783 10.3059 1.19489 -0.752575 2.66993 -0.217085 -0.602213 -0.290719 0.905043 -0.658686 0.174352 0.186907 0.343902 -0.423194 0.597853 -0.869065 0 +415 0 0 0 0 0 -0.35018 -0.135456 0.709431 3.06753 0 0 0.192255 -0.663658 0 -0.943283 -0.227214 0 0 0 -0.461941 -0.810147 0 0 0 0 0.489357 0 0 -0.019786 -6.18752 -0.163919 0 -0.980978 0 0 0.0567405 -0.0190665 0 0 2.61509 0.0159974 0 0 0.557101 -4.60779 0 0.121816 -0.712852 -2.06612 -0.200102 2.96594 -0.0068686 0 0.959082 -0.197624 -0.356078 -0.355042 0.832435 0.485979 0 0 -0.89543 -3.14664 0 -1.55993 -1.28203 -0.744831 0 0 0 0 -0.28243 -0.695859 0 -0.560227 0.889568 0 0 0 -7.31039 0 -3.83924 6.59988 0 -2.18882 3.21446 -3.91669 0 -3.14219 5.49396 -9.01313 22.0889 0 0 0 -0.50702 -0.123004 0 0 0 -0.145783 0.0259891 0 -0.0319592 0 0.00287089 0.084165 0 0 0 0 -0.00638783 0 -0.00381185 0 0.441103 0 -0.468889 -0.891485 0 0.0115392 0 0 -0.152226 0.00231523 -0.12879 0 0.0188383 0 0.00172459 -0.13182 0.00989369 0.0446424 -0.00730564 0 7.7798e-05 0 0 0 0.00118687 0 0 0.00129324 0.00154545 0.099679 -0.0374288 0 0 -0.0136209 0 -0.00630123 0 0 0.0184374 -0.0028912 0.101996 0.0015639 0 0 0.0884352 0.0799761 -0.0209198 -0.0486481 0.266294 0 -0.251015 -0.0203244 -0.0471724 0 0 0 -0.95391 0 -0.147087 0.431827 0 -0.0132898 0.0285089 -0.0361598 0 -0.000640848 0.00293782 -0.0188265 0.204069 0 -0.35018 -0.50702 -0.135456 -0.123004 1.31728 0.175478 -1.05265 -0.447223 -0.0634736 0.0173658 0.0962965 0.409634 0.00766302 0.104943 -0.184691 -0.0721378 0.0855437 -0.136085 0.117431 -0.687865 0.119545 0.143409 0.559871 0.0330413 0.480154 -0.374258 -0.116598 -0.0327355 3.06725 1.10143 0.988219 0.400388 -0.0330563 -0.129676 0.605167 0.0892401 0.0310203 -0.00641624 0.257932 -2.52311 -0.132202 -0.0450903 1.23922 -0.319538 0.0158311 0.109726 -0.0335777 -0.18464 -0.444192 1.22267 -1.95729 1.85292 -0.279211 -0.427502 0.516193 -0.90548 0.944476 -1.46249 0.406151 0.340545 -1.07604 -0.472247 -0.144445 -2.05487 -12.2325 -0.914499 1.24249 -0.371849 0.183991 -1.4395 0.318421 -0.227224 0.274562 0.121227 0.0284062 0.81379 -3.60028 -1.42867 -1.2249 -0.616868 -3.03715 7.41696 -0.264476 -0.873981 1.54471 -0.204328 0.238168 -1.05709 1.70807 -2.06137 3.4161 0 +416 0 -0.689269 0.123343 0.149684 -0.108142 -0.00371067 -0.28082 0.133138 0.603828 -0.0437285 -1.48313 0.096425 -0.875176 -0.180131 -1.32487 0.257908 0.65791 0.753503 -0.61234 0.618888 -3.09463 -0.348246 -0.265626 0.18736 -0.977931 0.56363 0.245805 0.550277 0.411937 0.8891 -0.330853 0.331843 0.932311 -0.520954 1.63091 0.259962 0.126883 1.95725 0.802202 0.674952 -1.4682 -0.436764 5.59606 0.440895 -3.79919 -0.984571 -0.7712 0.700519 2.43226 -1.40682 0.788026 -2.27652 -1.10403 -0.915238 0.0495304 0.476916 4.07665 -1.88844 -0.769811 1.45463 0.763672 0.00801675 3.83432 0.792063 -1.1581 -1.6002 1.23085 1.73628 1.67254 0.0249252 1.81175 -0.636795 1.91888 -1.81979 3.78904 -1.62724 -5.1989 -6.18976 3.01818 -2.56934 1.78672 -0.460965 -2.20573 2.70027 -1.89387 1.39518 0.943872 1.64493 -1.82496 1.52162 -0.413419 -4.08954 0 0 0 0 0 0.149684 -0.108142 0.00447617 0 0 0 0 -0.00184556 0 0.0107153 0 0 0.00362531 0.024688 -0.00289395 0 -0.00677227 -0.233832 -0.00719655 0 0 0.108701 0.00162657 0 0.0934144 -1.80614 0 0 0.00145833 -0.568865 0 0.181009 0 0.249151 0 0 0.031292 0 0 1.14544 -0.0233903 0.0655201 0 0.0769448 -0.00602761 0 0 0.17862 0 -0.00967872 -0.239992 0.0161216 0 0 -0.00752991 -0.0195376 0 -0.0112997 -0.12116 0.00119168 1.15888 -0.0293712 0.0263161 0 0.0550704 -0.0104162 -0.173774 0.0318851 0.0474307 0 0 0 -5.82017 -0.391814 -0.108553 -0.0565436 0.0180168 -0.118401 -0.00300134 0.000620295 -0.0149692 0.0477874 0 0 0 0 0 0 -0.00371067 0 -0.28082 0 0 0 0 -0.410269 1.56214 0 0 0.632921 0 0.0706423 0 0.0527827 0 0 -0.387947 0 0.317849 -0.00169168 0.51182 -0.0613216 0 0 0.514826 0 -2.02043 0 3.10166 -0.962946 0 -0.302864 1.24279 0.0671367 0 -0.0263464 0 0 0.191799 0 -1.61272 -1.23091 0 0 -0.176806 0 0 -0.0722091 -2.90069 -0.273007 0 1.56072 0 1.71216 -0.54438 0.407561 0.466945 0.198351 -0.343696 -2.16607 -0.18742 -1.55012 7.2659 -0.222826 0 0 0 0.271847 0.115 0 0 0 0 -0.405461 -25.721 -5.32404 2.28719 -2.1927 1.64248 -1.99372 -0.647916 0.503381 -0.368072 0.124825 0 0 0 0 0 0 +417 0 -0.30387 0.00853524 0.0208568 0.246318 -0.0919134 0.0597052 0.27 0.619722 0.163863 -0.957637 0.308256 1.23298 0.0126478 1.07844 0.066499 1.1576 1.87357 -0.101716 -0.0509908 1.18328 0.00274892 0.0839376 -0.0122037 -0.250978 0.214045 0.562507 -0.0659544 -0.0232628 0.133654 0.307458 -0.00644969 0.358119 0.410363 -0.248968 0.0627689 0.0381082 -0.432209 2.562 0.356185 0.453364 0.0380528 -1.06639 0.0224296 3.71569 0.0652506 0.213383 -0.0407268 -0.0762618 0.146301 0.09716 -0.296717 -1.98182 -0.143597 0.577749 -0.415284 2.00069 1.47796 1.13503 0.153499 -0.128947 1.24363 -2.47907 -1.39716 0.260009 -0.367675 -0.471572 0.480085 1.3365 -0.137971 -0.0961778 0.212205 0.564174 0.451074 -0.109434 0.233479 1.21227 -8.36142 0.686243 -2.01217 -1.26418 -0.203593 -0.774818 1.58426 -1.35736 0.896509 0.057563 -0.109015 -0.213961 -0.261713 -0.647964 -0.61476 0 0 0 0 0 0.0208568 0.246318 -0.0104672 0 0 0 0 -0.00304585 0 0.0236576 0 0 -0.0132927 -0.0535551 0.0585124 0 0.0088609 -0.123101 0.152248 0 0 0.610721 -0.00372344 0 0.0608946 -0.287163 0 0 0.084702 -0.276171 0 0.218733 0 0.174992 0 0 0.0246615 0 0 0.431322 -0.0428883 -0.189756 0 -0.144977 -0.0525444 0 0 0.436141 0 -0.0239461 -0.247742 0.0195368 0 0 0.020259 0.018631 0 -0.0498767 0.123315 -0.0133139 0.719225 0.0159347 0.0394114 0 -0.020452 -0.0368667 -0.272329 0.174254 -0.0320946 0 0 0 0.114325 0.259712 0.107825 -0.0275828 0.0383756 -0.031415 0.0149201 -0.0158356 0.0152312 0.0309203 0 0 0 0 0 0 -0.0919134 0 0.0597052 0 0 0 0 0.180158 0.169174 0 0 -0.67225 0 -0.0675414 0 0.00615398 0 0 0.721383 0 -0.132905 0.0274379 -0.293996 0.105805 0 0 0.0743183 0 2.96642 0 0.139718 0.612353 0 0.16495 -0.111532 -0.0323333 0 0.0244764 0 0 0.00459779 0 1.64413 1.35662 0 0 0.212829 0 0 -0.0799115 0.706221 0.211502 0 1.25764 0 -0.252016 0.572637 -0.341674 0.179341 -0.234294 0.441748 0.428904 -0.0128931 -0.0101054 5.36633 0.170419 0 0 0 0.147114 -0.0194303 0 0 0 0 0.186329 5.72687 3.95668 -1.45547 0.18736 0.0839182 -0.163754 0.613336 -0.390946 0.273699 -0.00209143 0 0 0 0 0 0 +418 0 -0.41601 -0.352066 -0.147388 -0.330406 0.60379 0.279262 -0.906291 -2.71624 -2.11363 1.85959 0.334988 -0.527456 0.0755162 0.203022 0.251675 1.64699 -2.03785 0.825953 0.443427 -3.11811 0.319838 0.672766 -0.168222 0.688988 -1.09977 0.957568 0.00146586 -0.580577 -2.11748 0.0548441 -0.592287 1.32165 2.51745 0.347685 -0.494335 0.0508708 -0.622071 7.81861 0.95338 -0.499064 0.0503287 -1.25414 0.100091 -0.438045 -0.338213 0.380018 -1.01416 2.47233 -0.278036 3.20852 -0.638516 -10.9271 -0.378058 0.080999 -0.127275 0.515245 -1.31425 -1.34314 -0.222822 -0.0966037 -3.10478 2.24095 -6.25323 0.826732 -1.73037 2.19474 -1.71955 0.716838 1.37701 0.355556 -1.81728 1.56511 1.6124 1.11868 0.531921 -0.351607 -36.9558 -11.6639 10.5575 -8.73271 6.71824 -8.25676 -2.32073 1.50822 -1.34866 3.03592 0.565054 -1.22963 2.54667 -4.90488 9.73964 0 0 0 0 0 -0.147388 -0.330406 -0.000454558 0 0 0 0 0.00174524 0 0.0207429 0 0 0.00109521 -0.00711844 0.00480921 0 0.012735 0.159027 -0.0323862 0 0 0.0680556 -0.000533282 0 -0.00990742 -1.2238 0 0 -0.0150587 -0.0250192 0 0.158244 0 -0.0819512 0 0 -0.0189888 0 0 0.925488 0.0256449 0.0203756 0 -0.00257856 0.0501773 0 0 0.1632 0 0.00494947 -0.260831 -0.00260965 0 0 0.00141269 0.00337453 0 -0.0387142 0.0633857 -0.00765132 0.600649 0.0562115 0.0421873 0 0.00649058 0.00868329 0.0173935 -0.0296469 -0.0739424 0 0 0 -2.04097 0.00457196 0.0287175 -0.0707768 0.0740213 -0.107189 -0.00034871 -1.53543e-05 -0.00497773 0.0209322 0 0 0 0 0 0 0.60379 0 0.279262 0 0 0 0 -0.204476 0.763842 0 0 0.867899 0 0.1056 0 0.0960215 0 0 -0.837211 0 -0.480507 -0.103565 0.265374 -0.115169 0 0 0.666484 0 -6.35082 0 -0.278495 -0.5285 0 -1.14424 -0.32571 0.0231711 0 -0.0142209 0 0 0.0996735 0 -1.84619 -1.31321 0 0 -0.19971 0 0 0.150466 -2.78916 -0.756304 0 1.51325 0 1.96311 -0.742399 0.766045 0.620608 0.211724 -1.23533 -2.05063 -0.0590516 -0.99801 11.4538 -0.300544 0 0 0 0.110322 0.0206351 0 0 0 0 -0.237421 -2.57965 -4.89678 7.00058 -0.923027 0.262949 0.663243 -0.792453 0.594149 -0.515179 0.713914 0 0 0 0 0 0 +419 0 0.128817 0.0024062 0.0198392 -0.063754 0.0212097 -0.164627 0.372319 0.300718 0.291982 -0.327354 0.483854 -0.967011 -0.00773403 -2.34036 -0.0571135 0.00939729 0.249166 -0.170846 -0.12644 -1.0036 -0.0566145 -0.00876429 0.0115344 -0.264547 0.110758 0.0168845 -0.0644639 0.249142 -1.01828 -0.636382 0.0614643 -0.377338 -0.0346249 -0.0616528 0.0270878 0.0481824 0.164699 0.210016 0.739031 -0.803682 -0.0406933 1.09432 0.105114 -4.32608 -0.113897 -0.604218 -0.190858 -0.736626 -0.278994 0.532928 -0.785538 -2.61392 0.202729 -0.571255 0.408322 3.35198 1.65084 0.389637 0.374871 0.121591 0.368752 -0.710576 -0.207057 -0.480136 -0.590965 0.559085 -0.105459 0.188964 -0.116229 0.382275 -0.515039 0.368508 -0.0685571 -0.524472 -0.543592 1.60941 -2.56341 -1.319 1.72826 -1.57816 1.20268 -0.317387 0.178857 -0.404354 0.840549 -0.584712 0.120047 -0.429516 0.58321 -0.66026 0.832814 0 0 0 0 0 0.0198392 -0.063754 -0.000331416 0 0 0 0 -0.000503971 0 0.01946 0 0 0.0015458 0.00529342 0.00456413 0 0.000686703 -0.023464 0.0678047 0 0 -0.0204589 0.000327905 0 0.0221534 -0.584168 0 0 -0.0104166 -0.12975 0 0.0988494 0 0.0344435 0 0 0.00313525 0 0 0.706981 -0.00592316 0.0288917 0 0.00782165 0.00855993 0 0 0.120686 0 -0.00566805 0.0366972 0.00553712 0 0 -0.00361919 -0.00221008 0 -0.00836685 -0.000336674 0.000840452 0.248878 0.0137588 0.0263538 0 -0.00533504 0.00300149 -0.232107 0.0547562 0.00503153 0 0 0 -3.87929 -0.224881 -0.343505 -0.043357 0.0174197 -0.0725325 -0.00123516 -0.000563482 -0.00260513 -0.00791996 0 0 0 0 0 0 0.0212097 0 -0.164627 0 0 0 0 0.44452 1.46459 0 0 -0.357427 0 -0.0669942 0 0.0718481 0 0 -0.602793 0 -0.161979 0.0295148 -0.476264 -0.0942168 0 0 0.632022 0 -1.33034 0 -1.45553 -1.21109 0 0.38359 -0.669 -0.0682036 0 0.0376918 0 0 0.158445 0 -2.08016 -0.985132 0 0 -0.165813 0 0 -0.0930581 -0.542292 -0.456523 0 1.66487 0 0.515372 -0.613638 0.538036 0.0852537 -0.0380503 -0.116125 -0.671671 0.0264127 -1.45357 7.58254 0.0994414 0 0 0 0.337539 -0.0756498 0 0 0 0 -0.418216 -2.98125 0.369087 -1.94373 1.26361 -1.08076 0.581871 0.315792 -0.316488 0.30834 -0.347303 0 0 0 0 0 0 +420 0 -0.497078 -0.262318 0.00516672 0.150686 -0.17412 -0.0534645 -0.000181503 0.804335 -0.0565624 -0.894024 0.0218146 -0.403033 0.000853537 -0.345119 -0.0120493 -2.79938 -9.64577 -0.236281 -0.0385278 1.0776 -0.0361675 0.0114949 -0.00240327 -0.136583 0.0999482 -0.833023 -0.0623103 0.0291527 -0.146263 -0.152264 -0.0122509 -0.253411 0.211329 -0.424518 -0.0621458 -0.00430692 -0.356882 2.10187 -0.0143833 0.356449 -0.0023808 -1.8662 -0.0209731 -0.728546 -0.116364 0.124908 -0.128536 -0.587421 0.0594604 -0.663849 -0.221681 5.54533 -0.136465 -0.0476456 0.105903 -0.11932 -0.986924 0.115203 0.0997399 -0.0112503 1.20342 -0.199242 -0.387707 -0.665033 0.883532 -0.21743 -0.323333 -0.612305 0.0248084 0.213627 0.134686 -0.199134 0.356231 0.866341 0.0378781 -0.429187 -6.25667 1.68846 -3.36597 0.0772599 -0.238137 -1.00631 0.909822 -1.0049 1.62861 -1.78449 0.122648 -0.0333359 0.124665 -0.0455471 0.119623 0 0 0 0 0 0.00516672 0.150686 -0.00325618 0 0 0 0 -0.000306822 0 0.0112092 0 0 -0.00501491 -0.00873413 0.00738317 0 0.00132416 -0.00881966 0.0655527 0 0 0.0247891 -0.000599219 0 0.00678213 -0.0042947 0 0 0.00245598 -0.0699052 0 0.0631496 0 -0.00076018 0 0 -4.93495e-05 0 0 0.103044 -0.00438106 -0.0725279 0 -0.044997 -0.014759 0 0 0.104181 0 -0.00718719 -0.15681 -0.000202189 0 0 0.0074792 0.00597835 0 -0.0180262 0.00372953 -0.0033854 0.240602 -0.0227034 0.0104102 0 -0.00165622 0.000517914 0.00751058 0.0700733 -0.0322899 0 0 0 0.237979 0.118228 0.0354104 -0.0052895 0.0106623 -0.0146205 0.00547597 -0.0058205 0.0088571 -0.00881228 0 0 0 0 0 0 -0.17412 0 -0.0534645 0 0 0 0 0.258 -0.7177 0 0 -0.639941 0 -0.0573627 0 -0.0395002 0 0 -0.28108 0 0.364431 0.0977918 -0.276097 -0.0280788 0 0 -0.350611 0 -2.65907 0 2.2731 -0.311867 0 0.732671 0.804926 -0.0247146 0 0.0355791 0 0 -0.0834229 0 -0.854651 -0.415848 0 0 -0.0236284 0 0 0.407384 1.34361 -0.410899 0 0.448944 0 -0.650894 -0.507283 0.424406 0.135668 -0.211033 0.36007 0.289233 -0.0411943 -1.41998 -4.35285 0.145205 0 0 0 -0.274258 0.0235653 0 0 0 0 -0.0780006 -10.0166 2.65635 -4.14745 -0.368789 0.562066 -1.3376 0.478829 -0.370435 0.340529 -0.461336 0 0 0 0 0 0 +421 0 -1.11997 -0.0969136 -0.0883432 -0.536777 0.605759 -0.0976424 0.595486 -2.17067 -0.232629 2.80808 0.253798 -0.22462 0.012691 0.438467 0.0677408 -1.2519 -2.67954 0.516216 0.133207 -1.97988 0.0314543 -0.0881175 -0.0116256 0.477878 -0.0546099 -0.55353 0.00666032 0.5701 0.57158 0.13188 -0.0533885 0.334481 0.102357 0.28953 0.47099 0.0168418 0.213512 3.02151 -0.194379 -1.4344 0.0817851 1.16486 -0.0643047 -0.259767 0.512703 -0.872813 0.407602 0.589583 0.108248 0.379189 0.272123 4.99416 -0.283728 0.00854007 -0.537765 0.0906361 -1.19144 0.0144347 -0.342286 -0.0507115 -1.20871 2.49132 -2.51785 1.67 0.142535 -0.213181 -2.99865 -0.614581 -0.0135194 -0.291003 -0.689524 -0.10748 -0.314803 2.19044 0.526266 -0.804546 -16.1489 -5.99756 4.12077 -4.43069 2.26973 -0.630311 -2.3306 1.49725 -1.88014 2.31678 -0.540387 0.282714 -0.510881 0.280466 -0.467472 0 0 0 0 0 -0.0883432 -0.536777 0.00454394 0 0 0 0 0.00113305 0 0.0147035 0 0 0.000975891 -0.00257412 0.000201538 0 0.00340201 0.0279686 -0.020443 0 0 -0.424941 -0.000217845 0 -0.0255778 -0.511683 0 0 -0.0591142 0.00916874 0 -0.0362373 0 -0.0983087 0 0 -0.0129263 0 0 0.396274 0.0170765 0.0203106 0 0.0736536 -0.000703977 0 0 0.0536555 0 0.0068329 -0.00788258 -0.0071039 0 0 0.00335185 -0.0111572 0 -0.00811494 -0.0016739 -0.0185729 -0.21356 -0.00422747 0.0262309 0 -0.00817268 0.0215805 0.0219431 -0.0483675 -0.0141127 0 0 0 -2.1536 -0.151592 -0.0591624 -0.0147173 -0.000637642 -0.0419224 0.000536163 -0.00183993 -0.00220866 0.00317236 0 0 0 0 0 0 0.605759 0 -0.0976424 0 0 0 0 -0.0532924 -0.787694 0 0 0.78633 0 0.107222 0 -0.0345258 0 0 0.21789 0 0.528203 -0.118063 -0.103761 0.0367552 0 0 -0.348428 0 3.42614 0 0.862972 0.0233788 0 -1.1971 0.379554 -0.00342871 0 -0.0125648 0 0 -0.0803038 0 0.275842 1.24719 0 0 0.153323 0 0 0.132298 -1.12408 0.409065 0 -0.979 0 0.185276 0.217751 -0.305566 -0.108539 0.0594972 -0.0883175 -0.286003 0.040693 0.260731 -9.72587 -0.109582 0 0 0 -0.264536 0.0177837 0 0 0 0 0.255693 -10.8103 -7.33501 8.81453 -2.35025 1.37731 -0.0142025 -0.528739 0.389762 -0.471618 0.830868 0 0 0 0 0 0 +422 0 0 0 0 0 0.0763614 -0.155057 -0.374892 -0.822279 0 0 -0.512341 -0.678678 0 -1.38957 0.0254302 0 0 0 0.144779 1.5159 0 0 0 0 -0.0874136 0 0 1.06862 2.80204 -0.442121 0 -0.0773484 0 0 0.0612464 -0.0783716 0 0 -0.535663 0.241132 0 0 -0.106372 -2.161 0 -0.29206 1.84755 -0.00501518 0.672886 -1.75433 0.586335 0 -0.0673616 0.241112 0.262678 -0.451594 -0.673629 0.134087 0 0 -0.0981543 0.486815 0 -0.011925 0.602911 0.198316 0 0 0 0 -0.144211 -1.20419 0 2.57556 -1.42864 0 0 0 2.13753 0 1.61318 -3.53762 0 1.02718 -1.88792 2.77491 0 0.515763 -2.3739 4.81383 -12.5353 0 0 0 -0.0755649 0.00287386 0 0 0 0.0242349 0.00808218 0 0.00487037 0 -0.00127343 -0.0108868 0 0 0 0 -0.100534 0 -0.0047499 0 -0.208161 0 0.100909 -0.283569 0 0.00167791 0 0 -0.0503033 -0.000761369 -0.0384134 0 0.000578581 0 0.000593712 -0.137927 0.00163321 -0.0144188 -0.0185753 0 -8.6258e-05 0 0 0 4.4192e-05 0 0 0.0057687 -0.000566541 0.135617 -0.0061637 0 0 -0.0216062 0 -0.00748432 0 0 0.000544243 -0.0219236 0.124041 0.00750766 0 0 -0.0883603 -0.0183397 -0.0505868 0.0744563 -0.0793379 0 -0.0676478 -0.00899261 -0.0177531 0 0 0 0.828494 0 0.0928236 0.244113 0 0.00548869 0.0113643 0.0401288 0 0.00131599 0.00449994 0.000231487 0.025222 0 0.0763614 -0.0755649 -0.155057 0.00287386 0.208846 -0.0187263 0.183176 -0.706468 0.717083 -0.00545614 0.0511945 0.967473 -0.00125061 0.109355 0.0182034 -0.0156545 0.0461879 0.0137553 0.355749 -0.412346 0.0860054 -0.19982 0.538548 0.135297 0.341738 0.0268654 -0.0370541 -0.0148173 -1.11969 0.181473 1.39331 -1.00559 0.0012201 -1.03673 0.341533 0.0634524 0.00105922 -0.130055 0.017819 -0.0842901 0.0672239 0.0141193 -1.8361 0.750424 0.00644524 0.0208036 0.244346 -0.0725986 0.153344 -0.648721 2.70413 1.00177 -0.138947 2.3996 -0.00393861 -1.62433 0.488192 -0.80853 -1.10799 -0.302574 0.982614 1.62093 0.103204 -1.93717 5.69872 0.578468 -0.753683 0.237793 0.260234 -0.118159 -0.250499 -0.0862344 0.0352915 0.0570822 -0.202383 -0.21611 -13.148 -6.94583 4.55835 -1.48031 0.371018 -0.687232 -1.00633 0.490535 -0.35204 0.219106 -0.027947 -0.171329 0.199902 -0.217811 -0.000177863 0 +423 0 0 0 0 0 -0.605773 -0.335299 0.5842 1.71314 0 0 -0.327661 -0.521659 0 -1.19088 -0.0900235 0 0 0 0.105476 -4.13007 0 0 0 0 0.42403 0 0 0.476509 2.11732 -0.39114 0 -0.256569 0 0 0.246693 -0.112363 0 0 -0.316022 -1.4642 0 0 -0.212899 -2.42887 0 -0.869636 0.708856 0.433551 0.318601 -2.33321 0.757932 0 -0.482301 -0.358563 0.699378 -1.6455 -1.38544 -0.0876359 0 0 1.36909 3.55185 0 1.62477 1.04125 0.617817 0 0 0 0 0.0324201 -0.351121 0 2.72034 -1.24244 0 0 0 -5.23967 0 -0.500125 -1.9707 0 0.0105366 -0.787161 -2.81275 0 0.553244 -1.41053 2.9674 -10.8595 0 0 0 -0.122453 0.00974052 0 0 0 0.0450652 0.0245811 0 0.00686021 0 0.00647577 0.0922348 0 0 0 0 0.0619344 0 0.034935 0 0.209389 0 0.299645 0.277387 0 -0.00483702 0 0 -0.299033 0.00559224 0.0419855 0 -0.000119746 0 0.00159278 0.0712804 -0.0352009 0.077979 0.00166676 0 0.000466327 0 0 0 -3.22134e-05 0 0 -0.00723174 -0.0129338 0.142416 0.0125547 0 0 0.00642593 0 -0.0145688 0 0 0.0291801 0.0404225 0.0485517 0.0639971 0 0 -0.173465 -0.139844 -0.0488102 -0.0859071 -0.202187 0 -0.00204652 0.0522579 0.0204255 0 0 0 -0.244922 0 -0.0809437 0.313878 0 0.00913202 -0.0125674 -0.0735994 0 -0.00592644 0.0178232 -0.0456775 0.116686 0 -0.605773 -0.122453 -0.335299 0.00974052 -0.162704 -0.119552 0.15735 0.261206 0.0747564 -0.0143313 0.0341436 -0.494735 -0.00532593 -0.0893799 0.0379999 -0.00771219 0.0286927 0.0906132 0.928546 -1.20625 -0.242199 0.099929 0.0333623 0.159222 0.160576 0.241105 -0.0965856 -0.0329055 1.86617 -0.468213 -2.06388 0.0753301 0.00852283 1.28862 -0.557807 -0.0075418 -0.00868629 -0.000108765 -0.0727348 1.67236 0.0535208 0.0376846 0.891595 0.284882 0.0042528 -0.0483555 0.077668 -0.194839 -0.1664 -0.603927 0.163955 -1.03282 0.105841 -0.0296884 -0.109759 -0.920652 0.091842 0.403601 0.492557 0.267911 0.204773 0.812453 0.0627882 -0.798502 -1.97462 -0.0635041 0.093922 -0.0164625 -0.179399 0.137684 0.231694 0.180653 0.022628 -0.240011 0.0947136 -0.170583 19.4759 5.86125 -7.81447 1.66908 0.506243 -5.89078 0.347735 0.356892 -1.3605 -0.416793 -0.184101 0.548779 -1.14626 1.31579 -2.46862 0 +424 0 0 0 0 0 -0.740001 -0.415155 1.43309 3.49505 0 0 1.35322 -0.699594 0 -1.50008 0.0781116 0 0 0 -0.0928247 -2.87982 0 0 0 0 0.832697 0 0 -0.0339524 -10.0419 -0.434071 0 0.614287 0 0 0.451152 0.174085 0 0 4.98325 -2.22161 0 0 0.946638 -3.17191 0 -1.18076 -2.16235 -0.0168304 -2.04432 0.926535 -2.11324 0 0.0818547 0.511049 -0.137793 0.0769771 0.169673 0.092138 0 0 0.52126 1.13084 0 -0.884579 -0.719772 -0.380937 0 0 0 0 0.819392 3.98132 0 -1.01091 -0.676883 0 0 0 -6.4417 0 -9.05496 14.9422 0 -4.89619 7.43281 -10.0261 0 -6.25434 11.1697 -21.1845 38.9006 0 0 0 -0.570548 -0.136033 0 0 0 -0.122312 -0.0120241 0 -0.0242966 0 0.0241346 -0.112639 0 0 0 0 -0.208182 0 -0.0520814 0 -0.422702 0 -0.466007 -0.617277 0 -0.0177641 0 0 -0.600656 0.00807508 -0.132101 0 0.0131076 0 -0.000925156 -0.0768659 -0.109039 0.108694 -0.0106296 0 0.00177106 0 0 0 0.000927679 0 0 -0.0104211 -0.00259853 -0.331584 0.0215958 0 0 -0.0515804 0 -0.000235996 0 0 0.0117281 0.0421351 0.184348 0.015055 0 0 -0.100638 -0.00990462 0.0182257 0.178329 0.275287 0 0.108277 0.00926402 0.142499 0 0 0 1.28533 0 -0.125669 0.885447 0 0.0149889 -0.0455461 0.280983 0 -0.00824505 0.0414734 -0.104067 0.328751 0 -0.740001 -0.570548 -0.415155 -0.136033 0.953976 0.229489 -0.416645 0.512964 0.650672 0.210234 -0.0650943 0.344638 0.037498 0.150089 -0.122695 0.121312 -0.0188159 1.02608 -0.68577 2.04295 -0.389876 0.0299722 -0.287782 -0.110778 -0.473519 -0.179043 0.882495 0.0510862 -0.421661 0.0996017 -3.0474 -0.513039 -0.0270433 0.499092 -1.25903 -0.00269992 -0.00867968 0.0606989 0.00241923 -1.31423 -0.00517973 -0.0285996 -0.189007 -0.831366 -0.00186111 -0.0635891 -0.101917 0.314326 -0.063823 -0.503371 2.09459 0.816949 0.197386 -0.0991761 0.0148674 -1.67503 0.764729 -0.78718 0.354284 0.668416 -2.26906 1.74066 -0.50255 -0.675598 6.14571 -0.329092 0.0570639 -0.0125794 -0.044812 0.615593 -0.189085 0.116068 -0.421073 0.11192 0.13788 -0.496617 28.757 3.58158 -3.13091 -1.74561 -2.08811 7.75236 -2.10357 0.647243 0.748099 0.0605564 -2.08472 1.06425 -0.168244 -0.511586 1.90546 0 +425 0 0.0631056 0.191912 0.0162115 -0.0815671 0.0384698 0.0190623 0.733991 1.04852 0.386433 0.388804 0.11273 0.951468 -0.00807286 1.23121 0.0346637 1.66748 7.24932 0.0375724 0.044161 -1.59224 0.0462088 0.191764 0.00939373 0.0864993 0.486765 0.371074 0.132956 -0.183008 -1.16412 0.453169 0.0579588 0.258625 0.136002 0.325564 0.305169 0.0353706 0.500909 0.121294 0.407132 -0.534261 -0.0396822 1.70399 0.104816 2.23861 -0.109796 0.0166912 -0.414791 0.335982 -0.453271 2.6428 -0.337764 0.532061 0.13923 0.0836354 -0.028587 -0.749541 1.078 -0.293315 0.284192 0.146361 -0.803419 0.778121 -0.295808 -1.17121 -1.77464 -0.71451 1.18056 1.80458 0.00706964 0.26371 0.226651 0.945826 -0.320243 -2.52969 -0.133706 0.837628 2.839 1.1063 -1.7595 -0.374602 0.207817 0.324491 -0.601121 0.202088 0.54809 -3.39737 0.263792 -0.679588 1.70886 -3.17093 6.58255 0 0 0 0 0 0.0162115 -0.0815671 -5.69251e-05 0 0 0 0 -0.000611396 0 0.00889751 0 0 -0.000779506 -0.00206569 0.0100891 0 0.00275906 -0.025865 0.00277766 0 0 -0.0752364 -0.000137862 0 -0.0464332 -0.693391 0 0 -0.000847747 -0.173054 0 -0.215821 0 0.00343471 0 0 0.00158899 0 0 -0.538616 -0.0084405 -0.0148943 0 0.00214358 -0.00472533 0 0 -0.16178 0 0.000517417 -0.0669208 0.00213151 0 0 0.00526052 -0.00830667 0 -0.0142634 -0.0317892 0.000899498 -0.437403 -0.0379392 -0.00510949 0 -0.00674471 0.00460984 0.143031 -0.15404 0.0274416 0 0 0 3.90986 0.336698 0.227407 0.00931058 0.0381635 0.0130427 0.00151668 -0.000687955 0.0036089 -0.00139485 0 0 0 0 0 0 0.0384698 0 0.0190623 0 0 0 0 0.0256806 0.697901 0 0 0.154163 0 0.0125983 0 0.0300854 0 0 -0.448638 0 -0.0391216 0.00796508 -0.0337981 -0.0632847 0 0 0.230345 0 3.90412 0 -1.09487 0.780376 0 -0.0286855 -0.408319 -0.00591824 0 0.00907003 0 0 0.0926192 0 1.53938 -0.922778 0 0 -0.135702 0 0 -0.428892 -0.840134 0.0316253 0 -2.97568 0 0.924824 0.0786561 -0.0860862 0.0544214 0.243467 -0.157706 -0.894157 -0.0627464 2.04183 -0.407302 -0.172821 0 0 0 0.0457149 0.0362823 0 0 0 0 0.051922 5.60736 -0.510652 0.909191 0.2216 -0.308052 0.687421 -0.0820674 0.0107008 0.0118676 -0.0340277 0 0 0 0 0 0 +426 0 -1.05348 0.346124 -0.00034626 -0.0747579 -0.198098 0.289088 -0.358202 0.404128 -0.00805361 -0.57666 0.235323 0.771128 0.00108813 -0.459961 -0.00342907 3.62825 13.1282 -0.121609 0.00850918 0.199286 0.00282577 -0.208834 -0.00423763 -0.100727 -0.284214 1.17669 0.0763568 -0.670105 -0.658736 0.170285 -0.0114145 -0.0586598 -0.184475 -0.0443732 -0.309116 0.0196283 0.629838 0.408086 -0.00429983 0.473855 0.00885296 1.17317 -0.0120006 1.58052 0.0764014 0.699766 -0.877237 -0.0955541 0.0326113 -0.725548 -0.31791 -7.16762 -0.0405043 0.0171367 -0.128496 -4.54753 -0.249028 0.0555502 0.208894 -0.0210042 -1.16323 -0.102636 0.551813 0.0362503 0.022507 0.630983 0.00398246 0.271966 0.000799894 1.18476 -0.445481 -0.0761747 -0.811374 -0.465636 0.53967 -0.0148863 -4.70818 1.84431 -2.56492 1.48117 -1.58708 0.97374 0.966713 -1.10152 2.12976 -1.77435 -0.18356 0.137729 0.575323 -1.13081 3.72484 0 0 0 0 0 -0.00034626 -0.0747579 0.00344947 0 0 0 0 0.00109541 0 -0.0101513 0 0 0.00240889 0.00109765 0.00383183 0 -0.00121461 0.041137 -0.0184905 0 0 0.37253 3.99591e-05 0 0.070355 1.45978 0 0 0.0558229 0.288166 0 0.194362 0 0.0501827 0 0 0.00765854 0 0 0.516329 0.0152326 0.0377182 0 0.0495854 0.0592417 0 0 -0.302933 0 -0.00905438 0.2414 0.0188703 0 0 -0.00120233 -0.0157901 0 0.0316076 0.0634033 -0.00780102 -1.66069 0.033738 -0.045627 0 -0.0113386 -0.0271745 -0.0840982 -0.180024 -0.0247759 0 0 0 -2.77868 0.0744869 -0.372685 -0.0454999 0.1042 -0.261947 -0.00234879 0.000954547 0.0016204 -0.019483 0 0 0 0 0 0 -0.198098 0 0.289088 0 0 0 0 0.197112 0.21414 0 0 -0.361115 0 -0.0505031 0 -0.0106584 0 0 -0.456451 0 -0.981477 0.0695486 -0.343631 -0.0650297 0 0 0.0143566 0 -0.857817 0 0.488186 0.120174 0 0.60326 -1.17208 -0.0382281 0 0.0115051 0 0 0.0208863 0 -0.56174 -0.205901 0 0 -0.0171153 0 0 -0.181578 1.10645 -0.013802 0 -0.1611 0 -1.28368 0.218717 -0.115725 0.551404 -0.0161842 -0.600024 1.37306 -0.139069 0.143232 2.29787 -0.0385682 0 0 0 0.112353 0.174794 0 0 0 0 -0.076455 -3.40926 3.64913 -5.85939 1.24254 -1.19585 0.427558 0.41851 -0.376927 0.367302 -0.46294 0 0 0 0 0 0 +427 0 -0.677206 -0.238602 -0.154325 -0.625654 0.560233 0.310684 -1.17337 -4.62966 -0.323454 3.85572 -0.735383 1.04009 0.0452356 0.84474 -0.0749955 0.447742 3.90292 0.425511 -0.151586 3.09258 0.0263411 0.249379 -0.0316568 0.775008 -0.64893 -0.158383 -0.0288386 0.103391 2.35076 0.243954 -0.1228 -0.573708 0.831639 -0.232205 -0.216255 -0.134051 -0.10849 2.87941 -1.60642 1.01352 0.238409 -1.2391 -0.363141 4.46743 1.01051 0.385353 0.86585 -1.34992 0.693524 -2.90276 1.52319 -1.42891 0.336016 -0.783884 1.54577 0.345893 -0.378138 -0.848024 -1.18795 -0.332593 1.12285 0.244788 -1.44058 0.103908 1.71765 -0.160914 -0.540166 -1.2311 -0.121346 -1.91885 0.611301 -1.16085 0.0441366 0.713795 -2.54563 -0.48884 -9.27397 -11.1249 10.4745 -5.15006 4.97143 -6.79595 -5.83016 5.78555 -8.40302 10.5461 -2.42783 3.6831 -5.68092 8.62055 -13.2924 0 0 0 0 0 -0.154325 -0.625654 -0.000729876 0 0 0 0 0.00191584 0 -0.0492273 0 0 0.011342 0.0333159 -0.085972 0 -0.0124671 -0.0337498 -0.364596 0 0 -0.0777894 0.00241633 0 -0.0329856 -0.823527 0 0 -0.0080002 -0.136112 0 -0.199106 0 -0.0675737 0 0 -0.00761571 0 0 -0.582075 0.0271852 0.155698 0 -0.00790289 0.0665014 0 0 -0.11692 0 -0.0181104 0.0069869 0.045232 0 0 -0.0106126 -0.0117844 0 0.00760249 0.0612636 0.0127979 0.234876 0.018651 -0.00340398 0 0.00237934 -0.104367 0.25185 -0.0938845 -0.0698342 0 0 0 4.05549 -0.20114 0.921805 0.0663746 -0.0947243 0.210347 -0.0115074 0.0198127 -0.0398387 0.0913896 0 0 0 0 0 0 0.560233 0 0.310684 0 0 0 0 -0.642719 -1.0529 0 0 1.75101 0 0.222855 0 -0.0407241 0 0 0.989109 0 0.421752 -0.244556 0.608066 0.112163 0 0 -0.453811 0 4.06685 0 3.48351 0.184369 0 -1.78008 1.18787 0.0837157 0 -0.0937775 0 0 -0.0849106 0 0.946873 2.61781 0 0 0.291682 0 0 0.884557 -4.0958 0.00398666 0 0.789282 0 2.43465 -0.861315 0.386816 -1.84145 -0.0117924 1.68411 -2.93176 0.481749 -0.583306 -6.59797 0.211188 0 0 0 -0.565159 -0.484191 0 0 0 0 0.355978 -24.0203 -13.288 12.766 -3.46248 2.7373 -2.04051 -1.53069 1.2377 -1.23174 1.35935 0 0 0 0 0 0 +428 0 0.850052 0.254563 0.0445495 0.0226476 0.152197 0.194058 0.304673 0.994953 0.310103 -1.17402 0.511616 0.62482 -0.0216936 2.10564 0.0426934 0.0323446 -0.275748 -0.166705 0.077688 2.15188 -0.0344356 -0.43454 0.0196065 -0.345675 -0.142357 0.160199 0.100782 -0.660073 -1.60563 0.530525 0.0772774 0.0953003 -0.984414 0.365095 -0.204136 0.114338 0.523315 -3.12316 0.869819 1.45082 -0.0970837 1.83175 0.204084 2.59886 -0.366093 0.855536 -1.05507 0.202932 -0.640952 2.91013 -1.25413 -6.88481 0.084385 0.073452 -0.617949 -3.49569 -0.601817 -0.349202 0.766739 0.24578 -2.26898 -2.39331 -1.97387 -0.540008 -1.59426 0.224289 -0.692818 0.737514 -0.0748984 1.31397 -0.813759 0.885714 0.324504 -3.60693 1.52793 -0.783459 16.1537 9.41716 -4.13838 5.59934 -5.27873 9.28745 2.22587 -2.33994 4.28308 -3.09183 0.817045 -1.36367 2.47189 -3.33987 5.96626 0 0 0 0 0 0.0445495 0.0226476 0.000777654 0 0 0 0 -0.000249253 0 0.00935664 0 0 -0.0045391 -0.0126042 0.0233457 0 0.00327414 -0.0288108 0.0553416 0 0 0.369611 -0.000879639 0 0.063668 0.649883 0 0 0.0542365 -0.00748346 0 0.0424836 0 0.0771337 0 0 0.0111123 0 0 -0.216809 -0.00379583 -0.070417 0 0.00586199 0.065123 0 0 -0.36894 0 -0.00252705 0.048602 -0.00732281 0 0 0.00790936 -0.00649915 0 -0.00977792 -0.0461502 -0.00426368 -0.825779 -0.0688842 -0.0317947 0 0.0103583 0.0130632 -0.00810484 -0.0831761 0.0349433 0 0 0 4.07523 0.657703 0.086199 -0.0298487 0.147718 -0.187415 0.00471677 -0.0048466 0.0159131 -0.0202954 0 0 0 0 0 0 0.152197 0 0.194058 0 0 0 0 0.47672 1.2432 0 0 -0.41175 0 -0.0665625 0 0.0727336 0 0 0.0598262 0 -0.293196 0.0959425 -0.402402 -0.0130848 0 0 0.442234 0 5.3473 0 -0.679072 0.774004 0 0.592781 -0.349387 -0.0584683 0 0.0727461 0 0 0.179679 0 2.25841 -0.364318 0 0 -0.0771181 0 0 0.0358443 -0.624307 0.568455 0 -1.32419 0 -0.644428 0.436687 -0.511993 0.518677 0.0726291 0.0199145 0.293855 -0.268255 -0.103125 -0.68324 -0.0392046 0 0 0 -0.171367 0.199995 0 0 0 0 -0.080212 2.37289 2.82364 -3.48811 0.450679 -0.421993 0.570122 0.45131 -0.421343 0.428605 -0.553783 0 0 0 0 0 0 +429 0 -0.237884 -0.436152 0.0166921 -0.173086 -0.00915752 -0.165517 0.574336 1.35919 0.38432 -0.716055 -0.321699 0.480999 -0.0157461 1.76155 0.00776981 -1.49006 -3.18002 -0.202084 -0.0590944 2.51637 -0.0992904 0.418012 0.0274655 -0.343724 0.605834 -0.757884 -0.0141808 0.415605 1.60841 0.291069 0.104331 0.0421762 0.492521 0.209328 0.355503 -0.0128166 0.00640128 0.505861 -0.710798 0.579833 -0.0450927 0.590511 -0.034236 2.69848 0.031113 -0.0457172 0.776642 -0.330032 0.00263465 1.42257 -0.0147745 -1.57752 0.396466 -0.287618 0.121368 1.51572 1.37778 -0.0378327 0.546458 0.126281 -1.01342 -2.2959 1.12194 -2.01583 -0.509848 -1.08816 1.01875 -0.0362051 -0.192354 1.63626 -0.0481155 -0.0315591 -0.0760859 -3.02195 -0.142064 -0.764133 -8.20624 0.490577 -4.91345 -0.370074 1.02413 -3.79571 0.716772 0.328166 -1.15928 -0.985797 -0.069438 0.826582 -1.85263 3.04741 -5.9766 0 0 0 0 0 0.0166921 -0.173086 -0.000421967 0 0 0 0 -0.00118267 0 -0.0323139 0 0 0.00819248 0.0163839 -0.0245045 0 -0.00396937 0.013588 -0.227791 0 0 -0.0536184 0.00120835 0 0.0274124 -0.295894 0 0 -0.010074 0.0050679 0 0.00483451 0 0.00725103 0 0 -0.000146423 0 0 0.0918437 -0.0159671 0.110927 0 -0.00209804 0.118611 0 0 -0.279022 0 -0.0186445 -0.124866 0.051431 0 0 -0.008395 -0.0124836 0 0.0145131 -0.019419 0.0206687 -0.261018 0.0864332 -0.0343398 0 0.0184726 -0.118939 0.0924244 -0.073857 -0.155297 0 0 0 1.51171 0.0279817 0.419502 -0.0112074 0.0594058 -0.0945374 -0.0087855 0.0168932 -0.0345931 0.0584121 0 0 0 0 0 0 -0.00915752 0 -0.165517 0 0 0 0 -0.0177347 0.535928 0 0 0.353065 0 0.0156387 0 0.0340285 0 0 -0.252359 0 1.12338 0.0952196 0.254125 -0.0519048 0 0 0.19972 0 2.56712 0 5.06065 0.115675 0 0.361259 2.25539 0.020049 0 0.0207039 0 0 0.0931449 0 0.723941 -0.550127 0 0 -0.112593 0 0 0.281223 1.10956 0.143695 0 -1.49064 0 0.828722 -0.194836 0.0378685 0.091357 -0.233935 1.63613 -0.447776 0.143373 0.620292 -3.13304 0.338085 0 0 0 -0.379861 -0.0418411 0 0 0 0 0.2087 -46.0257 -8.55852 1.63042 -4.03932 3.27548 -3.37398 -0.376974 0.286309 -0.202235 -0.237899 0 0 0 0 0 0 +430 0 -1.51258 -0.444788 -0.162687 -0.52289 0.281638 0.27503 -2.22368 -5.84016 -0.327705 4.41948 -0.601121 -0.153933 0.0615838 1.41848 -0.0646258 -2.10989 -10.1713 0.673215 -0.208276 4.07867 0.138113 -0.0222396 -0.0538793 1.10286 -1.15669 -0.378493 -0.0399023 -0.117317 0.619599 0.228433 -0.159176 -0.42115 0.563713 -0.199502 -0.465696 -0.129568 -0.606635 4.86638 -1.20745 1.71061 0.245449 -2.12383 -0.298561 1.31116 0.826173 0.754448 0.0882284 -1.23806 0.505352 0.279684 1.63579 0.645255 0.430002 -0.538796 0.621245 -0.716059 -0.0402567 -0.20038 -1.49027 -0.31511 1.07771 0.301767 -0.822274 2.05123 1.31391 1.04284 -0.893834 -1.22066 0.0478736 -2.90896 -0.0911258 -0.723996 0.785129 -0.36175 0.241706 0.858191 -16.5852 -11.9049 11.0584 -7.04142 7.65046 -9.47785 -7.16877 6.91784 -8.34278 11.4769 -1.84385 2.23437 -2.22637 2.90854 -2.30233 0 0 0 0 0 -0.162687 -0.52289 -0.00239193 0 0 0 0 0.00121417 0 -0.0300501 0 0 0.00619496 0.023046 -0.0794127 0 -0.00816894 -0.0888164 -0.270803 0 0 -0.11722 0.00170448 0 -0.145769 -1.64727 0 0 -0.0147092 -0.414889 0 -0.389814 0 -0.0811748 0 0 -0.0094989 0 0 -0.884234 0.0167862 0.0809321 0 -0.0342841 0.0137776 0 0 -0.0194884 0 0.00081236 -0.104038 0.00557533 0 0 -0.00464833 0.00442866 0 -0.0132392 0.0252867 0.00872121 1.22599 -0.0449694 0.0171501 0 0.00807191 -0.0395152 0.212136 0.0660646 -0.0317821 0 0 0 5.62264 -0.0517241 0.960742 0.0772566 -0.107097 0.276351 -0.00602518 0.0124672 -0.0256051 0.0792304 0 0 0 0 0 0 0.281638 0 0.27503 0 0 0 0 -0.341333 -1.73662 0 0 1.71192 0 0.209871 0 -0.113715 0 0 0.506558 0 0.691261 -0.15855 0.507001 0.0898021 0 0 -0.82211 0 -5.39231 0 7.10014 0.440123 0 -1.19498 2.28862 0.0618075 0 -0.0442336 0 0 -0.238556 0 -0.591318 0.817062 0 0 0.134294 0 0 0.0344586 0.0611202 -0.80093 0 0.430111 0 1.14986 -1.11071 0.96795 -1.51835 -0.192787 2.51303 -1.04185 0.498469 1.66115 3.63216 0.464671 0 0 0 -0.00208095 -0.472658 0 0 0 0 0.399947 -53.1128 -15.6183 9.44569 -5.29466 4.27158 -4.50234 -1.392 1.13571 -1.2011 0.915985 0 0 0 0 0 0 +431 0 0 0 0 0 0.166814 -0.283683 0.625375 0.147698 0 0 0.047996 -0.185539 0 -0.921146 0.000670045 0 0 0 -0.0942697 1.4766 0 0 0 0 0.469233 0 0 0.966811 0.977473 -0.577559 0 0.562897 0 0 0.410904 0.0156416 0 0 0.22076 -0.175184 0 0 0.0465382 0.921912 0 -0.810899 1.15411 1.02189 -0.0700139 -4.01066 0.358889 0 0.0791036 -0.257055 0.1922 0.095339 -0.127279 -0.390034 0 0 -0.325654 -2.58619 0 -0.472326 1.07059 -0.0351712 0 0 0 0 -0.169938 0.387186 0 0.19119 -1.01633 0 0 0 -1.29102 0 -0.163913 -2.21856 0 0.152855 -0.656688 0.74255 0 -0.169019 0.304179 0.422383 -3.6406 0 0 0 -0.0503519 0.0154628 0 0 0 -0.0405315 0.0219154 0 -0.00745101 0 0.00823418 -0.0357659 0 0 0 0 -0.210227 0 -0.0275474 0 -0.410376 0 -0.193043 0.0136417 0 -0.00407522 0 0 -0.164241 0.00205257 -0.00883729 0 0.00414893 0 0.00163545 0.0220537 -0.0261073 0.0175547 0.0053679 0 0.000668666 0 0 0 0.00026299 0 0 -0.00617019 0.00234824 -0.482416 0.0317276 0 0 0.0160604 0 -0.00293505 0 0 0.00466942 0.00600807 -0.121882 0.0600821 0 0 -0.150553 0.00991278 -0.0103771 -0.259791 -0.503055 0 -0.167088 -0.00196937 0.0727363 0 0 0 1.93108 0 0.0394277 0.411531 0 0.0199184 -0.0109189 0.477474 0 -0.00371394 0.0143319 -0.022068 0.127531 0 0.166814 -0.0503519 -0.283683 0.0154628 0.0288934 2.41004e-05 0.17858 0.272949 1.94016 -0.0311895 0.0267063 -0.201276 -0.00574627 -0.0201409 0.0381891 0.0901437 0.0331294 -0.130056 0.261142 -0.46654 -0.372397 0.0208653 0.169995 0.0315707 0.210857 0.0310216 0.833302 -0.0145415 -0.442295 -0.0393745 -0.765878 -1.63169 0.00713247 0.230339 -0.203984 0.0359235 0.000430238 0.00928547 -0.00916968 0.164406 0.273754 0.00552691 -1.88647 0.901064 0.0046187 0.00253564 0.0881651 -0.0811283 -0.0999623 -0.125738 -0.926712 -1.1361 -0.0483994 0.576755 -0.0525506 -0.42966 0.501499 0.201591 -0.14882 -0.00290521 -0.490979 0.311908 -0.123381 -1.67264 -4.75736 0.0856942 0.303216 0.0453315 -0.123785 -0.10115 0.0256022 -0.0235538 0.0824009 -0.0676798 0.0522621 -0.165843 2.09477 0.580152 -0.0378632 0.382734 0.0895636 -0.495601 0.105617 0.0443492 -0.0457515 0.171858 0.0695806 -0.00417386 0.0213807 0.0456888 -0.0639553 0 +432 0 0 0 0 0 0.520017 0.0869866 0.106645 -0.729851 0 0 0.189221 -0.857359 0 0.133091 0.0534214 0 0 0 -0.0242913 -2.43143 0 0 0 0 -0.223283 0 0 -0.141048 -1.79834 0.00848001 0 0.424993 0 0 -0.0795449 0.0150288 0 0 0.648375 -0.667171 0 0 0.113899 -2.99666 0 0.0982065 -0.41116 0.290887 -0.279589 1.88763 -0.562738 0 0.0704117 0.157485 -0.239675 -0.609718 -0.105575 -0.427167 0 0 -1.14535 1.41927 0 -0.461065 -0.475293 -1.04232 0 0 0 0 -0.26998 0.530251 0 0.231869 -0.244083 0 0 0 3.06416 0 -0.615678 3.4164 0 -0.533934 2.25362 -0.749613 0 -0.796287 2.03732 -2.99266 5.14845 0 0 0 -0.121764 -0.0195168 0 0 0 0.0283764 0.0264114 0 0.00330857 0 -0.00334808 -0.0106535 0 0 0 0 -0.0555656 0 0.00481481 0 -0.288088 0 0.277723 -0.0659351 0 0.000947603 0 0 -0.0566115 -0.000393942 0.00428076 0 0.00542973 0 0.00318036 -0.0920978 -0.00262996 -0.014632 -0.0103022 0 -0.000223688 0 0 0 0.000478865 0 0 0.00142701 0.00572722 -0.225427 0.0105566 0 0 -0.00503435 0 -0.00575117 0 0 0.01983 -0.0615365 -1.03195e-05 0.041297 0 0 -0.021918 -0.00256925 0.0162534 0.0612002 0.172246 0 0.217121 -0.0263203 -0.0232914 0 0 0 1.07669 0 0.125874 -0.0274377 0 0.0156268 -0.0313429 -0.0566143 0 -0.000133481 0.0106741 -0.00733771 -0.188232 0 0.520017 -0.121764 0.0869866 -0.0195168 0.353997 0.0765511 -0.0296721 -0.239573 -0.267552 0.0228735 0.0414676 0.272028 0.00376446 0.0384332 -0.0177967 0.00480532 0.0159098 0.140265 -0.110832 0.0769342 -0.124489 -0.0521777 -0.0829151 0.00352852 0.15753 -0.0443966 0.0334064 0.014455 -0.931275 0.260328 -0.650053 0.17513 -0.00414059 -0.703074 -0.513835 -0.0178809 0.00552115 -0.0510073 0.0524505 -0.348085 -0.0571149 -0.00724333 0.163457 -0.208281 0.00466891 0.0245731 0.0389446 0.0459058 -0.021578 -0.237763 1.03347 1.29972 0.0226205 -0.767912 0.0473516 -0.330756 -0.00385485 -0.720862 0.0468856 -0.215781 0.147309 -0.0167484 -0.10923 -0.0628949 -5.88519 0.153263 -0.230615 0.0603303 0.295458 -0.136105 -0.0414558 -0.0465301 -0.0379911 0.0734422 -0.154758 0.175691 1.77798 -0.113231 0.804219 -0.0179309 -0.885157 0.585026 -0.128607 -0.154175 0.296815 -0.589224 -0.0750423 -0.118313 0.186124 -0.246113 -0.253853 0 +433 0 0 0 0 0 -0.770223 -0.139363 0.142778 1.53614 0 0 0.563324 0.378459 0 -1.36286 0.0394823 0 0 0 0.0847357 -3.43879 0 0 0 0 0.364739 0 0 -0.105384 -5.45714 -0.139717 0 0.035988 0 0 0.0162403 0.0315002 0 0 2.04382 -1.33108 0 0 0.293798 -0.568743 0 -0.436134 -1.2418 0.172802 -0.241013 -2.61368 -0.0401736 0 -0.325036 0.327972 -0.12909 0.243069 -0.112272 0.415702 0 0 0.746127 3.49852 0 -1.19368 0.266681 0.598911 0 0 0 0 0.0337609 0.35089 0 3.85866 -0.100785 0 0 0 -2.50747 0 -1.27974 3.01734 0 -0.0183995 1.77109 -4.22823 0 -0.92452 3.88946 -8.73876 16.6301 0 0 0 -0.333988 -0.0588274 0 0 0 0.0540734 -0.0433065 0 0.00726339 0 -0.0135381 -0.0370448 0 0 0 0 -0.0219234 0 0.00181536 0 -0.29568 0 0.449391 0.47768 0 0.00203517 0 0 -0.0400099 -0.00516329 0.0694908 0 -0.00322374 0 -0.00306683 0.123552 0.00334545 -0.0782077 0.0129425 0 -0.00093824 0 0 0 -0.000255261 0 0 0.013801 -0.00461437 -0.248614 -0.0657566 0 0 -0.0253022 0 0.00537401 0 0 -0.00916906 -0.0183298 0.140856 -0.00946523 0 0 -0.150128 0.0512711 -0.0157256 -0.235269 0.0483647 0 -0.198579 -0.0280996 0.0489854 0 0 0 1.39903 0 0.204412 0.410591 0 -0.00252518 0.0695084 0.314658 0 0.00628982 -0.00736802 0.0495511 0.23831 0 -0.770223 -0.333988 -0.139363 -0.0588274 0.549819 0.118871 -0.391384 0.645316 -1.72198 0.0265812 -0.0321275 -0.500477 0.0047905 -0.0296737 -0.0583789 -0.0833405 -0.0400812 0.113515 0.179361 0.397468 -0.305008 0.235361 -0.523373 0.0361719 -0.245739 -0.0969803 -0.641294 0.0105931 -9.44435 0.660005 -2.93992 -0.70501 -0.00873645 1.94939 -1.50101 -0.0615116 0.00657775 0.0719243 0.0750908 -0.964329 -0.264415 -0.0101431 -3.20912 0.468751 -0.00579677 0.0640048 0.0896061 0.0616281 0.13839 -0.180931 -1.11036 -0.0587954 0.0215004 -0.579904 0.10397 -0.274954 -0.0533442 -0.11616 0.0147827 0.52487 0.385799 -0.0116399 -0.243812 1.93902 -1.78366 0.0302889 -0.552438 -0.113133 -0.0777669 0.18184 0.0641994 -0.15335 0.0105066 0.150975 0.257164 0.539334 8.04106 1.85481 -6.65378 0.631196 -2.91839 3.96757 0.0886883 -0.619245 1.0545 -1.26148 -0.0607312 -0.301173 0.611044 -1.04062 1.81088 0 +434 0 0.0443457 -0.0886585 -0.0382877 -0.0876078 0.0660319 0.130099 -0.315531 -0.356004 -0.359329 0.783747 -0.265396 0.0475781 0.008069 0.0704876 -0.0592166 -0.66294 -1.48435 0.00126102 -0.0601028 -1.02346 0.0158559 0.00534485 -0.0106121 0.253474 -0.0821424 -0.232687 -0.0323212 -0.338256 0.198014 0.135187 -0.0640163 -0.567472 -0.131673 -0.182767 -0.153352 -0.0495817 -0.387472 -0.380543 -0.427248 -0.179181 0.0482786 -1.36864 -0.0845374 -0.0429637 0.252271 0.153587 -0.200828 -0.736706 0.220479 1.16867 0.372621 2.39252 0.0345868 0.00656059 -0.0359827 0.494905 -0.250502 -0.217777 -0.351946 -0.105456 0.219229 1.12361 -1.05508 -0.629913 -0.125422 -0.503214 0.506013 -0.158706 0.114578 -0.163058 0.289746 -0.416416 0.391168 0.0641378 0.322681 0.0674301 -2.37849 -3.20652 1.39223 0.0879457 -0.523901 1.48066 -1.09836 0.567336 -0.709618 -0.121039 -0.115439 0.223347 -0.342601 0.602082 -0.466709 0 0 0 0 0 -0.0382877 -0.0876078 0.00530108 0 0 0 0 0.000671903 0 -0.0119931 0 0 0.00415724 0.00347407 -0.02222 0 -0.00214812 -0.00221342 -0.119546 0 0 -0.309511 0.000320753 0 -0.118499 -0.0979792 0 0 -0.0353055 -0.0146179 0 -0.366642 0 -0.0532516 0 0 -0.00511757 0 0 -0.825575 0.011926 0.0535729 0 0.0807957 0.0308971 0 0 -0.0217515 0 0.0114812 -0.559968 -0.0177771 0 0 -0.00819054 -0.00844069 0 0.0083952 0.0512303 0.0215826 -2.38228 0.0131548 -0.0162859 0 -9.90545e-05 0.125381 -0.0694336 -0.0852507 -0.0662987 0 0 0 6.81535 0.168206 0.655731 0.0296478 -0.0667956 0.965321 -0.00585313 0.0100697 -0.0077263 0.0453312 0 0 0 0 0 0 0.0660319 0 0.130099 0 0 0 0 -0.126182 -1.01136 0 0 0.0810468 0 -0.000255498 0 -0.0514507 0 0 0.189943 0 0.277218 -0.0106237 0.0145252 0.00891826 0 0 -0.476606 0 2.89627 0 -0.32686 0.960926 0 -0.0565346 0.0412992 -0.00153083 0 -0.0189583 0 0 -0.11486 0 1.77356 0.165671 0 0 -0.016214 0 0 0.10772 0.0838019 -0.140793 0 -0.238033 0 -0.71759 -0.0249138 0.0418097 -0.355949 -0.041265 0.367871 0.520575 0.00441373 0.86494 5.07425 0.0406906 0 0 0 -0.010915 -0.0116162 0 0 0 0 0.0170324 3.32488 0.0116816 0.299806 0.105804 -0.0807211 0.420446 -0.0683125 0.0736325 -0.0445012 0.0653979 0 0 0 0 0 0 +435 0 1.56771 -0.26356 0.000743796 0.0440078 0.19774 -0.194159 0.381015 -0.164756 -0.0684436 -0.130832 -0.105631 -0.334093 -0.00249782 -0.574537 -0.0744613 -1.88075 -7.38879 -0.0170422 -0.132797 0.537195 -0.0150555 0.385589 0.00167877 -0.0270371 0.3095 -0.731902 0.0213553 0.596017 0.390614 -0.183635 0.00252902 -0.558289 0.21541 0.186087 0.374506 -0.0203866 -0.094099 -2.25944 0.0157317 -0.522767 -0.0166765 -0.555542 -0.00560002 -0.924523 -0.106467 -0.695706 0.683003 -0.959239 -0.0168115 -0.428106 -0.0554415 -3.52472 0.257454 -0.0773748 0.136486 1.57982 -0.0597202 0.294113 -0.000827882 0.0534531 -0.62186 -0.558511 -1.48419 0.0307731 -0.164411 0.35026 -0.908545 -0.0930325 -0.0191653 -0.277293 -0.192023 -0.24539 -0.037937 0.442302 -0.545928 -1.03671 14.8714 3.49828 3.20855 1.64859 0.0895204 1.8391 0.114554 0.361098 -0.384517 0.942784 0.0487193 -0.0566039 0.0360969 0.175927 -0.920659 0 0 0 0 0 0.000743796 0.0440078 0.0019627 0 0 0 0 -0.000138929 0 0.0105164 0 0 -0.00152337 -0.00595616 0.0188226 0 0.00226017 0.0074989 0.110942 0 0 0.160089 -0.000361062 0 0.0290613 0.533234 0 0 0.0151063 0.0583592 0 0.0159722 0 0.0311386 0 0 0.00308308 0 0 -0.492434 -0.00325909 -0.0321641 0 0.0191546 0.0439853 0 0 -0.211082 0 0.00369498 0.0430671 -0.0188407 0 0 0.00214162 -0.00384678 0 -0.00105288 -0.0645273 -0.0142468 0.0631368 -0.0606261 0.00664156 0 0.0126944 0.0639943 -0.104148 0.0102297 0.0428929 0 0 0 2.42017 0.206645 -0.339165 0.0213408 -0.0231249 0.164608 0.00120281 -0.00386883 0.0356906 -0.121776 0 0 0 0 0 0 0.19774 0 -0.194159 0 0 0 0 -0.0127801 -0.53938 0 0 0.265233 0 0.0214385 0 -0.0254238 0 0 0.0805228 0 0.783283 -0.0490978 0.0718839 0.00485336 0 0 -0.2804 0 0.755448 0 -1.00853 -0.171557 0 -0.379634 0.761972 -0.00131379 0 0.00314728 0 0 -0.0620707 0 -0.0989348 0.450027 0 0 0.0519434 0 0 -0.125318 -0.822583 -0.0414574 0 -0.17413 0 0.0184471 -0.0577761 0.0709243 -0.25051 0.116684 -0.266031 -0.141955 -0.0872119 0.0491492 0.611588 -0.0970895 0 0 0 0.0474255 0.0206259 0 0 0 0 -0.0837805 9.82569 -0.583548 2.38854 0.1271 0.0470491 0.453198 -0.120896 0.0786611 -0.0883377 0.0582377 0 0 0 0 0 0 +436 0 -0.871533 0.217481 -0.0502506 -0.315134 0.522041 0.20576 -0.207921 -1.82207 -0.428998 1.02111 -0.238347 0.964786 0.00379034 1.79709 -0.0300308 1.60557 6.63884 0.162083 -0.0369276 6.03347 0.00894703 -0.0953532 -0.00793287 0.136318 -0.115682 0.312175 0.0268406 0.166489 1.60594 0.353545 -0.0576606 -0.140603 -0.170806 0.11239 -0.0118842 -0.0312178 0.142204 -0.814564 -0.386163 2.61913 0.0193335 0.491798 -0.0624201 4.10078 0.062846 0.999576 0.764144 -0.170578 -0.0214579 0.260948 0.00185224 -4.16055 0.12921 -0.120624 0.295865 -1.99857 0.802152 0.34666 -0.00153901 0.00336104 -0.463314 -6.23685 -0.550978 -1.21003 -0.17375 -0.655675 0.755217 0.210588 0.129508 0.437566 0.147912 0.13638 -0.0890996 -4.35085 -0.637728 0.323162 4.73921 -0.0577024 3.03853 0.824837 -0.126282 0.838884 -0.313552 0.880475 -2.14286 3.45867 -0.0287583 0.119642 -0.441501 1.2546 -3.78512 0 0 0 0 0 -0.0502506 -0.315134 -0.00278991 0 0 0 0 -3.02241e-05 0 -0.0120269 0 0 -0.00411013 -0.0065249 -0.0207366 0 -0.00239974 0.0468567 -0.10548 0 0 0.169105 -0.000424895 0 -0.0474313 1.06804 0 0 0.0212347 0.269831 0 -0.104705 0 0.00112488 0 0 0.000958196 0 0 -0.520521 0.00119677 -0.0602039 0 -0.0346319 -0.0366658 0 0 -0.0490645 0 -0.00535277 -0.883045 -0.00361544 0 0 0.00857869 0.00521321 0 -0.0182514 0.0298375 -0.0300926 0.506412 -0.0169026 0.00294433 0 -0.00638141 -0.0178796 0.199339 -0.0329749 -0.417932 0 0 0 5.17533 0.355351 0.791113 0.0058735 -0.0251337 0.771056 0.00506229 -0.00896842 0.0275106 0.155974 0 0 0 0 0 0 0.522041 0 0.20576 0 0 0 0 -0.361865 0.470378 0 0 1.18775 0 0.126294 0 0.043356 0 0 0.686282 0 0.0531001 -0.141961 0.442939 0.0974227 0 0 0.334213 0 10.0469 0 3.67566 0.996036 0 -1.16729 0.885182 0.0467823 0 -0.0480195 0 0 0.0677339 0 3.69811 1.40663 0 0 0.195974 0 0 -0.356149 0.300954 -0.404952 0 -1.01265 0 0.101779 -0.0315253 0.207721 -0.109816 0.0424067 0.523584 -0.146624 0.0759085 -1.32427 -5.50393 0.0159642 0 0 0 -0.0319799 -0.101878 0 0 0 0 -0.139648 -17.499 -5.60996 4.98491 -1.67928 1.62776 -1.93912 -0.470948 0.449995 -0.658614 0.787436 0 0 0 0 0 0 +437 0 -0.182214 0.311243 -0.000704638 -0.0389806 -0.135072 0.258218 -0.68086 -0.582077 0.0470579 0.233732 -0.0349974 1.10079 -0.00046207 1.31957 -0.0161749 2.18675 10.005 0.104257 -0.0311245 0.0432753 0.0325571 0.0508569 0.000834961 0.0875665 -0.216713 0.435204 -0.0169265 -0.559506 -0.822657 0.55794 0.00645992 -0.147548 0.147523 0.00456214 -0.233142 -0.0132839 -0.100918 -0.444023 -0.0536444 0.679076 -0.00360563 0.0481017 -0.0124278 2.5035 -0.0218291 0.700668 -0.719657 -0.285493 0.00588929 0.769613 0.15032 -1.47434 -0.00240926 -0.00628184 0.00723162 -3.60041 0.123778 0.0457652 -0.137452 0.0142046 0.559655 -0.6472 -0.936023 -1.37272 -0.135607 0.0473461 0.891003 -0.0542028 -0.00524771 -0.00888764 0.343958 -0.107983 -0.0823597 -2.73 0.640433 0.104542 -8.26815 -3.24111 -0.48163 -0.528931 -0.512724 1.09491 -0.299858 0.0464146 -0.0178903 0.443998 0.00889584 0.00503638 0.18756 -0.173144 1.50254 0 0 0 0 0 -0.000704638 -0.0389806 -0.00339872 0 0 0 0 -0.000419614 0 0.0046908 0 0 0.000220768 -0.00031942 0.00246988 0 8.40697e-05 -0.0083838 0.0470707 0 0 -0.0425328 0.000103661 0 -0.0547569 -0.668252 0 0 -0.00874473 -0.104993 0 -0.237087 0 -0.00701021 0 0 -0.00105527 0 0 -0.776515 -0.00662484 -0.0118858 0 -0.0572585 0.110553 0 0 -0.245775 0 -0.00670823 -0.444755 0.0134021 0 0 -0.000814223 0.00566949 0 0.00285529 0.0231823 0.0142515 -1.20634 0.0329743 -0.0199417 0 -0.0148294 0.0409345 -0.291837 0.0281244 -0.0401518 0 0 0 7.41067 0.48268 0.157377 0.0137616 0.00612277 0.670844 -0.00156289 0.00519874 0.0161132 -0.0724962 0 0 0 0 0 0 -0.135072 0 0.258218 0 0 0 0 0.117688 -0.440061 0 0 -0.0347384 0 -0.00897051 0 -0.0428821 0 0 0.221188 0 0.0639261 0.0261511 -0.0649611 0.0192544 0 0 -0.389994 0 4.4802 0 0.413686 0.889667 0 0.156233 0.354447 -0.00772471 0 0.0209823 0 0 -0.0504036 0 1.6306 0.444635 0 0 0.0518401 0 0 0.0449918 0.391658 0.0048022 0 -0.77096 0 -0.794588 -0.0615227 0.0452952 -0.0772063 -0.109673 0.296904 0.860783 -0.0774579 0.363924 -1.60052 0.142245 0 0 0 -0.000730069 0.0502857 0 0 0 0 -0.0331953 -0.834596 -0.556603 0.185849 -0.334524 0.17206 0.24111 0.0396899 -0.0275556 0.0506768 -0.105066 0 0 0 0 0 0 +438 0 0.149064 0.447033 -0.00529229 -0.0951111 0.10928 0.229019 -0.862245 -1.06775 0.136325 -0.00389884 -0.0245063 -0.200777 8.99658e-05 -1.02522 -0.0186019 0.114402 -1.66676 -0.0433586 -0.0308657 -0.441122 -0.023076 -0.583047 0.0013953 -0.0803222 -0.51844 0.429411 -0.0348642 -0.555517 -0.609268 -0.055688 0.0137504 -0.189219 -1.0444 -0.265062 -0.452028 -0.00330784 -0.0471325 -1.99757 -0.0555129 0.38867 0.00246935 -0.195535 -0.00689775 -2.20953 0.0418578 0.483672 -0.57587 -0.320716 0.0048534 -0.0457323 -0.342552 1.42 -0.0941669 0.0371052 -0.0666297 0.897579 -0.339065 0.210237 0.10541 0.00197185 0.461787 -0.130691 0.209468 0.460923 -0.2816 0.544359 -0.362628 0.147822 -0.014147 -0.307267 0.00569013 -0.160841 0.0270696 1.45848 0.508363 -0.334902 7.60506 1.96232 1.83215 1.27198 -0.226389 1.56328 0.0812475 0.0515364 0.0779654 1.1428 -0.017058 0.0226138 0.0859197 -0.113818 1.11279 0 0 0 0 0 -0.00529229 -0.0951111 -0.000806406 0 0 0 0 -9.83184e-05 0 -0.0103772 0 0 -0.000968431 -0.00222725 -0.00490969 0 -0.00104317 -0.0145704 -0.052016 0 0 0.189584 -0.000111809 0 0.00324666 -0.432127 0 0 0.019949 -0.101899 0 -0.0622003 0 0.0196335 0 0 0.00208552 0 0 -0.518486 -0.00366854 -0.0242316 0 -0.0356598 0.113564 0 0 -0.299067 0 -0.00106111 0.0794115 -0.00647501 0 0 0.00172774 0.000896803 0 -0.00641619 0.00616859 0.0156971 1.01106 -0.0615826 -0.0349434 0 0.00454528 -0.0495932 0.00036909 0.0829658 0.0687229 0 0 0 5.10677 0.422506 0.442536 0.038495 0.0568144 -0.507737 0.000258222 0.00576409 -0.0103387 -0.01816 0 0 0 0 0 0 0.10928 0 0.229019 0 0 0 0 -0.0246672 0.531425 0 0 0.278331 0 0.0351069 0 0.0210325 0 0 -0.464713 0 -0.79968 -0.00525749 0.0971874 -0.0639276 0 0 0.204615 0 -3.71875 0 -0.926709 -0.427683 0 -0.0113543 -0.868802 0.0179401 0 -0.00728976 0 0 0.0588012 0 -1.52717 -0.721145 0 0 -0.0847657 0 0 0.0405418 -0.427345 -0.0328417 0 0.445921 0 0.625758 -0.0266927 0.0833084 -0.0613066 0.129178 0.0781299 -0.567883 0.065931 0.042469 4.24213 -0.0916802 0 0 0 -0.0214441 -0.0738314 0 0 0 0 0.0489586 -2.0519 -1.37606 0.109279 -0.408313 0.582892 -0.716584 -0.141951 0.116975 -0.110431 -0.174207 0 0 0 0 0 0 +439 0 -0.746771 -0.108887 -0.0481256 -0.348211 0.279816 0.0547343 -0.126672 -1.11169 -0.176817 0.808727 -0.309792 0.202718 0.00139871 1.21558 0.011242 0.170847 1.86177 0.00726021 0.00326125 1.83211 -0.0174644 0.0050597 -0.00181576 0.108913 -0.0841059 -0.101136 -0.0187281 0.119575 1.21912 0.138858 -0.0175972 0.00108953 0.117951 -0.0902123 0.0301042 -0.0205866 -0.163904 1.24339 -0.533785 0.438439 0.0113954 -0.800814 -0.0435766 2.47818 0.0585261 0.076258 0.480987 -0.157634 -0.0890593 1.51468 0.231821 1.66775 -0.0578885 -0.0532406 0.0468462 2.74297 -0.342046 -0.0567096 -0.10839 0.0318946 -0.370821 0.587255 -0.842548 -0.0399441 -0.299482 -0.808291 -0.160093 -0.10247 0.0246346 0.10285 0.335142 0.165219 -0.0372386 0.833012 0.0166574 -0.755818 0.510578 1.37438 -0.197894 1.1925 0.993854 -3.8884 -0.333925 1.02809 -1.90346 1.03504 -0.0238507 0.124568 -0.301856 0.816648 -2.22664 0 0 0 0 0 -0.0481256 -0.348211 -0.0010687 0 0 0 0 2.19735e-05 0 -0.00611094 0 0 -0.00420644 -0.00878255 -0.00311681 0 -0.000155823 0.00140446 -0.0499682 0 0 0.26528 -0.000526046 0 -0.0320326 0.677572 0 0 0.0303195 0.0611912 0 -0.184096 0 0.0220567 0 0 0.00268323 0 0 -1.07946 -0.00061542 -0.0715571 0 -0.0265314 0.0355207 0 0 -0.252944 0 -0.00190566 -0.789658 -0.0209993 0 0 0.00828185 0.00161057 0 -0.0214082 0.0242375 -0.023051 -0.00977122 -0.0857833 -0.000431564 0 -0.00459104 0.0783092 0.0739872 -0.0183785 -0.214789 0 0 0 9.31631 0.624172 0.739302 0.0351507 -0.0228717 0.787453 0.00437649 -0.00601316 0.036724 0.0402438 0 0 0 0 0 0 0.279816 0 0.0547343 0 0 0 0 -0.304452 -0.266383 0 0 1.16944 0 0.12587 0 0.00880993 0 0 -0.0753613 0 0.31552 -0.096709 0.396712 -0.0330399 0 0 -0.0158937 0 0.941247 0 5.21766 -0.0347153 0 -0.774052 1.38427 0.0400693 0 -0.0390899 0 0 -0.0116798 0 0.462503 -0.0882383 0 0 -0.0566654 0 0 0.0336433 2.24331 -0.395411 0 1.39705 0 -0.063627 -0.182234 0.346523 -0.197118 -0.0310514 1.02263 0.476581 0.0996749 -0.257865 7.79205 0.148322 0 0 0 0.0372312 -0.110189 0 0 0 0 -0.082675 -26.4265 -6.13573 3.14846 -1.86395 1.60004 -2.1592 -0.480779 0.416494 -0.577536 0.473568 0 0 0 0 0 0 +440 0 0 0 0 0 -0.0836394 0.146309 -0.618506 0.512189 0 0 -0.169727 0.464348 0 -0.446408 -0.0788371 0 0 0 -0.404586 -4.13486 0 0 0 0 -0.108092 0 0 -0.856626 0.908677 0.360036 0 -0.239391 0 0 -0.236514 -0.0312952 0 0 -0.230356 -1.00097 0 0 -0.0267963 -0.39138 0 0.301113 -0.958186 -0.620555 0.137339 -0.665802 -0.198418 0 0.198177 -0.350408 0.186923 0.136787 -0.36438 -1.55363 0 0 -0.188399 8.29039 0 0.457187 0.269346 1.21581 0 0 0 0 -0.340812 -0.336516 0 0.852011 0.789106 0 0 0 -1.3656 0 -0.0775601 -0.831697 0 0.148047 0.201425 -3.05697 0 0.279829 -0.858633 0.881761 -5.70905 0 0 0 0.0143713 -0.00349588 0 0 0 0.0144089 -0.00802369 0 0.00146965 0 -0.000556491 0.0074744 0 0 0 0 -0.0102979 0 0.00160024 0 0.0223663 0 0.147251 0.347836 0 0.000748986 0 0 0.126121 -0.000236305 0.0430457 0 -0.00089559 0 -0.000397764 0.0749275 0.01061 -0.00570571 0.00950694 0 -2.28355e-05 0 0 0 -4.30512e-05 0 0 0.000198779 -0.000433863 -0.196218 0.00575645 0 0 0.0141729 0 0.000554449 0 0 -0.0037663 -0.00502178 0.102227 0.00697997 0 0 0.00736897 0.0175365 0.00105403 -0.0508673 0.130631 0 0.199618 -0.00312849 0.0705191 0 0 0 -0.0568176 0 0.0199542 -0.681439 0 0.00119602 -0.0460427 -0.109765 0 0.000170635 -0.00659809 0.0212207 -0.336298 0 -0.0836394 0.0143713 0.146309 -0.00349588 -0.304529 -0.0501717 0.0865654 -0.0942403 -0.50971 0.00645122 0.00385651 0.0824692 0.0017978 0.00807512 0.00110093 -0.0298865 -0.013099 0.00847332 -1.24189 0.273293 -0.0941789 -0.0333187 0.131145 -0.195827 -0.0877546 0.130871 -0.426221 -0.00512749 -6.53231 -0.171619 -0.29175 0.252484 -0.000890633 -0.0616565 0.059289 0.0113259 -0.0061854 -0.0230256 -0.0337354 0.91473 -0.0556036 0.0162702 -1.82136 -2.33901 -3.77215e-05 -0.0302354 -0.32986 0.0219241 0.0483348 0.84388 -1.05546 0.12182 0.0216263 0.553751 -0.0575335 1.30167 -0.0707189 0.181981 0.223676 0.0199075 -1.30493 -0.356097 0.229434 -1.18519 -1.00971 -0.210477 -0.0428758 0.000369491 -0.194187 -0.431583 -0.0213717 0.0251181 -0.0129264 0.205809 -0.0314252 -0.192811 0.618955 -0.0375952 -0.575034 -5.72867e-05 0.150014 -2.01851 -0.00397332 0.00312983 -0.298089 -0.347362 -0.000518761 0.0186074 -0.1565 0.14625 -0.71377 0 +441 0 0 0 0 0 0.31405 0.295565 -0.72258 -2.15775 0 0 0.0295886 0.691588 0 0.289495 -0.0114522 0 0 0 0.187799 -3.63297 0 0 0 0 -0.512649 0 0 -0.848566 -1.10619 0.461011 0 0.062255 0 0 -0.287387 0.0090063 0 0 -0.348427 0.172392 0 0 -0.0854219 -0.258428 0 0.712249 -0.976914 0.970405 0.159156 -1.002 0.335738 0 -0.515155 0.0606719 -0.281155 -1.63154 -0.390248 -0.0549418 0 0 1.21933 -2.67487 0 0.122322 0.656228 -0.178962 0 0 0 0 -0.0130814 -0.430651 0 -4.11343 0.849216 0 0 0 4.84222 0 1.06731 0.323745 0 -0.0695191 -0.559282 3.61238 0 0.0319645 -0.589704 0.807048 3.07588 0 0 0 0.0187016 0.0286749 0 0 0 0.0489831 -0.00829585 0 0.00751207 0 0.000402624 -0.0141102 0 0 0 0 -0.0830822 0 -0.00986223 0 -0.105408 0 0.290696 0.17082 0 0.00351692 0 0 0.182439 -2.12534e-05 0.0427184 0 0.000420287 0 -0.000483188 0.0125696 0.022981 -0.00139808 0.0040172 0 2.46474e-05 0 0 0 1.49865e-05 0 0 0.00074807 0.00160245 0.00147408 -0.00867274 0 0 0.00754759 0 0.00292179 0 0 -0.0053649 0.0119999 -0.0875548 0.0125595 0 0 -0.0894008 -0.0170492 -0.0307371 -0.0659383 -0.458121 0 -0.188047 -0.00435916 -0.11008 0 0 0 0.000417207 0 0.0156829 -0.0447844 0 0.00116235 0.011028 -0.0295637 0 0.000158227 0.00150474 0.00121152 -0.029716 0 0.31405 0.0187016 0.295565 0.0286749 -0.0588939 -0.0326326 0.535095 0.0100259 0.622965 -0.0157084 -0.0251343 -0.189843 -0.00442236 -0.0439516 0.079439 -0.0155238 -0.0317056 -0.0672517 -1.40797 -0.594884 -0.0700165 -0.0541994 -0.126505 -0.203702 -0.132004 -0.0160082 0.00101971 0.00914044 -3.8088 0.0715328 0.234266 -0.114528 0.010646 -0.454336 -0.0599645 -0.0258707 -0.00286965 0.00542196 -0.0163812 -0.316861 0.0593846 -0.00288445 -1.79518 -2.88398 -0.00457649 0.00538253 -0.406152 -0.0160437 -0.193711 1.18067 -0.0825056 -0.464194 0.254839 -0.0554587 -0.357347 -0.310496 0.0317103 -0.0366831 -0.0692439 0.0356391 0.342135 0.127124 0.0214404 -0.503664 1.96494 -0.0094272 0.381186 -0.0171471 -0.291622 -0.658234 0.0300726 0.0068552 0.00690246 0.0520967 0.0278092 -0.0228429 -0.497 0.161322 1.25176 0.0641668 -0.105375 1.36249 0.0173104 -0.0248096 0.107097 0.235342 0.00411734 -0.0272826 0.0701398 -0.101422 0.364411 0 +442 0 0 0 0 0 0.126001 -0.116272 1.1098 2.47095 0 0 0.314087 0.0518455 0 0.172086 0.0474963 0 0 0 -0.0983802 2.11291 0 0 0 0 0.655833 0 0 0.196078 -0.382362 0.0262236 0 0.307367 0 0 0.30318 0.0975532 0 0 1.23307 1.02183 0 0 0.464437 -0.351965 0 0.353531 0.123889 0.00836313 -0.500806 0.0217401 -0.880348 0 0.0484239 -0.123384 -0.116911 0.402401 0.772999 0.719001 0 0 -1.67229 -6.45975 0 -0.453223 0.30948 0.341876 0 0 0 0 -0.374894 0.278699 0 -2.34171 1.27789 0 0 0 -4.48528 0 -2.08663 -0.27106 0 -0.565415 -0.167346 -5.10373 0 -0.819189 -0.0910718 -2.48354 1.96369 0 0 0 0.100688 -0.0146257 0 0 0 -0.0173911 -0.00759374 0 -0.00295043 0 -0.00163656 -0.0164518 0 0 0 0 -0.26822 0 -0.0213205 0 -0.338308 0 -0.0807461 -0.359966 0 0.00654279 0 0 0.424805 -0.000361466 -0.0717508 0 -0.00227624 0 -0.000296695 -0.102061 0.0549986 -0.0118785 -0.018424 0 -5.98327e-05 0 0 0 -0.000103501 0 0 0.00180415 -0.00105918 -0.0256163 -0.021127 0 0 0.0117133 0 -0.000455464 0 0 0.0416544 -0.00194593 0.0877142 0.0286455 0 0 -0.161277 0.0811463 0.0301224 -0.130662 0.695967 0 -0.022217 -0.00716959 -0.306778 0 0 0 1.28426 0 0.0685257 -1.04785 0 0.00466317 -0.0532684 0.235372 0 0.000646279 -0.00774466 0.0390661 -0.576594 0 0.126001 0.100688 -0.116272 -0.0146257 -0.112091 -0.0186355 0.249773 0.154884 0.572873 0.0292813 -0.0437129 0.324017 0.00767473 0.0680509 -0.0110866 0.041118 -0.0211823 0.0733694 0.722818 0.14528 -0.0665974 0.0393771 0.102866 0.0826933 -0.411527 -0.115506 0.163672 0.00341118 4.85707 0.198231 -0.0903741 0.495994 -0.00555479 0.0594157 -0.17784 0.0149311 0.00309601 0.0390432 0.0253424 -0.734124 0.057267 -0.0170388 1.75348 0.586252 -0.00150148 0.020168 0.0797196 0.0136164 0.206023 -0.669978 0.593825 -0.0675824 0.110418 -0.0769187 -0.0973283 -0.657742 -0.0190018 -0.117016 0.0581524 0.107324 -0.264832 -0.0827923 -0.0354401 -0.242493 -1.6987 -0.0163984 -0.652305 -0.0239379 0.081935 0.431598 -0.170096 0.0131638 -0.0438484 -0.225105 0.0927248 -0.131859 0.191731 -0.328253 -1.45324 -0.0750609 -0.809248 2.2487 -0.0224637 -0.0273299 0.158276 0.300146 -0.00449188 0.0247558 0.0324692 -0.0378192 0.345996 0 +443 0 -1.20338 -0.50898 -0.0241127 -0.172855 -0.142559 -0.334631 0.825805 1.0947 -0.313938 0.462867 0.0584826 -0.58492 0.00104282 -0.644455 0.0422684 -0.147311 -2.91807 0.0446805 0.0891686 -3.74222 -0.0118553 0.421875 -0.00377981 0.00403943 0.475577 -0.258434 0.0247703 0.59037 0.330861 -0.343599 -0.0344888 0.496421 1.29808 0.208869 0.40068 0.00717677 -0.0335254 6.22292 0.0447989 -1.91267 0.00247044 0.0612818 0.00858345 -2.89664 -0.0378195 -1.11558 0.621754 0.888825 0.00822872 0.815643 0.412633 -2.13518 -0.0401397 0.0549677 0.00385932 -1.16866 -0.35237 -0.28559 0.0354614 -0.0103156 1.0075 2.30392 1.7189 1.4932 0.299645 -0.380587 0.300485 -0.0855216 0.0651384 0.178431 0.283873 0.481538 -0.232419 0.244672 -1.06017 -1.22088 -21.3299 -2.83443 -6.11766 -1.37619 0.838348 -8.93343 0.116465 0.0171458 -0.731164 -2.04843 0.00533537 0.00568932 0.0202538 -0.129054 -0.762719 0 0 0 0 0 -0.0241127 -0.172855 -0.000190291 0 0 0 0 -6.18501e-06 0 0.000446155 0 0 -9.29575e-05 -5.30894e-05 0.00119471 0 -0.000122072 -0.0154536 0.0273908 0 0 -0.12059 -3.02946e-06 0 0.0124644 -0.239278 0 0 -0.0149534 -0.0705154 0 0.0631517 0 -0.0169433 0 0 -0.00185032 0 0 0.271374 -0.0001139 -0.00170084 0 -0.0035686 0.00160306 0 0 0.0747046 0 -6.1839e-05 0.160267 -0.00266223 0 0 -0.000137236 0.000500565 0 0.00161777 0.0072764 0.00354879 -0.392173 0.00460163 -0.0131619 0 -0.00775611 0.0795612 -0.0447463 -0.0163742 -0.0138216 0 0 0 -1.44572 -0.0385226 -0.274742 -0.00559084 0.0140947 -0.27985 1.03602e-06 2.17989e-05 -8.09454e-06 -0.0381784 0 0 0 0 0 0 -0.142559 0 -0.334631 0 0 0 0 -0.0235085 0.108883 0 0 0.395953 0 0.0510784 0 0.0292789 0 0 -0.24787 0 0.440313 0.00983489 0.0210225 -0.0309792 0 0 0.333852 0 -3.08322 0 3.37513 -0.617122 0 0.105849 0.85334 0.0043675 0 -0.00159133 0 0 0.0185964 0 -0.543961 -0.721616 0 0 -0.0829698 0 0 -0.353253 -0.115421 0.0280957 0 0.206542 0 0.621971 -0.0228801 0.0509902 -0.0273234 0.0260413 -0.289165 -0.173312 0.0442032 -0.551283 -3.83325 0.017962 0 0 0 0.186922 -0.0280346 0 0 0 0 -0.0820778 -20.8565 -3.04065 -1.22543 -0.753717 0.463813 -1.60107 -0.139901 0.0794957 -0.20345 -0.0813444 0 0 0 0 0 0 +444 0 0.342418 0.455616 0.021339 0.0462997 -0.0456129 0.0860913 -0.139457 -0.429084 0.326283 -0.691601 0.0185974 -0.765265 -0.00203034 -0.691969 -0.037802 -0.29002 -1.33383 -0.168895 -0.110972 1.95609 -0.0164015 -0.483314 0.00407387 -0.125141 -0.343498 0.269403 -0.0448316 0.11113 0.568821 -0.31168 0.036911 -0.302962 -1.33847 -0.28198 -0.210169 -0.00231152 0.0223886 -4.78163 -0.0221519 0.588956 -0.0113067 0.155326 -0.0165697 -1.71137 -0.0666399 0.167742 0.240375 -0.847714 0.0539133 -0.188525 -0.174869 -3.36976 0.250413 -0.0987308 -0.262436 -2.18603 -0.581898 -0.695377 0.145712 0.0084346 -3.05081 1.55197 -0.522395 -0.65441 -0.0488062 -0.647466 -0.149501 -0.112328 -0.117398 0.476578 -0.680186 -0.0799917 -0.366807 1.65939 0.00322363 -0.772561 20.1219 3.93478 4.0469 1.92528 -0.39684 4.03248 0.0964023 0.0644682 0.551207 0.258235 0.00940119 0.0171555 0.0366879 -0.107565 -1.31128 0 0 0 0 0 0.021339 0.0462997 -0.000229516 0 0 0 0 2.18534e-05 0 0.00252193 0 0 -6.73176e-05 0.000136624 -0.00248283 0 -4.39216e-05 0.0290123 0.0125836 0 0 0.202161 9.77235e-06 0 -0.00455341 0.900249 0 0 0.0223795 0.159897 0 -0.0568623 0 0.027633 0 0 0.0027705 0 0 -0.221601 0.000529106 -0.00231541 0 -0.00339831 0.0107338 0 0 -0.14665 0 0.00160422 -0.239153 -0.00543453 0 0 0.000299344 0.00173895 0 -6.99214e-05 -0.0199722 -0.00501322 -0.877011 0.0146185 -0.0224946 0 -0.000403116 -0.0149206 -0.0203176 -0.0372248 -0.0677638 0 0 0 0.511685 0.0156144 0.0791591 0.000382714 0.0002421 0.00620977 0.000133129 -0.00034994 0.0044529 0.0385327 0 0 0 0 0 0 -0.0456129 0 0.0860913 0 0 0 0 0.142727 0.0552127 0 0 -0.146466 0 -0.0339885 0 -0.0106382 0 0 1.44449 0 -0.540883 -0.0385072 -0.139471 0.21917 0 0 -0.113516 0 6.12118 0 -2.543 0.416875 0 -0.130717 -0.892387 -0.0232481 0 0.00157196 0 0 0.00358104 0 2.0867 2.31365 0 0 0.359559 0 0 -0.646868 0.503253 -0.039673 0 -0.395572 0 -0.462174 -0.0375198 -0.0220137 0.337865 -0.13316 0.0527155 -0.0264155 0.0307307 0.283131 -1.15354 -0.00783244 0 0 0 0.427246 0.0412482 0 0 0 0 -0.0753787 10.3422 1.16261 0.651651 0.39575 -0.155789 0.474157 -0.0317699 0.0359354 0.030212 0.143202 0 0 0 0 0 0 +445 0 0.244262 -0.191645 -0.00371036 0.132579 -0.19585 -0.00860353 -0.654893 -0.609288 0.186809 1.33103 0.0284285 -0.982131 0.00308776 -0.665258 0.0171945 -1.39865 -6.24127 0.247126 0.0563009 -3.07742 0.0663677 0.091569 -0.00181629 0.427158 -0.487237 -0.167637 0.0490053 -0.375207 -1.98573 -0.109878 -0.00129608 -0.019639 0.703945 0.209372 -0.28015 0.00308025 0.0657629 4.18312 0.200803 -1.02821 0.0174913 0.655092 0.0239133 -3.38164 0.0688624 -0.128985 -0.917653 0.0703563 -0.143968 0.347697 -0.0805535 2.58525 -0.0605834 0.096282 0.363913 -0.553749 0.404361 0.355208 -0.409033 -0.0354739 4.32233 -0.137278 0.717803 0.580407 0.144932 1.5555 0.678964 0.0262496 -0.0401912 -1.25391 0.645078 0.0357535 -0.172826 -1.38819 0.191146 0.628211 -15.5815 -3.68514 -1.58509 -1.86125 0.0168347 0.145914 -0.697735 0.0401358 -0.445193 3.31322 -0.00971473 -0.0302771 0.0606948 0.233185 4.5776 0 0 0 0 0 -0.00371036 0.132579 -0.000992196 0 0 0 0 -0.000120509 0 0.0438304 0 0 -0.000471713 -0.00141321 0.0295659 0 0.00411139 -0.0468181 0.305473 0 0 -0.10886 -5.69985e-05 0 -0.0365155 -1.17418 0 0 -0.00397863 -0.269405 0 -0.254143 0 -0.0211158 0 0 -0.00125002 0 0 -0.542074 -0.0025566 -0.0132846 0 -0.021202 0.0365723 0 0 -0.0874123 0 -0.00186437 0.0198832 -0.00299086 0 0 0.00100866 0.00118701 0 -0.00517141 -0.0784042 -0.00296476 1.44387 0.00980002 0.0594109 0 0.00896201 0.0455986 -0.0141278 0.0470264 -0.126927 0 0 0 3.37509 0.158599 -0.754104 0.0140409 -0.0309233 0.380027 0.000572681 -0.00145689 0.0190706 -0.228447 0 0 0 0 0 0 -0.19585 0 -0.00860353 0 0 0 0 0.0437388 -0.0765822 0 0 0.191505 0 0.0534197 0 6.76929e-05 0 0 -0.877506 0 0.199142 -0.0267756 0.0488102 -0.0702562 0 0 -0.00219189 0 -5.11552 0 0.709454 -0.0877932 0 -0.0401689 0.492242 0.0203754 0 0.000320347 0 0 -0.0150761 0 -1.35057 -1.84237 0 0 -0.158619 0 0 -0.653147 -0.942363 -0.0105671 0 -0.595196 0 0.666024 -0.0480757 0.111004 -0.734628 0.156807 0.434925 -0.304269 -0.0492917 1.26012 2.86602 0.0252035 0 0 0 0.346897 -0.0447584 0 0 0 0 0.0200689 -5.8826 -1.69174 0.931484 0.0729132 -0.117054 0.00538293 -0.0123082 -0.0143385 -0.0480647 0.0229348 0 0 0 0 0 0 +446 0 -0.178895 0.303613 -0.00801197 0.0442045 -0.155844 0.105627 -0.0403845 0.0590773 0.127391 -0.0220968 -0.0161936 0.170737 0.005239 1.30097 -0.0230034 0.282409 2.50792 0.010597 -0.066406 6.61046 -0.00150185 -0.352309 -0.00353572 0.0252926 -0.247589 0.328514 -0.0530904 0.276433 1.15171 0.0159607 -0.00603083 -0.220489 -0.482765 -0.274888 -0.171037 -0.0139798 -0.309088 -0.176252 -0.185497 2.58536 0.0240751 -0.842263 -0.0586456 3.65483 0.110272 0.799464 0.565807 -0.57925 0.155951 0.0549753 0.309467 4.50789 0.312217 -0.0146261 -0.0495703 2.55033 0.369646 1.08232 0.0819855 -0.0364326 -0.180946 -6.69205 -0.329368 0.332526 0.0909257 -0.122011 -0.656876 -0.410401 -0.061916 0.160112 -0.195859 -0.0678501 0.300093 1.30294 0.164057 0.718411 2.29274 0.893544 1.03387 0.626013 0.11446 -0.700409 0.129716 -0.0313367 -0.0390129 -0.336787 -0.0187986 0.0367153 -0.181644 0.358748 -1.74369 0 0 0 0 0 -0.00801197 0.0442045 -0.000760558 0 0 0 0 -8.31058e-05 0 -0.00245453 0 0 -0.00028978 -0.000285218 -0.0124733 0 -0.0017496 0.0557432 -0.018552 0 0 0.211658 -9.71575e-06 0 0.0212275 1.34931 0 0 0.0131073 0.275609 0 0.0460161 0 0.0287913 0 0 0.00148616 0 0 0.0447015 -0.00165685 -0.00667242 0 -0.0149963 0.00342275 0 0 0.0628496 0 -0.000242843 0.159843 -0.00366383 0 0 0.000215404 0.00176526 0 -0.000693079 0.0409333 0.00132199 0.716259 0.00806065 -0.0219306 0 -0.00205174 -0.00525897 0.219362 -0.00289878 -0.0913361 0 0 0 0.26861 0.037394 -0.207983 0.00235274 -0.00391207 -0.0278074 0.000190769 -0.000452569 0.00629563 -0.0221714 0 0 0 0 0 0 -0.155844 0 0.105627 0 0 0 0 0.240714 0.157696 0 0 -0.198703 0 -0.0145807 0 -0.0108934 0 0 1.43134 0 -0.317878 0.0665275 -0.0755313 0.211631 0 0 -0.0271057 0 8.31145 0 0.745629 0.260988 0 0.670227 -0.147905 -0.00524701 0 0.0162152 0 0 -0.00219163 0 2.06845 2.98395 0 0 0.432012 0 0 -0.221423 1.76 0.122599 0 0.73442 0 -0.230168 0.0503245 -0.13109 0.0293089 -0.050198 1.11774 0.119609 0.118114 1.08983 5.63267 0.00695879 0 0 0 0.338875 0.0600655 0 0 0 0 0.162997 -3.82694 -0.0429724 -1.34827 -0.128541 0.100656 -0.286286 0.0463915 -0.0348261 0.0787423 -0.17736 0 0 0 0 0 0 +447 0 0.186089 -0.234412 0.033981 0.0428456 0.0615284 -0.318096 0.554503 0.592162 0.45827 -0.397874 -0.179804 -0.254976 -0.00621827 -0.168245 -0.0291536 0.235026 -0.348396 -0.0615601 -0.138567 -0.571199 -0.03277 0.335974 0.0150567 -0.190854 0.57878 -0.290798 -0.0372695 0.702182 1.11617 -0.194295 0.0911035 -0.09282 0.615975 0.27032 0.420801 -0.0201739 -0.0446504 0.566334 -0.169763 -0.970425 -0.0192993 0.94226 -0.00351332 -1.90692 -0.0410566 -0.899151 0.913599 -0.694806 -0.0912549 0.382025 0.0515014 -2.43896 0.266651 -0.108838 0.337747 -1.00042 0.696997 -0.138974 0.156396 0.045596 -1.43587 0.445175 -1.43917 -0.0405315 -0.318013 -0.392952 -0.618318 -0.217176 -0.279686 0.308664 -0.135297 0.232465 -0.372201 -2.05721 -1.32478 -0.937523 -0.134949 -0.247797 -0.457179 -0.638791 0.621693 -1.99294 0.119919 0.0566722 0.229416 -0.647894 0.0069991 0.00668713 -0.0640594 0.340102 -1.68989 0 0 0 0 0 0.033981 0.0428456 -0.00168861 0 0 0 0 -0.000149075 0 0.0127068 0 0 0.000416865 0.000914862 0.0202487 0 0.00380232 -0.0138115 0.0619735 0 0 0.27261 4.24381e-05 0 -0.00872828 0.342136 0 0 0.0454814 0.0110798 0 0.0816015 0 0.0499789 0 0 0.00840188 0 0 0.603928 -0.00293683 0.00972372 0 -0.0327908 -0.0120265 0 0 -0.0658918 0 0.000938598 -0.263216 -0.000679653 0 0 -0.000241972 0.00579059 0 0.00205192 -0.0335051 0.00353232 -0.941239 -0.00118108 -0.0308837 0 -0.0109881 0.0424534 -0.0651385 -0.0555608 0.107168 0 0 0 -2.74681 -0.098896 -0.0396562 -0.00953443 0.0225052 -0.433405 -0.000273201 0.000645675 -0.00901171 0.0103646 0 0 0 0 0 0 0.0615284 0 -0.318096 0 0 0 0 -0.143287 0.522004 0 0 0.27762 0 0.0325992 0 0.0145371 0 0 -0.00629233 0 0.572126 -0.069494 0.0669096 0.00974299 0 0 0.11257 0 -1.0987 0 0.196395 -0.319543 0 -0.596285 0.75765 0.0121116 0 -0.0127288 0 0 0.0588215 0 -0.174383 -0.816723 0 0 -0.0774656 0 0 -0.101605 -2.18232 -0.0471675 0 0.0548701 0 -0.0460559 -0.00596611 0.059534 -0.380367 -0.0119226 -0.0806836 -0.232703 -0.0463157 -1.14266 -7.91678 -0.00113563 0 0 0 0.0416569 -0.0287449 0 0 0 0 -0.07878 -0.744763 -0.795685 2.46738 0.181685 0.145496 -0.162403 -0.112386 0.102087 -0.105044 0.187695 0 0 0 0 0 0 +448 0 0.0928517 -0.333731 -0.0542801 0.0915572 0.00247686 -0.0101009 -0.479692 -0.846492 -0.0116826 1.62158 -0.315241 0.93415 0.0236647 0.216705 -0.0280524 -0.266735 -1.79274 0.200052 0.000794616 2.99895 0.0701926 0.358612 -0.0243345 0.621751 0.0908378 -0.111797 0.0525099 0.103868 1.01434 0.09943 -0.100092 -0.454791 1.33005 -0.310607 -0.0146727 -0.0827164 0.013366 4.68195 -0.610269 0.663735 0.0969057 -1.21855 -0.155203 2.42492 0.382184 -0.0334649 0.418051 -1.00542 0.339343 -1.04542 0.719332 -0.818631 0.478681 0.161606 -0.207209 0.266167 -0.625586 -1.38146 -0.70125 -0.172931 1.86379 5.32044 -1.66033 0.468775 0.417841 0.513622 -0.481363 -0.0784855 0.0276946 -1.2425 0.20701 -0.482005 0.0722202 2.38516 0.477851 0.0802279 -15.6642 -4.85241 -0.438484 -2.18112 1.26345 -4.04718 -1.28987 0.71487 -1.31236 0.68655 -0.0651526 0.124468 -0.375774 0.654261 -1.53571 0 0 0 0 0 -0.0542801 0.0915572 -0.0016877 0 0 0 0 -0.000237796 0 0.0186665 0 0 -0.000259613 -3.82666e-05 -0.00568472 0 -0.00135352 -0.0325615 0.115143 0 0 -0.106463 1.75276e-05 0 0.0109078 -0.888689 0 0 -0.0159869 -0.182154 0 -0.123571 0 -0.0554905 0 0 -0.00805413 0 0 -0.432348 -0.00482242 -0.009223 0 -0.0342727 0.0452682 0 0 -0.0959523 0 0.000131515 0.110117 -0.00228757 0 0 0.00177273 0.004915 0 -0.00717982 -0.0220051 -0.00962711 2.09242 0.0215255 0.0366906 0 0.0116474 0.0211947 0.382302 0.00201111 -0.19458 0 0 0 3.76551 0.185677 -0.237699 0.0174622 -0.040558 0.471529 0.000623228 -0.00166176 0.0208868 -0.0899333 0 0 0 0 0 0 0.00247686 0 -0.0101009 0 0 0 0 0.0145184 -1.44191 0 0 0.1776 0 0.0516509 0 -0.0859776 0 0 0.172166 0 0.309741 -0.0435688 0.040098 -0.0035993 0 0 -0.598753 0 -4.89486 0 0.652415 -0.36129 0 -0.131576 0.561196 0.0208806 0 -0.00112869 0 0 -0.205715 0 -1.37053 0.345812 0 0 -0.0110448 0 0 1.32272 -2.55386 -0.0288376 0 1.38399 0 0.275047 -0.113122 0.0726844 -0.649337 0.126241 0.0491368 -0.397709 -0.112201 0.880391 4.19192 0.0187619 0 0 0 -0.497919 -0.0236647 0 0 0 0 0.523061 -4.31505 -1.20323 1.07011 0.295662 -0.26277 0.38176 0.0337947 -0.0440312 -0.00260971 0.034446 0 0 0 0 0 0 +449 0 0 0 0 0 -0.508141 -0.279635 -0.508479 -0.0735797 0 0 -0.528127 -1.88875 0 -4.14034 -0.28967 0 0 0 -0.793291 0.75561 0 0 0 0 -0.0771212 0 0 0.794218 3.25158 -1.11841 0 -1.23818 0 0 -0.121239 -0.147894 0 0 -0.630006 0.124501 0 0 -0.212128 -7.5052 0 -0.226741 1.65248 -2.81534 0.398593 -2.15468 0.118328 0 1.06976 -0.844052 0.918812 2.13891 1.38459 -0.495765 0 0 -0.66762 1.41404 0 0.44718 0.604512 1.6082 0 0 0 0 -0.767318 -0.392897 0 0.368097 -1.86811 0 0 0 -0.268496 0 0.283529 -3.2189 0 0.15859 -0.868181 0.730721 0 0.50702 -0.990867 1.58577 -6.78566 0 0 0 -0.0171853 -0.0137756 0 0 0 -0.0116207 0.00905507 0 -0.00283888 0 0.00185273 0.0198979 0 0 0 0 0.0567242 0 0.00795702 0 0.16734 0 -0.0352457 -0.358326 0 -0.00164462 0 0 -0.0803226 0.00100248 -0.0491129 0 0.000324536 0 0.000475896 -0.165013 -0.0121982 0.0190934 -0.0227765 0 9.78819e-05 0 0 0 1.7107e-05 0 0 -0.0024877 0.000708757 0.0231693 -0.00541039 0 0 -0.00804386 0 -0.000773317 0 0 0.000255303 0.00311638 0.12127 -0.0251276 0 0 0.0165908 0.0160321 -0.0141498 0.0595818 0.237985 0 -0.0547876 1.63983e-05 -0.123076 0 0 0 -0.758441 0 -0.088298 0.110659 0 -0.00810773 0.0016793 -0.0294079 0 -0.000843292 0.000235048 -0.00351679 0.0217412 0 -0.508141 -0.0171853 -0.279635 -0.0137756 -0.133451 -0.0429206 -0.0927567 -0.888811 -1.95733 0.0164615 -0.0240949 0.0738384 0.00308881 0.0333288 -0.0234189 -0.10431 -0.0280155 0.0861645 0.0461399 0.372552 -0.273627 -0.227837 0.110487 0.00562758 -0.360252 0.0886451 -1.05341 0.00432354 -11.7129 -0.382837 -2.3167 -1.44616 -0.003666 -1.14466 -0.870896 0.0278492 -0.009278 -0.156045 -0.0645876 0.580256 -0.216414 0.0161418 -4.49819 -0.717758 -0.00108472 -0.0562274 -0.0707402 0.0406311 -0.354398 -0.391886 -2.74081 0.394795 0.0187547 -4.27462 0.0421874 1.31147 -0.127818 0.0346904 -0.89094 0.269119 -1.50677 -0.685286 0.175973 1.38789 -5.292 -0.327223 0.091923 -0.0726092 -0.0299604 -0.807721 -0.144477 0.0933843 -0.0346773 0.0552345 0.0258302 0.592719 10.5328 0.239722 4.03471 -0.107062 0.653639 0.186271 -0.0179894 0.108868 -0.372543 0.887808 -0.00660617 0.107273 -0.282933 0.290774 -0.253325 0 +450 0 0 0 0 0 0.0452273 -0.301852 0.547598 0.93661 0 0 -0.0860229 -0.89695 0 -1.94878 -0.0642786 0 0 0 -0.0409444 -3.1174 0 0 0 0 0.353246 0 0 0.653169 2.31596 -0.654368 0 -0.376706 0 0 0.233838 -0.0119411 0 0 -0.323958 -1.10066 0 0 -0.106118 -3.6496 0 -0.807328 1.11358 -0.444276 0.17366 -0.657111 0.533714 0 0.0876917 -0.0516302 0.334799 -0.404098 -0.215934 -0.47645 0 0 0.777182 2.40689 0 0.386828 -0.141491 0.150317 0 0 0 0 0.293086 -0.701726 0 0.988864 -0.412383 0 0 0 -0.681684 0 0.458491 -2.67008 0 0.350751 -1.03931 -0.872701 0 0.341248 -1.18756 1.89438 -6.60407 0 0 0 0.0131711 0.0055001 0 0 0 -0.0434183 0.0275415 0 -0.00420825 0 -0.00101648 0.00434066 0 0 0 0 0.112825 0 0.00524601 0 0.177779 0 -0.406343 0.100982 0 0.00215002 0 0 -0.0108357 0.000154669 0.00743598 0 0.0021959 0 0.00145129 0.173577 0.00858544 0.00392581 0.0194236 0 -5.51353e-05 0 0 0 0.000115994 0 0 -0.000349826 0.00216293 0.109246 0.00629596 0 0 0.00779634 0 -0.00235995 0 0 0.0123199 0.0239349 -0.0929835 0.00536974 0 0 0.0298623 -0.00326606 0.00799948 0.0730221 0.0316837 0 0.151015 0.00858021 -0.00188392 0 0 0 -0.527157 0 -0.0104277 0.106983 0 9.45423e-05 0.000492422 -0.0577449 0 -7.07693e-05 0.00114407 -0.021273 0.248226 0 0.0452273 0.0131711 -0.301852 0.0055001 -0.000759462 -0.0702237 -0.205695 0.184478 -1.31729 -0.0171683 -0.00420544 -0.323976 -0.0031621 -0.0553211 -0.00925249 -0.0440368 0.00397209 -0.0936563 0.195687 -0.454507 -0.365109 0.0411601 -0.19222 0.00187022 0.117277 -0.0118179 -0.514787 -0.00475851 -5.34517 0.134742 -1.84362 -1.53546 0.000179718 0.454146 -0.862748 -0.033683 0.00354156 0.0266004 0.00566599 -0.042638 -0.106701 -0.00502797 -2.96801 0.779984 -0.00114628 0.0331718 0.090577 -0.0310486 0.172412 0.512617 1.58192 -0.010864 -0.0458885 1.18646 0.101205 -0.534142 0.0894316 -0.114218 -0.00883025 0.259556 -0.66796 0.493707 -0.173492 2.77375 11.4292 -0.128387 -0.0972172 -0.00772412 0.18614 0.0471774 0.0605189 -0.0711022 0.0282956 -0.124137 0.00539288 0.630899 8.38195 1.06082 -1.07651 0.283577 -0.470975 0.820629 0.0288963 -0.0378515 -0.073425 0.276781 0.00718056 0.0118583 0.0257822 -0.0849274 0.263696 0 +451 0 0 0 0 0 0.0541101 0.253474 -0.460166 -1.71197 0 0 0.0652358 0.125386 0 0.820754 0.0206052 0 0 0 -0.0156056 -6.03553 0 0 0 0 -0.572588 0 0 -0.151961 3.99942 0.285019 0 0.232535 0 0 -0.276304 0.0450923 0 0 -0.565192 -0.298378 0 0 -0.136464 -0.167388 0 0.81423 0.888487 0.627361 0.275344 -1.12736 0.351629 0 -0.0424861 -0.0673944 -0.0572604 -2.29834 -0.413928 -0.037067 0 0 -0.52929 -1.92433 0 1.35293 0.906451 1.07952 0 0 0 0 -0.463601 -0.853567 0 -1.77798 0.536461 0 0 0 2.34534 0 1.16341 -4.17848 0 0.608406 -1.49187 3.00708 0 0.659225 -1.50981 2.67774 -9.27082 0 0 0 -0.00263876 0.0299535 0 0 0 -0.0242921 -0.00180662 0 -0.000138615 0 -0.00349082 -0.0521829 0 0 0 0 -0.162635 0 -0.024601 0 -0.397448 0 -0.251384 -0.220025 0 0.00287643 0 0 0.258989 -0.00194736 0.011035 0 0.0006504 0 -6.93384e-05 -0.0272121 0.0299582 -0.0379594 0.0142189 0 -0.000183319 0 0 0 3.4984e-05 0 0 0.00480227 -9.31252e-05 0.202947 0.0105227 0 0 0.0411843 0 0.000101608 0 0 0.00939611 0.0098384 -0.0235003 0.0515038 0 0 0.0814361 -0.0256114 0.016044 -0.0679641 0.13025 0 0.308839 0.00903673 0.0736952 0 0 0 1.18454 0 0.168685 -0.754543 0 0.0145552 -0.0452551 0.0295359 0 0.00158545 -0.00575707 0.0218709 -0.283015 0 0.0541101 -0.00263876 0.253474 0.0299535 -0.251344 -0.171672 0.234684 -0.874646 1.35156 -0.0381956 0.0870073 -0.458588 -0.00692634 -0.0736246 0.0543332 0.0701247 0.0502309 -0.21143 -1.25834 -2.56153 -0.143188 -0.194048 -0.182937 -0.160488 0.608947 0.0349477 0.511622 -0.0535908 2.1347 0.291464 -2.19341 1.01578 0.00832978 -1.02866 -0.865142 -0.0284384 0.00614132 -0.150689 0.029044 0.223199 0.217914 0.00643245 1.15129 -2.37336 0.00866076 0.0563432 -0.343379 -0.355385 -0.0120391 0.791531 -1.60617 0.099974 -0.179308 -0.0836832 -0.115107 0.387889 0.255077 -0.184554 -0.177974 0.0329571 -0.874892 0.579481 -0.271835 -4.70191 -21.0185 0.0131768 0.365594 0.0425024 0.0829885 -0.631028 0.142947 -0.200087 0.07777 0.117101 -0.00908402 -0.6947 9.9723 1.42836 2.40867 0.564715 -0.962076 0.607683 0.0547764 -0.154601 0.295875 0.296716 0.0162102 -0.0700342 0.176447 -0.10322 -0.319454 0 +452 0 -0.591234 -0.149704 0.00190827 -0.0303333 -0.145327 -0.0888754 0.573862 0.952195 0.00137139 -0.618903 0.00915888 0.873623 -0.000842184 0.963034 0.00653155 -1.06603 -2.41975 -0.231731 0.00965237 -2.16258 -0.068409 0.132004 0.000484171 -0.226785 0.621866 -0.494543 -0.118029 -0.00284116 -0.233306 0.273644 0.00305866 0.0714028 -0.00446371 -0.642894 0.361574 0.00590482 -0.413687 -0.48659 -0.0692312 -1.17874 -0.00590827 -1.74248 -0.00134533 2.28701 -0.0439227 -0.61178 -0.132441 0.0987907 -0.0297282 -0.12411 -0.159892 5.31387 -0.114716 -0.0120648 -0.0208616 -1.20647 -0.291239 -0.118041 0.307924 0.0082424 -0.379891 1.40012 0.218139 0.192434 0.529069 -0.24832 0.0857127 -0.538049 -0.00845816 0.286669 -0.153736 -0.0659626 0.539911 -0.36223 0.258241 2.22677 2.07804 0.679526 -1.37006 0.305633 -0.499458 1.07319 0.596887 -0.330311 0.430709 -0.7231 0.000567231 0.00180876 0.0259935 0.0458296 0.260137 0 0 0 0 0 0.00190827 -0.0303333 -0.00010235 0 0 0 0 -6.13904e-05 0 -0.00265061 0 0 0.000848474 0.00198992 -0.00493395 0 -0.000467682 -0.033595 -0.0336614 0 0 0.045996 0.00010534 0 0.017713 -0.621626 0 0 1.26179e-05 -0.190599 0 0.0993129 0 0.0110675 0 0 0.000738008 0 0 0.323338 -0.00115968 0.0160368 0 -0.00192692 -0.0343897 0 0 0.0374118 0 -0.000209901 -0.181753 -0.00288117 0 0 -0.00163447 0.000156615 0 0.000448433 -0.0245968 -0.0029967 0.470208 -0.0127139 0.013889 0 -0.00252492 -0.00311676 0.156746 -0.0391207 -0.00534575 0 0 0 -2.65713 -0.192702 -0.0794383 -0.0120364 -0.0105523 -0.00416797 -0.000722725 -0.000633747 -0.00133508 0.00308115 0 0 0 0 0 0 -0.145327 0 -0.0888754 0 0 0 0 0.217955 0.187127 0 0 -0.138408 0 -0.0159472 0 0.0229359 0 0 0.100841 0 0.491298 0.0624314 -0.0268799 0.0118754 0 0 0.21954 0 4.69639 0 1.57219 0.932037 0 0.420415 0.825191 -0.00200947 0 0.0301182 0 0 0.0223004 0 2.47503 0.0896714 0 0 0.0161977 0 0 -0.0737568 0.0271088 -0.10087 0 0.0298194 0 0.749693 -0.137212 0.0587847 0.295263 -0.00940075 0.771704 -0.604823 0.131582 -1.01228 -3.05885 0.0196474 0 0 0 -0.00669762 0.0507456 0 0 0 0 -0.184612 -1.97648 0.0616562 0.382507 0.272059 -0.0350279 -0.48487 0.152831 -0.100503 0.02643 -0.0993628 0 0 0 0 0 0 +453 0 -0.103913 0.245471 0.000264626 -0.0532952 -0.172014 0.256313 -0.34299 -0.113633 0.252374 0.338631 -0.0220635 0.300878 0.000916996 0.651027 -0.00459884 3.29778 10.6911 0.165835 -0.00722392 1.50597 0.0563865 -0.12808 0.00132332 0.122258 -0.422297 1.07691 0.0990303 -0.619636 -0.649823 0.302123 0.0186624 -0.111256 -0.00724949 0.61155 -0.371503 -0.00165752 0.444276 0.411415 -3.76547e-05 1.228 0.00566528 2.05049 0.00185907 1.05771 0.0352622 0.961492 -0.593475 -0.181894 -0.00648396 0.631001 0.132593 -7.74504 0.0324082 0.0121953 0.0309651 -0.0897136 0.175571 0.244477 -0.185095 -0.00998693 -0.677743 -1.25232 -0.526875 0.929993 -0.298489 0.516634 -0.533308 0.396 -0.117067 0.0812237 -0.239165 -0.151338 -0.863292 0.262496 0.486581 -2.44083 0.0526788 -0.0965409 -0.913599 -0.124424 -0.0259768 -0.880258 -0.323247 0.185905 -0.235546 0.302301 -0.000455387 -0.00109298 -0.0154628 0.0201672 0.724555 0 0 0 0 0 0.000264626 -0.0532952 0.00163468 0 0 0 0 0.000192842 0 0.0111069 0 0 0.000696842 0.000584229 0.00845195 0 0.00115628 0.039711 0.074532 0 0 0.0140852 3.09373e-05 0 -0.00207869 1.0126 0 0 0.00743147 0.241485 0 0.00136361 0 -0.00572624 0 0 -7.75382e-05 0 0 0.0492218 0.00364272 0.0130442 0 0.0307938 -0.0187801 0 0 0.162591 0 0.00330883 0.208333 0.000642428 0 0 -0.00134785 -0.00253502 0 0.00967456 0.0154577 -0.000109871 -0.105132 0.0349319 0.0179718 0 0.00179046 0.0136259 -0.0689327 0.00666176 0.0497104 0 0 0 -2.77507 -0.220151 -0.377403 -0.0163205 -0.0143349 0.0618544 -0.00058077 -0.000508913 -0.00109312 -0.00599226 0 0 0 0 0 0 -0.172014 0 0.256313 0 0 0 0 -0.0565483 0.152699 0 0 0.110682 0 0.016333 0 -0.00226185 0 0 0.288085 0 -0.53694 -0.00315393 0.00336901 0.0452819 0 0 -0.0303252 0 5.09475 0 0.521808 0.756549 0 0.037105 -0.436074 0.0037952 0 -0.00753263 0 0 0.0169858 0 1.74399 0.348493 0 0 0.0498033 0 0 -0.175719 0.558189 -0.00654015 0 0.804735 0 0.281718 0.0408293 -0.0101525 0.0369778 0.0512192 0.325976 0.0679488 0.0136069 0.440032 5.98983 0.0155683 0 0 0 0.210231 -0.00172829 0 0 0 0 -0.0529546 -4.24068 -0.70716 -0.256351 0.0367875 -0.21813 0.105857 -0.0016922 -0.00262581 -0.0284508 0.0319828 0 0 0 0 0 0 +454 0 -0.165301 0.122601 -0.0128443 0.000703636 -0.0075436 -0.0904831 0.0587629 0.829665 -0.218566 -0.11716 -0.144234 -0.722066 0.00175935 -2.36356 -0.0207349 -0.51198 -3.94949 -0.0784968 -0.00878749 -1.43701 0.00956759 -0.296753 -0.00308456 0.0250142 0.100926 0.10569 -0.0243574 -0.12662 -0.402356 -0.38771 -0.0279192 -0.317941 -0.889212 -0.31447 -0.0501498 -0.021664 -0.181646 -2.63258 -0.119269 -0.849095 0.0111173 -0.946526 -0.0162577 -4.46667 0.0685818 -0.493514 -0.204825 -0.266255 0.012695 -1.27226 -0.0724648 4.65264 0.0835541 0.0306515 0.104545 1.82417 0.764828 0.318597 -0.0720582 -0.0237788 0.413926 0.718969 1.95667 1.03112 0.672389 0.351562 -0.0408835 -0.155435 0.094048 0.375231 0.00303296 -0.046902 0.395594 0.0770055 0.182685 1.95659 5.74899 1.7739 -2.69298 1.30481 -1.5237 2.87387 0.0744738 -0.164699 0.235301 -0.972318 -0.000885685 -0.00135609 -0.0356364 0.0789666 0.448629 0 0 0 0 0 -0.0128443 0.000703636 0.00135135 0 0 0 0 0.000254883 0 0.0087045 0 0 -0.00114936 -0.00343641 0.0123581 0 0.00140507 0.0266985 0.0837799 0 0 -0.194396 -0.000181905 0 -0.0207055 -0.0463544 0 0 -0.0210587 0.0523214 0 -0.115711 0 -0.0331406 0 0 -0.0035567 0 0 -0.356029 0.00481471 -0.0218137 0 0.0254526 0.0616434 0 0 0.158243 0 0.00274216 0.90306 0.00664125 0 0 0.00220928 -0.00209051 0 0.00931176 0.0506014 0.00641323 0.729309 0.0751816 -0.0182991 0 0.00797865 -0.00665816 0.103762 0.0319154 0.024103 0 0 0 1.54349 0.144975 -0.220392 0.00434761 0.00379144 -0.026848 0.000987884 0.000866503 0.00181113 -0.00748555 0 0 0 0 0 0 -0.0075436 0 -0.0904831 0 0 0 0 0.398329 -1.09992 0 0 -0.0717431 0 -0.0154306 0 -0.0613585 0 0 0.251147 0 -0.752118 0.0606598 -0.107315 0.000303068 0 0 -0.62705 0 -6.42681 0 -2.66202 -0.810815 0 0.544915 -1.31564 -0.0179547 0 0.0520164 0 0 -0.118364 0 -2.18441 -0.284512 0 0 -0.0898578 0 0 -0.0606401 3.42642 -0.302304 0 -0.692965 0 -0.694275 0.0899162 0.03538 0.39529 0.0650517 0.364629 0.538904 -0.0927521 2.35698 11.0822 -0.00995015 0 0 0 -0.022052 -0.0119937 0 0 0 0 0.318113 12.4252 0.634607 -0.908053 0.570775 -0.562689 1.05968 -0.0833063 0.0266413 0.063053 -0.292152 0 0 0 0 0 0 +455 0 -0.596238 0.175492 -0.0242066 -0.0049721 -0.12181 0.25711 0.366313 -0.0969165 0.0232853 0.908958 0.401552 1.45398 0.00991346 3.52669 0.183359 2.05388 8.08953 0.218797 0.315338 -0.135463 -0.00513747 -0.021717 -0.0111192 0.152412 -0.28234 0.534729 -0.171492 -0.660806 -1.52131 0.967951 -0.0297521 1.07671 0.357225 -0.0262277 -0.0705383 0.0745534 -0.48167 2.23709 0.250259 0.446843 0.0455392 -0.260577 0.0394018 6.38156 0.207668 0.655445 -1.09124 1.78284 -0.111786 2.30864 0.579189 2.8626 -0.566057 0.401881 -0.662762 -0.850193 -1.13601 -0.131177 -0.309025 -0.0748358 1.70553 -0.0860244 -1.18067 1.27974 -0.0194358 -1.38773 -1.01271 -0.709271 -0.0111606 -0.863663 0.829194 0.857431 0.249697 -0.0129329 1.20354 0.358574 -6.95622 -2.70908 0.682676 -0.900009 0.9338 -1.69668 -0.453921 0.617927 -0.666317 -1.2045 -0.187857 0.0681619 0.323087 -1.7684 5.34776 0 0 0 0 0 -0.0242066 -0.0049721 -0.000199505 0 0 0 0 -8.39877e-06 0 -0.00636941 0 0 0.000369548 0.00023134 -0.00947719 0 -0.00134797 -0.0824972 -0.0367937 0 0 -0.0498879 1.22465e-05 0 -0.0115281 -1.08353 0 0 -0.00821112 -0.312902 0 -0.0613687 0 -0.0230667 0 0 -0.0037581 0 0 -0.107549 -0.000158656 0.00698089 0 -0.00376871 -0.0175227 0 0 0.0641101 0 -0.00038432 -0.0834721 -0.00162403 0 0 -0.000711887 0.00032481 0 -0.00147687 -0.0334941 -0.00173255 0.834003 -0.0152054 0.0100959 0 -0.00182218 -0.00752879 0.0425267 -0.010794 0.00202473 0 0 0 -0.215887 -0.0613471 0.0379925 -0.0029316 -0.00257056 0.00262825 -0.000314349 -0.000275635 -0.000581422 0.00202046 0 0 0 0 0 0 -0.12181 0 0.25711 0 0 0 0 0.339881 0.507653 0 0 -0.173861 0 -0.0330416 0 0.0613923 0 0 -0.10416 0 -0.646589 0.0825957 -0.120294 -0.0106983 0 0 0.644314 0 6.63977 0 -0.488398 0.899628 0 0.612504 -0.817477 -0.0219764 0 0.045802 0 0 0.0377875 0 2.91005 0.448443 0 0 0.0692516 0 0 -0.083765 1.48104 0.17698 0 0.883495 0 -0.0520263 -0.132252 0.00842365 0.38213 -0.0264132 0.246715 -0.179797 -0.0644236 -0.772475 3.17091 0.0512004 0 0 0 0.114091 0.0518327 0 0 0 0 -0.198054 7.29249 -0.327701 0.755135 -0.152123 0.0363816 0.612203 0.049755 -0.0400545 0.0615798 -0.219804 0 0 0 0 0 0 +456 0 -0.157547 -0.0821711 0.0452497 0.0337447 -0.101066 -0.0652373 0.790643 1.6482 0.168637 -1.0128 0.27626 1.38768 -0.0172727 1.93567 0.112135 -0.646139 -0.710164 -0.199098 0.175334 -0.605982 -0.0149172 0.195475 0.0210646 -0.29425 0.6256 -0.346253 0.0878084 -0.0209967 -0.669588 0.656878 0.0751442 0.577684 0.199971 -0.0333853 0.336153 0.0670087 0.29932 -0.201813 0.502086 -0.337308 -0.0713441 0.4528 0.129846 3.40257 -0.280428 -0.102735 -0.253019 0.959467 -0.287402 0.722356 -1.05415 6.02402 -0.304532 0.219182 -0.317441 1.14827 -0.3812 -0.228315 0.467353 0.124327 0.358559 1.26965 1.91599 -1.90082 -0.38778 -0.148363 1.31181 0.494926 -0.0800873 1.05994 0.164416 0.563724 -0.272586 0.277065 0.327708 0.0370394 2.97759 1.71626 -3.42164 -0.1229 -1.14459 1.95879 0.897672 -1.1907 1.93002 -3.43559 0.253676 -0.471989 0.795742 -1.46722 2.35376 0 0 0 0 0 0.0452497 0.0337447 0.000445143 0 0 0 0 1.35883e-05 0 0.0110454 0 0 -0.000181855 -0.000150837 0.0150195 0 0.00248823 0.0959501 0.0487009 0 0 -0.0808322 -7.98485e-06 0 0.0288953 0.2199 0 0 -0.00548687 0.245572 0 0.150429 0 0.00224527 0 0 0.00205343 0 0 0.339558 0.000256687 -0.00343529 0 0.00840891 0.0108175 0 0 -0.00742057 0 0.000857512 0.170996 0.00147121 0 0 0.00035032 -0.00072473 0 0.00267229 -0.0101477 0.00137705 -0.514339 0.0186614 -0.00257763 0 0.00210626 0.0107533 -0.206058 0.00629271 0.0416761 0 0 0 -0.873286 0.0112747 -0.10049 -0.000495455 -0.000434437 0.00116154 0.000154691 0.00013564 0.000286118 -0.00092301 0 0 0 0 0 0 -0.101066 0 -0.0652373 0 0 0 0 0.153603 1.32732 0 0 -0.0135 0 0.00221311 0 0.0546102 0 0 -0.0927143 0 0.699537 0.0266307 -0.00859999 0.0148894 0 0 0.56743 0 5.76852 0 2.23022 1.0374 0 0.326366 1.13574 -0.00137634 0 0.0138805 0 0 0.132581 0 2.6747 -0.789935 0 0 -0.0419603 0 0 -0.0332616 -0.251335 0.114974 0 1.12477 0 0.347534 -0.0275567 -0.000508235 0.235343 0.157971 0.306208 -0.142274 -0.155138 -1.36702 -2.19224 -0.0223658 0 0 0 0.231573 0.0316866 0 0 0 0 -0.435399 -10.7185 -0.603129 -0.577652 0.210843 -0.144284 -0.583532 0.0690879 -0.0526042 0.00393079 -0.0529428 0 0 0 0 0 0 +457 0 0.466328 0.464227 0.111663 0.171787 -0.22975 -0.297956 1.88234 4.19889 0.478617 -2.25649 0.295472 0.327274 -0.0415639 1.4033 0.143935 3.59726 11.0146 -0.173766 0.23217 -0.765132 0.0387966 -0.166676 0.0519595 -0.578909 1.04733 1.14769 0.5018 0.410227 -0.240011 0.380535 0.190998 0.637081 -1.05305 1.68671 0.582115 0.0906502 1.04351 -5.70262 0.744417 -0.545176 -0.164388 4.19054 0.230538 0.738515 -0.60167 -0.460696 0.228107 1.17906 -0.468197 2.36303 -1.4534 -16.8877 -0.384569 0.319019 -0.430115 -1.68186 -0.603213 -0.00208347 0.930603 0.280204 1.2753 -0.151001 4.13817 -4.06279 -2.01524 -0.956631 3.01357 1.61507 -0.228011 1.4943 0.397036 0.538904 -1.42974 -0.754169 0.286385 -5.13378 18.4353 7.64669 -7.28236 4.58351 -4.64937 7.15821 1.72437 -2.25638 3.56108 -6.63441 0.544271 -0.862132 1.16606 -1.518 0.843695 0 0 0 0 0 0.111663 0.171787 0.000461931 0 0 0 0 1.69148e-05 0 0.00470345 0 0 -0.000539799 -0.000356099 0.0280669 0 0.00198976 0.0956417 0.0734165 0 0 -0.00795111 -1.88509e-05 0 -0.0996567 0.382424 0 0 0.00656512 0.201286 0 -0.228543 0 0.0349839 0 0 0.00814271 0 0 -0.533026 0.000319526 -0.010197 0 0.00872603 0.0271558 0 0 0.0921096 0 0.000889851 0.302251 0.0027022 0 0 0.00103985 -0.000752061 0 0.00318032 0.0503482 0.00278823 0.250075 0.0294033 -0.00995032 0 0.00354147 0.00437538 0.100362 0.010894 -0.0438288 0 0 0 1.68392 0.0761614 -0.104695 0.00290418 0.00254651 0.0200088 0.00045917 0.000402621 0.000849284 -0.00441368 0 0 0 0 0 0 -0.22975 0 -0.297956 0 0 0 0 0.244187 1.80931 0 0 -0.311485 0 -0.0361483 0 0.0496923 0 0 0.0158847 0 0.0662863 0.0703429 -0.0425528 0.0114968 0 0 0.508636 0 5.23854 0 -1.73041 -0.135067 0 0.610605 -0.239447 -0.00483275 0 0.0323541 0 0 0.183047 0 1.18819 -1.09558 0 0 -0.119288 0 0 -0.00765763 1.81895 0.235787 0 1.65363 0 -0.331505 0.113856 -0.169219 0.399072 0.0595778 0.387761 0.0710193 0.0294003 -1.03843 3.58244 -0.0614331 0 0 0 0.250844 0.0249573 0 0 0 0 -0.454315 11.0323 1.26604 -0.419868 0.606341 -0.394729 0.489759 0.0633703 -0.0671886 0.1251 -0.273054 0 0 0 0 0 0 +458 0 0 0 0 0 -0.0420824 0.00200912 -0.573145 -0.426739 0 0 0.316174 0.0678952 0 -0.359524 0.0229051 0 0 0 -0.0597296 -1.37646 0 0 0 0 0.192378 0 0 -0.150198 -3.49555 -0.101178 0 -0.356431 0 0 0.031624 0.0513134 0 0 1.49526 -1.12562 0 0 0.402711 0.335633 0 -0.591908 -0.909714 -1.47721 -0.879495 -0.0861151 -0.718679 0 0.177196 -0.0393848 0.528522 -0.683273 -0.343208 -0.81281 0 0 0.0847611 0.563647 0 -2.61717 -0.525277 -0.350568 0 0 0 0 -0.0513922 1.21054 0 -1.16618 -1.14838 0 0 0 0.079893 0 -1.08149 1.8199 0 -1.11008 0.886659 0.774698 0 -1.90452 2.4795 -3.5565 9.05514 0 0 0 -0.12266 -0.0422807 0 0 0 -0.0263009 -0.0165526 0 -0.00350873 0 0.00488964 0.00748795 0 0 0 0 -0.0759867 0 -0.0045064 0 0.0373455 0 -0.181206 0.0981371 0 0.00161096 0 0 0.0990725 0.00180071 0.0159707 0 -0.00105613 0 -0.00118721 -0.0713383 0.0166267 0.026254 -0.00868395 0 0.00033318 0 0 0 -8.09572e-05 0 0 -0.00155779 0.00437792 -0.0518369 0.0140046 0 0 0.0205882 0 0.0109034 0 0 0.045641 -0.017849 -0.102875 0.00644062 0 0 0.018708 0.0407315 0.043385 0.0450712 -0.0530431 0 -0.0807357 -0.0149909 -0.431233 0 0 0 -0.0592387 0 -0.0177822 -0.0765621 0 0.00161421 -0.0022861 0.000503272 0 -0.00179602 0.000506418 -0.0033735 -0.0726868 0 -0.0420824 -0.12266 0.00200912 -0.0422807 0.33634 0.0788617 -0.117931 0.298891 -2.56134 0.0682774 -0.150505 -0.174705 0.0101589 -0.0145804 -0.0388833 -0.111728 -0.11736 0.429219 0.811389 1.93157 0.323334 -0.0553972 -0.507243 0.0778429 -1.23262 -0.136226 -0.897638 0.0215785 -0.092696 -0.104191 2.6717 0.305627 -0.00739985 -0.422736 0.951325 -0.0693723 -0.00722836 0.050822 -0.0525485 -1.06231 -0.333257 -0.017476 0.394619 2.15973 -0.0146198 -0.0199369 0.225362 0.210244 -0.531666 -0.329471 2.61179 -1.00043 0.274341 0.14258 0.00221825 -0.168255 -1.20304 0.962405 0.432681 -0.225507 0.039714 -0.646964 -0.0337401 -2.34835 -1.06981 -0.140988 0.328698 -0.172536 -0.407316 -0.332327 0.0651298 0.0688508 -0.161687 -0.0308713 0.195251 0.211821 -5.05376 0.0533676 1.69025 -2.42649 1.27887 0.978843 0.114153 -9.6336e-05 0.356129 0.0684254 -0.649215 0.287003 0.149352 -0.306587 0.947739 0 +459 0 0 0 0 0 -0.552966 -0.197443 0.265572 0.914421 0 0 -0.161659 -0.321169 0 0.0852474 0.0580344 0 0 0 0.252899 0.665506 0 0 0 0 0.193859 0 0 0.483486 3.94216 -0.255588 0 0.658886 0 0 0.120589 -0.0133245 0 0 -1.04644 -0.175819 0 0 -0.171259 0.313105 0 -0.347374 1.11992 1.29807 0.420114 1.1829 -0.0104188 0 -0.750379 0.0151461 0.0456052 -0.631325 -0.430027 0.290175 0 0 0.095833 -1.60221 0 0.16349 -0.41824 0.210256 0 0 0 0 -0.107322 -0.175871 0 -0.521194 -0.527325 0 0 0 -2.03106 0 0.709473 -3.12225 0 0.50509 -1.01667 -1.31618 0 1.05959 -1.74027 2.20289 -7.39217 0 0 0 0.144232 0.0341451 0 0 0 0.00150369 0.00115728 0 0.000627675 0 0.00368588 0.0356197 0 0 0 0 0.0832798 0 0.0142794 0 0.196353 0 -0.0123809 0.219177 0 -0.00598371 0 0 -0.111177 5.43279e-05 0.0699515 0 0.00509179 0 5.73062e-05 0.18322 -0.028158 -0.000751813 0.0350062 0 0.00028884 0 0 0 0.00036831 0 0 0.0109248 0.00976691 0.0117851 -0.0411817 0 0 -0.0119407 0 0.0087341 0 0 -0.0280845 0.00963036 -0.13489 0.0126829 0 0 0.00418204 0.0917905 0.0214831 0.00466596 -0.129351 0 0.018404 -0.0370417 0.145133 0 0 0 -0.110906 0 0.0133477 0.0153233 0 -0.00400717 0.0127465 -0.0789728 0 0.00216294 -0.00310213 -0.000456794 0.0407082 0 -0.552966 0.144232 -0.197443 0.0341451 -0.486268 -0.110654 0.152781 -0.283247 1.76138 -0.0485675 0.00190774 0.198736 -0.00753394 0.0386542 0.030862 0.128299 0.00721622 -0.276792 -0.937803 -0.682301 -0.0656619 -0.050823 0.360345 -0.152138 0.0120613 0.0818213 1.13608 -0.0296925 -0.843239 -0.326589 -1.13601 -0.838654 0.00494051 0.274087 -0.318693 0.0559469 -0.00390057 -0.0518363 -0.0441479 1.00082 0.212682 0.00539014 -0.9455 -1.49858 0.00151791 -0.0251736 -0.281913 -0.150316 0.0934952 -0.279695 -2.75991 0.589732 -0.0644275 -0.913395 -0.0194866 0.206177 1.07652 -0.386244 -0.251672 -0.150936 -0.114715 0.505484 0.25611 -1.13992 -6.26597 0.313147 -0.250708 -0.120782 -0.00618822 0.13829 -0.098012 0.115181 0.117869 -0.000326196 0.102099 -0.470377 2.14886 -0.140397 -1.66044 1.12092 0.0467377 -1.9207 -0.138709 0.220402 -0.520827 -0.173662 0.418662 0.132843 -0.65646 0.618823 -1.06316 0 +460 0 0 0 0 0 0.483647 -0.173367 -0.0610553 -1.38214 0 0 -0.380333 -0.265926 0 -0.927493 -0.0585696 0 0 0 0.169809 3.57197 0 0 0 0 0.289218 0 0 0.660767 0.544581 -0.570984 0 0.220999 0 0 0.35391 -0.0364333 0 0 -1.86443 -0.108057 0 0 -0.404916 2.13692 0 -0.913541 0.537537 2.07492 1.09577 -3.14194 0.481345 0 -0.215543 0.281928 -0.492356 1.64269 -0.664646 -1.03986 0 0 0.107017 1.91735 0 0.955491 1.29363 0.509837 0 0 0 0 -0.0548264 -2.34961 0 0.175223 0.72958 0 0 0 2.37919 0 2.27185 -0.800263 0 1.23884 -0.976005 3.79858 0 2.00572 -1.46096 3.7926 -2.59338 0 0 0 0.373305 0.100605 0 0 0 0.109328 0.120902 0 0.0173404 0 -0.00577385 0.0102699 0 0 0 0 -0.0120368 0 -0.00474162 0 0.0732153 0 0.580544 0.722149 0 0.00185582 0 0 -0.0927816 -0.00170442 0.104539 0 0.0135906 0 0.00873929 0.132608 -0.00310924 -0.027003 0.0246409 0 -0.000366656 0 0 0 0.000995207 0 0 0.0107509 -0.00150905 -0.0802065 -0.0283573 0 0 -0.0225023 0 -0.0255213 0 0 0.0499027 0.0106361 -0.00537201 -0.0184648 0 0 0.0360545 0.0496431 -0.0874676 0.0439734 -0.393631 0 -0.065297 -0.0153233 -0.0381119 0 0 0 -0.0402489 0 0.0296157 0.0441088 0 -0.00515464 0.00890213 -0.0359136 0 0.00371006 -0.00364159 0.00527419 0.0639409 0 0.483647 0.373305 -0.173367 0.100605 -0.238522 -0.0420759 0.453234 0.220413 0.732626 -0.147616 0.00282047 -0.504384 -0.0233249 -0.0686209 0.101382 0.053469 -0.0183665 -0.829484 -0.23005 -1.31287 0.184363 -0.130522 0.0169686 -0.0333363 0.243395 -0.126621 0.277771 -0.0253078 -1.51884 -0.0409608 0.144867 -0.852105 0.0173141 -0.481696 0.245186 0.0302433 -0.00271957 0.0416533 -0.0420476 -0.70825 0.172067 -0.0203674 -1.04862 -1.3208 -0.0055728 0.0145948 -0.244872 -0.18324 0.025506 -0.680957 0.630351 -0.607741 -0.0692267 -4.87017 -0.0700223 0.568766 0.668316 0.462608 0.0913003 0.355613 -0.131161 0.00461766 -0.204271 -0.534371 -8.07592 -0.252325 -0.317867 -0.351336 0.0715701 -0.314787 0.185728 -0.0084357 0.352934 -0.324237 0.176048 -0.0984443 -0.27403 0.470979 1.36311 0.674962 0.21473 1.63574 0.416185 -0.178129 0.126088 0.925922 1.25464 -0.282144 0.24348 -0.0163823 0.909923 0 +461 0 0.405613 0.221661 -0.0201743 -0.0941972 0.175253 0.196771 0.136797 -0.0526275 -0.147673 0.357901 -0.23983 1.24965 0.00318978 1.77433 0.00276344 0.35766 1.43388 -0.0549697 -0.022895 7.2546 -0.0163774 -0.230259 -0.00360433 0.0783287 -0.0409292 0.222172 -0.0336747 -0.0346442 1.66572 0.392705 -0.024756 0.0394638 -0.290365 -0.339824 -0.130868 -0.0212389 -0.234694 0.0467207 -0.425899 3.06221 0.0236124 -1.60081 -0.0462041 5.52275 0.149156 1.25327 0.586051 -0.228282 0.163207 0.760746 0.396469 8.97385 0.0835291 -0.0716984 -0.00588388 1.03633 0.0156919 -0.0858935 -0.183468 -0.0601392 -0.131454 -3.01857 -2.07371 1.31106 0.624223 0.160463 -0.531943 -0.493753 0.0461077 -0.492745 0.198881 0.100986 0.451728 0.268676 0.694908 1.49437 -0.0965214 -0.792441 1.1242 -0.593642 0.428108 0.663457 -0.132988 0.292629 -0.479449 0.367821 -0.125508 0.218732 -0.79419 0.708236 -2.08552 0 0 0 0 0 -0.0201743 -0.0941972 0.00129853 0 0 0 0 0.000318086 0 0.00868692 0 0 0.000176666 0.000561781 0.00165544 0 0.000813257 -0.0131556 0.0116006 0 0 0.0847052 3.88294e-05 0 0.0060159 0.337013 0 0 0.0204354 -0.0279781 0 0.0157465 0 -0.0014982 0 0 0.00109476 0 0 0.254355 0.00452957 0.00256537 0 0.0183449 0.0141487 0 0 0.0606773 0 0.00470442 -0.113904 -0.00601921 0 0 0.00123221 0.000445629 0 -0.015154 -0.0813675 2.24941e-06 -0.127729 0.00839519 0.0175719 0 0.0252532 0.0057325 -0.0574251 0.0200414 -0.00598574 0 0 0 -0.442561 0.0309291 -0.0625681 -0.0254596 0.0284846 -0.0301043 0.000138557 -5.96153e-05 -0.000448407 -0.00141676 0 0 0 0 0 0 0.175253 0 0.196771 0 0 0 0 -0.453098 0.39133 0 0 0.602236 0 0.0675262 0 0.0276448 0 0 0.320792 0 -0.601268 -0.145888 0.370372 0.0232941 0 0 0.249115 0 0.54909 0 -3.48908 -0.112088 0 -1.12566 -1.3635 0.0425048 0 -0.0573387 0 0 0.0407556 0 0.0279176 0.570589 0 0 0.0152819 0 0 0.270611 -4.65998 0.0257349 0 -0.498043 0 -0.913988 0.249694 -0.254129 -0.387564 -0.331209 -0.718569 -0.189723 0.0553838 0.0686015 -5.54683 0.257283 0 0 0 -0.175678 -0.217233 0 0 0 0 0.0723209 15.3112 0.966855 2.31441 1.35449 -0.670481 1.09303 -0.402723 0.235834 -0.19835 0.407352 0 0 0 0 0 0 +462 0 -0.839831 0.10896 0.0236001 0.19966 -0.283122 0.117043 -0.195848 0.661119 0.166451 -0.777854 -0.172015 -0.283716 -0.00306896 0.344793 -0.0147145 0.80243 -0.0672075 0.00535723 -0.0158038 -2.19186 -0.00327014 -0.356027 0.00214328 -0.121263 -0.322861 0.484371 -0.0282025 -0.630462 -0.498249 0.173898 0.0186162 -0.146788 -0.307846 0.103791 -0.264729 -0.0125359 -0.258857 0.391813 -0.171124 -0.171324 -0.0287337 0.144605 -0.00934008 -1.44935 -0.267864 0.356048 -0.684159 -0.190747 0.0352924 0.770759 -0.370574 -1.03348 0.0947399 -0.0950728 0.392682 0.025393 -0.147939 -0.304122 0.332677 0.0921541 0.301667 0.208186 -0.169374 0.0994308 0.45851 -0.745695 0.0628241 -0.162933 -0.0352661 -0.0440188 0.491253 -0.289643 0.201636 -2.01212 0.0940642 -0.87042 -5.6909 0.672676 -2.26201 0.717386 0.413425 -1.6005 0.861698 -0.308326 0.65218 -1.3913 0.225397 0.000980093 0.377314 -0.0249709 0.62382 0 0 0 0 0 0.0236001 0.19966 0.00313287 0 0 0 0 0.000378012 0 -0.00462915 0 0 -0.00155834 -0.00326545 -0.00116808 0 -0.000240904 0.026455 -0.0212065 0 0 0.111708 -0.000215707 0 0.0101901 0.455591 0 0 0.0136499 0.155852 0 0.0722254 0 0.0134524 0 0 0.00159114 0 0 0.265519 0.00524222 -0.0240708 0 0.043438 -0.000553425 0 0 0.0531888 0 0.00286826 -0.0284093 -0.0032518 0 0 0.007989 -0.00784477 0 -0.0190324 0.0882662 -0.017522 -0.698556 0.00505965 0.0322801 0 -0.0113001 0.00812299 -0.0833529 -0.0658453 -0.0207329 0 0 0 -0.263627 0.0283521 0.0233685 -0.0102653 0.0154215 -0.0373994 0.00338023 -0.00354756 0.00249336 0.00420198 0 0 0 0 0 0 -0.283122 0 0.117043 0 0 0 0 -0.0323597 -0.0652183 0 0 -0.20998 0 -0.0265136 0 -0.0270196 0 0 0.252827 0 -0.576991 0.0909881 0.0588558 0.0465246 0 0 -0.248515 0 1.23654 0 1.73281 0.812549 0 0.697448 -0.382888 0.00488094 0 -0.00233292 0 0 -0.00379159 0 1.32634 -0.142673 0 0 -0.00617503 0 0 -0.114332 2.8638 -0.133259 0 -0.161225 0 0.354123 -0.164583 0.18149 0.548909 0.0718392 0.0844537 -0.125368 0.0431315 -0.363706 2.59196 -0.168699 0 0 0 0.0240336 0.094009 0 0 0 0 -0.131381 -15.5056 -0.915287 -2.56619 -1.17371 0.665067 -1.13761 0.11546 -0.0952251 0.136754 -0.441407 0 0 0 0 0 0 +463 0 1.58906 -0.194222 0.0724102 0.389288 -0.181686 -0.0119537 0.173442 0.319026 0.526429 -1.46279 0.265236 -0.816072 -0.0110698 -0.509833 -0.0572604 -1.66738 -1.96919 -0.164868 -0.114346 -1.88474 0.0123246 0.394996 0.0117506 -0.221491 -0.346843 -0.80323 -0.0306285 -0.253054 -0.890851 -0.141833 0.0829368 -0.415509 0.217938 0.197453 -0.166413 0.030435 -0.0405765 -2.65541 0.697636 -0.415269 -0.0853867 1.27905 0.0909387 -2.64364 -0.588786 0.000192317 -0.412648 -0.811094 -0.307147 0.72006 -0.792189 7.52298 0.377329 -0.319493 0.365177 1.1436 1.01442 0.554735 0.640459 0.228329 0.52888 -1.48332 2.14358 -0.832875 -0.493678 0.701195 1.35234 0.167752 -0.154808 0.77838 -0.460262 0.165023 0.144059 -1.41929 -0.372889 -0.0146672 8.22849 2.85691 0.512461 1.79 -1.46502 3.2356 0.967852 -0.761616 1.38841 -0.0455208 0.495439 -0.449615 0.743394 -0.672912 1.11537 0 0 0 0 0 0.0724102 0.389288 0.00205687 0 0 0 0 -0.000490803 0 0.000485874 0 0 -0.000173027 -0.00257953 -0.00550932 0 0.000420365 0.00227114 -0.0447649 0 0 0.295403 -0.000169328 0 -0.0217798 0.50456 0 0 0.0330222 0.0318754 0 -0.0609095 0 0.0649557 0 0 0.00689748 0 0 -0.102807 -0.00717335 -0.0042624 0 0.0271464 -0.0211215 0 0 -0.0429644 0 -0.00954164 -0.112875 0.0114992 0 0 0.00277159 -0.0117387 0 0.00223704 -0.00213839 -0.0076555 -0.660832 -0.0041573 0.0118179 0 0.0052263 -0.0134125 -0.0432591 -0.119834 0.0159898 0 0 0 0.2491 -0.0156658 0.0746477 0.0160651 -0.0165803 0.010053 0.00106645 -0.00103876 0.000270166 0.00633103 0 0 0 0 0 0 -0.181686 0 -0.0119537 0 0 0 0 -0.0279182 0.220671 0 0 -0.970439 0 -0.113366 0 -0.0218992 0 0 -0.42312 0 0.365158 -0.00481689 -0.492486 -0.0846719 0 0 -0.185499 0 -2.17875 0 -3.02521 -0.20508 0 0.00651871 -0.354721 -0.0587831 0 -0.00421733 0 0 0.0173035 0 -1.02401 -1.06792 0 0 -0.200028 0 0 0.207834 0.915185 -0.118798 0 2.88583 0 -0.694853 -0.402921 0.212755 -0.404257 0.157808 0.816604 1.49435 -0.31844 0.875539 6.16063 -0.088775 0 0 0 0.097447 0.31883 0 0 0 0 0.155917 9.85778 1.0522 1.48806 1.08939 -0.611157 1.45202 0.655452 -0.270458 0.247366 0.0719841 0 0 0 0 0 0 +464 0 0.529024 -0.256926 -0.00699185 -0.0173451 0.0310663 -0.142183 0.304144 -0.266568 0.0281165 0.59453 0.19674 -0.908876 0.000951292 -1.49547 -0.00669659 -1.4326 -4.46818 0.0361374 -0.0321547 -2.95975 0.00693031 0.412357 -0.00037902 0.120838 -0.0795035 -0.544064 -0.00250833 0.132412 -0.266901 -0.283925 -0.00271508 -0.0265312 0.461816 -0.0326379 0.0811398 0.0127713 -0.0295944 0.117908 0.0909541 -1.63746 0.0139087 -0.583334 0.00577446 -4.05538 0.201919 -0.624787 -0.0393285 -0.449756 0.00666029 -0.0951708 0.582165 -3.00614 0.0645182 -0.0911002 -0.247805 -4.54278 0.0960414 0.181721 -0.253436 -0.042748 -0.54418 1.19877 -1.39901 0.369592 -0.112472 -0.365577 -0.266967 0.0561625 -0.00875478 -0.108151 -0.000376672 0.182144 0.0316293 -1.45055 -0.090473 0.413433 -1.21531 -1.36911 0.0488653 -0.428704 -0.237355 0.369863 -0.617741 0.406013 -0.597743 0.941949 -0.0427348 -0.0414238 -0.124032 -0.0265602 0.402566 0 0 0 0 0 -0.00699185 -0.0173451 0.000628643 0 0 0 0 7.15574e-05 0 0.0186465 0 0 0.000751723 0.000442128 0.00764501 0 0.00116202 -0.0154019 0.11774 0 0 -0.216917 2.63812e-05 0 -0.0107661 -0.460924 0 0 -0.0247989 -0.130814 0 -0.0931279 0 -0.0160025 0 0 -0.00185968 0 0 -0.0895223 0.0010391 0.0112816 0 0.00911819 0.00012375 0 0 -0.0706027 0 0.00237757 -0.206185 -0.00254502 0 0 -0.0021618 0.00140731 0 0.000336605 -0.0766987 0.00753432 -0.247067 -0.00360807 0.0144023 0 0.0116448 0.0296134 -0.0862229 0.0407991 0.0639686 0 0 0 0.0653699 0.00174103 -0.126876 -0.00534303 0.00401076 0.0320005 -0.00118558 0.00131285 -0.0013146 -0.0440972 0 0 0 0 0 0 0.0310663 0 -0.142183 0 0 0 0 -0.209844 -0.145224 0 0 0.0663914 0 0.0102715 0 0.000622544 0 0 -0.559743 0 0.236286 -0.108871 -0.0977396 -0.0653511 0 0 0.0133571 0 -2.71618 0 -3.05676 -0.399998 0 -0.749947 -0.569643 -0.0111871 0 -0.0284235 0 0 -0.00949827 0 -1.01947 -1.26098 0 0 -0.168555 0 0 -0.783404 -3.77146 0.0655741 0 -2.84679 0 -1.23364 0.114919 -0.276245 -0.3531 -0.216825 -0.652774 0.48214 -0.0539116 2.19342 -4.04294 0.264651 0 0 0 0.16156 -0.0511384 0 0 0 0 0.0868659 14.8179 1.77801 0.637317 1.33247 -0.750347 1.14439 -0.0350009 0.0495964 -0.0178866 0.231209 0 0 0 0 0 0 +465 0 -0.893021 -0.335015 0.0102249 0.0629173 -0.287526 -0.124689 0.410591 1.14838 0.0908475 -0.444034 0.0660991 0.787509 -0.000665192 0.504878 -0.0228893 -0.533905 1.28923 -0.117475 -0.0329829 1.67306 -0.00932623 0.452234 0.000789216 -0.0362314 0.492154 -0.425639 -0.00904851 0.234379 0.316785 0.202778 0.00951603 -0.43212 0.57588 -0.0981554 0.258309 0.00251619 0.0529791 1.09021 0.0697006 0.574027 -0.00800294 -0.133685 0.0038994 2.53954 -0.0878884 -0.0452464 0.236842 -0.566159 -0.0262806 -0.440297 -0.0401631 4.45711 0.102249 -0.0370832 0.0412983 3.46464 0.015927 0.0151264 0.0956496 0.0226478 0.731308 1.69335 0.759414 0.381552 0.204954 0.426716 -0.0878454 -0.115069 -0.0230187 -0.0254836 -0.034096 -0.218319 -0.266832 3.77902 0.260033 0.158967 -4.99346 -0.261568 -1.55327 0.0729526 0.194516 -1.77154 0.0922542 0.0378032 0.11992 -0.936534 0.018601 0.00646513 0.032758 -0.102453 -0.477806 0 0 0 0 0 0.0102249 0.0629173 -0.00301441 0 0 0 0 -0.000259805 0 -0.0129518 0 0 0.00135049 0.00250523 -0.00775006 0 -0.00135504 0.0159979 -0.0705044 0 0 0.078953 0.000183221 0 0.00917313 0.256699 0 0 0.00907753 0.0933213 0 0.0675324 0 0.00858635 0 0 0.000975803 0 0 0.261272 -0.00367124 0.0185372 0 -0.0421623 0.020682 0 0 0.014514 0 0.0047138 0.0831695 -0.00952067 0 0 0.00309439 0.0128386 0 -0.00808898 0.0247769 -0.0103648 0.224837 0.00206619 0.00749536 0 -0.0114108 0.0203131 -0.0398971 0.06522 -0.0229693 0 0 0 -0.316171 -0.00413702 0.0484689 -0.00842987 0.0123384 -0.0523293 -0.000235482 0.000654406 -0.00278726 0.014373 0 0 0 0 0 0 -0.287526 0 -0.124689 0 0 0 0 0.345331 -1.45921 0 0 -0.721185 0 -0.0833033 0 -0.0938382 0 0 0.530176 0 0.570348 0.125309 -0.444712 0.0394377 0 0 -0.845528 0 -1.77871 0 2.51382 0.00595963 0 0.898833 0.806278 -0.052195 0 0.045971 0 0 -0.159237 0 -0.504946 0.99198 0 0 0.0721229 0 0 0.468458 3.5619 -0.0213111 0 1.26449 0 0.707154 -0.877288 0.490877 0.402893 0.0278625 0.336625 0.48484 -0.029441 1.35459 6.76888 -0.0174116 0 0 0 -0.240915 0.234793 0 0 0 0 0.527508 -16.1948 0.156038 -3.80537 -1.66837 0.854367 -1.17266 0.528592 -0.258502 0.222597 -0.408885 0 0 0 0 0 0 +466 0 0.613756 0.133853 0.0301975 0.270099 -0.0499709 0.259174 -1.36795 -1.90549 0.311914 -0.996195 -0.366685 1.04204 -0.00182169 0.706158 0.0149127 0.456132 3.13318 -0.226384 0.00624083 -2.0529 -0.0127931 -0.102336 0.00184465 -0.0539566 -0.450942 0.132786 -0.0563542 -0.707202 -1.03138 0.467974 0.0253587 0.224789 -0.346802 -0.349992 -0.376122 -0.0289752 -0.258735 -2.28935 -0.413896 -0.0532236 -0.0240049 -0.886966 -0.0312816 2.50001 -0.301955 0.595396 -0.87627 0.0895549 0.12651 0.412144 -0.547999 -2.45478 0.0256233 0.00978154 0.218034 -3.34601 0.159268 0.220432 0.383632 0.0779844 1.42959 -0.0285781 1.1111 0.0305178 0.253629 0.780109 0.142422 -0.506193 -0.0716163 0.0437227 0.419215 0.0600074 0.362826 -0.784881 0.762812 1.45127 4.35717 1.85035 1.5029 1.3602 -0.606714 2.52462 0.27282 -0.101175 1.20103 1.6855 0.0639069 0.0913522 0.336861 0.474564 1.55562 0 0 0 0 0 0.0301975 0.270099 0.000104932 0 0 0 0 -9.05675e-05 0 -0.0117012 0 0 -0.000120671 0.000859728 -0.0107854 0 -0.00129765 0.0305858 -0.113489 0 0 0.358038 7.55311e-05 0 0.00650719 0.963404 0 0 0.0454145 0.19797 0 0.0443242 0 0.0303905 0 0 0.0036632 0 0 0.179227 -0.00140064 -0.00373204 0 0.000185543 -0.00782896 0 0 0.0568184 0 -0.000241034 -0.00194157 -0.00170474 0 0 0.00742636 0.00127176 0 -0.0127244 0.0355879 -0.0171724 -0.489002 0.00189336 0.0147069 0 -0.00509256 -0.00810392 -0.0737881 -0.0448955 -0.0240757 0 0 0 -0.165568 0.00559063 0.104077 -4.4376e-05 0.00310043 -0.0415708 0.00213871 -0.00196685 -0.000204734 0.0329459 0 0 0 0 0 0 -0.0499709 0 0.259174 0 0 0 0 -0.158406 0.130304 0 0 -0.039477 0 -0.000630318 0 0.0134569 0 0 -0.369122 0 -0.0517294 -0.0465821 0.239669 -0.0559778 0 0 0.119336 0 1.30993 0 0.821645 0.630883 0 -0.19905 0.556461 0.0294512 0 -0.0220163 0 0 0.0107052 0 0.949477 -0.220121 0 0 -0.0465525 0 0 -0.030815 0.230302 -0.0111713 0 0.209333 0 0.0433014 -0.21435 0.0945499 -0.106738 -0.00115763 0.331001 0.477972 -0.137866 0.808242 1.71404 0.17202 0 0 0 0.0478868 0.0521727 0 0 0 0 0.0483343 -6.40488 -0.67798 0.438142 -0.586613 0.149045 -0.0805428 0.0112908 -0.00194542 0.0067353 0.149708 0 0 0 0 0 0 +467 0 0 0 0 0 -0.440916 -0.312759 0.490896 0.999492 0 0 0.338295 -1.22098 0 -1.18216 0.0200155 0 0 0 -0.502314 -5.91897 0 0 0 0 0.232132 0 0 0.67589 -1.69362 -0.599033 0 0.456628 0 0 0.231401 0.0213434 0 0 1.54679 -2.93828 0 0 0.235658 -3.35877 0 -1.39161 0.164528 -0.85472 -0.439575 1.02253 0.0374406 0 0.285698 -0.0561876 -0.0354373 -2.04266 -0.909729 -0.406956 0 0 0.919794 4.89095 0 -0.372713 -0.308964 -0.730248 0 0 0 0 0.0988125 1.63408 0 0.534996 -0.841672 0 0 0 -0.337095 0 -1.70621 1.64758 0 -0.751557 0.666576 -3.10303 0 -1.46836 1.1479 -4.37175 5.72118 0 0 0 -0.203255 -0.0515722 0 0 0 -0.0412832 -0.000886398 0 -0.00636561 0 0.00464152 0.0202309 0 0 0 0 -0.0293624 0 -0.0131584 0 0.178515 0 -0.162874 0.0622186 0 0.00418797 0 0 0.254896 0.00216782 -0.0169343 0 0.00141612 0 0.000270989 0.0127326 0.0271413 0.0373936 -0.00936545 0 0.000217305 0 0 0 7.84894e-05 0 0 -0.00542544 0.00210202 0.29736 0.0561714 0 0 -0.00277421 0 0.00142278 0 0 0.00219217 0.00319412 -0.0179187 -0.0289679 0 0 0.121085 0.0641367 0.00278168 0.495677 -0.206896 0 0.257909 -0.000671987 0.00766528 0 0 0 -0.63356 0 -0.0792176 -0.879282 0 -0.00154099 -0.0562528 -0.294484 0 -0.00261597 -0.00325724 -0.00745625 -0.557257 0 -0.440916 -0.203255 -0.312759 -0.0515722 0.0969198 0.066346 -0.272639 -0.284047 1.53788 0.0629094 0.0657098 0.310002 0.0107949 0.0615583 -0.0507224 0.107474 0.0177748 0.293196 0.369347 0.145956 -0.0171501 0.0252221 0.190368 0.109834 0.20963 -0.153427 0.90871 0.00187726 0.261521 0.390695 -0.634279 -0.84851 -0.00867773 -0.0576079 -0.216718 0.0360033 0.00376282 -0.0555624 0.0971745 -1.02995 0.1634 -0.0256698 -0.539187 0.651265 0.00728867 -0.00695687 0.242439 0.0252788 -0.135906 0.156781 2.92015 1.23734 0.0194101 -0.0386072 0.0357872 -1.23394 0.500715 -0.80316 -0.157981 0.0126389 0.881814 1.09116 -0.0731708 -1.34396 -6.67901 -0.00585831 0.0650891 0.122164 0.137137 -0.063721 -0.0662743 0.0292241 -0.123674 0.115673 -0.170702 -0.117581 4.79429 -0.547557 0.0401343 -0.676217 -1.58943 4.25387 -0.499535 -0.0364113 0.25045 0.224103 -0.399259 0.0197673 0.203057 -0.751706 1.71775 0 +468 0 0 0 0 0 0.961667 0.263701 -0.560622 -2.92544 0 0 0.555775 1.12801 0 1.30148 0.0886227 0 0 0 -0.0341137 3.98683 0 0 0 0 -0.284605 0 0 -0.650417 -4.16018 0.507535 0 0.467462 0 0 -0.0680364 0.143437 0 0 0.497151 1.42612 0 0 0.268054 2.89225 0 0.595683 -1.6908 -0.0284454 -0.523656 0.748872 -0.162412 0 -0.111371 0.626742 -1.00704 -0.406589 -0.438369 0.213401 0 0 1.35516 -3.58987 0 -0.896159 -0.317833 -0.158339 0 0 0 0 0.62586 1.31264 0 -0.0899451 2.38615 0 0 0 4.82088 0 0.181857 4.14197 0 0.0526212 1.68977 1.64335 0 -0.56231 3.58371 -8.11013 22.8674 0 0 0 0.16404 0.00539688 0 0 0 0.00113432 -0.015205 0 -0.000670119 0 -0.00191599 -0.0636842 0 0 0 0 -0.119826 0 -0.0318205 0 -0.387257 0 0.0926267 0.190988 0 0.00125584 0 0 0.0299762 -0.000357736 0.0148926 0 0.000430189 0 -0.000882712 0.0847125 0.00309578 -0.0143445 0.00949577 0 -6.88985e-05 0 0 0 -5.92186e-06 0 0 -0.00154045 0.00365292 -0.11405 -0.00784386 0 0 0.007636 0 0.00644329 0 0 -0.014063 0.0150066 0.184896 0.00811055 0 0 0.0324716 0.0602123 -0.068033 -0.168035 -0.590635 0 0.0541233 -0.00716588 0.080986 0 0 0 1.22273 0 0.0713262 -0.385745 0 0.00591708 -0.0314072 0.303113 0 -0.000497434 -0.00200632 0.027836 -0.200577 0 0.961667 0.16404 0.263701 0.00539688 0.116979 0.0960889 -0.155408 0.593494 1.22819 0.0010191 -0.0789317 -0.341312 0.00119507 -0.0606858 -0.0249725 0.0976197 -0.0320363 -0.0481446 -0.299932 -0.42452 0.0978288 -0.107861 -0.268611 -0.0791075 -0.177055 -0.185112 0.730724 -0.00192234 3.78104 0.114527 2.81931 0.524137 -0.00447484 0.188303 0.536416 -0.0332296 0.00382077 0.0685324 0.0120455 -1.06544 0.15482 -0.0314284 1.40442 -0.996597 -0.0106818 0.0136839 -0.316413 -0.0332441 0.0180121 0.606975 -0.469731 0.342366 -0.0292344 1.99104 0.0498703 -1.84935 0.741758 -0.745452 0.66469 -0.101365 0.204257 0.484218 -0.204728 0.295707 4.84292 0.101173 0.333222 -0.00817437 0.013155 0.108966 0.0784736 0.0336742 -0.0207442 -0.116305 0.0174582 -0.172588 -21.3102 -1.48387 2.15737 -1.73764 1.835 0.682426 0.279758 -0.390174 0.89543 0.0471566 0.0655609 -0.189423 0.544346 -0.642666 1.74904 0 +469 0 0 0 0 0 -0.559918 -0.132389 -0.172958 0.591589 0 0 0.815339 0.133833 0 0.726155 0.0328479 0 0 0 -0.0194683 4.36047 0 0 0 0 0.127388 0 0 -0.0636118 -9.40597 -0.215041 0 0.0854022 0 0 0.0400644 0.111842 0 0 3.07502 0.0473351 0 0 0.535042 3.31279 0 -0.553057 -1.89243 -0.632871 -0.660921 -0.864501 -0.132504 0 0.125716 0.530418 -0.885057 0.245086 -0.162488 -0.69325 0 0 -0.253453 1.24752 0 -0.839881 0.0226817 0.557378 0 0 0 0 0.000518647 1.20765 0 -0.626761 1.45722 0 0 0 -0.998505 0 -3.79779 11.8097 0 -1.21206 3.86302 0.985759 0 -2.67549 7.25515 -12.7327 34.5307 0 0 0 -0.380453 -0.0934841 0 0 0 -0.0970071 -0.0241493 0 -0.01426 0 0.00725677 -0.00445633 0 0 0 0 -0.0447788 0 -0.0312122 0 0.0828857 0 -0.482501 -0.482008 0 -0.0048669 0 0 -0.471068 0.000269784 -0.0882606 0 0.00288238 0 -0.00136656 -0.168326 -0.0541347 0.0175306 -0.0337538 0 0.000302103 0 0 0 0.000137002 0 0 0.00200227 -0.000550067 0.164211 0.0209103 0 0 -0.0459193 0 0.00345534 0 0 -0.0487721 0.0263445 0.100235 -0.0608315 0 0 0.191726 0.0555932 -0.0231275 0.189749 -0.219115 0 -0.113509 -0.00663949 0.365846 0 0 0 0.260606 0 -0.102473 1.24852 0 -0.00849422 0.0692081 0.209306 0 0.000471879 0.00661545 -0.0488726 0.716139 0 -0.559918 -0.380453 -0.132389 -0.0934841 1.16491 0.251543 -0.346103 0.533834 0.939203 0.1245 -0.0288373 0.126581 0.0199937 0.0570198 -0.0796656 0.12587 -0.0423921 0.685035 0.159398 2.31317 0.28646 0.00801591 -0.088824 -0.0357453 -0.503017 -0.229811 0.759559 0.0400882 3.48602 -0.131096 2.15631 -0.217886 -0.0152157 0.616693 0.909944 0.0105451 -0.00328904 0.0496789 0.0255022 -1.19817 0.140235 -0.0355349 0.859086 1.40283 0.00031701 -0.071368 0.159 0.307632 -0.0312747 -0.692459 -1.06649 1.42689 0.162893 0.0425967 0.0424963 -0.202407 0.466106 -1.17645 0.499538 -0.190165 -1.21752 -0.627956 0.155295 -0.692188 -4.30086 0.088447 -0.510417 0.235376 0.299485 0.503934 -0.130554 0.203819 -0.250655 -0.147281 -0.243523 -0.365384 -16.2988 -2.59989 -0.358817 -4.05714 2.50099 1.85058 -0.760161 0.293116 0.418874 -0.32263 -0.932846 0.636054 -0.352751 -0.0639561 1.40806 0 +470 0 -0.412954 0.000337385 -0.0257947 -0.140948 -0.0293689 0.269874 -1.34426 -2.36412 -0.186363 1.07448 0.140854 0.0881887 0.00567666 0.584359 0.00592906 -0.747615 -3.09753 0.210794 0.0903236 -0.114413 0.0192948 -0.158313 -0.00612099 0.131354 -0.780858 -0.0447095 -0.00208822 -0.76691 -1.76137 0.374942 -0.0343046 -0.0336626 -0.151318 0.21866 -0.487648 0.0206546 -0.0859979 0.955226 0.262576 0.899388 0.0225562 0.604139 0.0240445 -0.195441 0.052108 0.801224 -1.07566 0.537948 -0.0823526 1.45193 0.0124222 -0.700999 -0.00741584 0.17914 -0.355888 1.39199 -0.524125 -0.162405 -0.166009 -0.0296217 -0.489558 -0.959841 0.748092 0.586755 -0.632726 1.07966 -0.278423 0.0226896 0.0271928 0.0577819 -0.238368 0.0526355 0.258125 0.0915802 1.27122 -1.06236 -0.694541 -1.88124 4.02986 -1.29527 1.15945 -0.370877 -0.861827 1.02035 -1.64496 5.2448 -0.070552 -0.139689 1.11479 -1.67796 5.24761 0 0 0 0 0 -0.0257947 -0.140948 -0.000972948 0 0 0 0 -1.90644e-05 0 0.0331089 0 0 -3.72413e-05 0.00131589 0.0357182 0 0.00495358 0.053694 0.249515 0 0 0.171056 5.31642e-05 0 0.00967609 0.854829 0 0 0.0135235 0.252245 0 0.103046 0 0.0201788 0 0 0.00184314 0 0 0.622018 -0.000255192 0.000855753 0 -0.0187817 -0.010031 0 0 0.0953078 0 0.000360561 0.79763 -0.0133915 0 0 -0.000587416 0.00361638 0 0.00480361 -0.0773781 0.0196919 0.894992 0.0176537 0.0156431 0 0.012933 -0.0629253 0.0518501 0.0509771 0.154007 0 0 0 -4.71258 -0.162284 -1.11121 -0.020416 0.0506351 -0.702261 -0.000182553 0.000513652 -0.00616496 -0.24095 0 0 0 0 0 0 -0.0293689 0 0.269874 0 0 0 0 0.107988 -0.071311 0 0 0.442198 0 0.0391966 0 -0.0147929 0 0 0.0247728 0 -0.0700542 -0.0392565 0.00982679 -0.0114119 0 0 -0.140302 0 0.503873 0 2.30984 0.541971 0 -0.215297 0.469743 -0.00708478 0 0.0133209 0 0 -0.00941793 0 0.439768 0.376041 0 0 0.0487317 0 0 -0.00179957 -1.76904 -0.065827 0 0.0406056 0 0.576504 -0.139328 0.0923945 -0.09691 -0.0299527 0.0847257 -0.870754 0.0948305 -0.156975 1.97196 0.0101293 0 0 0 -0.129927 -0.0941221 0 0 0 0 0.0281887 -13.6535 -4.00477 2.96378 -1.50491 1.39746 -1.4647 -0.264464 0.241725 -0.306484 0.161942 0 0 0 0 0 0 +471 0 1.58924 0.421558 0.00386065 0.177774 0.014214 0.170566 -0.0349134 -0.404485 -0.0659835 0.2984 0.189558 -0.173683 0.00359268 0.673263 -0.02341 0.696384 1.81555 0.0875157 -0.00433494 -0.658857 0.068661 -0.278 -0.00844642 0.243993 -0.481375 0.371163 0.0382585 -0.197341 -0.58384 -0.0610477 -0.0319605 -0.279165 -0.656102 -0.0652744 -0.303364 0.0106041 0.115398 -3.4493 0.415391 0.22688 0.0129659 -0.0651174 0.0222483 0.843307 0.0043376 0.250347 -0.271042 -0.228664 -0.0294996 1.12771 0.18208 0.462005 -0.348116 0.0902622 0.12797 0.186176 0.388653 0.759353 -0.340897 -0.0418608 0.116019 0.170172 -0.691293 -0.164019 -0.621592 0.084006 0.516909 0.681111 0.101343 -0.463211 0.05538 0.0908782 -0.346338 -1.24403 -0.344568 -0.237212 8.6266 1.30527 0.536611 1.96367 -2.24733 4.93912 -0.419048 0.517709 -0.592798 1.57482 -0.00587292 -0.278042 0.388786 -1.04532 1.73942 0 0 0 0 0 0.00386065 0.177774 0.000599657 0 0 0 0 0.000344891 0 0.00885134 0 0 -0.00159624 -0.00439399 0.0264292 0 0.00351226 0.0352112 0.0908075 0 0 0.0663969 -0.000185638 0 -0.0649257 0.5586 0 0 0.00797249 0.152361 0 -0.184049 0 -0.0066927 0 0 -0.000650523 0 0 -0.809321 0.00763204 -0.0362468 0 0.016074 0.0587661 0 0 -0.0422588 0 0.00437225 0.159523 -0.00306309 0 0 0.00175428 0.00140975 0 -0.00474682 0.00996842 -0.0144406 -2.00594 0.0445905 0.0223541 0 -0.00377287 7.31792e-05 0.0791814 -0.130096 -0.020792 0 0 0 5.17961 0.278209 -0.256174 0.0215208 -0.0507786 0.725474 0.00109817 -0.00263674 0.0362959 -0.127675 0 0 0 0 0 0 0.014214 0 0.170566 0 0 0 0 -0.15447 -0.0121918 0 0 -0.271702 0 -0.00399333 0 -0.0188051 0 0 0.408383 0 -0.525005 -0.0713813 -0.164663 0.0686474 0 0 -0.114913 0 4.256 0 -5.40697 0.062296 0 -0.512118 -1.67792 -0.00743746 0 -0.0252692 0 0 -0.0146816 0 0.899523 0.856013 0 0 0.151282 0 0 -0.0970547 1.76538 -0.0869794 0 0.0168747 0 -1.2827 0.0865805 0.047873 -0.466205 0.104938 0.273614 1.46561 -0.229091 -0.878054 -2.00302 -0.015652 0 0 0 0.211504 0.0710094 0 0 0 0 -0.247709 45.6086 5.83461 1.4307 3.00007 -3.41731 5.55856 0.150969 -0.188336 0.303843 0.36228 0 0 0 0 0 0 +472 0 -0.365445 -0.215031 -0.118176 -0.352698 0.459876 0.0969314 -0.907948 -3.4928 -0.477848 2.50324 -0.641273 0.155669 0.0325385 0.239855 0.0360341 -0.581714 -0.24693 0.322342 0.101465 -2.03326 0.0481504 0.133866 -0.0297581 0.546269 -0.38051 -0.364493 -0.00930144 0.154022 1.94478 0.0967992 -0.13167 0.0780405 0.179534 -0.115804 -0.0169354 -0.10779 -0.329296 0.843241 -1.58335 -0.843729 0.171103 -2.0661 -0.29703 1.90821 0.812611 -0.258477 0.601826 0.24387 0.781348 3.28537 0.909412 -2.72189 0.0121049 0.417254 -0.363716 -0.897715 -0.373533 0.424714 -0.612571 -0.338193 1.01773 0.400839 -1.38005 0.138144 -1.10726 -1.39224 -0.586845 0.0480537 0.0727954 -0.191343 0.812124 -1.35975 0.234997 0.948427 0.232883 -0.449454 -1.4714 -4.05336 5.16896 -2.71204 3.40725 -4.25516 -2.73731 2.97849 -5.17223 6.29502 -1.10024 1.66557 -2.52707 3.77942 -5.79403 0 0 0 0 0 -0.118176 -0.352698 -0.00174564 0 0 0 0 0.000179495 0 -0.0114891 0 0 0.00117126 0.00863318 0.00488753 0 0.00266785 -0.0361673 -0.126411 0 0 -0.208732 0.000375789 0 -0.0944185 -0.519516 0 0 -0.0182749 -0.147947 0 -0.0480877 0 -0.0781217 0 0 -0.00747097 0 0 0.186501 0.00400964 0.0296844 0 -0.0346972 -0.101167 0 0 0.434075 0 0.00190813 0.548448 -0.0105832 0 0 -0.00102678 0.00680729 0 -0.00254814 0.114603 0.0258618 -1.00933 -0.00329785 0.000566303 0 -0.0228346 0.162224 0.211953 -0.0633259 0.283922 0 0 0 -0.134385 -0.104685 0.275152 0.000553357 -0.00543147 0.0575419 -0.000980592 0.00239352 -0.032478 0.0362749 0 0 0 0 0 0 0.459876 0 0.0969314 0 0 0 0 -0.770033 -2.35294 0 0 1.18233 0 0.135839 0 -0.11322 0 0 -0.0079199 0 0.402099 -0.165211 0.552518 0.00949386 0 0 -0.834866 0 -3.80582 0 1.45078 -0.40395 0 -1.59055 0.650552 0.0646564 0 -0.0818672 0 0 -0.301525 0 -1.48303 1.02103 0 0 0.139142 0 0 -0.141494 -2.75692 -0.60194 0 -0.623345 0 0.453655 -0.514237 0.541575 -0.933423 -0.115387 0.979567 -0.976879 0.31205 1.58077 5.42213 0.185997 0 0 0 -0.19922 -0.310593 0 0 0 0 0.531989 -6.00561 -5.5878 7.48796 -1.32313 1.38522 -1.49191 -0.766588 0.817196 -1.11416 1.53458 0 0 0 0 0 0 +473 0 -0.473174 -0.362433 -0.0821574 -0.171961 0.135542 0.0943549 -0.688198 -1.98728 -0.278707 1.5702 -0.309118 0.225925 0.026397 -0.163496 -0.117537 -1.77716 -6.21259 0.250829 -0.154735 3.24075 -0.0241184 0.153973 -0.0171493 0.229914 -0.401027 -0.690459 -0.199061 0.0500167 0.2296 0.0410918 -0.0728695 -0.491955 0.29285 -0.536893 -0.111552 -0.0903504 -1.06935 0.663324 -0.628125 1.60134 0.116238 -2.94143 -0.216733 0.316573 0.377617 0.710403 0.148552 -0.552247 0.44816 -2.04519 0.706248 -0.902789 0.290427 -0.366456 0.36802 -0.186579 1.59424 0.923274 -0.33374 -0.141615 -0.339281 -3.43647 -1.04382 1.97138 1.59759 0.125975 -1.66464 -1.64727 -0.133344 -0.241094 0.0329188 -1.2239 0.477029 -0.806157 -0.056121 1.60878 2.40357 -2.77912 3.92012 -1.85161 2.31941 -3.60373 -1.79169 2.01713 -3.67999 5.30539 -0.787341 1.3421 -1.54689 2.59282 -1.59002 0 0 0 0 0 -0.0821574 -0.171961 -0.00208682 0 0 0 0 -0.000167258 0 0.00498285 0 0 0.00335214 0.00851541 -0.00472112 0 0.000230883 -0.0615412 0.0711509 0 0 -0.0191868 0.000391023 0 0.00859522 -0.0829326 0 0 0.00285159 -0.116588 0 0.0937594 0 -0.0466751 0 0 -0.00397302 0 0 0.520301 -0.0041243 0.0584111 0 -0.0489695 -0.0860766 0 0 0.18559 0 -0.000297042 0.60866 -0.0123555 0 0 -0.00692308 0.00679985 0 0.018021 0.00367432 0.0397337 0.103335 -0.0321763 -0.00812465 0 -0.00546123 0.103977 -0.0696513 0.0670696 0.368611 0 0 0 -4.63908 -0.305733 -0.559038 -0.0114611 0.0310698 -0.60192 -0.00408873 0.00568987 -0.0340609 -0.0939737 0 0 0 0 0 0 0.135542 0 0.0943549 0 0 0 0 -0.147543 -1.59085 0 0 0.705379 0 0.0653444 0 -0.0740671 0 0 -0.278306 0 0.360526 -0.0894819 0.237445 -0.0556095 0 0 -0.557437 0 -5.68655 0 1.27642 -0.262592 0 -0.5504 0.608492 0.0243713 0 -0.0264412 0 0 -0.210088 0 -1.58991 -0.147416 0 0 -0.0682133 0 0 0.107461 -3.70709 -0.215364 0 -0.345627 0 1.87282 -0.481708 0.320929 -0.137044 0.0835087 -0.550056 -2.11276 0.277886 1.23457 3.68753 -0.121767 0 0 0 -0.373411 -0.172582 0 0 0 0 0.400749 -7.01878 -4.32427 3.82793 -1.33746 1.55725 -1.77203 -0.450034 0.459669 -0.578305 0.46304 0 0 0 0 0 0 +474 0 0.78537 -0.0159593 0.0192481 0.16839 -0.0111978 -0.188651 0.0668301 0.646822 0.00216482 -0.332433 -0.489521 -0.298936 -0.00950554 -1.09469 -0.0390417 0.0979242 2.84835 0.00595646 -0.0461104 1.05899 0.0303108 0.277873 0.0129652 0.0769244 0.482086 -0.32149 0.0195709 0.747456 2.61434 -0.396078 0.0316629 -0.312136 0.232792 0.175605 0.28257 -0.0533108 0.0141845 -1.58058 -0.501809 -0.212901 -0.0397109 0.0160318 -0.0337011 -0.486351 -0.122975 -0.540968 1.48916 -0.418184 0.102607 0.986555 0.527759 6.21655 0.060177 -0.487382 0.9003 4.68319 0.730096 0.116444 -0.0579749 0.0483557 0.398215 0.0237282 1.15119 -1.13786 -0.939297 -0.069277 1.2938 0.684512 -0.0564518 0.738002 0.219021 -0.350438 -0.299521 1.11506 -1.69044 -1.14293 7.40165 1.2026 -1.12847 2.16444 -0.852563 -0.856497 0.70353 -0.408382 -0.237885 -1.29881 0.256405 0.299324 -2.29967 6.49574 -18.1048 0 0 0 0 0 0.0192481 0.16839 -0.00451267 0 0 0 0 -0.00123046 0 -0.0223104 0 0 -0.00124563 0.000891392 -0.0139144 0 -0.00323979 0.0119644 -0.0968064 0 0 0.0752395 4.1387e-05 0 -0.0809505 0.116122 0 0 0.0115512 0.0464654 0 -0.236895 0 0.0342885 0 0 0.00393683 0 0 -0.95509 -0.0240827 -0.0243392 0 -0.0851271 -0.0197431 0 0 0.0694053 0 0.00504829 0.263451 -0.00571197 0 0 0.000188138 0.0180038 0 -0.00470985 0.0864719 0.0134868 -1.14142 0.0510129 -0.0153256 0 -0.0192238 0.0735692 0.442948 -0.160317 0.0642847 0 0 0 7.87978 0.407442 0.674815 0.0400558 -0.023664 0.546634 0.000151787 0.00241286 -0.00383655 0.0294792 0 0 0 0 0 0 -0.0111978 0 -0.188651 0 0 0 0 -0.598212 -0.597376 0 0 0.305826 0 0.0496951 0 -0.0437939 0 0 0.325993 0 0.678172 -0.0915662 0.48053 0.0426674 0 0 -0.408223 0 -1.85422 0 0.0336121 -0.278356 0 -0.721766 1.00894 0.0587911 0 -0.0657561 0 0 -0.0663342 0 -0.595359 0.111147 0 0 0.0190901 0 0 0.424369 -0.159548 -0.611123 0 1.56166 0 0.85064 -0.503628 0.613529 -0.85756 -0.0937614 0.468812 -0.305659 0.204907 0.276674 7.42923 0.0990865 0 0 0 -0.0854649 -0.161933 0 0 0 0 0.20139 10.8367 0.0742912 2.80639 0.404728 -0.136782 0.246029 -0.239231 0.327961 -0.494481 0.905235 0 0 0 0 0 0 +475 0 -0.649451 0.0192183 -0.135106 -0.428859 0.67776 0.368105 -1.26523 -5.18283 -0.190185 3.57865 -0.260495 0.51203 0.0382792 -0.226948 -0.048345 0.533726 1.68598 0.634311 -0.104191 1.18424 0.108184 -0.075019 -0.0215307 0.752564 -1.12127 0.280639 0.0410311 -0.197515 1.42829 0.170204 -0.0755054 -0.253647 0.189075 -0.0951635 -0.384826 -0.078622 0.120158 2.90196 -0.842781 0.892371 0.166978 -0.535799 -0.250432 1.14856 0.567731 0.666962 0.169483 -0.655391 0.0325921 -0.295678 1.08502 2.38457 0.161955 -0.517282 0.750427 0.457957 -0.170194 -0.465495 -0.636433 -0.0874031 0.0380148 0.104834 -1.628 3.71023 0.964139 0.612354 -1.95542 -0.621866 -0.21968 -0.359795 -0.443677 0.443672 0.369584 0.220539 -0.754372 0.410203 -8.39843 -7.37883 9.86242 -5.64946 5.5102 -6.6816 -4.16078 4.62933 -8.06282 12.6544 -1.18373 1.9119 -3.45483 5.51775 -9.89118 0 0 0 0 0 -0.135106 -0.428859 -0.00406106 0 0 0 0 -0.000199942 0 -0.0298441 0 0 0.00137352 0.0125111 -0.0607035 0 -0.00502873 -0.102587 -0.313809 0 0 0.0295797 0.000507818 0 0.020987 -1.54668 0 0 -0.00120967 -0.368084 0 0.207966 0 -0.0468073 0 0 -0.00559732 0 0 0.984238 -0.00489802 0.0413562 0 -0.0831688 -0.113084 0 0 0.482581 0 -0.00507929 -0.161604 0.0219203 0 0 0.000367083 0.00762537 0 -0.0075777 0.101336 0.011337 1.02711 -0.0558254 -0.0258587 0 -0.0262867 0.00181267 0.0166607 0.0181405 0.177237 0 0 0 -3.84661 -0.290346 0.947061 -0.0222293 0.0115593 -0.218707 -0.000256687 0.00123945 -0.0454873 0.249821 0 0 0 0 0 0 0.67776 0 0.368105 0 0 0 0 -0.513257 -1.32347 0 0 0.88509 0 0.117982 0 -0.0516765 0 0 0.512011 0 -0.42173 -0.186307 0.150988 0.083727 0 0 -0.42042 0 -0.115162 0 -1.46973 0.501633 0 -1.7379 -1.03386 0.0275308 0 -0.0630427 0 0 -0.147397 0 0.384667 1.88843 0 0 0.266147 0 0 -0.0451428 -0.522985 -0.690015 0 -0.384821 0 1.09015 -0.415899 0.631221 -0.364399 0.095941 0.295588 -0.77301 0.0544965 1.22297 3.86041 -0.0502986 0 0 0 -0.139551 -0.113613 0 0 0 0 0.533391 14.1133 -3.37204 9.32017 -0.303267 -0.32515 1.92449 -0.666033 0.616318 -0.717019 1.45232 0 0 0 0 0 0 +476 0 0 0 0 0 0.220915 -0.380436 0.833272 1.46459 0 0 0.239607 -1.77863 0 -2.78012 0.0674089 0 0 0 0.00143571 1.33573 0 0 0 0 0.401323 0 0 0.576382 -4.01055 -0.883237 0 0.0122016 0 0 0.366264 0.0444982 0 0 1.7334 -1.03892 0 0 0.359857 -5.69296 0 -1.15037 -0.216236 -0.589383 -0.813686 -1.67244 -0.603729 0 0.0511774 0.459072 -0.280587 0.866386 0.188461 0.838772 0 0 -0.35597 -0.883832 0 -0.170899 0.172902 -0.802869 0 0 0 0 0.332415 0.947309 0 3.07108 0.351262 0 0 0 -1.82412 0 -2.62009 6.74325 0 -1.18192 1.64026 -0.205545 0 -1.68799 2.50946 -4.35419 13.2159 0 0 0 -0.20491 -0.0437211 0 0 0 0.000890918 0.0356482 0 0.000172399 0 -0.00737194 -0.0163336 0 0 0 0 -0.108238 0 -0.00293798 0 -0.151299 0 0.0635655 0.174724 0 0.00479906 0 0 0.0936485 -0.000159711 0.0323914 0 0.0134058 0 0.00263815 0.0744618 0.0228119 -0.00376707 0.0142906 0 -0.00051279 0 0 0 0.000968136 0 0 -0.0135252 -0.00533538 0.0777458 0.0634841 0 0 0.00105881 0 -0.0166457 0 0 -0.0156323 -0.016621 0.183631 0.0019304 0 0 0.0175357 -0.0585796 -0.107377 0.0412448 -0.28391 0 -0.0973151 0.0235562 0.103281 0 0 0 0.162251 0 -0.0480045 0.109177 0 0.0071007 -0.0167318 0.072725 0 -0.00243058 0.00384015 -0.0143651 -0.0147467 0 0.220915 -0.20491 -0.380436 -0.0437211 0.587387 0.149868 -0.520762 0.50193 0.0975664 0.0491041 0.0171982 0.530768 0.00655867 0.0792129 -0.0718132 0.0418157 0.027381 0.367012 -0.337332 0.124414 -0.402383 0.120931 0.082716 -0.0732126 0.154971 -0.271991 0.211509 0.00547712 -2.90562 0.576482 0.0717041 -1.32013 -0.00882081 0.4923 -0.438339 0.0181652 0.0128564 0.0714069 0.113978 -1.92088 0.0217693 -0.0410206 -1.95974 -0.763078 0.00355213 0.0663497 -0.178904 -0.00152103 0.205779 0.220263 1.26612 0.0758129 -0.102378 1.65382 0.188305 -1.38411 -0.142745 -0.105191 -0.29952 -0.573847 0.301712 0.458574 -0.0295815 -1.65543 1.08547 0.433206 -0.288493 0.188693 -0.200373 0.152912 -0.228935 -0.153286 -0.139695 0.180642 -0.00662404 -0.238108 -0.181651 -0.69213 0.129874 -0.477383 -1.06879 4.35011 -0.193994 -0.105471 0.41511 -0.0705616 -0.127965 -0.260318 0.564454 -0.965596 2.37885 0 +477 0 0 0 0 0 0.0908665 -0.182813 1.33228 1.81031 0 0 0.29659 -0.617595 0 -0.47715 0.0572835 0 0 0 -0.0136377 -6.07734 0 0 0 0 0.354829 0 0 0.0294614 0.43991 -0.0861962 0 0.600208 0 0 0.239225 0.0434774 0 0 -0.212155 -1.49154 0 0 -0.124938 -3.85122 0 -0.15419 0.0387874 0.750114 0.0641271 -2.69717 0.14312 0 -0.15084 0.0508201 -0.314411 0.141219 -0.388217 -0.503247 0 0 -0.681386 0.48085 0 0.845586 0.872024 -1.50752 0 0 0 0 0.510173 -0.183487 0 -0.211952 0.0910518 0 0 0 -2.35092 0 0.127119 -1.11907 0 0.278068 0.286303 -4.38282 0 0.876331 -0.678675 0.0833192 -0.615851 0 0 0 0.0993569 0.00467862 0 0 0 -0.0602007 0.0656566 0 -0.0067138 0 -0.00387103 -0.00902234 0 0 0 0 0.0140335 0 0.000118654 0 -0.102357 0 -0.500865 -0.380809 0 0.000821598 0 0 -0.0258689 -0.00206353 -0.0352593 0 0.0098549 0 0.00460364 -0.105129 0.000169504 -0.0272826 -0.0133177 0 -0.000285853 0 0 0 0.000696199 0 0 0.000564853 -0.00328868 -0.0783614 -0.0098115 0 0 0.00405416 0 -0.0185114 0 0 0.0349353 0.00449041 -0.00980525 -0.00689887 0 0 0.0123821 -0.036927 -0.0126464 -0.0387097 0.0743004 0 0.0437489 0.00988394 -0.082668 0 0 0 0.101218 0 0.0362547 0.0373699 0 -0.00214758 0.0020014 0.0317504 0 0.00156225 -0.00329284 0.0150527 0.0178092 0 0.0908665 0.0993569 -0.182813 0.00467862 0.132054 -0.122263 0.233063 0.618532 0.88634 0.0131556 0.00614319 -0.0970392 0.00191523 -0.00663314 0.0127463 0.0426248 -0.0190092 0.0751866 -0.134586 -0.985865 -0.285568 0.1532 -0.149041 -0.0122033 -0.145464 0.140227 0.456223 -0.0352485 4.52792 -0.120799 -0.528815 0.439047 0.000356948 1.01958 -0.491179 -0.0154684 -0.00275246 0.0889098 -0.0321662 0.627982 0.0759898 0.028944 1.84603 -1.394 -0.000889279 -0.0109521 -0.181439 -0.184074 -0.0730586 0.140763 0.804374 -0.11778 0.108272 -0.288383 -0.0887669 0.120748 0.120246 -0.172658 0.420111 0.00299952 -0.259614 0.372627 0.175715 0.116415 2.54679 -0.173493 0.105242 0.043704 0.0649226 -0.0772474 0.0472602 0.0511403 -0.0301196 -0.0540914 -0.112176 -0.180425 1.33967 0.269112 -1.06843 -0.00304647 0.128555 -0.496308 -0.00386878 0.0319398 -0.158116 -0.344662 -0.0262151 0.0733426 -0.193623 0.242285 -0.719514 0 +478 0 0 0 0 0 0.161089 -0.0585817 -0.92698 -2.18129 0 0 -0.253985 -0.894058 0 -0.876264 -0.101178 0 0 0 -0.163507 3.08924 0 0 0 0 -0.39548 0 0 0.0922974 -1.59545 -0.396704 0 -0.603924 0 0 -0.0803373 -0.038606 0 0 -0.670389 -0.00748496 0 0 -0.0789536 -1.58437 0 -0.534556 -0.483785 -1.11286 0.408955 0.234553 0.672322 0 0.391192 -0.37089 -0.0986525 0.44755 -0.271644 -0.804804 0 0 -0.344715 1.29799 0 0.409461 -0.072749 -0.107229 0 0 0 0 -0.262578 -1.18822 0 0.32961 1.50874 0 0 0 5.31981 0 2.25317 1.34178 0 0.832656 0.113075 4.62363 0 0.0494213 0.43956 0.832104 4.89604 0 0 0 0.0994597 0.0282454 0 0 0 0.0255242 -0.0320234 0 0.00210149 0 0.00603011 0.00463336 0 0 0 0 0.0196587 0 -0.00505997 0 0.0394849 0 0.191492 0.0101196 0 -0.00142812 0 0 -0.0256312 0.000233538 -0.0160698 0 -0.0106008 0 -0.00228784 -0.0168952 -0.00516034 0.00402319 -0.00708648 0 0.00042037 0 0 0 -0.00076509 0 0 0.0108634 0.00426725 -0.0739805 -0.0332891 0 0 -0.00121236 0 0.0144583 0 0 -0.00156828 -0.00844022 -0.00598736 -0.016773 0 0 0.0124961 0.013958 0.0794712 0.0223474 0.17831 0 0.0173827 -0.0142346 0.0859997 0 0 0 -0.0702163 0 0.0422064 -0.0754758 0 -0.00476558 0.0131591 -0.0305821 0 0.00184207 -0.00485347 0.0144195 0.0157088 0 0.161089 0.0994597 -0.0585817 0.0282454 -0.0957185 0.0818667 0.175415 0.319831 -0.773307 -0.0459736 -0.0608775 -0.497405 -0.00584306 -0.0605291 0.038583 -0.0270201 -0.059597 -0.365611 -0.0185972 1.82725 0.0725258 0.088337 -0.180051 0.0442463 -0.402546 -0.115687 -0.229958 0.0336859 -2.10572 0.141664 0.247848 -0.42552 0.00562783 0.459123 0.119486 -0.0200083 0.000972143 0.0623715 0.0131418 -0.707212 -0.0511889 -0.02134 -0.606401 0.987692 -0.00848985 0.0154728 0.156843 0.238645 0.24295 0.12245 -0.765512 0.782025 0.192044 0.961488 -0.0730879 0.262421 0.0844188 -0.132281 -0.227015 -0.13919 0.205637 0.0136705 0.0633309 -0.319128 -2.49349 0.0536568 -0.613033 -0.109662 0.0706676 0.433075 0.106414 0.033139 0.12447 -0.201807 -0.0190051 0.132523 -0.627884 0.561528 1.67295 0.4199 -0.25393 3.04732 0.18779 -0.0893865 0.29039 0.875394 0.127476 0.00158526 0.0634548 0.00994615 0.902762 0 +479 0 -0.482888 -0.072025 -0.0737154 -0.249376 0.328488 0.335194 -1.7611 -4.02042 -0.307062 2.86549 -0.00396581 1.03809 0.0194137 1.02129 -0.0101925 -0.556058 -4.8269 0.203649 0.0408607 1.82001 0.0466491 -0.205819 -0.0169225 0.61899 -0.684899 0.116307 0.0137417 -0.568349 -1.17321 0.434095 -0.0876379 -0.167785 -0.12823 -0.304844 -0.43484 -0.0205393 -0.0150026 2.99567 -0.210654 1.24993 0.117471 -1.17414 -0.0656543 2.78641 0.689989 0.839731 -0.823229 -0.153276 0.274454 -0.605697 0.619941 1.24745 0.152645 0.196043 -0.0245845 2.07322 0.559056 0.187934 -1.04218 -0.298064 2.31637 -1.45472 0.797941 0.355692 0.252649 1.92178 -0.0957707 0.21232 0.0803161 -1.66851 0.092433 -0.191874 0.0667968 -0.982703 0.695553 0.535228 -12.6068 -8.25679 8.37571 -4.10723 2.61349 -1.61622 -3.23025 2.26573 -3.21649 6.61974 -0.711762 0.558932 -0.601788 -0.397156 4.10425 0 0 0 0 0 -0.0737154 -0.249376 -0.00330053 0 0 0 0 -5.71086e-05 0 0.00519306 0 0 0.0019883 -0.00300353 0.0140372 0 0.00308033 0.0860821 -0.00172527 0 0 0.159627 -0.000177012 0 -0.0230681 0.420635 0 0 0.0256939 0.248639 0 -0.1258 0 0.0280581 0 0 0.00506473 0 0 -0.152823 -0.00110964 0.0254618 0 -0.0470786 0.00419762 0 0 -0.0690034 0 -0.00387722 -0.154586 0.00556703 0 0 -0.010792 0.0065609 0 0.0160106 0.0443288 0.0381479 -1.10203 -0.040977 -0.0284708 0 -0.0303682 -0.00305501 0.00391634 -0.126187 0.109773 0 0 0 -0.243982 -0.0583066 0.00614872 -0.00878998 0.0178547 -0.0260297 -0.00405996 0.00769448 -0.0153932 0.0136277 0 0 0 0 0 0 0.328488 0 0.335194 0 0 0 0 0.107674 -0.971262 0 0 0.639159 0 0.0902483 0 -0.0320274 0 0 0.203883 0 0.359423 -0.0936025 -0.0258072 0.0262938 0 0 -0.284941 0 -1.9031 0 3.06401 0.678616 0 -0.69681 1.20755 0.00425591 0 0.0192636 0 0 -0.10603 0 0.542035 0.717745 0 0 0.0665892 0 0 -0.183764 -1.57423 -0.41402 0 -0.743298 0 0.346423 -0.0604696 0.187356 -0.18549 -0.0368989 -0.61551 -0.450098 0.156645 2.01201 4.57533 0.00378755 0 0 0 0.0420998 -0.204607 0 0 0 0 0.361414 -11.7629 -3.20176 3.09731 -1.21724 1.26011 -2.04775 -0.412959 0.356808 -0.429668 0.501576 0 0 0 0 0 0 +480 0 -0.190135 -0.526843 -0.0158584 0.0649746 0.0743427 -0.208629 0.481022 1.54003 0.0366046 -0.523956 -0.463683 0.519533 0.00735112 0.611551 -0.0504561 -1.4183 -7.47226 -0.170502 -0.0729133 1.06307 -0.00918124 0.587741 -0.00860189 -0.0289942 0.791184 -0.465162 0.00268077 0.583009 1.89463 0.163262 -0.0335213 -0.545587 1.24495 -0.242682 0.389743 -0.0660312 -0.150844 2.80766 -0.633938 -0.13127 0.0402042 -0.89893 -0.0914676 0.632548 0.208265 -0.461218 1.10824 -1.03134 0.281424 -0.6423 0.295109 -2.06526 0.504125 -0.25976 0.60845 -0.818704 0.0730213 -0.270744 0.0868984 -0.0735445 -0.762367 -0.31483 -0.0184086 -2.3529 0.521753 -0.488347 1.07605 -0.26921 0.00486893 0.972768 -0.00491473 -0.321313 0.471738 -2.08964 -1.52453 -0.134286 -6.02255 0.259627 -3.51322 -1.41738 2.27761 -7.1641 0.575023 -0.179894 -0.0314399 -2.76839 -0.214837 0.462884 -1.3415 2.34528 -6.62803 0 0 0 0 0 -0.0158584 0.0649746 0.00907133 0 0 0 0 0.00174112 0 0.00872953 0 0 -0.00335547 -0.0116634 0.0184905 0 0.00293967 0.00200303 0.0487917 0 0 -0.282124 -0.000837877 0 0.0090066 -0.196154 0 0 -0.0307054 -0.0336429 0 -0.0107797 0 -0.0388282 0 0 -0.00369239 0 0 -0.279249 0.0243796 -0.045741 0 0.128077 -0.0268367 0 0 0.0720432 0 -0.0114021 0.030678 0.026227 0 0 -0.00231545 -0.0388048 0 0.00254655 -0.0155374 0.00208739 -0.425096 0.00748772 -0.00672205 0 0.0229156 -0.0509461 0.151983 -0.194468 -0.011852 0 0 0 0.763422 0.0119548 0.0585806 0.0191477 -0.0356774 0.0809327 0.0018968 -0.0036867 0.00976945 -0.00585162 0 0 0 0 0 0 0.0743427 0 -0.208629 0 0 0 0 -0.161973 -0.827997 0 0 0.119184 0 0.0175604 0 -0.0494001 0 0 0.199972 0 1.01901 0.012163 0.185299 0.0118781 0 0 -0.465932 0 -4.96092 0 1.95105 -0.138219 0 -0.106242 1.62499 0.0225442 0 -0.0130303 0 0 -0.0947856 0 -0.997314 -0.37461 0 0 -0.065068 0 0 -0.0106723 0.16041 -0.105049 0 -0.475018 0 0.332089 -0.0852983 0.112534 -0.0137383 0.0760828 -0.0972421 -0.518813 -0.056429 0.155325 -4.6322 -0.0666469 0 0 0 -0.114634 -0.0459758 0 0 0 0 0.286176 0.971914 -0.208616 1.68986 0.174832 0.23373 -0.634588 -0.00875493 -0.00540041 -0.00277912 -0.0065624 0 0 0 0 0 0 +481 0 1.14703 -0.00367279 0.0726373 0.227004 -0.15971 -0.0316504 0.69542 1.56148 0.246609 -1.92835 0.501572 0.189119 -0.0197276 1.06618 0.0739221 -1.14716 -2.07639 -0.183297 0.0926428 -0.562763 -0.0386587 0.103152 0.0169256 -0.485356 0.205823 -0.487242 -0.0411883 0.15657 -0.238448 0.123793 0.083915 0.892491 -0.61416 0.186308 0.16799 0.0777891 -0.221688 -4.4997 1.11055 -0.390825 -0.120221 0.425573 0.17204 2.39656 -0.714414 -0.121756 0.103051 1.54711 -0.57943 0.460329 -1.16941 3.34888 -0.19044 0.17215 -0.265108 1.22967 0.326674 0.226283 0.82081 0.299308 -1.52257 0.301746 -0.543093 -1.32527 -0.0797168 -0.178646 0.281924 -0.181302 -0.0591319 1.3262 -0.241972 1.19635 0.312392 -0.548378 -0.461915 -0.338194 22.9052 7.55976 -0.446979 2.9196 -3.107 7.19849 2.19349 -2.05613 2.90801 -2.4996 0.736958 -1.03902 1.37261 -2.09814 0.834166 0 0 0 0 0 0.0726373 0.227004 0.00379669 0 0 0 0 0.000104449 0 0.00901531 0 0 -0.00114385 0.00490573 -0.00742082 0 -0.00109563 -0.0829837 0.0472649 0 0 -0.0696558 0.000312863 0 -0.0121203 -0.460633 0 0 -0.0142006 -0.258565 0 0.0128272 0 -0.0172655 0 0 -0.00429881 0 0 0.0633261 0.00181245 -0.0136635 0 0.0542463 -0.0330245 0 0 0.0294756 0 0.00652867 -0.0894011 -0.00141322 0 0 0.0115591 -0.00258798 0 -0.0137394 0.0169388 -0.0267611 0.886729 -0.006007 0.0185266 0 0.0186343 -0.021122 0.0708274 0.162029 0.0203065 0 0 0 -0.565011 0.103463 -0.206361 -0.00882502 0.0170939 -0.0337729 0.0035888 -0.00683826 0.0131566 -0.0196552 0 0 0 0 0 0 -0.15971 0 -0.0316504 0 0 0 0 -0.246998 1.11043 0 0 -0.36715 0 -0.0487212 0 0.0459894 0 0 -0.350905 0 0.385956 -0.105415 -0.104131 -0.0639206 0 0 0.541635 0 2.58686 0 -2.08879 0.0666479 0 -0.528641 -0.131469 -0.0154318 0 -0.0479351 0 0 0.0954887 0 0.382377 -0.325535 0 0 -0.0703717 0 0 -0.415147 0.23792 -0.418669 0 -0.0101143 0 -0.713009 0.242321 -0.100657 0.677315 0.122351 -0.294443 0.331578 -0.322818 0.633989 1.78572 -0.135733 0 0 0 0.362508 0.203885 0 0 0 0 -0.231438 18.4762 1.60327 3.31621 0.473423 -0.364525 1.54014 0.238204 -0.203446 0.258407 0.23086 0 0 0 0 0 0 +482 0 0.31495 -0.124451 -0.0209937 -0.0702934 0.169363 0.155299 -0.587584 -1.59921 -0.215997 1.60061 -0.042287 -0.271631 0.00244653 -0.160062 0.0228369 -1.01461 -2.75854 0.29454 0.0560184 -1.70795 0.0444744 0.138335 -0.00294068 0.277185 -0.368188 -0.391748 0.0650417 -0.308113 -0.38796 0.101541 -0.0275193 0.23342 0.549878 0.393391 -0.165745 -0.00565096 0.202987 2.97401 -0.0788899 -0.411933 0.0225679 1.08276 -0.0105033 -1.17601 0.209348 0.15144 -0.345661 0.538997 0.032193 1.17895 0.505227 2.72684 -0.134313 0.091168 -0.106603 0.348195 0.656227 0.023382 -0.535896 -0.0500139 0.444812 -0.0211802 0.640417 -0.305748 -0.778964 0.390007 0.442782 0.720096 0.0676178 -0.543259 0.139078 0.0801957 -0.0713217 -0.942028 0.417632 1.1258 -7.55903 -3.82149 2.54593 -1.80825 1.14975 -2.34352 -0.977022 0.609035 -1.51617 2.9527 -0.0288502 -0.00886412 -0.173415 0.101923 0.74182 0 0 0 0 0 -0.0209937 -0.0702934 0.0042773 0 0 0 0 0.000809557 0 0.0178391 0 0 -0.000981709 -0.00517411 0.0146149 0 0.00238374 -0.00150764 0.111712 0 0 -0.0961617 -0.000367745 0 -0.0128222 -0.13061 0 0 -0.00827702 -0.0335532 0 -0.131141 0 -0.0162187 0 0 -0.00147577 0 0 -0.269485 0.0113171 -0.0139876 0 0.0598323 -0.0169538 0 0 -0.0187623 0 -0.00363952 -0.150414 0.00910631 0 0 -0.00595611 -0.0169404 0 0.0100059 0.0158136 0.0203038 -0.284991 -0.0136026 -0.0171296 0 0.00547826 0.00190583 0.186884 -0.127205 0.0815522 0 0 0 0.318921 -0.00898034 -0.095852 0.00425796 -0.00697192 0.00153139 -0.000716634 0.00115801 -0.000757834 -0.0288128 0 0 0 0 0 0 0.169363 0 0.155299 0 0 0 0 -0.408978 0.122478 0 0 0.792169 0 0.0916032 0 -0.00129037 0 0 -0.273085 0 0.414909 -0.1688 0.325618 -0.0361366 0 0 0.0441172 0 -0.472839 0 0.520473 0.436537 0 -1.24509 0.751423 0.0341901 0 -0.0538046 0 0 0.00197967 0 0.294959 -0.571084 0 0 -0.0747858 0 0 -0.320623 -2.31955 -0.294788 0 -0.756836 0 0.109134 0.254478 -0.0795161 -0.640684 0.0220502 -0.151366 -0.338066 0.0456276 1.30444 0.839093 0.0516751 0 0 0 0.203928 -0.211547 0 0 0 0 0.0291521 4.44273 -1.21149 3.76156 0.0136382 0.20802 -0.126862 -0.333183 0.269585 -0.342567 0.644384 0 0 0 0 0 0 +483 0 -0.682427 0.00196631 0.00483024 0.0681694 0.0979732 0.127731 -0.933003 -0.975591 0.0625138 0.0853035 -0.0621769 -0.46336 0.000142759 -1.54401 -0.0093878 0.139795 -2.04685 0.0944908 -0.00757655 1.2067 0.0231496 -0.336514 0.000294045 0.0506364 -0.509403 0.35558 0.0392007 -0.517458 -1.26492 -0.0554972 0.00429191 -0.183918 0.133492 0.26617 -0.435745 -0.00378677 0.231952 2.44736 -0.0112913 1.16309 0.000595769 1.18313 -0.000453956 -3.91839 -0.00713783 0.721101 -0.790005 -0.183045 -0.00674159 -0.808312 -0.1077 0.100633 -0.0262276 0.00652586 0.156375 -2.02385 -0.466681 0.32465 -0.0984955 -0.0049964 1.93255 -2.19015 1.29287 -0.799942 -0.284336 1.35895 0.861891 0.32408 -0.0126995 -0.194156 0.0948525 -0.262054 -0.184813 0.781533 0.835979 -0.534079 -8.48096 -2.27851 0.56907 -1.68316 1.16701 -1.23977 -0.0529688 -0.0385075 0.25889 1.46447 0.000983663 0.00126559 0.0939833 0.0971985 2.41866 0 0 0 0 0 0.00483024 0.0681694 0.000825175 0 0 0 0 6.15861e-05 0 -0.0124823 0 0 -0.000711649 -0.000306423 -0.00246869 0 -0.000553332 -0.0199092 -0.0629072 0 0 -0.174249 -2.86013e-05 0 -0.00308603 -0.776834 0 0 -0.0276278 -0.123528 0 -0.00943175 0 -0.0123127 0 0 -0.00188984 0 0 -0.212393 0.000951518 -0.00865089 0 0.0124897 -0.00283502 0 0 0.0569226 0 -0.000337142 0.0194627 0.00232115 0 0 0.00131053 -0.00278532 0 0.000158803 -0.0372631 -0.00548483 0.54854 0.0103794 -0.00840597 0 0.0113728 -0.0348509 -0.0747557 0.0622811 -0.0521927 0 0 0 0.464624 0.0166822 0.0609852 0.00310387 -0.00545531 0.033295 0.000733641 -0.00168828 0.00414501 0.0217673 0 0 0 0 0 0 0.0979732 0 0.127731 0 0 0 0 0.351865 -0.0493363 0 0 -0.237928 0 -0.0194096 0 -0.0113123 0 0 -0.330607 0 -0.413562 0.125613 -0.045433 -0.0385737 0 0 -0.160249 0 -6.60744 0 1.80011 -0.603827 0 0.796426 0.219352 -0.00110506 0 0.0576089 0 0 -0.00628411 0 -2.37023 -0.889479 0 0 -0.096961 0 0 0.150415 1.7101 0.0679523 0 0.356631 0 0.231415 0.019424 0.0424232 0.176954 0.083732 0.145641 0.0941533 0.101882 -1.33553 -3.95128 -0.0743438 0 0 0 -0.0512852 0.00797195 0 0 0 0 -0.0930752 -7.62132 -0.11332 -1.40554 -0.0767255 0.317624 -1.13108 0.130933 -0.0864819 0.0934895 -0.417164 0 0 0 0 0 0 +484 0 0.55697 0.525856 0.0266658 0.104402 -0.00671236 0.258499 -0.553515 -0.97822 0.287125 -0.802344 -0.00717127 0.365447 -0.00286947 -0.481753 -0.0398151 0.85688 4.69555 -0.125441 -0.0833172 -0.254948 -0.0145012 -0.485005 0.00364605 -0.130856 -0.409858 0.27211 -0.0465105 -0.482043 -0.687481 0.0668742 0.0348929 -0.368082 -1.40961 -0.28065 -0.288328 -0.000783215 -0.0376545 -5.3012 0.114758 0.485132 -0.0257749 -0.504082 0.0100204 0.629197 -0.231959 0.519539 -0.536326 -0.706897 -0.00478271 -0.424948 -0.686902 -1.64088 0.226321 -0.137002 -0.0399699 -1.73739 -0.0330632 -0.214296 0.358052 0.0575786 -1.2487 0.320277 -0.454285 0.104057 -0.184819 0.113583 -0.772679 -0.172906 -0.0852747 0.419978 -0.513975 -0.253304 0.17485 0.418588 0.175239 0.623544 20.4102 4.9085 1.9173 2.36766 -2.35539 8.77684 -0.105551 0.0448343 1.16391 1.72394 0.0319662 0.00793716 0.269136 -0.0627542 1.31454 0 0 0 0 0 0.0266658 0.104402 -0.00473246 0 0 0 0 -0.00093713 0 -0.0146015 0 0 0.00183509 0.00690322 -0.0155451 0 -0.00226197 0.00613502 -0.112446 0 0 0.177887 0.000490954 0 -0.00120549 0.283961 0 0 0.0180655 0.0591466 0 0.0427532 0 0.0224482 0 0 0.0019849 0 0 0.104214 -0.0130979 0.0259614 0 -0.0661732 -0.00572837 0 0 0.036411 0 0.00638229 0.0304034 -0.0093879 0 0 0.00773619 0.0238027 0 -0.0123927 -0.00529397 -0.0183949 0.33312 0.00329453 0.0180121 0 -0.00476279 -0.014298 -0.189463 0.193139 -0.0168003 0 0 0 -0.176049 0.0103303 0.0660815 -0.00139848 0.0019721 0.0143812 0.000495518 -0.000752596 -0.000731009 0.0293075 0 0 0 0 0 0 -0.00671236 0 0.258499 0 0 0 0 -0.162076 -0.24954 0 0 -0.27166 0 -0.0407186 0 -0.0172577 0 0 0.53056 0 -0.808536 -0.103663 -0.0874552 0.0431974 0 0 -0.195427 0 2.89034 0 -2.82325 0.339799 0 -0.489204 -1.34251 -0.0157342 0 -0.0378185 0 0 -0.0265379 0 0.65741 1.37751 0 0 0.158824 0 0 -0.205982 1.60872 -0.295674 0 -0.28499 0 -0.51193 -0.111961 0.0352817 0.385482 0.141509 0.239881 0.477738 -0.235944 1.01823 3.73949 -0.0633131 0 0 0 0.0644002 0.198042 0 0 0 0 0.10542 17.4734 0.778617 3.78372 0.1901 -0.259086 1.79243 0.179544 -0.10685 0.115629 0.308333 0 0 0 0 0 0 +485 0 709.17 111.767 12.7482 63.8744 413.785 70.6369 6.52241 11.3974 48.6322 -26.6786 11.3688 16.8981 -6.37298 18.0965 -2.35025 83.0316 271.202 -6.53872 -7.48527 91.1938 -3.67324 -10.8551 8.4867 -12.9345 1.22385 30.8791 7.21473 -12.4313 -65.6324 11.8311 15.9067 -13.5476 -26.5934 20.6711 -0.977078 4.27756 23.0392 -104.409 39.6257 43.2393 -11.7736 81.142 10.0208 16.0843 -32.8192 30.0283 -19.7496 -46.1745 -4.93955 27.7445 -5.04273 -3.31064 14.4285 -4.29236 6.46501 38.2143 13.7937 -5.70934 6.19506 4.08996 -23.5619 -13.2453 7.63657 -28.1616 -23.0082 -6.24714 20.2253 17.5462 -11.3545 12.3302 3.09044 4.40197 -14.2284 -15.501 -7.88688 -20.6079 442.208 103.984 48.8039 102.506 -88.8952 223.526 43.544 -39.0481 53.2266 15.9784 43.2398 -47.0789 83.204 -103.416 214.884 0 0.319656 0.0373586 30.4608 4.55467 12.7482 63.8744 0.16161 0.95578 -0.423891 -0.000833992 0.213677 0.00738969 0.0298833 -0.255376 0.0437319 -0.00913654 0.030348 0.201957 1.0095 0.511219 0.00826795 3.21463 3.16921 0.00358156 3.27069 -0.65917 0.0155587 -0.143294 -0.961281 17.9994 -3.3053 0.0145791 0.28857 6.42205 -0.243237 0.848157 -0.0399705 1.16763 -0.613214 0.185867 0.325381 -0.0879675 0.00283553 3.15696 0.0922605 0.422268 -0.0171582 2.19186 -0.0480494 -0.00451103 -0.0374248 0.626721 -0.040505 0.151259 7.38398 -0.505734 -0.137707 0.119665 -0.0678143 -0.420128 0.0900136 0.700965 3.01856 0.15816 -3.782 0.972149 0.681558 -0.236459 0.394107 1.0448 8.21965 -1.6323 1.69641 0.00838285 0.322101 0.0236123 -70.2958 -4.46334 -13.4207 0.183429 -0.58631 3.70424 -0.0300159 0.0701042 0.214242 -1.02655 0.0153098 -0.0188296 0.155585 -0.409608 4.12247 0 413.785 30.4608 70.6369 4.55467 141.599 20.4403 26.2319 -2.89452 30.4024 -3.39681 -2.44841 -14.506 -0.583517 -3.51812 4.35114 1.08104 -2.37992 -18.9262 5.96237 32.174 -8.86223 -1.06767 -3.30212 1.32088 -16.5526 -6.12666 4.60789 1.48562 97.8517 18.8341 -84.1634 21.3899 0.697538 -7.14319 -24.9844 -1.0178 0.540952 -0.102001 3.53081 -32.9594 6.20828 -1.11818 43.3645 2.43286 -0.333806 3.15899 3.83233 7.05808 -5.98203 -4.2023 0.703896 6.99834 6.50257 11.2875 -9.43054 -19.7954 11.1037 -10.2089 -3.1948 -0.852591 -12.5632 8.54066 -4.14666 1.21154 36.0001 -4.39713 10.489 -0.495246 0.8179 8.96908 2.0914 -3.53947 3.07421 3.37688 -1.11978 -10.407 607.221 104.193 25.2903 85.4265 -77.4518 137.195 27.2301 -21.8462 21.8963 6.21994 22.6875 -18.94 22.4449 -24.0696 44.0676 0 +486 0 715.139 116.03 14.1301 71.4096 409.926 72.7162 -1.50226 -8.03564 87.4014 -58.1024 18.854 19.6594 -6.99152 29.7654 -2.13919 86.7148 299.813 -12.0901 -12.6448 143.262 -4.45206 -16.0069 9.26191 -16.4308 -6.5545 31.9482 5.82121 -15.0157 -103.172 13.3594 22.4915 -8.1997 -40.52 18.0309 -4.72972 5.20621 15.2794 -164.697 65.7357 51.8154 -19.604 66.7131 15.6279 59.9654 -73.0718 32.6719 -32.3574 -63.3041 -32.0942 14.2398 -29.9689 -21.0641 17.7491 -8.94896 6.90809 20.8306 33.3216 -7.24156 21.8576 27.8646 -29.9068 11.4008 -9.8791 -36.8519 -24.1852 -11.5061 16.8608 24.6898 -25.0984 8.88094 -5.51393 25.2331 -26.0181 -23.5873 -12.2908 -9.29626 608.6 152.098 120.786 201.733 -157.455 359.132 123.209 -87.8661 111.094 32.7096 178.858 -134.183 158.71 -163.31 323.039 0 6.50373 0.729259 27.2778 3.8263 14.1301 71.4096 0.641754 1.83949 -7.78224 -0.0188735 0.30241 0.00539449 0.386718 -0.171054 0.656552 -0.221081 -0.285691 -0.744129 -0.962768 7.30205 -0.232149 0.383528 -1.34117 0.0554306 11.7691 1.94116 -0.0122376 -0.136607 -2.54074 15.3178 -4.27642 0.242019 0.951345 1.31936 -0.906773 -5.91903 -0.746282 0.891433 -0.808126 2.39542 0.204182 -2.43773 0.0351976 -17.4354 0.216606 -4.21997 -0.0880966 5.74098 3.07048 -0.486093 -0.542027 -8.5719 0.235848 0.445933 -0.0597816 -1.66479 -1.71752 1.95 0.413358 -1.49055 -2.0362 -1.52719 -1.43393 -0.406757 -4.52552 -0.992552 -0.211531 -0.122614 0.879805 0.487191 1.52466 -4.14952 -1.93472 0.162751 1.76452 0.366208 171.645 25.1022 15.6215 6.43889 -4.66722 22.5835 0.218027 0.221938 1.95338 3.03039 0.323827 -0.384018 1.11631 -1.60106 5.64464 0 409.926 27.2778 72.7162 3.8263 144.751 21.0993 33.9434 2.36914 41.9733 -2.91118 -3.87922 -24.6291 -0.442665 -3.29391 5.13058 1.4607 -3.56312 -19.7231 7.45252 54.5867 -12.867 -2.20084 -5.98347 1.98628 -24.6966 -5.40311 8.79844 1.69609 179.196 17.4056 -101.744 20.3872 0.772061 2.13568 -29.3863 -0.780362 0.356417 -0.549963 2.41574 -31.5398 6.47784 -0.989938 51.5478 30.2773 -0.525787 2.55133 7.65048 9.73868 -2.00958 -5.18026 3.37516 -3.89872 8.45916 17.9186 -13.1371 -20.3418 5.2576 -4.16594 0.364826 5.28101 -3.28411 9.87603 -9.99236 -8.18072 -12.9343 -7.51433 1.99601 -4.4103 -1.41405 17.7596 6.85585 -4.10821 4.9751 0.364522 1.84394 -18.1741 689.857 161.178 -22.1725 103.314 -82.6389 152.76 29.8681 -22.6095 28.9694 5.05039 23.0752 -19.0946 23.8697 -21.0649 40.2935 0 +487 0 713.332 115.618 12.8996 66.0678 411.631 72.6553 1.17807 9.20751 81.8211 -38.0631 12.311 21.4827 -6.12701 34.8202 -0.0426395 94.2084 333.265 -8.20863 -8.98217 123.279 -3.70773 -12.9567 9.27944 -10.803 -3.69514 33.3531 7.90305 -11.6104 -23.1069 12.3184 22.5398 -0.231498 -30.5216 23.221 -2.11057 5.36395 21.6749 -110.267 19.1471 46.5888 -10.9597 82.6745 7.92433 70.934 -26.4325 29.1248 -17.7118 -45.9062 -10.1056 28.2138 -15.0253 47.4943 17.6086 -4.12418 -2.85228 57.409 29.2333 -16.1755 11.4129 10.1433 -15.6164 25.1343 -2.99835 -41.1686 -23.6534 10.3345 23.8155 18.8561 -34.0158 9.7884 -11.1757 7.75445 -33.9477 -3.53321 12.8745 -13.4395 403.601 124.175 21.5383 110.096 -77.3892 164.339 39.3154 -23.457 44.3997 9.42305 31.7443 -24.1629 46.9433 -53.1395 116.074 0 0.126294 0.0156262 34.5156 5.27442 12.8996 66.0678 0.0698858 2.16591 -1.19846 -0.000363023 0.419868 0.0209415 -0.0333672 -0.431503 0.0191403 -0.00387001 0.0170981 0.0657825 -1.57711 0.212868 -0.0626295 2.32477 -3.24235 0.00163301 9.33956 6.70236 0.00628365 -0.114981 -1.2783 17.337 0.247015 -0.0131807 1.71281 5.4942 -0.2686 -4.69826 -0.0840462 0.960323 -0.25867 -0.221259 0.339163 -0.0356355 -0.00186825 -12.0322 0.37012 0.153803 -0.0171173 0.967971 0.445556 -0.0519916 -0.0643266 0.25171 0.275747 0.0565456 -2.03455 -0.135113 -0.0605113 0.207557 -0.0621547 -0.189176 -0.618255 -0.336378 -1.02319 -0.0836598 -7.19163 -0.288682 0.782661 -0.198899 0.224926 -1.0369 1.69868 -1.11336 -2.67477 -0.0368164 1.57475 0.00972777 67.0477 1.97782 11.9168 0.507376 -0.798147 10.3053 -0.0335086 0.0707065 0.264834 3.56151 0.00698478 -0.0037965 -0.0283137 0.0724362 2.14939 0 411.631 34.5156 72.6553 5.27442 134.768 19.7163 37.8531 -1.50673 47.9426 -3.05037 -3.56567 -22.5794 -0.580628 -4.05746 6.49723 2.20077 -4.16107 -15.1821 6.3024 46.0197 -11.6735 -0.63608 -3.24896 1.75733 -25.9676 -4.32582 12.9724 1.49815 193.045 12.444 -57.7319 21.787 1.07039 10.0989 -17.5216 -0.896942 0.450841 -1.01938 2.64452 -16.1613 8.72581 -0.930239 60.2361 19.8641 -0.547616 2.52035 7.11551 8.50964 -4.15914 -5.9482 4.49258 9.44999 8.10088 27.7991 -13.0208 -7.17368 1.62379 -6.33833 4.59169 2.78412 -2.01581 -0.169024 -6.17203 -16.2242 5.50214 -2.41269 6.30368 -1.62727 2.94917 14.9924 3.04612 -3.59238 3.27039 2.01914 -0.306263 -18.3334 394.034 121.788 -28.7487 70.6511 -56.3141 89.1634 21.448 -17.8309 27.2521 -8.94553 17.1245 -13.6148 16.927 -14.8959 24.7553 0 +488 0 -1.32533 -0.708712 0.310437 -0.0303702 -3.98658 -1.313 7.17562 25.9501 4.40527 -8.76672 -0.724497 -0.930452 -0.174603 6.0467 -0.0371201 6.06345 27.4161 -0.226891 -1.31427 -23.1375 -0.0214786 1.18806 0.348089 -2.8799 4.15731 0.0223876 0.672576 0.828128 18.5522 1.32487 1.53186 0.561083 1.90236 4.31104 1.18509 0.148592 1.54679 -0.85705 -2.61847 -3.92537 -1.0243 11.3225 0.164559 -7.5913 -2.57223 -0.112329 3.77163 -0.510778 -0.678979 5.03846 -9.60987 -41.6165 2.33708 -3.87082 2.11934 -20.3963 0.119892 -4.87453 4.84368 2.64597 -3.77198 2.36514 2.50877 -14.202 1.69252 -0.692634 5.71412 -4.42529 -4.03796 -0.00622227 -2.22691 -4.45566 -3.46285 -23.7114 1.39839 -9.62191 8.65808 22.6298 -72.4771 15.7563 -16.038 -29.6722 12.6549 -11.9831 0.940549 -36.231 10.2659 1.30719 -18.4004 25.0207 -58.418 0 0.107184 0.00377767 -0.35981 0.0278581 0.310437 -0.0303702 -0.018301 -0.379666 0.322541 0.000112625 -0.0525323 -0.0216879 -0.00685029 -0.0156252 -0.00154049 0.000513949 -0.00141878 0.25678 -0.176974 0.0605158 -0.0460085 1.83593 0.25976 -0.000611401 -2.51434 0.385943 0.0184781 0.0208291 -0.458576 6.68521 0.333414 -0.00255544 0.295683 4.29458 0.1217 -1.12339 0.032159 2.08083 0.0998354 -0.000359639 0.388189 -0.0113481 -0.00127864 -2.24813 -0.293265 0.0995555 0.00972535 -0.260388 -0.0360447 0.0167394 0.0698476 -2.87711 -0.0274904 0.119563 -3.19917 -0.254751 0.00194299 -0.036686 0.0164832 0.119342 0.187514 -0.0622205 0.935945 0.147973 6.57206 -0.427203 -0.987116 -0.211178 -0.0555496 -0.249343 1.13812 1.01818 -0.673144 -0.153193 -0.310453 0.00270878 9.73714 0.867077 0.631163 0.834691 -0.650925 -1.25277 0.00590052 0.0580047 -0.0675791 -0.0158354 -0.00447432 0.00761242 -0.000445686 0.0200541 -0.329108 0 -3.98658 -0.35981 -1.313 0.0278581 -2.51256 -0.584412 0.182506 -0.315798 3.50833 -0.0349874 0.294145 -1.31006 -0.00456437 -0.25193 0.032737 0.356263 0.169484 -0.445227 -3.47325 -5.55707 2.86826 0.224854 0.380707 -0.60479 1.89008 0.212931 1.59595 -0.0761674 26.7689 0.0439201 0.577895 2.23324 0.00537352 3.55646 1.94656 -0.074582 0.014951 0.0138449 0.0787511 2.80017 0.576271 0.0416152 9.09714 -9.04058 0.0364426 0.0511861 -1.50344 -0.661162 -0.691308 -6.42381 -3.02358 0.189364 0.272378 3.20793 -0.00854755 -2.68234 -0.256894 -0.540434 -1.05023 0.726535 6.26358 0.977457 0.00626111 1.42396 3.75979 1.84651 -2.42929 0.193627 -0.322707 1.07519 -0.418249 -0.581632 0.44318 0.864126 0.13813 -0.49341 -1.02407 6.75714 -21.2708 -0.00611611 3.00799 -19.1614 1.42585 -0.399385 -2.6345 -4.47421 0.638709 0.0415532 -1.95774 1.77379 -5.50044 0 +489 0 6.48135 1.11172 0.637761 0.675066 0.844992 1.20883 -2.48425 -10.0947 7.84818 -7.41694 -1.03638 1.33722 -0.544773 3.68794 0.260176 0.815007 9.80776 -2.0827 1.32953 -6.29959 -0.914661 -1.192 0.89498 -3.72871 -2.10434 0.730306 0.761194 -1.14002 -0.306434 0.999653 2.40305 2.87883 -5.77388 1.45285 -1.03958 0.033106 4.17061 -27.0804 -4.94245 0.523481 -1.05826 14.0775 -0.684617 5.81796 -0.689375 1.5585 -0.170617 8.55688 0.648791 -14.7614 -1.79816 6.69629 -1.18044 1.02491 -1.40824 7.41314 4.31149 9.18351 3.67926 1.64711 -2.49212 -10.1237 10.3468 -5.6308 3.70185 -6.22575 9.85305 3.68003 -5.06533 4.97463 1.46876 -2.66848 -5.38903 6.39589 0.513014 -1.96446 103.28 38.114 19.3046 18.4584 -1.45462 32.2847 4.43121 6.06069 1.32544 19.7247 2.08335 0.998187 1.04283 -0.217852 16.1095 0 -0.0731037 -0.0119432 0.87097 0.29521 0.637761 0.675066 0.0198503 0.144099 0.280025 0.000327094 0.0156015 0.0231883 -0.0364042 0.0401706 -0.0188647 0.00289707 0.00850609 0.178191 -0.412543 -0.189137 0.0431115 -0.0527586 -0.576407 -0.00175138 0.529309 0.736589 0.0080008 0.050934 1.23749 0.713713 1.39947 -0.0116691 0.294458 0.0271835 0.0485913 2.19763 0.0236449 0.254134 0.289055 -0.131043 0.0767693 0.0174293 -0.00304164 3.91509 0.348117 0.255642 0.00408404 0.430596 0.204458 0.0172813 0.0211231 0.981862 -0.158073 0.103116 -2.81203 -0.167168 0.0630573 -0.0733476 -0.0565629 0.0583924 -0.0912881 0.0752447 1.74223 0.0056339 9.26457 -0.0135204 -0.0137639 -0.14143 -0.154562 -0.652322 4.14515 -0.0153155 -0.795173 -0.0844102 1.39272 -0.00858579 -17.1922 -1.69161 2.33772 0.0461219 -0.171617 -3.59526 -0.008332 0.00275126 -0.234216 0.583808 -0.00700035 0.0148837 -0.0274091 0.0995972 -1.38493 0 0.844992 0.87097 1.20883 0.29521 -1.10863 -0.0826081 2.98352 -0.402221 5.2814 -0.358653 0.542296 2.11206 -0.0559575 0.127425 0.359256 0.285919 0.144454 -1.21263 6.09614 -3.31607 0.204589 -0.380484 0.617116 1.04404 1.53652 -0.591318 0.512349 -0.0168729 45.385 2.5364 -7.79246 5.65976 0.0407566 -5.35147 -1.51557 0.149576 0.089536 -0.123944 0.575389 -5.23618 0.941393 -0.076841 14.8924 10.5435 0.0628016 0.50068 1.96505 -0.479465 1.16831 -4.53426 5.83272 1.69673 -0.466023 -12.3368 -0.455553 -5.41649 1.69444 -1.51773 1.09847 -1.23753 1.28023 3.97355 -1.04971 0.236018 -25.9599 0.908922 -4.36393 0.0357096 0.239566 0.183314 0.431878 -1.20691 0.959995 0.932382 -0.239638 -1.50677 26.8327 -22.1142 37.845 -4.28263 -4.87658 22.8565 -1.27986 -2.5888 5.74261 -1.41072 2.43303 -4.42997 5.8916 -5.26824 6.58995 0 +490 0 -5.45705 -3.20404 -0.15165 0.121147 3.57285 -0.527747 1.72153 -12.2986 4.35711 7.26771 -1.05039 4.40357 -0.190014 7.26292 -0.711694 -1.40129 -33.2057 0.947957 -3.24541 13.697 -0.529298 2.53815 1.01059 1.24088 0.721162 -0.0333592 -0.231655 1.52409 -3.90155 2.89614 2.03005 -2.00243 9.62884 -2.03133 1.09959 -0.342412 -1.52252 27.7372 0.328641 1.92618 0.0360569 -10.1762 1.33137 3.57842 1.06234 2.2924 2.56217 -13.6417 -2.45469 8.22184 3.45487 40.6032 5.31173 -0.0451398 1.97347 15.1497 13.9031 5.22826 -2.08521 0.779626 -3.04586 5.47615 7.56217 0.204151 -0.948924 -5.77773 -1.86539 -1.23773 -5.80122 2.61595 0.759376 4.14743 0.973944 1.42816 -8.98685 21.6576 -143.077 -32.9073 9.67235 -21.153 16.7681 -21.9364 1.20047 0.0260855 -12.6697 35.8202 5.56092 -3.41968 -4.20056 2.01185 27.1485 0 0.561687 0.0555287 -0.0550541 -0.444588 -0.15165 0.121147 0.0696616 -0.152543 -0.562579 -0.000944794 -0.0190333 0.0315273 -0.0993236 0.491113 0.0433841 -0.014192 -0.0537379 -0.0814859 -0.565765 0.560164 0.115193 -0.378002 -0.142328 0.00307907 -1.18424 -3.63103 -0.012908 0.0395564 0.0213462 -3.35037 0.464771 -0.0370028 -0.390862 -0.943191 -0.059377 1.22344 -0.0640941 -0.536478 0.13823 -0.418691 0.00887406 -0.18932 -0.00799127 5.42099 0.501035 -0.600604 -0.00697162 1.23767 0.421442 0.068587 -0.0586003 0.921296 -0.169205 -0.0409049 2.20275 -0.0461771 -0.11472 0.181058 0.0457817 -0.188295 -0.0406809 0.0123562 -0.0552838 0.0509684 7.04953 0.136715 -0.655631 0.121335 0.547564 0.382223 4.95922 -0.611779 -0.315263 -0.164711 -0.214788 0.0241342 -39.2357 0.368708 -1.61364 0.300948 0.674127 -0.0261883 0.106277 -0.00519683 0.162997 1.03903 0.0162709 0.0347909 -0.0190052 0.0409546 1.73009 0 3.57285 -0.0550541 -0.527747 -0.444588 4.08631 0.1957 -1.31491 -4.30411 -7.98324 0.426792 -0.46202 6.81327 0.0850973 1.13291 -0.347492 -0.474851 -0.42294 1.55577 0.571317 4.25915 4.09073 -2.17707 3.82838 0.341378 -4.74905 -0.203726 -2.66634 -0.0775865 -48.0281 -0.310203 5.37433 1.96399 -0.0659725 -13.7711 7.40565 0.515475 -0.0249172 -0.65564 -0.0308012 -2.0487 -1.43116 -0.0158888 -6.92515 -5.95796 -0.0357136 -0.194234 -0.767528 0.0118209 0.0780052 3.91601 -19.6127 1.30233 0.671868 20.8764 -0.296887 7.78508 -1.46411 0.61173 -6.38478 1.2373 3.18546 -8.01273 1.61338 11.0295 76.3328 -0.0272367 2.79981 -0.125313 0.996112 3.05001 -2.54373 0.515527 -0.715533 -0.0253005 -0.0908025 1.54838 -96.8991 -29.6753 25.7231 -7.83316 1.05908 3.90979 -3.21038 1.51359 -2.72086 8.64121 -0.735253 -0.303906 -0.082213 -0.461399 3.78221 0 diff --git a/examples/mliap/in.mliap.ace.compute b/examples/mliap/in.mliap.ace.compute new file mode 100644 index 00000000000..fa9a35da96b --- /dev/null +++ b/examples/mliap/in.mliap.ace.compute @@ -0,0 +1,25 @@ +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +read_data ace_compute_struct.data +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + +pair_style zero 5.7 +pair_coeff * * + + +compute ace all mliap descriptor ace H_N_O_ccs.yace model linear gradgradflag 1 +fix ace all ave/time 1 1 1 c_ace[*] file desc_out.dat mode vector + +thermo 1 +thermo_style custom & + pe pxy c_ace[1][1] c_ace[1][2] +thermo_modify norm no +run 0 + +uncompute ace +unfix ace diff --git a/examples/mliap/in.mliap.pytorch.ace b/examples/mliap/in.mliap.pytorch.ace new file mode 100644 index 00000000000..cc4363498f1 --- /dev/null +++ b/examples/mliap/in.mliap.pytorch.ace @@ -0,0 +1,54 @@ +# Demonstrate MLIAP/PyTorch interface to linear SNAP potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy Ta_ACE.mliap.pytorch.model.pt descriptor ace linear_ACE_ccs.yace +pair_coeff * * Ta + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} + diff --git a/examples/mliap/in.mliap.pytorch.ace.NN b/examples/mliap/in.mliap.pytorch.ace.NN new file mode 100644 index 00000000000..e99f7a49696 --- /dev/null +++ b/examples/mliap/in.mliap.pytorch.ace.NN @@ -0,0 +1,60 @@ +# Demonstrate MLIAP/PyTorch interface to linear ACE potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy ACE_NN_Pytorch.pt descriptor ace ccs_single_element.yace +pair_coeff * * Ta + + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve + +# Uncomment dumps commands for visualization +#dump 0 all cfg 10 min.*.cfg mass type xs ys zs +#dump_modify 0 element Ta + +run ${nsteps} + diff --git a/examples/mliap/linear_ACE_ccs.yace b/examples/mliap/linear_ACE_ccs.yace new file mode 100644 index 00000000000..ca6043c8cdc --- /dev/null +++ b/examples/mliap/linear_ACE_ccs.yace @@ -0,0 +1,150 @@ +elements: [Ta] +E0: [0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 22, lmax: 5, nradbasemax: 22, radbasename: ChebExpCos, radparameters: [1.275], radcoefficients: [[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]], [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]]], prehc: 0, lambdahc: 1.275, rcut: 4.81, dcut: 0.01, rcut_in: 1.2, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [3], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [4], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [5], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [6], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [7], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [8], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [9], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [10], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [11], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [12], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [13], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [14], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [15], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [16], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [17], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [18], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [19], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [20], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [21], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [22], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 1], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 2], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 4], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [1, 5], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 2], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 4], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [2, 5], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [3, 3], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [3, 4], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [3, 5], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [4, 4], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [4, 5], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 1, mus: [0, 0], ns: [5, 5], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 4], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 5], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 4], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 5], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [3, 3], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [3, 4], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [3, 5], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [4, 4], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [4, 5], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [5, 5], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 4], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 5], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 4], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 5], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [3, 3], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [3, 4], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [3, 5], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [4, 4], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [4, 5], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [5, 5], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [1, 1], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [1, 2], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [1, 3], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [1, 4], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [1, 5], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [2, 2], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [2, 3], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [2, 4], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [2, 5], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [3, 3], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [3, 4], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [3, 5], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [4, 4], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [4, 5], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 7, mus: [0, 0], ns: [5, 5], ls: [3, 3], ms_combs: [-3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3], ctildes: [0.3779644730092272, -0.37796447300922725, 0.3779644730092272, -0.3779644730092272, 0.3779644730092272, -0.37796447300922725, 0.3779644730092272]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [1, 1], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [1, 2], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [1, 3], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [1, 4], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [1, 5], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [2, 2], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [2, 3], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [2, 4], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [2, 5], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [3, 3], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [3, 4], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [3, 5], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [4, 4], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [4, 5], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 9, mus: [0, 0], ns: [5, 5], ls: [4, 4], ms_combs: [-4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4], ctildes: [0.3333333333333333, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.33333333333333337, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [1, 1], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [1, 2], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [1, 3], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [1, 4], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [1, 5], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [2, 2], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [2, 3], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [2, 4], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [2, 5], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [3, 3], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [3, 4], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [3, 5], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [4, 4], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [4, 5], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 11, mus: [0, 0], ns: [5, 5], ls: [5, 5], ms_combs: [-5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5], ctildes: [0.30151134457776363, -0.30151134457776363, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.3015113445777637, 0.30151134457776363, -0.3015113445777636, 0.30151134457776363, -0.30151134457776363, 0.30151134457776363]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 2, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 2, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 2, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 3, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 3, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 3, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 2, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 2, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 2, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 3, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 3, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [2, 3, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [3, 3, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [3, 3, 2], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [3, 3, 3], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 2, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 2, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 3, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [2, 2, 2], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [2, 2, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [2, 3, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [3, 3, 3], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/mliap/linear_ACE_coeff.acecoeff b/examples/mliap/linear_ACE_coeff.acecoeff new file mode 100644 index 00000000000..7d03528ea85 --- /dev/null +++ b/examples/mliap/linear_ACE_coeff.acecoeff @@ -0,0 +1,148 @@ +# FitSNAP generated on 2024-02-14 14:25:57.119062 with Hash: 25830dc0b45aefc59d0d17c55647440f + +1 142 +Ta + 0.0 # B[0] + -22.5771067833568999 # B[1, 0, 0, 1, 0] + -0.0226270954591753157 # B[2, 0, 0, 2, 0] + 21.0023473528220208 # B[3, 0, 0, 3, 0] + 1.7434645625400198 # B[4, 0, 0, 4, 0] + 0.113236864432865389 # B[5, 0, 0, 5, 0] + 5.43628451822269376 # B[6, 0, 0, 6, 0] + -2.36555723449260613 # B[7, 0, 0, 7, 0] + 0.0 # B[8, 0, 0, 8, 0] + 0.0 # B[9, 0, 0, 9, 0] + 0.0 # B[10, 0, 0, 10, 0] + 0.0 # B[11, 0, 0, 11, 0] + 0.0 # B[12, 0, 0, 12, 0] + 0.0 # B[13, 0, 0, 13, 0] + 0.0 # B[14, 0, 0, 14, 0] + 0.0 # B[15, 0, 0, 15, 0] + 0.0 # B[16, 0, 0, 16, 0] + 0.0 # B[17, 0, 0, 17, 0] + 0.0 # B[18, 0, 0, 18, 0] + 0.0 # B[19, 0, 0, 19, 0] + 0.0 # B[20, 0, 0, 20, 0] + 0.0 # B[21, 0, 0, 21, 0] + 0.0 # B[22, 0, 0, 22, 0] + 10.170453688417453 # B[23, 0, 0, 0, 1, 1, 0, 0] + -1044.76281713462254 # B[24, 0, 0, 0, 1, 2, 0, 0] + 572.709651057556016 # B[25, 0, 0, 0, 1, 3, 0, 0] + -207.396680818678306 # B[26, 0, 0, 0, 1, 4, 0, 0] + 32.7288559698408079 # B[27, 0, 0, 0, 1, 5, 0, 0] + 0.00305266310444371686 # B[28, 0, 0, 0, 2, 2, 0, 0] + 400.569893681083443 # B[29, 0, 0, 0, 2, 3, 0, 0] + 778.880194276356406 # B[30, 0, 0, 0, 2, 4, 0, 0] + 170.855019855882375 # B[31, 0, 0, 0, 2, 5, 0, 0] + -205.570286473228464 # B[32, 0, 0, 0, 3, 3, 0, 0] + -398.963313160853545 # B[33, 0, 0, 0, 3, 4, 0, 0] + -83.81056240085789 # B[34, 0, 0, 0, 3, 5, 0, 0] + 180.0562397293142 # B[35, 0, 0, 0, 4, 4, 0, 0] + -20.5002365523065428 # B[36, 0, 0, 0, 4, 5, 0, 0] + 0.0 # B[37, 0, 0, 0, 5, 5, 0, 0] + -24.8835644197873833 # B[38, 0, 0, 0, 1, 1, 1, 1] + 147.129769901050679 # B[39, 0, 0, 0, 1, 2, 1, 1] + 0.0713620917875858463 # B[40, 0, 0, 0, 1, 3, 1, 1] + -17.3833330953580933 # B[41, 0, 0, 0, 1, 4, 1, 1] + 37.5505432848029557 # B[42, 0, 0, 0, 1, 5, 1, 1] + 0.0191804654757119011 # B[43, 0, 0, 0, 2, 2, 1, 1] + -96.7487163459104664 # B[44, 0, 0, 0, 2, 3, 1, 1] + -0.00658154694809357909 # B[45, 0, 0, 0, 2, 4, 1, 1] + -208.124342352098012 # B[46, 0, 0, 0, 2, 5, 1, 1] + -0.0268971567040146194 # B[47, 0, 0, 0, 3, 3, 1, 1] + 8.21287123634444605 # B[48, 0, 0, 0, 3, 4, 1, 1] + 71.6589883121345395 # B[49, 0, 0, 0, 3, 5, 1, 1] + 17.6098825203311371 # B[50, 0, 0, 0, 4, 4, 1, 1] + -39.1469526467952562 # B[51, 0, 0, 0, 4, 5, 1, 1] + 0.0 # B[52, 0, 0, 0, 5, 5, 1, 1] + 2.81218558029911136 # B[53, 0, 0, 0, 1, 1, 2, 2] + -80.6108937358992534 # B[54, 0, 0, 0, 1, 2, 2, 2] + 25.3006460556791914 # B[55, 0, 0, 0, 1, 3, 2, 2] + -0.116123733569896734 # B[56, 0, 0, 0, 1, 4, 2, 2] + -8.10435957901752779 # B[57, 0, 0, 0, 1, 5, 2, 2] + 0.00593831884284745735 # B[58, 0, 0, 0, 2, 2, 2, 2] + 0.0206072280264136751 # B[59, 0, 0, 0, 2, 3, 2, 2] + 112.907541723710054 # B[60, 0, 0, 0, 2, 4, 2, 2] + -25.3781020910149273 # B[61, 0, 0, 0, 2, 5, 2, 2] + 15.4580129414526724 # B[62, 0, 0, 0, 3, 3, 2, 2] + -58.4875833673028822 # B[63, 0, 0, 0, 3, 4, 2, 2] + 27.8541236484384527 # B[64, 0, 0, 0, 3, 5, 2, 2] + 0.0 # B[65, 0, 0, 0, 4, 4, 2, 2] + 0.0 # B[66, 0, 0, 0, 4, 5, 2, 2] + 0.0 # B[67, 0, 0, 0, 5, 5, 2, 2] + 9.58210832281941371 # B[68, 0, 0, 0, 1, 1, 3, 3] + -33.4771846186537587 # B[69, 0, 0, 0, 1, 2, 3, 3] + -0.147879214073858095 # B[70, 0, 0, 0, 1, 3, 3, 3] + -0.983689688855974187 # B[71, 0, 0, 0, 1, 4, 3, 3] + -11.2679823588990811 # B[72, 0, 0, 0, 1, 5, 3, 3] + 189.312912024886742 # B[73, 0, 0, 0, 2, 2, 3, 3] + -0.0774443286916917523 # B[74, 0, 0, 0, 2, 3, 3, 3] + -0.102873783395946994 # B[75, 0, 0, 0, 2, 4, 3, 3] + -0.0756462323598340036 # B[76, 0, 0, 0, 2, 5, 3, 3] + -53.7511259632733953 # B[77, 0, 0, 0, 3, 3, 3, 3] + 33.9879339807403227 # B[78, 0, 0, 0, 3, 4, 3, 3] + 0.0 # B[79, 0, 0, 0, 3, 5, 3, 3] + -0.00814999871185459988 # B[80, 0, 0, 0, 4, 4, 3, 3] + 0.0 # B[81, 0, 0, 0, 4, 5, 3, 3] + 3.05035839717992552 # B[82, 0, 0, 0, 5, 5, 3, 3] + 1.76189504052993939 # B[83, 0, 0, 0, 1, 1, 4, 4] + -0.0109697500983353419 # B[84, 0, 0, 0, 1, 2, 4, 4] + -5.99440757040523309 # B[85, 0, 0, 0, 1, 3, 4, 4] + 0.116301402805795331 # B[86, 0, 0, 0, 1, 4, 4, 4] + 0.0 # B[87, 0, 0, 0, 1, 5, 4, 4] + 0.0172995235996694294 # B[88, 0, 0, 0, 2, 2, 4, 4] + -0.00135295336403791727 # B[89, 0, 0, 0, 2, 3, 4, 4] + -31.9743471589821553 # B[90, 0, 0, 0, 2, 4, 4, 4] + 11.6375525926016525 # B[91, 0, 0, 0, 2, 5, 4, 4] + 7.1785297948853044 # B[92, 0, 0, 0, 3, 3, 4, 4] + 12.9049178783604273 # B[93, 0, 0, 0, 3, 4, 4, 4] + 0.0173960354063151836 # B[94, 0, 0, 0, 3, 5, 4, 4] + -5.44937275307428326 # B[95, 0, 0, 0, 4, 4, 4, 4] + 0.0 # B[96, 0, 0, 0, 4, 5, 4, 4] + 0.0 # B[97, 0, 0, 0, 5, 5, 4, 4] + 0.0 # B[98, 0, 0, 0, 1, 1, 5, 5] + 10.7017857691284473 # B[99, 0, 0, 0, 1, 2, 5, 5] + 0.0 # B[100, 0, 0, 0, 1, 3, 5, 5] + -2.64659600238826176 # B[101, 0, 0, 0, 1, 4, 5, 5] + 0.0 # B[102, 0, 0, 0, 1, 5, 5, 5] + -360.963728954691078 # B[103, 0, 0, 0, 2, 2, 5, 5] + 180.302930506343245 # B[104, 0, 0, 0, 2, 3, 5, 5] + -0.0927167842886253007 # B[105, 0, 0, 0, 2, 4, 5, 5] + -54.9792205296734906 # B[106, 0, 0, 0, 2, 5, 5, 5] + 0.0622968474897991967 # B[107, 0, 0, 0, 3, 3, 5, 5] + -19.0759694688697401 # B[108, 0, 0, 0, 3, 4, 5, 5] + 26.6639152270046758 # B[109, 0, 0, 0, 3, 5, 5, 5] + 0.0 # B[110, 0, 0, 0, 4, 4, 5, 5] + -2.17726871628644325 # B[111, 0, 0, 0, 4, 5, 5, 5] + 0.0 # B[112, 0, 0, 0, 5, 5, 5, 5] + 4.41210696714003525 # B[113, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2] + 0.0497159733881680083 # B[114, 0, 0, 0, 0, 1, 1, 2, 1, 1, 2, 2] + 3.50516630159326947 # B[115, 0, 0, 0, 0, 1, 1, 3, 1, 1, 2, 2] + 14.6179669221722417 # B[116, 0, 0, 0, 0, 1, 2, 1, 1, 1, 2, 2] + 755.058663506306175 # B[117, 0, 0, 0, 0, 1, 2, 2, 1, 1, 2, 2] + -240.568322578754731 # B[118, 0, 0, 0, 0, 1, 2, 3, 1, 1, 2, 2] + 0.0488714570610267046 # B[119, 0, 0, 0, 0, 1, 3, 1, 1, 1, 2, 2] + -187.841135117587072 # B[120, 0, 0, 0, 0, 1, 3, 2, 1, 1, 2, 2] + 32.3758624271038684 # B[121, 0, 0, 0, 0, 1, 3, 3, 1, 1, 2, 2] + 118.101507848151186 # B[122, 0, 0, 0, 0, 2, 2, 1, 1, 1, 2, 2] + -0.0136264036603733017 # B[123, 0, 0, 0, 0, 2, 2, 2, 1, 1, 2, 2] + -226.591848522424016 # B[124, 0, 0, 0, 0, 2, 2, 3, 1, 1, 2, 2] + 0.0333288835492624586 # B[125, 0, 0, 0, 0, 2, 3, 1, 1, 1, 2, 2] + -0.0087547361274342983 # B[126, 0, 0, 0, 0, 2, 3, 2, 1, 1, 2, 2] + 0.0104057653307802946 # B[127, 0, 0, 0, 0, 2, 3, 3, 1, 1, 2, 2] + -25.2394489573255107 # B[128, 0, 0, 0, 0, 3, 3, 1, 1, 1, 2, 2] + -83.6076290271592057 # B[129, 0, 0, 0, 0, 3, 3, 2, 1, 1, 2, 2] + 80.3884647598460305 # B[130, 0, 0, 0, 0, 3, 3, 3, 1, 1, 2, 2] + -0.669731707137959487 # B[131, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2] + 0.0358960112501990058 # B[132, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2] + 0.613904373803016767 # B[133, 0, 0, 0, 0, 1, 1, 3, 2, 2, 2, 2] + 0.00183254800152801494 # B[134, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2] + 0.0722024283268215966 # B[135, 0, 0, 0, 0, 1, 2, 3, 2, 2, 2, 2] + 0.0 # B[136, 0, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2] + -0.0365564305694157377 # B[137, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2] + 0.0114527487193957864 # B[138, 0, 0, 0, 0, 2, 2, 3, 2, 2, 2, 2] + 0.0 # B[139, 0, 0, 0, 0, 2, 3, 3, 2, 2, 2, 2] + 0.0 # B[140, 0, 0, 0, 0, 3, 3, 3, 2, 2, 2, 2] + 0.0 # B[141, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0] + +# End of potential \ No newline at end of file diff --git a/examples/mliap/log.03Mar24.mliap.ace.compute.g++.1 b/examples/mliap/log.03Mar24.mliap.ace.compute.g++.1 new file mode 100644 index 00000000000..9e5df53111c --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.ace.compute.g++.1 @@ -0,0 +1,83 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +read_data ace_compute_struct.data +Reading data file ... + orthogonal box = (0 0 0) to (12 12 12) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 161 atoms + read_data CPU = 0.010 seconds +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + +pair_style zero 5.7 +pair_coeff * * + + +compute ace all mliap descriptor ace H_N_O_ccs.yace model linear gradgradflag 1 +fix ace all ave/time 1 1 1 c_ace[*] file desc_out.dat mode vector + +thermo 1 +thermo_style custom pe pxy c_ace[1][1] c_ace[1][2] +thermo_modify norm no +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard + (2) compute mliap, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 128.7 | 128.7 | 128.7 Mbytes + PotEng Pxy c_ace[1][1] c_ace[1][2] + 0 0 110 633.5226 +Loop time of 1.931e-06 on 1 procs for 0 steps with 161 atoms + +155.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.931e-06 | | |100.00 + +Nlocal: 161 ave 161 max 161 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1754 ave 1754 max 1754 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 14230 ave 14230 max 14230 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 28460 ave 28460 max 28460 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 28460 +Ave neighs/atom = 176.77019 +Neighbor list builds = 0 +Dangerous builds = 0 + +uncompute ace +unfix ace +Total wall time: 0:00:00 diff --git a/examples/mliap/log.03Mar24.mliap.ace.compute.g++.4 b/examples/mliap/log.03Mar24.mliap.ace.compute.g++.4 new file mode 100644 index 00000000000..27341450cdf --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.ace.compute.g++.4 @@ -0,0 +1,83 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +read_data ace_compute_struct.data +Reading data file ... + orthogonal box = (0 0 0) to (12 12 12) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 161 atoms + read_data CPU = 0.002 seconds +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + +pair_style zero 5.7 +pair_coeff * * + + +compute ace all mliap descriptor ace H_N_O_ccs.yace model linear gradgradflag 1 +fix ace all ave/time 1 1 1 c_ace[*] file desc_out.dat mode vector + +thermo 1 +thermo_style custom pe pxy c_ace[1][1] c_ace[1][2] +thermo_modify norm no +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard + (2) compute mliap, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 111 | 111.3 | 111.6 Mbytes + PotEng Pxy c_ace[1][1] c_ace[1][2] + 0 0 110 633.5226 +Loop time of 5.06375e-06 on 4 procs for 0 steps with 161 atoms + +64.2% 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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 5.064e-06 | | |100.00 + +Nlocal: 40.25 ave 44 max 35 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 1134.5 ave 1159 max 1117 min +Histogram: 1 1 0 0 1 0 0 0 0 1 +Neighs: 3557.5 ave 4115 max 3189 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +FullNghs: 7115 ave 7755 max 6158 min +Histogram: 1 0 0 0 1 0 0 0 0 2 + +Total # of neighbors = 28460 +Ave neighs/atom = 176.77019 +Neighbor list builds = 0 +Dangerous builds = 0 + +uncompute ace +unfix ace +Total wall time: 0:00:00 diff --git a/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.1 b/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.1 new file mode 100644 index 00000000000..1c72671b816 --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.1 @@ -0,0 +1,132 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate MLIAP/PyTorch interface to linear ACE potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy ACE_NN_Pytorch.pt descriptor ace ccs_single_element.yace +Loading python model complete. +pair_coeff * * Ta + + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve + +# Uncomment dumps commands for visualization +#dump 0 all cfg 10 min.*.cfg mass type xs ys zs +#dump_modify 0 element Ta + +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.684 + ghost atom cutoff = 10.684 + binsize = 5.3419999, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair mliap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3040 | 3040 | 3040 Mbytes + Step Temp E_pair c_energy TotEng Press v_press + 0 300 -10.799771 -10.799771 -10.761296 -124096.28 124096.28 + 10 297.05593 -10.799394 -10.799394 -10.761296 -124021.81 124021.81 + 20 293.90126 -10.798989 -10.798989 -10.761296 -123931.98 123931.98 + 30 290.75573 -10.798586 -10.798586 -10.761296 -123830.65 123830.65 + 40 287.87299 -10.798216 -10.798216 -10.761296 -123723.2 123723.2 + 50 285.52822 -10.797915 -10.797915 -10.761296 -123616.33 123616.33 + 60 283.89424 -10.806252 -10.806252 -10.769843 -123186.35 123186.35 + 70 283.0133 -10.814468 -10.814468 -10.778171 -122622.74 122622.74 + 80 283.82159 -10.850734 -10.850734 -10.814333 -121100.05 121100.05 + 90 285.70388 -10.87694 -10.87694 -10.840299 -119481.05 119481.05 + 100 289.39 -10.889368 -10.889368 -10.852253 -118417.49 118417.49 +Loop time of 5.22636 on 1 procs for 100 steps with 128 atoms + +Performance: 0.827 ns/day, 29.035 hours/ns, 19.134 timesteps/s, 2.449 katom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.2238 | 5.2238 | 5.2238 | 0.0 | 99.95 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00091245 | 0.00091245 | 0.00091245 | 0.0 | 0.02 +Output | 0.0010643 | 0.0010643 | 0.0010643 | 0.0 | 0.02 +Modify | 0.00019072 | 0.00019072 | 0.00019072 | 0.0 | 0.00 +Other | | 0.0003712 | | | 0.01 + +Nlocal: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2203 ave 2203 max 2203 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 36096 ave 36096 max 36096 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 36096 +Ave neighs/atom = 282 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:06 diff --git a/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.4 b/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.4 new file mode 100644 index 00000000000..4d9f41d34a4 --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.pytorch.ace.NN.g++.4 @@ -0,0 +1,132 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate MLIAP/PyTorch interface to linear ACE potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy ACE_NN_Pytorch.pt descriptor ace ccs_single_element.yace +Loading python model complete. +pair_coeff * * Ta + + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve + +# Uncomment dumps commands for visualization +#dump 0 all cfg 10 min.*.cfg mass type xs ys zs +#dump_modify 0 element Ta + +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.684 + ghost atom cutoff = 10.684 + binsize = 5.3419999, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair mliap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3029 | 3029 | 3029 Mbytes + Step Temp E_pair c_energy TotEng Press v_press + 0 300 -10.799771 -10.799771 -10.761296 -124096.28 124096.28 + 10 297.05593 -10.799394 -10.799394 -10.761296 -124021.81 124021.81 + 20 293.90126 -10.798989 -10.798989 -10.761296 -123931.98 123931.98 + 30 290.75573 -10.798586 -10.798586 -10.761296 -123830.65 123830.65 + 40 287.87299 -10.798216 -10.798216 -10.761296 -123723.2 123723.2 + 50 285.52822 -10.797915 -10.797915 -10.761296 -123616.33 123616.33 + 60 283.89424 -10.806252 -10.806252 -10.769843 -123186.35 123186.35 + 70 283.0133 -10.814468 -10.814468 -10.778171 -122622.74 122622.74 + 80 283.82159 -10.850734 -10.850734 -10.814333 -121100.05 121100.05 + 90 285.70388 -10.87694 -10.87694 -10.840299 -119481.05 119481.05 + 100 289.39 -10.889368 -10.889368 -10.852253 -118417.49 118417.49 +Loop time of 1.42477 on 4 procs for 100 steps with 128 atoms + +Performance: 3.032 ns/day, 7.915 hours/ns, 70.187 timesteps/s, 8.984 katom-step/s +97.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 | 1.3575 | 1.3845 | 1.4057 | 1.7 | 97.17 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.016517 | 0.03758 | 0.064384 | 10.0 | 2.64 +Output | 0.0016464 | 0.0016915 | 0.0017802 | 0.1 | 0.12 +Modify | 0.00010363 | 0.00011648 | 0.00012936 | 0.0 | 0.01 +Other | | 0.0008911 | | | 0.06 + +Nlocal: 32 ave 32 max 32 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 1499 ave 1499 max 1499 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 9024 ave 9024 max 9024 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 36096 +Ave neighs/atom = 282 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.1 b/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.1 new file mode 100644 index 00000000000..83461ddad4e --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.1 @@ -0,0 +1,126 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate MLIAP/PyTorch interface to linear SNAP potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy Ta_ACE.mliap.pytorch.model.pt descriptor ace linear_ACE_ccs.yace +Loading python model complete. +pair_coeff * * Ta + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.62 + ghost atom cutoff = 10.62 + binsize = 5.3099999, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair mliap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 69.54 | 69.54 | 69.54 Mbytes + Step Temp E_pair c_energy TotEng Press v_press + 0 300 -10.649822 -10.649822 -10.611347 -149369.7 149369.7 + 10 301.54363 -10.65002 -10.65002 -10.611347 -149189.04 149189.04 + 20 310.2497 -10.651137 -10.651137 -10.611347 -148663.85 148663.85 + 30 325.56462 -10.653101 -10.653101 -10.611347 -147792.6 147792.6 + 40 346.54011 -10.655791 -10.655791 -10.611347 -146568.54 146568.54 + 50 371.896 -10.659043 -10.659043 -10.611348 -144972.13 144972.13 + 60 400.11547 -10.662663 -10.662663 -10.611348 -143011.4 143011.4 + 70 429.4367 -10.666423 -10.666423 -10.611348 -140773.79 140773.79 + 80 457.62121 -10.685721 -10.685721 -10.627031 -137496.07 137496.07 + 90 481.87191 -10.697719 -10.697719 -10.635919 -133888.57 133888.57 + 100 500.38073 -10.708101 -10.708101 -10.643927 -130768.99 130768.99 +Loop time of 94.0137 on 1 procs for 100 steps with 128 atoms + +Performance: 0.046 ns/day, 522.299 hours/ns, 1.064 timesteps/s, 136.150 atom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 94.01 | 94.01 | 94.01 | 0.0 |100.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.0011604 | 0.0011604 | 0.0011604 | 0.0 | 0.00 +Output | 0.0011648 | 0.0011648 | 0.0011648 | 0.0 | 0.00 +Modify | 0.00031951 | 0.00031951 | 0.00031951 | 0.0 | 0.00 +Other | | 0.0007277 | | | 0.00 + +Nlocal: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2203 ave 2203 max 2203 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 36096 ave 36096 max 36096 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 36096 +Ave neighs/atom = 282 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:01:36 diff --git a/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.4 b/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.4 new file mode 100644 index 00000000000..b50f4e79bf0 --- /dev/null +++ b/examples/mliap/log.03Mar24.mliap.pytorch.ace.g++.4 @@ -0,0 +1,126 @@ +LAMMPS (21 Nov 2023 - Development - e94d89ee3c-modified) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Demonstrate MLIAP/PyTorch interface to linear SNAP potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.316 +Lattice spacing in x,y,z = 3.316 3.316 3.316 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0 0 0) to (13.264 13.264 13.264) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 128 atoms + using lattice units in orthogonal box = (0 0 0) to (13.264 13.264 13.264) + create_atoms CPU = 0.000 seconds + +mass 1 180.88 + +# choose potential + +pair_style mliap model mliappy Ta_ACE.mliap.pytorch.model.pt descriptor ace linear_ACE_ccs.yace +Loading python model complete. +pair_coeff * * Ta + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.62 + ghost atom cutoff = 10.62 + binsize = 5.3099999, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair mliap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 58.24 | 58.24 | 58.24 Mbytes + Step Temp E_pair c_energy TotEng Press v_press + 0 300 -10.649822 -10.649822 -10.611347 -149369.7 149369.7 + 10 301.54363 -10.65002 -10.65002 -10.611347 -149189.04 149189.04 + 20 310.2497 -10.651137 -10.651137 -10.611347 -148663.85 148663.85 + 30 325.56462 -10.653101 -10.653101 -10.611347 -147792.6 147792.6 + 40 346.54011 -10.655791 -10.655791 -10.611347 -146568.54 146568.54 + 50 371.896 -10.659043 -10.659043 -10.611348 -144972.13 144972.13 + 60 400.11547 -10.662663 -10.662663 -10.611348 -143011.4 143011.4 + 70 429.4367 -10.666423 -10.666423 -10.611348 -140773.79 140773.79 + 80 457.62121 -10.685721 -10.685721 -10.627031 -137496.07 137496.07 + 90 481.87191 -10.697719 -10.697719 -10.635919 -133888.57 133888.57 + 100 500.38073 -10.708101 -10.708101 -10.643927 -130768.99 130768.99 +Loop time of 24.6242 on 4 procs for 100 steps with 128 atoms + +Performance: 0.175 ns/day, 136.801 hours/ns, 4.061 timesteps/s, 519.813 atom-step/s +98.1% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 23.421 | 24.105 | 24.588 | 8.7 | 97.89 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.032393 | 0.51582 | 1.1996 | 59.7 | 2.09 +Output | 0.0020103 | 0.0020589 | 0.0021633 | 0.1 | 0.01 +Modify | 0.00021557 | 0.00023585 | 0.00025912 | 0.0 | 0.00 +Other | | 0.001166 | | | 0.00 + +Nlocal: 32 ave 32 max 32 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 1499 ave 1499 max 1499 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 9024 ave 9024 max 9024 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 36096 +Ave neighs/atom = 282 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:26 diff --git a/examples/mliap/mliap_pytorch_ACE.py b/examples/mliap/mliap_pytorch_ACE.py new file mode 100644 index 00000000000..7c98b900540 --- /dev/null +++ b/examples/mliap/mliap_pytorch_ACE.py @@ -0,0 +1,97 @@ +# Demonstrate how to load a model from the python side. +# This is essentially the same as in.mliap.pytorch.MOF +# except that python is the driving program, and lammps +# is in library mode. +before_loading =\ +"""# Demonstrate MLIAP/PyTorch interface to torch model + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.316 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box + +mass 1 180.88 + +# define potential with LATER mliappy + + +pair_style mliap model mliappy LATER descriptor ace ccs_single_element.yace +pair_coeff * * Ta + +""" +after_loading =\ +""" + +# Setup output + +compute eatom all pe/atom +compute energy all reduce sum c_eatom + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable press equal (c_str[1]+c_str[2]+c_str[3])/(3*vol) + +thermo_style custom step temp epair c_energy etotal press v_press +thermo 10 +thermo_modify norm yes + +# Set up NVE run +dump 1 all cfg 10 ats.*.cfg mass type xs ys zs +dump_modify 1 element Ta + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 loop geom +fix 1 all nve +run ${nsteps} +""" +import lammps + +lmp = lammps.lammps(cmdargs=['-echo','both']) + +# Before defining the pair style, one must do the following: +import lammps.mliap +lammps.mliap.activate_mliappy(lmp) +# Otherwise, when running lammps in library mode, +# you will get an error: +# "ERROR: Loading MLIAPPY coupling module failure." + +# Setup the simulation and declare an empty model +# by specifying model filename as "LATER" +lmp.commands_string(before_loading) + +# Define the model however you like. In this example +# we load it from disk: +import os +import torch +torch_model = 'ACE_NN_Pytorch.pt' +if not os.path.exists(torch_model): + raise FileNotFoundError(f"Generate {torch_model} first") +model = torch.load(torch_model) + +# Connect the PyTorch model to the mliap pair style. +lammps.mliap.load_model(model) + +# run the simulation with the mliap pair style +lmp.commands_string(after_loading) +lmp.close() +lmp.finalize() diff --git a/examples/plugins/LAMMPSInterfaceCXX.cmake b/examples/plugins/LAMMPSInterfaceCXX.cmake index 7eef5bd6e4e..d1f8faec22d 100644 --- a/examples/plugins/LAMMPSInterfaceCXX.cmake +++ b/examples/plugins/LAMMPSInterfaceCXX.cmake @@ -23,12 +23,14 @@ function(validate_option name values) endfunction(validate_option) ################################################################################# -# LAMMPS C++ interface. We only need the header related parts. +# LAMMPS C++ interface. We only need the header related parts for shared linkage +# but the library .a file for real static or quasi-static linkage (of LAMMPS). add_library(lammps INTERFACE) target_include_directories(lammps INTERFACE ${LAMMPS_HEADER_DIR}) if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) target_link_libraries(lammps INTERFACE ${CMAKE_BINARY_DIR}/../liblammps.dll.a) endif() + ################################################################################ # MPI configuration if(NOT CMAKE_CROSSCOMPILING) @@ -82,13 +84,9 @@ if(BUILD_MPI) # Download and configure custom MPICH files for Windows message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows") set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball") set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball") - set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball") mark_as_advanced(MPICH2_WIN64_DEVEL_URL) - mark_as_advanced(MPICH2_WIN32_DEVEL_URL) mark_as_advanced(MPICH2_WIN64_DEVEL_MD5) - mark_as_advanced(MPICH2_WIN32_DEVEL_MD5) include(ExternalProject) if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") @@ -131,6 +129,8 @@ else() target_include_directories(lammps INTERFACE "${LAMMPS_SOURCE_DIR}/STUBS") endif() +################ +# integer size selection set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall) set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES}) diff --git a/examples/rdf-adf/in.spce b/examples/rdf-adf/in.spce index 9a9d99fd421..6627924adc6 100644 --- a/examples/rdf-adf/in.spce +++ b/examples/rdf-adf/in.spce @@ -1,22 +1,22 @@ # Liquid water RDFs and ADFs (~12 O-O-O/atom, ~1 O-H...O/atom) -units real -atom_style full +units real +atom_style full -read_data data.spce +read_data data.spce pair_style lj/cut/coul/long 12.0 12.0 pair_coeff * * 0.0 1.0 pair_coeff 1 1 0.15535 3.166 -kspace_style pppm 1.0e-6 +kspace_style pppm 1.0e-6 -bond_style harmonic -angle_style harmonic -dihedral_style none -improper_style none +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none -bond_coeff 1 1000.00 1.000 -angle_coeff 1 100.0 109.47 +bond_coeff 1 1000.00 1.000 +angle_coeff 1 100.0 109.47 # need to set bond/angle inclusion to > 0.0 # so that intramolecular pairs are included in neighbor lists (required for second ADF) @@ -26,8 +26,8 @@ neighbor 2.0 bin timestep 2.0 neigh_modify every 1 delay 2 check yes -fix 1 all shake 0.0001 20 0 b 1 a 1 -fix 2 all nvt temp 300.0 300.0 100.0 +fix 1 all shake 0.0001 20 0 b 1 a 1 +fix 2 all nvt temp 300.0 300.0 100.0 velocity all create 300.0 6244325 diff --git a/examples/threebody/MoS.rebomos b/examples/threebody/MoS.rebomos new file mode 120000 index 00000000000..6146c74c240 --- /dev/null +++ b/examples/threebody/MoS.rebomos @@ -0,0 +1 @@ +../../potentials/MoS.rebomos \ No newline at end of file diff --git a/examples/threebody/in.mos2-bulk b/examples/threebody/in.mos2-bulk new file mode 100644 index 00000000000..032e71fce8e --- /dev/null +++ b/examples/threebody/in.mos2-bulk @@ -0,0 +1,35 @@ +units metal + +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 & + a2 -1.5964590311 2.7651481541 0.0000000000 & + a3 0.0000000000 0.0000000000 13.9827680588 & + basis 0.0000000000 0.000000000 $(3.0/4.0) & + basis 0.0000000000 0.000000000 $(1.0/4.0) & + basis $(2.0/3.0) $(1.0/3.0) 0.862008989 & + basis $(1.0/3.0) $(2.0/3.0) 0.137990996 & + basis $(1.0/3.0) $(2.0/3.0) 0.362008989 & + basis $(2.0/3.0) $(1.0/3.0) 0.637991011 & + origin 0.1 0.1 0.1 + +region box prism 0 4 0 8 0 1 -2.0 0.0 0.0 +create_box 2 box +create_atoms 2 box & + basis 1 1 & + basis 2 1 & + basis 3 2 & + basis 4 2 & + basis 5 2 & + basis 6 2 + +mass 1 95.95 #Mo +mass 2 32.065 #S + +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S + +thermo_style custom step temp press pe ke cellgamma vol +thermo 10 +#dump 1 all atom 10 MoS.lammpstrj +fix 1 all nve +run 20 + diff --git a/examples/threebody/in.mos2.rebomos b/examples/threebody/in.mos2.rebomos new file mode 100644 index 00000000000..ca91f670034 --- /dev/null +++ b/examples/threebody/in.mos2.rebomos @@ -0,0 +1,31 @@ +# monolayer MoS2 +units metal +boundary p p f +processors * * 1 +atom_modify map array + +atom_style atomic +read_data single_layer_MoS2.data + +mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg +mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg + +########################## Define potentials ################################ +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S S +######################################################################### + +### Simulation settings #### +timestep 0.001 +velocity all create 300.0 12345 loop geom + +############################ + +# Output +thermo 500 +thermo_style custom step etotal pe ke temp +thermo_modify lost warn + +###### Run molecular dynamics ###### +fix thermostat all nve +run 5000 diff --git a/examples/threebody/log.22Feb24.mos2-bulk.g++.1 b/examples/threebody/log.22Feb24.mos2-bulk.g++.1 new file mode 100644 index 00000000000..8218026f3dc --- /dev/null +++ b/examples/threebody/log.22Feb24.mos2-bulk.g++.1 @@ -0,0 +1,85 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-73-g36fa601fe0) + using 1 OpenMP thread(s) per MPI task +units metal + +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 $(3.0/4.0) basis 0.0000000000 0.000000000 $(1.0/4.0) basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 $(1.0/4.0) basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis 0.66666666666666662966 $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis 0.66666666666666662966 0.33333333333333331483 0.637991011 origin 0.1 0.1 0.1 +Lattice spacing in x,y,z = 4.7867748 2.7651482 13.982768 + +region box prism 0 4 0 8 0 1 -2.0 0.0 0.0 +create_box 2 box +Created triclinic box = (0 0 0) to (19.147099 22.121185 13.982768) with tilt (-9.5735495 0 0) + 1 by 1 by 1 MPI processor grid +create_atoms 2 box basis 1 1 basis 2 1 basis 3 2 basis 4 2 basis 5 2 basis 6 2 +Created 288 atoms + using lattice units in triclinic box = (0 0 0) to (19.147099 22.121185 13.982768) with tilt (-9.5735495 0 0) + create_atoms CPU = 0.000 seconds + +mass 1 95.95 #Mo +mass 2 32.065 #S + +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S +Reading rebomos potential file MoS.rebomos with DATE: 2013-11-04 + +thermo_style custom step temp press pe ke cellgamma vol +thermo 10 +#dump 1 all atom 10 MoS.lammpstrj +fix 1 all nve +run 20 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.4 + ghost atom cutoff = 13.4 + binsize = 6.7, bins = 5 4 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair rebomos, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.996 | 4.996 | 4.996 Mbytes + Step Temp Press PotEng KinEng CellGamma Volume + 0 0 28799.53 -2061.6112 0 113.40187 5922.4926 + 10 80.776057 13540.088 -2064.6132 2.9966028 113.40187 5922.4926 + 20 146.17503 -20669.371 -2067.0428 5.4227518 113.40187 5922.4926 +Loop time of 0.058071 on 1 procs for 20 steps with 288 atoms + +Performance: 29.757 ns/day, 0.807 hours/ns, 344.406 timesteps/s, 99.189 katom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.057666 | 0.057666 | 0.057666 | 0.0 | 99.30 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00024654 | 0.00024654 | 0.00024654 | 0.0 | 0.42 +Output | 2.3975e-05 | 2.3975e-05 | 2.3975e-05 | 0.0 | 0.04 +Modify | 3.8394e-05 | 3.8394e-05 | 3.8394e-05 | 0.0 | 0.07 +Other | | 9.596e-05 | | | 0.17 + +Nlocal: 288 ave 288 max 288 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 4285 ave 4285 max 4285 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 142848 ave 142848 max 142848 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 142848 +Ave neighs/atom = 496 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/threebody/log.22Feb24.mos2-bulk.g++.4 b/examples/threebody/log.22Feb24.mos2-bulk.g++.4 new file mode 100644 index 00000000000..0b9cd3ed8ac --- /dev/null +++ b/examples/threebody/log.22Feb24.mos2-bulk.g++.4 @@ -0,0 +1,85 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-73-g36fa601fe0) + using 1 OpenMP thread(s) per MPI task +units metal + +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 $(3.0/4.0) basis 0.0000000000 0.000000000 $(1.0/4.0) basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 $(1.0/4.0) basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis $(2.0/3.0) $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 $(1.0/3.0) 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis $(1.0/3.0) $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 $(2.0/3.0) 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis $(1.0/3.0) $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 $(2.0/3.0) 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis $(2.0/3.0) $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis 0.66666666666666662966 $(1.0/3.0) 0.637991011 origin 0.1 0.1 0.1 +lattice custom 1.0 a1 3.1903157234 0.0000000000 0.0000000000 a2 -1.5964590311 2.7651481541 0.0000000000 a3 0.0000000000 0.0000000000 13.9827680588 basis 0.0000000000 0.000000000 0.75 basis 0.0000000000 0.000000000 0.25 basis 0.66666666666666662966 0.33333333333333331483 0.862008989 basis 0.33333333333333331483 0.66666666666666662966 0.137990996 basis 0.33333333333333331483 0.66666666666666662966 0.362008989 basis 0.66666666666666662966 0.33333333333333331483 0.637991011 origin 0.1 0.1 0.1 +Lattice spacing in x,y,z = 4.7867748 2.7651482 13.982768 + +region box prism 0 4 0 8 0 1 -2.0 0.0 0.0 +create_box 2 box +Created triclinic box = (0 0 0) to (19.147099 22.121185 13.982768) with tilt (-9.5735495 0 0) + 2 by 2 by 1 MPI processor grid +create_atoms 2 box basis 1 1 basis 2 1 basis 3 2 basis 4 2 basis 5 2 basis 6 2 +Created 288 atoms + using lattice units in triclinic box = (0 0 0) to (19.147099 22.121185 13.982768) with tilt (-9.5735495 0 0) + create_atoms CPU = 0.000 seconds + +mass 1 95.95 #Mo +mass 2 32.065 #S + +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S +Reading rebomos potential file MoS.rebomos with DATE: 2013-11-04 + +thermo_style custom step temp press pe ke cellgamma vol +thermo 10 +#dump 1 all atom 10 MoS.lammpstrj +fix 1 all nve +run 20 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.4 + ghost atom cutoff = 13.4 + binsize = 6.7, bins = 5 4 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair rebomos, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.15 | 4.151 | 4.151 Mbytes + Step Temp Press PotEng KinEng CellGamma Volume + 0 0 28799.53 -2061.6112 0 113.40187 5922.4926 + 10 80.776057 13540.088 -2064.6132 2.9966028 113.40187 5922.4926 + 20 146.17503 -20669.371 -2067.0428 5.4227518 113.40187 5922.4926 +Loop time of 0.0219485 on 4 procs for 20 steps with 288 atoms + +Performance: 78.730 ns/day, 0.305 hours/ns, 911.225 timesteps/s, 262.433 katom-step/s +96.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.018118 | 0.019372 | 0.020087 | 0.5 | 88.26 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.0015635 | 0.0023195 | 0.0035967 | 1.6 | 10.57 +Output | 2.5017e-05 | 4.6834e-05 | 0.00010543 | 0.0 | 0.21 +Modify | 1.3954e-05 | 1.423e-05 | 1.4594e-05 | 0.0 | 0.06 +Other | | 0.0001957 | | | 0.89 + +Nlocal: 72 ave 72 max 72 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 2771.5 ave 2775 max 2768 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 35712 ave 35712 max 35712 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 142848 +Ave neighs/atom = 496 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/threebody/log.22Feb24.mos2.rebomos.g++.1 b/examples/threebody/log.22Feb24.mos2.rebomos.g++.1 new file mode 100644 index 00000000000..f7c5b3c74d0 --- /dev/null +++ b/examples/threebody/log.22Feb24.mos2.rebomos.g++.1 @@ -0,0 +1,95 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-73-g36fa601fe0) + using 1 OpenMP thread(s) per MPI task +# monolayer MoS2 +units metal +boundary p p f +processors * * 1 +atom_modify map array + +atom_style atomic +read_data single_layer_MoS2.data +Reading data file ... + triclinic box = (0 0 -100) to (51.15232 44.299209 100) with tilt (25.57616 0 0) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (src/domain.cpp:219) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 768 atoms + read_data CPU = 0.002 seconds + +mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg +mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg + +########################## Define potentials ################################ +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S S +Reading rebomos potential file MoS.rebomos with DATE: 2013-11-04 +######################################################################### + +### Simulation settings #### +timestep 0.001 +velocity all create 300.0 12345 loop geom + +############################ + +# Output +thermo 500 +thermo_style custom step etotal pe ke temp +thermo_modify lost warn + +###### Run molecular dynamics ###### +fix thermostat all nve +run 5000 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.4 + ghost atom cutoff = 13.4 + binsize = 6.7, bins = 12 7 30 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair rebomos, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.473 | 4.473 | 4.473 Mbytes + Step TotEng PotEng KinEng Temp + 0 -5466.9785 -5496.7212 29.742759 300 + 500 -5466.964 -5482.6985 15.734505 158.7059 + 1000 -5466.9615 -5480.9492 13.98763 141.08607 + 1500 -5466.964 -5482.6912 15.727258 158.63281 + 2000 -5466.9657 -5483.3606 16.394878 165.36675 + 2500 -5466.9624 -5481.6253 14.662948 147.89765 + 3000 -5466.9642 -5482.7515 15.7873 159.23842 + 3500 -5466.9654 -5483.3789 16.413502 165.5546 + 4000 -5466.9628 -5481.848 14.885236 150.13977 + 4500 -5466.9648 -5483.5045 16.539775 166.82825 + 5000 -5466.9649 -5483.4932 16.528298 166.71249 +Loop time of 19.1009 on 1 procs for 5000 steps with 768 atoms + +Performance: 22.617 ns/day, 1.061 hours/ns, 261.768 timesteps/s, 201.038 katom-step/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 19.042 | 19.042 | 19.042 | 0.0 | 99.69 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.018451 | 0.018451 | 0.018451 | 0.0 | 0.10 +Output | 0.00015575 | 0.00015575 | 0.00015575 | 0.0 | 0.00 +Modify | 0.023931 | 0.023931 | 0.023931 | 0.0 | 0.13 +Other | | 0.01658 | | | 0.09 + +Nlocal: 768 ave 768 max 768 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1158 ave 1158 max 1158 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 141824 ave 141824 max 141824 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 141824 +Ave neighs/atom = 184.66667 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:19 diff --git a/examples/threebody/log.22Feb24.mos2.rebomos.g++.4 b/examples/threebody/log.22Feb24.mos2.rebomos.g++.4 new file mode 100644 index 00000000000..dc1cfa84d40 --- /dev/null +++ b/examples/threebody/log.22Feb24.mos2.rebomos.g++.4 @@ -0,0 +1,95 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-73-g36fa601fe0) + using 1 OpenMP thread(s) per MPI task +# monolayer MoS2 +units metal +boundary p p f +processors * * 1 +atom_modify map array + +atom_style atomic +read_data single_layer_MoS2.data +Reading data file ... + triclinic box = (0 0 -100) to (51.15232 44.299209 100) with tilt (25.57616 0 0) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (src/domain.cpp:219) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 768 atoms + read_data CPU = 0.002 seconds + +mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg +mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg + +########################## Define potentials ################################ +pair_style rebomos +pair_coeff * * MoS.rebomos Mo S S +Reading rebomos potential file MoS.rebomos with DATE: 2013-11-04 +######################################################################### + +### Simulation settings #### +timestep 0.001 +velocity all create 300.0 12345 loop geom + +############################ + +# Output +thermo 500 +thermo_style custom step etotal pe ke temp +thermo_modify lost warn + +###### Run molecular dynamics ###### +fix thermostat all nve +run 5000 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 13.4 + ghost atom cutoff = 13.4 + binsize = 6.7, bins = 12 7 30 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair rebomos, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.045 | 4.045 | 4.045 Mbytes + Step TotEng PotEng KinEng Temp + 0 -5466.9785 -5496.7212 29.742759 300 + 500 -5466.964 -5482.6985 15.734505 158.7059 + 1000 -5466.9615 -5480.9492 13.98763 141.08607 + 1500 -5466.964 -5482.6912 15.727258 158.63281 + 2000 -5466.9657 -5483.3606 16.394878 165.36675 + 2500 -5466.9624 -5481.6253 14.662948 147.89765 + 3000 -5466.9642 -5482.7515 15.7873 159.23842 + 3500 -5466.9654 -5483.3789 16.413502 165.5546 + 4000 -5466.9628 -5481.848 14.885236 150.13977 + 4500 -5466.9648 -5483.5045 16.539775 166.82825 + 5000 -5466.9649 -5483.4932 16.528298 166.71249 +Loop time of 5.69326 on 4 procs for 5000 steps with 768 atoms + +Performance: 75.879 ns/day, 0.316 hours/ns, 878.231 timesteps/s, 674.482 katom-step/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 | 5.2611 | 5.3666 | 5.4358 | 3.0 | 94.26 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.23476 | 0.30106 | 0.40642 | 12.8 | 5.29 +Output | 0.00014996 | 0.0004478 | 0.0013353 | 0.0 | 0.01 +Modify | 0.0068861 | 0.0069917 | 0.0072247 | 0.2 | 0.12 +Other | | 0.01814 | | | 0.32 + +Nlocal: 192 ave 194 max 190 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Nghost: 710 ave 712 max 708 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 35456 ave 35824 max 35088 min +Histogram: 1 0 0 0 0 2 0 0 0 1 + +Total # of neighbors = 141824 +Ave neighs/atom = 184.66667 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:05 diff --git a/examples/triclinic/README b/examples/triclinic/README new file mode 100644 index 00000000000..c68bd709ac8 --- /dev/null +++ b/examples/triclinic/README @@ -0,0 +1,110 @@ +* Various input scripts for systems with general triclinic boxes + versus orthogonal boxes + +in.bcc.primitive = 1 atom for bcc lattice with primitive unit cell +in.fcc.primitive = 1 atom for fcc lattice with primitive unit cell +in.hex.primitive = 1 atom for 2d hex lattice with primitive unit cell +in.sq2.primitive = 1 atom for 2d sq2 lattice with primitive unit cell + +in.bcc.orthog = 2 atoms for bcc lattice with orthogonal unit cell +in.fcc.orthog = 4 atoms for fcc lattice with orthogonal unit cell +in.hex.orthog = 2 atoms for 2d hex ;attice with orthogonal unit cell +in.sq2.orthog = 2 atoms for 2d sq2 lattice with orthogonal unit cell + +energy and pressure should be same for primitive and orthogonal unit cells + +in.data.general = read a data file in general triclinic format + +* Run all the scripts on 1 proc + +lmp_mpi < in.bcc.primitive +mv log.lammps log.compare.bcc.primitive.g++.1 +mv tmp.data.bcc.primitive data.compare.bcc.primitive.g++.1 +mv tmp.dump.bcc.primitive dump.compare.bcc.primitive.g++.1 + +lmp_mpi < in.fcc.primitive +mv log.lammps log.compare.fcc.primitive.g++.1 +mv tmp.data.fcc.primitive data.compare.fcc.primitive.g++.1 +mv tmp.dump.fcc.primitive dump.compare.fcc.primitive.g++.1 + +lmp_mpi < in.hex.primitive +mv log.lammps log.compare.hex.primitive.g++.1 +mv tmp.data.hex.primitive data.compare.hex.primitive.g++.1 +mv tmp.dump.hex.primitive dump.compare.hex.primitive.g++.1 + +lmp_mpi < in.sq2.primitive +mv log.lammps log.compare.sq2.primitive.g++.1 +mv tmp.data.sq2.primitive data.compare.sq2.primitive.g++.1 +mv tmp.dump.sq2.primitive dump.compare.sq2.primitive.g++.1 + +lmp_mpi < in.bcc.orthog +mv log.lammps log.compare.bcc.orthog.g++.1 +mv tmp.data.bcc.orthog data.compare.bcc.orthog.g++.1 +mv tmp.dump.bcc.orthog dump.compare.bcc.orthog.g++.1 + +lmp_mpi < in.fcc.orthog +mv log.lammps log.compare.fcc.orthog.g++.1 +mv tmp.data.fcc.orthog data.compare.fcc.orthog.g++.1 +mv tmp.dump.fcc.orthog dump.compare.fcc.orthog.g++.1 + +lmp_mpi < in.hex.orthog +mv log.lammps log.compare.hex.orthog.g++.1 +mv tmp.data.hex.orthog data.compare.hex.orthog.g++.1 +mv tmp.dump.hex.orthog dump.compare.hex.orthog.g++.1 + +lmp_mpi < in.sq2.orthog +mv log.lammps log.compare.sq2.orthog.g++.1 +mv tmp.data.sq2.orthog data.compare.sq2.orthog.g++.1 +mv tmp.dump.sq2.orthog dump.compare.sq2.orthog.g++.1 + +lmp_mpi < in.data.general +mv log.lammps log.compare.data.general.g++.1 +mv tmp.data.general data.compare.general.g++.1 +mv tmp.dump.general dump.compare.general.g++.1 + +* Run all the scripts on 4 procs + +mpirun -np 4 lmp_mpi < in.bcc.primitive +mv log.lammps log.compare.bcc.primitive.g++.4 +mv tmp.data.bcc.primitive data.compare.bcc.primitive.g++.4 +mv tmp.dump.bcc.primitive dump.compare.bcc.primitive.g++.4 + +mpirun -np 4 lmp_mpi < in.fcc.primitive +mv log.lammps log.compare.fcc.primitive.g++.4 +mv tmp.data.fcc.primitive data.compare.fcc.primitive.g++.4 +mv tmp.dump.fcc.primitive dump.compare.fcc.primitive.g++.4 + +mpirun -np 4 lmp_mpi < in.hex.primitive +mv log.lammps log.compare.hex.primitive.g++.4 +mv tmp.data.hex.primitive data.compare.hex.primitive.g++.4 +mv tmp.dump.hex.primitive dump.compare.hex.primitive.g++.4 + +mpirun -np 4 lmp_mpi < in.sq2.primitive +mv log.lammps log.compare.sq2.primitive.g++.4 +mv tmp.data.sq2.primitive data.compare.sq2.primitive.g++.4 +mv tmp.dump.sq2.primitive dump.compare.sq2.primitive.g++.4 + +mpirun -np 4 lmp_mpi < in.bcc.orthog +mv log.lammps log.compare.bcc.orthog.g++.4 +mv tmp.data.bcc.orthog data.compare.bcc.orthog.g++.4 +mv tmp.dump.bcc.orthog dump.compare.bcc.orthog.g++.4 + +mpirun -np 4 lmp_mpi < in.fcc.orthog +mv log.lammps log.compare.fcc.orthog.g++.4 +mv tmp.data.fcc.orthog data.compare.fcc.orthog.g++.4 +mv tmp.dump.fcc.orthog dump.compare.fcc.orthog.g++.4 + +mpirun -np 4 lmp_mpi < in.hex.orthog +mv log.lammps log.compare.hex.orthog.g++.4 +mv tmp.data.hex.orthog data.compare.hex.orthog.g++.4 +mv tmp.dump.hex.orthog dump.compare.hex.orthog.g++.4 + +mpirun -np 4 lmp_mpi < in.sq2.orthog +mv log.lammps log.compare.sq2.orthog.g++.4 +mv tmp.data.sq2.orthog data.compare.sq2.orthog.g++.4 +mv tmp.dump.sq2.orthog dump.compare.sq2.orthog.g++.4 + +mpirun -np 4 lmp_mpi < in.data.general +mv log.lammps log.compare.data.general.g++.4 +mv tmp.data.general data.compare.general.g++.4 +mv tmp.dump.general dump.compare.general.g++.4 diff --git a/examples/triclinic/data.8Apr24.bcc.orthog.g++.1 b/examples/triclinic/data.8Apr24.bcc.orthog.g++.1 new file mode 100644 index 00000000000..d785b97148a --- /dev/null +++ b/examples/triclinic/data.8Apr24.bcc.orthog.g++.1 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.2599210498948732 xlo xhi +0 1.2599210498948732 ylo yhi +0 1.2599210498948732 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.6299605249474366 0.6299605249474366 0.6299605249474366 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.bcc.orthog.g++.4 b/examples/triclinic/data.8Apr24.bcc.orthog.g++.4 new file mode 100644 index 00000000000..d785b97148a --- /dev/null +++ b/examples/triclinic/data.8Apr24.bcc.orthog.g++.4 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.2599210498948732 xlo xhi +0 1.2599210498948732 ylo yhi +0 1.2599210498948732 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.6299605249474366 0.6299605249474366 0.6299605249474366 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.bcc.primitive.g++.1 b/examples/triclinic/data.8Apr24.bcc.primitive.g++.1 new file mode 100644 index 00000000000..d2f30610d4d --- /dev/null +++ b/examples/triclinic/data.8Apr24.bcc.primitive.g++.1 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +-0.6299605249474365 0.6299605249474365 0.6299605249474364 avec +0.6299605249474367 -0.6299605249474365 0.6299605249474365 bvec +0.6299605249474363 0.6299605249474365 -0.6299605249474363 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.bcc.primitive.g++.4 b/examples/triclinic/data.8Apr24.bcc.primitive.g++.4 new file mode 100644 index 00000000000..d2f30610d4d --- /dev/null +++ b/examples/triclinic/data.8Apr24.bcc.primitive.g++.4 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +-0.6299605249474365 0.6299605249474365 0.6299605249474364 avec +0.6299605249474367 -0.6299605249474365 0.6299605249474365 bvec +0.6299605249474363 0.6299605249474365 -0.6299605249474363 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.fcc.orthog.g++.1 b/examples/triclinic/data.8Apr24.fcc.orthog.g++.1 new file mode 100644 index 00000000000..4e1a9e286f7 --- /dev/null +++ b/examples/triclinic/data.8Apr24.fcc.orthog.g++.1 @@ -0,0 +1,26 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +4 atoms +1 atom types + +0 1.5377619196572583 xlo xhi +0 1.5377619196572583 ylo yhi +0 1.5377619196572583 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.7688809598286291 0.7688809598286291 0 0 0 0 +3 1 0.7688809598286291 0 0.7688809598286291 0 0 0 +4 1 0 0.7688809598286291 0.7688809598286291 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 diff --git a/examples/triclinic/data.8Apr24.fcc.orthog.g++.4 b/examples/triclinic/data.8Apr24.fcc.orthog.g++.4 new file mode 100644 index 00000000000..dbcdc3ddaaa --- /dev/null +++ b/examples/triclinic/data.8Apr24.fcc.orthog.g++.4 @@ -0,0 +1,26 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +4 atoms +1 atom types + +0 1.5377619196572583 xlo xhi +0 1.5377619196572583 ylo yhi +0 1.5377619196572583 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0 0.7688809598286291 0.7688809598286291 0 0 0 +3 1 0.7688809598286291 0.7688809598286291 0 0 0 0 +4 1 0.7688809598286291 0 0.7688809598286291 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 diff --git a/examples/triclinic/data.8Apr24.fcc.primitive.g++.1 b/examples/triclinic/data.8Apr24.fcc.primitive.g++.1 new file mode 100644 index 00000000000..99c74fb1883 --- /dev/null +++ b/examples/triclinic/data.8Apr24.fcc.primitive.g++.1 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +0.7688809598286291 0.7688809598286293 -6.036070983262366e-17 avec +-5.551115123125783e-17 0.7688809598286293 0.7688809598286293 bvec +0.768880959828629 0 0.768880959828629 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.fcc.primitive.g++.4 b/examples/triclinic/data.8Apr24.fcc.primitive.g++.4 new file mode 100644 index 00000000000..99c74fb1883 --- /dev/null +++ b/examples/triclinic/data.8Apr24.fcc.primitive.g++.4 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +0.7688809598286291 0.7688809598286293 -6.036070983262366e-17 avec +-5.551115123125783e-17 0.7688809598286293 0.7688809598286293 bvec +0.768880959828629 0 0.768880959828629 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.general.g++.1 b/examples/triclinic/data.8Apr24.general.g++.1 new file mode 100644 index 00000000000..1de194fb1cf --- /dev/null +++ b/examples/triclinic/data.8Apr24.general.g++.1 @@ -0,0 +1,23 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0.9999999999999998 -1 0 avec +0.9999999999999999 0.9999999999999999 0 bvec +0.9999999999999999 0.9999999999999999 1 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0.2 -1.3877787807814457e-17 0.1 0 0 0 +2 1 0.8 -1.1102230246251565e-16 0.3 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.general.g++.4 b/examples/triclinic/data.8Apr24.general.g++.4 new file mode 100644 index 00000000000..1de194fb1cf --- /dev/null +++ b/examples/triclinic/data.8Apr24.general.g++.4 @@ -0,0 +1,23 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0.9999999999999998 -1 0 avec +0.9999999999999999 0.9999999999999999 0 bvec +0.9999999999999999 0.9999999999999999 1 cvec +0 0 0 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0.2 -1.3877787807814457e-17 0.1 0 0 0 +2 1 0.8 -1.1102230246251565e-16 0.3 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.hex.orthog.g++.1 b/examples/triclinic/data.8Apr24.hex.orthog.g++.1 new file mode 100644 index 00000000000..503f636a88a --- /dev/null +++ b/examples/triclinic/data.8Apr24.hex.orthog.g++.1 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.074569931823542 xlo xhi +0 1.8612097182041991 ylo yhi +-0.537284965911771 0.537284965911771 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.537284965911771 0.9306048591020996 0 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.hex.orthog.g++.4 b/examples/triclinic/data.8Apr24.hex.orthog.g++.4 new file mode 100644 index 00000000000..503f636a88a --- /dev/null +++ b/examples/triclinic/data.8Apr24.hex.orthog.g++.4 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.074569931823542 xlo xhi +0 1.8612097182041991 ylo yhi +-0.537284965911771 0.537284965911771 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.537284965911771 0.9306048591020996 0 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.hex.primitive.g++.1 b/examples/triclinic/data.8Apr24.hex.primitive.g++.1 new file mode 100644 index 00000000000..5c1ee38bac9 --- /dev/null +++ b/examples/triclinic/data.8Apr24.hex.primitive.g++.1 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +1.0745699318262956 0 0 avec +0.5372849659131478 0.9306048590997147 0 bvec +0 0 1.0745699318262956 cvec +0 0 -0.5372849659131478 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.hex.primitive.g++.4 b/examples/triclinic/data.8Apr24.hex.primitive.g++.4 new file mode 100644 index 00000000000..5c1ee38bac9 --- /dev/null +++ b/examples/triclinic/data.8Apr24.hex.primitive.g++.4 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +1.0745699318262956 0 0 avec +0.5372849659131478 0.9306048590997147 0 bvec +0 0 1.0745699318262956 cvec +0 0 -0.5372849659131478 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.sq2.orthog.g++.1 b/examples/triclinic/data.8Apr24.sq2.orthog.g++.1 new file mode 100644 index 00000000000..732e6ed77f8 --- /dev/null +++ b/examples/triclinic/data.8Apr24.sq2.orthog.g++.1 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.348399724926484 xlo xhi +0 1.348399724926484 ylo yhi +-0.674199862463242 0.674199862463242 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.674199862463242 0.674199862463242 0 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.sq2.orthog.g++.4 b/examples/triclinic/data.8Apr24.sq2.orthog.g++.4 new file mode 100644 index 00000000000..732e6ed77f8 --- /dev/null +++ b/examples/triclinic/data.8Apr24.sq2.orthog.g++.4 @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +2 atoms +1 atom types + +0 1.348399724926484 xlo xhi +0 1.348399724926484 ylo yhi +-0.674199862463242 0.674199862463242 zlo zhi + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 +2 1 0.674199862463242 0.674199862463242 0 0 0 0 + +Velocities + +1 0 0 0 +2 0 0 0 diff --git a/examples/triclinic/data.8Apr24.sq2.primitive.g++.1 b/examples/triclinic/data.8Apr24.sq2.primitive.g++.1 new file mode 100644 index 00000000000..5a679f612cb --- /dev/null +++ b/examples/triclinic/data.8Apr24.sq2.primitive.g++.1 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +0.6741998624632419 -0.674199862463242 0 avec +0.6741998624632419 0.674199862463242 0 bvec +0 0 1.348399724926484 cvec +0 0 -0.674199862463242 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.8Apr24.sq2.primitive.g++.4 b/examples/triclinic/data.8Apr24.sq2.primitive.g++.4 new file mode 100644 index 00000000000..5a679f612cb --- /dev/null +++ b/examples/triclinic/data.8Apr24.sq2.primitive.g++.4 @@ -0,0 +1,21 @@ +LAMMPS data file via write_data, version 7 Feb 2024, timestep = 0, units = lj + +1 atoms +1 atom types + +0.6741998624632419 -0.674199862463242 0 avec +0.6741998624632419 0.674199862463242 0 bvec +0 0 1.348399724926484 cvec +0 0 -0.674199862463242 abc origin + +Masses + +1 1 + +Atoms # atomic + +1 1 0 0 0 0 0 0 + +Velocities + +1 0 0 0 diff --git a/examples/triclinic/data.general b/examples/triclinic/data.general new file mode 100644 index 00000000000..3ae6cdd0b59 --- /dev/null +++ b/examples/triclinic/data.general @@ -0,0 +1,13 @@ +# simple general triclinic simulation box with 2 atoms + +2 atoms +1 atom types +1 -1 0 avec +1 1 0 bvec +1 1 1 cvec +0 0 0 abc origin + +Atoms + +1 1 0.2 0.0 0.1 +2 1 0.8 0.0 0.3 diff --git a/examples/triclinic/dump.8Apr24.bcc.orthog.g++.1 b/examples/triclinic/dump.8Apr24.bcc.orthog.g++.1 new file mode 100644 index 00000000000..3023d4f3932 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.bcc.orthog.g++.1 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.2599210498948732e+00 +0.0000000000000000e+00 1.2599210498948732e+00 +0.0000000000000000e+00 1.2599210498948732e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.629961 0.629961 0.629961 diff --git a/examples/triclinic/dump.8Apr24.bcc.orthog.g++.4 b/examples/triclinic/dump.8Apr24.bcc.orthog.g++.4 new file mode 100644 index 00000000000..3023d4f3932 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.bcc.orthog.g++.4 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.2599210498948732e+00 +0.0000000000000000e+00 1.2599210498948732e+00 +0.0000000000000000e+00 1.2599210498948732e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.629961 0.629961 0.629961 diff --git a/examples/triclinic/dump.8Apr24.bcc.primitive.g++.1 b/examples/triclinic/dump.8Apr24.bcc.primitive.g++.1 new file mode 100644 index 00000000000..f987a77a350 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.bcc.primitive.g++.1 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +-6.2996052494743648e-01 6.2996052494743648e-01 6.2996052494743637e-01 0.0000000000000000e+00 +6.2996052494743671e-01 -6.2996052494743648e-01 6.2996052494743648e-01 0.0000000000000000e+00 +6.2996052494743626e-01 6.2996052494743648e-01 -6.2996052494743626e-01 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.bcc.primitive.g++.4 b/examples/triclinic/dump.8Apr24.bcc.primitive.g++.4 new file mode 100644 index 00000000000..f987a77a350 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.bcc.primitive.g++.4 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +-6.2996052494743648e-01 6.2996052494743648e-01 6.2996052494743637e-01 0.0000000000000000e+00 +6.2996052494743671e-01 -6.2996052494743648e-01 6.2996052494743648e-01 0.0000000000000000e+00 +6.2996052494743626e-01 6.2996052494743648e-01 -6.2996052494743626e-01 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.fcc.orthog.g++.1 b/examples/triclinic/dump.8Apr24.fcc.orthog.g++.1 new file mode 100644 index 00000000000..9f5f64f547a --- /dev/null +++ b/examples/triclinic/dump.8Apr24.fcc.orthog.g++.1 @@ -0,0 +1,13 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +4 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.5377619196572583e+00 +0.0000000000000000e+00 1.5377619196572583e+00 +0.0000000000000000e+00 1.5377619196572583e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.768881 0.768881 0 +3 1 0.768881 0 0.768881 +4 1 0 0.768881 0.768881 diff --git a/examples/triclinic/dump.8Apr24.fcc.orthog.g++.4 b/examples/triclinic/dump.8Apr24.fcc.orthog.g++.4 new file mode 100644 index 00000000000..0952b45b154 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.fcc.orthog.g++.4 @@ -0,0 +1,13 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +4 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.5377619196572583e+00 +0.0000000000000000e+00 1.5377619196572583e+00 +0.0000000000000000e+00 1.5377619196572583e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0 0.768881 0.768881 +3 1 0.768881 0.768881 0 +4 1 0.768881 0 0.768881 diff --git a/examples/triclinic/dump.8Apr24.fcc.primitive.g++.1 b/examples/triclinic/dump.8Apr24.fcc.primitive.g++.1 new file mode 100644 index 00000000000..7ec2c11e1b2 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.fcc.primitive.g++.1 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +7.6888095982862914e-01 7.6888095982862925e-01 -6.0360709832623663e-17 0.0000000000000000e+00 +-5.5511151231257827e-17 7.6888095982862925e-01 7.6888095982862925e-01 0.0000000000000000e+00 +7.6888095982862903e-01 0.0000000000000000e+00 7.6888095982862903e-01 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.fcc.primitive.g++.4 b/examples/triclinic/dump.8Apr24.fcc.primitive.g++.4 new file mode 100644 index 00000000000..7ec2c11e1b2 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.fcc.primitive.g++.4 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +7.6888095982862914e-01 7.6888095982862925e-01 -6.0360709832623663e-17 0.0000000000000000e+00 +-5.5511151231257827e-17 7.6888095982862925e-01 7.6888095982862925e-01 0.0000000000000000e+00 +7.6888095982862903e-01 0.0000000000000000e+00 7.6888095982862903e-01 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.general.g++.1 b/examples/triclinic/dump.8Apr24.general.g++.1 new file mode 100644 index 00000000000..4e7a7d08e00 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.general.g++.1 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS abc origin pp pp pp +9.9999999999999978e-01 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9.9999999999999989e-01 9.9999999999999989e-01 0.0000000000000000e+00 0.0000000000000000e+00 +9.9999999999999989e-01 9.9999999999999989e-01 1.0000000000000000e+00 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0.141421 0.141421 0.1 +2 1 0.565685 0.565685 0.3 diff --git a/examples/triclinic/dump.8Apr24.general.g++.4 b/examples/triclinic/dump.8Apr24.general.g++.4 new file mode 100644 index 00000000000..4e7a7d08e00 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.general.g++.4 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS abc origin pp pp pp +9.9999999999999978e-01 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +9.9999999999999989e-01 9.9999999999999989e-01 0.0000000000000000e+00 0.0000000000000000e+00 +9.9999999999999989e-01 9.9999999999999989e-01 1.0000000000000000e+00 0.0000000000000000e+00 +ITEM: ATOMS id type x y z +1 1 0.141421 0.141421 0.1 +2 1 0.565685 0.565685 0.3 diff --git a/examples/triclinic/dump.8Apr24.hex.orthog.g++.1 b/examples/triclinic/dump.8Apr24.hex.orthog.g++.1 new file mode 100644 index 00000000000..498573a7534 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.hex.orthog.g++.1 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.0745699318235420e+00 +0.0000000000000000e+00 1.8612097182041991e+00 +-5.3728496591177100e-01 5.3728496591177100e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.537285 0.930605 0 diff --git a/examples/triclinic/dump.8Apr24.hex.orthog.g++.4 b/examples/triclinic/dump.8Apr24.hex.orthog.g++.4 new file mode 100644 index 00000000000..498573a7534 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.hex.orthog.g++.4 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.0745699318235420e+00 +0.0000000000000000e+00 1.8612097182041991e+00 +-5.3728496591177100e-01 5.3728496591177100e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.537285 0.930605 0 diff --git a/examples/triclinic/dump.8Apr24.hex.primitive.g++.1 b/examples/triclinic/dump.8Apr24.hex.primitive.g++.1 new file mode 100644 index 00000000000..e4e1e884306 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.hex.primitive.g++.1 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +1.0745699318262956e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5.3728496591314778e-01 9.3060485909971469e-01 0.0000000000000000e+00 0.0000000000000000e+00 +0.0000000000000000e+00 0.0000000000000000e+00 1.0745699318262956e+00 -5.3728496591314778e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.hex.primitive.g++.4 b/examples/triclinic/dump.8Apr24.hex.primitive.g++.4 new file mode 100644 index 00000000000..e4e1e884306 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.hex.primitive.g++.4 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +1.0745699318262956e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +5.3728496591314778e-01 9.3060485909971469e-01 0.0000000000000000e+00 0.0000000000000000e+00 +0.0000000000000000e+00 0.0000000000000000e+00 1.0745699318262956e+00 -5.3728496591314778e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.sq2.orthog.g++.1 b/examples/triclinic/dump.8Apr24.sq2.orthog.g++.1 new file mode 100644 index 00000000000..9735deffb22 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.sq2.orthog.g++.1 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.3483997249264841e+00 +0.0000000000000000e+00 1.3483997249264841e+00 +-6.7419986246324204e-01 6.7419986246324204e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.6742 0.6742 0 diff --git a/examples/triclinic/dump.8Apr24.sq2.orthog.g++.4 b/examples/triclinic/dump.8Apr24.sq2.orthog.g++.4 new file mode 100644 index 00000000000..9735deffb22 --- /dev/null +++ b/examples/triclinic/dump.8Apr24.sq2.orthog.g++.4 @@ -0,0 +1,11 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +2 +ITEM: BOX BOUNDS pp pp pp +0.0000000000000000e+00 1.3483997249264841e+00 +0.0000000000000000e+00 1.3483997249264841e+00 +-6.7419986246324204e-01 6.7419986246324204e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 +2 1 0.6742 0.6742 0 diff --git a/examples/triclinic/dump.8Apr24.sq2.primitive.g++.1 b/examples/triclinic/dump.8Apr24.sq2.primitive.g++.1 new file mode 100644 index 00000000000..8f8487e237e --- /dev/null +++ b/examples/triclinic/dump.8Apr24.sq2.primitive.g++.1 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +6.7419986246324193e-01 -6.7419986246324204e-01 0.0000000000000000e+00 0.0000000000000000e+00 +6.7419986246324193e-01 6.7419986246324204e-01 0.0000000000000000e+00 0.0000000000000000e+00 +0.0000000000000000e+00 0.0000000000000000e+00 1.3483997249264841e+00 -6.7419986246324204e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/dump.8Apr24.sq2.primitive.g++.4 b/examples/triclinic/dump.8Apr24.sq2.primitive.g++.4 new file mode 100644 index 00000000000..8f8487e237e --- /dev/null +++ b/examples/triclinic/dump.8Apr24.sq2.primitive.g++.4 @@ -0,0 +1,10 @@ +ITEM: TIMESTEP +0 +ITEM: NUMBER OF ATOMS +1 +ITEM: BOX BOUNDS abc origin pp pp pp +6.7419986246324193e-01 -6.7419986246324204e-01 0.0000000000000000e+00 0.0000000000000000e+00 +6.7419986246324193e-01 6.7419986246324204e-01 0.0000000000000000e+00 0.0000000000000000e+00 +0.0000000000000000e+00 0.0000000000000000e+00 1.3483997249264841e+00 -6.7419986246324204e-01 +ITEM: ATOMS id type x y z +1 1 0 0 0 diff --git a/examples/triclinic/in.bcc.orthog b/examples/triclinic/in.bcc.orthog new file mode 100644 index 00000000000..b25241c7009 --- /dev/null +++ b/examples/triclinic/in.bcc.orthog @@ -0,0 +1,23 @@ +# orthogonal box for bcc lattice unit cell + +lattice bcc 1.0 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.bcc.orthog + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz & + cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.bcc.orthog id type x y z + +run 0 diff --git a/examples/triclinic/in.bcc.primitive b/examples/triclinic/in.bcc.primitive new file mode 100644 index 00000000000..2c1a1f9b6fc --- /dev/null +++ b/examples/triclinic/in.bcc.primitive @@ -0,0 +1,25 @@ +# general triclinic box for bcc lattice primitive cell + +lattice custom 1.0 a1 -0.5 0.5 0.5 a2 0.5 -0.5 0.5 a3 0.5 0.5 -0.5 & + basis 0.0 0.0 0.0 triclinic/general + +create_box 1 NULL 0 1 0 1 0 1 +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.bcc.primitive triclinic/general + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz & + cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.bcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 diff --git a/examples/triclinic/in.data.general b/examples/triclinic/in.data.general new file mode 100644 index 00000000000..8e3d7bc2873 --- /dev/null +++ b/examples/triclinic/in.data.general @@ -0,0 +1,21 @@ +# read a general triclinic data file + +read_data data.general + +mass * 1.0 + +write_data tmp.data.general triclinic/general + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz & + cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.general id type x y z +dump_modify 1 triclinic/general yes + +run 0 diff --git a/examples/triclinic/in.fcc.orthog b/examples/triclinic/in.fcc.orthog new file mode 100644 index 00000000000..a33b6c4a817 --- /dev/null +++ b/examples/triclinic/in.fcc.orthog @@ -0,0 +1,23 @@ +# orthogonal box for fcc lattice unit cell + +lattice fcc 1.1 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.fcc.orthog + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz & + cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.fcc.orthog id type x y z + +run 0 diff --git a/examples/triclinic/in.fcc.primitive b/examples/triclinic/in.fcc.primitive new file mode 100644 index 00000000000..2836d39eea2 --- /dev/null +++ b/examples/triclinic/in.fcc.primitive @@ -0,0 +1,25 @@ +# general triclinic box for fcc lattice primitive cell + +lattice custom 1.1 a2 0.0 0.5 0.5 a3 0.5 0.0 0.5 a1 0.5 0.5 0.0 & + basis 0.0 0.0 0.0 triclinic/general + +create_box 1 NULL 0 1 0 1 0 1 +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.fcc.primitive triclinic/general + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz & + cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.fcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 diff --git a/examples/triclinic/in.hex.orthog b/examples/triclinic/in.hex.orthog new file mode 100644 index 00000000000..41d70916d1c --- /dev/null +++ b/examples/triclinic/in.hex.orthog @@ -0,0 +1,24 @@ +# orthogonal box for 2d hex lattice unit cell + +dimension 2 + +lattice hex 1.0 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.hex.orthog + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.hex.orthog id type x y z + +run 0 diff --git a/examples/triclinic/in.hex.primitive b/examples/triclinic/in.hex.primitive new file mode 100644 index 00000000000..f76ccbbdf22 --- /dev/null +++ b/examples/triclinic/in.hex.primitive @@ -0,0 +1,26 @@ +# general triclinic box for 2d hex lattice primitive cell + +dimension 2 + +lattice custom 1.0 a1 1.0 0.0 0.0 a2 0.5 0.86602540378 0.0 & + a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.hex.primitive triclinic/general + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.hex.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 diff --git a/examples/triclinic/in.sq2.orthog b/examples/triclinic/in.sq2.orthog new file mode 100644 index 00000000000..366703a6ee3 --- /dev/null +++ b/examples/triclinic/in.sq2.orthog @@ -0,0 +1,24 @@ +# orthogonal box for 2d sq2 lattice unit cell + +dimension 2 + +lattice sq2 1.1 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.sq2.orthog + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.sq2.orthog id type x y z + +run 0 diff --git a/examples/triclinic/in.sq2.primitive b/examples/triclinic/in.sq2.primitive new file mode 100644 index 00000000000..5333fd2b994 --- /dev/null +++ b/examples/triclinic/in.sq2.primitive @@ -0,0 +1,26 @@ +# general triclinic box for 2d sq2 lattice primitive cell + +dimension 2 + +lattice custom 1.1 a1 0.5 -0.5 0.0 a2 0.5 0.5 0.0 a3 0.0 0.0 1.0 & + basis 0.0 0.0 0.0 triclinic/general + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +create_atoms 1 box + +mass * 1.0 + +write_data tmp.data.sq2.primitive triclinic/general + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.sq2.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 diff --git a/examples/triclinic/log.8Apr24.bcc.orthog.g++.1 b/examples/triclinic/log.8Apr24.bcc.orthog.g++.1 new file mode 100644 index 00000000000..72bbc4505c4 --- /dev/null +++ b/examples/triclinic/log.8Apr24.bcc.orthog.g++.1 @@ -0,0 +1,74 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# orthogonal box for bcc lattice unit cell + +lattice bcc 1.0 +Lattice spacing in x,y,z = 1.259921 1.259921 1.259921 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +Created orthogonal box = (0 0 0) to (1.259921 1.259921 1.259921) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 0) to (1.259921 1.259921 1.259921) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.bcc.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.bcc.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.058 | 3.058 | 3.058 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -3.8628258 1.259921 0 0 0 1.259921 0 0 0 1.259921 3.5116598 3.5116598 3.5116598 2 +Loop time of 8.27e-07 on 1 procs for 0 steps with 2 atoms + +120.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 8.27e-07 | | |100.00 + +Nlocal: 2 ave 2 max 2 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 33 ave 33 max 33 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 8 ave 8 max 8 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 8 +Ave neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.bcc.orthog.g++.4 b/examples/triclinic/log.8Apr24.bcc.orthog.g++.4 new file mode 100644 index 00000000000..389d66f413a --- /dev/null +++ b/examples/triclinic/log.8Apr24.bcc.orthog.g++.4 @@ -0,0 +1,75 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# orthogonal box for bcc lattice unit cell + +lattice bcc 1.0 +Lattice spacing in x,y,z = 1.259921 1.259921 1.259921 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +Created orthogonal box = (0 0 0) to (1.259921 1.259921 1.259921) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 0) to (1.259921 1.259921 1.259921) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.bcc.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.bcc.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.948 | 3.011 | 3.073 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -3.8628258 1.259921 0 0 0 1.259921 0 0 0 1.259921 3.5116598 3.5116598 3.5116598 2 +Loop time of 1.3815e-06 on 4 procs for 0 steps with 2 atoms + +54.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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.382e-06 | | |100.00 + +Nlocal: 0.5 ave 1 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 19.5 ave 20 max 19 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 2 ave 4 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 8 +Ave neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.bcc.primitive.g++.1 b/examples/triclinic/log.8Apr24.bcc.primitive.g++.1 new file mode 100644 index 00000000000..d1c8cca3113 --- /dev/null +++ b/examples/triclinic/log.8Apr24.bcc.primitive.g++.1 @@ -0,0 +1,76 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# general triclinic box for bcc lattice primitive cell + +lattice custom 1.0 a1 -0.5 0.5 0.5 a2 0.5 -0.5 0.5 a3 0.5 0.5 -0.5 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 1.8185394 1.5430818 0.89089872 + +create_box 1 NULL 0 1 0 1 0 1 +Created triclinic box = (0 0 0) to (1.0911236 1.0287212 0.89089872) with tilt (-0.36370788 -0.36370788 -0.51436061) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 0) to (1.0911236 1.0287212 0.89089872) with tilt (-0.36370788 -0.36370788 -0.51436061) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.bcc.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.bcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 4 3 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.084 | 3.084 | 3.084 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -3.8628258 -0.62996052 0.62996052 0.62996052 0.62996052 -0.62996052 0.62996052 0.62996052 0.62996052 -0.62996052 3.5116598 3.5116598 3.5116598 1 +Loop time of 6.86e-07 on 1 procs for 0 steps with 1 atoms + +145.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 6.86e-07 | | |100.00 + +Nlocal: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 63 ave 63 max 63 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4 +Ave neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.bcc.primitive.g++.4 b/examples/triclinic/log.8Apr24.bcc.primitive.g++.4 new file mode 100644 index 00000000000..f8e979976f0 --- /dev/null +++ b/examples/triclinic/log.8Apr24.bcc.primitive.g++.4 @@ -0,0 +1,77 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# general triclinic box for bcc lattice primitive cell + +lattice custom 1.0 a1 -0.5 0.5 0.5 a2 0.5 -0.5 0.5 a3 0.5 0.5 -0.5 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 1.8185394 1.5430818 0.89089872 + +create_box 1 NULL 0 1 0 1 0 1 +Created triclinic box = (0 0 0) to (1.0911236 1.0287212 0.89089872) with tilt (-0.36370788 -0.36370788 -0.51436061) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 2 by 1 by 2 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 0) to (1.0911236 1.0287212 0.89089872) with tilt (-0.36370788 -0.36370788 -0.51436061) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.bcc.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.bcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 4 3 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.973 | 3.005 | 3.098 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -3.8628258 -0.62996052 0.62996052 0.62996052 0.62996052 -0.62996052 0.62996052 0.62996052 0.62996052 -0.62996052 3.5116598 3.5116598 3.5116598 1 +Loop time of 2.1275e-06 on 4 procs for 0 steps with 1 atoms + +70.5% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.127e-06 | | |100.00 + +Nlocal: 0.25 ave 1 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 35.75 ave 36 max 35 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 1 ave 4 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 4 +Ave neighs/atom = 4 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.data.general.g++.1 b/examples/triclinic/log.8Apr24.data.general.g++.1 new file mode 100644 index 00000000000..3874a8c77ed --- /dev/null +++ b/examples/triclinic/log.8Apr24.data.general.g++.1 @@ -0,0 +1,73 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# read a general triclinic data file + +read_data data.general +Reading data file ... + triclinic box = (0 0 0) to (1.4142136 1.4142136 1) with tilt (-1.110223e-16 -1.110223e-16 1.4142136) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 2 atoms + read_data CPU = 0.001 seconds + +mass * 1.0 + +write_data tmp.data.general triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.general id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 3 5 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.076 | 3.076 | 3.076 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 456.05603 1 -1 0 1 1 0 1 1 1 2555.5604 2555.5604 598.94037 2 +Loop time of 7.31e-07 on 1 procs for 0 steps with 2 atoms + +136.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 7.31e-07 | | |100.00 + +Nlocal: 2 ave 2 max 2 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 66 ave 66 max 66 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 6 ave 6 max 6 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 6 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.data.general.g++.4 b/examples/triclinic/log.8Apr24.data.general.g++.4 new file mode 100644 index 00000000000..f03d1ffb582 --- /dev/null +++ b/examples/triclinic/log.8Apr24.data.general.g++.4 @@ -0,0 +1,74 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# read a general triclinic data file + +read_data data.general +Reading data file ... + triclinic box = (0 0 0) to (1.4142136 1.4142136 1) with tilt (-1.110223e-16 -1.110223e-16 1.4142136) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 2 by 1 by 2 MPI processor grid + reading atoms ... + 2 atoms + read_data CPU = 0.001 seconds + +mass * 1.0 + +write_data tmp.data.general triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.general id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 3 5 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.966 | 2.997 | 3.091 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 456.05603 1 -1 0 1 1 0 1 1 1 2555.5604 2555.5604 598.94037 2 +Loop time of 2.13e-06 on 4 procs for 0 steps with 2 atoms + +70.4% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.13e-06 | | |100.00 + +Nlocal: 0.5 ave 2 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 47.5 ave 48 max 46 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 1.5 ave 6 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 6 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.fcc.orthog.g++.1 b/examples/triclinic/log.8Apr24.fcc.orthog.g++.1 new file mode 100644 index 00000000000..fc608c042aa --- /dev/null +++ b/examples/triclinic/log.8Apr24.fcc.orthog.g++.1 @@ -0,0 +1,74 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# orthogonal box for fcc lattice unit cell + +lattice fcc 1.1 +Lattice spacing in x,y,z = 1.5377619 1.5377619 1.5377619 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +Created orthogonal box = (0 0 0) to (1.5377619 1.5377619 1.5377619) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 4 atoms + using lattice units in orthogonal box = (0 0 0) to (1.5377619 1.5377619 1.5377619) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.fcc.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.fcc.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.059 | 3.059 | 3.059 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -5.7354 1.5377619 0 0 0 1.5377619 0 0 0 1.5377619 6.70824 6.70824 6.70824 3.6363636 +Loop time of 8.53e-07 on 1 procs for 0 steps with 4 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 8.53e-07 | | |100.00 + +Nlocal: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 58 ave 58 max 58 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 24 ave 24 max 24 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 24 +Ave neighs/atom = 6 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.fcc.orthog.g++.4 b/examples/triclinic/log.8Apr24.fcc.orthog.g++.4 new file mode 100644 index 00000000000..f5464d238df --- /dev/null +++ b/examples/triclinic/log.8Apr24.fcc.orthog.g++.4 @@ -0,0 +1,75 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# orthogonal box for fcc lattice unit cell + +lattice fcc 1.1 +Lattice spacing in x,y,z = 1.5377619 1.5377619 1.5377619 + +region mybox block 0 1 0 1 0 1 +create_box 1 mybox +Created orthogonal box = (0 0 0) to (1.5377619 1.5377619 1.5377619) + 2 by 1 by 2 MPI processor grid +create_atoms 1 box +Created 4 atoms + using lattice units in orthogonal box = (0 0 0) to (1.5377619 1.5377619 1.5377619) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.fcc.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol + +dump 1 all custom 100 tmp.dump.fcc.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.074 | 3.074 | 3.074 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -5.7354 1.5377619 0 0 0 1.5377619 0 0 0 1.5377619 6.70824 6.70824 6.70824 3.6363636 +Loop time of 3.291e-06 on 4 procs for 0 steps with 4 atoms + +76.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 | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 3.291e-06 | | |100.00 + +Nlocal: 1 ave 1 max 1 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 39 ave 39 max 39 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 6 ave 6 max 6 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 24 +Ave neighs/atom = 6 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.fcc.primitive.g++.1 b/examples/triclinic/log.8Apr24.fcc.primitive.g++.1 new file mode 100644 index 00000000000..21fccdca1fa --- /dev/null +++ b/examples/triclinic/log.8Apr24.fcc.primitive.g++.1 @@ -0,0 +1,76 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# general triclinic box for fcc lattice primitive cell + +lattice custom 1.1 a2 0.0 0.5 0.5 a3 0.5 0.0 0.5 a1 0.5 0.5 0.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 2.1747238 1.2555773 0.88782726 + +create_box 1 NULL 0 1 0 1 0 1 +Created triclinic box = (0 0 0) to (1.0873619 0.94168301 0.88782726) with tilt (0.54368094 0.54368094 0.31389434) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 0) to (1.0873619 0.94168301 0.88782726) with tilt (0.54368094 0.54368094 0.31389434) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.fcc.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.fcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 4 3 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.084 | 3.084 | 3.084 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -5.7354 0.76888096 0.76888096 -6.036071e-17 -5.5511151e-17 0.76888096 0.76888096 0.76888096 0 0.76888096 6.70824 6.70824 6.70824 0.90909091 +Loop time of 8.83e-07 on 1 procs for 0 steps with 1 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 8.83e-07 | | |100.00 + +Nlocal: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 63 ave 63 max 63 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 6 ave 6 max 6 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 6 +Ave neighs/atom = 6 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.fcc.primitive.g++.4 b/examples/triclinic/log.8Apr24.fcc.primitive.g++.4 new file mode 100644 index 00000000000..651da16e791 --- /dev/null +++ b/examples/triclinic/log.8Apr24.fcc.primitive.g++.4 @@ -0,0 +1,77 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# general triclinic box for fcc lattice primitive cell + +lattice custom 1.1 a2 0.0 0.5 0.5 a3 0.5 0.0 0.5 a1 0.5 0.5 0.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 2.1747238 1.2555773 0.88782726 + +create_box 1 NULL 0 1 0 1 0 1 +Created triclinic box = (0 0 0) to (1.0873619 0.94168301 0.88782726) with tilt (0.54368094 0.54368094 0.31389434) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 0) to (1.0873619 0.94168301 0.88782726) with tilt (0.54368094 0.54368094 0.31389434) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.fcc.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.2 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy avecz bvecx bvecy bvecz cvecx cvecy cvecz pxx pyy pzz vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.fcc.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.2 + ghost atom cutoff = 1.2 + binsize = 0.6, bins = 4 3 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/3d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.973 | 3.005 | 3.098 Mbytes + Step PotEng Avecx Avecy Avecz Bvecx Bvecy Bvecz Cvecx Cvecy Cvecz Pxx Pyy Pzz Volume + 0 -5.7354 0.76888096 0.76888096 -6.036071e-17 -5.5511151e-17 0.76888096 0.76888096 0.76888096 0 0.76888096 6.70824 6.70824 6.70824 0.90909091 +Loop time of 1.7905e-06 on 4 procs for 0 steps with 1 atoms + +55.9% 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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.791e-06 | | |100.00 + +Nlocal: 0.25 ave 1 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 35.75 ave 36 max 35 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 1.5 ave 6 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 6 +Ave neighs/atom = 6 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.hex.orthog.g++.1 b/examples/triclinic/log.8Apr24.hex.orthog.g++.1 new file mode 100644 index 00000000000..001f2300e45 --- /dev/null +++ b/examples/triclinic/log.8Apr24.hex.orthog.g++.1 @@ -0,0 +1,76 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# orthogonal box for 2d hex lattice unit cell + +dimension 2 + +lattice hex 1.0 +Lattice spacing in x,y,z = 1.0745699 1.8612097 1.0745699 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +Created orthogonal box = (0 0 -0.53728497) to (1.0745699 1.8612097 0.53728497) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 -0.53728497) to (1.0745699 1.8612097 0.53728497) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.hex.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.hex.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 2 4 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.054 | 3.054 | 3.054 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 -2.7317286 1.0745699 0 0 1.8612097 6.9923141 6.9923141 2 +Loop time of 9.26e-07 on 1 procs for 0 steps with 2 atoms + +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 9.26e-07 | | |100.00 + +Nlocal: 2 ave 2 max 2 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 15 ave 15 max 15 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 6 ave 6 max 6 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 6 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.hex.orthog.g++.4 b/examples/triclinic/log.8Apr24.hex.orthog.g++.4 new file mode 100644 index 00000000000..880d5329576 --- /dev/null +++ b/examples/triclinic/log.8Apr24.hex.orthog.g++.4 @@ -0,0 +1,77 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# orthogonal box for 2d hex lattice unit cell + +dimension 2 + +lattice hex 1.0 +Lattice spacing in x,y,z = 1.0745699 1.8612097 1.0745699 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +Created orthogonal box = (0 0 -0.53728497) to (1.0745699 1.8612097 0.53728497) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 -0.53728497) to (1.0745699 1.8612097 0.53728497) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.hex.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.hex.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 2 4 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.945 | 2.945 | 2.945 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 -2.7317286 1.0745699 0 0 1.8612097 6.9923141 6.9923141 2 +Loop time of 1.9155e-06 on 4 procs for 0 steps with 2 atoms + +52.2% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.915e-06 | | |100.00 + +Nlocal: 0.5 ave 1 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 11.5 ave 12 max 11 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 1.5 ave 3 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 6 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.hex.primitive.g++.1 b/examples/triclinic/log.8Apr24.hex.primitive.g++.1 new file mode 100644 index 00000000000..71f3fc6d133 --- /dev/null +++ b/examples/triclinic/log.8Apr24.hex.primitive.g++.1 @@ -0,0 +1,78 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# general triclinic box for 2d hex lattice primitive cell + +dimension 2 + +lattice custom 1.0 a1 1.0 0.0 0.0 a2 0.5 0.86602540378 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 1.6118549 0.93060486 1.0745699 + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +Created triclinic box = (0 0 -0.53728497) to (1.0745699 0.93060486 0.53728497) with tilt (0.53728497 0 0) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 -0.53728497) to (1.0745699 0.93060486 0.53728497) with tilt (0.53728497 0 0) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.hex.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.hex.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 2 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/2d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.062 | 3.062 | 3.062 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 -2.7317286 1.0745699 0 0.53728497 0.93060486 6.9923141 6.9923141 1 +Loop time of 1.03e-06 on 1 procs for 0 steps with 1 atoms + +97.1% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.03e-06 | | |100.00 + +Nlocal: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 15 ave 15 max 15 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.hex.primitive.g++.4 b/examples/triclinic/log.8Apr24.hex.primitive.g++.4 new file mode 100644 index 00000000000..b7703b26783 --- /dev/null +++ b/examples/triclinic/log.8Apr24.hex.primitive.g++.4 @@ -0,0 +1,79 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# general triclinic box for 2d hex lattice primitive cell + +dimension 2 + +lattice custom 1.0 a1 1.0 0.0 0.0 a2 0.5 0.86602540378 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 1.6118549 0.93060486 1.0745699 + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +Created triclinic box = (0 0 -0.53728497) to (1.0745699 0.93060486 0.53728497) with tilt (0.53728497 0 0) +WARNING: Triclinic box skew is large. LAMMPS will run inefficiently. (../domain.cpp:221) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 -0.53728497) to (1.0745699 0.93060486 0.53728497) with tilt (0.53728497 0 0) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.hex.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.hex.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 2 2 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/2d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.953 | 2.953 | 2.953 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 -2.7317286 1.0745699 0 0.53728497 0.93060486 6.9923141 6.9923141 1 +Loop time of 2.45225e-06 on 4 procs for 0 steps with 1 atoms + +61.2% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.452e-06 | | |100.00 + +Nlocal: 0.25 ave 1 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 8.75 ave 9 max 8 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 0.75 ave 3 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 3 +Ave neighs/atom = 3 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.sq2.orthog.g++.1 b/examples/triclinic/log.8Apr24.sq2.orthog.g++.1 new file mode 100644 index 00000000000..bae7c7eae17 --- /dev/null +++ b/examples/triclinic/log.8Apr24.sq2.orthog.g++.1 @@ -0,0 +1,76 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# orthogonal box for 2d sq2 lattice unit cell + +dimension 2 + +lattice sq2 1.1 +Lattice spacing in x,y,z = 1.3483997 1.3483997 1.3483997 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +Created orthogonal box = (0 0 -0.67419986) to (1.3483997 1.3483997 0.67419986) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 -0.67419986) to (1.3483997 1.3483997 0.67419986) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.sq2.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.sq2.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.046 | 3.046 | 3.046 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 3.524488 1.3483997 0 0 1.3483997 58.400021 58.400021 1.8181818 +Loop time of 9.37e-07 on 1 procs for 0 steps with 2 atoms + +106.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 9.37e-07 | | |100.00 + +Nlocal: 2 ave 2 max 2 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11 ave 11 max 11 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 4 ave 4 max 4 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4 +Ave neighs/atom = 2 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.sq2.orthog.g++.4 b/examples/triclinic/log.8Apr24.sq2.orthog.g++.4 new file mode 100644 index 00000000000..c54078ae97e --- /dev/null +++ b/examples/triclinic/log.8Apr24.sq2.orthog.g++.4 @@ -0,0 +1,77 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# orthogonal box for 2d sq2 lattice unit cell + +dimension 2 + +lattice sq2 1.1 +Lattice spacing in x,y,z = 1.3483997 1.3483997 1.3483997 + +region mybox block 0 1 0 1 -0.5 0.5 +create_box 1 mybox +Created orthogonal box = (0 0 -0.67419986) to (1.3483997 1.3483997 0.67419986) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 2 atoms + using lattice units in orthogonal box = (0 0 -0.67419986) to (1.3483997 1.3483997 0.67419986) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.sq2.orthog +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol + +dump 1 all custom 100 tmp.dump.sq2.orthog id type x y z + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.937 | 2.937 | 2.937 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 3.524488 1.3483997 0 0 1.3483997 58.400021 58.400021 1.8181818 +Loop time of 1.703e-06 on 4 procs for 0 steps with 2 atoms + +29.4% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.703e-06 | | |100.00 + +Nlocal: 0.5 ave 1 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 7.5 ave 8 max 7 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 1 ave 2 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 4 +Ave neighs/atom = 2 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.sq2.primitive.g++.1 b/examples/triclinic/log.8Apr24.sq2.primitive.g++.1 new file mode 100644 index 00000000000..07195085aed --- /dev/null +++ b/examples/triclinic/log.8Apr24.sq2.primitive.g++.1 @@ -0,0 +1,77 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +# general triclinic box for 2d sq2 lattice primitive cell + +dimension 2 + +lattice custom 1.1 a1 0.5 -0.5 0.0 a2 0.5 0.5 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 0.95346259 0.95346259 1.3483997 + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +Created triclinic box = (0 0 -0.67419986) to (0.95346259 0.95346259 0.67419986) with tilt (-1.110223e-16 0 0) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 -0.67419986) to (0.95346259 0.95346259 0.67419986) with tilt (-1.110223e-16 0 0) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.sq2.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.sq2.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 2 2 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/2d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.937 | 2.937 | 2.937 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 3.524488 0.67419986 -0.67419986 0.67419986 0.67419986 58.400021 58.400021 0.90909091 +Loop time of 8.38e-07 on 1 procs for 0 steps with 1 atoms + +119.3% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 8.38e-07 | | |100.00 + +Nlocal: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 15 ave 15 max 15 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 2 ave 2 max 2 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 2 +Ave neighs/atom = 2 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/triclinic/log.8Apr24.sq2.primitive.g++.4 b/examples/triclinic/log.8Apr24.sq2.primitive.g++.4 new file mode 100644 index 00000000000..1f2c758d659 --- /dev/null +++ b/examples/triclinic/log.8Apr24.sq2.primitive.g++.4 @@ -0,0 +1,78 @@ +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-442-gf1c2a22e2d) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:551) +# general triclinic box for 2d sq2 lattice primitive cell + +dimension 2 + +lattice custom 1.1 a1 0.5 -0.5 0.0 a2 0.5 0.5 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 triclinic/general +Lattice spacing in x,y,z = 0.95346259 0.95346259 1.3483997 + +create_box 1 NULL 0 1 0 1 -0.5 0.5 +Created triclinic box = (0 0 -0.67419986) to (0.95346259 0.95346259 0.67419986) with tilt (-1.110223e-16 0 0) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 1 atoms + using lattice units in triclinic box = (0 0 -0.67419986) to (0.95346259 0.95346259 0.67419986) with tilt (-1.110223e-16 0 0) + create_atoms CPU = 0.000 seconds + +mass * 1.0 + +write_data tmp.data.sq2.primitive triclinic/general +System init for write_data ... +WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (../comm_brick.cpp:210) + +pair_style lj/cut 1.1 +pair_coeff * * 1.0 1.0 + +neighbor 0.0 bin + +thermo_style custom step pe avecx avecy bvecx bvecy pxx pyy vol +thermo_modify triclinic/general yes + +dump 1 all custom 100 tmp.dump.sq2.primitive id type x y z +dump_modify 1 triclinic/general yes + +run 0 +WARNING: No fixes with time integration, atoms won't move (../verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.1 + ghost atom cutoff = 1.1 + binsize = 0.55, bins = 2 2 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton/tri + stencil: half/bin/2d/tri + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.953 | 2.953 | 2.953 Mbytes + Step PotEng Avecx Avecy Bvecx Bvecy Pxx Pyy Volume + 0 3.524488 0.67419986 -0.67419986 0.67419986 0.67419986 58.400021 58.400021 0.90909091 +Loop time of 1.91525e-06 on 4 procs for 0 steps with 1 atoms + +52.2% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.915e-06 | | |100.00 + +Nlocal: 0.25 ave 1 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 8.75 ave 9 max 8 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 0.5 ave 2 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 2 +Ave neighs/atom = 2 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/ttm/Si.ttm_mod b/examples/ttm/Si.ttm_mod index 6e047857ffc..ad407352e70 100644 --- a/examples/ttm/Si.ttm_mod +++ b/examples/ttm/Si.ttm_mod @@ -17,9 +17,9 @@ rho_e, electrons/volume units D_e, length^2/time units 20000 gamma_p, mass/time units -39.235 -gamma_s, mass/time units 24.443 +gamma_s, mass/time units +39.235 v_0, length/time units 79.76 I_0, energy/(time*length^2) units diff --git a/examples/ttm/log.18May23.ttm.mod.g++.1 b/examples/ttm/log.15Apr24.ttm.mod.g++.1 similarity index 66% rename from examples/ttm/log.18May23.ttm.mod.g++.1 rename to examples/ttm/log.15Apr24.ttm.mod.g++.1 index b97e8ab0ea5..4b4f88b2a2f 100644 --- a/examples/ttm/log.18May23.ttm.mod.g++.1 +++ b/examples/ttm/log.15Apr24.ttm.mod.g++.1 @@ -1,4 +1,5 @@ -LAMMPS (28 Mar 2023 - Development) +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-394-g03ab36a37d) + using 1 OpenMP thread(s) per MPI task units metal atom_style atomic boundary p p p @@ -13,7 +14,7 @@ mass 1 28.0855 create_atoms 1 box basis 1 1 basis 2 1 basis 3 1 basis 4 1 basis 5 1 basis 6 1 basis 7 1 basis 8 1 Created 8000 atoms using lattice units in orthogonal box = (0 0 0) to (54.309 54.309 54.309) - create_atoms CPU = 0.002 seconds + create_atoms CPU = 0.001 seconds pair_style sw pair_coeff * * Si.sw Si @@ -79,30 +80,30 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 4.433 | 4.433 | 4.433 Mbytes Step Temp TotEng f_twotemp[1] f_twotemp[2] 0 0 -34692.79996100604 -52.79390940511979 0 - 100 2.004897156140836 -34690.27961013186 -55.3499730543189 0.01301140393178352 - 200 2.837118035232607 -34687.74741132015 -57.93445748841876 0.02696025968760173 - 300 4.263087164947482 -34684.98084093686 -60.75945453846793 0.02175636603841567 - 400 5.568003854939066 -34682.25271040963 -63.56896518300499 0.03000618483472749 - 500 6.225602451570786 -34679.49948952029 -66.40897551884574 0.02768827702656703 - 600 7.608847536264781 -34676.69728436362 -69.32060611557282 0.05579466731854091 - 700 9.049471241531297 -34674.00093206036 -72.10055094219462 0.004335980559879032 - 800 9.826796099683211 -34671.27720242751 -74.95010610862134 0.02371649678091515 - 900 11.8609224958918 -34668.35091308811 -77.98544170794545 0.004658649791374908 - 1000 13.88037467640968 -34665.35025858006 -81.16445160194111 0.07684078334464743 -Loop time of 2.48942 on 1 procs for 1000 steps with 8000 atoms - -Performance: 3.471 ns/day, 6.915 hours/ns, 401.700 timesteps/s, 3.214 Matom-step/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 100 1.255921182965094 -34691.22889627319 -54.38067722556279 0.004868249873095404 + 200 1.858362347834853 -34689.5405389424 -56.09419523244324 0.01649190747838086 + 300 2.581575104085017 -34687.9650112138 -57.69350558275053 0.01683584513983131 + 400 3.47533128765632 -34686.2796683925 -59.40465113478642 0.005727647825729662 + 500 4.080137293185865 -34684.25857873315 -61.46449138661911 0.005828121949923951 + 600 4.816104423494803 -34682.51412688349 -63.25804498666959 0.02397283419020746 + 700 5.937291156573137 -34680.64941595491 -65.17152689673857 0.02604017750117964 + 800 6.487028971399661 -34678.87151939966 -66.99420300650799 0.009720189851817886 + 900 7.461479797687167 -34677.29259652842 -68.63442522233655 0.02576822683306545 + 1000 8.696444335455215 -34675.39247806347 -70.59264558122587 0.0147252863003017 +Loop time of 5.11497 on 1 procs for 1000 steps with 8000 atoms + +Performance: 1.689 ns/day, 14.208 hours/ns, 195.505 timesteps/s, 1.564 Matom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.126 | 2.126 | 2.126 | 0.0 | 85.40 +Pair | 4.3498 | 4.3498 | 4.3498 | 0.0 | 85.04 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.016147 | 0.016147 | 0.016147 | 0.0 | 0.65 -Output | 0.0013116 | 0.0013116 | 0.0013116 | 0.0 | 0.05 -Modify | 0.33864 | 0.33864 | 0.33864 | 0.0 | 13.60 -Other | | 0.007318 | | | 0.29 +Comm | 0.037981 | 0.037981 | 0.037981 | 0.0 | 0.74 +Output | 0.0025641 | 0.0025641 | 0.0025641 | 0.0 | 0.05 +Modify | 0.71279 | 0.71279 | 0.71279 | 0.0 | 13.94 +Other | | 0.01179 | | | 0.23 Nlocal: 8000 ave 8000 max 8000 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -117,4 +118,4 @@ Total # of neighbors = 272000 Ave neighs/atom = 34 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:02 +Total wall time: 0:00:05 diff --git a/examples/ttm/log.18May23.ttm.mod.g++.4 b/examples/ttm/log.15Apr24.ttm.mod.g++.4 similarity index 65% rename from examples/ttm/log.18May23.ttm.mod.g++.4 rename to examples/ttm/log.15Apr24.ttm.mod.g++.4 index ea675c85941..231a9af2c95 100644 --- a/examples/ttm/log.18May23.ttm.mod.g++.4 +++ b/examples/ttm/log.15Apr24.ttm.mod.g++.4 @@ -1,5 +1,5 @@ -LAMMPS (28 Mar 2023 - Development) -WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:531) +LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-394-g03ab36a37d) + using 1 OpenMP thread(s) per MPI task units metal atom_style atomic boundary p p p @@ -14,7 +14,7 @@ mass 1 28.0855 create_atoms 1 box basis 1 1 basis 2 1 basis 3 1 basis 4 1 basis 5 1 basis 6 1 basis 7 1 basis 8 1 Created 8000 atoms using lattice units in orthogonal box = (0 0 0) to (54.309 54.309 54.309) - create_atoms CPU = 0.001 seconds + create_atoms CPU = 0.002 seconds pair_style sw pair_coeff * * Si.sw Si @@ -80,30 +80,30 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 3.436 | 3.436 | 3.436 Mbytes Step Temp TotEng f_twotemp[1] f_twotemp[2] 0 0 -34692.79996100361 -52.79390940511979 0 - 100 1.852689977101411 -34690.49204900486 -55.14271612882064 0.02726188676577098 - 200 2.735750477179192 -34688.11139028054 -57.57110998717798 0.03387986355513584 - 300 3.931848271449558 -34685.54667417785 -60.18684521127231 0.02261256315262403 - 400 5.462009198576365 -34682.74455105668 -63.05420336037233 0.002402241637719578 - 500 6.267811692893873 -34679.96493887379 -65.93304222280051 0.02448378880218699 - 600 7.21148216150661 -34677.41455784726 -68.58391420045926 0.04114045759945374 - 700 8.84660534187052 -34674.40610468235 -71.68798344296859 0.02372984027434538 - 800 10.1748456457686 -34671.08749605772 -75.11943618276216 0.007538225788030307 - 900 11.27479036162859 -34668.4118066423 -77.92921692176756 0.02537529314475071 - 1000 13.26881394868076 -34665.56617589539 -80.91544540266317 0.03112665440209921 -Loop time of 0.995347 on 4 procs for 1000 steps with 8000 atoms - -Performance: 8.680 ns/day, 2.765 hours/ns, 1004.675 timesteps/s, 8.037 Matom-step/s -97.9% CPU use with 4 MPI tasks x no OpenMP threads + 100 1.20337355884597 -34691.30677367127 -54.30747356568817 0.01557346850238741 + 200 1.709631732825883 -34689.83859944795 -55.7982356998371 0.02508386983502213 + 300 2.488524478071323 -34688.26307995134 -57.3977272154369 0.02664346353990833 + 400 3.38535890366476 -34686.51395648598 -59.17547816947624 0.02164200191836632 + 500 3.838163353802383 -34684.79466673204 -60.92228950760077 0.005860499116196545 + 600 4.675913079756001 -34683.03448988724 -62.72423959707044 0.0106700119158327 + 700 5.637185532827328 -34681.25888274477 -64.5491928842093 0.01568536325219336 + 800 6.316986413957468 -34679.29231578312 -66.57005328290739 0.02035373879569394 + 900 7.211479047111087 -34677.61236020172 -68.30976417874265 0.03239086895076279 + 1000 8.431725106300505 -34675.81097854214 -70.161139196977 0.01219385884660358 +Loop time of 1.73439 on 4 procs for 1000 steps with 8000 atoms + +Performance: 4.982 ns/day, 4.818 hours/ns, 576.572 timesteps/s, 4.613 Matom-step/s +99.7% 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.65351 | 0.6616 | 0.66783 | 0.8 | 66.47 +Pair | 1.127 | 1.1392 | 1.1511 | 1.0 | 65.68 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.041606 | 0.048314 | 0.056589 | 2.9 | 4.85 -Output | 0.0014609 | 0.0014742 | 0.0014968 | 0.0 | 0.15 -Modify | 0.27934 | 0.28016 | 0.28089 | 0.1 | 28.15 -Other | | 0.003798 | | | 0.38 +Comm | 0.068488 | 0.082304 | 0.094797 | 4.1 | 4.75 +Output | 0.0024745 | 0.0025221 | 0.0025705 | 0.1 | 0.15 +Modify | 0.50194 | 0.50329 | 0.50522 | 0.2 | 29.02 +Other | | 0.007117 | | | 0.41 Nlocal: 2000 ave 2000 max 2000 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/voronoi/in.voronoi.2d b/examples/voronoi/in.voronoi.2d index 74bde73f1b5..25628bd19a5 100644 --- a/examples/voronoi/in.voronoi.2d +++ b/examples/voronoi/in.voronoi.2d @@ -7,46 +7,46 @@ variable len equal 4.0 variable lenz equal 10.0 dimension 2 -units metal -boundary p p p +units metal +boundary p p p #lattice sq 1.0 origin 0.5 0.5 0.0 lattice hex 1.0 origin 0.5 0.5 0.0 -atom_style atomic +atom_style atomic -region box block 0 ${len} 0 ${len} 0.0 ${lenz} +region box block 0 ${len} 0 ${len} -0.5 0.5 region atoms block 0 ${len} 0 ${len} 0.0 0.0 create_box 1 box create_atoms 1 region atoms -mass 1 1.0 +mass 1 1.0 pair_style lj/cut ${rcut} pair_coeff 1 1 0.0 1.0 -neighbor ${rskin} nsq +neighbor ${rskin} nsq # set the minimum communication cut-off comm_modify cutoff ${rcomm} -compute v1 all voronoi/atom neighbors yes -compute volvor all reduce sum c_v1[1] -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys -thermo_style custom c_volvor v_volsys vol v_err -thermo 1 +compute v1 all voronoi/atom neighbors yes +compute volvor all reduce sum c_v1[1] +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys +thermo_style custom c_volvor v_volsys vol v_err +thermo 1 # # TEST 1: Volume check for 2d bulk system # -run 0 +run 0 # # TEST 2: Volume check for 2d finite system # add margins in x and y directions # -change_box all boundary f f p -run 0 +change_box all boundary f f p +run 0 diff --git a/examples/voronoi/in.voronoi.data b/examples/voronoi/in.voronoi.data index e5d925c4982..cbcc530649e 100644 --- a/examples/voronoi/in.voronoi.data +++ b/examples/voronoi/in.voronoi.data @@ -4,24 +4,24 @@ variable len equal 4.0 variable lenz equal 10.0 dimension 2 -units metal -boundary f f p +units metal +boundary f f p lattice hex 1.0 origin 0.25 0.25 0.0 -atom_style atomic +atom_style atomic -region box block 0 ${len} 0 ${len} 0.0 ${lenz} +region box block 0 ${len} 0 ${len} -0.5 0.5 region atoms block 0 ${len} 0 ${len} 0.0 0.0 create_box 1 box create_atoms 1 region atoms -mass 1 1.0 +mass 1 1.0 pair_style lj/cut 2.5 pair_coeff 1 1 0.0 1.0 -neighbor 1.0 nsq +neighbor 1.0 nsq # # TEST 1: @@ -30,11 +30,11 @@ neighbor 1.0 nsq # This compute voronoi generates all three # types of quantity: per-atom, local, and global -compute v1 all voronoi/atom neighbors yes edge_histo 6 +compute v1 all voronoi/atom neighbors yes edge_histo 6 # write voronoi per-atom quantities to a file -dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] +dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] # writing voronoi local quantities to a file @@ -42,17 +42,17 @@ dump dlocal all local 1 dump.neighbors index c_v1[1] c_v1[2] c_v1[3] # sum up a voronoi per-atom quantity -compute volvor all reduce sum c_v1[1] +compute volvor all reduce sum c_v1[1] -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys # output voronoi global quantities -thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] -thermo 1 +thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] +thermo 1 -run 0 +run 0 uncompute v1 uncompute volvor @@ -65,7 +65,7 @@ undump dlocal # This compute voronoi generates peratom and local and global quantities -compute v2 all voronoi/atom neighbors yes edge_histo 6 +compute v2 all voronoi/atom neighbors yes edge_histo 6 # write voronoi local quantities to a file @@ -73,11 +73,11 @@ dump d2 all local 1 dump.neighbors2 index c_v2[1] c_v2[2] c_v2[3] # sum up a voronoi local quantity -compute sumarea all reduce sum c_v2[3] inputs local +compute sumarea all reduce sum c_v2[3] inputs local # output voronoi global quantities -thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] -thermo 1 +thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] +thermo 1 -run 0 +run 0 diff --git a/examples/voronoi/log.27Nov18.voronoi.data.g++.1 b/examples/voronoi/log.27Nov18.voronoi.data.g++.1 deleted file mode 100644 index 04bc629d87d..00000000000 --- a/examples/voronoi/log.27Nov18.voronoi.data.g++.1 +++ /dev/null @@ -1,170 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# Exercise different output data options - -variable len equal 4.0 -variable lenz equal 10.0 - -dimension 2 -units metal -boundary f f p - -lattice hex 1.0 origin 0.25 0.25 0.0 -Lattice spacing in x,y,z = 1 1.73205 1 - -atom_style atomic - -region box block 0 ${len} 0 ${len} 0.0 ${lenz} -region box block 0 4 0 ${len} 0.0 ${lenz} -region box block 0 4 0 4 0.0 ${lenz} -region box block 0 4 0 4 0.0 10 -region atoms block 0 ${len} 0 ${len} 0.0 0.0 -region atoms block 0 4 0 ${len} 0.0 0.0 -region atoms block 0 4 0 4 0.0 0.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (4 6.9282 10) - 1 by 1 by 1 MPI processor grid -create_atoms 1 region atoms -Created 32 atoms - Time spent = 0.000315666 secs - -mass 1 1.0 - -pair_style lj/cut 2.5 -pair_coeff 1 1 0.0 1.0 - -neighbor 1.0 nsq - -# -# TEST 1: -# - -# This compute voronoi generates all three -# types of quantity: per-atom, local, and global - -compute v1 all voronoi/atom neighbors yes edge_histo 6 - -# write voronoi per-atom quantities to a file - -dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] - -# writing voronoi local quantities to a file - -dump dlocal all local 1 dump.neighbors index c_v1[1] c_v1[2] c_v1[3] - -# sum up a voronoi per-atom quantity - -compute volvor all reduce sum c_v1[1] - -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys - -# output voronoi global quantities - -thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] -thermo 1 - -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.5 - ghost atom cutoff = 3.5 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/nsq/newton - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 10.04 | 10.04 | 10.04 Mbytes -c_volvor v_volsys Volume v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] - 277.12813 277.12813 27.712813 3.9790393e-13 0 186 12 36 0 -Loop time of 7.15256e-07 on 1 procs for 0 steps with 32 atoms - -0.0% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 7.153e-07 | | |100.00 - -Nlocal: 32 ave 32 max 32 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 0 ave 0 max 0 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 325 ave 325 max 325 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 325 -Ave neighs/atom = 10.1562 -Neighbor list builds = 0 -Dangerous builds = 0 - -uncompute v1 -uncompute volvor -undump dperatom -undump dlocal - -# -# TEST 2: -# - -# This compute voronoi generates -# local and global quantities, but -# not per-atom quantities - -compute v2 all voronoi/atom neighbors yes edge_histo 6 peratom no - -# write voronoi local quantities to a file - -dump d2 all local 1 dump.neighbors2 index c_v2[1] c_v2[2] c_v2[3] - -# sum up a voronoi local quantity - -compute sumarea all reduce sum c_v2[3] - -# output voronoi global quantities - -thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] -thermo 1 - -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) -Per MPI rank memory allocation (min/avg/max) = 8.787 | 8.787 | 8.787 Mbytes -c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] - 1215.0706 0 186 12 36 0 -Loop time of 7.15256e-07 on 1 procs for 0 steps with 32 atoms - -139.8% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 7.153e-07 | | |100.00 - -Nlocal: 32 ave 32 max 32 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 0 ave 0 max 0 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 325 ave 325 max 325 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 325 -Ave neighs/atom = 10.1562 -Neighbor list builds = 0 -Dangerous builds = 0 - - - -Total wall time: 0:00:00 diff --git a/examples/voronoi/log.27Nov18.voronoi.data.g++.4 b/examples/voronoi/log.27Nov18.voronoi.data.g++.4 deleted file mode 100644 index be028e4d2f1..00000000000 --- a/examples/voronoi/log.27Nov18.voronoi.data.g++.4 +++ /dev/null @@ -1,170 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# Exercise different output data options - -variable len equal 4.0 -variable lenz equal 10.0 - -dimension 2 -units metal -boundary f f p - -lattice hex 1.0 origin 0.25 0.25 0.0 -Lattice spacing in x,y,z = 1 1.73205 1 - -atom_style atomic - -region box block 0 ${len} 0 ${len} 0.0 ${lenz} -region box block 0 4 0 ${len} 0.0 ${lenz} -region box block 0 4 0 4 0.0 ${lenz} -region box block 0 4 0 4 0.0 10 -region atoms block 0 ${len} 0 ${len} 0.0 0.0 -region atoms block 0 4 0 ${len} 0.0 0.0 -region atoms block 0 4 0 4 0.0 0.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (4 6.9282 10) - 2 by 2 by 1 MPI processor grid -create_atoms 1 region atoms -Created 32 atoms - Time spent = 0.000311136 secs - -mass 1 1.0 - -pair_style lj/cut 2.5 -pair_coeff 1 1 0.0 1.0 - -neighbor 1.0 nsq - -# -# TEST 1: -# - -# This compute voronoi generates all three -# types of quantity: per-atom, local, and global - -compute v1 all voronoi/atom neighbors yes edge_histo 6 - -# write voronoi per-atom quantities to a file - -dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] - -# writing voronoi local quantities to a file - -dump dlocal all local 1 dump.neighbors index c_v1[1] c_v1[2] c_v1[3] - -# sum up a voronoi per-atom quantity - -compute volvor all reduce sum c_v1[1] - -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys - -# output voronoi global quantities - -thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] -thermo 1 - -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.5 - ghost atom cutoff = 3.5 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/nsq/newton - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 9.922 | 9.922 | 9.922 Mbytes -c_volvor v_volsys Volume v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] - 277.12813 277.12813 27.712813 3.4106051e-13 0 186 12 36 0 -Loop time of 1.40667e-05 on 4 procs for 0 steps with 32 atoms - -46.2% 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 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 1.407e-05 | | |100.00 - -Nlocal: 8 ave 8 max 8 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 24 ave 24 max 24 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Neighs: 81.25 ave 84 max 77 min -Histogram: 1 0 0 0 1 0 0 0 0 2 - -Total # of neighbors = 325 -Ave neighs/atom = 10.1562 -Neighbor list builds = 0 -Dangerous builds = 0 - -uncompute v1 -uncompute volvor -undump dperatom -undump dlocal - -# -# TEST 2: -# - -# This compute voronoi generates -# local and global quantities, but -# not per-atom quantities - -compute v2 all voronoi/atom neighbors yes edge_histo 6 peratom no - -# write voronoi local quantities to a file - -dump d2 all local 1 dump.neighbors2 index c_v2[1] c_v2[2] c_v2[3] - -# sum up a voronoi local quantity - -compute sumarea all reduce sum c_v2[3] - -# output voronoi global quantities - -thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] -thermo 1 - -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) -Per MPI rank memory allocation (min/avg/max) = 8.671 | 8.671 | 8.671 Mbytes -c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] - 1215.0706 0 186 12 36 0 -Loop time of 2.71797e-05 on 4 procs for 0 steps with 32 atoms - -57.9% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0 | 0 | 0 | 0.0 | 0.00 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0 | 0 | 0 | 0.0 | 0.00 -Output | 0 | 0 | 0 | 0.0 | 0.00 -Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 2.718e-05 | | |100.00 - -Nlocal: 8 ave 8 max 8 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 24 ave 24 max 24 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Neighs: 81.25 ave 84 max 77 min -Histogram: 1 0 0 0 1 0 0 0 0 2 - -Total # of neighbors = 325 -Ave neighs/atom = 10.1562 -Neighbor list builds = 0 -Dangerous builds = 0 - - - -Total wall time: 0:00:00 diff --git a/examples/voronoi/log.27Nov18.voronoi.2d.g++.1 b/examples/voronoi/log.6Dec23.voronoi.2d.g++.1 similarity index 53% rename from examples/voronoi/log.27Nov18.voronoi.2d.g++.1 rename to examples/voronoi/log.6Dec23.voronoi.2d.g++.1 index a591db8b4f6..0f1bc89bb99 100644 --- a/examples/voronoi/log.27Nov18.voronoi.2d.g++.1 +++ b/examples/voronoi/log.6Dec23.voronoi.2d.g++.1 @@ -1,4 +1,5 @@ -LAMMPS (27 Nov 2018) +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) using 1 OpenMP thread(s) per MPI task # Test volume definitions for 2d and finite systems @@ -9,57 +10,58 @@ variable len equal 4.0 variable lenz equal 10.0 dimension 2 -units metal -boundary p p p +units metal +boundary p p p #lattice sq 1.0 origin 0.5 0.5 0.0 lattice hex 1.0 origin 0.5 0.5 0.0 -Lattice spacing in x,y,z = 1 1.73205 1 +Lattice spacing in x,y,z = 1 1.7320508 1 -atom_style atomic +atom_style atomic -region box block 0 ${len} 0 ${len} 0.0 ${lenz} -region box block 0 4 0 ${len} 0.0 ${lenz} -region box block 0 4 0 4 0.0 ${lenz} -region box block 0 4 0 4 0.0 10 +region box block 0 ${len} 0 ${len} -0.5 0.5 +region box block 0 4 0 ${len} -0.5 0.5 +region box block 0 4 0 4 -0.5 0.5 region atoms block 0 ${len} 0 ${len} 0.0 0.0 region atoms block 0 4 0 ${len} 0.0 0.0 region atoms block 0 4 0 4 0.0 0.0 create_box 1 box -Created orthogonal box = (0 0 0) to (4 6.9282 10) +Created orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) 1 by 1 by 1 MPI processor grid create_atoms 1 region atoms Created 32 atoms - Time spent = 0.000315905 secs + using lattice units in orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + create_atoms CPU = 0.000 seconds -mass 1 1.0 +mass 1 1.0 pair_style lj/cut ${rcut} pair_style lj/cut 10 pair_coeff 1 1 0.0 1.0 -neighbor ${rskin} nsq -neighbor 2 nsq +neighbor ${rskin} nsq +neighbor 2 nsq # set the minimum communication cut-off comm_modify cutoff ${rcomm} comm_modify cutoff 20 -compute v1 all voronoi/atom neighbors yes -compute volvor all reduce sum c_v1[1] -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys -thermo_style custom c_volvor v_volsys vol v_err -thermo 1 +compute v1 all voronoi/atom neighbors yes +compute volvor all reduce sum c_v1[1] +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys +thermo_style custom c_volvor v_volsys vol v_err +thermo 1 # # TEST 1: Volume check for 2d bulk system # -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 12 ghost atom cutoff = 20 @@ -69,12 +71,12 @@ Neighbor list info ... pair build: half/nsq/newton stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 3.007 | 3.007 | 3.007 Mbytes -c_volvor v_volsys Volume v_err - 277.12813 277.12813 27.712813 5.6843419e-14 -Loop time of 9.53674e-07 on 1 procs for 0 steps with 32 atoms +Per MPI rank memory allocation (min/avg/max) = 3.008 | 3.008 | 3.008 Mbytes + c_volvor v_volsys Volume v_err + 27.712813 27.712813 27.712813 -3.5527137e-15 +Loop time of 6.33e-07 on 1 procs for 0 steps with 32 atoms -209.7% CPU use with 1 MPI tasks x 1 OpenMP threads +316.0% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total @@ -84,13 +86,13 @@ Neigh | 0 | 0 | 0 | 0.0 | 0.00 Comm | 0 | 0 | 0 | 0.0 | 0.00 Output | 0 | 0 | 0 | 0.0 | 0.00 Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 9.537e-07 | | |100.00 +Other | | 6.33e-07 | | |100.00 -Nlocal: 32 ave 32 max 32 min +Nlocal: 32 ave 32 max 32 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 2415 ave 2415 max 2415 min +Nghost: 2415 ave 2415 max 2415 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8256 ave 8256 max 8256 min +Neighs: 8256 ave 8256 max 8256 min Histogram: 1 0 0 0 0 0 0 0 0 0 Total # of neighbors = 8256 @@ -103,15 +105,17 @@ Dangerous builds = 0 # add margins in x and y directions # -change_box all boundary f f p -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) +change_box all boundary f f p +Changing box ... +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Per MPI rank memory allocation (min/avg/max) = 7.688 | 7.688 | 7.688 Mbytes -c_volvor v_volsys Volume v_err - 277.12813 277.12813 27.712813 3.4106051e-13 -Loop time of 4.76837e-07 on 1 procs for 0 steps with 32 atoms + c_volvor v_volsys Volume v_err + 27.712813 27.712813 27.712813 3.5527137e-14 +Loop time of 3.93e-07 on 1 procs for 0 steps with 32 atoms -209.7% CPU use with 1 MPI tasks x 1 OpenMP threads +254.5% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total @@ -121,13 +125,13 @@ Neigh | 0 | 0 | 0 | 0.0 | 0.00 Comm | 0 | 0 | 0 | 0.0 | 0.00 Output | 0 | 0 | 0 | 0.0 | 0.00 Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 4.768e-07 | | |100.00 +Other | | 3.93e-07 | | |100.00 -Nlocal: 32 ave 32 max 32 min +Nlocal: 32 ave 32 max 32 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 0 ave 0 max 0 min +Nghost: 0 ave 0 max 0 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 496 ave 496 max 496 min +Neighs: 496 ave 496 max 496 min Histogram: 1 0 0 0 0 0 0 0 0 0 Total # of neighbors = 496 diff --git a/examples/voronoi/log.27Nov18.voronoi.2d.g++.4 b/examples/voronoi/log.6Dec23.voronoi.2d.g++.4 similarity index 51% rename from examples/voronoi/log.27Nov18.voronoi.2d.g++.4 rename to examples/voronoi/log.6Dec23.voronoi.2d.g++.4 index 841f8dcb81d..f5a5052c4fd 100644 --- a/examples/voronoi/log.27Nov18.voronoi.2d.g++.4 +++ b/examples/voronoi/log.6Dec23.voronoi.2d.g++.4 @@ -1,4 +1,5 @@ -LAMMPS (27 Nov 2018) +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) using 1 OpenMP thread(s) per MPI task # Test volume definitions for 2d and finite systems @@ -9,57 +10,58 @@ variable len equal 4.0 variable lenz equal 10.0 dimension 2 -units metal -boundary p p p +units metal +boundary p p p #lattice sq 1.0 origin 0.5 0.5 0.0 lattice hex 1.0 origin 0.5 0.5 0.0 -Lattice spacing in x,y,z = 1 1.73205 1 +Lattice spacing in x,y,z = 1 1.7320508 1 -atom_style atomic +atom_style atomic -region box block 0 ${len} 0 ${len} 0.0 ${lenz} -region box block 0 4 0 ${len} 0.0 ${lenz} -region box block 0 4 0 4 0.0 ${lenz} -region box block 0 4 0 4 0.0 10 +region box block 0 ${len} 0 ${len} -0.5 0.5 +region box block 0 4 0 ${len} -0.5 0.5 +region box block 0 4 0 4 -0.5 0.5 region atoms block 0 ${len} 0 ${len} 0.0 0.0 region atoms block 0 4 0 ${len} 0.0 0.0 region atoms block 0 4 0 4 0.0 0.0 create_box 1 box -Created orthogonal box = (0 0 0) to (4 6.9282 10) +Created orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) 2 by 2 by 1 MPI processor grid create_atoms 1 region atoms Created 32 atoms - Time spent = 0.000319481 secs + using lattice units in orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + create_atoms CPU = 0.000 seconds -mass 1 1.0 +mass 1 1.0 pair_style lj/cut ${rcut} pair_style lj/cut 10 pair_coeff 1 1 0.0 1.0 -neighbor ${rskin} nsq -neighbor 2 nsq +neighbor ${rskin} nsq +neighbor 2 nsq # set the minimum communication cut-off comm_modify cutoff ${rcomm} comm_modify cutoff 20 -compute v1 all voronoi/atom neighbors yes -compute volvor all reduce sum c_v1[1] -variable volsys equal lz*lx*ly -variable err equal c_volvor-v_volsys -thermo_style custom c_volvor v_volsys vol v_err -thermo 1 +compute v1 all voronoi/atom neighbors yes +compute volvor all reduce sum c_v1[1] +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys +thermo_style custom c_volvor v_volsys vol v_err +thermo 1 # # TEST 1: Volume check for 2d bulk system # -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update every 1 steps, delay 10 steps, check yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 12 ghost atom cutoff = 20 @@ -69,12 +71,12 @@ Neighbor list info ... pair build: half/nsq/newton stencil: none bin: none -Per MPI rank memory allocation (min/avg/max) = 3.042 | 3.042 | 3.042 Mbytes -c_volvor v_volsys Volume v_err - 277.12813 277.12813 27.712813 5.1159077e-13 -Loop time of 2.79546e-05 on 4 procs for 0 steps with 32 atoms +Per MPI rank memory allocation (min/avg/max) = 3.038 | 3.038 | 3.038 Mbytes + c_volvor v_volsys Volume v_err + 27.712813 27.712813 27.712813 2.1316282e-14 +Loop time of 2.18725e-06 on 4 procs for 0 steps with 32 atoms -51.9% CPU use with 4 MPI tasks x 1 OpenMP threads +45.7% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total @@ -84,13 +86,13 @@ Neigh | 0 | 0 | 0 | 0.0 | 0.00 Comm | 0 | 0 | 0 | 0.0 | 0.00 Output | 0 | 0 | 0 | 0.0 | 0.00 Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 2.795e-05 | | |100.00 +Other | | 2.187e-06 | | |100.00 -Nlocal: 8 ave 8 max 8 min +Nlocal: 8 ave 8 max 8 min Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 2159 ave 2159 max 2159 min +Nghost: 2159 ave 2159 max 2159 min Histogram: 4 0 0 0 0 0 0 0 0 0 -Neighs: 2064 ave 2077 max 2051 min +Neighs: 2064 ave 2077 max 2051 min Histogram: 1 0 0 1 0 0 1 0 0 1 Total # of neighbors = 8256 @@ -103,15 +105,17 @@ Dangerous builds = 0 # add margins in x and y directions # -change_box all boundary f f p -run 0 -WARNING: No fixes defined, atoms won't move (src/verlet.cpp:55) -Per MPI rank memory allocation (min/avg/max) = 7.678 | 7.678 | 7.678 Mbytes -c_volvor v_volsys Volume v_err - 277.12813 277.12813 27.712813 3.4106051e-13 -Loop time of 1.88947e-05 on 4 procs for 0 steps with 32 atoms +change_box all boundary f f p +Changing box ... +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 7.671 | 7.671 | 7.671 Mbytes + c_volvor v_volsys Volume v_err + 27.712813 27.712813 27.712813 3.907985e-14 +Loop time of 2.22e-06 on 4 procs for 0 steps with 32 atoms -47.6% CPU use with 4 MPI tasks x 1 OpenMP threads +112.6% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total @@ -121,13 +125,13 @@ Neigh | 0 | 0 | 0 | 0.0 | 0.00 Comm | 0 | 0 | 0 | 0.0 | 0.00 Output | 0 | 0 | 0 | 0.0 | 0.00 Modify | 0 | 0 | 0 | 0.0 | 0.00 -Other | | 1.889e-05 | | |100.00 +Other | | 2.22e-06 | | |100.00 -Nlocal: 8 ave 8 max 8 min +Nlocal: 8 ave 8 max 8 min Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 24 ave 24 max 24 min +Nghost: 24 ave 24 max 24 min Histogram: 4 0 0 0 0 0 0 0 0 0 -Neighs: 124 ave 124 max 124 min +Neighs: 124 ave 124 max 124 min Histogram: 4 0 0 0 0 0 0 0 0 0 Total # of neighbors = 496 diff --git a/examples/voronoi/log.6Dec23.voronoi.data.g++.1 b/examples/voronoi/log.6Dec23.voronoi.data.g++.1 new file mode 100644 index 00000000000..b598b251dcb --- /dev/null +++ b/examples/voronoi/log.6Dec23.voronoi.data.g++.1 @@ -0,0 +1,168 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Exercise different output data options + +variable len equal 4.0 +variable lenz equal 10.0 + +dimension 2 +units metal +boundary f f p + +lattice hex 1.0 origin 0.25 0.25 0.0 +Lattice spacing in x,y,z = 1 1.7320508 1 + +atom_style atomic + +region box block 0 ${len} 0 ${len} -0.5 0.5 +region box block 0 4 0 ${len} -0.5 0.5 +region box block 0 4 0 4 -0.5 0.5 +region atoms block 0 ${len} 0 ${len} 0.0 0.0 +region atoms block 0 4 0 ${len} 0.0 0.0 +region atoms block 0 4 0 4 0.0 0.0 +create_box 1 box +Created orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region atoms +Created 32 atoms + using lattice units in orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + create_atoms CPU = 0.000 seconds + +mass 1 1.0 + +pair_style lj/cut 2.5 +pair_coeff 1 1 0.0 1.0 + +neighbor 1.0 nsq + +# +# TEST 1: +# + +# This compute voronoi generates all three +# types of quantity: per-atom, local, and global + +compute v1 all voronoi/atom neighbors yes edge_histo 6 + +# write voronoi per-atom quantities to a file + +dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] + +# writing voronoi local quantities to a file + +dump dlocal all local 1 dump.neighbors index c_v1[1] c_v1[2] c_v1[3] + +# sum up a voronoi per-atom quantity + +compute volvor all reduce sum c_v1[1] + +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys + +# output voronoi global quantities + +thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] +thermo 1 + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.5 + ghost atom cutoff = 3.5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/nsq/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 3.03 | 3.03 | 3.03 Mbytes + c_volvor v_volsys Volume v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] + 27.712813 27.712813 27.712813 3.1974423e-14 0 186 12 36 0 +Loop time of 7.96e-07 on 1 procs for 0 steps with 32 atoms + +125.6% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 7.96e-07 | | |100.00 + +Nlocal: 32 ave 32 max 32 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 325 ave 325 max 325 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 325 +Ave neighs/atom = 10.15625 +Neighbor list builds = 0 +Dangerous builds = 0 + +uncompute v1 +uncompute volvor +undump dperatom +undump dlocal + +# +# TEST 2: +# + +# This compute voronoi generates peratom and local and global quantities + +compute v2 all voronoi/atom neighbors yes edge_histo 6 + +# write voronoi local quantities to a file + +dump d2 all local 1 dump.neighbors2 index c_v2[1] c_v2[2] c_v2[3] + +# sum up a voronoi local quantity + +compute sumarea all reduce sum c_v2[3] inputs local + +# output voronoi global quantities + +thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] +thermo 1 + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 3.03 | 3.03 | 3.03 Mbytes + c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] + 171.39013 0 186 12 36 0 +Loop time of 3.74e-07 on 1 procs for 0 steps with 32 atoms + +0.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 3.74e-07 | | |100.00 + +Nlocal: 32 ave 32 max 32 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 325 ave 325 max 325 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 325 +Ave neighs/atom = 10.15625 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/voronoi/log.6Dec23.voronoi.data.g++.4 b/examples/voronoi/log.6Dec23.voronoi.data.g++.4 new file mode 100644 index 00000000000..dc0855c2c78 --- /dev/null +++ b/examples/voronoi/log.6Dec23.voronoi.data.g++.4 @@ -0,0 +1,168 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-132-g9edf553332) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +# Exercise different output data options + +variable len equal 4.0 +variable lenz equal 10.0 + +dimension 2 +units metal +boundary f f p + +lattice hex 1.0 origin 0.25 0.25 0.0 +Lattice spacing in x,y,z = 1 1.7320508 1 + +atom_style atomic + +region box block 0 ${len} 0 ${len} -0.5 0.5 +region box block 0 4 0 ${len} -0.5 0.5 +region box block 0 4 0 4 -0.5 0.5 +region atoms block 0 ${len} 0 ${len} 0.0 0.0 +region atoms block 0 4 0 ${len} 0.0 0.0 +region atoms block 0 4 0 4 0.0 0.0 +create_box 1 box +Created orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + 2 by 2 by 1 MPI processor grid +create_atoms 1 region atoms +Created 32 atoms + using lattice units in orthogonal box = (0 0 -0.5) to (4 6.9282032 0.5) + create_atoms CPU = 0.000 seconds + +mass 1 1.0 + +pair_style lj/cut 2.5 +pair_coeff 1 1 0.0 1.0 + +neighbor 1.0 nsq + +# +# TEST 1: +# + +# This compute voronoi generates all three +# types of quantity: per-atom, local, and global + +compute v1 all voronoi/atom neighbors yes edge_histo 6 + +# write voronoi per-atom quantities to a file + +dump dperatom all custom 1 dump.voro id type x y z c_v1[1] c_v1[2] + +# writing voronoi local quantities to a file + +dump dlocal all local 1 dump.neighbors index c_v1[1] c_v1[2] c_v1[3] + +# sum up a voronoi per-atom quantity + +compute volvor all reduce sum c_v1[1] + +variable volsys equal lz*lx*ly +variable err equal c_volvor-v_volsys + +# output voronoi global quantities + +thermo_style custom c_volvor v_volsys vol v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] +thermo 1 + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.5 + ghost atom cutoff = 3.5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/nsq/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 2.921 | 2.921 | 2.921 Mbytes + c_volvor v_volsys Volume v_err c_v1[3] c_v1[4] c_v1[5] c_v1[6] c_v1[7] + 27.712813 27.712813 27.712813 3.907985e-14 0 186 12 36 0 +Loop time of 2.21425e-06 on 4 procs for 0 steps with 32 atoms + +45.2% 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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 2.214e-06 | | |100.00 + +Nlocal: 8 ave 8 max 8 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 24 ave 24 max 24 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 81.25 ave 84 max 77 min +Histogram: 1 0 0 0 1 0 0 0 0 2 + +Total # of neighbors = 325 +Ave neighs/atom = 10.15625 +Neighbor list builds = 0 +Dangerous builds = 0 + +uncompute v1 +uncompute volvor +undump dperatom +undump dlocal + +# +# TEST 2: +# + +# This compute voronoi generates peratom and local and global quantities + +compute v2 all voronoi/atom neighbors yes edge_histo 6 + +# write voronoi local quantities to a file + +dump d2 all local 1 dump.neighbors2 index c_v2[1] c_v2[2] c_v2[3] + +# sum up a voronoi local quantity + +compute sumarea all reduce sum c_v2[3] inputs local + +# output voronoi global quantities + +thermo_style custom c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] +thermo 1 + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 2.921 | 2.921 | 2.921 Mbytes + c_sumarea c_v2[3] c_v2[4] c_v2[5] c_v2[6] c_v2[7] + 171.39013 0 186 12 36 0 +Loop time of 1.82375e-06 on 4 procs for 0 steps with 32 atoms + +82.2% 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 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.824e-06 | | |100.00 + +Nlocal: 8 ave 8 max 8 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 24 ave 24 max 24 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 81.25 ave 84 max 77 min +Histogram: 1 0 0 0 1 0 0 0 0 2 + +Total # of neighbors = 325 +Ave neighs/atom = 10.15625 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/wall/in.wall.flow b/examples/wall/in.wall.flow new file mode 100644 index 00000000000..9dfe001a55a --- /dev/null +++ b/examples/wall/in.wall.flow @@ -0,0 +1,79 @@ +variable nrun equal 1000 +variable dump_count equal 10 + +variable nwall equal 4 +variable w1 equal 67 +variable w2 equal 71 +variable w3 equal 75 +variable w4 equal 79 + +variable x_cylinder equal 20 +variable y_cylinder equal 17 +variable r_cylinder equal 4 + +variable MASS equal 1 +variable TEMP equal 0.4 +variable VFLOW equal 0.5 + +units lj +atom_style atomic + +lattice fcc 0.3 +region sim_box block 0 84 0 34 0 10 + +boundary p p p + +create_box 2 sim_box +region reg_cylinder cylinder z ${x_cylinder} ${y_cylinder} ${r_cylinder} EDGE EDGE + +create_atoms 1 box + +## setup obstacle ## +group g_obst region reg_cylinder +group g_flow subtract all g_obst +set group g_obst type 2 + +mass 1 ${MASS} +mass 2 ${MASS} + +velocity g_flow create ${TEMP} 4928459 rot yes dist gaussian +velocity g_obst set 0.0 0.0 0.0 + +pair_style lj/cut 1.122462 +pair_coeff 1 1 1.0 1.0 +pair_coeff 1 2 1.0 1.0 +pair_coeff 2 2 1.0 1.0 +pair_modify shift yes + +neighbor 0.3 bin +neigh_modify delay 0 every 20 check no + +fix 1 g_flow nve +fix 2 g_flow wall/flow x ${VFLOW} ${TEMP} 123 ${nwall} ${w1} ${w2} ${w3} ${w4} + +variable dump_every equal ${nrun}/${dump_count} +variable thermo_every equal ${dump_every} +variable restart_every equal ${nrun}/10 + +##### uncomment for grid aggregation ##### +#variable gr_Nx equal 42 +#variable gr_Ny equal 17 +#variable gr_Nz equal 1 +#variable gr_Nevery equal ${dump_every} +#variable gr_Nrepeat equal 1 +#variable gr_Nfreq equal ${dump_every} +#fix 3 g_flow ave/grid ${gr_Nevery} ${gr_Nrepeat} ${gr_Nfreq} ${gr_Nx} ${gr_Ny} ${gr_Nz} vx vy vz density/mass norm all ave one +#compute ct_gridId g_flow property/grid ${gr_Nx} ${gr_Ny} ${gr_Nz} id +#dump dmp_grid g_flow grid ${dump_every} grid.lammpstrj c_ct_gridId:grid:data f_3:grid:data[*] +########################################## + +#dump dmp_coord all atom ${dump_every} dump.lammpstrj + +#compute ct_Temp g_flow temp/com +#thermo_style custom step temp epair emol etotal press c_ct_Temp + +#restart ${restart_every} flow.restart + +timestep 0.005 +thermo ${thermo_every} +run ${nrun} diff --git a/examples/wall/log.7Feb24.wall.flow.g++.1 b/examples/wall/log.7Feb24.wall.flow.g++.1 new file mode 100644 index 00000000000..75e8b66fe1c --- /dev/null +++ b/examples/wall/log.7Feb24.wall.flow.g++.1 @@ -0,0 +1,182 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-758-ge33590b2fc-modified) + using 1 OpenMP thread(s) per MPI task +variable nrun equal 1000 +variable dump_count equal 10 + +variable nwall equal 4 +variable w1 equal 67 +variable w2 equal 71 +variable w3 equal 75 +variable w4 equal 79 + +variable x_cylinder equal 20 +variable y_cylinder equal 17 +variable r_cylinder equal 4 + +variable MASS equal 1 +variable TEMP equal 0.4 +variable VFLOW equal 0.5 + +units lj +atom_style atomic + +lattice fcc 0.3 +Lattice spacing in x,y,z = 2.3712622 2.3712622 2.3712622 +region sim_box block 0 84 0 34 0 10 + +boundary p p p + +create_box 2 sim_box +Created orthogonal box = (0 0 0) to (199.18603 80.622915 23.712622) + 1 by 1 by 1 MPI processor grid +region reg_cylinder cylinder z ${x_cylinder} ${y_cylinder} ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 ${y_cylinder} ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 17 ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 17 4 EDGE EDGE + +create_atoms 1 box +Created 114240 atoms + using lattice units in orthogonal box = (0 0 0) to (199.18603 80.622915 23.712622) + create_atoms CPU = 0.010 seconds + +## setup obstacle ## +group g_obst region reg_cylinder +1950 atoms in group g_obst +group g_flow subtract all g_obst +112290 atoms in group g_flow +set group g_obst type 2 +Setting atom values ... + 1950 settings made for type + +mass 1 ${MASS} +mass 1 1 +mass 2 ${MASS} +mass 2 1 + +velocity g_flow create ${TEMP} 4928459 rot yes dist gaussian +velocity g_flow create 0.4 4928459 rot yes dist gaussian +velocity g_obst set 0.0 0.0 0.0 + +pair_style lj/cut 1.122462 +pair_coeff 1 1 1.0 1.0 +pair_coeff 1 2 1.0 1.0 +pair_coeff 2 2 1.0 1.0 +pair_modify shift yes + +neighbor 0.3 bin +neigh_modify delay 0 every 20 check no + +fix 1 g_flow nve +fix 2 g_flow wall/flow x ${VFLOW} ${TEMP} 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 ${TEMP} 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 75 ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 75 79 + +variable dump_every equal ${nrun}/${dump_count} +variable dump_every equal 1000/${dump_count} +variable dump_every equal 1000/10 +variable thermo_every equal ${dump_every} +variable thermo_every equal 100 +variable restart_every equal ${nrun}/10 +variable restart_every equal 1000/10 + +##### uncomment for grid aggregation ##### +#variable gr_Nx equal 42 +#variable gr_Ny equal 17 +#variable gr_Nz equal 1 +#variable gr_Nevery equal ${dump_every} +#variable gr_Nrepeat equal 1 +#variable gr_Nfreq equal ${dump_every} +#fix 3 g_flow ave/grid ${gr_Nevery} ${gr_Nrepeat} ${gr_Nfreq} ${gr_Nx} ${gr_Ny} ${gr_Nz} vx vy vz density/mass norm all ave one +#compute ct_gridId g_flow property/grid ${gr_Nx} ${gr_Ny} ${gr_Nz} id +#dump dmp_grid g_flow grid ${dump_every} grid.lammpstrj c_ct_gridId:grid:data f_3:grid:data[*] +########################################## + +#dump dmp_coord all atom ${dump_every} dump.lammpstrj + +#compute ct_Temp g_flow temp/com +#thermo_style custom step temp epair emol etotal press c_ct_Temp + +#restart ${restart_every} flow.restart + +timestep 0.005 +thermo ${thermo_every} +thermo 100 +run ${nrun} +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix wall/flow command: doi:10.1177/10943420231213013 + +@Article{Pavlov-etal-IJHPCA-2024, + author = {Daniil Pavlov and Vladislav Galigerov and Daniil Kolotinskii and Vsevolod Nikolskiy and Vladimir Stegailov}, + title = {GPU-based molecular dynamics of fluid flows: Reaching for turbulence}, + journal = {The International Journal of High Performance Computing Applications}, + year = 2024, + volume = 38, + number = 1, + pages = 34-49 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.422462 + ghost atom cutoff = 1.422462 + binsize = 0.711231, bins = 281 114 34 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 26.69 | 26.69 | 26.69 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.39317221 0 0 0.58975315 0.11795063 + 100 0.3671684 0.045118445 0 0.59586622 0.27378331 + 200 0.3732041 0.036897471 0 0.59669873 0.24917809 + 300 0.37432305 0.036501844 0 0.5979815 0.24715194 + 400 0.37603886 0.035350565 0 0.59940392 0.24480762 + 500 0.37617142 0.036949771 0 0.60120196 0.24862985 + 600 0.37751983 0.036484268 0 0.60275905 0.24784635 + 700 0.37787831 0.037327783 0 0.60414029 0.25060427 + 800 0.37959242 0.036206184 0 0.60558983 0.2476903 + 900 0.38019033 0.036874395 0 0.6071549 0.24984211 + 1000 0.38070666 0.037068948 0 0.60812395 0.25041936 +Loop time of 5.61598 on 1 procs for 1000 steps with 114240 atoms + +Performance: 76923.319 tau/day, 178.063 timesteps/s, 20.342 Matom-step/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.6351 | 2.6351 | 2.6351 | 0.0 | 46.92 +Neigh | 1.2994 | 1.2994 | 1.2994 | 0.0 | 23.14 +Comm | 0.26576 | 0.26576 | 0.26576 | 0.0 | 4.73 +Output | 0.0030531 | 0.0030531 | 0.0030531 | 0.0 | 0.05 +Modify | 1.3019 | 1.3019 | 1.3019 | 0.0 | 23.18 +Other | | 0.1107 | | | 1.97 + +Nlocal: 114240 ave 114240 max 114240 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 20119 ave 20119 max 20119 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 164018 ave 164018 max 164018 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 164018 +Ave neighs/atom = 1.4357318 +Neighbor list builds = 50 +Dangerous builds not checked +Total wall time: 0:00:05 diff --git a/examples/wall/log.7Feb24.wall.flow.g++.4 b/examples/wall/log.7Feb24.wall.flow.g++.4 new file mode 100644 index 00000000000..1efe7bb28ed --- /dev/null +++ b/examples/wall/log.7Feb24.wall.flow.g++.4 @@ -0,0 +1,182 @@ +LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-758-ge33590b2fc-modified) + using 1 OpenMP thread(s) per MPI task +variable nrun equal 1000 +variable dump_count equal 10 + +variable nwall equal 4 +variable w1 equal 67 +variable w2 equal 71 +variable w3 equal 75 +variable w4 equal 79 + +variable x_cylinder equal 20 +variable y_cylinder equal 17 +variable r_cylinder equal 4 + +variable MASS equal 1 +variable TEMP equal 0.4 +variable VFLOW equal 0.5 + +units lj +atom_style atomic + +lattice fcc 0.3 +Lattice spacing in x,y,z = 2.3712622 2.3712622 2.3712622 +region sim_box block 0 84 0 34 0 10 + +boundary p p p + +create_box 2 sim_box +Created orthogonal box = (0 0 0) to (199.18603 80.622915 23.712622) + 4 by 1 by 1 MPI processor grid +region reg_cylinder cylinder z ${x_cylinder} ${y_cylinder} ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 ${y_cylinder} ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 17 ${r_cylinder} EDGE EDGE +region reg_cylinder cylinder z 20 17 4 EDGE EDGE + +create_atoms 1 box +Created 114240 atoms + using lattice units in orthogonal box = (0 0 0) to (199.18603 80.622915 23.712622) + create_atoms CPU = 0.003 seconds + +## setup obstacle ## +group g_obst region reg_cylinder +1950 atoms in group g_obst +group g_flow subtract all g_obst +112290 atoms in group g_flow +set group g_obst type 2 +Setting atom values ... + 1950 settings made for type + +mass 1 ${MASS} +mass 1 1 +mass 2 ${MASS} +mass 2 1 + +velocity g_flow create ${TEMP} 4928459 rot yes dist gaussian +velocity g_flow create 0.4 4928459 rot yes dist gaussian +velocity g_obst set 0.0 0.0 0.0 + +pair_style lj/cut 1.122462 +pair_coeff 1 1 1.0 1.0 +pair_coeff 1 2 1.0 1.0 +pair_coeff 2 2 1.0 1.0 +pair_modify shift yes + +neighbor 0.3 bin +neigh_modify delay 0 every 20 check no + +fix 1 g_flow nve +fix 2 g_flow wall/flow x ${VFLOW} ${TEMP} 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 ${TEMP} 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 ${nwall} ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 ${w1} ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 ${w2} ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 ${w3} ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 75 ${w4} +fix 2 g_flow wall/flow x 0.5 0.4 123 4 67 71 75 79 + +variable dump_every equal ${nrun}/${dump_count} +variable dump_every equal 1000/${dump_count} +variable dump_every equal 1000/10 +variable thermo_every equal ${dump_every} +variable thermo_every equal 100 +variable restart_every equal ${nrun}/10 +variable restart_every equal 1000/10 + +##### uncomment for grid aggregation ##### +#variable gr_Nx equal 42 +#variable gr_Ny equal 17 +#variable gr_Nz equal 1 +#variable gr_Nevery equal ${dump_every} +#variable gr_Nrepeat equal 1 +#variable gr_Nfreq equal ${dump_every} +#fix 3 g_flow ave/grid ${gr_Nevery} ${gr_Nrepeat} ${gr_Nfreq} ${gr_Nx} ${gr_Ny} ${gr_Nz} vx vy vz density/mass norm all ave one +#compute ct_gridId g_flow property/grid ${gr_Nx} ${gr_Ny} ${gr_Nz} id +#dump dmp_grid g_flow grid ${dump_every} grid.lammpstrj c_ct_gridId:grid:data f_3:grid:data[*] +########################################## + +#dump dmp_coord all atom ${dump_every} dump.lammpstrj + +#compute ct_Temp g_flow temp/com +#thermo_style custom step temp epair emol etotal press c_ct_Temp + +#restart ${restart_every} flow.restart + +timestep 0.005 +thermo ${thermo_every} +thermo 100 +run ${nrun} +run 1000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- fix wall/flow command: doi:10.1177/10943420231213013 + +@Article{Pavlov-etal-IJHPCA-2024, + author = {Daniil Pavlov and Vladislav Galigerov and Daniil Kolotinskii and Vsevolod Nikolskiy and Vladimir Stegailov}, + title = {GPU-based molecular dynamics of fluid flows: Reaching for turbulence}, + journal = {The International Journal of High Performance Computing Applications}, + year = 2024, + volume = 38, + number = 1, + pages = 34-49 +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.422462 + ghost atom cutoff = 1.422462 + binsize = 0.711231, bins = 281 114 34 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 8.496 | 8.496 | 8.496 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 0.39317221 0 0 0.58975315 0.11795063 + 100 0.36726398 0.045386014 0 0.59627716 0.27402111 + 200 0.37384538 0.036574547 0 0.5973377 0.24836729 + 300 0.37487455 0.036519645 0 0.59882654 0.24691726 + 400 0.37591417 0.036405755 0 0.60027207 0.24700641 + 500 0.37654714 0.037008829 0 0.60182459 0.24883444 + 600 0.3778008 0.03663706 0 0.6033333 0.24874392 + 700 0.37851338 0.036714175 0 0.60447928 0.24881829 + 800 0.37984876 0.036237049 0 0.6060052 0.24843003 + 900 0.38022763 0.036847615 0 0.60718407 0.24987198 + 1000 0.38084717 0.037139994 0 0.60840575 0.25070072 +Loop time of 2.20347 on 4 procs for 1000 steps with 114240 atoms + +Performance: 196054.093 tau/day, 453.829 timesteps/s, 51.845 Matom-step/s +95.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.67927 | 0.70882 | 0.73473 | 2.4 | 32.17 +Neigh | 0.32928 | 0.34467 | 0.36084 | 2.0 | 15.64 +Comm | 0.3211 | 0.36609 | 0.40741 | 6.1 | 16.61 +Output | 0.0017748 | 0.0032465 | 0.0046508 | 2.1 | 0.15 +Modify | 0.71135 | 0.74424 | 0.76001 | 2.3 | 33.78 +Other | | 0.03641 | | | 1.65 + +Nlocal: 28560 ave 29169 max 27884 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Nghost: 6452.25 ave 6546 max 6368 min +Histogram: 1 0 0 0 2 0 0 0 0 1 +Neighs: 40893 ave 42032 max 39445 min +Histogram: 1 0 0 0 1 0 0 1 0 1 + +Total # of neighbors = 163572 +Ave neighs/atom = 1.4318277 +Neighbor list builds = 50 +Dangerous builds not checked +Total wall time: 0:00:02 diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index 28e40bca443..c297bad2efe 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -118,6 +118,8 @@ MODULE LIBLAMMPS PROCEDURE :: extract_fix => lmp_extract_fix PROCEDURE :: extract_variable => lmp_extract_variable PROCEDURE :: set_variable => lmp_set_variable + PROCEDURE :: set_string_variable => lmp_set_string_variable + PROCEDURE :: set_internal_variable => lmp_set_internal_variable PROCEDURE, PRIVATE :: lmp_gather_atoms_int PROCEDURE, PRIVATE :: lmp_gather_atoms_double GENERIC :: gather_atoms => lmp_gather_atoms_int, & @@ -557,6 +559,21 @@ FUNCTION lammps_set_variable(handle, name, str) BIND(C) INTEGER(c_int) :: lammps_set_variable END FUNCTION lammps_set_variable + FUNCTION lammps_set_string_variable(handle, name, str) BIND(C) + IMPORT :: c_int, c_ptr + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name, str + INTEGER(c_int) :: lammps_set_string_variable + END FUNCTION lammps_set_string_variable + + FUNCTION lammps_set_internal_variable(handle, name, val) BIND(C) + IMPORT :: c_int, c_ptr, c_double + IMPLICIT NONE + TYPE(c_ptr), VALUE :: handle, name + REAL(c_double), VALUE :: val + INTEGER(c_int) :: lammps_set_internal_variable + END FUNCTION lammps_set_internal_variable + SUBROUTINE lammps_gather_atoms(handle, name, type, count, data) BIND(C) IMPORT :: c_int, c_ptr IMPLICIT NONE @@ -1631,6 +1648,43 @@ SUBROUTINE lmp_set_variable(self, name, str) END IF END SUBROUTINE lmp_set_variable + ! equivalent function to lammps_set_string_variable + SUBROUTINE lmp_set_string_variable(self, name, str) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name, str + INTEGER :: err + TYPE(c_ptr) :: Cstr, Cname + + Cstr = f2c_string(str) + Cname = f2c_string(name) + err = lammps_set_string_variable(self%handle, Cname, Cstr) + CALL lammps_free(Cname) + CALL lammps_free(Cstr) + IF (err /= 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'WARNING: unable to set string variable "' // name & + // '" [Fortran/set_variable]') + END IF + END SUBROUTINE lmp_set_string_variable + + ! equivalent function to lammps_set_internal_variable + SUBROUTINE lmp_set_internal_variable(self, name, val) + CLASS(lammps), INTENT(IN) :: self + CHARACTER(LEN=*), INTENT(IN) :: name + REAL(KIND=c_double), INTENT(IN) :: val + INTEGER :: err + TYPE(c_ptr) :: Cname + + Cname = f2c_string(name) + err = lammps_set_internal_variable(self%handle, Cname, val) + CALL lammps_free(Cname) + IF (err /= 0) THEN + CALL lmp_error(self, LMP_ERROR_WARNING + LMP_ERROR_WORLD, & + 'WARNING: unable to set internal variable "' // name & + // '" [Fortran/set_variable]') + END IF + END SUBROUTINE lmp_set_internal_variable + ! equivalent function to lammps_gather_atoms (for integers) SUBROUTINE lmp_gather_atoms_int(self, name, count, data) CLASS(lammps), INTENT(IN) :: self @@ -3633,7 +3687,7 @@ FUNCTION f2c_string(f_string) RESULT(ptr) n = LEN_TRIM(f_string) ptr = lammps_malloc(n+1) - CALL C_F_POINTER(ptr, c_string, [1]) + CALL C_F_POINTER(ptr, c_string, [n+1]) DO i=1, n c_string(i) = f_string(i:i) END DO diff --git a/lib/gpu/Makefile.cuda b/lib/gpu/Makefile.cuda index be8003e02e5..75428c9513f 100644 --- a/lib/gpu/Makefile.cuda +++ b/lib/gpu/Makefile.cuda @@ -134,11 +134,11 @@ $(OBJ_DIR)/scan_app.cu_o: cudpp_mini/scan_app.cu $(GPU_LIB): $(OBJS) $(CUDPP) $(AR) -crusv $(GPU_LIB) $(OBJS) $(CUDPP) @cp $(EXTRAMAKE) Makefile.lammps - + # test app for querying device info $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H) - $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda + $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda clean: -rm -f $(EXECS) $(GPU_LIB) $(OBJS) $(CUDPP) $(CUHS) *.linkinfo diff --git a/lib/gpu/Makefile.cuda_mps b/lib/gpu/Makefile.cuda_mps index 06d2ef03396..22a34c105c0 100644 --- a/lib/gpu/Makefile.cuda_mps +++ b/lib/gpu/Makefile.cuda_mps @@ -133,11 +133,11 @@ $(OBJ_DIR)/scan_app.cu_o: cudpp_mini/scan_app.cu $(GPU_LIB): $(OBJS) $(CUDPP) $(AR) -crusv $(GPU_LIB) $(OBJS) $(CUDPP) @cp $(EXTRAMAKE) Makefile.lammps - + # test app for querying device info $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H) - $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda + $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda clean: -rm -f $(EXECS) $(GPU_LIB) $(OBJS) $(CUDPP) $(CUHS) *.linkinfo diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip index f5a0d036081..0350c841c48 100644 --- a/lib/gpu/Makefile.hip +++ b/lib/gpu/Makefile.hip @@ -98,10 +98,10 @@ HIP_GPU_OPTS += $(HIP_OPTS) -I./ ifeq (spirv,$(HIP_PLATFORM)) HIP_HOST_OPTS += -fPIC HIP_GPU_CC = $(HIP_PATH)/bin/hipcc -c - HIP_GPU_OPTS_S = + HIP_GPU_OPTS_S = HIP_GPU_OPTS_E = HIP_KERNEL_SUFFIX = .cpp - HIP_LIBS_TARGET = + HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH) else ifeq (clang,$(HIP_COMPILER)) HIP_HOST_OPTS += -fPIC diff --git a/lib/gpu/Makefile.lammps.mac_ocl b/lib/gpu/Makefile.lammps.mac_ocl index 0073efa2ba9..dbbd789464b 100644 --- a/lib/gpu/Makefile.lammps.mac_ocl +++ b/lib/gpu/Makefile.lammps.mac_ocl @@ -2,4 +2,4 @@ gpu_SYSINC = -DFFT_SINGLE gpu_SYSLIB = -framework OpenCL -gpu_SYSPATH = +gpu_SYSPATH = diff --git a/lib/gpu/Makefile.lammps.mingw-cross b/lib/gpu/Makefile.lammps.mingw-cross deleted file mode 100644 index 12d833c744b..00000000000 --- a/lib/gpu/Makefile.lammps.mingw-cross +++ /dev/null @@ -1,6 +0,0 @@ -# Settings that the LAMMPS build will import when this package library is used -# settings for OpenCL builds -gpu_SYSINC = -gpu_SYSLIB = -Wl,--enable-stdcall-fixup -L../../tools/mingw-cross$(LIBOBJDIR) -Wl,-Bdynamic,-lOpenCL,-Bstatic -gpu_SYSPATH = - diff --git a/lib/gpu/Makefile.lammps.opencl b/lib/gpu/Makefile.lammps.opencl index 413ae792109..50f5e63f777 100644 --- a/lib/gpu/Makefile.lammps.opencl +++ b/lib/gpu/Makefile.lammps.opencl @@ -2,4 +2,4 @@ gpu_SYSINC = gpu_SYSLIB = -lOpenCL -gpu_SYSPATH = +gpu_SYSPATH = diff --git a/lib/gpu/Makefile.linux b/lib/gpu/Makefile.linux index 3c37672e011..e02413f3ba7 100644 --- a/lib/gpu/Makefile.linux +++ b/lib/gpu/Makefile.linux @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Linux Makefile for CUDA # - Change CUDA_ARCH for your GPU # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.linux_multi b/lib/gpu/Makefile.linux_multi index 005f6590794..e3a76d99342 100644 --- a/lib/gpu/Makefile.linux_multi +++ b/lib/gpu/Makefile.linux_multi @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Linux Makefile for CUDA complied for multiple compute capabilities # - Add your GPU to CUDA_CODE # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.linux_opencl b/lib/gpu/Makefile.linux_opencl index 43d012dc4ad..b4b25544ee8 100644 --- a/lib/gpu/Makefile.linux_opencl +++ b/lib/gpu/Makefile.linux_opencl @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Linux Makefile for OpenCL - Mixed precision # ------------------------------------------------------------------------- */ @@ -11,7 +11,7 @@ EXTRAMAKE = Makefile.lammps.opencl LMP_INC = -DLAMMPS_SMALLBIG -OCL_INC = +OCL_INC = OCL_CPP = mpic++ -std=c++11 -O3 -DMPICH_IGNORE_CXX_SEEK $(LMP_INC) $(OCL_INC) OCL_LINK = -lOpenCL OCL_PREC = -D_SINGLE_DOUBLE diff --git a/lib/gpu/Makefile.mac_opencl b/lib/gpu/Makefile.mac_opencl index ae7e8ca6fdd..3a9fd39f35e 100644 --- a/lib/gpu/Makefile.mac_opencl +++ b/lib/gpu/Makefile.mac_opencl @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Mac Makefile for OpenCL - Single precision with FFT_SINGLE # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.mac_opencl_mpi b/lib/gpu/Makefile.mac_opencl_mpi index 9be9f07e935..b0c6e39aae7 100644 --- a/lib/gpu/Makefile.mac_opencl_mpi +++ b/lib/gpu/Makefile.mac_opencl_mpi @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Mac Makefile for OpenCL - Single precision with FFT_SINGLE # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.oneapi b/lib/gpu/Makefile.oneapi index 32800676aac..e67f4bb0822 100644 --- a/lib/gpu/Makefile.oneapi +++ b/lib/gpu/Makefile.oneapi @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Linux Makefile for Intel oneAPI - Mixed precision # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.oneapi_prof b/lib/gpu/Makefile.oneapi_prof index 1e215973733..58a03392e28 100644 --- a/lib/gpu/Makefile.oneapi_prof +++ b/lib/gpu/Makefile.oneapi_prof @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Linux Makefile for Intel oneAPI - Mixed precision (with timing enabled) # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Makefile.serial b/lib/gpu/Makefile.serial index 6c94911f327..67d2ce927db 100644 --- a/lib/gpu/Makefile.serial +++ b/lib/gpu/Makefile.serial @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Linux Makefile for CUDA without MPI libraries # - Change CUDA_ARCH for your GPU # ------------------------------------------------------------------------- */ diff --git a/lib/gpu/Nvidia.makefile b/lib/gpu/Nvidia.makefile index 298d4041174..d351b87b372 100644 --- a/lib/gpu/Nvidia.makefile +++ b/lib/gpu/Nvidia.makefile @@ -11,7 +11,7 @@ HOST_H = lal_answer.h lal_atom.h lal_balance.h lal_base_atomic.h lal_base_amoeba lal_base_charge.h lal_base_dipole.h lal_base_dpd.h \ lal_base_ellipsoid.h lal_base_three.h lal_device.h lal_neighbor.h \ lal_neighbor_shared.h lal_pre_ocl_config.h $(NVD_H) - + # Source files SRCS := $(wildcard ./lal_*.cpp) OBJS := $(subst ./,$(OBJ_DIR)/,$(SRCS:%.cpp=%.o)) @@ -127,7 +127,7 @@ $(GPU_LIB): $(OBJS) $(CUDPP) # test app for querying device info $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H) - $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda + $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda clean: -rm -f $(EXECS) $(GPU_LIB) $(OBJS) $(CUDPP) $(CUHS) *.cubin *.linkinfo diff --git a/lib/gpu/Nvidia.makefile_multi b/lib/gpu/Nvidia.makefile_multi index ddbee4f2a10..c4b27ebbcb5 100644 --- a/lib/gpu/Nvidia.makefile_multi +++ b/lib/gpu/Nvidia.makefile_multi @@ -89,7 +89,7 @@ $(GPU_LIB): $(OBJS) $(CUDPP) # test app for querying device info $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H) - $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda + $(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda clean: -rm -f $(EXECS) $(GPU_LIB) $(OBJS) $(CUDPP) $(CUHS) *.linkinfo diff --git a/lib/gpu/geryon/nvd_device.h b/lib/gpu/geryon/nvd_device.h index e63a1f56b2f..e627a7ca607 100644 --- a/lib/gpu/geryon/nvd_device.h +++ b/lib/gpu/geryon/nvd_device.h @@ -138,7 +138,7 @@ class UCL_Device { /** \note You cannot delete the default stream **/ inline void pop_command_queue() { if (_cq.size()<2) return; - CU_SAFE_CALL_NS(cuStreamDestroy(_cq.back())); + cuStreamDestroy(_cq.back()); _cq.pop_back(); } @@ -426,8 +426,8 @@ void UCL_Device::clear() { if (_device>-1) { for (int i=1; i struct _ucl_memcpy; // Both are images template<> struct _ucl_memcpy<2,2> { template - static inline void mc(p1 &dst, const p2 &src, const size_t n, - cl_command_queue &cq, const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/, + cl_command_queue &/*cq*/, const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, - const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, - const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/, + const size_t /*spitch*/, const size_t /*cols*/, + const size_t /*rows*/, cl_command_queue &/*cq*/, + const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } }; @@ -509,17 +509,17 @@ template<> struct _ucl_memcpy<2,2> { // Destination is texture, source on device template<> struct _ucl_memcpy<2,0> { template - static inline void mc(p1 &dst, const p2 &src, const size_t n, - cl_command_queue &cq, const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/, + cl_command_queue &/*cq*/, const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, - const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, - const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/, + const size_t /*spitch*/, const size_t /*cols*/, + const size_t /*rows*/, cl_command_queue &/*cq*/, + const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } }; @@ -527,17 +527,17 @@ template<> struct _ucl_memcpy<2,0> { // Destination is texture, source on host template<> struct _ucl_memcpy<2,1> { template - static inline void mc(p1 &dst, const p2 &src, const size_t n, - cl_command_queue &cq, const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/, + cl_command_queue &/*cq*/, const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, - const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, - const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/, + const size_t /*spitch*/, const size_t /*cols*/, + const size_t /*rows*/, cl_command_queue &/*cq*/, + const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } }; @@ -545,17 +545,17 @@ template<> struct _ucl_memcpy<2,1> { // Source is texture, dest on device template<> struct _ucl_memcpy<0,2> { template - static inline void mc(p1 &dst, const p2 &src, const size_t n, - cl_command_queue &cq, const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/, + cl_command_queue &/*cq*/, const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, - const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, - const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/, + const size_t /*spitch*/, const size_t /*cols*/, + const size_t /*rows*/, cl_command_queue &/*cq*/, + const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } }; @@ -563,17 +563,17 @@ template<> struct _ucl_memcpy<0,2> { // Source is texture, dest on host template<> struct _ucl_memcpy<1,2> { template - static inline void mc(p1 &dst, const p2 &src, const size_t n, - cl_command_queue &cq, const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/, + cl_command_queue &/*cq*/, const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, - const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, - const cl_bool block, - const size_t dst_offset, const size_t src_offset) { + static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/, + const size_t /*spitch*/, const size_t /*cols*/, + const size_t /*rows*/, cl_command_queue &/*cq*/, + const cl_bool /*block*/, + const size_t /*dst_offset*/, const size_t /*src_offset*/) { assert(0==1); } }; diff --git a/lib/gpu/geryon/ucl_copy.h b/lib/gpu/geryon/ucl_copy.h index 94b57f7a09d..b7f4c4c9860 100644 --- a/lib/gpu/geryon/ucl_copy.h +++ b/lib/gpu/geryon/ucl_copy.h @@ -507,7 +507,7 @@ template <> struct _ucl_cast_copy<0,0> { } template static inline void cc(mat1 & /*dst*/, const mat2 & /*src*/, const size_t /*rows*/, - const size_t cols, mat3 & /*cast_buffer*/, command_queue & /*cq*/) { + const size_t /*cols*/, mat3 & /*cast_buffer*/, command_queue & /*cq*/) { assert(0==1); } }; diff --git a/lib/gpu/geryon/ucl_d_vec.h b/lib/gpu/geryon/ucl_d_vec.h index 5e281fef07c..fdb62d8fab6 100644 --- a/lib/gpu/geryon/ucl_d_vec.h +++ b/lib/gpu/geryon/ucl_d_vec.h @@ -156,7 +156,7 @@ class UCL_D_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, - const size_t stride) { view(input,rows,cols); } + const size_t /*stride*/) { view(input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. @@ -185,7 +185,7 @@ class UCL_D_Vec : public UCL_BaseMat { * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs **/ template - inline void view(ptr_type input, const size_t rows, const size_t cols, + inline void view(ptr_type input, const size_t /*rows*/, const size_t cols, UCL_Device &dev) { #ifdef UCL_DEBUG assert(rows==1); @@ -213,7 +213,7 @@ class UCL_D_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) + const size_t stride, UCL_Device &/*dev*/) { view(input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation @@ -262,7 +262,7 @@ class UCL_D_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols, const size_t stride) + const size_t cols, const size_t /*stride*/) { view_offset(offset,input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon @@ -292,7 +292,7 @@ class UCL_D_Vec : public UCL_BaseMat { * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs **/ template - inline void view_offset(const size_t offset,ptr_type input,const size_t rows, + inline void view_offset(const size_t offset,ptr_type input,const size_t /*rows*/, const size_t cols, UCL_Device &dev) { #ifdef UCL_DEBUG assert(rows==1); @@ -328,7 +328,7 @@ class UCL_D_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ptr_type input,const size_t rows, - const size_t cols,const size_t stride,UCL_Device &dev) + const size_t cols,const size_t stride,UCL_Device &/*dev*/) { view_offset(offset,input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation diff --git a/lib/gpu/geryon/ucl_h_vec.h b/lib/gpu/geryon/ucl_h_vec.h index 9f734ac40cb..25e12a3ef57 100644 --- a/lib/gpu/geryon/ucl_h_vec.h +++ b/lib/gpu/geryon/ucl_h_vec.h @@ -156,7 +156,7 @@ class UCL_H_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, - const size_t stride) { view(input,rows,cols); } + const size_t /*stride*/) { view(input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. @@ -214,7 +214,7 @@ class UCL_H_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type *input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) + const size_t stride, UCL_Device &/*dev*/) { view(input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation @@ -259,7 +259,7 @@ class UCL_H_Vec : public UCL_BaseMat { * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols, const size_t stride) + const size_t cols, const size_t /*stride*/) { view_offset(offset,input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon @@ -382,10 +382,10 @@ class UCL_H_Vec : public UCL_BaseMat { /// Get element at index i inline const numtyp & operator[](const int i) const { return _array[i]; } /// 2D access (row should always be 0) - inline numtyp & operator()(const int row, const int col) + inline numtyp & operator()(const int /*row*/, const int col) { return _array[col]; } /// 2D access (row should always be 0) - inline const numtyp & operator()(const int row, const int col) const + inline const numtyp & operator()(const int /*row*/, const int col) const { return _array[col]; } /// Returns pointer to memory pointer for allocation on host diff --git a/lib/gpu/geryon/ucl_print.h b/lib/gpu/geryon/ucl_print.h index 98ae8a8c06b..6b1caf90e9e 100644 --- a/lib/gpu/geryon/ucl_print.h +++ b/lib/gpu/geryon/ucl_print.h @@ -35,7 +35,7 @@ template <> struct _ucl_print<1> { } template static inline void p(const mat_type &mat, const size_t n, std::ostream &out, - const std::string delim, UCL_Device &dev) { + const std::string delim, UCL_Device &/*dev*/) { p(mat,n,out,delim); } template @@ -59,7 +59,7 @@ template <> struct _ucl_print<1> { template static inline void p(const mat_type &mat,const size_t rows,const size_t cols, std::ostream &out,const std::string delim, - const std::string row_delim, UCL_Device &dev) { + const std::string row_delim, UCL_Device &/*dev*/) { p(mat,rows,cols,out,delim,row_delim); } }; diff --git a/lib/gpu/geryon/ucl_s_obj_help.h b/lib/gpu/geryon/ucl_s_obj_help.h index 9bc2c40fe27..486caa4f2ae 100644 --- a/lib/gpu/geryon/ucl_s_obj_help.h +++ b/lib/gpu/geryon/ucl_s_obj_help.h @@ -53,7 +53,7 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline int alloc(t1 &host, t2 &device, t3 &_buffer, + static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/, const int cols, mat_type &cq, const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind2) { @@ -79,7 +79,7 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline int alloc(t1 &host, t2 &device, t3 &_buffer, + static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/, const int rows, const int cols, UCL_Device &acc, const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind2) { @@ -105,7 +105,7 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline int alloc(t1 &host, t2 &device, t3 &_buffer, + static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/, const int rows, const int cols, mat_type &cq, const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind2) { @@ -177,7 +177,7 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, + static inline int dev_resize(t1 &device, t2 &host, t3 &/*buff*/, const int rows, const int cols) { if (device.kind()==UCL_VIEW) { device.view(host); @@ -369,7 +369,7 @@ template struct _ucl_s_obj_help { } template - static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, + static inline int dev_resize(t1 &device, t2 &/*host*/, t3 &buff, const int rows, const int cols) { int err=buff.resize(rows,cols); if (err!=UCL_SUCCESS) diff --git a/lib/gpu/geryon/ucl_vector.h b/lib/gpu/geryon/ucl_vector.h index 0939bae31e1..10290f05856 100644 --- a/lib/gpu/geryon/ucl_vector.h +++ b/lib/gpu/geryon/ucl_vector.h @@ -147,10 +147,10 @@ class UCL_Vector { /// Get element at index i inline const hosttype & operator[](const int i) const { return host[i]; } /// 2D access (row should always be 0) - inline hosttype & operator()(const int row, const int col) + inline hosttype & operator()(const int /*row*/, const int col) { return host[col]; } /// 2D access (row should always be 0) - inline const hosttype & operator()(const int row, const int col) const + inline const hosttype & operator()(const int /*row*/, const int col) const { return host[col]; } /// Returns pointer to memory pointer for allocation on host diff --git a/lib/gpu/lal_amoeba.cu b/lib/gpu/lal_amoeba.cu index e7c313301e2..a92509f06de 100644 --- a/lib/gpu/lal_amoeba.cu +++ b/lib/gpu/lal_amoeba.cu @@ -2033,13 +2033,13 @@ __kernel void k_amoeba_special15(__global int * dev_nbor, const __global tagint *restrict special15, const int inum, const int nall, const int nbor_pitch, const int t_per_atom) { - int tid, ii, offset, n_stride, i; + int tid, ii, offset, n_stride, j; atom_info(t_per_atom,ii,tid,offset); if (ii> SBBITS & 3; - int j = sj & NEIGHMASK; + j = sj & NEIGHMASK; tagint jtag = tag[j]; if (!which) { diff --git a/lib/gpu/lal_base_amoeba.h b/lib/gpu/lal_base_amoeba.h index f415b303341..7255b8770f7 100644 --- a/lib/gpu/lal_base_amoeba.h +++ b/lib/gpu/lal_base_amoeba.h @@ -33,6 +33,7 @@ //#define ASYNC_DEVICE_COPY +#if 0 #if !defined(USE_OPENCL) && !defined(USE_HIP) // temporary workaround for int2 also defined in cufft #ifdef int2 @@ -40,6 +41,7 @@ #endif #include "cufft.h" #endif +#endif namespace LAMMPS_AL { @@ -313,10 +315,11 @@ class BaseAmoeba { virtual int fphi_mpole(); virtual int polar_real(const int eflag, const int vflag) = 0; - +#if 0 #if !defined(USE_OPENCL) && !defined(USE_HIP) cufftHandle plan; #endif +#endif bool fft_plan_created; }; diff --git a/lib/gpu/lal_base_sph.cpp b/lib/gpu/lal_base_sph.cpp index f373c0ebb6b..22ef5964eaa 100644 --- a/lib/gpu/lal_base_sph.cpp +++ b/lib/gpu/lal_base_sph.cpp @@ -195,7 +195,7 @@ void BaseSPHT::compute(const int f_ago, const int inum_full, const int nall, int **firstneigh, const bool eflag_in, const bool vflag_in, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *tag, - double **host_v, const int nlocal) { + double **host_v) { acc_timers(); int eflag, vflag; if (eatom) eflag=2; diff --git a/lib/gpu/lal_base_sph.h b/lib/gpu/lal_base_sph.h index e1e57315732..46d28790936 100644 --- a/lib/gpu/lal_base_sph.h +++ b/lib/gpu/lal_base_sph.h @@ -15,7 +15,7 @@ ***************************************************************************/ #ifndef LAL_BASE_SPH_H -#define LAL_BASE_DPD_H +#define LAL_BASE_SPH_H #include "lal_device.h" #include "lal_balance.h" @@ -132,7 +132,7 @@ class BaseSPH { int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *tag, - double **v, const int nlocal); + double **v); /// Pair loop with device neighboring int** compute(const int ago, const int inum_full, const int nall, diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu index 1fc8ab8be4e..49cf47b8b3c 100644 --- a/lib/gpu/lal_coul_slater_long.cu +++ b/lib/gpu/lal_coul_slater_long.cu @@ -102,6 +102,7 @@ __kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*grij); _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; fetch(prefactor,j,q_tex); + prefactor *= qqrd2e * scale[mtype] * qtmp/r; numtyp rlamdainv = r * lamdainv; numtyp exprlmdainv = ucl_exp((numtyp)-2.0*rlamdainv); numtyp slater_term = exprlmdainv*((numtyp)1.0 + ((numtyp)2.0*rlamdainv*((numtyp)1.0+rlamdainv))); diff --git a/lib/gpu/lal_coul_slater_long.h b/lib/gpu/lal_coul_slater_long.h index 8950fd81ef1..1731992a165 100644 --- a/lib/gpu/lal_coul_slater_long.h +++ b/lib/gpu/lal_coul_slater_long.h @@ -13,8 +13,8 @@ email : ndactrung@gmail.com ***************************************************************************/ -#ifndef LAL_Coul_Slater_Long_H -#define LAL_Coul_Slater_Long_H +#ifndef LAL_COUL_SLATER_LONG_H +#define LAL_COUL_SLATER_LONG_H #include "lal_base_charge.h" diff --git a/lib/gpu/lal_eam.cpp b/lib/gpu/lal_eam.cpp index b7bc7b958ae..0a2ed21ab30 100644 --- a/lib/gpu/lal_eam.cpp +++ b/lib/gpu/lal_eam.cpp @@ -303,7 +303,7 @@ double EAMT::host_memory_usage() const { } // --------------------------------------------------------------------------- -// Copy nbor list from host if necessary and then compute atom energies/forces +// Copy nbor list from host if necessary and then compute per-atom fp // --------------------------------------------------------------------------- template void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, @@ -379,7 +379,7 @@ void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, } // --------------------------------------------------------------------------- -// Reneighbor on GPU and then compute per-atom densities +// Reneighbor on GPU and then compute per-atom fp // --------------------------------------------------------------------------- template int** EAMT::compute(const int ago, const int inum_full, const int nall, @@ -461,7 +461,7 @@ int** EAMT::compute(const int ago, const int inum_full, const int nall, } // --------------------------------------------------------------------------- -// Copy nbor list from host if necessary and then calculate forces, virials,.. +// Update per-atom fp, and then calculate forces, virials,.. // --------------------------------------------------------------------------- template void EAMT::compute2(int *ilist, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_edpd.cu b/lib/gpu/lal_edpd.cu index 9662d15aea3..0982d219ebe 100644 --- a/lib/gpu/lal_edpd.cu +++ b/lib/gpu/lal_edpd.cu @@ -324,8 +324,8 @@ __kernel void k_edpd(const __global numtyp4 *restrict x_, f.z+=delz*force; // heat transfer - - if (r < coeff2w) { + + if (r < coeff2w) { numtyp wrT = (numtyp)1.0 - r/coeff2w; wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] @@ -401,10 +401,8 @@ __kernel void k_edpd_fast(const __global numtyp4 *restrict x_, __local numtyp4 sc[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 kc[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; - __local numtyp sp_sqrt[4]; if (tid<4) { sp_lj[tid]=sp_lj_in[tid]; - sp_sqrt[tid]=sp_sqrt_in[tid]; } if (tid> SBBITS & 3; - int j = sj & NEIGHMASK; + j = sj & NEIGHMASK; tagint jtag = tag[j]; if (!which) { diff --git a/lib/gpu/lal_mdpd.cu b/lib/gpu/lal_mdpd.cu index 6230cb24961..1e0ca8f0526 100644 --- a/lib/gpu/lal_mdpd.cu +++ b/lib/gpu/lal_mdpd.cu @@ -210,13 +210,12 @@ __kernel void k_mdpd(const __global numtyp4 *restrict x_, const numtyp rhoi = extra[i].x; - numtyp factor_dpd, factor_sqrt; + numtyp factor_dpd; for ( ; nbor tag2) { tag1 = jtag; tag2 = itag; @@ -322,10 +320,8 @@ __kernel void k_mdpd_fast(const __global numtyp4 *restrict x_, __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; - __local numtyp sp_sqrt[4]; if (tid<4) { sp_lj[tid]=sp_lj_in[tid]; - sp_sqrt[tid]=sp_sqrt_in[tid]; } if (tid tag2) { tag1 = jtag; tag2 = itag; diff --git a/lib/gpu/lal_sph_heatconduction.cu b/lib/gpu/lal_sph_heatconduction.cu index 21c936347a7..8e4ec6ff194 100644 --- a/lib/gpu/lal_sph_heatconduction.cu +++ b/lib/gpu/lal_sph_heatconduction.cu @@ -29,23 +29,23 @@ _texture_2d( vel_tex,int4); #if (SHUFFLE_AVAIL == 0) -#define store_dE(dEacc, ii, inum, tid, t_per_atom, offset, dE) \ +#define store_dE(dEacc, ii, inum, tid, t_per_atom, offset, i, dE) \ if (t_per_atom>1) { \ simdsync(); \ simd_reduce_add1(t_per_atom, red_acc, offset, tid, dEacc); \ } \ if (offset==0 && ii1) { \ for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ dEacc += shfl_down(dEacc, s, t_per_atom); \ } \ } \ if (offset==0 && ii1) { \ - simdsync(); \ - simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ - drhoEacc.x, drhoEacc.y); \ - } \ - if (offset==0 && ii1) { \ + simdsync(); \ + simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ + drhoEacc.x, drhoEacc.y); \ + } \ + if (offset==0 && ii1) { \ for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ drhoEacc.x += shfl_down(drhoEacc.x, s, t_per_atom); \ @@ -47,7 +48,8 @@ _texture_2d( vel_tex,int4); } \ } \ if (offset==0 && ii1) { \ - simdsync(); \ - simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ - drhoEacc.x, drhoEacc.y); \ - } \ - if (offset==0 && ii1) { \ + simdsync(); \ + simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ + drhoEacc.x, drhoEacc.y); \ + } \ + if (offset==0 && ii1) { \ for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ drhoEacc.x += shfl_down(drhoEacc.x, s, t_per_atom); \ @@ -47,7 +48,8 @@ _texture_2d( vel_tex,int4); } \ } \ if (offset==0 && ii= 5.7) and RDC [\#6857](https://github.com/kokkos/kokkos/pull/6857) + * Use rocthrust for sorting, when available [\#6793](https://github.com/kokkos/kokkos/pull/6793) + +#### SYCL: +* We only support OneAPI SYCL implementation: add check during initialization + * Error out on initialization if the backend is different from `ext_oneapi_*` [\#6784](https://github.com/kokkos/kokkos/pull/6784) + * Filter GPU devices for `ext_onapi_*` GPU devices [\#6758](https://github.com/kokkos/kokkos/pull/6784) +* Performance Improvements + * Avoid unnecessary zero-memset of the scratch flags in SYCL [\#6739](https://github.com/kokkos/kokkos/pull/6739) + * Use host-pinned memory to copy reduction/scan result [\#6500](https://github.com/kokkos/kokkos/pull/6500) +* Address deprecations after oneAPI 2023.2.0 [\#6577](https://github.com/kokkos/kokkos/pull/6739) +* Make sure to call find_dependency for oneDPL if necessary [\#6870](https://github.com/kokkos/kokkos/pull/6870) + +#### OpenMPTarget: +* Use LLVM extensions for dynamic shared memory [\#6380](https://github.com/kokkos/kokkos/pull/6380) +* Guard scratch memory usage in ParallelReduce [\#6585 ](https://github.com/kokkos/kokkos/pull/6585) +* Update linker flags for Intel GPUs update [\#6735](https://github.com/kokkos/kokkos/pull/6735) +* Improve handling of printf on Intel GPUs [\#6652](https://github.com/kokkos/kokkos/pull/6652) + +#### OpenACC: +* Add atomics support [\#6446](https://github.com/kokkos/kokkos/pull/6446) +* Make the OpenACC backend asynchronous [\#6772](https://github.com/kokkos/kokkos/pull/6772) + +#### Threads: +* Add missing broadcast to TeamThreadRange parallel_scan [\#6601](https://github.com/kokkos/kokkos/pull/6446) + +#### OpenMP: +* Improve performance of view initializations and filling with zeros [\#6573](https://github.com/kokkos/kokkos/pull/6573) + +### General Enhancements + +* Improve performance of random number generation when using a normal distribution on GPUs [\#6556](https://github.com/kokkos/kokkos/pull/6556) +* Allocate temporary view with the user-provided execution space instance and do not initialize in `unique` algorithm [\#6598](https://github.com/kokkos/kokkos/pull/6598) +* Add deduction guide for `Kokkos::Array` [\#6373](https://github.com/kokkos/kokkos/pull/6373) +* Provide new public headers `` and `` [\#6687](https://github.com/kokkos/kokkos/pull/6687) +* Fix/improvement to `remove_if` parallel algorithm: use the provided execution space instance for temporary allocations and drop unnecessaryinitialization + avoid evaluating twice the predicate during final pass [\#6747](https://github.com/kokkos/kokkos/pull/6747) +* Add runtime function to query the number of devices and make device ID consistent with `KOKKOS_VISIBLE_DEVICES` [\#6713](https://github.com/kokkos/kokkos/pull/6713) +* simd: support `vector_aligned_tag` [\#6243](https://github.com/kokkos/kokkos/pull/6243) +* Avoid unnecessary allocation when default constructing Bitset [\#6524](https://github.com/kokkos/kokkos/pull/6524) +* Fix constness for views in std algorithms [\#6813](https://github.com/kokkos/kokkos/pull/6813) +* Improve error message on unsafe implicit conversion in MDRangePolicy [\#6855](https://github.com/kokkos/kokkos/pull/6855) +* CTAD (deduction guides) for RangePolicy [\#6850](https://github.com/kokkos/kokkos/pull/6850) +* CTAD (deduction guides) for MDRangePolicy [\#5516](https://github.com/kokkos/kokkos/pull/5516) + +### Build System Changes +* Require `Kokkos_ENABLE_ATOMICS_BYPASS` option to bypass atomic operation for Serial backend only builds [\#6692](https://github.com/kokkos/kokkos/pull/6692) +* Add support for RISCV and the Milk-V's Pioneer [\#6773](https://github.com/kokkos/kokkos/pull/6773) +* Add C++26 standard to CMake setup [\#6733](https://github.com/kokkos/kokkos/pull/6733) +* Fix Makefile when using gnu_generate_makefile.sh and make >= 4.3 [\#6606](https://github.com/kokkos/kokkos/pull/6606) +* Cuda: Fix configuring with CMake >= 3.28.4 - temporary fallback to internal CudaToolkit.cmake [\#6898](https://github.com/kokkos/kokkos/pull/6898) + +### Incompatibilities (i.e. breaking changes) +* Remove all `DEPRECATED_CODE_3` option and all code that was guarded by it [\#6523](https://github.com/kokkos/kokkos/pull/6523) +* Drop guards to accommodate external code defining `KOKKOS_ASSERT` [\#6665](https://github.com/kokkos/kokkos/pull/6665) +* `Profiling::ProfilingSection(std::string)` constructor marked explicit and nodiscard [\#6690](https://github.com/kokkos/kokkos/pull/6690) +* Add bound check preconditions for `RangePolicy` and `MDRangePolicy` [\#6617](https://github.com/kokkos/kokkos/pull/6617) [\#6726](https://github.com/kokkos/kokkos/pull/6726) +* Add checks for unsafe implicit conversions in RangePolicy [\#6754](https://github.com/kokkos/kokkos/pull/6754) +* Remove Kokkos::[b]half_t volatile overloads [\#6579](https://github.com/kokkos/kokkos/pull/6579) +* Remove KOKKOS_IMPL_DO_NOT_USE_PRINTF [\#6593](https://github.com/kokkos/kokkos/pull/6593) +* Check matching static extents in View constructor [\#5190 ](https://github.com/kokkos/kokkos/pull/5190) +* Tools(profiling): fix typo Kokkos_Tools_Optim[i]zationGoal [\#6642](https://github.com/kokkos/kokkos/pull/6642) +* Remove variadic range policy constructor (disallow passing multiple trailing chunk size arguments) [\#6845](https://github.com/kokkos/kokkos/pull/6845) +* Improve message on view out of bounds access and always abort [\#6861](https://github.com/kokkos/kokkos/pull/6861) +* Drop `KOKKOS_ENABLE_INTEL_MM_ALLOC` macro [\#6797](https://github.com/kokkos/kokkos/pull/6797) +* Remove `Kokkos::Experimental::LogicalMemorySpace` (without going through deprecation) [\#6557](https://github.com/kokkos/kokkos/pull/6557) +* Remove `Experimental::HBWSpace` and support for linking against memkind [\#6791](https://github.com/kokkos/kokkos/pull/6791) +* Drop librt TPL and associated `KOKKOS_ENABLE_LIBRT` macro [\#6798](https://github.com/kokkos/kokkos/pull/6798) +* Drop support for old CPU architectures (`ARCH_BGQ`, `ARCH_POWER7`, `ARCH_WSM` and associated `ARCH_SSE4` macro) [\#6806](https://github.com/kokkos/kokkos/pull/6806) +* Drop support for deprecated command-line arguments and environment variables [\#6744](https://github.com/kokkos/kokkos/pull/6744) + +### Deprecations +* Provide kokkos_swap as part of Core and deprecate Experimental::swap in Algorithms [\#6697](https://github.com/kokkos/kokkos/pull/6697) +* Deprecate {Cuda,HIP}::detect_device_count() and Cuda::[detect_]device_arch() [\#6710](https://github.com/kokkos/kokkos/pull/6710) +* Deprecate `ExecutionSpace::in_parallel()` [\#6582](https://github.com/kokkos/kokkos/pull/6582) + +### Bug Fixes +* Fix team-level MDRange reductions: [\#6511](https://github.com/kokkos/kokkos/pull/6511) +* Fix CUDA and SYCL small value type (16-bit) team reductions [\#5334](https://github.com/kokkos/kokkos/pull/5334) +* Enable `{transform_}exclusive_scan` in place [\#6667](https://github.com/kokkos/kokkos/pull/6667) +* `fill_random` overload that do not take an execution space instance argument should fence [\#6658](https://github.com/kokkos/kokkos/pull/6658) +* HIP,Cuda,OpenMPTarget: Fixup use provided execution space when copying host inaccessible reduction result [\#6777](https://github.com/kokkos/kokkos/pull/6777) +* Fix typo in `cuda_func_set_attribute[s]_wrapper` preventing proper setting of desired occupancy [\#6786](https://github.com/kokkos/kokkos/pull/6786) +* Avoid undefined behavior due to conversion between signed and unsigned integers in shift_{right, left}_team_impl [\#6821](https://github.com/kokkos/kokkos/pull/6821) +* Fix a bug in Makefile.kokkos when using AMD GPU architectures as `AMD_GFXYYY` [\#6892](https://github.com/kokkos/kokkos/pull/6892) + +## [4.2.01](https://github.com/kokkos/kokkos/tree/4.2.01) (2023-12-07) +[Full Changelog](https://github.com/kokkos/kokkos/compare/4.2.00...4.2.01) + +### Backend and Architecture Enhancements: + +#### CUDA: +- Add warp sync for `parallel_reduce` to avoid race condition [\#6630](https://github.com/kokkos/kokkos/pull/6630), [\#6746](https://github.com/kokkos/kokkos/pull/6746) + +#### HIP: +- Fix Graph "multiple definition of" linking error (missing `inline` specifier) [\#6624](https://github.com/kokkos/kokkos/pull/6624) +- Add support for gfx940 (AMD Instinct MI300 GPU) [\#6671](https://github.com/kokkos/kokkos/pull/6671) + +### Build System +- CMake: Don't let Kokkos set `CMAKE_CXX_FLAGS` for Trilinos builds [\#6742](https://github.com/kokkos/kokkos/pull/6742) + +### Bug Fixes +- Remove deprecation warning for `AllocationMechanism` for GCC <11.0 [\#6653](https://github.com/kokkos/kokkos/pull/6653) +- Fix bug early tools finalize with non-default host execution instances [\#6635](https://github.com/kokkos/kokkos/pull/6635) +- Fix various issues for MSVC CUDA builds [\#6659](https://github.com/kokkos/kokkos/pull/6659) +- Fix "extra `;`" warning with `-pedantic` flag in `` [\#6510](https://github.com/kokkos/kokkos/pull/6510) + ## [4.2.00](https://github.com/kokkos/kokkos/tree/4.2.00) (2023-11-06) [Full Changelog](https://github.com/kokkos/kokkos/compare/4.1.00...4.2.00) @@ -43,7 +164,7 @@ #### SYCL: - Enforce external `sycl::queues` to be in-order [\#6246](https://github.com/kokkos/kokkos/pull/6246) -- Improve reduction performance: [\#6272](https://github.com/kokkos/kokkos/pull/6272) [\#6271](https://github.com/kokkos/kokkos/pull/6271) [\#6270](https://github.com/kokkos/kokkos/pull/6270) [\#6264](https://github.com/kokkos/kokkos/pull/6264) +- Improve reduction performance: [\#6272](https://github.com/kokkos/kokkos/pull/6272) [\#6271](https://github.com/kokkos/kokkos/pull/6271) [\#6270](https://github.com/kokkos/kokkos/pull/6270) [\#6264](https://github.com/kokkos/kokkos/pull/6264) - Allow using the SYCL execution space on AMD GPUs [\#6321](https://github.com/kokkos/kokkos/pull/6321) - Allow sorting via native oneDPL to support Views with stride=1 [\#6322](https://github.com/kokkos/kokkos/pull/6322) - Make in-order queues the default via macro [\#6189](https://github.com/kokkos/kokkos/pull/6189) @@ -64,7 +185,7 @@ - Add converting assignment to `DualView`: [\#6474](https://github.com/kokkos/kokkos/pull/6474) -### Build System Changes +### Build System Changes - Export `Kokkos_CXX_COMPILER_VERSION` [\#6282](https://github.com/kokkos/kokkos/pull/6282) - Disable default oneDPL support in Trilinos [\#6342](https://github.com/kokkos/kokkos/pull/6342) @@ -978,95 +1099,95 @@ - Major update for OpenMPTarget: many capabilities now work. For details contact us. - Added DPC++/SYCL backend: primary capabilites are working. - Added Kokkos Graph API analogous to CUDA Graphs. -- Added parallel_scan support with TeamThreadRange [\#3536](https://github.com/kokkos/kokkos/pull/#3536) -- Added Logical Memory Spaces [\#3546](https://github.com/kokkos/kokkos/pull/#3546) -- Added initial half precision support [\#3439](https://github.com/kokkos/kokkos/pull/#3439) -- Experimental feature: control cuda occupancy [\#3379](https://github.com/kokkos/kokkos/pull/#3379) +- Added parallel_scan support with TeamThreadRange [\#3536](https://github.com/kokkos/kokkos/pull/3536) +- Added Logical Memory Spaces [\#3546](https://github.com/kokkos/kokkos/pull/3546) +- Added initial half precision support [\#3439](https://github.com/kokkos/kokkos/pull/3439) +- Experimental feature: control cuda occupancy [\#3379](https://github.com/kokkos/kokkos/pull/3379) **Implemented enhancements Backends and Archs:** -- Add a64fx and fujitsu Compiler support [\#3614](https://github.com/kokkos/kokkos/pull/#3614) -- Adding support for AMD gfx908 archictecture [\#3375](https://github.com/kokkos/kokkos/pull/#3375) -- SYCL parallel\_for MDRangePolicy [\#3583](https://github.com/kokkos/kokkos/pull/#3583) -- SYCL add parallel\_scan [\#3577](https://github.com/kokkos/kokkos/pull/#3577) -- SYCL custom reductions [\#3544](https://github.com/kokkos/kokkos/pull/#3544) -- SYCL Enable container unit tests [\#3550](https://github.com/kokkos/kokkos/pull/#3550) -- SYCL feature level 5 [\#3480](https://github.com/kokkos/kokkos/pull/#3480) -- SYCL Feature level 4 (parallel\_for) [\#3474](https://github.com/kokkos/kokkos/pull/#3474) -- SYCL feature level 3 [\#3451](https://github.com/kokkos/kokkos/pull/#3451) -- SYCL feature level 2 [\#3447](https://github.com/kokkos/kokkos/pull/#3447) -- OpenMPTarget: Hierarchial reduction for + operator on scalars [\#3504](https://github.com/kokkos/kokkos/pull/#3504) -- OpenMPTarget hierarchical [\#3411](https://github.com/kokkos/kokkos/pull/#3411) -- HIP Add Impl::atomic\_[store,load] [\#3440](https://github.com/kokkos/kokkos/pull/#3440) -- HIP enable global lock arrays [\#3418](https://github.com/kokkos/kokkos/pull/#3418) -- HIP Implement multiple occupancy paths for various HIP kernel launchers [\#3366](https://github.com/kokkos/kokkos/pull/#3366) +- Add a64fx and fujitsu Compiler support [\#3614](https://github.com/kokkos/kokkos/pull/3614) +- Adding support for AMD gfx908 archictecture [\#3375](https://github.com/kokkos/kokkos/pull/3375) +- SYCL parallel\_for MDRangePolicy [\#3583](https://github.com/kokkos/kokkos/pull/3583) +- SYCL add parallel\_scan [\#3577](https://github.com/kokkos/kokkos/pull/3577) +- SYCL custom reductions [\#3544](https://github.com/kokkos/kokkos/pull/3544) +- SYCL Enable container unit tests [\#3550](https://github.com/kokkos/kokkos/pull/3550) +- SYCL feature level 5 [\#3480](https://github.com/kokkos/kokkos/pull/3480) +- SYCL Feature level 4 (parallel\_for) [\#3474](https://github.com/kokkos/kokkos/pull/3474) +- SYCL feature level 3 [\#3451](https://github.com/kokkos/kokkos/pull/3451) +- SYCL feature level 2 [\#3447](https://github.com/kokkos/kokkos/pull/3447) +- OpenMPTarget: Hierarchial reduction for + operator on scalars [\#3504](https://github.com/kokkos/kokkos/pull/3504) +- OpenMPTarget hierarchical [\#3411](https://github.com/kokkos/kokkos/pull/3411) +- HIP Add Impl::atomic\_[store,load] [\#3440](https://github.com/kokkos/kokkos/pull/3440) +- HIP enable global lock arrays [\#3418](https://github.com/kokkos/kokkos/pull/3418) +- HIP Implement multiple occupancy paths for various HIP kernel launchers [\#3366](https://github.com/kokkos/kokkos/pull/3366) **Implemented enhancements Policies:** -- MDRangePolicy: Let it be semiregular [\#3494](https://github.com/kokkos/kokkos/pull/#3494) -- MDRangePolicy: Check narrowing conversion in construction [\#3527](https://github.com/kokkos/kokkos/pull/#3527) -- MDRangePolicy: CombinedReducers support [\#3395](https://github.com/kokkos/kokkos/pull/#3395) -- Kokkos Graph: Interface and Default Implementation [\#3362](https://github.com/kokkos/kokkos/pull/#3362) -- Kokkos Graph: add Cuda Graph implementation [\#3369](https://github.com/kokkos/kokkos/pull/#3369) -- TeamPolicy: implemented autotuning of team sizes and vector lengths [\#3206](https://github.com/kokkos/kokkos/pull/#3206) -- RangePolicy: Initialize all data members in default constructor [\#3509](https://github.com/kokkos/kokkos/pull/#3509) +- MDRangePolicy: Let it be semiregular [\#3494](https://github.com/kokkos/kokkos/pull/3494) +- MDRangePolicy: Check narrowing conversion in construction [\#3527](https://github.com/kokkos/kokkos/pull/3527) +- MDRangePolicy: CombinedReducers support [\#3395](https://github.com/kokkos/kokkos/pull/3395) +- Kokkos Graph: Interface and Default Implementation [\#3362](https://github.com/kokkos/kokkos/pull/3362) +- Kokkos Graph: add Cuda Graph implementation [\#3369](https://github.com/kokkos/kokkos/pull/3369) +- TeamPolicy: implemented autotuning of team sizes and vector lengths [\#3206](https://github.com/kokkos/kokkos/pull/3206) +- RangePolicy: Initialize all data members in default constructor [\#3509](https://github.com/kokkos/kokkos/pull/3509) **Implemented enhancements BuildSystem:** -- Auto-generate core test files for all backends [\#3488](https://github.com/kokkos/kokkos/pull/#3488) -- Avoid rewriting test files when calling cmake [\#3548](https://github.com/kokkos/kokkos/pull/#3548) -- RULE\_LAUNCH\_COMPILE and RULE\_LAUNCH\_LINK system for nvcc\_wrapper [\#3136](https://github.com/kokkos/kokkos/pull/#3136) -- Adding -include as a known argument to nvcc\_wrapper [\#3434](https://github.com/kokkos/kokkos/pull/#3434) -- Install hpcbind script [\#3402](https://github.com/kokkos/kokkos/pull/#3402) -- cmake/kokkos\_tribits.cmake: add parsing for args [\#3457](https://github.com/kokkos/kokkos/pull/#3457) +- Auto-generate core test files for all backends [\#3488](https://github.com/kokkos/kokkos/pull/3488) +- Avoid rewriting test files when calling cmake [\#3548](https://github.com/kokkos/kokkos/pull/3548) +- RULE\_LAUNCH\_COMPILE and RULE\_LAUNCH\_LINK system for nvcc\_wrapper [\#3136](https://github.com/kokkos/kokkos/pull/3136) +- Adding -include as a known argument to nvcc\_wrapper [\#3434](https://github.com/kokkos/kokkos/pull/3434) +- Install hpcbind script [\#3402](https://github.com/kokkos/kokkos/pull/3402) +- cmake/kokkos\_tribits.cmake: add parsing for args [\#3457](https://github.com/kokkos/kokkos/pull/3457) **Implemented enhancements Tools:** -- Changed namespacing of Kokkos::Tools::Impl::Impl::tune\_policy [\#3455](https://github.com/kokkos/kokkos/pull/#3455) -- Delegate to an impl allocate/deallocate method to allow specifying a SpaceHandle for MemorySpaces [\#3530](https://github.com/kokkos/kokkos/pull/#3530) -- Use the Kokkos Profiling interface rather than the Impl interface [\#3518](https://github.com/kokkos/kokkos/pull/#3518) -- Runtime option for tuning [\#3459](https://github.com/kokkos/kokkos/pull/#3459) -- Dual View Tool Events [\#3326](https://github.com/kokkos/kokkos/pull/#3326) +- Changed namespacing of Kokkos::Tools::Impl::Impl::tune\_policy [\#3455](https://github.com/kokkos/kokkos/pull/3455) +- Delegate to an impl allocate/deallocate method to allow specifying a SpaceHandle for MemorySpaces [\#3530](https://github.com/kokkos/kokkos/pull/3530) +- Use the Kokkos Profiling interface rather than the Impl interface [\#3518](https://github.com/kokkos/kokkos/pull/3518) +- Runtime option for tuning [\#3459](https://github.com/kokkos/kokkos/pull/3459) +- Dual View Tool Events [\#3326](https://github.com/kokkos/kokkos/pull/3326) **Implemented enhancements Other:** -- Abort on errors instead of just printing [\#3528](https://github.com/kokkos/kokkos/pull/#3528) -- Enable C++14 macros unconditionally [\#3449](https://github.com/kokkos/kokkos/pull/#3449) -- Make ViewMapping trivially copyable [\#3436](https://github.com/kokkos/kokkos/pull/#3436) -- Rename struct ViewMapping to class [\#3435](https://github.com/kokkos/kokkos/pull/#3435) -- Replace enums in Kokkos\_ViewMapping.hpp (removes -Wextra) [\#3422](https://github.com/kokkos/kokkos/pull/#3422) -- Use bool for enums representing bools [\#3416](https://github.com/kokkos/kokkos/pull/#3416) -- Fence active instead of default execution space instances [\#3388](https://github.com/kokkos/kokkos/pull/#3388) -- Refactor parallel\_reduce fence usage [\#3359](https://github.com/kokkos/kokkos/pull/#3359) -- Moved Space EBO helpers to Kokkos\_EBO [\#3357](https://github.com/kokkos/kokkos/pull/#3357) -- Add remove\_cvref type trait [\#3340](https://github.com/kokkos/kokkos/pull/#3340) -- Adding identity type traits and update definition of identity\_t alias [\#3339](https://github.com/kokkos/kokkos/pull/#3339) -- Add is\_specialization\_of type trait [\#3338](https://github.com/kokkos/kokkos/pull/#3338) -- Make ScratchMemorySpace semi-regular [\#3309](https://github.com/kokkos/kokkos/pull/#3309) -- Optimize min/max atomics with early exit on no-op case [\#3265](https://github.com/kokkos/kokkos/pull/#3265) -- Refactor Backend Development [\#2941](https://github.com/kokkos/kokkos/pull/#2941) +- Abort on errors instead of just printing [\#3528](https://github.com/kokkos/kokkos/pull/3528) +- Enable C++14 macros unconditionally [\#3449](https://github.com/kokkos/kokkos/pull/3449) +- Make ViewMapping trivially copyable [\#3436](https://github.com/kokkos/kokkos/pull/3436) +- Rename struct ViewMapping to class [\#3435](https://github.com/kokkos/kokkos/pull/3435) +- Replace enums in Kokkos\_ViewMapping.hpp (removes -Wextra) [\#3422](https://github.com/kokkos/kokkos/pull/3422) +- Use bool for enums representing bools [\#3416](https://github.com/kokkos/kokkos/pull/3416) +- Fence active instead of default execution space instances [\#3388](https://github.com/kokkos/kokkos/pull/3388) +- Refactor parallel\_reduce fence usage [\#3359](https://github.com/kokkos/kokkos/pull/3359) +- Moved Space EBO helpers to Kokkos\_EBO [\#3357](https://github.com/kokkos/kokkos/pull/3357) +- Add remove\_cvref type trait [\#3340](https://github.com/kokkos/kokkos/pull/3340) +- Adding identity type traits and update definition of identity\_t alias [\#3339](https://github.com/kokkos/kokkos/pull/3339) +- Add is\_specialization\_of type trait [\#3338](https://github.com/kokkos/kokkos/pull/3338) +- Make ScratchMemorySpace semi-regular [\#3309](https://github.com/kokkos/kokkos/pull/3309) +- Optimize min/max atomics with early exit on no-op case [\#3265](https://github.com/kokkos/kokkos/pull/3265) +- Refactor Backend Development [\#2941](https://github.com/kokkos/kokkos/pull/2941) **Fixed bugs:** -- Fixup MDRangePolicy construction from Kokkos arrays [\#3591](https://github.com/kokkos/kokkos/pull/#3591) -- Add atomic functions for unsigned long long using gcc built-in [\#3588](https://github.com/kokkos/kokkos/pull/#3588) -- Fixup silent pointless comparison with zero in checked\_narrow\_cast (compiler workaround) [\#3566](https://github.com/kokkos/kokkos/pull/#3566) -- Fixes for ROCm 3.9 [\#3565](https://github.com/kokkos/kokkos/pull/#3565) -- Fix windows build issues which crept in for the CUDA build [\#3532](https://github.com/kokkos/kokkos/pull/#3532) -- HIP Fix atomics of large data types and clean up lock arrays [\#3529](https://github.com/kokkos/kokkos/pull/#3529) -- Pthreads fix exception resulting from 0 grain size [\#3510](https://github.com/kokkos/kokkos/pull/#3510) -- Fixup do not require atomic operation to be default constructible [\#3503](https://github.com/kokkos/kokkos/pull/#3503) -- Fix race condition in HIP backend [\#3467](https://github.com/kokkos/kokkos/pull/#3467) -- Replace KOKKOS\_DEBUG with KOKKOS\_ENABLE\_DEBUG [\#3458](https://github.com/kokkos/kokkos/pull/#3458) -- Fix multi-stream team scratch space definition for HIP [\#3398](https://github.com/kokkos/kokkos/pull/#3398) -- HIP fix template deduction [\#3393](https://github.com/kokkos/kokkos/pull/#3393) -- Fix compiling with HIP and C++17 [\#3390](https://github.com/kokkos/kokkos/pull/#3390) -- Fix sigFPE in HIP blocksize deduction [\#3378](https://github.com/kokkos/kokkos/pull/#3378) -- Type alias change: replace CS with CTS to avoid conflicts with NVSHMEM [\#3348](https://github.com/kokkos/kokkos/pull/#3348) -- Clang compilation of CUDA backend on Windows [\#3345](https://github.com/kokkos/kokkos/pull/#3345) -- Fix HBW support [\#3343](https://github.com/kokkos/kokkos/pull/#3343) -- Added missing fences to unique token [\#3260](https://github.com/kokkos/kokkos/pull/#3260) +- Fixup MDRangePolicy construction from Kokkos arrays [\#3591](https://github.com/kokkos/kokkos/pull/3591) +- Add atomic functions for unsigned long long using gcc built-in [\#3588](https://github.com/kokkos/kokkos/pull/3588) +- Fixup silent pointless comparison with zero in checked\_narrow\_cast (compiler workaround) [\#3566](https://github.com/kokkos/kokkos/pull/3566) +- Fixes for ROCm 3.9 [\#3565](https://github.com/kokkos/kokkos/pull/3565) +- Fix windows build issues which crept in for the CUDA build [\#3532](https://github.com/kokkos/kokkos/pull/3532) +- HIP Fix atomics of large data types and clean up lock arrays [\#3529](https://github.com/kokkos/kokkos/pull/3529) +- Pthreads fix exception resulting from 0 grain size [\#3510](https://github.com/kokkos/kokkos/pull/3510) +- Fixup do not require atomic operation to be default constructible [\#3503](https://github.com/kokkos/kokkos/pull/3503) +- Fix race condition in HIP backend [\#3467](https://github.com/kokkos/kokkos/pull/3467) +- Replace KOKKOS\_DEBUG with KOKKOS\_ENABLE\_DEBUG [\#3458](https://github.com/kokkos/kokkos/pull/3458) +- Fix multi-stream team scratch space definition for HIP [\#3398](https://github.com/kokkos/kokkos/pull/3398) +- HIP fix template deduction [\#3393](https://github.com/kokkos/kokkos/pull/3393) +- Fix compiling with HIP and C++17 [\#3390](https://github.com/kokkos/kokkos/pull/3390) +- Fix sigFPE in HIP blocksize deduction [\#3378](https://github.com/kokkos/kokkos/pull/3378) +- Type alias change: replace CS with CTS to avoid conflicts with NVSHMEM [\#3348](https://github.com/kokkos/kokkos/pull/3348) +- Clang compilation of CUDA backend on Windows [\#3345](https://github.com/kokkos/kokkos/pull/3345) +- Fix HBW support [\#3343](https://github.com/kokkos/kokkos/pull/3343) +- Added missing fences to unique token [\#3260](https://github.com/kokkos/kokkos/pull/3260) **Incompatibilities:** -- Remove unused utilities (forward, move, and expand\_variadic) from Kokkos::Impl [\#3535](https://github.com/kokkos/kokkos/pull/#3535) -- Remove unused traits [\#3534](https://github.com/kokkos/kokkos/pull/#3534) -- HIP: Remove old HCC code [\#3301](https://github.com/kokkos/kokkos/pull/#3301) -- Prepare for deprecation of ViewAllocateWithoutInitializing [\#3264](https://github.com/kokkos/kokkos/pull/#3264) -- Remove ROCm backend [\#3148](https://github.com/kokkos/kokkos/pull/#3148) +- Remove unused utilities (forward, move, and expand\_variadic) from Kokkos::Impl [\#3535](https://github.com/kokkos/kokkos/pull/3535) +- Remove unused traits [\#3534](https://github.com/kokkos/kokkos/pull/3534) +- HIP: Remove old HCC code [\#3301](https://github.com/kokkos/kokkos/pull/3301) +- Prepare for deprecation of ViewAllocateWithoutInitializing [\#3264](https://github.com/kokkos/kokkos/pull/3264) +- Remove ROCm backend [\#3148](https://github.com/kokkos/kokkos/pull/3148) ## [3.2.01](https://github.com/kokkos/kokkos/tree/3.2.01) (2020-11-17) [Full Changelog](https://github.com/kokkos/kokkos/compare/3.2.00...3.2.01) diff --git a/lib/kokkos/CMakeLists.txt b/lib/kokkos/CMakeLists.txt index f6bd81058e9..93a796f200b 100644 --- a/lib/kokkos/CMakeLists.txt +++ b/lib/kokkos/CMakeLists.txt @@ -150,7 +150,7 @@ ENDIF() set(Kokkos_VERSION_MAJOR 4) -set(Kokkos_VERSION_MINOR 2) +set(Kokkos_VERSION_MINOR 3) set(Kokkos_VERSION_PATCH 0) set(Kokkos_VERSION "${Kokkos_VERSION_MAJOR}.${Kokkos_VERSION_MINOR}.${Kokkos_VERSION_PATCH}") message(STATUS "Kokkos version: ${Kokkos_VERSION}") @@ -252,7 +252,6 @@ ENDIF() # subpackages ## This restores the old behavior of ProjectCompilerPostConfig.cmake -# It sets the CMAKE_CXX_FLAGS globally to those used by Kokkos # We must do this before KOKKOS_PACKAGE_DECL IF (KOKKOS_HAS_TRILINOS) # Overwrite the old flags at the top-level @@ -280,21 +279,13 @@ IF (KOKKOS_HAS_TRILINOS) SET(KOKKOSCORE_XCOMPILER_OPTIONS "${KOKKOSCORE_XCOMPILER_OPTIONS} -Xcompiler ${XCOMP_FLAG}") LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcompiler ${XCOMP_FLAG}) ENDFOREACH() - SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_COMPILE_OPTIONS} ${KOKKOSCORE_XCOMPILER_OPTIONS}") IF (KOKKOS_ENABLE_CUDA) STRING(REPLACE ";" " " KOKKOSCORE_CUDA_OPTIONS "${KOKKOS_CUDA_OPTIONS}") FOREACH(CUDAFE_FLAG ${KOKKOS_CUDAFE_OPTIONS}) SET(KOKKOSCORE_CUDAFE_OPTIONS "${KOKKOSCORE_CUDAFE_OPTIONS} -Xcudafe ${CUDAFE_FLAG}") LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcudafe ${CUDAFE_FLAG}) ENDFOREACH() - SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_CXX_FLAGS} ${KOKKOSCORE_CUDA_OPTIONS} ${KOKKOSCORE_CUDAFE_OPTIONS}") ENDIF() - # Both parent scope and this package - # In ProjectCompilerPostConfig.cmake, we capture the "global" flags Trilinos wants in - # TRILINOS_TOPLEVEL_CXX_FLAGS - SET(CMAKE_CXX_FLAGS "${TRILINOS_TOPLEVEL_CXX_FLAGS} ${KOKKOSCORE_CXX_FLAGS}" PARENT_SCOPE) - SET(CMAKE_CXX_FLAGS "${TRILINOS_TOPLEVEL_CXX_FLAGS} ${KOKKOSCORE_CXX_FLAGS}") - #CMAKE_CXX_FLAGS will get added to Kokkos and Kokkos dependencies automatically here #These flags get set up in KOKKOS_PACKAGE_DECL, which means they #must be configured before KOKKOS_PACKAGE_DECL SET(KOKKOS_ALL_COMPILE_OPTIONS diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index c970f72755e..a167ce2070b 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -11,7 +11,7 @@ CXXFLAGS += $(SHFLAGS) endif KOKKOS_VERSION_MAJOR = 4 -KOKKOS_VERSION_MINOR = 2 +KOKKOS_VERSION_MINOR = 3 KOKKOS_VERSION_PATCH = 0 KOKKOS_VERSION = $(shell echo $(KOKKOS_VERSION_MAJOR)*10000+$(KOKKOS_VERSION_MINOR)*100+$(KOKKOS_VERSION_PATCH) | bc) @@ -22,14 +22,14 @@ KOKKOS_DEVICES ?= "OpenMP" # Intel: KNC,KNL,SNB,HSW,BDW,SKL,SKX,ICL,ICX,SPR # NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75,Ampere80,Ampere86,Ada89,Hopper90 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2,A64FX -# IBM: BGQ,Power7,Power8,Power9 -# AMD-GPUS: GFX906,GFX908,GFX90A,GFX942,GFX1030,GFX1100 +# IBM: Power8,Power9 +# AMD-GPUS: AMD_GFX906,AMD_GFX908,AMD_GFX90A,AMD_GFX940,AMD_GFX942,AMD_GFX1030,AMD_GFX1100 # AMD-CPUS: AMDAVX,Zen,Zen2,Zen3 # Intel-GPUs: Gen9,Gen11,Gen12LP,DG1,XeHP,PVC KOKKOS_ARCH ?= "" # Options: yes,no KOKKOS_DEBUG ?= "no" -# Options: hwloc,librt,experimental_memkind +# Options: hwloc KOKKOS_USE_TPLS ?= "" # Options: c++17,c++1z,c++20,c++2a,c++23,c++2b KOKKOS_CXX_STANDARD ?= "c++17" @@ -56,7 +56,7 @@ uppercase_internal=$(if $1,$$(subst $(firstword $1),$(call uppercase_internal,$( 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) +# Example: $(call kokkos_has_string,"hwloc,libdl",hwloc) # Will return a 1 kokkos_has_string=$(if $(findstring $(call uppercase,$2),$(call uppercase,$1)),1,0) # Returns 1 if the path exists, 0 otherwise @@ -73,11 +73,11 @@ KOKKOS_INTERNAL_ENABLE_CXX20 := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD), KOKKOS_INTERNAL_ENABLE_CXX2A := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD),c++2a) KOKKOS_INTERNAL_ENABLE_CXX23 := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD),c++23) KOKKOS_INTERNAL_ENABLE_CXX2B := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD),c++2b) +KOKKOS_INTERNAL_ENABLE_CXX26 := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD),c++26) +KOKKOS_INTERNAL_ENABLE_CXX2C := $(call kokkos_has_string,$(KOKKOS_CXX_STANDARD),c++2c) # Check for external libraries. KOKKOS_INTERNAL_USE_HWLOC := $(call kokkos_has_string,$(KOKKOS_USE_TPLS),hwloc) -KOKKOS_INTERNAL_USE_LIBRT := $(call kokkos_has_string,$(KOKKOS_USE_TPLS),librt) -KOKKOS_INTERNAL_USE_MEMKIND := $(call kokkos_has_string,$(KOKKOS_USE_TPLS),experimental_memkind) # Check for advanced settings. KOKKOS_INTERNAL_ENABLE_COMPILER_WARNINGS := $(call kokkos_has_string,$(KOKKOS_OPTIONS),compiler_warnings) @@ -318,7 +318,6 @@ endif # Intel based. KOKKOS_INTERNAL_USE_ARCH_KNC := $(call kokkos_has_string,$(KOKKOS_ARCH),KNC) -KOKKOS_INTERNAL_USE_ARCH_WSM := $(call kokkos_has_string,$(KOKKOS_ARCH),WSM) KOKKOS_INTERNAL_USE_ARCH_SNB := $(call kokkos_has_string,$(KOKKOS_ARCH),SNB) KOKKOS_INTERNAL_USE_ARCH_HSW := $(call kokkos_has_string,$(KOKKOS_ARCH),HSW) KOKKOS_INTERNAL_USE_ARCH_BDW := $(call kokkos_has_string,$(KOKKOS_ARCH),BDW) @@ -398,11 +397,9 @@ KOKKOS_INTERNAL_USE_ARCH_A64FX := $(call kokkos_has_string,$(KOKKOS_ARCH),A64FX) KOKKOS_INTERNAL_USE_ARCH_ARM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ARMV80)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV81)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX2)+$(KOKKOS_INTERNAL_USE_ARCH_A64FX) | bc)) # IBM based. -KOKKOS_INTERNAL_USE_ARCH_BGQ := $(call kokkos_has_string,$(KOKKOS_ARCH),BGQ) -KOKKOS_INTERNAL_USE_ARCH_POWER7 := $(call kokkos_has_string,$(KOKKOS_ARCH),Power7) KOKKOS_INTERNAL_USE_ARCH_POWER8 := $(call kokkos_has_string,$(KOKKOS_ARCH),Power8) KOKKOS_INTERNAL_USE_ARCH_POWER9 := $(call kokkos_has_string,$(KOKKOS_ARCH),Power9) -KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_BGQ)+$(KOKKOS_INTERNAL_USE_ARCH_POWER7)+$(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc)) +KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc)) # AMD based. KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX) @@ -413,20 +410,37 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ZEN3), 0) KOKKOS_INTERNAL_USE_ARCH_ZEN := $(call kokkos_has_string,$(KOKKOS_ARCH),Zen) endif endif -KOKKOS_INTERNAL_USE_ARCH_AMD_GFX906 := $(or $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA906),$(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX906)) -KOKKOS_INTERNAL_USE_ARCH_AMD_GFX908 := $(or $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA908),$(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX908)) -KOKKOS_INTERNAL_USE_ARCH_AMD_GFX90A := $(or $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA90A),$(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX90A)) -KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1030 := $(or $(call kokkos_has_string,$(KOKKOS_ARCH),NAVI1030),$(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX1030)) -KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100 := $(or $(call kokkos_has_string,$(KOKKOS_ARCH),NAVI1100),$(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX1100)) + +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX906 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX906) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX906), 0) + KOKKOS_INTERNAL_USE_ARCH_AMD_GFX906 := $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA906) +endif +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX908 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX908) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX908), 0) + KOKKOS_INTERNAL_USE_ARCH_AMD_GFX908 := $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA908) +endif +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX90A := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX90A) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX90A), 0) + KOKKOS_INTERNAL_USE_ARCH_AMD_GFX90A := $(call kokkos_has_string,$(KOKKOS_ARCH),VEGA90A) +endif +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX940 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX940) +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX942 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX942) +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1030 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX1030) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1030), 0) + KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1030 := $(call kokkos_has_string,$(KOKKOS_ARCH),NAVI1030) +endif +KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX1100) +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100), 0) + KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100 := $(call kokkos_has_string,$(KOKKOS_ARCH),NAVI1100) +endif # Any AVX? -KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_WSM)) KOKKOS_INTERNAL_USE_ARCH_AVX := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_SNB) + $(KOKKOS_INTERNAL_USE_ARCH_AMDAVX)) KOKKOS_INTERNAL_USE_ARCH_AVX2 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_HSW) + $(KOKKOS_INTERNAL_USE_ARCH_BDW) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN2) + $(KOKKOS_INTERNAL_USE_ARCH_ZEN3)) KOKKOS_INTERNAL_USE_ARCH_AVX512MIC := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_KNL)) # Incompatible flags? -KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_SSE42)+$(KOKKOS_INTERNAL_USE_ARCH_AVX)+$(KOKKOS_INTERNAL_USE_ARCH_AVX2)+$(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC)+$(KOKKOS_INTERNAL_USE_ARCH_SKL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX)+$(KOKKOS_INTERNAL_USE_ARCH_ICL)+$(KOKKOS_INTERNAL_USE_ARCH_ICX)+$(KOKKOS_INTERNAL_USE_ARCH_SPR)+$(KOKKOS_INTERNAL_USE_ARCH_KNC)+$(KOKKOS_INTERNAL_USE_ARCH_IBM)+$(KOKKOS_INTERNAL_USE_ARCH_ARM)>1") | bc) +KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_AVX)+$(KOKKOS_INTERNAL_USE_ARCH_AVX2)+$(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC)+$(KOKKOS_INTERNAL_USE_ARCH_SKL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX)+$(KOKKOS_INTERNAL_USE_ARCH_ICL)+$(KOKKOS_INTERNAL_USE_ARCH_ICX)+$(KOKKOS_INTERNAL_USE_ARCH_SPR)+$(KOKKOS_INTERNAL_USE_ARCH_KNC)+$(KOKKOS_INTERNAL_USE_ARCH_IBM)+$(KOKKOS_INTERNAL_USE_ARCH_ARM)>1") | bc) KOKKOS_INTERNAL_USE_ARCH_MULTIGPU := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_NVIDIA)>1") | bc) ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MULTIHOST), 1) @@ -571,6 +585,16 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX2B), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX2B_FLAG) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_CXX23") endif +ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX26), 1) + #I cannot make CMake add this in a good way - so add it here + KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX26_FLAG) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_CXX26") +endif +ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX2C), 1) + #I cannot make CMake add this in a good way - so add it here + KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX2C_FLAG) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_CXX26") +endif ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -610,27 +634,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_HWLOC), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_HWLOC") endif -ifeq ($(KOKKOS_INTERNAL_USE_LIBRT), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_USE_LIBRT") - KOKKOS_LIBS += -lrt - KOKKOS_TPL_LIBRARY_NAMES += rt -endif - -ifeq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1) - ifneq ($(KOKKOS_CMAKE), yes) - ifneq ($(MEMKIND_PATH),) - KOKKOS_CPPFLAGS += -I$(MEMKIND_PATH)/include - KOKKOS_LIBDIRS += -L$(MEMKIND_PATH)/lib - KOKKOS_CXXLDFLAGS += -L$(MEMKIND_PATH)/lib - KOKKOS_TPL_INCLUDE_DIRS += $(MEMKIND_PATH)/include - KOKKOS_TPL_LIBRARY_DIRS += $(MEMKIND_PATH)/lib - endif - KOKKOS_LIBS += -lmemkind -lnuma - KOKKOS_TPL_LIBRARY_NAMES += memkind numa - endif - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_HBWSPACE") -endif - ifeq ($(KOKKOS_INTERNAL_ENABLE_LARGE_MEM_TESTS), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_LARGE_MEM_TESTS") endif @@ -697,10 +700,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) endif endif - ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_IMPL_CUDA_CLANG_WORKAROUND") - endif - ifeq ($(KOKKOS_INTERNAL_CUDA_DISABLE_MALLOC_ASYNC), 0) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ENABLE_IMPL_CUDA_MALLOC_ASYNC") else @@ -825,20 +824,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX2), 1) endif endif -ifeq ($(KOKKOS_INTERNAL_USE_ARCH_SSE42), 1) - tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_SSE42") - - ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1) - KOKKOS_CXXFLAGS += -xSSE4.2 - KOKKOS_LDFLAGS += -xSSE4.2 - else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) - else - # Assume that this is a really a GNU compiler. - KOKKOS_CXXFLAGS += -msse4.2 - KOKKOS_LDFLAGS += -msse4.2 - endif -endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AVX") @@ -1113,6 +1098,11 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX90A), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GPU") KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx90a endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX940), 1) + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GFX940") + tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GPU") + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx940 +endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX942), 1) tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GFX942") tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GPU") @@ -1242,7 +1232,6 @@ ifneq ($(KOKKOS_INTERNAL_NEW_CONFIG), 0) tmp := $(call kokkos_update_config_header, KOKKOS_FWD_HPP_, "KokkosCore_Config_FwdBackend.tmp", "KokkosCore_Config_FwdBackend.hpp") tmp := $(call kokkos_update_config_header, KOKKOS_SETUP_HPP_, "KokkosCore_Config_SetupBackend.tmp", "KokkosCore_Config_SetupBackend.hpp") tmp := $(call kokkos_update_config_header, KOKKOS_DECLARE_HPP_, "KokkosCore_Config_DeclareBackend.tmp", "KokkosCore_Config_DeclareBackend.hpp") - tmp := $(call kokkos_update_config_header, KOKKOS_POST_INCLUDE_HPP_, "KokkosCore_Config_PostInclude.tmp", "KokkosCore_Config_PostInclude.hpp") ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_FwdBackend.hpp") tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_DeclareBackend.hpp") @@ -1282,10 +1271,6 @@ ifneq ($(KOKKOS_INTERNAL_NEW_CONFIG), 0) tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_FwdBackend.hpp") tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_DeclareBackend.hpp") endif - ifeq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1) - tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_FwdBackend.hpp") - tmp := $(call kokkos_append_config_header,"$H""include ","KokkosCore_Config_DeclareBackend.hpp") - endif endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/*.hpp) @@ -1396,11 +1381,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) KOKKOS_TPL_LIBRARY_NAMES += hpx endif -# Don't include Kokkos_HBWSpace.cpp if not using MEMKIND to avoid a link warning. -ifneq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1) - KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp,$(KOKKOS_SRC)) -endif - # With Cygwin functions such as fdopen and fileno are not defined # when strict ansi is enabled. strict ansi gets enabled with -std=c++14 # though. So we hard undefine it here. Not sure if that has any bad side effects @@ -1454,6 +1434,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) else tmp := $(call desul_append_header,"/* $H""undef DESUL_ATOMICS_ENABLE_OPENMP */") endif + +ifeq ($(KOKKOS_INTERNAL_USE_OPENACC), 1) + tmp := $(call desul_append_header,"$H""define DESUL_ATOMICS_ENABLE_OPENACC") +else + tmp := $(call desul_append_header,"/* $H""undef DESUL_ATOMICS_ENABLE_OPENACC */") +endif tmp := $(call desul_append_header, "") tmp := $(call desul_append_header, "$H""endif") @@ -1486,7 +1472,7 @@ include $(KOKKOS_PATH)/Makefile.targets kokkos-clean: rm -f $(KOKKOS_OBJ_LINK) $(DESUL_CONFIG_HEADER) $(DESUL_INTERNAL_CONFIG_TMP) KokkosCore_config.h KokkosCore_config.tmp libkokkos.a KokkosCore_Config_SetupBackend.hpp \ KokkosCore_Config_FwdBackend.hpp KokkosCore_Config_DeclareBackend.hpp KokkosCore_Config_DeclareBackend.tmp \ - KokkosCore_Config_FwdBackend.tmp KokkosCore_Config_PostInclude.hpp KokkosCore_Config_PostInclude.tmp KokkosCore_Config_SetupBackend.tmp + KokkosCore_Config_FwdBackend.tmp KokkosCore_Config_SetupBackend.tmp libkokkos.a: $(KOKKOS_OBJ_LINK) $(KOKKOS_SRC) $(KOKKOS_HEADERS) ar cr libkokkos.a $(KOKKOS_OBJ_LINK) diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index ec8770dd7de..e6900a822a8 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -20,8 +20,6 @@ Kokkos_TaskQueue.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Ta $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_TaskQueue.cpp Kokkos_HostThreadTeam.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostThreadTeam.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostThreadTeam.cpp -Kokkos_Spinwait.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Spinwait.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_Spinwait.cpp Kokkos_HostBarrier.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostBarrier.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostBarrier.cpp Kokkos_Profiling.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Profiling.cpp @@ -30,8 +28,6 @@ Kokkos_SharedAlloc.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_SharedAlloc.cpp Kokkos_MemoryPool.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp -Kokkos_MemorySpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_MemorySpace.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_MemorySpace.cpp Kokkos_HostSpace_deepcopy.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostSpace_deepcopy.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostSpace_deepcopy.cpp Kokkos_NumericTraits.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_NumericTraits.cpp @@ -82,8 +78,10 @@ Lock_Array_HIP.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/tpls/desul/src/Lock_Array endif ifeq ($(KOKKOS_INTERNAL_USE_THREADS), 1) -Kokkos_ThreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp +Kokkos_Threads_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_Threads_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_Threads_Instance.cpp +Kokkos_Threads_Spinwait.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_Threads_Spinwait.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_Spinwait.cpp endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -123,6 +121,3 @@ Kokkos_OpenACC_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenACC Kokkos_OpenACC_SharedAllocationRecord.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp endif - -Kokkos_HBWSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp diff --git a/lib/kokkos/README.md b/lib/kokkos/README.md index 033346e956e..19793bb82d9 100644 --- a/lib/kokkos/README.md +++ b/lib/kokkos/README.md @@ -28,7 +28,7 @@ To start learning about Kokkos: - [Use cases and Examples](https://kokkos.github.io/kokkos-core-wiki/usecases.html): a series of examples ranging from how to use Kokkos with MPI to Fortran interoperability. -For questions find us on Slack: https://kokkosteam.slack.com or open a github issue. +For questions find us on Slack: https://kokkosteam.slack.com or open a GitHub issue. For non-public questions send an email to: *crtrott(at)sandia.gov* @@ -48,10 +48,10 @@ Please see the [following page](https://kokkos.github.io/kokkos-core-wiki/citati # License -[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) +[![License](https://img.shields.io/badge/License-Apache--2.0_WITH_LLVM--exception-blue)](https://spdx.org/licenses/LLVM-exception.html) Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software. -The full license statement used in all headers is available [here](https://kokkos.github.io/kokkos-core-wiki/license.html) or -[here](https://github.com/kokkos/kokkos/blob/master/LICENSE). +The full license statement used in all headers is available [here](https://kokkos.org/kokkos-core-wiki/license.html) or +[here](https://github.com/kokkos/kokkos/blob/develop/LICENSE). diff --git a/lib/kokkos/SECURITY.md b/lib/kokkos/SECURITY.md new file mode 100644 index 00000000000..93cf6e3663e --- /dev/null +++ b/lib/kokkos/SECURITY.md @@ -0,0 +1,12 @@ +# Reporting Security Issues + +To report a security issue, please email +[lebrungrandt@ornl.gov](mailto:lebrungrandt@ornl.gov) +and [crtrott@sandia.gov](mailto:crtrott@sandia.gov) +with a description of the issue, the steps you took to create the issue, +affected versions, and, if known, mitigations for the issue. + +Our vulnerability management team will respond within 5 working days of your +email. If the issue is confirmed as a vulnerability, we will open a +Security Advisory and acknowledge your contributions as part of it. This project +follows a 90 day disclosure timeline. diff --git a/lib/kokkos/Spack.md b/lib/kokkos/Spack.md index 79606c259d5..06c763a64ee 100644 --- a/lib/kokkos/Spack.md +++ b/lib/kokkos/Spack.md @@ -159,7 +159,6 @@ If you don't specify a CUDA build variant in a `packages.yaml` and you build you > spack install superscience ```` you may end up just getting the default Kokkos (i.e. Serial). -Some examples are included in the `config/yaml` folder for common platforms. Before running `spack install ` we recommend running `spack spec ` to confirm your dependency tree is correct. For example, with Kokkos Kernels: ````bash diff --git a/lib/kokkos/algorithms/src/CMakeLists.txt b/lib/kokkos/algorithms/src/CMakeLists.txt index 16957789472..b490caca628 100644 --- a/lib/kokkos/algorithms/src/CMakeLists.txt +++ b/lib/kokkos/algorithms/src/CMakeLists.txt @@ -30,5 +30,5 @@ KOKKOS_LIB_INCLUDE_DIRECTORIES(kokkosalgorithms ${CMAKE_CURRENT_SOURCE_DIR} ) - - +KOKKOS_LINK_TPL(kokkoscontainers PUBLIC ROCTHRUST) +KOKKOS_LINK_TPL(kokkoscore PUBLIC ONEDPL) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 2d7d236d2fc..7df12b8518e 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -849,18 +849,17 @@ class Random_XorShift64 { return drand(end - start) + start; } - // Marsaglia polar method for drawing a standard normal distributed random + // Box-muller method for drawing a standard normal distributed random // number KOKKOS_INLINE_FUNCTION double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * std::log(S) / S); + constexpr auto two_pi = 2 * Kokkos::numbers::pi_v; + + const double u = drand(); + const double v = drand(); + const double r = Kokkos::sqrt(-2.0 * Kokkos::log(u)); + const double theta = v * two_pi; + return r * Kokkos::cos(theta); } KOKKOS_INLINE_FUNCTION @@ -1094,18 +1093,17 @@ class Random_XorShift1024 { return drand(end - start) + start; } - // Marsaglia polar method for drawing a standard normal distributed random + // Box-muller method for drawing a standard normal distributed random // number KOKKOS_INLINE_FUNCTION double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * std::log(S) / S); + constexpr auto two_pi = 2 * Kokkos::numbers::pi_v; + + const double u = drand(); + const double v = drand(); + const double r = Kokkos::sqrt(-2.0 * Kokkos::log(u)); + const double theta = v * two_pi; + return r * Kokkos::cos(theta); } KOKKOS_INLINE_FUNCTION @@ -1545,13 +1543,23 @@ template void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type begin, typename ViewType::const_value_type end) { - fill_random(typename ViewType::execution_space{}, a, g, begin, end); + Kokkos::fence( + "fill_random: fence before since no execution space instance provided"); + typename ViewType::execution_space exec; + fill_random(exec, a, g, begin, end); + exec.fence( + "fill_random: fence after since no execution space instance provided"); } template void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type range) { - fill_random(typename ViewType::execution_space{}, a, g, 0, range); + Kokkos::fence( + "fill_random: fence before since no execution space instance provided"); + typename ViewType::execution_space exec; + fill_random(exec, a, g, 0, range); + exec.fence( + "fill_random: fence after since no execution space instance provided"); } } // namespace Kokkos diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index f77484cc555..136b4ec82dc 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -23,6 +23,7 @@ #include "sorting/Kokkos_BinSortPublicAPI.hpp" #include "sorting/Kokkos_SortPublicAPI.hpp" +#include "sorting/Kokkos_SortByKeyPublicAPI.hpp" #include "sorting/Kokkos_NestedSortPublicAPI.hpp" #ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_SORT diff --git a/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp b/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp index 436ae0d10bf..b532a774e13 100644 --- a/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_StdAlgorithms.hpp @@ -35,7 +35,6 @@ // following the std classification. // modifying ops -#include "std_algorithms/Kokkos_Swap.hpp" #include "std_algorithms/Kokkos_IterSwap.hpp" // non-modifying sequence diff --git a/lib/kokkos/algorithms/src/sorting/Kokkos_SortByKeyPublicAPI.hpp b/lib/kokkos/algorithms/src/sorting/Kokkos_SortByKeyPublicAPI.hpp new file mode 100644 index 00000000000..fc73eccad68 --- /dev/null +++ b/lib/kokkos/algorithms/src/sorting/Kokkos_SortByKeyPublicAPI.hpp @@ -0,0 +1,117 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_SORT_BY_KEY_PUBLIC_API_HPP_ +#define KOKKOS_SORT_BY_KEY_PUBLIC_API_HPP_ + +#include "./impl/Kokkos_SortByKeyImpl.hpp" +#include +#include + +namespace Kokkos::Experimental { + +// --------------------------------------------------------------- +// basic overloads +// --------------------------------------------------------------- + +template +void sort_by_key( + const ExecutionSpace& exec, + const Kokkos::View& keys, + const Kokkos::View& values) { + // constraints + using KeysType = Kokkos::View; + using ValuesType = Kokkos::View; + ::Kokkos::Impl::static_assert_is_admissible_to_kokkos_sort_by_key(keys); + ::Kokkos::Impl::static_assert_is_admissible_to_kokkos_sort_by_key(values); + + static_assert(SpaceAccessibility::accessible, + "Kokkos::sort: execution space instance is not able to access " + "the memory space of the keys View argument!"); + static_assert( + SpaceAccessibility::accessible, + "Kokkos::sort: execution space instance is not able to access " + "the memory space of the values View argument!"); + + static_assert(KeysType::static_extent(0) == 0 || + ValuesType::static_extent(0) == 0 || + KeysType::static_extent(0) == ValuesType::static_extent(0)); + if (values.size() != keys.size()) + Kokkos::abort((std::string("values and keys extents must be the same. The " + "values extent is ") + + std::to_string(values.size()) + ", and the keys extent is " + + std::to_string(keys.size()) + ".") + .c_str()); + + if (keys.extent(0) <= 1) { + return; + } + + ::Kokkos::Impl::sort_by_key_device_view_without_comparator(exec, keys, + values); +} + +// --------------------------------------------------------------- +// overloads supporting a custom comparator +// --------------------------------------------------------------- + +template +void sort_by_key( + const ExecutionSpace& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + const ComparatorType& comparator) { + // constraints + using KeysType = Kokkos::View; + using ValuesType = Kokkos::View; + ::Kokkos::Impl::static_assert_is_admissible_to_kokkos_sort_by_key(keys); + ::Kokkos::Impl::static_assert_is_admissible_to_kokkos_sort_by_key(values); + + static_assert(SpaceAccessibility::accessible, + "Kokkos::sort: execution space instance is not able to access " + "the memory space of the keys View argument!"); + static_assert( + SpaceAccessibility::accessible, + "Kokkos::sort: execution space instance is not able to access " + "the memory space of the values View argument!"); + + static_assert(KeysType::static_extent(0) == 0 || + ValuesType::static_extent(0) == 0 || + KeysType::static_extent(0) == ValuesType::static_extent(0)); + if (values.size() != keys.size()) + Kokkos::abort((std::string("values and keys extents must be the same. The " + "values extent is ") + + std::to_string(values.size()) + ", and the keys extent is " + + std::to_string(keys.size()) + ".") + .c_str()); + + if (keys.extent(0) <= 1) { + return; + } + + ::Kokkos::Impl::sort_by_key_device_view_with_comparator(exec, keys, values, + comparator); +} + +} // namespace Kokkos::Experimental +#endif diff --git a/lib/kokkos/algorithms/src/sorting/Kokkos_SortPublicAPI.hpp b/lib/kokkos/algorithms/src/sorting/Kokkos_SortPublicAPI.hpp index a763c41e580..308e9e3a008 100644 --- a/lib/kokkos/algorithms/src/sorting/Kokkos_SortPublicAPI.hpp +++ b/lib/kokkos/algorithms/src/sorting/Kokkos_SortPublicAPI.hpp @@ -29,7 +29,7 @@ namespace Kokkos { // --------------------------------------------------------------- template -void sort([[maybe_unused]] const ExecutionSpace& exec, +void sort(const ExecutionSpace& exec, const Kokkos::View& view) { // constraints using ViewType = Kokkos::View; @@ -52,6 +52,7 @@ void sort([[maybe_unused]] const ExecutionSpace& exec, } if constexpr (Impl::better_off_calling_std_sort_v) { + exec.fence("Kokkos::sort without comparator use std::sort"); auto first = ::Kokkos::Experimental::begin(view); auto last = ::Kokkos::Experimental::end(view); std::sort(first, last); @@ -82,7 +83,7 @@ void sort(const Kokkos::View& view) { // --------------------------------------------------------------- template -void sort([[maybe_unused]] const ExecutionSpace& exec, +void sort(const ExecutionSpace& exec, const Kokkos::View& view, const ComparatorType& comparator) { // constraints @@ -105,6 +106,7 @@ void sort([[maybe_unused]] const ExecutionSpace& exec, } if constexpr (Impl::better_off_calling_std_sort_v) { + exec.fence("Kokkos::sort with comparator use std::sort"); auto first = ::Kokkos::Experimental::begin(view); auto last = ::Kokkos::Experimental::end(view); std::sort(first, last, comparator); diff --git a/lib/kokkos/algorithms/src/sorting/impl/Kokkos_NestedSortImpl.hpp b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_NestedSortImpl.hpp index 50ac8233195..2fe58272d92 100644 --- a/lib/kokkos/algorithms/src/sorting/impl/Kokkos_NestedSortImpl.hpp +++ b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_NestedSortImpl.hpp @@ -18,7 +18,6 @@ #define KOKKOS_NESTED_SORT_IMPL_HPP_ #include -#include namespace Kokkos { namespace Experimental { @@ -99,7 +98,7 @@ KOKKOS_INLINE_FUNCTION void sort_nested_impl( keyView(elem1) = key2; keyView(elem2) = key1; if constexpr (!std::is_same_v) { - Kokkos::Experimental::swap(valueView(elem1), valueView(elem2)); + Kokkos::kokkos_swap(valueView(elem1), valueView(elem2)); } } } diff --git a/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortByKeyImpl.hpp b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortByKeyImpl.hpp new file mode 100644 index 00000000000..36deccdfb1e --- /dev/null +++ b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortByKeyImpl.hpp @@ -0,0 +1,401 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_SORT_BY_KEY_FREE_FUNCS_IMPL_HPP_ +#define KOKKOS_SORT_BY_KEY_FREE_FUNCS_IMPL_HPP_ + +#include + +#if defined(KOKKOS_ENABLE_CUDA) + +// Workaround for `Instruction 'shfl' without '.sync' is not supported on +// .target sm_70 and higher from PTX ISA version 6.4`. +// Also see https://github.com/NVIDIA/cub/pull/170. +#if !defined(CUB_USE_COOPERATIVE_GROUPS) +#define CUB_USE_COOPERATIVE_GROUPS +#endif + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wshadow" + +#if defined(KOKKOS_COMPILER_CLANG) +// Some versions of Clang fail to compile Thrust, failing with errors like +// this: +// /thrust/system/cuda/detail/core/agent_launcher.h:557:11: +// error: use of undeclared identifier 'va_printf' +// The exact combination of versions for Clang and Thrust (or CUDA) for this +// failure was not investigated, however even very recent version combination +// (Clang 10.0.0 and Cuda 10.0) demonstrated failure. +// +// Defining _CubLog here locally allows us to avoid that code path, however +// disabling some debugging diagnostics +#pragma push_macro("_CubLog") +#ifdef _CubLog +#undef _CubLog +#endif +#define _CubLog +#include +#include +#pragma pop_macro("_CubLog") +#else +#include +#include +#endif + +#pragma GCC diagnostic pop + +#endif + +#if defined(KOKKOS_ENABLE_ROCTHRUST) +#include +#include +#endif + +#if defined(KOKKOS_ENABLE_ONEDPL) && \ + (ONEDPL_VERSION_MAJOR > 2022 || \ + (ONEDPL_VERSION_MAJOR == 2022 && ONEDPL_VERSION_MINOR >= 2)) +#define KOKKOS_ONEDPL_HAS_SORT_BY_KEY +#include +#include +#endif + +namespace Kokkos::Impl { + +template +constexpr inline bool is_admissible_to_kokkos_sort_by_key = + ::Kokkos::is_view::value&& T::rank() == 1 && + (std::is_same::value || + std::is_same::value || + std::is_same::value); + +template +KOKKOS_INLINE_FUNCTION constexpr void +static_assert_is_admissible_to_kokkos_sort_by_key(const ViewType& /* view */) { + static_assert(is_admissible_to_kokkos_sort_by_key, + "Kokkos::sort_by_key only accepts 1D values View with " + "LayoutRight, LayoutLeft or LayoutStride."); +} + +// For the fallback implementation for sort_by_key using Kokkos::sort, we need +// to consider if Kokkos::sort defers to the fallback implementation that copies +// the array to the host and uses std::sort, see +// copy_to_host_run_stdsort_copy_back() in impl/Kokkos_SortImpl.hpp. If +// sort_on_device_v is true, we assume that std::sort doesn't copy data. +// Otherwise, we manually copy all data to the host and provide Kokkos::sort +// with a host execution space. +template +inline constexpr bool sort_on_device_v = false; + +#if defined(KOKKOS_ENABLE_CUDA) +template +inline constexpr bool sort_on_device_v = true; + +template +void sort_by_key_cudathrust( + const Kokkos::Cuda& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + MaybeComparator&&... maybeComparator) { + const auto policy = thrust::cuda::par.on(exec.cuda_stream()); + auto keys_first = ::Kokkos::Experimental::begin(keys); + auto keys_last = ::Kokkos::Experimental::end(keys); + auto values_first = ::Kokkos::Experimental::begin(values); + thrust::sort_by_key(policy, keys_first, keys_last, values_first, + std::forward(maybeComparator)...); +} +#endif + +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +inline constexpr bool sort_on_device_v = true; + +template +void sort_by_key_rocthrust( + const Kokkos::HIP& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + MaybeComparator&&... maybeComparator) { + const auto policy = thrust::hip::par.on(exec.hip_stream()); + auto keys_first = ::Kokkos::Experimental::begin(keys); + auto keys_last = ::Kokkos::Experimental::end(keys); + auto values_first = ::Kokkos::Experimental::begin(values); + thrust::sort_by_key(policy, keys_first, keys_last, values_first, + std::forward(maybeComparator)...); +} +#endif + +#if defined(KOKKOS_ENABLE_ONEDPL) +template +inline constexpr bool sort_on_device_v = + std::is_same_v || + std::is_same_v; + +#ifdef KOKKOS_ONEDPL_HAS_SORT_BY_KEY +template +void sort_by_key_onedpl( + const Kokkos::Experimental::SYCL& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + MaybeComparator&&... maybeComparator) { + if (keys.stride(0) != 1 && values.stride(0) != 1) { + Kokkos::abort( + "SYCL sort_by_key only supports rank-1 Views with stride(0) = 1."); + } + + // Can't use Experimental::begin/end here since the oneDPL then assumes that + // the data is on the host. + auto queue = exec.sycl_queue(); + auto policy = oneapi::dpl::execution::make_device_policy(queue); + const int n = keys.extent(0); + oneapi::dpl::sort_by_key(policy, keys.data(), keys.data() + n, values.data(), + std::forward(maybeComparator)...); +} +#endif +#endif + +template +void applyPermutation(const ExecutionSpace& space, + const PermutationView& permutation, + const ViewType& view) { + static_assert(std::is_integral::value); + + auto view_copy = Kokkos::create_mirror( + Kokkos::view_alloc(space, typename ExecutionSpace::memory_space{}, + Kokkos::WithoutInitializing), + view); + Kokkos::deep_copy(space, view_copy, view); + Kokkos::parallel_for( + "Kokkos::sort_by_key_via_sort::permute_" + view.label(), + Kokkos::RangePolicy(space, 0, view.extent(0)), + KOKKOS_LAMBDA(int i) { view(i) = view_copy(permutation(i)); }); +} + +template +void sort_by_key_via_sort( + const ExecutionSpace& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + MaybeComparator&&... maybeComparator) { + static_assert(sizeof...(MaybeComparator) <= 1); + + auto const n = keys.size(); + + Kokkos::View permute( + Kokkos::view_alloc(exec, Kokkos::WithoutInitializing, + "Kokkos::sort_by_key_via_sort::permute"), + n); + + // iota + Kokkos::parallel_for( + "Kokkos::sort_by_key_via_sort::iota", + Kokkos::RangePolicy(exec, 0, n), + KOKKOS_LAMBDA(int i) { permute(i) = i; }); + + using Layout = + typename Kokkos::View::array_layout; + if constexpr (!sort_on_device_v) { + auto host_keys = Kokkos::create_mirror_view( + Kokkos::view_alloc(Kokkos::HostSpace{}, Kokkos::WithoutInitializing), + keys); + auto host_permute = Kokkos::create_mirror_view( + Kokkos::view_alloc(Kokkos::HostSpace{}, Kokkos::WithoutInitializing), + permute); + Kokkos::deep_copy(exec, host_keys, keys); + Kokkos::deep_copy(exec, host_permute, permute); + + exec.fence("Kokkos::Impl::sort_by_key_via_sort: before host sort"); + Kokkos::DefaultHostExecutionSpace host_exec; + + if constexpr (sizeof...(MaybeComparator) == 0) { + Kokkos::sort( + host_exec, host_permute, + KOKKOS_LAMBDA(int i, int j) { return host_keys(i) < host_keys(j); }); + } else { + auto keys_comparator = + std::get<0>(std::tuple(maybeComparator...)); + Kokkos::sort( + host_exec, host_permute, KOKKOS_LAMBDA(int i, int j) { + return keys_comparator(host_keys(i), host_keys(j)); + }); + } + host_exec.fence("Kokkos::Impl::sort_by_key_via_sort: after host sort"); + Kokkos::deep_copy(exec, permute, host_permute); + } else { +#ifdef KOKKOS_ENABLE_SYCL + auto* raw_keys_in_comparator = keys.data(); + auto stride = keys.stride(0); + if constexpr (sizeof...(MaybeComparator) == 0) { + Kokkos::sort( + exec, permute, KOKKOS_LAMBDA(int i, int j) { + return raw_keys_in_comparator[i * stride] < + raw_keys_in_comparator[j * stride]; + }); + } else { + auto keys_comparator = + std::get<0>(std::tuple(maybeComparator...)); + Kokkos::sort( + exec, permute, KOKKOS_LAMBDA(int i, int j) { + return keys_comparator(raw_keys_in_comparator[i * stride], + raw_keys_in_comparator[j * stride]); + }); + } +#else + if constexpr (sizeof...(MaybeComparator) == 0) { + Kokkos::sort( + exec, permute, + KOKKOS_LAMBDA(int i, int j) { return keys(i) < keys(j); }); + } else { + auto keys_comparator = + std::get<0>(std::tuple(maybeComparator...)); + Kokkos::sort( + exec, permute, KOKKOS_LAMBDA(int i, int j) { + return keys_comparator(keys(i), keys(j)); + }); + } +#endif + } + + applyPermutation(exec, permute, keys); + applyPermutation(exec, permute, values); +} + +// ------------------------------------------------------ +// +// specialize cases for sorting by key without comparator +// +// ------------------------------------------------------ + +#if defined(KOKKOS_ENABLE_CUDA) +template +void sort_by_key_device_view_without_comparator( + const Kokkos::Cuda& exec, + const Kokkos::View& keys, + const Kokkos::View& values) { + sort_by_key_cudathrust(exec, keys, values); +} +#endif + +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +void sort_by_key_device_view_without_comparator( + const Kokkos::HIP& exec, + const Kokkos::View& keys, + const Kokkos::View& values) { + sort_by_key_rocthrust(exec, keys, values); +} +#endif + +#if defined(KOKKOS_ENABLE_ONEDPL) +template +void sort_by_key_device_view_without_comparator( + const Kokkos::Experimental::SYCL& exec, + const Kokkos::View& keys, + const Kokkos::View& values) { +#ifdef KOKKOS_ONEDPL_HAS_SORT_BY_KEY + if (keys.stride(0) == 1 && values.stride(0) == 1) + sort_by_key_onedpl(exec, keys, values); + else +#endif + sort_by_key_via_sort(exec, keys, values); +} +#endif + +// fallback case +template +std::enable_if_t::value> +sort_by_key_device_view_without_comparator( + const ExecutionSpace& exec, + const Kokkos::View& keys, + const Kokkos::View& values) { + sort_by_key_via_sort(exec, keys, values); +} + +// --------------------------------------------------- +// +// specialize cases for sorting by key with comparator +// +// --------------------------------------------------- + +#if defined(KOKKOS_ENABLE_CUDA) +template +void sort_by_key_device_view_with_comparator( + const Kokkos::Cuda& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + const ComparatorType& comparator) { + sort_by_key_cudathrust(exec, keys, values, comparator); +} +#endif + +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +void sort_by_key_device_view_with_comparator( + const Kokkos::HIP& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + const ComparatorType& comparator) { + sort_by_key_rocthrust(exec, keys, values, comparator); +} +#endif + +#if defined(KOKKOS_ENABLE_ONEDPL) +template +void sort_by_key_device_view_with_comparator( + const Kokkos::Experimental::SYCL& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + const ComparatorType& comparator) { +#ifdef KOKKOS_ONEDPL_HAS_SORT_BY_KEY + if (keys.stride(0) == 1 && values.stride(0) == 1) + sort_by_key_onedpl(exec, keys, values, comparator); + else +#endif + sort_by_key_via_sort(exec, keys, values, comparator); +} +#endif + +// fallback case +template +std::enable_if_t::value> +sort_by_key_device_view_with_comparator( + const ExecutionSpace& exec, + const Kokkos::View& keys, + const Kokkos::View& values, + const ComparatorType& comparator) { + sort_by_key_via_sort(exec, keys, values, comparator); +} + +#undef KOKKOS_ONEDPL_HAS_SORT_BY_KEY + +} // namespace Kokkos::Impl +#endif diff --git a/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortImpl.hpp b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortImpl.hpp index d87ab09e772..4c174b5fda9 100644 --- a/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortImpl.hpp +++ b/lib/kokkos/algorithms/src/sorting/impl/Kokkos_SortImpl.hpp @@ -63,6 +63,11 @@ #endif +#if defined(KOKKOS_ENABLE_ROCTHRUST) +#include +#include +#endif + #if defined(KOKKOS_ENABLE_ONEDPL) #include #include @@ -184,6 +189,26 @@ void sort_cudathrust(const Cuda& space, } #endif +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +void sort_rocthrust(const HIP& space, + const Kokkos::View& view, + MaybeComparator&&... maybeComparator) { + using ViewType = Kokkos::View; + static_assert(ViewType::rank == 1, + "Kokkos::sort: currently only supports rank-1 Views."); + + if (view.extent(0) <= 1) { + return; + } + const auto exec = thrust::hip::par.on(space.hip_stream()); + auto first = ::Kokkos::Experimental::begin(view); + auto last = ::Kokkos::Experimental::end(view); + thrust::sort(exec, first, last, + std::forward(maybeComparator)...); +} +#endif + #if defined(KOKKOS_ENABLE_ONEDPL) template void sort_onedpl(const Kokkos::Experimental::SYCL& space, @@ -274,6 +299,14 @@ void sort_device_view_without_comparator( } #endif +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +void sort_device_view_without_comparator( + const HIP& exec, const Kokkos::View& view) { + sort_rocthrust(exec, view); +} +#endif + #if defined(KOKKOS_ENABLE_ONEDPL) template void sort_device_view_without_comparator( @@ -320,6 +353,15 @@ void sort_device_view_with_comparator( } #endif +#if defined(KOKKOS_ENABLE_ROCTHRUST) +template +void sort_device_view_with_comparator( + const HIP& exec, const Kokkos::View& view, + const ComparatorType& comparator) { + sort_rocthrust(exec, view, comparator); +} +#endif + #if defined(KOKKOS_ENABLE_ONEDPL) template void sort_device_view_with_comparator( diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp index b7ce1ba5edb..c5406c72b0d 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Copy.hpp @@ -50,7 +50,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -66,7 +66,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -93,7 +93,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp index 8f9e0f19b80..82071a9362e 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyBackward.hpp @@ -50,7 +50,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_backward(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -65,7 +65,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_backward(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -92,7 +92,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp index ba18bc76b93..599fde5737a 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyIf.hpp @@ -54,7 +54,8 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_if(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest, Predicate pred) { + const ::Kokkos::View& dest, + Predicate pred) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -69,7 +70,8 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_if(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest, Predicate pred) { + const ::Kokkos::View& dest, + Predicate pred) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -96,7 +98,7 @@ template & source, - ::Kokkos::View& dest, Predicate pred) { + const ::Kokkos::View& dest, Predicate pred) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp index 43c91204837..637d8d4cbc5 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_CopyN.hpp @@ -51,7 +51,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_n(const ExecutionSpace& ex, const ::Kokkos::View& source, Size count, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -66,7 +66,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto copy_n(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, Size count, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -93,7 +93,7 @@ template & source, Size count, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp index a72a49cc22b..593c42f87e1 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Equal.hpp @@ -80,7 +80,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> bool equal(const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -96,7 +96,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> bool equal(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -111,7 +111,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> bool equal(const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2, + const ::Kokkos::View& view2, BinaryPredicateType predicate) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -128,7 +128,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> bool equal(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2, + const ::Kokkos::View& view2, BinaryPredicateType predicate) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -227,7 +227,7 @@ template & view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -243,7 +243,7 @@ template & view1, - ::Kokkos::View& view2, + const ::Kokkos::View& view2, BinaryPredicateType predicate) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp index a796a306dda..5bb2d1039dc 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_IterSwap.hpp @@ -19,7 +19,6 @@ #include #include "impl/Kokkos_Constraints.hpp" -#include "Kokkos_Swap.hpp" namespace Kokkos { namespace Experimental { @@ -33,7 +32,7 @@ struct StdIterSwapFunctor { KOKKOS_FUNCTION void operator()(int i) const { (void)i; - ::Kokkos::Experimental::swap(*m_a, *m_b); + ::Kokkos::kokkos_swap(*m_a, *m_b); } KOKKOS_FUNCTION @@ -58,6 +57,16 @@ void iter_swap(IteratorType1 a, IteratorType2 b) { Impl::iter_swap_impl(a, b); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 +template +KOKKOS_DEPRECATED_WITH_COMMENT("Use Kokkos::kokkos_swap instead!") +KOKKOS_FUNCTION + void swap(T& a, T& b) noexcept(::Kokkos::kokkos_swap(std::declval(), + std::declval())) { + ::Kokkos::kokkos_swap(a, b); +} +#endif + } // namespace Experimental } // namespace Kokkos diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp index 4b5c69df451..e13479c370b 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_LexicographicalCompare.hpp @@ -54,7 +54,7 @@ template < bool lexicographical_compare( const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -71,7 +71,7 @@ template < bool lexicographical_compare( const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -112,7 +112,8 @@ template < bool lexicographical_compare( const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2, ComparatorType comp) { + const ::Kokkos::View& view2, + ComparatorType comp) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -129,7 +130,8 @@ template < bool lexicographical_compare( const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& view1, - ::Kokkos::View& view2, ComparatorType comp) { + const ::Kokkos::View& view2, + ComparatorType comp) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -161,7 +163,7 @@ template & view1, - ::Kokkos::View& view2) { + const ::Kokkos::View& view2) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); @@ -187,7 +189,8 @@ template & view1, - ::Kokkos::View& view2, ComparatorType comp) { + const ::Kokkos::View& view2, + ComparatorType comp) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(view2); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Move.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Move.hpp index f04ea12ba88..ac308ea1845 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Move.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Move.hpp @@ -50,7 +50,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto move(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -64,7 +64,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto move(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -92,7 +92,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MoveBackward.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MoveBackward.hpp index 375474ca57f..2789ab21796 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MoveBackward.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_MoveBackward.hpp @@ -41,7 +41,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto move_backward(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -65,7 +65,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto move_backward(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -94,7 +94,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ReverseCopy.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ReverseCopy.hpp index 37336c983ab..66f39c4eaa6 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ReverseCopy.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_ReverseCopy.hpp @@ -50,7 +50,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto reverse_copy(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -65,7 +65,7 @@ template < std::enable_if_t<::Kokkos::is_execution_space_v, int> = 0> auto reverse_copy(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -94,7 +94,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_SwapRanges.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_SwapRanges.hpp index 39f33b64879..d66763d304c 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_SwapRanges.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_SwapRanges.hpp @@ -40,7 +40,7 @@ template , int> = 0> auto swap_ranges(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -64,7 +64,7 @@ template , int> = 0> auto swap_ranges(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -94,7 +94,7 @@ template & source, - ::Kokkos::View& dest) { + const ::Kokkos::View& dest) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Transform.hpp b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Transform.hpp index 838c9169e25..84cbed524d3 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Transform.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Transform.hpp @@ -58,7 +58,7 @@ template , int> = 0> auto transform(const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest, + const ::Kokkos::View& dest, UnaryOperation unary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -73,7 +73,7 @@ template , int> = 0> auto transform(const std::string& label, const ExecutionSpace& ex, const ::Kokkos::View& source, - ::Kokkos::View& dest, + const ::Kokkos::View& dest, UnaryOperation unary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -119,7 +119,7 @@ template & source1, const ::Kokkos::View& source2, - ::Kokkos::View& dest, + const ::Kokkos::View& dest, BinaryOperation binary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source2); @@ -137,7 +137,7 @@ template & source1, const ::Kokkos::View& source2, - ::Kokkos::View& dest, + const ::Kokkos::View& dest, BinaryOperation binary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source2); @@ -174,7 +174,8 @@ template & source, - ::Kokkos::View& dest, UnaryOperation unary_op) { + const ::Kokkos::View& dest, + UnaryOperation unary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(dest); @@ -207,7 +208,7 @@ KOKKOS_FUNCTION auto transform( const TeamHandleType& teamHandle, const ::Kokkos::View& source1, const ::Kokkos::View& source2, - ::Kokkos::View& dest, + const ::Kokkos::View& dest, BinaryOperation binary_op) { Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source1); Impl::static_assert_is_admissible_to_kokkos_std_algorithms(source2); diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_FunctorsForExclusiveScan.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_FunctorsForExclusiveScan.hpp index 8151ee34955..5a7fe16984a 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_FunctorsForExclusiveScan.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_FunctorsForExclusiveScan.hpp @@ -47,8 +47,9 @@ struct ExclusiveScanDefaultFunctorForKnownNeutralElement { KOKKOS_FUNCTION void operator()(const IndexType i, ValueType& update, const bool final_pass) const { + const auto tmp = m_first_from[i]; if (final_pass) m_first_dest[i] = update + m_init_value; - update += m_first_from[i]; + update += tmp; } }; @@ -73,6 +74,7 @@ struct ExclusiveScanDefaultFunctorWithValueWrapper { KOKKOS_FUNCTION void operator()(const IndexType i, value_type& update, const bool final_pass) const { + const auto tmp = value_type{m_first_from[i], false}; if (final_pass) { if (i == 0) { m_first_dest[i] = m_init_value; @@ -81,7 +83,6 @@ struct ExclusiveScanDefaultFunctorWithValueWrapper { } } - const auto tmp = value_type{m_first_from[i], false}; this->join(update, tmp); } @@ -132,6 +133,7 @@ struct TransformExclusiveScanFunctorWithValueWrapper { KOKKOS_FUNCTION void operator()(const IndexType i, value_type& update, const bool final_pass) const { + const auto tmp = value_type{m_unary_op(m_first_from[i]), false}; if (final_pass) { if (i == 0) { // for both ExclusiveScan and TransformExclusiveScan, @@ -142,7 +144,6 @@ struct TransformExclusiveScanFunctorWithValueWrapper { } } - const auto tmp = value_type{m_unary_op(m_first_from[i]), false}; this->join(update, tmp); } @@ -190,6 +191,7 @@ struct TransformExclusiveScanFunctorWithoutValueWrapper { KOKKOS_FUNCTION void operator()(const IndexType i, ValueType& update, const bool final_pass) const { + const auto tmp = ValueType{m_unary_op(m_first_from[i])}; if (final_pass) { if (i == 0) { // for both ExclusiveScan and TransformExclusiveScan, @@ -200,7 +202,6 @@ struct TransformExclusiveScanFunctorWithoutValueWrapper { } } - const auto tmp = ValueType{m_unary_op(m_first_from[i])}; this->join(update, tmp); } diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_RemoveAllVariants.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_RemoveAllVariants.hpp index 50224c8874e..456df43aed2 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_RemoveAllVariants.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_RemoveAllVariants.hpp @@ -46,15 +46,14 @@ struct StdRemoveIfStage1Functor { void operator()(const IndexType i, IndexType& update, const bool final_pass) const { auto& myval = m_first_from[i]; - if (final_pass) { - if (!m_must_remove(myval)) { + + if (!m_must_remove(myval)) { + if (final_pass) { // calling move here is ok because we are inside final pass // we are calling move assign as specified by the std m_first_dest[update] = std::move(myval); } - } - if (!m_must_remove(myval)) { update += 1; } } @@ -108,7 +107,9 @@ IteratorType remove_if_exespace_impl(const std::string& label, // create helper tmp view using value_type = typename IteratorType::value_type; using tmp_view_type = Kokkos::View; - tmp_view_type tmp_view("std_remove_if_tmp_view", keep_count); + tmp_view_type tmp_view(Kokkos::view_alloc(Kokkos::WithoutInitializing, ex, + "std_remove_if_tmp_view"), + keep_count); using tmp_readwrite_iterator_type = decltype(begin(tmp_view)); // in stage 1, *move* all elements to keep from original range to tmp diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Reverse.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Reverse.hpp index 428dc0d744a..b4046c7645b 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Reverse.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Reverse.hpp @@ -21,7 +21,6 @@ #include "Kokkos_Constraints.hpp" #include "Kokkos_HelperPredicates.hpp" #include -#include #include namespace Kokkos { @@ -39,7 +38,7 @@ struct StdReverseFunctor { KOKKOS_FUNCTION void operator()(index_type i) const { - ::Kokkos::Experimental::swap(m_first[i], m_last[-i - 1]); + ::Kokkos::kokkos_swap(m_first[i], m_last[-i - 1]); } KOKKOS_FUNCTION diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftLeft.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftLeft.hpp index 50bc7c8d610..94147485071 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftLeft.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftLeft.hpp @@ -126,10 +126,11 @@ KOKKOS_FUNCTION IteratorType shift_left_team_impl( // execution space impl because for this team impl we are // within a parallel region, so for now we solve serially - const std::size_t numElementsToMove = + using difference_type = typename IteratorType::difference_type; + const difference_type numElementsToMove = ::Kokkos::Experimental::distance(first + n, last); Kokkos::single(Kokkos::PerTeam(teamHandle), [=]() { - for (std::size_t i = 0; i < numElementsToMove; ++i) { + for (difference_type i = 0; i < numElementsToMove; ++i) { first[i] = std::move(first[i + n]); } }); diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftRight.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftRight.hpp index cac20bfbba6..0414e6f1c25 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftRight.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_ShiftRight.hpp @@ -103,26 +103,6 @@ IteratorType shift_right_exespace_impl( return first + n; } -template -struct StdShiftRightTeamSingleFunctor { - Iterator m_first; - Iterator m_last; - std::size_t m_shift; - - KOKKOS_FUNCTION - void operator()() const { - // the impl function calling this functor guarantees that - // - m_shift is non-negative - // - m_first, m_last identify a valid range with m_last > m_first - // - m_shift is less than m_last - m_first - // so I can safely use std::size_t here - } - - KOKKOS_FUNCTION - StdShiftRightTeamSingleFunctor(Iterator _first, Iterator _last, std::size_t n) - : m_first(std::move(_first)), m_last(std::move(_last)), m_shift(n) {} -}; - template KOKKOS_FUNCTION IteratorType shift_right_team_impl( const TeamHandleType& teamHandle, IteratorType first, IteratorType last, @@ -145,10 +125,11 @@ KOKKOS_FUNCTION IteratorType shift_right_team_impl( // execution space impl because for this team impl we are // within a parallel region, so for now we solve serially - const std::size_t numElementsToMove = + using difference_type = typename IteratorType::difference_type; + const difference_type numElementsToMove = ::Kokkos::Experimental::distance(first, last - n); Kokkos::single(Kokkos::PerTeam(teamHandle), [=]() { - for (std::size_t i = 0; i < numElementsToMove; ++i) { + for (difference_type i = 0; i < numElementsToMove; ++i) { last[-i - 1] = std::move(last[-n - i - 1]); } }); diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_SwapRanges.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_SwapRanges.hpp index 5bc77ed7ddc..930a14ac48c 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_SwapRanges.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_SwapRanges.hpp @@ -21,7 +21,6 @@ #include "Kokkos_Constraints.hpp" #include "Kokkos_HelperPredicates.hpp" #include -#include #include namespace Kokkos { @@ -36,7 +35,7 @@ struct StdSwapRangesFunctor { KOKKOS_FUNCTION void operator()(index_type i) const { - ::Kokkos::Experimental::swap(m_first1[i], m_first2[i]); + ::Kokkos::kokkos_swap(m_first1[i], m_first2[i]); } KOKKOS_FUNCTION diff --git a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Unique.hpp b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Unique.hpp index 11afa8ed6e0..28635824585 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Unique.hpp +++ b/lib/kokkos/algorithms/src/std_algorithms/impl/Kokkos_Unique.hpp @@ -105,7 +105,9 @@ IteratorType unique_exespace_impl(const std::string& label, // using the same algorithm used for unique_copy but we now move things using value_type = typename IteratorType::value_type; using tmp_view_type = Kokkos::View; - tmp_view_type tmp_view("std_unique_tmp_view", num_elements_to_explore); + tmp_view_type tmp_view(Kokkos::view_alloc(ex, Kokkos::WithoutInitializing, + "std_unique_tmp_view"), + num_elements_to_explore); // scan extent is: num_elements_to_explore - 1 // for same reason as the one explained in unique_copy diff --git a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt index 419f5ec1d13..db184bc8a99 100644 --- a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt +++ b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt @@ -25,6 +25,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) set(ALGO_SORT_SOURCES) foreach(SOURCE_Input TestSort + TestSortByKey TestSortCustomComp TestBinSortA TestBinSortB @@ -57,35 +58,37 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) configure_file(${dir}/dummy.cpp ${file}) list(APPEND ALGO_RANDOM_SOURCES ${file}) endforeach() + endif() +endforeach() - # ------------------------------------------ - # std set A - # ------------------------------------------ - set(STDALGO_SOURCES_A) - foreach(Name +# ------------------------------------------ +# std set A +# ------------------------------------------ +set(STDALGO_SOURCES_A) +foreach(Name StdReducers StdAlgorithmsConstraints RandomAccessIterator - ) - list(APPEND STDALGO_SOURCES_A Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_SOURCES_A Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std set B - # ------------------------------------------ - set(STDALGO_SOURCES_B) - foreach(Name +# ------------------------------------------ +# std set B +# ------------------------------------------ +set(STDALGO_SOURCES_B) +foreach(Name StdAlgorithmsCommon StdAlgorithmsMinMaxElementOps - ) - list(APPEND STDALGO_SOURCES_B Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_SOURCES_B Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std set C - # ------------------------------------------ - set(STDALGO_SOURCES_C) - foreach(Name +# ------------------------------------------ +# std set C +# ------------------------------------------ +set(STDALGO_SOURCES_C) +foreach(Name StdAlgorithmsCommon StdAlgorithmsLexicographicalCompare StdAlgorithmsForEach @@ -100,15 +103,15 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsSearch_n StdAlgorithmsMismatch StdAlgorithmsMoveBackward - ) - list(APPEND STDALGO_SOURCES_C Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_SOURCES_C Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std set D - # ------------------------------------------ - set(STDALGO_SOURCES_D) - foreach(Name +# ------------------------------------------ +# std set D +# ------------------------------------------ +set(STDALGO_SOURCES_D) +foreach(Name StdAlgorithmsCommon StdAlgorithmsModOps StdAlgorithmsModSeqOps @@ -128,15 +131,15 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsReverse StdAlgorithmsShiftLeft StdAlgorithmsShiftRight - ) - list(APPEND STDALGO_SOURCES_D Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_SOURCES_D Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std set E - # ------------------------------------------ - set(STDALGO_SOURCES_E) - foreach(Name +# ------------------------------------------ +# std set E +# ------------------------------------------ +set(STDALGO_SOURCES_E) +foreach(Name StdAlgorithmsCommon StdAlgorithmsIsSorted StdAlgorithmsIsSortedUntil @@ -149,83 +152,83 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsTransformUnaryOp StdAlgorithmsTransformExclusiveScan StdAlgorithmsTransformInclusiveScan - ) - list(APPEND STDALGO_SOURCES_E Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_SOURCES_E Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team Q - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_Q) - foreach(Name +# ------------------------------------------ +# std team Q +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_Q) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamInclusiveScan StdAlgorithmsTeamTransformInclusiveScan - ) - list(APPEND STDALGO_TEAM_SOURCES_Q Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_Q Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team P - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_P) - foreach(Name +# ------------------------------------------ +# std team P +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_P) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamExclusiveScan StdAlgorithmsTeamTransformExclusiveScan - ) - list(APPEND STDALGO_TEAM_SOURCES_P Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_P Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team M - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_M) - foreach(Name +# ------------------------------------------ +# std team M +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_M) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamTransformUnaryOp StdAlgorithmsTeamTransformBinaryOp StdAlgorithmsTeamGenerate StdAlgorithmsTeamGenerate_n StdAlgorithmsTeamSwapRanges - ) - list(APPEND STDALGO_TEAM_SOURCES_M Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_M Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team L - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_L) - foreach(Name +# ------------------------------------------ +# std team L +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_L) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamIsSorted StdAlgorithmsTeamIsSortedUntil StdAlgorithmsTeamIsPartitioned StdAlgorithmsTeamPartitionCopy StdAlgorithmsTeamPartitionPoint - ) - list(APPEND STDALGO_TEAM_SOURCES_L Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_L Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team I - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_I) - foreach(Name +# ------------------------------------------ +# std team I +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_I) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamUnique StdAlgorithmsTeamAdjacentDifference StdAlgorithmsTeamReduce StdAlgorithmsTeamTransformReduce - ) - list(APPEND STDALGO_TEAM_SOURCES_I Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_I Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team H - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_H) - foreach(Name +# ------------------------------------------ +# std team H +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_H) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamCopy StdAlgorithmsTeamCopy_n @@ -236,43 +239,43 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsTeamRemoveIf StdAlgorithmsTeamRemoveCopy StdAlgorithmsTeamRemoveCopyIf - ) - list(APPEND STDALGO_TEAM_SOURCES_H Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_H Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team G - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_G) - foreach(Name +# ------------------------------------------ +# std team G +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_G) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamMove StdAlgorithmsTeamMoveBackward StdAlgorithmsTeamShiftLeft StdAlgorithmsTeamShiftRight - ) - list(APPEND STDALGO_TEAM_SOURCES_G Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_G Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team F - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_F) - foreach(Name +# ------------------------------------------ +# std team F +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_F) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamReverse StdAlgorithmsTeamReverseCopy StdAlgorithmsTeamRotate StdAlgorithmsTeamRotateCopy - ) - list(APPEND STDALGO_TEAM_SOURCES_F Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_F Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team E - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_E) - foreach(Name +# ------------------------------------------ +# std team E +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_E) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamFill StdAlgorithmsTeamFill_n @@ -280,28 +283,28 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsTeamReplaceIf StdAlgorithmsTeamReplaceCopy StdAlgorithmsTeamReplaceCopyIf - ) - list(APPEND STDALGO_TEAM_SOURCES_E Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_E Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team D - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_D) - foreach(Name +# ------------------------------------------ +# std team D +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_D) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamMinElement StdAlgorithmsTeamMaxElement StdAlgorithmsTeamMinMaxElement - ) - list(APPEND STDALGO_TEAM_SOURCES_D Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_D Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team C - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_C) - foreach(Name +# ------------------------------------------ +# std team C +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_C) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamFind StdAlgorithmsTeamFindIf @@ -310,29 +313,29 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsTeamAnyOf StdAlgorithmsTeamNoneOf StdAlgorithmsTeamSearchN - ) - list(APPEND STDALGO_TEAM_SOURCES_C Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_C Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team B - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_B) - foreach(Name +# ------------------------------------------ +# std team B +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_B) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamEqual StdAlgorithmsTeamSearch StdAlgorithmsTeamFindEnd StdAlgorithmsTeamFindFirstOf - ) - list(APPEND STDALGO_TEAM_SOURCES_B Test${Name}.cpp) - endforeach() + ) + list(APPEND STDALGO_TEAM_SOURCES_B Test${Name}.cpp) +endforeach() - # ------------------------------------------ - # std team A - # ------------------------------------------ - set(STDALGO_TEAM_SOURCES_A) - foreach(Name +# ------------------------------------------ +# std team A +# ------------------------------------------ +set(STDALGO_TEAM_SOURCES_A) +foreach(Name StdAlgorithmsCommon StdAlgorithmsTeamAdjacentFind StdAlgorithmsTeamCount @@ -341,11 +344,8 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;HIP;SYCL;OpenMPTarget) StdAlgorithmsTeamForEachN StdAlgorithmsTeamLexicographicalCompare StdAlgorithmsTeamMismatch - ) - list(APPEND STDALGO_TEAM_SOURCES_A Test${Name}.cpp) - endforeach() - - endif() + ) + list(APPEND STDALGO_TEAM_SOURCES_A Test${Name}.cpp) endforeach() # FIXME_OPENMPTARGET - remove sort test as it leads to ICE with clang/16 and above at compile time. diff --git a/lib/kokkos/algorithms/unit_tests/Makefile b/lib/kokkos/algorithms/unit_tests/Makefile index 601217799a8..d3946c149ba 100644 --- a/lib/kokkos/algorithms/unit_tests/Makefile +++ b/lib/kokkos/algorithms/unit_tests/Makefile @@ -27,13 +27,13 @@ TARGETS = tmp := $(foreach device, $(KOKKOS_DEVICELIST), \ $(if $(filter Test$(device).cpp, $(shell ls Test$(device).cpp 2>/dev/null)),,\ - $(shell echo "\#include " > Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ - $(shell echo "\#include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " > Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ + $(shell echo "$(H)include " >> Test$(device).cpp); \ ) \ ) diff --git a/lib/kokkos/algorithms/unit_tests/TestSortByKey.hpp b/lib/kokkos/algorithms/unit_tests/TestSortByKey.hpp new file mode 100644 index 00000000000..16f68eaaf26 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestSortByKey.hpp @@ -0,0 +1,241 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_ALGORITHMS_UNITTESTS_TEST_SORT_BY_KEY_HPP +#define KOKKOS_ALGORITHMS_UNITTESTS_TEST_SORT_BY_KEY_HPP + +#include +#include +#include +#include + +#include // pair + +namespace Test { +namespace SortImpl { + +struct Less { + template + KOKKOS_INLINE_FUNCTION bool operator()(const ValueType &lhs, + const ValueType &rhs) const { + return lhs < rhs; + } +}; + +struct Greater { + template + KOKKOS_INLINE_FUNCTION bool operator()(const ValueType &lhs, + const ValueType &rhs) const { + return lhs > rhs; + } +}; + +template +struct is_sorted_by_key_struct { + Keys keys; + Keys keys_orig; + Permute permute; + Comparator comparator; + + is_sorted_by_key_struct(Keys keys_, Keys keys_orig_, Permute permute_, + Comparator comparator_ = Comparator{}) + : keys(keys_), + keys_orig(keys_orig_), + permute(permute_), + comparator(comparator_) {} + KOKKOS_INLINE_FUNCTION + void operator()(int i, unsigned int &count) const { + if (i < keys.extent_int(0) - 1 && comparator(keys(i + 1), keys(i))) ++count; + if (keys(i) != keys_orig(permute(i))) ++count; + } +}; + +template +void iota(ExecutionSpace const &space, ViewType const &v, + typename ViewType::value_type value = 0) { + using ValueType = typename ViewType::value_type; + Kokkos::parallel_for( + "ArborX::Algorithms::iota", + Kokkos::RangePolicy(space, 0, v.extent(0)), + KOKKOS_LAMBDA(int i) { v(i) = value + (ValueType)i; }); +} + +} // namespace SortImpl + +TEST(TEST_CATEGORY, SortByKeyEmptyView) { + using ExecutionSpace = TEST_EXECSPACE; + + // does not matter if we use int or something else + Kokkos::View keys("keys", 0); + Kokkos::View values("values", 0); + + ASSERT_NO_THROW( + Kokkos::Experimental::sort_by_key(ExecutionSpace(), keys, values)); +} + +TEST(TEST_CATEGORY, SortByKey) { + using ExecutionSpace = TEST_EXECSPACE; + using MemorySpace = typename ExecutionSpace::memory_space; + + ExecutionSpace space{}; + + for (auto keys_vector : {std::vector{36, 19, 25, 17, 3, 7, 1, 2, 9}, + std::vector{36, 19, 25, 17, 3, 9, 1, 2, 7}, + std::vector{100, 19, 36, 17, 3, 25, 1, 2, 7}, + std::vector{15, 5, 11, 3, 4, 8}}) { + auto const n = keys_vector.size(); + + auto keys = Kokkos::create_mirror_view_and_copy( + MemorySpace{}, + Kokkos::View( + keys_vector.data(), n)); + + auto keys_orig = Kokkos::create_mirror(space, keys); + Kokkos::deep_copy(space, keys_orig, keys); + + Kokkos::View permute("permute", n); + SortImpl::iota(space, permute); + + Kokkos::Experimental::sort_by_key(space, keys, permute); + + unsigned int sort_fails = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(space, 0, n), + SortImpl::is_sorted_by_key_struct(keys, keys_orig, + permute), + sort_fails); + + ASSERT_EQ(sort_fails, 0u); + } +} + +TEST(TEST_CATEGORY, SortByKeyWithComparator) { + using ExecutionSpace = TEST_EXECSPACE; + using MemorySpace = typename ExecutionSpace::memory_space; + + ExecutionSpace space{}; + + SortImpl::Greater comparator; + + for (auto keys_vector : {std::vector{36, 19, 25, 17, 3, 7, 1, 2, 9}, + std::vector{36, 19, 25, 17, 3, 9, 1, 2, 7}, + std::vector{100, 19, 36, 17, 3, 25, 1, 2, 7}, + std::vector{15, 5, 11, 3, 4, 8}}) { + auto const n = keys_vector.size(); + + auto keys = Kokkos::create_mirror_view_and_copy( + MemorySpace{}, + Kokkos::View( + keys_vector.data(), n)); + + auto keys_orig = Kokkos::create_mirror(space, keys); + Kokkos::deep_copy(space, keys_orig, keys); + + Kokkos::View permute("permute", n); + SortImpl::iota(space, permute); + + Kokkos::Experimental::sort_by_key(space, keys, permute, comparator); + + unsigned int sort_fails = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(space, 0, n), + SortImpl::is_sorted_by_key_struct( + keys, keys_orig, permute, comparator), + sort_fails); + + ASSERT_EQ(sort_fails, 0u); + } +} + +TEST(TEST_CATEGORY, SortByKeyStaticExtents) { + using ExecutionSpace = TEST_EXECSPACE; + + ExecutionSpace space{}; + + Kokkos::View keys("keys"); + + Kokkos::View values_static("values_static"); + ASSERT_NO_THROW( + Kokkos::Experimental::sort_by_key(space, keys, values_static)); + + Kokkos::View values_dynamic("values_dynamic", 10); + ASSERT_NO_THROW( + Kokkos::Experimental::sort_by_key(space, keys, values_dynamic)); +} + +template +void buildViewsForStrided(ExecutionSpace const &space, int n, Keys &keys, + Values &values) { + Kokkos::parallel_for( + "create_data", + Kokkos::MDRangePolicy, ExecutionSpace>(space, {0, 0, 0}, + {n, n, n}), + KOKKOS_LAMBDA(int i, int j, int k) { + keys(i, j, k) = n - i; + values(i, j, k) = j; + }); +} + +TEST(TEST_CATEGORY, SortByKeyWithStrides) { + using ExecutionSpace = TEST_EXECSPACE; + + ExecutionSpace space{}; + + auto const n = 10; + + Kokkos::View keys("keys", n, n, n); + Kokkos::View values("values", n, n, n); + buildViewsForStrided(space, n, keys, values); + + auto keys_sub = Kokkos::subview(keys, Kokkos::ALL(), 1, 2); + auto values_sub = Kokkos::subview(values, 4, Kokkos::ALL(), 6); + + auto keys_orig = Kokkos::create_mirror(space, keys_sub); + Kokkos::deep_copy(space, keys_orig, keys_sub); + + Kokkos::Experimental::sort_by_key(space, keys_sub, values_sub); + + unsigned int sort_fails = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(space, 0, n), + SortImpl::is_sorted_by_key_struct( + keys_sub, keys_orig, values_sub), + sort_fails); + + ASSERT_EQ(sort_fails, 0u); +} + +TEST(TEST_CATEGORY, SortByKeyKeysLargerThanValues) { + using ExecutionSpace = TEST_EXECSPACE; + + // does not matter if we use int or something else + Kokkos::View keys("keys", 3); + Kokkos::View values("values", 1); + + ASSERT_DEATH( + Kokkos::Experimental::sort_by_key(ExecutionSpace(), keys, values), + "values and keys extents must be the same"); + ASSERT_DEATH(Kokkos::Experimental::sort_by_key(ExecutionSpace(), keys, values, + SortImpl::Greater{}), + "values and keys extents must be the same"); +} + +} // namespace Test +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsCommon.hpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsCommon.hpp index b962218b5f0..67052e2f9d4 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsCommon.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsCommon.hpp @@ -198,8 +198,9 @@ auto create_deep_copyable_compatible_view_with_same_extent(ViewType view) { // this is needed for intel to avoid // error #1011: missing return statement at end of non-void function -#if defined KOKKOS_COMPILER_INTEL || \ - (defined(KOKKOS_COMPILER_NVCC) && KOKKOS_COMPILER_NVCC >= 1130) +#if defined KOKKOS_COMPILER_INTEL || \ + (defined(KOKKOS_COMPILER_NVCC) && KOKKOS_COMPILER_NVCC >= 1130 && \ + !defined(KOKKOS_COMPILER_MSVC)) __builtin_unreachable(); #endif } @@ -238,16 +239,8 @@ KOKKOS_FUNCTION bool team_members_have_matching_result( // set accum to 1 if a mismach is found const bool mismatch = memberValue != target; int accum = static_cast(mismatch); - // FIXME_OPENMPTARGET: team API does not meet the TeamHandle concept and - // ignores the reducer passed -#if defined KOKKOS_ENABLE_OPENMPTARGET - Kokkos::Sum dummyReducer(accum); - const auto result = teamHandle.team_reduce(accum, dummyReducer); - return (result == 0); -#else teamHandle.team_reduce(Kokkos::Sum(accum)); return (accum == 0); -#endif } template diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsExclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsExclusiveScan.cpp index 6ab68a1987d..b364c53a888 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsExclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsExclusiveScan.cpp @@ -16,6 +16,7 @@ #include #include +#include namespace Test { namespace stdalgos { @@ -132,47 +133,6 @@ void my_host_exclusive_scan(it1 first, it1 last, it2 dest, ValType init, } } -template -void verify_data(ViewType1 data_view, // contains data - ViewType2 test_view, // the view to test - ValueType init_value, BinaryOp bop) { - //! always careful because views might not be deep copyable - - auto data_view_dc = create_deep_copyable_compatible_clone(data_view); - auto data_view_h = - create_mirror_view_and_copy(Kokkos::HostSpace(), data_view_dc); - - using gold_view_value_type = typename ViewType2::value_type; - Kokkos::View gold_h( - "goldh", data_view.extent(0)); - my_host_exclusive_scan(KE::cbegin(data_view_h), KE::cend(data_view_h), - KE::begin(gold_h), init_value, bop); - - auto test_view_dc = create_deep_copyable_compatible_clone(test_view); - auto test_view_h = - create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); - if (test_view_h.extent(0) > 0) { - for (std::size_t i = 0; i < test_view_h.extent(0); ++i) { - // std::cout << i << " " << std::setprecision(15) << data_view_h(i) << " " - // << gold_h(i) << " " << test_view_h(i) << " " - // << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - if (std::is_same::value) { - ASSERT_EQ(gold_h(i), test_view_h(i)); - } else { - const auto error = - std::abs(static_cast(gold_h(i) - test_view_h(i))); - if (error > 1e-10) { - std::cout << i << " " << std::setprecision(15) << data_view_h(i) - << " " << gold_h(i) << " " << test_view_h(i) << " " - << std::abs(static_cast(gold_h(i) - test_view_h(i))) - << std::endl; - } - EXPECT_LT(error, 1e-10); - } - } - } -} - template struct MultiplyFunctor { KOKKOS_INLINE_FUNCTION @@ -189,107 +149,153 @@ struct SumFunctor { } }; +struct VerifyData { + template + void operator()(ViewType1 data_view, // contains data + ViewType2 test_view, // the view to test + ValueType init_value, BinaryOp bop) { + //! always careful because views might not be deep copyable + + auto data_view_dc = create_deep_copyable_compatible_clone(data_view); + auto data_view_h = + create_mirror_view_and_copy(Kokkos::HostSpace(), data_view_dc); + + using gold_view_value_type = typename ViewType2::value_type; + Kokkos::View gold_h( + "goldh", data_view.extent(0)); + my_host_exclusive_scan(KE::cbegin(data_view_h), KE::cend(data_view_h), + KE::begin(gold_h), init_value, bop); + + auto test_view_dc = create_deep_copyable_compatible_clone(test_view); + auto test_view_h = + create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); + if (test_view_h.extent(0) > 0) { + for (std::size_t i = 0; i < test_view_h.extent(0); ++i) { + if (std::is_same::value) { + ASSERT_EQ(gold_h(i), test_view_h(i)); + } else { + const auto error = + std::abs(static_cast(gold_h(i) - test_view_h(i))); + ASSERT_LT(error, 1e-10) << i << " " << std::setprecision(15) << error + << static_cast(test_view_h(i)) << " " + << static_cast(gold_h(i)); + } + } + } + } + + template + void operator()(ViewType1 data_view, // contains data + ViewType2 test_view, // the view to test + ValueType init_value) { + (*this)(data_view, test_view, init_value, SumFunctor()); + } +}; + std::string value_type_to_string(int) { return "int"; } std::string value_type_to_string(double) { return "double"; } -template -void run_single_scenario_default_op(const InfoType& scenario_info, - ValueType init_value) { - using default_op = SumFunctor; +template +void run_single_scenario(const InfoType& scenario_info, ValueType init_value, + OpOrEmpty... empty_or_op) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // std::cout << "exclusive_scan default op: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << ", " - // << "init = " << init_value << std::endl; auto view_dest = create_view(Tag{}, view_ext, "exclusive_scan"); auto view_from = create_view(Tag{}, view_ext, "exclusive_scan"); fill_view(view_from, name); + // view_dest is filled with zeros before calling the algorithm everytime to + // ensure the algorithm does something meaningful { fill_zero(view_dest); auto r = KE::exclusive_scan(exespace(), KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), - init_value); + init_value, empty_or_op...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, default_op()); + VerifyData()(view_from, view_dest, init_value, empty_or_op...); } { fill_zero(view_dest); auto r = KE::exclusive_scan("label", exespace(), KE::cbegin(view_from), KE::cend(view_from), KE::begin(view_dest), - init_value); + init_value, empty_or_op...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, default_op()); + VerifyData()(view_from, view_dest, init_value, empty_or_op...); } { fill_zero(view_dest); - auto r = KE::exclusive_scan(exespace(), view_from, view_dest, init_value); + auto r = KE::exclusive_scan(exespace(), view_from, view_dest, init_value, + empty_or_op...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, default_op()); + VerifyData()(view_from, view_dest, init_value, empty_or_op...); } { fill_zero(view_dest); auto r = KE::exclusive_scan("label", exespace(), view_from, view_dest, - init_value); + init_value, empty_or_op...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, default_op()); + VerifyData()(view_from, view_dest, init_value, empty_or_op...); } Kokkos::fence(); } -template -void run_single_scenario_custom_op(const InfoType& scenario_info, - ValueType init_value, BinaryOp bop) { +template +void run_single_scenario_inplace(const InfoType& scenario_info, + ValueType init_value, + OpOrEmpty... empty_or_op) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // std::cout << "exclusive_scan custom op: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << ", " - // << "init = " << init_value << std::endl; - auto view_dest = create_view(Tag{}, view_ext, "exclusive_scan"); - auto view_from = create_view(Tag{}, view_ext, "exclusive_scan"); - fill_view(view_from, name); + // since here we call the in-place operation, we need to use two views: + // view1: filled according to what the scenario asks for and is not modified + // view2: filled according to what the scenario asks for and used for the + // in-place op Therefore, after the op is done, view2 should contain the + // result of doing exclusive scan NOTE: view2 is filled below every time + // because the algorithm acts in place + + auto view1 = + create_view(Tag{}, view_ext, "exclusive_scan_inplace_view1"); + fill_view(view1, name); + auto view2 = + create_view(Tag{}, view_ext, "exclusive_scan_inplace_view2"); { - fill_zero(view_dest); - auto r = KE::exclusive_scan(exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest), - init_value, bop); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, bop); + fill_view(view2, name); + auto r = KE::exclusive_scan(exespace(), KE::cbegin(view2), KE::cend(view2), + KE::begin(view2), init_value, empty_or_op...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, init_value, empty_or_op...); } { - fill_zero(view_dest); - auto r = KE::exclusive_scan("label", exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest), - init_value, bop); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, bop); + fill_view(view2, name); + auto r = KE::exclusive_scan("label", exespace(), KE::cbegin(view2), + KE::cend(view2), KE::begin(view2), init_value, + empty_or_op...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, init_value, empty_or_op...); } { - fill_zero(view_dest); - auto r = - KE::exclusive_scan(exespace(), view_from, view_dest, init_value, bop); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, bop); + fill_view(view2, name); + auto r = KE::exclusive_scan(exespace(), view2, view2, init_value, + empty_or_op...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, init_value, empty_or_op...); } { - fill_zero(view_dest); - auto r = KE::exclusive_scan("label", exespace(), view_from, view_dest, - init_value, bop); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, init_value, bop); + fill_view(view2, name); + auto r = KE::exclusive_scan("label", exespace(), view2, view2, init_value, + empty_or_op...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, init_value, empty_or_op...); } Kokkos::fence(); @@ -303,34 +309,39 @@ void run_exclusive_scan_all_scenarios() { {"medium", 1103}, {"large", 10513}}; for (const auto& it : scenarios) { - run_single_scenario_default_op(it, ValueType{0}); - run_single_scenario_default_op(it, ValueType{1}); - run_single_scenario_default_op(it, ValueType{-2}); - run_single_scenario_default_op(it, ValueType{3}); + run_single_scenario(it, ValueType{0}); + run_single_scenario(it, ValueType{1}); + run_single_scenario(it, ValueType{-2}); + run_single_scenario(it, ValueType{3}); + + run_single_scenario_inplace(it, ValueType{0}); + run_single_scenario_inplace(it, ValueType{-2}); #if !defined KOKKOS_ENABLE_OPENMPTARGET // custom multiply op is only run for small views otherwise it overflows if (it.first == "small-a" || it.first == "small-b") { using custom_bop_t = MultiplyFunctor; - run_single_scenario_custom_op(it, ValueType{0}, - custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{1}, - custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{-2}, - custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{3}, - custom_bop_t()); - } + run_single_scenario(it, ValueType{0}, custom_bop_t()); + run_single_scenario(it, ValueType{1}, custom_bop_t()); + run_single_scenario(it, ValueType{-2}, custom_bop_t()); + run_single_scenario(it, ValueType{3}, custom_bop_t()); - using custom_bop_t = SumFunctor; - run_single_scenario_custom_op(it, ValueType{0}, - custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{1}, + run_single_scenario_inplace(it, ValueType{0}, custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{-2}, - custom_bop_t()); - run_single_scenario_custom_op(it, ValueType{3}, + run_single_scenario_inplace(it, ValueType{-2}, custom_bop_t()); + } + + using custom_bop_t = SumFunctor; + run_single_scenario(it, ValueType{0}, custom_bop_t()); + run_single_scenario(it, ValueType{1}, custom_bop_t()); + run_single_scenario(it, ValueType{-2}, custom_bop_t()); + run_single_scenario(it, ValueType{3}, custom_bop_t()); + + run_single_scenario_inplace(it, ValueType{0}, + custom_bop_t()); + run_single_scenario_inplace(it, ValueType{-2}, + custom_bop_t()); #endif } } diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsInclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsInclusiveScan.cpp index 8e60a43e5ff..a08a7372108 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsInclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsInclusiveScan.cpp @@ -16,6 +16,7 @@ #include #include +#include namespace Test { namespace stdalgos { @@ -143,51 +144,6 @@ void my_host_inclusive_scan(it1 first, it1 last, it2 dest, BinOp bop, } } -template -void verify_data(ViewType1 data_view, // contains data - ViewType2 test_view, // the view to test - BinaryOp bop, Args... args /* copy on purpose */) { - //! always careful because views might not be deep copyable - - auto data_view_dc = create_deep_copyable_compatible_clone(data_view); - auto data_view_h = - create_mirror_view_and_copy(Kokkos::HostSpace(), data_view_dc); - - using gold_view_value_type = typename ViewType2::value_type; - Kokkos::View gold_h( - "goldh", data_view.extent(0)); - my_host_inclusive_scan(KE::cbegin(data_view_h), KE::cend(data_view_h), - KE::begin(gold_h), bop, args...); - - auto test_view_dc = create_deep_copyable_compatible_clone(test_view); - auto test_view_h = - create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); - - const auto ext = test_view_h.extent(0); - if (ext > 0) { - for (std::size_t i = 0; i < ext; ++i) { - // std::cout << i << " " << std::setprecision(15) << data_view_h(i) << " " - // << gold_h(i) << " " << test_view_h(i) << " " - // << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - - if (std::is_same::value) { - ASSERT_EQ(gold_h(i), test_view_h(i)); - } else { - const auto error = - std::abs(static_cast(gold_h(i) - test_view_h(i))); - if (error > 1e-10) { - std::cout << i << " " << std::setprecision(15) << data_view_h(i) - << " " << gold_h(i) << " " << test_view_h(i) << " " - << std::abs(static_cast(gold_h(i) - test_view_h(i))) - << std::endl; - } - EXPECT_LT(error, 1e-10); - } - } - // std::cout << " last el: " << test_view_h(ext-1) << std::endl; - } -} - template struct MultiplyFunctor { KOKKOS_INLINE_FUNCTION @@ -204,107 +160,151 @@ struct SumFunctor { } }; +struct VerifyData { + template + void operator()(ViewType1 data_view, // contains data + ViewType2 test_view, // the view to test + BinaryOp bop, Args... args /* copy on purpose */) { + //! always careful because views might not be deep copyable + + auto data_view_dc = create_deep_copyable_compatible_clone(data_view); + auto data_view_h = + create_mirror_view_and_copy(Kokkos::HostSpace(), data_view_dc); + + using gold_view_value_type = typename ViewType2::value_type; + Kokkos::View gold_h( + "goldh", data_view.extent(0)); + my_host_inclusive_scan(KE::cbegin(data_view_h), KE::cend(data_view_h), + KE::begin(gold_h), bop, args...); + + auto test_view_dc = create_deep_copyable_compatible_clone(test_view); + auto test_view_h = + create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); + + const auto ext = test_view_h.extent(0); + if (ext > 0) { + for (std::size_t i = 0; i < ext; ++i) { + if (std::is_same::value) { + ASSERT_EQ(gold_h(i), test_view_h(i)); + } else { + const auto error = + std::abs(static_cast(gold_h(i) - test_view_h(i))); + ASSERT_LT(error, 1e-10) << i << " " << std::setprecision(15) << error + << static_cast(test_view_h(i)) << " " + << static_cast(gold_h(i)); + } + } + } + } + + template + void operator()(ViewType1 data_view, // contains data + ViewType2 test_view) // the view to test + { + using value_type = typename ViewType1::non_const_value_type; + (*this)(data_view, test_view, SumFunctor()); + } +}; + std::string value_type_to_string(int) { return "int"; } std::string value_type_to_string(double) { return "double"; } -template -void run_single_scenario_default_op(const InfoType& scenario_info) { - using default_op = SumFunctor; +template +void run_single_scenario(const InfoType& scenario_info, + Args... args /* copy on purpose */) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // std::cout << "inclusive_scan default op: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << std::endl; auto view_dest = create_view(Tag{}, view_ext, "inclusive_scan"); auto view_from = create_view(Tag{}, view_ext, "inclusive_scan"); fill_view(view_from, name); + // view_dest is filled with zeros before calling the algorithm everytime to + // ensure the algorithm does something meaningful { fill_zero(view_dest); - auto r = KE::inclusive_scan(exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest)); + auto r = + KE::inclusive_scan(exespace(), KE::cbegin(view_from), + KE::cend(view_from), KE::begin(view_dest), args...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, default_op()); + VerifyData()(view_from, view_dest, args...); } { fill_zero(view_dest); - auto r = KE::inclusive_scan("label", exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest)); + auto r = + KE::inclusive_scan("label", exespace(), KE::cbegin(view_from), + KE::cend(view_from), KE::begin(view_dest), args...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, default_op()); + VerifyData()(view_from, view_dest, args...); } { fill_zero(view_dest); - auto r = KE::inclusive_scan(exespace(), view_from, view_dest); + auto r = KE::inclusive_scan(exespace(), view_from, view_dest, args...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, default_op()); + VerifyData()(view_from, view_dest, args...); } { fill_zero(view_dest); - auto r = KE::inclusive_scan("label", exespace(), view_from, view_dest); + auto r = + KE::inclusive_scan("label", exespace(), view_from, view_dest, args...); ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, default_op()); + VerifyData()(view_from, view_dest, args...); } Kokkos::fence(); } -template -void run_single_scenario_custom_op(const InfoType& scenario_info, BinaryOp bop, - Args... args /* copy on purpose */) { +template +void run_single_scenario_inplace(const InfoType& scenario_info, + Args... args /* copy on purpose */) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // if (1 == sizeof...(Args)) { - // std::cout << "inclusive_scan custom op and init value: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << ", " << std::endl; - // } else { - // std::cout << "inclusive_scan custom op: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << ", " << std::endl; - // } + // since here we call the in-place operation, we need to use two views: + // view1: filled according to what the scenario asks for and is not modified + // view2: filled according to what the scenario asks for and used for the + // in-place op Therefore, after the op is done, view_2 should contain the + // result of doing exclusive scan NOTE: view2 is filled below every time + // because the algorithm acts in place - auto view_dest = create_view(Tag{}, view_ext, "inclusive_scan"); - auto view_from = create_view(Tag{}, view_ext, "inclusive_scan"); - fill_view(view_from, name); + auto view1 = + create_view(Tag{}, view_ext, "inclusive_scan_inplace_view1"); + fill_view(view1, name); + + auto view2 = + create_view(Tag{}, view_ext, "inclusive_scan_inplace_view2"); { - fill_zero(view_dest); - auto r = KE::inclusive_scan(exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest), bop, - args...); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, bop, args...); + fill_view(view2, name); + auto r = KE::inclusive_scan(exespace(), KE::cbegin(view2), KE::cend(view2), + KE::begin(view2), args...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, args...); } { - fill_zero(view_dest); - auto r = KE::inclusive_scan("label", exespace(), KE::cbegin(view_from), - KE::cend(view_from), KE::begin(view_dest), bop, - args...); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, bop, args...); + fill_view(view2, name); + auto r = KE::inclusive_scan("label", exespace(), KE::cbegin(view2), + KE::cend(view2), KE::begin(view2), args...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, args...); } { - fill_zero(view_dest); - auto r = KE::inclusive_scan(exespace(), view_from, view_dest, bop, args...); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, bop, args...); + fill_view(view2, name); + auto r = KE::inclusive_scan(exespace(), view2, view2, args...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, args...); } { - fill_zero(view_dest); - auto r = KE::inclusive_scan("label", exespace(), view_from, view_dest, bop, - args...); - ASSERT_EQ(r, KE::end(view_dest)); - verify_data(view_from, view_dest, bop, args...); + fill_view(view2, name); + auto r = KE::inclusive_scan("label", exespace(), view2, view2, args...); + ASSERT_EQ(r, KE::end(view2)); + VerifyData()(view1, view2, args...); } Kokkos::fence(); @@ -318,27 +318,35 @@ void run_inclusive_scan_all_scenarios() { {"medium-a", 313}, {"medium-b", 1103}, {"large", 10513}}; for (const auto& it : scenarios) { - run_single_scenario_default_op(it); + run_single_scenario(it); + run_single_scenario_inplace(it); #if !defined KOKKOS_ENABLE_OPENMPTARGET // the sum custom op is always run using sum_binary_op = SumFunctor; sum_binary_op sbop; - run_single_scenario_custom_op(it, sbop); - run_single_scenario_custom_op(it, sbop, ValueType{0}); - run_single_scenario_custom_op(it, sbop, ValueType{1}); - run_single_scenario_custom_op(it, sbop, ValueType{-2}); - run_single_scenario_custom_op(it, sbop, ValueType{3}); + run_single_scenario(it, sbop); + run_single_scenario(it, sbop, ValueType{0}); + run_single_scenario(it, sbop, ValueType{1}); + run_single_scenario(it, sbop, ValueType{-2}); + run_single_scenario(it, sbop, ValueType{3}); + + run_single_scenario_inplace(it, sbop, ValueType{0}); + run_single_scenario_inplace(it, sbop, ValueType{-2}); // custom multiply only for small views to avoid overflows if (it.first == "small-a" || it.first == "small-b") { using mult_binary_op = MultiplyFunctor; mult_binary_op mbop; - run_single_scenario_custom_op(it, mbop); - run_single_scenario_custom_op(it, mbop, ValueType{0}); - run_single_scenario_custom_op(it, mbop, ValueType{1}); - run_single_scenario_custom_op(it, mbop, ValueType{-2}); - run_single_scenario_custom_op(it, mbop, ValueType{3}); + run_single_scenario(it, mbop); + run_single_scenario(it, mbop, ValueType{0}); + run_single_scenario(it, mbop, ValueType{1}); + run_single_scenario(it, mbop, ValueType{-2}); + run_single_scenario(it, mbop, ValueType{3}); + + run_single_scenario_inplace(it, mbop); + run_single_scenario_inplace(it, mbop, ValueType{0}); + run_single_scenario_inplace(it, mbop, ValueType{-2}); } #endif } diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSorted.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSorted.cpp index f31d49e06b4..75d4f0afebc 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSorted.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSorted.cpp @@ -146,7 +146,7 @@ void run_single_scenario(const InfoType& scenario_info) { resultsA[3] = KE::is_sorted("label", exespace(), view); const auto allA = std::all_of(resultsA.cbegin(), resultsA.cend(), [=](bool v) { return v == gold; }); - EXPECT_TRUE(allA); + EXPECT_TRUE(allA) << name << ", " << view_tag_to_string(Tag{}); #if !defined KOKKOS_ENABLE_OPENMPTARGET CustomLessThanComparator comp; @@ -159,7 +159,7 @@ void run_single_scenario(const InfoType& scenario_info) { resultsB[3] = KE::is_sorted("label", exespace(), view, comp); const auto allB = std::all_of(resultsB.cbegin(), resultsB.cend(), [=](bool v) { return v == gold; }); - EXPECT_TRUE(allB); + EXPECT_TRUE(allB) << name << ", " << view_tag_to_string(Tag{}); #endif Kokkos::fence(); @@ -173,9 +173,6 @@ void run_is_sorted_all_scenarios() { {"medium-a", 1003}, {"medium-b", 1003}, {"large-a", 101513}, {"large-b", 101513}}; - std::cout << "is_sorted: " << view_tag_to_string(Tag{}) - << ", all overloads \n"; - for (const auto& it : scenarios) { run_single_scenario(it); } diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSortedUntil.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSortedUntil.cpp index dcfe8ad67e1..29ac7cc9bc1 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSortedUntil.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsIsSortedUntil.cpp @@ -145,10 +145,10 @@ void run_single_scenario(const InfoType& scenario_info) { KE::is_sorted_until("label", exespace(), KE::begin(view), KE::end(view)); auto r3 = KE::is_sorted_until(exespace(), view); auto r4 = KE::is_sorted_until("label", exespace(), view); - ASSERT_EQ(r1, gold); - ASSERT_EQ(r2, gold); - ASSERT_EQ(r3, gold); - ASSERT_EQ(r4, gold); + ASSERT_EQ(r1, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r2, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r3, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r4, gold) << name << ", " << view_tag_to_string(Tag{}); #if !defined KOKKOS_ENABLE_OPENMPTARGET CustomLessThanComparator comp; @@ -160,10 +160,10 @@ void run_single_scenario(const InfoType& scenario_info) { auto r8 = KE::is_sorted_until("label", exespace(), view, comp); #endif - ASSERT_EQ(r1, gold); - ASSERT_EQ(r2, gold); - ASSERT_EQ(r3, gold); - ASSERT_EQ(r4, gold); + ASSERT_EQ(r1, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r2, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r3, gold) << name << ", " << view_tag_to_string(Tag{}); + ASSERT_EQ(r4, gold) << name << ", " << view_tag_to_string(Tag{}); Kokkos::fence(); } @@ -176,9 +176,6 @@ void run_is_sorted_until_all_scenarios() { {"medium-a", 1003}, {"medium-b", 1003}, {"large-a", 101513}, {"large-b", 101513}}; - std::cout << "is_sorted_until: " << view_tag_to_string(Tag{}) - << ", all overloads \n"; - for (const auto& it : scenarios) { run_single_scenario(it); } diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsModOps.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsModOps.cpp index 4604764097e..1b1a02f39c4 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsModOps.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsModOps.cpp @@ -48,7 +48,7 @@ struct MyMovableType { TEST(std_algorithms_mod_ops_test, move) { MyMovableType a; using move_t = decltype(std::move(a)); - static_assert(std::is_rvalue_reference::value, ""); + static_assert(std::is_rvalue_reference::value); // move constr MyMovableType b(std::move(a)); @@ -70,7 +70,7 @@ struct StdAlgoModSeqOpsTestMove { void operator()(const int index) const { typename ViewType::value_type a{11}; using move_t = decltype(std::move(a)); - static_assert(std::is_rvalue_reference::value, ""); + static_assert(std::is_rvalue_reference::value); m_view(index) = std::move(a); } @@ -89,50 +89,6 @@ TEST(std_algorithms_mod_ops_test, move_within_parfor) { } } -// ------------ -// swap -// ------------ -TEST(std_algorithms_mod_ops_test, swap) { - { - int a = 1; - int b = 2; - KE::swap(a, b); - ASSERT_EQ(a, 2); - ASSERT_EQ(b, 1); - } - - { - double a = 3.; - double b = 1.; - KE::swap(a, b); - EXPECT_DOUBLE_EQ(a, 1.); - EXPECT_DOUBLE_EQ(b, 3.); - } -} - -template -struct StdAlgoModSeqOpsTestSwap { - ViewType m_view; - - KOKKOS_INLINE_FUNCTION - void operator()(const int index) const { - typename ViewType::value_type newval{11}; - KE::swap(m_view(index), newval); - } - - StdAlgoModSeqOpsTestSwap(ViewType aIn) : m_view(aIn) {} -}; - -TEST(std_algorithms_mod_ops_test, swap_within_parfor) { - auto a = create_view(stdalgos::DynamicTag{}, 10, "a"); - StdAlgoModSeqOpsTestSwap fnc(a); - Kokkos::parallel_for(a.extent(0), fnc); - auto a_h = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), a); - for (std::size_t i = 0; i < a.extent(0); ++i) { - EXPECT_DOUBLE_EQ(a_h(0), 11.); - } -} - // ------------ // iter_swap // ------------ diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsPartitionCopy.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsPartitionCopy.cpp index f169fd9ce88..a36c9db2b9e 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsPartitionCopy.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsPartitionCopy.cpp @@ -110,11 +110,9 @@ void verify_data(const std::string& name, ResultType my_result, ViewTypeDestFalse view_dest_false, PredType pred) { using value_type = typename ViewTypeFrom::value_type; static_assert( - std::is_same::value, - ""); + std::is_same::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); const std::size_t ext = view_from.extent(0); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamCopyIf.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamCopyIf.cpp index b32a9be3a17..7c3c465dc8d 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamCopyIf.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamCopyIf.cpp @@ -139,7 +139,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); Kokkos::View stdDestView("stdDestView", numTeams, numCols); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < sourceView.extent(0); ++i) { auto rowFrom = Kokkos::subview(sourceViewBeforeOp_h, i, Kokkos::ALL()); auto rowDest = Kokkos::subview(stdDestView, i, Kokkos::ALL()); @@ -166,6 +166,10 @@ void run_all_scenarios() { } TEST(std_algorithms_copy_if_team_test, test) { +// FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamExclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamExclusiveScan.cpp index c6b2566c6cf..2c8fee02f47 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamExclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamExclusiveScan.cpp @@ -121,7 +121,9 @@ struct TestFunctorA { } }; -template +struct InPlace {}; + +template void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { /* description: use a rank-2 view randomly filled with values, @@ -147,9 +149,6 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { using space_t = Kokkos::DefaultExecutionSpace; Kokkos::TeamPolicy policy(numTeams, Kokkos::AUTO()); - // create the destination view - Kokkos::View destView("destView", numTeams, numCols); - // exclusive_scan returns an iterator so to verify that it is correct // each team stores the distance of the returned iterator from the beginning // of the interval that team operates on and then we check that these @@ -168,12 +167,19 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { rand_pool pool(lowerBound * upperBound); Kokkos::fill_random(initValuesView_h, pool, lowerBound, upperBound); - // use CTAD for functor auto initValuesView = Kokkos::create_mirror_view_and_copy(space_t(), initValuesView_h); - TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, - initValuesView, binaryOp, apiId); - Kokkos::parallel_for(policy, fnc); + + Kokkos::View destView("destView", numTeams, numCols); + if constexpr (std::is_same_v) { + TestFunctorA fnc(sourceView, sourceView, distancesView, + intraTeamSentinelView, initValuesView, binaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } else { + TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, + initValuesView, binaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } // ----------------------------------------------- // run cpp-std kernel and check @@ -223,11 +229,16 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { #undef exclusive_scan } - auto dataViewAfterOp_h = create_host_space_copy(destView); - expect_equal_host_views(stdDestView, dataViewAfterOp_h); + if constexpr (std::is_same_v) { + auto dataViewAfterOp_h = create_host_space_copy(sourceView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } else { + auto dataViewAfterOp_h = create_host_space_copy(destView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } } -template +template void run_all_scenarios() { for (int numTeams : teamSizesToTest) { for (const auto& numCols : {0, 1, 2, 13, 101, 1444, 8153}) { @@ -236,16 +247,24 @@ void run_all_scenarios() { #else for (int apiId : {0, 1}) { #endif - test_A(numTeams, numCols, apiId); + test_A(numTeams, numCols, apiId); } } } } TEST(std_algorithms_exclusive_scan_team_test, test) { +// FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); + + run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); } } // namespace TeamExclusiveScan diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamInclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamInclusiveScan.cpp index 0daf9dbfe82..b5f4cdd6123 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamInclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamInclusiveScan.cpp @@ -139,7 +139,9 @@ struct TestFunctorA { } }; -template +struct InPlace {}; + +template void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { /* description: use a rank-2 view randomly filled with values, @@ -165,9 +167,6 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { using space_t = Kokkos::DefaultExecutionSpace; Kokkos::TeamPolicy policy(numTeams, Kokkos::AUTO()); - // create the destination view - Kokkos::View destView("destView", numTeams, numCols); - // inclusive_scan returns an iterator so to verify that it is correct // each team stores the distance of the returned iterator from the beginning // of the interval that team operates on and then we check that these @@ -186,12 +185,20 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { rand_pool pool(lowerBound * upperBound); Kokkos::fill_random(initValuesView_h, pool, lowerBound, upperBound); - // use CTAD for functor auto initValuesView = Kokkos::create_mirror_view_and_copy(space_t(), initValuesView_h); - TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, - initValuesView, binaryOp, apiId); - Kokkos::parallel_for(policy, fnc); + + // create the destination view + Kokkos::View destView("destView", numTeams, numCols); + if constexpr (std::is_same_v) { + TestFunctorA fnc(sourceView, sourceView, distancesView, + intraTeamSentinelView, initValuesView, binaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } else { + TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, + initValuesView, binaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } // ----------------------------------------------- // run cpp-std kernel and check @@ -251,25 +258,38 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { #undef inclusive_scan } - auto dataViewAfterOp_h = create_host_space_copy(destView); - expect_equal_host_views(stdDestView, dataViewAfterOp_h); + if constexpr (std::is_same_v) { + auto dataViewAfterOp_h = create_host_space_copy(sourceView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } else { + auto dataViewAfterOp_h = create_host_space_copy(destView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } } -template +template void run_all_scenarios() { for (int numTeams : teamSizesToTest) { for (const auto& numCols : {0, 1, 2, 13, 101, 1444, 8153}) { for (int apiId : {0, 1, 2, 3, 4, 5}) { - test_A(numTeams, numCols, apiId); + test_A(numTeams, numCols, apiId); } } } } TEST(std_algorithms_inclusive_scan_team_test, test) { +// FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); + + run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); } } // namespace TeamInclusiveScan diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamIsPartitioned.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamIsPartitioned.cpp index 1928f955880..21da333e75d 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamIsPartitioned.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamIsPartitioned.cpp @@ -191,7 +191,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId, // ----------------------------------------------- auto returnView_h = create_host_space_copy(returnView); auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < dataView_dc_h.extent(0); ++i) { auto myRow = Kokkos::subview(dataView_dc_h, i, Kokkos::ALL()); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionCopy.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionCopy.cpp index c0bbdfa3904..78ab6bf1f8d 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionCopy.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionCopy.cpp @@ -240,7 +240,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId, "stdDestTrueView", numTeams, numCols); Kokkos::View stdDestFalseView( "stdDestFalseView", numTeams, numCols); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < sourceView_dc_h.extent(0); ++i) { auto myRowSource = Kokkos::subview(sourceView_dc_h, i, Kokkos::ALL()); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionPoint.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionPoint.cpp index 954d4612468..370e91cc1ff 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionPoint.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamPartitionPoint.cpp @@ -197,7 +197,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId, auto distancesView_h = create_host_space_copy(distancesView); auto dataViewAfterOp_h = create_host_space_copy(dataView); auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < dataView_dc_h.extent(0); ++i) { auto myRow = Kokkos::subview(dataView_dc_h, i, Kokkos::ALL()); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopy.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopy.cpp index 24b840154b7..6bb0d249988 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopy.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopy.cpp @@ -212,6 +212,10 @@ void run_all_scenarios() { } TEST(std_algorithms_remove_copy_team_test, test) { +// FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopyIf.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopyIf.cpp index 2082fa97288..cff9aa178a2 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopyIf.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveCopyIf.cpp @@ -138,7 +138,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); Kokkos::View stdDestView("stdDestView", numTeams, numCols); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < destViewAfterOp_h.extent(0); ++i) { auto rowFrom = Kokkos::subview(cloneOfSourceViewBeforeOp_h, i, Kokkos::ALL()); @@ -168,6 +168,10 @@ void run_all_scenarios() { } TEST(std_algorithms_remove_copy_if_team_test, test) { +// FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveIf.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveIf.cpp index 3315f281da6..3dd7cb764c6 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveIf.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamRemoveIf.cpp @@ -127,7 +127,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { // ----------------------------------------------- // check against std // ----------------------------------------------- - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); auto dataViewAfterOp_h = create_host_space_copy(dataView); auto distancesView_h = create_host_space_copy(distancesView); auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceCopyIf.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceCopyIf.cpp index ae43a2a4269..d0217aed7a8 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceCopyIf.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceCopyIf.cpp @@ -145,7 +145,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { auto intraTeamSentinelView_h = create_host_space_copy(intraTeamSentinelView); Kokkos::View stdDestView("stdDestView", numTeams, numCols); - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < sourceView.extent(0); ++i) { auto rowFrom = Kokkos::subview(cloneOfSourceViewBeforeOp_h, i, Kokkos::ALL()); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceIf.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceIf.cpp index 1d5d9578f94..d79b53d3551 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceIf.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamReplaceIf.cpp @@ -103,7 +103,7 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { stdDataView(i, j) = cloneOfDataViewBeforeOp_h(i, j); } } - GreaterThanValueFunctor predicate(threshold); + GreaterThanValueFunctor predicate(threshold); for (std::size_t i = 0; i < dataView.extent(0); ++i) { auto thisRow = Kokkos::subview(stdDataView, i, Kokkos::ALL()); std::replace_if(KE::begin(thisRow), KE::end(thisRow), predicate, newVal); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformExclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformExclusiveScan.cpp index 9f30812d8ef..60fa369af18 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformExclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformExclusiveScan.cpp @@ -108,7 +108,9 @@ struct TestFunctorA { } }; -template +struct InPlace {}; + +template void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { /* description: use a rank-2 view randomly filled with values, @@ -134,9 +136,6 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { using space_t = Kokkos::DefaultExecutionSpace; Kokkos::TeamPolicy policy(numTeams, Kokkos::AUTO()); - // create the destination view - Kokkos::View destView("destView", numTeams, numCols); - // tranform_exclusive_scan returns an iterator so to verify that it is correct // each team stores the distance of the returned iterator from the beginning // of the interval that team operates on and then we check that these @@ -156,12 +155,21 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { rand_pool pool(lowerBound * upperBound); Kokkos::fill_random(initValuesView_h, pool, lowerBound, upperBound); - // use CTAD for functor auto initValuesView = Kokkos::create_mirror_view_and_copy(space_t(), initValuesView_h); - TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, - initValuesView, binaryOp, unaryOp, apiId); - Kokkos::parallel_for(policy, fnc); + + // create the destination view + Kokkos::View destView("destView", numTeams, numCols); + if constexpr (std::is_same_v) { + TestFunctorA fnc(sourceView, sourceView, distancesView, + intraTeamSentinelView, initValuesView, binaryOp, unaryOp, + apiId); + Kokkos::parallel_for(policy, fnc); + } else { + TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, + initValuesView, binaryOp, unaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } // ----------------------------------------------- // run cpp-std kernel and check @@ -200,16 +208,21 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { #undef transform_exclusive_scan } - auto dataViewAfterOp_h = create_host_space_copy(destView); - expect_equal_host_views(stdDestView, dataViewAfterOp_h); + if constexpr (std::is_same_v) { + auto dataViewAfterOp_h = create_host_space_copy(sourceView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } else { + auto dataViewAfterOp_h = create_host_space_copy(destView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } } -template +template void run_all_scenarios() { for (int numTeams : teamSizesToTest) { for (const auto& numCols : {0, 1, 2, 13, 101, 1444, 8153}) { for (int apiId : {0, 1}) { - test_A(numTeams, numCols, apiId); + test_A(numTeams, numCols, apiId); } } } @@ -219,6 +232,10 @@ TEST(std_algorithms_transform_exclusive_scan_team_test, test) { run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); + + run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); } } // namespace TeamTransformExclusiveScan diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformInclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformInclusiveScan.cpp index 4b316602326..10454d65515 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformInclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamTransformInclusiveScan.cpp @@ -131,7 +131,9 @@ struct TestFunctorA { } }; -template +struct InPlace {}; + +template void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { /* description: use a rank-2 view randomly filled with values, @@ -157,9 +159,6 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { using space_t = Kokkos::DefaultExecutionSpace; Kokkos::TeamPolicy policy(numTeams, Kokkos::AUTO()); - // create the destination view - Kokkos::View destView("destView", numTeams, numCols); - // tranform_inclusive_scan returns an iterator so to verify that it is correct // each team stores the distance of the returned iterator from the beginning // of the interval that team operates on and then we check that these @@ -179,12 +178,21 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { rand_pool pool(lowerBound * upperBound); Kokkos::fill_random(initValuesView_h, pool, lowerBound, upperBound); - // use CTAD for functor auto initValuesView = Kokkos::create_mirror_view_and_copy(space_t(), initValuesView_h); - TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, - initValuesView, binaryOp, unaryOp, apiId); - Kokkos::parallel_for(policy, fnc); + + // create the destination view + Kokkos::View destView("destView", numTeams, numCols); + if constexpr (std::is_same_v) { + TestFunctorA fnc(sourceView, sourceView, distancesView, + intraTeamSentinelView, initValuesView, binaryOp, unaryOp, + apiId); + Kokkos::parallel_for(policy, fnc); + } else { + TestFunctorA fnc(sourceView, destView, distancesView, intraTeamSentinelView, + initValuesView, binaryOp, unaryOp, apiId); + Kokkos::parallel_for(policy, fnc); + } // ----------------------------------------------- // run cpp-std kernel and check @@ -236,16 +244,21 @@ void test_A(std::size_t numTeams, std::size_t numCols, int apiId) { } #undef transform_inclusive_scan - auto dataViewAfterOp_h = create_host_space_copy(destView); - expect_equal_host_views(stdDestView, dataViewAfterOp_h); + if constexpr (std::is_same_v) { + auto dataViewAfterOp_h = create_host_space_copy(sourceView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } else { + auto dataViewAfterOp_h = create_host_space_copy(destView); + expect_equal_host_views(stdDestView, dataViewAfterOp_h); + } } -template +template void run_all_scenarios() { for (int numTeams : teamSizesToTest) { for (const auto& numCols : {0, 1, 2, 13, 101, 1444, 8153}) { for (int apiId : {0, 1, 2, 3}) { - test_A(numTeams, numCols, apiId); + test_A(numTeams, numCols, apiId); } } } @@ -255,6 +268,10 @@ TEST(std_algorithms_transform_inclusive_scan_team_test, test) { run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); + + run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); } } // namespace TeamTransformInclusiveScan diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamUniqueCopy.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamUniqueCopy.cpp index 87687b60a16..0d3289e196f 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamUniqueCopy.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTeamUniqueCopy.cpp @@ -186,6 +186,10 @@ void run_all_scenarios() { } TEST(std_algorithms_unique_copy_team_test, test) { + // FIXME_OPENMPTARGET +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + GTEST_SKIP() << "the test is known to fail with OpenMPTarget on Intel GPUs"; +#endif run_all_scenarios(); run_all_scenarios(); run_all_scenarios(); diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformExclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformExclusiveScan.cpp index 9dac3ce75ff..fa2804256ac 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformExclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformExclusiveScan.cpp @@ -16,6 +16,7 @@ #include #include +#include namespace Test { namespace stdalgos { @@ -160,24 +161,15 @@ void verify_data(ViewType1 data_view, // contains data create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); if (test_view_h.extent(0) > 0) { for (std::size_t i = 0; i < test_view_h.extent(0); ++i) { - // std::cout << i << " " << std::setprecision(15) << data_view_h(i) << " " - // << gold_h(i) << " " << test_view_h(i) << " " - // << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - if (std::is_same::value) { ASSERT_EQ(gold_h(i), test_view_h(i)); } else { const auto error = std::abs(gold_h(i) - test_view_h(i)); - if (error > 1e-10) { - std::cout << i << " " << std::setprecision(15) << data_view_h(i) - << " " << gold_h(i) << " " << test_view_h(i) << " " - << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - } - EXPECT_LT(error, 1e-10); + ASSERT_LT(error, 1e-10) << i << " " << std::setprecision(15) << error + << static_cast(test_view_h(i)) << " " + << static_cast(gold_h(i)); } } - // std::cout << " last el: " << test_view_h(test_view_h.extent(0)-1) << - // std::endl; } } @@ -205,17 +197,13 @@ void run_single_scenario(const InfoType& scenario_info, ValueType init_value, BinaryOp bop, UnaryOp uop) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // std::cout << "transform_exclusive_scan custom op: " << name << ", " - // << view_tag_to_string(Tag{}) << ", " - // << value_type_to_string(ValueType()) << ", " - // << "init = " << init_value << std::endl; - - auto view_dest = - create_view(Tag{}, view_ext, "transform_exclusive_scan"); - auto view_from = - create_view(Tag{}, view_ext, "transform_exclusive_scan"); + + auto view_from = create_view(Tag{}, view_ext, + "transform_exclusive_scan_view_from"); fill_view(view_from, name); + auto view_dest = create_view(Tag{}, view_ext, + "transform_exclusive_scan_view_dest"); { fill_zero(view_dest); auto r = KE::transform_exclusive_scan( @@ -253,6 +241,65 @@ void run_single_scenario(const InfoType& scenario_info, ValueType init_value, Kokkos::fence(); } +template +void run_single_scenario_inplace(const InfoType& scenario_info, + ValueType init_value, BinaryOp bop, + UnaryOp uop) { + const auto name = std::get<0>(scenario_info); + const std::size_t view_ext = std::get<1>(scenario_info); + + // since here we call the in-place operation, we need to use two views: + // view1: filled according to what the scenario asks for and is not modified + // view2: filled according to what the scenario asks for and used for the + // in-place op Therefore, after the op is done, view2 should contain the + // result of doing exclusive scan NOTE: view2 is filled below every time + // because the algorithm acts in place + + auto view1 = + create_view(Tag{}, view_ext, "transform_exclusive_scan_view1"); + fill_view(view1, name); + + auto view2 = + create_view(Tag{}, view_ext, "transform_exclusive_scan_view2"); + + { + fill_view(view2, name); + auto r = KE::transform_exclusive_scan(exespace(), KE::cbegin(view2), + KE::cend(view2), KE::begin(view2), + init_value, bop, uop); + ASSERT_EQ(r, KE::end(view2)); + verify_data(view1, view2, init_value, bop, uop); + } + + { + fill_view(view2, name); + auto r = KE::transform_exclusive_scan( + "label", exespace(), KE::cbegin(view2), KE::cend(view2), + KE::begin(view2), init_value, bop, uop); + ASSERT_EQ(r, KE::end(view2)); + verify_data(view1, view2, init_value, bop, uop); + } + + { + fill_view(view2, name); + auto r = KE::transform_exclusive_scan(exespace(), view2, view2, init_value, + bop, uop); + ASSERT_EQ(r, KE::end(view2)); + verify_data(view1, view2, init_value, bop, uop); + } + + { + fill_view(view2, name); + auto r = KE::transform_exclusive_scan("label", exespace(), view2, view2, + init_value, bop, uop); + ASSERT_EQ(r, KE::end(view2)); + verify_data(view1, view2, init_value, bop, uop); + } + + Kokkos::fence(); +} + template void run_all_scenarios() { const std::map scenarios = { @@ -267,6 +314,11 @@ void run_all_scenarios() { run_single_scenario(it, ValueType{1}, bop_t(), uop_t()); run_single_scenario(it, ValueType{-2}, bop_t(), uop_t()); run_single_scenario(it, ValueType{3}, bop_t(), uop_t()); + + run_single_scenario_inplace(it, ValueType{0}, bop_t(), + uop_t()); + run_single_scenario_inplace(it, ValueType{-2}, bop_t(), + uop_t()); } } diff --git a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformInclusiveScan.cpp b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformInclusiveScan.cpp index a90a68ca1d7..fb81ae91b04 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformInclusiveScan.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdAlgorithmsTransformInclusiveScan.cpp @@ -16,6 +16,7 @@ #include #include +#include namespace Test { namespace stdalgos { @@ -172,24 +173,15 @@ void verify_data(ViewType1 data_view, // contains data create_mirror_view_and_copy(Kokkos::HostSpace(), test_view_dc); if (test_view_h.extent(0) > 0) { for (std::size_t i = 0; i < test_view_h.extent(0); ++i) { - // std::cout << i << " " << std::setprecision(15) << data_view_h(i) << " " - // << gold_h(i) << " " << test_view_h(i) << " " - // << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - if (std::is_same::value) { ASSERT_EQ(gold_h(i), test_view_h(i)); } else { const auto error = std::abs(gold_h(i) - test_view_h(i)); - if (error > 1e-10) { - std::cout << i << " " << std::setprecision(15) << data_view_h(i) - << " " << gold_h(i) << " " << test_view_h(i) << " " - << std::abs(gold_h(i) - test_view_h(i)) << std::endl; - } - EXPECT_LT(error, 1e-10); + ASSERT_LT(error, 1e-10) << i << " " << std::setprecision(15) << error + << static_cast(test_view_h(i)) << " " + << static_cast(gold_h(i)); } } - // std::cout << " last el: " << test_view_h(test_view_h.extent(0)-1) << - // std::endl; } } @@ -210,30 +202,11 @@ struct SumBinaryFunctor { std::string value_type_to_string(int) { return "int"; } std::string value_type_to_string(double) { return "double"; } -template -void print_scenario_details(const std::string& name, BopT bop, UopT uop) { - (void)bop; - (void)uop; - std::cout << "transform_inclusive_scan: " << name << ", " - << view_tag_to_string(Tag{}) << std::endl; -} - -template -void print_scenario_details(const std::string& name, BopT bop, UopT uop, - ValueType init_value) { - (void)bop; - (void)uop; - std::cout << "transform_inclusive_scan: " << name << ", " - << view_tag_to_string(Tag{}) << ", " - << "init = " << init_value << std::endl; -} - template void run_single_scenario(const InfoType& scenario_info, Args... args /* by value on purpose*/) { const auto name = std::get<0>(scenario_info); const std::size_t view_ext = std::get<1>(scenario_info); - // print_scenario_details(name, args...); auto view_dest = create_view(Tag{}, view_ext, "transform_inclusive_scan"); @@ -278,6 +251,63 @@ void run_single_scenario(const InfoType& scenario_info, Kokkos::fence(); } +template +void run_single_scenario_inplace(const InfoType& scenario_info, + Args... args /* by value on purpose*/) { + const auto name = std::get<0>(scenario_info); + const std::size_t view_ext = std::get<1>(scenario_info); + + // since here we call the in-place operation, we need to use two views: + // view1: filled according to scenario and is not modified + // view2: filled according scenario and used for the in-place op + // Therefore, after the op is done, view_2 should contain the + // result of doing exclusive scan. + // NOTE: view2 must be filled before every call to the algorithm + // because the algorithm acts in place + + auto view_1 = create_view(Tag{}, view_ext, + "transform_inclusive_scan_view_1"); + fill_view(view_1, name); + + auto view_2 = create_view(Tag{}, view_ext, + "transform_inclusive_scan_view_2"); + + { + fill_view(view_2, name); + auto r = KE::transform_inclusive_scan(exespace(), KE::cbegin(view_2), + KE::cend(view_2), KE::begin(view_2), + args...); + ASSERT_EQ(r, KE::end(view_2)); + verify_data(view_1, view_2, args...); + } + + { + fill_view(view_2, name); + auto r = KE::transform_inclusive_scan("label", exespace(), + KE::cbegin(view_2), KE::cend(view_2), + KE::begin(view_2), args...); + ASSERT_EQ(r, KE::end(view_2)); + verify_data(view_1, view_2, args...); + } + + { + fill_view(view_2, name); + auto r = KE::transform_inclusive_scan(exespace(), view_2, view_2, args...); + ASSERT_EQ(r, KE::end(view_2)); + verify_data(view_1, view_2, args...); + } + + { + fill_view(view_2, name); + auto r = KE::transform_inclusive_scan("label", exespace(), view_2, view_2, + args...); + ASSERT_EQ(r, KE::end(view_2)); + verify_data(view_1, view_2, args...); + } + + Kokkos::fence(); +} + template void run_all_scenarios() { const std::map scenarios = { @@ -294,15 +324,23 @@ void run_all_scenarios() { run_single_scenario(it, bop_t(), uop_t(), ValueType{2}); run_single_scenario(it, bop_t(), uop_t(), ValueType{-1}); run_single_scenario(it, bop_t(), uop_t(), ValueType{-2}); + + run_single_scenario_inplace(it, bop_t(), uop_t()); + run_single_scenario_inplace(it, bop_t(), uop_t(), + ValueType{0}); + run_single_scenario_inplace(it, bop_t(), uop_t(), + ValueType{2}); + run_single_scenario_inplace(it, bop_t(), uop_t(), + ValueType{-2}); } } #if !defined KOKKOS_ENABLE_OPENMPTARGET TEST(std_algorithms_numeric_ops_test, transform_inclusive_scan) { run_all_scenarios(); - // run_all_scenarios(); - // run_all_scenarios(); - // run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); + run_all_scenarios(); } #endif diff --git a/lib/kokkos/algorithms/unit_tests/TestStdReducers.cpp b/lib/kokkos/algorithms/unit_tests/TestStdReducers.cpp index 3847e1e6a36..c05006a1617 100644 --- a/lib/kokkos/algorithms/unit_tests/TestStdReducers.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestStdReducers.cpp @@ -83,9 +83,6 @@ auto run_min_or_max_test(ViewType view, StdReducersTestEnumOrder enValue) { static_assert(std::is_same::value, "test is only enabled for HostSpace"); - std::cout << "checking reduction with order: " << order_to_string(enValue) - << "\n"; - using view_value_type = typename ViewType::value_type; using reducer_type = std::conditional_t< (flag == 0), Kokkos::MaxFirstLoc, @@ -132,18 +129,24 @@ TEST(std_algorithms_reducers, max_first_loc) { const auto pair1 = run_min_or_max_test<0, hostspace, index_type>( view_h, StdReducersTestEnumOrder::LeftToRight); - ASSERT_EQ(pair1.first, gold_value); - ASSERT_EQ(pair1.second, gold_location); + ASSERT_EQ(pair1.first, gold_value) + << order_to_string(StdReducersTestEnumOrder::LeftToRight); + ASSERT_EQ(pair1.second, gold_location) + << order_to_string(StdReducersTestEnumOrder::LeftToRight); const auto pair2 = run_min_or_max_test<0, hostspace, index_type>( view_h, StdReducersTestEnumOrder::RightToLeft); - ASSERT_EQ(pair2.first, gold_value); - ASSERT_EQ(pair2.second, gold_location); + ASSERT_EQ(pair2.first, gold_value) + << order_to_string(StdReducersTestEnumOrder::RightToLeft); + ASSERT_EQ(pair2.second, gold_location) + << order_to_string(StdReducersTestEnumOrder::RightToLeft); const auto pair3 = run_min_or_max_test<0, hostspace, index_type>( view_h, StdReducersTestEnumOrder::Random); - ASSERT_EQ(pair3.first, gold_value); - ASSERT_EQ(pair3.second, gold_location); + ASSERT_EQ(pair3.first, gold_value) + << order_to_string(StdReducersTestEnumOrder::Random); + ASSERT_EQ(pair3.second, gold_location) + << order_to_string(StdReducersTestEnumOrder::Random); } TEST(std_algorithms_reducers, min_first_loc) { @@ -191,9 +194,6 @@ void run_min_max_test(ViewType view, StdReducersTestEnumOrder enValue, static_assert(std::is_same::value, "test is only enabled for HostSpace"); - std::cout << "checking reduction with order: " << order_to_string(enValue) - << "\n"; - using view_value_type = typename ViewType::value_type; using reducer_type = Kokkos::MinMaxFirstLastLoc; @@ -212,10 +212,10 @@ void run_min_max_test(ViewType view, StdReducersTestEnumOrder enValue, reduction_value_type{view(index), view(index), index, index}); } - ASSERT_EQ(red_result.min_val, gold_values.first); - ASSERT_EQ(red_result.max_val, gold_values.second); - ASSERT_EQ(red_result.min_loc, gold_locs.first); - ASSERT_EQ(red_result.max_loc, gold_locs.second); + ASSERT_EQ(red_result.min_val, gold_values.first) << order_to_string(enValue); + ASSERT_EQ(red_result.max_val, gold_values.second) << order_to_string(enValue); + ASSERT_EQ(red_result.min_loc, gold_locs.first) << order_to_string(enValue); + ASSERT_EQ(red_result.max_loc, gold_locs.second) << order_to_string(enValue); } TEST(std_algorithms_reducers, min_max_first_last_loc) { diff --git a/lib/kokkos/benchmarks/CMakeLists.txt b/lib/kokkos/benchmarks/CMakeLists.txt index 42279bf55db..abf50283594 100644 --- a/lib/kokkos/benchmarks/CMakeLists.txt +++ b/lib/kokkos/benchmarks/CMakeLists.txt @@ -1 +1,12 @@ +#FIXME_OPENMPTARGET - compiling in debug mode causes ICE. +KOKKOS_ADD_BENCHMARK_DIRECTORIES(atomic) +KOKKOS_ADD_BENCHMARK_DIRECTORIES(gather) KOKKOS_ADD_BENCHMARK_DIRECTORIES(gups) +KOKKOS_ADD_BENCHMARK_DIRECTORIES(launch_latency) +KOKKOS_ADD_BENCHMARK_DIRECTORIES(stream) + +#FIXME_OPENMPTARGET - These two benchmarks cause ICE. Commenting them for now but a deeper analysis on the cause and a possible fix will follow. +IF(NOT Kokkos_ENABLE_OPENMPTARGET) + KOKKOS_ADD_BENCHMARK_DIRECTORIES(policy_performance) + KOKKOS_ADD_BENCHMARK_DIRECTORIES(bytes_and_flops) +ENDIF() diff --git a/lib/kokkos/benchmarks/atomic/CMakeLists.txt b/lib/kokkos/benchmarks/atomic/CMakeLists.txt new file mode 100644 index 00000000000..85f7412f492 --- /dev/null +++ b/lib/kokkos/benchmarks/atomic/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + atomic + SOURCES main.cpp +) diff --git a/lib/kokkos/benchmarks/bytes_and_flops/CMakeLists.txt b/lib/kokkos/benchmarks/bytes_and_flops/CMakeLists.txt new file mode 100644 index 00000000000..0ce44a6f1a8 --- /dev/null +++ b/lib/kokkos/benchmarks/bytes_and_flops/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + bytes_and_flops + SOURCES bench_double.cpp bench_float.cpp bench_int32_t.cpp bench_int64_t.cpp main.cpp +) diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench.hpp b/lib/kokkos/benchmarks/bytes_and_flops/bench.hpp index 2589fd7309b..88830af624b 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench.hpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench.hpp @@ -37,22 +37,22 @@ struct RunStride { }; #define STRIDE 1 -#include +#include "bench_stride.hpp" #undef STRIDE #define STRIDE 2 -#include +#include "bench_stride.hpp" #undef STRIDE #define STRIDE 4 -#include +#include "bench_stride.hpp" #undef STRIDE #define STRIDE 8 -#include +#include "bench_stride.hpp" #undef STRIDE #define STRIDE 16 -#include +#include "bench_stride.hpp" #undef STRIDE #define STRIDE 32 -#include +#include "bench_stride.hpp" #undef STRIDE template diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_double.cpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_double.cpp index f955c996660..2fda1ae3d42 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_double.cpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_double.cpp @@ -14,7 +14,7 @@ // //@HEADER -#include +#include "bench.hpp" template void run_stride_unroll(int N, int K, int R, int D, int U, int F, int T, int S, int B, int I); diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_float.cpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_float.cpp index 137ff67d404..3210116a9ee 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_float.cpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_float.cpp @@ -14,7 +14,7 @@ // //@HEADER -#include +#include "bench.hpp" template void run_stride_unroll(int N, int K, int R, int D, int U, int F, int T, int S, int B, int I); diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_int32_t.cpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_int32_t.cpp index 29ccec01414..24a5dcd3899 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_int32_t.cpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_int32_t.cpp @@ -14,7 +14,7 @@ // //@HEADER -#include +#include "bench.hpp" template void run_stride_unroll(int N, int K, int R, int D, int U, int F, int T, int S, int B, int I); diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_int64_t.cpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_int64_t.cpp index c153d5eff39..0634700c31e 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_int64_t.cpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_int64_t.cpp @@ -14,7 +14,7 @@ // //@HEADER -#include +#include "bench.hpp" template void run_stride_unroll(int N, int K, int R, int D, int U, int F, int T, int S, int B, int I); diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_stride.hpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_stride.hpp index b63d486fc9e..80f017fbe8f 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_stride.hpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_stride.hpp @@ -15,28 +15,28 @@ //@HEADER #define UNROLL 1 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 2 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 3 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 4 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 5 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 6 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 7 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL #define UNROLL 8 -#include +#include "bench_unroll_stride.hpp" #undef UNROLL template diff --git a/lib/kokkos/benchmarks/bytes_and_flops/bench_unroll_stride.hpp b/lib/kokkos/benchmarks/bytes_and_flops/bench_unroll_stride.hpp index 0f7a298c1bb..78cfd48effe 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/bench_unroll_stride.hpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/bench_unroll_stride.hpp @@ -26,7 +26,7 @@ struct Run { Kokkos::deep_copy(C, Scalar(3.5)); Kokkos::Timer timer; - for (int i = 0; i < I; ++i) { + for (int iter = 0; iter < I; ++iter) { Kokkos::parallel_for( "BenchmarkKernel", Kokkos::TeamPolicy<>(N, T).set_scratch_size(0, Kokkos::PerTeam(S)), diff --git a/lib/kokkos/benchmarks/bytes_and_flops/main.cpp b/lib/kokkos/benchmarks/bytes_and_flops/main.cpp index 20077757d1f..fdfcc4ea64f 100644 --- a/lib/kokkos/benchmarks/bytes_and_flops/main.cpp +++ b/lib/kokkos/benchmarks/bytes_and_flops/main.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include "bench.hpp" #include extern template void run_stride_unroll(int, int, int, int, int, int, int, @@ -86,7 +86,7 @@ int main(int argc, char* argv[]) { printf("D must be one of 1,2,4,8,16,32\n"); return 0; } - if ((P < 1) && (P > 2)) { + if ((P < 1) || (P > 4)) { printf("P must be one of 1,2,3,4\n"); return 0; } diff --git a/lib/kokkos/benchmarks/gather/CMakeLists.txt b/lib/kokkos/benchmarks/gather/CMakeLists.txt new file mode 100644 index 00000000000..24c70627725 --- /dev/null +++ b/lib/kokkos/benchmarks/gather/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + gather + SOURCES main.cpp +) diff --git a/lib/kokkos/benchmarks/gather/gather.hpp b/lib/kokkos/benchmarks/gather/gather.hpp index d83461702c7..90b1101c1d5 100644 --- a/lib/kokkos/benchmarks/gather/gather.hpp +++ b/lib/kokkos/benchmarks/gather/gather.hpp @@ -20,28 +20,28 @@ struct RunGather { }; #define UNROLL 1 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 2 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 3 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 4 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 5 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 6 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 7 -#include +#include "gather_unroll.hpp" #undef UNROLL #define UNROLL 8 -#include +#include "gather_unroll.hpp" #undef UNROLL template diff --git a/lib/kokkos/benchmarks/gather/gather_unroll.hpp b/lib/kokkos/benchmarks/gather/gather_unroll.hpp index 5ee5742a3f7..1aa73091bc5 100644 --- a/lib/kokkos/benchmarks/gather/gather_unroll.hpp +++ b/lib/kokkos/benchmarks/gather/gather_unroll.hpp @@ -138,7 +138,7 @@ struct RunGather { printf( "SNKDRUF: %i %i %i %i %i %i %i Time: %lfs Bandwidth: %lfGiB/s GFlop/s: " "%lf GGather/s: %lf\n", - sizeof(Scalar) / 4, N, K, D, R, UNROLL, F, seconds, + static_cast(sizeof(Scalar) / 4), N, K, D, R, UNROLL, F, seconds, 1.0 * bytes / seconds / 1024 / 1024 / 1024, 1.e-9 * flops / seconds, 1.e-9 * gather_ops / seconds); } diff --git a/lib/kokkos/benchmarks/gather/main.cpp b/lib/kokkos/benchmarks/gather/main.cpp index 7f4fc9ede6c..07fca9fdc64 100644 --- a/lib/kokkos/benchmarks/gather/main.cpp +++ b/lib/kokkos/benchmarks/gather/main.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include "gather.hpp" #include int main(int argc, char* argv[]) { diff --git a/lib/kokkos/benchmarks/launch_latency/CMakeLists.txt b/lib/kokkos/benchmarks/launch_latency/CMakeLists.txt new file mode 100644 index 00000000000..bb14da749d1 --- /dev/null +++ b/lib/kokkos/benchmarks/launch_latency/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + launch_latency + SOURCES launch_latency.cpp +) diff --git a/lib/kokkos/benchmarks/launch_latency/launch_latency.cpp b/lib/kokkos/benchmarks/launch_latency/launch_latency.cpp new file mode 100644 index 00000000000..73b176ab8dd --- /dev/null +++ b/lib/kokkos/benchmarks/launch_latency/launch_latency.cpp @@ -0,0 +1,283 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +/*! \file launch_latency.cpp + + Tests of parallel_for and parallel_reduce latency for different + circumstances. + + Three launch kinds are tested: parallel_for, parallel_reduce into scalar, + and parallel_reduce into view + + N controls how large the parallel loops is + V controls how large the functor is + M controls across how many launches the latency is averaged + K controls how larege the nested loop is (no larger than V) + + For each launch kind, + 1. Avg functor dispatch latency: (time to do M launches) / M + 2. Avg functor completion throughput: (M launches + sync) / M + 3. Avg functor completion latency: (M (launch + sync)) / M +*/ + +#include + +template +struct TestFunctor { + double values[V]; + Kokkos::View a; + int K; + TestFunctor(Kokkos::View a_, int K_) : a(a_), K(K_) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { + for (int j = 0; j < K; j++) a(i) += 1.0 * i * values[j]; + } +}; + +template +struct TestRFunctor { + double values[V]; + Kokkos::View a; + int K; + TestRFunctor(Kokkos::View a_, int K_) : a(a_), K(K_) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i, double& lsum) const { + for (int j = 0; j < K; j++) a(i) += 1.0 * i * values[j]; + lsum += a(i); + } +}; + +struct Opts { + bool par_for = true; + bool par_reduce = true; + bool par_reduce_view = true; +}; + +template +void run(int N, int M, int K, const Opts& opts) { + std::string l_no_fence, l_fence, l_red_no_fence, l_red_fence, + l_red_view_no_fence, l_red_view_fence; + { + std::ostringstream ostream; + ostream << "RunNoFence_" << N << "_" << K << std::endl; + l_no_fence = ostream.str(); + } + { + std::ostringstream ostream; + ostream << "RunFence_" << N << "_" << K << std::endl; + l_fence = ostream.str(); + } + { + std::ostringstream ostream; + ostream << "RunReduceNoFence_" << N << "_" << K << std::endl; + l_red_no_fence = ostream.str(); + } + { + std::ostringstream ostream; + ostream << "RunReduceFence_" << N << "_" << K << std::endl; + l_red_fence = ostream.str(); + } + { + std::ostringstream ostream; + ostream << "RunReduceViewNoFence_" << N << "_" << K << std::endl; + l_red_view_no_fence = ostream.str(); + } + { + std::ostringstream ostream; + ostream << "RunReduceViewFence_" << N << "_" << K << std::endl; + l_red_view_fence = ostream.str(); + } + + double result; + Kokkos::View a("A", N); + Kokkos::View v_result("result"); + TestFunctor f(a, K); + TestRFunctor rf(a, K); + Kokkos::Timer timer; + + // initialize to an obviously wrong value + double time_no_fence = -1; // launch loop + double time_no_fence_fenced = -1; // launch loop then fence + double time_fence = -1; // launch&fence loop + + double time_red_no_fence = -1; + double time_red_no_fence_fenced = -1; + double time_red_fence = -1; + + double time_red_view_no_fence = -1; + double time_red_view_no_fence_fenced = -1; + double time_red_view_fence = -1; + + if (opts.par_for) { + // warmup + for (int i = 0; i < 4; ++i) { + Kokkos::parallel_for(l_no_fence, N, f); + } + Kokkos::fence(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_for(l_no_fence, N, f); + } + time_no_fence = timer.seconds(); + Kokkos::fence(); + time_no_fence_fenced = timer.seconds(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_for(l_fence, N, f); + Kokkos::fence(); + } + time_fence = timer.seconds(); + } + + if (opts.par_reduce) { + // warmup + for (int i = 0; i < 4; ++i) { + Kokkos::parallel_reduce(l_red_no_fence, N, rf, result); + } + Kokkos::fence(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_reduce(l_red_no_fence, N, rf, result); + } + time_red_no_fence = timer.seconds(); + Kokkos::fence(); + time_red_no_fence_fenced = timer.seconds(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_reduce(l_red_fence, N, rf, result); + Kokkos::fence(); + } + time_red_fence = timer.seconds(); + Kokkos::fence(); + } + + if (opts.par_reduce_view) { + // warmup + for (int i = 0; i < 4; ++i) { + Kokkos::parallel_reduce(l_red_view_no_fence, N, rf, v_result); + } + Kokkos::fence(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_reduce(l_red_view_no_fence, N, rf, v_result); + } + time_red_view_no_fence = timer.seconds(); + Kokkos::fence(); + time_red_view_no_fence_fenced = timer.seconds(); + + timer.reset(); + for (int i = 0; i < M; i++) { + Kokkos::parallel_reduce(l_red_view_fence, N, rf, v_result); + Kokkos::fence(); + } + time_red_view_fence = timer.seconds(); + Kokkos::fence(); + timer.reset(); + } + + const double x = 1.e6 / M; + printf("%i %i %i %i", N, V, K, M); + if (opts.par_for) { + printf(" parallel_for: %lf %lf ( %lf )", x * time_no_fence, x * time_fence, + x * time_no_fence_fenced); + } + if (opts.par_reduce) { + printf(" parallel_reduce: %lf %lf ( %lf )", x * time_red_no_fence, + x * time_red_fence, x * time_red_no_fence_fenced); + } + if (opts.par_reduce_view) { + printf(" parallel_reduce(view): %lf %lf ( %lf )", + x * time_red_view_no_fence, x * time_red_view_fence, + x * time_red_view_no_fence_fenced); + } + printf("\n"); +} +int main(int argc, char* argv[]) { + Kokkos::initialize(argc, argv); + { + int N = 10000; + int M = 20; + int K = 1; + + Opts opts; + + printf("==========================\n"); + printf("Kokkos Launch Latency Test\n"); + printf("==========================\n"); + printf("\n"); + printf("Usage: %s ARGUMENTS [OPTIONS...]\n\n", argv[0]); + printf("Arguments: N M K\n"); + printf(" N: loop length\n"); + printf(" M: how many kernels to dispatch\n"); + printf( + " K: nested loop length (capped by size of functor member array\n\n"); + printf("Options:\n"); + printf(" --no-parallel-for: skip parallel_for benchmark\n"); + printf(" --no-parallel-reduce: skip parallel_reduce benchmark\n"); + printf( + " --no-parallel-reduce-view: skip parallel_reduce into view " + "benchmark\n"); + printf("\n\n"); + printf(" Output V is the size of the functor member array\n"); + printf("\n\n"); + + for (int i = 1; i < argc; ++i) { + const std::string_view arg(argv[i]); + + // anything that doesn't start with -- + if (arg.size() < 2 || + (arg.size() >= 2 && arg[0] != '-' && arg[1] != '-')) { + if (i == 1) + N = atoi(arg.data()); + else if (i == 2) + M = atoi(arg.data()); + else if (i == 3) + K = atoi(arg.data()); + else { + throw std::runtime_error("unexpected argument!"); + } + } else if (arg == "--no-parallel-for") { + opts.par_for = false; + } else if (arg == "--no-parallel-reduce") { + opts.par_reduce = false; + } else if (arg == "--no-parallel-reduce-view") { + opts.par_reduce_view = false; + } else { + std::stringstream ss; + ss << "unexpected argument \"" << arg << "\" at position " << i; + throw std::runtime_error(ss.str()); + } + } + + printf("N V K M time_no_fence time_fence (time_no_fence_fenced)\n"); + + /* A backend may have different launch strategies for functors of different + * sizes: test a variety of functor sizes.*/ + run<1>(N, M, K <= 1 ? K : 1, opts); + run<16>(N, M, K <= 16 ? K : 16, opts); + run<200>(N, M, K <= 200 ? K : 200, opts); + run<3000>(N, M, K <= 3000 ? K : 3000, opts); + run<30000>(N, M, K <= 30000 ? K : 30000, opts); + } + Kokkos::finalize(); +} diff --git a/lib/kokkos/benchmarks/policy_performance/CMakeLists.txt b/lib/kokkos/benchmarks/policy_performance/CMakeLists.txt new file mode 100644 index 00000000000..929b9c97023 --- /dev/null +++ b/lib/kokkos/benchmarks/policy_performance/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + policy_performance + SOURCES main.cpp +) diff --git a/lib/kokkos/benchmarks/policy_performance/main.cpp b/lib/kokkos/benchmarks/policy_performance/main.cpp index 28cfde552a5..0983a3d535c 100644 --- a/lib/kokkos/benchmarks/policy_performance/main.cpp +++ b/lib/kokkos/benchmarks/policy_performance/main.cpp @@ -106,8 +106,9 @@ int main(int argc, char* argv[]) { Kokkos::parallel_reduce( "parallel_reduce warmup", Kokkos::TeamPolicy<>(10, 1), - KOKKOS_LAMBDA(const Kokkos::TeamPolicy<>::member_type team, - double& lval) { lval += 1; }, + KOKKOS_LAMBDA(const Kokkos::TeamPolicy<>::member_type&, double& lval) { + lval += 1; + }, result); using view_type_1d = Kokkos::View; diff --git a/lib/kokkos/benchmarks/policy_performance/policy_perf_test.hpp b/lib/kokkos/benchmarks/policy_performance/policy_perf_test.hpp index cc2cc40257b..0e23d221f67 100644 --- a/lib/kokkos/benchmarks/policy_performance/policy_perf_test.hpp +++ b/lib/kokkos/benchmarks/policy_performance/policy_perf_test.hpp @@ -21,13 +21,13 @@ struct ParallelScanFunctor { using value_type = double; ViewType v; - ParallelScanFunctor(const ViewType& v_) : v(v_) {} + explicit ParallelScanFunctor(const ViewType& v_) : v(v_) {} KOKKOS_INLINE_FUNCTION - void operator()(const int idx, value_type& val, const bool& final) const { + void operator()(const int idx, value_type& val, const bool& is_final) const { // inclusive scan val += v(idx); - if (final) { + if (is_final) { v(idx) = val; } } @@ -109,7 +109,7 @@ void test_policy(int team_range, int thread_range, int vector_range, vector_result = 0.0; Kokkos::parallel_reduce( Kokkos::ThreadVectorRange(team, vector_range), - [&](const int vi, double& vval) { vval += 1; }, + [&](const int, double& vval) { vval += 1; }, vector_result); } v2(idx, t) = vector_result; @@ -128,7 +128,7 @@ void test_policy(int team_range, int thread_range, int vector_range, team_result = 0.0; Kokkos::parallel_reduce( Kokkos::TeamThreadRange(team, thread_range), - [&](const int t, double& lval) { lval += 1; }, team_result); + [&](const int, double& lval) { lval += 1; }, team_result); } v1(idx) = team_result; // prevent compiler optimizing loop away @@ -170,13 +170,13 @@ void test_policy(int team_range, int thread_range, int vector_range, for (int tr = 0; tr < thread_repeat; ++tr) { Kokkos::parallel_reduce( Kokkos::TeamThreadRange(team, thread_range), - [&](const int t, double& lval) { + [&](const int, double& lval) { double vector_result = 0.0; for (int vr = 0; vr < inner_repeat; ++vr) { vector_result = 0.0; Kokkos::parallel_reduce( Kokkos::ThreadVectorRange(team, vector_range), - [&](const int vi, double& vval) { vval += 1; }, + [&](const int, double& vval) { vval += 1; }, vector_result); lval += vector_result; } diff --git a/lib/kokkos/benchmarks/stream/CMakeLists.txt b/lib/kokkos/benchmarks/stream/CMakeLists.txt new file mode 100644 index 00000000000..0dded6e3a54 --- /dev/null +++ b/lib/kokkos/benchmarks/stream/CMakeLists.txt @@ -0,0 +1,4 @@ +KOKKOS_ADD_EXECUTABLE( + stream + SOURCES stream-kokkos.cpp +) diff --git a/lib/kokkos/bin/nvcc_wrapper b/lib/kokkos/bin/nvcc_wrapper index c1400872402..9b935835d5f 100755 --- a/lib/kokkos/bin/nvcc_wrapper +++ b/lib/kokkos/bin/nvcc_wrapper @@ -229,7 +229,7 @@ do fi ;; #Handle known nvcc args - --dryrun|--verbose|--keep|--source-in-ptx|-src-in-ptx|--keep-dir*|-G|-lineinfo|-extended-lambda|-expt-extended-lambda|-expt-relaxed-constexpr|--resource-usage|--fmad=*|--use_fast_math|--Wext-lambda-captures-this|-Wext-lambda-captures-this) + --dryrun|-dryrun|--verbose|--keep|-keep|--source-in-ptx|-src-in-ptx|--keep-dir*|-keep-dir*|-G|-lineinfo|--generate-line-info|-extended-lambda|-expt-extended-lambda|-expt-relaxed-constexpr|--resource-usage|-res-usage|-fmad=*|--use_fast_math|-use_fast_math|--Wext-lambda-captures-this|-Wext-lambda-captures-this) cuda_args="$cuda_args $1" ;; #Handle more known nvcc args diff --git a/lib/kokkos/cmake/KokkosConfig.cmake.in b/lib/kokkos/cmake/KokkosConfig.cmake.in index e26c75b3122..1b6d1b66ff5 100644 --- a/lib/kokkos/cmake/KokkosConfig.cmake.in +++ b/lib/kokkos/cmake/KokkosConfig.cmake.in @@ -39,10 +39,12 @@ IF("launch_compiler" IN_LIST Kokkos_FIND_COMPONENTS) GLOBAL CHECK_CUDA_COMPILES) -ELSEIF(@Kokkos_ENABLE_CUDA@ AND NOT "separable_compilation" IN_LIST Kokkos_FIND_COMPONENTS) +ELSEIF(@Kokkos_ENABLE_CUDA@ + AND NOT @KOKKOS_COMPILE_LANGUAGE@ STREQUAL CUDA + AND NOT "separable_compilation" IN_LIST Kokkos_FIND_COMPONENTS) # - # if CUDA was enabled, separable compilation was not specified, and current compiler - # cannot compile CUDA, then set the RULE_LAUNCH_COMPILE and RULE_LAUNCH_LINK globally and + # if CUDA was enabled, the compilation language was not set to CUDA, and separable compilation was not + # specified, then set the RULE_LAUNCH_COMPILE and RULE_LAUNCH_LINK globally and # kokkos_launch_compiler will re-direct to the compiler used to compile CUDA code during installation. # kokkos_launch_compiler will re-direct if ${CMAKE_CXX_COMPILER} and -DKOKKOS_DEPENDENCE is present, # otherwise, the original command will be executed diff --git a/lib/kokkos/cmake/KokkosCore_config.h.in b/lib/kokkos/cmake/KokkosCore_config.h.in index bec59ebd034..2df0f6c5205 100644 --- a/lib/kokkos/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/cmake/KokkosCore_config.h.in @@ -23,8 +23,6 @@ #cmakedefine KOKKOS_ENABLE_CUDA #cmakedefine KOKKOS_ENABLE_HIP #cmakedefine KOKKOS_ENABLE_HPX -#cmakedefine KOKKOS_ENABLE_MEMKIND -#cmakedefine KOKKOS_ENABLE_LIBRT #cmakedefine KOKKOS_ENABLE_SYCL #cmakedefine KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED @@ -32,6 +30,7 @@ #cmakedefine KOKKOS_ENABLE_CXX17 #cmakedefine KOKKOS_ENABLE_CXX20 #cmakedefine KOKKOS_ENABLE_CXX23 +#cmakedefine KOKKOS_ENABLE_CXX26 #cmakedefine KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE #cmakedefine KOKKOS_ENABLE_CUDA_UVM @@ -45,7 +44,6 @@ #cmakedefine KOKKOS_ENABLE_DEBUG_DUALVIEW_MODIFY_CHECK #cmakedefine KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK #cmakedefine KOKKOS_ENABLE_TUNING -#cmakedefine KOKKOS_ENABLE_DEPRECATED_CODE_3 #cmakedefine KOKKOS_ENABLE_DEPRECATED_CODE_4 #cmakedefine KOKKOS_ENABLE_DEPRECATION_WARNINGS #cmakedefine KOKKOS_ENABLE_LARGE_MEM_TESTS @@ -53,17 +51,15 @@ #cmakedefine KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION // deprecated #cmakedefine KOKKOS_ENABLE_AGGRESSIVE_VECTORIZATION #cmakedefine KOKKOS_ENABLE_IMPL_MDSPAN +#cmakedefine KOKKOS_ENABLE_ATOMICS_BYPASS /* TPL Settings */ #cmakedefine KOKKOS_ENABLE_HWLOC -#cmakedefine KOKKOS_USE_LIBRT -#cmakedefine KOKKOS_ENABLE_HBWSPACE #cmakedefine KOKKOS_ENABLE_LIBDL #cmakedefine KOKKOS_ENABLE_LIBQUADMATH -#cmakedefine KOKKOS_IMPL_CUDA_CLANG_WORKAROUND #cmakedefine KOKKOS_ENABLE_ONEDPL +#cmakedefine KOKKOS_ENABLE_ROCTHRUST -#cmakedefine KOKKOS_ARCH_SSE42 #cmakedefine KOKKOS_ARCH_ARMV80 #cmakedefine KOKKOS_ARCH_ARMV8_THUNDERX #cmakedefine KOKKOS_ARCH_ARMV81 @@ -78,6 +74,7 @@ #cmakedefine KOKKOS_ARCH_POWER7 #cmakedefine KOKKOS_ARCH_POWER8 #cmakedefine KOKKOS_ARCH_POWER9 +#cmakedefine KOKKOS_ARCH_RISCV_SG2042 #cmakedefine KOKKOS_ARCH_INTEL_GEN #cmakedefine KOKKOS_ARCH_INTEL_DG1 #cmakedefine KOKKOS_ARCH_INTEL_GEN9 @@ -114,6 +111,7 @@ #cmakedefine KOKKOS_ARCH_AMD_GFX906 #cmakedefine KOKKOS_ARCH_AMD_GFX908 #cmakedefine KOKKOS_ARCH_AMD_GFX90A +#cmakedefine KOKKOS_ARCH_AMD_GFX940 #cmakedefine KOKKOS_ARCH_AMD_GFX942 #cmakedefine KOKKOS_ARCH_AMD_GFX1030 #cmakedefine KOKKOS_ARCH_AMD_GFX1100 diff --git a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake index 792c92c07e9..5a62c530fce 100644 --- a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake @@ -7,7 +7,8 @@ IF (NOT CUDAToolkit_ROOT) ENDIF() ENDIF() -IF(CMAKE_VERSION VERSION_GREATER_EQUAL "3.17.0") +# FIXME CMake 3.28.4 creates more targets than we export +IF(CMAKE_VERSION VERSION_GREATER_EQUAL "3.17.0" AND CMAKE_VERSION VERSION_LESS "3.28.4") find_package(CUDAToolkit) ELSE() include(${CMAKE_CURRENT_LIST_DIR}/CudaToolkit.cmake) diff --git a/lib/kokkos/cmake/Modules/FindTPLLIBRT.cmake b/lib/kokkos/cmake/Modules/FindTPLLIBRT.cmake deleted file mode 100644 index e75da56b5b5..00000000000 --- a/lib/kokkos/cmake/Modules/FindTPLLIBRT.cmake +++ /dev/null @@ -1 +0,0 @@ -KOKKOS_FIND_IMPORTED(LIBRT HEADER time.h LIBRARY rt) diff --git a/lib/kokkos/cmake/Modules/FindTPLMEMKIND.cmake b/lib/kokkos/cmake/Modules/FindTPLMEMKIND.cmake deleted file mode 100644 index 20aaff22955..00000000000 --- a/lib/kokkos/cmake/Modules/FindTPLMEMKIND.cmake +++ /dev/null @@ -1 +0,0 @@ -KOKKOS_FIND_IMPORTED(MEMKIND HEADER memkind.h LIBRARY memkind) diff --git a/lib/kokkos/cmake/Modules/FindTPLONEDPL.cmake b/lib/kokkos/cmake/Modules/FindTPLONEDPL.cmake index 01791cff443..603510c315e 100644 --- a/lib/kokkos/cmake/Modules/FindTPLONEDPL.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLONEDPL.cmake @@ -43,4 +43,7 @@ ELSE() COMPILE_DEFINITIONS PSTL_USE_PARALLEL_POLICIES=0 _GLIBCXX_USE_TBB_PAR_BACKEND=0 ) ENDIF() + + # Export oneDPL as a Kokkos dependency + KOKKOS_EXPORT_CMAKE_TPL(oneDPL) ENDIF() diff --git a/lib/kokkos/cmake/Modules/FindTPLROCTHRUST.cmake b/lib/kokkos/cmake/Modules/FindTPLROCTHRUST.cmake new file mode 100644 index 00000000000..dae7dc3c952 --- /dev/null +++ b/lib/kokkos/cmake/Modules/FindTPLROCTHRUST.cmake @@ -0,0 +1,15 @@ +# ROCm 5.6 and earlier set AMDGPU_TARGETS and GPU_TARGETS to all the supported +# architectures. Therefore, we end up compiling Kokkos for all the supported +# architecture. Starting with ROCm 5.7 AMDGPU_TARGETS and GPU_TARGETS are empty. +# It is the user's job to set the variables. Since we are injecting the +# architecture flag ourselves, we can let the variables empty. To replicate the +# behavior of ROCm 5.7 and later for earlier version of ROCm we set +# AMDGPU_TARGETS and GPU_TARGETS to empty and set the values in the cache. If +# the values are not cached, FIND_PACKAGE(rocthrust) will overwrite them. +SET(AMDGPU_TARGETS "" CACHE STRING "AMD GPU targets to compile for") +SET(GPU_TARGETS "" CACHE STRING "GPU targets to compile for") +FIND_PACKAGE(rocthrust REQUIRED) +KOKKOS_CREATE_IMPORTED_TPL(ROCTHRUST INTERFACE LINK_LIBRARIES roc::rocthrust) + +# Export ROCTHRUST as a Kokkos dependency +KOKKOS_EXPORT_CMAKE_TPL(rocthrust) diff --git a/lib/kokkos/cmake/kokkos_arch.cmake b/lib/kokkos/cmake/kokkos_arch.cmake index bccf674d763..34e9f05986f 100644 --- a/lib/kokkos/cmake/kokkos_arch.cmake +++ b/lib/kokkos/cmake/kokkos_arch.cmake @@ -49,7 +49,6 @@ DECLARE_AND_CHECK_HOST_ARCH(ARMV81 "ARMv8.1 Compatible CPU") DECLARE_AND_CHECK_HOST_ARCH(ARMV8_THUNDERX "ARMv8 Cavium ThunderX CPU") DECLARE_AND_CHECK_HOST_ARCH(ARMV8_THUNDERX2 "ARMv8 Cavium ThunderX2 CPU") DECLARE_AND_CHECK_HOST_ARCH(A64FX "ARMv8.2 with SVE Support") -DECLARE_AND_CHECK_HOST_ARCH(WSM "Intel Westmere CPU") DECLARE_AND_CHECK_HOST_ARCH(SNB "Intel Sandy/Ivy Bridge CPUs") DECLARE_AND_CHECK_HOST_ARCH(HSW "Intel Haswell CPUs") DECLARE_AND_CHECK_HOST_ARCH(BDW "Intel Broadwell Xeon E-class CPUs") @@ -60,13 +59,12 @@ DECLARE_AND_CHECK_HOST_ARCH(SKX "Intel Skylake Xeon Server CPUs (A DECLARE_AND_CHECK_HOST_ARCH(KNC "Intel Knights Corner Xeon Phi") DECLARE_AND_CHECK_HOST_ARCH(KNL "Intel Knights Landing Xeon Phi") DECLARE_AND_CHECK_HOST_ARCH(SPR "Intel Sapphire Rapids Xeon Server CPUs (AVX512)") -DECLARE_AND_CHECK_HOST_ARCH(BGQ "IBM Blue Gene Q") -DECLARE_AND_CHECK_HOST_ARCH(POWER7 "IBM POWER7 CPUs") DECLARE_AND_CHECK_HOST_ARCH(POWER8 "IBM POWER8 CPUs") DECLARE_AND_CHECK_HOST_ARCH(POWER9 "IBM POWER9 CPUs") DECLARE_AND_CHECK_HOST_ARCH(ZEN "AMD Zen architecture") DECLARE_AND_CHECK_HOST_ARCH(ZEN2 "AMD Zen2 architecture") DECLARE_AND_CHECK_HOST_ARCH(ZEN3 "AMD Zen3 architecture") +DECLARE_AND_CHECK_HOST_ARCH(RISCV_SG2042 "SG2042 (RISC-V) CPUs") IF(Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_OPENMPTARGET OR Kokkos_ENABLE_OPENACC OR Kokkos_ENABLE_SYCL) SET(KOKKOS_SHOW_CUDA_ARCHS ON) @@ -94,9 +92,9 @@ IF(Kokkos_ENABLE_HIP OR Kokkos_ENABLE_OPENMPTARGET OR Kokkos_ENABLE_OPENACC OR K ENDIF() # AMD archs ordered in decreasing priority of autodetection -LIST(APPEND SUPPORTED_AMD_GPUS MI300) -LIST(APPEND SUPPORTED_AMD_ARCHS AMD_GFX942) -LIST(APPEND CORRESPONDING_AMD_FLAGS gfx942) +LIST(APPEND SUPPORTED_AMD_GPUS MI300 MI300) +LIST(APPEND SUPPORTED_AMD_ARCHS AMD_GFX942 AMD_GFX940) +LIST(APPEND CORRESPONDING_AMD_FLAGS gfx942 gfx940) LIST(APPEND SUPPORTED_AMD_GPUS MI200 MI200 MI100 MI100) LIST(APPEND SUPPORTED_AMD_ARCHS VEGA90A AMD_GFX90A VEGA908 AMD_GFX908) LIST(APPEND CORRESPONDING_AMD_FLAGS gfx90a gfx90a gfx908 gfx908) @@ -191,9 +189,6 @@ IF (KOKKOS_CXX_COMPILER_ID STREQUAL Clang) ELSEIF(CUDAToolkit_BIN_DIR) GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS --cuda-path=${CUDAToolkit_BIN_DIR}/..) ENDIF() - IF (KOKKOS_ENABLE_CUDA) - SET(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND ON CACHE BOOL "enable CUDA Clang workarounds" FORCE) - ENDIF() ELSEIF (KOKKOS_CXX_COMPILER_ID STREQUAL NVHPC) SET(CUDA_ARCH_FLAG "-gpu") GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS -cuda) @@ -342,18 +337,6 @@ IF (KOKKOS_ARCH_ZEN3) SET(KOKKOS_ARCH_AVX2 ON) ENDIF() -IF (KOKKOS_ARCH_WSM) - COMPILER_SPECIFIC_FLAGS( - COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID - Cray NO-VALUE-SPECIFIED - Intel -xSSE4.2 - MSVC NO-VALUE-SPECIFIED - NVHPC -tp=px - DEFAULT -msse4.2 - ) - SET(KOKKOS_ARCH_SSE42 ON) -ENDIF() - IF (KOKKOS_ARCH_SNB OR KOKKOS_ARCH_AMDAVX) SET(KOKKOS_ARCH_AVX ON) COMPILER_SPECIFIC_FLAGS( @@ -378,6 +361,23 @@ IF (KOKKOS_ARCH_HSW) ) ENDIF() +IF (KOKKOS_ARCH_RISCV_SG2042) + IF(NOT + (KOKKOS_CXX_COMPILER_ID STREQUAL GNU + AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12) + OR + (KOKKOS_CXX_COMPILER_ID STREQUAL Clang + AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14) + ) + MESSAGE(SEND_ERROR "Only gcc >= 12 and clang >= 14 support RISC-V.") + ENDIF() + COMPILER_SPECIFIC_FLAGS( + COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID + DEFAULT -march=rv64imafdcv + ) +ENDIF() + + IF (KOKKOS_ARCH_BDW) SET(KOKKOS_ARCH_AVX2 ON) COMPILER_SPECIFIC_FLAGS( @@ -571,6 +571,11 @@ IF (KOKKOS_ENABLE_HIP) COMPILER_SPECIFIC_FLAGS( DEFAULT -fgpu-rdc ) + IF (NOT KOKKOS_CXX_COMPILER_ID STREQUAL HIPCC) + COMPILER_SPECIFIC_LINK_OPTIONS( + DEFAULT --hip-link + ) + ENDIF() ELSE() COMPILER_SPECIFIC_FLAGS( DEFAULT -fno-gpu-rdc @@ -588,32 +593,44 @@ IF (KOKKOS_ENABLE_SYCL) ENDIF() # Check support for device_global variables -# FIXME_SYCL Once the feature test macro SYCL_EXT_ONEAPI_DEVICE_GLOBAL is -# available, use that instead. -IF(KOKKOS_ENABLE_SYCL AND NOT BUILD_SHARED_LIBS) - INCLUDE(CheckCXXSourceCompiles) +# FIXME_SYCL If SYCL_EXT_ONEAPI_DEVICE_GLOBAL is defined, we can use device +# global variables with shared libraries using the "non-separable compilation" +# implementation. Otherwise, the feature is not supported when building shared +# libraries. Thus, we don't even check for support if shared libraries are +# requested and SYCL_EXT_ONEAPI_DEVICE_GLOBAL is not defined. +IF(KOKKOS_ENABLE_SYCL) STRING(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${KOKKOS_COMPILE_OPTIONS}") - CHECK_CXX_SOURCE_COMPILES(" - #include - using namespace sycl::ext::oneapi::experimental; - using namespace sycl; - - SYCL_EXTERNAL device_global Foo; - - void bar(queue q) { - q.single_task([=] { - Foo = 42; - }); - } - - int main(){ return 0; } - " - KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED) - - IF(KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED) - COMPILER_SPECIFIC_FLAGS( - DEFAULT -fsycl-device-code-split=off -DDESUL_SYCL_DEVICE_GLOBAL_SUPPORTED - ) + INCLUDE(CheckCXXSymbolExists) + CHECK_CXX_SYMBOL_EXISTS(SYCL_EXT_ONEAPI_DEVICE_GLOBAL "sycl/sycl.hpp" KOKKOS_IMPL_HAVE_SYCL_EXT_ONEAPI_DEVICE_GLOBAL) + IF (KOKKOS_IMPL_HAVE_SYCL_EXT_ONEAPI_DEVICE_GLOBAL) + SET(KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED ON) + # Use the non-separable compilation implementation to support shared libraries as well. + COMPILER_SPECIFIC_FLAGS(DEFAULT -DDESUL_SYCL_DEVICE_GLOBAL_SUPPORTED) + ELSEIF(NOT BUILD_SHARED_LIBS) + INCLUDE(CheckCXXSourceCompiles) + CHECK_CXX_SOURCE_COMPILES(" + #include + using namespace sycl::ext::oneapi::experimental; + using namespace sycl; + + SYCL_EXTERNAL device_global Foo; + + void bar(queue q) { + q.single_task([=] { + Foo = 42; + }); + } + + int main(){ return 0; } + " + KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED) + + IF(KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED) + # Only the separable compilation implementation is supported. + COMPILER_SPECIFIC_FLAGS( + DEFAULT -fsycl-device-code-split=off -DDESUL_SYCL_DEVICE_GLOBAL_SUPPORTED + ) + ENDIF() ENDIF() ENDIF() @@ -767,30 +784,35 @@ IF (KOKKOS_ENABLE_OPENMPTARGET) COMPILER_SPECIFIC_FLAGS( IntelLLVM -fopenmp-targets=spir64 -D__STRICT_ANSI__ ) - ELSEIF(KOKKOS_ARCH_INTEL_GEN9) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen9" -D__STRICT_ANSI__ - ) - ELSEIF(KOKKOS_ARCH_INTEL_GEN11) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen11" -D__STRICT_ANSI__ - ) - ELSEIF(KOKKOS_ARCH_INTEL_GEN12LP) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen12lp" -D__STRICT_ANSI__ - ) - ELSEIF(KOKKOS_ARCH_INTEL_DG1) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device dg1" -D__STRICT_ANSI__ - ) - ELSEIF(KOKKOS_ARCH_INTEL_XEHP) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device 12.50.4" -D__STRICT_ANSI__ + ELSE() + COMPILER_SPECIFIC_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -D__STRICT_ANSI__ ) - ELSEIF(KOKKOS_ARCH_INTEL_PVC) - COMPILER_SPECIFIC_FLAGS( - IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device 12.60.7" -D__STRICT_ANSI__ + IF(KOKKOS_ARCH_INTEL_GEN9) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen9" + ) + ELSEIF(KOKKOS_ARCH_INTEL_GEN11) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen11" + ) + ELSEIF(KOKKOS_ARCH_INTEL_GEN12LP) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device gen12lp" + ) + ELSEIF(KOKKOS_ARCH_INTEL_DG1) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device dg1" + ) + ELSEIF(KOKKOS_ARCH_INTEL_XEHP) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device 12.50.4" + ) + ELSEIF(KOKKOS_ARCH_INTEL_PVC) + COMPILER_SPECIFIC_LINK_OPTIONS( + IntelLLVM -fopenmp-targets=spir64_gen -Xopenmp-target-backend "-device 12.60.7" ) + ENDIF() ENDIF() ENDIF() @@ -1130,3 +1152,14 @@ MESSAGE(STATUS "Architectures:") FOREACH(Arch ${KOKKOS_ENABLED_ARCH_LIST}) MESSAGE(STATUS " ${Arch}") ENDFOREACH() + + +IF(KOKKOS_ENABLE_ATOMICS_BYPASS) + IF(NOT _HOST_PARALLEL STREQUAL "NoTypeDefined" OR NOT _DEVICE_PARALLEL STREQUAL "NoTypeDefined") + MESSAGE(FATAL_ERROR "Not allowed to disable atomics (via -DKokkos_ENABLE_AROMICS_BYPASS=ON) if neither a host parallel nor a device backend is enabled!") + ENDIF() + IF(NOT KOKKOS_ENABLE_SERIAL) + MESSAGE(FATAL_ERROR "Implementation bug") # safeguard + ENDIF() + MESSAGE(STATUS "Atomics: **DISABLED**") +ENDIF() diff --git a/lib/kokkos/cmake/kokkos_compiler_id.cmake b/lib/kokkos/cmake/kokkos_compiler_id.cmake index 04589befc3a..9135ca2b41c 100644 --- a/lib/kokkos/cmake/kokkos_compiler_id.cmake +++ b/lib/kokkos/cmake/kokkos_compiler_id.cmake @@ -152,6 +152,7 @@ ENDIF() SET(KOKKOS_MESSAGE_TEXT "Compiler not supported by Kokkos. Required compiler versions:") SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Clang(CPU) 8.0.0 or higher") SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Clang(CUDA) 10.0.0 or higher") +SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Clang(OpenMPTarget) 15.0.0 or higher") SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n GCC 8.2.0 or higher") SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Intel 19.0.5 or higher") SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n IntelLLVM(CPU) 2021.1.1 or higher") @@ -210,6 +211,10 @@ ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") ENDIF() ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL XL OR KOKKOS_CXX_COMPILER_ID STREQUAL XLClang) MESSAGE(FATAL_ERROR "${KOKKOS_MESSAGE_TEXT}") +ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND Kokkos_ENABLE_OPENMPTARGET) + IF(KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 15.0.0) + MESSAGE(FATAL_ERROR "${KOKKOS_MESSAGE_TEXT}") + ENDIF() ENDIF() IF(NOT DEFINED KOKKOS_CXX_HOST_COMPILER_ID) diff --git a/lib/kokkos/cmake/kokkos_enable_options.cmake b/lib/kokkos/cmake/kokkos_enable_options.cmake index 89e23b019bd..a437f6132aa 100644 --- a/lib/kokkos/cmake/kokkos_enable_options.cmake +++ b/lib/kokkos/cmake/kokkos_enable_options.cmake @@ -48,7 +48,6 @@ KOKKOS_ENABLE_OPTION(CUDA_LAMBDA ${CUDA_LAMBDA_DEFAULT} "Whether to allow lambda # resolved but we keep the option around a bit longer to be safe. KOKKOS_ENABLE_OPTION(IMPL_CUDA_MALLOC_ASYNC ON "Whether to enable CudaMallocAsync (requires CUDA Toolkit 11.2)") KOKKOS_ENABLE_OPTION(IMPL_NVHPC_AS_DEVICE_COMPILER OFF "Whether to allow nvc++ as Cuda device compiler") -KOKKOS_ENABLE_OPTION(DEPRECATED_CODE_3 OFF "Whether code deprecated in major release 3 is available" ) KOKKOS_ENABLE_OPTION(DEPRECATED_CODE_4 ON "Whether code deprecated in major release 4 is available" ) KOKKOS_ENABLE_OPTION(DEPRECATION_WARNINGS ON "Whether to emit deprecation warnings" ) KOKKOS_ENABLE_OPTION(HIP_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for HIP") @@ -74,6 +73,7 @@ KOKKOS_ENABLE_OPTION(HIP_MULTIPLE_KERNEL_INSTANTIATIONS OFF "Whether multiple ke # This option will go away eventually, but allows fallback to old implementation when needed. KOKKOS_ENABLE_OPTION(DESUL_ATOMICS_EXTERNAL OFF "Whether to use an external desul installation") +KOKKOS_ENABLE_OPTION(ATOMICS_BYPASS OFF "**NOT RECOMMENDED** Whether to make atomics non-atomic for non-threaded MPI-only use cases") KOKKOS_ENABLE_OPTION(IMPL_MDSPAN OFF "Whether to enable experimental mdspan support") KOKKOS_ENABLE_OPTION(MDSPAN_EXTERNAL OFF BOOL "Whether to use an external version of mdspan") diff --git a/lib/kokkos/cmake/kokkos_pick_cxx_std.cmake b/lib/kokkos/cmake/kokkos_pick_cxx_std.cmake index d4eca651d42..ae14a10d531 100644 --- a/lib/kokkos/cmake/kokkos_pick_cxx_std.cmake +++ b/lib/kokkos/cmake/kokkos_pick_cxx_std.cmake @@ -7,6 +7,7 @@ KOKKOS_OPTION(CXX_STANDARD "" STRING "[[DEPRECATED - USE CMAKE_CXX_STANDARD INST SET(KOKKOS_ENABLE_CXX17 OFF) SET(KOKKOS_ENABLE_CXX20 OFF) SET(KOKKOS_ENABLE_CXX23 OFF) +SET(KOKKOS_ENABLE_CXX26 OFF) IF (KOKKOS_CXX_STANDARD) MESSAGE(FATAL_ERROR "Setting the variable Kokkos_CXX_STANDARD in configuration is deprecated - set CMAKE_CXX_STANDARD directly instead") ENDIF() diff --git a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake index 7ad49fdd2d9..b075a3e36b5 100644 --- a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake +++ b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake @@ -74,6 +74,10 @@ ELSEIF(KOKKOS_CXX_STANDARD STREQUAL "23") kokkos_set_cxx_standard_feature(23) SET(KOKKOS_CXX_INTERMEDIATE_STANDARD "2B") SET(KOKKOS_ENABLE_CXX23 ON) +ELSEIF(KOKKOS_CXX_STANDARD STREQUAL "26") + kokkos_set_cxx_standard_feature(26) + SET(KOKKOS_CXX_INTERMEDIATE_STANDARD "2C") + SET(KOKKOS_ENABLE_CXX26 ON) ELSE() MESSAGE(FATAL_ERROR "Kokkos requires C++17 or newer but requested ${KOKKOS_CXX_STANDARD}!") ENDIF() diff --git a/lib/kokkos/cmake/kokkos_tpls.cmake b/lib/kokkos/cmake/kokkos_tpls.cmake index f124596a84e..6ef3b79bde2 100644 --- a/lib/kokkos/cmake/kokkos_tpls.cmake +++ b/lib/kokkos/cmake/kokkos_tpls.cmake @@ -32,19 +32,21 @@ FUNCTION(KOKKOS_TPL_OPTION PKG DEFAULT) ENDFUNCTION() KOKKOS_TPL_OPTION(HWLOC Off TRIBITS HWLOC) -KOKKOS_TPL_OPTION(MEMKIND Off) -IF(KOKKOS_ENABLE_MEMKIND) - SET(KOKKOS_ENABLE_HBWSPACE ON) -ENDIF() KOKKOS_TPL_OPTION(CUDA ${Kokkos_ENABLE_CUDA} TRIBITS CUDA) -KOKKOS_TPL_OPTION(LIBRT Off) IF(KOKKOS_ENABLE_HIP AND NOT KOKKOS_CXX_COMPILER_ID STREQUAL HIPCC AND NOT KOKKOS_HAS_TRILINOS) SET(ROCM_DEFAULT ON) ELSE() SET(ROCM_DEFAULT OFF) ENDIF() +IF(KOKKOS_ENABLE_HIP AND NOT KOKKOS_HAS_TRILINOS) + SET(ROCTHRUST_DEFAULT ON) +ELSE() + SET(ROCTHRUST_DEFAULT OFF) +ENDIF() KOKKOS_TPL_OPTION(ROCM ${ROCM_DEFAULT}) +KOKKOS_TPL_OPTION(ROCTHRUST ${ROCTHRUST_DEFAULT}) + IF(KOKKOS_ENABLE_SYCL AND NOT KOKKOS_HAS_TRILINOS) SET(ONEDPL_DEFAULT ON) ELSE() @@ -77,21 +79,18 @@ KOKKOS_TPL_OPTION(LIBQUADMATH ${LIBQUADMATH_DEFAULT} TRIBITS quadmath) #Make sure we use our local FindKokkosCuda.cmake KOKKOS_IMPORT_TPL(HPX INTERFACE) -IF (NOT KOKKOS_ENABLE_COMPILE_AS_CMAKE_LANGUAGE) - KOKKOS_IMPORT_TPL(CUDA INTERFACE) -ENDIF() +KOKKOS_IMPORT_TPL(CUDA INTERFACE) KOKKOS_IMPORT_TPL(HWLOC) -KOKKOS_IMPORT_TPL(LIBRT) KOKKOS_IMPORT_TPL(LIBDL) -KOKKOS_IMPORT_TPL(MEMKIND) IF (NOT WIN32) KOKKOS_IMPORT_TPL(THREADS INTERFACE) ENDIF() IF (NOT KOKKOS_ENABLE_COMPILE_AS_CMAKE_LANGUAGE) KOKKOS_IMPORT_TPL(ROCM INTERFACE) - KOKKOS_IMPORT_TPL(ONEDPL INTERFACE) ENDIF() +KOKKOS_IMPORT_TPL(ONEDPL INTERFACE) KOKKOS_IMPORT_TPL(LIBQUADMATH) +KOKKOS_IMPORT_TPL(ROCTHRUST) IF (Kokkos_ENABLE_DESUL_ATOMICS_EXTERNAL) find_package(desul REQUIRED COMPONENTS atomics) @@ -119,7 +118,3 @@ STRING(REPLACE ";" "\n" KOKKOS_TPL_EXPORT_TEMP "${KOKKOS_TPL_EXPORTS}") #Convert to a regular variable UNSET(KOKKOS_TPL_EXPORTS CACHE) SET(KOKKOS_TPL_EXPORTS ${KOKKOS_TPL_EXPORT_TEMP}) -IF (KOKKOS_ENABLE_MEMKIND) - SET(KOKKOS_ENABLE_HBWSPACE) - LIST(APPEND KOKKOS_MEMSPACE_LIST HBWSpace) -ENDIF() diff --git a/lib/kokkos/cmake/kokkos_tribits.cmake b/lib/kokkos/cmake/kokkos_tribits.cmake index b30ca70ab95..060a7a8472c 100644 --- a/lib/kokkos/cmake/kokkos_tribits.cmake +++ b/lib/kokkos/cmake/kokkos_tribits.cmake @@ -237,18 +237,10 @@ ENDMACRO() ## KOKKOS_DECLARE is the declaration set ## KOKKOS_POST_INCLUDE is included at the end of Kokkos_Core.hpp MACRO(KOKKOS_CONFIGURE_CORE) - SET(FWD_BACKEND_LIST) - FOREACH(MEMSPACE ${KOKKOS_MEMSPACE_LIST}) - LIST(APPEND FWD_BACKEND_LIST ${MEMSPACE}) - ENDFOREACH() - FOREACH(BACKEND_ ${KOKKOS_ENABLED_DEVICES}) - LIST(APPEND FWD_BACKEND_LIST ${BACKEND_}) - ENDFOREACH() - MESSAGE(STATUS "Kokkos Devices: ${KOKKOS_ENABLED_DEVICES}, Kokkos Backends: ${FWD_BACKEND_LIST}") - KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_FwdBackend.hpp "KOKKOS_FWD" "fwd/Kokkos_Fwd" "${FWD_BACKEND_LIST}") + MESSAGE(STATUS "Kokkos Backends: ${KOKKOS_ENABLED_DEVICES}") + KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_FwdBackend.hpp "KOKKOS_FWD" "fwd/Kokkos_Fwd" "${KOKKOS_ENABLED_DEVICES}") KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_SetupBackend.hpp "KOKKOS_SETUP" "setup/Kokkos_Setup" "${DEVICE_SETUP_LIST}") - KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_DeclareBackend.hpp "KOKKOS_DECLARE" "decl/Kokkos_Declare" "${FWD_BACKEND_LIST}") - KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_PostInclude.hpp "KOKKOS_POST_INCLUDE" "Kokkos_Post_Include" "${KOKKOS_BACKEND_POST_INCLUDE_LIST}") + KOKKOS_CONFIG_HEADER( KokkosCore_Config_HeaderSet.in KokkosCore_Config_DeclareBackend.hpp "KOKKOS_DECLARE" "decl/Kokkos_Declare" "${KOKKOS_ENABLED_DEVICES}") SET(_DEFAULT_HOST_MEMSPACE "::Kokkos::HostSpace") KOKKOS_OPTION(DEFAULT_DEVICE_MEMORY_SPACE "" STRING "Override default device memory space") KOKKOS_OPTION(DEFAULT_HOST_MEMORY_SPACE "" STRING "Override default host memory space") @@ -309,7 +301,6 @@ MACRO(KOKKOS_INSTALL_ADDITIONAL_FILES) "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_Config_FwdBackend.hpp" "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_Config_SetupBackend.hpp" "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_Config_DeclareBackend.hpp" - "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_Config_PostInclude.hpp" DESTINATION ${KOKKOS_HEADER_DIR}) ENDMACRO() diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia deleted file mode 100755 index 193a162a4e6..00000000000 --- a/lib/kokkos/config/test_all_sandia +++ /dev/null @@ -1,773 +0,0 @@ -#!/bin/bash -e - -# -# Global config -# - -set -o pipefail - -# Determine current machine. - -MACHINE="" -HOSTNAME=$(hostname) -PROCESSOR=`uname -p` - -if [[ "$HOSTNAME" =~ (white|ride).* ]]; then - MACHINE=white - module load git -fi - -if [[ "$HOSTNAME" =~ .*bowman.* ]]; then - MACHINE=bowman - module load git -fi - -if [[ "$HOSTNAME" == n* ]]; then # Warning: very generic name - if [[ "$PROCESSOR" = "aarch64" ]]; then - MACHINE=sullivan - module load git - fi -fi - -if [[ "$HOSTNAME" == node* ]]; then # Warning: very generic name - if [[ "$MACHINE" = "" ]]; then - MACHINE=shepard - module load git - fi -fi - -if [[ "$HOSTNAME" == apollo\.* ]]; then - MACHINE=apollo - module load git -fi - -if [[ "$HOSTNAME" == sullivan ]]; then - MACHINE=sullivan - module load git -fi - -if [[ "$HOSTNAME" == mayer\.* ]]; then - MACHINE=mayer -# module load git -fi -if [[ "$HOSTNAME" == cn* ]]; then # Warning: very generic name - MACHINE=mayer -fi - -if [ ! -z "$SEMS_MODULEFILES_ROOT" ]; then - if [[ "$MACHINE" = "" ]]; then - MACHINE=sems - module load sems-git - fi -fi - -if [[ "$MACHINE" = "" ]]; then - echo "Unrecognized machine" >&2 - exit 1 -fi - -echo "Running on machine: $MACHINE" - -GCC_BUILD_LIST="OpenMP,Pthread,Serial,OpenMP_Serial,Pthread_Serial" -IBM_BUILD_LIST="OpenMP,Serial,OpenMP_Serial" -ARM_GCC_BUILD_LIST="OpenMP,Serial,OpenMP_Serial" -INTEL_BUILD_LIST="OpenMP,Pthread,Serial,OpenMP_Serial,Pthread_Serial" -CLANG_BUILD_LIST="Pthread,Serial,Pthread_Serial" -CUDA_BUILD_LIST="Cuda_OpenMP,Cuda_Pthread,Cuda_Serial" -CUDA_IBM_BUILD_LIST="Cuda_OpenMP,Cuda_Serial" - -GCC_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wignored-qualifiers,-Wempty-body,-Wclobbered,-Wuninitialized" -IBM_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CLANG_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -INTEL_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -#CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Wsign-compare,-Wtype-limits,-Wuninitialized" -PGI_WARNING_FLAGS="" - -# Default. Machine specific can override. -DEBUG=False -ARGS="" -CUSTOM_BUILD_LIST="" -DRYRUN=False -BUILD_ONLY=False -declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=1 -TEST_SCRIPT=False -SKIP_HWLOC=False -SPOT_CHECK=False - -PRINT_HELP=False -OPT_FLAG="" -CXX_FLAGS_EXTRA="" -LD_FLAGS_EXTRA="" -KOKKOS_OPTIONS="" - -# -# Handle arguments. -# - -while [[ $# > 0 ]] -do - key="$1" - - case $key in - --kokkos-path*) - KOKKOS_PATH="${key#*=}" - ;; - --build-list*) - CUSTOM_BUILD_LIST="${key#*=}" - ;; - --debug*) - DEBUG=True - ;; - --build-only*) - BUILD_ONLY=True - ;; - --test-script*) - TEST_SCRIPT=True - ;; - --skip-hwloc*) - SKIP_HWLOC=True - ;; - --num*) - NUM_JOBS_TO_RUN_IN_PARALLEL="${key#*=}" - ;; - --dry-run*) - DRYRUN=True - ;; - --spot-check*) - SPOT_CHECK=True - ;; - --arch*) - ARCH_FLAG="--arch=${key#*=}" - ;; - --opt-flag*) - OPT_FLAG="${key#*=}" - ;; - --with-cuda-options*) - KOKKOS_CUDA_OPTIONS="--with-cuda-options=${key#*=}" - ;; - --with-options*) - KOKKOS_OPTIONS="--with-options=enable_large_mem_tests,${key#*=}" - ;; - --cxxflags-extra*) - CXX_FLAGS_EXTRA="${key#*=}" - ;; - --ldflags-extra*) - LD_FLAGS_EXTRA="${key#*=}" - ;; - --help*) - PRINT_HELP=True - ;; - *) - # args, just append - ARGS="$ARGS $1" - ;; - esac - - shift -done - -SCRIPT_KOKKOS_ROOT=$( cd "$( dirname "$0" )" && cd .. && pwd ) - -# Set kokkos path. -if [ -z "$KOKKOS_PATH" ]; then - KOKKOS_PATH=$SCRIPT_KOKKOS_ROOT -else - # Ensure KOKKOS_PATH is abs path. - KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd ) -fi - -UNCOMMITTED=`cd ${KOKKOS_PATH}; git status --porcelain 2>/dev/null` -if ! [ -z "$UNCOMMITTED" ]; then - echo "WARNING!! THE FOLLOWING CHANGES ARE UNCOMMITTED!! :" - echo "$UNCOMMITTED" - echo "" -fi - -GITSTATUS=`cd ${KOKKOS_PATH}; git log -n 1 --format=oneline` -echo "Repository Status: " ${GITSTATUS} -echo "" -echo "" - -# -# Machine specific config. -# - -if [ "$MACHINE" = "sems" ]; then - source /projects/sems/modulefiles/utils/sems-modules-init.sh - - BASE_MODULE_LIST="sems-env,kokkos-env,kokkos-hwloc/1.10.1/base,sems-/" - CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base" - CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base" - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="" - fi - - if [ "$SPOT_CHECK" = "True" ]; then - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/5.3.0 $BASE_MODULE_LIST "OpenMP" g++ $GCC_WARNING_FLAGS" - "gcc/6.1.0 $BASE_MODULE_LIST "Serial" g++ $GCC_WARNING_FLAGS" - "intel/17.0.1 $BASE_MODULE_LIST "OpenMP" icpc $INTEL_WARNING_FLAGS" - "clang/3.9.0 $BASE_MODULE_LIST "Pthread_Serial" clang++ $CLANG_WARNING_FLAGS" - "cuda/8.0.44 $CUDA8_MODULE_LIST "Cuda_OpenMP" $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - ) - else - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/4.8.4 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/4.9.3 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/5.3.0 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/6.1.0 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "intel/15.0.2 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/16.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/16.0.3 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "clang/3.6.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - "clang/3.7.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - "clang/3.8.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - "clang/3.9.0 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - "cuda/7.0.28 $CUDA_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - "cuda/7.5.18 $CUDA_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - "cuda/8.0.44 $CUDA8_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - ) - fi -elif [ "$MACHINE" = "white" ]; then - source /etc/profile.d/modules.sh - SKIP_HWLOC=True - export SLURM_TASKS_PER_NODE=32 - - BASE_MODULE_LIST="/" - IBM_MODULE_LIST="/xl/" - CUDA_MODULE_LIST="/,gcc/6.4.0,ibm/xl/16.1.0" - - # Don't do pthread on white. - GCC_BUILD_LIST="OpenMP,Serial,OpenMP_Serial" - - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/5.4.0 $BASE_MODULE_LIST $IBM_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/6.4.0 $BASE_MODULE_LIST $IBM_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "ibm/16.1.0 $IBM_MODULE_LIST $IBM_BUILD_LIST xlC $IBM_WARNING_FLAGS" - "cuda/9.0.103 $CUDA_MODULE_LIST $CUDA_IBM_BUILD_LIST ${KOKKOS_PATH}/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - ) - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=Power8,Kepler37" - fi - - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -elif [ "$MACHINE" = "bowman" ]; then - source /etc/profile.d/modules.sh - SKIP_HWLOC=True - export SLURM_TASKS_PER_NODE=32 - - BASE_MODULE_LIST="/compilers/" - - OLD_INTEL_BUILD_LIST="Pthread,Serial,Pthread_Serial" - - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("intel/16.4.258 $BASE_MODULE_LIST $OLD_INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/17.2.174 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/18.0.128 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - ) - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=KNL" - fi - - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -elif [ "$MACHINE" = "sullivan" ]; then - source /etc/profile.d/modules.sh - SKIP_HWLOC=True - export SLURM_TASKS_PER_NODE=96 - - BASE_MODULE_LIST="/" - - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/6.1.0 $BASE_MODULE_LIST $ARM_GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS") - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=ARMv8-ThunderX" - fi - - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -elif [ "$MACHINE" = "mayer" ]; then - SKIP_HWLOC=True - export SLURM_TASKS_PER_NODE=96 - - BASE_MODULE_LIST="/" - ARM_MODULE_LIST="/" - - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/7.2.0 $BASE_MODULE_LIST $ARM_GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "arm/1.4.0 $ARM_MODULE_LIST $ARM_GCC_BUILD_LIST armclang++ $CLANG_WARNING_FLAGS") - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=ARMv8-TX2" - fi - - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -elif [ "$MACHINE" = "shepard" ]; then - source /etc/profile.d/modules.sh - SKIP_HWLOC=True - export SLURM_TASKS_PER_NODE=32 - - BASE_MODULE_LIST="/" - BASE_MODULE_LIST_INTEL="/compilers/" - - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("intel/17.4.196 $BASE_MODULE_LIST_INTEL $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/18.0.128 $BASE_MODULE_LIST_INTEL $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "pgi/17.10.0 $BASE_MODULE_LIST $GCC_BUILD_LIST pgc++ $PGI_WARNING_FLAGS" - ) - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=HSW" - fi - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -elif [ "$MACHINE" = "apollo" ]; then - source /projects/sems/modulefiles/utils/sems-modules-init.sh - module use /home/projects/modulefiles/local/x86-64 - module load kokkos-env - - module load sems-git - module load sems-tex - module load sems-cmake/3.5.2 - module load sems-gdb - - SKIP_HWLOC=True - - BASE_MODULE_LIST="sems-env,kokkos-env,sems-/,kokkos-hwloc/1.10.1/base" - CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base" - CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base" - - CLANG_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,cuda/9.0.69" - NVCC_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,sems-gcc/5.3.0" - - BUILD_LIST_CUDA_NVCC="Cuda_Serial,Cuda_OpenMP" - BUILD_LIST_CUDA_CLANG="Cuda_Serial,Cuda_Pthread" - BUILD_LIST_CLANG="Serial,Pthread,OpenMP" - - if [ "$SPOT_CHECK" = "True" ]; then - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("gcc/4.8.4 $BASE_MODULE_LIST "OpenMP,Pthread" g++ $GCC_WARNING_FLAGS" - "gcc/5.3.0 $BASE_MODULE_LIST "Serial" g++ $GCC_WARNING_FLAGS" - "intel/16.0.1 $BASE_MODULE_LIST "OpenMP" icpc $INTEL_WARNING_FLAGS" - "clang/3.9.0 $BASE_MODULE_LIST "Pthread_Serial" clang++ $CLANG_WARNING_FLAGS" - "clang/6.0 $CLANG_MODULE_LIST "Cuda_Pthread,OpenMP" clang++ $CUDA_WARNING_FLAGS" - "cuda/9.1 $CUDA_MODULE_LIST "Cuda_OpenMP" $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - ) - else - # Format: (compiler module-list build-list exe-name warning-flag) - COMPILERS=("cuda/9.1 $CUDA8_MODULE_LIST $BUILD_LIST_CUDA_NVCC $KOKKOS_PATH/bin/nvcc_wrapper $CUDA_WARNING_FLAGS" - "clang/6.0 $CLANG_MODULE_LIST $BUILD_LIST_CUDA_CLANG clang++ $CUDA_WARNING_FLAGS" - "clang/3.9.0 $CLANG_MODULE_LIST $BUILD_LIST_CLANG clang++ $CLANG_WARNING_FLAGS" - "gcc/4.8.4 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/4.9.3 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/5.3.0 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "gcc/6.1.0 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" - "intel/15.0.2 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/16.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/17.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "clang/3.5.2 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - "clang/3.6.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" - ) - fi - - if [ -z "$ARCH_FLAG" ]; then - ARCH_FLAG="--arch=SNB,Volta70" - fi - - NUM_JOBS_TO_RUN_IN_PARALLEL=1 - -else - echo "Unhandled machine $MACHINE" >&2 - exit 1 -fi - -export OMP_NUM_THREADS=4 - -declare -i NUM_RESULTS_TO_KEEP=7 - -RESULT_ROOT_PREFIX=TestAll - -if [ "$PRINT_HELP" = "True" ]; then - echo "test_all_sandia :" - echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory" - echo " Defaults to root repo containing this script" - echo "--debug: Run tests in debug. Defaults to False" - echo "--test-script: Test this script, not Kokkos" - echo "--skip-hwloc: Do not do hwloc tests" - echo "--num=N: Number of jobs to run in parallel" - echo "--spot-check: Minimal test set to issue pull request" - echo "--dry-run: Just print what would be executed" - echo "--build-only: Just do builds, don't run anything" - echo "--opt-flag=FLAG: Optimization flag (default: -O3)" - echo "--cxxflags-extra=FLAGS: Extra flags to be added to CXX_FLAGS" - echo "--ldflags-extra=FLAGS: Extra flags to be added to LD_FLAGS" - echo "--arch=ARCHITECTURE: overwrite architecture flags" - echo "--with-cuda-options=OPT: set KOKKOS_CUDA_OPTIONS" - echo "--build-list=BUILD,BUILD,BUILD..." - echo " Provide a comma-separated list of builds instead of running all builds" - echo " Valid items:" - echo " OpenMP, Pthread, Serial, OpenMP_Serial, Pthread_Serial" - echo " Cuda_OpenMP, Cuda_Pthread, Cuda_Serial" - echo "" - - echo "ARGS: list of expressions matching compilers to test" - echo " supported compilers sems" - for COMPILER_DATA in "${COMPILERS[@]}"; do - ARR=($COMPILER_DATA) - COMPILER=${ARR[0]} - echo " $COMPILER" - done - echo "" - - echo "Examples:" - echo " Run all tests" - echo " % test_all_sandia" - echo "" - echo " Run all gcc tests" - echo " % test_all_sandia gcc" - echo "" - echo " Run all gcc/4.8.4 and all intel tests" - echo " % test_all_sandia gcc/4.8.4 intel" - echo "" - echo " Run all tests in debug" - echo " % test_all_sandia --debug" - echo "" - echo " Run gcc/4.8.4 and only do OpenMP and OpenMP_Serial builds" - echo " % test_all_sandia gcc/4.8.4 --build-list=OpenMP,OpenMP_Serial" - echo "" - echo "If you want to kill the tests, do:" - echo " hit ctrl-z" - echo " % kill -9 %1" - echo - exit 0 -fi - -# Set build type. -if [ "$DEBUG" = "True" ]; then - BUILD_TYPE=debug -else - BUILD_TYPE=release -fi - -# If no args provided, do all compilers. -if [ -z "$ARGS" ]; then - ARGS='?' -fi - -# Process args to figure out which compilers to test. -COMPILERS_TO_TEST="" - -for ARG in $ARGS; do - for COMPILER_DATA in "${COMPILERS[@]}"; do - ARR=($COMPILER_DATA) - COMPILER=${ARR[0]} - - if [[ "$COMPILER" = $ARG* ]]; then - if [[ "$COMPILERS_TO_TEST" != *${COMPILER}* ]]; then - COMPILERS_TO_TEST="$COMPILERS_TO_TEST $COMPILER" - else - echo "Tried to add $COMPILER twice" - fi - fi - done -done - -# -# Functions. -# - -# get_compiler_name -get_compiler_name() { - echo $1 | cut -d/ -f1 -} - -# get_compiler_version -get_compiler_version() { - echo $1 | cut -d/ -f2 -} - -# Do not call directly. -get_compiler_data() { - local compiler=$1 - local item=$2 - local compiler_name=$(get_compiler_name $compiler) - local compiler_vers=$(get_compiler_version $compiler) - - local compiler_data - for compiler_data in "${COMPILERS[@]}" ; do - local arr=($compiler_data) - - if [ "$compiler" = "${arr[0]}" ]; then - echo "${arr[$item]}" | tr , ' ' | sed -e "s//$compiler_name/g" -e "s//$compiler_vers/g" - return 0 - fi - done - - # Not found. - echo "Unreconized compiler $compiler" >&2 - exit 1 -} - -# -# For all getters, usage: -# - -get_compiler_modules() { - get_compiler_data $1 1 -} - -get_compiler_build_list() { - get_compiler_data $1 2 -} - -get_compiler_exe_name() { - get_compiler_data $1 3 -} - -get_compiler_warning_flags() { - get_compiler_data $1 4 -} - -run_cmd() { - echo "RUNNING: $*" - if [ "$DRYRUN" != "True" ]; then - eval "$* 2>&1" - fi -} - -# report_and_log_test_results -report_and_log_test_result() { - # Use sane var names. - local success=$1; local desc=$2; local comment=$3; - - if [ "$success" = "0" ]; then - echo " PASSED $desc" - echo $comment > $PASSED_DIR/$desc - else - # For failures, comment should be the name of the phase that failed. - echo " FAILED $desc" >&2 - echo $comment > $FAILED_DIR/$desc - cat ${desc}.${comment}.log - fi -} - -setup_env() { - local compiler=$1 - local compiler_modules=$(get_compiler_modules $compiler) - - module purge - - local mod - for mod in $compiler_modules; do - echo "Loading module $mod" - module load $mod 2>&1 - # It is ridiculously hard to check for the success of a loaded - # module. Module does not return error codes and piping to grep - # causes module to run in a subshell. - module list 2>&1 | grep "$mod" >& /dev/null || return 1 - done - - return 0 -} - -# single_build_and_test -single_build_and_test() { - # Use sane var names. - local compiler=$1; local build=$2; local build_type=$3; - - # Set up env. - mkdir -p $ROOT_DIR/$compiler/"${build}-$build_type" - cd $ROOT_DIR/$compiler/"${build}-$build_type" - local desc=$(echo "${compiler}-${build}-${build_type}" | sed 's:/:-:g') - setup_env $compiler >& ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; } - - # Set up flags. - local compiler_warning_flags=$(get_compiler_warning_flags $compiler) - local compiler_exe=$(get_compiler_exe_name $compiler) - - if [[ "$build_type" = hwloc* ]]; then - local extra_args=--with-hwloc=$(dirname $(dirname $(which hwloc-info))) - fi - - if [[ "$OPT_FLAG" = "" ]]; then - OPT_FLAG="-O3" - fi - - if [[ "$build_type" = *debug* ]]; then - local extra_args="$extra_args --debug" - local cxxflags="-g $compiler_warning_flags" - local ldflags="-g" - else - local cxxflags="$OPT_FLAG $compiler_warning_flags" - local ldflags="${OPT_FLAG}" - fi - - local cxxflags="${cxxflags} ${CXX_FLAGS_EXTRA}" - local ldflags="${ldflags} ${LD_FLAGS_EXTRA}" - - if [[ "$KOKKOS_CUDA_OPTIONS" != "" ]]; then - local extra_args="$extra_args $KOKKOS_CUDA_OPTIONS" - fi - if [[ "$KOKKOS_OPTIONS" != "" ]]; then - local extra_args="$extra_args $KOKKOS_OPTIONS" - else - local extra_args="$extra_args --with-options=enable_large_mem_tests" - fi - - echo " Starting job $desc" - - local comment="no_comment" - - if [ "$TEST_SCRIPT" = "True" ]; then - local rand=$[ 1 + $[ RANDOM % 10 ]] - sleep $rand - - if [ $rand -gt 5 ]; then - run_cmd ls fake_problem >& ${desc}.configure.log || { report_and_log_test_result 1 $desc configure && return 0; } - fi - else - run_cmd ${KOKKOS_PATH}/generate_makefile.bash --with-devices=$build $ARCH_FLAG --compiler=$(which $compiler_exe) --cxxflags=\"$cxxflags\" --ldflags=\"$ldflags\" $extra_args &>> ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; } - local -i build_start_time=$(date +%s) - run_cmd make -j 48 build-test >& ${desc}.build.log || { report_and_log_test_result 1 ${desc} build && return 0; } - local -i build_end_time=$(date +%s) - comment="build_time=$(($build_end_time-$build_start_time))" - - if [[ "$BUILD_ONLY" == False ]]; then - run_cmd make test >& ${desc}.test.log || { report_and_log_test_result 1 ${desc} test && return 0; } - local -i run_end_time=$(date +%s) - comment="$comment run_time=$(($run_end_time-$build_end_time))" - fi - fi - - report_and_log_test_result 0 $desc "$comment" - - return 0 -} - -# wait_for_jobs -wait_for_jobs() { - local -i max_jobs=$1 - local -i num_active_jobs=$(jobs | wc -l) - while [ $num_active_jobs -ge $max_jobs ] - do - sleep 1 - num_active_jobs=$(jobs | wc -l) - jobs >& /dev/null - done -} - -# run_in_background -run_in_background() { - local compiler=$1 - - local -i num_jobs=$NUM_JOBS_TO_RUN_IN_PARALLEL - # Don't override command line input. - # if [[ "$BUILD_ONLY" == True ]]; then - # num_jobs=8 - # else - if [[ "$compiler" == cuda* ]]; then - num_jobs=1 - fi - if [[ "$compiler" == clang ]]; then - num_jobs=1 - fi - # fi - wait_for_jobs $num_jobs - - single_build_and_test $* & -} - -# build_and_test_all -build_and_test_all() { - # Get compiler data. - local compiler=$1 - if [ -z "$CUSTOM_BUILD_LIST" ]; then - local compiler_build_list=$(get_compiler_build_list $compiler) - else - local compiler_build_list=$(echo "$CUSTOM_BUILD_LIST" | tr , ' ') - fi - - # Do builds. - local build - for build in $compiler_build_list - do - run_in_background $compiler $build $BUILD_TYPE - - # If not cuda, do a hwloc test too. - if [[ "$compiler" != cuda* && "$SKIP_HWLOC" == False ]]; then - run_in_background $compiler $build "hwloc-$BUILD_TYPE" - fi - done - - return 0 -} - -get_test_root_dir() { - local existing_results=$(find . -maxdepth 1 -name "$RESULT_ROOT_PREFIX*" | sort) - local -i num_existing_results=$(echo $existing_results | tr ' ' '\n' | wc -l) - local -i num_to_delete=${num_existing_results}-${NUM_RESULTS_TO_KEEP} - - if [ $num_to_delete -gt 0 ]; then - /bin/rm -rf $(echo $existing_results | tr ' ' '\n' | head -n $num_to_delete) - fi - - echo $(pwd)/${RESULT_ROOT_PREFIX}_$(date +"%Y-%m-%d_%H.%M.%S") -} - -wait_summarize_and_exit() { - wait_for_jobs 1 - - echo "#######################################################" - echo "PASSED TESTS" - echo "#######################################################" - - local passed_test - for passed_test in $(\ls -1 $PASSED_DIR | sort) - do - echo $passed_test $(cat $PASSED_DIR/$passed_test) - done - - local -i rv=0 - if [ "$(ls -A $FAILED_DIR)" ]; then - echo "#######################################################" - echo "FAILED TESTS" - echo "#######################################################" - - local failed_test - for failed_test in $(\ls -1 $FAILED_DIR | sort) - do - echo $failed_test "("$(cat $FAILED_DIR/$failed_test)" failed)" - rv=$rv+1 - done - fi - - exit $rv -} - -# -# Main. -# - -ROOT_DIR=$(get_test_root_dir) -mkdir -p $ROOT_DIR -cd $ROOT_DIR - -PASSED_DIR=$ROOT_DIR/results/passed -FAILED_DIR=$ROOT_DIR/results/failed -mkdir -p $PASSED_DIR -mkdir -p $FAILED_DIR - -echo "Going to test compilers: " $COMPILERS_TO_TEST -for COMPILER in $COMPILERS_TO_TEST; do - echo "Testing compiler $COMPILER" - build_and_test_all $COMPILER -done - -wait_summarize_and_exit diff --git a/lib/kokkos/config/yaml/volta.yaml b/lib/kokkos/config/yaml/volta.yaml deleted file mode 100644 index f67af9c2a44..00000000000 --- a/lib/kokkos/config/yaml/volta.yaml +++ /dev/null @@ -1,4 +0,0 @@ -packages: - kokkos: - variants: +cuda +openmp +volta70 +cuda_lambda +wrapper ^cuda@10.1 - compiler: [gcc@7.2.0] diff --git a/lib/kokkos/containers/src/Kokkos_Bitset.hpp b/lib/kokkos/containers/src/Kokkos_Bitset.hpp index cd5ca4ea512..f50ab0a0f7e 100644 --- a/lib/kokkos/containers/src/Kokkos_Bitset.hpp +++ b/lib/kokkos/containers/src/Kokkos_Bitset.hpp @@ -28,24 +28,6 @@ namespace Kokkos { -namespace Impl { -//! Either append to the label if the property already exists, or set it. -template -auto with_updated_label(const ViewCtorProp& view_ctor_prop, - const std::string& label) { - using vcp_t = ViewCtorProp; - //! If the label property is already set, append. Otherwise, set label. - if constexpr (vcp_t::has_label) { - vcp_t new_ctor_props(view_ctor_prop); - static_cast&>(new_ctor_props) - .value.append(label); - return new_ctor_props; - } else { - return Impl::with_properties_if_unset(view_ctor_prop, label); - } -} -} // namespace Impl - template class Bitset; @@ -92,9 +74,10 @@ class Bitset { using block_view_type = View>; public: - /// constructor + Bitset() = default; + /// arg_size := number of bit in set - Bitset(unsigned arg_size = 0u) : Bitset(Kokkos::view_alloc(), arg_size) {} + Bitset(unsigned arg_size) : Bitset(Kokkos::view_alloc(), arg_size) {} template Bitset(const Impl::ViewCtorProp& arg_prop, unsigned arg_size) @@ -108,9 +91,8 @@ class Bitset { "Allocation properties should not contain the 'pointer' property."); //! Update 'label' property and allocate. - const auto prop_copy = Kokkos::Impl::with_updated_label( - Impl::with_properties_if_unset(arg_prop, std::string("Bitset")), - " - blocks"); + const auto prop_copy = + Impl::with_properties_if_unset(arg_prop, std::string("Bitset")); m_blocks = block_view_type(prop_copy, ((m_size + block_mask) >> block_shift)); @@ -310,8 +292,8 @@ class Bitset { } private: - unsigned m_size; - unsigned m_last_block_mask; + unsigned m_size = 0; + unsigned m_last_block_mask = 0; block_view_type m_blocks; private: diff --git a/lib/kokkos/containers/src/Kokkos_DualView.hpp b/lib/kokkos/containers/src/Kokkos_DualView.hpp index 84bced2cc44..e821570a8d5 100644 --- a/lib/kokkos/containers/src/Kokkos_DualView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DualView.hpp @@ -292,15 +292,6 @@ class DualView : public ViewTraits { d_view(src.d_view), h_view(src.h_view) {} - //! Copy assignment operator (shallow copy assignment) - template - DualView& operator=(const DualView& src) { - modified_flags = src.modified_flags; - d_view = src.d_view; - h_view = src.h_view; - return *this; - } - //! Subview constructor template DualView(const DualView& src, const Arg0& arg0, Args... args) diff --git a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp index 52aa86d8ee4..5fa59f1b7cd 100644 --- a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp @@ -1340,7 +1340,7 @@ class ViewMapping< template struct apply { - static_assert(Kokkos::is_memory_traits::value, ""); + static_assert(Kokkos::is_memory_traits::value); using traits_type = Kokkos::ViewTraits::type, Args...>( - v.data(), v.impl_map().layout()); + auto layout = v.impl_map().layout(); + + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v || + is_layouttiled::value) { + for (int i = N; i < 7; ++i) + layout.dimension[i] = KOKKOS_IMPL_CTOR_DEFAULT_ARG; + } + + return View::type, Args...>(v.data(), layout); } template diff --git a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp index 92aead28784..91a7e4a9273 100644 --- a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp +++ b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp @@ -124,15 +124,8 @@ KOKKOS_INLINE_FUNCTION void offsetview_verify_operator_bounds( args...); Kokkos::Impl::throw_runtime_exception(std::string(buffer));)) - KOKKOS_IF_ON_DEVICE(( - /* Check #1: is there a SharedAllocationRecord? - (we won't use it, but if it is not there then there isn't - a corresponding SharedAllocationHeader containing a label). - This check should cover the case of Views that don't - have the Unmanaged trait but were initialized by pointer. */ - if (tracker.has_record()) { - Kokkos::Impl::operator_bounds_error_on_device(map); - } else { Kokkos::abort("OffsetView bounds error"); })) + KOKKOS_IF_ON_DEVICE( + (Kokkos::abort("OffsetView bounds error"); (void)tracker;)) } } diff --git a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp index e001c062de3..78a6a238ece 100644 --- a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp +++ b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp @@ -243,16 +243,16 @@ class UnorderedMap { using const_map_type = UnorderedMap; - static const bool is_set = std::is_void::value; - static const bool has_const_key = - std::is_same::value; - static const bool has_const_value = - is_set || std::is_same::value; + static constexpr bool is_set = std::is_void_v; + static constexpr bool has_const_key = + std::is_same_v; + static constexpr bool has_const_value = + is_set || std::is_same_v; - static const bool is_insertable_map = + static constexpr bool is_insertable_map = !has_const_key && (is_set || !has_const_value); - static const bool is_modifiable_map = has_const_key && !has_const_value; - static const bool is_const_map = has_const_key && has_const_value; + static constexpr bool is_modifiable_map = has_const_key && !has_const_value; + static constexpr bool is_const_map = has_const_key && has_const_value; using insert_result = UnorderedMapInsertResult; @@ -337,27 +337,27 @@ class UnorderedMap { Impl::get_property(prop_copy) + " - size")); m_available_indexes = - bitset_type(Kokkos::Impl::with_updated_label(prop_copy, " - bitset"), + bitset_type(Kokkos::Impl::append_to_label(prop_copy, " - bitset"), calculate_capacity(capacity_hint)); m_hash_lists = size_type_view( - Kokkos::Impl::with_updated_label(prop_copy_noinit, " - hash list"), + Kokkos::Impl::append_to_label(prop_copy_noinit, " - hash list"), Impl::find_hash_size(capacity())); m_next_index = size_type_view( - Kokkos::Impl::with_updated_label(prop_copy_noinit, " - next index"), + Kokkos::Impl::append_to_label(prop_copy_noinit, " - next index"), capacity() + 1); // +1 so that the *_at functions can always return a // valid reference - m_keys = key_type_view( - Kokkos::Impl::with_updated_label(prop_copy, " - keys"), capacity()); + m_keys = key_type_view(Kokkos::Impl::append_to_label(prop_copy, " - keys"), + capacity()); - m_values = value_type_view( - Kokkos::Impl::with_updated_label(prop_copy, " - values"), - is_set ? 0 : capacity()); + m_values = + value_type_view(Kokkos::Impl::append_to_label(prop_copy, " - values"), + is_set ? 0 : capacity()); m_scalars = - scalars_view(Kokkos::Impl::with_updated_label(prop_copy, " - scalars")); + scalars_view(Kokkos::Impl::append_to_label(prop_copy, " - scalars")); /** * Deep copies should also be done using the space instance if given. diff --git a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp index 8f8cd9523b7..a979ee40d8c 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp @@ -27,6 +27,18 @@ namespace Kokkos { namespace Impl { +//! Append to the label contained in view_ctor_prop. +template +auto append_to_label(const ViewCtorProp& view_ctor_prop, + const std::string& label) { + using vcp_t = ViewCtorProp; + static_assert(vcp_t::has_label); + vcp_t new_ctor_props(view_ctor_prop); + static_cast&>(new_ctor_props) + .value.append(label); + return new_ctor_props; +} + uint32_t find_hash_size(uint32_t size); template diff --git a/lib/kokkos/containers/unit_tests/Makefile b/lib/kokkos/containers/unit_tests/Makefile index 2e35832cc89..18410882bca 100644 --- a/lib/kokkos/containers/unit_tests/Makefile +++ b/lib/kokkos/containers/unit_tests/Makefile @@ -35,8 +35,8 @@ TESTS = Bitset DualView DynamicView DynViewAPI_generic DynViewAPI_rank12345 DynV tmp := $(foreach device, $(KOKKOS_DEVICELIST), \ tmp2 := $(foreach test, $(TESTS), \ $(if $(filter Test$(device)_$(test).cpp, $(shell ls Test$(device)_$(test).cpp 2>/dev/null)),,\ - $(shell echo "\#include" > Test$(device)_$(test).cpp); \ - $(shell echo "\#include" >> Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include" > Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include" >> Test$(device)_$(test).cpp); \ )\ ) \ ) diff --git a/lib/kokkos/containers/unit_tests/TestBitset.hpp b/lib/kokkos/containers/unit_tests/TestBitset.hpp index 3ad0d2bf573..9923453f72c 100644 --- a/lib/kokkos/containers/unit_tests/TestBitset.hpp +++ b/lib/kokkos/containers/unit_tests/TestBitset.hpp @@ -23,6 +23,8 @@ #include #include +#include <../../core/unit_test/tools/include/ToolTestingUtilities.hpp> + namespace Test { namespace Impl { @@ -155,7 +157,7 @@ void test_bitset() { { unsigned ts = 100u; - bitset_type b1; + bitset_type b1(Kokkos::view_alloc("MyBitset"), 0); ASSERT_TRUE(b1.is_allocated()); b1 = bitset_type(ts); @@ -165,6 +167,9 @@ void test_bitset() { ASSERT_TRUE(b1.is_allocated()); ASSERT_TRUE(b2.is_allocated()); ASSERT_TRUE(b3.is_allocated()); + + bitset_type b4; + ASSERT_FALSE(b4.is_allocated()); } std::array test_sizes = { @@ -237,6 +242,24 @@ void test_bitset() { } TEST(TEST_CATEGORY, bitset) { test_bitset(); } + +TEST(TEST_CATEGORY, bitset_default_constructor_no_alloc) { + using namespace Kokkos::Test::Tools; + listen_tool_events(Config::DisableAll(), Config::EnableAllocs()); + + auto success = validate_absence( + [&]() { + Kokkos::Bitset bs; + EXPECT_FALSE(bs.is_allocated()); + }, + [&](AllocateDataEvent) { + return MatchDiagnostic{true, {"Found alloc event"}}; + }); + ASSERT_TRUE(success); + + listen_tool_events(Config::DisableAll()); +} + } // namespace Test #endif // KOKKOS_TEST_BITSET_HPP diff --git a/lib/kokkos/core/perf_test/CMakeLists.txt b/lib/kokkos/core/perf_test/CMakeLists.txt index 7f3916da312..e0dba03e1ec 100644 --- a/lib/kokkos/core/perf_test/CMakeLists.txt +++ b/lib/kokkos/core/perf_test/CMakeLists.txt @@ -50,8 +50,8 @@ ELSE() FetchContent_Declare( googlebenchmark DOWNLOAD_EXTRACT_TIMESTAMP FALSE - URL https://github.com/google/benchmark/archive/refs/tags/v1.6.2.tar.gz - URL_HASH MD5=14d14849e075af116143a161bc3b927b + URL https://github.com/google/benchmark/archive/refs/tags/v1.7.1.tar.gz + URL_HASH MD5=0459a6c530df9851bee6504c3e37c2e7 ) FetchContent_MakeAvailable(googlebenchmark) list(POP_BACK CMAKE_MESSAGE_INDENT) diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index 012af0a7d06..b84677e61b6 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -18,10 +18,16 @@ IF (NOT desul_FOUND) ENDIF() IF(KOKKOS_ENABLE_SYCL) SET(DESUL_ATOMICS_ENABLE_SYCL ON) + IF(KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED AND NOT KOKKOS_IMPL_HAVE_SYCL_EXT_ONEAPI_DEVICE_GLOBAL) + SET(DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION ON) + ENDIF() ENDIF() IF(KOKKOS_ENABLE_OPENMPTARGET) SET(DESUL_ATOMICS_ENABLE_OPENMP ON) # not a typo Kokkos OpenMPTarget -> Desul OpenMP ENDIF() + IF(KOKKOS_ENABLE_OPENACC) + SET(DESUL_ATOMICS_ENABLE_OPENACC ON) + ENDIF() CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/../../tpls/desul/Config.hpp.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/desul/atomics/Config.hpp @@ -80,10 +86,6 @@ IF (KOKKOS_ENABLE_HPX) APPEND_GLOB(KOKKOS_CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/HPX/*.hpp) ENDIF() -IF (NOT KOKKOS_ENABLE_MEMKIND) - LIST(REMOVE_ITEM KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/impl/Kokkos_HBWSpace.cpp) -ENDIF() - IF (KOKKOS_ENABLE_SERIAL) APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/Serial/*.cpp) APPEND_GLOB(KOKKOS_CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Serial/*.hpp) @@ -180,20 +182,15 @@ IF (Kokkos_ENABLE_IMPL_MDSPAN) ENDIF() KOKKOS_LINK_TPL(kokkoscore PUBLIC HWLOC) -KOKKOS_LINK_TPL(kokkoscore PUBLIC MEMKIND) -IF (NOT KOKKOS_ENABLE_COMPILE_AS_CMAKE_LANGUAGE) - KOKKOS_LINK_TPL(kokkoscore PUBLIC CUDA) -ENDIF() +KOKKOS_LINK_TPL(kokkoscore PUBLIC CUDA) KOKKOS_LINK_TPL(kokkoscore PUBLIC HPX) KOKKOS_LINK_TPL(kokkoscore PUBLIC LIBDL) -KOKKOS_LINK_TPL(kokkoscore PUBLIC LIBRT) # On *nix-like systems (Linux, macOS) we need pthread for C++ std::thread IF (NOT WIN32) KOKKOS_LINK_TPL(kokkoscore PUBLIC THREADS) ENDIF() IF (NOT KOKKOS_ENABLE_COMPILE_AS_CMAKE_LANGUAGE) KOKKOS_LINK_TPL(kokkoscore PUBLIC ROCM) - KOKKOS_LINK_TPL(kokkoscore PUBLIC ONEDPL) ENDIF() # FIXME: We need a proper solution to figure out whether to enable diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda.hpp index 8bfaf8317b6..276d03da265 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda.hpp @@ -46,7 +46,6 @@ static_assert(false, namespace Kokkos { namespace Impl { -class CudaExec; class CudaInternal; } // namespace Impl } // namespace Kokkos @@ -129,33 +128,16 @@ class Cuda { /// \brief True if and only if this method is being called in a /// thread-parallel function. - KOKKOS_INLINE_FUNCTION static int in_parallel() { + +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED KOKKOS_INLINE_FUNCTION static int in_parallel() { #if defined(__CUDA_ARCH__) return true; #else return false; #endif } - - /** \brief Set the device in a "sleep" state. - * - * This function sets the device in a "sleep" state in which it is - * not ready for work. This may consume less resources than if the - * device were in an "awake" state, but it may also take time to - * bring the device from a sleep state to be ready for work. - * - * \return True if the device is in the "sleep" state, else false if - * the device is actively working and could not enter the "sleep" - * state. - */ - static bool sleep(); - - /// \brief Wake the device from the 'sleep' state so it is ready for work. - /// - /// \return True if the device is in the "ready" state, else "false" - /// if the device is actively working (which also means that it's - /// awake). - static bool wake(); +#endif /// \brief Wait until all dispatched functors complete. /// @@ -199,18 +181,37 @@ class Cuda { //! Initialize, telling the CUDA run-time library which device to use. static void impl_initialize(InitializationSettings const&); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 /// \brief Cuda device architecture of the selected device. /// /// This matches the __CUDA_ARCH__ specification. - static size_type device_arch(); + KOKKOS_DEPRECATED static size_type device_arch() { + const cudaDeviceProp& cudaProp = Cuda().cuda_device_prop(); + return cudaProp.major * 100 + cudaProp.minor; + } //! Query device count. - static size_type detect_device_count(); + KOKKOS_DEPRECATED static size_type detect_device_count() { + int count; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&count)); + return count; + } /** \brief Detect the available devices and their architecture * as defined by the __CUDA_ARCH__ specification. */ - static std::vector detect_device_arch(); + KOKKOS_DEPRECATED static std::vector detect_device_arch() { + int count; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&count)); + std::vector out; + for (int i = 0; i < count; ++i) { + cudaDeviceProp prop; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceProperties(&prop, i)); + out.push_back(prop.major * 100 + prop.minor); + } + return out; + } +#endif cudaStream_t cuda_stream() const; int cuda_device() const; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp index c6512f44dad..0944937e1bf 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp @@ -33,7 +33,6 @@ //#include #include -#include #include @@ -83,11 +82,11 @@ void DeepCopyAsyncCuda(void *dst, const void *src, size_t n) { KOKKOS_IMPL_CUDA_SAFE_CALL( (CudaInternal::singleton().cuda_memcpy_async_wrapper( dst, src, n, cudaMemcpyDefault, s))); - Impl::cuda_stream_synchronize( - s, + Kokkos::Tools::Experimental::Impl::profile_fence_event( + "Kokkos::Impl::DeepCopyAsyncCuda: Deep Copy Stream Sync", Kokkos::Tools::Experimental::SpecialSynchronizationCases:: DeepCopyResourceSynchronization, - "Kokkos::Impl::DeepCopyAsyncCuda: Deep Copy Stream Sync"); + [&]() { KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamSynchronize(s)); }); } } // namespace Impl @@ -135,11 +134,23 @@ void kokkos_impl_cuda_set_pin_uvm_to_host(bool val) { namespace Kokkos { -CudaSpace::CudaSpace() : m_device(Kokkos::Cuda().cuda_device()) {} +CudaSpace::CudaSpace() + : m_device(Kokkos::Cuda().cuda_device()), + m_stream(Kokkos::Cuda().cuda_stream()) {} +CudaSpace::CudaSpace(int device_id, cudaStream_t stream) + : m_device(device_id), m_stream(stream) {} -CudaUVMSpace::CudaUVMSpace() : m_device(Kokkos::Cuda().cuda_device()) {} +CudaUVMSpace::CudaUVMSpace() + : m_device(Kokkos::Cuda().cuda_device()), + m_stream(Kokkos::Cuda().cuda_stream()) {} +CudaUVMSpace::CudaUVMSpace(int device_id, cudaStream_t stream) + : m_device(device_id), m_stream(stream) {} -CudaHostPinnedSpace::CudaHostPinnedSpace() {} +CudaHostPinnedSpace::CudaHostPinnedSpace() + : m_device(Kokkos::Cuda().cuda_device()), + m_stream(Kokkos::Cuda().cuda_stream()) {} +CudaHostPinnedSpace::CudaHostPinnedSpace(int device_id, cudaStream_t stream) + : m_device(device_id), m_stream(stream) {} size_t memory_threshold_g = 40000; // 40 kB @@ -161,52 +172,38 @@ void *CudaSpace::allocate(const char *arg_label, const size_t arg_alloc_size, } namespace { -void *impl_allocate_common(const Cuda &exec_space, const char *arg_label, - const size_t arg_alloc_size, +void *impl_allocate_common(const int device_id, + [[maybe_unused]] const cudaStream_t stream, + const char *arg_label, const size_t arg_alloc_size, const size_t arg_logical_size, const Kokkos::Tools::SpaceHandle arg_handle, - bool exec_space_provided) { + [[maybe_unused]] bool stream_sync_only) { void *ptr = nullptr; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(device_id)); + cudaError_t error_code = cudaSuccess; #ifndef CUDART_VERSION #error CUDART_VERSION undefined! #elif (defined(KOKKOS_ENABLE_IMPL_CUDA_MALLOC_ASYNC) && CUDART_VERSION >= 11020) - cudaError_t error_code; if (arg_alloc_size >= memory_threshold_g) { - if (exec_space_provided) { - error_code = - exec_space.impl_internal_space_instance()->cuda_malloc_async_wrapper( - &ptr, arg_alloc_size); - exec_space.fence("Kokkos::Cuda: backend fence after async malloc"); - } else { - error_code = Impl::CudaInternal::singleton().cuda_malloc_async_wrapper( - &ptr, arg_alloc_size); - Impl::cuda_device_synchronize( - "Kokkos::Cuda: backend fence after async malloc"); + error_code = cudaMallocAsync(&ptr, arg_alloc_size, stream); + + if (error_code == cudaSuccess) { + if (stream_sync_only) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamSynchronize(stream)); + } else { + Impl::cuda_device_synchronize( + "Kokkos::Cuda: backend fence after async malloc"); + } } - } else { - error_code = - (exec_space_provided - ? exec_space.impl_internal_space_instance()->cuda_malloc_wrapper( - &ptr, arg_alloc_size) - : Impl::CudaInternal::singleton().cuda_malloc_wrapper( - &ptr, arg_alloc_size)); - } -#else - cudaError_t error_code; - if (exec_space_provided) { - error_code = exec_space.impl_internal_space_instance()->cuda_malloc_wrapper( - &ptr, arg_alloc_size); - } else { - error_code = Impl::CudaInternal::singleton().cuda_malloc_wrapper( - &ptr, arg_alloc_size); - } + } else #endif + { error_code = cudaMalloc(&ptr, arg_alloc_size); } if (error_code != cudaSuccess) { // TODO tag as unlikely branch // This is the only way to clear the last error, which // we should do here since we're turning it into an // exception here - exec_space.impl_internal_space_instance()->cuda_get_last_error_wrapper(); + cudaGetLastError(); throw Experimental::CudaRawMemoryAllocationFailure( arg_alloc_size, error_code, Experimental::RawMemoryAllocationFailure::AllocationMechanism:: @@ -226,7 +223,7 @@ void *CudaSpace::impl_allocate( const char *arg_label, const size_t arg_alloc_size, const size_t arg_logical_size, const Kokkos::Tools::SpaceHandle arg_handle) const { - return impl_allocate_common(Kokkos::Cuda{}, arg_label, arg_alloc_size, + return impl_allocate_common(m_device, m_stream, arg_label, arg_alloc_size, arg_logical_size, arg_handle, false); } @@ -234,8 +231,9 @@ void *CudaSpace::impl_allocate( const Cuda &exec_space, const char *arg_label, const size_t arg_alloc_size, const size_t arg_logical_size, const Kokkos::Tools::SpaceHandle arg_handle) const { - return impl_allocate_common(exec_space, arg_label, arg_alloc_size, - arg_logical_size, arg_handle, true); + return impl_allocate_common( + exec_space.cuda_device(), exec_space.cuda_stream(), arg_label, + arg_alloc_size, arg_logical_size, arg_handle, true); } void *CudaUVMSpace::allocate(const size_t arg_alloc_size) const { @@ -256,28 +254,27 @@ void *CudaUVMSpace::impl_allocate( if (arg_alloc_size > 0) { Kokkos::Impl::num_uvm_allocations++; - auto error_code = - Impl::CudaInternal::singleton().cuda_malloc_managed_wrapper( - &ptr, arg_alloc_size, cudaMemAttachGlobal); - -#ifdef KOKKOS_IMPL_DEBUG_CUDA_PIN_UVM_TO_HOST - if (Kokkos::CudaUVMSpace::cuda_pin_uvm_to_host()) - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_mem_advise_wrapper( - ptr, arg_alloc_size, cudaMemAdviseSetPreferredLocation, - cudaCpuDeviceId))); -#endif + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + cudaError_t error_code = + cudaMallocManaged(&ptr, arg_alloc_size, cudaMemAttachGlobal); if (error_code != cudaSuccess) { // TODO tag as unlikely branch // This is the only way to clear the last error, which // we should do here since we're turning it into an // exception here - Impl::CudaInternal::singleton().cuda_get_last_error_wrapper(); + cudaGetLastError(); throw Experimental::CudaRawMemoryAllocationFailure( arg_alloc_size, error_code, Experimental::RawMemoryAllocationFailure::AllocationMechanism:: CudaMallocManaged); } + +#ifdef KOKKOS_IMPL_DEBUG_CUDA_PIN_UVM_TO_HOST + if (Kokkos::CudaUVMSpace::cuda_pin_uvm_to_host()) + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaMemAdvise(ptr, arg_alloc_size, cudaMemAdviseSetPreferredLocation, + cudaCpuDeviceId)); +#endif } Cuda::impl_static_fence( "Kokkos::CudaUVMSpace::impl_allocate: Post UVM Allocation"); @@ -302,13 +299,14 @@ void *CudaHostPinnedSpace::impl_allocate( const Kokkos::Tools::SpaceHandle arg_handle) const { void *ptr = nullptr; - auto error_code = Impl::CudaInternal::singleton().cuda_host_alloc_wrapper( - &ptr, arg_alloc_size, cudaHostAllocDefault); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + cudaError_t error_code = + cudaHostAlloc(&ptr, arg_alloc_size, cudaHostAllocDefault); if (error_code != cudaSuccess) { // TODO tag as unlikely branch // This is the only way to clear the last error, which // we should do here since we're turning it into an // exception here - Impl::CudaInternal::singleton().cuda_get_last_error_wrapper(); + cudaGetLastError(); throw Experimental::CudaRawMemoryAllocationFailure( arg_alloc_size, error_code, Experimental::RawMemoryAllocationFailure::AllocationMechanism:: @@ -350,18 +348,17 @@ void CudaSpace::impl_deallocate( if (arg_alloc_size >= memory_threshold_g) { Impl::cuda_device_synchronize( "Kokkos::Cuda: backend fence before async free"); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_free_async_wrapper( - arg_alloc_ptr))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFreeAsync(arg_alloc_ptr, m_stream)); Impl::cuda_device_synchronize( "Kokkos::Cuda: backend fence after async free"); } else { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_free_wrapper(arg_alloc_ptr))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(arg_alloc_ptr)); } #else - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_free_wrapper(arg_alloc_ptr))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(arg_alloc_ptr)); #endif } catch (...) { } @@ -393,8 +390,8 @@ void CudaUVMSpace::impl_deallocate( try { if (arg_alloc_ptr != nullptr) { Kokkos::Impl::num_uvm_allocations--; - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_free_wrapper(arg_alloc_ptr))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(arg_alloc_ptr)); } } catch (...) { } @@ -424,8 +421,8 @@ void CudaHostPinnedSpace::impl_deallocate( reported_size); } try { - KOKKOS_IMPL_CUDA_SAFE_CALL(( - Impl::CudaInternal::singleton().cuda_free_host_wrapper(arg_alloc_ptr))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFreeHost(arg_alloc_ptr)); } catch (...) { } } @@ -438,160 +435,6 @@ void CudaHostPinnedSpace::impl_deallocate( namespace Kokkos { namespace Impl { -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord - SharedAllocationRecord::s_root_record; - -SharedAllocationRecord - SharedAllocationRecord::s_root_record; - -SharedAllocationRecord - SharedAllocationRecord::s_root_record; -#endif - -//============================================================================== -// {{{1 - -SharedAllocationRecord::~SharedAllocationRecord() { - auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, (alloc_size - sizeof(SharedAllocationHeader))); -} - -void SharedAllocationRecord::deep_copy_header_no_exec( - void *ptr, const void *header) { - Kokkos::Cuda exec; - Kokkos::Impl::DeepCopy(exec, ptr, header, - sizeof(SharedAllocationHeader)); - exec.fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); -} - -// end SharedAllocationRecord destructors }}}1 -//============================================================================== - -//============================================================================== -// {{{1 - -SharedAllocationRecord::SharedAllocationRecord( - const Kokkos::CudaSpace &arg_space, const std::string &arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // Copy to device memory - Kokkos::Cuda exec; - Kokkos::Impl::DeepCopy( - exec, RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); - exec.fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -SharedAllocationRecord::SharedAllocationRecord( - const Kokkos::Cuda &arg_exec_space, const Kokkos::CudaSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_exec_space, arg_space, - arg_label, arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // Copy to device memory - Kokkos::Impl::DeepCopy(arg_exec_space, - RecordBase::m_alloc_ptr, &header, - sizeof(SharedAllocationHeader)); -} - -SharedAllocationRecord::SharedAllocationRecord( - const Kokkos::CudaUVMSpace &arg_space, const std::string &arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::CudaHostPinnedSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -// end SharedAllocationRecord constructors }}}1 -//============================================================================== - void cuda_prefetch_pointer(const Cuda &space, const void *ptr, size_t bytes, bool to_device) { if ((ptr == nullptr) || (bytes == 0)) return; @@ -620,19 +463,12 @@ void cuda_prefetch_pointer(const Cuda &space, const void *ptr, size_t bytes, #include -namespace Kokkos { -namespace Impl { - -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicity instantiate these CRTP base classes here, -// where we have access to the associated *_timpl.hpp header files. -template class SharedAllocationRecordCommon; -template class HostInaccessibleSharedAllocationRecordCommon; -template class SharedAllocationRecordCommon; -template class SharedAllocationRecordCommon; - -} // end namespace Impl -} // end namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::CudaSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::CudaUVMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::CudaHostPinnedSpace); // end Explicit instantiations of CRTP Base classes }}}1 //============================================================================== diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.hpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.hpp index b8fa335cd3b..0e20193e8b4 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.hpp @@ -68,6 +68,11 @@ class CudaSpace { /*--------------------------------*/ CudaSpace(); + + private: + CudaSpace(int device_id, cudaStream_t stream); + + public: CudaSpace(CudaSpace&& rhs) = default; CudaSpace(const CudaSpace& rhs) = default; CudaSpace& operator=(CudaSpace&& rhs) = default; @@ -89,9 +94,11 @@ class CudaSpace { const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; + static CudaSpace impl_create(int device_id, cudaStream_t stream) { + return CudaSpace(device_id, stream); + } + private: - template - friend class Kokkos::Experimental::LogicalMemorySpace; void* impl_allocate(const Cuda& exec_space, const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, @@ -112,10 +119,10 @@ class CudaSpace { static constexpr const char* name() { return m_name; } private: - int m_device; ///< Which Cuda device + int m_device; + cudaStream_t m_stream; static constexpr const char* m_name = "Cuda"; - friend class Kokkos::Impl::SharedAllocationRecord; }; template <> @@ -149,6 +156,11 @@ class CudaUVMSpace { /*--------------------------------*/ CudaUVMSpace(); + + private: + CudaUVMSpace(int device_id, cudaStream_t stream); + + public: CudaUVMSpace(CudaUVMSpace&& rhs) = default; CudaUVMSpace(const CudaUVMSpace& rhs) = default; CudaUVMSpace& operator=(CudaUVMSpace&& rhs) = default; @@ -156,6 +168,16 @@ class CudaUVMSpace { ~CudaUVMSpace() = default; /**\brief Allocate untracked memory in the cuda space */ + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -167,8 +189,6 @@ class CudaUVMSpace { const size_t arg_logical_size = 0) const; private: - template - friend class Kokkos::Experimental::LogicalMemorySpace; void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -189,8 +209,13 @@ class CudaUVMSpace { #endif /*--------------------------------*/ + static CudaUVMSpace impl_create(int device_id, cudaStream_t stream) { + return CudaUVMSpace(device_id, stream); + } + private: - int m_device; ///< Which Cuda device + int m_device; + cudaStream_t m_stream; #ifdef KOKKOS_IMPL_DEBUG_CUDA_PIN_UVM_TO_HOST static bool kokkos_impl_cuda_pin_uvm_to_host_v; @@ -223,6 +248,11 @@ class CudaHostPinnedSpace { /*--------------------------------*/ CudaHostPinnedSpace(); + + private: + CudaHostPinnedSpace(int device_id, cudaStream_t stream); + + public: CudaHostPinnedSpace(CudaHostPinnedSpace&& rhs) = default; CudaHostPinnedSpace(const CudaHostPinnedSpace& rhs) = default; CudaHostPinnedSpace& operator=(CudaHostPinnedSpace&& rhs) = default; @@ -230,6 +260,16 @@ class CudaHostPinnedSpace { ~CudaHostPinnedSpace() = default; /**\brief Allocate untracked memory in the space */ + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -240,9 +280,11 @@ class CudaHostPinnedSpace { const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; + static CudaHostPinnedSpace impl_create(int device_id, cudaStream_t stream) { + return CudaHostPinnedSpace(device_id, stream); + } + private: - template - friend class Kokkos::Experimental::LogicalMemorySpace; void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -258,6 +300,9 @@ class CudaHostPinnedSpace { static constexpr const char* name() { return m_name; } private: + int m_device; + cudaStream_t m_stream; + static constexpr const char* m_name = "CudaHostPinned"; /*--------------------------------*/ @@ -280,15 +325,12 @@ const std::unique_ptr& cuda_get_deep_copy_space( bool initialize = true); static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); -static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaSpace>::assignable); +static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::CudaUVMSpace, Kokkos::CudaUVMSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaHostPinnedSpace>::assignable); //---------------------------------------- @@ -516,179 +558,10 @@ struct DeepCopy -class SharedAllocationRecord - : public HostInaccessibleSharedAllocationRecordCommon { - private: - friend class SharedAllocationRecord; - friend class SharedAllocationRecordCommon; - friend class HostInaccessibleSharedAllocationRecordCommon; - - using RecordBase = SharedAllocationRecord; - using base_t = - HostInaccessibleSharedAllocationRecordCommon; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - static RecordBase s_root_record; -#endif - - const Kokkos::CudaSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - // This constructor does not forward to the one without exec_space arg - // in order to work around https://github.com/kokkos/kokkos/issues/5258 - // This constructor is templated so I can't just put it into the cpp file - // like the other constructor. - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, const Kokkos::CudaSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // Copy to device memory - // workaround for issue with NVCC and MSVC - // https://github.com/kokkos/kokkos/issues/5258 - deep_copy_header_no_exec(RecordBase::m_alloc_ptr, &header); - } - - SharedAllocationRecord( - const Kokkos::Cuda& exec_space, const Kokkos::CudaSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - SharedAllocationRecord( - const Kokkos::CudaSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - // helper function to work around MSVC+NVCC issue - // https://github.com/kokkos/kokkos/issues/5258 - static void deep_copy_header_no_exec(void*, const void*); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon { - private: - friend class SharedAllocationRecordCommon; - - using base_t = SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - static RecordBase s_root_record; - - const Kokkos::CudaUVMSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - // This constructor does not forward to the one without exec_space arg - // in order to work around https://github.com/kokkos/kokkos/issues/5258 - // This constructor is templated so I can't just put it into the cpp file - // like the other constructor. - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::CudaUVMSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); - } - - SharedAllocationRecord( - const Kokkos::CudaUVMSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon { - private: - friend class SharedAllocationRecordCommon; - - using RecordBase = SharedAllocationRecord; - using base_t = SharedAllocationRecordCommon; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - static RecordBase s_root_record; - - const Kokkos::CudaHostPinnedSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - // This constructor does not forward to the one without exec_space arg - // in order to work around https://github.com/kokkos/kokkos/issues/5258 - // This constructor is templated so I can't just put it into the cpp file - // like the other constructor. - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::CudaHostPinnedSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); - } - - SharedAllocationRecord( - const Kokkos::CudaHostPinnedSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -} // namespace Impl -} // namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::CudaSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(Kokkos::CudaUVMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(Kokkos::CudaHostPinnedSpace); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp index f68e05f7804..c4458c910ca 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp @@ -27,10 +27,6 @@ namespace Kokkos { namespace Impl { -void cuda_stream_synchronize( - const cudaStream_t stream, - Kokkos::Tools::Experimental::SpecialSynchronizationCases reason, - const std::string& name); void cuda_device_synchronize(const std::string& name); void cuda_stream_synchronize(const cudaStream_t stream, const std::string& name); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_GraphNodeKernel.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_GraphNodeKernel.hpp index a4d064e544a..5a821ab64a3 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_GraphNodeKernel.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_GraphNodeKernel.hpp @@ -23,8 +23,7 @@ #include -#include // GraphAccess needs to be complete -#include // SharedAllocationRecord +#include // GraphAccess needs to be complete #include #include @@ -50,10 +49,6 @@ class GraphNodeKernelImpl m_graph_ptr = nullptr; Kokkos::ObservingRawPtr m_graph_node_ptr = nullptr; - // Note: owned pointer to CudaSpace memory (used for global memory launches), - // which we're responsible for deallocating, but not responsible for calling - // its destructor. - using Record = Kokkos::Impl::SharedAllocationRecord; // Basically, we have to make this mutable for the same reasons that the // global kernel buffers in the Cuda instance are mutable... mutable Kokkos::OwningRawPtr m_driver_storage = nullptr; @@ -82,9 +77,7 @@ class GraphNodeKernelImpl allocate_driver_memory_buffer() const { KOKKOS_EXPECTS(m_driver_storage == nullptr) - - auto* record = Record::allocate( - Kokkos::CudaSpace{}, "GraphNodeKernel global memory functor storage", - sizeof(base_t)); - - Record::increment(record); - m_driver_storage = reinterpret_cast(record->data()); + m_driver_storage = static_cast(Kokkos::CudaSpace().allocate( + "GraphNodeKernel global memory functor storage", sizeof(base_t))); KOKKOS_ENSURES(m_driver_storage != nullptr) return m_driver_storage; } diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp index d7f853d9910..849e8b3b30e 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp @@ -26,10 +26,10 @@ #include -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include #include #include @@ -97,21 +97,21 @@ __global__ void query_cuda_kernel_arch(int *d_arch) { } /** Query what compute capability is actually launched to the device: */ -int cuda_kernel_arch() { +int cuda_kernel_arch(int device_id) { int arch = 0; int *d_arch = nullptr; - KOKKOS_IMPL_CUDA_SAFE_CALL((CudaInternal::singleton().cuda_malloc_wrapper( - reinterpret_cast(&d_arch), sizeof(int)))); - KOKKOS_IMPL_CUDA_SAFE_CALL((CudaInternal::singleton().cuda_memcpy_wrapper( - d_arch, &arch, sizeof(int), cudaMemcpyDefault))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(device_id)); + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaMalloc(reinterpret_cast(&d_arch), sizeof(int))); + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaMemcpy(d_arch, &arch, sizeof(int), cudaMemcpyDefault)); query_cuda_kernel_arch<<<1, 1>>>(d_arch); - KOKKOS_IMPL_CUDA_SAFE_CALL((CudaInternal::singleton().cuda_memcpy_wrapper( - &arch, d_arch, sizeof(int), cudaMemcpyDefault))); KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_free_wrapper(d_arch))); + cudaMemcpy(&arch, d_arch, sizeof(int), cudaMemcpyDefault)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(d_arch)); return arch; } @@ -135,7 +135,6 @@ Kokkos::View cuda_global_unique_token_locks( return locks; } -// FIXME_CUDA_MULTIPLE_DEVICES void cuda_device_synchronize(const std::string &name) { Kokkos::Tools::Experimental::Impl::profile_fence_event( name, @@ -144,16 +143,16 @@ void cuda_device_synchronize(const std::string &name) { #if defined(KOKKOS_COMPILER_CLANG) // annotate with __host__ silence a clang warning about using // cudaDeviceSynchronize in device code - [] __host__() { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_synchronize_wrapper())); - }); + [] __host__() #else - []() { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_synchronize_wrapper())); - }); + []() #endif + { + for (int cuda_device : Kokkos::Impl::CudaInternal::cuda_devices) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(cuda_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaDeviceSynchronize()); + } + }); } void cuda_stream_synchronize(const cudaStream_t stream, const CudaInternal *ptr, @@ -168,25 +167,11 @@ void cuda_stream_synchronize(const cudaStream_t stream, const CudaInternal *ptr, }); } -void cuda_stream_synchronize( - const cudaStream_t stream, - Kokkos::Tools::Experimental::SpecialSynchronizationCases reason, - const std::string &name) { - Kokkos::Tools::Experimental::Impl::profile_fence_event( - name, reason, [&]() { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_stream_synchronize_wrapper( - stream))); - }); -} - void cuda_internal_error_throw(cudaError e, const char *name, const char *file, const int line) { std::ostringstream out; - out << name << " error( " - << CudaInternal::singleton().cuda_get_error_name_wrapper(e) - << "): " - << CudaInternal::singleton().cuda_get_error_string_wrapper(e); + out << name << " error( " << cudaGetErrorName(e) + << "): " << cudaGetErrorString(e); if (file) { out << " " << file << ":" << line; } @@ -196,10 +181,8 @@ void cuda_internal_error_throw(cudaError e, const char *name, const char *file, void cuda_internal_error_abort(cudaError e, const char *name, const char *file, const int line) { std::ostringstream out; - out << name << " error( " - << CudaInternal::singleton().cuda_get_error_name_wrapper(e) - << "): " - << CudaInternal::singleton().cuda_get_error_string_wrapper(e); + out << name << " error( " << cudaGetErrorName(e) + << "): " << cudaGetErrorString(e); if (file) { out << " " << file << ":" << line; } @@ -208,96 +191,6 @@ void cuda_internal_error_abort(cudaError e, const char *name, const char *file, host_abort(out.str().c_str()); } -//---------------------------------------------------------------------------- -// Some significant cuda device properties: -// -// cudaDeviceProp::name : Text label for device -// cudaDeviceProp::major : Device major number -// cudaDeviceProp::minor : Device minor number -// cudaDeviceProp::warpSize : number of threads per warp -// cudaDeviceProp::multiProcessorCount : number of multiprocessors -// cudaDeviceProp::sharedMemPerBlock : capacity of shared memory per block -// cudaDeviceProp::totalConstMem : capacity of constant memory -// cudaDeviceProp::totalGlobalMem : capacity of global memory -// cudaDeviceProp::maxGridSize[3] : maximum grid size - -// -// Section 4.4.2.4 of the CUDA Toolkit Reference Manual -// -// struct cudaDeviceProp { -// char name[256]; -// size_t totalGlobalMem; -// size_t sharedMemPerBlock; -// int regsPerBlock; -// int warpSize; -// size_t memPitch; -// int maxThreadsPerBlock; -// int maxThreadsDim[3]; -// int maxGridSize[3]; -// size_t totalConstMem; -// int major; -// int minor; -// int clockRate; -// size_t textureAlignment; -// int deviceOverlap; -// int multiProcessorCount; -// int kernelExecTimeoutEnabled; -// int integrated; -// int canMapHostMemory; -// int computeMode; -// int concurrentKernels; -// int ECCEnabled; -// int pciBusID; -// int pciDeviceID; -// int tccDriver; -// int asyncEngineCount; -// int unifiedAddressing; -// int memoryClockRate; -// int memoryBusWidth; -// int l2CacheSize; -// int maxThreadsPerMultiProcessor; -// }; - -namespace { - -class CudaInternalDevices { - public: - enum { MAXIMUM_DEVICE_COUNT = 64 }; - struct cudaDeviceProp m_cudaProp[MAXIMUM_DEVICE_COUNT]; - int m_cudaDevCount; - - CudaInternalDevices(); - - static const CudaInternalDevices &singleton(); -}; - -CudaInternalDevices::CudaInternalDevices() { - // See 'cudaSetDeviceFlags' for host-device thread interaction - // Section 4.4.2.6 of the CUDA Toolkit Reference Manual - - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_device_count_wrapper( - &m_cudaDevCount))); - - if (m_cudaDevCount > MAXIMUM_DEVICE_COUNT) { - Kokkos::abort( - "Sorry, you have more GPUs per node than we thought anybody would ever " - "have. Please report this to github.com/kokkos/kokkos."); - } - for (int i = 0; i < m_cudaDevCount; ++i) { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_device_properties_wrapper( - m_cudaProp + i, i))); - } -} - -const CudaInternalDevices &CudaInternalDevices::singleton() { - static CudaInternalDevices self; - return self; -} - -} // namespace - //---------------------------------------------------------------------------- int Impl::CudaInternal::concurrency() { @@ -307,8 +200,6 @@ int Impl::CudaInternal::concurrency() { } void CudaInternal::print_configuration(std::ostream &s) const { - const CudaInternalDevices &dev_info = CudaInternalDevices::singleton(); - #if defined(KOKKOS_ENABLE_CUDA) s << "macro KOKKOS_ENABLE_CUDA : defined\n"; #endif @@ -317,22 +208,23 @@ void CudaInternal::print_configuration(std::ostream &s) const { << CUDA_VERSION / 1000 << "." << (CUDA_VERSION % 1000) / 10 << '\n'; #endif - for (int i = 0; i < dev_info.m_cudaDevCount; ++i) { - s << "Kokkos::Cuda[ " << i << " ] " << dev_info.m_cudaProp[i].name - << " capability " << dev_info.m_cudaProp[i].major << "." - << dev_info.m_cudaProp[i].minor << ", Total Global Memory: " - << human_memory_size(dev_info.m_cudaProp[i].totalGlobalMem) + for (int i : get_visible_devices()) { + cudaDeviceProp prop; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceProperties(&prop, i)); + s << "Kokkos::Cuda[ " << i << " ] " << prop.name << " capability " + << prop.major << "." << prop.minor + << ", Total Global Memory: " << human_memory_size(prop.totalGlobalMem) << ", Shared Memory per Block: " - << human_memory_size(dev_info.m_cudaProp[i].sharedMemPerBlock); + << human_memory_size(prop.sharedMemPerBlock); if (m_cudaDev == i) s << " : Selected"; - s << std::endl; + s << '\n'; } } //---------------------------------------------------------------------------- CudaInternal::~CudaInternal() { - if (m_stream || m_scratchSpace || m_scratchFlags || m_scratchUnified) { + if (m_scratchSpace || m_scratchFlags || m_scratchUnified) { std::cerr << "Kokkos::Cuda ERROR: Failed to call Kokkos::Cuda::finalize()" << std::endl; } @@ -370,45 +262,53 @@ void CudaInternal::fence() const { fence("Kokkos::CudaInternal::fence(): Unnamed Instance Fence"); } -void CudaInternal::initialize(cudaStream_t stream, bool manage_stream) { +void CudaInternal::initialize(cudaStream_t stream) { KOKKOS_EXPECTS(!is_initialized()); if (was_finalized) Kokkos::abort("Calling Cuda::initialize after Cuda::finalize is illegal\n"); was_initialized = true; + // Check that the device associated with the stream matches cuda_device + CUcontext context; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaError_t(cuStreamGetCtx(stream, &context))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaError_t(cuCtxPushCurrent(context))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaError_t(cuCtxGetDevice(&m_cudaDev))); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(m_cudaDev)); + + m_stream = stream; + CudaInternal::cuda_devices.insert(m_cudaDev); + + // Allocate a staging buffer for constant mem in pinned host memory + // and an event to avoid overwriting driver for previous kernel launches + if (!constantMemHostStagingPerDevice[m_cudaDev]) + KOKKOS_IMPL_CUDA_SAFE_CALL((cuda_malloc_host_wrapper( + reinterpret_cast(&constantMemHostStagingPerDevice[m_cudaDev]), + CudaTraits::ConstantMemoryUsage))); + + if (!constantMemReusablePerDevice[m_cudaDev]) + KOKKOS_IMPL_CUDA_SAFE_CALL( + (cuda_event_create_wrapper(&constantMemReusablePerDevice[m_cudaDev]))); + //---------------------------------- // Multiblock reduction uses scratch flags for counters // and scratch space for partial reduction values. // Allocate some initial space. This will grow as needed. { - const unsigned reduce_block_count = - m_maxWarpCount * Impl::CudaTraits::WarpSize; + // Maximum number of warps, + // at most one warp per thread in a warp for reduction. + auto const maxWarpCount = std::min( + m_deviceProp.maxThreadsPerBlock / CudaTraits::WarpSize, + CudaTraits::WarpSize); + unsigned const reduce_block_count = + maxWarpCount * Impl::CudaTraits::WarpSize; (void)scratch_unified(16 * sizeof(size_type)); (void)scratch_flags(reduce_block_count * 2 * sizeof(size_type)); (void)scratch_space(reduce_block_count * 16 * sizeof(size_type)); } - // Init the array for used for arbitrarily sized atomics - if (this == &singleton()) { - desul::Impl::init_lock_arrays(); // FIXME - } - - // Allocate a staging buffer for constant mem in pinned host memory - // and an event to avoid overwriting driver for previous kernel launches - if (this == &singleton()) { - KOKKOS_IMPL_CUDA_SAFE_CALL((cuda_malloc_host_wrapper( - reinterpret_cast(&constantMemHostStaging), - CudaTraits::ConstantMemoryUsage))); - - KOKKOS_IMPL_CUDA_SAFE_CALL( - (cuda_event_create_wrapper(&constantMemReusable))); - } - - m_stream = stream; - m_manage_stream = manage_stream; for (int i = 0; i < m_n_team_scratch; ++i) { m_team_scratch_current_size[i] = 0; m_team_scratch_ptr[i] = nullptr; @@ -427,22 +327,23 @@ void CudaInternal::initialize(cudaStream_t stream, bool manage_stream) { Cuda::size_type *CudaInternal::scratch_flags(const std::size_t size) const { if (verify_is_initialized("scratch_flags") && m_scratchFlagsCount < scratch_count(size)) { - m_scratchFlagsCount = scratch_count(size); + auto mem_space = Kokkos::CudaSpace::impl_create(m_cudaDev, m_stream); - using Record = - Kokkos::Impl::SharedAllocationRecord; + if (m_scratchFlags) { + mem_space.deallocate(m_scratchFlags, + m_scratchFlagsCount * sizeScratchGrain); + } - if (m_scratchFlags) Record::decrement(Record::get_record(m_scratchFlags)); + m_scratchFlagsCount = scratch_count(size); std::size_t alloc_size = multiply_overflow_abort(m_scratchFlagsCount, sizeScratchGrain); - Record *const r = Record::allocate( - Kokkos::CudaSpace(), "Kokkos::InternalScratchFlags", alloc_size); - - Record::increment(r); - - m_scratchFlags = reinterpret_cast(r->data()); + m_scratchFlags = static_cast( + mem_space.allocate("Kokkos::InternalScratchFlags", alloc_size)); + // We only zero-initialize the allocation when we actually allocate. + // It's the responsibility of the features using scratch_flags, + // namely parallel_reduce and parallel_scan, to reset the used values to 0. KOKKOS_IMPL_CUDA_SAFE_CALL( (cuda_memset_wrapper(m_scratchFlags, 0, alloc_size))); } @@ -453,21 +354,19 @@ Cuda::size_type *CudaInternal::scratch_flags(const std::size_t size) const { Cuda::size_type *CudaInternal::scratch_space(const std::size_t size) const { if (verify_is_initialized("scratch_space") && m_scratchSpaceCount < scratch_count(size)) { - m_scratchSpaceCount = scratch_count(size); + auto mem_space = Kokkos::CudaSpace::impl_create(m_cudaDev, m_stream); - using Record = - Kokkos::Impl::SharedAllocationRecord; + if (m_scratchSpace) { + mem_space.deallocate(m_scratchSpace, + m_scratchSpaceCount * sizeScratchGrain); + } - if (m_scratchSpace) Record::decrement(Record::get_record(m_scratchSpace)); + m_scratchSpaceCount = scratch_count(size); std::size_t alloc_size = multiply_overflow_abort(m_scratchSpaceCount, sizeScratchGrain); - Record *const r = Record::allocate( - Kokkos::CudaSpace(), "Kokkos::InternalScratchSpace", alloc_size); - - Record::increment(r); - - m_scratchSpace = reinterpret_cast(r->data()); + m_scratchSpace = static_cast( + mem_space.allocate("Kokkos::InternalScratchSpace", alloc_size)); } return m_scratchSpace; @@ -476,23 +375,20 @@ Cuda::size_type *CudaInternal::scratch_space(const std::size_t size) const { Cuda::size_type *CudaInternal::scratch_unified(const std::size_t size) const { if (verify_is_initialized("scratch_unified") && m_scratchUnifiedCount < scratch_count(size)) { - m_scratchUnifiedCount = scratch_count(size); + auto mem_space = + Kokkos::CudaHostPinnedSpace::impl_create(m_cudaDev, m_stream); - using Record = - Kokkos::Impl::SharedAllocationRecord; + if (m_scratchUnified) { + mem_space.deallocate(m_scratchUnified, + m_scratchUnifiedCount * sizeScratchGrain); + } - if (m_scratchUnified) - Record::decrement(Record::get_record(m_scratchUnified)); + m_scratchUnifiedCount = scratch_count(size); std::size_t alloc_size = multiply_overflow_abort(m_scratchUnifiedCount, sizeScratchGrain); - Record *const r = - Record::allocate(Kokkos::CudaHostPinnedSpace(), - "Kokkos::InternalScratchUnified", alloc_size); - - Record::increment(r); - - m_scratchUnified = reinterpret_cast(r->data()); + m_scratchUnified = static_cast( + mem_space.allocate("Kokkos::InternalScratchUnified", alloc_size)); } return m_scratchUnified; @@ -500,21 +396,16 @@ Cuda::size_type *CudaInternal::scratch_unified(const std::size_t size) const { Cuda::size_type *CudaInternal::scratch_functor(const std::size_t size) const { if (verify_is_initialized("scratch_functor") && m_scratchFunctorSize < size) { - m_scratchFunctorSize = size; - - using Record = - Kokkos::Impl::SharedAllocationRecord; - - if (m_scratchFunctor) - Record::decrement(Record::get_record(m_scratchFunctor)); + auto mem_space = Kokkos::CudaSpace::impl_create(m_cudaDev, m_stream); - Record *const r = - Record::allocate(Kokkos::CudaSpace(), "Kokkos::InternalScratchFunctor", - m_scratchFunctorSize); + if (m_scratchFunctor) { + mem_space.deallocate(m_scratchFunctor, m_scratchFunctorSize); + } - Record::increment(r); + m_scratchFunctorSize = size; - m_scratchFunctor = reinterpret_cast(r->data()); + m_scratchFunctor = static_cast(mem_space.allocate( + "Kokkos::InternalScratchFunctor", m_scratchFunctorSize)); } return m_scratchFunctor; @@ -537,21 +428,21 @@ void *CudaInternal::resize_team_scratch_space(int scratch_pool_id, // Multiple ParallelFor/Reduce Teams can call this function at the same time // and invalidate the m_team_scratch_ptr. We use a pool to avoid any race // condition. + auto mem_space = Kokkos::CudaSpace::impl_create(m_cudaDev, m_stream); if (m_team_scratch_current_size[scratch_pool_id] == 0) { m_team_scratch_current_size[scratch_pool_id] = bytes; m_team_scratch_ptr[scratch_pool_id] = - Kokkos::kokkos_malloc( - "Kokkos::CudaSpace::TeamScratchMemory", - m_team_scratch_current_size[scratch_pool_id]); + mem_space.allocate("Kokkos::CudaSpace::TeamScratchMemory", + m_team_scratch_current_size[scratch_pool_id]); } if ((bytes > m_team_scratch_current_size[scratch_pool_id]) || ((bytes < m_team_scratch_current_size[scratch_pool_id]) && (force_shrink))) { + mem_space.deallocate(m_team_scratch_ptr[scratch_pool_id], + m_team_scratch_current_size[scratch_pool_id]); m_team_scratch_current_size[scratch_pool_id] = bytes; m_team_scratch_ptr[scratch_pool_id] = - Kokkos::kokkos_realloc( - m_team_scratch_ptr[scratch_pool_id], - m_team_scratch_current_size[scratch_pool_id]); + mem_space.allocate("Kokkos::CudaSpace::TeamScratchMemory", bytes); } return m_team_scratch_ptr[scratch_pool_id]; } @@ -568,50 +459,33 @@ void CudaInternal::finalize() { was_finalized = true; - // Only finalize this if we're the singleton - if (this == &singleton()) { - (void)Impl::cuda_global_unique_token_locks(true); - desul::Impl::finalize_lock_arrays(); // FIXME - - KOKKOS_IMPL_CUDA_SAFE_CALL( - (cuda_free_host_wrapper(constantMemHostStaging))); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (cuda_event_destroy_wrapper(constantMemReusable))); - auto &deep_copy_space = - Kokkos::Impl::cuda_get_deep_copy_space(/*initialize*/ false); - if (deep_copy_space) - deep_copy_space->impl_internal_space_instance()->finalize(); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (cuda_stream_destroy_wrapper(cuda_get_deep_copy_stream()))); - } - + auto cuda_mem_space = Kokkos::CudaSpace::impl_create(m_cudaDev, m_stream); if (nullptr != m_scratchSpace || nullptr != m_scratchFlags) { - using RecordCuda = Kokkos::Impl::SharedAllocationRecord; - using RecordHost = - Kokkos::Impl::SharedAllocationRecord; - - RecordCuda::decrement(RecordCuda::get_record(m_scratchFlags)); - RecordCuda::decrement(RecordCuda::get_record(m_scratchSpace)); - RecordHost::decrement(RecordHost::get_record(m_scratchUnified)); - if (m_scratchFunctorSize > 0) - RecordCuda::decrement(RecordCuda::get_record(m_scratchFunctor)); + auto host_mem_space = + Kokkos::CudaHostPinnedSpace::impl_create(m_cudaDev, m_stream); + cuda_mem_space.deallocate(m_scratchFlags, + m_scratchFlagsCount * sizeScratchGrain); + cuda_mem_space.deallocate(m_scratchSpace, + m_scratchSpaceCount * sizeScratchGrain); + host_mem_space.deallocate(m_scratchUnified, + m_scratchUnifiedCount * sizeScratchGrain); + if (m_scratchFunctorSize > 0) { + cuda_mem_space.deallocate(m_scratchFunctor, m_scratchFunctorSize); + } } for (int i = 0; i < m_n_team_scratch; ++i) { if (m_team_scratch_current_size[i] > 0) - Kokkos::kokkos_free(m_team_scratch_ptr[i]); + cuda_mem_space.deallocate(m_team_scratch_ptr[i], + m_team_scratch_current_size[i]); } - if (m_manage_stream && get_stream() != nullptr) - KOKKOS_IMPL_CUDA_SAFE_CALL((cuda_stream_destroy_wrapper(m_stream))); - m_scratchSpaceCount = 0; m_scratchFlagsCount = 0; m_scratchUnifiedCount = 0; m_scratchSpace = nullptr; m_scratchFlags = nullptr; m_scratchUnified = nullptr; - m_stream = nullptr; for (int i = 0; i < m_n_team_scratch; ++i) { m_team_scratch_current_size[i] = 0; m_team_scratch_ptr[i] = nullptr; @@ -624,30 +498,6 @@ void CudaInternal::finalize() { //---------------------------------------------------------------------------- -Cuda::size_type cuda_internal_multiprocessor_count() { - return CudaInternal::singleton().m_multiProcCount; -} - -CudaSpace::size_type cuda_internal_maximum_concurrent_block_count() { -#if defined(KOKKOS_ARCH_KEPLER) - // Compute capability 3.0 through 3.7 - enum : int { max_resident_blocks_per_multiprocessor = 16 }; -#else - // Compute capability 5.0 through 6.2 - enum : int { max_resident_blocks_per_multiprocessor = 32 }; -#endif - return CudaInternal::singleton().m_multiProcCount * - max_resident_blocks_per_multiprocessor; -}; - -Cuda::size_type cuda_internal_maximum_warp_count() { - return CudaInternal::singleton().m_maxWarpCount; -} - -std::array cuda_internal_maximum_grid_count() { - return CudaInternal::singleton().m_maxBlock; -} - Cuda::size_type *cuda_internal_scratch_space(const Cuda &instance, const std::size_t size) { return instance.impl_internal_space_instance()->scratch_space(size); @@ -670,10 +520,6 @@ Cuda::size_type *cuda_internal_scratch_unified(const Cuda &instance, namespace Kokkos { -Cuda::size_type Cuda::detect_device_count() { - return Impl::CudaInternalDevices::singleton().m_cudaDevCount; -} - #ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 int Cuda::concurrency() { #else @@ -687,25 +533,23 @@ int Cuda::impl_is_initialized() { } void Cuda::impl_initialize(InitializationSettings const &settings) { - const int cuda_device_id = Impl::get_gpu(settings); - const auto &dev_info = Impl::CudaInternalDevices::singleton(); - - const struct cudaDeviceProp &cudaProp = dev_info.m_cudaProp[cuda_device_id]; + const std::vector &visible_devices = Impl::get_visible_devices(); + const int cuda_device_id = + Impl::get_gpu(settings).value_or(visible_devices[0]); - Impl::CudaInternal::m_cudaDev = cuda_device_id; + cudaDeviceProp cudaProp; + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaGetDeviceProperties(&cudaProp, cuda_device_id)); Impl::CudaInternal::m_deviceProp = cudaProp; - - Kokkos::Impl::cuda_device_synchronize( - "Kokkos::CudaInternal::initialize: Fence on space initialization"); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(cuda_device_id)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaDeviceSynchronize()); // Query what compute capability architecture a kernel executes: - Impl::CudaInternal::m_cudaArch = Impl::cuda_kernel_arch(); + Impl::CudaInternal::m_cudaArch = Impl::cuda_kernel_arch(cuda_device_id); if (Impl::CudaInternal::m_cudaArch == 0) { - std::stringstream ss; - ss << "Kokkos::Cuda::initialize ERROR: likely mismatch of architecture\n"; - std::string msg = ss.str(); - Kokkos::abort(msg.c_str()); + Kokkos::abort( + "Kokkos::Cuda::initialize ERROR: likely mismatch of architecture\n"); } int compiled_major = Impl::CudaInternal::m_cudaArch / 100; @@ -761,77 +605,41 @@ Kokkos::Cuda::initialize WARNING: Cuda is allocating into UVMSpace by default } #endif - //---------------------------------- - // number of multiprocessors - Impl::CudaInternal::m_multiProcCount = cudaProp.multiProcessorCount; - - //---------------------------------- - // Maximum number of warps, - // at most one warp per thread in a warp for reduction. - Impl::CudaInternal::m_maxWarpCount = - cudaProp.maxThreadsPerBlock / Impl::CudaTraits::WarpSize; - - if (Impl::CudaTraits::WarpSize < Impl::CudaInternal::m_maxWarpCount) { - Impl::CudaInternal::m_maxWarpCount = Impl::CudaTraits::WarpSize; - } - - //---------------------------------- - // Maximum number of blocks: - - Impl::CudaInternal::m_maxBlock[0] = cudaProp.maxGridSize[0]; - Impl::CudaInternal::m_maxBlock[1] = cudaProp.maxGridSize[1]; - Impl::CudaInternal::m_maxBlock[2] = cudaProp.maxGridSize[2]; - - Impl::CudaInternal::m_shmemPerSM = cudaProp.sharedMemPerMultiprocessor; - Impl::CudaInternal::m_maxShmemPerBlock = cudaProp.sharedMemPerBlock; - Impl::CudaInternal::m_maxBlocksPerSM = - Impl::CudaInternal::m_cudaArch < 500 - ? 16 - : (Impl::CudaInternal::m_cudaArch < 750 - ? 32 - : (Impl::CudaInternal::m_cudaArch == 750 ? 16 : 32)); - Impl::CudaInternal::m_maxThreadsPerSM = cudaProp.maxThreadsPerMultiProcessor; - Impl::CudaInternal::m_maxThreadsPerBlock = cudaProp.maxThreadsPerBlock; - //---------------------------------- cudaStream_t singleton_stream; - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Impl::CudaInternal::singleton().cuda_stream_create_wrapper( - &singleton_stream))); - - auto &cuda_singleton = Impl::CudaInternal::singleton(); - cuda_singleton.initialize(singleton_stream, /*manage*/ true); -} + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(cuda_device_id)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamCreate(&singleton_stream)); -std::vector Cuda::detect_device_arch() { - const Impl::CudaInternalDevices &s = Impl::CudaInternalDevices::singleton(); - - std::vector output(s.m_cudaDevCount); - - for (int i = 0; i < s.m_cudaDevCount; ++i) { - output[i] = s.m_cudaProp[i].major * 100 + s.m_cudaProp[i].minor; - } + // Init the array for used for arbitrarily sized atomics + desul::Impl::init_lock_arrays(); // FIXME - return output; + Impl::CudaInternal::singleton().initialize(singleton_stream); } -Cuda::size_type Cuda::device_arch() { - const int dev_id = Impl::CudaInternal::singleton().m_cudaDev; +void Cuda::impl_finalize() { + (void)Impl::cuda_global_unique_token_locks(true); + desul::Impl::finalize_lock_arrays(); // FIXME - int dev_arch = 0; - - if (0 <= dev_id) { - const struct cudaDeviceProp &cudaProp = - Impl::CudaInternalDevices::singleton().m_cudaProp[dev_id]; - - dev_arch = cudaProp.major * 100 + cudaProp.minor; + for (const auto cuda_device : Kokkos::Impl::CudaInternal::cuda_devices) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(cuda_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaFreeHost(Kokkos::Impl::CudaInternal::constantMemHostStagingPerDevice + [cuda_device])); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaEventDestroy( + Kokkos::Impl::CudaInternal::constantMemReusablePerDevice[cuda_device])); } - return dev_arch; -} + auto &deep_copy_space = Impl::cuda_get_deep_copy_space(/*initialize*/ false); + if (deep_copy_space) + deep_copy_space->impl_internal_space_instance()->finalize(); + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaStreamDestroy(Impl::cuda_get_deep_copy_stream())); -void Cuda::impl_finalize() { Impl::CudaInternal::singleton().finalize(); } + Impl::CudaInternal::singleton().finalize(); + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaStreamDestroy(Impl::CudaInternal::singleton().m_stream)); +} Cuda::Cuda() : m_space_instance(&Impl::CudaInternal::singleton(), @@ -845,13 +653,17 @@ KOKKOS_DEPRECATED Cuda::Cuda(cudaStream_t stream, bool manage_stream) manage_stream ? Impl::ManageStream::yes : Impl::ManageStream::no) {} Cuda::Cuda(cudaStream_t stream, Impl::ManageStream manage_stream) - : m_space_instance(new Impl::CudaInternal, [](Impl::CudaInternal *ptr) { - ptr->finalize(); - delete ptr; - }) { + : m_space_instance( + new Impl::CudaInternal, [manage_stream](Impl::CudaInternal *ptr) { + ptr->finalize(); + if (static_cast(manage_stream)) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamDestroy(ptr->m_stream)); + } + delete ptr; + }) { Impl::CudaInternal::singleton().verify_is_initialized( "Cuda instance constructor"); - m_space_instance->initialize(stream, static_cast(manage_stream)); + m_space_instance->initialize(stream); } void Cuda::print_configuration(std::ostream &os, bool /*verbose*/) const { diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp index a324adecfeb..24f4af31019 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp @@ -22,6 +22,10 @@ #include #include #include +#include "Kokkos_CudaSpace.hpp" + +#include +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -55,27 +59,10 @@ struct CudaTraits { unsigned long[ConstantMemoryUsage / sizeof(unsigned long)]; static constexpr int ConstantMemoryUseThreshold = 0x000200 /* 512 bytes */; - - KOKKOS_INLINE_FUNCTION static CudaSpace::size_type warp_count( - CudaSpace::size_type i) { - return (i + WarpIndexMask) >> WarpIndexShift; - } - - KOKKOS_INLINE_FUNCTION static CudaSpace::size_type warp_align( - CudaSpace::size_type i) { - constexpr CudaSpace::size_type Mask = ~WarpIndexMask; - return (i + WarpIndexMask) & Mask; - } }; //---------------------------------------------------------------------------- -CudaSpace::size_type cuda_internal_multiprocessor_count(); -CudaSpace::size_type cuda_internal_maximum_warp_count(); -std::array cuda_internal_maximum_grid_count(); - -CudaSpace::size_type cuda_internal_maximum_concurrent_block_count(); - CudaSpace::size_type* cuda_internal_scratch_flags(const Cuda&, const std::size_t size); CudaSpace::size_type* cuda_internal_scratch_space(const Cuda&, @@ -101,18 +88,10 @@ class CudaInternal { public: using size_type = Cuda::size_type; - inline static int m_cudaDev = -1; + int m_cudaDev = -1; // Device Properties - inline static int m_cudaArch = -1; - inline static unsigned m_multiProcCount = 0; - inline static unsigned m_maxWarpCount = 0; - inline static std::array m_maxBlock = {0, 0, 0}; - inline static int m_shmemPerSM = 0; - inline static int m_maxShmemPerBlock = 0; - inline static int m_maxBlocksPerSM = 0; - inline static int m_maxThreadsPerSM = 0; - inline static int m_maxThreadsPerBlock = 0; + inline static int m_cudaArch = -1; static int concurrency(); inline static cudaDeviceProp m_deviceProp; @@ -129,7 +108,6 @@ class CudaInternal { mutable size_type* m_scratchFunctor; cudaStream_t m_stream; uint32_t m_instance_id; - bool m_manage_stream; // Team Scratch Level 1 Space int m_n_team_scratch = 10; @@ -142,11 +120,11 @@ class CudaInternal { bool was_initialized = false; bool was_finalized = false; - // FIXME_CUDA: these want to be per-device, not per-stream... use of 'static' - // here will break once there are multiple devices though - inline static unsigned long* constantMemHostStaging = nullptr; - inline static cudaEvent_t constantMemReusable = nullptr; - inline static std::mutex constantMemMutex; + inline static std::set cuda_devices = {}; + inline static std::map constantMemHostStagingPerDevice = + {}; + inline static std::map constantMemReusablePerDevice = {}; + inline static std::map constantMemMutexPerDevice = {}; static CudaInternal& singleton(); @@ -156,7 +134,7 @@ class CudaInternal { return nullptr != m_scratchSpace && nullptr != m_scratchFlags; } - void initialize(cudaStream_t stream, bool manage_stream); + void initialize(cudaStream_t stream); void finalize(); void print_configuration(std::ostream&) const; @@ -247,12 +225,6 @@ class CudaInternal { return cudaDeviceSetLimit(limit, value); } - template - cudaError_t cuda_device_synchronize_wrapper() const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaDeviceSynchronize(); - } - template cudaError_t cuda_event_create_wrapper(cudaEvent_t* event) const { if constexpr (setCudaDevice) set_cuda_device(); @@ -290,37 +262,6 @@ class CudaInternal { return cudaFreeHost(ptr); } - template - cudaError_t cuda_get_device_count_wrapper(int* count) const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaGetDeviceCount(count); - } - - template - cudaError_t cuda_get_device_properties_wrapper(cudaDeviceProp* prop, - int device) const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaGetDeviceProperties(prop, device); - } - - template - const char* cuda_get_error_name_wrapper(cudaError_t error) const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaGetErrorName(error); - } - - template - const char* cuda_get_error_string_wrapper(cudaError_t error) const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaGetErrorString(error); - } - - template - cudaError_t cuda_get_last_error_wrapper() const { - if constexpr (setCudaDevice) set_cuda_device(); - return cudaGetLastError(); - } - template cudaError_t cuda_graph_add_dependencies_wrapper( cudaGraph_t graph, const cudaGraphNode_t* from, const cudaGraphNode_t* to, @@ -506,10 +447,10 @@ class CudaInternal { } template - cudaError_t cuda_func_set_attributes_wrapper(T* entry, cudaFuncAttribute attr, - int value) const { + cudaError_t cuda_func_set_attribute_wrapper(T* entry, cudaFuncAttribute attr, + int value) const { if constexpr (setCudaDevice) set_cuda_device(); - return cudaFuncSetAttributes(entry, attr, value); + return cudaFuncSetAttribute(entry, attr, value); } template diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp index 82a72b69021..b0dadb45f72 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp @@ -21,7 +21,6 @@ #ifdef KOKKOS_ENABLE_CUDA #include -#include #include #include #include @@ -118,42 +117,43 @@ inline bool is_empty_launch(dim3 const& grid, dim3 const& block) { } inline void check_shmem_request(CudaInternal const* cuda_instance, int shmem) { - if (cuda_instance->m_maxShmemPerBlock < shmem) { + int const maxShmemPerBlock = cuda_instance->m_deviceProp.sharedMemPerBlock; + if (maxShmemPerBlock < shmem) { Kokkos::Impl::throw_runtime_exception( - std::string("CudaParallelLaunch (or graph node creation) FAILED: shared" - " memory request is too large")); + "CudaParallelLaunch (or graph node creation) FAILED: shared memory " + "request is too large"); } } // These functions need to be templated on DriverType and LaunchBounds // so that the static bool is unique for each type combo // KernelFuncPtr does not necessarily contain that type information. -// FIXME_CUDA_MULTIPLE_DEVICES template const cudaFuncAttributes& get_cuda_kernel_func_attributes( - const KernelFuncPtr& func) { + int cuda_device, const KernelFuncPtr& func) { // Only call cudaFuncGetAttributes once for each unique kernel // by leveraging static variable initialization rules - auto wrap_get_attributes = [&]() -> cudaFuncAttributes { + static std::map func_attr; + if (func_attr.find(cuda_device) == func_attr.end()) { cudaFuncAttributes attr; - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_func_get_attributes_wrapper(&attr, - func))); - return attr; - }; - static cudaFuncAttributes func_attr = wrap_get_attributes(); - return func_attr; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(cuda_device)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFuncGetAttributes(&attr, func)); + func_attr.emplace(cuda_device, attr); + } + return func_attr[cuda_device]; } template -inline void configure_shmem_preference(const KernelFuncPtr& func, +inline void configure_shmem_preference(const int cuda_device, + const KernelFuncPtr& func, const cudaDeviceProp& device_props, const size_t block_size, int& shmem, const size_t occupancy) { #ifndef KOKKOS_ARCH_KEPLER const auto& func_attr = - get_cuda_kernel_func_attributes(func); + get_cuda_kernel_func_attributes(cuda_device, + func); // Compute limits for number of blocks due to registers/SM const size_t regs_per_sm = device_props.regsPerMultiprocessor; @@ -222,7 +222,7 @@ inline void configure_shmem_preference(const KernelFuncPtr& func, // FIXME_CUDA_MULTIPLE_DEVICES auto set_cache_config = [&] { KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_func_set_attributes_wrapper( + (CudaInternal::singleton().cuda_func_set_attribute_wrapper( func, cudaFuncAttributePreferredSharedMemoryCarveout, carveout))); return carveout; }; @@ -387,8 +387,8 @@ struct CudaParallelLaunchKernelInvoker< driver.get_policy().impl_get_desired_occupancy().value(); size_t block_size = block.x * block.y * block.z; Impl::configure_shmem_preference( - base_t::get_kernel_func(), cuda_instance->m_deviceProp, block_size, - shmem, desired_occupancy); + cuda_instance->m_cudaDev, base_t::get_kernel_func(), + cuda_instance->m_deviceProp, block_size, shmem, desired_occupancy); } void const* args[] = {&driver}; @@ -487,8 +487,8 @@ struct CudaParallelLaunchKernelInvoker< driver.get_policy().impl_get_desired_occupancy().value(); size_t block_size = block.x * block.y * block.z; Impl::configure_shmem_preference( - base_t::get_kernel_func(), cuda_instance->m_deviceProp, block_size, - shmem, desired_occupancy); + cuda_instance->m_cudaDev, base_t::get_kernel_func(), + cuda_instance->m_deviceProp, block_size, shmem, desired_occupancy); } auto* driver_ptr = Impl::allocate_driver_storage_for_kernel(driver); @@ -576,13 +576,16 @@ struct CudaParallelLaunchKernelInvoker< static void invoke_kernel(DriverType const& driver, dim3 const& grid, dim3 const& block, int shmem, CudaInternal const* cuda_instance) { + int cuda_device = cuda_instance->m_cudaDev; // Wait until the previous kernel that uses the constant buffer is done - std::lock_guard lock(CudaInternal::constantMemMutex); + std::lock_guard lock( + CudaInternal::constantMemMutexPerDevice[cuda_device]); KOKKOS_IMPL_CUDA_SAFE_CALL((cuda_instance->cuda_event_synchronize_wrapper( - CudaInternal::constantMemReusable))); + CudaInternal::constantMemReusablePerDevice[cuda_device]))); // Copy functor (synchronously) to staging buffer in pinned host memory - unsigned long* staging = cuda_instance->constantMemHostStaging; + unsigned long* staging = + cuda_instance->constantMemHostStagingPerDevice[cuda_device]; memcpy(staging, &driver, sizeof(DriverType)); // Copy functor asynchronously from there to constant memory on the device @@ -597,7 +600,7 @@ struct CudaParallelLaunchKernelInvoker< // Record an event that says when the constant buffer can be reused KOKKOS_IMPL_CUDA_SAFE_CALL((cuda_instance->cuda_event_record_wrapper( - CudaInternal::constantMemReusable))); + CudaInternal::constantMemReusablePerDevice[cuda_device]))); } inline static void create_parallel_launch_graph_node( @@ -665,8 +668,8 @@ struct CudaParallelLaunchImpl< Impl::configure_shmem_preference< DriverType, Kokkos::LaunchBounds>( - base_t::get_kernel_func(), cuda_instance->m_deviceProp, block_size, - shmem, desired_occupancy); + cuda_instance->m_cudaDev, base_t::get_kernel_func(), + cuda_instance->m_deviceProp, block_size, shmem, desired_occupancy); } desul::ensure_cuda_lock_arrays_on_device(); @@ -675,18 +678,17 @@ struct CudaParallelLaunchImpl< base_t::invoke_kernel(driver, grid, block, shmem, cuda_instance); #if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) - KOKKOS_IMPL_CUDA_SAFE_CALL( - (cuda_instance->cuda_get_last_error_wrapper())); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetLastError()); cuda_instance->fence( "Kokkos::Impl::launch_kernel: Debug Only Check for Execution Error"); #endif } } - static cudaFuncAttributes get_cuda_func_attributes() { + static cudaFuncAttributes get_cuda_func_attributes(int cuda_device) { return get_cuda_kernel_func_attributes< DriverType, Kokkos::LaunchBounds>( - base_t::get_kernel_func()); + cuda_device, base_t::get_kernel_func()); } }; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_MDRangePolicy.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_MDRangePolicy.hpp index 7492ab49e56..2c7eba7a18f 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_MDRangePolicy.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_MDRangePolicy.hpp @@ -40,8 +40,8 @@ template <> inline TileSizeProperties get_tile_size_properties( const Kokkos::Cuda& space) { TileSizeProperties properties; - properties.max_threads = - space.impl_internal_space_instance()->m_maxThreadsPerSM; + properties.max_threads = space.impl_internal_space_instance() + ->m_deviceProp.maxThreadsPerMultiProcessor; properties.default_largest_tile_size = 16; properties.default_tile_size = 2; properties.max_total_tile_size = 512; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_MDRange.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_MDRange.hpp index 8aae27d091f..63038984004 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_MDRange.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_MDRange.hpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -42,8 +41,8 @@ namespace Impl { template int max_tile_size_product_helper(const Policy& pol, const LaunchBounds&) { cudaFuncAttributes attr = - CudaParallelLaunch::get_cuda_func_attributes(); + CudaParallelLaunch::get_cuda_func_attributes( + pol.space().cuda_device()); auto const& prop = pol.space().cuda_device_prop(); // Limits due to registers/SM, MDRange doesn't have @@ -96,7 +95,7 @@ class ParallelFor, Kokkos::Cuda> { inline void execute() const { if (m_rp.m_num_tiles == 0) return; - const auto maxblocks = cuda_internal_maximum_grid_count(); + const auto maxblocks = m_rp.space().cuda_device_prop().maxGridSize; if (RP::rank == 2) { const dim3 block(m_rp.m_tile[0], m_rp.m_tile[1], 1); KOKKOS_ASSERT(block.x > 0); @@ -309,6 +308,11 @@ class ParallelReduce( f, n); using closure_type = Impl::ParallelReduce, Policy, Kokkos::Cuda>; - cudaFuncAttributes attr = - CudaParallelLaunch::get_cuda_func_attributes(); + cudaFuncAttributes attr = CudaParallelLaunch:: + get_cuda_func_attributes(m_policy.space().cuda_device()); while ( - (n && - (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < - shmem_size)) || + (n && (maxShmemPerBlock < shmem_size)) || (n > static_cast( Kokkos::Impl::cuda_get_max_block_size( diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Range.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Range.hpp index 5226c48bd9a..0f052be3c30 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Range.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Range.hpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -86,18 +85,18 @@ class ParallelFor, Kokkos::Cuda> { const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); cudaFuncAttributes attr = - CudaParallelLaunch::get_cuda_func_attributes(); + CudaParallelLaunch::get_cuda_func_attributes( + m_policy.space().cuda_device()); const int block_size = Kokkos::Impl::cuda_get_opt_block_size( m_policy.space().impl_internal_space_instance(), attr, m_functor, 1, 0, 0); KOKKOS_ASSERT(block_size > 0); dim3 block(1, block_size, 1); + const int maxGridSizeX = m_policy.space().cuda_device_prop().maxGridSize[0]; dim3 grid( - std::min( - typename Policy::index_type((nwork + block.y - 1) / block.y), - typename Policy::index_type(cuda_internal_maximum_grid_count()[0])), + std::min(typename Policy::index_type((nwork + block.y - 1) / block.y), + typename Policy::index_type(maxGridSizeX)), 1, 1); #ifdef KOKKOS_IMPL_DEBUG_CUDA_SERIAL_EXECUTION if (Kokkos::Impl::CudaInternal::cuda_use_serial_execution()) { @@ -243,6 +242,12 @@ class ParallelReduce, if (CudaTraits::WarpSize < word_count.value) { __syncthreads(); + } else if (word_count.value > 1) { + // Inside cuda_single_inter_block_reduce_scan() and final() above, + // shared[i] below might have been updated by a single thread within a + // warp without synchronization afterwards. Synchronize threads within + // warp to avoid potential race condition. + __syncwarp(0xffffffff); } for (unsigned i = threadIdx.y; i < word_count.value; i += blockDim.y) { @@ -254,19 +259,18 @@ class ParallelReduce, // Determine block size constrained by shared memory: inline unsigned local_block_size(const FunctorType& f) { unsigned n = CudaTraits::WarpSize * 8; + const int maxShmemPerBlock = + m_policy.space().cuda_device_prop().sharedMemPerBlock; int shmem_size = cuda_single_inter_block_reduce_scan_shmem( f, n); using closure_type = Impl::ParallelReduce, Policy, Kokkos::Cuda>; - cudaFuncAttributes attr = - CudaParallelLaunch::get_cuda_func_attributes(); + cudaFuncAttributes attr = CudaParallelLaunch:: + get_cuda_func_attributes(m_policy.space().cuda_device()); while ( - (n && - (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < - shmem_size)) || + (n && (maxShmemPerBlock < shmem_size)) || (n > static_cast( Kokkos::Impl::cuda_get_max_block_size( @@ -609,11 +613,11 @@ class ParallelScan, Kokkos::Cuda> { // 4 warps was 10% faster than 8 warps and 20% faster than 16 warps in unit // testing + const int maxShmemPerBlock = + m_policy.space().cuda_device_prop().sharedMemPerBlock; unsigned n = CudaTraits::WarpSize * 4; while (n && - unsigned(m_policy.space() - .impl_internal_space_instance() - ->m_maxShmemPerBlock) < + unsigned(maxShmemPerBlock) < cuda_single_inter_block_reduce_scan_shmem(f, n)) { n >>= 1; @@ -933,11 +937,11 @@ class ParallelScanWithTotal, // 4 warps was 10% faster than 8 warps and 20% faster than 16 warps in unit // testing + const int maxShmemPerBlock = + m_policy.space().cuda_device_prop().sharedMemPerBlock; unsigned n = CudaTraits::WarpSize * 4; while (n && - unsigned(m_policy.space() - .impl_internal_space_instance() - ->m_maxShmemPerBlock) < + unsigned(maxShmemPerBlock) < cuda_single_inter_block_reduce_scan_shmem(f, n)) { n >>= 1; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Team.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Team.hpp index 498e57f94a7..9f7be45c839 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Team.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel_Team.hpp @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include @@ -98,7 +98,7 @@ class TeamPolicyInternal Impl::ParallelFor>; cudaFuncAttributes attr = CudaParallelLaunch:: - get_cuda_func_attributes(); + get_cuda_func_attributes(space().cuda_device()); int block_size = Kokkos::Impl::cuda_get_max_block_size( @@ -137,7 +137,7 @@ class TeamPolicyInternal Impl::ParallelFor>; cudaFuncAttributes attr = CudaParallelLaunch:: - get_cuda_func_attributes(); + get_cuda_func_attributes(space().cuda_device()); const int block_size = Kokkos::Impl::cuda_get_opt_block_size( @@ -262,7 +262,8 @@ class TeamPolicyInternal m_tune_team(bool(team_size_request <= 0)), m_tune_vector(bool(vector_length_request <= 0)) { // Make sure league size is permissible - if (league_size_ >= int(Impl::cuda_internal_maximum_grid_count()[0])) + const int maxGridSizeX = m_space.cuda_device_prop().maxGridSize[0]; + if (league_size_ >= maxGridSizeX) Impl::throw_runtime_exception( "Requested too large league_size for TeamPolicy on Cuda execution " "space."); @@ -369,7 +370,7 @@ class TeamPolicyInternal cudaFuncAttributes attr = CudaParallelLaunch:: - get_cuda_func_attributes(); + get_cuda_func_attributes(space().cuda_device()); const int block_size = std::forward(block_size_callable)( space().impl_internal_space_instance(), attr, f, (size_t)impl_vector_length(), @@ -539,8 +540,8 @@ class ParallelFor, auto internal_space_instance = m_policy.space().impl_internal_space_instance(); cudaFuncAttributes attr = - CudaParallelLaunch::get_cuda_func_attributes(); + CudaParallelLaunch::get_cuda_func_attributes( + internal_space_instance->m_cudaDev); m_team_size = m_team_size >= 0 ? m_team_size @@ -575,10 +576,11 @@ class ParallelFor, static_cast(m_league_size)))); } + const int maxShmemPerBlock = + m_policy.space().cuda_device_prop().sharedMemPerBlock; const int shmem_size_total = m_shmem_begin + m_shmem_size; - if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { - printf("%i %i\n", internal_space_instance->m_maxShmemPerBlock, - shmem_size_total); + if (maxShmemPerBlock < shmem_size_total) { + printf("%i %i\n", maxShmemPerBlock, shmem_size_total); Kokkos::Impl::throw_runtime_exception(std::string( "Kokkos::Impl::ParallelFor< Cuda > insufficient shared memory")); } @@ -623,6 +625,22 @@ class ParallelReduce 4 bytes in size, indexing into shared/global memory relies + // on the block and grid dimensions to ensure that we index at the correct + // offset rather than at every 4 byte word; such that, when the join is + // performed, we have the correct data that was copied over in chunks of 4 + // bytes. + using word_size_type = std::conditional_t< + sizeof(value_type) < sizeof(Kokkos::Cuda::size_type), + std::conditional_t, + Kokkos::Cuda::size_type>; using size_type = Cuda::size_type; using reducer_type = ReducerType; @@ -646,9 +664,11 @@ class ParallelReduce + const integral_nonzero_constant word_count(m_functor_reducer.get_reducer().value_size() / - sizeof(size_type)); + sizeof(word_size_type)); reference_type value = m_functor_reducer.get_reducer().init( - kokkos_impl_cuda_shared_memory() + + kokkos_impl_cuda_shared_memory() + threadIdx.y * word_count.value); // Iterate this block through the league @@ -721,18 +742,19 @@ class ParallelReduce( m_functor_reducer.get_reducer(), blockIdx.x, gridDim.x, - kokkos_impl_cuda_shared_memory(), m_scratch_space, + kokkos_impl_cuda_shared_memory(), m_scratch_space, m_scratch_flags); if (do_final_reduction) { // This is the final block with the final result at the final threads' // location - size_type* const shared = kokkos_impl_cuda_shared_memory() + - (blockDim.y - 1) * word_count.value; + word_size_type* const shared = + kokkos_impl_cuda_shared_memory() + + (blockDim.y - 1) * word_count.value; size_type* const global = m_result_ptr_device_accessible - ? reinterpret_cast(m_result_ptr) + ? reinterpret_cast(m_result_ptr) : (m_unified_space ? m_unified_space : m_scratch_space); if (threadIdx.y == 0) { @@ -742,6 +764,11 @@ class ParallelReduce(m_scratch_space), result, + m_scratch_flags, blockDim.y)) { const unsigned id = threadIdx.y * blockDim.x + threadIdx.x; if (id == 0) { m_functor_reducer.get_reducer().final(&value); @@ -803,13 +831,15 @@ class ParallelReduce(cuda_internal_scratch_space( + m_policy.space(), + m_functor_reducer.get_reducer().value_size() * block_count)); m_scratch_flags = cuda_internal_scratch_flags(m_policy.space(), sizeof(size_type)); - m_unified_space = cuda_internal_scratch_unified( - m_policy.space(), m_functor_reducer.get_reducer().value_size()); + m_unified_space = + reinterpret_cast(cuda_internal_scratch_unified( + m_policy.space(), m_functor_reducer.get_reducer().value_size())); dim3 block(m_vector_size, m_team_size, 1); dim3 grid(block_count, 1, 1); @@ -842,7 +872,8 @@ class ParallelReduce(m_result_ptr, m_scratch_space, size); + DeepCopy(m_policy.space(), m_result_ptr, + m_scratch_space, size); } } } @@ -878,9 +909,8 @@ class ParallelReduce::get_cuda_func_attributes(); + cudaFuncAttributes attr = CudaParallelLaunch:: + get_cuda_func_attributes(internal_space_instance->m_cudaDev); m_team_size = m_team_size >= 0 ? m_team_size @@ -935,6 +965,8 @@ class ParallelReduce bad team size")); } - if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { + if (maxShmemPerBlock < shmem_size_total) { Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::ParallelReduce< Cuda > requested too much " "L0 scratch memory")); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp index 7ccedbfe28d..3037c4ab541 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp @@ -103,7 +103,7 @@ template __device__ bool cuda_inter_block_reduction( typename FunctorType::reference_type value, typename FunctorType::reference_type neutral, const FunctorType& reducer, - Cuda::size_type* const m_scratch_space, + typename FunctorType::pointer_type const m_scratch_space, typename FunctorType::pointer_type const /*result*/, Cuda::size_type* const m_scratch_flags, const int max_active_thread = blockDim.y) { @@ -117,7 +117,7 @@ __device__ bool cuda_inter_block_reduction( // One thread in the block writes block result to global scratch_memory if (id == 0) { - pointer_type global = ((pointer_type)m_scratch_space) + blockIdx.x; + pointer_type global = m_scratch_space + blockIdx.x; *global = value; } @@ -140,7 +140,7 @@ __device__ bool cuda_inter_block_reduction( last_block = true; value = neutral; - pointer_type const volatile global = (pointer_type)m_scratch_space; + pointer_type const volatile global = m_scratch_space; // Reduce all global values with splitting work over threads in one warp const int step_size = @@ -702,8 +702,7 @@ inline void check_reduced_view_shmem_size(const Policy& policy, unsigned reqShmemSize = cuda_single_inter_block_reduce_scan_shmem( functor, minBlockSize); - size_t maxShmemPerBlock = - policy.space().impl_internal_space_instance()->m_maxShmemPerBlock; + size_t maxShmemPerBlock = policy.space().cuda_device_prop().sharedMemPerBlock; if (reqShmemSize > maxShmemPerBlock) { Kokkos::Impl::throw_runtime_exception( diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp index baff7ef3f55..86d6d91bbee 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp @@ -84,8 +84,8 @@ class TaskQueueSpecialization> { KOKKOS_INLINE_FUNCTION static void iff_single_thread_recursive_execute(scheduler_type const&) {} - static int get_max_team_count(execution_space const&) { - return Kokkos::Impl::cuda_internal_multiprocessor_count() * warps_per_block; + static int get_max_team_count(execution_space const& space) { + return space.cuda_device_prop().multiProcessorCount * warps_per_block; } __device__ static void driver(scheduler_type scheduler, @@ -225,7 +225,11 @@ class TaskQueueSpecialization> { // FIXME_CUDA_MULTIPLE_DEVICES static void execute(scheduler_type const& scheduler) { const int shared_per_warp = 2048; - const dim3 grid(Kokkos::Impl::cuda_internal_multiprocessor_count(), 1, 1); + const Kokkos::Cuda& exec = scheduler.get_execution_space(); + const auto& impl_instance = exec.impl_internal_space_instance(); + const int multi_processor_count = + exec.cuda_device_prop().multiProcessorCount; + const dim3 grid(multi_processor_count, 1, 1); const dim3 block(1, Kokkos::Impl::CudaTraits::WarpSize, warps_per_block); const int shared_total = shared_per_warp * warps_per_block; const cudaStream_t stream = nullptr; @@ -245,34 +249,30 @@ class TaskQueueSpecialization> { // Query the stack size, in bytes: size_t previous_stack_size = 0; - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_get_limit_wrapper( - &previous_stack_size, cudaLimitStackSize))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_get_limit_wrapper( + &previous_stack_size, cudaLimitStackSize)); // If not large enough then set the stack size, in bytes: const size_t larger_stack_size = 1 << 11; if (previous_stack_size < larger_stack_size) { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_set_limit_wrapper( - cudaLimitStackSize, larger_stack_size))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_set_limit_wrapper( + cudaLimitStackSize, larger_stack_size)); } cuda_task_queue_execute<<>>( scheduler, shared_per_warp); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_last_error_wrapper())); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetLastError()); Impl::cuda_device_synchronize( "Kokkos::Impl::TaskQueueSpecialization::execute: Post Task Execution"); if (previous_stack_size < larger_stack_size) { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_set_limit_wrapper( - cudaLimitStackSize, previous_stack_size))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_set_limit_wrapper( + cudaLimitStackSize, previous_stack_size)); } } @@ -300,8 +300,8 @@ class TaskQueueSpecialization> { set_cuda_task_base_apply_function_pointer <<<1, 1>>>(ptr_ptr, dtor_ptr); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_last_error_wrapper())); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetLastError()); + Impl::cuda_device_synchronize( "Kokkos::Impl::TaskQueueSpecialization::execute: Post Get Function Pointer for Tasks"); @@ -466,7 +466,13 @@ class TaskQueueSpecializationConstrained< static void execute(scheduler_type const& scheduler) { const int shared_per_warp = 2048; const int warps_per_block = 4; - const dim3 grid(Kokkos::Impl::cuda_internal_multiprocessor_count(), 1, 1); + const Kokkos::Cuda exec = Cuda(); // FIXME_CUDA_MULTIPLE_DEVICES + const auto& impl_instance = exec.impl_internal_space_instance(); + const int multi_processor_count = + // FIXME not sure why this didn't work + // exec.cuda_device_prop().multiProcessorCount; + impl_instance->m_deviceProp.multiProcessorCount; + const dim3 grid(multi_processor_count, 1, 1); // const dim3 grid( 1 , 1 , 1 ); const dim3 block(1, Kokkos::Impl::CudaTraits::WarpSize, warps_per_block); const int shared_total = shared_per_warp * warps_per_block; @@ -482,34 +488,30 @@ class TaskQueueSpecializationConstrained< // Query the stack size, in bytes: size_t previous_stack_size = 0; - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_get_limit_wrapper( - &previous_stack_size, cudaLimitStackSize))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_get_limit_wrapper( + &previous_stack_size, cudaLimitStackSize)); // If not large enough then set the stack size, in bytes: const size_t larger_stack_size = 2048; if (previous_stack_size < larger_stack_size) { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_set_limit_wrapper( - cudaLimitStackSize, larger_stack_size))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_set_limit_wrapper( + cudaLimitStackSize, larger_stack_size)); } cuda_task_queue_execute<<>>( scheduler, shared_per_warp); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_last_error_wrapper())); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetLastError()); Impl::cuda_device_synchronize( "Kokkos::Impl::TaskQueueSpecializationConstrained::execute: Post Execute Task"); if (previous_stack_size < larger_stack_size) { - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_device_set_limit_wrapper( - cudaLimitStackSize, previous_stack_size))); + KOKKOS_IMPL_CUDA_SAFE_CALL(impl_instance->cuda_device_set_limit_wrapper( + cudaLimitStackSize, previous_stack_size)); } } @@ -532,8 +534,7 @@ class TaskQueueSpecializationConstrained< set_cuda_task_base_apply_function_pointer <<<1, 1>>>(ptr_ptr, dtor_ptr); - KOKKOS_IMPL_CUDA_SAFE_CALL( - (CudaInternal::singleton().cuda_get_last_error_wrapper())); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetLastError()); Impl::cuda_device_synchronize( "Kokkos::Impl::TaskQueueSpecializationConstrained::get_function_pointer: Post Get Function Pointer"); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp index abb747e39a1..94a428493f4 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp @@ -22,7 +22,6 @@ #include #include -#include namespace Kokkos { diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp index a945a716bc3..c7ea6988a5d 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp @@ -77,7 +77,9 @@ class ParallelFor, inline void execute() { const int warps_per_block = 4; - const dim3 grid(Kokkos::Impl::cuda_internal_multiprocessor_count(), 1, 1); + const int multi_processor_count = + m_policy.space().cuda_device_prop().multiProcessorCount; + const dim3 grid(multi_processor_count, 1, 1); const dim3 block(1, Kokkos::Impl::CudaTraits::WarpSize, warps_per_block); const int shared = 0; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ZeroMemset.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ZeroMemset.hpp index c7f0d12d914..517c592af72 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ZeroMemset.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ZeroMemset.hpp @@ -25,23 +25,14 @@ namespace Impl { template struct ZeroMemset> { - ZeroMemset(const Kokkos::Cuda& exec_space_instance, const View& dst, - typename View::const_value_type&) { + ZeroMemset(const Kokkos::Cuda& exec_space_instance, + const View& dst) { KOKKOS_IMPL_CUDA_SAFE_CALL( (exec_space_instance.impl_internal_space_instance() ->cuda_memset_async_wrapper( dst.data(), 0, dst.size() * sizeof(typename View::value_type)))); } - - ZeroMemset(const View& dst, - typename View::const_value_type&) { - // FIXME_CUDA_MULTIPLE_DEVICES - KOKKOS_IMPL_CUDA_SAFE_CALL( - (Kokkos::Impl::CudaInternal::singleton().cuda_memset_wrapper( - dst.data(), 0, - dst.size() * sizeof(typename View::value_type)))); - } }; } // namespace Impl diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP.cpp index f78bfd28b2f..309e07fb3fb 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP.cpp @@ -18,6 +18,7 @@ #define KOKKOS_IMPL_PUBLIC_INCLUDE #endif +#include #include #include @@ -41,7 +42,9 @@ int HIP::impl_is_initialized() { } void HIP::impl_initialize(InitializationSettings const& settings) { - const int hip_device_id = Impl::get_gpu(settings); + const std::vector& visible_devices = Impl::get_visible_devices(); + const int hip_device_id = + Impl::get_gpu(settings).value_or(visible_devices[0]); Impl::HIPInternal::m_hipDev = hip_device_id; KOKKOS_IMPL_HIP_SAFE_CALL( @@ -89,10 +92,23 @@ void HIP::impl_initialize(InitializationSettings const& settings) { hipStream_t singleton_stream; KOKKOS_IMPL_HIP_SAFE_CALL(hipStreamCreate(&singleton_stream)); - Impl::HIPInternal::singleton().initialize(singleton_stream, /*manage*/ true); + Impl::HIPInternal::singleton().initialize(singleton_stream); } -void HIP::impl_finalize() { Impl::HIPInternal::singleton().finalize(); } +void HIP::impl_finalize() { + (void)Impl::hip_global_unique_token_locks(true); + + desul::Impl::finalize_lock_arrays(); // FIXME + + KOKKOS_IMPL_HIP_SAFE_CALL( + hipEventDestroy(Impl::HIPInternal::constantMemReusable)); + KOKKOS_IMPL_HIP_SAFE_CALL( + hipHostFree(Impl::HIPInternal::constantMemHostStaging)); + + Impl::HIPInternal::singleton().finalize(); + KOKKOS_IMPL_HIP_SAFE_CALL( + hipStreamDestroy(Impl::HIPInternal::singleton().m_stream)); +} HIP::HIP() : m_space_instance(&Impl::HIPInternal::singleton(), @@ -102,13 +118,17 @@ HIP::HIP() } HIP::HIP(hipStream_t const stream, Impl::ManageStream manage_stream) - : m_space_instance(new Impl::HIPInternal, [](Impl::HIPInternal* ptr) { - ptr->finalize(); - delete ptr; - }) { + : m_space_instance( + new Impl::HIPInternal, [manage_stream](Impl::HIPInternal* ptr) { + ptr->finalize(); + if (static_cast(manage_stream)) { + KOKKOS_IMPL_HIP_SAFE_CALL(hipStreamDestroy(ptr->m_stream)); + } + delete ptr; + }) { Impl::HIPInternal::singleton().verify_is_initialized( "HIP instance constructor"); - m_space_instance->initialize(stream, static_cast(manage_stream)); + m_space_instance->initialize(stream); } KOKKOS_DEPRECATED HIP::HIP(hipStream_t const stream, bool manage_stream) diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP.hpp index 61ed346b218..3a88e97ee3d 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP.hpp @@ -57,13 +57,15 @@ class HIP { //! \name Functions that all Kokkos devices must implement. //@{ - KOKKOS_INLINE_FUNCTION static int in_parallel() { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED KOKKOS_INLINE_FUNCTION static int in_parallel() { #if defined(__HIP_DEVICE_COMPILE__) return true; #else return false; #endif } +#endif /** \brief Wait until all dispatched functors complete. * @@ -94,9 +96,13 @@ class HIP { static int impl_is_initialized(); - // static size_type device_arch(); - - static size_type detect_device_count(); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED static size_type detect_device_count() { + int count; + KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceCount(&count)); + return count; + } +#endif #ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 static int concurrency(); diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_GraphNodeKernel.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_GraphNodeKernel.hpp index 576c53426bc..5f0df72df17 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_GraphNodeKernel.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_GraphNodeKernel.hpp @@ -20,13 +20,11 @@ #include #include -#include #include #include #include -#include #include namespace Kokkos { @@ -43,7 +41,6 @@ class GraphNodeKernelImpl using base_t = typename PatternImplSpecializationFromTag::type; - using Record = Kokkos::Impl::SharedAllocationRecord; // TODO use the name and executionspace template @@ -60,7 +57,7 @@ class GraphNodeKernelImpl ~GraphNodeKernelImpl() { if (m_driver_storage) { - Record::decrement(Record::get_record(m_driver_storage)); + Kokkos::HIPSpace().deallocate(m_driver_storage, sizeof(base_t)); } } @@ -78,15 +75,9 @@ class GraphNodeKernelImpl Kokkos::ObservingRawPtr allocate_driver_memory_buffer() const { KOKKOS_EXPECTS(m_driver_storage == nullptr); - - auto* record = Record::allocate( - Kokkos::HIPSpace{}, "GraphNodeKernel global memory functor storage", - sizeof(base_t)); - - Record::increment(record); - m_driver_storage = reinterpret_cast(record->data()); + m_driver_storage = static_cast(Kokkos::HIPSpace().allocate( + "GraphNodeKernel global memory functor storage", sizeof(base_t))); KOKKOS_ENSURES(m_driver_storage != nullptr); - return m_driver_storage; } diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Graph_Impl.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Graph_Impl.hpp index 3bde15444c7..7cc06d02fbe 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Graph_Impl.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Graph_Impl.hpp @@ -83,7 +83,7 @@ class GraphImpl { hipGraphExec_t m_graph_exec = nullptr; }; -GraphImpl::~GraphImpl() { +inline GraphImpl::~GraphImpl() { m_execution_space.fence("Kokkos::GraphImpl::~GraphImpl: Graph Destruction"); KOKKOS_EXPECTS(m_graph); if (m_graph_exec) { @@ -92,12 +92,12 @@ GraphImpl::~GraphImpl() { KOKKOS_IMPL_HIP_SAFE_CALL(hipGraphDestroy(m_graph)); } -GraphImpl::GraphImpl(Kokkos::HIP instance) +inline GraphImpl::GraphImpl(Kokkos::HIP instance) : m_execution_space(std::move(instance)) { KOKKOS_IMPL_HIP_SAFE_CALL(hipGraphCreate(&m_graph, 0)); } -void GraphImpl::add_node( +inline void GraphImpl::add_node( std::shared_ptr const& arg_node_ptr) { // All of the predecessors are just added as normal, so all we need to // do here is add an empty node @@ -110,7 +110,7 @@ void GraphImpl::add_node( // Requires NodeImplPtr is a shared_ptr to specialization of GraphNodeImpl // Also requires that the kernel has the graph node tag in it's policy template -void GraphImpl::add_node( +inline void GraphImpl::add_node( std::shared_ptr const& arg_node_ptr) { static_assert(NodeImpl::kernel_type::Policy::is_graph_kernel::value); KOKKOS_EXPECTS(arg_node_ptr); @@ -129,8 +129,8 @@ void GraphImpl::add_node( // already been added to this graph and NodeImpl is a specialization of // GraphNodeImpl that has already been added to this graph. template -void GraphImpl::add_predecessor(NodeImplPtr arg_node_ptr, - PredecessorRef arg_pred_ref) { +inline void GraphImpl::add_predecessor( + NodeImplPtr arg_node_ptr, PredecessorRef arg_pred_ref) { KOKKOS_EXPECTS(arg_node_ptr); auto pred_ptr = GraphAccess::get_node_ptr(arg_pred_ref); KOKKOS_EXPECTS(pred_ptr); @@ -145,7 +145,7 @@ void GraphImpl::add_predecessor(NodeImplPtr arg_node_ptr, hipGraphAddDependencies(m_graph, &pred_node, &node, 1)); } -void GraphImpl::submit() { +inline void GraphImpl::submit() { if (!m_graph_exec) { instantiate_graph(); } @@ -153,12 +153,12 @@ void GraphImpl::submit() { hipGraphLaunch(m_graph_exec, m_execution_space.hip_stream())); } -Kokkos::HIP const& GraphImpl::get_execution_space() const +inline Kokkos::HIP const& GraphImpl::get_execution_space() const noexcept { return m_execution_space; } -auto GraphImpl::create_root_node_ptr() { +inline auto GraphImpl::create_root_node_ptr() { KOKKOS_EXPECTS(m_graph); KOKKOS_EXPECTS(!m_graph_exec); auto rv = std::make_shared(get_execution_space(), @@ -172,7 +172,7 @@ auto GraphImpl::create_root_node_ptr() { } template -auto GraphImpl::create_aggregate_ptr(PredecessorRefs&&...) { +inline auto GraphImpl::create_aggregate_ptr(PredecessorRefs&&...) { // The attachment to predecessors, which is all we really need, happens // in the generic layer, which calls through to add_predecessor for // each predecessor ref, so all we need to do here is create the (trivial) diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp index 7f04eb721cb..22c0db047f6 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include /*--------------------------------------------------------------------------*/ @@ -89,10 +90,14 @@ void HIPInternal::print_configuration(std::ostream &s) const { << '\n'; #endif - int hipDevCount; - KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceCount(&hipDevCount)); + s << "macro KOKKOS_ENABLE_ROCTHRUST : " +#if defined(KOKKOS_ENABLE_ROCTHRUST) + << "defined\n"; +#else + << "undefined\n"; +#endif - for (int i = 0; i < hipDevCount; ++i) { + for (int i : get_visible_devices()) { hipDeviceProp_t hipProp; KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceProperties(&hipProp, i)); std::string gpu_type = hipProp.integrated == 1 ? "APU" : "dGPU"; @@ -159,14 +164,13 @@ void HIPInternal::fence(const std::string &name) const { [&]() { KOKKOS_IMPL_HIP_SAFE_CALL(hipStreamSynchronize(m_stream)); }); } -void HIPInternal::initialize(hipStream_t stream, bool manage_stream) { +void HIPInternal::initialize(hipStream_t stream) { KOKKOS_EXPECTS(!is_initialized()); if (was_finalized) Kokkos::abort("Calling HIP::initialize after HIP::finalize is illegal\n"); - m_stream = stream; - m_manage_stream = manage_stream; + m_stream = stream; //---------------------------------- // Multiblock reduction uses scratch flags for counters @@ -192,20 +196,19 @@ void HIPInternal::initialize(hipStream_t stream, bool manage_stream) { Kokkos::HIP::size_type *HIPInternal::scratch_space(const std::size_t size) { if (verify_is_initialized("scratch_space") && m_scratchSpaceCount < scratch_count(size)) { - m_scratchSpaceCount = scratch_count(size); + Kokkos::HIPSpace mem_space; - using Record = Kokkos::Impl::SharedAllocationRecord; + if (m_scratchSpace) { + mem_space.deallocate(m_scratchSpace, + m_scratchSpaceCount * sizeScratchGrain); + } - if (m_scratchSpace) Record::decrement(Record::get_record(m_scratchSpace)); + m_scratchSpaceCount = scratch_count(size); std::size_t alloc_size = multiply_overflow_abort(m_scratchSpaceCount, sizeScratchGrain); - Record *const r = Record::allocate( - Kokkos::HIPSpace(), "Kokkos::InternalScratchSpace", alloc_size); - - Record::increment(r); - - m_scratchSpace = reinterpret_cast(r->data()); + m_scratchSpace = static_cast( + mem_space.allocate("Kokkos::InternalScratchSpace", alloc_size)); } return m_scratchSpace; @@ -214,21 +217,23 @@ Kokkos::HIP::size_type *HIPInternal::scratch_space(const std::size_t size) { Kokkos::HIP::size_type *HIPInternal::scratch_flags(const std::size_t size) { if (verify_is_initialized("scratch_flags") && m_scratchFlagsCount < scratch_count(size)) { - m_scratchFlagsCount = scratch_count(size); + Kokkos::HIPSpace mem_space; - using Record = Kokkos::Impl::SharedAllocationRecord; + if (m_scratchFlags) { + mem_space.deallocate(m_scratchFlags, + m_scratchFlagsCount * sizeScratchGrain); + } - if (m_scratchFlags) Record::decrement(Record::get_record(m_scratchFlags)); + m_scratchFlagsCount = scratch_count(size); std::size_t alloc_size = multiply_overflow_abort(m_scratchFlagsCount, sizeScratchGrain); - Record *const r = Record::allocate( - Kokkos::HIPSpace(), "Kokkos::InternalScratchFlags", alloc_size); - - Record::increment(r); - - m_scratchFlags = reinterpret_cast(r->data()); + m_scratchFlags = static_cast( + mem_space.allocate("Kokkos::InternalScratchFlags", alloc_size)); + // We only zero-initialize the allocation when we actually allocate. + // It's the responsibility of the features using scratch_flags, + // namely parallel_reduce and parallel_scan, to reset the used values to 0. KOKKOS_IMPL_HIP_SAFE_CALL(hipMemset(m_scratchFlags, 0, alloc_size)); } @@ -238,29 +243,20 @@ Kokkos::HIP::size_type *HIPInternal::scratch_flags(const std::size_t size) { Kokkos::HIP::size_type *HIPInternal::stage_functor_for_execution( void const *driver, std::size_t const size) const { if (verify_is_initialized("scratch_functor") && m_scratchFunctorSize < size) { - m_scratchFunctorSize = size; - - using Record = Kokkos::Impl::SharedAllocationRecord; - using RecordHost = - Kokkos::Impl::SharedAllocationRecord; + Kokkos::HIPSpace device_mem_space; + Kokkos::HIPHostPinnedSpace host_mem_space; if (m_scratchFunctor) { - Record::decrement(Record::get_record(m_scratchFunctor)); - RecordHost::decrement(RecordHost::get_record(m_scratchFunctorHost)); + device_mem_space.deallocate(m_scratchFunctor, m_scratchFunctorSize); + host_mem_space.deallocate(m_scratchFunctorHost, m_scratchFunctorSize); } - Record *const r = - Record::allocate(Kokkos::HIPSpace(), "Kokkos::InternalScratchFunctor", - m_scratchFunctorSize); - RecordHost *const r_host = RecordHost::allocate( - Kokkos::HIPHostPinnedSpace(), "Kokkos::InternalScratchFunctorHost", - m_scratchFunctorSize); - - Record::increment(r); - RecordHost::increment(r_host); + m_scratchFunctorSize = size; - m_scratchFunctor = reinterpret_cast(r->data()); - m_scratchFunctorHost = reinterpret_cast(r_host->data()); + m_scratchFunctor = static_cast(device_mem_space.allocate( + "Kokkos::InternalScratchFunctor", m_scratchFunctorSize)); + m_scratchFunctorHost = static_cast(host_mem_space.allocate( + "Kokkos::InternalScratchFunctorHost", m_scratchFunctorSize)); } // When using HSA_XNACK=1, it is necessary to copy the driver to the host to @@ -323,23 +319,18 @@ void HIPInternal::finalize() { this->fence("Kokkos::HIPInternal::finalize: fence on finalization"); was_finalized = true; - if (this == &singleton()) { - (void)Kokkos::Impl::hip_global_unique_token_locks(true); - desul::Impl::finalize_lock_arrays(); // FIXME - - KOKKOS_IMPL_HIP_SAFE_CALL(hipHostFree(constantMemHostStaging)); - KOKKOS_IMPL_HIP_SAFE_CALL(hipEventDestroy(constantMemReusable)); - } - if (nullptr != m_scratchSpace || nullptr != m_scratchFlags) { - using RecordHIP = Kokkos::Impl::SharedAllocationRecord; + Kokkos::HIPSpace device_mem_space; - RecordHIP::decrement(RecordHIP::get_record(m_scratchFlags)); - RecordHIP::decrement(RecordHIP::get_record(m_scratchSpace)); + device_mem_space.deallocate(m_scratchFlags, + m_scratchSpaceCount * sizeScratchGrain); + device_mem_space.deallocate(m_scratchSpace, + m_scratchFlagsCount * sizeScratchGrain); if (m_scratchFunctorSize > 0) { - RecordHIP::decrement(RecordHIP::get_record(m_scratchFunctor)); - RecordHIP::decrement(RecordHIP::get_record(m_scratchFunctorHost)); + device_mem_space.deallocate(m_scratchFunctor, m_scratchFunctorSize); + Kokkos::HIPHostPinnedSpace host_mem_space; + host_mem_space.deallocate(m_scratchFunctorHost, m_scratchFunctorSize); } } @@ -348,14 +339,10 @@ void HIPInternal::finalize() { Kokkos::kokkos_free(m_team_scratch_ptr[i]); } - if (m_manage_stream && m_stream != nullptr) - KOKKOS_IMPL_HIP_SAFE_CALL(hipStreamDestroy(m_stream)); - m_scratchSpaceCount = 0; m_scratchFlagsCount = 0; m_scratchSpace = nullptr; m_scratchFlags = nullptr; - m_stream = nullptr; for (int i = 0; i < m_n_team_scratch; ++i) { m_team_scratch_current_size[i] = 0; m_team_scratch_ptr[i] = nullptr; @@ -419,13 +406,3 @@ void Kokkos::Impl::create_HIP_instances(std::vector &instances) { instances[s] = HIP(stream, ManageStream::yes); } } - -//---------------------------------------------------------------------------- - -namespace Kokkos { -HIP::size_type HIP::detect_device_count() { - int hipDevCount; - KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceCount(&hipDevCount)); - return hipDevCount; -} -} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp index ef140ec46c0..142008124af 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp @@ -30,7 +30,8 @@ namespace Impl { struct HIPTraits { #if defined(KOKKOS_ARCH_AMD_GFX906) || defined(KOKKOS_ARCH_AMD_GFX908) || \ - defined(KOKKOS_ARCH_AMD_GFX90A) || defined(KOKKOS_ARCH_AMD_GFX942) + defined(KOKKOS_ARCH_AMD_GFX90A) || defined(KOKKOS_ARCH_AMD_GFX940) || \ + defined(KOKKOS_ARCH_AMD_GFX942) static constexpr int WarpSize = 64; static constexpr int WarpIndexMask = 0x003f; /* hexadecimal for 63 */ static constexpr int WarpIndexShift = 6; /* WarpSize == 1 << WarpShift*/ @@ -97,7 +98,6 @@ class HIPInternal { uint32_t m_instance_id = Kokkos::Tools::Experimental::Impl::idForInstance( reinterpret_cast(this)); - bool m_manage_stream = false; // Team Scratch Level 1 Space int m_n_team_scratch = 10; @@ -123,7 +123,7 @@ class HIPInternal { return nullptr != m_scratchSpace && nullptr != m_scratchFlags; } - void initialize(hipStream_t stream, bool manage_stream); + void initialize(hipStream_t stream); void finalize(); void print_configuration(std::ostream &) const; diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_MDRange.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_MDRange.hpp new file mode 100644 index 00000000000..db07c360b5c --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_MDRange.hpp @@ -0,0 +1,173 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_PARALLEL_FOR_MDRANGE_HPP +#define KOKKOS_HIP_PARALLEL_FOR_MDRANGE_HPP + +#include + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +// ParallelFor +template +class ParallelFor, HIP> { + public: + using Policy = Kokkos::MDRangePolicy; + using functor_type = FunctorType; + + private: + using array_index_type = typename Policy::array_index_type; + using index_type = typename Policy::index_type; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + public: + ParallelFor() = delete; + ParallelFor(ParallelFor const&) = default; + ParallelFor& operator=(ParallelFor const&) = delete; + + inline __device__ void operator()() const { + Kokkos::Impl::DeviceIterateTile(m_policy, + m_functor) + .exec_range(); + } + + inline void execute() const { + using ClosureType = ParallelFor; + if (m_policy.m_num_tiles == 0) return; + auto const maxblocks = hip_internal_maximum_grid_count(); + if (Policy::rank == 2) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], 1); + dim3 const grid( + std::min( + (m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks[0]), + std::min( + (m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks[1]), + 1); + hip_parallel_launch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 3) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], + m_policy.m_tile[2]); + dim3 const grid( + std::min( + (m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks[0]), + std::min( + (m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks[1]), + std::min( + (m_policy.m_upper[2] - m_policy.m_lower[2] + block.z - 1) / + block.z, + maxblocks[2])); + hip_parallel_launch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 4) { + // id0,id1 encoded within threadIdx.x; id2 to threadIdx.y; id3 to + // threadIdx.z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2], m_policy.m_tile[3]); + dim3 const grid( + std::min( + m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), + std::min( + (m_policy.m_upper[2] - m_policy.m_lower[2] + block.y - 1) / + block.y, + maxblocks[1]), + std::min( + (m_policy.m_upper[3] - m_policy.m_lower[3] + block.z - 1) / + block.z, + maxblocks[2])); + hip_parallel_launch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 5) { + // id0,id1 encoded within threadIdx.x; id2,id3 to threadIdx.y; id4 + // to threadIdx.z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4]); + dim3 const grid( + std::min( + m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), + std::min( + m_policy.m_tile_end[2] * m_policy.m_tile_end[3], maxblocks[1]), + std::min( + (m_policy.m_upper[4] - m_policy.m_lower[4] + block.z - 1) / + block.z, + maxblocks[2])); + hip_parallel_launch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 6) { + // id0,id1 encoded within threadIdx.x; id2,id3 to threadIdx.y; + // id4,id5 to threadIdx.z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4] * m_policy.m_tile[5]); + dim3 const grid( + std::min( + m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), + std::min( + m_policy.m_tile_end[2] * m_policy.m_tile_end[3], maxblocks[1]), + std::min( + m_policy.m_tile_end[4] * m_policy.m_tile_end[5], maxblocks[2])); + hip_parallel_launch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else { + Kokkos::abort("Kokkos::MDRange Error: Exceeded rank bounds with HIP\n"); + } + + } // end execute + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} + + template + static int max_tile_size_product(const Policy&, const Functor&) { + using closure_type = + ParallelFor, HIP>; + unsigned block_size = hip_get_max_blocksize(); + if (block_size == 0) + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelFor< HIP > could not find a valid " + "tile size.")); + return block_size; + } +}; + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Range.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Range.hpp new file mode 100644 index 00000000000..9355c1c75fb --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Range.hpp @@ -0,0 +1,100 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_PARALLEL_FOR_RANGE_HPP +#define KOKKOS_HIP_PARALLEL_FOR_RANGE_HPP + +#include + +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, Kokkos::HIP> { + public: + using Policy = Kokkos::RangePolicy; + + private: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + template + inline __device__ std::enable_if_t::value> exec_range( + const Member i) const { + m_functor(i); + } + + template + inline __device__ std::enable_if_t::value> exec_range( + const Member i) const { + m_functor(TagType(), i); + } + + public: + using functor_type = FunctorType; + + ParallelFor() = delete; + ParallelFor(ParallelFor const&) = default; + ParallelFor& operator=(ParallelFor const&) = delete; + + inline __device__ void operator()() const { + const Member work_stride = blockDim.y * gridDim.x; + const Member work_end = m_policy.end(); + + for (Member iwork = + m_policy.begin() + threadIdx.y + blockDim.y * blockIdx.x; + iwork < work_end; + iwork = iwork < work_end - work_stride ? iwork + work_stride + : work_end) { + this->template exec_range(iwork); + } + } + + inline void execute() const { + const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); + + using DriverType = ParallelFor; + const int block_size = + Kokkos::Impl::hip_get_preferred_blocksize(); + const dim3 block(1, block_size, 1); + const dim3 grid( + typename Policy::index_type((nwork + block.y - 1) / block.y), 1, 1); + + if (block_size == 0) { + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelFor< HIP > could not find a " + "valid execution configuration.")); + } + Kokkos::Impl::hip_parallel_launch( + *this, grid, block, 0, m_policy.space().impl_internal_space_instance(), + false); + } + + ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Team.hpp new file mode 100644 index 00000000000..bf0c2193383 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelFor_Team.hpp @@ -0,0 +1,177 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_PARALLEL_FOR_TEAM_HPP +#define KOKKOS_HIP_PARALLEL_FOR_TEAM_HPP + +#include + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, HIP> { + public: + using Policy = TeamPolicy; + using functor_type = FunctorType; + using size_type = HIP::size_type; + + private: + using member_type = typename Policy::member_type; + using work_tag = typename Policy::work_tag; + using launch_bounds = typename Policy::launch_bounds; + + // Algorithmic constraints: blockDim.y is a power of two AND + // blockDim.y == blockDim.z == 1 shared memory utilization: + // + // [ team reduce space ] + // [ team shared space ] + + FunctorType const m_functor; + Policy const m_policy; + size_type const m_league_size; + int m_team_size; + size_type const m_vector_size; + int m_shmem_begin; + int m_shmem_size; + void* m_scratch_ptr[2]; + size_t m_scratch_size[2]; + int m_scratch_pool_id = -1; + int32_t* m_scratch_locks; + size_t m_num_scratch_locks; + + template + __device__ inline std::enable_if_t::value> exec_team( + const member_type& member) const { + m_functor(member); + } + + template + __device__ inline std::enable_if_t::value> exec_team( + const member_type& member) const { + m_functor(TagType(), member); + } + + public: + ParallelFor() = delete; + ParallelFor(ParallelFor const&) = default; + ParallelFor& operator=(ParallelFor const&) = delete; + + __device__ inline void operator()() const { + // Iterate this block through the league + int64_t threadid = 0; + if (m_scratch_size[1] > 0) { + threadid = hip_get_scratch_index(m_league_size, m_scratch_locks, + m_num_scratch_locks); + } + + int const int_league_size = static_cast(m_league_size); + for (int league_rank = blockIdx.x; league_rank < int_league_size; + league_rank += gridDim.x) { + this->template exec_team(typename Policy::member_type( + kokkos_impl_hip_shared_memory(), m_shmem_begin, m_shmem_size, + static_cast(static_cast(m_scratch_ptr[1]) + + ptrdiff_t(threadid / (blockDim.x * blockDim.y)) * + m_scratch_size[1]), + m_scratch_size[1], league_rank, m_league_size)); + } + if (m_scratch_size[1] > 0) { + hip_release_scratch_index(m_scratch_locks, threadid); + } + } + + inline void execute() const { + int64_t const shmem_size_total = m_shmem_begin + m_shmem_size; + dim3 const grid(static_cast(m_league_size), 1, 1); + dim3 const block(static_cast(m_vector_size), + static_cast(m_team_size), 1); + + using closure_type = + ParallelFor, HIP>; + Impl::hip_parallel_launch( + *this, grid, block, shmem_size_total, + m_policy.space().impl_internal_space_instance(), + true); // copy to device and execute + } + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), + m_policy(arg_policy), + m_league_size(arg_policy.league_size()), + m_team_size(arg_policy.team_size()), + m_vector_size(arg_policy.impl_vector_length()) { + auto internal_space_instance = + m_policy.space().impl_internal_space_instance(); + m_team_size = m_team_size >= 0 ? m_team_size + : arg_policy.team_size_recommended( + arg_functor, ParallelForTag()); + + m_shmem_begin = (sizeof(double) * (m_team_size + 2)); + m_shmem_size = + (m_policy.scratch_size(0, m_team_size) + + FunctorTeamShmemSize::value(m_functor, m_team_size)); + m_scratch_size[0] = m_policy.scratch_size(0, m_team_size); + m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); + m_scratch_locks = internal_space_instance->m_scratch_locks; + m_num_scratch_locks = internal_space_instance->m_num_scratch_locks; + + // Functor's reduce memory, team scan memory, and team shared memory depend + // upon team size. + m_scratch_ptr[0] = nullptr; + if (m_team_size <= 0) { + m_scratch_ptr[1] = nullptr; + } else { + m_scratch_pool_id = internal_space_instance->acquire_team_scratch_space(); + m_scratch_ptr[1] = internal_space_instance->resize_team_scratch_space( + m_scratch_pool_id, + static_cast(m_scratch_size[1]) * + (std::min( + static_cast(HIP().concurrency() / + (m_team_size * m_vector_size)), + static_cast(m_league_size)))); + } + + int const shmem_size_total = m_shmem_begin + m_shmem_size; + if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::ParallelFor< HIP > insufficient shared memory")); + } + + size_t max_size = arg_policy.team_size_max(arg_functor, ParallelForTag()); + if (static_cast(m_team_size) > static_cast(max_size)) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::ParallelFor< HIP > requested too large team size.")); + } + } + + ~ParallelFor() { + if (m_scratch_pool_id >= 0) { + m_policy.space() + .impl_internal_space_instance() + ->release_team_scratch_space(m_scratch_pool_id); + } + } +}; + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_MDRange.hpp similarity index 61% rename from lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp rename to lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_MDRange.hpp index 0fa325cb12c..55b6218d1c8 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_MDRange.hpp @@ -14,157 +14,19 @@ // //@HEADER -#ifndef KOKKOS_HIP_PARALLEL_MDRANGE_HPP -#define KOKKOS_HIP_PARALLEL_MDRANGE_HPP +#ifndef KOKKOS_HIP_PARALLEL_REDUCE_MDRANGE_HPP +#define KOKKOS_HIP_PARALLEL_REDUCE_MDRANGE_HPP + +#include #include #include #include #include #include -#include namespace Kokkos { namespace Impl { -// ParallelFor -template -class ParallelFor, HIP> { - public: - using Policy = Kokkos::MDRangePolicy; - using functor_type = FunctorType; - - private: - using array_index_type = typename Policy::array_index_type; - using index_type = typename Policy::index_type; - using LaunchBounds = typename Policy::launch_bounds; - - const FunctorType m_functor; - const Policy m_policy; - - public: - ParallelFor() = delete; - ParallelFor(ParallelFor const&) = default; - ParallelFor& operator=(ParallelFor const&) = delete; - - inline __device__ void operator()() const { - Kokkos::Impl::DeviceIterateTile(m_policy, - m_functor) - .exec_range(); - } - - inline void execute() const { - using ClosureType = ParallelFor; - if (m_policy.m_num_tiles == 0) return; - auto const maxblocks = hip_internal_maximum_grid_count(); - if (Policy::rank == 2) { - dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], 1); - dim3 const grid( - std::min( - (m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / - block.x, - maxblocks[0]), - std::min( - (m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / - block.y, - maxblocks[1]), - 1); - hip_parallel_launch( - *this, grid, block, 0, - m_policy.space().impl_internal_space_instance(), false); - } else if (Policy::rank == 3) { - dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], - m_policy.m_tile[2]); - dim3 const grid( - std::min( - (m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / - block.x, - maxblocks[0]), - std::min( - (m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / - block.y, - maxblocks[1]), - std::min( - (m_policy.m_upper[2] - m_policy.m_lower[2] + block.z - 1) / - block.z, - maxblocks[2])); - hip_parallel_launch( - *this, grid, block, 0, - m_policy.space().impl_internal_space_instance(), false); - } else if (Policy::rank == 4) { - // id0,id1 encoded within threadIdx.x; id2 to threadIdx.y; id3 to - // threadIdx.z - dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], - m_policy.m_tile[2], m_policy.m_tile[3]); - dim3 const grid( - std::min( - m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), - std::min( - (m_policy.m_upper[2] - m_policy.m_lower[2] + block.y - 1) / - block.y, - maxblocks[1]), - std::min( - (m_policy.m_upper[3] - m_policy.m_lower[3] + block.z - 1) / - block.z, - maxblocks[2])); - hip_parallel_launch( - *this, grid, block, 0, - m_policy.space().impl_internal_space_instance(), false); - } else if (Policy::rank == 5) { - // id0,id1 encoded within threadIdx.x; id2,id3 to threadIdx.y; id4 - // to threadIdx.z - dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], - m_policy.m_tile[2] * m_policy.m_tile[3], - m_policy.m_tile[4]); - dim3 const grid( - std::min( - m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), - std::min( - m_policy.m_tile_end[2] * m_policy.m_tile_end[3], maxblocks[1]), - std::min( - (m_policy.m_upper[4] - m_policy.m_lower[4] + block.z - 1) / - block.z, - maxblocks[2])); - hip_parallel_launch( - *this, grid, block, 0, - m_policy.space().impl_internal_space_instance(), false); - } else if (Policy::rank == 6) { - // id0,id1 encoded within threadIdx.x; id2,id3 to threadIdx.y; - // id4,id5 to threadIdx.z - dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], - m_policy.m_tile[2] * m_policy.m_tile[3], - m_policy.m_tile[4] * m_policy.m_tile[5]); - dim3 const grid( - std::min( - m_policy.m_tile_end[0] * m_policy.m_tile_end[1], maxblocks[0]), - std::min( - m_policy.m_tile_end[2] * m_policy.m_tile_end[3], maxblocks[1]), - std::min( - m_policy.m_tile_end[4] * m_policy.m_tile_end[5], maxblocks[2])); - hip_parallel_launch( - *this, grid, block, 0, - m_policy.space().impl_internal_space_instance(), false); - } else { - Kokkos::abort("Kokkos::MDRange Error: Exceeded rank bounds with HIP\n"); - } - - } // end execute - - ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} - - template - static int max_tile_size_product(const Policy&, const Functor&) { - using closure_type = - ParallelFor, HIP>; - unsigned block_size = hip_get_max_blocksize(); - if (block_size == 0) - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelFor< HIP > could not find a valid " - "tile size.")); - return block_size; - } -}; // ParallelReduce template diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Range.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Range.hpp new file mode 100644 index 00000000000..c8981866e8a --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Range.hpp @@ -0,0 +1,329 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_PARALLEL_REDUCE_RANGE_HPP +#define KOKKOS_HIP_PARALLEL_REDUCE_RANGE_HPP + +#include + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelReduce, + Kokkos::HIP> { + public: + using Policy = Kokkos::RangePolicy; + using FunctorType = typename CombinedFunctorReducerType::functor_type; + using ReducerType = typename CombinedFunctorReducerType::reducer_type; + + private: + using WorkRange = typename Policy::WorkRange; + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using LaunchBounds = typename Policy::launch_bounds; + + public: + using pointer_type = typename ReducerType::pointer_type; + using value_type = typename ReducerType::value_type; + using reference_type = typename ReducerType::reference_type; + using functor_type = FunctorType; + using reducer_type = ReducerType; + using size_type = Kokkos::HIP::size_type; + using index_type = typename Policy::index_type; + // Conditionally set word_size_type to int16_t or int8_t if value_type is + // smaller than int32_t (Kokkos::HIP::size_type) + // word_size_type is used to determine the word count, shared memory buffer + // size, and global memory buffer size before the scan is performed. + // Within the scan, the word count is recomputed based on word_size_type + // and when calculating indexes into the shared/global memory buffers for + // performing the scan, word_size_type is used again. + // For scalars > 4 bytes in size, indexing into shared/global memory relies + // on the block and grid dimensions to ensure that we index at the correct + // offset rather than at every 4 byte word; such that, when the join is + // performed, we have the correct data that was copied over in chunks of 4 + // bytes. + using word_size_type = std::conditional_t< + sizeof(value_type) < sizeof(size_type), + std::conditional_t, size_type>; + + // Algorithmic constraints: blockSize is a power of two AND blockDim.y == + // blockDim.z == 1 + + const CombinedFunctorReducerType m_functor_reducer; + const Policy m_policy; + const pointer_type m_result_ptr; + const bool m_result_ptr_device_accessible; + const bool m_result_ptr_host_accessible; + word_size_type* m_scratch_space = nullptr; + size_type* m_scratch_flags = nullptr; + + static constexpr bool UseShflReduction = false; + + private: + struct ShflReductionTag {}; + struct SHMEMReductionTag {}; + + // Make the exec_range calls call to Reduce::DeviceIterateTile + template + __device__ inline std::enable_if_t::value> exec_range( + const Member& i, reference_type update) const { + m_functor_reducer.get_functor()(i, update); + } + + template + __device__ inline std::enable_if_t::value> exec_range( + const Member& i, reference_type update) const { + m_functor_reducer.get_functor()(TagType(), i, update); + } + + public: + __device__ inline void operator()() const { + using ReductionTag = std::conditional_t; + run(ReductionTag{}); + } + + __device__ inline void run(SHMEMReductionTag) const { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + const integral_nonzero_constant + word_count(reducer.value_size() / sizeof(word_size_type)); + + { + reference_type value = reducer.init(reinterpret_cast( + ::Kokkos::kokkos_impl_hip_shared_memory() + + threadIdx.y * word_count.value)); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of + // work to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically + // equivalent. + + const WorkRange range(m_policy, blockIdx.x, gridDim.x); + + for (Member iwork = range.begin() + threadIdx.y, iwork_end = range.end(); + iwork < iwork_end; iwork += blockDim.y) { + this->template exec_range(iwork, value); + } + } + + // Reduce with final value at blockDim.y - 1 location. + // Shortcut for length zero reduction + bool do_final_reduction = m_policy.begin() == m_policy.end(); + if (!do_final_reduction) + do_final_reduction = hip_single_inter_block_reduce_scan( + reducer, blockIdx.x, gridDim.x, + ::Kokkos::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags); + if (do_final_reduction) { + // This is the final block with the final result at the final threads' + // location + + word_size_type* const shared = + ::Kokkos::kokkos_impl_hip_shared_memory() + + (blockDim.y - 1) * word_count.value; + word_size_type* const global = + m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (threadIdx.y == 0) { + reducer.final(reinterpret_cast(shared)); + } + + if (::Kokkos::Impl::HIPTraits::WarpSize < word_count.value) { + __syncthreads(); + } + + for (unsigned i = threadIdx.y; i < word_count.value; i += blockDim.y) { + global[i] = shared[i]; + } + } + } + + __device__ inline void run(ShflReductionTag) const { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + + value_type value; + reducer.init(&value); + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of work + // to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically equivalent. + + WorkRange const range(m_policy, blockIdx.x, gridDim.x); + + for (Member iwork = range.begin() + threadIdx.y, iwork_end = range.end(); + iwork < iwork_end; iwork += blockDim.y) { + this->template exec_range(iwork, value); + } + + pointer_type const result = reinterpret_cast(m_scratch_space); + + int max_active_thread = static_cast(range.end() - range.begin()) < + static_cast(blockDim.y) + ? range.end() - range.begin() + : blockDim.y; + + max_active_thread = + (max_active_thread == 0) ? blockDim.y : max_active_thread; + + value_type init; + reducer.init(&init); + if (m_policy.begin() == m_policy.end()) { + reducer.final(&value); + pointer_type const final_result = + m_result_ptr_device_accessible ? m_result_ptr : result; + *final_result = value; + } else if (Impl::hip_inter_block_shuffle_reduction<>( + value, init, reducer, m_scratch_space, result, + m_scratch_flags, max_active_thread)) { + unsigned int const id = threadIdx.y * blockDim.x + threadIdx.x; + if (id == 0) { + reducer.final(&value); + pointer_type const final_result = + m_result_ptr_device_accessible ? m_result_ptr : result; + *final_result = value; + } + } + } + + // Determine block size constrained by shared memory: + inline unsigned local_block_size(const FunctorType& f) { + const auto& instance = m_policy.space().impl_internal_space_instance(); + auto shmem_functor = [&f](unsigned n) { + return hip_single_inter_block_reduce_scan_shmem(f, n); + }; + return Kokkos::Impl::hip_get_preferred_blocksize( + instance, shmem_functor); + } + + inline void execute() { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + + const index_type nwork = m_policy.end() - m_policy.begin(); + const bool need_device_set = ReducerType::has_init_member_function() || + ReducerType::has_final_member_function() || + !m_result_ptr_host_accessible || + !std::is_same::value; + if ((nwork > 0) || need_device_set) { + const int block_size = local_block_size(m_functor_reducer.get_functor()); + if (block_size == 0) { + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelReduce< HIP > could not find a " + "valid execution configuration.")); + } + + // REQUIRED ( 1 , N , 1 ) + dim3 block(1, block_size, 1); + // use a slightly less constrained, but still well bounded limit for + // scratch + int nblocks = (nwork + block.y - 1) / block.y; + // Heuristic deciding the value of nblocks. + // The general idea here is we want to: + // 1. Not undersubscribe the device (i.e., we want at least + // preferred_block_min blocks) + // 2. Have each thread reduce > 1 value to minimize overheads + // 3. Limit the total # of blocks, to avoid unbounded scratch space + constexpr int block_max = 4096; + constexpr int preferred_block_min = 1024; + + if (nblocks < preferred_block_min) { + // keep blocks as is, already have low parallelism + } else if (nblocks > block_max) { + // "large dispatch" -> already have lots of parallelism + nblocks = block_max; + } else { + // in the intermediate range, try to have each thread process multiple + // items to offset the cost of the reduction (with not enough + // parallelism to hide it) + int items_per_thread = + (nwork + nblocks * block_size - 1) / (nblocks * block_size); + if (items_per_thread < 4) { + int ratio = std::min( + (nblocks + preferred_block_min - 1) / preferred_block_min, + (4 + items_per_thread - 1) / items_per_thread); + nblocks /= ratio; + } + } + + // TODO: down casting these uses more space than required? + m_scratch_space = + (word_size_type*)::Kokkos::Impl::hip_internal_scratch_space( + m_policy.space(), reducer.value_size() * nblocks); + // Intentionally do not downcast to word_size_type since we use HIP + // atomics in Kokkos_HIP_ReduceScan.hpp + m_scratch_flags = ::Kokkos::Impl::hip_internal_scratch_flags( + m_policy.space(), sizeof(size_type)); + // Required grid.x <= block.y + dim3 grid(nblocks, 1, 1); + + if (nwork == 0) { + block = dim3(1, 1, 1); + grid = dim3(1, 1, 1); + } + const int shmem = + UseShflReduction + ? 0 + : hip_single_inter_block_reduce_scan_shmem( + m_functor_reducer.get_functor(), block.y); + + Kokkos::Impl::hip_parallel_launch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + if (!m_result_ptr_device_accessible && m_result_ptr) { + const int size = reducer.value_size(); + DeepCopy(m_policy.space(), m_result_ptr, + m_scratch_space, size); + } + } else { + if (m_result_ptr) { + reducer.init(m_result_ptr); + } + } + } + + template + ParallelReduce(const CombinedFunctorReducerType& arg_functor_reducer, + const Policy& arg_policy, const ViewType& arg_result) + : m_functor_reducer(arg_functor_reducer), + m_policy(arg_policy), + m_result_ptr(arg_result.data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible), + m_result_ptr_host_accessible( + MemorySpaceAccess::accessible) {} +}; + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Team.hpp new file mode 100644 index 00000000000..609ba28b866 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelReduce_Team.hpp @@ -0,0 +1,394 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_PARALLEL_REDUCE_TEAM_HPP +#define KOKKOS_HIP_PARALLEL_REDUCE_TEAM_HPP + +#include + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelReduce, HIP> { + public: + using Policy = TeamPolicyInternal; + using FunctorType = typename CombinedFunctorReducerType::functor_type; + using ReducerType = typename CombinedFunctorReducerType::reducer_type; + + private: + using member_type = typename Policy::member_type; + using work_tag = typename Policy::work_tag; + using launch_bounds = typename Policy::launch_bounds; + + using pointer_type = typename ReducerType::pointer_type; + using reference_type = typename ReducerType::reference_type; + using value_type = typename ReducerType::value_type; + + public: + using functor_type = FunctorType; + using size_type = HIP::size_type; + + // static int constexpr UseShflReduction = false; + // FIXME_HIP This should be disabled unconditionally for best performance, but + // it currently causes tests to fail. + static constexpr int UseShflReduction = + (ReducerType::static_value_size() != 0); + + private: + struct ShflReductionTag {}; + struct SHMEMReductionTag {}; + + // Algorithmic constraints: blockDim.y is a power of two AND + // blockDim.y == blockDim.z == 1 shared memory utilization: + // + // [ global reduce space ] + // [ team reduce space ] + // [ team shared space ] + // + + const CombinedFunctorReducerType m_functor_reducer; + const Policy m_policy; + const pointer_type m_result_ptr; + const bool m_result_ptr_device_accessible; + const bool m_result_ptr_host_accessible; + size_type* m_scratch_space; + size_type* m_scratch_flags; + size_type m_team_begin; + size_type m_shmem_begin; + size_type m_shmem_size; + void* m_scratch_ptr[2]; + size_t m_scratch_size[2]; + int m_scratch_pool_id = -1; + int32_t* m_scratch_locks; + size_t m_num_scratch_locks; + const size_type m_league_size; + int m_team_size; + const size_type m_vector_size; + + template + __device__ inline std::enable_if_t::value> exec_team( + member_type const& member, reference_type update) const { + m_functor_reducer.get_functor()(member, update); + } + + template + __device__ inline std::enable_if_t::value> exec_team( + member_type const& member, reference_type update) const { + m_functor_reducer.get_functor()(TagType(), member, update); + } + + __device__ inline void iterate_through_league(int const threadid, + reference_type value) const { + int const int_league_size = static_cast(m_league_size); + for (int league_rank = blockIdx.x; league_rank < int_league_size; + league_rank += gridDim.x) { + this->template exec_team( + member_type( + kokkos_impl_hip_shared_memory() + m_team_begin, + m_shmem_begin, m_shmem_size, + reinterpret_cast( + reinterpret_cast(m_scratch_ptr[1]) + + static_cast(threadid / (blockDim.x * blockDim.y)) * + m_scratch_size[1]), + m_scratch_size[1], league_rank, m_league_size), + value); + } + } + + int compute_block_count() const { + constexpr auto light_weight = + Kokkos::Experimental::WorkItemProperty::HintLightWeight; + constexpr typename Policy::work_item_property property; + // Numbers were tuned on MI210 using dot product and yAx benchmarks + constexpr int block_max = + (property & light_weight) == light_weight ? 2097152 : 65536; + constexpr int preferred_block_min = 1024; + int block_count = m_league_size; + if (block_count < preferred_block_min) { + // keep blocks as is, already low parallelism + } else if (block_count >= block_max) { + block_count = block_max; + + } else { + int nwork = m_league_size * m_team_size; + int items_per_thread = + (nwork + block_count * m_team_size - 1) / (block_count * m_team_size); + if (items_per_thread < 4) { + int ratio = std::min( + (block_count + preferred_block_min - 1) / preferred_block_min, + (4 + items_per_thread - 1) / items_per_thread); + block_count /= ratio; + } + } + + return block_count; + } + + public: + __device__ inline void operator()() const { + int64_t threadid = 0; + if (m_scratch_size[1] > 0) { + threadid = hip_get_scratch_index(m_league_size, m_scratch_locks, + m_num_scratch_locks); + } + + using ReductionTag = std::conditional_t; + run(ReductionTag{}, threadid); + + if (m_scratch_size[1] > 0) { + hip_release_scratch_index(m_scratch_locks, threadid); + } + } + + __device__ inline void run(SHMEMReductionTag, int const threadid) const { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + + integral_nonzero_constant const + word_count(reducer.value_size() / sizeof(size_type)); + + reference_type value = + reducer.init(kokkos_impl_hip_shared_memory() + + threadIdx.y * word_count.value); + // Iterate this block through the league + iterate_through_league(threadid, value); + + // Reduce with final value at blockDim.y - 1 location. + bool do_final_reduce = (m_league_size == 0); + if (!do_final_reduce) + do_final_reduce = + hip_single_inter_block_reduce_scan( + reducer, blockIdx.x, gridDim.x, + kokkos_impl_hip_shared_memory(), m_scratch_space, + m_scratch_flags); + if (do_final_reduce) { + // This is the final block with the final result at the final threads' + // location + + size_type* const shared = kokkos_impl_hip_shared_memory() + + (blockDim.y - 1) * word_count.value; + size_type* const global = m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (threadIdx.y == 0) { + reducer.final(reinterpret_cast(shared)); + } + + if (HIPTraits::WarpSize < word_count.value) { + __syncthreads(); + } + + for (unsigned i = threadIdx.y; i < word_count.value; i += blockDim.y) { + global[i] = shared[i]; + } + } + } + + __device__ inline void run(ShflReductionTag, int const threadid) const { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + + value_type value; + reducer.init(&value); + + // Iterate this block through the league + iterate_through_league(threadid, value); + + pointer_type const result = + m_result_ptr_device_accessible + ? m_result_ptr + : reinterpret_cast(m_scratch_space); + + value_type init; + reducer.init(&init); + if (m_league_size == 0) { + reducer.final(&value); + *result = value; + } else if (Impl::hip_inter_block_shuffle_reduction( + value, init, reducer, m_scratch_space, result, + m_scratch_flags, blockDim.y)) { + unsigned int const id = threadIdx.y * blockDim.x + threadIdx.x; + if (id == 0) { + reducer.final(&value); + *result = value; + } + } + } + + inline void execute() { + const ReducerType& reducer = m_functor_reducer.get_reducer(); + + const bool is_empty_range = m_league_size == 0 || m_team_size == 0; + const bool need_device_set = ReducerType::has_init_member_function() || + ReducerType::has_final_member_function() || + !m_result_ptr_host_accessible || + Policy::is_graph_kernel::value || + !std::is_same::value; + if (!is_empty_range || need_device_set) { + int const block_count = compute_block_count(); + + m_scratch_space = hip_internal_scratch_space( + m_policy.space(), reducer.value_size() * block_count); + m_scratch_flags = + hip_internal_scratch_flags(m_policy.space(), sizeof(size_type)); + + dim3 block(m_vector_size, m_team_size, 1); + dim3 grid(block_count, 1, 1); + if (is_empty_range) { + block = dim3(1, 1, 1); + grid = dim3(1, 1, 1); + } + const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size; + + Impl::hip_parallel_launch( + *this, grid, block, shmem_size_total, + m_policy.space().impl_internal_space_instance(), + true); // copy to device and execute + + if (!m_result_ptr_device_accessible) { + m_policy.space().impl_internal_space_instance()->fence(); + + if (m_result_ptr) { + const int size = reducer.value_size(); + DeepCopy(m_policy.space(), m_result_ptr, + m_scratch_space, size); + } + } + } else { + if (m_result_ptr) { + reducer.init(m_result_ptr); + } + } + } + + template + ParallelReduce(CombinedFunctorReducerType const& arg_functor_reducer, + Policy const& arg_policy, ViewType const& arg_result) + : m_functor_reducer(arg_functor_reducer), + m_policy(arg_policy), + m_result_ptr(arg_result.data()), + m_result_ptr_device_accessible( + MemorySpaceAccess::accessible), + m_result_ptr_host_accessible( + MemorySpaceAccess::accessible), + m_scratch_space(nullptr), + m_scratch_flags(nullptr), + m_team_begin(0), + m_shmem_begin(0), + m_shmem_size(0), + m_scratch_ptr{nullptr, nullptr}, + m_league_size(arg_policy.league_size()), + m_team_size(arg_policy.team_size()), + m_vector_size(arg_policy.impl_vector_length()) { + auto internal_space_instance = + m_policy.space().impl_internal_space_instance(); + m_team_size = m_team_size >= 0 ? m_team_size + : arg_policy.team_size_recommended( + arg_functor_reducer.get_functor(), + arg_functor_reducer.get_reducer(), + ParallelReduceTag()); + + m_team_begin = + UseShflReduction + ? 0 + : hip_single_inter_block_reduce_scan_shmem( + arg_functor_reducer.get_functor(), m_team_size); + m_shmem_begin = sizeof(double) * (m_team_size + 2); + m_shmem_size = m_policy.scratch_size(0, m_team_size) + + FunctorTeamShmemSize::value( + arg_functor_reducer.get_functor(), m_team_size); + m_scratch_size[0] = m_shmem_size; + m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); + m_scratch_locks = internal_space_instance->m_scratch_locks; + m_num_scratch_locks = internal_space_instance->m_num_scratch_locks; + if (m_team_size <= 0) { + m_scratch_ptr[1] = nullptr; + } else { + m_scratch_pool_id = internal_space_instance->acquire_team_scratch_space(); + m_scratch_ptr[1] = internal_space_instance->resize_team_scratch_space( + m_scratch_pool_id, + static_cast(m_scratch_size[1]) * + (std::min( + static_cast(HIP().concurrency() / + (m_team_size * m_vector_size)), + static_cast(m_league_size)))); + } + + // The global parallel_reduce does not support vector_length other than 1 at + // the moment + if ((arg_policy.impl_vector_length() > 1) && !UseShflReduction) + Impl::throw_runtime_exception( + "Kokkos::parallel_reduce with a TeamPolicy using a vector length of " + "greater than 1 is not currently supported for HIP for dynamic " + "sized reduction types."); + + if ((m_team_size < HIPTraits::WarpSize) && !UseShflReduction) + Impl::throw_runtime_exception( + "Kokkos::parallel_reduce with a TeamPolicy using a team_size smaller " + "than 64 is not currently supported with HIP for dynamic sized " + "reduction types."); + + // Functor's reduce memory, team scan memory, and team shared memory depend + // upon team size. + + const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size; + + if (!Kokkos::Impl::is_integral_power_of_two(m_team_size) && + !UseShflReduction) { + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelReduce< HIP > bad team size")); + } + + if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelReduce< HIP > requested too much " + "L0 scratch memory")); + } + + size_t max_size = arg_policy.team_size_max( + arg_functor_reducer.get_functor(), arg_functor_reducer.get_reducer(), + ParallelReduceTag()); + if (static_cast(m_team_size) > static_cast(max_size)) { + Kokkos::Impl::throw_runtime_exception( + std::string("Kokkos::Impl::ParallelReduce< HIP > requested too " + "large team size.")); + } + } + + ~ParallelReduce() { + if (m_scratch_pool_id >= 0) { + m_policy.space() + .impl_internal_space_instance() + ->release_team_scratch_space(m_scratch_pool_id); + } + } +}; + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelScan_Range.hpp similarity index 50% rename from lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp rename to lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelScan_Range.hpp index 26e8be4698a..41692a3291b 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ParallelScan_Range.hpp @@ -14,390 +14,18 @@ // //@HEADER -#ifndef KOKKO_HIP_PARALLEL_RANGE_HPP -#define KOKKO_HIP_PARALLEL_RANGE_HPP +#ifndef KOKKOS_HIP_PARALLEL_SCAN_RANGE_HPP +#define KOKKOS_HIP_PARALLEL_SCAN_RANGE_HPP #include -#if defined(__HIPCC__) - #include #include #include -#include -#include namespace Kokkos { namespace Impl { -template -class ParallelFor, Kokkos::HIP> { - public: - using Policy = Kokkos::RangePolicy; - - private: - using Member = typename Policy::member_type; - using WorkTag = typename Policy::work_tag; - using LaunchBounds = typename Policy::launch_bounds; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline __device__ std::enable_if_t::value> exec_range( - const Member i) const { - m_functor(i); - } - - template - inline __device__ std::enable_if_t::value> exec_range( - const Member i) const { - m_functor(TagType(), i); - } - - public: - using functor_type = FunctorType; - - ParallelFor() = delete; - ParallelFor(ParallelFor const&) = default; - ParallelFor& operator=(ParallelFor const&) = delete; - - inline __device__ void operator()() const { - const Member work_stride = blockDim.y * gridDim.x; - const Member work_end = m_policy.end(); - - for (Member iwork = - m_policy.begin() + threadIdx.y + blockDim.y * blockIdx.x; - iwork < work_end; - iwork = iwork < work_end - work_stride ? iwork + work_stride - : work_end) { - this->template exec_range(iwork); - } - } - - inline void execute() const { - const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); - - using DriverType = ParallelFor; - const int block_size = - Kokkos::Impl::hip_get_preferred_blocksize(); - const dim3 block(1, block_size, 1); - const dim3 grid( - typename Policy::index_type((nwork + block.y - 1) / block.y), 1, 1); - - if (block_size == 0) { - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelFor< HIP > could not find a " - "valid execution configuration.")); - } - Kokkos::Impl::hip_parallel_launch( - *this, grid, block, 0, m_policy.space().impl_internal_space_instance(), - false); - } - - ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -template -class ParallelReduce, - Kokkos::HIP> { - public: - using Policy = Kokkos::RangePolicy; - using FunctorType = typename CombinedFunctorReducerType::functor_type; - using ReducerType = typename CombinedFunctorReducerType::reducer_type; - - private: - using WorkRange = typename Policy::WorkRange; - using WorkTag = typename Policy::work_tag; - using Member = typename Policy::member_type; - using LaunchBounds = typename Policy::launch_bounds; - - public: - using pointer_type = typename ReducerType::pointer_type; - using value_type = typename ReducerType::value_type; - using reference_type = typename ReducerType::reference_type; - using functor_type = FunctorType; - using reducer_type = ReducerType; - using size_type = Kokkos::HIP::size_type; - using index_type = typename Policy::index_type; - // Conditionally set word_size_type to int16_t or int8_t if value_type is - // smaller than int32_t (Kokkos::HIP::size_type) - // word_size_type is used to determine the word count, shared memory buffer - // size, and global memory buffer size before the scan is performed. - // Within the scan, the word count is recomputed based on word_size_type - // and when calculating indexes into the shared/global memory buffers for - // performing the scan, word_size_type is used again. - // For scalars > 4 bytes in size, indexing into shared/global memory relies - // on the block and grid dimensions to ensure that we index at the correct - // offset rather than at every 4 byte word; such that, when the join is - // performed, we have the correct data that was copied over in chunks of 4 - // bytes. - using word_size_type = std::conditional_t< - sizeof(value_type) < sizeof(size_type), - std::conditional_t, size_type>; - - // Algorithmic constraints: blockSize is a power of two AND blockDim.y == - // blockDim.z == 1 - - const CombinedFunctorReducerType m_functor_reducer; - const Policy m_policy; - const pointer_type m_result_ptr; - const bool m_result_ptr_device_accessible; - const bool m_result_ptr_host_accessible; - word_size_type* m_scratch_space = nullptr; - size_type* m_scratch_flags = nullptr; - - static constexpr bool UseShflReduction = false; - - private: - struct ShflReductionTag {}; - struct SHMEMReductionTag {}; - - // Make the exec_range calls call to Reduce::DeviceIterateTile - template - __device__ inline std::enable_if_t::value> exec_range( - const Member& i, reference_type update) const { - m_functor_reducer.get_functor()(i, update); - } - - template - __device__ inline std::enable_if_t::value> exec_range( - const Member& i, reference_type update) const { - m_functor_reducer.get_functor()(TagType(), i, update); - } - - public: - __device__ inline void operator()() const { - using ReductionTag = std::conditional_t; - run(ReductionTag{}); - } - - __device__ inline void run(SHMEMReductionTag) const { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - const integral_nonzero_constant - word_count(reducer.value_size() / sizeof(word_size_type)); - - { - reference_type value = reducer.init(reinterpret_cast( - ::Kokkos::kokkos_impl_hip_shared_memory() + - threadIdx.y * word_count.value)); - - // Number of blocks is bounded so that the reduction can be limited to two - // passes. Each thread block is given an approximately equal amount of - // work to perform. Accumulate the values for this block. The accumulation - // ordering does not match the final pass, but is arithmetically - // equivalent. - - const WorkRange range(m_policy, blockIdx.x, gridDim.x); - - for (Member iwork = range.begin() + threadIdx.y, iwork_end = range.end(); - iwork < iwork_end; iwork += blockDim.y) { - this->template exec_range(iwork, value); - } - } - - // Reduce with final value at blockDim.y - 1 location. - // Shortcut for length zero reduction - bool do_final_reduction = m_policy.begin() == m_policy.end(); - if (!do_final_reduction) - do_final_reduction = hip_single_inter_block_reduce_scan( - reducer, blockIdx.x, gridDim.x, - ::Kokkos::kokkos_impl_hip_shared_memory(), - m_scratch_space, m_scratch_flags); - if (do_final_reduction) { - // This is the final block with the final result at the final threads' - // location - - word_size_type* const shared = - ::Kokkos::kokkos_impl_hip_shared_memory() + - (blockDim.y - 1) * word_count.value; - word_size_type* const global = - m_result_ptr_device_accessible - ? reinterpret_cast(m_result_ptr) - : m_scratch_space; - - if (threadIdx.y == 0) { - reducer.final(reinterpret_cast(shared)); - } - - if (::Kokkos::Impl::HIPTraits::WarpSize < word_count.value) { - __syncthreads(); - } - - for (unsigned i = threadIdx.y; i < word_count.value; i += blockDim.y) { - global[i] = shared[i]; - } - } - } - - __device__ inline void run(ShflReductionTag) const { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - - value_type value; - reducer.init(&value); - // Number of blocks is bounded so that the reduction can be limited to two - // passes. Each thread block is given an approximately equal amount of work - // to perform. Accumulate the values for this block. The accumulation - // ordering does not match the final pass, but is arithmetically equivalent. - - WorkRange const range(m_policy, blockIdx.x, gridDim.x); - - for (Member iwork = range.begin() + threadIdx.y, iwork_end = range.end(); - iwork < iwork_end; iwork += blockDim.y) { - this->template exec_range(iwork, value); - } - - pointer_type const result = reinterpret_cast(m_scratch_space); - - int max_active_thread = static_cast(range.end() - range.begin()) < - static_cast(blockDim.y) - ? range.end() - range.begin() - : blockDim.y; - - max_active_thread = - (max_active_thread == 0) ? blockDim.y : max_active_thread; - - value_type init; - reducer.init(&init); - if (m_policy.begin() == m_policy.end()) { - reducer.final(&value); - pointer_type const final_result = - m_result_ptr_device_accessible ? m_result_ptr : result; - *final_result = value; - } else if (Impl::hip_inter_block_shuffle_reduction<>( - value, init, reducer, m_scratch_space, result, - m_scratch_flags, max_active_thread)) { - unsigned int const id = threadIdx.y * blockDim.x + threadIdx.x; - if (id == 0) { - reducer.final(&value); - pointer_type const final_result = - m_result_ptr_device_accessible ? m_result_ptr : result; - *final_result = value; - } - } - } - - // Determine block size constrained by shared memory: - inline unsigned local_block_size(const FunctorType& f) { - const auto& instance = m_policy.space().impl_internal_space_instance(); - auto shmem_functor = [&f](unsigned n) { - return hip_single_inter_block_reduce_scan_shmem(f, n); - }; - return Kokkos::Impl::hip_get_preferred_blocksize( - instance, shmem_functor); - } - - inline void execute() { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - - const index_type nwork = m_policy.end() - m_policy.begin(); - const bool need_device_set = ReducerType::has_init_member_function() || - ReducerType::has_final_member_function() || - !m_result_ptr_host_accessible || - !std::is_same::value; - if ((nwork > 0) || need_device_set) { - const int block_size = local_block_size(m_functor_reducer.get_functor()); - if (block_size == 0) { - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelReduce< HIP > could not find a " - "valid execution configuration.")); - } - - // REQUIRED ( 1 , N , 1 ) - dim3 block(1, block_size, 1); - // use a slightly less constrained, but still well bounded limit for - // scratch - int nblocks = (nwork + block.y - 1) / block.y; - // Heuristic deciding the value of nblocks. - // The general idea here is we want to: - // 1. Not undersubscribe the device (i.e., we want at least - // preferred_block_min blocks) - // 2. Have each thread reduce > 1 value to minimize overheads - // 3. Limit the total # of blocks, to avoid unbounded scratch space - constexpr int block_max = 4096; - constexpr int preferred_block_min = 1024; - - if (nblocks < preferred_block_min) { - // keep blocks as is, already have low parallelism - } else if (nblocks > block_max) { - // "large dispatch" -> already have lots of parallelism - nblocks = block_max; - } else { - // in the intermediate range, try to have each thread process multiple - // items to offset the cost of the reduction (with not enough - // parallelism to hide it) - int items_per_thread = - (nwork + nblocks * block_size - 1) / (nblocks * block_size); - if (items_per_thread < 4) { - int ratio = std::min( - (nblocks + preferred_block_min - 1) / preferred_block_min, - (4 + items_per_thread - 1) / items_per_thread); - nblocks /= ratio; - } - } - - // TODO: down casting these uses more space than required? - m_scratch_space = - (word_size_type*)::Kokkos::Impl::hip_internal_scratch_space( - m_policy.space(), reducer.value_size() * nblocks); - // Intentionally do not downcast to word_size_type since we use HIP - // atomics in Kokkos_HIP_ReduceScan.hpp - m_scratch_flags = ::Kokkos::Impl::hip_internal_scratch_flags( - m_policy.space(), sizeof(size_type)); - // Required grid.x <= block.y - dim3 grid(nblocks, 1, 1); - - if (nwork == 0) { - block = dim3(1, 1, 1); - grid = dim3(1, 1, 1); - } - const int shmem = - UseShflReduction - ? 0 - : hip_single_inter_block_reduce_scan_shmem( - m_functor_reducer.get_functor(), block.y); - - Kokkos::Impl::hip_parallel_launch( - *this, grid, block, shmem, - m_policy.space().impl_internal_space_instance(), - false); // copy to device and execute - - if (!m_result_ptr_device_accessible && m_result_ptr) { - const int size = reducer.value_size(); - DeepCopy(m_policy.space(), m_result_ptr, - m_scratch_space, size); - } - } else { - if (m_result_ptr) { - reducer.init(m_result_ptr); - } - } - } - - template - ParallelReduce(const CombinedFunctorReducerType& arg_functor_reducer, - const Policy& arg_policy, const ViewType& arg_result) - : m_functor_reducer(arg_functor_reducer), - m_policy(arg_policy), - m_result_ptr(arg_result.data()), - m_result_ptr_device_accessible( - MemorySpaceAccess::accessible), - m_result_ptr_host_accessible( - MemorySpaceAccess::accessible) {} -}; - template class ParallelScanHIPBase { public: @@ -763,5 +391,3 @@ class ParallelScanWithTotal, } // namespace Kokkos #endif - -#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp deleted file mode 100644 index 3fe568ac361..00000000000 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp +++ /dev/null @@ -1,936 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKO_HIP_PARALLEL_TEAM_HPP -#define KOKKO_HIP_PARALLEL_TEAM_HPP - -#include - -#if defined(__HIPCC__) - -#include -#include -#include -#include - -namespace Kokkos { -namespace Impl { - -template -class TeamPolicyInternal - : public PolicyTraits { - public: - using execution_policy = TeamPolicyInternal; - - using traits = PolicyTraits; - - template - friend class TeamPolicyInternal; - - private: - typename traits::execution_space m_space; - int m_league_size; - int m_team_size; - int m_vector_length; - size_t m_team_scratch_size[2]; - size_t m_thread_scratch_size[2]; - int m_chunk_size; - bool m_tune_team_size; - bool m_tune_vector_length; - - public: - using execution_space = HIP; - - template - TeamPolicyInternal(TeamPolicyInternal const& p) { - m_league_size = p.m_league_size; - m_team_size = p.m_team_size; - m_vector_length = p.m_vector_length; - m_team_scratch_size[0] = p.m_team_scratch_size[0]; - m_team_scratch_size[1] = p.m_team_scratch_size[1]; - m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; - m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; - m_chunk_size = p.m_chunk_size; - m_space = p.m_space; - m_tune_team_size = p.m_tune_team_size; - m_tune_vector_length = p.m_tune_vector_length; - } - - template - int team_size_max(FunctorType const& f, ParallelForTag const&) const { - using closure_type = - Impl::ParallelFor>; - - return internal_team_size_common(f); - } - - template - inline int team_size_max(const FunctorType& f, - const ParallelReduceTag&) const { - using functor_analysis_type = - Impl::FunctorAnalysis; - using closure_type = Impl::ParallelReduce< - CombinedFunctorReducer, - TeamPolicy, Kokkos::HIP>; - return internal_team_size_common< - BlockType::Max, closure_type, - typename functor_analysis_type::value_type>(f); - } - - template - inline int team_size_max(const FunctorType& f, const ReducerType&, - const ParallelReduceTag&) const { - using closure_type = - Impl::ParallelReduce, - TeamPolicy, Kokkos::HIP>; - return internal_team_size_common(f); - } - - template - int team_size_recommended(FunctorType const& f, ParallelForTag const&) const { - using closure_type = - Impl::ParallelFor>; - - return internal_team_size_common( - f); - } - - template - inline int team_size_recommended(FunctorType const& f, - ParallelReduceTag const&) const { - using functor_analysis_type = - Impl::FunctorAnalysis; - using closure_type = Impl::ParallelReduce< - CombinedFunctorReducer, - TeamPolicy, Kokkos::HIP>; - return internal_team_size_common< - BlockType::Preferred, closure_type, - typename functor_analysis_type::value_type>(f); - } - - template - int team_size_recommended(FunctorType const& f, ReducerType const&, - ParallelReduceTag const&) const { - using closure_type = - Impl::ParallelReduce, - TeamPolicy, Kokkos::HIP>; - return internal_team_size_common(f); - } - - inline bool impl_auto_vector_length() const { return m_tune_vector_length; } - inline bool impl_auto_team_size() const { return m_tune_team_size; } - static int vector_length_max() { return HIPTraits::WarpSize; } - - static int verify_requested_vector_length(int requested_vector_length) { - int test_vector_length = - std::min(requested_vector_length, vector_length_max()); - - // Allow only power-of-two vector_length - if (!(is_integral_power_of_two(test_vector_length))) { - int test_pow2 = 1; - constexpr int warp_size = HIPTraits::WarpSize; - while (test_pow2 < warp_size) { - test_pow2 <<= 1; - if (test_pow2 > test_vector_length) { - break; - } - } - test_vector_length = test_pow2 >> 1; - } - - return test_vector_length; - } - - inline static int scratch_size_max(int level) { - // HIP Teams use (team_size + 2)*sizeof(double) shared memory for team - // reductions. They also use one int64_t in static shared memory for a - // shared ID. Furthermore, they use additional scratch memory in some - // reduction scenarios, which depend on the size of the value_type and is - // NOT captured here - constexpr size_t max_possible_team_size = 1024; - constexpr size_t max_reserved_shared_mem_per_team = - (max_possible_team_size + 2) * sizeof(double) + sizeof(int64_t); - // arbitrarily setting level 1 scratch limit to 20MB, for a - // MI250 that would give us about 4.4GB for 2 teams per CU - constexpr size_t max_l1_scratch_size = 20 * 1024 * 1024; - - size_t max_shmem = HIP().hip_device_prop().sharedMemPerBlock; - return (level == 0 ? max_shmem - max_reserved_shared_mem_per_team - : max_l1_scratch_size); - } - - inline void impl_set_vector_length(size_t size) { m_vector_length = size; } - inline void impl_set_team_size(size_t size) { m_team_size = size; } - int impl_vector_length() const { return m_vector_length; } - - int team_size() const { return m_team_size; } - - int league_size() const { return m_league_size; } - - size_t scratch_size(int level, int team_size_ = -1) const { - if (team_size_ < 0) team_size_ = m_team_size; - return m_team_scratch_size[level] + - team_size_ * m_thread_scratch_size[level]; - } - - size_t team_scratch_size(int level) const { - return m_team_scratch_size[level]; - } - - size_t thread_scratch_size(int level) const { - return m_thread_scratch_size[level]; - } - - typename traits::execution_space space() const { return m_space; } - - TeamPolicyInternal() - : m_space(typename traits::execution_space()), - m_league_size(0), - m_team_size(-1), - m_vector_length(0), - m_team_scratch_size{0, 0}, - m_thread_scratch_size{0, 0}, - m_chunk_size(HIPTraits::WarpSize), - m_tune_team_size(false), - m_tune_vector_length(false) {} - - /** \brief Specify league size, request team size */ - TeamPolicyInternal(const execution_space space_, int league_size_, - int team_size_request, int vector_length_request = 1) - : m_space(space_), - m_league_size(league_size_), - m_team_size(team_size_request), - m_vector_length( - (vector_length_request > 0) - ? verify_requested_vector_length(vector_length_request) - : (verify_requested_vector_length(1))), - m_team_scratch_size{0, 0}, - m_thread_scratch_size{0, 0}, - m_chunk_size(HIPTraits::WarpSize), - m_tune_team_size(bool(team_size_request <= 0)), - m_tune_vector_length(bool(vector_length_request <= 0)) { - // Make sure league size is permissible - if (league_size_ >= static_cast(hip_internal_maximum_grid_count()[0])) - Impl::throw_runtime_exception( - "Requested too large league_size for TeamPolicy on HIP execution " - "space."); - - // Make sure total block size is permissible - if (m_team_size * m_vector_length > HIPTraits::MaxThreadsPerBlock) { - Impl::throw_runtime_exception( - std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " - "Team size x vector length must be smaller than 1024.")); - } - } - - /** \brief Specify league size, request team size */ - TeamPolicyInternal(const execution_space space_, int league_size_, - const Kokkos::AUTO_t& /* team_size_request */, - int vector_length_request = 1) - : TeamPolicyInternal(space_, league_size_, -1, vector_length_request) {} - // FLAG - /** \brief Specify league size and team size, request vector length*/ - TeamPolicyInternal(const execution_space space_, int league_size_, - int team_size_request, - const Kokkos::AUTO_t& /* vector_length_request */ - ) - : TeamPolicyInternal(space_, league_size_, team_size_request, -1) - - {} - - /** \brief Specify league size, request team size and vector length*/ - TeamPolicyInternal(const execution_space space_, int league_size_, - const Kokkos::AUTO_t& /* team_size_request */, - const Kokkos::AUTO_t& /* vector_length_request */ - - ) - : TeamPolicyInternal(space_, league_size_, -1, -1) - - {} - - TeamPolicyInternal(int league_size_, int team_size_request, - int vector_length_request = 1) - : TeamPolicyInternal(typename traits::execution_space(), league_size_, - team_size_request, vector_length_request) {} - - TeamPolicyInternal(int league_size_, - const Kokkos::AUTO_t& /* team_size_request */, - int vector_length_request = 1) - : TeamPolicyInternal(typename traits::execution_space(), league_size_, -1, - vector_length_request) {} - - /** \brief Specify league size and team size, request vector length*/ - TeamPolicyInternal(int league_size_, int team_size_request, - const Kokkos::AUTO_t& /* vector_length_request */ - - ) - : TeamPolicyInternal(typename traits::execution_space(), league_size_, - team_size_request, -1) - - {} - - /** \brief Specify league size, request team size and vector length*/ - TeamPolicyInternal(int league_size_, - const Kokkos::AUTO_t& /* team_size_request */, - const Kokkos::AUTO_t& /* vector_length_request */ - - ) - : TeamPolicyInternal(typename traits::execution_space(), league_size_, -1, - -1) {} - - int chunk_size() const { return m_chunk_size; } - - TeamPolicyInternal& set_chunk_size(typename traits::index_type chunk_size_) { - m_chunk_size = chunk_size_; - return *this; - } - - /** \brief set per team scratch size for a specific level of the scratch - * hierarchy */ - TeamPolicyInternal& set_scratch_size(int level, - PerTeamValue const& per_team) { - m_team_scratch_size[level] = per_team.value; - return *this; - } - - /** \brief set per thread scratch size for a specific level of the scratch - * hierarchy */ - TeamPolicyInternal& set_scratch_size(int level, - PerThreadValue const& per_thread) { - m_thread_scratch_size[level] = per_thread.value; - return *this; - } - - /** \brief set per thread and per team scratch size for a specific level of - * the scratch hierarchy */ - TeamPolicyInternal& set_scratch_size(int level, PerTeamValue const& per_team, - PerThreadValue const& per_thread) { - m_team_scratch_size[level] = per_team.value; - m_thread_scratch_size[level] = per_thread.value; - return *this; - } - - using member_type = Kokkos::Impl::HIPTeamMember; - - protected: - template - int internal_team_size_common(FunctorType const& f) const { - const unsigned shmem_block = team_scratch_size(0) + 2 * sizeof(double); - unsigned shmem_thread = thread_scratch_size(0) + sizeof(double); - using Tag = typename PatternTagFromImplSpecialization::type; - if constexpr (std::is_same_v) { - using Interface = - typename Impl::DeduceFunctorPatternInterface::type; - using Analysis = - Impl::FunctorAnalysis; - shmem_thread += - ((Analysis::StaticValueSize != 0) ? 0 : Analysis::value_size(f)); - } - const int vector_length = impl_vector_length(); - - const auto functor = [&f, shmem_block, shmem_thread, vector_length]( - const hipFuncAttributes& attr, int block_size) { - int functor_shmem = - ::Kokkos::Impl::FunctorTeamShmemSize::value( - f, block_size / vector_length); - return shmem_block + shmem_thread * (block_size / vector_length) + - functor_shmem + attr.sharedSizeBytes; - }; - int block_size; - if constexpr (BlockSize == BlockType::Max) { - block_size = hip_get_max_team_blocksize( - space().impl_internal_space_instance(), functor); - } else { - block_size = - hip_get_preferred_team_blocksize( - space().impl_internal_space_instance(), functor); - } - - if (block_size == 0) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Impl::ParallelFor/Reduce< HIP > could not find a valid " - "team size.")); - } - if constexpr (std::is_same_v) { - return block_size / impl_vector_length(); - } else { - // Currently we require Power-of-2 team size for reductions. - int p2 = 1; - while (p2 <= block_size) p2 *= 2; - p2 /= 2; - return p2 / impl_vector_length(); - } - } -}; - -__device__ inline int64_t hip_get_scratch_index(HIP::size_type league_size, - int32_t* scratch_locks, - size_t num_scratch_locks) { - int64_t threadid = 0; - __shared__ int64_t base_thread_id; - if (threadIdx.x == 0 && threadIdx.y == 0) { - int64_t const wraparound_len = - Kokkos::min(int64_t(league_size), - int64_t(num_scratch_locks) / (blockDim.x * blockDim.y)); - threadid = (blockIdx.x * blockDim.z + threadIdx.z) % wraparound_len; - threadid *= blockDim.x * blockDim.y; - int done = 0; - while (!done) { - done = (0 == atomicCAS(&scratch_locks[threadid], 0, 1)); - if (!done) { - threadid += blockDim.x * blockDim.y; - if (int64_t(threadid + blockDim.x * blockDim.y) >= - wraparound_len * blockDim.x * blockDim.y) - threadid = 0; - } - } - base_thread_id = threadid; - } - __syncthreads(); - threadid = base_thread_id; - return threadid; -} - -__device__ inline void hip_release_scratch_index(int32_t* scratch_locks, - int64_t threadid) { - __syncthreads(); - if (threadIdx.x == 0 && threadIdx.y == 0) { - scratch_locks[threadid] = 0; - } -} - -template -class ParallelFor, HIP> { - public: - using Policy = TeamPolicy; - using functor_type = FunctorType; - using size_type = HIP::size_type; - - private: - using member_type = typename Policy::member_type; - using work_tag = typename Policy::work_tag; - using launch_bounds = typename Policy::launch_bounds; - - // Algorithmic constraints: blockDim.y is a power of two AND - // blockDim.y == blockDim.z == 1 shared memory utilization: - // - // [ team reduce space ] - // [ team shared space ] - - FunctorType const m_functor; - Policy const m_policy; - size_type const m_league_size; - int m_team_size; - size_type const m_vector_size; - int m_shmem_begin; - int m_shmem_size; - void* m_scratch_ptr[2]; - size_t m_scratch_size[2]; - int m_scratch_pool_id = -1; - int32_t* m_scratch_locks; - size_t m_num_scratch_locks; - - template - __device__ inline std::enable_if_t::value> exec_team( - const member_type& member) const { - m_functor(member); - } - - template - __device__ inline std::enable_if_t::value> exec_team( - const member_type& member) const { - m_functor(TagType(), member); - } - - public: - ParallelFor() = delete; - ParallelFor(ParallelFor const&) = default; - ParallelFor& operator=(ParallelFor const&) = delete; - - __device__ inline void operator()() const { - // Iterate this block through the league - int64_t threadid = 0; - if (m_scratch_size[1] > 0) { - threadid = hip_get_scratch_index(m_league_size, m_scratch_locks, - m_num_scratch_locks); - } - - int const int_league_size = static_cast(m_league_size); - for (int league_rank = blockIdx.x; league_rank < int_league_size; - league_rank += gridDim.x) { - this->template exec_team(typename Policy::member_type( - kokkos_impl_hip_shared_memory(), m_shmem_begin, m_shmem_size, - static_cast(static_cast(m_scratch_ptr[1]) + - ptrdiff_t(threadid / (blockDim.x * blockDim.y)) * - m_scratch_size[1]), - m_scratch_size[1], league_rank, m_league_size)); - } - if (m_scratch_size[1] > 0) { - hip_release_scratch_index(m_scratch_locks, threadid); - } - } - - inline void execute() const { - int64_t const shmem_size_total = m_shmem_begin + m_shmem_size; - dim3 const grid(static_cast(m_league_size), 1, 1); - dim3 const block(static_cast(m_vector_size), - static_cast(m_team_size), 1); - - using closure_type = - ParallelFor, HIP>; - Impl::hip_parallel_launch( - *this, grid, block, shmem_size_total, - m_policy.space().impl_internal_space_instance(), - true); // copy to device and execute - } - - ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) - : m_functor(arg_functor), - m_policy(arg_policy), - m_league_size(arg_policy.league_size()), - m_team_size(arg_policy.team_size()), - m_vector_size(arg_policy.impl_vector_length()) { - auto internal_space_instance = - m_policy.space().impl_internal_space_instance(); - m_team_size = m_team_size >= 0 ? m_team_size - : arg_policy.team_size_recommended( - arg_functor, ParallelForTag()); - - m_shmem_begin = (sizeof(double) * (m_team_size + 2)); - m_shmem_size = - (m_policy.scratch_size(0, m_team_size) + - FunctorTeamShmemSize::value(m_functor, m_team_size)); - m_scratch_size[0] = m_policy.scratch_size(0, m_team_size); - m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); - m_scratch_locks = internal_space_instance->m_scratch_locks; - m_num_scratch_locks = internal_space_instance->m_num_scratch_locks; - - // Functor's reduce memory, team scan memory, and team shared memory depend - // upon team size. - m_scratch_ptr[0] = nullptr; - if (m_team_size <= 0) { - m_scratch_ptr[1] = nullptr; - } else { - m_scratch_pool_id = internal_space_instance->acquire_team_scratch_space(); - m_scratch_ptr[1] = internal_space_instance->resize_team_scratch_space( - m_scratch_pool_id, - static_cast(m_scratch_size[1]) * - (std::min( - static_cast(HIP().concurrency() / - (m_team_size * m_vector_size)), - static_cast(m_league_size)))); - } - - int const shmem_size_total = m_shmem_begin + m_shmem_size; - if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Impl::ParallelFor< HIP > insufficient shared memory")); - } - - size_t max_size = arg_policy.team_size_max(arg_functor, ParallelForTag()); - if (static_cast(m_team_size) > static_cast(max_size)) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Impl::ParallelFor< HIP > requested too large team size.")); - } - } - - ~ParallelFor() { - if (m_scratch_pool_id >= 0) { - m_policy.space() - .impl_internal_space_instance() - ->release_team_scratch_space(m_scratch_pool_id); - } - } -}; - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -template -class ParallelReduce, HIP> { - public: - using Policy = TeamPolicyInternal; - using FunctorType = typename CombinedFunctorReducerType::functor_type; - using ReducerType = typename CombinedFunctorReducerType::reducer_type; - - private: - using member_type = typename Policy::member_type; - using work_tag = typename Policy::work_tag; - using launch_bounds = typename Policy::launch_bounds; - - using pointer_type = typename ReducerType::pointer_type; - using reference_type = typename ReducerType::reference_type; - using value_type = typename ReducerType::value_type; - - public: - using functor_type = FunctorType; - using size_type = HIP::size_type; - - // static int constexpr UseShflReduction = false; - // FIXME_HIP This should be disabled unconditionally for best performance, but - // it currently causes tests to fail. - static constexpr int UseShflReduction = - (ReducerType::static_value_size() != 0); - - private: - struct ShflReductionTag {}; - struct SHMEMReductionTag {}; - - // Algorithmic constraints: blockDim.y is a power of two AND - // blockDim.y == blockDim.z == 1 shared memory utilization: - // - // [ global reduce space ] - // [ team reduce space ] - // [ team shared space ] - // - - const CombinedFunctorReducerType m_functor_reducer; - const Policy m_policy; - const pointer_type m_result_ptr; - const bool m_result_ptr_device_accessible; - const bool m_result_ptr_host_accessible; - size_type* m_scratch_space; - size_type* m_scratch_flags; - size_type m_team_begin; - size_type m_shmem_begin; - size_type m_shmem_size; - void* m_scratch_ptr[2]; - size_t m_scratch_size[2]; - int m_scratch_pool_id = -1; - int32_t* m_scratch_locks; - size_t m_num_scratch_locks; - const size_type m_league_size; - int m_team_size; - const size_type m_vector_size; - - template - __device__ inline std::enable_if_t::value> exec_team( - member_type const& member, reference_type update) const { - m_functor_reducer.get_functor()(member, update); - } - - template - __device__ inline std::enable_if_t::value> exec_team( - member_type const& member, reference_type update) const { - m_functor_reducer.get_functor()(TagType(), member, update); - } - - __device__ inline void iterate_through_league(int const threadid, - reference_type value) const { - int const int_league_size = static_cast(m_league_size); - for (int league_rank = blockIdx.x; league_rank < int_league_size; - league_rank += gridDim.x) { - this->template exec_team( - member_type( - kokkos_impl_hip_shared_memory() + m_team_begin, - m_shmem_begin, m_shmem_size, - reinterpret_cast( - reinterpret_cast(m_scratch_ptr[1]) + - static_cast(threadid / (blockDim.x * blockDim.y)) * - m_scratch_size[1]), - m_scratch_size[1], league_rank, m_league_size), - value); - } - } - - int compute_block_count() const { - constexpr auto light_weight = - Kokkos::Experimental::WorkItemProperty::HintLightWeight; - constexpr typename Policy::work_item_property property; - // Numbers were tuned on MI210 using dot product and yAx benchmarks - constexpr int block_max = - (property & light_weight) == light_weight ? 2097152 : 65536; - constexpr int preferred_block_min = 1024; - int block_count = m_league_size; - if (block_count < preferred_block_min) { - // keep blocks as is, already low parallelism - } else if (block_count >= block_max) { - block_count = block_max; - - } else { - int nwork = m_league_size * m_team_size; - int items_per_thread = - (nwork + block_count * m_team_size - 1) / (block_count * m_team_size); - if (items_per_thread < 4) { - int ratio = std::min( - (block_count + preferred_block_min - 1) / preferred_block_min, - (4 + items_per_thread - 1) / items_per_thread); - block_count /= ratio; - } - } - - return block_count; - } - - public: - __device__ inline void operator()() const { - int64_t threadid = 0; - if (m_scratch_size[1] > 0) { - threadid = hip_get_scratch_index(m_league_size, m_scratch_locks, - m_num_scratch_locks); - } - - using ReductionTag = std::conditional_t; - run(ReductionTag{}, threadid); - - if (m_scratch_size[1] > 0) { - hip_release_scratch_index(m_scratch_locks, threadid); - } - } - - __device__ inline void run(SHMEMReductionTag, int const threadid) const { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - - integral_nonzero_constant const - word_count(reducer.value_size() / sizeof(size_type)); - - reference_type value = - reducer.init(kokkos_impl_hip_shared_memory() + - threadIdx.y * word_count.value); - // Iterate this block through the league - iterate_through_league(threadid, value); - - // Reduce with final value at blockDim.y - 1 location. - bool do_final_reduce = (m_league_size == 0); - if (!do_final_reduce) - do_final_reduce = - hip_single_inter_block_reduce_scan( - reducer, blockIdx.x, gridDim.x, - kokkos_impl_hip_shared_memory(), m_scratch_space, - m_scratch_flags); - if (do_final_reduce) { - // This is the final block with the final result at the final threads' - // location - - size_type* const shared = kokkos_impl_hip_shared_memory() + - (blockDim.y - 1) * word_count.value; - size_type* const global = m_result_ptr_device_accessible - ? reinterpret_cast(m_result_ptr) - : m_scratch_space; - - if (threadIdx.y == 0) { - reducer.final(reinterpret_cast(shared)); - } - - if (HIPTraits::WarpSize < word_count.value) { - __syncthreads(); - } - - for (unsigned i = threadIdx.y; i < word_count.value; i += blockDim.y) { - global[i] = shared[i]; - } - } - } - - __device__ inline void run(ShflReductionTag, int const threadid) const { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - - value_type value; - reducer.init(&value); - - // Iterate this block through the league - iterate_through_league(threadid, value); - - pointer_type const result = - m_result_ptr_device_accessible - ? m_result_ptr - : reinterpret_cast(m_scratch_space); - - value_type init; - reducer.init(&init); - if (m_league_size == 0) { - reducer.final(&value); - *result = value; - } else if (Impl::hip_inter_block_shuffle_reduction( - value, init, reducer, m_scratch_space, result, - m_scratch_flags, blockDim.y)) { - unsigned int const id = threadIdx.y * blockDim.x + threadIdx.x; - if (id == 0) { - reducer.final(&value); - *result = value; - } - } - } - - inline void execute() { - const ReducerType& reducer = m_functor_reducer.get_reducer(); - - const bool is_empty_range = m_league_size == 0 || m_team_size == 0; - const bool need_device_set = ReducerType::has_init_member_function() || - ReducerType::has_final_member_function() || - !m_result_ptr_host_accessible || - Policy::is_graph_kernel::value || - !std::is_same::value; - if (!is_empty_range || need_device_set) { - int const block_count = compute_block_count(); - - m_scratch_space = hip_internal_scratch_space( - m_policy.space(), reducer.value_size() * block_count); - m_scratch_flags = - hip_internal_scratch_flags(m_policy.space(), sizeof(size_type)); - - dim3 block(m_vector_size, m_team_size, 1); - dim3 grid(block_count, 1, 1); - if (is_empty_range) { - block = dim3(1, 1, 1); - grid = dim3(1, 1, 1); - } - const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size; - - Impl::hip_parallel_launch( - *this, grid, block, shmem_size_total, - m_policy.space().impl_internal_space_instance(), - true); // copy to device and execute - - if (!m_result_ptr_device_accessible) { - m_policy.space().impl_internal_space_instance()->fence(); - - if (m_result_ptr) { - const int size = reducer.value_size(); - DeepCopy(m_result_ptr, m_scratch_space, size); - } - } - } else { - if (m_result_ptr) { - reducer.init(m_result_ptr); - } - } - } - - template - ParallelReduce(CombinedFunctorReducerType const& arg_functor_reducer, - Policy const& arg_policy, ViewType const& arg_result) - : m_functor_reducer(arg_functor_reducer), - m_policy(arg_policy), - m_result_ptr(arg_result.data()), - m_result_ptr_device_accessible( - MemorySpaceAccess::accessible), - m_result_ptr_host_accessible( - MemorySpaceAccess::accessible), - m_scratch_space(nullptr), - m_scratch_flags(nullptr), - m_team_begin(0), - m_shmem_begin(0), - m_shmem_size(0), - m_scratch_ptr{nullptr, nullptr}, - m_league_size(arg_policy.league_size()), - m_team_size(arg_policy.team_size()), - m_vector_size(arg_policy.impl_vector_length()) { - auto internal_space_instance = - m_policy.space().impl_internal_space_instance(); - m_team_size = m_team_size >= 0 ? m_team_size - : arg_policy.team_size_recommended( - arg_functor_reducer.get_functor(), - arg_functor_reducer.get_reducer(), - ParallelReduceTag()); - - m_team_begin = - UseShflReduction - ? 0 - : hip_single_inter_block_reduce_scan_shmem( - arg_functor_reducer.get_functor(), m_team_size); - m_shmem_begin = sizeof(double) * (m_team_size + 2); - m_shmem_size = m_policy.scratch_size(0, m_team_size) + - FunctorTeamShmemSize::value( - arg_functor_reducer.get_functor(), m_team_size); - m_scratch_size[0] = m_shmem_size; - m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); - m_scratch_locks = internal_space_instance->m_scratch_locks; - m_num_scratch_locks = internal_space_instance->m_num_scratch_locks; - if (m_team_size <= 0) { - m_scratch_ptr[1] = nullptr; - } else { - m_scratch_pool_id = internal_space_instance->acquire_team_scratch_space(); - m_scratch_ptr[1] = internal_space_instance->resize_team_scratch_space( - m_scratch_pool_id, - static_cast(m_scratch_size[1]) * - (std::min( - static_cast(HIP().concurrency() / - (m_team_size * m_vector_size)), - static_cast(m_league_size)))); - } - - // The global parallel_reduce does not support vector_length other than 1 at - // the moment - if ((arg_policy.impl_vector_length() > 1) && !UseShflReduction) - Impl::throw_runtime_exception( - "Kokkos::parallel_reduce with a TeamPolicy using a vector length of " - "greater than 1 is not currently supported for HIP for dynamic " - "sized reduction types."); - - if ((m_team_size < HIPTraits::WarpSize) && !UseShflReduction) - Impl::throw_runtime_exception( - "Kokkos::parallel_reduce with a TeamPolicy using a team_size smaller " - "than 64 is not currently supported with HIP for dynamic sized " - "reduction types."); - - // Functor's reduce memory, team scan memory, and team shared memory depend - // upon team size. - - const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size; - - if (!Kokkos::Impl::is_integral_power_of_two(m_team_size) && - !UseShflReduction) { - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelReduce< HIP > bad team size")); - } - - if (internal_space_instance->m_maxShmemPerBlock < shmem_size_total) { - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelReduce< HIP > requested too much " - "L0 scratch memory")); - } - - size_t max_size = arg_policy.team_size_max( - arg_functor_reducer.get_functor(), arg_functor_reducer.get_reducer(), - ParallelReduceTag()); - if (static_cast(m_team_size) > static_cast(max_size)) { - Kokkos::Impl::throw_runtime_exception( - std::string("Kokkos::Impl::ParallelReduce< HIP > requested too " - "large team size.")); - } - } - - ~ParallelReduce() { - if (m_scratch_pool_id >= 0) { - m_policy.space() - .impl_internal_space_instance() - ->release_team_scratch_space(m_scratch_pool_id); - } - } -}; -} // namespace Impl -} // namespace Kokkos - -#endif - -#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.cpp index ea599989e7a..ab24004f5fc 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.cpp @@ -18,138 +18,14 @@ #define KOKKOS_IMPL_PUBLIC_INCLUDE #endif -#include -#include #include - -namespace Kokkos { -namespace Impl { - -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord - SharedAllocationRecord::s_root_record; - -SharedAllocationRecord - SharedAllocationRecord::s_root_record; - -SharedAllocationRecord - SharedAllocationRecord::s_root_record; -#endif - -SharedAllocationRecord::~SharedAllocationRecord() { - auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, (alloc_size - sizeof(SharedAllocationHeader))); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size); -} - -SharedAllocationRecord::SharedAllocationRecord( - const HIPSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // Copy to device memory - HIP exec; - Kokkos::Impl::DeepCopy( - exec, RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); - exec.fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -SharedAllocationRecord::SharedAllocationRecord( - const HIP& arg_exec_space, const HIPSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // Copy to device memory - Kokkos::Impl::DeepCopy(arg_exec_space, - RecordBase::m_alloc_ptr, &header, - sizeof(SharedAllocationHeader)); -} - -SharedAllocationRecord::SharedAllocationRecord( - const HIPHostPinnedSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - // Fill in the Header information, directly accessible via host pinned memory - this->base_t::_fill_host_accessible_header_info(*RecordBase::m_alloc_ptr, - arg_label); -} - -SharedAllocationRecord::SharedAllocationRecord( - const HIPManagedSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - // Fill in the Header information, directly accessible via managed memory - this->base_t::_fill_host_accessible_header_info(*RecordBase::m_alloc_ptr, - arg_label); -} - -} // namespace Impl -} // namespace Kokkos +#include +#include +#include + +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::HIPSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::HIPHostPinnedSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::HIPManagedSpace); diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.hpp index e68bad97230..fbae5188344 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_SharedAllocationRecord.hpp @@ -18,120 +18,11 @@ #define KOKKOS_HIP_SHARED_ALLOCATION_RECORD_HPP #include +#include -namespace Kokkos { -namespace Impl { - -template <> -class SharedAllocationRecord - : public HostInaccessibleSharedAllocationRecordCommon { - private: - friend class SharedAllocationRecordCommon; - friend class HostInaccessibleSharedAllocationRecordCommon; - using base_t = HostInaccessibleSharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - static RecordBase s_root_record; -#endif - - const HIPSpace m_space; - - protected: - ~SharedAllocationRecord(); - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec*/, const HIPSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const HIP& exec_space, const HIPSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - SharedAllocationRecord( - const HIPSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon { - private: - friend class SharedAllocationRecordCommon; - using base_t = SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - static RecordBase s_root_record; -#endif - - const HIPHostPinnedSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, const HIPHostPinnedSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const HIPHostPinnedSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon { - private: - friend class SharedAllocationRecordCommon; - using base_t = SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - static RecordBase s_root_record; -#endif - - const HIPManagedSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, const HIPManagedSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const HIPManagedSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; -} // namespace Impl -} // namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::HIPSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(Kokkos::HIPHostPinnedSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(Kokkos::HIPManagedSpace); #endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp index 7f6aa0d8e82..e8bdfca66fe 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp @@ -24,10 +24,8 @@ #include #include -#include #include -#include #include #include @@ -287,22 +285,3 @@ void HIPManagedSpace::impl_deallocate( } } // namespace Kokkos - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - -#include - -namespace Kokkos { -namespace Impl { - -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicity instantiate these CRTP base classes here, -// where we have access to the associated *_timpl.hpp header files. -template class HostInaccessibleSharedAllocationRecordCommon; -template class SharedAllocationRecordCommon; -template class SharedAllocationRecordCommon; -template class SharedAllocationRecordCommon; - -} // end namespace Impl -} // end namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.hpp index f3e5adf87e5..7f2004e5cbc 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.hpp @@ -65,6 +65,15 @@ class HIPSpace { ~HIPSpace() = default; /**\brief Allocate untracked memory in the hip space */ + // FIXME_HIP Use execution space instance + void* allocate(const HIP&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + // FIXME_HIP Use execution space instance + void* allocate(const HIP&, const char* arg_label, const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -76,8 +85,6 @@ class HIPSpace { const size_t arg_logical_size = 0) const; private: - template - friend class LogicalMemorySpace; void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -94,8 +101,6 @@ class HIPSpace { private: int m_device; ///< Which HIP device - - friend class Kokkos::Impl::SharedAllocationRecord; }; template <> @@ -129,6 +134,16 @@ class HIPHostPinnedSpace { ~HIPHostPinnedSpace() = default; /**\brief Allocate untracked memory in the space */ + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -140,8 +155,6 @@ class HIPHostPinnedSpace { const size_t arg_logical_size = 0) const; private: - template - friend class LogicalMemorySpace; void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -194,6 +207,16 @@ class HIPManagedSpace { ~HIPManagedSpace() = default; /**\brief Allocate untracked memory in the space */ + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -209,8 +232,6 @@ class HIPManagedSpace { private: int m_device; ///< Which HIP device - template - friend class LogicalMemorySpace; void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -239,8 +260,7 @@ struct Impl::is_hip_type_space : public std::true_type {}; namespace Kokkos { namespace Impl { -static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); +static_assert(Kokkos::Impl::MemorySpaceAccess::assignable); //---------------------------------------- diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_TeamPolicyInternal.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_TeamPolicyInternal.hpp new file mode 100644 index 00000000000..67e1181125c --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_TeamPolicyInternal.hpp @@ -0,0 +1,421 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_HIP_TEAM_POLICY_INTERNAL_HPP +#define KOKKOS_HIP_TEAM_POLICY_INTERNAL_HPP + +#include + +namespace Kokkos { +namespace Impl { + +template +class TeamPolicyInternal + : public PolicyTraits { + public: + using execution_policy = TeamPolicyInternal; + + using traits = PolicyTraits; + + template + friend class TeamPolicyInternal; + + private: + typename traits::execution_space m_space; + int m_league_size; + int m_team_size; + int m_vector_length; + size_t m_team_scratch_size[2]; + size_t m_thread_scratch_size[2]; + int m_chunk_size; + bool m_tune_team_size; + bool m_tune_vector_length; + + public: + using execution_space = HIP; + + template + TeamPolicyInternal(TeamPolicyInternal const& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + m_space = p.m_space; + m_tune_team_size = p.m_tune_team_size; + m_tune_vector_length = p.m_tune_vector_length; + } + + template + int team_size_max(FunctorType const& f, ParallelForTag const&) const { + using closure_type = + Impl::ParallelFor>; + + return internal_team_size_common(f); + } + + template + inline int team_size_max(const FunctorType& f, + const ParallelReduceTag&) const { + using functor_analysis_type = + Impl::FunctorAnalysis; + using closure_type = Impl::ParallelReduce< + CombinedFunctorReducer, + TeamPolicy, Kokkos::HIP>; + return internal_team_size_common< + BlockType::Max, closure_type, + typename functor_analysis_type::value_type>(f); + } + + template + inline int team_size_max(const FunctorType& f, const ReducerType&, + const ParallelReduceTag&) const { + using closure_type = + Impl::ParallelReduce, + TeamPolicy, Kokkos::HIP>; + return internal_team_size_common(f); + } + + template + int team_size_recommended(FunctorType const& f, ParallelForTag const&) const { + using closure_type = + Impl::ParallelFor>; + + return internal_team_size_common( + f); + } + + template + inline int team_size_recommended(FunctorType const& f, + ParallelReduceTag const&) const { + using functor_analysis_type = + Impl::FunctorAnalysis; + using closure_type = Impl::ParallelReduce< + CombinedFunctorReducer, + TeamPolicy, Kokkos::HIP>; + return internal_team_size_common< + BlockType::Preferred, closure_type, + typename functor_analysis_type::value_type>(f); + } + + template + int team_size_recommended(FunctorType const& f, ReducerType const&, + ParallelReduceTag const&) const { + using closure_type = + Impl::ParallelReduce, + TeamPolicy, Kokkos::HIP>; + return internal_team_size_common(f); + } + + inline bool impl_auto_vector_length() const { return m_tune_vector_length; } + inline bool impl_auto_team_size() const { return m_tune_team_size; } + static int vector_length_max() { return HIPTraits::WarpSize; } + + static int verify_requested_vector_length(int requested_vector_length) { + int test_vector_length = + std::min(requested_vector_length, vector_length_max()); + + // Allow only power-of-two vector_length + if (!(is_integral_power_of_two(test_vector_length))) { + int test_pow2 = 1; + constexpr int warp_size = HIPTraits::WarpSize; + while (test_pow2 < warp_size) { + test_pow2 <<= 1; + if (test_pow2 > test_vector_length) { + break; + } + } + test_vector_length = test_pow2 >> 1; + } + + return test_vector_length; + } + + inline static int scratch_size_max(int level) { + // HIP Teams use (team_size + 2)*sizeof(double) shared memory for team + // reductions. They also use one int64_t in static shared memory for a + // shared ID. Furthermore, they use additional scratch memory in some + // reduction scenarios, which depend on the size of the value_type and is + // NOT captured here + constexpr size_t max_possible_team_size = 1024; + constexpr size_t max_reserved_shared_mem_per_team = + (max_possible_team_size + 2) * sizeof(double) + sizeof(int64_t); + // arbitrarily setting level 1 scratch limit to 20MB, for a + // MI250 that would give us about 4.4GB for 2 teams per CU + constexpr size_t max_l1_scratch_size = 20 * 1024 * 1024; + + size_t max_shmem = HIP().hip_device_prop().sharedMemPerBlock; + return (level == 0 ? max_shmem - max_reserved_shared_mem_per_team + : max_l1_scratch_size); + } + + inline void impl_set_vector_length(size_t size) { m_vector_length = size; } + inline void impl_set_team_size(size_t size) { m_team_size = size; } + int impl_vector_length() const { return m_vector_length; } + + int team_size() const { return m_team_size; } + + int league_size() const { return m_league_size; } + + size_t scratch_size(int level, int team_size_ = -1) const { + if (team_size_ < 0) team_size_ = m_team_size; + return m_team_scratch_size[level] + + team_size_ * m_thread_scratch_size[level]; + } + + size_t team_scratch_size(int level) const { + return m_team_scratch_size[level]; + } + + size_t thread_scratch_size(int level) const { + return m_thread_scratch_size[level]; + } + + typename traits::execution_space space() const { return m_space; } + + TeamPolicyInternal() + : m_space(typename traits::execution_space()), + m_league_size(0), + m_team_size(-1), + m_vector_length(0), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(HIPTraits::WarpSize), + m_tune_team_size(false), + m_tune_vector_length(false) {} + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + int team_size_request, int vector_length_request = 1) + : m_space(space_), + m_league_size(league_size_), + m_team_size(team_size_request), + m_vector_length( + (vector_length_request > 0) + ? verify_requested_vector_length(vector_length_request) + : (verify_requested_vector_length(1))), + m_team_scratch_size{0, 0}, + m_thread_scratch_size{0, 0}, + m_chunk_size(HIPTraits::WarpSize), + m_tune_team_size(bool(team_size_request <= 0)), + m_tune_vector_length(bool(vector_length_request <= 0)) { + // Make sure league size is permissible + if (league_size_ >= static_cast(hip_internal_maximum_grid_count()[0])) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + + // Make sure total block size is permissible + if (m_team_size * m_vector_length > HIPTraits::MaxThreadsPerBlock) { + Impl::throw_runtime_exception( + std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " + "Team size x vector length must be smaller than 1024.")); + } + } + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : TeamPolicyInternal(space_, league_size_, -1, vector_length_request) {} + // FLAG + /** \brief Specify league size and team size, request vector length*/ + TeamPolicyInternal(const execution_space space_, int league_size_, + int team_size_request, + const Kokkos::AUTO_t& /* vector_length_request */ + ) + : TeamPolicyInternal(space_, league_size_, team_size_request, -1) + + {} + + /** \brief Specify league size, request team size and vector length*/ + TeamPolicyInternal(const execution_space space_, int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + const Kokkos::AUTO_t& /* vector_length_request */ + + ) + : TeamPolicyInternal(space_, league_size_, -1, -1) + + {} + + TeamPolicyInternal(int league_size_, int team_size_request, + int vector_length_request = 1) + : TeamPolicyInternal(typename traits::execution_space(), league_size_, + team_size_request, vector_length_request) {} + + TeamPolicyInternal(int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : TeamPolicyInternal(typename traits::execution_space(), league_size_, -1, + vector_length_request) {} + + /** \brief Specify league size and team size, request vector length*/ + TeamPolicyInternal(int league_size_, int team_size_request, + const Kokkos::AUTO_t& /* vector_length_request */ + + ) + : TeamPolicyInternal(typename traits::execution_space(), league_size_, + team_size_request, -1) + + {} + + /** \brief Specify league size, request team size and vector length*/ + TeamPolicyInternal(int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + const Kokkos::AUTO_t& /* vector_length_request */ + + ) + : TeamPolicyInternal(typename traits::execution_space(), league_size_, -1, + -1) {} + + int chunk_size() const { return m_chunk_size; } + + TeamPolicyInternal& set_chunk_size(typename traits::index_type chunk_size_) { + m_chunk_size = chunk_size_; + return *this; + } + + /** \brief set per team scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerTeamValue const& per_team) { + m_team_scratch_size[level] = per_team.value; + return *this; + } + + /** \brief set per thread scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerThreadValue const& per_thread) { + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + /** \brief set per thread and per team scratch size for a specific level of + * the scratch hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, PerTeamValue const& per_team, + PerThreadValue const& per_thread) { + m_team_scratch_size[level] = per_team.value; + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + using member_type = Kokkos::Impl::HIPTeamMember; + + protected: + template + int internal_team_size_common(FunctorType const& f) const { + const unsigned shmem_block = team_scratch_size(0) + 2 * sizeof(double); + unsigned shmem_thread = thread_scratch_size(0) + sizeof(double); + using Tag = typename PatternTagFromImplSpecialization::type; + if constexpr (std::is_same_v) { + using Interface = + typename Impl::DeduceFunctorPatternInterface::type; + using Analysis = + Impl::FunctorAnalysis; + shmem_thread += + ((Analysis::StaticValueSize != 0) ? 0 : Analysis::value_size(f)); + } + const int vector_length = impl_vector_length(); + + const auto functor = [&f, shmem_block, shmem_thread, vector_length]( + const hipFuncAttributes& attr, int block_size) { + int functor_shmem = + ::Kokkos::Impl::FunctorTeamShmemSize::value( + f, block_size / vector_length); + return shmem_block + shmem_thread * (block_size / vector_length) + + functor_shmem + attr.sharedSizeBytes; + }; + int block_size; + if constexpr (BlockSize == BlockType::Max) { + block_size = hip_get_max_team_blocksize( + space().impl_internal_space_instance(), functor); + } else { + block_size = + hip_get_preferred_team_blocksize( + space().impl_internal_space_instance(), functor); + } + + if (block_size == 0) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::ParallelFor/Reduce< HIP > could not find a valid " + "team size.")); + } + if constexpr (std::is_same_v) { + return block_size / impl_vector_length(); + } else { + // Currently we require Power-of-2 team size for reductions. + int p2 = 1; + while (p2 <= block_size) p2 *= 2; + p2 /= 2; + return p2 / impl_vector_length(); + } + } +}; + +__device__ inline int64_t hip_get_scratch_index(HIP::size_type league_size, + int32_t* scratch_locks, + size_t num_scratch_locks) { + int64_t threadid = 0; + __shared__ int64_t base_thread_id; + if (threadIdx.x == 0 && threadIdx.y == 0) { + int64_t const wraparound_len = + Kokkos::min(int64_t(league_size), + int64_t(num_scratch_locks) / (blockDim.x * blockDim.y)); + threadid = (blockIdx.x * blockDim.z + threadIdx.z) % wraparound_len; + threadid *= blockDim.x * blockDim.y; + int done = 0; + while (!done) { + done = (0 == atomicCAS(&scratch_locks[threadid], 0, 1)); + if (!done) { + threadid += blockDim.x * blockDim.y; + if (int64_t(threadid + blockDim.x * blockDim.y) >= + wraparound_len * blockDim.x * blockDim.y) + threadid = 0; + } + } + base_thread_id = threadid; + } + __syncthreads(); + threadid = base_thread_id; + return threadid; +} + +__device__ inline void hip_release_scratch_index(int32_t* scratch_locks, + int64_t threadid) { + __syncthreads(); + if (threadIdx.x == 0 && threadIdx.y == 0) { + scratch_locks[threadid] = 0; + } +} + +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_UniqueToken.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_UniqueToken.hpp index 313e5f52172..3d70b596463 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_UniqueToken.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_UniqueToken.hpp @@ -19,7 +19,6 @@ #include #include -#include namespace Kokkos { diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ZeroMemset.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ZeroMemset.hpp index 5c40d0fbc8d..4bca29868f7 100644 --- a/lib/kokkos/core/src/HIP/Kokkos_HIP_ZeroMemset.hpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ZeroMemset.hpp @@ -25,19 +25,11 @@ namespace Impl { template struct ZeroMemset> { - ZeroMemset(const HIP& exec_space, const View& dst, - typename View::const_value_type&) { + ZeroMemset(const HIP& exec_space, const View& dst) { KOKKOS_IMPL_HIP_SAFE_CALL(hipMemsetAsync( dst.data(), 0, dst.size() * sizeof(typename View::value_type), exec_space.hip_stream())); } - - ZeroMemset(const View& dst, - typename View::const_value_type&) { - KOKKOS_IMPL_HIP_SAFE_CALL( - hipMemset(dst.data(), 0, - dst.size() * sizeof(typename View::value_type))); - } }; } // namespace Impl diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp index 4a40ffcaa4f..6d541a64148 100644 --- a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp @@ -103,6 +103,7 @@ void HPX::print_configuration(std::ostream &os, const bool) const { os << hpx::configuration_string() << '\n'; } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 bool &HPX::impl_get_in_parallel() noexcept { static thread_local bool in_parallel = false; return in_parallel; @@ -127,6 +128,7 @@ HPX::impl_not_in_parallel_scope::~impl_not_in_parallel_scope() noexcept { KOKKOS_EXPECTS(!impl_get_in_parallel()); impl_get_in_parallel() = true; } +#endif void HPX::impl_decrement_active_parallel_region_count() { std::unique_lock l(m_active_parallel_region_count_mutex); diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX.hpp index 1dfc5b40646..26181a7c05d 100644 --- a/lib/kokkos/core/src/HPX/Kokkos_HPX.hpp +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX.hpp @@ -27,14 +27,6 @@ static_assert(false, #include -#include -#include -#include - -#ifdef KOKKOS_ENABLE_HBWSPACE -#include -#endif - #include #include #include @@ -59,6 +51,7 @@ static_assert(false, #include +#include #include #include #include @@ -201,6 +194,7 @@ class HPX { return impl_get_instance_data().m_instance_id; } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 static bool &impl_get_in_parallel() noexcept; struct impl_in_parallel_scope { @@ -223,9 +217,10 @@ class HPX { delete; }; - static bool in_parallel(HPX const & = HPX()) noexcept { + KOKKOS_DEPRECATED static bool in_parallel(HPX const & = HPX()) noexcept { return impl_get_in_parallel(); } +#endif static void impl_decrement_active_parallel_region_count(); static void impl_increment_active_parallel_region_count(); @@ -248,18 +243,6 @@ class HPX { #endif } -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - template - KOKKOS_DEPRECATED static void partition_master( - F const &, int requested_num_partitions = 0, int = 0) { - if (requested_num_partitions > 1) { - Kokkos::abort( - "Kokkos::Experimental::HPX::partition_master: can't partition an " - "HPX instance\n"); - } - } -#endif - #ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 static int concurrency(); #else @@ -355,7 +338,9 @@ class HPX { hpx::threads::thread_stacksize::default_) const { impl_bulk_plain_erased(force_synchronous, is_light_weight_policy, {[functor](Index i) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 impl_in_parallel_scope p; +#endif functor.execute_range(i); }}, n, stacksize); @@ -417,15 +402,21 @@ class HPX { hpx::threads::thread_stacksize::default_) const { impl_bulk_setup_finalize_erased(force_synchronous, is_light_weight_policy, {[functor](Index i) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 impl_in_parallel_scope p; +#endif functor.execute_range(i); }}, {[functor]() { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 impl_in_parallel_scope p; +#endif functor.setup(); }}, {[functor]() { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 impl_in_parallel_scope p; +#endif functor.finalize(); }}, n, stacksize); @@ -1292,6 +1283,7 @@ class ParallelScan, const WorkRange range(m_policy, t, num_worker_threads); execute_chunk(range.begin(), range.end(), update_sum, false); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 { // Since arrive_and_wait may yield and resume on another worker thread we // set in_parallel = false on the current thread before suspending and set @@ -1299,6 +1291,9 @@ class ParallelScan, Kokkos::Experimental::HPX::impl_not_in_parallel_scope p; barrier.arrive_and_wait(); } +#else + barrier.arrive_and_wait(); +#endif if (t == 0) { final_reducer.init(reinterpret_cast( @@ -1320,6 +1315,7 @@ class ParallelScan, } } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 { // Since arrive_and_wait may yield and resume on another worker thread we // set in_parallel = false on the current thread before suspending and set @@ -1327,6 +1323,9 @@ class ParallelScan, Kokkos::Experimental::HPX::impl_not_in_parallel_scope p; barrier.arrive_and_wait(); } +#else + barrier.arrive_and_wait(); +#endif reference_type update_base = Analysis::Reducer::reference(reinterpret_cast( @@ -1407,6 +1406,7 @@ class ParallelScanWithTotal, const WorkRange range(m_policy, t, num_worker_threads); execute_chunk(range.begin(), range.end(), update_sum, false); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 { // Since arrive_and_wait may yield and resume on another worker thread we // set in_parallel = false on the current thread before suspending and set @@ -1414,6 +1414,9 @@ class ParallelScanWithTotal, Kokkos::Experimental::HPX::impl_not_in_parallel_scope p; barrier.arrive_and_wait(); } +#else + barrier.arrive_and_wait(); +#endif if (t == 0) { final_reducer.init(reinterpret_cast( @@ -1435,6 +1438,7 @@ class ParallelScanWithTotal, } } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 { // Since arrive_and_wait may yield and resume on another worker thread we // set in_parallel = false on the current thread before suspending and set @@ -1442,6 +1446,9 @@ class ParallelScanWithTotal, Kokkos::Experimental::HPX::impl_not_in_parallel_scope p; barrier.arrive_and_wait(); } +#else + barrier.arrive_and_wait(); +#endif reference_type update_base = Analysis::Reducer::reference(reinterpret_cast( diff --git a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp index c9080db01ca..297b1fadee9 100644 --- a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp +++ b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp @@ -73,7 +73,7 @@ is_less_than_value_initialized_variable(T arg) { // Checked narrowing conversion that calls abort if the cast changes the value template -constexpr To checked_narrow_cast(From arg) { +constexpr To checked_narrow_cast(From arg, std::size_t idx) { constexpr const bool is_different_signedness = (std::is_signed::value != std::is_signed::value); auto const ret = static_cast(arg); @@ -81,7 +81,12 @@ constexpr To checked_narrow_cast(From arg) { (is_different_signedness && is_less_than_value_initialized_variable(arg) != is_less_than_value_initialized_variable(ret))) { - Kokkos::abort("unsafe narrowing conversion"); + auto msg = + "Kokkos::MDRangePolicy bound type error: an unsafe implicit conversion " + "is performed on a bound (" + + std::to_string(arg) + ") in dimension (" + std::to_string(idx) + + "), which may not preserve its original value.\n"; + Kokkos::abort(msg.c_str()); } return ret; } @@ -96,15 +101,15 @@ constexpr Array to_array_potentially_narrowing(const U (&init)[M]) { using T = typename Array::value_type; Array a{}; constexpr std::size_t N = a.size(); - static_assert(M <= N, ""); + static_assert(M <= N); auto* ptr = a.data(); // NOTE equivalent to // std::transform(std::begin(init), std::end(init), a.data(), // [](U x) { return static_cast(x); }); // except that std::transform is not constexpr. - for (auto x : init) { - *ptr++ = checked_narrow_cast(x); - (void)checked_narrow_cast(x); // see note above + for (std::size_t i = 0; i < M; ++i) { + *ptr++ = checked_narrow_cast(init[i], i); + (void)checked_narrow_cast(init[i], i); // see note above } return a; } @@ -120,10 +125,10 @@ constexpr NVCC_WONT_LET_ME_CALL_YOU_Array to_array_potentially_narrowing( using T = typename NVCC_WONT_LET_ME_CALL_YOU_Array::value_type; NVCC_WONT_LET_ME_CALL_YOU_Array a{}; constexpr std::size_t N = a.size(); - static_assert(M <= N, ""); + static_assert(M <= N); for (std::size_t i = 0; i < M; ++i) { - a[i] = checked_narrow_cast(other[i]); - (void)checked_narrow_cast(other[i]); // see note above + a[i] = checked_narrow_cast(other[i], i); + (void)checked_narrow_cast(other[i], i); // see note above } return a; } @@ -150,9 +155,20 @@ TileSizeProperties get_tile_size_properties(const ExecutionSpace&) { // multi-dimensional iteration pattern template -struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { - using traits = Kokkos::Impl::PolicyTraits; - using range_policy = RangePolicy; +struct MDRangePolicy; + +// Note: If MDRangePolicy has a primary template, implicit CTAD (deduction +// guides) are generated -> MDRangePolicy<> by some compilers, which is +// incorrect. By making it a template specialization instead, no implicit CTAD +// is generated. This works because there has to be at least one property +// specified (which is Rank<...>); otherwise, we'd get the static_assert +// "Kokkos::Error: MD iteration pattern not defined". This template +// specialization uses in all places for correctness. +template +struct MDRangePolicy + : public Kokkos::Impl::PolicyTraits { + using traits = Kokkos::Impl::PolicyTraits; + using range_policy = RangePolicy; typename traits::execution_space m_space; @@ -161,8 +177,8 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { typename traits::schedule_type, typename traits::index_type>; using execution_policy = - MDRangePolicy; // needed for is_execution_space - // interrogation + MDRangePolicy; // needed for is_execution_policy + // interrogation template friend struct MDRangePolicy; @@ -327,6 +343,20 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { } for (int i = rank_start; i != rank_end; i += increment) { const index_type length = m_upper[i] - m_lower[i]; + + if (m_upper[i] < m_lower[i]) { + std::string msg = + "Kokkos::MDRangePolicy bounds error: The lower bound (" + + std::to_string(m_lower[i]) + ") is greater than its upper bound (" + + std::to_string(m_upper[i]) + ") in dimension " + std::to_string(i) + + ".\n"; +#if !defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) + Kokkos::abort(msg.c_str()); +#elif defined(KOKKOS_ENABLE_DEPRECATION_WARNINGS) + Kokkos::Impl::log_warning(msg); +#endif + } + if (m_tile[i] <= 0) { m_tune_tile_size = true; if ((inner_direction == Iterate::Right && (i < rank - 1)) || @@ -358,6 +388,60 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { } }; +template +MDRangePolicy(const LT (&)[N], const UT (&)[N])->MDRangePolicy>; + +template +MDRangePolicy(const LT (&)[N], const UT (&)[N], const TT (&)[TN]) + ->MDRangePolicy>; + +template +MDRangePolicy(DefaultExecutionSpace const&, const LT (&)[N], const UT (&)[N]) + ->MDRangePolicy>; + +template +MDRangePolicy(DefaultExecutionSpace const&, const LT (&)[N], const UT (&)[N], + const TT (&)[TN]) + ->MDRangePolicy>; + +template >> +MDRangePolicy(ES const&, const LT (&)[N], const UT (&)[N]) + ->MDRangePolicy>; + +template >> +MDRangePolicy(ES const&, const LT (&)[N], const UT (&)[N], const TT (&)[TN]) + ->MDRangePolicy>; + +template +MDRangePolicy(Array const&, Array const&)->MDRangePolicy>; + +template +MDRangePolicy(Array const&, Array const&, Array const&) + ->MDRangePolicy>; + +template +MDRangePolicy(DefaultExecutionSpace const&, Array const&, + Array const&) + ->MDRangePolicy>; + +template +MDRangePolicy(DefaultExecutionSpace const&, Array const&, + Array const&, Array const&) + ->MDRangePolicy>; + +template >> +MDRangePolicy(ES const&, Array const&, Array const&) + ->MDRangePolicy>; + +template >> +MDRangePolicy(ES const&, Array const&, Array const&, + Array const&) + ->MDRangePolicy>; + } // namespace Kokkos #endif // KOKKOS_CORE_EXP_MD_RANGE_POLICY_HPP diff --git a/lib/kokkos/core/src/Kokkos_Array.hpp b/lib/kokkos/core/src/Kokkos_Array.hpp index 82ceaaec218..ba1626bb72e 100644 --- a/lib/kokkos/core/src/Kokkos_Array.hpp +++ b/lib/kokkos/core/src/Kokkos_Array.hpp @@ -22,6 +22,7 @@ #endif #include +#include #include #include @@ -320,6 +321,9 @@ struct Array::strided> { : m_elem(arg_ptr), m_size(arg_size), m_stride(arg_stride) {} }; +template +Array(T, Us...)->Array; + } // namespace Kokkos // diff --git a/lib/kokkos/core/src/Kokkos_Assert.hpp b/lib/kokkos/core/src/Kokkos_Assert.hpp index c3b9004734a..6fea286005e 100644 --- a/lib/kokkos/core/src/Kokkos_Assert.hpp +++ b/lib/kokkos/core/src/Kokkos_Assert.hpp @@ -44,9 +44,6 @@ __LINE__) " \n"); \ } \ } -// some projects already define this for themselves, so don't mess -// them up -#ifndef KOKKOS_ASSERT #define KOKKOS_ASSERT(...) \ { \ if (!bool(__VA_ARGS__)) { \ @@ -58,8 +55,7 @@ __LINE__) " \n"); \ } \ } -#endif // ifndef KOKKOS_ASSERT -#else // not debug mode +#else // not debug mode #define KOKKOS_EXPECTS(...) #define KOKKOS_ENSURES(...) #ifndef KOKKOS_ASSERT diff --git a/lib/kokkos/core/src/Kokkos_Atomics_Desul_Volatile_Wrapper.hpp b/lib/kokkos/core/src/Kokkos_Atomics_Desul_Volatile_Wrapper.hpp index 1c434746321..9acacef901a 100644 --- a/lib/kokkos/core/src/Kokkos_Atomics_Desul_Volatile_Wrapper.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomics_Desul_Volatile_Wrapper.hpp @@ -25,7 +25,7 @@ static_assert(false, #include #include -#ifdef KOKKOS_INTERNAL_NOT_PARALLEL +#ifdef KOKKOS_ENABLE_ATOMICS_BYPASS #define KOKKOS_DESUL_MEM_SCOPE desul::MemoryScopeCaller() #else #define KOKKOS_DESUL_MEM_SCOPE desul::MemoryScopeDevice() diff --git a/lib/kokkos/core/src/Kokkos_Atomics_Desul_Wrapper.hpp b/lib/kokkos/core/src/Kokkos_Atomics_Desul_Wrapper.hpp index bda37839805..eebdd20f15d 100644 --- a/lib/kokkos/core/src/Kokkos_Atomics_Desul_Wrapper.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomics_Desul_Wrapper.hpp @@ -49,7 +49,7 @@ inline const char* atomic_query_version() { return "KOKKOS_DESUL_ATOMICS"; } #endif // ============================================================ -#ifdef KOKKOS_INTERNAL_NOT_PARALLEL +#ifdef KOKKOS_ENABLE_ATOMICS_BYPASS #define KOKKOS_DESUL_MEM_SCOPE desul::MemoryScopeCaller() #else #define KOKKOS_DESUL_MEM_SCOPE desul::MemoryScopeDevice() diff --git a/lib/kokkos/core/src/Kokkos_Clamp.hpp b/lib/kokkos/core/src/Kokkos_Clamp.hpp new file mode 100644 index 00000000000..033cde9ab84 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_Clamp.hpp @@ -0,0 +1,41 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_CLAMP_HPP +#define KOKKOS_CLAMP_HPP + +#include + +namespace Kokkos { + +template +constexpr KOKKOS_INLINE_FUNCTION const T& clamp(const T& value, const T& lo, + const T& hi) { + KOKKOS_EXPECTS(!(hi < lo)); + return (value < lo) ? lo : (hi < value) ? hi : value; +} + +template +constexpr KOKKOS_INLINE_FUNCTION const T& clamp(const T& value, const T& lo, + const T& hi, + ComparatorType comp) { + KOKKOS_EXPECTS(!comp(hi, lo)); + return comp(value, lo) ? lo : comp(hi, value) ? hi : value; +} + +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/Kokkos_CopyViews.hpp b/lib/kokkos/core/src/Kokkos_CopyViews.hpp index a0ca55be704..08f6ba8d696 100644 --- a/lib/kokkos/core/src/Kokkos_CopyViews.hpp +++ b/lib/kokkos/core/src/Kokkos_CopyViews.hpp @@ -22,6 +22,7 @@ static_assert(false, #ifndef KOKKOS_COPYVIEWS_HPP_ #define KOKKOS_COPYVIEWS_HPP_ #include +#include #include #include #include @@ -612,12 +613,17 @@ void view_copy(const DstType& dst, const SrcType& src) { }; if (!DstExecCanAccessSrc && !SrcExecCanAccessDst) { - std::string message( - "Error: Kokkos::deep_copy with no available copy mechanism: "); - message += src.label(); - message += " to "; - message += dst.label(); - Kokkos::Impl::throw_runtime_exception(message); + std::ostringstream ss; + ss << "Error: Kokkos::deep_copy with no available copy mechanism: " + << "from source view (\"" << src.label() << "\") to destination view (\"" + << dst.label() << "\").\n" + << "There is no common execution space that can access both source's " + "space\n" + << "(" << src_memory_space().name() << ") and destination's space (" + << dst_memory_space().name() << "), " + << "so source and destination\n" + << "must be contiguous and have the same layout.\n"; + Kokkos::Impl::throw_runtime_exception(ss.str()); } // Figure out iteration order in case we need it @@ -1330,13 +1336,12 @@ inline void contiguous_fill( // Default implementation for execution spaces that don't provide a definition template struct ZeroMemset { - ZeroMemset(const ExecutionSpace& exec_space, const ViewType& dst, - typename ViewType::const_value_type& value) { - contiguous_fill(exec_space, dst, value); - } - - ZeroMemset(const ViewType& dst, typename ViewType::const_value_type& value) { - contiguous_fill(ExecutionSpace(), dst, value); + ZeroMemset(const ExecutionSpace& exec_space, const ViewType& dst) { + using ValueType = typename ViewType::value_type; + alignas(alignof(ValueType)) unsigned char + zero_initialized_storage[sizeof(ValueType)] = {}; + contiguous_fill(exec_space, dst, + *reinterpret_cast(zero_initialized_storage)); } }; @@ -1348,13 +1353,18 @@ inline std::enable_if_t< contiguous_fill_or_memset( const ExecutionSpace& exec_space, const View& dst, typename ViewTraits::const_value_type& value) { -// On A64FX memset seems to do the wrong thing with regards to first touch -// leading to the significant performance issues -#ifndef KOKKOS_ARCH_A64FX - if (Impl::is_zero_byte(value)) - ZeroMemset>(exec_space, dst, value); - else + // With OpenMP, using memset has significant performance issues. + if (Impl::is_zero_byte(value) +#ifdef KOKKOS_ENABLE_OPENMP + && !std::is_same_v #endif + ) + // FIXME intel/19 icpc fails to deduce template parameters here, + // resulting in compilation errors; explicitly passing the template + // parameters to ZeroMemset helps workaround the issue + // See https://github.com/kokkos/kokkos/issues/6775 + ZeroMemset>(exec_space, dst); + else contiguous_fill(exec_space, dst, value); } @@ -1379,15 +1389,20 @@ contiguous_fill_or_memset( typename ViewTraits::const_value_type& value) { using ViewType = View; using exec_space_type = typename ViewType::execution_space; + exec_space_type exec; // On A64FX memset seems to do the wrong thing with regards to first touch // leading to the significant performance issues #ifndef KOKKOS_ARCH_A64FX if (Impl::is_zero_byte(value)) - ZeroMemset>(dst, value); + // FIXME intel/19 icpc fails to deduce template parameters here, + // resulting in compilation errors; explicitly passing the template + // parameters to ZeroMemset helps workaround the issue + // See https://github.com/kokkos/kokkos/issues/6775 + ZeroMemset(exec, dst); else #endif - contiguous_fill(exec_space_type(), dst, value); + contiguous_fill(exec, dst, value); } template diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index 805411a699e..1f146563be2 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -46,14 +46,15 @@ #include #include -#include #include -#include +#include +#include #include #include #include #include #include +#include #include #include #include @@ -101,6 +102,7 @@ void declare_configuration_metadata(const std::string& category, [[nodiscard]] bool is_finalized() noexcept; [[nodiscard]] int device_id() noexcept; +[[nodiscard]] int num_devices() noexcept; [[nodiscard]] int num_threads() noexcept; bool show_warnings() noexcept; @@ -300,9 +302,6 @@ std::vector partition_space(ExecSpace const& space, // implementation of the RAII wrapper is using Kokkos::single. #include -// Specializations required after core definitions -#include - //---------------------------------------------------------------------------- // Redefinition of the macros min and max if we pushed them at entry of // Kokkos_Core.hpp diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 44f1c5b42f4..7edb35f00eb 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -30,10 +30,6 @@ #include #include -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -#include -#endif - //---------------------------------------------------------------------------- // Have assumed a 64-bit build (8-byte pointers) throughout the code base. // 32-bit build allowed but unsupported. @@ -75,9 +71,6 @@ template struct Device; // forward declare here so that backend initializer calls can use it. -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -struct InitArguments; -#endif class InitializationSettings; } // namespace Kokkos @@ -262,12 +255,6 @@ KOKKOS_FUNCTION void runtime_check_memory_access_violation( } } // namespace Impl - -namespace Experimental { -template -class LogicalMemorySpace; -} - } // namespace Kokkos //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp index ae1585a4989..5f251eeb26a 100644 --- a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp @@ -28,6 +28,7 @@ static_assert(false, #include #include #include +#include //---------------------------------------------------------------------------- @@ -114,62 +115,67 @@ class RangePolicy : public Impl::PolicyTraits { m_granularity_mask(0) {} /** \brief Total range */ + template && + std::is_convertible_v), + bool> = false> + inline RangePolicy(const IndexType1 work_begin, const IndexType2 work_end) + : RangePolicy(typename traits::execution_space(), work_begin, work_end) {} + + /** \brief Total range */ + template && + std::is_convertible_v), + bool> = false> inline RangePolicy(const typename traits::execution_space& work_space, - const member_type work_begin, const member_type work_end) + const IndexType1 work_begin, const IndexType2 work_end) : m_space(work_space), - m_begin(work_begin < work_end ? work_begin : 0), - m_end(work_begin < work_end ? work_end : 0), + m_begin(work_begin), + m_end(work_end), m_granularity(0), m_granularity_mask(0) { + check_conversion_safety(work_begin); + check_conversion_safety(work_end); + check_bounds_validity(); set_auto_chunk_size(); } - /** \brief Total range */ - inline RangePolicy(const member_type work_begin, const member_type work_end) - : RangePolicy(typename traits::execution_space(), work_begin, work_end) { - set_auto_chunk_size(); - } - - /** \brief Total range */ - template - inline RangePolicy(const typename traits::execution_space& work_space, - const member_type work_begin, const member_type work_end, - Args... args) + template && + std::is_convertible_v), + bool> = false> + RangePolicy(const typename traits::execution_space& work_space, + const IndexType1 work_begin, const IndexType2 work_end, + const ChunkSize chunk_size) : m_space(work_space), - m_begin(work_begin < work_end ? work_begin : 0), - m_end(work_begin < work_end ? work_end : 0), + m_begin(work_begin), + m_end(work_end), m_granularity(0), m_granularity_mask(0) { - set_auto_chunk_size(); - set(args...); + check_conversion_safety(work_begin); + check_conversion_safety(work_end); + check_bounds_validity(); + set_chunk_size(chunk_size.value); } /** \brief Total range */ - template - inline RangePolicy(const member_type work_begin, const member_type work_end, - Args... args) - : RangePolicy(typename traits::execution_space(), work_begin, work_end) { - set_auto_chunk_size(); - set(args...); - } - - private: - inline void set() {} + template && + std::is_convertible_v), + bool> = false> + RangePolicy(const IndexType1 work_begin, const IndexType2 work_end, + const ChunkSize chunk_size) + : RangePolicy(typename traits::execution_space(), work_begin, work_end, + chunk_size) {} public: - template - inline void set(Args...) { - static_assert( - 0 == sizeof...(Args), - "Kokkos::RangePolicy: unhandled constructor arguments encountered."); - } - - template - inline void set(const ChunkSize& chunksize, Args... args) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED_WITH_COMMENT("Use set_chunk_size instead") + inline void set(ChunkSize chunksize) { m_granularity = chunksize.value; m_granularity_mask = m_granularity - 1; - set(args...); } +#endif public: /** \brief return chunk_size */ @@ -218,6 +224,67 @@ class RangePolicy : public Impl::PolicyTraits { m_granularity_mask = m_granularity - 1; } + void check_bounds_validity() { + if (m_end < m_begin) { + std::string msg = "Kokkos::RangePolicy bounds error: The lower bound (" + + std::to_string(m_begin) + + ") is greater than the upper bound (" + + std::to_string(m_end) + ").\n"; +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE_4 + Kokkos::abort(msg.c_str()); +#endif + m_begin = 0; + m_end = 0; +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + Kokkos::Impl::log_warning(msg); +#endif + } + } + + // To be replaced with std::in_range (c++20) + template + static void check_conversion_safety(const IndexType bound) { +#if !defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) || \ + defined(KOKKOS_ENABLE_DEPRECATION_WARNINGS) + + std::string msg = + "Kokkos::RangePolicy bound type error: an unsafe implicit conversion " + "is performed on a bound (" + + std::to_string(bound) + + "), which may " + "not preserve its original value.\n"; + bool warn = false; + + if constexpr (std::is_signed_v != + std::is_signed_v) { + // check signed to unsigned + if constexpr (std::is_signed_v) + warn |= (bound < static_cast( + std::numeric_limits::min())); + + // check unsigned to signed + if constexpr (std::is_signed_v) + warn |= (bound > static_cast( + std::numeric_limits::max())); + } + + // check narrowing + warn |= (static_cast(static_cast(bound)) != bound); + + if (warn) { +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE_4 + Kokkos::abort(msg.c_str()); +#endif + +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + Kokkos::Impl::log_warning(msg); +#endif + } +#else + (void)bound; +#endif + } + public: /** \brief Subrange for a partition's rank and size. * @@ -261,6 +328,21 @@ class RangePolicy : public Impl::PolicyTraits { }; }; +RangePolicy()->RangePolicy<>; + +RangePolicy(int64_t, int64_t)->RangePolicy<>; +RangePolicy(int64_t, int64_t, ChunkSize const&)->RangePolicy<>; + +RangePolicy(DefaultExecutionSpace const&, int64_t, int64_t)->RangePolicy<>; +RangePolicy(DefaultExecutionSpace const&, int64_t, int64_t, ChunkSize const&) + ->RangePolicy<>; + +template >> +RangePolicy(ES const&, int64_t, int64_t)->RangePolicy; + +template >> +RangePolicy(ES const&, int64_t, int64_t, ChunkSize const&)->RangePolicy; + } // namespace Kokkos //---------------------------------------------------------------------------- @@ -983,7 +1065,16 @@ template const& policy, Lambda const& lambda, ReducerValueType& val) { + static_assert(/*!Kokkos::is_view_v &&*/ + !std::is_array_v && + !std::is_pointer_v && + !Kokkos::is_reducer_v, + "Only scalar return types are allowed!"); + + val = ReducerValueType{}; Impl::md_parallel_impl(policy, lambda, val); + policy.team.team_reduce( + Kokkos::Sum{val}); } template @@ -997,7 +1088,29 @@ template const& policy, Lambda const& lambda, ReducerValueType& val) { + static_assert(/*!Kokkos::is_view_v &&*/ + !std::is_array_v && + !std::is_pointer_v && + !Kokkos::is_reducer_v, + "Only a scalar return types are allowed!"); + + val = ReducerValueType{}; Impl::md_parallel_impl(policy, lambda, val); + if constexpr (false +#ifdef KOKKOS_ENABLE_CUDA + || std::is_same_v +#elif defined(KOKKOS_ENABLE_HIP) + || std::is_same_v +#elif defined(KOKKOS_ENABLE_SYCL) + || std::is_same_v +#endif + ) + policy.team.vector_reduce( + Kokkos::Sum{ + val}); } template @@ -1011,7 +1124,31 @@ template const& policy, Lambda const& lambda, ReducerValueType& val) { + static_assert(/*!Kokkos::is_view_v &&*/ + !std::is_array_v && + !std::is_pointer_v && + !Kokkos::is_reducer_v, + "Only a scalar return types are allowed!"); + + val = ReducerValueType{}; Impl::md_parallel_impl(policy, lambda, val); + if constexpr (false +#ifdef KOKKOS_ENABLE_CUDA + || std::is_same_v +#elif defined(KOKKOS_ENABLE_HIP) + || std::is_same_v +#elif defined(KOKKOS_ENABLE_SYCL) + || std::is_same_v +#endif + ) + policy.team.vector_reduce( + Kokkos::Sum{ + val}); + policy.team.team_reduce( + Kokkos::Sum{val}); } template diff --git a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp b/lib/kokkos/core/src/Kokkos_HBWSpace.hpp deleted file mode 100644 index 369b7bafb7b..00000000000 --- a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp +++ /dev/null @@ -1,308 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#include -static_assert(false, - "Including non-public Kokkos header files is not allowed."); -#endif -#ifndef KOKKOS_HBWSPACE_HPP -#define KOKKOS_HBWSPACE_HPP - -#include -#ifdef KOKKOS_ENABLE_HBWSPACE - -#include - -namespace Kokkos { - -namespace Experimental { - -/// \class HBWSpace -/// \brief Memory management for host memory. -/// -/// HBWSpace is a memory space that governs host memory. "Host" -/// memory means the usual CPU-accessible memory. -class HBWSpace { - public: - //! Tag this class as a kokkos memory space - using memory_space = HBWSpace; - using size_type = size_t; - - /// \typedef execution_space - /// \brief Default execution space for this memory space. - /// - /// Every memory space has a default execution space. This is - /// useful for things like initializing a View (which happens in - /// parallel using the View's default execution space). - using execution_space = Kokkos::DefaultHostExecutionSpace; - - //! This memory space preferred device_type - using device_type = Kokkos::Device; - - /**\brief Default memory space instance */ - HBWSpace(); - HBWSpace(const HBWSpace& rhs) = default; - HBWSpace& operator=(const HBWSpace&) = default; - ~HBWSpace() = default; - - /**\brief Non-default memory space instance to choose allocation mechansim, - * if available */ - - enum AllocationMechanism { - STD_MALLOC, - POSIX_MEMALIGN, - POSIX_MMAP, - INTEL_MM_ALLOC - }; - - explicit HBWSpace(const AllocationMechanism&); - - /**\brief Allocate untracked memory in the space */ - void* allocate(const size_t arg_alloc_size) const; - void* allocate(const char* arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size = 0) const; - - /**\brief Deallocate untracked memory in the space */ - void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; - void deallocate(const char* arg_label, void* const arg_alloc_ptr, - const size_t arg_alloc_size, - const size_t arg_logical_size = 0) const; - - private: - template - friend class LogicalMemorySpace; - - void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size = 0, - const Kokkos::Tools::SpaceHandle = - Kokkos::Tools::make_space_handle(name())) const; - void impl_deallocate(const char* arg_label, void* const arg_alloc_ptr, - const size_t arg_alloc_size, - const size_t arg_logical_size = 0, - const Kokkos::Tools::SpaceHandle = - Kokkos::Tools::make_space_handle(name())) const; - - public: - /**\brief Return Name of the MemorySpace */ - static constexpr const char* name() { return "HBW"; } - - private: - AllocationMechanism m_alloc_mech; - friend class Kokkos::Impl::SharedAllocationRecord< - Kokkos::Experimental::HBWSpace, void>; -}; - -} // namespace Experimental - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -template <> -class SharedAllocationRecord - : public SharedAllocationRecord { - private: - friend Kokkos::Experimental::HBWSpace; - - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - static void deallocate(RecordBase*); - -#ifdef KOKKOS_ENABLE_DEBUG - /**\brief Root record for tracked allocations from this HBWSpace instance */ - static RecordBase s_root_record; -#endif - - const Kokkos::Experimental::HBWSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - SharedAllocationRecord( - const Kokkos::Experimental::HBWSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate); - - public: - inline std::string get_label() const { - return std::string(RecordBase::head()->m_label); - } - - KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( - const Kokkos::Experimental::HBWSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size) { - KOKKOS_IF_ON_HOST((return new SharedAllocationRecord(arg_space, arg_label, - arg_alloc_size);)) - KOKKOS_IF_ON_DEVICE(((void)arg_space; (void)arg_label; (void)arg_alloc_size; - return nullptr;)) - } - - /**\brief Allocate tracked memory in the space */ - static void* allocate_tracked(const Kokkos::Experimental::HBWSpace& arg_space, - const std::string& arg_label, - const size_t arg_alloc_size); - - /**\brief Reallocate tracked memory in the space */ - static void* reallocate_tracked(void* const arg_alloc_ptr, - const size_t arg_alloc_size); - - /**\brief Deallocate tracked memory in the space */ - static void deallocate_tracked(void* const arg_alloc_ptr); - - static SharedAllocationRecord* get_record(void* arg_alloc_ptr); - - static void print_records(std::ostream&, - const Kokkos::Experimental::HBWSpace&, - bool detail = false); -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -static_assert( - Kokkos::Impl::MemorySpaceAccess::assignable, - ""); - -template <> -struct MemorySpaceAccess { - enum : bool { assignable = true }; - enum : bool { accessible = true }; - enum : bool { deepcopy = true }; -}; - -template <> -struct MemorySpaceAccess { - enum : bool { assignable = false }; - enum : bool { accessible = true }; - enum : bool { deepcopy = true }; -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -template <> -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const DefaultHostExecutionSpace& exec, void* dst, const void* src, - size_t n) { - hostspace_parallel_deepcopy(exec, dst, src, n); - } -}; - -template -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { - exec.fence( - "Kokkos::Impl::DeepCopy -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const DefaultHostExecutionSpace& exec, void* dst, const void* src, - size_t n) { - hostspace_parallel_deepcopy(exec, dst, src, n); - } -}; - -template -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { - exec.fence( - "Kokkos::Impl::DeepCopy::DeepCopy: fence before copy"); - hostspace_parallel_deepcopy_async(copy_space, dst, src, n); - } -}; - -template <> -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const DefaultHostExecutionSpace& exec, void* dst, const void* src, - size_t n) { - hostspace_parallel_deepcopy(exec, dst, src, n); - } -}; - -template -struct DeepCopy { - DeepCopy(void* dst, const void* src, size_t n) { - hostspace_parallel_deepcopy(dst, src, n); - } - - DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { - exec.fence( - "Kokkos::Impl::DeepCopy::DeepCopy: fence before copy"); - hostspace_parallel_deepcopy_async(dst, src, n); - } -}; - -} // namespace Impl - -} // namespace Kokkos - -#endif -#endif // #define KOKKOS_HBWSPACE_HPP diff --git a/lib/kokkos/core/src/Kokkos_HostSpace.hpp b/lib/kokkos/core/src/Kokkos_HostSpace.hpp index 90d14040637..a1fb0f5a677 100644 --- a/lib/kokkos/core/src/Kokkos_HostSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HostSpace.hpp @@ -37,7 +37,6 @@ static_assert(false, #include #include "impl/Kokkos_HostSpace_deepcopy.hpp" -#include /*--------------------------------------------------------------------------*/ @@ -75,18 +74,35 @@ class HostSpace { /**\brief Non-default memory space instance to choose allocation mechansim, * if available */ - enum KOKKOS_DEPRECATED AllocationMechanism { - STD_MALLOC, - POSIX_MEMALIGN, - POSIX_MMAP, - INTEL_MM_ALLOC - }; +#if defined(KOKKOS_COMPILER_GNU) && KOKKOS_COMPILER_GNU < 1100 + // We see deprecation warnings even when not using the deprecated + // HostSpace constructor below when using gcc before release 11. + enum +#else + enum KOKKOS_DEPRECATED +#endif + AllocationMechanism { + STD_MALLOC, + POSIX_MEMALIGN, + POSIX_MMAP, + INTEL_MM_ALLOC + }; KOKKOS_DEPRECATED explicit HostSpace(const AllocationMechanism&); #endif /**\brief Allocate untracked memory in the space */ + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -98,9 +114,6 @@ class HostSpace { const size_t arg_logical_size = 0) const; private: - template - friend class Kokkos::Experimental::LogicalMemorySpace; - void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = @@ -117,7 +130,6 @@ class HostSpace { private: static constexpr const char* m_name = "Host"; - friend class Kokkos::Impl::SharedAllocationRecord; }; } // namespace Kokkos @@ -129,8 +141,7 @@ namespace Kokkos { namespace Impl { static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); template struct HostMirror { @@ -166,75 +177,7 @@ struct HostMirror { //---------------------------------------------------------------------------- -namespace Kokkos { - -namespace Impl { - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon { - private: - friend Kokkos::HostSpace; - friend class SharedAllocationRecordCommon; - - using base_t = SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - /**\brief Root record for tracked allocations from this HostSpace instance */ - static RecordBase s_root_record; -#endif - - Kokkos::HostSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - // This constructor does not forward to the one without exec_space arg - // in order to work around https://github.com/kokkos/kokkos/issues/5258 - // This constructor is templated so I can't just put it into the cpp file - // like the other constructor. - template - SharedAllocationRecord( - const ExecutionSpace& /* exec_space*/, const Kokkos::HostSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate) - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*RecordBase::m_alloc_ptr, - arg_label); - } - - SharedAllocationRecord( - const Kokkos::HostSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate); - - public: - KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( - const Kokkos::HostSpace& arg_space, const std::string& arg_label, - const size_t arg_alloc_size) { - KOKKOS_IF_ON_HOST((return new SharedAllocationRecord(arg_space, arg_label, - arg_alloc_size);)) - KOKKOS_IF_ON_DEVICE(((void)arg_space; (void)arg_label; (void)arg_alloc_size; - return nullptr;)) - } -}; - -} // namespace Impl - -} // namespace Kokkos +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(Kokkos::HostSpace); //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/Kokkos_LogicalSpaces.hpp b/lib/kokkos/core/src/Kokkos_LogicalSpaces.hpp deleted file mode 100644 index 1ee1d2c81fe..00000000000 --- a/lib/kokkos/core/src/Kokkos_LogicalSpaces.hpp +++ /dev/null @@ -1,413 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#include -static_assert(false, - "Including non-public Kokkos header files is not allowed."); -#endif -#ifndef KOKKOS_LOGICALSPACES_HPP -#define KOKKOS_LOGICALSPACES_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -namespace Kokkos { -namespace Experimental { -struct DefaultMemorySpaceNamer { - static constexpr const char* get_name() { - return "DefaultLogicalMemorySpaceName"; - } -}; - -struct LogicalSpaceSharesAccess { - struct shared_access {}; - struct no_shared_access {}; -}; - -/// \class LogicalMemorySpace -/// \brief -/// -/// LogicalMemorySpace is a space that is identical to another space, -/// but differentiable by name and template argument -template -class LogicalMemorySpace { -#ifdef KOKKOS_ENABLE_OPENMPTARGET - // [DZP] For some reason I don't yet know, using LogicalMemorySpaces - // inside an OpenMPTarget build causes errors in the - // SharedAllocationRecords of other types. This is my way of erroring - // a build if we instantiate a LogicalMemSpace in an OMPTarget build - static_assert(!std::is_same::value, - "Can't use LogicalMemorySpaces in an OpenMPTarget build, we're " - "debugging memory issues"); -#endif - public: - //! Tag this class as a kokkos memory space - using memory_space = LogicalMemorySpace; - using size_type = typename BaseSpace::size_type; - - /// \typedef execution_space - /// \brief Default execution space for this memory space. - /// - /// Every memory space has a default execution space. This is - /// useful for things like initializing a View (which happens in - /// parallel using the View's default execution space). - - using execution_space = - std::conditional_t::value, - typename BaseSpace::execution_space, - DefaultBaseExecutionSpace>; - - using device_type = Kokkos::Device; - - LogicalMemorySpace() = default; - - template - LogicalMemorySpace(Args&&... args) : underlying_space((Args &&) args...) {} - - /**\brief Allocate untracked memory in the space */ - void* allocate(const size_t arg_alloc_size) const { - return allocate("[unlabeled]", arg_alloc_size); - } - void* allocate(const char* arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size = 0) const { - return impl_allocate(arg_label, arg_alloc_size, arg_logical_size); - } - - /**\brief Deallocate untracked memory in the space */ - void deallocate(void* const arg_alloc_ptr, - const size_t arg_alloc_size) const { - deallocate("[unlabeled]", arg_alloc_ptr, arg_alloc_size); - } - void deallocate(const char* arg_label, void* const arg_alloc_ptr, - const size_t arg_alloc_size, - const size_t arg_logical_size = 0) const { - impl_deallocate(arg_label, arg_alloc_ptr, arg_alloc_size, arg_logical_size); - } - - /**\brief Return Name of the MemorySpace */ - constexpr static const char* name() { return Namer::get_name(); } - - private: - BaseSpace underlying_space; - template - friend class LogicalMemorySpace; - friend class Kokkos::Impl::SharedAllocationRecord; - - void* impl_allocate(const char* arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size = 0, - Kokkos::Tools::SpaceHandle arg_handle = - Kokkos::Tools::make_space_handle(name())) const { - return underlying_space.impl_allocate(arg_label, arg_alloc_size, - arg_logical_size, arg_handle); - } - void impl_deallocate(const char* arg_label, void* const arg_alloc_ptr, - const size_t arg_alloc_size, - const size_t arg_logical_size = 0, - const Kokkos::Tools::SpaceHandle arg_handle = - Kokkos::Tools::make_space_handle(name())) const { - underlying_space.impl_deallocate(arg_label, arg_alloc_ptr, arg_alloc_size, - arg_logical_size, arg_handle); - } -}; -} // namespace Experimental -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -template -struct MemorySpaceAccess< - Kokkos::Experimental::LogicalMemorySpace< - BaseSpace, DefaultBaseExecutionSpace, Namer, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>, - OtherSpace> { - enum { assignable = MemorySpaceAccess::assignable }; - enum { accessible = MemorySpaceAccess::accessible }; - enum { deepcopy = MemorySpaceAccess::deepcopy }; -}; - -template -struct MemorySpaceAccess< - OtherSpace, - Kokkos::Experimental::LogicalMemorySpace< - BaseSpace, DefaultBaseExecutionSpace, Namer, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>> { - enum { assignable = MemorySpaceAccess::assignable }; - enum { accessible = MemorySpaceAccess::accessible }; - enum { deepcopy = MemorySpaceAccess::deepcopy }; -}; - -template -struct MemorySpaceAccess< - Kokkos::Experimental::LogicalMemorySpace< - BaseSpace, DefaultBaseExecutionSpace, Namer, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>, - Kokkos::Experimental::LogicalMemorySpace< - BaseSpace, DefaultBaseExecutionSpace, Namer, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>> { - enum { assignable = true }; - enum { accessible = true }; - enum { deepcopy = true }; -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { -template -class SharedAllocationRecord, - void> : public SharedAllocationRecord { - private: - using SpaceType = - Kokkos::Experimental::LogicalMemorySpace; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - static void deallocate(RecordBase* arg_rec) { - delete static_cast(arg_rec); - } - -#ifdef KOKKOS_ENABLE_DEBUG - /**\brief Root record for tracked allocations from this - * LogicalMemorySpace instance */ - static RecordBase s_root_record; -#endif - - const SpaceType m_space; - - protected: - ~SharedAllocationRecord() { - m_space.deallocate(RecordBase::m_alloc_ptr->m_label, - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); - } - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, const SpaceType& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const SpaceType& arg_space, const std::string& arg_label, - const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate) - : SharedAllocationRecord( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - // Fill in the Header information - RecordBase::m_alloc_ptr->m_record = - static_cast*>(this); - - strncpy(RecordBase::m_alloc_ptr->m_label, arg_label.c_str(), - SharedAllocationHeader::maximum_label_length - 1); - // Set last element zero, in case c_str is too long - RecordBase::m_alloc_ptr - ->m_label[SharedAllocationHeader::maximum_label_length - 1] = '\0'; - } - - public: - inline std::string get_label() const { - return std::string(RecordBase::head()->m_label); - } - KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( - const SpaceType& arg_space, const std::string& arg_label, - const size_t arg_alloc_size) { - KOKKOS_IF_ON_HOST((return new SharedAllocationRecord(arg_space, arg_label, - arg_alloc_size);)) - KOKKOS_IF_ON_DEVICE(((void)arg_space; (void)arg_label; (void)arg_alloc_size; - return nullptr;)) - } - - /**\brief Allocate tracked memory in the space */ - static void* allocate_tracked(const SpaceType& arg_space, - const std::string& arg_label, - const size_t arg_alloc_size) { - if (!arg_alloc_size) return (void*)nullptr; - - SharedAllocationRecord* const r = - allocate(arg_space, arg_label, arg_alloc_size); - - RecordBase::increment(r); - - return r->data(); - } - - /**\brief Reallocate tracked memory in the space */ - static void* reallocate_tracked(void* const arg_alloc_ptr, - const size_t arg_alloc_size) { - SharedAllocationRecord* const r_old = get_record(arg_alloc_ptr); - SharedAllocationRecord* const r_new = - allocate(r_old->m_space, r_old->get_label(), arg_alloc_size); - - Kokkos::Impl::DeepCopy( - r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); - Kokkos::fence( - "SharedAllocationRecord::reallocate_tracked: fence after copying data"); - - RecordBase::increment(r_new); - RecordBase::decrement(r_old); - - return r_new->data(); - } - /**\brief Deallocate tracked memory in the space */ - static void deallocate_tracked(void* const arg_alloc_ptr) { - if (arg_alloc_ptr != nullptr) { - SharedAllocationRecord* const r = get_record(arg_alloc_ptr); - - RecordBase::decrement(r); - } - } - - static SharedAllocationRecord* get_record(void* alloc_ptr) { - using Header = SharedAllocationHeader; - using RecordHost = SharedAllocationRecord; - - SharedAllocationHeader const* const head = - alloc_ptr ? Header::get_header(alloc_ptr) - : (SharedAllocationHeader*)nullptr; - RecordHost* const record = - head ? static_cast(head->m_record) : (RecordHost*)nullptr; - - if (!alloc_ptr || record->m_alloc_ptr != head) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Impl::SharedAllocationRecord< LogicalMemorySpace<> , " - "void >::get_record ERROR")); - } - - return record; - } -#ifdef KOKKOS_ENABLE_DEBUG - static void print_records(std::ostream& s, const SpaceType&, - bool detail = false) { - SharedAllocationRecord::print_host_accessible_records( - s, "HostSpace", &s_root_record, detail); - } -#else - static void print_records(std::ostream&, const SpaceType&, - bool detail = false) { - (void)detail; - throw_runtime_exception( - "SharedAllocationRecord::print_records only works " - "with KOKKOS_ENABLE_DEBUG enabled"); - } -#endif -}; -#ifdef KOKKOS_ENABLE_DEBUG -/**\brief Root record for tracked allocations from this LogicalSpace - * instance */ -template -SharedAllocationRecord - SharedAllocationRecord, - void>::s_root_record; -#endif - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -template -struct DeepCopy, - Kokkos::Experimental::LogicalMemorySpace< - BaseSpace, DefaultBaseExecutionSpace, Namer, SharesAccess>, - ExecutionSpace> { - DeepCopy(void* dst, void* src, size_t n) { - DeepCopy(dst, src, n); - } - DeepCopy(const ExecutionSpace& exec, void* dst, void* src, size_t n) { - DeepCopy(exec, dst, src, n); - } -}; - -template -struct DeepCopy, - ExecutionSpace> { - DeepCopy(void* dst, void* src, size_t n) { - DeepCopy(dst, src, n); - } - DeepCopy(const ExecutionSpace& exec, void* dst, void* src, size_t n) { - DeepCopy(exec, dst, src, n); - } -}; - -template -struct DeepCopy, - DestinationSpace, ExecutionSpace> { - DeepCopy(void* dst, void* src, size_t n) { - DeepCopy(dst, src, n); - } - DeepCopy(const ExecutionSpace& exec, void* dst, void* src, size_t n) { - DeepCopy(exec, dst, src, n); - } -}; -} // namespace Impl - -} // namespace Kokkos -#endif // KOKKOS_LOGICALSPACES_HPP diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 3cf7ac4fa24..b255d2a5195 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -84,11 +84,12 @@ //---------------------------------------------------------------------------- -#if !defined(KOKKOS_ENABLE_THREADS) && !defined(KOKKOS_ENABLE_CUDA) && \ - !defined(KOKKOS_ENABLE_OPENMP) && !defined(KOKKOS_ENABLE_HPX) && \ - !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(KOKKOS_ENABLE_HIP) && \ - !defined(KOKKOS_ENABLE_SYCL) -#define KOKKOS_INTERNAL_NOT_PARALLEL +#if defined(KOKKOS_ENABLE_ATOMICS_BYPASS) && \ + (defined(KOKKOS_ENABLE_THREADS) || defined(KOKKOS_ENABLE_CUDA) || \ + defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_HPX) || \ + defined(KOKKOS_ENABLE_OPENMPTARGET) || defined(KOKKOS_ENABLE_HIP) || \ + defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENACC)) +#error Atomics may only be disabled if neither a host parallel nor a device backend is enabled #endif #define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA @@ -339,12 +340,6 @@ #define KOKKOS_IMPL_DEVICE_FUNCTION #endif -// Temporary solution for SYCL not supporting printf in kernels. -// Might disappear at any point once we have found another solution. -#if !defined(KOKKOS_IMPL_DO_NOT_USE_PRINTF) -#define KOKKOS_IMPL_DO_NOT_USE_PRINTF(...) ::printf(__VA_ARGS__) -#endif - //---------------------------------------------------------------------------- // Define final version of functions. This is so that clang tidy can find these // macros more easily @@ -433,22 +428,6 @@ #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL #endif -//---------------------------------------------------------------------------- -// Determine for what space the code is being compiled: -#if defined(KOKKOS_ENABLE_DEPRECATED_CODE_3) - -#if defined(__CUDACC__) && defined(__CUDA_ARCH__) && defined(KOKKOS_ENABLE_CUDA) -#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA -#elif defined(__SYCL_DEVICE_ONLY__) && defined(KOKKOS_ENABLE_SYCL) -#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_SYCL -#elif defined(__HIPCC__) && defined(__HIP_DEVICE_COMPILE__) && \ - defined(KOKKOS_ENABLE_HIP) -#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU -#else -#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST -#endif - -#endif //---------------------------------------------------------------------------- // Remove surrounding parentheses if present diff --git a/lib/kokkos/core/src/Kokkos_MasterLock.hpp b/lib/kokkos/core/src/Kokkos_MasterLock.hpp deleted file mode 100644 index 1d09617371a..00000000000 --- a/lib/kokkos/core/src/Kokkos_MasterLock.hpp +++ /dev/null @@ -1,56 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#include -static_assert(false, - "Including non-public Kokkos header files is not allowed."); -#endif -#ifndef KOKKOS_MASTER_LOCK_HPP -#define KOKKOS_MASTER_LOCK_HPP - -#include - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - -namespace Kokkos { -namespace Experimental { - -// my be used to coordinate work between master instances -// SHOULD NOT be used within a parallel algorithm -// -// This lock should be used with with a scoped lock guard -// i.e. std::unique_lock, std::lock_guard -// -// cannot be copied or moved -// has the following functions available -// -// Lock() -// ~Lock() -// -// void lock() -// void unlock() -// bool try_lock() -// -template -class MasterLock; - -} // namespace Experimental -} // namespace Kokkos - -#endif - -#endif // KOKKOS_MASTER_LOCK_HPP diff --git a/lib/kokkos/core/src/Kokkos_MathematicalConstants.hpp b/lib/kokkos/core/src/Kokkos_MathematicalConstants.hpp index 51a50d347de..1a77f373fd8 100644 --- a/lib/kokkos/core/src/Kokkos_MathematicalConstants.hpp +++ b/lib/kokkos/core/src/Kokkos_MathematicalConstants.hpp @@ -51,24 +51,6 @@ KOKKOS_IMPL_MATH_CONSTANT(phi, 1.618033988749894848204586834365638118L); } // namespace Kokkos::numbers -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -namespace Kokkos::Experimental { -using Kokkos::numbers::e_v; -using Kokkos::numbers::egamma_v; -using Kokkos::numbers::inv_pi_v; -using Kokkos::numbers::inv_sqrt3_v; -using Kokkos::numbers::inv_sqrtpi_v; -using Kokkos::numbers::ln10_v; -using Kokkos::numbers::ln2_v; -using Kokkos::numbers::log10e_v; -using Kokkos::numbers::log2e_v; -using Kokkos::numbers::phi_v; -using Kokkos::numbers::pi_v; -using Kokkos::numbers::sqrt2_v; -using Kokkos::numbers::sqrt3_v; -} // namespace Kokkos::Experimental -#endif - #ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_MATHCONSTANTS #undef KOKKOS_IMPL_PUBLIC_INCLUDE #undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_MATHCONSTANTS diff --git a/lib/kokkos/core/src/Kokkos_MathematicalFunctions.hpp b/lib/kokkos/core/src/Kokkos_MathematicalFunctions.hpp index ee64c67b93b..3fead8dd293 100644 --- a/lib/kokkos/core/src/Kokkos_MathematicalFunctions.hpp +++ b/lib/kokkos/core/src/Kokkos_MathematicalFunctions.hpp @@ -92,16 +92,6 @@ using promote_3_t = typename promote_3::type; #endif #endif -#if defined(KOKKOS_ENABLE_DEPRECATED_CODE_3) -#define KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - USING_DECLARATIONS_IN_EXPERIMENTAL_NAMESPACE) \ - USING_DECLARATIONS_IN_EXPERIMENTAL_NAMESPACE -#else -#define KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - USING_DECLARATIONS_IN_EXPERIMENTAL_NAMESPACE) \ - /* nothing */ -#endif - #define KOKKOS_IMPL_MATH_UNARY_FUNCTION(FUNC) \ KOKKOS_INLINE_FUNCTION float FUNC(float x) { \ using KOKKOS_IMPL_MATH_FUNCTIONS_NAMESPACE::FUNC; \ @@ -128,13 +118,7 @@ using promote_3_t = typename promote_3::type; T x) { \ using KOKKOS_IMPL_MATH_FUNCTIONS_NAMESPACE::FUNC; \ return FUNC(static_cast(x)); \ - } \ - KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - namespace Experimental { \ - using ::Kokkos::FUNC; \ - using ::Kokkos::FUNC##f; \ - using ::Kokkos::FUNC##l; \ - }) + } // isinf, isnan, and isinfinite do not work on Windows with CUDA with std:: // getting warnings about calling host function in device function then @@ -151,9 +135,7 @@ using promote_3_t = typename promote_3::type; KOKKOS_INLINE_FUNCTION std::enable_if_t, bool> FUNC( \ T x) { \ return ::FUNC(static_cast(x)); \ - } \ - KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - namespace Experimental { using ::Kokkos::FUNC; }) + } #else #define KOKKOS_IMPL_MATH_UNARY_PREDICATE(FUNC) \ KOKKOS_INLINE_FUNCTION bool FUNC(float x) { \ @@ -173,9 +155,7 @@ using promote_3_t = typename promote_3::type; T x) { \ using KOKKOS_IMPL_MATH_FUNCTIONS_NAMESPACE::FUNC; \ return FUNC(static_cast(x)); \ - } \ - KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - namespace Experimental { using ::Kokkos::FUNC; }) + } #endif #define KOKKOS_IMPL_MATH_BINARY_FUNCTION(FUNC) \ @@ -218,16 +198,10 @@ using promote_3_t = typename promote_3::type; long double> \ FUNC(T1 x, T2 y) { \ using Promoted = Kokkos::Impl::promote_2_t; \ - static_assert(std::is_same_v, ""); \ + static_assert(std::is_same_v); \ using std::FUNC; \ return FUNC(static_cast(x), static_cast(y)); \ - } \ - KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( \ - namespace Experimental { \ - using ::Kokkos::FUNC; \ - using ::Kokkos::FUNC##f; \ - using ::Kokkos::FUNC##l; \ - }) + } #define KOKKOS_IMPL_MATH_TERNARY_FUNCTION(FUNC) \ KOKKOS_INLINE_FUNCTION float FUNC(float x, float y, float z) { \ @@ -314,8 +288,6 @@ inline long double abs(long double x) { using std::abs; return abs(x); } -KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( - namespace Experimental { using ::Kokkos::abs; }) KOKKOS_IMPL_MATH_UNARY_FUNCTION(fabs) KOKKOS_IMPL_MATH_BINARY_FUNCTION(fmod) KOKKOS_IMPL_MATH_BINARY_FUNCTION(remainder) @@ -336,12 +308,6 @@ KOKKOS_INLINE_FUNCTION float nanf(char const*) { return sycl::nan(0u); } KOKKOS_INLINE_FUNCTION double nan(char const*) { return sycl::nan(0ul); } #endif inline long double nanl(char const* arg) { return ::nanl(arg); } -KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED( - namespace Experimental { - using ::Kokkos::nan; - using ::Kokkos::nanf; - using ::Kokkos::nanl; - }) // Exponential functions KOKKOS_IMPL_MATH_UNARY_FUNCTION(exp) // FIXME_NVHPC nvc++ has issues with exp2 @@ -478,7 +444,6 @@ KOKKOS_IMPL_MATH_UNARY_PREDICATE(signbit) // islessgreater // isunordered -#undef KOKKOS_IMPL_MATH_FUNCTIONS_DEFINED_IF_DEPRECATED_CODE_ENABLED #undef KOKKOS_IMPL_MATH_FUNCTIONS_NAMESPACE #undef KOKKOS_IMPL_MATH_UNARY_FUNCTION #undef KOKKOS_IMPL_MATH_UNARY_PREDICATE diff --git a/lib/kokkos/core/src/Kokkos_MinMaxClamp.hpp b/lib/kokkos/core/src/Kokkos_MinMax.hpp similarity index 83% rename from lib/kokkos/core/src/Kokkos_MinMaxClamp.hpp rename to lib/kokkos/core/src/Kokkos_MinMax.hpp index 37a28a80b68..5c60a88bfb1 100644 --- a/lib/kokkos/core/src/Kokkos_MinMaxClamp.hpp +++ b/lib/kokkos/core/src/Kokkos_MinMax.hpp @@ -14,13 +14,8 @@ // //@HEADER -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#include -static_assert(false, - "Including non-public Kokkos header files is not allowed."); -#endif -#ifndef KOKKOS_MIN_MAX_CLAMP_HPP -#define KOKKOS_MIN_MAX_CLAMP_HPP +#ifndef KOKKOS_MIN_MAX_HPP +#define KOKKOS_MIN_MAX_HPP #include #include @@ -29,22 +24,6 @@ static_assert(false, namespace Kokkos { -// clamp -template -constexpr KOKKOS_INLINE_FUNCTION const T& clamp(const T& value, const T& lo, - const T& hi) { - KOKKOS_EXPECTS(!(hi < lo)); - return (value < lo) ? lo : (hi < value) ? hi : value; -} - -template -constexpr KOKKOS_INLINE_FUNCTION const T& clamp(const T& value, const T& lo, - const T& hi, - ComparatorType comp) { - KOKKOS_EXPECTS(!comp(hi, lo)); - return comp(value, lo) ? lo : comp(hi, value) ? hi : value; -} - // max template constexpr KOKKOS_INLINE_FUNCTION const T& max(const T& a, const T& b) { @@ -199,15 +178,6 @@ KOKKOS_INLINE_FUNCTION constexpr Kokkos::pair minmax( return result; } -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -namespace Experimental { -using ::Kokkos::clamp; -using ::Kokkos::max; -using ::Kokkos::min; -using ::Kokkos::minmax; -} // namespace Experimental -#endif - } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/Kokkos_Pair.hpp b/lib/kokkos/core/src/Kokkos_Pair.hpp index 7127c78280e..9be8d8d7aa1 100644 --- a/lib/kokkos/core/src/Kokkos_Pair.hpp +++ b/lib/kokkos/core/src/Kokkos_Pair.hpp @@ -28,6 +28,7 @@ #endif #include +#include #include namespace Kokkos { @@ -484,7 +485,6 @@ KOKKOS_FORCEINLINE_FUNCTION constexpr bool operator>=( } namespace Impl { - template struct is_pair_like : std::false_type {}; template diff --git a/lib/kokkos/core/src/Kokkos_Printf.hpp b/lib/kokkos/core/src/Kokkos_Printf.hpp index 39f95825c38..63a4cce2aeb 100644 --- a/lib/kokkos/core/src/Kokkos_Printf.hpp +++ b/lib/kokkos/core/src/Kokkos_Printf.hpp @@ -30,8 +30,11 @@ namespace Kokkos { // In contrast to std::printf, return void to get a consistent behavior across // backends. The GPU backends always return 1 and NVHPC only compiles if we // don't ask for the return value. +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) +using ::printf; +#else template -KOKKOS_FUNCTION void printf(const char* format, Args... args) { +KOKKOS_FORCEINLINE_FUNCTION void printf(const char* format, Args... args) { #ifdef KOKKOS_ENABLE_SYCL // Some compilers warn if "args" is empty and format is not a string literal if constexpr (sizeof...(Args) == 0) @@ -39,15 +42,13 @@ KOKKOS_FUNCTION void printf(const char* format, Args... args) { else sycl::ext::oneapi::experimental::printf(format, args...); #else - if constexpr (sizeof...(Args) == 0) ::printf("%s", format); - // FIXME_OPENMPTARGET non-string-literal argument used in printf is not - // supported for spir64 -#if !(defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU)) + if constexpr (sizeof...(Args) == 0) + ::printf("%s", format); else ::printf(format, args...); #endif -#endif } +#endif } // namespace Kokkos diff --git a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp index 29a04ac3b07..e7a9ba0c7ed 100644 --- a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp +++ b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp @@ -22,49 +22,34 @@ #endif #include -#include #include #include -namespace Kokkos { -namespace Profiling { +namespace Kokkos::Profiling { + +class [[nodiscard]] ProfilingSection { + uint32_t sectionID; -class ProfilingSection { public: ProfilingSection(ProfilingSection const&) = delete; ProfilingSection& operator=(ProfilingSection const&) = delete; - ProfilingSection(const std::string& sectionName) { - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::createProfileSection(sectionName, &secID); - } - } - - void start() { - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::startSection(secID); - } +#if defined(__has_cpp_attribute) && __has_cpp_attribute(nodiscard) >= 201907 + [[nodiscard]] +#endif + explicit ProfilingSection(const std::string& sectionName) { + Kokkos::Profiling::createProfileSection(sectionName, §ionID); } - void stop() { - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::stopSection(secID); - } - } + void start() { Kokkos::Profiling::startSection(sectionID); } - ~ProfilingSection() { - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::destroyProfileSection(secID); - } - } + void stop() { Kokkos::Profiling::stopSection(sectionID); } - protected: - uint32_t secID; + ~ProfilingSection() { Kokkos::Profiling::destroyProfileSection(sectionID); } }; -} // namespace Profiling -} // namespace Kokkos +} // namespace Kokkos::Profiling #ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE #undef KOKKOS_IMPL_PUBLIC_INCLUDE diff --git a/lib/kokkos/core/src/Kokkos_Swap.hpp b/lib/kokkos/core/src/Kokkos_Swap.hpp new file mode 100644 index 00000000000..2f849a13ab6 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_Swap.hpp @@ -0,0 +1,68 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_SWAP_HPP +#define KOKKOS_SWAP_HPP + +#include + +#include +#include +#include + +namespace Kokkos { + +template +KOKKOS_FUNCTION constexpr std::enable_if_t && + std::is_move_assignable_v> +kokkos_swap(T& a, T& b) noexcept(std::is_nothrow_move_constructible_v&& + std::is_nothrow_move_assignable_v) { + T t(std::move(a)); + a = std::move(b); + b = std::move(t); +} + +namespace Impl { + +template +struct is_swappable { + template + static decltype(kokkos_swap(std::declval(), std::declval())) + test_swap(int); + struct Nope; + template + static Nope test_swap(long); + static constexpr bool value = + !std::is_same_v(0)), Nope>; +}; + +template +inline constexpr bool is_nothrow_swappable_v = + noexcept(kokkos_swap(std::declval(), std::declval())); + +} // namespace Impl + +template +KOKKOS_FUNCTION constexpr std::enable_if_t::value> +kokkos_swap(T (&a)[N], T (&b)[N]) noexcept(Impl::is_nothrow_swappable_v) { + for (std::size_t i = 0; i < N; ++i) { + kokkos_swap(a[i], b[i]); + } +} + +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/Kokkos_Tuners.hpp b/lib/kokkos/core/src/Kokkos_Tuners.hpp index 618401654e7..f5ffc66af5b 100644 --- a/lib/kokkos/core/src/Kokkos_Tuners.hpp +++ b/lib/kokkos/core/src/Kokkos_Tuners.hpp @@ -256,13 +256,14 @@ auto get_point_helper(const PointType& in, const ArrayType& indices, template struct GetPoint; -template -struct GetPoint> { +template +struct GetPoint< + PointType, + std::array> { using index_set_type = - std::array; + std::array; static auto build(const PointType& in, const index_set_type& indices) { - return get_point_helper(in, indices, std::make_index_sequence{}); + return get_point_helper(in, indices, std::make_index_sequence{}); } }; diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index bcbb28014cd..484a0e6f62e 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -39,7 +39,7 @@ static_assert(false, #ifdef KOKKOS_ENABLE_IMPL_MDSPAN #include #endif -#include +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -75,25 +75,59 @@ constexpr KOKKOS_INLINE_FUNCTION std::size_t count_valid_integers( (i6 != KOKKOS_INVALID_INDEX) + (i7 != KOKKOS_INVALID_INDEX); } -KOKKOS_INLINE_FUNCTION -void runtime_check_rank(const size_t rank, const size_t dyn_rank, - const bool is_void_spec, const size_t i0, - const size_t i1, const size_t i2, const size_t i3, - const size_t i4, const size_t i5, const size_t i6, - const size_t i7, const std::string& label) { +// FIXME Ideally, we would not instantiate this function for every possible View +// type. We should be able to only pass "extent" when we use mdspan. +template +KOKKOS_INLINE_FUNCTION void runtime_check_rank( + const View&, const bool is_void_spec, const size_t i0, const size_t i1, + const size_t i2, const size_t i3, const size_t i4, const size_t i5, + const size_t i6, const size_t i7, const char* label) { (void)(label); if (is_void_spec) { const size_t num_passed_args = count_valid_integers(i0, i1, i2, i3, i4, i5, i6, i7); + // We either allow to pass as many extents as the dynamic rank is, or + // as many extents as the total rank is. In the latter case, the given + // extents for the static dimensions must match the + // compile-time extents. + constexpr int rank = View::rank(); + constexpr int dyn_rank = View::rank_dynamic(); + const bool n_args_is_dyn_rank = num_passed_args == dyn_rank; + const bool n_args_is_rank = num_passed_args == rank; + + if constexpr (rank != dyn_rank) { + if (n_args_is_rank) { + size_t new_extents[8] = {i0, i1, i2, i3, i4, i5, i6, i7}; + for (int i = dyn_rank; i < rank; ++i) + if (new_extents[i] != View::static_extent(i)) { + KOKKOS_IF_ON_HOST( + const std::string message = + "The specified run-time extent for Kokkos::View '" + + std::string(label) + + "' does not match the compile-time extent in dimension " + + std::to_string(i) + ". The given extent is " + + std::to_string(new_extents[i]) + " but should be " + + std::to_string(View::static_extent(i)) + ".\n"; + Kokkos::abort(message.c_str());) + KOKKOS_IF_ON_DEVICE( + Kokkos::abort( + "The specified run-time extents for a Kokkos::View " + "do not match the compile-time extents.");) + } + } + } - if (num_passed_args != dyn_rank && num_passed_args != rank) { + if (!n_args_is_dyn_rank && !n_args_is_rank) { KOKKOS_IF_ON_HOST( const std::string message = - "Constructor for Kokkos View '" + label + - "' has mismatched number of arguments. Number of arguments = " + + "Constructor for Kokkos::View '" + std::string(label) + + "' has mismatched number of arguments. The number " + "of arguments = " + std::to_string(num_passed_args) + - " but dynamic rank = " + std::to_string(dyn_rank) + " \n"; + " neither matches the dynamic rank = " + + std::to_string(dyn_rank) + + " nor the total rank = " + std::to_string(rank) + "\n"; Kokkos::abort(message.c_str());) KOKKOS_IF_ON_DEVICE(Kokkos::abort("Constructor for Kokkos View has " "mismatched number of arguments.");) @@ -814,15 +848,15 @@ class View : public ViewTraits { template static KOKKOS_FUNCTION void check_access_member_function_valid_args(Is...) { - static_assert(rank <= sizeof...(Is), ""); - static_assert(sizeof...(Is) <= 8, ""); - static_assert(Kokkos::Impl::are_integral::value, ""); + static_assert(rank <= sizeof...(Is)); + static_assert(sizeof...(Is) <= 8); + static_assert(Kokkos::Impl::are_integral::value); } template static KOKKOS_FUNCTION void check_operator_parens_valid_args(Is...) { - static_assert(rank == sizeof...(Is), ""); - static_assert(Kokkos::Impl::are_integral::value, ""); + static_assert(rank == sizeof...(Is)); + static_assert(Kokkos::Impl::are_integral::value); } public: @@ -1402,21 +1436,30 @@ class View : public ViewTraits { "execution space"); } - size_t i0 = arg_layout.dimension[0]; - size_t i1 = arg_layout.dimension[1]; - size_t i2 = arg_layout.dimension[2]; - size_t i3 = arg_layout.dimension[3]; - size_t i4 = arg_layout.dimension[4]; - size_t i5 = arg_layout.dimension[5]; - size_t i6 = arg_layout.dimension[6]; - size_t i7 = arg_layout.dimension[7]; - - const std::string& alloc_name = - Impl::get_property(prop_copy); - Impl::runtime_check_rank( - rank, rank_dynamic, - std::is_same::value, i0, i1, i2, i3, - i4, i5, i6, i7, alloc_name); +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v || + is_layouttiled::value) { + size_t i0 = arg_layout.dimension[0]; + size_t i1 = arg_layout.dimension[1]; + size_t i2 = arg_layout.dimension[2]; + size_t i3 = arg_layout.dimension[3]; + size_t i4 = arg_layout.dimension[4]; + size_t i5 = arg_layout.dimension[5]; + size_t i6 = arg_layout.dimension[6]; + size_t i7 = arg_layout.dimension[7]; + + const std::string& alloc_name = + Impl::get_property(prop_copy); + Impl::runtime_check_rank( + *this, std::is_same::value, i0, i1, + i2, i3, i4, i5, i6, i7, alloc_name.c_str()); + } +#endif Kokkos::Impl::SharedAllocationRecord<>* record = m_map.allocate_shared( prop_copy, arg_layout, Impl::ViewCtorProp::has_execution_space); @@ -1445,6 +1488,29 @@ class View : public ViewTraits { typename Impl::ViewCtorProp::pointer_type>::value, "Constructing View to wrap user memory must supply matching pointer " "type"); + +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v || + is_layouttiled::value) { + size_t i0 = arg_layout.dimension[0]; + size_t i1 = arg_layout.dimension[1]; + size_t i2 = arg_layout.dimension[2]; + size_t i3 = arg_layout.dimension[3]; + size_t i4 = arg_layout.dimension[4]; + size_t i5 = arg_layout.dimension[5]; + size_t i6 = arg_layout.dimension[6]; + size_t i7 = arg_layout.dimension[7]; + + Impl::runtime_check_rank( + *this, std::is_same::value, i0, i1, + i2, i3, i4, i5, i6, i7, "UNMANAGED"); + } +#endif } // Simple dimension-only layout diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.cpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.cpp index f54c44d66f0..99daf379b6f 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.cpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.cpp @@ -58,8 +58,10 @@ void Kokkos::Experimental::OpenACC::impl_initialize( Impl::OpenACCInternal::m_acc_device_num = acc_get_device_num(acc_device_host); } else { + using Kokkos::Impl::get_visible_devices; + std::vector const& visible_devices = get_visible_devices(); using Kokkos::Impl::get_gpu; - int const dev_num = get_gpu(settings); + int const dev_num = get_gpu(settings).value_or(visible_devices[0]); acc_set_device_num(dev_num, Impl::OpenACC_Traits::dev_type); Impl::OpenACCInternal::m_acc_device_num = dev_num; } diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.hpp index b012f6a42a4..5155bee33dc 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC.hpp @@ -91,7 +91,11 @@ class OpenACC { #else int concurrency() const { return 256000; } // FIXME_OPENACC #endif - static bool in_parallel() { return acc_on_device(acc_device_not_host); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED static bool in_parallel() { + return acc_on_device(acc_device_not_host); + } +#endif uint32_t impl_instance_id() const noexcept; Impl::OpenACCInternal* impl_internal_space_instance() const { return m_space_instance.get(); diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACCSpace.cpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACCSpace.cpp index 141ec77fd1f..acc0dcd3c6e 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACCSpace.cpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACCSpace.cpp @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include #include @@ -66,6 +66,19 @@ void *Kokkos::Experimental::OpenACCSpace::impl_allocate( ptr = acc_malloc(arg_alloc_size); + if (!ptr) { + size_t alignment = 1; // OpenACC does not handle alignment + using Kokkos::Experimental::RawMemoryAllocationFailure; + auto failure_mode = + arg_alloc_size > 0 + ? RawMemoryAllocationFailure::FailureMode::OutOfMemoryError + : RawMemoryAllocationFailure::FailureMode::InvalidAllocationSize; + auto alloc_mechanism = + RawMemoryAllocationFailure::AllocationMechanism::OpenACCMalloc; + throw RawMemoryAllocationFailure(arg_alloc_size, alignment, failure_mode, + alloc_mechanism); + } + if (Kokkos::Profiling::profileLibraryLoaded()) { const size_t reported_size = (arg_logical_size > 0) ? arg_logical_size : arg_alloc_size; diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_DeepCopy.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_DeepCopy.hpp index 4aed7e00f76..ca022192b0b 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_DeepCopy.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_DeepCopy.hpp @@ -34,7 +34,7 @@ struct Kokkos::Impl::DeepCopy 0) { - acc_memcpy_device(dst, const_cast(src), n); + acc_memcpy_device_async(dst, const_cast(src), n, acc_async_noval); } } DeepCopy(const Kokkos::Experimental::OpenACC& exec, void* dst, @@ -52,7 +52,7 @@ struct Kokkos::Impl::DeepCopy { DeepCopy(void* dst, const void* src, size_t n) { if (n > 0) { - acc_memcpy_device(dst, const_cast(src), n); + acc_memcpy_device_async(dst, const_cast(src), n, acc_async_noval); } } DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { @@ -60,7 +60,7 @@ struct Kokkos::Impl::DeepCopy::DeepCopy: fence before copy"); if (n > 0) { - acc_memcpy_device(dst, const_cast(src), n); + acc_memcpy_device_async(dst, const_cast(src), n, acc_async_noval); } } }; @@ -70,7 +70,9 @@ struct Kokkos::Impl::DeepCopy { DeepCopy(void* dst, const void* src, size_t n) { - if (n > 0) acc_memcpy_to_device(dst, const_cast(src), n); + if (n > 0) + acc_memcpy_to_device_async(dst, const_cast(src), n, + acc_async_noval); } DeepCopy(const Kokkos::Experimental::OpenACC& exec, void* dst, const void* src, size_t n) { @@ -85,7 +87,8 @@ struct Kokkos::Impl::DeepCopy { DeepCopy(void* dst, const void* src, size_t n) { if (n > 0) { - acc_memcpy_to_device(dst, const_cast(src), n); + acc_memcpy_to_device_async(dst, const_cast(src), n, + acc_async_noval); } } DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { @@ -93,7 +96,8 @@ struct Kokkos::Impl::DeepCopy::DeepCopy: fence before copy"); if (n > 0) { - acc_memcpy_to_device(dst, const_cast(src), n); + acc_memcpy_to_device_async(dst, const_cast(src), n, + acc_async_noval); } } }; @@ -104,7 +108,8 @@ struct Kokkos::Impl::DeepCopy { DeepCopy(void* dst, const void* src, size_t n) { if (n > 0) { - acc_memcpy_from_device(dst, const_cast(src), n); + acc_memcpy_from_device_async(dst, const_cast(src), n, + acc_async_noval); } } DeepCopy(const Kokkos::Experimental::OpenACC& exec, void* dst, @@ -120,14 +125,17 @@ template struct Kokkos::Impl::DeepCopy< Kokkos::HostSpace, Kokkos::Experimental::OpenACCSpace, ExecutionSpace> { DeepCopy(void* dst, const void* src, size_t n) { - if (n > 0) acc_memcpy_from_device(dst, const_cast(src), n); + if (n > 0) + acc_memcpy_from_device_async(dst, const_cast(src), n, + acc_async_noval); } DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, size_t n) { exec.fence( "Kokkos::Impl::DeepCopy::DeepCopy: fence before copy"); if (n > 0) { - acc_memcpy_from_device(dst, const_cast(src), n); + acc_memcpy_from_device_async(dst, const_cast(src), n, + acc_async_noval); } } }; diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Instance.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Instance.hpp index 6645616ba51..c3d72368727 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Instance.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Instance.hpp @@ -35,7 +35,7 @@ class OpenACCInternal { public: static int m_acc_device_num; - int m_async_arg = acc_async_sync; + int m_async_arg = acc_async_noval; OpenACCInternal() = default; @@ -43,7 +43,7 @@ class OpenACCInternal { bool verify_is_initialized(const char* const label) const; - void initialize(int async_arg = acc_async_sync); + void initialize(int async_arg = acc_async_noval); void finalize(); bool is_initialized() const; diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_ParallelReduce_MDRange.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_ParallelReduce_MDRange.hpp index 2c7793dc116..5afb5e75d39 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_ParallelReduce_MDRange.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_ParallelReduce_MDRange.hpp @@ -31,7 +31,7 @@ template ::value, + static_assert(Kokkos::Impl::always_false::value, "not implemented"); } }; @@ -136,6 +136,7 @@ class Kokkos::Impl::ParallelReduce> struct OpenACCParallelReduceHelper { OpenACCParallelReduceHelper(Functor const&, Reducer const&, Policy const&) { - static_assert(!Kokkos::Impl::always_true::value, + static_assert(Kokkos::Impl::always_false::value, "not implemented"); } }; @@ -140,6 +140,7 @@ class Kokkos::Impl::ParallelReduce::value, + static_assert(Kokkos::Impl::always_false::value, "not implemented"); } }; @@ -129,7 +129,7 @@ KOKKOS_INLINE_FUNCTION void parallel_reduce( const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Lambda& lambda, const JoinType& join, ValueType& init_result) { - static_assert(!Kokkos::Impl::always_true::value, + static_assert(Kokkos::Impl::always_false::value, "custom reduction is not implemented"); } @@ -140,7 +140,7 @@ KOKKOS_INLINE_FUNCTION void parallel_reduce( const Impl::ThreadVectorRangeBoundariesStruct< iType, Impl::OpenACCTeamMember>& loop_boundaries, const Lambda& lambda, const JoinType& join, ValueType& init_result) { - static_assert(!Kokkos::Impl::always_true::value, + static_assert(Kokkos::Impl::always_false::value, "custom reduction is not implemented"); } @@ -394,6 +394,7 @@ KOKKOS_INLINE_FUNCTION void parallel_reduce( vector_length); \ functor(team, val); \ } \ + acc_wait(async_arg); \ aval = val; \ } \ } // namespace Kokkos::Experimental::Impl diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp index 91faa64f733..76e1514476a 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.cpp @@ -16,92 +16,11 @@ #define KOKKOS_IMPL_PUBLIC_INCLUDE -#include +#include #include -#include -#include - -#ifdef KOKKOS_ENABLE_DEBUG -Kokkos::Impl::SharedAllocationRecord SharedAllocationRecord< - Kokkos::Experimental::OpenACCSpace, void>::s_root_record; -#endif - -Kokkos::Impl::SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); -} - -Kokkos::Impl::SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::OpenACCSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - Kokkos::Impl::DeepCopy( - RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); - Kokkos::fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -Kokkos::Impl::SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::OpenACC &arg_exec_space, - const Kokkos::Experimental::OpenACCSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_exec_space, arg_space, - arg_label, arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - Kokkos::Impl::DeepCopy( - arg_exec_space, RecordBase::m_alloc_ptr, &header, - sizeof(SharedAllocationHeader)); -} - -//============================================================================== -// {{{1 +#include #include -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicitly instantiate these CRTP base classes -// here, where we have access to the associated *_timpl.hpp header files. -template class Kokkos::Impl::HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenACCSpace>; -template class Kokkos::Impl::SharedAllocationRecordCommon< - Kokkos::Experimental::OpenACCSpace>; - -// end Explicit instantiations of CRTP Base classes }}}1 -//============================================================================== +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::Experimental::OpenACCSpace); diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.hpp index cf83a5b27bc..cde5ecdcb77 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_SharedAllocationRecord.hpp @@ -20,55 +20,7 @@ #include #include -#include - -template <> -class Kokkos::Impl::SharedAllocationRecord - : public HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenACCSpace> { - private: - friend class HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenACCSpace>; - friend class SharedAllocationRecordCommon; - friend Kokkos::Experimental::OpenACCSpace; - - using base_t = HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenACCSpace>; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - /**\brief Root record for tracked allocations from this OpenACCSpace - * instance */ - static RecordBase s_root_record; - - const Kokkos::Experimental::OpenACCSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::Experimental::OpenACCSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const Kokkos::Experimental::OpenACC& exec_space, - const Kokkos::Experimental::OpenACCSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate); - - SharedAllocationRecord( - const Kokkos::Experimental::OpenACCSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate); -}; +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::Experimental::OpenACCSpace); #endif diff --git a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Team.hpp b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Team.hpp index 4ec71f56ef6..20ea392452b 100644 --- a/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Team.hpp +++ b/lib/kokkos/core/src/OpenACC/Kokkos_OpenACC_Team.hpp @@ -82,7 +82,7 @@ class OpenACCTeamMember { // FIXME_OPENACC: team_broadcast() is not implemented. template KOKKOS_FUNCTION void team_broadcast(ValueType& value, int thread_id) const { - static_assert(!Kokkos::Impl::always_true::value, + static_assert(Kokkos::Impl::always_false::value, "Kokkos Error: team_broadcast() is not implemented for the " "OpenACC backend"); return ValueType(); @@ -99,7 +99,7 @@ class OpenACCTeamMember { template KOKKOS_FUNCTION ValueType team_reduce(const ValueType& value, const JoinOp& op_in) const { - static_assert(!Kokkos::Impl::always_true::value, + static_assert(Kokkos::Impl::always_false::value, "Kokkos Error: team_reduce() is not implemented for the " "OpenACC backend"); return ValueType(); @@ -110,7 +110,7 @@ class OpenACCTeamMember { KOKKOS_FUNCTION ArgType team_scan(const ArgType& /*value*/, ArgType* const /*global_accum*/) const { static_assert( - !Kokkos::Impl::always_true::value, + Kokkos::Impl::always_false::value, "Kokkos Error: team_scan() is not implemented for the OpenACC backend"); return ArgType(); } diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.cpp index 9a169a435c7..81f2c5c3056 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.cpp @@ -81,29 +81,16 @@ bool OpenMP::impl_is_initialized() noexcept { return Impl::OpenMPInternal::singleton().is_initialized(); } -bool OpenMP::in_parallel(OpenMP const &exec_space) noexcept { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - return ( - (exec_space.impl_internal_space_instance()->m_level < omp_get_level()) && - (!Impl::t_openmp_instance || - Impl::t_openmp_instance->m_level < omp_get_level())); -#else +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 +KOKKOS_DEPRECATED bool OpenMP::in_parallel(OpenMP const &exec_space) noexcept { return exec_space.impl_internal_space_instance()->m_level < omp_get_level(); -#endif } +#endif int OpenMP::impl_thread_pool_size() const noexcept { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - return OpenMP::in_parallel(*this) - ? omp_get_num_threads() - : (Impl::t_openmp_instance - ? Impl::t_openmp_instance->m_pool_size - : impl_internal_space_instance()->m_pool_size); -#else - return OpenMP::in_parallel(*this) + return (impl_internal_space_instance()->get_level() < omp_get_level()) ? omp_get_num_threads() : impl_internal_space_instance()->m_pool_size; -#endif } int OpenMP::impl_max_hardware_threads() noexcept { diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.hpp index 594f40d5245..11292af84ad 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP.hpp @@ -27,14 +27,7 @@ static_assert(false, #include -#include -#include #include - -#ifdef KOKKOS_ENABLE_HBWSPACE -#include -#endif - #include #include #include @@ -45,6 +38,8 @@ static_assert(false, #include +#include +#include #include /*--------------------------------------------------------------------------*/ @@ -53,11 +48,6 @@ namespace Kokkos { namespace Impl { class OpenMPInternal; - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -// FIXME_OPENMP we can remove this after we remove partition_master -inline thread_local OpenMPInternal* t_openmp_instance = nullptr; -#endif } // namespace Impl /// \class OpenMP @@ -67,12 +57,7 @@ class OpenMP { //! Tag this class as a kokkos execution space using execution_space = OpenMP; - using memory_space = -#ifdef KOKKOS_ENABLE_HBWSPACE - Experimental::HBWSpace; -#else - HostSpace; -#endif + using memory_space = HostSpace; //! This execution space preferred device_type using device_type = Kokkos::Device; @@ -87,8 +72,10 @@ class OpenMP { /// \brief Print configuration information to the given output stream. void print_configuration(std::ostream& os, bool verbose = false) const; +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 /// \brief is the instance running a parallel algorithm - static bool in_parallel(OpenMP const& = OpenMP()) noexcept; + KOKKOS_DEPRECATED static bool in_parallel(OpenMP const& = OpenMP()) noexcept; +#endif /// \brief Wait until all dispatched functors complete on the given instance /// @@ -104,18 +91,6 @@ class OpenMP { /// This always returns false on OpenMP inline static bool is_asynchronous(OpenMP const& = OpenMP()) noexcept; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - /// \brief Partition the default instance and call 'f' on each new 'master' - /// thread - /// - /// Func is a functor with the following signiture - /// void( int partition_id, int num_partitions ) - template - KOKKOS_DEPRECATED static void partition_master( - F const& f, int requested_num_partitions = 0, - int requested_partition_size = 0); -#endif - #ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 static int concurrency(OpenMP const& = OpenMP()); #else @@ -166,14 +141,7 @@ class OpenMP { }; inline int OpenMP::impl_thread_pool_rank() noexcept { - // FIXME_OPENMP Can we remove this when removing partition_master? It's only - // used in one partition_master test -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - KOKKOS_IF_ON_HOST( - (return Impl::t_openmp_instance ? 0 : omp_get_thread_num();)) -#else KOKKOS_IF_ON_HOST((return omp_get_thread_num();)) -#endif KOKKOS_IF_ON_DEVICE((return -1;)) } diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp index 44f0fbc180a..32172fbc6c7 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.cpp @@ -47,61 +47,6 @@ void OpenMPInternal::release_lock() { desul::MemoryScopeDevice()); } -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -void OpenMPInternal::validate_partition_impl(const int nthreads, - int &num_partitions, - int &partition_size) { - if (nthreads == 1) { - num_partitions = 1; - partition_size = 1; - } else if (num_partitions < 1 && partition_size < 1) { - int idle = nthreads; - for (int np = 2; np <= nthreads; ++np) { - for (int ps = 1; ps <= nthreads / np; ++ps) { - if (nthreads - np * ps < idle) { - idle = nthreads - np * ps; - num_partitions = np; - partition_size = ps; - } - if (idle == 0) { - break; - } - } - } - } else if (num_partitions < 1 && partition_size > 0) { - if (partition_size <= nthreads) { - num_partitions = nthreads / partition_size; - } else { - num_partitions = 1; - partition_size = nthreads; - } - } else if (num_partitions > 0 && partition_size < 1) { - if (num_partitions <= nthreads) { - partition_size = nthreads / num_partitions; - } else { - num_partitions = nthreads; - partition_size = 1; - } - } else if (num_partitions * partition_size > nthreads) { - int idle = nthreads; - const int NP = num_partitions; - const int PS = partition_size; - for (int np = NP; np > 0; --np) { - for (int ps = PS; ps > 0; --ps) { - if ((np * ps <= nthreads) && (nthreads - np * ps < idle)) { - idle = nthreads - np * ps; - num_partitions = np; - partition_size = ps; - } - if (idle == 0) { - break; - } - } - } - } -} -#endif - void OpenMPInternal::clear_thread_data() { const size_t member_bytes = sizeof(int64_t) * @@ -359,8 +304,6 @@ void OpenMPInternal::finalize() { } m_initialized = false; - - Kokkos::Profiling::finalize(); } void OpenMPInternal::print_configuration(std::ostream &s) const { diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.hpp index 03f5fff395a..35b9aa93ba7 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Instance.hpp @@ -41,16 +41,6 @@ #include /*--------------------------------------------------------------------------*/ -namespace Kokkos { -namespace Impl { - -inline bool execute_in_serial(OpenMP const& space = OpenMP()) { - return (OpenMP::in_parallel(space) && - !(omp_get_nested() && (omp_get_level() == 1))); -} - -} // namespace Impl -} // namespace Kokkos namespace Kokkos { namespace Impl { @@ -99,11 +89,6 @@ class OpenMPInternal { // Release lock used to protect access to m_pool void release_lock(); -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - static void validate_partition_impl(const int nthreads, int& num_partitions, - int& partition_size); -#endif - void resize_thread_data(size_t pool_reduce_bytes, size_t team_reduce_bytes, size_t team_shared_bytes, size_t thread_local_bytes); @@ -115,6 +100,8 @@ class OpenMPInternal { return m_pool[i]; } + int get_level() const { return m_level; } + bool is_initialized() const { return m_initialized; } bool verify_is_initialized(const char* const label) const; @@ -122,32 +109,20 @@ class OpenMPInternal { void print_configuration(std::ostream& s) const; }; -} // namespace Impl - -namespace Experimental { - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -template <> -class MasterLock { - public: - void lock() { omp_set_lock(&m_lock); } - void unlock() { omp_unset_lock(&m_lock); } - bool try_lock() { return static_cast(omp_test_lock(&m_lock)); } - - KOKKOS_DEPRECATED MasterLock() { omp_init_lock(&m_lock); } - ~MasterLock() { omp_destroy_lock(&m_lock); } - - MasterLock(MasterLock const&) = delete; - MasterLock(MasterLock&&) = delete; - MasterLock& operator=(MasterLock const&) = delete; - MasterLock& operator=(MasterLock&&) = delete; - - private: - omp_lock_t m_lock; -}; +inline bool execute_in_serial(OpenMP const& space = OpenMP()) { +// The default value returned by `omp_get_max_active_levels` with gcc version +// lower than 11.1.0 is 2147483647 instead of 1. +#if (!defined(KOKKOS_COMPILER_GNU) || KOKKOS_COMPILER_GNU >= 1110) && \ + _OPENMP >= 201511 + bool is_nested = omp_get_max_active_levels() > 1; +#else + bool is_nested = static_cast(omp_get_nested()); #endif + return (space.impl_internal_space_instance()->get_level() < omp_get_level() && + !(is_nested && (omp_get_level() == 1))); +} -} // namespace Experimental +} // namespace Impl namespace Experimental { namespace Impl { @@ -202,50 +177,6 @@ std::vector partition_space(OpenMP const& main_instance, return Impl::create_OpenMP_instances(main_instance, weights); } } // namespace Experimental - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -template -KOKKOS_DEPRECATED void OpenMP::partition_master(F const& f, int num_partitions, - int partition_size) { -#if _OPENMP >= 201511 - if (omp_get_max_active_levels() > 1) { -#else - if (omp_get_nested()) { -#endif - using Exec = Impl::OpenMPInternal; - - Exec* prev_instance = &Impl::OpenMPInternal::singleton(); - - Exec::validate_partition_impl(prev_instance->m_pool_size, num_partitions, - partition_size); - - OpenMP::memory_space space; - -#pragma omp parallel num_threads(num_partitions) - { - Exec thread_local_instance(partition_size); - Impl::t_openmp_instance = &thread_local_instance; - - size_t pool_reduce_bytes = 32 * partition_size; - size_t team_reduce_bytes = 32 * partition_size; - size_t team_shared_bytes = 1024 * partition_size; - size_t thread_local_bytes = 1024; - - thread_local_instance.resize_thread_data( - pool_reduce_bytes, team_reduce_bytes, team_shared_bytes, - thread_local_bytes); - - omp_set_num_threads(partition_size); - f(omp_get_thread_num(), omp_get_num_threads()); - Impl::t_openmp_instance = nullptr; - } - } else { - // nested openmp not enabled - f(0, 1); - } -} -#endif - } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_For.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_For.hpp index 96dc664eb79..823a7e668e5 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_For.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_For.hpp @@ -147,15 +147,7 @@ class ParallelFor, Kokkos::OpenMP> { inline ParallelFor(const FunctorType& arg_functor, Policy arg_policy) : m_instance(nullptr), m_functor(arg_functor), m_policy(arg_policy) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif } }; @@ -251,16 +243,9 @@ class ParallelFor, inline ParallelFor(const FunctorType& arg_functor, MDRangePolicy arg_policy) : m_instance(nullptr), m_iter(arg_policy, arg_functor) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif } + template static int max_tile_size_product(const Policy&, const Functor&) { /** @@ -409,15 +394,7 @@ class ParallelFor, m_shmem_size(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + FunctorTeamShmemSize::value( arg_functor, arg_policy.team_size())) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif } }; diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_Reduce.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_Reduce.hpp index 52cdef18e65..05fd1c9dce3 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel_Reduce.hpp @@ -170,15 +170,7 @@ class ParallelReduce, m_functor_reducer(arg_functor_reducer), m_policy(arg_policy), m_result_ptr(arg_view.data()) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, @@ -319,15 +311,7 @@ class ParallelReduce::accessible, @@ -543,15 +527,7 @@ class ParallelReduce::value( arg_functor_reducer.get_functor(), arg_policy.team_size())) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif static_assert( Kokkos::Impl::MemorySpaceAccess, inline ParallelScan(const FunctorType& arg_functor, const Policy& arg_policy) : m_instance(nullptr), m_functor(arg_functor), m_policy(arg_policy) { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif } }; @@ -292,15 +284,7 @@ class ParallelScanWithTotal, Kokkos::Impl::MemorySpaceAccess::accessible, "Kokkos::OpenMP parallel_scan result must be host-accessible!"); -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - if (t_openmp_instance) { - m_instance = t_openmp_instance; - } else { - m_instance = arg_policy.space().impl_internal_space_instance(); - } -#else m_instance = arg_policy.space().impl_internal_space_instance(); -#endif } //---------------------------------------- diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget.hpp index adf972dd081..ea4e7f6baba 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget.hpp @@ -65,7 +65,11 @@ class OpenMPTarget { using scratch_memory_space = ScratchMemorySpace; - inline static bool in_parallel() { return omp_in_parallel(); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED inline static bool in_parallel() { + return omp_in_parallel(); + } +#endif static void fence(const std::string& name = "Kokkos::OpenMPTarget::fence: Unnamed Instance Fence"); diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp index 81fbc56de00..a414b34d7c6 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp @@ -37,7 +37,6 @@ #include #include #include -#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -110,79 +109,13 @@ void OpenMPTargetSpace::deallocate(const char* arg_label, } // namespace Experimental } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord SharedAllocationRecord< - Kokkos::Experimental::OpenMPTargetSpace, void>::s_root_record; -#endif - -SharedAllocationRecord::~SharedAllocationRecord() { - auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, (alloc_size - sizeof(SharedAllocationHeader))); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, arg_label); - - // TODO DeepCopy - // DeepCopy - Kokkos::Impl::DeepCopy( - RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); - Kokkos::fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -//---------------------------------------------------------------------------- - -} // namespace Impl -} // namespace Kokkos - //============================================================================== // {{{1 #include -namespace Kokkos { -namespace Impl { - -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicity instantiate these CRTP base classes here, -// where we have access to the associated *_timpl.hpp header files. -template class HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace>; -template class SharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace>; - -} // end namespace Impl -} // end namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::Experimental::OpenMPTargetSpace); // end Explicit instantiations of CRTP Base classes }}}1 //============================================================================== diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.hpp index e5b33d0982f..ed625cfcc82 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.hpp @@ -98,6 +98,16 @@ class OpenMPTargetSpace { ~OpenMPTargetSpace() = default; /**\brief Allocate untracked memory in the space */ + // FIXME_OPENMPTARGET Use execution space instance + void* allocate(const OpenMPTarget&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + // FIXME_OPENMPTARGET Use execution space instance + void* allocate(const OpenMPTarget&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const size_t arg_alloc_size) const; void* allocate(const char* arg_label, const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; @@ -121,9 +131,6 @@ class OpenMPTargetSpace { const size_t arg_logical_size = 0, const Kokkos::Tools::SpaceHandle = Kokkos::Tools::make_space_handle(name())) const; - - friend class Kokkos::Impl::SharedAllocationRecord< - Kokkos::Experimental::OpenMPTargetSpace, void>; }; } // namespace Experimental } // namespace Kokkos @@ -131,64 +138,8 @@ class OpenMPTargetSpace { //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -namespace Kokkos { -namespace Impl { - -template <> -class SharedAllocationRecord - : public HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace> { - private: - friend class HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace>; - friend class SharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace>; - friend Kokkos::Experimental::OpenMPTargetSpace; - - using base_t = HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::OpenMPTargetSpace>; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - - /**\brief Root record for tracked allocations from this OpenMPTargetSpace - * instance */ - static RecordBase s_root_record; - - const Kokkos::Experimental::OpenMPTargetSpace m_space; - - protected: - ~SharedAllocationRecord(); - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &deallocate); - - public: - KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( - const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc) { - KOKKOS_IF_ON_HOST( - (return new SharedAllocationRecord(arg_space, arg_label, arg_alloc);)) - KOKKOS_IF_ON_DEVICE( - ((void)arg_space; (void)arg_label; (void)arg_alloc; return nullptr;)) - } -}; - -} // namespace Impl -} // namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::Experimental::OpenMPTargetSpace); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp index 1902c38409a..b39f5aca353 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp @@ -75,6 +75,7 @@ int* OpenMPTargetExec::m_lock_array = nullptr; uint64_t OpenMPTargetExec::m_lock_size = 0; uint32_t* OpenMPTargetExec::m_uniquetoken_ptr = nullptr; int OpenMPTargetExec::MAX_ACTIVE_THREADS = 0; +std::mutex OpenMPTargetExec::m_mutex_scratch_ptr; void OpenMPTargetExec::clear_scratch() { Kokkos::Experimental::OpenMPTargetSpace space; @@ -98,6 +99,11 @@ void OpenMPTargetExec::resize_scratch(int64_t team_size, int64_t shmem_size_L0, int64_t shmem_size_L1, int64_t league_size) { Kokkos::Experimental::OpenMPTargetSpace space; + // Level-0 scratch when using clang/17 and higher comes from their OpenMP + // extension, `ompx_dyn_cgroup_mem`. +#if defined(KOKKOS_IMPL_OPENMPTARGET_LLVM_EXTENSIONS) + shmem_size_L0 = 0; +#endif const int64_t shmem_size = shmem_size_L0 + shmem_size_L1; // L0 + L1 scratch memory per team. const int64_t padding = shmem_size * 10 / 100; // Padding per team. diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp index 9e8844a6f20..3387108da39 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp @@ -178,8 +178,10 @@ void OpenMPTarget::impl_static_fence(const std::string& name) { } void OpenMPTarget::impl_initialize(InitializationSettings const& settings) { + using Kokkos::Impl::get_visible_devices; + std::vector const& visible_devices = get_visible_devices(); using Kokkos::Impl::get_gpu; - const int device_num = get_gpu(settings); + const int device_num = get_gpu(settings).value_or(visible_devices[0]); omp_set_default_device(device_num); Impl::OpenMPTargetInternal::impl_singleton()->impl_initialize(); diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Macros.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Macros.hpp new file mode 100644 index 00000000000..2bd672f4d06 --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Macros.hpp @@ -0,0 +1,46 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_OPENMPTARGET_MACROS_HPP +#define KOKKOS_OPENMPTARGET_MACROS_HPP + +// Intel architectures prefer the classical hierarchical parallelism that relies +// on OpenMP. +#if defined(KOKKOS_ARCH_INTEL_GPU) +#define KOKKOS_IMPL_OPENMPTARGET_HIERARCHICAL_INTEL_GPU +#endif + +// Define a macro for llvm compiler greater than version 17 and on NVIDIA and +// AMD GPUs. This would be useful in cases where non-OpenMP standard llvm +// extensions can be used. +#if defined(KOKKOS_COMPILER_CLANG) && (KOKKOS_COMPILER_CLANG >= 1700) && \ + (defined(KOKKOS_ARCH_AMD_GPU) || defined(KOKKOS_IMPL_ARCH_NVIDIA_GPU)) +#define KOKKOS_IMPL_OPENMPTARGET_LLVM_EXTENSIONS +#endif + +#define KOKKOS_IMPL_OPENMPTARGET_PRAGMA_HELPER(x) _Pragma(#x) +#define KOKKOS_IMPL_OMPTARGET_PRAGMA(x) \ + KOKKOS_IMPL_OPENMPTARGET_PRAGMA_HELPER(omp target x) + +// Use scratch memory extensions to request dynamic shared memory for the +// right compiler/architecture combination. +#ifdef KOKKOS_IMPL_OPENMPTARGET_LLVM_EXTENSIONS +#define KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(N) ompx_dyn_cgroup_mem(N) +#else +#define KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(N) +#endif + +#endif // KOKKOS_OPENMPTARGET_MACROS_HPP diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp index 9767d8e53ef..dcc509d2faf 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp @@ -21,16 +21,10 @@ #include #include #include -#include #include #include "Kokkos_OpenMPTarget_Abort.hpp" - -// Intel architectures prefer the classical hierarchical parallelism that relies -// on OpenMP. -#if defined(KOKKOS_ARCH_INTEL_GPU) -#define KOKKOS_IMPL_OPENMPTARGET_HIERARCHICAL_INTEL_GPU -#endif +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -113,14 +107,20 @@ class OpenMPTargetExecTeamMember { team_broadcast(value, thread_id); } - // FIXME_OPENMPTARGET this function has the wrong interface and currently - // ignores the reducer passed. - template - KOKKOS_INLINE_FUNCTION ValueType team_reduce(const ValueType& value, - const JoinOp&) const { + template + KOKKOS_INLINE_FUNCTION std::enable_if_t::value> + team_reduce(ReducerType const& reducer) const noexcept { + team_reduce(reducer, reducer.reference()); + } + + // FIXME_OPENMPTARGET this function currently ignores the reducer passed. + template + KOKKOS_INLINE_FUNCTION std::enable_if_t::value> + team_reduce(ReducerType const&, typename ReducerType::value_type& value) const + noexcept { #pragma omp barrier - using value_type = ValueType; + using value_type = typename ReducerType::value_type; // const JoinLambdaAdapter op(op_in); // Make sure there is enough scratch space: @@ -149,8 +149,9 @@ class OpenMPTargetExecTeamMember { } #pragma omp barrier } - return team_scratch[0]; + value = team_scratch[0]; } + /** \brief Intra-team exclusive prefix sum with team_rank() ordering * with intra-team non-deterministic ordering accumulation. * @@ -249,15 +250,37 @@ class OpenMPTargetExecTeamMember { // and L1 shmem size. TEAM_REDUCE_SIZE = 512 bytes saved per team for // hierarchical reduction. There is an additional 10% of the requested // scratch memory allocated per team as padding. Hence the product with 0.1. + // + // Use llvm extensions for dynamic shared memory with compilers/architecture + // combinations where it is supported. + // + // Size allocated in HBM will now change based on whether we use llvm + // extensions. +#if defined(KOKKOS_IMPL_OPENMPTARGET_LLVM_EXTENSIONS) + const int total_shmem = shmem_size_L1 + shmem_size_L1 * 0.1; +#else + const int total_shmem = + shmem_size_L0 + shmem_size_L1 + (shmem_size_L0 + shmem_size_L1) * 0.1; +#endif + + // Per team offset for buffer in HBM. const int reduce_offset = - m_shmem_block_index * - (shmem_size_L0 + shmem_size_L1 + - ((shmem_size_L0 + shmem_size_L1) * 0.1) + TEAM_REDUCE_SIZE); + m_shmem_block_index * (total_shmem + TEAM_REDUCE_SIZE); + +#if defined(KOKKOS_IMPL_OPENMPTARGET_LLVM_EXTENSIONS) + const int l1_offset = reduce_offset + TEAM_REDUCE_SIZE; + char* l0_scratch = + static_cast(llvm_omp_target_dynamic_shared_alloc()); + m_team_shared = scratch_memory_space( + l0_scratch, shmem_size_L0, static_cast(glb_scratch) + l1_offset, + shmem_size_L1); +#else const int l0_offset = reduce_offset + TEAM_REDUCE_SIZE; const int l1_offset = l0_offset + shmem_size_L0; m_team_shared = scratch_memory_space( (static_cast(glb_scratch) + l0_offset), shmem_size_L0, static_cast(glb_scratch) + l1_offset, shmem_size_L1); +#endif m_reduce_scratch = static_cast(glb_scratch) + reduce_offset; m_league_rank = league_rank; m_team_rank = omp_tid; @@ -751,6 +774,7 @@ class OpenMPTargetExec { int64_t thread_local_bytes, int64_t league_size); static void* m_scratch_ptr; + static std::mutex m_mutex_scratch_ptr; static int64_t m_scratch_size; static int* m_lock_array; static uint64_t m_lock_size; diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelFor_Team.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelFor_Team.hpp index 1abc925caed..26085f11400 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelFor_Team.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelFor_Team.hpp @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -140,8 +141,10 @@ class ParallelFor, // guarantees that the number of teams specified in the `num_teams` clause is // always less than or equal to the maximum concurrently running teams. #if !defined(KOKKOS_IMPL_OPENMPTARGET_HIERARCHICAL_INTEL_GPU) -#pragma omp target teams thread_limit(team_size) firstprivate(a_functor) \ - num_teams(max_active_teams) is_device_ptr(scratch_ptr) + KOKKOS_IMPL_OMPTARGET_PRAGMA( + teams thread_limit(team_size) firstprivate(a_functor) + num_teams(max_active_teams) is_device_ptr(scratch_ptr) + KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(shmem_size_L0)) #pragma omp parallel { if (omp_get_num_teams() > max_active_teams) diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Range.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Range.hpp index 4452af3846d..caa568a8925 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Range.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Range.hpp @@ -55,6 +55,9 @@ class ParallelReduce, const pointer_type m_result_ptr; bool m_result_ptr_on_device; const int m_result_ptr_num_elems; + // Only let one ParallelReduce instance at a time use the scratch memory. + // The constructor acquires the mutex which is released in the destructor. + std::scoped_lock m_scratch_memory_lock; using TagType = typename Policy::work_tag; public: @@ -105,7 +108,8 @@ class ParallelReduce, m_result_ptr_on_device( MemorySpaceAccess::accessible), - m_result_ptr_num_elems(arg_result_view.size()) {} + m_result_ptr_num_elems(arg_result_view.size()), + m_scratch_memory_lock(OpenMPTargetExec::m_mutex_scratch_ptr) {} }; } // namespace Impl diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Team.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Team.hpp index a302fa71511..8abffa47a43 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Team.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelReduce_Team.hpp @@ -470,6 +470,10 @@ class ParallelReduce m_scratch_memory_lock; + public: void execute() const { const FunctorType& functor = m_functor_reducer.get_functor(); @@ -517,7 +521,8 @@ class ParallelReduce::value( - arg_functor_reducer.get_functor(), arg_policy.team_size())) {} + arg_functor_reducer.get_functor(), arg_policy.team_size())), + m_scratch_memory_lock(OpenMPTargetExec::m_mutex_scratch_ptr) {} }; } // namespace Impl diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelScan_Range.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelScan_Range.hpp index 1d6677a1df6..c1f7851f413 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelScan_Range.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_ParallelScan_Range.hpp @@ -238,8 +238,10 @@ class ParallelScanWithTotal, if (!base_t::m_result_ptr_device_accessible) { const int size = base_t::m_functor_reducer.get_reducer().value_size(); - DeepCopy( - base_t::m_result_ptr, chunk_values.data() + (n_chunks - 1), size); + DeepCopy( + base_t::m_policy.space(), base_t::m_result_ptr, + chunk_values.data() + (n_chunks - 1), size); } } else if (!base_t::m_result_ptr_device_accessible) { base_t::m_functor_reducer.get_reducer().init(base_t::m_result_ptr); diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_Common.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_Common.hpp index fb75f05f270..eb3dc3773c4 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_Common.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_Common.hpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace Kokkos { namespace Impl { @@ -394,9 +395,11 @@ struct ParallelReduceSpecialize, initializer(OpenMPTargetReducerWrapper ::init(omp_priv)) #if !defined(KOKKOS_IMPL_OPENMPTARGET_HIERARCHICAL_INTEL_GPU) -#pragma omp target teams num_teams(max_active_teams) thread_limit(team_size) \ - firstprivate(f) is_device_ptr(scratch_ptr) reduction(custom \ - : result) + KOKKOS_IMPL_OMPTARGET_PRAGMA( + teams num_teams(max_active_teams) thread_limit(team_size) + firstprivate(f) is_device_ptr(scratch_ptr) reduction(custom + : result) + KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(shmem_size_L0)) #pragma omp parallel reduction(custom : result) { if (omp_get_num_teams() > max_active_teams) @@ -482,9 +485,11 @@ struct ParallelReduceSpecialize, // Case where reduction is on a native data type. if constexpr (std::is_arithmetic::value) { -#pragma omp target teams num_teams(max_active_teams) thread_limit(team_size) map(to \ - : f) \ - is_device_ptr(scratch_ptr) reduction(+: result) + // Use scratch memory extensions to request dynamic shared memory for + // the right compiler/architecture combination. + KOKKOS_IMPL_OMPTARGET_PRAGMA(teams num_teams(max_active_teams) thread_limit(team_size) map(to: f) \ + is_device_ptr(scratch_ptr) reduction(+: result) \ + KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(shmem_size_L0)) #pragma omp parallel reduction(+ : result) { if (omp_get_num_teams() > max_active_teams) @@ -636,11 +641,13 @@ struct ParallelReduceSpecialize, return; } - -#pragma omp target teams num_teams(nteams) thread_limit(team_size) map(to \ - : f) \ - is_device_ptr(scratch_ptr) - { + // Use scratch memory extensions to request dynamic shared memory for the + // right compiler/architecture combination. + KOKKOS_IMPL_OMPTARGET_PRAGMA( + teams num_teams(nteams) thread_limit(team_size) map(to + : f) + is_device_ptr(scratch_ptr) + KOKKOS_IMPL_OMPX_DYN_CGROUP_MEM(shmem_size_L0)) { #pragma omp parallel { const int team_num = omp_get_team_num(); @@ -665,9 +672,8 @@ struct ParallelReduceSpecialize, int tree_neighbor_offset = 1; do { -#pragma omp target teams distribute parallel for simd map(to \ - : final_reducer) \ - is_device_ptr(scratch_ptr) +#pragma omp target teams distribute parallel for simd firstprivate( \ + final_reducer) is_device_ptr(scratch_ptr) for (int i = 0; i < nteams - tree_neighbor_offset; i += 2 * tree_neighbor_offset) { ValueType* team_scratch = static_cast(scratch_ptr); diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp index 41e62ce6e6b..6878531730d 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp @@ -438,6 +438,10 @@ class ParallelReduce m_scratch_memory_lock; + public: inline void execute() const { execute_tile( @@ -452,7 +456,8 @@ class ParallelReduce::accessible) {} + typename ViewType::memory_space>::accessible), + m_scratch_memory_lock(OpenMPTargetExec::m_mutex_scratch_ptr) {} template inline std::enable_if_t execute_tile(const FunctorType& functor, diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Reducer.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Reducer.hpp index 672271ed6b9..9b578aca112 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Reducer.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Reducer.hpp @@ -18,7 +18,6 @@ #define KOKKOS_OPENMPTARGETREDUCER_HPP #include -#include #include #include "Kokkos_OpenMPTarget_Abort.hpp" diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL.cpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL.cpp index 7fa935f693a..9a246f7642f 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL.cpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL.cpp @@ -88,26 +88,57 @@ bool SYCL::impl_is_initialized() { void SYCL::impl_finalize() { Impl::SYCLInternal::singleton().finalize(); } void SYCL::print_configuration(std::ostream& os, bool verbose) const { - os << "Devices:\n"; - os << " KOKKOS_ENABLE_SYCL: yes\n"; - os << "\nRuntime Configuration:\n"; - os << "macro KOKKOS_ENABLE_SYCL : defined\n"; +#ifdef KOKKOS_ENABLE_ONEDPL + os << "macro KOKKOS_ENABLE_ONEDPL : defined\n"; +#else + os << "macro KOKKOS_ENABLE_ONEDPL : undefined\n"; +#endif #ifdef KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED os << "macro KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED : defined\n"; #else os << "macro KOKKOS_IMPL_SYCL_DEVICE_GLOBAL_SUPPORTED : undefined\n"; #endif - +#ifdef SYCL_EXT_ONEAPI_DEVICE_GLOBAL + os << "macro SYCL_EXT_ONEAPI_DEVICE_GLOBAL : defined\n"; +#else + os << "macro SYCL_EXT_ONEAPI_DEVICE_GLOBAL : undefined\n"; +#endif #ifdef KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES os << "macro KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES : defined\n"; #else os << "macro KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES : undefined\n"; #endif - if (verbose) + int counter = 0; + int active_device = Kokkos::device_id(); + std::cout << "\nAvailable devices: \n"; + std::vector devices = Impl::get_sycl_devices(); + for (const auto& device : devices) { + std::string device_type; + switch (device.get_info()) { + case sycl::info::device_type::cpu: device_type = "cpu"; break; + case sycl::info::device_type::gpu: device_type = "gpu"; break; + case sycl::info::device_type::accelerator: + device_type = "accelerator"; + break; + case sycl::info::device_type::custom: device_type = "custom"; break; + case sycl::info::device_type::automatic: device_type = "automatic"; break; + case sycl::info::device_type::host: device_type = "host"; break; + case sycl::info::device_type::all: device_type = "all"; break; + } + os << "[" << device.get_backend() << "]:" << device_type << ':' << counter + << "] " << device.get_info(); + if (counter == active_device) os << " : Selected"; + os << '\n'; + ++counter; + } + + if (verbose) { + os << '\n'; SYCL::impl_sycl_info(os, m_space_instance->m_queue->get_device()); + } } void SYCL::fence(const std::string& name) const { @@ -137,20 +168,11 @@ void SYCL::impl_static_fence(const std::string& name) { } void SYCL::impl_initialize(InitializationSettings const& settings) { - std::vector gpu_devices = - sycl::device::get_devices(sycl::info::device_type::gpu); - // If the device id is not specified and there are no GPUs, sidestep Kokkos - // device selection and use whatever is available (if no GPU architecture is - // specified). -#if !defined(KOKKOS_ARCH_INTEL_GPU) && !defined(KOKKOS_IMPL_ARCH_NVIDIA_GPU) - if (!settings.has_device_id() && gpu_devices.empty()) { - Impl::SYCLInternal::singleton().initialize(sycl::device()); - Impl::SYCLInternal::m_syclDev = 0; - return; - } -#endif - const auto id = ::Kokkos::Impl::get_gpu(settings); - Impl::SYCLInternal::singleton().initialize(gpu_devices[id]); + const auto& visible_devices = ::Kokkos::Impl::get_visible_devices(); + const auto id = + ::Kokkos::Impl::get_gpu(settings).value_or(visible_devices[0]); + std::vector sycl_devices = Impl::get_sycl_devices(); + Impl::SYCLInternal::singleton().initialize(sycl_devices[id]); Impl::SYCLInternal::m_syclDev = id; } @@ -243,9 +265,32 @@ std::ostream& SYCL::impl_sycl_info(std::ostream& os, namespace Impl { +std::vector get_sycl_devices() { +#if defined(KOKKOS_ARCH_INTEL_GPU) || defined(KOKKOS_IMPL_ARCH_NVIDIA_GPU) || \ + defined(KOKKOS_ARCH_AMD_GPU) + std::vector devices = + sycl::device::get_devices(sycl::info::device_type::gpu); +#if defined(KOKKOS_ARCH_INTEL_GPU) + sycl::backend backend = sycl::backend::ext_oneapi_level_zero; +#elif defined(KOKKOS_IMPL_ARCH_NVIDIA_GPU) + sycl::backend backend = sycl::backend::ext_oneapi_cuda; +#elif defined(KOKKOS_ARCH_AMD_GPU) + sycl::backend backend = sycl::backend::ext_oneapi_hip; +#endif + devices.erase(std::remove_if(devices.begin(), devices.end(), + [backend](const sycl::device& d) { + return d.get_backend() != backend; + }), + devices.end()); +#else + std::vector devices = sycl::device::get_devices(); +#endif + return devices; +} + int g_sycl_space_factory_initialized = Kokkos::Impl::initialize_space_factory("170_SYCL"); -} +} // namespace Impl } // namespace Experimental } // namespace Kokkos diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL.hpp index be6b4b89302..0f3d1f0994d 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL.hpp @@ -78,19 +78,15 @@ class SYCL { //! \name Functions that all Kokkos devices must implement. //@{ - KOKKOS_INLINE_FUNCTION static int in_parallel() { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED KOKKOS_INLINE_FUNCTION static int in_parallel() { #if defined(__SYCL_DEVICE_ONLY__) return true; #else return false; #endif } - - /** \brief Set the device in a "sleep" state. */ - static bool sleep(); - - /** \brief Wake the device from the 'sleep' state. A noop for OpenMP. */ - static bool wake(); +#endif /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ static void impl_static_fence(const std::string& name); @@ -188,6 +184,10 @@ std::vector partition_space(const SYCL& sycl_space, sycl::queue(context, device, sycl::property::queue::in_order())); return instances; } + +namespace Impl { +std::vector get_sycl_devices(); +} // namespace Impl } // namespace Experimental } // namespace Kokkos diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.cpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.cpp index 080369770d7..0e67adb5787 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.cpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.cpp @@ -54,7 +54,7 @@ Kokkos::View sycl_global_unique_token_locks( } SYCLInternal::~SYCLInternal() { - if (!was_finalized || m_scratchSpace || m_scratchFlags) { + if (!was_finalized || m_scratchSpace || m_scratchHost || m_scratchFlags) { std::cerr << "Kokkos::Experimental::SYCL ERROR: Failed to call " "Kokkos::Experimental::SYCL::finalize()" << std::endl; @@ -102,6 +102,23 @@ void SYCLInternal::initialize(const sycl::device& d) { void SYCLInternal::initialize(const sycl::queue& q) { KOKKOS_EXPECTS(!is_initialized()); +#define KOKKOS_IMPL_CHECK_SYCL_BACKEND_SUPPORT(BACKEND, REQUIRED) \ + if (BACKEND != REQUIRED) \ + Kokkos::abort( \ + "The SYCL execution space instance was initialized with an " \ + "unsupported backend type! For this GPU architecture, only " #REQUIRED \ + " is supported.") +#if defined(KOKKOS_ARCH_INTEL_GPU) + KOKKOS_IMPL_CHECK_SYCL_BACKEND_SUPPORT(q.get_backend(), + sycl::backend::ext_oneapi_level_zero); +#elif defined(KOKKOS_IMPL_ARCH_NVIDIA_GPU) + KOKKOS_IMPL_CHECK_SYCL_BACKEND_SUPPORT(q.get_backend(), + sycl::backend::ext_oneapi_cuda); +#elif defined(KOKKOS_ARCH_AMD_GPU) + KOKKOS_IMPL_CHECK_SYCL_BACKEND_SUPPORT(q.get_backend(), + sycl::backend::ext_oneapi_hip); +#endif + if (was_finalized) Kokkos::abort("Calling SYCL::initialize after SYCL::finalize is illegal\n"); @@ -196,14 +213,22 @@ void SYCLInternal::finalize() { #endif } - using RecordSYCL = Kokkos::Impl::SharedAllocationRecord; + auto device_mem_space = SYCLDeviceUSMSpace(*m_queue); + auto host_mem_space = SYCLHostUSMSpace(*m_queue); if (nullptr != m_scratchSpace) - RecordSYCL::decrement(RecordSYCL::get_record(m_scratchSpace)); + device_mem_space.deallocate(m_scratchSpace, + m_scratchSpaceCount * sizeScratchGrain); + if (nullptr != m_scratchHost) + host_mem_space.deallocate(m_scratchHost, + m_scratchHostCount * sizeScratchGrain); if (nullptr != m_scratchFlags) - RecordSYCL::decrement(RecordSYCL::get_record(m_scratchFlags)); + device_mem_space.deallocate(m_scratchFlags, + m_scratchFlagsCount * sizeScratchGrain); m_syclDev = -1; m_scratchSpaceCount = 0; m_scratchSpace = nullptr; + m_scratchHostCount = 0; + m_scratchHost = nullptr; m_scratchFlagsCount = 0; m_scratchFlags = nullptr; @@ -228,54 +253,68 @@ void SYCLInternal::finalize() { sycl::device_ptr SYCLInternal::scratch_space(const std::size_t size) { if (verify_is_initialized("scratch_space") && m_scratchSpaceCount < scratch_count(size)) { - m_scratchSpaceCount = scratch_count(size); - - using Record = Kokkos::Impl::SharedAllocationRecord< - Kokkos::Experimental::SYCLDeviceUSMSpace, void>; + auto mem_space = Kokkos::Experimental::SYCLDeviceUSMSpace(*m_queue); if (nullptr != m_scratchSpace) - Record::decrement(Record::get_record(m_scratchSpace)); + mem_space.deallocate(m_scratchSpace, + m_scratchSpaceCount * sizeScratchGrain); + + m_scratchSpaceCount = scratch_count(size); std::size_t alloc_size = Kokkos::Impl::multiply_overflow_abort( m_scratchSpaceCount, sizeScratchGrain); - Record* const r = Record::allocate( - Kokkos::Experimental::SYCLDeviceUSMSpace(*m_queue), - "Kokkos::Experimental::SYCL::InternalScratchSpace", alloc_size); + m_scratchSpace = static_cast(mem_space.allocate( + "Kokkos::Experimental::SYCL::InternalScratchSpace", alloc_size)); + } + + return m_scratchSpace; +} + +sycl::host_ptr SYCLInternal::scratch_host(const std::size_t size) { + if (verify_is_initialized("scratch_unified") && + m_scratchHostCount < scratch_count(size)) { + auto mem_space = Kokkos::Experimental::SYCLHostUSMSpace(*m_queue); - Record::increment(r); + if (nullptr != m_scratchHost) + mem_space.deallocate(m_scratchHost, + m_scratchHostCount * sizeScratchGrain); - m_scratchSpace = reinterpret_cast(r->data()); + m_scratchHostCount = scratch_count(size); + + std::size_t alloc_size = Kokkos::Impl::multiply_overflow_abort( + m_scratchHostCount, sizeScratchGrain); + m_scratchHost = static_cast(mem_space.allocate( + "Kokkos::Experimental::SYCL::InternalScratchHost", alloc_size)); } - return m_scratchSpace; + return m_scratchHost; } sycl::device_ptr SYCLInternal::scratch_flags(const std::size_t size) { if (verify_is_initialized("scratch_flags") && m_scratchFlagsCount < scratch_count(size)) { - m_scratchFlagsCount = scratch_count(size); - - using Record = Kokkos::Impl::SharedAllocationRecord< - Kokkos::Experimental::SYCLDeviceUSMSpace, void>; + auto mem_space = Kokkos::Experimental::SYCLDeviceUSMSpace(*m_queue); if (nullptr != m_scratchFlags) - Record::decrement(Record::get_record(m_scratchFlags)); + mem_space.deallocate(m_scratchFlags, + m_scratchFlagsCount * sizeScratchGrain); + + m_scratchFlagsCount = scratch_count(size); std::size_t alloc_size = Kokkos::Impl::multiply_overflow_abort( m_scratchFlagsCount, sizeScratchGrain); - Record* const r = Record::allocate( - Kokkos::Experimental::SYCLDeviceUSMSpace(*m_queue), - "Kokkos::Experimental::SYCL::InternalScratchFlags", alloc_size); - - Record::increment(r); - - m_scratchFlags = reinterpret_cast(r->data()); - } - auto memset_event = m_queue->memset(m_scratchFlags, 0, - m_scratchFlagsCount * sizeScratchGrain); + m_scratchFlags = static_cast(mem_space.allocate( + "Kokkos::Experimental::SYCL::InternalScratchFlags", alloc_size)); + + // We only zero-initialize the allocation when we actually allocate. + // It's the responsibility of the features using scratch_flags, + // namely parallel_reduce and parallel_scan, to reset the used values to 0. + auto memset_event = m_queue->memset(m_scratchFlags, 0, + m_scratchFlagsCount * sizeScratchGrain); #ifndef KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES - m_queue->ext_oneapi_submit_barrier(std::vector{memset_event}); + m_queue->ext_oneapi_submit_barrier(std::vector{memset_event}); #endif + } return m_scratchFlags; } @@ -318,15 +357,12 @@ size_t SYCLInternal::USMObjectMem::reserve(size_t n) { assert(m_q); if (m_capacity < n) { - using Record = Kokkos::Impl::SharedAllocationRecord; - // First free what we have (in case malloc can reuse it) - if (m_data) Record::decrement(Record::get_record(m_data)); + AllocationSpace alloc_space(*m_q); + if (m_data) alloc_space.deallocate(m_data, m_capacity); - Record* const r = Record::allocate( - AllocationSpace(*m_q), "Kokkos::Experimental::SYCL::USMObjectMem", n); - Record::increment(r); + m_data = + alloc_space.allocate("Kokkos::Experimental::SYCL::USMObjectMem", n); - m_data = r->data(); if constexpr (sycl::usm::alloc::device == Kind) m_staging.reset(new char[n]); m_capacity = n; @@ -340,8 +376,8 @@ void SYCLInternal::USMObjectMem::reset() { if (m_data) { // This implies a fence since this class is not copyable // and deallocating implies a fence across all registered queues. - using Record = Kokkos::Impl::SharedAllocationRecord; - Record::decrement(Record::get_record(m_data)); + AllocationSpace alloc_space(*m_q); + alloc_space.deallocate(m_data, m_capacity); m_capacity = 0; m_data = nullptr; diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.hpp index 51a617054d6..ab7e8ce71e0 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Instance.hpp @@ -45,6 +45,7 @@ class SYCLInternal { sycl::device_ptr scratch_space(const std::size_t size); sycl::device_ptr scratch_flags(const std::size_t size); + sycl::host_ptr scratch_host(const std::size_t size); int acquire_team_scratch_space(); sycl::device_ptr resize_team_scratch_space(int scratch_pool_id, std::int64_t bytes, @@ -60,6 +61,8 @@ class SYCLInternal { std::size_t m_scratchSpaceCount = 0; sycl::device_ptr m_scratchSpace = nullptr; + std::size_t m_scratchHostCount = 0; + sycl::host_ptr m_scratchHost = nullptr; std::size_t m_scratchFlagsCount = 0; sycl::device_ptr m_scratchFlags = nullptr; // mutex to access shared memory @@ -330,8 +333,8 @@ struct sycl::is_device_copyable< Kokkos::Experimental::Impl::SYCLFunctionWrapper> : std::true_type {}; -// FIXME_SYCL Remove when this specialization when specializations for -// sycl::device_copyable also apply to const-qualified types. +#if (defined(__INTEL_LLVM_COMPILER) && __INTEL_LLVM_COMPILER < 20240000) || \ + (defined(__LIBSYCL_MAJOR_VERSION) && __LIBSYCL_MAJOR_VERSION < 7) template struct NonTriviallyCopyableAndDeviceCopyable { NonTriviallyCopyableAndDeviceCopyable( @@ -356,3 +359,4 @@ struct sycl::is_device_copyable< : std::true_type {}; #endif #endif +#endif diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_MDRange.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_MDRange.hpp index f4fada570b0..7fbf5420f83 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_MDRange.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_MDRange.hpp @@ -118,6 +118,8 @@ class Kokkos::Impl::ParallelFor, const BarePolicy bare_policy(m_policy); + desul::ensure_sycl_lock_arrays_on_device(q); + auto parallel_for_event = q.submit([&](sycl::handler& cgh) { const auto range = compute_ranges(); const sycl::range<3> global_range = range.get_global_range(); diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Range.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Range.hpp index 9c5767d209f..b4de7eb89ff 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Range.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Range.hpp @@ -81,6 +81,8 @@ class Kokkos::Impl::ParallelFor, const Kokkos::Experimental::SYCL& space = policy.space(); sycl::queue& q = space.sycl_queue(); + desul::ensure_sycl_lock_arrays_on_device(q); + auto parallel_for_event = q.submit([&](sycl::handler& cgh) { #ifndef KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES cgh.depends_on(memcpy_event); diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Team.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Team.hpp index 4fc5818ce9b..ecb4a863da2 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Team.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelFor_Team.hpp @@ -46,9 +46,9 @@ class Kokkos::Impl::ParallelFor, int m_shmem_size; sycl::device_ptr m_global_scratch_ptr; size_t m_scratch_size[2]; - // Only let one ParallelFor/Reduce modify the team scratch memory. The - // constructor acquires the mutex which is released in the destructor. - std::scoped_lock m_scratch_lock; + // Only let one ParallelFor instance at a time use the team scratch memory. + // The constructor acquires the mutex which is released in the destructor. + std::scoped_lock m_scratch_buffers_lock; int m_scratch_pool_id = -1; template @@ -59,6 +59,8 @@ class Kokkos::Impl::ParallelFor, const Kokkos::Experimental::SYCL& space = policy.space(); sycl::queue& q = space.sycl_queue(); + desul::ensure_sycl_lock_arrays_on_device(q); + auto parallel_for_event = q.submit([&](sycl::handler& cgh) { // FIXME_SYCL accessors seem to need a size greater than zero at least for // host queues @@ -74,7 +76,8 @@ class Kokkos::Impl::ParallelFor, auto lambda = [=](sycl::nd_item<2> item) { const member_type team_member( - team_scratch_memory_L0.get_pointer(), shmem_begin, scratch_size[0], + KOKKOS_IMPL_SYCL_GET_MULTI_PTR(team_scratch_memory_L0), shmem_begin, + scratch_size[0], global_scratch_ptr + item.get_group(1) * scratch_size[1], scratch_size[1], item, item.get_group_linear_id(), item.get_group_range(1)); @@ -141,9 +144,9 @@ class Kokkos::Impl::ParallelFor, m_league_size(arg_policy.league_size()), m_team_size(arg_policy.team_size()), m_vector_size(arg_policy.impl_vector_length()), - m_scratch_lock(arg_policy.space() - .impl_internal_space_instance() - ->m_team_scratch_mutex) { + m_scratch_buffers_lock(arg_policy.space() + .impl_internal_space_instance() + ->m_team_scratch_mutex) { // FIXME_SYCL optimize if (m_team_size < 0) m_team_size = diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_MDRange.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_MDRange.hpp index 6964c2dbcf0..f55280e22e3 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_MDRange.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_MDRange.hpp @@ -78,7 +78,7 @@ class Kokkos::Impl::ParallelReduce::accessible), - m_shared_memory_lock( + m_scratch_buffers_lock( m_space.impl_internal_space_instance()->m_mutexScratchSpace) {} private: @@ -95,9 +95,16 @@ class Kokkos::Impl::ParallelReduce results_ptr; + auto host_result_ptr = + (m_result_ptr && !m_result_ptr_device_accessible) + ? static_cast>( + instance.scratch_host(sizeof(value_type) * value_count)) + : nullptr; sycl::event last_reduction_event; + desul::ensure_sycl_lock_arrays_on_device(q); + // If n_tiles==0 we only call init() and final() working with the global // scratch memory but don't copy back to m_result_ptr yet. if (n_tiles == 0) { @@ -109,8 +116,10 @@ class Kokkos::Impl::ParallelReduce>( instance.scratch_space(sizeof(value_type) * value_count)); - sycl::global_ptr device_accessible_result_ptr = - m_result_ptr_device_accessible ? m_result_ptr : nullptr; + auto device_accessible_result_ptr = + m_result_ptr_device_accessible + ? static_cast>(m_result_ptr) + : static_cast>(host_result_ptr); cgh.single_task([=]() { const CombinedFunctorReducerType& functor_reducer = functor_reducer_wrapper.get_functor(); @@ -148,8 +157,10 @@ class Kokkos::Impl::ParallelReduce>( instance.scratch_space(sizeof(value_type) * value_count * n_wgroups)); - sycl::global_ptr device_accessible_result_ptr = - m_result_ptr_device_accessible ? m_result_ptr : nullptr; + auto device_accessible_result_ptr = + m_result_ptr_device_accessible + ? static_cast>(m_result_ptr) + : static_cast>(host_result_ptr); auto scratch_flags = static_cast>( instance.scratch_flags(sizeof(unsigned int))); @@ -223,6 +234,7 @@ class Kokkos::Impl::ParallelReduce= static_cast(n_wgroups)) reducer.init(&local_mem[local_id * value_count]); else { @@ -268,6 +280,7 @@ class Kokkos::Impl::ParallelReduce= static_cast(n_wgroups)) reducer.init(&local_value); else { @@ -296,11 +309,13 @@ class Kokkos::Impl::ParallelReduce( - m_space, m_result_ptr, results_ptr, - sizeof(*m_result_ptr) * value_count); + // Using DeepCopy instead of fence+memcpy turned out to be up to 2x slower. + if (host_result_ptr) { + m_space.fence( + "Kokkos::Impl::ParallelReduce::execute: result " + "not device-accessible"); + std::memcpy(m_result_ptr, host_result_ptr, + sizeof(value_type) * value_count); } return last_reduction_event; @@ -335,9 +350,9 @@ class Kokkos::Impl::ParallelReduce m_shared_memory_lock; + // Only let one ParallelReduce instance at a time use the host scratch memory. + // The constructor acquires the mutex which is released in the destructor. + std::scoped_lock m_scratch_buffers_lock; }; #endif /* KOKKOS_SYCL_PARALLEL_REDUCE_MDRANGE_HPP */ diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Range.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Range.hpp index 8c900cfa428..5333e3c8a83 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Range.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Range.hpp @@ -51,7 +51,7 @@ class Kokkos::Impl::ParallelReduce::accessible), - m_shared_memory_lock( + m_scratch_buffers_lock( p.space().impl_internal_space_instance()->m_mutexScratchSpace) {} private: @@ -70,11 +70,20 @@ class Kokkos::Impl::ParallelReduce results_ptr = nullptr; - sycl::global_ptr device_accessible_result_ptr = - m_result_ptr_device_accessible ? m_result_ptr : nullptr; + auto host_result_ptr = + (m_result_ptr && !m_result_ptr_device_accessible) + ? static_cast>( + instance.scratch_host(sizeof(value_type) * value_count)) + : nullptr; + auto device_accessible_result_ptr = + m_result_ptr_device_accessible + ? static_cast>(m_result_ptr) + : static_cast>(host_result_ptr); sycl::event last_reduction_event; + desul::ensure_sycl_lock_arrays_on_device(q); + // If size<=1 we only call init(), the functor and possibly final once // working with the global scratch memory but don't copy back to // m_result_ptr yet. @@ -168,6 +177,7 @@ class Kokkos::Impl::ParallelReduce= n_wgroups) reducer.init(&local_mem[local_id * value_count]); else { @@ -210,6 +220,7 @@ class Kokkos::Impl::ParallelReduce= n_wgroups) reducer.init(&local_value); else { @@ -320,11 +331,13 @@ class Kokkos::Impl::ParallelReduce( - space, m_result_ptr, results_ptr, - sizeof(*m_result_ptr) * value_count); + // Using DeepCopy instead of fence+memcpy turned out to be up to 2x slower. + if (host_result_ptr) { + space.fence( + "Kokkos::Impl::ParallelReduce::execute: result " + "not device-accessible"); + std::memcpy(m_result_ptr, host_result_ptr, + sizeof(*m_result_ptr) * value_count); } return last_reduction_event; @@ -354,9 +367,9 @@ class Kokkos::Impl::ParallelReduce m_shared_memory_lock; + // Only let one ParallelReduce instance at a time use the host scratch memory. + // The constructor acquires the mutex which is released in the destructor. + std::scoped_lock m_scratch_buffers_lock; }; #endif /* KOKKOS_SYCL_PARALLEL_REDUCE_RANGE_HPP */ diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Team.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Team.hpp index 07145b0fb93..27165c59e3a 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Team.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelReduce_Team.hpp @@ -59,9 +59,10 @@ class Kokkos::Impl::ParallelReduce m_scratch_lock; + // Only let one ParallelReduce instance at a time use the team scratch memory + // and the host scratch memory. The constructor acquires the mutex which is + // released in the destructor. + std::scoped_lock m_scratch_buffers_lock; int m_scratch_pool_id = -1; template @@ -79,9 +80,16 @@ class Kokkos::Impl::ParallelReduce>( + instance.scratch_host(sizeof(value_type) * value_count)) + : nullptr; sycl::event last_reduction_event; + desul::ensure_sycl_lock_arrays_on_device(q); + // If size<=1 we only call init(), the functor and possibly final once // working with the global scratch memory but don't copy back to // m_result_ptr yet. @@ -89,8 +97,10 @@ class Kokkos::Impl::ParallelReduce>(instance.scratch_space( sizeof(value_type) * std::max(value_count, 1u))); - sycl::global_ptr device_accessible_result_ptr = - m_result_ptr_device_accessible ? m_result_ptr : nullptr; + auto device_accessible_result_ptr = + m_result_ptr_device_accessible + ? static_cast>(m_result_ptr) + : static_cast>(host_result_ptr); auto parallel_reduce_event = q.submit([&](sycl::handler& cgh) { // FIXME_SYCL accessors seem to need a size greater than zero at least @@ -121,9 +131,10 @@ class Kokkos::Impl::ParallelReduce) functor(team_member, update); else @@ -160,12 +171,16 @@ class Kokkos::Impl::ParallelReduce const global_scratch_ptr = m_global_scratch_ptr; + sycl::local_accessor num_teams_done(1, cgh); auto team_reduction_factory = [&](sycl::local_accessor local_mem, sycl::device_ptr results_ptr) { - sycl::global_ptr device_accessible_result_ptr = - m_result_ptr_device_accessible ? m_result_ptr : nullptr; + auto device_accessible_result_ptr = + m_result_ptr_device_accessible + ? static_cast>(m_result_ptr) + : static_cast>( + host_result_ptr); auto lambda = [=](sycl::nd_item<2> item) { auto n_wgroups = item.get_group_range()[1]; int wgroup_size = @@ -173,8 +188,6 @@ class Kokkos::Impl::ParallelReduce( - local_mem[wgroup_size * std::max(value_count, 1u)]); const auto local_id = item.get_local_linear_id(); const CombinedFunctorReducerType& functor_reducer = functor_reducer_wrapper.get_functor(); @@ -188,8 +201,8 @@ class Kokkos::Impl::ParallelReduce scratch_flags_ref(*scratch_flags); - num_teams_done = ++scratch_flags_ref; + num_teams_done[0] = ++scratch_flags_ref; } sycl::group_barrier(item.get_group()); - if (num_teams_done == n_wgroups) { + if (num_teams_done[0] == n_wgroups) { + if (local_id == 0) *scratch_flags = 0; if (local_id >= n_wgroups) reducer.init(&local_mem[local_id * value_count]); else { @@ -241,8 +255,8 @@ class Kokkos::Impl::ParallelReduce scratch_flags_ref(*scratch_flags); - num_teams_done = ++scratch_flags_ref; + num_teams_done[0] = ++scratch_flags_ref; } item.barrier(sycl::access::fence_space::local_space); - if (num_teams_done == n_wgroups) { + if (num_teams_done[0] == n_wgroups) { + if (local_id == 0) *scratch_flags = 0; if (local_id >= n_wgroups) reducer.init(&local_value); else { @@ -311,10 +326,7 @@ class Kokkos::Impl::ParallelReduce local_mem( - sycl::range<1>(wgroup_size) * std::max(value_count, 1u) + - (sizeof(unsigned int) + sizeof(value_type) - 1) / - sizeof(value_type), - cgh); + sycl::range<1>(wgroup_size) * std::max(value_count, 1u), cgh); const auto init_size = std::max((size + wgroup_size - 1) / wgroup_size, 1); @@ -358,11 +370,13 @@ class Kokkos::Impl::ParallelReduce( - space, m_result_ptr, results_ptr, - sizeof(*m_result_ptr) * value_count); + // Using DeepCopy instead of fence+memcpy turned out to be up to 2x slower. + if (host_result_ptr) { + space.fence( + "Kokkos::Impl::ParallelReduce::execute: result not " + "device-accessible"); + std::memcpy(m_result_ptr, host_result_ptr, + sizeof(*m_result_ptr) * value_count); } return last_reduction_event; @@ -448,9 +462,9 @@ class Kokkos::Impl::ParallelReducem_team_scratch_mutex) { + m_scratch_buffers_lock(arg_policy.space() + .impl_internal_space_instance() + ->m_team_scratch_mutex) { initialize(); } }; diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelScan_Range.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelScan_Range.hpp index 04425723e19..977b69bc9eb 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelScan_Range.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ParallelScan_Range.hpp @@ -14,8 +14,8 @@ // //@HEADER -#ifndef KOKKO_SYCL_PARALLEL_SCAN_RANGE_HPP -#define KOKKO_SYCL_PARALLEL_SCAN_RANGE_HPP +#ifndef KOKKOS_SYCL_PARALLEL_SCAN_RANGE_HPP +#define KOKKOS_SYCL_PARALLEL_SCAN_RANGE_HPP #include #include @@ -111,13 +111,13 @@ class ParallelScanSYCLBase { const CombinedFunctorReducer m_functor_reducer; const Policy m_policy; - pointer_type m_scratch_space = nullptr; - const pointer_type m_result_ptr; + sycl::host_ptr m_scratch_host = nullptr; + pointer_type m_result_ptr; const bool m_result_ptr_device_accessible; - // Only let one Parallel/Scan modify the shared memory. The - // constructor acquires the mutex which is released in the destructor. - std::scoped_lock m_shared_memory_lock; + // Only let one ParallelScan instance at a time use the host scratch memory. + // The constructor acquires the mutex which is released in the destructor. + std::scoped_lock m_scratch_buffers_lock; private: template @@ -187,6 +187,7 @@ class ParallelScanSYCLBase { } item.barrier(sycl::access::fence_space::global_space); if (num_teams_done[0] == n_wgroups) { + if (local_id == 0) *scratch_flags = 0; value_type total; reducer.init(&total); @@ -220,6 +221,8 @@ class ParallelScanSYCLBase { sycl::device_ptr global_mem; sycl::device_ptr group_results; + desul::ensure_sycl_lock_arrays_on_device(q); + auto perform_work_group_scans = q.submit([&](sycl::handler& cgh) { sycl::local_accessor num_teams_done(1, cgh); @@ -253,7 +256,8 @@ class ParallelScanSYCLBase { global_mem = static_cast>(instance.scratch_space( n_wgroups * (wgroup_size + 1) * sizeof(value_type))); - m_scratch_space = global_mem; + m_scratch_host = static_cast>( + instance.scratch_host(sizeof(value_type))); group_results = global_mem + n_wgroups * wgroup_size; @@ -281,10 +285,11 @@ class ParallelScanSYCLBase { // Write results to global memory auto update_global_results = q.submit([&](sycl::handler& cgh) { - auto result_ptr_device_accessible = m_result_ptr_device_accessible; // The compiler failed with CL_INVALID_ARG_VALUE if using m_result_ptr // directly. - auto result_ptr = m_result_ptr_device_accessible ? m_result_ptr : nullptr; + pointer_type result_ptr = m_result_ptr_device_accessible + ? m_result_ptr + : static_cast(m_scratch_host); #ifndef KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES cgh.depends_on(perform_work_group_scans); @@ -293,7 +298,6 @@ class ParallelScanSYCLBase { cgh.parallel_for( sycl::nd_range<1>(n_wgroups * wgroup_size, wgroup_size), [=](sycl::nd_item<1> item) { - auto global_mem_copy = global_mem; const index_type global_id = item.get_global_linear_id(); const CombinedFunctorReducer< FunctorType, typename Analysis::Reducer>& functor_reducer = @@ -312,9 +316,7 @@ class ParallelScanSYCLBase { else functor(WorkTag(), global_id + begin, update, true); - global_mem_copy[global_id] = update; - if (global_id == size - 1 && result_ptr_device_accessible) - *result_ptr = update; + if (global_id == size - 1) *result_ptr = update; } }); }); @@ -351,9 +353,9 @@ class ParallelScanSYCLBase { m_policy(arg_policy), m_result_ptr(arg_result_ptr), m_result_ptr_device_accessible(arg_result_ptr_device_accessible), - m_shared_memory_lock(m_policy.space() - .impl_internal_space_instance() - ->m_mutexScratchSpace) {} + m_scratch_buffers_lock(m_policy.space() + .impl_internal_space_instance() + ->m_mutexScratchSpace) {} }; } // namespace Kokkos::Impl @@ -390,11 +392,13 @@ class Kokkos::Impl::ParallelScanWithTotal< Base::impl_execute([&]() { const long long nwork = Base::m_policy.end() - Base::m_policy.begin(); if (nwork > 0 && !Base::m_result_ptr_device_accessible) { + // Using DeepCopy instead of fence+memcpy turned out to be up to 2x + // slower. + m_exec.fence( + "Kokkos::Impl::ParallelReduce::execute: " + "result not device-accessible"); const int size = Base::m_functor_reducer.get_reducer().value_size(); - DeepCopy(m_exec, Base::m_result_ptr, - Base::m_scratch_space + nwork - 1, - size); + std::memcpy(Base::m_result_ptr, Base::m_scratch_host, size); } }); } diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.cpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.cpp index 64b7f56796a..9cc8008cdf3 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.cpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include /*--------------------------------------------------------------------------*/ @@ -243,226 +242,17 @@ void SYCLHostUSMSpace::deallocate(const char* arg_label, } // namespace Experimental } // namespace Kokkos -namespace Kokkos { -namespace Impl { - -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord SharedAllocationRecord< - Kokkos::Experimental::SYCLDeviceUSMSpace, void>::s_root_record; - -SharedAllocationRecord SharedAllocationRecord< - Kokkos::Experimental::SYCLSharedUSMSpace, void>::s_root_record; - -SharedAllocationRecord SharedAllocationRecord< - Kokkos::Experimental::SYCLHostUSMSpace, void>::s_root_record; -#endif - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCLDeviceUSMSpace& space, - const std::string& label, const size_t size, - const SharedAllocationRecord::function_type dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(space, label, size), - sizeof(SharedAllocationHeader) + size, dealloc, label), - m_space(space) { - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, label); - - // Copy to device memory - Kokkos::Experimental::SYCL exec; - Kokkos::Impl::DeepCopy( - exec, RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); - exec.fence( - "SharedAllocationRecord::SharedAllocationRecord(): fence after copying header from " - "HostSpace"); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& arg_exec_space, - const Kokkos::Experimental::SYCLDeviceUSMSpace& space, - const std::string& label, const size_t size, - const SharedAllocationRecord::function_type dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Kokkos::Impl::checked_allocation_with_header(arg_exec_space, space, - label, size), - sizeof(SharedAllocationHeader) + size, dealloc, label), - m_space(space) { - SharedAllocationHeader header; - - this->base_t::_fill_host_accessible_header_info(header, label); - - // Copy to device memory - Kokkos::Impl::DeepCopy( - arg_exec_space, RecordBase::m_alloc_ptr, &header, - sizeof(SharedAllocationHeader)); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& exec_space, - const Kokkos::Experimental::SYCLSharedUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(exec_space, arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCLSharedUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& exec_space, - const Kokkos::Experimental::SYCLHostUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(exec_space, arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::SYCLHostUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - - this->base_t::_fill_host_accessible_header_info(*base_t::m_alloc_ptr, - arg_label); -} - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -SharedAllocationRecord::~SharedAllocationRecord() { - const auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, alloc_size - sizeof(SharedAllocationHeader)); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - const auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, alloc_size - sizeof(SharedAllocationHeader)); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - const auto alloc_size = SharedAllocationRecord::m_alloc_size; - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - alloc_size, alloc_size - sizeof(SharedAllocationHeader)); -} - -//---------------------------------------------------------------------------- - -} // namespace Impl -} // namespace Kokkos - //============================================================================== // {{{1 #include -namespace Kokkos { -namespace Impl { - -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicity instantiate these CRTP base classes here, -// where we have access to the associated *_timpl.hpp header files. -template class HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace>; -template class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace>; -template class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLSharedUSMSpace>; -template class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLHostUSMSpace>; - -} // namespace Impl -} // namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::Experimental::SYCLDeviceUSMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::Experimental::SYCLSharedUSMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( + Kokkos::Experimental::SYCLHostUSMSpace); // end Explicit instantiations of CRTP Base classes }}}1 //============================================================================== diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.hpp index 239c6e3ce0b..b86cfca413c 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Space.hpp @@ -66,11 +66,6 @@ class SYCLDeviceUSMSpace { const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; - private: - template - friend class LogicalMemorySpace; - - public: static constexpr const char* name() { return "SYCLDeviceUSM"; }; private: @@ -87,6 +82,16 @@ class SYCLSharedUSMSpace { SYCLSharedUSMSpace(); explicit SYCLSharedUSMSpace(sycl::queue queue); + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const SYCL& exec_space, const std::size_t arg_alloc_size) const; void* allocate(const SYCL& exec_space, const char* arg_label, @@ -102,11 +107,6 @@ class SYCLSharedUSMSpace { const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; - private: - template - friend class LogicalMemorySpace; - - public: static constexpr const char* name() { return "SYCLSharedUSM"; }; private: @@ -123,6 +123,16 @@ class SYCLHostUSMSpace { SYCLHostUSMSpace(); explicit SYCLHostUSMSpace(sycl::queue queue); + template + void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const { + return allocate(arg_alloc_size); + } + template + void* allocate(const ExecutionSpace&, const char* arg_label, + const size_t arg_alloc_size, + const size_t arg_logical_size = 0) const { + return allocate(arg_label, arg_alloc_size, arg_logical_size); + } void* allocate(const SYCL& exec_space, const std::size_t arg_alloc_size) const; void* allocate(const SYCL& exec_space, const char* arg_label, @@ -138,11 +148,6 @@ class SYCLHostUSMSpace { const size_t arg_alloc_size, const size_t arg_logical_size = 0) const; - private: - template - friend class LogicalMemorySpace; - - public: static constexpr const char* name() { return "SYCLHostUSM"; }; private: @@ -166,19 +171,16 @@ struct is_sycl_type_space : public std::true_type {}; static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); template <> struct MemorySpaceAccess -class SharedAllocationRecord - : public HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace> { - private: - friend class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace>; - friend class HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace>; - using base_t = HostInaccessibleSharedAllocationRecordCommon< - Kokkos::Experimental::SYCLDeviceUSMSpace>; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord(SharedAllocationRecord&&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(SharedAllocationRecord&&) = delete; - -#ifdef KOKKOS_ENABLE_DEBUG - static RecordBase s_root_record; -#endif - - const Kokkos::Experimental::SYCLDeviceUSMSpace m_space; - - protected: - ~SharedAllocationRecord(); - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::Experimental::SYCLDeviceUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& exec_space, - const Kokkos::Experimental::SYCLDeviceUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - SharedAllocationRecord( - const Kokkos::Experimental::SYCLDeviceUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLSharedUSMSpace> { - private: - friend class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLSharedUSMSpace>; - using base_t = - SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord(SharedAllocationRecord&&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(SharedAllocationRecord&&) = delete; - - static RecordBase s_root_record; - - const Kokkos::Experimental::SYCLSharedUSMSpace m_space; - - protected: - ~SharedAllocationRecord(); - - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::Experimental::SYCLSharedUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& exec_space, - const Kokkos::Experimental::SYCLSharedUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - SharedAllocationRecord( - const Kokkos::Experimental::SYCLSharedUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -template <> -class SharedAllocationRecord - : public SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLHostUSMSpace> { - private: - friend class SharedAllocationRecordCommon< - Kokkos::Experimental::SYCLHostUSMSpace>; - using base_t = - SharedAllocationRecordCommon; - using RecordBase = SharedAllocationRecord; - - SharedAllocationRecord(const SharedAllocationRecord&) = delete; - SharedAllocationRecord(SharedAllocationRecord&&) = delete; - SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; - SharedAllocationRecord& operator=(SharedAllocationRecord&&) = delete; - - static RecordBase s_root_record; - - const Kokkos::Experimental::SYCLHostUSMSpace m_space; - - protected: - ~SharedAllocationRecord(); - - SharedAllocationRecord() = default; - - template - SharedAllocationRecord( - const ExecutionSpace& /*exec_space*/, - const Kokkos::Experimental::SYCLHostUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate) - : SharedAllocationRecord(arg_space, arg_label, arg_alloc_size, - arg_dealloc) {} - - SharedAllocationRecord( - const Kokkos::Experimental::SYCL& exec_space, - const Kokkos::Experimental::SYCLHostUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); - - SharedAllocationRecord( - const Kokkos::Experimental::SYCLHostUSMSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size, - const RecordBase::function_type arg_dealloc = &base_t::deallocate); -}; - -} // namespace Impl - } // namespace Kokkos +KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::Experimental::SYCLDeviceUSMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::Experimental::SYCLSharedUSMSpace); +KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION( + Kokkos::Experimental::SYCLHostUSMSpace); + #endif #endif diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Team.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Team.hpp index 89c09c3195f..dbba3827581 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Team.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_Team.hpp @@ -140,9 +140,14 @@ class SYCLTeamMember { } value = sg.shuffle(value, 0); + const auto n_subgroups = sg.get_group_range()[0]; + if (n_subgroups == 1) { + reducer.reference() = value; + return; + } + // We need to chunk up the whole reduction because we might not have // allocated enough memory. - const auto n_subgroups = sg.get_group_range()[0]; const unsigned int maximum_work_range = std::min(m_team_reduce_size / sizeof(value_type), n_subgroups); diff --git a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ZeroMemset.hpp b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ZeroMemset.hpp index 9548f211d9e..61db6b34aac 100644 --- a/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ZeroMemset.hpp +++ b/lib/kokkos/core/src/SYCL/Kokkos_SYCL_ZeroMemset.hpp @@ -26,8 +26,7 @@ namespace Impl { template struct ZeroMemset> { ZeroMemset(const Kokkos::Experimental::SYCL& exec_space, - const View& dst, - typename View::const_value_type&) { + const View& dst) { auto event = exec_space.impl_internal_space_instance()->m_queue->memset( dst.data(), 0, dst.size() * sizeof(typename View::value_type)); #ifndef KOKKOS_IMPL_SYCL_USE_IN_ORDER_QUEUES @@ -35,12 +34,6 @@ struct ZeroMemset> { ->m_queue->ext_oneapi_submit_barrier(std::vector{event}); #endif } - - ZeroMemset(const View& dst, - typename View::const_value_type&) { - Experimental::Impl::SYCLInternal::singleton().m_queue->memset( - dst.data(), 0, dst.size() * sizeof(typename View::value_type)); - } }; } // namespace Impl diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial.cpp b/lib/kokkos/core/src/Serial/Kokkos_Serial.cpp index e81e8349391..39b201976b5 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial.cpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial.cpp @@ -58,8 +58,6 @@ void SerialInternal::finalize() { m_thread_team_data.scratch_assign(nullptr, 0, 0, 0, 0, 0); } - Kokkos::Profiling::finalize(); - m_is_initialized = false; } @@ -155,7 +153,7 @@ void Serial::print_configuration(std::ostream& os, bool /*verbose*/) const { os << "Host Serial Execution Space:\n"; os << " KOKKOS_ENABLE_SERIAL: yes\n"; -#ifdef KOKKOS_INTERNAL_NOT_PARALLEL +#ifdef KOKKOS_ENABLE_ATOMICS_BYPASS os << "Kokkos atomics disabled\n"; #endif diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial.hpp index db1567610b2..43eb4992ed7 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial.hpp @@ -30,6 +30,7 @@ static_assert(false, #include #include +#include #include #include #include @@ -120,7 +121,10 @@ class Serial { /// For the Serial device, this method always returns false, /// because parallel_for or parallel_reduce with the Serial device /// always execute sequentially. - inline static int in_parallel() { return false; } + +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED inline static int in_parallel() { return false; } +#endif /// \brief Wait until all dispatched functors complete. /// diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp index 69787aa5001..67978aa3e9f 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp @@ -14,8 +14,8 @@ // //@HEADER -#ifndef KOKKO_SERIAL_PARALLEL_MDRANGE_HPP -#define KOKKO_SERIAL_PARALLEL_MDRANGE_HPP +#ifndef KOKKOS_SERIAL_PARALLEL_MDRANGE_HPP +#define KOKKOS_SERIAL_PARALLEL_MDRANGE_HPP #include #include diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Range.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Range.hpp index 56894716dbd..91b4c567113 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Range.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Range.hpp @@ -14,8 +14,8 @@ // //@HEADER -#ifndef KOKKO_SERIAL_PARALLEL_RANGE_HPP -#define KOKKO_SERIAL_PARALLEL_RANGE_HPP +#ifndef KOKKOS_SERIAL_PARALLEL_RANGE_HPP +#define KOKKOS_SERIAL_PARALLEL_RANGE_HPP #include diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Team.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Team.hpp index 0876f1af229..f34a7daaca0 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Team.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial_Parallel_Team.hpp @@ -14,8 +14,8 @@ // //@HEADER -#ifndef KOKKO_SERIAL_PARALLEL_TEAM_HPP -#define KOKKO_SERIAL_PARALLEL_TEAM_HPP +#ifndef KOKKOS_SERIAL_PARALLEL_TEAM_HPP +#define KOKKOS_SERIAL_PARALLEL_TEAM_HPP #include diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial_Task.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial_Task.hpp index f9c86f55ce0..5905d6d32e1 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial_Task.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial_Task.hpp @@ -121,7 +121,7 @@ class TaskQueueSpecializationConstrained< using task_base_type = TaskBase; using queue_type = typename scheduler_type::queue_type; - task_base_type* const end = (task_base_type*)task_base_type::EndTag; + auto* const end = reinterpret_cast(task_base_type::EndTag); execution_space serial_execution_space; auto& data = serial_execution_space.impl_internal_space_instance() @@ -157,7 +157,7 @@ class TaskQueueSpecializationConstrained< using task_base_type = TaskBase; using queue_type = typename scheduler_type::queue_type; - task_base_type* const end = (task_base_type*)task_base_type::EndTag; + auto* const end = reinterpret_cast(task_base_type::EndTag); execution_space serial_execution_space; diff --git a/lib/kokkos/core/src/Serial/Kokkos_Serial_ZeroMemset.hpp b/lib/kokkos/core/src/Serial/Kokkos_Serial_ZeroMemset.hpp index 3ec2dfbcfa0..6ad6aabc5a7 100644 --- a/lib/kokkos/core/src/Serial/Kokkos_Serial_ZeroMemset.hpp +++ b/lib/kokkos/core/src/Serial/Kokkos_Serial_ZeroMemset.hpp @@ -22,6 +22,7 @@ #include #include +#include namespace Kokkos { namespace Impl { @@ -34,14 +35,11 @@ template struct ZeroMemset< std::conditional_t::value, Serial, DummyExecutionSpace>, - View> - : public ZeroMemset> { - using Base = ZeroMemset>; - using Base::Base; - - ZeroMemset(const Serial&, const View& dst, - typename View::const_value_type& value) - : Base(dst, value) {} + View> { + ZeroMemset(const Serial&, const View& dst) { + using ValueType = typename View::value_type; + std::memset(dst.data(), 0, sizeof(ValueType) * dst.size()); + } }; } // namespace Impl diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads.hpp index c0d70c03ecb..31653c46cac 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads.hpp @@ -38,15 +38,6 @@ static_assert(false, /*--------------------------------------------------------------------------*/ -namespace Kokkos { -namespace Impl { -class ThreadsExec; -enum class fence_is_static { yes, no }; -} // namespace Impl -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - namespace Kokkos { /** \brief Execution space for a pool of C++11 threads on a CPU. */ @@ -73,7 +64,9 @@ class Threads { /// \brief True if and only if this method is being called in a /// thread-parallel function. - static int in_parallel(); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED static int in_parallel(); +#endif /// \brief Print configuration information to the given output stream. void print_configuration(std::ostream& os, bool verbose = false) const; diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.cpp similarity index 56% rename from lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.cpp index c754091e87e..3842966cd77 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.cpp @@ -16,17 +16,15 @@ #ifndef KOKKOS_IMPL_PUBLIC_INCLUDE #define KOKKOS_IMPL_PUBLIC_INCLUDE +#include "Threads/Kokkos_Threads_Instance.hpp" #endif #include -#include -#include #include #include #include #include -#include #include @@ -41,7 +39,6 @@ namespace Kokkos { namespace Impl { namespace { -std::mutex host_internal_cppthread_mutex; // std::thread compatible driver. // Recovery from an exception would require constant intra-thread health @@ -49,7 +46,7 @@ std::mutex host_internal_cppthread_mutex; // abort the process. void internal_cppthread_driver() { try { - ThreadsExec::driver(); + ThreadsInternal::driver(); } catch (const std::exception &x) { std::cerr << "Exception thrown from worker thread: " << x.what() << std::endl; @@ -62,32 +59,17 @@ void internal_cppthread_driver() { } } -ThreadsExec s_threads_process; -ThreadsExec *s_threads_exec[ThreadsExec::MAX_THREAD_COUNT] = {nullptr}; -std::thread::id s_threads_pid[ThreadsExec::MAX_THREAD_COUNT]; -std::pair s_threads_coord[ThreadsExec::MAX_THREAD_COUNT]; +ThreadsInternal s_threads_process; +ThreadsInternal *s_threads_exec[ThreadsInternal::MAX_THREAD_COUNT] = {nullptr}; +std::thread::id s_threads_pid[ThreadsInternal::MAX_THREAD_COUNT]; +std::pair + s_threads_coord[ThreadsInternal::MAX_THREAD_COUNT]; int s_thread_pool_size[3] = {0, 0, 0}; -unsigned s_current_reduce_size = 0; -unsigned s_current_shared_size = 0; - -void (*volatile s_current_function)(ThreadsExec &, const void *); +void (*volatile s_current_function)(ThreadsInternal &, const void *); const void *volatile s_current_function_arg = nullptr; -struct Sentinel { - ~Sentinel() { - if (s_thread_pool_size[0] || s_thread_pool_size[1] || - s_thread_pool_size[2] || s_current_reduce_size || - s_current_shared_size || s_current_function || s_current_function_arg || - s_threads_exec[0]) { - std::cerr << "ERROR : Process exiting while Kokkos::Threads is still " - "initialized" - << std::endl; - } - } -}; - inline unsigned fan_size(const unsigned rank, const unsigned size) { const unsigned rank_rev = size - (rank + 1); unsigned count = 0; @@ -97,6 +79,12 @@ inline unsigned fan_size(const unsigned rank, const unsigned size) { return count; } +void wait_yield(volatile ThreadState &flag, const ThreadState value) { + while (value == flag) { + std::this_thread::yield(); + } +} + } // namespace } // namespace Impl } // namespace Kokkos @@ -107,66 +95,44 @@ inline unsigned fan_size(const unsigned rank, const unsigned size) { namespace Kokkos { namespace Impl { -//---------------------------------------------------------------------------- -// Spawn a thread - -void ThreadsExec::spawn() { - std::thread t(internal_cppthread_driver); - t.detach(); -} - -//---------------------------------------------------------------------------- - -bool ThreadsExec::is_process() { +bool ThreadsInternal::is_process() { static const std::thread::id master_pid = std::this_thread::get_id(); return master_pid == std::this_thread::get_id(); } -void ThreadsExec::global_lock() { host_internal_cppthread_mutex.lock(); } - -void ThreadsExec::global_unlock() { host_internal_cppthread_mutex.unlock(); } - //---------------------------------------------------------------------------- -void ThreadsExec::wait_yield(volatile int &flag, const int value) { - while (value == flag) { - std::this_thread::yield(); - } -} - -void execute_function_noop(ThreadsExec &, const void *) {} +void execute_function_noop(ThreadsInternal &, const void *) {} -void ThreadsExec::driver() { +void ThreadsInternal::driver() { SharedAllocationRecord::tracking_enable(); - ThreadsExec this_thread; + ThreadsInternal this_thread; - while (ThreadsExec::Active == this_thread.m_pool_state) { + while (this_thread.m_pool_state == ThreadState::Active) { (*s_current_function)(this_thread, s_current_function_arg); // Deactivate thread and wait for reactivation - this_thread.m_pool_state = ThreadsExec::Inactive; + this_thread.m_pool_state = ThreadState::Inactive; - wait_yield(this_thread.m_pool_state, ThreadsExec::Inactive); + wait_yield(this_thread.m_pool_state, ThreadState::Inactive); } } -ThreadsExec::ThreadsExec() +ThreadsInternal::ThreadsInternal() : m_pool_base(nullptr), m_scratch(nullptr), m_scratch_reduce_end(0), m_scratch_thread_end(0), - m_numa_rank(0), - m_numa_core_rank(0), m_pool_rank(0), m_pool_size(0), m_pool_fan_size(0), - m_pool_state(ThreadsExec::Terminating) { + m_pool_state(ThreadState::Terminating) { if (&s_threads_process != this) { - // A spawned thread - - ThreadsExec *const nil = nullptr; + // The code in the if is executed by a spawned thread not by the root + // thread + ThreadsInternal *const nil = nullptr; // Which entry in 's_threads_exec', possibly determined from hwloc binding const int entry = reinterpret_cast(s_current_function_arg) < @@ -178,80 +144,66 @@ ThreadsExec::ThreadsExec() // Given a good entry set this thread in the 's_threads_exec' array if (entry < s_thread_pool_size[0] && nil == atomic_compare_exchange(s_threads_exec + entry, nil, this)) { - const std::pair coord = - Kokkos::hwloc::get_this_thread_coordinate(); - - m_numa_rank = coord.first; - m_numa_core_rank = coord.second; - m_pool_base = s_threads_exec; - m_pool_rank = s_thread_pool_size[0] - (entry + 1); - m_pool_rank_rev = s_thread_pool_size[0] - (pool_rank() + 1); - m_pool_size = s_thread_pool_size[0]; - m_pool_fan_size = fan_size(m_pool_rank, m_pool_size); - m_pool_state = ThreadsExec::Active; + m_pool_base = s_threads_exec; + m_pool_rank = s_thread_pool_size[0] - (entry + 1); + m_pool_rank_rev = s_thread_pool_size[0] - (pool_rank() + 1); + m_pool_size = s_thread_pool_size[0]; + m_pool_fan_size = fan_size(m_pool_rank, m_pool_size); + m_pool_state = ThreadState::Active; s_threads_pid[m_pool_rank] = std::this_thread::get_id(); // Inform spawning process that the threads_exec entry has been set. - s_threads_process.m_pool_state = ThreadsExec::Active; + s_threads_process.m_pool_state = ThreadState::Active; } else { // Inform spawning process that the threads_exec entry could not be set. - s_threads_process.m_pool_state = ThreadsExec::Terminating; + s_threads_process.m_pool_state = ThreadState::Terminating; } } else { // Enables 'parallel_for' to execute on unitialized Threads device m_pool_rank = 0; m_pool_size = 1; - m_pool_state = ThreadsExec::Inactive; + m_pool_state = ThreadState::Inactive; s_threads_pid[m_pool_rank] = std::this_thread::get_id(); } } -ThreadsExec::~ThreadsExec() { +ThreadsInternal::~ThreadsInternal() { const unsigned entry = m_pool_size - (m_pool_rank + 1); - using Record = Kokkos::Impl::SharedAllocationRecord; - if (m_scratch) { - Record *const r = Record::get_record(m_scratch); - + Kokkos::kokkos_free(m_scratch); m_scratch = nullptr; - - Record::decrement(r); } m_pool_base = nullptr; m_scratch_reduce_end = 0; m_scratch_thread_end = 0; - m_numa_rank = 0; - m_numa_core_rank = 0; m_pool_rank = 0; m_pool_size = 0; m_pool_fan_size = 0; - m_pool_state = ThreadsExec::Terminating; + m_pool_state = ThreadState::Terminating; if (&s_threads_process != this && entry < MAX_THREAD_COUNT) { - ThreadsExec *const nil = nullptr; + ThreadsInternal *const nil = nullptr; atomic_compare_exchange(s_threads_exec + entry, this, nil); - s_threads_process.m_pool_state = ThreadsExec::Terminating; + s_threads_process.m_pool_state = ThreadState::Terminating; } } -int ThreadsExec::get_thread_count() { return s_thread_pool_size[0]; } - -ThreadsExec *ThreadsExec::get_thread(const int init_thread_rank) { - ThreadsExec *const th = +ThreadsInternal *ThreadsInternal::get_thread(const int init_thread_rank) { + ThreadsInternal *const th = init_thread_rank < s_thread_pool_size[0] ? s_threads_exec[s_thread_pool_size[0] - (init_thread_rank + 1)] : nullptr; if (nullptr == th || th->m_pool_rank != init_thread_rank) { std::ostringstream msg; - msg << "Kokkos::Impl::ThreadsExec::get_thread ERROR : " + msg << "Kokkos::Impl::ThreadsInternal::get_thread ERROR : " << "thread " << init_thread_rank << " of " << s_thread_pool_size[0]; if (nullptr == th) { msg << " does not exist"; @@ -264,24 +216,6 @@ ThreadsExec *ThreadsExec::get_thread(const int init_thread_rank) { return th; } -//---------------------------------------------------------------------------- - -void ThreadsExec::execute_sleep(ThreadsExec &exec, const void *) { - ThreadsExec::global_lock(); - ThreadsExec::global_unlock(); - - const int n = exec.m_pool_fan_size; - const int rank_rev = exec.m_pool_size - (exec.m_pool_rank + 1); - - for (int i = 0; i < n; ++i) { - Impl::spinwait_while_equal( - exec.m_pool_base[rank_rev + (1 << i)]->m_pool_state, - ThreadsExec::Active); - } - - exec.m_pool_state = ThreadsExec::Inactive; -} - } // namespace Impl } // namespace Kokkos @@ -290,8 +224,8 @@ void ThreadsExec::execute_sleep(ThreadsExec &exec, const void *) { namespace Kokkos { namespace Impl { -void ThreadsExec::verify_is_process(const std::string &name, - const bool initialized) { +void ThreadsInternal::verify_is_process(const std::string &name, + const bool initialized) { if (!is_process()) { std::string msg(name); msg.append( @@ -307,63 +241,48 @@ void ThreadsExec::verify_is_process(const std::string &name, } } -int ThreadsExec::in_parallel() { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 +KOKKOS_DEPRECATED int ThreadsInternal::in_parallel() { // A thread function is in execution and // the function argument is not the special threads process argument and // the master process is a worker or is not the master process. return s_current_function && (&s_threads_process != s_current_function_arg) && (s_threads_process.m_pool_base || !is_process()); } -void ThreadsExec::fence() { internal_fence(Impl::fence_is_static::yes); } -void ThreadsExec::fence(const std::string &name) { - internal_fence(name, Impl::fence_is_static::yes); +#endif +void ThreadsInternal::fence() { + fence("Kokkos::ThreadsInternal::fence: Unnamed Instance Fence"); } - -void ThreadsExec::internal_fence(Impl::fence_is_static is_static) { - internal_fence((is_static == Impl::fence_is_static::no) - ? "Kokkos::ThreadsExec::fence: Unnamed Instance Fence" - : "Kokkos::ThreadsExec::fence: Unnamed Static Fence", - is_static); +void ThreadsInternal::fence(const std::string &name) { + Kokkos::Tools::Experimental::Impl::profile_fence_event( + name, Kokkos::Tools::Experimental::Impl::DirectFenceIDHandle{1}, + internal_fence); } // Wait for root thread to become inactive -void ThreadsExec::internal_fence(const std::string &name, - Impl::fence_is_static is_static) { - const auto &fence_lam = [&]() { - if (s_thread_pool_size[0]) { - // Wait for the root thread to complete: - Impl::spinwait_while_equal(s_threads_exec[0]->m_pool_state, - ThreadsExec::Active); - } +void ThreadsInternal::internal_fence() { + if (s_thread_pool_size[0]) { + // Wait for the root thread to complete: + Impl::spinwait_while_equal(s_threads_exec[0]->m_pool_state, + ThreadState::Active); + } - s_current_function = nullptr; - s_current_function_arg = nullptr; + s_current_function = nullptr; + s_current_function_arg = nullptr; - // Make sure function and arguments are cleared before - // potentially re-activating threads with a subsequent launch. - memory_fence(); - }; - if (is_static == Impl::fence_is_static::yes) { - Kokkos::Tools::Experimental::Impl::profile_fence_event( - name, - Kokkos::Tools::Experimental::SpecialSynchronizationCases:: - GlobalDeviceSynchronization, - fence_lam); - } else { - Kokkos::Tools::Experimental::Impl::profile_fence_event( - name, Kokkos::Tools::Experimental::Impl::DirectFenceIDHandle{1}, - fence_lam); - } + // Make sure function and arguments are cleared before + // potentially re-activating threads with a subsequent launch. + memory_fence(); } /** \brief Begin execution of the asynchronous functor */ -void ThreadsExec::start(void (*func)(ThreadsExec &, const void *), - const void *arg) { - verify_is_process("ThreadsExec::start", true); +void ThreadsInternal::start(void (*func)(ThreadsInternal &, const void *), + const void *arg) { + verify_is_process("ThreadsInternal::start", true); if (s_current_function || s_current_function_arg) { Kokkos::Impl::throw_runtime_exception( - std::string("ThreadsExec::start() FAILED : already executing")); + std::string("ThreadsInternal::start() FAILED : already executing")); } s_current_function = func; @@ -372,68 +291,29 @@ void ThreadsExec::start(void (*func)(ThreadsExec &, const void *), // Make sure function and arguments are written before activating threads. memory_fence(); - // Activate threads: + // Activate threads. The spawned threads will start working on + // s_current_function. The root thread is only set to active, we still need to + // call s_current_function. for (int i = s_thread_pool_size[0]; 0 < i--;) { - s_threads_exec[i]->m_pool_state = ThreadsExec::Active; + s_threads_exec[i]->m_pool_state = ThreadState::Active; } if (s_threads_process.m_pool_size) { // Master process is the root thread, run it: (*func)(s_threads_process, arg); - s_threads_process.m_pool_state = ThreadsExec::Inactive; + s_threads_process.m_pool_state = ThreadState::Inactive; } } //---------------------------------------------------------------------------- -bool ThreadsExec::sleep() { - verify_is_process("ThreadsExec::sleep", true); - - if (&execute_sleep == s_current_function) return false; - - fence(); - - ThreadsExec::global_lock(); - - s_current_function = &execute_sleep; - - // Activate threads: - for (unsigned i = s_thread_pool_size[0]; 0 < i;) { - s_threads_exec[--i]->m_pool_state = ThreadsExec::Active; - } - - return true; -} - -bool ThreadsExec::wake() { - verify_is_process("ThreadsExec::wake", true); - - if (&execute_sleep != s_current_function) return false; - - ThreadsExec::global_unlock(); - - if (s_threads_process.m_pool_base) { - execute_sleep(s_threads_process, nullptr); - s_threads_process.m_pool_state = ThreadsExec::Inactive; - } - - fence(); - - return true; -} - -//---------------------------------------------------------------------------- - -void ThreadsExec::execute_resize_scratch_in_serial() { +void ThreadsInternal::execute_resize_scratch_in_serial() { const unsigned begin = s_threads_process.m_pool_base ? 1 : 0; - auto deallocate_scratch_memory = [](ThreadsExec &exec) { + auto deallocate_scratch_memory = [](ThreadsInternal &exec) { if (exec.m_scratch) { - using Record = - Kokkos::Impl::SharedAllocationRecord; - Record *const r = Record::get_record(exec.m_scratch); - exec.m_scratch = nullptr; - Record::decrement(r); + Kokkos::kokkos_free(exec.m_scratch); + exec.m_scratch = nullptr; } }; if (s_threads_process.m_pool_base) { @@ -449,18 +329,18 @@ void ThreadsExec::execute_resize_scratch_in_serial() { memory_fence(); for (unsigned i = s_thread_pool_size[0]; begin < i;) { - ThreadsExec &th = *s_threads_exec[--i]; + ThreadsInternal &th = *s_threads_exec[--i]; - th.m_pool_state = ThreadsExec::Active; + th.m_pool_state = ThreadState::Active; - wait_yield(th.m_pool_state, ThreadsExec::Active); + wait_yield(th.m_pool_state, ThreadState::Active); } if (s_threads_process.m_pool_base) { deallocate_scratch_memory(s_threads_process); - s_threads_process.m_pool_state = ThreadsExec::Active; + s_threads_process.m_pool_state = ThreadState::Active; first_touch_allocate_thread_private_scratch(s_threads_process, nullptr); - s_threads_process.m_pool_state = ThreadsExec::Inactive; + s_threads_process.m_pool_state = ThreadState::Inactive; } s_current_function_arg = nullptr; @@ -472,27 +352,20 @@ void ThreadsExec::execute_resize_scratch_in_serial() { //---------------------------------------------------------------------------- -void *ThreadsExec::root_reduce_scratch() { +void *ThreadsInternal::root_reduce_scratch() { return s_threads_process.reduce_memory(); } -void ThreadsExec::first_touch_allocate_thread_private_scratch(ThreadsExec &exec, - const void *) { +void ThreadsInternal::first_touch_allocate_thread_private_scratch( + ThreadsInternal &exec, const void *) { exec.m_scratch_reduce_end = s_threads_process.m_scratch_reduce_end; exec.m_scratch_thread_end = s_threads_process.m_scratch_thread_end; if (s_threads_process.m_scratch_thread_end) { // Allocate tracked memory: { - using Record = - Kokkos::Impl::SharedAllocationRecord; - Record *const r = - Record::allocate(Kokkos::HostSpace(), "Kokkos::thread_scratch", - s_threads_process.m_scratch_thread_end); - - Record::increment(r); - - exec.m_scratch = r->data(); + exec.m_scratch = Kokkos::kokkos_malloc( + "Kokkos::thread_scratch", s_threads_process.m_scratch_thread_end); } unsigned *ptr = reinterpret_cast(exec.m_scratch); @@ -505,7 +378,7 @@ void ThreadsExec::first_touch_allocate_thread_private_scratch(ThreadsExec &exec, } } -void *ThreadsExec::resize_scratch(size_t reduce_size, size_t thread_size) { +void *ThreadsInternal::resize_scratch(size_t reduce_size, size_t thread_size) { enum { ALIGN_MASK = Kokkos::Impl::MEMORY_ALIGNMENT - 1 }; fence(); @@ -522,7 +395,7 @@ void *ThreadsExec::resize_scratch(size_t reduce_size, size_t thread_size) { if ((old_reduce_size < reduce_size) || (old_thread_size < thread_size) || ((reduce_size == 0 && thread_size == 0) && (old_reduce_size != 0 || old_thread_size != 0))) { - verify_is_process("ThreadsExec::resize_scratch", true); + verify_is_process("ThreadsInternal::resize_scratch", true); s_threads_process.m_scratch_reduce_end = reduce_size; s_threads_process.m_scratch_thread_end = reduce_size + thread_size; @@ -537,27 +410,22 @@ void *ThreadsExec::resize_scratch(size_t reduce_size, size_t thread_size) { //---------------------------------------------------------------------------- -void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { - verify_is_process("ThreadsExec::print_configuration", false); +void ThreadsInternal::print_configuration(std::ostream &s, const bool detail) { + verify_is_process("ThreadsInternal::print_configuration", false); fence(); - const unsigned numa_count = Kokkos::hwloc::get_available_numa_count(); - const unsigned cores_per_numa = Kokkos::hwloc::get_available_cores_per_numa(); - const unsigned threads_per_core = - Kokkos::hwloc::get_available_threads_per_core(); - - // Forestall compiler warnings for unused variables. - (void)numa_count; - (void)cores_per_numa; - (void)threads_per_core; - s << "Kokkos::Threads"; #if defined(KOKKOS_ENABLE_THREADS) s << " KOKKOS_ENABLE_THREADS"; #endif #if defined(KOKKOS_ENABLE_HWLOC) + const unsigned numa_count = Kokkos::hwloc::get_available_numa_count(); + const unsigned cores_per_numa = Kokkos::hwloc::get_available_cores_per_numa(); + const unsigned threads_per_core = + Kokkos::hwloc::get_available_threads_per_core(); + s << " hwloc[" << numa_count << "x" << cores_per_numa << "x" << threads_per_core << "]"; #endif @@ -569,25 +437,21 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { if (nullptr == s_threads_process.m_pool_base) { s << " Asynchronous"; } - s << " ReduceScratch[" << s_current_reduce_size << "]" - << " SharedScratch[" << s_current_shared_size << "]"; s << std::endl; if (detail) { for (int i = 0; i < s_thread_pool_size[0]; ++i) { - ThreadsExec *const th = s_threads_exec[i]; + ThreadsInternal *const th = s_threads_exec[i]; if (th) { const int rank_rev = th->m_pool_size - (th->m_pool_rank + 1); - s << " Thread[ " << th->m_pool_rank << " : " << th->m_numa_rank << "." - << th->m_numa_core_rank << " ]"; + s << " Thread[ " << th->m_pool_rank << " ]"; s << " Fan{"; for (int j = 0; j < th->m_pool_fan_size; ++j) { - ThreadsExec *const thfan = th->m_pool_base[rank_rev + (1 << j)]; - s << " [ " << thfan->m_pool_rank << " : " << thfan->m_numa_rank - << "." << thfan->m_numa_core_rank << " ]"; + ThreadsInternal *const thfan = th->m_pool_base[rank_rev + (1 << j)]; + s << " [ " << thfan->m_pool_rank << " ]"; } s << " }"; @@ -605,29 +469,21 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { //---------------------------------------------------------------------------- -int ThreadsExec::is_initialized() { return nullptr != s_threads_exec[0]; } +int ThreadsInternal::is_initialized() { return nullptr != s_threads_exec[0]; } -void ThreadsExec::initialize(int thread_count_arg) { - // legacy arguments - unsigned thread_count = thread_count_arg == -1 ? 0 : thread_count_arg; - unsigned use_numa_count = 0; - unsigned use_cores_per_numa = 0; - bool allow_asynchronous_threadpool = false; - // need to provide an initializer for Intel compilers - static const Sentinel sentinel = {}; +void ThreadsInternal::initialize(int thread_count_arg) { + unsigned thread_count = thread_count_arg == -1 ? 0 : thread_count_arg; const bool is_initialized = 0 != s_thread_pool_size[0]; unsigned thread_spawn_failed = 0; - for (int i = 0; i < ThreadsExec::MAX_THREAD_COUNT; i++) + for (int i = 0; i < ThreadsInternal::MAX_THREAD_COUNT; i++) s_threads_exec[i] = nullptr; if (!is_initialized) { - // If thread_count, use_numa_count, or use_cores_per_numa are zero - // then they will be given default values based upon hwloc detection - // and allowed asynchronous execution. - + // If thread_count is zero then it will be given default values based upon + // hwloc detection. const bool hwloc_avail = Kokkos::hwloc::available(); const bool hwloc_can_bind = hwloc_avail && Kokkos::hwloc::can_bind_threads(); @@ -640,17 +496,18 @@ void ThreadsExec::initialize(int thread_count_arg) { : 1; } - const unsigned thread_spawn_begin = hwloc::thread_mapping( - "Kokkos::Threads::initialize", allow_asynchronous_threadpool, - thread_count, use_numa_count, use_cores_per_numa, s_threads_coord); + const bool allow_asynchronous_threadpool = false; + unsigned use_numa_count = 0; + unsigned use_cores_per_numa = 0; + hwloc::thread_mapping("Kokkos::Threads::initialize", + allow_asynchronous_threadpool, thread_count, + use_numa_count, use_cores_per_numa, s_threads_coord); const std::pair proc_coord = s_threads_coord[0]; - if (thread_spawn_begin) { - // Synchronous with s_threads_coord[0] as the process core - // Claim entry #0 for binding the process core. - s_threads_coord[0] = std::pair(~0u, ~0u); - } + // Synchronous with s_threads_coord[0] as the process core + // Claim entry #0 for binding the process core. + s_threads_coord[0] = std::pair(~0u, ~0u); s_thread_pool_size[0] = thread_count; s_thread_pool_size[1] = s_thread_pool_size[0] / use_numa_count; @@ -658,8 +515,8 @@ void ThreadsExec::initialize(int thread_count_arg) { s_current_function = &execute_function_noop; // Initialization work function - for (unsigned ith = thread_spawn_begin; ith < thread_count; ++ith) { - s_threads_process.m_pool_state = ThreadsExec::Inactive; + for (unsigned ith = 1; ith < thread_count; ++ith) { + s_threads_process.m_pool_state = ThreadState::Inactive; // If hwloc available then spawned thread will // choose its own entry in 's_threads_coord' @@ -675,18 +532,20 @@ void ThreadsExec::initialize(int thread_count_arg) { // Wait until spawned thread has attempted to initialize. // If spawning and initialization is successful then // an entry in 's_threads_exec' will be assigned. - ThreadsExec::spawn(); - wait_yield(s_threads_process.m_pool_state, ThreadsExec::Inactive); - if (s_threads_process.m_pool_state == ThreadsExec::Terminating) break; + std::thread t(internal_cppthread_driver); + t.detach(); + wait_yield(s_threads_process.m_pool_state, ThreadState::Inactive); + if (s_threads_process.m_pool_state == ThreadState::Terminating) break; } // Wait for all spawned threads to deactivate before zeroing the function. - for (unsigned ith = thread_spawn_begin; ith < thread_count; ++ith) { + for (unsigned ith = 1; ith < thread_count; ++ith) { // Try to protect against cache coherency failure by casting to volatile. - ThreadsExec *const th = ((ThreadsExec * volatile *)s_threads_exec)[ith]; + ThreadsInternal *const th = + ((ThreadsInternal * volatile *)s_threads_exec)[ith]; if (th) { - wait_yield(th->m_pool_state, ThreadsExec::Active); + wait_yield(th->m_pool_state, ThreadState::Active); } else { ++thread_spawn_failed; } @@ -694,7 +553,7 @@ void ThreadsExec::initialize(int thread_count_arg) { s_current_function = nullptr; s_current_function_arg = nullptr; - s_threads_process.m_pool_state = ThreadsExec::Inactive; + s_threads_process.m_pool_state = ThreadState::Inactive; memory_fence(); @@ -705,30 +564,17 @@ void ThreadsExec::initialize(int thread_count_arg) { Kokkos::hwloc::bind_this_thread(proc_coord); } - if (thread_spawn_begin) { // Include process in pool. - const std::pair coord = - Kokkos::hwloc::get_this_thread_coordinate(); - - s_threads_exec[0] = &s_threads_process; - s_threads_process.m_numa_rank = coord.first; - s_threads_process.m_numa_core_rank = coord.second; - s_threads_process.m_pool_base = s_threads_exec; - s_threads_process.m_pool_rank = - thread_count - 1; // Reversed for scan-compatible reductions - s_threads_process.m_pool_size = thread_count; - s_threads_process.m_pool_fan_size = fan_size( - s_threads_process.m_pool_rank, s_threads_process.m_pool_size); - s_threads_pid[s_threads_process.m_pool_rank] = - std::this_thread::get_id(); - } else { - s_threads_process.m_pool_base = nullptr; - s_threads_process.m_pool_rank = 0; - s_threads_process.m_pool_size = 0; - s_threads_process.m_pool_fan_size = 0; - } + s_threads_exec[0] = &s_threads_process; + s_threads_process.m_pool_base = s_threads_exec; + s_threads_process.m_pool_rank = + thread_count - 1; // Reversed for scan-compatible reductions + s_threads_process.m_pool_size = thread_count; + s_threads_process.m_pool_fan_size = fan_size( + s_threads_process.m_pool_rank, s_threads_process.m_pool_size); + s_threads_pid[s_threads_process.m_pool_rank] = std::this_thread::get_id(); // Initial allocations: - ThreadsExec::resize_scratch(1024, 1024); + ThreadsInternal::resize_scratch(1024, 1024); } else { s_thread_pool_size[0] = 0; s_thread_pool_size[1] = 0; @@ -773,8 +619,8 @@ void ThreadsExec::initialize(int thread_count_arg) { //---------------------------------------------------------------------------- -void ThreadsExec::finalize() { - verify_is_process("ThreadsExec::finalize", false); +void ThreadsInternal::finalize() { + verify_is_process("ThreadsInternal::finalize", false); fence(); @@ -784,18 +630,18 @@ void ThreadsExec::finalize() { for (unsigned i = s_thread_pool_size[0]; begin < i--;) { if (s_threads_exec[i]) { - s_threads_exec[i]->m_pool_state = ThreadsExec::Terminating; + s_threads_exec[i]->m_pool_state = ThreadState::Terminating; - wait_yield(s_threads_process.m_pool_state, ThreadsExec::Inactive); + wait_yield(s_threads_process.m_pool_state, ThreadState::Inactive); - s_threads_process.m_pool_state = ThreadsExec::Inactive; + s_threads_process.m_pool_state = ThreadState::Inactive; } s_threads_pid[i] = std::thread::id(); } if (s_threads_process.m_pool_base) { - (&s_threads_process)->~ThreadsExec(); + (&s_threads_process)->~ThreadsInternal(); s_threads_exec[0] = nullptr; } @@ -808,15 +654,11 @@ void ThreadsExec::finalize() { s_thread_pool_size[2] = 0; // Reset master thread to run solo. - s_threads_process.m_numa_rank = 0; - s_threads_process.m_numa_core_rank = 0; - s_threads_process.m_pool_base = nullptr; - s_threads_process.m_pool_rank = 0; - s_threads_process.m_pool_size = 1; - s_threads_process.m_pool_fan_size = 0; - s_threads_process.m_pool_state = ThreadsExec::Inactive; - - Kokkos::Profiling::finalize(); + s_threads_process.m_pool_base = nullptr; + s_threads_process.m_pool_rank = 0; + s_threads_process.m_pool_size = 1; + s_threads_process.m_pool_fan_size = 0; + s_threads_process.m_pool_state = ThreadState::Inactive; } //---------------------------------------------------------------------------- @@ -836,7 +678,7 @@ int Threads::concurrency() const { return impl_thread_pool_size(0); } #endif void Threads::fence(const std::string &name) const { - Impl::ThreadsExec::internal_fence(name, Impl::fence_is_static::no); + Impl::ThreadsInternal::fence(name); } Threads &Threads::impl_instance(int) { diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.hpp similarity index 76% rename from lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.hpp index 377e096bfbe..a5eb231cb01 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Instance.hpp @@ -14,8 +14,8 @@ // //@HEADER -#ifndef KOKKOS_THREADSEXEC_HPP -#define KOKKOS_THREADSEXEC_HPP +#ifndef KOKKOS_THREADS_INSTANCE_HPP +#define KOKKOS_THREADS_INSTANCE_HPP #include @@ -23,41 +23,25 @@ #include #include -#include - #include #include #include #include +#include +#include //---------------------------------------------------------------------------- namespace Kokkos { namespace Impl { -class ThreadsExec { +class ThreadsInternal { public: // Fan array has log_2(NT) reduction threads plus 2 scan threads // Currently limited to 16k threads. - enum { MAX_FAN_COUNT = 16 }; - enum { MAX_THREAD_COUNT = 1 << (MAX_FAN_COUNT - 2) }; - enum { VECTOR_LENGTH = 8 }; - - /** \brief States of a worker thread */ - enum { - Terminating ///< Termination in progress - , - Inactive ///< Exists, waiting for work - , - Active ///< Exists, performing work - , - Rendezvous ///< Exists, waiting in a barrier or reduce - - , - ScanCompleted, - ScanAvailable, - ReductionAvailable - }; + static constexpr int MAX_FAN_COUNT = 16; + static constexpr int MAX_THREAD_COUNT = 1 << (MAX_FAN_COUNT - 2); + static constexpr int VECTOR_LENGTH = 8; private: friend class Kokkos::Threads; @@ -67,18 +51,16 @@ class ThreadsExec { // the threads that need them. // For a simple reduction the thread location is arbitrary. - ThreadsExec *const *m_pool_base; ///< Base for pool fan-in + ThreadsInternal *const *m_pool_base; ///< Base for pool fan-in void *m_scratch; int m_scratch_reduce_end; size_t m_scratch_thread_end; - int m_numa_rank; - int m_numa_core_rank; int m_pool_rank; int m_pool_rank_rev; int m_pool_size; int m_pool_fan_size; - int volatile m_pool_state; ///< State for global synchronizations + ThreadState volatile m_pool_state; ///< State for global synchronizations // Members for dynamic scheduling // Which thread am I stealing from currently @@ -93,41 +75,36 @@ class ThreadsExec { static void global_lock(); static void global_unlock(); - static void spawn(); - static void first_touch_allocate_thread_private_scratch(ThreadsExec &, + static void first_touch_allocate_thread_private_scratch(ThreadsInternal &, const void *); - static void execute_sleep(ThreadsExec &, const void *); - ThreadsExec(const ThreadsExec &); - ThreadsExec &operator=(const ThreadsExec &); + ThreadsInternal(const ThreadsInternal &); + ThreadsInternal &operator=(const ThreadsInternal &); static void execute_resize_scratch_in_serial(); public: KOKKOS_INLINE_FUNCTION int pool_size() const { return m_pool_size; } KOKKOS_INLINE_FUNCTION int pool_rank() const { return m_pool_rank; } - KOKKOS_INLINE_FUNCTION int numa_rank() const { return m_numa_rank; } - KOKKOS_INLINE_FUNCTION int numa_core_rank() const { return m_numa_core_rank; } inline long team_work_index() const { return m_team_work_index; } - static int get_thread_count(); - static ThreadsExec *get_thread(const int init_thread_rank); + static ThreadsInternal *get_thread(const int init_thread_rank); inline void *reduce_memory() const { return m_scratch; } KOKKOS_INLINE_FUNCTION void *scratch_memory() const { return reinterpret_cast(m_scratch) + m_scratch_reduce_end; } - KOKKOS_INLINE_FUNCTION int volatile &state() { return m_pool_state; } - KOKKOS_INLINE_FUNCTION ThreadsExec *const *pool_base() const { + KOKKOS_INLINE_FUNCTION ThreadState volatile &state() { return m_pool_state; } + KOKKOS_INLINE_FUNCTION ThreadsInternal *const *pool_base() const { return m_pool_base; } static void driver(void); - ~ThreadsExec(); - ThreadsExec(); + ~ThreadsInternal(); + ThreadsInternal(); static void *resize_scratch(size_t reduce_size, size_t thread_size); @@ -143,15 +120,8 @@ class ThreadsExec { static void finalize(); - /* Given a requested team size, return valid team size */ - static unsigned team_size_valid(unsigned); - static void print_configuration(std::ostream &, const bool detail = false); - //------------------------------------ - - static void wait_yield(volatile int &, const int); - //------------------------------------ // All-thread functions: @@ -166,14 +136,14 @@ class ThreadsExec { // Fan-in reduction with highest ranking thread as the root for (int i = 0; i < m_pool_fan_size; ++i) { // Wait: Active -> Rendezvous - Impl::spinwait_while_equal( - m_pool_base[rev_rank + (1 << i)]->m_pool_state, ThreadsExec::Active); + spinwait_while_equal(m_pool_base[rev_rank + (1 << i)]->m_pool_state, + ThreadState::Active); } if (rev_rank) { - m_pool_state = ThreadsExec::Rendezvous; + m_pool_state = ThreadState::Rendezvous; // Wait: Rendezvous -> Active - Impl::spinwait_while_equal(m_pool_state, ThreadsExec::Rendezvous); + spinwait_while_equal(m_pool_state, ThreadState::Rendezvous); } else { // Root thread does the reduction and broadcast @@ -191,7 +161,7 @@ class ThreadsExec { memory_fence(); for (int rank = 0; rank < m_pool_size; ++rank) { - get_thread(rank)->m_pool_state = ThreadsExec::Active; + get_thread(rank)->m_pool_state = ThreadState::Active; } } @@ -207,21 +177,21 @@ class ThreadsExec { // Fan-in reduction with highest ranking thread as the root for (int i = 0; i < m_pool_fan_size; ++i) { // Wait: Active -> Rendezvous - Impl::spinwait_while_equal( - m_pool_base[rev_rank + (1 << i)]->m_pool_state, ThreadsExec::Active); + spinwait_while_equal(m_pool_base[rev_rank + (1 << i)]->m_pool_state, + ThreadState::Active); } if (rev_rank) { - m_pool_state = ThreadsExec::Rendezvous; + m_pool_state = ThreadState::Rendezvous; // Wait: Rendezvous -> Active - Impl::spinwait_while_equal(m_pool_state, ThreadsExec::Rendezvous); + spinwait_while_equal(m_pool_state, ThreadState::Rendezvous); } else { // Root thread does the reduction and broadcast memory_fence(); for (int rank = 0; rank < m_pool_size; ++rank) { - get_thread(rank)->m_pool_state = ThreadsExec::Active; + get_thread(rank)->m_pool_state = ThreadState::Active; } } } @@ -234,9 +204,9 @@ class ThreadsExec { const int rev_rank = m_pool_size - (m_pool_rank + 1); for (int i = 0; i < m_pool_fan_size; ++i) { - ThreadsExec &fan = *m_pool_base[rev_rank + (1 << i)]; + ThreadsInternal &fan = *m_pool_base[rev_rank + (1 << i)]; - Impl::spinwait_while_equal(fan.m_pool_state, ThreadsExec::Active); + spinwait_while_equal(fan.m_pool_state, ThreadState::Active); f.join( reinterpret_cast(reduce_memory()), @@ -265,8 +235,8 @@ class ThreadsExec { const int rev_rank = m_pool_size - (m_pool_rank + 1); for (int i = 0; i < m_pool_fan_size; ++i) { - Impl::spinwait_while_equal( - m_pool_base[rev_rank + (1 << i)]->m_pool_state, ThreadsExec::Active); + spinwait_while_equal(m_pool_base[rev_rank + (1 << i)]->m_pool_state, + ThreadState::Active); } } @@ -289,10 +259,10 @@ class ThreadsExec { //-------------------------------- // Fan-in reduction with highest ranking thread as the root for (int i = 0; i < m_pool_fan_size; ++i) { - ThreadsExec &fan = *m_pool_base[rev_rank + (1 << i)]; + ThreadsInternal &fan = *m_pool_base[rev_rank + (1 << i)]; // Wait: Active -> ReductionAvailable (or ScanAvailable) - Impl::spinwait_while_equal(fan.m_pool_state, ThreadsExec::Active); + spinwait_while_equal(fan.m_pool_state, ThreadState::Active); f.join(work_value, fan.reduce_memory()); } @@ -303,39 +273,37 @@ class ThreadsExec { if (rev_rank) { // Set: Active -> ReductionAvailable - m_pool_state = ThreadsExec::ReductionAvailable; + m_pool_state = ThreadState::ReductionAvailable; // Wait for contributing threads' scan value to be available. if ((1 << m_pool_fan_size) < (m_pool_rank + 1)) { - ThreadsExec &th = *m_pool_base[rev_rank + (1 << m_pool_fan_size)]; + ThreadsInternal &th = *m_pool_base[rev_rank + (1 << m_pool_fan_size)]; // Wait: Active -> ReductionAvailable // Wait: ReductionAvailable -> ScanAvailable - Impl::spinwait_while_equal(th.m_pool_state, ThreadsExec::Active); - Impl::spinwait_while_equal(th.m_pool_state, - ThreadsExec::ReductionAvailable); + spinwait_while_equal(th.m_pool_state, ThreadState::Active); + spinwait_while_equal(th.m_pool_state, ThreadState::ReductionAvailable); f.join(work_value + count, ((scalar_type *)th.reduce_memory()) + count); } // This thread has completed inclusive scan // Set: ReductionAvailable -> ScanAvailable - m_pool_state = ThreadsExec::ScanAvailable; + m_pool_state = ThreadState::ScanAvailable; // Wait for all threads to complete inclusive scan // Wait: ScanAvailable -> Rendezvous - Impl::spinwait_while_equal(m_pool_state, ThreadsExec::ScanAvailable); + spinwait_while_equal(m_pool_state, ThreadState::ScanAvailable); } //-------------------------------- for (int i = 0; i < m_pool_fan_size; ++i) { - ThreadsExec &fan = *m_pool_base[rev_rank + (1 << i)]; + ThreadsInternal &fan = *m_pool_base[rev_rank + (1 << i)]; // Wait: ReductionAvailable -> ScanAvailable - Impl::spinwait_while_equal(fan.m_pool_state, - ThreadsExec::ReductionAvailable); + spinwait_while_equal(fan.m_pool_state, ThreadState::ReductionAvailable); // Set: ScanAvailable -> Rendezvous - fan.m_pool_state = ThreadsExec::Rendezvous; + fan.m_pool_state = ThreadState::Rendezvous; } // All threads have completed the inclusive scan. @@ -346,7 +314,7 @@ class ThreadsExec { if ((rev_rank + 1) < m_pool_size) { // Exclusive scan: copy the previous thread's inclusive scan value - ThreadsExec &th = *m_pool_base[rev_rank + 1]; // Not the root thread + ThreadsInternal &th = *m_pool_base[rev_rank + 1]; // Not the root thread const scalar_type *const src_value = ((scalar_type *)th.reduce_memory()) + count; @@ -362,19 +330,18 @@ class ThreadsExec { // Wait for all threads to copy previous thread's inclusive scan value // Wait for all threads: Rendezvous -> ScanCompleted for (int i = 0; i < m_pool_fan_size; ++i) { - Impl::spinwait_while_equal( - m_pool_base[rev_rank + (1 << i)]->m_pool_state, - ThreadsExec::Rendezvous); + spinwait_while_equal(m_pool_base[rev_rank + (1 << i)]->m_pool_state, + ThreadState::Rendezvous); } if (rev_rank) { // Set: ScanAvailable -> ScanCompleted - m_pool_state = ThreadsExec::ScanCompleted; + m_pool_state = ThreadState::ScanCompleted; // Wait: ScanCompleted -> Active - Impl::spinwait_while_equal(m_pool_state, ThreadsExec::ScanCompleted); + spinwait_while_equal(m_pool_state, ThreadState::ScanCompleted); } // Set: ScanCompleted -> Active for (int i = 0; i < m_pool_fan_size; ++i) { - m_pool_base[rev_rank + (1 << i)]->m_pool_state = ThreadsExec::Active; + m_pool_base[rev_rank + (1 << i)]->m_pool_state = ThreadState::Active; } } @@ -391,8 +358,8 @@ class ThreadsExec { // Fan-in reduction with highest ranking thread as the root for (int i = 0; i < m_pool_fan_size; ++i) { // Wait: Active -> Rendezvous - Impl::spinwait_while_equal( - m_pool_base[rev_rank + (1 << i)]->m_pool_state, ThreadsExec::Active); + spinwait_while_equal(m_pool_base[rev_rank + (1 << i)]->m_pool_state, + ThreadState::Active); } for (unsigned i = 0; i < count; ++i) { @@ -400,9 +367,9 @@ class ThreadsExec { } if (rev_rank) { - m_pool_state = ThreadsExec::Rendezvous; + m_pool_state = ThreadState::Rendezvous; // Wait: Rendezvous -> Active - Impl::spinwait_while_equal(m_pool_state, ThreadsExec::Rendezvous); + spinwait_while_equal(m_pool_state, ThreadState::Rendezvous); } else { // Root thread does the thread-scan before releasing threads @@ -424,7 +391,7 @@ class ThreadsExec { } for (int i = 0; i < m_pool_fan_size; ++i) { - m_pool_base[rev_rank + (1 << i)]->m_pool_state = ThreadsExec::Active; + m_pool_base[rev_rank + (1 << i)]->m_pool_state = ThreadState::Active; } } @@ -433,18 +400,14 @@ class ThreadsExec { * complete and release the Threads device. * Acquire the Threads device and start this functor. */ - static void start(void (*)(ThreadsExec &, const void *), const void *); + static void start(void (*)(ThreadsInternal &, const void *), const void *); - static int in_parallel(); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 + KOKKOS_DEPRECATED static int in_parallel(); +#endif static void fence(); static void fence(const std::string &); - static void internal_fence( - Impl::fence_is_static is_static = Impl::fence_is_static::yes); - static void internal_fence( - const std::string &, - Impl::fence_is_static is_static = Impl::fence_is_static::yes); - static bool sleep(); - static bool wake(); + static void internal_fence(); /* Dynamic Scheduling related functionality */ // Initialize the work range for this thread @@ -583,30 +546,38 @@ class ThreadsExec { namespace Kokkos { -inline int Threads::in_parallel() { return Impl::ThreadsExec::in_parallel(); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 +KOKKOS_DEPRECATED inline int Threads::in_parallel() { + return Impl::ThreadsInternal::in_parallel(); +} +#endif inline int Threads::impl_is_initialized() { - return Impl::ThreadsExec::is_initialized(); + return Impl::ThreadsInternal::is_initialized(); } inline void Threads::impl_initialize(InitializationSettings const &settings) { - Impl::ThreadsExec::initialize( + Impl::ThreadsInternal::initialize( settings.has_num_threads() ? settings.get_num_threads() : -1); } -inline void Threads::impl_finalize() { Impl::ThreadsExec::finalize(); } +inline void Threads::impl_finalize() { Impl::ThreadsInternal::finalize(); } inline void Threads::print_configuration(std::ostream &os, bool verbose) const { os << "Host Parallel Execution Space:\n"; os << " KOKKOS_ENABLE_THREADS: yes\n"; os << "\nThreads Runtime Configuration:\n"; - Impl::ThreadsExec::print_configuration(os, verbose); + Impl::ThreadsInternal::print_configuration(os, verbose); } inline void Threads::impl_static_fence(const std::string &name) { - Impl::ThreadsExec::internal_fence(name, Impl::fence_is_static::yes); + Kokkos::Tools::Experimental::Impl::profile_fence_event( + name, + Kokkos::Tools::Experimental::SpecialSynchronizationCases:: + GlobalDeviceSynchronization, + Impl::ThreadsInternal::internal_fence); } } /* namespace Kokkos */ -#endif /* #define KOKKOS_THREADSEXEC_HPP */ +#endif diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_MDRange.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_MDRange.hpp index 0828f262993..59577609ab7 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_MDRange.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_MDRange.hpp @@ -46,54 +46,54 @@ class ParallelFor, } } - static void exec(ThreadsExec &exec, const void *arg) { - exec_schedule(exec, arg); + static void exec(ThreadsInternal &instance, const void *arg) { + exec_schedule(instance, arg); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelFor &self = *((const ParallelFor *)arg); auto const num_tiles = self.m_iter.m_rp.m_num_tiles; - WorkRange range(Policy(0, num_tiles).set_chunk_size(1), exec.pool_rank(), - exec.pool_size()); + WorkRange range(Policy(0, num_tiles).set_chunk_size(1), + instance.pool_rank(), instance.pool_size()); self.exec_range(range.begin(), range.end()); - exec.fan_in(); + instance.fan_in(); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelFor &self = *((const ParallelFor *)arg); auto const num_tiles = self.m_iter.m_rp.m_num_tiles; - WorkRange range(Policy(0, num_tiles).set_chunk_size(1), exec.pool_rank(), - exec.pool_size()); + WorkRange range(Policy(0, num_tiles).set_chunk_size(1), + instance.pool_rank(), instance.pool_size()); - exec.set_work_range(range.begin(), range.end(), 1); - exec.reset_steal_target(); - exec.barrier(); + instance.set_work_range(range.begin(), range.end(), 1); + instance.reset_steal_target(); + instance.barrier(); - long work_index = exec.get_work_index(); + long work_index = instance.get_work_index(); while (work_index != -1) { const Member begin = static_cast(work_index); const Member end = begin + 1 < num_tiles ? begin + 1 : num_tiles; self.exec_range(begin, end); - work_index = exec.get_work_index(); + work_index = instance.get_work_index(); } - exec.fan_in(); + instance.fan_in(); } public: inline void execute() const { - ThreadsExec::start(&ParallelFor::exec, this); - ThreadsExec::fence(); + ThreadsInternal::start(&ParallelFor::exec, this); + ThreadsInternal::fence(); } ParallelFor(const FunctorType &arg_functor, const MDRangePolicy &arg_policy) diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Range.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Range.hpp index 3698416ef18..4a89c4fad82 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Range.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Range.hpp @@ -59,37 +59,37 @@ class ParallelFor, } } - static void exec(ThreadsExec &exec, const void *arg) { - exec_schedule(exec, arg); + static void exec(ThreadsInternal &instance, const void *arg) { + exec_schedule(instance, arg); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelFor &self = *((const ParallelFor *)arg); - WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + WorkRange range(self.m_policy, instance.pool_rank(), instance.pool_size()); ParallelFor::template exec_range(self.m_functor, range.begin(), range.end()); - exec.fan_in(); + instance.fan_in(); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelFor &self = *((const ParallelFor *)arg); - WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + WorkRange range(self.m_policy, instance.pool_rank(), instance.pool_size()); - exec.set_work_range(range.begin() - self.m_policy.begin(), - range.end() - self.m_policy.begin(), - self.m_policy.chunk_size()); - exec.reset_steal_target(); - exec.barrier(); + instance.set_work_range(range.begin() - self.m_policy.begin(), + range.end() - self.m_policy.begin(), + self.m_policy.chunk_size()); + instance.reset_steal_target(); + instance.barrier(); - long work_index = exec.get_work_index(); + long work_index = instance.get_work_index(); while (work_index != -1) { const Member begin = @@ -100,16 +100,16 @@ class ParallelFor, ? begin + self.m_policy.chunk_size() : self.m_policy.end(); ParallelFor::template exec_range(self.m_functor, begin, end); - work_index = exec.get_work_index(); + work_index = instance.get_work_index(); } - exec.fan_in(); + instance.fan_in(); } public: inline void execute() const { - ThreadsExec::start(&ParallelFor::exec, this); - ThreadsExec::fence(); + ThreadsInternal::start(&ParallelFor::exec, this); + ThreadsInternal::fence(); } ParallelFor(const FunctorType &arg_functor, const Policy &arg_policy) diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Team.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Team.hpp index 36404857a22..f927d7c6a67 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Team.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelFor_Team.hpp @@ -73,14 +73,14 @@ class ParallelFor, } } - static void exec(ThreadsExec &exec, const void *arg) { + static void exec(ThreadsInternal &instance, const void *arg) { const ParallelFor &self = *((const ParallelFor *)arg); ParallelFor::exec_team( - self.m_functor, Member(&exec, self.m_policy, self.m_shared)); + self.m_functor, Member(&instance, self.m_policy, self.m_shared)); - exec.barrier(); - exec.fan_in(); + instance.barrier(); + instance.fan_in(); } template Policy fix_policy(Policy policy) { @@ -96,12 +96,12 @@ class ParallelFor, public: inline void execute() const { - ThreadsExec::resize_scratch( + ThreadsInternal::resize_scratch( 0, Policy::member_type::team_reduce_size() + m_shared); - ThreadsExec::start(&ParallelFor::exec, this); + ThreadsInternal::start(&ParallelFor::exec, this); - ThreadsExec::fence(); + ThreadsInternal::fence(); } ParallelFor(const FunctorType &arg_functor, const Policy &arg_policy) diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_MDRange.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_MDRange.hpp index 3d06379480f..fa63215a9e5 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_MDRange.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_MDRange.hpp @@ -54,67 +54,67 @@ class ParallelReduce(exec, arg); + static void exec(ThreadsInternal &instance, const void *arg) { + exec_schedule(instance, arg); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelReduce &self = *((const ParallelReduce *)arg); const auto num_tiles = self.m_iter.m_rp.m_num_tiles; const WorkRange range(Policy(0, num_tiles).set_chunk_size(1), - exec.pool_rank(), exec.pool_size()); + instance.pool_rank(), instance.pool_size()); const ReducerType &reducer = self.m_iter.m_func.get_reducer(); self.exec_range( range.begin(), range.end(), - reducer.init(static_cast(exec.reduce_memory()))); + reducer.init(static_cast(instance.reduce_memory()))); - exec.fan_in_reduce(reducer); + instance.fan_in_reduce(reducer); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelReduce &self = *((const ParallelReduce *)arg); const auto num_tiles = self.m_iter.m_rp.m_num_tiles; const WorkRange range(Policy(0, num_tiles).set_chunk_size(1), - exec.pool_rank(), exec.pool_size()); + instance.pool_rank(), instance.pool_size()); - exec.set_work_range(range.begin(), range.end(), 1); - exec.reset_steal_target(); - exec.barrier(); + instance.set_work_range(range.begin(), range.end(), 1); + instance.reset_steal_target(); + instance.barrier(); - long work_index = exec.get_work_index(); + long work_index = instance.get_work_index(); const ReducerType &reducer = self.m_iter.m_func.get_reducer(); - reference_type update = - self.m_reducer.init(static_cast(exec.reduce_memory())); + reference_type update = self.m_reducer.init( + static_cast(instance.reduce_memory())); while (work_index != -1) { const Member begin = static_cast(work_index); const Member end = begin + 1 < num_tiles ? begin + 1 : num_tiles; self.exec_range(begin, end, update); - work_index = exec.get_work_index(); + work_index = instance.get_work_index(); } - exec.fan_in_reduce(self.m_reducer); + instance.fan_in_reduce(self.m_reducer); } public: inline void execute() const { const ReducerType &reducer = m_iter.m_func.get_reducer(); - ThreadsExec::resize_scratch(reducer.value_size(), 0); + ThreadsInternal::resize_scratch(reducer.value_size(), 0); - ThreadsExec::start(&ParallelReduce::exec, this); + ThreadsInternal::start(&ParallelReduce::exec, this); - ThreadsExec::fence(); + ThreadsInternal::fence(); if (m_result_ptr) { const pointer_type data = - (pointer_type)ThreadsExec::root_reduce_scratch(); + (pointer_type)ThreadsInternal::root_reduce_scratch(); const unsigned n = reducer.value_count(); for (unsigned i = 0; i < n; ++i) { diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Range.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Range.hpp index 5fa97b403c4..bf4c2a532a1 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Range.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Range.hpp @@ -68,42 +68,44 @@ class ParallelReduce, } } - static void exec(ThreadsExec &exec, const void *arg) { - exec_schedule(exec, arg); + static void exec(ThreadsInternal &instance, const void *arg) { + exec_schedule(instance, arg); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelReduce &self = *((const ParallelReduce *)arg); - const WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + const WorkRange range(self.m_policy, instance.pool_rank(), + instance.pool_size()); const ReducerType &reducer = self.m_functor_reducer.get_reducer(); ParallelReduce::template exec_range( self.m_functor_reducer.get_functor(), range.begin(), range.end(), - reducer.init(static_cast(exec.reduce_memory()))); + reducer.init(static_cast(instance.reduce_memory()))); - exec.fan_in_reduce(reducer); + instance.fan_in_reduce(reducer); } template static std::enable_if_t::value> - exec_schedule(ThreadsExec &exec, const void *arg) { + exec_schedule(ThreadsInternal &instance, const void *arg) { const ParallelReduce &self = *((const ParallelReduce *)arg); - const WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + const WorkRange range(self.m_policy, instance.pool_rank(), + instance.pool_size()); - exec.set_work_range(range.begin() - self.m_policy.begin(), - range.end() - self.m_policy.begin(), - self.m_policy.chunk_size()); - exec.reset_steal_target(); - exec.barrier(); + instance.set_work_range(range.begin() - self.m_policy.begin(), + range.end() - self.m_policy.begin(), + self.m_policy.chunk_size()); + instance.reset_steal_target(); + instance.barrier(); - long work_index = exec.get_work_index(); + long work_index = instance.get_work_index(); const ReducerType &reducer = self.m_functor_reducer.get_reducer(); reference_type update = - reducer.init(static_cast(exec.reduce_memory())); + reducer.init(static_cast(instance.reduce_memory())); while (work_index != -1) { const Member begin = static_cast(work_index) * self.m_policy.chunk_size() + @@ -114,10 +116,10 @@ class ParallelReduce, : self.m_policy.end(); ParallelReduce::template exec_range( self.m_functor_reducer.get_functor(), begin, end, update); - work_index = exec.get_work_index(); + work_index = instance.get_work_index(); } - exec.fan_in_reduce(reducer); + instance.fan_in_reduce(reducer); } public: @@ -130,15 +132,15 @@ class ParallelReduce, reducer.final(m_result_ptr); } } else { - ThreadsExec::resize_scratch(reducer.value_size(), 0); + ThreadsInternal::resize_scratch(reducer.value_size(), 0); - ThreadsExec::start(&ParallelReduce::exec, this); + ThreadsInternal::start(&ParallelReduce::exec, this); - ThreadsExec::fence(); + ThreadsInternal::fence(); if (m_result_ptr) { const pointer_type data = - (pointer_type)ThreadsExec::root_reduce_scratch(); + (pointer_type)ThreadsInternal::root_reduce_scratch(); const unsigned n = reducer.value_count(); for (unsigned i = 0; i < n; ++i) { diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Team.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Team.hpp index c4b6100a9df..4db310701f9 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Team.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_ParallelReduce_Team.hpp @@ -58,16 +58,16 @@ class ParallelReduce( self.m_functor_reducer.get_functor(), - Member(&exec, self.m_policy, self.m_shared), + Member(&instance, self.m_policy, self.m_shared), self.m_functor_reducer.get_reducer().init( - static_cast(exec.reduce_memory()))); + static_cast(instance.reduce_memory()))); - exec.fan_in_reduce(self.m_functor_reducer.get_reducer()); + instance.fan_in_reduce(self.m_functor_reducer.get_reducer()); } public: @@ -80,17 +80,17 @@ class ParallelReduce, } } - static void exec(ThreadsExec &exec, const void *arg) { + static void exec(ThreadsInternal &instance, const void *arg) { const ParallelScan &self = *((const ParallelScan *)arg); - const WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + const WorkRange range(self.m_policy, instance.pool_rank(), + instance.pool_size()); typename Analysis::Reducer final_reducer(self.m_functor); reference_type update = - final_reducer.init(static_cast(exec.reduce_memory())); + final_reducer.init(static_cast(instance.reduce_memory())); ParallelScan::template exec_range(self.m_functor, range.begin(), range.end(), update, false); - // exec.template scan_large( final_reducer ); - exec.scan_small(final_reducer); + instance.scan_small(final_reducer); ParallelScan::template exec_range(self.m_functor, range.begin(), range.end(), update, true); - exec.fan_in(); + instance.fan_in(); } public: inline void execute() const { - ThreadsExec::resize_scratch(2 * Analysis::value_size(m_functor), 0); - ThreadsExec::start(&ParallelScan::exec, this); - ThreadsExec::fence(); + ThreadsInternal::resize_scratch(2 * Analysis::value_size(m_functor), 0); + ThreadsInternal::start(&ParallelScan::exec, this); + ThreadsInternal::fence(); } ParallelScan(const FunctorType &arg_functor, const Policy &arg_policy) @@ -145,37 +145,37 @@ class ParallelScanWithTotal, } } - static void exec(ThreadsExec &exec, const void *arg) { + static void exec(ThreadsInternal &instance, const void *arg) { const ParallelScanWithTotal &self = *((const ParallelScanWithTotal *)arg); - const WorkRange range(self.m_policy, exec.pool_rank(), exec.pool_size()); + const WorkRange range(self.m_policy, instance.pool_rank(), + instance.pool_size()); typename Analysis::Reducer final_reducer(self.m_functor); reference_type update = - final_reducer.init(static_cast(exec.reduce_memory())); + final_reducer.init(static_cast(instance.reduce_memory())); ParallelScanWithTotal::template exec_range( self.m_functor, range.begin(), range.end(), update, false); - // exec.template scan_large(final_reducer); - exec.scan_small(final_reducer); + instance.scan_small(final_reducer); ParallelScanWithTotal::template exec_range( self.m_functor, range.begin(), range.end(), update, true); - exec.fan_in(); + instance.fan_in(); - if (exec.pool_rank() == exec.pool_size() - 1) { + if (instance.pool_rank() == instance.pool_size() - 1) { *self.m_result_ptr = update; } } public: inline void execute() const { - ThreadsExec::resize_scratch(2 * Analysis::value_size(m_functor), 0); - ThreadsExec::start(&ParallelScanWithTotal::exec, this); - ThreadsExec::fence(); + ThreadsInternal::resize_scratch(2 * Analysis::value_size(m_functor), 0); + ThreadsInternal::start(&ParallelScanWithTotal::exec, this); + ThreadsInternal::fence(); } template diff --git a/lib/kokkos/core/src/impl/Kokkos_Spinwait.cpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.cpp similarity index 90% rename from lib/kokkos/core/src/impl/Kokkos_Spinwait.cpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.cpp index 0a7eda29bcf..3df9dc07bf4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Spinwait.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.cpp @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include @@ -108,5 +108,15 @@ void host_thread_yield(const uint32_t i, const WaitMode mode) { #endif /* defined( KOKKOS_ENABLE_ASM ) */ } +void spinwait_while_equal(ThreadState const volatile& flag, + ThreadState const value) { + Kokkos::store_fence(); + uint32_t i = 0; + while (value == flag) { + host_thread_yield(++i, WaitMode::ACTIVE); + } + Kokkos::load_fence(); +} + } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Swap.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.hpp similarity index 52% rename from lib/kokkos/algorithms/src/std_algorithms/Kokkos_Swap.hpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.hpp index acd2a572c8c..b98b6dbb73b 100644 --- a/lib/kokkos/algorithms/src/std_algorithms/Kokkos_Swap.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Spinwait.hpp @@ -14,28 +14,30 @@ // //@HEADER -#ifndef KOKKOS_STD_ALGORITHMS_SWAP_HPP -#define KOKKOS_STD_ALGORITHMS_SWAP_HPP +#ifndef KOKKOS_THREADS_SPINWAIT_HPP +#define KOKKOS_THREADS_SPINWAIT_HPP -#include +#include + +#include namespace Kokkos { -namespace Experimental { - -// swap -template -KOKKOS_INLINE_FUNCTION void swap(T& a, T& b) noexcept { - static_assert( - std::is_move_assignable::value && std::is_move_constructible::value, - "Kokkos::Experimental::swap arguments must be move assignable " - "and move constructible"); - - T tmp = std::move(a); - a = std::move(b); - b = std::move(tmp); -} - -} // namespace Experimental +namespace Impl { + +enum class WaitMode : int { + ACTIVE // Used for tight loops to keep threads active longest + , + PASSIVE // Used to quickly yield the thread to quite down the system + , + ROOT // Never sleep or yield the root thread +}; + +void host_thread_yield(const uint32_t i, const WaitMode mode); + +void spinwait_while_equal(ThreadState const volatile& flag, + ThreadState const value); + +} // namespace Impl } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/fwd/Kokkos_Fwd_HBWSpace.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_State.hpp similarity index 59% rename from lib/kokkos/core/src/fwd/Kokkos_Fwd_HBWSpace.hpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_State.hpp index 21ba7fad01c..148e9aa4e05 100644 --- a/lib/kokkos/core/src/fwd/Kokkos_Fwd_HBWSpace.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_State.hpp @@ -14,16 +14,26 @@ // //@HEADER -#ifndef KOKKOS_HBWSPACE_FWD_HPP_ -#define KOKKOS_HBWSPACE_FWD_HPP_ +#ifndef KOKKOS_THREADS_STATE_HPP +#define KOKKOS_THREADS_STATE_HPP -#ifdef KOKKOS_ENABLE_HBWSPACE namespace Kokkos { - -namespace Experimental { -class HBWSpace; /// Memory space for hbw_malloc from memkind (e.g. for KNL - /// processor) -} // namespace Experimental +namespace Impl { +/** \brief States of a worker thread */ +enum class ThreadState { + Terminating ///< Termination in progress + , + Inactive ///< Exists, waiting for work + , + Active ///< Exists, performing work + , + Rendezvous ///< Exists, waiting in a barrier or reduce + , + ScanCompleted, + ScanAvailable, + ReductionAvailable +}; +} // namespace Impl } // namespace Kokkos -#endif + #endif diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Team.hpp similarity index 95% rename from lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp rename to lib/kokkos/core/src/Threads/Kokkos_Threads_Team.hpp index b1cadc7c485..fd0f221365b 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Team.hpp @@ -22,10 +22,11 @@ #include #include -#include #include #include +#include +#include //---------------------------------------------------------------------------- @@ -50,8 +51,8 @@ class ThreadsExecTeamMember { private: using space = execution_space::scratch_memory_space; - ThreadsExec* const m_exec; - ThreadsExec* const* m_team_base; ///< Base for team fan-in + ThreadsInternal* const m_instance; + ThreadsInternal* const* m_team_base; ///< Base for team fan-in space m_team_shared; size_t m_team_shared_size; int m_team_size; @@ -84,14 +85,13 @@ class ThreadsExecTeamMember { for (n = 1; (!(m_team_rank_rev & n)) && ((j = m_team_rank_rev + n) < m_team_size); n <<= 1) { - Impl::spinwait_while_equal(m_team_base[j]->state(), - ThreadsExec::Active); + spinwait_while_equal(m_team_base[j]->state(), ThreadState::Active); } // If not root then wait for release if (m_team_rank_rev) { - m_exec->state() = ThreadsExec::Rendezvous; - Impl::spinwait_while_equal(m_exec->state(), ThreadsExec::Rendezvous); + m_instance->state() = ThreadState::Rendezvous; + spinwait_while_equal(m_instance->state(), ThreadState::Rendezvous); } return !m_team_rank_rev; @@ -102,7 +102,7 @@ class ThreadsExecTeamMember { for (n = 1; (!(m_team_rank_rev & n)) && ((j = m_team_rank_rev + n) < m_team_size); n <<= 1) { - m_team_base[j]->state() = ThreadsExec::Active; + m_team_base[j]->state() = ThreadState::Active; } } @@ -188,10 +188,10 @@ class ThreadsExecTeamMember { using type = typename if_c::type; - if (nullptr == m_exec) return value; + if (m_instance == nullptr) return value; if (team_rank() != team_size() - 1) * - ((volatile type*)m_exec->scratch_memory()) = value; + ((volatile type*)m_instance->scratch_memory()) = value; memory_fence(); @@ -229,9 +229,9 @@ class ThreadsExecTeamMember { using type = typename if_c::type; - if (nullptr == m_exec) return; + if (m_instance == nullptr) return; - type* const local_value = ((type*)m_exec->scratch_memory()); + type* const local_value = ((type*)m_instance->scratch_memory()); // Set this thread's contribution if (team_rank() != team_size() - 1) { *local_value = contribution; } @@ -285,9 +285,9 @@ class ThreadsExecTeamMember { using type = typename if_c::type; - if (nullptr == m_exec) return type(0); + if (m_instance == nullptr) return type(0); - volatile type* const work_value = ((type*)m_exec->scratch_memory()); + volatile type* const work_value = ((type*)m_instance->scratch_memory()); *work_value = value; @@ -342,10 +342,10 @@ class ThreadsExecTeamMember { template ThreadsExecTeamMember( - Impl::ThreadsExec* exec, + Impl::ThreadsInternal* instance, const TeamPolicyInternal& team, const size_t shared_size) - : m_exec(exec), + : m_instance(instance), m_team_base(nullptr), m_team_shared(nullptr, 0), m_team_shared_size(shared_size), @@ -361,9 +361,11 @@ class ThreadsExecTeamMember { if (team.league_size()) { // Execution is using device-team interface: - const int pool_rank_rev = m_exec->pool_size() - (m_exec->pool_rank() + 1); + const int pool_rank_rev = + m_instance->pool_size() - (m_instance->pool_rank() + 1); const int team_rank_rev = pool_rank_rev % team.team_alloc(); - const size_t pool_league_size = m_exec->pool_size() / team.team_alloc(); + const size_t pool_league_size = + m_instance->pool_size() / team.team_alloc(); const size_t pool_league_rank_rev = pool_rank_rev / team.team_alloc(); if (pool_league_rank_rev >= pool_league_size) { m_invalid_thread = 1; @@ -372,7 +374,7 @@ class ThreadsExecTeamMember { const size_t pool_league_rank = pool_league_size - (pool_league_rank_rev + 1); - const int pool_num_teams = m_exec->pool_size() / team.team_alloc(); + const int pool_num_teams = m_instance->pool_size() / team.team_alloc(); const int chunk_size = team.chunk_size() > 0 ? team.chunk_size() : team.team_iter(); const int chunks_per_team = @@ -387,8 +389,8 @@ class ThreadsExecTeamMember { if ((team.team_alloc() > size_t(m_team_size)) ? (team_rank_rev >= m_team_size) - : (m_exec->pool_size() - pool_num_teams * m_team_size > - m_exec->pool_rank())) + : (m_instance->pool_size() - pool_num_teams * m_team_size > + m_instance->pool_rank())) m_invalid_thread = 1; else m_invalid_thread = 0; @@ -398,7 +400,7 @@ class ThreadsExecTeamMember { if (team_rank_rev < team.team_size() && !m_invalid_thread) { m_team_base = - m_exec->pool_base() + team.team_alloc() * pool_league_rank_rev; + m_instance->pool_base() + team.team_alloc() * pool_league_rank_rev; m_team_size = team.team_size(); m_team_rank = team.team_size() - (team_rank_rev + 1); m_team_rank_rev = team_rank_rev; @@ -413,13 +415,13 @@ class ThreadsExecTeamMember { } if ((m_team_rank_rev == 0) && (m_invalid_thread == 0)) { - m_exec->set_work_range(m_league_rank, m_league_end, m_chunk_size); - m_exec->reset_steal_target(m_team_size); + m_instance->set_work_range(m_league_rank, m_league_end, m_chunk_size); + m_instance->reset_steal_target(m_team_size); } if (std::is_same::schedule_type::type, Kokkos::Dynamic>::value) { - m_exec->barrier(); + m_instance->barrier(); } } else { m_invalid_thread = 1; @@ -427,7 +429,7 @@ class ThreadsExecTeamMember { } ThreadsExecTeamMember() - : m_exec(nullptr), + : m_instance(nullptr), m_team_base(nullptr), m_team_shared(nullptr, 0), m_team_shared_size(0), @@ -442,8 +444,8 @@ class ThreadsExecTeamMember { m_invalid_thread(0), m_team_alloc(0) {} - inline ThreadsExec& threads_exec_team_base() const { - return m_team_base ? **m_team_base : *m_exec; + inline ThreadsInternal& threads_exec_team_base() const { + return m_team_base ? **m_team_base : *m_instance; } bool valid_static() const { return m_league_rank < m_league_end; } @@ -999,8 +1001,10 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( lambda(i, scan_val, false); } + auto& team_member = loop_bounds.thread; + // 'scan_val' output is the exclusive prefix sum - scan_val = loop_bounds.thread.team_scan(scan_val); + scan_val = team_member.team_scan(scan_val); #ifdef KOKKOS_ENABLE_PRAGMA_IVDEP #pragma ivdep @@ -1010,6 +1014,8 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( lambda(i, scan_val, true); } + team_member.team_broadcast(scan_val, team_member.team_size() - 1); + return_val = scan_val; } diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp index d4ce697548f..c88d66db5f9 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp @@ -18,7 +18,7 @@ #define KOKKOS_THREADS_WORKGRAPHPOLICY_HPP #include -#include +#include namespace Kokkos { namespace Impl { @@ -61,16 +61,17 @@ class ParallelFor, } } - static inline void thread_main(ThreadsExec& exec, const void* arg) noexcept { + static inline void thread_main(ThreadsInternal& instance, + const void* arg) noexcept { const Self& self = *(static_cast(arg)); self.exec_one_thread(); - exec.fan_in(); + instance.fan_in(); } public: inline void execute() { - ThreadsExec::start(&Self::thread_main, this); - ThreadsExec::fence(); + ThreadsInternal::start(&Self::thread_main, this); + ThreadsInternal::fence(); } inline ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) diff --git a/lib/kokkos/core/src/decl/Kokkos_Declare_HBWSpace.hpp b/lib/kokkos/core/src/decl/Kokkos_Declare_HBWSpace.hpp deleted file mode 100644 index 1328c931352..00000000000 --- a/lib/kokkos/core/src/decl/Kokkos_Declare_HBWSpace.hpp +++ /dev/null @@ -1,24 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_DECLARE_HBWSPACE_HPP -#define KOKKOS_DECLARE_HBWSPACE_HPP - -#ifdef KOKKOS_ENABLE_HBWSPACE -#include -#endif - -#endif diff --git a/lib/kokkos/core/src/decl/Kokkos_Declare_HIP.hpp b/lib/kokkos/core/src/decl/Kokkos_Declare_HIP.hpp index e115f7051f3..cf405e57b8f 100644 --- a/lib/kokkos/core/src/decl/Kokkos_Declare_HIP.hpp +++ b/lib/kokkos/core/src/decl/Kokkos_Declare_HIP.hpp @@ -25,9 +25,13 @@ #include #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/lib/kokkos/core/src/decl/Kokkos_Declare_THREADS.hpp b/lib/kokkos/core/src/decl/Kokkos_Declare_THREADS.hpp index f5cbc0c1d1d..4d7caec6f5f 100644 --- a/lib/kokkos/core/src/decl/Kokkos_Declare_THREADS.hpp +++ b/lib/kokkos/core/src/decl/Kokkos_Declare_THREADS.hpp @@ -19,7 +19,7 @@ #if defined(KOKKOS_ENABLE_THREADS) #include -#include +#include #include #include #include @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index 5c182db5663..4a696526161 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -90,8 +90,6 @@ void combine(Kokkos::InitializationSettings& out, KOKKOS_IMPL_COMBINE_SETTING(num_threads); KOKKOS_IMPL_COMBINE_SETTING(map_device_id_by); KOKKOS_IMPL_COMBINE_SETTING(device_id); - KOKKOS_IMPL_COMBINE_SETTING(num_devices); - KOKKOS_IMPL_COMBINE_SETTING(skip_device); KOKKOS_IMPL_COMBINE_SETTING(disable_warnings); KOKKOS_IMPL_COMBINE_SETTING(tune_internals); KOKKOS_IMPL_COMBINE_SETTING(tools_help); @@ -131,11 +129,15 @@ void combine(Kokkos::Tools::InitArguments& out, int get_device_count() { #if defined(KOKKOS_ENABLE_CUDA) - return Kokkos::Cuda::detect_device_count(); + int count; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&count)); + return count; #elif defined(KOKKOS_ENABLE_HIP) - return Kokkos::HIP::detect_device_count(); + int count; + KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceCount(&count)); + return count; #elif defined(KOKKOS_ENABLE_SYCL) - return sycl::device::get_devices(sycl::info::device_type::gpu).size(); + return Kokkos::Experimental::Impl::get_sycl_devices().size(); #elif defined(KOKKOS_ENABLE_OPENACC) return acc_get_num_devices( Kokkos::Experimental::Impl::OpenACC_Traits::dev_type); @@ -165,20 +167,43 @@ bool is_valid_map_device_id_by(std::string const& x) { } // namespace +std::vector const& Kokkos::Impl::get_visible_devices() { + static auto devices = get_visible_devices(get_device_count()); + return devices; +} + [[nodiscard]] int Kokkos::device_id() noexcept { #if defined(KOKKOS_ENABLE_CUDA) - return Cuda().cuda_device(); + int device = Cuda().cuda_device(); #elif defined(KOKKOS_ENABLE_HIP) - return HIP().hip_device(); + int device = HIP().hip_device(); #elif defined(KOKKOS_ENABLE_OPENACC) - return Experimental::OpenACC().acc_device_number(); + int device = Experimental::OpenACC().acc_device_number(); #elif defined(KOKKOS_ENABLE_OPENMPTARGET) - return omp_get_default_device(); // FIXME_OPENMPTARGET + int device = omp_get_default_device(); // FIXME_OPENMPTARGET #elif defined(KOKKOS_ENABLE_SYCL) - return Experimental::Impl::SYCLInternal::m_syclDev; + int device = Experimental::Impl::SYCLInternal::m_syclDev; #else - return -1; + int device = -1; + return device; #endif + auto const& visible_devices = Impl::get_visible_devices(); + for (std::size_t i = 0; i < visible_devices.size(); ++i) { + if (visible_devices[i] == device) { + return i; + } + } + Kokkos::abort("Unexpected error: cannot determine device id"); + return -1; +} + +[[nodiscard]] int Kokkos::num_devices() noexcept { + if constexpr (std::is_same_v) { + return -1; // no GPU backend enabled + } else { + return Impl::get_visible_devices().size(); + } } [[nodiscard]] int Kokkos::num_threads() noexcept { @@ -313,8 +338,7 @@ int Kokkos::Impl::get_ctest_gpu(int local_rank) { return std::stoi(id.c_str()); } -std::vector Kokkos::Impl::get_visible_devices( - Kokkos::InitializationSettings const& settings, int device_count) { +std::vector Kokkos::Impl::get_visible_devices(int device_count) { std::vector visible_devices; char* env_visible_devices = std::getenv("KOKKOS_VISIBLE_DEVICES"); if (env_visible_devices) { @@ -341,30 +365,9 @@ std::vector Kokkos::Impl::get_visible_devices( } } } else { - int num_devices = - settings.has_num_devices() ? settings.get_num_devices() : device_count; - if (num_devices > device_count) { - std::stringstream ss; - ss << "Error: Specified number of devices '" << num_devices - << "' exceeds the actual number of GPUs available for execution '" - << device_count << "'." - << " Raised by Kokkos::initialize().\n"; - Kokkos::abort(ss.str().c_str()); - } - for (int i = 0; i < num_devices; ++i) { + for (int i = 0; i < device_count; ++i) { visible_devices.push_back(i); } - if (settings.has_skip_device()) { - if (visible_devices.size() == 1 && settings.get_skip_device() == 0) { - Kokkos::abort( - "Error: skipping the only GPU available for execution.\n" - " Raised by Kokkos::initialize().\n"); - } - visible_devices.erase( - std::remove(visible_devices.begin(), visible_devices.end(), - settings.get_skip_device()), - visible_devices.end()); - } } if (visible_devices.empty()) { Kokkos::abort( @@ -374,10 +377,10 @@ std::vector Kokkos::Impl::get_visible_devices( return visible_devices; } -int Kokkos::Impl::get_gpu(const InitializationSettings& settings) { - std::vector visible_devices = - get_visible_devices(settings, get_device_count()); - int const num_devices = visible_devices.size(); +std::optional Kokkos::Impl::get_gpu( + const InitializationSettings& settings) { + std::vector visible_devices = get_visible_devices(get_device_count()); + int const num_devices = visible_devices.size(); // device_id is provided if (settings.has_device_id()) { int const id = settings.get_device_id(); @@ -423,14 +426,15 @@ int Kokkos::Impl::get_gpu(const InitializationSettings& settings) { int const mpi_local_rank = mpi_local_rank_on_node(); - // use first GPU available for execution if unable to detect local MPI rank + // if unable to detect local MPI rank return nullopt to delegate device + // selection to the backend if (mpi_local_rank < 0) { if (settings.has_map_device_id_by()) { std::cerr << "Warning: unable to detect local MPI rank." << " Falling back to the first GPU available for execution." << " Raised by Kokkos::initialize()." << std::endl; } - return visible_devices[0]; + return std::nullopt; } // use device assigned by CTest when resource allocation is activated @@ -445,13 +449,6 @@ int Kokkos::Impl::get_gpu(const InitializationSettings& settings) { namespace { void initialize_backends(const Kokkos::InitializationSettings& settings) { -// This is an experimental setting -// For KNL in Flat mode this variable should be set, so that -// memkind allocates high bandwidth memory correctly. -#ifdef KOKKOS_ENABLE_HBWSPACE - setenv("MEMKIND_HBW_NODES", "1", 0); -#endif - Kokkos::Impl::ExecSpaceManager::get_instance().initialize_spaces(settings); } @@ -571,19 +568,6 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { "no"); #endif -#ifdef KOKKOS_ENABLE_HBWSPACE - declare_configuration_metadata("memory", "KOKKOS_ENABLE_HBWSPACE", "yes"); -#else - declare_configuration_metadata("memory", "KOKKOS_ENABLE_HBWSPACE", "no"); -#endif -#ifdef KOKKOS_ENABLE_INTEL_MM_ALLOC - declare_configuration_metadata("memory", "KOKKOS_ENABLE_INTEL_MM_ALLOC", - "yes"); -#else - declare_configuration_metadata("memory", "KOKKOS_ENABLE_INTEL_MM_ALLOC", - "no"); -#endif - #ifdef KOKKOS_ENABLE_ASM declare_configuration_metadata("options", "KOKKOS_ENABLE_ASM", "yes"); #else @@ -604,6 +588,11 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { #else declare_configuration_metadata("options", "KOKKOS_ENABLE_CXX23", "no"); #endif +#ifdef KOKKOS_ENABLE_CXX26 + declare_configuration_metadata("options", "KOKKOS_ENABLE_CXX26", "yes"); +#else + declare_configuration_metadata("options", "KOKKOS_ENABLE_CXX26", "no"); +#endif #ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK declare_configuration_metadata("options", "KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK", "yes"); @@ -616,11 +605,6 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { #else declare_configuration_metadata("options", "KOKKOS_ENABLE_HWLOC", "no"); #endif -#ifdef KOKKOS_ENABLE_LIBRT - declare_configuration_metadata("options", "KOKKOS_ENABLE_LIBRT", "yes"); -#else - declare_configuration_metadata("options", "KOKKOS_ENABLE_LIBRT", "no"); -#endif #ifdef KOKKOS_ENABLE_LIBDL declare_configuration_metadata("options", "KOKKOS_ENABLE_LIBDL", "yes"); #else @@ -645,8 +629,6 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { "ARMV8_THUNDERX2"); #elif defined(KOKKOS_ARCH_BDW) declare_configuration_metadata("architecture", "CPU architecture", "BDW"); -#elif defined(KOKKOS_ARCH_BGQ) - declare_configuration_metadata("architecture", "CPU architecture", "BGQ"); #elif defined(KOKKOS_ARCH_HSW) declare_configuration_metadata("architecture", "CPU architecture", "HSW"); #elif defined(KOKKOS_ARCH_ICL) @@ -659,8 +641,6 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { declare_configuration_metadata("architecture", "CPU architecture", "KNL"); #elif defined(KOKKOS_ARCH_NATIVE) declare_configuration_metadata("architecture", "CPU architecture", "NATIVE"); -#elif defined(KOKKOS_ARCH_POWER7) - declare_configuration_metadata("architecture", "CPU architecture", "POWER7"); #elif defined(KOKKOS_ARCH_POWER8) declare_configuration_metadata("architecture", "CPU architecture", "POWER8"); #elif defined(KOKKOS_ARCH_POWER9) @@ -673,8 +653,6 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { declare_configuration_metadata("architecture", "CPU architecture", "SNB"); #elif defined(KOKKOS_ARCH_SPR) declare_configuration_metadata("architecture", "CPU architecture", "SPR"); -#elif defined(KOKKOS_ARCH_WSM) - declare_configuration_metadata("architecture", "CPU architecture", "WSM"); #elif defined(KOKKOS_ARCH_AMD_ZEN) declare_configuration_metadata("architecture", "CPU architecture", "AMD_ZEN"); #elif defined(KOKKOS_ARCH_AMD_ZEN2) @@ -683,6 +661,9 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { #elif defined(KOKKOS_ARCH_AMD_ZEN3) declare_configuration_metadata("architecture", "CPU architecture", "AMD_ZEN3"); +#elif defined(KOKKOS_ARCH_RISCV_SG2042) + declare_configuration_metadata("architecture", "CPU architecture", + "SG2042 (RISC-V)") #else declare_configuration_metadata("architecture", "CPU architecture", "none"); #endif @@ -752,8 +733,8 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) { #elif defined(KOKKOS_ARCH_ADA89) declare_configuration_metadata("architecture", "GPU architecture", "ADA89"); #elif defined(KOKKOS_ARCH_HOPPER90) - declare_configuration_metadata("architecture", "GPU architecture", - "HOPPER90"); + declare_configuration_metadata("architecture", "GPU architecture", + "HOPPER90"); #elif defined(KOKKOS_ARCH_AMD_GFX906) declare_configuration_metadata("architecture", "GPU architecture", "AMD_GFX906"); @@ -911,36 +892,18 @@ void Kokkos::Impl::parse_command_line_arguments( int num_threads; int device_id; - int num_devices; // deprecated - int skip_device; // deprecated std::string map_device_id_by; bool disable_warnings; bool print_configuration; bool tune_internals; - auto get_flag = [](std::string s) -> std::string { - return s.erase(s.find('=')); - }; - bool help_flag = false; int iarg = 0; while (iarg < argc) { bool remove_flag = false; - if (check_arg(argv[iarg], "--kokkos-numa") || - check_arg(argv[iarg], "--numa")) { - warn_deprecated_command_line_argument(get_flag(argv[iarg])); - // remove flag if prefixed with '--kokkos-' - remove_flag = std::string(argv[iarg]).find("--kokkos-") == 0; - } else if (check_arg_int(argv[iarg], "--kokkos-num-threads", num_threads) || - check_arg_int(argv[iarg], "--num-threads", num_threads) || - check_arg_int(argv[iarg], "--kokkos-threads", num_threads) || - check_arg_int(argv[iarg], "--threads", num_threads)) { - if (get_flag(argv[iarg]) != "--kokkos-num-threads") { - warn_deprecated_command_line_argument(get_flag(argv[iarg]), - "--kokkos-num-threads"); - } + if (check_arg_int(argv[iarg], "--kokkos-num-threads", num_threads)) { if (!is_valid_num_threads(num_threads)) { std::stringstream ss; ss << "Error: command line argument '" << argv[iarg] << "' is invalid." @@ -949,15 +912,8 @@ void Kokkos::Impl::parse_command_line_arguments( Kokkos::abort(ss.str().c_str()); } settings.set_num_threads(num_threads); - remove_flag = std::string(argv[iarg]).find("--kokkos-") == 0; - } else if (check_arg_int(argv[iarg], "--kokkos-device-id", device_id) || - check_arg_int(argv[iarg], "--device-id", device_id) || - check_arg_int(argv[iarg], "--kokkos-device", device_id) || - check_arg_int(argv[iarg], "--device", device_id)) { - if (get_flag(argv[iarg]) != "--kokkos-device-id") { - warn_deprecated_command_line_argument(get_flag(argv[iarg]), - "--kokkos-device-id"); - } + remove_flag = true; + } else if (check_arg_int(argv[iarg], "--kokkos-device-id", device_id)) { if (!is_valid_device_id(device_id)) { std::stringstream ss; ss << "Error: command line argument '" << argv[iarg] << "' is invalid." @@ -966,70 +922,7 @@ void Kokkos::Impl::parse_command_line_arguments( Kokkos::abort(ss.str().c_str()); } settings.set_device_id(device_id); - remove_flag = std::string(argv[iarg]).find("--kokkos-") == 0; - } else if (check_arg(argv[iarg], "--kokkos-num-devices") || - check_arg(argv[iarg], "--num-devices") || - check_arg(argv[iarg], "--kokkos-ndevices") || - check_arg(argv[iarg], "--ndevices")) { - if (check_arg(argv[iarg], "--num-devices")) { - warn_deprecated_command_line_argument("--num-devices", - "--kokkos-num-devices"); - } - if (check_arg(argv[iarg], "--ndevices")) { - warn_deprecated_command_line_argument("--ndevices", - "--kokkos-num-devices"); - } - if (check_arg(argv[iarg], "--kokkos-ndevices")) { - warn_deprecated_command_line_argument("--kokkos-ndevices", - "--kokkos-num-devices"); - } - warn_deprecated_command_line_argument( - "--kokkos-num-devices", "--kokkos-map-device-id-by=mpi_rank"); - // Find the number of device (expecting --device=XX) - if (!((strncmp(argv[iarg], "--kokkos-num-devices=", 21) == 0) || - (strncmp(argv[iarg], "--num-devices=", 14) == 0) || - (strncmp(argv[iarg], "--kokkos-ndevices=", 18) == 0) || - (strncmp(argv[iarg], "--ndevices=", 11) == 0))) - throw_runtime_exception( - "Error: expecting an '=INT[,INT]' after command line argument " - "'--kokkos-num-devices'." - " Raised by Kokkos::initialize()."); - - char* num1 = strchr(argv[iarg], '=') + 1; - char* num2 = strpbrk(num1, ","); - int num1_len = num2 == nullptr ? strlen(num1) : num2 - num1; - char* num1_only = new char[num1_len + 1]; - strncpy(num1_only, num1, num1_len); - num1_only[num1_len] = '\0'; - - if (!is_unsigned_int(num1_only) || (strlen(num1_only) == 0)) { - throw_runtime_exception( - "Error: expecting an integer number after command line argument " - "'--kokkos-num-devices'." - " Raised by Kokkos::initialize()."); - } - if (check_arg(argv[iarg], "--kokkos-num-devices") || - check_arg(argv[iarg], "--kokkos-ndevices")) { - num_devices = std::stoi(num1_only); - settings.set_num_devices(num_devices); - settings.set_map_device_id_by("mpi_rank"); - } - delete[] num1_only; - - if (num2 != nullptr) { - if ((!is_unsigned_int(num2 + 1)) || (strlen(num2) == 1)) - throw_runtime_exception( - "Error: expecting an integer number after command line argument " - "'--kokkos-num-devices=XX,'." - " Raised by Kokkos::initialize()."); - - if (check_arg(argv[iarg], "--kokkos-num-devices") || - check_arg(argv[iarg], "--kokkos-ndevices")) { - skip_device = std::stoi(num2 + 1); - settings.set_skip_device(skip_device); - } - } - remove_flag = std::string(argv[iarg]).find("--kokkos-") == 0; + remove_flag = true; } else if (check_arg_bool(argv[iarg], "--kokkos-disable-warnings", disable_warnings)) { settings.set_disable_warnings(disable_warnings); @@ -1098,9 +991,6 @@ void Kokkos::Impl::parse_environment_variables( } combine(settings, tools_init_arguments); - if (std::getenv("KOKKOS_NUMA")) { - warn_deprecated_environment_variable("KOKKOS_NUMA"); - } int num_threads; if (check_env_int("KOKKOS_NUM_THREADS", num_threads)) { if (!is_valid_num_threads(num_threads)) { @@ -1125,34 +1015,6 @@ void Kokkos::Impl::parse_environment_variables( } settings.set_device_id(device_id); } - int num_devices; - int rand_devices; - bool has_num_devices = check_env_int("KOKKOS_NUM_DEVICES", num_devices); - bool has_rand_devices = check_env_int("KOKKOS_RAND_DEVICES", rand_devices); - if (has_rand_devices && has_num_devices) { - Impl::throw_runtime_exception( - "Error: cannot specify both KOKKOS_NUM_DEVICES and " - "KOKKOS_RAND_DEVICES." - " Raised by Kokkos::initialize()."); - } - if (has_num_devices) { - warn_deprecated_environment_variable("KOKKOS_NUM_DEVICES", - "KOKKOS_MAP_DEVICE_ID_BY=mpi_rank"); - settings.set_map_device_id_by("mpi_rank"); - settings.set_num_devices(num_devices); - } - if (has_rand_devices) { - warn_deprecated_environment_variable("KOKKOS_RAND_DEVICES", - "KOKKOS_MAP_DEVICE_ID_BY=random"); - settings.set_map_device_id_by("random"); - settings.set_num_devices(rand_devices); - } - if (has_num_devices || has_rand_devices) { - int skip_device; - if (check_env_int("KOKKOS_SKIP_DEVICE", skip_device)) { - settings.set_skip_device(skip_device); - } - } bool disable_warnings; if (check_env_bool("KOKKOS_DISABLE_WARNINGS", disable_warnings)) { settings.set_disable_warnings(disable_warnings); diff --git a/lib/kokkos/core/src/impl/Kokkos_DeviceManagement.hpp b/lib/kokkos/core/src/impl/Kokkos_DeviceManagement.hpp index bd89c8b19ca..70dca5d8fad 100644 --- a/lib/kokkos/core/src/impl/Kokkos_DeviceManagement.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_DeviceManagement.hpp @@ -17,17 +17,17 @@ #ifndef KOKKOS_DEVICE_MANAGEMENT_HPP #define KOKKOS_DEVICE_MANAGEMENT_HPP +#include #include namespace Kokkos { class InitializationSettings; namespace Impl { -int get_gpu(const Kokkos::InitializationSettings& settings); +std::optional get_gpu(const Kokkos::InitializationSettings& settings); // This declaration is provided for testing purposes only int get_ctest_gpu(int local_rank); -// ditto -std::vector get_visible_devices( - Kokkos::InitializationSettings const& settings, int device_count); +std::vector get_visible_devices(int device_count); // test-only +std::vector const& get_visible_devices(); // use this instead } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.cpp b/lib/kokkos/core/src/impl/Kokkos_Error.cpp index 4babe2d72bd..de6e83ed1f2 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.cpp @@ -21,10 +21,11 @@ #include #include -#include +#include #include #include #include +#include // show_warnings #include #include @@ -38,6 +39,12 @@ void throw_runtime_exception(const std::string &msg) { throw std::runtime_error(msg); } +void log_warning(const std::string &msg) { + if (show_warnings()) { + std::cerr << msg << std::flush; + } +} + std::string human_memory_size(size_t arg_bytes) { double bytes = arg_bytes; const double K = 1024; @@ -64,7 +71,8 @@ std::string human_memory_size(size_t arg_bytes) { void Experimental::RawMemoryAllocationFailure::print_error_message( std::ostream &o) const { - o << "Allocation of size " << Impl::human_memory_size(m_attempted_size); + o << "Allocation of size " + << ::Kokkos::Impl::human_memory_size(m_attempted_size); o << " failed"; switch (m_failure_mode) { case FailureMode::OutOfMemoryError: diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index 3d0b1d3274c..1058fd98dbf 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -28,6 +28,8 @@ namespace Impl { [[noreturn]] void throw_runtime_exception(const std::string &msg); +void log_warning(const std::string &msg); + std::string human_memory_size(size_t arg_bytes); } // namespace Impl @@ -58,7 +60,8 @@ class RawMemoryAllocationFailure : public std::bad_alloc { HIPMallocManaged, SYCLMallocDevice, SYCLMallocShared, - SYCLMallocHost + SYCLMallocHost, + OpenACCMalloc, }; private: diff --git a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp deleted file mode 100644 index cd640b88cb9..00000000000 --- a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp +++ /dev/null @@ -1,313 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#define KOKKOS_IMPL_PUBLIC_INCLUDE -#endif - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#ifdef KOKKOS_ENABLE_HBWSPACE -#include -#endif - -#include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- -#ifdef KOKKOS_ENABLE_HBWSPACE -#define MEMKIND_TYPE MEMKIND_HBW // hbw_get_kind(HBW_PAGESIZE_4KB) - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { -namespace Experimental { - -/* Default allocation mechanism */ -HBWSpace::HBWSpace() : m_alloc_mech(HBWSpace::STD_MALLOC) { - printf("Init\n"); - setenv("MEMKIND_HBW_NODES", "1", 0); -} - -/* Default allocation mechanism */ -HBWSpace::HBWSpace(const HBWSpace::AllocationMechanism &arg_alloc_mech) - : m_alloc_mech(HBWSpace::STD_MALLOC) { - printf("Init2\n"); - setenv("MEMKIND_HBW_NODES", "1", 0); - if (arg_alloc_mech == STD_MALLOC) { - m_alloc_mech = HBWSpace::STD_MALLOC; - } -} - -void *HBWSpace::allocate(const size_t arg_alloc_size) const { - return allocate("[unlabeled]", arg_alloc_size); -} -void *HBWSpace::allocate(const char *arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size) const { - return impl_allocate(arg_label, arg_alloc_size, arg_logical_size); -} -void *HBWSpace::impl_allocate( - const char *arg_label, const size_t arg_alloc_size, - const size_t arg_logical_size, - const Kokkos::Tools::SpaceHandle arg_handle) const { - static_assert(sizeof(void *) == sizeof(uintptr_t), - "Error sizeof(void*) != sizeof(uintptr_t)"); - - static_assert( - Kokkos::Impl::power_of_two::value, - "Memory alignment must be power of two"); - - constexpr uintptr_t alignment = Kokkos::Impl::MEMORY_ALIGNMENT; - constexpr uintptr_t alignment_mask = alignment - 1; - - void *ptr = nullptr; - - if (arg_alloc_size) { - if (m_alloc_mech == STD_MALLOC) { - // Over-allocate to and round up to guarantee proper alignment. - size_t size_padded = arg_alloc_size + sizeof(void *) + alignment; - - void *alloc_ptr = memkind_malloc(MEMKIND_TYPE, size_padded); - - if (alloc_ptr) { - uintptr_t address = reinterpret_cast(alloc_ptr); - - // offset enough to record the alloc_ptr - address += sizeof(void *); - uintptr_t rem = address % alignment; - uintptr_t offset = rem ? (alignment - rem) : 0u; - address += offset; - ptr = reinterpret_cast(address); - // record the alloc'd pointer - address -= sizeof(void *); - *reinterpret_cast(address) = alloc_ptr; - } - } - } - - if ((ptr == nullptr) || (reinterpret_cast(ptr) == ~uintptr_t(0)) || - (reinterpret_cast(ptr) & alignment_mask)) { - std::ostringstream msg; - msg << "Kokkos::Experimental::HBWSpace::allocate[ "; - switch (m_alloc_mech) { - case STD_MALLOC: msg << "STD_MALLOC"; break; - case POSIX_MEMALIGN: msg << "POSIX_MEMALIGN"; break; - case POSIX_MMAP: msg << "POSIX_MMAP"; break; - case INTEL_MM_ALLOC: msg << "INTEL_MM_ALLOC"; break; - } - msg << " ]( " << arg_alloc_size << " ) FAILED"; - if (ptr == nullptr) { - msg << " nullptr"; - } else { - msg << " NOT ALIGNED " << ptr; - } - - std::cerr << msg.str() << std::endl; - std::cerr.flush(); - - Kokkos::Impl::throw_runtime_exception(msg.str()); - } - if (Kokkos::Profiling::profileLibraryLoaded()) { - const size_t reported_size = - (arg_logical_size > 0) ? arg_logical_size : arg_alloc_size; - Kokkos::Profiling::allocateData(arg_handle, arg_label, ptr, reported_size); - } - - return ptr; -} - -void HBWSpace::deallocate(void *const arg_alloc_ptr, - const size_t arg_alloc_size) const { - deallocate("[unlabeled]", arg_alloc_ptr, arg_alloc_size); -} -void HBWSpace::deallocate(const char *arg_label, void *const arg_alloc_ptr, - const size_t arg_alloc_size, - const size_t arg_logical_size) const { - impl_deallocate(arg_label, arg_alloc_ptr, arg_alloc_size, arg_logical_size); -} -void HBWSpace::impl_deallocate( - const char *arg_label, void *const arg_alloc_ptr, - const size_t arg_alloc_size, const size_t arg_logical_size, - const Kokkos::Tools::SpaceHandle arg_handle) const { - if (arg_alloc_ptr) { - if (Kokkos::Profiling::profileLibraryLoaded()) { - const size_t reported_size = - (arg_logical_size > 0) ? arg_logical_size : arg_alloc_size; - Kokkos::Profiling::deallocateData(arg_handle, arg_label, arg_alloc_ptr, - reported_size); - } - - if (m_alloc_mech == STD_MALLOC) { - void *alloc_ptr = *(reinterpret_cast(arg_alloc_ptr) - 1); - memkind_free(MEMKIND_TYPE, alloc_ptr); - } - } -} - -} // namespace Experimental -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord - SharedAllocationRecord::s_root_record; -#endif - -void SharedAllocationRecord::deallocate( - SharedAllocationRecord *arg_rec) { - delete static_cast(arg_rec); -} - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); -} - -SharedAllocationRecord:: - SharedAllocationRecord( - const Kokkos::Experimental::HBWSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : SharedAllocationRecord( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - // Fill in the Header information - RecordBase::m_alloc_ptr->m_record = - static_cast *>(this); - - strncpy(RecordBase::m_alloc_ptr->m_label, arg_label.c_str(), - SharedAllocationHeader::maximum_label_length - 1); - // Set last element zero, in case c_str is too long - RecordBase::m_alloc_ptr - ->m_label[SharedAllocationHeader::maximum_label_length - 1] = '\0'; -} - -//---------------------------------------------------------------------------- - -void * -SharedAllocationRecord::allocate_tracked( - const Kokkos::Experimental::HBWSpace &arg_space, - const std::string &arg_alloc_label, const size_t arg_alloc_size) { - if (!arg_alloc_size) return nullptr; - - SharedAllocationRecord *const r = - allocate(arg_space, arg_alloc_label, arg_alloc_size); - - RecordBase::increment(r); - - return r->data(); -} - -void SharedAllocationRecord::deallocate_tracked(void *const - arg_alloc_ptr) { - if (arg_alloc_ptr != nullptr) { - SharedAllocationRecord *const r = get_record(arg_alloc_ptr); - - RecordBase::decrement(r); - } -} - -void *SharedAllocationRecord:: - reallocate_tracked(void *const arg_alloc_ptr, const size_t arg_alloc_size) { - SharedAllocationRecord *const r_old = get_record(arg_alloc_ptr); - SharedAllocationRecord *const r_new = - allocate(r_old->m_space, r_old->get_label(), arg_alloc_size); - - Kokkos::Impl::DeepCopy( - r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); - Kokkos::fence( - "SharedAllocationRecord::reallocate_tracked(): fence after copying data"); - - RecordBase::increment(r_new); - RecordBase::decrement(r_old); - - return r_new->data(); -} - -SharedAllocationRecord - *SharedAllocationRecord::get_record( - void *alloc_ptr) { - using Header = SharedAllocationHeader; - using RecordHost = - SharedAllocationRecord; - - SharedAllocationHeader const *const head = - alloc_ptr ? Header::get_header(alloc_ptr) : nullptr; - RecordHost *const record = - head ? static_cast(head->m_record) : nullptr; - - if (!alloc_ptr || record->m_alloc_ptr != head) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::HBWSpace " - ", void >::get_record ERROR")); - } - - return record; -} - -// Iterate records to print orphaned memory ... -void SharedAllocationRecord:: - print_records(std::ostream &s, const Kokkos::Experimental::HBWSpace &space, - bool detail) { -#ifdef KOKKOS_ENABLE_DEBUG - SharedAllocationRecord::print_host_accessible_records( - s, "HBWSpace", &s_root_record, detail); -#else - throw_runtime_exception( - "SharedAllocationRecord::print_records" - " only works with KOKKOS_ENABLE_DEBUG enabled"); -#endif -} - -} // namespace Impl -} // namespace Kokkos - -#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Half_FloatingPointWrapper.hpp b/lib/kokkos/core/src/impl/Kokkos_Half_FloatingPointWrapper.hpp index 4a22898d168..bcce013b00e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Half_FloatingPointWrapper.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Half_FloatingPointWrapper.hpp @@ -196,12 +196,12 @@ KOKKOS_INLINE_FUNCTION template static KOKKOS_INLINE_FUNCTION Kokkos::Experimental::half_t cast_to_wrapper( - T x, const volatile Kokkos::Impl::half_impl_t::type&); + T x, const Kokkos::Impl::half_impl_t::type&); #ifdef KOKKOS_IMPL_BHALF_TYPE_DEFINED template static KOKKOS_INLINE_FUNCTION Kokkos::Experimental::bhalf_t cast_to_wrapper( - T x, const volatile Kokkos::Impl::bhalf_impl_t::type&); + T x, const Kokkos::Impl::bhalf_impl_t::type&); #endif // KOKKOS_IMPL_BHALF_TYPE_DEFINED template @@ -283,13 +283,6 @@ class alignas(FloatType) floating_point_wrapper { private: impl_type val; - using fixed_width_integer_type = std::conditional_t< - sizeof(impl_type) == 2, uint16_t, - std::conditional_t< - sizeof(impl_type) == 4, uint32_t, - std::conditional_t>>; - static_assert(!std::is_void::value, - "Invalid impl_type"); public: // In-class initialization and defaulted default constructors not used @@ -318,18 +311,6 @@ class alignas(FloatType) floating_point_wrapper { default; #endif - KOKKOS_INLINE_FUNCTION - floating_point_wrapper(const volatile floating_point_wrapper& rhs) { -#if defined(KOKKOS_HALF_IS_FULL_TYPE_ON_ARCH) && !defined(KOKKOS_ENABLE_SYCL) - val = rhs.val; -#else - const volatile fixed_width_integer_type* rv_ptr = - reinterpret_cast(&rhs.val); - const fixed_width_integer_type rv_val = *rv_ptr; - val = reinterpret_cast(rv_val); -#endif // KOKKOS_HALF_IS_FULL_TYPE_ON_ARCH - } - KOKKOS_FUNCTION floating_point_wrapper(bit_comparison_type rhs) { val = Kokkos::bit_cast(rhs); @@ -492,15 +473,6 @@ class alignas(FloatType) floating_point_wrapper { return *this; } - template - KOKKOS_FUNCTION void operator=(T rhs) volatile { - impl_type new_val = cast_to_wrapper(rhs, val).val; - volatile fixed_width_integer_type* val_ptr = - reinterpret_cast( - const_cast(&val)); - *val_ptr = reinterpret_cast(new_val); - } - // Compound operators KOKKOS_FUNCTION floating_point_wrapper& operator+=(floating_point_wrapper rhs) { @@ -515,15 +487,6 @@ class alignas(FloatType) floating_point_wrapper { return *this; } - KOKKOS_FUNCTION - void operator+=(const volatile floating_point_wrapper& rhs) volatile { - floating_point_wrapper tmp_rhs = rhs; - floating_point_wrapper tmp_lhs = *this; - - tmp_lhs += tmp_rhs; - *this = tmp_lhs; - } - // Compound operators: upcast overloads for += template KOKKOS_FUNCTION friend std::enable_if_t< @@ -560,15 +523,6 @@ class alignas(FloatType) floating_point_wrapper { return *this; } - KOKKOS_FUNCTION - void operator-=(const volatile floating_point_wrapper& rhs) volatile { - floating_point_wrapper tmp_rhs = rhs; - floating_point_wrapper tmp_lhs = *this; - - tmp_lhs -= tmp_rhs; - *this = tmp_lhs; - } - // Compund operators: upcast overloads for -= template KOKKOS_FUNCTION friend std::enable_if_t< @@ -605,15 +559,6 @@ class alignas(FloatType) floating_point_wrapper { return *this; } - KOKKOS_FUNCTION - void operator*=(const volatile floating_point_wrapper& rhs) volatile { - floating_point_wrapper tmp_rhs = rhs; - floating_point_wrapper tmp_lhs = *this; - - tmp_lhs *= tmp_rhs; - *this = tmp_lhs; - } - // Compund operators: upcast overloads for *= template KOKKOS_FUNCTION friend std::enable_if_t< @@ -650,15 +595,6 @@ class alignas(FloatType) floating_point_wrapper { return *this; } - KOKKOS_FUNCTION - void operator/=(const volatile floating_point_wrapper& rhs) volatile { - floating_point_wrapper tmp_rhs = rhs; - floating_point_wrapper tmp_lhs = *this; - - tmp_lhs /= tmp_rhs; - *this = tmp_lhs; - } - // Compund operators: upcast overloads for /= template KOKKOS_FUNCTION friend std::enable_if_t< @@ -884,27 +820,6 @@ class alignas(FloatType) floating_point_wrapper { #endif } - KOKKOS_FUNCTION - friend bool operator==(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs == tmp_rhs; - } - - KOKKOS_FUNCTION - friend bool operator!=(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs != tmp_rhs; - } - - KOKKOS_FUNCTION - friend bool operator<(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs < tmp_rhs; - } - template KOKKOS_FUNCTION friend std::enable_if_t && (std::is_same_v || @@ -923,13 +838,6 @@ class alignas(FloatType) floating_point_wrapper { return lhs < static_cast(rhs); } - KOKKOS_FUNCTION - friend bool operator>(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs > tmp_rhs; - } - template KOKKOS_FUNCTION friend std::enable_if_t && (std::is_same_v || @@ -948,13 +856,6 @@ class alignas(FloatType) floating_point_wrapper { return lhs > static_cast(rhs); } - KOKKOS_FUNCTION - friend bool operator<=(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs <= tmp_rhs; - } - template KOKKOS_FUNCTION friend std::enable_if_t && (std::is_same_v || @@ -973,13 +874,6 @@ class alignas(FloatType) floating_point_wrapper { return lhs <= static_cast(rhs); } - KOKKOS_FUNCTION - friend bool operator>=(const volatile floating_point_wrapper& lhs, - const volatile floating_point_wrapper& rhs) { - floating_point_wrapper tmp_lhs = lhs, tmp_rhs = rhs; - return tmp_lhs >= tmp_rhs; - } - template KOKKOS_FUNCTION friend std::enable_if_t && (std::is_same_v || @@ -1018,14 +912,14 @@ class alignas(FloatType) floating_point_wrapper { // Declare wrapper overloads now that floating_point_wrapper is declared template static KOKKOS_INLINE_FUNCTION Kokkos::Experimental::half_t cast_to_wrapper( - T x, const volatile Kokkos::Impl::half_impl_t::type&) { + T x, const Kokkos::Impl::half_impl_t::type&) { return Kokkos::Experimental::cast_to_half(x); } #ifdef KOKKOS_IMPL_BHALF_TYPE_DEFINED template static KOKKOS_INLINE_FUNCTION Kokkos::Experimental::bhalf_t cast_to_wrapper( - T x, const volatile Kokkos::Impl::bhalf_impl_t::type&) { + T x, const Kokkos::Impl::bhalf_impl_t::type&) { return Kokkos::Experimental::cast_to_bhalf(x); } #endif // KOKKOS_IMPL_BHALF_TYPE_DEFINED diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp index a9d72160593..1047b773d77 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp @@ -20,23 +20,11 @@ #include +#include +#include #include -#include #include -/*--------------------------------------------------------------------------*/ - -#if (defined(KOKKOS_COMPILER_INTEL) || defined(KOKKOS_COMPILER_INTEL_LLVM)) && \ - !defined(KOKKOS_ENABLE_CUDA) - -// Intel specialized allocator does not interoperate with CUDA memory allocation - -#define KOKKOS_ENABLE_INTEL_MM_ALLOC - -#endif - -/*--------------------------------------------------------------------------*/ - #include #include #include @@ -50,10 +38,6 @@ #include #endif -#include -#include -#include - //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -150,84 +134,6 @@ void HostSpace::impl_deallocate( } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -#ifdef KOKKOS_ENABLE_DEBUG -SharedAllocationRecord - SharedAllocationRecord::s_root_record; -#endif - -SharedAllocationRecord::~SharedAllocationRecord() { - m_space.deallocate(m_label.c_str(), - SharedAllocationRecord::m_alloc_ptr, - SharedAllocationRecord::m_alloc_size, - (SharedAllocationRecord::m_alloc_size - - sizeof(SharedAllocationHeader))); -} - -SharedAllocationHeader *_do_allocation(Kokkos::HostSpace const &space, - std::string const &label, - size_t alloc_size) { - try { - return reinterpret_cast( - space.allocate(alloc_size)); - } catch (Experimental::RawMemoryAllocationFailure const &failure) { - if (failure.failure_mode() == Experimental::RawMemoryAllocationFailure:: - FailureMode::AllocationNotAligned) { - // TODO: delete the misaligned memory - } - - std::cerr << "Kokkos failed to allocate memory for label \"" << label - << "\". Allocation using MemorySpace named \"" << space.name() - << " failed with the following error: "; - failure.print_error_message(std::cerr); - std::cerr.flush(); - Kokkos::Impl::throw_runtime_exception("Memory allocation failure"); - } - return nullptr; // unreachable -} - -SharedAllocationRecord::SharedAllocationRecord( - const Kokkos::HostSpace &arg_space, const std::string &arg_label, - const size_t arg_alloc_size, - const SharedAllocationRecord::function_type arg_dealloc) - // Pass through allocated [ SharedAllocationHeader , user_memory ] - // Pass through deallocation function - : base_t( -#ifdef KOKKOS_ENABLE_DEBUG - &SharedAllocationRecord::s_root_record, -#endif - Impl::checked_allocation_with_header(arg_space, arg_label, - arg_alloc_size), - sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc, - arg_label), - m_space(arg_space) { - this->base_t::_fill_host_accessible_header_info(*RecordBase::m_alloc_ptr, - arg_label); -} - -} // namespace Impl -} // namespace Kokkos - -//============================================================================== -// {{{1 - #include -namespace Kokkos { -namespace Impl { - -// To avoid additional compilation cost for something that's (mostly?) not -// performance sensitive, we explicity instantiate these CRTP base classes here, -// where we have access to the associated *_timpl.hpp header files. -template class SharedAllocationRecordCommon; - -} // end namespace Impl -} // end namespace Kokkos - -// end Explicit instantiations of CRTP Base classes }}}1 -//============================================================================== +KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION(Kokkos::HostSpace); diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace_ZeroMemset.hpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace_ZeroMemset.hpp index f740c408fb8..3072e2ce825 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostSpace_ZeroMemset.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace_ZeroMemset.hpp @@ -26,8 +26,7 @@ namespace Impl { template struct ZeroMemset> { - ZeroMemset(const HostSpace::execution_space& exec, const View& dst, - typename View::const_value_type&) { + ZeroMemset(const HostSpace::execution_space& exec, const View& dst) { // Host spaces, except for HPX, are synchronous and we need to fence for HPX // since we can't properly enqueue a std::memset otherwise. // We can't use exec.fence() directly since we don't have a full definition @@ -36,12 +35,6 @@ struct ZeroMemset> { using ValueType = typename View::value_type; std::memset(dst.data(), 0, sizeof(ValueType) * dst.size()); } - - ZeroMemset(const View& dst, - typename View::const_value_type&) { - using ValueType = typename View::value_type; - std::memset(dst.data(), 0, sizeof(ValueType) * dst.size()); - } }; } // end namespace Impl diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp index bfe5902bf7f..11bf701b57a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -22,7 +22,6 @@ #include #include #include -#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp index 51f25a8b60f..25f09b82865 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp @@ -885,7 +885,7 @@ KOKKOS_INLINE_FUNCTION closure(i, accum, false); } - auto team_member = loop_boundaries.thread; + auto& team_member = loop_boundaries.thread; // 'accum' output is the exclusive prefix sum accum = team_member.team_scan(accum); diff --git a/lib/kokkos/core/src/impl/Kokkos_InitializationSettings.hpp b/lib/kokkos/core/src/impl/Kokkos_InitializationSettings.hpp index ab4350f3a7a..11a93c6bb56 100644 --- a/lib/kokkos/core/src/impl/Kokkos_InitializationSettings.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_InitializationSettings.hpp @@ -24,32 +24,6 @@ namespace Kokkos { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -struct InitArguments { - int num_threads; - int num_numa; - int device_id; - int ndevices; - int skip_device; - bool disable_warnings; - bool tune_internals; - bool tool_help = false; - std::string tool_lib = {}; - std::string tool_args = {}; - - KOKKOS_DEPRECATED_WITH_COMMENT("Use InitializationSettings instead!") - InitArguments(int nt = -1, int nn = -1, int dv = -1, bool dw = false, - bool ti = false) - : num_threads{nt}, - num_numa{nn}, - device_id{dv}, - ndevices{-1}, - skip_device{9999}, - disable_warnings{dw}, - tune_internals{ti} {} -}; -#endif - class InitializationSettings { #define KOKKOS_IMPL_DECLARE(TYPE, NAME) \ private: \ @@ -64,12 +38,32 @@ class InitializationSettings { TYPE get_##NAME() const noexcept { return *m_##NAME; } \ static_assert(true, "no-op to require trailing semicolon") +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 +#define KOKKOS_IMPL_DECLARE_DEPRECATED(TYPE, NAME) \ + private: \ + std::optional m_##NAME; \ + \ + public: \ + KOKKOS_DEPRECATED InitializationSettings& set_##NAME(TYPE NAME) { \ + m_##NAME = NAME; \ + return *this; \ + } \ + KOKKOS_DEPRECATED bool has_##NAME() const noexcept { \ + return static_cast(m_##NAME); \ + } \ + KOKKOS_DEPRECATED TYPE get_##NAME() const noexcept { return *m_##NAME; } \ + static_assert(true, "no-op to require trailing semicolon") +#else +#define KOKKOS_IMPL_DECLARE_DEPRECATED(TYPE, NAME) \ + static_assert(true, "no-op to require trailing semicolon") +#endif + public: KOKKOS_IMPL_DECLARE(int, num_threads); KOKKOS_IMPL_DECLARE(int, device_id); KOKKOS_IMPL_DECLARE(std::string, map_device_id_by); - KOKKOS_IMPL_DECLARE(int, num_devices); // deprecated - KOKKOS_IMPL_DECLARE(int, skip_device); // deprecated + KOKKOS_IMPL_DECLARE_DEPRECATED(int, num_devices); + KOKKOS_IMPL_DECLARE_DEPRECATED(int, skip_device); KOKKOS_IMPL_DECLARE(bool, disable_warnings); KOKKOS_IMPL_DECLARE(bool, print_configuration); KOKKOS_IMPL_DECLARE(bool, tune_internals); @@ -80,41 +74,6 @@ class InitializationSettings { #undef KOKKOS_IMPL_INIT_ARGS_DATA_MEMBER_TYPE #undef KOKKOS_IMPL_INIT_ARGS_DATA_MEMBER #undef KOKKOS_IMPL_DECLARE - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 - public: - InitializationSettings() = default; - - InitializationSettings(InitArguments const& old) { - if (old.num_threads != -1) { - set_num_threads(old.num_threads); - } - if (old.device_id != -1) { - set_device_id(old.device_id); - } - if (old.ndevices != -1) { - set_num_devices(old.ndevices); - } - if (old.skip_device != 9999) { - set_skip_device(old.skip_device); - } - if (old.disable_warnings) { - set_disable_warnings(true); - } - if (old.tune_internals) { - set_tune_internals(true); - } - if (old.tool_help) { - set_tools_help(true); - } - if (!old.tool_lib.empty()) { - set_tools_libs(old.tool_lib); - } - if (!old.tool_args.empty()) { - set_tools_args(old.tool_args); - } - } -#endif }; } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_MemorySpace.cpp b/lib/kokkos/core/src/impl/Kokkos_MemorySpace.cpp deleted file mode 100644 index 2f0e01c5b28..00000000000 --- a/lib/kokkos/core/src/impl/Kokkos_MemorySpace.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -/** @file Kokkos_MemorySpace.cpp - * - * Operations common to memory space instances, or at least default - * implementations thereof. - */ - -#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE -#define KOKKOS_IMPL_PUBLIC_INCLUDE -#endif - -#include - -#include -#include -#include - -namespace Kokkos { -namespace Impl { - -void safe_throw_allocation_with_header_failure( - std::string const& space_name, std::string const& label, - Kokkos::Experimental::RawMemoryAllocationFailure const& failure) { - auto generate_failure_message = [&](std::ostream& o) { - o << "Kokkos failed to allocate memory for label \"" << label - << "\". Allocation using MemorySpace named \"" << space_name - << "\" failed with the following error: "; - failure.print_error_message(o); - if (failure.failure_mode() == - Kokkos::Experimental::RawMemoryAllocationFailure::FailureMode:: - AllocationNotAligned) { - // TODO: delete the misaligned memory? - o << "Warning: Allocation failed due to misalignment; memory may " - "be leaked.\n"; - } - o.flush(); - }; - try { - std::ostringstream sstr; - generate_failure_message(sstr); - Kokkos::Impl::throw_runtime_exception(sstr.str()); - } catch (std::bad_alloc const&) { - // Probably failed to allocate the string because we're so close to out - // of memory. Try printing to std::cerr instead - try { - generate_failure_message(std::cerr); - } catch (std::bad_alloc const&) { - // oh well, we tried... - } - Kokkos::Impl::throw_runtime_exception( - "Kokkos encountered an allocation failure, then another allocation " - "failure while trying to create the error message."); - } -} - -} // end namespace Impl -} // end namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_MemorySpace.hpp b/lib/kokkos/core/src/impl/Kokkos_MemorySpace.hpp deleted file mode 100644 index 44956dd7c5d..00000000000 --- a/lib/kokkos/core/src/impl/Kokkos_MemorySpace.hpp +++ /dev/null @@ -1,71 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -/** @file Kokkos_MemorySpace.hpp - * - * Operations common to memory space instances, or at least default - * implementations thereof. - */ - -#ifndef KOKKOS_IMPL_MEMORYSPACE_HPP -#define KOKKOS_IMPL_MEMORYSPACE_HPP - -#include -#include -#include - -#include - -namespace Kokkos { -namespace Impl { - -// Defined in implementation file to avoid having to include iostream -void safe_throw_allocation_with_header_failure( - std::string const &space_name, std::string const &label, - Kokkos::Experimental::RawMemoryAllocationFailure const &failure); - -template -SharedAllocationHeader *checked_allocation_with_header(MemorySpace const &space, - std::string const &label, - size_t alloc_size) { - try { - return reinterpret_cast(space.allocate( - label.c_str(), alloc_size + sizeof(SharedAllocationHeader), - alloc_size)); - } catch (Kokkos::Experimental::RawMemoryAllocationFailure const &failure) { - safe_throw_allocation_with_header_failure(space.name(), label, failure); - } - return nullptr; // unreachable -} - -template -SharedAllocationHeader *checked_allocation_with_header( - ExecutionSpace const &exec_space, MemorySpace const &space, - std::string const &label, size_t alloc_size) { - try { - return reinterpret_cast(space.allocate( - exec_space, label.c_str(), alloc_size + sizeof(SharedAllocationHeader), - alloc_size)); - } catch (Kokkos::Experimental::RawMemoryAllocationFailure const &failure) { - safe_throw_allocation_with_header_failure(space.name(), label, failure); - } - return nullptr; // unreachable -} - -} // end namespace Impl -} // end namespace Kokkos - -#endif // KOKKOS_IMPL_MEMORYSPACE_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp deleted file mode 100644 index 42a53b04fb2..00000000000 --- a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp +++ /dev/null @@ -1,54 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#include -#if defined(KOKKOS_ATOMIC_HPP) && !defined(KOKKOS_MEMORY_FENCE_HPP) -#define KOKKOS_MEMORY_FENCE_HPP -namespace Kokkos { - -////////////////////////////////////////////////////// -// store_fence() -// -// If possible use a store fence on the architecture, if not run a full memory -// fence - -KOKKOS_FORCEINLINE_FUNCTION -void store_fence() { -#if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - asm volatile("sfence" ::: "memory"); -#else - memory_fence(); -#endif -} - -////////////////////////////////////////////////////// -// load_fence() -// -// If possible use a load fence on the architecture, if not run a full memory -// fence - -KOKKOS_FORCEINLINE_FUNCTION -void load_fence() { -#if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - asm volatile("lfence" ::: "memory"); -#else - memory_fence(); -#endif -} - -} // namespace Kokkos - -#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_C_Interface.h b/lib/kokkos/core/src/impl/Kokkos_Profiling_C_Interface.h index 731a11e917a..15c466b27ed 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_C_Interface.h +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_C_Interface.h @@ -154,7 +154,7 @@ enum Kokkos_Tools_OptimizationType { Kokkos_Tools_Maximize }; -struct Kokkos_Tools_OptimzationGoal { +struct Kokkos_Tools_OptimizationGoal { size_t type_id; enum Kokkos_Tools_OptimizationType goal; }; @@ -220,7 +220,7 @@ typedef void (*Kokkos_Tools_contextBeginFunction)(const size_t); typedef void (*Kokkos_Tools_contextEndFunction)( const size_t, struct Kokkos_Tools_VariableValue); typedef void (*Kokkos_Tools_optimizationGoalDeclarationFunction)( - const size_t, const struct Kokkos_Tools_OptimzationGoal goal); + const size_t, const struct Kokkos_Tools_OptimizationGoal goal); struct Kokkos_Profiling_EventSet { Kokkos_Profiling_initFunction init; diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp index af71932e47b..b66886d9f7e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp @@ -226,7 +226,7 @@ using ValueType = Kokkos_Tools_VariableInfo_ValueType; using CandidateValueType = Kokkos_Tools_VariableInfo_CandidateValueType; using SetOrRange = Kokkos_Tools_VariableInfo_SetOrRange; using VariableInfo = Kokkos_Tools_VariableInfo; -using OptimizationGoal = Kokkos_Tools_OptimzationGoal; +using OptimizationGoal = Kokkos_Tools_OptimizationGoal; using TuningString = Kokkos_Tools_Tuning_String; using VariableValue = Kokkos_Tools_VariableValue; diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp index 255f5125f4a..0bc3814b3a1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp @@ -20,6 +20,8 @@ #include #include +#include +#include namespace Kokkos { namespace Impl { @@ -321,5 +323,53 @@ void SharedAllocationRecord::print_host_accessible_records( } #endif +void safe_throw_allocation_with_header_failure( + std::string const& space_name, std::string const& label, + Kokkos::Experimental::RawMemoryAllocationFailure const& failure) { + auto generate_failure_message = [&](std::ostream& o) { + o << "Kokkos failed to allocate memory for label \"" << label + << "\". Allocation using MemorySpace named \"" << space_name + << "\" failed with the following error: "; + failure.print_error_message(o); + if (failure.failure_mode() == + Kokkos::Experimental::RawMemoryAllocationFailure::FailureMode:: + AllocationNotAligned) { + // TODO: delete the misaligned memory? + o << "Warning: Allocation failed due to misalignment; memory may " + "be leaked.\n"; + } + o.flush(); + }; + try { + std::ostringstream sstr; + generate_failure_message(sstr); + Kokkos::Impl::throw_runtime_exception(sstr.str()); + } catch (std::bad_alloc const&) { + // Probably failed to allocate the string because we're so close to out + // of memory. Try printing to std::cerr instead + try { + generate_failure_message(std::cerr); + } catch (std::bad_alloc const&) { + // oh well, we tried... + } + Kokkos::Impl::throw_runtime_exception( + "Kokkos encountered an allocation failure, then another allocation " + "failure while trying to create the error message."); + } +} + +void fill_host_accessible_header_info( + SharedAllocationRecord* arg_record, + SharedAllocationHeader& arg_header, std::string const& arg_label) { + // Fill in the Header information, directly accessible on the host + + arg_header.m_record = arg_record; + + strncpy(arg_header.m_label, arg_label.c_str(), + SharedAllocationHeader::maximum_label_length); + // Set last element zero, in case c_str is too long + arg_header.m_label[SharedAllocationHeader::maximum_label_length - 1] = '\0'; +} + } /* namespace Impl */ } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp index 043505a158e..99ab660213f 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp @@ -51,6 +51,9 @@ class SharedAllocationHeader { friend class SharedAllocationRecordCommon; template friend class HostInaccessibleSharedAllocationRecordCommon; + friend void fill_host_accessible_header_info( + SharedAllocationRecord*, SharedAllocationHeader&, + std::string const&); Record* m_record; char m_label[maximum_label_length]; @@ -145,25 +148,23 @@ class SharedAllocationRecord { SharedAllocationRecord() : m_alloc_ptr(nullptr), m_alloc_size(0), - m_dealloc(nullptr) + m_dealloc(nullptr), #ifdef KOKKOS_ENABLE_DEBUG - , m_root(this), m_prev(this), - m_next(this) + m_next(this), #endif - , m_count(0) { } static constexpr unsigned maximum_label_length = SharedAllocationHeader::maximum_label_length; - KOKKOS_INLINE_FUNCTION + KOKKOS_FUNCTION const SharedAllocationHeader* head() const { return m_alloc_ptr; } /* User's memory begins at the end of the header */ - KOKKOS_INLINE_FUNCTION + KOKKOS_FUNCTION void* data() const { return static_cast(m_alloc_ptr + 1); } /* User's memory begins at the end of the header */ @@ -195,23 +196,79 @@ class SharedAllocationRecord { const SharedAllocationRecord* const root, const bool detail); }; +void safe_throw_allocation_with_header_failure( + std::string const& space_name, std::string const& label, + Kokkos::Experimental::RawMemoryAllocationFailure const& failure); + +template +SharedAllocationHeader* checked_allocation_with_header(MemorySpace const& space, + std::string const& label, + size_t alloc_size) { + try { + return reinterpret_cast(space.allocate( + label.c_str(), alloc_size + sizeof(SharedAllocationHeader), + alloc_size)); + } catch (Kokkos::Experimental::RawMemoryAllocationFailure const& failure) { + safe_throw_allocation_with_header_failure(space.name(), label, failure); + } + return nullptr; // unreachable +} + +template +SharedAllocationHeader* checked_allocation_with_header( + ExecutionSpace const& exec_space, MemorySpace const& space, + std::string const& label, size_t alloc_size) { + try { + return reinterpret_cast(space.allocate( + exec_space, label.c_str(), alloc_size + sizeof(SharedAllocationHeader), + alloc_size)); + } catch (Kokkos::Experimental::RawMemoryAllocationFailure const& failure) { + safe_throw_allocation_with_header_failure(space.name(), label, failure); + } + return nullptr; // unreachable +} + +void fill_host_accessible_header_info(SharedAllocationHeader& arg_header, + std::string const& arg_label); + template class SharedAllocationRecordCommon : public SharedAllocationRecord { private: using derived_t = SharedAllocationRecord; using record_base_t = SharedAllocationRecord; - derived_t& self() { return *static_cast(this); } - derived_t const& self() const { return *static_cast(this); } protected: using record_base_t::record_base_t; - void _fill_host_accessible_header_info(SharedAllocationHeader& arg_header, - std::string const& arg_label); + MemorySpace m_space; + +#ifdef KOKKOS_ENABLE_DEBUG + static record_base_t s_root_record; +#endif static void deallocate(record_base_t* arg_rec); public: + ~SharedAllocationRecordCommon(); + template + SharedAllocationRecordCommon( + ExecutionSpace const& exec, MemorySpace const& space, + std::string const& label, std::size_t alloc_size, + record_base_t::function_type dealloc = &deallocate) + : SharedAllocationRecord( +#ifdef KOKKOS_ENABLE_DEBUG + &s_root_record, +#endif + checked_allocation_with_header(exec, space, label, alloc_size), + sizeof(SharedAllocationHeader) + alloc_size, dealloc, label), + m_space(space) { + auto& header = *SharedAllocationRecord::m_alloc_ptr; + fill_host_accessible_header_info(this, header, label); + } + SharedAllocationRecordCommon( + MemorySpace const& space, std::string const& label, std::size_t size, + record_base_t::function_type dealloc = &deallocate); + static auto allocate(MemorySpace const& arg_space, std::string const& arg_label, size_t arg_alloc_size) -> derived_t*; @@ -231,22 +288,103 @@ class SharedAllocationRecordCommon : public SharedAllocationRecord { template class HostInaccessibleSharedAllocationRecordCommon - : public SharedAllocationRecordCommon { + : public SharedAllocationRecord { private: - using base_t = SharedAllocationRecordCommon; using derived_t = SharedAllocationRecord; using record_base_t = SharedAllocationRecord; protected: - using base_t::base_t; + using record_base_t::record_base_t; + + MemorySpace m_space; + +#ifdef KOKKOS_ENABLE_DEBUG + static record_base_t s_root_record; +#endif + + static void deallocate(record_base_t* arg_rec); public: + ~HostInaccessibleSharedAllocationRecordCommon(); + template + HostInaccessibleSharedAllocationRecordCommon( + ExecutionSpace const& exec, MemorySpace const& space, + std::string const& label, std::size_t alloc_size, + record_base_t::function_type dealloc = &deallocate) + : SharedAllocationRecord( +#ifdef KOKKOS_ENABLE_DEBUG + &s_root_record, +#endif + checked_allocation_with_header(exec, space, label, alloc_size), + sizeof(SharedAllocationHeader) + alloc_size, dealloc, label), + m_space(space) { + SharedAllocationHeader header; + + fill_host_accessible_header_info(this, header, label); + + Kokkos::Impl::DeepCopy( + exec, SharedAllocationRecord::m_alloc_ptr, &header, + sizeof(SharedAllocationHeader)); + } + HostInaccessibleSharedAllocationRecordCommon( + MemorySpace const& space, std::string const& label, std::size_t size, + record_base_t::function_type dealloc = &deallocate); + + static auto allocate(MemorySpace const& arg_space, + std::string const& arg_label, size_t arg_alloc_size) + -> derived_t*; + /**\brief Allocate tracked memory in the space */ + static void* allocate_tracked(MemorySpace const& arg_space, + std::string const& arg_alloc_label, + size_t arg_alloc_size); + /**\brief Reallocate tracked memory in the space */ + static void deallocate_tracked(void* arg_alloc_ptr); + /**\brief Deallocate tracked memory in the space */ + static void* reallocate_tracked(void* arg_alloc_ptr, size_t arg_alloc_size); + static void print_records(std::ostream& s, MemorySpace const&, bool detail = false); static auto get_record(void* alloc_ptr) -> derived_t*; std::string get_label() const; }; +#ifdef KOKKOS_ENABLE_DEBUG +template +SharedAllocationRecord + SharedAllocationRecordCommon::s_root_record; + +template +SharedAllocationRecord + HostInaccessibleSharedAllocationRecordCommon::s_root_record; +#endif + +#define KOKKOS_IMPL_SHARED_ALLOCATION_SPECIALIZATION(MEMORY_SPACE) \ + template <> \ + class Kokkos::Impl::SharedAllocationRecord \ + : public Kokkos::Impl::SharedAllocationRecordCommon { \ + using SharedAllocationRecordCommon< \ + MEMORY_SPACE>::SharedAllocationRecordCommon; \ + } + +#define KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_SPECIALIZATION( \ + MEMORY_SPACE) \ + template <> \ + class Kokkos::Impl::SharedAllocationRecord \ + : public Kokkos::Impl::HostInaccessibleSharedAllocationRecordCommon< \ + MEMORY_SPACE> { \ + using HostInaccessibleSharedAllocationRecordCommon< \ + MEMORY_SPACE>::HostInaccessibleSharedAllocationRecordCommon; \ + } + +#define KOKKOS_IMPL_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( \ + MEMORY_SPACE) \ + template class Kokkos::Impl::SharedAllocationRecordCommon + +#define KOKKOS_IMPL_HOST_INACCESSIBLE_SHARED_ALLOCATION_RECORD_EXPLICIT_INSTANTIATION( \ + MEMORY_SPACE) \ + template class Kokkos::Impl::HostInaccessibleSharedAllocationRecordCommon< \ + MEMORY_SPACE> + namespace { /* Taking the address of this function so make sure it is unique */ diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc_timpl.hpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc_timpl.hpp index d403ef9db06..41036ab0678 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc_timpl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc_timpl.hpp @@ -31,6 +31,66 @@ namespace Kokkos { namespace Impl { +template +SharedAllocationRecordCommon::~SharedAllocationRecordCommon() { + auto alloc_ptr = SharedAllocationRecord::m_alloc_ptr; + auto alloc_size = SharedAllocationRecord::m_alloc_size; + auto label = SharedAllocationRecord::m_label; + m_space.deallocate(label.c_str(), alloc_ptr, alloc_size, + alloc_size - sizeof(SharedAllocationHeader)); +} +template +HostInaccessibleSharedAllocationRecordCommon< + MemorySpace>::~HostInaccessibleSharedAllocationRecordCommon() { + auto alloc_ptr = SharedAllocationRecord::m_alloc_ptr; + auto alloc_size = SharedAllocationRecord::m_alloc_size; + auto label = SharedAllocationRecord::m_label; + m_space.deallocate(label.c_str(), alloc_ptr, alloc_size, + alloc_size - sizeof(SharedAllocationHeader)); +} + +template +SharedAllocationRecordCommon::SharedAllocationRecordCommon( + MemorySpace const& space, std::string const& label, std::size_t alloc_size, + SharedAllocationRecord::function_type dealloc) + : SharedAllocationRecord( +#ifdef KOKKOS_ENABLE_DEBUG + &s_root_record, +#endif + checked_allocation_with_header(space, label, alloc_size), + sizeof(SharedAllocationHeader) + alloc_size, dealloc, label), + m_space(space) { + auto& header = *SharedAllocationRecord::m_alloc_ptr; + fill_host_accessible_header_info(this, header, label); +} + +template +HostInaccessibleSharedAllocationRecordCommon:: + HostInaccessibleSharedAllocationRecordCommon( + MemorySpace const& space, std::string const& label, + std::size_t alloc_size, + SharedAllocationRecord::function_type dealloc) + : SharedAllocationRecord( +#ifdef KOKKOS_ENABLE_DEBUG + &s_root_record, +#endif + checked_allocation_with_header(space, label, alloc_size), + sizeof(SharedAllocationHeader) + alloc_size, dealloc, label), + m_space(space) { + SharedAllocationHeader header; + + fill_host_accessible_header_info(this, header, label); + + typename MemorySpace::execution_space exec; + Kokkos::Impl::DeepCopy( + exec, SharedAllocationRecord::m_alloc_ptr, &header, + sizeof(SharedAllocationHeader)); + exec.fence(std::string("SharedAllocationRecord::SharedAllocationRecord(): " + "fence after copying header from HostSpace"); +} + template auto SharedAllocationRecordCommon::allocate( MemorySpace const& arg_space, std::string const& arg_label, @@ -76,9 +136,64 @@ void* SharedAllocationRecordCommon::reallocate_tracked( Kokkos::Impl::DeepCopy( r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); - Kokkos::fence( - "SharedAllocationRecord::reallocate_tracked(): fence after copying data"); + Kokkos::fence(std::string("SharedAllocationRecord<") + MemorySpace::name() + + ", void>::reallocate_tracked(): fence after copying data"); + + record_base_t::increment(r_new); + record_base_t::decrement(r_old); + + return r_new->data(); +} + +template +auto HostInaccessibleSharedAllocationRecordCommon::allocate( + MemorySpace const& arg_space, std::string const& arg_label, + size_t arg_alloc_size) -> derived_t* { + return new derived_t(arg_space, arg_label, arg_alloc_size); +} + +template +void* HostInaccessibleSharedAllocationRecordCommon< + MemorySpace>::allocate_tracked(const MemorySpace& arg_space, + const std::string& arg_alloc_label, + size_t arg_alloc_size) { + if (!arg_alloc_size) return nullptr; + + SharedAllocationRecord* const r = + allocate(arg_space, arg_alloc_label, arg_alloc_size); + + record_base_t::increment(r); + + return r->data(); +} + +template +void HostInaccessibleSharedAllocationRecordCommon::deallocate( + HostInaccessibleSharedAllocationRecordCommon::record_base_t* arg_rec) { + delete static_cast(arg_rec); +} + +template +void HostInaccessibleSharedAllocationRecordCommon< + MemorySpace>::deallocate_tracked(void* arg_alloc_ptr) { + if (arg_alloc_ptr != nullptr) { + SharedAllocationRecord* const r = derived_t::get_record(arg_alloc_ptr); + record_base_t::decrement(r); + } +} + +template +void* HostInaccessibleSharedAllocationRecordCommon< + MemorySpace>::reallocate_tracked(void* arg_alloc_ptr, + size_t arg_alloc_size) { + derived_t* const r_old = derived_t::get_record(arg_alloc_ptr); + derived_t* const r_new = + allocate(r_old->m_space, r_old->get_label(), arg_alloc_size); + + Kokkos::Impl::DeepCopy( + r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); + Kokkos::fence(std::string("SharedAllocationRecord<") + MemorySpace::name() + + ", void>::reallocate_tracked(): fence after copying data"); record_base_t::increment(r_new); record_base_t::decrement(r_old); @@ -108,20 +223,6 @@ std::string SharedAllocationRecordCommon::get_label() const { return record_base_t::m_label; } -template -void SharedAllocationRecordCommon:: - _fill_host_accessible_header_info(SharedAllocationHeader& arg_header, - std::string const& arg_label) { - // Fill in the Header information, directly accessible on the host - - arg_header.m_record = &self(); - - strncpy(arg_header.m_label, arg_label.c_str(), - SharedAllocationHeader::maximum_label_length); - // Set last element zero, in case c_str is too long - arg_header.m_label[SharedAllocationHeader::maximum_label_length - 1] = '\0'; -} - template void SharedAllocationRecordCommon::print_records( std::ostream& s, const MemorySpace&, bool detail) { diff --git a/lib/kokkos/core/src/impl/Kokkos_Spinwait.hpp b/lib/kokkos/core/src/impl/Kokkos_Spinwait.hpp deleted file mode 100644 index c57b17d646a..00000000000 --- a/lib/kokkos/core/src/impl/Kokkos_Spinwait.hpp +++ /dev/null @@ -1,109 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#ifndef KOKKOS_SPINWAIT_HPP -#define KOKKOS_SPINWAIT_HPP - -#include -#include - -#include - -#include - -namespace Kokkos { -namespace Impl { - -enum class WaitMode : int { - ACTIVE // Used for tight loops to keep threads active longest - , - PASSIVE // Used to quickly yield the thread to quite down the system - , - ROOT // Never sleep or yield the root thread -}; - -void host_thread_yield(const uint32_t i, const WaitMode mode); - -template -std::enable_if_t::value, void> root_spinwait_while_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value == flag) { - host_thread_yield(++i, WaitMode::ROOT); - } - Kokkos::load_fence(); -} - -template -std::enable_if_t::value, void> root_spinwait_until_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value != flag) { - host_thread_yield(++i, WaitMode::ROOT); - } - Kokkos::load_fence(); -} - -template -std::enable_if_t::value, void> spinwait_while_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value == flag) { - host_thread_yield(++i, WaitMode::ACTIVE); - } - Kokkos::load_fence(); -} - -template -std::enable_if_t::value, void> yield_while_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value == flag) { - host_thread_yield(++i, WaitMode::PASSIVE); - } - Kokkos::load_fence(); -} - -template -std::enable_if_t::value, void> spinwait_until_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value != flag) { - host_thread_yield(++i, WaitMode::ACTIVE); - } - Kokkos::load_fence(); -} - -template -std::enable_if_t::value, void> yield_until_equal( - T const volatile& flag, const T value) { - Kokkos::store_fence(); - uint32_t i = 0; - while (value != flag) { - host_thread_yield(++i, WaitMode::PASSIVE); - } - Kokkos::load_fence(); -} - -} /* namespace Impl */ -} /* namespace Kokkos */ - -#endif /* #ifndef KOKKOS_SPINWAIT_HPP */ diff --git a/lib/kokkos/core/src/impl/Kokkos_Utilities.hpp b/lib/kokkos/core/src/impl/Kokkos_Utilities.hpp index 7e2f130564f..cadeed1a6d8 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Utilities.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Utilities.hpp @@ -49,6 +49,11 @@ struct integral_constant { template struct always_true : std::true_type {}; +// type-dependent expression that is always false intended for use in +// static_assert to check "we should never get there" +template +struct always_false : std::false_type {}; + //============================================================================== #if defined(__cpp_lib_type_identity) diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp index 725ba5de092..fe43b630184 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp @@ -27,10 +27,9 @@ struct ViewDataAnalysis> { private: using array_analysis = ViewArrayAnalysis; - static_assert(std::is_void

::value, ""); + static_assert(std::is_void

::value); static_assert(std::is_same>::value, - ""); + Kokkos::Array>::value); static_assert(std::is_scalar::value, "View of Array type must be of a scalar type"); @@ -130,6 +129,12 @@ class ViewMapping> { return m_impl_offset.m_dim.extent(r); } + static KOKKOS_INLINE_FUNCTION constexpr size_t static_extent( + const unsigned r) noexcept { + using dim_type = typename offset_type::dimension_type; + return dim_type::static_extent(r); + } + KOKKOS_INLINE_FUNCTION constexpr typename Traits::array_layout layout() const { return m_impl_offset.layout(); @@ -507,7 +512,7 @@ class ViewMapping< Kokkos::LayoutStride>::value))>, SrcTraits, Args...> { private: - static_assert(SrcTraits::rank == sizeof...(Args), ""); + static_assert(SrcTraits::rank == sizeof...(Args)); enum : bool { R0 = is_integral_extent<0, Args...>::value, diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewDataAnalysis.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewDataAnalysis.hpp new file mode 100644 index 00000000000..04c0c9aeede --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_ViewDataAnalysis.hpp @@ -0,0 +1,402 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE +static_assert(false, + "Including non-public Kokkos header files is not allowed."); +#endif + +#ifndef KOKKOS_VIEW_DATA_ANALYSIS_HPP +#define KOKKOS_VIEW_DATA_ANALYSIS_HPP + +#include + +namespace Kokkos::Impl { + +template +struct variadic_size_t { + enum : size_t { value = KOKKOS_INVALID_INDEX }; +}; + +template +struct variadic_size_t<0, Val, Args...> { + enum : size_t { value = Val }; +}; + +template +struct variadic_size_t { + enum : size_t { value = variadic_size_t::value }; +}; + +template +struct rank_dynamic; + +template <> +struct rank_dynamic<> { + enum : unsigned { value = 0 }; +}; + +template +struct rank_dynamic { + enum : unsigned { value = (Val == 0 ? 1 : 0) + rank_dynamic::value }; +}; + +#define KOKKOS_IMPL_VIEW_DIMENSION(R) \ + template \ + struct ViewDimension##R { \ + static constexpr size_t ArgN##R = (V != KOKKOS_INVALID_INDEX ? V : 1); \ + static constexpr size_t N##R = (V != KOKKOS_INVALID_INDEX ? V : 1); \ + KOKKOS_INLINE_FUNCTION explicit ViewDimension##R(size_t) {} \ + ViewDimension##R() = default; \ + ViewDimension##R(const ViewDimension##R&) = default; \ + ViewDimension##R& operator=(const ViewDimension##R&) = default; \ + }; \ + template \ + constexpr size_t ViewDimension##R::ArgN##R; \ + template \ + constexpr size_t ViewDimension##R::N##R; \ + template \ + struct ViewDimension##R<0u, RD> { \ + static constexpr size_t ArgN##R = 0; \ + std::conditional_t<(RD < 3), size_t, unsigned> N##R; \ + ViewDimension##R() = default; \ + ViewDimension##R(const ViewDimension##R&) = default; \ + ViewDimension##R& operator=(const ViewDimension##R&) = default; \ + KOKKOS_INLINE_FUNCTION explicit ViewDimension##R(size_t V) : N##R(V) {} \ + }; \ + template \ + constexpr size_t ViewDimension##R<0u, RD>::ArgN##R; + +KOKKOS_IMPL_VIEW_DIMENSION(0) +KOKKOS_IMPL_VIEW_DIMENSION(1) +KOKKOS_IMPL_VIEW_DIMENSION(2) +KOKKOS_IMPL_VIEW_DIMENSION(3) +KOKKOS_IMPL_VIEW_DIMENSION(4) +KOKKOS_IMPL_VIEW_DIMENSION(5) +KOKKOS_IMPL_VIEW_DIMENSION(6) +KOKKOS_IMPL_VIEW_DIMENSION(7) + +#undef KOKKOS_IMPL_VIEW_DIMENSION + +// MSVC does not do empty base class optimization by default. +// Per standard it is required for standard layout types +template +struct KOKKOS_IMPL_ENFORCE_EMPTY_BASE_OPTIMIZATION ViewDimension + : public ViewDimension0::value, + rank_dynamic::value>, + public ViewDimension1::value, + rank_dynamic::value>, + public ViewDimension2::value, + rank_dynamic::value>, + public ViewDimension3::value, + rank_dynamic::value>, + public ViewDimension4::value, + rank_dynamic::value>, + public ViewDimension5::value, + rank_dynamic::value>, + public ViewDimension6::value, + rank_dynamic::value>, + public ViewDimension7::value, + rank_dynamic::value> { + using D0 = ViewDimension0::value, + rank_dynamic::value>; + using D1 = ViewDimension1::value, + rank_dynamic::value>; + using D2 = ViewDimension2::value, + rank_dynamic::value>; + using D3 = ViewDimension3::value, + rank_dynamic::value>; + using D4 = ViewDimension4::value, + rank_dynamic::value>; + using D5 = ViewDimension5::value, + rank_dynamic::value>; + using D6 = ViewDimension6::value, + rank_dynamic::value>; + using D7 = ViewDimension7::value, + rank_dynamic::value>; + + using D0::ArgN0; + using D1::ArgN1; + using D2::ArgN2; + using D3::ArgN3; + using D4::ArgN4; + using D5::ArgN5; + using D6::ArgN6; + using D7::ArgN7; + + using D0::N0; + using D1::N1; + using D2::N2; + using D3::N3; + using D4::N4; + using D5::N5; + using D6::N6; + using D7::N7; + + static constexpr unsigned rank = sizeof...(Vals); + static constexpr unsigned rank_dynamic = Impl::rank_dynamic::value; + + ViewDimension() = default; + ViewDimension(const ViewDimension&) = default; + ViewDimension& operator=(const ViewDimension&) = default; + + KOKKOS_INLINE_FUNCTION + constexpr ViewDimension(size_t n0, size_t n1, size_t n2, size_t n3, size_t n4, + size_t n5, size_t n6, size_t n7) + : D0(n0 == KOKKOS_INVALID_INDEX ? 1 : n0), + D1(n1 == KOKKOS_INVALID_INDEX ? 1 : n1), + D2(n2 == KOKKOS_INVALID_INDEX ? 1 : n2), + D3(n3 == KOKKOS_INVALID_INDEX ? 1 : n3), + D4(n4 == KOKKOS_INVALID_INDEX ? 1 : n4), + D5(n5 == KOKKOS_INVALID_INDEX ? 1 : n5), + D6(n6 == KOKKOS_INVALID_INDEX ? 1 : n6), + D7(n7 == KOKKOS_INVALID_INDEX ? 1 : n7) {} + + KOKKOS_INLINE_FUNCTION + constexpr size_t extent(const unsigned r) const noexcept { + return r == 0 + ? N0 + : (r == 1 + ? N1 + : (r == 2 + ? N2 + : (r == 3 + ? N3 + : (r == 4 + ? N4 + : (r == 5 + ? N5 + : (r == 6 + ? N6 + : (r == 7 ? N7 + : 0))))))); + } + + static KOKKOS_INLINE_FUNCTION constexpr size_t static_extent( + const unsigned r) noexcept { + return r == 0 + ? ArgN0 + : (r == 1 + ? ArgN1 + : (r == 2 + ? ArgN2 + : (r == 3 + ? ArgN3 + : (r == 4 + ? ArgN4 + : (r == 5 + ? ArgN5 + : (r == 6 + ? ArgN6 + : (r == 7 ? ArgN7 + : 0))))))); + } + + template + struct prepend { + using type = ViewDimension; + }; + + template + struct append { + using type = ViewDimension; + }; +}; + +template +struct ViewDimensionJoin; + +template +struct ViewDimensionJoin, ViewDimension> { + using type = ViewDimension; +}; + +//---------------------------------------------------------------------------- + +template +struct ViewDimensionAssignable; + +template +struct ViewDimensionAssignable, + ViewDimension> { + using dst = ViewDimension; + using src = ViewDimension; + + enum { + value = unsigned(dst::rank) == unsigned(src::rank) && + ( + // Compile time check that potential static dimensions match + ((1 > dst::rank_dynamic && 1 > src::rank_dynamic) + ? (size_t(dst::ArgN0) == size_t(src::ArgN0)) + : true) && + ((2 > dst::rank_dynamic && 2 > src::rank_dynamic) + ? (size_t(dst::ArgN1) == size_t(src::ArgN1)) + : true) && + ((3 > dst::rank_dynamic && 3 > src::rank_dynamic) + ? (size_t(dst::ArgN2) == size_t(src::ArgN2)) + : true) && + ((4 > dst::rank_dynamic && 4 > src::rank_dynamic) + ? (size_t(dst::ArgN3) == size_t(src::ArgN3)) + : true) && + ((5 > dst::rank_dynamic && 5 > src::rank_dynamic) + ? (size_t(dst::ArgN4) == size_t(src::ArgN4)) + : true) && + ((6 > dst::rank_dynamic && 6 > src::rank_dynamic) + ? (size_t(dst::ArgN5) == size_t(src::ArgN5)) + : true) && + ((7 > dst::rank_dynamic && 7 > src::rank_dynamic) + ? (size_t(dst::ArgN6) == size_t(src::ArgN6)) + : true) && + ((8 > dst::rank_dynamic && 8 > src::rank_dynamic) + ? (size_t(dst::ArgN7) == size_t(src::ArgN7)) + : true)) + }; +}; + +/** \brief Given a value type and dimension generate the View data type */ +template +struct ViewDataType; + +template +struct ViewDataType> { + using type = T; +}; + +template +struct ViewDataType> { + using type = typename ViewDataType>::type; +}; + +template +struct ViewDataType> { + using type = typename ViewDataType>::type[N]; +}; + +/**\brief Analysis of View data type. + * + * Data type conforms to one of the following patterns : + * {const} value_type [][#][#][#] + * {const} value_type ***[#][#][#] + * Where the sum of counts of '*' and '[#]' is at most ten. + * + * Provide alias for ViewDimension<...> and value_type. + */ +template +struct ViewArrayAnalysis { + using value_type = T; + using const_value_type = std::add_const_t; + using non_const_value_type = std::remove_const_t; + using static_dimension = ViewDimension<>; + using dynamic_dimension = ViewDimension<>; + using dimension = ViewDimension<>; +}; + +template +struct ViewArrayAnalysis { + private: + using nested = ViewArrayAnalysis; + + public: + using value_type = typename nested::value_type; + using const_value_type = typename nested::const_value_type; + using non_const_value_type = typename nested::non_const_value_type; + + using static_dimension = + typename nested::static_dimension::template prepend::type; + + using dynamic_dimension = typename nested::dynamic_dimension; + + using dimension = + typename ViewDimensionJoin::type; +}; + +template +struct ViewArrayAnalysis { + private: + using nested = ViewArrayAnalysis; + using nested_dimension = typename nested::dimension; + + public: + using value_type = typename nested::value_type; + using const_value_type = typename nested::const_value_type; + using non_const_value_type = typename nested::non_const_value_type; + + using dynamic_dimension = + typename nested::dynamic_dimension::template prepend<0>::type; + + using static_dimension = typename nested::static_dimension; + + using dimension = + typename ViewDimensionJoin::type; +}; + +template +struct ViewArrayAnalysis { + private: + using nested = ViewArrayAnalysis; + + public: + using value_type = typename nested::value_type; + using const_value_type = typename nested::const_value_type; + using non_const_value_type = typename nested::non_const_value_type; + + using dynamic_dimension = + typename nested::dynamic_dimension::template prepend<0>::type; + + using static_dimension = typename nested::static_dimension; + + using dimension = + typename ViewDimensionJoin::type; +}; + +template +struct ViewDataAnalysis { + private: + using array_analysis = ViewArrayAnalysis; + + // ValueType is opportunity for partial specialization. + // Must match array analysis when this default template is used. + static_assert( + std::is_same::value); + + public: + using specialize = void; // No specialization + + using dimension = typename array_analysis::dimension; + using value_type = typename array_analysis::value_type; + using const_value_type = typename array_analysis::const_value_type; + using non_const_value_type = typename array_analysis::non_const_value_type; + + // Generate analogous multidimensional array specification type. + using type = typename ViewDataType::type; + using const_type = typename ViewDataType::type; + using non_const_type = + typename ViewDataType::type; + + // Generate "flattened" multidimensional array specification type. + using scalar_array_type = type; + using const_scalar_array_type = const_type; + using non_const_scalar_array_type = non_const_type; +}; + +template +struct ViewOffset { + using is_mapping_plugin = std::false_type; +}; +} // namespace Kokkos::Impl + +#endif // KOKKOS_VIEW_DATA_ANALYSIS_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index 01d0dc4f681..3217c76e380 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -33,255 +33,7 @@ #include #include #include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template -struct variadic_size_t { - enum : size_t { value = KOKKOS_INVALID_INDEX }; -}; - -template -struct variadic_size_t<0, Val, Args...> { - enum : size_t { value = Val }; -}; - -template -struct variadic_size_t { - enum : size_t { value = variadic_size_t::value }; -}; - -template -struct rank_dynamic; - -template <> -struct rank_dynamic<> { - enum : unsigned { value = 0 }; -}; - -template -struct rank_dynamic { - enum : unsigned { value = (Val == 0 ? 1 : 0) + rank_dynamic::value }; -}; - -#define KOKKOS_IMPL_VIEW_DIMENSION(R) \ - template \ - struct ViewDimension##R { \ - static constexpr size_t ArgN##R = (V != KOKKOS_INVALID_INDEX ? V : 1); \ - static constexpr size_t N##R = (V != KOKKOS_INVALID_INDEX ? V : 1); \ - KOKKOS_INLINE_FUNCTION explicit ViewDimension##R(size_t) {} \ - ViewDimension##R() = default; \ - ViewDimension##R(const ViewDimension##R&) = default; \ - ViewDimension##R& operator=(const ViewDimension##R&) = default; \ - }; \ - template \ - constexpr size_t ViewDimension##R::ArgN##R; \ - template \ - constexpr size_t ViewDimension##R::N##R; \ - template \ - struct ViewDimension##R<0u, RD> { \ - static constexpr size_t ArgN##R = 0; \ - std::conditional_t<(RD < 3), size_t, unsigned> N##R; \ - ViewDimension##R() = default; \ - ViewDimension##R(const ViewDimension##R&) = default; \ - ViewDimension##R& operator=(const ViewDimension##R&) = default; \ - KOKKOS_INLINE_FUNCTION explicit ViewDimension##R(size_t V) : N##R(V) {} \ - }; \ - template \ - constexpr size_t ViewDimension##R<0u, RD>::ArgN##R; - -KOKKOS_IMPL_VIEW_DIMENSION(0) -KOKKOS_IMPL_VIEW_DIMENSION(1) -KOKKOS_IMPL_VIEW_DIMENSION(2) -KOKKOS_IMPL_VIEW_DIMENSION(3) -KOKKOS_IMPL_VIEW_DIMENSION(4) -KOKKOS_IMPL_VIEW_DIMENSION(5) -KOKKOS_IMPL_VIEW_DIMENSION(6) -KOKKOS_IMPL_VIEW_DIMENSION(7) - -#undef KOKKOS_IMPL_VIEW_DIMENSION - -// MSVC does not do empty base class optimization by default. -// Per standard it is required for standard layout types -template -struct KOKKOS_IMPL_ENFORCE_EMPTY_BASE_OPTIMIZATION ViewDimension - : public ViewDimension0::value, - rank_dynamic::value>, - public ViewDimension1::value, - rank_dynamic::value>, - public ViewDimension2::value, - rank_dynamic::value>, - public ViewDimension3::value, - rank_dynamic::value>, - public ViewDimension4::value, - rank_dynamic::value>, - public ViewDimension5::value, - rank_dynamic::value>, - public ViewDimension6::value, - rank_dynamic::value>, - public ViewDimension7::value, - rank_dynamic::value> { - using D0 = ViewDimension0::value, - rank_dynamic::value>; - using D1 = ViewDimension1::value, - rank_dynamic::value>; - using D2 = ViewDimension2::value, - rank_dynamic::value>; - using D3 = ViewDimension3::value, - rank_dynamic::value>; - using D4 = ViewDimension4::value, - rank_dynamic::value>; - using D5 = ViewDimension5::value, - rank_dynamic::value>; - using D6 = ViewDimension6::value, - rank_dynamic::value>; - using D7 = ViewDimension7::value, - rank_dynamic::value>; - - using D0::ArgN0; - using D1::ArgN1; - using D2::ArgN2; - using D3::ArgN3; - using D4::ArgN4; - using D5::ArgN5; - using D6::ArgN6; - using D7::ArgN7; - - using D0::N0; - using D1::N1; - using D2::N2; - using D3::N3; - using D4::N4; - using D5::N5; - using D6::N6; - using D7::N7; - - static constexpr unsigned rank = sizeof...(Vals); - static constexpr unsigned rank_dynamic = Impl::rank_dynamic::value; - - ViewDimension() = default; - ViewDimension(const ViewDimension&) = default; - ViewDimension& operator=(const ViewDimension&) = default; - - KOKKOS_INLINE_FUNCTION - constexpr ViewDimension(size_t n0, size_t n1, size_t n2, size_t n3, size_t n4, - size_t n5, size_t n6, size_t n7) - : D0(n0 == KOKKOS_INVALID_INDEX ? 1 : n0), - D1(n1 == KOKKOS_INVALID_INDEX ? 1 : n1), - D2(n2 == KOKKOS_INVALID_INDEX ? 1 : n2), - D3(n3 == KOKKOS_INVALID_INDEX ? 1 : n3), - D4(n4 == KOKKOS_INVALID_INDEX ? 1 : n4), - D5(n5 == KOKKOS_INVALID_INDEX ? 1 : n5), - D6(n6 == KOKKOS_INVALID_INDEX ? 1 : n6), - D7(n7 == KOKKOS_INVALID_INDEX ? 1 : n7) {} - - KOKKOS_INLINE_FUNCTION - constexpr size_t extent(const unsigned r) const noexcept { - return r == 0 - ? N0 - : (r == 1 - ? N1 - : (r == 2 - ? N2 - : (r == 3 - ? N3 - : (r == 4 - ? N4 - : (r == 5 - ? N5 - : (r == 6 - ? N6 - : (r == 7 ? N7 - : 0))))))); - } - - static KOKKOS_INLINE_FUNCTION constexpr size_t static_extent( - const unsigned r) noexcept { - return r == 0 - ? ArgN0 - : (r == 1 - ? ArgN1 - : (r == 2 - ? ArgN2 - : (r == 3 - ? ArgN3 - : (r == 4 - ? ArgN4 - : (r == 5 - ? ArgN5 - : (r == 6 - ? ArgN6 - : (r == 7 ? ArgN7 - : 0))))))); - } - - template - struct prepend { - using type = ViewDimension; - }; - - template - struct append { - using type = ViewDimension; - }; -}; - -template -struct ViewDimensionJoin; - -template -struct ViewDimensionJoin, ViewDimension> { - using type = ViewDimension; -}; - -//---------------------------------------------------------------------------- - -template -struct ViewDimensionAssignable; - -template -struct ViewDimensionAssignable, - ViewDimension> { - using dst = ViewDimension; - using src = ViewDimension; - - enum { - value = unsigned(dst::rank) == unsigned(src::rank) && - ( - // Compile time check that potential static dimensions match - ((1 > dst::rank_dynamic && 1 > src::rank_dynamic) - ? (size_t(dst::ArgN0) == size_t(src::ArgN0)) - : true) && - ((2 > dst::rank_dynamic && 2 > src::rank_dynamic) - ? (size_t(dst::ArgN1) == size_t(src::ArgN1)) - : true) && - ((3 > dst::rank_dynamic && 3 > src::rank_dynamic) - ? (size_t(dst::ArgN2) == size_t(src::ArgN2)) - : true) && - ((4 > dst::rank_dynamic && 4 > src::rank_dynamic) - ? (size_t(dst::ArgN3) == size_t(src::ArgN3)) - : true) && - ((5 > dst::rank_dynamic && 5 > src::rank_dynamic) - ? (size_t(dst::ArgN4) == size_t(src::ArgN4)) - : true) && - ((6 > dst::rank_dynamic && 6 > src::rank_dynamic) - ? (size_t(dst::ArgN5) == size_t(src::ArgN5)) - : true) && - ((7 > dst::rank_dynamic && 7 > src::rank_dynamic) - ? (size_t(dst::ArgN6) == size_t(src::ArgN6)) - : true) && - ((8 > dst::rank_dynamic && 8 > src::rank_dynamic) - ? (size_t(dst::ArgN7) == size_t(src::ArgN7)) - : true)) - }; -}; - -} // namespace Impl -} // namespace Kokkos +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -657,21 +409,20 @@ struct SubviewExtents { template KOKKOS_INLINE_FUNCTION SubviewExtents(const ViewDimension& dim, Args... args) { - static_assert(DomainRank == sizeof...(DimArgs), ""); - static_assert(DomainRank == sizeof...(Args), ""); + static_assert(DomainRank == sizeof...(DimArgs)); + static_assert(DomainRank == sizeof...(Args)); // Verifies that all arguments, up to 8, are integral types, // integral extents, or don't exist. - static_assert( - RangeRank == unsigned(is_integral_extent<0, Args...>::value) + - unsigned(is_integral_extent<1, Args...>::value) + - unsigned(is_integral_extent<2, Args...>::value) + - unsigned(is_integral_extent<3, Args...>::value) + - unsigned(is_integral_extent<4, Args...>::value) + - unsigned(is_integral_extent<5, Args...>::value) + - unsigned(is_integral_extent<6, Args...>::value) + - unsigned(is_integral_extent<7, Args...>::value), - ""); + static_assert(RangeRank == + unsigned(is_integral_extent<0, Args...>::value) + + unsigned(is_integral_extent<1, Args...>::value) + + unsigned(is_integral_extent<2, Args...>::value) + + unsigned(is_integral_extent<3, Args...>::value) + + unsigned(is_integral_extent<4, Args...>::value) + + unsigned(is_integral_extent<5, Args...>::value) + + unsigned(is_integral_extent<6, Args...>::value) + + unsigned(is_integral_extent<7, Args...>::value)); if (RangeRank == 0) { m_length[0] = 0; @@ -708,149 +459,6 @@ struct SubviewExtents { namespace Kokkos { namespace Impl { - -/** \brief Given a value type and dimension generate the View data type */ -template -struct ViewDataType; - -template -struct ViewDataType> { - using type = T; -}; - -template -struct ViewDataType> { - using type = typename ViewDataType>::type; -}; - -template -struct ViewDataType> { - using type = typename ViewDataType>::type[N]; -}; - -/**\brief Analysis of View data type. - * - * Data type conforms to one of the following patterns : - * {const} value_type [][#][#][#] - * {const} value_type ***[#][#][#] - * Where the sum of counts of '*' and '[#]' is at most ten. - * - * Provide alias for ViewDimension<...> and value_type. - */ -template -struct ViewArrayAnalysis { - using value_type = T; - using const_value_type = std::add_const_t; - using non_const_value_type = std::remove_const_t; - using static_dimension = ViewDimension<>; - using dynamic_dimension = ViewDimension<>; - using dimension = ViewDimension<>; -}; - -template -struct ViewArrayAnalysis { - private: - using nested = ViewArrayAnalysis; - - public: - using value_type = typename nested::value_type; - using const_value_type = typename nested::const_value_type; - using non_const_value_type = typename nested::non_const_value_type; - - using static_dimension = - typename nested::static_dimension::template prepend::type; - - using dynamic_dimension = typename nested::dynamic_dimension; - - using dimension = - typename ViewDimensionJoin::type; -}; - -template -struct ViewArrayAnalysis { - private: - using nested = ViewArrayAnalysis; - using nested_dimension = typename nested::dimension; - - public: - using value_type = typename nested::value_type; - using const_value_type = typename nested::const_value_type; - using non_const_value_type = typename nested::non_const_value_type; - - using dynamic_dimension = - typename nested::dynamic_dimension::template prepend<0>::type; - - using static_dimension = typename nested::static_dimension; - - using dimension = - typename ViewDimensionJoin::type; -}; - -template -struct ViewArrayAnalysis { - private: - using nested = ViewArrayAnalysis; - - public: - using value_type = typename nested::value_type; - using const_value_type = typename nested::const_value_type; - using non_const_value_type = typename nested::non_const_value_type; - - using dynamic_dimension = - typename nested::dynamic_dimension::template prepend<0>::type; - - using static_dimension = typename nested::static_dimension; - - using dimension = - typename ViewDimensionJoin::type; -}; - -template -struct ViewDataAnalysis { - private: - using array_analysis = ViewArrayAnalysis; - - // ValueType is opportunity for partial specialization. - // Must match array analysis when this default template is used. - static_assert( - std::is_same::value, - ""); - - public: - using specialize = void; // No specialization - - using dimension = typename array_analysis::dimension; - using value_type = typename array_analysis::value_type; - using const_value_type = typename array_analysis::const_value_type; - using non_const_value_type = typename array_analysis::non_const_value_type; - - // Generate analogous multidimensional array specification type. - using type = typename ViewDataType::type; - using const_type = typename ViewDataType::type; - using non_const_type = - typename ViewDataType::type; - - // Generate "flattened" multidimensional array specification type. - using scalar_array_type = type; - using const_scalar_array_type = const_type; - using non_const_scalar_array_type = non_const_type; -}; - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template -struct ViewOffset { - using is_mapping_plugin = std::false_type; -}; - //---------------------------------------------------------------------------- // LayoutLeft AND ( 1 >= rank OR 0 == rank_dynamic ) : no padding / striding template @@ -2919,13 +2527,9 @@ struct ViewValueFunctor { "Kokkos::View::initialization [" + name + "] via memset", Kokkos::Profiling::Experimental::device_id(space), &kpID); } - (void)ZeroMemset< - ExecSpace, Kokkos::View>>( - space, - Kokkos::View>(ptr, n), - value); + (void)ZeroMemset( + space, Kokkos::View>(ptr, n)); if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endParallelFor(kpID); @@ -2949,37 +2553,33 @@ struct ViewValueFunctor { template void parallel_for_implementation() { - if (!space.in_parallel()) { - using PolicyType = - Kokkos::RangePolicy, Tag>; - PolicyType policy(space, 0, n); - uint64_t kpID = 0; - if (Kokkos::Profiling::profileLibraryLoaded()) { - const std::string functor_name = - (std::is_same_v - ? "Kokkos::View::destruction [" + name + "]" - : "Kokkos::View::initialization [" + name + "]"); - Kokkos::Profiling::beginParallelFor( - functor_name, Kokkos::Profiling::Experimental::device_id(space), - &kpID); - } + using PolicyType = + Kokkos::RangePolicy, Tag>; + PolicyType policy(space, 0, n); + uint64_t kpID = 0; + if (Kokkos::Profiling::profileLibraryLoaded()) { + const std::string functor_name = + (std::is_same_v + ? "Kokkos::View::destruction [" + name + "]" + : "Kokkos::View::initialization [" + name + "]"); + Kokkos::Profiling::beginParallelFor( + functor_name, Kokkos::Profiling::Experimental::device_id(space), + &kpID); + } #ifdef KOKKOS_ENABLE_CUDA - if (std::is_same::value) { - Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, - true); - } + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif - const Kokkos::Impl::ParallelFor closure( - *this, policy); - closure.execute(); - if (default_exec_space || std::is_same_v) - space.fence("Kokkos::Impl::ViewValueFunctor: View init/destroy fence"); - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::endParallelFor(kpID); - } - } else { - for (size_t i = 0; i < n; ++i) operator()(Tag{}, i); + const Kokkos::Impl::ParallelFor closure( + *this, policy); + closure.execute(); + if (default_exec_space || std::is_same_v) + space.fence("Kokkos::Impl::ViewValueFunctor: View init/destroy fence"); + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::endParallelFor(kpID); } } @@ -3057,13 +2657,9 @@ struct ViewValueFunctor { Kokkos::Profiling::Experimental::device_id(space), &kpID); } - (void)ZeroMemset< - ExecSpace, Kokkos::View>>( - space, - Kokkos::View>(ptr, n), - value); + (void)ZeroMemset( + space, Kokkos::View>(ptr, n)); if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endParallelFor(kpID); @@ -3086,32 +2682,28 @@ struct ViewValueFunctor { } void parallel_for_implementation() { - if (!space.in_parallel()) { - PolicyType policy(0, n); - uint64_t kpID = 0; - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::beginParallelFor( - "Kokkos::View::initialization [" + name + "]", - Kokkos::Profiling::Experimental::device_id(space), &kpID); - } + PolicyType policy(0, n); + uint64_t kpID = 0; + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::beginParallelFor( + "Kokkos::View::initialization [" + name + "]", + Kokkos::Profiling::Experimental::device_id(space), &kpID); + } #ifdef KOKKOS_ENABLE_CUDA - if (std::is_same::value) { - Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, - true); - } + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif - const Kokkos::Impl::ParallelFor closure( - *this, PolicyType(0, n)); - closure.execute(); - if (default_exec_space) - space.fence( - "Kokkos::Impl::ViewValueFunctor: Fence after setting values in " - "view"); - if (Kokkos::Profiling::profileLibraryLoaded()) { - Kokkos::Profiling::endParallelFor(kpID); - } - } else { - for (size_t i = 0; i < n; ++i) operator()(i); + const Kokkos::Impl::ParallelFor closure( + *this, PolicyType(0, n)); + closure.execute(); + if (default_exec_space) + space.fence( + "Kokkos::Impl::ViewValueFunctor: Fence after setting values in " + "view"); + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::endParallelFor(kpID); } } @@ -3896,7 +3488,7 @@ class ViewMapping< template struct apply { - static_assert(Kokkos::is_memory_traits::value, ""); + static_assert(Kokkos::is_memory_traits::value); using traits_type = Kokkos::ViewTraits -KOKKOS_INLINE_FUNCTION bool view_verify_operator_bounds(const MapType&) { - return true; +template +KOKKOS_FUNCTION bool within_range(Map const& map, + std::index_sequence, + Indices... indices) { + return (((std::size_t)indices < map.extent(Enumerate)) && ...); } -template -KOKKOS_INLINE_FUNCTION bool view_verify_operator_bounds(const MapType& map, - const iType& i, - Args... args) { - return (size_t(i) < map.extent(R)) && - view_verify_operator_bounds(map, args...); +template +KOKKOS_FUNCTION constexpr char* append_formatted_multidimensional_index( + char* dest, Indices... indices) { + char* d = dest; + strcat(d, "["); + ( + [&] { + d += strlen(d); + to_chars_i(d, + d + 20, // 20 digits ought to be enough + indices); + strcat(d, ","); + }(), + ...); + d[strlen(d) - 1] = ']'; // overwrite trailing comma + return dest; } -template -inline void view_error_operator_bounds(char*, int, const MapType&) {} - -template -inline void view_error_operator_bounds(char* buf, int len, const MapType& map, - const iType& i, Args... args) { - const int n = snprintf( - buf, len, " %ld < %ld %c", static_cast(i), - static_cast(map.extent(R)), (sizeof...(Args) ? ',' : ')')); - view_error_operator_bounds(buf + n, len - n, map, args...); +template +KOKKOS_FUNCTION void print_extents(char* dest, Map const& map, + std::index_sequence) { + append_formatted_multidimensional_index(dest, map.extent(Enumerate)...); } -/* Check #3: is the View managed as determined by the MemoryTraits? */ -template -struct OperatorBoundsErrorOnDevice; - -template -struct OperatorBoundsErrorOnDevice { - KOKKOS_INLINE_FUNCTION - static void run(MapType const&) { Kokkos::abort("View bounds error"); } -}; - -template -struct OperatorBoundsErrorOnDevice { - KOKKOS_INLINE_FUNCTION - static void run(MapType const& map) { - SharedAllocationHeader const* const header = - SharedAllocationHeader::get_header( - static_cast(map.data())); - char const* const label = header->label(); - enum { LEN = 128 }; - char msg[LEN]; - char const* const first_part = "View bounds error of view "; - char* p = msg; - char* const end = msg + LEN - 1; - for (char const* p2 = first_part; (*p2 != '\0') && (p < end); ++p, ++p2) { - *p = *p2; - } - for (char const* p2 = label; (*p2 != '\0') && (p < end); ++p, ++p2) { - *p = *p2; - } - *p = '\0'; - Kokkos::abort(msg); - } -}; - -/* Check #2: does the ViewMapping have the printable_label_typedef defined? - See above that only the non-specialized standard-layout ViewMapping has - this defined by default. - The existence of this alias indicates the existence of MapType::is_managed - */ template using printable_label_typedef_t = typename T::printable_label_typedef; -template -KOKKOS_FUNCTION - std::enable_if_t::value> - operator_bounds_error_on_device(Map const&) { - Kokkos::abort("View bounds error"); -} - -template -KOKKOS_FUNCTION - std::enable_if_t::value> - operator_bounds_error_on_device(Map const& map) { - OperatorBoundsErrorOnDevice::run(map); -} - template KOKKOS_INLINE_FUNCTION void view_verify_operator_bounds( Kokkos::Impl::ViewTracker const& tracker, const MapType& map, Args... args) { - if (!view_verify_operator_bounds<0>(map, args...)) { + if (!within_range(map, std::make_index_sequence(), + args...)) { + char err[256] = ""; + strcat(err, "Kokkos::View ERROR: out of bounds access"); + strcat(err, " label=(\""); KOKKOS_IF_ON_HOST( - (enum {LEN = 1024}; char buffer[LEN]; - const std::string label = - tracker.m_tracker.template get_label(); - int n = snprintf(buffer, LEN, "View bounds error of view %s (", - label.c_str()); - view_error_operator_bounds<0>(buffer + n, LEN - n, map, args...); - Kokkos::Impl::throw_runtime_exception(std::string(buffer));)) - - KOKKOS_IF_ON_DEVICE(( - /* Check #1: is there a SharedAllocationRecord? - (we won't use it, but if its not there then there isn't - a corresponding SharedAllocationHeader containing a label). - This check should cover the case of Views that don't - have the Unmanaged trait but were initialized by pointer. */ if (tracker.m_tracker.has_record()) { - operator_bounds_error_on_device(map); - } else { Kokkos::abort("View bounds error"); })) + strncat(err, tracker.m_tracker.template get_label().c_str(), + 128); + } else { strcat(err, "**UNMANAGED**"); }) + KOKKOS_IF_ON_DEVICE([&] { + // Check #1: is there a SharedAllocationRecord? (we won't use it, but + // if its not there then there isn't a corresponding + // SharedAllocationHeader containing a label). This check should cover + // the case of Views that don't have the Unmanaged trait but were + // initialized by pointer. + if (!tracker.m_tracker.has_record()) { + strcat(err, "**UNMANAGED**"); + return; + } + // Check #2: does the ViewMapping have the printable_label_typedef + // defined? See above that only the non-specialized standard-layout + // ViewMapping has this defined by default. The existence of this + // alias indicates the existence of MapType::is_managed + if constexpr (is_detected_v) { + // Check #3: is the View managed as determined by the MemoryTraits? + if constexpr (MapType::is_managed != 0) { + SharedAllocationHeader const* const header = + SharedAllocationHeader::get_header( + static_cast(map.data())); + char const* const label = header->label(); + strcat(err, label); + return; + } + strcat(err, "**UNAVAILABLE**"); + } + }();) + strcat(err, "\") with indices "); + append_formatted_multidimensional_index(err, args...); + strcat(err, " but extents "); + print_extents(err, map, std::make_index_sequence()); + Kokkos::abort(err); } } diff --git a/lib/kokkos/core/src/setup/Kokkos_Setup_SYCL.hpp b/lib/kokkos/core/src/setup/Kokkos_Setup_SYCL.hpp index 7f7957bc61f..30f6fa2ad23 100644 --- a/lib/kokkos/core/src/setup/Kokkos_Setup_SYCL.hpp +++ b/lib/kokkos/core/src/setup/Kokkos_Setup_SYCL.hpp @@ -38,12 +38,11 @@ #include #endif -#ifdef __SYCL_DEVICE_ONLY__ -#define KOKKOS_IMPL_DO_NOT_USE_PRINTF(format, ...) \ - do { \ - const __attribute__((opencl_constant)) char fmt[] = (format); \ - sycl::ext::oneapi::experimental::printf(fmt, ##__VA_ARGS__); \ - } while (0) +#if defined(__INTEL_LLVM_COMPILER) && __INTEL_LLVM_COMPILER >= 20230200 +#define KOKKOS_IMPL_SYCL_GET_MULTI_PTR(accessor) \ + accessor.get_multi_ptr() +#else +#define KOKKOS_IMPL_SYCL_GET_MULTI_PTR(accessor) accessor.get_pointer() #endif #endif diff --git a/lib/kokkos/core/src/traits/Kokkos_IndexTypeTrait.hpp b/lib/kokkos/core/src/traits/Kokkos_IndexTypeTrait.hpp index 91820fbccac..e43535451c3 100644 --- a/lib/kokkos/core/src/traits/Kokkos_IndexTypeTrait.hpp +++ b/lib/kokkos/core/src/traits/Kokkos_IndexTypeTrait.hpp @@ -83,7 +83,7 @@ struct IndexTypePolicyMixin : AnalyzeNextTrait { "Kokkos Error: More than one index type given. Search " "compiler output for 'show_extra_index_type' to see the " "type of the errant tag."); - static_assert(std::is_integral::value, ""); + static_assert(std::is_integral::value); static constexpr bool index_type_is_defaulted = false; using index_type = Kokkos::IndexType; }; diff --git a/lib/kokkos/core/src/traits/Kokkos_OccupancyControlTrait.hpp b/lib/kokkos/core/src/traits/Kokkos_OccupancyControlTrait.hpp index dadf582c372..c2ca5a341f1 100644 --- a/lib/kokkos/core/src/traits/Kokkos_OccupancyControlTrait.hpp +++ b/lib/kokkos/core/src/traits/Kokkos_OccupancyControlTrait.hpp @@ -163,7 +163,7 @@ auto prefer(Policy const& p, DesiredOccupancy occ) { template constexpr auto prefer(Policy const& p, MaximizeOccupancy) { - static_assert(Kokkos::is_execution_policy::value, ""); + static_assert(Kokkos::is_execution_policy::value); using new_policy_t = Kokkos::Impl::OccupancyControlTrait::policy_with_trait; diff --git a/lib/kokkos/core/src/traits/Kokkos_PolicyTraitAdaptor.hpp b/lib/kokkos/core/src/traits/Kokkos_PolicyTraitAdaptor.hpp index 578e9e762ad..98ad1d7ebbb 100644 --- a/lib/kokkos/core/src/traits/Kokkos_PolicyTraitAdaptor.hpp +++ b/lib/kokkos/core/src/traits/Kokkos_PolicyTraitAdaptor.hpp @@ -68,7 +68,7 @@ struct PolicyTraitAdaptorImpl< TraitSpec, PolicyTemplate, type_list, type_list, NewTrait, std::enable_if_t::value>> { - static_assert(PolicyTraitMatcher::value, ""); + static_assert(PolicyTraitMatcher::value); using type = PolicyTemplate; }; @@ -92,7 +92,7 @@ template class PolicyTemplate, struct PolicyTraitAdaptorImpl, type_list<>, NewTrait> { - static_assert(PolicyTraitMatcher::value, ""); + static_assert(PolicyTraitMatcher::value); using type = PolicyTemplate; }; diff --git a/lib/kokkos/core/src/traits/Kokkos_ScheduleTrait.hpp b/lib/kokkos/core/src/traits/Kokkos_ScheduleTrait.hpp index 86130025530..4e91d89f0f9 100644 --- a/lib/kokkos/core/src/traits/Kokkos_ScheduleTrait.hpp +++ b/lib/kokkos/core/src/traits/Kokkos_ScheduleTrait.hpp @@ -78,7 +78,7 @@ namespace Experimental { template constexpr auto require(Policy const& p, Kokkos::Schedule) { - static_assert(Kokkos::is_execution_policy::value, ""); + static_assert(Kokkos::is_execution_policy::value); using new_policy_t = Kokkos::Impl::ScheduleTrait::policy_with_trait< Policy, Kokkos::Schedule>; return new_policy_t{p}; diff --git a/lib/kokkos/core/src/traits/Kokkos_WorkItemPropertyTrait.hpp b/lib/kokkos/core/src/traits/Kokkos_WorkItemPropertyTrait.hpp index 8f95385c851..ae7aa6e534f 100644 --- a/lib/kokkos/core/src/traits/Kokkos_WorkItemPropertyTrait.hpp +++ b/lib/kokkos/core/src/traits/Kokkos_WorkItemPropertyTrait.hpp @@ -57,7 +57,7 @@ namespace Experimental { template constexpr auto require(const Policy p, WorkItemProperty::ImplWorkItemProperty) { - static_assert(Kokkos::is_execution_policy::value, ""); + static_assert(Kokkos::is_execution_policy::value); using new_policy_t = Kokkos::Impl::WorkItemPropertyTrait::policy_with_trait< Policy, WorkItemProperty::ImplWorkItemProperty>; return new_policy_t{p}; diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index b71c72c3c9f..6dfb7505c5d 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -65,7 +65,7 @@ SET(KOKKOS_THREADS_NAME Threads) IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang) SET(KOKKOS_OPENACC_FEATURE_LEVEL 9) ELSE() - SET(KOKKOS_OPENACC_FEATURE_LEVEL 16) + SET(KOKKOS_OPENACC_FEATURE_LEVEL 17) ENDIF() SET(KOKKOS_OPENACC_NAME Experimental::OpenACC) @@ -86,11 +86,13 @@ SET(COMPILE_ONLY_SOURCES TestDetectionIdiom.cpp TestBitManipulation.cpp TestInterOp.cpp + TestRangePolicyCTAD.cpp TestStringManipulation.cpp TestVersionMacros.cpp TestViewRank.cpp TestViewTypeTraits.cpp TestTypeList.cpp + TestMDRangePolicyCTAD.cpp view/TestExtentsDatatypeConversion.cpp ) @@ -184,6 +186,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;OpenACC;HIP;SYCL) MDSpan MinMaxClamp NumericTraits + OccupancyControlTrait Other ParallelScanRangePolicy Printf @@ -200,6 +203,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;OpenACC;HIP;SYCL) Reductions Reductions_DeviceView SharedAlloc + Swap ) set(file ${dir}/Test${Tag}_${Name}.cpp) # Write to a temporary intermediate file and call configure_file to avoid @@ -233,6 +237,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;OpenACC;HIP;SYCL) ViewCopy_a ViewCopy_b ViewCtorDimMatch + ViewEmptyRuntimeUnmanaged ViewHooks ViewLayoutStrideAssignment ViewMapping_a @@ -240,6 +245,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;OpenACC;HIP;SYCL) ViewMapping_subview ViewMemoryAccessViolation ViewOfClass + ViewOutOfBoundsAccess ViewResize WorkGraph WithoutInitializing @@ -372,20 +378,21 @@ if(Kokkos_ENABLE_OPENMPTARGET) ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamCombinedReducers.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamReductionScan.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_WorkGraph.cpp - IF (KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0) - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c01.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c02.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c03.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_Reducers_d.cpp - endif() IF (KOKKOS_CXX_COMPILER_ID STREQUAL "Clang" AND KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0.0) ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_AtomicOperations_shared.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_MinMaxClamp.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamVectorRange.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_Reducers_d.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamVectorRange.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_ViewAPI_e.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamScan.cpp ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_TeamBasic.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_ViewAPI_e.cpp + IF (KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 17.0.3) + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c01.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c02.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_SubView_c03.cpp + ${CMAKE_CURRENT_BINARY_DIR}/openmptarget/TestOpenMPTarget_Reducers_d.cpp + endif() endif() # FIXME_OPENMPTARGET_CRAY: The following tests fail at compile time when the OpenMPTarget backend is enabled with the Cray compiler. # Atomic compare/exchange is used in these tests which can be one of the reasons for the compilation failures. @@ -522,17 +529,7 @@ IF(KOKKOS_ENABLE_OPENACC AND KOKKOS_CXX_COMPILER_ID STREQUAL NVHPC) list(REMOVE_ITEM OpenACC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/default/TestDefaultDeviceType_a1.cpp ${CMAKE_CURRENT_SOURCE_DIR}/default/TestDefaultDeviceType_b1.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_double.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_float.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_int.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_longint.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_longlongint.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_shared.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_unsignedint.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicOperations_unsignedlongint.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_Atomics.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_AtomicViews.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_BlockSizeDeduction.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_DeepCopyAlignment.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_HostSharedPtr.cpp @@ -549,17 +546,10 @@ IF(KOKKOS_ENABLE_OPENACC AND KOKKOS_CXX_COMPILER_ID STREQUAL NVHPC) ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_Reducers_d.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_Reductions.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_Reductions_DeviceView.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_b.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_c02.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_c03.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_c05.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_c08.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_SubView_c11.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_TeamBasic.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_TeamScratch.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_TeamTeamSize.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_UniqueToken.cpp - ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_ViewMapping_b.cpp ${CMAKE_CURRENT_BINARY_DIR}/openacc/TestOpenACC_ViewResize.cpp ) endif() @@ -677,7 +667,6 @@ endif() if (Kokkos_ENABLE_OPENMP) set(OpenMP_EXTRA_SOURCES openmp/TestOpenMP_Task.cpp - openmp/TestOpenMP_PartitionMaster.cpp ) KOKKOS_ADD_EXECUTABLE_AND_TEST( CoreUnitTest_OpenMP @@ -724,12 +713,14 @@ if(Kokkos_ENABLE_HPX) hpx/TestHPX_IndependentInstancesRefCounting.cpp hpx/TestHPX_IndependentInstancesSynchronization.cpp ) +if(Kokkos_ENABLE_DEPRECATED_CODE_4) KOKKOS_ADD_EXECUTABLE_AND_TEST( CoreUnitTest_HPX_InParallel SOURCES UnitTestMainInit.cpp hpx/TestHPX_InParallel.cpp ) + endif() endif() if(Kokkos_ENABLE_OPENMPTARGET) @@ -797,6 +788,12 @@ if(Kokkos_ENABLE_CUDA) UnitTestMain.cpp cuda/TestCuda_InterOp_Streams.cpp ) + KOKKOS_ADD_EXECUTABLE_AND_TEST( + CoreUnitTest_CudaInterOpStreamsMultiGPU + SOURCES + UnitTestMainInit.cpp + cuda/TestCuda_InterOp_StreamsMultiGPU.cpp + ) KOKKOS_ADD_EXECUTABLE_AND_TEST( CoreUnitTest_CudaGraph SOURCES @@ -1039,13 +1036,7 @@ KOKKOS_ADD_ADVANCED_TEST( CoreUnitTest_PushFinalizeHook_terminate tools/TestCategoricalTuner.cpp ) endif() - if((NOT Kokkos_ENABLE_OPENMPTARGET) AND (NOT Kokkos_ENABLE_OPENACC)) - KOKKOS_ADD_EXECUTABLE_AND_TEST( - CoreUnitTest_LogicalSpaces - SOURCES - tools/TestLogicalSpaces.cpp - ) - endif() + SET(KOKKOSP_SOURCES UnitTestMainInit.cpp tools/TestEventCorrectness.cpp @@ -1167,15 +1158,6 @@ KOKKOS_ADD_TEST( NAME CoreUnitTest_StackTraceTest ) endif() -if(Kokkos_ENABLE_DEPRECATED_CODE_3) - foreach(INITTESTS_NUM RANGE 1 18) - KOKKOS_ADD_EXECUTABLE_AND_TEST( - CoreUnitTest_DefaultInit_${INITTESTS_NUM} - SOURCES UnitTestMain.cpp default/TestDefaultDeviceTypeInit_${INITTESTS_NUM}.cpp - ) - endforeach(INITTESTS_NUM) -endif() - if (KOKKOS_ENABLE_HWLOC) KOKKOS_ADD_EXECUTABLE_AND_TEST( CoreUnitTest_HWLOC @@ -1259,12 +1241,10 @@ if (NOT KOKKOS_HAS_TRILINOS) INPUT TestDeviceAndThreads.py ${USE_SOURCE_PERMISSIONS_WHEN_SUPPORTED} ) - if(NOT Kokkos_ENABLE_OPENMPTARGET) # FIXME_OPENMPTARGET does not select the right device - add_test( - NAME Kokkos_CoreUnitTest_DeviceAndThreads - COMMAND ${Python3_EXECUTABLE} -m unittest -v $/TestDeviceAndThreads.py - ) - endif() + add_test( + NAME Kokkos_CoreUnitTest_DeviceAndThreads + COMMAND ${Python3_EXECUTABLE} -m unittest -v $/TestDeviceAndThreads.py + ) endif() endif() diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index 33a84b61f92..202809d3fc9 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -67,8 +67,8 @@ TESTS = AtomicOperations_int AtomicOperations_unsignedint AtomicOperations_longi tmp := $(foreach device, $(KOKKOS_DEVICELIST), \ tmp2 := $(foreach test, $(TESTS), \ $(if $(filter Test$(device)_$(test).cpp, $(shell ls Test$(device)_$(test).cpp 2>/dev/null)),,\ - $(shell echo "\#include " > Test$(device)_$(test).cpp); \ - $(shell echo "\#include " >> Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include " > Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include " >> Test$(device)_$(test).cpp); \ ) \ ) \ ) @@ -82,8 +82,8 @@ KOKKOS_SUBVIEW_DEVICELIST := $(filter-out Cuda, $(KOKKOS_DEVICELIST)) tmp := $(foreach device, $(KOKKOS_SUBVIEW_DEVICELIST), \ tmp2 := $(foreach test, $(SUBVIEW_TESTS), \ $(if $(filter Test$(device)_$(test).cpp, $(shell ls Test$(device)_$(test).cpp 2>/dev/null)),, \ - $(shell echo "\#include " > Test$(device)_$(test).cpp); \ - $(shell echo "\#include " >> Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include " > Test$(device)_$(test).cpp); \ + $(shell echo "$(H)include " >> Test$(device)_$(test).cpp); \ ) \ )\ ) @@ -91,8 +91,8 @@ tmp := $(foreach device, $(KOKKOS_SUBVIEW_DEVICELIST), \ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) tmp2 := $(foreach test, $(SUBVIEW_TESTS), \ $(if $(filter TestCuda_$(test).cpp, $(shell ls TestCuda_$(test).cpp 2>/dev/null)),,\ - $(shell echo "\#include " > TestCuda_$(test).cpp); \ - $(shell echo "\#include " >> TestCuda_$(test).cpp); \ + $(shell echo "$(H)include " > TestCuda_$(test).cpp); \ + $(shell echo "$(H)include " >> TestCuda_$(test).cpp); \ )\ ) @@ -100,8 +100,8 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) tmp := $(foreach space, $(GPU_SPACES), \ tmp2 := $(foreach test, $(GPU_SPACE_TESTS), \ $(if $(filter Test$(space)_$(test).cpp, $(shell ls Test$(space)_$(test).cpp 2>/dev/null)),,\ - $(shell echo "\#include " > Test$(space)_$(test).cpp); \ - $(shell echo "\#include " >> Test$(space)_$(test).cpp); \ + $(shell echo "$(H)include " > Test$(space)_$(test).cpp); \ + $(shell echo "$(H)include " >> Test$(space)_$(test).cpp); \ )\ )\ ) @@ -277,8 +277,8 @@ ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) tmp := $(foreach space, $(GPU_SPACES), \ tmp2 := $(foreach test, $(GPU_SPACE_TESTS), \ $(if $(filter Test$(space)_$(test).cpp, $(shell ls Test$(space)_$(test).cpp 2>/dev/null)),,\ - $(shell echo "\#include " > Test$(space)_$(test).cpp); \ - $(shell echo "\#include " >> Test$(space)_$(test).cpp); \ + $(shell echo "$(H)include " > Test$(space)_$(test).cpp); \ + $(shell echo "$(H)include " >> Test$(space)_$(test).cpp); \ )\ )\ ) diff --git a/lib/kokkos/core/unit_test/TestAggregate.hpp b/lib/kokkos/core/unit_test/TestAggregate.hpp index 4f67b2eddce..f1316a7426a 100644 --- a/lib/kokkos/core/unit_test/TestAggregate.hpp +++ b/lib/kokkos/core/unit_test/TestAggregate.hpp @@ -29,35 +29,31 @@ void TestViewAggregate() { value_type>; static_assert( - std::is_same >::value, - ""); + std::is_same >::value); using a32_traits = Kokkos::ViewTraits; using flat_traits = Kokkos::ViewTraits; static_assert( - std::is_same >::value, - ""); + std::is_same >::value); static_assert( - std::is_same::value, ""); - static_assert(a32_traits::rank == 2, ""); - static_assert(a32_traits::rank_dynamic == 2, ""); + std::is_same::value); + static_assert(a32_traits::rank == 2); + static_assert(a32_traits::rank_dynamic == 2); - static_assert(std::is_void::value, ""); - static_assert(flat_traits::rank == 3, ""); - static_assert(flat_traits::rank_dynamic == 2, ""); - static_assert(flat_traits::dimension::N2 == 32, ""); + static_assert(std::is_void::value); + static_assert(flat_traits::rank == 3); + static_assert(flat_traits::rank_dynamic == 2); + static_assert(flat_traits::dimension::N2 == 32); using a32_type = Kokkos::View **, DeviceType>; using a32_flat_type = typename a32_type::array_type; - static_assert(std::is_same::value, - ""); - static_assert(std::is_same::value, - ""); - static_assert(a32_type::rank == 2, ""); - static_assert(a32_flat_type::rank == 3, ""); + static_assert(std::is_same::value); + static_assert(std::is_same::value); + static_assert(a32_type::rank == 2); + static_assert(a32_flat_type::rank == 3); a32_type x("test", 4, 5); a32_flat_type y(x); diff --git a/lib/kokkos/core/unit_test/TestArray.cpp b/lib/kokkos/core/unit_test/TestArray.cpp index d3bdc4f93f7..673d0036b71 100644 --- a/lib/kokkos/core/unit_test/TestArray.cpp +++ b/lib/kokkos/core/unit_test/TestArray.cpp @@ -49,4 +49,28 @@ KOKKOS_FUNCTION constexpr bool test_array_structured_binding_support() { static_assert(test_array_structured_binding_support()); +template +KOKKOS_FUNCTION constexpr bool is_equal(L const& l, R const& r) { + if (std::size(l) != std::size(r)) return false; + + for (size_t i = 0; i != std::size(l); ++i) { + if (l[i] != r[i]) return false; + } + + return true; +} + +// Disable ctad test for intel versions < 2021, see issue #6702 +#if !defined(KOKKOS_COMPILER_INTEL) || KOKKOS_COMPILER_INTEL >= 2021 +KOKKOS_FUNCTION constexpr bool test_array_ctad() { + constexpr int x = 10; + constexpr Kokkos::Array a{1, 2, 3, 5, x}; + constexpr Kokkos::Array b{1, 2, 3, 5, x}; + + return std::is_same_v && is_equal(a, b); +} + +static_assert(test_array_ctad()); +#endif + } // namespace diff --git a/lib/kokkos/core/unit_test/TestAtomicOperations.hpp b/lib/kokkos/core/unit_test/TestAtomicOperations.hpp index a5aebed4138..cd7ba47aa1e 100644 --- a/lib/kokkos/core/unit_test/TestAtomicOperations.hpp +++ b/lib/kokkos/core/unit_test/TestAtomicOperations.hpp @@ -368,6 +368,63 @@ bool atomic_op_test(T old_val, T update) { return result == 0; } +template +constexpr T relative_error_threshold = T(1.0e-15); + +template +bool atomic_op_test_rel(T old_val, T update) { + Kokkos::View op_data("op_data"); + Kokkos::deep_copy(op_data, old_val); + int result = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, 1), + KOKKOS_LAMBDA(int, int& local_result) { + auto fetch_result = + Op::atomic_op(&op_data(0), &op_data(1), &op_data(2), update); + T expected_val = Op::op(old_val, update); + Kokkos::memory_fence(); + if (expected_val == T(0)) { + if (fabs(op_data(0)) > relative_error_threshold) local_result += 1; + if (fabs(op_data(1)) > relative_error_threshold) local_result += 2; + if (fabs(op_data(2)) > relative_error_threshold) local_result += 4; + if (fetch_result.first != old_val) local_result += 8; + if (fabs(fetch_result.second) > relative_error_threshold) + local_result += 16; + } else { + if (fabs((op_data(0) - expected_val) / expected_val) > + relative_error_threshold) + local_result += 1; + if (fabs((op_data(1) - expected_val) / expected_val) > + relative_error_threshold) + local_result += 2; + if (fabs((op_data(2) - expected_val) / expected_val) > + relative_error_threshold) + local_result += 4; + if (fetch_result.first != old_val) local_result += 8; + if (fabs((fetch_result.second - expected_val) / expected_val) > + relative_error_threshold) + local_result += 16; + } + }, + result); + if ((result & 1) != 0) + printf("atomic_%s failed with type %s\n", Op::name(), typeid(T).name()); + if ((result & 2) != 0) + printf("atomic_fetch_%s failed with type %s\n", Op::name(), + typeid(T).name()); + if ((result & 4) != 0) + printf("atomic_%s_fetch failed with type %s\n", Op::name(), + typeid(T).name()); + if ((result & 8) != 0) + printf("atomic_fetch_%s did not return old value with type %s\n", + Op::name(), typeid(T).name()); + if ((result & 16) != 0) + printf("atomic_%s_fetch did not return updated value with type %s\n", + Op::name(), typeid(T).name()); + + return result == 0; +} + //--------------------------------------------------- //--------------atomic_test_control------------------ //--------------------------------------------------- @@ -395,6 +452,12 @@ bool AtomicOperationsTestIntegralType(int old_val_in, int update_in, int test) { case 9: return atomic_op_test(old_val, update); case 10: return atomic_op_test(old_val, update); +#if defined(KOKKOS_ENABLE_OPENACC) && defined(KOKKOS_COMPILER_NVHPC) + // FIXME_NVHPC: atomic-fetch-shift operation fails due to NVHPC OpenACC + // compiler bugs, which are reported to NVIDIA. + case 11: return true; + case 12: return true; +#else case 11: return update_in >= 0 ? atomic_op_test( old_val, update) @@ -403,6 +466,7 @@ bool AtomicOperationsTestIntegralType(int old_val_in, int update_in, int test) { return update_in >= 0 ? atomic_op_test( old_val, update) : true; +#endif case 13: return atomic_op_test(old_val, update); case 14: @@ -440,10 +504,20 @@ bool AtomicOperationsTestNonIntegralType(int old_val_in, int update_in, case 2: return atomic_op_test(old_val, update); case 3: return atomic_op_test(old_val, update); case 4: return atomic_op_test(old_val, update); +#if defined(KOKKOS_ENABLE_OPENACC) && defined(KOKKOS_COMPILER_NVHPC) + // NVHPC may use different internal precisions for the device and host + // atomic operations. Therefore, relative errors are used to compare the + // host results and device results. + case 5: + return update != 0 ? atomic_op_test_rel( + old_val, update) + : true; +#else case 5: return update != 0 ? atomic_op_test(old_val, update) : true; +#endif case 6: return atomic_op_test(old_val, update); } diff --git a/lib/kokkos/core/unit_test/TestAtomics.hpp b/lib/kokkos/core/unit_test/TestAtomics.hpp index 2b40f12d0a4..5f48e8c9746 100644 --- a/lib/kokkos/core/unit_test/TestAtomics.hpp +++ b/lib/kokkos/core/unit_test/TestAtomics.hpp @@ -498,7 +498,9 @@ TEST(TEST_CATEGORY, atomics) { ASSERT_TRUE((TestAtomic::Loop(100, 2))); ASSERT_TRUE((TestAtomic::Loop(100, 3))); -#ifndef KOKKOS_ENABLE_OPENMPTARGET + // FIXME_OPENMPTARGET + // FIXME_OPENACC: atomic operations on composite types are not supported. +#if !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(KOKKOS_ENABLE_OPENACC) ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 2))); ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 3))); diff --git a/lib/kokkos/core/unit_test/TestBitManipulationBuiltins.hpp b/lib/kokkos/core/unit_test/TestBitManipulationBuiltins.hpp index 092e7cff618..2f3bcfe817d 100644 --- a/lib/kokkos/core/unit_test/TestBitManipulationBuiltins.hpp +++ b/lib/kokkos/core/unit_test/TestBitManipulationBuiltins.hpp @@ -804,26 +804,26 @@ struct TestBitCastFunction { using Kokkos::bit_cast; if (bit_cast(123) != 123) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #1\n"); + Kokkos::printf("failed check #1\n"); } if (bit_cast(123u) != 123) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #2\n"); + Kokkos::printf("failed check #2\n"); } if (bit_cast(~0u) != ~0) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #3\n"); + Kokkos::printf("failed check #3\n"); } if constexpr (sizeof(int) == sizeof(float)) { if (!check(12.34f)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #4\n"); + Kokkos::printf("failed check #4\n"); } } if constexpr (sizeof(unsigned long long) == sizeof(double)) { if (!check(123.456)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #5\n"); + Kokkos::printf("failed check #5\n"); } } @@ -848,11 +848,11 @@ struct TestBitCastFunction { } if (!(bit_cast(arr) == arr)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #6\n"); + Kokkos::printf("failed check #6\n"); } if (!(bit_cast(arr2) == arr2)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed check #7\n"); + Kokkos::printf("failed check #7\n"); } } }; diff --git a/lib/kokkos/core/unit_test/TestComplex.hpp b/lib/kokkos/core/unit_test/TestComplex.hpp index bcae2e1d816..5501a35b7f0 100644 --- a/lib/kokkos/core/unit_test/TestComplex.hpp +++ b/lib/kokkos/core/unit_test/TestComplex.hpp @@ -451,17 +451,15 @@ TEST(TEST_CATEGORY, complex_issue_3867) { ASSERT_FLOAT_EQ(x.real(), y.real()); ASSERT_FLOAT_EQ(x.imag(), y.imag()); -#define CHECK_POW_COMPLEX_PROMOTION(ARGTYPE1, ARGTYPE2, RETURNTYPE) \ - static_assert( \ - std::is_same(), \ - std::declval()))>::value, \ - ""); \ - static_assert( \ - std::is_same(), \ - std::declval()))>::value, \ - ""); +#define CHECK_POW_COMPLEX_PROMOTION(ARGTYPE1, ARGTYPE2, RETURNTYPE) \ + static_assert( \ + std::is_same(), \ + std::declval()))>::value); \ + static_assert( \ + std::is_same(), \ + std::declval()))>::value); CHECK_POW_COMPLEX_PROMOTION(Kokkos::complex, long double, Kokkos::complex); diff --git a/lib/kokkos/core/unit_test/TestConcepts.hpp b/lib/kokkos/core/unit_test/TestConcepts.hpp index 476a8848325..b85867bf63a 100644 --- a/lib/kokkos/core/unit_test/TestConcepts.hpp +++ b/lib/kokkos/core/unit_test/TestConcepts.hpp @@ -22,42 +22,42 @@ using ExecutionSpace = TEST_EXECSPACE; using MemorySpace = typename ExecutionSpace::memory_space; using DeviceType = typename ExecutionSpace::device_type; -static_assert(Kokkos::is_execution_space{}, ""); -static_assert(Kokkos::is_execution_space{}, ""); -static_assert(!Kokkos::is_execution_space{}, ""); -static_assert(!Kokkos::is_execution_space{}, ""); - -static_assert(Kokkos::is_memory_space{}, ""); -static_assert(Kokkos::is_memory_space{}, ""); -static_assert(!Kokkos::is_memory_space{}, ""); -static_assert(!Kokkos::is_memory_space{}, ""); - -static_assert(Kokkos::is_device{}, ""); -static_assert(Kokkos::is_device{}, ""); -static_assert(!Kokkos::is_device{}, ""); -static_assert(!Kokkos::is_device{}, ""); - -static_assert(!Kokkos::is_device{}, ""); -static_assert(!Kokkos::is_device{}, ""); - -static_assert(Kokkos::is_space{}, ""); -static_assert(Kokkos::is_space{}, ""); -static_assert(Kokkos::is_space{}, ""); -static_assert(Kokkos::is_space{}, ""); -static_assert(Kokkos::is_space{}, ""); -static_assert(Kokkos::is_space{}, ""); -static_assert(!Kokkos::is_space{}, ""); -static_assert(!Kokkos::is_space{}, ""); -static_assert(!Kokkos::is_space{}, ""); - -static_assert(Kokkos::is_execution_space_v, ""); -static_assert(!Kokkos::is_execution_space_v, ""); +static_assert(Kokkos::is_execution_space{}); +static_assert(Kokkos::is_execution_space{}); +static_assert(!Kokkos::is_execution_space{}); +static_assert(!Kokkos::is_execution_space{}); + +static_assert(Kokkos::is_memory_space{}); +static_assert(Kokkos::is_memory_space{}); +static_assert(!Kokkos::is_memory_space{}); +static_assert(!Kokkos::is_memory_space{}); + +static_assert(Kokkos::is_device{}); +static_assert(Kokkos::is_device{}); +static_assert(!Kokkos::is_device{}); +static_assert(!Kokkos::is_device{}); + +static_assert(!Kokkos::is_device{}); +static_assert(!Kokkos::is_device{}); + +static_assert(Kokkos::is_space{}); +static_assert(Kokkos::is_space{}); +static_assert(Kokkos::is_space{}); +static_assert(Kokkos::is_space{}); +static_assert(Kokkos::is_space{}); +static_assert(Kokkos::is_space{}); +static_assert(!Kokkos::is_space{}); +static_assert(!Kokkos::is_space{}); +static_assert(!Kokkos::is_space{}); + +static_assert(Kokkos::is_execution_space_v); +static_assert(!Kokkos::is_execution_space_v); static_assert( - std::is_same>{}, ""); -static_assert(std::is_same>{}, ""); -static_assert(std::is_same>{}, ""); -static_assert(std::is_same>{}, ""); + std::is_same>{}); +static_assert(std::is_same>{}); +static_assert(std::is_same>{}); +static_assert(std::is_same>{}); /*------------------------------------------------- begin test for team_handle concept diff --git a/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp b/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp deleted file mode 100644 index 929c91db4e0..00000000000 --- a/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp +++ /dev/null @@ -1,491 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#include - -#include - -#ifdef KOKKOS_ENABLE_OPENMP -#include -#endif -#include -#if !defined(KOKKOS_ENABLE_CUDA) || defined(__CUDACC__) - -namespace Test { - -namespace Impl { - -std::set delete_these; -void cleanup_memory() { - for (auto x : delete_these) { - delete[] x; - } -} - -char** init_kokkos_args(bool do_threads, bool do_numa, bool do_device, - bool do_other, bool do_tune, int& nargs, - Kokkos::InitArguments& init_args) { - nargs = (do_threads ? 1 : 0) + (do_numa ? 1 : 0) + (do_device ? 1 : 0) + - (do_other ? 4 : 0) + (do_tune ? 1 : 0); - - char** args_kokkos = new char*[nargs]; - const int max_args_size = 45; - for (int i = 0; i < nargs; i++) { - args_kokkos[i] = new char[max_args_size]; - delete_these.insert(args_kokkos[i]); - } - - int threads_idx = do_other ? 1 : 0; - int numa_idx = (do_other ? 3 : 0) + (do_threads ? 1 : 0); - int device_idx = - (do_other ? 3 : 0) + (do_threads ? 1 : 0) + (do_numa ? 1 : 0); - int tune_idx = (do_other ? 4 : 0) + (do_threads ? 1 : 0) + (do_numa ? 1 : 0) + - (do_device ? 1 : 0); - - if (do_threads) { - int nthreads = 3; - -#ifdef KOKKOS_ENABLE_OPENMP - if (omp_get_max_threads() < nthreads) { - nthreads = omp_get_max_threads(); - } -#elif defined(KOKKOS_ENABLE_HPX) - const int concurrency = std::thread::hardware_concurrency(); - if (concurrency < nthreads) { - nthreads = concurrency; - } -#endif - - if (Kokkos::hwloc::available()) { - if (Kokkos::hwloc::get_available_threads_per_core() < - static_cast(nthreads)) - nthreads = Kokkos::hwloc::get_available_threads_per_core() * - Kokkos::hwloc::get_available_numa_count(); - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) { - nthreads = 1; - } -#endif - - init_args.num_threads = nthreads; - snprintf(args_kokkos[threads_idx], max_args_size, "--threads=%i", nthreads); - } - - if (do_numa) { - int numa = 1; - if (Kokkos::hwloc::available()) { - numa = Kokkos::hwloc::get_available_numa_count(); - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) { - numa = 1; - } -#endif - - init_args.num_numa = numa; - snprintf(args_kokkos[numa_idx], max_args_size, "--numa=%i", numa); - } - - if (do_device) { - init_args.device_id = 0; - snprintf(args_kokkos[device_idx], max_args_size, "--device-id=%i", 0); - } - - if (do_other) { - snprintf(args_kokkos[0], max_args_size, "--dummyarg=1"); - snprintf(args_kokkos[threads_idx + (do_threads ? 1 : 0)], max_args_size, - "--dummy2arg"); - snprintf(args_kokkos[threads_idx + (do_threads ? 1 : 0) + 1], max_args_size, - "dummy3arg"); - snprintf(args_kokkos[device_idx + (do_device ? 1 : 0)], max_args_size, - "dummy4arg=1"); - } - - if (do_tune) { - init_args.tune_internals = true; - snprintf(args_kokkos[tune_idx], max_args_size, "--kokkos-tune-internals"); - } - - return args_kokkos; -} - -Kokkos::InitArguments init_initstruct(bool do_threads, bool do_numa, - bool do_device, bool do_tune) { - Kokkos::InitArguments args; - - if (do_threads) { - int nthreads = 3; - -#ifdef KOKKOS_ENABLE_OPENMP - if (omp_get_max_threads() < nthreads) { - nthreads = omp_get_max_threads(); - } -#elif defined(KOKKOS_ENABLE_HPX) - const int concurrency = std::thread::hardware_concurrency(); - if (concurrency < nthreads) { - nthreads = concurrency; - } -#endif - - if (Kokkos::hwloc::available()) { - if (Kokkos::hwloc::get_available_threads_per_core() < - static_cast(nthreads)) { - nthreads = Kokkos::hwloc::get_available_threads_per_core() * - Kokkos::hwloc::get_available_numa_count(); - } - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) { - nthreads = 1; - } -#endif - - args.num_threads = nthreads; - } - - if (do_numa) { - int numa = 1; - if (Kokkos::hwloc::available()) { - numa = Kokkos::hwloc::get_available_numa_count(); - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) { - numa = 1; - } -#endif - - args.num_numa = numa; - } - - if (do_device) { - args.device_id = 0; - } - - if (do_tune) { - args.tune_internals = true; - } - - return args; -} - -void check_correct_initialization(const Kokkos::InitArguments& argstruct) { - ASSERT_EQ(Kokkos::DefaultExecutionSpace::impl_is_initialized(), 1); - ASSERT_EQ(Kokkos::HostSpace::execution_space::impl_is_initialized(), 1); - - // Figure out the number of threads the HostSpace ExecutionSpace should have - // initialized to. - int expected_nthreads = argstruct.num_threads; - -#ifdef KOKKOS_ENABLE_OPENMP - if (std::is_same::value) { - // use openmp default num threads - if (expected_nthreads < 0 || - (expected_nthreads == 0 && !Kokkos::hwloc::available())) { - expected_nthreads = omp_get_max_threads(); - } - // use hwloc if available - else if (expected_nthreads == 0 && Kokkos::hwloc::available()) { - expected_nthreads = Kokkos::hwloc::get_available_numa_count() * - Kokkos::hwloc::get_available_cores_per_numa() * - Kokkos::hwloc::get_available_threads_per_core(); - } - } -#endif - - if (expected_nthreads < 1) { - if (Kokkos::hwloc::available()) { - expected_nthreads = Kokkos::hwloc::get_available_numa_count() * - Kokkos::hwloc::get_available_cores_per_numa() * - Kokkos::hwloc::get_available_threads_per_core(); - } else { - expected_nthreads = 1; - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) { - expected_nthreads = 1; - } -#endif - -#ifdef KOKKOS_ENABLE_HPX - // HPX uses all cores on machine by default. Skip this test. - if (std::is_same::value || - std::is_same::value) { - return; - } -#endif - } - - int expected_numa = argstruct.num_numa; - - if (expected_numa < 1) { - if (Kokkos::hwloc::available()) { - expected_numa = Kokkos::hwloc::get_available_numa_count(); - } else { - expected_numa = 1; - } - -#ifdef KOKKOS_ENABLE_SERIAL - if (std::is_same::value || - std::is_same::value) - expected_numa = 1; -#endif - } - - ASSERT_EQ(Kokkos::HostSpace::execution_space().impl_thread_pool_size(), - expected_nthreads); - -#ifdef KOKKOS_ENABLE_CUDA - if (std::is_same::value) { - int device; - cudaGetDevice(&device); - - int expected_device = argstruct.device_id; - if (argstruct.device_id < 0) { - expected_device = Kokkos::Cuda().cuda_device(); - } - - ASSERT_EQ(expected_device, device); - } -#endif - ASSERT_EQ(argstruct.tune_internals, Kokkos::tune_internals()); -} - -// TODO: Add check whether correct number of threads are actually started. -void test_no_arguments() { - Kokkos::initialize(); - check_correct_initialization(Kokkos::InitArguments()); - Kokkos::finalize(); -} - -void test_commandline_args(int nargs, char** args, - const Kokkos::InitArguments& argstruct) { - Kokkos::initialize(nargs, args); - check_correct_initialization(argstruct); - Kokkos::finalize(); -} - -void test_initstruct_args(const Kokkos::InitArguments& args) { - Kokkos::initialize(args); - check_correct_initialization(args); - Kokkos::finalize(); -} - -} // namespace Impl - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_01 -TEST(defaultdevicetypeinit, no_args) { Impl::test_no_arguments(); } -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_02 -TEST(defaultdevicetypeinit, commandline_args_empty) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = Impl::init_kokkos_args(false, false, false, false, false, nargs, - argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_03 -TEST(defaultdevicetypeinit, commandline_args_other) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = Impl::init_kokkos_args(false, false, false, true, false, nargs, - argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_04 -TEST(defaultdevicetypeinit, commandline_args_nthreads) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = Impl::init_kokkos_args(true, false, false, false, false, nargs, - argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_05 -TEST(defaultdevicetypeinit, commandline_args_nthreads_numa) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(true, true, false, false, false, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_06 -TEST(defaultdevicetypeinit, commandline_args_nthreads_numa_device) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(true, true, true, false, false, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_07 -TEST(defaultdevicetypeinit, commandline_args_nthreads_device) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(true, false, true, false, false, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_08 -TEST(defaultdevicetypeinit, commandline_args_numa_device) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(false, true, true, false, false, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_09 -TEST(defaultdevicetypeinit, commandline_args_device) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = Impl::init_kokkos_args(false, false, true, false, false, nargs, - argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_10 -TEST(defaultdevicetypeinit, commandline_args_nthreads_numa_device_other) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(true, true, true, true, false, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_11 -TEST(defaultdevicetypeinit, commandline_args_nthreads_numa_device_other_tune) { - Kokkos::InitArguments argstruct; - int nargs = 0; - char** args = - Impl::init_kokkos_args(true, true, true, true, true, nargs, argstruct); - Impl::test_commandline_args(nargs, args, argstruct); - Impl::cleanup_memory(); - delete[] args; -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_12 -TEST(defaultdevicetypeinit, initstruct_default) { - Kokkos::InitArguments args; - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_13 -TEST(defaultdevicetypeinit, initstruct_nthreads) { - Kokkos::InitArguments args = Impl::init_initstruct(true, false, false, false); - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_14 -TEST(defaultdevicetypeinit, initstruct_nthreads_numa) { - Kokkos::InitArguments args = Impl::init_initstruct(true, true, false, false); - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_15 -TEST(defaultdevicetypeinit, initstruct_device) { - Kokkos::InitArguments args = Impl::init_initstruct(false, false, true, false); - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_16 -TEST(defaultdevicetypeinit, initstruct_nthreads_device) { - Kokkos::InitArguments args = Impl::init_initstruct(true, false, true, false); - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_17 -TEST(defaultdevicetypeinit, initstruct_nthreads_numa_device) { - Kokkos::InitArguments args = Impl::init_initstruct(true, true, true, false); - Impl::test_initstruct_args(args); -} -#endif - -#ifdef KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_18 -TEST(defaultdevicetypeinit, initstruct_nthreads_numa_device_tune) { - Kokkos::InitArguments args = Impl::init_initstruct(true, true, true, true); - Impl::test_initstruct_args(args); -} -#endif - -} // namespace Test - -#endif diff --git a/lib/kokkos/core/unit_test/TestDeviceAndThreads.py b/lib/kokkos/core/unit_test/TestDeviceAndThreads.py index 1d3ff8eea7e..63d26ad41a4 100644 --- a/lib/kokkos/core/unit_test/TestDeviceAndThreads.py +++ b/lib/kokkos/core/unit_test/TestDeviceAndThreads.py @@ -17,6 +17,8 @@ import unittest import subprocess +import platform +import os PREFIX = "$" EXECUTABLE = "$" @@ -30,7 +32,22 @@ def GetFlag(flag, *extra_args): return int(p.stdout) def GetNumThreads(max_threads): - for x in [1, 2, 3, 5, 7]: + args = [] + name = platform.system() + if name == 'Darwin': + args = ['sysctl', '-n', 'hw.physicalcpu_max'] + elif name == 'Linux': + args = ['nproc', '--all'] + else: + args = ['wmic', 'cpu', 'get', 'NumberOfCores'] + + result = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + output = result.stdout.decode('utf-8') + phys_cores_count = int(output) + looplist = [1] + [i*phys_cores_count for i in [1,2,3,4,5,6,7]] \ + if GetFlag("hwloc_enabled") else [1,2,3,4,5] + + for x in looplist: if x >= max_threads: break yield x @@ -48,13 +65,25 @@ def test_num_threads(self): "num_threads", "--kokkos-num-threads={}".format(num_threads))) + def test_num_devices(self): + if "KOKKOS_VISIBLE_DEVICES" in os.environ: + self.skipTest("KOKKOS_VISIBLE_DEVICES environment variable is set") + num_devices = GetFlag("num_devices") + self.assertNotEqual(num_devices, 0) + if num_devices == -1: + self.skipTest("no device backend enabled") + self.assertGreaterEqual(num_devices, 1) + def test_device_id(self): - device_count = GetFlag("device_count") - if device_count == 0: - self.skipTest("no device detected") + if "KOKKOS_VISIBLE_DEVICES" in os.environ: + self.skipTest("KOKKOS_VISIBLE_DEVICES environment variable is set") + num_devices = GetFlag("num_devices") + if num_devices == -1: + self.assertEqual(-1, GetFlag("device_id")) + self.skipTest("no device backend enabled") # by default use the first GPU available for execution self.assertEqual(0, GetFlag("device_id")) - for device_id in range(device_count): + for device_id in range(num_devices): self.assertEqual( device_id, GetFlag( diff --git a/lib/kokkos/core/unit_test/TestExecutionSpace.hpp b/lib/kokkos/core/unit_test/TestExecutionSpace.hpp index 6f0f159c174..983a5975afd 100644 --- a/lib/kokkos/core/unit_test/TestExecutionSpace.hpp +++ b/lib/kokkos/core/unit_test/TestExecutionSpace.hpp @@ -25,13 +25,7 @@ struct CheckClassWithExecutionSpaceAsDataMemberIsCopyable { Kokkos::DefaultExecutionSpace device; Kokkos::DefaultHostExecutionSpace host; - KOKKOS_FUNCTION void operator()(int, int& e) const { - // not actually doing anything useful, mostly checking that - // ExecutionSpace::in_parallel() is callable - if (static_cast(device.in_parallel()) < 0) { - ++e; - } - } + KOKKOS_FUNCTION void operator()(int i, int& e) const { e += i; } CheckClassWithExecutionSpaceAsDataMemberIsCopyable() { int errors; diff --git a/lib/kokkos/core/unit_test/TestFunctorAnalysis.hpp b/lib/kokkos/core/unit_test/TestFunctorAnalysis.hpp index c024526111b..e58324144e4 100644 --- a/lib/kokkos/core/unit_test/TestFunctorAnalysis.hpp +++ b/lib/kokkos/core/unit_test/TestFunctorAnalysis.hpp @@ -59,16 +59,15 @@ void test_functor_analysis() { using R01 = typename A01::Reducer; - static_assert(std::is_void::value, ""); - static_assert(std::is_void::value, ""); - static_assert(std::is_void::value, ""); - static_assert(std::is_same::value, - ""); - - static_assert(!A01::has_join_member_function, ""); - static_assert(!A01::has_init_member_function, ""); - static_assert(!A01::has_final_member_function, ""); - static_assert(A01::StaticValueSize == 0, ""); + static_assert(std::is_void::value); + static_assert(std::is_void::value); + static_assert(std::is_void::value); + static_assert(std::is_same::value); + + static_assert(!A01::has_join_member_function); + static_assert(!A01::has_init_member_function); + static_assert(!A01::has_final_member_function); + static_assert(A01::StaticValueSize == 0); ASSERT_EQ(R01(c01).length(), 0); //------------------------------ @@ -78,16 +77,15 @@ void test_functor_analysis() { Kokkos::RangePolicy, decltype(c02), void>; using R02 = typename A02::Reducer; - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, - ""); + static_assert(std::is_same::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); - static_assert(!A02::has_join_member_function, ""); - static_assert(!A02::has_init_member_function, ""); - static_assert(!A02::has_final_member_function, ""); - static_assert(A02::StaticValueSize == sizeof(double), ""); + static_assert(!A02::has_join_member_function); + static_assert(!A02::has_init_member_function); + static_assert(!A02::has_final_member_function); + static_assert(A02::StaticValueSize == sizeof(double)); ASSERT_EQ(R02(c02).length(), 1); //------------------------------ @@ -99,23 +97,19 @@ void test_functor_analysis() { using R03 = typename A03::Reducer; static_assert(std::is_same::value, - ""); + TestFunctorAnalysis_03::value_type>::value); static_assert(std::is_same::value, - ""); + TestFunctorAnalysis_03::value_type*>::value); static_assert(std::is_same::value, - ""); + TestFunctorAnalysis_03::value_type&>::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); - static_assert(A03::has_join_member_function, ""); - static_assert(A03::has_init_member_function, ""); - static_assert(!A03::has_final_member_function, ""); - static_assert( - A03::StaticValueSize == sizeof(TestFunctorAnalysis_03::value_type), ""); + static_assert(A03::has_join_member_function); + static_assert(A03::has_init_member_function); + static_assert(!A03::has_final_member_function); + static_assert(A03::StaticValueSize == + sizeof(TestFunctorAnalysis_03::value_type)); ASSERT_EQ(R03(c03).length(), 1); //------------------------------ diff --git a/lib/kokkos/core/unit_test/TestHalfOperators.hpp b/lib/kokkos/core/unit_test/TestHalfOperators.hpp index 752e3b50816..c69cdd57034 100644 --- a/lib/kokkos/core/unit_test/TestHalfOperators.hpp +++ b/lib/kokkos/core/unit_test/TestHalfOperators.hpp @@ -268,96 +268,6 @@ enum OP_TESTS { N_OP_TESTS }; -// volatile-qualified parameter type 'volatile half_type' is deprecated -#if !defined(KOKKOS_ENABLE_CXX20) && !defined(KOKKOS_ENABLE_CXX23) -template -struct Functor_TestHalfVolatileOperators { - volatile half_type h_lhs, h_rhs; - view_type actual_lhs, expected_lhs; - double d_lhs, d_rhs; - Functor_TestHalfVolatileOperators(volatile half_type lhs = half_type(0), - volatile half_type rhs = half_type(0)) - : h_lhs(lhs), h_rhs(rhs) { - actual_lhs = view_type("actual_lhs", N_OP_TESTS); - expected_lhs = view_type("expected_lhs", N_OP_TESTS); - half_type nv_tmp; - nv_tmp = h_lhs; - d_lhs = static_cast(nv_tmp); - nv_tmp = h_rhs; - d_rhs = static_cast(nv_tmp); - if (std::is_same::value) { - auto run_on_host = *this; - run_on_host(0); - } else { - Kokkos::parallel_for("Test::Functor_TestHalfVolatileOperators", - Kokkos::RangePolicy(0, 1), *this); - } - } - - KOKKOS_FUNCTION - void operator()(int) const { - volatile half_type tmp_lhs; - half_type nv_tmp; - - // Initialze output views to catch missing test invocations - for (int i = 0; i < N_OP_TESTS; ++i) { - actual_lhs(i) = 1; - expected_lhs(i) = -1; - } - - nv_tmp = h_lhs; - actual_lhs(ASSIGN) = static_cast(nv_tmp); - expected_lhs(ASSIGN) = d_lhs; - - actual_lhs(LT_H_H) = h_lhs < h_rhs; - expected_lhs(LT_H_H) = d_lhs < d_rhs; - - actual_lhs(LE_H_H) = h_lhs <= h_rhs; - expected_lhs(LE_H_H) = d_lhs <= d_rhs; - - actual_lhs(NEQ) = h_lhs != h_rhs; - expected_lhs(NEQ) = d_lhs != d_rhs; - - actual_lhs(GT_H_H) = h_lhs > h_rhs; - expected_lhs(GT_H_H) = d_lhs > d_rhs; - - actual_lhs(GE_H_H) = h_lhs >= h_rhs; - expected_lhs(GE_H_H) = d_lhs >= d_rhs; - - actual_lhs(EQ) = h_lhs == h_rhs; - expected_lhs(EQ) = d_lhs == d_rhs; - - tmp_lhs = h_lhs; - tmp_lhs += h_rhs; - nv_tmp = tmp_lhs; - actual_lhs(CADD_H_H) = static_cast(nv_tmp); - expected_lhs(CADD_H_H) = d_lhs; - expected_lhs(CADD_H_H) += d_rhs; - - tmp_lhs = h_lhs; - tmp_lhs -= h_rhs; - nv_tmp = tmp_lhs; - actual_lhs(CSUB_H_H) = static_cast(nv_tmp); - expected_lhs(CSUB_H_H) = d_lhs; - expected_lhs(CSUB_H_H) -= d_rhs; - - tmp_lhs = h_lhs; - tmp_lhs *= h_rhs; - nv_tmp = tmp_lhs; - actual_lhs(CMUL_H_H) = static_cast(nv_tmp); - expected_lhs(CMUL_H_H) = d_lhs; - expected_lhs(CMUL_H_H) *= d_rhs; - - tmp_lhs = h_lhs; - tmp_lhs /= h_rhs; - nv_tmp = tmp_lhs; - actual_lhs(CDIV_H_H) = static_cast(nv_tmp); - expected_lhs(CDIV_H_H) = d_lhs; - expected_lhs(CDIV_H_H) /= d_rhs; - } -}; -#endif - template struct Functor_TestHalfOperators { half_type h_lhs, h_rhs; @@ -995,33 +905,6 @@ void __test_half_operators(half_type h_lhs, half_type h_rhs) { static_cast(epsilon)); } -// volatile-qualified parameter type 'volatile half_type' is deprecated -#if !defined(KOKKOS_ENABLE_CXX20) && !defined(KOKKOS_ENABLE_CXX23) - // Test partial volatile support - volatile half_type _h_lhs = h_lhs; - volatile half_type _h_rhs = h_rhs; - Functor_TestHalfVolatileOperators f_volatile_device( - _h_lhs, _h_rhs); - Functor_TestHalfVolatileOperators f_volatile_host( - _h_lhs, _h_rhs); - - ExecutionSpace().fence(); - Kokkos::deep_copy(f_device_actual_lhs, f_device.actual_lhs); - Kokkos::deep_copy(f_device_expected_lhs, f_device.expected_lhs); - for (int op_test = 0; op_test < N_OP_TESTS; op_test++) { - // printf("op_test = %d\n", op_test); - if (op_test == ASSIGN || op_test == LT_H_H || op_test == LE_H_H || - op_test == NEQ || op_test == EQ || op_test == GT_H_H || - op_test == GE_H_H || op_test == CADD_H_H || op_test == CSUB_H_H || - op_test == CMUL_H_H || op_test == CDIV_H_H) { - ASSERT_NEAR(f_device_actual_lhs(op_test), f_device_expected_lhs(op_test), - static_cast(epsilon)); - ASSERT_NEAR(f_host.actual_lhs(op_test), f_host.expected_lhs(op_test), - static_cast(epsilon)); - } - } -#endif - // is_trivially_copyable is false with the addition of explicit // copy constructors that are required for supporting reductions // ASSERT_TRUE(std::is_trivially_copyable::value); diff --git a/lib/kokkos/core/unit_test/TestHostSharedPtrAccessOnDevice.hpp b/lib/kokkos/core/unit_test/TestHostSharedPtrAccessOnDevice.hpp index 3ee2ff52051..467b9ad157f 100644 --- a/lib/kokkos/core/unit_test/TestHostSharedPtrAccessOnDevice.hpp +++ b/lib/kokkos/core/unit_test/TestHostSharedPtrAccessOnDevice.hpp @@ -37,7 +37,7 @@ template struct CheckAccessStoredPointerAndDereferenceOnDevice { SmartPtr m_device_ptr; using ElementType = typename SmartPtr::element_type; - static_assert(std::is_same::value, ""); + static_assert(std::is_same::value); CheckAccessStoredPointerAndDereferenceOnDevice(SmartPtr device_ptr) : m_device_ptr(device_ptr) { diff --git a/lib/kokkos/core/unit_test/TestInitializationSettings.cpp b/lib/kokkos/core/unit_test/TestInitializationSettings.cpp index f5be0e47aab..40dc3f11df3 100644 --- a/lib/kokkos/core/unit_test/TestInitializationSettings.cpp +++ b/lib/kokkos/core/unit_test/TestInitializationSettings.cpp @@ -20,30 +20,6 @@ namespace { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -void take_initialization_settings(Kokkos::InitializationSettings const&) {} - -TEST(defaultdevicetype, - init_arguments_implicit_conversion_to_initialization_settings) { - Kokkos::InitArguments arguments; - take_initialization_settings(arguments); // check that conversion is implicit - arguments.device_id = 1; - arguments.tune_internals = true; - Kokkos::InitializationSettings settings{arguments}; - EXPECT_FALSE(settings.has_num_threads()); - EXPECT_TRUE(settings.has_device_id()); - EXPECT_EQ(settings.get_device_id(), 1); - EXPECT_FALSE(settings.has_num_devices()); - EXPECT_FALSE(settings.has_skip_device()); - EXPECT_FALSE(settings.has_disable_warnings()); - EXPECT_TRUE(settings.has_tune_internals()); - EXPECT_TRUE(settings.get_tune_internals()); - EXPECT_FALSE(settings.has_tools_help()); - EXPECT_FALSE(settings.has_tools_libs()); - EXPECT_FALSE(settings.has_tools_args()); -} -#endif - TEST(defaultdevicetype, initialization_settings) { auto const settings = Kokkos::InitializationSettings() .set_num_threads(255) @@ -52,8 +28,6 @@ TEST(defaultdevicetype, initialization_settings) { EXPECT_TRUE(settings.has_num_threads()); EXPECT_EQ(settings.get_num_threads(), 255); EXPECT_FALSE(settings.has_device_id()); - EXPECT_FALSE(settings.has_num_devices()); - EXPECT_FALSE(settings.has_skip_device()); EXPECT_TRUE(settings.has_disable_warnings()); EXPECT_FALSE(settings.get_disable_warnings()); EXPECT_FALSE(settings.has_tune_internals()); @@ -75,8 +49,6 @@ constexpr bool test_initialization_settings_getter() { TYPE>::value); CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(num_threads, int); CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(device_id, int); - CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(num_devices, int); - CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(skip_device, int); CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(disable_warnings, bool); CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(tune_internals, bool); CHECK_INITIALIZATION_SETTINGS_GETTER_RETURN_TYPE(tools_help, bool); diff --git a/lib/kokkos/core/unit_test/TestJoinBackwardCompatibility.hpp b/lib/kokkos/core/unit_test/TestJoinBackwardCompatibility.hpp index 24cf52aa709..efe4a2307a8 100644 --- a/lib/kokkos/core/unit_test/TestJoinBackwardCompatibility.hpp +++ b/lib/kokkos/core/unit_test/TestJoinBackwardCompatibility.hpp @@ -36,9 +36,8 @@ KOKKOS_FUNCTION constexpr MyErrorCode operator|(MyErrorCode lhs, } static_assert((no_error | error_operator_plus_equal_volatile) == - error_operator_plus_equal_volatile, - ""); -static_assert((error_join_volatile | error_operator_plus_equal) == 0b101, ""); + error_operator_plus_equal_volatile); +static_assert((error_join_volatile | error_operator_plus_equal) == 0b101); struct MyJoinBackCompatValueType { MyErrorCode err = no_error; diff --git a/lib/kokkos/core/unit_test/TestMDRangePolicyCTAD.cpp b/lib/kokkos/core/unit_test/TestMDRangePolicyCTAD.cpp new file mode 100644 index 00000000000..b2c3d021c35 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestMDRangePolicyCTAD.cpp @@ -0,0 +1,138 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include + +namespace { + +struct TestMDRangePolicyCTAD { + template + static void maybe_unused(Ts&&...) {} + + struct SomeExecutionSpace { + using execution_space = SomeExecutionSpace; + using size_type = size_t; + }; + static_assert(Kokkos::is_execution_space_v); + + struct ImplicitlyConvertibleToDefaultExecutionSpace { + [[maybe_unused]] operator Kokkos::DefaultExecutionSpace() const { + return Kokkos::DefaultExecutionSpace(); + } + }; + static_assert(!Kokkos::is_execution_space_v< + ImplicitlyConvertibleToDefaultExecutionSpace>); + + [[maybe_unused]] static inline Kokkos::DefaultExecutionSpace des; + [[maybe_unused]] static inline ImplicitlyConvertibleToDefaultExecutionSpace + notEs; + [[maybe_unused]] static inline SomeExecutionSpace ses; + + [[maybe_unused]] static inline int t[5]; + [[maybe_unused]] static inline int64_t tt[5]; + [[maybe_unused]] static inline Kokkos::Array a; + [[maybe_unused]] static inline Kokkos::Array aa; + [[maybe_unused]] static inline int64_t i64; + + // Workaround for nvc++ (CUDA-11.7-NVHPC) ignoring [[maybe_unused]] on + // ImplicitlyConvertibleToDefaultExecutionSpace::operator + // Kokkos::DefaultExecutionSpace() const + [[maybe_unused]] static inline Kokkos::DefaultExecutionSpace notEsToDes = + notEs; + + // Workaround for HIP-ROCm-5.2 "declared but never referenced" + TestMDRangePolicyCTAD() { + maybe_unused(des, notEs, ses, t, tt, a, aa, notEsToDes, i64); + } + + // MDRangePolicy with C array parameters + + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(t, t))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(t, t, tt))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(des, t, tt))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(notEs, t, t))>); + + static_assert( + std::is_same_v< + Kokkos::MDRangePolicy>, + decltype(Kokkos::MDRangePolicy(ses, t, t))>); + + // MDRangePolicy with Kokkos::initializer_list parameters + + static_assert(std::is_same_v>, + decltype(Kokkos::MDRangePolicy( + {1, 2, 3, 4, 5, 6}, {1, 2, 3, 4, 5, 6}))>); + + static_assert(std::is_same_v>, + decltype(Kokkos::MDRangePolicy( + {1, 2, 3, 4, 5, 6}, {1, 2, 3, 4, 5, 6}, + {i64, i64, i64, i64, i64, i64}))>); + + static_assert(std::is_same_v>, + decltype(Kokkos::MDRangePolicy( + des, {1, 2, 3, 4, 5, 6}, + {i64, i64, i64, i64, i64, i64}))>); + + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(notEs, {1, 2, 3, 4, 5, 6}, + {1, 2, 3, 4, 5, 6}))>); + + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(ses, {1, 2, 3, 4, 5, 6}, + {1, 2, 3, 4, 5, 6}))>); + + // MDRangePolicy with Kokkos::Array parameters + + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(a, a))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(a, a, aa))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(des, a, a))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(notEs, a, a))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(des, a, a, aa))>); + static_assert( + std::is_same_v>, + decltype(Kokkos::MDRangePolicy(notEs, a, a, aa))>); + + static_assert( + std::is_same_v< + Kokkos::MDRangePolicy>, + decltype(Kokkos::MDRangePolicy(ses, a, a))>); + static_assert( + std::is_same_v< + Kokkos::MDRangePolicy>, + decltype(Kokkos::MDRangePolicy(ses, a, a, aa))>); +}; + +} // namespace diff --git a/lib/kokkos/core/unit_test/TestMDRangePolicyConstructors.hpp b/lib/kokkos/core/unit_test/TestMDRangePolicyConstructors.hpp index f577f415e7c..6f241b45d47 100644 --- a/lib/kokkos/core/unit_test/TestMDRangePolicyConstructors.hpp +++ b/lib/kokkos/core/unit_test/TestMDRangePolicyConstructors.hpp @@ -18,6 +18,8 @@ #include +#include + namespace { template @@ -86,12 +88,56 @@ TEST(TEST_CATEGORY_DEATH, policy_bounds_unsafe_narrowing_conversions) { using Policy = Kokkos::MDRangePolicy, Kokkos::IndexType>; + std::string msg = + "Kokkos::MDRangePolicy bound type error: an unsafe implicit conversion " + "is " + "performed on a bound (-1) in dimension (0), which may not preserve its " + "original value.\n"; + std::string expected = std::regex_replace(msg, std::regex("\\(|\\)"), "\\$&"); + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - ASSERT_DEATH( - { - (void)Policy({-1, 0}, {2, 3}); - }, - "unsafe narrowing conversion"); + ASSERT_DEATH({ (void)Policy({-1, 0}, {2, 3}); }, expected); +} + +TEST(TEST_CATEGORY_DEATH, policy_invalid_bounds) { + using Policy = Kokkos::MDRangePolicy>; + + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + + auto [dim0, dim1] = (Policy::inner_direction == Kokkos::Iterate::Right) + ? std::make_pair(1, 0) + : std::make_pair(0, 1); + std::string msg1 = + "Kokkos::MDRangePolicy bounds error: The lower bound (100) is greater " + "than its upper bound (90) in dimension " + + std::to_string(dim0) + ".\n"; + + std::string msg2 = + "Kokkos::MDRangePolicy bounds error: The lower bound (100) is greater " + "than its upper bound (90) in dimension " + + std::to_string(dim1) + ".\n"; + +#if !defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) + // escape the parentheses in the regex to match the error message + msg1 = std::regex_replace(msg1, std::regex("\\(|\\)"), "\\$&"); + (void)msg2; + ASSERT_DEATH({ (void)Policy({100, 100}, {90, 90}); }, msg1); +#else + if (!Kokkos::show_warnings()) { + GTEST_SKIP() << "Kokkos warning messages are disabled"; + } + + ::testing::internal::CaptureStderr(); + (void)Policy({100, 100}, {90, 90}); +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + ASSERT_EQ(::testing::internal::GetCapturedStderr(), msg1 + msg2); +#else + ASSERT_TRUE(::testing::internal::GetCapturedStderr().empty()); + (void)msg1; + (void)msg2; +#endif + +#endif } #endif diff --git a/lib/kokkos/core/unit_test/TestMathematicalFunctions.hpp b/lib/kokkos/core/unit_test/TestMathematicalFunctions.hpp index d32ef4ca230..ad035d4e4bf 100644 --- a/lib/kokkos/core/unit_test/TestMathematicalFunctions.hpp +++ b/lib/kokkos/core/unit_test/TestMathematicalFunctions.hpp @@ -30,8 +30,9 @@ #define MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS #endif -#if defined KOKKOS_COMPILER_INTEL || \ - (defined(KOKKOS_COMPILER_NVCC) && KOKKOS_COMPILER_NVCC >= 1130) +#if defined KOKKOS_COMPILER_INTEL || \ + (defined(KOKKOS_COMPILER_NVCC) && KOKKOS_COMPILER_NVCC >= 1130 && \ + !defined(KOKKOS_COMPILER_MSVC)) #define MATHEMATICAL_FUNCTIONS_TEST_UNREACHABLE __builtin_unreachable(); #else #define MATHEMATICAL_FUNCTIONS_TEST_UNREACHABLE @@ -286,21 +287,20 @@ struct FloatingPointComparison { public: template - KOKKOS_FUNCTION bool compare_near_zero(FPT const& fpv, double ulp) const { + KOKKOS_FUNCTION bool compare_near_zero(FPT const& fpv, int ulp) const { auto abs_tol = eps(fpv) * ulp; bool ar = absolute(fpv) < abs_tol; if (!ar) { Kokkos::printf("absolute value exceeds tolerance [|%e| > %e]\n", - (double)fpv, abs_tol); + (double)fpv, (double)abs_tol); } return ar; } template - KOKKOS_FUNCTION bool compare(Lhs const& lhs, Rhs const& rhs, - double ulp) const { + KOKKOS_FUNCTION bool compare(Lhs const& lhs, Rhs const& rhs, int ulp) const { if (lhs == 0) { return compare_near_zero(rhs, ulp); } else if (rhs == 0) { @@ -314,7 +314,7 @@ struct FloatingPointComparison { bool ar = abs_diff == 0 || rel_diff < rel_tol; if (!ar) { Kokkos::printf("relative difference exceeds tolerance [%e > %e]\n", - (double)rel_diff, rel_tol); + (double)rel_diff, (double)rel_tol); } return ar; @@ -347,7 +347,7 @@ struct math_function_name; } \ MATHEMATICAL_FUNCTIONS_TEST_UNREACHABLE \ } \ - static KOKKOS_FUNCTION double ulp_factor() { return ULP_FACTOR; } \ + static KOKKOS_FUNCTION int ulp_factor() { return ULP_FACTOR; } \ }; \ using kk_##FUNC = MathUnaryFunction_##FUNC; \ template <> \ @@ -372,7 +372,7 @@ struct math_function_name; math_unary_function_return_type_t>::value); \ return REF_FUNC; \ } \ - static KOKKOS_FUNCTION double ulp_factor() { return ULP_FACTOR; } \ + static KOKKOS_FUNCTION int ulp_factor() { return ULP_FACTOR; } \ }; \ using kk_##FUNC = MathUnaryFunction_##FUNC; \ template <> \ @@ -394,10 +394,12 @@ DEFINE_UNARY_FUNCTION_EVAL(log2, 2); DEFINE_UNARY_FUNCTION_EVAL(log1p, 2); #endif -#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_1 +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 DEFINE_UNARY_FUNCTION_EVAL(sqrt, 2); DEFINE_UNARY_FUNCTION_EVAL(cbrt, 2); +#endif +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_1 DEFINE_UNARY_FUNCTION_EVAL(sin, 2); DEFINE_UNARY_FUNCTION_EVAL(cos, 2); DEFINE_UNARY_FUNCTION_EVAL(tan, 2); @@ -474,7 +476,7 @@ DEFINE_UNARY_FUNCTION_EVAL(logb, 2); } \ MATHEMATICAL_FUNCTIONS_TEST_UNREACHABLE \ } \ - static KOKKOS_FUNCTION double ulp_factor() { return ULP_FACTOR; } \ + static KOKKOS_FUNCTION int ulp_factor() { return ULP_FACTOR; } \ }; \ using kk_##FUNC = MathBinaryFunction_##FUNC; \ template <> \ @@ -483,11 +485,9 @@ DEFINE_UNARY_FUNCTION_EVAL(logb, 2); }; \ constexpr char math_function_name::name[] -#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_1 +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 DEFINE_BINARY_FUNCTION_EVAL(pow, 2); DEFINE_BINARY_FUNCTION_EVAL(hypot, 2); -#endif -#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 DEFINE_BINARY_FUNCTION_EVAL(nextafter, 1); DEFINE_BINARY_FUNCTION_EVAL(copysign, 1); #endif @@ -510,7 +510,7 @@ DEFINE_BINARY_FUNCTION_EVAL(copysign, 1); math_ternary_function_return_type_t>::value); \ return std::FUNC(x, y, z); \ } \ - static KOKKOS_FUNCTION double ulp_factor() { return ULP_FACTOR; } \ + static KOKKOS_FUNCTION int ulp_factor() { return ULP_FACTOR; } \ }; \ using kk3_##FUNC = MathTernaryFunction_##FUNC; \ template <> \ @@ -519,7 +519,7 @@ DEFINE_BINARY_FUNCTION_EVAL(copysign, 1); }; \ constexpr char math_function_name::name[] -#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_1 +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 DEFINE_TERNARY_FUNCTION_EVAL(hypot, 2); DEFINE_TERNARY_FUNCTION_EVAL(fma, 2); #endif @@ -787,7 +787,9 @@ TEST(TEST_CATEGORY, mathematical_functions_trigonometric_functions) { // TODO atan2 } +#endif +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 TEST(TEST_CATEGORY, mathematical_functions_power_functions) { TEST_MATH_FUNCTION(sqrt)({0, 1, 2, 3, 5, 7, 11}); TEST_MATH_FUNCTION(sqrt)({0l, 1l, 2l, 3l, 5l, 7l, 11l}); @@ -1304,12 +1306,12 @@ struct TestAbsoluteValueFunction { if (abs(static_cast(4.f)) != static_cast(4.f) || abs(static_cast(-4.f)) != static_cast(4.f)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed abs(KE::half_t)\n"); + Kokkos::printf("failed abs(KE::half_t)\n"); } if (abs(static_cast(4.f)) != static_cast(4.f) || abs(static_cast(-4.f)) != static_cast(4.f)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed abs(KE::bhalf_t)\n"); + Kokkos::printf("failed abs(KE::bhalf_t)\n"); } if (abs(5.) != 5. || abs(-5.) != 5.) { ++e; @@ -1329,19 +1331,17 @@ struct TestAbsoluteValueFunction { Kokkos::printf("failed abs(floating_point) special values\n"); } - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); + static_assert(std::is_same::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); static_assert(std::is_same(4.f))), - KE::half_t>::value, - ""); + KE::half_t>::value); static_assert(std::is_same(4.f))), - KE::bhalf_t>::value, - ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); + KE::bhalf_t>::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS - static_assert(std::is_same::value, ""); + static_assert(std::is_same::value); #endif } }; @@ -1362,26 +1362,26 @@ struct TestFloatingPointAbsoluteValueFunction { using Kokkos::fabs; if (fabs(4.f) != 4.f || fabs(-4.f) != 4.f) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fabs(float)\n"); + Kokkos::printf("failed fabs(float)\n"); } if (fabs(static_cast(4.f)) != static_cast(4.f) || fabs(static_cast(-4.f)) != static_cast(4.f)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fabs(KE::half_t)\n"); + Kokkos::printf("failed fabs(KE::half_t)\n"); } if (fabs(static_cast(4.f)) != static_cast(4.f) || fabs(static_cast(-4.f)) != static_cast(4.f)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fabs(KE::bhalf_t)\n"); + Kokkos::printf("failed fabs(KE::bhalf_t)\n"); } if (fabs(5.) != 5. || fabs(-5.) != 5.) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fabs(double)\n"); + Kokkos::printf("failed fabs(double)\n"); } #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS if (fabs(6.l) != 6.l || fabs(-6.l) != 6.l) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fabs(long double)\n"); + Kokkos::printf("failed fabs(long double)\n"); } #endif // special values @@ -1389,8 +1389,7 @@ struct TestFloatingPointAbsoluteValueFunction { using Kokkos::isnan; if (fabs(-0.) != 0. || !isinf(fabs(-INFINITY)) || !isnan(fabs(-NAN))) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF( - "failed fabs(floating_point) special values\n"); + Kokkos::printf("failed fabs(floating_point) special values\n"); } static_assert(std::is_same(4.f))), @@ -1422,7 +1421,7 @@ struct TestFloatingPointRemainderFunction : FloatingPointComparison { if (!compare(fmod(6.2f, 4.f), 2.2f, 1) && !compare(fmod(-6.2f, 4.f), -2.2f, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fmod(float)\n"); + Kokkos::printf("failed fmod(float)\n"); } if (!compare( fmod(static_cast(6.2f), static_cast(4.f)), @@ -1431,7 +1430,7 @@ struct TestFloatingPointRemainderFunction : FloatingPointComparison { fmod(static_cast(-6.2f), static_cast(4.f)), -static_cast(2.2f), 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fmod(KE::half_t)\n"); + Kokkos::printf("failed fmod(KE::half_t)\n"); } if (!compare( fmod(static_cast(6.2f), static_cast(4.f)), @@ -1440,17 +1439,17 @@ struct TestFloatingPointRemainderFunction : FloatingPointComparison { static_cast(4.f)), -static_cast(2.2f), 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fmod(KE::bhalf_t)\n"); + Kokkos::printf("failed fmod(KE::bhalf_t)\n"); } if (!compare(fmod(6.2, 4.), 2.2, 1) && !compare(fmod(-6.2, 4.), -2.2, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fmod(double)\n"); + Kokkos::printf("failed fmod(double)\n"); } #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS if (!compare(fmod(6.2l, 4.l), 2.2l, 1) && !compare(fmod(-6.2l, 4.l), -2.2l, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed fmod(long double)\n"); + Kokkos::printf("failed fmod(long double)\n"); } #endif // special values @@ -1459,23 +1458,19 @@ struct TestFloatingPointRemainderFunction : FloatingPointComparison { if (!isinf(fmod(-KE::infinity::value, 1.f)) && !isnan(fmod(-KE::quiet_NaN::value, 1.f))) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF( - "failed fmod(floating_point) special values\n"); + Kokkos::printf("failed fmod(floating_point) special values\n"); } static_assert(std::is_same(4.f), static_cast(4.f))), - KE::half_t>::value, - ""); + KE::half_t>::value); static_assert(std::is_same(4.f), static_cast(4.f))), - KE::bhalf_t>::value, - ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); + KE::bhalf_t>::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS - static_assert(std::is_same::value, - ""); + static_assert(std::is_same::value); #endif } }; @@ -1499,7 +1494,7 @@ struct TestIEEEFloatingPointRemainderFunction : FloatingPointComparison { if (!compare(remainder(6.2f, 4.f), 2.2f, 2) && !compare(remainder(-6.2f, 4.f), 2.2f, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed remainder(float)\n"); + Kokkos::printf("failed remainder(float)\n"); } if (!compare(remainder(static_cast(6.2f), static_cast(4.f)), @@ -1508,7 +1503,7 @@ struct TestIEEEFloatingPointRemainderFunction : FloatingPointComparison { static_cast(4.f)), -static_cast(2.2f), 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed remainder(KE::half_t)\n"); + Kokkos::printf("failed remainder(KE::half_t)\n"); } if (!compare(remainder(static_cast(6.2f), static_cast(4.f)), @@ -1517,18 +1512,18 @@ struct TestIEEEFloatingPointRemainderFunction : FloatingPointComparison { static_cast(4.f)), -static_cast(2.2f), 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed remainder(KE::bhalf_t)\n"); + Kokkos::printf("failed remainder(KE::bhalf_t)\n"); } if (!compare(remainder(6.2, 4.), 2.2, 2) && !compare(remainder(-6.2, 4.), 2.2, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed remainder(double)\n"); + Kokkos::printf("failed remainder(double)\n"); } #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS if (!compare(remainder(6.2l, 4.l), 2.2l, 1) && !compare(remainder(-6.2l, 4.l), -2.2l, 1)) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed remainder(long double)\n"); + Kokkos::printf("failed remainder(long double)\n"); } #endif // special values @@ -1537,26 +1532,23 @@ struct TestIEEEFloatingPointRemainderFunction : FloatingPointComparison { if (!isinf(remainder(-KE::infinity::value, 1.f)) && !isnan(remainder(-KE::quiet_NaN::value, 1.f))) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF( + Kokkos::printf( "failed remainder(floating_point) special values\n"); } static_assert( std::is_same(4.f), static_cast(4.f))), - KE::half_t>::value, - ""); + KE::half_t>::value); static_assert( std::is_same(4.f), static_cast(4.f))), - KE::bhalf_t>::value, - ""); - static_assert(std::is_same::value, - ""); - static_assert(std::is_same::value, ""); + KE::bhalf_t>::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS static_assert( - std::is_same::value, ""); + std::is_same::value); #endif } }; @@ -1568,6 +1560,7 @@ TEST(TEST_CATEGORY, mathematical_functions_ieee_remainder_function) { // TODO: TestFpClassify, see https://github.com/kokkos/kokkos/issues/6279 +#ifndef KOKKOS_MATHEMATICAL_FUNCTIONS_SKIP_2 template struct TestIsFinite { TestIsFinite() { run(); } @@ -1591,6 +1584,7 @@ struct TestIsFinite { ++e; Kokkos::printf("failed isfinite(float)\n"); } +#if !(defined(KOKKOS_ENABLE_CUDA) && defined(KOKKOS_COMPILER_MSVC)) if (!isfinite(static_cast(2.f)) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 || isfinite(quiet_NaN::value) || @@ -1611,6 +1605,7 @@ struct TestIsFinite { ++e; Kokkos::printf("failed isfinite(KE::bhalf_t)\n"); } +#endif if (!isfinite(3.) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 || isfinite(quiet_NaN::value) || @@ -1670,6 +1665,7 @@ struct TestIsInf { ++e; Kokkos::printf("failed isinf(float)\n"); } +#if !(defined(KOKKOS_ENABLE_CUDA) && defined(KOKKOS_COMPILER_MSVC)) if (isinf(static_cast(2.f)) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 || isinf(quiet_NaN::value) || @@ -1690,6 +1686,7 @@ struct TestIsInf { ++e; Kokkos::printf("failed isinf(KE::bhalf_t)\n"); } +#endif if (isinf(3.) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 || isinf(quiet_NaN::value) || @@ -1748,6 +1745,7 @@ struct TestIsNaN { ++e; Kokkos::printf("failed isnan(float)\n"); } +#if !(defined(KOKKOS_ENABLE_CUDA) && defined(KOKKOS_COMPILER_MSVC)) if (isnan(static_cast(2.f)) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 || !isnan(quiet_NaN::value) || @@ -1756,7 +1754,7 @@ struct TestIsNaN { #endif ) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed isnan(KE::half_t)\n"); + Kokkos::printf("failed isnan(KE::half_t)\n"); } if (isnan(static_cast(2.f)) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 @@ -1766,7 +1764,7 @@ struct TestIsNaN { #endif ) { ++e; - KOKKOS_IMPL_DO_NOT_USE_PRINTF("failed isnan(KE::bhalf_t)\n"); + Kokkos::printf("failed isnan(KE::bhalf_t)\n"); } if (isnan(3.) #ifndef KOKKOS_COMPILER_NVHPC // FIXME_NVHPC 23.7 @@ -1777,6 +1775,7 @@ struct TestIsNaN { ++e; Kokkos::printf("failed isnan(double)\n"); } +#endif #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS if (isnan(4.l) || !isnan(quiet_NaN::value) || !isnan(signaling_NaN::value) || @@ -1791,11 +1790,11 @@ struct TestIsNaN { Kokkos::printf("failed isnan(floating_point) special values\n"); } - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); - static_assert(std::is_same::value, ""); + static_assert(std::is_same::value); + static_assert(std::is_same::value); + static_assert(std::is_same::value); #ifdef MATHEMATICAL_FUNCTIONS_HAVE_LONG_DOUBLE_OVERLOADS - static_assert(std::is_same::value, ""); + static_assert(std::is_same::value); #endif } }; @@ -1803,6 +1802,7 @@ struct TestIsNaN { TEST(TEST_CATEGORY, mathematical_functions_isnan) { TestIsNaN(); } +#endif // TODO: TestSignBit, see https://github.com/kokkos/kokkos/issues/6279 #endif diff --git a/lib/kokkos/core/unit_test/TestMathematicalSpecialFunctions.hpp b/lib/kokkos/core/unit_test/TestMathematicalSpecialFunctions.hpp index 06c84c75137..7969dc86864 100644 --- a/lib/kokkos/core/unit_test/TestMathematicalSpecialFunctions.hpp +++ b/lib/kokkos/core/unit_test/TestMathematicalSpecialFunctions.hpp @@ -1213,13 +1213,13 @@ struct TestComplexBesselI0K0Function { } EXPECT_EQ(h_ref_cbk0(0), h_cbk0(0)); - int upper_limit = N; + int upper_limit_0 = N; // FIXME_SYCL Failing for Intel GPUs, 19 is the first failing test case #if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) if (std::is_same_v) - upper_limit = 19; + upper_limit_0 = 19; #endif - for (int i = 1; i < upper_limit; i++) { + for (int i = 1; i < upper_limit_0; i++) { EXPECT_LE(Kokkos::abs(h_cbk0(i) - h_ref_cbk0(i)), Kokkos::abs(h_ref_cbk0(i)) * 1e-13) << "at index " << i; @@ -1462,13 +1462,13 @@ struct TestComplexBesselI1K1Function { } EXPECT_EQ(h_ref_cbk1(0), h_cbk1(0)); - int upper_limit = N; + int upper_limit_1 = N; // FIXME_SYCL Failing for Intel GPUs, 8 is the first failing test case #if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) if (std::is_same_v) - upper_limit = 8; + upper_limit_1 = 8; #endif - for (int i = 1; i < upper_limit; i++) { + for (int i = 1; i < upper_limit_1; i++) { EXPECT_LE(Kokkos::abs(h_cbk1(i) - h_ref_cbk1(i)), Kokkos::abs(h_ref_cbk1(i)) * 1e-13) << "at index " << i; @@ -1718,20 +1718,26 @@ struct TestComplexBesselH1Function { ((HIP_VERSION_MAJOR == 5) && \ !((HIP_VERSION_MINOR == 5) || (HIP_VERSION_MINOR == 6))) EXPECT_EQ(h_ref_ch10(0), h_ch10(0)); - for (int i = 1; i < N; i++) { + int upper_limit_10 = N; +// FIXME_SYCL Failing for Intel GPUs, 17 is the first failing test case +#if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + upper_limit_10 = 17; +#endif + for (int i = 1; i < upper_limit_10; i++) { EXPECT_LE(Kokkos::abs(h_ch10(i) - h_ref_ch10(i)), Kokkos::abs(h_ref_ch10(i)) * 1e-13) << "at index " << i; } EXPECT_EQ(h_ref_ch11(0), h_ch11(0)); - int upper_limit = N; - // FIXME_SYCL Failing for Intel GPUs, 16 is the first failing test case + int upper_limit_11 = N; + // FIXME_SYCL Failing for Intel GPUs, 2 is the first failing test case #if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) if (std::is_same_v) - upper_limit = 16; + upper_limit_11 = 2; #endif - for (int i = 1; i < upper_limit; i++) { + for (int i = 1; i < upper_limit_11; i++) { EXPECT_LE(Kokkos::abs(h_ch11(i) - h_ref_ch11(i)), Kokkos::abs(h_ref_ch11(i)) * 1e-13) << "at index " << i; @@ -1912,19 +1918,26 @@ struct TestComplexBesselH2Function { ((HIP_VERSION_MAJOR == 5) && \ !((HIP_VERSION_MINOR == 5) || (HIP_VERSION_MINOR == 6))) EXPECT_EQ(h_ref_ch20(0), h_ch20(0)); - for (int i = 1; i < N; i++) { + int upper_limit_20 = N; +// FIXME_SYCL Failing for Intel GPUs, 16 is the first failing test case +#if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + upper_limit_20 = 16; +#endif + for (int i = 1; i < upper_limit_20; i++) { EXPECT_LE(Kokkos::abs(h_ch20(i) - h_ref_ch20(i)), - Kokkos::abs(h_ref_ch20(i)) * 1e-13); + Kokkos::abs(h_ref_ch20(i)) * 1e-13) + << "at index " << i; } EXPECT_EQ(h_ref_ch21(0), h_ch21(0)); - int upper_limit = N; - // FIXME_SYCL Failing for Intel GPUs, 17 is the first failing test case + int upper_limit_21 = N; + // FIXME_SYCL Failing for Intel GPUs, 1 is the first failing test case #if defined(KOKKOS_ENABLE_SYCL) && defined(KOKKOS_ARCH_INTEL_GPU) if (std::is_same_v) - upper_limit = 17; + upper_limit_21 = 1; #endif - for (int i = 1; i < upper_limit; i++) { + for (int i = 1; i < upper_limit_21; i++) { EXPECT_LE(Kokkos::abs(h_ch21(i) - h_ref_ch21(i)), Kokkos::abs(h_ref_ch21(i)) * 1e-13) << "at index " << i; @@ -1954,31 +1967,61 @@ TEST(TEST_CATEGORY, mathspecialfunc_errorfunc) { #endif TEST(TEST_CATEGORY, mathspecialfunc_cbesselj0y0) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselJ0Y0Function test; test.testit(); } TEST(TEST_CATEGORY, mathspecialfunc_cbesselj1y1) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselJ1Y1Function test; test.testit(); } TEST(TEST_CATEGORY, mathspecialfunc_cbesseli0k0) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselI0K0Function test; test.testit(); } TEST(TEST_CATEGORY, mathspecialfunc_cbesseli1k1) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselI1K1Function test; test.testit(); } TEST(TEST_CATEGORY, mathspecialfunc_cbesselh1stkind) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselH1Function test; test.testit(); } TEST(TEST_CATEGORY, mathspecialfunc_cbesselh2ndkind) { +#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_ARCH_INTEL_GPU) + if (std::is_same_v) + GTEST_SKIP() << "skipping since test is known to fail with OpenMPTarget on " + "Intel GPUs"; // FIXME_OPENMPTARGET +#endif TestComplexBesselH2Function test; test.testit(); } diff --git a/lib/kokkos/core/unit_test/TestNonTrivialScalarTypes.hpp b/lib/kokkos/core/unit_test/TestNonTrivialScalarTypes.hpp index eaf7a4125cc..116ac58c39f 100644 --- a/lib/kokkos/core/unit_test/TestNonTrivialScalarTypes.hpp +++ b/lib/kokkos/core/unit_test/TestNonTrivialScalarTypes.hpp @@ -214,7 +214,7 @@ struct point_t { uint8_t x, y, z; KOKKOS_FUNCTION - point_t() : x(1), y(1), z(1){}; + point_t() : x(0), y(0), z(0){}; KOKKOS_FUNCTION point_t(const point_t &val) : x(val.x), y(val.y), z(val.z){}; diff --git a/lib/kokkos/core/unit_test/TestNumericTraits.hpp b/lib/kokkos/core/unit_test/TestNumericTraits.hpp index 2b5531f29a6..81a9d0a5e0d 100644 --- a/lib/kokkos/core/unit_test/TestNumericTraits.hpp +++ b/lib/kokkos/core/unit_test/TestNumericTraits.hpp @@ -110,8 +110,8 @@ struct TestNumericTraits { KOKKOS_FUNCTION void operator()(Epsilon, int, int& e) const { using Kokkos::Experimental::epsilon; - auto const eps = epsilon::value; - auto const one = T(1); + T const eps = epsilon::value; + T const one = 1; // Avoid higher precision intermediate representation compare() = one + eps; e += (int)!(compare() != one); @@ -210,9 +210,10 @@ TEST(TEST_CATEGORY, numeric_traits_infinity) { #endif TestNumericTraits(); TestNumericTraits(); - // FIXME_NVHPC long double not supported -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -224,9 +225,9 @@ TEST(TEST_CATEGORY, numeric_traits_epsilon) { #endif TestNumericTraits(); TestNumericTraits(); - // FIXME_NVHPC long double not supported -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -239,9 +240,9 @@ TEST(TEST_CATEGORY, numeric_traits_round_error) { #endif TestNumericTraits(); TestNumericTraits(); - // FIXME_NVHPC long double not supported -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -253,9 +254,9 @@ TEST(TEST_CATEGORY, numeric_traits_norm_min) { #endif TestNumericTraits(); TestNumericTraits(); - // FIXME_NVHPC long double not supported -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -263,9 +264,9 @@ TEST(TEST_CATEGORY, numeric_traits_norm_min) { TEST(TEST_CATEGORY, numeric_traits_denorm_min) { TestNumericTraits(); TestNumericTraits(); - // FIXME_NVHPC long double not supported -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -302,8 +303,10 @@ TEST(TEST_CATEGORY, numeric_traits_finite_min_max) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); TestNumericTraits(); #endif @@ -326,8 +329,10 @@ TEST(TEST_CATEGORY, numeric_traits_digits) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -349,8 +354,10 @@ TEST(TEST_CATEGORY, numeric_traits_digits10) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -358,8 +365,10 @@ TEST(TEST_CATEGORY, numeric_traits_digits10) { TEST(TEST_CATEGORY, numeric_traits_max_digits10) { TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -380,8 +389,10 @@ TEST(TEST_CATEGORY, numeric_traits_radix) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); #endif } @@ -395,8 +406,10 @@ TEST(TEST_CATEGORY, numeric_traits_min_max_exponent) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); TestNumericTraits(); #endif @@ -407,8 +420,10 @@ TEST(TEST_CATEGORY, numeric_traits_min_max_exponent10) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); TestNumericTraits(); #endif @@ -426,8 +441,10 @@ TEST(TEST_CATEGORY, numeric_traits_quiet_and_signaling_nan) { TestNumericTraits(); TestNumericTraits(); TestNumericTraits(); -#if !defined(KOKKOS_ENABLE_CUDA) || \ - !defined(KOKKOS_COMPILER_NVHPC) // 23.7 long double: + // FIXME_NVHPC 23.7 long double + // FIXME_OPENMPTARGET long double on Intel GPUs +#if (!defined(KOKKOS_ENABLE_CUDA) || !defined(KOKKOS_COMPILER_NVHPC)) && \ + (!defined(KOKKOS_ENABLE_OPENMPTARGET) || !defined(KOKKOS_ARCH_INTEL_GPU)) TestNumericTraits(); TestNumericTraits(); #endif @@ -442,7 +459,7 @@ struct HasNoSpecialization {}; using TRAIT##_value_t = decltype(Kokkos::Experimental::TRAIT::value); \ template \ using has_##TRAIT = Kokkos::is_detected; \ - static_assert(!has_##TRAIT::value, ""); + static_assert(!has_##TRAIT::value); CHECK_TRAIT_IS_SFINAE_FRIENDLY(infinity) CHECK_TRAIT_IS_SFINAE_FRIENDLY(finite_min) @@ -524,39 +541,39 @@ CHECK_SAME_AS_NUMERIC_LIMITS_MEMBER_FUNCTION(long double, denorm_min); #endif // clang-format off -static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits< float>::min(), ""); -static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits< double>::min(), ""); -static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits::min(), ""); +static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits< float>::min()); +static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits< double>::min()); +static_assert(Kokkos::Experimental::norm_min::value == std::numeric_limits::min()); // integer types -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< char>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< signed char>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned char>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< short>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned short>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< int>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned int>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< long int>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned long int>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< long long int>::min(), ""); -static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits::min(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< char>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< signed char>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned char>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< short>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned short>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< int>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned int>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< long int>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned long int>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< long long int>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits::max(), ""); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< char>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< signed char>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned char>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< short>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned short>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< int>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned int>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< long int>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< unsigned long int>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits< long long int>::min()); +static_assert(Kokkos::Experimental::finite_min::value == std::numeric_limits::min()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< char>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< signed char>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned char>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< short>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned short>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< int>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned int>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< long int>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< unsigned long int>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< long long int>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits::max()); // floating point types -static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits< float>::max(), ""); -static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits< double>::max(), ""); -static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< float>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< double>::max(), ""); -static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits::max(), ""); +static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits< float>::max()); +static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits< double>::max()); +static_assert(Kokkos::Experimental::finite_min::value == -std::numeric_limits::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< float>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits< double>::max()); +static_assert(Kokkos::Experimental::finite_max::value == std::numeric_limits::max()); // clang-format on CHECK_SAME_AS_NUMERIC_LIMITS_MEMBER_CONSTANT(bool, digits); @@ -623,15 +640,13 @@ CHECK_SAME_AS_NUMERIC_LIMITS_MEMBER_CONSTANT(long double, max_exponent10); #undef CHECK_SAME_AS_NUMERIC_LIMITS_MEMBER_FUNCTION #undef CHECK_SAME_AS_NUMERIC_LIMITS_MEMBER_CONSTANT -#define CHECK_NAN_SAME_AS_NUMERIC_LIMITS_MEMBER_FUNCTION(T, TRAIT) \ - static_assert(Kokkos::Experimental::TRAIT::value != \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ - static_assert( \ - std::numeric_limits::TRAIT() != std::numeric_limits::TRAIT(), ""); \ - static_assert(Kokkos::Experimental::TRAIT::value != \ - std::numeric_limits::TRAIT(), \ - "") +#define CHECK_NAN_SAME_AS_NUMERIC_LIMITS_MEMBER_FUNCTION(T, TRAIT) \ + static_assert(Kokkos::Experimental::TRAIT::value != \ + Kokkos::Experimental::TRAIT::value); \ + static_assert(std::numeric_limits::TRAIT() != \ + std::numeric_limits::TRAIT()); \ + static_assert(Kokkos::Experimental::TRAIT::value != \ + std::numeric_limits::TRAIT()) // Workaround compiler issue error: expression must have a constant value // See kokkos/kokkos#4574 @@ -651,14 +666,11 @@ CHECK_NAN_SAME_AS_NUMERIC_LIMITS_MEMBER_FUNCTION(long double, signaling_NaN); #define CHECK_INSTANTIATED_ON_CV_QUALIFIED_TYPES(T, TRAIT) \ static_assert(Kokkos::Experimental::TRAIT::value == \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ + Kokkos::Experimental::TRAIT::value); \ static_assert(Kokkos::Experimental::TRAIT::value == \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ + Kokkos::Experimental::TRAIT::value); \ static_assert(Kokkos::Experimental::TRAIT::value == \ - Kokkos::Experimental::TRAIT::value, \ - "") + Kokkos::Experimental::TRAIT::value) #define CHECK_INSTANTIATED_ON_CV_QUALIFIED_TYPES_FLOATING_POINT(TRAIT) \ CHECK_INSTANTIATED_ON_CV_QUALIFIED_TYPES(float, TRAIT); \ @@ -706,17 +718,13 @@ CHECK_INSTANTIATED_ON_CV_QUALIFIED_TYPES_FLOATING_POINT(max_exponent10); #define CHECK_NAN_INSTANTIATED_ON_CV_QUALIFIED_TYPES(T, TRAIT) \ static_assert(Kokkos::Experimental::TRAIT::value != \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ + Kokkos::Experimental::TRAIT::value); \ static_assert(Kokkos::Experimental::TRAIT::value != \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ + Kokkos::Experimental::TRAIT::value); \ static_assert(Kokkos::Experimental::TRAIT::value != \ - Kokkos::Experimental::TRAIT::value, \ - ""); \ + Kokkos::Experimental::TRAIT::value); \ static_assert(Kokkos::Experimental::TRAIT::value != \ - Kokkos::Experimental::TRAIT::value, \ - "") + Kokkos::Experimental::TRAIT::value) #define CHECK_NAN_INSTANTIATED_ON_CV_QUALIFIED_TYPES_FLOATING_POINT(TRAIT) \ CHECK_NAN_INSTANTIATED_ON_CV_QUALIFIED_TYPES(float, TRAIT); \ diff --git a/lib/kokkos/core/unit_test/TestOccupancyControlTrait.hpp b/lib/kokkos/core/unit_test/TestOccupancyControlTrait.hpp new file mode 100644 index 00000000000..345a906d668 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestOccupancyControlTrait.hpp @@ -0,0 +1,80 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include + +namespace { + +template +void test_policy_execution(const Kokkos::RangePolicy& policy) { + Kokkos::parallel_for(policy, KOKKOS_LAMBDA(int){}); +} +template +void test_policy_execution(const Kokkos::TeamPolicy& policy) { + Kokkos::parallel_for( + policy, + KOKKOS_LAMBDA( + const typename Kokkos::TeamPolicy::member_type&){}); +} +template +void test_policy_execution(const Kokkos::MDRangePolicy& policy) { + Kokkos::parallel_for(policy, KOKKOS_LAMBDA(int, int){}); +} + +template +void test_prefer_desired_occupancy(Policy policy) { + using Kokkos::Experimental::DesiredOccupancy; + using Kokkos::Experimental::MaximizeOccupancy; + using Kokkos::Experimental::prefer; + using Kokkos::Experimental::WorkItemProperty; + + // MaximizeOccupancy -> MaximizeOccupancy + auto const policy_still_no_occ = prefer(policy, MaximizeOccupancy{}); + test_policy_execution(policy_still_no_occ); + + // MaximizeOccupancy -> DesiredOccupancy + auto const policy_with_occ = + prefer(policy_still_no_occ, DesiredOccupancy{33}); + test_policy_execution(policy_with_occ); + + // DesiredOccupancy -> DesiredOccupancy + auto const policy_change_occ = prefer(policy_with_occ, DesiredOccupancy{24}); + test_policy_execution(policy_change_occ); + + // DesiredOccupancy -> DesiredOccupancy w/ hint + auto policy_with_occ_and_hint = Kokkos::Experimental::require( + policy_change_occ, + Kokkos::Experimental::WorkItemProperty::HintLightWeight); + test_policy_execution(policy_with_occ_and_hint); + + // DesiredOccupancy -> MaximizeOccupancy + auto const policy_drop_occ = + prefer(policy_with_occ_and_hint, MaximizeOccupancy{}); + test_policy_execution(policy_drop_occ); +} + +// FIXME_MSVC_WITH_CUDA +// This test doesn't compile with CUDA on Windows +#if !(defined(_WIN32) && defined(KOKKOS_ENABLE_CUDA)) +TEST(TEST_CATEGORY, occupancy_control) { + test_prefer_desired_occupancy(Kokkos::RangePolicy(0, 1)); + test_prefer_desired_occupancy( + Kokkos::TeamPolicy{1, Kokkos::AUTO}); + test_prefer_desired_occupancy( + Kokkos::MDRangePolicy>{{0, 0}, {1, 1}}); +} +#endif +} // namespace diff --git a/lib/kokkos/core/unit_test/TestParseCmdLineArgsAndEnvVars.cpp b/lib/kokkos/core/unit_test/TestParseCmdLineArgsAndEnvVars.cpp index 176ce9b5fed..a56dfd9efc7 100644 --- a/lib/kokkos/core/unit_test/TestParseCmdLineArgsAndEnvVars.cpp +++ b/lib/kokkos/core/unit_test/TestParseCmdLineArgsAndEnvVars.cpp @@ -166,22 +166,6 @@ TEST(defaultdevicetype, cmd_line_args_device_id) { EXPECT_REMAINING_COMMAND_LINE_ARGUMENTS(cla, {"--dummy"}); } -TEST(defaultdevicetype, cmd_line_args_num_devices) { - CmdLineArgsHelper cla = {{ - "--kokkos-num-devices=5,6", - "--kokkos-num-devices=7", - "-v", - }}; - Kokkos::InitializationSettings settings; - Kokkos::Impl::parse_command_line_arguments(cla.argc(), cla.argv(), settings); - EXPECT_TRUE(settings.has_num_devices()); - EXPECT_EQ(settings.get_num_devices(), 7); - // this is the current behavior, not suggesting this cannot be revisited - EXPECT_TRUE(settings.has_skip_device()) << "behavior changed see comment"; - EXPECT_EQ(settings.get_skip_device(), 6) << "behavior changed see comment"; - EXPECT_REMAINING_COMMAND_LINE_ARGUMENTS(cla, {"-v"}); -} - TEST(defaultdevicetype, cmd_line_args_disable_warning) { CmdLineArgsHelper cla = {{ "--kokkos-disable-warnings=1", @@ -351,20 +335,6 @@ TEST(defaultdevicetype, env_vars_device_id) { EXPECT_EQ(settings.get_device_id(), 33); } -TEST(defaultdevicetype, env_vars_num_devices) { - EnvVarsHelper ev = {{ - {"KOKKOS_NUM_DEVICES", "4"}, - {"KOKKOS_SKIP_DEVICE", "1"}, - }}; - SKIP_IF_ENVIRONMENT_VARIABLE_ALREADY_SET(ev); - Kokkos::InitializationSettings settings; - Kokkos::Impl::parse_environment_variables(settings); - EXPECT_TRUE(settings.has_num_devices()); - EXPECT_EQ(settings.get_num_devices(), 4); - EXPECT_TRUE(settings.has_skip_device()); - EXPECT_EQ(settings.get_skip_device(), 1); -} - TEST(defaultdevicetype, env_vars_disable_warnings) { for (auto const& value_true : {"1", "true", "TRUE", "yEs"}) { EnvVarsHelper ev = {{ @@ -420,22 +390,20 @@ TEST(defaultdevicetype, env_vars_tune_internals) { } TEST(defaultdevicetype, visible_devices) { -#define KOKKOS_TEST_VISIBLE_DEVICES(ENV, CNT, DEV) \ - do { \ - EnvVarsHelper ev{ENV}; \ - SKIP_IF_ENVIRONMENT_VARIABLE_ALREADY_SET(ev); \ - Kokkos::InitializationSettings settings; \ - Kokkos::Impl::parse_environment_variables(settings); \ - auto computed = Kokkos::Impl::get_visible_devices(settings, CNT); \ - std::vector expected = DEV; \ - EXPECT_EQ(expected.size(), computed.size()) \ - << ev << "device count: " << CNT; \ - auto n = std::min(expected.size(), computed.size()); \ - for (int i = 0; i < n; ++i) { \ - EXPECT_EQ(expected[i], computed[i]) \ - << "devices differ at index " << i << '\n' \ - << ev << "device count: " << CNT; \ - } \ +#define KOKKOS_TEST_VISIBLE_DEVICES(ENV, CNT, DEV) \ + do { \ + EnvVarsHelper ev{ENV}; \ + SKIP_IF_ENVIRONMENT_VARIABLE_ALREADY_SET(ev); \ + auto computed = Kokkos::Impl::get_visible_devices(CNT); \ + std::vector expected = DEV; \ + EXPECT_EQ(expected.size(), computed.size()) \ + << ev << "device count: " << CNT; \ + auto n = std::min(expected.size(), computed.size()); \ + for (int i = 0; i < n; ++i) { \ + EXPECT_EQ(expected[i], computed[i]) \ + << "devices differ at index " << i << '\n' \ + << ev << "device count: " << CNT; \ + } \ } while (false) #define DEV(...) \ @@ -444,6 +412,8 @@ TEST(defaultdevicetype, visible_devices) { // first test with all environment variables that are involved in determining // the visible devices so user set var do not mess up the logic below. + // KOKKOS_NUM_DEVICES and KOKKOS_SKIP_DEVICE are deprecated since 3.7 and are + // not taken into account anymore. KOKKOS_TEST_VISIBLE_DEVICES( ENV({"KOKKOS_VISIBLE_DEVICES", "2,1"}, {"KOKKOS_NUM_DEVICES", "8"}, {"KOKKOS_SKIP_DEVICE", "1"}), @@ -452,10 +422,10 @@ TEST(defaultdevicetype, visible_devices) { ENV({"KOKKOS_VISIBLE_DEVICES", "2,1"}, {"KOKKOS_NUM_DEVICES", "8"}, ), 6, DEV(2, 1)); KOKKOS_TEST_VISIBLE_DEVICES(ENV({"KOKKOS_NUM_DEVICES", "3"}), 6, - DEV(0, 1, 2)); + DEV(0, 1, 2, 3, 4, 5)); KOKKOS_TEST_VISIBLE_DEVICES( ENV({"KOKKOS_NUM_DEVICES", "4"}, {"KOKKOS_SKIP_DEVICE", "1"}, ), 6, - DEV(0, 2, 3)); + DEV(0, 1, 2, 3, 4, 5)); KOKKOS_TEST_VISIBLE_DEVICES(ENV({"KOKKOS_VISIBLE_DEVICES", "1,3,4"}), 6, DEV(1, 3, 4)); KOKKOS_TEST_VISIBLE_DEVICES( diff --git a/lib/kokkos/core/unit_test/TestRangePolicyCTAD.cpp b/lib/kokkos/core/unit_test/TestRangePolicyCTAD.cpp new file mode 100644 index 00000000000..20288e2b40a --- /dev/null +++ b/lib/kokkos/core/unit_test/TestRangePolicyCTAD.cpp @@ -0,0 +1,150 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include +#include "Kokkos_Core_fwd.hpp" + +namespace { + +struct TestRangePolicyCTAD { + struct SomeExecutionSpace { + using execution_space = SomeExecutionSpace; + using size_type = size_t; + + [[maybe_unused]] static int concurrency() { return 0; } + }; + static_assert(Kokkos::is_execution_space_v); + + struct ImplicitlyConvertibleToDefaultExecutionSpace { + [[maybe_unused]] operator Kokkos::DefaultExecutionSpace() const { + return Kokkos::DefaultExecutionSpace(); + } + }; + static_assert(!Kokkos::is_execution_space_v< + ImplicitlyConvertibleToDefaultExecutionSpace>); + + [[maybe_unused]] static inline auto i64 = int64_t(); + [[maybe_unused]] static inline auto i32 = int32_t(); + [[maybe_unused]] static inline auto cs = Kokkos::ChunkSize(0); + [[maybe_unused]] static inline auto des = Kokkos::DefaultExecutionSpace(); + [[maybe_unused]] static inline auto nes = + ImplicitlyConvertibleToDefaultExecutionSpace(); + [[maybe_unused]] static inline auto ses = SomeExecutionSpace(); + + // RangePolicy() + + [[maybe_unused]] static inline auto rp = Kokkos::RangePolicy{}; + static_assert(std::is_same_v, decltype(rp)>); + + // RangePolicy(index_type, index_type) + + [[maybe_unused]] static inline auto rpi64i64 = Kokkos::RangePolicy(i64, i64); + static_assert(std::is_same_v, decltype(rpi64i64)>); + + [[maybe_unused]] static inline auto rpi64i32 = Kokkos::RangePolicy(i64, i32); + static_assert(std::is_same_v, decltype(rpi64i32)>); + + [[maybe_unused]] static inline auto rpi32i64 = Kokkos::RangePolicy(i32, i64); + static_assert(std::is_same_v, decltype(rpi32i64)>); + + [[maybe_unused]] static inline auto rpi32i32 = Kokkos::RangePolicy(i32, i32); + static_assert(std::is_same_v, decltype(rpi32i32)>); + + // RangePolicy(index_type, index_type, ChunkSize) + + [[maybe_unused]] static inline auto rpi64i64cs = + Kokkos::RangePolicy(i64, i64, cs); + static_assert(std::is_same_v, decltype(rpi64i64cs)>); + + [[maybe_unused]] static inline auto rpi64i32cs = + Kokkos::RangePolicy(i64, i32, cs); + static_assert(std::is_same_v, decltype(rpi64i32cs)>); + + [[maybe_unused]] static inline auto rpi32i64cs = + Kokkos::RangePolicy(i32, i64, cs); + static_assert(std::is_same_v, decltype(rpi32i64cs)>); + + [[maybe_unused]] static inline auto rpi32i32cs = + Kokkos::RangePolicy(i32, i32, cs); + static_assert(std::is_same_v, decltype(rpi32i32cs)>); + + // RangePolicy(execution_space, index_type, index_type) + + [[maybe_unused]] static inline auto rpdesi64i64 = + Kokkos::RangePolicy(des, i64, i64); + static_assert(std::is_same_v, decltype(rpdesi64i64)>); + + [[maybe_unused]] static inline auto rpdesi32i32 = + Kokkos::RangePolicy(des, i32, i32); + static_assert(std::is_same_v, decltype(rpdesi32i32)>); + + [[maybe_unused]] static inline auto rpnesi64i64 = + Kokkos::RangePolicy(nes, i64, i64); + static_assert(std::is_same_v, decltype(rpnesi64i64)>); + + [[maybe_unused]] static inline auto rpnesi32i32 = + Kokkos::RangePolicy(nes, i32, i32); + static_assert(std::is_same_v, decltype(rpnesi32i32)>); + + [[maybe_unused]] static inline auto rpsesi64i64 = + Kokkos::RangePolicy(ses, i64, i64); + static_assert(std::is_same_v, + decltype(rpsesi64i64)>); + + [[maybe_unused]] static inline auto rpsesi32i32 = + Kokkos::RangePolicy(ses, i32, i32); + static_assert(std::is_same_v, + decltype(rpsesi32i32)>); + + // RangePolicy(execution_space, index_type, index_type, ChunkSize) + + [[maybe_unused]] static inline auto rpdesi64i64cs = + Kokkos::RangePolicy(des, i64, i64, cs); + static_assert(std::is_same_v, decltype(rpdesi64i64cs)>); + + [[maybe_unused]] static inline auto rpdesi32i32cs = + Kokkos::RangePolicy(des, i32, i32, cs); + static_assert(std::is_same_v, decltype(rpdesi32i32cs)>); + + [[maybe_unused]] static inline auto rpnesi64i64cs = + Kokkos::RangePolicy(nes, i64, i64, cs); + static_assert(std::is_same_v, decltype(rpnesi64i64cs)>); + + [[maybe_unused]] static inline auto rpnesi32i32cs = + Kokkos::RangePolicy(nes, i32, i32, cs); + static_assert(std::is_same_v, decltype(rpnesi32i32cs)>); + + [[maybe_unused]] static inline auto rpsesi64i64cs = + Kokkos::RangePolicy(ses, i64, i64, cs); + static_assert(std::is_same_v, + decltype(rpsesi64i64cs)>); + + [[maybe_unused]] static inline auto rpsesi32i32cs = + Kokkos::RangePolicy(ses, i32, i32, cs); + static_assert(std::is_same_v, + decltype(rpsesi32i32cs)>); + +}; // TestRangePolicyCTAD struct + +// To eliminate maybe_unused warning on some compilers + +[[maybe_unused]] const Kokkos::DefaultExecutionSpace nestodes = + TestRangePolicyCTAD::ImplicitlyConvertibleToDefaultExecutionSpace(); + +[[maybe_unused]] const auto sesconcurrency = + TestRangePolicyCTAD::ses.concurrency(); + +} // namespace diff --git a/lib/kokkos/core/unit_test/TestRangePolicyConstructors.hpp b/lib/kokkos/core/unit_test/TestRangePolicyConstructors.hpp index 0a7e59ed980..c8c1542af13 100644 --- a/lib/kokkos/core/unit_test/TestRangePolicyConstructors.hpp +++ b/lib/kokkos/core/unit_test/TestRangePolicyConstructors.hpp @@ -18,6 +18,9 @@ #include +#include +#include + namespace { TEST(TEST_CATEGORY, range_policy_runtime_parameters) { @@ -70,4 +73,127 @@ TEST(TEST_CATEGORY, range_policy_runtime_parameters) { } } +TEST(TEST_CATEGORY_DEATH, range_policy_invalid_bounds) { + using Policy = Kokkos::RangePolicy; + using ChunkSize = Kokkos::ChunkSize; + + std::string msg = + "Kokkos::RangePolicy bounds error: The lower bound (100) is greater than " + "the upper bound (90).\n"; +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE_4 + // escape the parentheses in the regex to match the error message + msg = std::regex_replace(msg, std::regex("\\(|\\)"), "\\$&"); + ASSERT_DEATH({ (void)Policy(100, 90); }, msg); + + ASSERT_DEATH({ (void)Policy(TEST_EXECSPACE(), 100, 90, ChunkSize(10)); }, + msg); +#else + + if (!Kokkos::show_warnings()) { + GTEST_SKIP() << "Kokkos warning messages are disabled"; + } + + { + ::testing::internal::CaptureStderr(); + Policy policy(100, 90); + ASSERT_EQ((int)policy.begin(), 0); + ASSERT_EQ((int)policy.end(), 0); +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + ASSERT_EQ(::testing::internal::GetCapturedStderr(), msg); +#else + ASSERT_TRUE(::testing::internal::GetCapturedStderr().empty()); + (void)msg; +#endif + } + + { + ::testing::internal::CaptureStderr(); + Policy policy(TEST_EXECSPACE(), 100, 90, ChunkSize(10)); + ASSERT_EQ((int)policy.begin(), 0); + ASSERT_EQ((int)policy.end(), 0); +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + ASSERT_EQ(::testing::internal::GetCapturedStderr(), msg); +#else + ASSERT_TRUE(::testing::internal::GetCapturedStderr().empty()); + (void)msg; +#endif + } + +#endif +} + +TEST(TEST_CATEGORY_DEATH, range_policy_implicitly_converted_bounds) { + using UIntIndexType = Kokkos::IndexType; + using IntIndexType = Kokkos::IndexType; + using UIntPolicy = Kokkos::RangePolicy; + using IntPolicy = Kokkos::RangePolicy; + + std::string msg = + "Kokkos::RangePolicy bound type error: an unsafe implicit conversion is " + "performed on a bound (), which may not preserve its original value.\n"; + + auto get_error_msg = [](auto str, auto val) { + return str.insert(str.find("(") + 1, std::to_string(val).c_str()); + }; +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE_4 + std::string expected = std::regex_replace(msg, std::regex("\\(|\\)"), "\\$&"); + { + int test_val = -1; + ASSERT_DEATH({ (void)UIntPolicy(test_val, 10); }, + get_error_msg(expected, test_val)); + } + { + unsigned test_val = std::numeric_limits::max(); + ASSERT_DEATH({ (void)IntPolicy(0u, test_val); }, + get_error_msg(expected, test_val)); + } + { + long long test_val = std::numeric_limits::max(); + ASSERT_DEATH({ (void)IntPolicy(0LL, test_val); }, + get_error_msg(expected, test_val)); + } + { + int test_val = -1; + ASSERT_DEATH({ (void)UIntPolicy(test_val, 10, Kokkos::ChunkSize(2)); }, + get_error_msg(expected, test_val)); + } + +#else + { + ::testing::internal::CaptureStderr(); + int test_val = -1; + UIntPolicy policy(test_val, 10); + ASSERT_EQ(policy.begin(), 0u); + ASSERT_EQ(policy.end(), 0u); +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + if (Kokkos::show_warnings()) { + auto s = std::string(::testing::internal::GetCapturedStderr()); + ASSERT_EQ(s.substr(0, s.find("\n") + 1), get_error_msg(msg, test_val)); + } +#else + ASSERT_TRUE(::testing::internal::GetCapturedStderr().empty()); + (void)msg; + (void)get_error_msg; +#endif + } + { + ::testing::internal::CaptureStderr(); + unsigned test_val = std::numeric_limits::max(); + IntPolicy policy(0u, test_val); + ASSERT_EQ(policy.begin(), 0); + ASSERT_EQ(policy.end(), 0); +#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS + if (Kokkos::show_warnings()) { + auto s = std::string(::testing::internal::GetCapturedStderr()); + ASSERT_EQ(s.substr(0, s.find("\n") + 1), get_error_msg(msg, test_val)); + } +#else + ASSERT_TRUE(::testing::internal::GetCapturedStderr().empty()); + (void)msg; + (void)get_error_msg; +#endif + } +#endif +} + } // namespace diff --git a/lib/kokkos/core/unit_test/TestReducers.hpp b/lib/kokkos/core/unit_test/TestReducers.hpp index 957b9a0ca1a..fbcb9629af0 100644 --- a/lib/kokkos/core/unit_test/TestReducers.hpp +++ b/lib/kokkos/core/unit_test/TestReducers.hpp @@ -19,6 +19,7 @@ #include #include +#include //-------------------------------------------------------------------------- @@ -46,6 +47,37 @@ struct TestReducers { void operator()(const int& i, Scalar& value) const { value += values(i); } }; + struct TeamSumFunctor { + using member_type = typename Kokkos::TeamPolicy::member_type; + + KOKKOS_INLINE_FUNCTION + void operator()(const member_type& m, Scalar& value) const { + if (m.team_rank() == m.team_size() - 1) value += Scalar(1); + } + }; + + struct TeamSumNestedFunctor { + using member_type = typename Kokkos::TeamPolicy::member_type; + + SumFunctor f; + int M, N; + Kokkos::View result; + + TeamSumNestedFunctor(SumFunctor& f_, const int M_, const int N_, + Kokkos::View result_) + : f(f_), M(M_), N(N_), result(result_) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const member_type& m) const { + const int i = m.league_rank(); + Scalar local_scalar; + Kokkos::Sum reducer_scalar( + local_scalar); + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(m, N), f, reducer_scalar); + result(i) = local_scalar; + } + }; + struct ProdFunctor { Kokkos::View values; @@ -319,6 +351,102 @@ struct TestReducers { value = value || values(i); } }; + + // get number of teams for TeamPolicy depending on the tested type + constexpr static int get_num_teams() { + if constexpr (sizeof(Scalar) == 1) { + return 126; + } else if constexpr (std::is_same_v) { + return 256; + } + + return 1024; + } + + static void test_sum_team_policy(int N, SumFunctor f, Scalar reference_sum) { +#ifdef KOKKOS_ENABLE_OPENACC + if constexpr (std::is_same_v && + (std::is_same_v || + std::is_same_v)) { + return; // FIXME_OPENACC + } +#endif + + Scalar sum_scalar; + Kokkos::View sum_view("result"); + Kokkos::deep_copy(sum_view, Scalar(1)); + + // Test team policy reduction + { + constexpr int num_teams = get_num_teams(); + TeamSumFunctor tf; + // FIXME_OPENMPTARGET temporary restriction for team size to be at least + // 32 +#ifdef KOKKOS_ENABLE_OPENMPTARGET + int team_size = + std::is_same::value + ? 32 + : 1; +#else + int team_size = 1; +#endif + auto team_pol = Kokkos::TeamPolicy(num_teams, team_size); + Kokkos::parallel_reduce(team_pol, tf, sum_view); + Kokkos::deep_copy(sum_scalar, sum_view); + ASSERT_EQ(sum_scalar, Scalar{num_teams}) << "num_teams: " << num_teams; + } + + // Test TeamThreadRange level reduction with 0 work produces 0 result + { + const int league_size = 1; + Kokkos::View result("result", league_size); + TeamSumNestedFunctor tnf(f, league_size, 0, result); + // FIXME_OPENMPTARGET temporary restriction for team size to be at least + // 32 +#ifdef KOKKOS_ENABLE_OPENMPTARGET + int team_size = + std::is_same::value + ? 32 + : 1; +#else + int team_size = 1; +#endif + auto team_pol = Kokkos::TeamPolicy(1, team_size); + Kokkos::parallel_for(team_pol, tnf); + auto result_h = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), result); + ASSERT_EQ(result_h(0), Scalar{0}) << "N: " << N; + } + + // Same test as above, but with inner reduction over N, and league_size=10 + { + const int league_size = 10; + Kokkos::View result("result", league_size); + TeamSumNestedFunctor tnf(f, league_size, N, result); + // FIXME_OPENMPTARGET temporary restriction for team size to be at least + // 32 +#ifdef KOKKOS_ENABLE_OPENMPTARGET + int initial_team_size = + std::is_same_v ? 32 + : 1; +#else + int initial_team_size = 1; +#endif + auto team_size_max = + Kokkos::TeamPolicy(league_size, initial_team_size) + .team_size_max(tnf, Kokkos::ParallelForTag()); + auto team_size = std::min(team_size_max, TEST_EXECSPACE().concurrency()); + auto team_pol = Kokkos::TeamPolicy(league_size, team_size); + Kokkos::parallel_for(team_pol, tnf); + auto result_h = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), result); + for (int i = 0; i < result_h.extent_int(0); ++i) { + ASSERT_EQ(result_h(i), reference_sum) << "N: " << N; + } + } + } + static void test_sum(int N) { Kokkos::View values("Values", N); auto h_values = Kokkos::create_mirror_view(values); @@ -374,6 +502,8 @@ struct TestReducers { ASSERT_EQ(sum_scalar_view, reference_sum) << "N: " << N; } + test_sum_team_policy(N, f, reference_sum); + { Kokkos::View sum_view("View"); sum_view() = Scalar(1); diff --git a/lib/kokkos/core/unit_test/TestReducers_d.hpp b/lib/kokkos/core/unit_test/TestReducers_d.hpp index 19eaa6d7000..ecf851aa108 100644 --- a/lib/kokkos/core/unit_test/TestReducers_d.hpp +++ b/lib/kokkos/core/unit_test/TestReducers_d.hpp @@ -80,6 +80,20 @@ TEST(TEST_CATEGORY, reducers_int8_t) { TestReducers::test_prod(4); } +TEST(TEST_CATEGORY, reducers_int16_t) { + using ThisTestType = int16_t; + + TestReducers::test_sum(1); + TestReducers::test_sum(2); + TestReducers::test_sum(3); + TestReducers::test_sum(4); + + TestReducers::test_prod(1); + TestReducers::test_prod(2); + TestReducers::test_prod(3); + TestReducers::test_prod(4); +} + #if !defined(KOKKOS_ENABLE_HIP) && !defined(KOKKOS_ENABLE_OPENMPTARGET) // TODO - resolve: "Kokkos_HIP_Vectorization.hpp:80:15: error: call to // implicitly-deleted default constructor of 'conv_type' diff --git a/lib/kokkos/core/unit_test/TestSwap.hpp b/lib/kokkos/core/unit_test/TestSwap.hpp new file mode 100644 index 00000000000..4e98351cf19 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestSwap.hpp @@ -0,0 +1,68 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include + +#include +#include +#include + +namespace { + +template +struct TestSwap { + KOKKOS_FUNCTION void operator()(int, int& err) const { + { + int a = 1; + int b = 2; + Kokkos::kokkos_swap(a, b); + if (!(a == 2 && b == 1)) { + Kokkos::printf("Failed Kokkos::kokkos_swap(int, int)\n"); + ++err; + } + } + { + float a = 1; + float b = 2; + Kokkos::kokkos_swap(a, b); + if (!(a == 2 && b == 1)) { + Kokkos::printf("Failed Kokkos::kokkos_swap(float, float)\n"); + ++err; + } + } + { + int a[3] = {1, 2, 3}; + int b[3] = {4, 5, 6}; + Kokkos::kokkos_swap(a, b); + if (!(a[0] == 4 && a[1] == 5 && a[2] == 6 && b[0] == 1 && b[1] == 2 && + b[2] == 3)) { + Kokkos::printf("Failed Kokkos::kokkos_swap(int[3], int[3])\n"); + ++err; + } + } + } + + TestSwap() { + int errors; + Kokkos::parallel_reduce( + "TestSwap", Kokkos::RangePolicy(0, 1), *this, errors); + EXPECT_EQ(errors, 0); + } +}; + +TEST(TEST_CATEGORY, kokkos_swap) { TestSwap(); } + +} // namespace diff --git a/lib/kokkos/core/unit_test/TestTeamBasic.hpp b/lib/kokkos/core/unit_test/TestTeamBasic.hpp index c395bc0837c..a3d84c5e16b 100644 --- a/lib/kokkos/core/unit_test/TestTeamBasic.hpp +++ b/lib/kokkos/core/unit_test/TestTeamBasic.hpp @@ -280,7 +280,7 @@ namespace Test { // Test for non-arithmetic type TEST(TEST_CATEGORY, team_broadcast_long_wrapper) { - static_assert(!std::is_arithmetic::value, ""); + static_assert(!std::is_arithmetic::value); TestTeamBroadcast, long_wrapper>::test_teambroadcast(0, 1); diff --git a/lib/kokkos/core/unit_test/TestTeamMDRange.hpp b/lib/kokkos/core/unit_test/TestTeamMDRange.hpp index 6e65cde0cf8..81931467c5a 100644 --- a/lib/kokkos/core/unit_test/TestTeamMDRange.hpp +++ b/lib/kokkos/core/unit_test/TestTeamMDRange.hpp @@ -169,7 +169,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -202,7 +209,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -236,7 +250,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -272,7 +293,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -310,7 +338,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4, n5); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -350,7 +385,14 @@ struct TestTeamThreadMDRangeParallelFor : public TestTeamMDParallelFor { n6); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -420,7 +462,14 @@ struct TestThreadVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -457,7 +506,14 @@ struct TestThreadVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -496,7 +552,14 @@ struct TestThreadVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -536,7 +599,14 @@ struct TestThreadVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4, n5); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -579,7 +649,14 @@ struct TestThreadVectorMDRangeParallelFor : public TestTeamMDParallelFor { n6); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -620,7 +697,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -653,7 +737,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -687,7 +778,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -723,7 +821,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -761,7 +866,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { FillFlattenedIndex fillFlattenedIndex(leagueSize, n0, n1, n2, n3, n4, n5); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -801,7 +913,14 @@ struct TestTeamVectorMDRangeParallelFor : public TestTeamMDParallelFor { n6); Kokkos::parallel_for( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(const TeamType& team) { int leagueRank = team.league_rank(); @@ -908,13 +1027,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k) = fillFlattenedIndex(i, j, k); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -923,7 +1049,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { threadSum += v(leagueRank, i, j); }, teamSum); - leagueSum += teamSum; + // FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -952,13 +1084,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l) = fillFlattenedIndex(i, j, k, l); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -966,7 +1105,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { [=](const int& i, const int& j, const int& k, DataType& threadSum) { threadSum += v(leagueRank, i, j, k); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -997,13 +1142,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m) = fillFlattenedIndex(i, j, k, l, m); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -1013,7 +1165,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { threadSum += v(leagueRank, i, j, k, l); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1045,13 +1203,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m, n) = fillFlattenedIndex(i, j, k, l, m, n); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -1061,7 +1226,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { threadSum += v(leagueRank, i, j, k, l, m); }, teamSum); - leagueSum += teamSum; + // FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1100,13 +1271,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -1116,7 +1294,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { threadSum += v(leagueRank, i, j, k, l, m, n); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1157,13 +1341,20 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; Kokkos::parallel_reduce( Kokkos::TeamThreadMDRange, TeamType>( @@ -1174,7 +1365,13 @@ struct TestTeamThreadMDRangeParallelReduce : public TestTeamMDParallelReduce { threadSum += v(leagueRank, i, j, k, l, m, n, o); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1207,20 +1404,26 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l) = fillFlattenedIndex(i, j, k, l); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); auto teamThreadRange = Kokkos::TeamThreadRange(team, n0); auto threadVectorRange = Kokkos::ThreadVectorMDRange, TeamType>( team, n1, n2); - Kokkos::parallel_for(teamThreadRange, [=, &teamSum](const int& i) { + Kokkos::parallel_for(teamThreadRange, [=, &leagueSum](const int& i) { DataType threadSum = 0; Kokkos::parallel_reduce( threadVectorRange, @@ -1228,11 +1431,9 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { vectorSum += v(leagueRank, i, j, k); }, threadSum); - - teamSum += threadSum; + Kokkos::single(Kokkos::PerThread(team), + [&]() { leagueSum += threadSum; }); }); - - leagueSum += teamSum; }, finalSum); @@ -1263,20 +1464,26 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m) = fillFlattenedIndex(i, j, k, l, m); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); auto teamThreadRange = Kokkos::TeamThreadRange(team, n0); auto threadVectorRange = Kokkos::ThreadVectorMDRange, TeamType>( team, n1, n2, n3); - Kokkos::parallel_for(teamThreadRange, [=, &teamSum](const int& i) { + Kokkos::parallel_for(teamThreadRange, [=, &leagueSum](const int& i) { DataType threadSum = 0; Kokkos::parallel_reduce( threadVectorRange, @@ -1286,10 +1493,9 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { }, threadSum); - teamSum += threadSum; + Kokkos::single(Kokkos::PerThread(team), + [&]() { leagueSum += threadSum; }); }); - - leagueSum += teamSum; }, finalSum); @@ -1321,20 +1527,26 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m, n) = fillFlattenedIndex(i, j, k, l, m, n); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); auto teamThreadRange = Kokkos::TeamThreadRange(team, n0); auto threadVectorRange = Kokkos::ThreadVectorMDRange, TeamType>( team, n1, n2, n3, n4); - Kokkos::parallel_for(teamThreadRange, [=, &teamSum](const int& i) { + Kokkos::parallel_for(teamThreadRange, [=, &leagueSum](const int& i) { DataType threadSum = 0; Kokkos::parallel_reduce( threadVectorRange, @@ -1344,10 +1556,9 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { }, threadSum); - teamSum += threadSum; + Kokkos::single(Kokkos::PerThread(team), + [&]() { leagueSum += threadSum; }); }); - - leagueSum += teamSum; }, finalSum); @@ -1384,20 +1595,26 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); auto teamThreadRange = Kokkos::TeamThreadRange(team, n0); auto threadVectorRange = Kokkos::ThreadVectorMDRange, TeamType>( team, n1, n2, n3, n4, n5); - Kokkos::parallel_for(teamThreadRange, [=, &teamSum](const int& i) { + Kokkos::parallel_for(teamThreadRange, [=, &leagueSum](const int& i) { DataType threadSum = 0; Kokkos::parallel_reduce( threadVectorRange, @@ -1407,10 +1624,9 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { }, threadSum); - teamSum += threadSum; + Kokkos::single(Kokkos::PerThread(team), + [&]() { leagueSum += threadSum; }); }); - - leagueSum += teamSum; }, finalSum); @@ -1451,20 +1667,26 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); auto teamThreadRange = Kokkos::TeamThreadRange(team, n0); auto threadVectorRange = Kokkos::ThreadVectorMDRange, TeamType>( team, n1, n2, n3, n4, n5, n6); - Kokkos::parallel_for(teamThreadRange, [=, &teamSum](const int& i) { + Kokkos::parallel_for(teamThreadRange, [=, &leagueSum](const int& i) { DataType threadSum = 0; Kokkos::parallel_reduce( threadVectorRange, @@ -1474,10 +1696,9 @@ struct TestThreadVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { }, threadSum); - teamSum += threadSum; + Kokkos::single(Kokkos::PerThread(team), + [&]() { leagueSum += threadSum; }); }); - - leagueSum += teamSum; }, finalSum); @@ -1510,13 +1731,20 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l) = fillFlattenedIndex(i, j, k, l); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; auto teamVectorRange = Kokkos::TeamVectorMDRange, TeamType>( @@ -1527,7 +1755,13 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { [=](const int& i, const int& j, const int& k, DataType& vectorSum) { vectorSum += v(leagueRank, i, j, k); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1558,13 +1792,20 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m) = fillFlattenedIndex(i, j, k, l, m); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; auto teamVectorRange = Kokkos::TeamVectorMDRange, TeamType>( @@ -1577,7 +1818,13 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { vectorSum += v(leagueRank, i, j, k, l); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1609,13 +1856,20 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { v(i, j, k, l, m, n) = fillFlattenedIndex(i, j, k, l, m, n); }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; auto teamVectorRange = Kokkos::TeamVectorMDRange, TeamType>( @@ -1628,7 +1882,13 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { vectorSum += v(leagueRank, i, j, k, l, m); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1665,13 +1925,20 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; auto teamVectorRange = Kokkos::TeamVectorMDRange, TeamType>( @@ -1684,7 +1951,13 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { vectorSum += v(leagueRank, i, j, k, l, m, n); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1725,13 +1998,20 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { } }); - DataType finalSum = 0; + DataType finalSum; Kokkos::parallel_reduce( - Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO), + Kokkos::TeamPolicy(leagueSize, Kokkos::AUTO, +#ifdef KOKKOS_ENABLE_OPENMPTARGET + 2 +#else + Kokkos::TeamPolicy< + ExecSpace>::vector_length_max() +#endif + ), KOKKOS_LAMBDA(TeamType const& team, DataType& leagueSum) { - auto leagueRank = team.league_rank(); - DataType teamSum = 0; + auto leagueRank = team.league_rank(); + DataType teamSum; auto teamVectorRange = Kokkos::TeamVectorMDRange, TeamType>( @@ -1745,7 +2025,13 @@ struct TestTeamVectorMDRangeParallelReduce : public TestTeamMDParallelReduce { vectorSum += v(leagueRank, i, j, k, l, m, n, o); }, teamSum); - leagueSum += teamSum; +// FIXME_OPENMPTARGET +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (team.team_rank() == 0) leagueSum += teamSum; +#else + Kokkos::single(Kokkos::PerTeam(team), + [&]() { leagueSum += teamSum; }); +#endif }, finalSum); @@ -1904,13 +2190,6 @@ TEST(TEST_CATEGORY, ThreadVectorMDRangeParallelReduce) { GTEST_SKIP() << "skipping because of bug in group_barrier implementation"; #endif -// FIXME_OPENMPTARGET_CRAY: The unit tests fails correctness. -#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_COMPILER_CRAYCLANG) - if (std::is_same_v) - GTEST_SKIP() << "Cray compiler fails correctness at runtime with the " - "OpenMPTarget backend."; -#endif - TestThreadVectorMDRangeParallelReduce:: test_parallel_reduce_for_4D_ThreadVectorMDRange(dims); TestThreadVectorMDRangeParallelReduce:: @@ -1944,13 +2223,6 @@ TEST(TEST_CATEGORY, TeamVectorMDRangeParallelReduce) { GTEST_SKIP() << "skipping because of bug in group_barrier implementation"; #endif -// FIXME_OPENMPTARGET_CRAY: The unit tests fails correctness. -#if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(KOKKOS_COMPILER_CRAYCLANG) - if (std::is_same_v) - GTEST_SKIP() << "Cray compiler fails correctness at runtime with the " - "OpenMPTarget backend."; -#endif - TestTeamVectorMDRangeParallelReduce:: test_parallel_reduce_for_4D_TeamVectorMDRange(dims); TestTeamVectorMDRangeParallelReduce:: diff --git a/lib/kokkos/core/unit_test/TestTeamPolicyConstructors.hpp b/lib/kokkos/core/unit_test/TestTeamPolicyConstructors.hpp index 5b0bfdb1755..9d89f757086 100644 --- a/lib/kokkos/core/unit_test/TestTeamPolicyConstructors.hpp +++ b/lib/kokkos/core/unit_test/TestTeamPolicyConstructors.hpp @@ -20,11 +20,24 @@ namespace { +struct SomeTag {}; + +struct FunctorFor { + KOKKOS_FUNCTION + void operator()( + Kokkos::TeamPolicy::member_type const&) const {} + + KOKKOS_FUNCTION + void operator()( + SomeTag, Kokkos::TeamPolicy::member_type const&) const {} +}; + template void test_run_time_parameters() { int league_size = 131; using ExecutionSpace = typename Policy::execution_space; + using ParallelTag = Kokkos::ParallelForTag; int team_size = 4 < ExecutionSpace().concurrency() ? 4 : ExecutionSpace().concurrency(); #ifdef KOKKOS_ENABLE_HPX @@ -44,6 +57,8 @@ void test_run_time_parameters() { ASSERT_EQ(p1.team_size(), team_size); ASSERT_GT(p1.chunk_size(), 0); ASSERT_EQ(p1.scratch_size(0), 0u); + ASSERT_GT(p1.team_size_max(FunctorFor(), ParallelTag()), 0); + ASSERT_GT(p1.team_size_recommended(FunctorFor(), ParallelTag()), 0); Policy p2 = p1.set_chunk_size(chunk_size); ASSERT_EQ(p1.league_size(), league_size); @@ -112,6 +127,8 @@ void test_run_time_parameters() { Policy p8; // default constructed ASSERT_EQ(p8.league_size(), 0); ASSERT_EQ(p8.scratch_size(0), 0u); + ASSERT_GT(p8.team_size_max(FunctorFor(), ParallelTag()), 0); + ASSERT_GT(p8.team_size_recommended(FunctorFor(), ParallelTag()), 0); p8 = p3; // call assignment operator ASSERT_EQ(p3.league_size(), league_size); ASSERT_EQ(p3.team_size(), team_size); @@ -121,11 +138,25 @@ void test_run_time_parameters() { ASSERT_EQ(p8.team_size(), team_size); ASSERT_EQ(p8.chunk_size(), chunk_size); ASSERT_EQ(p8.scratch_size(0), size_t(scratch_size)); + + Policy p9(league_size, Kokkos::AUTO); + ASSERT_EQ(p9.league_size(), league_size); + ASSERT_GT(p9.team_size_max(FunctorFor(), ParallelTag()), 0); + ASSERT_GT(p9.team_size_recommended(FunctorFor(), ParallelTag()), 0); + + Policy p10(league_size, team_size, Kokkos::AUTO); + ASSERT_EQ(p10.league_size(), league_size); + ASSERT_EQ(p10.team_size(), team_size); + ASSERT_GT(p10.team_size_max(FunctorFor(), ParallelTag()), 0); + ASSERT_GT(p10.team_size_recommended(FunctorFor(), ParallelTag()), 0); + + Policy p11(league_size, Kokkos::AUTO, Kokkos::AUTO); + ASSERT_EQ(p11.league_size(), league_size); + ASSERT_GT(p11.team_size_max(FunctorFor(), ParallelTag()), 0); + ASSERT_GT(p11.team_size_recommended(FunctorFor(), ParallelTag()), 0); } TEST(TEST_CATEGORY, team_policy_runtime_parameters) { - struct SomeTag {}; - using TestExecSpace = TEST_EXECSPACE; using DynamicSchedule = Kokkos::Schedule; using LongIndex = Kokkos::IndexType; diff --git a/lib/kokkos/core/unit_test/TestTeamVector.hpp b/lib/kokkos/core/unit_test/TestTeamVector.hpp index 39122736ed7..5e16539d652 100644 --- a/lib/kokkos/core/unit_test/TestTeamVector.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVector.hpp @@ -1012,7 +1012,6 @@ struct checkScan { }; } // namespace VectorScanReducer -#if !defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) TEST(TEST_CATEGORY, team_vector) { ASSERT_TRUE((TestTeamVector::Test(0))); ASSERT_TRUE((TestTeamVector::Test(1))); @@ -1028,9 +1027,7 @@ TEST(TEST_CATEGORY, team_vector) { ASSERT_TRUE((TestTeamVector::Test(11))); ASSERT_TRUE((TestTeamVector::Test(12))); } -#endif -#if !defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) TEST(TEST_CATEGORY, triple_nested_parallelism) { // With KOKKOS_ENABLE_DEBUG enabled, the functor uses too many registers to run // with a team size of 32 on GPUs, 16 is the max possible (at least on a K80 @@ -1055,7 +1052,6 @@ TEST(TEST_CATEGORY, triple_nested_parallelism) { TestTripleNestedReduce(8192, 2048, 16, 16); TestTripleNestedReduce(8192, 2048, 7, 16); } -#endif TEST(TEST_CATEGORY, parallel_scan_with_reducers) { using T = double; diff --git a/lib/kokkos/core/unit_test/TestUtilities.hpp b/lib/kokkos/core/unit_test/TestUtilities.hpp index b1f9d30c1fc..ad5a0df92de 100644 --- a/lib/kokkos/core/unit_test/TestUtilities.hpp +++ b/lib/kokkos/core/unit_test/TestUtilities.hpp @@ -25,20 +25,18 @@ namespace Test { void test_is_specialization_of() { using Kokkos::Impl::is_specialization_of; - static_assert(is_specialization_of, Kokkos::pair>{}, - ""); - static_assert(!is_specialization_of, Kokkos::pair>{}, ""); - static_assert(is_specialization_of, Kokkos::View>{}, ""); + static_assert(is_specialization_of, Kokkos::pair>{}); + static_assert(!is_specialization_of, Kokkos::pair>{}); + static_assert(is_specialization_of, Kokkos::View>{}); // NOTE Not removing cv-qualifiers - static_assert(!is_specialization_of const, Kokkos::View>{}, - ""); + static_assert( + !is_specialization_of const, Kokkos::View>{}); // NOTE Would not compile because Kokkos::Array takes a non-type template // parameter - // static_assert(is_specialization_of, Kokkos::Array>{}, - // ""); + // static_assert(is_specialization_of, + // Kokkos::Array>{}); // But this is fine of course - static_assert(!is_specialization_of, Kokkos::pair>{}, - ""); + static_assert(!is_specialization_of, Kokkos::pair>{}); } namespace { diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index ffc500e4a9a..ca098dbc247 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -958,8 +958,7 @@ class TestViewAPI { using mirror_type = typename view_type::HostMirror; static_assert(std::is_same::value, - ""); + typename mirror_type::memory_space>::value); view_type a("a"); mirror_type am = Kokkos::create_mirror_view(a); @@ -1005,25 +1004,25 @@ class TestViewAPI { hView3 hv_3("dView3::HostMirror", N0); hView4 hv_4("dView4::HostMirror", N0); - dView0 dv_0_1(nullptr, 0); + dView0 dv_0_1(nullptr); dView0 dv_0_2(hv_0.label(), hv_0.layout()); - dView1 dv_1_1(nullptr, 0); + dView1 dv_1_1(nullptr, N0); dView1 dv_1_2(hv_1.label(), hv_1.layout()); - dView2 dv_2_1(nullptr, 0); + dView2 dv_2_1(nullptr, N0); dView2 dv_2_2(hv_2.label(), hv_2.layout()); - dView3 dv_3_1(nullptr, 0); + dView3 dv_3_1(nullptr, N0); dView3 dv_3_2(hv_3.label(), hv_3.layout()); - dView4 dv_4_1(nullptr, 0); + dView4 dv_4_1(nullptr, N0); dView4 dv_4_2(hv_4.label(), hv_4.layout()); } static void run_test_contruction_from_layout_2() { using dView3_0 = Kokkos::View; - using dView3_1 = Kokkos::View; + using dView3_1 = Kokkos::View; using dView3_2 = Kokkos::View; using dView3_3 = Kokkos::View; @@ -1554,6 +1553,7 @@ class TestViewAPI { Kokkos::CudaUVMSpace>::value) return; #endif + bool did_throw = false; auto alloc_size = std::numeric_limits::max() - 42; try { auto should_always_fail = dView1("hello_world_failure", alloc_size); @@ -1585,7 +1585,9 @@ class TestViewAPI { "because of an unknown error.", msg); } #endif + did_throw = true; } + ASSERT_TRUE(did_throw); } }; diff --git a/lib/kokkos/core/unit_test/TestViewAPI_d.hpp b/lib/kokkos/core/unit_test/TestViewAPI_d.hpp index 08d21f54499..b0d759ffccc 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI_d.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI_d.hpp @@ -27,8 +27,19 @@ TEST(TEST_CATEGORY, view_api_d) { } TEST(TEST_CATEGORY, view_allocation_error) { +#if defined(__has_feature) +#if __has_feature(address_sanitizer) + GTEST_SKIP() << "AddressSanitzer detects allocating too much memory " + "preventing our checks to run"; +#endif +#endif #if ((HIP_VERSION_MAJOR == 5) && (HIP_VERSION_MINOR == 3)) GTEST_SKIP() << "ROCm 5.3 segfaults when trying to allocate too much memory"; +#endif +#if defined(KOKKOS_ENABLE_OPENACC) // FIXME_OPENACC + if (std::is_same_v) { + GTEST_SKIP() << "acc_malloc() not properly returning nullptr"; + } #endif TestViewAPI::run_test_error(); } diff --git a/lib/kokkos/core/unit_test/TestViewCopy_a.hpp b/lib/kokkos/core/unit_test/TestViewCopy_a.hpp index 3bfc93aadac..a4735b29988 100644 --- a/lib/kokkos/core/unit_test/TestViewCopy_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewCopy_a.hpp @@ -147,6 +147,40 @@ TEST(TEST_CATEGORY, view_copy_tests) { Kokkos::deep_copy(s_a, hs_a); ASSERT_TRUE(run_check(s_a, 6)); } + } else { + // These copies won't succeed, but they should each throw + // an exception whose message contains the view labels, + // and the names of the views' memory spaces. + // + // Note: original a,b both have the same device type, + // and their mirrors have the same device type. + using memory_space = typename decltype(a)::memory_space; + using mirror_memory_space = typename decltype(h_a)::memory_space; + bool threw = false; + std::string msg; + try { + Kokkos::deep_copy(hs_b, s_b); + } catch (std::exception& e) { + threw = true; + msg = e.what(); + } + ASSERT_TRUE(threw); + ASSERT_NE(msg.find(hs_b.label()), std::string::npos); + ASSERT_NE(msg.find(s_b.label()), std::string::npos); + ASSERT_NE(msg.find(memory_space().name()), std::string::npos); + ASSERT_NE(msg.find(mirror_memory_space().name()), std::string::npos); + threw = false; + try { + Kokkos::deep_copy(s_a, hs_a); + } catch (std::exception& e) { + threw = true; + msg = e.what(); + } + ASSERT_TRUE(threw); + ASSERT_NE(msg.find(s_a.label()), std::string::npos); + ASSERT_NE(msg.find(hs_a.label()), std::string::npos); + ASSERT_NE(msg.find(memory_space().name()), std::string::npos); + ASSERT_NE(msg.find(mirror_memory_space().name()), std::string::npos); } // Contiguous copies diff --git a/lib/kokkos/core/unit_test/TestViewCtorDimMatch.hpp b/lib/kokkos/core/unit_test/TestViewCtorDimMatch.hpp index d71841eef84..40b7737f2e4 100644 --- a/lib/kokkos/core/unit_test/TestViewCtorDimMatch.hpp +++ b/lib/kokkos/core/unit_test/TestViewCtorDimMatch.hpp @@ -19,33 +19,72 @@ namespace Test { -#define LIVE(EXPR, ARGS, DYNRANK) EXPECT_NO_THROW(EXPR) -#define DIE(EXPR, ARGS, DYNRANK) \ - ASSERT_DEATH( \ - EXPR, \ - "Constructor for Kokkos View 'v_" #ARGS \ - "' has mismatched number of arguments. Number of arguments = " #ARGS \ - " but dynamic rank = " #DYNRANK) +template +void test_matching_arguments_rank_helper(std::index_sequence) { + constexpr int nargs = sizeof...(Is); + using view_type = Kokkos::View; + if (nargs == rank || nargs == dynrank) { + EXPECT_NO_THROW({ view_type v("v", ((Is * 0) + 1)...); }); + EXPECT_NO_THROW({ view_type v(nullptr, ((Is * 0) + 1)...); }); + } else { + ASSERT_DEATH( + { view_type v("v", ((Is * 0) + 1)...); }, + "Constructor for Kokkos::View 'v' has mismatched number of arguments. " + "The number of arguments = " + + std::to_string(nargs) + + " neither matches the dynamic rank = " + std::to_string(dynrank) + + " nor the total rank = " + std::to_string(rank)); + ASSERT_DEATH( + { view_type v(nullptr, ((Is * 0) + 1)...); }, + "Constructor for Kokkos::View 'UNMANAGED' has mismatched number of " + "arguments. " + "The number of arguments = " + + std::to_string(nargs) + + " neither matches the dynamic rank = " + std::to_string(dynrank) + + " nor the total rank = " + std::to_string(rank)); + } +} -#define PARAM_0 -#define PARAM_1 1 -#define PARAM_2 1, 1 -#define PARAM_3 1, 1, 1 -#define PARAM_4 1, 1, 1, 1 -#define PARAM_5 1, 1, 1, 1, 1 -#define PARAM_6 1, 1, 1, 1, 1, 1 -#define PARAM_7 1, 1, 1, 1, 1, 1, 1 +template class RankType> +void test_matching_arguments_rank() { + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<0>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<1>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<2>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<3>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<4>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<5>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<6>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<7>()); + test_matching_arguments_rank_helper::type>( + std::make_index_sequence<8>()); +} -#define PARAM_0_RANK 0 -#define PARAM_1_RANK 1 -#define PARAM_2_RANK 2 -#define PARAM_3_RANK 3 -#define PARAM_4_RANK 4 -#define PARAM_5_RANK 5 -#define PARAM_6_RANK 6 -#define PARAM_7_RANK 7 +template +struct DynamicRank { + using type = typename DynamicRank::type*; +}; -using DType = int; +template <> +struct DynamicRank<0> { + using type = int; +}; // Skip test execution when KOKKOS_ENABLE_OPENMPTARGET is enabled until // Kokkos::abort() aborts properly on that backend @@ -53,348 +92,110 @@ using DType = int; TEST(TEST_CATEGORY_DEATH, view_construction_with_wrong_params_dyn) { ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - using DType_0 = DType; - using DType_1 = DType *; - using DType_2 = DType **; - using DType_3 = DType ***; - using DType_4 = DType ****; - using DType_5 = DType *****; - using DType_6 = DType ******; - using DType_7 = DType *******; - { - // test View parameters for View dim = 0, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 1, dynamic = 1 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 1); - LIVE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 1); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 1); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 1); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 1); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 1); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 1); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 1); - } - - { - // test View parameters for View dim = 2, dynamic = 2 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 2); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 2); - LIVE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 2); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 2); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 2); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 2); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 2); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 2); - } - - { - // test View parameters for View dim = 3, dynamic = 3 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 3); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 3); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 3); - LIVE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 3); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 3); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 3); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 3); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 3); - } - - { - // test View parameters for View dim = 4, dynamic = 4 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 4); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 4); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 4); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 4); - LIVE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 4); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 4); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 4); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 4); - } - - { - // test View parameters for View dim = 5, dynamic = 5 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 5); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 5); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 5); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 5); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 5); - LIVE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 5); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 5); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 5); - } +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECKS + test_matching_arguments_rank<0, 0, DynamicRank>(); // dim = 0, dynamic = 0 + test_matching_arguments_rank<1, 1, DynamicRank>(); // dim = 1, dynamic = 1 + test_matching_arguments_rank<2, 2, DynamicRank>(); // dim = 2, dynamic = 2 + test_matching_arguments_rank<3, 3, DynamicRank>(); // dim = 3, dynamic = 3 + test_matching_arguments_rank<4, 4, DynamicRank>(); // dim = 4, dynamic = 4 + test_matching_arguments_rank<5, 5, DynamicRank>(); // dim = 5, dynamic = 5 + test_matching_arguments_rank<6, 6, DynamicRank>(); // dim = 6, dynamic = 6 + test_matching_arguments_rank<7, 7, DynamicRank>(); // dim = 7, dynamic = 7 + test_matching_arguments_rank<8, 8, DynamicRank>(); // dim = 8, dynamic = 8 +#endif +} - { - // test View parameters for View dim = 6, dynamic = 6 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 6); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 6); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 6); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 6); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 6); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 6); - LIVE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 6); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 6); - } +template +struct StaticRank { + using type = typename StaticRank::type[1]; +}; - { - // test View parameters for View dim = 7, dynamic = 7 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 7); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 7); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 7); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 7); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 7); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 7); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 7); - LIVE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 7); - } -} +template <> +struct StaticRank<0> { + using type = int; +}; TEST(TEST_CATEGORY_DEATH, view_construction_with_wrong_params_stat) { ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - using DType_0 = DType; - using DType_1 = DType[1]; - using DType_2 = DType[1][1]; - using DType_3 = DType[1][1][1]; - using DType_4 = DType[1][1][1][1]; - using DType_5 = DType[1][1][1][1][1]; - using DType_6 = DType[1][1][1][1][1][1]; - using DType_7 = DType[1][1][1][1][1][1][1]; - { - // test View parameters for View dim = 0, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 1, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - LIVE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 2, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - LIVE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 3, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - LIVE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 4, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - LIVE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECKS + test_matching_arguments_rank<0, 0, StaticRank>(); // dim = 0, dynamic = 0 + test_matching_arguments_rank<1, 0, StaticRank>(); // dim = 1, dynamic = 0 + test_matching_arguments_rank<2, 0, StaticRank>(); // dim = 2, dynamic = 0 + test_matching_arguments_rank<3, 0, StaticRank>(); // dim = 3, dynamic = 0 + test_matching_arguments_rank<4, 0, StaticRank>(); // dim = 4, dynamic = 0 + test_matching_arguments_rank<5, 0, StaticRank>(); // dim = 5, dynamic = 0 + test_matching_arguments_rank<6, 0, StaticRank>(); // dim = 6, dynamic = 0 + test_matching_arguments_rank<7, 0, StaticRank>(); // dim = 7, dynamic = 0 + test_matching_arguments_rank<8, 0, StaticRank>(); // dim = 8, dynamic = 0 +#endif +} - { - // test View parameters for View dim = 5, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - LIVE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } +template +struct MixedRank { + using type = typename DynamicRank::type[1]; +}; - { - // test View parameters for View dim = 6, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - LIVE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 7, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - LIVE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } -} +template <> +struct MixedRank<0> { + using type = int; +}; TEST(TEST_CATEGORY_DEATH, view_construction_with_wrong_params_mix) { ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - using DType_0 = DType; - using DType_1 = DType[1]; - using DType_2 = DType * [1]; - using DType_3 = DType * * [1]; - using DType_4 = DType ** * [1]; - using DType_5 = DType *** * [1]; - using DType_6 = DType **** * [1]; - using DType_7 = DType ***** * [1]; - { - // test View parameters for View dim = 0, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 1, dynamic = 0 - LIVE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 0); - LIVE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 0); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 0); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 0); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 0); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 0); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 0); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 0); - } - - { - // test View parameters for View dim = 2, dynamic = 1 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 1); - LIVE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 1); - LIVE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 1); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 1); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 1); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 1); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 1); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 1); - } - - { - // test View parameters for View dim = 3, dynamic = 2 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 2); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 2); - LIVE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 2); - LIVE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 2); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 2); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 2); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 2); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 2); - } +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECKS + test_matching_arguments_rank<0, 0, MixedRank>(); // dim = 0, dynamic = 0 + test_matching_arguments_rank<1, 0, MixedRank>(); // dim = 1, dynamic = 0 + test_matching_arguments_rank<2, 1, MixedRank>(); // dim = 2, dynamic = 1 + test_matching_arguments_rank<3, 2, MixedRank>(); // dim = 3, dynamic = 2 + test_matching_arguments_rank<4, 3, MixedRank>(); // dim = 4, dynamic = 3 + test_matching_arguments_rank<5, 4, MixedRank>(); // dim = 5, dynamic = 4 + test_matching_arguments_rank<6, 5, MixedRank>(); // dim = 6, dynamic = 5 + test_matching_arguments_rank<7, 6, MixedRank>(); // dim = 7, dynamic = 6 + test_matching_arguments_rank<8, 7, MixedRank>(); // dim = 8, dynamic = 7 +#endif +} - { - // test View parameters for View dim = 4, dynamic = 3 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 3); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 3); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 3); - LIVE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 3); - LIVE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 3); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 3); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 3); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 3); - } +#define CHECK_DEATH(EXPR) \ + ASSERT_DEATH(EXPR, \ + "The specified run-time extent for Kokkos::View 'v' does not " \ + "match the compile-time extent in dimension 0. The given " \ + "extent is 2 but should be 1.") - { - // test View parameters for View dim = 5, dynamic = 4 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 4); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 4); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 4); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 4); - LIVE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 4); - LIVE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 4); - DIE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 4); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 4); - } +#define CHECK_DEATH_UNMANAGED(EXPR) \ + ASSERT_DEATH( \ + EXPR, \ + "The specified run-time extent for Kokkos::View 'UNMANAGED' does not " \ + "match the compile-time extent in dimension 0. The given " \ + "extent is 2 but should be 1.") - { - // test View parameters for View dim = 6, dynamic = 5 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 5); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 5); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 5); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 5); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 5); - LIVE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 5); - LIVE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 5); - DIE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 5); - } +TEST(TEST_CATEGORY_DEATH, view_construction_with_wrong_static_extents) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - { - // test View parameters for View dim = 7, dynamic = 6 - DIE({ Kokkos::View v_0("v_0" PARAM_0); }, 0, 6); - DIE({ Kokkos::View v_1("v_1", PARAM_1); }, 1, 6); - DIE({ Kokkos::View v_2("v_2", PARAM_2); }, 2, 6); - DIE({ Kokkos::View v_3("v_3", PARAM_3); }, 3, 6); - DIE({ Kokkos::View v_4("v_4", PARAM_4); }, 4, 6); - DIE({ Kokkos::View v_5("v_5", PARAM_5); }, 5, 6); - LIVE({ Kokkos::View v_6("v_6", PARAM_6); }, 6, 6); - LIVE({ Kokkos::View v_7("v_7", PARAM_7); }, 7, 6); - } +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECKS + // clang-format off + CHECK_DEATH({ Kokkos::View v("v", 2); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1, 1, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1, 1, 1, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1, 1, 1, 1, 1); }); + CHECK_DEATH({ Kokkos::View v("v", 2, 1, 1, 1, 1, 1, 1, 1); }); + + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1, 1, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1, 1, 1, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1, 1, 1, 1, 1); }); + CHECK_DEATH_UNMANAGED({ Kokkos::View v(nullptr, 2, 1, 1, 1, 1, 1, 1, 1); }); + // clang-format on +#endif } -#endif // KOKKOS_ENABLE_OPENMPTARGET - -#undef PARAM_0 -#undef PARAM_1 -#undef PARAM_2 -#undef PARAM_3 -#undef PARAM_4 -#undef PARAM_5 -#undef PARAM_6 -#undef PARAM_7 -#undef PARAM_0_RANK -#undef PARAM_1_RANK -#undef PARAM_2_RANK -#undef PARAM_3_RANK -#undef PARAM_4_RANK -#undef PARAM_5_RANK -#undef PARAM_6_RANK -#undef PARAM_7_RANK - -#undef DType - -#undef LIVE -#undef DIE +#undef CHECK_DEATH +#endif // KOKKOS_ENABLE_OPENMPTARGET } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewEmptyRuntimeUnmanaged.hpp b/lib/kokkos/core/unit_test/TestViewEmptyRuntimeUnmanaged.hpp new file mode 100644 index 00000000000..b156b72860e --- /dev/null +++ b/lib/kokkos/core/unit_test/TestViewEmptyRuntimeUnmanaged.hpp @@ -0,0 +1,55 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include + +#include + +namespace { + +template +void test_empty_view_runtime_unmanaged() { + T d{}; + auto* p = reinterpret_cast(0xABADBABE); + + (void)Kokkos::View(p); + (void)Kokkos::View(&d); + (void)Kokkos::View(nullptr); + (void)Kokkos::View(NULL); // NOLINT(modernize-use-nullptr) + (void)Kokkos::View(0); // NOLINT(modernize-use-nullptr) + + (void)Kokkos::View(p, 0); + (void)Kokkos::View(&d, 0); + (void)Kokkos::View(nullptr, 0); + (void)Kokkos::View(NULL, 0); // NOLINT(modernize-use-nullptr) + (void)Kokkos::View(0, 0); // NOLINT(modernize-use-nullptr) + + (void)Kokkos::View(p, 0, 0); + (void)Kokkos::View(&d, 0, 0); + (void)Kokkos::View(nullptr, 0, 0); + (void)Kokkos::View(NULL, 0, 0); // NOLINT(modernize-use-nullptr) + (void)Kokkos::View(0, 0, 0); // NOLINT(modernize-use-nullptr) +} + +TEST(TEST_CATEGORY, view_empty_runtime_unmanaged) { + test_empty_view_runtime_unmanaged(); + test_empty_view_runtime_unmanaged(); + test_empty_view_runtime_unmanaged(); + test_empty_view_runtime_unmanaged(); + test_empty_view_runtime_unmanaged(); +} + +} // namespace diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 9173f0d4316..a4dfdb26e3f 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -73,67 +73,67 @@ void test_view_mapping() { ASSERT_LE(sizeof(dim_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); ASSERT_EQ(sizeof(dim_s0_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); #endif - static_assert(int(dim_0::rank) == int(0), ""); - static_assert(int(dim_0::rank_dynamic) == int(0), ""); - static_assert(int(dim_0::ArgN0) == 1, ""); - static_assert(int(dim_0::ArgN1) == 1, ""); - static_assert(int(dim_0::ArgN2) == 1, ""); - - static_assert(int(dim_s2::rank) == int(1), ""); - static_assert(int(dim_s2::rank_dynamic) == int(0), ""); - static_assert(int(dim_s2::ArgN0) == 2, ""); - static_assert(int(dim_s2::ArgN1) == 1, ""); - - static_assert(int(dim_s2_s3::rank) == int(2), ""); - static_assert(int(dim_s2_s3::rank_dynamic) == int(0), ""); - static_assert(int(dim_s2_s3::ArgN0) == 2, ""); - static_assert(int(dim_s2_s3::ArgN1) == 3, ""); - static_assert(int(dim_s2_s3::ArgN2) == 1, ""); - - static_assert(int(dim_s2_s3_s4::rank) == int(3), ""); - static_assert(int(dim_s2_s3_s4::rank_dynamic) == int(0), ""); - static_assert(int(dim_s2_s3_s4::ArgN0) == 2, ""); - static_assert(int(dim_s2_s3_s4::ArgN1) == 3, ""); - static_assert(int(dim_s2_s3_s4::ArgN2) == 4, ""); - static_assert(int(dim_s2_s3_s4::ArgN3) == 1, ""); - - static_assert(int(dim_s0::rank) == int(1), ""); - static_assert(int(dim_s0::rank_dynamic) == int(1), ""); - - static_assert(int(dim_s0_s3::rank) == int(2), ""); - static_assert(int(dim_s0_s3::rank_dynamic) == int(1), ""); - static_assert(int(dim_s0_s3::ArgN0) == 0, ""); - static_assert(int(dim_s0_s3::ArgN1) == 3, ""); - - static_assert(int(dim_s0_s3_s4::rank) == int(3), ""); - static_assert(int(dim_s0_s3_s4::rank_dynamic) == int(1), ""); - static_assert(int(dim_s0_s3_s4::ArgN0) == 0, ""); - static_assert(int(dim_s0_s3_s4::ArgN1) == 3, ""); - static_assert(int(dim_s0_s3_s4::ArgN2) == 4, ""); - - static_assert(int(dim_s0_s0_s4::rank) == int(3), ""); - static_assert(int(dim_s0_s0_s4::rank_dynamic) == int(2), ""); - static_assert(int(dim_s0_s0_s4::ArgN0) == 0, ""); - static_assert(int(dim_s0_s0_s4::ArgN1) == 0, ""); - static_assert(int(dim_s0_s0_s4::ArgN2) == 4, ""); - - static_assert(int(dim_s0_s0_s0::rank) == int(3), ""); - static_assert(int(dim_s0_s0_s0::rank_dynamic) == int(3), ""); - - static_assert(int(dim_s0_s0_s0_s0::rank) == int(4), ""); - static_assert(int(dim_s0_s0_s0_s0::rank_dynamic) == int(4), ""); - - static_assert(int(dim_s0_s0_s0_s0_s0::rank) == int(5), ""); - static_assert(int(dim_s0_s0_s0_s0_s0::rank_dynamic) == int(5), ""); - - static_assert(int(dim_s0_s0_s0_s0_s0_s0::rank) == int(6), ""); - static_assert(int(dim_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(6), ""); - - static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0::rank) == int(7), ""); - static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(7), ""); - - static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0_s0::rank) == int(8), ""); - static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(8), ""); + static_assert(int(dim_0::rank) == int(0)); + static_assert(int(dim_0::rank_dynamic) == int(0)); + static_assert(int(dim_0::ArgN0) == 1); + static_assert(int(dim_0::ArgN1) == 1); + static_assert(int(dim_0::ArgN2) == 1); + + static_assert(int(dim_s2::rank) == int(1)); + static_assert(int(dim_s2::rank_dynamic) == int(0)); + static_assert(int(dim_s2::ArgN0) == 2); + static_assert(int(dim_s2::ArgN1) == 1); + + static_assert(int(dim_s2_s3::rank) == int(2)); + static_assert(int(dim_s2_s3::rank_dynamic) == int(0)); + static_assert(int(dim_s2_s3::ArgN0) == 2); + static_assert(int(dim_s2_s3::ArgN1) == 3); + static_assert(int(dim_s2_s3::ArgN2) == 1); + + static_assert(int(dim_s2_s3_s4::rank) == int(3)); + static_assert(int(dim_s2_s3_s4::rank_dynamic) == int(0)); + static_assert(int(dim_s2_s3_s4::ArgN0) == 2); + static_assert(int(dim_s2_s3_s4::ArgN1) == 3); + static_assert(int(dim_s2_s3_s4::ArgN2) == 4); + static_assert(int(dim_s2_s3_s4::ArgN3) == 1); + + static_assert(int(dim_s0::rank) == int(1)); + static_assert(int(dim_s0::rank_dynamic) == int(1)); + + static_assert(int(dim_s0_s3::rank) == int(2)); + static_assert(int(dim_s0_s3::rank_dynamic) == int(1)); + static_assert(int(dim_s0_s3::ArgN0) == 0); + static_assert(int(dim_s0_s3::ArgN1) == 3); + + static_assert(int(dim_s0_s3_s4::rank) == int(3)); + static_assert(int(dim_s0_s3_s4::rank_dynamic) == int(1)); + static_assert(int(dim_s0_s3_s4::ArgN0) == 0); + static_assert(int(dim_s0_s3_s4::ArgN1) == 3); + static_assert(int(dim_s0_s3_s4::ArgN2) == 4); + + static_assert(int(dim_s0_s0_s4::rank) == int(3)); + static_assert(int(dim_s0_s0_s4::rank_dynamic) == int(2)); + static_assert(int(dim_s0_s0_s4::ArgN0) == 0); + static_assert(int(dim_s0_s0_s4::ArgN1) == 0); + static_assert(int(dim_s0_s0_s4::ArgN2) == 4); + + static_assert(int(dim_s0_s0_s0::rank) == int(3)); + static_assert(int(dim_s0_s0_s0::rank_dynamic) == int(3)); + + static_assert(int(dim_s0_s0_s0_s0::rank) == int(4)); + static_assert(int(dim_s0_s0_s0_s0::rank_dynamic) == int(4)); + + static_assert(int(dim_s0_s0_s0_s0_s0::rank) == int(5)); + static_assert(int(dim_s0_s0_s0_s0_s0::rank_dynamic) == int(5)); + + static_assert(int(dim_s0_s0_s0_s0_s0_s0::rank) == int(6)); + static_assert(int(dim_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(6)); + + static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0::rank) == int(7)); + static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(7)); + + static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0_s0::rank) == int(8)); + static_assert(int(dim_s0_s0_s0_s0_s0_s0_s0_s0::rank_dynamic) == int(8)); dim_s0 d1(2, 3, 4, 5, 6, 7, 8, 9); dim_s0_s0 d2(2, 3, 4, 5, 6, 7, 8, 9); @@ -514,11 +514,11 @@ void test_view_mapping() { { using namespace Kokkos::Impl; - static_assert(rank_dynamic<>::value == 0, ""); - static_assert(rank_dynamic<1>::value == 0, ""); - static_assert(rank_dynamic<0>::value == 1, ""); - static_assert(rank_dynamic<0, 1>::value == 1, ""); - static_assert(rank_dynamic<0, 0, 1>::value == 2, ""); + static_assert(rank_dynamic<>::value == 0); + static_assert(rank_dynamic<1>::value == 0); + static_assert(rank_dynamic<0>::value == 1); + static_assert(rank_dynamic<0, 1>::value == 1); + static_assert(rank_dynamic<0, 0, 1>::value == 2); } { @@ -529,54 +529,48 @@ void test_view_mapping() { using a_const_int_r1 = ViewArrayAnalysis; using a_const_int_r5 = ViewArrayAnalysis; - static_assert(a_int_r1::dimension::rank == 1, ""); - static_assert(a_int_r1::dimension::rank_dynamic == 1, ""); - static_assert(a_int_r5::dimension::ArgN0 == 0, ""); - static_assert(a_int_r5::dimension::ArgN1 == 0, ""); - static_assert(a_int_r5::dimension::ArgN2 == 4, ""); - static_assert(a_int_r5::dimension::ArgN3 == 5, ""); - static_assert(a_int_r5::dimension::ArgN4 == 6, ""); - static_assert(a_int_r5::dimension::ArgN5 == 1, ""); + static_assert(a_int_r1::dimension::rank == 1); + static_assert(a_int_r1::dimension::rank_dynamic == 1); + static_assert(a_int_r5::dimension::ArgN0 == 0); + static_assert(a_int_r5::dimension::ArgN1 == 0); + static_assert(a_int_r5::dimension::ArgN2 == 4); + static_assert(a_int_r5::dimension::ArgN3 == 5); + static_assert(a_int_r5::dimension::ArgN4 == 6); + static_assert(a_int_r5::dimension::ArgN5 == 1); static_assert( - std::is_same >::value, - ""); + std::is_same >::value); static_assert( - std::is_same::value, ""); + std::is_same::value); - static_assert(a_const_int_r1::dimension::rank == 1, ""); - static_assert(a_const_int_r1::dimension::rank_dynamic == 1, ""); + static_assert(a_const_int_r1::dimension::rank == 1); + static_assert(a_const_int_r1::dimension::rank_dynamic == 1); static_assert(std::is_same >::value, - ""); - static_assert( - std::is_same::value, - ""); + ViewDimension<0> >::value); + static_assert(std::is_same::value); - static_assert(a_const_int_r5::dimension::rank == 5, ""); - static_assert(a_const_int_r5::dimension::rank_dynamic == 2, ""); + static_assert(a_const_int_r5::dimension::rank == 5); + static_assert(a_const_int_r5::dimension::rank_dynamic == 2); - static_assert(a_const_int_r5::dimension::ArgN0 == 0, ""); - static_assert(a_const_int_r5::dimension::ArgN1 == 0, ""); - static_assert(a_const_int_r5::dimension::ArgN2 == 4, ""); - static_assert(a_const_int_r5::dimension::ArgN3 == 5, ""); - static_assert(a_const_int_r5::dimension::ArgN4 == 6, ""); - static_assert(a_const_int_r5::dimension::ArgN5 == 1, ""); + static_assert(a_const_int_r5::dimension::ArgN0 == 0); + static_assert(a_const_int_r5::dimension::ArgN1 == 0); + static_assert(a_const_int_r5::dimension::ArgN2 == 4); + static_assert(a_const_int_r5::dimension::ArgN3 == 5); + static_assert(a_const_int_r5::dimension::ArgN4 == 6); + static_assert(a_const_int_r5::dimension::ArgN5 == 1); static_assert(std::is_same >::value, - ""); - static_assert( - std::is_same::value, - ""); + ViewDimension<0, 0, 4, 5, 6> >::value); + static_assert(std::is_same::value); - static_assert(a_int_r5::dimension::rank == 5, ""); - static_assert(a_int_r5::dimension::rank_dynamic == 2, ""); + static_assert(a_int_r5::dimension::rank == 5); + static_assert(a_int_r5::dimension::rank_dynamic == 2); static_assert(std::is_same >::value, - ""); + ViewDimension<0, 0, 4, 5, 6> >::value); static_assert( - std::is_same::value, ""); + std::is_same::value); } { @@ -587,15 +581,15 @@ void test_view_mapping() { // Dimensions of t_i4 are appended to the multdimensional array. using a_int_r5 = ViewArrayAnalysis; - static_assert(a_int_r5::dimension::rank == 5, ""); - static_assert(a_int_r5::dimension::rank_dynamic == 3, ""); - static_assert(a_int_r5::dimension::ArgN0 == 0, ""); - static_assert(a_int_r5::dimension::ArgN1 == 0, ""); - static_assert(a_int_r5::dimension::ArgN2 == 0, ""); - static_assert(a_int_r5::dimension::ArgN3 == 3, ""); - static_assert(a_int_r5::dimension::ArgN4 == 4, ""); + static_assert(a_int_r5::dimension::rank == 5); + static_assert(a_int_r5::dimension::rank_dynamic == 3); + static_assert(a_int_r5::dimension::ArgN0 == 0); + static_assert(a_int_r5::dimension::ArgN1 == 0); + static_assert(a_int_r5::dimension::ArgN2 == 0); + static_assert(a_int_r5::dimension::ArgN3 == 3); + static_assert(a_int_r5::dimension::ArgN4 == 4); static_assert( - std::is_same::value, ""); + std::is_same::value); } { @@ -603,71 +597,54 @@ void test_view_mapping() { using a_const_int_r1 = ViewDataAnalysis; - static_assert(std::is_void::value, ""); + static_assert(std::is_void::value); static_assert(std::is_same >::value, - ""); + Kokkos::Impl::ViewDimension<0> >::value); static_assert( - std::is_same::value, ""); + std::is_same::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); static_assert(std::is_same::value, - ""); + const int*>::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); static_assert(std::is_same::value, - ""); + const int>::value); static_assert(std::is_same::value, - ""); + const int*>::value); static_assert( - std::is_same::value, ""); - static_assert( - std::is_same::value, - ""); + std::is_same::value); + static_assert(std::is_same::value); using a_const_int_r3 = ViewDataAnalysis; - static_assert(std::is_void::value, ""); + static_assert(std::is_void::value); static_assert(std::is_same >::value, - ""); + Kokkos::Impl::ViewDimension<0, 0, 4> >::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); static_assert( - std::is_same::value, - ""); + std::is_same::value); static_assert(std::is_same::value, - ""); + const int* * [4]>::value); static_assert(std::is_same::value, - ""); + const int* * [4]>::value); static_assert(std::is_same::value, - ""); + const int>::value); static_assert(std::is_same::value, - ""); + const int* * [4]>::value); static_assert(std::is_same::value, - ""); - static_assert( - std::is_same::value, - ""); + int* * [4]>::value); + static_assert(std::is_same::value); static_assert( std::is_same::value, - ""); + int* * [4]>::value); // std::cout << "typeid( const int**[4] ).name() = " << typeid( const // int**[4] ).name() << std::endl; diff --git a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp index 9ac4e7da845..4aee035d17a 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp @@ -156,7 +156,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using dst_traits = Kokkos::ViewTraits; using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(mapping::is_assignable, ""); + static_assert(mapping::is_assignable); Kokkos::View src; Kokkos::View dst(src); @@ -167,7 +167,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using dst_traits = Kokkos::ViewTraits; using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(mapping::is_assignable, ""); + static_assert(mapping::is_assignable); Kokkos::View src; Kokkos::View dst(src); @@ -180,7 +180,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(mapping::is_assignable, ""); + static_assert(mapping::is_assignable); Kokkos::View src; Kokkos::View dst(src); @@ -193,7 +193,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(mapping::is_assignable, ""); + static_assert(mapping::is_assignable); Kokkos::View src; Kokkos::View dst(src); @@ -206,7 +206,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(!mapping::is_assignable, ""); + static_assert(!mapping::is_assignable); } { // Assignment of rank-2 Right = Left @@ -215,7 +215,7 @@ TEST(TEST_CATEGORY, view_mapping_assignable) { using src_traits = Kokkos::ViewTraits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(!mapping::is_assignable, ""); + static_assert(!mapping::is_assignable); } } @@ -226,7 +226,7 @@ TEST(TEST_CATEGORY, view_mapping_trivially_copyable) { using src_traits = dst_traits; using mapping = Kokkos::Impl::ViewMapping; - static_assert(std::is_trivially_copyable{}, ""); + static_assert(std::is_trivially_copyable{}); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewOutOfBoundsAccess.hpp b/lib/kokkos/core/unit_test/TestViewOutOfBoundsAccess.hpp new file mode 100644 index 00000000000..2716856c1fc --- /dev/null +++ b/lib/kokkos/core/unit_test/TestViewOutOfBoundsAccess.hpp @@ -0,0 +1,175 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include +#include + +#include + +namespace { + +TEST(TEST_CATEGORY, append_formatted_multidimensional_index) { + using Kokkos::Impl::append_formatted_multidimensional_index; + { + char buffer[64] = "my prefix "; + append_formatted_multidimensional_index(buffer, 1); + EXPECT_STREQ(buffer, "my prefix [1]"); + } + { + char buffer[64] = "I was here"; + append_formatted_multidimensional_index(buffer, 1, 2, 3); + EXPECT_STREQ(buffer, "I was here[1,2,3]"); + } + { + char buffer[64] = "with mixed integer types "; + append_formatted_multidimensional_index(buffer, 1u, -2); + EXPECT_STREQ(buffer, "with mixed integer types [1,-2]"); + } +} + +#ifdef KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK + +template +struct TestViewOutOfBoundAccess { + View v; + static constexpr auto rank = View::rank; + + template + KOKKOS_FUNCTION decltype(auto) bad_access(std::index_sequence) const { + return v((Is * 1 + Is == 0 ? v.extent(Is) + 3 : 0)...); + } + + KOKKOS_FUNCTION void operator()(int) const { + ++bad_access(std::make_index_sequence{}); + } + + template + std::string get_details(std::index_sequence) { + std::stringstream ss; + ss << "with indices \\["; + ((ss << (Is == 0 ? v.extent(Is) + 3 : 0) + << (Is == View::rank() - 1 ? "\\]" : ",")), + ...); + ss << " but extents \\["; + ((ss << v.extent(Is) << (Is == View::rank() - 1 ? "\\]" : ",")), ...); + return ss.str(); + } + + auto get_details() { + return get_details(std::make_index_sequence()); + } + + TestViewOutOfBoundAccess(View w, ExecutionSpace const& s, std::string matcher) + : v(std::move(w)) { + constexpr bool view_accessible_from_execution_space = + Kokkos::SpaceAccessibility< + /*AccessSpace=*/ExecutionSpace, + /*MemorySpace=*/typename View::memory_space>::accessible; + EXPECT_TRUE(view_accessible_from_execution_space); + + matcher += ".*" + get_details(); + + EXPECT_DEATH( + { + Kokkos::parallel_for(Kokkos::RangePolicy(s, 0, 1), + *this); + Kokkos::fence(); + }, + matcher); + } +}; + +template +auto make_view_impl(LblOrPtr x, std::index_sequence) { + return View(x, (Is + 1)...); +} + +template +auto make_view(LblOrPtr x) { + return make_view_impl(std::move(x), + std::make_index_sequence()); +} + +template +void test_view_out_of_bounds_access() { + ExecutionSpace const exec_space{}; + // clang-format off + using V1 = Kokkos::View; + using V2 = Kokkos::View; + using V3 = Kokkos::View; + using V4 = Kokkos::View; + using V5 = Kokkos::View; + using V6 = Kokkos::View; + using V7 = Kokkos::View; + using V8 = Kokkos::View; + std::string const prefix = "Kokkos::View ERROR: out of bounds access"; + std::string const lbl = "my_label"; + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + TestViewOutOfBoundAccess(make_view(lbl), exec_space, prefix + ".*" + lbl); + int* const ptr = nullptr; + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + TestViewOutOfBoundAccess(make_view(ptr), exec_space, prefix + ".*UNMANAGED"); + // clang-format on +} + +TEST(TEST_CATEGORY_DEATH, view_out_of_bounds_access) { + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + + using ExecutionSpace = TEST_EXECSPACE; + + if (false && Kokkos::SpaceAccessibility< + /*AccessSpace=*/ExecutionSpace, + /*MemorySpace=*/Kokkos::HostSpace>::accessible) { + GTEST_SKIP() << "skipping since no memory access violation would occur"; + } + +#if defined(KOKKOS_ENABLE_SYCL) && defined(NDEBUG) // FIXME_SYCL + if (std::is_same_v) { + GTEST_SKIP() << "skipping SYCL device-side abort does not work when NDEBUG " + "is defined"; + } +#endif +#if defined(KOKKOS_ENABLE_OPENMPTARGET) // FIXME_OPENMPTARGET + if (std::is_same_v) { + GTEST_SKIP() << "skipping because OpenMPTarget backend is currently not " + "able to abort from the device"; + } +#endif +#if defined(KOKKOS_ENABLE_OPENACC) // FIXME_OPENACC + if (std::is_same::value) { + GTEST_SKIP() << "skipping because OpenACC backend is currently not " + "able to abort from the device"; + } +#endif + + test_view_out_of_bounds_access(); +} + +#endif + +} // namespace diff --git a/lib/kokkos/core/unit_test/UnitTest_DeviceAndThreads.cpp b/lib/kokkos/core/unit_test/UnitTest_DeviceAndThreads.cpp index b522ac3e69b..25442146fba 100644 --- a/lib/kokkos/core/unit_test/UnitTest_DeviceAndThreads.cpp +++ b/lib/kokkos/core/unit_test/UnitTest_DeviceAndThreads.cpp @@ -19,22 +19,23 @@ #include #include -int get_device_count() { +int get_num_devices() { + int num_devices; #if defined(KOKKOS_ENABLE_CUDA) - int count; - KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&count)); - return count; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&num_devices)); #elif defined(KOKKOS_ENABLE_HIP) - int count; - KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDevice(&count)); - return count; + KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDeviceCount(&num_devices)); #elif defined(KOKKOS_ENABLE_OPENMPTARGET) - return omp_get_num_devices(); + num_devices = omp_get_num_devices(); #elif defined(KOKKOS_ENABLE_OPENACC) - return acc_get_num_devices(acc_get_device_type()); + num_devices = acc_get_num_devices(acc_get_device_type()); +#elif defined(KOKKOS_ENABLE_SYCL) + num_devices = sycl::device::get_devices(sycl::info::device_type::gpu).size(); #else - return 0; + num_devices = -1; #endif + assert(num_devices == Kokkos::num_devices()); + return num_devices; } int get_device_id() { @@ -44,15 +45,17 @@ int get_device_id() { #elif defined(KOKKOS_ENABLE_HIP) KOKKOS_IMPL_HIP_SAFE_CALL(hipGetDevice(&device_id)); #elif defined(KOKKOS_ENABLE_OPENMPTARGET) - device_id = omp_get_device_num(); + device_id = omp_get_default_device(); #elif defined(KOKKOS_ENABLE_OPENACC) - device_id = acc_get_device_num(acc_get_device_type()); + device_id = acc_get_device_num(acc_get_device_type()); #elif defined(KOKKOS_ENABLE_SYCL) - // FIXME_SYCL ? - assert(false); - return -2; + // Not able to query the underlying runtime because there is no such thing as + // device currently being used with SYCL. We go through the Kokkos runtime + // which makes the assert below pointless but it still let us check that + // Kokkos selected the device we asked for from the Python tests. + device_id = Kokkos::device_id(); #else - device_id = -1; + device_id = -1; #endif assert(device_id == Kokkos::device_id()); return device_id; @@ -68,6 +71,14 @@ int get_max_threads() { #endif } +int get_hwloc_enabled() { +#ifdef KOKKOS_ENABLE_HWLOC + return 1; +#else + return 0; +#endif +} + int get_num_threads() { int const num_threads = Kokkos::DefaultHostExecutionSpace().concurrency(); assert(num_threads == Kokkos::num_threads()); @@ -90,9 +101,10 @@ int print_flag(std::string const& flag) { KOKKOS_TEST_PRINT_FLAG(num_threads); KOKKOS_TEST_PRINT_FLAG(max_threads); KOKKOS_TEST_PRINT_FLAG(device_id); - KOKKOS_TEST_PRINT_FLAG(device_count); + KOKKOS_TEST_PRINT_FLAG(num_devices); KOKKOS_TEST_PRINT_FLAG(disable_warnings); KOKKOS_TEST_PRINT_FLAG(tune_internals); + KOKKOS_TEST_PRINT_FLAG(hwloc_enabled); #undef KOKKOS_TEST_PRINT_FLAG diff --git a/lib/kokkos/core/unit_test/configuration/test-code/test_config_arch_list.bash b/lib/kokkos/core/unit_test/configuration/test-code/test_config_arch_list.bash index 8fe8e2b5ece..8bc8ef21cd0 100755 --- a/lib/kokkos/core/unit_test/configuration/test-code/test_config_arch_list.bash +++ b/lib/kokkos/core/unit_test/configuration/test-code/test_config_arch_list.bash @@ -4,7 +4,7 @@ HostArch=(SNB HSW SKX KNL) DeviceArch=(Kepler35 Kepler37 Pascal60 Pascal61 Volta70) if [ ! -z "$KOKKOS_HOST_ARCH_TEST" ]; then export KOKKOS_ARCH_TEST=1 - HostArch=(WSM SNB HSW SKX WSM AMDAVX ARMv80 ARMv81 BDW KNC KNL BGQ Power7 Power8 Power9 Zen Zen2 Zen3 ARMv8_ThunderX ARMv8_ThunderX2) + HostArch=(SNB HSW SKX AMDAVX ARMv80 ARMv81 BDW KNC KNL Power8 Power9 Zen Zen2 Zen3 ARMv8_ThunderX ARMv8_ThunderX2) DeviceArch=() fi diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_InterOp_StreamsMultiGPU.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_InterOp_StreamsMultiGPU.cpp new file mode 100644 index 00000000000..d94735ceb23 --- /dev/null +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_InterOp_StreamsMultiGPU.cpp @@ -0,0 +1,268 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#include +#include + +namespace { + +struct StreamsAndDevices { + std::array streams; + std::array devices; + + StreamsAndDevices() { + int n_devices; + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaGetDeviceCount(&n_devices)); + + devices = {0, n_devices - 1}; + for (int i = 0; i < 2; ++i) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(devices[i])); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamCreate(&streams[i])); + } + } + StreamsAndDevices(const StreamsAndDevices &) = delete; + StreamsAndDevices &operator=(const StreamsAndDevices &) = delete; + ~StreamsAndDevices() { + for (int i = 0; i < 2; ++i) { + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(devices[i])); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaStreamDestroy(streams[i])); + } + } +}; + +std::array get_execution_spaces( + const StreamsAndDevices &streams_and_devices) { + TEST_EXECSPACE exec0(streams_and_devices.streams[0]); + TEST_EXECSPACE exec1(streams_and_devices.streams[1]); + + // Must return void to use ASSERT_EQ + [&]() { + ASSERT_EQ(exec0.cuda_device(), streams_and_devices.devices[0]); + ASSERT_EQ(exec1.cuda_device(), streams_and_devices.devices[1]); + }(); + + return {exec0, exec1}; +} + +// Test Interoperability with Cuda Streams +void test_policies(TEST_EXECSPACE exec0, Kokkos::View v0, + TEST_EXECSPACE exec, Kokkos::View v) { + using MemorySpace = typename TEST_EXECSPACE::memory_space; + + Kokkos::deep_copy(exec, v, 5); + Kokkos::deep_copy(exec0, v0, 5); + + Kokkos::deep_copy(v, v0); + + int sum; + int sum0; + + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::Range_0", + Kokkos::RangePolicy(exec0, 0, 100), + Test::FunctorRange(v0)); + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::Range", + Kokkos::RangePolicy(exec, 0, 100), + Test::FunctorRange(v)); + Kokkos::parallel_reduce( + "Test::cuda::raw_cuda_stream::RangeReduce_0", + Kokkos::RangePolicy>(exec0, + 0, 100), + Test::FunctorRangeReduce(v0), sum0); + Kokkos::parallel_reduce( + "Test::cuda::raw_cuda_stream::RangeReduce", + Kokkos::RangePolicy>(exec, 0, + 100), + Test::FunctorRangeReduce(v), sum); + ASSERT_EQ(600, sum0); + ASSERT_EQ(600, sum); + + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::MDRange_0", + Kokkos::MDRangePolicy>( + exec0, {0, 0}, {10, 10}), + Test::FunctorMDRange(v0)); + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::MDRange", + Kokkos::MDRangePolicy>( + exec, {0, 0}, {10, 10}), + Test::FunctorMDRange(v)); + Kokkos::parallel_reduce("Test::cuda::raw_cuda_stream::MDRangeReduce_0", + Kokkos::MDRangePolicy, + Kokkos::LaunchBounds<128, 2>>( + exec0, {0, 0}, {10, 10}), + Test::FunctorMDRangeReduce(v0), sum0); + Kokkos::parallel_reduce("Test::cuda::raw_cuda_stream::MDRangeReduce", + Kokkos::MDRangePolicy, + Kokkos::LaunchBounds<128, 2>>( + exec, {0, 0}, {10, 10}), + Test::FunctorMDRangeReduce(v), sum); + ASSERT_EQ(700, sum0); + ASSERT_EQ(700, sum); + + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::Team_0", + Kokkos::TeamPolicy(exec0, 10, 10), + Test::FunctorTeam(v0)); + Kokkos::parallel_for("Test::cuda::raw_cuda_stream::Team", + Kokkos::TeamPolicy(exec, 10, 10), + Test::FunctorTeam(v)); + Kokkos::parallel_reduce( + "Test::cuda::raw_cuda_stream::Team_0", + Kokkos::TeamPolicy>(exec0, + 10, 10), + Test::FunctorTeamReduce(v0), sum0); + Kokkos::parallel_reduce( + "Test::cuda::raw_cuda_stream::Team", + Kokkos::TeamPolicy>(exec, 10, + 10), + Test::FunctorTeamReduce(v), sum); + ASSERT_EQ(800, sum0); + ASSERT_EQ(800, sum); +} + +TEST(cuda_multi_gpu, managed_views) { + StreamsAndDevices streams_and_devices; + { + std::array execs = + get_execution_spaces(streams_and_devices); + + Kokkos::View view0( + Kokkos::view_alloc("v0", execs[0]), 100); + Kokkos::View view(Kokkos::view_alloc("v", execs[1]), + 100); + + test_policies(execs[0], view0, execs[1], view); + } +} + +TEST(cuda_multi_gpu, unmanaged_views) { + StreamsAndDevices streams_and_devices; + { + std::array execs = + get_execution_spaces(streams_and_devices); + + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(execs[0].cuda_device())); + int *p0; + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaMalloc(reinterpret_cast(&p0), sizeof(int) * 100)); + Kokkos::View view0(p0, 100); + + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaSetDevice(execs[1].cuda_device())); + int *p; + KOKKOS_IMPL_CUDA_SAFE_CALL( + cudaMalloc(reinterpret_cast(&p), sizeof(int) * 100)); + Kokkos::View view(p, 100); + + test_policies(execs[0], view0, execs[1], view); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(p0)); + KOKKOS_IMPL_CUDA_SAFE_CALL(cudaFree(p)); + } +} + +struct ScratchFunctor { + int scratch_size; + int R; + + ScratchFunctor(int scratch_size_, int R_) + : scratch_size(scratch_size_), R(R_) {} + + KOKKOS_FUNCTION + void operator()(const Kokkos::TeamPolicy::member_type &team, + int &error_accum) const { + Kokkos::View scratch_mem( + team.team_scratch(1), scratch_size); + + // Initialize scratch memory + Kokkos::parallel_for(Kokkos::TeamVectorRange(team, 0, scratch_size), + [&](int i) { scratch_mem(i) = 0; }); + team.team_barrier(); + + // Increment each entry in scratch memory R times + for (int r = 0; r < R; ++r) { + Kokkos::parallel_for(Kokkos::TeamVectorRange(team, 0, scratch_size), + [&](int i) { scratch_mem(i) += 1; }); + } + team.team_barrier(); + + // Check that each scratch entry has been incremented exactly R times + int team_error_accum; + auto R_loc = R; // avoid implicit capture of this + Kokkos::parallel_reduce( + Kokkos::TeamVectorRange(team, 0, scratch_size), + [&](int i, int &tsum) { + if (scratch_mem(i) != R_loc) { + tsum += 1; + } + }, + team_error_accum); + Kokkos::single(Kokkos::PerTeam(team), + [&]() { error_accum += team_error_accum; }); + } +}; + +void test_scratch(TEST_EXECSPACE exec0, TEST_EXECSPACE exec1) { + constexpr int N = 10; + constexpr int R = 1000; + constexpr int scratch_size = 100; + using ScratchType = Kokkos::View; + + // Test allocating and using scratch space + ScratchFunctor f(scratch_size, R); + + auto policy0 = + Kokkos::TeamPolicy(exec0, N, 10) + .set_scratch_size( + 1, Kokkos::PerTeam(ScratchType::shmem_size(scratch_size))); + auto policy1 = + Kokkos::TeamPolicy(exec1, N, 10) + .set_scratch_size( + 1, Kokkos::PerTeam(ScratchType::shmem_size(scratch_size))); + + int error0, error1; + + Kokkos::parallel_reduce("test_scratch_device_0", policy0, f, error0); + Kokkos::parallel_reduce("test_scratch_device_1", policy1, f, error1); + ASSERT_EQ(error0, 0); + ASSERT_EQ(error1, 0); + + // Request larger scratch size to trigger a realloc and test + const auto new_scratch_size = scratch_size + 10; + ScratchFunctor f_more_scratch(new_scratch_size, R); + + auto policy0_more_scratch = + Kokkos::TeamPolicy(exec0, N, 10) + .set_scratch_size( + 1, Kokkos::PerTeam(ScratchType::shmem_size(new_scratch_size))); + auto policy1_more_scratch = + Kokkos::TeamPolicy(exec1, N, 10) + .set_scratch_size( + 1, Kokkos::PerTeam(ScratchType::shmem_size(new_scratch_size))); + + Kokkos::parallel_reduce("test_realloc_scratch_device_0", policy0_more_scratch, + f_more_scratch, error0); + Kokkos::parallel_reduce("test_realloc_scratch_device_1", policy1_more_scratch, + f_more_scratch, error1); + ASSERT_EQ(error0, 0); + ASSERT_EQ(error1, 0); +} + +TEST(cuda_multi_gpu, scratch_space) { + StreamsAndDevices streams_and_devices; + { + std::array execs = + get_execution_spaces(streams_and_devices); + + test_scratch(execs[0], execs[1]); + } +} +} // namespace diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp index ae603101abb..11fe6b8555b 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp @@ -29,200 +29,166 @@ __global__ void test_cuda_spaces_int_value(int *ptr) { TEST(cuda, space_access) { static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaHostPinnedSpace>::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaUVMSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::CudaUVMSpace>::accessible); //-------------------------------------- static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaUVMSpace>::assignable); - static_assert( - !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::CudaSpace, Kokkos::CudaHostPinnedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::CudaHostPinnedSpace>::accessible); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::accessible); //-------------------------------------- static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaUVMSpace>::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::CudaSpace>::accessible); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); - - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::accessible); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::CudaUVMSpace, Kokkos::CudaHostPinnedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::CudaHostPinnedSpace>::accessible); //-------------------------------------- static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaHostPinnedSpace>::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::CudaUVMSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::CudaUVMSpace>::accessible); //-------------------------------------- static_assert( - !Kokkos::SpaceAccessibility::accessible, - ""); + !Kokkos::SpaceAccessibility::accessible); static_assert( - Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::SpaceAccessibility::accessible); static_assert(Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::CudaUVMSpace>::accessible); static_assert( Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::CudaHostPinnedSpace>::accessible); static_assert(!Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::CudaSpace>::accessible); static_assert(Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::CudaUVMSpace>::accessible); static_assert( Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::CudaHostPinnedSpace>::accessible); static_assert(std::is_same::Space, - Kokkos::HostSpace>::value, - ""); + Kokkos::HostSpace>::value); static_assert( std::is_same::Space, Kokkos::Device>::value, - ""); + Kokkos::CudaUVMSpace>>::value); static_assert( std::is_same::Space, - Kokkos::CudaHostPinnedSpace>::value, - ""); + Kokkos::CudaHostPinnedSpace>::value); static_assert(std::is_same, Kokkos::Device>::value, - ""); + Kokkos::CudaUVMSpace>>::value); static_assert( Kokkos::SpaceAccessibility::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); - static_assert( - Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + static_assert(Kokkos::SpaceAccessibility< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); #ifdef KOKKOS_ENABLE_CUDA_UVM using uvm_view = Kokkos::View; static_assert(std::is_same::Space; static_assert(Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert( - Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::SpaceAccessibility::accessible); static_assert( - Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::SpaceAccessibility::accessible); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_1.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_1.cpp deleted file mode 100644 index 348b9feeab0..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_1.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_01 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_10.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_10.cpp deleted file mode 100644 index a77a55ea653..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_10.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_10 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_11.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_11.cpp deleted file mode 100644 index 1b6a140920c..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_11.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_11 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_12.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_12.cpp deleted file mode 100644 index 316bc85526f..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_12.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_12 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_13.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_13.cpp deleted file mode 100644 index 6344960a1cf..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_13.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_13 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_14.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_14.cpp deleted file mode 100644 index 4515174b82b..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_14.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_14 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_15.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_15.cpp deleted file mode 100644 index 7ead50f0944..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_15.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_15 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_16.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_16.cpp deleted file mode 100644 index e12b9b3894a..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_16.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_16 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_17.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_17.cpp deleted file mode 100644 index 959d0ab7503..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_17.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_17 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_18.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_18.cpp deleted file mode 100644 index 07d841519dc..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_18.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_18 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_2.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_2.cpp deleted file mode 100644 index 042a515b16a..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_2.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_02 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_3.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_3.cpp deleted file mode 100644 index dba401e5bcf..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_3.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_03 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_4.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_4.cpp deleted file mode 100644 index a44c58bdb55..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_4.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_04 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_5.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_5.cpp deleted file mode 100644 index cac0841dd83..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_5.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_05 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_6.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_6.cpp deleted file mode 100644 index bafe3b3fd2a..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_6.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_06 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_7.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_7.cpp deleted file mode 100644 index 3a4dd9d2533..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_7.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_07 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_8.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_8.cpp deleted file mode 100644 index 4e92aae565a..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_8.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_08 -#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_9.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_9.cpp deleted file mode 100644 index 44b8f3428d9..00000000000 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceTypeInit_9.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#define KOKKOS_DEFAULTDEVICETYPE_INIT_TEST_09 -#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Memory_Requirements.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Memory_Requirements.cpp index 8c72e9f2972..a213453ea18 100644 --- a/lib/kokkos/core/unit_test/hip/TestHIP_Memory_Requirements.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Memory_Requirements.cpp @@ -48,6 +48,9 @@ TEST(hip, memory_requirements) { // we want all user-facing memory in hip to be coarse grained. As of // today(07.01.22) the documentation is not reliable/correct, we test the // memory on the device and host + // FIXME_HIP + GTEST_SKIP() << "skipping the test because the CI on MI100 returns: error( " + "hipErrorInvalidValue)"; KOKKOS_TEST_MEMORY_COARSEGRAINEDNESS(Kokkos::HIPSpace, int, 10); KOKKOS_TEST_MEMORY_COARSEGRAINEDNESS(Kokkos::HIPHostPinnedSpace, int, 10); KOKKOS_TEST_MEMORY_COARSEGRAINEDNESS(Kokkos::HIPManagedSpace, int, 10); diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp index 14fd4e28837..8f7499c244b 100644 --- a/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp @@ -29,198 +29,164 @@ __global__ void test_hip_spaces_int_value(int *ptr) { TEST(hip, space_access) { static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPHostPinnedSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPSpace>::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPManagedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPManagedSpace>::accessible); //-------------------------------------- static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPSpace>::assignable); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPHostPinnedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPHostPinnedSpace>::accessible); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::accessible); static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPManagedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPManagedSpace>::accessible); //-------------------------------------- static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPHostPinnedSpace>::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPSpace>::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPManagedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPManagedSpace>::accessible); //-------------------------------------- static_assert( Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPManagedSpace>::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable); - static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + static_assert( + !Kokkos::Impl::MemorySpaceAccess::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPSpace>::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HIPHostPinnedSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HIPHostPinnedSpace>::accessible); //-------------------------------------- static_assert( - !Kokkos::SpaceAccessibility::accessible, - ""); + !Kokkos::SpaceAccessibility::accessible); static_assert( - Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::SpaceAccessibility::accessible); static_assert( Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::HIPHostPinnedSpace>::accessible); - static_assert(Kokkos::SpaceAccessibility::accessible, - ""); + static_assert( + Kokkos::SpaceAccessibility::accessible); static_assert(!Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::HIPSpace>::accessible); static_assert( Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::HIPHostPinnedSpace>::accessible); - static_assert(Kokkos::SpaceAccessibility::accessible, - ""); + static_assert( + Kokkos::SpaceAccessibility::accessible); static_assert(std::is_same::Space, - Kokkos::HostSpace>::value, - ""); + Kokkos::HostSpace>::value); static_assert( std::is_same::Space, - Kokkos::HIPHostPinnedSpace>::value, - ""); + Kokkos::HIPHostPinnedSpace>::value); static_assert( std::is_same::Space, Kokkos::Device>::value, - ""); + Kokkos::HIPManagedSpace>>::value); static_assert( Kokkos::SpaceAccessibility::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); } template diff --git a/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp index 25c7138ed3c..d7b2a57b442 100644 --- a/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp +++ b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp @@ -62,8 +62,10 @@ struct TestIncrExecSpace { auto concurrency = ExecSpace().concurrency(); ASSERT_GT(concurrency, 0); +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4 int in_parallel = ExecSpace::in_parallel(); ASSERT_FALSE(in_parallel); +#endif const char* name = ExecSpace::name(); std::cout << name << std::endl; diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_PartitionMaster.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_PartitionMaster.cpp deleted file mode 100644 index 92b8032bf0c..00000000000 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_PartitionMaster.cpp +++ /dev/null @@ -1,105 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER - -#include -#include - -#include - -namespace Test { - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_3 -TEST(openmp, partition_master) { - using Mutex = Kokkos::Experimental::MasterLock; - - Mutex mtx; - int errors = 0; - - auto master = [&errors, &mtx](int /*partition_id*/, int /*num_partitions*/) { - const int pool_size = Kokkos::OpenMP().impl_thread_pool_size(); - - { - std::unique_lock lock(mtx); - if (Kokkos::OpenMP::in_parallel()) { - ++errors; - } - if (Kokkos::OpenMP::impl_thread_pool_rank() != 0) { - ++errors; - } - } - - { - int local_errors = 0; - Kokkos::parallel_reduce( - Kokkos::RangePolicy(0, 1000), - [pool_size](const int, int& errs) { - if (Kokkos::OpenMP().impl_thread_pool_size() != pool_size) { - ++errs; - } - }, - local_errors); - Kokkos::atomic_add(&errors, local_errors); - } - - Kokkos::Experimental::UniqueToken token; - - Kokkos::View count("", token.size()); - - Kokkos::parallel_for(Kokkos::RangePolicy(0, 1000), - [=](const int) { - int i = token.acquire(); - ++count[i]; - token.release(i); - }); - - Kokkos::View sum(""); - Kokkos::parallel_for( - Kokkos::RangePolicy(0, token.size()), - [=](const int i) { Kokkos::atomic_add(sum.data(), count[i]); }); - - if (sum() != 1000) { - Kokkos::atomic_add(&errors, 1); - } - }; - - master(0, 1); - - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 4, 0); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 0, 4); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 2, 2); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 8, 0); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 0, 8); - ASSERT_EQ(errors, 0); - - Kokkos::OpenMP::partition_master(master, 8, 8); - ASSERT_EQ(errors, 0); -} -#endif - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/sycl/TestSYCL_Spaces.cpp b/lib/kokkos/core/unit_test/sycl/TestSYCL_Spaces.cpp index 914f8432488..a4fd053e83d 100644 --- a/lib/kokkos/core/unit_test/sycl/TestSYCL_Spaces.cpp +++ b/lib/kokkos/core/unit_test/sycl/TestSYCL_Spaces.cpp @@ -21,235 +21,192 @@ namespace Test { TEST(sycl, space_access) { static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::assignable, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::assignable, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::accessible); //-------------------------------------- static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLDeviceUSMSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCLDeviceUSMSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert( !Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); //-------------------------------------- static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert( !Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLSharedUSMSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::accessible); //-------------------------------------- static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLHostUSMSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLHostUSMSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::assignable); static_assert( !Kokkos::Impl::MemorySpaceAccess::assignable, - ""); + Kokkos::HostSpace>::assignable); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLHostUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLHostUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::assignable); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLHostUSMSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCLHostUSMSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible); static_assert(!Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLHostUSMSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::assignable, - ""); + Kokkos::Experimental::SYCLHostUSMSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::assignable); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::Experimental::SYCLHostUSMSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCLHostUSMSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::accessible); //-------------------------------------- static_assert(!Kokkos::SpaceAccessibility::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Experimental::SYCL, - Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCL, + Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Experimental::SYCL, - Kokkos::Experimental::SYCLSharedUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCL, + Kokkos::Experimental::SYCLSharedUSMSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Experimental::SYCL, - Kokkos::Experimental::SYCLHostUSMSpace>::accessible, - ""); + Kokkos::Experimental::SYCL, + Kokkos::Experimental::SYCLHostUSMSpace>::accessible); static_assert(!Kokkos::SpaceAccessibility< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLDeviceUSMSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLSharedUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLSharedUSMSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::accessible); static_assert( std::is_same::Space, - Kokkos::HostSpace>::value, - ""); + Kokkos::HostSpace>::value); static_assert( std::is_same< Kokkos::Impl::HostMirror< Kokkos::Experimental::SYCLSharedUSMSpace>::Space, Kokkos::Device>::value, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace>>::value); static_assert( Kokkos::Impl::MemorySpaceAccess::accessible, - ""); + Kokkos::HostSpace>::accessible); static_assert(Kokkos::Impl::MemorySpaceAccess< - Kokkos::HostSpace, - Kokkos::Experimental::SYCLHostUSMSpace>::accessible, - ""); + Kokkos::HostSpace, + Kokkos::Experimental::SYCLHostUSMSpace>::accessible); static_assert(std::is_same::Space, - Kokkos::Experimental::SYCLHostUSMSpace>::value, - ""); + Kokkos::Experimental::SYCLHostUSMSpace>::value); static_assert( std::is_same< Kokkos::Device, Kokkos::Device>::value, - ""); + Kokkos::Experimental::SYCLSharedUSMSpace>>::value); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror< - Kokkos::Experimental::SYCLDeviceUSMSpace>::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror< + Kokkos::Experimental::SYCLDeviceUSMSpace>::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror< - Kokkos::Experimental::SYCLSharedUSMSpace>::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror< + Kokkos::Experimental::SYCLSharedUSMSpace>::Space, + Kokkos::HostSpace>::accessible); static_assert(Kokkos::SpaceAccessibility< - Kokkos::Impl::HostMirror< - Kokkos::Experimental::SYCLHostUSMSpace>::Space, - Kokkos::HostSpace>::accessible, - ""); + Kokkos::Impl::HostMirror< + Kokkos::Experimental::SYCLHostUSMSpace>::Space, + Kokkos::HostSpace>::accessible); } TEST(sycl, uvm) { diff --git a/lib/kokkos/core/unit_test/tools/TestEventCorrectness.hpp b/lib/kokkos/core/unit_test/tools/TestEventCorrectness.hpp index 3c85f661aae..946169a786d 100644 --- a/lib/kokkos/core/unit_test/tools/TestEventCorrectness.hpp +++ b/lib/kokkos/core/unit_test/tools/TestEventCorrectness.hpp @@ -409,14 +409,19 @@ TEST(kokkosp, parallel_scan_no_fence) { << "skipping since the OpenMPTarget backend has unexpected fences"; #endif + // Execute the parallel_scan first without looking for fence events. + // Depending on the backend implementation and the order of tests, + // it might be that the first call to parallel_scan is reallocating scratch + // memory which implies a fence when deallocating. We are not interested in + // detecting this event. + TestScanFunctor tf; + Kokkos::parallel_scan("dogs", Kokkos::RangePolicy<>(0, 1), tf); + using namespace Kokkos::Test::Tools; listen_tool_events(Config::DisableAll(), Config::EnableKernels(), Config::EnableFences()); auto success = validate_absence( - [=]() { - TestScanFunctor tf; - Kokkos::parallel_scan("dogs", Kokkos::RangePolicy<>(0, 1), tf); - }, + [=]() { Kokkos::parallel_scan("dogs", Kokkos::RangePolicy<>(0, 1), tf); }, [=](BeginFenceEvent begin_event) { if (begin_event.name.find("Debug Only Check for Execution Error") != std::string::npos || @@ -450,13 +455,20 @@ TEST(kokkosp, parallel_scan_no_fence_view) { << "skipping since the OpenMPTarget backend has unexpected fences"; #endif + // Execute the parallel_scan first without looking for fence events. + // Depending on the backend implementation and the order of tests, + // it might be that the first call to parallel_scan is reallocating scratch + // memory which implies a fence when deallocating. We are not interested in + // detecting this event. + TestScanFunctor tf; + Kokkos::View v("scan_result"); + Kokkos::parallel_scan("dogs", Kokkos::RangePolicy<>(0, 1), tf, v); + using namespace Kokkos::Test::Tools; listen_tool_events(Config::DisableAll(), Config::EnableKernels(), Config::EnableFences()); - Kokkos::View v("scan_result"); auto success = validate_absence( [=]() { - TestScanFunctor tf; Kokkos::parallel_scan("dogs", Kokkos::RangePolicy<>(0, 1), tf, v); }, [=](BeginFenceEvent begin_event) { diff --git a/lib/kokkos/core/unit_test/tools/TestLogicalSpaces.hpp b/lib/kokkos/core/unit_test/tools/TestLogicalSpaces.hpp deleted file mode 100644 index 4e56f8996a0..00000000000 --- a/lib/kokkos/core/unit_test/tools/TestLogicalSpaces.hpp +++ /dev/null @@ -1,177 +0,0 @@ -//@HEADER -// ************************************************************************ -// -// Kokkos v. 4.0 -// Copyright (2022) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// the U.S. Government retains certain rights in this software. -// -// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. -// See https://kokkos.org/LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//@HEADER -#include -#include -#include "Kokkos_Core.hpp" - -#include - -namespace Test { - -void debug_print(const Kokkos_Profiling_SpaceHandle hand, const char* name, - const void* ptr, const size_t size) { - std::cout << "Alloc: " << hand.name << ", [" << name << "," << ptr << "] " - << size << std::endl; -} -void debug_dealloc(const Kokkos_Profiling_SpaceHandle hand, const char* name, - const void* ptr, const size_t size) { - std::cout << "Dealloc: " << hand.name << ", [" << name << "," << ptr << "] " - << size << std::endl; -} - -void fail_on_event(const Kokkos::Profiling::SpaceHandle, const char*, - const void*, const uint64_t) { - ASSERT_TRUE(false) << "Unexpected memory event"; -} - -void expect_no_events() { - Kokkos::Tools::Experimental::set_allocate_data_callback(&fail_on_event); - Kokkos::Tools::Experimental::set_deallocate_data_callback(&fail_on_event); -} - -std::string expected_view_name; -std::string expected_space_name; -std::string error_message; -void expect_allocation_event(const std::string evn, const std::string esn, - const std::string em) { - expected_view_name = evn; - expected_space_name = esn; - error_message = em; - Kokkos::Tools::Experimental::set_allocate_data_callback( - [](const Kokkos_Profiling_SpaceHandle hand, const char* name, const void*, - const uint64_t) { - ASSERT_EQ(std::string(hand.name), expected_space_name) - << error_message << " (bad handle)"; - ASSERT_EQ(std::string(name), expected_view_name) - << error_message << " (bad view name)"; - expect_no_events(); - }); -} -void expect_deallocation_event(const std::string& evn, const std::string& esn, - const std::string em) { - expected_view_name = evn; - expected_space_name = esn; - error_message = em; - Kokkos::Tools::Experimental::set_deallocate_data_callback( - [](const Kokkos_Profiling_SpaceHandle hand, const char* name, const void*, - const uint64_t) { - ASSERT_EQ(std::string(hand.name), expected_space_name) - << error_message << " (bad handle)"; - ASSERT_EQ(std::string(name), expected_view_name) - << error_message << " (bad view name)"; - expect_no_events(); - }); -} - -struct TestSpaceNamer { - static constexpr const char* get_name() { return "TestSpace"; } -}; -struct TestSpaceNamerTwo { - static constexpr const char* get_name() { return "YoDawg"; } -}; -struct TestSpaceNamerThree { - static constexpr const char* get_name() { return "CustomAccessSpace"; } -}; -using fake_memory_space = Kokkos::Experimental::LogicalMemorySpace< - Kokkos::HostSpace, Kokkos::DefaultHostExecutionSpace, TestSpaceNamer, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>; - -void test_view_construct() { - { - expect_allocation_event("puppy_view", "TestSpace", "View allocation"); - Kokkos::View pup_view("puppy_view", 1000); - expect_deallocation_event("puppy_view", "TestSpace", "View free"); - } - Kokkos::Tools::Experimental::pause_tools(); -} -void test_malloc_free() { - expect_allocation_event("does_malloc_work", "TestSpace", - "Error in malloc event"); - auto* temp = - Kokkos::kokkos_malloc("does_malloc_work", 1000); - expect_deallocation_event("does_malloc_work", "TestSpace", "Error in free"); - Kokkos::kokkos_free(temp); - Kokkos::Tools::Experimental::pause_tools(); -} -void test_chained_spaces() { - using doubly_fake_memory_space = Kokkos::Experimental::LogicalMemorySpace< - fake_memory_space, Kokkos::DefaultHostExecutionSpace, TestSpaceNamerTwo, - Kokkos::Experimental::LogicalSpaceSharesAccess::shared_access>; - { - expect_allocation_event("xzibit_dot_jpeg", "YoDawg", - "Chained space view allocation"); - Kokkos::View pup_view("xzibit_dot_jpeg", - 1000); - expect_deallocation_event("xzibit_dot_jpeg", "YoDawg", - "Chained space free"); - } - Kokkos::Tools::Experimental::pause_tools(); -} -void test_space_allocations() { - fake_memory_space debug_space; - expect_allocation_event("allocation_from_space", "TestSpace", - "Space allocation"); - auto* temp = debug_space.allocate("allocation_from_space", 1000); - expect_deallocation_event("allocation_from_space", "TestSpace", - "Space deallocation"); - debug_space.deallocate("allocation_from_space", temp, 1000); - Kokkos::Tools::Experimental::pause_tools(); -} -template -struct AccessCheckKernel { - Kokkos::View data; - KOKKOS_FUNCTION void operator()(const int i) const { data[i] = i; } -}; - -template -void test_allowed_access() { - constexpr const int data_size = 1000; - // We use an unmananged View here since we want to detect a memory access - // violation in the parallel_for and not in the initialization of the View. - std::vector test_data(data_size); - Kokkos::View test_view(test_data.data(), data_size); - AccessCheckKernel functor{test_view}; - Kokkos::parallel_for( - "access_allowed", - Kokkos::RangePolicy(0, data_size), - functor); - Kokkos::fence(); -} - -using semantically_independent_logical_space = - Kokkos::Experimental::LogicalMemorySpace< - Kokkos::HostSpace, Kokkos::DefaultHostExecutionSpace, - TestSpaceNamerThree, - Kokkos::Experimental::LogicalSpaceSharesAccess::no_shared_access>; - -TEST(defaultdevicetype, logical_space_views) { test_view_construct(); } -TEST(defaultdevicetype, logical_space_malloc) { test_malloc_free(); } -TEST(defaultdevicetype, logical_space_alloc) { test_space_allocations(); } -TEST(defaultdevicetype, chained_logical_spaces) { test_chained_spaces(); } -TEST(defaultdevicetype, access_allowed) { - test_allowed_access(); -} -// FIXME_SYCL -#if !(defined(KOKKOS_COMPILER_INTEL_LLVM) && defined(KOKKOS_ENABLE_SYCL)) -TEST(defaultdevicetype_DeathTest, access_forbidden) { - ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - ASSERT_DEATH( - { test_allowed_access(); }, - "Kokkos::View ERROR: attempt to access inaccessible memory space"); -} -#endif - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/tools/TestProfilingSection.cpp b/lib/kokkos/core/unit_test/tools/TestProfilingSection.cpp index 318766ac455..9d35d67feb0 100644 --- a/lib/kokkos/core/unit_test/tools/TestProfilingSection.cpp +++ b/lib/kokkos/core/unit_test/tools/TestProfilingSection.cpp @@ -108,8 +108,8 @@ TEST(defaultdevicetype, profiling_section) { } using Kokkos::Profiling::ProfilingSection; -static_assert(!std::is_default_constructible::value, ""); -static_assert(!std::is_copy_constructible::value, ""); -static_assert(!std::is_move_constructible::value, ""); -static_assert(!std::is_copy_assignable::value, ""); -static_assert(!std::is_move_assignable::value, ""); +static_assert(!std::is_default_constructible::value); +static_assert(!std::is_copy_constructible::value); +static_assert(!std::is_move_constructible::value); +static_assert(!std::is_copy_assignable::value); +static_assert(!std::is_move_assignable::value); diff --git a/lib/kokkos/example/tutorial/01_hello_world/hello_world.cpp b/lib/kokkos/example/tutorial/01_hello_world/hello_world.cpp index 5b8a21af833..22b8b6d63c8 100644 --- a/lib/kokkos/example/tutorial/01_hello_world/hello_world.cpp +++ b/lib/kokkos/example/tutorial/01_hello_world/hello_world.cpp @@ -58,12 +58,7 @@ struct hello_world { // is unnecessary but harmless. KOKKOS_INLINE_FUNCTION void operator()(const int i) const { - // FIXME_SYCL needs workaround for printf -#ifndef __SYCL_DEVICE_ONLY__ - printf("Hello from i = %i\n", i); -#else - (void)i; -#endif + Kokkos::printf("Hello from i = %i\n", i); } }; diff --git a/lib/kokkos/example/tutorial/01_hello_world_lambda/hello_world_lambda.cpp b/lib/kokkos/example/tutorial/01_hello_world_lambda/hello_world_lambda.cpp index c78f3076361..909765e1fc3 100644 --- a/lib/kokkos/example/tutorial/01_hello_world_lambda/hello_world_lambda.cpp +++ b/lib/kokkos/example/tutorial/01_hello_world_lambda/hello_world_lambda.cpp @@ -76,13 +76,9 @@ int main(int argc, char* argv[]) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) Kokkos::parallel_for( 15, KOKKOS_LAMBDA(const int i) { - // FIXME_SYCL needs workaround for printf -#ifndef __SYCL_DEVICE_ONLY__ - // printf works in a CUDA parallel kernel; std::ostream does not. - printf("Hello from i = %i\n", i); -#else - (void)i; -#endif + // Kokko::printf works for all backends in a parallel kernel; + // std::ostream does not. + Kokkos::printf("Hello from i = %i\n", i); }); #endif // You must call finalize() after you are done using Kokkos. diff --git a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams/thread_teams.cpp b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams/thread_teams.cpp index b041f8d435b..ee3f4721d91 100644 --- a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams/thread_teams.cpp +++ b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams/thread_teams.cpp @@ -47,13 +47,9 @@ struct hello_world { // The TeamPolicy<>::member_type provides functions to query the multi // dimensional index of a thread as well as the number of thread-teams and // the size of each team. -#ifndef __SYCL_DEVICE_ONLY__ - // FIXME_SYCL needs printf workaround - printf("Hello World: %i %i // %i %i\n", thread.league_rank(), - thread.team_rank(), thread.league_size(), thread.team_size()); -#else - (void)thread; -#endif + Kokkos::printf("Hello World: %i %i // %i %i\n", thread.league_rank(), + thread.team_rank(), thread.league_size(), + thread.team_size()); } }; diff --git a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams_lambda/thread_teams_lambda.cpp b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams_lambda/thread_teams_lambda.cpp index 933b254f7c7..1e6812adead 100644 --- a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams_lambda/thread_teams_lambda.cpp +++ b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/01_thread_teams_lambda/thread_teams_lambda.cpp @@ -57,16 +57,12 @@ int main(int narg, char* args[]) { policy, KOKKOS_LAMBDA(const team_member& thread, int& lsum) { lsum += 1; - // TeamPolicy<>::member_type provides functions to query the - // multidimensional index of a thread, as well as the number of - // thread teams and the size of each team. -#ifndef __SYCL_DEVICE_ONLY__ - // FIXME_SYCL needs workaround for printf - printf("Hello World: %i %i // %i %i\n", thread.league_rank(), - thread.team_rank(), thread.league_size(), thread.team_size()); -#else - (void)thread; -#endif + // TeamPolicy<>::member_type provides functions to query the + // multidimensional index of a thread, as well as the number of + // thread teams and the size of each team. + Kokkos::printf("Hello World: %i %i // %i %i\n", thread.league_rank(), + thread.team_rank(), thread.league_size(), + thread.team_size()); }, sum); #endif diff --git a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/02_nested_parallel_for/nested_parallel_for.cpp b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/02_nested_parallel_for/nested_parallel_for.cpp index 398810d1331..75d6089e9af 100644 --- a/lib/kokkos/example/tutorial/Hierarchical_Parallelism/02_nested_parallel_for/nested_parallel_for.cpp +++ b/lib/kokkos/example/tutorial/Hierarchical_Parallelism/02_nested_parallel_for/nested_parallel_for.cpp @@ -43,16 +43,11 @@ struct hello_world { // the operator using a team_policy acts like a parallel region for the // team. That means that everything outside of the nested parallel_for is // also executed by all threads of the team. - Kokkos::parallel_for(Kokkos::TeamThreadRange(thread, 31), - [&](const int& i) { -#ifndef __SYCL_DEVICE_ONLY__ - // FIXME_SYCL needs printf workaround - printf("Hello World: (%i , %i) executed loop %i \n", - thread.league_rank(), thread.team_rank(), i); -#else - (void) i; -#endif - }); + Kokkos::parallel_for( + Kokkos::TeamThreadRange(thread, 31), [&](const int& i) { + Kokkos::printf("Hello World: (%i , %i) executed loop %i \n", + thread.league_rank(), thread.team_rank(), i); + }); } }; diff --git a/lib/kokkos/generate_makefile.bash b/lib/kokkos/generate_makefile.bash index 1b216d9fe35..25370daa3f2 100755 --- a/lib/kokkos/generate_makefile.bash +++ b/lib/kokkos/generate_makefile.bash @@ -160,6 +160,7 @@ display_help_text() { echo " AMD_GFX906 = AMD GPU MI50/MI60 GFX906" echo " AMD_GFX908 = AMD GPU MI100 GFX908" echo " AMD_GFX90A = AMD GPU MI200 GFX90A" + echo " AMD_GFX940 = AMD GPU MI300 GFX940" echo " AMD_GFX942 = AMD GPU MI300 GFX942" echo " AMD_GFX1030 = AMD GPU V620/W6800 GFX1030" echo " AMD_GFX1100 = AMD GPU RX 7900 XT(X) GFX1100" @@ -169,12 +170,9 @@ display_help_text() { echo " ARMV8_THUNDERX = ARMv8 Cavium ThunderX CPU" echo " ARMV8_THUNDERX2 = ARMv8 Cavium ThunderX2 CPU" echo " [IBM]" - echo " BGQ = IBM Blue Gene Q" - echo " Power7 = IBM POWER7 and POWER7+ CPUs" echo " Power8 = IBM POWER8 CPUs" echo " Power9 = IBM POWER9 CPUs" echo " [Intel]" - echo " WSM = Intel Westmere CPUs" echo " SNB = Intel Sandy/Ivy Bridge CPUs" echo " HSW = Intel Haswell CPUs" echo " BDW = Intel Broadwell Xeon E-class CPUs" @@ -225,7 +223,6 @@ display_help_text() { echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" echo " tests.)" echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." - echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." echo "--with-options=[OPT]: Additional options to Kokkos:" echo " compiler_warnings" echo " aggressive_vectorization = add ivdep on loops" @@ -341,10 +338,6 @@ do KOKKOS_HWLOC=ON HWLOC_PATH="${key#*=}" ;; - --with-memkind*) - KOKKOS_MEMKIND=ON - MEMKIND_PATH="${key#*=}" - ;; --arch*) KOKKOS_ARCH="${key#*=}" ;; @@ -451,15 +444,6 @@ else KOKKOS_HWLOC_CMD= fi -if [ "$KOKKOS_MEMKIND" == "ON" ]; then - KOKKOS_MEMKIND_CMD=-DKokkos_ENABLE_MEMKIND=ON - if [ "$MEMKIND_PATH" != "" ]; then - KOKKOS_MEMKIND_PATH_CMD=-DMEMKIND_ROOT=$MEMKIND_PATH - fi -else - KOKKOS_MEMKIND_CMD= -fi - if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then if [ "${KOKKOS_PATH}" == "" ]; then CM_SCRIPT=$0 @@ -505,5 +489,5 @@ if [[ ${COMPILER} == *clang* ]]; then fi fi -echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} ${KOKKOS_HIP_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_BC_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} -DKokkos_ENABLE_DEPRECATION_WARNINGS=${KOKKOS_DEPRECATED_CODE_WARNINGS} -DKokkos_ENABLE_DEPRECATED_CODE_4=${KOKKOS_DEPRECATED_CODE} ${KOKKOS_PATH} -cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} ${KOKKOS_HIP_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_BC_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} ${PASSTHRU_CMAKE_FLAGS} -DKokkos_ENABLE_DEPRECATION_WARNINGS=${KOKKOS_DEPRECATED_CODE_WARNINGS} -DKokkos_ENABLE_DEPRECATED_CODE_4=${KOKKOS_DEPRECATED_CODE} ${KOKKOS_PATH} +echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} ${KOKKOS_HIP_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_BC_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} -DKokkos_ENABLE_DEPRECATION_WARNINGS=${KOKKOS_DEPRECATED_CODE_WARNINGS} -DKokkos_ENABLE_DEPRECATED_CODE_4=${KOKKOS_DEPRECATED_CODE} ${KOKKOS_PATH} +cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} ${KOKKOS_HIP_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_BC_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${PASSTHRU_CMAKE_FLAGS} -DKokkos_ENABLE_DEPRECATION_WARNINGS=${KOKKOS_DEPRECATED_CODE_WARNINGS} -DKokkos_ENABLE_DEPRECATED_CODE_4=${KOKKOS_DEPRECATED_CODE} ${KOKKOS_PATH} diff --git a/lib/kokkos/gnu_generate_makefile.bash b/lib/kokkos/gnu_generate_makefile.bash index 5ea159cdd47..7a197bb71d4 100755 --- a/lib/kokkos/gnu_generate_makefile.bash +++ b/lib/kokkos/gnu_generate_makefile.bash @@ -74,9 +74,6 @@ do --with-hwloc*) HWLOC_PATH="${key#*=}" ;; - --with-memkind*) - MEMKIND_PATH="${key#*=}" - ;; --arch*) KOKKOS_ARCH="${key#*=}" ;; @@ -148,12 +145,9 @@ do echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" echo " [IBM]" - echo " BGQ = IBM Blue Gene Q" - echo " Power7 = IBM POWER7 and POWER7+ CPUs" echo " Power8 = IBM POWER8 CPUs" echo " Power9 = IBM POWER9 CPUs" echo " [Intel]" - echo " WSM = Intel Westmere CPUs" echo " SNB = Intel Sandy/Ivy Bridge CPUs" echo " HSW = Intel Haswell CPUs" echo " BDW = Intel Broadwell Xeon E-class CPUs" @@ -198,7 +192,6 @@ do echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" echo " tests.)" echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." - echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." echo "--with-options=[OPT]: Additional options to Kokkos:" echo " compiler_warnings" echo " aggressive_vectorization = add ivdep on loops" @@ -298,11 +291,6 @@ if [ ${#HWLOC_PATH} -gt 0 ]; then KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" fi -if [ ${#MEMKIND_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" - KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" -fi - if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" fi diff --git a/lib/kokkos/master_history.txt b/lib/kokkos/master_history.txt index fd0020b8d53..bd122a456bd 100644 --- a/lib/kokkos/master_history.txt +++ b/lib/kokkos/master_history.txt @@ -34,3 +34,5 @@ tag: 4.0.00 date: 02:23:2023 master: 5ad60966 release: 52ea2953 tag: 4.0.01 date: 04:26:2023 master: aa1f48f3 release: 5893754f tag: 4.1.00 date: 06:20:2023 master: 62d2b6c8 release: adde1e6a tag: 4.2.00 date: 11:09:2023 master: 1a3ea28f release: abe01c88 +tag: 4.2.01 date: 01:30:2024 master: 71a9bcae release: 221e5f7a +tag: 4.3.00 date: 04:03:2024 master: e0dc0128 release: f08217a4 diff --git a/lib/kokkos/simd/src/Kokkos_SIMD_AVX2.hpp b/lib/kokkos/simd/src/Kokkos_SIMD_AVX2.hpp index 521160b76fc..6d0956f3832 100644 --- a/lib/kokkos/simd/src/Kokkos_SIMD_AVX2.hpp +++ b/lib/kokkos/simd/src/Kokkos_SIMD_AVX2.hpp @@ -30,9 +30,11 @@ "Kokkos_SIMD_AVX2.hpp must be included before Kokkos_SIMD_Common_Math.hpp!" #endif -// FIXME_HIP ROCm 5.6 and 5.7 can't compile with the intrinsic used here. -#if defined(__HIPCC__) && (HIP_VERSION_MAJOR == 5) && \ - ((HIP_VERSION_MINOR == 6) || (HIP_VERSION_MINOR == 7)) +// FIXME_HIP ROCm 5.6, 5.7, and 6.0 can't compile with the intrinsic used here. +#if defined(__HIPCC__) && \ + (((HIP_VERSION_MAJOR == 5) && \ + ((HIP_VERSION_MINOR == 6) || (HIP_VERSION_MINOR == 7))) || \ + ((HIP_VERSION_MAJOR == 6) && ((HIP_VERSION_MINOR == 0)))) #define KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE #endif @@ -563,10 +565,18 @@ class simd> { element_aligned_tag) { m_value = _mm256_loadu_pd(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm256_load_pd(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm256_storeu_pd(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm256_store_pd(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256d() const { return m_value; @@ -818,10 +828,18 @@ class simd> { element_aligned_tag) { m_value = _mm_loadu_ps(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm_load_ps(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm_storeu_ps(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm_store_ps(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m128() const { return m_value; @@ -1059,17 +1077,31 @@ class simd> { } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, element_aligned_tag) { - // FIXME_HIP ROCm 5.6 can't compile with the intrinsic used here. + // FIXME_HIP ROCm 5.6, 5.7, and 6.0 can't compile with the intrinsic used + // here. #ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE m_value = _mm_loadu_si128(reinterpret_cast<__m128i const*>(ptr)); #else m_value = _mm_maskload_epi32(ptr, static_cast<__m128i>(mask_type(true))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + // FIXME_HIP ROCm 5.6 can't compile with the intrinsic used here. +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + m_value = _mm_load_si128(reinterpret_cast<__m128i const*>(ptr)); +#else + m_value = _mm_maskload_epi32(ptr, static_cast<__m128i>(mask_type(true))); #endif } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm_maskstore_epi32(ptr, static_cast<__m128i>(mask_type(true)), m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm_maskstore_epi32(ptr, static_cast<__m128i>(mask_type(true)), m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m128i() const { return m_value; @@ -1111,6 +1143,11 @@ class simd> { return simd( _mm_add_epi32(static_cast<__m128i>(lhs), static_cast<__m128i>(rhs))); } + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd( + _mm_mullo_epi32(static_cast<__m128i>(lhs), static_cast<__m128i>(rhs))); + } [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator>>( simd const& lhs, int rhs) noexcept { @@ -1249,6 +1286,15 @@ class simd> { #else m_value = _mm256_maskload_epi64(reinterpret_cast(ptr), static_cast<__m256i>(mask_type(true))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + m_value = _mm256_load_si256(reinterpret_cast<__m256i const*>(ptr)); +#else + m_value = _mm256_maskload_epi64(reinterpret_cast(ptr), + static_cast<__m256i>(mask_type(true))); #endif } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( @@ -1256,6 +1302,11 @@ class simd> { _mm256_maskstore_epi64(reinterpret_cast(ptr), static_cast<__m256i>(mask_type(true)), m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm256_maskstore_epi64(reinterpret_cast(ptr), + static_cast<__m256i>(mask_type(true)), m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256i() const { return m_value; @@ -1278,6 +1329,13 @@ class simd> { _mm256_add_epi64(static_cast<__m256i>(lhs), static_cast<__m256i>(rhs))); } + // fallback simd multiplication using generator constructor + // multiplying vectors of 64-bit signed integers is not available in AVX2 + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] * rhs[i]; }); + } + // AVX2 only has eq and gt comparisons for int64 [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend mask_type operator==(simd const& lhs, simd const& rhs) noexcept { @@ -1306,17 +1364,19 @@ class simd> { return !(lhs == rhs); } + // fallback simd shift right arithmetic using generator constructor // Shift right arithmetic for 64bit packed ints is not availalbe in AVX2 - // [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd( - // simd const& lhs, int rhs) noexcept { - // return simd(_mm256_srai_epi64(static_cast<__m256i>(lhs), rhs)); - // } + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator>>( + simd const& lhs, int rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] >> rhs; }); + } - // [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd( - // simd const& lhs, simd const& rhs) noexcept { - // return simd(_mm256_srav_epi64(static_cast<__m256i>(lhs), - // static_cast<__m256i>(rhs)))); - // } + // fallback simd shift right arithmetic using generator constructor + // Shift right arithmetic for 64bit packed ints is not availalbe in AVX2 + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator>>( + simd const& lhs, simd const& rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] >> rhs[i]; }); + } [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator<<( simd const& lhs, int rhs) noexcept { @@ -1444,6 +1504,15 @@ class simd> { #else m_value = _mm256_maskload_epi64(reinterpret_cast(ptr), static_cast<__m256i>(mask_type(true))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + m_value = _mm256_load_si256(reinterpret_cast<__m256i const*>(ptr)); +#else + m_value = _mm256_maskload_epi64(reinterpret_cast(ptr), + static_cast<__m256i>(mask_type(true))); #endif } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256i() @@ -1460,6 +1529,14 @@ class simd> { return simd( _mm256_sub_epi64(static_cast<__m256i>(lhs), static_cast<__m256i>(rhs))); } + + // fallback simd multiplication using generator constructor + // multiplying vectors of 64-bit unsigned integers is not available in AVX2 + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] * rhs[i]; }); + } + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator>>( simd const& lhs, int rhs) noexcept { return _mm256_srli_epi64(static_cast<__m256i>(lhs), rhs); @@ -1588,6 +1665,11 @@ class const_where_expression>, static_cast<__m256d>(m_value)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(double* mem, vector_aligned_tag) const { + _mm256_maskstore_pd(mem, _mm256_castpd_si256(static_cast<__m256d>(m_mask)), + static_cast<__m256d>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( double* mem, simd> const& index) const { @@ -1624,6 +1706,11 @@ class where_expression>, mem, _mm256_castpd_si256(static_cast<__m256d>(m_mask)))); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(double const* mem, vector_aligned_tag) { + m_value = value_type(_mm256_maskload_pd( + mem, _mm256_castpd_si256(static_cast<__m256d>(m_mask)))); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( double const* mem, simd> const& index) { @@ -1667,6 +1754,11 @@ class const_where_expression>, static_cast<__m128>(m_value)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(float* mem, vector_aligned_tag) const { + _mm_maskstore_ps(mem, _mm_castps_si128(static_cast<__m128>(m_mask)), + static_cast<__m128>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( float* mem, simd> const& index) const { @@ -1703,6 +1795,11 @@ class where_expression>, _mm_maskload_ps(mem, _mm_castps_si128(static_cast<__m128>(m_mask)))); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(float const* mem, vector_aligned_tag) { + m_value = value_type( + _mm_maskload_ps(mem, _mm_castps_si128(static_cast<__m128>(m_mask)))); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( float const* mem, simd> const& index) { @@ -1746,6 +1843,12 @@ class const_where_expression< _mm_maskstore_epi32(mem, static_cast<__m128i>(m_mask), static_cast<__m128i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::int32_t* mem, vector_aligned_tag) const { + _mm_maskstore_epi32(mem, static_cast<__m128i>(m_mask), + static_cast<__m128i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int32_t* mem, @@ -1786,6 +1889,16 @@ class where_expression>, m_value = value_type(_mm_maskload_epi32(mem, static_cast<__m128i>(m_mask))); #endif } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::int32_t const* mem, vector_aligned_tag) { +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + __m128i tmp = _mm_load_si128(reinterpret_cast<__m128i const*>(mem)); + m_value = value_type(_mm_and_si128(tmp, static_cast<__m128i>(m_mask))); +#else + m_value = value_type(_mm_maskload_epi32(mem, static_cast<__m128i>(m_mask))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int32_t const* mem, @@ -1833,6 +1946,13 @@ class const_where_expression< static_cast<__m256i>(m_mask), static_cast<__m256i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(std::int64_t* mem, + vector_aligned_tag) const { + _mm256_maskstore_epi64(reinterpret_cast(mem), + static_cast<__m256i>(m_mask), + static_cast<__m256i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int64_t* mem, @@ -1874,6 +1994,17 @@ class where_expression>, reinterpret_cast(mem), static_cast<__m256i>(m_mask))); #endif } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(std::int64_t const* mem, + vector_aligned_tag) { +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + __m256i tmp = _mm256_load_si256(reinterpret_cast<__m256i const*>(mem)); + m_value = value_type(_mm256_and_si256(tmp, static_cast<__m256i>(m_mask))); +#else + m_value = value_type(_mm256_maskload_epi64( + reinterpret_cast(mem), static_cast<__m256i>(m_mask))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int64_t const* mem, @@ -1922,6 +2053,13 @@ class const_where_expression< static_cast<__m256i>(m_mask), static_cast<__m256i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(std::uint64_t* mem, + vector_aligned_tag) const { + _mm256_maskstore_epi64(reinterpret_cast(mem), + static_cast<__m256i>(m_mask), + static_cast<__m256i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::uint64_t* mem, @@ -1963,6 +2101,17 @@ class where_expression>, reinterpret_cast(mem), static_cast<__m256i>(m_mask))); #endif } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(std::uint64_t const* mem, + vector_aligned_tag) { +#ifdef KOKKOS_IMPL_WORKAROUND_ROCM_AVX2_ISSUE + __m256i tmp = _mm256_load_si256(reinterpret_cast<__m256i const*>(mem)); + m_value = value_type(_mm256_and_si256(tmp, static_cast<__m256i>(m_mask))); +#else + m_value = value_type(_mm256_maskload_epi64( + reinterpret_cast(mem), static_cast<__m256i>(m_mask))); +#endif + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::uint64_t const* mem, diff --git a/lib/kokkos/simd/src/Kokkos_SIMD_AVX512.hpp b/lib/kokkos/simd/src/Kokkos_SIMD_AVX512.hpp index c5d1717ad4e..7fa35c204ae 100644 --- a/lib/kokkos/simd/src/Kokkos_SIMD_AVX512.hpp +++ b/lib/kokkos/simd/src/Kokkos_SIMD_AVX512.hpp @@ -193,10 +193,18 @@ class simd> { element_aligned_tag) { m_value = _mm512_loadu_pd(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm512_load_pd(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm512_storeu_pd(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm512_store_pd(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m512d() const { return m_value; @@ -475,10 +483,18 @@ class simd> { element_aligned_tag) { m_value = _mm256_loadu_ps(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm256_load_ps(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm256_storeu_ps(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm256_store_ps(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256() const { return m_value; @@ -735,15 +751,25 @@ class simd> { operator[](std::size_t i) const { return reinterpret_cast(&m_value)[i]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + element_aligned_tag) { + m_value = _mm256_mask_loadu_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm256_mask_load_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm256_mask_storeu_epi32(ptr, static_cast<__mmask8>(mask_type(true)), m_value); } - KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, - element_aligned_tag) { - m_value = _mm256_mask_loadu_epi32( - _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm256_mask_store_epi32(ptr, static_cast<__mmask8>(mask_type(true)), + m_value); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256i() const { @@ -934,21 +960,30 @@ class simd> { operator[](std::size_t i) const { return reinterpret_cast(&m_value)[i]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + element_aligned_tag) { + m_value = _mm256_mask_loadu_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm256_mask_load_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm256_mask_storeu_epi32(ptr, static_cast<__mmask8>(mask_type(true)), m_value); } - KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, - element_aligned_tag) { - m_value = _mm256_mask_loadu_epi32( - _mm256_set1_epi32(0), static_cast<__mmask8>(mask_type(true)), ptr); + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm256_mask_store_epi32(ptr, static_cast<__mmask8>(mask_type(true)), + m_value); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m256i() const { return m_value; } - [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( simd const& lhs, simd const& rhs) noexcept { return simd(_mm256_mullo_epi32(static_cast<__m256i>(lhs), @@ -1130,10 +1165,19 @@ class simd> { element_aligned_tag) { m_value = _mm512_loadu_si512(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm512_load_si512(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm512_storeu_si512(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm512_store_si512(ptr, m_value); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m512i() const { return m_value; @@ -1331,10 +1375,19 @@ class simd> { element_aligned_tag) { m_value = _mm512_loadu_si512(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = _mm512_load_si512(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { _mm512_storeu_si512(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + _mm512_store_si512(ptr, m_value); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator __m512i() const { return m_value; @@ -1505,6 +1558,11 @@ class const_where_expression>, static_cast<__m512d>(m_value)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(double* mem, vector_aligned_tag) const { + _mm512_mask_store_pd(mem, static_cast<__mmask8>(m_mask), + static_cast<__m512d>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( double* mem, simd> const& index) const { @@ -1541,6 +1599,11 @@ class where_expression>, _mm512_set1_pd(0.0), static_cast<__mmask8>(m_mask), mem)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(double const* mem, vector_aligned_tag) { + m_value = value_type(_mm512_mask_load_pd( + _mm512_set1_pd(0.0), static_cast<__mmask8>(m_mask), mem)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( double const* mem, simd> const& index) { @@ -1584,6 +1647,11 @@ class const_where_expression>, static_cast<__m256>(m_value)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(float* mem, vector_aligned_tag) const { + _mm256_mask_store_ps(mem, static_cast<__mmask8>(m_mask), + static_cast<__m256>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( float* mem, simd> const& index) const { @@ -1619,6 +1687,10 @@ class where_expression>, m_value = value_type(_mm256_mask_loadu_ps( _mm256_set1_ps(0.0), static_cast<__mmask8>(m_mask), mem)); } + void copy_from(float const* mem, vector_aligned_tag) { + m_value = value_type(_mm256_mask_load_ps( + _mm256_set1_ps(0.0), static_cast<__mmask8>(m_mask), mem)); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( float const* mem, @@ -1666,6 +1738,12 @@ class const_where_expression< _mm256_mask_storeu_epi32(mem, static_cast<__mmask8>(m_mask), static_cast<__m256i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::int32_t* mem, vector_aligned_tag) const { + _mm256_mask_store_epi32(mem, static_cast<__mmask8>(m_mask), + static_cast<__m256i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int32_t* mem, @@ -1702,6 +1780,11 @@ class where_expression>, m_value = value_type(_mm256_mask_loadu_epi32( _mm256_set1_epi32(0), static_cast<__mmask8>(m_mask), mem)); } + void copy_from(std::int32_t const* mem, vector_aligned_tag) { + m_value = value_type(_mm256_mask_load_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(m_mask), mem)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int32_t const* mem, @@ -1710,6 +1793,7 @@ class where_expression>, static_cast<__m256i>(m_value), static_cast<__mmask8>(m_mask), static_cast<__m256i>(index), mem, 4)); } + template (m_mask), static_cast<__m256i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::uint32_t* mem, vector_aligned_tag) const { + _mm256_mask_store_epi32(mem, static_cast<__mmask8>(m_mask), + static_cast<__m256i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::uint32_t* mem, @@ -1784,6 +1874,12 @@ class where_expression>, m_value = value_type(_mm256_mask_loadu_epi32( _mm256_set1_epi32(0), static_cast<__mmask8>(m_mask), mem)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::uint32_t const* mem, vector_aligned_tag) { + m_value = value_type(_mm256_mask_load_epi32( + _mm256_set1_epi32(0), static_cast<__mmask8>(m_mask), mem)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::uint32_t const* mem, @@ -1792,6 +1888,7 @@ class where_expression>, static_cast<__m256i>(m_value), static_cast<__mmask8>(m_mask), static_cast<__m256i>(index), mem, 4)); } + template (m_mask), static_cast<__m512i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::int64_t* mem, vector_aligned_tag) const { + _mm512_mask_store_epi64(mem, static_cast<__mmask8>(m_mask), + static_cast<__m512i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int64_t* mem, @@ -1866,6 +1969,12 @@ class where_expression>, m_value = value_type(_mm512_mask_loadu_epi64( _mm512_set1_epi64(0.0), static_cast<__mmask8>(m_mask), mem)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::int64_t const* mem, vector_aligned_tag) { + m_value = value_type(_mm512_mask_load_epi64( + _mm512_set1_epi64(0.0), static_cast<__mmask8>(m_mask), mem)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int64_t const* mem, @@ -1874,6 +1983,7 @@ class where_expression>, static_cast<__m512i>(m_value), static_cast<__mmask8>(m_mask), static_cast<__m256i>(index), mem, 8)); } + template (m_mask), static_cast<__m512i>(m_value)); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::uint64_t* mem, vector_aligned_tag) const { + _mm512_mask_store_epi64(mem, static_cast<__mmask8>(m_mask), + static_cast<__m512i>(m_value)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::uint64_t* mem, @@ -1949,6 +2065,11 @@ class where_expression>, _mm512_set1_epi64(0.0), static_cast<__mmask8>(m_mask), mem)); } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::uint64_t const* mem, vector_aligned_tag) { + m_value = value_type(_mm512_mask_load_epi64( + _mm512_set1_epi64(0.0), static_cast<__mmask8>(m_mask), mem)); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::uint64_t const* mem, simd> const& index) { @@ -1956,6 +2077,7 @@ class where_expression>, static_cast<__m512i>(m_value), static_cast<__mmask8>(m_mask), static_cast<__m256i>(index), mem, 8)); } + template class simd_mask; -struct element_aligned_tag {}; +class simd_alignment_vector_aligned {}; + +template +struct simd_flags {}; + +inline constexpr simd_flags<> simd_flag_default{}; +inline constexpr simd_flags simd_flag_aligned{}; + +using element_aligned_tag = simd_flags<>; +using vector_aligned_tag = simd_flags; // class template declarations for const_where_expression and where_expression @@ -117,48 +126,6 @@ template return const_where_expression(mask, value); } -// fallback simd multiplication using generator constructor -// At the time of this writing, this fallback is only used -// to multiply vectors of 64-bit signed integers for the AVX2 backend - -template -[[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION simd operator*( - simd const& lhs, simd const& rhs) { - return simd([&](std::size_t i) { return lhs[i] * rhs[i]; }); -} - -// fallback simd shift using generator constructor -// At the time of this edit, only the fallback for shift vectors of -// 64-bit signed integers for the AVX2 backend is used - -template >> -[[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION simd operator>>( - simd const& lhs, int rhs) { - return simd([&](std::size_t i) { return lhs[i] >> rhs; }); -} - -template >> -[[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION simd operator<<( - simd const& lhs, int rhs) { - return simd([&](std::size_t i) { return lhs[i] << rhs; }); -} - -template >> -[[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION simd operator>>( - simd const& lhs, simd const& rhs) { - return simd([&](std::size_t i) { return lhs[i] >> rhs[i]; }); -} - -template >> -[[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION simd operator<<( - simd const& lhs, simd const& rhs) { - return simd([&](std::size_t i) { return lhs[i] << rhs[i]; }); -} - // The code below provides: // operator@(simd, Arithmetic) // operator@(Arithmetic, simd) diff --git a/lib/kokkos/simd/src/Kokkos_SIMD_NEON.hpp b/lib/kokkos/simd/src/Kokkos_SIMD_NEON.hpp index 43ece203890..efc81135d16 100644 --- a/lib/kokkos/simd/src/Kokkos_SIMD_NEON.hpp +++ b/lib/kokkos/simd/src/Kokkos_SIMD_NEON.hpp @@ -363,10 +363,18 @@ class simd> { element_aligned_tag) { m_value = vld1q_f64(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = vld1q_f64(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { vst1q_f64(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + vst1q_f64(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator float64x2_t() const { return m_value; @@ -607,10 +615,18 @@ class simd> { element_aligned_tag) { m_value = vld1_f32(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = vld1_f32(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { vst1_f32(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + vst1_f32(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator float32x2_t() const { return m_value; @@ -844,10 +860,18 @@ class simd> { element_aligned_tag) { m_value = vld1_s32(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = vld1_s32(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { vst1_s32(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + vst1_s32(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator int32x2_t() const { return m_value; @@ -868,7 +892,11 @@ class simd> { return simd( vadd_s32(static_cast(lhs), static_cast(rhs))); } - + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd( + vmul_s32(static_cast(lhs), static_cast(rhs))); + } [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend mask_type operator==(simd const& lhs, simd const& rhs) noexcept { return mask_type( @@ -1044,10 +1072,18 @@ class simd> { element_aligned_tag) { m_value = vld1q_s64(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = vld1q_s64(ptr); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( value_type* ptr, element_aligned_tag) const { vst1q_s64(ptr, m_value); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + vst1q_s64(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator int64x2_t() const { return m_value; @@ -1068,7 +1104,10 @@ class simd> { return simd( vaddq_s64(static_cast(lhs), static_cast(rhs))); } - + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] * rhs[i]; }); + } [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend mask_type operator==(simd const& lhs, simd const& rhs) noexcept { return mask_type( @@ -1246,6 +1285,18 @@ class simd> { element_aligned_tag) { m_value = vld1q_u64(ptr); } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_from(value_type const* ptr, + vector_aligned_tag) { + m_value = vld1q_u64(ptr); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to( + value_type* ptr, element_aligned_tag) const { + vst1q_u64(ptr, m_value); + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void copy_to(value_type* ptr, + vector_aligned_tag) const { + vst1q_u64(ptr, m_value); + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION constexpr explicit operator uint64x2_t() const { return m_value; @@ -1261,7 +1312,10 @@ class simd> { return simd( vaddq_u64(static_cast(lhs), static_cast(rhs))); } - + [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator*( + simd const& lhs, simd const& rhs) noexcept { + return simd([&](std::size_t i) { return lhs[i] * rhs[i]; }); + } [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION friend simd operator&( simd const& lhs, simd const& rhs) noexcept { return simd( @@ -1386,6 +1440,11 @@ class const_where_expression>, if (m_mask[1]) mem[1] = m_value[1]; } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(double* mem, vector_aligned_tag) const { + if (m_mask[0]) mem[0] = m_value[0]; + if (m_mask[1]) mem[1] = m_value[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( double* mem, simd> const& index) const { @@ -1421,6 +1480,11 @@ class where_expression>, if (m_mask[1]) m_value[1] = mem[1]; } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(double const* mem, vector_aligned_tag) { + if (m_mask[0]) m_value[0] = mem[0]; + if (m_mask[1]) m_value[1] = mem[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( double const* mem, simd> const& index) { @@ -1464,6 +1528,11 @@ class const_where_expression>, if (m_mask[1]) mem[1] = m_value[1]; } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(float* mem, vector_aligned_tag) const { + if (m_mask[0]) mem[0] = m_value[0]; + if (m_mask[1]) mem[1] = m_value[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( float* mem, simd> const& index) const { @@ -1498,6 +1567,10 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[0]; if (m_mask[1]) m_value[1] = mem[1]; } + void copy_from(float const* mem, vector_aligned_tag) { + if (m_mask[0]) m_value[0] = mem[0]; + if (m_mask[1]) m_value[1] = mem[1]; + } KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( float const* mem, @@ -1542,6 +1615,12 @@ class const_where_expression< if (m_mask[0]) mem[0] = m_value[0]; if (m_mask[1]) mem[1] = m_value[1]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::int32_t* mem, vector_aligned_tag) const { + if (m_mask[0]) mem[0] = m_value[0]; + if (m_mask[1]) mem[1] = m_value[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int32_t* mem, @@ -1577,6 +1656,12 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[0]; if (m_mask[1]) m_value[1] = mem[1]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::int32_t const* mem, vector_aligned_tag) { + if (m_mask[0]) m_value[0] = mem[0]; + if (m_mask[1]) m_value[1] = mem[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int32_t const* mem, @@ -1584,6 +1669,7 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[index[0]]; if (m_mask[1]) m_value[1] = mem[index[1]]; } + template < class U, std::enable_if_t< @@ -1622,6 +1708,12 @@ class const_where_expression< if (m_mask[0]) mem[0] = m_value[0]; if (m_mask[1]) mem[1] = m_value[1]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_to(std::int64_t* mem, vector_aligned_tag) const { + if (m_mask[0]) mem[0] = m_value[0]; + if (m_mask[1]) mem[1] = m_value[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void scatter_to( std::int64_t* mem, @@ -1657,6 +1749,12 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[0]; if (m_mask[1]) m_value[1] = mem[1]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::int64_t const* mem, vector_aligned_tag) { + if (m_mask[0]) m_value[0] = mem[0]; + if (m_mask[1]) m_value[1] = mem[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::int64_t const* mem, @@ -1664,6 +1762,7 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[index[0]]; if (m_mask[1]) m_value[1] = mem[index[1]]; } + template < class U, std::enable_if_t>, if (m_mask[0]) m_value[0] = mem[0]; if (m_mask[1]) m_value[1] = mem[1]; } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION + void copy_from(std::uint64_t const* mem, vector_aligned_tag) { + if (m_mask[0]) m_value[0] = mem[0]; + if (m_mask[1]) m_value[1] = mem[1]; + } + KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION void gather_from( std::uint64_t const* mem, @@ -1744,6 +1855,7 @@ class where_expression>, if (m_mask[0]) m_value[0] = mem[index[0]]; if (m_mask[1]) m_value[1] = mem[index[1]]; } + template { element_aligned_tag) { m_value = *ptr; } + KOKKOS_FORCEINLINE_FUNCTION void copy_from(T const* ptr, vector_aligned_tag) { + m_value = *ptr; + } KOKKOS_FORCEINLINE_FUNCTION void copy_to(T* ptr, element_aligned_tag) const { *ptr = m_value; } + KOKKOS_FORCEINLINE_FUNCTION void copy_to(T* ptr, vector_aligned_tag) const { + *ptr = m_value; + } + KOKKOS_FORCEINLINE_FUNCTION reference operator[](std::size_t) { return m_value; } @@ -224,7 +231,7 @@ template using data_type = std::conditional_t, T, double>; return Experimental::simd( Kokkos::floor(static_cast(a[0]))); -}; +} template [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION auto ceil( @@ -232,7 +239,7 @@ template using data_type = std::conditional_t, T, double>; return Experimental::simd( Kokkos::ceil(static_cast(a[0]))); -}; +} template [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION auto round( @@ -240,7 +247,7 @@ template using data_type = std::conditional_t, T, double>; return Experimental::simd( Experimental::round_half_to_nearest_even(static_cast(a[0]))); -}; +} template [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION auto trunc( @@ -248,7 +255,7 @@ template using data_type = std::conditional_t, T, double>; return Experimental::simd( Kokkos::trunc(static_cast(a[0]))); -}; +} template [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION @@ -308,6 +315,10 @@ class const_where_expression, void copy_to(T* mem, element_aligned_tag) const { if (static_cast(m_mask)) *mem = static_cast(m_value); } + KOKKOS_FORCEINLINE_FUNCTION + void copy_to(T* mem, vector_aligned_tag) const { + if (static_cast(m_mask)) *mem = static_cast(m_value); + } template KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t> scatter_to(T* mem, simd const& index) const { @@ -315,13 +326,13 @@ class const_where_expression, mem[static_cast(index)] = static_cast(m_value); } - [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION value_type const& - impl_get_value() const { + [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION value_type const& impl_get_value() + const { return m_value; } - [[nodiscard]] KOKKOS_IMPL_HOST_FORCEINLINE_FUNCTION mask_type const& - impl_get_mask() const { + [[nodiscard]] KOKKOS_FORCEINLINE_FUNCTION mask_type const& impl_get_mask() + const { return m_mask; } }; @@ -344,6 +355,10 @@ class where_expression, void copy_from(T const* mem, element_aligned_tag) { if (static_cast(this->m_mask)) this->m_value = *mem; } + KOKKOS_FORCEINLINE_FUNCTION + void copy_from(T const* mem, vector_aligned_tag) { + if (static_cast(this->m_mask)) this->m_value = *mem; + } template KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t> gather_from(T const* mem, simd const& index) { diff --git a/lib/kokkos/simd/unit_tests/TestSIMD.cpp b/lib/kokkos/simd/unit_tests/TestSIMD.cpp index 61c076e8246..7a1f9be2a0f 100644 --- a/lib/kokkos/simd/unit_tests/TestSIMD.cpp +++ b/lib/kokkos/simd/unit_tests/TestSIMD.cpp @@ -21,3 +21,4 @@ #include #include #include +#include diff --git a/lib/kokkos/simd/unit_tests/include/SIMDTesting_Ops.hpp b/lib/kokkos/simd/unit_tests/include/SIMDTesting_Ops.hpp index 6529f20e66a..c587ccf3046 100644 --- a/lib/kokkos/simd/unit_tests/include/SIMDTesting_Ops.hpp +++ b/lib/kokkos/simd/unit_tests/include/SIMDTesting_Ops.hpp @@ -209,4 +209,165 @@ class shift_left { } }; +class cbrt_op { + public: + template + auto on_host(T const& a) const { +#if defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) + return Kokkos::Experimental::cbrt(a); +#else + return Kokkos::cbrt(a); +#endif + } + template + auto on_host_serial(T const& a) const { + return Kokkos::cbrt(a); + } +}; + +class exp_op { + public: + template + auto on_host(T const& a) const { +#if defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) + return Kokkos::Experimental::exp(a); +#else + return Kokkos::exp(a); +#endif + } + template + auto on_host_serial(T const& a) const { + return Kokkos::exp(a); + } +}; + +class log_op { + public: + template + auto on_host(T const& a) const { +#if defined(KOKKOS_ENABLE_DEPRECATED_CODE_4) + return Kokkos::Experimental::log(a); +#else + return Kokkos::log(a); +#endif + } + template + auto on_host_serial(T const& a) const { + return Kokkos::log(a); + } +}; + +class hmin { + public: + template + auto on_host(T const& a) const { + return Kokkos::Experimental::hmin(a); + } + template + auto on_host_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::min(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result = Kokkos::min(result, v[i]); + } + return result; + } + + template + KOKKOS_INLINE_FUNCTION auto on_device(T const& a) const { + return Kokkos::Experimental::hmin(a); + } + template + KOKKOS_INLINE_FUNCTION auto on_device_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::min(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result = Kokkos::min(result, v[i]); + } + return result; + } +}; + +class hmax { + public: + template + auto on_host(T const& a) const { + return Kokkos::Experimental::hmax(a); + } + template + auto on_host_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::max(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result = Kokkos::max(result, v[i]); + } + return result; + } + + template + KOKKOS_INLINE_FUNCTION auto on_device(T const& a) const { + return Kokkos::Experimental::hmax(a); + } + template + KOKKOS_INLINE_FUNCTION auto on_device_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::max(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result = Kokkos::max(result, v[i]); + } + return result; + } +}; + +class reduce { + public: + template + auto on_host(T const& a) const { + using DataType = typename T::value_type::value_type; + return Kokkos::Experimental::reduce(a, DataType(0), std::plus<>()); + } + template + auto on_host_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::sum(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result += v[i]; + } + return result; + } + + template + KOKKOS_INLINE_FUNCTION auto on_device(T const& a) const { + using DataType = typename T::value_type::value_type; + return Kokkos::Experimental::reduce(a, DataType(0), std::plus<>()); + } + template + KOKKOS_INLINE_FUNCTION auto on_device_serial(T const& a) const { + using DataType = typename T::value_type::value_type; + + auto const& v = a.impl_get_value(); + auto const& m = a.impl_get_mask(); + auto result = Kokkos::reduction_identity::sum(); + for (std::size_t i = 0; i < v.size(); ++i) { + if (m[i]) result += v[i]; + } + return result; + } +}; + #endif diff --git a/lib/kokkos/simd/unit_tests/include/SIMDTesting_Utilities.hpp b/lib/kokkos/simd/unit_tests/include/SIMDTesting_Utilities.hpp index ae2ab2c697c..d36e1e5afc5 100644 --- a/lib/kokkos/simd/unit_tests/include/SIMDTesting_Utilities.hpp +++ b/lib/kokkos/simd/unit_tests/include/SIMDTesting_Utilities.hpp @@ -93,7 +93,7 @@ class load_element_aligned { bool host_load(T const* mem, std::size_t n, Kokkos::Experimental::simd& result) const { if (n < result.size()) return false; - result.copy_from(mem, Kokkos::Experimental::element_aligned_tag()); + result.copy_from(mem, Kokkos::Experimental::simd_flag_default); return true; } template @@ -101,7 +101,26 @@ class load_element_aligned { T const* mem, std::size_t n, Kokkos::Experimental::simd& result) const { if (n < result.size()) return false; - result.copy_from(mem, Kokkos::Experimental::element_aligned_tag()); + result.copy_from(mem, Kokkos::Experimental::simd_flag_default); + return true; + } +}; + +class load_vector_aligned { + public: + template + bool host_load(T const* mem, std::size_t n, + Kokkos::Experimental::simd& result) const { + if (n < result.size()) return false; + result.copy_from(mem, Kokkos::Experimental::simd_flag_aligned); + return true; + } + template + KOKKOS_INLINE_FUNCTION bool device_load( + T const* mem, std::size_t n, + Kokkos::Experimental::simd& result) const { + if (n < result.size()) return false; + result.copy_from(mem, Kokkos::Experimental::simd_flag_aligned); return true; } }; @@ -116,8 +135,7 @@ class load_masked { for (std::size_t i = 0; i < n; ++i) { mask[i] = true; } - where(mask, result) - .copy_from(mem, Kokkos::Experimental::element_aligned_tag()); + where(mask, result).copy_from(mem, Kokkos::Experimental::simd_flag_default); where(!mask, result) = 0; return true; } @@ -130,8 +148,7 @@ class load_masked { for (std::size_t i = 0; i < n; ++i) { mask[i] = true; } - where(mask, result) - .copy_from(mem, Kokkos::Experimental::element_aligned_tag()); + where(mask, result).copy_from(mem, Kokkos::Experimental::simd_flag_default); where(!mask, result) = T(0); return true; } diff --git a/lib/kokkos/simd/unit_tests/include/TestSIMD_GeneratorCtors.hpp b/lib/kokkos/simd/unit_tests/include/TestSIMD_GeneratorCtors.hpp index 4feff3a89d2..23e3826c752 100644 --- a/lib/kokkos/simd/unit_tests/include/TestSIMD_GeneratorCtors.hpp +++ b/lib/kokkos/simd/unit_tests/include/TestSIMD_GeneratorCtors.hpp @@ -37,11 +37,12 @@ inline void host_check_gen_ctor() { } simd_type rhs; - rhs.copy_from(init, Kokkos::Experimental::element_aligned_tag()); + rhs.copy_from(init, Kokkos::Experimental::simd_flag_default); simd_type blend; - blend.copy_from(expected, Kokkos::Experimental::element_aligned_tag()); + blend.copy_from(expected, Kokkos::Experimental::simd_flag_default); +#if !(defined(KOKKOS_ENABLE_CUDA) && defined(KOKKOS_COMPILER_MSVC)) if constexpr (std::is_same_v) { simd_type basic(KOKKOS_LAMBDA(std::size_t i) { return init[i]; }); host_check_equality(basic, rhs, lanes); @@ -63,6 +64,7 @@ inline void host_check_gen_ctor() { host_check_equality(blend, result, lanes); } +#endif } template @@ -96,7 +98,7 @@ KOKKOS_INLINE_FUNCTION void device_check_gen_ctor() { simd_type basic(KOKKOS_LAMBDA(std::size_t i) { return init[i]; }); simd_type rhs; - rhs.copy_from(init, Kokkos::Experimental::element_aligned_tag()); + rhs.copy_from(init, Kokkos::Experimental::simd_flag_default); device_check_equality(basic, rhs, lanes); simd_type lhs(KOKKOS_LAMBDA(std::size_t i) { return init[i] * 9; }); @@ -104,7 +106,7 @@ KOKKOS_INLINE_FUNCTION void device_check_gen_ctor() { KOKKOS_LAMBDA(std::size_t i) { return (mask[i]) ? lhs[i] : rhs[i]; }); simd_type blend; - blend.copy_from(expected, Kokkos::Experimental::element_aligned_tag()); + blend.copy_from(expected, Kokkos::Experimental::simd_flag_default); device_check_equality(result, blend, lanes); } diff --git a/lib/kokkos/simd/unit_tests/include/TestSIMD_MathOps.hpp b/lib/kokkos/simd/unit_tests/include/TestSIMD_MathOps.hpp index 802e41efe5f..59f2f6c18fd 100644 --- a/lib/kokkos/simd/unit_tests/include/TestSIMD_MathOps.hpp +++ b/lib/kokkos/simd/unit_tests/include/TestSIMD_MathOps.hpp @@ -61,13 +61,18 @@ void host_check_math_op_one_loader(UnaryOp unary_op, std::size_t n, simd_type arg; bool const loaded_arg = loader.host_load(args + i, nlanes, arg); if (!loaded_arg) continue; - auto computed_result = unary_op.on_host(arg); - decltype(computed_result) expected_result; + decltype(unary_op.on_host(arg)) expected_result; for (std::size_t lane = 0; lane < simd_type::size(); ++lane) { - if (lane < nlanes) + if (lane < nlanes) { + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v) + arg[lane] = Kokkos::abs(arg[lane]); expected_result[lane] = unary_op.on_host_serial(T(arg[lane])); + } } + auto computed_result = unary_op.on_host(arg); host_check_equality(expected_result, computed_result, nlanes); } } @@ -78,6 +83,7 @@ inline void host_check_math_op_all_loaders(Op op, std::size_t n, host_check_math_op_one_loader(op, n, args...); host_check_math_op_one_loader(op, n, args...); host_check_math_op_one_loader(op, n, args...); + host_check_math_op_one_loader(op, n, args...); } template @@ -96,6 +102,13 @@ inline void host_check_all_math_ops(const DataType (&first_args)[n], // TODO: Place fallback implementations for all simd integer types if constexpr (std::is_floating_point_v) { host_check_math_op_all_loaders(divides(), n, first_args, second_args); + +#if defined(__INTEL_COMPILER) && \ + (defined(KOKKOS_ARCH_AVX2) || defined(KOKKOS_ARCH_AVX512XEON)) + host_check_math_op_all_loaders(cbrt_op(), n, first_args); + host_check_math_op_all_loaders(exp_op(), n, first_args); + host_check_math_op_all_loaders(log_op(), n, first_args); +#endif } } @@ -109,23 +122,29 @@ inline void host_check_abi_size() { template inline void host_check_math_ops() { constexpr size_t n = 11; + constexpr size_t alignment = + Kokkos::Experimental::simd::size() * sizeof(DataType); host_check_abi_size(); if constexpr (!std::is_integral_v) { - DataType const first_args[n] = {0.1, 0.4, 0.5, 0.7, 1.0, 1.5, - -2.0, 10.0, 0.0, 1.2, -2.8}; - DataType const second_args[n] = {1.0, 0.2, 1.1, 1.8, -0.1, -3.0, - -2.4, 1.0, 13.0, -3.2, -2.1}; + alignas(alignment) DataType const first_args[n] = { + 0.1, 0.4, 0.5, 0.7, 1.0, 1.5, -2.0, 10.0, 0.0, 1.2, -2.8}; + alignas(alignment) DataType const second_args[n] = { + 1.0, 0.2, 1.1, 1.8, -0.1, -3.0, -2.4, 1.0, 13.0, -3.2, -2.1}; host_check_all_math_ops(first_args, second_args); } else { if constexpr (std::is_signed_v) { - DataType const first_args[n] = {1, 2, -1, 10, 0, 1, -2, 10, 0, 1, -2}; - DataType const second_args[n] = {1, 2, 1, 1, 1, -3, -2, 1, 13, -3, -2}; + alignas(alignment) + DataType const first_args[n] = {1, 2, -1, 10, 0, 1, -2, 10, 0, 1, -2}; + alignas(alignment) DataType const second_args[n] = {1, 2, 1, 1, 1, -3, + -2, 1, 13, -3, -2}; host_check_all_math_ops(first_args, second_args); } else { - DataType const first_args[n] = {1, 2, 1, 10, 0, 1, 2, 10, 0, 1, 2}; - DataType const second_args[n] = {1, 2, 1, 1, 1, 3, 2, 1, 13, 3, 2}; + alignas(alignment) + DataType const first_args[n] = {1, 2, 1, 10, 0, 1, 2, 10, 0, 1, 2}; + alignas(alignment) + DataType const second_args[n] = {1, 2, 1, 1, 1, 3, 2, 1, 13, 3, 2}; host_check_all_math_ops(first_args, second_args); } } @@ -202,6 +221,7 @@ KOKKOS_INLINE_FUNCTION void device_check_math_op_all_loaders(Op op, device_check_math_op_one_loader(op, n, args...); device_check_math_op_one_loader(op, n, args...); device_check_math_op_one_loader(op, n, args...); + device_check_math_op_one_loader(op, n, args...); } template @@ -282,8 +302,13 @@ TEST(simd, host_math_ops) { } TEST(simd, device_math_ops) { - Kokkos::parallel_for(Kokkos::RangePolicy>(0, 1), - simd_device_math_ops_functor()); +#ifdef KOKKOS_ENABLE_OPENMPTARGET // FIXME_OPENMPTARGET + GTEST_SKIP() + << "skipping because of a non-deterministic failure reporting: " + "Failure to synchronize stream (nil): Error in " + "cuStreamSynchronize: an illegal memory access was encountered"; +#endif + Kokkos::parallel_for(1, simd_device_math_ops_functor()); } #endif diff --git a/lib/kokkos/simd/unit_tests/include/TestSIMD_Reductions.hpp b/lib/kokkos/simd/unit_tests/include/TestSIMD_Reductions.hpp new file mode 100644 index 00000000000..b3c7ac9a01e --- /dev/null +++ b/lib/kokkos/simd/unit_tests/include/TestSIMD_Reductions.hpp @@ -0,0 +1,184 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOS_TEST_SIMD_REDUCTIONS_HPP +#define KOKKOS_TEST_SIMD_REDUCTIONS_HPP + +#include +#include + +template +inline void host_check_reduction_one_loader(ReductionOp reduce_op, + std::size_t n, T const* args) { + Loader loader; + using simd_type = Kokkos::Experimental::simd; + using mask_type = typename Kokkos::Experimental::simd::mask_type; + constexpr std::size_t width = simd_type::size(); + + for (std::size_t i = 0; i < n; i += width) { + std::size_t const nremaining = n - i; + std::size_t const nlanes = Kokkos::min(nremaining, width); + simd_type arg; + bool const loaded_arg = loader.host_load(args + i, nlanes, arg); + if (!loaded_arg) continue; + + mask_type mask(false); + for (std::size_t j = 0; j < n; ++j) { + mask[j] = true; + } + auto value = where(mask, arg); + auto expected = reduce_op.on_host_serial(value); + auto computed = reduce_op.on_host(value); + + gtest_checker().equality(expected, computed); + } +} + +template +inline void host_check_reduction_all_loaders(ReductionOp reduce_op, + std::size_t n, T const* args) { + host_check_reduction_one_loader(reduce_op, n, + args); + host_check_reduction_one_loader(reduce_op, n, args); + host_check_reduction_one_loader(reduce_op, n, args); +} + +template +inline void host_check_all_reductions(const DataType (&args)[n]) { + host_check_reduction_all_loaders(hmin(), n, args); + host_check_reduction_all_loaders(hmax(), n, args); + host_check_reduction_all_loaders(reduce(), n, args); +} + +template +inline void host_check_reductions() { + constexpr size_t n = 11; + + if constexpr (std::is_signed_v) { + DataType const args[n] = {1, 2, -1, 10, 0, 1, -2, 10, 0, 1, -2}; + host_check_all_reductions(args); + } else { + DataType const args[n] = {1, 2, 1, 10, 0, 1, 2, 10, 0, 1, 2}; + host_check_all_reductions(args); + } +} + +template +inline void host_check_reductions_all_types( + Kokkos::Experimental::Impl::data_types) { + (host_check_reductions(), ...); +} + +template +inline void host_check_reductions_all_abis( + Kokkos::Experimental::Impl::abi_set) { + using DataTypes = Kokkos::Experimental::Impl::data_type_set; + (host_check_reductions_all_types(DataTypes()), ...); +} + +template +KOKKOS_INLINE_FUNCTION void device_check_reduction_one_loader( + ReductionOp reduce_op, std::size_t n, T const* args) { + Loader loader; + using simd_type = Kokkos::Experimental::simd; + using mask_type = typename Kokkos::Experimental::simd::mask_type; + constexpr std::size_t width = simd_type::size(); + + for (std::size_t i = 0; i < n; i += width) { + std::size_t const nremaining = n - i; + std::size_t const nlanes = Kokkos::min(nremaining, width); + simd_type arg; + bool const loaded_arg = loader.device_load(args + i, nlanes, arg); + if (!loaded_arg) continue; + + mask_type mask(false); + for (std::size_t j = 0; j < n; ++j) { + mask[j] = true; + } + auto value = where(mask, arg); + auto expected = reduce_op.on_device_serial(value); + auto computed = reduce_op.on_device(value); + + kokkos_checker().equality(expected, computed); + } +} + +template +KOKKOS_INLINE_FUNCTION void device_check_reduction_all_loaders( + ReductionOp reduce_op, std::size_t n, T const* args) { + device_check_reduction_one_loader(reduce_op, n, + args); + device_check_reduction_one_loader(reduce_op, n, args); + device_check_reduction_one_loader(reduce_op, n, args); +} + +template +KOKKOS_INLINE_FUNCTION void device_check_all_reductions( + const DataType (&args)[n]) { + device_check_reduction_all_loaders(hmin(), n, args); + device_check_reduction_all_loaders(hmax(), n, args); + device_check_reduction_all_loaders(reduce(), n, args); +} + +template +KOKKOS_INLINE_FUNCTION void device_check_reductions() { + constexpr size_t n = 11; + + if constexpr (std::is_signed_v) { + DataType const args[n] = {1, 2, -1, 10, 0, 1, -2, 10, 0, 1, -2}; + device_check_all_reductions(args); + } else { + DataType const args[n] = {1, 2, 1, 10, 0, 1, 2, 10, 0, 1, 2}; + device_check_all_reductions(args); + } +} + +template +KOKKOS_INLINE_FUNCTION void device_check_reductions_all_types( + Kokkos::Experimental::Impl::data_types) { + (device_check_reductions(), ...); +} + +template +KOKKOS_INLINE_FUNCTION void device_check_reductions_all_abis( + Kokkos::Experimental::Impl::abi_set) { + using DataTypes = Kokkos::Experimental::Impl::data_type_set; + (device_check_reductions_all_types(DataTypes()), ...); +} + +class simd_device_reduction_functor { + public: + KOKKOS_INLINE_FUNCTION void operator()(int) const { + device_check_reductions_all_abis( + Kokkos::Experimental::Impl::device_abi_set()); + } +}; + +TEST(simd, host_reductions) { + host_check_reductions_all_abis(Kokkos::Experimental::Impl::host_abi_set()); +} + +TEST(simd, device_reductions) { +#ifdef KOKKOS_ENABLE_OPENMPTARGET // FIXME_OPENMPTARGET + GTEST_SKIP() + << "skipping because of a non-deterministic failure reporting: " + "Failure to synchronize stream (nil): Error in " + "cuStreamSynchronize: an illegal memory access was encountered"; +#endif + Kokkos::parallel_for(1, simd_device_reduction_functor()); +} + +#endif diff --git a/lib/kokkos/simd/unit_tests/include/TestSIMD_ShiftOps.hpp b/lib/kokkos/simd/unit_tests/include/TestSIMD_ShiftOps.hpp index f6fdcb920ed..ffdd2cba4a0 100644 --- a/lib/kokkos/simd/unit_tests/include/TestSIMD_ShiftOps.hpp +++ b/lib/kokkos/simd/unit_tests/include/TestSIMD_ShiftOps.hpp @@ -85,10 +85,11 @@ inline void host_check_shift_op_all_loaders(ShiftOp shift_op, shift_by, n); host_check_shift_on_one_loader(shift_op, test_vals, shift_by, n); + host_check_shift_on_one_loader(shift_op, test_vals, + shift_by, n); Kokkos::Experimental::simd shift_by_lanes; - shift_by_lanes.copy_from(shift_by, - Kokkos::Experimental::element_aligned_tag()); + shift_by_lanes.copy_from(shift_by, Kokkos::Experimental::simd_flag_default); host_check_shift_by_lanes_on_one_loader( shift_op, test_vals, shift_by_lanes); @@ -96,6 +97,8 @@ inline void host_check_shift_op_all_loaders(ShiftOp shift_op, shift_by_lanes); host_check_shift_by_lanes_on_one_loader( shift_op, test_vals, shift_by_lanes); + host_check_shift_by_lanes_on_one_loader( + shift_op, test_vals, shift_by_lanes); } template @@ -104,12 +107,14 @@ inline void host_check_shift_ops() { using simd_type = Kokkos::Experimental::simd; constexpr std::size_t width = simd_type::size(); constexpr std::size_t num_cases = 8; + constexpr size_t alignment = + Kokkos::Experimental::simd::size() * sizeof(DataType); DataType max = std::numeric_limits::max(); - DataType shift_by[num_cases] = { + alignas(alignment) DataType shift_by[num_cases] = { 0, 1, 3, width / 2, width / 2 + 1, width - 1, width, width + 1}; - DataType test_vals[width]; + alignas(alignment) DataType test_vals[width]; for (std::size_t i = 0; i < width; ++i) { DataType inc = max / width; test_vals[i] = i * inc + 1; @@ -201,10 +206,11 @@ KOKKOS_INLINE_FUNCTION void device_check_shift_op_all_loaders( shift_by, n); device_check_shift_on_one_loader(shift_op, test_vals, shift_by, n); + device_check_shift_on_one_loader( + shift_op, test_vals, shift_by, n); Kokkos::Experimental::simd shift_by_lanes; - shift_by_lanes.copy_from(shift_by, - Kokkos::Experimental::element_aligned_tag()); + shift_by_lanes.copy_from(shift_by, Kokkos::Experimental::simd_flag_default); device_check_shift_by_lanes_on_one_loader( shift_op, test_vals, shift_by_lanes); @@ -212,6 +218,8 @@ KOKKOS_INLINE_FUNCTION void device_check_shift_op_all_loaders( shift_op, test_vals, shift_by_lanes); device_check_shift_by_lanes_on_one_loader( shift_op, test_vals, shift_by_lanes); + device_check_shift_by_lanes_on_one_loader( + shift_op, test_vals, shift_by_lanes); } template diff --git a/lib/kokkos/simd/unit_tests/include/TestSIMD_WhereExpressions.hpp b/lib/kokkos/simd/unit_tests/include/TestSIMD_WhereExpressions.hpp index 129f2b0d5c9..152fd9e9840 100644 --- a/lib/kokkos/simd/unit_tests/include/TestSIMD_WhereExpressions.hpp +++ b/lib/kokkos/simd/unit_tests/include/TestSIMD_WhereExpressions.hpp @@ -29,7 +29,7 @@ inline void host_check_where_expr_scatter_to() { std::size_t nlanes = simd_type::size(); DataType init[] = {11, 13, 17, 19, 23, 29, 31, 37}; simd_type src; - src.copy_from(init, Kokkos::Experimental::element_aligned_tag()); + src.copy_from(init, Kokkos::Experimental::simd_flag_default); for (std::size_t idx = 0; idx < nlanes; ++idx) { mask_type mask(true); @@ -46,7 +46,7 @@ inline void host_check_where_expr_scatter_to() { where(mask, src).scatter_to(dst, index); simd_type dst_simd; - dst_simd.copy_from(dst, Kokkos::Experimental::element_aligned_tag()); + dst_simd.copy_from(dst, Kokkos::Experimental::simd_flag_default); host_check_equality(expected_result, dst_simd, nlanes); } @@ -107,7 +107,7 @@ KOKKOS_INLINE_FUNCTION void device_check_where_expr_scatter_to() { std::size_t nlanes = simd_type::size(); DataType init[] = {11, 13, 17, 19, 23, 29, 31, 37}; simd_type src; - src.copy_from(init, Kokkos::Experimental::element_aligned_tag()); + src.copy_from(init, Kokkos::Experimental::simd_flag_default); for (std::size_t idx = 0; idx < nlanes; ++idx) { mask_type mask(true); @@ -124,7 +124,7 @@ KOKKOS_INLINE_FUNCTION void device_check_where_expr_scatter_to() { where(mask, src).scatter_to(dst, index); simd_type dst_simd; - dst_simd.copy_from(dst, Kokkos::Experimental::element_aligned_tag()); + dst_simd.copy_from(dst, Kokkos::Experimental::simd_flag_default); device_check_equality(expected_result, dst_simd, nlanes); } diff --git a/lib/kokkos/tpls/desul/Config.hpp.cmake.in b/lib/kokkos/tpls/desul/Config.hpp.cmake.in index a7bc738191e..aed7ecfabc9 100644 --- a/lib/kokkos/tpls/desul/Config.hpp.cmake.in +++ b/lib/kokkos/tpls/desul/Config.hpp.cmake.in @@ -14,6 +14,8 @@ SPDX-License-Identifier: (BSD-3-Clause) #cmakedefine DESUL_ATOMICS_ENABLE_HIP #cmakedefine DESUL_ATOMICS_ENABLE_HIP_SEPARABLE_COMPILATION #cmakedefine DESUL_ATOMICS_ENABLE_SYCL +#cmakedefine DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION #cmakedefine DESUL_ATOMICS_ENABLE_OPENMP +#cmakedefine DESUL_ATOMICS_ENABLE_OPENACC #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Adapt_SYCL.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Adapt_SYCL.hpp index 082fc132de5..15c6d78d94b 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Adapt_SYCL.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Adapt_SYCL.hpp @@ -88,15 +88,18 @@ using sycl_atomic_ref = sycl::atomic_ref; #endif -// FIXME_SYCL Use SYCL_EXT_ONEAPI_DEVICE_GLOBAL when available instead #ifdef DESUL_SYCL_DEVICE_GLOBAL_SUPPORTED -// FIXME_SYCL The compiler forces us to use device_image_scope. Drop this when possible. +#ifdef SYCL_EXT_ONEAPI_DEVICE_GLOBAL +template +using sycl_device_global = sycl::ext::oneapi::experimental::device_global; +#else template using sycl_device_global = sycl::ext::oneapi::experimental::device_global< T, decltype(sycl::ext::oneapi::experimental::properties( sycl::ext::oneapi::experimental::device_image_scope))>; #endif +#endif } // namespace Impl } // namespace desul diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange.hpp index e91569e1dee..72639fc4932 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange.hpp @@ -26,6 +26,9 @@ SPDX-License-Identifier: (BSD-3-Clause) #ifdef DESUL_HAVE_OPENMP_ATOMICS #include #endif +#ifdef DESUL_HAVE_OPENACC_ATOMICS +#include +#endif #ifdef DESUL_HAVE_SYCL_ATOMICS #include #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange_OpenACC.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange_OpenACC.hpp new file mode 100644 index 00000000000..77149bd4741 --- /dev/null +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Compare_Exchange_OpenACC.hpp @@ -0,0 +1,153 @@ +/* +Copyright (c) 2019, Lawrence Livermore National Security, LLC +and DESUL project contributors. See the COPYRIGHT file for details. +Source: https://github.com/desul/desul + +SPDX-License-Identifier: (BSD-3-Clause) +*/ + +#ifndef DESUL_ATOMICS_COMPARE_EXCHANGE_OPENACC_HPP_ +#define DESUL_ATOMICS_COMPARE_EXCHANGE_OPENACC_HPP_ + +#include + +#include +#include +#include + +namespace desul { +namespace Impl { + +#ifdef __NVCOMPILER + +#pragma acc routine seq +template +T device_atomic_exchange(T* dest, T value, MemoryOrder, MemoryScope /*scope*/) { + if constexpr (std::is_arithmetic_v && ((sizeof(T) == 4) || (sizeof(T) == 8))) { + T return_val; +#pragma acc atomic capture + { + return_val = *dest; + *dest = value; + } + return return_val; + } else { + // FIXME_OPENACC + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_exchange(): Not supported atomic operation in " + "the OpenACC backend\n"); + } + // Acquire a lock for the address + // while (!lock_address_openacc((void*)dest, scope)) { + // } + // device_atomic_thread_fence(MemoryOrderAcquire(), scope); + T return_val = *dest; + *dest = value; + // device_atomic_thread_fence(MemoryOrderRelease(), scope); + // unlock_address_openacc((void*)dest, scope); + return return_val; + } +} + +#pragma acc routine seq +template +T device_atomic_compare_exchange( + T* dest, T compare, T value, MemoryOrder, MemoryScope scope) { + // Floating point types treated separetely to work around compiler errors + // "parse invalid cast opcode for cast from 'i32' to 'float'". + // Also not just "forwarding" arguments to atomicCAS because it does not have an + // overload that takes int64_t + if constexpr (std::is_integral_v && ((sizeof(T) == 4) || (sizeof(T) == 8))) { + static_assert(sizeof(unsigned int) == 4); + static_assert(sizeof(unsigned long long int) == 8); + using cas_t = + std::conditional_t<(sizeof(T) == 4), unsigned int, unsigned long long int>; + cas_t return_val = atomicCAS(reinterpret_cast(dest), + reinterpret_cast(compare), + reinterpret_cast(value)); + return reinterpret_cast(return_val); +#ifdef DESUL_CUDA_ARCH_IS_PRE_PASCAL + } else if constexpr (std::is_same_v) { +#else + } else if constexpr (std::is_same_v || std::is_same_v) { +#endif + return atomicCAS(dest, compare, value); + } else { + // FIXME_OPENACC + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_compare_exchange(): Not supported atomic " + "operation in the OpenACC backend\n"); + } + T current_val = *dest; + // Acquire a lock for the address + // while (!lock_address_openacc((void*)dest, scope)) { + //} + // device_atomic_thread_fence(MemoryOrderAcquire(), scope); + if (current_val == compare) { + *dest = value; + // device_atomic_thread_fence(MemoryOrderRelease(), scope); + } + // unlock_address_openacc((void*)dest, scope); + return current_val; + } +} + +#else // not NVHPC + +#pragma acc routine seq +template +T device_atomic_exchange(T* dest, T value, MemoryOrder, MemoryScope) { + if constexpr (std::is_arithmetic_v) { + T return_val; +#pragma acc atomic capture + { + return_val = *dest; + *dest = value; + } + return return_val; + } else { + // FIXME_OPENACC + printf( + "DESUL error in device_atomic_exchange(): Not supported atomic operation in " + "the OpenACC backend\n"); + // Acquire a lock for the address + // while (!lock_address_openacc((void*)dest, scope)) { + // } + // device_atomic_thread_fence(MemoryOrderAcquire(), scope); + T return_val = *dest; + *dest = value; + // device_atomic_thread_fence(MemoryOrderRelease(), scope); + // unlock_address_openacc((void*)dest, scope); + return return_val; + } +} + +#pragma acc routine seq +template +T device_atomic_compare_exchange( + T* dest, T compare, T value, MemoryOrder, MemoryScope scope) { + // FIXME_OPENACC + printf( + "DESUL error in device_atomic_compare_exchange(): Not supported atomic operation " + "in the OpenACC backend\n"); + T current_val = *dest; + // Acquire a lock for the address + // while (!lock_address_openacc((void*)dest, scope)) { + //} + // device_atomic_thread_fence(MemoryOrderAcquire(), scope); + if (current_val == compare) { + *dest = value; + // device_atomic_thread_fence(MemoryOrderRelease(), scope); + } + // unlock_address_openacc((void*)dest, scope); + return current_val; +} + +#endif + +} // namespace Impl +} // namespace desul + +#endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op.hpp index adf75c57437..1b161397c74 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op.hpp @@ -23,6 +23,9 @@ SPDX-License-Identifier: (BSD-3-Clause) #ifdef DESUL_HAVE_OPENMP_ATOMICS #include #endif +#ifdef DESUL_HAVE_OPENACC_ATOMICS +#include +#endif #ifdef DESUL_HAVE_SYCL_ATOMICS #include #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op_OpenACC.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op_OpenACC.hpp new file mode 100644 index 00000000000..ab570ac5787 --- /dev/null +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Fetch_Op_OpenACC.hpp @@ -0,0 +1,431 @@ +/* +Copyright (c) 2019, Lawrence Livermore National Security, LLC +and DESUL project contributors. See the COPYRIGHT file for details. +Source: https://github.com/desul/desul + +SPDX-License-Identifier: (BSD-3-Clause) +*/ +#ifndef DESUL_ATOMICS_FETCH_OP_OPENACC_HPP_ +#define DESUL_ATOMICS_FETCH_OP_OPENACC_HPP_ + +#include // min, max +#include +#include + +namespace desul { +namespace Impl { + +#ifdef __NVCOMPILER + +template +inline constexpr bool is_openacc_integral_type_v = + std::is_same_v || std::is_same_v || + std::is_same_v; + +template +inline constexpr bool is_openacc_arithmetic_type_v = std::is_same_v || +#ifndef DESUL_CUDA_ARCH_IS_PRE_PASCAL + std::is_same_v || +#endif + is_openacc_integral_type_v; + +#else + +template +inline constexpr bool is_openacc_integral_type_v = std::is_integral_v; + +template +inline constexpr bool is_openacc_arithmetic_type_v = std::is_arithmetic_v; + +#endif + +// +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_add( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr += val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_inc( + T* ptr, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr += T(1); + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_sub( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr -= val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_dec( + T* ptr, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr -= T(1); + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_mul( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr *= val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_div( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr /= val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_lshift( + T* ptr, const unsigned int val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr = *ptr << val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_rshift( + T* ptr, const unsigned int val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr = *ptr >> val; + } + return old; +} + +#ifdef __NVCOMPILER +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_max( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; + old = atomicMax(ptr, val); + return old; +} +#endif + +#ifdef __NVCOMPILER +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_min( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + int old; + old = atomicMin(ptr, val); + return old; +} +#endif + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_and( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr &= val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_or( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr |= val; + } + return old; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_fetch_xor( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T old; +#pragma acc atomic capture + { + old = *ptr; + *ptr ^= val; + } + return old; +} +// + +// +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_add_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr += val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_inc_fetch( + T* ptr, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr += T(1); + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_sub_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr -= val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_dec_fetch( + T* ptr, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr -= T(1); + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_mul_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr *= val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_div_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr /= val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_lshift_fetch( + T* ptr, const unsigned int val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr = *ptr << val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_rshift_fetch( + T* ptr, const unsigned int val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr = *ptr >> val; + tmp = *ptr; + } + return tmp; +} + +#ifdef __NVCOMPILER +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_max_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; + tmp = atomicMax(ptr, val); + tmp = std::max(tmp, val); + return tmp; +} +#endif + +#ifdef __NVCOMPILER +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_min_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; + tmp = atomicMin(ptr, val); + tmp = std::min(tmp, val); + return tmp; +} +#endif + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_and_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr &= val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_or_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr |= val; + tmp = *ptr; + } + return tmp; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_xor_fetch( + T* ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { + T tmp; +#pragma acc atomic capture + { + *ptr ^= val; + tmp = *ptr; + } + return tmp; +} +// + +// +#pragma acc routine seq +template +std::enable_if_t, void> device_atomic_store( + T* const ptr, const T val, MemoryOrderRelaxed, MemoryScopeDevice) { +#pragma acc atomic write + *ptr = val; +} + +#pragma acc routine seq +template +std::enable_if_t, void> device_atomic_store( + T* const ptr, const T val, MemoryOrderRelease, MemoryScopeDevice) { + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_store(MemoryOrderRelease): Not supported atomic " + "operation in the OpenACC backend\n"); + } +#pragma acc atomic write + *ptr = val; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_load( + const T* const ptr, MemoryOrderRelaxed, MemoryScopeDevice) { + T retval; +#pragma acc atomic read + retval = *ptr; + return retval; +} + +#pragma acc routine seq +template +std::enable_if_t, T> device_atomic_load( + const T* const ptr, MemoryOrderAcquire, MemoryScopeDevice) { + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_load(MemoryOrderAcquire): Not supported atomic " + "operation in the OpenACC backend\n"); + } + T retval; +#pragma acc atomic read + retval = *ptr; + return retval; +} +// + +} // namespace Impl +} // namespace desul + +#endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Generic.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Generic.hpp index fef10222e34..fa71477c299 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Generic.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Generic.hpp @@ -18,11 +18,14 @@ SPDX-License-Identifier: (BSD-3-Clause) namespace desul { +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_thread_fence(MemoryOrder order, MemoryScope scope) { DESUL_IF_ON_DEVICE(return Impl::device_atomic_thread_fence(order, scope);) DESUL_IF_ON_HOST(return Impl::host_atomic_thread_fence(order, scope);) } + +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_exchange(T* dest, T val, MemoryOrder order, MemoryScope scope) { @@ -30,6 +33,7 @@ atomic_exchange(T* dest, T val, MemoryOrder order, MemoryScope scope) { DESUL_IF_ON_HOST(return Impl::host_atomic_exchange(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_compare_exchange(T* dest, T cmp, T val, MemoryOrder order, MemoryScope scope) { @@ -40,6 +44,7 @@ atomic_compare_exchange(T* dest, T cmp, T val, MemoryOrder order, MemoryScope sc } // Fetch_Oper atomics: return value before operation +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_add(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -47,6 +52,7 @@ atomic_fetch_add(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_add(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_sub(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -54,6 +60,7 @@ atomic_fetch_sub(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_sub(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_max(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -61,6 +68,7 @@ atomic_fetch_max(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_max(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_min(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -68,6 +76,7 @@ atomic_fetch_min(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_min(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_mul(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -75,6 +84,7 @@ atomic_fetch_mul(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_mul(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_div(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -82,6 +92,7 @@ atomic_fetch_div(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_div(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_mod(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -89,6 +100,7 @@ atomic_fetch_mod(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_mod(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_and(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -96,6 +108,7 @@ atomic_fetch_and(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_and(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_or(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -103,6 +116,7 @@ atomic_fetch_or(T* const dest, const T val, MemoryOrder order, MemoryScope scope DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_or(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_xor(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -110,6 +124,7 @@ atomic_fetch_xor(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_xor(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_nand(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -117,6 +132,7 @@ atomic_fetch_nand(T* const dest, const T val, MemoryOrder order, MemoryScope sco DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_nand(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_lshift(T* const dest, const unsigned int val, @@ -126,6 +142,7 @@ DESUL_INLINE_FUNCTION T atomic_fetch_lshift(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_lshift(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_rshift(T* const dest, const unsigned int val, @@ -136,6 +153,7 @@ DESUL_INLINE_FUNCTION T atomic_fetch_rshift(T* const dest, } // Oper Fetch atomics: return value after operation +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_add_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -143,6 +161,7 @@ atomic_add_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_add_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_sub_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -150,6 +169,7 @@ atomic_sub_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_sub_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_max_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -157,6 +177,7 @@ atomic_max_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_max_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_min_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -164,6 +185,7 @@ atomic_min_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_min_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_mul_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -171,6 +193,7 @@ atomic_mul_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_mul_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_div_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -178,6 +201,7 @@ atomic_div_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_div_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_mod_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -185,6 +209,7 @@ atomic_mod_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_mod_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_and_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -192,6 +217,7 @@ atomic_and_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_and_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_or_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -199,6 +225,7 @@ atomic_or_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope DESUL_IF_ON_HOST(return Impl::host_atomic_or_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_xor_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -206,6 +233,7 @@ atomic_xor_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scop DESUL_IF_ON_HOST(return Impl::host_atomic_xor_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_nand_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope scope) { @@ -213,6 +241,7 @@ atomic_nand_fetch(T* const dest, const T val, MemoryOrder order, MemoryScope sco DESUL_IF_ON_HOST(return Impl::host_atomic_nand_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_lshift_fetch(T* const dest, const unsigned int val, @@ -222,6 +251,7 @@ DESUL_INLINE_FUNCTION T atomic_lshift_fetch(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_lshift_fetch(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_rshift_fetch(T* const dest, const unsigned int val, @@ -233,6 +263,7 @@ DESUL_INLINE_FUNCTION T atomic_rshift_fetch(T* const dest, // Other atomics +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_load(const T* const dest, MemoryOrder order, @@ -241,6 +272,7 @@ DESUL_INLINE_FUNCTION T atomic_load(const T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_load(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_store(T* const dest, const T val, @@ -250,6 +282,7 @@ DESUL_INLINE_FUNCTION void atomic_store(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_store(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_add(T* const dest, const T val, @@ -259,6 +292,7 @@ DESUL_INLINE_FUNCTION void atomic_add(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_add(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_sub(T* const dest, const T val, @@ -268,6 +302,7 @@ DESUL_INLINE_FUNCTION void atomic_sub(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_sub(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_mul(T* const dest, const T val, @@ -277,6 +312,7 @@ DESUL_INLINE_FUNCTION void atomic_mul(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_mul(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_div(T* const dest, const T val, @@ -286,6 +322,7 @@ DESUL_INLINE_FUNCTION void atomic_div(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_div(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_min(T* const dest, const T val, @@ -295,6 +332,7 @@ DESUL_INLINE_FUNCTION void atomic_min(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_min(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_max(T* const dest, const T val, @@ -304,6 +342,7 @@ DESUL_INLINE_FUNCTION void atomic_max(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_max(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_inc_fetch(T* const dest, MemoryOrder order, @@ -312,6 +351,7 @@ DESUL_INLINE_FUNCTION T atomic_inc_fetch(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_inc_fetch(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_dec_fetch(T* const dest, MemoryOrder order, @@ -320,6 +360,7 @@ DESUL_INLINE_FUNCTION T atomic_dec_fetch(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_dec_fetch(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_inc(T* const dest, MemoryOrder order, @@ -328,6 +369,7 @@ DESUL_INLINE_FUNCTION T atomic_fetch_inc(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_inc(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_inc_mod(T* const dest, T val, MemoryOrder order, MemoryScope scope) { @@ -335,6 +377,7 @@ atomic_fetch_inc_mod(T* const dest, T val, MemoryOrder order, MemoryScope scope) DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_inc_mod(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_dec(T* const dest, MemoryOrder order, @@ -343,6 +386,7 @@ DESUL_INLINE_FUNCTION T atomic_fetch_dec(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_dec(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION T atomic_fetch_dec_mod(T* const dest, T val, MemoryOrder order, MemoryScope scope) { @@ -350,6 +394,7 @@ atomic_fetch_dec_mod(T* const dest, T val, MemoryOrder order, MemoryScope scope) DESUL_IF_ON_HOST(return Impl::host_atomic_fetch_dec_mod(dest, val, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_inc(T* const dest, MemoryOrder order, @@ -358,6 +403,7 @@ DESUL_INLINE_FUNCTION void atomic_inc(T* const dest, DESUL_IF_ON_HOST(return Impl::host_atomic_inc(dest, order, scope);) } +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template DESUL_INLINE_FUNCTION void atomic_dec(T* const dest, MemoryOrder order, @@ -367,6 +413,7 @@ DESUL_INLINE_FUNCTION void atomic_dec(T* const dest, } // FIXME +DESUL_IMPL_ACC_ROUTINE_DIRECTIVE template SYCL_SPACE_ATOMIC_LOCKS_DEVICE; +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION +SYCL_EXTERNAL extern +#else +static +#endif + sycl_device_global + SYCL_SPACE_ATOMIC_LOCKS_DEVICE; -SYCL_EXTERNAL extern sycl_device_global SYCL_SPACE_ATOMIC_LOCKS_NODE; +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION +SYCL_EXTERNAL extern +#else +static +#endif + sycl_device_global + SYCL_SPACE_ATOMIC_LOCKS_NODE; #define SYCL_SPACE_ATOMIC_MASK 0x1FFFF @@ -128,6 +149,34 @@ inline void unlock_address_sycl(void* ptr, MemoryScopeNode) { lock_node_ref.exchange(0); } +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION +inline +#else +inline static +#endif + void + copy_sycl_lock_arrays_to_device(sycl::queue q) { + static bool once = [&q]() { +#ifdef SYCL_EXT_ONEAPI_DEVICE_GLOBAL + q.memcpy(SYCL_SPACE_ATOMIC_LOCKS_DEVICE, + &SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h, + sizeof(int32_t*)); + q.memcpy(SYCL_SPACE_ATOMIC_LOCKS_NODE, + &SYCL_SPACE_ATOMIC_LOCKS_NODE_h, + sizeof(int32_t*)); +#else + auto device_ptr = SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h; + auto node_ptr = SYCL_SPACE_ATOMIC_LOCKS_NODE_h; + q.single_task([=] { + SYCL_SPACE_ATOMIC_LOCKS_DEVICE.get() = device_ptr; + SYCL_SPACE_ATOMIC_LOCKS_NODE.get() = node_ptr; + }); +#endif + return true; + }(); + (void)once; +} + #else // not supported template @@ -155,7 +204,26 @@ inline bool lock_address_sycl(void*, MemoryScopeNode) { inline void unlock_address_sycl(void*, MemoryScopeDevice) { assert(false); } inline void unlock_address_sycl(void*, MemoryScopeNode) { assert(false); } + +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION +inline +#else +inline static +#endif + void + copy_sycl_lock_arrays_to_device(sycl::queue) { +} + #endif } // namespace Impl + +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION +inline void ensure_sycl_lock_arrays_on_device(sycl::queue) {} +#else +static inline void ensure_sycl_lock_arrays_on_device(sycl::queue q) { + Impl::copy_sycl_lock_arrays_to_device(q); +} +#endif + } // namespace desul #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op.hpp index cb97f4a906d..b6a399100b1 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op.hpp @@ -17,6 +17,9 @@ SPDX-License-Identifier: (BSD-3-Clause) #ifdef DESUL_HAVE_HIP_ATOMICS #include #endif +#ifdef DESUL_HAVE_OPENACC_ATOMICS +#include +#endif #ifdef DESUL_HAVE_SYCL_ATOMICS #include #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op_OpenACC.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op_OpenACC.hpp new file mode 100644 index 00000000000..d4dd74588bd --- /dev/null +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Lock_Based_Fetch_Op_OpenACC.hpp @@ -0,0 +1,81 @@ +/* +Copyright (c) 2019, Lawrence Livermore National Security, LLC +and DESUL project contributors. See the COPYRIGHT file for details. +Source: https://github.com/desul/desul + +SPDX-License-Identifier: (BSD-3-Clause) +*/ + +#ifndef DESUL_ATOMICS_LOCK_BASED_FETCH_OP_OPENACC_HPP_ +#define DESUL_ATOMICS_LOCK_BASED_FETCH_OP_OPENACC_HPP_ + +#include +#include +#include +#include + +namespace desul { +namespace Impl { + +template = 0> +inline T device_atomic_fetch_oper(const Oper& op, + T* const dest, + dont_deduce_this_parameter_t val, + MemoryOrder /*order*/, + MemoryScope scope) { + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_fetch_oper(): Not supported atomic operation in " + "the OpenACC backend\n"); + } + // Acquire a lock for the address + while (!lock_address((void*)dest, scope)) { + } + + device_atomic_thread_fence(MemoryOrderAcquire(), scope); + T return_val = *dest; + *dest = op.apply(return_val, val); + device_atomic_thread_fence(MemoryOrderRelease(), scope); + unlock_address((void*)dest, scope); + return return_val; +} + +template = 0> +inline T device_atomic_oper_fetch(const Oper& op, + T* const dest, + dont_deduce_this_parameter_t val, + MemoryOrder /*order*/, + MemoryScope scope) { + if (acc_on_device(acc_device_not_host)) { + printf( + "DESUL error in device_atomic_oper_fetch(): Not supported atomic operation in " + "the OpenACC backend\n"); + } + // Acquire a lock for the address + while (!lock_address((void*)dest, scope)) { + } + + device_atomic_thread_fence(MemoryOrderAcquire(), scope); + T return_val = op.apply(*dest, val); + *dest = return_val; + device_atomic_thread_fence(MemoryOrderRelease(), scope); + unlock_address((void*)dest, scope); + return return_val; +} + +} // namespace Impl +} // namespace desul + +#endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Macros.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Macros.hpp index 3a14b93d323..d11beb0c805 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Macros.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Macros.hpp @@ -57,6 +57,10 @@ SPDX-License-Identifier: (BSD-3-Clause) #define DESUL_HAVE_OPENMP_ATOMICS #endif +#if defined(DESUL_ATOMICS_ENABLE_OPENACC) +#define DESUL_HAVE_OPENACC_ATOMICS +#endif + // ONLY use GNUC atomics if not explicitly say to use OpenMP atomics #if !defined(DESUL_HAVE_OPENMP_ATOMICS) && defined(__GNUC__) #define DESUL_HAVE_GCC_ATOMICS @@ -123,6 +127,30 @@ static constexpr bool desul_impl_omp_on_host() { return false; } #endif #endif +#if defined(DESUL_HAVE_OPENACC_ATOMICS) +#include +#ifdef __NVCOMPILER +// FIXME_OPENACC We cannot determine in a constant expresion whether we are on host or +// on device with NVHPC. We use the device implementation on both sides. +#define DESUL_IF_ON_DEVICE(CODE) \ + { DESUL_IMPL_STRIP_PARENS(CODE) } +#define DESUL_IF_ON_HOST(CODE) \ + {} +#else +#define DESUL_IF_ON_DEVICE(CODE) \ + if constexpr (acc_on_device(acc_device_not_host)) { \ + DESUL_IMPL_STRIP_PARENS(CODE) \ + } +#define DESUL_IF_ON_HOST(CODE) \ + if constexpr (acc_on_device(acc_device_host)) { \ + DESUL_IMPL_STRIP_PARENS(CODE) \ + } +#endif +#define DESUL_IMPL_ACC_ROUTINE_DIRECTIVE _Pragma("acc routine seq") +#else +#define DESUL_IMPL_ACC_ROUTINE_DIRECTIVE +#endif + #if !defined(DESUL_IF_ON_HOST) && !defined(DESUL_IF_ON_DEVICE) #if (defined(DESUL_ATOMICS_ENABLE_CUDA) && defined(__CUDA_ARCH__)) || \ (defined(DESUL_ATOMICS_ENABLE_HIP) && defined(__HIP_DEVICE_COMPILE__)) || \ diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence.hpp index 24078aae07f..6a741f6d478 100644 --- a/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence.hpp +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence.hpp @@ -26,6 +26,9 @@ SPDX-License-Identifier: (BSD-3-Clause) #ifdef DESUL_HAVE_OPENMP_ATOMICS #include #endif +#ifdef DESUL_HAVE_OPENACC_ATOMICS +#include +#endif #ifdef DESUL_HAVE_SYCL_ATOMICS #include #endif diff --git a/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence_OpenACC.hpp b/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence_OpenACC.hpp new file mode 100644 index 00000000000..a5c8aa1c8a7 --- /dev/null +++ b/lib/kokkos/tpls/desul/include/desul/atomics/Thread_Fence_OpenACC.hpp @@ -0,0 +1,25 @@ +/* +Copyright (c) 2019, Lawrence Livermore National Security, LLC +and DESUL project contributors. See the COPYRIGHT file for details. +Source: https://github.com/desul/desul + +SPDX-License-Identifier: (BSD-3-Clause) +*/ + +#ifndef DESUL_ATOMICS_THREAD_FENCE_OPENACC_HPP_ +#define DESUL_ATOMICS_THREAD_FENCE_OPENACC_HPP_ + +namespace desul { +namespace Impl { + +#pragma acc routine seq +template +void device_atomic_thread_fence(MemoryOrder, MemoryScope) { + // FIXME_OPENACC: The current OpenACC standard does not support explicit thread fence + // operations. +} + +} // namespace Impl +} // namespace desul + +#endif diff --git a/lib/kokkos/tpls/desul/src/Lock_Array_SYCL.cpp b/lib/kokkos/tpls/desul/src/Lock_Array_SYCL.cpp index 9e84c60e41a..6660c76e11a 100644 --- a/lib/kokkos/tpls/desul/src/Lock_Array_SYCL.cpp +++ b/lib/kokkos/tpls/desul/src/Lock_Array_SYCL.cpp @@ -14,10 +14,12 @@ SPDX-License-Identifier: (BSD-3-Clause) namespace desul::Impl { +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION SYCL_EXTERNAL sycl_device_global SYCL_SPACE_ATOMIC_LOCKS_DEVICE; SYCL_EXTERNAL sycl_device_global SYCL_SPACE_ATOMIC_LOCKS_NODE; +#endif int32_t* SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h = nullptr; int32_t* SYCL_SPACE_ATOMIC_LOCKS_NODE_h = nullptr; @@ -31,19 +33,7 @@ void init_lock_arrays_sycl(sycl::queue q) { SYCL_SPACE_ATOMIC_LOCKS_NODE_h = sycl::malloc_host(SYCL_SPACE_ATOMIC_MASK + 1, q); - // FIXME_SYCL Once supported, the following should be replaced by - // q.memcpy(SYCL_SPACE_ATOMIC_LOCKS_DEVICE, - // &SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h, - // sizeof(int32_t*)); - // q.memcpy(SYCL_SPACE_ATOMIC_LOCKS_NODE, - // &SYCL_SPACE_ATOMIC_LOCKS_NODE_h, - // sizeof(int32_t*)); - auto device_ptr = SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h; - auto node_ptr = SYCL_SPACE_ATOMIC_LOCKS_NODE_h; - q.single_task([=] { - SYCL_SPACE_ATOMIC_LOCKS_DEVICE.get() = device_ptr; - SYCL_SPACE_ATOMIC_LOCKS_NODE.get() = node_ptr; - }); + copy_sycl_lock_arrays_to_device(q); q.memset(SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h, 0, @@ -63,7 +53,10 @@ void finalize_lock_arrays_sycl(sycl::queue q) { sycl::free(SYCL_SPACE_ATOMIC_LOCKS_NODE_h, q); SYCL_SPACE_ATOMIC_LOCKS_DEVICE_h = nullptr; SYCL_SPACE_ATOMIC_LOCKS_NODE_h = nullptr; +#ifdef DESUL_ATOMICS_ENABLE_SYCL_SEPARABLE_COMPILATION + copy_sycl_lock_arrays_to_device(q); +#endif } -} // namespace desul::Impl +} // namespace desul::Impl #endif diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/compressed_pair.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/compressed_pair.hpp index ab1561bd47f..25389a2fa5e 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/compressed_pair.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/compressed_pair.hpp @@ -27,165 +27,165 @@ namespace detail { // For no unique address emulation, this is the case taken when neither are empty. // For real `[[no_unique_address]]`, this case is always taken. -template struct __compressed_pair { - _MDSPAN_NO_UNIQUE_ADDRESS _T __t_val; - _MDSPAN_NO_UNIQUE_ADDRESS _U __u_val; - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T &__first() noexcept { return __t_val; } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _T const &__first() const noexcept { - return __t_val; +template struct __compressed_pair { + _MDSPAN_NO_UNIQUE_ADDRESS _T1 __t1_val{}; + _MDSPAN_NO_UNIQUE_ADDRESS _T2 __t2_val{}; + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T1 &__first() noexcept { return __t1_val; } + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T1 const &__first() const noexcept { + return __t1_val; } - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _U &__second() noexcept { return __u_val; } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _U const &__second() const noexcept { - return __u_val; + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T2 &__second() noexcept { return __t2_val; } + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T2 const &__second() const noexcept { + return __t2_val; } MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair() noexcept = default; + constexpr __compressed_pair() = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair const &) noexcept = default; + constexpr __compressed_pair(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair &&) noexcept = default; + constexpr __compressed_pair(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair const &) noexcept = default; + operator=(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair &&) noexcept = default; + operator=(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - ~__compressed_pair() noexcept = default; - template - MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_TLike &&__t, _ULike &&__u) - : __t_val((_TLike &&) __t), __u_val((_ULike &&) __u) {} + ~__compressed_pair() = default; + template + MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_T1Like &&__t1, _T2Like &&__t2) + : __t1_val((_T1Like &&) __t1), __t2_val((_T2Like &&) __t2) {} }; #if !defined(_MDSPAN_USE_ATTRIBUTE_NO_UNIQUE_ADDRESS) // First empty. -template +template struct __compressed_pair< - _T, _U, - std::enable_if_t<_MDSPAN_TRAIT(std::is_empty, _T) && !_MDSPAN_TRAIT(std::is_empty, _U)>> - : private _T { - _U __u_val; - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T &__first() noexcept { - return *static_cast<_T *>(this); + _T1, _T2, + std::enable_if_t<_MDSPAN_TRAIT(std::is_empty, _T1) && !_MDSPAN_TRAIT(std::is_empty, _T2)>> + : private _T1 { + _T2 __t2_val{}; + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T1 &__first() noexcept { + return *static_cast<_T1 *>(this); } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _T const &__first() const noexcept { - return *static_cast<_T const *>(this); + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T1 const &__first() const noexcept { + return *static_cast<_T1 const *>(this); } - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _U &__second() noexcept { return __u_val; } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _U const &__second() const noexcept { - return __u_val; + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T2 &__second() noexcept { return __t2_val; } + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T2 const &__second() const noexcept { + return __t2_val; } MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair() noexcept = default; + constexpr __compressed_pair() = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair const &) noexcept = default; + constexpr __compressed_pair(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair &&) noexcept = default; + constexpr __compressed_pair(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair const &) noexcept = default; + operator=(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair &&) noexcept = default; + operator=(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - ~__compressed_pair() noexcept = default; - template - MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_TLike &&__t, _ULike &&__u) - : _T((_TLike &&) __t), __u_val((_ULike &&) __u) {} + ~__compressed_pair() = default; + template + MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_T1Like &&__t1, _T2Like &&__t2) + : _T1((_T1Like &&) __t1), __t2_val((_T2Like &&) __t2) {} }; // Second empty. -template +template struct __compressed_pair< - _T, _U, - std::enable_if_t> - : private _U { - _T __t_val; - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T &__first() noexcept { return __t_val; } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _T const &__first() const noexcept { - return __t_val; + _T1, _T2, + std::enable_if_t> + : private _T2 { + _T1 __t1_val{}; + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T1 &__first() noexcept { return __t1_val; } + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T1 const &__first() const noexcept { + return __t1_val; } - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _U &__second() noexcept { - return *static_cast<_U *>(this); + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T2 &__second() noexcept { + return *static_cast<_T2 *>(this); } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _U const &__second() const noexcept { - return *static_cast<_U const *>(this); + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T2 const &__second() const noexcept { + return *static_cast<_T2 const *>(this); } MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair() noexcept = default; + constexpr __compressed_pair() = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair const &) noexcept = default; + constexpr __compressed_pair(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair &&) noexcept = default; + constexpr __compressed_pair(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair const &) noexcept = default; + operator=(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair &&) noexcept = default; + operator=(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - ~__compressed_pair() noexcept = default; + ~__compressed_pair() = default; - template - MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_TLike &&__t, _ULike &&__u) - : _U((_ULike &&) __u), __t_val((_TLike &&) __t) {} + template + MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_T1Like &&__t1, _T2Like &&__t2) + : _T2((_T2Like &&) __t2), __t1_val((_T1Like &&) __t1) {} }; // Both empty. -template +template struct __compressed_pair< - _T, _U, - std::enable_if_t<_MDSPAN_TRAIT(std::is_empty, _T) && _MDSPAN_TRAIT(std::is_empty, _U)>> + _T1, _T2, + std::enable_if_t<_MDSPAN_TRAIT(std::is_empty, _T1) && _MDSPAN_TRAIT(std::is_empty, _T2)>> // We need to use the __no_unique_address_emulation wrapper here to avoid // base class ambiguities. #ifdef _MDSPAN_COMPILER_MSVC // MSVC doesn't allow you to access public static member functions of a type // when you *happen* to privately inherit from that type. - : protected __no_unique_address_emulation<_T, 0>, - protected __no_unique_address_emulation<_U, 1> + : protected __no_unique_address_emulation<_T1, 0>, + protected __no_unique_address_emulation<_T2, 1> #else - : private __no_unique_address_emulation<_T, 0>, - private __no_unique_address_emulation<_U, 1> + : private __no_unique_address_emulation<_T1, 0>, + private __no_unique_address_emulation<_T2, 1> #endif { - using __first_base_t = __no_unique_address_emulation<_T, 0>; - using __second_base_t = __no_unique_address_emulation<_U, 1>; + using __first_base_t = __no_unique_address_emulation<_T1, 0>; + using __second_base_t = __no_unique_address_emulation<_T2, 1>; - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T &__first() noexcept { + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T1 &__first() noexcept { return this->__first_base_t::__ref(); } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _T const &__first() const noexcept { + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T1 const &__first() const noexcept { return this->__first_base_t::__ref(); } - MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _U &__second() noexcept { + MDSPAN_FORCE_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 _T2 &__second() noexcept { return this->__second_base_t::__ref(); } - MDSPAN_FORCE_INLINE_FUNCTION constexpr _U const &__second() const noexcept { + MDSPAN_FORCE_INLINE_FUNCTION constexpr _T2 const &__second() const noexcept { return this->__second_base_t::__ref(); } MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair() noexcept = default; + constexpr __compressed_pair() = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair const &) noexcept = default; + constexpr __compressed_pair(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - constexpr __compressed_pair(__compressed_pair &&) noexcept = default; + constexpr __compressed_pair(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair const &) noexcept = default; + operator=(__compressed_pair const &) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED _MDSPAN_CONSTEXPR_14_DEFAULTED __compressed_pair & - operator=(__compressed_pair &&) noexcept = default; + operator=(__compressed_pair &&) = default; MDSPAN_INLINE_FUNCTION_DEFAULTED - ~__compressed_pair() noexcept = default; - template - MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_TLike &&__t, _ULike &&__u) noexcept - : __first_base_t(_T((_TLike &&) __t)), - __second_base_t(_U((_ULike &&) __u)) + ~__compressed_pair() = default; + template + MDSPAN_INLINE_FUNCTION constexpr __compressed_pair(_T1Like &&__t1, _T2Like &&__t2) noexcept + : __first_base_t(_T1((_T1Like &&) __t1)), + __second_base_t(_T2((_T2Like &&) __t2)) { } }; diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/config.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/config.hpp index d35e201cebd..8e42a37ba7c 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/config.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/config.hpp @@ -35,10 +35,17 @@ #define MDSPAN_CXX_STD_14 201402L #define MDSPAN_CXX_STD_17 201703L #define MDSPAN_CXX_STD_20 202002L +// Note GCC has not updated this in version 13 +#ifdef __clang__ +#define MDSPAN_CXX_STD_23 202302L +#else +#define MDSPAN_CXX_STD_23 202100L +#endif #define MDSPAN_HAS_CXX_14 (_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_14) #define MDSPAN_HAS_CXX_17 (_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_17) #define MDSPAN_HAS_CXX_20 (_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_20) +#define MDSPAN_HAS_CXX_23 (_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_23) static_assert(_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_14, "mdspan requires C++14 or later."); @@ -224,7 +231,7 @@ static_assert(_MDSPAN_CPLUSPLUS >= MDSPAN_CXX_STD_14, "mdspan requires C++14 or #endif #ifndef MDSPAN_CONDITIONAL_EXPLICIT -# if MDSPAN_HAS_CXX_20 && !defined(_MDSPAN_COMPILER_MSVC) +# if MDSPAN_HAS_CXX_20 # define MDSPAN_CONDITIONAL_EXPLICIT(COND) explicit(COND) # else # define MDSPAN_CONDITIONAL_EXPLICIT(COND) diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/extents.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/extents.hpp index 0dd31c4cd0a..9a28c3ed5ca 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/extents.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/extents.hpp @@ -55,6 +55,14 @@ __check_compatible_extents( return {}; } +template +MDSPAN_INLINE_FUNCTION +static constexpr bool are_valid_indices() { + return + (std::is_convertible::value && ... && true) && + (std::is_nothrow_constructible::value && ... && true); +} + // ------------------------------------------------------------------ // ------------ static_array ---------------------------------------- // ------------------------------------------------------------------ @@ -140,7 +148,8 @@ struct index_sequence_scan_impl { template struct index_sequence_scan_impl { -#if defined(__NVCC__) || defined(__NVCOMPILER) +#if defined(__NVCC__) || defined(__NVCOMPILER) || \ + defined(_MDSPAN_COMPILER_INTEL) // NVCC warns about pointless comparison with 0 for R==0 and r being const // evaluatable and also 0. MDSPAN_INLINE_FUNCTION @@ -167,7 +176,7 @@ template <> struct index_sequence_scan_impl<0> { // all static values. template struct possibly_empty_array { - T vals[N]; + T vals[N]{}; MDSPAN_INLINE_FUNCTION constexpr T &operator[](size_t r) { return vals[r]; } MDSPAN_INLINE_FUNCTION @@ -251,12 +260,17 @@ struct maybe_static_array { #ifdef __cpp_lib_span MDSPAN_TEMPLATE_REQUIRES(class T, size_t N, - /* requires */ (N == m_size_dynamic)) + /* requires */ (N == m_size_dynamic && N > 0)) MDSPAN_INLINE_FUNCTION constexpr maybe_static_array(const std::span &vals) { for (size_t r = 0; r < N; r++) m_dyn_vals[r] = static_cast(vals[r]); } + + MDSPAN_TEMPLATE_REQUIRES(class T, size_t N, + /* requires */ (N == m_size_dynamic && N == 0)) + MDSPAN_INLINE_FUNCTION + constexpr maybe_static_array(const std::span &) : m_dyn_vals{} {} #endif // constructors from all values @@ -423,9 +437,9 @@ template class extents { class OtherIndexType, size_t N, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, OtherIndexType, index_type) && + _MDSPAN_TRAIT(std::is_convertible, const OtherIndexType&, index_type) && _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, - OtherIndexType) && + const OtherIndexType&) && (N == m_rank || N == m_rank_dynamic))) MDSPAN_INLINE_FUNCTION MDSPAN_CONDITIONAL_EXPLICIT(N != m_rank_dynamic) @@ -436,8 +450,8 @@ template class extents { MDSPAN_TEMPLATE_REQUIRES( class OtherIndexType, size_t N, /* requires */ - (_MDSPAN_TRAIT(std::is_convertible, OtherIndexType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, OtherIndexType) && + (_MDSPAN_TRAIT(std::is_convertible, const OtherIndexType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const OtherIndexType&) && (N == m_rank || N == m_rank_dynamic))) MDSPAN_INLINE_FUNCTION MDSPAN_CONDITIONAL_EXPLICIT(N != m_rank_dynamic) @@ -454,6 +468,7 @@ template class extents { size_t DynCount, size_t R, class OtherExtents, class... DynamicValues, /* requires */ ((R < m_rank) && (static_extent(R) == dynamic_extent))) MDSPAN_INLINE_FUNCTION + constexpr vals_t __construct_vals_from_extents(std::integral_constant, std::integral_constant, const OtherExtents &exts, @@ -468,6 +483,7 @@ template class extents { size_t DynCount, size_t R, class OtherExtents, class... DynamicValues, /* requires */ ((R < m_rank) && (static_extent(R) != dynamic_extent))) MDSPAN_INLINE_FUNCTION + constexpr vals_t __construct_vals_from_extents(std::integral_constant, std::integral_constant, const OtherExtents &exts, @@ -481,6 +497,7 @@ template class extents { size_t DynCount, size_t R, class OtherExtents, class... DynamicValues, /* requires */ ((R == m_rank) && (DynCount == m_rank_dynamic))) MDSPAN_INLINE_FUNCTION + constexpr vals_t __construct_vals_from_extents(std::integral_constant, std::integral_constant, const OtherExtents &, @@ -491,17 +508,20 @@ template class extents { public: // Converting constructor from other extents specializations - MDSPAN_TEMPLATE_REQUIRES( - class OtherIndexType, size_t... OtherExtents, - /* requires */ - ( - /* multi-stage check to protect from invalid pack expansion when sizes - don't match? */ - decltype(detail::__check_compatible_extents( - std::integral_constant{}, + MDSPAN_TEMPLATE_REQUIRES( + class OtherIndexType, size_t... OtherExtents, + /* requires */ + ( + /* multi-stage check to protect from invalid pack expansion when sizes + don't match? */ + decltype(detail::__check_compatible_extents( + // using: sizeof...(Extents) == sizeof...(OtherExtents) as the second argument fails with MSVC+NVCC with some obscure expansion error + // MSVC: 19.38.33133 NVCC: 12.0 + std::integral_constant::rank() == extents::rank()>{}, std::integer_sequence{}, - std::integer_sequence{}))::value)) + std::integer_sequence{}))::value + ) + ) MDSPAN_INLINE_FUNCTION MDSPAN_CONDITIONAL_EXPLICIT((((Extents != dynamic_extent) && (OtherExtents == dynamic_extent)) || @@ -518,10 +538,14 @@ template class extents { MDSPAN_INLINE_FUNCTION friend constexpr bool operator==(const extents &lhs, const extents &rhs) noexcept { - bool value = true; - for (size_type r = 0; r < m_rank; r++) - value &= rhs.extent(r) == lhs.extent(r); - return value; + if constexpr (rank() != extents::rank()) { + return false; + } else { + using common_t = std::common_type_t; + for (size_type r = 0; r < m_rank; r++) + if(static_cast(rhs.extent(r)) != static_cast(lhs.extent(r))) return false; + } + return true; } #if !(MDSPAN_HAS_CXX_20) @@ -570,7 +594,7 @@ using dextents = typename detail::__make_dextents::type; template extents(IndexTypes...) -> extents; + ((void) sizeof(IndexTypes), ::MDSPAN_IMPL_STANDARD_NAMESPACE::dynamic_extent)...>; #endif // Helper type traits for identifying a class as extents. diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_left.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_left.hpp index af44494a98d..83ed9ef7fe3 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_left.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_left.hpp @@ -18,6 +18,9 @@ #include "macros.hpp" #include "trait_backports.hpp" #include "extents.hpp" +#include "../__p2642_bits/layout_padded_fwd.hpp" +#include +#include namespace MDSPAN_IMPL_STANDARD_NAMESPACE { @@ -108,6 +111,36 @@ class layout_left::mapping { */ } +#if MDSPAN_HAS_CXX_17 + /** + * Converting constructor from `layout_left_padded::mapping`. + * + * This overload participates in overload resolution only if _Mapping is a layout_left_padded mapping and + * extents_type is constructible from _Mapping::extents_type. + * + * \note There is currently a difference from p2642r2, where this function is specified as taking + * `layout_left_padded< padding_value >::mapping< Extents>`. However, this makes `padding_value` non-deducible. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_left_padded_mapping<_Mapping>::value + && std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v)) + mapping(const _Mapping& __other) noexcept + : __extents(__other.extents()) + { + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail:: + check_padded_layout_converting_constructor_mandates(); + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail:: + check_padded_layout_converting_constructor_preconditions< + extents_type>(__other); + } +#endif + MDSPAN_TEMPLATE_REQUIRES( class OtherExtents, /* requires */ ( @@ -124,13 +157,14 @@ class layout_left::mapping { * other.required_span_size() is a representable value of type index_type */ #if !defined(_MDSPAN_HAS_CUDA) && !defined(_MDSPAN_HAS_HIP) && !defined(NDEBUG) - index_type stride = 1; - for(rank_type r=0; r<__extents.rank(); r++) { - if(stride != static_cast(other.stride(r))) { - // Note this throw will lead to a terminate if triggered since this function is marked noexcept - throw std::runtime_error("Assigning layout_stride to layout_left with invalid strides."); + if constexpr (extents_type::rank() > 0) { + index_type stride = 1; + using common_t = std::common_type_t; + for(rank_type r=0; r<__extents.rank(); r++) { + if(static_cast(stride) != static_cast(other.stride(r))) + std::abort(); // ("Assigning layout_stride to layout_left with invalid strides."); + stride *= __extents.extent(r); } - stride *= __extents.extent(r); } #endif } @@ -155,10 +189,7 @@ class layout_left::mapping { class... Indices, /* requires */ ( (sizeof...(Indices) == extents_type::rank()) && - _MDSPAN_FOLD_AND( - (_MDSPAN_TRAIT(std::is_convertible, Indices, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, Indices)) - ) + (detail::are_valid_indices()) ) ) _MDSPAN_HOST_DEVICE @@ -172,9 +203,9 @@ class layout_left::mapping { MDSPAN_INLINE_FUNCTION static constexpr bool is_always_exhaustive() noexcept { return true; } MDSPAN_INLINE_FUNCTION static constexpr bool is_always_strided() noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_unique() const noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_exhaustive() const noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_strided() const noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_unique() noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_exhaustive() noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_strided() noexcept { return true; } MDSPAN_INLINE_FUNCTION constexpr index_type stride(rank_type i) const noexcept @@ -187,7 +218,10 @@ class layout_left::mapping { return value; } - template + MDSPAN_TEMPLATE_REQUIRES( + class OtherExtents, + /* requires */ ( Extents::rank() == OtherExtents::rank()) + ) MDSPAN_INLINE_FUNCTION friend constexpr bool operator==(mapping const& lhs, mapping const& rhs) noexcept { return lhs.extents() == rhs.extents(); @@ -195,7 +229,10 @@ class layout_left::mapping { // In C++ 20 the not equal exists if equal is found #if !(MDSPAN_HAS_CXX_20) - template + MDSPAN_TEMPLATE_REQUIRES( + class OtherExtents, + /* requires */ ( Extents::rank() == OtherExtents::rank()) + ) MDSPAN_INLINE_FUNCTION friend constexpr bool operator!=(mapping const& lhs, mapping const& rhs) noexcept { return lhs.extents() != rhs.extents(); @@ -215,6 +252,17 @@ class layout_left::mapping { private: _MDSPAN_NO_UNIQUE_ADDRESS extents_type __extents{}; + // [mdspan.submdspan.mapping], submdspan mapping specialization + template + MDSPAN_INLINE_FUNCTION + constexpr auto submdspan_mapping_impl( + SliceSpecifiers... slices) const; + + template + friend constexpr auto submdspan_mapping( + const mapping& src, SliceSpecifiers... slices) { + return src.submdspan_mapping_impl(slices...); + } }; diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_right.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_right.hpp index a0586484202..3d3927df7bc 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_right.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_right.hpp @@ -20,6 +20,7 @@ #include "extents.hpp" #include #include "layout_stride.hpp" +#include "../__p2642_bits/layout_padded_fwd.hpp" namespace MDSPAN_IMPL_STANDARD_NAMESPACE { @@ -113,6 +114,34 @@ class layout_right::mapping { */ } + /** + * Converting constructor from `layout_right_padded::mapping`. + * + * This overload participates in overload resolution only if _Mapping is a layout_right_padded mapping and + * extents_type is constructible from _Mapping::extents_type. + * + * \note There is currently a difference from p2642r2, where this function is specified as taking + * `layout_right_padded< padding_value >::mapping< Extents>`. However, this makes `padding_value` non-deducible. + */ +#if MDSPAN_HAS_CXX_17 + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_right_padded_mapping<_Mapping>::value + && std::is_constructible_v)) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v)) + mapping(const _Mapping &__other) noexcept + : __extents(__other.extents()) + { + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail:: + check_padded_layout_converting_constructor_mandates(); + MDSPAN_IMPL_PROPOSED_NAMESPACE::detail:: + check_padded_layout_converting_constructor_preconditions< + extents_type>(__other); + } +#endif + MDSPAN_TEMPLATE_REQUIRES( class OtherExtents, /* requires */ ( @@ -129,13 +158,14 @@ class layout_right::mapping { * other.required_span_size() is a representable value of type index_type */ #if !defined(_MDSPAN_HAS_CUDA) && !defined(_MDSPAN_HAS_HIP) && !defined(NDEBUG) - index_type stride = 1; - for(rank_type r=__extents.rank(); r>0; r--) { - if(stride != static_cast(other.stride(r-1))) { - // Note this throw will lead to a terminate if triggered since this function is marked noexcept - throw std::runtime_error("Assigning layout_stride to layout_right with invalid strides."); + if constexpr (extents_type::rank() > 0) { + index_type stride = 1; + using common_t = std::common_type_t; + for(rank_type r=__extents.rank(); r>0; r--) { + if(static_cast(stride) != static_cast(other.stride(r-1))) + std::abort(); // ("Assigning layout_stride to layout_right with invalid strides."); + stride *= __extents.extent(r-1); } - stride *= __extents.extent(r-1); } #endif } @@ -157,13 +187,10 @@ class layout_right::mapping { //-------------------------------------------------------------------------------- MDSPAN_TEMPLATE_REQUIRES( - class... Indices, + class ... Indices, /* requires */ ( - (sizeof...(Indices) == extents_type::rank()) && - _MDSPAN_FOLD_AND( - (_MDSPAN_TRAIT(std::is_convertible, Indices, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, Indices)) - ) + (sizeof...(Indices) == extents_type::rank()) && + (detail::are_valid_indices()) ) ) _MDSPAN_HOST_DEVICE @@ -174,9 +201,9 @@ class layout_right::mapping { MDSPAN_INLINE_FUNCTION static constexpr bool is_always_unique() noexcept { return true; } MDSPAN_INLINE_FUNCTION static constexpr bool is_always_exhaustive() noexcept { return true; } MDSPAN_INLINE_FUNCTION static constexpr bool is_always_strided() noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_unique() const noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_exhaustive() const noexcept { return true; } - MDSPAN_INLINE_FUNCTION constexpr bool is_strided() const noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_unique() noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_exhaustive() noexcept { return true; } + MDSPAN_INLINE_FUNCTION static constexpr bool is_strided() noexcept { return true; } MDSPAN_INLINE_FUNCTION constexpr index_type stride(rank_type i) const noexcept @@ -189,7 +216,10 @@ class layout_right::mapping { return value; } - template + MDSPAN_TEMPLATE_REQUIRES( + class OtherExtents, + /* requires */ ( Extents::rank() == OtherExtents::rank()) + ) MDSPAN_INLINE_FUNCTION friend constexpr bool operator==(mapping const& lhs, mapping const& rhs) noexcept { return lhs.extents() == rhs.extents(); @@ -197,7 +227,10 @@ class layout_right::mapping { // In C++ 20 the not equal exists if equal is found #if !(MDSPAN_HAS_CXX_20) - template + MDSPAN_TEMPLATE_REQUIRES( + class OtherExtents, + /* requires */ (Extents::rank() == OtherExtents::rank()) + ) MDSPAN_INLINE_FUNCTION friend constexpr bool operator!=(mapping const& lhs, mapping const& rhs) noexcept { return lhs.extents() != rhs.extents(); @@ -217,6 +250,17 @@ class layout_right::mapping { private: _MDSPAN_NO_UNIQUE_ADDRESS extents_type __extents{}; + // [mdspan.submdspan.mapping], submdspan mapping specialization + template + MDSPAN_INLINE_FUNCTION + constexpr auto submdspan_mapping_impl( + SliceSpecifiers... slices) const; + + template + friend constexpr auto submdspan_mapping( + const mapping& src, SliceSpecifiers... slices) { + return src.submdspan_mapping_impl(slices...); + } }; } // end namespace MDSPAN_IMPL_STANDARD_NAMESPACE diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_stride.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_stride.hpp index 030a494529b..15ad577d149 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_stride.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/layout_stride.hpp @@ -88,7 +88,7 @@ struct layout_stride { : private detail::__no_unique_address_emulation< detail::__compressed_pair< Extents, - std::array + detail::possibly_empty_array > > #endif @@ -109,7 +109,7 @@ struct layout_stride { //---------------------------------------------------------------------------- - using __strides_storage_t = std::array; + using __strides_storage_t = detail::possibly_empty_array; using __member_pair_t = detail::__compressed_pair; #if defined(_MDSPAN_USE_ATTRIBUTE_NO_UNIQUE_ADDRESS) @@ -158,14 +158,16 @@ struct layout_stride { template MDSPAN_INLINE_FUNCTION static constexpr bool _eq_impl(mapping const& self, mapping const& other) noexcept { - return _MDSPAN_FOLD_AND((self.stride(Idxs) == other.stride(Idxs)) /* && ... */) - && _MDSPAN_FOLD_AND((self.extents().extent(Idxs) == other.extents().extent(Idxs)) /* || ... */); + using common_t = std::common_type_t; + return _MDSPAN_FOLD_AND((static_cast(self.stride(Idxs)) == static_cast(other.stride(Idxs))) /* && ... */) + && _MDSPAN_FOLD_AND((static_cast(self.extents().extent(Idxs)) == static_cast(other.extents().extent(Idxs))) /* || ... */); } template MDSPAN_INLINE_FUNCTION static constexpr bool _not_eq_impl(mapping const& self, mapping const& other) noexcept { - return _MDSPAN_FOLD_OR((self.stride(Idxs) != other.stride(Idxs)) /* || ... */) - || _MDSPAN_FOLD_OR((self.extents().extent(Idxs) != other.extents().extent(Idxs)) /* || ... */); + using common_t = std::common_type_t; + return _MDSPAN_FOLD_OR((static_cast(self.stride(Idxs)) != static_cast(other.stride(Idxs))) /* || ... */) + || _MDSPAN_FOLD_OR((static_cast(self.extents().extent(Idxs)) != static_cast(other.extents().extent(Idxs))) /* || ... */); } template @@ -205,6 +207,11 @@ struct layout_stride { } #endif + MDSPAN_INLINE_FUNCTION + static constexpr std::array return_strides(const __strides_storage_t& s) { + return std::array{s[Idxs]...}; + } + template MDSPAN_INLINE_FUNCTION static constexpr size_t __return_zero() { return 0; } @@ -218,6 +225,21 @@ struct layout_stride { // Can't use defaulted parameter in the __deduction_workaround template because of a bug in MSVC warning C4348. using __impl = __deduction_workaround>; + static constexpr __strides_storage_t strides_storage(std::true_type) { + __strides_storage_t s{}; + + extents_type e; + index_type stride = 1; + for(int r = static_cast(extents_type::rank() - 1); r >= 0; r--) { + s[r] = stride; + stride *= e.extent(r); + } + + return s; + } + static constexpr __strides_storage_t strides_storage(std::false_type) { + return {}; + } //---------------------------------------------------------------------------- @@ -233,7 +255,21 @@ struct layout_stride { //-------------------------------------------------------------------------------- - MDSPAN_INLINE_FUNCTION_DEFAULTED constexpr mapping() noexcept = default; + MDSPAN_INLINE_FUNCTION_DEFAULTED constexpr mapping() noexcept +#if defined(_MDSPAN_USE_ATTRIBUTE_NO_UNIQUE_ADDRESS) + : __members{ +#else + : __base_t(__base_t{__member_pair_t( +#endif + extents_type(), + __strides_storage_t(strides_storage(std::integral_constant 0)>{})) +#if defined(_MDSPAN_USE_ATTRIBUTE_NO_UNIQUE_ADDRESS) + } +#else + )}) +#endif + {} + MDSPAN_INLINE_FUNCTION_DEFAULTED constexpr mapping(mapping const&) noexcept = default; MDSPAN_TEMPLATE_REQUIRES( @@ -332,10 +368,10 @@ struct layout_stride { ) #endif MDSPAN_CONDITIONAL_EXPLICIT( - (!std::is_convertible::value) && - (detail::__is_mapping_of || - detail::__is_mapping_of || - detail::__is_mapping_of) + !(std::is_convertible::value && + (detail::__is_mapping_of || + detail::__is_mapping_of || + detail::__is_mapping_of)) ) // needs two () due to comma MDSPAN_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 mapping(StridedLayoutMapping const& other) noexcept // NOLINT(google-explicit-constructor) @@ -374,7 +410,7 @@ struct layout_stride { MDSPAN_INLINE_FUNCTION constexpr std::array< index_type, extents_type::rank() > strides() const noexcept { - return __strides_storage(); + return __impl::return_strides(__strides_storage()); } MDSPAN_INLINE_FUNCTION @@ -393,8 +429,7 @@ struct layout_stride { class... Indices, /* requires */ ( sizeof...(Indices) == Extents::rank() && - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_convertible, Indices, index_type) /*&& ...*/ ) && - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, Indices) /*&& ...*/) + (detail::are_valid_indices()) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -410,17 +445,37 @@ struct layout_stride { MDSPAN_INLINE_FUNCTION static constexpr bool is_unique() noexcept { return true; } MDSPAN_INLINE_FUNCTION _MDSPAN_CONSTEXPR_14 bool is_exhaustive() const noexcept { - return required_span_size() == __get_size(extents(), std::make_index_sequence()); + if constexpr (extents_type::rank() == 0) + return true; + else { + index_type span_size = required_span_size(); + if (span_size == static_cast(0)) { + if constexpr (extents_type::rank() == 1) { + return stride(0) == 1; + } else { + rank_type r_largest = 0; + for (rank_type r = 1; r < extents_type::rank(); r++) { + if (stride(r) > stride(r_largest)) { + r_largest = r; + } + } + for (rank_type r = 0; r < extents_type::rank(); r++) { + if (extents().extent(r) == 0 && r != r_largest) { + return false; + } + } + return true; + } + } else { + return required_span_size() == __get_size(extents(), std::make_index_sequence()); + } + } } MDSPAN_INLINE_FUNCTION static constexpr bool is_strided() noexcept { return true; } MDSPAN_INLINE_FUNCTION - constexpr index_type stride(rank_type r) const noexcept -#if MDSPAN_HAS_CXX_20 - requires ( Extents::rank() > 0 ) -#endif - { + constexpr index_type stride(rank_type r) const noexcept { return __strides_storage()[r]; } @@ -444,10 +499,13 @@ struct layout_stride { MDSPAN_INLINE_FUNCTION friend constexpr bool operator==(const mapping& x, const StridedLayoutMapping& y) noexcept { bool strides_match = true; - for(rank_type r = 0; r < extents_type::rank(); r++) - strides_match = strides_match && (x.stride(r) == y.stride(r)); + if constexpr (extents_type::rank() > 0) { + using common_t = std::common_type_t; + for(rank_type r = 0; r < extents_type::rank(); r++) + strides_match = strides_match && (static_cast(x.stride(r)) == static_cast(y.stride(r))); + } return (x.extents() == y.extents()) && - (__impl::__OFFSET(y)== static_cast(0)) && + (__impl::__OFFSET(y) == static_cast(0)) && strides_match; } @@ -489,6 +547,17 @@ struct layout_stride { } #endif + // [mdspan.submdspan.mapping], submdspan mapping specialization + template + MDSPAN_INLINE_FUNCTION + constexpr auto submdspan_mapping_impl( + SliceSpecifiers... slices) const; + + template + friend constexpr auto submdspan_mapping( + const mapping& src, SliceSpecifiers... slices) { + return src.submdspan_mapping_impl(slices...); + } }; }; diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/mdspan.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/mdspan.hpp index 6febe300215..d6ec49e65bf 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/mdspan.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p0009_bits/mdspan.hpp @@ -55,6 +55,13 @@ class mdspan ReferenceType __callop(mdspan const& __self, const std::array& indices) noexcept { return __self.__accessor_ref().access(__self.__ptr_ref(), __self.__mapping_ref()(indices[Idxs]...)); } +#ifdef __cpp_lib_span + template + MDSPAN_FORCE_INLINE_FUNCTION static constexpr + ReferenceType __callop(mdspan const& __self, const std::span& indices) noexcept { + return __self.__accessor_ref().access(__self.__ptr_ref(), __self.__mapping_ref()(indices[Idxs]...)); + } +#endif }; public: @@ -109,9 +116,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class... SizeTypes, /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_convertible, SizeTypes, index_type) /* && ... */) && - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeTypes) /* && ... */) && ((sizeof...(SizeTypes) == rank()) || (sizeof...(SizeTypes) == rank_dynamic())) && + (detail::are_valid_indices()) && _MDSPAN_TRAIT(std::is_constructible, mapping_type, extents_type) && _MDSPAN_TRAIT(std::is_default_constructible, accessor_type) ) @@ -125,8 +131,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, size_t N, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) && + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) && ((N == rank()) || (N == rank_dynamic())) && _MDSPAN_TRAIT(std::is_constructible, mapping_type, extents_type) && _MDSPAN_TRAIT(std::is_default_constructible, accessor_type) @@ -142,8 +148,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, size_t N, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) && + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) && ((N == rank()) || (N == rank_dynamic())) && _MDSPAN_TRAIT(std::is_constructible, mapping_type, extents_type) && _MDSPAN_TRAIT(std::is_default_constructible, accessor_type) @@ -160,7 +166,7 @@ class mdspan (MDSPAN_INLINE_FUNCTION constexpr), mdspan, (data_handle_type p, const extents_type& exts), , /* requires */ (_MDSPAN_TRAIT(std::is_default_constructible, accessor_type) && - _MDSPAN_TRAIT(std::is_constructible, mapping_type, extents_type)) + _MDSPAN_TRAIT(std::is_constructible, mapping_type, const extents_type&)) ) : __members(std::move(p), __map_acc_pair_t(mapping_type(exts), accessor_type())) { } @@ -179,10 +185,14 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class OtherElementType, class OtherExtents, class OtherLayoutPolicy, class OtherAccessor, /* requires */ ( - _MDSPAN_TRAIT(std::is_constructible, mapping_type, typename OtherLayoutPolicy::template mapping) && - _MDSPAN_TRAIT(std::is_constructible, accessor_type, OtherAccessor) + _MDSPAN_TRAIT(std::is_constructible, mapping_type, const typename OtherLayoutPolicy::template mapping&) && + _MDSPAN_TRAIT(std::is_constructible, accessor_type, const OtherAccessor&) ) ) + MDSPAN_CONDITIONAL_EXPLICIT( + !_MDSPAN_TRAIT(std::is_convertible, const typename OtherLayoutPolicy::template mapping&, mapping_type) || + !_MDSPAN_TRAIT(std::is_convertible, const OtherAccessor&, accessor_type) + ) MDSPAN_INLINE_FUNCTION constexpr mdspan(const mdspan& other) : __members(other.__ptr_ref(), __map_acc_pair_t(other.__mapping_ref(), other.__accessor_ref())) @@ -226,8 +236,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -240,8 +250,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -271,9 +281,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class... SizeTypes, /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_convertible, SizeTypes, index_type) /* && ... */) && - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeTypes) /* && ... */) && - extents_type::rank() == sizeof...(SizeTypes) + extents_type::rank() == sizeof...(SizeTypes) && + (detail::are_valid_indices()) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -285,8 +294,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -299,8 +308,8 @@ class mdspan MDSPAN_TEMPLATE_REQUIRES( class SizeType, /* requires */ ( - _MDSPAN_TRAIT(std::is_convertible, SizeType, index_type) && - _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, SizeType) + _MDSPAN_TRAIT(std::is_convertible, const SizeType&, index_type) && + _MDSPAN_TRAIT(std::is_nothrow_constructible, index_type, const SizeType&) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -311,7 +320,7 @@ class mdspan #endif // __cpp_lib_span #endif // MDSPAN_USE_PAREN_OPERATOR - MDSPAN_INLINE_FUNCTION constexpr size_t size() const noexcept { + MDSPAN_INLINE_FUNCTION constexpr size_type size() const noexcept { return __impl::__size(*this); }; @@ -346,13 +355,13 @@ class mdspan //-------------------------------------------------------------------------------- // [mdspan.basic.obs], mdspan observers of the mapping - MDSPAN_INLINE_FUNCTION static constexpr bool is_always_unique() noexcept { return mapping_type::is_always_unique(); }; - MDSPAN_INLINE_FUNCTION static constexpr bool is_always_exhaustive() noexcept { return mapping_type::is_always_exhaustive(); }; - MDSPAN_INLINE_FUNCTION static constexpr bool is_always_strided() noexcept { return mapping_type::is_always_strided(); }; + MDSPAN_INLINE_FUNCTION static constexpr bool is_always_unique() { return mapping_type::is_always_unique(); }; + MDSPAN_INLINE_FUNCTION static constexpr bool is_always_exhaustive() { return mapping_type::is_always_exhaustive(); }; + MDSPAN_INLINE_FUNCTION static constexpr bool is_always_strided() { return mapping_type::is_always_strided(); }; - MDSPAN_INLINE_FUNCTION constexpr bool is_unique() const noexcept { return __mapping_ref().is_unique(); }; - MDSPAN_INLINE_FUNCTION constexpr bool is_exhaustive() const noexcept { return __mapping_ref().is_exhaustive(); }; - MDSPAN_INLINE_FUNCTION constexpr bool is_strided() const noexcept { return __mapping_ref().is_strided(); }; + MDSPAN_INLINE_FUNCTION constexpr bool is_unique() const { return __mapping_ref().is_unique(); }; + MDSPAN_INLINE_FUNCTION constexpr bool is_exhaustive() const { return __mapping_ref().is_exhaustive(); }; + MDSPAN_INLINE_FUNCTION constexpr bool is_strided() const { return __mapping_ref().is_strided(); }; MDSPAN_INLINE_FUNCTION constexpr index_type stride(size_t r) const { return __mapping_ref().stride(r); }; private: @@ -374,7 +383,7 @@ class mdspan #if defined(_MDSPAN_USE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION) MDSPAN_TEMPLATE_REQUIRES( class ElementType, class... SizeTypes, - /* requires */ _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_integral, SizeTypes) /* && ... */) && + /* requires */ _MDSPAN_FOLD_AND(_MDSPAN_TRAIT(std::is_convertible, SizeTypes, size_t) /* && ... */) && (sizeof...(SizeTypes) > 0) ) MDSPAN_DEDUCTION_GUIDE explicit mdspan(ElementType*, SizeTypes...) diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p1684_bits/mdarray.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p1684_bits/mdarray.hpp index 3950273a83d..bdc5925f715 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p1684_bits/mdarray.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p1684_bits/mdarray.hpp @@ -103,8 +103,8 @@ class mdarray { MDSPAN_TEMPLATE_REQUIRES( class... SizeTypes, /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT( std::is_convertible, SizeTypes, index_type) /* && ... */) && - _MDSPAN_TRAIT( std::is_constructible, extents_type, SizeTypes...) && + (::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::are_valid_indices()) && + _MDSPAN_TRAIT( std::is_constructible, extents_type, SizeTypes...) && _MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type) && (_MDSPAN_TRAIT( std::is_constructible, container_type, size_t) || container_is_array::value) && @@ -133,61 +133,29 @@ class mdarray { ) : map_(m), ctr_(container_is_array::construct(map_)) { } - // Constructors from container - MDSPAN_TEMPLATE_REQUIRES( - class... SizeTypes, - /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT( std::is_convertible, SizeTypes, index_type) /* && ... */) && - _MDSPAN_TRAIT( std::is_constructible, extents_type, SizeTypes...) && - _MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type) - ) - ) - MDSPAN_INLINE_FUNCTION - explicit constexpr mdarray(const container_type& ctr, SizeTypes... dynamic_extents) - : map_(extents_type(dynamic_extents...)), ctr_(ctr) - { assert(ctr.size() >= static_cast(map_.required_span_size())); } - - MDSPAN_FUNCTION_REQUIRES( (MDSPAN_INLINE_FUNCTION constexpr), - mdarray, (const container_type& ctr, const extents_type& exts), , + mdarray, (const extents_type& exts, const container_type& ctr), , /* requires */ (_MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type)) ) : map_(exts), ctr_(ctr) { assert(ctr.size() >= static_cast(map_.required_span_size())); } - constexpr mdarray(const container_type& ctr, const mapping_type& m) + constexpr mdarray(const mapping_type& m, const container_type& ctr) : map_(m), ctr_(ctr) { assert(ctr.size() >= static_cast(map_.required_span_size())); } - - // Constructors from container - MDSPAN_TEMPLATE_REQUIRES( - class... SizeTypes, - /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT( std::is_convertible, SizeTypes, index_type) /* && ... */) && - _MDSPAN_TRAIT( std::is_constructible, extents_type, SizeTypes...) && - _MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type) - ) - ) - MDSPAN_INLINE_FUNCTION - explicit constexpr mdarray(container_type&& ctr, SizeTypes... dynamic_extents) - : map_(extents_type(dynamic_extents...)), ctr_(std::move(ctr)) - { assert(ctr_.size() >= static_cast(map_.required_span_size())); } - - MDSPAN_FUNCTION_REQUIRES( (MDSPAN_INLINE_FUNCTION constexpr), - mdarray, (container_type&& ctr, const extents_type& exts), , + mdarray, (const extents_type& exts, container_type&& ctr), , /* requires */ (_MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type)) ) : map_(exts), ctr_(std::move(ctr)) { assert(ctr_.size() >= static_cast(map_.required_span_size())); } - constexpr mdarray(container_type&& ctr, const mapping_type& m) + constexpr mdarray(const mapping_type& m, container_type&& ctr) : map_(m), ctr_(std::move(ctr)) { assert(ctr_.size() >= static_cast(map_.required_span_size())); } - MDSPAN_TEMPLATE_REQUIRES( class OtherElementType, class OtherExtents, class OtherLayoutPolicy, class OtherContainer, /* requires */ ( @@ -229,7 +197,7 @@ class mdarray { _MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type)) ) MDSPAN_INLINE_FUNCTION - constexpr mdarray(const container_type& ctr, const extents_type& exts, const Alloc& a) + constexpr mdarray(const extents_type& exts, const container_type& ctr, const Alloc& a) : map_(exts), ctr_(ctr, a) { assert(ctr_.size() >= static_cast(map_.required_span_size())); } @@ -238,7 +206,7 @@ class mdarray { /* requires */ (_MDSPAN_TRAIT( std::is_constructible, container_type, size_t, Alloc)) ) MDSPAN_INLINE_FUNCTION - constexpr mdarray(const container_type& ctr, const mapping_type& map, const Alloc& a) + constexpr mdarray(const mapping_type& map, const container_type& ctr, const Alloc& a) : map_(map), ctr_(ctr, a) { assert(ctr_.size() >= static_cast(map_.required_span_size())); } @@ -248,7 +216,7 @@ class mdarray { _MDSPAN_TRAIT( std::is_constructible, mapping_type, extents_type)) ) MDSPAN_INLINE_FUNCTION - constexpr mdarray(container_type&& ctr, const extents_type& exts, const Alloc& a) + constexpr mdarray(const extents_type& exts, container_type&& ctr, const Alloc& a) : map_(exts), ctr_(std::move(ctr), a) { assert(ctr_.size() >= static_cast(map_.required_span_size())); } @@ -257,7 +225,7 @@ class mdarray { /* requires */ (_MDSPAN_TRAIT( std::is_constructible, container_type, size_t, Alloc)) ) MDSPAN_INLINE_FUNCTION - constexpr mdarray(container_type&& ctr, const mapping_type& map, const Alloc& a) + constexpr mdarray(const mapping_type& map, container_type&& ctr, const Alloc& a) : map_(map), ctr_(std::move(ctr), a) { assert(ctr_.size() >= map_.required_span_size()); } @@ -344,8 +312,8 @@ class mdarray { MDSPAN_TEMPLATE_REQUIRES( class... SizeTypes, /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT( std::is_convertible, SizeTypes, index_type) /* && ... */) && - extents_type::rank() == sizeof...(SizeTypes) + (::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::are_valid_indices()) && + extents_type::rank() == sizeof...(SizeTypes) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -356,8 +324,8 @@ class mdarray { MDSPAN_TEMPLATE_REQUIRES( class... SizeTypes, /* requires */ ( - _MDSPAN_FOLD_AND(_MDSPAN_TRAIT( std::is_convertible, SizeTypes, index_type) /* && ... */) && - extents_type::rank() == sizeof...(SizeTypes) + (::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::are_valid_indices()) && + extents_type::rank() == sizeof...(SizeTypes) ) ) MDSPAN_FORCE_INLINE_FUNCTION @@ -433,8 +401,9 @@ class mdarray { class OtherElementType, class OtherExtents, class OtherLayoutType, class OtherAccessorType, /* requires */ ( - _MDSPAN_TRAIT(std::is_assignable, mdspan_type, - mdspan) + _MDSPAN_TRAIT(std::is_assignable, + mdspan, + mdspan_type) ) ) constexpr operator mdspan () { @@ -445,8 +414,9 @@ class mdarray { class OtherElementType, class OtherExtents, class OtherLayoutType, class OtherAccessorType, /* requires */ ( - _MDSPAN_TRAIT(std::is_assignable, const_mdspan_type, - mdspan) + _MDSPAN_TRAIT(std::is_assignable, + mdspan, + const_mdspan_type) ) ) constexpr operator mdspan () const { diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/strided_slice.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/strided_slice.hpp index 58f38620ba1..89ba8202fb1 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/strided_slice.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/strided_slice.hpp @@ -20,7 +20,6 @@ #include namespace MDSPAN_IMPL_STANDARD_NAMESPACE { -namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { namespace { template @@ -29,6 +28,7 @@ namespace { template struct __mdspan_is_integral_constant>: std::true_type {}; } + // Slice Specifier allowing for strides and compile time extent template struct strided_slice { @@ -36,14 +36,13 @@ struct strided_slice { using extent_type = ExtentType; using stride_type = StrideType; - OffsetType offset; - ExtentType extent; - StrideType stride; + _MDSPAN_NO_UNIQUE_ADDRESS OffsetType offset{}; + _MDSPAN_NO_UNIQUE_ADDRESS ExtentType extent{}; + _MDSPAN_NO_UNIQUE_ADDRESS StrideType stride{}; static_assert(std::is_integral_v || __mdspan_is_integral_constant::value); static_assert(std::is_integral_v || __mdspan_is_integral_constant::value); static_assert(std::is_integral_v || __mdspan_is_integral_constant::value); }; -} // MDSPAN_IMPL_PROPOSED_NAMESPACE } // MDSPAN_IMPL_STANDARD_NAMESPACE diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan.hpp index b9672b7f9ac..abddd0b59df 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan.hpp @@ -20,23 +20,21 @@ #include "submdspan_mapping.hpp" namespace MDSPAN_IMPL_STANDARD_NAMESPACE { -namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { template MDSPAN_INLINE_FUNCTION constexpr auto submdspan(const mdspan &src, SliceSpecifiers... slices) { - const auto sub_mapping_offset = submdspan_mapping(src.mapping(), slices...); + const auto sub_submdspan_mapping_result = submdspan_mapping(src.mapping(), slices...); // NVCC has a problem with the deduction so lets figure out the type - using sub_mapping_t = std::remove_cv_t; + using sub_mapping_t = std::remove_cv_t; using sub_extents_t = typename sub_mapping_t::extents_type; using sub_layout_t = typename sub_mapping_t::layout_type; using sub_accessor_t = typename AccessorPolicy::offset_policy; return mdspan( - src.accessor().offset(src.data_handle(), sub_mapping_offset.offset), - sub_mapping_offset.mapping, + src.accessor().offset(src.data_handle(), sub_submdspan_mapping_result.offset), + sub_submdspan_mapping_result.mapping, sub_accessor_t(src.accessor())); } -} // namespace MDSPAN_IMPL_PROPOSED_NAMESPACE } // namespace MDSPAN_IMPL_STANDARD_NAMESPACE diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_extents.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_extents.hpp index f56ce023f16..c3b2f78fb99 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_extents.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_extents.hpp @@ -20,7 +20,6 @@ #include "strided_slice.hpp" namespace MDSPAN_IMPL_STANDARD_NAMESPACE { -namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { namespace detail { // Mapping from submapping ranks to srcmapping ranks @@ -319,5 +318,4 @@ constexpr auto submdspan_extents(const extents &src_exts, return detail::extents_constructor::next_extent( src_exts, slices...); } -} // namespace MDSPAN_IMPL_PROPOSED_NAMESPACE } // namespace MDSPAN_IMPL_STANDARD_NAMESPACE diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_mapping.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_mapping.hpp index 48778d57e75..ca6948c9a9f 100644 --- a/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_mapping.hpp +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2630_bits/submdspan_mapping.hpp @@ -22,21 +22,15 @@ #include // index_sequence namespace MDSPAN_IMPL_STANDARD_NAMESPACE { -namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { //****************************************** // Return type of submdspan_mapping overloads //****************************************** -template struct mapping_offset { - Mapping mapping; +template struct submdspan_mapping_result { + _MDSPAN_NO_UNIQUE_ADDRESS LayoutMapping mapping{}; size_t offset; }; -} // namespace MDSPAN_IMPL_PROPOSED_NAMESPACE namespace detail { -using MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::first_of; -using MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::stride_of; -using MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::inv_map_rank; - // constructs sub strides template MDSPAN_INLINE_FUNCTION @@ -98,17 +92,15 @@ struct preserve_layout_left_mapping, SubRank, #pragma diag_suppress = implicit_return_from_non_void_function #endif // Actual submdspan mapping call -template +template +template MDSPAN_INLINE_FUNCTION constexpr auto -submdspan_mapping(const layout_left::mapping &src_mapping, - SliceSpecifiers... slices) { - using MDSPAN_IMPL_PROPOSED_NAMESPACE::submdspan_extents; - using MDSPAN_IMPL_PROPOSED_NAMESPACE::mapping_offset; +layout_left::mapping::submdspan_mapping_impl(SliceSpecifiers... slices) const { // compute sub extents using src_ext_t = Extents; - auto dst_ext = submdspan_extents(src_mapping.extents(), slices...); + auto dst_ext = submdspan_extents(extents(), slices...); using dst_ext_t = decltype(dst_ext); // figure out sub layout type @@ -121,18 +113,18 @@ submdspan_mapping(const layout_left::mapping &src_mapping, if constexpr (std::is_same_v) { // layout_left case - return mapping_offset{ + return submdspan_mapping_result{ dst_mapping_t(dst_ext), - static_cast(src_mapping(detail::first_of(slices)...))}; + static_cast(this->operator()(detail::first_of(slices)...))}; } else { // layout_stride case auto inv_map = detail::inv_map_rank( std::integral_constant(), std::index_sequence<>(), slices...); - return mapping_offset{ + return submdspan_mapping_result{ dst_mapping_t(dst_ext, detail::construct_sub_strides( - src_mapping, inv_map, + *this, inv_map, // HIP needs deduction guides to have markups so we need to be explicit // NVCC 11.0 has a bug with deduction guide here, tested that 11.2 does not have the issue #if defined(_MDSPAN_HAS_HIP) || (defined(__NVCC__) && (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__ * 10) < 1120) @@ -140,7 +132,7 @@ submdspan_mapping(const layout_left::mapping &src_mapping, #else std::tuple{detail::stride_of(slices)...})), #endif - static_cast(src_mapping(detail::first_of(slices)...))}; + static_cast(this->operator()(detail::first_of(slices)...))}; } #if defined(__NVCC__) && !defined(__CUDA_ARCH__) && defined(__GNUC__) __builtin_unreachable(); @@ -207,17 +199,15 @@ struct preserve_layout_right_mapping, SubRank, #pragma diagnostic push #pragma diag_suppress = implicit_return_from_non_void_function #endif -template +template +template MDSPAN_INLINE_FUNCTION constexpr auto -submdspan_mapping(const layout_right::mapping &src_mapping, - SliceSpecifiers... slices) { - using MDSPAN_IMPL_PROPOSED_NAMESPACE::submdspan_extents; - using MDSPAN_IMPL_PROPOSED_NAMESPACE::mapping_offset; - +layout_right::mapping::submdspan_mapping_impl( + SliceSpecifiers... slices) const { // get sub extents using src_ext_t = Extents; - auto dst_ext = submdspan_extents(src_mapping.extents(), slices...); + auto dst_ext = submdspan_extents(extents(), slices...); using dst_ext_t = decltype(dst_ext); // determine new layout type @@ -230,18 +220,18 @@ submdspan_mapping(const layout_right::mapping &src_mapping, if constexpr (std::is_same_v) { // layout_right case - return mapping_offset{ + return submdspan_mapping_result{ dst_mapping_t(dst_ext), - static_cast(src_mapping(detail::first_of(slices)...))}; + static_cast(this->operator()(detail::first_of(slices)...))}; } else { // layout_stride case auto inv_map = detail::inv_map_rank( std::integral_constant(), std::index_sequence<>(), slices...); - return mapping_offset{ + return submdspan_mapping_result{ dst_mapping_t(dst_ext, detail::construct_sub_strides( - src_mapping, inv_map, + *this, inv_map, // HIP needs deduction guides to have markups so we need to be explicit // NVCC 11.0 has a bug with deduction guide here, tested that 11.2 does not have the issue #if defined(_MDSPAN_HAS_HIP) || (defined(__NVCC__) && (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__ * 10) < 1120) @@ -249,7 +239,7 @@ submdspan_mapping(const layout_right::mapping &src_mapping, #else std::tuple{detail::stride_of(slices)...})), #endif - static_cast(src_mapping(detail::first_of(slices)...))}; + static_cast(this->operator()(detail::first_of(slices)...))}; } #if defined(__NVCC__) && !defined(__CUDA_ARCH__) && defined(__GNUC__) __builtin_unreachable(); @@ -270,23 +260,22 @@ submdspan_mapping(const layout_right::mapping &src_mapping, //********************************** // layout_stride submdspan_mapping //********************************* -template +template +template MDSPAN_INLINE_FUNCTION constexpr auto -submdspan_mapping(const layout_stride::mapping &src_mapping, - SliceSpecifiers... slices) { - using MDSPAN_IMPL_PROPOSED_NAMESPACE::submdspan_extents; - using MDSPAN_IMPL_PROPOSED_NAMESPACE::mapping_offset; - auto dst_ext = submdspan_extents(src_mapping.extents(), slices...); +layout_stride::mapping::submdspan_mapping_impl( + SliceSpecifiers... slices) const { + auto dst_ext = submdspan_extents(extents(), slices...); using dst_ext_t = decltype(dst_ext); auto inv_map = detail::inv_map_rank( std::integral_constant(), std::index_sequence<>(), slices...); using dst_mapping_t = typename layout_stride::template mapping; - return mapping_offset{ + return submdspan_mapping_result{ dst_mapping_t(dst_ext, detail::construct_sub_strides( - src_mapping, inv_map, + *this, inv_map, // HIP needs deduction guides to have markups so we need to be explicit // NVCC 11.0 has a bug with deduction guide here, tested that 11.2 does not have the issue #if defined(_MDSPAN_HAS_HIP) || (defined(__NVCC__) && (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__ * 10) < 1120) @@ -294,6 +283,7 @@ submdspan_mapping(const layout_stride::mapping &src_mapping, #else std::tuple(detail::stride_of(slices)...))), #endif - static_cast(src_mapping(detail::first_of(slices)...))}; + static_cast(this->operator()(detail::first_of(slices)...))}; } + } // namespace MDSPAN_IMPL_STANDARD_NAMESPACE diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded.hpp new file mode 100644 index 00000000000..a8014867923 --- /dev/null +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded.hpp @@ -0,0 +1,793 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER +#pragma once + +#include +#include "layout_padded_fwd.hpp" +#include "../__p0009_bits/dynamic_extent.hpp" +#include "../__p0009_bits/extents.hpp" +#include "../__p0009_bits/mdspan.hpp" +#include "../__p0009_bits/layout_left.hpp" +#include "../__p0009_bits/layout_right.hpp" +#include "../__p0009_bits/layout_stride.hpp" + +namespace MDSPAN_IMPL_STANDARD_NAMESPACE { +namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { + +namespace detail { +template +MDSPAN_INLINE_FUNCTION +constexpr _T +find_next_multiple(_T alignment, _T offset) +{ + if ( alignment == 0 ) { + return _T(0); + } else { + return ( ( offset + alignment - 1 ) / alignment) * alignment; + } +} + +template +MDSPAN_INLINE_FUNCTION constexpr size_t get_actual_static_padding_value() { + constexpr auto rank = _ExtentsType::rank(); + + if constexpr (rank <= typename _ExtentsType::rank_type(1)) { + return 0; + } else if constexpr (_PaddingValue != dynamic_extent && + _ExtentsType::static_extent(_ExtentToPadIdx) != + dynamic_extent) { + static_assert( + (_PaddingValue != 0) || + (_ExtentsType::static_extent(_ExtentToPadIdx) == 0), + "padding stride can be 0 only if " + "extents_type::static_extent(extent-to-pad) is 0 or dynamic_extent"); + return find_next_multiple(_PaddingValue, + _ExtentsType::static_extent(_ExtentToPadIdx)); + } else { + return dynamic_extent; + } +} + +template +struct static_array_type_for_padded_extent +{ + static constexpr size_t padding_value = _PaddingValue; + using index_type = typename _Extents::index_type; + using extents_type = _Extents; + using type = ::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::maybe_static_array< + index_type, size_t, dynamic_extent, + detail::get_actual_static_padding_value()>; +}; + +template +struct static_array_type_for_padded_extent<_PaddingValue, _Extents, + _ExtentToPadIdx, Rank, std::enable_if_t> { + using index_type = typename _Extents::index_type; + using extents_type = _Extents; + using type = + ::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::maybe_static_array< + index_type, size_t, dynamic_extent, 0>; +}; + +template +struct padded_extent { + static constexpr size_t padding_value = _PaddingValue; + using index_type = typename _Extents::index_type; + using extents_type = _Extents; + using static_array_type = typename static_array_type_for_padded_extent< + padding_value, _Extents, _ExtentToPadIdx, _Extents::rank()>::type; + + static constexpr auto static_value() { return static_array_type::static_value(0); } + + MDSPAN_INLINE_FUNCTION + static constexpr static_array_type + init_padding(const _Extents &exts) { + if constexpr ((_Extents::rank() > 1) && (padding_value == dynamic_extent)) { + return {exts.extent(_ExtentToPadIdx)}; + } else { + return init_padding(exts, padding_value); + } + } + + MDSPAN_INLINE_FUNCTION static constexpr static_array_type + init_padding([[maybe_unused]] const _Extents &exts, + [[maybe_unused]] index_type pv) { + if constexpr (_Extents::rank() > 1) { + return {find_next_multiple(pv, + exts.extent(_ExtentToPadIdx))}; + } else { + return {}; + } + } + + template + MDSPAN_INLINE_FUNCTION static constexpr static_array_type + init_padding([[maybe_unused]] const _Mapping &other_mapping, + std::integral_constant) { + if constexpr (_Extents::rank() > 1) { + return {other_mapping.stride(_PaddingStrideIdx)}; + } else { + return {}; + } + } +}; +} // namespace detail + +template +template +class layout_left_padded::mapping { +public: + static constexpr size_t padding_value = PaddingValue; + + using extents_type = Extents; + using index_type = typename extents_type::index_type; + using size_type = typename extents_type::size_type; + using rank_type = typename extents_type::rank_type; + using layout_type = layout_left_padded; + +#ifndef MDSPAN_INTERNAL_TEST +private: +#endif // MDSPAN_INTERNAL_TEST + + static constexpr rank_type padded_stride_idx = detail::layout_padded_constants::padded_stride_idx; + static constexpr rank_type extent_to_pad_idx = detail::layout_padded_constants::extent_to_pad_idx; + + static_assert((padding_value != 0) + || (extents_type::static_extent(extent_to_pad_idx) == 0) + || (extents_type::static_extent(extent_to_pad_idx) == dynamic_extent), + "out of bounds access for rank 0"); + + using padded_stride_type = detail::padded_extent< padding_value, extents_type, extent_to_pad_idx >; + + static constexpr size_t static_padding_stride = padded_stride_type::static_value(); + + typename padded_stride_type::static_array_type padded_stride = {}; + extents_type exts = {}; + + constexpr index_type compute_offset(std::index_sequence<>) const { + return 0; + } + + template + constexpr index_type compute_offset(std::index_sequence, + IndexOffset index_offset) const { + return index_offset; + } + + template + constexpr index_type compute_offset(std::index_sequence, + IndexOffsets... index_offsets) const { + index_type indices[] = {static_cast(index_offsets)...}; + // self-recursive fold trick from + // https://github.com/llvm/llvm-project/blob/96e1914aa2e6d8966acbfbe2f4d184201f1aa318/libcxx/include/mdspan/layout_left.h#L144 + index_type res = 0; + ((res = indices[extents_type::rank() - 1 - Ranks] + + ((extents_type::rank() - 1 - Ranks) == extent_to_pad_idx + ? padded_stride.value(0) + : exts.extent(extents_type::rank() - 1 - Ranks)) * + res), + ...); + return res; + } + +public: +#if !MDSPAN_HAS_CXX_20 + MDSPAN_INLINE_FUNCTION_DEFAULTED + constexpr mapping() + : mapping(extents_type{}) + {} +#else + MDSPAN_INLINE_FUNCTION_DEFAULTED + constexpr mapping() + requires(static_padding_stride != dynamic_extent) = default; + + MDSPAN_INLINE_FUNCTION + constexpr mapping() + requires(static_padding_stride == dynamic_extent) + : mapping(extents_type{}) + {} +#endif + + MDSPAN_INLINE_FUNCTION_DEFAULTED constexpr mapping(const mapping&) noexcept = default; + MDSPAN_INLINE_FUNCTION_DEFAULTED mapping& operator=(const mapping&) noexcept = default; + + /** + * Initializes the mapping with the given extents. + * + * \param ext the given extents + */ + MDSPAN_INLINE_FUNCTION + constexpr mapping(const extents_type& ext) + : padded_stride(padded_stride_type::init_padding(ext)), exts(ext) + {} + + /** + * Initializes the mapping with the given extents and the specified padding value. + * + * This overload participates in overload resolution only if `is_convertible_v` + * is `true` and `is_nothrow_constructible_v` is `true` + * + * \param ext the given extents + * \param padding_value the padding value + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Size, + /* requires */ ( + std::is_convertible_v<_Size, index_type> + && std::is_nothrow_constructible_v + ) + ) + MDSPAN_INLINE_FUNCTION + constexpr mapping(const extents_type &ext, _Size dynamic_padding_value) + : padded_stride(padded_stride_type::init_padding(ext, dynamic_padding_value)), exts(ext) + { + assert((padding_value == dynamic_extent) || (static_cast(padding_value) == static_cast(dynamic_padding_value))); + } + + /** + * Converting constructor from `layout_left::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true. + * If `OtherExtents::rank() > 1` then one of `padding_value`, `static_extent(0)`, or `OtherExtents::static_extent(0)` must be `dynamic_extent`; + * otherwise, `OtherExtents::static_extent(0)` must be equal to the least multiple of `padding_value` greater than or equal to `extents_type::static_extent(0)` + */ + MDSPAN_TEMPLATE_REQUIRES( + class _OtherExtents, + /* requires */ ( + std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v<_OtherExtents, extents_type>)) + constexpr mapping(const layout_left::mapping<_OtherExtents> &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + { + static_assert((_OtherExtents::rank() > 1) || (static_padding_stride != dynamic_extent) || (_OtherExtents::static_extent(extent_to_pad_idx) != dynamic_extent) + || (static_padding_stride == _OtherExtents::static_extent(extent_to_pad_idx))); + } + + /** + * Converting constructor from `layout_stride::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true + */ + MDSPAN_TEMPLATE_REQUIRES( + class _OtherExtents, + /* requires */ ( + std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((extents_type::rank() > 0)) + constexpr mapping(const layout_stride::mapping<_OtherExtents> &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + { + } + + /** + * Converting constructor from `layout_left_padded::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true. + * Either `padding_value` or `OtherPaddingStride` must be `std::dynamic_extent`, or `padding_value == OtherPaddingStride`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_left_padded_mapping<_Mapping>::value + && std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((extents_type::rank() > 1 && (padding_value == dynamic_extent || _Mapping::padding_value == dynamic_extent))) + constexpr + mapping(const _Mapping &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + { + static_assert(padding_value == dynamic_extent || + _Mapping::padding_value == dynamic_extent || + padding_value == _Mapping::padding_value); + } + + /** + * Converting constructor from `layout_right_padded::mapping`. + * + * This overload participates in overload resolution only if `extents_type::rank()` is 0 or 1 and `is_constructible_v` is `true`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_right_padded_mapping<_Mapping>::value + && extents_type::rank() <= 1 + && std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v)) + constexpr + mapping(const _Mapping &other_mapping) noexcept + : padded_stride(padded_stride_type::init_padding(other_mapping.extents(), other_mapping.extents().extent(extent_to_pad_idx))), + exts(other_mapping.extents()) + {} + + constexpr const extents_type &extents() const noexcept + { + return exts; + } + + constexpr std::array + strides() const noexcept + { + if constexpr ( extents_type::rank() == 0 ) { + return {}; + } else if constexpr ( extents_type::rank() == 1 ) { + return {1}; + } else { + index_type value = 1; + std::array s{}; + s[extent_to_pad_idx] = value; + value *= padded_stride.value(0); + for (rank_type r = extent_to_pad_idx + 1; r < extents_type::rank() - 1; ++r) + { + s[r] = value; + value *= exts.extent(r); + } + s[extents_type::rank() - 1] = value; + return s; + } + } + + constexpr index_type + required_span_size() const noexcept + { + if constexpr ( extents_type::rank() == 0 ) { + return 1; + } else if constexpr ( extents_type::rank() == 1 ) { + return exts.extent(0); + } else { + index_type value = padded_stride.value(0); + for (rank_type r = 1; r < extents_type::rank(); ++r) { + value *= exts.extent(r); + } + return value; + } + } + + /** + * Return the mapping given the provided indices per rank. + * + * This overload participates in overload resolution only if: + * - `sizeof...(Indices) == extents_type::rank()`, + * - `(is_convertible_v && ...) is true`, and + * - (is_nothrow_constructible_v && ...) is true. + */ + MDSPAN_TEMPLATE_REQUIRES( + class... _Indices, + /* requires */ ( + sizeof...(_Indices) == extents_type::rank() && + (::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::are_valid_indices()) + ) + ) + constexpr size_t operator()(_Indices... idxs) const noexcept + { + return compute_offset(std::index_sequence_for<_Indices...>{}, idxs...); + } + + static constexpr bool is_always_unique() noexcept { return true; } + static constexpr bool is_always_exhaustive() noexcept + { + return (extents_type::rank() <= rank_type(1)) + || (extents_type::static_extent(extent_to_pad_idx) != dynamic_extent + && extents_type::static_extent(extent_to_pad_idx) == padded_stride_type::static_value()); + } + static constexpr bool is_always_strided() noexcept { return true; } + + static constexpr bool is_unique() noexcept { return true; } + constexpr bool is_exhaustive() const noexcept + { + return (extents_type::rank() < 2) + || (exts.extent(extent_to_pad_idx) == padded_stride.value(0)); + } + static constexpr bool is_strided() noexcept { return true; } + + constexpr index_type stride(rank_type r) const noexcept + { + assert(r < extents_type::rank()); + if(r == 0) return index_type(1); + + index_type value = padded_stride.value(0); + for (rank_type k = 1; k < r; k++) value *= exts.extent(k); + + return value; + } + + /** + * Equality operator between `layout_left_padded`s + * + * This overload only participates in overload resolution if `OtherExtents::rank() == extents_type::rank()`. + * + * \note There is currently a difference from p2642r2, where this function is specified as taking + * `layout_left_padded< padding_value >::mapping< Extents>`. However, this makes `padding_value` non-deducible. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_left_padded_mapping<_Mapping>::value + && (_Mapping::extents_type::rank() == extents_type::rank()) + ) + ) + friend constexpr bool operator==(const mapping &left, const _Mapping &right) noexcept + { + // Workaround for some compilers not short-circuiting properly with compile-time checks + // i.e. we can't access stride(_padding_stride_idx) of a rank 0 mapping + bool strides_equal = true; + if constexpr (extents_type::rank() > rank_type(1)) + { + strides_equal = left.stride(padded_stride_idx) == right.stride(padded_stride_idx); + } + return (left.extents() == right.extents()) && strides_equal; + } + +#if !MDSPAN_HAS_CXX_20 + /** + * Inequality operator between `layout_left_padded`s + * + * This overload only participates in overload resolution if `OtherExtents::rank() == extents_type::rank()`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_left_padded_mapping<_Mapping>::value + && (_Mapping::extents_type::rank() == extents_type::rank()) + ) + ) + friend constexpr bool operator!=(const mapping &left, const _Mapping &right) noexcept + { + return !(left == right); + } +#endif +}; + +template +template +class layout_right_padded::mapping { +public: + static constexpr size_t padding_value = PaddingValue; + + using extents_type = Extents; + using index_type = typename extents_type::index_type; + using size_type = typename extents_type::size_type; + using rank_type = typename extents_type::rank_type; + using layout_type = layout_right_padded; + +#ifndef MDSPAN_INTERNAL_TEST + private: +#endif // MDSPAN_INTERNAL_TEST + + static constexpr rank_type padded_stride_idx = detail::layout_padded_constants::padded_stride_idx; + static constexpr rank_type extent_to_pad_idx = detail::layout_padded_constants::extent_to_pad_idx; + + static_assert((padding_value != 0) + || (extents_type::static_extent(extent_to_pad_idx) == 0) + || (extents_type::static_extent(extent_to_pad_idx) == dynamic_extent), + "if padding stride is 0, static_extent(extent-to-pad-rank) must also be 0 or dynamic_extent"); + + using padded_stride_type = detail::padded_extent< padding_value, extents_type, extent_to_pad_idx >; + static constexpr size_t static_padding_stride = padded_stride_type::static_value(); + + typename padded_stride_type::static_array_type padded_stride = {}; + extents_type exts = {}; + + constexpr index_type compute_offset(std::index_sequence<>) const { + return 0; + } + + template + constexpr index_type compute_offset(std::index_sequence, + IndexOffset index_offset) const { + return index_offset; + } + + template + constexpr index_type compute_offset(std::index_sequence, + IndexOffsets... index_offsets) const { + // self-recursive fold trick from + // https://github.com/llvm/llvm-project/blob/4d9771741d40cc9cfcccb6b033f43689d36b705a/libcxx/include/mdspan/layout_right.h#L141 + index_type res = 0; + ((res = static_cast(index_offsets) + + (Ranks == extent_to_pad_idx ? padded_stride.value(0) + : exts.extent(Ranks)) * + res), + ...); + return res; + } + +public: +#if !MDSPAN_HAS_CXX_20 + MDSPAN_INLINE_FUNCTION_DEFAULTED + constexpr mapping() + : mapping(extents_type{}) + {} +#else + MDSPAN_INLINE_FUNCTION_DEFAULTED + constexpr mapping() + requires(static_padding_stride != dynamic_extent) = default; + + MDSPAN_INLINE_FUNCTION + constexpr mapping() + requires(static_padding_stride == dynamic_extent) + : mapping(extents_type{}) + {} +#endif + + MDSPAN_INLINE_FUNCTION_DEFAULTED constexpr mapping(const mapping&) noexcept = default; + MDSPAN_INLINE_FUNCTION_DEFAULTED mapping& operator=(const mapping&) noexcept = default; + + /** + * Initializes the mapping with the given extents. + * + * \param ext the given extents + */ + MDSPAN_INLINE_FUNCTION + constexpr mapping(const extents_type &ext) + : padded_stride(padded_stride_type::init_padding(ext)), exts(ext) {} + + /** + * Initializes the mapping with the given extents and the specified padding value. + * + * This overload participates in overload resolution only if `is_convertible_v` + * is `true` and `is_nothrow_constructible_v` is `true` + * + * \param ext the given extents + * \param padding_value the padding value + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Size, + /* requires */ ( + std::is_convertible_v<_Size, index_type> + && std::is_nothrow_constructible_v + ) + ) + MDSPAN_INLINE_FUNCTION + constexpr mapping(const extents_type &ext, _Size dynamic_padding_value) + : padded_stride(padded_stride_type::init_padding(ext, static_cast(dynamic_padding_value))), + exts(ext) { + assert((padding_value == dynamic_extent) || + (static_cast(padding_value) == static_cast(dynamic_padding_value))); + } + + /** + * Converting constructor from `layout_right::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true. + * If `OtherExtents::rank() > 1` then one of `padding_value`, `static_extent(0)`, or `OtherExtents::static_extent(0)` must be `dynamic_extent`; + * otherwise, `OtherExtents::static_extent(0)` must be equal to the least multiple of `padding_value` greater than or equal to `extents_type::static_extent(0)` + */ + MDSPAN_TEMPLATE_REQUIRES( + class _OtherExtents, + /* requires */ ( + std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v<_OtherExtents, extents_type>)) + constexpr mapping(const layout_right::mapping<_OtherExtents> &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + { + static_assert((_OtherExtents::rank() > 1) || (padded_stride_type::static_value() != dynamic_extent) || (_OtherExtents::static_extent(extent_to_pad_idx) != dynamic_extent) + || (padded_stride_type::static_value() == _OtherExtents::static_extent(extent_to_pad_idx))); + } + + /** + * Converting constructor from `layout_stride::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true + */ + MDSPAN_TEMPLATE_REQUIRES( + class _OtherExtents, + /* requires */ ( + std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((extents_type::rank() > 0)) + constexpr mapping(const layout_stride::mapping<_OtherExtents> &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + {} + + /** + * Converting constructor from `layout_right_padded::mapping`. + * + * This overload participates in overload resolution only if `is_constructible_v` is true. + * Either `padding_value` or `OtherPaddingStride` must be `std::dynamic_extent`, or `padding_value == OtherPaddingStride`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_right_padded_mapping<_Mapping>::value + && std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((extents_type::rank() > 1 && + (padding_value == dynamic_extent || + _Mapping::padding_value == dynamic_extent))) + constexpr mapping(const _Mapping &other_mapping) + : padded_stride(padded_stride_type::init_padding(other_mapping, std::integral_constant{})), + exts(other_mapping.extents()) + { + static_assert(padding_value == dynamic_extent || + _Mapping::padding_value == dynamic_extent || + padding_value == _Mapping::padding_value); + } + + /** + * Converting constructor from `layout_left_padded::mapping`. + * + * This overload participates in overload resolution only if `extents_type::rank()` is 0 or 1 and `is_constructible_v` is `true`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_left_padded_mapping<_Mapping>::value + && extents_type::rank() <= 1 + && std::is_constructible_v + ) + ) + MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v)) + constexpr mapping(const _Mapping &other_mapping) noexcept + : padded_stride(padded_stride_type::init_padding(other_mapping.extents(), other_mapping.extents().extent(extent_to_pad_idx))), + exts(other_mapping.extents()) + {} + + constexpr const extents_type &extents() const noexcept + { + return exts; + } + + constexpr std::array + strides() const noexcept + { + if constexpr ( extents_type::rank() == 0 ) { + return {}; + } else if constexpr ( extents_type::rank() == 1 ) { + return {1}; + } else { + index_type value = 1; + std::array s{}; + s[extent_to_pad_idx] = value; + value *= padded_stride.value(0); + for (rank_type r = extent_to_pad_idx - 1; r > 0; --r) + { + s[r] = value; + value *= exts.extent(r); + } + s[0] = value; + return s; + } + } + + constexpr index_type + required_span_size() const noexcept + { + if constexpr ( extents_type::rank() == 0 ) { + return 1; + } else if constexpr ( extents_type::rank() == 1 ) { + return exts.extent(0); + } else { + index_type value = 1; + for (rank_type r = 0; r < extent_to_pad_idx; ++r) + { + value *= exts.extent(r); + } + return value * padded_stride.value(0); + } + } + + /** + * Return the mapping given the provided indices per rank. + * + * This overload participates in overload resolution only if: + * - `sizeof...(Indices) == extents_type::rank()`, + * - `(is_convertible_v && ...) is true`, and + * - (is_nothrow_constructible_v && ...) is true. + */ + MDSPAN_TEMPLATE_REQUIRES( + class... _Indices, + /* requires */ ( + sizeof...(_Indices) == extents_type::rank() && + (::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::are_valid_indices()) + ) + ) + constexpr size_t operator()(_Indices... idxs) const noexcept + { + return compute_offset(std::index_sequence_for<_Indices...>{}, idxs...); + } + + static constexpr bool is_always_unique() noexcept { return true; } + static constexpr bool is_always_exhaustive() noexcept + { + return (extents_type::rank() <= rank_type(1)) + || (extents_type::static_extent(extent_to_pad_idx) != dynamic_extent + && extents_type::static_extent(extent_to_pad_idx) == padded_stride_type::static_value()); + } + static constexpr bool is_always_strided() noexcept { return true; } + + static constexpr bool is_unique() noexcept { return true; } + constexpr bool is_exhaustive() const noexcept + { + return (extents_type::rank() < 2) + || (exts.extent(extent_to_pad_idx) == padded_stride.value(0)); + } + static constexpr bool is_strided() noexcept { return true; } + + constexpr index_type stride(rank_type r) const noexcept + { + assert(r < extents_type::rank()); + if(r == extents_type::rank() - 1) return index_type(1); + + index_type value = padded_stride.value(0); + for (rank_type k = extents_type::rank() - 2; k > r; k--) value *= exts.extent(k); + + return value; + } + + /** + * Equality operator between `layout_right_padded`s + * + * This overload only participates in overload resolution if `OtherExtents::rank() == extents_type::rank()`. + * + * \note There is currently a difference from p2642r2, where this function is specified as taking + * `layout_right_padded< padding_value >::mapping< Extents>`. However, this makes `padding_value` non-deducible. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_right_padded_mapping<_Mapping>::value + && (_Mapping::extents_type::rank() == extents_type::rank()) + ) + ) + friend constexpr bool operator==(const mapping &left, const _Mapping &right) noexcept + { + // Workaround for some compilers not short-circuiting properly with compile-time checks + // i.e. we can't access stride(_padding_stride_idx) of a rank 0 mapping + bool strides_equal = true; + if constexpr (extents_type::rank() > rank_type(1)) + { + strides_equal = left.stride(padded_stride_idx) == right.stride(padded_stride_idx); + } + return (left.extents() == right.extents()) && strides_equal; + } + +#if !MDSPAN_HAS_CXX_20 + /** + * Inequality operator between `layout_right_padded`s + * + * This overload only participates in overload resolution if `OtherExtents::rank() == extents_type::rank()`. + */ + MDSPAN_TEMPLATE_REQUIRES( + class _Mapping, + /* requires */ ( + detail::is_layout_right_padded_mapping<_Mapping>::value + && (_Mapping::extents_type::rank() == extents_type::rank()) + ) + ) + friend constexpr bool operator!=(const mapping &left, const _Mapping &right) noexcept + { + return !(left == right); + } +#endif +}; +} +} diff --git a/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded_fwd.hpp b/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded_fwd.hpp new file mode 100644 index 00000000000..945f091a2dc --- /dev/null +++ b/lib/kokkos/tpls/mdspan/include/experimental/__p2642_bits/layout_padded_fwd.hpp @@ -0,0 +1,117 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER +#pragma once + +#include +#include "../__p0009_bits/dynamic_extent.hpp" + +namespace MDSPAN_IMPL_STANDARD_NAMESPACE { +namespace MDSPAN_IMPL_PROPOSED_NAMESPACE { + +template +struct layout_left_padded { + template + class mapping; +}; + +template +struct layout_right_padded { + template + class mapping; +}; + +namespace detail { +// The layout_padded_constants structs are only useful if rank > 1, otherwise they may wrap +template +struct layout_padded_constants; + +template +struct layout_padded_constants, _ExtentsType> +{ + using rank_type = typename _ExtentsType::rank_type; + static constexpr rank_type padded_stride_idx = 1; + static constexpr rank_type extent_to_pad_idx = 0; +}; + +template +struct layout_padded_constants, _ExtentsType> +{ + using rank_type = typename _ExtentsType::rank_type; + static constexpr rank_type padded_stride_idx = _ExtentsType::rank() - 2; + static constexpr rank_type extent_to_pad_idx = _ExtentsType::rank() - 1; +}; + +template +struct is_layout_left_padded : std::false_type {}; + +template +struct is_layout_left_padded> : std::true_type {}; + +template +struct is_layout_left_padded_mapping : std::false_type {}; + +template +struct is_layout_left_padded_mapping<_Mapping, + std::enable_if_t::template mapping>::value>> + : std::true_type {}; + +template +struct is_layout_right_padded : std::false_type {}; + +template +struct is_layout_right_padded> : std::true_type {}; + +template +struct is_layout_right_padded_mapping : std::false_type {}; + +template +struct is_layout_right_padded_mapping<_Mapping, + std::enable_if_t::template mapping>::value>> + : std::true_type {}; + +template +constexpr void check_padded_layout_converting_constructor_mandates() +{ + if constexpr (_LayoutExtentsType::rank() > 1) { + using extents_type = typename _PaddedLayoutMappingType::extents_type; + constexpr auto padding_value = _PaddedLayoutMappingType::padding_value; + constexpr auto idx = layout_padded_constants::extent_to_pad_idx; + if constexpr ((_LayoutExtentsType::static_extent(idx) != dynamic_extent) && + (extents_type::static_extent(idx) != dynamic_extent) && + (padding_value != dynamic_extent)) { + if constexpr (padding_value == 0) { + static_assert(_LayoutExtentsType::static_extent(idx) == 0); + } else { + static_assert( + _LayoutExtentsType::static_extent(idx) % padding_value == 0); + } + } + } +} + +template +constexpr void check_padded_layout_converting_constructor_preconditions([[maybe_unused]] const _OtherMapping &other_mapping) { + if constexpr (_ExtentsType::rank() > 1) { + constexpr auto padded_stride_idx = + layout_padded_constants::padded_stride_idx; + constexpr auto extent_to_pad_idx = layout_padded_constants::extent_to_pad_idx; + assert(other_mapping.stride(padded_stride_idx) == other_mapping.extents().extent(extent_to_pad_idx)); + } +} +} +} +} diff --git a/lib/kokkos/tpls/mdspan/include/mdspan/mdspan.hpp b/lib/kokkos/tpls/mdspan/include/mdspan/mdspan.hpp index b440873526a..ac72a1a4e64 100644 --- a/lib/kokkos/tpls/mdspan/include/mdspan/mdspan.hpp +++ b/lib/kokkos/tpls/mdspan/include/mdspan/mdspan.hpp @@ -35,6 +35,7 @@ #include "../experimental/__p0009_bits/layout_right.hpp" #include "../experimental/__p0009_bits/macros.hpp" #if MDSPAN_HAS_CXX_17 +#include "../experimental/__p2642_bits/layout_padded.hpp" #include "../experimental/__p2630_bits/submdspan.hpp" #endif diff --git a/lib/mdi/Install.py b/lib/mdi/Install.py index 316313ded8d..c455f2d0643 100644 --- a/lib/mdi/Install.py +++ b/lib/mdi/Install.py @@ -32,7 +32,7 @@ # settings -version = "1.4.16" +version = "1.4.26" url = "https://github.com/MolSSI-MDI/MDI_Library/archive/v%s.tar.gz" % version # known checksums for different MDI versions. used to validate the download. @@ -41,6 +41,7 @@ '1.4.12' : '7a222353ae8e03961d5365e6cd48baee', \ '1.4.14' : '7a059bb12535360fdcb7de8402f9a0fc', \ '1.4.16' : '407db44e2d79447ab5c1233af1965f65', \ + '1.4.26' : '3124bb85259471e2a53a891f04bf697a', \ } # print error message or help diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 9c42da40899..4a158cb31f3 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -17,17 +17,17 @@ # settings -version = "2.8.2" +version = "2.8.3" mode = "static" # help message HELP = """ Syntax from src dir: make lib-plumed args="-b" - or: make lib-plumed args="-b -v 2.8.2" + or: make lib-plumed args="-b -v 2.8.3" or: make lib-plumed args="-p /usr/local/plumed2 -m shared" -Syntax from lib dir: python Install.py -b -v 2.8.2 +Syntax from lib dir: python Install.py -b -v 2.8.3 or: python Install.py -b or: python Install.py -p /usr/local/plumed2 -m shared @@ -45,6 +45,8 @@ '2.7.6' : 'fb8c0ec10f97a9353eb123a5c4c35aa6', \ '2.8.1' : '6bfe72ebdae63dc38a9ca27d9b0e08f8', \ '2.8.2' : '599092b6a0aa6fff992612537ad98994', \ + '2.8.3' : '76d23cd394eba9e6530316ed1184e219', \ + '2.9.0' : '661eabeebee05cf84bbf9dc23d7d5f46', \ } # parse and process arguments diff --git a/potentials/HGa.msmeam b/potentials/HGa.msmeam index 9f01501c163..1f84d0f8a57 100644 --- a/potentials/HGa.msmeam +++ b/potentials/HGa.msmeam @@ -1,29 +1,29 @@ bkgd_dyn = 1 emb_lin_neg = 1 -augt1=0 -ialloy=1 -rc = 5.9 +augt1=0 +ialloy=1 +rc = 5.9 #H -attrac(1,1)=0.460 -repuls(1,1)=0.460 +attrac(1,1)=0.460 +repuls(1,1)=0.460 Cmin(1,1,1)=1.3 # PuMS -Cmax(1,1,1)= 2.80 +Cmax(1,1,1)= 2.80 nn2(1,1)=1 #Ga rho0(2) = 0.6 -attrac(2,2)=0.097 -repuls(2,2)=0.097 +attrac(2,2)=0.097 +repuls(2,2)=0.097 nn2(2,2)=1 #HGa -attrac(1,2)=0.300 -repuls(1,2)=0.300 -lattce(1,2)=l12 -re(1,2)=3.19 -delta(1,2)=-0.48 -alpha(1,2)=6.6 -Cmin(1,1,2)=2.0 -Cmin(2,1,2)= 2.0 -Cmin(1,2,1)=2.0 +attrac(1,2)=0.300 +repuls(1,2)=0.300 +lattce(1,2)=l12 +re(1,2)=3.19 +delta(1,2)=-0.48 +alpha(1,2)=6.6 +Cmin(1,1,2)=2.0 +Cmin(2,1,2)= 2.0 +Cmin(1,2,1)=2.0 Cmin(2,2,1) = 1.4 Cmin(1,2,2) = 1.4 Cmin(1,1,2) = 1.4 diff --git a/potentials/MoS.rebomos b/potentials/MoS.rebomos new file mode 100644 index 00000000000..ea96981a1e4 --- /dev/null +++ b/potentials/MoS.rebomos @@ -0,0 +1,65 @@ +# DATE: 2013-11-04 UNITS: metal CONTRIBUTOR: J Stewart, K Dang, D Spearot (UArk) CITATION: Stewart J A and Spearot D E, Modelling Simul. Mater. Sci. Eng. 21. +# MoS-S REBO Brenner/Sinnot Potential as published in +# Liang T, Phillpot S R and Sinnott S B (2009) Phys. Rev. B79 245110, Erratum: Phys. Rev. B85 199903(E). + +3.50 rcmin_MM +2.75 rcmin_MS +2.30 rcmin_SS +3.80 rcmax_MM +3.05 rcmax_MS +3.00 rcmax_SS +3.419129390005910 Q_MM +1.505537839153790 Q_MS +0.254959104053671 Q_SS +1.07500712999340 alpha_MM +1.19267902218820 alpha_MS +1.10775022439715 alpha_SS +179.008013654688 A_MM +575.509677721866 A_MS +1228.43233679426 A_SS +706.247903589221 BIJc_MM1 +1344.46820036159 BIJc_MS1 +1498.64815404145 BIJc_SS1 +1.16100322369589 Beta_MM1 +1.26973752204290 Beta_MS1 +1.12673623610320 Beta_SS1 +0.1326842550663270 M_b0 +-0.007642788338017 M_b1 +0.0341395775059370 M_b2 +0.2523050971380870 M_b3 +0.1227287372225670 M_b4 +-0.361387798398897 M_b5 +-0.282577591351457 M_b6 +0.120194301035280 M_bg0 +0.045238287358190 M_bg1 +0.067922807244030 M_bg2 +-0.03672511378682 M_bg3 +0.107516477513860 M_bg4 +0.004964711984940 M_bg5 +-0.12997598358652 M_bg6 +0.006848761596750 S_b0 +-0.02389964401024 S_b1 +0.137457353311170 S_b2 +0.033016467497740 S_b3 +-0.31064291544850 S_b4 +-0.08550273135791 S_b5 +0.149252790306880 S_b6 +-0.2850852 S_bg0 +1.67102480 S_bg1 +-3.5678516 S_bg2 +3.45054990 S_bg3 +-1.2186289 S_bg4 +0.0 S_bg5 +0.0 S_bg6 +0.138040769883614 M_a0 +0.803625443023934 M_a1 +0.292412960851064 M_a2 +0.640588078946224 M_a3 +0.062978539843324 S_a0 +2.478617619878250 S_a1 +0.036666243238154 S_a2 +2.386431372486710 S_a3 +0.00058595 epsilon_MM +0.01386 epsilon_SS +4.200 sigma_MM +3.130 sigma_SS diff --git a/potentials/README b/potentials/README index c234f5f48b7..2cb4a383c51 100644 --- a/potentials/README +++ b/potentials/README @@ -84,7 +84,7 @@ Au_u3 = Gold universal 3 The suffix of each file indicates the pair style it is used with: adp ADP angular dependent potential -airebo AI-REBO and REBO potentials +airebo AI-REBO potentials bop.table BOP potential, tabulated form cdeam concentration-dependent EAM comb COMB potential @@ -107,6 +107,8 @@ nb3b.harmonic nonbonded 3-body harmonic potential pod ML potential with proper orthogonal descriptors (POD) poly polymorphic 3-body potential reax ReaxFF potential (see README.reax for more info) +rebo REBO potentials +rebomos REBOMoS potential smtbq second moment tight binding QEq (SMTBQ) potential snap SNAP potential snapcoeff SNAP potential diff --git a/python/lammps/core.py b/python/lammps/core.py index 1ff123760b0..3498041454e 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -282,6 +282,8 @@ def __init__(self,name='',cmdargs=None,ptr=None,comm=None): self.lib.lammps_config_accelerator.argtypes = [c_char_p, c_char_p, c_char_p] self.lib.lammps_set_variable.argtypes = [c_void_p, c_char_p, c_char_p] + self.lib.lammps_set_string_variable.argtypes = [c_void_p, c_char_p, c_char_p] + self.lib.lammps_set_internal_variable.argtypes = [c_void_p, c_char_p, c_double] self.lib.lammps_has_style.argtypes = [c_void_p, c_char_p, c_char_p] @@ -1076,15 +1078,23 @@ def extract_compute(self,cid,cstyle,ctype): def extract_fix(self,fid,fstyle,ftype,nrow=0,ncol=0): """Retrieve data from a LAMMPS fix - This is a wrapper around the :cpp:func:`lammps_extract_fix` - function of the C-library interface. - This function returns ``None`` if either the fix id is not - recognized, or an invalid combination of :ref:`fstyle ` - and :ref:`ftype ` constants is used. The - names and functionality of the constants are the same as for - the corresponding C-library function. For requests to return - a scalar or a size, the value is returned, also when accessing - global vectors or arrays, otherwise a pointer. + This is a wrapper around the :cpp:func:`lammps_extract_fix` function + of the C-library interface. This function returns ``None`` if + either the fix id is not recognized, or an invalid combination of + :ref:`fstyle ` and :ref:`ftype + ` constants is used. The names and functionality + of the constants are the same as for the corresponding C-library + function. For requests to return a scalar or a size, the value is + returned, also when accessing global vectors or arrays, otherwise a + pointer. + + .. note:: + + When requesting global data, the fix data can only be accessed + one item at a time without access to the whole vector or array. + Thus this function will always return a scalar. To access vector + or array elements the "nrow" and "ncol" arguments need to be set + accordingly (they default to 0). :param fid: fix ID :type fid: string @@ -1252,6 +1262,8 @@ def flush_buffers(self): def set_variable(self,name,value): """Set a new value for a LAMMPS string style variable + .. deprecated:: 7Feb2024 + This is a wrapper around the :cpp:func:`lammps_set_variable` function of the C-library interface. @@ -1271,6 +1283,52 @@ def set_variable(self,name,value): # ------------------------------------------------------------------------- + def set_string_variable(self,name,value): + """Set a new value for a LAMMPS string style variable + + .. versionadded:: 7Feb2024 + + This is a wrapper around the :cpp:func:`lammps_set_string_variable` + function of the C-library interface. + + :param name: name of the variable + :type name: string + :param value: new variable value + :type value: any. will be converted to a string + :return: either 0 on success or -1 on failure + :rtype: int + """ + if name: name = name.encode() + else: return -1 + if value: value = str(value).encode() + else: return -1 + with ExceptionCheck(self): + return self.lib.lammps_set_string_variable(self.lmp,name,value) + + # ------------------------------------------------------------------------- + + def set_internal_variable(self,name,value): + """Set a new value for a LAMMPS internal style variable + + .. versionadded:: 7Feb2024 + + This is a wrapper around the :cpp:func:`lammps_set_internal_variable` + function of the C-library interface. + + :param name: name of the variable + :type name: string + :param value: new variable value + :type value: float or compatible. will be converted to float + :return: either 0 on success or -1 on failure + :rtype: int + """ + if name: name = name.encode() + else: return -1 + with ExceptionCheck(self): + return self.lib.lammps_set_internal_variable(self.lmp,name,value) + + # ------------------------------------------------------------------------- + # return vector of atom properties gathered across procs # 3 variants to match src/library.cpp # name = atom property recognized by LAMMPS in atom->extract() diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index a29853d16a7..91042c43c81 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -203,6 +203,13 @@ def extract_fix(self, fid, fstyle, ftype, nrow=0, ncol=0): It behaves the same as the original method, but returns NumPy arrays instead of ``ctypes`` pointers. + .. note:: + + When requesting global data, the fix data can only be accessed one + item at a time without access to the whole vector or array. Thus this + function will always return a scalar. To access vector or array elements + the "nrow" and "ncol" arguments need to be set accordingly (they default to 0). + :param fid: fix ID :type fid: string :param fstyle: style of the data retrieve (global, atom, or local), see :ref:`py_style_constants` diff --git a/python/lammps/pylammps.py b/python/lammps/pylammps.py index c693b7d565c..7dd3823bbfb 100644 --- a/python/lammps/pylammps.py +++ b/python/lammps/pylammps.py @@ -192,11 +192,23 @@ def mol(self): @property def mass(self): """ - Return the atom mass + Return the atom mass as a per-atom property. + This returns either the per-type mass or the per-atom + mass (AKA 'rmass') depending on what is available with + preference for the per-atom mass. + + .. versionchanged:: 17Apr2024 + + Support both per-type and per-atom masses. With + per-type return "mass[type[i]]" else return "rmass[i]". + Per-atom mass is preferred if available. :type: float """ - return self.get("mass", self.index) + if self._pylmp.lmp.extract_setting('rmass_flag'): + return self.get("rmass", self.index) + else: + return self.get("mass", self.type) @property def radius(self): @@ -532,6 +544,18 @@ def clear_cmd_history(self): """ self._cmd_history = [] + + def append_cmd_history(self, cmd): + """ + Commands will be added to the command history but not executed. + + Add `commands` only to the command history, but do not execute them, so that you can + conveniently create Lammps input files, using + :py:meth:`PyLammps.write_script()`. + """ + self._cmd_history.append(cmd) + + def command(self, cmd): """ Execute LAMMPS command diff --git a/src/.gitignore b/src/.gitignore index 112a1486f7e..b145f81159f 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -348,6 +348,8 @@ /compute_nbond_atom.h /fix_nve_bpm_sphere.cpp /fix_nve_bpm_sphere.h +/fix_update_special_bonds.cpp +/fix_update_special_bonds.h /pair_bpm_spring.cpp /pair_bpm_spring.h @@ -461,6 +463,8 @@ /angle_cosine_shift_exp.h /angle_cosine_squared.cpp /angle_cosine_squared.h +/angle_cosine_squared_restricted.cpp +/angle_cosine_squared_restricted.h /angle_cross.cpp /angle_cross.h /angle_dipole.cpp @@ -679,6 +683,8 @@ /dihedral_class2.h /dihedral_cosine_shift_exp.cpp /dihedral_cosine_shift_exp.h +/dihedral_cosine_squared_restricted.cpp +/dihedral_cosine_squared_restricted.h /dihedral_fourier.cpp /dihedral_fourier.h /dihedral_harmonic.cpp @@ -789,6 +795,8 @@ /fix_cmap.h /fix_damping_cundall.cpp /fix_damping_cundall.h +/fix_deform_pressure.cpp +/fix_deform_pressure.h /fix_dpd_energy.cpp /fix_dpd_energy.h /fix_efield_tip4p.cpp @@ -1021,6 +1029,8 @@ /fix_wall_colloid.h /fix_wall_ees.cpp /fix_wall_ees.h +/fix_wall_flow.cpp +/fix_wall_flow.h /fix_wall_region_ees.cpp /fix_wall_region_ees.h /fix_wall_reflect_stochastic.cpp @@ -1351,6 +1361,8 @@ /pair_oxrna2_*.cpp /pair_oxrna2_*.h /mf_oxdna.h +/pair_pedone.cpp +/pair_pedone.h /pair_peri.cpp /pair_peri.h /pair_peri_eps.cpp @@ -1367,6 +1379,8 @@ /pair_reaxff.h /pair_rebo.cpp /pair_rebo.h +/pair_rebomos.cpp +/pair_rebomos.h /pair_resquared.cpp /pair_resquared.h /pair_saip_metal.cpp diff --git a/src/ADIOS/reader_adios.cpp b/src/ADIOS/reader_adios.cpp index ec87bc26ccb..0fe82dd49fa 100644 --- a/src/ADIOS/reader_adios.cpp +++ b/src/ADIOS/reader_adios.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; -#define SMALL 1.0e-6 +static constexpr double SMALL = 1.0e-6; namespace LAMMPS_NS { class ReadADIOSInternal { diff --git a/src/AMOEBA/amoeba_convolution.cpp b/src/AMOEBA/amoeba_convolution.cpp index ae3dbf16c4a..44b7248815a 100644 --- a/src/AMOEBA/amoeba_convolution.cpp +++ b/src/AMOEBA/amoeba_convolution.cpp @@ -15,16 +15,13 @@ #include "amoeba_convolution.h" #include "comm.h" -#include "domain.h" #include "fft3d_wrap.h" #include "grid3d.h" -#include "math_extra.h" #include "memory.h" #include "neighbor.h" #include "remap_wrap.h" #include "timer.h" -#include #include using namespace LAMMPS_NS; @@ -47,13 +44,7 @@ enum{MPOLE_GRID,POLAR_GRID,POLAR_GRIDC,DISP_GRID,INDUCE_GRID,INDUCE_GRIDC}; //#define SCALE 1 #define SCALE 0 -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; /* ---------------------------------------------------------------------- partition an FFT grid across processors diff --git a/src/AMOEBA/amoeba_convolution.h b/src/AMOEBA/amoeba_convolution.h index bed65149ecb..60825bb8b62 100644 --- a/src/AMOEBA/amoeba_convolution.h +++ b/src/AMOEBA/amoeba_convolution.h @@ -15,17 +15,7 @@ #define LMP_AMOEBA_CONVOLUTION_H #include "pointers.h" - -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define LMP_FFT_PREC "single" -#define MPI_FFT_SCALAR MPI_FLOAT -#else - -typedef double FFT_SCALAR; -#define LMP_FFT_PREC "double" -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif +#include "lmpfftsettings.h" namespace LAMMPS_NS { diff --git a/src/AMOEBA/amoeba_file.cpp b/src/AMOEBA/amoeba_file.cpp index 6bf961cdab5..a48af86ffe2 100644 --- a/src/AMOEBA/amoeba_file.cpp +++ b/src/AMOEBA/amoeba_file.cpp @@ -25,23 +25,23 @@ using namespace LAMMPS_NS; -enum{UNKNOWN,FFIELD,LITERATURE,ATOMTYPE,VDWL,VDWLPAIR,BSTRETCH,SBEND,ABEND, - PAULI,DISPERSION,UB,OUTPLANE,TORSION,PITORSION,ATOMMULT, - QPENETRATION,DIPPOLAR,QTRANSFER,END_OF_FILE}; -enum{ALLINGER,BUFFERED_14_7}; -enum{ARITHMETIC,GEOMETRIC,CUBIC_MEAN,R_MIN,SIGMA,DIAMETER,HARMONIC,HHG,W_H}; -enum{MUTUAL,OPT,TCG,DIRECT}; -enum{NOFRAME,ZONLY,ZTHENX,BISECTOR,ZBISECT,THREEFOLD}; -enum{GEAR,ASPC,LSQR}; +enum { UNKNOWN, FFIELD, LITERATURE, ATOMTYPE, VDWL, VDWLPAIR, BSTRETCH, SBEND, ABEND, + PAULI, DISPERSION, UB, OUTPLANE, TORSION, PITORSION, ATOMMULT, QPENETRATION, DIPPOLAR, + QTRANSFER, END_OF_FILE }; +enum { ALLINGER, BUFFERED_14_7 }; +enum { ARITHMETIC, GEOMETRIC, CUBIC_MEAN, R_MIN, SIGMA, DIAMETER, HARMONIC, HHG, W_H }; +enum { MUTUAL, OPT, TCG, DIRECT }; +enum { NOFRAME, ZONLY, ZTHENX, BISECTOR, ZBISECT, THREEFOLD }; +enum { GEAR, ASPC, LSQR }; -#define MAXLINE 65536 // crazy big for TORSION-TORSION section -#define MAX_TYPE_PER_GROUP 6 // max types per AMOEBA group -#define MAX_FRAME_PER_TYPE 32 // max multipole frames for any AMOEBA type +static constexpr int MAXLINE = 65536; // crazy big for TORSION-TORSION section +static constexpr int MAX_TYPE_PER_GROUP = 6; // max types per AMOEBA group +static constexpr int MAX_FRAME_PER_TYPE = 32; // max multipole frames for any AMOEBA type -#define DELTA_TYPE_CLASS 32 -#define DELTA_VDWL_PAIR 16 +static constexpr int DELTA_TYPE_CLASS = 32; +static constexpr int DELTA_VDWL_PAIR = 16; -#define BOHR 0.52917721067 // Bohr in Angstroms +static constexpr double BOHR = 0.52917721067; // Bohr in Angstroms // methods to read, parse, and store info from force field file @@ -79,7 +79,7 @@ void PairAmoeba::read_prmfile(char *filename) int me = comm->me; FILE *fptr; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; if (me == 0) { fptr = utils::open_potential(filename, lmp, nullptr); @@ -179,8 +179,7 @@ void PairAmoeba::read_prmfile(char *filename) for (int i = 1; i <= n_amtype; i++) nmultiframe[i] = 0; } - char next[MAXLINE]; - next[0] = '\0'; + char next[MAXLINE] = {'\0'}; bool has_next = false; int n; while (true) { @@ -381,7 +380,7 @@ void PairAmoeba::read_keyfile(char *filename) int me = comm->me; FILE *fptr; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; if (me == 0) { fptr = utils::open_potential(filename, lmp, nullptr); if (fptr == nullptr) diff --git a/src/AMOEBA/amoeba_induce.cpp b/src/AMOEBA/amoeba_induce.cpp index 6017b775caa..278a00316d5 100644 --- a/src/AMOEBA/amoeba_induce.cpp +++ b/src/AMOEBA/amoeba_induce.cpp @@ -41,7 +41,7 @@ enum{GEAR,ASPC,LSQR}; enum{BUILD,APPLY}; enum{GORDON1,GORDON2}; -#define DEBYE 4.80321 // conversion factor from q-Angs (real units) to Debye +static constexpr double DEBYE = 4.80321; // conversion factor from q-Angs (real units) to Debye /* ---------------------------------------------------------------------- induce = induced dipole moments via pre-conditioned CG solver diff --git a/src/AMOEBA/amoeba_multipole.cpp b/src/AMOEBA/amoeba_multipole.cpp index d0ae03401a6..68235dfe264 100644 --- a/src/AMOEBA/amoeba_multipole.cpp +++ b/src/AMOEBA/amoeba_multipole.cpp @@ -31,16 +31,8 @@ using namespace MathConst; using MathSpecial::square; -enum{FIELD,ZRSD,TORQUE,UFLD}; // reverse comm -enum{VDWL,REPULSE,QFER,DISP,MPOLE,POLAR,USOLV,DISP_LONG,MPOLE_LONG,POLAR_LONG}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +enum { FIELD, ZRSD, TORQUE, UFLD }; // reverse comm +enum { VDWL, REPULSE, QFER, DISP, MPOLE, POLAR, USOLV, DISP_LONG, MPOLE_LONG, POLAR_LONG }; /* ---------------------------------------------------------------------- multipole = multipole interactions diff --git a/src/AMOEBA/angle_amoeba.cpp b/src/AMOEBA/angle_amoeba.cpp index e6ee7b579ef..54fc3e9f9ac 100644 --- a/src/AMOEBA/angle_amoeba.cpp +++ b/src/AMOEBA/angle_amoeba.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/AMOEBA/fix_amoeba_bitorsion.cpp b/src/AMOEBA/fix_amoeba_bitorsion.cpp index cb8c62819d9..f814f4109a7 100644 --- a/src/AMOEBA/fix_amoeba_bitorsion.cpp +++ b/src/AMOEBA/fix_amoeba_bitorsion.cpp @@ -32,10 +32,10 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define BITORSIONMAX 6 // max # of BiTorsion terms stored by one atom -#define LISTDELTA 10000 -#define LB_FACTOR 1.5 -#define MAXLINE 1024 +static constexpr int BITORSIONMAX = 6; // max # of BiTorsion terms stored by one atom +static constexpr int LISTDELTA = 10000; +static constexpr double LB_FACTOR = 1.5; +static constexpr int MAXLINE = 1024; // spline weighting factors @@ -724,7 +724,7 @@ double FixAmoebaBiTorsion::compute_scalar() void FixAmoebaBiTorsion::read_grid_data(char *bitorsion_file) { - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; char *eof; FILE *fp = nullptr; diff --git a/src/AMOEBA/fix_amoeba_pitorsion.cpp b/src/AMOEBA/fix_amoeba_pitorsion.cpp index 445845c075d..33af4a3c31a 100644 --- a/src/AMOEBA/fix_amoeba_pitorsion.cpp +++ b/src/AMOEBA/fix_amoeba_pitorsion.cpp @@ -32,9 +32,9 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define PITORSIONMAX 6 // max # of PiTorsion terms stored by one atom -#define LISTDELTA 8196 -#define LB_FACTOR 1.5 +static constexpr int PITORSIONMAX = 6; // max # of PiTorsion terms stored by one atom +static constexpr int LISTDELTA = 8196; +static constexpr double LB_FACTOR = 1.5; /* ---------------------------------------------------------------------- */ diff --git a/src/AMOEBA/improper_amoeba.cpp b/src/AMOEBA/improper_amoeba.cpp index 32c31b0af98..cbc7fbd8d2b 100644 --- a/src/AMOEBA/improper_amoeba.cpp +++ b/src/AMOEBA/improper_amoeba.cpp @@ -28,9 +28,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperAmoeba::ImproperAmoeba(LAMMPS *lmp) : Improper(lmp) diff --git a/src/AMOEBA/pair_amoeba.cpp b/src/AMOEBA/pair_amoeba.cpp index cad9e2b6289..1bdd36dd943 100644 --- a/src/AMOEBA/pair_amoeba.cpp +++ b/src/AMOEBA/pair_amoeba.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -39,17 +38,19 @@ using namespace LAMMPS_NS; using MathSpecial::powint; -enum{INDUCE,RSD,SETUP_AMOEBA,SETUP_HIPPO,KMPOLE,AMGROUP,PVAL}; // forward comm -enum{FIELD,ZRSD,TORQUE,UFLD}; // reverse comm -enum{ARITHMETIC,GEOMETRIC,CUBIC_MEAN,R_MIN,SIGMA,DIAMETER,HARMONIC,HHG,W_H}; -enum{HAL,REPULSE,QFER,DISP,MPOLE,POLAR,USOLV,DISP_LONG,MPOLE_LONG,POLAR_LONG}; -enum{MPOLE_GRID,POLAR_GRID,POLAR_GRIDC,DISP_GRID,INDUCE_GRID,INDUCE_GRIDC}; -enum{MUTUAL,OPT,TCG,DIRECT}; -enum{GEAR,ASPC,LSQR}; +enum { INDUCE, RSD, SETUP_AMOEBA, SETUP_HIPPO, KMPOLE, AMGROUP, PVAL }; // forward comm +enum { FIELD, ZRSD, TORQUE, UFLD }; // reverse comm +enum { ARITHMETIC, GEOMETRIC, CUBIC_MEAN, R_MIN, SIGMA, DIAMETER, HARMONIC, HHG, W_H }; +enum { HAL, REPULSE, QFER, DISP, MPOLE, POLAR, USOLV, DISP_LONG, MPOLE_LONG, POLAR_LONG }; +enum { MPOLE_GRID, POLAR_GRID, POLAR_GRIDC, DISP_GRID, INDUCE_GRID, INDUCE_GRIDC }; +enum { MUTUAL, OPT, TCG, DIRECT }; +enum { GEAR, ASPC, LSQR }; -#define DELTASTACK 16 +static constexpr int DELTASTACK = 16; #define DEBUG_AMOEBA 0 +// clang-format off + /* ---------------------------------------------------------------------- */ PairAmoeba::PairAmoeba(LAMMPS *lmp) : Pair(lmp) @@ -429,7 +430,7 @@ void PairAmoeba::compute(int eflag, int vflag) // output FF settings to screen and logfile // delay until here because RMS force accuracy is computed based on rpole - if (first_flag_compute && (comm->me == 0)) print_settings(); + if (first_flag_compute) print_settings(); first_flag_compute = 0; if (amoeba) pbc_xred(); @@ -827,28 +828,36 @@ void PairAmoeba::init_style() // check if all custom atom arrays were set via fix property/atom - int flag,cols; - - index_amtype = atom->find_custom("amtype",flag,cols); - if (index_amtype < 0 || flag || cols) - error->all(FLERR,"Pair {} amtype is not defined", mystyle); - index_amgroup = atom->find_custom("amgroup",flag,cols); - if (index_amgroup < 0 || flag || cols) - error->all(FLERR,"Pair {} amgroup is not defined", mystyle); - - index_redID = atom->find_custom("redID",flag,cols); - if (index_redID < 0 || !flag || cols) - error->all(FLERR,"Pair {} redID is not defined", mystyle); - index_xyzaxis = atom->find_custom("xyzaxis",flag,cols); - if (index_xyzaxis < 0 || !flag || cols == 0) - error->all(FLERR,"Pair {} xyzaxis is not defined", mystyle); - - index_polaxe = atom->find_custom("polaxe",flag,cols); - if (index_polaxe < 0 || flag || cols) - error->all(FLERR,"Pair {} polaxe is not defined", mystyle); - index_pval = atom->find_custom("pval",flag,cols); - if (index_pval < 0 || !flag || cols) - error->all(FLERR,"Pair {} pval is not defined", mystyle); + // clang-format on + const char *names[6] = {"amtype", "amgroup", "redID", "xyzaxis", "polaxe", "pval"}; + const int flag_check[6] = {0, 0, 1, 1, 0, 1}; // correct type (0 int, 1 dbl) + const int cols_check[6] = {0, 0, 0, 3, 0, 0}; // xyzaxis 3 cols, all others 0 + const int ghost_check[6] = {1, 1, 1, 0, 0, 1}; // which types need ghost; TO-DO: check + int flag, cols, ghost, index[6]; + + // clang-format off + + for (int i = 0; i < 6; i++) { + if (ghost_check[i]) { + index[i] = atom->find_custom_ghost(names[i], flag, cols, ghost); + } else { + index[i] = atom->find_custom(names[i], flag, cols); + } + std::string err; + if (index[i] < 0) err = "was not defined"; + else if (flag_check[i] != flag) err = "has the wrong type"; + else if (cols_check[i] != cols) err = "has the wrong number of columns"; + else if (ghost_check[i] && !ghost) err = "must be set by fix property/atom with ghost yes"; + if (err != "") + error->all(FLERR,"Pair {} per-atom variable {} {}", mystyle, names[i], err); + } + + index_amtype = index[0]; + index_amgroup = index[1]; + index_redID = index[2]; + index_xyzaxis = index[3]; + index_polaxe = index[4]; + index_pval = index[5]; // ------------------------------------------------------------------- // one-time initializations @@ -1069,79 +1078,86 @@ void PairAmoeba::init_style() void PairAmoeba::print_settings() { std::string mesg = utils::uppercase(mystyle) + " force field settings\n"; + double estimated_mpole_accuracy = 0.0; - if (amoeba) { - choose(HAL); - mesg += fmt::format(" hal: cut {} taper {} vscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), - special_hal[1],special_hal[2],special_hal[3],special_hal[4]); - } else { - choose(REPULSE); - mesg += fmt::format(" repulsion: cut {} taper {} rscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), - special_repel[1],special_repel[2],special_repel[3],special_repel[4]); + if (use_ewald) { + choose(MPOLE_LONG); + estimated_mpole_accuracy = final_accuracy_mpole(); + } - choose(QFER); - mesg += fmt::format(" qxfer: cut {} taper {} mscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), - special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); + if (comm->me == 0) { + if (amoeba) { + choose(HAL); + mesg += fmt::format(" hal: cut {} taper {} vscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), + special_hal[1],special_hal[2],special_hal[3],special_hal[4]); + } else { + choose(REPULSE); + mesg += fmt::format(" repulsion: cut {} taper {} rscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), + special_repel[1],special_repel[2],special_repel[3],special_repel[4]); + + choose(QFER); + mesg += fmt::format(" qxfer: cut {} taper {} mscale {} {} {} {}\n", sqrt(off2),sqrt(cut2), + special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); + + if (use_dewald) { + choose(DISP_LONG); + mesg += fmt::format(" dispersion: cut {} aewald {} bsorder {} FFT {} {} {} " + "dspscale {} {} {} {}\n", sqrt(off2),aewald,bsdorder,ndfft1,ndfft2,ndfft3, + special_disp[1],special_disp[2],special_disp[3],special_disp[4]); + } else { + choose(DISP); + mesg += fmt::format(" dispersion: cut {} aewald {} dspscale {} {} {} {}\n", + sqrt(off2),aewald,special_disp[1], + special_disp[2],special_disp[3],special_disp[4]); + } + } - if (use_dewald) { - choose(DISP_LONG); - mesg += fmt::format(" dispersion: cut {} aewald {} bsorder {} FFT {} {} {} " - "dspscale {} {} {} {}\n", sqrt(off2),aewald,bsdorder,ndfft1,ndfft2,ndfft3, - special_disp[1],special_disp[2],special_disp[3],special_disp[4]); + if (use_ewald) { + choose(MPOLE_LONG); + mesg += fmt::format(" multipole: cut {} aewald {} bsorder {} FFT {} {} {}\n" + " estimated absolute RMS force accuracy = {:.8g}\n" + " estimated relative RMS force accuracy = {:.8g}\n" + " mscale {} {} {} {}\n", + sqrt(off2),aewald,bseorder,nefft1,nefft2,nefft3, + estimated_mpole_accuracy,estimated_mpole_accuracy/two_charge_force, + special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); } else { - choose(DISP); - mesg += fmt::format(" dispersion: cut {} aewald {} dspscale {} {} {} {}\n", - sqrt(off2),aewald,special_disp[1], - special_disp[2],special_disp[3],special_disp[4]); + choose(MPOLE); + mesg += fmt::format(" multipole: cut {} aewald {} mscale {} {} {} {}\n", sqrt(off2),aewald, + special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); } - } - if (use_ewald) { - choose(MPOLE_LONG); - double estimated_accuracy = final_accuracy_mpole(); - mesg += fmt::format(" multipole: cut {} aewald {} bsorder {} FFT {} {} {}; " - "estimated absolute RMS force accuracy = {:.8g}; " - "estimated relative RMS force accuracy = {:.8g}; " - "mscale {} {} {} {}\n", - sqrt(off2),aewald,bseorder,nefft1,nefft2,nefft3, - estimated_accuracy,estimated_accuracy/two_charge_force, - special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); - } else { - choose(MPOLE); - mesg += fmt::format(" multipole: cut {} aewald {} mscale {} {} {} {}\n", sqrt(off2),aewald, - special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); - } + if (use_ewald) { + choose(POLAR_LONG); + mesg += fmt::format(" polar: cut {} aewald {} bsorder {} FFT {} {} {}\n", + sqrt(off2),aewald,bsporder,nefft1,nefft2,nefft3); + mesg += fmt::format(" pscale {} {} {} {} piscale {} {} {} {} " + "wscale {} {} {} {} d/u scale {} {}\n", + special_polar_pscale[1],special_polar_pscale[2], + special_polar_pscale[3],special_polar_pscale[4], + special_polar_piscale[1],special_polar_piscale[2], + special_polar_piscale[3],special_polar_piscale[4], + special_polar_wscale[1],special_polar_wscale[2], + special_polar_wscale[3],special_polar_wscale[4], + polar_dscale,polar_uscale); + } else { + choose(POLAR); + mesg += fmt::format(" polar: cut {} aewald {}\n",sqrt(off2),aewald); + mesg += fmt::format(" pscale {} {} {} {} piscale {} {} {} {} " + "wscale {} {} {} {} d/u scale {} {}\n", + special_polar_pscale[1],special_polar_pscale[2], + special_polar_pscale[3],special_polar_pscale[4], + special_polar_piscale[1],special_polar_piscale[2], + special_polar_piscale[3],special_polar_piscale[4], + special_polar_wscale[1],special_polar_wscale[2], + special_polar_wscale[3],special_polar_wscale[4], + polar_dscale,polar_uscale); + } - if (use_ewald) { - choose(POLAR_LONG); - mesg += fmt::format(" polar: cut {} aewald {} bsorder {} FFT {} {} {}\n", - sqrt(off2),aewald,bsporder,nefft1,nefft2,nefft3); - mesg += fmt::format(" pscale {} {} {} {} piscale {} {} {} {} " - "wscale {} {} {} {} d/u scale {} {}\n", - special_polar_pscale[1],special_polar_pscale[2], - special_polar_pscale[3],special_polar_pscale[4], - special_polar_piscale[1],special_polar_piscale[2], - special_polar_piscale[3],special_polar_piscale[4], - special_polar_wscale[1],special_polar_wscale[2], - special_polar_wscale[3],special_polar_wscale[4], - polar_dscale,polar_uscale); - } else { - choose(POLAR); - mesg += fmt::format(" polar: cut {} aewald {}\n",sqrt(off2),aewald); - mesg += fmt::format(" pscale {} {} {} {} piscale {} {} {} {} " - "wscale {} {} {} {} d/u scale {} {}\n", - special_polar_pscale[1],special_polar_pscale[2], - special_polar_pscale[3],special_polar_pscale[4], - special_polar_piscale[1],special_polar_piscale[2], - special_polar_piscale[3],special_polar_piscale[4], - special_polar_wscale[1],special_polar_wscale[2], - special_polar_wscale[3],special_polar_wscale[4], - polar_dscale,polar_uscale); + choose(USOLV); + mesg += fmt::format(" precondition: cut {}\n",sqrt(off2)); + utils::logmesg(lmp, mesg); } - - choose(USOLV); - mesg += fmt::format(" precondition: cut {}\n",sqrt(off2)); - utils::logmesg(lmp, mesg); } /* ---------------------------------------------------------------------- diff --git a/src/AMOEBA/pair_amoeba.h b/src/AMOEBA/pair_amoeba.h index 648fc861262..fd694a80374 100644 --- a/src/AMOEBA/pair_amoeba.h +++ b/src/AMOEBA/pair_amoeba.h @@ -20,7 +20,7 @@ PairStyle(amoeba,PairAmoeba); #ifndef LMP_PAIR_AMOEBA_H #define LMP_PAIR_AMOEBA_H -#include "lmpfftsettings.h" +#include "lmpfftsettings.h" // IWYU pragma: export #include "pair.h" namespace LAMMPS_NS { @@ -330,10 +330,10 @@ class PairAmoeba : public Pair { double *qfac; // convoulution pre-factors double *gridfft1; // copy of p_kspace FFT grid - double **cmp,**fmp; // Cartesian and fractional multipoles - double **cphi,**fphi; + double **cmp, **fmp; // Cartesian and fractional multipoles + double **cphi, **fphi; - double *_moduli_array; // buffers for moduli + double *_moduli_array; // buffers for moduli double *_moduli_bsarray; int _nfft_max; @@ -345,11 +345,11 @@ class PairAmoeba : public Pair { double ctf[10][10]; // indices NOT flipped vs Fortran double ftc[10][10]; // indices NOT flipped vs Fortran - class AmoebaConvolution *m_kspace; // multipole KSpace - class AmoebaConvolution *p_kspace; // polar KSpace + class AmoebaConvolution *m_kspace; // multipole KSpace + class AmoebaConvolution *p_kspace; // polar KSpace class AmoebaConvolution *pc_kspace; - class AmoebaConvolution *d_kspace; // dispersion KSpace - class AmoebaConvolution *i_kspace; // induce KSpace + class AmoebaConvolution *d_kspace; // dispersion KSpace + class AmoebaConvolution *i_kspace; // induce KSpace class AmoebaConvolution *ic_kspace; // FFT grid size factors @@ -362,8 +362,8 @@ class PairAmoeba : public Pair { void hal(); virtual void repulsion(); - void damprep(double, double, double, double, double, double, double, double, - int, double, double, double *); + void damprep(double, double, double, double, double, double, double, double, int, double, double, + double *); void dispersion(); virtual void dispersion_real(); diff --git a/src/ASPHERE/compute_temp_asphere.cpp b/src/ASPHERE/compute_temp_asphere.cpp index 707938b2b94..d99d9f30c8c 100644 --- a/src/ASPHERE/compute_temp_asphere.cpp +++ b/src/ASPHERE/compute_temp_asphere.cpp @@ -18,30 +18,29 @@ #include "compute_temp_asphere.h" -#include -#include "math_extra.h" #include "atom.h" #include "atom_vec_ellipsoid.h" -#include "update.h" -#include "force.h" #include "domain.h" -#include "modify.h" -#include "group.h" #include "error.h" +#include "force.h" +#include "group.h" +#include "math_extra.h" +#include "modify.h" +#include "update.h" -using namespace LAMMPS_NS; +#include -enum{ROTATE,ALL}; +using namespace LAMMPS_NS; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +enum { ROTATE, ALL }; +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - id_bias(nullptr), tbias(nullptr), avec(nullptr) + Compute(lmp, narg, arg), id_bias(nullptr), tbias(nullptr), avec(nullptr) { - if (narg < 3) error->all(FLERR,"Illegal compute temp/asphere command"); + if (narg < 3) utils::missing_cmd_args(FLERR, "compute temp/asphere", error); scalar_flag = vector_flag = 1; size_vector = 6; @@ -56,19 +55,17 @@ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/asphere command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "compute temp/asphere bias", error); tempbias = 1; id_bias = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"dof") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/asphere command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "compute temp/asphere dof", error); if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE; else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL; - else error->all(FLERR,"Illegal compute temp/asphere command"); + else error->all(FLERR,"Unknown compute temp/asphere dof keyword {}", arg[iarg+1]); iarg += 2; - } else error->all(FLERR,"Illegal compute temp/asphere command"); + } else error->all(FLERR,"Unknown compute temp/asphere keyword {}", arg[iarg]); } // when computing only the rotational temperature, @@ -84,8 +81,8 @@ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) : ComputeTempAsphere::~ComputeTempAsphere() { - delete [] id_bias; - delete [] vector; + delete[] id_bias; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -107,17 +104,17 @@ void ComputeTempAsphere::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (ellipsoid[i] < 0) - error->one(FLERR,"Compute temp/asphere requires extended particles"); + error->one(FLERR,"Compute temp/asphere requires all extended particles"); if (tempbias) { - int i = modify->find_compute(id_bias); - if (i < 0) - error->all(FLERR,"Could not find compute ID for temperature bias"); - tbias = modify->compute[i]; + tbias = modify->get_compute_by_id(id_bias); + if (!tbias) + error->all(FLERR,"Could not find compute ID {} for temperature bias", id_bias); + if (tbias->tempflag == 0) - error->all(FLERR,"Bias compute does not calculate temperature"); + error->all(FLERR,"Bias compute {} does not calculate temperature", id_bias); if (tbias->tempbias == 0) - error->all(FLERR,"Bias compute does not calculate a velocity bias"); + error->all(FLERR,"Bias compute {} does not calculate a velocity bias", id_bias); if (tbias->igroup != igroup) error->all(FLERR,"Bias compute group does not match compute group"); if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2; diff --git a/src/ASPHERE/fix_nve_asphere.cpp b/src/ASPHERE/fix_nve_asphere.cpp index f4080493c8f..a5655b875cc 100644 --- a/src/ASPHERE/fix_nve_asphere.cpp +++ b/src/ASPHERE/fix_nve_asphere.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ diff --git a/src/ASPHERE/fix_nve_line.cpp b/src/ASPHERE/fix_nve_line.cpp index d7adf0a963f..4d7a691bdda 100644 --- a/src/ASPHERE/fix_nve_line.cpp +++ b/src/ASPHERE/fix_nve_line.cpp @@ -23,7 +23,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define INERTIA (1.0/12.0) // moment of inertia prefactor for line segment +static constexpr double INERTIA = (1.0/12.0); // moment of inertia prefactor for line segment /* ---------------------------------------------------------------------- */ diff --git a/src/ASPHERE/pair_line_lj.cpp b/src/ASPHERE/pair_line_lj.cpp index 2d6dc557f3c..3bfc10758cd 100644 --- a/src/ASPHERE/pair_line_lj.cpp +++ b/src/ASPHERE/pair_line_lj.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 +static constexpr int DELTA = 10000; /* ---------------------------------------------------------------------- */ diff --git a/src/ASPHERE/pair_tri_lj.cpp b/src/ASPHERE/pair_tri_lj.cpp index 4fe999f0394..b9cb2528cac 100644 --- a/src/ASPHERE/pair_tri_lj.cpp +++ b/src/ASPHERE/pair_tri_lj.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; -#define DELTA 20 +static constexpr int DELTA = 20; /* ---------------------------------------------------------------------- */ diff --git a/src/ASPHERE/pair_ylz.cpp b/src/ASPHERE/pair_ylz.cpp index 0d0c8b9ee09..833dc8e3e4d 100644 --- a/src/ASPHERE/pair_ylz.cpp +++ b/src/ASPHERE/pair_ylz.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Hongyan Yuan (SUSTech) + Contributing authors: Hongyan Yuan (SUSTech), Zhaoyan Huang(SUSTech) ------------------------------------------------------------------------- */ #include "pair_ylz.h" @@ -300,6 +300,7 @@ double PairYLZ::init_one(int i, int j) zeta[j][i] = zeta[i][j]; mu[j][i] = mu[i][j]; beta[j][i] = beta[i][j]; + cut[j][i] = cut[i][j]; return cut[i][j]; } @@ -409,7 +410,7 @@ void PairYLZ::write_data_all(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) for (int j = i; j <= atom->ntypes; j++) - fprintf(fp, "%d %d %g %g %g %g %g %g\n", i, j, epsilon[i][i], sigma[i][i], cut[i][j], + fprintf(fp, "%d %d %g %g %g %g %g %g\n", i, j, epsilon[i][j], sigma[i][j], cut[i][j], zeta[i][j], mu[i][j], beta[i][j]); } diff --git a/src/ATC/fix_atc.cpp b/src/ATC/fix_atc.cpp index 436ffc95552..b1276d6788c 100644 --- a/src/ATC/fix_atc.cpp +++ b/src/ATC/fix_atc.cpp @@ -20,15 +20,17 @@ #include "group.h" #include "neighbor.h" +#include "ATC_Error.h" #include "ATC_Method.h" -#include "ATC_TransferKernel.h" -#include "ATC_TransferPartitionOfUnity.h" #include "ATC_CouplingEnergy.h" #include "ATC_CouplingMomentum.h" #include "ATC_CouplingMass.h" #include "ATC_CouplingMomentumEnergy.h" +#include "ATC_TransferKernel.h" +#include "ATC_TransferPartitionOfUnity.h" +#include "ATC_TypeDefs.h" +#include "ExtrinsicModel.h" #include "LammpsInterface.h" - #include using namespace LAMMPS_NS; diff --git a/src/AWPMD/atom_vec_wavepacket.cpp b/src/AWPMD/atom_vec_wavepacket.cpp index ff0d660fb6c..65b82143698 100644 --- a/src/AWPMD/atom_vec_wavepacket.cpp +++ b/src/AWPMD/atom_vec_wavepacket.cpp @@ -19,6 +19,8 @@ #include "atom.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/BOCS/compute_pressure_bocs.cpp b/src/BOCS/compute_pressure_bocs.cpp index a8bc9596cc5..16d6c91a1f1 100644 --- a/src/BOCS/compute_pressure_bocs.cpp +++ b/src/BOCS/compute_pressure_bocs.cpp @@ -42,7 +42,7 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), vptr(nullptr), id_temp(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal compute pressure/bocs command"); + if (narg < 4) utils::missing_cmd_args(FLERR,"compute pressure/bocs", error); if (igroup) error->all(FLERR,"Compute pressure/bocs must use group all"); scalar_flag = vector_flag = 1; @@ -62,12 +62,12 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : else { id_temp = utils::strdup(arg[3]); - int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute pressure/bocs temperature ID"); - if (modify->compute[icompute]->tempflag == 0) - error->all(FLERR,"Compute pressure/bocs temperature ID does not " - "compute temperature"); + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR,"Could not find compute pressure/bocs temperature compute {}", id_temp); + if (temperature->tempflag == 0) + error->all(FLERR,"Compute pressure/bocs temperature compute {} does not compute " + "temperature", id_temp); } // process optional args @@ -137,10 +137,9 @@ void ComputePressureBocs::init() // fixes could have changed or compute_modify could have changed it if (keflag) { - int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute pressure/bocs temperature ID"); - temperature = modify->compute[icompute]; + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR,"Could not find compute pressure/bocs temperature compute {}", id_temp); } // detect contributions to virial @@ -158,10 +157,8 @@ void ComputePressureBocs::init() if (improperflag && force->improper) nvirial++; } if (fixflag) { - Fix **fix = modify->fix; - int nfix = modify->nfix; - for (int i = 0; i < nfix; i++) - if (fix[i]->thermo_virial) nvirial++; + for (const auto &ifix : modify->get_fix_list()) + if (ifix->thermo_virial) nvirial++; } if (nvirial) { @@ -174,10 +171,11 @@ void ComputePressureBocs::init() vptr[nvirial++] = force->dihedral->virial; if (improperflag && force->improper) vptr[nvirial++] = force->improper->virial; - if (fixflag) - for (int i = 0; i < modify->nfix; i++) - if (modify->fix[i]->virial_global_flag && modify->fix[i]->thermo_virial) - vptr[nvirial++] = modify->fix[i]->virial; + if (fixflag) { + for (const auto &ifix : modify->get_fix_list()) + if (ifix->virial_global_flag && ifix->thermo_virial) + vptr[nvirial++] = ifix->virial; + } } // flag Kspace contribution separately, since not summed across procs diff --git a/src/BOCS/fix_bocs.cpp b/src/BOCS/fix_bocs.cpp index 4918f8d8791..25471d04a48 100644 --- a/src/BOCS/fix_bocs.cpp +++ b/src/BOCS/fix_bocs.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -26,7 +25,6 @@ #include "error.h" #include "fix_deform.h" #include "force.h" -#include "group.h" #include "irregular.h" #include "kspace.h" #include "memory.h" @@ -42,40 +40,39 @@ using namespace LAMMPS_NS; using namespace FixConst; static const char cite_user_bocs_package[] = - "BOCS package: doi:10.1021/acs.jpcb.7b09993\n\n" - "@Article{Dunn2018,\n" - " author = {N. J. H. Dunn and K. M. Lebold and M. R. {DeLyser} and\n" - " J. F. Rudzinski and W. G. Noid},\n" - " title = {{BOCS}: Bottom-Up Open-Source Coarse-Graining Software},\n" - " journal = {J.~Phys.\\ Chem.~B},\n" - " year = 2018,\n" - " volume = 122,\n" - " number = 13,\n" - " pages = {3363--3377}\n" - "}\n\n"; - - -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 - -enum{NOBIAS,BIAS}; -enum{NONE,XYZ,XY,YZ,XZ}; -enum{ISO,ANISO,TRICLINIC}; - -const int NUM_INPUT_DATA_COLUMNS = 2; // columns in the pressure correction file + "BOCS package: doi:10.1021/acs.jpcb.7b09993\n\n" + "@Article{Dunn2018,\n" + " author = {N. J. H. Dunn and K. M. Lebold and M. R. {DeLyser} and\n" + " J. F. Rudzinski and W. G. Noid},\n" + " title = {{BOCS}: Bottom-Up Open-Source Coarse-Graining Software},\n" + " journal = {J.~Phys.\\ Chem.~B},\n" + " year = 2018,\n" + " volume = 122,\n" + " number = 13,\n" + " pages = {3363--3377}\n" + "}\n\n"; + +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; +static constexpr int NUM_INPUT_DATA_COLUMNS = 2; // columns in the pressure correction file + +enum { NOBIAS, BIAS }; +enum { NONE, XYZ, XY, YZ, XZ }; +enum { ISO, ANISO, TRICLINIC }; /* ---------------------------------------------------------------------- NVT,NPH,NPT integrators for improved Nose-Hoover equations of motion ---------------------------------------------------------------------- */ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), id_dilate(nullptr), irregular(nullptr), id_temp(nullptr), - id_press(nullptr), eta(nullptr), eta_dot(nullptr), eta_dotdot(nullptr), eta_mass(nullptr), - etap(nullptr), etap_dot(nullptr), etap_dotdot(nullptr), etap_mass(nullptr) + Fix(lmp, narg, arg), irregular(nullptr), id_temp(nullptr), id_press(nullptr), eta(nullptr), + eta_dot(nullptr), eta_dotdot(nullptr), eta_mass(nullptr), etap(nullptr), etap_dot(nullptr), + etap_dotdot(nullptr), etap_mass(nullptr) { if (lmp->citeme) lmp->citeme->add(cite_user_bocs_package); - if (narg < 4) error->all(FLERR,"Illegal fix bocs command"); + // clang-format off + if (narg < 4) utils::missing_cmd_args(FLERR,"fix bocs",error); restart_global = 1; dynamic_group_allow = 1; @@ -91,8 +88,6 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : pcouple = NONE; drag = 0.0; - allremap = 1; - id_dilate = nullptr; mtchain = mpchain = 3; nc_tchain = nc_pchain = 1; mtk_flag = 1; @@ -102,8 +97,6 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : omega_mass_flag = 0; etap_mass_flag = 0; flipflag = 1; - dipole_flag = 0; - dlm_flag = 0; tcomputeflag = 0; pcomputeflag = 0; @@ -151,15 +144,14 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix bocs command"); + if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"fix bocs temp", error); tstat_flag = 1; t_start = utils::numeric(FLERR,arg[iarg+1],false,lmp); t_target = t_start; t_stop = utils::numeric(FLERR,arg[iarg+2],false,lmp); t_period = utils::numeric(FLERR,arg[iarg+3],false,lmp); if (t_start <= 0.0 || t_stop <= 0.0) - error->all(FLERR, - "Target temperature for fix bocs cannot be 0.0"); + error->all(FLERR, "Target temperature for fix bocs cannot be 0.0"); iarg += 4; } else if (strcmp(arg[iarg],"iso") == 0) { error->all(FLERR,"Illegal fix bocs command. Pressure fix must be " @@ -170,12 +162,9 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : "followed by: P_0 P_f P_coupl"); p_match_flag = 1; pcouple = XYZ; - p_start[0] = p_start[1] = p_start[2] = - utils::numeric(FLERR,arg[iarg+1],false,lmp); - p_stop[0] = p_stop[1] = p_stop[2] = - utils::numeric(FLERR,arg[iarg+2],false,lmp); - p_period[0] = p_period[1] = p_period[2] = - utils::numeric(FLERR,arg[iarg+3],false,lmp); + p_start[0] = p_start[1] = p_start[2] = utils::numeric(FLERR,arg[iarg+1],false,lmp); + p_stop[0] = p_stop[1] = p_stop[2] = utils::numeric(FLERR,arg[iarg+2],false,lmp); + p_period[0] = p_period[1] = p_period[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); p_flag[0] = p_flag[1] = p_flag[2] = 1; p_flag[3] = p_flag[4] = p_flag[5] = 0; // MRD @@ -266,13 +255,6 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : if (p_flag[2] && domain->zperiodic == 0) error->all(FLERR,"Cannot use fix bocs on a non-periodic dimension"); - if (dipole_flag) { - if (!atom->sphere_flag) - error->all(FLERR,"Using update dipole flag requires atom style sphere"); - if (!atom->mu_flag) - error->all(FLERR,"Using update dipole flag requires atom attribute mu"); - } - if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || @@ -299,7 +281,6 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : if (p_flag[4]) box_change |= BOX_CHANGE_XZ; if (p_flag[5]) box_change |= BOX_CHANGE_XY; no_change_box = 1; - if (allremap == 0) restart_pbc = 1; pstyle = ISO; // MRD this is the only one that can happen @@ -397,7 +378,7 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : // and thus its KE/temperature contribution should use group all id_temp = utils::strdup(std::string(id)+"_temp"); - modify->add_compute(fmt::format("{} all temp",id_temp)); + temperature = modify->add_compute(fmt::format("{} all temp",id_temp)); tcomputeflag = 1; // create a new compute pressure style @@ -405,7 +386,7 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id)+"_press"); - modify->add_compute(fmt::format("{} all PRESSURE/BOCS {}",id_press,id_temp)); + pressure = modify->add_compute(fmt::format("{} all PRESSURE/BOCS {}",id_press,id_temp)); pcomputeflag = 1; /*~ MRD End of stuff copied from fix_npt.cpp~*/ @@ -418,7 +399,6 @@ FixBocs::~FixBocs() { if (copymode) return; - delete[] id_dilate; delete irregular; // delete temperature and pressure if fix created them @@ -469,14 +449,6 @@ int FixBocs::setmask() void FixBocs::init() { - // recheck that dilate group has not been deleted - if (allremap == 0) { - int idilate = group->find(id_dilate); - if (idilate == -1) - error->all(FLERR,"Fix bocs dilate group ID does not exist"); - dilate_group_bit = group->bitmask[idilate]; - } - // ensure no conflict with fix deform if (pstat_flag) { @@ -616,8 +588,8 @@ int FixBocs::read_F_table( char *filename, int p_basis_type ) // Data file lines hold two floating point numbers. // Line length we allocate should be long enough without being too long. // 128 seems safe for a line we expect to be < 30 chars. - const int MAX_F_TABLE_LINE_LENGTH = 128; - char line[MAX_F_TABLE_LINE_LENGTH]; + constexpr int MAX_F_TABLE_LINE_LENGTH = 128; + char line[MAX_F_TABLE_LINE_LENGTH] = {'\0'}; std::vector inputLines; while (fgets(line, MAX_F_TABLE_LINE_LENGTH, fpi)) { inputLines.emplace_back(line); @@ -649,17 +621,13 @@ int FixBocs::read_F_table( char *filename, int p_basis_type ) for (int i = 0; i < (int)inputLines.size(); ++i) { lineNum++; // count each line processed now so lineNum messages can be 1-based test_sscanf = sscanf(inputLines.at(i).c_str()," %f , %f ",&f1, &f2); - if (test_sscanf == 2) - { + if (test_sscanf == 2) { data[VOLUME][i] = (double)f1; data[PRESSURE_CORRECTION][i] = (double)f2; - if (i == 1) - { + if (i == 1) { // second entry is used to compute the validation interval used below stdVolumeInterval = data[VOLUME][i] - data[VOLUME][i-1]; - } - else if (i > 1) - { + } else if (i > 1) { // after second entry, all intervals are validated currVolumeInterval = data[VOLUME][i] - data[VOLUME][i-1]; if (fabs(currVolumeInterval - stdVolumeInterval) > volumeIntervalTolerance) { @@ -673,17 +641,14 @@ int FixBocs::read_F_table( char *filename, int p_basis_type ) } // no concluding else is intentional: i = 0, first line, no interval to validate } - } - else - { + } else { if (comm->me == 0) error->warning(FLERR,"Bad input format: did not find 2 comma separated numeric" " values in line {} of file {}\nWARNING:\tline: {}", lineNum, filename, inputLines.at(i)); badInput = true; } - if (badInput) - { + if (badInput) { numBadVolumeIntervals++; } } @@ -700,18 +665,13 @@ int FixBocs::read_F_table( char *filename, int p_basis_type ) error->warning(FLERR,"Bad volume / pressure-correction data: {}\nSee details above", filename); } - if (p_basis_type == BASIS_LINEAR_SPLINE) - { + if (p_basis_type == BASIS_LINEAR_SPLINE) { spline_length = numEntries; numEntries = build_linear_splines(data); - } - else if (p_basis_type == BASIS_CUBIC_SPLINE) - { + } else if (p_basis_type == BASIS_CUBIC_SPLINE) { spline_length = numEntries; numEntries = build_cubic_splines(data); - } - else - { + } else { error->all(FLERR,"ERROR: invalid p_basis_type value of {} in read_F_table", p_basis_type); } @@ -724,8 +684,7 @@ int FixBocs::build_linear_splines(double **data) { splines[VOLUME] = (double *) calloc(spline_length,sizeof(double)); splines[PRESSURE_CORRECTION] = (double *) calloc(spline_length,sizeof(double)); - for (int i = 0; i < spline_length; ++i) - { + for (int i = 0; i < spline_length; ++i) { splines[VOLUME][i] = data[VOLUME][i]; splines[PRESSURE_CORRECTION][i] = data[PRESSURE_CORRECTION][i]; } @@ -758,18 +717,15 @@ int FixBocs::build_cubic_splines(double **data) memory->create(mu, n, "mu"); memory->create(z, n, "z"); - for (int i=0; i1 && i<(n-1)) - { + if (i>1 && i<(n-1)) { alpha_i = (3.0 / h[i]) * ( data[1][i+1] - data[1][i]) - (3.0 / h[i-1] ) * ( data[1][i] - data[1][i-1] ); alpha[i-1] = alpha_i; @@ -779,8 +735,7 @@ int FixBocs::build_cubic_splines(double **data) mu[0] = 0.0; z[0] = 0.0; - for (int i=1; i=0; j--) - { + for (int j=n-1; j>=0; j--) { c[j] = z[j] - mu[j]*c[j+1]; - b[j] = (a[j+1]-a[j])/h[j] - h[j]*(c[j+1] + 2.0 * c[j])/3.0; - d[j] = (c[j+1]-c[j])/(3.0 * h[j]); } int numSplines = n - 1; memory->create(splines, NUM_CUBIC_SPLINE_COLUMNS, numSplines, "splines"); - for (int idx = 0; idx < numSplines; ++idx) - { + for (int idx = 0; idx < numSplines; ++idx) { splines[0][idx] = data[0][idx]; splines[1][idx] = a[idx]; splines[2][idx] = b[idx]; @@ -1157,19 +1108,15 @@ void FixBocs::couple() } /* ---------------------------------------------------------------------- - change box size - remap all atoms or dilate group atoms depending on allremap flag + change box size, remap all atoms if rigid bodies exist, scale rigid body centers-of-mass ------------------------------------------------------------------------- */ void FixBocs::remap() { - int i; double oldlo,oldhi; double expfac; - double **x = atom->x; - int *mask = atom->mask; int nlocal = atom->nlocal; double *h = domain->h; @@ -1179,12 +1126,7 @@ void FixBocs::remap() // convert pertinent atoms and rigid bodies to lamda coords - if (allremap) domain->x2lamda(nlocal); - else { - for (i = 0; i < nlocal; i++) - if (mask[i] & dilate_group_bit) - domain->x2lamda(x[i],x[i]); - } + domain->x2lamda(nlocal); for (auto &ifix : rfix) ifix->deform(0); @@ -1324,12 +1266,7 @@ void FixBocs::remap() // convert pertinent atoms and rigid bodies back to box coords - if (allremap) domain->lamda2x(nlocal); - else { - for (i = 0; i < nlocal; i++) - if (mask[i] & dilate_group_bit) - domain->lamda2x(x[i],x[i]); - } + domain->lamda2x(nlocal); for (auto &ifix : rfix) ifix->deform(1); } @@ -1493,24 +1430,22 @@ int FixBocs::modify_param(int narg, char **arg) delete[] id_temp; id_temp = utils::strdup(arg[1]); - int icompute = modify->find_compute(arg[1]); - if (icompute < 0) - error->all(FLERR,"Could not find fix_modify temperature ID"); - temperature = modify->compute[icompute]; + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR,"Could not find fix_modify temperature compute {}", id_temp); if (temperature->tempflag == 0) - error->all(FLERR, - "Fix_modify temperature ID does not compute temperature"); + error->all(FLERR, "Fix_modify temperature compute {} does not compute temperature", id_temp); if (temperature->igroup != 0 && comm->me == 0) - error->warning(FLERR,"Temperature for fix modify is not for group all"); + error->warning(FLERR,"Temperature compute {} for fix modify is not for group all", id_temp); // reset id_temp of pressure to new temperature ID if (pstat_flag) { - icompute = modify->find_compute(id_press); - if (icompute < 0) - error->all(FLERR,"Pressure ID for fix modify does not exist"); - modify->compute[icompute]->reset_extra_compute_fix(id_temp); + pressure = modify->get_compute_by_id(id_press); + if (!pressure) + error->all(FLERR,"Pressure ID {} for fix modify does not exist", id_press); + pressure->reset_extra_compute_fix(id_temp); } return 2; diff --git a/src/BOCS/fix_bocs.h b/src/BOCS/fix_bocs.h index 71fbc273d86..7f752a03f3a 100644 --- a/src/BOCS/fix_bocs.h +++ b/src/BOCS/fix_bocs.h @@ -65,7 +65,7 @@ class FixBocs : public Fix { int tstat_flag; // 1 if control T int pstat_flag; // 1 if control P - int pstyle, pcouple, allremap; + int pstyle, pcouple; int p_flag[6]; // 1 if control P on this dim, 0 if not double p_start[6], p_stop[6]; double p_freq[6], p_target[6]; @@ -75,9 +75,7 @@ class FixBocs : public Fix { double drag, tdrag_factor; // drag factor on particle thermostat double pdrag_factor; // drag factor on barostat int kspace_flag; // 1 if KSpace invoked, 0 if not - int dilate_group_bit; // mask for dilation group std::vector rfix; // list of rigid fixes - char *id_dilate; // group name to dilate class Irregular *irregular; // for migrating atoms after box flips // MRD NJD @@ -129,8 +127,6 @@ class FixBocs : public Fix { int eta_mass_flag; // 1 if eta_mass updated, 0 if not. int omega_mass_flag; // 1 if omega_mass updated, 0 if not. int etap_mass_flag; // 1 if etap_mass updated, 0 if not. - int dipole_flag; // 1 if dipole is updated, 0 if not. - int dlm_flag; // 1 if using the DLM rotational integrator, 0 if not int scaleyz; // 1 if yz scaled with lz int scalexz; // 1 if xz scaled with lz diff --git a/src/BODY/body_nparticle.cpp b/src/BODY/body_nparticle.cpp index 62e6ee802ae..4a34f31f54d 100644 --- a/src/BODY/body_nparticle.cpp +++ b/src/BODY/body_nparticle.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-7 +static constexpr double EPSILON = 1.0e-7; enum{SPHERE,LINE,TRI}; // also in DumpImage /* ---------------------------------------------------------------------- */ @@ -99,7 +99,7 @@ int BodyNparticle::unpack_border_body(AtomVecBody::Bonus *bonus, double *buf) } /* ---------------------------------------------------------------------- - populate bonus data structure with data file values + populate bonus data structure with data file values for one body ------------------------------------------------------------------------- */ void BodyNparticle::data_body(int ibonus, int ninteger, int ndouble, diff --git a/src/BODY/body_rounded_polygon.cpp b/src/BODY/body_rounded_polygon.cpp index 2fb2a991f1b..5de0654d251 100644 --- a/src/BODY/body_rounded_polygon.cpp +++ b/src/BODY/body_rounded_polygon.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-7 +static constexpr double EPSILON = 1.0e-7; enum{SPHERE,LINE}; // also in DumpImage /* ---------------------------------------------------------------------- */ @@ -155,7 +155,7 @@ int BodyRoundedPolygon::unpack_border_body(AtomVecBody::Bonus *bonus, } /* ---------------------------------------------------------------------- - populate bonus data structure with data file values + populate bonus data structure with data file values for one body ------------------------------------------------------------------------- */ void BodyRoundedPolygon::data_body(int ibonus, int ninteger, int ndouble, diff --git a/src/BODY/body_rounded_polyhedron.cpp b/src/BODY/body_rounded_polyhedron.cpp index 1d11644618e..f34a2120870 100644 --- a/src/BODY/body_rounded_polyhedron.cpp +++ b/src/BODY/body_rounded_polyhedron.cpp @@ -31,10 +31,10 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-7 -#define MAX_FACE_SIZE 4 // maximum number of vertices per face (for now) +static constexpr double EPSILON = 1.0e-7; +static constexpr int MAX_FACE_SIZE = 4; // maximum number of vertices per face (for now) -enum{SPHERE,LINE}; // also in DumpImage +enum { SPHERE, LINE }; // also in DumpImage /* ---------------------------------------------------------------------- */ @@ -99,10 +99,9 @@ int BodyRoundedPolyhedron::nedges(AtomVecBody::Bonus *bonus) { int nvertices = bonus->ivalue[0]; int nedges = bonus->ivalue[1]; - //int nfaces = bonus->ivalue[2]; if (nvertices == 1) return 0; else if (nvertices == 2) return 1; - return nedges; //(nvertices+nfaces-2); // Euler formula: V-E+F=2 + return nedges; } /* ---------------------------------------------------------------------- */ @@ -116,6 +115,9 @@ double *BodyRoundedPolyhedron::edges(AtomVecBody::Bonus *bonus) int BodyRoundedPolyhedron::nfaces(AtomVecBody::Bonus *bonus) { + int nvertices = bonus->ivalue[0]; + if (nvertices < 3) return 0; + return bonus->ivalue[2]; } @@ -185,7 +187,7 @@ int BodyRoundedPolyhedron::unpack_border_body(AtomVecBody::Bonus *bonus, double } /* ---------------------------------------------------------------------- - populate bonus data structure with data file values + populate bonus data structure with data file values for one body ------------------------------------------------------------------------- */ void BodyRoundedPolyhedron::data_body(int ibonus, int ninteger, int ndouble, diff --git a/src/BODY/compute_body_local.cpp b/src/BODY/compute_body_local.cpp index 42afa135144..4a4a36bfae7 100644 --- a/src/BODY/compute_body_local.cpp +++ b/src/BODY/compute_body_local.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 +static constexpr int DELTA = 10000; enum{ID,TYPE,INDEX}; diff --git a/src/BODY/compute_temp_body.cpp b/src/BODY/compute_temp_body.cpp index 319c2ff986a..39b25186006 100644 --- a/src/BODY/compute_temp_body.cpp +++ b/src/BODY/compute_temp_body.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,27 +18,28 @@ #include "compute_temp_body.h" -#include -#include "math_extra.h" #include "atom.h" #include "atom_vec_body.h" -#include "update.h" -#include "force.h" #include "domain.h" -#include "modify.h" -#include "group.h" #include "error.h" +#include "force.h" +#include "group.h" +#include "math_extra.h" +#include "modify.h" +#include "update.h" + +#include using namespace LAMMPS_NS; -enum{ROTATE,ALL}; +enum { ROTATE, ALL }; /* ---------------------------------------------------------------------- */ ComputeTempBody::ComputeTempBody(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), id_bias(nullptr), tbias(nullptr), avec(nullptr) + Compute(lmp, narg, arg), id_bias(nullptr), tbias(nullptr), avec(nullptr) { - if (narg < 3) error->all(FLERR,"Illegal compute temp/body command"); + if (narg < 3) utils::missing_cmd_args(FLERR, "compute temp/body", error); scalar_flag = vector_flag = 1; size_vector = 6; @@ -48,25 +48,24 @@ ComputeTempBody::ComputeTempBody(LAMMPS *lmp, int narg, char **arg) : tempflag = 1; tempbias = 0; - id_bias = nullptr; mode = ALL; + // clang-format off + int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/body command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "compute temp/body bias", error); tempbias = 1; id_bias = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"dof") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/body command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "compute temp/body dof", error); if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE; else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL; - else error->all(FLERR,"Illegal compute temp/body command"); + else error->all(FLERR,"Unknown compute temp/body dof keyword {}", arg[iarg+1]); iarg += 2; - } else error->all(FLERR,"Illegal compute temp/body command"); + } else error->all(FLERR,"Unknown compute temp/body keyword {}", arg[iarg]); } vector = new double[size_vector]; @@ -77,8 +76,8 @@ ComputeTempBody::ComputeTempBody(LAMMPS *lmp, int narg, char **arg) : ComputeTempBody::~ComputeTempBody() { - delete [] id_bias; - delete [] vector; + delete[] id_bias; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -88,8 +87,7 @@ void ComputeTempBody::init() // error check avec = dynamic_cast(atom->style_match("body")); - if (!avec) - error->all(FLERR,"Compute temp/body requires atom style body"); + if (!avec) error->all(FLERR,"Compute temp/body requires atom style body"); // check that all particles are finite-size, no point particles allowed @@ -99,18 +97,16 @@ void ComputeTempBody::init() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - if (body[i] < 0) - error->one(FLERR,"Compute temp/body requires bodies"); + if (body[i] < 0) error->one(FLERR,"Compute temp/body requires bodies"); if (tempbias) { - int i = modify->find_compute(id_bias); - if (i < 0) - error->all(FLERR,"Could not find compute ID for temperature bias"); - tbias = modify->compute[i]; + tbias = modify->get_compute_by_id(id_bias); + if (!tbias) + error->all(FLERR,"Could not find compute {} for temperature bias", id_bias); if (tbias->tempflag == 0) - error->all(FLERR,"Bias compute does not calculate temperature"); + error->all(FLERR,"Bias compute {} does not calculate temperature", id_bias); if (tbias->tempbias == 0) - error->all(FLERR,"Bias compute does not calculate a velocity bias"); + error->all(FLERR,"Bias compute {} does not calculate a velocity bias", id_bias); if (tbias->igroup != igroup) error->all(FLERR,"Bias compute group does not match compute group"); if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2; diff --git a/src/BODY/fix_wall_body_polygon.cpp b/src/BODY/fix_wall_body_polygon.cpp index 6f0622cbf6b..051d316a28b 100644 --- a/src/BODY/fix_wall_body_polygon.cpp +++ b/src/BODY/fix_wall_body_polygon.cpp @@ -43,11 +43,11 @@ enum {INVALID=0,NONE=1,VERTEX=2}; enum {FAR=0,XLO,XHI,YLO,YHI}; //#define _POLYGON_DEBUG -#define DELTA 10000 -#define EPSILON 1e-2 // dimensionless threshold (dot products, end point checks, contact checks) -#define BIG 1.0e20 -#define MAX_CONTACTS 4 // maximum number of contacts for 2D models -#define EFF_CONTACTS 2 // effective contacts for 2D models +static constexpr int DELTA = 10000; +static constexpr double EPSILON = 1.0e-2; // dimensionless threshold (dot products, end point checks, contact checks) +static constexpr double BIG = 1.0e20; +static constexpr int MAX_CONTACTS = 4; // maximum number of contacts for 2D models +static constexpr int EFF_CONTACTS = 2; // effective contacts for 2D models /* ---------------------------------------------------------------------- */ diff --git a/src/BODY/fix_wall_body_polyhedron.cpp b/src/BODY/fix_wall_body_polyhedron.cpp index 4b28f6af726..b42cc6843f1 100644 --- a/src/BODY/fix_wall_body_polyhedron.cpp +++ b/src/BODY/fix_wall_body_polyhedron.cpp @@ -43,11 +43,10 @@ enum {INVALID=0,NONE=1,VERTEX=2}; enum {FAR=0,XLO,XHI,YLO,YHI,ZLO,ZHI}; //#define _POLYHEDRON_DEBUG -#define DELTA 10000 -#define EPSILON 1e-3 // dimensionless threshold (dot products, end point checks) -#define BIG 1.0e20 -#define MAX_CONTACTS 4 // maximum number of contacts for 2D models -#define EFF_CONTACTS 2 // effective contacts for 2D models +static constexpr int DELTA = 10000; +static constexpr double EPSILON = 1.0e-3; // dimensionless threshold (dot products, end point checks) +static constexpr double BIG = 1.0e20; +static constexpr int MAX_CONTACTS = 4; // maximum number of contacts for 2D models /* ---------------------------------------------------------------------- */ diff --git a/src/BODY/pair_body_nparticle.cpp b/src/BODY/pair_body_nparticle.cpp index 9e1e640015b..29ee06dbefd 100644 --- a/src/BODY/pair_body_nparticle.cpp +++ b/src/BODY/pair_body_nparticle.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 +static constexpr int DELTA = 10000; /* ---------------------------------------------------------------------- */ diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp index 24f38a6a0a1..2293f56a981 100644 --- a/src/BODY/pair_body_rounded_polygon.cpp +++ b/src/BODY/pair_body_rounded_polygon.cpp @@ -39,15 +39,15 @@ using namespace LAMMPS_NS; -#define DELTA 10000 -#define EPSILON 1e-3 // dimensionless threshold (dot products, end point checks, contact checks) -#define MAX_CONTACTS 4 // maximum number of contacts for 2D models -#define EFF_CONTACTS 2 // effective contacts for 2D models +static constexpr int DELTA = 10000; +static constexpr double EPSILON = 1.0e-3; // dimensionless threshold (dot products, end point checks, contact checks) +static constexpr int MAX_CONTACTS = 4; // maximum number of contacts for 2D models +static constexpr int EFF_CONTACTS = 2; // effective contacts for 2D models //#define _CONVEX_POLYGON //#define _POLYGON_DEBUG -enum {INVALID=0,NONE=1,VERTEXI=2,VERTEXJ=3,EDGE=4}; +enum { INVALID=0, NONE=1, VERTEXI=2, VERTEXJ=3, EDGE=4 }; /* ---------------------------------------------------------------------- */ @@ -415,17 +415,14 @@ void PairBodyRoundedPolygon::init_style() if (!avec) error->all(FLERR,"Pair body/rounded/polygon requires atom style body"); if (strcmp(avec->bptr->style,"rounded/polygon") != 0) - error->all(FLERR,"Pair body/rounded/polygon requires " - "body style rounded/polygon"); + error->all(FLERR,"Pair body/rounded/polygon requires body style rounded/polygon"); bptr = dynamic_cast(avec->bptr); if (force->newton_pair == 0) - error->all(FLERR,"Pair style body/rounded/polygon requires " - "newton pair on"); + error->all(FLERR,"Pair style body/rounded/polygon requires newton pair on"); if (comm->ghost_velocity == 0) - error->all(FLERR,"Pair body/rounded/polygon requires " - "ghost atoms store velocity"); + error->all(FLERR,"Pair body/rounded/polygon requires ghost atoms store velocity"); neighbor->add_request(this); @@ -463,27 +460,24 @@ void PairBodyRoundedPolygon::init_style() for (i = 1; i <= ntypes; i++) maxerad[i] = merad[i] = 0; - int ipour; - for (ipour = 0; ipour < modify->nfix; ipour++) - if (strcmp(modify->fix[ipour]->style,"pour") == 0) break; - if (ipour == modify->nfix) ipour = -1; + Fix *fixpour = nullptr; + auto pours = modify->get_fix_by_style("^pour"); + if (pours.size() > 0) fixpour = pours[0]; + + Fix *fixdep = nullptr; + auto deps = modify->get_fix_by_style("^deposit"); + if (deps.size() > 0) fixdep = deps[0]; - int idep; - for (idep = 0; idep < modify->nfix; idep++) - if (strcmp(modify->fix[idep]->style,"deposit") == 0) break; - if (idep == modify->nfix) idep = -1; for (i = 1; i <= ntypes; i++) { merad[i] = 0.0; - if (ipour >= 0) { + if (fixpour) { itype = i; - merad[i] = - *((double *) modify->fix[ipour]->extract("radius",itype)); + merad[i] = *((double *) fixpour->extract("radius",itype)); } - if (idep >= 0) { + if (fixdep) { itype = i; - merad[i] = - *((double *) modify->fix[idep]->extract("radius",itype)); + merad[i] = *((double *) fixdep->extract("radius",itype)); } } @@ -570,8 +564,7 @@ void PairBodyRoundedPolygon::body2space(int i) } if ((body_num_edges > 0) && (edge_ends == nullptr)) - error->one(FLERR,"Inconsistent edge data for body of atom {}", - atom->tag[i]); + error->one(FLERR,"Inconsistent edge data for body of atom {}", atom->tag[i]); for (int m = 0; m < body_num_edges; m++) { edge[nedge][0] = static_cast(edge_ends[2*m+0]); diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp index e261ff14d39..ed83dc49e29 100644 --- a/src/BODY/pair_body_rounded_polyhedron.cpp +++ b/src/BODY/pair_body_rounded_polyhedron.cpp @@ -43,10 +43,10 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 10000 -#define EPSILON 1e-3 // dimensionless threshold (dot products, end point checks, contact checks) -#define MAX_FACE_SIZE 4 // maximum number of vertices per face (same as BodyRoundedPolyhedron) -#define MAX_CONTACTS 32 // for 3D models (including duplicated counts) +static constexpr int DELTA = 10000; +static constexpr double EPSILON = 1.0e-3; // dimensionless threshold (dot products, end point checks, contact checks) +static constexpr int MAX_FACE_SIZE = 4; // maximum number of vertices per face (same as BodyRoundedPolyhedron) +static constexpr int MAX_CONTACTS = 32; // for 3D models (including duplicated counts) //#define _POLYHEDRON_DEBUG @@ -222,8 +222,7 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag) // sphere-sphere interaction if (npi == 1 && npj == 1) { - sphere_against_sphere(i, j, itype, jtype, delx, dely, delz, - rsq, v, f, evflag); + sphere_against_sphere(i, j, itype, jtype, delx, dely, delz, rsq, v, f, evflag); continue; } @@ -391,20 +390,16 @@ void PairBodyRoundedPolyhedron::coeff(int narg, char **arg) void PairBodyRoundedPolyhedron::init_style() { avec = dynamic_cast(atom->style_match("body")); - if (!avec) error->all(FLERR,"Pair body/rounded/polyhedron requires " - "atom style body"); + if (!avec) error->all(FLERR,"Pair body/rounded/polyhedron requires atom style body"); if (strcmp(avec->bptr->style,"rounded/polyhedron") != 0) - error->all(FLERR,"Pair body/rounded/polyhedron requires " - "body style rounded/polyhedron"); + error->all(FLERR,"Pair body/rounded/polyhedron requires body style rounded/polyhedron"); bptr = dynamic_cast(avec->bptr); if (force->newton_pair == 0) - error->all(FLERR,"Pair style body/rounded/polyhedron requires " - "newton pair on"); + error->all(FLERR,"Pair style body/rounded/polyhedron requires newton pair on"); if (comm->ghost_velocity == 0) - error->all(FLERR,"Pair body/rounded/polyhedron requires " - "ghost atoms store velocity"); + error->all(FLERR,"Pair body/rounded/polyhedron requires ghost atoms store velocity"); neighbor->add_request(this); @@ -446,27 +441,23 @@ void PairBodyRoundedPolyhedron::init_style() for (i = 1; i <= ntypes; i++) maxerad[i] = merad[i] = 0; - int ipour; - for (ipour = 0; ipour < modify->nfix; ipour++) - if (strcmp(modify->fix[ipour]->style,"pour") == 0) break; - if (ipour == modify->nfix) ipour = -1; + Fix *fixpour = nullptr; + auto pours = modify->get_fix_by_style("^pour"); + if (pours.size() > 0) fixpour = pours[0]; - int idep; - for (idep = 0; idep < modify->nfix; idep++) - if (strcmp(modify->fix[idep]->style,"deposit") == 0) break; - if (idep == modify->nfix) idep = -1; + Fix *fixdep = nullptr; + auto deps = modify->get_fix_by_style("^deposit"); + if (deps.size() > 0) fixdep = deps[0]; for (i = 1; i <= ntypes; i++) { merad[i] = 0.0; - if (ipour >= 0) { + if (fixpour) { itype = i; - merad[i] = - *((double *) modify->fix[ipour]->extract("radius",itype)); + merad[i] = *((double *) fixpour->extract("radius",itype)); } - if (idep >= 0) { + if (fixdep) { itype = i; - merad[i] = - *((double *) modify->fix[idep]->extract("radius",itype)); + merad[i] = *((double *) fixdep->extract("radius",itype)); } } @@ -558,8 +549,7 @@ void PairBodyRoundedPolyhedron::body2space(int i) } if ((body_num_edges > 0) && (edge_ends == nullptr)) - error->one(FLERR,"Inconsistent edge data for body of atom {}", - atom->tag[i]); + error->one(FLERR,"Inconsistent edge data for body of atom {}", atom->tag[i]); for (int m = 0; m < body_num_edges; m++) { edge[nedge][0] = static_cast(edge_ends[2*m+0]); @@ -585,8 +575,7 @@ void PairBodyRoundedPolyhedron::body2space(int i) } if ((body_num_faces > 0) && (face_pts == nullptr)) - error->one(FLERR,"Inconsistent face data for body of atom {}", - atom->tag[i]); + error->one(FLERR,"Inconsistent face data for body of atom {}", atom->tag[i]); for (int m = 0; m < body_num_faces; m++) { for (int k = 0; k < MAX_FACE_SIZE; k++) diff --git a/src/BPM/atom_vec_bpm_sphere.cpp b/src/BPM/atom_vec_bpm_sphere.cpp index 2820a74c8a6..4332d517b4a 100644 --- a/src/BPM/atom_vec_bpm_sphere.cpp +++ b/src/BPM/atom_vec_bpm_sphere.cpp @@ -14,14 +14,11 @@ #include "atom_vec_bpm_sphere.h" #include "atom.h" -#include "comm.h" #include "error.h" #include "fix.h" #include "math_const.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using MathConst::MY_PI; @@ -35,7 +32,6 @@ AtomVecBPMSphere::AtomVecBPMSphere(LAMMPS *_lmp) : AtomVec(_lmp) radvary = 0; atom->molecule_flag = 1; - atom->sphere_flag = 1; atom->radius_flag = atom->rmass_flag = atom->omega_flag = atom->torque_flag = atom->quat_flag = 1; // strings with peratom variables to include in each AtomVec method diff --git a/src/BPM/bond_bpm.cpp b/src/BPM/bond_bpm.cpp index 3ebeed3f1d9..f1482d4203a 100644 --- a/src/BPM/bond_bpm.cpp +++ b/src/BPM/bond_bpm.cpp @@ -224,7 +224,7 @@ void BondBPM::settings(int narg, char **arg) ifix = modify->get_fix_by_id(id_fix_prop_atom); if (!ifix) - ifix = modify->add_fix(fmt::format("{} all property/atom {} {} {} ghost yes", + ifix = modify->add_fix(fmt::format("{} all property/atom d_{} d_{} d_{} ghost yes", id_fix_prop_atom, x_ref_id, y_ref_id, z_ref_id)); int type_flag; @@ -357,7 +357,6 @@ void BondBPM::process_broken(int i, int j) if (i < nlocal) { for (m = 0; m < num_bond[i]; m++) { if (bond_atom[i][m] == tag[j]) { - bond_type[i][m] = 0; n = num_bond[i]; bond_type[i][m] = bond_type[i][n - 1]; bond_atom[i][m] = bond_atom[i][n - 1]; @@ -372,7 +371,6 @@ void BondBPM::process_broken(int i, int j) if (j < nlocal) { for (m = 0; m < num_bond[j]; m++) { if (bond_atom[j][m] == tag[i]) { - bond_type[j][m] = 0; n = num_bond[j]; bond_type[j][m] = bond_type[j][n - 1]; bond_atom[j][m] = bond_atom[j][n - 1]; diff --git a/src/BPM/bond_bpm_rotational.cpp b/src/BPM/bond_bpm_rotational.cpp index ffb0d9521d0..f2bfa3d770d 100644 --- a/src/BPM/bond_bpm_rotational.cpp +++ b/src/BPM/bond_bpm_rotational.cpp @@ -28,7 +28,7 @@ #include #include -#define EPSILON 1e-10 +static constexpr double EPSILON = 1e-10; using namespace LAMMPS_NS; using MathConst::MY_SQRT2; @@ -645,7 +645,7 @@ void BondBPMRotational::init_style() { BondBPM::init_style(); - if (!atom->quat_flag || !atom->sphere_flag) + if (!atom->quat_flag || !atom->radius_flag || !atom->omega_flag) error->all(FLERR, "Bond bpm/rotational requires atom style bpm/sphere"); if (comm->ghost_velocity == 0) error->all(FLERR, "Bond bpm/rotational requires ghost atoms store velocity"); diff --git a/src/BPM/bond_bpm_spring.cpp b/src/BPM/bond_bpm_spring.cpp index 37b79f93fba..28d17b408a2 100644 --- a/src/BPM/bond_bpm_spring.cpp +++ b/src/BPM/bond_bpm_spring.cpp @@ -26,7 +26,7 @@ #include #include -#define EPSILON 1e-10 +static constexpr double EPSILON = 1e-10; using namespace LAMMPS_NS; diff --git a/src/BPM/fix_nve_bpm_sphere.cpp b/src/BPM/fix_nve_bpm_sphere.cpp index ceab07822e1..1766f49c5cd 100644 --- a/src/BPM/fix_nve_bpm_sphere.cpp +++ b/src/BPM/fix_nve_bpm_sphere.cpp @@ -28,7 +28,7 @@ using namespace MathExtra; FixNVEBPMSphere::FixNVEBPMSphere(LAMMPS *_lmp, int narg, char **arg) : FixNVE(_lmp, narg, arg) { - if (narg < 3) error->all(FLERR, "Illegal fix nve/bpm/sphere command"); + if (narg < 3) utils::missing_cmd_args(FLERR, "fix nve/bpm/sphere", error); time_integrate = 1; @@ -45,14 +45,14 @@ FixNVEBPMSphere::FixNVEBPMSphere(LAMMPS *_lmp, int narg, char **arg) : FixNVE(_l error->all(FLERR, "Fix nve/bpm/sphere disc requires 2d simulation"); iarg++; } else - error->all(FLERR, "Illegal fix nve/bpm/sphere command"); + error->all(FLERR, "Illegal fix nve/bpm/sphere keyword {}", arg[iarg]); } inv_inertia = 1.0 / inertia; // error checks - if (!atom->quat_flag || !atom->sphere_flag) + if (!atom->quat_flag || !atom->radius_flag || !atom->omega_flag) error->all(FLERR, "Fix nve/bpm/sphere requires atom style bpm/sphere"); } diff --git a/src/fix_update_special_bonds.cpp b/src/BPM/fix_update_special_bonds.cpp similarity index 73% rename from src/fix_update_special_bonds.cpp rename to src/BPM/fix_update_special_bonds.cpp index 159b2a11700..cdc72ee9878 100644 --- a/src/fix_update_special_bonds.cpp +++ b/src/BPM/fix_update_special_bonds.cpp @@ -20,15 +20,13 @@ #include "force.h" #include "modify.h" #include "neigh_list.h" -#include "pair.h" +#include "neighbor.h" #include using namespace LAMMPS_NS; using namespace FixConst; -#define DELTA 10000 - /* ---------------------------------------------------------------------- */ FixUpdateSpecialBonds::FixUpdateSpecialBonds(LAMMPS *lmp, int narg, char **arg) : @@ -61,7 +59,8 @@ void FixUpdateSpecialBonds::setup(int /*vflag*/) // Require atoms know about all of their bonds and if they break if (force->newton_bond) error->all(FLERR, "Fix update/special/bonds requires Newton bond off"); - if (!atom->avec->bonds_allow) error->all(FLERR, "Fix update/special/bonds requires atom bonds"); + if (!atom->avec->bonds_allow) + error->all(FLERR, "Fix update/special/bonds requires an atom style supporting bonds"); // special lj must be 0 1 1 to censor pair forces between bonded particles // special coulomb must be 1 1 1 to ensure all pairs are included in the @@ -72,9 +71,6 @@ void FixUpdateSpecialBonds::setup(int /*vflag*/) force->special_coul[3] != 1.0) error->all(FLERR, "Fix update/special/bonds requires special Coulomb weights = 1,1,1"); // Implies neighbor->special_flag = [X, 2, 1, 1] - - if (utils::strmatch(force->pair_style, "^hybrid")) - error->all(FLERR, "Cannot use fix update/special/bonds with hybrid pair styles"); } /* ---------------------------------------------------------------------- @@ -158,69 +154,86 @@ void FixUpdateSpecialBonds::pre_force(int /*vflag*/) int i1, i2, j, jj, jnum; int *jlist, *numneigh, **firstneigh; tagint tag1, tag2; + NeighList *list; int nlocal = atom->nlocal; - tagint *tag = atom->tag; - NeighList *list = force->pair->list; // may need to be generalized for pair hybrid* - numneigh = list->numneigh; - firstneigh = list->firstneigh; // In theory could communicate a list of broken bonds to neighboring processors here // to remove restriction that users use Newton bond off - for (auto const &it : new_broken_pairs) { - tag1 = it.first; - tag2 = it.second; - i1 = atom->map(tag1); - i2 = atom->map(tag2); - - // Loop through atoms of owned atoms i j - if (i1 < nlocal) { - jlist = firstneigh[i1]; - jnum = numneigh[i1]; - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= SPECIALMASK; // Clear special bond bits - if (tag[j] == tag2) jlist[jj] = j; + for (int ilist = 0; ilist < neighbor->nlist; ilist++) { + list = neighbor->lists[ilist]; + + // Skip copied lists, will update original + if (list->copy) continue; + + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + for (auto const &it : new_broken_pairs) { + tag1 = it.first; + tag2 = it.second; + i1 = atom->map(tag1); + i2 = atom->map(tag2); + + // Loop through atoms of owned atoms i j + if (i1 < nlocal) { + jlist = firstneigh[i1]; + jnum = numneigh[i1]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= SPECIALMASK; // Clear special bond bits + if (tag[j] == tag2) jlist[jj] = j; + } } - } - if (i2 < nlocal) { - jlist = firstneigh[i2]; - jnum = numneigh[i2]; - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= SPECIALMASK; // Clear special bond bits - if (tag[j] == tag1) jlist[jj] = j; + if (i2 < nlocal) { + jlist = firstneigh[i2]; + jnum = numneigh[i2]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= SPECIALMASK; // Clear special bond bits + if (tag[j] == tag1) jlist[jj] = j; + } } } } - for (auto const &it : new_created_pairs) { - tag1 = it.first; - tag2 = it.second; - i1 = atom->map(tag1); - i2 = atom->map(tag2); - - // Loop through atoms of owned atoms i j and update SB bits - if (i1 < nlocal) { - jlist = firstneigh[i1]; - jnum = numneigh[i1]; - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - if (((j >> SBBITS) & 3) != 0) continue; // Skip bonded pairs - if (tag[j] == tag2) jlist[jj] = j ^ (1 << SBBITS); // Add 1-2 special bond bits + for (int ilist = 0; ilist < neighbor->nlist; ilist++) { + list = neighbor->lists[ilist]; + + // Skip copied lists, will update original + if (list->copy) continue; + + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + for (auto const &it : new_created_pairs) { + tag1 = it.first; + tag2 = it.second; + i1 = atom->map(tag1); + i2 = atom->map(tag2); + + // Loop through atoms of owned atoms i j and update SB bits + if (i1 < nlocal) { + jlist = firstneigh[i1]; + jnum = numneigh[i1]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + if (((j >> SBBITS) & 3) != 0) continue; // Skip bonded pairs + if (tag[j] == tag2) jlist[jj] = j ^ (1 << SBBITS); // Add 1-2 special bond bits + } } - } - if (i2 < nlocal) { - jlist = firstneigh[i2]; - jnum = numneigh[i2]; - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - if (((j >> SBBITS) & 3) != 0) continue; // Skip bonded pairs - if (tag[j] == tag1) jlist[jj] = j ^ (1 << SBBITS); // Add 1-2 special bond bits + if (i2 < nlocal) { + jlist = firstneigh[i2]; + jnum = numneigh[i2]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + if (((j >> SBBITS) & 3) != 0) continue; // Skip bonded pairs + if (tag[j] == tag1) jlist[jj] = j ^ (1 << SBBITS); // Add 1-2 special bond bits + } } } } diff --git a/src/fix_update_special_bonds.h b/src/BPM/fix_update_special_bonds.h similarity index 100% rename from src/fix_update_special_bonds.h rename to src/BPM/fix_update_special_bonds.h diff --git a/src/BPM/pair_bpm_spring.cpp b/src/BPM/pair_bpm_spring.cpp index 11771563597..01cee91b4c8 100644 --- a/src/BPM/pair_bpm_spring.cpp +++ b/src/BPM/pair_bpm_spring.cpp @@ -19,6 +19,7 @@ #include "force.h" #include "memory.h" #include "neigh_list.h" +#include "neighbor.h" #include @@ -202,6 +203,18 @@ void PairBPMSpring::coeff(int narg, char **arg) if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients"); } +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairBPMSpring::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair bpm/spring requires ghost atoms store velocity"); + + neighbor->add_request(this); +} + /* ---------------------------------------------------------------------- init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ diff --git a/src/BPM/pair_bpm_spring.h b/src/BPM/pair_bpm_spring.h index 3cb281bff3b..c10e4a34008 100644 --- a/src/BPM/pair_bpm_spring.h +++ b/src/BPM/pair_bpm_spring.h @@ -31,6 +31,7 @@ class PairBPMSpring : public Pair { void compute(int, int) override; void settings(int, char **) override; void coeff(int, char **) override; + void init_style() override; double init_one(int, int) override; void write_restart(FILE *) override; void read_restart(FILE *) override; diff --git a/src/BROWNIAN/fix_brownian_base.cpp b/src/BROWNIAN/fix_brownian_base.cpp index b2e89a096a4..508ce4d1c6f 100644 --- a/src/BROWNIAN/fix_brownian_base.cpp +++ b/src/BROWNIAN/fix_brownian_base.cpp @@ -204,7 +204,7 @@ FixBrownianBase::~FixBrownianBase() delete[] gamma_r_invsqrt; } - if (dipole_flag) { delete[] dipole_body; } + if (dipole_flag) delete[] dipole_body; delete rng; } diff --git a/src/BROWNIAN/fix_brownian_sphere.cpp b/src/BROWNIAN/fix_brownian_sphere.cpp index 220a3b9735a..79e3858f00b 100644 --- a/src/BROWNIAN/fix_brownian_sphere.cpp +++ b/src/BROWNIAN/fix_brownian_sphere.cpp @@ -36,12 +36,11 @@ FixBrownianSphere::FixBrownianSphere(LAMMPS *lmp, int narg, char **arg) : FixBrownianBase(lmp, narg, arg) { if (gamma_t_eigen_flag || gamma_r_eigen_flag) { - error->all(FLERR, "Illegal fix brownian command."); + error->all(FLERR, "Illegal fix brownian/sphere command."); } - if (!gamma_t_flag || !gamma_r_flag) { error->all(FLERR, "Illegal fix brownian command."); } + if (!gamma_t_flag || !gamma_r_flag) error->all(FLERR, "Illegal fix brownian/sphere command."); if (!atom->mu_flag) error->all(FLERR, "Fix brownian/sphere requires atom attribute mu"); - if (!atom->sphere_flag) error->all(FLERR, "Fix brownian/sphere requires atom style sphere"); } /* ---------------------------------------------------------------------- */ diff --git a/src/BROWNIAN/fix_propel_self.cpp b/src/BROWNIAN/fix_propel_self.cpp index 8d97b828a90..e98f461b805 100644 --- a/src/BROWNIAN/fix_propel_self.cpp +++ b/src/BROWNIAN/fix_propel_self.cpp @@ -35,7 +35,7 @@ using namespace FixConst; enum { DIPOLE, VELOCITY, QUAT }; -#define TOL 1e-14 +static constexpr double TOL = 1e-14; /* ---------------------------------------------------------------------- */ diff --git a/src/CG-DNA/fix_nve_dot.cpp b/src/CG-DNA/fix_nve_dot.cpp index a9d288eb16e..4fbf9bb9be4 100644 --- a/src/CG-DNA/fix_nve_dot.cpp +++ b/src/CG-DNA/fix_nve_dot.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathExtra; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ diff --git a/src/CG-DNA/fix_nve_dotc_langevin.cpp b/src/CG-DNA/fix_nve_dotc_langevin.cpp index 56436a3a983..8151cbe4fea 100644 --- a/src/CG-DNA/fix_nve_dotc_langevin.cpp +++ b/src/CG-DNA/fix_nve_dotc_langevin.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathExtra; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ diff --git a/src/CG-DNA/pair_oxdna_stk.cpp b/src/CG-DNA/pair_oxdna_stk.cpp index 99ddf9c96aa..1ef779dbd90 100644 --- a/src/CG-DNA/pair_oxdna_stk.cpp +++ b/src/CG-DNA/pair_oxdna_stk.cpp @@ -25,6 +25,7 @@ #include "memory.h" #include "mf_oxdna.h" #include "neighbor.h" +#include "neigh_list.h" #include #include diff --git a/src/CG-DNA/pair_oxrna2_stk.cpp b/src/CG-DNA/pair_oxrna2_stk.cpp index f6e12fffe12..f56aa572e8c 100644 --- a/src/CG-DNA/pair_oxrna2_stk.cpp +++ b/src/CG-DNA/pair_oxrna2_stk.cpp @@ -26,6 +26,7 @@ #include "memory.h" #include "mf_oxdna.h" #include "neighbor.h" +#include "neigh_list.h" #include #include diff --git a/src/CG-SPICA/angle_spica.cpp b/src/CG-SPICA/angle_spica.cpp index 3f8a506ed26..45b28d812a3 100644 --- a/src/CG-SPICA/angle_spica.cpp +++ b/src/CG-SPICA/angle_spica.cpp @@ -39,7 +39,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace LJSPICAParms; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/CG-SPICA/pair_lj_spica_coul_long.cpp b/src/CG-SPICA/pair_lj_spica_coul_long.cpp index 8b655ea9116..9e0d4dc2768 100644 --- a/src/CG-SPICA/pair_lj_spica_coul_long.cpp +++ b/src/CG-SPICA/pair_lj_spica_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -35,14 +36,7 @@ using namespace LAMMPS_NS; using namespace LJSPICAParms; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/CLASS2/angle_class2.cpp b/src/CLASS2/angle_class2.cpp index c731a4d5c9a..1dbaaf05684 100644 --- a/src/CLASS2/angle_class2.cpp +++ b/src/CLASS2/angle_class2.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/CLASS2/dihedral_class2.cpp b/src/CLASS2/dihedral_class2.cpp index d49d50f0e6a..288fac2e923 100644 --- a/src/CLASS2/dihedral_class2.cpp +++ b/src/CLASS2/dihedral_class2.cpp @@ -32,8 +32,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.0000001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.0000001; /* ---------------------------------------------------------------------- */ diff --git a/src/CLASS2/improper_class2.cpp b/src/CLASS2/improper_class2.cpp index 1e172757b0b..73f21600bb1 100644 --- a/src/CLASS2/improper_class2.cpp +++ b/src/CLASS2/improper_class2.cpp @@ -32,8 +32,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperClass2::ImproperClass2(LAMMPS *lmp) : Improper(lmp) diff --git a/src/CLASS2/pair_lj_class2_coul_long.cpp b/src/CLASS2/pair_lj_class2_coul_long.cpp index 2a3d7a706ef..965810c8f7b 100644 --- a/src/CLASS2/pair_lj_class2_coul_long.cpp +++ b/src/CLASS2/pair_lj_class2_coul_long.cpp @@ -16,6 +16,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -29,16 +30,9 @@ #include using namespace LAMMPS_NS; +using namespace EwaldConst; using namespace MathConst; -static constexpr double EWALD_F = 1.12837917; -static constexpr double EWALD_P = 0.3275911; -static constexpr double A1 = 0.254829592; -static constexpr double A2 = -0.284496736; -static constexpr double A3 = 1.421413741; -static constexpr double A4 = -1.453152027; -static constexpr double A5 = 1.061405429; - /* ---------------------------------------------------------------------- */ PairLJClass2CoulLong::PairLJClass2CoulLong(LAMMPS *lmp) : Pair(lmp) diff --git a/src/COLLOID/fix_wall_colloid.cpp b/src/COLLOID/fix_wall_colloid.cpp index 0637057417e..75dc5c797fa 100644 --- a/src/COLLOID/fix_wall_colloid.cpp +++ b/src/COLLOID/fix_wall_colloid.cpp @@ -34,7 +34,7 @@ FixWallColloid::FixWallColloid(LAMMPS *lmp, int narg, char **arg) : FixWall(lmp, void FixWallColloid::init() { - if (!atom->sphere_flag) error->all(FLERR, "Fix wall/colloid requires atom style sphere"); + if (!atom->radius_flag) error->all(FLERR, "Fix wall/colloid requires atom attribute radius"); // ensure all particles in group are extended particles diff --git a/src/COLLOID/pair_brownian.cpp b/src/COLLOID/pair_brownian.cpp index 82be043df02..39432ca61b7 100644 --- a/src/COLLOID/pair_brownian.cpp +++ b/src/COLLOID/pair_brownian.cpp @@ -42,10 +42,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -// same as fix_wall.cpp - -enum { EDGE, CONSTANT, VARIABLE }; - /* ---------------------------------------------------------------------- */ PairBrownian::PairBrownian(LAMMPS *lmp) : Pair(lmp) @@ -110,7 +106,7 @@ void PairBrownian::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -439,7 +435,7 @@ void PairBrownian::coeff(int narg, char **arg) void PairBrownian::init_style() { - if (!atom->sphere_flag) error->all(FLERR, "Pair brownian requires atom style sphere"); + if (!atom->radius_flag) error->all(FLERR, "Pair brownian requires atom attribute radius"); // if newton off, forces between atoms ij will be double computed // using different random numbers @@ -506,7 +502,7 @@ void PairBrownian::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); // Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); diff --git a/src/COLLOID/pair_brownian_poly.cpp b/src/COLLOID/pair_brownian_poly.cpp index 1e04b8dc2ad..99cebe3792e 100644 --- a/src/COLLOID/pair_brownian_poly.cpp +++ b/src/COLLOID/pair_brownian_poly.cpp @@ -42,10 +42,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairBrownianPoly::PairBrownianPoly(LAMMPS *lmp) : PairBrownian(lmp) @@ -95,7 +91,7 @@ void PairBrownianPoly::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -322,8 +318,8 @@ void PairBrownianPoly::init_style() { if (force->newton_pair == 1) error->all(FLERR,"Pair brownian/poly requires newton pair off"); - if (!atom->sphere_flag) - error->all(FLERR,"Pair brownian/poly requires atom style sphere"); + if (!atom->radius_flag) + error->all(FLERR,"Pair brownian/poly requires atom attribute radius"); // ensure all particles are finite-size // for pair hybrid, should limit test to types using the pair style @@ -376,7 +372,7 @@ void PairBrownianPoly::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); // Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); diff --git a/src/COLLOID/pair_lubricate.cpp b/src/COLLOID/pair_lubricate.cpp index 6f07d63bfb6..99a544cd7f4 100644 --- a/src/COLLOID/pair_lubricate.cpp +++ b/src/COLLOID/pair_lubricate.cpp @@ -41,10 +41,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -// same as fix_wall.cpp - -enum{NONE=0,EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairLubricate::PairLubricate(LAMMPS *lmp) : Pair(lmp) @@ -169,7 +165,7 @@ void PairLubricate::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -531,8 +527,10 @@ void PairLubricate::coeff(int narg, char **arg) void PairLubricate::init_style() { - if (!atom->sphere_flag) - error->all(FLERR,"Pair lubricate requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR,"Pair lubricate requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR,"Pair lubricate requires atom attribute radius"); if (comm->ghost_velocity == 0) error->all(FLERR,"Pair lubricate requires ghost atoms store velocity"); @@ -593,7 +591,7 @@ void PairLubricate::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); //Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); diff --git a/src/COLLOID/pair_lubricateU.cpp b/src/COLLOID/pair_lubricateU.cpp index ac1e62c2a25..f97a5b34c78 100644 --- a/src/COLLOID/pair_lubricateU.cpp +++ b/src/COLLOID/pair_lubricateU.cpp @@ -40,11 +40,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOL 1E-4 // tolerance for conjugate gradient - -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; +static constexpr double TOL = 1e-4; // tolerance for conjugate gradient /* ---------------------------------------------------------------------- */ @@ -595,7 +591,7 @@ void PairLubricateU::compute_Fh(double **x) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -827,7 +823,7 @@ void PairLubricateU::compute_RU() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -1098,7 +1094,7 @@ void PairLubricateU::compute_RU(double **x) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -1764,8 +1760,10 @@ void PairLubricateU::coeff(int narg, char **arg) void PairLubricateU::init_style() { - if (!atom->sphere_flag) - error->all(FLERR,"Pair lubricateU requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR,"Pair lubricateU requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR,"Pair lubricateU requires atom attribute radius"); if (comm->ghost_velocity == 0) error->all(FLERR,"Pair lubricateU requires ghost atoms store velocity"); @@ -1819,7 +1817,7 @@ void PairLubricateU::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); //Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); diff --git a/src/COLLOID/pair_lubricateU_poly.cpp b/src/COLLOID/pair_lubricateU_poly.cpp index 297c4e1924b..cc986565246 100644 --- a/src/COLLOID/pair_lubricateU_poly.cpp +++ b/src/COLLOID/pair_lubricateU_poly.cpp @@ -41,12 +41,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOL 1E-3 // tolerance for conjugate gradient - -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - +static constexpr double TOL = 1e-3; // tolerance for conjugate gradient /* ---------------------------------------------------------------------- */ @@ -365,7 +360,7 @@ void PairLubricateUPoly::compute_Fh(double **x) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -640,7 +635,7 @@ void PairLubricateUPoly::compute_RU(double **x) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -1126,12 +1121,13 @@ void PairLubricateUPoly::settings(int narg, char **arg) void PairLubricateUPoly::init_style() { if (force->newton_pair == 1) - error->all(FLERR,"Pair lubricateU/poly requires newton pair off"); + error->all(FLERR, "Pair lubricateU/poly requires newton pair off"); if (comm->ghost_velocity == 0) - error->all(FLERR, - "Pair lubricateU/poly requires ghost atoms store velocity"); - if (!atom->sphere_flag) - error->all(FLERR,"Pair lubricate/poly requires atom style sphere"); + error->all(FLERR, "Pair lubricateU/poly requires ghost atoms store velocity"); + if (!atom->omega_flag) + error->all(FLERR, "Pair lubricateU/poly requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR, "Pair lubricateU/poly requires atom attribute radius"); // ensure all particles are finite-size // for pair hybrid, should limit test to types using the pair style @@ -1141,7 +1137,7 @@ void PairLubricateUPoly::init_style() for (int i = 0; i < nlocal; i++) if (radius[i] == 0.0) - error->one(FLERR,"Pair lubricate/poly requires extended particles"); + error->one(FLERR,"Pair lubricateU/poly requires extended particles"); // Set the isotropic constants depending on the volume fraction @@ -1161,9 +1157,7 @@ void PairLubricateUPoly::init_style() flagdeform = 1; else if (strstr(modify->fix[i]->style,"wall") != nullptr) { if (flagwall) - error->all(FLERR, - "Cannot use multiple fix wall commands with " - "pair lubricateU"); + error->all(FLERR, "Cannot use multiple fix wall commands with pair lubricateU/poly"); flagwall = 1; // Walls exist wallfix = dynamic_cast(modify->fix[i]); if (wallfix->xflag) flagwall = 2; // Moving walls exist @@ -1184,7 +1178,7 @@ void PairLubricateUPoly::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); //Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); @@ -1214,14 +1208,8 @@ void PairLubricateUPoly::init_style() if (!flagVF) vol_f = 0; - if (!comm->me) { - if (logfile) - fprintf(logfile, "lubricateU: vol_f = %g, vol_p = %g, vol_T = %g\n", - vol_f,vol_P,vol_T); - if (screen) - fprintf(screen, "lubricateU: vol_f = %g, vol_p = %g, vol_T = %g\n", - vol_f,vol_P,vol_T); - } + if (comm->me == 0) + utils::logmesg(lmp, "lubricateU: vol_f = {}, vol_p = {}, vol_T = {}\n", vol_f, vol_P, vol_T); // Set the isotropic constant diff --git a/src/COLLOID/pair_lubricate_poly.cpp b/src/COLLOID/pair_lubricate_poly.cpp index e6a0606e87c..33f32f3ad2c 100644 --- a/src/COLLOID/pair_lubricate_poly.cpp +++ b/src/COLLOID/pair_lubricate_poly.cpp @@ -41,10 +41,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairLubricatePoly::PairLubricatePoly(LAMMPS *lmp) : PairLubricate(lmp) @@ -151,7 +147,7 @@ void PairLubricatePoly::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; @@ -428,12 +424,13 @@ void PairLubricatePoly::compute(int eflag, int vflag) void PairLubricatePoly::init_style() { if (force->newton_pair == 1) - error->all(FLERR,"Pair lubricate/poly requires newton pair off"); + error->all(FLERR, "Pair lubricate/poly requires newton pair off"); if (comm->ghost_velocity == 0) - error->all(FLERR, - "Pair lubricate/poly requires ghost atoms store velocity"); - if (!atom->sphere_flag) - error->all(FLERR,"Pair lubricate/poly requires atom style sphere"); + error->all(FLERR, "Pair lubricate/poly requires ghost atoms store velocity"); + if (!atom->omega_flag) + error->all(FLERR, "Pair lubricate/poly requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR, "Pair lubricate/poly requires atom attribute radius"); // ensure all particles are finite-size // for pair hybrid, should limit test to types using the pair style @@ -443,7 +440,7 @@ void PairLubricatePoly::init_style() for (int i = 0; i < nlocal; i++) if (radius[i] == 0.0) - error->one(FLERR,"Pair lubricate/poly requires extended particles"); + error->one(FLERR,"Pair lubricate/poly requires only extended particles"); neighbor->add_request(this, NeighConst::REQ_FULL); @@ -498,7 +495,7 @@ void PairLubricatePoly::init_style() for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]); //Since fix->wall->init happens after pair->init_style wallcoord = input->variable->compute_equal(wallfix->xindex[m]); diff --git a/src/COLLOID/pair_yukawa_colloid.cpp b/src/COLLOID/pair_yukawa_colloid.cpp index ad63292e33c..37bd4dfd995 100644 --- a/src/COLLOID/pair_yukawa_colloid.cpp +++ b/src/COLLOID/pair_yukawa_colloid.cpp @@ -121,8 +121,8 @@ void PairYukawaColloid::compute(int eflag, int vflag) void PairYukawaColloid::init_style() { - if (!atom->sphere_flag) - error->all(FLERR,"Pair yukawa/colloid requires atom style sphere"); + if (!atom->radius_flag) + error->all(FLERR,"Pair yukawa/colloid requires atom attribute radius"); neighbor->add_request(this); diff --git a/src/COLVARS/colvarproxy_lammps.cpp b/src/COLVARS/colvarproxy_lammps.cpp index 06a2a23ec07..1c5d84d62ae 100644 --- a/src/COLVARS/colvarproxy_lammps.cpp +++ b/src/COLVARS/colvarproxy_lammps.cpp @@ -19,11 +19,7 @@ #include "colvarmodule.h" #include "colvarproxy.h" -#include -#include -#include -#include -#include +#include #define HASH_FAIL -1 diff --git a/src/COLVARS/fix_colvars.cpp b/src/COLVARS/fix_colvars.cpp index baf0209c611..0b496ee71b5 100644 --- a/src/COLVARS/fix_colvars.cpp +++ b/src/COLVARS/fix_colvars.cpp @@ -40,8 +40,6 @@ #include #include -#include -#include #include "colvarproxy_lammps.h" #include "colvarmodule.h" diff --git a/src/COLVARS/ndx_group.cpp b/src/COLVARS/ndx_group.cpp index 1d24db3900a..4170a9ea70b 100644 --- a/src/COLVARS/ndx_group.cpp +++ b/src/COLVARS/ndx_group.cpp @@ -26,8 +26,7 @@ #include "tokenizer.h" using namespace LAMMPS_NS; -#define BUFLEN 4096 -#define DELTA 16384 +static constexpr int BUFLEN = 4096; // read file until next section "name" or any next section if name == "" diff --git a/src/COMPRESS/dump_cfg_gz.cpp b/src/COMPRESS/dump_cfg_gz.cpp index 259056c0133..e4d5ae76cca 100644 --- a/src/COMPRESS/dump_cfg_gz.cpp +++ b/src/COMPRESS/dump_cfg_gz.cpp @@ -22,7 +22,7 @@ #include using namespace LAMMPS_NS; -#define UNWRAPEXPAND 10.0 +static constexpr double UNWRAPEXPAND = 10.0; DumpCFGGZ::DumpCFGGZ(LAMMPS *lmp, int narg, char **arg) : DumpCFG(lmp, narg, arg) { diff --git a/src/COMPRESS/dump_cfg_zstd.cpp b/src/COMPRESS/dump_cfg_zstd.cpp index e3f9a7c1f9e..c52f9e0942e 100644 --- a/src/COMPRESS/dump_cfg_zstd.cpp +++ b/src/COMPRESS/dump_cfg_zstd.cpp @@ -28,7 +28,7 @@ #include using namespace LAMMPS_NS; -#define UNWRAPEXPAND 10.0 +static constexpr double UNWRAPEXPAND = 10.0; DumpCFGZstd::DumpCFGZstd(LAMMPS *lmp, int narg, char **arg) : DumpCFG(lmp, narg, arg) { diff --git a/src/CORESHELL/pair_born_coul_dsf_cs.cpp b/src/CORESHELL/pair_born_coul_dsf_cs.cpp index 9e0ac11c788..9edcf2755d5 100644 --- a/src/CORESHELL/pair_born_coul_dsf_cs.cpp +++ b/src/CORESHELL/pair_born_coul_dsf_cs.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EPSILON 1.0e-20 +static constexpr double EPSILON = 1.0e-20; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_born_coul_long_cs.cpp b/src/CORESHELL/pair_born_coul_long_cs.cpp index 3a3dc39d692..3e135778792 100644 --- a/src/CORESHELL/pair_born_coul_long_cs.cpp +++ b/src/CORESHELL/pair_born_coul_long_cs.cpp @@ -17,25 +17,27 @@ ------------------------------------------------------------------------- */ #include "pair_born_coul_long_cs.h" -#include + #include "atom.h" #include "force.h" #include "neigh_list.h" +#include + using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_born_coul_wolf_cs.cpp b/src/CORESHELL/pair_born_coul_wolf_cs.cpp index 4765e1575ca..47241c0bebe 100644 --- a/src/CORESHELL/pair_born_coul_wolf_cs.cpp +++ b/src/CORESHELL/pair_born_coul_wolf_cs.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EPSILON 1.0e-20 +static constexpr double EPSILON = 1.0e-20; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_buck_coul_long_cs.cpp b/src/CORESHELL/pair_buck_coul_long_cs.cpp index 6b15e8dfe53..f885b412d8a 100644 --- a/src/CORESHELL/pair_buck_coul_long_cs.cpp +++ b/src/CORESHELL/pair_buck_coul_long_cs.cpp @@ -24,18 +24,18 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_coul_long_cs.cpp b/src/CORESHELL/pair_coul_long_cs.cpp index 5148ffda2d7..156fef7e03b 100644 --- a/src/CORESHELL/pair_coul_long_cs.cpp +++ b/src/CORESHELL/pair_coul_long_cs.cpp @@ -24,18 +24,18 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_coul_wolf_cs.cpp b/src/CORESHELL/pair_coul_wolf_cs.cpp index 5e15493aade..6deb66735b7 100644 --- a/src/CORESHELL/pair_coul_wolf_cs.cpp +++ b/src/CORESHELL/pair_coul_wolf_cs.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EPSILON 1.0e-20 +static constexpr double EPSILON = 1.0e-20; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp index 1cbddf06143..48141b40a16 100644 --- a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp @@ -20,18 +20,18 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp index 253ae440b0a..ddb6d57837a 100644 --- a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp @@ -24,18 +24,18 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/DIELECTRIC/atom_vec_dielectric.cpp b/src/DIELECTRIC/atom_vec_dielectric.cpp index 3b25ad4e17b..7412df118f9 100644 --- a/src/DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/DIELECTRIC/atom_vec_dielectric.cpp @@ -15,8 +15,10 @@ #include "atom.h" #include "citeme.h" +#include "domain.h" #include "error.h" #include "force.h" +#include "memory.h" #include "pair.h" #include "pair_hybrid.h" @@ -50,6 +52,8 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *_lmp) : AtomVec(_lmp) atom->molecule_flag = atom->q_flag = atom->mu_flag = 1; atom->dielectric_flag = 1; + mu_hold = nullptr; + // 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 @@ -187,6 +191,58 @@ void AtomVecDielectric::data_atom_post(int ilocal) mu_one[3] = sqrt(mu_one[0] * mu_one[0] + mu_one[1] * mu_one[1] + mu_one[2] * mu_one[2]); } +/* ---------------------------------------------------------------------- + convert read_data file info from general to restricted triclinic + parent class operates on data from Velocities section of data file + child class operates on dipole moment mu +------------------------------------------------------------------------- */ + +void AtomVecDielectric::read_data_general_to_restricted(int nlocal_previous, int nlocal) +{ + AtomVec::read_data_general_to_restricted(nlocal_previous, nlocal); + + for (int i = nlocal_previous; i < nlocal; i++) + domain->general_to_restricted_vector(mu[i]); +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on dipole momemt mu which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecDielectric::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + int nlocal = atom->nlocal; + memory->create(mu_hold,nlocal,3,"atomvec:mu_hold"); + for (int i = 0; i < nlocal; i++) { + memcpy(&mu_hold[i],&mu[i],3*sizeof(double)); + domain->restricted_to_general_vector(mu[i]); + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on dipole moment mu which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecDielectric::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + if (!mu_hold) return; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) + memcpy(&mu[i],&mu_hold[i],3*sizeof(double)); + memory->destroy(mu_hold); + mu_hold = nullptr; +} + /* ---------------------------------------------------------------------- initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ diff --git a/src/DIELECTRIC/atom_vec_dielectric.h b/src/DIELECTRIC/atom_vec_dielectric.h index 28bf7abb33c..71aba900f8b 100644 --- a/src/DIELECTRIC/atom_vec_dielectric.h +++ b/src/DIELECTRIC/atom_vec_dielectric.h @@ -35,6 +35,10 @@ class AtomVecDielectric : virtual public AtomVec { void grow_pointers() override; void create_atom_post(int) override; void data_atom_post(int) override; + void read_data_general_to_restricted(int, int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; + void unpack_restart_init(int) override; int property_atom(const std::string &) override; void pack_property_atom(int, double *, int, int) override; @@ -48,6 +52,8 @@ class AtomVecDielectric : virtual public AtomVec { double **mu; double *area, *ed, *em, *epsilon, *curvature, *q_scaled; + + double **mu_hold; }; } // namespace LAMMPS_NS diff --git a/src/DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/DIELECTRIC/fix_polarize_bem_gmres.cpp index 40f7d0c8534..67d79d57f09 100644 --- a/src/DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -41,7 +41,6 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "math_const.h" #include "memory.h" diff --git a/src/DIELECTRIC/pppm_dielectric.cpp b/src/DIELECTRIC/pppm_dielectric.cpp index e308cb0826a..e02cc331626 100644 --- a/src/DIELECTRIC/pppm_dielectric.cpp +++ b/src/DIELECTRIC/pppm_dielectric.cpp @@ -23,7 +23,6 @@ #include "comm.h" #include "domain.h" #include "error.h" -#include "fft3d_wrap.h" #include "force.h" #include "grid3d.h" #include "math_const.h" @@ -36,18 +35,12 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; -enum {REVERSE_RHO}; -enum {FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; +enum { REVERSE_RHO }; +enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; /* ---------------------------------------------------------------------- */ diff --git a/src/DIELECTRIC/pppm_disp_dielectric.cpp b/src/DIELECTRIC/pppm_disp_dielectric.cpp index 2c4de6ada15..e5149ae4276 100644 --- a/src/DIELECTRIC/pppm_disp_dielectric.cpp +++ b/src/DIELECTRIC/pppm_disp_dielectric.cpp @@ -25,19 +25,18 @@ #include "error.h" #include "force.h" #include "grid3d.h" +#include "lmpfftsettings.h" #include "math_const.h" #include "memory.h" #include +#include using namespace LAMMPS_NS; using namespace MathConst; -#define MAXORDER 7 -#define OFFSET 16384 -#define SMALL 0.00001 -#define LARGE 10000.0 -#define EPS_HOC 1.0e-7 +static constexpr double SMALL = 0.00001; +static constexpr FFT_SCALAR ZEROF = 0.0; enum{REVERSE_RHO,REVERSE_RHO_GEOM,REVERSE_RHO_ARITH,REVERSE_RHO_NONE}; enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM, @@ -48,14 +47,6 @@ enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM, FORWARD_IK_NONE,FORWARD_AD_NONE,FORWARD_IK_PERATOM_NONE, FORWARD_AD_PERATOM_NONE}; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - /* ---------------------------------------------------------------------- */ PPPMDispDielectric::PPPMDispDielectric(LAMMPS *_lmp) : PPPMDisp(_lmp) diff --git a/src/DIFFRACTION/compute_xrd.cpp b/src/DIFFRACTION/compute_xrd.cpp index 426248b31e4..11e0bb9a9ff 100644 --- a/src/DIFFRACTION/compute_xrd.cpp +++ b/src/DIFFRACTION/compute_xrd.cpp @@ -35,7 +35,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -using namespace MathConst; +using MathConst::MY_PI; static const char cite_compute_xrd_c[] = "compute xrd command: doi:10.1088/0965-0393/21/5/055020\n\n" @@ -261,7 +261,7 @@ void ComputeXRD::init() double ang = 0.0; double convf = 360 / MY_PI; - if (radflag ==1) convf = 1; + if (radflag == 1) convf = 2; int n = 0; for (int m = 0; m < mmax; m++) { diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 3f160787b27..470dfc77eff 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -14,6 +14,8 @@ #include "atom_vec_dipole.h" #include "atom.h" +#include "domain.h" +#include "memory.h" #include @@ -28,6 +30,8 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) atom->q_flag = atom->mu_flag = 1; + mu_hold = nullptr; + // 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 @@ -68,3 +72,55 @@ void AtomVecDipole::data_atom_post(int ilocal) 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]); } + +/* ---------------------------------------------------------------------- + convert read_data file info from general to restricted triclinic + parent class operates on data from Velocities section of data file + child class operates on dipole moment mu +------------------------------------------------------------------------- */ + +void AtomVecDipole::read_data_general_to_restricted(int nlocal_previous, int nlocal) +{ + AtomVec::read_data_general_to_restricted(nlocal_previous, nlocal); + + for (int i = nlocal_previous; i < nlocal; i++) + domain->general_to_restricted_vector(mu[i]); +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on dipole momemt mu which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecDipole::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + int nlocal = atom->nlocal; + memory->create(mu_hold,nlocal,3,"atomvec:mu_hold"); + for (int i = 0; i < nlocal; i++) { + memcpy(&mu_hold[i],&mu[i],3*sizeof(double)); + domain->restricted_to_general_vector(mu[i]); + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on dipole moment mu which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecDipole::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + if (!mu_hold) return; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) + memcpy(&mu[i],&mu_hold[i],3*sizeof(double)); + memory->destroy(mu_hold); + mu_hold = nullptr; +} diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index d2f5746462b..0b461952637 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -30,9 +30,13 @@ class AtomVecDipole : virtual public AtomVec { void grow_pointers() override; void data_atom_post(int) override; + void read_data_general_to_restricted(int, int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; protected: double **mu; + double **mu_hold; }; } // namespace LAMMPS_NS diff --git a/src/DIPOLE/pair_lj_cut_dipole_long.cpp b/src/DIPOLE/pair_lj_cut_dipole_long.cpp index 0522a7a34db..5d71842d54d 100644 --- a/src/DIPOLE/pair_lj_cut_dipole_long.cpp +++ b/src/DIPOLE/pair_lj_cut_dipole_long.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -30,14 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/DIPOLE/pair_lj_long_dipole_long.cpp b/src/DIPOLE/pair_lj_long_dipole_long.cpp index 1ed4a8c8d76..2e1a9c4db03 100644 --- a/src/DIPOLE/pair_lj_long_dipole_long.cpp +++ b/src/DIPOLE/pair_lj_long_dipole_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -36,14 +37,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; // ---------------------------------------------------------------------- @@ -407,7 +401,7 @@ void PairLJLongDipoleLong::compute(int eflag, int vflag) ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; - double **mu = atom->mu, *mu0 = mu[0], *imu, *jmu; + double **mu = atom->mu, *mu0 = mu[0]; double **tq = atom->torque, *tq0 = tq[0], *tqi; double **f = atom->f, *f0 = f[0], *fi = f0, fx, fy, fz; double *q = atom->q, qi = 0, qj; @@ -441,7 +435,7 @@ void PairLJLongDipoleLong::compute(int eflag, int vflag) lj1i = lj1[typei]; lj2i = lj2[typei]; lj3i = lj3[typei]; lj4i = lj4[typei]; cutsqi = cutsq[typei]; cut_ljsqi = cut_ljsq[typei]; memcpy(xi, x0+(i+(i<<1)), 3*sizeof(double)); - memcpy(mui, imu = mu0+(i<<2), 3*sizeof(double)); + memcpy(mui, mu0+(i<<2), 3*sizeof(double)); jneighn = (jneigh = list->firstneigh[i])+list->numneigh[i]; @@ -459,7 +453,7 @@ void PairLJLongDipoleLong::compute(int eflag, int vflag) r2inv = 1.0/rsq; if (order3 && (rsq < cut_coulsq)) { // dipole - memcpy(muj, jmu = mu0+(j<<2), 3*sizeof(double)); + memcpy(muj, mu0+(j<<2), 3*sizeof(double)); { // series real space double r = sqrt(rsq); double x = g_ewald*r; diff --git a/src/DPD-BASIC/pair_dpd.cpp b/src/DPD-BASIC/pair_dpd.cpp index 5771831e022..1f600742804 100644 --- a/src/DPD-BASIC/pair_dpd.cpp +++ b/src/DPD-BASIC/pair_dpd.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-BASIC/pair_dpd_ext.cpp b/src/DPD-BASIC/pair_dpd_ext.cpp index 623b16774cc..da08e53a4a7 100644 --- a/src/DPD-BASIC/pair_dpd_ext.cpp +++ b/src/DPD-BASIC/pair_dpd_ext.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-BASIC/pair_dpd_ext_tstat.cpp b/src/DPD-BASIC/pair_dpd_ext_tstat.cpp index 433bc54063c..fe881d7bc53 100644 --- a/src/DPD-BASIC/pair_dpd_ext_tstat.cpp +++ b/src/DPD-BASIC/pair_dpd_ext_tstat.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-BASIC/pair_dpd_tstat.cpp b/src/DPD-BASIC/pair_dpd_tstat.cpp index ed659e7cc3c..108177ed69c 100644 --- a/src/DPD-BASIC/pair_dpd_tstat.cpp +++ b/src/DPD-BASIC/pair_dpd_tstat.cpp @@ -26,7 +26,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-MESO/pair_edpd.cpp b/src/DPD-MESO/pair_edpd.cpp index ed99a5eac1d..b575956f71e 100644 --- a/src/DPD-MESO/pair_edpd.cpp +++ b/src/DPD-MESO/pair_edpd.cpp @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; #define MIN(A,B) ((A) < (B) ? (A) : (B)) #define MAX(A,B) ((A) > (B) ? (A) : (B)) -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; static const char cite_pair_edpd[] = "pair edpd command: doi:10.1016/j.jcp.2014.02.003\n\n" diff --git a/src/DPD-MESO/pair_mdpd.cpp b/src/DPD-MESO/pair_mdpd.cpp index 767fddd7acd..de148189e01 100644 --- a/src/DPD-MESO/pair_mdpd.cpp +++ b/src/DPD-MESO/pair_mdpd.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; static const char cite_pair_mdpd[] = "pair mdpd command: doi:10.1063/1.4812366\n\n" diff --git a/src/DPD-MESO/pair_tdpd.cpp b/src/DPD-MESO/pair_tdpd.cpp index eac5bd1318e..038b3c3cdcb 100644 --- a/src/DPD-MESO/pair_tdpd.cpp +++ b/src/DPD-MESO/pair_tdpd.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; #define MIN(A,B) ((A) < (B) ? (A) : (B)) #define MAX(A,B) ((A) > (B) ? (A) : (B)) -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; static const char cite_pair_tdpd[] = "pair tdpd command: doi:10.1063/1.4923254\n\n" diff --git a/src/DPD-REACT/fix_eos_table.cpp b/src/DPD-REACT/fix_eos_table.cpp index 36bbe4d478b..42567119dfc 100644 --- a/src/DPD-REACT/fix_eos_table.cpp +++ b/src/DPD-REACT/fix_eos_table.cpp @@ -24,7 +24,7 @@ #include -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; using namespace LAMMPS_NS; using namespace FixConst; @@ -194,7 +194,7 @@ void FixEOStable::free_table(Table *tb) void FixEOStable::read_table(Table *tb, Table *tb2, char *file, char *keyword) { - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // open file diff --git a/src/DPD-REACT/fix_eos_table_rx.cpp b/src/DPD-REACT/fix_eos_table_rx.cpp index f7afddc64f5..bf71b502f05 100644 --- a/src/DPD-REACT/fix_eos_table_rx.cpp +++ b/src/DPD-REACT/fix_eos_table_rx.cpp @@ -28,12 +28,12 @@ #include #include -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; #ifdef DBL_EPSILON - #define MY_EPSILON (10.0*DBL_EPSILON) +static constexpr double MY_EPSILON = 10.0*DBL_EPSILON; #else - #define MY_EPSILON (10.0*2.220446049250313e-16) +static constexpr double MY_EPSILON = 10.0*2.220446049250313e-16; #endif using namespace LAMMPS_NS; @@ -318,7 +318,8 @@ void FixEOStableRX::read_file(char *file) // one set of params can span multiple lines int n,nwords,ispecies; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { @@ -414,7 +415,7 @@ void FixEOStableRX::free_table(Table *tb) void FixEOStableRX::read_table(Table *tb, Table *tb2, char *file, char *keyword) { - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // open file diff --git a/src/DPD-REACT/fix_rx.cpp b/src/DPD-REACT/fix_rx.cpp index cce88cf4652..a7e9e4ea775 100644 --- a/src/DPD-REACT/fix_rx.cpp +++ b/src/DPD-REACT/fix_rx.cpp @@ -38,16 +38,15 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathSpecial; -enum{NONE,HARMONIC}; -enum{LUCY}; +enum { NONE, HARMONIC }; +enum { LUCY }; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int MAXLINE = 1024; #ifdef DBL_EPSILON - #define MY_EPSILON (10.0*DBL_EPSILON) +static constexpr double MY_EPSILON = 10.0*DBL_EPSILON; #else - #define MY_EPSILON (10.0*2.220446049250313e-16) +static constexpr double MY_EPSILON = 10.0*2.220446049250313e-16; #endif #define SparseKinetics_enableIntegralReactions (true) @@ -250,7 +249,8 @@ void FixRX::post_constructor() // Assign species names to tmpspecies array and determine the number of unique species int n; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; char * word; @@ -784,7 +784,8 @@ void FixRX::read_file(char *file) // Count the number of reactions from kinetics file int n,ispecies; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { diff --git a/src/DPD-REACT/fix_shardlow.cpp b/src/DPD-REACT/fix_shardlow.cpp index 19f2c08a5fd..7d4d9ce6742 100644 --- a/src/DPD-REACT/fix_shardlow.cpp +++ b/src/DPD-REACT/fix_shardlow.cpp @@ -50,6 +50,7 @@ #include "npair_half_bin_newton_ssa.h" #include "pair_dpd_fdt.h" #include "pair_dpd_fdt_energy.h" +#include "random_external_state.h" #include "update.h" #include @@ -59,8 +60,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace random_external_state; -#define EPSILON 1.0e-10 -#define EPSILON_SQUARED ((EPSILON) * (EPSILON)) +static constexpr double EPSILON_SQUARED = 1.0e-20; static const char cite_fix_shardlow[] = "fix shardlow command: doi:10.1016/j.cpc.2014.03.029, doi:10.1063/1.3660209\n\n" @@ -85,8 +85,8 @@ static const char cite_fix_shardlow[] = /* ---------------------------------------------------------------------- */ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), pairDPD(nullptr), pairDPDE(nullptr), v_t0(nullptr) - ,rand_state(nullptr) + Fix(lmp, narg, arg), pairDPD(nullptr), pairDPDE(nullptr), v_t0(nullptr), + rand_state(nullptr) { if (lmp->citeme) lmp->citeme->add(cite_fix_shardlow); diff --git a/src/DPD-REACT/fix_shardlow.h b/src/DPD-REACT/fix_shardlow.h index 0086874e312..552ac3b21d8 100644 --- a/src/DPD-REACT/fix_shardlow.h +++ b/src/DPD-REACT/fix_shardlow.h @@ -21,7 +21,10 @@ FixStyle(shardlow,FixShardlow); #define LMP_FIX_SHARDLOW_H #include "fix.h" -#include "random_external_state.h" + +namespace random_external_state { +using es_RNG_t = uint64_t; +} namespace LAMMPS_NS { diff --git a/src/DPD-REACT/npair_half_bin_newton_ssa.cpp b/src/DPD-REACT/npair_half_bin_newton_ssa.cpp index ce405da3ac7..7393e54f781 100644 --- a/src/DPD-REACT/npair_half_bin_newton_ssa.cpp +++ b/src/DPD-REACT/npair_half_bin_newton_ssa.cpp @@ -18,6 +18,7 @@ ------------------------------------------------------------------------- */ #include "npair_half_bin_newton_ssa.h" + #include "nstencil_ssa.h" #include "nbin_ssa.h" #include "neigh_list.h" diff --git a/src/DPD-REACT/pair_dpd_fdt.cpp b/src/DPD-REACT/pair_dpd_fdt.cpp index e6cab0e9964..44920a6bdac 100644 --- a/src/DPD-REACT/pair_dpd_fdt.cpp +++ b/src/DPD-REACT/pair_dpd_fdt.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-REACT/pair_dpd_fdt_energy.cpp b/src/DPD-REACT/pair_dpd_fdt_energy.cpp index d3371f465a6..12d6dc5fb76 100644 --- a/src/DPD-REACT/pair_dpd_fdt_energy.cpp +++ b/src/DPD-REACT/pair_dpd_fdt_energy.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/DPD-REACT/pair_exp6_rx.cpp b/src/DPD-REACT/pair_exp6_rx.cpp index c6b831f84b4..e0ac9c0b27e 100644 --- a/src/DPD-REACT/pair_exp6_rx.cpp +++ b/src/DPD-REACT/pair_exp6_rx.cpp @@ -31,13 +31,13 @@ using namespace LAMMPS_NS; using namespace MathSpecial; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int MAXLINE = 1024; +static constexpr int DELTA = 4; #ifdef DBL_EPSILON - #define MY_EPSILON (10.0*DBL_EPSILON) +static constexpr double MY_EPSILON = 10.0*DBL_EPSILON; #else - #define MY_EPSILON (10.0*2.220446049250313e-16) +static constexpr double MY_EPSILON = 10.0*2.220446049250313e-16; #endif #define oneFluidApproxParameter (-1) @@ -728,7 +728,8 @@ void PairExp6rx::read_file(char *file) // one set of params can span multiple lines int n,nwords,ispecies; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { @@ -835,7 +836,8 @@ void PairExp6rx::read_file2(char *file) // one set of params can span multiple lines int n,nwords; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { diff --git a/src/DPD-REACT/pair_multi_lucy.cpp b/src/DPD-REACT/pair_multi_lucy.cpp index 89263dd445e..918246dcde0 100644 --- a/src/DPD-REACT/pair_multi_lucy.cpp +++ b/src/DPD-REACT/pair_multi_lucy.cpp @@ -39,9 +39,8 @@ using namespace LAMMPS_NS; using MathConst::MY_PI; -enum{NONE,RLINEAR,RSQ}; - -#define MAXLINE 1024 +enum { NONE, RLINEAR, RSQ }; +static constexpr int MAXLINE = 1024; static const char cite_pair_multi_lucy[] = "pair_style multi/lucy command: doi:10.1063/1.4942520\n\n" @@ -344,7 +343,7 @@ double PairMultiLucy::init_one(int i, int j) void PairMultiLucy::read_table(Table *tb, char *file, char *keyword) { - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // open file diff --git a/src/DPD-REACT/pair_multi_lucy_rx.cpp b/src/DPD-REACT/pair_multi_lucy_rx.cpp index 96209085310..c248d92694c 100644 --- a/src/DPD-REACT/pair_multi_lucy_rx.cpp +++ b/src/DPD-REACT/pair_multi_lucy_rx.cpp @@ -41,15 +41,9 @@ using namespace LAMMPS_NS; using MathConst::MY_PI; -enum{NONE,RLINEAR,RSQ}; +enum{ NONE, RLINEAR, RSQ }; -#define MAXLINE 1024 - -#ifdef DBL_EPSILON - #define MY_EPSILON (10.0*DBL_EPSILON) -#else - #define MY_EPSILON (10.0*2.220446049250313e-16) -#endif +static constexpr int MAXLINE = 1024; #define oneFluidParameter (-1) #define isOneFluid(_site) ( (_site) == oneFluidParameter ) @@ -483,16 +477,13 @@ double PairMultiLucyRX::init_one(int i, int j) void PairMultiLucyRX::read_table(Table *tb, char *file, char *keyword) { - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // open file FILE *fp = utils::open_potential(file,lmp,nullptr); - if (fp == nullptr) { - char str[128]; - snprintf(str,128,"Cannot open file %s",file); - error->one(FLERR,str); - } + if (fp == nullptr) + error->one(FLERR, "Cannot open file {}: {}",file,utils::getsyserror()); // loop until section found with matching keyword diff --git a/src/DPD-REACT/random_external_state.h b/src/DPD-REACT/random_external_state.h index 9c5958e2432..5ce1cf100cd 100644 --- a/src/DPD-REACT/random_external_state.h +++ b/src/DPD-REACT/random_external_state.h @@ -76,7 +76,7 @@ // A replacement for the Kokkos Random_XorShift64 class that uses // an external state variable, instead of a class member variable. namespace random_external_state { -typedef uint64_t es_RNG_t; +using es_RNG_t = uint64_t; constexpr uint32_t MAX_URAND = 0xffffffffU; constexpr uint64_t MAX_URAND64 = 0xffffffffffffffffULL - 1; diff --git a/src/DRUDE/compute_temp_drude.cpp b/src/DRUDE/compute_temp_drude.cpp index b3093469343..0bf276924a7 100644 --- a/src/DRUDE/compute_temp_drude.cpp +++ b/src/DRUDE/compute_temp_drude.cpp @@ -54,20 +54,19 @@ ComputeTempDrude::ComputeTempDrude(LAMMPS *lmp, int narg, char **arg) : ComputeTempDrude::~ComputeTempDrude() { - delete [] vector; - delete [] extlist; - delete [] id_temp; + delete[] vector; + delete[] extlist; + delete[] id_temp; } /* ---------------------------------------------------------------------- */ void ComputeTempDrude::init() { - int ifix; - for (ifix = 0; ifix < modify->nfix; ifix++) - if (strcmp(modify->fix[ifix]->style,"drude") == 0) break; - if (ifix == modify->nfix) error->all(FLERR, "compute temp/drude requires fix drude"); - fix_drude = dynamic_cast(modify->fix[ifix]); + // Fix drude already checks that there is only one fix drude instance + auto &fixes = modify->get_fix_by_style("^drude$"); + if (fixes.size() == 0) error->all(FLERR, "compute temp/drude requires fix drude"); + fix_drude = dynamic_cast(fixes[0]); if (!comm->ghost_velocity) error->all(FLERR,"compute temp/drude requires ghost velocities. Use comm_modify vel yes"); @@ -118,14 +117,12 @@ int ComputeTempDrude::modify_param(int narg, char **arg) delete [] id_temp; id_temp = utils::strdup(arg[1]); - int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find fix_modify temperature ID"); - temperature = modify->compute[icompute]; + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR,"Could not find fix_modify temperature compute {}", id_temp); if (temperature->tempflag == 0) - error->all(FLERR, - "Fix_modify temperature ID does not compute temperature"); + error->all(FLERR, "Fix_modify temperature compute {} does not compute temperature", id_temp); if (temperature->igroup != igroup && comm->me == 0) error->warning(FLERR,"Group for fix_modify temp != fix group"); return 2; diff --git a/src/DRUDE/fix_drude.cpp b/src/DRUDE/fix_drude.cpp index 56a5cd42f6e..6c0c84861a0 100644 --- a/src/DRUDE/fix_drude.cpp +++ b/src/DRUDE/fix_drude.cpp @@ -22,7 +22,6 @@ #include "modify.h" #include "molecule.h" -#include #include #include @@ -83,10 +82,7 @@ FixDrude::~FixDrude() void FixDrude::init() { - int count = 0; - for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"drude") == 0) count++; - if (count > 1) error->all(FLERR,"More than one fix drude"); + if (modify->get_fix_by_style("^drude$").size() > 1) error->all(FLERR,"More than one fix drude"); if (!rebuildflag) rebuild_special(); } diff --git a/src/DRUDE/fix_drude_transform.cpp b/src/DRUDE/fix_drude_transform.cpp index 4a85b8ae4cd..ad92740116d 100644 --- a/src/DRUDE/fix_drude_transform.cpp +++ b/src/DRUDE/fix_drude_transform.cpp @@ -24,7 +24,6 @@ #include "modify.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; @@ -54,7 +53,7 @@ void FixDrudeTransform::init() std::string substyle = "direct"; if (inverse) substyle = "inverse"; - auto fixes = modify->get_fix_by_style("^drude"); + auto fixes = modify->get_fix_by_style("^drude$"); if (fixes.size() > 0) fix_drude = dynamic_cast(fixes[0]); if (!fix_drude) error->all(FLERR, "fix drude/transform/{} requires fix drude", substyle); diff --git a/src/DRUDE/fix_tgnh_drude.cpp b/src/DRUDE/fix_tgnh_drude.cpp index b23acd349be..e15e865ce8c 100644 --- a/src/DRUDE/fix_tgnh_drude.cpp +++ b/src/DRUDE/fix_tgnh_drude.cpp @@ -40,8 +40,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; @@ -516,7 +516,7 @@ FixTGNHDrude::FixTGNHDrude(LAMMPS *lmp, int narg, char **arg) : // find fix drude - auto fdrude = modify->get_fix_by_style("^drude"); + auto fdrude = modify->get_fix_by_style("^drude$"); if (fdrude.size() < 1) error->all(FLERR, "Fix {} requires fix drude", style); fix_drude = dynamic_cast(fdrude[0]); if (!fix_drude) error->all(FLERR, "Fix {} requires fix drude", style); diff --git a/src/DRUDE/pair_lj_cut_thole_long.cpp b/src/DRUDE/pair_lj_cut_thole_long.cpp index cfdf631eb99..b7f1ce9be93 100644 --- a/src/DRUDE/pair_lj_cut_thole_long.cpp +++ b/src/DRUDE/pair_lj_cut_thole_long.cpp @@ -37,18 +37,18 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/Depend.sh b/src/Depend.sh index dbffb2dba0d..3df1347e675 100755 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -99,6 +99,7 @@ fi if (test $1 = "EXTRA-PAIR") then depend GPU + depend KOKKOS depend OPENMP fi diff --git a/src/EFF/fix_langevin_eff.cpp b/src/EFF/fix_langevin_eff.cpp index 8c255e4348d..65a3f5b115d 100644 --- a/src/EFF/fix_langevin_eff.cpp +++ b/src/EFF/fix_langevin_eff.cpp @@ -34,11 +34,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -enum{NOBIAS,BIAS}; -enum{CONSTANT,EQUAL,ATOM}; - -#define SINERTIA 0.4 // moment of inertia prefactor for sphere -#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid +enum { NOBIAS, BIAS }; +enum { CONSTANT, EQUAL, ATOM }; /* ---------------------------------------------------------------------- */ @@ -137,7 +134,7 @@ void FixLangevinEff::post_force_no_tally() dof = domain->dimension * particles; fix_dof = 0; for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof += (int)modify->fix[i]->dof(igroup); // extra_dof = domain->dimension dof -= domain->dimension + fix_dof; @@ -306,7 +303,7 @@ void FixLangevinEff::post_force_tally() dof = domain->dimension * particles; fix_dof = 0; for (int i = 0; i < modify->nfix; i++) - fix_dof += modify->fix[i]->dof(igroup); + fix_dof += (int)modify->fix[i]->dof(igroup); // extra_dof = domain->dimension dof -= domain->dimension + fix_dof; diff --git a/src/EFF/fix_nh_eff.cpp b/src/EFF/fix_nh_eff.cpp index a5699320001..6e8e2c68fac 100644 --- a/src/EFF/fix_nh_eff.cpp +++ b/src/EFF/fix_nh_eff.cpp @@ -16,7 +16,6 @@ Contributing author: Andres Jaramillo-Botero (Caltech) ------------------------------------------------------------------------- */ - #include "fix_nh_eff.h" #include "atom.h" @@ -62,7 +61,7 @@ void FixNHEff::nve_v() if (mask[i] & groupbit) { if (abs(spin[i])==1) { dtfm = dtf / mass[type[i]]; - ervel[i] = dtfm * erforce[i] / mefactor; + ervel[i] += dtfm * erforce[i] / mefactor; } } } @@ -79,15 +78,26 @@ void FixNHEff::nve_x() FixNH::nve_x(); double *eradius = atom->eradius; + double *erforce = atom->erforce; double *ervel = atom->ervel; + double *mass = atom->mass; + int *type = atom->type; int *spin = atom->spin; int *mask = atom->mask; int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; + double mefactor = domain->dimension/4.0; + double dtfm; + for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - if (abs(spin[i])==1) eradius[i] += dtv * ervel[i]; + if (mask[i] & groupbit) { + dtfm = dtf / mass[type[i]]; + if (abs(spin[i])==1) { + ervel[i] += dtfm * erforce[i] / mefactor; + eradius[i] += dtv * ervel[i]; + } + } } /* ---------------------------------------------------------------------- diff --git a/src/ELECTRODE/README b/src/ELECTRODE/README new file mode 100644 index 00000000000..72a95b7fe93 --- /dev/null +++ b/src/ELECTRODE/README @@ -0,0 +1,17 @@ +This package provides the "fix electrode/*" commands which can be used in a +LAMMPS input script. These fixes implement the constant potential method, which +minimizes the energy of electrodes as a function of atom charges at given +electric potentials or electrode charges. + +See the doc page for the fix electrode/conp command to get started. There are +example scripts for using this package in examples/PACKAGES/electrode. + +This package uses an external library in lib/electrode which must be compiled +before making LAMMPS. For a CMake build, the location of the LAPACK library +should be linked automatically. Alternatively, the "USE_INTERNAL_LINALG" option +can be used to enable the bundled library. See the doc page on "Packages with +extra build options" for more information. + +The primary people who created this package are Ludwig Ahrens-Iwers, Shern Tee +(s.tee@griffith.edu.au) and Robert Meißner (robert.meissner@tuhh.de). Contact +them directly if you have questions. diff --git a/src/ELECTRODE/electrode_math.h b/src/ELECTRODE/electrode_math.h index 5992df2289d..4a3cb7bac47 100644 --- a/src/ELECTRODE/electrode_math.h +++ b/src/ELECTRODE/electrode_math.h @@ -18,22 +18,20 @@ #ifndef LMP_ELECTRODE_MATH_H #define LMP_ELECTRODE_MATH_H +#include "ewald_const.h" #include "math_const.h" +#include + namespace LAMMPS_NS { +using namespace EwaldConst; namespace ElectrodeMath { - static constexpr double EWALD_P = 0.3275911; - static constexpr double A1 = 0.254829592; - static constexpr double A2 = -0.284496736; - static constexpr double A3 = 1.421413741; - static constexpr double A4 = -1.453152027; - static constexpr double A5 = 1.061405429; static constexpr double ERFCMAX = 5.8; // erfc(ERFCMAX) < machine epsilon(double) static double safe_erfc(double x) { - if (x > ERFCMAX) return 0.; + if (x > ERFCMAX) return 0.0; double expm2 = exp(-x * x); double t = 1.0 / (1.0 + EWALD_P * x); return t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; @@ -42,14 +40,14 @@ namespace ElectrodeMath { static double safe_derfcr(double x, double &erfc) { if (x > ERFCMAX) { - erfc = 0.; - return 0.; + erfc = 0.0; + return 0.0; } double x2 = x * x; double expm2 = exp(-x2); double t = 1.0 / (1.0 + EWALD_P * x); erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; - return -erfc - 2 * expm2 * x / MathConst::MY_PIS; + return -erfc - 2.0 * expm2 * x / MathConst::MY_PIS; } } // namespace ElectrodeMath diff --git a/src/ELECTRODE/electrode_matrix.cpp b/src/ELECTRODE/electrode_matrix.cpp index 86761742d44..9c2da1d13b2 100644 --- a/src/ELECTRODE/electrode_matrix.cpp +++ b/src/ELECTRODE/electrode_matrix.cpp @@ -43,6 +43,7 @@ ElectrodeMatrix::ElectrodeMatrix(LAMMPS *lmp, int electrode_group, double eta) : groupbit = group->bitmask[igroup]; ngroup = group->count(igroup); this->eta = eta; + etaflag = false; tfflag = false; } @@ -72,6 +73,14 @@ void ElectrodeMatrix::setup_tf(const std::map &tf_types) /* ---------------------------------------------------------------------- */ +void ElectrodeMatrix::setup_eta(int index) +{ + etaflag = true; + eta_index = index; +} + +/* ---------------------------------------------------------------------- */ + void ElectrodeMatrix::compute_array(double **array, bool timer_flag) { // setting all entries of coulomb matrix to zero @@ -115,8 +124,6 @@ void ElectrodeMatrix::pair_contribution(double **array) int nlocal = atom->nlocal; int newton_pair = force->newton_pair; - double const etaij = eta * eta / sqrt(2.0 * eta * eta); // see mw ewald theory eq. (29)-(30) - // neighbor list will be ready because called from post_neighbor inum = list->inum; ilist = list->ilist; @@ -135,6 +142,7 @@ void ElectrodeMatrix::pair_contribution(double **array) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; + double const eta_i = etaflag ? atom->dvector[eta_index][i] : eta; itype = type[i]; jlist = firstneigh[i]; jnum = numneigh[i]; @@ -152,6 +160,9 @@ void ElectrodeMatrix::pair_contribution(double **array) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { + double const eta_j = etaflag ? atom->dvector[eta_index][j] : eta; + double const etaij = eta_i * eta_j / sqrt(eta_i * eta_i + eta_j * eta_j); + r = sqrt(rsq); rinv = 1.0 / r; aij = rinv; @@ -178,7 +189,10 @@ void ElectrodeMatrix::self_contribution(double **array) const double preta = MY_SQRT2 / MY_PIS; for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { array[mpos[i]][mpos[i]] += preta * eta - selfint; } + if (mask[i] & groupbit) { + double const eta_i = etaflag ? atom->dvector[eta_index][i] : eta; + array[mpos[i]][mpos[i]] += preta * eta_i - selfint; + } } /* ---------------------------------------------------------------------- */ diff --git a/src/ELECTRODE/electrode_matrix.h b/src/ELECTRODE/electrode_matrix.h index 8499cfdb342..1c64d8a4c45 100644 --- a/src/ELECTRODE/electrode_matrix.h +++ b/src/ELECTRODE/electrode_matrix.h @@ -30,6 +30,7 @@ class ElectrodeMatrix : protected Pointers { ElectrodeMatrix(class LAMMPS *, int, double); void setup(const std::unordered_map &, class Pair *, class NeighList *); void setup_tf(const std::map &); + void setup_eta(int); void compute_array(double **, bool); int igroup; @@ -39,6 +40,8 @@ class ElectrodeMatrix : protected Pointers { double **cutsq; double g_ewald, eta; bool tfflag; + bool etaflag; + int eta_index; std::map tf_types; std::unordered_map tag_to_iele; bool assigned; diff --git a/src/ELECTRODE/electrode_vector.cpp b/src/ELECTRODE/electrode_vector.cpp index 8511ddc17c3..fc2cca5e469 100644 --- a/src/ELECTRODE/electrode_vector.cpp +++ b/src/ELECTRODE/electrode_vector.cpp @@ -29,6 +29,7 @@ #include "neigh_list.h" #include "pair.h" +#include #include #include @@ -47,6 +48,7 @@ ElectrodeVector::ElectrodeVector(LAMMPS *lmp, int sensor_group, int source_group source_grpbit = group->bitmask[source_group]; this->eta = eta; tfflag = false; + etaflag = false; kspace_time_total = 0; pair_time_total = 0; @@ -93,6 +95,14 @@ void ElectrodeVector::setup_tf(const std::map &tf_types) /* ---------------------------------------------------------------------- */ +void ElectrodeVector::setup_eta(int index) +{ + etaflag = true; + eta_index = index; +} + +/* ---------------------------------------------------------------------- */ + void ElectrodeVector::compute_vector(double *vector) { MPI_Barrier(world); @@ -121,7 +131,6 @@ void ElectrodeVector::compute_vector(double *vector) void ElectrodeVector::pair_contribution(double *vector) { - double const etaij = eta * MY_ISQRT2; double **x = atom->x; double *q = atom->q; int *type = atom->type; @@ -142,6 +151,7 @@ void ElectrodeVector::pair_contribution(double *vector) double const xtmp = x[i][0]; double const ytmp = x[i][1]; double const ztmp = x[i][2]; + double const eta_i = etaflag ? atom->dvector[eta_index][i] : eta; int itype = type[i]; int *jlist = firstneigh[i]; int jnum = numneigh[i]; @@ -158,18 +168,22 @@ void ElectrodeVector::pair_contribution(double *vector) double const rsq = delx * delx + dely * dely + delz * delz; int jtype = type[j]; if (rsq >= cutsq[itype][jtype]) continue; + double const eta_j = etaflag ? atom->dvector[eta_index][j] : eta; + double etaij; + if (i_in_sensor && j_in_sensor) { + etaij = eta_i * eta_j / sqrt(eta_i * eta_i + eta_j * eta_j); + } else if (i_in_sensor) { + etaij = eta_i; + } else { + assert(j_in_sensor); + etaij = eta_j; + } double const r = sqrt(rsq); double const rinv = 1.0 / r; double aij = rinv; aij *= ElectrodeMath::safe_erfc(g_ewald * r); - if (invert_source) - aij -= ElectrodeMath::safe_erfc(eta * r) * rinv; - else - aij -= ElectrodeMath::safe_erfc(etaij * r) * rinv; - if (i_in_sensor) { - vector[i] += aij * q[j]; - //} else if (j_in_sensor) { - } + aij -= ElectrodeMath::safe_erfc(etaij * r) * rinv; + if (i_in_sensor) { vector[i] += aij * q[j]; } if (j_in_sensor && (!invert_source || !i_in_sensor)) { vector[j] += aij * q[i]; } } } @@ -189,9 +203,10 @@ void ElectrodeVector::self_contribution(double *vector) for (int ii = 0; ii < inum; ii++) { int const i = ilist[ii]; + double const eta_i = etaflag ? atom->dvector[eta_index][i] : eta; bool const i_in_sensor = (mask[i] & groupbit); bool const i_in_source = !!(mask[i] & source_grpbit) != invert_source; - if (i_in_sensor && i_in_source) vector[i] += (preta * eta - selfint) * q[i]; + if (i_in_sensor && i_in_source) vector[i] += (preta * eta_i - selfint) * q[i]; } } diff --git a/src/ELECTRODE/electrode_vector.h b/src/ELECTRODE/electrode_vector.h index e7f637dd2df..a4f274a0493 100644 --- a/src/ELECTRODE/electrode_vector.h +++ b/src/ELECTRODE/electrode_vector.h @@ -29,6 +29,7 @@ class ElectrodeVector : protected Pointers { ~ElectrodeVector() override; void setup(class Pair *, class NeighList *, bool); void setup_tf(const std::map &); + void setup_eta(int); void compute_vector(double *); int igroup, source_group; @@ -39,6 +40,8 @@ class ElectrodeVector : protected Pointers { double **cutsq; double g_ewald, eta; bool tfflag; + bool etaflag; + int eta_index; std::map tf_types; class Pair *pair; class NeighList *list; diff --git a/src/ELECTRODE/ewald_electrode.cpp b/src/ELECTRODE/ewald_electrode.cpp index 99266ed4505..80c9c94a069 100644 --- a/src/ELECTRODE/ewald_electrode.cpp +++ b/src/ELECTRODE/ewald_electrode.cpp @@ -37,8 +37,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 - /* ---------------------------------------------------------------------- */ EwaldElectrode::EwaldElectrode(LAMMPS *lmp) : Ewald(lmp), boundcorr(nullptr) diff --git a/src/ELECTRODE/fix_electrode_conp.cpp b/src/ELECTRODE/fix_electrode_conp.cpp index 1b6c0a37d4c..f3c17062d28 100644 --- a/src/ELECTRODE/fix_electrode_conp.cpp +++ b/src/ELECTRODE/fix_electrode_conp.cpp @@ -43,12 +43,13 @@ #include #include #include +#include #include using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 1e-16 +static constexpr double SMALL = 1e-16; extern "C" { void dgetrf_(const int *M, const int *N, double *A, const int *lda, int *ipiv, int *info); @@ -97,26 +98,30 @@ FixElectrodeConp::FixElectrodeConp(LAMMPS *lmp, int narg, char **arg) : top_group = 0; intelflag = false; tfflag = false; + etaflag = false; timer_flag = false; update_time = 0; mult_time = 0; n_call = n_cg_step = 0; + qtotal = 0.; + qtotal_var_style = VarStyle::UNSET; + // read fix command fixname = std::string(arg[0]); groups = std::vector(1, igroup); group_bits = std::vector(1, groupbit); group_psi_var_names = std::vector(1); group_psi_var_styles = std::vector(1, VarStyle::CONST); - group_psi = std::vector(1); + group_psi_const = std::vector(1); etypes_neighlists = false; if (strstr(arg[3], "v_") == arg[3]) { std::string vname = arg[3]; group_psi_var_names[0] = vname.substr(2); group_psi_var_styles[0] = VarStyle::EQUAL; } else - group_psi[0] = utils::numeric(FLERR, arg[3], false, lmp); + group_psi_const[0] = utils::numeric(FLERR, arg[3], false, lmp); char *eta_str = arg[4]; eta = utils::numeric(FLERR, eta_str, false, lmp); int iarg = 5; @@ -132,12 +137,12 @@ FixElectrodeConp::FixElectrodeConp(LAMMPS *lmp, int narg, char **arg) : std::string vname = arg[iarg]; group_psi_var_names.push_back(vname.substr(2)); group_psi_var_styles.push_back(VarStyle::EQUAL); - group_psi.push_back(0.); + group_psi_const.push_back(0.); } else { std::string null; group_psi_var_names.push_back(null); group_psi_var_styles.push_back(VarStyle::CONST); - group_psi.push_back(utils::numeric(FLERR, arg[iarg], false, lmp)); + group_psi_const.push_back(utils::numeric(FLERR, arg[iarg], false, lmp)); } } else if ((strcmp(arg[iarg], "algo") == 0)) { if (!default_algo) error->one(FLERR, "Algorithm can be set only once"); @@ -195,8 +200,32 @@ FixElectrodeConp::FixElectrodeConp(LAMMPS *lmp, int narg, char **arg) : thermo_temp = force->boltz / force->qe2f * utils::numeric(FLERR, arg[++iarg], false, lmp); thermo_time = utils::numeric(FLERR, arg[++iarg], false, lmp); thermo_init = utils::inumeric(FLERR, arg[++iarg], false, lmp); - // toggle parameters - } else if ((strcmp(arg[iarg], "etypes") == 0)) { + } else if ((strcmp(arg[iarg], "qtotal") == 0)) { + if (iarg + 2 > narg) error->all(FLERR, "Need one argument after qtotal keyword"); + if (strcmp(this->style, "electrode/conq") == 0) + error->all(FLERR, "qtotal keyword not available for electrode/conq"); + ++iarg; + if (strstr(arg[iarg], "v_") == arg[iarg]) { + std::string vname = arg[iarg]; + qtotal_var_name = vname.substr(2); + qtotal_var_style = VarStyle::EQUAL; + } else { + qtotal = utils::numeric(FLERR, arg[iarg], false, lmp); + qtotal_var_style = VarStyle::CONST; + } + } else if ((strcmp(arg[iarg], "eta") == 0)) { + if (iarg + 2 > narg) error->all(FLERR, "Need two arguments after eta command"); + etaflag = true; + int is_double, cols, ghost; + eta_index = atom->find_custom_ghost(arg[++iarg] + 2, is_double, cols, ghost); + if (eta_index == -1) + error->all(FLERR, "eta keyword requires name of previously defined property"); + if (!is_double) error->all(FLERR, "eta keyword requires double-valued property/atom vector"); + if (cols != 0) error->all(FLERR, "eta keyword requires property/atom vector not an array"); + if (!ghost) error->all(FLERR, "eta keyword requires property/atom fix with ghost on"); + } + // toggle parameters + else if ((strcmp(arg[iarg], "etypes") == 0)) { etypes_neighlists = utils::logical(FLERR, arg[++iarg], false, lmp); } else if ((strncmp(arg[iarg], "symm", 4) == 0)) { symm = utils::logical(FLERR, arg[++iarg], false, lmp); @@ -208,6 +237,12 @@ FixElectrodeConp::FixElectrodeConp(LAMMPS *lmp, int narg, char **arg) : iarg++; } + if (qtotal_var_style != VarStyle::UNSET) { + if (symm) error->all(FLERR, "{} cannot use qtotal keyword with symm on", this->style); + } + + // computatonal potential + group_psi = std::vector(groups.size()); // union of all coupled groups std::string union_group = "conp_group"; std::string group_cmd = union_group + " union"; @@ -225,6 +260,7 @@ FixElectrodeConp::FixElectrodeConp(LAMMPS *lmp, int narg, char **arg) : if (need_elec_vector) elec_vector = new ElectrodeVector(lmp, igroup, igroup, eta, false); assert(groups.size() == group_bits.size()); assert(groups.size() == group_psi.size()); + assert(groups.size() == group_psi_const.size()); assert(groups.size() == group_psi_var_styles.size()); assert(groups.size() == group_psi_var_names.size()); assert(igroup == elyt_vector->igroup); @@ -374,6 +410,31 @@ void FixElectrodeConp::init() if (strncmp(modify->fix[i]->style, "electrode", 9) == 0) count++; if (count > 1) error->all(FLERR, "More than one fix electrode"); + // make sure electrode atoms are not integrated if a matrix is used for electrode-electrode interaction + int const nlocal = atom->nlocal; + int *mask = atom->mask; + Fix **fix = modify->fix; + if (matrix_algo) { + std::vector integrate_ids = std::vector(); + for (int i = 0; i < modify->nfix; i++) { + if (fix[i]->time_integrate == 0) continue; + int electrode_mover = 0; + int fix_groupbit = fix[i]->groupbit; + for (int j = 0; j < nlocal; j++) + if ((mask[j] & fix_groupbit) && (mask[j] & groupbit)) electrode_mover = 1; + MPI_Allreduce(MPI_IN_PLACE, &electrode_mover, 1, MPI_INT, MPI_SUM, world); + if (electrode_mover && comm->me == 0) integrate_ids.push_back(fix[i]->id); + } + if (comm->me == 0) + for (char *fix_id : integrate_ids) + error->warning( + FLERR, + "Electrode atoms are integrated by fix {}, but fix electrode is using a matrix method. " + "For " + "mobile electrodes use the conjugate gradient algorithm without matrix ('algo cg').", + fix_id); + } + // check for package intel if (etypes_neighlists) request_etypes_neighlists(); @@ -448,6 +509,7 @@ void FixElectrodeConp::setup_post_neighbor() // get equal-style variable ids: group_psi_var_ids = std::vector(num_of_groups, -1); for (int g = 0; g < num_of_groups; g++) { + assert(group_psi_var_styles[g] != VarStyle::UNSET); if (group_psi_var_styles[g] == VarStyle::CONST) continue; const char *var_name = group_psi_var_names[g].c_str(); int var_id = input->variable->find(var_name); @@ -456,13 +518,23 @@ void FixElectrodeConp::setup_post_neighbor() error->all(FLERR, "Variable '{}' for fix {} is not equal-style", var_name, style); group_psi_var_ids[g] = var_id; } + if (qtotal_var_style == VarStyle::EQUAL) { + const char *var_name = qtotal_var_name.c_str(); + int var_id = input->variable->find(var_name); + if (var_id < 0) error->all(FLERR, "Variable '{}' for fix electrode does not exist", var_name); + if (!input->variable->equalstyle(var_id)) + error->all(FLERR, "Variable '{}' for fix electrode is not equal-style", var_name); + qtotal_var_id = var_id; + } // pair and list setups: evscale = force->qe2f / force->qqrd2e; elyt_vector->setup(pair, vec_neighlist, timer_flag); + if (etaflag) elyt_vector->setup_eta(eta_index); if (need_elec_vector) { elec_vector->setup(pair, mat_neighlist, timer_flag); + if (etaflag) elec_vector->setup_eta(eta_index); if (tfflag) elec_vector->setup_tf(tf_types); } @@ -497,7 +569,8 @@ void FixElectrodeConp::setup_post_neighbor() if (etypes_neighlists) neighbor->build_one(mat_neighlist, 0); auto array_compute = std::unique_ptr(new ElectrodeMatrix(lmp, igroup, eta)); array_compute->setup(tag_to_iele, pair, mat_neighlist); - if (tfflag) { array_compute->setup_tf(tf_types); } + if (etaflag) array_compute->setup_eta(eta_index); + if (tfflag) array_compute->setup_tf(tf_types); array_compute->compute_array(elastance, timer_flag); } // write_mat before proceeding if (comm->me == 0 && write_mat) { @@ -804,6 +877,8 @@ void FixElectrodeConp::update_charges() } MPI_Allreduce(MPI_IN_PLACE, &sb_charges.front(), num_of_groups, MPI_DOUBLE, MPI_SUM, world); update_psi(); // use for equal-style and conq + if (qtotal_var_style != VarStyle::UNSET) + update_psi_qtotal(); // use for qtotal; same for thermo for (int g = 0; g < num_of_groups; g++) for (int j = 0; j < nlocalele; j++) q_local[j] += sd_vectors[g][list_iele[j]] * group_psi[g]; MPI_Barrier(world); @@ -840,20 +915,20 @@ void FixElectrodeConp::update_charges() a = ele_ele_interaction(q_local); r = add_nlocalele(b, a); } else { - r = add_nlocalele(r, scale_vector(alpha, y)); + r = add_nlocalele(r, scale_vector(alpha, std::move(y))); } auto p = constraint_projection(r); double dot_new = dot_nlocalele(r, p); - d = add_nlocalele(p, scale_vector(dot_new / dot_old, d)); + d = add_nlocalele(std::move(p), scale_vector(dot_new / dot_old, d)); delta = dot_nlocalele(r, d); dot_old = dot_new; } - recompute_potential(b, q_local); + recompute_potential(std::move(b), q_local); if (delta > cg_threshold && comm->me == 0) error->warning(FLERR, "CG threshold not reached"); } else { error->all(FLERR, "This algorithm is not implemented, yet"); } - set_charges(q_local); + set_charges(std::move(q_local)); update_time += MPI_Wtime() - start; } @@ -906,12 +981,22 @@ std::vector FixElectrodeConp::gather_ngroup(std::vector x_local) } /* ---------------------------------------------------------------------- - ensure total electrode charge is 0 if symm + ensure total electrode charge is 0 if symm and qtotal if qtotal is used ------------------------------------------------------------------------- */ std::vector FixElectrodeConp::constraint_correction(std::vector x) { - return constraint_projection(std::move(x)); + if (symm || qtotal_var_style != VarStyle::UNSET) { + if (qtotal_var_style == VarStyle::EQUAL) qtotal = input->variable->compute_equal(qtotal_var_id); + double sum = 0.; + for (double xi : x) sum += xi; + MPI_Allreduce(MPI_IN_PLACE, &sum, 1, MPI_DOUBLE, MPI_SUM, world); + if (qtotal_var_style != VarStyle::UNSET) sum -= qtotal; + sum /= ngroup; + for (double &xi : x) xi -= sum; + return x; + } + return x; } /* ---------------------------------------------------------------------- @@ -920,7 +1005,7 @@ std::vector FixElectrodeConp::constraint_correction(std::vector std::vector FixElectrodeConp::constraint_projection(std::vector x) { - if (symm) { + if (symm || qtotal_var_style != VarStyle::UNSET) { double sum = 0.; for (double xi : x) sum += xi; MPI_Allreduce(MPI_IN_PLACE, &sum, 1, MPI_DOUBLE, MPI_SUM, world); @@ -978,13 +1063,28 @@ std::vector FixElectrodeConp::times_elastance(std::vector x) void FixElectrodeConp::update_psi() { for (int g = 0; g < num_of_groups; g++) { - if (group_psi_var_styles[g] == VarStyle::CONST) continue; - group_psi[g] = input->variable->compute_equal(group_psi_var_ids[g]); + if (group_psi_var_styles[g] == VarStyle::CONST) + group_psi[g] = group_psi_const[g]; + else + group_psi[g] = input->variable->compute_equal(group_psi_var_ids[g]); } } /* ---------------------------------------------------------------------- */ +void FixElectrodeConp::update_psi_qtotal() +{ + if (qtotal_var_style == VarStyle::EQUAL) qtotal = input->variable->compute_equal(qtotal_var_id); + double q_current = 0.; + for (int i = 0; i < num_of_groups; i++) { + q_current += sb_charges[i]; + for (int j = 0; j < num_of_groups; j++) q_current += macro_capacitance[i][j] * group_psi[j]; + } + double add_psi = (qtotal - q_current) / macro_capacitance_sum; + for (int i = 0; i < num_of_groups; i++) group_psi[i] += add_psi; +} +/* ---------------------------------------------------------------------- */ + void FixElectrodeConp::compute_macro_matrices() { assert(algo == Algo::MATRIX_INV); @@ -1040,6 +1140,10 @@ void FixElectrodeConp::compute_macro_matrices() } } } + + macro_capacitance_sum = 0.; + for (int i = 0; i < num_of_groups; i++) + for (int j = 0; j < num_of_groups; j++) macro_capacitance_sum += macro_capacitance[i][j]; } /* ---------------------------------------------------------------------- */ @@ -1096,7 +1200,7 @@ double FixElectrodeConp::self_energy(int eflag) // corrections to energy due to self interaction double const qqrd2e = force->qqrd2e; int const nlocal = atom->nlocal; - double const pre = eta / sqrt(MY_2PI) * qqrd2e; + double const pre = 1. / sqrt(MY_2PI) * qqrd2e; int *mask = atom->mask; int *type = atom->type; double *q = atom->q; @@ -1104,7 +1208,8 @@ double FixElectrodeConp::self_energy(int eflag) for (int i = 0; i < nlocal; i++) { if (groupbit & mask[i]) { double const q2 = q[i] * q[i]; - double e = pre * q2; + double ieta = etaflag ? atom->dvector[eta_index][i] : eta; + double e = ieta * pre * q2; if (tfflag && (groupbit & mask[i])) e += 0.5 * qqrd2e * q2 * tf_types[type[i]]; energy += e; if (eflag) { @@ -1144,6 +1249,7 @@ double FixElectrodeConp::gausscorr(int eflag, bool fflag) double xtmp = x[i][0]; double ytmp = x[i][1]; double ztmp = x[i][2]; + double const eta_i = etaflag ? atom->dvector[eta_index][i] : eta; int itype = type[i]; int *jlist = firstneigh[i]; int jnum = numneigh[i]; @@ -1152,7 +1258,6 @@ double FixElectrodeConp::gausscorr(int eflag, bool fflag) int const j = jlist[jj] & NEIGHMASK; bool j_in_ele = groupbit & mask[j]; if (!(i_in_ele || j_in_ele)) continue; - double eta_ij = (i_in_ele && j_in_ele) ? eta / MY_SQRT2 : eta; double delx = xtmp - x[j][0]; double dely = ytmp - x[j][1]; @@ -1161,6 +1266,16 @@ double FixElectrodeConp::gausscorr(int eflag, bool fflag) int jtype = type[j]; if (rsq < force->pair->cutsq[itype][jtype]) { + double const eta_j = etaflag ? atom->dvector[eta_index][j] : eta; + double eta_ij; + if (i_in_ele && j_in_ele) + eta_ij = eta_i * eta_j / sqrt(eta_i * eta_i + eta_j * eta_j); + else if (i_in_ele) + eta_ij = eta_i; + else { + assert(j_in_ele); + eta_ij = eta_j; + } double r2inv = 1.0 / rsq; double r = sqrt(rsq); double erfc_etar = 0.; diff --git a/src/ELECTRODE/fix_electrode_conp.h b/src/ELECTRODE/fix_electrode_conp.h index 1289d96281e..a1d7530bd18 100644 --- a/src/ELECTRODE/fix_electrode_conp.h +++ b/src/ELECTRODE/fix_electrode_conp.h @@ -29,7 +29,6 @@ FixStyle(electrode/conp, FixElectrodeConp); #include "fix.h" #include -#include #include namespace LAMMPS_NS { @@ -71,7 +70,7 @@ class FixElectrodeConp : public Fix { protected: enum class Algo { MATRIX_INV, MATRIX_CG, CG }; - enum class VarStyle { CONST, EQUAL }; + enum class VarStyle { CONST, EQUAL, UNSET }; virtual void update_psi(); virtual void pre_update(){}; virtual void recompute_potential(std::vector, std::vector){}; @@ -80,6 +79,7 @@ class FixElectrodeConp : public Fix { virtual void compute_macro_matrices(); std::vector ele_ele_interaction(const std::vector &); std::vector group_psi; + std::vector group_psi_const; // needed to undo qtotal psi updates std::vector group_bits; std::vector groups; int num_of_groups; @@ -101,6 +101,10 @@ class FixElectrodeConp : public Fix { std::string fixname; // used by electrode/ffield to set up internal efield bool intelflag; inline virtual void intel_pack_buffers() {} + double qtotal; + std::string qtotal_var_name; + int qtotal_var_id; + VarStyle qtotal_var_style; private: std::string output_file_inv, output_file_mat, output_file_vec; @@ -133,6 +137,8 @@ class FixElectrodeConp : public Fix { int get_top_group(); // used by ffield int top_group; // used by ffield bool tfflag; + int eta_index; // index of atom property for eta + bool etaflag; // eta specified as atom property bool timer_flag; std::map tf_types; // cg @@ -143,6 +149,9 @@ class FixElectrodeConp : public Fix { std::vector gather_ngroup(std::vector); std::vector gather_elevec_local(ElectrodeVector *); void set_charges(std::vector); + // qtotal + double macro_capacitance_sum; + void update_psi_qtotal(); // fix-specific electrode ID storage system: diff --git a/src/ELECTRODE/fix_electrode_conq.cpp b/src/ELECTRODE/fix_electrode_conq.cpp index 0d3d1d2aafc..a6baa1e1221 100644 --- a/src/ELECTRODE/fix_electrode_conq.cpp +++ b/src/ELECTRODE/fix_electrode_conq.cpp @@ -30,7 +30,7 @@ FixElectrodeConq::FixElectrodeConq(LAMMPS *lmp, int narg, char **arg) : FixElectrodeConp(lmp, narg, arg) { // copy const-style values across because update_psi will change group_psi - group_q = group_psi; + group_q = group_psi_const; if (symm) { if (num_of_groups == 1) diff --git a/src/ELECTRODE/fix_electrode_thermo.cpp b/src/ELECTRODE/fix_electrode_thermo.cpp index 52c0a3ce4cf..92db4b3ee05 100644 --- a/src/ELECTRODE/fix_electrode_thermo.cpp +++ b/src/ELECTRODE/fix_electrode_thermo.cpp @@ -29,8 +29,8 @@ using namespace LAMMPS_NS; -#define NUM_GROUPS 2 -#define SMALL 0.00001 +static constexpr int NUM_GROUPS = 2; +static constexpr double SMALL = 0.00001; /* ----------------------------------------------------------------------- */ @@ -47,7 +47,8 @@ FixElectrodeThermo::FixElectrodeThermo(LAMMPS *lmp, int narg, char **arg) : if (thermo_time < SMALL) error->all(FLERR, "Keyword temp not set or zero in electrode/thermo"); thermo_random = new RanMars(lmp, thermo_init); - if (group_psi_var_styles[0] == VarStyle::CONST) delta_psi_0 = group_psi[1] - group_psi[0]; + if (group_psi_var_styles[0] == VarStyle::CONST) + delta_psi_0 = group_psi_const[1] - group_psi_const[0]; } /* ----------------------------------------------------------------------- */ @@ -102,7 +103,7 @@ void FixElectrodeThermo::update_psi() double const delta_psi = group_psi_old[1] - group_psi_old[0]; // target potential difference from input parameters - if (group_psi_var_styles[0] != VarStyle::CONST) { + if (group_psi_var_styles[0] == VarStyle::EQUAL) { delta_psi_0 = input->variable->compute_equal(group_psi_var_ids[1]) - input->variable->compute_equal(group_psi_var_ids[0]); } diff --git a/src/ELECTRODE/pppm_electrode.cpp b/src/ELECTRODE/pppm_electrode.cpp index 6ede0f1f4db..ee34def74d3 100644 --- a/src/ELECTRODE/pppm_electrode.cpp +++ b/src/ELECTRODE/pppm_electrode.cpp @@ -20,6 +20,7 @@ #include "angle.h" #include "atom.h" #include "bond.h" +#include "boundary_correction.h" #include "citeme.h" #include "comm.h" #include "domain.h" @@ -45,22 +46,14 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 +static constexpr int MAXORDER = 7; +static constexpr int OFFSET = 16384; +static constexpr double EPS_HOC = 1.0e-7; enum { REVERSE_RHO }; enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; static const char cite_pppm_electrode[] = "kspace_style pppm/electrode command:\n\n" @@ -445,6 +438,7 @@ void PPPMElectrode::compute(int eflag, int vflag) start_compute(); + /* if (compute_vector_called && last_invert_source) { // electrolyte_density_brick is filled, so we can grab only electrode atoms. // Does not work for direct cg algorithm because electrode charges change after compute_vector. @@ -460,15 +454,17 @@ void PPPMElectrode::compute(int eflag, int vflag) density_brick[nz][ny][nx] += electrolyte_density_brick[nz][ny][nx]; } } else { - make_rho(); + */ + particle_map(); + make_rho(); - // all procs communicate density values from their ghost cells - // to fully sum contribution in their 3d bricks - // remap from 3d decomposition to FFT decomposition + // all procs communicate density values from their ghost cells + // to fully sum contribution in their 3d bricks + // remap from 3d decomposition to FFT decomposition - gc->reverse_comm(Grid3d::KSPACE, this, REVERSE_RHO, 1, sizeof(FFT_SCALAR), gc_buf1, gc_buf2, - MPI_FFT_SCALAR); - } + gc->reverse_comm(Grid3d::KSPACE, this, REVERSE_RHO, 1, sizeof(FFT_SCALAR), gc_buf1, gc_buf2, + MPI_FFT_SCALAR); + //} brick2fft(); @@ -591,6 +587,7 @@ void PPPMElectrode::compute_vector(double *vec, int sensor_grpbit, int source_gr // electrolyte density (without writing an additional function) FFT_SCALAR ***density_brick_real = density_brick; FFT_SCALAR *density_fft_real = density_fft; + particle_map(); make_rho_in_brick(source_grpbit, electrolyte_density_brick, invert_source); density_brick = electrolyte_density_brick; density_fft = electrolyte_density_fft; @@ -633,7 +630,9 @@ void PPPMElectrode::project_psi(double *vec, int sensor_grpbit) // project u_brick with weight matrix double **x = atom->x; int *mask = atom->mask; - double const scaleinv = 1.0 / (nx_pppm * ny_pppm * nz_pppm); + const bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + const double scaleinv = 1.0 / ngridtotal; + for (int i = 0; i < atom->nlocal; i++) { if (!(mask[i] & sensor_grpbit)) continue; double v = 0.; @@ -674,7 +673,8 @@ void PPPMElectrode::compute_matrix(bigint *imat, double **matrix, bool timer_fla // fft green's function k -> r (double) double *greens_real; memory->create(greens_real, nz_pppm * ny_pppm * nx_pppm, "pppm/electrode:greens_real"); - memset(greens_real, 0, (std::size_t)nz_pppm * (std::size_t)ny_pppm * (std::size_t)nx_pppm * sizeof(double)); + memset(greens_real, 0, + (std::size_t) nz_pppm * (std::size_t) ny_pppm * (std::size_t) nx_pppm * sizeof(double)); for (int i = 0, n = 0; i < nfft; i++) { work2[n++] = greensfn[i]; work2[n++] = ZEROF; @@ -867,7 +867,7 @@ void PPPMElectrode::two_step_multiplication(bigint *imat, double *greens_real, d double **gw; memory->create(gw, nmat, nxyz, "pppm/electrode:gw"); - memset(&(gw[0][0]), 0, (std::size_t)nmat * (std::size_t)nxyz * sizeof(double)); + memset(&(gw[0][0]), 0, (std::size_t) nmat * (std::size_t) nxyz * sizeof(double)); auto fmod = [](int x, int n) { // fast unsigned mod int r = abs(x); @@ -986,17 +986,18 @@ void PPPMElectrode::allocate() // returns local owned and ghost grid bounds // setup communication patterns and buffers - gc = new Grid3d(lmp,world,nx_pppm,ny_pppm,nz_pppm, - nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in, - nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out); + gc = new Grid3d(lmp, world, nx_pppm, ny_pppm, nz_pppm, nxlo_in, nxhi_in, nylo_in, nyhi_in, + nzlo_in, nzhi_in, nxlo_out, nxhi_out, nylo_out, nyhi_out, nzlo_out, nzhi_out); - gc->setup_comm(ngc_buf1,ngc_buf2); + gc->setup_comm(ngc_buf1, ngc_buf2); - if (differentiation_flag) npergrid = 1; - else npergrid = 3; + if (differentiation_flag) + npergrid = 1; + else + npergrid = 3; - memory->create(gc_buf1,npergrid*ngc_buf1,"pppm:gc_buf1"); - memory->create(gc_buf2,npergrid*ngc_buf2,"pppm:gc_buf2"); + memory->create(gc_buf1, npergrid * ngc_buf1, "pppm:gc_buf1"); + memory->create(gc_buf2, npergrid * ngc_buf2, "pppm:gc_buf2"); // tally local grid sizes // ngrid = count of owned+ghost grid cells on this proc @@ -1005,67 +1006,63 @@ void PPPMElectrode::allocate() // nfft = FFT points in x-pencil FFT decomposition on this proc // nfft_both = greater of nfft and nfft_brick - ngrid = (nxhi_out-nxlo_out+1) * (nyhi_out-nylo_out+1) * - (nzhi_out-nzlo_out+1); + ngrid = (nxhi_out - nxlo_out + 1) * (nyhi_out - nylo_out + 1) * (nzhi_out - nzlo_out + 1); - nfft_brick = (nxhi_in-nxlo_in+1) * (nyhi_in-nylo_in+1) * - (nzhi_in-nzlo_in+1); + nfft_brick = (nxhi_in - nxlo_in + 1) * (nyhi_in - nylo_in + 1) * (nzhi_in - nzlo_in + 1); - nfft = (nxhi_fft-nxlo_fft+1) * (nyhi_fft-nylo_fft+1) * - (nzhi_fft-nzlo_fft+1); + nfft = (nxhi_fft - nxlo_fft + 1) * (nyhi_fft - nylo_fft + 1) * (nzhi_fft - nzlo_fft + 1); - nfft_both = MAX(nfft,nfft_brick); + nfft_both = MAX(nfft, nfft_brick); // allocate distributed grid data - memory->create3d_offset(density_brick,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:density_brick"); + memory->create3d_offset(density_brick, nzlo_out, nzhi_out, nylo_out, nyhi_out, nxlo_out, nxhi_out, + "pppm:density_brick"); - memory->create(density_fft,nfft_both,"pppm:density_fft"); - memory->create(greensfn,nfft_both,"pppm:greensfn"); - memory->create(work1,2*nfft_both,"pppm:work1"); - memory->create(work2,2*nfft_both,"pppm:work2"); - memory->create(vg,nfft_both,6,"pppm:vg"); + memory->create(density_fft, nfft_both, "pppm:density_fft"); + memory->create(greensfn, nfft_both, "pppm:greensfn"); + memory->create(work1, 2 * nfft_both, "pppm:work1"); + memory->create(work2, 2 * nfft_both, "pppm:work2"); + memory->create(vg, nfft_both, 6, "pppm:vg"); if (triclinic == 0) { - memory->create1d_offset(fkx,nxlo_fft,nxhi_fft,"pppm:fkx"); - memory->create1d_offset(fky,nylo_fft,nyhi_fft,"pppm:fky"); - memory->create1d_offset(fkz,nzlo_fft,nzhi_fft,"pppm:fkz"); + memory->create1d_offset(fkx, nxlo_fft, nxhi_fft, "pppm:fkx"); + memory->create1d_offset(fky, nylo_fft, nyhi_fft, "pppm:fky"); + memory->create1d_offset(fkz, nzlo_fft, nzhi_fft, "pppm:fkz"); } else { - memory->create(fkx,nfft_both,"pppm:fkx"); - memory->create(fky,nfft_both,"pppm:fky"); - memory->create(fkz,nfft_both,"pppm:fkz"); + memory->create(fkx, nfft_both, "pppm:fkx"); + memory->create(fky, nfft_both, "pppm:fky"); + memory->create(fkz, nfft_both, "pppm:fkz"); } if (differentiation_flag == 1) { - memory->create3d_offset(u_brick,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:u_brick"); + memory->create3d_offset(u_brick, nzlo_out, nzhi_out, nylo_out, nyhi_out, nxlo_out, nxhi_out, + "pppm:u_brick"); - memory->create(sf_precoeff1,nfft_both,"pppm:sf_precoeff1"); - memory->create(sf_precoeff2,nfft_both,"pppm:sf_precoeff2"); - memory->create(sf_precoeff3,nfft_both,"pppm:sf_precoeff3"); - memory->create(sf_precoeff4,nfft_both,"pppm:sf_precoeff4"); - memory->create(sf_precoeff5,nfft_both,"pppm:sf_precoeff5"); - memory->create(sf_precoeff6,nfft_both,"pppm:sf_precoeff6"); + memory->create(sf_precoeff1, nfft_both, "pppm:sf_precoeff1"); + memory->create(sf_precoeff2, nfft_both, "pppm:sf_precoeff2"); + memory->create(sf_precoeff3, nfft_both, "pppm:sf_precoeff3"); + memory->create(sf_precoeff4, nfft_both, "pppm:sf_precoeff4"); + memory->create(sf_precoeff5, nfft_both, "pppm:sf_precoeff5"); + memory->create(sf_precoeff6, nfft_both, "pppm:sf_precoeff6"); } else { - memory->create3d_offset(vdx_brick,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdx_brick"); - memory->create3d_offset(vdy_brick,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdy_brick"); - memory->create3d_offset(vdz_brick,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdz_brick"); + memory->create3d_offset(vdx_brick, nzlo_out, nzhi_out, nylo_out, nyhi_out, nxlo_out, nxhi_out, + "pppm:vdx_brick"); + memory->create3d_offset(vdy_brick, nzlo_out, nzhi_out, nylo_out, nyhi_out, nxlo_out, nxhi_out, + "pppm:vdy_brick"); + memory->create3d_offset(vdz_brick, nzlo_out, nzhi_out, nylo_out, nyhi_out, nxlo_out, nxhi_out, + "pppm:vdz_brick"); } // summation coeffs order_allocated = order; - if (!stagger_flag) memory->create(gf_b,order,"pppm:gf_b"); - memory->create2d_offset(rho1d,3,-order/2,order/2,"pppm:rho1d"); - memory->create2d_offset(drho1d,3,-order/2,order/2,"pppm:drho1d"); - memory->create2d_offset(rho_coeff,order,(1-order)/2,order/2,"pppm:rho_coeff"); - memory->create2d_offset(drho_coeff,order,(1-order)/2,order/2, - "pppm:drho_coeff"); + if (!stagger_flag) memory->create(gf_b, order, "pppm:gf_b"); + memory->create2d_offset(rho1d, 3, -order / 2, order / 2, "pppm:rho1d"); + memory->create2d_offset(drho1d, 3, -order / 2, order / 2, "pppm:drho1d"); + memory->create2d_offset(rho_coeff, order, (1 - order) / 2, order / 2, "pppm:rho_coeff"); + memory->create2d_offset(drho_coeff, order, (1 - order) / 2, order / 2, "pppm:drho_coeff"); // create 2 FFTs and a Remap // 1st FFT keeps data in FFT decomposition @@ -1074,20 +1071,17 @@ void PPPMElectrode::allocate() int tmp; - fft1 = new FFT3d(lmp,world,nx_pppm,ny_pppm,nz_pppm, - nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft, - nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft, - 0,0,&tmp,collective_flag); + fft1 = new FFT3d(lmp, world, nx_pppm, ny_pppm, nz_pppm, nxlo_fft, nxhi_fft, nylo_fft, nyhi_fft, + nzlo_fft, nzhi_fft, nxlo_fft, nxhi_fft, nylo_fft, nyhi_fft, nzlo_fft, nzhi_fft, + 0, 0, &tmp, collective_flag); - fft2 = new FFT3d(lmp,world,nx_pppm,ny_pppm,nz_pppm, - nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft, - nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in, - 0,0,&tmp,collective_flag); + fft2 = new FFT3d(lmp, world, nx_pppm, ny_pppm, nz_pppm, nxlo_fft, nxhi_fft, nylo_fft, nyhi_fft, + nzlo_fft, nzhi_fft, nxlo_in, nxhi_in, nylo_in, nyhi_in, nzlo_in, nzhi_in, 0, 0, + &tmp, collective_flag); - remap = new Remap(lmp,world, - nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in, - nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft, - 1,0,0,FFT_PRECISION,collective_flag); + remap = new Remap(lmp, world, nxlo_in, nxhi_in, nylo_in, nyhi_in, nzlo_in, nzhi_in, nxlo_fft, + nxhi_fft, nylo_fft, nyhi_fft, nzlo_fft, nzhi_fft, 1, 0, 0, FFT_PRECISION, + collective_flag); // ELECTRODE specific allocations @@ -1362,7 +1356,7 @@ double PPPMElectrode::compute_qopt() // each proc calculates contributions from every Pth grid point bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; - int nxy_pppm = nx_pppm * ny_pppm; + bigint nxy_pppm = (bigint) nx_pppm * ny_pppm; double qopt = 0.0; diff --git a/src/ELECTRODE/slab_dipole.cpp b/src/ELECTRODE/slab_dipole.cpp index d5f3eae7aa4..27ec42a8b55 100644 --- a/src/ELECTRODE/slab_dipole.cpp +++ b/src/ELECTRODE/slab_dipole.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; /* ---------------------------------------------------------------------- Slab-geometry correction term to dampen inter-slab interactions between diff --git a/src/EXTRA-COMPUTE/compute_adf.cpp b/src/EXTRA-COMPUTE/compute_adf.cpp index 35ff8bfd33b..20b1749fa90 100644 --- a/src/EXTRA-COMPUTE/compute_adf.cpp +++ b/src/EXTRA-COMPUTE/compute_adf.cpp @@ -34,32 +34,27 @@ #include using namespace LAMMPS_NS; -using namespace MathConst; +using MathConst::MY_PI; +using MathConst::RAD2DEG; -enum{DEGREE, RADIAN, COSINE}; +enum { DEGREE, RADIAN, COSINE }; /* ---------------------------------------------------------------------- compute angular distribution functions for I, J, K atoms ---------------------------------------------------------------------- */ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - ilo(nullptr), ihi(nullptr), jlo(nullptr), jhi(nullptr), klo(nullptr), khi(nullptr), - hist(nullptr), histall(nullptr), - rcutinnerj(nullptr), rcutinnerk(nullptr), - rcutouterj(nullptr), rcutouterk(nullptr), - list(nullptr), - iatomcount(nullptr), iatomcountall(nullptr), iatomflag(nullptr), - maxjatom(nullptr), maxkatom(nullptr), - numjatom(nullptr), numkatom(nullptr), - neighjatom(nullptr),neighkatom(nullptr), - jatomflag(nullptr), katomflag(nullptr), - maxjkatom(nullptr), numjkatom(nullptr), - neighjkatom(nullptr), bothjkatom(nullptr), delrjkatom(nullptr) + Compute(lmp, narg, arg), ilo(nullptr), ihi(nullptr), jlo(nullptr), jhi(nullptr), klo(nullptr), + khi(nullptr), hist(nullptr), histall(nullptr), rcutinnerj(nullptr), rcutinnerk(nullptr), + rcutouterj(nullptr), rcutouterk(nullptr), list(nullptr), iatomcount(nullptr), + iatomcountall(nullptr), iatomflag(nullptr), maxjatom(nullptr), maxkatom(nullptr), + numjatom(nullptr), numkatom(nullptr), neighjatom(nullptr), neighkatom(nullptr), + jatomflag(nullptr), katomflag(nullptr), maxjkatom(nullptr), numjkatom(nullptr), + neighjkatom(nullptr), bothjkatom(nullptr), delrjkatom(nullptr) { int nargsperadf = 7; - if (narg < 4 ) error->all(FLERR,"Illegal compute adf command"); + if (narg < 4) utils::missing_cmd_args(FLERR, "compute adf", error); array_flag = 1; extarray = 0; @@ -89,17 +84,16 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg+1],"degree") == 0) ordinate_style = DEGREE; else if (strcmp(arg[iarg+1],"radian") == 0) ordinate_style = RADIAN; else if (strcmp(arg[iarg+1],"cosine") == 0) ordinate_style = COSINE; - else error->all(FLERR,"Illegal compute adf command"); + else error->all(FLERR,"Unknown compute adf ordinate flag {}",arg[iarg+1]); iarg += 2; - } else error->all(FLERR,"Illegal compute adf command"); + } else error->all(FLERR,"Unknown compute adf keyword {}", arg[iarg]); } // triplewise args if (!nargtriple) ntriples = 1; else { - if (nargtriple % nargsperadf) - error->all(FLERR,"Illegal compute adf command"); + if (nargtriple % nargsperadf) error->all(FLERR,"Illegal compute adf command"); ntriples = nargtriple/nargsperadf; } @@ -107,12 +101,9 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : size_array_cols = 1 + 2*ntriples; int ntypes = atom->ntypes; - memory->create(iatomflag,ntriples,ntypes+1, - "adf:iatomflag"); - memory->create(jatomflag,ntriples,ntypes+1, - "adf:jatomflag"); - memory->create(katomflag,ntriples,ntypes+1, - "adf:katomflag"); + memory->create(iatomflag,ntriples,ntypes+1,"adf:iatomflag"); + memory->create(jatomflag,ntriples,ntypes+1,"adf:jatomflag"); + memory->create(katomflag,ntriples,ntypes+1,"adf:katomflag"); ilo = new int[ntriples]; ihi = new int[ntriples]; @@ -134,14 +125,14 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : klo[0] = 1; khi[0] = ntypes; } else { cutflag = 1; + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute adf with custom cutoffs requires neighbor style 'bin' or 'nsq'"); iarg = 4; for (int m = 0; m < ntriples; m++) { utils::bounds(FLERR,arg[iarg],1,atom->ntypes,ilo[m],ihi[m],error); utils::bounds(FLERR,arg[iarg+1],1,atom->ntypes,jlo[m],jhi[m],error); utils::bounds(FLERR,arg[iarg+2],1,atom->ntypes,klo[m],khi[m],error); - if (ilo[m] > ihi[m] || - jlo[m] > jhi[m] || - klo[m] > khi[m]) + if ((ilo[m] > ihi[m]) || (jlo[m] > jhi[m]) || (klo[m] > khi[m])) error->all(FLERR,"Illegal compute adf command"); rcutinnerj[m] = utils::numeric(FLERR,arg[iarg+3],false,lmp); rcutouterj[m] = utils::numeric(FLERR,arg[iarg+4],false,lmp); @@ -221,8 +212,6 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : memory->create(bothjkatom[m],maxjkatom[m],"adf:bothjkatom"); memory->create(delrjkatom[m],maxjkatom[m],4,"adf:delrjkatom"); } - - rad2deg = 180.0 / MY_PI; } /* ---------------------------------------------------------------------- */ @@ -230,47 +219,47 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : ComputeADF::~ComputeADF() { memory->destroy(iatomflag); - delete [] ilo; - delete [] ihi; - delete [] jlo; - delete [] jhi; - delete [] klo; - delete [] khi; - delete [] iatomcount; - delete [] iatomcountall; + delete[] ilo; + delete[] ihi; + delete[] jlo; + delete[] jhi; + delete[] klo; + delete[] khi; + delete[] iatomcount; + delete[] iatomcountall; memory->destroy(hist); memory->destroy(histall); memory->destroy(array); memory->destroy(jatomflag); - delete [] rcutinnerj; - delete [] rcutouterj; - delete [] maxjatom; - delete [] numjatom; + delete[] rcutinnerj; + delete[] rcutouterj; + delete[] maxjatom; + delete[] numjatom; for (int m = 0; m < ntriples; m++) memory->destroy(neighjatom[m]); - delete [] neighjatom; + delete[] neighjatom; memory->destroy(katomflag); - delete [] rcutinnerk; - delete [] rcutouterk; - delete [] maxkatom; - delete [] numkatom; + delete[] rcutinnerk; + delete[] rcutouterk; + delete[] maxkatom; + delete[] numkatom; for (int m = 0; m < ntriples; m++) memory->destroy(neighkatom[m]); - delete [] neighkatom; + delete[] neighkatom; - delete [] maxjkatom; - delete [] numjkatom; + delete[] maxjkatom; + delete[] numjkatom; for (int m = 0; m < ntriples; m++) memory->destroy(neighjkatom[m]); - delete [] neighjkatom; + delete[] neighjkatom; for (int m = 0; m < ntriples; m++) memory->destroy(bothjkatom[m]); - delete [] bothjkatom; + delete[] bothjkatom; for (int m = 0; m < ntriples; m++) memory->destroy(delrjkatom[m]); - delete [] delrjkatom; + delete[] delrjkatom; } /* ---------------------------------------------------------------------- */ @@ -282,8 +271,7 @@ void ComputeADF::init() if (!cutflag) { if (!force->pair) - error->all(FLERR,"Compute adf requires a pair style be defined " - "or an outer cutoff specified"); + error->all(FLERR,"Compute adf requires a pair style be defined or an outer cutoff specified"); rcutinnerj[0] = 0.0; rcutinnerk[0] = 0.0; rcutouterj[0] = force->pair->cutforce; @@ -298,7 +286,7 @@ void ComputeADF::init() // specify mycutneigh if force cutoff too small or non-existent - if (!(force->pair) || maxouter > force->pair->cutforce) { + if (!(force->pair) || (maxouter > force->pair->cutforce)) { double skin = neighbor->skin; mycutneigh = maxouter + skin; if (mycutneigh > comm->cutghostuser) @@ -310,7 +298,7 @@ void ComputeADF::init() int x0; if (ordinate_style == DEGREE) { - deltax = MY_PI / nbin * rad2deg; + deltax = MY_PI / nbin * RAD2DEG; deltaxinv = nbin / MY_PI; x0 = 0.0; @@ -337,7 +325,11 @@ void ComputeADF::init() // than maxouter apart, just like a normal neighbor list does auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); - if (mycutneigh > 0.0) req->set_cutoff(mycutneigh); + if (mycutneigh > 0.0) { + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute adf with custom cutoffs requires neighbor style 'bin' or 'nsq'"); + req->set_cutoff(mycutneigh); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-COMPUTE/compute_adf.h b/src/EXTRA-COMPUTE/compute_adf.h index 5f30995aa29..f1f95d325e4 100644 --- a/src/EXTRA-COMPUTE/compute_adf.h +++ b/src/EXTRA-COMPUTE/compute_adf.h @@ -59,7 +59,6 @@ class ComputeADF : public Compute { int **bothjkatom; // 1 if atom is in both jatom and katom lists double ***delrjkatom; // list of 4-vectors: delx, dely, delx, and 1/r - double rad2deg; // conversion factor from radians to degrees int ordinate_style; // DEGREE, RADIAN, or COSINE int cutflag; // 1 if at least one outer cutoff specified }; diff --git a/src/EXTRA-COMPUTE/compute_ave_sphere_atom.cpp b/src/EXTRA-COMPUTE/compute_ave_sphere_atom.cpp index 89011e71771..b3b920fef31 100644 --- a/src/EXTRA-COMPUTE/compute_ave_sphere_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_ave_sphere_atom.cpp @@ -33,7 +33,7 @@ #include using namespace LAMMPS_NS; -using namespace MathConst; +using MathConst::MY_PI; /* ---------------------------------------------------------------------- */ @@ -108,6 +108,9 @@ void ComputeAveSphereAtom::init() else volume = MY_PI * cutsq; + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute ave/sphere/atom requires neighbor style 'bin' or 'nsq'"); + // need an occasional full neighbor list auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); diff --git a/src/EXTRA-COMPUTE/compute_born_matrix.cpp b/src/EXTRA-COMPUTE/compute_born_matrix.cpp index 4eecbbfa14c..2e674409d15 100644 --- a/src/EXTRA-COMPUTE/compute_born_matrix.cpp +++ b/src/EXTRA-COMPUTE/compute_born_matrix.cpp @@ -42,8 +42,7 @@ using namespace LAMMPS_NS; -#define BIG 1000000000 -#define SMALL 1e-16 +static constexpr double SMALL = 1e-16; // this table is used to pick the 3d rij vector indices used to // compute the 6 indices long Voigt stress vector diff --git a/src/EXTRA-COMPUTE/compute_cnp_atom.cpp b/src/EXTRA-COMPUTE/compute_cnp_atom.cpp index 526874d7a44..f42d896f6bd 100644 --- a/src/EXTRA-COMPUTE/compute_cnp_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_cnp_atom.cpp @@ -41,8 +41,8 @@ using namespace LAMMPS_NS; //define maximum values -#define MAXNEAR 24 -#define MAXCOMMON 12 +static constexpr int MAXNEAR = 24; +static constexpr int MAXCOMMON = 12; enum{NCOMMON}; diff --git a/src/EXTRA-COMPUTE/compute_composition_atom.cpp b/src/EXTRA-COMPUTE/compute_composition_atom.cpp index 48aaa68dea3..d36cb960288 100644 --- a/src/EXTRA-COMPUTE/compute_composition_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_composition_atom.cpp @@ -19,7 +19,6 @@ #include "atom.h" #include "comm.h" -#include "domain.h" #include "error.h" #include "force.h" #include "math_const.h" @@ -103,6 +102,9 @@ void ComputeCompositionAtom::init() cutsq = cutoff * cutoff; + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute composition/atom requires neighbor style 'bin' or 'nsq'"); + // need an occasional full neighbor list auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); diff --git a/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.cpp b/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.cpp index 571f1d562db..466bc0e882f 100644 --- a/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.cpp +++ b/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.cpp @@ -16,7 +16,6 @@ #include "angle.h" #include "atom.h" #include "bond.h" -#include "comm.h" #include "compute_chunk_atom.h" #include "domain.h" #include "error.h" diff --git a/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.h b/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.h index b3354c9ab9d..126f9962aa2 100644 --- a/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.h +++ b/src/EXTRA-COMPUTE/compute_dipole_tip4p_chunk.h @@ -23,7 +23,6 @@ ComputeStyle(dipole/tip4p/chunk,ComputeDipoleTIP4PChunk); #include "compute_chunk.h" namespace LAMMPS_NS { -class Fix; class ComputeDipoleTIP4PChunk : public ComputeChunk { public: diff --git a/src/EXTRA-COMPUTE/compute_efield_wolf_atom.cpp b/src/EXTRA-COMPUTE/compute_efield_wolf_atom.cpp index ba5a16d52bc..ceb16de2ec8 100644 --- a/src/EXTRA-COMPUTE/compute_efield_wolf_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_efield_wolf_atom.cpp @@ -92,7 +92,11 @@ void ComputeEfieldWolfAtom::init() if (atom->mu_flag && (comm->me == 0)) error->warning(FLERR, "Compute efield/wolf/atom does not support per-atom dipoles"); - // need an occasional full neighbor list + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute efield/wolf/atom requires neighbor style 'bin' or 'nsq'"); + + // request an occasional full neighbor list + auto req = neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); if (cutoff_flag) req->set_cutoff(cutoff); diff --git a/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp b/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp index 602923b58a6..5f707d84331 100644 --- a/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp @@ -29,7 +29,6 @@ #include "pair.h" #include "update.h" -#include #include using namespace LAMMPS_NS; @@ -144,7 +143,6 @@ void ComputeRattlersAtom::compute_peratom() numneigh = list->numneigh; firstneigh = list->firstneigh; - Pair *pair = force->pair; double **cutsq = force->pair->cutsq; int change_flag = 1; diff --git a/src/EXTRA-COMPUTE/compute_rattlers_atom.h b/src/EXTRA-COMPUTE/compute_rattlers_atom.h index 257bae83746..79a0a0a982c 100644 --- a/src/EXTRA-COMPUTE/compute_rattlers_atom.h +++ b/src/EXTRA-COMPUTE/compute_rattlers_atom.h @@ -38,8 +38,7 @@ class ComputeRattlersAtom : public Compute { void unpack_reverse_comm(int, int *, double *) override; private: - int pstyle, cutstyle; - int ncontacts_rattler, max_tries, nmax, invoked_peratom; + int cutstyle, ncontacts_rattler, max_tries, nmax, invoked_peratom; int *ncontacts; double *rattler; class NeighList *list; diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp index 509362a73b9..e0b34b8ff1d 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -22,32 +22,28 @@ #include "citeme.h" #include "comm.h" #include "error.h" -#include "force.h" #include "memory.h" #include "modify.h" #include "neigh_list.h" -#include "neighbor.h" -#include "pair.h" #include "potential_file_reader.h" #include "update.h" #include #include -#include using namespace LAMMPS_NS; static const char cite_compute_slcsa_atom_c[] = - "compute slcsa/atom command: doi:10.1088/0965-0393/21/5/055020\n\n" + "compute slcsa/atom command: doi:10.1016/j.commatsci.2023.112534\n\n" "@Article{Lafourcade2023,\n" " author = {P. Lafourcade and J.-B. Maillet and C. Denoual and E. Duval and A. Allera and A. " "M. Goryaeva and M.-C. Marinica},\n" " title = {Robust crystal structure identification at extreme conditions using a " "density-independent spectral descriptor and supervised learning},\n" " journal = {Computational Materials Science},\n" - " year = 2023,\n" - " volume = XX,\n" - " pages = {XXXXXX}\n" + " year = 2023,\n" + " volume = 230,\n" + " pages = 112534\n" "}\n\n"; /* ---------------------------------------------------------------------- */ @@ -79,6 +75,8 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : // # LR bias vector // vector with 1 row x nclasses cols + if (lmp->citeme) lmp->citeme->add(cite_compute_slcsa_atom_c); + if (narg != 11) utils::missing_cmd_args(FLERR, "compute slcsa/atom", error); int twojmax = utils::inumeric(FLERR, arg[3], false, lmp); diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.h b/src/EXTRA-COMPUTE/compute_slcsa_atom.h index 6d7cd90c313..ba373a53a88 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.h +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.h @@ -53,14 +53,12 @@ class ComputeSLCSAAtom : public Compute { value_t descriptorval; int nmax; int ncols; - int nevery; int ncomps; int nclasses; const char *database_mean_descriptor_file; const char *lda_scalings_file; const char *lr_decision_file; const char *lr_bias_file; - const char *covmat_file; const char *maha_file; class NeighList *list; diff --git a/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp b/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp index e1bc6bcd915..622ea839bec 100644 --- a/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_cartesian.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; -#define SMALL 1.0e-10 +static constexpr double SMALL = 1.0e-10; /*----------------------------------------------------------------------------------- Contributing author: Olav Galteland (Norwegian University of Science and Technology) olav.galteland@ntnu.no diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index 6c35b4ba075..ee8f5e554a2 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -39,7 +39,7 @@ using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; enum { X, Y, Z }; enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE, DIHEDRAL }; @@ -773,7 +773,7 @@ void ComputeStressMop::compute_angles() // only left bond crossing the plane - if (!right_cross && left_cross) { + else if (!right_cross && left_cross) { double sgn = copysign(1.0, x_angle_left[dir] - pos); dcos_theta[0] = -sgn * (dx_left[0] * cos_theta / r1 + dx_right[0] / r2) / r1; dcos_theta[1] = -sgn * (dx_left[1] * cos_theta / r1 + dx_right[1] / r2) / r1; @@ -782,7 +782,7 @@ void ComputeStressMop::compute_angles() // both bonds crossing the plane - if (right_cross && left_cross) { + else if (right_cross && left_cross) { // due to right bond @@ -1042,9 +1042,12 @@ void ComputeStressMop::compute_dihedrals() f3[1] = sy2 - f4[1]; f3[2] = sz2 - f4[2]; - // only right bond crossing the plane - if (right_cross && !middle_cross && !left_cross) - { + // no bonds crossing the plane + + if (!right_cross && !middle_cross && !left_cross) continue; + + // onPly right bond crossing the plane + if (right_cross && !middle_cross && !left_cross) { double sgn = copysign(1.0, x_atom_1[dir] - pos); df[0] = sgn * f1[0]; df[1] = sgn * f1[1]; @@ -1052,8 +1055,7 @@ void ComputeStressMop::compute_dihedrals() } // only middle bond crossing the plane - if (!right_cross && middle_cross && !left_cross) - { + else if (!right_cross && middle_cross && !left_cross) { double sgn = copysign(1.0, x_atom_2[dir] - pos); df[0] = sgn * (f2[0] + f1[0]); df[1] = sgn * (f2[1] + f1[1]); @@ -1061,8 +1063,7 @@ void ComputeStressMop::compute_dihedrals() } // only left bond crossing the plane - if (!right_cross && !middle_cross && left_cross) - { + else if (!right_cross && !middle_cross && left_cross) { double sgn = copysign(1.0, x_atom_4[dir] - pos); df[0] = sgn * f4[0]; df[1] = sgn * f4[1]; @@ -1070,8 +1071,7 @@ void ComputeStressMop::compute_dihedrals() } // only right & middle bonds crossing the plane - if (right_cross && middle_cross && !left_cross) - { + else if (right_cross && middle_cross && !left_cross) { double sgn = copysign(1.0, x_atom_2[dir] - pos); df[0] = sgn * f2[0]; df[1] = sgn * f2[1]; @@ -1079,8 +1079,7 @@ void ComputeStressMop::compute_dihedrals() } // only right & left bonds crossing the plane - if (right_cross && !middle_cross && left_cross) - { + else if (right_cross && !middle_cross && left_cross) { double sgn = copysign(1.0, x_atom_1[dir] - pos); df[0] = sgn * (f1[0] + f4[0]); df[1] = sgn * (f1[1] + f4[1]); @@ -1088,8 +1087,7 @@ void ComputeStressMop::compute_dihedrals() } // only middle & left bonds crossing the plane - if (!right_cross && middle_cross && left_cross) - { + else if (!right_cross && middle_cross && left_cross) { double sgn = copysign(1.0, x_atom_3[dir] - pos); df[0] = sgn * f3[0]; df[1] = sgn * f3[1]; @@ -1097,14 +1095,12 @@ void ComputeStressMop::compute_dihedrals() } // all three bonds crossing the plane - if (right_cross && middle_cross && left_cross) - { + else if (right_cross && middle_cross && left_cross) { double sgn = copysign(1.0, x_atom_1[dir] - pos); df[0] = sgn * (f1[0] + f3[0]); df[1] = sgn * (f1[1] + f3[1]); df[2] = sgn * (f1[2] + f3[2]); } - local_contribution[0] += df[0]/area*nktv2p; local_contribution[1] += df[1]/area*nktv2p; local_contribution[2] += df[2]/area*nktv2p; diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 41b5f64a675..676b0f5796c 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -39,7 +39,7 @@ using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; enum { X, Y, Z }; enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE, DIHEDRAL }; diff --git a/src/EXTRA-COMPUTE/compute_stress_spherical.cpp b/src/EXTRA-COMPUTE/compute_stress_spherical.cpp index db20ab67068..983d31559d1 100644 --- a/src/EXTRA-COMPUTE/compute_stress_spherical.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_spherical.cpp @@ -34,7 +34,7 @@ using namespace MathConst; using MathSpecial::cube; using MathSpecial::square; -#define SMALL 1.0e-10 +static constexpr double SMALL = 1.0e-10; /*----------------------------------------------------------------------------------- Contributing author: Olav Galteland (Norwegian University of Science and Technology) diff --git a/src/EXTRA-DUMP/dump_xtc.cpp b/src/EXTRA-DUMP/dump_xtc.cpp index 798bdcb3913..3119a470dce 100644 --- a/src/EXTRA-DUMP/dump_xtc.cpp +++ b/src/EXTRA-DUMP/dump_xtc.cpp @@ -14,7 +14,7 @@ /* ---------------------------------------------------------------------- Contributing authors: Naveen Michaud-Agrawal (Johns Hopkins U) - open-source XDR routines from + Open Source XDR based I/O routines from Frans van Hoesel (https://www.rug.nl/staff/f.h.j.van.hoesel/) are included in this file Axel Kohlmeyer (Temple U) @@ -35,27 +35,29 @@ #include "output.h" #include "update.h" +#include "xdr_compat.h" + #include #include #include using namespace LAMMPS_NS; -#define EPS 1e-5 -#define XTC_MAGIC 1995 +static constexpr double EPS = 1.0e-5; +static constexpr int XTC_MAGIC = 1995; #define MYMIN(a,b) ((a) < (b) ? (a) : (b)) #define MYMAX(a,b) ((a) > (b) ? (a) : (b)) -int xdropen(XDR *, const char *, const char *); -int xdrclose(XDR *); -void xdrfreebuf(); -int xdr3dfcoord(XDR *, float *, int *, float *); +static int xdropen(XDR *, const char *, const char *); +static int xdrclose(XDR *); +static void xdrfreebuf(); +static int xdr3dfcoord(XDR *, float *, int *, float *); /* ---------------------------------------------------------------------- */ -DumpXTC::DumpXTC(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg), - coords(nullptr) +DumpXTC::DumpXTC(LAMMPS *lmp, int narg, char **arg) + : Dump(lmp, narg, arg), coords(nullptr), xd(nullptr) { if (narg != 5) error->all(FLERR,"Illegal dump xtc command"); if (binary || compressed || multifile || multiproc) @@ -68,6 +70,7 @@ DumpXTC::DumpXTC(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg), flush_flag = 0; unwrap_flag = 0; precision = 1000.0; + xd = new XDR; // allocate global array for atom coords @@ -105,9 +108,10 @@ DumpXTC::~DumpXTC() memory->destroy(coords); if (me == 0) { - xdrclose(&xd); + xdrclose(xd); xdrfreebuf(); } + delete xd; } /* ---------------------------------------------------------------------- */ @@ -150,7 +154,8 @@ void DumpXTC::openfile() fp = nullptr; if (me == 0) - if (xdropen(&xd,filename,"w") == 0) error->one(FLERR,"Cannot open dump file"); + if (xdropen(xd,filename,"w") == 0) + error->one(FLERR,"Cannot open XTC format dump file {}: {}", filename, utils::getsyserror()); } /* ---------------------------------------------------------------------- */ @@ -176,11 +181,11 @@ void DumpXTC::write_header(bigint nbig) if (me != 0) return; int tmp = XTC_MAGIC; - xdr_int(&xd,&tmp); - xdr_int(&xd,&n); - xdr_int(&xd,&ntimestep); + xdr_int(xd,&tmp); + xdr_int(xd,&n); + xdr_int(xd,&ntimestep); float time_value = ntimestep * tfactor * update->dt; - xdr_float(&xd,&time_value); + xdr_float(xd,&time_value); // cell basis vectors if (domain->triclinic) { @@ -192,18 +197,18 @@ void DumpXTC::write_header(bigint nbig) float xz = sfactor * domain->xz; float yz = sfactor * domain->yz; - xdr_float(&xd,&xdim); xdr_float(&xd,&zero); xdr_float(&xd,&zero); - xdr_float(&xd,&xy ); xdr_float(&xd,&ydim); xdr_float(&xd,&zero); - xdr_float(&xd,&xz ); xdr_float(&xd,&yz ); xdr_float(&xd,&zdim); + xdr_float(xd,&xdim); xdr_float(xd,&zero); xdr_float(xd,&zero); + xdr_float(xd,&xy ); xdr_float(xd,&ydim); xdr_float(xd,&zero); + xdr_float(xd,&xz ); xdr_float(xd,&yz ); xdr_float(xd,&zdim); } else { float zero = 0.0; float xdim = sfactor * (domain->boxhi[0] - domain->boxlo[0]); float ydim = sfactor * (domain->boxhi[1] - domain->boxlo[1]); float zdim = sfactor * (domain->boxhi[2] - domain->boxlo[2]); - xdr_float(&xd,&xdim); xdr_float(&xd,&zero); xdr_float(&xd,&zero); - xdr_float(&xd,&zero); xdr_float(&xd,&ydim); xdr_float(&xd,&zero); - xdr_float(&xd,&zero); xdr_float(&xd,&zero); xdr_float(&xd,&zdim); + xdr_float(xd,&xdim); xdr_float(xd,&zero); xdr_float(xd,&zero); + xdr_float(xd,&zero); xdr_float(xd,&ydim); xdr_float(xd,&zero); + xdr_float(xd,&zero); xdr_float(xd,&zero); xdr_float(xd,&zdim); } } @@ -328,7 +333,7 @@ double DumpXTC::memory_usage() void DumpXTC::write_frame() { - xdr3dfcoord(&xd,coords,&natoms,&precision); + xdr3dfcoord(xd,coords,&natoms,&precision); } // ---------------------------------------------------------------------- @@ -406,7 +411,7 @@ static int magicints[] = { | | xdropen - open xdr file | - | This versions differs from xdrstdio_create, because I need to know + | This version differs from xdrstdio_create, because I need to know | the state of the file (read or write) so I can use xdr3dfcoord | in eigther read or write mode, and the file descriptor | so I can close the file (something xdr_destroy doesn't do). @@ -1048,7 +1053,7 @@ int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) } if (buf[1] != 0) buf[0]++; xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + return errval * (xdr_opaque(xdrs, (char *)&(buf[3]), (unsigned int)buf[0])); } else { /* xdrs is open for reading */ @@ -1129,7 +1134,7 @@ int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) if (xdr_int(xdrs, &(buf[0])) == 0) return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + if (xdr_opaque(xdrs, (char *)&(buf[3]), (unsigned int)buf[0]) == 0) return 0; buf[0] = buf[1] = buf[2] = 0; diff --git a/src/EXTRA-DUMP/dump_xtc.h b/src/EXTRA-DUMP/dump_xtc.h index 74147be06bc..0a27cc67dd2 100644 --- a/src/EXTRA-DUMP/dump_xtc.h +++ b/src/EXTRA-DUMP/dump_xtc.h @@ -21,8 +21,8 @@ DumpStyle(xtc,DumpXTC); #define LMP_DUMP_XTC_H #include "dump.h" -#include "xdr_compat.h" +struct XDR; namespace LAMMPS_NS { class DumpXTC : public Dump { @@ -37,7 +37,7 @@ class DumpXTC : public Dump { float precision; // user-adjustable precision setting float *coords; double sfactor, tfactor; // scaling factors for positions and time unit - XDR xd; + XDR *xd; void init_style() override; int modify_param(int, char **) override; diff --git a/src/EXTRA-DUMP/xdr_compat.cpp b/src/EXTRA-DUMP/xdr_compat.cpp index e29bbe83344..3caa38663ca 100644 --- a/src/EXTRA-DUMP/xdr_compat.cpp +++ b/src/EXTRA-DUMP/xdr_compat.cpp @@ -1,54 +1,63 @@ -// clang-format off #include "xdr_compat.h" + #include #include -/* This file is needed for systems, that do not provide XDR support - * in their system libraries. It was written for windows, but will - * most probably work on other platforms too. better make sure you - * test that the xtc files produced are ok before using it. +/* + * This file contains an implementation of the Sun External Data Representation (XDR) + * routines. They have been adapted specifically for the use with the LAMMPS xtc dump + * style to produce compressed trajectory files in the Gromacs XTC format. * - * It is also needed on BG/L and Cray XT3/XT4 as we don't have - * XDR support in the lightweight kernel runtimes either. + * The XDR sources are avaiable under the BSD 3-clause license for example in + * the MIT Kerberos 5 distribution with the following copyright notice and license. * - * This file contains the definitions for Sun External Data - * Representation (XDR) headers and routines. + * @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC * - * Although the rest of LAMPPS is GPL, you can copy and use the XDR - * routines in any way you want as long as you obey Sun's license: + * Copyright (c) 2010, Oracle America, Inc. * - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. + * All rights reserved. * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. + * * Neither the name of the "Oracle America, Inc." nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif +#ifndef FALSE +#define FALSE (0) +#endif +#ifndef TRUE +#define TRUE (1) +#endif + +#define BYTES_PER_XDR_UNIT (4) + /* * for unit alignment */ @@ -58,19 +67,18 @@ static xdr_uint32_t xdr_swapbytes(xdr_uint32_t x) { xdr_uint32_t y; int i; - char *px=(char *)&x; - char *py=(char *)&y; + char *px = (char *) &x; + char *py = (char *) &y; - for (i=0;i<4;i++) - py[i]=px[3-i]; + for (i = 0; i < 4; i++) py[i] = px[3 - i]; return y; } static xdr_uint32_t xdr_htonl(xdr_uint32_t x) { - short s=0x0F00; - if (*((char *)&s)==(char)0x0F) { + short s = 0x0F00; + if (*((char *) &s) == (char) 0x0F) { /* bigendian, do nothing */ return x; } else { @@ -81,8 +89,8 @@ static xdr_uint32_t xdr_htonl(xdr_uint32_t x) static xdr_uint32_t xdr_ntohl(xdr_uint32_t x) { - short s=0x0F00; - if (*((char *)&s)==(char)0x0F) { + short s = 0x0F00; + if (*((char *) &s) == (char) 0x0F) { /* bigendian, do nothing */ return x; } else { @@ -91,221 +99,39 @@ static xdr_uint32_t xdr_ntohl(xdr_uint32_t x) } } - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} - /* * XDR integers */ -bool_t -xdr_int (XDR *xdrs, int *ip) +bool_t xdr_int(XDR *xdrs, int *ip) { xdr_int32_t l; - switch (xdrs->x_op) - { + switch (xdrs->x_op) { + case XDR_ENCODE: l = (xdr_int32_t) (*ip); - return xdr_putint32 (xdrs, &l); + return xdr_putint32(xdrs, &l); + break; case XDR_DECODE: - if (!xdr_getint32 (xdrs, &l)) - { - return FALSE; - } + if (!xdr_getint32(xdrs, &l)) return FALSE; *ip = (int) l; - - case XDR_FREE: return TRUE; - } - return FALSE; -} - - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, unsigned int *up) -{ - xdr_uint32_t l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (xdr_uint32_t) (*up); - return xdr_putuint32 (xdrs, &l); - - case XDR_DECODE: - if (!xdr_getuint32 (xdrs, &l)) - { - return FALSE; - } - *up = (unsigned int) l; + break; case XDR_FREE: return TRUE; + break; } return FALSE; } - - - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - xdr_int32_t l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (xdr_int32_t) *sp; - return xdr_putint32 (xdrs, &l); - - case XDR_DECODE: - if (!xdr_getint32 (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} - - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, unsigned short *usp) -{ - xdr_uint32_t l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (xdr_uint32_t) *usp; - return xdr_putuint32 (xdrs, &l); - - case XDR_DECODE: - if (!xdr_getuint32 (xdrs, &l)) - { - return FALSE; - } - *usp = (unsigned short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!xdr_int (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, unsigned char *cp) -{ - unsigned int u; - - u = (*cp); - if (!xdr_u_int (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, int *bp) -{ -#define XDR_FALSE ((xdr_int32_t) 0) -#define XDR_TRUE ((xdr_int32_t) 1) - - xdr_int32_t lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return xdr_putint32 (xdrs, &lb); - - case XDR_DECODE: - if (!xdr_getint32 (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -#undef XDR_FALSE -#undef XDR_TRUE -} - - - /* * XDR opaque data * Allows the specification of a fixed size sequence of opaque bytes. * cp points to the opaque object and cnt gives the byte length. */ -bool_t -xdr_opaque (XDR *xdrs, char *cp, unsigned int cnt) +bool_t xdr_opaque(XDR *xdrs, char *cp, unsigned int cnt) { unsigned int rndup; static char crud[BYTES_PER_XDR_UNIT]; @@ -313,220 +139,62 @@ xdr_opaque (XDR *xdrs, char *cp, unsigned int cnt) /* * if no data we are done */ - if (cnt == 0) - return TRUE; + if (cnt == 0) return TRUE; /* * round byte count to full xdr units */ rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; + if (rndup > 0) rndup = BYTES_PER_XDR_UNIT - rndup; - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!xdr_getbytes (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return xdr_getbytes (xdrs, (char *)crud, rndup); - - case XDR_ENCODE: - if (!xdr_putbytes (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return xdr_putbytes (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a nullptr character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (XDR *xdrs, char **cpp, unsigned int maxsize) -{ - char *sp = *cpp; /* sp is the actual string pointer */ - unsigned int size = 0; - unsigned int nodesize = 0; + switch (xdrs->x_op) { - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == nullptr) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == nullptr) - return FALSE; - size = strlen (sp); - break; case XDR_DECODE: + if (!xdr_getbytes(xdrs, cp, cnt)) { return FALSE; } + if (rndup == 0) return TRUE; + return xdr_getbytes(xdrs, (char *) crud, rndup); break; - } - - if (!xdr_u_int (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == nullptr) - *cpp = sp = (char *) malloc (nodesize); - if (sp == nullptr) - { - (void) fputs ("xdr_string: out of memory\n", stderr); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ case XDR_ENCODE: - return xdr_opaque (xdrs, sp, size); + if (!xdr_putbytes(xdrs, cp, cnt)) { return FALSE; } + if (rndup == 0) return TRUE; + return xdr_putbytes(xdrs, xdr_zero, rndup); + break; case XDR_FREE: - free (sp); - *cpp = nullptr; return TRUE; - } + break; + } return FALSE; } - - /* Floating-point stuff */ -bool_t -xdr_float(XDR *xdrs, float *fp) -{ - xdr_int32_t tmp; - - switch (xdrs->x_op) { - - case XDR_ENCODE: - tmp = *(xdr_int32_t *)fp; - return (xdr_putint32(xdrs, &tmp)); - - break; - - case XDR_DECODE: - if (xdr_getint32(xdrs, &tmp)) { - *(xdr_int32_t *)fp = tmp; - return (TRUE); - } - - break; - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - - -bool_t -xdr_double(XDR *xdrs, double *dp) +bool_t xdr_float(XDR *xdrs, float *fp) { - - /* Windows and some other systems dont define double-precision - * word order in the header files, so unfortunately we have - * to calculate it! - */ - static int LSW=-1; /* Least significant fp word */ - int *ip; - xdr_int32_t tmp[2]; - - if (LSW<0) { - double x=0.987654321; /* Just a number */ - - /* Possible representations in IEEE double precision: - * (S=small endian, B=big endian) - * - * Byte order, Word order, Hex - * S S b8 56 0e 3c dd 9a ef 3f - * B S 3c 0e 56 b8 3f ef 9a dd - * S B dd 9a ef 3f b8 56 0e 3c - * B B 3f ef 9a dd 3c 0e 56 b8 - */ - - unsigned char ix = *((char *)&x); - - if (ix==0xdd || ix==0x3f) - LSW=1; /* Big endian word order */ - else if (ix==0xb8 || ix==0x3c) - LSW=0; /* Small endian word order */ - else { /* Catch strange errors */ - printf("Error when detecting floating-point word order.\n" - "Do you have a non-IEEE system?\n" - "If possible, use the XDR libraries provided with your system,\n" - "instead of the Gromacs fallback XDR source.\n"); - exit(0); - } - } + xdr_int32_t tmp; switch (xdrs->x_op) { - case XDR_ENCODE: - ip = (int *)dp; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (xdr_putint32(xdrs, tmp) && - xdr_putint32(xdrs, tmp+1)); - - break; - - case XDR_DECODE: - ip = (int *)dp; - if (xdr_getint32(xdrs, tmp+!LSW) && - xdr_getint32(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } + case XDR_ENCODE: + tmp = *(xdr_int32_t *) fp; + return (xdr_putint32(xdrs, &tmp)); + break; - break; + case XDR_DECODE: + if (xdr_getint32(xdrs, &tmp)) { + *(xdr_int32_t *) fp = tmp; + return TRUE; + } + break; - case XDR_FREE: - return (TRUE); + case XDR_FREE: + return TRUE; + break; } - return (FALSE); + return FALSE; } - /* Array routines */ /* @@ -539,55 +207,37 @@ xdr_double(XDR *xdrs, double *dp) * > elemsize: size of each element * > xdr_elem: routine to XDR each element */ -bool_t -xdr_vector (XDR *xdrs, char *basep, unsigned int nelem, - unsigned int elemsize, xdrproc_t xdr_elem) +bool_t xdr_vector(XDR *xdrs, char *basep, unsigned int nelem, unsigned int elemsize, + xdrproc_t xdr_elem) { -#define LASTUNSIGNED ((unsigned int)0-1) +#define LASTUNSIGNED ((unsigned int) 0 - 1) unsigned int i; char *elptr; elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } + for (i = 0; i < nelem; i++) { + if (!(*xdr_elem)(xdrs, elptr, LASTUNSIGNED)) { return FALSE; } + elptr += elemsize; + } return TRUE; #undef LASTUNSIGNED } - - -static bool_t xdrstdio_getbytes (XDR *, char *, unsigned int); -static bool_t xdrstdio_putbytes (XDR *, char *, unsigned int); -static unsigned int xdrstdio_getpos (XDR *); -static bool_t xdrstdio_setpos (XDR *, unsigned int); -static xdr_int32_t *xdrstdio_inline (XDR *, int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, xdr_int32_t *); -static bool_t xdrstdio_putint32 (XDR *, xdr_int32_t *); -static bool_t xdrstdio_getuint32 (XDR *, xdr_uint32_t *); -static bool_t xdrstdio_putuint32 (XDR *, xdr_uint32_t *); +static bool_t xdrstdio_getbytes(XDR *, char *, unsigned int); +static bool_t xdrstdio_putbytes(XDR *, char *, unsigned int); +static void xdrstdio_destroy(XDR *); +static bool_t xdrstdio_getint32(XDR *, xdr_int32_t *); +static bool_t xdrstdio_putint32(XDR *, xdr_int32_t *); /* * Ops vector for stdio type XDR */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32, /* serialize a int */ - xdrstdio_getuint32, /* deserialize a int */ - xdrstdio_putuint32 /* serialize a int */ +static const struct xdr_ops xdrstdio_ops = { + xdrstdio_getbytes, /* deserialize counted bytes */ + xdrstdio_putbytes, /* serialize counted bytes */ + xdrstdio_destroy, /* destroy stream */ + xdrstdio_getint32, /* deserialize a int */ + xdrstdio_putint32, /* serialize a int */ }; /* @@ -595,8 +245,7 @@ static const struct xdr_ops xdrstdio_ops = * Sets the xdr stream handle xdrs for use on the stream file. * Operation flag is set to op. */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) +void xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op) { xdrs->x_op = op; /* We have to add the const since the `struct xdr_ops' in `struct XDR' @@ -611,104 +260,42 @@ xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) * Destroy a stdio xdr stream. * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. */ -static void -xdrstdio_destroy (XDR *xdrs) +static void xdrstdio_destroy(XDR *xdrs) { - (void) fflush ((FILE *) xdrs->x_private); + (void) fflush((FILE *) xdrs->x_private); /* xx should we close the file ?? */ } - -static bool_t -xdrstdio_getbytes (XDR *xdrs, char *addr, unsigned int len) +static bool_t xdrstdio_getbytes(XDR *xdrs, char *addr, unsigned int len) { - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; + if ((len != 0) && (fread(addr, (int) len, 1, (FILE *) xdrs->x_private) != 1)) return FALSE; return TRUE; } -static bool_t -xdrstdio_putbytes (XDR *xdrs, char *addr, unsigned int len) +static bool_t xdrstdio_putbytes(XDR *xdrs, char *addr, unsigned int len) { - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; + if ((len != 0) && (fwrite(addr, (int) len, 1, (FILE *) xdrs->x_private) != 1)) return FALSE; return TRUE; } -static unsigned int -xdrstdio_getpos (XDR *xdrs) -{ - return (unsigned int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, unsigned int pos) -{ - return fseek ((FILE *) xdrs->x_private, (xdr_int32_t) pos, 0) < 0 ? FALSE : TRUE; -} - -static xdr_int32_t * -xdrstdio_inline (XDR * /*xdrs*/, int /*len*/) -{ - /* - * Must do some work to implement this: must ensure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return nullptr; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, xdr_int32_t *ip) +static bool_t xdrstdio_getint32(XDR *xdrs, xdr_int32_t *ip) { xdr_int32_t mycopy; - if (fread ((char *) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = xdr_ntohl (mycopy); + if (fread((char *) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) return FALSE; + *ip = xdr_ntohl(mycopy); return TRUE; } -static bool_t -xdrstdio_putint32 (XDR *xdrs, xdr_int32_t *ip) +static bool_t xdrstdio_putint32(XDR *xdrs, xdr_int32_t *ip) { - xdr_int32_t mycopy = xdr_htonl (*ip); + xdr_int32_t mycopy = xdr_htonl(*ip); ip = &mycopy; - if (fwrite ((char *) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; + if (fwrite((char *) ip, 4, 1, (FILE *) xdrs->x_private) != 1) return FALSE; return TRUE; } -static bool_t -xdrstdio_getuint32 (XDR *xdrs, xdr_uint32_t *ip) -{ - xdr_uint32_t mycopy; - - if (fread ((char *) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = xdr_ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putuint32 (XDR *xdrs, xdr_uint32_t *ip) -{ - xdr_uint32_t mycopy = xdr_htonl (*ip); - - ip = &mycopy; - if (fwrite ((char *) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - #ifdef __cplusplus } #endif - diff --git a/src/EXTRA-DUMP/xdr_compat.h b/src/EXTRA-DUMP/xdr_compat.h index 55dc22e9f96..d600a4a4045 100644 --- a/src/EXTRA-DUMP/xdr_compat.h +++ b/src/EXTRA-DUMP/xdr_compat.h @@ -1,7 +1,7 @@ #ifndef LMP_XDR_COMPAT_H #define LMP_XDR_COMPAT_H -#include +#include #include #ifdef __cplusplus @@ -9,47 +9,53 @@ extern "C" { #endif /* - * This file is needed for systems, that do not provide XDR support - * in their system libraries. It was written for windows, but will - * most probably work on other platforms too. better make sure you - * test that the xtc files produced are ok before using it. + * This file contains the definitions for Sun External Data Representation (XDR). + * They have been adapted specifically for the use with the LAMMPS xtc dump style + * to produce compressed trajectory files in the Gromacs XTC format. * - * It is also needed on BG/L, BG/P and Cray XT3/XT4/XT5 as we don't - * have XDR support in the lightweight kernel runtimes either. + * The XDR sources are avaiable under the BSD 3-clause license for example in + * the MIT Kerberos 5 distribution with the following copyright notice and license. * - * This file contains the definitions for Sun External Data - * Representation (XDR) headers and routines. + * @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC * - * Although the rest of LAMPPS is GPL, you can copy and use the XDR - * routines in any way you want as long as you obey Sun's license: - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. + * Copyright (c) 2010, Oracle America, Inc. * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * All rights reserved. * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 + * * Neither the name of the "Oracle America, Inc." nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* compatibility typedefs */ +typedef int bool_t; + +typedef int32_t xdr_int32_t; +typedef uint32_t xdr_uint32_t; + /* * Xdr operations. XDR_ENCODE causes the type to be encoded into the * stream. XDR_DECODE causes the type to be extracted from the stream. @@ -57,44 +63,8 @@ extern "C" { * XDR_DECODE request. */ -typedef int bool_t; - -#if defined(_WIN32) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ - defined(__OpenBSD__) || defined(__NetBSD__) || (defined(__linux__) && !defined(__GLIBC_MINOR__)) -typedef char *caddr_t; -typedef unsigned int u_int; -#endif - -/* - * Aninteger type that is 32 bits wide. Check if int, - * long or short is 32 bits and die if none of them is :-) - */ -#if (INT_MAX == 2147483647) -typedef int xdr_int32_t; -typedef unsigned int xdr_uint32_t; -#elif (LONG_MAX == 2147483647L) -typedef long xdr_int32_t; -typedef unsigned long xdr_uint32_t; -#elif (SHRT_MAX == 2147483647) -typedef short xdr_int32_t; -typedef unsigned short xdr_uint32_t; -#else -#error ERROR: No 32 bit wide integer type found! -#endif - enum xdr_op { XDR_ENCODE = 0, XDR_DECODE = 1, XDR_FREE = 2 }; -#ifndef FALSE -#define FALSE (0) -#endif -#ifndef TRUE -#define TRUE (1) -#endif - -#define BYTES_PER_XDR_UNIT (4) -/* Macro to round up to units of 4. */ -#define XDR_RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) - /* * The XDR handle. * Contains operation which is being applied to the stream, @@ -113,26 +83,16 @@ struct XDR { }; struct xdr_ops { + /* get some bytes from XDR stream */ bool_t (*x_getbytes)(XDR *__xdrs, char *__addr, unsigned int __len); - /* get some bytes from " */ + /* put some bytes to XDR stream */ bool_t (*x_putbytes)(XDR *__xdrs, char *__addr, unsigned int __len); - /* put some bytes to " */ - unsigned int (*x_getpostn)(XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn)(XDR *__xdrs, unsigned int __pos); - /* lets you reposition the stream */ - xdr_int32_t *(*x_inline)(XDR *__xdrs, int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy)(XDR *__xdrs); /* free privates of this xdr_stream */ + void (*x_destroy)(XDR *__xdrs); + /* get a int from XDR stream */ bool_t (*x_getint32)(XDR *__xdrs, xdr_int32_t *__ip); - /* get a int from underlying stream */ + /* put a int to XDR stream */ bool_t (*x_putint32)(XDR *__xdrs, xdr_int32_t *__ip); - /* put a int to " */ - bool_t (*x_getuint32)(XDR *__xdrs, xdr_uint32_t *__ip); - /* get a unsigned int from underlying stream */ - bool_t (*x_putuint32)(XDR *__xdrs, xdr_uint32_t *__ip); - /* put a int to " */ }; /* @@ -151,53 +111,25 @@ typedef bool_t (*xdrproc_t)(XDR *, void *, ...); * * XDR *xdrs; * xdr_int32_t *int32p; - * long *longp; - * char *addr; * unsigned int len; - * unsigned int pos; */ #define xdr_getint32(xdrs, int32p) (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - #define xdr_putint32(xdrs, int32p) (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define xdr_getuint32(xdrs, uint32p) (*(xdrs)->x_ops->x_getuint32)(xdrs, uint32p) - -#define xdr_putuint32(xdrs, uint32p) (*(xdrs)->x_ops->x_putuint32)(xdrs, uint32p) - #define xdr_getbytes(xdrs, addr, len) (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - #define xdr_putbytes(xdrs, addr, len) (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define xdr_getpos(xdrs) (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define xdr_setpos(xdrs, pos) (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define xdr_inline(xdrs, len) (*(xdrs)->x_ops->x_inline)(xdrs, len) - #define xdr_destroy(xdrs) \ do { \ if ((xdrs)->x_ops->x_destroy) (*(xdrs)->x_ops->x_destroy)(xdrs); \ } while (0) extern bool_t xdr_int(XDR *__xdrs, int *__ip); -extern bool_t xdr_u_int(XDR *__xdrs, unsigned int *__ip); -extern bool_t xdr_short(XDR *__xdrs, short *__ip); -extern bool_t xdr_u_short(XDR *__xdrs, unsigned short *__ip); -extern bool_t xdr_bool(XDR *__xdrs, int *__bp); extern bool_t xdr_opaque(XDR *__xdrs, char *__cp, unsigned int __cnt); -extern bool_t xdr_string(XDR *__xdrs, char **__cpp, unsigned int __maxsize); -extern bool_t xdr_char(XDR *__xdrs, char *__cp); -extern bool_t xdr_u_char(XDR *__xdrs, unsigned char *__cp); extern bool_t xdr_vector(XDR *__xdrs, char *__basep, unsigned int __nelem, unsigned int __elemsize, xdrproc_t __xdr_elem); extern bool_t xdr_float(XDR *__xdrs, float *__fp); -extern bool_t xdr_double(XDR *__xdrs, double *__dp); extern void xdrstdio_create(XDR *__xdrs, FILE *__file, enum xdr_op __xop); -/* free memory buffers for xdr */ -extern void xdr_free(xdrproc_t __proc, char *__objp); - #ifdef __cplusplus } #endif diff --git a/src/EXTRA-FIX/fix_ave_correlate_long.cpp b/src/EXTRA-FIX/fix_ave_correlate_long.cpp index fc1760b353c..7c80365c57b 100644 --- a/src/EXTRA-FIX/fix_ave_correlate_long.cpp +++ b/src/EXTRA-FIX/fix_ave_correlate_long.cpp @@ -454,6 +454,8 @@ void FixAveCorrelateLong::end_of_step() scalar = val.val.f->compute_vector(val.argindex-1); // evaluate equal-style or vector-style variable + // if index exceeds vector length, use a zero value + // this can be useful if vector length is not known a priori } else if (val.which == ArgInfo::VARIABLE) { if (val.argindex == 0) @@ -462,7 +464,7 @@ void FixAveCorrelateLong::end_of_step() double *varvec; int nvec = input->variable->compute_vector(val.val.v,&varvec); int index = val.argindex; - if (nvec < index) scalar = 0.0; + if (index > nvec) scalar = 0.0; else scalar = varvec[index-1]; } } diff --git a/src/EXTRA-FIX/fix_deform_pressure.cpp b/src/EXTRA-FIX/fix_deform_pressure.cpp new file mode 100644 index 00000000000..51ea75cfed6 --- /dev/null +++ b/src/EXTRA-FIX/fix_deform_pressure.cpp @@ -0,0 +1,938 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + +#include "fix_deform_pressure.h" + +#include "comm.h" +#include "compute.h" +#include "domain.h" +#include "error.h" +#include "group.h" +#include "input.h" +#include "irregular.h" +#include "math_const.h" +#include "modify.h" +#include "update.h" +#include "variable.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +enum { NOCOUPLE = 0, XYZ, XY, YZ, XZ }; + +/* ---------------------------------------------------------------------- */ + +FixDeformPressure::FixDeformPressure(LAMMPS *lmp, int narg, char **arg) : + FixDeform(lmp, narg, arg), id_temp(nullptr), id_press(nullptr), temperature(nullptr), + pressure(nullptr) +{ + // set defaults + + set_extra = new SetExtra[7]; + memset(set_extra, 0, 7 * sizeof(SetExtra)); + memset(&set_box, 0, sizeof(Set)); + + // parse only parameter/style arguments specific to this child class + + int index, iarg; + std::size_t i = 0; + while (i < leftover_iarg.size()) { + iarg = leftover_iarg[i]; + if (strcmp(arg[iarg], "x") == 0 || + strcmp(arg[iarg], "y") == 0 || + strcmp(arg[iarg], "z") == 0) { + + if (strcmp(arg[iarg], "x") == 0) index = 0; + else if (strcmp(arg[iarg], "y") == 0) index = 1; + else if (strcmp(arg[iarg], "z") == 0) index = 2; + + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure", error); + if (strcmp(arg[iarg + 1], "pressure") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure pressure", error); + set[index].style = PRESSURE; + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) { + set_extra[index].ptarget = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + } else { + set_extra[index].pstr = utils::strdup(&arg[iarg + 2][2]); + set_extra[index].pvar_flag = 1; + } + set_extra[index].pgain = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + i += 4; + } else if (strcmp(arg[iarg + 1], "pressure/mean") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure pressure/mean", error); + set[index].style = PMEAN; + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) { + set_extra[index].ptarget = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + } else { + set_extra[index].pstr = utils::strdup(&arg[iarg + 2][2]); + set_extra[index].pvar_flag = 1; + } + set_extra[index].pgain = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + i += 4; + } else error->all(FLERR, "Illegal fix deform/pressure command argument: {}", arg[iarg + 1]); + + } else if (strcmp(arg[iarg], "xy") == 0 || + strcmp(arg[iarg], "xz") == 0 || + strcmp(arg[iarg], "yz") == 0) { + + if (strcmp(arg[iarg], "xy") == 0) index = 5; + else if (strcmp(arg[iarg], "xz") == 0) index = 4; + else if (strcmp(arg[iarg], "yz") == 0) index = 3; + + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure", error); + if (strcmp(arg[iarg + 1], "pressure") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure pressure", error); + set[index].style = PRESSURE; + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) { + set_extra[index].ptarget = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + } else { + set_extra[index].pstr = utils::strdup(&arg[iarg + 2][2]); + set_extra[index].pvar_flag = 1; + } + set_extra[index].pgain = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + i += 4; + } else error->all(FLERR, "Illegal fix deform/pressure command: {}", arg[iarg + 1]); + + } else if (strcmp(arg[iarg], "box") == 0) { + if (strcmp(arg[iarg + 1], "volume") == 0) { + set_box.style = VOLUME; + i += 2; + } else if (strcmp(arg[iarg + 1], "pressure") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure pressure", error); + set_box.style = PRESSURE; + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) { + set_extra[6].ptarget = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + } else { + set_extra[6].pstr = utils::strdup(&arg[iarg + 2][2]); + set_extra[6].pvar_flag = 1; + } + set_extra[6].pgain = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + i += 4; + } else error->all(FLERR, "Illegal fix deform/pressure command argument: {}", arg[iarg + 1]); + } else break; + } + + // read options from end of input line + // shift arguments before reading + + iarg = iarg_options_start; + options(i, narg - iarg, &arg[iarg]); + + // repeat: setup dimflags used by other classes to check for volume-change conflicts + + for (int i = 0; i < 6; i++) + if (set[i].style == NONE) dimflag[i] = 0; + else dimflag[i] = 1; + + if (set_box.style != NONE) { + dimflag[0] = 1; + dimflag[1] = 1; + dimflag[2] = 1; + } + + if (dimflag[0]) box_change |= BOX_CHANGE_X; + if (dimflag[1]) box_change |= BOX_CHANGE_Y; + if (dimflag[2]) box_change |= BOX_CHANGE_Z; + if (dimflag[3]) box_change |= BOX_CHANGE_YZ; + if (dimflag[4]) box_change |= BOX_CHANGE_XZ; + if (dimflag[5]) box_change |= BOX_CHANGE_XY; + + // repeat: no tensile deformation on shrink-wrapped dims + // b/c shrink wrap will change box-length + + for (int i = 0; i < 3; i++) + if (set_box.style && (domain->boundary[i][0] >= 2 || domain->boundary[i][1] >= 2)) + error->all(FLERR, "Cannot use fix deform/pressure on a shrink-wrapped boundary"); + + // repeat: no tilt deformation on shrink-wrapped 2nd dim + // b/c shrink wrap will change tilt factor in domain::reset_box() + + if (set[3].style && (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) + error->all(FLERR, "Cannot use fix deform/pressure tilt on a shrink-wrapped 2nd dim"); + if (set[4].style && (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) + error->all(FLERR, "Cannot use fix deform/pressure tilt on a shrink-wrapped 2nd dim"); + if (set[5].style && (domain->boundary[1][0] >= 2 || domain->boundary[1][1] >= 2)) + error->all(FLERR, "Cannot use fix deform/pressure tilt on a shrink-wrapped 2nd dim"); + + // for VOLUME, setup links to other dims + // fixed, dynamic1, dynamic2 + + for (int i = 0; i < 3; i++) { + if (set[i].style != VOLUME) continue; + int other1 = (i + 1) % 3; + int other2 = (i + 2) % 3; + + // Cannot use VOLUME option without at least one deformed dimension + if (set[other1].style == NONE || set[other1].style == VOLUME) + if (set[other2].style == NONE || set[other2].style == VOLUME) + error->all(FLERR, "Fix {} volume setting is invalid", style); + + if (set[other1].style == NONE) { + set[i].substyle = ONE_FROM_ONE; + set[i].fixed = other1; + set[i].dynamic1 = other2; + } else if (set[other2].style == NONE) { + set[i].substyle = ONE_FROM_ONE; + set[i].fixed = other2; + set[i].dynamic1 = other1; + } else if (set[other1].style == VOLUME) { + set[i].substyle = TWO_FROM_ONE; + set[i].fixed = other1; + set[i].dynamic1 = other2; + } else if (set[other2].style == VOLUME) { + set[i].substyle = TWO_FROM_ONE; + set[i].fixed = other2; + set[i].dynamic1 = other1; + } else { + set[i].substyle = ONE_FROM_TWO; + set[i].dynamic1 = other1; + set[i].dynamic2 = other2; + } + } + + // repeat: set varflag + + for (int i = 0; i < 7; i++) + if (set_extra[i].pvar_flag) varflag = 1; + + // repeat: reneighboring only forced if flips can occur due to shape changes + + if ((!force_reneighbor) && flipflag && (set[3].style || set[4].style || set[5].style)) { + force_reneighbor = 1; + irregular = new Irregular(lmp); + } + + // set initial values at time fix deform/pressure is issued + + set_box.vol_initial = domain->xprd * domain->yprd * domain->zprd; + + // populate coupled pressure controls + + if (pcouple != NOCOUPLE) { + + if (domain->dimension == 2) + if (pcouple == XYZ || pcouple == XZ || pcouple == YZ) + error->all(FLERR, "Cannot couple Z dimension in fix deform/pressure in 2D"); + + int coupled_indices[3] = {0}; + int j = -1; + + if (pcouple == XYZ || pcouple == XY || pcouple == XZ) + coupled_indices[0] = 1; + if (pcouple == XYZ || pcouple == XY || pcouple == YZ) + coupled_indices[1] = 1; + if (pcouple == XYZ || pcouple == XZ || pcouple == YZ) + coupled_indices[2] = 1; + + // Check coupled styles and find reference + for (int i = 0; i < 3; i++) { + if (coupled_indices[i]) { + set_extra[i].coupled_flag = 1; + if (set[i].style != PRESSURE && set[i].style != NONE) + error->all(FLERR, "Cannot couple non-pressure-controlled dimensions"); + if (set[i].style == PRESSURE) + j = i; + } + } + + if (j == -1) + error->all(FLERR, "Must specify deformation style for at least one coupled dimension"); + + // Copy or compare data for each coupled dimension + + for (int i = 0; i < 3; i++) { + if (coupled_indices[i]) { + // Copy coupling information if dimension style is undefined + if (set[i].style == NONE) { + set[i].style = PRESSURE; + dimflag[i] = 1; + set_extra[i].pgain = set_extra[j].pgain; + if (set_extra[j].pvar_flag) { + set_extra[i].pstr = set_extra[j].pstr; + set_extra[i].pvar_flag = 1; + } else { + set_extra[i].ptarget = set_extra[j].ptarget; + } + } else { + // Check for incompatibilities in style + if (set[j].style != set[i].style && set[i].style != NONE) + error->all(FLERR, "Cannot couple dimensions with different control options"); + if (set[j].style != PRESSURE) continue; + + // If pressure controlled, check for incompatibilities in parameters + if (set_extra[i].pgain != set_extra[j].pgain || set_extra[i].pvar_flag != set_extra[j].pvar_flag || + set_extra[i].ptarget != set_extra[j].ptarget) + error->all(FLERR, "Coupled dimensions must have identical gain parameters"); + + if (set_extra[j].pvar_flag) + if (strcmp(set_extra[i].pstr, set_extra[j].pstr) != 0) + error->all(FLERR, "Coupled dimensions must have the same target pressure"); + } + } + } + } + + // if vol/balance/p used, must have 2 free dimensions + + if (vol_balance_flag) { + for (int i = 0; i < 3; i++) { + if (set[i].style != VOLUME) continue; + if (set[i].substyle != TWO_FROM_ONE) + error->all(FLERR, "Two dimensions must maintain constant volume to use the vol/balance/p option"); + } + } + + // set strain_flag + + strain_flag = 0; + for (int i = 0; i < 6; i++) + if (set[i].style != NONE && set[i].style != VOLUME && + set[i].style != PRESSURE && set[i].style != PMEAN) + strain_flag = 1; + + // set pressure_flag + + pressure_flag = 0; + for (int i = 0; i < 6; i++) { + if (set[i].style == PRESSURE || set[i].style == PMEAN) { + pressure_flag = 1; + if (set_extra[i].pgain <= 0.0) + error->all(FLERR, "Illegal fix deform/pressure gain constant, must be positive"); + } + if (set_extra[i].coupled_flag) pressure_flag = 1; + } + if (set_box.style == PRESSURE) pressure_flag = 1; + if (vol_balance_flag) pressure_flag = 1; + + // check conflict between constant volume/pressure + + volume_flag = 0; + for (int i = 0; i < 3; i++) + if (set[i].style == VOLUME) + volume_flag = 1; + + if (volume_flag) + for (int i = 0; i < 6; i++) + if (set[i].style == PMEAN) + error->all(FLERR, "Cannot use fix deform/pressure to assign constant volume and pressure"); + + // check conflicts between x,y,z styles and box + + if (set_box.style) + for (int i = 0; i < 3; i++) + if (set[i].style == FINAL || set[i].style == DELTA || set[i].style == SCALE || set[i].style == PMEAN || set[i].style == VARIABLE) + error->all(FLERR, "Cannot use fix deform/pressure box parameter with x, y, or z styles other than vel, erate, trate, pressure, and wiggle"); + + // check pressure used for max rate and normalize error flag + + if (!pressure_flag && max_h_rate != 0) + error->all(FLERR, "Can only assign a maximum strain rate using pressure-controlled dimensions"); + + if (!pressure_flag && normalize_pressure_flag) + error->all(FLERR, "Can only normalize error using pressure-controlled dimensions"); + + // Create pressure compute, if needed + + pflag = 0; + tflag = 0; + if (pressure_flag) { + // create a new compute temp style + // id = fix-ID + temp + // compute group = all since pressure is always global (group all) + // and thus its KE/temperature contribution should use group all + + id_temp = utils::strdup(std::string(id) + "_temp"); + temperature = modify->add_compute(fmt::format("{} all temp", id_temp)); + tflag = 1; + + // create a new compute pressure style + // id = fix-ID + press, compute group = all + // pass id_temp as 4th arg to pressure constructor + + id_press = utils::strdup(std::string(id) + "_press"); + pressure = modify->add_compute(fmt::format("{} all pressure {}", id_press, id_temp)); + pflag = 1; + } +} + +/* ---------------------------------------------------------------------- */ + +FixDeformPressure::~FixDeformPressure() +{ + if (set_extra) + for (int i = 0; i < 7; i++) + delete[] set_extra[i].pstr; + delete[] set_extra; + + delete[] set_box.hstr; + delete[] set_box.hratestr; + + // delete temperature and pressure if fix created them + + if (tflag) modify->delete_compute(id_temp); + if (pflag) modify->delete_compute(id_press); + delete [] id_temp; + delete [] id_press; +} + +/* ---------------------------------------------------------------------- */ + +void FixDeformPressure::init() +{ + FixDeform::init(); + + set_box.vol_start = domain->xprd * domain->yprd * domain->zprd; + + // check optional variables for PRESSURE or PMEAN style + + for (int i = 0; i < 7; i++) { + if (!set_extra[i].pvar_flag) continue; + set_extra[i].pvar = input->variable->find(set_extra[i].pstr); + if (set_extra[i].pvar < 0) + error->all(FLERR, "Variable name {} for fix deform/pressure does not exist", set_extra[i].pstr); + if (!input->variable->equalstyle(set_extra[i].pvar)) + error->all(FLERR, "Variable {} for fix deform/pressure is invalid style", set_extra[i].pstr); + } + + // Find pressure/temp computes if needed + + if (pressure_flag) { + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR, "Temperature ID {} for fix deform/pressure does not exist", id_temp); + + pressure = modify->get_compute_by_id(id_press); + if (!pressure) + error->all(FLERR, "Pressure ID {} for fix deform/pressure does not exist", id_press); + } +} + +/* ---------------------------------------------------------------------- + compute T,P if needed before integrator starts +------------------------------------------------------------------------- */ + +void FixDeformPressure::setup(int /*vflag*/) +{ + // trigger virial computation on next timestep + if (pressure_flag) pressure->addstep(update->ntimestep+1); +} + +/* ---------------------------------------------------------------------- */ + +void FixDeformPressure::end_of_step() +{ + // wrap variable evaluations with clear/add + + if (varflag) modify->clearstep_compute(); + + // set new box size for strain-based dims + + if (strain_flag) FixDeform::apply_strain(); + + // set new box size for pressure-based dims + + if (pressure_flag) { + temperature->compute_vector(); + pressure->compute_vector(); + pressure->compute_scalar(); + for (int i = 0; i < 3; i++) { + if (!set_extra[i].saved) { + set_extra[i].saved = 1; + set_extra[i].prior_rate = 0.0; + set_extra[i].prior_pressure = pressure->vector[i]; + } + } + apply_pressure(); + } + + // set new box size for VOLUME dims that are linked to other dims + // NOTE: still need to set h_rate for these dims + + if (volume_flag) apply_volume(); + + // apply any final box scalings + + if (set_box.style) apply_box(); + + // Save pressure/strain rate if required + + if (pressure_flag) { + for (int i = 0; i < 3; i++) { + set_extra[i].prior_pressure = pressure->vector[i]; + set_extra[i].prior_rate = ((set[i].hi_target - set[i].lo_target) / + (domain->boxhi[i] - domain->boxlo[i]) - 1.0) / update->dt; + } + } + + if (varflag) modify->addstep_compute(update->ntimestep + nevery); + + + FixDeform::update_domain(); + + // trigger virial computation, if needed, on next timestep + + if (pressure_flag) + pressure->addstep(update->ntimestep+1); +} + +/* ---------------------------------------------------------------------- + apply pressure controls +------------------------------------------------------------------------- */ + +void FixDeformPressure::apply_pressure() +{ + // If variable pressure, calculate current target + for (int i = 0; i < 6; i++) + if (set[i].style == PRESSURE) + if (set_extra[i].pvar_flag) + set_extra[i].ptarget = input->variable->compute_equal(set_extra[i].pvar); + + // Find current (possibly coupled/hydrostatic) pressure for X, Y, Z + double *tensor = pressure->vector; + double scalar = pressure->scalar; + double p_current[3] = {0.0, 0.0, 0.0}; + + if (pcouple == XYZ) { + double ave = THIRD * (tensor[0] + tensor[1] + tensor[2]); + p_current[0] = p_current[1] = p_current[2] = ave; + } else if (pcouple == XY) { + double ave = 0.5 * (tensor[0] + tensor[1]); + p_current[0] = p_current[1] = ave; + p_current[2] = tensor[2]; + } else if (pcouple == YZ) { + double ave = 0.5 * (tensor[1] + tensor[2]); + p_current[1] = p_current[2] = ave; + p_current[0] = tensor[0]; + } else if (pcouple == XZ) { + double ave = 0.5 * (tensor[0] + tensor[2]); + p_current[0] = p_current[2] = ave; + p_current[1] = tensor[1]; + } else { + if (set[0].style == PRESSURE) p_current[0] = tensor[0]; + else if (set[0].style == PMEAN) p_current[0] = scalar; + + if (set[1].style == PRESSURE) p_current[1] = tensor[1]; + else if (set[1].style == PMEAN) p_current[1] = scalar; + + if (set[2].style == PRESSURE) p_current[2] = tensor[2]; + else if (set[2].style == PMEAN) p_current[2] = scalar; + } + + for (int i = 0; i < 3; i++) { + if (set[i].style != PRESSURE && set[i].style != PMEAN) continue; + + h_rate[i] = set_extra[i].pgain * (p_current[i] - set_extra[i].ptarget); + + if (normalize_pressure_flag) { + if (set_extra[i].ptarget == 0) { + if (max_h_rate == 0) { + error->all(FLERR, "Cannot normalize error for zero pressure without defining a max rate"); + } else h_rate[i] = max_h_rate * h_rate[i] / fabs(h_rate[i]); + } else h_rate[i] /= fabs(set_extra[i].ptarget); + } + + if (max_h_rate != 0) + if (fabs(h_rate[i]) > max_h_rate) + h_rate[i] = max_h_rate * h_rate[i] / fabs(h_rate[i]); + + h_ratelo[i] = -0.5 * h_rate[i]; + + double offset = 0.5 * (domain->boxhi[i] - domain->boxlo[i]) * (1.0 + update->dt * h_rate[i]); + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - offset; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + offset; + } + + for (int i = 3; i < 6; i++) { + if (set[i].style != PRESSURE) continue; + + double L, tilt, pcurrent; + if (i == 3) { + L = domain->zprd; + tilt = domain->yz; + pcurrent = tensor[5]; + } else if (i == 4) { + L = domain->zprd; + tilt = domain->xz + update->dt; + pcurrent = tensor[4]; + } else { + L = domain->yprd; + tilt = domain->xy; + pcurrent = tensor[3]; + } + + h_rate[i] = L * set_extra[i].pgain * (pcurrent - set_extra[i].ptarget); + if (normalize_pressure_flag) { + if (set_extra[i].ptarget == 0) { + if (max_h_rate == 0) { + error->all(FLERR, "Cannot normalize error for zero pressure without defining a max rate"); + } else h_rate[i] = max_h_rate * h_rate[i] / fabs(h_rate[i]); + } else h_rate[i] /= fabs(set_extra[i].ptarget); + } + + if (max_h_rate != 0) + if (fabs(h_rate[i]) > max_h_rate) + h_rate[i] = max_h_rate * h_rate[i] / fabs(h_rate[i]); + + set[i].tilt_target = tilt + update->dt * h_rate[i]; + } +} + +/* ---------------------------------------------------------------------- + apply volume controls +------------------------------------------------------------------------- */ + +void FixDeformPressure::apply_volume() +{ + double e1, e2; + int linked_pressure = 0; + + for (int i = 0; i < 3; i++) { + if (set[i].style != VOLUME) continue; + + int dynamic1 = set[i].dynamic1; + int dynamic2 = set[i].dynamic2; + int fixed = set[i].fixed; + double v0 = set[i].vol_start; + double shift = 0.0; + + if (set[i].substyle == ONE_FROM_ONE) { + shift = 0.5 * (v0 / (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[fixed].hi_start-set[fixed].lo_start)); + } else if (set[i].substyle == ONE_FROM_TWO) { + shift = 0.5 * (v0 / (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[dynamic2].hi_target - set[dynamic2].lo_target)); + } else if (set[i].substyle == TWO_FROM_ONE) { + if (!vol_balance_flag) { + shift = 0.5 * sqrt(v0 * (set[i].hi_start - set[i].lo_start) / + (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[fixed].hi_start - set[fixed].lo_start)); + } else { + double dt = update->dt; + double e1i = set_extra[i].prior_rate; + double e2i = set_extra[fixed].prior_rate; + double L1i = domain->boxhi[i] - domain->boxlo[i]; + double L2i = domain->boxhi[fixed] - domain->boxlo[fixed]; + double L3i = domain->boxhi[dynamic1] - domain->boxlo[dynamic1]; + double L3 = (set[dynamic1].hi_target - set[dynamic1].lo_target); + double Vi = L1i * L2i * L3i; + double V = L3 * L1i * L2i; + double e3 = (L3 / L3i - 1.0) / dt; + double p1 = pressure->vector[i]; + double p2 = pressure->vector[fixed]; + double p1i = set_extra[i].prior_pressure; + double p2i = set_extra[fixed].prior_pressure; + double denominator; + + if (e3 == 0) { + e1 = 0.0; + e2 = 0.0; + shift = 0.5 * L1i; + } else if (e1i == 0 || e2i == 0 || (p2 == p2i && p1 == p1i)) { + // If no prior strain or no change in pressure (initial step) just scale shift by relative box lengths + shift = 0.5 * sqrt(v0 * L1i / L3 / L2i); + } else { + if (!linked_pressure) { + // Calculate first strain rate by expanding stress to linear order, p1(t+dt) = p2(t+dt) + // Calculate second strain rate to preserve volume + denominator = p2 - p2i + e2i * ((p1 - p1i) / e1i); + if (denominator != 0.0 && e1i != 0.0) { + e1 = (((p2 - p2i) * (Vi - V) / (V * dt)) - e2i * (p1 - p2)) / denominator; + } else { + e1 = e2i; + } + e2 = (Vi - V * (1 + e1 * dt)) / (V * (1 + e1 * dt) * dt); + + // If strain rate exceeds limit in either dimension, cap it at the maximum compatible rate + if (max_h_rate != 0) { + if ((fabs(e1) > max_h_rate) || (fabs(e2) > max_h_rate)) { + if (fabs(e1) > fabs(e2)) + adjust_linked_rates(e1, e2, e3, Vi, V); + else + adjust_linked_rates(e2, e1, e3, Vi, V); + } + } + shift = 0.5 * L1i * (1.0 + e1 * dt); + linked_pressure = 1; + } else { + // Already calculated value of e2 + shift = 0.5 * L1i * (1.0 + e2 * dt); + } + } + } + } + + h_rate[i] = (2.0 * shift / (domain->boxhi[i] - domain->boxlo[i]) - 1.0) / update->dt; + h_ratelo[i] = -0.5 * h_rate[i]; + + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; + } +} + + +/* ---------------------------------------------------------------------- + Rescale volume preserving strain rates to enforce max rate +------------------------------------------------------------------------- */ + +void FixDeformPressure::adjust_linked_rates(double &e_larger, double &e_smaller, double e3, double Vi, double V) +{ + double dt = update->dt; + double e_lim_positive = (Vi - V * (1 + max_h_rate * dt)) / (V * (1 + max_h_rate * dt) * dt); + double e_lim_negative = (Vi - V * (1 - max_h_rate * dt)) / (V * (1 - max_h_rate * dt) * dt); + if ((e_larger * e3) >= 0) { + if (e_larger > 0.0) { + // Same sign as primary strain rate, cap third dimension + e_smaller = -max_h_rate; + e_larger = e_lim_negative; + } else { + e_smaller = max_h_rate; + e_larger = e_lim_positive; + } + } else { + // Opposite sign, set to maxrate. + if (e_larger > 0.0) { + e_larger = max_h_rate; + e_smaller = e_lim_positive; + } else { + e_larger = -max_h_rate; + e_smaller = e_lim_negative; + } + } +} + +/* ---------------------------------------------------------------------- + apply box controls +------------------------------------------------------------------------- */ + +void FixDeformPressure::apply_box() +{ + int i; + double scale, shift = 0.0; + double v_rate; + + if (set_box.style == VOLUME) { + double v0 = set_box.vol_start; + double v = 1.0; + for (i = 0; i < 3; i++) + v *= (set[i].hi_target - set[i].lo_target); + + scale = std::pow(v0 / v, THIRD); + for (i = 0; i < 3; i++) { + shift = 0.5 * (set[i].hi_target - set[i].lo_target) * scale; + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; + + // Recalculate h_rate + h_rate[i] = (set[i].hi_target - set[i].lo_target) / (domain->boxhi[i] - domain->boxlo[i]) - 1.0; + h_rate[i] /= update->dt; + h_ratelo[i] = -0.5 * h_rate[i]; + } + + } else if (set_box.style == PRESSURE) { + + // If variable pressure, calculate current target + if (set_extra[6].pvar_flag) + set_extra[6].ptarget = input->variable->compute_equal(set_extra[6].pvar); + + v_rate = set_extra[6].pgain * (pressure->scalar - set_extra[6].ptarget); + + if (normalize_pressure_flag) { + if (set_extra[6].ptarget == 0) { + if (max_h_rate == 0) { + error->all(FLERR, "Cannot normalize error for zero pressure without defining a max rate"); + } else v_rate = max_h_rate * v_rate / fabs(v_rate); + } else v_rate /= fabs(set_extra[6].ptarget); + } + + if (max_h_rate != 0) + if (fabs(v_rate) > max_h_rate) + v_rate = max_h_rate * v_rate / fabs(v_rate); + + scale = (1.0 + update->dt * v_rate); + for (i = 0; i < 3; i++) { + shift = 0.5 * (set[i].hi_target - set[i].lo_target) * scale; + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; + + // Recalculate h_rate + h_rate[i] = (set[i].hi_target - set[i].lo_target) / (domain->boxhi[i] - domain->boxlo[i]) - 1.0; + h_rate[i] /= update->dt; + h_ratelo[i] = -0.5 * h_rate[i]; + } + } +} + +/* ---------------------------------------------------------------------- + write Set data to restart file +------------------------------------------------------------------------- */ + +void FixDeformPressure::write_restart(FILE *fp) +{ + if (comm->me == 0) { + int size = 9 * sizeof(double) + 7 * sizeof(Set) + 7 * sizeof(SetExtra); + fwrite(&size, sizeof(int), 1, fp); + fwrite(set, sizeof(Set), 6, fp); + fwrite(&set_box, sizeof(Set), 1, fp); + fwrite(set_extra, sizeof(SetExtra), 7, fp); + } +} + +/* ---------------------------------------------------------------------- + use selected state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixDeformPressure::restart(char *buf) +{ + int n = 0; + auto list = (double *) buf; + for (int i = 0; i < 6; i++) + h_rate[i] = list[n++]; + for (int i = 0; i < 3; i++) + h_ratelo[i] = list[n++]; + + n = n * sizeof(double); + int samestyle = 1; + Set *set_restart = (Set *) &buf[n]; + for (int i = 0; i < 6; ++i) { + // restore data from initial state + set[i].lo_initial = set_restart[i].lo_initial; + set[i].hi_initial = set_restart[i].hi_initial; + set[i].vol_initial = set_restart[i].vol_initial; + set[i].tilt_initial = set_restart[i].tilt_initial; + // check if style settings are consistent (should do the whole set?) + if (set[i].style != set_restart[i].style) + samestyle = 0; + if (set[i].substyle != set_restart[i].substyle) + samestyle = 0; + } + n += 6 * sizeof(Set); + + // Only restore relevant box variables & check consistency + Set set_box_restart; + memcpy(&set_box_restart, (Set *) &buf[n], sizeof(Set)); + set_box.vol_initial = set_box_restart.vol_initial; + if (set_box.style != set_box_restart.style) + samestyle = 0; + + if (!samestyle) + error->all(FLERR, "Fix deform/pressure settings not consistent with restart"); + + n += sizeof(Set); + SetExtra *set_extra_restart = (SetExtra *) &buf[n]; + for (int i = 0; i < 7; ++i) { + set_extra[i].saved = set_extra_restart[i].saved; + set_extra[i].prior_rate = set_extra_restart[i].prior_rate; + set_extra[i].prior_pressure = set_extra_restart[i].prior_pressure; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixDeformPressure::options(int i, int narg, char **arg) +{ + pcouple = NOCOUPLE; + max_h_rate = 0.0; + vol_balance_flag = 0; + normalize_pressure_flag = 0; + + // parse only options not handled by parent class + + int iarg; + while (i < (int) leftover_iarg.size()) { + iarg = leftover_iarg[i]; + if (strcmp(arg[iarg], "couple") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure couple", error); + if (strcmp(arg[iarg + 1], "xyz") == 0) pcouple = XYZ; + else if (strcmp(arg[iarg + 1], "xy") == 0) pcouple = XY; + else if (strcmp(arg[iarg + 1], "yz") == 0) pcouple = YZ; + else if (strcmp(arg[iarg + 1], "xz") == 0) pcouple = XZ; + else if (strcmp(arg[iarg + 1], "none") == 0) pcouple = NOCOUPLE; + else error->all(FLERR, "Illegal fix deform/pressure couple command: {}", arg[iarg + 1]); + i += 2; + } else if (strcmp(arg[iarg], "max/rate") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure max/rate", error); + max_h_rate = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + if (max_h_rate <= 0.0) + error->all(FLERR, "Maximum strain rate must be a positive, non-zero value"); + i += 2; + } else if (strcmp(arg[iarg], "normalize/pressure") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure normalize/pressure", error); + normalize_pressure_flag = utils::logical(FLERR, arg[iarg + 1], false, lmp); + i += 2; + } else if (strcmp(arg[iarg], "vol/balance/p") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deform/pressure vol/balance/p", error); + vol_balance_flag = utils::logical(FLERR, arg[iarg + 1], false, lmp); + i += 2; + } else error->all(FLERR, "Illegal fix deform/pressure command: {}", arg[iarg]); + } +} + +/* ---------------------------------------------------------------------- */ + +int FixDeformPressure::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0], "temp") == 0) { + if (narg < 2) error->all(FLERR, "Illegal fix_modify command"); + if (tflag) { + modify->delete_compute(id_temp); + tflag = 0; + } + delete[] id_temp; + id_temp = utils::strdup(arg[1]); + + temperature = modify->get_compute_by_id(arg[1]); + if (!temperature) + error->all(FLERR, "Could not find fix_modify temperature compute ID: ", arg[1]); + + if (temperature->tempflag == 0) + error->all(FLERR, "Fix_modify temperature compute {} does not compute temperature", arg[1]); + if (temperature->igroup != 0 && comm->me == 0) + error->warning(FLERR, "Temperature compute {} for fix {} is not for group all: {}", + arg[1], style, group->names[temperature->igroup]); + + // reset id_temp of pressure to new temperature ID + + auto icompute = modify->get_compute_by_id(id_press); + if (!icompute) + error->all(FLERR, "Pressure compute ID {} for fix {} does not exist", id_press, style); + icompute->reset_extra_compute_fix(id_temp); + + return 2; + + } else if (strcmp(arg[0], "press") == 0) { + if (narg < 2) error->all(FLERR, "Illegal fix_modify command"); + if (pflag) { + modify->delete_compute(id_press); + pflag = 0; + } + delete[] id_press; + id_press = utils::strdup(arg[1]); + + pressure = modify->get_compute_by_id(arg[1]); + if (!pressure) error->all(FLERR, "Could not find fix_modify pressure compute ID: {}", arg[1]); + if (pressure->pressflag == 0) + error->all(FLERR, "Fix_modify pressure compute {} does not compute pressure", arg[1]); + return 2; + } + + return 0; +} diff --git a/src/EXTRA-FIX/fix_deform_pressure.h b/src/EXTRA-FIX/fix_deform_pressure.h new file mode 100644 index 00000000000..10af1e5ba3f --- /dev/null +++ b/src/EXTRA-FIX/fix_deform_pressure.h @@ -0,0 +1,73 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 +// clang-format off +FixStyle(deform/pressure,FixDeformPressure); +// clang-format on +#else + +#ifndef LMP_FIX_DEFORM_PRESSURE_H +#define LMP_FIX_DEFORM_PRESSURE_H + +#include "fix_deform.h" + +namespace LAMMPS_NS { + +class FixDeformPressure : public FixDeform { + public: + FixDeformPressure(class LAMMPS *, int, char **); + ~FixDeformPressure() override; + void init() override; + void setup(int) override; + void end_of_step() override; + void write_restart(FILE *) override; + void restart(char *buf) override; + int modify_param(int, char **) override; + + protected: + int pcouple; + double max_h_rate; + int strain_flag; // 1 if strain-based option is used, 0 if not + int pressure_flag; // 1 if pressure tensor used, 0 if not + int volume_flag; // 1 if VOLUME option is used, 0 if not + int normalize_pressure_flag; // 1 if normalize pressure deviation by target + int vol_balance_flag; // 1 if pressures balanced when maintaining const vol + + char *id_temp, *id_press; + class Compute *temperature, *pressure; + int tflag, pflag; + + struct SetExtra { + double ptarget, pgain; + double prior_pressure, prior_rate; + int saved; + char *pstr; + int pvar, pvar_flag; + int coupled_flag; + }; + SetExtra *set_extra; + Set set_box; + + void options(int, int, char **); + void apply_volume() override; + void apply_pressure(); + void apply_box(); + void couple(); + void adjust_linked_rates(double&, double&, double, double, double); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/EXTRA-FIX/fix_efield_tip4p.cpp b/src/EXTRA-FIX/fix_efield_tip4p.cpp index 47b1d9e27a6..a83939a6205 100644 --- a/src/EXTRA-FIX/fix_efield_tip4p.cpp +++ b/src/EXTRA-FIX/fix_efield_tip4p.cpp @@ -16,7 +16,6 @@ #include "angle.h" #include "atom.h" #include "bond.h" -#include "comm.h" #include "domain.h" #include "error.h" #include "force.h" @@ -25,11 +24,10 @@ #include "modify.h" #include "pair.h" #include "region.h" -#include "respa.h" #include "update.h" #include "variable.h" -#include +#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/EXTRA-FIX/fix_ffl.cpp b/src/EXTRA-FIX/fix_ffl.cpp index 0a06707fbd3..e113a5fd37e 100644 --- a/src/EXTRA-FIX/fix_ffl.cpp +++ b/src/EXTRA-FIX/fix_ffl.cpp @@ -43,8 +43,6 @@ enum {CONSTANT,EQUAL,ATOM}; enum {NO_FLIP, FLIP_RESCALE, FLIP_HARD, FLIP_SOFT}; //#define FFL_DEBUG 1 -#define MAXLINE 1024 - /* syntax for fix_ffl: * fix nfix id-group ffl tau Tstart Tstop seed [flip_type] * */ diff --git a/src/EXTRA-FIX/fix_filter_corotate.cpp b/src/EXTRA-FIX/fix_filter_corotate.cpp index c88969344a0..872ebd1772d 100644 --- a/src/EXTRA-FIX/fix_filter_corotate.cpp +++ b/src/EXTRA-FIX/fix_filter_corotate.cpp @@ -42,8 +42,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace FixConst; -#define BIG 1.0e20 -#define MASSDELTA 0.1 +static constexpr double MASSDELTA = 0.1; static const char cite_filter_corotate[] = "Mollified Impulse Method with Corotational Filter: doi:10.1016/j.jcp.2016.12.024\n\n" diff --git a/src/EXTRA-FIX/fix_gle.cpp b/src/EXTRA-FIX/fix_gle.cpp index c5a6c974f6b..1ecc06ddf42 100644 --- a/src/EXTRA-FIX/fix_gle.cpp +++ b/src/EXTRA-FIX/fix_gle.cpp @@ -41,8 +41,6 @@ enum{CONSTANT,EQUAL,ATOM}; //#define GLE_DEBUG 1 -#define MAXLINE 1024 - /* syntax for fix_gle: * fix nfix id-group gle ns Tstart Tstop seed amatrix [noneq cmatrix] [every nmts] * diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index c1de50c41d5..eaf45f4e592 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -35,6 +35,7 @@ #include "pair.h" #include "update.h" +#include #include using namespace LAMMPS_NS; @@ -64,9 +65,10 @@ static const char cite_nonaffine_d2min[] = /* ---------------------------------------------------------------------- */ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), id_fix(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm(nullptr) + Fix(lmp, narg, arg), id_fix(nullptr), fix(nullptr), D2min(nullptr), X(nullptr), Y(nullptr), + F(nullptr), norm(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (narg < 4) utils::missing_cmd_args(FLERR,"fix nonaffine/displacement", error); nevery = utils::inumeric(FLERR, arg[3], false, lmp); if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); @@ -75,17 +77,19 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * int iarg = 4; if (strcmp(arg[iarg], "integrated") == 0) { nad_style = INTEGRATED; - nevery = 1; iarg += 1; } else if (strcmp(arg[iarg], "d2min") == 0) { - if (iarg + 1 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (iarg + 1 > narg) utils::missing_cmd_args(FLERR,"fix nonaffine/displacement d2min", error); nad_style = D2MIN; if (strcmp(arg[iarg + 1], "type") == 0) { cut_style = TYPE; } else if (strcmp(arg[iarg + 1], "radius") == 0) { cut_style = RADIUS; } else if (strcmp(arg[iarg + 1], "custom") == 0) { - if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR,"fix nonaffine/displacement custom", error); + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Fix nonaffine/displacement with custom cutoff requires neighbor style 'bin' or 'nsq'"); cut_style = CUSTOM; cutoff_custom = utils::numeric(FLERR, arg[iarg + 2], false, lmp); cutsq_custom = cutoff_custom * cutoff_custom; @@ -96,7 +100,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * iarg += 2; } else error->all(FLERR,"Illegal nonaffine displacement style {} in fix nonaffine/displacement", arg[iarg]); - if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR,"fix nonaffine/displacement", error); if (strcmp(arg[iarg], "fixed") == 0) { reference_style = FIXED; reference_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); @@ -105,7 +109,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * } else if (strcmp(arg[iarg], "update") == 0) { reference_style = UPDATE; update_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (update_timestep < 0) + if (update_timestep <= 0) error->all(FLERR, "Illegal update timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else if (strcmp(arg[iarg], "offset") == 0) { reference_style = OFFSET; @@ -118,9 +122,6 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * if (cut_style == RADIUS && (!atom->radius_flag)) error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); - if (nad_style == INTEGRATED && reference_style == OFFSET) - error->all(FLERR, "Fix nonaffine/displacement cannot use the integrated style with an offset reference state"); - peratom_flag = 1; peratom_freq = nevery; nmax = -1; @@ -150,8 +151,10 @@ FixNonaffineDisplacement::~FixNonaffineDisplacement() memory->destroy(Y); memory->destroy(F); memory->destroy(norm); - memory->destroy(array_atom); + memory->destroy(D2min); } + + memory->destroy(array_atom); } /* ---------------------------------------------------------------------- */ @@ -175,12 +178,7 @@ void FixNonaffineDisplacement::post_constructor() id_fix = utils::strdup(id + std::string("_FIX_PA")); fix = dynamic_cast(modify->add_fix(fmt::format("{} {} STORE/ATOM 3 0 {} 1", id_fix, group->names[igroup], ghost_status))); - if (nad_style == INTEGRATED) - array_atom = fix->astore; - - if (nad_style == D2MIN) - grow_arrays(atom->nmax); - + grow_arrays(atom->nmax); for (int i = 0; i < atom->nlocal; i++) for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; } @@ -202,10 +200,13 @@ void FixNonaffineDisplacement::init() // need an occasional half neighbor list if (cut_style == RADIUS) { - auto req = neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); + neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); } else { auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); if (cut_style == CUSTOM) { + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Fix nonaffine/displacement with custom cutoff requires neighbor style 'bin' or 'nsq'"); + double skin = neighbor->skin; mycutneigh = cutoff_custom + skin; @@ -233,7 +234,7 @@ void FixNonaffineDisplacement::init_list(int /*id*/, NeighList *ptr) /* ---------------------------------------------------------------------- */ -void FixNonaffineDisplacement::setup(int vflag) +void FixNonaffineDisplacement::setup(int /*vflag*/) { post_force(0); // Save state if needed before starting the 1st timestep } @@ -245,6 +246,15 @@ void FixNonaffineDisplacement::post_force(int /*vflag*/) if (reference_saved && (!update->setupflag)) { if (nad_style == INTEGRATED) { integrate_velocity(); + if ((update->ntimestep % nevery) == 0) { + if (atom->nmax > nmax) + grow_arrays(atom->nmax); + + double **x_nonaffine = fix->astore; + for (int i = 0; i < atom->nlocal; i++) + for (int m = 0; m < 3; m++) + array_atom[i][m] = x_nonaffine[i][m]; + } } else { if ((update->ntimestep % nevery) == 0) calculate_D2Min(); } @@ -285,18 +295,18 @@ void FixNonaffineDisplacement::restart(char *buf) void FixNonaffineDisplacement::integrate_velocity() { - int i,n; dtv = update->dt; double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; + double **x_nonaffine = fix->astore; for (int m = 0; m < 3; m++) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - array_atom[i][m] += dtv * v[i][m]; + x_nonaffine[i][m] += dtv * v[i][m]; } } } @@ -306,8 +316,8 @@ void FixNonaffineDisplacement::integrate_velocity() void FixNonaffineDisplacement::save_reference_state() { - int i, n; double **x = atom->x; + double **x0 = fix->astore; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -316,13 +326,13 @@ void FixNonaffineDisplacement::save_reference_state() if (nad_style == D2MIN) { for (int m = 0; m < 3; m++) { for (int i = 0; i < nall; i++) { - if (mask[i] & groupbit) array_atom[i][m] = x[i][m]; + if (mask[i] & groupbit) x0[i][m] = x[i][m]; } } } else { for (int m = 0; m < 3; m++) { for (int i = 0; i < nall; i++) { - if (mask[i] & groupbit) array_atom[i][m] = 0.0; + if (mask[i] & groupbit) x0[i][m] = 0.0; } } } @@ -354,15 +364,14 @@ void FixNonaffineDisplacement::calculate_D2Min() int i, j, k, l, ii, jj, inum, jnum, itype, jtype; double evol, j2, edev; - double r[3], r0[3], rsq, rsq0, radsum, temp[3]; + double r[3], r0[3], rsq, radsum, temp[3]; double X_tmp[3][3], Y_tmp[3][3], F_tmp[3][3], E[3][3]; - double Y_inv[3][3] = {0.0}; // Zero for 2d since not all entries used + double Y_inv[3][3] = {{0.0,0.0,0.0},{0.0,0.0,0.0},{0.0,0.0,0.0}}; // Zero for 2d since not all entries used int *ilist, *jlist, *numneigh, **firstneigh; double **x = atom->x; - double **x0 = array_atom; + double **x0 = fix->astore; double *radius = atom->radius; - tagint *tag = atom->tag; int *type = atom->type; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -386,7 +395,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } } norm[i] = 0; - array_atom[i][0] = 0; + D2min[i] = 0; } // First loop through neighbors @@ -527,7 +536,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } sub3(r, temp, temp); - array_atom[i][0] += lensq3(temp); + D2min[i] += lensq3(temp); norm[i] += 1; if (newton_pair || j < nlocal) { @@ -538,7 +547,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } sub3(r, temp, temp); - array_atom[j][0] += lensq3(temp); + D2min[j] += lensq3(temp); norm[j] += 1; } } @@ -551,10 +560,9 @@ void FixNonaffineDisplacement::calculate_D2Min() if (!(mask[i] & groupbit)) continue; if (norm[i] != 0) - array_atom[i][0] /= norm[i]; + D2min[i] /= norm[i]; else - array_atom[i][0] = 0.0; - array_atom[i][0] = sqrt(array_atom[i][0]); + D2min[i] = 0.0; for (j = 0; j < 3; j++) for (k = 0; k < 3; k++) @@ -574,6 +582,7 @@ void FixNonaffineDisplacement::calculate_D2Min() edev = sqrt(0.5 * j2); + array_atom[i][0] = sqrt(D2min[i]); array_atom[i][1] = evol; array_atom[i][2] = edev; } @@ -596,7 +605,7 @@ int FixNonaffineDisplacement::pack_reverse_comm(int n, int first, double *buf) } } } else { - buf[m++] = array_atom[i][0]; + buf[m++] = D2min[i]; buf[m++] = ubuf(norm[i]).d; } } @@ -620,7 +629,7 @@ void FixNonaffineDisplacement::unpack_reverse_comm(int n, int *list, double *buf } } } else { - array_atom[j][0] += buf[m++]; + D2min[j] += buf[m++]; norm[j] += (int) ubuf(buf[m++]).i; } } @@ -726,12 +735,18 @@ void FixNonaffineDisplacement::minimum_image0(double *delta) void FixNonaffineDisplacement::grow_arrays(int nmax_new) { nmax = nmax_new; - memory->destroy(X); - memory->destroy(Y); - memory->destroy(F); - memory->destroy(norm); - memory->create(X, nmax, 3, 3, "fix_nonaffine_displacement:X"); - memory->create(Y, nmax, 3, 3, "fix_nonaffine_displacement:Y"); - memory->create(F, nmax, 3, 3, "fix_nonaffine_displacement:F"); - memory->create(norm, nmax, "fix_nonaffine_displacement:norm"); + memory->destroy(array_atom); + memory->create(array_atom, nmax, 3, "fix_nonaffine_displacement:array_atom"); + if (nad_style == D2MIN) { + memory->destroy(X); + memory->destroy(Y); + memory->destroy(F); + memory->destroy(D2min); + memory->destroy(norm); + memory->create(X, nmax, 3, 3, "fix_nonaffine_displacement:X"); + memory->create(Y, nmax, 3, 3, "fix_nonaffine_displacement:Y"); + memory->create(F, nmax, 3, 3, "fix_nonaffine_displacement:F"); + memory->create(D2min, nmax, "fix_nonaffine_displacement:D2min"); + memory->create(norm, nmax, "fix_nonaffine_displacement:norm"); + } } diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h index 3341ab1834f..c7177bd3d99 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.h +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.h @@ -52,12 +52,11 @@ class FixNonaffineDisplacement : public Fix { double cutoff_custom, cutsq_custom, mycutneigh; double xprd0, yprd0, zprd0, xprd0_half, yprd0_half, zprd0_half, xy0, xz0, yz0; - double ***X, ***Y, ***F; + double *D2min, ***X, ***Y, ***F; int *norm; class NeighList *list; // half neighbor list - void integrate_velocity(); void calculate_D2Min(); void save_reference_state(); diff --git a/src/EXTRA-FIX/fix_npt_cauchy.cpp b/src/EXTRA-FIX/fix_npt_cauchy.cpp index f3dfd1af367..8eb6a80b6de 100644 --- a/src/EXTRA-FIX/fix_npt_cauchy.cpp +++ b/src/EXTRA-FIX/fix_npt_cauchy.cpp @@ -42,8 +42,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; @@ -91,8 +91,6 @@ FixNPTCauchy::FixNPTCauchy(LAMMPS *lmp, int narg, char **arg) : omega_mass_flag = 0; etap_mass_flag = 0; flipflag = 1; - dipole_flag = 0; - dlm_flag = 0; tcomputeflag = 0; pcomputeflag = 0; @@ -327,14 +325,6 @@ FixNPTCauchy::FixNPTCauchy(LAMMPS *lmp, int narg, char **arg) : if (iarg+2 > narg) error->all(FLERR,"Illegal fix npt/cauchy command"); flipflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; - } else if (strcmp(arg[iarg],"update") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix npt/cauchy command"); - if (strcmp(arg[iarg+1],"dipole") == 0) dipole_flag = 1; - else if (strcmp(arg[iarg+1],"dipole/dlm") == 0) { - dipole_flag = 1; - dlm_flag = 1; - } else error->all(FLERR,"Illegal fix npt/cauchy command"); - iarg += 2; } else if (strcmp(arg[iarg],"alpha") == 0) { alpha = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; @@ -349,20 +339,6 @@ FixNPTCauchy::FixNPTCauchy(LAMMPS *lmp, int narg, char **arg) : fixedpoint[2] = utils::numeric(FLERR,arg[iarg+3],false,lmp); iarg += 4; - // disc keyword is also parsed in fix/nh/sphere - - } else if (strcmp(arg[iarg],"disc") == 0) { - iarg++; - - // keywords erate, strain, and ext are also parsed in fix/nh/uef - - } else if (strcmp(arg[iarg],"erate") == 0) { - iarg += 3; - } else if (strcmp(arg[iarg],"strain") == 0) { - iarg += 3; - } else if (strcmp(arg[iarg],"ext") == 0) { - iarg += 2; - } else error->all(FLERR,"Illegal fix npt/cauchy command"); } @@ -453,13 +429,6 @@ FixNPTCauchy::FixNPTCauchy(LAMMPS *lmp, int narg, char **arg) : p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix npt/cauchy pressure settings"); - if (dipole_flag) { - if (!atom->sphere_flag) - error->all(FLERR,"Using update dipole flag requires atom style sphere"); - if (!atom->mu_flag) - error->all(FLERR,"Using update dipole flag requires atom attribute mu"); - } - if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || diff --git a/src/EXTRA-FIX/fix_npt_cauchy.h b/src/EXTRA-FIX/fix_npt_cauchy.h index 43a944acb4d..4a738e48abf 100644 --- a/src/EXTRA-FIX/fix_npt_cauchy.h +++ b/src/EXTRA-FIX/fix_npt_cauchy.h @@ -117,8 +117,6 @@ class FixNPTCauchy : public Fix { int eta_mass_flag; // 1 if eta_mass updated, 0 if not. int omega_mass_flag; // 1 if omega_mass updated, 0 if not. int etap_mass_flag; // 1 if etap_mass updated, 0 if not. - int dipole_flag; // 1 if dipole is updated, 0 if not. - int dlm_flag; // 1 if using the DLM rotational integrator, 0 if not int scaleyz; // 1 if yz scaled with lz int scalexz; // 1 if xz scaled with lz diff --git a/src/EXTRA-FIX/fix_smd.cpp b/src/EXTRA-FIX/fix_smd.cpp index e19a605e71e..bc5dca0b588 100644 --- a/src/EXTRA-FIX/fix_smd.cpp +++ b/src/EXTRA-FIX/fix_smd.cpp @@ -38,7 +38,7 @@ enum { SMD_NONE=0, SMD_CVEL=1<<2, SMD_CFOR=1<<3, SMD_AUTOX=1<<4, SMD_AUTOY=1<<5, SMD_AUTOZ=1<<6}; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ @@ -430,7 +430,7 @@ void FixSMD::smd_couple() void FixSMD::write_restart(FILE *fp) { -#define RESTART_ITEMS 5 + static constexpr int RESTART_ITEMS = 5; double buf[RESTART_ITEMS], fsign; if (comm->me == 0) { diff --git a/src/EXTRA-FIX/fix_tmd.cpp b/src/EXTRA-FIX/fix_tmd.cpp index e88007a29d7..242efcf41c2 100644 --- a/src/EXTRA-FIX/fix_tmd.cpp +++ b/src/EXTRA-FIX/fix_tmd.cpp @@ -32,12 +32,13 @@ #include #include +#include using namespace LAMMPS_NS; using namespace FixConst; -#define CHUNK 1000 -#define MAXLINE 256 +static constexpr int CHUNK = 1000; +static constexpr int MAXLINE = 256; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 79af414f0a5..335acdd8532 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -486,12 +486,12 @@ void FixTTMMod::read_parameters(const std::string &filename) reader.next_line(); intensity = reader.next_values(1).next_double(); - // coordinate of 1st surface in x-direction (in box units) - constant + // coordinate of 1st surface in x-direction (electron grid units) - constant reader.next_line(); surface_l = reader.next_values(1).next_int(); - // coordinate of 2nd surface in x-direction (in box units) - constant + // coordinate of 2nd surface in x-direction (electron grid units) - constant reader.next_line(); surface_r = reader.next_values(1).next_int(); diff --git a/src/EXTRA-FIX/fix_viscosity.cpp b/src/EXTRA-FIX/fix_viscosity.cpp index a44050636d2..715c30afddf 100644 --- a/src/EXTRA-FIX/fix_viscosity.cpp +++ b/src/EXTRA-FIX/fix_viscosity.cpp @@ -32,7 +32,7 @@ using namespace FixConst; // needs to be big, but not so big that lose precision when subtract velocity -#define BIG 1.0e10 +static constexpr double BIG = 1.0e10; /* ---------------------------------------------------------------------- */ @@ -120,14 +120,14 @@ int FixViscosity::setmask() void FixViscosity::init() { - // warn if any fix ave/spatial comes after this fix + // warn if any fix ave/chunk comes after this fix // can cause glitch in averaging since ave will happen after swap int foundme = 0; - for (int i = 0; i < modify->nfix; i++) { - if (modify->fix[i] == this) foundme = 1; - if (foundme && strcmp(modify->fix[i]->style,"ave/spatial") == 0 && me == 0) - error->warning(FLERR,"Fix viscosity comes before fix ave/spatial"); + for (const auto &ifix : modify->get_fix_list()) { + if (ifix == this) foundme = 1; + if (foundme && utils::strmatch(ifix->style,"^ave/chunk") && (me == 0)) + error->warning(FLERR,"Fix viscosity comes before fix ave/chunk"); } // set bounds of 2 slabs in pdim diff --git a/src/EXTRA-FIX/fix_viscous_sphere.cpp b/src/EXTRA-FIX/fix_viscous_sphere.cpp index 5b4dd722315..0eda323c15d 100644 --- a/src/EXTRA-FIX/fix_viscous_sphere.cpp +++ b/src/EXTRA-FIX/fix_viscous_sphere.cpp @@ -38,7 +38,7 @@ FixViscousSphere::FixViscousSphere(LAMMPS *_lmp, int narg, char **arg) : { dynamic_group_allow = 1; - if (!atom->sphere_flag) error->all(FLERR, "Fix viscous/sphere requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR, "Fix viscous/sphere requires atom attribute omega"); if (narg < 4) error->all(FLERR, "Illegal fix viscous/sphere command"); diff --git a/src/EXTRA-FIX/fix_wall_flow.cpp b/src/EXTRA-FIX/fix_wall_flow.cpp new file mode 100644 index 00000000000..35997b5b636 --- /dev/null +++ b/src/EXTRA-FIX/fix_wall_flow.cpp @@ -0,0 +1,323 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: Vladislav Galigerov (HSE), + Daniil Pavlov (MIPT) +------------------------------------------------------------------------- */ + +#include "fix_wall_flow.h" + +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "lattice.h" +#include "math_const.h" +#include "memory.h" +#include "modify.h" +#include "random_mars.h" + +#include +#include +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +static const char cite_fix_wall_flow_c[] = + "fix wall/flow command: doi:10.1177/10943420231213013\n\n" + "@Article{Pavlov-etal-IJHPCA-2024,\n" + " author = {Daniil Pavlov and Vladislav Galigerov and Daniil Kolotinskii and Vsevolod " + "Nikolskiy and Vladimir Stegailov},\n" + " title = {GPU-based molecular dynamics of fluid flows: Reaching for turbulence},\n" + " journal = {The International Journal of High Performance Computing Applications},\n" + " year = 2024,\n" + " volume = 38,\n" + " number = 1,\n" + " pages = 34-49\n" + "}\n\n"; + +FixWallFlow::FixWallFlow(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), flowax(FlowAxis::AX_X), flowvel(0.0), flowdir(0), rndseed(0), + current_segment(nullptr) +{ + if (lmp->citeme) lmp->citeme->add(cite_fix_wall_flow_c); + if (narg < 9) utils::missing_cmd_args(FLERR, "fix wall/flow", error); + + if (domain->triclinic != 0) + error->all(FLERR, "Fix wall/flow cannot be used with triclinic simulation box"); + + dynamic_group_allow = 1; + bool do_abort = false; + + int iarg = 3; + // parsing axis + if (strcmp(arg[iarg], "x") == 0) + flowax = FlowAxis::AX_X; + else if (strcmp(arg[iarg], "y") == 0) + flowax = FlowAxis::AX_Y; + else if (strcmp(arg[iarg], "z") == 0) + flowax = FlowAxis::AX_Z; + else + error->all(FLERR, "Illegal fix wall/flow argument: axis must by x or y or z, but {} specified", + arg[iarg]); + + if (domain->periodicity[flowax] != 1) + error->all(FLERR, + "Fix wall/flow cannot be used with a non-periodic boundary along the flow axis"); + + ++iarg; + // parsing velocity + flowvel = utils::numeric(FLERR, arg[iarg], do_abort, lmp); + if (flowvel == 0.0) error->all(FLERR, "Illegal fix wall/flow argument: velocity cannot be 0"); + if (flowvel > 0.0) + flowdir = 1; + else + flowdir = -1; + if (flowdir < 0) + error->all(FLERR, "Illegal fix wall/flow argument: negative direction is not supported yet"); + + ++iarg; + // parsing temperature + double flowtemp = utils::numeric(FLERR, arg[iarg], do_abort, lmp); + kT = lmp->force->boltz * flowtemp / force->mvv2e; + + ++iarg; + // parsing seed + rndseed = utils::inumeric(FLERR, arg[iarg], do_abort, lmp); + if (rndseed <= 0) + error->all(FLERR, "Illegal fix wall/flow argument: random seed must be positive integer"); + + ++iarg; + // parsing wall count + int wallcount = utils::inumeric(FLERR, arg[iarg], do_abort, lmp); + if (wallcount <= 0) + error->all(FLERR, "Illegal fix wall/flow argument: wall count must be positive integer"); + + ++iarg; + // parsing walls + if (narg - iarg != wallcount && narg - iarg != wallcount + 2) + error->all(FLERR, "Wrong fix wall/flow wall count"); + + double scale = 0.0; + if (flowax == FlowAxis::AX_X) + scale = domain->lattice->xlattice; + else if (flowax == FlowAxis::AX_Y) + scale = domain->lattice->ylattice; + else if (flowax == FlowAxis::AX_Z) + scale = domain->lattice->zlattice; + + if (narg - iarg == wallcount + 2) { + if (strcmp(arg[narg - 2], "units") != 0) error->all(FLERR, "Wrong fix wall/flow units command"); + if (strcmp(arg[narg - 1], "box") == 0) + scale = 1.0; + else if (strcmp(arg[narg - 1], "lattice") != 0) + error->all(FLERR, "Wrong fix wall/flow units command"); + } + + walls.resize(wallcount + 2); + walls.front() = domain->boxlo[flowax]; + for (int w = 1; w <= wallcount; ++w, ++iarg) { + walls[w] = utils::numeric(FLERR, arg[iarg], do_abort, lmp) * scale; + } + walls.back() = domain->boxhi[flowax]; + if (!std::is_sorted(walls.begin(), walls.end(), std::less_equal())) { + error->all(FLERR, + "Wrong fix wall/flow wall ordering or some walls are outside simulation domain"); + } + + if (std::adjacent_find(walls.begin(), walls.end()) != walls.end()) { + error->all(FLERR, + "Wrong fix wall/flow wall coordinates: some walls have the same coordinates or lie " + "on the boundary"); + } + + memory->grow(current_segment, atom->nmax, "WallFlow::current_segment"); + atom->add_callback(Atom::GROW); + if (restart_peratom) atom->add_callback(Atom::RESTART); + + maxexchange = 1; + + random = new RanMars(lmp, rndseed + comm->me); +} + +/* ---------------------------------------------------------------------- */ + +FixWallFlow::~FixWallFlow() +{ + if (copymode) return; + atom->delete_callback(id, Atom::GROW); + if (restart_peratom) atom->delete_callback(id, Atom::RESTART); + memory->destroy(current_segment); + + delete random; +} + +/* ---------------------------------------------------------------------- */ + +int FixWallFlow::setmask() +{ + int mask = 0; + + mask |= END_OF_STEP; + + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixWallFlow::init() +{ + if (domain->triclinic != 0) + error->all(FLERR, "Fix wall/flow cannot be used with triclinic simulation box"); + + int nrigid = 0; + int box_change_flowax = 0; + for (const auto &ifix : modify->get_fix_list()) { + if (ifix->rigid_flag) nrigid++; + switch (flowax) { + case FlowAxis::AX_X: + if (ifix->box_change & Fix::BOX_CHANGE_X) box_change_flowax++; + break; + case FlowAxis::AX_Y: + if (ifix->box_change & Fix::BOX_CHANGE_Y) box_change_flowax++; + break; + case FlowAxis::AX_Z: + if (ifix->box_change & Fix::BOX_CHANGE_Z) box_change_flowax++; + break; + } + } + + if (nrigid) error->all(FLERR, "Fix wall/flow is not compatible with rigid bodies"); + if (box_change_flowax) + error->all( + FLERR, + "Fix wall/flow is not compatible with simulation box size changing along flow direction"); + + for (int i = 0; i < atom->nlocal; ++i) { + double pos = atom->x[i][flowax]; + current_segment[i] = compute_current_segment(pos); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixWallFlow::end_of_step() +{ + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; ++i) { + if (mask[i] & groupbit) { + double pos = x[i][flowax]; + int prev_segment = current_segment[i]; + current_segment[i] = compute_current_segment(pos); + + if (prev_segment != current_segment[i]) generate_velocity(i); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixWallFlow::generate_velocity(int atom_i) +{ + const int newton_iteration_count = 10; + double *vel = atom->v[atom_i]; + + double *prmass = atom->rmass; + double *pmass = atom->mass; + double mass = 0.0; + if (prmass) + mass = prmass[atom_i]; + else + mass = pmass[atom->type[atom_i]]; + + const double gamma = 1.0 / std::sqrt(2.0 * kT / mass); + double delta = gamma * flowvel; + + const double edd = std::exp(-delta * delta) / MathConst::MY_PIS + delta * std::erf(delta); + const double probability_threshold = 0.5f * (1.f + delta / edd); + + double direction = 1.0; + + if (random->uniform() > probability_threshold) { + delta = -delta; + direction = -direction; + } + + const double xi_0 = random->uniform(); + const double F_inf = edd + delta; + const double xi = xi_0 * F_inf; + const double x_0 = (std::sqrt(delta * delta + 2) - delta) * 0.5; + double x = x_0; + for (int i = 0; i < newton_iteration_count; ++i) { + x -= (std::exp(x * x) * MathConst::MY_PIS * (xi - delta * std::erfc(x)) - 1.0) / (x + delta) * + 0.5; + } + + const double nu = x + delta; + const double v = nu / gamma; + + vel[flowax] = v * direction; + vel[(flowax + 1) % 3] = random->gaussian() / (gamma * MathConst::MY_SQRT2); + vel[(flowax + 2) % 3] = random->gaussian() / (gamma * MathConst::MY_SQRT2); +} + +/* ---------------------------------------------------------------------- */ + +int FixWallFlow::compute_current_segment(double pos) const +{ + int result = 0; + for (; result < (int)walls.size() - 1; ++result) { + if (pos >= walls[result] && pos < walls[result + 1]) { return result; } + } + return -1; // -1 is "out of box" region +} + +/* ---------------------------------------------------------------------- */ + +void FixWallFlow::grow_arrays(int nmax) +{ + memory->grow(current_segment, nmax, "WallFlow::current_segment"); +} + +/* ---------------------------------------------------------------------- */ + +void FixWallFlow::copy_arrays(int i, int j, int) +{ + current_segment[j] = current_segment[i]; +} + +/* ---------------------------------------------------------------------- */ + +int FixWallFlow::pack_exchange(int i, double *buf) +{ + buf[0] = static_cast(current_segment[i]); + return 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixWallFlow::unpack_exchange(int i, double *buf) +{ + current_segment[i] = static_cast(buf[0]); + return 1; +} diff --git a/src/EXTRA-FIX/fix_wall_flow.h b/src/EXTRA-FIX/fix_wall_flow.h new file mode 100644 index 00000000000..6a662f3d947 --- /dev/null +++ b/src/EXTRA-FIX/fix_wall_flow.h @@ -0,0 +1,61 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 +// clang-format off +FixStyle(wall/flow,FixWallFlow); +// clang-format on +#else + +#ifndef LMP_FIX_WALL_FLOW_H +#define LMP_FIX_WALL_FLOW_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixWallFlow : public Fix { + public: + enum FlowAxis { AX_X = 0, AX_Y = 1, AX_Z = 2 }; + + FixWallFlow(class LAMMPS *, int, char **); + ~FixWallFlow() override; + int setmask() override; + void init() override; + void end_of_step() override; + + void grow_arrays(int) override; + void copy_arrays(int, int, int) override; + + int pack_exchange(int, double *) override; + int unpack_exchange(int, double *) override; + + protected: + FlowAxis flowax; + double flowvel; + double kT; + std::vector walls; + + int flowdir; + int rndseed; + class RanMars *random; + int *current_segment; + + int compute_current_segment(double pos) const; + void generate_velocity(int i); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/EXTRA-FIX/fix_wall_reflect_stochastic.cpp b/src/EXTRA-FIX/fix_wall_reflect_stochastic.cpp index c435cc14ae0..42bb1980495 100644 --- a/src/EXTRA-FIX/fix_wall_reflect_stochastic.cpp +++ b/src/EXTRA-FIX/fix_wall_reflect_stochastic.cpp @@ -43,8 +43,7 @@ FixWallReflectStochastic(LAMMPS *lmp, int narg, char **arg) : if (narg < 8) error->all(FLERR,"Illegal fix wall/reflect/stochastic command"); if (domain->triclinic != 0) - error->all(FLERR, "Fix wall/reflect/stochastic cannot be used with " - "triclinic simulation box"); + error->all(FLERR, "Fix wall/reflect/stochastic cannot be used with triclinic simulation box"); dynamic_group_allow = 1; @@ -168,8 +167,7 @@ FixWallReflectStochastic(LAMMPS *lmp, int narg, char **arg) : xscale = domain->lattice->xlattice; yscale = domain->lattice->ylattice; zscale = domain->lattice->zlattice; - } - else xscale = yscale = zscale = 1.0; + } else xscale = yscale = zscale = 1.0; for (int m = 0; m < nwall; m++) { if (wallstyle[m] != CONSTANT) continue; diff --git a/src/EXTRA-MOLECULE/angle_cosine_delta.cpp b/src/EXTRA-MOLECULE/angle_cosine_delta.cpp index 71acca6001e..51a53e1a964 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_delta.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_delta.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp index 34a8e9d8e53..0b2a6d336d0 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ @@ -120,7 +120,7 @@ void AngleCosinePeriodic::compute(int eflag, int vflag) tn = 1.0; tn_1 = 1.0; tn_2 = 0.0; - un = 1.0; + un = (m==1) ? 2.0 : 1.0; un_1 = 2.0; un_2 = 0.0; diff --git a/src/EXTRA-MOLECULE/angle_cosine_shift.cpp b/src/EXTRA-MOLECULE/angle_cosine_shift.cpp index ce9b4c4133c..53ecb35eaf6 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_shift.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_shift.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/angle_cosine_shift_exp.cpp b/src/EXTRA-MOLECULE/angle_cosine_shift_exp.cpp index a411ea31999..acca92c48e6 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_shift_exp.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_shift_exp.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.cpp b/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.cpp new file mode 100644 index 00000000000..2da31ef8932 --- /dev/null +++ b/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.cpp @@ -0,0 +1,298 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 "angle_cosine_squared_restricted.h" + +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "math_const.h" +#include "memory.h" +#include "neighbor.h" + +#include + +using namespace LAMMPS_NS; +using MathConst::DEG2RAD; +using MathConst::RAD2DEG; + +/* ---------------------------------------------------------------------- */ + +AngleCosineSquaredRestricted::AngleCosineSquaredRestricted(LAMMPS *_lmp) : Angle(_lmp) +{ + k = nullptr; + theta0 = nullptr; + born_matrix_enable = 1; +} + +/* ---------------------------------------------------------------------- */ + +AngleCosineSquaredRestricted::~AngleCosineSquaredRestricted() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(k); + memory->destroy(theta0); + } +} + +/* ---------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::compute(int eflag, int vflag) +{ + int i1, i2, i3, n, type; + double delx1, dely1, delz1, delx2, dely2, delz2; + double eangle, f1[3], f3[3]; + double tk, rsq1, rsq2, r1, r2, c, a, a11, a12, a22; + + eangle = 0.0; + ev_init(eflag, vflag); + + double **x = atom->x; + double **f = atom->f; + int **anglelist = neighbor->anglelist; + int nanglelist = neighbor->nanglelist; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + for (n = 0; n < nanglelist; n++) { + i1 = anglelist[n][0]; + i2 = anglelist[n][1]; + i3 = anglelist[n][2]; + type = anglelist[n][3]; + + // 1st bond + + delx1 = x[i1][0] - x[i2][0]; + dely1 = x[i1][1] - x[i2][1]; + delz1 = x[i1][2] - x[i2][2]; + + rsq1 = delx1 * delx1 + dely1 * dely1 + delz1 * delz1; + r1 = sqrt(rsq1); + + // 2nd bond + + delx2 = x[i3][0] - x[i2][0]; + dely2 = x[i3][1] - x[i2][1]; + delz2 = x[i3][2] - x[i2][2]; + + rsq2 = delx2 * delx2 + dely2 * dely2 + delz2 * delz2; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delx1 * delx2 + dely1 * dely2 + delz1 * delz2; + c /= r1 * r2; + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // force & energy + + double sq_sin = 1.0 - c * c; + double c0 = cos(theta0[type]); + + tk = k[type] * (c - c0) * (1.0 - c * c0) / (sq_sin * sq_sin); + + if (eflag) eangle = k[type] * (c - c0) * (c - c0) / sq_sin; + + a = 2.0 * tk; + a11 = a * c / rsq1; + a12 = -a / (r1 * r2); + a22 = a * c / rsq2; + + f1[0] = a11 * delx1 + a12 * delx2; + f1[1] = a11 * dely1 + a12 * dely2; + f1[2] = a11 * delz1 + a12 * delz2; + f3[0] = a22 * delx2 + a12 * delx1; + f3[1] = a22 * dely2 + a12 * dely1; + f3[2] = a22 * delz2 + a12 * delz1; + + // apply force to each of 3 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= f1[0] + f3[0]; + f[i2][1] -= f1[1] + f3[1]; + f[i2][2] -= f1[2] + f3[2]; + } + + if (newton_bond || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (evflag) + ev_tally(i1, i2, i3, nlocal, newton_bond, eangle, f1, f3, delx1, dely1, delz1, delx2, dely2, + delz2); + } +} + +/* ---------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::allocate() +{ + allocated = 1; + const int np1 = atom->nangletypes + 1; + + memory->create(k, np1, "angle:k"); + memory->create(theta0, np1, "angle:theta0"); + + memory->create(setflag, np1, "angle:setflag"); + for (int i = 1; i < np1; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more types +------------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::coeff(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR, "Incorrect args for angle coefficients"); + if (!allocated) allocate(); + + int ilo, ihi; + utils::bounds(FLERR, arg[0], 1, atom->nangletypes, ilo, ihi, error); + + double k_one = utils::numeric(FLERR, arg[1], false, lmp); + double theta0_one = utils::numeric(FLERR, arg[2], false, lmp); + + // convert theta0 from degrees to radians + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + k[i] = k_one; + theta0[i] = DEG2RAD * theta0_one; + setflag[i] = 1; + count++; + } + + if (count == 0) error->all(FLERR, "Incorrect args for angle coefficients"); +} + +/* ---------------------------------------------------------------------- */ + +double AngleCosineSquaredRestricted::equilibrium_angle(int i) +{ + return theta0[i]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::write_restart(FILE *fp) +{ + fwrite(&k[1], sizeof(double), atom->nangletypes, fp); + fwrite(&theta0[1], sizeof(double), atom->nangletypes, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::read_restart(FILE *fp) +{ + allocate(); + + if (comm->me == 0) { + utils::sfread(FLERR, &k[1], sizeof(double), atom->nangletypes, fp, nullptr, error); + utils::sfread(FLERR, &theta0[1], sizeof(double), atom->nangletypes, fp, nullptr, error); + } + MPI_Bcast(&k[1], atom->nangletypes, MPI_DOUBLE, 0, world); + MPI_Bcast(&theta0[1], atom->nangletypes, MPI_DOUBLE, 0, world); + + for (int i = 1; i <= atom->nangletypes; i++) setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->nangletypes; i++) + fprintf(fp, "%d %g %g\n", i, k[i], RAD2DEG * theta0[i]); +} + +/* ---------------------------------------------------------------------- */ + +double AngleCosineSquaredRestricted::single(int type, int i1, int i2, int i3) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1, dely1, delz1); + double r1 = sqrt(delx1 * delx1 + dely1 * dely1 + delz1 * delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2, dely2, delz2); + double r2 = sqrt(delx2 * delx2 + dely2 * dely2 + delz2 * delz2); + + double c = delx1 * delx2 + dely1 * dely2 + delz1 * delz2; + c /= r1 * r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + double sq_sin = 1.0 - c * c; + double dcostheta = c - cos(theta0[type]); + double tk = k[type] * dcostheta / sq_sin; + return tk * dcostheta; +} + +/* ---------------------------------------------------------------------- */ + +void AngleCosineSquaredRestricted::born_matrix(int type, int i1, int i2, int i3, double &du, + double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1, dely1, delz1); + double r1 = sqrt(delx1 * delx1 + dely1 * dely1 + delz1 * delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2, dely2, delz2); + double r2 = sqrt(delx2 * delx2 + dely2 * dely2 + delz2 * delz2); + + double c = delx1 * delx2 + dely1 * dely2 + delz1 * delz2; + c /= r1 * r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + double c0 = cos(theta0[type]); + double sq_sin = 1.0 - c * c; + + du = 2 * k[type] * (c - c0) * (1.0 - c * c0) / (sq_sin * sq_sin); + + double numerator = 2.0 * c0 * c * c * c - 3.0 * (c0 * c0 + 1) * c * c + 6 * c0 * c - c0 * c0 - 1; + double denominator = sq_sin * sq_sin * sq_sin; + + du2 = 2 * k[type] * numerator / denominator; +} diff --git a/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.h b/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.h new file mode 100644 index 00000000000..674252b7d0f --- /dev/null +++ b/src/EXTRA-MOLECULE/angle_cosine_squared_restricted.h @@ -0,0 +1,49 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 ANGLE_CLASS +// clang-format off +AngleStyle(cosine/squared/restricted,AngleCosineSquaredRestricted); +// clang-format on +#else + +#ifndef LMP_ANGLE_COSINE_SQUARED_RESTRICTED_H +#define LMP_ANGLE_COSINE_SQUARED_RESTRICTED_H + +#include "angle.h" + +namespace LAMMPS_NS { + +class AngleCosineSquaredRestricted : public Angle { + public: + AngleCosineSquaredRestricted(class LAMMPS *); + ~AngleCosineSquaredRestricted() override; + void compute(int, int) override; + void coeff(int, char **) override; + double equilibrium_angle(int) override; + void write_restart(FILE *) override; + void read_restart(FILE *) override; + void write_data(FILE *) override; + double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; + + protected: + double *k, *theta0; + + void allocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/EXTRA-MOLECULE/angle_fourier.cpp b/src/EXTRA-MOLECULE/angle_fourier.cpp index c7eb3d4fe48..da1667c06f6 100644 --- a/src/EXTRA-MOLECULE/angle_fourier.cpp +++ b/src/EXTRA-MOLECULE/angle_fourier.cpp @@ -29,12 +29,9 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleFourier::AngleFourier(LAMMPS *lmp) : Angle(lmp) diff --git a/src/EXTRA-MOLECULE/angle_fourier_simple.cpp b/src/EXTRA-MOLECULE/angle_fourier_simple.cpp index 0ba890b273e..6de7956ffa7 100644 --- a/src/EXTRA-MOLECULE/angle_fourier_simple.cpp +++ b/src/EXTRA-MOLECULE/angle_fourier_simple.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.0001 +static constexpr double SMALL = 0.0001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/angle_quartic.cpp b/src/EXTRA-MOLECULE/angle_quartic.cpp index eaccdbe6083..aade6b4534d 100644 --- a/src/EXTRA-MOLECULE/angle_quartic.cpp +++ b/src/EXTRA-MOLECULE/angle_quartic.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/dihedral_cosine_shift_exp.cpp b/src/EXTRA-MOLECULE/dihedral_cosine_shift_exp.cpp index 7165cde1fdd..28015b0c365 100644 --- a/src/EXTRA-MOLECULE/dihedral_cosine_shift_exp.cpp +++ b/src/EXTRA-MOLECULE/dihedral_cosine_shift_exp.cpp @@ -30,8 +30,7 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.cpp b/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.cpp new file mode 100644 index 00000000000..5b2feb68979 --- /dev/null +++ b/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.cpp @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 "dihedral_cosine_squared_restricted.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "math_const.h" +#include "memory.h" +#include "neighbor.h" + +#include + +using namespace LAMMPS_NS; +using MathConst::DEG2RAD; +using MathConst::RAD2DEG; + +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; + +/* ---------------------------------------------------------------------- */ + +DihedralCosineSquaredRestricted::DihedralCosineSquaredRestricted(LAMMPS *_lmp) : + Dihedral(_lmp), k(nullptr), phi0(nullptr) +{ + writedata = 1; + born_matrix_enable = 1; +} + +/* ---------------------------------------------------------------------- */ + +DihedralCosineSquaredRestricted::~DihedralCosineSquaredRestricted() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(k); + memory->destroy(phi0); + } +} + +/* ---------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::compute(int eflag, int vflag) +{ + int i1, i2, i3, i4, n, type; + double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z, vb2xm, vb2ym, vb2zm; + double edihedral, f1[3], f2[3], f3[3], f4[3]; + double sb1, sb2, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; + double b2mag, b3mag2, b3mag, ctmp, r12c1, c1mag, r12c2; + double c2mag, sc1, sc2, s1, s12, c, pd, a, a11, a22; + double a33, a12, a13, a23, sx2, sy2, sz2; + double s2, sin2; + + edihedral = 0.0; + ev_init(eflag, vflag); + + double **x = atom->x; + double **f = atom->f; + int **dihedrallist = neighbor->dihedrallist; + int ndihedrallist = neighbor->ndihedrallist; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + for (n = 0; n < ndihedrallist; n++) { + i1 = dihedrallist[n][0]; + i2 = dihedrallist[n][1]; + i3 = dihedrallist[n][2]; + i4 = dihedrallist[n][3]; + type = dihedrallist[n][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + + sb1 = 1.0 / (vb1x * vb1x + vb1y * vb1y + vb1z * vb1z); + sb2 = 1.0 / (vb2x * vb2x + vb2y * vb2y + vb2z * vb2z); + sb3 = 1.0 / (vb3x * vb3x + vb3y * vb3y + vb3z * vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x * vb3x + vb1y * vb3y + vb1z * vb3z) * rb1 * rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x * vb1x + vb1y * vb1y + vb1z * vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x * vb2x + vb2y * vb2y + vb2z * vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x * vb3x + vb3y * vb3y + vb3z * vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x * vb2x + vb1y * vb2y + vb1z * vb2z; + r12c1 = 1.0 / (b1mag * b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm * vb3x + vb2ym * vb3y + vb2zm * vb3z; + r12c2 = 1.0 / (b2mag * b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag * c1mag, 0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0 / sc1; + + sin2 = MAX(1.0 - c2mag * c2mag, 0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0 / sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag * c2mag) * s12; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // force & energy + + double p0 = cos(phi0[type]); + double sq_sin = 1.0 - c * c; + + pd = 2 * k[type] * (c - p0) * (1.0 - c * p0) / (sq_sin * sq_sin); + + if (eflag) edihedral = k[type] * (c - p0) * (c - p0) / sq_sin; + + a = pd; + c = c * a; + s12 = s12 * a; + a11 = c * sb1 * s1; + a22 = -sb2 * (2.0 * c0 * s12 - c * (s1 + s2)); + a33 = c * sb3 * s2; + a12 = -r12c1 * (c1mag * c * s1 + c2mag * s12); + a13 = -rb1 * rb3 * s12; + a23 = r12c2 * (c2mag * c * s2 + c1mag * s12); + + sx2 = a12 * vb1x + a22 * vb2x + a23 * vb3x; + sy2 = a12 * vb1y + a22 * vb2y + a23 * vb3y; + sz2 = a12 * vb1z + a22 * vb2z + a23 * vb3z; + + f1[0] = a11 * vb1x + a12 * vb2x + a13 * vb3x; + f1[1] = a11 * vb1y + a12 * vb2y + a13 * vb3y; + f1[2] = a11 * vb1z + a12 * vb2z + a13 * vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13 * vb1x + a23 * vb2x + a33 * vb3x; + f4[1] = a13 * vb1y + a23 * vb2y + a33 * vb3y; + f4[2] = a13 * vb1z + a23 * vb2z + a33 * vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] += f2[0]; + f[i2][1] += f2[1]; + f[i2][2] += f2[2]; + } + + if (newton_bond || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (newton_bond || i4 < nlocal) { + f[i4][0] += f4[0]; + f[i4][1] += f4[1]; + f[i4][2] += f4[2]; + } + + if (evflag) + ev_tally(i1, i2, i3, i4, nlocal, newton_bond, edihedral, f1, f3, f4, vb1x, vb1y, vb1z, vb2x, + vb2y, vb2z, vb3x, vb3y, vb3z); + } +} + +/* ---------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::allocate() +{ + allocated = 1; + const int np1 = atom->ndihedraltypes + 1; + + memory->create(k, np1, "dihedral:k"); + memory->create(phi0, np1, "dihedral:phi0"); + + memory->create(setflag, np1, "dihedral:setflag"); + for (int i = 1; i < np1; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one type +------------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::coeff(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR, "Incorrect args for dihedral coefficients"); + if (!allocated) allocate(); + + int ilo, ihi; + utils::bounds(FLERR, arg[0], 1, atom->ndihedraltypes, ilo, ihi, error); + + double k_one = utils::numeric(FLERR, arg[1], false, lmp); + double phi0_one = utils::numeric(FLERR, arg[2], false, lmp); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + k[i] = k_one; + phi0[i] = DEG2RAD * phi0_one; + setflag[i] = 1; + count++; + } + + if (count == 0) error->all(FLERR, "Incorrect args for dihedral coefficients"); +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::write_restart(FILE *fp) +{ + fwrite(&k[1], sizeof(double), atom->ndihedraltypes, fp); + fwrite(&phi0[1], sizeof(double), atom->ndihedraltypes, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::read_restart(FILE *fp) +{ + allocate(); + + if (comm->me == 0) { + utils::sfread(FLERR, &k[1], sizeof(double), atom->ndihedraltypes, fp, nullptr, error); + utils::sfread(FLERR, &phi0[1], sizeof(double), atom->ndihedraltypes, fp, nullptr, error); + } + MPI_Bcast(&k[1], atom->ndihedraltypes, MPI_DOUBLE, 0, world); + MPI_Bcast(&phi0[1], atom->ndihedraltypes, MPI_DOUBLE, 0, world); + + for (int i = 1; i <= atom->ndihedraltypes; i++) setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ndihedraltypes; i++) + fprintf(fp, "%d %g %g\n", i, k[i], RAD2DEG * phi0[i]); +} + +/* ---------------------------------------------------------------------- */ + +void DihedralCosineSquaredRestricted::born_matrix(int nd, int i1, int i2, int i3, int i4, + double &du, double &du2) +{ + double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z, vb2xm, vb2ym, vb2zm; + double sb1, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; + double b2mag, b3mag2, b3mag, ctmp, r12c1, c1mag, r12c2; + double c2mag, sc1, sc2, s12, c; + double sin2; + + double **x = atom->x; + int **dihedrallist = neighbor->dihedrallist; + + int type = dihedrallist[nd][4]; + + // 1st bond + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + sb1 = 1.0 / (vb1x * vb1x + vb1y * vb1y + vb1z * vb1z); + sb3 = 1.0 / (vb3x * vb3x + vb3y * vb3y + vb3z * vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x * vb3x + vb1y * vb3y + vb1z * vb3z) * rb1 * rb3; + + // 1st and 2nd angle + b1mag2 = vb1x * vb1x + vb1y * vb1y + vb1z * vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x * vb2x + vb2y * vb2y + vb2z * vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x * vb3x + vb3y * vb3y + vb3z * vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x * vb2x + vb1y * vb2y + vb1z * vb2z; + r12c1 = 1.0 / (b1mag * b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm * vb3x + vb2ym * vb3y + vb2zm * vb3z; + r12c2 = 1.0 / (b2mag * b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + sin2 = MAX(1.0 - c1mag * c1mag, 0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0 / sc1; + + sin2 = MAX(1.0 - c2mag * c2mag, 0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0 / sc2; + + s12 = sc1 * sc2; + c = (c0 + c1mag * c2mag) * s12; + + // error check + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + double p0 = cos(phi0[type]); + double sq_sin = 1.0 - c * c; + + du = 2 * k[type] * (c - p0) * (1.0 - c * p0) / (sq_sin * sq_sin); + + double numerator = 2.0 * p0 * c * c * c - 3.0 * (p0 * p0 + 1) * c * c + 6 * p0 * c - p0 * p0 - 1; + double denominator = sq_sin * sq_sin * sq_sin; + + du2 = 2 * k[type] * numerator / denominator; +} diff --git a/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.h b/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.h new file mode 100644 index 00000000000..b9e2e1d9d88 --- /dev/null +++ b/src/EXTRA-MOLECULE/dihedral_cosine_squared_restricted.h @@ -0,0 +1,47 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 DIHEDRAL_CLASS +// clang-format off +DihedralStyle(cosine/squared/restricted,DihedralCosineSquaredRestricted); +// clang-format on +#else + +#ifndef LMP_DIHEDRAL_COSINE_SQUARED_RESTRICTED_H +#define LMP_DIHEDRAL_COSINE_SQUARED_RESTRICTED_H + +#include "dihedral.h" + +namespace LAMMPS_NS { + +class DihedralCosineSquaredRestricted : public Dihedral { + public: + DihedralCosineSquaredRestricted(class LAMMPS *); + ~DihedralCosineSquaredRestricted() override; + void compute(int, int) override; + void coeff(int, char **) override; + void write_restart(FILE *) override; + void read_restart(FILE *) override; + void write_data(FILE *) override; + void born_matrix(int, int, int, int, int, double &, double &) override; + + protected: + double *k, *phi0; + + void allocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/EXTRA-MOLECULE/dihedral_fourier.cpp b/src/EXTRA-MOLECULE/dihedral_fourier.cpp index f9b4a0d13e5..37e1ae83283 100644 --- a/src/EXTRA-MOLECULE/dihedral_fourier.cpp +++ b/src/EXTRA-MOLECULE/dihedral_fourier.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/dihedral_helix.cpp b/src/EXTRA-MOLECULE/dihedral_helix.cpp index 1d99de6ba90..0111da9f995 100644 --- a/src/EXTRA-MOLECULE/dihedral_helix.cpp +++ b/src/EXTRA-MOLECULE/dihedral_helix.cpp @@ -32,9 +32,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/dihedral_nharmonic.cpp b/src/EXTRA-MOLECULE/dihedral_nharmonic.cpp index 206ad4f3ad7..4c3cd3be2c1 100644 --- a/src/EXTRA-MOLECULE/dihedral_nharmonic.cpp +++ b/src/EXTRA-MOLECULE/dihedral_nharmonic.cpp @@ -30,8 +30,8 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp index f576e6efdd9..1bef5956fa0 100644 --- a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp +++ b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp @@ -32,9 +32,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ @@ -338,7 +338,7 @@ void DihedralQuadratic::born_matrix(int nd, int i1, int i2, int i3, int i4, double sb1,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; double c2mag,sc1,sc2,s12,c; - double s1,s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + double cx,cy,cz,cmag,dx,phi,si,siinv,sin2; int **dihedrallist = neighbor->dihedrallist; double **x = atom->x; @@ -405,8 +405,6 @@ void DihedralQuadratic::born_matrix(int nd, int i1, int i2, int i3, int i4, if (sc2 < SMALL) sc2 = SMALL; sc2 = 1.0/sc2; - s1 = sc1 * sc1; - s2 = sc2 * sc2; s12 = sc1 * sc2; c = (c0 + c1mag*c2mag) * s12; diff --git a/src/EXTRA-MOLECULE/dihedral_table_cut.cpp b/src/EXTRA-MOLECULE/dihedral_table_cut.cpp index ce0d431e7c0..a06df279f36 100644 --- a/src/EXTRA-MOLECULE/dihedral_table_cut.cpp +++ b/src/EXTRA-MOLECULE/dihedral_table_cut.cpp @@ -47,8 +47,8 @@ static const char cite_dihedral_tablecut[] = /* ---------------------------------------------------------------------- */ -#define TOLERANCE 0.05 -#define SMALL 0.0000001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.0000001; // ------------------------------------------------------------------------ // The following auxiliary functions were left out of the diff --git a/src/EXTRA-MOLECULE/improper_cossq.cpp b/src/EXTRA-MOLECULE/improper_cossq.cpp index bd21fa12e78..864ec289272 100644 --- a/src/EXTRA-MOLECULE/improper_cossq.cpp +++ b/src/EXTRA-MOLECULE/improper_cossq.cpp @@ -32,8 +32,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/improper_distance.cpp b/src/EXTRA-MOLECULE/improper_distance.cpp index 18f6dd9a3f7..934eeb285d8 100644 --- a/src/EXTRA-MOLECULE/improper_distance.cpp +++ b/src/EXTRA-MOLECULE/improper_distance.cpp @@ -27,12 +27,8 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperDistance::ImproperDistance(LAMMPS *lmp) : Improper(lmp) diff --git a/src/EXTRA-MOLECULE/improper_fourier.cpp b/src/EXTRA-MOLECULE/improper_fourier.cpp index 295657b1b63..1db8b3697cb 100644 --- a/src/EXTRA-MOLECULE/improper_fourier.cpp +++ b/src/EXTRA-MOLECULE/improper_fourier.cpp @@ -30,8 +30,8 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-MOLECULE/improper_ring.cpp b/src/EXTRA-MOLECULE/improper_ring.cpp index 36d6277e465..3d8b672e1e2 100644 --- a/src/EXTRA-MOLECULE/improper_ring.cpp +++ b/src/EXTRA-MOLECULE/improper_ring.cpp @@ -54,8 +54,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-PAIR/pair_born_gauss.cpp b/src/EXTRA-PAIR/pair_born_gauss.cpp index f60cc4dc6fd..4b1390889d8 100644 --- a/src/EXTRA-PAIR/pair_born_gauss.cpp +++ b/src/EXTRA-PAIR/pair_born_gauss.cpp @@ -18,10 +18,8 @@ #include "atom.h" #include "comm.h" #include "error.h" -#include "fix.h" #include "force.h" #include "memory.h" -#include "modify.h" #include "neigh_list.h" #include diff --git a/src/EXTRA-PAIR/pair_coul_slater_long.cpp b/src/EXTRA-PAIR/pair_coul_slater_long.cpp index 3f5803af8e5..65906f73b50 100644 --- a/src/EXTRA-PAIR/pair_coul_slater_long.cpp +++ b/src/EXTRA-PAIR/pair_coul_slater_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -31,14 +32,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-PAIR/pair_lj_cut_coul_dsf.cpp b/src/EXTRA-PAIR/pair_lj_cut_coul_dsf.cpp index 49e1468af18..6ac0c1cdaeb 100644 --- a/src/EXTRA-PAIR/pair_lj_cut_coul_dsf.cpp +++ b/src/EXTRA-PAIR/pair_lj_cut_coul_dsf.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "math_const.h" #include "memory.h" @@ -32,16 +33,9 @@ #include using namespace LAMMPS_NS; +using namespace EwaldConst; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - /* ---------------------------------------------------------------------- */ PairLJCutCoulDSF::PairLJCutCoulDSF(LAMMPS *lmp) : Pair(lmp) diff --git a/src/EXTRA-PAIR/pair_lj_cut_sphere.cpp b/src/EXTRA-PAIR/pair_lj_cut_sphere.cpp index 3f16a966665..852b2eea1d6 100644 --- a/src/EXTRA-PAIR/pair_lj_cut_sphere.cpp +++ b/src/EXTRA-PAIR/pair_lj_cut_sphere.cpp @@ -20,10 +20,7 @@ #include "math_special.h" #include "memory.h" #include "neigh_list.h" -#include "neighbor.h" -#include "update.h" -#include #include using namespace LAMMPS_NS; diff --git a/src/EXTRA-PAIR/pair_lj_expand_coul_long.cpp b/src/EXTRA-PAIR/pair_lj_expand_coul_long.cpp index 119ad6edbf0..428b105621c 100644 --- a/src/EXTRA-PAIR/pair_lj_expand_coul_long.cpp +++ b/src/EXTRA-PAIR/pair_lj_expand_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -35,14 +36,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-PAIR/pair_lj_expand_sphere.cpp b/src/EXTRA-PAIR/pair_lj_expand_sphere.cpp index 089a9deea73..c275a9f9ee3 100644 --- a/src/EXTRA-PAIR/pair_lj_expand_sphere.cpp +++ b/src/EXTRA-PAIR/pair_lj_expand_sphere.cpp @@ -20,8 +20,6 @@ #include "math_special.h" #include "memory.h" #include "neigh_list.h" -#include "neighbor.h" -#include "update.h" #include #include diff --git a/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp b/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp index d68e12c37fe..2d4d048e26e 100644 --- a/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp +++ b/src/EXTRA-PAIR/pair_nm_cut_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -33,14 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-PAIR/pair_pedone.cpp b/src/EXTRA-PAIR/pair_pedone.cpp new file mode 100644 index 00000000000..9b8ce451d90 --- /dev/null +++ b/src/EXTRA-PAIR/pair_pedone.cpp @@ -0,0 +1,389 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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) +------------------------------------------------------------------------- */ + +#include "pair_pedone.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" + +#include +#include + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairPedone::PairPedone(LAMMPS *lmp) : + Pair(lmp), cut(nullptr), d0(nullptr), alpha(nullptr), r0(nullptr), c0(nullptr), + pedone1(nullptr), pedone2(nullptr), offset(nullptr) +{ + writedata = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairPedone::~PairPedone() +{ + if (copymode) return; + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(c0); + memory->destroy(d0); + memory->destroy(alpha); + memory->destroy(r0); + memory->destroy(pedone1); + memory->destroy(pedone2); + memory->destroy(offset); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairPedone::compute(int eflag, int vflag) +{ + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, evdwl, fpair; + double rsq, r, r2inv, r6inv, dr, dexp, factor_lj; + int *ilist, *jlist, *numneigh, **firstneigh; + + evdwl = 0.0; + ev_init(eflag, vflag); + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0 / rsq; + r6inv = r2inv * r2inv * r2inv; + r = sqrt(rsq); + dr = r - r0[itype][jtype]; + dexp = exp(-alpha[itype][jtype] * dr); + fpair = pedone1[itype][jtype] * (dexp * dexp - dexp) / r + + pedone2[itype][jtype] * r6inv * r6inv * r2inv; + fpair *= factor_lj; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; + } + + if (eflag) { + evdwl = d0[itype][jtype] * (dexp * dexp - 2.0 * dexp) + c0[itype][jtype] * r6inv * r6inv - + offset[itype][jtype]; + evdwl *= factor_lj; + } + + if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairPedone::allocate() +{ + allocated = 1; + int np1 = atom->ntypes + 1; + + memory->create(setflag, np1, np1, "pair:setflag"); + for (int i = 1; i < np1; i++) + for (int j = i; j < np1; j++) setflag[i][j] = 0; + + memory->create(cutsq, np1, np1, "pair:cutsq"); + + memory->create(cut, np1, np1, "pair:cut"); + memory->create(c0, np1, np1, "pair:c0"); + memory->create(d0, np1, np1, "pair:d0"); + memory->create(alpha, np1, np1, "pair:alpha"); + memory->create(r0, np1, np1, "pair:r0"); + memory->create(pedone1, np1, np1, "pair:pedone1"); + memory->create(pedone2, np1, np1, "pair:pedone2"); + memory->create(offset, np1, np1, "pair:offset"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairPedone::settings(int narg, char **arg) +{ + if (narg != 1) error->all(FLERR, "Illegal pair_style command"); + + cut_global = utils::numeric(FLERR, arg[0], false, lmp); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i, j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) + if (setflag[i][j]) cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairPedone::coeff(int narg, char **arg) +{ + if (narg < 6 || narg > 7) error->all(FLERR, "Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo, ihi, jlo, jhi; + utils::bounds(FLERR, arg[0], 1, atom->ntypes, ilo, ihi, error); + utils::bounds(FLERR, arg[1], 1, atom->ntypes, jlo, jhi, error); + + double d0_one = utils::numeric(FLERR, arg[2], false, lmp); + double alpha_one = utils::numeric(FLERR, arg[3], false, lmp); + double r0_one = utils::numeric(FLERR, arg[4], false, lmp); + double c0_one = utils::numeric(FLERR, arg[5], false, lmp); + + double cut_one = cut_global; + if (narg == 7) cut_one = utils::numeric(FLERR, arg[6], false, lmp); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo, i); j <= jhi; j++) { + c0[i][j] = c0_one; + d0[i][j] = d0_one; + alpha[i][j] = alpha_one; + r0[i][j] = r0_one; + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairPedone::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR, "All pair coeffs are not set"); + + pedone1[i][j] = 2.0 * d0[i][j] * alpha[i][j]; + pedone2[i][j] = 12.0 * c0[i][j]; + + if (offset_flag) { + double alpha_dr = -alpha[i][j] * (cut[i][j] - r0[i][j]); + offset[i][j] = + d0[i][j] * (exp(2.0 * alpha_dr) - 2.0 * exp(alpha_dr)) - c0[i][j] / pow(cut[i][j], 12.0); + } else + offset[i][j] = 0.0; + + c0[j][i] = c0[i][j]; + d0[j][i] = d0[i][j]; + alpha[j][i] = alpha[i][j]; + r0[j][i] = r0[i][j]; + pedone1[j][i] = pedone1[i][j]; + pedone2[j][i] = pedone2[i][j]; + offset[j][i] = offset[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairPedone::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + int i, j; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j], sizeof(int), 1, fp); + if (setflag[i][j]) { + fwrite(&c0[i][j], sizeof(double), 1, fp); + fwrite(&d0[i][j], sizeof(double), 1, fp); + fwrite(&alpha[i][j], sizeof(double), 1, fp); + fwrite(&r0[i][j], sizeof(double), 1, fp); + fwrite(&cut[i][j], sizeof(double), 1, fp); + } + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairPedone::read_restart(FILE *fp) +{ + read_restart_settings(fp); + + allocate(); + + int i, j; + int me = comm->me; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + if (me == 0) utils::sfread(FLERR, &setflag[i][j], sizeof(int), 1, fp, nullptr, error); + MPI_Bcast(&setflag[i][j], 1, MPI_INT, 0, world); + if (setflag[i][j]) { + if (me == 0) { + utils::sfread(FLERR, &c0[i][j], sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &d0[i][j], sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &alpha[i][j], sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &r0[i][j], sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &cut[i][j], sizeof(double), 1, fp, nullptr, error); + } + MPI_Bcast(&c0[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&d0[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&alpha[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&r0[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&cut[i][j], 1, MPI_DOUBLE, 0, world); + } + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairPedone::write_restart_settings(FILE *fp) +{ + fwrite(&cut_global, sizeof(double), 1, fp); + fwrite(&offset_flag, sizeof(int), 1, fp); + fwrite(&mix_flag, sizeof(int), 1, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairPedone::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + utils::sfread(FLERR, &cut_global, sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &offset_flag, sizeof(int), 1, fp, nullptr, error); + utils::sfread(FLERR, &mix_flag, sizeof(int), 1, fp, nullptr, error); + } + MPI_Bcast(&cut_global, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&offset_flag, 1, MPI_INT, 0, world); + MPI_Bcast(&mix_flag, 1, MPI_INT, 0, world); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairPedone::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + fprintf(fp, "%d %g %g %g %g\n", i, d0[i][i], alpha[i][i], r0[i][i], c0[i][i]); +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairPedone::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) + fprintf(fp, "%d %d %g %g %g %g %g\n", i, j, d0[i][j], alpha[i][j], r0[i][j], c0[i][j], + cut[i][j]); +} + +/* ---------------------------------------------------------------------- */ + +double PairPedone::single(int /*i*/, int /*j*/, int itype, int jtype, double rsq, + double /*factor_coul*/, double factor_lj, double &fforce) +{ + double r, dr, dexp, phi, r2inv, r6inv; + + r = sqrt(rsq); + dr = r - r0[itype][jtype]; + dexp = exp(-alpha[itype][jtype] * dr); + r2inv = 1.0 / rsq; + r6inv = r2inv * r2inv * r2inv; + fforce = pedone1[itype][jtype] * (dexp * dexp - dexp) / r + + pedone2[itype][jtype] * r6inv * r6inv * r2inv; + fforce *= factor_lj; + + phi = d0[itype][jtype] * (dexp * dexp - 2.0 * dexp) + c0[itype][jtype] * r6inv * r6inv - + offset[itype][jtype]; + return factor_lj * phi; +} + +/* ---------------------------------------------------------------------- */ + +void *PairPedone::extract(const char *str, int &dim) +{ + dim = 2; + if (strcmp(str, "c0") == 0) return (void *) c0; + if (strcmp(str, "d0") == 0) return (void *) d0; + if (strcmp(str, "r0") == 0) return (void *) r0; + if (strcmp(str, "alpha") == 0) return (void *) alpha; + return nullptr; +} diff --git a/src/EXTRA-PAIR/pair_pedone.h b/src/EXTRA-PAIR/pair_pedone.h new file mode 100644 index 00000000000..a54f50a6b34 --- /dev/null +++ b/src/EXTRA-PAIR/pair_pedone.h @@ -0,0 +1,58 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 PAIR_CLASS +// clang-format off +PairStyle(pedone,PairPedone); +// clang-format on +#else + +#ifndef LMP_PAIR_PEDONE_H +#define LMP_PAIR_PEDONE_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairPedone : public Pair { + public: + PairPedone(class LAMMPS *); + ~PairPedone() override; + void compute(int, int) override; + + void settings(int, char **) override; + void coeff(int, char **) override; + double init_one(int, int) override; + void write_restart(FILE *) override; + void read_restart(FILE *) override; + void write_restart_settings(FILE *) override; + void read_restart_settings(FILE *) override; + void write_data(FILE *) override; + void write_data_all(FILE *) override; + double single(int, int, int, int, double, double, double, double &) override; + void *extract(const char *, int &) override; + + protected: + double cut_global; + double **cut; + double **d0, **alpha, **r0, **c0; + double **pedone1, **pedone2; + double **offset; + + virtual void allocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/FEP/pair_coul_long_soft.cpp b/src/FEP/pair_coul_long_soft.cpp index d243e7662fe..bc3774fd1c8 100644 --- a/src/FEP/pair_coul_long_soft.cpp +++ b/src/FEP/pair_coul_long_soft.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -32,14 +33,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/FEP/pair_lj_charmm_coul_long_soft.cpp b/src/FEP/pair_lj_charmm_coul_long_soft.cpp index e1c3894790a..1fa2ff6ea64 100644 --- a/src/FEP/pair_lj_charmm_coul_long_soft.cpp +++ b/src/FEP/pair_lj_charmm_coul_long_soft.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -34,14 +35,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/FEP/pair_lj_class2_coul_long_soft.cpp b/src/FEP/pair_lj_class2_coul_long_soft.cpp index e7f928f5404..43801ef5c69 100644 --- a/src/FEP/pair_lj_class2_coul_long_soft.cpp +++ b/src/FEP/pair_lj_class2_coul_long_soft.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -29,14 +30,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/FEP/pair_lj_cut_coul_long_soft.cpp b/src/FEP/pair_lj_cut_coul_long_soft.cpp index 20fd0520351..a5f9f03d128 100644 --- a/src/FEP/pair_lj_cut_coul_long_soft.cpp +++ b/src/FEP/pair_lj_cut_coul_long_soft.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -36,14 +37,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/FEP/pair_lj_cut_tip4p_long_soft.cpp b/src/FEP/pair_lj_cut_tip4p_long_soft.cpp index bced5c17cc9..d0a0d846a98 100644 --- a/src/FEP/pair_lj_cut_tip4p_long_soft.cpp +++ b/src/FEP/pair_lj_cut_tip4p_long_soft.cpp @@ -25,24 +25,18 @@ #include "bond.h" #include "comm.h" #include "domain.h" +#include "error.h" +#include "ewald_const.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neighbor.h" #include #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/FEP/pair_tip4p_long_soft.cpp b/src/FEP/pair_tip4p_long_soft.cpp index 4c357b32e03..09351f9e050 100644 --- a/src/FEP/pair_tip4p_long_soft.cpp +++ b/src/FEP/pair_tip4p_long_soft.cpp @@ -25,24 +25,18 @@ #include "bond.h" #include "comm.h" #include "domain.h" +#include "error.h" +#include "ewald_const.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neighbor.h" #include #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/GPU/fix_nh_gpu.cpp b/src/GPU/fix_nh_gpu.cpp index 00df278ea81..d15f6c6a7e1 100644 --- a/src/GPU/fix_nh_gpu.cpp +++ b/src/GPU/fix_nh_gpu.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define TILTMAX 1.5 +static constexpr double TILTMAX = 1.5; enum{NOBIAS,BIAS}; enum{ISO,ANISO,TRICLINIC}; diff --git a/src/GPU/fix_nve_asphere_gpu.cpp b/src/GPU/fix_nve_asphere_gpu.cpp index 481f44bb630..9b75964c791 100644 --- a/src/GPU/fix_nve_asphere_gpu.cpp +++ b/src/GPU/fix_nve_asphere_gpu.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid #define ME_qnormalize(q) \ { \ diff --git a/src/GPU/pair_amoeba_gpu.cpp b/src/GPU/pair_amoeba_gpu.cpp index 1621e1f5b66..569dc125f0e 100644 --- a/src/GPU/pair_amoeba_gpu.cpp +++ b/src/GPU/pair_amoeba_gpu.cpp @@ -51,7 +51,7 @@ enum{GORDON1,GORDON2}; // same as in pair_amoeba.cpp enum{MPOLE_GRID,POLAR_GRID,POLAR_GRIDC,DISP_GRID,INDUCE_GRID,INDUCE_GRIDC}; -#define DEBYE 4.80321 // conversion factor from q-Angs (real units) to Debye +static constexpr double DEBYE = 4.80321; // conversion factor from q-Angs (real units) to Debye // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_born_coul_long_cs_gpu.cpp b/src/GPU/pair_born_coul_long_cs_gpu.cpp index 798caeb97a2..1ab61c0582e 100644 --- a/src/GPU/pair_born_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_long_cs_gpu.cpp @@ -33,18 +33,18 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index ca12f03070a..19b545003e7 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -30,16 +31,9 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; using namespace MathConst; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp index 98580156225..128863527c2 100644 --- a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EPSILON 1.0e-20 +static constexpr double EPSILON = 1.0e-20; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_buck_coul_long_gpu.cpp b/src/GPU/pair_buck_coul_long_gpu.cpp index adae92d1acf..bb29096007e 100644 --- a/src/GPU/pair_buck_coul_long_gpu.cpp +++ b/src/GPU/pair_buck_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_coul_dsf_gpu.cpp b/src/GPU/pair_coul_dsf_gpu.cpp index bf207caf60a..86f104d2e86 100644 --- a/src/GPU/pair_coul_dsf_gpu.cpp +++ b/src/GPU/pair_coul_dsf_gpu.cpp @@ -20,24 +20,19 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" +#include "math_const.h" #include "neigh_list.h" #include "neighbor.h" #include "suffix.h" #include -#define MY_PIS 1.77245385090551602729 -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; +using MathConst::MY_PIS; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_coul_long_cs_gpu.cpp b/src/GPU/pair_coul_long_cs_gpu.cpp index 79c4c4ab7ce..5eba34c85f3 100644 --- a/src/GPU/pair_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_coul_long_cs_gpu.cpp @@ -31,18 +31,18 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_coul_long_gpu.cpp b/src/GPU/pair_coul_long_gpu.cpp index 7ecb052f697..eb176673dde 100644 --- a/src/GPU/pair_coul_long_gpu.cpp +++ b/src/GPU/pair_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_coul_slater_long_gpu.cpp b/src/GPU/pair_coul_slater_long_gpu.cpp index 4ace8bd7619..c5489fa9fb6 100644 --- a/src/GPU/pair_coul_slater_long_gpu.cpp +++ b/src/GPU/pair_coul_slater_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_dpd_gpu.cpp b/src/GPU/pair_dpd_gpu.cpp index e4657cf2ebe..afbdedcd11e 100644 --- a/src/GPU/pair_dpd_gpu.cpp +++ b/src/GPU/pair_dpd_gpu.cpp @@ -53,7 +53,7 @@ void dpd_gpu_compute(const int ago, const int inum_full, const int nall, double double *boxlo, double *prd); double dpd_gpu_bytes(); -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; //#define _USE_UNIFORM_SARU_LCG //#define _USE_UNIFORM_SARU_TEA8 diff --git a/src/GPU/pair_dpd_tstat_gpu.cpp b/src/GPU/pair_dpd_tstat_gpu.cpp index 4a7b05fd2cd..6889a0e0b8e 100644 --- a/src/GPU/pair_dpd_tstat_gpu.cpp +++ b/src/GPU/pair_dpd_tstat_gpu.cpp @@ -55,7 +55,7 @@ void dpd_tstat_gpu_update_coeff(int ntypes, double **host_a0, double **host_gamm double **host_sigma, double **host_cut); double dpd_tstat_gpu_bytes(); -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; //#define _USE_UNIFORM_SARU_LCG //#define _USE_UNIFORM_SARU_TEA8 diff --git a/src/GPU/pair_eam_gpu.cpp b/src/GPU/pair_eam_gpu.cpp index 155da437682..40f143ebde1 100644 --- a/src/GPU/pair_eam_gpu.cpp +++ b/src/GPU/pair_eam_gpu.cpp @@ -29,8 +29,6 @@ #include -#define MAXLINE 1024 - using namespace LAMMPS_NS; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_edpd_gpu.cpp b/src/GPU/pair_edpd_gpu.cpp index 5bee0cadb81..4b865b6a7e4 100644 --- a/src/GPU/pair_edpd_gpu.cpp +++ b/src/GPU/pair_edpd_gpu.cpp @@ -58,8 +58,6 @@ void edpd_gpu_get_extra_data(double *host_T, double *host_cv); void edpd_gpu_update_flux(void **flux_ptr); double edpd_gpu_bytes(); -#define EPSILON 1.0e-10 - /* ---------------------------------------------------------------------- */ PairEDPDGPU::PairEDPDGPU(LAMMPS *lmp) : PairEDPD(lmp), gpu_mode(GPU_FORCE) diff --git a/src/GPU/pair_hippo_gpu.cpp b/src/GPU/pair_hippo_gpu.cpp index 59a95619d7c..7346ffda8c1 100644 --- a/src/GPU/pair_hippo_gpu.cpp +++ b/src/GPU/pair_hippo_gpu.cpp @@ -50,7 +50,7 @@ enum{GORDON1,GORDON2}; // same as in pair_amoeba.cpp enum{MPOLE_GRID,POLAR_GRID,POLAR_GRIDC,DISP_GRID,INDUCE_GRID,INDUCE_GRIDC}; -#define DEBYE 4.80321 // conversion factor from q-Angs (real units) to Debye +static constexpr double DEBYE = 4.80321; // conversion factor from q-Angs (real units) to Debye // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp index 87d4896bdec..a84ec67c6b2 100644 --- a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index 90a4682e8f8..0f87099e3b7 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp index 08d90b8b575..32a4008defd 100644 --- a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp @@ -20,24 +20,19 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" +#include "math_const.h" #include "neigh_list.h" #include "neighbor.h" #include "suffix.h" #include -#define MY_PIS 1.77245385090551602729 -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; +using MathConst::MY_PIS; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_cut_coul_long_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_gpu.cpp index c70fe555d01..45e71440eb7 100644 --- a/src/GPU/pair_lj_cut_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp index e8342b65308..e6e40ce08e3 100644 --- a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp index b71e526bf2b..1052e16c11f 100644 --- a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp @@ -179,7 +179,7 @@ void PairLJCutDipoleCutGPU::cpu_compute(int start, int inum, int eflag, int vfla double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fx, fy, fz; double rsq, rinv, r2inv, r6inv, r3inv, r5inv, r7inv; double forcecoulx, forcecouly, forcecoulz, crossx, crossy, crossz; - double tixcoul, tiycoul, tizcoul, tjxcoul, tjycoul, tjzcoul; + double tixcoul, tiycoul, tizcoul; double fq, pdotp, pidotr, pjdotr, pre1, pre2, pre3, pre4; double forcelj, factor_coul, factor_lj; int *jlist; @@ -230,7 +230,6 @@ void PairLJCutDipoleCutGPU::cpu_compute(int start, int inum, int eflag, int vfla forcecoulx = forcecouly = forcecoulz = 0.0; tixcoul = tiycoul = tizcoul = 0.0; - tjxcoul = tjycoul = tjzcoul = 0.0; if (rsq < cut_coulsq[itype][jtype]) { @@ -268,9 +267,6 @@ void PairLJCutDipoleCutGPU::cpu_compute(int start, int inum, int eflag, int vfla tixcoul += crossx + pre2 * (mu[i][1] * delz - mu[i][2] * dely); tiycoul += crossy + pre2 * (mu[i][2] * delx - mu[i][0] * delz); tizcoul += crossz + pre2 * (mu[i][0] * dely - mu[i][1] * delx); - tjxcoul += -crossx + pre3 * (mu[j][1] * delz - mu[j][2] * dely); - tjycoul += -crossy + pre3 * (mu[j][2] * delx - mu[j][0] * delz); - tjzcoul += -crossz + pre3 * (mu[j][0] * dely - mu[j][1] * delx); } if (mu[i][3] > 0.0 && q[j] != 0.0) { @@ -298,9 +294,6 @@ void PairLJCutDipoleCutGPU::cpu_compute(int start, int inum, int eflag, int vfla forcecoulx += pre1 * delx - pre2 * mu[j][0]; forcecouly += pre1 * dely - pre2 * mu[j][1]; forcecoulz += pre1 * delz - pre2 * mu[j][2]; - tjxcoul += -pre2 * (mu[j][1] * delz - mu[j][2] * dely); - tjycoul += -pre2 * (mu[j][2] * delx - mu[j][0] * delz); - tjzcoul += -pre2 * (mu[j][0] * dely - mu[j][1] * delx); } } diff --git a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp index df1a2d78ba7..6c04b92b47e 100644 --- a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -32,16 +33,9 @@ #include #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; using namespace MathConst; +using namespace EwaldConst; // External functions from cuda library for atom decomposition @@ -207,7 +201,7 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl double pdotp, pidotr, pjdotr, pre1, pre2, pre3; double grij, expm2, t, erfc; double g0, g1, g2, b0, b1, b2, b3, d0, d1, d2, d3; - double zdix, zdiy, zdiz, zdjx, zdjy, zdjz, zaix, zaiy, zaiz, zajx, zajy, zajz; + double zdix, zdiy, zdiz, zaix, zaiy, zaiz; double g0b1_g1b2_g2b3, g0d1_g1d2_g2d3; double forcelj, factor_coul, factor_lj, facm1; double evdwl, ecoul; @@ -290,9 +284,6 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl zdix = delx * (q[j] * b1 + b2 * pjdotr) - b1 * mu[j][0]; zdiy = dely * (q[j] * b1 + b2 * pjdotr) - b1 * mu[j][1]; zdiz = delz * (q[j] * b1 + b2 * pjdotr) - b1 * mu[j][2]; - zdjx = delx * (-qtmp * b1 + b2 * pidotr) - b1 * mu[i][0]; - zdjy = dely * (-qtmp * b1 + b2 * pidotr) - b1 * mu[i][1]; - zdjz = delz * (-qtmp * b1 + b2 * pidotr) - b1 * mu[i][2]; if (factor_coul < 1.0) { fdx *= factor_coul; @@ -301,14 +292,10 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl zdix *= factor_coul; zdiy *= factor_coul; zdiz *= factor_coul; - zdjx *= factor_coul; - zdjy *= factor_coul; - zdjz *= factor_coul; } } else { fdx = fdy = fdz = 0.0; zdix = zdiy = zdiz = 0.0; - zdjx = zdjy = zdjz = 0.0; } if (factor_coul < 1.0) { @@ -328,9 +315,6 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl zaix = delx * (q[j] * d1 + d2 * pjdotr) - d1 * mu[j][0]; zaiy = dely * (q[j] * d1 + d2 * pjdotr) - d1 * mu[j][1]; zaiz = delz * (q[j] * d1 + d2 * pjdotr) - d1 * mu[j][2]; - zajx = delx * (-qtmp * d1 + d2 * pidotr) - d1 * mu[i][0]; - zajy = dely * (-qtmp * d1 + d2 * pidotr) - d1 * mu[i][1]; - zajz = delz * (-qtmp * d1 + d2 * pidotr) - d1 * mu[i][2]; if (factor_coul > 0.0) { facm1 = 1.0 - factor_coul; @@ -340,14 +324,10 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl zaix *= facm1; zaiy *= facm1; zaiz *= facm1; - zajx *= facm1; - zajy *= facm1; - zajz *= facm1; } } else { fax = fay = faz = 0.0; zaix = zaiy = zaiz = 0.0; - zajx = zajy = zajz = 0.0; } forcecoulx = fdx + fax; diff --git a/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp b/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp index d7eaf4b006f..b89272c4573 100644 --- a/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_tip4p_long_gpu.cpp @@ -23,6 +23,7 @@ #include "comm.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -33,15 +34,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_expand_coul_long_gpu.cpp b/src/GPU/pair_lj_expand_coul_long_gpu.cpp index 35cb18122a3..99f61316e2b 100644 --- a/src/GPU/pair_lj_expand_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_expand_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp index 4d8fbb51395..57ba3ec3535 100644 --- a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp +++ b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp @@ -178,8 +178,8 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fx, fy, fz; double rsq, rinv, r2inv, r6inv, r3inv, r5inv; double forcecoulx, forcecouly, forcecoulz, crossx, crossy, crossz; - double tixcoul, tiycoul, tizcoul, tjxcoul, tjycoul, tjzcoul; - double fq, pdotp, pidotr, pjdotr, pre1, pre2, pre3, pre4; + double tixcoul, tiycoul, tizcoul; + double fq, pdotp, pidotr, pjdotr, pre1, pre2, pre4; double forcelj, factor_coul, factor_lj; double presf, afac, bfac, pqfac, qpfac, forceljcut, forceljsf; double aforcecoulx, aforcecouly, aforcecoulz; @@ -233,7 +233,6 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, forcecoulx = forcecouly = forcecoulz = 0.0; tixcoul = tiycoul = tizcoul = 0.0; - tjxcoul = tjycoul = tjzcoul = 0.0; if (rsq < cut_coulsq[itype][jtype]) { @@ -272,7 +271,6 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, forcecoulz += 3.0 * r5inv * (aforcecoulz + bforcecoulz); pre2 = 3.0 * bfac * r5inv * pjdotr; - pre3 = 3.0 * bfac * r5inv * pidotr; pre4 = -bfac * r3inv; crossx = pre4 * (mu[i][1] * mu[j][2] - mu[i][2] * mu[j][1]); @@ -282,9 +280,6 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, tixcoul += crossx + pre2 * (mu[i][1] * delz - mu[i][2] * dely); tiycoul += crossy + pre2 * (mu[i][2] * delx - mu[i][0] * delz); tizcoul += crossz + pre2 * (mu[i][0] * dely - mu[i][1] * delx); - tjxcoul += -crossx + pre3 * (mu[j][1] * delz - mu[j][2] * dely); - tjycoul += -crossy + pre3 * (mu[j][2] * delx - mu[j][0] * delz); - tjzcoul += -crossz + pre3 * (mu[j][0] * dely - mu[j][1] * delx); } if (mu[i][3] > 0.0 && q[j] != 0.0) { @@ -318,9 +313,6 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, forcecoulx += pre1 * delx - pre2 * mu[j][0]; forcecouly += pre1 * dely - pre2 * mu[j][1]; forcecoulz += pre1 * delz - pre2 * mu[j][2]; - tjxcoul += -pre2 * (mu[j][1] * delz - mu[j][2] * dely); - tjycoul += -pre2 * (mu[j][2] * delx - mu[j][0] * delz); - tjzcoul += -pre2 * (mu[j][0] * dely - mu[j][1] * delx); } } diff --git a/src/GPU/pair_lj_spica_coul_long_gpu.cpp b/src/GPU/pair_lj_spica_coul_long_gpu.cpp index 4317c04220a..896f692d026 100644 --- a/src/GPU/pair_lj_spica_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_spica_coul_long_gpu.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "gpu_extra.h" #include "kspace.h" @@ -29,15 +30,8 @@ #include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - using namespace LAMMPS_NS; +using namespace EwaldConst; // External functions from cuda library for atom decomposition diff --git a/src/GPU/pair_mdpd_gpu.cpp b/src/GPU/pair_mdpd_gpu.cpp index bebe1e97360..8647dbd0fdd 100644 --- a/src/GPU/pair_mdpd_gpu.cpp +++ b/src/GPU/pair_mdpd_gpu.cpp @@ -55,8 +55,6 @@ void mdpd_gpu_compute(const int ago, const int inum_full, const int nall, double void mdpd_gpu_get_extra_data(double *host_rho); double mdpd_gpu_bytes(); -#define EPSILON 1.0e-10 - /* ---------------------------------------------------------------------- */ PairMDPDGPU::PairMDPDGPU(LAMMPS *lmp) : PairMDPD(lmp), gpu_mode(GPU_FORCE) diff --git a/src/GPU/pair_sph_heatconduction_gpu.cpp b/src/GPU/pair_sph_heatconduction_gpu.cpp index 0f0aa079c8b..ba68c5fcc5e 100644 --- a/src/GPU/pair_sph_heatconduction_gpu.cpp +++ b/src/GPU/pair_sph_heatconduction_gpu.cpp @@ -53,7 +53,7 @@ void sph_heatconduction_gpu_compute(const int ago, const int inum_full, const in int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *host_tag, - double **host_v, const int nlocal); + double **host_v); void sph_heatconduction_gpu_get_extra_data(double *host_rho, double *host_esph); void sph_heatconduction_gpu_update_dE(void **dE_ptr); double sph_heatconduction_gpu_bytes(); @@ -113,7 +113,7 @@ void PairSPHHeatConductionGPU::compute(int eflag, int vflag) neighbor->ago, inum, nall, 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, atom->v); + cpu_time, success, atom->vest); } else { inum = list->inum; ilist = list->ilist; @@ -122,7 +122,7 @@ void PairSPHHeatConductionGPU::compute(int eflag, int vflag) sph_heatconduction_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->tag, atom->v, atom->nlocal); + atom->tag, atom->vest); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp index 942a3c33bd4..d503a263359 100644 --- a/src/GPU/pair_sph_lj_gpu.cpp +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -53,7 +53,7 @@ void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *host_tag, - double **host_v, const int nlocal); + double **host_v); void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, double *host_cv); void sph_lj_gpu_update_drhoE(void **drhoE_ptr); @@ -114,7 +114,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) neighbor->ago, inum, nall, 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, atom->v); + cpu_time, success, atom->vest); } else { inum = list->inum; ilist = list->ilist; @@ -123,7 +123,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->tag, atom->v, atom->nlocal); + atom->tag, atom->vest); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); @@ -136,21 +136,21 @@ void PairSPHLJGPU::compute(int eflag, int vflag) int nlocal = atom->nlocal; if (acc_float) { auto drhoE_ptr = (float *)drhoE_pinned; - int idx = 0; - for (int i = 0; i < nlocal; i++) { - drho[i] = drhoE_ptr[idx]; - desph[i] = drhoE_ptr[idx+1]; - idx += 2; - } + for (int i = 0; i < nlocal; i++) + drho[i] += drhoE_ptr[i]; + + drhoE_ptr += nlocal; + for (int i = 0; i < nlocal; i++) + desph[i] += drhoE_ptr[i]; } else { auto drhoE_ptr = (double *)drhoE_pinned; - int idx = 0; - for (int i = 0; i < nlocal; i++) { - drho[i] = drhoE_ptr[idx]; - desph[i] = drhoE_ptr[idx+1]; - idx += 2; - } + for (int i = 0; i < nlocal; i++) + drho[i] += drhoE_ptr[i]; + + drhoE_ptr += nlocal; + for (int i = 0; i < nlocal; i++) + desph[i] += drhoE_ptr[i]; } if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) diff --git a/src/GPU/pair_sph_taitwater_gpu.cpp b/src/GPU/pair_sph_taitwater_gpu.cpp index 37a1b0feb5b..23252cea8a4 100644 --- a/src/GPU/pair_sph_taitwater_gpu.cpp +++ b/src/GPU/pair_sph_taitwater_gpu.cpp @@ -18,6 +18,7 @@ #include "pair_sph_taitwater_gpu.h" #include "atom.h" +#include "comm.h" #include "domain.h" #include "error.h" #include "force.h" @@ -53,7 +54,7 @@ void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nal int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *tag, - double **host_v, const int nlocal); + double **host_v); void sph_taitwater_gpu_get_extra_data(double *host_rho); void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr); double sph_taitwater_gpu_bytes(); @@ -85,6 +86,25 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) { ev_init(eflag, vflag); + // check consistency of pair coefficients + + if (first) { + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = 1; i <= atom->ntypes; i++) { + if (cutsq[i][j] > 1.e-32) { + if (!setflag[i][i] || !setflag[j][j]) { + if (comm->me == 0) { + printf( + "SPH particle types %d and %d interact with cutoff=%g, but not all of their single particle properties are set.\n", + i, j, sqrt(cutsq[i][j])); + } + } + } + } + } + first = 0; + } + int nall = atom->nlocal + atom->nghost; int inum, host_start; @@ -110,7 +130,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) firstneigh = sph_taitwater_gpu_compute_n( neighbor->ago, inum, nall, 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, atom->v); + cpu_time, success, atom->vest); } else { inum = list->inum; ilist = list->ilist; @@ -118,7 +138,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) firstneigh = list->firstneigh; sph_taitwater_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->tag, atom->v, atom->nlocal); + atom->tag, atom->vest); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); @@ -131,21 +151,21 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) int nlocal = atom->nlocal; if (acc_float) { auto drhoE_ptr = (float *)drhoE_pinned; - int idx = 0; - for (int i = 0; i < nlocal; i++) { - drho[i] = drhoE_ptr[idx]; - desph[i] = drhoE_ptr[idx+1]; - idx += 2; - } + for (int i = 0; i < nlocal; i++) + drho[i] += drhoE_ptr[i]; + + drhoE_ptr += nlocal; + for (int i = 0; i < nlocal; i++) + desph[i] += drhoE_ptr[i]; } else { auto drhoE_ptr = (double *)drhoE_pinned; - int idx = 0; - for (int i = 0; i < nlocal; i++) { - drho[i] = drhoE_ptr[idx]; - desph[i] = drhoE_ptr[idx+1]; - idx += 2; - } + for (int i = 0; i < nlocal; i++) + drho[i] += drhoE_ptr[i]; + + drhoE_ptr += nlocal; + for (int i = 0; i < nlocal; i++) + desph[i] += drhoE_ptr[i]; } if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) diff --git a/src/GPU/pair_sw_gpu.cpp b/src/GPU/pair_sw_gpu.cpp index 7645218a859..3e916a6571c 100644 --- a/src/GPU/pair_sw_gpu.cpp +++ b/src/GPU/pair_sw_gpu.cpp @@ -49,9 +49,6 @@ void sw_gpu_compute(const int ago, const int nloc, const int nall, const int ln, const double cpu_time, bool &success); double sw_gpu_bytes(); -#define MAXLINE 1024 -#define DELTA 4 - /* ---------------------------------------------------------------------- */ PairSWGPU::PairSWGPU(LAMMPS *lmp) : PairSW(lmp), gpu_mode(GPU_FORCE) diff --git a/src/GPU/pair_tersoff_gpu.cpp b/src/GPU/pair_tersoff_gpu.cpp index 8610a3880c0..9ba94548c15 100644 --- a/src/GPU/pair_tersoff_gpu.cpp +++ b/src/GPU/pair_tersoff_gpu.cpp @@ -54,9 +54,6 @@ void tersoff_gpu_compute(const int ago, const int nlocal, const int nall, const int &host_start, const double cpu_time, bool &success); double tersoff_gpu_bytes(); -#define MAXLINE 1024 -#define DELTA 4 - /* ---------------------------------------------------------------------- */ PairTersoffGPU::PairTersoffGPU(LAMMPS *lmp) : PairTersoff(lmp), gpu_mode(GPU_FORCE) diff --git a/src/GPU/pair_yukawa_colloid_gpu.cpp b/src/GPU/pair_yukawa_colloid_gpu.cpp index c1e785380d3..db199a4701b 100644 --- a/src/GPU/pair_yukawa_colloid_gpu.cpp +++ b/src/GPU/pair_yukawa_colloid_gpu.cpp @@ -123,7 +123,7 @@ void PairYukawaColloidGPU::compute(int eflag, int vflag) void PairYukawaColloidGPU::init_style() { - if (!atom->sphere_flag) error->all(FLERR, "Pair yukawa/colloid/gpu requires atom style sphere"); + if (!atom->radius_flag) error->all(FLERR, "Pair style yukawa/colloid/gpu requires atom attribute radius"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; diff --git a/src/GPU/pppm_gpu.cpp b/src/GPU/pppm_gpu.cpp index a2c733e7ed5..517d843c93e 100644 --- a/src/GPU/pppm_gpu.cpp +++ b/src/GPU/pppm_gpu.cpp @@ -1,4 +1,3 @@ - // clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator @@ -40,22 +39,10 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXORDER 7 -#define OFFSET 16384 -#define SMALL 0.00001 -#define LARGE 10000.0 -#define EPS_HOC 1.0e-7 - -enum{REVERSE_RHO_GPU,REVERSE_RHO}; -enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; +enum { REVERSE_RHO_GPU, REVERSE_RHO }; +enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; // external functions from cuda library for atom decomposition @@ -405,7 +392,8 @@ void PPPMGPU::poisson_ik() // if requested, compute energy and virial contribution - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + double scaleinv = 1.0 / ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { diff --git a/src/GRANULAR/compute_contact_atom.cpp b/src/GRANULAR/compute_contact_atom.cpp index 310fdb5a418..a3e71af0fe3 100644 --- a/src/GRANULAR/compute_contact_atom.cpp +++ b/src/GRANULAR/compute_contact_atom.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -51,7 +50,7 @@ ComputeContactAtom::ComputeContactAtom(LAMMPS *lmp, int narg, char **arg) : // error checks - if (!atom->sphere_flag) error->all(FLERR, "Compute contact/atom requires atom style sphere"); + if (!atom->radius_flag) error->all(FLERR, "Compute contact/atom requires atom attribute radius"); } /* ---------------------------------------------------------------------- */ @@ -67,10 +66,10 @@ ComputeContactAtom::~ComputeContactAtom() void ComputeContactAtom::init() { if (force->pair == nullptr) - error->all(FLERR,"Compute contact/atom requires a pair style be defined"); + error->all(FLERR, "Compute contact/atom requires a pair style be defined"); if (modify->get_compute_by_style("contact/atom").size() > 1 && comm->me == 0) - error->warning(FLERR,"More than one compute contact/atom"); + error->warning(FLERR, "More than one compute contact/atom"); // need an occasional neighbor list @@ -88,10 +87,10 @@ void ComputeContactAtom::init_list(int /*id*/, NeighList *ptr) void ComputeContactAtom::compute_peratom() { - int i,j,ii,jj,inum,jnum; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,radsumsq; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, inum, jnum; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; + double radi, radsum, radsumsq; + int *ilist, *jlist, *numneigh, **firstneigh; invoked_peratom = update->ntimestep; @@ -100,7 +99,7 @@ void ComputeContactAtom::compute_peratom() if (atom->nmax > nmax) { memory->destroy(contact); nmax = atom->nmax; - memory->create(contact,nmax,"contact/atom:contact"); + memory->create(contact, nmax, "contact/atom:contact"); vector_atom = contact; } @@ -130,7 +129,7 @@ void ComputeContactAtom::compute_peratom() i = ilist[ii]; // Only proceed if i is either part of the compute group or will contribute to contacts - if (! (mask[i] & groupbit) && ! (mask[i] & jgroupbit)) continue; + if (!(mask[i] & groupbit) && !(mask[i] & jgroupbit)) continue; xtmp = x[i][0]; ytmp = x[i][1]; @@ -146,7 +145,7 @@ void ComputeContactAtom::compute_peratom() // Only tally for atoms in compute group (groupbit) if neighbor is in group2 (jgroupbit) update_i_flag = (mask[i] & groupbit) && (mask[j] & jgroupbit); update_j_flag = (mask[j] & groupbit) && (mask[i] & jgroupbit); - if (! update_i_flag && ! update_j_flag) continue; + if (!update_i_flag && !update_j_flag) continue; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; @@ -170,12 +169,11 @@ void ComputeContactAtom::compute_peratom() int ComputeContactAtom::pack_reverse_comm(int n, int first, double *buf) { - int i,m,last; + int i, m, last; m = 0; last = first + n; - for (i = first; i < last; i++) - buf[m++] = contact[i]; + for (i = first; i < last; i++) buf[m++] = contact[i]; return m; } @@ -183,7 +181,7 @@ int ComputeContactAtom::pack_reverse_comm(int n, int first, double *buf) void ComputeContactAtom::unpack_reverse_comm(int n, int *list, double *buf) { - int i,j,m; + int i, j, m; m = 0; for (i = 0; i < n; i++) { @@ -198,6 +196,6 @@ void ComputeContactAtom::unpack_reverse_comm(int n, int *list, double *buf) double ComputeContactAtom::memory_usage() { - double bytes = (double)nmax * sizeof(double); + double bytes = (double) nmax * sizeof(double); return bytes; } diff --git a/src/GRANULAR/compute_fabric.cpp b/src/GRANULAR/compute_fabric.cpp index adaf242c926..04afc95280d 100644 --- a/src/GRANULAR/compute_fabric.cpp +++ b/src/GRANULAR/compute_fabric.cpp @@ -184,7 +184,7 @@ void ComputeFabric::compute_vector() double nx, ny, nz; double ncinv, denom, fn, ft, prefactor; double br_tensor[6], ft_tensor[6], fn_tensor[6]; - double trace_phi, trace_D, trace_Xfn, trace_Xft; + double trace_third_phi, trace_third_D, trace_third_Xfn, trace_third_Xft; double phi_ij[6] = {0.0}; double Ac_ij[6] = {0.0}; double D_ij[6] = {0.0}; @@ -295,11 +295,11 @@ void ComputeFabric::compute_vector() MPI_Allreduce(phi_ij, temp_dbl, 6, MPI_DOUBLE, MPI_SUM, world); for (i = 0; i < 6; i++) phi_ij[i] = temp_dbl[i] * ncinv; - trace_phi = (1.0 / 3.0) * (phi_ij[0] + phi_ij[1] + phi_ij[2]); + trace_third_phi = (1.0 / 3.0) * (phi_ij[0] + phi_ij[1] + phi_ij[2]); - Ac_ij[0] = (15.0 / 2.0) * (phi_ij[0] - trace_phi); - Ac_ij[1] = (15.0 / 2.0) * (phi_ij[1] - trace_phi); - Ac_ij[2] = (15.0 / 2.0) * (phi_ij[2] - trace_phi); + Ac_ij[0] = (15.0 / 2.0) * (phi_ij[0] - trace_third_phi); + Ac_ij[1] = (15.0 / 2.0) * (phi_ij[1] - trace_third_phi); + Ac_ij[2] = (15.0 / 2.0) * (phi_ij[2] - trace_third_phi); Ac_ij[3] = (15.0 / 2.0) * (phi_ij[3]); Ac_ij[4] = (15.0 / 2.0) * (phi_ij[4]); Ac_ij[5] = (15.0 / 2.0) * (phi_ij[5]); @@ -419,14 +419,14 @@ void ComputeFabric::compute_vector() MPI_Allreduce(D_ij, temp_dbl, 6, MPI_DOUBLE, MPI_SUM, world); for (i = 0; i < 6; i++) D_ij[i] = temp_dbl[i]; - trace_D = (1.0 / 3.0) * (D_ij[0] + D_ij[1] + D_ij[2]); + trace_third_D = (1.0 / 3.0) * (D_ij[0] + D_ij[1] + D_ij[2]); - br_tensor[0] = (15.0 / (6.0 * trace_D)) * (D_ij[0] - trace_D); - br_tensor[1] = (15.0 / (6.0 * trace_D)) * (D_ij[1] - trace_D); - br_tensor[2] = (15.0 / (6.0 * trace_D)) * (D_ij[2] - trace_D); - br_tensor[3] = (15.0 / (6.0 * trace_D)) * (D_ij[3]); - br_tensor[4] = (15.0 / (6.0 * trace_D)) * (D_ij[4]); - br_tensor[5] = (15.0 / (6.0 * trace_D)) * (D_ij[5]); + br_tensor[0] = (15.0 / (6.0 * trace_third_D)) * (D_ij[0] - trace_third_D); + br_tensor[1] = (15.0 / (6.0 * trace_third_D)) * (D_ij[1] - trace_third_D); + br_tensor[2] = (15.0 / (6.0 * trace_third_D)) * (D_ij[2] - trace_third_D); + br_tensor[3] = (15.0 / (6.0 * trace_third_D)) * (D_ij[3]); + br_tensor[4] = (15.0 / (6.0 * trace_third_D)) * (D_ij[4]); + br_tensor[5] = (15.0 / (6.0 * trace_third_D)) * (D_ij[5]); for (i = 0; i < ntensors; i++) { if (tensor_style[i] == BR) { @@ -439,17 +439,17 @@ void ComputeFabric::compute_vector() MPI_Allreduce(Xfn_ij, temp_dbl, 6, MPI_DOUBLE, MPI_SUM, world); for (i = 0; i < 6; i++) Xfn_ij[i] = temp_dbl[i]; - trace_Xfn = (1.0 / 3.0) * (Xfn_ij[0] + Xfn_ij[1] + Xfn_ij[2]); + trace_third_Xfn = (1.0 / 3.0) * (Xfn_ij[0] + Xfn_ij[1] + Xfn_ij[2]); } if (fn_flag) { - fn_tensor[0] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[0] - trace_Xfn); - fn_tensor[1] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[1] - trace_Xfn); - fn_tensor[2] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[2] - trace_Xfn); - fn_tensor[3] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[3]); - fn_tensor[4] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[4]); - fn_tensor[5] = (15.0 / (6.0 * trace_Xfn)) * (Xfn_ij[5]); + fn_tensor[0] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[0] - trace_third_Xfn); + fn_tensor[1] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[1] - trace_third_Xfn); + fn_tensor[2] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[2] - trace_third_Xfn); + fn_tensor[3] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[3]); + fn_tensor[4] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[4]); + fn_tensor[5] = (15.0 / (6.0 * trace_third_Xfn)) * (Xfn_ij[5]); for (i = 0; i < ntensors; i++) { if (tensor_style[i] == FN) { @@ -462,14 +462,14 @@ void ComputeFabric::compute_vector() MPI_Allreduce(Xft_ij, temp_dbl, 6, MPI_DOUBLE, MPI_SUM, world); for (i = 0; i < 6; i++) Xft_ij[i] = temp_dbl[i]; - trace_Xft = (1.0 / 3.0) * (Xft_ij[0] + Xft_ij[1] + Xft_ij[2]); + trace_third_Xft = (1.0 / 3.0) * (Xft_ij[0] + Xft_ij[1] + Xft_ij[2]); - ft_tensor[0] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[0] - trace_Xft); - ft_tensor[1] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[1] - trace_Xft); - ft_tensor[2] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[2] - trace_Xft); - ft_tensor[3] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[3]); - ft_tensor[4] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[4]); - ft_tensor[5] = (15.0 / (9.0 * trace_Xfn)) * (Xft_ij[5]); + ft_tensor[0] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[0] - trace_third_Xft); + ft_tensor[1] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[1] - trace_third_Xft); + ft_tensor[2] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[2] - trace_third_Xft); + ft_tensor[3] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[3]); + ft_tensor[4] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[4]); + ft_tensor[5] = (15.0 / (9.0 * trace_third_Xfn)) * (Xft_ij[5]); for (i = 0; i < ntensors; i++) { if (tensor_style[i] == FT) { diff --git a/src/GRANULAR/fix_damping_cundall.cpp b/src/GRANULAR/fix_damping_cundall.cpp index cf17e91050a..cf3dd46b96d 100644 --- a/src/GRANULAR/fix_damping_cundall.cpp +++ b/src/GRANULAR/fix_damping_cundall.cpp @@ -40,9 +40,9 @@ FixDampingCundall::FixDampingCundall(LAMMPS *_lmp, int narg, char **arg) : { dynamic_group_allow = 1; - if (!atom->sphere_flag) error->all(FLERR, "Fix damping/cundall requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR, "Fix damping/cundall requires atom attribute omega"); - if (narg < 5) error->all(FLERR, "Illegal fix damping/cundall command"); + if (narg < 5) utils::missing_cmd_args(FLERR, "fix damping/cundall", error); gamma_lin = utils::numeric(FLERR, arg[3], false, lmp); gamma_ang = utils::numeric(FLERR, arg[4], false, lmp); diff --git a/src/GRANULAR/fix_heat_flow.cpp b/src/GRANULAR/fix_heat_flow.cpp index d0d7a73ce68..b7643c2c249 100644 --- a/src/GRANULAR/fix_heat_flow.cpp +++ b/src/GRANULAR/fix_heat_flow.cpp @@ -16,12 +16,12 @@ #include "atom.h" #include "comm.h" #include "error.h" -#include "force.h" #include "memory.h" #include "modify.h" -#include "respa.h" #include "update.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/GRANULAR/fix_wall_gran.cpp b/src/GRANULAR/fix_wall_gran.cpp index 550d2e17dbf..b8b06add2e0 100644 --- a/src/GRANULAR/fix_wall_gran.cpp +++ b/src/GRANULAR/fix_wall_gran.cpp @@ -34,6 +34,7 @@ #include "update.h" #include "variable.h" +#include #include using namespace LAMMPS_NS; @@ -42,7 +43,7 @@ using namespace FixConst; using namespace MathConst; using namespace MathExtra; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; // XYZ PLANE need to be 0,1,2 @@ -55,10 +56,10 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), idregion(nullptr), tstr(nullptr), history_one(nullptr), fix_rigid(nullptr), mass_rigid(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal fix wall/gran command"); + if (narg < 4) utils::missing_cmd_args(FLERR,"fix wall/gran", error); - if (!atom->sphere_flag) - error->all(FLERR,"Fix wall/gran requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR,"Fix wall/gran requires atom attribute omega"); + if (!atom->radius_flag) error->all(FLERR,"Fix wall/gran requires atom attribute radius"); create_attribute = 1; @@ -110,7 +111,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) : model->limit_damping = 1; iarg += 1; } else { - error->all(FLERR, "Illegal fix wall/gran command"); + error->all(FLERR, "Unknown fix wall/gran keyword {}", arg[iarg]); } } } @@ -281,8 +282,8 @@ FixWallGran::~FixWallGran() // delete local storage delete model; - delete [] tstr; - delete [] idregion; + delete[] tstr; + delete[] idregion; memory->destroy(history_one); memory->destroy(mass_rigid); } diff --git a/src/GRANULAR/fix_wall_gran.h b/src/GRANULAR/fix_wall_gran.h index 45e4e43844b..cd1e8778c3b 100644 --- a/src/GRANULAR/fix_wall_gran.h +++ b/src/GRANULAR/fix_wall_gran.h @@ -20,7 +20,6 @@ FixStyle(wall/gran,FixWallGran); #ifndef LMP_FIX_WALL_GRAN_H #define LMP_FIX_WALL_GRAN_H -#include "granular_model.h" #include "fix.h" namespace LAMMPS_NS { diff --git a/src/GRANULAR/fix_wall_gran_region.cpp b/src/GRANULAR/fix_wall_gran_region.cpp index 1c2fd4bcc0c..b90620f3aab 100644 --- a/src/GRANULAR/fix_wall_gran_region.cpp +++ b/src/GRANULAR/fix_wall_gran_region.cpp @@ -30,8 +30,6 @@ #include "update.h" #include "variable.h" -#include - using namespace LAMMPS_NS; using namespace Granular_NS; using namespace MathExtra; diff --git a/src/GRANULAR/gran_sub_mod.cpp b/src/GRANULAR/gran_sub_mod.cpp index bf945523ddd..bac9c9edfe5 100644 --- a/src/GRANULAR/gran_sub_mod.cpp +++ b/src/GRANULAR/gran_sub_mod.cpp @@ -21,7 +21,8 @@ ----------------------------------------------------------------------- */ #include "gran_sub_mod.h" -#include "error.h" + +#include using namespace LAMMPS_NS; using namespace Granular_NS; diff --git a/src/GRANULAR/gran_sub_mod.h b/src/GRANULAR/gran_sub_mod.h index 25245653323..88e77eb77b4 100644 --- a/src/GRANULAR/gran_sub_mod.h +++ b/src/GRANULAR/gran_sub_mod.h @@ -14,50 +14,50 @@ #ifndef LMP_GRAN_SUB_MOD_H #define LMP_GRAN_SUB_MOD_H -#include "granular_model.h" #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { namespace Granular_NS { - -class GranSubMod : protected Pointers { - public: - GranSubMod(class GranularModel *, class LAMMPS *); - ~GranSubMod() override; - - int num_coeffs; - double *coeffs; - void read_restart(); - virtual void mix_coeffs(double*, double*); - virtual void coeffs_to_local() {}; - virtual void init() {}; // called after all sub models + coeffs defined - - void allocate_coeffs(); - std::string name; - - int size_history; - int nondefault_history_transfer; - double *transfer_history_factor; - - int history_index; - int beyond_contact; // If the sub model contact extends beyond overlap - int allow_cohesion; // If the sub model works with a cohesive normal force - int contact_radius_flag; // If the sub model requires contact radius - - GranularModel *gm; - - protected: - int allocated; - - double mix_stiffnessE(double, double, double, double); - double mix_stiffnessG(double, double, double, double); - double mix_stiffnessE_wall(double, double); - double mix_stiffnessG_wall(double, double); - double mix_geom(double, double); - double mix_mean(double, double); -}; - -} // namespace GranularModel + class GranularModel; + + class GranSubMod : protected Pointers { + public: + GranSubMod(class GranularModel *, class LAMMPS *); + ~GranSubMod() override; + + int num_coeffs; + double *coeffs; + void read_restart(); + virtual void mix_coeffs(double *, double *); + virtual void coeffs_to_local(){}; + virtual void init(){}; // called after all sub models + coeffs defined + + void allocate_coeffs(); + std::string name; + + int size_history; + int nondefault_history_transfer; + double *transfer_history_factor; + + int history_index; + int beyond_contact; // If the sub model contact extends beyond overlap + int allow_cohesion; // If the sub model works with a cohesive normal force + int contact_radius_flag; // If the sub model requires contact radius + + GranularModel *gm; + + protected: + int allocated; + + double mix_stiffnessE(double, double, double, double); + double mix_stiffnessG(double, double, double, double); + double mix_stiffnessE_wall(double, double); + double mix_stiffnessG_wall(double, double); + double mix_geom(double, double); + double mix_mean(double, double); + }; + +} // namespace Granular_NS } // namespace LAMMPS_NS #endif /* GRAN_SUB_MOD_H */ diff --git a/src/GRANULAR/gran_sub_mod_damping.cpp b/src/GRANULAR/gran_sub_mod_damping.cpp index 7d6a02b8f0b..4386ed71fc7 100644 --- a/src/GRANULAR/gran_sub_mod_damping.cpp +++ b/src/GRANULAR/gran_sub_mod_damping.cpp @@ -17,6 +17,8 @@ #include "granular_model.h" #include "math_special.h" +#include + using namespace LAMMPS_NS; using namespace Granular_NS; @@ -130,6 +132,12 @@ void GranSubModDampingTsuji::init() double GranSubModDampingTsuji::calculate_forces() { - damp_prefactor = damp * sqrt(gm->meff * gm->Fnormal / gm->delta); + // in case argument <= 0 due to precision issues + double sqrt1; + if (gm->delta > 0.0) + sqrt1 = MAX(0.0, gm->meff * gm->Fnormal / gm->delta); + else + sqrt1 = 0.0; + damp_prefactor = damp * sqrt(sqrt1); return -damp_prefactor * gm->vnnr; } diff --git a/src/GRANULAR/gran_sub_mod_normal.cpp b/src/GRANULAR/gran_sub_mod_normal.cpp index ffc18b8c327..f4294bbc35c 100644 --- a/src/GRANULAR/gran_sub_mod_normal.cpp +++ b/src/GRANULAR/gran_sub_mod_normal.cpp @@ -16,6 +16,8 @@ #include "granular_model.h" #include "math_const.h" +#include + using namespace LAMMPS_NS; using namespace Granular_NS; diff --git a/src/GRANULAR/gran_sub_mod_rolling.cpp b/src/GRANULAR/gran_sub_mod_rolling.cpp index 554aa7ab636..4b10bd23588 100644 --- a/src/GRANULAR/gran_sub_mod_rolling.cpp +++ b/src/GRANULAR/gran_sub_mod_rolling.cpp @@ -18,6 +18,8 @@ #include "granular_model.h" #include "math_extra.h" +#include + using namespace LAMMPS_NS; using namespace Granular_NS; using namespace MathExtra; diff --git a/src/GRANULAR/gran_sub_mod_tangential.cpp b/src/GRANULAR/gran_sub_mod_tangential.cpp index c74233701bb..f8f39a38f9a 100644 --- a/src/GRANULAR/gran_sub_mod_tangential.cpp +++ b/src/GRANULAR/gran_sub_mod_tangential.cpp @@ -19,6 +19,8 @@ #include "granular_model.h" #include "math_extra.h" +#include + using namespace LAMMPS_NS; using namespace Granular_NS; using namespace MathExtra; diff --git a/src/GRANULAR/gran_sub_mod_twisting.cpp b/src/GRANULAR/gran_sub_mod_twisting.cpp index 48af89c9e7c..95c62ad342f 100644 --- a/src/GRANULAR/gran_sub_mod_twisting.cpp +++ b/src/GRANULAR/gran_sub_mod_twisting.cpp @@ -19,6 +19,8 @@ #include "granular_model.h" #include "math_const.h" +#include + using namespace LAMMPS_NS; using namespace Granular_NS; diff --git a/src/GRANULAR/granular_model.cpp b/src/GRANULAR/granular_model.cpp index c1ad692fb3f..14431f41b49 100644 --- a/src/GRANULAR/granular_model.cpp +++ b/src/GRANULAR/granular_model.cpp @@ -31,6 +31,8 @@ #include "style_gran_sub_mod.h" // IWYU pragma: keep #include +#include +#include using namespace LAMMPS_NS; using namespace Granular_NS; @@ -332,11 +334,11 @@ void GranularModel::read_restart(FILE *fp) utils::sfread(FLERR, &num_char, sizeof(int), 1, fp, nullptr, error); MPI_Bcast(&num_char, 1, MPI_INT, 0, world); - std::string model_name (num_char, ' '); + std::string model_name(num_char, ' '); if (comm->me == 0) utils::sfread(FLERR, const_cast(model_name.data()), sizeof(char),num_char, fp, nullptr, error); MPI_Bcast(const_cast(model_name.data()), num_char, MPI_CHAR, 0, world); - construct_sub_model(model_name, (SubModelType) i); + construct_sub_model(std::move(model_name), (SubModelType) i); if (comm->me == 0) utils::sfread(FLERR, &num_coeff, sizeof(int), 1, fp, nullptr, error); diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 98191e05644..79bf2b87aa3 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -435,10 +435,10 @@ void PairGranHookeHistory::init_style() // error and warning checks - if (!atom->radius_flag || !atom->rmass_flag) - error->all(FLERR, "Pair granular requires atom attributes radius, rmass"); + if (!atom->radius_flag || !atom->rmass_flag || !atom->omega_flag) + error->all(FLERR, "Pair gran/h* requires atom attributes radius, rmass, omega"); if (comm->ghost_velocity == 0) - error->all(FLERR, "Pair granular requires ghost atoms store velocity"); + error->all(FLERR, "Pair gran/h* requires ghost atoms store velocity"); // need a granular neighbor list diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 30f272791e7..d5179a19b7d 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -37,7 +37,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; using namespace Granular_NS; @@ -401,8 +400,8 @@ void PairGranular::init_style() { // error and warning checks - if (!atom->radius_flag || !atom->rmass_flag) - error->all(FLERR,"Pair granular requires atom attributes radius, rmass"); + if (!atom->radius_flag || !atom->rmass_flag || !atom->omega_flag) + error->all(FLERR,"Pair granular requires atom attributes radius, rmass, omega"); if (comm->ghost_velocity == 0) error->all(FLERR,"Pair granular requires ghost atoms store velocity"); diff --git a/src/GRANULAR/pair_granular.h b/src/GRANULAR/pair_granular.h index 956717d5986..46c55705436 100644 --- a/src/GRANULAR/pair_granular.h +++ b/src/GRANULAR/pair_granular.h @@ -21,7 +21,6 @@ PairStyle(granular,PairGranular); #define LMP_PAIR_GRANULAR_H #include "pair.h" -#include namespace LAMMPS_NS { diff --git a/src/INTEL/fix_nh_intel.cpp b/src/INTEL/fix_nh_intel.cpp index 688101ab131..5455576a1cd 100644 --- a/src/INTEL/fix_nh_intel.cpp +++ b/src/INTEL/fix_nh_intel.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define TILTMAX 1.5 +static constexpr double TILTMAX = 1.5; enum{NOBIAS,BIAS}; enum{ISO,ANISO,TRICLINIC}; diff --git a/src/INTEL/fix_nve_asphere_intel.cpp b/src/INTEL/fix_nve_asphere_intel.cpp index 7e429901a41..848afa20cca 100644 --- a/src/INTEL/fix_nve_asphere_intel.cpp +++ b/src/INTEL/fix_nve_asphere_intel.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ diff --git a/src/INTEL/npair_skip_intel.cpp b/src/INTEL/npair_skip_intel.cpp index 8840f7ee431..35962377464 100644 --- a/src/INTEL/npair_skip_intel.cpp +++ b/src/INTEL/npair_skip_intel.cpp @@ -164,8 +164,6 @@ void NPairSkipIntel::build_t(NeighList *list, int *numhalf, int *cnumneigh, if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); } - - int last_inum = 0, loop_end; _inum_counts[tid] = my_inum; } int inum = _inum_counts[0]; @@ -406,7 +404,6 @@ void NPairSkipTrimIntel::build_t(NeighList *list, int *numhalf, int *cnumneigh, error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); } - int last_inum = 0, loop_end; _inum_counts[tid] = my_inum; } int inum = _inum_counts[0]; diff --git a/src/INTEL/pair_airebo_intel.cpp b/src/INTEL/pair_airebo_intel.cpp index 7bc2b3edb87..cc3168cb993 100644 --- a/src/INTEL/pair_airebo_intel.cpp +++ b/src/INTEL/pair_airebo_intel.cpp @@ -633,9 +633,8 @@ namespace overloaded { compared to original code. ---------------------------------------------------------------------- */ -#define CARBON 0 -#define HYDROGEN 1 -#define TOL 1.0e-9 +enum { CARBON, HYDROGEN }; +static constexpr double TOL = 1.0e-9; template inline T fmin_nonan(T a, T b) { @@ -1603,9 +1602,6 @@ void ref_torsion_single_interaction(KernelArgsAIREBOT * ka, int i, flt_t thmin = ka->params.thmin; flt_t thmax = ka->params.thmax; int itype = map[x[i].w]; - flt_t xtmp = x[i].x; - flt_t ytmp = x[i].y; - flt_t ztmp = x[i].z; int * REBO_neighs_i = &ka->neigh_rebo.entries[ka->neigh_rebo.offset[i]]; int jnum = ka->neigh_rebo.num[i]; int jtype = map[x[j].w]; diff --git a/src/INTEL/pair_eam_intel.cpp b/src/INTEL/pair_eam_intel.cpp index 9c5d6da5e54..a7fd6af408b 100644 --- a/src/INTEL/pair_eam_intel.cpp +++ b/src/INTEL/pair_eam_intel.cpp @@ -34,8 +34,6 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 - #define FC_PACKED1_T typename ForceConst::fc_packed1 #define FC_PACKED2_T typename ForceConst::fc_packed2 @@ -236,7 +234,6 @@ void PairEAMIntel::eval(const int offload, const int vflag, const int istride = fc.rhor_istride(); const int jstride = fc.rhor_jstride(); const int fstride = fc.frho_stride(); - { #if defined(__MIC__) && defined(_LMP_INTEL_OFFLOAD) *timer_compute = MIC_Wtime(); @@ -567,12 +564,10 @@ void PairEAMIntel::eval(const int offload, const int vflag, } else rhoip = rhojp; const flt_t z2p = (z2r_spline_t[joff].a*p + - z2r_spline_t[joff].b)*p + - z2r_spline_t[joff].c; + z2r_spline_t[joff].b)*p + z2r_spline_t[joff].c; const flt_t z2 = ((z2r_spline_t[joff].d*p + z2r_spline_t[joff].e)*p + - z2r_spline_t[joff].f)*p + - z2r_spline_t[joff].g; + z2r_spline_t[joff].f)*p + z2r_spline_t[joff].g; const flt_t recip = (flt_t)1.0/r; const flt_t phi = z2*recip; @@ -851,4 +846,3 @@ void PairEAMIntel::unpack_forward_comm(int n, int first, double *buf, last = first + n; for (i = first; i < last; i++) fp_f[i] = buf[m++]; } - diff --git a/src/INTEL/pair_lj_charmm_coul_charmm_intel.cpp b/src/INTEL/pair_lj_charmm_coul_charmm_intel.cpp index faae6e5cbc7..8cd02c934ef 100644 --- a/src/INTEL/pair_lj_charmm_coul_charmm_intel.cpp +++ b/src/INTEL/pair_lj_charmm_coul_charmm_intel.cpp @@ -131,8 +131,7 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag, int nlocal, nall, minlocal; fix->get_buffern(offload, nlocal, nall, minlocal); - const int ago = neighbor->ago; - IP_PRE_pack_separate_buffers(fix, buffers, ago, offload, nlocal, nall); + IP_PRE_pack_separate_buffers(fix, buffers, neighbor->ago, offload, nlocal, nall); ATOM_T * _noalias const x = buffers->get_x(offload); flt_t * _noalias const q = buffers->get_q(offload); @@ -231,7 +230,6 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag, else foff = -minlocal; FORCE_T * _noalias const f = f_start + foff; if (NEWTON_PAIR) memset(f + minlocal, 0, f_stride * sizeof(FORCE_T)); - flt_t cutboth = cut_coulsq; const int toffs = tid * ccache_stride; flt_t * _noalias const tdelx = ccachex + toffs; @@ -246,7 +244,6 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag, const int itype = x[i].w; const int ptr_off = itype * ntypes; - const flt_t * _noalias const cutsqi = cutsq + ptr_off; const LJ_T * _noalias const lji = lj + ptr_off; const int * _noalias const jlist = firstneigh[i]; diff --git a/src/INTEL/pair_snap_intel.cpp b/src/INTEL/pair_snap_intel.cpp index d91f0adc36b..c9a4ed3d5a0 100644 --- a/src/INTEL/pair_snap_intel.cpp +++ b/src/INTEL/pair_snap_intel.cpp @@ -34,8 +34,8 @@ using namespace LAMMPS_NS; using namespace ip_simd; -#define MAXLINE 1024 -#define MAXWORD 3 +static constexpr int MAXLINE = 1024; +static constexpr int MAXWORD = 3; /* ---------------------------------------------------------------------- */ @@ -445,7 +445,8 @@ void PairSNAPIntel::read_files(char *coefffilename, char *paramfilename) coefffilename, utils::getsyserror()); } - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int nwords = 0; while (nwords == 0) { diff --git a/src/INTEL/pair_sw_intel.cpp b/src/INTEL/pair_sw_intel.cpp index fa62f499de3..35a091aef22 100644 --- a/src/INTEL/pair_sw_intel.cpp +++ b/src/INTEL/pair_sw_intel.cpp @@ -52,9 +52,6 @@ using namespace LAMMPS_NS; #define FC_PACKED2_T typename ForceConst::fc_packed2 #define FC_PACKED3_T typename ForceConst::fc_packed3 -#define MAXLINE 1024 -#define DELTA 4 - /* ---------------------------------------------------------------------- */ PairSWIntel::PairSWIntel(LAMMPS *lmp) : PairSW(lmp) @@ -478,7 +475,6 @@ void PairSWIntel::eval(const int offload, const int vflag, const flt_t r2 = (flt_t)1.0 / std::sqrt(rinvsq2); const flt_t rainv2 = (flt_t)1.0 / (r2 - cut); const flt_t gsrainv2 = sigma_gamma * rainv2; - const flt_t gsrainvsq2 = gsrainv2 * rainv2 / r2; const flt_t expgsrainv2 = std::exp(gsrainv2); const flt_t rinv12 = (flt_t)1.0 / (r1 * r2); @@ -494,7 +490,6 @@ void PairSWIntel::eval(const int offload, const int vflag, const flt_t facexp = expgsrainv1*expgsrainv2*kfactor; const flt_t facrad = lambda_epsilon * facexp * delcssq; const flt_t frad1 = facrad*gsrainvsq1; - const flt_t frad2 = facrad*gsrainvsq2; const flt_t facang = lambda_epsilon2 * facexp * delcs; const flt_t facang12 = rinv12*facang; const flt_t csfacang = cs*facang; @@ -1273,13 +1268,13 @@ void PairSWIntel::ForceConst::set_ntypes(const int ntypes, if (memory != nullptr) _memory = memory; if (ntypes != _ntypes) { if (_ntypes > 0) { + + #ifdef _LMP_INTEL_OFFLOAD fc_packed0 *op2 = p2[0]; fc_packed1 *op2f = p2f[0]; fc_packed1p2 *op2f2 = p2f2[0]; fc_packed2 *op2e = p2e[0]; fc_packed3 *op3 = p3[0][0]; - - #ifdef _LMP_INTEL_OFFLOAD if (op2 != nullptr && op2f != nullptr && op2f2 != nullptr && op2e != nullptr && op3 != nullptr && _cop >= 0) { #pragma offload_transfer target(mic:_cop) \ diff --git a/src/INTEL/pppm_disp_intel.cpp b/src/INTEL/pppm_disp_intel.cpp index 6dac9fad99a..50e9c6e469a 100644 --- a/src/INTEL/pppm_disp_intel.cpp +++ b/src/INTEL/pppm_disp_intel.cpp @@ -39,11 +39,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXORDER 7 -#define OFFSET 16384 -#define SMALL 0.00001 -#define LARGE 10000.0 -#define EPS_HOC 1.0e-7 +static constexpr int OFFSET = 16384; +static constexpr FFT_SCALAR ZEROF = 0.0; enum{GEOMETRIC,ARITHMETIC,SIXTHPOWER}; enum{REVERSE_RHO, REVERSE_RHO_G, REVERSE_RHO_A, REVERSE_RHO_NONE}; @@ -53,14 +50,6 @@ enum{FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM, FORWARD_IK_NONE, FORWARD_AD_NONE, FORWARD_IK_PERATOM_NONE, FORWARD_AD_PERATOM_NONE}; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - /* ---------------------------------------------------------------------- */ PPPMDispIntel::PPPMDispIntel(LAMMPS *lmp) : PPPMDisp(lmp) @@ -268,23 +257,23 @@ void PPPMDispIntel::compute(int eflag, int vflag) //perform calculations for coulomb interactions only if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - particle_map(delxinv, delyinv, delzinv, shift, part2grid, - nupper, nlower, nxlo_out, nylo_out, nzlo_out, - nxhi_out, nyhi_out, nzhi_out, - fix->get_mixed_buffers()); - make_rho_c(fix->get_mixed_buffers()); + particle_map_intel(delxinv, delyinv, delzinv, shift, part2grid, + nupper, nlower, nxlo_out, nylo_out, nzlo_out, + nxhi_out, nyhi_out, nzhi_out, + fix->get_mixed_buffers()); + make_rho_c_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - particle_map(delxinv, delyinv, delzinv, shift, part2grid, - nupper, nlower, nxlo_out, nylo_out, - nzlo_out, nxhi_out, nyhi_out, nzhi_out, - fix->get_double_buffers()); - make_rho_c(fix->get_double_buffers()); + particle_map_intel(delxinv, delyinv, delzinv, shift, part2grid, + nupper, nlower, nxlo_out, nylo_out, + nzlo_out, nxhi_out, nyhi_out, nzhi_out, + fix->get_double_buffers()); + make_rho_c_intel(fix->get_double_buffers()); } else { - particle_map(delxinv, delyinv, delzinv, shift, part2grid, - nupper, nlower, nxlo_out, nylo_out, nzlo_out, - nxhi_out, nyhi_out, nzhi_out, - fix->get_single_buffers()); - make_rho_c(fix->get_single_buffers()); + particle_map_intel(delxinv, delyinv, delzinv, shift, part2grid, + nupper, nlower, nxlo_out, nylo_out, nzlo_out, + nxhi_out, nyhi_out, nzhi_out, + fix->get_single_buffers()); + make_rho_c_intel(fix->get_single_buffers()); } gc->reverse_comm(Grid3d::KSPACE,this,REVERSE_RHO,1,sizeof(FFT_SCALAR), @@ -305,11 +294,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc_buf1,gc_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_c_ad(fix->get_mixed_buffers()); + fieldforce_c_ad_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_c_ad(fix->get_double_buffers()); + fieldforce_c_ad_intel(fix->get_double_buffers()); } else { - fieldforce_c_ad(fix->get_single_buffers()); + fieldforce_c_ad_intel(fix->get_single_buffers()); } if (vflag_atom) @@ -330,11 +319,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc_buf1,gc_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_c_ik(fix->get_mixed_buffers()); + fieldforce_c_ik_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_c_ik(fix->get_double_buffers()); + fieldforce_c_ik_intel(fix->get_double_buffers()); } else { - fieldforce_c_ik(fix->get_single_buffers()); + fieldforce_c_ik_intel(fix->get_single_buffers()); } if (evflag_atom) @@ -349,26 +338,26 @@ void PPPMDispIntel::compute(int eflag, int vflag) //perform calculations for geometric mixing if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_mixed_buffers()); - make_rho_g(fix->get_mixed_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_mixed_buffers()); + make_rho_g_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_double_buffers()); - make_rho_g(fix->get_double_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_double_buffers()); + make_rho_g_intel(fix->get_double_buffers()); } else { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_single_buffers()); - make_rho_g(fix->get_single_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_single_buffers()); + make_rho_g_intel(fix->get_single_buffers()); } gc6->reverse_comm(Grid3d::KSPACE,this,REVERSE_RHO_G,1,sizeof(FFT_SCALAR), @@ -390,11 +379,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_g_ad(fix->get_mixed_buffers()); + fieldforce_g_ad_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_g_ad(fix->get_double_buffers()); + fieldforce_g_ad_intel(fix->get_double_buffers()); } else { - fieldforce_g_ad(fix->get_single_buffers()); + fieldforce_g_ad_intel(fix->get_single_buffers()); } if (vflag_atom) @@ -415,11 +404,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_g_ik(fix->get_mixed_buffers()); + fieldforce_g_ik_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_g_ik(fix->get_double_buffers()); + fieldforce_g_ik_intel(fix->get_double_buffers()); } else { - fieldforce_g_ik(fix->get_single_buffers()); + fieldforce_g_ik_intel(fix->get_single_buffers()); } if (evflag_atom) @@ -434,26 +423,26 @@ void PPPMDispIntel::compute(int eflag, int vflag) //perform calculations for arithmetic mixing if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, - nxlo_out_6, nylo_out_6, nzlo_out_6, - nxhi_out_6, nyhi_out_6, nzhi_out_6, - fix->get_mixed_buffers()); - make_rho_a(fix->get_mixed_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, + nxlo_out_6, nylo_out_6, nzlo_out_6, + nxhi_out_6, nyhi_out_6, nzhi_out_6, + fix->get_mixed_buffers()); + make_rho_a_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_double_buffers()); - make_rho_a(fix->get_double_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_double_buffers()); + make_rho_a_intel(fix->get_double_buffers()); } else { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_single_buffers()); - make_rho_a(fix->get_single_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_single_buffers()); + make_rho_a_intel(fix->get_single_buffers()); } gc->reverse_comm(Grid3d::KSPACE,this,REVERSE_RHO_A,7,sizeof(FFT_SCALAR), @@ -486,11 +475,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_a_ad(fix->get_mixed_buffers()); + fieldforce_a_ad_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_a_ad(fix->get_double_buffers()); + fieldforce_a_ad_intel(fix->get_double_buffers()); } else { - fieldforce_a_ad(fix->get_single_buffers()); + fieldforce_a_ad_intel(fix->get_single_buffers()); } if (evflag_atom) @@ -529,11 +518,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_a_ik(fix->get_mixed_buffers()); + fieldforce_a_ik_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_a_ik(fix->get_double_buffers()); + fieldforce_a_ik_intel(fix->get_double_buffers()); } else { - fieldforce_a_ik(fix->get_single_buffers()); + fieldforce_a_ik_intel(fix->get_single_buffers()); } if (evflag_atom) @@ -549,26 +538,26 @@ void PPPMDispIntel::compute(int eflag, int vflag) // perform calculations if no mixing rule applies if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_mixed_buffers()); - make_rho_none(fix->get_mixed_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_mixed_buffers()); + make_rho_none_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_double_buffers()); - make_rho_none(fix->get_double_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_double_buffers()); + make_rho_none_intel(fix->get_double_buffers()); } else { - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, - part2grid_6, nupper_6, nlower_6, nxlo_out_6, - nylo_out_6, nzlo_out_6, nxhi_out_6, - nyhi_out_6, nzhi_out_6, - fix->get_single_buffers()); - make_rho_none(fix->get_single_buffers()); + particle_map_intel(delxinv_6, delyinv_6, delzinv_6, shift_6, + part2grid_6, nupper_6, nlower_6, nxlo_out_6, + nylo_out_6, nzlo_out_6, nxhi_out_6, + nyhi_out_6, nzhi_out_6, + fix->get_single_buffers()); + make_rho_none_intel(fix->get_single_buffers()); } gc->reverse_comm(Grid3d::KSPACE,this,REVERSE_RHO_NONE,1,sizeof(FFT_SCALAR), @@ -591,11 +580,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_none_ad(fix->get_mixed_buffers()); + fieldforce_none_ad_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_none_ad(fix->get_double_buffers()); + fieldforce_none_ad_intel(fix->get_double_buffers()); } else { - fieldforce_none_ad(fix->get_single_buffers()); + fieldforce_none_ad_intel(fix->get_single_buffers()); } if (vflag_atom) @@ -620,11 +609,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) gc6_buf1,gc6_buf2,MPI_FFT_SCALAR); if (fix->precision() == FixIntel::PREC_MODE_MIXED) { - fieldforce_none_ik(fix->get_mixed_buffers()); + fieldforce_none_ik_intel(fix->get_mixed_buffers()); } else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - fieldforce_none_ik(fix->get_double_buffers()); + fieldforce_none_ik_intel(fix->get_double_buffers()); } else { - fieldforce_none_ik(fix->get_single_buffers()); + fieldforce_none_ik_intel(fix->get_single_buffers()); } if (evflag_atom) @@ -730,11 +719,11 @@ void PPPMDispIntel::compute(int eflag, int vflag) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::particle_map(double delx, double dely, double delz, - double sft, int** p2g, int nup, int nlow, - int nxlo, int nylo, int nzlo, - int nxhi, int nyhi, int nzhi, - IntelBuffers * /*buffers*/) +void PPPMDispIntel::particle_map_intel(double delx, double dely, double delz, + double sft, int** p2g, int nup, int nlow, + int nxlo, int nylo, int nzlo, + int nxhi, int nyhi, int nzhi, + IntelBuffers * /*buffers*/) { int nlocal = atom->nlocal; int nthr = comm->nthreads; @@ -805,7 +794,7 @@ void PPPMDispIntel::particle_map(double delx, double dely, double delz, ------------------------------------------------------------------------- */ template -void PPPMDispIntel::make_rho_c(IntelBuffers * /*buffers*/) +void PPPMDispIntel::make_rho_c_intel(IntelBuffers * /*buffers*/) { // clear 3d density array @@ -968,7 +957,7 @@ void PPPMDispIntel::make_rho_c(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::make_rho_g(IntelBuffers * /*buffers*/) +void PPPMDispIntel::make_rho_g_intel(IntelBuffers * /*buffers*/) { // clear 3d density array @@ -1134,7 +1123,7 @@ void PPPMDispIntel::make_rho_g(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::make_rho_a(IntelBuffers * /*buffers*/) +void PPPMDispIntel::make_rho_a_intel(IntelBuffers * /*buffers*/) { // clear 3d density array @@ -1268,7 +1257,7 @@ void PPPMDispIntel::make_rho_a(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::make_rho_none(IntelBuffers * /*buffers*/) +void PPPMDispIntel::make_rho_none_intel(IntelBuffers * /*buffers*/) { FFT_SCALAR * _noalias global_density = &(density_brick_none[0][nzlo_out_6][nylo_out_6][nxlo_out_6]); @@ -1428,7 +1417,7 @@ void PPPMDispIntel::make_rho_none(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_c_ik(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_c_ik_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -1587,7 +1576,7 @@ void PPPMDispIntel::fieldforce_c_ik(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_c_ad(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_c_ad_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -1808,7 +1797,7 @@ void PPPMDispIntel::fieldforce_c_ad(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_g_ik(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_g_ik_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -1964,7 +1953,7 @@ void PPPMDispIntel::fieldforce_g_ik(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_g_ad(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_g_ad_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -2180,7 +2169,7 @@ void PPPMDispIntel::fieldforce_g_ad(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_a_ik(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_a_ik_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -2405,7 +2394,7 @@ void PPPMDispIntel::fieldforce_a_ik(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_a_ad(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_a_ad_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -2733,7 +2722,7 @@ void PPPMDispIntel::fieldforce_a_ad(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_none_ik(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_none_ik_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points @@ -2906,7 +2895,7 @@ void PPPMDispIntel::fieldforce_none_ik(IntelBuffers * /*buffers*/) ------------------------------------------------------------------------- */ template -void PPPMDispIntel::fieldforce_none_ad(IntelBuffers * /*buffers*/) +void PPPMDispIntel::fieldforce_none_ad_intel(IntelBuffers * /*buffers*/) { // loop over my charges, interpolate electric field from nearby grid points // (nx,ny,nz) = global coords of grid pt to "lower left" of charge diff --git a/src/INTEL/pppm_disp_intel.h b/src/INTEL/pppm_disp_intel.h index 20c59c00e8f..11fdd056381 100644 --- a/src/INTEL/pppm_disp_intel.h +++ b/src/INTEL/pppm_disp_intel.h @@ -86,137 +86,137 @@ class PPPMDispIntel : public PPPMDisp { #endif template - void particle_map(double, double, double, double, int **, int, int, int, int, int, int, int, int, - IntelBuffers *buffers); + void particle_map_intel(double, double, double, double, int **, int, int, int, int, int, int, int, int, + IntelBuffers *buffers); template - void make_rho_c(IntelBuffers *buffers); - template void make_rho_c(IntelBuffers *buffers) + void make_rho_c_intel(IntelBuffers *buffers); + template void make_rho_c_intel(IntelBuffers *buffers) { if (_use_table == 1) { - make_rho_c(buffers); + make_rho_c_intel(buffers); } else { - make_rho_c(buffers); + make_rho_c_intel(buffers); } } template - void make_rho_g(IntelBuffers *buffers); - template void make_rho_g(IntelBuffers *buffers) + void make_rho_g_intel(IntelBuffers *buffers); + template void make_rho_g_intel(IntelBuffers *buffers) { if (_use_table == 1) { - make_rho_g(buffers); + make_rho_g_intel(buffers); } else { - make_rho_g(buffers); + make_rho_g_intel(buffers); } } template - void make_rho_a(IntelBuffers *buffers); - template void make_rho_a(IntelBuffers *buffers) + void make_rho_a_intel(IntelBuffers *buffers); + template void make_rho_a_intel(IntelBuffers *buffers) { if (_use_table == 1) { - make_rho_a(buffers); + make_rho_a_intel(buffers); } else { - make_rho_a(buffers); + make_rho_a_intel(buffers); } } template - void make_rho_none(IntelBuffers *buffers); - template void make_rho_none(IntelBuffers *buffers) + void make_rho_none_intel(IntelBuffers *buffers); + template void make_rho_none_intel(IntelBuffers *buffers) { if (_use_table == 1) { - make_rho_none(buffers); + make_rho_none_intel(buffers); } else { - make_rho_none(buffers); + make_rho_none_intel(buffers); } } template - void fieldforce_c_ik(IntelBuffers *buffers); - template void fieldforce_c_ik(IntelBuffers *buffers) + void fieldforce_c_ik_intel(IntelBuffers *buffers); + template void fieldforce_c_ik_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_c_ik(buffers); + fieldforce_c_ik_intel(buffers); } else { - fieldforce_c_ik(buffers); + fieldforce_c_ik_intel(buffers); } } template - void fieldforce_c_ad(IntelBuffers *buffers); - template void fieldforce_c_ad(IntelBuffers *buffers) + void fieldforce_c_ad_intel(IntelBuffers *buffers); + template void fieldforce_c_ad_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_c_ad(buffers); + fieldforce_c_ad_intel(buffers); } else { - fieldforce_c_ad(buffers); + fieldforce_c_ad_intel(buffers); } } template - void fieldforce_g_ik(IntelBuffers *buffers); - template void fieldforce_g_ik(IntelBuffers *buffers) + void fieldforce_g_ik_intel(IntelBuffers *buffers); + template void fieldforce_g_ik_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_g_ik(buffers); + fieldforce_g_ik_intel(buffers); } else { - fieldforce_g_ik(buffers); + fieldforce_g_ik_intel(buffers); } } template - void fieldforce_g_ad(IntelBuffers *buffers); - template void fieldforce_g_ad(IntelBuffers *buffers) + void fieldforce_g_ad_intel(IntelBuffers *buffers); + template void fieldforce_g_ad_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_g_ad(buffers); + fieldforce_g_ad_intel(buffers); } else { - fieldforce_g_ad(buffers); + fieldforce_g_ad_intel(buffers); } } template - void fieldforce_a_ik(IntelBuffers *buffers); - template void fieldforce_a_ik(IntelBuffers *buffers) + void fieldforce_a_ik_intel(IntelBuffers *buffers); + template void fieldforce_a_ik_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_a_ik(buffers); + fieldforce_a_ik_intel(buffers); } else { - fieldforce_a_ik(buffers); + fieldforce_a_ik_intel(buffers); } } template - void fieldforce_a_ad(IntelBuffers *buffers); - template void fieldforce_a_ad(IntelBuffers *buffers) + void fieldforce_a_ad_intel(IntelBuffers *buffers); + template void fieldforce_a_ad_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_a_ad(buffers); + fieldforce_a_ad_intel(buffers); } else { - fieldforce_a_ad(buffers); + fieldforce_a_ad_intel(buffers); } } template - void fieldforce_none_ik(IntelBuffers *buffers); - template void fieldforce_none_ik(IntelBuffers *buffers) + void fieldforce_none_ik_intel(IntelBuffers *buffers); + template void fieldforce_none_ik_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_none_ik(buffers); + fieldforce_none_ik_intel(buffers); } else { - fieldforce_none_ik(buffers); + fieldforce_none_ik_intel(buffers); } } template - void fieldforce_none_ad(IntelBuffers *buffers); - template void fieldforce_none_ad(IntelBuffers *buffers) + void fieldforce_none_ad_intel(IntelBuffers *buffers); + template void fieldforce_none_ad_intel(IntelBuffers *buffers) { if (_use_table == 1) { - fieldforce_none_ad(buffers); + fieldforce_none_ad_intel(buffers); } else { - fieldforce_none_ad(buffers); + fieldforce_none_ad_intel(buffers); } } diff --git a/src/INTEL/pppm_electrode_intel.cpp b/src/INTEL/pppm_electrode_intel.cpp index 5cb62dc5d25..076ea5dd5dc 100644 --- a/src/INTEL/pppm_electrode_intel.cpp +++ b/src/INTEL/pppm_electrode_intel.cpp @@ -42,29 +42,20 @@ #include "update.h" #include "wire_dipole.h" +#include #include #include using namespace LAMMPS_NS; using namespace std; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 +static constexpr int OFFSET = 16384; enum { REVERSE_RHO }; enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; enum : bool { ELECTRODE = true, ELECTROLYTE = false }; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; static const char cite_pppm_electrode[] = "kspace_style pppm/electrode command:\n\n" @@ -169,7 +160,6 @@ void PPPMElectrodeIntel::setup() PPPMIntel::setup(); prd[0] /= wire_volfactor; prd[1] /= wire_volfactor; - } void PPPMElectrodeIntel::compute(int eflag, int vflag) @@ -285,7 +275,7 @@ void PPPMElectrodeIntel::compute(int eflag, int vflag) slabflag = 0; // bypass compute_second's slabcorr() PPPMIntel::compute_second(eflag, vflag); slabflag = tempslabflag; - boundcorr->compute_corr(qsum, eflag_atom, eflag_global, energy, eatom); + boundcorr->compute_corr(qsum, eflag_atom, eflag_global, energy, eatom); compute_vector_called = false; } @@ -338,7 +328,7 @@ void PPPMElectrodeIntel::compute_vector(double *vec, int sensor_grpbit, int sour // electrolyte density (without writing an additional function) FFT_SCALAR ***density_brick_real = density_brick; FFT_SCALAR *density_fft_real = density_fft; - if (neighbor->ago != 0) pack_buffers(); // since midstep positions may be outdated + if (neighbor->ago != 0) pack_buffers(); // since midstep positions may be outdated switch (fix->precision()) { case FixIntel::PREC_MODE_MIXED: make_rho_in_brick(fix->get_mixed_buffers(), source_grpbit, @@ -420,7 +410,9 @@ void PPPMElectrodeIntel::project_psi(IntelBuffers *buffers, double #endif { int *mask = atom->mask; - const flt_t scaleinv = 1.0 / (nx_pppm * ny_pppm * nz_pppm); + + const bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + const flt_t scaleinv = 1.0 / ngridtotal; const flt_t lo0 = boxlo[0]; const flt_t lo1 = boxlo[1]; @@ -1205,22 +1197,23 @@ void PPPMElectrodeIntel::pack_buffers_q() { fix->start_watch(TIME_PACK); int packthreads; - if (comm->nthreads > INTEL_HTHREADS) packthreads = comm->nthreads; - else packthreads = 1; - #if defined(_OPENMP) - #pragma omp parallel if (packthreads > 1) - #endif + if (comm->nthreads > INTEL_HTHREADS) + packthreads = comm->nthreads; + else + packthreads = 1; +#if defined(_OPENMP) +#pragma omp parallel if (packthreads > 1) +#endif { int ifrom, ito, tid; - IP_PRE_omp_range_id_align(ifrom, ito, tid, atom->nlocal+atom->nghost, - packthreads, - sizeof(IntelBuffers::atom_t)); + IP_PRE_omp_range_id_align(ifrom, ito, tid, atom->nlocal + atom->nghost, packthreads, + sizeof(IntelBuffers::atom_t)); if (fix->precision() == FixIntel::PREC_MODE_MIXED) - fix->get_mixed_buffers()->thr_pack_q(ifrom,ito); + fix->get_mixed_buffers()->thr_pack_q(ifrom, ito); else if (fix->precision() == FixIntel::PREC_MODE_DOUBLE) - fix->get_double_buffers()->thr_pack_q(ifrom,ito); + fix->get_double_buffers()->thr_pack_q(ifrom, ito); else - fix->get_single_buffers()->thr_pack_q(ifrom,ito); + fix->get_single_buffers()->thr_pack_q(ifrom, ito); } fix->stop_watch(TIME_PACK); } diff --git a/src/INTEL/pppm_electrode_intel.h b/src/INTEL/pppm_electrode_intel.h index bfe325d9a1d..e61641ea19f 100644 --- a/src/INTEL/pppm_electrode_intel.h +++ b/src/INTEL/pppm_electrode_intel.h @@ -29,12 +29,9 @@ KSpaceStyle(pppm/electrode/intel,PPPMElectrodeIntel) #ifndef LMP_PPPM_ELECTRODE_INTEL_H #define LMP_PPPM_ELECTRODE_INTEL_H -#include "boundary_correction.h" #include "electrode_kspace.h" #include "fix_intel.h" -#include "pppm.h" #include "pppm_intel.h" -#include namespace LAMMPS_NS { diff --git a/src/INTEL/pppm_intel.cpp b/src/INTEL/pppm_intel.cpp index f67b3a89b39..369c8241420 100644 --- a/src/INTEL/pppm_intel.cpp +++ b/src/INTEL/pppm_intel.cpp @@ -41,22 +41,11 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 - -enum{REVERSE_RHO}; -enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr int OFFSET = 16384; +static constexpr FFT_SCALAR ZEROF = 0.0; + +enum { REVERSE_RHO }; +enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -156,8 +145,6 @@ void PPPMIntel::compute(int eflag, int vflag) void PPPMIntel::compute_first(int eflag, int vflag) { - int i,j; - // set energy/virial flags // invoke allocate_peratom() if needed for first time @@ -465,7 +452,6 @@ void PPPMIntel::make_rho(IntelBuffers *buffers) const flt_t xi = delxinv; const flt_t yi = delyinv; const flt_t zi = delzinv; - const flt_t fshift = shift; const flt_t fshiftone = shiftone; const flt_t fdelvolinv = delvolinv; @@ -698,8 +684,6 @@ void PPPMIntel::fieldforce_ik(IntelBuffers *buffers) _alignvar(FFT_SCALAR ekx_arr[INTEL_P3M_ALIGNED_MAXORDER], 64) = {0}; _alignvar(FFT_SCALAR eky_arr[INTEL_P3M_ALIGNED_MAXORDER], 64) = {0}; _alignvar(FFT_SCALAR ekz_arr[INTEL_P3M_ALIGNED_MAXORDER], 64) = {0}; - _alignvar(FFT_SCALAR ekxy_arr[2 * INTEL_P3M_ALIGNED_MAXORDER], 64) = {0}; - _alignvar(FFT_SCALAR ekz0_arr[2 * INTEL_P3M_ALIGNED_MAXORDER], 64) = {0}; #if defined(LMP_SIMD_COMPILER) #pragma loop_count min(2), max(INTEL_P3M_ALIGNED_MAXORDER), avg(7) diff --git a/src/INTERLAYER/pair_aip_water_2dm.cpp b/src/INTERLAYER/pair_aip_water_2dm.cpp index 6e2bf7228d1..2c6b222d450 100644 --- a/src/INTERLAYER/pair_aip_water_2dm.cpp +++ b/src/INTERLAYER/pair_aip_water_2dm.cpp @@ -24,15 +24,8 @@ #include "error.h" #include "force.h" -#include -#include - using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define DELTA 4 -#define PGDELTA 1 - static const char cite_aip_water[] = "aip/water/2dm potential doi/10.1021/acs.jpcc.2c08464\n" "@Article{Feng2023\n" diff --git a/src/INTERLAYER/pair_drip.cpp b/src/INTERLAYER/pair_drip.cpp index 90773b40342..2800bd604da 100644 --- a/src/INTERLAYER/pair_drip.cpp +++ b/src/INTERLAYER/pair_drip.cpp @@ -36,9 +36,8 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define DELTA 4 -#define HALF 0.5 +static constexpr int DELTA = 4; +static constexpr double HALF = 0.5; // inline functions static inline double dot(double const *x, double const *y) diff --git a/src/INTERLAYER/pair_ilp_graphene_hbn.cpp b/src/INTERLAYER/pair_ilp_graphene_hbn.cpp index 69896d7c0b9..a3e3a833c3f 100644 --- a/src/INTERLAYER/pair_ilp_graphene_hbn.cpp +++ b/src/INTERLAYER/pair_ilp_graphene_hbn.cpp @@ -39,8 +39,8 @@ using namespace LAMMPS_NS; using namespace InterLayer; -#define DELTA 4 -#define PGDELTA 1 +static constexpr int DELTA = 4; +static constexpr int PGDELTA = 1; static const char cite_ilp[] = "ilp/graphene/hbn potential doi:10.1021/acs.nanolett.8b02848\n" diff --git a/src/INTERLAYER/pair_ilp_tmd.h b/src/INTERLAYER/pair_ilp_tmd.h index 8381c2e8306..7e7edbb01b0 100644 --- a/src/INTERLAYER/pair_ilp_tmd.h +++ b/src/INTERLAYER/pair_ilp_tmd.h @@ -20,7 +20,7 @@ PairStyle(ilp/tmd,PairILPTMD); #ifndef LMP_PAIR_ILP_TMD_H #define LMP_PAIR_ILP_TMD_H -#include "pair_ilp_graphene_hbn.h" +#include "pair_ilp_graphene_hbn.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp index ad42ba1922d..6bc3a6dde78 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp @@ -40,9 +40,8 @@ using namespace LAMMPS_NS; using namespace InterLayer; -#define MAXLINE 1024 -#define DELTA 4 -#define PGDELTA 1 +static constexpr int DELTA = 4; +static constexpr int PGDELTA = 1; static const char cite_kc[] = "kolmogorov/crespi/full potential doi:10.1021/acs.nanolett.8b02848\n" diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp index d8f0d798e43..dc1b82647ac 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp @@ -37,8 +37,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/INTERLAYER/pair_lebedeva_z.cpp b/src/INTERLAYER/pair_lebedeva_z.cpp index b38900ad14f..b68db0184fc 100644 --- a/src/INTERLAYER/pair_lebedeva_z.cpp +++ b/src/INTERLAYER/pair_lebedeva_z.cpp @@ -39,8 +39,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/INTERLAYER/pair_saip_metal.cpp b/src/INTERLAYER/pair_saip_metal.cpp index bd327391a42..30531138945 100644 --- a/src/INTERLAYER/pair_saip_metal.cpp +++ b/src/INTERLAYER/pair_saip_metal.cpp @@ -33,10 +33,6 @@ using namespace LAMMPS_NS; using namespace InterLayer; -#define MAXLINE 1024 -#define DELTA 4 -#define PGDELTA 1 - static const char cite_saip[] = "saip/metal potential: doi:10.1021/acs.jctc.1c00622\n\n" "@Article{Ouyang2021\n" diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 1f4f84e6480..c0ec0ee28e0 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -70,6 +70,8 @@ #include "modify.h" #include "update.h" +#include "fmt/ranges.h" + #include #include @@ -79,7 +81,7 @@ extern "C" { using namespace LAMMPS_NS; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -279,7 +281,8 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(const std::string &input_line) con if (fp == nullptr) error->one(FLERR, "Parameter file {} not found", filename); } - char line[MAXLINE], *ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int n, eof = 0; while (true) { diff --git a/src/KIM/kim_param.cpp b/src/KIM/kim_param.cpp index f72df819899..c50474fe67e 100644 --- a/src/KIM/kim_param.cpp +++ b/src/KIM/kim_param.cpp @@ -68,6 +68,8 @@ #include "pair_kim.h" #include "variable.h" +#include "fmt/ranges.h" + #include #include #include diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index af80420d7a9..75949c35d8a 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -106,6 +106,8 @@ action compute_temp_kokkos.cpp action compute_temp_kokkos.h action dihedral_charmm_kokkos.cpp dihedral_charmm.cpp action dihedral_charmm_kokkos.h dihedral_charmm.h +action dihedral_charmmfsw_kokkos.cpp dihedral_charmmfsw.cpp +action dihedral_charmmfsw_kokkos.h dihedral_charmmfsw.h action dihedral_class2_kokkos.cpp dihedral_class2.cpp action dihedral_class2_kokkos.h dihedral_class2.h action dihedral_harmonic_kokkos.cpp dihedral_harmonic.cpp @@ -185,6 +187,8 @@ action fix_temp_rescale_kokkos.cpp action fix_temp_rescale_kokkos.h action fix_viscous_kokkos.cpp action fix_viscous_kokkos.h +action fix_wall_flow_kokkos.cpp fix_wall_flow.cpp +action fix_wall_flow_kokkos.h fix_wall_flow.h action fix_wall_gran_kokkos.cpp fix_wall_gran.cpp action fix_wall_gran_kokkos.h fix_wall_gran.h action fix_wall_gran_old.cpp fix_wall_gran.cpp @@ -310,6 +314,8 @@ action pair_lj_charmm_coul_charmm_kokkos.cpp pair_lj_charmm_coul_charmm.cpp action pair_lj_charmm_coul_charmm_kokkos.h pair_lj_charmm_coul_charmm.h action pair_lj_charmm_coul_long_kokkos.cpp pair_lj_charmm_coul_long.cpp action pair_lj_charmm_coul_long_kokkos.h pair_lj_charmm_coul_long.h +action pair_lj_charmmfsw_coul_long_kokkos.cpp pair_lj_charmmfsw_coul_long.cpp +action pair_lj_charmmfsw_coul_long_kokkos.h pair_lj_charmmfsw_coul_long.h action pair_lj_class2_coul_cut_kokkos.cpp pair_lj_class2_coul_cut.cpp action pair_lj_class2_coul_cut_kokkos.h pair_lj_class2_coul_cut.h action pair_lj_class2_coul_long_kokkos.cpp pair_lj_class2_coul_long.cpp diff --git a/src/KOKKOS/angle_charmm_kokkos.cpp b/src/KOKKOS/angle_charmm_kokkos.cpp index 8b41a934514..666002686cf 100644 --- a/src/KOKKOS/angle_charmm_kokkos.cpp +++ b/src/KOKKOS/angle_charmm_kokkos.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/angle_class2_kokkos.cpp b/src/KOKKOS/angle_class2_kokkos.cpp index 8f77ab4c94b..e831ae22834 100644 --- a/src/KOKKOS/angle_class2_kokkos.cpp +++ b/src/KOKKOS/angle_class2_kokkos.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/angle_cosine_kokkos.cpp b/src/KOKKOS/angle_cosine_kokkos.cpp index 189a1568662..768dfd43ca4 100644 --- a/src/KOKKOS/angle_cosine_kokkos.cpp +++ b/src/KOKKOS/angle_cosine_kokkos.cpp @@ -31,8 +31,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/angle_harmonic_kokkos.cpp b/src/KOKKOS/angle_harmonic_kokkos.cpp index 1d8ada4bd98..d7be418326c 100644 --- a/src/KOKKOS/angle_harmonic_kokkos.cpp +++ b/src/KOKKOS/angle_harmonic_kokkos.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index c55c1d315bb..6707deddd55 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -16,7 +16,7 @@ #include "atom_masks.h" #include "atom_vec.h" #include "atom_vec_kokkos.h" -#include "comm_kokkos.h" +#include "comm.h" #include "domain.h" #include "error.h" #include "kokkos.h" @@ -298,15 +298,17 @@ void AtomKokkos::grow(unsigned int mask) return index in ivector or dvector of its location ------------------------------------------------------------------------- */ -int AtomKokkos::add_custom(const char *name, int flag, int cols) +int AtomKokkos::add_custom(const char *name, int flag, int cols, int ghost) { - int index; + int index = -1; if (flag == 0 && cols == 0) { index = nivector; nivector++; ivname = (char **) memory->srealloc(ivname, nivector * sizeof(char *), "atom:ivname"); ivname[index] = utils::strdup(name); + ivghost = (int *) memory->srealloc(ivghost,nivector * sizeof(int),"atom:ivghost"); + ivghost[index] = ghost; ivector = (int **) memory->srealloc(ivector, nivector * sizeof(int *), "atom:ivector"); memory->create(ivector[index], nmax, "atom:ivector"); @@ -315,6 +317,8 @@ int AtomKokkos::add_custom(const char *name, int flag, int cols) ndvector++; dvname = (char **) memory->srealloc(dvname, ndvector * sizeof(char *), "atom:dvname"); dvname[index] = utils::strdup(name); + dvghost = (int *) memory->srealloc(dvghost, ndvector * sizeof(int), "atom:dvghost"); + dvghost[index] = ghost; dvector = (double **) memory->srealloc(dvector, ndvector * sizeof(double *), "atom:dvector"); this->sync(Device, DVECTOR_MASK); memoryKK->grow_kokkos(k_dvector, dvector, ndvector, nmax, "atom:dvector"); @@ -325,6 +329,8 @@ int AtomKokkos::add_custom(const char *name, int flag, int cols) niarray++; ianame = (char **) memory->srealloc(ianame, niarray * sizeof(char *), "atom:ianame"); ianame[index] = utils::strdup(name); + iaghost = (int *) memory->srealloc(iaghost, niarray * sizeof(int), "atom:iaghost"); + iaghost[index] = ghost; iarray = (int ***) memory->srealloc(iarray, niarray * sizeof(int **), "atom:iarray"); memory->create(iarray[index], nmax, cols, "atom:iarray"); @@ -336,6 +342,8 @@ int AtomKokkos::add_custom(const char *name, int flag, int cols) ndarray++; daname = (char **) memory->srealloc(daname, ndarray * sizeof(char *), "atom:daname"); daname[index] = utils::strdup(name); + daghost = (int *) memory->srealloc(daghost, ndarray * sizeof(int), "atom:daghost"); + daghost[index] = ghost; darray = (double ***) memory->srealloc(darray, ndarray * sizeof(double **), "atom:darray"); memory->create(darray[index], nmax, cols, "atom:darray"); @@ -343,6 +351,9 @@ int AtomKokkos::add_custom(const char *name, int flag, int cols) dcols[index] = cols; } + if (index < 0) + error->all(FLERR,"Invalid call to AtomKokkos::add_custom()"); + return index; } diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index 6a3036375d0..669c8b510a0 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -88,8 +88,25 @@ class AtomKokkos : public Atom { DAT::tdual_int_1d k_map_array; dual_hash_type k_map_hash; - DAT::t_tagint_1d d_tag_sorted; - DAT::t_int_1d d_i_sorted; + struct KeyValue { + int i; + bigint tag; + }; + + typedef Kokkos::View t_keyvalue_1d; + t_keyvalue_1d d_sorted; + + struct MyComp { + KOKKOS_FUNCTION + bool operator()(const KeyValue& a, const KeyValue& b) const + { + if (a.tag < b.tag) + return true; + if (b.tag < a.tag) + return false; + return a.i < b.i; + } + }; typedef Kokkos::DualView tdual_tagint_2; typedef tdual_tagint_2::t_dev t_tagint_2; @@ -101,10 +118,6 @@ class AtomKokkos : public Atom { DAT::t_tagint_scalar d_tag_min,d_tag_max; HAT::t_tagint_scalar h_tag_min,h_tag_max; - using MapKeyViewType = decltype(d_tag_sorted); - using BinOpMap = Kokkos::BinOp1D; - Kokkos::BinSort Sorter; - class AtomVecKokkos* avecKK; // map lookup function inlined for efficiency @@ -153,9 +166,13 @@ class AtomKokkos : public Atom { void sync_overlapping_device(const ExecutionSpace space, unsigned int mask); void sort() override; virtual void grow(unsigned int mask); - int add_custom(const char *, int, int) override; + int add_custom(const char *, int, int, int border = 0) override; void remove_custom(int, int, int) override; virtual void deallocate_topology(); + + void map_set_device(); + void map_set_host(); + private: void sort_device(); class AtomVec *new_avec(const std::string &, int, int &) override; diff --git a/src/KOKKOS/atom_map_kokkos.cpp b/src/KOKKOS/atom_map_kokkos.cpp index 06516e41421..2c4c58ee197 100644 --- a/src/KOKKOS/atom_map_kokkos.cpp +++ b/src/KOKKOS/atom_map_kokkos.cpp @@ -16,16 +16,12 @@ #include "atom_masks.h" #include "comm.h" #include "error.h" -#include "fix.h" +#include "kokkos.h" #include "memory_kokkos.h" -#include "modify.h" -#include "neighbor_kokkos.h" - -#include using namespace LAMMPS_NS; -#define EXTRA 1000 +static constexpr int EXTRA = 1000; /* ---------------------------------------------------------------------- allocate and initialize array or hash table for global -> local map @@ -34,6 +30,8 @@ using namespace LAMMPS_NS; set entire array to -1 as initial values for hash option: map_nhash = length of hash table + map_nbucket = # of hash buckets, prime larger than map_nhash * 2 + so buckets will only be filled with 0 or 1 atoms on average ------------------------------------------------------------------------- */ void AtomKokkos::map_init(int check) @@ -46,19 +44,29 @@ void AtomKokkos::map_init(int check) int recreate = 0; if (check) recreate = map_style_set(); - if (map_style == MAP_ARRAY && map_tag_max > map_maxarray) - recreate = 1; - else if (map_style == MAP_HASH && nlocal + nghost > map_nhash) - recreate = 1; + if (map_style == MAP_ARRAY && map_tag_max > map_maxarray) recreate = 1; + else if (map_style == MAP_HASH && nlocal+nghost > map_nhash) recreate = 1; // if not recreating: // for array, initialize current map_tag_max values // for hash, set all buckets to empty, put all entries in free list if (!recreate) { - map_clear(); + if (lmp->kokkos->atom_map_classic) { + if (map_style == MAP_ARRAY) { + for (int i = 0; i <= map_tag_max; i++) map_array[i] = -1; + } else { + for (int i = 0; i < map_nbucket; i++) map_bucket[i] = -1; + map_nused = 0; + map_free = 0; + for (int i = 0; i < map_nhash; i++) map_hash[i].next = i+1; + if (map_nhash > 0) map_hash[map_nhash-1].next = -1; + } + } else { + map_clear(); + } - // recreating: delete old map and create new one for array or hash + // recreating: delete old map and create new one for array or hash } else { map_delete(); @@ -66,8 +74,7 @@ void AtomKokkos::map_init(int check) if (map_style == MAP_ARRAY) { map_maxarray = map_tag_max; memoryKK->create_kokkos(k_map_array, map_array, map_maxarray + 1, "atom:map_array"); - Kokkos::deep_copy(k_map_array.d_view,-1); - k_map_array.modify_device(); + map_clear(); } else { @@ -76,14 +83,38 @@ void AtomKokkos::map_init(int check) // multiply by 2, require at least 1000 // doubling means hash table will need to be re-init only rarely - int nper = static_cast(natoms / comm->nprocs); - map_nhash = MAX(nper, nmax); + int nper = static_cast (natoms/comm->nprocs); + map_nhash = MAX(nper,nmax); map_nhash *= 2; - map_nhash = MAX(map_nhash, 1000); + map_nhash = MAX(map_nhash,1000); + + if (lmp->kokkos->atom_map_classic) { + // map_nbucket = prime just larger than map_nhash + // next_prime() should be fast enough, + // about 10% of odd integers are prime above 1M + + map_nbucket = next_prime(map_nhash); + + // set all buckets to empty + // set hash to map_nhash in length + // put all hash entries in free list and point them to each other + + map_bucket = new int[map_nbucket]; + for (int i = 0; i < map_nbucket; i++) map_bucket[i] = -1; + + map_hash = new HashElem[map_nhash]; + map_nused = 0; + map_free = 0; + for (int i = 0; i < map_nhash; i++) map_hash[i].next = i + 1; + map_hash[map_nhash - 1].next = -1; + } k_map_hash = dual_hash_type(map_nhash); } } + + if (lmp->kokkos->atom_map_classic) + if (map_style == MAP_ARRAY) k_map_array.modify_host(); } /* ---------------------------------------------------------------------- @@ -94,12 +125,23 @@ void AtomKokkos::map_init(int check) void AtomKokkos::map_clear() { - if (map_style == Atom::MAP_ARRAY) { - Kokkos::deep_copy(k_map_array.d_view,-1); - k_map_array.modify_device(); + if (map_style == MAP_ARRAY) { + if (lmp->kokkos->atom_map_classic) { + Kokkos::deep_copy(k_map_array.h_view,-1); + k_map_array.modify_host(); + } else { + Kokkos::deep_copy(k_map_array.d_view,-1); + k_map_array.modify_device(); + } } else { - k_map_hash.d_view.clear(); - k_map_hash.modify_device(); + if (lmp->kokkos->atom_map_classic) { + Atom::map_clear(); + k_map_hash.h_view.clear(); + k_map_hash.modify_host(); + } else { + k_map_hash.d_view.clear(); + k_map_hash.modify_device(); + } } } @@ -114,6 +156,16 @@ void AtomKokkos::map_clear() ------------------------------------------------------------------------- */ void AtomKokkos::map_set() +{ + if (lmp->kokkos->atom_map_classic) + map_set_host(); + else + map_set_device(); +} + +/* ---------------------------------------------------------------------- */ + +void AtomKokkos::map_set_device() { int nall = nlocal + nghost; @@ -138,128 +190,64 @@ void AtomKokkos::map_set() atomKK->sync(Device, TAG_MASK); + int map_style_array = (map_style == MAP_ARRAY); + auto d_tag = atomKK->k_tag.d_view; auto d_sametag = k_sametag.d_view; - // sort by tag - int nmax = atom->nmax; - int realloc_flag = 0; - if (d_tag_sorted.extent(0) < nmax) { - MemKK::realloc_kokkos(d_tag_sorted,"atom:tag_sorted",nmax); - MemKK::realloc_kokkos(d_i_sorted,"atom:i_sorted",nmax); - realloc_flag = 1; - } - - h_tag_min() = MAXTAGINT; - h_tag_max() = 0; + // sort by tag then local id - Kokkos::deep_copy(d_tag_min_max,h_tag_min_max); + if (!d_sorted.data() || (int)d_sorted.extent(0) < nmax) + MemKK::realloc_kokkos(d_sorted,"atom:sorted",nmax); - auto l_tag_sorted = d_tag_sorted; - auto l_i_sorted = d_i_sorted; - auto l_tag_min = d_tag_min; - auto l_tag_max = d_tag_max; - int map_style_array = (map_style == MAP_ARRAY); + auto l_sorted = Kokkos::subview(d_sorted,std::make_pair(0,nall)); Kokkos::parallel_for(nall, LAMMPS_LAMBDA(int i) { - l_i_sorted(i) = i; - tagint tag_i = d_tag(i); - l_tag_sorted(i) = tag_i; - Kokkos::atomic_min(&l_tag_min(),tag_i); - Kokkos::atomic_max(&l_tag_max(),tag_i); + l_sorted(i).i = i; + l_sorted(i).tag = d_tag(i); }); - Kokkos::deep_copy(h_tag_min_max,d_tag_min_max); - - tagint min = h_tag_min(); - tagint max = h_tag_max(); - - using MapKeyViewType = decltype(d_tag_sorted); - using BinOpMap = Kokkos::BinOp1D; - - auto binner = BinOpMap(nall, min, max); - - if (!Sorter.bin_offsets.data() || realloc_flag) { - Sorter = Kokkos::BinSort(d_tag_sorted, 0, nall, binner, true); - MemKK::realloc_kokkos(Sorter.bin_count_atomic,"Kokkos::SortImpl::BinSortFunctor::bin_count",nmax+1); - Kokkos::deep_copy(Sorter.bin_count_atomic,0); - Sorter.bin_count_const = Sorter.bin_count_atomic; - MemKK::realloc_kokkos(Sorter.bin_offsets,"Kokkos::SortImpl::BinSortFunctor::bin_offsets",nmax+1); - MemKK::realloc_kokkos(Sorter.sort_order,"Kokkos::SortImpl::BinSortFunctor::sort_order",nmax); - } else { - Kokkos::deep_copy(Sorter.bin_count_atomic,0); - Sorter.bin_op = binner; - Sorter.range_begin = 0; - Sorter.range_end = nall; - } - - Sorter.create_permute_vector(LMPDeviceType()); - Sorter.sort(LMPDeviceType(), d_tag_sorted, 0, nall); - Sorter.sort(LMPDeviceType(), d_i_sorted, 0, nall); + Kokkos::sort(LMPDeviceType(),l_sorted,MyComp{}); auto d_map_array = k_map_array.d_view; auto d_map_hash = k_map_hash.d_view; - d_map_hash.clear(); + if (!map_style_array) + d_map_hash.clear(); auto d_error_flag = k_error_flag.d_view; Kokkos::deep_copy(d_error_flag,0); - // for each tag find: - // neighboring atoms with closest local id for sametag // atom with smallest local id for atom map Kokkos::parallel_for(nall, LAMMPS_LAMBDA(int ii) { - const int i = l_i_sorted(ii); - const tagint tag_i = l_tag_sorted(ii); - int i_min = i; - int i_closest = MAXSMALLINT; + const int i = l_sorted(ii).i; + const tagint tag_i = l_sorted(ii).tag; - // search atoms with same tag in the forward direction + // sametag + tagint tag_j = -1; int jj = ii+1; - int closest_flag = 0; - - while (jj < nall) { - const tagint tag_j = l_tag_sorted(jj); - if (tag_j != tag_i) break; - const int j = l_i_sorted(jj); - i_min = MIN(i_min,j); - if (j > i) { - i_closest = MIN(i_closest,j); - closest_flag = 1; - } - jj++; - } + if (jj < nall) tag_j = l_sorted(jj).tag; - // search atoms with same tag in the reverse direction - - jj = ii-1; - - while (jj >= 0) { - const tagint tag_j = l_tag_sorted(jj); - if (tag_j != tag_i) break; - const int j = l_i_sorted(jj); - i_min = MIN(i_min,j); - if (j > i) { - i_closest = MIN(i_closest,j); - closest_flag = 1; - } - jj--; - } + if (tag_j == tag_i) + d_sametag(i) = l_sorted(jj).i; + else + d_sametag(i) = -1; - if (!closest_flag) - i_closest = -1; + // atom map - d_sametag(i) = i_closest; + tag_j = -1; + jj = ii-1; + if (jj >= 0) tag_j = l_sorted(jj).tag; - if (i == i_min) { + if (tag_j != tag_i) { if (map_style_array) - d_map_array(tag_i) = i_min; + d_map_array(tag_i) = i; else { - auto insert_result = d_map_hash.insert(tag_i, i_min); + auto insert_result = d_map_hash.insert(tag_i, i); if (insert_result.failed()) d_error_flag() = 1; } } @@ -273,6 +261,7 @@ void AtomKokkos::map_set() error->one(FLERR,"Failed to insert into Kokkos hash atom map"); k_sametag.modify_device(); + k_sametag.sync_host(); if (map_style == MAP_ARRAY) k_map_array.modify_device(); @@ -280,6 +269,122 @@ void AtomKokkos::map_set() k_map_hash.modify_device(); } +/* ---------------------------------------------------------------------- */ + +void AtomKokkos::map_set_host() +{ + int nall = nlocal + nghost; + + atomKK->sync(Host, TAG_MASK); + k_sametag.sync_host(); + + if (map_style == MAP_ARRAY) { + k_map_array.sync_host(); + + // possible reallocation of sametag must come before loop over atoms + // since loop sets sametag + + if (nall > max_same) { + max_same = nall + EXTRA; + memoryKK->destroy_kokkos(k_sametag, sametag); + memoryKK->create_kokkos(k_sametag, sametag, max_same, "atom:sametag"); + } + + for (int i = nall - 1; i >= 0; i--) { + sametag[i] = map_array[tag[i]]; + map_array[tag[i]] = i; + } + + } else { + + // if this proc has more atoms than hash table size, call map_init() + // call with 0 since max atomID in system has not changed + // possible reallocation of sametag must come after map_init(), + // b/c map_init() may invoke map_delete(), whacking sametag + + if (nall > map_nhash) map_init(0); + if (nall > max_same) { + max_same = nall + EXTRA; + memoryKK->destroy_kokkos(k_sametag, sametag); + memoryKK->create_kokkos(k_sametag, sametag, max_same, "atom:sametag"); + } + + int previous, ibucket, index; + tagint global; + + for (int i = nall - 1; i >= 0; i--) { + sametag[i] = Atom::map_find_hash(tag[i]); + + // search for key + // if found it, just overwrite local value with index + + previous = -1; + global = tag[i]; + ibucket = global % map_nbucket; + index = map_bucket[ibucket]; + while (index > -1) { + if (map_hash[index].global == global) break; + previous = index; + index = map_hash[index].next; + } + if (index > -1) { + map_hash[index].local = i; + continue; + } + + // take one entry from free list + // add the new global/local pair as entry at end of bucket list + // special logic if this entry is 1st in bucket + + index = map_free; + map_free = map_hash[map_free].next; + if (previous == -1) + map_bucket[ibucket] = index; + else + map_hash[previous].next = index; + map_hash[index].global = global; + map_hash[index].local = i; + map_hash[index].next = -1; + map_nused++; + } + + // Copy to Kokkos hash + + // use "view" template method to avoid unnecessary deep_copy + + auto h_map_hash = k_map_hash.view(); + h_map_hash.clear(); + + for (int i = nall - 1; i >= 0; i--) { + + // search for key + // if don't find it, done + + previous = -1; + global = tag[i]; + ibucket = global % map_nbucket; + index = map_bucket[ibucket]; + while (index > -1) { + if (map_hash[index].global == global) break; + previous = index; + index = map_hash[index].next; + } + if (index == -1) continue; + + int local = map_hash[index].local; + + auto insert_result = h_map_hash.insert(global, local); + if (insert_result.failed()) error->one(FLERR, "Kokkos::UnorderedMap insertion failed"); + } + } + + k_sametag.modify_host(); + if (map_style == MAP_ARRAY) + k_map_array.modify_host(); + else if (map_style == MAP_HASH) + k_map_hash.modify_host(); +} + /* ---------------------------------------------------------------------- set global to local map for one atom for hash table option: @@ -335,4 +440,7 @@ void AtomKokkos::map_delete() map_array = nullptr; } else k_map_hash = dual_hash_type(); + + if (lmp->kokkos->atom_map_classic) + Atom::map_delete(); } diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index dd6be164c07..dc8641a6b66 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -186,302 +186,13 @@ void AtomVecAngleKokkos::sort_kokkos(Kokkos::BinSort &Sorter /* ---------------------------------------------------------------------- */ -template -struct AtomVecAngleKokkos_PackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecAngleKokkos_PackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - const size_t maxsend = (buf.view().extent(0) - *buf.view().extent(1))/3; - const size_t elements = 3; - buffer_view(_buf,buf,maxsend,elements); - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _buf(i,0) = _x(j,0); - _buf(i,1) = _x(j,1); - _buf(i,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngleKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, - const int* const pbc) -{ - // Check whether to always run forward communication on the host - // Choose correct forward PackComm kernel - - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } else { - atomKK->sync(Device,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackComm f(atomKK->k_x,buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } - - return n*size_forward; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecAngleKokkos_PackCommSelf { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_x_array _xw; - int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecAngleKokkos_PackCommSelf( - const typename DAT::tdual_x_array &x, - const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_xw(x.view()),_nfirst(nfirst),_list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _xw(i+_nfirst,0) = _x(j,0); - _xw(i+_nfirst,1) = _x(j,1); - _xw(i+_nfirst,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngleKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, - const int nfirst, const int &pbc_flag, - const int* const pbc) { - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } else { - atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecAngleKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } - return n*3; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecAngleKokkos_UnpackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array _x; - typename ArrayTypes::t_xfloat_2d_const _buf; - int _first; - - AtomVecAngleKokkos_UnpackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_xfloat_2d &buf, - const int& first):_x(x.view()),_buf(buf.view()), - _first(first) {}; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - _x(i+_first,0) = _buf(i,0); - _x(i+_first,1) = _buf(i,1); - _x(i+_first,2) = _buf(i,2); - } -}; - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngleKokkos::unpack_comm_kokkos(const int &n, const int &first, - const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); - struct AtomVecAngleKokkos_UnpackComm f(atomKK->k_x,buf,first); - Kokkos::parallel_for(n,f); - } else { - atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); - struct AtomVecAngleKokkos_UnpackComm f(atomKK->k_x,buf,first); - Kokkos::parallel_for(n,f); - } -} - -/* ---------------------------------------------------------------------- */ - template struct AtomVecAngleKokkos_PackBorder { typedef DeviceType device_type; typedef ArrayTypes AT; typename AT::t_xfloat_2d _buf; - const typename AT::t_int_2d_const _list; - const int _iswap; + const typename AT::t_int_1d_const _list; const typename AT::t_x_array_randomread _x; const typename AT::t_tagint_1d _tag; const typename AT::t_int_1d _type; @@ -491,21 +202,20 @@ struct AtomVecAngleKokkos_PackBorder { AtomVecAngleKokkos_PackBorder( const typename AT::t_xfloat_2d &buf, - const typename AT::t_int_2d_const &list, - const int & iswap, + const typename AT::t_int_1d_const &list, const typename AT::t_x_array &x, const typename AT::t_tagint_1d &tag, const typename AT::t_int_1d &type, const typename AT::t_int_1d &mask, const typename AT::t_tagint_1d &molecule, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_molecule(molecule), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -528,8 +238,8 @@ struct AtomVecAngleKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -547,12 +257,12 @@ int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -561,12 +271,12 @@ int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -680,7 +390,6 @@ struct AtomVecAngleKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -716,7 +425,8 @@ struct AtomVecAngleKokkos_PackExchangeFunctor { _angle_atom2w(atom->k_angle_atom2.view()), _angle_atom3w(atom->k_angle_atom3.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -858,7 +568,6 @@ struct AtomVecAngleKokkos_UnpackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d nlocal, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -876,8 +585,8 @@ struct AtomVecAngleKokkos_UnpackExchangeFunctor { _angle_atom1(atom->k_angle_atom1.view()), _angle_atom2(atom->k_angle_atom2.view()), _angle_atom3(atom->k_angle_atom3.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -927,7 +636,7 @@ struct AtomVecAngleKokkos_UnpackExchangeFunctor { int AtomVecAngleKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, ExecutionSpace space, - DAT::tdual_int_1d &k_indices) + DAT::tdual_int_1d &/*k_indices*/) { while (nlocal + nrecv/size_exchange >= nmax) grow(0); diff --git a/src/KOKKOS/atom_vec_angle_kokkos.h b/src/KOKKOS/atom_vec_angle_kokkos.h index 44f1d824b2b..157e8b45cc0 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.h +++ b/src/KOKKOS/atom_vec_angle_kokkos.h @@ -35,17 +35,8 @@ class AtomVecAngleKokkos : public AtomVecKokkos, public AtomVecAngle { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, const int pbc[]) override; - void unpack_comm_kokkos(const int &n, const int &nfirst, - const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, - const int &pbc_flag, const int pbc[]) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, 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 1ea8377a688..81f4f55962a 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -125,8 +124,7 @@ struct AtomVecAtomicKokkos_PackBorder { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -135,20 +133,19 @@ struct AtomVecAtomicKokkos_PackBorder { AtomVecAtomicKokkos_PackBorder( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int &iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, const typename ArrayTypes::t_int_1d &mask, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -169,7 +166,7 @@ struct AtomVecAtomicKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -187,12 +184,12 @@ int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,dx,dy,dz); + h_x,h_tag,h_type,h_mask,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,dx,dy,dz); + d_x,d_tag,d_type,d_mask,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -201,12 +198,12 @@ int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,dx,dy,dz); + h_x,h_tag,h_type,h_mask,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,dx,dy,dz); + d_x,d_tag,d_type,d_mask,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -294,7 +291,6 @@ struct AtomVecAtomicKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -308,7 +304,8 @@ struct AtomVecAtomicKokkos_PackExchangeFunctor { _maskw(atom->k_mask.view()), _imagew(atom->k_image.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -392,16 +389,15 @@ struct AtomVecAtomicKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), _type(atom->k_type.view()), _mask(atom->k_mask.view()), _image(atom->k_image.view()), - _indices(indices.template view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _indices(indices.template view()),_dim(dim), + _lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.h b/src/KOKKOS/atom_vec_atomic_kokkos.h index 07631dda98e..457b5b61a9e 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.h +++ b/src/KOKKOS/atom_vec_atomic_kokkos.h @@ -36,8 +36,8 @@ class AtomVecAtomicKokkos : public AtomVecKokkos, public AtomVecAtomic { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index c45bdedf385..6b32574c2a4 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -158,8 +157,7 @@ struct AtomVecBondKokkos_PackBorder { typedef ArrayTypes AT; typename AT::t_xfloat_2d _buf; - const typename AT::t_int_2d_const _list; - const int _iswap; + const typename AT::t_int_1d_const _list; const typename AT::t_x_array_randomread _x; const typename AT::t_tagint_1d _tag; const typename AT::t_int_1d _type; @@ -169,21 +167,20 @@ struct AtomVecBondKokkos_PackBorder { AtomVecBondKokkos_PackBorder( const typename AT::t_xfloat_2d &buf, - const typename AT::t_int_2d_const &list, - const int & iswap, + const typename AT::t_int_1d_const &list, const typename AT::t_x_array &x, const typename AT::t_tagint_1d &tag, const typename AT::t_int_1d &type, const typename AT::t_int_1d &mask, const typename AT::t_tagint_1d &molecule, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_molecule(molecule), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -206,8 +203,8 @@ struct AtomVecBondKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -225,12 +222,12 @@ int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -239,12 +236,12 @@ int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -352,7 +349,6 @@ struct AtomVecBondKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -378,7 +374,8 @@ struct AtomVecBondKokkos_PackExchangeFunctor { _bond_typew(atom->k_bond_type.view()), _bond_atomw(atom->k_bond_atom.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -503,7 +500,6 @@ struct AtomVecBondKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -516,9 +512,9 @@ struct AtomVecBondKokkos_UnpackExchangeFunctor { _num_bond(atom->k_num_bond.view()), _bond_type(atom->k_bond_type.view()), _bond_atom(atom->k_bond_atom.view()), + _nlocal(nlocal.template view()), _indices(indices.template view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); diff --git a/src/KOKKOS/atom_vec_bond_kokkos.h b/src/KOKKOS/atom_vec_bond_kokkos.h index 5ed59432de5..cad1ea86d7f 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.h +++ b/src/KOKKOS/atom_vec_bond_kokkos.h @@ -35,8 +35,8 @@ class AtomVecBondKokkos : public AtomVecKokkos, public AtomVecBond { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index 22fc63ff910..637a2194330 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -134,19 +133,17 @@ struct AtomVecChargeKokkos_PackComm { typename AT::t_x_array_randomread _x; typename AT::t_xfloat_2d_um _buf; - typename AT::t_int_2d_const _list; - const int _iswap; + typename AT::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; AtomVecChargeKokkos_PackComm( const typename DAT::tdual_x_array &x, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_list(list.view()),_iswap(iswap), + _x(x.view()),_list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; @@ -158,7 +155,7 @@ struct AtomVecChargeKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -185,8 +182,7 @@ struct AtomVecChargeKokkos_PackBorder { typedef ArrayTypes AT; typename AT::t_xfloat_2d _buf; - const typename AT::t_int_2d_const _list; - const int _iswap; + const typename AT::t_int_1d_const _list; const typename AT::t_x_array_randomread _x; const typename AT::t_tagint_1d _tag; const typename AT::t_int_1d _type; @@ -196,21 +192,20 @@ struct AtomVecChargeKokkos_PackBorder { AtomVecChargeKokkos_PackBorder( const typename AT::t_xfloat_2d &buf, - const typename AT::t_int_2d_const &list, - const int & iswap, + const typename AT::t_int_1d_const &list, const typename AT::t_x_array &x, const typename AT::t_tagint_1d &tag, const typename AT::t_int_1d &type, const typename AT::t_int_1d &mask, const typename AT::t_float_1d &q, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_q(q), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -233,7 +228,7 @@ struct AtomVecChargeKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -251,12 +246,12 @@ int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -265,12 +260,12 @@ int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -366,7 +361,6 @@ struct AtomVecChargeKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -382,7 +376,8 @@ struct AtomVecChargeKokkos_PackExchangeFunctor { _imagew(atom->k_image.view()), _qw(atom->k_q.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; @@ -474,17 +469,16 @@ struct AtomVecChargeKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), _type(atom->k_type.view()), _mask(atom->k_mask.view()), _image(atom->k_image.view()), - _indices(indices.template view()), _q(atom->k_q.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _indices(indices.template view()),_dim(dim), + _lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); diff --git a/src/KOKKOS/atom_vec_charge_kokkos.h b/src/KOKKOS/atom_vec_charge_kokkos.h index 397a5ee4c01..1d1c68735ef 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.h +++ b/src/KOKKOS/atom_vec_charge_kokkos.h @@ -36,8 +36,8 @@ class AtomVecChargeKokkos : public AtomVecKokkos, public AtomVecCharge { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_dipole_kokkos.cpp b/src/KOKKOS/atom_vec_dipole_kokkos.cpp index ad06570cdcc..7728fedd4b0 100644 --- a/src/KOKKOS/atom_vec_dipole_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dipole_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -136,8 +135,7 @@ struct AtomVecDipoleKokkos_PackComm { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_mu_array_randomread _mu; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -145,13 +143,12 @@ struct AtomVecDipoleKokkos_PackComm { const typename DAT::tdual_x_array &x, const typename DAT::tdual_float_1d_4 &mu, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()), _mu(mu.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t elements = 7; // size_forward @@ -163,7 +160,7 @@ struct AtomVecDipoleKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -201,8 +198,7 @@ struct AtomVecDipoleKokkos_PackBorder { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -213,8 +209,7 @@ struct AtomVecDipoleKokkos_PackBorder { AtomVecDipoleKokkos_PackBorder( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int & iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, @@ -222,13 +217,13 @@ struct AtomVecDipoleKokkos_PackBorder { const typename ArrayTypes::t_float_1d &q, const typename ArrayTypes::t_mu_array_randomread &mu, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_q(q),_mu(mu), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -259,7 +254,7 @@ struct AtomVecDipoleKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecDipoleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecDipoleKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -277,12 +272,12 @@ int AtomVecDipoleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecDipoleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,h_mu,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,h_mu,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecDipoleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,d_mu,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,d_mu,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -291,12 +286,12 @@ int AtomVecDipoleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecDipoleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,h_mu,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,h_mu,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecDipoleKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,d_mu,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,d_mu,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -398,7 +393,6 @@ struct AtomVecDipoleKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -416,7 +410,8 @@ struct AtomVecDipoleKokkos_PackExchangeFunctor { _qw(atom->k_q.view()), _muw(atom->k_mu.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; @@ -515,7 +510,6 @@ struct AtomVecDipoleKokkos_UnpackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d nlocal, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -524,8 +518,8 @@ struct AtomVecDipoleKokkos_UnpackExchangeFunctor { _image(atom->k_image.view()), _q(atom->k_q.view()), _mu(atom->k_mu.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -557,8 +551,8 @@ struct AtomVecDipoleKokkos_UnpackExchangeFunctor { /* ---------------------------------------------------------------------- */ int AtomVecDipoleKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, int nlocal, - int dim, X_FLOAT lo, X_FLOAT hi, ExecutionSpace space, - DAT::tdual_int_1d &k_indices) + int dim, X_FLOAT lo, X_FLOAT hi, ExecutionSpace space, + DAT::tdual_int_1d &/*k_indices*/) { if (space == Host) { k_count.h_view(0) = nlocal; diff --git a/src/KOKKOS/atom_vec_dipole_kokkos.h b/src/KOKKOS/atom_vec_dipole_kokkos.h index 97ec92c6c6f..46e102936af 100644 --- a/src/KOKKOS/atom_vec_dipole_kokkos.h +++ b/src/KOKKOS/atom_vec_dipole_kokkos.h @@ -36,8 +36,8 @@ class AtomVecDipoleKokkos : public AtomVecKokkos, public AtomVecDipole { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index c3430b9f6ec..6152fa60fb5 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -20,6 +20,7 @@ #include "domain.h" #include "error.h" #include "fix.h" +#include "kokkos.h" #include "memory_kokkos.h" #include "modify.h" @@ -168,8 +169,7 @@ struct AtomVecDPDKokkos_PackComm { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -180,8 +180,7 @@ struct AtomVecDPDKokkos_PackComm { const typename DAT::tdual_efloat_1d &uMech, const typename DAT::tdual_efloat_1d &uChem, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()), @@ -189,7 +188,7 @@ struct AtomVecDPDKokkos_PackComm { _uCond(uCond.view()), _uMech(uMech.view()), _uChem(uChem.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; @@ -201,7 +200,7 @@ struct AtomVecDPDKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -227,8 +226,7 @@ struct AtomVecDPDKokkos_PackComm { /* ---------------------------------------------------------------------- */ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int* const pbc) @@ -236,20 +234,20 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, // Check whether to always run forward communication on the host // Choose correct forward PackComm kernel - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if (pbc_flag) { if (domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -258,14 +256,14 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, if (domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -277,14 +275,14 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, if (domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -293,14 +291,14 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, if (domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -321,8 +319,7 @@ struct AtomVecDPDKokkos_PackCommSelf { typename ArrayTypes::t_x_array _xw; typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -333,8 +330,7 @@ struct AtomVecDPDKokkos_PackCommSelf { const typename DAT::tdual_efloat_1d &uMech, const typename DAT::tdual_efloat_1d &uChem, const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()),_xw(x.view()), @@ -342,7 +338,7 @@ struct AtomVecDPDKokkos_PackCommSelf { _uCond(uCond.view()), _uMech(uMech.view()), _uChem(uChem.view()), - _nfirst(nfirst),_list(list.view()),_iswap(iswap), + _nfirst(nfirst),_list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; @@ -351,7 +347,7 @@ struct AtomVecDPDKokkos_PackCommSelf { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _xw(i+_nfirst,0) = _x(j,0); _xw(i+_nfirst,1) = _x(j,1); @@ -376,23 +372,23 @@ struct AtomVecDPDKokkos_PackCommSelf { /* ---------------------------------------------------------------------- */ -int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, +int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_1d &list, const int nfirst, const int &pbc_flag, const int* const pbc) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); atomKK->modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if (pbc_flag) { if (domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -401,14 +397,14 @@ int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list if (domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -421,14 +417,14 @@ int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list if (domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -437,14 +433,14 @@ int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list if (domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -496,7 +492,7 @@ struct AtomVecDPDKokkos_UnpackComm { void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); atomKK->modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, @@ -520,8 +516,7 @@ struct AtomVecDPDKokkos_PackBorder { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -531,8 +526,7 @@ struct AtomVecDPDKokkos_PackBorder { AtomVecDPDKokkos_PackBorder( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int & iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, @@ -544,7 +538,7 @@ struct AtomVecDPDKokkos_PackBorder { const typename ArrayTypes::t_efloat_1d &uCG, const typename ArrayTypes::t_efloat_1d &uCGnew, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask), _dpdTheta(dpdTheta), _uCond(uCond), @@ -556,7 +550,7 @@ struct AtomVecDPDKokkos_PackBorder { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -580,7 +574,7 @@ struct AtomVecDPDKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -600,14 +594,14 @@ int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DA if (space==Host) { AtomVecDPDKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecDPDKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, dx,dy,dz); Kokkos::parallel_for(n,f); @@ -618,14 +612,14 @@ int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DA if (space==Host) { AtomVecDPDKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecDPDKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, dx,dy,dz); Kokkos::parallel_for(n,f); @@ -746,7 +740,6 @@ struct AtomVecDPDKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -772,7 +765,8 @@ struct AtomVecDPDKokkos_PackExchangeFunctor { _uCGw(atom->k_uCG.view()), _uCGneww(atom->k_uCGnew.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -875,15 +869,14 @@ struct AtomVecDPDKokkos_UnpackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d nlocal, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), _type(atom->k_type.view()), _mask(atom->k_mask.view()), _image(atom->k_image.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -917,7 +910,7 @@ struct AtomVecDPDKokkos_UnpackExchangeFunctor { /* ---------------------------------------------------------------------- */ int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, ExecutionSpace space, - DAT::tdual_int_1d &k_indices) + DAT::tdual_int_1d &/*k_indices*/) { while (nlocal + nrecv/size_exchange >= nmax) grow(0); diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.h b/src/KOKKOS/atom_vec_dpd_kokkos.h index a76d7f908a6..185422cfcf9 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.h +++ b/src/KOKKOS/atom_vec_dpd_kokkos.h @@ -36,17 +36,16 @@ class AtomVecDPDKokkos : public AtomVecKokkos, public AtomVecDPD { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, + int pack_comm_kokkos(const int &n, const DAT::tdual_int_1d &k_sendlist, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]) override; void unpack_comm_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, + int pack_comm_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst, const int &pbc_flag, const int pbc[]) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, 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 829ebc75e64..1ae93a3df64 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -275,8 +274,7 @@ struct AtomVecFullKokkos_PackBorder { typedef ArrayTypes AT; typename AT::t_xfloat_2d _buf; - const typename AT::t_int_2d_const _list; - const int _iswap; + const typename AT::t_int_1d_const _list; const typename AT::t_x_array_randomread _x; const typename AT::t_tagint_1d _tag; const typename AT::t_int_1d _type; @@ -287,8 +285,7 @@ struct AtomVecFullKokkos_PackBorder { AtomVecFullKokkos_PackBorder( const typename AT::t_xfloat_2d &buf, - const typename AT::t_int_2d_const &list, - const int & iswap, + const typename AT::t_int_1d_const &list, const typename AT::t_x_array &x, const typename AT::t_tagint_1d &tag, const typename AT::t_int_1d &type, @@ -296,13 +293,13 @@ struct AtomVecFullKokkos_PackBorder { const typename AT::t_float_1d &q, const typename AT::t_tagint_1d &molecule, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_q(q),_molecule(molecule), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -327,8 +324,8 @@ struct AtomVecFullKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -346,12 +343,12 @@ int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -360,12 +357,12 @@ int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, if (space==Host) { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -501,7 +498,6 @@ struct AtomVecFullKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -563,7 +559,8 @@ struct AtomVecFullKokkos_PackExchangeFunctor { _improper_atom3w(atom->k_improper_atom3.view()), _improper_atom4w(atom->k_improper_atom4.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -755,14 +752,12 @@ struct AtomVecFullKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), _type(atom->k_type.view()), _mask(atom->k_mask.view()), _image(atom->k_image.view()), - _indices(indices.template view()), _q(atom->k_q.view()), _molecule(atom->k_molecule.view()), _nspecial(atom->k_nspecial.view()), @@ -787,9 +782,9 @@ struct AtomVecFullKokkos_UnpackExchangeFunctor { _improper_atom2(atom->k_improper_atom2.view()), _improper_atom3(atom->k_improper_atom3.view()), _improper_atom4(atom->k_improper_atom4.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { - + _nlocal(nlocal.template view()), + _indices(indices.template view()), + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); diff --git a/src/KOKKOS/atom_vec_full_kokkos.h b/src/KOKKOS/atom_vec_full_kokkos.h index 4937ef4152f..9eea48ef95b 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.h +++ b/src/KOKKOS/atom_vec_full_kokkos.h @@ -35,8 +35,8 @@ class AtomVecFullKokkos : public AtomVecKokkos, public AtomVecFull { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp index 4e01ab57948..77af2cff05a 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -15,14 +15,7 @@ #include "atom_vec_hybrid_kokkos.h" #include "atom_kokkos.h" -#include "atom_masks.h" -#include "domain.h" #include "error.h" -#include "fix.h" -#include "memory_kokkos.h" -#include "modify.h" - -#include using namespace LAMMPS_NS; @@ -63,10 +56,9 @@ void AtomVecHybridKokkos::sort_kokkos(Kokkos::BinSort &Sorte /* ---------------------------------------------------------------------- */ -int AtomVecHybridKokkos::pack_comm_kokkos(const int &/*n*/, const DAT::tdual_int_2d &/*k_sendlist*/, - const int & /*iswap*/, +int AtomVecHybridKokkos::pack_comm_kokkos(const int &/*n*/, const DAT::tdual_int_1d &/*k_sendlist*/, const DAT::tdual_xfloat_2d &/*buf*/, - const int &/*pbc_flag*/, const int pbc[]) + const int &/*pbc_flag*/, const int /*pbc*/[]) { error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); return 0; @@ -78,16 +70,16 @@ void AtomVecHybridKokkos::unpack_comm_kokkos(const int &/*n*/, const int &/*nfir error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); } -int AtomVecHybridKokkos::pack_comm_self(const int &/*n*/, const DAT::tdual_int_2d &/*list*/, - const int & /*iswap*/, const int /*nfirst*/, +int AtomVecHybridKokkos::pack_comm_self(const int &/*n*/, const DAT::tdual_int_1d &/*list*/, + const int /*nfirst*/, const int &/*pbc_flag*/, const int pbc[]) { error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); return 0; } -int AtomVecHybridKokkos::pack_border_kokkos(int /*n*/, DAT::tdual_int_2d /*k_sendlist*/, - DAT::tdual_xfloat_2d /*buf*/,int /*iswap*/, +int AtomVecHybridKokkos::pack_border_kokkos(int /*n*/, DAT::tdual_int_1d /*k_sendlist*/, + DAT::tdual_xfloat_2d /*buf*/, int /*pbc_flag*/, int * /*pbc*/, ExecutionSpace /*space*/) { error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); @@ -113,7 +105,7 @@ int AtomVecHybridKokkos::pack_exchange_kokkos(const int &/*nsend*/,DAT::tdual_xf int AtomVecHybridKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d & /*k_buf*/, int /*nrecv*/, int /*nlocal*/, int /*dim*/, X_FLOAT /*lo*/, X_FLOAT /*hi*/, ExecutionSpace /*space*/, - DAT::tdual_int_1d &k_indices) + DAT::tdual_int_1d &/*k_indices*/) { error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); return 0; diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h index 6f81c936736..19210549f59 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.h +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -36,17 +36,16 @@ class AtomVecHybridKokkos : public AtomVecKokkos, public AtomVecHybrid { void grow(int) override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, + int pack_comm_kokkos(const int &n, const DAT::tdual_int_1d &k_sendlist, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]) override; void unpack_comm_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, + int pack_comm_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst, const int &pbc_flag, const int pbc[]) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_kokkos.cpp b/src/KOKKOS/atom_vec_kokkos.cpp index 93393e9e09d..d54cc2c3afd 100644 --- a/src/KOKKOS/atom_vec_kokkos.cpp +++ b/src/KOKKOS/atom_vec_kokkos.cpp @@ -17,8 +17,8 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "comm_kokkos.h" -#include "error.h" #include "domain.h" +#include "kokkos.h" using namespace LAMMPS_NS; @@ -37,7 +37,6 @@ AtomVecKokkos::AtomVecKokkos(LAMMPS *lmp) : AtomVec(lmp) k_count = DAT::tdual_int_1d("atom:k_count",1); atomKK = (AtomKokkos *) atom; - commKK = (CommKokkos *) comm; } /* ---------------------------------------------------------------------- */ @@ -57,19 +56,17 @@ struct AtomVecKokkos_PackComm { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; AtomVecKokkos_PackComm( const typename DAT::tdual_x_array &x, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_list(list.view()),_iswap(iswap), + _x(x.view()),_list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; @@ -81,7 +78,7 @@ struct AtomVecKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -103,8 +100,7 @@ struct AtomVecKokkos_PackComm { /* ---------------------------------------------------------------------- */ int AtomVecKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int* const pbc) @@ -112,28 +108,28 @@ int AtomVecKokkos::pack_comm_kokkos(const int &n, // Check whether to always run forward communication on the host // Choose correct forward PackComm kernel - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK); if (pbc_flag) { if (domain->triclinic) { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } } else { if (domain->triclinic) { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -143,24 +139,24 @@ int AtomVecKokkos::pack_comm_kokkos(const int &n, atomKK->sync(Device,X_MASK); if (pbc_flag) { if (domain->triclinic) { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } } else { if (domain->triclinic) { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list,iswap, + struct AtomVecKokkos_PackComm f(atomKK->k_x,buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -168,7 +164,7 @@ int AtomVecKokkos::pack_comm_kokkos(const int &n, } } - return n*size_forward; + return n*size_forward; } /* ---------------------------------------------------------------------- */ @@ -180,19 +176,17 @@ struct AtomVecKokkos_PackCommSelf { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_x_array _xw; int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; AtomVecKokkos_PackCommSelf( const typename DAT::tdual_x_array &x, const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_xw(x.view()),_nfirst(nfirst),_list(list.view()),_iswap(iswap), + _x(x.view()),_xw(x.view()),_nfirst(nfirst),_list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; @@ -201,7 +195,7 @@ struct AtomVecKokkos_PackCommSelf { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _xw(i+_nfirst,0) = _x(j,0); _xw(i+_nfirst,1) = _x(j,1); @@ -223,66 +217,67 @@ struct AtomVecKokkos_PackCommSelf { /* ---------------------------------------------------------------------- */ -int AtomVecKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, +int AtomVecKokkos::pack_comm_self(const int &n, const DAT::tdual_int_1d &list, const int nfirst, const int &pbc_flag, const int* const pbc) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); if (pbc_flag) { if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } } else { if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } } + atomKK->modified(Host,X_MASK); } else { atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); if (pbc_flag) { if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } } else { if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list,iswap, + struct AtomVecKokkos_PackCommSelf f(atomKK->k_x,nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } } + atomKK->modified(Device,X_MASK); } - return n*3; + + return n*3; } @@ -361,35 +356,36 @@ struct AtomVecKokkos_PackCommSelfFused { int AtomVecKokkos::pack_comm_self_fused(const int &n, const DAT::tdual_int_2d &list, const DAT::tdual_int_1d &sendnum_scan, const DAT::tdual_int_1d &firstrecv, const DAT::tdual_int_1d &pbc_flag, const DAT::tdual_int_2d &pbc, const DAT::tdual_int_1d &g2l) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, + struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, + struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } + atomKK->modified(Host,X_MASK); } else { atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); if (domain->triclinic) { - struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, + struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } else { - struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, + struct AtomVecKokkos_PackCommSelfFused f(atomKK->k_x,list,pbc,pbc_flag,firstrecv,sendnum_scan,g2l, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz); - Kokkos::parallel_for(n,f); + Kokkos::parallel_for(n,f); } + atomKK->modified(Device,X_MASK); } + return n*3; } @@ -421,20 +417,19 @@ struct AtomVecKokkos_UnpackComm { void AtomVecKokkos::unpack_comm_kokkos(const int &n, const int &first, const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); struct AtomVecKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); + atomKK->modified(Host,X_MASK); } else { atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); struct AtomVecKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); + atomKK->modified(Device,X_MASK); } } - /* ---------------------------------------------------------------------- */ template @@ -445,8 +440,7 @@ struct AtomVecKokkos_PackCommVel { typename ArrayTypes::t_int_1d _mask; typename ArrayTypes::t_v_array _v; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; X_FLOAT _h_rate[6]; @@ -457,8 +451,7 @@ struct AtomVecKokkos_PackCommVel { const typename DAT::tdual_int_1d &mask, const typename DAT::tdual_v_array &v, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int &iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc, const double * const h_rate, @@ -466,7 +459,7 @@ struct AtomVecKokkos_PackCommVel { _x(x.view()), _mask(mask.view()), _v(v.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz), _deform_vremap(deform_vremap) @@ -482,7 +475,7 @@ struct AtomVecKokkos_PackCommVel { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -524,13 +517,12 @@ struct AtomVecKokkos_PackCommVel { int AtomVecKokkos::pack_comm_vel_kokkos( const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int* const pbc) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|V_MASK); if (pbc_flag) { if (deform_vremap) { @@ -538,7 +530,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -546,7 +538,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -556,7 +548,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -564,7 +556,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -575,7 +567,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -583,7 +575,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -597,7 +589,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -605,7 +597,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -615,7 +607,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -623,7 +615,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -634,7 +626,7 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -642,13 +634,14 @@ int AtomVecKokkos::pack_comm_vel_kokkos( struct AtomVecKokkos_PackCommVel f( atomKK->k_x,atomKK->k_mask, atomKK->k_v, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); } } } + return n*6; } @@ -692,16 +685,16 @@ struct AtomVecKokkos_UnpackCommVel { void AtomVecKokkos::unpack_comm_vel_kokkos(const int &n, const int &first, const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|V_MASK); - atomKK->modified(Host,X_MASK|V_MASK); struct AtomVecKokkos_UnpackCommVel f(atomKK->k_x,atomKK->k_v,buf,first); Kokkos::parallel_for(n,f); + atomKK->modified(Host,X_MASK|V_MASK); } else { atomKK->sync(Device,X_MASK|V_MASK); - atomKK->modified(Device,X_MASK|V_MASK); struct AtomVecKokkos_UnpackCommVel f(atomKK->k_x,atomKK->k_v,buf,first); Kokkos::parallel_for(n,f); + atomKK->modified(Device,X_MASK|V_MASK); } } @@ -733,7 +726,7 @@ struct AtomVecKokkos_PackReverse { int AtomVecKokkos::pack_reverse_kokkos(const int &n, const int &first, const DAT::tdual_ffloat_2d &buf) { - if (commKK->reverse_comm_on_host) { + if (lmp->kokkos->reverse_comm_on_host) { atomKK->sync(Host,F_MASK); struct AtomVecKokkos_PackReverse f(atomKK->k_f,buf,first); Kokkos::parallel_for(n,f); @@ -755,20 +748,18 @@ struct AtomVecKokkos_UnPackReverseSelf { typename ArrayTypes::t_f_array_randomread _f; typename ArrayTypes::t_f_array _fw; int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; AtomVecKokkos_UnPackReverseSelf( const typename DAT::tdual_f_array &f, const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap): - _f(f.view()),_fw(f.view()),_nfirst(nfirst),_list(list.view()),_iswap(iswap) { + const typename DAT::tdual_int_1d &list): + _f(f.view()),_fw(f.view()),_nfirst(nfirst),_list(list.view()) { }; KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); _fw(j,0) += _f(i+_nfirst,0); _fw(j,1) += _f(i+_nfirst,1); _fw(j,2) += _f(i+_nfirst,2); @@ -777,19 +768,20 @@ struct AtomVecKokkos_UnPackReverseSelf { /* ---------------------------------------------------------------------- */ -int AtomVecKokkos::unpack_reverse_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, - const int nfirst) { - if (commKK->reverse_comm_on_host) { +int AtomVecKokkos::pack_reverse_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst) { + if (lmp->kokkos->reverse_comm_on_host) { atomKK->sync(Host,F_MASK); - struct AtomVecKokkos_UnPackReverseSelf f(atomKK->k_f,nfirst,list,iswap); + struct AtomVecKokkos_UnPackReverseSelf f(atomKK->k_f,nfirst,list); Kokkos::parallel_for(n,f); atomKK->modified(Host,F_MASK); } else { atomKK->sync(Device,F_MASK); - struct AtomVecKokkos_UnPackReverseSelf f(atomKK->k_f,nfirst,list,iswap); + struct AtomVecKokkos_UnPackReverseSelf f(atomKK->k_f,nfirst,list); Kokkos::parallel_for(n,f); atomKK->modified(Device,F_MASK); } + return n*3; } @@ -801,15 +793,13 @@ struct AtomVecKokkos_UnPackReverse { typename ArrayTypes::t_f_array _f; typename ArrayTypes::t_ffloat_2d_const _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; AtomVecKokkos_UnPackReverse( const typename DAT::tdual_f_array &f, const typename DAT::tdual_ffloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap): - _f(f.view()),_list(list.view()),_iswap(iswap) { + const typename DAT::tdual_int_1d &list): + _f(f.view()),_list(list.view()) { const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; const size_t elements = 3; buffer_view(_buf,buf,maxsend,elements); @@ -817,7 +807,7 @@ struct AtomVecKokkos_UnPackReverse { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); _f(j,0) += _buf(i,0); _f(j,1) += _buf(i,1); _f(j,2) += _buf(i,2); @@ -827,19 +817,18 @@ struct AtomVecKokkos_UnPackReverse { /* ---------------------------------------------------------------------- */ void AtomVecKokkos::unpack_reverse_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_ffloat_2d &buf) { // Check whether to always run reverse communication on the host // Choose correct reverse UnPackReverse kernel - if (commKK->reverse_comm_on_host) { - struct AtomVecKokkos_UnPackReverse f(atomKK->k_f,buf,list,iswap); + if (lmp->kokkos->reverse_comm_on_host) { + struct AtomVecKokkos_UnPackReverse f(atomKK->k_f,buf,list); Kokkos::parallel_for(n,f); atomKK->modified(Host,F_MASK); } else { - struct AtomVecKokkos_UnPackReverse f(atomKK->k_f,buf,list,iswap); + struct AtomVecKokkos_UnPackReverse f(atomKK->k_f,buf,list); Kokkos::parallel_for(n,f); atomKK->modified(Device,F_MASK); } diff --git a/src/KOKKOS/atom_vec_kokkos.h b/src/KOKKOS/atom_vec_kokkos.h index c10ff5b40a7..646d9a48406 100644 --- a/src/KOKKOS/atom_vec_kokkos.h +++ b/src/KOKKOS/atom_vec_kokkos.h @@ -50,8 +50,8 @@ class AtomVecKokkos : virtual public AtomVec { virtual void sync_overlapping_device(ExecutionSpace space, unsigned int mask) = 0; virtual int - pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, + pack_comm_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst, const int &pbc_flag, const int pbc[]); virtual int @@ -63,8 +63,8 @@ class AtomVecKokkos : virtual public AtomVec { const DAT::tdual_int_1d &g2l); virtual int - pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const DAT::tdual_xfloat_2d &buf, + pack_comm_kokkos(const int &n, const DAT::tdual_int_1d &list, + const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]); virtual void @@ -72,8 +72,8 @@ class AtomVecKokkos : virtual public AtomVec { const DAT::tdual_xfloat_2d &buf); virtual int - pack_comm_vel_kokkos(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const DAT::tdual_xfloat_2d &buf, + pack_comm_vel_kokkos(const int &n, const DAT::tdual_int_1d &list, + const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]); virtual void @@ -81,20 +81,20 @@ class AtomVecKokkos : virtual public AtomVec { const DAT::tdual_xfloat_2d &buf); virtual int - unpack_reverse_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst); + pack_reverse_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst); virtual int pack_reverse_kokkos(const int &n, const int &nfirst, const DAT::tdual_ffloat_2d &buf); virtual void - unpack_reverse_kokkos(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const DAT::tdual_ffloat_2d &buf); + unpack_reverse_kokkos(const int &n, const DAT::tdual_int_1d &list, + const DAT::tdual_ffloat_2d &buf); virtual int - pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) = 0; virtual void @@ -103,8 +103,8 @@ class AtomVecKokkos : virtual public AtomVec { ExecutionSpace space) = 0; virtual int - pack_border_vel_kokkos(int /*n*/, DAT::tdual_int_2d /*k_sendlist*/, - DAT::tdual_xfloat_2d /*buf*/,int /*iswap*/, + pack_border_vel_kokkos(int /*n*/, DAT::tdual_int_1d /*k_sendlist*/, + DAT::tdual_xfloat_2d /*buf*/, int /*pbc_flag*/, int * /*pbc*/, ExecutionSpace /*space*/) { return 0; } virtual void @@ -133,7 +133,6 @@ class AtomVecKokkos : virtual public AtomVec { HAT::t_v_array h_v; HAT::t_f_array h_f; - class CommKokkos *commKK; size_t buffer_size; void* buffer; diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index 471dd0ad587..68369e2fad6 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -260,295 +260,13 @@ void AtomVecMolecularKokkos::sort_kokkos(Kokkos::BinSort &So /* ---------------------------------------------------------------------- */ -template -struct AtomVecMolecularKokkos_PackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecMolecularKokkos_PackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - const size_t maxsend = (buf.view().extent(0) - *buf.view().extent(1))/3; - const size_t elements = 3; - buffer_view(_buf,buf,maxsend,elements); - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _buf(i,0) = _x(j,0); - _buf(i,1) = _x(j,1); - _buf(i,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecularKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, - const int* const pbc) -{ - // Check whether to always run forward communication on the host - // Choose correct forward PackComm kernel - - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } else { - atomKK->sync(Device,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackComm - f(atomKK->k_x,buf,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } - - return n*size_forward; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecMolecularKokkos_PackCommSelf { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_x_array _xw; - int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecMolecularKokkos_PackCommSelf( - const typename DAT::tdual_x_array &x, - const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_xw(x.view()),_nfirst(nfirst), - _list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _xw(i+_nfirst,0) = _x(j,0); - _xw(i+_nfirst,1) = _x(j,1); - _xw(i+_nfirst,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecularKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, - const int nfirst, const int &pbc_flag, - const int* const pbc) { - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } else { - atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); - if (pbc_flag) { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if (domain->triclinic) { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecMolecularKokkos_PackCommSelf - f(atomKK->k_x,nfirst,list,iswap,domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - } - return n*3; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecMolecularKokkos_UnpackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array _x; - typename ArrayTypes::t_xfloat_2d_const _buf; - int _first; - - AtomVecMolecularKokkos_UnpackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_xfloat_2d &buf, - const int& first):_x(x.view()),_buf(buf.view()), - _first(first) {}; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - _x(i+_first,0) = _buf(i,0); - _x(i+_first,1) = _buf(i,1); - _x(i+_first,2) = _buf(i,2); - } -}; - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecularKokkos::unpack_comm_kokkos(const int &n, const int &first, - const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { - atomKK->sync(Host,X_MASK); - atomKK->modified(Host,X_MASK); - struct AtomVecMolecularKokkos_UnpackComm f(atomKK->k_x,buf,first); - Kokkos::parallel_for(n,f); - } else { - atomKK->sync(Device,X_MASK); - atomKK->modified(Device,X_MASK); - struct AtomVecMolecularKokkos_UnpackComm f(atomKK->k_x,buf,first); - Kokkos::parallel_for(n,f); - } -} - -/* ---------------------------------------------------------------------- */ - template struct AtomVecMolecularKokkos_PackBorder { typedef DeviceType device_type; typedef ArrayTypes AT; typename AT::t_xfloat_2d _buf; - const typename AT::t_int_2d_const _list; - const int _iswap; + const typename AT::t_int_1d_const _list; const typename AT::t_x_array_randomread _x; const typename AT::t_tagint_1d _tag; const typename AT::t_int_1d _type; @@ -558,21 +276,20 @@ struct AtomVecMolecularKokkos_PackBorder { AtomVecMolecularKokkos_PackBorder( const typename AT::t_xfloat_2d &buf, - const typename AT::t_int_2d_const &list, - const int & iswap, + const typename AT::t_int_1d_const &list, const typename AT::t_x_array &x, const typename AT::t_tagint_1d &tag, const typename AT::t_int_1d &type, const typename AT::t_int_1d &mask, const typename AT::t_tagint_1d &molecule, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_molecule(molecule), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -595,8 +312,8 @@ struct AtomVecMolecularKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -614,12 +331,12 @@ int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendli if (space==Host) { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -628,12 +345,12 @@ int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendli if (space==Host) { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -762,7 +479,6 @@ struct AtomVecMolecularKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -822,7 +538,8 @@ struct AtomVecMolecularKokkos_PackExchangeFunctor { _improper_atom3w(atom->k_improper_atom3.view()), _improper_atom4w(atom->k_improper_atom4.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -1010,7 +727,6 @@ struct AtomVecMolecularKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -1040,9 +756,9 @@ struct AtomVecMolecularKokkos_UnpackExchangeFunctor { _improper_atom2(atom->k_improper_atom2.view()), _improper_atom3(atom->k_improper_atom3.view()), _improper_atom4(atom->k_improper_atom4.view()), + _nlocal(nlocal.template view()), _indices(indices.template view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.h b/src/KOKKOS/atom_vec_molecular_kokkos.h index eb976e90735..a92784fbd9e 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.h +++ b/src/KOKKOS/atom_vec_molecular_kokkos.h @@ -35,17 +35,8 @@ class AtomVecMolecularKokkos : public AtomVecKokkos, public AtomVecMolecular { void grow(int) override; void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, const int pbc[]) override; - void unpack_comm_kokkos(const int &n, const int &nfirst, - const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, - const int &pbc_flag, const int pbc[]) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, 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 5a1c2beee3d..8802275e310 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.cpp +++ b/src/KOKKOS/atom_vec_sphere_kokkos.cpp @@ -20,13 +20,11 @@ #include "domain.h" #include "error.h" #include "fix.h" +#include "kokkos.h" #include "math_const.h" -#include "memory.h" #include "memory_kokkos.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using namespace MathConst; @@ -152,8 +150,7 @@ struct AtomVecSphereKokkos_PackComm { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_float_1d _radius,_rmass; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -162,14 +159,13 @@ struct AtomVecSphereKokkos_PackComm { const typename DAT::tdual_float_1d &radius, const typename DAT::tdual_float_1d &rmass, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()), _radius(radius.view()), _rmass(rmass.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t elements = 5; @@ -181,7 +177,7 @@ struct AtomVecSphereKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -206,25 +202,24 @@ struct AtomVecSphereKokkos_PackComm { int AtomVecSphereKokkos::pack_comm_kokkos( const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int* const pbc) { // Fallback to AtomVecKokkos if radvary == 0 if (radvary == 0) - return AtomVecKokkos::pack_comm_kokkos(n,list,iswap,buf,pbc_flag,pbc); + return AtomVecKokkos::pack_comm_kokkos(n,list,buf,pbc_flag,pbc); // Check whether to always run forward communication on the host // Choose correct forward PackComm kernel - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|RADIUS_MASK|RMASS_MASK); if (pbc_flag) { if (domain->triclinic) { struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -232,7 +227,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -242,7 +237,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -250,7 +245,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -263,7 +258,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -271,7 +266,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -281,7 +276,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -289,7 +284,7 @@ int AtomVecSphereKokkos::pack_comm_kokkos( struct AtomVecSphereKokkos_PackComm f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -310,8 +305,7 @@ struct AtomVecSphereKokkos_PackCommVel { typename ArrayTypes::t_float_1d _radius,_rmass; typename ArrayTypes::t_v_array _v, _omega; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; X_FLOAT _h_rate[6]; @@ -325,8 +319,7 @@ struct AtomVecSphereKokkos_PackCommVel { const typename DAT::tdual_v_array &v, const typename DAT::tdual_v_array &omega, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int &iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc, const double * const h_rate, @@ -337,7 +330,7 @@ struct AtomVecSphereKokkos_PackCommVel { _rmass(rmass.view()), _v(v.view()), _omega(omega.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz), _deform_vremap(deform_vremap) @@ -353,7 +346,7 @@ struct AtomVecSphereKokkos_PackCommVel { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -398,13 +391,12 @@ struct AtomVecSphereKokkos_PackCommVel { int AtomVecSphereKokkos::pack_comm_vel_kokkos( const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, + const DAT::tdual_int_1d &list, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int* const pbc) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|RADIUS_MASK|RMASS_MASK|V_MASK|OMEGA_MASK); if (pbc_flag) { if (deform_vremap) { @@ -414,7 +406,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -423,7 +415,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -434,7 +426,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -443,7 +435,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -456,7 +448,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -465,7 +457,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -476,7 +468,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -485,7 +477,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -499,7 +491,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -508,7 +500,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -519,7 +511,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -528,7 +520,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -545,7 +537,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -554,7 +546,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -565,7 +557,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -574,7 +566,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -587,7 +579,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -596,7 +588,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -607,7 +599,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -616,7 +608,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -630,7 +622,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -639,7 +631,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -650,7 +642,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -659,7 +651,7 @@ int AtomVecSphereKokkos::pack_comm_vel_kokkos( atomKK->k_x,atomKK->k_mask, atomKK->k_radius,atomKK->k_rmass, atomKK->k_v,atomKK->k_omega, - buf,list,iswap, + buf,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc,h_rate,deform_vremap); Kokkos::parallel_for(n,f); @@ -680,8 +672,7 @@ struct AtomVecSphereKokkos_PackCommSelf { typename ArrayTypes::t_x_array _xw; typename ArrayTypes::t_float_1d _radius,_rmass; int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -690,14 +681,13 @@ struct AtomVecSphereKokkos_PackCommSelf { const typename DAT::tdual_float_1d &radius, const typename DAT::tdual_float_1d &rmass, const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()),_xw(x.view()), _radius(radius.view()), _rmass(rmass.view()), - _nfirst(nfirst),_list(list.view()),_iswap(iswap), + _nfirst(nfirst),_list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; @@ -706,7 +696,7 @@ struct AtomVecSphereKokkos_PackCommSelf { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _xw(i+_nfirst,0) = _x(j,0); _xw(i+_nfirst,1) = _x(j,1); @@ -730,12 +720,12 @@ struct AtomVecSphereKokkos_PackCommSelf { /* ---------------------------------------------------------------------- */ int AtomVecSphereKokkos::pack_comm_self( - const int &n, const DAT::tdual_int_2d &list, const int &iswap, + const int &n, const DAT::tdual_int_1d &list, const int nfirst, const int &pbc_flag, const int* const pbc) { // Fallback to AtomVecKokkos if radvary == 0 if (radvary == 0) - return AtomVecKokkos::pack_comm_self(n,list,iswap,nfirst,pbc_flag,pbc); - if (commKK->forward_comm_on_host) { + return AtomVecKokkos::pack_comm_self(n,list,nfirst,pbc_flag,pbc); + if (lmp->kokkos->forward_comm_on_host) { atomKK->sync(Host,X_MASK|RADIUS_MASK|RMASS_MASK); atomKK->modified(Host,X_MASK|RADIUS_MASK|RMASS_MASK); if (pbc_flag) { @@ -743,7 +733,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -751,7 +741,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -761,7 +751,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -769,7 +759,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -783,7 +773,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -791,7 +781,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -801,7 +791,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -809,7 +799,7 @@ int AtomVecSphereKokkos::pack_comm_self( struct AtomVecSphereKokkos_PackCommSelf f( atomKK->k_x, atomKK->k_radius,atomKK->k_rmass, - nfirst,list,iswap, + nfirst,list, domain->xprd,domain->yprd,domain->zprd, domain->xy,domain->xz,domain->yz,pbc); Kokkos::parallel_for(n,f); @@ -866,7 +856,7 @@ void AtomVecSphereKokkos::unpack_comm_kokkos( AtomVecKokkos::unpack_comm_kokkos(n,first,buf); return; } - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->modified(Host,X_MASK|RADIUS_MASK|RMASS_MASK); struct AtomVecSphereKokkos_UnpackComm f( atomKK->k_x, @@ -938,7 +928,7 @@ struct AtomVecSphereKokkos_UnpackCommVel { void AtomVecSphereKokkos::unpack_comm_vel_kokkos( const int &n, const int &first, const DAT::tdual_xfloat_2d &buf) { - if (commKK->forward_comm_on_host) { + if (lmp->kokkos->forward_comm_on_host) { atomKK->modified(Host,X_MASK|RADIUS_MASK|RMASS_MASK|V_MASK|OMEGA_MASK); if (radvary == 0) { struct AtomVecSphereKokkos_UnpackCommVel f( @@ -982,8 +972,7 @@ struct AtomVecSphereKokkos_PackBorder { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d_um _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -993,8 +982,7 @@ struct AtomVecSphereKokkos_PackBorder { AtomVecSphereKokkos_PackBorder( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int &iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, @@ -1002,7 +990,7 @@ struct AtomVecSphereKokkos_PackBorder { const typename ArrayTypes::t_float_1d &radius, const typename ArrayTypes::t_float_1d &rmass, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask), _radius(radius), _rmass(rmass), @@ -1015,7 +1003,7 @@ struct AtomVecSphereKokkos_PackBorder { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -1036,7 +1024,7 @@ struct AtomVecSphereKokkos_PackBorder { /* ---------------------------------------------------------------------- */ int AtomVecSphereKokkos::pack_border_kokkos( - int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -1057,14 +1045,14 @@ int AtomVecSphereKokkos::pack_border_kokkos( if (space==Host) { AtomVecSphereKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_radius,h_rmass, dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecSphereKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_radius,d_rmass, dx,dy,dz); Kokkos::parallel_for(n,f); @@ -1074,14 +1062,14 @@ int AtomVecSphereKokkos::pack_border_kokkos( if (space==Host) { AtomVecSphereKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_radius,h_rmass, dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecSphereKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_radius,d_rmass, dx,dy,dz); Kokkos::parallel_for(n,f); @@ -1097,8 +1085,7 @@ struct AtomVecSphereKokkos_PackBorderVel { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d_um _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -1110,8 +1097,7 @@ struct AtomVecSphereKokkos_PackBorderVel { AtomVecSphereKokkos_PackBorderVel( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int &iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, @@ -1123,7 +1109,7 @@ struct AtomVecSphereKokkos_PackBorderVel { const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz, const X_FLOAT &dvx, const X_FLOAT &dvy, const X_FLOAT &dvz, const int &deform_groupbit): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask), _radius(radius), _rmass(rmass), @@ -1139,7 +1125,7 @@ struct AtomVecSphereKokkos_PackBorderVel { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -1175,7 +1161,7 @@ struct AtomVecSphereKokkos_PackBorderVel { /* ---------------------------------------------------------------------- */ int AtomVecSphereKokkos::pack_border_vel_kokkos( - int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx=0,dy=0,dz=0; @@ -1198,7 +1184,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( if (space==Host) { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_radius,h_rmass, h_v, h_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1207,7 +1193,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( } else { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_radius,d_rmass, d_v, d_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1222,7 +1208,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( if (space==Host) { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_radius,h_rmass, h_v, h_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1231,7 +1217,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( } else { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_radius,d_rmass, d_v, d_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1243,7 +1229,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( if (space==Host) { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, + h_x,h_tag,h_type,h_mask, h_radius,h_rmass, h_v, h_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1252,7 +1238,7 @@ int AtomVecSphereKokkos::pack_border_vel_kokkos( } else { AtomVecSphereKokkos_PackBorderVel f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, + d_x,d_tag,d_type,d_mask, d_radius,d_rmass, d_v, d_omega, dx,dy,dz,dvx,dvy,dvz, @@ -1448,7 +1434,6 @@ struct AtomVecSphereKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -1468,7 +1453,8 @@ struct AtomVecSphereKokkos_PackExchangeFunctor { _rmassw(atom->k_rmass.view()), _omegaw(atom->k_omega.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsend = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; _buf = typename AT::t_xfloat_2d_um(buf.template view().data(),maxsend,_size_exchange); @@ -1572,7 +1558,6 @@ struct AtomVecSphereKokkos_UnpackExchangeFunctor { typename AT::tdual_int_1d nlocal, typename AT::tdual_int_1d indices, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -1584,9 +1569,7 @@ struct AtomVecSphereKokkos_UnpackExchangeFunctor { _omega(atom->k_omega.view()), _nlocal(nlocal.template view()), _indices(indices.template view()), - _dim(dim), - _lo(lo),_hi(hi) - { + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const size_t size_exchange = 16; const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/size_exchange; diff --git a/src/KOKKOS/atom_vec_sphere_kokkos.h b/src/KOKKOS/atom_vec_sphere_kokkos.h index 34529320d9b..b28da45c6aa 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.h +++ b/src/KOKKOS/atom_vec_sphere_kokkos.h @@ -37,29 +37,27 @@ class AtomVecSphereKokkos : public AtomVecKokkos, public AtomVecSphere { void grow_pointers() override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, + int pack_comm_kokkos(const int &n, const DAT::tdual_int_1d &k_sendlist, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]) override; void unpack_comm_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_vel_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, + int pack_comm_vel_kokkos(const int &n, const DAT::tdual_int_1d &k_sendlist, const DAT::tdual_xfloat_2d &buf, const int &pbc_flag, const int pbc[]) override; void unpack_comm_vel_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf) override; - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, + int pack_comm_self(const int &n, const DAT::tdual_int_1d &list, + const int nfirst, const int &pbc_flag, const int pbc[]) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, ExecutionSpace space) override; - int pack_border_vel_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_vel_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_vel_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_spin_kokkos.cpp b/src/KOKKOS/atom_vec_spin_kokkos.cpp index d2dd3a05aba..7cd0b8934c7 100644 --- a/src/KOKKOS/atom_vec_spin_kokkos.cpp +++ b/src/KOKKOS/atom_vec_spin_kokkos.cpp @@ -26,7 +26,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm_kokkos.h" #include "domain.h" #include "error.h" #include "fix.h" @@ -35,7 +34,7 @@ using namespace LAMMPS_NS; -#define DELTA 10 +static constexpr int DELTA = 10; /* ---------------------------------------------------------------------- */ @@ -157,8 +156,7 @@ struct AtomVecSpinKokkos_PackComm { typename ArrayTypes::t_x_array_randomread _x; typename ArrayTypes::t_sp_array_randomread _sp; typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + typename ArrayTypes::t_int_1d_const _list; X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; X_FLOAT _pbc[6]; @@ -166,12 +164,11 @@ struct AtomVecSpinKokkos_PackComm { const typename DAT::tdual_x_array &x, const typename DAT::tdual_float_1d_4 &sp, const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, + const typename DAT::tdual_int_1d &list, const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): _x(x.view()),_sp(sp.view()), - _list(list.view()),_iswap(iswap), + _list(list.view()), _xprd(xprd),_yprd(yprd),_zprd(zprd), _xy(xy),_xz(xz),_yz(yz) { const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; @@ -183,7 +180,7 @@ struct AtomVecSpinKokkos_PackComm { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -221,8 +218,7 @@ struct AtomVecSpinKokkos_PackBorder { typedef DeviceType device_type; typename ArrayTypes::t_xfloat_2d _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; + const typename ArrayTypes::t_int_1d_const _list; const typename ArrayTypes::t_x_array_randomread _x; const typename ArrayTypes::t_tagint_1d _tag; const typename ArrayTypes::t_int_1d _type; @@ -232,21 +228,20 @@ struct AtomVecSpinKokkos_PackBorder { AtomVecSpinKokkos_PackBorder( const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int & iswap, + const typename ArrayTypes::t_int_1d_const &list, const typename ArrayTypes::t_x_array &x, const typename ArrayTypes::t_tagint_1d &tag, const typename ArrayTypes::t_int_1d &type, const typename ArrayTypes::t_int_1d &mask, const typename ArrayTypes::t_sp_array &sp, const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), + _buf(buf),_list(list), _x(x),_tag(tag),_type(type),_mask(mask),_sp(sp), _dx(dx),_dy(dy),_dz(dz) {} KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - const int j = _list(_iswap,i); + const int j = _list(i); if (PBC_FLAG == 0) { _buf(i,0) = _x(j,0); _buf(i,1) = _x(j,1); @@ -275,7 +270,7 @@ struct AtomVecSpinKokkos_PackBorder { /* ---------------------------------------------------------------------- */ -int AtomVecSpinKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, +int AtomVecSpinKokkos::pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) { X_FLOAT dx,dy,dz; @@ -293,12 +288,12 @@ int AtomVecSpinKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, D if(space==Host) { AtomVecSpinKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecSpinKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); Kokkos::parallel_for(n,f); } @@ -307,12 +302,12 @@ int AtomVecSpinKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, D if(space==Host) { AtomVecSpinKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); + h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); Kokkos::parallel_for(n,f); } else { AtomVecSpinKokkos_PackBorder f( buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); + d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); Kokkos::parallel_for(n,f); } } @@ -410,7 +405,6 @@ struct AtomVecSpinKokkos_PackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d sendlist, typename AT::tdual_int_1d copylist): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -426,7 +420,8 @@ struct AtomVecSpinKokkos_PackExchangeFunctor { _imagew(atom->k_image.view()), _spw(atom->k_sp.view()), _sendlist(sendlist.template view()), - _copylist(copylist.template view()) { + _copylist(copylist.template view()), + _size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)* buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -521,7 +516,6 @@ struct AtomVecSpinKokkos_UnpackExchangeFunctor { const typename AT::tdual_xfloat_2d buf, typename AT::tdual_int_1d nlocal, int dim, X_FLOAT lo, X_FLOAT hi): - _size_exchange(atom->avecKK->size_exchange), _x(atom->k_x.view()), _v(atom->k_v.view()), _tag(atom->k_tag.view()), @@ -529,8 +523,8 @@ struct AtomVecSpinKokkos_UnpackExchangeFunctor { _mask(atom->k_mask.view()), _image(atom->k_image.view()), _sp(atom->k_sp.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi) { + _nlocal(nlocal.template view()), + _dim(dim),_lo(lo),_hi(hi),_size_exchange(atom->avecKK->size_exchange) { const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/_size_exchange; buffer_view(_buf,buf,maxsendlist,_size_exchange); @@ -563,7 +557,7 @@ struct AtomVecSpinKokkos_UnpackExchangeFunctor { int AtomVecSpinKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, ExecutionSpace space, - DAT::tdual_int_1d &k_indices) + DAT::tdual_int_1d &/*k_indices*/) { while (nlocal + nrecv/size_exchange >= nmax) grow(0); @@ -592,7 +586,7 @@ int AtomVecSpinKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int n include f b/c this is invoked from within SPIN pair styles ------------------------------------------------------------------------- */ -void AtomVecSpinKokkos::force_clear(int n, size_t nbytes) +void AtomVecSpinKokkos::force_clear(int /*n*/, size_t nbytes) { int nzero = (double)nbytes/sizeof(double); diff --git a/src/KOKKOS/atom_vec_spin_kokkos.h b/src/KOKKOS/atom_vec_spin_kokkos.h index f0145e4db7e..6f968dcd256 100644 --- a/src/KOKKOS/atom_vec_spin_kokkos.h +++ b/src/KOKKOS/atom_vec_spin_kokkos.h @@ -36,8 +36,8 @@ class AtomVecSpinKokkos : public AtomVecKokkos, public AtomVecSpin { void grow_pointers() override; void force_clear(int, size_t) override; void sort_kokkos(Kokkos::BinSort &Sorter) override; - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, + int pack_border_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_2d buf, int pbc_flag, int *pbc, ExecutionSpace space) override; void unpack_border_kokkos(const int &n, const int &nfirst, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index b586dca7a50..8f821c30367 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -36,9 +36,9 @@ using namespace LAMMPS_NS; -#define BUFFACTOR 1.5 -#define BUFMIN 10000 -#define BUFEXTRA 1000 +static constexpr double BUFFACTOR = 1.5; +static constexpr int BUFMIN = 10000; +static constexpr int BUFEXTRA = 1000; /* ---------------------------------------------------------------------- setup MPI and allocate buffer space @@ -142,11 +142,15 @@ void CommKokkos::init() if (force->newton == 0) check_reverse = 0; if (force->pair) check_reverse += force->pair->comm_reverse_off; - if (!comm_f_only) // not all Kokkos atom_vec styles have reverse pack/unpack routines yet + if (!comm_f_only) {// not all Kokkos atom_vec styles have reverse pack/unpack routines yet reverse_comm_classic = true; + lmp->kokkos->reverse_comm_classic = 1; + } - if (ghost_velocity && atomKK->avecKK->no_comm_vel_flag) // not all Kokkos atom_vec styles have comm vel pack/unpack routines yet + if (ghost_velocity && atomKK->avecKK->no_comm_vel_flag) { // not all Kokkos atom_vec styles have comm vel pack/unpack routines yet forward_comm_classic = true; + lmp->kokkos->forward_comm_classic = 1; + } } /* ---------------------------------------------------------------------- @@ -157,8 +161,8 @@ void CommKokkos::init() void CommKokkos::forward_comm(int dummy) { if (!forward_comm_classic) { - if (forward_comm_on_host) forward_comm_device(dummy); - else forward_comm_device(dummy); + if (forward_comm_on_host) forward_comm_device(); + else forward_comm_device(); return; } @@ -181,7 +185,7 @@ void CommKokkos::forward_comm(int dummy) /* ---------------------------------------------------------------------- */ template -void CommKokkos::forward_comm_device(int) +void CommKokkos::forward_comm_device() { int n; MPI_Request request; @@ -192,7 +196,6 @@ void CommKokkos::forward_comm_device(int) // if comm_x_only set, exchange or copy directly to x, don't unpack k_sendlist.sync(); - atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); if (comm->nprocs == 1 && !ghost_velocity) { k_swap.sync(); @@ -211,26 +214,26 @@ void CommKokkos::forward_comm_device(int) MPI_Irecv(buf,size_forward_recv[iswap],MPI_DOUBLE, recvproc[iswap],0,world,&request); } - n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap],k_sendlist, - iswap,k_buf_send,pbc_flag[iswap],pbc[iswap]); + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap],k_sendlist_iswap, + k_buf_send,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); if (n) { MPI_Send(k_buf_send.view().data(), n,MPI_DOUBLE,sendproc[iswap],0,world); } - if (size_forward_recv[iswap]) { + if (size_forward_recv[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE); - atomKK->modified(ExecutionSpaceFromDevice:: - space,X_MASK); - } + } else if (ghost_velocity) { if (size_forward_recv[iswap]) { MPI_Irecv(k_buf_recv.view().data(), size_forward_recv[iswap],MPI_DOUBLE, recvproc[iswap],0,world,&request); } - n = atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap],k_sendlist,iswap, + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap],k_sendlist_iswap, k_buf_send,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); if (n) { @@ -245,7 +248,8 @@ void CommKokkos::forward_comm_device(int) MPI_Irecv(k_buf_recv.view().data(), size_forward_recv[iswap],MPI_DOUBLE, recvproc[iswap],0,world,&request); - n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap],k_sendlist,iswap, + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap],k_sendlist_iswap, k_buf_send,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); if (n) @@ -257,12 +261,15 @@ void CommKokkos::forward_comm_device(int) } } else { if (!ghost_velocity) { - if (sendnum[iswap]) - n = atomKK->avecKK->pack_comm_self(sendnum[iswap],k_sendlist,iswap, + if (sendnum[iswap]) { + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_self(sendnum[iswap],k_sendlist_iswap, firstrecv[iswap],pbc_flag[iswap],pbc[iswap]); - DeviceType().fence(); + DeviceType().fence(); + } } else { - n = atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap],k_sendlist,iswap, + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap],k_sendlist_iswap, k_buf_send,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); atomKK->avecKK->unpack_comm_vel_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_send); @@ -299,10 +306,10 @@ void CommKokkos::reverse_comm() atomKK->modified(Host,F_MASK); else atomKK->modified(Host,ALL_MASK); - - //atomKK->sync(Device,ALL_MASK); // is this needed? } +/* ---------------------------------------------------------------------- */ + template void CommKokkos::reverse_comm_device() { @@ -315,7 +322,6 @@ void CommKokkos::reverse_comm_device() // if comm_f_only set, exchange or copy directly from f, don't pack k_sendlist.sync(); - atomKK->sync(ExecutionSpaceFromDevice::space,F_MASK); for (int iswap = nswap-1; iswap >= 0; iswap--) { if (sendproc[iswap] != me) { @@ -330,11 +336,9 @@ void CommKokkos::reverse_comm_device() MPI_Send(buf,size_reverse_send[iswap],MPI_DOUBLE, recvproc[iswap],0,world); } - if (size_reverse_recv[iswap]) { + if (size_reverse_recv[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE); - atomKK->modified(ExecutionSpaceFromDevice:: - space,F_MASK); - } + } else { if (size_reverse_recv[iswap]) MPI_Irecv(k_buf_recv.view().data(), @@ -347,18 +351,28 @@ void CommKokkos::reverse_comm_device() MPI_DOUBLE,recvproc[iswap],0,world); if (size_reverse_recv[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE); } - atomKK->avecKK->unpack_reverse_kokkos(sendnum[iswap],k_sendlist,iswap, + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + atomKK->avecKK->unpack_reverse_kokkos(sendnum[iswap],k_sendlist_iswap, k_buf_recv); DeviceType().fence(); } else { - if (sendnum[iswap]) - n = atomKK->avecKK->unpack_reverse_self(sendnum[iswap],k_sendlist,iswap, + if (sendnum[iswap]) { + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = atomKK->avecKK->pack_reverse_self(sendnum[iswap],k_sendlist_iswap, firstrecv[iswap]); + } } } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + forward communication invoked by a Fix + size/nsize used only to set recv buffer limit + size = 0 (default) -> use comm_forward from Fix + size > 0 -> Fix passes max size per atom + the latter is only useful if Fix does several comm modes, + some are smaller than max stored in its comm_forward +------------------------------------------------------------------------- */ void CommKokkos::forward_comm(Fix *fix, int size) { @@ -371,6 +385,8 @@ void CommKokkos::forward_comm(Fix *fix, int size) } } +/* ---------------------------------------------------------------------- */ + template void CommKokkos::forward_comm_device(Fix *fix, int size) { @@ -393,8 +409,9 @@ void CommKokkos::forward_comm_device(Fix *fix, int size) // pack buffer - n = fixKKBase->pack_forward_comm_kokkos(sendnum[iswap],k_sendlist, - iswap,k_buf_send_fix,pbc_flag[iswap],pbc[iswap]); + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = fixKKBase->pack_forward_comm_kokkos(sendnum[iswap],k_sendlist_iswap, + k_buf_send_fix,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); // exchange with another proc @@ -435,7 +452,14 @@ void CommKokkos::forward_comm_device(Fix *fix, int size) } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + reverse communication invoked by a Fix + size/nsize used only to set recv buffer limit + size = 0 (default) -> use comm_forward from Fix + size > 0 -> Fix passes max size per atom + the latter is only useful if Fix does several comm modes, + some are smaller than max stored in its comm_forward +------------------------------------------------------------------------- */ void CommKokkos::reverse_comm(Fix *fix, int size) { @@ -443,18 +467,66 @@ void CommKokkos::reverse_comm(Fix *fix, int size) CommBrick::reverse_comm(fix, size); } + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Fix with variable size data + query fix for pack size to ensure buf_send is big enough + handshake sizes before each Irecv/Send to ensure buf_recv is big enough +------------------------------------------------------------------------- */ + +void CommKokkos::reverse_comm_variable(Fix *fix) +{ + k_sendlist.sync(); + CommBrick::reverse_comm_variable(fix); +} + +/* ---------------------------------------------------------------------- + forward communication invoked by a Compute + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + void CommKokkos::forward_comm(Compute *compute) { k_sendlist.sync(); CommBrick::forward_comm(compute); } +/* ---------------------------------------------------------------------- + forward communication invoked by a Bond + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommKokkos::forward_comm(Bond *bond) +{ + CommBrick::forward_comm(bond); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Bond + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommKokkos::reverse_comm(Bond *bond) +{ + CommBrick::reverse_comm(bond); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Compute + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + void CommKokkos::reverse_comm(Compute *compute) { k_sendlist.sync(); CommBrick::reverse_comm(compute); } +/* ---------------------------------------------------------------------- + forward communication invoked by a Dump + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + void CommKokkos::forward_comm(Pair *pair) { if (pair->execution_space == Host || forward_pair_comm_classic) { @@ -466,6 +538,8 @@ void CommKokkos::forward_comm(Pair *pair) } } +/* ---------------------------------------------------------------------- */ + template void CommKokkos::forward_comm_device(Pair *pair) { @@ -488,8 +562,9 @@ void CommKokkos::forward_comm_device(Pair *pair) // pack buffer - n = pairKKBase->pack_forward_comm_kokkos(sendnum[iswap],k_sendlist, - iswap,k_buf_send_pair,pbc_flag[iswap],pbc[iswap]); + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + n = pairKKBase->pack_forward_comm_kokkos(sendnum[iswap],k_sendlist_iswap, + k_buf_send_pair,pbc_flag[iswap],pbc[iswap]); DeviceType().fence(); // exchange with another proc @@ -530,18 +605,24 @@ void CommKokkos::forward_comm_device(Pair *pair) } } +/* ---------------------------------------------------------------------- */ + void CommKokkos::grow_buf_pair(int n) { max_buf_pair = n * BUFFACTOR; k_buf_send_pair.resize(max_buf_pair); k_buf_recv_pair.resize(max_buf_pair); } +/* ---------------------------------------------------------------------- */ + void CommKokkos::grow_buf_fix(int n) { max_buf_fix = n * BUFFACTOR; k_buf_send_fix.resize(max_buf_fix); k_buf_recv_fix.resize(max_buf_fix); } +/* ---------------------------------------------------------------------- */ + void CommKokkos::reverse_comm(Pair *pair) { if (pair->execution_space == Host || !pair->reverse_comm_device || reverse_pair_comm_classic) { @@ -553,6 +634,8 @@ void CommKokkos::reverse_comm(Pair *pair) } } +/* ---------------------------------------------------------------------- */ + template void CommKokkos::reverse_comm_device(Pair *pair) { @@ -610,18 +693,23 @@ void CommKokkos::reverse_comm_device(Pair *pair) // unpack buffer - pairKKBase->unpack_reverse_comm_kokkos(sendnum[iswap],k_sendlist, - iswap,k_buf_tmp); + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); + pairKKBase->unpack_reverse_comm_kokkos(sendnum[iswap],k_sendlist_iswap, + k_buf_tmp); DeviceType().fence(); } } +/* ---------------------------------------------------------------------- */ + void CommKokkos::forward_comm(Dump *dump) { k_sendlist.sync(); CommBrick::forward_comm(dump); } +/* ---------------------------------------------------------------------- */ + void CommKokkos::reverse_comm(Dump *dump) { k_sendlist.sync(); @@ -668,6 +756,7 @@ void CommKokkos::exchange() } } exchange_comm_classic = true; + lmp->kokkos->exchange_comm_classic = 1; } } } @@ -729,6 +818,14 @@ void CommKokkos::exchange_device() double lo,hi; MPI_Request request; + // clear global->local map for owned and ghost atoms + // b/c atoms migrate to new procs in exchange() and + // new ghosts are created in borders() + // map_set() is done at end of borders() + + if (lmp->kokkos->atom_map_classic) + if (map_style != Atom::MAP_NONE) atom->map_clear(); + // clear ghost count and any ghost bonus data internal to AtomVec atom->nghost = 0; @@ -783,15 +880,8 @@ void CommKokkos::exchange_device() // sort exchange_sendlist - auto d_exchange_sendlist = k_exchange_sendlist.view(); - using KeyViewType = decltype(d_exchange_sendlist); - using BinOp = Kokkos::BinOp1D; - - BinOp binner(count, 0, nlocal); - Kokkos::BinSort Sorter(d_exchange_sendlist, 0, count, binner, true); - Sorter.create_permute_vector(DeviceType()); - Sorter.sort(DeviceType(), d_exchange_sendlist, 0, count); - + auto d_exchange_sendlist = Kokkos::subview(k_exchange_sendlist.view(),std::make_pair(0,count)); + Kokkos::sort(DeviceType(), d_exchange_sendlist); k_exchange_sendlist.sync(); // when atom is deleted, fill it in with last atom @@ -864,7 +954,7 @@ void CommKokkos::exchange_device() if (nrecv) { if (atom->nextra_grow) { - if (k_indices.extent(0) < nrecv/data_size) + if ((int) k_indices.extent(0) < nrecv/data_size) MemoryKokkos::realloc_kokkos(k_indices,"comm:indices",nrecv/data_size); } else if (k_indices.h_view.data()) k_indices = DAT::tdual_int_1d(); @@ -931,6 +1021,7 @@ void CommKokkos::exchange_device() if (nextrarecv) { kkbase->unpack_exchange_kokkos( k_buf_recv,k_indices,nrecv/data_size, + nrecv1/data_size,nextrarecv1, ExecutionSpaceFromDevice::space); DeviceType().fence(); } @@ -971,6 +1062,7 @@ void CommKokkos::borders() "switching to classic exchange/border communication"); } exchange_comm_classic = true; + lmp->kokkos->exchange_comm_classic = 1; } } @@ -1193,14 +1285,15 @@ void CommKokkos::borders_device() { if (nsend*size_border > maxsend) grow_send_kokkos(nsend*size_border,0); if (ghost_velocity) { + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); n = atomKK->avecKK-> - pack_border_vel_kokkos(nsend,k_sendlist,k_buf_send,iswap, + pack_border_vel_kokkos(nsend,k_sendlist_iswap,k_buf_send, pbc_flag[iswap],pbc[iswap],exec_space); DeviceType().fence(); - } - else { + } else { + auto k_sendlist_iswap = Kokkos::subview(k_sendlist,iswap,Kokkos::ALL); n = atomKK->avecKK-> - pack_border_kokkos(nsend,k_sendlist,k_buf_send,iswap, + pack_border_kokkos(nsend,k_sendlist_iswap,k_buf_send, pbc_flag[iswap],pbc[iswap],exec_space); DeviceType().fence(); } diff --git a/src/KOKKOS/comm_kokkos.h b/src/KOKKOS/comm_kokkos.h index e06810b9393..4fb4dfbe29f 100644 --- a/src/KOKKOS/comm_kokkos.h +++ b/src/KOKKOS/comm_kokkos.h @@ -45,18 +45,21 @@ class CommKokkos : public CommBrick { void exchange() override; // move atoms to new procs void borders() override; // setup list of atoms to comm - void forward_comm(class Pair *) override; // forward comm from a Pair - void reverse_comm(class Pair *) override; // reverse comm from a Pair - void forward_comm(class Fix *, int size=0) override; // forward comm from a Fix - void reverse_comm(class Fix *, int size=0) override; // reverse comm from a Fix - void forward_comm(class Compute *) override; // forward from a Compute - void reverse_comm(class Compute *) override; // reverse from a Compute - void forward_comm(class Dump *) override; // forward comm from a Dump - void reverse_comm(class Dump *) override; // reverse comm from a Dump + void forward_comm(class Pair *) override; // forward comm from a Pair + void reverse_comm(class Pair *) override; // reverse comm from a Pair + void forward_comm(class Bond *) override; // forward comm from a Bond + void reverse_comm(class Bond *) override; // reverse comm from a Bond + void forward_comm(class Fix *, int size = 0) override; // forward comm from a Fix + void reverse_comm(class Fix *, int size = 0) override; // reverse comm from a Fix + void reverse_comm_variable(class Fix *) override; // variable size reverse comm from a Fix + void forward_comm(class Compute *) override; // forward from a Compute + void reverse_comm(class Compute *) override; // reverse from a Compute + void forward_comm(class Dump *) override; // forward comm from a Dump + void reverse_comm(class Dump *) override; // reverse comm from a Dump void forward_comm_array(int, double **) override; // forward comm of array - template void forward_comm_device(int dummy); + template void forward_comm_device(); template void reverse_comm_device(); template void forward_comm_device(Pair *pair); template void reverse_comm_device(Pair *pair); @@ -95,7 +98,6 @@ class CommKokkos : public CommBrick { void copy_swap_info(); }; -} +} // namespace LAMMPS_NS #endif - diff --git a/src/KOKKOS/comm_tiled_kokkos.cpp b/src/KOKKOS/comm_tiled_kokkos.cpp index e3286a73f50..2e4ca30bed6 100644 --- a/src/KOKKOS/comm_tiled_kokkos.cpp +++ b/src/KOKKOS/comm_tiled_kokkos.cpp @@ -16,21 +16,28 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "atom_vec.h" +#include "atom_vec_kokkos.h" +#include "compute.h" +#include "dump.h" +#include "fix.h" +#include "force.h" +#include "kokkos.h" +#include "memory_kokkos.h" +#include "modify.h" +#include "output.h" using namespace LAMMPS_NS; -#define BUFFACTOR 1.5 -#define BUFFACTOR 1.5 -#define BUFMIN 1000 -#define BUFEXTRA 1000 -#define EPSILON 1.0e-6 - -#define DELTA_PROCS 16 +static constexpr double BUFFACTOR = 1.5; +static constexpr int BUFMIN = 1024; +static constexpr int BUFEXTRA = 1000; /* ---------------------------------------------------------------------- */ -CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp) : CommTiled(_lmp) {} +CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp) : CommTiled(_lmp) +{ + sendlist = nullptr; +} /* ---------------------------------------------------------------------- */ //IMPORTANT: we *MUST* pass "*oldcomm" to the Comm initializer here, as @@ -39,10 +46,69 @@ CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp) : CommTiled(_lmp) {} // The call to Comm::copy_arrays() then converts the shallow copy // into a deep copy of the class with the new layout. -CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp, Comm *oldcomm) : CommTiled(_lmp,oldcomm) {} +CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp, Comm *oldcomm) : CommTiled(_lmp,oldcomm) +{ + sendlist = nullptr; +} /* ---------------------------------------------------------------------- */ +CommTiledKokkos::~CommTiledKokkos() +{ + memoryKK->destroy_kokkos(k_sendlist,sendlist); + sendlist = nullptr; + buf_send = nullptr; + buf_recv = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +void CommTiledKokkos::init() +{ + atomKK = (AtomKokkos *) atom; + exchange_comm_classic = lmp->kokkos->exchange_comm_classic; + forward_comm_classic = lmp->kokkos->forward_comm_classic; + forward_pair_comm_classic = lmp->kokkos->forward_pair_comm_classic; + reverse_pair_comm_classic = lmp->kokkos->reverse_pair_comm_classic; + forward_fix_comm_classic = lmp->kokkos->forward_fix_comm_classic; + reverse_comm_classic = lmp->kokkos->reverse_comm_classic; + exchange_comm_on_host = lmp->kokkos->exchange_comm_on_host; + forward_comm_on_host = lmp->kokkos->forward_comm_on_host; + reverse_comm_on_host = lmp->kokkos->reverse_comm_on_host; + + CommTiled::init(); + + int check_forward = 0; + int check_reverse = 0; + if (force->pair && (force->pair->execution_space == Host)) + check_forward += force->pair->comm_forward; + if (force->pair && (force->pair->execution_space == Host)) + check_reverse += force->pair->comm_reverse; + + for (const auto &fix : modify->get_fix_list()) { + check_forward += fix->comm_forward; + check_reverse += fix->comm_reverse; + } + + for (const auto &compute : modify->get_compute_list()) { + check_forward += compute->comm_forward; + check_reverse += compute->comm_reverse; + } + + for (const auto &dump : output->get_dump_list()) { + check_forward += dump->comm_forward; + check_reverse += dump->comm_reverse; + } + + if (force->newton == 0) check_reverse = 0; + if (force->pair) check_reverse += force->pair->comm_reverse_off; + + if (!comm_f_only) { // not all Kokkos atom_vec styles have reverse pack/unpack routines yet + reverse_comm_classic = true; + lmp->kokkos->reverse_comm_classic = 1; + } +} + /* ---------------------------------------------------------------------- forward communication of atom coords every timestep other per-atom attributes may also be sent via pack/unpack routines @@ -50,6 +116,14 @@ CommTiledKokkos::CommTiledKokkos(LAMMPS *_lmp, Comm *oldcomm) : CommTiled(_lmp,o void CommTiledKokkos::forward_comm(int dummy) { + if (!forward_comm_classic) { + if (forward_comm_on_host) forward_comm_device(); + else forward_comm_device(); + return; + } + + k_sendlist.sync(); + if (comm_x_only) { atomKK->sync(Host,X_MASK); atomKK->modified(Host,X_MASK); @@ -64,6 +138,127 @@ void CommTiledKokkos::forward_comm(int dummy) CommTiled::forward_comm(dummy); } +/* ---------------------------------------------------------------------- */ + +template +void CommTiledKokkos::forward_comm_device() +{ + int i,irecv,n,nsend,nrecv; + double *buf; + + // exchange data with another set of procs in each swap + // post recvs from all procs except self + // send data to all procs except self + // copy data to self if sendself is set + // wait on all procs except self and unpack received data + // if comm_x_only set, exchange or copy directly to x, don't unpack + + k_sendlist.sync(); + + for (int iswap = 0; iswap < nswap; iswap++) { + nsend = nsendproc[iswap] - sendself[iswap]; + nrecv = nrecvproc[iswap] - sendself[iswap]; + + if (comm_x_only) { + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + buf = atomKK->k_x.view().data() + + firstrecv[iswap][i]*atomKK->k_x.view().extent(1); + MPI_Irecv(buf,size_forward_recv[iswap][i], + MPI_DOUBLE,recvproc[iswap][i],0,world,&requests[i]); + } + } + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,i,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap][i],k_sendlist_small, + k_buf_send,pbc_flag[iswap][i],pbc[iswap][i]); + DeviceType().fence(); + MPI_Send(k_buf_send.view().data(),n,MPI_DOUBLE,sendproc[iswap][i],0,world); + } + } + if (sendself[iswap]) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,nsend,Kokkos::ALL); + atomKK->avecKK->pack_comm_self(sendnum[iswap][nsend],k_sendlist_small, + firstrecv[iswap][nrecv],pbc_flag[iswap][nsend],pbc[iswap][nsend]); + DeviceType().fence(); + } + if (recvother[iswap]) MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); + + } else if (ghost_velocity) { + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + buf = k_buf_recv.view().data() + + forward_recv_offset[iswap][i]*k_buf_recv.view().extent(1); + MPI_Irecv(buf, + size_forward_recv[iswap][i],MPI_DOUBLE,recvproc[iswap][i],0,world,&requests[i]); + } + } + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,i,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap][i],k_sendlist_small, + k_buf_send,pbc_flag[iswap][i],pbc[iswap][i]); + DeviceType().fence(); + MPI_Send(k_buf_send.view().data(),n, + MPI_DOUBLE,sendproc[iswap][i],0,world); + } + } + if (sendself[iswap]) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,nsend,Kokkos::ALL); + atomKK->avecKK->pack_comm_vel_kokkos(sendnum[iswap][nsend],k_sendlist_small, + k_buf_send,pbc_flag[iswap][nsend],pbc[iswap][nsend]); + DeviceType().fence(); + atomKK->avecKK->unpack_comm_vel_kokkos(recvnum[iswap][nrecv],firstrecv[iswap][nrecv],k_buf_send); + DeviceType().fence(); + } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + MPI_Waitany(nrecv,requests,&irecv,MPI_STATUS_IGNORE); + auto k_buf_recv_offset = Kokkos::subview(k_buf_recv,std::pair(forward_recv_offset[iswap][irecv],(int)k_buf_recv.extent(0)),Kokkos::ALL); + atomKK->avecKK->unpack_comm_vel_kokkos(recvnum[iswap][irecv],firstrecv[iswap][irecv], + k_buf_recv_offset); + DeviceType().fence(); + } + } + + } else { + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + buf = k_buf_recv.view().data() + + forward_recv_offset[iswap][i]*k_buf_recv.view().extent(1); + MPI_Irecv(buf, + size_forward_recv[iswap][i],MPI_DOUBLE,recvproc[iswap][i],0,world,&requests[i]); + } + } + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,i,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap][i],k_sendlist_small, + k_buf_send,pbc_flag[iswap][i],pbc[iswap][i]); + DeviceType().fence(); + MPI_Send(k_buf_send.view().data(),n,MPI_DOUBLE,sendproc[iswap][i],0,world); + } + } + if (sendself[iswap]) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,nsend,Kokkos::ALL); + n = atomKK->avecKK->pack_comm_kokkos(sendnum[iswap][nsend],k_sendlist_small, + k_buf_send,pbc_flag[iswap][nsend],pbc[iswap][nsend]); + DeviceType().fence(); + } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + MPI_Waitany(nrecv,requests,&irecv,MPI_STATUS_IGNORE); + auto k_buf_recv_offset = Kokkos::subview(k_buf_recv,std::pair(forward_recv_offset[iswap][irecv],(int)k_buf_recv.extent(0)),Kokkos::ALL); + atomKK->avecKK->unpack_comm_kokkos(recvnum[iswap][irecv],firstrecv[iswap][irecv], + k_buf_recv_offset); + DeviceType().fence(); + } + } + } + } +} + /* ---------------------------------------------------------------------- reverse communication of forces on atoms every timestep other per-atom attributes may also be sent via pack/unpack routines @@ -71,16 +266,117 @@ void CommTiledKokkos::forward_comm(int dummy) void CommTiledKokkos::reverse_comm() { + if (!reverse_comm_classic) { + if (reverse_comm_on_host) reverse_comm_device(); + else reverse_comm_device(); + return; + } + + k_sendlist.sync(); + if (comm_f_only) atomKK->sync(Host,F_MASK); else atomKK->sync(Host,ALL_MASK); + CommTiled::reverse_comm(); + if (comm_f_only) atomKK->modified(Host,F_MASK); else atomKK->modified(Host,ALL_MASK); - atomKK->sync(Device,ALL_MASK); +} + +/* ---------------------------------------------------------------------- */ + +template +void CommTiledKokkos::reverse_comm_device() +{ + int i,irecv,n,nsend,nrecv; + double *buf; + + // exchange data with another set of procs in each swap + // post recvs from all procs except self + // send data to all procs except self + // copy data to self if sendself is set + // wait on all procs except self and unpack received data + // if comm_f_only set, exchange or copy directly from f, don't pack + + k_sendlist.sync(); + + for (int iswap = nswap-1; iswap >= 0; iswap--) { + nsend = nsendproc[iswap] - sendself[iswap]; + nrecv = nrecvproc[iswap] - sendself[iswap]; + + if (comm_f_only) { + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + buf = k_buf_recv.view().data() + + reverse_recv_offset[iswap][i]*k_buf_recv.view().extent(1); + MPI_Irecv(buf, + size_reverse_recv[iswap][i],MPI_DOUBLE,sendproc[iswap][i],0,world,&requests[i]); + } + } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + buf = atomKK->k_f.view().data() + + firstrecv[iswap][i]*atomKK->k_f.view().extent(1); + MPI_Send(buf,size_reverse_send[iswap][i], + MPI_DOUBLE,recvproc[iswap][i],0,world); + } + } + if (sendself[iswap]) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,nsend,Kokkos::ALL); + atomKK->avecKK->pack_reverse_self(sendnum[iswap][nsend],k_sendlist_small, + firstrecv[iswap][nrecv]); + DeviceType().fence(); + } + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + MPI_Waitany(nsend,requests,&irecv,MPI_STATUS_IGNORE); + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,irecv,Kokkos::ALL); + auto k_buf_recv_offset = Kokkos::subview(k_buf_recv,std::pair(reverse_recv_offset[iswap][irecv],(int)k_buf_recv.extent(0)),Kokkos::ALL); + atomKK->avecKK->unpack_reverse_kokkos(sendnum[iswap][irecv],k_sendlist_small, + k_buf_recv_offset); + DeviceType().fence(); + } + } + + } else { + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + buf = k_buf_recv.view().data() + + reverse_recv_offset[iswap][i]*k_buf_recv.view().extent(1); + MPI_Irecv(buf, + size_reverse_recv[iswap][i],MPI_DOUBLE,sendproc[iswap][i],0,world,&requests[i]); + } + } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + n = atomKK->avecKK->pack_reverse_kokkos(recvnum[iswap][i],firstrecv[iswap][i],k_buf_send); + DeviceType().fence(); + MPI_Send(k_buf_send.view().data(),n,MPI_DOUBLE,recvproc[iswap][i],0,world); + } + } + if (sendself[iswap]) { + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,nsend,Kokkos::ALL); + atomKK->avecKK->pack_reverse_kokkos(recvnum[iswap][nrecv],firstrecv[iswap][nrecv],k_buf_send); + DeviceType().fence(); + atomKK->avecKK->unpack_reverse_kokkos(sendnum[iswap][nsend],k_sendlist_small,k_buf_send); + DeviceType().fence(); + } + if (sendother[iswap]) { + for (i = 0; i < nsend; i++) { + MPI_Waitany(nsend,requests,&irecv,MPI_STATUS_IGNORE); + auto k_sendlist_small = Kokkos::subview(k_sendlist,iswap,irecv,Kokkos::ALL); + auto k_buf_recv_offset = Kokkos::subview(k_buf_recv,std::pair(reverse_recv_offset[iswap][irecv],(int)k_buf_recv.extent(0)),Kokkos::ALL); + atomKK->avecKK->unpack_reverse_kokkos(sendnum[iswap][irecv],k_sendlist_small, + k_buf_recv_offset); + DeviceType().fence(); + } + } + } + } } /* ---------------------------------------------------------------------- @@ -116,6 +412,7 @@ void CommTiledKokkos::borders() atomKK->sync(Host,ALL_MASK); CommTiled::borders(); atomKK->modified(Host,ALL_MASK); + k_sendlist.modify_host(); } /* ---------------------------------------------------------------------- @@ -138,6 +435,26 @@ void CommTiledKokkos::reverse_comm(Pair *pair) CommTiled::reverse_comm(pair); } +/* ---------------------------------------------------------------------- + forward communication invoked by a Bond + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm(Bond *bond) +{ + CommTiled::forward_comm(bond); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Bond + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm(Bond *bond) +{ + CommTiled::reverse_comm(bond); +} + /* ---------------------------------------------------------------------- forward communication invoked by a Fix size/nsize used only to set recv buffer limit @@ -226,3 +543,141 @@ void CommTiledKokkos::forward_comm_array(int nsize, double **array) { CommTiled::forward_comm_array(nsize,array); } + +/* ---------------------------------------------------------------------- + realloc the size of the send buffer as needed with BUFFACTOR and bufextra + if flag = 1, realloc + if flag = 0, don't need to realloc with copy, just free/malloc +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_send(int n, int flag) +{ + grow_send_kokkos(n,flag,Host); +} + +/* ---------------------------------------------------------------------- + free/malloc the size of the recv buffer as needed with BUFFACTOR +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_recv(int n, int flag) +{ + grow_recv_kokkos(n,flag,Host); +} + +/* ---------------------------------------------------------------------- + realloc the size of the send buffer as needed with BUFFACTOR & BUFEXTRA + if flag = 1, realloc + if flag = 0, don't need to realloc with copy, just free/malloc +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_send_kokkos(int n, int flag, ExecutionSpace space) +{ + + maxsend = static_cast (BUFFACTOR * n); + int maxsend_border = (maxsend+BUFEXTRA)/atomKK->avecKK->size_border; + if (flag) { + if (space == Device) + k_buf_send.modify(); + else + k_buf_send.modify(); + + if (ghost_velocity) + k_buf_send.resize(maxsend_border, + atomKK->avecKK->size_border + atomKK->avecKK->size_velocity); + else + k_buf_send.resize(maxsend_border,atomKK->avecKK->size_border); + buf_send = k_buf_send.view().data(); + } else { + if (ghost_velocity) + MemoryKokkos::realloc_kokkos(k_buf_send,"comm:k_buf_send",maxsend_border, + atomKK->avecKK->size_border + atomKK->avecKK->size_velocity); + else + MemoryKokkos::realloc_kokkos(k_buf_send,"comm:k_buf_send",maxsend_border, + atomKK->avecKK->size_border); + buf_send = k_buf_send.view().data(); + } +} + +/* ---------------------------------------------------------------------- + free/malloc the size of the recv buffer as needed with BUFFACTOR +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_recv_kokkos(int n, int flag, ExecutionSpace /*space*/) +{ + if (flag) maxrecv = n; + else maxrecv = static_cast (BUFFACTOR * n); + + int maxrecv_border = (maxrecv+BUFEXTRA)/atomKK->avecKK->size_border; + + MemoryKokkos::realloc_kokkos(k_buf_recv,"comm:k_buf_recv",maxrecv_border, + atomKK->avecKK->size_border); + buf_recv = k_buf_recv.view().data(); +} + +/* ---------------------------------------------------------------------- + realloc the size of the iswap sendlist as needed with BUFFACTOR +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_list(int iswap, int iwhich, int n) +{ + int size = static_cast (BUFFACTOR * n); + + k_sendlist.sync(); + k_sendlist.modify(); + + if (size > (int)k_sendlist.extent(2)) { + memoryKK->grow_kokkos(k_sendlist,sendlist,maxswap,maxsend,size,"comm:sendlist"); + + for (int i = 0; i < maxswap; i++) + maxsendlist[iswap][iwhich] = size; + } +} + +/* ---------------------------------------------------------------------- + grow info for swap I, to allow for N procs to communicate with + ditto for complementary recv for swap I+1 or I-1, as invoked by caller +------------------------------------------------------------------------- */ + +void CommTiledKokkos::grow_swap_send(int i, int n, int /*nold*/) +{ + delete [] sendproc[i]; + sendproc[i] = new int[n]; + delete [] sendnum[i]; + sendnum[i] = new int[n]; + + delete [] size_reverse_recv[i]; + size_reverse_recv[i] = new int[n]; + delete [] reverse_recv_offset[i]; + reverse_recv_offset[i] = new int[n]; + + delete [] pbc_flag[i]; + pbc_flag[i] = new int[n]; + memory->destroy(pbc[i]); + memory->create(pbc[i],n,6,"comm:pbc_flag"); + memory->destroy(sendbox[i]); + memory->create(sendbox[i],n,6,"comm:sendbox"); + grow_swap_send_multi(i,n); + memory->destroy(sendbox_multiold[i]); + memory->create(sendbox_multiold[i],n,atom->ntypes+1,6,"comm:sendbox_multiold"); + + delete [] maxsendlist[i]; + maxsendlist[i] = new int[n]; + + for (int j = 0; j < n; j++) + maxsendlist[i][j] = BUFMIN; + + if (sendlist && !k_sendlist.d_view.data()) { + for (int ii = 0; ii < maxswap; ii++) { + if (sendlist[ii]) { + for (int jj = 0; jj < nprocmax[ii]; jj++) + memory->destroy(sendlist[ii][jj]); + delete [] sendlist[ii]; + } + } + delete [] sendlist; + } else { + memoryKK->destroy_kokkos(k_sendlist,sendlist); + } + + memoryKK->create_kokkos(k_sendlist,sendlist,maxswap,n,BUFMIN,"comm:sendlist"); +} diff --git a/src/KOKKOS/comm_tiled_kokkos.h b/src/KOKKOS/comm_tiled_kokkos.h index c80436b454b..90337147967 100644 --- a/src/KOKKOS/comm_tiled_kokkos.h +++ b/src/KOKKOS/comm_tiled_kokkos.h @@ -25,28 +25,59 @@ class CommTiledKokkos : public CommTiled { CommTiledKokkos(class LAMMPS *); CommTiledKokkos(class LAMMPS *, class Comm *); + ~CommTiledKokkos() override; + + bool exchange_comm_classic; + bool forward_comm_classic; + bool forward_pair_comm_classic; + bool reverse_pair_comm_classic; + bool forward_fix_comm_classic; + bool reverse_comm_classic; + bool exchange_comm_on_host; + bool forward_comm_on_host; + bool reverse_comm_on_host; + using CommTiled::forward_comm; using CommTiled::reverse_comm; + + void init() override; void forward_comm(int dummy = 0) override; // forward comm of atom coords void reverse_comm() override; // reverse comm of forces void exchange() override; // move atoms to new procs void borders() override; // setup list of atoms to comm - void forward_comm(class Pair *) override; // forward comm from a Pair - void reverse_comm(class Pair *) override; // reverse comm from a Pair - void forward_comm(class Fix *, int size=0) override; - // forward comm from a Fix - void reverse_comm(class Fix *, int size=0) override; - // reverse comm from a Fix - void reverse_comm_variable(class Fix *) override; - // variable size reverse comm from a Fix - void forward_comm(class Compute *) override; // forward from a Compute - void reverse_comm(class Compute *) override; // reverse from a Compute - void forward_comm(class Dump *) override; // forward comm from a Dump - void reverse_comm(class Dump *) override; // reverse comm from a Dump + void forward_comm(class Pair *) override; // forward comm from a Pair + void reverse_comm(class Pair *) override; // reverse comm from a Pair + void forward_comm(class Bond *) override; // forward comm from a Bond + void reverse_comm(class Bond *) override; // reverse comm from a Bond + void forward_comm(class Fix *, int size = 0) override; // forward comm from a Fix + void reverse_comm(class Fix *, int size = 0) override; // reverse comm from a Fix + void reverse_comm_variable(class Fix *) override; // variable size reverse comm from a Fix + void forward_comm(class Compute *) override; // forward from a Compute + void reverse_comm(class Compute *) override; // reverse from a Compute + void forward_comm(class Dump *) override; // forward comm from a Dump + void reverse_comm(class Dump *) override; // reverse comm from a Dump void forward_comm_array(int, double **) override; // forward comm of array + + template void forward_comm_device(); + template void reverse_comm_device(); + + protected: + + DAT::tdual_int_3d k_sendlist; + //DAT::tdual_int_scalar k_total_send; + DAT::tdual_xfloat_2d k_buf_send,k_buf_recv; + //DAT::tdual_int_scalar k_count; + + void grow_send(int, int) override; + void grow_recv(int, int flag = 0) override; + void grow_send_kokkos(int, int, ExecutionSpace space = Host); + void grow_recv_kokkos(int, int, ExecutionSpace space = Host); + void grow_list(int, int, int) override; + void grow_swap_send(int, int, int) override; // grow swap arrays for send and recv }; -} -#endif +} // namespace LAMMPS_NS + +#endif diff --git a/src/KOKKOS/compute_ave_sphere_atom_kokkos.cpp b/src/KOKKOS/compute_ave_sphere_atom_kokkos.cpp index 87fe3621e46..57f1f2bb18d 100644 --- a/src/KOKKOS/compute_ave_sphere_atom_kokkos.cpp +++ b/src/KOKKOS/compute_ave_sphere_atom_kokkos.cpp @@ -21,19 +21,12 @@ #include "atom_masks.h" #include "comm.h" #include "domain.h" -#include "error.h" #include "force.h" #include "memory_kokkos.h" -#include "modify.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor_kokkos.h" -#include "pair.h" #include "update.h" -#include -#include - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/compute_composition_atom_kokkos.cpp b/src/KOKKOS/compute_composition_atom_kokkos.cpp index 2b0e663011a..47056951e74 100644 --- a/src/KOKKOS/compute_composition_atom_kokkos.cpp +++ b/src/KOKKOS/compute_composition_atom_kokkos.cpp @@ -19,21 +19,11 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm.h" -#include "domain.h" -#include "error.h" -#include "force.h" #include "memory_kokkos.h" -#include "modify.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor_kokkos.h" -#include "pair.h" #include "update.h" -#include -#include - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/compute_coord_atom_kokkos.cpp b/src/KOKKOS/compute_coord_atom_kokkos.cpp index 089a94f4986..2d56a53abee 100644 --- a/src/KOKKOS/compute_coord_atom_kokkos.cpp +++ b/src/KOKKOS/compute_coord_atom_kokkos.cpp @@ -20,8 +20,6 @@ #include "compute_orientorder_atom_kokkos.h" #include "error.h" #include "memory_kokkos.h" -#include "modify.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor_kokkos.h" #include "update.h" diff --git a/src/KOKKOS/compute_erotate_sphere_kokkos.cpp b/src/KOKKOS/compute_erotate_sphere_kokkos.cpp index 9fc477b3a03..d18aa3d27a8 100644 --- a/src/KOKKOS/compute_erotate_sphere_kokkos.cpp +++ b/src/KOKKOS/compute_erotate_sphere_kokkos.cpp @@ -16,8 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "error.h" -#include "force.h" #include "update.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 35699cb5c18..447f15b830d 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -24,14 +24,11 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "kokkos.h" #include "math_const.h" #include "math_special.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor_kokkos.h" -#include "pair.h" #include "update.h" #include diff --git a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp index 8dbcb9441e5..0683e63752f 100644 --- a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -18,16 +18,12 @@ #include "compute_reaxff_atom_kokkos.h" #include "atom.h" -#include "molecule.h" #include "update.h" -#include "force.h" -#include "memory.h" #include "error.h" #include "neigh_list.h" #include "memory_kokkos.h" #include "pair_reaxff_kokkos.h" -#include "reaxff_api.h" using namespace LAMMPS_NS; using namespace ReaxFF; @@ -67,10 +63,10 @@ void ComputeReaxFFAtomKokkos::init() template void ComputeReaxFFAtomKokkos::compute_bonds() { - if (atom->nlocal > nlocal) { + if (atom->nmax > nmax) { memory->destroy(array_atom); - nlocal = atom->nlocal; - memory->create(array_atom, nlocal, 3, "reaxff/atom:array_atom"); + nmax = atom->nmax; + memory->create(array_atom, nmax, 3, "reaxff/atom:array_atom"); } // retrieve bond information from kokkos pair style. the data potentially @@ -85,9 +81,10 @@ void ComputeReaxFFAtomKokkos::compute_bonds() else host_pair()->FindBond(maxnumbonds, groupbit); + const int nlocal = atom->nlocal; nbuf = ((store_bonds ? maxnumbonds*2 : 0) + 3)*nlocal; - if (!buf || k_buf.extent(0) < nbuf) { + if (!buf || ((int)k_buf.extent(0) < nbuf)) { memoryKK->destroy_kokkos(k_buf, buf); memoryKK->create_kokkos(k_buf, buf, nbuf, "reaxff/atom:buf"); } @@ -135,6 +132,7 @@ void ComputeReaxFFAtomKokkos::compute_local() int b = 0; int j = 0; auto tag = atom->tag; + const int nlocal = atom->nlocal; for (int i = 0; i < nlocal; ++i) { const int numbonds = static_cast(buf[j+2]); @@ -161,6 +159,7 @@ void ComputeReaxFFAtomKokkos::compute_peratom() compute_bonds(); // extract peratom bond information from buffer + const int nlocal = atom->nlocal; int j = 0; for (int i = 0; i < nlocal; ++i) { @@ -180,7 +179,7 @@ void ComputeReaxFFAtomKokkos::compute_peratom() template double ComputeReaxFFAtomKokkos::memory_usage() { - double bytes = (double)(nlocal*3) * sizeof(double); + double bytes = (double)(nmax*3) * sizeof(double); if (store_bonds) bytes += (double)(nbonds*3) * sizeof(double); bytes += (double)(nbuf > 0 ? nbuf * sizeof(double) : 0); diff --git a/src/KOKKOS/compute_temp_deform_kokkos.cpp b/src/KOKKOS/compute_temp_deform_kokkos.cpp index 55db344d6ac..03aba5b10d3 100644 --- a/src/KOKKOS/compute_temp_deform_kokkos.cpp +++ b/src/KOKKOS/compute_temp_deform_kokkos.cpp @@ -24,7 +24,6 @@ #include "domain_kokkos.h" #include "error.h" #include "force.h" -#include "memory_kokkos.h" #include "update.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/compute_temp_kokkos.cpp b/src/KOKKOS/compute_temp_kokkos.cpp index ebdd6971e01..78a35440c81 100644 --- a/src/KOKKOS/compute_temp_kokkos.cpp +++ b/src/KOKKOS/compute_temp_kokkos.cpp @@ -21,8 +21,6 @@ #include "force.h" #include "update.h" -#include - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_charmm_kokkos.cpp b/src/KOKKOS/dihedral_charmm_kokkos.cpp index 70a74a48468..b385ec7f010 100644 --- a/src/KOKKOS/dihedral_charmm_kokkos.cpp +++ b/src/KOKKOS/dihedral_charmm_kokkos.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_charmmfsw_kokkos.cpp b/src/KOKKOS/dihedral_charmmfsw_kokkos.cpp new file mode 100644 index 00000000000..aeb9b022a7b --- /dev/null +++ b/src/KOKKOS/dihedral_charmmfsw_kokkos.cpp @@ -0,0 +1,815 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: Mitch Murphy (alphataubio) + + Based on serial dihedral_charmmfsw.cpp lj-fsw sections (force-switched) + provided by Robert Meissner and Lucio Colombi Ciacchi of Bremen + University, Germany, with additional assistance from + Robert A. Latour, Clemson University. + +------------------------------------------------------------------------- */ + +#include "dihedral_charmmfsw_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "error.h" +#include "force.h" +#include "kokkos.h" +#include "math_const.h" +#include "memory_kokkos.h" +#include "neighbor_kokkos.h" +#include "pair.h" + +#include + +using namespace LAMMPS_NS; +using namespace MathConst; + +static constexpr double TOLERANCE = 0.05; + +/* ---------------------------------------------------------------------- */ + +template +DihedralCharmmfswKokkos::DihedralCharmmfswKokkos(LAMMPS *lmp) : DihedralCharmmfsw(lmp) +{ + atomKK = (AtomKokkos *) atom; + neighborKK = (NeighborKokkos *) neighbor; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK | TYPE_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + k_warning_flag = Kokkos::DualView("Dihedral:warning_flag"); + d_warning_flag = k_warning_flag.template view(); + h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; +} + +/* ---------------------------------------------------------------------- */ + +template +DihedralCharmmfswKokkos::~DihedralCharmmfswKokkos() +{ + if (!copymode) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void DihedralCharmmfswKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (lmp->kokkos->neighflag == FULL) + error->all(FLERR,"Dihedral_style charmm/kk requires half neighbor list"); + + ev_init(eflag,vflag,0); + + // ensure pair->ev_tally() will use 1-4 virial contribution + + if (weightflag && vflag_global == VIRIAL_FDOTR) + force->pair->vflag_either = force->pair->vflag_global = 1; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + //if(k_eatom.extent(0)destroy_kokkos(k_eatom,eatom); + memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"dihedral:eatom"); + d_eatom = k_eatom.template view(); + k_eatom_pair = Kokkos::DualView("dihedral:eatom_pair",maxeatom); + d_eatom_pair = k_eatom_pair.template view(); + //} + } + if (vflag_atom) { + //if(k_vatom.extent(0)destroy_kokkos(k_vatom,vatom); + memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"dihedral:vatom"); + d_vatom = k_vatom.template view(); + k_vatom_pair = Kokkos::DualView("dihedral:vatom_pair",maxvatom); + d_vatom_pair = k_vatom_pair.template view(); + //} + } + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + q = atomKK->k_q.view(); + atomtype = atomKK->k_type.view(); + neighborKK->k_dihedrallist.template sync(); + dihedrallist = neighborKK->k_dihedrallist.view(); + int ndihedrallist = neighborKK->ndihedrallist; + nlocal = atom->nlocal; + newton_bond = force->newton_bond; + qqrd2e = force->qqrd2e; + + h_warning_flag() = 0; + k_warning_flag.template modify(); + k_warning_flag.template sync(); + + copymode = 1; + + // loop over neighbors of my atoms + + EVM_FLOAT evm; + + if (evflag) { + if (newton_bond) { + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,ndihedrallist),*this,evm); + } else { + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,ndihedrallist),*this,evm); + } + } else { + if (newton_bond) { + Kokkos::parallel_for(Kokkos::RangePolicy >(0,ndihedrallist),*this); + } else { + Kokkos::parallel_for(Kokkos::RangePolicy >(0,ndihedrallist),*this); + } + } + + // error check + + k_warning_flag.template modify(); + k_warning_flag.template sync(); + if (h_warning_flag()) + error->warning(FLERR,"Dihedral problem"); + + if (eflag_global) { + energy += evm.emol; + force->pair->eng_vdwl += evm.evdwl; + force->pair->eng_coul += evm.ecoul; + } + if (vflag_global) { + virial[0] += evm.v[0]; + virial[1] += evm.v[1]; + virial[2] += evm.v[2]; + virial[3] += evm.v[3]; + virial[4] += evm.v[4]; + virial[5] += evm.v[5]; + + force->pair->virial[0] += evm.vp[0]; + force->pair->virial[1] += evm.vp[1]; + force->pair->virial[2] += evm.vp[2]; + force->pair->virial[3] += evm.vp[3]; + force->pair->virial[4] += evm.vp[4]; + force->pair->virial[5] += evm.vp[5]; + } + + // don't yet have dualviews for eatom and vatom in pair_kokkos, + // so need to manually copy these to pair style + + int n = nlocal; + if (newton_bond) n += atom->nghost; + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + + k_eatom_pair.template modify(); + k_eatom_pair.template sync(); + for (int i = 0; i < n; i++) + force->pair->eatom[i] += k_eatom_pair.h_view(i); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + + k_vatom_pair.template modify(); + k_vatom_pair.template sync(); + for (int i = 0; i < n; i++) { + force->pair->vatom[i][0] += k_vatom_pair.h_view(i,0); + force->pair->vatom[i][1] += k_vatom_pair.h_view(i,1); + force->pair->vatom[i][2] += k_vatom_pair.h_view(i,2); + force->pair->vatom[i][3] += k_vatom_pair.h_view(i,3); + force->pair->vatom[i][4] += k_vatom_pair.h_view(i,4); + force->pair->vatom[i][5] += k_vatom_pair.h_view(i,5); + } + } + + copymode = 0; +} + +template +template +KOKKOS_INLINE_FUNCTION +void DihedralCharmmfswKokkos::operator()(TagDihedralCharmmfswCompute, const int &n, EVM_FLOAT& evm) const { + + // The f array is atomic + Kokkos::View::value,Kokkos::MemoryTraits > a_f = f; + + const int i1 = dihedrallist(n,0); + const int i2 = dihedrallist(n,1); + const int i3 = dihedrallist(n,2); + const int i4 = dihedrallist(n,3); + const int type = dihedrallist(n,4); + + // 1st bond + + const F_FLOAT vb1x = x(i1,0) - x(i2,0); + const F_FLOAT vb1y = x(i1,1) - x(i2,1); + const F_FLOAT vb1z = x(i1,2) - x(i2,2); + + // 2nd bond + + const F_FLOAT vb2x = x(i3,0) - x(i2,0); + const F_FLOAT vb2y = x(i3,1) - x(i2,1); + const F_FLOAT vb2z = x(i3,2) - x(i2,2); + + const F_FLOAT vb2xm = -vb2x; + const F_FLOAT vb2ym = -vb2y; + const F_FLOAT vb2zm = -vb2z; + + // 3rd bond + + const F_FLOAT vb3x = x(i4,0) - x(i3,0); + const F_FLOAT vb3y = x(i4,1) - x(i3,1); + const F_FLOAT vb3z = x(i4,2) - x(i3,2); + + const F_FLOAT ax = vb1y*vb2zm - vb1z*vb2ym; + const F_FLOAT ay = vb1z*vb2xm - vb1x*vb2zm; + const F_FLOAT az = vb1x*vb2ym - vb1y*vb2xm; + const F_FLOAT bx = vb3y*vb2zm - vb3z*vb2ym; + const F_FLOAT by = vb3z*vb2xm - vb3x*vb2zm; + const F_FLOAT bz = vb3x*vb2ym - vb3y*vb2xm; + + const F_FLOAT rasq = ax*ax + ay*ay + az*az; + const F_FLOAT rbsq = bx*bx + by*by + bz*bz; + const F_FLOAT rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm; + const F_FLOAT rg = sqrt(rgsq); + + F_FLOAT rginv,ra2inv,rb2inv; + rginv = ra2inv = rb2inv = 0.0; + if (rg > 0) rginv = 1.0/rg; + if (rasq > 0) ra2inv = 1.0/rasq; + if (rbsq > 0) rb2inv = 1.0/rbsq; + const F_FLOAT rabinv = sqrt(ra2inv*rb2inv); + + F_FLOAT c = (ax*bx + ay*by + az*bz)*rabinv; + F_FLOAT s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); + + // error check + + if ((c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) && !d_warning_flag()) + d_warning_flag() = 1; + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + const int m = d_multiplicity[type]; + F_FLOAT p = 1.0; + F_FLOAT ddf1,df1; + ddf1 = df1 = 0.0; + + for (int i = 0; i < m; i++) { + ddf1 = p*c - df1*s; + df1 = p*s + df1*c; + p = ddf1; + } + + p = p*d_cos_shift[type] + df1*d_sin_shift[type]; + df1 = df1*d_cos_shift[type] - ddf1*d_sin_shift[type]; + df1 *= -m; + p += 1.0; + + if (m == 0) { + p = 1.0 + d_cos_shift[type]; + df1 = 0.0; + } + + E_FLOAT edihedral = 0.0; + if (eflag) edihedral = d_k[type] * p; + + const F_FLOAT fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm; + const F_FLOAT hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm; + const F_FLOAT fga = fg*ra2inv*rginv; + const F_FLOAT hgb = hg*rb2inv*rginv; + const F_FLOAT gaa = -ra2inv*rg; + const F_FLOAT gbb = rb2inv*rg; + + const F_FLOAT dtfx = gaa*ax; + const F_FLOAT dtfy = gaa*ay; + const F_FLOAT dtfz = gaa*az; + const F_FLOAT dtgx = fga*ax - hgb*bx; + const F_FLOAT dtgy = fga*ay - hgb*by; + const F_FLOAT dtgz = fga*az - hgb*bz; + const F_FLOAT dthx = gbb*bx; + const F_FLOAT dthy = gbb*by; + const F_FLOAT dthz = gbb*bz; + + const F_FLOAT df = -d_k[type] * df1; + + const F_FLOAT sx2 = df*dtgx; + const F_FLOAT sy2 = df*dtgy; + const F_FLOAT sz2 = df*dtgz; + + F_FLOAT f1[3],f2[3],f3[3],f4[3]; + f1[0] = df*dtfx; + f1[1] = df*dtfy; + f1[2] = df*dtfz; + + f2[0] = sx2 - f1[0]; + f2[1] = sy2 - f1[1]; + f2[2] = sz2 - f1[2]; + + f4[0] = df*dthx; + f4[1] = df*dthy; + f4[2] = df*dthz; + + f3[0] = -sx2 - f4[0]; + f3[1] = -sy2 - f4[1]; + f3[2] = -sz2 - f4[2]; + + // apply force to each of 4 atoms + + if (NEWTON_BOND || i1 < nlocal) { + a_f(i1,0) += f1[0]; + a_f(i1,1) += f1[1]; + a_f(i1,2) += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + a_f(i2,0) += f2[0]; + a_f(i2,1) += f2[1]; + a_f(i2,2) += f2[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + a_f(i3,0) += f3[0]; + a_f(i3,1) += f3[1]; + a_f(i3,2) += f3[2]; + } + + if (NEWTON_BOND || i4 < nlocal) { + a_f(i4,0) += f4[0]; + a_f(i4,1) += f4[1]; + a_f(i4,2) += f4[2]; + } + + if (EVFLAG) + ev_tally(evm,i1,i2,i3,i4,edihedral,f1,f3,f4, + vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z); + + // 1-4 LJ and Coulomb interactions + // tally energy/virial in pair, using newton_bond as newton flag + + if (d_weight[type] > 0.0) { + const int itype = atomtype[i1]; + const int jtype = atomtype[i4]; + + const F_FLOAT delx = x(i1,0) - x(i4,0); + const F_FLOAT dely = x(i1,1) - x(i4,1); + const F_FLOAT delz = x(i1,2) - x(i4,2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + const F_FLOAT r2inv = 1.0/rsq; + const F_FLOAT r6inv = r2inv*r2inv*r2inv; + + F_FLOAT forcecoul; + if (implicit) forcecoul = qqrd2e * q[i1]*q[i4]*r2inv; + else forcecoul = qqrd2e * q[i1]*q[i4]*sqrt(r2inv); + const F_FLOAT forcelj = r6inv * (d_lj14_1(itype,jtype)*r6inv - d_lj14_2(itype,jtype)); + const F_FLOAT fpair = d_weight[type] * (forcelj+forcecoul)*r2inv; + + const F_FLOAT r = sqrt(rsq); + F_FLOAT ecoul = 0.0; + F_FLOAT evdwl = 0.0; + F_FLOAT evdwl14_12, evdwl14_6; + if (eflag) { + if (dihedflag) + ecoul = d_weight[type] * forcecoul; + else + ecoul = d_weight[type] * qqrd2e * q[i1] * q[i4] * + (sqrt(r2inv) + r * cut_coulinv14 * cut_coulinv14 - 2.0 * cut_coulinv14); + evdwl14_12 = r6inv * d_lj14_3(itype,jtype) * r6inv - + d_lj14_3(itype,jtype) * cut_lj_inner6inv * cut_lj6inv; + evdwl14_6 = + -d_lj14_4(itype,jtype) * r6inv + d_lj14_4(itype,jtype) * cut_lj_inner3inv * cut_lj3inv; + evdwl = evdwl14_12 + evdwl14_6; + evdwl *= d_weight[type]; + } + + if (newton_bond || i1 < nlocal) { + a_f(i1,0) += delx*fpair; + a_f(i1,1) += dely*fpair; + a_f(i1,2) += delz*fpair; + } + if (newton_bond || i4 < nlocal) { + a_f(i4,0) -= delx*fpair; + a_f(i4,1) -= dely*fpair; + a_f(i4,2) -= delz*fpair; + } + + if (EVFLAG) ev_tally(evm,i1,i4,evdwl,ecoul,fpair,delx,dely,delz); + } +} + +template +template +KOKKOS_INLINE_FUNCTION +void DihedralCharmmfswKokkos::operator()(TagDihedralCharmmfswCompute, const int &n) const { + EVM_FLOAT evm; + this->template operator()(TagDihedralCharmmfswCompute(), n, evm); +} + +/* ---------------------------------------------------------------------- */ + +template +void DihedralCharmmfswKokkos::allocate() +{ + DihedralCharmmfsw::allocate(); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more types +------------------------------------------------------------------------- */ + +template +void DihedralCharmmfswKokkos::coeff(int narg, char **arg) +{ + DihedralCharmmfsw::coeff(narg, arg); + + int nd = atom->ndihedraltypes; + typename AT::tdual_ffloat_1d k_k("DihedralCharmmfsw::k",nd+1); + typename AT::tdual_ffloat_1d k_multiplicity("DihedralCharmmfsw::multiplicity",nd+1); + typename AT::tdual_ffloat_1d k_shift("DihedralCharmmfsw::shift",nd+1); + typename AT::tdual_ffloat_1d k_cos_shift("DihedralCharmmfsw::cos_shift",nd+1); + typename AT::tdual_ffloat_1d k_sin_shift("DihedralCharmmfsw::sin_shift",nd+1); + typename AT::tdual_ffloat_1d k_weight("DihedralCharmmfsw::weight",nd+1); + + d_k = k_k.template view(); + d_multiplicity = k_multiplicity.template view(); + d_shift = k_shift.template view(); + d_cos_shift = k_cos_shift.template view(); + d_sin_shift = k_sin_shift.template view(); + d_weight = k_weight.template view(); + + int n = atom->ndihedraltypes; + for (int i = 1; i <= n; i++) { + k_k.h_view[i] = k[i]; + k_multiplicity.h_view[i] = multiplicity[i]; + k_shift.h_view[i] = shift[i]; + k_cos_shift.h_view[i] = cos_shift[i]; + k_sin_shift.h_view[i] = sin_shift[i]; + k_weight.h_view[i] = weight[i]; + } + + k_k.template modify(); + k_multiplicity.template modify(); + k_shift.template modify(); + k_cos_shift.template modify(); + k_sin_shift.template modify(); + k_weight.template modify(); + + k_k.template sync(); + k_multiplicity.template sync(); + k_shift.template sync(); + k_cos_shift.template sync(); + k_sin_shift.template sync(); + k_weight.template sync(); +} + +/* ---------------------------------------------------------------------- + error check and initialize all values needed for force computation +------------------------------------------------------------------------- */ + +template +void DihedralCharmmfswKokkos::init_style() +{ + DihedralCharmmfsw::init_style(); + + int n = atom->ntypes; + DAT::tdual_ffloat_2d k_lj14_1("DihedralCharmmfsw:lj14_1",n+1,n+1); + DAT::tdual_ffloat_2d k_lj14_2("DihedralCharmmfsw:lj14_2",n+1,n+1); + DAT::tdual_ffloat_2d k_lj14_3("DihedralCharmmfsw:lj14_3",n+1,n+1); + DAT::tdual_ffloat_2d k_lj14_4("DihedralCharmmfsw:lj14_4",n+1,n+1); + + d_lj14_1 = k_lj14_1.template view(); + d_lj14_2 = k_lj14_2.template view(); + d_lj14_3 = k_lj14_3.template view(); + d_lj14_4 = k_lj14_4.template view(); + + + if (weightflag) { + int n = atom->ntypes; + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + k_lj14_1.h_view(i,j) = lj14_1[i][j]; + k_lj14_2.h_view(i,j) = lj14_2[i][j]; + k_lj14_3.h_view(i,j) = lj14_3[i][j]; + k_lj14_4.h_view(i,j) = lj14_4[i][j]; + } + } + } + + k_lj14_1.template modify(); + k_lj14_2.template modify(); + k_lj14_3.template modify(); + k_lj14_4.template modify(); + + k_lj14_1.template sync(); + k_lj14_2.template sync(); + k_lj14_3.template sync(); + k_lj14_4.template sync(); +} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +template +void DihedralCharmmfswKokkos::read_restart(FILE *fp) +{ + DihedralCharmmfsw::read_restart(fp); + + int nd = atom->ndihedraltypes; + typename AT::tdual_ffloat_1d k_k("DihedralCharmmfsw::k",nd+1); + typename AT::tdual_ffloat_1d k_multiplicity("DihedralCharmmfsw::multiplicity",nd+1); + typename AT::tdual_ffloat_1d k_shift("DihedralCharmmfsw::shift",nd+1); + typename AT::tdual_ffloat_1d k_cos_shift("DihedralCharmmfsw::cos_shift",nd+1); + typename AT::tdual_ffloat_1d k_sin_shift("DihedralCharmmfsw::sin_shift",nd+1); + typename AT::tdual_ffloat_1d k_weight("DihedralCharmmfsw::weight",nd+1); + + d_k = k_k.template view(); + d_multiplicity = k_multiplicity.template view(); + d_shift = k_shift.template view(); + d_cos_shift = k_cos_shift.template view(); + d_sin_shift = k_sin_shift.template view(); + d_weight = k_weight.template view(); + + int n = atom->ndihedraltypes; + for (int i = 1; i <= n; i++) { + k_k.h_view[i] = k[i]; + k_multiplicity.h_view[i] = multiplicity[i]; + k_shift.h_view[i] = shift[i]; + k_cos_shift.h_view[i] = cos_shift[i]; + k_sin_shift.h_view[i] = sin_shift[i]; + k_weight.h_view[i] = weight[i]; + } + + k_k.template modify(); + k_multiplicity.template modify(); + k_shift.template modify(); + k_cos_shift.template modify(); + k_sin_shift.template modify(); + k_weight.template modify(); + + k_k.template sync(); + k_multiplicity.template sync(); + k_shift.template sync(); + k_cos_shift.template sync(); + k_sin_shift.template sync(); + k_weight.template sync(); +} + +/* ---------------------------------------------------------------------- + tally energy and virial into global and per-atom accumulators + virial = r1F1 + r2F2 + r3F3 + r4F4 = (r1-r2) F1 + (r3-r2) F3 + (r4-r2) F4 + = (r1-r2) F1 + (r3-r2) F3 + (r4-r3 + r3-r2) F4 + = vb1*f1 + vb2*f3 + (vb3+vb2)*f4 +------------------------------------------------------------------------- */ + +template +//template +KOKKOS_INLINE_FUNCTION +void DihedralCharmmfswKokkos::ev_tally(EVM_FLOAT &evm, const int i1, const int i2, const int i3, const int i4, + F_FLOAT &edihedral, F_FLOAT *f1, F_FLOAT *f3, F_FLOAT *f4, + const F_FLOAT &vb1x, const F_FLOAT &vb1y, const F_FLOAT &vb1z, + const F_FLOAT &vb2x, const F_FLOAT &vb2y, const F_FLOAT &vb2z, + const F_FLOAT &vb3x, const F_FLOAT &vb3y, const F_FLOAT &vb3z) const +{ + E_FLOAT edihedralquarter; + F_FLOAT v[6]; + + if (eflag_either) { + if (eflag_global) { + if (newton_bond) evm.emol += edihedral; + else { + edihedralquarter = 0.25*edihedral; + if (i1 < nlocal) evm.emol += edihedralquarter; + if (i2 < nlocal) evm.emol += edihedralquarter; + if (i3 < nlocal) evm.emol += edihedralquarter; + if (i4 < nlocal) evm.emol += edihedralquarter; + } + } + if (eflag_atom) { + edihedralquarter = 0.25*edihedral; + if (newton_bond || i1 < nlocal) d_eatom[i1] += edihedralquarter; + if (newton_bond || i2 < nlocal) d_eatom[i2] += edihedralquarter; + if (newton_bond || i3 < nlocal) d_eatom[i3] += edihedralquarter; + if (newton_bond || i4 < nlocal) d_eatom[i4] += edihedralquarter; + } + } + + if (vflag_either) { + v[0] = vb1x*f1[0] + vb2x*f3[0] + (vb3x+vb2x)*f4[0]; + v[1] = vb1y*f1[1] + vb2y*f3[1] + (vb3y+vb2y)*f4[1]; + v[2] = vb1z*f1[2] + vb2z*f3[2] + (vb3z+vb2z)*f4[2]; + v[3] = vb1x*f1[1] + vb2x*f3[1] + (vb3x+vb2x)*f4[1]; + v[4] = vb1x*f1[2] + vb2x*f3[2] + (vb3x+vb2x)*f4[2]; + v[5] = vb1y*f1[2] + vb2y*f3[2] + (vb3y+vb2y)*f4[2]; + + if (vflag_global) { + if (newton_bond) { + evm.v[0] += v[0]; + evm.v[1] += v[1]; + evm.v[2] += v[2]; + evm.v[3] += v[3]; + evm.v[4] += v[4]; + evm.v[5] += v[5]; + } else { + if (i1 < nlocal) { + evm.v[0] += 0.25*v[0]; + evm.v[1] += 0.25*v[1]; + evm.v[2] += 0.25*v[2]; + evm.v[3] += 0.25*v[3]; + evm.v[4] += 0.25*v[4]; + evm.v[5] += 0.25*v[5]; + } + if (i2 < nlocal) { + evm.v[0] += 0.25*v[0]; + evm.v[1] += 0.25*v[1]; + evm.v[2] += 0.25*v[2]; + evm.v[3] += 0.25*v[3]; + evm.v[4] += 0.25*v[4]; + evm.v[5] += 0.25*v[5]; + } + if (i3 < nlocal) { + evm.v[0] += 0.25*v[0]; + evm.v[1] += 0.25*v[1]; + evm.v[2] += 0.25*v[2]; + evm.v[3] += 0.25*v[3]; + evm.v[4] += 0.25*v[4]; + evm.v[5] += 0.25*v[5]; + } + if (i4 < nlocal) { + evm.v[0] += 0.25*v[0]; + evm.v[1] += 0.25*v[1]; + evm.v[2] += 0.25*v[2]; + evm.v[3] += 0.25*v[3]; + evm.v[4] += 0.25*v[4]; + evm.v[5] += 0.25*v[5]; + } + } + } + + if (vflag_atom) { + if (newton_bond || i1 < nlocal) { + d_vatom(i1,0) += 0.25*v[0]; + d_vatom(i1,1) += 0.25*v[1]; + d_vatom(i1,2) += 0.25*v[2]; + d_vatom(i1,3) += 0.25*v[3]; + d_vatom(i1,4) += 0.25*v[4]; + d_vatom(i1,5) += 0.25*v[5]; + } + if (newton_bond || i2 < nlocal) { + d_vatom(i2,0) += 0.25*v[0]; + d_vatom(i2,1) += 0.25*v[1]; + d_vatom(i2,2) += 0.25*v[2]; + d_vatom(i2,3) += 0.25*v[3]; + d_vatom(i2,4) += 0.25*v[4]; + d_vatom(i2,5) += 0.25*v[5]; + } + if (newton_bond || i3 < nlocal) { + d_vatom(i3,0) += 0.25*v[0]; + d_vatom(i3,1) += 0.25*v[1]; + d_vatom(i3,2) += 0.25*v[2]; + d_vatom(i3,3) += 0.25*v[3]; + d_vatom(i3,4) += 0.25*v[4]; + d_vatom(i3,5) += 0.25*v[5]; + } + if (newton_bond || i4 < nlocal) { + d_vatom(i4,0) += 0.25*v[0]; + d_vatom(i4,1) += 0.25*v[1]; + d_vatom(i4,2) += 0.25*v[2]; + d_vatom(i4,3) += 0.25*v[3]; + d_vatom(i4,4) += 0.25*v[4]; + d_vatom(i4,5) += 0.25*v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- + tally eng_vdwl and virial into global and per-atom accumulators + need i < nlocal test since called by bond_quartic and dihedral_charmm +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void DihedralCharmmfswKokkos::ev_tally(EVM_FLOAT &evm, const int i, const int j, + const F_FLOAT &evdwl, const F_FLOAT &ecoul, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + E_FLOAT evdwlhalf,ecoulhalf,epairhalf; + F_FLOAT v[6]; + + + if (eflag_either) { + if (eflag_global) { + if (newton_bond) { + evm.evdwl += evdwl; + evm.ecoul += ecoul; + } else { + evdwlhalf = 0.5*evdwl; + ecoulhalf = 0.5*ecoul; + if (i < nlocal) { + evm.evdwl += evdwlhalf; + evm.ecoul += ecoulhalf; + } + if (j < nlocal) { + evm.evdwl += evdwlhalf; + evm.ecoul += ecoulhalf; + } + } + } + if (eflag_atom) { + epairhalf = 0.5 * (evdwl + ecoul); + if (newton_bond || i < nlocal) d_eatom_pair[i] += epairhalf; + if (newton_bond || j < nlocal) d_eatom_pair[j] += epairhalf; + } + } + + if (vflag_either) { + v[0] = delx*delx*fpair; + v[1] = dely*dely*fpair; + v[2] = delz*delz*fpair; + v[3] = delx*dely*fpair; + v[4] = delx*delz*fpair; + v[5] = dely*delz*fpair; + + if (vflag_global) { + if (newton_bond) { + evm.vp[0] += v[0]; + evm.vp[1] += v[1]; + evm.vp[2] += v[2]; + evm.vp[3] += v[3]; + evm.vp[4] += v[4]; + evm.vp[5] += v[5]; + } else { + if (i < nlocal) { + evm.vp[0] += 0.5*v[0]; + evm.vp[1] += 0.5*v[1]; + evm.vp[2] += 0.5*v[2]; + evm.vp[3] += 0.5*v[3]; + evm.vp[4] += 0.5*v[4]; + evm.vp[5] += 0.5*v[5]; + } + if (j < nlocal) { + evm.vp[0] += 0.5*v[0]; + evm.vp[1] += 0.5*v[1]; + evm.vp[2] += 0.5*v[2]; + evm.vp[3] += 0.5*v[3]; + evm.vp[4] += 0.5*v[4]; + evm.vp[5] += 0.5*v[5]; + } + } + } + + if (vflag_atom) { + if (newton_bond || i < nlocal) { + d_vatom_pair(i,0) += 0.5*v[0]; + d_vatom_pair(i,1) += 0.5*v[1]; + d_vatom_pair(i,2) += 0.5*v[2]; + d_vatom_pair(i,3) += 0.5*v[3]; + d_vatom_pair(i,4) += 0.5*v[4]; + d_vatom_pair(i,5) += 0.5*v[5]; + } + if (newton_bond || j < nlocal) { + d_vatom_pair(j,0) += 0.5*v[0]; + d_vatom_pair(j,1) += 0.5*v[1]; + d_vatom_pair(j,2) += 0.5*v[2]; + d_vatom_pair(j,3) += 0.5*v[3]; + d_vatom_pair(j,4) += 0.5*v[4]; + d_vatom_pair(j,5) += 0.5*v[5]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class DihedralCharmmfswKokkos; +#ifdef LMP_KOKKOS_GPU +template class DihedralCharmmfswKokkos; +#endif +} + diff --git a/src/KOKKOS/dihedral_charmmfsw_kokkos.h b/src/KOKKOS/dihedral_charmmfsw_kokkos.h new file mode 100644 index 00000000000..b1c65ae4770 --- /dev/null +++ b/src/KOKKOS/dihedral_charmmfsw_kokkos.h @@ -0,0 +1,118 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 DIHEDRAL_CLASS +// clang-format off +DihedralStyle(charmmfsw/kk,DihedralCharmmfswKokkos); +DihedralStyle(charmmfsw/kk/device,DihedralCharmmfswKokkos); +DihedralStyle(charmmfsw/kk/host,DihedralCharmmfswKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_DIHEDRAL_CHARMMFSW_KOKKOS_H +#define LMP_DIHEDRAL_CHARMMFSW_KOKKOS_H + +#include "dihedral_charmmfsw.h" +#include "kokkos_type.h" +#include "dihedral_charmm_kokkos.h" // needed for s_EVM_FLOAT + +namespace LAMMPS_NS { + +template +struct TagDihedralCharmmfswCompute{}; + +template +class DihedralCharmmfswKokkos : public DihedralCharmmfsw { + public: + typedef DeviceType device_type; + typedef EVM_FLOAT value_type; + typedef ArrayTypes AT; + + DihedralCharmmfswKokkos(class LAMMPS *); + ~DihedralCharmmfswKokkos() override; + void compute(int, int) override; + void coeff(int, char **) override; + void init_style() override; + void read_restart(FILE *) override; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagDihedralCharmmfswCompute, const int&, EVM_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagDihedralCharmmfswCompute, const int&) const; + + //template + KOKKOS_INLINE_FUNCTION + void ev_tally(EVM_FLOAT &evm, const int i1, const int i2, const int i3, const int i4, + F_FLOAT &edihedral, F_FLOAT *f1, F_FLOAT *f3, F_FLOAT *f4, + const F_FLOAT &vb1x, const F_FLOAT &vb1y, const F_FLOAT &vb1z, + const F_FLOAT &vb2x, const F_FLOAT &vb2y, const F_FLOAT &vb2z, + const F_FLOAT &vb3x, const F_FLOAT &vb3y, const F_FLOAT &vb3z) const; + + KOKKOS_INLINE_FUNCTION + void ev_tally(EVM_FLOAT &evm, const int i, const int j, + const F_FLOAT &evdwl, const F_FLOAT &ecoul, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + protected: + + class NeighborKokkos *neighborKK; + + typename AT::t_x_array_randomread x; + typename AT::t_int_1d_randomread atomtype; + typename AT::t_ffloat_1d_randomread q; + typename AT::t_f_array f; + typename AT::t_int_2d dihedrallist; + + typedef typename KKDevice::value KKDeviceType; + Kokkos::DualView k_eatom; + Kokkos::DualView k_vatom; + Kokkos::View > d_eatom; + Kokkos::View > d_vatom; + + Kokkos::DualView k_eatom_pair; + Kokkos::DualView k_vatom_pair; + Kokkos::View > d_eatom_pair; + Kokkos::View > d_vatom_pair; + + int nlocal,newton_bond; + int eflag,vflag; + double qqrd2e; + + Kokkos::DualView k_warning_flag; + typename Kokkos::DualView::t_dev d_warning_flag; + typename Kokkos::DualView::t_host h_warning_flag; + + typename AT::t_ffloat_2d d_lj14_1; + typename AT::t_ffloat_2d d_lj14_2; + typename AT::t_ffloat_2d d_lj14_3; + typename AT::t_ffloat_2d d_lj14_4; + + typename AT::t_ffloat_1d d_k; + typename AT::t_ffloat_1d d_multiplicity; + typename AT::t_ffloat_1d d_shift; + typename AT::t_ffloat_1d d_sin_shift; + typename AT::t_ffloat_1d d_cos_shift; + typename AT::t_ffloat_1d d_weight; + + void allocate() override; +}; + +} + +#endif +#endif + diff --git a/src/KOKKOS/dihedral_class2_kokkos.cpp b/src/KOKKOS/dihedral_class2_kokkos.cpp index 2d6032600b2..204a6d0d1a5 100644 --- a/src/KOKKOS/dihedral_class2_kokkos.cpp +++ b/src/KOKKOS/dihedral_class2_kokkos.cpp @@ -30,9 +30,8 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_harmonic_kokkos.cpp b/src/KOKKOS/dihedral_harmonic_kokkos.cpp index 8ca0b368dfd..78860800bef 100644 --- a/src/KOKKOS/dihedral_harmonic_kokkos.cpp +++ b/src/KOKKOS/dihedral_harmonic_kokkos.cpp @@ -30,9 +30,7 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_opls_kokkos.cpp b/src/KOKKOS/dihedral_opls_kokkos.cpp index 670faa9e84d..ce7502b25a8 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.cpp +++ b/src/KOKKOS/dihedral_opls_kokkos.cpp @@ -30,9 +30,9 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/domain_kokkos.cpp b/src/KOKKOS/domain_kokkos.cpp index 6311d45a3f2..d0865c6afb8 100644 --- a/src/KOKKOS/domain_kokkos.cpp +++ b/src/KOKKOS/domain_kokkos.cpp @@ -22,8 +22,7 @@ using namespace LAMMPS_NS; -#define BIG 1.0e20 -#define SMALL 1.0e-4 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ @@ -81,6 +80,11 @@ struct DomainResetBoxFunctor{ void DomainKokkos::reset_box() { // perform shrink-wrapping + + // nothing to do for empty systems + + if (atom->natoms == 0) return; + // compute extent of atoms on this proc // for triclinic, this is done in lamda space diff --git a/src/KOKKOS/dynamical_matrix_kokkos.cpp b/src/KOKKOS/dynamical_matrix_kokkos.cpp index 32986025e6d..e4c454c7f24 100644 --- a/src/KOKKOS/dynamical_matrix_kokkos.cpp +++ b/src/KOKKOS/dynamical_matrix_kokkos.cpp @@ -23,27 +23,18 @@ #include "atom_masks.h" #include "bond.h" #include "comm.h" -#include "compute.h" #include "dihedral.h" #include "domain.h" -#include "error.h" -#include "finish.h" #include "force.h" -#include "group.h" #include "improper.h" #include "kokkos.h" #include "kspace.h" -#include "memory.h" #include "modify.h" #include "neighbor.h" #include "pair.h" #include "timer.h" #include "update.h" -#include -#include -#include - using namespace LAMMPS_NS; enum{REGULAR,ESKM}; @@ -174,72 +165,45 @@ void DynamicalMatrixKokkos::update_force() } bool execute_on_host = false; - unsigned int datamask_read_device = 0; - unsigned int datamask_modify_device = 0; unsigned int datamask_read_host = 0; if (pair_compute_flag) { if (force->pair->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->pair->datamask_read; - datamask_modify_device |= force->pair->datamask_modify; - } else { - datamask_read_device |= force->pair->datamask_read; - datamask_modify_device |= force->pair->datamask_modify; } } if (atomKK->molecular && force->bond) { if (force->bond->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->bond->datamask_read; - datamask_modify_device |= force->bond->datamask_modify; - } else { - datamask_read_device |= force->bond->datamask_read; - datamask_modify_device |= force->bond->datamask_modify; } } if (atomKK->molecular && force->angle) { if (force->angle->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->angle->datamask_read; - datamask_modify_device |= force->angle->datamask_modify; - } else { - datamask_read_device |= force->angle->datamask_read; - datamask_modify_device |= force->angle->datamask_modify; } } if (atomKK->molecular && force->dihedral) { if (force->dihedral->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->dihedral->datamask_read; - datamask_modify_device |= force->dihedral->datamask_modify; - } else { - datamask_read_device |= force->dihedral->datamask_read; - datamask_modify_device |= force->dihedral->datamask_modify; } } if (atomKK->molecular && force->improper) { if (force->improper->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->improper->datamask_read; - datamask_modify_device |= force->improper->datamask_modify; - } else { - datamask_read_device |= force->improper->datamask_read; - datamask_modify_device |= force->improper->datamask_modify; } } if (kspace_compute_flag) { if (force->kspace->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->kspace->datamask_read; - datamask_modify_device |= force->kspace->datamask_modify; - } else { - datamask_read_device |= force->kspace->datamask_read; - datamask_modify_device |= force->kspace->datamask_modify; } } - if (pair_compute_flag) { atomKK->sync(force->pair->execution_space,force->pair->datamask_read); atomKK->sync(force->pair->execution_space,~(~force->pair->datamask_read|(F_MASK | ENERGY_MASK | VIRIAL_MASK))); diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 82e4140f779..202d46e788e 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -13,8 +13,9 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Stan Moore (SNL), Sam Mish (U.C. Davis) + Contributing authors: Stan Moore (SNL), Sam Mish (U.C. Davis), Nick Hagerty (ORNL) ------------------------------------------------------------------------- */ + #include "fft3d_kokkos.h" #include "error.h" @@ -25,9 +26,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B) ? (A) : (B)) -#define MAX(A,B) ((A) > (B) ? (A) : (B)) - /* ---------------------------------------------------------------------- */ template @@ -37,27 +35,30 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int int out_ilo, int out_ihi, int out_jlo, int out_jhi, int out_klo, int out_khi, int scaled, int permute, int *nbuf, int usecollective, - int usecuda_aware) : + int usegpu_aware) : Pointers(lmp) { int nthreads = lmp->kokkos->nthreads; + +#if defined(LMP_KOKKOS_GPU) int ngpus = lmp->kokkos->ngpus; ExecutionSpace execution_space = ExecutionSpaceFromDevice::space; +#endif -#if defined(FFT_MKL) +#if defined(FFT_KOKKOS_MKL) if (ngpus > 0 && execution_space == Device) lmp->error->all(FLERR,"Cannot use the MKL library with Kokkos on GPUs"); -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) if (ngpus > 0 && execution_space == Device) lmp->error->all(FLERR,"Cannot use the FFTW library with Kokkos on GPUs"); -#elif defined(FFT_CUFFT) +#elif defined(FFT_KOKKOS_CUFFT) if (ngpus > 0 && execution_space == Host) lmp->error->all(FLERR,"Cannot use the cuFFT library with Kokkos on the host CPUs"); -#elif defined(FFT_HIPFFT) +#elif defined(FFT_KOKKOS_HIPFFT) if (ngpus > 0 && execution_space == Host) lmp->error->all(FLERR,"Cannot use the hipFFT library with Kokkos on the host CPUs"); -#elif defined(FFT_KISSFFT) +#elif defined(FFT_KOKKOS_KISS) // The compiler can't statically determine the stack size needed for // recursive function calls in KISS FFT and the default per-thread // stack size on GPUs needs to be increased to prevent stack overflows @@ -73,7 +74,7 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int plan = fft_3d_create_plan_kokkos(comm,nfast,nmid,nslow, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, - scaled,permute,nbuf,usecollective,nthreads,usecuda_aware); + scaled,permute,nbuf,usecollective,nthreads,usegpu_aware); if (plan == nullptr) error->one(FLERR,"Could not create 3d FFT plan"); } @@ -90,8 +91,8 @@ FFT3dKokkos::~FFT3dKokkos() template void FFT3dKokkos::compute(typename FFT_AT::t_FFT_SCALAR_1d d_in, typename FFT_AT::t_FFT_SCALAR_1d d_out, int flag) { - typename FFT_AT::t_FFT_DATA_1d d_in_data((FFT_DATA_POINTER)d_in.data(),d_in.size()/2); - typename FFT_AT::t_FFT_DATA_1d d_out_data((FFT_DATA_POINTER)d_out.data(),d_out.size()/2); + typename FFT_AT::t_FFT_DATA_1d d_in_data((FFT_KOKKOS_DATA_POINTER)d_in.data(),d_in.size()/2); + typename FFT_AT::t_FFT_DATA_1d d_out_data((FFT_KOKKOS_DATA_POINTER)d_out.data(),d_out.size()/2); fft_3d_kokkos(d_in_data,d_out_data,flag,plan); } @@ -101,7 +102,7 @@ void FFT3dKokkos::compute(typename FFT_AT::t_FFT_SCALAR_1d d_in, typ template void FFT3dKokkos::timing1d(typename FFT_AT::t_FFT_SCALAR_1d d_in, int nsize, int flag) { - typename FFT_AT::t_FFT_DATA_1d d_in_data((FFT_DATA_POINTER)d_in.data(),d_in.size()/2); + typename FFT_AT::t_FFT_DATA_1d d_in_data((FFT_KOKKOS_DATA_POINTER)d_in.data(),d_in.size()/2); fft_3d_1d_only_kokkos(d_in_data,nsize,flag,plan); } @@ -149,20 +150,20 @@ struct norm_functor { KOKKOS_INLINE_FUNCTION void operator() (const int &i) const { -#if defined(FFT_FFTW3) || defined(FFT_CUFFT) || defined(FFT_HIPFFT) +#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) FFT_SCALAR* out_ptr = (FFT_SCALAR *)(d_out.data()+i); *(out_ptr++) *= norm; *(out_ptr++) *= norm; -#elif defined(FFT_MKL) +#elif defined(FFT_KOKKOS_MKL) d_out(i) *= norm; -#else // FFT_KISS +#else // FFT_KOKKOS_KISS d_out(i).re *= norm; d_out(i).im *= norm; #endif } }; -#ifdef FFT_KISSFFT +#ifdef FFT_KOKKOS_KISS template struct kiss_fft_functor { public: @@ -219,19 +220,19 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total1; length = plan->length1; - #if defined(FFT_MKL) + #if defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_fast,d_data.data()); else DftiComputeBackward(plan->handle_fast,d_data.data()); - #elif defined(FFT_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) if (flag == 1) - FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else - FFTW_API(execute_dft)(plan->plan_fast_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - #elif defined(FFT_CUFFT) + FFTW_API(execute_dft)(plan->plan_fast_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + #elif defined(FFT_KOKKOS_CUFFT) cufftExec(plan->plan_fast,d_data.data(),d_data.data(),-flag); - #elif defined(FFT_HIPFFT) + #elif defined(FFT_KOKKOS_HIPFFT) hipfftExec(plan->plan_fast,d_data.data(),d_data.data(),-flag); #else typename FFT_AT::t_FFT_DATA_1d d_tmp = @@ -265,19 +266,19 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total2; length = plan->length2; - #if defined(FFT_MKL) + #if defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_mid,d_data.data()); else DftiComputeBackward(plan->handle_mid,d_data.data()); - #elif defined(FFT_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) if (flag == 1) - FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else - FFTW_API(execute_dft)(plan->plan_mid_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - #elif defined(FFT_CUFFT) + FFTW_API(execute_dft)(plan->plan_mid_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + #elif defined(FFT_KOKKOS_CUFFT) cufftExec(plan->plan_mid,d_data.data(),d_data.data(),-flag); - #elif defined(FFT_HIPFFT) + #elif defined(FFT_KOKKOS_HIPFFT) hipfftExec(plan->plan_mid,d_data.data(),d_data.data(),-flag); #else d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); @@ -309,19 +310,19 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total3; length = plan->length3; - #if defined(FFT_MKL) + #if defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_slow,d_data.data()); else DftiComputeBackward(plan->handle_slow,d_data.data()); - #elif defined(FFT_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) if (flag == 1) - FFTW_API(execute_dft)(plan->plan_slow_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_slow_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else - FFTW_API(execute_dft)(plan->plan_slow_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - #elif defined(FFT_CUFFT) + FFTW_API(execute_dft)(plan->plan_slow_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + #elif defined(FFT_KOKKOS_CUFFT) cufftExec(plan->plan_slow,d_data.data(),d_data.data(),-flag); - #elif defined(FFT_HIPFFT) + #elif defined(FFT_KOKKOS_HIPFFT) hipfftExec(plan->plan_slow,d_data.data(),d_data.data(),-flag); #else d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); @@ -375,7 +376,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, 2 = permute twice = slow->fast, fast->mid, mid->slow nbuf returns size of internal storage buffers used by FFT usecollective use collective MPI operations for remapping data - usecuda_aware use CUDA-Aware MPI or not + usegpu_aware use GPU-Aware MPI or not ------------------------------------------------------------------------- */ template @@ -386,7 +387,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl int out_ilo, int out_ihi, int out_jlo, int out_jhi, int out_klo, int out_khi, int scaled, int permute, int *nbuf, int usecollective, - int nthreads, int usecuda_aware) + int nthreads, int usegpu_aware) { struct fft_plan_3d_kokkos *plan; int me,nprocs; @@ -418,7 +419,6 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl // not needed if all procs own entire fast axis initially // first indices = distribution after 1st set of FFTs - if (in_ilo == 0 && in_ihi == nfast-1) flag = 0; else flag = 1; @@ -444,7 +444,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl remapKK->remap_3d_create_plan_kokkos(comm,in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, first_ilo,first_ihi,first_jlo,first_jhi, first_klo,first_khi,2,0,0,FFT_PRECISION, - usecollective,usecuda_aware); + usecollective,usegpu_aware); if (plan->pre_plan == nullptr) return nullptr; } @@ -469,7 +469,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl first_klo,first_khi, second_ilo,second_ihi,second_jlo,second_jhi, second_klo,second_khi,2,1,0,FFT_PRECISION, - usecollective,usecuda_aware); + usecollective,usegpu_aware); if (plan->mid1_plan == nullptr) return nullptr; // 1d FFTs along mid axis @@ -510,7 +510,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl second_ilo,second_ihi, third_jlo,third_jhi,third_klo,third_khi, third_ilo,third_ihi,2,1,0,FFT_PRECISION, - usecollective,usecuda_aware); + usecollective,usegpu_aware); if (plan->mid2_plan == nullptr) return nullptr; // 1d FFTs along slow axis @@ -538,7 +538,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl third_jlo,third_jhi, out_klo,out_khi,out_ilo,out_ihi, out_jlo,out_jhi,2,(permute+1)%3,0,FFT_PRECISION, - usecollective,usecuda_aware); + usecollective,usegpu_aware); if (plan->post_plan == nullptr) return nullptr; } @@ -609,46 +609,46 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl // system specific pre-computation of 1d FFT coeffs // and scaling normalization -#if defined(FFT_MKL) - DftiCreateDescriptor( &(plan->handle_fast), FFT_MKL_PREC, DFTI_COMPLEX, 1, +#if defined(FFT_KOKKOS_MKL) + DftiCreateDescriptor( &(plan->handle_fast), FFT_KOKKOS_MKL_PREC, DFTI_COMPLEX, 1, (MKL_LONG)nfast); DftiSetValue(plan->handle_fast, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)plan->total1/nfast); DftiSetValue(plan->handle_fast, DFTI_PLACEMENT,DFTI_INPLACE); DftiSetValue(plan->handle_fast, DFTI_INPUT_DISTANCE, (MKL_LONG)nfast); DftiSetValue(plan->handle_fast, DFTI_OUTPUT_DISTANCE, (MKL_LONG)nfast); -#if defined(FFT_MKL_THREADS) +#if defined(FFT_KOKKOS_MKL_THREADS) DftiSetValue(plan->handle_fast, DFTI_NUMBER_OF_USER_THREADS, nthreads); #endif DftiCommitDescriptor(plan->handle_fast); - DftiCreateDescriptor( &(plan->handle_mid), FFT_MKL_PREC, DFTI_COMPLEX, 1, + DftiCreateDescriptor( &(plan->handle_mid), FFT_KOKKOS_MKL_PREC, DFTI_COMPLEX, 1, (MKL_LONG)nmid); DftiSetValue(plan->handle_mid, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)plan->total2/nmid); DftiSetValue(plan->handle_mid, DFTI_PLACEMENT,DFTI_INPLACE); DftiSetValue(plan->handle_mid, DFTI_INPUT_DISTANCE, (MKL_LONG)nmid); DftiSetValue(plan->handle_mid, DFTI_OUTPUT_DISTANCE, (MKL_LONG)nmid); -#if defined(FFT_MKL_THREADS) +#if defined(FFT_KOKKOS_MKL_THREADS) DftiSetValue(plan->handle_mid, DFTI_NUMBER_OF_USER_THREADS, nthreads); #endif DftiCommitDescriptor(plan->handle_mid); - DftiCreateDescriptor( &(plan->handle_slow), FFT_MKL_PREC, DFTI_COMPLEX, 1, + DftiCreateDescriptor( &(plan->handle_slow), FFT_KOKKOS_MKL_PREC, DFTI_COMPLEX, 1, (MKL_LONG)nslow); DftiSetValue(plan->handle_slow, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)plan->total3/nslow); DftiSetValue(plan->handle_slow, DFTI_PLACEMENT,DFTI_INPLACE); DftiSetValue(plan->handle_slow, DFTI_INPUT_DISTANCE, (MKL_LONG)nslow); DftiSetValue(plan->handle_slow, DFTI_OUTPUT_DISTANCE, (MKL_LONG)nslow); -#if defined(FFT_MKL_THREADS) +#if defined(FFT_KOKKOS_MKL_THREADS) DftiSetValue(plan->handle_slow, DFTI_NUMBER_OF_USER_THREADS, nthreads); #endif DftiCommitDescriptor(plan->handle_slow); -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) -#if defined (FFT_FFTW_THREADS) +#if defined (FFT_KOKKOS_FFTW_THREADS) if (nthreads > 1) { FFTW_API(init_threads)(); FFTW_API(plan_with_nthreads)(nthreads); @@ -692,7 +692,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl nullptr,&nslow,1,plan->length3, FFTW_BACKWARD,FFTW_ESTIMATE); -#elif defined(FFT_CUFFT) +#elif defined(FFT_KOKKOS_CUFFT) cufftPlanMany(&(plan->plan_fast), 1, &nfast, &nfast,1,plan->length1, @@ -709,7 +709,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl &nslow,1,plan->length3, CUFFT_TYPE,plan->total3/plan->length3); -#elif defined(FFT_HIPFFT) +#elif defined(FFT_KOKKOS_HIPFFT) hipfftPlanMany(&(plan->plan_fast), 1, &nfast, &nfast,1,plan->length1, @@ -726,7 +726,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl &nslow,1,plan->length3, HIPFFT_TYPE,plan->total3/plan->length3); -#else /* FFT_KISS */ +#else /* FFT_KOKKOS_KISS */ kissfftKK = new KissFFTKokkos(); @@ -781,11 +781,11 @@ void FFT3dKokkos::fft_3d_destroy_plan_kokkos(struct fft_plan_3d_kokk if (plan->mid2_plan) remapKK->remap_3d_destroy_plan_kokkos(plan->mid2_plan); if (plan->post_plan) remapKK->remap_3d_destroy_plan_kokkos(plan->post_plan); -#if defined(FFT_MKL) +#if defined(FFT_KOKKOS_MKL) DftiFreeDescriptor(&(plan->handle_fast)); DftiFreeDescriptor(&(plan->handle_mid)); DftiFreeDescriptor(&(plan->handle_slow)); -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) FFTW_API(destroy_plan)(plan->plan_slow_forward); FFTW_API(destroy_plan)(plan->plan_slow_backward); FFTW_API(destroy_plan)(plan->plan_mid_forward); @@ -793,11 +793,11 @@ void FFT3dKokkos::fft_3d_destroy_plan_kokkos(struct fft_plan_3d_kokk FFTW_API(destroy_plan)(plan->plan_fast_forward); FFTW_API(destroy_plan)(plan->plan_fast_backward); -#if defined (FFT_FFTW_THREADS) +#if defined (FFT_KOKKOS_FFTW_THREADS) FFTW_API(cleanup_threads)(); #endif -#elif defined (FFT_KISSFFT) +#elif defined (FFT_KOKKOS_KISS) delete kissfftKK; #endif @@ -855,7 +855,8 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // fftw3 and Dfti in MKL encode the number of transforms // into the plan, so we cannot operate on a smaller data set -#if defined(FFT_MKL) || defined(FFT_FFTW3) + +#if defined(FFT_KOKKOS_MKL) || defined(FFT_KOKKOS_FFTW3) if ((total1 > nsize) || (total2 > nsize) || (total3 > nsize)) return; #endif @@ -866,7 +867,7 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // perform 1d FFTs in each of 3 dimensions // data is just an array of 0.0 -#if defined(FFT_MKL) +#if defined(FFT_KOKKOS_MKL) if (flag == -1) { DftiComputeForward(plan->handle_fast,d_data.data()); DftiComputeForward(plan->handle_mid,d_data.data()); @@ -876,21 +877,21 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ DftiComputeBackward(plan->handle_mid,d_data.data()); DftiComputeBackward(plan->handle_slow,d_data.data()); } -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) if (flag == -1) { - FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - FFTW_API(execute_dft)(plan->plan_slow_forward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_slow_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); } else { - FFTW_API(execute_dft)(plan->plan_fast_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - FFTW_API(execute_dft)(plan->plan_mid_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); - FFTW_API(execute_dft)(plan->plan_slow_backward,(FFT_DATA*)d_data.data(),(FFT_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_fast_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_mid_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); + FFTW_API(execute_dft)(plan->plan_slow_backward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); } -#elif defined(FFT_CUFFT) +#elif defined(FFT_KOKKOS_CUFFT) cufftExec(plan->plan_fast,d_data.data(),d_data.data(),-flag); cufftExec(plan->plan_mid,d_data.data(),d_data.data(),-flag); cufftExec(plan->plan_slow,d_data.data(),d_data.data(),-flag); -#elif defined(FFT_HIPFFT) +#elif defined(FFT_KOKKOS_HIPFFT) hipfftExec(plan->plan_fast,d_data.data(),d_data.data(),-flag); hipfftExec(plan->plan_mid,d_data.data(),d_data.data(),-flag); hipfftExec(plan->plan_slow,d_data.data(),d_data.data(),-flag); diff --git a/src/KOKKOS/fft3d_kokkos.h b/src/KOKKOS/fft3d_kokkos.h index a0489f69bbd..48b0fd76de8 100644 --- a/src/KOKKOS/fft3d_kokkos.h +++ b/src/KOKKOS/fft3d_kokkos.h @@ -45,22 +45,22 @@ struct fft_plan_3d_kokkos { double norm; // normalization factor for rescaling // system specific 1d FFT info -#if defined(FFT_MKL) +#if defined(FFT_KOKKOS_MKL) DFTI_DESCRIPTOR *handle_fast; DFTI_DESCRIPTOR *handle_mid; DFTI_DESCRIPTOR *handle_slow; -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) FFTW_API(plan) plan_fast_forward; FFTW_API(plan) plan_fast_backward; FFTW_API(plan) plan_mid_forward; FFTW_API(plan) plan_mid_backward; FFTW_API(plan) plan_slow_forward; FFTW_API(plan) plan_slow_backward; -#elif defined(FFT_CUFFT) +#elif defined(FFT_KOKKOS_CUFFT) cufftHandle plan_fast; cufftHandle plan_mid; cufftHandle plan_slow; -#elif defined(FFT_HIPFFT) +#elif defined(FFT_KOKKOS_HIPFFT) hipfftHandle plan_fast; hipfftHandle plan_mid; hipfftHandle plan_slow; @@ -92,7 +92,7 @@ class FFT3dKokkos : protected Pointers { struct fft_plan_3d_kokkos *plan; RemapKokkos *remapKK; -#ifdef FFT_KISSFFT +#ifdef FFT_KOKKOS_KISS KissFFTKokkos *kissfftKK; #endif diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index a3812a1cf0b..0cb59f49cb6 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -12,117 +12,123 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "kokkos_type.h" - -#ifndef MAX -#define MAX(A,B) ((A) > (B) ? (A) : (B)) -#endif - // data types for 2d/3d FFTs #ifndef LMP_FFT_DATA_KOKKOS_H #define LMP_FFT_DATA_KOKKOS_H +#include "kokkos_type.h" #include "lmpfftsettings.h" // ------------------------------------------------------------------------- -// Data types for single-precision complex +// if a user sets FFTW, it means FFTW3 -#if FFT_PRECISION == 1 -#elif FFT_PRECISION == 2 -#else -#error "FFT_PRECISION needs to be either 1 (=single) or 2 (=double)" +#ifdef LMP_KOKKOS +# ifdef FFT_KOKKOS_FFTW +# undef FFT_KOKKOS_FFTW +# define FFT_KOKKOS_FFTW3 +# endif +# ifdef FFT_KOKKOS_FFTW_THREADS +# if !defined(FFT_KOKKOS_FFTW3) +# error "Must use -DFFT_KOKKOS_FFTW3 with -DFFT_KOKKOS_FFTW_THREADS" +# endif +# endif #endif - // with KOKKOS in CUDA or HIP mode we can only have -// CUFFT/HIPFFT or KISSFFT, thus undefine all other -// FFTs here, since they may be valid in fft3d.cpp +// CUFFT/HIPFFT or KISS, thus undefine all other +// FFTs here #ifdef KOKKOS_ENABLE_CUDA -# if defined(FFT_FFTW) -# undef FFT_FFTW +# if defined(FFT_KOKKOS_FFTW) +# undef FFT_KOKKOS_FFTW # endif -# if defined(FFT_FFTW3) -# undef FFT_FFTW3 +# if defined(FFT_KOKKOS_FFTW3) +# undef FFT_KOKKOS_FFTW3 # endif -# if defined(FFT_MKL) -# undef FFT_MKL +# if defined(FFT_KOKKOS_MKL) +# undef FFT_KOKKOS_MKL # endif -# if !defined(FFT_CUFFT) && !defined(FFT_KISSFFT) -# define FFT_KISSFFT +# if !defined(FFT_KOKKOS_CUFFT) && !defined(FFT_KOKKOS_KISS) +# define FFT_KOKKOS_KISS # endif #elif defined(KOKKOS_ENABLE_HIP) -# if defined(FFT_FFTW) -# undef FFT_FFTW +# if defined(FFT_KOKKOS_FFTW) +# undef FFT_KOKKOS_FFTW # endif -# if defined(FFT_FFTW3) -# undef FFT_FFTW3 +# if defined(FFT_KOKKOS_FFTW3) +# undef FFT_KOKKOS_FFTW3 # endif -# if defined(FFT_MKL) -# undef FFT_MKL +# if defined(FFT_KOKKOS_MKL) +# undef FFT_KOKKOS_MKL # endif -# if !defined(FFT_HIPFFT) && !defined(FFT_KISSFFT) -# define FFT_KISSFFT +# if !defined(FFT_KOKKOS_HIPFFT) && !defined(FFT_KOKKOS_KISS) +# define FFT_KOKKOS_KISS # endif #else -# if defined(FFT_CUFFT) -# error "Must enable CUDA with KOKKOS to use -DFFT_CUFFT" -# endif -# if defined(FFT_HIPFFT) -# error "Must enable HIP with KOKKOS to use -DFFT_HIPFFT" +# if defined(FFT_KOKKOS_CUFFT) +# error "Must enable CUDA with KOKKOS to use -DFFT_KOKKOS_CUFFT" # endif -// if user set FFTW, it means FFTW3 -# ifdef FFT_FFTW -# define FFT_FFTW3 -# endif -# ifdef FFT_FFTW_THREADS -# if !defined(FFT_FFTW3) -# error "Must use -DFFT_FFTW3 with -DFFT_FFTW_THREADS" -# endif +# if defined(FFT_KOKKOS_HIPFFT) +# error "Must enable HIP with KOKKOS to use -DFFT_KOKKOS_HIPFFT" # endif #endif -#if defined(FFT_MKL) +// set strings for library info output + +#if defined(FFT_KOKKOS_CUFFT) +#define LMP_FFT_KOKKOS_LIB "cuFFT" +#elif defined(FFT_KOKKOS_HIPFFT) +#define LMP_FFT_KOKKOS_LIB "hipFFT" +#elif defined(FFT_KOKKOS_FFTW3) +#define LMP_FFT_KOKKOS_LIB "FFTW3" +#elif defined(FFT_KOKKOS_MKL) +#define LMP_FFT_KOKKOS_LIB "MKL FFT" +#else +#define LMP_FFT_KOKKOS_LIB "KISS FFT" +#endif + + +#if defined(FFT_KOKKOS_MKL) #include "mkl_dfti.h" #if defined(FFT_SINGLE) - typedef float _Complex FFT_DATA; - #define FFT_MKL_PREC DFTI_SINGLE + typedef float _Complex FFT_KOKKOS_DATA; + #define FFT_KOKKOS_MKL_PREC DFTI_SINGLE #else - typedef double _Complex FFT_DATA; - #define FFT_MKL_PREC DFTI_DOUBLE + typedef double _Complex FFT_KOKKOS_DATA; + #define FFT_KOKKOS_MKL_PREC DFTI_DOUBLE #endif -#elif defined(FFT_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) #include "fftw3.h" #if defined(FFT_SINGLE) - typedef fftwf_complex FFT_DATA; + typedef fftwf_complex FFT_KOKKOS_DATA; #define FFTW_API(function) fftwf_ ## function #else - typedef fftw_complex FFT_DATA; + typedef fftw_complex FFT_KOKKOS_DATA; #define FFTW_API(function) fftw_ ## function #endif -#elif defined(FFT_CUFFT) +#elif defined(FFT_KOKKOS_CUFFT) #include "cufft.h" #if defined(FFT_SINGLE) #define cufftExec cufftExecC2C #define CUFFT_TYPE CUFFT_C2C - typedef cufftComplex FFT_DATA; + typedef cufftComplex FFT_KOKKOS_DATA; #else #define cufftExec cufftExecZ2Z #define CUFFT_TYPE CUFFT_Z2Z - typedef cufftDoubleComplex FFT_DATA; + typedef cufftDoubleComplex FFT_KOKKOS_DATA; #endif -#elif defined(FFT_HIPFFT) +#elif defined(FFT_KOKKOS_HIPFFT) #include #if defined(FFT_SINGLE) #define hipfftExec hipfftExecC2C #define HIPFFT_TYPE HIPFFT_C2C - typedef hipfftComplex FFT_DATA; + typedef hipfftComplex FFT_KOKKOS_DATA; #else #define hipfftExec hipfftExecZ2Z #define HIPFFT_TYPE HIPFFT_Z2Z - typedef hipfftDoubleComplex FFT_DATA; + typedef hipfftDoubleComplex FFT_KOKKOS_DATA; #endif #else #if defined(FFT_SINGLE) @@ -133,17 +139,17 @@ typedef struct { kiss_fft_scalar re; kiss_fft_scalar im; - } FFT_DATA; - #ifndef FFT_KISSFFT - #define FFT_KISSFFT + } FFT_KOKKOS_DATA; + #ifndef FFT_KOKKOS_KISS + #define FFT_KOKKOS_KISS #endif #endif // (double[2]*) is not a 1D pointer -#if defined(FFT_FFTW3) - typedef FFT_SCALAR* FFT_DATA_POINTER; +#if defined(FFT_KOKKOS_FFTW3) + typedef FFT_SCALAR* FFT_KOKKOS_DATA_POINTER; #else - typedef FFT_DATA* FFT_DATA_POINTER; + typedef FFT_KOKKOS_DATA* FFT_KOKKOS_DATA_POINTER; #endif @@ -168,7 +174,7 @@ typedef Kokkos::DualView tdual_ typedef tdual_FFT_SCALAR_3d::t_dev t_FFT_SCALAR_3d; typedef Kokkos:: - DualView tdual_FFT_DATA_1d; + DualView tdual_FFT_DATA_1d; typedef tdual_FFT_DATA_1d::t_dev t_FFT_DATA_1d; typedef tdual_FFT_DATA_1d::t_dev_um t_FFT_DATA_1d_um; @@ -200,7 +206,7 @@ typedef Kokkos::DualView tdual_ typedef tdual_FFT_SCALAR_3d::t_host t_FFT_SCALAR_3d; typedef Kokkos:: - DualView tdual_FFT_DATA_1d; + DualView tdual_FFT_DATA_1d; typedef tdual_FFT_DATA_1d::t_host t_FFT_DATA_1d; typedef tdual_FFT_DATA_1d::t_host_um t_FFT_DATA_1d_um; @@ -216,7 +222,7 @@ typedef struct FFTArrayTypes FFT_DAT; typedef struct FFTArrayTypes FFT_HAT; -#if defined(FFT_KISSFFT) +#if defined(FFT_KOKKOS_KISS) #include "kissfft_kokkos.h" // uses t_FFT_DATA_1d, needs to come last #endif diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp index 59ed9187293..308df20c0ea 100644 --- a/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp @@ -24,13 +24,11 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "integrate.h" #include "kokkos.h" #include "memory_kokkos.h" #include "neigh_list_kokkos.h" #include "neigh_request.h" #include "neighbor.h" -#include "pair_reaxff_kokkos.h" #include "update.h" #include @@ -38,8 +36,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define SMALL 0.0001 -#define EV_TO_KCAL_PER_MOL 14.4 +static constexpr double EV_TO_KCAL_PER_MOL = 14.4; /* ---------------------------------------------------------------------- */ @@ -192,7 +189,7 @@ void FixACKS2ReaxFFKokkos::setup_pre_force(int vflag) /* ---------------------------------------------------------------------- */ template -void FixACKS2ReaxFFKokkos::pre_force(int vflag) +void FixACKS2ReaxFFKokkos::pre_force(int /*vflag*/) { if (update->ntimestep % nevery) return; @@ -298,8 +295,8 @@ void FixACKS2ReaxFFKokkos::pre_force(int vflag) } else { // GPU, use teams Kokkos::deep_copy(d_mfill_offset,0); - int vector_length = 32; int atoms_per_team = 4; + int vector_length = 32; int num_teams = nn / atoms_per_team + (nn % atoms_per_team ? 1 : 0); Kokkos::TeamPolicy policy(num_teams, atoms_per_team, @@ -537,7 +534,7 @@ void FixACKS2ReaxFFKokkos::deallocate_array() { memoryKK->destroy_kokkos(k_s,s); memoryKK->destroy_kokkos(k_chi_field,chi_field); - memoryKK->destroy_kokkos(X_diag); + memoryKK->destroy_kokkos(k_X_diag,X_diag); memoryKK->destroy_kokkos(k_d,d); memoryKK->destroy_kokkos(k_q_hat,q_hat); memoryKK->destroy_kokkos(k_y,y); @@ -866,7 +863,7 @@ template KOKKOS_INLINE_FUNCTION void FixACKS2ReaxFFKokkos::compute_x_item(int ii, int &m_fill, const bool &final) const { - // The X_diag array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The X_diag array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_X_diag = ScatterViewHelper,decltype(dup_X_diag),decltype(ndup_X_diag)>::get(dup_X_diag,ndup_X_diag); auto a_X_diag = v_X_diag.template access>(); @@ -944,7 +941,7 @@ void FixACKS2ReaxFFKokkos::compute_x_team( const typename Kokkos::TeamPolicy::member_type &team, int atoms_per_team, int vector_length) const { - // The X_diag array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The X_diag array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_X_diag = ScatterViewHelper,decltype(dup_X_diag),decltype(ndup_X_diag)>::get(dup_X_diag,ndup_X_diag); auto a_X_diag = v_X_diag.template access>(); @@ -1458,7 +1455,7 @@ template KOKKOS_INLINE_FUNCTION void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec3_Half, const int &ii) const { - // The bb array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The bb array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_bb = ScatterViewHelper,decltype(dup_bb),decltype(ndup_bb)>::get(dup_bb,ndup_bb); auto a_bb = v_bb.template access>(); diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.h b/src/KOKKOS/fix_acks2_reaxff_kokkos.h index 127c8d0402f..cb16b4cd241 100644 --- a/src/KOKKOS/fix_acks2_reaxff_kokkos.h +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.h @@ -246,9 +246,8 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { int count, isuccess; double alpha, beta, omega, cutsq; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; void grow_arrays(int) override; @@ -289,8 +288,7 @@ struct FixACKS2ReaxFFKokkosComputeHFunctor { FixACKS2ReaxFFKokkosComputeHFunctor(FixACKS2ReaxFFKokkos *c_ptr, int _atoms_per_team, int _vector_length) - : c(*c_ptr), atoms_per_team(_atoms_per_team), - vector_length(_vector_length) { + : atoms_per_team(_atoms_per_team), vector_length(_vector_length), c(*c_ptr) { c.cleanup_copy(); }; @@ -337,8 +335,7 @@ struct FixACKS2ReaxFFKokkosComputeXFunctor { FixACKS2ReaxFFKokkosComputeXFunctor(FixACKS2ReaxFFKokkos *c_ptr, int _atoms_per_team, int _vector_length) - : c(*c_ptr), atoms_per_team(_atoms_per_team), - vector_length(_vector_length) { + : atoms_per_team(_atoms_per_team), vector_length(_vector_length), c(*c_ptr) { c.cleanup_copy(); }; diff --git a/src/KOKKOS/fix_deform_kokkos.cpp b/src/KOKKOS/fix_deform_kokkos.cpp index d49e3359866..90c4380da9f 100644 --- a/src/KOKKOS/fix_deform_kokkos.cpp +++ b/src/KOKKOS/fix_deform_kokkos.cpp @@ -21,7 +21,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "domain_kokkos.h" -#include "error.h" #include "force.h" #include "input.h" #include "irregular.h" @@ -32,7 +31,6 @@ #include "variable.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; @@ -120,11 +118,11 @@ void FixDeformKokkos::end_of_step() } else if (set[i].style == WIGGLE) { double delt = (update->ntimestep - update->beginstep) * update->dt; set[i].lo_target = set[i].lo_start - - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); + 0.5*set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod); set[i].hi_target = set[i].hi_start + - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude * - cos(TWOPI*delt/set[i].tperiod); + 0.5*set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod); + h_rate[i] = MY_2PI/set[i].tperiod * set[i].amplitude * + cos(MY_2PI*delt/set[i].tperiod); h_ratelo[i] = -0.5*h_rate[i]; } else if (set[i].style == VARIABLE) { double del = input->variable->compute_equal(set[i].hvar); @@ -212,9 +210,9 @@ void FixDeformKokkos::end_of_step() } else if (set[i].style == WIGGLE) { double delt = (update->ntimestep - update->beginstep) * update->dt; set[i].tilt_target = set[i].tilt_start + - set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude * - cos(TWOPI*delt/set[i].tperiod); + set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod); + h_rate[i] = MY_2PI/set[i].tperiod * set[i].amplitude * + cos(MY_2PI*delt/set[i].tperiod); } else if (set[i].style == VARIABLE) { double delta_tilt = input->variable->compute_equal(set[i].hvar); set[i].tilt_target = set[i].tilt_start + delta_tilt; diff --git a/src/KOKKOS/fix_dt_reset_kokkos.cpp b/src/KOKKOS/fix_dt_reset_kokkos.cpp index 6e7709ace15..df354f19c80 100644 --- a/src/KOKKOS/fix_dt_reset_kokkos.cpp +++ b/src/KOKKOS/fix_dt_reset_kokkos.cpp @@ -18,19 +18,17 @@ #include "atom_masks.h" #include "error.h" #include "force.h" -#include "input.h" -#include "integrate.h" -#include "kokkos_base.h" -#include "memory_kokkos.h" #include "modify.h" #include "output.h" #include "pair.h" #include "update.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_efield_kokkos.cpp b/src/KOKKOS/fix_efield_kokkos.cpp index ffe1c34e97a..40097739823 100644 --- a/src/KOKKOS/fix_efield_kokkos.cpp +++ b/src/KOKKOS/fix_efield_kokkos.cpp @@ -30,8 +30,6 @@ #include "atom_masks.h" #include "kokkos_base.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp index 24cf3078277..567c6ad1600 100644 --- a/src/KOKKOS/fix_enforce2d_kokkos.cpp +++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp @@ -122,7 +122,7 @@ void FixEnforce2DKokkos::post_force(int /*vflag*/) template -template +template KOKKOS_INLINE_FUNCTION void FixEnforce2DKokkos::post_force_item( int i ) const { @@ -130,17 +130,17 @@ void FixEnforce2DKokkos::post_force_item( int i ) const v(i,2) = 0.0; f(i,2) = 0.0; - if (omega_flag) { + if (OMEGA_FLAG) { omega(i,0) = 0.0; omega(i,1) = 0.0; } - if (angmom_flag) { + if (ANGMOM_FLAG) { angmom(i,0) = 0.0; angmom(i,1) = 0.0; } - if (torque_flag) { + if (TORQUE_FLAG) { torque(i,0) = 0.0; torque(i,1) = 0.0; } diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h index cd6903f6c91..1c7a33f3b82 100644 --- a/src/KOKKOS/fix_enforce2d_kokkos.h +++ b/src/KOKKOS/fix_enforce2d_kokkos.h @@ -36,7 +36,7 @@ class FixEnforce2DKokkos : public FixEnforce2D { void setup(int) override; void post_force(int) override; - template + template KOKKOS_INLINE_FUNCTION void post_force_item(const int i) const; diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 309eaeeebfe..8bf87ca6d38 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -25,8 +25,6 @@ #include #include "atom_masks.h" -#define MAXLINE 1024 - #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else diff --git a/src/KOKKOS/fix_gravity_kokkos.cpp b/src/KOKKOS/fix_gravity_kokkos.cpp index 42a16eda784..01fcc0780c9 100644 --- a/src/KOKKOS/fix_gravity_kokkos.cpp +++ b/src/KOKKOS/fix_gravity_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "atom_vec.h" #include "input.h" #include "modify.h" #include "update.h" diff --git a/src/KOKKOS/fix_langevin_kokkos.cpp b/src/KOKKOS/fix_langevin_kokkos.cpp index 437dd9daeff..e60b1f0ec6b 100644 --- a/src/KOKKOS/fix_langevin_kokkos.cpp +++ b/src/KOKKOS/fix_langevin_kokkos.cpp @@ -32,10 +32,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -enum{NOBIAS,BIAS}; -enum{CONSTANT,EQUAL,ATOM}; -#define SINERTIA 0.4 // moment of inertia prefactor for sphere -#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid +enum { NOBIAS, BIAS }; +enum { CONSTANT, EQUAL, ATOM }; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_langevin_kokkos.h b/src/KOKKOS/fix_langevin_kokkos.h index 4fc22a1df1e..fc25a0a7489 100644 --- a/src/KOKKOS/fix_langevin_kokkos.h +++ b/src/KOKKOS/fix_langevin_kokkos.h @@ -27,7 +27,6 @@ FixStyle(langevin/kk/host,FixLangevinKokkos); #include "kokkos_type.h" #include "kokkos_base.h" #include "Kokkos_Random.hpp" -#include "comm_kokkos.h" namespace LAMMPS_NS { @@ -103,8 +102,6 @@ namespace LAMMPS_NS { void end_of_step_rmass_item(int) const; private: - class CommKokkos *commKK; - typename ArrayTypes::t_float_1d rmass; typename ArrayTypes::t_float_1d mass; typename ArrayTypes::tdual_double_2d k_franprev; diff --git a/src/KOKKOS/fix_minimize_kokkos.cpp b/src/KOKKOS/fix_minimize_kokkos.cpp index e2106b3d036..585c357992b 100644 --- a/src/KOKKOS/fix_minimize_kokkos.cpp +++ b/src/KOKKOS/fix_minimize_kokkos.cpp @@ -19,6 +19,8 @@ #include "domain.h" #include "memory_kokkos.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index b9220a417ff..fa959cd5821 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -18,11 +18,8 @@ #include "atom_masks.h" #include "domain_kokkos.h" #include "group.h" -#include "error.h" #include "kokkos_few.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_neigh_history_kokkos.cpp b/src/KOKKOS/fix_neigh_history_kokkos.cpp index b4a852ba702..d3df48354ed 100644 --- a/src/KOKKOS/fix_neigh_history_kokkos.cpp +++ b/src/KOKKOS/fix_neigh_history_kokkos.cpp @@ -17,7 +17,6 @@ #include "atom_kokkos.h" #include "error.h" #include "memory_kokkos.h" -#include "modify.h" #include "neigh_list_kokkos.h" #include "pair_kokkos.h" #include "atom_vec_kokkos.h" @@ -453,8 +452,12 @@ KOKKOS_INLINE_FUNCTION void FixNeighHistoryKokkos::operator()(TagFixNeighHistoryUnpackExchange, const int &i) const { int index = d_indices(i); + if (index > -1) { int m = (int) d_ubuf(d_buf(i)).i; + if (i >= nrecv1) + m = nextrarecv1 + (int) d_ubuf(d_buf(nextrarecv1 + i - nrecv1)).i; + int n = (int) d_ubuf(d_buf(m++)).i; d_npartner(index) = n; for (int p = 0; p < n; p++) { @@ -471,6 +474,7 @@ void FixNeighHistoryKokkos::operator()(TagFixNeighHistoryUnpackExcha template void FixNeighHistoryKokkos::unpack_exchange_kokkos( DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + int nrecv1, int nextrarecv1, ExecutionSpace /*space*/) { d_buf = typename AT::t_xfloat_1d_um( @@ -478,6 +482,9 @@ void FixNeighHistoryKokkos::unpack_exchange_kokkos( k_buf.extent(0)*k_buf.extent(1)); d_indices = k_indices.view(); + this->nrecv1 = nrecv1; + this->nextrarecv1 = nextrarecv1; + d_npartner = k_npartner.template view(); d_partner = k_partner.template view(); d_valuepartner = k_valuepartner.template view(); diff --git a/src/KOKKOS/fix_neigh_history_kokkos.h b/src/KOKKOS/fix_neigh_history_kokkos.h index 9c07a953c4a..dd1ad769b80 100644 --- a/src/KOKKOS/fix_neigh_history_kokkos.h +++ b/src/KOKKOS/fix_neigh_history_kokkos.h @@ -72,12 +72,14 @@ class FixNeighHistoryKokkos : public FixNeighHistory, public KokkosBase { void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &indices,int nrecv, + int nrecv1,int nrecv1extra, ExecutionSpace space) override; typename DAT::tdual_int_2d k_firstflag; typename DAT::tdual_float_2d k_firstvalue; private: + int nrecv1,nextrarecv1; int nlocal,nsend,beyond_contact; typename AT::t_tagint_1d tag; diff --git a/src/KOKKOS/fix_nh_kokkos.cpp b/src/KOKKOS/fix_nh_kokkos.cpp index 3d2d3ebb716..1b87b3c7758 100644 --- a/src/KOKKOS/fix_nh_kokkos.cpp +++ b/src/KOKKOS/fix_nh_kokkos.cpp @@ -18,18 +18,14 @@ #include "fix_nh_kokkos.h" -#include "atom.h" #include "atom_kokkos.h" #include "atom_masks.h" -#include "comm.h" #include "compute.h" #include "domain_kokkos.h" #include "error.h" -#include "fix_deform.h" #include "force.h" #include "irregular.h" #include "kspace.h" -#include "memory_kokkos.h" #include "neighbor.h" #include "update.h" @@ -39,8 +35,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; diff --git a/src/KOKKOS/fix_nve_kokkos.cpp b/src/KOKKOS/fix_nve_kokkos.cpp index 59cc90c0882..11b51843100 100644 --- a/src/KOKKOS/fix_nve_kokkos.cpp +++ b/src/KOKKOS/fix_nve_kokkos.cpp @@ -17,8 +17,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_nve_sphere_kokkos.cpp b/src/KOKKOS/fix_nve_sphere_kokkos.cpp index 38f6a407920..aed45c938cb 100644 --- a/src/KOKKOS/fix_nve_sphere_kokkos.cpp +++ b/src/KOKKOS/fix_nve_sphere_kokkos.cpp @@ -15,7 +15,8 @@ #include "fix_nve_sphere_kokkos.h" #include "atom_masks.h" #include "atom_kokkos.h" -#include "error.h" + +#include using namespace LAMMPS_NS; diff --git a/src/KOKKOS/fix_nvt_kokkos.cpp b/src/KOKKOS/fix_nvt_kokkos.cpp index 16328c5e3a3..7a8badd5691 100644 --- a/src/KOKKOS/fix_nvt_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_kokkos.cpp @@ -18,8 +18,6 @@ #include "group.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp index bd65a6965ed..ddcc0c728ce 100644 --- a/src/KOKKOS/fix_nvt_sllod_kokkos.cpp +++ b/src/KOKKOS/fix_nvt_sllod_kokkos.cpp @@ -18,21 +18,19 @@ #include "fix_nvt_sllod_kokkos.h" -#include "atom.h" -#include "atom.h" #include "atom_kokkos.h" #include "atom_masks.h" #include "compute.h" #include "domain.h" #include "error.h" -#include "fix.h" -#include "fix_deform_kokkos.h" +#include "fix_deform.h" #include "group.h" #include "kokkos_few.h" #include "math_extra.h" -#include "memory_kokkos.h" #include "modify.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; @@ -128,7 +126,7 @@ void FixNVTSllodKokkos::nh_v_temp() d_h_two = Few(h_two); - if (vdelu.extent(0) < atomKK->nmax) + if ((int)vdelu.extent(0) < atomKK->nmax) vdelu = typename AT::t_v_array(Kokkos::NoInit("nvt/sllod/kk:vdelu"), atomKK->nmax); if (!this->psllod_flag) { diff --git a/src/KOKKOS/fix_property_atom_kokkos.cpp b/src/KOKKOS/fix_property_atom_kokkos.cpp index dcd943cac6c..10cea48e90b 100644 --- a/src/KOKKOS/fix_property_atom_kokkos.cpp +++ b/src/KOKKOS/fix_property_atom_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "error.h" #include "memory_kokkos.h" #include diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp index a2a50d84bbb..deb41944bc2 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp @@ -27,10 +27,8 @@ #include "fix_qeq_reaxff_kokkos.h" -#include "atom.h" #include "atom_kokkos.h" #include "atom_masks.h" -#include "atom_vec_kokkos.h" #include "comm.h" #include "error.h" #include "force.h" @@ -46,8 +44,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define SMALL 0.0001 -#define EV_TO_KCAL_PER_MOL 14.4 +static constexpr double EV_TO_KCAL_PER_MOL = 14.4; /* ---------------------------------------------------------------------- */ @@ -928,7 +925,7 @@ void FixQEqReaxFFKokkos::operator()(TagQEqSparseMatvec2_Half,decltype(dup_o),decltype(ndup_o)>::get(dup_o,ndup_o); auto a_o = v_o.template access>(); @@ -1118,12 +1115,11 @@ void FixQEqReaxFFKokkos::operator()(TagQEqCalculateQ, const int &ii) /* ---------------------------------------------------------------------- */ template -int FixQEqReaxFFKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &k_buf, +int FixQEqReaxFFKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &k_buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; d_buf = k_buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); if (pack_flag == 3) return n; @@ -1135,7 +1131,7 @@ int FixQEqReaxFFKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_i template KOKKOS_INLINE_FUNCTION void FixQEqReaxFFKokkos::operator()(TagQEqPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); if (pack_flag == 1) { if (!(converged & 1)) @@ -1416,6 +1412,7 @@ KOKKOS_INLINE_FUNCTION void FixQEqReaxFFKokkos::operator()(TagQEqUnpackExchange, const int &i) const { int index = d_indices(i); + if (index > -1) { for (int m = 0; m < nprev; m++) d_s_hist(index,m) = d_buf(i*nprev*2 + m); for (int m = 0; m < nprev; m++) d_t_hist(index,m) = d_buf(i*nprev*2 + nprev+m); @@ -1427,6 +1424,7 @@ void FixQEqReaxFFKokkos::operator()(TagQEqUnpackExchange, const int template void FixQEqReaxFFKokkos::unpack_exchange_kokkos( DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + int /*nrecv1*/, int /*nextrarecv1*/, ExecutionSpace /*space*/) { k_buf.sync(); diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.h b/src/KOKKOS/fix_qeq_reaxff_kokkos.h index 9bc38b04921..92026b209d6 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.h +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.h @@ -143,6 +143,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &indices,int nrecv, + int nrecv1,int nextrarecv1, ExecutionSpace space) override; struct params_qeq{ @@ -153,7 +154,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { F_FLOAT chi, eta, gamma; }; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -254,9 +255,9 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { DupScatterView dup_o; NonDupScatterView ndup_o; - int iswap,nsend; + int nsend; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d d_buf; typename AT::t_int_1d d_copylist; typename AT::t_int_1d d_indices; diff --git a/src/KOKKOS/fix_reaxff_species_kokkos.cpp b/src/KOKKOS/fix_reaxff_species_kokkos.cpp index 960ba07a862..7d742a8fa40 100644 --- a/src/KOKKOS/fix_reaxff_species_kokkos.cpp +++ b/src/KOKKOS/fix_reaxff_species_kokkos.cpp @@ -23,13 +23,11 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "input.h" -#include "memory_kokkos.h" -#include "neigh_list.h" -#include "neigh_request.h" +#include "kokkos_type.h" +#include "neigh_list_kokkos.h" #include "fix_ave_atom.h" -#include "pair_reaxff_kokkos.h" +#include "pair_reaxff.h" #include "reaxff_defs.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 0ba56c611ec..0d1c250b3dc 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -25,13 +25,12 @@ #include "math_special_kokkos.h" #include "memory_kokkos.h" #include "modify.h" -#include "neigh_list_kokkos.h" #include "neigh_request.h" #include "neighbor.h" #include "update.h" #include // DBL_EPSILON -#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -85,9 +84,6 @@ FixRxKokkos::~FixRxKokkos() memoryKK->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); memoryKK->destroy_kokkos(k_sumWeights, sumWeights); - memoryKK->destroy_kokkos(d_scratchSpace); - - memoryKK->destroy_kokkos(k_cutsq); } /* ---------------------------------------------------------------------- */ @@ -1463,8 +1459,8 @@ void FixRxKokkos::solve_reactions(const int /*vflag*/, const bool is this->scratchSpaceSize = (8*nspecies + 2*nreactions); if (nlocal*scratchSpaceSize > d_scratchSpace.extent(0)) { - memoryKK->destroy_kokkos (d_scratchSpace); - memoryKK->create_kokkos (d_scratchSpace, nlocal*scratchSpaceSize, "FixRxKokkos::d_scratchSpace"); + d_scratchSpace = typename AT::t_double_1d(); + d_scratchSpace = typename AT::t_double_1d("FixRxKokkos::d_scratchSpace", nlocal*scratchSpaceSize); } if (setRatesToZero) @@ -1822,8 +1818,8 @@ void FixRxKokkos::computeLocalTemperature() const int ntypes = atom->ntypes; if (ntypes+1 > (int) k_cutsq.extent(0)) { - memoryKK->destroy_kokkos (k_cutsq); - memoryKK->create_kokkos (k_cutsq, ntypes+1, ntypes+1, "FixRxKokkos::k_cutsq"); + k_cutsq = typename AT::tdual_ffloat_2d(); + k_cutsq = typename AT::tdual_ffloat_2d("FixRxKokkos::k_cutsq", ntypes+1, ntypes+1); d_cutsq = k_cutsq.template view(); } @@ -1843,7 +1839,7 @@ void FixRxKokkos::computeLocalTemperature() if (sumWeightsCt > (int)k_sumWeights.template view().extent(0)) { memoryKK->destroy_kokkos(k_sumWeights, sumWeights); - memoryKK->create_kokkos (k_sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + memoryKK->create_kokkos(k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); d_sumWeights = k_sumWeights.template view(); h_sumWeights = k_sumWeights.h_view; } diff --git a/src/KOKKOS/fix_setforce_kokkos.cpp b/src/KOKKOS/fix_setforce_kokkos.cpp index 9f193bc6e4c..e8f376643fa 100644 --- a/src/KOKKOS/fix_setforce_kokkos.cpp +++ b/src/KOKKOS/fix_setforce_kokkos.cpp @@ -17,7 +17,6 @@ #include "atom_kokkos.h" #include "update.h" #include "modify.h" -#include "domain.h" #include "region.h" #include "input.h" #include "variable.h" @@ -26,8 +25,6 @@ #include "atom_masks.h" #include "kokkos_base.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_shake_kokkos.cpp b/src/KOKKOS/fix_shake_kokkos.cpp index dd6de8f9ece..b25e2dad594 100644 --- a/src/KOKKOS/fix_shake_kokkos.cpp +++ b/src/KOKKOS/fix_shake_kokkos.cpp @@ -14,20 +14,12 @@ #include "fix_shake_kokkos.h" -#include "fix_rattle.h" #include "atom_kokkos.h" -#include "atom_vec.h" -#include "molecule.h" #include "update.h" -#include "respa.h" -#include "modify.h" #include "domain.h" #include "force.h" -#include "bond.h" -#include "angle.h" #include "comm.h" #include "group.h" -#include "fix_respa.h" #include "math_const.h" #include "memory_kokkos.h" #include "error.h" @@ -35,17 +27,11 @@ #include "atom_masks.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define RVOUS 1 // 0 for irregular, 1 for all2all - -#define BIG 1.0e20 -#define MASSDELTA 0.1 - /* ---------------------------------------------------------------------- */ template @@ -525,7 +511,7 @@ void FixShakeKokkos::operator()(TagFixShakePostForce -int FixShakeKokkos::dof(int igroup) +bigint FixShakeKokkos::dof(int igroup) { d_mask = atomKK->k_mask.view(); d_tag = atomKK->k_tag.view(); @@ -538,7 +524,7 @@ int FixShakeKokkos::dof(int igroup) // count dof in a cluster if and only if // the central atom is in group and atom i is the central atom - int n = 0; + bigint n = 0; { // local variables for lambda capture @@ -549,7 +535,7 @@ int FixShakeKokkos::dof(int igroup) auto groupbit = group->bitmask[igroup]; Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal), - LAMMPS_LAMBDA(const int& i, int& n) { + LAMMPS_LAMBDA(const int& i, bigint& n) { if (!(mask[i] & groupbit)) return; if (d_shake_flag[i] == 0) return; if (d_shake_atom(i,0) != tag[i]) return; @@ -560,8 +546,8 @@ int FixShakeKokkos::dof(int igroup) },n); } - int nall; - MPI_Allreduce(&n,&nall,1,MPI_INT,MPI_SUM,world); + bigint nall; + MPI_Allreduce(&n,&nall,1,MPI_LMP_BIGINT,MPI_SUM,world); return nall; } @@ -643,7 +629,7 @@ KOKKOS_INLINE_FUNCTION void FixShakeKokkos::shake(int ilist, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -753,7 +739,7 @@ KOKKOS_INLINE_FUNCTION void FixShakeKokkos::shake3(int ilist, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -933,7 +919,7 @@ KOKKOS_INLINE_FUNCTION void FixShakeKokkos::shake4(int ilist, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1190,7 +1176,7 @@ KOKKOS_INLINE_FUNCTION void FixShakeKokkos::shake3angle(int ilist, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1581,8 +1567,8 @@ void FixShakeKokkos::pack_exchange_item(const int &mysend, int &offs else offset++; } else { - d_buf[mysend] = nsend + offset; int m = nsend + offset; + d_buf[mysend] = m; d_buf[m++] = flag; if (flag == 1) { d_buf[m++] = d_shake_atom(i,0); @@ -1703,6 +1689,8 @@ void FixShakeKokkos::operator()(TagFixShakeUnpackExchange, const int if (index > -1) { int m = d_buf[i]; + if (i >= nrecv1) + m = nextrarecv1 + d_buf[nextrarecv1 + i - nrecv1]; int flag = d_shake_flag[index] = static_cast (d_buf[m++]); if (flag == 1) { @@ -1739,6 +1727,7 @@ void FixShakeKokkos::operator()(TagFixShakeUnpackExchange, const int template void FixShakeKokkos::unpack_exchange_kokkos( DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + int nrecv1, int nextrarecv1, ExecutionSpace /*space*/) { k_buf.sync(); @@ -1749,6 +1738,9 @@ void FixShakeKokkos::unpack_exchange_kokkos( k_buf.extent(0)*k_buf.extent(1)); d_indices = k_indices.view(); + this->nrecv1 = nrecv1; + this->nextrarecv1 = nextrarecv1; + k_shake_flag.template sync(); k_shake_atom.template sync(); k_shake_type.template sync(); @@ -1807,12 +1799,11 @@ int FixShakeKokkos::unpack_exchange(int nlocal, double *buf) /* ---------------------------------------------------------------------- */ template -int FixShakeKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &k_buf, - int pbc_flag, int* pbc) +int FixShakeKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &k_buf, + int pbc_flag, int* pbc) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; d_buf = k_buf.view(); if (domain->triclinic == 0) { @@ -1836,7 +1827,7 @@ template template KOKKOS_INLINE_FUNCTION void FixShakeKokkos::operator()(TagFixShakePackForwardComm, const int &i) const { - const int j = d_sendlist(iswap, i); + const int j = d_sendlist(i); if (PBC_FLAG == 0) { d_buf[3*i] = d_xshake(j,0); diff --git a/src/KOKKOS/fix_shake_kokkos.h b/src/KOKKOS/fix_shake_kokkos.h index 185e69ce865..31a6c340bed 100644 --- a/src/KOKKOS/fix_shake_kokkos.h +++ b/src/KOKKOS/fix_shake_kokkos.h @@ -44,8 +44,6 @@ struct TagFixShakeUnpackExchange{}; template class FixShakeKokkos : public FixShake, public KokkosBase { - //friend class FixEHEX; - public: typedef DeviceType device_type; typedef EV_FLOAT value_type; @@ -68,7 +66,7 @@ class FixShakeKokkos : public FixShake, public KokkosBase { int pack_exchange(int, double *) override; int unpack_exchange(int, double *) override; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -77,7 +75,7 @@ class FixShakeKokkos : public FixShake, public KokkosBase { void shake_end_of_step(int vflag) override; void correct_coordinates(int vflag) override; - int dof(int) override; + bigint dof(int) override; void unconstrained_update() override; @@ -112,9 +110,12 @@ class FixShakeKokkos : public FixShake, public KokkosBase { void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &indices,int nrecv, + int nrecv1,int nrecv1extra, ExecutionSpace space) override; protected: + int nrecv1,nextrarecv1; + typename AT::t_x_array d_x; typename AT::t_v_array d_v; typename AT::t_f_array d_f; @@ -210,9 +211,9 @@ class FixShakeKokkos : public FixShake, public KokkosBase { KOKKOS_INLINE_FUNCTION void v_tally(EV_FLOAT&, int, int *, double, double *) const; - int iswap,first,nsend; + int first,nsend; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um d_buf; typename AT::t_int_1d d_exchange_sendlist; @@ -259,4 +260,3 @@ struct FixShakeKokkosPackExchangeFunctor { #endif #endif - diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 37ffd15cdf2..a64adbcc387 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -43,12 +43,12 @@ #include "domain.h" #include "error.h" #include "force.h" -#include "memory_kokkos.h" #include "neigh_list_kokkos.h" #include "neigh_request.h" #include "neighbor.h" #include "npair_ssa_kokkos.h" #include "pair_dpd_fdt_energy_kokkos.h" +#include "random_external_state.h" #include "update.h" #include @@ -57,8 +57,8 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace random_external_state; -#define EPSILON 1.0e-10 -#define EPSILON_SQUARED ((EPSILON) * (EPSILON)) +static constexpr double EPSILON = 1.0e-10; +static constexpr double EPSILON_SQUARED = EPSILON * EPSILON; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_spring_self_kokkos.cpp b/src/KOKKOS/fix_spring_self_kokkos.cpp index efd8a652ff1..9ba796b1abe 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.cpp +++ b/src/KOKKOS/fix_spring_self_kokkos.cpp @@ -20,17 +20,10 @@ #include "atom_kokkos.h" #include "update.h" -#include "modify.h" #include "domain_kokkos.h" -#include "region.h" -#include "input.h" -#include "variable.h" #include "memory_kokkos.h" #include "error.h" #include "atom_masks.h" -#include "kokkos_base.h" - -#include using namespace LAMMPS_NS; using namespace FixConst; @@ -184,12 +177,12 @@ void FixSpringSelfKokkos::copy_arrays(int i, int j, int delflag) template KOKKOS_INLINE_FUNCTION -void FixSpringSelfKokkos::pack_exchange_item(const int &mysend, int &offset, const bool &final) const +void FixSpringSelfKokkos::pack_exchange_item(const int &mysend, int &offset, const bool &/*final*/) const { const int i = d_exchange_sendlist(mysend); - d_buf[mysend] = nsend + offset; int m = nsend + offset; + d_buf[mysend] = m; d_buf[m++] = d_xoriginal(i,0); d_buf[m++] = d_xoriginal(i,1); d_buf[m++] = d_xoriginal(i,2); @@ -258,6 +251,8 @@ void FixSpringSelfKokkos::operator()(TagFixSpringSelfUnpackExchange, if (index > -1) { int m = d_buf[i]; + if (i >= nrecv1) + m = nextrarecv1 + d_buf[nextrarecv1 + i - nrecv1]; d_xoriginal(index,0) = static_cast (d_buf[m++]); d_xoriginal(index,1) = static_cast (d_buf[m++]); @@ -270,6 +265,7 @@ void FixSpringSelfKokkos::operator()(TagFixSpringSelfUnpackExchange, template void FixSpringSelfKokkos::unpack_exchange_kokkos( DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + int nrecv1, int nextrarecv1, ExecutionSpace /*space*/) { k_buf.sync(); @@ -280,6 +276,9 @@ void FixSpringSelfKokkos::unpack_exchange_kokkos( k_buf.extent(0)*k_buf.extent(1)); d_indices = k_indices.view(); + this->nrecv1 = nrecv1; + this->nextrarecv1 = nextrarecv1; + k_xoriginal.template sync(); copymode = 1; diff --git a/src/KOKKOS/fix_spring_self_kokkos.h b/src/KOKKOS/fix_spring_self_kokkos.h index b23e92249ba..add5a80bc7e 100644 --- a/src/KOKKOS/fix_spring_self_kokkos.h +++ b/src/KOKKOS/fix_spring_self_kokkos.h @@ -58,6 +58,7 @@ class FixSpringSelfKokkos : public FixSpringSelf, public KokkosBase { void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &indices,int nrecv, + int nrecv1,int nrecv1extra, ExecutionSpace space) override; @@ -65,6 +66,8 @@ class FixSpringSelfKokkos : public FixSpringSelf, public KokkosBase { int unpack_exchange(int, double *) override; protected: + int nrecv1,nextrarecv1; + DAT::tdual_x_array k_xoriginal; typename AT::t_x_array d_xoriginal; diff --git a/src/KOKKOS/fix_temp_berendsen_kokkos.cpp b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp index b986b3189af..8aaf5861943 100644 --- a/src/KOKKOS/fix_temp_berendsen_kokkos.cpp +++ b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp @@ -15,11 +15,9 @@ #include "fix_temp_berendsen_kokkos.h" #include "atom_kokkos.h" -#include "comm.h" #include "compute.h" #include "error.h" #include "force.h" -#include "group.h" #include "input.h" #include "modify.h" #include "update.h" @@ -27,7 +25,6 @@ #include "atom_masks.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_temp_rescale_kokkos.cpp b/src/KOKKOS/fix_temp_rescale_kokkos.cpp index 3a1c6ddd261..5c295634e72 100644 --- a/src/KOKKOS/fix_temp_rescale_kokkos.cpp +++ b/src/KOKKOS/fix_temp_rescale_kokkos.cpp @@ -15,11 +15,9 @@ #include "fix_temp_rescale_kokkos.h" #include "atom_kokkos.h" -#include "comm.h" #include "compute.h" #include "error.h" #include "force.h" -#include "group.h" #include "input.h" #include "modify.h" #include "update.h" @@ -27,7 +25,6 @@ #include "atom_masks.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_viscous_kokkos.cpp b/src/KOKKOS/fix_viscous_kokkos.cpp index 80ddff2fce2..86a5a359100 100644 --- a/src/KOKKOS/fix_viscous_kokkos.cpp +++ b/src/KOKKOS/fix_viscous_kokkos.cpp @@ -16,12 +16,8 @@ #include "atom_kokkos.h" #include "update.h" -#include "modify.h" -#include "input.h" -#include "memory_kokkos.h" #include "error.h" #include "atom_masks.h" -#include "kokkos_base.h" using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/KOKKOS/fix_wall_flow_kokkos.cpp b/src/KOKKOS/fix_wall_flow_kokkos.cpp new file mode 100644 index 00000000000..e86cad54b41 --- /dev/null +++ b/src/KOKKOS/fix_wall_flow_kokkos.cpp @@ -0,0 +1,293 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: Vladislav Galigerov (HSE), + Daniil Pavlov (MIPT) +------------------------------------------------------------------------- */ + +#include "fix_wall_flow_kokkos.h" +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "comm.h" +#include "math_const.h" +#include "memory_kokkos.h" + +#include + +using namespace LAMMPS_NS; + +template +FixWallFlowKokkos::FixWallFlowKokkos(LAMMPS *lmp, int narg, char **arg) : + FixWallFlow(lmp, narg, arg), rand_pool(rndseed + comm->me) +{ + kokkosable = 1; + exchange_comm_device = sort_device = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | RMASS_MASK | TYPE_MASK | MASK_MASK; + datamask_modify = V_MASK; + + memory->destroy(current_segment); + current_segment = nullptr; + grow_arrays(atomKK->nmax); + + d_walls = d_walls_t("FixWallFlowKokkos::walls", walls.size()); + auto h_walls = Kokkos::create_mirror_view(d_walls); + for (int i = 0; i < (int) walls.size(); ++i) h_walls(i) = walls[i]; + Kokkos::deep_copy(d_walls, h_walls); +} + +template FixWallFlowKokkos::~FixWallFlowKokkos() +{ + if (copymode) return; + memoryKK->destroy_kokkos(k_current_segment, current_segment); +} + +template void FixWallFlowKokkos::init() +{ + atomKK->sync(execution_space, datamask_read); + k_current_segment.template sync(); + d_x = atomKK->k_x.template view(); + + copymode = 1; + Kokkos::parallel_for(Kokkos::RangePolicy(0, atom->nlocal), *this); + copymode = 0; + + k_current_segment.template modify(); +} + +template +KOKKOS_INLINE_FUNCTION void FixWallFlowKokkos::operator()(TagFixWallFlowInit, + const int &i) const +{ + double pos = d_x(i, flowax); + d_current_segment(i) = compute_current_segment_kk(pos); +} + +template void FixWallFlowKokkos::end_of_step() +{ + atomKK->sync(execution_space, datamask_read); + k_current_segment.template sync(); + + d_x = atomKK->k_x.template view(); + d_v = atomKK->k_v.template view(); + d_type = atomKK->k_type.template view(); + d_mask = atomKK->k_mask.template view(); + d_mass = atomKK->k_mass.template view(); + d_rmass = atomKK->k_rmass.template view(); + + copymode = 1; + if (d_rmass.data()) { + Kokkos::parallel_for( + Kokkos::RangePolicy>(0, atom->nlocal), *this); + } else { + Kokkos::parallel_for( + Kokkos::RangePolicy>(0, atom->nlocal), *this); + } + copymode = 0; + atomKK->modified(execution_space, datamask_modify); + k_current_segment.template modify(); +} + +template +template +KOKKOS_INLINE_FUNCTION void FixWallFlowKokkos::operator()(TagFixWallFlowEndOfStep, + const int &atom_i) const +{ + if (d_mask[atom_i] & groupbit) { + double pos = d_x(atom_i, flowax); + int prev_segment = d_current_segment(atom_i); + d_current_segment(atom_i) = compute_current_segment_kk(pos); + if (prev_segment != d_current_segment(atom_i)) { generate_velocity_kk(atom_i); } + } +} + +template +template +KOKKOS_INLINE_FUNCTION void FixWallFlowKokkos::generate_velocity_kk(int atom_i) const +{ + const int newton_iteration_count = 10; + double mass = get_mass(MTag(), atom_i); + const double gamma = 1.0 / std::sqrt(2.0 * kT / mass); + double delta = gamma * flowvel; + + const double edd = std::exp(-delta * delta) / MathConst::MY_PIS + delta * std::erf(delta); + const double probability_threshold = 0.5 * (1. + delta / edd); + + double direction = 1.0; + + rand_type_t rand_gen = rand_pool.get_state(); + + if (/*random->uniform()*/ rand_gen.drand() > probability_threshold) { + delta = -delta; + direction = -direction; + } + + const double xi_0 = rand_gen.drand(); //random->uniform(); + const double F_inf = edd + delta; + const double xi = xi_0 * F_inf; + const double x_0 = (std::sqrt(delta * delta + 2) - delta) * 0.5; + double x = x_0; + for (int i = 0; i < newton_iteration_count; ++i) { + x -= (std::exp(x * x) * MathConst::MY_PIS * (xi - delta * std::erfc(x)) - 1.0) / (x + delta) * + 0.5; + } + + const double nu = x + delta; + const double v = nu / gamma; + + d_v(atom_i, flowax) = v * direction; + d_v(atom_i, (flowax + 1) % 3) = + /*random->gaussian()*/ rand_gen.normal() / (gamma * MathConst::MY_SQRT2); + d_v(atom_i, (flowax + 2) % 3) = + /*random->gaussian()*/ rand_gen.normal() / (gamma * MathConst::MY_SQRT2); + + rand_pool.free_state(rand_gen); +} + +template +KOKKOS_INLINE_FUNCTION int +FixWallFlowKokkos::compute_current_segment_kk(double pos) const +{ + int result = 0; + for (; result < (int) d_walls.extent(0) - 1; ++result) { + if (pos >= d_walls[result] && pos < d_walls[result + 1]) { return result; } + } + return -1; // -1 is "out of box" region +} + +template void FixWallFlowKokkos::grow_arrays(int nmax) +{ + k_current_segment.template sync(); + memoryKK->grow_kokkos(k_current_segment, current_segment, nmax, "WallFlowKK::current_segment"); + k_current_segment.template modify(); + + d_current_segment = k_current_segment.template view(); + h_current_segment = k_current_segment.template view(); +} + +template void FixWallFlowKokkos::copy_arrays(int i, int j, int) +{ + k_current_segment.template sync(); + h_current_segment(j) = h_current_segment(i); + k_current_segment.template modify(); +} + +/* ---------------------------------------------------------------------- + sort local atom-based arrays +------------------------------------------------------------------------- */ + +template +void FixWallFlowKokkos::sort_kokkos(Kokkos::BinSort &Sorter) +{ + // always sort on the device + + k_current_segment.sync_device(); + + Sorter.sort(LMPDeviceType(), k_current_segment.d_view); + + k_current_segment.modify_device(); +} + +template int FixWallFlowKokkos::pack_exchange(int i, double *buf) +{ + k_current_segment.sync_host(); + buf[0] = static_cast(h_current_segment(i)); + return 1; +} + +template +KOKKOS_INLINE_FUNCTION void FixWallFlowKokkos::operator()(TagFixWallFlowPackExchange, + const int &mysend) const +{ + const int send_i = d_sendlist(mysend); + const int segment = d_current_segment(send_i); + d_buf(mysend) = static_cast(segment); + + const int copy_i = d_copylist(mysend); + if (copy_i > -1) { d_current_segment(send_i) = d_current_segment(copy_i); } +} + +template +int FixWallFlowKokkos::pack_exchange_kokkos(const int &nsend, + DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace /*space*/) +{ + k_current_segment.template sync(); + + k_buf.template sync(); + k_sendlist.template sync(); + k_copylist.template sync(); + + d_sendlist = k_sendlist.view(); + d_copylist = k_copylist.view(); + + d_buf = typename ArrayTypes::t_xfloat_1d_um(k_buf.template view().data(), + k_buf.extent(0) * k_buf.extent(1)); + + copymode = 1; + + Kokkos::parallel_for(Kokkos::RangePolicy(0, nsend), + *this); + + copymode = 0; + + k_buf.template modify(); + k_current_segment.template modify(); + + return nsend; +} + +template int FixWallFlowKokkos::unpack_exchange(int i, double *buf) +{ + k_current_segment.sync_host(); + h_current_segment(i) = static_cast(buf[0]); + k_current_segment.modify_host(); + return 1; +} + +template +KOKKOS_INLINE_FUNCTION void FixWallFlowKokkos::operator()(TagFixWallFlowUnpackExchange, + const int &i) const +{ + int index = d_indices(i); + if (index > -1) { d_current_segment(index) = static_cast(d_buf(i)); } +} + +template +void FixWallFlowKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d &k_indices, int nrecv, + int /*nrecv1*/, int /*nextrarecv1*/, + ExecutionSpace /*space*/) +{ + d_buf = typename ArrayTypes::t_xfloat_1d_um(k_buf.template view().data(), + k_buf.extent(0) * k_buf.extent(1)); + d_indices = k_indices.view(); + + copymode = 1; + Kokkos::parallel_for(Kokkos::RangePolicy(0, nrecv), + *this); + copymode = 0; + + k_current_segment.template modify(); +} + +namespace LAMMPS_NS { +template class FixWallFlowKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixWallFlowKokkos; +#endif +} // namespace LAMMPS_NS diff --git a/src/KOKKOS/fix_wall_flow_kokkos.h b/src/KOKKOS/fix_wall_flow_kokkos.h new file mode 100644 index 00000000000..3535c74eb7d --- /dev/null +++ b/src/KOKKOS/fix_wall_flow_kokkos.h @@ -0,0 +1,129 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 +// clang-format off +FixStyle(wall/flow/kk,FixWallFlowKokkos); +FixStyle(wall/flow/kk/device,FixWallFlowKokkos); +FixStyle(wall/flow/kk/host,FixWallFlowKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_FIX_WALL_FLOW_KOKKOS_H +#define LMP_FIX_WALL_FLOW_KOKKOS_H + +#include "fix_wall_flow.h" +#include "kokkos_type.h" +#include "kokkos_base.h" +#include "Kokkos_Random.hpp" + +namespace LAMMPS_NS { + +struct TagFixWallFlowInit{}; +template +struct TagFixWallFlowEndOfStep{}; +struct TagFixWallFlowPackExchange{}; +struct TagFixWallFlowUnpackExchange{}; + +template +class FixWallFlowKokkos : public FixWallFlow, public KokkosBase { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + struct MassTag{}; + struct RMassTag{}; + FixWallFlowKokkos(class LAMMPS *, int, char **); + ~FixWallFlowKokkos(); + + void init() override; + void end_of_step() override; + void grow_arrays(int) override; + void copy_arrays(int, int, int) override; + void sort_kokkos(Kokkos::BinSort &Sorter) override; + int pack_exchange(int, double *) override; + int unpack_exchange(int, double *) override; + + KOKKOS_INLINE_FUNCTION + void operator() (TagFixWallFlowInit, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixWallFlowEndOfStep, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixWallFlowPackExchange, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixWallFlowUnpackExchange, const int&) const; + + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space) override; + + void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d &indices,int nrecv, + int /*nrecv1*/, int /*nextrarecv1*/, + ExecutionSpace space) override; + protected: + typename AT::t_x_array d_x; + typename AT::t_v_array d_v; + typename AT::t_int_1d d_type; + typename AT::t_int_1d d_mask; + + typename AT::t_float_1d d_mass; + typename AT::t_float_1d d_rmass; + + typedef typename AT::t_xfloat_1d d_walls_t; + typedef Kokkos::Random_XorShift64_Pool rand_pool_t; + typedef typename rand_pool_t::generator_type rand_type_t; + + typename AT::tdual_int_1d k_current_segment; + typename AT::t_int_1d d_current_segment; + typename HAT::t_int_1d h_current_segment; + + typename AT::t_int_1d d_sendlist; + typename AT::t_xfloat_1d d_buf; + typename AT::t_int_1d d_copylist; + typename AT::t_int_1d d_indices; + + d_walls_t d_walls; + + rand_pool_t rand_pool; + + template + KOKKOS_INLINE_FUNCTION + void generate_velocity_kk(int atom_i) const; + + KOKKOS_INLINE_FUNCTION + int compute_current_segment_kk(double pos) const; + + KOKKOS_INLINE_FUNCTION + double get_mass(MassTag, int atom_i) const + { + return d_mass(d_type(atom_i)); + } + + KOKKOS_INLINE_FUNCTION + double get_mass(RMassTag, int atom_i) const + { + return d_rmass(atom_i); + } +}; + +} + +#endif +#endif + diff --git a/src/KOKKOS/fix_wall_gran_kokkos.cpp b/src/KOKKOS/fix_wall_gran_kokkos.cpp index f870b0f240f..3ff97084fe9 100644 --- a/src/KOKKOS/fix_wall_gran_kokkos.cpp +++ b/src/KOKKOS/fix_wall_gran_kokkos.cpp @@ -15,7 +15,6 @@ #include "atom_kokkos.h" #include "error.h" #include "memory_kokkos.h" -#include "atom_vec_kokkos.h" #include "atom_masks.h" #include "update.h" @@ -419,6 +418,7 @@ void FixWallGranKokkos::operator()(TagFixWallGranUnpackExchange, con template void FixWallGranKokkos::unpack_exchange_kokkos( DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &k_indices, int nrecv, + int /*nrecv1*/, int /*nextrarecv1*/, ExecutionSpace /*space*/) { d_buf = typename ArrayTypes::t_xfloat_1d_um( @@ -430,7 +430,6 @@ void FixWallGranKokkos::unpack_exchange_kokkos( copymode = 1; - Kokkos::parallel_for(Kokkos::RangePolicy(0,nrecv),*this); copymode = 0; diff --git a/src/KOKKOS/fix_wall_gran_kokkos.h b/src/KOKKOS/fix_wall_gran_kokkos.h index c7d566ec726..ae54fdb0855 100644 --- a/src/KOKKOS/fix_wall_gran_kokkos.h +++ b/src/KOKKOS/fix_wall_gran_kokkos.h @@ -62,12 +62,13 @@ class FixWallGranKokkos : public FixWallGranOld, public KokkosBase { void operator()(TagFixWallGranUnpackExchange, const int&) const; int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, - DAT::tdual_int_1d k_sendlist, - DAT::tdual_int_1d k_copylist, - ExecutionSpace space) override; + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space) override; void unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d &indices,int nrecv, + int nrecv1,int nrecv1extra, ExecutionSpace space) override; private: @@ -91,6 +92,7 @@ class FixWallGranKokkos : public FixWallGranOld, public KokkosBase { typename AT::t_int_1d d_copylist; typename AT::t_int_1d d_indices; }; + } #endif diff --git a/src/KOKKOS/fix_wall_gran_old.cpp b/src/KOKKOS/fix_wall_gran_old.cpp index 8c02e6146dc..f832a80d11c 100644 --- a/src/KOKKOS/fix_wall_gran_old.cpp +++ b/src/KOKKOS/fix_wall_gran_old.cpp @@ -37,16 +37,16 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define PI27SQ 266.47931882941264802866 // 27*PI**2 -#define THREEROOT3 5.19615242270663202362 // 3*sqrt(3) -#define SIXROOT6 14.69693845669906728801 // 6*sqrt(6) -#define INVROOT6 0.40824829046386307274 // 1/sqrt(6) -#define FOURTHIRDS 1.333333333333333 // 4/3 -#define THREEQUARTERS 0.75 // 3/4 -#define TWOPI 6.28318530717959 // 2*PI +static constexpr double PI27SQ = 266.47931882941264802866; // 27*PI**2 +static constexpr double THREEROOT3 = 5.19615242270663202362; // 3*sqrt(3) +static constexpr double SIXROOT6 = 14.69693845669906728801; // 6*sqrt(6) +static constexpr double INVROOT6 = 0.40824829046386307274; // 1/sqrt(6) +static constexpr double FOURTHIRDS = 1.333333333333333; // 4/3 +static constexpr double THREEQUARTERS = 0.75; // 3/4 +static constexpr double TWOPI = 6.28318530717959; // 2*PI -#define BIG 1.0e20 -#define EPSILON 1e-10 +static constexpr double BIG = 1.0e20; +static constexpr double EPSILON = 1e-10; // XYZ PLANE need to be 0,1,2 @@ -68,8 +68,8 @@ FixWallGranOld::FixWallGranOld(LAMMPS *lmp, int narg, char **arg) : { if (narg < 4) error->all(FLERR,"Illegal fix wall/gran command"); - if (!atom->sphere_flag) - error->all(FLERR,"Fix wall/gran requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR,"Fix {} requires atom attribute omega", style); + if (!atom->radius_flag) error->all(FLERR,"Fix {} requires atom attribute radius", style); create_attribute = 1; limit_damping = 0; @@ -81,7 +81,7 @@ FixWallGranOld::FixWallGranOld(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[3],"hooke/history") == 0) pairstyle = HOOKE_HISTORY; else if (strcmp(arg[3],"hertz/history") == 0) pairstyle = HERTZ_HISTORY; else if (strcmp(arg[3],"granular") == 0) pairstyle = GRANULAR; - else error->all(FLERR,"Invalid fix wall/gran interaction style"); + else error->all(FLERR,"Invalid fix {} interaction style: {}", style, arg[3]); use_history = restart_peratom = 1; if (pairstyle == HOOKE) use_history = restart_peratom = 0; @@ -1704,4 +1704,3 @@ double FixWallGranOld::pulloff_distance(double radius) dist = a*a/radius - 2*sqrt(MY_PI*coh*a/E); return dist; } - diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.cpp b/src/KOKKOS/fix_wall_lj93_kokkos.cpp index dff47f1c30c..93bcc9abc9f 100644 --- a/src/KOKKOS/fix_wall_lj93_kokkos.cpp +++ b/src/KOKKOS/fix_wall_lj93_kokkos.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "fix_wall_lj93_kokkos.h" -#include + #include "atom_kokkos.h" #include "error.h" #include "atom_masks.h" @@ -51,8 +51,6 @@ void FixWallLJ93Kokkos::wall_particle(int m_in, int which, double co x = atomKK->k_x.view(); f = atomKK->k_f.view(); mask = atomKK->k_mask.view(); - DAT::tdual_int_scalar k_oneflag = DAT::tdual_int_scalar("fix:oneflag"); - d_oneflag = k_oneflag.view(); int nlocal = atom->nlocal; @@ -66,10 +64,6 @@ void FixWallLJ93Kokkos::wall_particle(int m_in, int which, double co copymode = 0; atomKK->modified(execution_space, F_MASK); - - k_oneflag.template modify(); - k_oneflag.template sync(); - if (k_oneflag.h_view()) error->one(FLERR,"Particle on or inside fix wall surface"); } template @@ -80,10 +74,8 @@ void FixWallLJ93Kokkos::wall_particle_item(int i, value_type ewall) if (side < 0) delta = x(i,dim) - coord; else delta = coord - x(i,dim); if (delta >= cutoff[m]) return; - if (delta <= 0.0) { - d_oneflag() = 1; - return; - } + if (delta <= 0.0) + Kokkos::abort("Particle on or inside fix wall surface"); double rinv = 1.0/delta; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.h b/src/KOKKOS/fix_wall_lj93_kokkos.h index 2bc78f3781f..720e586f5d7 100644 --- a/src/KOKKOS/fix_wall_lj93_kokkos.h +++ b/src/KOKKOS/fix_wall_lj93_kokkos.h @@ -50,7 +50,6 @@ class FixWallLJ93Kokkos : public FixWallLJ93 { typename AT::t_x_array x; typename AT::t_f_array f; typename AT::t_int_1d mask; - typename AT::t_int_scalar d_oneflag; }; template diff --git a/src/KOKKOS/fix_wall_reflect_kokkos.cpp b/src/KOKKOS/fix_wall_reflect_kokkos.cpp index a8a01c19266..731ce11f10c 100644 --- a/src/KOKKOS/fix_wall_reflect_kokkos.cpp +++ b/src/KOKKOS/fix_wall_reflect_kokkos.cpp @@ -21,8 +21,6 @@ #include "update.h" #include "variable.h" -#include - using namespace LAMMPS_NS; enum{XLO=0,XHI=1,YLO=2,YHI=3,ZLO=4,ZHI=5}; diff --git a/src/KOKKOS/grid3d_kokkos.cpp b/src/KOKKOS/grid3d_kokkos.cpp index 7b97c417ddc..26882f20ca9 100644 --- a/src/KOKKOS/grid3d_kokkos.cpp +++ b/src/KOKKOS/grid3d_kokkos.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; -#define DELTA 16 +static constexpr int DELTA = 16; /* ---------------------------------------------------------------------- NOTES: @@ -635,7 +635,7 @@ void Grid3dKokkos::setup_comm_tiled(int &nbuf1, int &nbuf2) ------------------------------------------------------------------------- */ template -void Grid3dKokkos::forward_comm(int caller, void *ptr, int which, int nper, int nbyte, +void Grid3dKokkos::forward_comm(int caller, void *ptr, int which, int nper, int /*nbyte*/, FFT_DAT::tdual_FFT_SCALAR_1d& k_buf1, FFT_DAT::tdual_FFT_SCALAR_1d& k_buf2, MPI_Datatype datatype) { @@ -645,7 +645,7 @@ void Grid3dKokkos::forward_comm(int caller, void *ptr, int which, in else forward_comm_kspace_tiled((KSpace *) ptr,which,nper,k_buf1,k_buf2,datatype); } else - error->all(FLERR,"Kokkos grid comm only supports Kspace"); + error->all(FLERR,"Kokkos grid comm currently only supports Kspace"); } /* ---------------------------------------------------------------------- @@ -775,7 +775,7 @@ forward_comm_kspace_tiled(KSpace *kspace, int which, int nper, ------------------------------------------------------------------------- */ template -void Grid3dKokkos::reverse_comm(int caller, void *ptr, int which, int nper, int nbyte, +void Grid3dKokkos::reverse_comm(int caller, void *ptr, int which, int nper, int /*nbyte*/, FFT_DAT::tdual_FFT_SCALAR_1d& k_buf1, FFT_DAT::tdual_FFT_SCALAR_1d& k_buf2, MPI_Datatype datatype) { @@ -945,7 +945,7 @@ int Grid3dKokkos::indices(DAT::tdual_int_2d &k_list, int index, int xlo, int xhi, int ylo, int yhi, int zlo, int zhi) { int nmax = (xhi-xlo+1) * (yhi-ylo+1) * (zhi-zlo+1); - if (k_list.extent(1) < nmax) + if ((int)k_list.extent(1) < nmax) k_list.resize(k_list.extent(0),nmax); if (nmax == 0) return 0; diff --git a/src/KOKKOS/improper_class2_kokkos.cpp b/src/KOKKOS/improper_class2_kokkos.cpp index f1ed6fdbc0f..862ba2a52fd 100644 --- a/src/KOKKOS/improper_class2_kokkos.cpp +++ b/src/KOKKOS/improper_class2_kokkos.cpp @@ -27,8 +27,7 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/improper_harmonic_kokkos.cpp b/src/KOKKOS/improper_harmonic_kokkos.cpp index 1d217461d05..a075238f226 100644 --- a/src/KOKKOS/improper_harmonic_kokkos.cpp +++ b/src/KOKKOS/improper_harmonic_kokkos.cpp @@ -28,8 +28,8 @@ using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/kissfft_kokkos.h b/src/KOKKOS/kissfft_kokkos.h index 265677a21c7..e24768f774b 100644 --- a/src/KOKKOS/kissfft_kokkos.h +++ b/src/KOKKOS/kissfft_kokkos.h @@ -489,7 +489,7 @@ class KissFFTKokkos { * It can be freed with free(), rather than a kiss_fft-specific function. */ - static kiss_fft_state_kokkos kiss_fft_alloc_kokkos(int nfft, int inverse_fft, void *mem, size_t *lenmem) + static kiss_fft_state_kokkos kiss_fft_alloc_kokkos(int nfft, int inverse_fft, void * /*mem*/, size_t * /*lenmem*/) { kiss_fft_state_kokkos st; int i; diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index 5572f69901a..58b9436af6c 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -57,7 +57,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) reverse_pair_comm_changed = 0; forward_fix_comm_changed = 0; reverse_comm_changed = 0; - sort_changed = 0; + sort_changed = atom_map_changed = 0; delete memory; memory = new MemoryKokkos(lmp); @@ -225,6 +225,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 0; forward_pair_comm_classic = reverse_pair_comm_classic = forward_fix_comm_classic = 0; sort_classic = 0; + atom_map_classic = 0; exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 0; } else { @@ -240,6 +241,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 1; forward_pair_comm_classic = reverse_pair_comm_classic = forward_fix_comm_classic = 1; sort_classic = 1; + atom_map_classic = 1; exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 0; } @@ -503,6 +505,14 @@ void KokkosLMP::accelerator(int narg, char **arg) else error->all(FLERR,"Illegal package kokkos command"); sort_changed = 0; iarg += 2; + } else if (strcmp(arg[iarg],"atom/map") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command"); + else if (strcmp(arg[iarg+1],"no") == 0) atom_map_classic = 1; + else if (strcmp(arg[iarg+1],"host") == 0) atom_map_classic = 1; + else if (strcmp(arg[iarg+1],"device") == 0) atom_map_classic = 0; + else error->all(FLERR,"Illegal package kokkos command"); + atom_map_changed = 0; + iarg += 2; } else if ((strcmp(arg[iarg],"gpu/aware") == 0) || (strcmp(arg[iarg],"cuda/aware") == 0)) { if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command"); @@ -563,6 +573,10 @@ void KokkosLMP::accelerator(int narg, char **arg) sort_classic = 1; sort_changed = 1; } + if (atom_map_classic == 0) { + atom_map_classic = 1; + atom_map_changed = 1; + } } // if "gpu/aware on" and "pair/only off", and comm flags were changed previously, change them back @@ -599,6 +613,10 @@ void KokkosLMP::accelerator(int narg, char **arg) sort_classic = 0; sort_changed = 0; } + if (atom_map_changed) { + atom_map_classic = 0; + atom_map_changed = 0; + } } #endif @@ -622,7 +640,7 @@ void KokkosLMP::accelerator(int narg, char **arg) int KokkosLMP::neigh_count(int m) { - int inum; + int inum = 0; int nneigh = 0; ArrayTypes::t_int_1d h_ilist; diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h index 5406feab9bb..748aff7f83e 100644 --- a/src/KOKKOS/kokkos.h +++ b/src/KOKKOS/kokkos.h @@ -34,6 +34,7 @@ class KokkosLMP : protected Pointers { int forward_fix_comm_classic; int reverse_comm_classic; int sort_classic; + int atom_map_classic; int exchange_comm_on_host; int forward_comm_on_host; int reverse_comm_on_host; @@ -44,6 +45,7 @@ class KokkosLMP : protected Pointers { int forward_fix_comm_changed; int reverse_comm_changed; int sort_changed; + int atom_map_changed; int nthreads,ngpus; int auto_sync; int gpu_aware_flag; diff --git a/src/KOKKOS/kokkos_base.h b/src/KOKKOS/kokkos_base.h index 1e22a386570..22ed1687a9b 100644 --- a/src/KOKKOS/kokkos_base.h +++ b/src/KOKKOS/kokkos_base.h @@ -26,18 +26,18 @@ class KokkosBase { KokkosBase() {} // Pair - virtual int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, - int, DAT::tdual_xfloat_1d &, + virtual int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, + DAT::tdual_xfloat_1d &, int, int *) {return 0;}; virtual void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d &) {} virtual int pack_reverse_comm_kokkos(int, int, DAT::tdual_xfloat_1d &) {return 0;}; - virtual void unpack_reverse_comm_kokkos(int, DAT::tdual_int_2d, - int, DAT::tdual_xfloat_1d &) {} + virtual void unpack_reverse_comm_kokkos(int, DAT::tdual_int_1d, + DAT::tdual_xfloat_1d &) {} // Fix - virtual int pack_forward_comm_fix_kokkos(int, DAT::tdual_int_2d, - int, DAT::tdual_xfloat_1d &, + virtual int pack_forward_comm_fix_kokkos(int, DAT::tdual_int_1d, + DAT::tdual_xfloat_1d &, int, int *) {return 0;}; virtual void unpack_forward_comm_fix_kokkos(int, int, DAT::tdual_xfloat_1d &) {} @@ -47,6 +47,7 @@ class KokkosBase { ExecutionSpace /*space*/) { return 0; } virtual void unpack_exchange_kokkos(DAT::tdual_xfloat_2d & /*k_buf*/, DAT::tdual_int_1d & /*indices*/, int /*nrecv*/, + int /*nrecv1*/, int /*nextrarecv1*/, ExecutionSpace /*space*/) {} // Region diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index c8ab2198d65..cc4e00819fb 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -453,13 +453,6 @@ struct alignas(2*sizeof(F_FLOAT)) s_FLOAT2 { v[0] = v[1] = 0.0; } - KOKKOS_INLINE_FUNCTION - s_FLOAT2(const s_FLOAT2 & rhs) { - for (int i = 0; i < 2; i++){ - v[i] = rhs.v[i]; - } - } - KOKKOS_INLINE_FUNCTION void operator+=(const s_FLOAT2 &rhs) { v[0] += rhs.v[0]; @@ -696,6 +689,14 @@ typedef tdual_int_2d_dl::t_dev_um t_int_2d_um_dl; typedef tdual_int_2d_dl::t_dev_const_um t_int_2d_const_um_dl; typedef tdual_int_2d_dl::t_dev_const_randomread t_int_2d_randomread_dl; +typedef Kokkos:: + DualView tdual_int_3d; +typedef tdual_int_3d::t_dev t_int_3d; +typedef tdual_int_3d::t_dev_const t_int_3d_const; +typedef tdual_int_3d::t_dev_um t_int_3d_um; +typedef tdual_int_3d::t_dev_const_um t_int_3d_const_um; +typedef tdual_int_3d::t_dev_const_randomread t_int_3d_randomread; + typedef Kokkos:: DualView tdual_tagint_1d; @@ -1013,6 +1014,13 @@ typedef tdual_int_2d_dl::t_host_um t_int_2d_um_dl; typedef tdual_int_2d_dl::t_host_const_um t_int_2d_const_um_dl; typedef tdual_int_2d_dl::t_host_const_randomread t_int_2d_randomread_dl; +typedef Kokkos::DualView tdual_int_3d; +typedef tdual_int_3d::t_host t_int_3d; +typedef tdual_int_3d::t_host_const t_int_3d_const; +typedef tdual_int_3d::t_host_um t_int_3d_um; +typedef tdual_int_3d::t_host_const_um t_int_3d_const_um; +typedef tdual_int_3d::t_host_const_randomread t_int_3d_randomread; + typedef Kokkos::DualView tdual_tagint_1d; typedef tdual_tagint_1d::t_host t_tagint_1d; typedef tdual_tagint_1d::t_host_const t_tagint_1d_const; diff --git a/src/KOKKOS/meam_dens_init_kokkos.h b/src/KOKKOS/meam_dens_init_kokkos.h index 60bb6553d80..68e69430fd9 100644 --- a/src/KOKKOS/meam_dens_init_kokkos.h +++ b/src/KOKKOS/meam_dens_init_kokkos.h @@ -481,7 +481,7 @@ void MEAMKokkos::calc_rho1(int i, int /*ntype*/, typename AT::t_int_1d type, typename AT::t_int_1d d_map, typename AT::t_x_array x, typename AT::t_int_1d d_numneigh, int offset) const { - // The rho0, etc. arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The rho0, etc. arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_rho0 = ScatterViewHelper,decltype(dup_rho0),decltype(ndup_rho0)>::get(dup_rho0,ndup_rho0); auto a_rho0 = v_rho0.template access>(); auto v_arho2b = ScatterViewHelper,decltype(dup_arho2b),decltype(ndup_arho2b)>::get(dup_arho2b,ndup_arho2b); diff --git a/src/KOKKOS/meam_force_kokkos.h b/src/KOKKOS/meam_force_kokkos.h index d086230fc70..a546ab54d41 100644 --- a/src/KOKKOS/meam_force_kokkos.h +++ b/src/KOKKOS/meam_force_kokkos.h @@ -131,7 +131,7 @@ KOKKOS_INLINE_FUNCTION void MEAMKokkos::operator()(TagMEAMForce, decltype(dup_f), decltype(ndup_f)>::get( @@ -601,8 +601,31 @@ KOKKOS_INLINE_FUNCTION void MEAMKokkos::operator()(TagMEAMForce::operator()(TagMEAMForce } /* ---------------------------------------------------------------------- - grow or shrink 1st dim of a 1d array - last dim must stay the same + grow or shrink a 1d array ------------------------------------------------------------------------- */ template @@ -80,6 +79,10 @@ TYPE grow_kokkos(TYPE &data, typename TYPE::value_type *&array, return data; } +/* ---------------------------------------------------------------------- + destroy a 1d array +------------------------------------------------------------------------- */ + template void destroy_kokkos(TYPE data, typename TYPE::value_type* &array) { @@ -92,71 +95,6 @@ void destroy_kokkos(TYPE data, typename TYPE::value_type* &array) create a 2d array ------------------------------------------------------------------------- */ -template -TYPE destroy_kokkos(TYPE &data) -{ - /*if (data.data()!=nullptr) - free(data.data());*/ - data = TYPE(); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name),n1); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, int n2, const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*n2*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name),n1,n2); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, int n2, int n3 ,const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*n2*n3*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name),n1,n2,n3); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4 ,const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*n2*n3*n4*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name),n1,n2,n3,n4); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4, int n5 ,const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*n2*n3*n4*n5*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name),n1,n2,n3,n4,n5); - return data; -} - -template -TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4, int n5 , int n6 ,const char *name) -{ - /*typename TYPE::non_const_value_type* ptr = (typename TYPE::non_const_value_type*) - malloc(n1*n2*n3*n4*n5*n6*sizeof(typename TYPE::non_const_value_type)*4);*/ - data = TYPE(std::string(name) ,n1,n2,n3,n4,n5,n6); - return data; -} - - - template TYPE create_kokkos(TYPE &data, HTYPE &h_data, int n1, int n2, const char *name) @@ -202,20 +140,87 @@ template return data; } -template - TYPE create_kokkos(TYPE &data, HTYPE &h_data, int n1, int n2, int n3, - const char *name) +template +TYPE create_kokkos(TYPE &data, typename TYPE::value_type **&array, + int n1, const char *name) { - data = TYPE(std::string(name),n1,n2,n3); - h_data = Kokkos::create_mirror_view(data); + data = TYPE(std::string(name),n1); + bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; + array = (typename TYPE::value_type **) smalloc(nbytes,name); + + for (int i = 0; i < n1; i++) + if (data.h_view.extent(1) == 0) + array[i] = nullptr; + else + array[i] = &data.h_view(i,0); + + return data; +} + +/* ---------------------------------------------------------------------- + grow or shrink a 2d array +------------------------------------------------------------------------- */ + +template +TYPE grow_kokkos(TYPE &data, typename TYPE::value_type **&array, + int n1, int n2, const char *name) +{ + if (array == nullptr) return create_kokkos(data,array,n1,n2,name); + data.resize(n1,n2); + bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; + array = (typename TYPE::value_type**) srealloc(array,nbytes,name); + + for (int i = 0; i < n1; i++) + if (n2 == 0) + array[i] = nullptr; + else + array[i] = &data.h_view(i,0); + return data; } +template +TYPE grow_kokkos(TYPE &data, typename TYPE::value_type **&array, + int n1, const char *name) +{ + if (array == nullptr) return create_kokkos(data,array,n1,name); + + data.resize(n1); + + bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; + array = (typename TYPE::value_type **) srealloc(array,nbytes,name); + + for (int i = 0; i < n1; i++) + if (data.h_view.extent(1) == 0) + array[i] = nullptr; + else + array[i] = &data.h_view(i,0); + + return data; +} + +/* ---------------------------------------------------------------------- + destroy a 2d array +------------------------------------------------------------------------- */ + +template +void destroy_kokkos(TYPE data, typename TYPE::value_type** &array) +{ + if (array == nullptr) return; + data = TYPE(); + sfree(array); + array = nullptr; +} + +/* ---------------------------------------------------------------------- + create a 3d array +------------------------------------------------------------------------- */ + template TYPE create_kokkos(TYPE &data, typename TYPE::value_type ***&array, int n1, int n2, int n3, const char *name) { - data = TYPE(std::string(name),n1,n2); + data = TYPE(std::string(name),n1,n2,n3); bigint nbytes = ((bigint) sizeof(typename TYPE::value_type **)) * n1; array = (typename TYPE::value_type ***) smalloc(nbytes,name); @@ -263,79 +268,46 @@ template return data; } -/* ---------------------------------------------------------------------- - grow or shrink 1st dim of a 2d array - last dim must stay the same -------------------------------------------------------------------------- */ - -template -TYPE grow_kokkos(TYPE &data, typename TYPE::value_type **&array, - int n1, int n2, const char *name) +template + TYPE create_kokkos(TYPE &data, HTYPE &h_data, int n1, int n2, int n3, + const char *name) { - if (array == nullptr) return create_kokkos(data,array,n1,n2,name); - data.resize(n1,n2); - bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; - array = (typename TYPE::value_type**) srealloc(array,nbytes,name); - - for (int i = 0; i < n1; i++) - if (n2 == 0) - array[i] = nullptr; - else - array[i] = &data.h_view(i,0); - + data = TYPE(std::string(name),n1,n2,n3); + h_data = Kokkos::create_mirror_view(data); return data; } -template -TYPE create_kokkos(TYPE &data, typename TYPE::value_type **&array, - int n1, const char *name) -{ - data = TYPE(std::string(name),n1); - bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; - array = (typename TYPE::value_type **) smalloc(nbytes,name); - for (int i = 0; i < n1; i++) - if (data.h_view.extent(1) == 0) - array[i] = nullptr; - else - array[i] = &data.h_view(i,0); - - return data; -} +/* ---------------------------------------------------------------------- + grow or shrink a 3d array +------------------------------------------------------------------------- */ template -TYPE grow_kokkos(TYPE &data, typename TYPE::value_type **&array, - int n1, const char *name) +TYPE grow_kokkos(TYPE &data, typename TYPE::value_type ***&array, + int n1, int n2, int n3, const char *name) { - if (array == nullptr) return create_kokkos(data,array,n1,name); - - data.resize(n1); - - bigint nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n1; - array = (typename TYPE::value_type **) srealloc(array,nbytes,name); + if (array == nullptr) return create_kokkos(data,array,n1,n2,n3,name); + data.resize(n1,n2,n3); + bigint nbytes = ((bigint) sizeof(typename TYPE::value_type **)) * n1; + array = (typename TYPE::value_type ***) smalloc(nbytes,name); - for (int i = 0; i < n1; i++) - if (data.h_view.extent(1) == 0) + for (int i = 0; i < n1; i++) { + if (n2 == 0) { array[i] = nullptr; - else - array[i] = &data.h_view(i,0); - + } else { + nbytes = ((bigint) sizeof(typename TYPE::value_type *)) * n2; + array[i] = (typename TYPE::value_type **) smalloc(nbytes,name); + for (int j = 0; j < n2; j++) { + if (n3 == 0) + array[i][j] = nullptr; + else + array[i][j] = &data.h_view(i,j,0); + } + } + } return data; } -/* ---------------------------------------------------------------------- - destroy a 2d array -------------------------------------------------------------------------- */ - -template -void destroy_kokkos(TYPE data, typename TYPE::value_type** &array) -{ - if (array == nullptr) return; - data = TYPE(); - sfree(array); - array = nullptr; -} - /* ---------------------------------------------------------------------- destroy a 3d array ------------------------------------------------------------------------- */ @@ -374,6 +346,65 @@ static double memory_usage(TYPE &data) return data.span() * sizeof(typename TYPE::value_type); } +/* ---------------------------------------------------------------------- + legacy functions +------------------------------------------------------------------------- */ + +template +TYPE destroy_kokkos(TYPE &data) +{ + data = TYPE(); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name),n1); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, int n2, const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name),n1,n2); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, int n2, int n3 ,const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name),n1,n2,n3); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4 ,const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name),n1,n2,n3,n4); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4, int n5 ,const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name),n1,n2,n3,n4,n5); + return data; +} + +template +TYPE create_kokkos(TYPE &data, int n1, int n2, int n3, int n4, int n5 , int n6 ,const char *name) +{ + data = TYPE(); + data = TYPE(std::string(name) ,n1,n2,n3,n4,n5,n6); + return data; +} + }; } diff --git a/src/KOKKOS/min_cg_kokkos.cpp b/src/KOKKOS/min_cg_kokkos.cpp index d9a7088c3bf..17cce19a701 100644 --- a/src/KOKKOS/min_cg_kokkos.cpp +++ b/src/KOKKOS/min_cg_kokkos.cpp @@ -13,21 +13,22 @@ ------------------------------------------------------------------------- */ #include "min_cg_kokkos.h" -#include -#include -#include "update.h" -#include "output.h" -#include "timer.h" + #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" #include "fix_minimize_kokkos.h" +#include "output.h" +#include "timer.h" +#include "update.h" + +#include using namespace LAMMPS_NS; // EPS_ENERGY = minimum normalization for energy tolerance -#define EPS_ENERGY 1.0e-8 +static constexpr double EPS_ENERGY = 1.0e-8; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/min_linesearch_kokkos.cpp b/src/KOKKOS/min_linesearch_kokkos.cpp index e8a22f9ddb9..61aa3900cdc 100644 --- a/src/KOKKOS/min_linesearch_kokkos.cpp +++ b/src/KOKKOS/min_linesearch_kokkos.cpp @@ -38,13 +38,12 @@ using namespace LAMMPS_NS; // EMACH = machine accuracy limit of energy changes (1.0e-8) // EPS_QUAD = tolerance for quadratic projection -#define ALPHA_MAX 1.0 -#define ALPHA_REDUCE 0.5 -#define BACKTRACK_SLOPE 0.4 -#define QUADRATIC_TOL 0.1 -//#define EMACH 1.0e-8 -#define EMACH 1.0e-8 -#define EPS_QUAD 1.0e-28 +static constexpr double ALPHA_MAX = 1.0; +static constexpr double ALPHA_REDUCE = 0.5; +static constexpr double BACKTRACK_SLOPE = 0.4; +static constexpr double QUADRATIC_TOL = 0.1; +static constexpr double EMACH = 1.0e-8; +static constexpr double EPS_QUAD = 1.0e-28; /* ---------------------------------------------------------------------- */ @@ -59,8 +58,8 @@ MinLineSearchKokkos::MinLineSearchKokkos(LAMMPS *lmp) : MinKokkos(lmp) MinLineSearchKokkos::~MinLineSearchKokkos() { - delete [] gextra; - delete [] hextra; + delete[] gextra; + delete[] hextra; } /* ---------------------------------------------------------------------- */ @@ -171,8 +170,8 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) { double fdothall,fdothme,hme,hmaxall; double de_ideal,de; - double delfh,engprev,relerr,alphaprev,fhprev,ff,fh,alpha0; - double dot[2],dotall[2]; + double delfh,engprev,relerr,alphaprev,fhprev,fh,alpha0; + double dot,dotall; double alphamax; fix_minimize_kk->k_vectors.sync(); @@ -280,22 +279,16 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) sdot.d1 += l_fvec[i]*l_h[i]; },sdot); } - dot[0] = sdot.d0; - dot[1] = sdot.d1; + dot = sdot.d1; - MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&dot,&dotall,1,MPI_DOUBLE,MPI_SUM,world); if (nextra_global) { for (int i = 0; i < nextra_global; i++) { - dotall[0] += fextra[i]*fextra[i]; - dotall[1] += fextra[i]*hextra[i]; + dotall += fextra[i]*hextra[i]; } } - ff = dotall[0]; - fh = dotall[1]; - if (output->thermo->normflag) { - ff /= atom->natoms; - fh /= atom->natoms; - } + fh = dotall; + if (output->thermo->normflag) fh /= atom->natoms; delfh = fh - fhprev; diff --git a/src/KOKKOS/mliap_data_kokkos.cpp b/src/KOKKOS/mliap_data_kokkos.cpp index e5b34ecaa01..fd5a8521146 100644 --- a/src/KOKKOS/mliap_data_kokkos.cpp +++ b/src/KOKKOS/mliap_data_kokkos.cpp @@ -22,8 +22,6 @@ #include "kokkos_type.h" #include "pair_mliap_kokkos.h" #include "atom_masks.h" -#include "mliap_descriptor.h" -#include "lammps.h" #include "kokkos.h" /* ---------------------------------------------------------------------- */ @@ -59,7 +57,6 @@ MLIAPDataKokkos::~MLIAPDataKokkos() { memoryKK->destroy_kokkos(k_pair_i,pair_i); memoryKK->destroy_kokkos(k_jelems,jelems); memoryKK->destroy_kokkos(k_elems,elems); - memoryKK->destroy_kokkos(k_ij); memoryKK->destroy_kokkos(k_rij,rij); memoryKK->destroy_kokkos(k_graddesc,graddesc); } @@ -72,7 +69,6 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i list = list_in; // grow nmax gradforce array if necessary - if (atom->nmax > nmax) { nmax = atom->nmax; if (gradgradflag > -1){ @@ -149,13 +145,13 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i auto type = atomKK->k_type.view(); auto map=k_pairmliap->k_map.template view(); - Kokkos::parallel_scan(nlistatoms, KOKKOS_LAMBDA (int ii, int &update, const bool final) { + Kokkos::parallel_scan(natomneigh, KOKKOS_LAMBDA (int ii, int &update, const bool final) { if (final) d_ij(ii) = update; update += d_numneighs(ii); }); - Kokkos::parallel_for(nlistatoms, KOKKOS_LAMBDA (int ii) { + Kokkos::parallel_for(natomneigh, KOKKOS_LAMBDA (int ii) { int ij = d_ij(ii); const int i = d_ilist[ii]; const double xtmp = x(i, 0); @@ -186,10 +182,12 @@ void MLIAPDataKokkos::generate_neighdata(class NeighList *list_in, i d_iatoms[ii] = i; d_ielems[ii] = ielem; }); + Kokkos::parallel_for(nmax, KOKKOS_LAMBDA (int i) { const int itype = type(i); d_elems(i) = map(itype); }); + modified(execution_space, NUMNEIGHS_MASK | IATOMS_MASK | IELEMS_MASK | ELEMS_MASK | JATOMS_MASK | PAIR_I_MASK | JELEMS_MASK | RIJ_MASK | IJ_MASK ); eflag = eflag_in; vflag = vflag_in; @@ -203,15 +201,15 @@ void MLIAPDataKokkos::grow_neigharrays() { f = atom->f; f_device = atomKK->k_f.view().data(); // grow neighbor arrays if necessary - - if (natomneigh_max < nlistatoms) { - natomneigh_max = nlistatoms; + natomneigh = list->inum; + if (list->ghost == 1) natomneigh += list->gnum; + if (natomneigh_max < natomneigh) { + natomneigh_max = natomneigh; memoryKK->destroy_kokkos(k_iatoms,iatoms); memoryKK->create_kokkos(k_iatoms, iatoms, natomneigh_max, "mliap_data:iatoms"); memoryKK->destroy_kokkos(k_ielems,ielems); memoryKK->create_kokkos(k_ielems, ielems, natomneigh_max, "mliap_data:ielems"); - memoryKK->destroy_kokkos(k_ij); memoryKK->create_kokkos(k_ij, natomneigh_max, "mliap_data:ij"); memoryKK->destroy_kokkos(k_numneighs,numneighs); memoryKK->create_kokkos(k_numneighs, numneighs, natomneigh_max, "mliap_data:numneighs"); @@ -227,7 +225,7 @@ void MLIAPDataKokkos::grow_neigharrays() { auto d_cutsq=k_pairmliap->k_cutsq.template view(); auto h_cutsq=k_pairmliap->k_cutsq.template view(); auto d_numneighs = k_numneighs.template view(); - Kokkos::parallel_reduce(nlistatoms, KOKKOS_LAMBDA (int ii, int &contrib) { + Kokkos::parallel_reduce(natomneigh, KOKKOS_LAMBDA (int ii, int &contrib) { const int i = d_ilist[ii]; int count=0; const double xtmp = x(i, 0); diff --git a/src/KOKKOS/mliap_descriptor_kokkos.h b/src/KOKKOS/mliap_descriptor_kokkos.h index 075f0e9fed7..d4ab72ff96f 100644 --- a/src/KOKKOS/mliap_descriptor_kokkos.h +++ b/src/KOKKOS/mliap_descriptor_kokkos.h @@ -29,13 +29,11 @@ template class MLIAPDescriptorKokkos : virtual protected Poin MLIAPDescriptorKokkos(LAMMPS *lmp, MLIAPDescriptor *descriptor_in) : Pointers(lmp), descriptor(descriptor_in) { - memoryKK->destroy_kokkos(k_wjelem); } void init_data() { int num_elems = descriptor->nelements; - memoryKK->destroy_kokkos(k_wjelem); memoryKK->create_kokkos(k_wjelem, num_elems, "MLIAPDescriptorKokkos::k_wjelem"); for (int i = 0; i < num_elems; ++i) k_wjelem.h_view(i) = descriptor->wjelem[i]; k_wjelem.modify(); @@ -44,7 +42,6 @@ template class MLIAPDescriptorKokkos : virtual protected Poin virtual ~MLIAPDescriptorKokkos() { - memoryKK->destroy_kokkos(k_wjelem); } MLIAPDescriptor *descriptor; diff --git a/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp b/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp index ff9e5d2aa68..1cf368e9522 100644 --- a/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp +++ b/src/KOKKOS/mliap_descriptor_so3_kokkos.cpp @@ -21,19 +21,12 @@ #include "atom_kokkos.h" #include "comm.h" #include "error.h" -#include "memory.h" #include "mliap_data_kokkos.h" #include "mliap_so3_kokkos.h" #include "pair_mliap.h" -#include "tokenizer.h" - -#include using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define MAXWORD 3 - /* ---------------------------------------------------------------------- */ template MLIAPDescriptorSO3Kokkos::MLIAPDescriptorSO3Kokkos(LAMMPS *lmp, char *paramfilename) diff --git a/src/KOKKOS/mliap_model_kokkos.h b/src/KOKKOS/mliap_model_kokkos.h index 72077f59880..4840798cc1c 100644 --- a/src/KOKKOS/mliap_model_kokkos.h +++ b/src/KOKKOS/mliap_model_kokkos.h @@ -29,14 +29,12 @@ template class MLIAPModelKokkos : protected Pointers { MLIAPModelKokkos(LAMMPS *lmp, MLIAPModel *model_in) : Pointers(lmp), model(model_in) {} virtual ~MLIAPModelKokkos() { - memoryKK->destroy_kokkos(k_coeffelem); model->coeffelem = nullptr; } void set_k_coeffelem() { double **tmp = nullptr; - memoryKK->destroy_kokkos(k_coeffelem); memoryKK->create_kokkos(k_coeffelem, tmp, model->nelements, model->nparams, "MLIAPModelKokkos::coeffelem"); for (int i = 0; i < model->nelements; ++i) diff --git a/src/KOKKOS/mliap_model_linear_kokkos.cpp b/src/KOKKOS/mliap_model_linear_kokkos.cpp index b294dad294b..f4fef820237 100644 --- a/src/KOKKOS/mliap_model_linear_kokkos.cpp +++ b/src/KOKKOS/mliap_model_linear_kokkos.cpp @@ -19,7 +19,6 @@ #include "mliap_model_linear_kokkos.h" #include "mliap_data_kokkos.h" -#include "error.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/mliap_so3_kokkos.cpp b/src/KOKKOS/mliap_so3_kokkos.cpp index 1fb5ffb52ec..155bee9294c 100644 --- a/src/KOKKOS/mliap_so3_kokkos.cpp +++ b/src/KOKKOS/mliap_so3_kokkos.cpp @@ -21,7 +21,6 @@ #include "error.h" #include "math_const.h" #include "math_special_kokkos.h" -#include "memory.h" #include "memory_kokkos.h" #include "mliap_so3_math.h" @@ -32,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecialKokkos; -#define SMALL 1.0e-8 +static constexpr double SMALL = 1.0e-8; /* ---------------------------------------------------------------------- */ @@ -60,44 +59,6 @@ MLIAP_SO3Kokkos::MLIAP_SO3Kokkos(LAMMPS *lmp, double vrcut, int vlma template MLIAP_SO3Kokkos::~MLIAP_SO3Kokkos() { - memoryKK->destroy_kokkos(m_ellpl1); - memoryKK->destroy_kokkos(m_ellm1); - memoryKK->destroy_kokkos(m_pfac); - memoryKK->destroy_kokkos(m_Ylms); - memoryKK->destroy_kokkos(m_dfac0); - memoryKK->destroy_kokkos(m_dfac1); - memoryKK->destroy_kokkos(m_dfac2); - memoryKK->destroy_kokkos(m_dfac3); - memoryKK->destroy_kokkos(m_dfac4); - memoryKK->destroy_kokkos(m_dfac5); - memoryKK->destroy_kokkos(m_w); - memoryKK->destroy_kokkos(m_g_array); - - memoryKK->destroy_kokkos(m_rootpq); - memoryKK->destroy_kokkos(m_idxu_block); - memoryKK->destroy_kokkos(m_idxylm); - - memoryKK->destroy_kokkos(m_rip_array); - memoryKK->destroy_kokkos(m_rip_darray); - - memoryKK->destroy_kokkos(m_sbes_array); - memoryKK->destroy_kokkos(m_sbes_darray); - - memoryKK->destroy_kokkos(m_plist_r); - - memoryKK->destroy_kokkos(m_ulist_r); - memoryKK->destroy_kokkos(m_ulist_i); - - memoryKK->destroy_kokkos(m_dYlm_r); - memoryKK->destroy_kokkos(m_dYlm_i); - - memoryKK->destroy_kokkos(k_dplist_r); - - memoryKK->destroy_kokkos(m_dclist); - - memoryKK->destroy_kokkos(m_clisttot_r); - memoryKK->destroy_kokkos(m_clisttot_i); - t_numneighs = int_1d(); t_jelems = int_1d(); t_wjelem = float_1d(); @@ -121,9 +82,7 @@ void MLIAP_SO3Kokkos::init() int totali; totali = m_lmax + 1; - memoryKK->destroy_kokkos(m_ellpl1); memoryKK->create_kokkos(m_ellpl1, totali, "MLIAP_SO3Kokkos:m_ellpl1"); - memoryKK->destroy_kokkos(m_ellm1); memoryKK->create_kokkos(m_ellm1, totali, "MLIAP_SO3Kokkos:m_ellm1"); alloc_init = 2.0 * totali * sizeof(double); using range=Kokkos::RangePolicy; @@ -139,9 +98,7 @@ void MLIAP_SO3Kokkos::init() m_pfac_l1 = m_lmax + 2; m_pfac_l2 = (m_lmax + 2) * (m_lmax + 2) + 1; totali = m_pfac_l1 * m_pfac_l2; - memoryKK->destroy_kokkos(m_pfac); memoryKK->create_kokkos(m_pfac, totali, "MLIAP_SO3Kokkos:m_pfac"); - memoryKK->destroy_kokkos(m_Ylms); memoryKK->create_kokkos(m_Ylms, totali, "MLIAP_SO3Kokkos:m_Ylms"); alloc_init += 2 * totali * sizeof(double); @@ -161,17 +118,11 @@ void MLIAP_SO3Kokkos::init() m_dfac_l1 = m_lmax + 1; m_dfac_l2 = m_numYlms + 1; totali = m_dfac_l1 * m_dfac_l2; - memoryKK->destroy_kokkos(m_dfac0); memoryKK->create_kokkos(m_dfac0, totali, "MLIAP_SO3Kokkos:m_dfac0"); - memoryKK->destroy_kokkos(m_dfac1); memoryKK->create_kokkos(m_dfac1, totali, "MLIAP_SO3Kokkos:m_dfac1"); - memoryKK->destroy_kokkos(m_dfac2); memoryKK->create_kokkos(m_dfac2, totali, "MLIAP_SO3Kokkos:m_dfac2"); - memoryKK->destroy_kokkos(m_dfac3); memoryKK->create_kokkos(m_dfac3, totali, "MLIAP_SO3Kokkos:m_dfac3"); - memoryKK->destroy_kokkos(m_dfac4); memoryKK->create_kokkos(m_dfac4, totali, "MLIAP_SO3Kokkos:m_dfac4"); - memoryKK->destroy_kokkos(m_dfac5); memoryKK->create_kokkos(m_dfac5, totali, "MLIAP_SO3Kokkos:m_dfac5"); alloc_init += 6.0 * totali * sizeof(double); @@ -197,12 +148,10 @@ void MLIAP_SO3Kokkos::init() }); totali = m_nmax * m_nmax; - memoryKK->destroy_kokkos(m_w); memoryKK->create_kokkos(m_w, totali, "MLIAP_SO3Kokkos:w"); alloc_init += totali * sizeof(double); totali = m_nmax * m_Nmax; - memoryKK->destroy_kokkos(m_g_array); memoryKK->create_kokkos(m_g_array, totali, "MLIAP_SO3Kokkos:g_array"); alloc_init += totali * sizeof(double); @@ -218,7 +167,6 @@ void MLIAP_SO3Kokkos::init() twolmax = 2 * (m_lmax + 1); int m_ldim = twolmax + 1; totali = m_ldim * m_ldim; - memoryKK->destroy_kokkos(m_rootpq); memoryKK->create_kokkos(m_rootpq, totali, "MLIAP_SO3Kokkos:rootpq"); alloc_init += totali * sizeof(double); @@ -229,12 +177,10 @@ void MLIAP_SO3Kokkos::init() rootpq[p * ldim + q] = sqrt(static_cast(p) / q); }); - memoryKK->destroy_kokkos(m_idxu_block); memoryKK->create_kokkos(m_idxu_block, m_ldim, "MLIAP_SO3Kokkos:idxu_bloc"); alloc_init += totali * sizeof(double); totali = square(m_lmax + 2); - memoryKK->destroy_kokkos(m_idxylm); memoryKK->create_kokkos(m_idxylm, totali, "MLIAP_SO3Kokkos:idxylm"); alloc_init += totali * sizeof(double); @@ -278,7 +224,6 @@ void MLIAP_SO3Kokkos::init_arrays(int nlocal, int ncoefs) int totali = nlocal * ncoefs; if ( nlocal > (int)m_plist_r.extent(0)) { - memoryKK->destroy_kokkos(m_plist_r); memoryKK->create_kokkos(m_plist_r, nlocal, ncoefs, "MLIAP_SO3Kokkos:m_plist_r"); alloc_arrays = totali * sizeof(double); } @@ -286,26 +231,19 @@ void MLIAP_SO3Kokkos::init_arrays(int nlocal, int ncoefs) int num_of_temp = std::min(nlocal, m_chunk_size); if ((int)m_ulist_r.extent(0) < num_of_temp ) { totali = m_idxu_count; - memoryKK->destroy_kokkos(m_ulist_r); memoryKK->create_kokkos(m_ulist_r, num_of_temp, totali, "MLIAP_SO3Kokkos:m_ulist_r"); - memoryKK->destroy_kokkos(m_ulist_i); memoryKK->create_kokkos(m_ulist_i, num_of_temp, totali, "MLIAP_SO3Kokkos:m_ulist_i"); alloc_arrays += 2.0 * totali * num_of_temp * sizeof(double); totali = m_numYlms * 3; - memoryKK->destroy_kokkos(m_dYlm_r); memoryKK->create_kokkos(m_dYlm_r, num_of_temp, m_numYlms, 3, "MLIAP_SO3Kokkos:m_dYlm_r"); - memoryKK->destroy_kokkos(m_dYlm_i); memoryKK->create_kokkos(m_dYlm_i, num_of_temp, m_numYlms, 3, "MLIAP_SO3Kokkos:m_dYlm_i"); alloc_arrays += 2.0 * m_numYlms * 3 * num_of_temp * sizeof(double); - memoryKK->destroy_kokkos(m_dclist); memoryKK->create_kokkos(m_dclist, num_of_temp, m_nmax, m_numYlms, 3, "MLIAP_SO3Kokkos:k_dclist_r"); alloc_arrays += m_nmax * m_numYlms * 3 * num_of_temp* sizeof(double); - memoryKK->destroy_kokkos(m_clisttot_r); memoryKK->create_kokkos(m_clisttot_r, num_of_temp, m_nmax, m_numYlms, "MLIAP_SO3Kokkos:m_clisttot_r"); - memoryKK->destroy_kokkos(m_clisttot_i); memoryKK->create_kokkos(m_clisttot_i, num_of_temp, m_nmax, m_numYlms, "MLIAP_SO3Kokkos:m_clisttot_i"); alloc_arrays += 2.0 * m_nmax * m_numYlms * num_of_temp * sizeof(double); m_init_arrays = 1; @@ -850,21 +788,15 @@ void MLIAP_SO3Kokkos::spectrum_dxdr(int nlocal, DAT::tdual_int_1d nu bigint totali; if ( nlocal > (int)m_clisttot_r.extent(0)){ - memoryKK->destroy_kokkos(m_clisttot_r); memoryKK->create_kokkos(m_clisttot_r, nlocal, m_nmax, m_numYlms, "MLIAP_SO3Kokkos:m_clisttot_r"); - memoryKK->destroy_kokkos(m_clisttot_i); memoryKK->create_kokkos(m_clisttot_i, nlocal, m_nmax, m_numYlms, "MLIAP_SO3Kokkos:m_clisttot_i"); int num_of_temp = std::min(nlocal, m_chunk_size); int delta=num_of_temp-m_ulist_r.extent(0); if (delta > 0){ - memoryKK->destroy_kokkos(m_ulist_r); memoryKK->create_kokkos(m_ulist_r, num_of_temp, m_idxu_count, "MLIAP_SO3Kokkos:m_ulist_r"); - memoryKK->destroy_kokkos(m_ulist_i); memoryKK->create_kokkos(m_ulist_i, num_of_temp, m_idxu_count, "MLIAP_SO3Kokkos:m_ulist_i"); alloc_arrays += 2.0 * m_idxu_count * delta * sizeof(double); - memoryKK->destroy_kokkos(m_dYlm_r); memoryKK->create_kokkos(m_dYlm_r, num_of_temp, m_numYlms, 3, "MLIAP_SO3Kokkos:m_dYlm_r"); - memoryKK->destroy_kokkos(m_dYlm_i); memoryKK->create_kokkos(m_dYlm_i, num_of_temp, m_numYlms, 3, "MLIAP_SO3Kokkos:m_dYlm_i"); alloc_arrays += 2.0 * m_numYlms * 3 * delta * sizeof(double); } @@ -872,18 +804,13 @@ void MLIAP_SO3Kokkos::spectrum_dxdr(int nlocal, DAT::tdual_int_1d nu totali = totaln * m_Nmax * (m_lmax + 1); if ( totali > (int)m_sbes_array.extent(0)) { - memoryKK->destroy_kokkos(m_sbes_array); memoryKK->create_kokkos(m_sbes_array, totali, "MLIAP_SO3Kokkos:m_sbes_array"); - memoryKK->destroy_kokkos(m_sbes_darray); memoryKK->create_kokkos(m_sbes_darray, totali, "MLIAP_SO3Kokkos:m_sbes_darray"); totali = totaln * m_nmax * (m_lmax + 1); - memoryKK->destroy_kokkos(m_rip_array); memoryKK->create_kokkos(m_rip_array, totali, "MLIAP_SO3Kokkos:m_rip_array"); - memoryKK->destroy_kokkos(m_rip_darray); memoryKK->create_kokkos(m_rip_darray, totali, "MLIAP_SO3Kokkos:m_rip_darray"); - memoryKK->destroy_kokkos(k_dplist_r); memoryKK->create_kokkos(k_dplist_r, (int)totaln, ncoefs, 3, "MLIAP_SO3Kokkos:m_dplist_r"); } diff --git a/src/KOKKOS/mliap_unified_couple_kokkos.pyx b/src/KOKKOS/mliap_unified_couple_kokkos.pyx index 97d807ac339..385a770bb36 100644 --- a/src/KOKKOS/mliap_unified_couple_kokkos.pyx +++ b/src/KOKKOS/mliap_unified_couple_kokkos.pyx @@ -13,6 +13,7 @@ from libc.stdint cimport uintptr_t cimport cython from cpython.ref cimport PyObject from libc.stdlib cimport malloc, free +from libc.string cimport memcpy cdef extern from "lammps.h" namespace "LAMMPS_NS": @@ -451,15 +452,24 @@ cdef public object mliap_unified_connect_kokkos(char *fname, MLIAPDummyModel * m cdef int nelements = len(unified.element_types) cdef char **elements = malloc(nelements * sizeof(char*)) + cdef char * c_str + cdef char * s + cdef ssize_t slen if not elements: raise MemoryError("failed to allocate memory for element names") - cdef char *elem_name for i, elem in enumerate(unified.element_types): - elem_name_bytes = elem.encode('UTF-8') - elem_name = elem_name_bytes - elements[i] = &elem_name[0] + py_str = elem.encode('UTF-8') + s = py_str + slen = len(py_str) + c_str = malloc((slen+1)*sizeof(char)) + if not c_str: + raise MemoryError("failed to allocate memory for element names") + memcpy(c_str, s, slen) + c_str[slen] = 0 + elements[i] = c_str + unified_int.descriptor.set_elements(elements, nelements) unified_int.model.nelements = nelements diff --git a/src/KOKKOS/mliap_unified_kokkos.cpp b/src/KOKKOS/mliap_unified_kokkos.cpp index 4c38e4f1d61..e85f8362544 100644 --- a/src/KOKKOS/mliap_unified_kokkos.cpp +++ b/src/KOKKOS/mliap_unified_kokkos.cpp @@ -315,7 +315,6 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij) int i = pair_i[ii]; int j = j_atoms[ii]; // must not count any contribution where i is not a local atom - if (i < nlocal) { Kokkos::atomic_add(&f[i*3+0], fij[ii3+0]); Kokkos::atomic_add(&f[i*3+1], fij[ii3+1]); Kokkos::atomic_add(&f[i*3+2], fij[ii3+2]); @@ -352,7 +351,6 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij) Kokkos::atomic_add(&d_vatom(j,3), 0.5*v[3]); Kokkos::atomic_add(&d_vatom(j,4), 0.5*v[4]); Kokkos::atomic_add(&d_vatom(j,5), 0.5*v[5]); - } } } }); @@ -382,11 +380,9 @@ void LAMMPS_NS::update_atom_energy(MLIAPDataKokkosDevice *data, double *ei) Kokkos::parallel_reduce(nlocal, KOKKOS_LAMBDA(int i, double &local_sum){ double e = ei[i]; - // must not count any contribution where i is not a local atom - if (i < nlocal) { - d_eatoms[i] = e; - local_sum += e; - } + + d_eatoms[i] = e; + local_sum += e; },*data->energy); } diff --git a/src/KOKKOS/modify_kokkos.cpp b/src/KOKKOS/modify_kokkos.cpp index 8d8ffca6714..26ee88ff513 100644 --- a/src/KOKKOS/modify_kokkos.cpp +++ b/src/KOKKOS/modify_kokkos.cpp @@ -21,7 +21,7 @@ using namespace LAMMPS_NS; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/nbin_kokkos.cpp b/src/KOKKOS/nbin_kokkos.cpp index e65cf4ecb71..79ae9c6632f 100644 --- a/src/KOKKOS/nbin_kokkos.cpp +++ b/src/KOKKOS/nbin_kokkos.cpp @@ -22,9 +22,6 @@ using namespace LAMMPS_NS; -#define SMALL 1.0e-6 -#define CUT2BIN_RATIO 100 - /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 6e7390d3c68..63c2fe22c1b 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -18,13 +18,12 @@ ------------------------------------------------------------------------- */ #include "nbin_ssa_kokkos.h" -#include "neighbor.h" + #include "atom_kokkos.h" #include "domain.h" #include "update.h" #include "atom_masks.h" - -// #include "memory_kokkos.h" +#include "kokkos_type.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/neigh_bond_kokkos.cpp b/src/KOKKOS/neigh_bond_kokkos.cpp index b7495907797..9e1c8c273b8 100644 --- a/src/KOKKOS/neigh_bond_kokkos.cpp +++ b/src/KOKKOS/neigh_bond_kokkos.cpp @@ -27,6 +27,7 @@ #include "force.h" #include "memory_kokkos.h" #include "modify.h" +#include "neighbor.h" #include "output.h" #include "thermo.h" #include "update.h" @@ -35,8 +36,8 @@ #include using namespace LAMMPS_NS; -#define BONDDELTA 10000 -#define LB_FACTOR 1.5 +static constexpr int BONDDELTA = 10000; +static constexpr double LB_FACTOR = 1.5; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/neigh_bond_kokkos.h b/src/KOKKOS/neigh_bond_kokkos.h index 480726c6029..f60903f73e3 100644 --- a/src/KOKKOS/neigh_bond_kokkos.h +++ b/src/KOKKOS/neigh_bond_kokkos.h @@ -15,9 +15,7 @@ #ifndef LMP_NEIGH_BOND_KOKKOS_H #define LMP_NEIGH_BOND_KOKKOS_H -#include "neighbor.h" #include "kokkos_type.h" -#include "domain_kokkos.h" #include "pointers.h" #include diff --git a/src/KOKKOS/neighbor_kokkos.cpp b/src/KOKKOS/neighbor_kokkos.cpp index efb12475603..214b2e86d9a 100644 --- a/src/KOKKOS/neighbor_kokkos.cpp +++ b/src/KOKKOS/neighbor_kokkos.cpp @@ -18,16 +18,14 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "bond.h" -#include "comm.h" +#include "domain.h" #include "dihedral.h" #include "error.h" -#include "fix.h" #include "force.h" #include "improper.h" #include "kokkos.h" #include "memory_kokkos.h" #include "neigh_request.h" -#include "pair.h" #include "style_nbin.h" #include "style_npair.h" #include "style_nstencil.h" diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index fe5484a7711..8dd7a1c5ef1 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -303,7 +303,7 @@ class NeighborKokkosExecute const typename ArrayTypes::t_int_scalar _h_resize, const typename AT::t_int_scalar _new_maxneighs, const typename ArrayTypes::t_int_scalar _h_new_maxneighs): - neigh_list(_neigh_list), cutneighsq(_cutneighsq),delta(_delta),exclude(_exclude), + neigh_list(_neigh_list),delta(_delta),cutneighsq(_cutneighsq),exclude(_exclude), nex_type(_nex_type),ex1_type(_ex1_type),ex2_type(_ex2_type), ex_type(_ex_type),nex_group(_nex_group), ex1_bit(_ex1_bit),ex2_bit(_ex2_bit), @@ -319,10 +319,11 @@ class NeighborKokkosExecute mbinxlo(_mbinxlo),mbinylo(_mbinylo),mbinzlo(_mbinzlo), bininvx(_bininvx),bininvy(_bininvy),bininvz(_bininvz), nlocal(_nlocal),nall(_nall),neigh_transpose(_neigh_transpose), + resize(_resize),new_maxneighs(_new_maxneighs), + h_resize(_h_resize),h_new_maxneighs(_h_new_maxneighs), xperiodic(_xperiodic),yperiodic(_yperiodic),zperiodic(_zperiodic), xprd_half(_xprd_half),yprd_half(_yprd_half),zprd_half(_zprd_half), - skin(_skin),resize(_resize),h_resize(_h_resize), - new_maxneighs(_new_maxneighs),h_new_maxneighs(_h_new_maxneighs) { + skin(_skin) { if (molecular == 2) moltemplate = 1; else moltemplate = 0; diff --git a/src/KOKKOS/npair_skip_kokkos.cpp b/src/KOKKOS/npair_skip_kokkos.cpp index 15c0487010f..91a2cfa17eb 100644 --- a/src/KOKKOS/npair_skip_kokkos.cpp +++ b/src/KOKKOS/npair_skip_kokkos.cpp @@ -16,7 +16,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "atom_vec.h" #include "neigh_list_kokkos.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/pair_adp_kokkos.cpp b/src/KOKKOS/pair_adp_kokkos.cpp index 86ba3d267ee..1297d626519 100644 --- a/src/KOKKOS/pair_adp_kokkos.cpp +++ b/src/KOKKOS/pair_adp_kokkos.cpp @@ -472,12 +472,11 @@ void PairADPKokkos::interpolate(int n, double delta, double *f, t_ho /* ---------------------------------------------------------------------- */ template -int PairADPKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &buf, +int PairADPKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n*10; @@ -486,7 +485,7 @@ int PairADPKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d template KOKKOS_INLINE_FUNCTION void PairADPKokkos::operator()(TagPairADPPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); v_buf[10 * i] = d_fp(j); v_buf[10 * i + 1] = d_mu(j, 0); v_buf[10 * i + 2] = d_mu(j, 1); @@ -671,7 +670,7 @@ void PairADPKokkos::operator()(TagPairADPKernelA,decltype(dup_rho),decltype(ndup_rho)>::get(dup_rho,ndup_rho); auto a_rho = v_rho.template access>(); @@ -929,7 +928,7 @@ template KOKKOS_INLINE_FUNCTION void PairADPKokkos::operator()(TagPairADPKernelC, const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1087,7 +1086,7 @@ void PairADPKokkos::ev_tally_xyz(EV_FLOAT &ev, const int &i, const i const int EFLAG = eflag; const int VFLAG = vflag_either; - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_adp_kokkos.h b/src/KOKKOS/pair_adp_kokkos.h index 5714bdb6996..41328a567e0 100644 --- a/src/KOKKOS/pair_adp_kokkos.h +++ b/src/KOKKOS/pair_adp_kokkos.h @@ -108,7 +108,7 @@ class PairADPKokkos : public PairADP, public KokkosBase const F_FLOAT &epair, const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -185,9 +185,8 @@ class PairADPKokkos : public PairADP, public KokkosBase typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; int neighflag,newton_pair; diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp index a859b232be2..ebe49b59a04 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp @@ -25,14 +25,12 @@ #include "kokkos.h" #include "math_const.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "respa.h" #include "update.h" #include -#include using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp index 2f1d4a79b26..a13361d09f1 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -34,15 +35,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_buck_kokkos.cpp b/src/KOKKOS/pair_buck_kokkos.cpp index b549fcd3298..88b0445dc8c 100644 --- a/src/KOKKOS/pair_buck_kokkos.cpp +++ b/src/KOKKOS/pair_buck_kokkos.cpp @@ -24,14 +24,12 @@ #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "respa.h" #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/KOKKOS/pair_coul_cut_kokkos.cpp b/src/KOKKOS/pair_coul_cut_kokkos.cpp index 283a4b2b693..1796bd93fd4 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_coul_cut_kokkos.cpp @@ -20,7 +20,6 @@ #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" diff --git a/src/KOKKOS/pair_coul_debye_kokkos.cpp b/src/KOKKOS/pair_coul_debye_kokkos.cpp index 4c0e610e894..eb61716640f 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_coul_debye_kokkos.cpp @@ -24,14 +24,10 @@ #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" -#include "respa.h" -#include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/KOKKOS/pair_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_coul_dsf_kokkos.cpp index da4c7b1b4cd..9e0db27f36c 100644 --- a/src/KOKKOS/pair_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_dsf_kokkos.cpp @@ -20,7 +20,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "math_const.h" @@ -32,16 +32,9 @@ #include using namespace LAMMPS_NS; +using namespace EwaldConst; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/pair_coul_long_kokkos.cpp b/src/KOKKOS/pair_coul_long_kokkos.cpp index ed9b4c31c15..0452a08b8f2 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_coul_long_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -34,15 +35,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_coul_wolf_kokkos.cpp b/src/KOKKOS/pair_coul_wolf_kokkos.cpp index 2ccf7a5a150..af5067db161 100644 --- a/src/KOKKOS/pair_coul_wolf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_wolf_kokkos.cpp @@ -20,7 +20,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" -#include "error.h" #include "force.h" #include "kokkos.h" #include "math_const.h" diff --git a/src/KOKKOS/pair_dpd_ext_kokkos.cpp b/src/KOKKOS/pair_dpd_ext_kokkos.cpp index 7264877d70f..636235d1c81 100644 --- a/src/KOKKOS/pair_dpd_ext_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_ext_kokkos.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; template @@ -228,7 +228,7 @@ template KOKKOS_INLINE_FUNCTION void PairDPDExtKokkos::operator() (TagDPDExtKokkos, const int &ii, EV_FLOAT &ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -354,7 +354,7 @@ void PairDPDExtKokkos::ev_tally_xyz(EV_FLOAT &ev, const int &i, cons const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp b/src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp index dcf88d1763a..213b344fbba 100644 --- a/src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; template @@ -232,7 +232,7 @@ template KOKKOS_INLINE_FUNCTION void PairDPDExtTstatKokkos::operator() (TagDPDExtTstatKokkos, const int &ii, EV_FLOAT &ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -346,7 +346,7 @@ void PairDPDExtTstatKokkos::v_tally_xyz(EV_FLOAT &ev, const int &i, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index a0ee204aeb3..dd1591bf4b1 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_dpd_kokkos.cpp b/src/KOKKOS/pair_dpd_kokkos.cpp index 3db8a06f6d4..f888b5f6ce1 100644 --- a/src/KOKKOS/pair_dpd_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_kokkos.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; template @@ -228,7 +228,7 @@ template KOKKOS_INLINE_FUNCTION void PairDPDKokkos::operator() (TagDPDKokkos, const int &ii, EV_FLOAT &ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -319,7 +319,7 @@ void PairDPDKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int & const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_dpd_tstat_kokkos.cpp b/src/KOKKOS/pair_dpd_tstat_kokkos.cpp index 9058c236282..63dbda3b59e 100644 --- a/src/KOKKOS/pair_dpd_tstat_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_tstat_kokkos.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; template @@ -231,7 +231,7 @@ template KOKKOS_INLINE_FUNCTION void PairDPDTstatKokkos::operator() (TagDPDTstatKokkos, const int &ii, EV_FLOAT &ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -312,7 +312,7 @@ void PairDPDTstatKokkos::v_tally(EV_FLOAT &ev, const int &i, const i const F_FLOAT &dely, const F_FLOAT &delz) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index 0dfe56c3650..b02faced1e6 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -449,12 +449,11 @@ void PairEAMAlloyKokkos::interpolate(int n, double delta, double *f, /* ---------------------------------------------------------------------- */ template -int PairEAMAlloyKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &buf, +int PairEAMAlloyKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; @@ -463,7 +462,7 @@ int PairEAMAlloyKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_i template KOKKOS_INLINE_FUNCTION void PairEAMAlloyKokkos::operator()(TagPairEAMAlloyPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); v_buf[i] = d_fp[j]; } @@ -566,7 +565,7 @@ void PairEAMAlloyKokkos::operator()(TagPairEAMAlloyKernelA,decltype(dup_rho),decltype(ndup_rho)>::get(dup_rho,ndup_rho); auto a_rho = v_rho.template access>(); @@ -733,7 +732,7 @@ template KOKKOS_INLINE_FUNCTION void PairEAMAlloyKokkos::operator()(TagPairEAMAlloyKernelC, const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -943,7 +942,7 @@ void PairEAMAlloyKokkos::operator()(TagPairEAMAlloyKernelC,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1076,7 +1075,7 @@ void PairEAMAlloyKokkos::ev_tally(EV_FLOAT &ev, const int &i, const const int EFLAG = eflag; const int VFLAG = vflag_either; - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.h b/src/KOKKOS/pair_eam_alloy_kokkos.h index 2eb40189acb..572dc1aca8a 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.h +++ b/src/KOKKOS/pair_eam_alloy_kokkos.h @@ -122,7 +122,7 @@ class PairEAMAlloyKokkos : public PairEAM, public KokkosBase { const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -190,9 +190,8 @@ class PairEAMAlloyKokkos : public PairEAM, public KokkosBase { typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; int neighflag,newton_pair; diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index 58ff615c04d..4da146e68e2 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -449,12 +449,11 @@ void PairEAMFSKokkos::interpolate(int n, double delta, double *f, t_ /* ---------------------------------------------------------------------- */ template -int PairEAMFSKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &buf, +int PairEAMFSKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; @@ -463,7 +462,7 @@ int PairEAMFSKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_ template KOKKOS_INLINE_FUNCTION void PairEAMFSKokkos::operator()(TagPairEAMFSPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); v_buf[i] = d_fp[j]; } @@ -566,7 +565,7 @@ void PairEAMFSKokkos::operator()(TagPairEAMFSKernelA,decltype(dup_rho),decltype(ndup_rho)>::get(dup_rho,ndup_rho); auto a_rho = v_rho.template access>(); @@ -733,7 +732,7 @@ template KOKKOS_INLINE_FUNCTION void PairEAMFSKokkos::operator()(TagPairEAMFSKernelC, const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -943,7 +942,7 @@ void PairEAMFSKokkos::operator()(TagPairEAMFSKernelC,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1076,7 +1075,7 @@ void PairEAMFSKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int const int EFLAG = eflag; const int VFLAG = vflag_either; - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_eam_fs_kokkos.h b/src/KOKKOS/pair_eam_fs_kokkos.h index bd03ab00159..8e4ee7851ef 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.h +++ b/src/KOKKOS/pair_eam_fs_kokkos.h @@ -122,7 +122,7 @@ class PairEAMFSKokkos : public PairEAM, public KokkosBase { const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -190,9 +190,8 @@ class PairEAMFSKokkos : public PairEAM, public KokkosBase { typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; int neighflag,newton_pair; diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index 864f7360660..54ffa84f2d3 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -444,12 +444,11 @@ void PairEAMKokkos::interpolate(int n, double delta, double *f, t_ho /* ---------------------------------------------------------------------- */ template -int PairEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, - int iswap_in, DAT::tdual_xfloat_1d &buf, +int PairEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, + DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; @@ -458,7 +457,7 @@ int PairEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d template KOKKOS_INLINE_FUNCTION void PairEAMKokkos::operator()(TagPairEAMPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); v_buf[i] = d_fp[j]; } @@ -561,7 +560,7 @@ void PairEAMKokkos::operator()(TagPairEAMKernelA,decltype(dup_rho),decltype(ndup_rho)>::get(dup_rho,ndup_rho); auto a_rho = v_rho.template access>(); @@ -728,7 +727,7 @@ template KOKKOS_INLINE_FUNCTION void PairEAMKokkos::operator()(TagPairEAMKernelC, const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -938,7 +937,7 @@ void PairEAMKokkos::operator()(TagPairEAMKernelC,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1071,7 +1070,7 @@ void PairEAMKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int & const int EFLAG = eflag; const int VFLAG = vflag_either; - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index 9d066d40a0e..950db43fb26 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -120,7 +120,7 @@ class PairEAMKokkos : public PairEAM, public KokkosBase { const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -186,9 +186,8 @@ class PairEAMKokkos : public PairEAM, public KokkosBase { typename AT::t_int_1d d_ilist; typename AT::t_int_1d d_numneigh; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; int neighflag,newton_pair; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index b4576db89a3..dad74136697 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -42,8 +42,8 @@ using namespace LAMMPS_NS; using namespace MathSpecialKokkos; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int MAXLINE = 1024; +static constexpr int DELTA = 4; #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) @@ -1702,7 +1702,8 @@ void PairExp6rxKokkos::read_file(char *file) // one set of params can span multiple lines int n,nwords,ispecies; - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index eabce17a1cf..84d43bcec84 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -14,14 +14,10 @@ ------------------------------------------------------------------------- */ #include "pair_hybrid_kokkos.h" -#include + #include "atom_kokkos.h" #include "force.h" -#include "pair.h" -#include "neighbor.h" -#include "neigh_request.h" #include "update.h" -#include "memory_kokkos.h" #include "respa.h" #include "atom_masks.h" #include "kokkos.h" diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index 95212682849..c4bd6030410 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -627,7 +627,7 @@ struct PairComputeFunctor { const int itype = c.type(i); const F_FLOAT qtmp = c.q(i); - if (ZEROFLAG) { + if (NEIGHFLAG == FULL && ZEROFLAG) { Kokkos::single(Kokkos::PerThread(team), [&] (){ f(i,0) = 0.0; f(i,1) = 0.0; @@ -674,7 +674,7 @@ struct PairComputeFunctor { const int J_CONTRIB = ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal); const E_FLOAT factor = J_CONTRIB?1.0:0.5; - if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal) { + if (J_CONTRIB) { a_f(j,0) -= fx; a_f(j,1) -= fy; a_f(j,2) -= fz; @@ -746,8 +746,10 @@ struct PairComputeFunctor { a_f(i,1) += fev.f[1]; a_f(i,2) += fev.f[2]; - if (c.eflag_global) + if (c.eflag_global) { ev.evdwl += fev.evdwl; + ev.ecoul += fev.ecoul; + } if (c.vflag_global) { ev.v[0] += fev.v[0]; @@ -761,7 +763,7 @@ struct PairComputeFunctor { if (NEIGHFLAG == FULL) { if (c.eflag_atom) - a_eatom(i) += fev.evdwl; + a_eatom(i) += fev.evdwl + fev.ecoul; if (c.vflag_atom) { a_vatom(i,0) += fev.v[0]; @@ -948,9 +950,11 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P static int vectorsize = 0; static int atoms_per_team = 0; - static int lastcall = -1; #if defined(LMP_KOKKOS_GPU) + static int teamsize_max_for = 0; + static int teamsize_max_reduce = 0; + static int lastcall = -1; if (!vectorsize || lastcall < fpair->lmp->neighbor->lastcall) { lastcall = fpair->lmp->update->ntimestep; vectorsize = GetMaxNeighs(list); @@ -964,7 +968,6 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P vectorsize = MIN(vectorsize,max_vectorsize); - int teamsize_max_for,teamsize_max_reduce; if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { PairComputeFunctor ff(fpair,list); GetMaxTeamSize(ff, inum, teamsize_max_for, teamsize_max_reduce); @@ -972,12 +975,12 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P PairComputeFunctor ff(fpair,list); GetMaxTeamSize(ff, inum, teamsize_max_for, teamsize_max_reduce); } - - int teamsize_max = teamsize_max_for; - if (fpair->eflag || fpair->vflag) - teamsize_max = teamsize_max_reduce; - atoms_per_team = teamsize_max/vectorsize; } + + int teamsize_max = teamsize_max_for; + if (fpair->eflag || fpair->vflag) + teamsize_max = teamsize_max_reduce; + atoms_per_team = teamsize_max/vectorsize; #else vectorsize = 1; atoms_per_team = 1; @@ -1018,7 +1021,7 @@ template EV_FLOAT pair_compute (PairStyle* fpair, NeighListKokkos* list) { EV_FLOAT ev; if (fpair->neighflag == FULL) { - if (utils::strmatch(fpair->lmp->force->pair_style,"^hybrid/overlay")) { + if (utils::strmatch(fpair->lmp->force->pair_style,"^hybrid")) { fpair->fuse_force_clear_flag = 0; ev = pair_compute_neighlist (fpair,list); } else { diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp index f8fb7cdda4c..a2c89433409 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -33,15 +34,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index 526e15c222e..24551e27ce9 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -34,15 +35,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 4caab0ef551..90ab8adf265 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -34,15 +35,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ @@ -214,9 +207,7 @@ compute_evdwl(const F_FLOAT& rsq, const int& /*i*/, const int& /*j*/, (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) / denom_lj; englj *= switch1; } - return englj; - } /* ---------------------------------------------------------------------- @@ -488,4 +479,3 @@ template class PairLJCharmmCoulLongKokkos; template class PairLJCharmmCoulLongKokkos; #endif } - diff --git a/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.cpp new file mode 100644 index 00000000000..c07a089a357 --- /dev/null +++ b/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.cpp @@ -0,0 +1,490 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: Mitch Murphy (alphataubio) + + Based on serial kspace lj-fsw sections (force-switched) provided by + Robert Meissner and Lucio Colombi Ciacchi of Bremen University, Germany, + with additional assistance from Robert A. Latour, Clemson University + + ------------------------------------------------------------------------- */ + +#include "pair_lj_charmmfsw_coul_long_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "error.h" +#include "ewald_const.h" +#include "force.h" +#include "kokkos.h" +#include "memory_kokkos.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "respa.h" +#include "update.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace EwaldConst; + +/* ---------------------------------------------------------------------- */ + +template +PairLJCharmmfswCoulLongKokkos::PairLJCharmmfswCoulLongKokkos(LAMMPS *lmp):PairLJCharmmfswCoulLong(lmp) +{ + respa_enable = 0; + + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | Q_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +PairLJCharmmfswCoulLongKokkos::~PairLJCharmmfswCoulLongKokkos() +{ + if (copymode) return; + + if (allocated) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->destroy_kokkos(k_cutsq,cutsq); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCharmmfswCoulLongKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + + ev_init(eflag,vflag,0); + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memoryKK->destroy_kokkos(k_eatom,eatom); + memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.view(); + } + if (vflag_atom) { + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom"); + d_vatom = k_vatom.view(); + } + + atomKK->sync(execution_space,datamask_read); + k_cutsq.template sync(); + k_params.template sync(); + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); + + x = atomKK->k_x.view(); + c_x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + q = atomKK->k_q.view(); + type = atomKK->k_type.view(); + nlocal = atom->nlocal; + nall = atom->nlocal + atom->nghost; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + special_coul[0] = force->special_coul[0]; + special_coul[1] = force->special_coul[1]; + special_coul[2] = force->special_coul[2]; + special_coul[3] = force->special_coul[3]; + qqrd2e = force->qqrd2e; + newton_pair = force->newton_pair; + + // loop over neighbors of my atoms + + copymode = 1; + + EV_FLOAT ev; + if (ncoultablebits) + ev = pair_compute,CoulLongTable<1> > + (this,(NeighListKokkos*)list); + else + ev = pair_compute,CoulLongTable<0> > + (this,(NeighListKokkos*)list); + + + if (eflag) { + eng_vdwl += ev.evdwl; + eng_coul += ev.ecoul; + } + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + copymode = 0; +} + +/* ---------------------------------------------------------------------- + compute LJ CHARMM pair force between atoms i and j + ---------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairLJCharmmfswCoulLongKokkos:: +compute_fpair(const F_FLOAT& rsq, const int& /*i*/, const int& /*j*/, + const int& itype, const int& jtype) const { + const F_FLOAT r2inv = 1.0/rsq; + const F_FLOAT r6inv = r2inv*r2inv*r2inv; + F_FLOAT forcelj, switch1; + + forcelj = r6inv * + ((STACKPARAMS?m_params[itype][jtype].lj1:params(itype,jtype).lj1)*r6inv - + (STACKPARAMS?m_params[itype][jtype].lj2:params(itype,jtype).lj2)); + + if (rsq > cut_lj_innersq) { + switch1 = (cut_ljsq-rsq) * (cut_ljsq-rsq) * + (cut_ljsq + 2.0*rsq - 3.0*cut_lj_innersq) / denom_lj; + forcelj = forcelj*switch1; + } + + return forcelj*r2inv; +} + +/* ---------------------------------------------------------------------- + compute LJ CHARMM pair potential energy between atoms i and j + ---------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairLJCharmmfswCoulLongKokkos:: +compute_evdwl(const F_FLOAT& rsq, const int& /*i*/, const int& /*j*/, + const int& itype, const int& jtype) const { + const F_FLOAT r2inv = 1.0/rsq; + const F_FLOAT r6inv = r2inv*r2inv*r2inv; + const F_FLOAT r = sqrt(rsq); + const F_FLOAT rinv = 1.0/r; + const F_FLOAT r3inv = rinv*rinv*rinv; + F_FLOAT englj, englj12, englj6; + + if (rsq > cut_lj_innersq) { + englj12 = (STACKPARAMS?m_params[itype][jtype].lj3:params(itype,jtype).lj3)*cut_lj6* + denom_lj12 * (r6inv - cut_lj6inv)*(r6inv - cut_lj6inv); + englj6 = -(STACKPARAMS?m_params[itype][jtype].lj4:params(itype,jtype).lj4)* + cut_lj3*denom_lj6 * (r3inv - cut_lj3inv)*(r3inv - cut_lj3inv); + englj = englj12 + englj6; + } else { + englj12 = r6inv*(STACKPARAMS?m_params[itype][jtype].lj3:params(itype,jtype).lj3)*r6inv - + (STACKPARAMS?m_params[itype][jtype].lj3:params(itype,jtype).lj3)*cut_lj_inner6inv*cut_lj6inv; + englj6 = -(STACKPARAMS?m_params[itype][jtype].lj4:params(itype,jtype).lj4)*r6inv + + (STACKPARAMS?m_params[itype][jtype].lj4:params(itype,jtype).lj4)* + cut_lj_inner3inv*cut_lj3inv; + englj = englj12 + englj6; + } + return englj; +} + +/* ---------------------------------------------------------------------- + compute coulomb pair force between atoms i and j + ---------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairLJCharmmfswCoulLongKokkos:: +compute_fcoul(const F_FLOAT& rsq, const int& /*i*/, const int&j, + const int& /*itype*/, const int& /*jtype*/, + const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const { + if (Specialisation::DoTable && rsq > tabinnersq) { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + const int itable = (rsq_lookup.i & ncoulmask) >> ncoulshiftbits; + const F_FLOAT fraction = (rsq_lookup.f - d_rtable[itable]) * d_drtable[itable]; + const F_FLOAT table = d_ftable[itable] + fraction*d_dftable[itable]; + F_FLOAT forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + const F_FLOAT table = d_ctable[itable] + fraction*d_dctable[itable]; + const F_FLOAT prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + return forcecoul/rsq; + } else { + const F_FLOAT r = sqrt(rsq); + const F_FLOAT grij = g_ewald * r; + const F_FLOAT expm2 = exp(-grij*grij); + const F_FLOAT t = 1.0 / (1.0 + EWALD_P*grij); + const F_FLOAT rinv = 1.0/r; + const F_FLOAT erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + const F_FLOAT prefactor = qqrd2e * qtmp*q[j]*rinv; + F_FLOAT forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + + return forcecoul*rinv*rinv; + } +} + +/* ---------------------------------------------------------------------- + compute coulomb pair potential energy between atoms i and j + ---------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairLJCharmmfswCoulLongKokkos:: +compute_ecoul(const F_FLOAT& rsq, const int& /*i*/, const int&j, + const int& /*itype*/, const int& /*jtype*/, const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const { + if (Specialisation::DoTable && rsq > tabinnersq) { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + const int itable = (rsq_lookup.i & ncoulmask) >> ncoulshiftbits; + const F_FLOAT fraction = (rsq_lookup.f - d_rtable[itable]) * d_drtable[itable]; + const F_FLOAT table = d_etable[itable] + fraction*d_detable[itable]; + F_FLOAT ecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + const F_FLOAT table = d_ctable[itable] + fraction*d_dctable[itable]; + const F_FLOAT prefactor = qtmp*q[j] * table; + ecoul -= (1.0-factor_coul)*prefactor; + } + return ecoul; + } else { + const F_FLOAT r = sqrt(rsq); + const F_FLOAT grij = g_ewald * r; + const F_FLOAT expm2 = exp(-grij*grij); + const F_FLOAT t = 1.0 / (1.0 + EWALD_P*grij); + const F_FLOAT erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + const F_FLOAT prefactor = qqrd2e * qtmp*q[j]/r; + F_FLOAT ecoul = prefactor * erfc; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + return ecoul; + } +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairLJCharmmfswCoulLongKokkos::allocate() +{ + PairLJCharmmfswCoulLong::allocate(); + + int n = atom->ntypes; + + memory->destroy(cutsq); + memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + + d_cut_ljsq = typename AT::t_ffloat_2d("pair:cut_ljsq",n+1,n+1); + + d_cut_coulsq = typename AT::t_ffloat_2d("pair:cut_coulsq",n+1,n+1); + + k_params = Kokkos::DualView("PairLJCharmmfswCoulLong::params",n+1,n+1); + params = k_params.template view(); +} + +template +void PairLJCharmmfswCoulLongKokkos::init_tables(double cut_coul, double *cut_respa) +{ + Pair::init_tables(cut_coul,cut_respa); + + typedef typename ArrayTypes::t_ffloat_1d table_type; + typedef typename ArrayTypes::t_ffloat_1d host_table_type; + + int ntable = 1; + for (int i = 0; i < ncoultablebits; i++) ntable *= 2; + + + // Copy rtable and drtable + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + for (int i = 0; i < ntable; i++) { + h_table(i) = rtable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_rtable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + for (int i = 0; i < ntable; i++) { + h_table(i) = drtable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_drtable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + // Copy ftable and dftable + for (int i = 0; i < ntable; i++) { + h_table(i) = ftable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_ftable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + for (int i = 0; i < ntable; i++) { + h_table(i) = dftable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_dftable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + // Copy ctable and dctable + for (int i = 0; i < ntable; i++) { + h_table(i) = ctable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_ctable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + for (int i = 0; i < ntable; i++) { + h_table(i) = dctable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_dctable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + // Copy etable and detable + for (int i = 0; i < ntable; i++) { + h_table(i) = etable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_etable = d_table; + } + + { + host_table_type h_table("HostTable",ntable); + table_type d_table("DeviceTable",ntable); + + for (int i = 0; i < ntable; i++) { + h_table(i) = detable[i]; + } + Kokkos::deep_copy(d_table,h_table); + d_detable = d_table; + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +template +void PairLJCharmmfswCoulLongKokkos::init_style() +{ + PairLJCharmmfswCoulLong::init_style(); + + Kokkos::deep_copy(d_cut_ljsq,cut_ljsq); + Kokkos::deep_copy(d_cut_coulsq,cut_coulsq); + + // error if rRESPA with inner levels + + if (update->whichflag == 1 && utils::strmatch(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) + error->all(FLERR,"Cannot use Kokkos pair style with rRESPA inner/middle"); + } + + // adjust neighbor list request for KOKKOS + + neighflag = lmp->kokkos->neighflag; + auto request = neighbor->find_request(this); + request->set_kokkos_host(std::is_same_v && + !std::is_same_v); + request->set_kokkos_device(std::is_same_v); + if (neighflag == FULL) request->enable_full(); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +template +double PairLJCharmmfswCoulLongKokkos::init_one(int i, int j) +{ + double cutone = PairLJCharmmfswCoulLong::init_one(i,j); + + k_params.h_view(i,j).lj1 = lj1[i][j]; + k_params.h_view(i,j).lj2 = lj2[i][j]; + k_params.h_view(i,j).lj3 = lj3[i][j]; + k_params.h_view(i,j).lj4 = lj4[i][j]; + //k_params.h_view(i,j).offset = offset[i][j]; + k_params.h_view(i,j).cut_ljsq = cut_ljsq; + k_params.h_view(i,j).cut_coulsq = cut_coulsq; + + k_params.h_view(j,i) = k_params.h_view(i,j); + if (i(); + k_params.template modify(); + + return cutone; +} + +namespace LAMMPS_NS { +template class PairLJCharmmfswCoulLongKokkos; +#ifdef LMP_KOKKOS_GPU +template class PairLJCharmmfswCoulLongKokkos; +#endif +} diff --git a/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.h b/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.h new file mode 100644 index 00000000000..7533f40dbc8 --- /dev/null +++ b/src/KOKKOS/pair_lj_charmmfsw_coul_long_kokkos.h @@ -0,0 +1,145 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 PAIR_CLASS +// clang-format off +PairStyle(lj/charmmfsw/coul/long/kk,PairLJCharmmfswCoulLongKokkos); +PairStyle(lj/charmmfsw/coul/long/kk/device,PairLJCharmmfswCoulLongKokkos); +PairStyle(lj/charmmfsw/coul/long/kk/host,PairLJCharmmfswCoulLongKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_PAIR_LJ_CHARMMFSW_COUL_LONG_KOKKOS_H +#define LMP_PAIR_LJ_CHARMMFSW_COUL_LONG_KOKKOS_H + +#include "pair_kokkos.h" +#include "pair_lj_charmmfsw_coul_long.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +template +class PairLJCharmmfswCoulLongKokkos : public PairLJCharmmfswCoulLong { + public: + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF}; + enum {COUL_FLAG=1}; + typedef DeviceType device_type; + typedef ArrayTypes AT; + PairLJCharmmfswCoulLongKokkos(class LAMMPS *); + ~PairLJCharmmfswCoulLongKokkos() override; + + void compute(int, int) override; + + void init_tables(double cut_coul, double *cut_respa) override; + void init_style() override; + double init_one(int, int) override; + + protected: + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_fcoul(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, + const int& jtype, const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_ecoul(const F_FLOAT& rsq, const int& i, const int&j, + const int& itype, const int& jtype, const F_FLOAT& factor_coul, const F_FLOAT& qtmp) const; + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + // hardwired to space for 12 atom types + params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + F_FLOAT m_cut_ljsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + F_FLOAT m_cut_coulsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + typename AT::t_x_array_randomread x; + typename AT::t_x_array c_x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_float_1d_randomread q; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; + + int newton_pair; + + typename AT::tdual_ffloat_2d k_cutsq; + typename AT::t_ffloat_2d d_cutsq; + typename AT::t_ffloat_2d d_cut_ljsq; + typename AT::t_ffloat_2d d_cut_coulsq; + + typename AT::t_ffloat_1d_randomread + d_rtable, d_drtable, d_ftable, d_dftable, + d_ctable, d_dctable, d_etable, d_detable; + + int neighflag; + int nlocal,nall,eflag,vflag; + + double special_coul[4]; + double special_lj[4]; + double qqrd2e; + + void allocate() override; + + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute>(PairLJCharmmfswCoulLongKokkos*, + NeighListKokkos*); + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend struct PairComputeFunctor>; + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist>(PairLJCharmmfswCoulLongKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute>(PairLJCharmmfswCoulLongKokkos*, + NeighListKokkos*); + friend void pair_virial_fdotr_compute(PairLJCharmmfswCoulLongKokkos*); + +}; + +} + +#endif +#endif + diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index e861d1cec21..b5d55a023a6 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -17,6 +17,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" @@ -30,15 +31,7 @@ #include using namespace LAMMPS_NS; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index 7c61c684e43..626f05106c3 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -20,14 +20,12 @@ #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "respa.h" #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index bd430db764d..0e415819c66 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "math_const.h" @@ -35,15 +36,8 @@ #include using namespace LAMMPS_NS; -using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; +using MathConst::MY_PIS; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index ce2bf480d83..5124d40505c 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -17,6 +17,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "math_const.h" @@ -32,15 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index 9a1ced9da3a..566d74088cb 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -20,14 +20,11 @@ #include "force.h" #include "kokkos.h" #include "memory_kokkos.h" -#include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "respa.h" #include "update.h" -#include - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_lj_expand_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_expand_coul_long_kokkos.cpp index acb1cf253ee..a5c6fcc552f 100644 --- a/src/KOKKOS/pair_lj_expand_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_coul_long_kokkos.cpp @@ -21,6 +21,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "math_const.h" @@ -36,15 +37,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_meam_kokkos.cpp b/src/KOKKOS/pair_meam_kokkos.cpp index 4361a387ba0..9082c410e05 100644 --- a/src/KOKKOS/pair_meam_kokkos.cpp +++ b/src/KOKKOS/pair_meam_kokkos.cpp @@ -338,11 +338,10 @@ void PairMEAMKokkos::init_style() /* ---------------------------------------------------------------------- */ template -int PairMEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf, +int PairMEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n*comm_forward; @@ -353,7 +352,7 @@ int PairMEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2 template KOKKOS_INLINE_FUNCTION void PairMEAMKokkos::operator()(TagPairMEAMPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); int m = i*comm_forward; v_buf[m++] = d_rho0[j]; v_buf[m++] = d_rho1[j]; @@ -782,10 +781,9 @@ int PairMEAMKokkos::pack_reverse_comm(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ template -void PairMEAMKokkos::unpack_reverse_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf) +void PairMEAMKokkos::unpack_reverse_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_1d &buf) { d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } @@ -795,7 +793,7 @@ void PairMEAMKokkos::unpack_reverse_comm_kokkos(int n, DAT::tdual_in template KOKKOS_INLINE_FUNCTION void PairMEAMKokkos::operator()(TagPairMEAMUnpackReverseComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); //int m = i*30; int m = i*comm_reverse; diff --git a/src/KOKKOS/pair_meam_kokkos.h b/src/KOKKOS/pair_meam_kokkos.h index 0d0d7667f35..66b5700a727 100644 --- a/src/KOKKOS/pair_meam_kokkos.h +++ b/src/KOKKOS/pair_meam_kokkos.h @@ -76,15 +76,15 @@ class PairMEAMKokkos : public PairMEAM, public KokkosBase { KOKKOS_INLINE_FUNCTION void operator()(TagPairMEAMOffsets, const int, int&) const; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; int pack_forward_comm(int, int *, double *, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; void unpack_forward_comm(int, int, double *) override; int pack_reverse_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_reverse_comm(int, int, double *) override; - void unpack_reverse_comm_kokkos(int, DAT::tdual_int_2d, - int, DAT::tdual_xfloat_1d&) override; + void unpack_reverse_comm_kokkos(int, DAT::tdual_int_1d, + DAT::tdual_xfloat_1d&) override; void unpack_reverse_comm(int, int *, double *) override; protected: @@ -108,10 +108,10 @@ class PairMEAMKokkos : public PairMEAM, public KokkosBase { typename AT::t_neighbors_2d d_neighbors_half; typename AT::t_int_1d d_numneigh_full; typename AT::t_neighbors_2d d_neighbors_full; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; - int iswap,first; + int first; int neighflag,nlocal,nall,eflag,vflag; typename ArrayTypes::t_ffloat_1d d_rho, d_rho0, d_rho1, d_rho2, d_rho3, d_frhop; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index f487b0c84ef..2a20c9e0133 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -43,8 +43,6 @@ using MathConst::MY_PI; enum{NONE,RLINEAR,RSQ}; -#define MAXLINE 1024 - #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else @@ -648,12 +646,11 @@ void PairMultiLucyRXKokkos::getMixingWeights(int id, double &mixWtSi /* ---------------------------------------------------------------------- */ template -int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) +int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_1d k_sendlist, DAT::tdual_xfloat_1d &buf, int /*pbc_flag*/, int * /*pbc*/) { atomKK->sync(execution_space,DPDRHO_MASK); d_sendlist = k_sendlist.view(); - iswap = iswap_in; v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; @@ -662,7 +659,7 @@ int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdua template KOKKOS_INLINE_FUNCTION void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXPackForwardComm, const int &i) const { - int j = d_sendlist(iswap, i); + int j = d_sendlist(i); v_buf[i] = rho[j]; } diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index c335ed526f4..753012e0c7f 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -61,7 +61,7 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX, public KokkosBase { void compute_style(int, int); void init_style() override; - int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int pack_forward_comm_kokkos(int, DAT::tdual_int_1d, DAT::tdual_xfloat_1d&, int, int *) override; void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&) override; int pack_forward_comm(int, int *, double *, int, int *) override; @@ -181,9 +181,8 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX, public KokkosBase { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; - int iswap; int first; - typename AT::t_int_2d d_sendlist; + typename AT::t_int_1d d_sendlist; typename AT::t_xfloat_1d_um v_buf; friend void pair_virial_fdotr_compute(PairMultiLucyRXKokkos*); diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index 18ecaf6e69c..e7d376c8707 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -900,7 +900,6 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig [&](const int offset, minloc_value_type &min_d_dist) { int j = d_nearest(ii,offset); j &= NEIGHMASK; - const int jtype = type(j); auto r = d_rnorms(ii,offset); const int mu_j = d_map(type(j)); const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); @@ -1653,7 +1652,7 @@ template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeForce, const int& ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial const auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); const auto a_f = v_f.template access>(); @@ -1722,7 +1721,7 @@ void PairPACEExtrapolationKokkos::v_tally_xyz(EV_FLOAT &ev, const in const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index aaed01510a0..4407d1231ef 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -845,7 +845,6 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen [&](const int offset, minloc_value_type &min_d_dist) { int j = d_nearest(ii,offset); j &= NEIGHMASK; - const int jtype = type(j); auto r = d_rnorms(ii,offset); const int mu_j = d_map(type(j)); const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); @@ -1562,7 +1561,7 @@ template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEComputeForce, const int& ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial const auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); const auto a_f = v_f.template access>(); @@ -1631,7 +1630,7 @@ void PairPACEKokkos::v_tally_xyz(EV_FLOAT &ev, const int &i, const i const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 11a40970c22..7dd86e07a9f 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1149,7 +1149,7 @@ template KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxComputeLJCoulomb, const int &ii, EV_FLOAT_REAX& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1345,7 +1345,7 @@ template KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxComputeTabulatedLJCoulomb, const int &ii, EV_FLOAT_REAX& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1598,7 +1598,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0}; F_FLOAT total_bo_i = 0.0; - int j_index,i_index; d_bo_first[i] = i*maxbo; const int bo_first_i = d_bo_first[i]; @@ -1675,7 +1674,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< int ii_index = -1; int jj_index = -1; - if (build_bo_list(bo_first_i, i, j, i_index, j_index, ii_index, jj_index)) { + if (build_bo_list(bo_first_i, i, j, ii_index, jj_index)) { // from BondOrder1 @@ -1743,7 +1742,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP F_FLOAT C12, C34, C56, BO_s, BO_pi, BO_pi2, BO, delij[3]; - int j_index,i_index; d_bo_first[i] = i*maxbo; const int bo_first_i = d_bo_first[i]; @@ -1821,7 +1819,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP int ii_index = -1; int jj_index = -1; - build_bo_list(bo_first_i, i, j, i_index, j_index, ii_index, jj_index); + build_bo_list(bo_first_i, i, j, ii_index, jj_index); } } } @@ -1842,7 +1840,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview::operator()(TagPairReaxBuildListsHalfPreview(bo_first_i, i, j, i_index, j_index, ii_index, jj_index); + build_bo_list(bo_first_i, i, j, ii_index, jj_index); } } @@ -1942,7 +1939,8 @@ void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int hb_firs template template KOKKOS_INLINE_FUNCTION -bool PairReaxFFKokkos::build_bo_list(int bo_first_i, int i, int j, int i_index, int j_index, int& ii_index, int& jj_index) const { +bool PairReaxFFKokkos::build_bo_list(int bo_first_i, int i, int j, int& ii_index, int& jj_index) const { + int i_index, j_index; if (NEIGHFLAG == HALF) { j_index = bo_first_i + d_bo_num[i]; @@ -2509,8 +2507,6 @@ void PairReaxFFKokkos::compute_angular_sbo(int i, int itype, int j_s F_FLOAT prod_SBO = 1.0; for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; - j &= NEIGHMASK; const int j_index = jj - j_start; const F_FLOAT bo_ij = d_BO(i,j_index); @@ -2919,8 +2915,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces a_CdDelta[k] += CEcoa5; for (int ll = j_start; ll < j_end; ll++) { - int l = d_bo_list[ll]; - l &= NEIGHMASK; const int l_index = ll - j_start; temp_bo_jt = d_BO(i,l_index); @@ -3840,7 +3834,7 @@ void PairReaxFFKokkos::ev_tally(EV_FLOAT_REAX &ev, const int &i, con const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -3896,7 +3890,7 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::e_tally(EV_FLOAT_REAX & /*ev*/, const int &i, const int &j, const F_FLOAT &epair) const { - // The eatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -3914,7 +3908,7 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::e_tally_single(EV_FLOAT_REAX & /*ev*/, const int &i, const F_FLOAT &epair) const { - // The eatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -3965,7 +3959,7 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::v_tally3(EV_FLOAT_REAX &ev, const int &i, const int &j, const int &k, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *drij, F_FLOAT *drik) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); @@ -4005,7 +3999,7 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::v_tally4(EV_FLOAT_REAX &ev, const int &i, const int &j, const int &k, const int &l, F_FLOAT *fi, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *dril, F_FLOAT *drjl, F_FLOAT *drkl) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial F_FLOAT v[6]; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index fba7c03ec4e..5f228ebd19c 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -185,7 +185,7 @@ class PairReaxFFKokkos : public PairReaxFF { // Returns if we need to populate d_d* functions or not template KOKKOS_INLINE_FUNCTION - bool build_bo_list(int, int, int, int, int, int&, int&) const; + bool build_bo_list(int, int, int, int&, int&) const; KOKKOS_INLINE_FUNCTION void operator()(TagPairReaxBuildListsFull, const int&) const; @@ -526,7 +526,7 @@ struct PairReaxKokkosFindBondFunctor { typedef int value_type; int groupbit; PairReaxFFKokkos c; - PairReaxKokkosFindBondFunctor(PairReaxFFKokkos* c_ptr, int groupbit):c(*c_ptr),groupbit(groupbit) {}; + PairReaxKokkosFindBondFunctor(PairReaxFFKokkos* c_ptr, int groupbit):groupbit(groupbit),c(*c_ptr){}; KOKKOS_INLINE_FUNCTION void join(int &dst, diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index 7b9fda60dbd..839240c62f3 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -1265,7 +1265,7 @@ template KOKKOS_INLINE_FUNCTION void PairSNAPKokkos::operator() (TagPairSNAPComputeForce, const int& ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -1365,7 +1365,7 @@ void PairSNAPKokkos::v_tally_xyz(EV_FLOAT const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index 93b39197953..01b856a7b5c 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -37,9 +37,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 -#define DELTA 4 - /* ---------------------------------------------------------------------- */ template @@ -235,7 +232,7 @@ template KOKKOS_INLINE_FUNCTION void PairSWKokkos::operator()(TagPairSWCompute, const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); @@ -532,7 +529,7 @@ void PairSWKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -596,7 +593,7 @@ void PairSWKokkos::ev_tally3(EV_FLOAT &ev, const int &i, const int & { F_FLOAT epairthird,v[6]; - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index e860b0232da..1a0d45e4357 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -336,7 +336,7 @@ template KOKKOS_INLINE_FUNCTION void PairTersoffKokkos::tersoff_compute(const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial const auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); const auto a_f = v_f.template access>(); @@ -1003,7 +1003,7 @@ void PairTersoffKokkos::ev_tally(EV_FLOAT &ev, const int &i, const i const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -1061,7 +1061,7 @@ void PairTersoffKokkos::v_tally3(EV_FLOAT &ev, const int &i, const int &j, const int &k, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *drij, F_FLOAT *drik) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index 02a51af3d7e..b941755d4b5 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -326,7 +326,7 @@ template KOKKOS_INLINE_FUNCTION void PairTersoffMODKokkos::tersoff_mod_compute(const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial const auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); const auto a_f = v_f.template access>(); @@ -899,7 +899,7 @@ void PairTersoffMODKokkos::ev_tally(EV_FLOAT &ev, const int &i, cons const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -956,7 +956,7 @@ KOKKOS_INLINE_FUNCTION void PairTersoffMODKokkos::v_tally3(EV_FLOAT &ev, const int &i, const int &j, const int &k, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *drij, F_FLOAT *drik) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index 8bad880a4f9..08d6cb17d7f 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -339,7 +339,7 @@ template KOKKOS_INLINE_FUNCTION void PairTersoffZBLKokkos::tersoff_zbl_compute(const int &ii, EV_FLOAT& ev) const { - // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The f array is duplicated for OpenMP, atomic for GPU, and neither for Serial const auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); const auto a_f = v_f.template access>(); @@ -963,7 +963,7 @@ void PairTersoffZBLKokkos::ev_tally(EV_FLOAT &ev, const int &i, cons const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - // The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The eatom and vatom arrays are duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_eatom = ScatterViewHelper,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom); auto a_eatom = v_eatom.template access>(); @@ -1021,7 +1021,7 @@ void PairTersoffZBLKokkos::v_tally3(EV_FLOAT &ev, const int &i, const int &j, const int &k, F_FLOAT *fj, F_FLOAT *fk, F_FLOAT *drij, F_FLOAT *drik) const { - // The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + // The vatom array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_vatom = ScatterViewHelper,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); auto a_vatom = v_vatom.template access>(); diff --git a/src/KOKKOS/pair_vashishta_kokkos.cpp b/src/KOKKOS/pair_vashishta_kokkos.cpp index 8400807ec6e..0beb7902ebd 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.cpp +++ b/src/KOKKOS/pair_vashishta_kokkos.cpp @@ -36,9 +36,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 -#define DELTA 4 - /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index 912ae36f6f3..73e2c1f06f5 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -20,6 +20,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" +#include "comm.h" #include "domain.h" #include "error.h" #include "fft3d_kokkos.h" @@ -39,22 +40,14 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecialKokkos; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 +static constexpr int MAXORDER = 7; +static constexpr int OFFSET = 16384; +static constexpr double SMALL = 0.00001; +static constexpr double EPS_HOC = 1.0e-7; +static constexpr FFT_SCALAR ZEROF = 0.0; -enum{REVERSE_RHO}; -enum{FORWARD_IK,FORWARD_IK_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +enum { REVERSE_RHO }; +enum { FORWARD_IK, FORWARD_IK_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -113,6 +106,13 @@ PPPMKokkos::PPPMKokkos(LAMMPS *lmp) : PPPM(lmp) fft1 = nullptr; fft2 = nullptr; remap = nullptr; + +#if defined (LMP_KOKKOS_GPU) + #if defined(FFT_KOKKOS_KISS) + if (comm->me == 0) + error->warning(FLERR,"Using default KISS FFT with Kokkos GPU backends may give suboptimal performance"); + #endif +#endif } /* ---------------------------------------------------------------------- @@ -285,7 +285,7 @@ void PPPMKokkos::init() estimated_accuracy); mesg += fmt::format(" estimated relative force accuracy = {:.8g}\n", estimated_accuracy/two_charge_force); - mesg += " using " LMP_FFT_PREC " precision " LMP_FFT_LIB "\n"; + mesg += " using " LMP_FFT_PREC " precision " LMP_FFT_KOKKOS_LIB "\n"; mesg += fmt::format(" 3d grid and FFT values/proc = {} {}\n", ngrid_max,nfft_both_max); utils::logmesg(lmp,mesg); @@ -1371,8 +1371,6 @@ void PPPMKokkos::operator()(TagPPPM_brick2fft, const int &ii) const template void PPPMKokkos::poisson_ik() { - int j; - // transform charge density (r -> k) copymode = 1; @@ -1383,7 +1381,8 @@ void PPPMKokkos::poisson_ik() // global energy and virial contribution - scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + scaleinv = 1.0/ngridtotal; s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { @@ -1392,7 +1391,7 @@ void PPPMKokkos::poisson_ik() copymode = 1; Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nfft),*this,ev); copymode = 0; - for (j = 0; j < 6; j++) virial[j] += ev.v[j]; + for (int j = 0; j < 6; j++) virial[j] += ev.v[j]; energy += ev.ecoul; } else { copymode = 1; diff --git a/src/KOKKOS/pppm_kokkos.h b/src/KOKKOS/pppm_kokkos.h index d621313873f..d29f036d450 100644 --- a/src/KOKKOS/pppm_kokkos.h +++ b/src/KOKKOS/pppm_kokkos.h @@ -33,36 +33,6 @@ KSpaceStyle(pppm/kk/host,PPPMKokkos); // clang-format off -// fix up FFT defines for KOKKOS with CUDA and HIP - -#ifdef KOKKOS_ENABLE_CUDA -# if defined(FFT_FFTW) -# undef FFT_FFTW -# endif -# if defined(FFT_FFTW3) -# undef FFT_FFTW3 -# endif -# if defined(FFT_MKL) -# undef FFT_MKL -# endif -# if !defined(FFT_CUFFT) && !defined(FFT_KISSFFT) -# define FFT_KISSFFT -# endif -#elif defined(KOKKOS_ENABLE_HIP) -# if defined(FFT_FFTW) -# undef FFT_FFTW -# endif -# if defined(FFT_FFTW3) -# undef FFT_FFTW3 -# endif -# if defined(FFT_MKL) -# undef FFT_MKL -# endif -# if !defined(FFT_HIPFFT) && !defined(FFT_KISSFFT) -# define FFT_KISSFFT -# endif -#endif - #include "pppm.h" namespace LAMMPS_NS { diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index c53fae7b039..8df33c32dbe 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -18,12 +18,11 @@ using namespace LAMMPS_NS; -#define BIG 1.0e20 - /* ---------------------------------------------------------------------- */ template -RegBlockKokkos::RegBlockKokkos(LAMMPS *lmp, int narg, char **arg) : RegBlock(lmp, narg, arg) +RegBlockKokkos::RegBlockKokkos(LAMMPS *lmp, int narg, char **arg) + : RegBlock(lmp, narg, arg) { atomKK = (AtomKokkos*) atom; } diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index efc6742a259..0d539ada838 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -19,9 +19,6 @@ using namespace LAMMPS_NS; -#define MIN(A,B) ((A) < (B) ? (A) : (B)) -#define MAX(A,B) ((A) > (B) ? (A) : (B)) - /* ---------------------------------------------------------------------- */ template @@ -38,13 +35,13 @@ RemapKokkos::RemapKokkos(LAMMPS *lmp, MPI_Comm comm, int out_klo, int out_khi, int nqty, int permute, int memory, int precision, int usecollective, - int usecuda_aware) : Pointers(lmp) + int usegpu_aware) : Pointers(lmp) { plan = remap_3d_create_plan_kokkos(comm, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, nqty,permute,memory,precision,usecollective, - usecuda_aware); + usegpu_aware); if (plan == nullptr) error->one(FLERR,"Could not create 3d remap plan"); } @@ -121,7 +118,7 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d // post all recvs into scratch space FFT_SCALAR* v_scratch = d_scratch.data(); - if (!plan->usecuda_aware) { + if (!plan->usegpu_aware) { plan->h_scratch = Kokkos::create_mirror_view(d_scratch); v_scratch = plan->h_scratch.data(); } @@ -134,7 +131,7 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d } FFT_SCALAR* v_sendbuf = plan->d_sendbuf.data(); - if (!plan->usecuda_aware) { + if (!plan->usegpu_aware) { plan->h_sendbuf = Kokkos::create_mirror_view(plan->d_sendbuf); v_sendbuf = plan->h_sendbuf.data(); } @@ -146,7 +143,7 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d plan->pack(d_in,in_offset, plan->d_sendbuf,0,&plan->packplan[isend]); - if (!plan->usecuda_aware) + if (!plan->usegpu_aware) Kokkos::deep_copy(plan->h_sendbuf,plan->d_sendbuf); MPI_Send(v_sendbuf,plan->send_size[isend],MPI_FFT_SCALAR, @@ -178,7 +175,7 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d int scratch_offset = plan->recv_bufloc[irecv]; int out_offset = plan->recv_offset[irecv]; - if (!plan->usecuda_aware) + if (!plan->usegpu_aware) Kokkos::deep_copy(d_scratch,plan->h_scratch); plan->unpack(d_scratch,scratch_offset, @@ -209,7 +206,7 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d 1 = single precision (4 bytes per datum) 2 = double precision (8 bytes per datum) usecollective whether to use collective MPI or point-to-point - usecuda_aware whether to use CUDA-Aware MPI or not + usegpu_aware whether to use GPU-Aware MPI or not ------------------------------------------------------------------------- */ template @@ -220,7 +217,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat int out_ilo, int out_ihi, int out_jlo, int out_jhi, int out_klo, int out_khi, int nqty, int permute, int memory, int /*precision*/, - int usecollective, int usecuda_aware) + int usecollective, int usegpu_aware) { struct remap_plan_3d_kokkos *plan; @@ -238,7 +235,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan = new struct remap_plan_3d_kokkos; if (plan == nullptr) return nullptr; plan->usecollective = usecollective; - plan->usecuda_aware = usecuda_aware; + plan->usegpu_aware = usegpu_aware; // store parameters in local data structs diff --git a/src/KOKKOS/remap_kokkos.h b/src/KOKKOS/remap_kokkos.h index a62c14f00b9..77a3b1a37af 100644 --- a/src/KOKKOS/remap_kokkos.h +++ b/src/KOKKOS/remap_kokkos.h @@ -54,7 +54,7 @@ struct remap_plan_3d_kokkos { int usecollective; // use collective or point-to-point MPI int commringlen; // length of commringlist int *commringlist; // ranks on communication ring of this plan - int usecuda_aware; // use CUDA-Aware MPI or not + int usegpu_aware; // use GPU-Aware MPI or not }; template diff --git a/src/KOKKOS/third_order_kokkos.cpp b/src/KOKKOS/third_order_kokkos.cpp index 6208aa966ab..569a94a773e 100644 --- a/src/KOKKOS/third_order_kokkos.cpp +++ b/src/KOKKOS/third_order_kokkos.cpp @@ -23,27 +23,18 @@ #include "atom_masks.h" #include "bond.h" #include "comm.h" -#include "compute.h" #include "dihedral.h" #include "domain.h" -#include "error.h" -#include "finish.h" #include "force.h" -#include "group.h" #include "improper.h" #include "kokkos.h" #include "kspace.h" -#include "memory.h" #include "modify.h" #include "neighbor.h" #include "pair.h" #include "timer.h" #include "update.h" -#include -#include -#include - using namespace LAMMPS_NS; enum{REGULAR,ESKM}; @@ -174,72 +165,45 @@ void ThirdOrderKokkos::update_force() } bool execute_on_host = false; - unsigned int datamask_read_device = 0; - unsigned int datamask_modify_device = 0; unsigned int datamask_read_host = 0; if (pair_compute_flag) { if (force->pair->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->pair->datamask_read; - datamask_modify_device |= force->pair->datamask_modify; - } else { - datamask_read_device |= force->pair->datamask_read; - datamask_modify_device |= force->pair->datamask_modify; } } if (atomKK->molecular && force->bond) { if (force->bond->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->bond->datamask_read; - datamask_modify_device |= force->bond->datamask_modify; - } else { - datamask_read_device |= force->bond->datamask_read; - datamask_modify_device |= force->bond->datamask_modify; } } if (atomKK->molecular && force->angle) { if (force->angle->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->angle->datamask_read; - datamask_modify_device |= force->angle->datamask_modify; - } else { - datamask_read_device |= force->angle->datamask_read; - datamask_modify_device |= force->angle->datamask_modify; } } if (atomKK->molecular && force->dihedral) { if (force->dihedral->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->dihedral->datamask_read; - datamask_modify_device |= force->dihedral->datamask_modify; - } else { - datamask_read_device |= force->dihedral->datamask_read; - datamask_modify_device |= force->dihedral->datamask_modify; } } if (atomKK->molecular && force->improper) { if (force->improper->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->improper->datamask_read; - datamask_modify_device |= force->improper->datamask_modify; - } else { - datamask_read_device |= force->improper->datamask_read; - datamask_modify_device |= force->improper->datamask_modify; } } if (kspace_compute_flag) { if (force->kspace->execution_space==Host) { execute_on_host = true; datamask_read_host |= force->kspace->datamask_read; - datamask_modify_device |= force->kspace->datamask_modify; - } else { - datamask_read_device |= force->kspace->datamask_read; - datamask_modify_device |= force->kspace->datamask_modify; } } - if (pair_compute_flag) { atomKK->sync(force->pair->execution_space,force->pair->datamask_read); atomKK->sync(force->pair->execution_space,~(~force->pair->datamask_read|(F_MASK | ENERGY_MASK | VIRIAL_MASK))); diff --git a/src/KOKKOS/transpose_helper_kokkos.h b/src/KOKKOS/transpose_helper_kokkos.h index e3a4d86f9ad..06af0aea91f 100644 --- a/src/KOKKOS/transpose_helper_kokkos.h +++ b/src/KOKKOS/transpose_helper_kokkos.h @@ -125,8 +125,7 @@ struct TransposeHelperKokkos { elem[0] = extent_tile_id[0] * tile_size; elem[1] = extent_tile_id[1] * tile_size; - if (elem[0] >= d_dst.extent(0) || - elem[1] >= d_dst.extent(1)) return; + if ((elem[0] >= (int)d_dst.extent(0)) || (elem[1] >= (int)d_dst.extent(1))) return; // determine if a row/column is a full `tile_size` in size or not bool perfect_pad[2]; @@ -135,35 +134,30 @@ struct TransposeHelperKokkos { // load phase if (src_is_layout_right) { - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), - [&] (const int j) { - - if (elem[1] + j < d_src.extent(1)) { - if (perfect_pad[0]) { - for (int i = 0; i < tile_size; i++) - buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); - } else { - for (int i = 0; i < (d_src.extent(0) - elem[0]); i++) - buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), [&] (const int j) { + if (elem[1] + j < (int)d_src.extent(1)) { + if (perfect_pad[0]) { + for (int i = 0; i < tile_size; i++) + buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + } else { + for (int i = 0; i < ((int)d_src.extent(0) - elem[0]); i++) + buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + } } - } - }); - + }); } else { // src is layout left - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), - [&] (const int i) { - - if (elem[0] + i < d_src.extent(0)) { - if (perfect_pad[1]) { - for (int j = 0; j < tile_size; j++) - buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); - } else { - for (int j = 0; j < (d_src.extent(1) - elem[1]); j++) - buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), [&] (const int i) { + if (elem[0] + i < (int)d_src.extent(0)) { + if (perfect_pad[1]) { + for (int j = 0; j < tile_size; j++) + buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + } else { + for (int j = 0; j < ((int)d_src.extent(1) - elem[1]); j++) + buffer[i * (tile_size + bank_pad) + j] = d_src(elem[0] + i, elem[1] + j); + } } - } - }); + }); } // No need for an extra sync b/c there is an implicit sync at the end @@ -171,37 +165,31 @@ struct TransposeHelperKokkos { // save phase if (src_is_layout_right) { - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), - [&] (const int i) { - - if (elem[0] + i < d_dst.extent(0)) { - if (perfect_pad[1]) { - for (int j = 0; j < tile_size; j++) - d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; - } else { - for (int j = 0; j < (d_dst.extent(1) - elem[1]); j++) - d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), [&] (const int i) { + if (elem[0] + i < (int)d_dst.extent(0)) { + if (perfect_pad[1]) { + for (int j = 0; j < tile_size; j++) + d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + } else { + for (int j = 0; j < ((int)d_dst.extent(1) - elem[1]); j++) + d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + } } - } - }); + }); } else { - // src is layout left - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), - [&] (const int j) { - - if (elem[1] + j < d_dst.extent(1)) { - if (perfect_pad[0]) { - for (int i = 0; i < tile_size; i++) - d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; - } else { - for (int i = 0; i < (d_dst.extent(0) - elem[0]); i++) - d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team_member, tile_size), [&] (const int j) { + if (elem[1] + j < (int)d_dst.extent(1)) { + if (perfect_pad[0]) { + for (int i = 0; i < tile_size; i++) + d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + } else { + for (int i = 0; i < ((int)d_dst.extent(0) - elem[0]); i++) + d_dst(elem[0] + i, elem[1] + j) = buffer[i * (tile_size + bank_pad) + j]; + } } - } - }); + }); } - } }; diff --git a/src/KOKKOS/verlet_kokkos.cpp b/src/KOKKOS/verlet_kokkos.cpp index 7570f1d8fa0..858df5df6c9 100644 --- a/src/KOKKOS/verlet_kokkos.cpp +++ b/src/KOKKOS/verlet_kokkos.cpp @@ -29,7 +29,6 @@ #include "update.h" #include "modify_kokkos.h" #include "timer.h" -#include "memory_kokkos.h" #include "kokkos.h" using namespace LAMMPS_NS; diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index 93470c60ac0..930cc68ba97 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/ewald_dipole.cpp b/src/KSPACE/ewald_dipole.cpp index 7a3a1da8ffd..e4982b1d566 100644 --- a/src/KSPACE/ewald_dipole.cpp +++ b/src/KSPACE/ewald_dipole.cpp @@ -36,7 +36,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/ewald_dipole_spin.cpp b/src/KSPACE/ewald_dipole_spin.cpp index c679e164f73..93821db9ba6 100644 --- a/src/KSPACE/ewald_dipole_spin.cpp +++ b/src/KSPACE/ewald_dipole_spin.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/ewald_disp.cpp b/src/KSPACE/ewald_disp.cpp index 31149134ad6..9c81b214485 100644 --- a/src/KSPACE/ewald_disp.cpp +++ b/src/KSPACE/ewald_disp.cpp @@ -38,7 +38,7 @@ using namespace MathConst; using namespace MathSpecial; using namespace MathExtra; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; //#define DEBUG diff --git a/src/KSPACE/msm.cpp b/src/KSPACE/msm.cpp index 041a5d52420..60bb768911e 100644 --- a/src/KSPACE/msm.cpp +++ b/src/KSPACE/msm.cpp @@ -30,18 +30,17 @@ #include "neighbor.h" #include "pair.h" -#include #include +#include using namespace LAMMPS_NS; using namespace MathConst; -#define MAX_LEVELS 10 -#define OFFSET 16384 -#define SMALL 0.00001 +static constexpr int MAX_LEVELS = 10; +static constexpr int OFFSET = 16384; -enum{REVERSE_RHO,REVERSE_AD,REVERSE_AD_PERATOM}; -enum{FORWARD_RHO,FORWARD_AD,FORWARD_AD_PERATOM}; +enum { REVERSE_RHO, REVERSE_AD, REVERSE_AD_PERATOM }; +enum { FORWARD_RHO, FORWARD_AD, FORWARD_AD_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -140,10 +139,6 @@ void MSM::init() if ((order < 4) || (order > 10) || (order%2 != 0)) error->all(FLERR,"MSM order must be 4, 6, 8, or 10"); - if (sizeof(FFT_SCALAR) != 8) - error->all(FLERR,"Cannot (yet) use single precision with MSM " - "(remove -DFFT_SINGLE from Makefile and re-compile)"); - // compute two charge force two_charge(); @@ -1607,8 +1602,7 @@ void MSM::direct(int n) qtmp = qgridn[icz][icy][icx]; // charge on center grid point esum = 0.0; - if (vflag_either && !scalar_pressure_flag) - v0sum = v1sum = v2sum = v3sum = v4sum = v5sum = 0.0; + v0sum = v1sum = v2sum = v3sum = v4sum = v5sum = 0.0; // use hemisphere to avoid double computation of pair-wise // interactions in direct sum (no computations in -z direction) diff --git a/src/KSPACE/msm_cg.cpp b/src/KSPACE/msm_cg.cpp index 4a8daedf10f..e680c05cb21 100644 --- a/src/KSPACE/msm_cg.cpp +++ b/src/KSPACE/msm_cg.cpp @@ -31,8 +31,8 @@ using namespace LAMMPS_NS; -#define OFFSET 16384 -#define SMALLQ 0.00001 +static constexpr int OFFSET = 16384; +static constexpr double SMALLQ = 0.00001; enum{REVERSE_RHO,REVERSE_AD,REVERSE_AD_PERATOM}; enum{FORWARD_RHO,FORWARD_AD,FORWARD_AD_PERATOM}; diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp index d31f655ce08..0165beba0dc 100644 --- a/src/KSPACE/pair_born_coul_long.cpp +++ b/src/KSPACE/pair_born_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -33,14 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_buck_coul_long.cpp b/src/KSPACE/pair_buck_coul_long.cpp index 1516aab5711..a6a86f3d459 100644 --- a/src/KSPACE/pair_buck_coul_long.cpp +++ b/src/KSPACE/pair_buck_coul_long.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -29,14 +30,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index 820b76b96f4..e7cce1071a6 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_extra.h" @@ -35,14 +36,7 @@ using namespace LAMMPS_NS; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp index 6b91050e3e3..ef1b60ac56f 100644 --- a/src/KSPACE/pair_coul_long.cpp +++ b/src/KSPACE/pair_coul_long.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -30,14 +31,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_coul_streitz.cpp b/src/KSPACE/pair_coul_streitz.cpp index bd7fd206565..b499df3946a 100644 --- a/src/KSPACE/pair_coul_streitz.cpp +++ b/src/KSPACE/pair_coul_streitz.cpp @@ -35,9 +35,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 4 -#define PGDELTA 1 -#define MAXNEIGH 24 +static constexpr int DELTA = 4; +static constexpr int MAXNEIGH = 24; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp index cdb8ead70a5..ef367f87428 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -33,14 +34,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp index b7635c49c77..a0889d92ea5 100644 --- a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp @@ -25,6 +25,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "memory.h" @@ -37,14 +38,7 @@ #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ @@ -76,6 +70,8 @@ PairLJCharmmfswCoulLong::PairLJCharmmfswCoulLong(LAMMPS *lmp) : Pair(lmp) PairLJCharmmfswCoulLong::~PairLJCharmmfswCoulLong() { + if (copymode) return; + // switch qqr2e back from CHARMM value to LAMMPS value if (update && strcmp(update->unit_style,"real") == 0) { @@ -85,8 +81,6 @@ PairLJCharmmfswCoulLong::~PairLJCharmmfswCoulLong() force->qqr2e = force->qqr2e_lammps_real; } - if (copymode) return; - if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp index c4748160757..969f235c55c 100644 --- a/src/KSPACE/pair_lj_cut_coul_long.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -35,14 +36,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_cut_tip4p_long.cpp b/src/KSPACE/pair_lj_cut_tip4p_long.cpp index 817b335b3a7..32a04e27614 100644 --- a/src/KSPACE/pair_lj_cut_tip4p_long.cpp +++ b/src/KSPACE/pair_lj_cut_tip4p_long.cpp @@ -29,19 +29,13 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "ewald_const.h" #include #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 5f77009d6ce..5f3c0327dbc 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -23,6 +23,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_extra.h" @@ -37,14 +38,7 @@ using namespace LAMMPS_NS; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_long_tip4p_long.cpp b/src/KSPACE/pair_lj_long_tip4p_long.cpp index 8c331922f65..187b22a78a5 100644 --- a/src/KSPACE/pair_lj_long_tip4p_long.cpp +++ b/src/KSPACE/pair_lj_long_tip4p_long.cpp @@ -29,19 +29,13 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" +#include "ewald_const.h" #include #include using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_tip4p_long.cpp b/src/KSPACE/pair_tip4p_long.cpp index 83eeccca9c7..637a272e498 100644 --- a/src/KSPACE/pair_tip4p_long.cpp +++ b/src/KSPACE/pair_tip4p_long.cpp @@ -31,17 +31,10 @@ #include "neigh_list.h" #include "memory.h" #include "error.h" - +#include "ewald_const.h" using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 2f5b4fc670d..4fe5075f44f 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -24,14 +24,12 @@ #include "angle.h" #include "atom.h" #include "bond.h" -#include "comm.h" #include "domain.h" #include "error.h" #include "fft3d_wrap.h" #include "force.h" #include "grid3d.h" #include "math_const.h" -#include "math_extra.h" #include "math_special.h" #include "memory.h" #include "neighbor.h" @@ -45,22 +43,15 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 +static constexpr int MAXORDER = 7; +static constexpr int OFFSET = 16384; +static constexpr double LARGE = 10000.0; +static constexpr double SMALL = 0.00001; +static constexpr double EPS_HOC = 1.0e-7; +static constexpr FFT_SCALAR ZEROF = 0.0; -enum{REVERSE_RHO}; -enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +enum { REVERSE_RHO }; +enum { FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -1188,7 +1179,7 @@ double PPPM::compute_qopt() // each proc calculates contributions from every Pth grid point bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; - int nxy_pppm = nx_pppm * ny_pppm; + bigint nxy_pppm = (bigint) nx_pppm * ny_pppm; double qopt = 0.0; @@ -1944,7 +1935,8 @@ void PPPM::poisson_ik() // global energy and virial contribution - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { @@ -2145,7 +2137,8 @@ void PPPM::poisson_ad() // global energy and virial contribution - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { @@ -3259,7 +3252,8 @@ void PPPM::poisson_groups(int AA_flag) // keep everything in reciprocal space so // no inverse FFTs needed - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; // energy diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index 845abe0078c..cebf9e00001 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -26,7 +26,6 @@ #include "math_const.h" #include "memory.h" #include "neighbor.h" -#include "remap.h" #include #include @@ -34,17 +33,13 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define OFFSET 16384 -#define SMALLQ 0.00001 +static constexpr int OFFSET = 16384; +static constexpr double SMALLQ = 0.00001; enum{REVERSE_RHO}; enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#else -#define ZEROF 0.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pppm_dipole.cpp b/src/KSPACE/pppm_dipole.cpp index a01ffea1dca..99a0efd75e9 100644 --- a/src/KSPACE/pppm_dipole.cpp +++ b/src/KSPACE/pppm_dipole.cpp @@ -40,22 +40,14 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 - -enum{REVERSE_MU}; -enum{FORWARD_MU,FORWARD_MU_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr int MAXORDER = 7; +static constexpr int OFFSET = 16384; +static constexpr double SMALL = 0.00001; +static constexpr double EPS_HOC = 1.0e-7; +static constexpr FFT_SCALAR ZEROF = 0.0; + +enum { REVERSE_MU }; +enum { FORWARD_MU, FORWARD_MU_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -1338,7 +1330,8 @@ void PPPMDipole::poisson_ik_dipole() // global energy and virial contribution - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { diff --git a/src/KSPACE/pppm_dipole_spin.cpp b/src/KSPACE/pppm_dipole_spin.cpp index e96378180a5..8f195a8a414 100644 --- a/src/KSPACE/pppm_dipole_spin.cpp +++ b/src/KSPACE/pppm_dipole_spin.cpp @@ -35,22 +35,12 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXORDER 7 -#define OFFSET 16384 -#define LARGE 10000.0 -#define SMALL 0.00001 -#define EPS_HOC 1.0e-7 - -enum{REVERSE_MU}; -enum{FORWARD_MU,FORWARD_MU_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr int MAXORDER = 7; + +enum { REVERSE_MU }; +enum { FORWARD_MU, FORWARD_MU_PERATOM }; + +static constexpr FFT_SCALAR ZEROF = 0.0; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp index 72424a73305..b70dae45f9e 100644 --- a/src/KSPACE/pppm_disp.cpp +++ b/src/KSPACE/pppm_disp.cpp @@ -40,11 +40,11 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXORDER 7 -#define OFFSET 16384 -#define SMALL 0.00001 -#define LARGE 10000.0 -#define EPS_HOC 1.0e-7 +static constexpr int MAXORDER = 7; +static constexpr int OFFSET = 16384; +static constexpr double SMALL = 0.00001; +static constexpr double LARGE = 10000.0; +static constexpr FFT_SCALAR ZEROF = 0.0; enum{REVERSE_RHO,REVERSE_RHO_GEOM,REVERSE_RHO_ARITH,REVERSE_RHO_NONE}; enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM, @@ -55,14 +55,6 @@ enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM, FORWARD_IK_NONE,FORWARD_AD_NONE,FORWARD_IK_PERATOM_NONE, FORWARD_AD_PERATOM_NONE}; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - /* ---------------------------------------------------------------------- */ PPPMDisp::PPPMDisp(LAMMPS *lmp) : KSpace(lmp), @@ -4556,7 +4548,8 @@ void PPPMDisp::poisson_ik(FFT_SCALAR* wk1, FFT_SCALAR* wk2, // if requested, compute energy and virial contribution - double scaleinv = 1.0/(nx_p*ny_p*nz_p); + bigint ngridtotal = (bigint) nx_p * ny_p * nz_p; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { @@ -4696,7 +4689,8 @@ void PPPMDisp::poisson_ad(FFT_SCALAR* wk1, FFT_SCALAR* wk2, // if requested, compute energy and virial contribution - double scaleinv = 1.0/(nx_p*ny_p*nz_p); + bigint ngridtotal = (bigint) nx_p * ny_p * nz_p; + double scaleinv = 1.0/ngridtotal; double s2 = scaleinv*scaleinv; if (eflag_global || vflag_global) { @@ -4844,7 +4838,8 @@ poisson_2s_ik(FFT_SCALAR* dfft_1, FFT_SCALAR* dfft_2, int i,j,k,n; double eng; - double scaleinv = 1.0/(nx_pppm_6*ny_pppm_6*nz_pppm_6); + bigint ngridtotal = (bigint) nx_pppm_6 * ny_pppm_6 * nz_pppm_6; + double scaleinv = 1.0/ngridtotal; // transform charge/dispersion density (r -> k) // only one transform when energies and pressures not calculated @@ -5017,7 +5012,8 @@ poisson_none_ik(int n1, int n2,FFT_SCALAR* dfft_1, FFT_SCALAR* dfft_2, int i,j,k,n; double eng; - double scaleinv = 1.0/(nx_pppm_6*ny_pppm_6*nz_pppm_6); + bigint ngridtotal = (bigint) nx_pppm_6 * ny_pppm_6 * nz_pppm_6; + double scaleinv = 1.0/ngridtotal; // transform charge/dispersion density (r -> k) // only one transform required when energies and pressures not needed @@ -5191,7 +5187,8 @@ poisson_2s_ad(FFT_SCALAR* dfft_1, FFT_SCALAR* dfft_2, int i,j,k,n; double eng; - double scaleinv = 1.0/(nx_pppm_6*ny_pppm_6*nz_pppm_6); + bigint ngridtotal = (bigint) nx_pppm_6 * ny_pppm_6 * nz_pppm_6; + double scaleinv = 1.0/ngridtotal; // transform charge/dispersion density (r -> k) // only one tansform required when energies and pressures not needed @@ -5289,7 +5286,8 @@ poisson_none_ad(int n1, int n2, FFT_SCALAR* dfft_1, FFT_SCALAR* dfft_2, int i,j,k,n; double eng; - double scaleinv = 1.0/(nx_pppm_6*ny_pppm_6*nz_pppm_6); + bigint ngridtotal = (bigint) nx_pppm_6 * ny_pppm_6 * nz_pppm_6; + double scaleinv = 1.0/ngridtotal; // transform charge/dispersion density (r -> k) // only one tansform required when energies and pressures not needed diff --git a/src/KSPACE/pppm_disp.h b/src/KSPACE/pppm_disp.h index a222e041d96..1a271e59d2a 100644 --- a/src/KSPACE/pppm_disp.h +++ b/src/KSPACE/pppm_disp.h @@ -25,8 +25,8 @@ KSpaceStyle(pppm/disp,PPPMDisp); namespace LAMMPS_NS { -#define EWALD_MAXORDER 6 -#define EWALD_FUNCS 4 +static constexpr int EWALD_MAXORDER = 6; +static constexpr int EWALD_FUNCS = 4; class PPPMDisp : public KSpace { public: diff --git a/src/KSPACE/pppm_disp_tip4p.cpp b/src/KSPACE/pppm_disp_tip4p.cpp index c5ed2f26d6c..9e2184f2a92 100644 --- a/src/KSPACE/pppm_disp_tip4p.cpp +++ b/src/KSPACE/pppm_disp_tip4p.cpp @@ -29,15 +29,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define OFFSET 16384 - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr int OFFSET = 16384; +static constexpr FFT_SCALAR ZEROF = 0.0; /* ---------------------------------------------------------------------- */ @@ -490,7 +483,7 @@ void PPPMDispTIP4P::fieldforce_c_peratom() Fix handling of TIP4P dipole compared to PPPMDisp::slabcorr ------------------------------------------------------------------------- */ -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; void PPPMDispTIP4P::slabcorr(int /*eflag*/) { diff --git a/src/KSPACE/pppm_stagger.cpp b/src/KSPACE/pppm_stagger.cpp index d6f3c9cac66..b740d21daa4 100644 --- a/src/KSPACE/pppm_stagger.cpp +++ b/src/KSPACE/pppm_stagger.cpp @@ -33,19 +33,12 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define OFFSET 16384 -#define EPS_HOC 1.0e-7 +static constexpr int OFFSET = 16384; +static constexpr double EPS_HOC = 1.0e-7; +static constexpr FFT_SCALAR ZEROF = 0.0; -enum{REVERSE_RHO}; -enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +enum{ REVERSE_RHO }; +enum{ FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM }; /* ---------------------------------------------------------------------- */ @@ -302,7 +295,7 @@ double PPPMStagger::compute_qopt() // each proc calculates contributions from every Pth grid point bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; - int nxy_pppm = nx_pppm * ny_pppm; + bigint nxy_pppm = (bigint) nx_pppm * ny_pppm; double qopt = 0.0; @@ -398,7 +391,7 @@ double PPPMStagger::compute_qopt_ad() // each proc calculates contributions from every Pth grid point bigint ngridtotal = (bigint) nx_pppm * ny_pppm * nz_pppm; - int nxy_pppm = nx_pppm * ny_pppm; + bigint nxy_pppm = (bigint) nx_pppm * ny_pppm; double qopt = 0.0; diff --git a/src/KSPACE/pppm_tip4p.cpp b/src/KSPACE/pppm_tip4p.cpp index 730b604d7a5..2a34db2b77a 100644 --- a/src/KSPACE/pppm_tip4p.cpp +++ b/src/KSPACE/pppm_tip4p.cpp @@ -29,15 +29,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define OFFSET 16384 - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; +static constexpr int OFFSET = 16384; /* ---------------------------------------------------------------------- */ @@ -483,7 +476,7 @@ void PPPMTIP4P::fieldforce_peratom() Fix handling of TIP4P dipole compared to PPPMDisp::slabcorr ------------------------------------------------------------------------- */ -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; void PPPMTIP4P::slabcorr() { diff --git a/src/LATBOLTZ/fix_lb_fluid.cpp b/src/LATBOLTZ/fix_lb_fluid.cpp index f692d28084d..f3d8f451424 100644 --- a/src/LATBOLTZ/fix_lb_fluid.cpp +++ b/src/LATBOLTZ/fix_lb_fluid.cpp @@ -4430,9 +4430,9 @@ void FixLbFluid::calc_MPT(double &totalmass, double totalmomentum[3], double &Ta ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ -int FixLbFluid::adjust_dof_fix() /* Based on same private method in compute class */ -{ /* altered to return fix_dof */ - int fix_dof = 0; +bigint FixLbFluid::adjust_dof_fix() /* Based on same private method in compute class */ +{ /* altered to return fix_dof */ + bigint fix_dof = 0; for (auto &ifix : modify->get_fix_list()) if (ifix->dof_flag) fix_dof += ifix->dof(igroup); return fix_dof; diff --git a/src/LATBOLTZ/fix_lb_fluid.h b/src/LATBOLTZ/fix_lb_fluid.h index 19cd2c6dc33..f134b509013 100644 --- a/src/LATBOLTZ/fix_lb_fluid.h +++ b/src/LATBOLTZ/fix_lb_fluid.h @@ -182,7 +182,7 @@ class FixLbFluid : public Fix { void calc_fluidforceII(void); void calc_fluidforceweight(void); - int adjust_dof_fix(); + bigint adjust_dof_fix(); double dof_compute(); /* nanopit parameters */ diff --git a/src/LEPTON/angle_lepton.cpp b/src/LEPTON/angle_lepton.cpp index 59310f56377..6efded950fe 100644 --- a/src/LEPTON/angle_lepton.cpp +++ b/src/LEPTON/angle_lepton.cpp @@ -27,6 +27,8 @@ #include "neighbor.h" #include +#include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -44,6 +46,7 @@ AngleLepton::AngleLepton(LAMMPS *_lmp) : { writedata = 1; reinitflag = 0; + auto_offset = 1; } /* ---------------------------------------------------------------------- */ @@ -90,10 +93,21 @@ template void AngleLepton::eval() { std::vector angleforce; std::vector anglepot; - for (const auto &expr : expressions) { - auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); - angleforce.emplace_back(parsed.differentiate("theta").createCompiledExpression()); - if (EFLAG) anglepot.emplace_back(parsed.createCompiledExpression()); + std::vector has_ref; + try { + for (const auto &expr : expressions) { + auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); + angleforce.emplace_back(parsed.differentiate("theta").createCompiledExpression()); + has_ref.push_back(true); + try { + angleforce.back().getVariableReference("theta"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } + if (EFLAG) anglepot.emplace_back(parsed.createCompiledExpression()); + } + } catch (std::exception &e) { + error->all(FLERR, e.what()); } const double *const *const x = atom->x; @@ -142,8 +156,7 @@ template void AngleLepton::eval() const double dtheta = acos(c) - theta0[type]; const int idx = type2expression[type]; - angleforce[idx].getVariableReference("theta") = dtheta; - + if (has_ref[idx]) angleforce[idx].getVariableReference("theta") = dtheta; const double a = -angleforce[idx].evaluate() * s; const double a11 = a * c / rsq1; const double a12 = -a / (r1 * r2); @@ -179,7 +192,11 @@ template void AngleLepton::eval() double eangle = 0.0; if (EFLAG) { - anglepot[idx].getVariableReference("theta") = dtheta; + try { + anglepot[idx].getVariableReference("theta") = dtheta; + } catch (Lepton::Exception &) { + ; // ignore -> constant force + } eangle = anglepot[idx].evaluate() - offset[type]; } if (EVFLAG) @@ -202,6 +219,24 @@ void AngleLepton::allocate() for (int i = 1; i < np1; i++) setflag[i] = 0; } +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void AngleLepton::settings(int narg, char **arg) +{ + auto_offset = 1; + if (narg > 0) { + if (strcmp(arg[0],"auto_offset") == 0) { + auto_offset = 1; + } else if (strcmp(arg[0],"no_offset") == 0) { + auto_offset = 0; + } else { + error->all(FLERR, "Unknown angle style lepton setting {}", arg[0]); + } + } +} + /* ---------------------------------------------------------------------- set coeffs for one or more types ------------------------------------------------------------------------- */ @@ -224,9 +259,20 @@ void AngleLepton::coeff(int narg, char **arg) auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp)); auto anglepot = parsed.createCompiledExpression(); auto angleforce = parsed.differentiate("theta").createCompiledExpression(); - anglepot.getVariableReference("theta") = 0.0; - angleforce.getVariableReference("theta") = 0.0; - offset_one = anglepot.evaluate(); + try { + anglepot.getVariableReference("theta") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Lepton potential expression {} does not depend on 'theta'", exp_one); + } + try { + angleforce.getVariableReference("theta") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Force from Lepton expression {} does not depend on 'theta'", + exp_one); + } + if (auto_offset) offset_one = anglepot.evaluate(); angleforce.evaluate(); } catch (std::exception &e) { error->all(FLERR, e.what()); @@ -284,6 +330,7 @@ void AngleLepton::write_restart(FILE *fp) fwrite(&n, sizeof(int), 1, fp); fwrite(exp.c_str(), sizeof(char), n, fp); } + fwrite(&auto_offset, sizeof(int), 1, fp); } /* ---------------------------------------------------------------------- @@ -323,6 +370,9 @@ void AngleLepton::read_restart(FILE *fp) expressions.emplace_back(buf); } + if (comm->me == 0) utils::sfread(FLERR, &auto_offset, sizeof(int), 1, fp, nullptr, error); + MPI_Bcast(&auto_offset, 1, MPI_INT, 0, world); + delete[] buf; } @@ -363,7 +413,11 @@ double AngleLepton::single(int type, int i1, int i2, int i3) const auto &expr = expressions[type2expression[type]]; auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); auto anglepot = parsed.createCompiledExpression(); - anglepot.getVariableReference("theta") = dtheta; + try { + anglepot.getVariableReference("theta") = dtheta; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } return anglepot.evaluate() - offset[type]; } diff --git a/src/LEPTON/angle_lepton.h b/src/LEPTON/angle_lepton.h index 67d2718fb69..4f0e5729eda 100644 --- a/src/LEPTON/angle_lepton.h +++ b/src/LEPTON/angle_lepton.h @@ -29,6 +29,7 @@ class AngleLepton : public Angle { AngleLepton(class LAMMPS *); ~AngleLepton() override; void compute(int, int) override; + void settings(int, char **) override; void coeff(int, char **) override; double equilibrium_angle(int) override; void write_restart(FILE *) override; @@ -42,6 +43,7 @@ class AngleLepton : public Angle { double *theta0; int *type2expression; double *offset; + int auto_offset; virtual void allocate(); diff --git a/src/LEPTON/bond_lepton.cpp b/src/LEPTON/bond_lepton.cpp index 773607782d9..63c66011a1c 100644 --- a/src/LEPTON/bond_lepton.cpp +++ b/src/LEPTON/bond_lepton.cpp @@ -25,6 +25,8 @@ #include "neighbor.h" #include +#include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -37,6 +39,7 @@ BondLepton::BondLepton(LAMMPS *_lmp) : { writedata = 1; reinitflag = 0; + auto_offset = 1; } /* ---------------------------------------------------------------------- */ @@ -82,10 +85,17 @@ template void BondLepton::eval() { std::vector bondforce; std::vector bondpot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); bondforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back(true); + try { + bondforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) bondpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -116,7 +126,7 @@ template void BondLepton::eval() double fbond = 0.0; if (r > 0.0) { - bondforce[idx].getVariableReference("r") = dr; + if (has_ref[idx]) bondforce[idx].getVariableReference("r") = dr; fbond = -bondforce[idx].evaluate() / r; } @@ -136,7 +146,11 @@ template void BondLepton::eval() double ebond = 0.0; if (EFLAG) { - bondpot[idx].getVariableReference("r") = dr; + try { + bondpot[idx].getVariableReference("r") = dr; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } ebond = bondpot[idx].evaluate() - offset[type]; } if (EVFLAG) ev_tally(i1, i2, nlocal, NEWTON_BOND, ebond, fbond, delx, dely, delz); @@ -157,6 +171,24 @@ void BondLepton::allocate() for (int i = 1; i < np1; i++) setflag[i] = 0; } +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void BondLepton::settings(int narg, char **arg) +{ + auto_offset = 1; + if (narg > 0) { + if (strcmp(arg[0],"auto_offset") == 0) { + auto_offset = 1; + } else if (strcmp(arg[0],"no_offset") == 0) { + auto_offset = 0; + } else { + error->all(FLERR, "Unknown bond style lepton setting {}", arg[0]); + } + } +} + /* ---------------------------------------------------------------------- set coeffs for one or more types ------------------------------------------------------------------------- */ @@ -179,9 +211,19 @@ void BondLepton::coeff(int narg, char **arg) auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp)); auto bondpot = parsed.createCompiledExpression(); auto bondforce = parsed.differentiate("r").createCompiledExpression(); - bondpot.getVariableReference("r") = 0.0; - bondforce.getVariableReference("r") = 0.0; - offset_one = bondpot.evaluate(); + try { + bondpot.getVariableReference("r") = 0.0; + } catch (Lepton::Exception &e) { + if (comm->me == 0) + error->warning(FLERR, "Lepton potential expression {} does not depend on 'r'", exp_one); + } + try { + bondforce.getVariableReference("r") = 0.0; + } catch (Lepton::Exception &e) { + if (comm->me == 0) + error->warning(FLERR, "Force from Lepton expression {} does not depend on 'r'", exp_one); + } + if (auto_offset) offset_one = bondpot.evaluate(); bondforce.evaluate(); } catch (std::exception &e) { error->all(FLERR, e.what()); @@ -239,6 +281,7 @@ void BondLepton::write_restart(FILE *fp) fwrite(&n, sizeof(int), 1, fp); fwrite(exp.c_str(), sizeof(char), n, fp); } + fwrite(&auto_offset, sizeof(int), 1, fp); } /* ---------------------------------------------------------------------- @@ -278,6 +321,9 @@ void BondLepton::read_restart(FILE *fp) expressions.emplace_back(buf); } + if (comm->me == 0) utils::sfread(FLERR, &auto_offset, sizeof(int), 1, fp, nullptr, error); + MPI_Bcast(&auto_offset, 1, MPI_INT, 0, world); + delete[] buf; } @@ -302,8 +348,12 @@ double BondLepton::single(int type, double rsq, int /*i*/, int /*j*/, double &ff auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); auto bondpot = parsed.createCompiledExpression(); auto bondforce = parsed.differentiate("r").createCompiledExpression(); - bondforce.getVariableReference("r") = dr; - bondpot.getVariableReference("r") = dr; + try { + bondpot.getVariableReference("r") = dr; + bondforce.getVariableReference("r") = dr; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential or force + } // force and energy diff --git a/src/LEPTON/bond_lepton.h b/src/LEPTON/bond_lepton.h index 9e693298a76..e59648a3f0a 100644 --- a/src/LEPTON/bond_lepton.h +++ b/src/LEPTON/bond_lepton.h @@ -29,6 +29,7 @@ class BondLepton : public Bond { BondLepton(class LAMMPS *); ~BondLepton() override; void compute(int, int) override; + void settings(int, char **) override; void coeff(int, char **) override; double equilibrium_distance(int) override; void write_restart(FILE *) override; @@ -42,6 +43,7 @@ class BondLepton : public Bond { double *r0; int *type2expression; double *offset; + int auto_offset; virtual void allocate(); diff --git a/src/LEPTON/dihedral_lepton.cpp b/src/LEPTON/dihedral_lepton.cpp index 6470e43033d..16975a8f525 100644 --- a/src/LEPTON/dihedral_lepton.cpp +++ b/src/LEPTON/dihedral_lepton.cpp @@ -29,6 +29,7 @@ #include "neighbor.h" #include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -92,10 +93,17 @@ template void DihedralLepton::eval() { std::vector dihedralforce; std::vector dihedralpot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp)); dihedralforce.emplace_back(parsed.differentiate("phi").createCompiledExpression()); + has_ref.push_back(true); + try { + dihedralforce.back().getVariableReference("phi"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) dihedralpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -278,7 +286,7 @@ template void DihedralLepton::eval() } const int idx = type2expression[type]; - dihedralforce[idx].getVariableReference("phi") = phi; + if (has_ref[idx]) dihedralforce[idx].getVariableReference("phi") = phi; double m_du_dphi = -dihedralforce[idx].evaluate(); // ----- Step 4: Calculate the force direction in real space ----- @@ -322,7 +330,11 @@ template void DihedralLepton::eval() double edihedral = 0.0; if (EFLAG) { - dihedralpot[idx].getVariableReference("phi") = phi; + try { + dihedralpot[idx].getVariableReference("phi") = phi; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } edihedral = dihedralpot[idx].evaluate(); } if (EVFLAG) @@ -362,8 +374,18 @@ void DihedralLepton::coeff(int narg, char **arg) auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp)); auto dihedralpot = parsed.createCompiledExpression(); auto dihedralforce = parsed.differentiate("phi").createCompiledExpression(); - dihedralpot.getVariableReference("phi") = 0.0; - dihedralforce.getVariableReference("phi") = 0.0; + try { + dihedralpot.getVariableReference("phi") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Lepton potential expression {} does not depend on 'phi'", exp_one); + } + try { + dihedralforce.getVariableReference("phi") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Force from Lepton expression {} does not depend on 'phi'", exp_one); + } dihedralforce.evaluate(); } catch (std::exception &e) { error->all(FLERR, e.what()); diff --git a/src/LEPTON/fix_wall_lepton.cpp b/src/LEPTON/fix_wall_lepton.cpp index a81d3c4edb6..320efb090e1 100644 --- a/src/LEPTON/fix_wall_lepton.cpp +++ b/src/LEPTON/fix_wall_lepton.cpp @@ -13,11 +13,14 @@ #include "fix_wall_lepton.h" #include "atom.h" +#include "comm.h" #include "error.h" #include "Lepton.h" #include "lepton_utils.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -41,8 +44,18 @@ void FixWallLepton::post_constructor() auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp)); auto wallpot = parsed.createCompiledExpression(); auto wallforce = parsed.differentiate("r").createCompiledExpression(); - wallpot.getVariableReference("r") = 0.0; - wallforce.getVariableReference("r") = 0.0; + try { + wallpot.getVariableReference("r") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Lepton potential expression {} does not depend on 'r'", exp_one); + } + try { + wallforce.getVariableReference("r") = 0.0; + } catch (Lepton::Exception &) { + if (comm->me == 0) + error->warning(FLERR, "Force from Lepton expression {} does not depend on 'r'", exp_one); + } wallpot.evaluate(); wallforce.evaluate(); } catch (std::exception &e) { diff --git a/src/LEPTON/lepton_utils.cpp b/src/LEPTON/lepton_utils.cpp index 89e69beddd6..c4e527d7d73 100644 --- a/src/LEPTON/lepton_utils.cpp +++ b/src/LEPTON/lepton_utils.cpp @@ -17,7 +17,6 @@ #include "lepton_utils.h" -#include "error.h" #include "input.h" #include "lammps.h" #include "pair_zbl_const.h" diff --git a/src/LEPTON/pair_lepton.cpp b/src/LEPTON/pair_lepton.cpp index a8af0ce576f..90003e90914 100644 --- a/src/LEPTON/pair_lepton.cpp +++ b/src/LEPTON/pair_lepton.cpp @@ -23,11 +23,12 @@ #include "force.h" #include "memory.h" #include "neigh_list.h" -#include "update.h" #include "Lepton.h" #include "lepton_utils.h" + #include +#include #include using namespace LAMMPS_NS; @@ -105,11 +106,17 @@ template void PairLepton::eval() std::vector pairforce; std::vector pairpot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); - pairforce.back().getVariableReference("r"); + has_ref.push_back(true); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -142,8 +149,7 @@ template void PairLepton::eval() if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - double &r_for = pairforce[idx].getVariableReference("r"); - r_for = r; + if (has_ref[idx]) pairforce[idx].getVariableReference("r") = r; const double fpair = -pairforce[idx].evaluate() / r * factor_lj; fxtmp += delx * fpair; @@ -157,7 +163,11 @@ template void PairLepton::eval() double evdwl = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } evdwl = pairpot[idx].evaluate() - offset[itype][jtype]; evdwl *= factor_lj; } @@ -229,8 +239,12 @@ void PairLepton::coeff(int narg, char **arg) auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp), functions); auto pairforce = parsed.differentiate("r").createCompiledExpression(); auto pairpot = parsed.createCompiledExpression(); - pairpot.getVariableReference("r") = 1.0; - pairforce.getVariableReference("r") = 1.0; + try { + pairpot.getVariableReference("r") = 1.0; + pairforce.getVariableReference("r") = 1.0; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential or force + } pairpot.evaluate(); pairforce.evaluate(); } catch (std::exception &e) { @@ -270,7 +284,11 @@ double PairLepton::init_one(int i, int j) try { auto expr = LeptonUtils::substitute(expressions[type2expression[i][j]], lmp); auto pairpot = Lepton::Parser::parse(expr, functions).createCompiledExpression(); - pairpot.getVariableReference("r") = cut[i][j]; + try { + pairpot.getVariableReference("r") = cut[i][j]; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } offset[i][j] = pairpot.evaluate(); } catch (std::exception &) { } @@ -429,9 +447,12 @@ double PairLepton::single(int /* i */, int /* j */, int itype, int jtype, double auto pairforce = parsed.differentiate("r").createCompiledExpression(); const double r = sqrt(rsq); - pairpot.getVariableReference("r") = r; - pairforce.getVariableReference("r") = r; - + try { + pairpot.getVariableReference("r") = r; + pairforce.getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential or force + } fforce = -pairforce.evaluate() / r * factor_lj; return (pairpot.evaluate() - offset[itype][jtype]) * factor_lj; } diff --git a/src/LEPTON/pair_lepton_coul.cpp b/src/LEPTON/pair_lepton_coul.cpp index 841565e8743..bb6b8ed55ff 100644 --- a/src/LEPTON/pair_lepton_coul.cpp +++ b/src/LEPTON/pair_lepton_coul.cpp @@ -21,14 +21,16 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "memory.h" #include "neigh_list.h" #include "neighbor.h" -#include "update.h" #include "Lepton.h" #include "lepton_utils.h" + +#include #include +#include +#include using namespace LAMMPS_NS; @@ -79,25 +81,30 @@ template void PairLeptonCoul::eval() std::vector pairforce; std::vector pairpot; - std::vector> have_q; + std::vector> has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back({true, true, true}); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back()[0] = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); - pairforce.back().getVariableReference("r"); - have_q.emplace_back(true, true); // check if there are references to charges + try { pairforce.back().getVariableReference("qi"); - } catch (std::exception &) { - have_q.back().first = false; + } catch (Lepton::Exception &) { + has_ref.back()[1] = false; } try { pairforce.back().getVariableReference("qj"); - } catch (std::exception &) { - have_q.back().second = false; + } catch (Lepton::Exception &) { + has_ref.back()[2] = false; } } } catch (std::exception &e) { @@ -130,9 +137,9 @@ template void PairLeptonCoul::eval() if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - pairforce[idx].getVariableReference("r") = r; - if (have_q[idx].first) pairforce[idx].getVariableReference("qi") = q2e * q[i]; - if (have_q[idx].second) pairforce[idx].getVariableReference("qj") = q2e * q[j]; + if (has_ref[idx][0]) pairforce[idx].getVariableReference("r") = r; + if (has_ref[idx][1]) pairforce[idx].getVariableReference("qi") = q2e * q[i]; + if (has_ref[idx][2]) pairforce[idx].getVariableReference("qj") = q2e * q[j]; const double fpair = -pairforce[idx].evaluate() / r * factor_coul; fxtmp += delx * fpair; @@ -146,9 +153,14 @@ template void PairLeptonCoul::eval() double ecoul = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; - if (have_q[idx].first) pairpot[idx].getVariableReference("qi") = q2e * q[i]; - if (have_q[idx].second) pairpot[idx].getVariableReference("qj") = q2e * q[j]; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } + if (has_ref[idx][1]) pairpot[idx].getVariableReference("qi") = q2e * q[i]; + if (has_ref[idx][2]) pairpot[idx].getVariableReference("qj") = q2e * q[j]; + ecoul = pairpot[idx].evaluate(); ecoul *= factor_coul; } @@ -249,18 +261,22 @@ double PairLeptonCoul::single(int i, int j, int itype, int jtype, double rsq, do const double r = sqrt(rsq); const double q2e = sqrt(force->qqrd2e); - pairpot.getVariableReference("r") = r; - pairforce.getVariableReference("r") = r; + try { + pairpot.getVariableReference("r") = r; + pairforce.getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential or force + } try { pairpot.getVariableReference("qi") = q2e * atom->q[i]; pairforce.getVariableReference("qi") = q2e * atom->q[i]; - } catch (std::exception &) { + } catch (Lepton::Exception &) { /* ignore */ } try { pairpot.getVariableReference("qj") = q2e * atom->q[j]; pairforce.getVariableReference("qj") = q2e * atom->q[j]; - } catch (std::exception &) { + } catch (Lepton::Exception &) { /* ignore */ } diff --git a/src/LEPTON/pair_lepton_sphere.cpp b/src/LEPTON/pair_lepton_sphere.cpp index 29514aed380..63b082774f8 100644 --- a/src/LEPTON/pair_lepton_sphere.cpp +++ b/src/LEPTON/pair_lepton_sphere.cpp @@ -21,14 +21,15 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "memory.h" #include "neigh_list.h" #include "neighbor.h" -#include "update.h" #include "Lepton.h" #include "lepton_utils.h" + +#include #include +#include using namespace LAMMPS_NS; @@ -77,25 +78,30 @@ template void PairLeptonSphere::eval() std::vector pairforce; std::vector pairpot; - std::vector> have_rad; + std::vector> has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back({true, true, true}); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back()[0] = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); - pairforce.back().getVariableReference("r"); - have_rad.emplace_back(true, true); - // check if there are references to charges + // check if there are references to radii + try { pairforce.back().getVariableReference("radi"); - } catch (std::exception &) { - have_rad.back().first = false; + } catch (Lepton::Exception &) { + has_ref.back()[1] = false; } try { pairforce.back().getVariableReference("radj"); - } catch (std::exception &) { - have_rad.back().second = false; + } catch (Lepton::Exception &) { + has_ref.back()[2] = false; } } } catch (std::exception &e) { @@ -128,9 +134,9 @@ template void PairLeptonSphere::eval() if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - pairforce[idx].getVariableReference("r") = r; - if (have_rad[idx].first) pairforce[idx].getVariableReference("radi") = radius[i]; - if (have_rad[idx].second) pairforce[idx].getVariableReference("radj") = radius[j]; + if (has_ref[idx][0]) pairforce[idx].getVariableReference("r") = r; + if (has_ref[idx][1]) pairforce[idx].getVariableReference("radi") = radius[i]; + if (has_ref[idx][2]) pairforce[idx].getVariableReference("radj") = radius[j]; const double fpair = -pairforce[idx].evaluate() / r * factor_lj; fxtmp += delx * fpair; @@ -144,9 +150,14 @@ template void PairLeptonSphere::eval() double evdwl = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; - if (have_rad[idx].first) pairpot[idx].getVariableReference("radi") = radius[i]; - if (have_rad[idx].second) pairpot[idx].getVariableReference("radj") = radius[j]; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } + if (has_ref[idx][1]) pairpot[idx].getVariableReference("radi") = radius[i]; + if (has_ref[idx][2]) pairpot[idx].getVariableReference("radj") = radius[j]; + evdwl = pairpot[idx].evaluate(); evdwl *= factor_lj; } @@ -211,19 +222,23 @@ double PairLeptonSphere::single(int i, int j, int itype, int jtype, double rsq, auto pairforce = parsed.differentiate("r").createCompiledExpression(); const double r = sqrt(rsq); - pairpot.getVariableReference("r") = r; - pairforce.getVariableReference("r") = r; + try { + pairpot.getVariableReference("r") = r; + pairforce.getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential or force + } try { pairpot.getVariableReference("radi") = atom->radius[i]; pairforce.getVariableReference("radi") = atom->radius[i]; - } catch (std::exception &) { - /* ignore */ + } catch (Lepton::Exception &) { + ; // ignore } try { pairpot.getVariableReference("radj") = atom->radius[j]; pairforce.getVariableReference("radj") = atom->radius[j]; - } catch (std::exception &) { - /* ignore */ + } catch (Lepton::Exception &) { + ; // ignore } fforce = -pairforce.evaluate() / r * factor_lj; diff --git a/src/MACHDYN/atom_vec_smd.cpp b/src/MACHDYN/atom_vec_smd.cpp index d1bae9ecb74..820527503c0 100644 --- a/src/MACHDYN/atom_vec_smd.cpp +++ b/src/MACHDYN/atom_vec_smd.cpp @@ -25,13 +25,15 @@ #include "atom_vec_smd.h" #include "atom.h" +#include "domain.h" +#include "memory.h" #include using namespace LAMMPS_NS; -#define NMAT_FULL 9 -#define NMAT_SYMM 6 +static constexpr int NMAT_FULL = 9; +static constexpr int NMAT_SYMM = 6; /* ---------------------------------------------------------------------- */ @@ -57,6 +59,8 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) atom->damage_flag = 1; atom->eff_plastic_strain_rate_flag = 1; + x0_hold = nullptr; + // 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 @@ -156,6 +160,13 @@ void AtomVecSMD::create_atom_post(int ilocal) void AtomVecSMD::data_atom_post(int ilocal) { esph[ilocal] = 0.0; + + // x and x0 are in Atoms section of data file + // reset x0 b/c x may have been modified in Atom::data_atoms() + // for PBC, shift, etc + // this means no need for read_data_general_to_restricted() method + // to rotate x0 for general triclinic + x0[ilocal][0] = x[ilocal][0]; x0[ilocal][1] = x[ilocal][1]; x0[ilocal][2] = x[ilocal][2]; @@ -177,3 +188,40 @@ void AtomVecSMD::data_atom_post(int ilocal) smd_data_9[ilocal][4] = 1.0; // yy smd_data_9[ilocal][8] = 1.0; // zz } + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on original coords x0 +------------------------------------------------------------------------- */ + +void AtomVecSMD::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + int nlocal = atom->nlocal; + memory->create(x0_hold,nlocal,3,"atomvec:x0_hold"); + if (nlocal) memcpy(&x0_hold[0][0],&x0[0][0],3*nlocal*sizeof(double)); + for (int i = 0; i < nlocal; i++) + domain->restricted_to_general_coords(x0[i]); + +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on original coords x0 +------------------------------------------------------------------------- */ + +void AtomVecSMD::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + if (!x0_hold) return; + + int nlocal = atom->nlocal; + memcpy(&x0[0][0],&x0_hold[0][0],3*nlocal*sizeof(double)); + memory->destroy(x0_hold); + x0_hold = nullptr; +} diff --git a/src/MACHDYN/atom_vec_smd.h b/src/MACHDYN/atom_vec_smd.h index 6ca7f08b4d1..47117c0b905 100644 --- a/src/MACHDYN/atom_vec_smd.h +++ b/src/MACHDYN/atom_vec_smd.h @@ -43,12 +43,16 @@ class AtomVecSMD : virtual public AtomVec { void force_clear(int, size_t) override; void create_atom_post(int) override; void data_atom_post(int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; private: tagint *molecule; 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; + + double **x0_hold; }; } // namespace LAMMPS_NS diff --git a/src/MACHDYN/fix_smd_adjust_dt.cpp b/src/MACHDYN/fix_smd_adjust_dt.cpp index d2728f10424..30006ec7cc8 100644 --- a/src/MACHDYN/fix_smd_adjust_dt.cpp +++ b/src/MACHDYN/fix_smd_adjust_dt.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/MACHDYN/fix_smd_tlsph_reference_configuration.cpp b/src/MACHDYN/fix_smd_tlsph_reference_configuration.cpp index b236952e603..72ad76eccdf 100644 --- a/src/MACHDYN/fix_smd_tlsph_reference_configuration.cpp +++ b/src/MACHDYN/fix_smd_tlsph_reference_configuration.cpp @@ -48,7 +48,7 @@ using namespace FixConst; using namespace SMD_Kernels; using namespace SMD_Math; -#define DELTA 16384 +static constexpr int DELTA = 16384; #define INSERT_PREDEFINED_CRACKS false diff --git a/src/MACHDYN/fix_smd_wall_surface.cpp b/src/MACHDYN/fix_smd_wall_surface.cpp index facc03d471a..25e76e1dab2 100644 --- a/src/MACHDYN/fix_smd_wall_surface.cpp +++ b/src/MACHDYN/fix_smd_wall_surface.cpp @@ -26,14 +26,15 @@ #include "text_file_reader.h" #include +#include #include using namespace LAMMPS_NS; using namespace FixConst; using namespace Eigen; using namespace std; -#define DELTA 16384 -#define EPSILON 1.0e-6 + +static constexpr double EPSILON = 1.0e-6; /* ---------------------------------------------------------------------- */ diff --git a/src/MACHDYN/pair_smd_hertz.cpp b/src/MACHDYN/pair_smd_hertz.cpp index bf526f5e4e4..99e8ae6426e 100644 --- a/src/MACHDYN/pair_smd_hertz.cpp +++ b/src/MACHDYN/pair_smd_hertz.cpp @@ -43,8 +43,6 @@ using namespace LAMMPS_NS; -#define SQRT2 1.414213562e0 - /* ---------------------------------------------------------------------- */ PairHertz::PairHertz(LAMMPS *lmp) : diff --git a/src/MACHDYN/pair_smd_tlsph.cpp b/src/MACHDYN/pair_smd_tlsph.cpp index 845fed33524..a1c8fbf1ea8 100644 --- a/src/MACHDYN/pair_smd_tlsph.cpp +++ b/src/MACHDYN/pair_smd_tlsph.cpp @@ -51,11 +51,9 @@ using namespace Eigen; using namespace LAMMPS_NS; using namespace SMD_Math; -#define JAUMANN false -#define DETF_MIN 0.2 // maximum compression deformation allow -#define DETF_MAX 2.0 // maximum tension deformation allowed -#define TLSPH_DEBUG 0 -#define PLASTIC_STRAIN_AVERAGE_WINDOW 100.0 +static constexpr bool JAUMANN = false; +static constexpr double DETF_MIN = 0.2; // maximum compression deformation allow +static constexpr double DETF_MAX = 2.0; // maximum tension deformation allowed /* ---------------------------------------------------------------------- */ diff --git a/src/MACHDYN/pair_smd_triangulated_surface.cpp b/src/MACHDYN/pair_smd_triangulated_surface.cpp index e1ebc2562de..dc777cc66fb 100644 --- a/src/MACHDYN/pair_smd_triangulated_surface.cpp +++ b/src/MACHDYN/pair_smd_triangulated_surface.cpp @@ -46,8 +46,6 @@ using namespace std; using namespace LAMMPS_NS; using namespace Eigen; -#define SQRT2 1.414213562e0 - /* ---------------------------------------------------------------------- */ PairTriSurf::PairTriSurf(LAMMPS *lmp) : diff --git a/src/MACHDYN/pair_smd_ulsph.cpp b/src/MACHDYN/pair_smd_ulsph.cpp index a06be48283c..20897a78529 100644 --- a/src/MACHDYN/pair_smd_ulsph.cpp +++ b/src/MACHDYN/pair_smd_ulsph.cpp @@ -48,7 +48,6 @@ using namespace SMD_Math; #include using namespace Eigen; -#define ARTIFICIAL_STRESS false #define FORMAT1 "%60s : %g\n" #define FORMAT2 "\n.............................. %s \n" diff --git a/src/MAKE/MACHINES/Makefile.bgq b/src/MAKE/MACHINES/Makefile.bgq deleted file mode 100644 index 4baecb9fc37..00000000000 --- a/src/MAKE/MACHINES/Makefile.bgq +++ /dev/null @@ -1,60 +0,0 @@ -# bgq = IBM Blue Gene/Q, multiple compiler options, native MPI, ALCF FFTW2 - -SHELL = /bin/bash -.SUFFIXES: .cpp .u - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section -# select which compiler by editing Makefile.bgq.details - -include ../MAKE/MACHINES/bgq.make.details - -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) $(DYN_LIB) -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) - @rm -f ../$(ARLIB) - $(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.frontier_kokkos b/src/MAKE/MACHINES/Makefile.frontier_kokkos index 86cddd12b77..b58a3d871c2 100644 --- a/src/MAKE/MACHINES/Makefile.frontier_kokkos +++ b/src/MAKE/MACHINES/Makefile.frontier_kokkos @@ -55,7 +55,7 @@ MPI_LIB = -L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_hsa MY_HIP_EXE = $(shell which hipcc) MY_HIP_PATH = $(dir ${MY_HIP_EXE}) -FFT_INC = -DFFT_HIPFFT +FFT_INC = -DFFT_KOKKOS_HIPFFT FFT_PATH = FFT_LIB = -L${MY_HIP_PATH}../lib -lhipfft diff --git a/src/MAKE/MACHINES/Makefile.perlmutter_kokkos b/src/MAKE/MACHINES/Makefile.perlmutter_kokkos index 43162b88ddc..cdf2daa4719 100644 --- a/src/MAKE/MACHINES/Makefile.perlmutter_kokkos +++ b/src/MAKE/MACHINES/Makefile.perlmutter_kokkos @@ -54,7 +54,7 @@ MPI_LIB = -L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_cud # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_CUFFT +FFT_INC = -DFFT_KOKKOS_CUFFT FFT_PATH = FFT_LIB = ${CRAY_CUDATOOLKIT_POST_LINK_OPTS} -lcufft diff --git a/src/MAKE/MACHINES/Makefile.summit_kokkos b/src/MAKE/MACHINES/Makefile.summit_kokkos index 557ebd22b2a..d554e09a5ad 100644 --- a/src/MAKE/MACHINES/Makefile.summit_kokkos +++ b/src/MAKE/MACHINES/Makefile.summit_kokkos @@ -57,7 +57,7 @@ MPI_LIB = -L${MY_MPI_PATH}../lib -lmpi_ibm # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_CUFFT +FFT_INC = -DFFT_KOKKOS_CUFFT FFT_PATH = FFT_LIB = -lcufft diff --git a/src/MAKE/MACHINES/Makefile.xe6 b/src/MAKE/MACHINES/Makefile.xe6 deleted file mode 100644 index 9dbe0ba73ef..00000000000 --- a/src/MAKE/MACHINES/Makefile.xe6 +++ /dev/null @@ -1,125 +0,0 @@ -# xe6 = Cray XE6, Cray CC, native MPI, FFTW - -SHELL = /bin/sh -.SUFFIXES: .cpp .d - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CC = CC -CCFLAGS = -fastsse -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = CC -LINKFLAGS = -O -LIB = -lstdc++ -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 = -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 = - -# library for loading shared objects (defaults to -ldl, should be empty on Windows) -# uncomment to change the default - -# override DYN_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) $(DYN_LIB) -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) - @rm -f ../$(ARLIB) - $(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/bgq.make.details b/src/MAKE/MACHINES/bgq.make.details deleted file mode 100644 index 0febd69d267..00000000000 --- a/src/MAKE/MACHINES/bgq.make.details +++ /dev/null @@ -1,125 +0,0 @@ -# multiple compiler options for BGQ - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -# uncomment one and only one of the following three lines -# to choose a compiler toolchain - -#COMPILER = GCC -#COMPILER = LLVM -COMPILER = XLC - -ifeq ($(COMPILER),XLC) -CC = /bgsys/drivers/ppcfloor/comm/xl.ndebug/bin/mpixlcxx_r -CCFLAGS = -O3 -qarch=qp -qtune=qp -qsmp=omp -qsimd=auto -qhot=level=2 -qprefetch -qunroll=yes -FC = /bgsys/drivers/ppcfloor/comm/xl.ndebug/bin/mpixlf90_r -FFLAGS = -O3 -qarch=qp -qtune=qp -qsimd=auto -qhot=level=2 -qprefetch -qunroll=yes -qsmp=omp -qextname -qnosave -DEPFLAGS = -M -qmakedep=gcc -endif - -ifeq ($(COMPILER),GCC) -CC = /bgsys/drivers/ppcfloor/comm/gcc.legacy/bin/mpicxx -CCFLAGS = -O3 -fopenmp -FC = /bgsys/drivers/ppcfloor/comm/gcc.legacy/bin/mpif90 -FFLAGS = -O3 -fopenmp -DEPFLAGS = -M -endif - -ifeq ($(COMPILER),LLVM) -#CC = bgclang++ -CC = /home/projects/llvm/mpi/bgclang/bin/mpiclang++ -CCFLAGS = -O3 -fopenmp -DEPFLAGS = -M -FC = /bin/false -FFLAGS = LLVM does not have a Fortran front-end! -endif - -LINK = $(CC) -LINKFLAGS = $(CCFLAGS) - -ifeq ($(COMPILER),XLC) - MASS_LIB = ${IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64 - XLF_LIB = ${IBM_MAIN_DIR}/xlf/bg/14.1/bglib64 - XLSMP_LIB = ${IBM_MAIN_DIR}/xlsmp/bg/3.1/bglib64 - LIB += -L${MASS_LIB} -L${XLF_LIB} -L${XLSMP_LIB} - LIB += -lmassv -lmass - LIB += -lxlf90_r -lxlsmp -lxlopt -lxlfmath -lxl -endif - -ifeq ($(COMPILER),GCC) -# libm is definitely slower than libmass... - LIB += -lm -lgfortran -endif - -ifeq ($(COMPILER),LLVM) - SLEEF_DIR = /home/projects/llvm/sleef - LIB += -L${SLEEF_DIR}/lib -lsleef -endif - -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc - -# BGQ should not use shared libraries - -SHFLAGS = -SHLIBFLAGS = - -# --------------------------------------------------------------------- -# 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 = -MPI_PATH = -MPI_LIB = - -MPI_INC += -DMPICH_SKIP_MPICXX -MPI_LIB += #/home/jhammond/OSPRI/branches/marpn/wrap/libmpiarbrpn.a - -# 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 = -I/soft/libraries/alcf/current/xl/FFTW2/include -DFFT_FFTW2 -DFFTW_SIZE -FFT_PATH = #/soft/libraries/alcf/current/xl/FFTW2 -FFT_LIB = -L/soft/libraries/alcf/current/xl/FFTW2/lib -ldfftw - -# 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 = - -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.kokkos_cuda_mpi b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi index e78be1acdcf..88c07fc2c51 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi +++ b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi @@ -57,7 +57,7 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_CUFFT +FFT_INC = -DFFT_KOKKOS_CUFFT FFT_PATH = FFT_LIB = -lcufft diff --git a/src/MANIFOLD/fix_nve_manifold_rattle.cpp b/src/MANIFOLD/fix_nve_manifold_rattle.cpp index b1efea951fb..dc0492dbe93 100644 --- a/src/MANIFOLD/fix_nve_manifold_rattle.cpp +++ b/src/MANIFOLD/fix_nve_manifold_rattle.cpp @@ -287,21 +287,21 @@ void FixNVEManifoldRattle::update_var_params() /* ----------------------------------------------------------------------------- ---------------------------------------------------------------------------*/ -int FixNVEManifoldRattle::dof(int /*igroup*/) +bigint FixNVEManifoldRattle::dof(int /*igroup*/) { int *mask = atom->mask; int nlocal = atom->nlocal; - int natoms = 0; + bigint natoms = 0; for (int i = 0; i < nlocal; ++i) { if (mask[i] & groupbit) ++natoms; } - int dofs; - MPI_Allreduce( &natoms, &dofs, 1, MPI_INT, MPI_SUM, world ); + bigint dofs; + MPI_Allreduce( &natoms, &dofs, 1, MPI_LMP_BIGINT, MPI_SUM, world ); // Make sure that, if there is just no or one atom, no dofs are subtracted, // since for the first atom already 3 dofs are subtracted because of the - // centre of mass corrections: + // center of mass corrections: if (dofs <= 1) dofs = 0; stats.dofs_removed = dofs; diff --git a/src/MANIFOLD/fix_nve_manifold_rattle.h b/src/MANIFOLD/fix_nve_manifold_rattle.h index 3eae9c4bc3a..7c9e302094b 100644 --- a/src/MANIFOLD/fix_nve_manifold_rattle.h +++ b/src/MANIFOLD/fix_nve_manifold_rattle.h @@ -75,7 +75,7 @@ class FixNVEManifoldRattle : public Fix { void init() override; void reset_dt() override; void end_of_step() override; - int dof(int) override; + bigint dof(int) override; void setup(int) override {} // Not needed for fixNVE but is for fixNVT double memory_usage() override; diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp index 129b9d2218c..41c8faf7523 100644 --- a/src/MANYBODY/pair_airebo.cpp +++ b/src/MANYBODY/pair_airebo.cpp @@ -41,8 +41,10 @@ using namespace LAMMPS_NS; using namespace MathSpecial; -#define TOL 1.0e-9 -#define PGDELTA 1 +static constexpr double TOL = 1.0e-9; +static constexpr int PGDELTA = 1; + +static const char *style[3] = {"airebo", "rebo", "airebo/morse"}; /* ---------------------------------------------------------------------- */ @@ -150,7 +152,7 @@ void PairAIREBO::allocate() void PairAIREBO::settings(int narg, char **arg) { if (narg != 1 && narg != 3 && narg != 4) - error->all(FLERR,"Illegal pair_style command"); + error->all(FLERR,"Illegal pair_style {} command", style[variant]); cutlj = utils::numeric(FLERR,arg[0],false,lmp); @@ -175,12 +177,7 @@ void PairAIREBO::coeff(int narg, char **arg) if (!allocated) allocate(); if (narg != 3 + atom->ntypes) - error->all(FLERR,"Incorrect args for pair coefficients"); - - // ensure I,J args are * * - - if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all(FLERR,"Incorrect args for pair coefficients"); + error->all(FLERR,"Incorrect number of args for pair coefficient."); // read args that map atom types to C and H // map[i] = which element (0,1) the Ith atom type is, -1 if "NULL" @@ -193,7 +190,7 @@ void PairAIREBO::coeff(int narg, char **arg) map[i-2] = 0; } else if (strcmp(arg[i],"H") == 0) { map[i-2] = 1; - } else error->all(FLERR,"Incorrect args for pair coefficients"); + } else error->all(FLERR,"Element {} not supported by pair style {}", arg[i], style[variant]); } // read potential file and initialize fitting splines @@ -228,13 +225,13 @@ void PairAIREBO::coeff(int narg, char **arg) void PairAIREBO::init_style() { if (atom->tag_enable == 0) - error->all(FLERR,"Pair style AIREBO requires atom IDs"); + error->all(FLERR,"Pair style {} requires atom IDs", style[variant]); if (force->newton_pair == 0) - error->all(FLERR,"Pair style AIREBO requires newton pair on"); + error->all(FLERR,"Pair style {} requires newton pair on", style[variant]); // need a full neighbor list, including neighbors of ghosts - neighbor->add_request(this,NeighConst::REQ_FULL|NeighConst::REQ_GHOST); + neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_GHOST); // local REBO neighbor list // create pages if first time or if neighbor pgsize/oneatom has changed diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp index 126544ddc5f..609e4efcf88 100644 --- a/src/MANYBODY/pair_comb.cpp +++ b/src/MANYBODY/pair_comb.cpp @@ -43,9 +43,8 @@ using namespace MathConst; using namespace MathExtra; using namespace MathSpecial; -#define DELTA 4 -#define PGDELTA 1 -#define MAXNEIGH 24 +static constexpr int DELTA = 4; +static constexpr int MAXNEIGH = 24; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_comb3.cpp b/src/MANYBODY/pair_comb3.cpp index a6a6ed37fd6..b4228dbb4f5 100644 --- a/src/MANYBODY/pair_comb3.cpp +++ b/src/MANYBODY/pair_comb3.cpp @@ -43,9 +43,8 @@ using namespace MathConst; using namespace MathExtra; using namespace MathSpecial; -#define DELTA 4 -#define PGDELTA 1 -#define MAXNEIGH 24 +static constexpr int DELTA = 4; +static constexpr int MAXNEIGH = 24; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index a3d4257cc2c..e4a0155ab9c 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -33,8 +33,6 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ PairEAM::PairEAM(LAMMPS *lmp) : Pair(lmp) @@ -150,6 +148,8 @@ void PairEAM::compute(int eflag, int vflag) evdwl = 0.0; ev_init(eflag,vflag); + int beyond_rhomax = 0; + // grow energy and fp arrays if necessary // need to be atom->nmax in length @@ -239,7 +239,10 @@ void PairEAM::compute(int eflag, int vflag) fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; if (eflag) { phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; - if (rho[i] > rhomax) phi += fp[i] * (rho[i]-rhomax); + if (rho[i] > rhomax) { + phi += fp[i] * (rho[i]-rhomax); + beyond_rhomax = 1; + } phi *= scale[type[i]][type[i]]; if (eflag_global) eng_vdwl += phi; if (eflag_atom) eatom[i] += phi; @@ -324,6 +327,16 @@ void PairEAM::compute(int eflag, int vflag) } } + if (eflag && (!exceeded_rhomax)) { + MPI_Allreduce(&beyond_rhomax, &exceeded_rhomax, 1, MPI_INT, MPI_SUM, world); + if (exceeded_rhomax) { + if (comm->me == 0) + error->warning(FLERR, + "A per-atom density exceeded rhomax of EAM potential table - " + "a linear extrapolation to the energy was made"); + } + } + if (vflag_fdotr) virial_fdotr_compute(); } @@ -426,6 +439,8 @@ void PairEAM::init_style() neighbor->add_request(this); embedstep = -1; + + exceeded_rhomax = 0; } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_eam.h b/src/MANYBODY/pair_eam.h index 67bbde570de..24221a07ceb 100644 --- a/src/MANYBODY/pair_eam.h +++ b/src/MANYBODY/pair_eam.h @@ -68,6 +68,9 @@ class PairEAM : public Pair { double **scale; bigint embedstep; // timestep, the embedding term was computed + int exceeded_rhomax; // global flag for whether rho[i] has exceeded rhomax + // on a step energy is computed - 0 = no, 1 = yes + // per-atom arrays double *rho, *fp; diff --git a/src/MANYBODY/pair_eam_cd.cpp b/src/MANYBODY/pair_eam_cd.cpp index 1746435fad4..798292eb1de 100644 --- a/src/MANYBODY/pair_eam_cd.cpp +++ b/src/MANYBODY/pair_eam_cd.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 // This sets the maximum line length in EAM input files. +static constexpr int MAXLINE = 1024; // This sets the maximum line length in EAM input files. PairEAMCD::PairEAMCD(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion) diff --git a/src/MANYBODY/pair_edip.cpp b/src/MANYBODY/pair_edip.cpp index 974dc9ab84d..1eac053ebdb 100644 --- a/src/MANYBODY/pair_edip.cpp +++ b/src/MANYBODY/pair_edip.cpp @@ -39,11 +39,9 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define DELTA 4 - -#define GRIDDENSITY 8000 -#define GRIDSTART 0.1 +static constexpr int DELTA = 4; +static constexpr int GRIDDENSITY = 8000; +static constexpr double GRIDSTART = 0.1; // max number of interaction per atom for f(Z) environment potential diff --git a/src/MANYBODY/pair_edip_multi.cpp b/src/MANYBODY/pair_edip_multi.cpp index 00be0ad8290..32e21861f3d 100644 --- a/src/MANYBODY/pair_edip_multi.cpp +++ b/src/MANYBODY/pair_edip_multi.cpp @@ -38,8 +38,7 @@ using namespace LAMMPS_NS; using namespace MathExtra; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int DELTA = 4; static const char cite_pair_edip[] = "pair edip/multi: doi:10.1103/PhysRevB.86.144118, doi:10.1088/0953-8984/22/3/035802\n\n" diff --git a/src/MANYBODY/pair_extep.cpp b/src/MANYBODY/pair_extep.cpp index 755b4d01323..7ed65f0f710 100644 --- a/src/MANYBODY/pair_extep.cpp +++ b/src/MANYBODY/pair_extep.cpp @@ -37,9 +37,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathExtra; -#define MAXLINE 1024 -#define DELTA 4 -#define PGDELTA 1 +static constexpr int DELTA = 4; +static constexpr int PGDELTA = 1; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_gw.cpp b/src/MANYBODY/pair_gw.cpp index 1fd98b80f01..471896851af 100644 --- a/src/MANYBODY/pair_gw.cpp +++ b/src/MANYBODY/pair_gw.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathExtra; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_gw_zbl.cpp b/src/MANYBODY/pair_gw_zbl.cpp index 5e61778c687..a08cf0907ff 100644 --- a/src/MANYBODY/pair_gw_zbl.cpp +++ b/src/MANYBODY/pair_gw_zbl.cpp @@ -32,8 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 1024 -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_lcbop.cpp b/src/MANYBODY/pair_lcbop.cpp index ed085c4b986..1e193632129 100644 --- a/src/MANYBODY/pair_lcbop.cpp +++ b/src/MANYBODY/pair_lcbop.cpp @@ -33,9 +33,9 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define TOL 1.0e-9 -#define PGDELTA 1 +static constexpr int MAXLINE = 1024; +static constexpr double TOL = 1.0e-9; +static constexpr int PGDELTA = 1; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_local_density.cpp b/src/MANYBODY/pair_local_density.cpp index 71a7e658d2a..da405e9118f 100644 --- a/src/MANYBODY/pair_local_density.cpp +++ b/src/MANYBODY/pair_local_density.cpp @@ -34,8 +34,6 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 - static const char cite_pair_local_density[] = "pair_style local/density command: doi:10.1063/1.4958629, doi:10.1021/acs.jpcb.7b12446\n\n" "@Article{Sanyal16,\n" diff --git a/src/MANYBODY/pair_meam_spline.cpp b/src/MANYBODY/pair_meam_spline.cpp index 1c17f434f21..e3d17f6fae5 100644 --- a/src/MANYBODY/pair_meam_spline.cpp +++ b/src/MANYBODY/pair_meam_spline.cpp @@ -46,6 +46,7 @@ #include #include +#include using namespace LAMMPS_NS; @@ -440,8 +441,6 @@ void PairMEAMSpline::coeff(int narg, char **arg) } } -#define MAXLINE 1024 - void PairMEAMSpline::read_file(const char* filename) { int nmultichoose2; // = (n+1)*n/2; diff --git a/src/MANYBODY/pair_meam_sw_spline.cpp b/src/MANYBODY/pair_meam_sw_spline.cpp index 3e3e813c5b2..a19e1cc0fa0 100644 --- a/src/MANYBODY/pair_meam_sw_spline.cpp +++ b/src/MANYBODY/pair_meam_sw_spline.cpp @@ -33,6 +33,7 @@ #include #include +#include using namespace LAMMPS_NS; @@ -384,8 +385,6 @@ void PairMEAMSWSpline::coeff(int narg, char **arg) set coeffs for one or more type pairs ------------------------------------------------------------------------- */ -#define MAXLINE 1024 - void PairMEAMSWSpline::read_file(const char* filename) { if (comm->me == 0) { diff --git a/src/MANYBODY/pair_nb3b_harmonic.cpp b/src/MANYBODY/pair_nb3b_harmonic.cpp index 5bc930c1860..51e554694cd 100644 --- a/src/MANYBODY/pair_nb3b_harmonic.cpp +++ b/src/MANYBODY/pair_nb3b_harmonic.cpp @@ -34,8 +34,8 @@ using namespace LAMMPS_NS; using MathConst::MY_PI; -#define DELTA 4 -#define SMALL 0.001 +static constexpr int DELTA = 4; +static constexpr double SMALL = 0.001; static const char *substyle[] = {"nb3n/harmonic", "nb3b/screened"}; diff --git a/src/MANYBODY/pair_nb3b_screened.cpp b/src/MANYBODY/pair_nb3b_screened.cpp index d66945d563d..9480ae9f15e 100644 --- a/src/MANYBODY/pair_nb3b_screened.cpp +++ b/src/MANYBODY/pair_nb3b_screened.cpp @@ -20,7 +20,7 @@ #include -#define SMALL 0.001 +static constexpr double SMALL = 0.001; using namespace LAMMPS_NS; diff --git a/src/MANYBODY/pair_polymorphic.cpp b/src/MANYBODY/pair_polymorphic.cpp index 03ef6cb49f2..535fb766bc8 100644 --- a/src/MANYBODY/pair_polymorphic.cpp +++ b/src/MANYBODY/pair_polymorphic.cpp @@ -38,10 +38,6 @@ using namespace LAMMPS_NS; using namespace MathExtra; -#define MAXLINE 1024 -#define DELTA 4 - - /* ---------------------------------------------------------------------- */ PairPolymorphic::PairParameters::PairParameters() diff --git a/src/MANYBODY/pair_rebomos.cpp b/src/MANYBODY/pair_rebomos.cpp new file mode 100644 index 00000000000..0941ca0a3ac --- /dev/null +++ b/src/MANYBODY/pair_rebomos.cpp @@ -0,0 +1,1123 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + References: + + This code: + Stewart J A and Spearot D E (2013) Atomistic simulations of nanoindentation on the basal plane of crystalline molybdenum disulfide. Modelling Simul. Mater. Sci. Eng. 21. + + Based on: + Liang T, Phillpot S R and Sinnott S B (2009) Parameterization of a reactive many-body potential for Mo2S systems. Phys. Rev. B79 245110. + Liang T, Phillpot S R and Sinnott S B (2012) Erratum: Parameterization of a reactive many-body potential for Mo-S systems. (Phys. Rev. B79 245110 (2009)) Phys. Rev. B85 199903(E). + + LAMMPS file contributing authors: James Stewart, Khanh Dang and Douglas Spearot (University of Arkansas) +------------------------------------------------------------------------- */ + +// clang-format on + +#include "pair_rebomos.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "math_special.h" +#include "memory.h" +#include "my_page.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "potential_file_reader.h" +#include "text_file_reader.h" + +#include +#include + +using namespace LAMMPS_NS; +using MathSpecial::cube; +using MathSpecial::powint; +using MathSpecial::square; + +static constexpr double TOL = 1.0e-9; +static constexpr int PGDELTA = 1; + +/* ---------------------------------------------------------------------- */ + +PairREBOMoS::PairREBOMoS(LAMMPS *lmp) : + Pair(lmp), lj1(nullptr), lj2(nullptr), lj3(nullptr), lj4(nullptr), ipage(nullptr), + REBO_numneigh(nullptr), REBO_firstneigh(nullptr), nM(nullptr), nS(nullptr) +{ + single_enable = 0; + restartinfo = 0; + one_coeff = 1; + ghostneigh = 1; + manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; + + cut3rebo = 0.0; + maxlocal = 0; + pgsize = oneatom = 0; +} + +// clang-format off + +/* ---------------------------------------------------------------------- + Check if allocated, since class can be destructed when incomplete +------------------------------------------------------------------------- */ + +PairREBOMoS::~PairREBOMoS() +{ + memory->destroy(REBO_numneigh); + memory->sfree(REBO_firstneigh); + delete[] ipage; + memory->destroy(nM); + memory->destroy(nS); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + memory->destroy(cutghost); + + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairREBOMoS::compute(int eflag, int vflag) +{ + ev_init(eflag,vflag); + + REBO_neigh(); + FREBO(eflag); + FLJ(eflag); + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairREBOMoS::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + memory->create(cutghost,n+1,n+1,"pair:cutghost"); + + // only sized by M,S = 2 types + + memory->create(lj1,2,2,"pair:lj1"); + memory->create(lj2,2,2,"pair:lj2"); + memory->create(lj3,2,2,"pair:lj3"); + memory->create(lj4,2,2,"pair:lj4"); + + map = new int[n+1]; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairREBOMoS::settings(int narg, char ** /* arg */) +{ + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairREBOMoS::coeff(int narg, char **arg) +{ + if (!allocated) allocate(); + + if (narg != 3 + atom->ntypes) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // read args that map atom types to Mo and S + // map[i] = which element (0,1) the Ith atom type is, -1 if NULL + + for (int i = 3; i < narg; i++) { + if (strcmp(arg[i],"NULL") == 0) { + map[i-2] = -1; + continue; + } else if (strcmp(arg[i],"Mo") == 0) { + map[i-2] = 0; + } else if (strcmp(arg[i],"M") == 0) { // backward compatibility + map[i-2] = 0; + } else if (strcmp(arg[i],"S") == 0) { + map[i-2] = 1; + } else error->all(FLERR,"Incorrect args for pair coefficients"); + } + + // read potential file and initialize fitting splines + + read_file(arg[2]); + + // clear setflag since coeff() called once with I,J = * * + + int n = atom->ntypes; + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + // set setflag i,j for type pairs where both are mapped to elements + + int count = 0; + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + if (map[i] >= 0 && map[j] >= 0) { + setflag[i][j] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairREBOMoS::init_style() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Pair style REBOMoS requires atom IDs"); + if (force->newton_pair == 0) + error->all(FLERR,"Pair style REBOMoS requires newton pair on"); + + // need a full neighbor list, including neighbors of ghosts + + neighbor->add_request(this,NeighConst::REQ_FULL|NeighConst::REQ_GHOST); + + // local REBO neighbor list + // create pages if first time or if neighbor pgsize/oneatom has changed + + int create = 0; + if (ipage == nullptr) create = 1; + if (pgsize != neighbor->pgsize) create = 1; + if (oneatom != neighbor->oneatom) create = 1; + + if (create) { + delete[] ipage; + pgsize = neighbor->pgsize; + oneatom = neighbor->oneatom; + + int nmypage= comm->nthreads; + ipage = new MyPage[nmypage]; + for (int i = 0; i < nmypage; i++) + ipage[i].init(oneatom,pgsize,PGDELTA); + } +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairREBOMoS::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + // convert to Mo,S types + + int ii = map[i]; + int jj = map[j]; + + // use Mo-Mo values for these cutoffs since M atoms are biggest + + // cut3rebo = 3 REBO distances + + cut3rebo = 3.0 * rcmax[0][0]; + + // cutghost = REBO cutoff used in REBO_neigh() for neighbors of ghosts + + cutghost[i][j] = rcmax[ii][jj]; + lj1[ii][jj] = 48.0 * epsilon[ii][jj] * powint(sigma[ii][jj],12); + lj2[ii][jj] = 24.0 * epsilon[ii][jj] * powint(sigma[ii][jj],6); + lj3[ii][jj] = 4.0 * epsilon[ii][jj] * powint(sigma[ii][jj],12); + lj4[ii][jj] = 4.0 * epsilon[ii][jj] * powint(sigma[ii][jj],6); + + cutghost[j][i] = cutghost[i][j]; + lj1[jj][ii] = lj1[ii][jj]; + lj2[jj][ii] = lj2[ii][jj]; + lj3[jj][ii] = lj3[ii][jj]; + lj4[jj][ii] = lj4[ii][jj]; + + return cut3rebo; +} + +/* ---------------------------------------------------------------------- + create REBO neighbor list from main neighbor list + REBO neighbor list stores neighbors of ghost atoms +------------------------------------------------------------------------- */ + +void PairREBOMoS::REBO_neigh() +{ + int i,j,ii,jj,n,allnum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,dS; + int *ilist,*jlist,*numneigh,**firstneigh; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + + if (atom->nmax > maxlocal) { + maxlocal = atom->nmax; + memory->destroy(REBO_numneigh); + memory->sfree(REBO_firstneigh); + memory->destroy(nM); + memory->destroy(nS); + memory->create(REBO_numneigh,maxlocal,"REBOMoS:numneigh"); + REBO_firstneigh = (int **) memory->smalloc(maxlocal*sizeof(int *), + "REBOMoS:firstneigh"); + memory->create(nM,maxlocal,"REBOMoS:nM"); + memory->create(nS,maxlocal,"REBOMoS:nS"); + } + + allnum = list->inum + list->gnum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // store all REBO neighs of owned and ghost atoms + // scan full neighbor list of I + + ipage->reset(); + + for (ii = 0; ii < allnum; ii++) { + i = ilist[ii]; + + n = 0; + neighptr = ipage->vget(); + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = map[type[i]]; + nM[i] = nS[i] = 0.0; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < rcmaxsq[itype][jtype]) { + neighptr[n++] = j; + if (jtype == 0) + nM[i] += Sp(sqrt(rsq),rcmin[itype][jtype],rcmax[itype][jtype],dS); + else + nS[i] += Sp(sqrt(rsq),rcmin[itype][jtype],rcmax[itype][jtype],dS); + } + } + + REBO_firstneigh[i] = neighptr; + REBO_numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } +} + +/* ---------------------------------------------------------------------- + REBO forces and energy +------------------------------------------------------------------------- */ + +void PairREBOMoS::FREBO(int eflag) +{ + int i,j,k,ii,inum,itype,jtype; + tagint itag, jtag; + double delx,dely,delz,evdwl,fpair,xtmp,ytmp,ztmp; + double rsq,rij,wij; + double Qij,Aij,alphaij,VR,pre,dVRdi,VA,bij,dVAdi,dVA; + double dwij,del[3]; + int *ilist,*REBO_neighs; + + evdwl = 0.0; + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + inum = list->inum; + ilist = list->ilist; + + // two-body interactions from REBO neighbor list, skip half of them + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + REBO_neighs = REBO_firstneigh[i]; + + for (k = 0; k < REBO_numneigh[i]; k++) { + j = REBO_neighs[k]; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + + jtype = map[type[j]]; + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + rij = sqrt(rsq); + wij = Sp(rij,rcmin[itype][jtype],rcmax[itype][jtype],dwij); + if (wij <= TOL) continue; + + Qij = Q[itype][jtype]; + Aij = A[itype][jtype]; + alphaij = alpha[itype][jtype]; + + VR = wij*(1.0+(Qij/rij)) * Aij*exp(-alphaij*rij); + pre = wij*Aij * exp(-alphaij*rij); + dVRdi = pre * ((-alphaij)-(Qij/rsq)-(Qij*alphaij/rij)); + dVRdi += VR/wij * dwij; + + VA = dVA = 0.0; + VA = -wij * BIJc[itype][jtype] * exp(-Beta[itype][jtype]*rij); + + dVA = -Beta[itype][jtype] * VA; + dVA += VA/wij * dwij; + + del[0] = delx; + del[1] = dely; + del[2] = delz; + bij = bondorder(i,j,del,rij,VA,f); + dVAdi = bij*dVA; + + fpair = -(dVRdi+dVAdi) / rij; + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + + if (eflag) evdwl = VR + bij*VA; + if (evflag) ev_tally(i,j,nlocal,/*newton_pair*/1,evdwl,0.0,fpair,delx,dely,delz); + } + } +} + +/* ---------------------------------------------------------------------- + compute LJ forces and energy +------------------------------------------------------------------------- */ + +void PairREBOMoS::FLJ(int eflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + tagint itag,jtag; + double evdwl,fpair,xtmp,ytmp,ztmp; + double rij,delij[3],rijsq; + double VLJ,dVLJ; + double vdw,dvdw; + double r2inv,r6inv; + int *ilist,*jlist,*numneigh,**firstneigh; + double c2,c3,dr,drp,r6; + + // I-J interaction from full neighbor list + // skip 1/2 of interactions since only consider each pair once + + evdwl = 0.0; + + double **x = atom->x; + double **f = atom->f; + tagint *tag = atom->tag; + int *type = atom->type; + int nlocal = atom->nlocal; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + jtype = map[type[j]]; + + delij[0] = xtmp - x[j][0]; + delij[1] = ytmp - x[j][1]; + delij[2] = ztmp - x[j][2]; + rijsq = delij[0]*delij[0] + delij[1]*delij[1] + delij[2]*delij[2]; + rij = sqrt(rijsq); + + // compute LJ forces and energy + + // Outside Rmax + if (rij > rcLJmax[itype][jtype] || rij < rcLJmin[itype][jtype]){ + VLJ = 0; + dVLJ = 0; + } + + // Inside Rmax and above 0.95*sigma + else if (rij <= rcLJmax[itype][jtype] && rij >= 0.95*sigma[itype][jtype]){ + r2inv = 1.0/rijsq; + r6inv = r2inv*r2inv*r2inv; + VLJ = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + dVLJ = -r6inv*(lj1[itype][jtype]*r6inv - lj2[itype][jtype])/rij; + } + + // Below 0.95*sigma + else if (rij < 0.95*sigma[itype][jtype] && rij >= rcLJmin[itype][jtype]){ + dr = 0.95*sigma[itype][jtype] - rcLJmin[itype][jtype]; + r6 = powint((sigma[itype][jtype]/(0.95*sigma[itype][jtype])),6); + vdw = 4*epsilon[itype][jtype]*r6*(r6 - 1.0); + dvdw = (-4*epsilon[itype][jtype]/(0.95*sigma[itype][jtype]))*r6*(12.0*r6 - 6.0); + c2 = ((3.0/dr)*vdw - dvdw)/dr; + c3 = (vdw/(dr*dr) - c2)/dr; + + drp = rij - rcLJmin[itype][jtype]; + VLJ = drp*drp*(drp*c3 + c2); + dVLJ = drp*(3.0*drp*c3 + 2.0*c2); + } + + fpair = -dVLJ/rij; + f[i][0] += delij[0]*fpair; + f[i][1] += delij[1]*fpair; + f[i][2] += delij[2]*fpair; + f[j][0] -= delij[0]*fpair; + f[j][1] -= delij[1]*fpair; + f[j][2] -= delij[2]*fpair; + + if (eflag) evdwl = VLJ; + if (evflag) ev_tally(i,j,nlocal,/*newton_pair*/1,evdwl,0.0,fpair,delij[0],delij[1],delij[2]); + + } + } +} + +/* ---------------------------------------------------------------------- + Bij function + + The bond order term modified the attractive portion of the REBO + potential based on the number of atoms around a specific pair + and the bond angle between sets of three atoms. + + The functions G(cos(theta)) and P(N) are evaluated and their + derivatives are also computed for use in the force calculation. +------------------------------------------------------------------------- */ + +double PairREBOMoS::bondorder(int i, int j, double rij[3], double rijmag, double VA, double **f) +{ + int atomi,atomj,atomk,atoml; + int k,l; + int itype, jtype, ktype, ltype; + double rik[3], rjl[3], rji[3], rki[3],rlj[3], dwjl, bij; + double NijM,NijS,NjiM,NjiS,wik,dwik,wjl; + double rikmag,rjlmag,cosjik,cosijl,g,tmp2; + double Etmp,pij,tmp,dwij,dS; + double dgdc,pji; + double dcosjikdri[3],dcosijldri[3],dcosjikdrk[3]; + double dp; + double dcosjikdrj[3],dcosijldrj[3],dcosijldrl[3]; + double fi[3],fj[3],fk[3],fl[3]; + double PijS, PjiS; + int *REBO_neighs; + + double **x = atom->x; + int *type = atom->type; + + atomi = i; + atomj = j; + itype = map[type[i]]; + jtype = map[type[j]]; + Sp(rijmag,rcmin[itype][jtype],rcmax[itype][jtype],dwij); + NijM = nM[i]; + NijS = nS[i]; + NjiM = nM[j]; + NjiS = nS[j]; + bij = 0.0; + tmp = 0.0; + tmp2 = 0.0; + dgdc = 0.0; + Etmp = 0.0; + + REBO_neighs = REBO_firstneigh[i]; + for (k = 0; k < REBO_numneigh[i]; k++) { + atomk = REBO_neighs[k]; + if (atomk != atomj) { + ktype = map[type[atomk]]; + rik[0] = x[atomi][0]-x[atomk][0]; + rik[1] = x[atomi][1]-x[atomk][1]; + rik[2] = x[atomi][2]-x[atomk][2]; + rikmag = sqrt((rik[0]*rik[0])+(rik[1]*rik[1])+(rik[2]*rik[2])); + wik = Sp(rikmag,rcmin[itype][ktype],rcmax[itype][ktype],dS); + cosjik = ((rij[0]*rik[0])+(rij[1]*rik[1])+(rij[2]*rik[2])) / (rijmag*rikmag); + cosjik = MIN(cosjik,1.0); + cosjik = MAX(cosjik,-1.0); + + // evaluate g and derivative dg + + g = gSpline(cosjik,itype,dgdc); + Etmp = Etmp+(wik*g); + } + } + + dp = 0.0; + PijS = PijSpline(NijM,NijS,itype,dp); + pij = 1.0/sqrt(1.0+Etmp+PijS); + tmp = -0.5*cube(pij); + + // derivative calculations + + REBO_neighs = REBO_firstneigh[i]; + for (k = 0; k < REBO_numneigh[i]; k++) { + atomk = REBO_neighs[k]; + if (atomk != atomj) { + ktype = map[type[atomk]]; + rik[0] = x[atomi][0]-x[atomk][0]; + rik[1] = x[atomi][1]-x[atomk][1]; + rik[2] = x[atomi][2]-x[atomk][2]; + rikmag = sqrt((rik[0]*rik[0])+(rik[1]*rik[1])+(rik[2]*rik[2])); + wik = Sp(rikmag,rcmin[itype][ktype],rcmax[itype][ktype],dwik); + cosjik = (rij[0]*rik[0] + rij[1]*rik[1] + rij[2]*rik[2]) / (rijmag*rikmag); + cosjik = MIN(cosjik,1.0); + cosjik = MAX(cosjik,-1.0); + + dcosjikdri[0] = ((rij[0]+rik[0])/(rijmag*rikmag)) - + (cosjik*((rij[0]/(rijmag*rijmag))+(rik[0]/(rikmag*rikmag)))); + dcosjikdri[1] = ((rij[1]+rik[1])/(rijmag*rikmag)) - + (cosjik*((rij[1]/(rijmag*rijmag))+(rik[1]/(rikmag*rikmag)))); + dcosjikdri[2] = ((rij[2]+rik[2])/(rijmag*rikmag)) - + (cosjik*((rij[2]/(rijmag*rijmag))+(rik[2]/(rikmag*rikmag)))); + dcosjikdrk[0] = (-rij[0]/(rijmag*rikmag)) + + (cosjik*(rik[0]/(rikmag*rikmag))); + dcosjikdrk[1] = (-rij[1]/(rijmag*rikmag)) + + (cosjik*(rik[1]/(rikmag*rikmag))); + dcosjikdrk[2] = (-rij[2]/(rijmag*rikmag)) + + (cosjik*(rik[2]/(rikmag*rikmag))); + dcosjikdrj[0] = (-rik[0]/(rijmag*rikmag)) + + (cosjik*(rij[0]/(rijmag*rijmag))); + dcosjikdrj[1] = (-rik[1]/(rijmag*rikmag)) + + (cosjik*(rij[1]/(rijmag*rijmag))); + dcosjikdrj[2] = (-rik[2]/(rijmag*rikmag)) + + (cosjik*(rij[2]/(rijmag*rijmag))); + + g = gSpline(cosjik,itype,dgdc); + tmp2 = VA*0.5*(tmp*wik*dgdc); + fj[0] = -tmp2*dcosjikdrj[0]; + fj[1] = -tmp2*dcosjikdrj[1]; + fj[2] = -tmp2*dcosjikdrj[2]; + fi[0] = -tmp2*dcosjikdri[0]; + fi[1] = -tmp2*dcosjikdri[1]; + fi[2] = -tmp2*dcosjikdri[2]; + fk[0] = -tmp2*dcosjikdrk[0]; + fk[1] = -tmp2*dcosjikdrk[1]; + fk[2] = -tmp2*dcosjikdrk[2]; + + // coordination forces + + // dwik forces (from partial derivative) + + tmp2 = VA*0.5*(tmp*dwik*g)/rikmag; + fi[0] -= tmp2*rik[0]; + fi[1] -= tmp2*rik[1]; + fi[2] -= tmp2*rik[2]; + fk[0] += tmp2*rik[0]; + fk[1] += tmp2*rik[1]; + fk[2] += tmp2*rik[2]; + + // PIJ forces (from coordination P(N) term) + + tmp2 = VA*0.5*(tmp*dp*dwik)/rikmag; + fi[0] -= tmp2*rik[0]; + fi[1] -= tmp2*rik[1]; + fi[2] -= tmp2*rik[2]; + fk[0] += tmp2*rik[0]; + fk[1] += tmp2*rik[1]; + fk[2] += tmp2*rik[2]; + + // dgdN forces are removed + + f[atomi][0] += fi[0]; f[atomi][1] += fi[1]; f[atomi][2] += fi[2]; + f[atomj][0] += fj[0]; f[atomj][1] += fj[1]; f[atomj][2] += fj[2]; + f[atomk][0] += fk[0]; f[atomk][1] += fk[1]; f[atomk][2] += fk[2]; + + if (vflag_either) { + rji[0] = -rij[0]; rji[1] = -rij[1]; rji[2] = -rij[2]; + rki[0] = -rik[0]; rki[1] = -rik[1]; rki[2] = -rik[2]; + v_tally3(atomi,atomj,atomk,fj,fk,rji,rki); + } + } + } + + // PIJ force contribution additional term + tmp2 = -VA*0.5*(tmp*dp*dwij)/rijmag; + + f[atomi][0] += rij[0]*tmp2; + f[atomi][1] += rij[1]*tmp2; + f[atomi][2] += rij[2]*tmp2; + f[atomj][0] -= rij[0]*tmp2; + f[atomj][1] -= rij[1]*tmp2; + f[atomj][2] -= rij[2]*tmp2; + + if (vflag_either) v_tally2(atomi,atomj,tmp2,rij); + + tmp = 0.0; + tmp2 = 0.0; + Etmp = 0.0; + + REBO_neighs = REBO_firstneigh[j]; + for (l = 0; l < REBO_numneigh[j]; l++) { + atoml = REBO_neighs[l]; + if (atoml != atomi) { + ltype = map[type[atoml]]; + rjl[0] = x[atomj][0]-x[atoml][0]; + rjl[1] = x[atomj][1]-x[atoml][1]; + rjl[2] = x[atomj][2]-x[atoml][2]; + rjlmag = sqrt((rjl[0]*rjl[0])+(rjl[1]*rjl[1])+(rjl[2]*rjl[2])); + wjl = Sp(rjlmag,rcmin[jtype][ltype],rcmax[jtype][ltype],dS); + cosijl = -1.0*((rij[0]*rjl[0])+(rij[1]*rjl[1])+(rij[2]*rjl[2])) / (rijmag*rjlmag); + cosijl = MIN(cosijl,1.0); + cosijl = MAX(cosijl,-1.0); + + // evaluate g and derivative dg + + g = gSpline(cosijl,jtype,dgdc); + Etmp = Etmp+(wjl*g); + } + } + + dp = 0.0; + PjiS = PijSpline(NjiM,NjiS,jtype,dp); + pji = 1.0/sqrt(1.0+Etmp+PjiS); + tmp = -0.5*cube(pji); + + REBO_neighs = REBO_firstneigh[j]; + for (l = 0; l < REBO_numneigh[j]; l++) { + atoml = REBO_neighs[l]; + if (atoml != atomi) { + ltype = map[type[atoml]]; + rjl[0] = x[atomj][0]-x[atoml][0]; + rjl[1] = x[atomj][1]-x[atoml][1]; + rjl[2] = x[atomj][2]-x[atoml][2]; + rjlmag = sqrt((rjl[0]*rjl[0])+(rjl[1]*rjl[1])+(rjl[2]*rjl[2])); + wjl = Sp(rjlmag,rcmin[jtype][ltype],rcmax[jtype][ltype],dwjl); + cosijl = (-1.0*((rij[0]*rjl[0])+(rij[1]*rjl[1])+(rij[2]*rjl[2]))) / (rijmag*rjlmag); + cosijl = MIN(cosijl,1.0); + cosijl = MAX(cosijl,-1.0); + + dcosijldri[0] = (-rjl[0]/(rijmag*rjlmag)) - (cosijl*rij[0]/(rijmag*rijmag)); + dcosijldri[1] = (-rjl[1]/(rijmag*rjlmag)) - (cosijl*rij[1]/(rijmag*rijmag)); + dcosijldri[2] = (-rjl[2]/(rijmag*rjlmag)) - (cosijl*rij[2]/(rijmag*rijmag)); + dcosijldrj[0] = ((-rij[0]+rjl[0])/(rijmag*rjlmag)) + + (cosijl*((rij[0]/square(rijmag))-(rjl[0]/(rjlmag*rjlmag)))); + dcosijldrj[1] = ((-rij[1]+rjl[1])/(rijmag*rjlmag)) + + (cosijl*((rij[1]/square(rijmag))-(rjl[1]/(rjlmag*rjlmag)))); + dcosijldrj[2] = ((-rij[2]+rjl[2])/(rijmag*rjlmag)) + + (cosijl*((rij[2]/square(rijmag))-(rjl[2]/(rjlmag*rjlmag)))); + dcosijldrl[0] = (rij[0]/(rijmag*rjlmag))+(cosijl*rjl[0]/(rjlmag*rjlmag)); + dcosijldrl[1] = (rij[1]/(rijmag*rjlmag))+(cosijl*rjl[1]/(rjlmag*rjlmag)); + dcosijldrl[2] = (rij[2]/(rijmag*rjlmag))+(cosijl*rjl[2]/(rjlmag*rjlmag)); + + // evaluate g and derivatives dg + + g = gSpline(cosijl,jtype,dgdc); + tmp2 = VA*0.5*(tmp*wjl*dgdc); + fi[0] = -tmp2*dcosijldri[0]; + fi[1] = -tmp2*dcosijldri[1]; + fi[2] = -tmp2*dcosijldri[2]; + fj[0] = -tmp2*dcosijldrj[0]; + fj[1] = -tmp2*dcosijldrj[1]; + fj[2] = -tmp2*dcosijldrj[2]; + fl[0] = -tmp2*dcosijldrl[0]; + fl[1] = -tmp2*dcosijldrl[1]; + fl[2] = -tmp2*dcosijldrl[2]; + + // coordination forces + + // dwik forces (from partial derivative) + + tmp2 = VA*0.5*(tmp*dwjl*g)/rjlmag; + fj[0] -= tmp2*rjl[0]; + fj[1] -= tmp2*rjl[1]; + fj[2] -= tmp2*rjl[2]; + fl[0] += tmp2*rjl[0]; + fl[1] += tmp2*rjl[1]; + fl[2] += tmp2*rjl[2]; + + // PIJ forces (coordination) + + tmp2 = VA*0.5*(tmp*dp*dwjl)/rjlmag; + fj[0] -= tmp2*rjl[0]; + fj[1] -= tmp2*rjl[1]; + fj[2] -= tmp2*rjl[2]; + fl[0] += tmp2*rjl[0]; + fl[1] += tmp2*rjl[1]; + fl[2] += tmp2*rjl[2]; + + // dgdN forces are removed + + f[atomi][0] += fi[0]; f[atomi][1] += fi[1]; f[atomi][2] += fi[2]; + f[atomj][0] += fj[0]; f[atomj][1] += fj[1]; f[atomj][2] += fj[2]; + f[atoml][0] += fl[0]; f[atoml][1] += fl[1]; f[atoml][2] += fl[2]; + + if (vflag_either) { + rlj[0] = -rjl[0]; rlj[1] = -rjl[1]; rlj[2] = -rjl[2]; + v_tally3(atomi,atomj,atoml,fi,fl,rij,rlj); + } + } + } + + // PIJ force contribution additional term + + tmp2 = -VA*0.5*(tmp*dp*dwij)/rijmag; + f[atomi][0] += rij[0]*tmp2; + f[atomi][1] += rij[1]*tmp2; + f[atomi][2] += rij[2]*tmp2; + f[atomj][0] -= rij[0]*tmp2; + f[atomj][1] -= rij[1]*tmp2; + f[atomj][2] -= rij[2]*tmp2; + + if (vflag_either) v_tally2(atomi,atomj,tmp2,rij); + + bij = (0.5*(pij+pji)); + return bij; +} + +/* ---------------------------------------------------------------------- + G calculation +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + read REBO potential file +------------------------------------------------------------------------- */ + +void PairREBOMoS::read_file(char *filename) +{ + // REBO Parameters (Mo-S REBO) + + double rcmin_MM,rcmin_MS,rcmin_SS,rcmax_MM,rcmax_MS,rcmax_SS; + double Q_MM,Q_MS,Q_SS,alpha_MM,alpha_MS,alpha_SS,A_MM,A_MS,A_SS; + double BIJc_MM1,BIJc_MS1,BIJc_SS1; + double Beta_MM1,Beta_MS1,Beta_SS1; + double M_bg0,M_bg1,M_bg2,M_bg3,M_bg4,M_bg5,M_bg6; + double S_bg0,S_bg1,S_bg2,S_bg3,S_bg4,S_bg5,S_bg6; + double M_b0,M_b1,M_b2,M_b3,M_b4,M_b5,M_b6; + double S_b0,S_b1,S_b2,S_b3,S_b4,S_b5,S_b6; + double M_a0,M_a1,M_a2,M_a3; + double S_a0,S_a1,S_a2,S_a3; + + // LJ Parameters (Mo-S REBO) + + double epsilon_MM,epsilon_SS; + double sigma_MM,sigma_SS; + + // read file on proc 0 + + if (comm->me == 0) { + PotentialFileReader reader(lmp, filename, "rebomos"); + + // read parameters + + std::vector params { + &rcmin_MM, + &rcmin_MS, + &rcmin_SS, + &rcmax_MM, + &rcmax_MS, + &rcmax_SS, + &Q_MM, + &Q_MS, + &Q_SS, + &alpha_MM, + &alpha_MS, + &alpha_SS, + &A_MM, + &A_MS, + &A_SS, + &BIJc_MM1, + &BIJc_MS1, + &BIJc_SS1, + &Beta_MM1, + &Beta_MS1, + &Beta_SS1, + &M_b0, + &M_b1, + &M_b2, + &M_b3, + &M_b4, + &M_b5, + &M_b6, + &M_bg0, + &M_bg1, + &M_bg2, + &M_bg3, + &M_bg4, + &M_bg5, + &M_bg6, + &S_b0, + &S_b1, + &S_b2, + &S_b3, + &S_b4, + &S_b5, + &S_b6, + &S_bg0, + &S_bg1, + &S_bg2, + &S_bg3, + &S_bg4, + &S_bg5, + &S_bg6, + &M_a0, + &M_a1, + &M_a2, + &M_a3, + &S_a0, + &S_a1, + &S_a2, + &S_a3, + + // LJ parameters + &epsilon_MM, + &epsilon_SS, + &sigma_MM, + &sigma_SS, + }; + + try { + for (auto ¶m : params) { + *param = reader.next_double(); + } + } catch (TokenizerException &e) { + error->one(FLERR, "reading rebomos potential file {}\nREASON: {}\n", filename, e.what()); + } catch (FileReaderException &fre) { + error->one(FLERR, "reading rebomos potential file {}\nREASON: {}\n", filename, fre.what()); + } + + // store read-in values in arrays + + // REBO + + rcmin[0][0] = rcmin_MM; + rcmin[0][1] = rcmin_MS; + rcmin[1][0] = rcmin[0][1]; + rcmin[1][1] = rcmin_SS; + + rcmax[0][0] = rcmax_MM; + rcmax[0][1] = rcmax_MS; + rcmax[1][0] = rcmax[0][1]; + rcmax[1][1] = rcmax_SS; + + rcmaxsq[0][0] = rcmax[0][0]*rcmax[0][0]; + rcmaxsq[1][0] = rcmax[1][0]*rcmax[1][0]; + rcmaxsq[0][1] = rcmax[0][1]*rcmax[0][1]; + rcmaxsq[1][1] = rcmax[1][1]*rcmax[1][1]; + + Q[0][0] = Q_MM; + Q[0][1] = Q_MS; + Q[1][0] = Q[0][1]; + Q[1][1] = Q_SS; + + alpha[0][0] = alpha_MM; + alpha[0][1] = alpha_MS; + alpha[1][0] = alpha[0][1]; + alpha[1][1] = alpha_SS; + + A[0][0] = A_MM; + A[0][1] = A_MS; + A[1][0] = A[0][1]; + A[1][1] = A_SS; + + BIJc[0][0] = BIJc_MM1; + BIJc[0][1] = BIJc_MS1; + BIJc[1][0] = BIJc_MS1; + BIJc[1][1] = BIJc_SS1; + + Beta[0][0] = Beta_MM1; + Beta[0][1] = Beta_MS1; + Beta[1][0] = Beta_MS1; + Beta[1][1] = Beta_SS1; + + b0[0] = M_b0; + b1[0] = M_b1; + b2[0] = M_b2; + b3[0] = M_b3; + b4[0] = M_b4; + b5[0] = M_b5; + b6[0] = M_b6; + + bg0[0] = M_bg0; + bg1[0] = M_bg1; + bg2[0] = M_bg2; + bg3[0] = M_bg3; + bg4[0] = M_bg4; + bg5[0] = M_bg5; + bg6[0] = M_bg6; + + b0[1] = S_b0; + b1[1] = S_b1; + b2[1] = S_b2; + b3[1] = S_b3; + b4[1] = S_b4; + b5[1] = S_b5; + b6[1] = S_b6; + + bg0[1] = S_bg0; + bg1[1] = S_bg1; + bg2[1] = S_bg2; + bg3[1] = S_bg3; + bg4[1] = S_bg4; + bg5[1] = S_bg5; + bg6[1] = S_bg6; + + a0[0] = M_a0; + a1[0] = M_a1; + a2[0] = M_a2; + a3[0] = M_a3; + + a0[1] = S_a0; + a1[1] = S_a1; + a2[1] = S_a2; + a3[1] = S_a3; + + // LJ + + sigma[0][0] = sigma_MM; + sigma[0][1] = (sigma_MM + sigma_SS)/2; + sigma[1][0] = sigma[0][1]; + sigma[1][1] = sigma_SS; + + epsilon[0][0] = epsilon_MM; + epsilon[0][1] = sqrt(epsilon_MM*epsilon_SS); + epsilon[1][0] = epsilon[0][1]; + epsilon[1][1] = epsilon_SS; + + rcLJmin[0][0] = rcmin_MM; + rcLJmin[0][1] = rcmin_MS; + rcLJmin[1][0] = rcmin[0][1]; + rcLJmin[1][1] = rcmin_SS; + + rcLJmax[0][0] = 2.5*sigma[0][0]; + rcLJmax[0][1] = 2.5*sigma[0][1]; + rcLJmax[1][0] = rcLJmax[0][1]; + rcLJmax[1][1] = 2.5*sigma[1][1]; + } + + // broadcast read-in and setup values + + MPI_Bcast(&rcmin[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&rcmax[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&rcmaxsq[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&rcmaxp[0][0],4,MPI_DOUBLE,0,world); + + MPI_Bcast(&Q[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&alpha[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&A[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&BIJc[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&Beta[0][0],4,MPI_DOUBLE,0,world); + + MPI_Bcast(&b0[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b1[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b2[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b3[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b4[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b5[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&b6[0],2,MPI_DOUBLE,0,world); + + MPI_Bcast(&a0[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&a1[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&a2[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&a3[0],2,MPI_DOUBLE,0,world); + + MPI_Bcast(&bg0[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg1[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg2[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg3[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg4[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg5[0],2,MPI_DOUBLE,0,world); + MPI_Bcast(&bg6[0],2,MPI_DOUBLE,0,world); + + MPI_Bcast(&rcLJmin[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&rcLJmax[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&epsilon[0][0],4,MPI_DOUBLE,0,world); + MPI_Bcast(&sigma[0][0],4,MPI_DOUBLE,0,world); +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double PairREBOMoS::memory_usage() +{ + double bytes = 0.0; + bytes += (double)maxlocal * sizeof(int); + bytes += (double)maxlocal * sizeof(int *); + + for (int i = 0; i < comm->nthreads; i++) + bytes += ipage[i].size(); + + bytes += 3.0 * maxlocal * sizeof(double); + return bytes; +} diff --git a/src/MANYBODY/pair_rebomos.h b/src/MANYBODY/pair_rebomos.h new file mode 100644 index 00000000000..856a52ca815 --- /dev/null +++ b/src/MANYBODY/pair_rebomos.h @@ -0,0 +1,216 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 PAIR_CLASS +// clang-format off +PairStyle(rebomos,PairREBOMoS); +// clang-format on +#else + +#ifndef LMP_PAIR_REBOMOS_H +#define LMP_PAIR_REBOMOS_H + +#include "math_const.h" +#include "pair.h" + +#include + +namespace LAMMPS_NS { + +class PairREBOMoS : public Pair { + public: + PairREBOMoS(class LAMMPS *); + ~PairREBOMoS() override; + void compute(int, int) override; + void settings(int, char **) override; + void coeff(int, char **) override; + void init_style() override; + double init_one(int, int) override; + double memory_usage() override; + + protected: + double **lj1, **lj2, **lj3, **lj4; // pre-computed LJ coeffs for M,S types + double cut3rebo; // maximum distance for 3rd REBO neigh + + int maxlocal; // size of numneigh, firstneigh arrays + int pgsize; // size of neighbor page + int oneatom; // max # of neighbors for one atom + MyPage *ipage; // neighbor list pages + int *REBO_numneigh; // # of pair neighbors for each atom + int **REBO_firstneigh; // ptr to 1st neighbor of each atom + + double *nM, *nS; // sum of weighting fns with REBO neighs + + double rcmin[2][2], rcmax[2][2], rcmaxsq[2][2], rcmaxp[2][2]; + double Q[2][2], alpha[2][2], A[2][2], BIJc[2][2], Beta[2][2]; + double b0[2], b1[2], b2[2], b3[2], b4[2], b5[2], b6[2]; + double bg0[2], bg1[2], bg2[2], bg3[2], bg4[2], bg5[2], bg6[2]; + double a0[2], a1[2], a2[2], a3[2]; + double rcLJmin[2][2], rcLJmax[2][2]; + double epsilon[2][2], sigma[2][2]; + + void REBO_neigh(); + void FREBO(int); + void FLJ(int); + + double bondorder(int, int, double *, double, double, double **); + + inline double gSpline(const double costh, const int typei, double &dgdc) const + { + const double b0i = b0[typei]; + const double b1i = b1[typei]; + const double b2i = b2[typei]; + const double b3i = b3[typei]; + const double b4i = b4[typei]; + const double b5i = b5[typei]; + const double b6i = b6[typei]; + double g = 0.0; + + if (costh >= -1.0 && costh < 0.5) { + g = b6i * costh; + double dg = 6.0 * b6i * costh; + g += b5i; + dg += 5.0 * b5i; + g *= costh; + dg *= costh; + g += b4i; + dg += 4.0 * b4i; + g *= costh; + dg *= costh; + g += b3i; + dg += 3.0 * b3i; + g *= costh; + dg *= costh; + g += b2i; + dg += 2.0 * b2i; + g *= costh; + dg *= costh; + g += b1i; + dg += b1i; + g *= costh; + g += b0i; + dgdc = dg; + + } else if (costh >= 0.5 && costh <= 1.0) { + double gcos = b6i * costh; + double dgcos = 6.0 * b6i * costh; + gcos += b5i; + dgcos += 5.0 * b5i; + gcos *= costh; + dgcos *= costh; + gcos += b4i; + dgcos += 4.0 * b4i; + gcos *= costh; + dgcos *= costh; + gcos += b3i; + dgcos += 3.0 * b3i; + gcos *= costh; + dgcos *= costh; + gcos += b2i; + dgcos += 2.0 * b2i; + gcos *= costh; + dgcos *= costh; + gcos += b1i; + dgcos += b1i; + gcos *= costh; + gcos += b0i; + + const double bg0i = bg0[typei]; + const double bg1i = bg1[typei]; + const double bg2i = bg2[typei]; + const double bg3i = bg3[typei]; + const double bg4i = bg4[typei]; + const double bg5i = bg5[typei]; + const double bg6i = bg6[typei]; + double gamma = bg6i * costh; + double dgamma = 6.0 * bg6i * costh; + gamma += bg5i; + dgamma += 5.0 * bg5i; + gamma *= costh; + dgamma *= costh; + gamma += bg4i; + dgamma += 4.0 * bg4i; + gamma *= costh; + dgamma *= costh; + gamma += bg3i; + dgamma += 3.0 * bg3i; + gamma *= costh; + dgamma *= costh; + gamma += bg2i; + dgamma += 2.0 * bg2i; + gamma *= costh; + dgamma *= costh; + gamma += bg1i; + dgamma += bg1i; + gamma *= costh; + gamma += bg0i; + + const double tmp = MathConst::MY_2PI * (costh - 0.5); + const double psi = 0.5 * (1 - cos(tmp)); + const double dpsi = MathConst::MY_PI * sin(tmp); + g = gcos + psi * (gamma - gcos); + dgdc = dgcos + dpsi * (gamma - gcos) + psi * (dgamma - dgcos); + } else { + dgdc = 0.0; + } + return g; + } + + /* ---------------------------------------------------------------------- + Pij calculation + ------------------------------------------------------------------------- */ + + inline double PijSpline(const double NM, const double NS, const int typei, double &dp) const + { + const double N = NM + NS; + + dp = -a0[typei] + a1[typei] * a2[typei] * exp(-a2[typei] * N); + return -a0[typei] * (N - 1) - a1[typei] * exp(-a2[typei] * N) + a3[typei]; + } + + void read_file(char *); + void allocate(); + + // ---------------------------------------------------------------------- + // S'(t) and S(t) cutoff functions + // added to header for inlining + // ---------------------------------------------------------------------- + + /* ---------------------------------------------------------------------- + cutoff function Sprime + return cutoff and dX = derivative + no side effects + ------------------------------------------------------------------------- */ + + inline double Sp(double Xij, double Xmin, double Xmax, double &dX) const + { + double cutoff; + + const double t = (Xij - Xmin) / (Xmax - Xmin); + if (t <= 0.0) { + cutoff = 1.0; + dX = 0.0; + } else if (t >= 1.0) { + cutoff = 0.0; + dX = 0.0; + } else { + cutoff = 0.5 * (1.0 + cos(t * MathConst::MY_PI)); + dX = (-0.5 * MathConst::MY_PI * sin(t * MathConst::MY_PI)) / (Xmax - Xmin); + } + return cutoff; + }; +}; +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp index 540fd8772c2..18b642967cb 100644 --- a/src/MANYBODY/pair_sw.cpp +++ b/src/MANYBODY/pair_sw.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_sw_angle_table.cpp b/src/MANYBODY/pair_sw_angle_table.cpp index 21f1967c0d8..12592f4af64 100644 --- a/src/MANYBODY/pair_sw_angle_table.cpp +++ b/src/MANYBODY/pair_sw_angle_table.cpp @@ -26,7 +26,6 @@ #include "math_const.h" #include "memory.h" #include "neigh_list.h" -#include "neighbor.h" #include "table_file_reader.h" #include "potential_file_reader.h" @@ -39,7 +38,7 @@ using MathConst::DEG2RAD; using MathConst::MY_PI; using MathConst::RAD2DEG; -#define DELTA 4 +static constexpr int DELTA = 4; enum { LINEAR, SPLINE }; diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp index c7c45bc8657..e3c8c834167 100644 --- a/src/MANYBODY/pair_tersoff.cpp +++ b/src/MANYBODY/pair_tersoff.cpp @@ -40,7 +40,7 @@ using namespace MathConst; using namespace MathSpecial; using namespace MathExtra; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_mod.cpp b/src/MANYBODY/pair_tersoff_mod.cpp index 010ff8df876..f4ae623baeb 100644 --- a/src/MANYBODY/pair_tersoff_mod.cpp +++ b/src/MANYBODY/pair_tersoff_mod.cpp @@ -35,7 +35,7 @@ using namespace MathConst; using namespace MathExtra; using namespace MathSpecial; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_mod_c.cpp b/src/MANYBODY/pair_tersoff_mod_c.cpp index bdec854c413..e7fef3ccfa4 100644 --- a/src/MANYBODY/pair_tersoff_mod_c.cpp +++ b/src/MANYBODY/pair_tersoff_mod_c.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_table.cpp b/src/MANYBODY/pair_tersoff_table.cpp index 325542f97ee..b2aec2653c5 100644 --- a/src/MANYBODY/pair_tersoff_table.cpp +++ b/src/MANYBODY/pair_tersoff_table.cpp @@ -39,18 +39,16 @@ using namespace LAMMPS_NS; using MathConst::MY_PI; -#define MAXLINE 1024 -#define DELTA 4 - -#define GRIDSTART 0.1 -#define GRIDDENSITY_FCUTOFF 5000 -#define GRIDDENSITY_EXP 12000 -#define GRIDDENSITY_GTETA 12000 -#define GRIDDENSITY_BIJ 7500 +static constexpr int DELTA = 4; +static constexpr double GRIDSTART = 0.1; +static constexpr int GRIDDENSITY_FCUTOFF = 5000; +static constexpr int GRIDDENSITY_EXP = 12000; +static constexpr int GRIDDENSITY_GTETA = 12000; +static constexpr int GRIDDENSITY_BIJ = 7500; // max number of interaction per atom for environment potential -#define leadingDimensionInteractionList 64 +static constexpr int leadingDimensionInteractionList = 64; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_tersoff_zbl.cpp b/src/MANYBODY/pair_tersoff_zbl.cpp index daf2718cb1a..9c4dabc219c 100644 --- a/src/MANYBODY/pair_tersoff_zbl.cpp +++ b/src/MANYBODY/pair_tersoff_zbl.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_threebody_table.cpp b/src/MANYBODY/pair_threebody_table.cpp index 57f7021816c..20b26edbfab 100644 --- a/src/MANYBODY/pair_threebody_table.cpp +++ b/src/MANYBODY/pair_threebody_table.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; using MathConst::MY_PI; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_vashishta.cpp b/src/MANYBODY/pair_vashishta.cpp index 531f15d2638..79df1f36d7e 100644 --- a/src/MANYBODY/pair_vashishta.cpp +++ b/src/MANYBODY/pair_vashishta.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- */ diff --git a/src/MC/fix_bond_break.cpp b/src/MC/fix_bond_break.cpp index 6589f93e239..bb3e725c961 100644 --- a/src/MC/fix_bond_break.cpp +++ b/src/MC/fix_bond_break.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTA 16 +static constexpr int DELTA = 16; /* ---------------------------------------------------------------------- */ diff --git a/src/MC/fix_bond_create.cpp b/src/MC/fix_bond_create.cpp index adecc9f2521..8922bde55fb 100644 --- a/src/MC/fix_bond_create.cpp +++ b/src/MC/fix_bond_create.cpp @@ -34,8 +34,8 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define BIG 1.0e20 -#define DELTA 16 +static constexpr double BIG = 1.0e20; +static constexpr int DELTA = 16; /* ---------------------------------------------------------------------- */ diff --git a/src/MC/fix_charge_regulation.cpp b/src/MC/fix_charge_regulation.cpp index a828f276ead..43585130951 100644 --- a/src/MC/fix_charge_regulation.cpp +++ b/src/MC/fix_charge_regulation.cpp @@ -46,6 +46,7 @@ #include #include +#include #include using namespace LAMMPS_NS; @@ -66,9 +67,9 @@ static const char cite_fix_charge_regulation[] = enum{CONSTANT,EQUAL}; // parsing input variables // large energy value used to signal overlap -#define MAXENERGYSIGNAL 1.0e100 -#define MAXENERGYTEST 1.0e50 -#define SMALL 0.0000001 +static constexpr double MAXENERGYSIGNAL = 1.0e100; +static constexpr double MAXENERGYTEST = 1.0e50; +static constexpr double SMALL = 0.0000001; #define NA_RHO0 0.602214 // Avogadro's constant times reference concentration (N_A * mol / liter) [nm^-3] /* ---------------------------------------------------------------------- */ @@ -191,6 +192,11 @@ int FixChargeRegulation::setmask() { void FixChargeRegulation::init() { + if (!atom->mass) error->all(FLERR, "Fix charge/regulation requires per atom type masses"); + if (atom->rmass_flag && (comm->me == 0)) + error->warning(FLERR, "Fix charge/regulation will use per atom type masses for " + "velocity initialization"); + triclinic = domain->triclinic; int ipe = modify->find_compute("thermo_pe"); c_pe = modify->compute[ipe]; diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp index 2e29b403fd1..bd7e46b3d19 100644 --- a/src/MC/fix_gcmc.cpp +++ b/src/MC/fix_gcmc.cpp @@ -45,6 +45,7 @@ #include #include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -52,14 +53,14 @@ using namespace MathConst; // large energy value used to signal overlap -#define MAXENERGYSIGNAL 1.0e100 +static constexpr double MAXENERGYSIGNAL = 1.0e100; // this must be lower than MAXENERGYSIGNAL // by a large amount, so that it is still // less than total energy when negative // energy contributions are added to MAXENERGYSIGNAL -#define MAXENERGYTEST 1.0e50 +static constexpr double MAXENERGYTEST = 1.0e50; enum { EXCHATOM, EXCHMOL }; // exchmode enum { NONE, MOVEATOM, MOVEMOL }; // movemode @@ -463,6 +464,10 @@ int FixGCMC::setmask() void FixGCMC::init() { + if (!atom->mass) error->all(FLERR, "Fix gcmc requires per atom type masses"); + if (atom->rmass_flag && (comm->me == 0)) + error->warning(FLERR, "Fix gcmc will use per atom type masses for velocity initialization"); + triclinic = domain->triclinic; // set index and check validity of region diff --git a/src/MC/fix_mol_swap.cpp b/src/MC/fix_mol_swap.cpp index a47cf039d16..f496d4a9c5d 100644 --- a/src/MC/fix_mol_swap.cpp +++ b/src/MC/fix_mol_swap.cpp @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/MC/fix_sgcmc.cpp b/src/MC/fix_sgcmc.cpp index a70f3240db2..77ead0479fa 100644 --- a/src/MC/fix_sgcmc.cpp +++ b/src/MC/fix_sgcmc.cpp @@ -235,11 +235,13 @@ int FixSemiGrandCanonicalMC::setmask() *********************************************************************/ void FixSemiGrandCanonicalMC::init() { - // Make sure the user has defined only one Monte-Carlo fix. - int count = 0; - for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"sgcmc") == 0) count++; - if (count > 1) error->all(FLERR, "More than one fix sgcmc defined."); + if (!atom->mass) error->all(FLERR, "Fix sgcmc requires per atom type masses"); + if (atom->rmass_flag && (comm->me == 0)) + error->warning(FLERR, "Fix sgcmc will use per atom type masses for velocity initialization"); + + // Make sure the user has defined only one Semi-Grand Monte-Carlo fix. + if (modify->get_fix_by_style("sgcmc").size() > 1) + error->all(FLERR, "More than one fix sgcmc defined."); // Save a pointer to the EAM potential. pairEAM = dynamic_cast(force->pair); @@ -248,13 +250,12 @@ void FixSemiGrandCanonicalMC::init() utils::logmesg(lmp, " SGC - Using naive total energy calculation for MC -> SLOW!\n"); if (comm->nprocs > 1) - error->all(FLERR, "Can not run fix vcsgc with naive total energy calculation and more than one MPI process."); + error->all(FLERR, "Can not run fix sgcmc with naive total energy calculation " + "and more than one MPI process."); - // Create a compute that will provide the total energy of the system. + // Get reference to a compute that will provide the total energy of the system. // This is needed by computeTotalEnergy(). - char* id_pe = (char*)"thermo_pe"; - int ipe = modify->find_compute(id_pe); - compute_pe = modify->compute[ipe]; + compute_pe = modify->get_compute_by_id("thermo_pe"); } interactionRadius = force->pair->cutforce; if (comm->me == 0) utils::logmesg(lmp, " SGC - Interaction radius: {}\n", interactionRadius); @@ -370,8 +371,7 @@ void FixSemiGrandCanonicalMC::doMC() // Use a random number to choose the new species if there are three or more atom types. newSpecies = (int)(localRandom->uniform() * (atom->ntypes-1)) + 1; if (newSpecies >= oldSpecies) newSpecies++; - } - else { + } else { // If there are only two atom types, then the decision is clear. newSpecies = (oldSpecies == 1) ? 2 : 1; } @@ -391,8 +391,7 @@ void FixSemiGrandCanonicalMC::doMC() if (serialMode && kappa != 0.0) { for (int i = 2; i <= atom->ntypes; i++) dm += (deltamu[i] + kappa / atom->natoms * (2.0 * speciesCounts[i] + deltaN[i])) * deltaN[i]; - } - else { + } else { for (int i = 2; i <= atom->ntypes; i++) dm += deltamu[i] * deltaN[i]; } @@ -433,8 +432,7 @@ void FixSemiGrandCanonicalMC::doMC() // Update global species counters. for (int i = 1; i <= atom->ntypes; i++) speciesCounts[i] += deltaNGlobal[i]; - } - else if (serialMode) { + } else if (serialMode) { // Update the local species counters. for (int i = 1; i <= atom->ntypes; i++) speciesCounts[i] += deltaN[i]; @@ -447,8 +445,7 @@ void FixSemiGrandCanonicalMC::doMC() else flipAtomGeneric(selectedAtom, oldSpecies, newSpecies); nAcceptedSwapsLocal++; - } - else { + } else { nRejectedSwapsLocal++; } diff --git a/src/MC/fix_widom.cpp b/src/MC/fix_widom.cpp index 7869b213a06..9871dc8f606 100644 --- a/src/MC/fix_widom.cpp +++ b/src/MC/fix_widom.cpp @@ -45,12 +45,12 @@ #include #include +#include using namespace LAMMPS_NS; using namespace FixConst; using MathConst::MY_2PI; -#define MAXENERGYTEST 1.0e50 enum { EXCHATOM, EXCHMOL }; // exchmode /* ---------------------------------------------------------------------- */ @@ -281,6 +281,10 @@ int FixWidom::setmask() void FixWidom::init() { + if (!atom->mass) error->all(FLERR, "Fix widom requires per atom type masses"); + if (atom->rmass_flag && (comm->me == 0)) + error->warning(FLERR, "Fix widom will use per atom type masses for velocity initialization"); + triclinic = domain->triclinic; // set index and check validity of region diff --git a/src/MC/pair_dsmc.cpp b/src/MC/pair_dsmc.cpp index 4773ac7653f..1c152906b39 100644 --- a/src/MC/pair_dsmc.cpp +++ b/src/MC/pair_dsmc.cpp @@ -271,6 +271,8 @@ void PairDSMC::coeff(int narg, char **arg) void PairDSMC::init_style() { + if (!atom->mass) error->all(FLERR, "Pair style dsmc requires per atom type masses"); + ncellsx = ncellsy = ncellsz = 1; while (((domain->boxhi[0] - domain->boxlo[0])/ncellsx) > max_cell_size) ncellsx++; diff --git a/src/MDI/fix_mdi_engine.cpp b/src/MDI/fix_mdi_engine.cpp index 0494d08b2d4..fe896d906fd 100644 --- a/src/MDI/fix_mdi_engine.cpp +++ b/src/MDI/fix_mdi_engine.cpp @@ -19,7 +19,6 @@ #include "fix_mdi_engine.h" #include "error.h" -#include "update.h" #include "mdi_engine.h" diff --git a/src/MDI/fix_mdi_qm.cpp b/src/MDI/fix_mdi_qm.cpp index ff2c667f1ce..46071c5c903 100644 --- a/src/MDI/fix_mdi_qm.cpp +++ b/src/MDI/fix_mdi_qm.cpp @@ -22,12 +22,14 @@ #include "modify.h" #include "update.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; enum { NATIVE, REAL, METAL }; // LAMMPS units which MDI supports -#define MAXELEMENT 118 +static constexpr int MAXELEMENT = 118; // prototype for non-class compare function for sorting QM IDs diff --git a/src/MDI/fix_mdi_qmmm.cpp b/src/MDI/fix_mdi_qmmm.cpp index 958b5ec3121..d45290811fa 100644 --- a/src/MDI/fix_mdi_qmmm.cpp +++ b/src/MDI/fix_mdi_qmmm.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include "fix_mdi_qmmm.h" + #include "atom.h" #include "comm.h" #include "domain.h" @@ -25,13 +26,16 @@ #include "pair.h" #include "update.h" +#include +#include + using namespace LAMMPS_NS; using namespace FixConst; enum { NATIVE, REAL, METAL }; // LAMMPS units which MDI supports enum { DIRECT, POTENTIAL }; // mode of QMMM coupling -#define MAXELEMENT 118 +static constexpr int MAXELEMENT = 118; // prototype for non-class compare function for sorting QM IDs diff --git a/src/MDI/mdi_command.h b/src/MDI/mdi_command.h index 88e1901ab10..0bdfe812796 100644 --- a/src/MDI/mdi_command.h +++ b/src/MDI/mdi_command.h @@ -21,7 +21,7 @@ CommandStyle(mdi,MDICommand); #define LMP_MDI_COMMAND_H #include "command.h" -#include "mdi.h" +#include namespace LAMMPS_NS { diff --git a/src/MDI/mdi_engine.cpp b/src/MDI/mdi_engine.cpp index f7025549cdb..4f69e814f5b 100644 --- a/src/MDI/mdi_engine.cpp +++ b/src/MDI/mdi_engine.cpp @@ -25,12 +25,10 @@ #include "error.h" #include "fix_mdi_engine.h" #include "force.h" -#include "group.h" #include "input.h" #include "integrate.h" #include "irregular.h" #include "library.h" -#include "library_mdi.h" #include "memory.h" #include "min.h" #include "modify.h" @@ -54,7 +52,7 @@ enum { DEFAULT, MD, OPT }; // top-level MDI engine modes enum { TYPE, CHARGE, MASS, COORD, VELOCITY, FORCE, ADDFORCE }; -#define MAXELEMENT 118 +static constexpr int MAXELEMENT = 118; /* ---------------------------------------------------------------------- trigger LAMMPS to start acting as an MDI engine @@ -697,7 +695,7 @@ void MDIEngine::mdi_md() if (strcmp(mdicmd, "EXIT") == 0) return; // run one step at a time forever - // driver triggers exit with @ command other than @COORDS,@FORCES,@ENDSTEP + // driver triggers exit with @ command other than @COORDS,@FORCES,@ENDSTEP,@ update->integrate->setup(1); @@ -713,7 +711,7 @@ void MDIEngine::mdi_md() update->integrate->run(1); if (strcmp(mdicmd, "@COORDS") != 0 && strcmp(mdicmd, "@FORCES") != 0 && - strcmp(mdicmd, "@ENDSTEP") != 0) + strcmp(mdicmd, "@ENDSTEP") != 0 && strcmp(mdicmd, "@") != 0) break; } diff --git a/src/MDI/mdi_plugin.cpp b/src/MDI/mdi_plugin.cpp index 92b78b6afbd..6294292229c 100644 --- a/src/MDI/mdi_plugin.cpp +++ b/src/MDI/mdi_plugin.cpp @@ -21,9 +21,7 @@ #include "error.h" #include "input.h" #include "memory.h" -#include "modify.h" -#include #include #include diff --git a/src/MEAM/meam.h b/src/MEAM/meam.h index 5a131bdc345..7aca094912e 100644 --- a/src/MEAM/meam.h +++ b/src/MEAM/meam.h @@ -17,7 +17,7 @@ #include #include -constexpr int maxelt = 5; +constexpr int MAXELT = 8; namespace LAMMPS_NS { class Memory; @@ -88,30 +88,30 @@ class MEAM { // stheta_meam = sin(theta/2) in radian used in line, zigzag, and trimer reference structures // ctheta_meam = cos(theta/2) in radian used in line, zigzag, and trimer reference structures - double Ec_meam[maxelt][maxelt], re_meam[maxelt][maxelt]; - double A_meam[maxelt], alpha_meam[maxelt][maxelt], rho0_meam[maxelt]; - double delta_meam[maxelt][maxelt]; - double beta0_meam[maxelt], beta1_meam[maxelt]; - double beta2_meam[maxelt], beta3_meam[maxelt]; - double t0_meam[maxelt], t1_meam[maxelt]; - double t2_meam[maxelt], t3_meam[maxelt]; - double rho_ref_meam[maxelt]; - int ibar_meam[maxelt], ielt_meam[maxelt]; - lattice_t lattce_meam[maxelt][maxelt]; - int nn2_meam[maxelt][maxelt]; - int zbl_meam[maxelt][maxelt]; - int eltind[maxelt][maxelt]; + double Ec_meam[MAXELT][MAXELT], re_meam[MAXELT][MAXELT]; + double A_meam[MAXELT], alpha_meam[MAXELT][MAXELT], rho0_meam[MAXELT]; + double delta_meam[MAXELT][MAXELT]; + double beta0_meam[MAXELT], beta1_meam[MAXELT]; + double beta2_meam[MAXELT], beta3_meam[MAXELT]; + double t0_meam[MAXELT], t1_meam[MAXELT]; + double t2_meam[MAXELT], t3_meam[MAXELT]; + double rho_ref_meam[MAXELT]; + int ibar_meam[MAXELT], ielt_meam[MAXELT]; + lattice_t lattce_meam[MAXELT][MAXELT]; + int nn2_meam[MAXELT][MAXELT]; + int zbl_meam[MAXELT][MAXELT]; + int eltind[MAXELT][MAXELT]; int neltypes; double **phir; double **phirar, **phirar1, **phirar2, **phirar3, **phirar4, **phirar5, **phirar6; - double attrac_meam[maxelt][maxelt], repuls_meam[maxelt][maxelt]; + double attrac_meam[MAXELT][MAXELT], repuls_meam[MAXELT][MAXELT]; - double Cmin_meam[maxelt][maxelt][maxelt]; - double Cmax_meam[maxelt][maxelt][maxelt]; - double rc_meam, delr_meam, ebound_meam[maxelt][maxelt]; + double Cmin_meam[MAXELT][MAXELT][MAXELT]; + double Cmax_meam[MAXELT][MAXELT][MAXELT]; + double rc_meam, delr_meam, ebound_meam[MAXELT][MAXELT]; int augt1, ialloy, mix_ref_t, erose_form; int emb_lin_neg, bkgd_dyn; double gsmooth_factor; @@ -124,8 +124,8 @@ class MEAM { // MS-MEAM parameters - double t1m_meam[maxelt], t2m_meam[maxelt], t3m_meam[maxelt]; - double beta1m_meam[maxelt], beta2m_meam[maxelt], beta3m_meam[maxelt]; + double t1m_meam[MAXELT], t2m_meam[MAXELT], t3m_meam[MAXELT]; + double beta1m_meam[MAXELT], beta2m_meam[MAXELT], beta3m_meam[MAXELT]; //int msmeamflag; // made public for pair style settings public: @@ -142,8 +142,8 @@ class MEAM { double *scrfcn, *dscrfcn, *fcpair; //angle for trimer, zigzag, line reference structures - double stheta_meam[maxelt][maxelt]; - double ctheta_meam[maxelt][maxelt]; + double stheta_meam[MAXELT][MAXELT]; + double ctheta_meam[MAXELT][MAXELT]; protected: // meam_funcs.cpp diff --git a/src/MEAM/meam_force.cpp b/src/MEAM/meam_force.cpp index 23230e0fbc8..6fc3fd762fd 100644 --- a/src/MEAM/meam_force.cpp +++ b/src/MEAM/meam_force.cpp @@ -65,11 +65,11 @@ void MEAM::meam_force(int i, int eflag_global, int eflag_atom, int vflag_global, double rhoa2mj,drhoa2mj,rhoa2mi,drhoa2mi; double rhoa3mj, drhoa3mj, rhoa3mi, drhoa3mi; double arg1i1m, arg1j1m, arg1i2m, arg1j2m, arg1i3m, arg1j3m, arg3i3m, arg3j3m; - double drho1mdr1, drho1mdr2, drho1mds1, drho1mds2; + double drho1mdr1, drho1mdr2; double drho1mdrm1[3], drho1mdrm2[3]; - double drho2mdr1, drho2mdr2, drho2mds1, drho2mds2; + double drho2mdr1, drho2mdr2; double drho2mdrm1[3], drho2mdrm2[3]; - double drho3mdr1, drho3mdr2, drho3mds1, drho3mds2; + double drho3mdr1, drho3mdr2; double drho3mdrm1[3], drho3mdrm2[3]; third = 1.0 / 3.0; @@ -527,78 +527,75 @@ void MEAM::meam_force(int i, int eflag_global, int eflag_atom, int vflag_global, drho3ds2 = a3 * rhoa3i * arg1j3 - a3a * rhoa3i * arg3j3; if (msmeamflag) { - drho1mds1 = a1 * rhoa1mj * arg1i1m; - drho1mds2 = a1 * rhoa1mi * arg1j1m; - drho2mds1 = a2 * rhoa2mj * arg1i2m - 2.0 / 3.0 * arho2mb[i] * rhoa2mj; - drho2mds2 = a2 * rhoa2mi * arg1j2m - 2.0 / 3.0 * arho2mb[j] * rhoa2mi; - drho3mds1 = a3 * rhoa3mj * arg1i3m - a3a * rhoa3mj * arg3i3m; - drho3mds2 = a3 * rhoa3mi * arg1j3m - a3a * rhoa3mi * arg3j3m; - drho3mds1 *= -1; - drho3mds2 *= -1; - } else { - drho1mds1 = 0.0; - drho1mds2 = 0.0; - drho2mds1 = 0.0; - drho2mds2 = 0.0; - drho3mds1 = 0.0; - drho3mds2 = 0.0; - } - - if (ialloy == 1) { - a1i = fdiv_zero(rhoa0j, tsq_ave[i][0]); - a1j = fdiv_zero(rhoa0i, tsq_ave[j][0]); - a2i = fdiv_zero(rhoa0j, tsq_ave[i][1]); - a2j = fdiv_zero(rhoa0i, tsq_ave[j][1]); - a3i = fdiv_zero(rhoa0j, tsq_ave[i][2]); - a3j = fdiv_zero(rhoa0i, tsq_ave[j][2]); - - dt1ds1 = a1i * (t1mj - t1i * MathSpecial::square(t1mj)); - dt1ds2 = a1j * (t1mi - t1j * MathSpecial::square(t1mi)); - dt2ds1 = a2i * (t2mj - t2i * MathSpecial::square(t2mj)); - dt2ds2 = a2j * (t2mi - t2j * MathSpecial::square(t2mi)); - dt3ds1 = a3i * (t3mj - t3i * MathSpecial::square(t3mj)); - dt3ds2 = a3j * (t3mi - t3j * MathSpecial::square(t3mi)); - - } else if (ialloy == 2) { + const double drho1mds1 = -a1 * rhoa1mj * arg1i1m; + const double drho1mds2 = -a1 * rhoa1mi * arg1j1m; + const double drho2mds1 = a2 * rhoa2mj * arg1i2m - 2.0 / 3.0 * arho2mb[i] * rhoa2mj; + const double drho2mds2 = a2 * rhoa2mi * arg1j2m - 2.0 / 3.0 * arho2mb[j] * rhoa2mi; + const double drho3mds1 = -a3 * rhoa3mj * arg1i3m + a3a * rhoa3mj * arg3i3m; + const double drho3mds2 = -a3 * rhoa3mi * arg1j3m + a3a * rhoa3mi * arg3j3m; + + t1i = 1.0; + t2i = 1.0; + t3i = 1.0; + t1j = 1.0; + t2j = 1.0; + t3j = 1.0; + dt1dr1 = 0.0; + dt1dr2 = 0.0; + dt2dr1 = 0.0; + dt2dr2 = 0.0; + dt3dr1 = 0.0; + dt3dr2 = 0.0; - dt1ds1 = 0.0; - dt1ds2 = 0.0; - dt2ds1 = 0.0; - dt2ds2 = 0.0; - dt3ds1 = 0.0; - dt3ds2 = 0.0; + // these formulae are simplifed by substituting t=1, dt=0 from above + drhods1 = dgamma1[i] * drho0ds1 + dgamma2[i] + * ((drho1ds1 - drho1mds1) + (drho2ds1 - drho2mds1) + (drho3ds1 - drho3mds1)); + drhods2 = dgamma1[j] * drho0ds2 + dgamma2[j] + * ((drho1ds2 - drho1mds2) + (drho2ds2 - drho2mds2) + (drho3ds2 - drho3mds2)); } else { - ai = 0.0; - if (!iszero(rho0[i])) - ai = rhoa0j / rho0[i]; - aj = 0.0; - if (!iszero(rho0[j])) - aj = rhoa0i / rho0[j]; - - dt1ds1 = ai * (t1mj - t1i); - dt1ds2 = aj * (t1mi - t1j); - dt2ds1 = ai * (t2mj - t2i); - dt2ds2 = aj * (t2mi - t2j); - dt3ds1 = ai * (t3mj - t3i); - dt3ds2 = aj * (t3mi - t3j); - } + if (ialloy == 1) { + + a1i = fdiv_zero(rhoa0j, tsq_ave[i][0]); + a1j = fdiv_zero(rhoa0i, tsq_ave[j][0]); + a2i = fdiv_zero(rhoa0j, tsq_ave[i][1]); + a2j = fdiv_zero(rhoa0i, tsq_ave[j][1]); + a3i = fdiv_zero(rhoa0j, tsq_ave[i][2]); + a3j = fdiv_zero(rhoa0i, tsq_ave[j][2]); + + dt1ds1 = a1i * (t1mj - t1i * MathSpecial::square(t1mj)); + dt1ds2 = a1j * (t1mi - t1j * MathSpecial::square(t1mi)); + dt2ds1 = a2i * (t2mj - t2i * MathSpecial::square(t2mj)); + dt2ds2 = a2j * (t2mi - t2j * MathSpecial::square(t2mi)); + dt3ds1 = a3i * (t3mj - t3i * MathSpecial::square(t3mj)); + dt3ds2 = a3j * (t3mi - t3j * MathSpecial::square(t3mi)); + + } else if (ialloy == 2) { + + dt1ds1 = 0.0; + dt1ds2 = 0.0; + dt2ds1 = 0.0; + dt2ds2 = 0.0; + dt3ds1 = 0.0; + dt3ds2 = 0.0; + + } else { + + ai = 0.0; + if (!iszero(rho0[i])) ai = rhoa0j / rho0[i]; + aj = 0.0; + if (!iszero(rho0[j])) aj = rhoa0i / rho0[j]; + + dt1ds1 = ai * (t1mj - t1i); + dt1ds2 = aj * (t1mi - t1j); + dt2ds1 = ai * (t2mj - t2i); + dt2ds2 = aj * (t2mi - t2j); + dt3ds1 = ai * (t3mj - t3i); + dt3ds2 = aj * (t3mi - t3j); + } - if (msmeamflag) { - drhods1 = dgamma1[i] * drho0ds1 + - dgamma2[i] * (dt1ds1 * rho1[i] + t1i * (drho1ds1 - drho1mds1) + - dt2ds1 * rho2[i] + t2i * (drho2ds1 - drho2mds1) + - dt3ds1 * rho3[i] + t3i * (drho3ds1 - drho3mds1)) - - dgamma3[i] * (shpi[0] * dt1ds1 + shpi[1] * dt2ds1 + shpi[2] * dt3ds1); - drhods2 = dgamma1[j] * drho0ds2 + - dgamma2[j] * (dt1ds2 * rho1[j] + t1j * (drho1ds2 - drho1mds2) + - dt2ds2 * rho2[j] + t2j * (drho2ds2 - drho2mds2) + - dt3ds2 * rho3[j] + t3j * (drho3ds2 - drho3mds2)) - - dgamma3[j] * (shpj[0] * dt1ds2 + shpj[1] * dt2ds2 + shpj[2] * dt3ds2); - } - else { drhods1 = dgamma1[i] * drho0ds1 + dgamma2[i] * (dt1ds1 * rho1[i] + t1i * drho1ds1 + dt2ds1 * rho2[i] + t2i * drho2ds1 + dt3ds1 * rho3[i] + t3i * drho3ds1) - diff --git a/src/MEAM/meam_impl.cpp b/src/MEAM/meam_impl.cpp index 473b491b015..41248c192bf 100644 --- a/src/MEAM/meam_impl.cpp +++ b/src/MEAM/meam_impl.cpp @@ -42,12 +42,12 @@ MEAM::MEAM(Memory *mem) : memory(mem) copymode = 0; neltypes = 0; - for (int i = 0; i < maxelt; i++) { + for (int i = 0; i < MAXELT; i++) { A_meam[i] = rho0_meam[i] = beta0_meam[i] = beta1_meam[i] = beta2_meam[i] = beta3_meam[i] = t0_meam[i] = t1_meam[i] = t2_meam[i] = t3_meam[i] = rho_ref_meam[i] = ibar_meam[i] = ielt_meam[i] = t1m_meam[i] = t2m_meam[i] = t3m_meam[i] = beta1m_meam[i] = beta2m_meam[i] = beta3m_meam[i] = 0.0; - for (int j = 0; j < maxelt; j++) { + for (int j = 0; j < MAXELT; j++) { lattce_meam[i][j] = FCC; Ec_meam[i][j] = re_meam[i][j] = alpha_meam[i][j] = delta_meam[i][j] = ebound_meam[i][j] = attrac_meam[i][j] = repuls_meam[i][j] = 0.0; diff --git a/src/MEAM/meam_setup_done.cpp b/src/MEAM/meam_setup_done.cpp index 4adfd68f199..ce756051e42 100644 --- a/src/MEAM/meam_setup_done.cpp +++ b/src/MEAM/meam_setup_done.cpp @@ -33,7 +33,7 @@ void MEAM::meam_setup_done(double* cutmax) *cutmax = cutforce; // Augment t1 term - for (int i = 0; i < maxelt; i++) + for (int i = 0; i < MAXELT; i++) t1_meam[i] = t1_meam[i] + augt1 * 3.0 / 5.0 * t3_meam[i]; // Compute off-diagonal alloy parameters diff --git a/src/MEAM/meam_setup_global.cpp b/src/MEAM/meam_setup_global.cpp index 299fc4da617..1487a53b2ea 100644 --- a/src/MEAM/meam_setup_global.cpp +++ b/src/MEAM/meam_setup_global.cpp @@ -38,7 +38,7 @@ void MEAM::meam_setup_global(int nelt, lattice_t *lat, int *ielement, double * / double *b2m, double *b3m, double *t1m, double *t2m, double *t3m) { int i; - double tmplat[maxelt]; + double tmplat[MAXELT]; neltypes = nelt; @@ -123,4 +123,7 @@ void MEAM::meam_setup_global(int nelt, lattice_t *lat, int *ielement, double * / // for trimer, zigzag, line refernece structure, sungkwang setall2d(stheta_meam, 1.0); // stheta = sin(theta/2*pi/180) where theta is 180, so 1.0 setall2d(ctheta_meam, 0.0); // stheta = cos(theta/2*pi/180) where theta is 180, so 0 + + if (msmeamflag) ialloy = 1; + } diff --git a/src/MEAM/pair_meam.cpp b/src/MEAM/pair_meam.cpp index 2f095754af3..d9d2b53885e 100644 --- a/src/MEAM/pair_meam.cpp +++ b/src/MEAM/pair_meam.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; static const int nkeywords = 22; static const char *keywords[] = { @@ -206,7 +206,12 @@ void PairMEAM::coeff(int narg, char **arg) // check for presence of first meam file std::string lib_file = utils::get_potential_file_path(arg[2]); - if (lib_file.empty()) error->all(FLERR, "Cannot open MEAM library file {}", lib_file); + if (lib_file.empty()) { + if (msmeamflag) + error->all(FLERR, "Cannot open MS-MEAM library file {}", lib_file); + else + error->all(FLERR, "Cannot open MEAM library file {}", lib_file); + } // find meam parameter file in arguments: // first word that is a file or "NULL" after the MEAM library file @@ -226,7 +231,12 @@ void PairMEAM::coeff(int narg, char **arg) break; } } - if (paridx < 0) error->all(FLERR, "No MEAM parameter file in pair coefficients"); + if (paridx < 0) { + if (msmeamflag) + error->all(FLERR, "No MS-MEAM parameter file in pair coefficients"); + else + error->all(FLERR, "No MEAM parameter file in pair coefficients"); + } if ((narg - paridx - 1) != atom->ntypes) error->all(FLERR, "Incorrect args for pair style {} coefficients", myname); @@ -241,11 +251,10 @@ void PairMEAM::coeff(int narg, char **arg) nlibelements = paridx - 3; if (nlibelements < 1) error->all(FLERR, "Incorrect args for pair coefficients"); - if (nlibelements > maxelt) + if (nlibelements > MAXELT) error->all(FLERR, "Too many elements extracted from MEAM library (current limit: {}). " - "Increase 'maxelt' in meam.h and recompile.", - maxelt); + "Increase 'MAXELT' in meam.h and recompile.", MAXELT); for (int i = 0; i < nlibelements; i++) { if (std::any_of(libelements.begin(), libelements.end(), [&](const std::string &elem) { diff --git a/src/MEAM/pair_meam_ms.cpp b/src/MEAM/pair_meam_ms.cpp index 982a54f546e..e5cb960b59e 100644 --- a/src/MEAM/pair_meam_ms.cpp +++ b/src/MEAM/pair_meam_ms.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include "pair_meam_ms.h" + #include "meam.h" using namespace LAMMPS_NS; diff --git a/src/MESONT/angle_mesocnt.cpp b/src/MESONT/angle_mesocnt.cpp index 06ec135e3c7..c6dae4b0fb0 100644 --- a/src/MESONT/angle_mesocnt.cpp +++ b/src/MESONT/angle_mesocnt.cpp @@ -30,6 +30,7 @@ #include "update.h" #include +#include using namespace LAMMPS_NS; using MathConst::DEG2RAD; diff --git a/src/MESONT/bond_mesocnt.cpp b/src/MESONT/bond_mesocnt.cpp index 1623c4b1fc8..5f468bd720c 100644 --- a/src/MESONT/bond_mesocnt.cpp +++ b/src/MESONT/bond_mesocnt.cpp @@ -24,7 +24,6 @@ #include "force.h" #include "math_const.h" #include "memory.h" -#include "neighbor.h" #include "update.h" #include diff --git a/src/MESONT/pair_mesocnt.cpp b/src/MESONT/pair_mesocnt.cpp index 521c8c5f60b..21b04268c4a 100644 --- a/src/MESONT/pair_mesocnt.cpp +++ b/src/MESONT/pair_mesocnt.cpp @@ -34,26 +34,25 @@ #include #include #include -#include +#include +#include #include -#include using namespace LAMMPS_NS; using namespace MathExtra; using MathConst::MY_2PI; using MathConst::MY_PI; -#define MAXLINE 1024 -#define SELF_CUTOFF 3 -#define SMALL 1.0e-6 -#define SWITCH 1.0e-4 -#define RHOMIN 10.0 +static constexpr int SELF_CUTOFF = 3; +static constexpr double SMALL = 1.0e-6; +static constexpr double SWITCH = 1.0e-4; +static constexpr double RHOMIN = 10.0; -#define QUAD_FINF 129 -#define QUAD_FSEMI 10 +static constexpr int QUAD_FINF = 129; +static constexpr int QUAD_FSEMI = 10; -#define BISECTION_STEPS 1000000 -#define BISECTION_EPS 1.0e-15 +static constexpr int BISECTION_STEPS = 1000000; +static constexpr double BISECTION_EPS = 1.0e-15; /* ---------------------------------------------------------------------- */ diff --git a/src/MESONT/pair_mesocnt_viscous.cpp b/src/MESONT/pair_mesocnt_viscous.cpp index be3715be25f..f7ad7b0aa62 100644 --- a/src/MESONT/pair_mesocnt_viscous.cpp +++ b/src/MESONT/pair_mesocnt_viscous.cpp @@ -25,7 +25,6 @@ #include "math_const.h" #include "math_extra.h" #include "memory.h" -#include "neigh_list.h" #include "neighbor.h" #include "update.h" @@ -35,11 +34,11 @@ using namespace LAMMPS_NS; using namespace MathExtra; using MathConst::MY_PI; -#define SELF_CUTOFF 3 -#define RHOMIN 10.0 +static constexpr int SELF_CUTOFF = 3; +static constexpr double RHOMIN = 10.0; -#define QUAD_FINF 129 -#define QUAD_FSEMI 10 +static constexpr int QUAD_FINF = 129; +static constexpr int QUAD_FSEMI = 10; /* ---------------------------------------------------------------------- */ diff --git a/src/MGPT/mgpt_readpot.cpp b/src/MGPT/mgpt_readpot.cpp index ab25a9e190e..3cc5d5d6933 100644 --- a/src/MGPT/mgpt_readpot.cpp +++ b/src/MGPT/mgpt_readpot.cpp @@ -156,7 +156,7 @@ static void getparmindata(const char *potin_file,int nvol[1],double vol0[1],doub void potdata::readpot(const char *parmin_file,const char *potin_file,const double vol) { FILE *in; - double x0,x1,dx,dr; + double x0,x1,dx; int nx; double r0x,r1x,drx; @@ -348,7 +348,7 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl nrx = (int) ((r1x-r0x)/drx + 1.1); /* Really: 1+round((r1-r0)/dr) */ if (ii == 0) { - r0 = r0x; r1 = r1x; dr = drx; nr = nrx; + r0 = r0x; r1 = r1x; nr = nrx; vpairtab = new double[nx*nr]; } else { /* Check that {r0,r1,dr,nr}x == {r0,r1,dr,nr} */ @@ -373,15 +373,12 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl double r0rws = r0rwstab[i]; double r00 = r0rws*rws,rp = 1.8*rws; if (bscreen == 0) r0rws = 10.0; - double alp = al,alm = al; - if (mode == 2 || mode == 4 || mode == 6) alm = 125.0; + double alp = al; al = alp; double r = r0 + j*(r1-r0)/(nr-1); double rrws = r/rws; - //double rsqr = r*r; - // double fl(double r,int mode,double rp,double p1,double al,double r0) double flr = fl(r,mode,rp,p1,al,r00,pn); double fl2 = flr*flr; double v2a = vatab[i]*fl2*fl2; @@ -390,17 +387,11 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl if (bscreen == 1 && rrws >= r0rws) { double arg = rrws/r0rwstab[i]; - double arg1 = arg - 1.0; - double arg12 = arg1*arg1; - double f,dp; + double f; if (mode <= 2) { f = fgauss(arg,al); - dp=2.*al*arg*arg1; - } - else { + } else { f = hgauss(arg,al); - double arg13 = arg1*arg12; - dp=2.0*al*al*arg*arg13/(1.+al*arg12); } fscr = f*f; } diff --git a/src/MGPT/pair_mgpt.cpp b/src/MGPT/pair_mgpt.cpp index c924cbea845..986c3e4aefb 100644 --- a/src/MGPT/pair_mgpt.cpp +++ b/src/MGPT/pair_mgpt.cpp @@ -39,7 +39,7 @@ using namespace LAMMPS_NS; -//#define TIMING_ON +// #define TIMING_ON #ifdef TIMING_ON #include @@ -49,13 +49,11 @@ using namespace LAMMPS_NS; #include #endif -static double gettime(int x = 0) { +static double gettime() { if (1) { - /* struct timeval tv; gettimeofday(&tv,nullptr); return tv.tv_sec + 1e-6 * tv.tv_usec; - */ /* const double x = 1.0 / CLOCKS_PER_SEC; return clock() * x; @@ -68,16 +66,17 @@ static double gettime(int x = 0) { return x*invfreq; */ + /* const double invfreq = 1.0 / 1.6e9; unsigned long long int x = GetTimeBase(); return x*invfreq; - + */ } else return 0.0; } #else -static double gettime(int /*x*/ = 0) { return 0.0; } +static double gettime() { return 0.0; } #endif @@ -569,6 +568,7 @@ void PairMGPT::force_debug_4(double xx[][3], #ifdef __bg__ #define const #endif +#ifdef TIMING_ON static int ntr_calls = 0; static trtrace3_fun tr_internal; static void tr_count(const double * restrict A, @@ -578,6 +578,7 @@ static void tr_count(const double * restrict A, tr_internal(A,B1,t1,B2,t2,B3,t3); ntr_calls++; } +#endif #ifdef __bg__ #undef const #endif @@ -589,34 +590,33 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, double *e_s,double *e_p,double *e_t,double *e_q, int evflag,int newton_pair) { Hash bond_hash(100000); - int i,j,k,m,ix,jx,kx,mx,p; + int i,j,k,m,ix,jx,kx,p; double e_single,e_pair,e_triplet,e_triplet_c,e_quad; double volvir2; - +#ifdef TIMING_ON double nbc = 0.0,tbl = 0.0,tbm = 0.0; - const int lmax_local = lmax; - - //if(evflag) printf("##### ev flag is set... wasting cycles...\n"); - +#endif *e_s = -99.0; *e_p = -99.0; *e_t = -99.0; *e_q = -99.0; - double t0,t1; - - t0 = gettime(1); +#ifdef TIMING_ON + double t0 = gettime(); +#endif e_single = e_pair = e_triplet = e_triplet_c = e_quad = 0.0; volvir2 = 0.0; t_make_t = t_make_b = t_make_b2 = t_trace = 0.0; n_make = n_make_b2 = n_trace = 0.0; - double tx0,tx1,tsort = 0.0,tpair = 0.0,tlookup = 0.0; +#ifdef TIMING_ON + double tsort = 0.0, tpair = 0.0,tlookup = 0.0; double ttriplet = 0.0,tquad = 0.0,tmem = 0.0; double ntsort = 0.0,ntpair = 0.0,ntlookup = 0.0; double nttriplet = 0.0,ntquad = 0.0,ntmem = 0.0,ntquaditer = 0.0; double mcount = 0.0,mcount2 = 0.0, qcount = 0.0; +#endif double fix,fjx,fkx,fmx,dfix,dfjx,dfkx,dfmx; double fiy,fjy,fky,fmy,dfiy,dfjy,dfky,dfmy; @@ -670,8 +670,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, double trd1y,trd2y,trd3y,trd4y; double trd1z,trd2z,trd3z,trd4z; - - tx0 = gettime(); +#ifdef TIMING_ON + double tx0 = gettime(); +#endif double rhoinv; { @@ -751,9 +752,11 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, first = (int *) memory->smalloc(sizeof(int) * (ntot+1),"mgpt: first"); nlist_short = (int *) memory->smalloc(sizeof(int) * nneitot,"mgpt: nlist_short"); - tx1 = gettime(); +#ifdef TIMING_ON + double tx1 = gettime(); tmem += tx1-tx0; ntmem++; +#endif //printf("[%3d] Starting calculation...\n",comm->me); @@ -762,7 +765,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, fiy = fjy = fky = fmy = 0.0; fiz = fjz = fkz = fmz = 0.0; +#ifdef TIMING_ON int c_p = 0, c_t = 0, c_q = 0; +#endif if (false) if (domain->triclinic) { @@ -786,7 +791,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, const int c1 = c1_outside(ss[i],triclinic,alpha); +#ifdef TIMING_ON tx0 = gettime(); +#endif for (jx = 0; jxH.m[1][0]), @@ -1042,8 +1055,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } if (T12 != nullptr) { - //printf("T12 i,j,k = %d,%d,%d\n",i,j,k); +#ifdef TIMING_ON mcount++; +#endif if (three_body_energies && evflag) { tr1 = transtrace(T12->H1H2,T12->H1H2); double dvir = (2.0*(dvir_ij + dvir_jk)*splinepot.vd + @@ -1098,8 +1112,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } if (T23 != nullptr) { - //printf("T23 i,j,k = %d,%d,%d\n",i,j,k); +#ifdef TIMING_ON mcount++; +#endif if (three_body_energies && evflag) { tr2 = transtrace(T23->H1H2,T23->H1H2); double dvir = (2.0*(dvir_jk + dvir_ki)*splinepot.vd + @@ -1154,8 +1169,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } if (T31 != nullptr) { - //printf("T31 i,j,k = %d,%d,%d\n",i,j,k); +#ifdef TIMING_ON mcount++; +#endif if (three_body_energies && evflag) { tr3 = transtrace(T31->H1H2,T31->H1H2); double dvir = (2.0*(dvir_ki + dvir_ij)*splinepot.vd + @@ -1214,8 +1230,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, double de_triplet = (splinepot.vc*v33 + splinepot.vd*v43) * e_scale * w3; e_triplet = e_triplet + de_triplet; e_triplet_c = e_triplet_c + splinepot.vc*v33 * e_scale * w3; +#ifdef TIMING_ON c_t++; - +#endif //printf("xxxx %6d %6d %6d :: %20.10e\n",1,2,3,de_triplet); if (evflag) { @@ -1246,16 +1263,20 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, fkx = fkx+fsave[2][0]; fky = fky+fsave[2][1]; fkz = fkz+fsave[2][2]; } +#ifdef TIMING_ON tx1 = gettime(); ttriplet += tx1 - tx0; nttriplet++; +#endif } else { triplet_defer = 1; } if (four_body_energies || four_body_forces) if (j < i) { /* Search for quadruplet */ +#ifdef TIMING_ON tx0 = gettime(); +#endif mj = first[j]; mk = first[k]; @@ -1342,8 +1363,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, vir4 = vir4 + dvir; xvir4 = xvir4 + dvir; } +#ifdef TIMING_ON qcount++; - +#endif { const double ve = splinepot.ve; @@ -1371,8 +1393,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, vir4 = vir4 + dvir; xvir4 = xvir4 + dvir; } +#ifdef TIMING_ON qcount++; - +#endif { const double ve = splinepot.ve; @@ -1401,8 +1424,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, vir4 = vir4 + dvir; xvir4 = xvir4 + dvir; } +#ifdef TIMING_ON qcount++; - +#endif { const double ve = splinepot.ve; @@ -1425,11 +1449,13 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, double de_quad = splinepot.ve*(tr1 + tr2 + tr3)/anorm4 * e_scale * w4; e_quad = e_quad + de_quad; +#ifdef TIMING_ON if ((T12 && T45) || (T23 && T56) || (T31 && T64)) { c_q++; } +#endif if (evflag) { double drim[3],drjm[3],drkm[3]; @@ -1479,10 +1505,12 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } } +#ifdef TIMING_ON tx1 = gettime(); tquad += tx1 - tx0; ntquad++; ntquaditer++; +#endif } @@ -1514,12 +1542,12 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, for (int pp = 0; pp<3; pp++) vatom[i][pp] = vatom[i][pp] - rhoinv*splinepot.devol0*e_scale; } - } - } +#ifdef TIMING_ON tx0 = gettime(); +#endif for (i = 0; if[i][p] = atom->f[i][p] + ff[i][p]; @@ -1529,20 +1557,16 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, if (ss != xx) memory->sfree(ss); memory->sfree(ff); memory->sfree(xx); +#ifdef TIMING_ON tx1 = gettime(); tmem += tx1-tx0; ntmem++; - t1 = gettime(1); - - //printf("compute_x: c_p = %d c_t = %d c_q = %d\n",c_p,c_t,c_q); + double t1 = gettime(); - -#ifdef TIMING_ON if (comm->me == 0) { double tsum = (tmem+tsort+tpair+tlookup+ttriplet+tquad); double nsum = (ntmem+ntsort+ntpair+ntlookup+nttriplet+ntquad); - //double adj = ((t1-t0)-tsum)/nsum; /* Use adj = 6ns for RDTSC, and 58ns for gettimeofday, on monkfish.llnl.gov, 2.4GHz Intel @@ -1832,7 +1856,7 @@ void PairMGPT::coeff(int narg, char **arg) single_precision = 0; /* Parse arguments */ { - int volpres_tag = 0,precision_tag = 0,nbody_tag = 0; + int nbody_tag = 0; int iarg = 5; while (iarg < narg) { @@ -1848,7 +1872,6 @@ void PairMGPT::coeff(int narg, char **arg) "The value is \"%s\".\n",FLERR,arg[iarg+1]); error->all(FLERR,line); } - volpres_tag = 1; iarg += 2; if (comm->me == 0) printf("* volpress: volpres_flag = %d [%s %s]\n",volpres_flag,arg[iarg-2],arg[iarg-1]); } else if (strcmp(arg[iarg],"nbody") == 0) { @@ -1884,7 +1907,6 @@ void PairMGPT::coeff(int narg, char **arg) "The value is \"%s\".\n",FLERR,arg[iarg+1]); error->all(FLERR,line); } - precision_tag = 1; iarg += 2; if (comm->me == 0) printf("* precision: single_flag = %d [%s %s]\n",single_precision,arg[iarg-2],arg[iarg-1]); } else { diff --git a/src/MGPT/pair_mgpt.h b/src/MGPT/pair_mgpt.h index 409643c059e..3168a3c41d4 100644 --- a/src/MGPT/pair_mgpt.h +++ b/src/MGPT/pair_mgpt.h @@ -273,6 +273,8 @@ class PairMGPT : public Pair { void allocate(); struct Matrix { + Matrix() = default; + Matrix(const Matrix &) = default; static int sz; double m[8][8]; diff --git a/src/MISC/pair_agni.cpp b/src/MISC/pair_agni.cpp index 8597e5db934..cbc6cf6c92b 100644 --- a/src/MISC/pair_agni.cpp +++ b/src/MISC/pair_agni.cpp @@ -47,9 +47,6 @@ static const char cite_pair_agni[] = " year = {2019},\n" "}\n\n"; -#define MAXLINE 10240 -#define MAXWORD 40 - /* ---------------------------------------------------------------------- */ PairAGNI::PairAGNI(LAMMPS *lmp) : Pair(lmp) diff --git a/src/MISC/pair_srp.cpp b/src/MISC/pair_srp.cpp index ddcfb92e9ca..31f5b85760d 100644 --- a/src/MISC/pair_srp.cpp +++ b/src/MISC/pair_srp.cpp @@ -47,8 +47,8 @@ Please contact Timothy Sirk for questions (tim.sirk@us.army.mil). using namespace LAMMPS_NS; -#define SMALL 1.0e-10 -#define BIG 1e10 +static constexpr double SMALL = 1.0e-10; +static constexpr double BIG = 1e10; #define ONETWOBIT 0x40000000 static const char cite_srp[] = diff --git a/src/ML-IAP/Install.sh b/src/ML-IAP/Install.sh index 18812c6026d..38e3b574c25 100755 --- a/src/ML-IAP/Install.sh +++ b/src/ML-IAP/Install.sh @@ -40,6 +40,20 @@ for file in *.cpp *.h; do test -f ${file} && action $file done +# Edit makefile for ace descriptors if ML-PACE is available +if (test $1 = 1 || test $1 = 2) then + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]*-DMLIAP_ACE[^ \t]* //g' ../Makefile.package + if (test -e ../compute_pace.h) then + sed -i -e 's|^PKG_INC =[ \t]*|&-DMLIAP_ACE |' ../Makefile.package + else + rm -f ../mliap_descriptor_ace.cpp ../mliap_descriptor_ace.h + fi + else + rm -f ../mliap_descriptor_ace.cpp ../mliap_descriptor_ace.h + fi +fi + # Install cython pyx file only if also Python is available action mliap_model_python_couple.pyx python_impl.cpp action mliap_unified_couple.pyx python_impl.cpp @@ -69,6 +83,10 @@ elif (test $1 = 0) then rm -f ../mliap_model_python_couple.cpp ../mliap_model_python_couple.h \ ../mliap_unified_couple.cpp ../mliap_unified_couple.h sed -i -e '/^[ \t]*include.*python.*mliap_python.*$/d' ../Makefile.package.settings + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]*-DMLIAP_ACE[^ \t]* //g' ../Makefile.package + fi + rm -f ../mliap_descriptor_ace.cpp ../mliap_descriptor_ace.h elif (test $1 = 2) then if (type cythonize > /dev/null 2>&1 && test -e ../python_impl.cpp) then diff --git a/src/ML-IAP/compute_mliap.cpp b/src/ML-IAP/compute_mliap.cpp index 4fa88abad15..0f87e2b13f3 100644 --- a/src/ML-IAP/compute_mliap.cpp +++ b/src/ML-IAP/compute_mliap.cpp @@ -19,10 +19,13 @@ #include "compute_mliap.h" #include "mliap_data.h" -#include "mliap_model_linear.h" -#include "mliap_model_quadratic.h" #include "mliap_descriptor_snap.h" #include "mliap_descriptor_so3.h" +#ifdef MLIAP_ACE +#include "mliap_descriptor_ace.h" +#endif +#include "mliap_model_linear.h" +#include "mliap_model_quadratic.h" #ifdef MLIAP_PYTHON #include "mliap_model_python.h" #endif @@ -41,17 +44,17 @@ using namespace LAMMPS_NS; -enum{SCALAR,VECTOR,ARRAY}; +enum { SCALAR, VECTOR, ARRAY }; ComputeMLIAP::ComputeMLIAP(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), mliaparray(nullptr), - mliaparrayall(nullptr), map(nullptr) + Compute(lmp, narg, arg), mliaparray(nullptr), mliaparrayall(nullptr), list(nullptr), + map(nullptr), model(nullptr), descriptor(nullptr), data(nullptr), c_pe(nullptr), + c_virial(nullptr) { array_flag = 1; extarray = 0; - if (narg < 4) - error->all(FLERR,"Illegal compute mliap command"); + if (narg < 4) utils::missing_cmd_args(FLERR, "compute mliap", error); // default values @@ -88,13 +91,23 @@ ComputeMLIAP::ComputeMLIAP(LAMMPS *lmp, int narg, char **arg) : if (iarg+2 > narg) error->all(FLERR,"Illegal compute mliap command"); if (strcmp(arg[iarg+1],"sna") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal compute mliap command"); + if (lmp->kokkos) error->all(FLERR,"Cannot (yet) use KOKKOS package with SNAP descriptors"); descriptor = new MLIAPDescriptorSNAP(lmp,arg[iarg+2]); iarg += 3; } else if (strcmp(arg[iarg+1],"so3") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal pair_style mliap command"); descriptor = new MLIAPDescriptorSO3(lmp,arg[iarg+2]); iarg += 3; - } else error->all(FLERR,"Illegal compute mliap command"); + } +#ifdef MLIAP_ACE + else if (strcmp(arg[iarg+1],"ace") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal pair_style mliap command"); + if (lmp->kokkos) error->all(FLERR,"Cannot (yet) use KOKKOS package with ACE descriptors"); + descriptor = new MLIAPDescriptorACE(lmp,arg[iarg+2]); + iarg += 3; + } +#endif + else error->all(FLERR,"Illegal compute mliap command"); descriptorflag = 1; } else if (strcmp(arg[iarg],"gradgradflag") == 0) { if (iarg+1 > narg) error->all(FLERR,"Illegal compute mliap command"); @@ -130,7 +143,6 @@ ComputeMLIAP::ComputeMLIAP(LAMMPS *lmp, int narg, char **arg) : ComputeMLIAP::~ComputeMLIAP() { - modify->delete_compute(id_virial); memory->destroy(mliaparray); @@ -180,23 +192,13 @@ void ComputeMLIAP::init() // find compute for reference energy - std::string id_pe = std::string("thermo_pe"); - int ipe = modify->find_compute(id_pe); - if (ipe == -1) - error->all(FLERR,"compute thermo_pe does not exist."); - c_pe = modify->compute[ipe]; + c_pe = modify->get_compute_by_id("thermo_pe"); + if (!c_pe) error->all(FLERR,"Compute thermo_pe does not exist."); // add compute for reference virial tensor id_virial = id + std::string("_press"); - std::string pcmd = id_virial + " all pressure NULL virial"; - modify->add_compute(pcmd); - - int ivirial = modify->find_compute(id_virial); - if (ivirial == -1) - error->all(FLERR,"compute mliap_press does not exist."); - c_virial = modify->compute[ivirial]; - + c_virial = modify->add_compute(id_virial + " all pressure NULL virial"); } diff --git a/src/ML-IAP/mliap_data.cpp b/src/ML-IAP/mliap_data.cpp index b40fefd3bad..5d847ee25e7 100644 --- a/src/ML-IAP/mliap_data.cpp +++ b/src/ML-IAP/mliap_data.cpp @@ -31,9 +31,9 @@ MLIAPData::MLIAPData(LAMMPS *lmp, int gradgradflag_in, int *map_in, class MLIAPM Pointers(lmp), f(nullptr), gradforce(nullptr), betas(nullptr), descriptors(nullptr), eatoms(nullptr), gamma(nullptr), gamma_row_index(nullptr), gamma_col_index(nullptr), egradient(nullptr), - numneighs(nullptr), iatoms(nullptr), ielems(nullptr), pair_i(nullptr), jatoms(nullptr), - jelems(nullptr), elems(nullptr), rij(nullptr), graddesc(nullptr), model(nullptr), - descriptor(nullptr), list(nullptr) + numneighs(nullptr), iatoms(nullptr), ielems(nullptr), itypes(nullptr), pair_i(nullptr), + jatoms(nullptr), jelems(nullptr), elems(nullptr), lmp_firstneigh(nullptr), rij(nullptr), + graddesc(nullptr), model(nullptr), descriptor(nullptr), list(nullptr) { gradgradflag = gradgradflag_in; map = map_in; @@ -84,8 +84,10 @@ MLIAPData::~MLIAPData() memory->destroy(iatoms); memory->destroy(pair_i); memory->destroy(ielems); + memory->destroy(itypes); memory->destroy(numneighs); memory->destroy(jatoms); + memory->destroy(lmp_firstneigh); memory->destroy(jelems); memory->destroy(elems); memory->destroy(rij); @@ -183,6 +185,7 @@ void MLIAPData::generate_neighdata(NeighList *list_in, int eflag_in, int vflag_i int jtype = type[j]; const int jelem = map[jtype]; + lmp_firstneigh[ii][jj] = firstneigh[i][jj]; if (rsq < descriptor->cutsq[ielem][jelem]) { pair_i[ij] = i; jatoms[ij] = j; @@ -196,6 +199,7 @@ void MLIAPData::generate_neighdata(NeighList *list_in, int eflag_in, int vflag_i } iatoms[ii] = i; ielems[ii] = ielem; + itypes[ii] = itype; numneighs[ii] = ninside; npairs += ninside; } @@ -222,6 +226,7 @@ void MLIAPData::grow_neigharrays() if (natomneigh_max < natomneigh) { memory->grow(iatoms, natomneigh, "MLIAPData:iatoms"); memory->grow(ielems, natomneigh, "MLIAPData:ielems"); + memory->grow(itypes, natomneigh, "MLIAPData:itypes"); memory->grow(numneighs, natomneigh, "MLIAPData:numneighs"); natomneigh_max = natomneigh; } @@ -265,6 +270,7 @@ void MLIAPData::grow_neigharrays() if (nneigh_max < nneigh) { memory->grow(pair_i, nneigh, "MLIAPData:pair_i"); memory->grow(jatoms, nneigh, "MLIAPData:jatoms"); + memory->grow(lmp_firstneigh, natomneigh, nneigh, "MLIAPData:lmp_firstneigh"); memory->grow(jelems, nneigh, "MLIAPData:jelems"); memory->grow(rij, nneigh, 3, "MLIAPData:rij"); if (gradgradflag == 0) memory->grow(graddesc, nneigh, ndescriptors, 3, "MLIAPData:graddesc"); @@ -292,12 +298,14 @@ double MLIAPData::memory_usage() bytes += (double) natomneigh_max * sizeof(int); // iatoms bytes += (double) natomneigh_max * sizeof(int); // ielems + bytes += (double) natomneigh_max * sizeof(int); // itypes bytes += (double) natomneigh_max * sizeof(int); // numneighs - bytes += (double) nneigh_max * sizeof(int); // pair_i - bytes += (double) nneigh_max * sizeof(int); // jatoms - bytes += (double) nneigh_max * sizeof(int); // jelems - bytes += (double) nneigh_max * 3 * sizeof(double); // rij" + bytes += (double) nneigh_max * sizeof(int); // pair_i + bytes += (double) nneigh_max * sizeof(int); // jatoms + bytes += (double) nneigh_max * sizeof(int); // jelems + bytes += (double) nneigh_max * natomneigh_max * sizeof(int); // lmp_firstneigh + bytes += (double) nneigh_max * 3 * sizeof(double); // rij" if (gradgradflag == 0) bytes += (double) nneigh_max * ndescriptors * 3 * sizeof(double); // graddesc diff --git a/src/ML-IAP/mliap_data.h b/src/ML-IAP/mliap_data.h index 9746b4da5ed..3c27040bb8c 100644 --- a/src/ML-IAP/mliap_data.h +++ b/src/ML-IAP/mliap_data.h @@ -58,8 +58,8 @@ class MLIAPData : protected Pointers { // data structures for mliap neighbor list // only neighbors strictly inside descriptor cutoff - int ntotal; // total number of owned and ghost atoms on this proc - int nlistatoms; // current number of atoms in local atom lists + int ntotal; // total number of owned and ghost atoms on this proc + int nlistatoms; // current number of atoms in local atom lists int nlocal; int nlistatoms_max; // allocated size of descriptor array int natomneigh; // current number of atoms and ghosts in atom neighbor arrays @@ -67,12 +67,14 @@ class MLIAPData : protected Pointers { int *numneighs; // neighbors count for each atom int *iatoms; // index of each atom int *ielems; // element of each atom + int *itypes; // LAMMPS type of each atom for external evaluators int nneigh_max; // number of ij neighbors allocated int npairs; // number of ij neighbor pairs int *pair_i; // index of each i atom for each ij pair int *jatoms; // index of each neighbor int *jelems; // element of each neighbor int *elems; // element of each atom in or not in the neighborlist + int **lmp_firstneigh; // copy of list->firstneigh for external evaluators double **rij; // distance vector of each neighbor double ***graddesc; // descriptor gradient w.r.t. each neighbor int eflag; // indicates if energy is needed diff --git a/src/ML-IAP/mliap_descriptor.h b/src/ML-IAP/mliap_descriptor.h index 7f05c6804a4..6d66356960f 100644 --- a/src/ML-IAP/mliap_descriptor.h +++ b/src/ML-IAP/mliap_descriptor.h @@ -31,6 +31,7 @@ class MLIAPDescriptor : virtual protected Pointers { int ndescriptors; // number of descriptors int nelements; // # of unique elements + int allocated_elements; // is the element array allocated char **elements; // names of unique elements double **cutsq; // nelem x nelem rcutsq values double **cutghost; // cutoff for each ghost pair diff --git a/src/ML-IAP/mliap_descriptor_ace.cpp b/src/ML-IAP/mliap_descriptor_ace.cpp new file mode 100644 index 00000000000..aa30ac3f81f --- /dev/null +++ b/src/ML-IAP/mliap_descriptor_ace.cpp @@ -0,0 +1,400 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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: James Goff (SNL) +------------------------------------------------------------------------- */ +#ifdef MLIAP_ACE + +#include "mliap_descriptor_ace.h" + +#include "ace-evaluator/ace_abstract_basis.h" +#include "ace-evaluator/ace_c_basis.h" +#include "ace-evaluator/ace_evaluator.h" +#include "ace-evaluator/ace_types.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "memory.h" +#include "mliap_data.h" +#include "neigh_list.h" +#include "pair_mliap.h" +#include "tokenizer.h" + +#include +#include + +namespace LAMMPS_NS { +struct ACE_ML_impl { + ACE_ML_impl() : basis_set(nullptr), ace(nullptr) {} + ~ACE_ML_impl() + { + delete basis_set; + delete ace; + } + ACECTildeBasisSet *basis_set; + ACECTildeEvaluator *ace; +}; +} // namespace LAMMPS_NS + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) : + Pointers(_lmp), MLIAPDescriptor(_lmp) +{ + + acemlimpl = new ACE_ML_impl; + allocated_elements = 0; + //read in file with CG coefficients or c_tilde coefficients + ctilde_file = yacefilename; + delete acemlimpl->basis_set; + acemlimpl->basis_set = new ACECTildeBasisSet(ctilde_file); + nelements = acemlimpl->basis_set->nelements; + int tot_num = 0; + for (int mu = 0; mu < nelements; mu++) { + if (max_num < acemlimpl->basis_set->total_basis_size_rank1[mu] + + acemlimpl->basis_set->total_basis_size[mu]) { + max_num = acemlimpl->basis_set->total_basis_size_rank1[mu] + + acemlimpl->basis_set->total_basis_size[mu]; + } + tot_num += acemlimpl->basis_set->total_basis_size_rank1[mu] + + acemlimpl->basis_set->total_basis_size[mu]; + } + + ndescriptors = max_num; + nelements = acemlimpl->basis_set->nelements; + + memory->destroy(cutsq); + + if (allocated_elements) { + for (int iielem = 0; iielem < nelements; iielem++) delete[] elements[iielem]; + delete[] elements; + allocated_elements = 0; + } else if (not allocated_elements) { + elements = new char *[nelements]; + for (int iielem = 0; iielem < nelements; iielem++) { + elements[iielem] = utils::strdup(acemlimpl->basis_set->elements_name[iielem]); + } + allocated_elements = 1; + } + + memory->create(cutsq, nelements + 1, nelements + 1, "mliap/descriptor/ace:cutsq"); + float icmax = 0.0; + float icuti, icutj; + for (int mui = 0; mui < acemlimpl->basis_set->nelements; mui++) { + icuti = acemlimpl->basis_set->radial_functions->cut(mui, mui); + if (icuti > icmax) icmax = icuti; + for (int muj = mui + 1; muj < acemlimpl->basis_set->nelements; muj++) { + icutj = acemlimpl->basis_set->radial_functions->cut(mui, muj); + if (icutj > icmax) icmax = icutj; + } + } + float cutmax = 0.0; + float cuti, cutj; + float cutfac = 1.0; + for (int mui = 0; mui < acemlimpl->basis_set->nelements; mui++) { + cuti = acemlimpl->basis_set->radial_functions->cut(mui, mui); + if (cuti > cutmax) cutmax = cuti; + + cutsq[mui][mui] = ((2 * cuti * cutfac) * (2 * cuti * cutfac)); + for (int muj = mui + 1; muj < nelements; muj++) { + cutj = acemlimpl->basis_set->radial_functions->cut(mui, muj); + cutsq[mui][muj] = cutsq[muj][mui] = ((2 * cuti * cutfac) * (2 * cutj * cutfac)); + } + } +} + +void MLIAPDescriptorACE::allocate() {} + +/* ---------------------------------------------------------------------- */ + +MLIAPDescriptorACE::~MLIAPDescriptorACE() +{ + delete acemlimpl; +} + +/* ---------------------------------------------------------------------- + compute descriptors for each atom + ---------------------------------------------------------------------- */ + +void MLIAPDescriptorACE::compute_descriptors(class MLIAPData *data) +{ + int max_jnum = -1; + int nei = 0; + int jtmp = 0; + for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) { + int itmp = data->iatoms[iitmp]; + jtmp = data->numneighs[iitmp]; + nei = nei + jtmp; + if (jtmp > max_jnum) { max_jnum = jtmp; } + } + + for (int ii = 0; ii < data->nlistatoms; ii++) { + const int i = data->iatoms[ii]; + const int ielemx = data->ielems[ii]; + const int jnum = data->numneighs[ii]; + + delete acemlimpl->ace; + acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set); + acemlimpl->ace->compute_projections = 1; + acemlimpl->ace->compute_b_grad = 1; + + acemlimpl->ace->element_type_mapping.init(nelements + 1); + for (int ik = 1; ik <= nelements; ik++) { + for (int mu = 0; mu < nelements; mu++) { + if (mu != -1) { + if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; } + } + } + } + + acemlimpl->ace->resize_neighbours_cache(jnum); + acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], + data->lmp_firstneigh[ii]); + for (int icoeff = 0; icoeff < data->ndescriptors; icoeff++) { + data->descriptors[ii][icoeff] = acemlimpl->ace->projections(icoeff); + } + } +} + +/* ---------------------------------------------------------------------- + compute forces for each atom + ---------------------------------------------------------------------- */ + +void MLIAPDescriptorACE::compute_forces(class MLIAPData *data) +{ + double fij[3]; + double **f = atom->f; + int ij = 0; + + int max_jnum = -1; + int nei = 0; + int jtmp = 0; + for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) { + int itmp = data->iatoms[iitmp]; + jtmp = data->numneighs[iitmp]; + nei = nei + jtmp; + if (jtmp > max_jnum) { max_jnum = jtmp; } + } + + // BEGIN force loop + for (int ii = 0; ii < data->nlistatoms; ii++) { + const int i = data->iatoms[ii]; + const int ielem = data->ielems[ii]; + delete acemlimpl->ace; + acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set); + acemlimpl->ace->compute_projections = 1; + acemlimpl->ace->compute_b_grad = 1; + acemlimpl->ace->element_type_mapping.init(nelements + 1); + for (int ik = 1; ik <= nelements; ik++) { + for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) { + if (mu != -1) { + if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; } + } + } + } + + const int jnum = data->numneighs[ii]; + acemlimpl->ace->resize_neighbours_cache(jnum); + acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], + data->lmp_firstneigh[ii]); + int ij0 = ij; + int ninside = 0; + for (int jj = 0; jj < jnum; jj++) { + ninside++; + ij++; + } + + ij = ij0; + const int *const jlist = data->lmp_firstneigh[ii]; + double **x = atom->x; + const double xtmp = x[i][0]; + const double ytmp = x[i][1]; + const double ztmp = x[i][2]; + + for (int jj = 0; jj < jnum; jj++) { + const int j = jlist[jj]; + for (int idim = 0; idim < 3; idim++) { fij[idim] = 0.0; } + for (int iicoeff = 0; iicoeff < ndescriptors; iicoeff++) { + DOUBLE_TYPE fx_dB = + acemlimpl->ace->neighbours_dB(iicoeff, jj, 0) * data->betas[ii][iicoeff]; + DOUBLE_TYPE fy_dB = + acemlimpl->ace->neighbours_dB(iicoeff, jj, 1) * data->betas[ii][iicoeff]; + DOUBLE_TYPE fz_dB = + acemlimpl->ace->neighbours_dB(iicoeff, jj, 2) * data->betas[ii][iicoeff]; + // add force contribution from each descriptor + fij[0] += fx_dB; + fij[1] += fy_dB; + fij[2] += fz_dB; + f[i][0] += fx_dB; + f[i][1] += fy_dB; + f[i][2] += fz_dB; + f[j][0] -= fx_dB; + f[j][1] -= fy_dB; + f[j][2] -= fz_dB; + } + const double delx = x[j][0] - xtmp; + const double dely = x[j][1] - ytmp; + const double delz = x[j][2] - ztmp; + double rij_tmp[3] = {delx, dely, delz}; + if (data->vflag) data->pairmliap->v_tally(i, j, fij, rij_tmp); + ij++; + } + } +} + +/* ---------------------------------------------------------------------- + calculate gradients of forces w.r.t. parameters + ---------------------------------------------------------------------- */ + +void MLIAPDescriptorACE::compute_force_gradients(class MLIAPData *data) +{ + int ij = 0; + + int max_jnum = -1; + int nei = 0; + int jtmp = 0; + for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) { + int itmp = data->iatoms[iitmp]; + jtmp = data->numneighs[iitmp]; + nei = nei + jtmp; + if (jtmp > max_jnum) { max_jnum = jtmp; } + } + + for (int ii = 0; ii < data->nlistatoms; ii++) { + const int i = data->iatoms[ii]; + const int ielem = data->ielems[ii]; + delete acemlimpl->ace; + acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set); + acemlimpl->ace->compute_projections = 1; + acemlimpl->ace->compute_b_grad = 1; + + acemlimpl->ace->element_type_mapping.init(nelements + 1); + for (int ik = 1; ik <= nelements; ik++) { + for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) { + if (mu != -1) { + if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; } + } + } + } + + const int jnum = data->numneighs[ii]; + const int *const jlist = data->lmp_firstneigh[ii]; + acemlimpl->ace->resize_neighbours_cache(jnum); + acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], + data->lmp_firstneigh[ii]); + for (int jj = 0; jj < jnum; jj++) { + const int j = jlist[jj]; + for (int inz = 0; inz < data->gamma_nnz; inz++) { + const int l = data->gamma_row_index[ii][inz]; + const int k = data->gamma_col_index[ii][inz]; + DOUBLE_TYPE fx_dB = acemlimpl->ace->neighbours_dB(k, jj, 0); + DOUBLE_TYPE fy_dB = acemlimpl->ace->neighbours_dB(k, jj, 1); + DOUBLE_TYPE fz_dB = acemlimpl->ace->neighbours_dB(k, jj, 2); + data->gradforce[i][l] += data->gamma[ii][inz] * fx_dB; + data->gradforce[i][l + data->yoffset] += data->gamma[ii][inz] * fy_dB; + data->gradforce[i][l + data->zoffset] += data->gamma[ii][inz] * fz_dB; + data->gradforce[j][l] -= data->gamma[ii][inz] * fx_dB; + data->gradforce[j][l + data->yoffset] -= data->gamma[ii][inz] * fy_dB; + data->gradforce[j][l + data->zoffset] -= data->gamma[ii][inz] * fz_dB; + } + ij++; + } + } +} + +/* ---------------------------------------------------------------------- + compute descriptor gradients for each neighbor atom + ---------------------------------------------------------------------- */ + +void MLIAPDescriptorACE::compute_descriptor_gradients(class MLIAPData *data) +{ + int ij = 0; + int max_jnum = -1; + int nei = 0; + int jtmp = 0; + for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) { + int itmp = data->iatoms[iitmp]; + jtmp = data->numneighs[iitmp]; + nei = nei + jtmp; + if (jtmp > max_jnum) { max_jnum = jtmp; } + } + for (int ii = 0; ii < data->nlistatoms; ii++) { + const int i = data->iatoms[ii]; + const int ielem = data->ielems[ii]; + delete acemlimpl->ace; + acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set); + acemlimpl->ace->compute_projections = 1; + acemlimpl->ace->compute_b_grad = 1; + + acemlimpl->ace->element_type_mapping.init(nelements + 1); + for (int ik = 1; ik <= nelements; ik++) { + for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) { + if (mu != -1) { + if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; } + } + } + } + + const int *const jlist = data->lmp_firstneigh[ii]; + const int jnum = data->numneighs[ii]; + acemlimpl->ace->resize_neighbours_cache(jnum); + acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], + data->lmp_firstneigh[ii]); + int ij0 = ij; + int ninside = 0; + for (int jj = 0; jj < jnum; jj++) { + ninside++; + ij++; + } + + ij = ij0; + for (int jj = 0; jj < data->numneighs[ii]; jj++) { + const int jt = data->jatoms[ij]; + + const int j = jlist[jj]; + int yoffset = ndescriptors; + int zoffset = ndescriptors * 2; + for (int iicoeff = 0; iicoeff < ndescriptors; iicoeff++) { + DOUBLE_TYPE fx_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 0); + DOUBLE_TYPE fy_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 1); + DOUBLE_TYPE fz_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 2); + // Accumulate dB_k^i/dRi, dB_k^i/dRj + data->graddesc[ij][iicoeff][0] = fx_dB; + data->graddesc[ij][iicoeff][1] = fy_dB; + data->graddesc[ij][iicoeff][2] = fz_dB; + } + ij++; + } + } +} + +void MLIAPDescriptorACE::init() {} + +/* ---------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + memory usage +------------------------------------------------------------------------- */ + +double MLIAPDescriptorACE::memory_usage() +{ + double bytes = MLIAPDescriptor::memory_usage(); + + return bytes; +} + +#endif diff --git a/src/ML-IAP/mliap_descriptor_ace.h b/src/ML-IAP/mliap_descriptor_ace.h new file mode 100644 index 00000000000..116a154acb8 --- /dev/null +++ b/src/ML-IAP/mliap_descriptor_ace.h @@ -0,0 +1,51 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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. +------------------------------------------------------------------------- */ + +#ifndef LMP_MLIAP_DESCRIPTOR_ACE_H +#define LMP_MLIAP_DESCRIPTOR_ACE_H + +#include "mliap_descriptor.h" + +namespace LAMMPS_NS { + +class MLIAPDescriptorACE : public MLIAPDescriptor { + public: + MLIAPDescriptorACE(LAMMPS *, char *); + ~MLIAPDescriptorACE() override; + void compute_descriptors(class MLIAPData *) override; + void compute_forces(class MLIAPData *) override; + void compute_force_gradients(class MLIAPData *) override; + void compute_descriptor_gradients(class MLIAPData *) override; + void init() override; + double memory_usage() override; + + double rcutfac; + int allocated = 0; + int max_num = 0; + char *ctilde_file; + + protected: + virtual void allocate(); + int natoms, nmax, size_peratom, lastcol; + int ncoeff, nvalues, nperdim, yoffset, zoffset; + int ndims_peratom, ndims_force, ndims_virial; + int n_r1, n_rp; + int chemflag; + int bikflag, bik_rows, dgradflag, dgrad_rows; + double cutmax; + struct ACE_ML_impl *acemlimpl; +}; + +} // namespace LAMMPS_NS + +#endif diff --git a/src/ML-IAP/mliap_descriptor_snap.cpp b/src/ML-IAP/mliap_descriptor_snap.cpp index cec03fca767..e8f6eec9776 100644 --- a/src/ML-IAP/mliap_descriptor_snap.cpp +++ b/src/ML-IAP/mliap_descriptor_snap.cpp @@ -31,8 +31,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define MAXWORD 3 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -380,7 +379,8 @@ void MLIAPDescriptorSNAP::read_paramfile(char *paramfilename) utils::getsyserror()); } - char line[MAXLINE], *ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int n; diff --git a/src/ML-IAP/mliap_descriptor_so3.cpp b/src/ML-IAP/mliap_descriptor_so3.cpp index 4f976f06bec..676c53a4a81 100644 --- a/src/ML-IAP/mliap_descriptor_so3.cpp +++ b/src/ML-IAP/mliap_descriptor_so3.cpp @@ -30,8 +30,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define MAXWORD 3 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -90,7 +89,8 @@ void MLIAPDescriptorSO3::read_paramfile(char *paramfilename) utils::getsyserror()); } - char line[MAXLINE], *ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int n, nwords; diff --git a/src/ML-IAP/mliap_model.cpp b/src/ML-IAP/mliap_model.cpp index a93090d3644..232bf18bbd1 100644 --- a/src/ML-IAP/mliap_model.cpp +++ b/src/ML-IAP/mliap_model.cpp @@ -26,8 +26,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define MAXWORD 3 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -93,7 +92,8 @@ void MLIAPModelSimple::read_coeffs(char *coefffilename) utils::getsyserror()); } - char line[MAXLINE], *ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int n; diff --git a/src/ML-IAP/mliap_model_nn.cpp b/src/ML-IAP/mliap_model_nn.cpp index 6c039f9a07e..6695109f918 100644 --- a/src/ML-IAP/mliap_model_nn.cpp +++ b/src/ML-IAP/mliap_model_nn.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -75,7 +75,8 @@ void MLIAPModelNN::read_coeffs(char *coefffilename) utils::getsyserror()); } - char line[MAXLINE], *ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int n, eof = 0, nwords = 0; while (nwords == 0) { if (comm->me == 0) { diff --git a/src/ML-IAP/mliap_so3.cpp b/src/ML-IAP/mliap_so3.cpp index 72ca466ab38..bfdde4b9684 100644 --- a/src/ML-IAP/mliap_so3.cpp +++ b/src/ML-IAP/mliap_so3.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 1.0e-8 +static constexpr double SMALL = 1.0e-8; /* ---------------------------------------------------------------------- */ diff --git a/src/ML-IAP/mliap_unified.cpp b/src/ML-IAP/mliap_unified.cpp index de1d0bcb7df..7697204e441 100644 --- a/src/ML-IAP/mliap_unified.cpp +++ b/src/ML-IAP/mliap_unified.cpp @@ -254,10 +254,8 @@ void LAMMPS_NS::update_pair_energy(MLIAPData *data, double *eij) double e = 0.5 * eij[ii]; // must not count any contribution where i is not a local atom - if (i < nlocal) { - data->eatoms[i] += e; - e_total += e; - } + data->eatoms[i] += e; + e_total += e; } data->energy = e_total; } @@ -277,17 +275,14 @@ void LAMMPS_NS::update_pair_forces(MLIAPData *data, double *fij) int i = data->pair_i[ii]; int j = data->jatoms[ii]; - // must not count any contribution where i is not a local atom - if (i < nlocal) { - f[i][0] += fij[ii3]; - f[i][1] += fij[ii3 + 1]; - f[i][2] += fij[ii3 + 2]; - f[j][0] -= fij[ii3]; - f[j][1] -= fij[ii3 + 1]; - f[j][2] -= fij[ii3 + 2]; - - if (data->vflag) data->pairmliap->v_tally(i, j, &fij[ii3], data->rij[ii]); - } + f[i][0] += fij[ii3]; + f[i][1] += fij[ii3 + 1]; + f[i][2] += fij[ii3 + 2]; + f[j][0] -= fij[ii3]; + f[j][1] -= fij[ii3 + 1]; + f[j][2] -= fij[ii3 + 2]; + + if (data->vflag) data->pairmliap->v_tally(i, j, &fij[ii3], data->rij[ii]); } } diff --git a/src/ML-IAP/mliap_unified_couple.pyx b/src/ML-IAP/mliap_unified_couple.pyx index 3148b96b51a..6c8331d0fad 100644 --- a/src/ML-IAP/mliap_unified_couple.pyx +++ b/src/ML-IAP/mliap_unified_couple.pyx @@ -8,6 +8,7 @@ import lammps.mliap cimport cython from cpython.ref cimport PyObject from libc.stdlib cimport malloc, free +from libc.string cimport memcpy cdef extern from "lammps.h" namespace "LAMMPS_NS": @@ -387,15 +388,26 @@ cdef public object mliap_unified_connect(char *fname, MLIAPDummyModel * model, cdef int nelements = len(unified.element_types) cdef char **elements = malloc(nelements * sizeof(char*)) + cdef char * c_str + cdef char * s + cdef ssize_t slen if not elements: raise MemoryError("failed to allocate memory for element names") - cdef char *elem_name for i, elem in enumerate(unified.element_types): - elem_name_bytes = elem.encode('UTF-8') - elem_name = elem_name_bytes - elements[i] = &elem_name[0] + py_str = elem.encode('UTF-8') + + s = py_str + slen = len(py_str) + c_str = malloc((slen+1)*sizeof(char)) + if not c_str: + raise MemoryError("failed to allocate memory for element names") + memcpy(c_str, s, slen) + c_str[slen] = 0 + + elements[i] = c_str + unified_int.descriptor.set_elements(elements, nelements) unified_int.model.nelements = nelements diff --git a/src/ML-IAP/pair_mliap.cpp b/src/ML-IAP/pair_mliap.cpp index 66e8b848cdf..8585fffadb9 100644 --- a/src/ML-IAP/pair_mliap.cpp +++ b/src/ML-IAP/pair_mliap.cpp @@ -21,6 +21,9 @@ #include "mliap_data.h" #include "mliap_descriptor_snap.h" #include "mliap_descriptor_so3.h" +#ifdef MLIAP_ACE +#include "mliap_descriptor_ace.h" +#endif #include "mliap_model_linear.h" #include "mliap_model_nn.h" #include "mliap_model_quadratic.h" @@ -181,8 +184,16 @@ void PairMLIAP::settings(int narg, char ** arg) if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "pair_style mliap descriptor so3", error); descriptor = new MLIAPDescriptorSO3(lmp,arg[iarg+2]); iarg += 3; - - } else error->all(FLERR,"Illegal pair_style mliap command"); + } +#ifdef MLIAP_ACE + else if (strcmp(arg[iarg+1],"ace") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal pair_style mliap command"); + if (lmp->kokkos) error->all(FLERR,"Cannot (yet) use KOKKOS package with ACE descriptors"); + descriptor = new MLIAPDescriptorACE(lmp,arg[iarg+2]); + iarg += 3; + } +#endif + else error->all(FLERR,"Illegal pair_style mliap command"); } else if (strcmp(arg[iarg], "unified") == 0) { #ifdef MLIAP_PYTHON if (model != nullptr) error->all(FLERR,"Illegal multiple pair_style mliap model definitions"); diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index b96432cfe37..fee9a0fa0e6 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -11,24 +11,21 @@ ------------------------------------------------------------------------- */ #include "compute_pace.h" -#include "ace-evaluator/ace_evaluator.h" + #include "ace-evaluator/ace_c_basis.h" -#include "ace-evaluator/ace_abstract_basis.h" +#include "ace-evaluator/ace_evaluator.h" #include "ace-evaluator/ace_types.h" -#include -#include #include "atom.h" -#include "update.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" #include "modify.h" -#include "neighbor.h" #include "neigh_list.h" -#include "neigh_request.h" -#include "force.h" +#include "neighbor.h" #include "pair.h" -#include "comm.h" -#include "memory.h" -#include "error.h" +#include "update.h" namespace LAMMPS_NS { struct ACECimpl { @@ -41,14 +38,14 @@ struct ACECimpl { ACECTildeBasisSet *basis_set; ACECTildeEvaluator *ace; }; -} +} // namespace LAMMPS_NS using namespace LAMMPS_NS; enum { SCALAR, VECTOR, ARRAY }; ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), paceall(nullptr), - pace_peratom(nullptr), map(nullptr), cg(nullptr), c_pe(nullptr), c_virial(nullptr) + Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), paceall(nullptr), + pace_peratom(nullptr), map(nullptr), c_pe(nullptr), c_virial(nullptr), acecimpl(nullptr) { array_flag = 1; extarray = 0; @@ -111,6 +108,8 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : ComputePACE::~ComputePACE() { + modify->delete_compute(id_virial); + delete acecimpl; memory->destroy(pace); memory->destroy(paceall); @@ -132,10 +131,7 @@ void ComputePACE::init() // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); - int count = 0; - for (int i = 0; i < modify->ncompute; i++) - if (strcmp(modify->compute[i]->style,"pace") == 0) count++; - if (count > 1 && comm->me == 0) + if (modify->get_compute_by_style("pace").size() > 1 && comm->me == 0) error->warning(FLERR,"More than one compute pace"); // allocate memory for global array @@ -145,22 +141,13 @@ void ComputePACE::init() // find compute for reference energy - std::string id_pe = std::string("thermo_pe"); - int ipe = modify->find_compute(id_pe); - if (ipe == -1) - error->all(FLERR,"compute thermo_pe does not exist."); - c_pe = modify->compute[ipe]; + c_pe = modify->get_compute_by_id("thermo_pe"); + if (!c_pe) error->all(FLERR,"Compute thermo_pe does not exist."); // add compute for reference virial tensor - std::string id_virial = std::string("pace_press"); - std::string pcmd = id_virial + " all pressure NULL virial"; - modify->add_compute(pcmd); - - int ivirial = modify->find_compute(id_virial); - if (ivirial == -1) - error->all(FLERR,"compute pace_press does not exist."); - c_virial = modify->compute[ivirial]; + id_virial = id + std::string("_press"); + c_virial = modify->add_compute(id_virial + " all pressure NULL virial"); } /* ---------------------------------------------------------------------- */ diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index 496c8a16d3b..23243b0066c 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -43,10 +43,11 @@ class ComputePACE : public Compute { double **pace_peratom; int *map; // map types to [0,nelements) int bikflag, bik_rows, dgradflag, dgrad_rows; - double *cg; double cutmax; + Compute *c_pe; Compute *c_virial; + std::string id_virial; void dbdotr_compute(); struct ACECimpl *acecimpl; diff --git a/src/ML-PACE/pair_pace_extrapolation.cpp b/src/ML-PACE/pair_pace_extrapolation.cpp index d9b8d3588af..ec42d232af0 100644 --- a/src/ML-PACE/pair_pace_extrapolation.cpp +++ b/src/ML-PACE/pair_pace_extrapolation.cpp @@ -29,15 +29,12 @@ Copyright 2022 Yury Lysogorskiy^1, Anton Bochkarev^1, Matous Mrovec^1, Ralf Drau #include "force.h" #include "math_const.h" #include "memory.h" -#include "modify.h" #include "neigh_list.h" -#include "neigh_request.h" #include "neighbor.h" #include "update.h" -#include -#include #include +#include #include "ace/ace_b_basis.h" #include "ace/ace_b_evaluator.h" diff --git a/src/ML-PACE/pair_pace_extrapolation.h b/src/ML-PACE/pair_pace_extrapolation.h index 2dcec04d4b4..440d999029e 100644 --- a/src/ML-PACE/pair_pace_extrapolation.h +++ b/src/ML-PACE/pair_pace_extrapolation.h @@ -28,7 +28,6 @@ PairStyle(pace/extrapolation,PairPACEExtrapolation) #define LMP_PAIR_PACE_AL_H #include "pair.h" -#include namespace LAMMPS_NS { diff --git a/src/ML-POD/fitpod_command.cpp b/src/ML-POD/fitpod_command.cpp index 87de65c3e23..ef39962e0bf 100644 --- a/src/ML-POD/fitpod_command.cpp +++ b/src/ML-POD/fitpod_command.cpp @@ -33,8 +33,7 @@ using namespace LAMMPS_NS; using MathSpecial::powint; -#define MAXLINE 1024 - +static constexpr int MAXLINE = 1024; static constexpr double SMALL = 1.0e-10; FitPOD::FitPOD(LAMMPS *_lmp) : Command(_lmp), podptr(nullptr) @@ -151,7 +150,8 @@ int FitPOD::read_data_file(double *fitting_weights, std::string &file_format, // loop through lines of training data file and parse keywords - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { if (comm->me == 0) { @@ -252,7 +252,8 @@ int FitPOD::get_number_atom_exyz(std::vector& num_atom, int& num_atom_sum, error->one(FLERR,"Cannot open POD coefficient file {}: ", filename, utils::getsyserror()); } - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int num_configs = 0; num_atom_sum = 0; @@ -324,7 +325,8 @@ void FitPOD::read_exyz_file(double *lattice, double *stress, double *energy, dou error->one(FLERR,"Cannot open POD coefficient file {}: ", filename, utils::getsyserror()); } - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int cfi = 0; int nat = 0; diff --git a/src/ML-POD/mlpod.cpp b/src/ML-POD/mlpod.cpp index f20498b50b3..088b9abadc1 100644 --- a/src/ML-POD/mlpod.cpp +++ b/src/ML-POD/mlpod.cpp @@ -35,7 +35,7 @@ using MathConst::MY_PI; using MathSpecial::cube; using MathSpecial::powint; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; MLPOD::podstruct::podstruct() : twobody{4, 8, 6}, threebody{4, 8, 5, 4}, fourbody{0, 0, 0, 0}, pbc(nullptr), @@ -302,7 +302,8 @@ void MLPOD::read_pod(const std::string &pod_file) // loop through lines of POD file and parse keywords - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; while (true) { if (comm->me == 0) { @@ -639,7 +640,8 @@ void MLPOD::read_coeff_file(const std::string &coeff_file) // check format for first line of file - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int nwords = 0; while (nwords == 0) { diff --git a/src/ML-RANN/pair_rann.cpp b/src/ML-RANN/pair_rann.cpp index f2948cbb43c..4ec1f45703d 100644 --- a/src/ML-RANN/pair_rann.cpp +++ b/src/ML-RANN/pair_rann.cpp @@ -55,7 +55,7 @@ DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918 #include "rann_fingerprint_radialscreenedspin.h" #include "rann_fingerprint_radialspin.h" -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; using namespace LAMMPS_NS; @@ -616,7 +616,8 @@ void PairRANN::read_weight(std::vector line,std::vector line,std::vector line1,FILE* fp,char *filename,int *linenum) { int i,j,l; - char linetemp[MAXLINE],*ptr; + char linetemp[MAXLINE] = {'\0'}; + char *ptr; for (l=0;lone(filename,*linenum-1,"networklayers must be defined before biases."); diff --git a/src/ML-SNAP/compute_sna_atom.cpp b/src/ML-SNAP/compute_sna_atom.cpp index da49b151176..c3582f200c5 100644 --- a/src/ML-SNAP/compute_sna_atom.cpp +++ b/src/ML-SNAP/compute_sna_atom.cpp @@ -26,6 +26,7 @@ #include "memory.h" #include "error.h" +#include #include using namespace LAMMPS_NS; @@ -580,58 +581,56 @@ void ComputeSNAAtom::select3(int k, int n, double *arr, int *iarr, double **arr3 } } -double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts) +double *ComputeSNAAtom::weights(double *rsq, double rcut, int ncounts) { - double * w=nullptr; + double *w=nullptr; memory->destroy(w); memory->create(w, ncounts, "snann:gauss_weights"); double rloc=0.; - for (int i=0; i rcut){ - w[i]=0.; - } else { - w[i]=1.; - } + for (int i=0; i rcut){ + w[i]=0.; + } else { + w[i]=1.; } + } return w; } -double * ComputeSNAAtom::tanh_weights(double * rsq, double rcut, double delta, int ncounts) +double *ComputeSNAAtom::tanh_weights(double *rsq, double rcut, double delta, int ncounts) { - double * w=nullptr; + double *w=nullptr; memory->destroy(w); memory->create(w, ncounts, "snann:gauss_weights"); double rloc=0.; - for (int i=0; idestroy(www); } else if (weightmode == 1) { - double * www = tanh_weights(rsq, rcut, delta, ncounts); + double *www = tanh_weights(rsq, rcut, delta, ncounts); S_sol = sum_weights(rsq, www, ncounts); memory->destroy(www); } @@ -639,38 +638,31 @@ double ComputeSNAAtom::get_target_rcut(double S_target, double * rsq, double rcu return err; } -double * ComputeSNAAtom::dichotomie(double S_target, double a, double b, double e, double * rsq, int ncounts, int weightmode, double delta) +double *ComputeSNAAtom::dichotomie(double S_target, double a, double b, double e, double *rsq, + int ncounts, int weightmode, double delta) { double d=b-a; - double * sol = nullptr; + double *sol = nullptr; memory->destroy(sol); memory->create(sol, 2, "snann:sol"); - double m=0.; - - int cnt=0; - do - { - m = ( a + b ) / 2.; - d = fabs( b - a ); - double f_ra = get_target_rcut(S_target, rsq, a, ncounts, weightmode, delta); - double f_rm = get_target_rcut(S_target, rsq, m, ncounts, weightmode, delta); - if (f_rm == 0.) - { - sol[0]=m; - sol[1]=m; - return sol; - } - else if (f_rm*f_ra > 0.) - { - a = m; - } - else - { - b = m; - } - cnt+=1; - } while ( d > e ); + double m=0.0; + + do { + m = (a + b) / 2.0; + d = fabs(b - a); + double f_ra = get_target_rcut(S_target, rsq, a, ncounts, weightmode, delta); + double f_rm = get_target_rcut(S_target, rsq, m, ncounts, weightmode, delta); + if (f_rm == 0.0) { + sol[0]=m; + sol[1]=m; + return sol; + } else if (f_rm*f_ra > 0.0) { + a = m; + } else { + b = m; + } + } while (d > e); sol[0]=a; sol[1]=b; return sol; diff --git a/src/ML-SNAP/compute_snap.cpp b/src/ML-SNAP/compute_snap.cpp index 3141791f6cb..99a9a96361b 100644 --- a/src/ML-SNAP/compute_snap.cpp +++ b/src/ML-SNAP/compute_snap.cpp @@ -30,14 +30,13 @@ using namespace LAMMPS_NS; -enum{SCALAR,VECTOR,ARRAY}; +enum { SCALAR, VECTOR, ARRAY }; ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), snap(nullptr), - snapall(nullptr), snap_peratom(nullptr), radelem(nullptr), wjelem(nullptr), - sinnerelem(nullptr), dinnerelem(nullptr), snaptr(nullptr) + Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), snap(nullptr), snapall(nullptr), + snap_peratom(nullptr), radelem(nullptr), wjelem(nullptr), map(nullptr), sinnerelem(nullptr), + dinnerelem(nullptr), snaptr(nullptr), c_pe(nullptr), c_virial(nullptr) { - array_flag = 1; extarray = 0; @@ -172,22 +171,18 @@ ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) : } if (switchinnerflag && !(sinnerflag && dinnerflag)) - error->all( - FLERR, - "Illegal compute {} command: switchinnerflag = 1, missing sinner/dinner keyword", - style); + error->all(FLERR, "Illegal compute {} command: switchinnerflag = 1, " + "missing sinner/dinner keyword", style); if (!switchinnerflag && (sinnerflag || dinnerflag)) - error->all( - FLERR, - "Illegal compute {} command: switchinnerflag = 0, unexpected sinner/dinner keyword", - style); + error->all(FLERR, "Illegal compute {} command: switchinnerflag = 0, " + "unexpected sinner/dinner keyword", style); if (dgradflag && !bikflag) - error->all(FLERR,"Illegal compute snap command: dgradflag=1 requires bikflag=1"); + error->all(FLERR, "Illegal compute snap command: dgradflag=1 requires bikflag=1"); if (dgradflag && quadraticflag) - error->all(FLERR,"Illegal compute snap command: dgradflag=1 not implemented for quadratic SNAP"); + error->all(FLERR, "Illegal compute snap command: dgradflag=1 not implemented for quadratic SNAP"); snaptr = new SNA(lmp, rfac0, twojmax, rmin0, switchflag, bzeroflag, chemflag, bnormflag, wselfallflag, nelements, switchinnerflag); @@ -210,7 +205,8 @@ ComputeSnap::ComputeSnap(LAMMPS *lmp, int narg, char **arg) : if (dgradflag) { size_array_rows = bik_rows + 3*natoms*natoms + 1; size_array_cols = nvalues + 3; - error->warning(FLERR,"dgradflag=1 creates a N^2 array, beware of large systems."); + if (comm->me == 0) + error->warning(FLERR, "dgradflag=1 creates a N^2 array, beware of large systems."); } else size_array_cols = nvalues*atom->ntypes + 1; lastcol = size_array_cols-1; @@ -249,7 +245,8 @@ void ComputeSnap::init() error->all(FLERR,"Compute snap requires a pair style be defined"); if (cutmax > force->pair->cutforce) - error->all(FLERR,"Compute snap cutoff is longer than pairwise cutoff"); + error->all(FLERR,"Compute snap cutoff {} is longer than pairwise cutoff {}", + cutmax, force->pair->cutforce); // need an occasional full neighbor list @@ -261,31 +258,19 @@ void ComputeSnap::init() // allocate memory for global array - memory->create(snap,size_array_rows,size_array_cols, - "snap:snap"); - memory->create(snapall,size_array_rows,size_array_cols, - "snap:snapall"); + memory->create(snap,size_array_rows,size_array_cols, "snap:snap"); + memory->create(snapall,size_array_rows,size_array_cols, "snap:snapall"); array = snapall; - // find compute for reference energy - - std::string id_pe = std::string("thermo_pe"); - int ipe = modify->find_compute(id_pe); - if (ipe == -1) - error->all(FLERR,"compute thermo_pe does not exist."); - c_pe = modify->compute[ipe]; - - // add compute for reference virial tensor + // find compute for global reference potential energy - std::string id_virial = std::string("snap_press"); - std::string pcmd = id_virial + " all pressure NULL virial"; - modify->add_compute(pcmd); + c_pe = modify->get_compute_by_id("thermo_pe"); + if (!c_pe) error->all(FLERR,"compute thermo_pe does not exist."); - int ivirial = modify->find_compute(id_virial); - if (ivirial == -1) - error->all(FLERR,"compute snap_press does not exist."); - c_virial = modify->compute[ivirial]; + // add compute for global reference virial tensor + id_virial = id + std::string("_press"); + c_virial = modify->add_compute(id_virial + " all pressure NULL virial"); } @@ -309,8 +294,7 @@ void ComputeSnap::compute_array() if (atom->nmax > nmax) { memory->destroy(snap_peratom); nmax = atom->nmax; - memory->create(snap_peratom,nmax,size_peratom, - "snap:snap_peratom"); + memory->create(snap_peratom,nmax,size_peratom, "snap:snap_peratom"); } // clear global array diff --git a/src/ML-SNAP/compute_snap.h b/src/ML-SNAP/compute_snap.h index 2b8b972bbc3..fe0b35d9e3b 100644 --- a/src/ML-SNAP/compute_snap.h +++ b/src/ML-SNAP/compute_snap.h @@ -28,6 +28,7 @@ class ComputeSnap : public Compute { public: ComputeSnap(class LAMMPS *, int, char **); ~ComputeSnap() override; + void init() override; void init_list(int, class NeighList *) override; void compute_array() override; @@ -56,10 +57,10 @@ class ComputeSnap : public Compute { Compute *c_pe; Compute *c_virial; + std::string id_virial; void dbdotr_compute(); }; - } // namespace LAMMPS_NS #endif diff --git a/src/ML-SNAP/pair_snap.cpp b/src/ML-SNAP/pair_snap.cpp index 3029e9212df..ff6409095d5 100644 --- a/src/ML-SNAP/pair_snap.cpp +++ b/src/ML-SNAP/pair_snap.cpp @@ -29,8 +29,7 @@ using namespace LAMMPS_NS; -#define MAXLINE 1024 -#define MAXWORD 3 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ @@ -475,7 +474,8 @@ void PairSNAP::read_files(char *coefffilename, char *paramfilename) coefffilename, utils::getsyserror()); } - char line[MAXLINE],*ptr; + char line[MAXLINE] = {'\0'}; + char *ptr; int eof = 0; int nwords = 0; while (nwords == 0) { diff --git a/src/MOFFF/angle_class2_p6.cpp b/src/MOFFF/angle_class2_p6.cpp index bfa6a068f56..39dec0d9d6f 100644 --- a/src/MOFFF/angle_class2_p6.cpp +++ b/src/MOFFF/angle_class2_p6.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/MOFFF/angle_cosine_buck6d.cpp b/src/MOFFF/angle_cosine_buck6d.cpp index dbdf39292e2..0ab9cbbf1f4 100644 --- a/src/MOFFF/angle_cosine_buck6d.cpp +++ b/src/MOFFF/angle_cosine_buck6d.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/MOFFF/improper_inversion_harmonic.cpp b/src/MOFFF/improper_inversion_harmonic.cpp index 817b35332a7..c0de9686269 100644 --- a/src/MOFFF/improper_inversion_harmonic.cpp +++ b/src/MOFFF/improper_inversion_harmonic.cpp @@ -31,13 +31,9 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperInversionHarmonic::ImproperInversionHarmonic(LAMMPS *lmp) : Improper(lmp) diff --git a/src/MOFFF/pair_buck6d_coul_gauss_long.cpp b/src/MOFFF/pair_buck6d_coul_gauss_long.cpp index a750fea0849..2ccc9214485 100644 --- a/src/MOFFF/pair_buck6d_coul_gauss_long.cpp +++ b/src/MOFFF/pair_buck6d_coul_gauss_long.cpp @@ -36,7 +36,7 @@ using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 +static constexpr double EWALD_F = 1.12837917; /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp index c5e65be4023..b1984a69185 100644 --- a/src/MOLECULE/angle_table.cpp +++ b/src/MOLECULE/angle_table.cpp @@ -38,8 +38,8 @@ using MathConst::RAD2DEG; enum { LINEAR, SPLINE }; -#define SMALL 0.001 -#define TINY 1.E-10 +static constexpr double SMALL = 0.001; +static constexpr double TINY = 1.E-10; /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/bond_gromos.cpp b/src/MOLECULE/bond_gromos.cpp index badb808007e..1917f186868 100644 --- a/src/MOLECULE/bond_gromos.cpp +++ b/src/MOLECULE/bond_gromos.cpp @@ -24,6 +24,7 @@ #include "memory.h" #include "neighbor.h" +#include #include using namespace LAMMPS_NS; diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp index 4068e98e8d9..67cd3769ca5 100644 --- a/src/MOLECULE/bond_table.cpp +++ b/src/MOLECULE/bond_table.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; enum { NONE, LINEAR, SPLINE }; -#define BIGNUM 1.0e300 +static constexpr double BIGNUM = 1.0e300; /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index cb4cb8cadc2..bc220da30e3 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -970,7 +970,8 @@ void FixCMAP::read_data_section(char * /*keyword*/, int /*n*/, char *buf, atom5 = values.next_tagint(); if (values.has_next()) throw TokenizerException("too many items",line); } catch (std::exception &e) { - error->all(FLERR,"Incorrect format of CMAP section: {}", e.what()); + error->all(FLERR,"Incorrect format of CMAP section in data file: {}{}", + e.what(), utils::errorurl(2)); } atom1 += id_offset; diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.cpp b/src/MOLECULE/pair_hbond_dreiding_lj.cpp index 496e368452a..dbd7db7780d 100644 --- a/src/MOLECULE/pair_hbond_dreiding_lj.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_lj.cpp @@ -37,8 +37,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.001 -#define CHUNK 8 +static constexpr double SMALL = 0.001; +static constexpr int CHUNK = 8; /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.cpp b/src/MOLECULE/pair_hbond_dreiding_morse.cpp index 7ec2db073d4..5cc45ea2348 100644 --- a/src/MOLECULE/pair_hbond_dreiding_morse.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_morse.cpp @@ -37,8 +37,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.001 -#define CHUNK 8 +static constexpr double SMALL = 0.001; +static constexpr int CHUNK = 8; /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/pair_tip4p_cut.cpp b/src/MOLECULE/pair_tip4p_cut.cpp index 6d27c1a1640..73a5651e6ba 100644 --- a/src/MOLECULE/pair_tip4p_cut.cpp +++ b/src/MOLECULE/pair_tip4p_cut.cpp @@ -30,6 +30,7 @@ #include "neighbor.h" #include +#include using namespace LAMMPS_NS; diff --git a/src/MOLFILE/molfile_interface.cpp b/src/MOLFILE/molfile_interface.cpp index 8f5ac8545eb..84aa63cefc6 100644 --- a/src/MOLFILE/molfile_interface.cpp +++ b/src/MOLFILE/molfile_interface.cpp @@ -26,7 +26,6 @@ #include #include -#include #if vmdplugin_ABIVERSION < 16 #error "unsupported VMD molfile plugin ABI version" diff --git a/src/MOLFILE/reader_molfile.cpp b/src/MOLFILE/reader_molfile.cpp index 441a152ad92..43154d658b8 100644 --- a/src/MOLFILE/reader_molfile.cpp +++ b/src/MOLFILE/reader_molfile.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; typedef MolfileInterface MFI; using namespace MathConst; -#define SMALL 1.0e-6 +static constexpr double SMALL = 1.0e-6; // true if the difference between two floats is "small". // cannot use fabsf() since it is not fully portable. diff --git a/src/OPENMP/angle_charmm_omp.cpp b/src/OPENMP/angle_charmm_omp.cpp index 9eb91bcb27c..bb5dcca0daf 100644 --- a/src/OPENMP/angle_charmm_omp.cpp +++ b/src/OPENMP/angle_charmm_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_class2_omp.cpp b/src/OPENMP/angle_class2_omp.cpp index 300f8f2b3c4..9480d2ebfbe 100644 --- a/src/OPENMP/angle_class2_omp.cpp +++ b/src/OPENMP/angle_class2_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_cosine_delta_omp.cpp b/src/OPENMP/angle_cosine_delta_omp.cpp index 98b6a7ac56d..cc8370d0531 100644 --- a/src/OPENMP/angle_cosine_delta_omp.cpp +++ b/src/OPENMP/angle_cosine_delta_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_cosine_omp.cpp b/src/OPENMP/angle_cosine_omp.cpp index 1985633c387..62320b7c6c8 100644 --- a/src/OPENMP/angle_cosine_omp.cpp +++ b/src/OPENMP/angle_cosine_omp.cpp @@ -24,12 +24,9 @@ #include "force.h" #include "neighbor.h" - #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleCosineOMP::AngleCosineOMP(class LAMMPS *lmp) diff --git a/src/OPENMP/angle_cosine_periodic_omp.cpp b/src/OPENMP/angle_cosine_periodic_omp.cpp index 43b3a54a474..3d546af2785 100644 --- a/src/OPENMP/angle_cosine_periodic_omp.cpp +++ b/src/OPENMP/angle_cosine_periodic_omp.cpp @@ -30,8 +30,6 @@ using namespace LAMMPS_NS; using namespace MathSpecial; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleCosinePeriodicOMP::AngleCosinePeriodicOMP(class LAMMPS *lmp) @@ -140,7 +138,7 @@ void AngleCosinePeriodicOMP::eval(int nfrom, int nto, ThrData * const thr) tn = 1.0; tn_1 = 1.0; tn_2 = 0.0; - un = 1.0; + un = (m==1) ? 2.0 : 1.0; un_1 = 2.0; un_2 = 0.0; diff --git a/src/OPENMP/angle_cosine_shift_exp_omp.cpp b/src/OPENMP/angle_cosine_shift_exp_omp.cpp index 5831f59fab2..c131efd8397 100644 --- a/src/OPENMP/angle_cosine_shift_exp_omp.cpp +++ b/src/OPENMP/angle_cosine_shift_exp_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_cosine_shift_omp.cpp b/src/OPENMP/angle_cosine_shift_omp.cpp index 020f7583ff4..47fed634aa3 100644 --- a/src/OPENMP/angle_cosine_shift_omp.cpp +++ b/src/OPENMP/angle_cosine_shift_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_cosine_squared_omp.cpp b/src/OPENMP/angle_cosine_squared_omp.cpp index 9d98455fe48..f70e167d36b 100644 --- a/src/OPENMP/angle_cosine_squared_omp.cpp +++ b/src/OPENMP/angle_cosine_squared_omp.cpp @@ -16,20 +16,19 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "angle_cosine_squared_omp.h" -#include + #include "atom.h" #include "comm.h" #include "force.h" #include "neighbor.h" +#include +#include "omp_compat.h" #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleCosineSquaredOMP::AngleCosineSquaredOMP(class LAMMPS *lmp) diff --git a/src/OPENMP/angle_cosine_squared_restricted_omp.cpp b/src/OPENMP/angle_cosine_squared_restricted_omp.cpp new file mode 100644 index 00000000000..80960653b4d --- /dev/null +++ b/src/OPENMP/angle_cosine_squared_restricted_omp.cpp @@ -0,0 +1,170 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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) +------------------------------------------------------------------------- */ + +#include "angle_cosine_squared_restricted_omp.h" + +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" + +#include + +#include "omp_compat.h" +#include "suffix.h" +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AngleCosineSquaredRestrictedOMP::AngleCosineSquaredRestrictedOMP(class LAMMPS *lmp) + : AngleCosineSquaredRestricted(lmp), ThrOMP(lmp,THR_ANGLE) +{ + suffix_flag |= Suffix::OMP; +} + +/* ---------------------------------------------------------------------- */ + +void AngleCosineSquaredRestrictedOMP::compute(int eflag, int vflag) +{ + ev_init(eflag,vflag); + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = neighbor->nanglelist; + +#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, cvatom, thr); + + if (inum > 0) { + if (evflag) { + if (eflag) { + if (force->newton_bond) eval<1,1,1>(ifrom, ito, thr); + else eval<1,1,0>(ifrom, ito, thr); + } else { + if (force->newton_bond) eval<1,0,1>(ifrom, ito, thr); + else eval<1,0,0>(ifrom, ito, thr); + } + } else { + if (force->newton_bond) eval<0,0,1>(ifrom, ito, thr); + else eval<0,0,0>(ifrom, ito, thr); + } + } + thr->timer(Timer::BOND); + reduce_thr(this, eflag, vflag, thr); + } // end of omp parallel region +} + +template +void AngleCosineSquaredRestrictedOMP::eval(int nfrom, int nto, ThrData * const thr) +{ + int i1,i2,i3,n,type; + double delx1,dely1,delz1,delx2,dely2,delz2; + double eangle,f1[3],f3[3]; + double tk,rsq1,rsq2,r1,r2,c,a,a11,a12,a22; + + const auto * _noalias const x = (dbl3_t *) atom->x[0]; + auto * _noalias const f = (dbl3_t *) thr->get_f()[0]; + const int4_t * _noalias const anglelist = (int4_t *) neighbor->anglelist[0]; + const int nlocal = atom->nlocal; + eangle = 0.0; + + for (n = nfrom; n < nto; n++) { + i1 = anglelist[n].a; + i2 = anglelist[n].b; + i3 = anglelist[n].c; + type = anglelist[n].t; + + // 1st bond + + delx1 = x[i1].x - x[i2].x; + dely1 = x[i1].y - x[i2].y; + delz1 = x[i1].z - x[i2].z; + + rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; + r1 = sqrt(rsq1); + + // 2nd bond + + delx2 = x[i3].x - x[i2].x; + dely2 = x[i3].y - x[i2].y; + delz2 = x[i3].z - x[i2].z; + + rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // force & energy + + double sq_sin = 1.0 - c * c; + double c0 = cos(theta0[type]); + + tk = k[type] * (c - c0) * (1.0 - c * c0) / (sq_sin * sq_sin); + + if (EFLAG) eangle = k[type] * (c - c0) * (c - c0) / sq_sin; + + a = 2.0 * tk; + a11 = a*c / rsq1; + a12 = -a / (r1*r2); + a22 = a*c / rsq2; + + f1[0] = a11*delx1 + a12*delx2; + f1[1] = a11*dely1 + a12*dely2; + f1[2] = a11*delz1 + a12*delz2; + f3[0] = a22*delx2 + a12*delx1; + f3[1] = a22*dely2 + a12*dely1; + f3[2] = a22*delz2 + a12*delz1; + + // apply force to each of 3 atoms + + if (NEWTON_BOND || i1 < nlocal) { + f[i1].x += f1[0]; + f[i1].y += f1[1]; + f[i1].z += f1[2]; + } + + if (NEWTON_BOND || i2 < nlocal) { + f[i2].x -= f1[0] + f3[0]; + f[i2].y -= f1[1] + f3[1]; + f[i2].z -= f1[2] + f3[2]; + } + + if (NEWTON_BOND || i3 < nlocal) { + f[i3].x += f3[0]; + f[i3].y += f3[1]; + f[i3].z += f3[2]; + } + + if (EVFLAG) ev_tally_thr(this,i1,i2,i3,nlocal,NEWTON_BOND,eangle,f1,f3, + delx1,dely1,delz1,delx2,dely2,delz2,thr); + } +} diff --git a/src/OPENMP/angle_cosine_squared_restricted_omp.h b/src/OPENMP/angle_cosine_squared_restricted_omp.h new file mode 100644 index 00000000000..b2ad545230f --- /dev/null +++ b/src/OPENMP/angle_cosine_squared_restricted_omp.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 ANGLE_CLASS +// clang-format off +AngleStyle(cosine/squared/restricted/omp,AngleCosineSquaredRestrictedOMP); +// clang-format on +#else + +#ifndef LMP_ANGLE_COSINE_SQUARED_RESTRICTED_OMP_H +#define LMP_ANGLE_COSINE_SQUARED_RESTRICTED_OMP_H + +#include "angle_cosine_squared_restricted.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class AngleCosineSquaredRestrictedOMP : public AngleCosineSquaredRestricted, public ThrOMP { + + public: + AngleCosineSquaredRestrictedOMP(class LAMMPS *lmp); + void compute(int, int) override; + + private: + template + void eval(int ifrom, int ito, ThrData *const thr); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/angle_dipole_omp.cpp b/src/OPENMP/angle_dipole_omp.cpp index 3a8099ac73f..3c771df69f7 100644 --- a/src/OPENMP/angle_dipole_omp.cpp +++ b/src/OPENMP/angle_dipole_omp.cpp @@ -25,12 +25,9 @@ #include "force.h" #include "neighbor.h" - #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleDipoleOMP::AngleDipoleOMP(class LAMMPS *lmp) diff --git a/src/OPENMP/angle_fourier_omp.cpp b/src/OPENMP/angle_fourier_omp.cpp index 0c85264342d..a11d3b63271 100644 --- a/src/OPENMP/angle_fourier_omp.cpp +++ b/src/OPENMP/angle_fourier_omp.cpp @@ -24,12 +24,9 @@ #include "force.h" #include "neighbor.h" - #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ AngleFourierOMP::AngleFourierOMP(class LAMMPS *lmp) diff --git a/src/OPENMP/angle_fourier_simple_omp.cpp b/src/OPENMP/angle_fourier_simple_omp.cpp index a8f234918b4..ad63fa08622 100644 --- a/src/OPENMP/angle_fourier_simple_omp.cpp +++ b/src/OPENMP/angle_fourier_simple_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.0001 +static constexpr double SMALL = 0.0001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_harmonic_omp.cpp b/src/OPENMP/angle_harmonic_omp.cpp index e83146a3ad7..5d779fbe216 100644 --- a/src/OPENMP/angle_harmonic_omp.cpp +++ b/src/OPENMP/angle_harmonic_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_lepton_omp.cpp b/src/OPENMP/angle_lepton_omp.cpp index 7e86a9e9bba..918fb578714 100644 --- a/src/OPENMP/angle_lepton_omp.cpp +++ b/src/OPENMP/angle_lepton_omp.cpp @@ -16,13 +16,16 @@ ------------------------------------------------------------------------- */ #include "angle_lepton_omp.h" + #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neighbor.h" #include "suffix.h" #include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -91,10 +94,17 @@ void AngleLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) { std::vector angleforce; std::vector anglepot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp)); angleforce.emplace_back(parsed.differentiate("theta").createCompiledExpression()); + has_ref.push_back(true); + try { + angleforce.back().getVariableReference("theta"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) anglepot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -146,8 +156,7 @@ void AngleLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) const double dtheta = acos(c) - theta0[type]; const int idx = type2expression[type]; - angleforce[idx].getVariableReference("theta") = dtheta; - + if (has_ref[idx]) angleforce[idx].getVariableReference("theta") = dtheta; const double a = -angleforce[idx].evaluate() * s; const double a11 = a * c / rsq1; const double a12 = -a / (r1 * r2); @@ -183,7 +192,11 @@ void AngleLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) double eangle = 0.0; if (EFLAG) { - anglepot[idx].getVariableReference("theta") = dtheta; + try { + anglepot[idx].getVariableReference("theta") = dtheta; + } catch (Lepton::Exception &) { + ; // ignore -> constant force + } eangle = anglepot[idx].evaluate() - offset[type]; } if (EVFLAG) diff --git a/src/OPENMP/angle_quartic_omp.cpp b/src/OPENMP/angle_quartic_omp.cpp index bb9a9837d2f..7c1d1b4a17c 100644 --- a/src/OPENMP/angle_quartic_omp.cpp +++ b/src/OPENMP/angle_quartic_omp.cpp @@ -28,7 +28,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_spica_omp.cpp b/src/OPENMP/angle_spica_omp.cpp index 728e2ff4356..f1dd7d40b50 100644 --- a/src/OPENMP/angle_spica_omp.cpp +++ b/src/OPENMP/angle_spica_omp.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace LJSPICAParms; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/angle_table_omp.cpp b/src/OPENMP/angle_table_omp.cpp index d75bd8a6945..11436723b1a 100644 --- a/src/OPENMP/angle_table_omp.cpp +++ b/src/OPENMP/angle_table_omp.cpp @@ -29,7 +29,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/bond_lepton_omp.cpp b/src/OPENMP/bond_lepton_omp.cpp index 0029062366c..995e2fac094 100644 --- a/src/OPENMP/bond_lepton_omp.cpp +++ b/src/OPENMP/bond_lepton_omp.cpp @@ -18,11 +18,13 @@ #include "bond_lepton_omp.h" #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neighbor.h" #include "suffix.h" #include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -89,10 +91,17 @@ void BondLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) { std::vector bondforce; std::vector bondpot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp)); bondforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back(true); + try { + bondforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) bondpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -122,7 +131,7 @@ void BondLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) double fbond = 0.0; if (r > 0.0) { - bondforce[idx].getVariableReference("r") = dr; + if (has_ref[idx]) bondforce[idx].getVariableReference("r") = dr; fbond = -bondforce[idx].evaluate() / r; } @@ -142,7 +151,11 @@ void BondLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) double ebond = 0.0; if (EFLAG) { - bondpot[idx].getVariableReference("r") = dr; + try { + bondpot[idx].getVariableReference("r") = dr; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } ebond = bondpot[idx].evaluate() - offset[type]; } if (EVFLAG) diff --git a/src/OPENMP/dihedral_charmm_omp.cpp b/src/OPENMP/dihedral_charmm_omp.cpp index e78a3e89192..d0c38c87749 100644 --- a/src/OPENMP/dihedral_charmm_omp.cpp +++ b/src/OPENMP/dihedral_charmm_omp.cpp @@ -30,8 +30,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_class2_omp.cpp b/src/OPENMP/dihedral_class2_omp.cpp index 8ec39ceee82..ffcdf4fa1ad 100644 --- a/src/OPENMP/dihedral_class2_omp.cpp +++ b/src/OPENMP/dihedral_class2_omp.cpp @@ -29,8 +29,8 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.0000001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.0000001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_cosine_shift_exp_omp.cpp b/src/OPENMP/dihedral_cosine_shift_exp_omp.cpp index 106db995c41..0cffc3e2456 100644 --- a/src/OPENMP/dihedral_cosine_shift_exp_omp.cpp +++ b/src/OPENMP/dihedral_cosine_shift_exp_omp.cpp @@ -29,8 +29,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_fourier_omp.cpp b/src/OPENMP/dihedral_fourier_omp.cpp index aae1eec5592..34a145a06d9 100644 --- a/src/OPENMP/dihedral_fourier_omp.cpp +++ b/src/OPENMP/dihedral_fourier_omp.cpp @@ -29,7 +29,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_harmonic_omp.cpp b/src/OPENMP/dihedral_harmonic_omp.cpp index 8737c61cdd1..fe3fb988cea 100644 --- a/src/OPENMP/dihedral_harmonic_omp.cpp +++ b/src/OPENMP/dihedral_harmonic_omp.cpp @@ -29,8 +29,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_helix_omp.cpp b/src/OPENMP/dihedral_helix_omp.cpp index d7782859746..64ba0b9af51 100644 --- a/src/OPENMP/dihedral_helix_omp.cpp +++ b/src/OPENMP/dihedral_helix_omp.cpp @@ -31,9 +31,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_lepton_omp.cpp b/src/OPENMP/dihedral_lepton_omp.cpp index 13a13280589..206749fcfa3 100644 --- a/src/OPENMP/dihedral_lepton_omp.cpp +++ b/src/OPENMP/dihedral_lepton_omp.cpp @@ -18,12 +18,14 @@ #include "dihedral_lepton_omp.h" #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" +#include "math_extra.h" #include "neighbor.h" #include "suffix.h" -#include "math_extra.h" #include +#include #include "Lepton.h" #include "lepton_utils.h" @@ -94,10 +96,17 @@ void DihedralLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) { std::vector dihedralforce; std::vector dihedralpot; + std::vector has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp)); dihedralforce.emplace_back(parsed.differentiate("phi").createCompiledExpression()); + has_ref.push_back(true); + try { + dihedralforce.back().getVariableReference("phi"); + } catch (Lepton::Exception &) { + has_ref.back() = false; + } if (EFLAG) dihedralpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -106,7 +115,7 @@ void DihedralLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) const double *const *const x = atom->x; auto *_noalias const f = (dbl3_t *) thr->get_f()[0]; - const int * const * const dihedrallist = neighbor->dihedrallist; + const int *const *const dihedrallist = neighbor->dihedrallist; const int nlocal = atom->nlocal; // The dihedral angle "phi" is the angle between n123 and n234 @@ -279,7 +288,7 @@ void DihedralLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) } const int idx = type2expression[type]; - dihedralforce[idx].getVariableReference("phi") = phi; + if (has_ref[idx]) dihedralforce[idx].getVariableReference("phi") = phi; double m_du_dphi = -dihedralforce[idx].evaluate(); // ----- Step 4: Calculate the force direction in real space ----- @@ -323,7 +332,11 @@ void DihedralLeptonOMP::eval(int nfrom, int nto, ThrData *const thr) double edihedral = 0.0; if (EFLAG) { - dihedralpot[idx].getVariableReference("phi") = phi; + try { + dihedralpot[idx].getVariableReference("phi") = phi; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } edihedral = dihedralpot[idx].evaluate(); } if (EVFLAG) diff --git a/src/OPENMP/dihedral_multi_harmonic_omp.cpp b/src/OPENMP/dihedral_multi_harmonic_omp.cpp index d3f4447d08a..57c4b775656 100644 --- a/src/OPENMP/dihedral_multi_harmonic_omp.cpp +++ b/src/OPENMP/dihedral_multi_harmonic_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_nharmonic_omp.cpp b/src/OPENMP/dihedral_nharmonic_omp.cpp index f9a3f1328da..34e54f6c7c1 100644 --- a/src/OPENMP/dihedral_nharmonic_omp.cpp +++ b/src/OPENMP/dihedral_nharmonic_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_opls_omp.cpp b/src/OPENMP/dihedral_opls_omp.cpp index fbdc408c4d7..ccfd2ea42c8 100644 --- a/src/OPENMP/dihedral_opls_omp.cpp +++ b/src/OPENMP/dihedral_opls_omp.cpp @@ -29,9 +29,9 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_quadratic_omp.cpp b/src/OPENMP/dihedral_quadratic_omp.cpp index 43d97da5f22..52b7c331fd7 100644 --- a/src/OPENMP/dihedral_quadratic_omp.cpp +++ b/src/OPENMP/dihedral_quadratic_omp.cpp @@ -31,9 +31,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define SMALLER 0.00001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr double SMALLER = 0.00001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/dihedral_table_omp.cpp b/src/OPENMP/dihedral_table_omp.cpp index 7405ae4a131..df1ca292c91 100644 --- a/src/OPENMP/dihedral_table_omp.cpp +++ b/src/OPENMP/dihedral_table_omp.cpp @@ -34,9 +34,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathExtra; -#define TOLERANCE 0.05 -#define SMALL 0.001 - // -------------------------------------------- // ------- Calculate the dihedral angle ------- // -------------------------------------------- diff --git a/src/OPENMP/ewald_omp.cpp b/src/OPENMP/ewald_omp.cpp index ee2963659ab..86740175924 100644 --- a/src/OPENMP/ewald_omp.cpp +++ b/src/OPENMP/ewald_omp.cpp @@ -31,8 +31,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 - /* ---------------------------------------------------------------------- */ EwaldOMP::EwaldOMP(LAMMPS *lmp) : Ewald(lmp), ThrOMP(lmp, THR_KSPACE) diff --git a/src/OPENMP/fix_nh_omp.cpp b/src/OPENMP/fix_nh_omp.cpp index a7fe2738ca8..7ef69af0fe1 100644 --- a/src/OPENMP/fix_nh_omp.cpp +++ b/src/OPENMP/fix_nh_omp.cpp @@ -22,7 +22,6 @@ #include "compute.h" #include "domain.h" #include "error.h" -#include "modify.h" #include @@ -33,7 +32,7 @@ using namespace FixConst; enum{NOBIAS,BIAS}; enum{ISO,ANISO,TRICLINIC}; -#define TILTMAX 1.5 +static constexpr double TILTMAX = 1.5; typedef struct { double x,y,z; } dbl3_t; diff --git a/src/OPENMP/fix_nh_sphere_omp.cpp b/src/OPENMP/fix_nh_sphere_omp.cpp index 93a674cbce7..beaa4fd1cba 100644 --- a/src/OPENMP/fix_nh_sphere_omp.cpp +++ b/src/OPENMP/fix_nh_sphere_omp.cpp @@ -28,7 +28,7 @@ using namespace FixConst; enum{NOBIAS,BIAS}; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +static constexpr double INERTIA = 0.4; // moment of inertia prefactor for sphere typedef struct { double x,y,z; } dbl3_t; @@ -37,8 +37,8 @@ typedef struct { double x,y,z; } dbl3_t; FixNHSphereOMP::FixNHSphereOMP(LAMMPS *lmp, int narg, char **arg) : FixNHOMP(lmp, narg, arg) { - if (!atom->sphere_flag) - error->all(FLERR,"Fix nvt/nph/npt sphere requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR,"Fix {} requires atom attribute omega", style); + if (!atom->radius_flag) error->all(FLERR,"Fix {} requires atom attribute radius", style); } /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/fix_nve_sphere_omp.cpp b/src/OPENMP/fix_nve_sphere_omp.cpp index be3fc8d147f..8c65a0df6a4 100644 --- a/src/OPENMP/fix_nve_sphere_omp.cpp +++ b/src/OPENMP/fix_nve_sphere_omp.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathExtra; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +static constexpr double INERTIA = 0.4; // moment of inertia prefactor for sphere enum{NONE,DIPOLE}; enum{NODLM,DLM}; diff --git a/src/OPENMP/fix_omp.cpp b/src/OPENMP/fix_omp.cpp index 3a249bad821..f7828f43ee3 100644 --- a/src/OPENMP/fix_omp.cpp +++ b/src/OPENMP/fix_omp.cpp @@ -161,12 +161,15 @@ void FixOMP::init() { // OPENMP package cannot be used with atom_style template if (atom->molecular == Atom::TEMPLATE) - error->all(FLERR,"OPENMP package does not (yet) work with " - "atom_style template"); + error->all(FLERR,"OPENMP package does not (yet) work with atom_style template"); // adjust number of data objects when the number of OpenMP // threads has been changed somehow const int nthreads = comm->nthreads; +#if defined(_OPENMP) + // make certain threads are initialized correctly. avoids segfaults with LAMMPS-GUI + if (nthreads != omp_get_max_threads()) omp_set_num_threads(nthreads); +#endif if (_nthr != nthreads) { if (comm->me == 0) utils::logmesg(lmp,"Re-init OPENMP for {} OpenMP thread(s)\n", nthreads); @@ -212,7 +215,7 @@ void FixOMP::init() // kspace_split < 0 : master partition, does not do kspace // kspace_split > 0 : slave partition, only does kspace - if (strstr(update->integrate_style,"verlet/split") != nullptr) { + if (utils::strmatch(update->integrate_style, "^verlet/split")) { if (universe->iworld == 0) kspace_split = -1; else kspace_split = 1; } else { diff --git a/src/OPENMP/fix_rigid_nh_omp.cpp b/src/OPENMP/fix_rigid_nh_omp.cpp index 19e5d4f2402..f5e4a1f49dd 100644 --- a/src/OPENMP/fix_rigid_nh_omp.cpp +++ b/src/OPENMP/fix_rigid_nh_omp.cpp @@ -30,7 +30,6 @@ #include "kspace.h" #include "math_const.h" #include "math_extra.h" -#include "modify.h" #include "rigid_const.h" #include "update.h" diff --git a/src/OPENMP/improper_class2_omp.cpp b/src/OPENMP/improper_class2_omp.cpp index b7387ea75a1..8233f0bee6f 100644 --- a/src/OPENMP/improper_class2_omp.cpp +++ b/src/OPENMP/improper_class2_omp.cpp @@ -29,9 +29,6 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperClass2OMP::ImproperClass2OMP(class LAMMPS *lmp) diff --git a/src/OPENMP/improper_cossq_omp.cpp b/src/OPENMP/improper_cossq_omp.cpp index 3bfc86bcaba..4ccc0d730a0 100644 --- a/src/OPENMP/improper_cossq_omp.cpp +++ b/src/OPENMP/improper_cossq_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/improper_cvff_omp.cpp b/src/OPENMP/improper_cvff_omp.cpp index 310806d872c..b7fe9ffb03c 100644 --- a/src/OPENMP/improper_cvff_omp.cpp +++ b/src/OPENMP/improper_cvff_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/improper_fourier_omp.cpp b/src/OPENMP/improper_fourier_omp.cpp index b70e3fb0ac9..000bc020664 100644 --- a/src/OPENMP/improper_fourier_omp.cpp +++ b/src/OPENMP/improper_fourier_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/improper_harmonic_omp.cpp b/src/OPENMP/improper_harmonic_omp.cpp index d17fe9407d7..12c26996637 100644 --- a/src/OPENMP/improper_harmonic_omp.cpp +++ b/src/OPENMP/improper_harmonic_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/improper_ring_omp.cpp b/src/OPENMP/improper_ring_omp.cpp index 899727c685c..a1b4e31cee7 100644 --- a/src/OPENMP/improper_ring_omp.cpp +++ b/src/OPENMP/improper_ring_omp.cpp @@ -31,8 +31,7 @@ using namespace LAMMPS_NS; using namespace MathSpecial; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/improper_umbrella_omp.cpp b/src/OPENMP/improper_umbrella_omp.cpp index e5d03863df2..50c1ce46764 100644 --- a/src/OPENMP/improper_umbrella_omp.cpp +++ b/src/OPENMP/improper_umbrella_omp.cpp @@ -29,8 +29,8 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/msm_cg_omp.cpp b/src/OPENMP/msm_cg_omp.cpp index 6904830fedc..00230c9eced 100644 --- a/src/OPENMP/msm_cg_omp.cpp +++ b/src/OPENMP/msm_cg_omp.cpp @@ -38,8 +38,8 @@ using namespace LAMMPS_NS; -#define OFFSET 16384 -#define SMALLQ 0.00001 +static constexpr int OFFSET = 16384; +static constexpr double SMALLQ = 0.00001; enum{REVERSE_RHO,REVERSE_AD,REVERSE_AD_PERATOM}; enum{FORWARD_RHO,FORWARD_AD,FORWARD_AD_PERATOM}; diff --git a/src/OPENMP/npair_bin_omp.cpp b/src/OPENMP/npair_bin_omp.cpp index 5b2189dec21..7922d76612a 100644 --- a/src/OPENMP/npair_bin_omp.cpp +++ b/src/OPENMP/npair_bin_omp.cpp @@ -25,6 +25,8 @@ #include "my_page.h" #include "neigh_list.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp index d45f2d1f5f7..fa790e177ad 100644 --- a/src/OPENMP/npair_multi_old_omp.cpp +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -24,6 +24,8 @@ #include "my_page.h" #include "neigh_list.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index 3f8604572c0..cbc21ebc294 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -26,6 +26,8 @@ #include "neigh_list.h" #include "neighbor.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/npair_nsq_omp.cpp b/src/OPENMP/npair_nsq_omp.cpp index c482fc8f2d5..5d6aa518b00 100644 --- a/src/OPENMP/npair_nsq_omp.cpp +++ b/src/OPENMP/npair_nsq_omp.cpp @@ -27,6 +27,8 @@ #include "neigh_list.h" #include "neighbor.h" +#include + using namespace LAMMPS_NS; using namespace NeighConst; diff --git a/src/OPENMP/npair_respa_bin_omp.cpp b/src/OPENMP/npair_respa_bin_omp.cpp index c958167ba06..a069affb064 100644 --- a/src/OPENMP/npair_respa_bin_omp.cpp +++ b/src/OPENMP/npair_respa_bin_omp.cpp @@ -25,6 +25,8 @@ #include "my_page.h" #include "neigh_list.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/npair_respa_nsq_omp.cpp b/src/OPENMP/npair_respa_nsq_omp.cpp index 6815b215441..deba4736789 100644 --- a/src/OPENMP/npair_respa_nsq_omp.cpp +++ b/src/OPENMP/npair_respa_nsq_omp.cpp @@ -26,6 +26,8 @@ #include "my_page.h" #include "neigh_list.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/npair_respa_nsq_omp.h b/src/OPENMP/npair_respa_nsq_omp.h index 810931674c8..c68d06b4b56 100644 --- a/src/OPENMP/npair_respa_nsq_omp.h +++ b/src/OPENMP/npair_respa_nsq_omp.h @@ -15,7 +15,7 @@ // clang-format off typedef NPairRespaNsqOmp<0,0> NPairHalfRespaNsqNewtoffOmp; NPairStyle(half/respa/nsq/newtoff/omp, - NPairHalfRespaNsqNewtoff, + NPairHalfRespaNsqNewtoffOmp, NP_HALF | NP_RESPA | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairRespaNsqOmp<1,0> NPairHalfRespaNsqNewtonOmp; diff --git a/src/OPENMP/pair_airebo_omp.cpp b/src/OPENMP/pair_airebo_omp.cpp index 0872678518b..6736b10f8f9 100644 --- a/src/OPENMP/pair_airebo_omp.cpp +++ b/src/OPENMP/pair_airebo_omp.cpp @@ -34,12 +34,11 @@ using namespace LAMMPS_NS; using namespace MathSpecial; -#define TOL 1.0e-9 +static constexpr double TOL = 1.0e-9; /* ---------------------------------------------------------------------- */ -PairAIREBOOMP::PairAIREBOOMP(LAMMPS *lmp) : - PairAIREBO(lmp), ThrOMP(lmp, THR_PAIR) +PairAIREBOOMP::PairAIREBOOMP(LAMMPS *lmp) : PairAIREBO(lmp), ThrOMP(lmp, THR_PAIR) { suffix_flag |= Suffix::OMP; respa_enable = 0; @@ -1121,12 +1120,9 @@ double PairAIREBOOMP::bondorder_thr(int i, int j, double rij[3], double rijmag, cosjik = MIN(cosjik,1.0); cosjik = MAX(cosjik,-1.0); - dcosjikdri[0] = ((rij[0]+rik[0])*invrijkm) - - (cosjik*((rij[0]*invrijm2)+(rik[0]*invrikm2))); - dcosjikdri[1] = ((rij[1]+rik[1])*invrijkm) - - (cosjik*((rij[1]*invrijm2)+(rik[1]*invrikm2))); - dcosjikdri[2] = ((rij[2]+rik[2])*invrijkm) - - (cosjik*((rij[2]*invrijm2)+(rik[2]*invrikm2))); + dcosjikdri[0] = ((rij[0]+rik[0])*invrijkm) - (cosjik*((rij[0]*invrijm2)+(rik[0]*invrikm2))); + dcosjikdri[1] = ((rij[1]+rik[1])*invrijkm) - (cosjik*((rij[1]*invrijm2)+(rik[1]*invrikm2))); + dcosjikdri[2] = ((rij[2]+rik[2])*invrijkm) - (cosjik*((rij[2]*invrijm2)+(rik[2]*invrikm2))); dcosjikdrk[0] = (-rij[0]*invrijkm) + (cosjik*(rik[0]*invrikm2)); dcosjikdrk[1] = (-rij[1]*invrijkm) + (cosjik*(rik[1]*invrikm2)); dcosjikdrk[2] = (-rij[2]*invrijkm) + (cosjik*(rik[2]*invrikm2)); diff --git a/src/OPENMP/pair_born_coul_long_omp.cpp b/src/OPENMP/pair_born_coul_long_omp.cpp index 0f51a3a5ccd..30efb6e6337 100644 --- a/src/OPENMP/pair_born_coul_long_omp.cpp +++ b/src/OPENMP/pair_born_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_brownian_omp.cpp b/src/OPENMP/pair_brownian_omp.cpp index 45288f13dd7..ecb80456d14 100644 --- a/src/OPENMP/pair_brownian_omp.cpp +++ b/src/OPENMP/pair_brownian_omp.cpp @@ -36,12 +36,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define EPSILON 1.0e-10 - -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairBrownianOMP::PairBrownianOMP(LAMMPS *lmp) : @@ -93,7 +87,7 @@ void PairBrownianOMP::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; diff --git a/src/OPENMP/pair_brownian_poly_omp.cpp b/src/OPENMP/pair_brownian_poly_omp.cpp index 91a496979d0..f9db86043a4 100644 --- a/src/OPENMP/pair_brownian_poly_omp.cpp +++ b/src/OPENMP/pair_brownian_poly_omp.cpp @@ -36,12 +36,6 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define EPSILON 1.0e-10 - -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairBrownianPolyOMP::PairBrownianPolyOMP(LAMMPS *lmp) : @@ -93,7 +87,7 @@ void PairBrownianPolyOMP::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; diff --git a/src/OPENMP/pair_buck_coul_long_omp.cpp b/src/OPENMP/pair_buck_coul_long_omp.cpp index da4b0bb5b07..2bbb7a1cd8e 100644 --- a/src/OPENMP/pair_buck_coul_long_omp.cpp +++ b/src/OPENMP/pair_buck_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -25,14 +26,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_buck_long_coul_long_omp.cpp b/src/OPENMP/pair_buck_long_coul_long_omp.cpp index bb1bdd9f2a1..c03bfcd33ca 100644 --- a/src/OPENMP/pair_buck_long_coul_long_omp.cpp +++ b/src/OPENMP/pair_buck_long_coul_long_omp.cpp @@ -16,6 +16,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "math_extra.h" #include "neigh_list.h" @@ -27,14 +28,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_comb_omp.cpp b/src/OPENMP/pair_comb_omp.cpp index aceff6e111a..87d467a8468 100644 --- a/src/OPENMP/pair_comb_omp.cpp +++ b/src/OPENMP/pair_comb_omp.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using MathExtra::dot3; -#define MAXNEIGH 24 +static constexpr int MAXNEIGH = 24; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_coul_dsf_omp.cpp b/src/OPENMP/pair_coul_dsf_omp.cpp index 4609288d247..d19263c3bbf 100644 --- a/src/OPENMP/pair_coul_dsf_omp.cpp +++ b/src/OPENMP/pair_coul_dsf_omp.cpp @@ -13,26 +13,23 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "pair_coul_dsf_omp.h" -#include + #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" +#include "math_const.h" +#include "omp_compat.h" #include "suffix.h" -#include "math_const.h" + +#include + using namespace LAMMPS_NS; -using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; +using MathConst::MY_PIS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_coul_long_omp.cpp b/src/OPENMP/pair_coul_long_omp.cpp index b8c7423e768..eb7e2236f37 100644 --- a/src/OPENMP/pair_coul_long_omp.cpp +++ b/src/OPENMP/pair_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_coul_long_soft_omp.cpp b/src/OPENMP/pair_coul_long_soft_omp.cpp index 3670a219b64..ccfe1e8963d 100644 --- a/src/OPENMP/pair_coul_long_soft_omp.cpp +++ b/src/OPENMP/pair_coul_long_soft_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_dpd_ext_omp.cpp b/src/OPENMP/pair_dpd_ext_omp.cpp index f900512e26a..9c53984b68b 100644 --- a/src/OPENMP/pair_dpd_ext_omp.cpp +++ b/src/OPENMP/pair_dpd_ext_omp.cpp @@ -28,7 +28,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_dpd_ext_tstat_omp.cpp b/src/OPENMP/pair_dpd_ext_tstat_omp.cpp index b55a9d39c62..41234dbcc99 100644 --- a/src/OPENMP/pair_dpd_ext_tstat_omp.cpp +++ b/src/OPENMP/pair_dpd_ext_tstat_omp.cpp @@ -28,7 +28,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_dpd_omp.cpp b/src/OPENMP/pair_dpd_omp.cpp index f267bde1b01..c4226b5f9d6 100644 --- a/src/OPENMP/pair_dpd_omp.cpp +++ b/src/OPENMP/pair_dpd_omp.cpp @@ -27,7 +27,7 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_dpd_tstat_omp.cpp b/src/OPENMP/pair_dpd_tstat_omp.cpp index 2396bf57561..86ecd86528b 100644 --- a/src/OPENMP/pair_dpd_tstat_omp.cpp +++ b/src/OPENMP/pair_dpd_tstat_omp.cpp @@ -28,7 +28,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -#define EPSILON 1.0e-10 +static constexpr double EPSILON = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_eam_omp.cpp b/src/OPENMP/pair_eam_omp.cpp index e99fbedbb79..c530f383dfe 100644 --- a/src/OPENMP/pair_eam_omp.cpp +++ b/src/OPENMP/pair_eam_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "memory.h" #include "neigh_list.h" @@ -45,6 +46,7 @@ void PairEAMOMP::compute(int eflag, int vflag) const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; const int inum = list->inum; + int beyond_rhomax = 0; // grow energy and fp arrays if necessary // need to be atom->nmax in length @@ -60,7 +62,7 @@ void PairEAMOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) reduction(+:beyond_rhomax) #endif { int ifrom, ito, tid; @@ -77,24 +79,34 @@ void PairEAMOMP::compute(int eflag, int vflag) if (evflag) { if (eflag) { - if (force->newton_pair) eval<1,1,1>(ifrom, ito, thr); - else eval<1,1,0>(ifrom, ito, thr); + if (force->newton_pair) eval<1,1,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,1,0>(ifrom, ito, &beyond_rhomax, thr); } else { - if (force->newton_pair) eval<1,0,1>(ifrom, ito, thr); - else eval<1,0,0>(ifrom, ito, thr); + if (force->newton_pair) eval<1,0,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,0,0>(ifrom, ito, &beyond_rhomax, thr); } } else { - if (force->newton_pair) eval<0,0,1>(ifrom, ito, thr); - else eval<0,0,0>(ifrom, ito, thr); + if (force->newton_pair) eval<0,0,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<0,0,0>(ifrom, ito, &beyond_rhomax, thr); } thr->timer(Timer::PAIR); reduce_thr(this, eflag, vflag, thr); } // end of omp parallel region + + if (eflag && (!exceeded_rhomax)) { + MPI_Allreduce(&beyond_rhomax, &exceeded_rhomax, 1, MPI_INT, MPI_SUM, world); + if (exceeded_rhomax) { + if (comm->me == 0) + error->warning(FLERR, + "A per-atom density exceeded rhomax of EAM potential table - " + "a linear extrapolation to the energy was made"); + } + } } template -void PairEAMOMP::eval(int iifrom, int iito, ThrData * const thr) +void PairEAMOMP::eval(int iifrom, int iito, int *beyond_rhomax, ThrData * const thr) { int i,j,ii,jj,m,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; @@ -203,7 +215,10 @@ void PairEAMOMP::eval(int iifrom, int iito, ThrData * const thr) fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; if (EFLAG) { phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; - if (rho[i] > rhomax) phi += fp[i] * (rho[i]-rhomax); + if (rho[i] > rhomax) { + phi += fp[i] * (rho[i]-rhomax); + *beyond_rhomax = 1; + } e_tally_thr(this, i, i, nlocal, NEWTON_PAIR, scale[type[i]][type[i]]*phi, 0.0, thr); } } diff --git a/src/OPENMP/pair_eam_omp.h b/src/OPENMP/pair_eam_omp.h index 1be24fc18a3..e801e527629 100644 --- a/src/OPENMP/pair_eam_omp.h +++ b/src/OPENMP/pair_eam_omp.h @@ -39,7 +39,7 @@ class PairEAMOMP : public PairEAM, public ThrOMP { private: template - void eval(int iifrom, int iito, ThrData *const thr); + void eval(int iifrom, int iito, int *beyond_rhomax, ThrData *const thr); }; } // namespace LAMMPS_NS diff --git a/src/OPENMP/pair_edip_omp.cpp b/src/OPENMP/pair_edip_omp.cpp index 7c31f0db780..a96f276916f 100644 --- a/src/OPENMP/pair_edip_omp.cpp +++ b/src/OPENMP/pair_edip_omp.cpp @@ -28,8 +28,8 @@ using namespace LAMMPS_NS; static constexpr int leadDimInteractionList = 64; -#define GRIDDENSITY 8000 -#define GRIDSTART 0.1 +static constexpr int GRIDDENSITY = 8000; +static constexpr double GRIDSTART = 0.1; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_hbond_dreiding_lj_omp.cpp b/src/OPENMP/pair_hbond_dreiding_lj_omp.cpp index e7ba4d72c6a..b0f6dcfb5b9 100644 --- a/src/OPENMP/pair_hbond_dreiding_lj_omp.cpp +++ b/src/OPENMP/pair_hbond_dreiding_lj_omp.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_hbond_dreiding_morse_omp.cpp b/src/OPENMP/pair_hbond_dreiding_morse_omp.cpp index 99e2d2c5b1d..0e43e2a037a 100644 --- a/src/OPENMP/pair_hbond_dreiding_morse_omp.cpp +++ b/src/OPENMP/pair_hbond_dreiding_morse_omp.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lepton_coul_omp.cpp b/src/OPENMP/pair_lepton_coul_omp.cpp index bc34bc00af2..ae737ef1cbf 100644 --- a/src/OPENMP/pair_lepton_coul_omp.cpp +++ b/src/OPENMP/pair_lepton_coul_omp.cpp @@ -16,15 +16,19 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" -#include - #include "Lepton.h" #include "lepton_utils.h" #include "omp_compat.h" + +#include +#include +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -101,25 +105,30 @@ void PairLeptonCoulOMP::eval(int iifrom, int iito, ThrData *const thr) std::vector pairforce; std::vector pairpot; - std::vector> have_q; + std::vector> has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back({true, true, true}); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back()[0] = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); - pairforce.back().getVariableReference("r"); - have_q.emplace_back(true, true); // check if there are references to charges + try { pairforce.back().getVariableReference("qi"); - } catch (std::exception &) { - have_q.back().first = false; + } catch (Lepton::Exception &) { + has_ref.back()[1] = false; } try { pairforce.back().getVariableReference("qj"); - } catch (std::exception &) { - have_q.back().second = false; + } catch (Lepton::Exception &) { + has_ref.back()[2] = false; } } } catch (std::exception &e) { @@ -152,9 +161,9 @@ void PairLeptonCoulOMP::eval(int iifrom, int iito, ThrData *const thr) if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - pairforce[idx].getVariableReference("r") = r; - if (have_q[idx].first) pairforce[idx].getVariableReference("qi") = q2e * q[i]; - if (have_q[idx].second) pairforce[idx].getVariableReference("qj") = q2e * q[j]; + if (has_ref[idx][0]) pairforce[idx].getVariableReference("r") = r; + if (has_ref[idx][1]) pairforce[idx].getVariableReference("qi") = q2e * q[i]; + if (has_ref[idx][2]) pairforce[idx].getVariableReference("qj") = q2e * q[j]; const double fpair = -pairforce[idx].evaluate() / r * factor_coul; fxtmp += delx * fpair; @@ -168,9 +177,14 @@ void PairLeptonCoulOMP::eval(int iifrom, int iito, ThrData *const thr) double ecoul = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; - if (have_q[idx].first) pairpot[idx].getVariableReference("qi") = q2e * q[i]; - if (have_q[idx].second) pairpot[idx].getVariableReference("qj") = q2e * q[j]; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } + if (has_ref[idx][1]) pairpot[idx].getVariableReference("qi") = q2e * q[i]; + if (has_ref[idx][2]) pairpot[idx].getVariableReference("qj") = q2e * q[j]; + ecoul = pairpot[idx].evaluate(); ecoul *= factor_coul; } diff --git a/src/OPENMP/pair_lepton_omp.cpp b/src/OPENMP/pair_lepton_omp.cpp index b57b0fe11ef..3b07a7b7576 100644 --- a/src/OPENMP/pair_lepton_omp.cpp +++ b/src/OPENMP/pair_lepton_omp.cpp @@ -16,15 +16,18 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" -#include - #include "Lepton.h" #include "lepton_utils.h" #include "omp_compat.h" + +#include +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -96,10 +99,17 @@ void PairLeptonOMP::eval(int iifrom, int iito, ThrData *const thr) std::vector pairforce; std::vector pairpot; + std::vector have_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + have_ref.push_back(true); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + have_ref.back() = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); } } catch (std::exception &e) { @@ -132,7 +142,7 @@ void PairLeptonOMP::eval(int iifrom, int iito, ThrData *const thr) if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - pairforce[idx].getVariableReference("r") = r; + if (have_ref[idx]) pairforce[idx].getVariableReference("r") = r; const double fpair = -pairforce[idx].evaluate() / r * factor_lj; fxtmp += delx * fpair; @@ -146,7 +156,11 @@ void PairLeptonOMP::eval(int iifrom, int iito, ThrData *const thr) double evdwl = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } evdwl = pairpot[idx].evaluate() - offset[itype][jtype]; evdwl *= factor_lj; } diff --git a/src/OPENMP/pair_lepton_sphere_omp.cpp b/src/OPENMP/pair_lepton_sphere_omp.cpp index 6d3a4827b35..6de9714f3ef 100644 --- a/src/OPENMP/pair_lepton_sphere_omp.cpp +++ b/src/OPENMP/pair_lepton_sphere_omp.cpp @@ -16,15 +16,19 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" -#include - #include "Lepton.h" #include "lepton_utils.h" #include "omp_compat.h" + +#include +#include +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -99,25 +103,30 @@ void PairLeptonSphereOMP::eval(int iifrom, int iito, ThrData *const thr) std::vector pairforce; std::vector pairpot; - std::vector> have_rad; + std::vector> has_ref; try { for (const auto &expr : expressions) { auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(expr, Pointers::lmp), functions); pairforce.emplace_back(parsed.differentiate("r").createCompiledExpression()); + has_ref.push_back({true, true, true}); + try { + pairforce.back().getVariableReference("r"); + } catch (Lepton::Exception &) { + has_ref.back()[0] = false; + } if (EFLAG) pairpot.emplace_back(parsed.createCompiledExpression()); - pairforce.back().getVariableReference("r"); - have_rad.emplace_back(true, true); - // check if there are references to charges + // check if there are references to radii + try { pairforce.back().getVariableReference("radi"); - } catch (std::exception &) { - have_rad.back().first = false; + } catch (Lepton::Exception &) { + has_ref.back()[1] = false; } try { pairforce.back().getVariableReference("radj"); - } catch (std::exception &) { - have_rad.back().second = false; + } catch (Lepton::Exception &) { + has_ref.back()[2] = false; } } } catch (std::exception &e) { @@ -150,9 +159,9 @@ void PairLeptonSphereOMP::eval(int iifrom, int iito, ThrData *const thr) if (rsq < cutsq[itype][jtype]) { const double r = sqrt(rsq); const int idx = type2expression[itype][jtype]; - pairforce[idx].getVariableReference("r") = r; - if (have_rad[idx].first) pairforce[idx].getVariableReference("radi") = radius[i]; - if (have_rad[idx].second) pairforce[idx].getVariableReference("radj") = radius[j]; + if (has_ref[idx][0]) pairforce[idx].getVariableReference("r") = r; + if (has_ref[idx][1]) pairforce[idx].getVariableReference("radi") = radius[i]; + if (has_ref[idx][2]) pairforce[idx].getVariableReference("radj") = radius[j]; const double fpair = -pairforce[idx].evaluate() / r * factor_lj; fxtmp += delx * fpair; @@ -166,9 +175,14 @@ void PairLeptonSphereOMP::eval(int iifrom, int iito, ThrData *const thr) double evdwl = 0.0; if (EFLAG) { - pairpot[idx].getVariableReference("r") = r; - if (have_rad[idx].first) pairpot[idx].getVariableReference("radi") = radius[i]; - if (have_rad[idx].second) pairpot[idx].getVariableReference("radj") = radius[j]; + try { + pairpot[idx].getVariableReference("r") = r; + } catch (Lepton::Exception &) { + ; // ignore -> constant potential + } + if (has_ref[idx][1]) pairpot[idx].getVariableReference("radi") = radius[i]; + if (has_ref[idx][2]) pairpot[idx].getVariableReference("radj") = radius[j]; + evdwl = pairpot[idx].evaluate(); evdwl *= factor_lj; } diff --git a/src/OPENMP/pair_lj_class2_coul_long_omp.cpp b/src/OPENMP/pair_lj_class2_coul_long_omp.cpp index 0791cce8f39..b15a0cc129c 100644 --- a/src/OPENMP/pair_lj_class2_coul_long_omp.cpp +++ b/src/OPENMP/pair_lj_class2_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -25,14 +26,7 @@ #include "omp_compat.h" using namespace LAMMPS_NS; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_coul_dsf_omp.cpp b/src/OPENMP/pair_lj_cut_coul_dsf_omp.cpp index f82dfa8d33a..d43c161d07a 100644 --- a/src/OPENMP/pair_lj_cut_coul_dsf_omp.cpp +++ b/src/OPENMP/pair_lj_cut_coul_dsf_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "math_const.h" #include "neigh_list.h" @@ -25,16 +26,10 @@ #include #include "omp_compat.h" + using namespace LAMMPS_NS; -using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; +using MathConst::MY_PIS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_coul_long_omp.cpp b/src/OPENMP/pair_lj_cut_coul_long_omp.cpp index 49ad3a508c3..a1ad688b62e 100644 --- a/src/OPENMP/pair_lj_cut_coul_long_omp.cpp +++ b/src/OPENMP/pair_lj_cut_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_coul_long_soft_omp.cpp b/src/OPENMP/pair_lj_cut_coul_long_soft_omp.cpp index c8f3635b4f9..650f828a0aa 100644 --- a/src/OPENMP/pair_lj_cut_coul_long_soft_omp.cpp +++ b/src/OPENMP/pair_lj_cut_coul_long_soft_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_thole_long_omp.cpp b/src/OPENMP/pair_lj_cut_thole_long_omp.cpp index 1ad97a44161..fd9f80f465d 100644 --- a/src/OPENMP/pair_lj_cut_thole_long_omp.cpp +++ b/src/OPENMP/pair_lj_cut_thole_long_omp.cpp @@ -34,18 +34,18 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 9.95473818e-1 -#define B0 -0.1335096380159268 -#define B1 -2.57839507e-1 -#define B2 -1.37203639e-1 -#define B3 -8.88822059e-3 -#define B4 -5.80844129e-3 -#define B5 1.14652755e-1 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 +static constexpr double EWALD_F = 1.12837917; +static constexpr double EWALD_P = 9.95473818e-1; +static constexpr double B0 = -0.1335096380159268; +static constexpr double B1 = -2.57839507e-1; +static constexpr double B2 = -1.37203639e-1; +static constexpr double B3 = -8.88822059e-3; +static constexpr double B4 = -5.80844129e-3; +static constexpr double B5 = 1.14652755e-1; + +static constexpr double EPSILON = 1.0e-20; +static constexpr double EPS_EWALD = 1.0e-6; +static constexpr double EPS_EWALD_SQR = 1.0e-12; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp index 04e94ded0e4..c54e6816863 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp @@ -28,14 +28,6 @@ #include "suffix.h" using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - /* ---------------------------------------------------------------------- */ PairLJCutTIP4PCutOMP::PairLJCutTIP4PCutOMP(LAMMPS *lmp) : diff --git a/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp index b346154df01..8f824ca272b 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp @@ -13,28 +13,25 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "pair_lj_cut_tip4p_long_omp.h" -#include + #include "atom.h" -#include "domain.h" #include "comm.h" -#include "force.h" -#include "neighbor.h" +#include "domain.h" #include "error.h" +#include "ewald_const.h" +#include "force.h" #include "memory.h" #include "neigh_list.h" - +#include "neighbor.h" #include "suffix.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#include + +#include "omp_compat.h" + +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp index c19828bf04a..a646a2dec1f 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp @@ -13,28 +13,25 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" -#include #include "pair_lj_cut_tip4p_long_soft_omp.h" + #include "atom.h" -#include "domain.h" #include "comm.h" -#include "force.h" -#include "neighbor.h" +#include "domain.h" #include "error.h" +#include "ewald_const.h" +#include "force.h" #include "memory.h" #include "neigh_list.h" - +#include "neighbor.h" #include "suffix.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#include + +#include "omp_compat.h" + +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_expand_sphere_omp.cpp b/src/OPENMP/pair_lj_expand_sphere_omp.cpp index c19d3e7a7ff..40f878cdc2d 100644 --- a/src/OPENMP/pair_lj_expand_sphere_omp.cpp +++ b/src/OPENMP/pair_lj_expand_sphere_omp.cpp @@ -21,6 +21,8 @@ #include "neigh_list.h" #include "suffix.h" +#include + #include "omp_compat.h" using namespace LAMMPS_NS; using MathSpecial::powint; diff --git a/src/OPENMP/pair_lj_long_coul_long_omp.cpp b/src/OPENMP/pair_lj_long_coul_long_omp.cpp index e1f9e5fea42..1a930b11250 100644 --- a/src/OPENMP/pair_lj_long_coul_long_omp.cpp +++ b/src/OPENMP/pair_lj_long_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "math_extra.h" #include "neigh_list.h" @@ -26,16 +27,10 @@ #include #include "omp_compat.h" + using namespace LAMMPS_NS; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp b/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp index b4529603864..b8206bd21f8 100644 --- a/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp @@ -19,6 +19,7 @@ #include "comm.h" #include "domain.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "memory.h" #include "neigh_list.h" @@ -28,15 +29,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_lubricate_omp.cpp b/src/OPENMP/pair_lubricate_omp.cpp index 2145744a5ba..5ba66ff266f 100644 --- a/src/OPENMP/pair_lubricate_omp.cpp +++ b/src/OPENMP/pair_lubricate_omp.cpp @@ -32,10 +32,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairLubricateOMP::PairLubricateOMP(LAMMPS *lmp) : @@ -74,7 +70,7 @@ void PairLubricateOMP::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; diff --git a/src/OPENMP/pair_lubricate_poly_omp.cpp b/src/OPENMP/pair_lubricate_poly_omp.cpp index 5b98ec7b144..ebb2d65496b 100644 --- a/src/OPENMP/pair_lubricate_poly_omp.cpp +++ b/src/OPENMP/pair_lubricate_poly_omp.cpp @@ -32,10 +32,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -// same as fix_wall.cpp - -enum{EDGE,CONSTANT,VARIABLE}; - /* ---------------------------------------------------------------------- */ PairLubricatePolyOMP::PairLubricatePolyOMP(LAMMPS *_lmp) : @@ -74,7 +70,7 @@ void PairLubricatePolyOMP::compute(int eflag, int vflag) for (int m = 0; m < wallfix->nwall; m++) { int dim = wallfix->wallwhich[m] / 2; int side = wallfix->wallwhich[m] % 2; - if (wallfix->xstyle[m] == VARIABLE) { + if (wallfix->xstyle[m] == FixWall::VARIABLE) { wallcoord = input->variable->compute_equal(wallfix->xindex[m]); } else wallcoord = wallfix->coord0[m]; diff --git a/src/OPENMP/pair_nm_cut_coul_long_omp.cpp b/src/OPENMP/pair_nm_cut_coul_long_omp.cpp index 6694a1237bb..313905c967a 100644 --- a/src/OPENMP/pair_nm_cut_coul_long_omp.cpp +++ b/src/OPENMP/pair_nm_cut_coul_long_omp.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "comm.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" #include "suffix.h" @@ -24,15 +25,9 @@ #include #include "omp_compat.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_pedone_omp.cpp b/src/OPENMP/pair_pedone_omp.cpp new file mode 100644 index 00000000000..140816bfe43 --- /dev/null +++ b/src/OPENMP/pair_pedone_omp.cpp @@ -0,0 +1,169 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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 "pair_pedone_omp.h" + +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neigh_list.h" +#include "suffix.h" + +#include + +#include "omp_compat.h" +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairPedoneOMP::PairPedoneOMP(LAMMPS *lmp) : PairPedone(lmp), ThrOMP(lmp, THR_PAIR) +{ + suffix_flag |= Suffix::OMP; + respa_enable = 0; +} + +/* ---------------------------------------------------------------------- */ + +void PairPedoneOMP::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; + +#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, nullptr, thr); + + if (evflag) { + if (eflag) { + if (force->newton_pair) + eval<1, 1, 1>(ifrom, ito, thr); + else + eval<1, 1, 0>(ifrom, ito, thr); + } else { + if (force->newton_pair) + eval<1, 0, 1>(ifrom, ito, thr); + else + eval<1, 0, 0>(ifrom, ito, thr); + } + } else { + if (force->newton_pair) + eval<0, 0, 1>(ifrom, ito, thr); + else + eval<0, 0, 0>(ifrom, ito, thr); + } + + thr->timer(Timer::PAIR); + reduce_thr(this, eflag, vflag, thr); + } // end of omp parallel region +} + +template +void PairPedoneOMP::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, r, r2inv, r6inv, dr, dexp, factor_lj; + int *ilist, *jlist, *numneigh, **firstneigh; + + evdwl = 0.0; + + const auto *_noalias const x = (dbl3_t *) atom->x[0]; + auto *_noalias const f = (dbl3_t *) thr->get_f()[0]; + const int *_noalias const type = atom->type; + const int nlocal = atom->nlocal; + const double *_noalias const special_lj = force->special_lj; + double fxtmp, fytmp, fztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + 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]; + fxtmp = fytmp = fztmp = 0.0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j].x; + dely = ytmp - x[j].y; + delz = ztmp - x[j].z; + rsq = delx * delx + dely * dely + delz * delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0 / rsq; + r6inv = r2inv * r2inv * r2inv; + r = sqrt(rsq); + dr = r - r0[itype][jtype]; + dexp = exp(-alpha[itype][jtype] * dr); + fpair = pedone1[itype][jtype] * (dexp * dexp - dexp) / r + + pedone2[itype][jtype] * r6inv * r6inv * r2inv; + fpair *= factor_lj; + + 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 = d0[itype][jtype] * (dexp * dexp - 2.0 * dexp) + c0[itype][jtype] * r6inv * r6inv - + offset[itype][jtype]; + evdwl *= factor_lj; + } + + 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 PairPedoneOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairPedone::memory_usage(); + + return bytes; +} diff --git a/src/OPENMP/pair_pedone_omp.h b/src/OPENMP/pair_pedone_omp.h new file mode 100644 index 00000000000..8c23e86fcde --- /dev/null +++ b/src/OPENMP/pair_pedone_omp.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 +// clang-format off +PairStyle(pedone/omp,PairPedoneOMP); +// clang-format on +#else + +#ifndef LMP_PAIR_PEDONE_OMP_H +#define LMP_PAIR_PEDONE_OMP_H + +#include "pair_pedone.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairPedoneOMP : public PairPedone, public ThrOMP { + + public: + PairPedoneOMP(class LAMMPS *); + + void compute(int, int) override; + double memory_usage() override; + + private: + template + void eval(int ifrom, int ito, ThrData *const thr); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/pair_rebomos_omp.cpp b/src/OPENMP/pair_rebomos_omp.cpp new file mode 100644 index 00000000000..06b979d41a7 --- /dev/null +++ b/src/OPENMP/pair_rebomos_omp.cpp @@ -0,0 +1,701 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + References: + + This code: + Stewart J A and Spearot D E (2013) Atomistic simulations of nanoindentation on the basal plane of crystalline molybdenum disulfide. Modelling Simul. Mater. Sci. Eng. 21. + + Based on: + Liang T, Phillpot S R and Sinnott S B (2009) Parameterization of a reactive many-body potential for Mo2S systems. Phys. Rev. B79 245110. + Liang T, Phillpot S R and Sinnott S B (2012) Erratum: Parameterization of a reactive many-body potential for Mo-S systems. (Phys. Rev. B79 245110 (2009)) Phys. Rev. B85 199903(E). + + LAMMPS file contributing authors: James Stewart, Khanh Dang and Douglas Spearot (University of Arkansas) +------------------------------------------------------------------------- */ + +// clang-format on + +#include "pair_rebomos_omp.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "math_special.h" +#include "memory.h" +#include "my_page.h" +#include "neigh_list.h" + +#include "suffix.h" + +#include + +#include "omp_compat.h" +#if defined(_OPENMP) +#include +#endif + +using namespace LAMMPS_NS; +using MathSpecial::cube; +using MathSpecial::powint; +using MathSpecial::square; + +static constexpr double TOL = 1.0e-9; + +/* ---------------------------------------------------------------------- */ + +PairREBOMoSOMP::PairREBOMoSOMP(LAMMPS *lmp) : PairREBOMoS(lmp), ThrOMP(lmp, THR_PAIR) +{ + suffix_flag |= Suffix::OMP; + respa_enable = 0; +} + +// clang-format off + +/* ---------------------------------------------------------------------- */ + +void PairREBOMoSOMP::compute(int eflag, int vflag) +{ + ev_init(eflag,vflag); + + REBO_neigh_thr(); + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#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, nullptr, thr); + + FREBO_thr(ifrom,ito,eflag,thr); + FLJ_thr(ifrom,ito,eflag,thr); + + thr->timer(Timer::PAIR); + reduce_thr(this, eflag, vflag, thr); + } // end of omp parallel region +} + +/* ---------------------------------------------------------------------- + create REBO neighbor list from main neighbor list + REBO neighbor list stores neighbors of ghost atoms +------------------------------------------------------------------------- */ + +void PairREBOMoSOMP::REBO_neigh_thr() +{ + const int nthreads = comm->nthreads; + + if (atom->nmax > maxlocal) { + maxlocal = atom->nmax; + memory->destroy(REBO_numneigh); + memory->sfree(REBO_firstneigh); + memory->destroy(nM); + memory->destroy(nS); + memory->create(REBO_numneigh,maxlocal,"REBOMoS:numneigh"); + REBO_firstneigh = (int **) memory->smalloc(maxlocal*sizeof(int *), + "REBOMoS:firstneigh"); + memory->create(nM,maxlocal,"REBOMoS:nM"); + memory->create(nS,maxlocal,"REBOMoS:nS"); + } + +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE +#endif + { + int i,j,ii,jj,n,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,dS; + int *ilist,*jlist,*numneigh,**firstneigh; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + + const int allnum = list->inum + list->gnum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + +#if defined(_OPENMP) + const int tid = omp_get_thread_num(); +#else + const int tid = 0; +#endif + + const int iidelta = 1 + allnum/nthreads; + const int iifrom = tid*iidelta; + const int iito = ((iifrom+iidelta)>allnum) ? allnum : (iifrom+iidelta); + + // store all REBO neighs of owned and ghost atoms + // scan full neighbor list of I + + // each thread has its own page allocator + MyPage &ipg = ipage[tid]; + ipg.reset(); + + for (ii = iifrom; ii < iito; ii++) { + i = ilist[ii]; + + n = 0; + neighptr = ipg.vget(); + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = map[type[i]]; + nM[i] = nS[i] = 0.0; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < rcmaxsq[itype][jtype]) { + neighptr[n++] = j; + if (jtype == 0) + nM[i] += Sp(sqrt(rsq),rcmin[itype][jtype],rcmax[itype][jtype],dS); + else + nS[i] += Sp(sqrt(rsq),rcmin[itype][jtype],rcmax[itype][jtype],dS); + } + } + + REBO_firstneigh[i] = neighptr; + REBO_numneigh[i] = n; + ipg.vgot(n); + if (ipg.status()) + error->one(FLERR,"REBO list overflow, boost neigh_modify one"); + } + } +} + +/* ---------------------------------------------------------------------- + REBO forces and energy +------------------------------------------------------------------------- */ + +void PairREBOMoSOMP::FREBO_thr(int ifrom, int ito, int eflag, ThrData * const thr) +{ + int i,j,k,ii,itype,jtype; + tagint itag, jtag; + double delx,dely,delz,evdwl,fpair,xtmp,ytmp,ztmp; + double rsq,rij,wij; + double Qij,Aij,alphaij,VR,pre,dVRdi,VA,bij,dVAdi,dVA; + double dwij,del[3]; + int *ilist,*REBO_neighs; + + evdwl = 0.0; + + const double * const * const x = atom->x; + double * const * const f = thr->get_f(); + const int * const type = atom->type; + const tagint * const tag = atom->tag; + const int nlocal = atom->nlocal; + + ilist = list->ilist; + + // two-body interactions from REBO neighbor list, skip half of them + + for (ii = ifrom; ii < ito; ii++) { + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + REBO_neighs = REBO_firstneigh[i]; + + for (k = 0; k < REBO_numneigh[i]; k++) { + j = REBO_neighs[k]; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + + jtype = map[type[j]]; + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + rij = sqrt(rsq); + wij = Sp(rij,rcmin[itype][jtype],rcmax[itype][jtype],dwij); + if (wij <= TOL) continue; + + Qij = Q[itype][jtype]; + Aij = A[itype][jtype]; + alphaij = alpha[itype][jtype]; + + VR = wij*(1.0+(Qij/rij)) * Aij*exp(-alphaij*rij); + pre = wij*Aij * exp(-alphaij*rij); + dVRdi = pre * ((-alphaij)-(Qij/rsq)-(Qij*alphaij/rij)); + dVRdi += VR/wij * dwij; + + VA = dVA = 0.0; + VA = -wij * BIJc[itype][jtype] * exp(-Beta[itype][jtype]*rij); + + dVA = -Beta[itype][jtype] * VA; + dVA += VA/wij * dwij; + + del[0] = delx; + del[1] = dely; + del[2] = delz; + bij = bondorder_thr(i,j,del,rij,VA,thr); + dVAdi = bij*dVA; + + fpair = -(dVRdi+dVAdi) / rij; + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + + if (eflag) evdwl = VR + bij*VA; + if (evflag) ev_tally_thr(this,i,j,nlocal,/* newton_pair */1,evdwl,0.0,fpair,delx,dely,delz,thr); + } + } +} + +/* ---------------------------------------------------------------------- + compute LJ forces and energy +------------------------------------------------------------------------- */ + +void PairREBOMoSOMP::FLJ_thr(int ifrom, int ito, int eflag, ThrData * const thr) +{ + int i,j,ii,jj,jnum,itype,jtype; + tagint itag,jtag; + double evdwl,fpair,xtmp,ytmp,ztmp; + double rij,delij[3],rijsq; + double VLJ,dVLJ; + double vdw,dvdw; + double r2inv,r6inv; + int *ilist,*jlist,*numneigh,**firstneigh; + double c2,c3,dr,drp,r6; + + // I-J interaction from full neighbor list + // skip 1/2 of interactions since only consider each pair once + + evdwl = 0.0; + + const double * const * const x = atom->x; + double * const * const f = thr->get_f(); + const tagint * const tag = atom->tag; + const int * const type = atom->type; + const int nlocal = atom->nlocal; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = ifrom; ii < ito; ii++) { + i = ilist[ii]; + itag = tag[i]; + itype = map[type[i]]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtag = tag[j]; + + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp && x[j][1] < ytmp) continue; + if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + jtype = map[type[j]]; + + delij[0] = xtmp - x[j][0]; + delij[1] = ytmp - x[j][1]; + delij[2] = ztmp - x[j][2]; + rijsq = delij[0]*delij[0] + delij[1]*delij[1] + delij[2]*delij[2]; + rij = sqrt(rijsq); + + // compute LJ forces and energy + + // Outside Rmax + if (rij > rcLJmax[itype][jtype] || rij < rcLJmin[itype][jtype]){ + VLJ = 0; + dVLJ = 0; + } + + // Inside Rmax and above 0.95*sigma + else if (rij <= rcLJmax[itype][jtype] && rij >= 0.95*sigma[itype][jtype]){ + r2inv = 1.0/rijsq; + r6inv = r2inv*r2inv*r2inv; + VLJ = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + dVLJ = -r6inv*(lj1[itype][jtype]*r6inv - lj2[itype][jtype])/rij; + } + + // Below 0.95*sigma + else if (rij < 0.95*sigma[itype][jtype] && rij >= rcLJmin[itype][jtype]){ + dr = 0.95*sigma[itype][jtype] - rcLJmin[itype][jtype]; + r6 = powint((sigma[itype][jtype]/(0.95*sigma[itype][jtype])),6); + vdw = 4*epsilon[itype][jtype]*r6*(r6 - 1.0); + dvdw = (-4*epsilon[itype][jtype]/(0.95*sigma[itype][jtype]))*r6*(12.0*r6 - 6.0); + c2 = ((3.0/dr)*vdw - dvdw)/dr; + c3 = (vdw/(dr*dr) - c2)/dr; + + drp = rij - rcLJmin[itype][jtype]; + VLJ = drp*drp*(drp*c3 + c2); + dVLJ = drp*(3.0*drp*c3 + 2.0*c2); + } + + fpair = -dVLJ/rij; + f[i][0] += delij[0]*fpair; + f[i][1] += delij[1]*fpair; + f[i][2] += delij[2]*fpair; + f[j][0] -= delij[0]*fpair; + f[j][1] -= delij[1]*fpair; + f[j][2] -= delij[2]*fpair; + + if (eflag) evdwl = VLJ; + if (evflag) ev_tally_thr(this,i,j,nlocal,/*newton_pair*/1,evdwl,0.0,fpair,delij[0],delij[1],delij[2],thr); + + } + } +} + +/* ---------------------------------------------------------------------- + Bij function + + The bond order term modified the attractive portion of the REBO + potential based on the number of atoms around a specific pair + and the bond angle between sets of three atoms. + + The functions G(cos(theta)) and P(N) are evaluated and their + derivatives are also computed for use in the force calculation. +------------------------------------------------------------------------- */ + +double PairREBOMoSOMP::bondorder_thr(int i, int j, double rij[3], double rijmag, double VA, ThrData *thr) +{ + int atomi,atomj,atomk,atoml; + int k,l; + int itype, jtype, ktype, ltype; + double rik[3], rjl[3], rji[3], rki[3],rlj[3], dwjl, bij; + double NijM,NijS,NjiM,NjiS,wik,dwik,wjl; + double rikmag,rjlmag,cosjik,cosijl,g,tmp2; + double Etmp,pij,tmp,dwij,dS; + double dgdc,pji; + double dcosjikdri[3],dcosijldri[3],dcosjikdrk[3]; + double dp; + double dcosjikdrj[3],dcosijldrj[3],dcosijldrl[3]; + double fi[3],fj[3],fk[3],fl[3]; + double PijS, PjiS; + int *REBO_neighs; + + const double * const * const x = atom->x; + double * const * const f = thr->get_f(); + const int * const type = atom->type; + + atomi = i; + atomj = j; + itype = map[type[i]]; + jtype = map[type[j]]; + Sp(rijmag,rcmin[itype][jtype],rcmax[itype][jtype],dwij); + NijM = nM[i]; + NijS = nS[i]; + NjiM = nM[j]; + NjiS = nS[j]; + bij = 0.0; + tmp = 0.0; + tmp2 = 0.0; + dgdc = 0.0; + Etmp = 0.0; + + REBO_neighs = REBO_firstneigh[i]; + for (k = 0; k < REBO_numneigh[i]; k++) { + atomk = REBO_neighs[k]; + if (atomk != atomj) { + ktype = map[type[atomk]]; + rik[0] = x[atomi][0]-x[atomk][0]; + rik[1] = x[atomi][1]-x[atomk][1]; + rik[2] = x[atomi][2]-x[atomk][2]; + rikmag = sqrt((rik[0]*rik[0])+(rik[1]*rik[1])+(rik[2]*rik[2])); + wik = Sp(rikmag,rcmin[itype][ktype],rcmax[itype][ktype],dS); + cosjik = ((rij[0]*rik[0])+(rij[1]*rik[1])+(rij[2]*rik[2])) / (rijmag*rikmag); + cosjik = MIN(cosjik,1.0); + cosjik = MAX(cosjik,-1.0); + + // evaluate g and derivative dg + + g = gSpline(cosjik,itype,dgdc); + Etmp = Etmp+(wik*g); + } + } + + dp = 0.0; + PijS = PijSpline(NijM,NijS,itype,dp); + pij = 1.0/sqrt(1.0+Etmp+PijS); + tmp = -0.5*cube(pij); + + // derivative calculations + + REBO_neighs = REBO_firstneigh[i]; + for (k = 0; k < REBO_numneigh[i]; k++) { + atomk = REBO_neighs[k]; + if (atomk != atomj) { + ktype = map[type[atomk]]; + rik[0] = x[atomi][0]-x[atomk][0]; + rik[1] = x[atomi][1]-x[atomk][1]; + rik[2] = x[atomi][2]-x[atomk][2]; + rikmag = sqrt((rik[0]*rik[0])+(rik[1]*rik[1])+(rik[2]*rik[2])); + wik = Sp(rikmag,rcmin[itype][ktype],rcmax[itype][ktype],dwik); + cosjik = (rij[0]*rik[0] + rij[1]*rik[1] + rij[2]*rik[2]) / (rijmag*rikmag); + cosjik = MIN(cosjik,1.0); + cosjik = MAX(cosjik,-1.0); + + dcosjikdri[0] = ((rij[0]+rik[0])/(rijmag*rikmag)) - + (cosjik*((rij[0]/(rijmag*rijmag))+(rik[0]/(rikmag*rikmag)))); + dcosjikdri[1] = ((rij[1]+rik[1])/(rijmag*rikmag)) - + (cosjik*((rij[1]/(rijmag*rijmag))+(rik[1]/(rikmag*rikmag)))); + dcosjikdri[2] = ((rij[2]+rik[2])/(rijmag*rikmag)) - + (cosjik*((rij[2]/(rijmag*rijmag))+(rik[2]/(rikmag*rikmag)))); + dcosjikdrk[0] = (-rij[0]/(rijmag*rikmag)) + + (cosjik*(rik[0]/(rikmag*rikmag))); + dcosjikdrk[1] = (-rij[1]/(rijmag*rikmag)) + + (cosjik*(rik[1]/(rikmag*rikmag))); + dcosjikdrk[2] = (-rij[2]/(rijmag*rikmag)) + + (cosjik*(rik[2]/(rikmag*rikmag))); + dcosjikdrj[0] = (-rik[0]/(rijmag*rikmag)) + + (cosjik*(rij[0]/(rijmag*rijmag))); + dcosjikdrj[1] = (-rik[1]/(rijmag*rikmag)) + + (cosjik*(rij[1]/(rijmag*rijmag))); + dcosjikdrj[2] = (-rik[2]/(rijmag*rikmag)) + + (cosjik*(rij[2]/(rijmag*rijmag))); + + g = gSpline(cosjik,itype,dgdc); + tmp2 = VA*0.5*(tmp*wik*dgdc); + fj[0] = -tmp2*dcosjikdrj[0]; + fj[1] = -tmp2*dcosjikdrj[1]; + fj[2] = -tmp2*dcosjikdrj[2]; + fi[0] = -tmp2*dcosjikdri[0]; + fi[1] = -tmp2*dcosjikdri[1]; + fi[2] = -tmp2*dcosjikdri[2]; + fk[0] = -tmp2*dcosjikdrk[0]; + fk[1] = -tmp2*dcosjikdrk[1]; + fk[2] = -tmp2*dcosjikdrk[2]; + + // coordination forces + + // dwik forces (from partial derivative) + + tmp2 = VA*0.5*(tmp*dwik*g)/rikmag; + fi[0] -= tmp2*rik[0]; + fi[1] -= tmp2*rik[1]; + fi[2] -= tmp2*rik[2]; + fk[0] += tmp2*rik[0]; + fk[1] += tmp2*rik[1]; + fk[2] += tmp2*rik[2]; + + // PIJ forces (from coordination P(N) term) + + tmp2 = VA*0.5*(tmp*dp*dwik)/rikmag; + fi[0] -= tmp2*rik[0]; + fi[1] -= tmp2*rik[1]; + fi[2] -= tmp2*rik[2]; + fk[0] += tmp2*rik[0]; + fk[1] += tmp2*rik[1]; + fk[2] += tmp2*rik[2]; + + // dgdN forces are removed + + f[atomi][0] += fi[0]; f[atomi][1] += fi[1]; f[atomi][2] += fi[2]; + f[atomj][0] += fj[0]; f[atomj][1] += fj[1]; f[atomj][2] += fj[2]; + f[atomk][0] += fk[0]; f[atomk][1] += fk[1]; f[atomk][2] += fk[2]; + + if (vflag_either) { + rji[0] = -rij[0]; rji[1] = -rij[1]; rji[2] = -rij[2]; + rki[0] = -rik[0]; rki[1] = -rik[1]; rki[2] = -rik[2]; + v_tally3_thr(this,atomi,atomj,atomk,fj,fk,rji,rki,thr); + } + } + } + + // PIJ force contribution additional term + tmp2 = -VA*0.5*(tmp*dp*dwij)/rijmag; + + f[atomi][0] += rij[0]*tmp2; + f[atomi][1] += rij[1]*tmp2; + f[atomi][2] += rij[2]*tmp2; + f[atomj][0] -= rij[0]*tmp2; + f[atomj][1] -= rij[1]*tmp2; + f[atomj][2] -= rij[2]*tmp2; + + if (vflag_either) v_tally2_thr(this,atomi,atomj,tmp2,rij,thr); + + tmp = 0.0; + tmp2 = 0.0; + Etmp = 0.0; + + REBO_neighs = REBO_firstneigh[j]; + for (l = 0; l < REBO_numneigh[j]; l++) { + atoml = REBO_neighs[l]; + if (atoml != atomi) { + ltype = map[type[atoml]]; + rjl[0] = x[atomj][0]-x[atoml][0]; + rjl[1] = x[atomj][1]-x[atoml][1]; + rjl[2] = x[atomj][2]-x[atoml][2]; + rjlmag = sqrt((rjl[0]*rjl[0])+(rjl[1]*rjl[1])+(rjl[2]*rjl[2])); + wjl = Sp(rjlmag,rcmin[jtype][ltype],rcmax[jtype][ltype],dS); + cosijl = -1.0*((rij[0]*rjl[0])+(rij[1]*rjl[1])+(rij[2]*rjl[2])) / (rijmag*rjlmag); + cosijl = MIN(cosijl,1.0); + cosijl = MAX(cosijl,-1.0); + + // evaluate g and derivative dg + + g = gSpline(cosijl,jtype,dgdc); + Etmp = Etmp+(wjl*g); + } + } + + dp = 0.0; + PjiS = PijSpline(NjiM,NjiS,jtype,dp); + pji = 1.0/sqrt(1.0+Etmp+PjiS); + tmp = -0.5*cube(pji); + + REBO_neighs = REBO_firstneigh[j]; + for (l = 0; l < REBO_numneigh[j]; l++) { + atoml = REBO_neighs[l]; + if (atoml != atomi) { + ltype = map[type[atoml]]; + rjl[0] = x[atomj][0]-x[atoml][0]; + rjl[1] = x[atomj][1]-x[atoml][1]; + rjl[2] = x[atomj][2]-x[atoml][2]; + rjlmag = sqrt((rjl[0]*rjl[0])+(rjl[1]*rjl[1])+(rjl[2]*rjl[2])); + wjl = Sp(rjlmag,rcmin[jtype][ltype],rcmax[jtype][ltype],dwjl); + cosijl = (-1.0*((rij[0]*rjl[0])+(rij[1]*rjl[1])+(rij[2]*rjl[2]))) / (rijmag*rjlmag); + cosijl = MIN(cosijl,1.0); + cosijl = MAX(cosijl,-1.0); + + dcosijldri[0] = (-rjl[0]/(rijmag*rjlmag)) - + (cosijl*rij[0]/(rijmag*rijmag)); + dcosijldri[1] = (-rjl[1]/(rijmag*rjlmag)) - + (cosijl*rij[1]/(rijmag*rijmag)); + dcosijldri[2] = (-rjl[2]/(rijmag*rjlmag)) - + (cosijl*rij[2]/(rijmag*rijmag)); + dcosijldrj[0] = ((-rij[0]+rjl[0])/(rijmag*rjlmag)) + + (cosijl*((rij[0]/square(rijmag))-(rjl[0]/(rjlmag*rjlmag)))); + dcosijldrj[1] = ((-rij[1]+rjl[1])/(rijmag*rjlmag)) + + (cosijl*((rij[1]/square(rijmag))-(rjl[1]/(rjlmag*rjlmag)))); + dcosijldrj[2] = ((-rij[2]+rjl[2])/(rijmag*rjlmag)) + + (cosijl*((rij[2]/square(rijmag))-(rjl[2]/(rjlmag*rjlmag)))); + dcosijldrl[0] = (rij[0]/(rijmag*rjlmag))+(cosijl*rjl[0]/(rjlmag*rjlmag)); + dcosijldrl[1] = (rij[1]/(rijmag*rjlmag))+(cosijl*rjl[1]/(rjlmag*rjlmag)); + dcosijldrl[2] = (rij[2]/(rijmag*rjlmag))+(cosijl*rjl[2]/(rjlmag*rjlmag)); + + // evaluate g and derivatives dg + + g = gSpline(cosijl,jtype,dgdc); + tmp2 = VA*0.5*(tmp*wjl*dgdc); + fi[0] = -tmp2*dcosijldri[0]; + fi[1] = -tmp2*dcosijldri[1]; + fi[2] = -tmp2*dcosijldri[2]; + fj[0] = -tmp2*dcosijldrj[0]; + fj[1] = -tmp2*dcosijldrj[1]; + fj[2] = -tmp2*dcosijldrj[2]; + fl[0] = -tmp2*dcosijldrl[0]; + fl[1] = -tmp2*dcosijldrl[1]; + fl[2] = -tmp2*dcosijldrl[2]; + + // coordination forces + + // dwik forces (from partial derivative) + + tmp2 = VA*0.5*(tmp*dwjl*g)/rjlmag; + fj[0] -= tmp2*rjl[0]; + fj[1] -= tmp2*rjl[1]; + fj[2] -= tmp2*rjl[2]; + fl[0] += tmp2*rjl[0]; + fl[1] += tmp2*rjl[1]; + fl[2] += tmp2*rjl[2]; + + // PIJ forces (coordination) + + tmp2 = VA*0.5*(tmp*dp*dwjl)/rjlmag; + fj[0] -= tmp2*rjl[0]; + fj[1] -= tmp2*rjl[1]; + fj[2] -= tmp2*rjl[2]; + fl[0] += tmp2*rjl[0]; + fl[1] += tmp2*rjl[1]; + fl[2] += tmp2*rjl[2]; + + // dgdN forces are removed + + f[atomi][0] += fi[0]; f[atomi][1] += fi[1]; f[atomi][2] += fi[2]; + f[atomj][0] += fj[0]; f[atomj][1] += fj[1]; f[atomj][2] += fj[2]; + f[atoml][0] += fl[0]; f[atoml][1] += fl[1]; f[atoml][2] += fl[2]; + + if (vflag_either) { + rlj[0] = -rjl[0]; rlj[1] = -rjl[1]; rlj[2] = -rjl[2]; + v_tally3_thr(this,atomi,atomj,atoml,fi,fl,rij,rlj,thr); + } + } + } + + // PIJ force contribution additional term + + tmp2 = -VA*0.5*(tmp*dp*dwij)/rijmag; + f[atomi][0] += rij[0]*tmp2; + f[atomi][1] += rij[1]*tmp2; + f[atomi][2] += rij[2]*tmp2; + f[atomj][0] -= rij[0]*tmp2; + f[atomj][1] -= rij[1]*tmp2; + f[atomj][2] -= rij[2]*tmp2; + + if (vflag_either) v_tally2_thr(this,atomi,atomj,tmp2,rij,thr); + + bij = (0.5*(pij+pji)); + return bij; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double PairREBOMoSOMP::memory_usage() +{ + double bytes = memory_usage_thr(); + bytes += PairREBOMoS::memory_usage(); + + return bytes; +} diff --git a/src/OPENMP/pair_rebomos_omp.h b/src/OPENMP/pair_rebomos_omp.h new file mode 100644 index 00000000000..ea87f51950f --- /dev/null +++ b/src/OPENMP/pair_rebomos_omp.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + 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 PAIR_CLASS +// clang-format off +PairStyle(rebomos/omp,PairREBOMoSOMP); +// clang-format on +#else + +#ifndef LMP_PAIR_REBOMOS_OMP_H +#define LMP_PAIR_REBOMOS_OMP_H + +#include "pair_rebomos.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairREBOMoSOMP : public PairREBOMoS, public ThrOMP { + public: + PairREBOMoSOMP(class LAMMPS *); + + void compute(int, int) override; + double memory_usage() override; + + protected: + void FREBO_thr(int ifrom, int ito, int eflag, ThrData *const thr); + void FLJ_thr(int ifrom, int ito, int eflag, ThrData *const thr); + + void REBO_neigh_thr(); + + double bondorder_thr(int, int, double *, double, double, ThrData *const thr); +}; +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/pair_soft_omp.cpp b/src/OPENMP/pair_soft_omp.cpp index 0be8c80dcfa..309d11a6f9c 100644 --- a/src/OPENMP/pair_soft_omp.cpp +++ b/src/OPENMP/pair_soft_omp.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 1.0e-4 +static constexpr double SMALL = 1.0e-4; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_tersoff_table_omp.cpp b/src/OPENMP/pair_tersoff_table_omp.cpp index 5c44aa33294..edd5b73d899 100644 --- a/src/OPENMP/pair_tersoff_table_omp.cpp +++ b/src/OPENMP/pair_tersoff_table_omp.cpp @@ -26,15 +26,15 @@ #include "omp_compat.h" using namespace LAMMPS_NS; -#define GRIDSTART 0.1 -#define GRIDDENSITY_FCUTOFF 5000 -#define GRIDDENSITY_EXP 12000 -#define GRIDDENSITY_GTETA 12000 -#define GRIDDENSITY_BIJ 7500 +static constexpr double GRIDSTART = 0.1; +static constexpr int GRIDDENSITY_FCUTOFF = 5000; +static constexpr int GRIDDENSITY_EXP = 12000; +static constexpr int GRIDDENSITY_GTETA = 12000; +static constexpr int GRIDDENSITY_BIJ = 7500; // max number of interaction per atom for environment potential -#define leadingDimensionInteractionList 64 +static constexpr int leadingDimensionInteractionList = 64; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_tersoff_zbl_omp.cpp b/src/OPENMP/pair_tersoff_zbl_omp.cpp index cefa89665a1..524d7fe509f 100644 --- a/src/OPENMP/pair_tersoff_zbl_omp.cpp +++ b/src/OPENMP/pair_tersoff_zbl_omp.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#define DELTA 4 +static constexpr int DELTA = 4; /* ---------------------------------------------------------------------- Fermi-like smoothing function diff --git a/src/OPENMP/pair_tip4p_cut_omp.cpp b/src/OPENMP/pair_tip4p_cut_omp.cpp index 497743daffd..d43559fc81b 100644 --- a/src/OPENMP/pair_tip4p_cut_omp.cpp +++ b/src/OPENMP/pair_tip4p_cut_omp.cpp @@ -26,15 +26,8 @@ #include "neigh_list.h" #include "suffix.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_tip4p_long_omp.cpp b/src/OPENMP/pair_tip4p_long_omp.cpp index 8c0648cc4ac..186549a9996 100644 --- a/src/OPENMP/pair_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_tip4p_long_omp.cpp @@ -13,28 +13,25 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" -#include #include "pair_tip4p_long_omp.h" + #include "atom.h" -#include "domain.h" #include "comm.h" -#include "force.h" -#include "neighbor.h" +#include "domain.h" #include "error.h" +#include "ewald_const.h" +#include "force.h" #include "memory.h" #include "neigh_list.h" - +#include "neighbor.h" #include "suffix.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#include + +#include "omp_compat.h" + +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pair_tip4p_long_soft_omp.cpp b/src/OPENMP/pair_tip4p_long_soft_omp.cpp index 4a7d6bdfe29..d2fa95a10cd 100644 --- a/src/OPENMP/pair_tip4p_long_soft_omp.cpp +++ b/src/OPENMP/pair_tip4p_long_soft_omp.cpp @@ -22,19 +22,14 @@ #include "force.h" #include "neighbor.h" #include "error.h" +#include "ewald_const.h" #include "memory.h" #include "neigh_list.h" #include "suffix.h" -using namespace LAMMPS_NS; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pppm_cg_omp.cpp b/src/OPENMP/pppm_cg_omp.cpp index 4c751a16f72..66305100039 100644 --- a/src/OPENMP/pppm_cg_omp.cpp +++ b/src/OPENMP/pppm_cg_omp.cpp @@ -38,15 +38,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - -#define EPS_HOC 1.0e-7 +static constexpr FFT_SCALAR ZEROF = 0.0; +static constexpr double EPS_HOC = 1.0e-7; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pppm_disp_omp.cpp b/src/OPENMP/pppm_disp_omp.cpp index 24bf2d95648..45959dadba4 100644 --- a/src/OPENMP/pppm_disp_omp.cpp +++ b/src/OPENMP/pppm_disp_omp.cpp @@ -38,15 +38,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - -#define OFFSET 16384 +static constexpr FFT_SCALAR ZEROF = 0.0; +static constexpr int OFFSET = 16384; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pppm_disp_tip4p_omp.cpp b/src/OPENMP/pppm_disp_tip4p_omp.cpp index ab6342a047e..bcc083e809b 100644 --- a/src/OPENMP/pppm_disp_tip4p_omp.cpp +++ b/src/OPENMP/pppm_disp_tip4p_omp.cpp @@ -37,13 +37,8 @@ using namespace LAMMPS_NS; using namespace MathConst; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#else -#define ZEROF 0.0 -#endif - -#define OFFSET 16384 +static constexpr FFT_SCALAR ZEROF = 0.0; +static constexpr int OFFSET = 16384; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pppm_omp.cpp b/src/OPENMP/pppm_omp.cpp index 86e65da1010..a178483b8a5 100644 --- a/src/OPENMP/pppm_omp.cpp +++ b/src/OPENMP/pppm_omp.cpp @@ -38,13 +38,8 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#else -#define ZEROF 0.0 -#endif - -#define EPS_HOC 1.0e-7 +static constexpr FFT_SCALAR ZEROF = 0.0; +static constexpr double EPS_HOC = 1.0e-7; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/pppm_tip4p_omp.cpp b/src/OPENMP/pppm_tip4p_omp.cpp index 66ce44b5ef4..420a1168161 100644 --- a/src/OPENMP/pppm_tip4p_omp.cpp +++ b/src/OPENMP/pppm_tip4p_omp.cpp @@ -39,14 +39,10 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MathSpecial; -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#else -#define ZEROF 0.0 -#endif +static constexpr FFT_SCALAR ZEROF = 0.0; -#define EPS_HOC 1.0e-7 -#define OFFSET 16384 +static constexpr double EPS_HOC = 1.0e-7; +static constexpr int OFFSET = 16384; /* ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/reaxff_torsion_angles_omp.cpp b/src/OPENMP/reaxff_torsion_angles_omp.cpp index 3b730e26d4f..945a670a512 100644 --- a/src/OPENMP/reaxff_torsion_angles_omp.cpp +++ b/src/OPENMP/reaxff_torsion_angles_omp.cpp @@ -34,8 +34,6 @@ #include -#define MIN_SINE 1e-10 - using namespace LAMMPS_NS; namespace ReaxFF { diff --git a/src/OPT/pair_eam_opt.cpp b/src/OPT/pair_eam_opt.cpp index 0560b0693a0..96afff4ee5a 100644 --- a/src/OPT/pair_eam_opt.cpp +++ b/src/OPT/pair_eam_opt.cpp @@ -23,6 +23,7 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "memory.h" #include "neigh_list.h" @@ -118,6 +119,7 @@ template void PairEAMOpt::eval() int ntypes = atom->ntypes; int ntypes2 = ntypes * ntypes; + int beyond_rhomax = 0; auto *_noalias fast_alpha = (fast_alpha_t *) malloc((size_t) ntypes2 * (nr + 1) * sizeof(fast_alpha_t)); @@ -251,7 +253,10 @@ template void PairEAMOpt::eval() fp[i] = (coeff[0] * p + coeff[1]) * p + coeff[2]; if (EFLAG) { double phi = ((coeff[3] * p + coeff[4]) * p + coeff[5]) * p + coeff[6]; - if (rho[i] > rhomax) phi += fp[i] * (rho[i] - rhomax); + if (rho[i] > rhomax) { + phi += fp[i] * (rho[i] - rhomax); + beyond_rhomax = 1; + } phi *= scale[type[i]][type[i]]; if (eflag_global) eng_vdwl += phi; if (eflag_atom) eatom[i] += phi; @@ -361,5 +366,15 @@ template void PairEAMOpt::eval() free(fast_gamma); fast_gamma = nullptr; + if (EFLAG && (!exceeded_rhomax)) { + MPI_Allreduce(&beyond_rhomax, &exceeded_rhomax, 1, MPI_INT, MPI_SUM, world); + if (exceeded_rhomax) { + if (comm->me == 0) + error->warning(FLERR, + "A per-atom density exceeded rhomax of EAM potential table - " + "a linear extrapolation to the energy was made"); + } + } + if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/OPT/pair_lj_charmm_coul_long_opt.cpp b/src/OPT/pair_lj_charmm_coul_long_opt.cpp index f5d38148a61..cc1bb71f9b0 100644 --- a/src/OPT/pair_lj_charmm_coul_long_opt.cpp +++ b/src/OPT/pair_lj_charmm_coul_long_opt.cpp @@ -20,21 +20,16 @@ ------------------------------------------------------------------------- */ #include "pair_lj_charmm_coul_long_opt.h" -#include #include "atom.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" -using namespace LAMMPS_NS; +#include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define EWALD_A1 0.254829592 -#define EWALD_A2 -0.284496736 -#define EWALD_A3 1.421413741 -#define EWALD_A4 -1.453152027 -#define EWALD_A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ @@ -158,9 +153,7 @@ void PairLJCharmmCoulLongOpt::eval() grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * - (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * - expm2; + erfc = t * (A1 + t*(A2 + t*(A3 + t*(A4 + t*A5)))) * expm2; prefactor = qqrd2e * tmp_coef3/r; forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); } else { @@ -247,9 +240,7 @@ void PairLJCharmmCoulLongOpt::eval() grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * - (EWALD_A1+t*(EWALD_A2+t*(EWALD_A3+t*(EWALD_A4+t*EWALD_A5)))) * - expm2; + erfc = t * (A1 + t*(A2 + t*(A3 + t*(A4 + t*A5)))) * expm2; prefactor = qqrd2e * tmp_coef3/r; forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); if (factor_coul < 1.0) { diff --git a/src/OPT/pair_lj_cut_coul_long_opt.cpp b/src/OPT/pair_lj_cut_coul_long_opt.cpp index 7ae43658d96..ea4ce7bedeb 100644 --- a/src/OPT/pair_lj_cut_coul_long_opt.cpp +++ b/src/OPT/pair_lj_cut_coul_long_opt.cpp @@ -13,20 +13,16 @@ ------------------------------------------------------------------------- */ #include "pair_lj_cut_coul_long_opt.h" -#include + #include "atom.h" +#include "ewald_const.h" #include "force.h" #include "neigh_list.h" -using namespace LAMMPS_NS; +#include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp index 5e484fd866b..9a9e536bfe5 100644 --- a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp +++ b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp @@ -17,24 +17,20 @@ ------------------------------------------------------------------------- */ #include "pair_lj_cut_tip4p_long_opt.h" -#include + #include "atom.h" #include "domain.h" #include "force.h" #include "error.h" +#include "ewald_const.h" #include "memory.h" #include "neighbor.h" #include "neigh_list.h" -using namespace LAMMPS_NS; +#include -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace LAMMPS_NS; +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/OPT/pair_lj_long_coul_long_opt.cpp b/src/OPT/pair_lj_long_coul_long_opt.cpp index a7aa2328827..afadf107f4b 100644 --- a/src/OPT/pair_lj_long_coul_long_opt.cpp +++ b/src/OPT/pair_lj_long_coul_long_opt.cpp @@ -19,6 +19,7 @@ #include "pair_lj_long_coul_long_opt.h" #include "atom.h" +#include "ewald_const.h" #include "force.h" #include "math_extra.h" #include "neigh_list.h" @@ -28,14 +29,7 @@ using namespace LAMMPS_NS; using namespace MathExtra; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/ORIENT/fix_orient_bcc.cpp b/src/ORIENT/fix_orient_bcc.cpp index 2d801b0bdc7..25fec2e606a 100644 --- a/src/ORIENT/fix_orient_bcc.cpp +++ b/src/ORIENT/fix_orient_bcc.cpp @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define BIG 1000000000 +static constexpr int BIG = 1000000000; static const char cite_fix_orient_bcc[] = "fix orient/bcc command: doi:10.1016/j.commatsci.2016.02.016\n\n" diff --git a/src/ORIENT/fix_orient_fcc.cpp b/src/ORIENT/fix_orient_fcc.cpp index cdb3fd689d9..78a84852787 100644 --- a/src/ORIENT/fix_orient_fcc.cpp +++ b/src/ORIENT/fix_orient_fcc.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define BIG 1000000000 +static constexpr int BIG = 1000000000; static const char cite_fix_orient_fcc[] = "fix orient/fcc command: doi:10.1038/nmat1559\n\n" diff --git a/src/PHONON/fix_phonon.cpp b/src/PHONON/fix_phonon.cpp index 6b5294d3087..786931a549c 100644 --- a/src/PHONON/fix_phonon.cpp +++ b/src/PHONON/fix_phonon.cpp @@ -45,9 +45,9 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define MAXLINE 512 +static constexpr int MAXLINE = 512; -enum{FORWARD=-1,BACKWARD=1}; +enum{ FORWARD=-1, BACKWARD=1 }; static const char cite_fix_phonon[] = "fix phonon command: doi:10.1016/j.cpc.2011.04.019\n\n" @@ -555,7 +555,7 @@ void FixPhonon::readmap() } // read from map file for others - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; FILE *fp = fopen(mapfile, "r"); if (fp == nullptr) error->all(FLERR,"Cannot open input map file {}: {}", mapfile, utils::getsyserror()); diff --git a/src/POEMS/fix_poems.cpp b/src/POEMS/fix_poems.cpp index f289a939e62..eb9c790422f 100644 --- a/src/POEMS/fix_poems.cpp +++ b/src/POEMS/fix_poems.cpp @@ -36,15 +36,15 @@ #include #include -#include +#include using namespace LAMMPS_NS; using namespace FixConst; #define MAXBODY 2 // currently 2 since only linear chains allowed -#define DELTA 128 -#define TOLERANCE 1.0e-6 -#define EPSILON 1.0e-7 + +static constexpr double TOLERANCE = 1.0e-6; +static constexpr double EPSILON = 1.0e-7; static const char cite_fix_poems[] = "fix poems command: doi:10.1016/j.ijnonlinmec.2008.04.003\n\n" @@ -855,7 +855,7 @@ void FixPOEMS::pre_neighbor() {} count # of degrees-of-freedom removed by fix_poems for atoms in igroup ------------------------------------------------------------------------- */ -int FixPOEMS::dof(int igroup) +bigint FixPOEMS::dof(int igroup) { int groupbit = group->bitmask[igroup]; @@ -877,17 +877,17 @@ int FixPOEMS::dof(int igroup) // remove 3N - 6 dof for each rigid body if at least 2 atoms are in igroup - int n = 0; + bigint n = 0; for (int ibody = 0; ibody < nbody; ibody++) if (nall[ibody] > 2) n += 3 * nall[ibody] - 6; // subtract 3 additional dof for each joint if atom is also in igroup - int m = 0; + bigint m = 0; for (int i = 0; i < nlocal; i++) if (natom2body[i] > 1 && (mask[i] & groupbit)) m += 3 * (natom2body[i] - 1); - int mall; - MPI_Allreduce(&m, &mall, 1, MPI_INT, MPI_SUM, world); + bigint mall; + MPI_Allreduce(&m, &mall, 1, MPI_LMP_BIGINT, MPI_SUM, world); n += mall; // delete local memory diff --git a/src/POEMS/fix_poems.h b/src/POEMS/fix_poems.h index 99af1716368..6aac4abd8a6 100644 --- a/src/POEMS/fix_poems.h +++ b/src/POEMS/fix_poems.h @@ -47,7 +47,7 @@ class FixPOEMS : public Fix { double memory_usage() override; void pre_neighbor() override; - int dof(int) override; + bigint dof(int) override; void deform(int) override; int modify_param(int, char **) override; void reset_dt() override; diff --git a/src/PTM/compute_ptm_atom.cpp b/src/PTM/compute_ptm_atom.cpp index e66bc1a17dc..4d6cd4bc012 100644 --- a/src/PTM/compute_ptm_atom.cpp +++ b/src/PTM/compute_ptm_atom.cpp @@ -28,7 +28,6 @@ under #include "memory.h" #include "modify.h" #include "neigh_list.h" -#include "neigh_request.h" #include "neighbor.h" #include "update.h" diff --git a/src/PTM/ptm_convex_hull_incremental.cpp b/src/PTM/ptm_convex_hull_incremental.cpp index 25ff54c7879..abae00778cf 100644 --- a/src/PTM/ptm_convex_hull_incremental.cpp +++ b/src/PTM/ptm_convex_hull_incremental.cpp @@ -17,10 +17,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI namespace ptm { -#define VISIBLE 1 -#define INVISIBLE 2 -#define BOTH 3 -#define TOLERANCE 1E-8 +enum { VISIBLE=1, INVISIBLE, BOTH }; +static constexpr double TOLERANCE = 1E-8; static double norm_squared(double *p) { diff --git a/src/PTM/ptm_convex_hull_incremental.h b/src/PTM/ptm_convex_hull_incremental.h index 796c787937a..81fc92d829f 100644 --- a/src/PTM/ptm_convex_hull_incremental.h +++ b/src/PTM/ptm_convex_hull_incremental.h @@ -11,7 +11,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #define PTM_CONVEX_HULL_INCREMENTAL_H #include "ptm_constants.h" -#include #include namespace ptm { diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index 0db468d7018..87a57187bf0 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -17,7 +17,6 @@ #include "python_impl.h" -#include "comm.h" #include "error.h" #include "input.h" #include "memory.h" diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index b60438b7c88..411bdfb60b5 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -27,9 +27,7 @@ #include "memory.h" #include "modify.h" #include "neigh_list.h" -#include "pair.h" #include "respa.h" -#include "suffix.h" #include "text_file_reader.h" #include "update.h" @@ -338,12 +336,6 @@ void FixQEq::setup_pre_force(int vflag) if (force->newton_pair == 0) error->all(FLERR,"QEQ with 'newton pair off' not supported"); - if (force->pair) { - if (force->pair->suffix_flag & (Suffix::INTEL|Suffix::GPU)) - error->all(FLERR,"QEQ is not compatiple with suffix version " - "of pair style"); - } - deallocate_storage(); allocate_storage(); diff --git a/src/QEQ/fix_qeq_fire.cpp b/src/QEQ/fix_qeq_fire.cpp index 34ef51d9475..5df793b1537 100644 --- a/src/QEQ/fix_qeq_fire.cpp +++ b/src/QEQ/fix_qeq_fire.cpp @@ -34,12 +34,12 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELAYSTEP 0 -#define DT_GROW 1.1 -#define DT_SHRINK 0.5 -#define ALPHA0 0.8 -#define ALPHA_SHRINK 0.10 -#define TMAX 10.0 +static constexpr int DELAYSTEP = 0; +static constexpr double DT_GROW = 1.1; +static constexpr double DT_SHRINK = 0.5; +static constexpr double ALPHA0 = 0.8; +static constexpr double ALPHA_SHRINK = 0.10; +static constexpr double TMAX = 10.0; /* ---------------------------------------------------------------------- */ diff --git a/src/REACTION/README b/src/REACTION/README index 99a5d604ecc..b9199d6d47b 100644 --- a/src/REACTION/README +++ b/src/REACTION/README @@ -25,4 +25,5 @@ The REACTER methodology is detailed in: https://doi.org/10.1021/acs.macromol.0c02012 This package was created by Jacob Gissinger -(jacob.r.gissinger@gmail.com) at the NASA Langley Research Center. +(jgissing@stevens.edu) while at the NASA Langley Research Center +and Stevens Institute of Technology. diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index d124b06dc27..d8561b39594 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -13,7 +12,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- -Contributing Author: Jacob Gissinger (jacob.r.gissinger@gmail.com) +Contributing Author: Jacob Gissinger (jgissing@stevens.edu) ------------------------------------------------------------------------- */ #include "fix_bond_react.h" @@ -58,30 +57,31 @@ using namespace FixConst; using namespace MathConst; static const char cite_fix_bond_react[] = - "fix bond/react: reacter.org doi:10.1016/j.polymer.2017.09.038, doi:10.1021/acs.macromol.0c02012\n\n" - "@Article{Gissinger17,\n" - " author = {J. R. Gissinger and B. D. Jensen and K. E. Wise},\n" - " title = {Modeling Chemical Reactions in Classical Molecular Dynamics Simulations},\n" - " journal = {Polymer},\n" - " year = 2017,\n" - " volume = 128,\n" - " pages = {211--217}\n" - "}\n\n" - "@Article{Gissinger20,\n" - " author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n" - " title = {{REACTER}: A Heuristic Method for Reactive Molecular Dynamics},\n" - " journal = {Macromolecules},\n" - " year = 2020,\n" - " volume = 53,\n" - " number = 22,\n" - " pages = {9953--9961}\n" - "}\n\n"; - -#define BIG 1.0e20 -#define DELTA 16 -#define MAXGUESS 20 // max # of guesses allowed by superimpose algorithm -#define MAXCONARGS 14 // max # of arguments for any type of constraint + rxnID -#define NUMVARVALS 5 // max # of keyword values that have variables as input + "fix bond/react: reacter.org doi:10.1016/j.polymer.2017.09.038, " + "doi:10.1021/acs.macromol.0c02012\n\n" + "@Article{Gissinger17,\n" + " author = {J. R. Gissinger and B. D. Jensen and K. E. Wise},\n" + " title = {Modeling Chemical Reactions in Classical Molecular Dynamics Simulations},\n" + " journal = {Polymer},\n" + " year = 2017,\n" + " volume = 128,\n" + " pages = {211--217}\n" + "}\n\n" + "@Article{Gissinger20,\n" + " author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n" + " title = {{REACTER}: A Heuristic Method for Reactive Molecular Dynamics},\n" + " journal = {Macromolecules},\n" + " year = 2020,\n" + " volume = 53,\n" + " number = 22,\n" + " pages = {9953--9961}\n" + "}\n\n"; + +static constexpr double BIG = 1.0e20; +static constexpr int DELTA = 16; +static constexpr int MAXGUESS = 20; // max # of guesses allowed by superimpose algorithm +static constexpr int MAXCONARGS = 14; // max # of arguments for any type of constraint + rxnID +static constexpr int NUMVARVALS = 5; // max # of keyword values that have variables as input // various statuses of superimpose algorithm: // ACCEPT: site successfully matched to pre-reacted template @@ -90,24 +90,25 @@ static const char cite_fix_bond_react[] = // CONTINUE: a neighbor has been assigned, skip to next neighbor // GUESSFAIL: a guess has failed (if no more restore points, status = 'REJECT') // RESTORE: restore mode, load most recent restore point -enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE}; +enum { ACCEPT, REJECT, PROCEED, CONTINUE, GUESSFAIL, RESTORE }; // types of available reaction constraints -enum{DISTANCE,ANGLE,DIHEDRAL,ARRHENIUS,RMSD,CUSTOM}; +enum { DISTANCE, ANGLE, DIHEDRAL, ARRHENIUS, RMSD, CUSTOM }; // ID type used by constraint -enum{ATOM,FRAG}; +enum { ATOM, FRAG }; // keyword values that accept variables as input -enum{NEVERY,RMIN,RMAX,PROB,NRATE}; +enum { NEVERY, RMIN, RMAX, PROB, NRATE }; // flag for one-proc vs shared reaction sites -enum{LOCAL,GLOBAL}; +enum { LOCAL, GLOBAL }; // values for molecule_keyword -enum{OFF,INTER,INTRA}; +enum { OFF, INTER, INTRA }; /* ---------------------------------------------------------------------- */ +// clang-format off FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) @@ -670,15 +671,6 @@ FixBondReact::~FixBondReact() memory->destroy(ghostly_rxn_count); memory->destroy(reaction_count_total); - if (newton_bond == 0) { - memory->destroy(xspecial); - memory->destroy(nxspecial); - memory->destroy(onemol_xspecial); - memory->destroy(onemol_nxspecial); - memory->destroy(twomol_xspecial); - memory->destroy(twomol_nxspecial); - } - if (attempted_rxn == 1) { memory->destroy(restore_pt); memory->destroy(restore); @@ -827,11 +819,10 @@ void FixBondReact::init() nlevels_respa = (dynamic_cast(update->integrate))->nlevels; // check cutoff for iatomtype,jatomtype - for (int i = 0; i < nreacts; i++) { - if (!utils::strmatch(force->pair_style,"^hybrid")) - if (force->pair == nullptr || cutsq[i][1] > force->pair->cutsq[iatomtype[i]][jatomtype[i]]) + if (!utils::strmatch(force->pair_style,"^hybrid")) + for (int i = 0; i < nreacts; i++) + if (force->pair == nullptr || (closeneigh[i] < 0 && cutsq[i][1] > force->pair->cutsq[iatomtype[i]][jatomtype[i]])) error->all(FLERR,"Fix bond/react: Fix bond/react cutoff is longer than pairwise cutoff"); - } // need a half neighbor list, built every Nevery steps neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); @@ -931,29 +922,10 @@ void FixBondReact::post_integrate() neighbor->build_one(list,1); - // here we define a full special list, independent of Newton setting - if (newton_bond == 1) { - nxspecial = atom->nspecial; - xspecial = atom->special; - } else { - int nall = atom->nlocal + atom->nghost; - memory->destroy(nxspecial); - memory->destroy(xspecial); - memory->create(nxspecial,nall,3,"bond/react:nxspecial"); - memory->create(xspecial,nall,atom->maxspecial,"bond/react:xspecial"); - for (int i = 0; i < atom->nlocal; i++) { - nxspecial[i][0] = atom->num_bond[i]; - for (int j = 0; j < nxspecial[i][0]; j++) { - xspecial[i][j] = atom->bond_atom[i][j]; - } - nxspecial[i][1] = atom->nspecial[i][1]; - nxspecial[i][2] = atom->nspecial[i][2]; - int joffset = nxspecial[i][0] - atom->nspecial[i][0]; - for (int j = nxspecial[i][0]; j < nxspecial[i][2]; j++) { - xspecial[i][j+joffset] = atom->special[i][j]; - } - } - } + // here we define a full special list + // may need correction for unusual special bond settings + nxspecial = atom->nspecial; + xspecial = atom->special; int j; for (rxnID = 0; rxnID < nreacts; rxnID++) { @@ -2541,49 +2513,15 @@ int FixBondReact::get_chirality(double four_coords[12]) /* ---------------------------------------------------------------------- Get xspecials for current molecule templates + may need correction when specials defined explicitly in molecule templates ------------------------------------------------------------------------- */ void FixBondReact::get_molxspecials() { - if (newton_bond == 1) { - onemol_nxspecial = onemol->nspecial; - onemol_xspecial = onemol->special; - twomol_nxspecial = twomol->nspecial; - twomol_xspecial = twomol->special; - } else { - memory->destroy(onemol_nxspecial); - memory->destroy(onemol_xspecial); - memory->create(onemol_nxspecial,onemol->natoms,3,"bond/react:onemol_nxspecial"); - memory->create(onemol_xspecial,onemol->natoms,atom->maxspecial,"bond/react:onemol_xspecial"); - for (int i = 0; i < onemol->natoms; i++) { - onemol_nxspecial[i][0] = onemol->num_bond[i]; - for (int j = 0; j < onemol_nxspecial[i][0]; j++) { - onemol_xspecial[i][j] = onemol->bond_atom[i][j]; - } - onemol_nxspecial[i][1] = onemol->nspecial[i][1]; - onemol_nxspecial[i][2] = onemol->nspecial[i][2]; - int joffset = onemol_nxspecial[i][0] - onemol->nspecial[i][0]; - for (int j = onemol_nxspecial[i][0]; j < onemol_nxspecial[i][2]; j++) { - onemol_xspecial[i][j+joffset] = onemol->special[i][j]; - } - } - memory->destroy(twomol_nxspecial); - memory->destroy(twomol_xspecial); - memory->create(twomol_nxspecial,twomol->natoms,3,"bond/react:twomol_nxspecial"); - memory->create(twomol_xspecial,twomol->natoms,atom->maxspecial,"bond/react:twomol_xspecial"); - for (int i = 0; i < twomol->natoms; i++) { - twomol_nxspecial[i][0] = twomol->num_bond[i]; - for (int j = 0; j < twomol_nxspecial[i][0]; j++) { - twomol_xspecial[i][j] = twomol->bond_atom[i][j]; - } - twomol_nxspecial[i][1] = twomol->nspecial[i][1]; - twomol_nxspecial[i][2] = twomol->nspecial[i][2]; - int joffset = twomol_nxspecial[i][0] - twomol->nspecial[i][0]; - for (int j = twomol_nxspecial[i][0]; j < twomol_nxspecial[i][2]; j++) { - twomol_xspecial[i][j+joffset] = twomol->special[i][j]; - } - } - } + onemol_nxspecial = onemol->nspecial; + onemol_xspecial = onemol->special; + twomol_nxspecial = twomol->nspecial; + twomol_xspecial = twomol->special; } /* ---------------------------------------------------------------------- @@ -2682,16 +2620,43 @@ void FixBondReact::find_landlocked_atoms(int myrxn) } // also, if atoms change number of bonds, but aren't landlocked, that could be bad + int warnflag = 0; if (comm->me == 0) for (int i = 0; i < twomol->natoms; i++) { if ((create_atoms[i][myrxn] == 0) && (twomol_nxspecial[i][0] != onemol_nxspecial[equivalences[i][1][myrxn]-1][0]) && - (landlocked_atoms[i][myrxn] == 0)) - error->warning(FLERR, "Fix bond/react: Atom affected by reaction {} is too close " - "to template edge",rxn_name[myrxn]); + (landlocked_atoms[i][myrxn] == 0)) { + warnflag = 1; + break; + } + } + + // also, if an atom changes any of its bonds, but is not landlocked, that could be bad + int thereflag; + if (comm->me == 0) + for (int i = 0; i < twomol->natoms; i++) { + if (landlocked_atoms[i][myrxn] == 1) continue; + for (int j = 0; j < twomol_nxspecial[i][0]; j++) { + int oneneighID = equivalences[twomol_xspecial[i][j]-1][1][myrxn]; + int ii = equivalences[i][1][myrxn] - 1; + thereflag = 0; + for (int k = 0; k < onemol_nxspecial[ii][0]; k++) { + if (oneneighID == onemol_xspecial[ii][k]) { + thereflag = 1; + break; + } + } + if (thereflag == 0) { + warnflag = 1; break; + } + } + if (warnflag == 1) break; } + if (comm->me == 0 && warnflag == 1) error->warning(FLERR, "Fix bond/react: Atom affected " + "by reaction {} is too close to template edge",rxn_name[myrxn]); + // finally, if a created atom is not landlocked, bad! for (int i = 0; i < twomol->natoms; i++) { if (create_atoms[i][myrxn] == 1 && landlocked_atoms[i][myrxn] == 0) { @@ -3349,7 +3314,7 @@ void FixBondReact::update_everything() dynamic_cast(ihistory)->clear_cache(); // Angles! First let's delete all angle info: - if (force->angle && twomol->angleflag) { + if (force->angle) { int *num_angle = atom->num_angle; int **angle_type = atom->angle_type; tagint **angle_atom1 = atom->angle_atom1; @@ -3390,33 +3355,35 @@ void FixBondReact::update_everything() } } // now let's add the new angle info. - for (int j = 0; j < twomol->natoms; j++) { - int jj = equivalences[j][1][rxnID]-1; - if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { - if (landlocked_atoms[j][rxnID] == 1) { - num_angle[atom->map(update_mega_glove[jj+1][i])] = twomol->num_angle[j]; - delta_angle += twomol->num_angle[j]; - for (int p = 0; p < twomol->num_angle[j]; p++) { - angle_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->angle_type[j][p]; - angle_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom1[j][p]-1][1][rxnID]][i]; - angle_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom2[j][p]-1][1][rxnID]][i]; - angle_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom3[j][p]-1][1][rxnID]][i]; + if (twomol->angleflag) { + for (int j = 0; j < twomol->natoms; j++) { + int jj = equivalences[j][1][rxnID]-1; + if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { + if (landlocked_atoms[j][rxnID] == 1) { + num_angle[atom->map(update_mega_glove[jj+1][i])] = twomol->num_angle[j]; + delta_angle += twomol->num_angle[j]; + for (int p = 0; p < twomol->num_angle[j]; p++) { + angle_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->angle_type[j][p]; + angle_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom1[j][p]-1][1][rxnID]][i]; + angle_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom2[j][p]-1][1][rxnID]][i]; + angle_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->angle_atom3[j][p]-1][1][rxnID]][i]; + } } - } - if (landlocked_atoms[j][rxnID] == 0) { - for (int p = 0; p < twomol->num_angle[j]; p++) { - if (landlocked_atoms[twomol->angle_atom1[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->angle_atom2[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->angle_atom3[j][p]-1][rxnID] == 1) { - insert_num = num_angle[atom->map(update_mega_glove[jj+1][i])]; - angle_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->angle_type[j][p]; - angle_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom1[j][p]-1][1][rxnID]][i]; - angle_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom2[j][p]-1][1][rxnID]][i]; - angle_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom3[j][p]-1][1][rxnID]][i]; - num_angle[atom->map(update_mega_glove[jj+1][i])]++; - if (num_angle[atom->map(update_mega_glove[jj+1][i])] > atom->angle_per_atom) - error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); - delta_angle++; + if (landlocked_atoms[j][rxnID] == 0) { + for (int p = 0; p < twomol->num_angle[j]; p++) { + if (landlocked_atoms[twomol->angle_atom1[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->angle_atom2[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->angle_atom3[j][p]-1][rxnID] == 1) { + insert_num = num_angle[atom->map(update_mega_glove[jj+1][i])]; + angle_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->angle_type[j][p]; + angle_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom1[j][p]-1][1][rxnID]][i]; + angle_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom2[j][p]-1][1][rxnID]][i]; + angle_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->angle_atom3[j][p]-1][1][rxnID]][i]; + num_angle[atom->map(update_mega_glove[jj+1][i])]++; + if (num_angle[atom->map(update_mega_glove[jj+1][i])] > atom->angle_per_atom) + error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); + delta_angle++; + } } } } @@ -3426,7 +3393,7 @@ void FixBondReact::update_everything() } // Dihedrals! first let's delete all dihedral info for landlocked atoms - if (force->dihedral && twomol->dihedralflag) { + if (force->dihedral) { int *num_dihedral = atom->num_dihedral; int **dihedral_type = atom->dihedral_type; tagint **dihedral_atom1 = atom->dihedral_atom1; @@ -3470,36 +3437,38 @@ void FixBondReact::update_everything() } } // now let's add new dihedral info - for (int j = 0; j < twomol->natoms; j++) { - int jj = equivalences[j][1][rxnID]-1; - if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { - if (landlocked_atoms[j][rxnID] == 1) { - num_dihedral[atom->map(update_mega_glove[jj+1][i])] = twomol->num_dihedral[j]; - delta_dihed += twomol->num_dihedral[j]; - for (int p = 0; p < twomol->num_dihedral[j]; p++) { - dihedral_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->dihedral_type[j][p]; - dihedral_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom1[j][p]-1][1][rxnID]][i]; - dihedral_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom2[j][p]-1][1][rxnID]][i]; - dihedral_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom3[j][p]-1][1][rxnID]][i]; - dihedral_atom4[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom4[j][p]-1][1][rxnID]][i]; + if (twomol->dihedralflag) { + for (int j = 0; j < twomol->natoms; j++) { + int jj = equivalences[j][1][rxnID]-1; + if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { + if (landlocked_atoms[j][rxnID] == 1) { + num_dihedral[atom->map(update_mega_glove[jj+1][i])] = twomol->num_dihedral[j]; + delta_dihed += twomol->num_dihedral[j]; + for (int p = 0; p < twomol->num_dihedral[j]; p++) { + dihedral_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->dihedral_type[j][p]; + dihedral_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom1[j][p]-1][1][rxnID]][i]; + dihedral_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom2[j][p]-1][1][rxnID]][i]; + dihedral_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom3[j][p]-1][1][rxnID]][i]; + dihedral_atom4[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->dihedral_atom4[j][p]-1][1][rxnID]][i]; + } } - } - if (landlocked_atoms[j][rxnID] == 0) { - for (int p = 0; p < twomol->num_dihedral[j]; p++) { - if (landlocked_atoms[twomol->dihedral_atom1[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->dihedral_atom2[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->dihedral_atom3[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->dihedral_atom4[j][p]-1][rxnID] == 1) { - insert_num = num_dihedral[atom->map(update_mega_glove[jj+1][i])]; - dihedral_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->dihedral_type[j][p]; - dihedral_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom1[j][p]-1][1][rxnID]][i]; - dihedral_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom2[j][p]-1][1][rxnID]][i]; - dihedral_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom3[j][p]-1][1][rxnID]][i]; - dihedral_atom4[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom4[j][p]-1][1][rxnID]][i]; - num_dihedral[atom->map(update_mega_glove[jj+1][i])]++; - if (num_dihedral[atom->map(update_mega_glove[jj+1][i])] > atom->dihedral_per_atom) - error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); - delta_dihed++; + if (landlocked_atoms[j][rxnID] == 0) { + for (int p = 0; p < twomol->num_dihedral[j]; p++) { + if (landlocked_atoms[twomol->dihedral_atom1[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->dihedral_atom2[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->dihedral_atom3[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->dihedral_atom4[j][p]-1][rxnID] == 1) { + insert_num = num_dihedral[atom->map(update_mega_glove[jj+1][i])]; + dihedral_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->dihedral_type[j][p]; + dihedral_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom1[j][p]-1][1][rxnID]][i]; + dihedral_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom2[j][p]-1][1][rxnID]][i]; + dihedral_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom3[j][p]-1][1][rxnID]][i]; + dihedral_atom4[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->dihedral_atom4[j][p]-1][1][rxnID]][i]; + num_dihedral[atom->map(update_mega_glove[jj+1][i])]++; + if (num_dihedral[atom->map(update_mega_glove[jj+1][i])] > atom->dihedral_per_atom) + error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); + delta_dihed++; + } } } } @@ -3509,7 +3478,7 @@ void FixBondReact::update_everything() } // finally IMPROPERS!!!! first let's delete all improper info for landlocked atoms - if (force->improper && twomol->improperflag) { + if (force->improper) { int *num_improper = atom->num_improper; int **improper_type = atom->improper_type; tagint **improper_atom1 = atom->improper_atom1; @@ -3553,36 +3522,38 @@ void FixBondReact::update_everything() } } // now let's add new improper info - for (int j = 0; j < twomol->natoms; j++) { - int jj = equivalences[j][1][rxnID]-1; - if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { - if (landlocked_atoms[j][rxnID] == 1) { - num_improper[atom->map(update_mega_glove[jj+1][i])] = twomol->num_improper[j]; - delta_imprp += twomol->num_improper[j]; - for (int p = 0; p < twomol->num_improper[j]; p++) { - improper_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->improper_type[j][p]; - improper_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom1[j][p]-1][1][rxnID]][i]; - improper_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom2[j][p]-1][1][rxnID]][i]; - improper_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom3[j][p]-1][1][rxnID]][i]; - improper_atom4[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom4[j][p]-1][1][rxnID]][i]; + if (twomol->improperflag) { + for (int j = 0; j < twomol->natoms; j++) { + int jj = equivalences[j][1][rxnID]-1; + if (atom->map(update_mega_glove[jj+1][i]) < nlocal && atom->map(update_mega_glove[jj+1][i]) >= 0) { + if (landlocked_atoms[j][rxnID] == 1) { + num_improper[atom->map(update_mega_glove[jj+1][i])] = twomol->num_improper[j]; + delta_imprp += twomol->num_improper[j]; + for (int p = 0; p < twomol->num_improper[j]; p++) { + improper_type[atom->map(update_mega_glove[jj+1][i])][p] = twomol->improper_type[j][p]; + improper_atom1[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom1[j][p]-1][1][rxnID]][i]; + improper_atom2[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom2[j][p]-1][1][rxnID]][i]; + improper_atom3[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom3[j][p]-1][1][rxnID]][i]; + improper_atom4[atom->map(update_mega_glove[jj+1][i])][p] = update_mega_glove[equivalences[twomol->improper_atom4[j][p]-1][1][rxnID]][i]; + } } - } - if (landlocked_atoms[j][rxnID] == 0) { - for (int p = 0; p < twomol->num_improper[j]; p++) { - if (landlocked_atoms[twomol->improper_atom1[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->improper_atom2[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->improper_atom3[j][p]-1][rxnID] == 1 || - landlocked_atoms[twomol->improper_atom4[j][p]-1][rxnID] == 1) { - insert_num = num_improper[atom->map(update_mega_glove[jj+1][i])]; - improper_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->improper_type[j][p]; - improper_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom1[j][p]-1][1][rxnID]][i]; - improper_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom2[j][p]-1][1][rxnID]][i]; - improper_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom3[j][p]-1][1][rxnID]][i]; - improper_atom4[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom4[j][p]-1][1][rxnID]][i]; - num_improper[atom->map(update_mega_glove[jj+1][i])]++; - if (num_improper[atom->map(update_mega_glove[jj+1][i])] > atom->improper_per_atom) - error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); - delta_imprp++; + if (landlocked_atoms[j][rxnID] == 0) { + for (int p = 0; p < twomol->num_improper[j]; p++) { + if (landlocked_atoms[twomol->improper_atom1[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->improper_atom2[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->improper_atom3[j][p]-1][rxnID] == 1 || + landlocked_atoms[twomol->improper_atom4[j][p]-1][rxnID] == 1) { + insert_num = num_improper[atom->map(update_mega_glove[jj+1][i])]; + improper_type[atom->map(update_mega_glove[jj+1][i])][insert_num] = twomol->improper_type[j][p]; + improper_atom1[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom1[j][p]-1][1][rxnID]][i]; + improper_atom2[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom2[j][p]-1][1][rxnID]][i]; + improper_atom3[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom3[j][p]-1][1][rxnID]][i]; + improper_atom4[atom->map(update_mega_glove[jj+1][i])][insert_num] = update_mega_glove[equivalences[twomol->improper_atom4[j][p]-1][1][rxnID]][i]; + num_improper[atom->map(update_mega_glove[jj+1][i])]++; + if (num_improper[atom->map(update_mega_glove[jj+1][i])] > atom->improper_per_atom) + error->one(FLERR,"Fix bond/react topology/atom exceed system topology/atom"); + delta_imprp++; + } } } } @@ -3895,7 +3866,8 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) // guess a somewhat reasonable initial velocity based on reaction site // further control is possible using bond_react_MASTER_group // compute |velocity| corresponding to a given temperature t, using specific atom's mass - double vtnorm = sqrt(t / (force->mvv2e / (dimension * force->boltz)) / atom->mass[twomol->type[m]]); + double mymass = atom->rmass ? atom->rmass[n] : atom->mass[twomol->type[m]]; + double vtnorm = sqrt(t / (force->mvv2e / (dimension * force->boltz)) / mymass); v[n][0] = random[rxnID]->uniform(); v[n][1] = random[rxnID]->uniform(); v[n][2] = random[rxnID]->uniform(); @@ -3950,7 +3922,8 @@ read map file void FixBondReact::read_map_file(int myrxn) { int rv; - char line[MAXLINE],keyword[MAXLINE]; + char line[MAXLINE] = {'\0'}; + char keyword[MAXLINE] = {'\0'}; char *eof,*ptr; // skip 1st line of file diff --git a/src/REACTION/fix_bond_react.h b/src/REACTION/fix_bond_react.h index 534261e11dc..8c9fc9dce4c 100644 --- a/src/REACTION/fix_bond_react.h +++ b/src/REACTION/fix_bond_react.h @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing Author: Jacob Gissinger (jacob.r.gissinger@gmail.com) + Contributing Author: Jacob Gissinger (jgissing@stevens.edu) ------------------------------------------------------------------------- */ #ifdef FIX_CLASS @@ -139,7 +139,7 @@ class FixBondReact : public Fix { int avail_guesses; // num of restore points available int *guess_branch; // used when there is more than two choices when guessing int **restore_pt; // contains info about restore points - tagint **restore; // contaings info about restore points + tagint **restore; // contains info about restore points int *pioneer_count; // counts pioneers int **edge; // atoms in molecule templates with incorrect valences diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index 1834de0b4b8..0371f751201 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -17,8 +17,8 @@ ------------------------------------------------------------------------- */ #include "compute_reaxff_atom.h" + #include "atom.h" -#include "molecule.h" #include "update.h" #include "force.h" #include "memory.h" @@ -43,7 +43,7 @@ ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : // initialize output - nlocal = -1; + nmax = -1; nbonds = 0; prev_nbonds = -1; @@ -162,20 +162,22 @@ void ComputeReaxFFAtom::compute_bonds() { invoked_bonds = update->ntimestep; - if (atom->nlocal > nlocal) { + if (atom->nmax > nmax) { memory->destroy(abo); memory->destroy(neighid); memory->destroy(bondcount); memory->destroy(array_atom); - nlocal = atom->nlocal; + nmax = atom->nmax; if (store_bonds) { - memory->create(abo, nlocal, MAXREAXBOND, "reaxff/atom:abo"); - memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/atom:neighid"); + memory->create(abo, nmax, MAXREAXBOND, "reaxff/atom:abo"); + memory->create(neighid, nmax, MAXREAXBOND, "reaxff/atom:neighid"); } - memory->create(bondcount, nlocal, "reaxff/atom:bondcount"); - memory->create(array_atom, nlocal, 3, "reaxff/atom:array_atom"); + memory->create(bondcount, nmax, "reaxff/atom:bondcount"); + memory->create(array_atom, nmax, 3, "reaxff/atom:array_atom"); } + const int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { bondcount[i] = 0; for (int j = 0; store_bonds && j < MAXREAXBOND; j++) { @@ -208,6 +210,8 @@ void ComputeReaxFFAtom::compute_local() int b = 0; + const int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; ++i) { const int numbonds = bondcount[i]; @@ -230,6 +234,8 @@ void ComputeReaxFFAtom::compute_peratom() compute_bonds(); } + const int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; ++i) { auto ptr = array_atom[i]; ptr[0] = reaxff->api->workspace->total_bond_order[i]; @@ -244,10 +250,10 @@ void ComputeReaxFFAtom::compute_peratom() double ComputeReaxFFAtom::memory_usage() { - double bytes = (double)(nlocal*3) * sizeof(double); - bytes += (double)(nlocal) * sizeof(int); + double bytes = (double)(nmax*3) * sizeof(double); + bytes += (double)(nmax) * sizeof(int); if (store_bonds) { - bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); + bytes += (double)(2*nmax*MAXREAXBOND) * sizeof(double); bytes += (double)(nbonds*3) * sizeof(double); } return bytes; diff --git a/src/REAXFF/compute_reaxff_atom.h b/src/REAXFF/compute_reaxff_atom.h index 1f9aaec1aec..f27555e5650 100644 --- a/src/REAXFF/compute_reaxff_atom.h +++ b/src/REAXFF/compute_reaxff_atom.h @@ -40,7 +40,7 @@ class ComputeReaxFFAtom : public Compute { protected: bigint invoked_bonds; // last timestep on which compute_bonds() was invoked - int nlocal; + int nmax; int nbonds; int prev_nbonds; int nsub; diff --git a/src/REAXFF/fix_acks2_reaxff.cpp b/src/REAXFF/fix_acks2_reaxff.cpp index 68de1c8ed1c..4fd86605fad 100644 --- a/src/REAXFF/fix_acks2_reaxff.cpp +++ b/src/REAXFF/fix_acks2_reaxff.cpp @@ -33,6 +33,7 @@ #include #include +#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index ab561de0a72..2c3089b5e89 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -141,7 +141,7 @@ FixQEqReaxFF::FixQEqReaxFF(LAMMPS *lmp, int narg, char **arg) : // perform initial allocation of atom-based arrays // register with Atom class - reaxff = dynamic_cast(force->pair_match("^reax..",0)); + reaxff = dynamic_cast(force->pair_match("^reaxff",0)); s_hist = t_hist = nullptr; atom->add_callback(Atom::GROW); @@ -217,6 +217,8 @@ void FixQEqReaxFF::pertype_parameters(char *arg) if (chi == nullptr || eta == nullptr || gamma == nullptr) error->all(FLERR, "Fix qeq/reaxff could not extract params from pair reaxff"); return; + } else if (utils::strmatch(arg,"^reax/c")) { + error->all(FLERR, "Fix qeq/reaxff keyword 'reax/c' is obsolete; please use 'reaxff'"); } reaxflag = 0; diff --git a/src/REAXFF/fix_reaxff.cpp b/src/REAXFF/fix_reaxff.cpp index bec16b5d043..ede0d79f876 100644 --- a/src/REAXFF/fix_reaxff.cpp +++ b/src/REAXFF/fix_reaxff.cpp @@ -29,9 +29,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define MAX_REAX_BONDS 30 -#define MIN_REAX_BONDS 15 -#define MIN_REAX_HBONDS 25 +static constexpr int MIN_REAX_BONDS = 15; +static constexpr int MIN_REAX_HBONDS = 25; /* ---------------------------------------------------------------------- */ diff --git a/src/REAXFF/reaxff_ffield.cpp b/src/REAXFF/reaxff_ffield.cpp index 6ca8dc62560..7dfa2ee1cb7 100644 --- a/src/REAXFF/reaxff_ffield.cpp +++ b/src/REAXFF/reaxff_ffield.cpp @@ -30,7 +30,6 @@ #include "error.h" #include "memory.h" #include "text_file_reader.h" -#include "tokenizer.h" #include "utils.h" #include @@ -40,6 +39,7 @@ using LAMMPS_NS::utils::open_potential; using LAMMPS_NS::utils::getsyserror; +using LAMMPS_NS::utils::strmatch; using LAMMPS_NS::utils::uppercase; using LAMMPS_NS::EOFException; using LAMMPS_NS::ValueTokenizer; @@ -72,7 +72,7 @@ namespace ReaxFF { filename, lineno, want, values.count())) if (control->me == 0) { - FILE *fp = LAMMPS_NS::utils::open_potential(filename, lmp, nullptr); + FILE *fp = open_potential(filename, lmp, nullptr); if (!fp) error->one(FLERR,"The ReaxFF parameter file {} cannot be opened: {}", filename, getsyserror()); @@ -82,9 +82,11 @@ namespace ReaxFF { try { int i,j,k,l,m,n,lineno = 0; - // skip header comment line + // check if header comment line is present - reader.skip_line(); + auto line = reader.next_line(); + if (strmatch(line, "^\\s*[0-9]+\\s+!.*general parameters.*")) + THROW_ERROR("First line of ReaxFF potential file must be a comment or empty"); ++lineno; // set some defaults diff --git a/src/REPLICA/fix_alchemy.cpp b/src/REPLICA/fix_alchemy.cpp index 2fe44171614..b14c6bc22d6 100644 --- a/src/REPLICA/fix_alchemy.cpp +++ b/src/REPLICA/fix_alchemy.cpp @@ -21,7 +21,6 @@ #include "input.h" #include "memory.h" #include "modify.h" -#include "respa.h" #include "universe.h" #include "update.h" #include "variable.h" diff --git a/src/REPLICA/fix_hyper_global.cpp b/src/REPLICA/fix_hyper_global.cpp index d262c49fda7..79d901893e5 100644 --- a/src/REPLICA/fix_hyper_global.cpp +++ b/src/REPLICA/fix_hyper_global.cpp @@ -32,8 +32,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTABOND 16384 -#define VECLEN 5 +static constexpr int DELTABOND = 16384; +static constexpr int VECLEN = 5; // possible enhancements // should there be a virial contribution from boosted bond? diff --git a/src/REPLICA/fix_hyper_local.cpp b/src/REPLICA/fix_hyper_local.cpp index d0cfc4bb013..dde49404036 100644 --- a/src/REPLICA/fix_hyper_local.cpp +++ b/src/REPLICA/fix_hyper_local.cpp @@ -35,11 +35,11 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTABOND 16384 -#define DELTABIAS 16 -#define COEFFINIT 1.0 -#define FCCBONDS 12 -#define BIG 1.0e20 +static constexpr int DELTABOND = 16384; +static constexpr int DELTABIAS = 16; +static constexpr double COEFFINIT = 1.0; +static constexpr int FCCBONDS = 12; +static constexpr double BIG = 1.0e20; enum{STRAIN,STRAINDOMAIN,BIASFLAG,BIASCOEFF}; enum{IGNORE,WARN,ERROR}; diff --git a/src/REPLICA/fix_neb.cpp b/src/REPLICA/fix_neb.cpp index f2962d9b9da..9c920f26dc9 100644 --- a/src/REPLICA/fix_neb.cpp +++ b/src/REPLICA/fix_neb.cpp @@ -40,7 +40,7 @@ using namespace MathConst; enum { SINGLE_PROC_DIRECT, SINGLE_PROC_MAP, MULTI_PROC }; enum { NEIGHBOR, IDEAL, EQUAL }; -#define BUFSIZE 8 +static constexpr int BUFSIZE = 8; /* ---------------------------------------------------------------------- */ @@ -139,7 +139,15 @@ FixNEB::FixNEB(LAMMPS *lmp, int narg, char **arg) : uworld = universe->uworld; - if ((neb_mode == IDEAL) || (neb_mode == EQUAL)) { + // set comm mode for inter-replica exchange of coords + // may change from SINGLE_PROC_MAP to SINGLE_PROC_DIRECT only in Fix::init() + + if (nreplica == nprocs_universe) + cmode = SINGLE_PROC_MAP; + else + cmode = MULTI_PROC; + + if (cmode == MULTI_PROC) { int *iroots = new int[nreplica]; MPI_Group uworldgroup, rootgroup; @@ -150,7 +158,7 @@ FixNEB::FixNEB(LAMMPS *lmp, int narg, char **arg) : if (rootgroup != MPI_GROUP_NULL) MPI_Group_free(&rootgroup); if (uworldgroup != MPI_GROUP_NULL) MPI_Group_free(&uworldgroup); delete[] iroots; - } + } else rootworld = MPI_COMM_NULL; // create a new compute pe style // id = fix-ID + pe, compute group = all @@ -193,8 +201,10 @@ FixNEB::~FixNEB() memory->destroy(counts); memory->destroy(displacements); - if ((neb_mode == IDEAL) || (neb_mode == EQUAL)) { + if (cmode == MULTI_PROC) if (rootworld != MPI_COMM_NULL) MPI_Comm_free(&rootworld); + + if ((neb_mode == IDEAL) || (neb_mode == EQUAL)) { memory->destroy(nlenall); } if (neb_mode == EQUAL) memory->destroy(vengall); @@ -227,14 +237,10 @@ void FixNEB::init() if (count > MAXSMALLINT) error->all(FLERR, "Too many active NEB atoms"); nebatoms = count; - // comm mode for inter-replica exchange of coords + // change comm mode for inter-replica exchange of coords to direct if possible - if (nreplica == nprocs_universe && nebatoms == atom->natoms && atom->sortfreq == 0) + if ((cmode == SINGLE_PROC_MAP) && (nebatoms == atom->natoms) && (atom->sortfreq == 0)) cmode = SINGLE_PROC_DIRECT; - else if (nreplica == nprocs_universe) - cmode = SINGLE_PROC_MAP; - else - cmode = MULTI_PROC; // ntotal = total # of atoms in system, NEB atoms or not @@ -298,9 +304,8 @@ void FixNEB::min_post_force(int /*vflag*/) int procFirst; procFirst = universe->root_proc[0]; MPI_Bcast(&vIni, 1, MPI_DOUBLE, procFirst, uworld); - } else { + } else { // cmode == MULTI_PROC if (me == 0) MPI_Bcast(&vIni, 1, MPI_DOUBLE, 0, rootworld); - MPI_Bcast(&vIni, 1, MPI_DOUBLE, 0, world); } } @@ -812,7 +817,7 @@ void FixNEB::calculate_ideal_positions() if ((neb_mode == EQUAL) && (rclimber > 0.0)) { if ((cmode == SINGLE_PROC_DIRECT) || (cmode == SINGLE_PROC_MAP)) { MPI_Allgather(&veng, 1, MPI_DOUBLE, &vengall[0], 1, MPI_DOUBLE, uworld); - } else { + } else { // cmode == MULTI_PROC if (me == 0) MPI_Allgather(&veng, 1, MPI_DOUBLE, &vengall[0], 1, MPI_DOUBLE, rootworld); MPI_Bcast(vengall, nreplica, MPI_DOUBLE, 0, world); } @@ -823,7 +828,7 @@ void FixNEB::calculate_ideal_positions() } else if ((neb_mode == IDEAL) || (neb_mode == EQUAL)) { if ((cmode == SINGLE_PROC_DIRECT) || (cmode == SINGLE_PROC_MAP)) { MPI_Allgather(&nlen, 1, MPI_DOUBLE, &nlenall[0], 1, MPI_DOUBLE, uworld); - } else { + } else { // cmode == MULTI_PROC if (me == 0) MPI_Allgather(&nlen, 1, MPI_DOUBLE, &nlenall[0], 1, MPI_DOUBLE, rootworld); MPI_Bcast(nlenall, nreplica, MPI_DOUBLE, 0, world); } diff --git a/src/REPLICA/fix_pimd_langevin.cpp b/src/REPLICA/fix_pimd_langevin.cpp index bd8c76d52f8..c24984f152b 100644 --- a/src/REPLICA/fix_pimd_langevin.cpp +++ b/src/REPLICA/fix_pimd_langevin.cpp @@ -35,20 +35,23 @@ #include "force.h" #include "group.h" #include "math_const.h" +#include "math_special.h" #include "memory.h" #include "modify.h" #include "random_mars.h" #include "universe.h" #include "update.h" -#include "utils.h" #include #include using namespace LAMMPS_NS; using namespace FixConst; +using MathConst::MY_2PI; using MathConst::MY_PI; +using MathConst::MY_SQRT2; using MathConst::THIRD; +using MathSpecial::powint; enum { PIMD, NMPIMD }; enum { PHYSICAL, NORMAL }; @@ -436,7 +439,7 @@ void FixPIMDLangevin::init() planck = force->hplanck; } planck *= sp; - hbar = planck / (2.0 * MY_PI); + hbar = planck / (MY_2PI); double beta = 1.0 / (force->boltz * temp); double _fbond = 1.0 * np * np / (beta * beta * hbar * hbar); @@ -472,11 +475,13 @@ void FixPIMDLangevin::init() c_pe = modify->get_compute_by_id(id_pe); if (!c_pe) - error->universe_all(FLERR, fmt::format("Could not find fix {} potential energy compute ID {}", style, id_pe)); + error->universe_all( + FLERR, fmt::format("Could not find fix {} potential energy compute ID {}", style, id_pe)); c_press = modify->get_compute_by_id(id_press); if (!c_press) - error->universe_all(FLERR, fmt::format("Could not find fix {} pressure compute ID {}", style, id_press)); + error->universe_all( + FLERR, fmt::format("Could not find fix {} pressure compute ID {}", style, id_press)); t_prim = t_vir = t_cv = p_prim = p_vir = p_cv = p_md = 0.0; } @@ -664,27 +669,26 @@ void FixPIMDLangevin::post_force(int /*flag*/) imageint *image = atom->image; tagint *tag = atom->tag; - if (method == NMPIMD) { - if (atom->nmax > maxunwrap) reallocate_x_unwrap(); - if (atom->nmax > maxxc) reallocate_xc(); - for (int i = 0; i < nlocal; i++) { - x_unwrap[i][0] = x[i][0]; - x_unwrap[i][1] = x[i][1]; - x_unwrap[i][2] = x[i][2]; - } - if (mapflag) { - for (int i = 0; i < nlocal; i++) { domain->unmap(x_unwrap[i], image[i]); } - } - for (int i = 0; i < nlocal; i++) { - xc[i][0] = xcall[3 * (tag[i] - 1) + 0]; - xc[i][1] = xcall[3 * (tag[i] - 1) + 1]; - xc[i][2] = xcall[3 * (tag[i] - 1) + 2]; - } - - compute_vir(); - compute_cvir(); - compute_t_vir(); + if (atom->nmax > maxunwrap) reallocate_x_unwrap(); + if (atom->nmax > maxxc) reallocate_xc(); + for (int i = 0; i < nlocal; i++) { + x_unwrap[i][0] = x[i][0]; + x_unwrap[i][1] = x[i][1]; + x_unwrap[i][2] = x[i][2]; } + if (mapflag) { + for (int i = 0; i < nlocal; i++) { domain->unmap(x_unwrap[i], image[i]); } + } + for (int i = 0; i < nlocal; i++) { + xc[i][0] = xcall[3 * (tag[i] - 1) + 0]; + xc[i][1] = xcall[3 * (tag[i] - 1) + 1]; + xc[i][2] = xcall[3 * (tag[i] - 1) + 2]; + } + + compute_vir(); + compute_xf_vir(); + compute_cvir(); + compute_t_vir(); if (method == PIMD) { if (mapflag) { @@ -693,6 +697,7 @@ void FixPIMDLangevin::post_force(int /*flag*/) inter_replica_comm(x); spring_force(); compute_spring_energy(); + compute_t_prim(); if (mapflag) { for (int i = 0; i < nlocal; i++) { domain->unmap_inv(x[i], image[i]); } } @@ -738,10 +743,11 @@ void FixPIMDLangevin::collect_xc() } } + const double sqrtnp = sqrt((double) np); for (int i = 0; i < nlocal; i++) { - xcall[3 * (tag[i] - 1) + 0] = x[i][0] / sqrt(np); - xcall[3 * (tag[i] - 1) + 1] = x[i][1] / sqrt(np); - xcall[3 * (tag[i] - 1) + 2] = x[i][2] / sqrt(np); + xcall[3 * (tag[i] - 1) + 0] = x[i][0] / sqrtnp; + xcall[3 * (tag[i] - 1) + 1] = x[i][1] / sqrtnp; + xcall[3 * (tag[i] - 1) + 2] = x[i][2] / sqrtnp; } if (cmode == MULTI_PROC) { @@ -1044,8 +1050,8 @@ void FixPIMDLangevin::langevin_init() c2_k[i] = sqrt(1.0 - c1_k[i] * c1_k[i]); } for (int i = 0; i < np; i++) { - out += fmt::format(" {:d} {:.8e} {:.8e} {:.8e} {:.8e}\n", i, - _omega_k[i], tau_k[i], c1_k[i], c2_k[i]); + out += fmt::format(" {:d} {:.8e} {:.8e} {:.8e} {:.8e}\n", i, _omega_k[i], tau_k[i], + c1_k[i], c2_k[i]); } } else if (method == PIMD) { for (int i = 0; i < np; i++) { @@ -1107,19 +1113,20 @@ void FixPIMDLangevin::nmpimd_init() } // Set up eigenvectors for degenerated modes + const double sqrtnp = sqrt((double) np); for (int j = 0; j < np; j++) { for (int i = 1; i < int(np / 2) + 1; i++) { - M_x2xp[i][j] = sqrt(2.0) * cos(2.0 * MY_PI * double(i) * double(j) / double(np)) / sqrt(np); + M_x2xp[i][j] = MY_SQRT2 * cos(MY_2PI * double(i) * double(j) / double(np)) / sqrtnp; } for (int i = int(np / 2) + 1; i < np; i++) { - M_x2xp[i][j] = sqrt(2.0) * sin(2.0 * MY_PI * double(i) * double(j) / double(np)) / sqrt(np); + M_x2xp[i][j] = MY_SQRT2 * sin(MY_2PI * double(i) * double(j) / double(np)) / sqrtnp; } } // Set up eigenvectors for non-degenerated modes for (int i = 0; i < np; i++) { - M_x2xp[0][i] = 1.0 / sqrt(np); - if (np % 2 == 0) M_x2xp[np / 2][i] = 1.0 / sqrt(np) * pow(-1.0, i); + M_x2xp[0][i] = 1.0 / sqrtnp; + if (np % 2 == 0) M_x2xp[np / 2][i] = 1.0 / sqrtnp * powint(-1.0, i); } // Set up Ut @@ -1359,7 +1366,23 @@ void FixPIMDLangevin::inter_replica_comm(double **ptr) void FixPIMDLangevin::remove_com_motion() { - if (universe->iworld == 0) { + if (method == NMPIMD) { + if (universe->iworld == 0) { + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (dynamic) masstotal = group->mass(igroup); + double vcm[3]; + group->vcm(igroup, masstotal, vcm); + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + v[i][0] -= vcm[0]; + v[i][1] -= vcm[1]; + v[i][2] -= vcm[2]; + } + } + } + } else if (method == PIMD) { double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1373,24 +1396,34 @@ void FixPIMDLangevin::remove_com_motion() v[i][2] -= vcm[2]; } } + } else { + error->all(FLERR, "Unknown method for fix pimd/langevin. Only nmpimd and pimd are supported!"); } } /* ---------------------------------------------------------------------- */ -void FixPIMDLangevin::compute_cvir() +void FixPIMDLangevin::compute_xf_vir() { int nlocal = atom->nlocal; double xf = 0.0; - double xcf = 0.0; - vir_ = centroid_vir = 0.0; + vir_ = 0.0; for (int i = 0; i < nlocal; i++) { - for (int j = 0; j < 3; j++) { - xf += x_unwrap[i][j] * atom->f[i][j]; - xcf += (x_unwrap[i][j] - xc[i][j]) * atom->f[i][j]; - } + for (int j = 0; j < 3; j++) { xf += x_unwrap[i][j] * atom->f[i][j]; } } MPI_Allreduce(&xf, &vir_, 1, MPI_DOUBLE, MPI_SUM, universe->uworld); +} + +/* ---------------------------------------------------------------------- */ + +void FixPIMDLangevin::compute_cvir() +{ + int nlocal = atom->nlocal; + double xcf = 0.0; + centroid_vir = 0.0; + for (int i = 0; i < nlocal; i++) { + for (int j = 0; j < 3; j++) { xcf += (x_unwrap[i][j] - xc[i][j]) * atom->f[i][j]; } + } MPI_Allreduce(&xcf, ¢roid_vir, 1, MPI_DOUBLE, MPI_SUM, universe->uworld); if (pstyle == ANISO) { for (int i = 0; i < 6; i++) c_vir_tensor[i] = 0.0; @@ -1548,11 +1581,19 @@ void FixPIMDLangevin::compute_p_prim() void FixPIMDLangevin::compute_p_cv() { double inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd); - if (universe->iworld == 0) { - p_cv = THIRD * inv_volume * ((2.0 * ke_bead - centroid_vir) * force->nktv2p + vir) / np; - } p_md = THIRD * inv_volume * (totke + vir); - MPI_Bcast(&p_cv, 1, MPI_DOUBLE, 0, universe->uworld); + if (method == NMPIMD) { + if (universe->iworld == 0) { + p_cv = THIRD * inv_volume * ((2.0 * ke_bead - centroid_vir) * force->nktv2p + vir) / np; + } + MPI_Bcast(&p_cv, 1, MPI_DOUBLE, 0, universe->uworld); + } else if (method == PIMD) { + p_cv = THIRD * inv_volume * ((2.0 * totke / np - centroid_vir) * force->nktv2p + vir) / np; + } else { + error->universe_all( + FLERR, + "Unknown method parameter for fix pimd/langevin. Only nmpimd and pimd are supported!"); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/REPLICA/fix_pimd_langevin.h b/src/REPLICA/fix_pimd_langevin.h index 0f21b908b0f..869281243f5 100644 --- a/src/REPLICA/fix_pimd_langevin.h +++ b/src/REPLICA/fix_pimd_langevin.h @@ -176,6 +176,7 @@ class FixPIMDLangevin : public Fix { void compute_p_prim(); void compute_p_cv(); // centroid-virial pressure estimator void compute_vir(); + void compute_xf_vir(); void compute_cvir(); void compute_totenthalpy(); diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index 11933164eb6..d9144a9489b 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -36,15 +36,26 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define MAXLINE 256 -#define CHUNK 1024 -#define ATTRIBUTE_PERLINE 4 +static constexpr int MAXLINE = 256; +static constexpr int CHUNK = 1024; +static constexpr int ATTRIBUTE_PERLINE = 4; enum { DEFAULT, TERSE, VERBOSE }; /* ---------------------------------------------------------------------- */ -NEB::NEB(LAMMPS *lmp) : Command(lmp), fp(nullptr), all(nullptr), rdist(nullptr) {} +NEB::NEB(LAMMPS *lmp) : Command(lmp), fp(nullptr), all(nullptr), rdist(nullptr) +{ + print_mode = DEFAULT; + + // replica info + + nreplica = universe->nworlds; + ireplica = universe->iworld; + me_universe = universe->me; + uworld = universe->uworld; + MPI_Comm_rank(world, &me); +} /* ---------------------------------------------------------------------- internal NEB constructor, called from TAD @@ -52,8 +63,7 @@ NEB::NEB(LAMMPS *lmp) : Command(lmp), fp(nullptr), all(nullptr), rdist(nullptr) NEB::NEB(LAMMPS *lmp, double etol_in, double ftol_in, int n1steps_in, int n2steps_in, int nevery_in, double *buf_init, double *buf_final) : - Command(lmp), - fp(nullptr), all(nullptr), rdist(nullptr) + NEB(lmp) { double delx, dely, delz; @@ -62,17 +72,8 @@ NEB::NEB(LAMMPS *lmp, double etol_in, double ftol_in, int n1steps_in, int n2step n1steps = n1steps_in; n2steps = n2steps_in; nevery = nevery_in; - print_mode = DEFAULT; - - // replica info - nreplica = universe->nworlds; - ireplica = universe->iworld; - me_universe = universe->me; - uworld = universe->uworld; - MPI_Comm_rank(world, &me); - - // generate linear interpolate replica + // generate linear interpolated replica double fraction = ireplica / (nreplica - 1.0); double **x = atom->x; int nlocal = atom->nlocal; @@ -129,19 +130,11 @@ void NEB::command(int narg, char **arg) if (nevery <= 0) error->universe_all(FLERR, fmt::format("Illegal NEB command every parameter: {}", nevery)); if (n1steps % nevery) - error->universe_all(FLERR, fmt::format("NEB N1 value {} incompatible with every {}", - n1steps, nevery)); + error->universe_all(FLERR, + fmt::format("NEB N1 value {} incompatible with every {}", n1steps, nevery)); if (n2steps % nevery) - error->universe_all(FLERR, fmt::format("NEB N2 value {} incompatible with every {}", - n2steps, nevery)); - - // replica info - - nreplica = universe->nworlds; - ireplica = universe->iworld; - me_universe = universe->me; - uworld = universe->uworld; - MPI_Comm_rank(world, &me); + error->universe_all(FLERR, + fmt::format("NEB N2 value {} incompatible with every {}", n2steps, nevery)); // error checks @@ -437,7 +430,7 @@ void NEB::readfile(char *file, int flag) int i, nchunk, eofflag, nlines; tagint tag; char *eof, *start, *next, *buf; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; double delx, dely, delz; if (me_universe == 0 && universe->uscreen) diff --git a/src/REPLICA/temper.cpp b/src/REPLICA/temper.cpp index adbdb4d742e..77bc45e6e3f 100644 --- a/src/REPLICA/temper.cpp +++ b/src/REPLICA/temper.cpp @@ -33,7 +33,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/REPLICA/temper_npt.cpp b/src/REPLICA/temper_npt.cpp index d814bf6725f..aa72047fe7f 100644 --- a/src/REPLICA/temper_npt.cpp +++ b/src/REPLICA/temper_npt.cpp @@ -35,7 +35,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/RIGID/compute_rigid_local.cpp b/src/RIGID/compute_rigid_local.cpp index bd0db29d206..ea45389e7b9 100644 --- a/src/RIGID/compute_rigid_local.cpp +++ b/src/RIGID/compute_rigid_local.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 +static constexpr int DELTA = 10000; enum{ID,MOL,MASS,X,Y,Z,XU,YU,ZU,VX,VY,VZ,FX,FY,FZ,IX,IY,IZ, TQX,TQY,TQZ,OMEGAX,OMEGAY,OMEGAZ,ANGMOMX,ANGMOMY,ANGMOMZ, diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 628abb240e3..f4b82e1fd21 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -1234,11 +1234,6 @@ void FixRigid::enforce2d() angmom[ibody][1] = 0.0; omega[ibody][0] = 0.0; omega[ibody][1] = 0.0; - if (langflag && langextra) { - langextra[ibody][2] = 0.0; - langextra[ibody][3] = 0.0; - langextra[ibody][4] = 0.0; - } } } @@ -1247,7 +1242,7 @@ void FixRigid::enforce2d() return total count of DOF ------------------------------------------------------------------------- */ -int FixRigid::dof(int tgroup) +bigint FixRigid::dof(int tgroup) { // cannot count DOF correctly unless setup_bodies_static() has been called @@ -1306,7 +1301,7 @@ int FixRigid::dof(int tgroup) // 3d body with any finite-size M should have 6 dof, remove (3N+6M) - 6 // 2d body with any finite-size M should have 3 dof, remove (2N+3M) - 3 - int n = 0; + bigint n = 0; nlinear = 0; if (domain->dimension == 3) { for (int ibody = 0; ibody < nbody; ibody++) @@ -1958,6 +1953,8 @@ void FixRigid::setup_bodies_static() // diagonalize inertia tensor for each body via Jacobi rotations // inertia = 3 eigenvalues = principal moments of inertia + // request that jacobi3() return them in ascending order, + /// so that in 2d last evector is z-axis // evectors and exzy_space = 3 evectors = principal axes of rigid body int ierror; @@ -1972,7 +1969,7 @@ void FixRigid::setup_bodies_static() tensor[0][2] = tensor[2][0] = all[ibody][4]; tensor[0][1] = tensor[1][0] = all[ibody][5]; - ierror = MathEigen::jacobi3(tensor,inertia[ibody],evectors); + ierror = MathEigen::jacobi3(tensor,inertia[ibody],evectors,1); if (ierror) error->all(FLERR, "Insufficient Jacobi rotations for rigid body"); @@ -1986,6 +1983,22 @@ void FixRigid::setup_bodies_static() ez_space[ibody][1] = evectors[1][2]; ez_space[ibody][2] = evectors[2][2]; + // for 2d, ensure that evector along z axis is last + // necessary so that quaternion is a simple rotation around +z axis + // or a 180 degree rotation for a -z axis + // otherwise richardson() method for a body with a tiny evalue (near-linear) + // may not preserve the correct z-aligned quat and associated evectors + // over time due to round-off accumulation + + if (domain->dimension == 2) { + if (fabs(ez_space[ibody][0]) > EPSILON || fabs(ez_space[ibody][1]) > EPSILON) { + std::swap(inertia[ibody][1],inertia[ibody][2]); + std::swap(ey_space[ibody][0],ez_space[ibody][0]); + std::swap(ey_space[ibody][1],ez_space[ibody][1]); + std::swap(ey_space[ibody][2],ez_space[ibody][2]); + } + } + // if any principal moment < scaled EPSILON, set to 0.0 double max; @@ -2300,7 +2313,7 @@ void FixRigid::readfile(int which, double *vec, double **array1, double **array2 int nlines; FILE *fp; char *eof,*start,*next,*buf; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // open file and read and parse first non-empty, non-comment line containing the number of bodies if (comm->me == 0) { diff --git a/src/RIGID/fix_rigid.h b/src/RIGID/fix_rigid.h index 361ddd27203..c2f04ecf1aa 100644 --- a/src/RIGID/fix_rigid.h +++ b/src/RIGID/fix_rigid.h @@ -48,7 +48,7 @@ class FixRigid : public Fix { void setup_pre_neighbor() override; void pre_neighbor() override; - int dof(int) override; + bigint dof(int) override; void deform(int) override; void reset_dt() override; void zero_momentum() override; diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index bd49834f151..0bfd8032c5c 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -49,7 +49,7 @@ using namespace FixConst; using namespace MathConst; using namespace RigidConst; -#define RVOUS 1 // 0 for irregular, 1 for all2all +static constexpr int RVOUS = 1; // 0 for irregular, 1 for all2all /* ---------------------------------------------------------------------- */ @@ -1110,11 +1110,6 @@ void FixRigidSmall::enforce2d() b->angmom[1] = 0.0; b->omega[0] = 0.0; b->omega[1] = 0.0; - if (langflag && langextra) { - langextra[ibody][2] = 0.0; - langextra[ibody][3] = 0.0; - langextra[ibody][4] = 0.0; - } } } @@ -1123,7 +1118,7 @@ void FixRigidSmall::enforce2d() return total count of DOF ------------------------------------------------------------------------- */ -int FixRigidSmall::dof(int tgroup) +bigint FixRigidSmall::dof(int tgroup) { int i,j; @@ -1195,7 +1190,7 @@ int FixRigidSmall::dof(int tgroup) double *inertia; - int n = 0; + bigint n = 0; nlinear = 0; if (domain->dimension == 3) { for (int ibody = 0; ibody < nlocal_body; ibody++) { @@ -1216,8 +1211,8 @@ int FixRigidSmall::dof(int tgroup) memory->destroy(counts); - int nall; - MPI_Allreduce(&n,&nall,1,MPI_INT,MPI_SUM,world); + bigint nall; + MPI_Allreduce(&n,&nall,1,MPI_LMP_BIGINT,MPI_SUM,world); return nall; } @@ -2102,6 +2097,8 @@ void FixRigidSmall::setup_bodies_static() // diagonalize inertia tensor for each body via Jacobi rotations // inertia = 3 eigenvalues = principal moments of inertia + // request that jacobi3() returns them in ascending order, + // so that in 2d last evector is z-axis // evectors and exzy_space = 3 evectors = principal axes of rigid body int ierror; @@ -2118,7 +2115,7 @@ void FixRigidSmall::setup_bodies_static() tensor[0][1] = tensor[1][0] = itensor[ibody][5]; inertia = body[ibody].inertia; - ierror = MathEigen::jacobi3(tensor,inertia,evectors); + ierror = MathEigen::jacobi3(tensor,inertia,evectors,1); if (ierror) error->all(FLERR, "Insufficient Jacobi rotations for rigid body"); ex = body[ibody].ex_space; @@ -2134,6 +2131,22 @@ void FixRigidSmall::setup_bodies_static() ez[1] = evectors[1][2]; ez[2] = evectors[2][2]; + // for 2d, ensure that evector along z axis is last + // necessary so that quaternion is a simple rotation around +z axis + // or a 180 degree rotation for a -z axis + // otherwise richardson() method for a body with a tiny evalue (near-linear) + // may not preserve the correct z-aligned quat and associated evectors + // over time due to round-off accumulation + + if (domain->dimension == 2) { + if (fabs(ez[0]) > EPSILON || fabs(ez[1]) > EPSILON) { + std::swap(inertia[1],inertia[2]); + std::swap(ey[0],ez[0]); + std::swap(ey[1],ez[1]); + std::swap(ey[2],ez[2]); + } + } + // if any principal moment < scaled EPSILON, set to 0.0 double max; @@ -2156,11 +2169,12 @@ void FixRigidSmall::setup_bodies_static() // convert geometric center position to principal axis coordinates // xcm is wrapped, but xgc is not initially + xcm = body[ibody].xcm; xgc = body[ibody].xgc; double delta[3]; MathExtra::sub3(xgc,xcm,delta); - domain->minimum_image(delta); + domain->minimum_image_big(delta); MathExtra::transpose_matvec(ex,ey,ez,delta,body[ibody].xgc_body); MathExtra::add3(xcm,delta,xgc); } @@ -2470,7 +2484,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) int nchunk,eofflag,nlines,xbox,ybox,zbox; FILE *fp; char *eof,*start,*next,*buf; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; // create local hash with key/value pairs // key = mol ID of bodies my atoms own diff --git a/src/RIGID/fix_rigid_small.h b/src/RIGID/fix_rigid_small.h index 0070d976dfa..0508063f05d 100644 --- a/src/RIGID/fix_rigid_small.h +++ b/src/RIGID/fix_rigid_small.h @@ -54,7 +54,7 @@ class FixRigidSmall : public Fix { void setup_pre_neighbor() override; void pre_neighbor() override; - int dof(int) override; + bigint dof(int) override; void deform(int) override; void reset_dt() override; void zero_momentum() override; diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index b2c65220bc6..73c29d86bdf 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -39,7 +39,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define RVOUS 1 // 0 for irregular, 1 for all2all +static constexpr int RVOUS = 1; // 0 for irregular, 1 for all2all static constexpr double BIG = 1.0e20; static constexpr double MASSDELTA = 0.1; @@ -207,8 +207,8 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : if (output_every) { int nb = atom->nbondtypes + 1; - b_count = new int[nb]; - b_count_all = new int[nb]; + b_count = new bigint[nb]; + b_count_all = new bigint[nb]; b_ave = new double[nb]; b_ave_all = new double[nb]; b_max = new double[nb]; @@ -217,8 +217,8 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : b_min_all = new double[nb]; int na = atom->nangletypes + 1; - a_count = new int[na]; - a_count_all = new int[na]; + a_count = new bigint[na]; + a_count_all = new bigint[na]; a_ave = new double[na]; a_ave_all = new double[na]; a_max = new double[na]; @@ -755,7 +755,7 @@ void FixShake::min_post_force(int vflag) count # of degrees-of-freedom removed by SHAKE for atoms in igroup ------------------------------------------------------------------------- */ -int FixShake::dof(int igroup) +bigint FixShake::dof(int igroup) { int groupbit = group->bitmask[igroup]; @@ -766,7 +766,7 @@ int FixShake::dof(int igroup) // count dof in a cluster if and only if // the central atom is in group and atom i is the central atom - int n = 0; + bigint n = 0; for (int i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; if (shake_flag[i] == 0) continue; @@ -777,8 +777,8 @@ int FixShake::dof(int igroup) else if (shake_flag[i] == 4) n += 3; } - int nall; - MPI_Allreduce(&n,&nall,1,MPI_INT,MPI_SUM,world); + bigint nall; + MPI_Allreduce(&n,&nall,1,MPI_LMP_BIGINT,MPI_SUM,world); return nall; } @@ -1098,7 +1098,7 @@ void FixShake::find_clusters() // print info on SHAKE clusters // ----------------------------------------------------- - int count1,count2,count3,count4; + bigint count1,count2,count3,count4; count1 = count2 = count3 = count4 = 0; for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 1) count1++; @@ -1107,15 +1107,15 @@ void FixShake::find_clusters() else if (shake_flag[i] == 4) count4++; } - int tmp; + bigint tmp; tmp = count1; - MPI_Allreduce(&tmp,&count1,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&tmp,&count1,1,MPI_LMP_BIGINT,MPI_SUM,world); tmp = count2; - MPI_Allreduce(&tmp,&count2,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&tmp,&count2,1,MPI_LMP_BIGINT,MPI_SUM,world); tmp = count3; - MPI_Allreduce(&tmp,&count3,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&tmp,&count3,1,MPI_LMP_BIGINT,MPI_SUM,world); tmp = count4; - MPI_Allreduce(&tmp,&count4,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&tmp,&count4,1,MPI_LMP_BIGINT,MPI_SUM,world); if (comm->me == 0) { utils::logmesg(lmp,"{:>8} = # of size 2 clusters\n" @@ -2682,12 +2682,12 @@ void FixShake::stats() // sum across all procs - MPI_Allreduce(b_count,b_count_all,nb,MPI_INT,MPI_SUM,world); + MPI_Allreduce(b_count,b_count_all,nb,MPI_LMP_BIGINT,MPI_SUM,world); MPI_Allreduce(b_ave,b_ave_all,nb,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(b_max,b_max_all,nb,MPI_DOUBLE,MPI_MAX,world); MPI_Allreduce(b_min,b_min_all,nb,MPI_DOUBLE,MPI_MIN,world); - MPI_Allreduce(a_count,a_count_all,na,MPI_INT,MPI_SUM,world); + MPI_Allreduce(a_count,a_count_all,na,MPI_LMP_BIGINT,MPI_SUM,world); MPI_Allreduce(a_ave,a_ave_all,na,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(a_max,a_max_all,na,MPI_DOUBLE,MPI_MAX,world); MPI_Allreduce(a_min,a_min_all,na,MPI_DOUBLE,MPI_MIN,world); diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index 3b04560f09d..d02fdd784a7 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -59,7 +59,7 @@ class FixShake : public Fix { virtual void correct_coordinates(int vflag); virtual void correct_velocities(); - int dof(int) override; + bigint dof(int) override; void reset_dt() override; void *extract(const char *, int &) override; double compute_scalar() override; @@ -117,10 +117,10 @@ class FixShake : public Fix { int nlist, maxlist; // size and max-size of list // stat quantities - int *b_count, *b_count_all; // counts for each bond type, atoms in bond cluster + bigint *b_count, *b_count_all; // counts for each bond type, atoms in bond cluster double *b_ave, *b_max, *b_min; // ave/max/min dist for each bond type double *b_ave_all, *b_max_all, *b_min_all; // MPI summing arrays - int *a_count, *a_count_all; // ditto for angle types + bigint *a_count, *a_count_all; // ditto for angle types double *a_ave, *a_max, *a_min; double *a_ave_all, *a_max_all, *a_min_all; diff --git a/src/SHOCK/fix_append_atoms.cpp b/src/SHOCK/fix_append_atoms.cpp index 9ab788b352a..677b3b55fd0 100644 --- a/src/SHOCK/fix_append_atoms.cpp +++ b/src/SHOCK/fix_append_atoms.cpp @@ -14,8 +14,6 @@ #include "fix_append_atoms.h" -#include -#include #include "atom.h" #include "atom_vec.h" #include "comm.h" @@ -27,11 +25,13 @@ #include "error.h" #include "force.h" +#include +#include + using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e30 -#define EPSILON 1.0e-6 +static constexpr double BIG = 1.0e30; /* ---------------------------------------------------------------------- */ @@ -43,7 +43,7 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : next_reneighbor = -1; time_depend = 1; - if (narg < 4) error->all(FLERR,"Illegal fix append/atoms command"); + if (narg < 4) utils::missing_cmd_args(FLERR,"fix append/atoms", error); // default settings @@ -121,8 +121,7 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"spatial") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix append/atoms command"); if (strcmp(arg[iarg+1],"f_") == 0) - error->all(FLERR, - "Bad fix ID in fix append/atoms command"); + error->all(FLERR, "Bad fix ID in fix append/atoms command"); spatflag = 1; spatialid = utils::strdup(arg[iarg+1]+2); spatlead = utils::numeric(FLERR,arg[iarg+2],false,lmp); @@ -208,14 +207,14 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : FixAppendAtoms::~FixAppendAtoms() { - delete [] basistype; + delete[] basistype; if (ranflag) delete randomx; if (spatflag) delete[] spatialid; if (tempflag) { delete randomt; - delete [] gfactor1; - delete [] gfactor2; + delete[] gfactor1; + delete[] gfactor2; } } @@ -239,22 +238,30 @@ void FixAppendAtoms::initial_integrate(int /*vflag*/) /* ---------------------------------------------------------------------- */ +void FixAppendAtoms::init() +{ + if (spatflag) { + Fix *ifix = modify->get_fix_by_id(spatialid); + if (!ifix) error->all(FLERR,"Fix ID {} for fix ave/chunk does not exist", spatialid); + if (!utils::strmatch(ifix->style, "^ave/chunk")) + error->all(FLERR,"Fix {} for spatial keyword is not fix style ave/chunk", spatialid);} +} + +/* ---------------------------------------------------------------------- */ + void FixAppendAtoms::setup(int vflag) { /*** CALL TO CREATE GROUP? SEE POST_FORCE ***/ post_force(vflag); } - /* ---------------------------------------------------------------------- */ int FixAppendAtoms::get_spatial() { if (update->ntimestep % freq == 0) { - int ifix = modify->find_fix(spatialid); - if (ifix < 0) - error->all(FLERR,"Fix ID for fix ave/spatial does not exist"); - Fix *fix = modify->fix[ifix]; + Fix *fix = modify->get_fix_by_id(spatialid); + if (!fix) error->all(FLERR,"Fix ID {} for fix ave/chunk does not exist", spatialid); int failed = 0; int count = 0; @@ -319,8 +326,8 @@ int FixAppendAtoms::get_spatial() if (domain->boxhi[2] - shockfront_loc < spatlead) advance = 1; - delete [] pos; - delete [] val; + delete[] pos; + delete[] val; } advance_sum = 0; @@ -433,22 +440,14 @@ void FixAppendAtoms::pre_exchange() xmin = ymin = zmin = BIG; xmax = ymax = zmax = -BIG; - domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxlo[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxlo[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxlo[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxlo[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxhi[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxhi[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxhi[2], - xmin,ymin,zmin,xmax,ymax,zmax); - domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxhi[2], - xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxlo[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxlo[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxlo[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxlo[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxlo[1],bboxhi[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxlo[1],bboxhi[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxlo[0],bboxhi[1],bboxhi[2],xmin,ymin,zmin,xmax,ymax,zmax); + domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxhi[2],xmin,ymin,zmin,xmax,ymax,zmax); int ilo,ihi,jlo,jhi,klo,khi; ilo = static_cast (xmin); diff --git a/src/SHOCK/fix_append_atoms.h b/src/SHOCK/fix_append_atoms.h index 5fbe9e904b1..a7e89a39768 100644 --- a/src/SHOCK/fix_append_atoms.h +++ b/src/SHOCK/fix_append_atoms.h @@ -29,6 +29,7 @@ class FixAppendAtoms : public Fix { FixAppendAtoms(class LAMMPS *, int, char **); ~FixAppendAtoms() override; int setmask() override; + void init() override; void setup(int) override; void pre_exchange() override; void initial_integrate(int) override; diff --git a/src/SMTBQ/pair_smatb.cpp b/src/SMTBQ/pair_smatb.cpp index 85446b7a628..ab6aee557ea 100644 --- a/src/SMTBQ/pair_smatb.cpp +++ b/src/SMTBQ/pair_smatb.cpp @@ -26,6 +26,7 @@ #include "neighbor.h" #include +#include using namespace LAMMPS_NS; diff --git a/src/SMTBQ/pair_smatb_single.cpp b/src/SMTBQ/pair_smatb_single.cpp index 756941b2b7c..4506a1093c7 100644 --- a/src/SMTBQ/pair_smatb_single.cpp +++ b/src/SMTBQ/pair_smatb_single.cpp @@ -26,6 +26,7 @@ #include "neighbor.h" #include +#include using namespace LAMMPS_NS; diff --git a/src/SMTBQ/pair_smtbq.cpp b/src/SMTBQ/pair_smtbq.cpp index 4f924a6fcad..3696a3ab6c4 100644 --- a/src/SMTBQ/pair_smtbq.cpp +++ b/src/SMTBQ/pair_smtbq.cpp @@ -60,6 +60,7 @@ #include #include +#include #include #include @@ -70,11 +71,8 @@ using namespace MathConst; using namespace MathExtra; using namespace MathSpecial; -#define MAXLINE 2048 -#define MAXTOKENS 2048 -#define DELTA 4 -#define PGDELTA 1 -#define MAXNEIGH 24 +static constexpr int PGDELTA = 1; +static constexpr int MAXNEIGH = 24; static constexpr char SMTBQ_SEPARATORS[] = "' \t\n\r"; diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index 9a7e4c6aac6..f941ddc990a 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -1,5 +1,4 @@ /* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories LAMMPS development team: developers@lammps.org @@ -10,7 +9,6 @@ the GNU General Public License. See the README file in the top-level LAMMPS directory. - ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------ @@ -26,6 +24,8 @@ #include "atom_vec_spin.h" #include "atom.h" +#include "domain.h" +#include "memory.h" #include #include @@ -42,6 +42,8 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) atom->sp_flag = 1; + sp_hold = nullptr; + // 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 @@ -100,3 +102,55 @@ void AtomVecSpin::data_atom_post(int ilocal) sp_one[1] *= norm; sp_one[2] *= norm; } + +/* ---------------------------------------------------------------------- + convert read_data file info from general to restricted triclinic + parent class operates on data from Velocities section of data file + child class operates on spin vector sp +------------------------------------------------------------------------- */ + +void AtomVecSpin::read_data_general_to_restricted(int nlocal_previous, int nlocal) +{ + AtomVec::read_data_general_to_restricted(nlocal_previous, nlocal); + + for (int i = nlocal_previous; i < nlocal; i++) + domain->general_to_restricted_vector(sp[i]); +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on spin vector sp which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecSpin::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + int nlocal = atom->nlocal; + memory->create(sp_hold,nlocal,3,"atomvec:sp_hold"); + for (int i = 0; i < nlocal; i++) { + memcpy(&sp_hold[i],&sp[i],3*sizeof(double)); + domain->restricted_to_general_vector(sp[i]); + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on spin vector sp which has 4 values per atom +------------------------------------------------------------------------- */ + +void AtomVecSpin::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + if (!sp_hold) return; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) + memcpy(&sp[i],&sp_hold[i],3*sizeof(double)); + memory->destroy(sp_hold); + sp_hold = nullptr; +} diff --git a/src/SPIN/atom_vec_spin.h b/src/SPIN/atom_vec_spin.h index bf11d5856e5..7a2f890086c 100644 --- a/src/SPIN/atom_vec_spin.h +++ b/src/SPIN/atom_vec_spin.h @@ -31,9 +31,13 @@ class AtomVecSpin : virtual public AtomVec { void grow_pointers() override; void force_clear(int, size_t) override; void data_atom_post(int) override; + void read_data_general_to_restricted(int, int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; protected: double **sp, **fm, **fm_long; + double **sp_hold; }; } // namespace LAMMPS_NS diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 1c92d284f0a..fc5e223e75d 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -215,9 +215,8 @@ void ComputeSpin::compute_vector() tempnum += tx*tx+ty*ty+tz*tz; tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2]; countsp++; - } + } else error->all(FLERR,"Compute compute/spin requires atom/spin style"); } - else error->all(FLERR,"Compute compute/spin requires atom/spin style"); } MPI_Allreduce(mag,magtot,4,MPI_DOUBLE,MPI_SUM,world); diff --git a/src/SPIN/fix_neb_spin.cpp b/src/SPIN/fix_neb_spin.cpp index ea8ce9c1fc0..0d7703d06f1 100644 --- a/src/SPIN/fix_neb_spin.cpp +++ b/src/SPIN/fix_neb_spin.cpp @@ -42,7 +42,7 @@ using namespace FixConst; enum{SINGLE_PROC_DIRECT,SINGLE_PROC_MAP,MULTI_PROC}; -#define BUFSIZE 8 +static constexpr int BUFSIZE = 8; /* ---------------------------------------------------------------------- */ diff --git a/src/SPIN/min_spin.cpp b/src/SPIN/min_spin.cpp index a2202cba325..2843efeb4bb 100644 --- a/src/SPIN/min_spin.cpp +++ b/src/SPIN/min_spin.cpp @@ -36,9 +36,8 @@ using namespace MathConst; // EPS_ENERGY = minimum normalization for energy tolerance -#define EPS_ENERGY 1.0e-8 - -#define DELAYSTEP 5 +static constexpr double EPS_ENERGY = 1.0e-8; +static constexpr int DELAYSTEP = 5; /* ---------------------------------------------------------------------- */ diff --git a/src/SPIN/min_spin_cg.cpp b/src/SPIN/min_spin_cg.cpp index ee72609ed94..ed7ab6c3291 100644 --- a/src/SPIN/min_spin_cg.cpp +++ b/src/SPIN/min_spin_cg.cpp @@ -54,9 +54,8 @@ static const char cite_minstyle_spin_cg[] = // EPS_ENERGY = minimum normalization for energy tolerance -#define EPS_ENERGY 1.0e-8 - -#define DELAYSTEP 5 +static constexpr double EPS_ENERGY = 1.0e-8; +static constexpr int DELAYSTEP = 5; /* ---------------------------------------------------------------------- */ diff --git a/src/SPIN/min_spin_lbfgs.cpp b/src/SPIN/min_spin_lbfgs.cpp index ae9d33a7057..e4f0dce8b91 100644 --- a/src/SPIN/min_spin_lbfgs.cpp +++ b/src/SPIN/min_spin_lbfgs.cpp @@ -54,9 +54,8 @@ static const char cite_minstyle_spin_lbfgs[] = // EPS_ENERGY = minimum normalization for energy tolerance -#define EPS_ENERGY 1.0e-8 - -#define DELAYSTEP 5 +static constexpr double EPS_ENERGY = 1.0e-8; +static constexpr int DELAYSTEP = 5; /* ---------------------------------------------------------------------- */ diff --git a/src/SPIN/neb_spin.cpp b/src/SPIN/neb_spin.cpp index e7ef9ff7ea9..fb8b7d83537 100644 --- a/src/SPIN/neb_spin.cpp +++ b/src/SPIN/neb_spin.cpp @@ -44,6 +44,7 @@ #include #include +#include using namespace LAMMPS_NS; @@ -62,10 +63,11 @@ static const char cite_neb_spin[] = "doi={10.1016/j.cpc.2015.07.001}\n" "}\n\n"; -#define MAXLINE 256 -#define CHUNK 1024 +static constexpr int MAXLINE = 256; +static constexpr int CHUNK = 1024; + // 8 attributes: tag, spin norm, position (3), spin direction (3) -#define ATTRIBUTE_PERLINE 8 +static constexpr int ATTRIBUTE_PERLINE = 8; /* ---------------------------------------------------------------------- */ @@ -374,7 +376,7 @@ void NEBSpin::readfile(char *file, int flag) int i,nchunk,eofflag,nlines; tagint tag; char *eof,*start,*next,*buf; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; double musp,xx,yy,zz,spx,spy,spz; if (me_universe == 0 && universe->uscreen) diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 849d5c4a9da..f3ef997d013 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -33,14 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index e96321a7a3c..9b153a1c28c 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -52,13 +52,13 @@ enum { BIG_MOVE, SRD_MOVE, SRD_ROTATE }; enum { CUBIC_ERROR, CUBIC_WARN }; enum { SHIFT_NO, SHIFT_YES, SHIFT_POSSIBLE }; -#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double EINERTIA = 0.2; // moment of inertia prefactor for ellipsoid -#define ATOMPERBIN 30 -#define BIG 1.0e20 -#define VBINSIZE 5 -#define TOLERANCE 0.00001 -#define MAXITER 20 +static constexpr int ATOMPERBIN = 30; +static constexpr double BIG = 1.0e20; +static constexpr int VBINSIZE = 5; +static constexpr double TOLERANCE = 0.00001; +static constexpr int MAXITER = 20; static const char cite_fix_srd[] = "fix srd command: doi:10.1063/1.3419070\n\n" diff --git a/src/UEF/dump_cfg_uef.cpp b/src/UEF/dump_cfg_uef.cpp index d72225b2381..776c4675f35 100644 --- a/src/UEF/dump_cfg_uef.cpp +++ b/src/UEF/dump_cfg_uef.cpp @@ -26,9 +26,7 @@ using namespace LAMMPS_NS; -#define UNWRAPEXPAND 10.0 -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr double UNWRAPEXPAND = 10.0; /* ---------------------------------------------------------------------- * base method is mostly fine, just need to find the FixNHUef diff --git a/src/VORONOI/compute_voronoi_atom.cpp b/src/VORONOI/compute_voronoi_atom.cpp index b4f1aa30551..ca4ad4a85cf 100644 --- a/src/VORONOI/compute_voronoi_atom.cpp +++ b/src/VORONOI/compute_voronoi_atom.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; using namespace voro; -#define FACESDELTA 10000 +static constexpr int FACESDELTA = 10000; /* ---------------------------------------------------------------------- */ diff --git a/src/VTK/dump_vtk.cpp b/src/VTK/dump_vtk.cpp index 172a0926297..12fc4ad1eaa 100644 --- a/src/VTK/dump_vtk.cpp +++ b/src/VTK/dump_vtk.cpp @@ -93,8 +93,8 @@ enum{X,Y,Z, // required for vtk, must come first enum{LT,LE,GT,GE,EQ,NEQ,XOR}; enum{VTK,VTP,VTU,PVTP,PVTU}; // file formats -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr int ONEFIELD = 32; +static constexpr int DELTA = 1048576; #if (VTK_MAJOR_VERSION < 5) || (VTK_MAJOR_VERSION > 9) #error This code has only been tested with VTK 5, 6, 7, 8, and 9 @@ -2096,7 +2096,7 @@ int DumpVTK::modify_param(int narg, char **arg) if (refreshflag) error->all(FLERR,"Dump_modify can only have one refresh"); refreshflag = 1; - refresh = argi.copy_name(); + idrefresh = argi.copy_name(); return 2; } diff --git a/src/YAFF/angle_cross.cpp b/src/YAFF/angle_cross.cpp index 46833b7f74d..d3e127e935a 100644 --- a/src/YAFF/angle_cross.cpp +++ b/src/YAFF/angle_cross.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/YAFF/angle_mm3.cpp b/src/YAFF/angle_mm3.cpp index af199f6fe98..3ff7df1653b 100644 --- a/src/YAFF/angle_mm3.cpp +++ b/src/YAFF/angle_mm3.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/YAFF/improper_distharm.cpp b/src/YAFF/improper_distharm.cpp index 27516fa4167..257cbce1b33 100644 --- a/src/YAFF/improper_distharm.cpp +++ b/src/YAFF/improper_distharm.cpp @@ -28,12 +28,8 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperDistHarm::ImproperDistHarm(LAMMPS *lmp) : Improper(lmp) diff --git a/src/YAFF/improper_sqdistharm.cpp b/src/YAFF/improper_sqdistharm.cpp index 1cd8515d9a2..f4beab3587b 100644 --- a/src/YAFF/improper_sqdistharm.cpp +++ b/src/YAFF/improper_sqdistharm.cpp @@ -28,12 +28,8 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; -#define TOLERANCE 0.05 -#define SMALL 0.001 - /* ---------------------------------------------------------------------- */ ImproperSQDistHarm::ImproperSQDistHarm(LAMMPS *lmp) : Improper(lmp) diff --git a/src/YAFF/pair_lj_switch3_coulgauss_long.cpp b/src/YAFF/pair_lj_switch3_coulgauss_long.cpp index dbbab7e5fe7..5fe9b886bf0 100644 --- a/src/YAFF/pair_lj_switch3_coulgauss_long.cpp +++ b/src/YAFF/pair_lj_switch3_coulgauss_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -33,14 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ @@ -130,6 +124,7 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { + forcecoul = forcecoul2 = forcelj = 0.0; r2inv = 1.0/rsq; if (rsq < cut_coulsq) { @@ -155,7 +150,7 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag) forcecoul -= (1.0-factor_coul)*prefactor; } } - } else forcecoul = 0.0; + } if (rsq < cut_ljsq[itype][jtype]) { // Lennard-Jones potential @@ -166,7 +161,6 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag) if (lj2[itype][jtype]==0.0) { // This means a point charge is considered, so the correction is zero erfc2 = 0.0; - forcecoul2 = 0.0; prefactor2 = 0.0; } else { rrij = lj2[itype][jtype]*r; @@ -175,7 +169,7 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag) prefactor2 = -qqrd2e*qtmp*q[j]/r; forcecoul2 = prefactor2*(erfc2+EWALD_F*rrij*expn2); } - } else forcelj = 0.0; + } if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) @@ -586,6 +580,8 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype, r2inv = 1.0/rsq; r = sqrt(rsq); + forcecoul = forcecoul2 = 0.0; + if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { grij = g_ewald * r; @@ -616,7 +612,6 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype, forcelj = r6inv*(12.0*lj3[itype][jtype]*r6inv-6.0*lj4[itype][jtype]); if (lj2[itype][jtype] == 0.0) { erfc2 = 0.0; - forcecoul2 = 0.0; prefactor2 = 0.0; } else { rrij = lj2[itype][jtype]*r; diff --git a/src/YAFF/pair_mm3_switch3_coulgauss_long.cpp b/src/YAFF/pair_mm3_switch3_coulgauss_long.cpp index 96e4e4c35f8..c4f31f20597 100644 --- a/src/YAFF/pair_mm3_switch3_coulgauss_long.cpp +++ b/src/YAFF/pair_mm3_switch3_coulgauss_long.cpp @@ -21,6 +21,7 @@ #include "atom.h" #include "comm.h" #include "error.h" +#include "ewald_const.h" #include "force.h" #include "kspace.h" #include "math_const.h" @@ -33,14 +34,7 @@ using namespace LAMMPS_NS; using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +using namespace EwaldConst; /* ---------------------------------------------------------------------- */ @@ -130,6 +124,7 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { + forcecoul = forcecoul2 = forcelj = 0.0; r2inv = 1.0/rsq; if (rsq < cut_coulsq) { @@ -155,7 +150,7 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag) forcecoul -= (1.0-factor_coul)*prefactor; } } - } else forcecoul = 0.0; + } if (rsq < cut_ljsq[itype][jtype]) { // Repulsive exponential part @@ -170,7 +165,6 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag) // This means a point charge is considered, so the correction is zero expn2 = 0.0; erfc2 = 0.0; - forcecoul2 = 0.0; prefactor2 = 0.0; } else { rrij = lj2[itype][jtype]*r; @@ -179,7 +173,7 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag) prefactor2 = -qqrd2e*qtmp*q[j]/r; forcecoul2 = prefactor2*(erfc2+EWALD_F*rrij*expn2); } - } else forcelj = 0.0; + } if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) @@ -587,6 +581,8 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype, r2inv = 1.0/rsq; r = sqrt(rsq); + forcecoul = forcecoul2 = 0.0; + if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { grij = g_ewald * r; @@ -610,7 +606,7 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype, forcecoul -= (1.0-factor_coul)*prefactor; } } - } else forcecoul = 0.0; + } if (rsq < cut_ljsq[itype][jtype]) { expb = lj3[itype][jtype]*exp(-lj1[itype][jtype]*r); @@ -621,7 +617,6 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype, if (lj2[itype][jtype] == 0.0) { expn2 = 0.0; erfc2 = 0.0; - forcecoul2 = 0.0; prefactor2 = 0.0; } else { rrij = lj2[itype][jtype]*r; diff --git a/src/angle.cpp b/src/angle.cpp index 93d217237e5..79893cc52fb 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define FOURTH 0.25 +static constexpr double FOURTH = 0.25; /* ---------------------------------------------------------------------- */ diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index 7419139942f..0c61970a1f7 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; -#define EXTRA 1000 +static constexpr int EXTRA = 1000; /* ---------------------------------------------------------------------- */ @@ -270,7 +270,7 @@ void AngleHybrid::coeff(int narg, char **arg) else if (strcmp(arg[1], "bb") == 0) error->all(FLERR, "BondBond coeff for hybrid angle has invalid format"); else - error->all(FLERR, "Angle coeff for hybrid has invalid style"); + error->all(FLERR, "Expected hybrid sub-style instead of {} in angle_coeff command", arg[1]); } // move 1st arg to 2nd arg diff --git a/src/angle_write.cpp b/src/angle_write.cpp index fb0e65ccf5f..48420ae7be1 100644 --- a/src/angle_write.cpp +++ b/src/angle_write.cpp @@ -25,7 +25,6 @@ #include "error.h" #include "force.h" #include "input.h" -#include "lammps.h" #include "math_const.h" #include "update.h" @@ -35,7 +34,7 @@ using MathConst::DEG2RAD; using MathConst::RAD2DEG; static constexpr double epsilon = 6.5e-6; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ void AngleWrite::command(int narg, char **arg) @@ -147,7 +146,7 @@ void AngleWrite::command(int narg, char **arg) writer->input->one("mass * 1.0"); writer->input->one(fmt::format("angle_style {}", force->angle_style)); FILE *coeffs; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; coeffs = fopen(coeffs_file.c_str(), "r"); for (int i = 0; i < atom->nangletypes; ++i) { fgets(line, MAXLINE, coeffs); diff --git a/src/atom.cpp b/src/atom.cpp index b604c54e6be..866a52e25a4 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -26,6 +26,7 @@ #include "input.h" #include "label_map.h" #include "math_const.h" +#include "math_extra.h" #include "memory.h" #include "modify.h" #include "molecule.h" @@ -47,9 +48,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 1 -#define EPSILON 1.0e-6 -#define MAXLINE 256 +static constexpr int DELTA = 1; +static constexpr double EPSILON = 1.0e-6; +static constexpr double EPS_ZCOORD = 1.0e-12; /* ---------------------------------------------------------------------- one instance per AtomVec style in style_atom.h @@ -234,6 +235,7 @@ Atom::Atom(LAMMPS *_lmp) : Pointers(_lmp), atom_style(nullptr), avec(nullptr), a darray = nullptr; icols = dcols = nullptr; ivname = dvname = ianame = daname = nullptr; + ivghost = dvghost = iaghost = daghost = nullptr; // initialize atom style and array existence flags @@ -333,6 +335,10 @@ Atom::~Atom() memory->sfree(darray); memory->sfree(icols); memory->sfree(dcols); + memory->destroy(ivghost); + memory->destroy(dvghost); + memory->destroy(iaghost); + memory->destroy(daghost); // delete user-defined molecules @@ -618,7 +624,7 @@ void Atom::set_atomflag_defaults() // identical list as 2nd customization in atom.h labelmapflag = 0; - sphere_flag = ellipsoid_flag = line_flag = tri_flag = body_flag = 0; + ellipsoid_flag = line_flag = tri_flag = body_flag = 0; quat_flag = 0; peri_flag = electron_flag = 0; wavepacket_flag = sph_flag = 0; @@ -1034,12 +1040,13 @@ void Atom::deallocate_topology() /* ---------------------------------------------------------------------- unpack N lines from Atom section of data file - call style-specific routine to parse line + call atom-style specific method to parse each line + triclinic_general = 1 if data file defines a general triclinic box ------------------------------------------------------------------------- */ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, int type_offset, int shiftflag, double *shift, - int labelflag, int *ilabel) + int labelflag, int *ilabel, int triclinic_general) { int xptr,iptr; imageint imagedata; @@ -1050,6 +1057,7 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, auto location = "Atoms section of data file"; // use the first line to detect and validate the number of words/tokens per line + next = strchr(buf,'\n'); if (!next) error->all(FLERR, "Missing data in {}", location); *next = '\0'; @@ -1063,13 +1071,16 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, } if ((nwords != avec->size_data_atom) && (nwords != avec->size_data_atom + 3)) - error->all(FLERR,"Incorrect format in {}: {}", location, utils::trim(buf)); + error->all(FLERR,"Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); *next = '\n'; + // set bounds for my proc // if periodic and I am lo/hi proc, adjust bounds by EPSILON // ensures all data atoms will be owned even with round-off + int dimension = domain->dimension; int triclinic = domain->triclinic; double epsilon[3]; @@ -1140,18 +1151,27 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, *next = '\0'; auto values = Tokenizer(buf).as_vector(); int nvalues = values.size(); - if ((nvalues == 0) || (utils::strmatch(values[0],"^#.*"))) { - // skip over empty or comment lines + + // skip comment lines + + if ((nvalues == 0) || (utils::strmatch(values[0],"^#.*"))) { + + // check that line has correct # of words + } else if ((nvalues < nwords) || ((nvalues > nwords) && (!utils::strmatch(values[nwords],"^#")))) { - error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); + error->all(FLERR, "Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); + + // extract the atom coords and image flags (if they exist) + } else { int imx = 0, imy = 0, imz = 0; if (imageflag) { imx = utils::inumeric(FLERR,values[iptr],false,lmp); imy = utils::inumeric(FLERR,values[iptr+1],false,lmp); imz = utils::inumeric(FLERR,values[iptr+2],false,lmp); - if ((domain->dimension == 2) && (imz != 0)) + if ((dimension == 2) && (imz != 0)) error->all(FLERR,"Z-direction image flag must be 0 for 2d-systems"); if ((!domain->xperiodic) && (imx != 0)) { reset_image_flag[0] = true; imx = 0; } if ((!domain->yperiodic) && (imy != 0)) { reset_image_flag[1] = true; imy = 0; } @@ -1164,13 +1184,35 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, xdata[0] = utils::numeric(FLERR,values[xptr],false,lmp); xdata[1] = utils::numeric(FLERR,values[xptr+1],false,lmp); xdata[2] = utils::numeric(FLERR,values[xptr+2],false,lmp); + + // for 2d simulation: + // check if z coord is within EPS_ZCOORD of zero and set to zero + + if (dimension == 2) { + if (fabs(xdata[2]) > EPS_ZCOORD) + error->all(FLERR,"Read_data atom z coord is non-zero for 2d simulation"); + xdata[2] = 0.0; + } + + // convert atom coords from general to restricted triclinic + // so can decide which proc owns the atom + + if (triclinic_general) domain->general_to_restricted_coords(xdata); + + // apply shift if requested by read_data command + if (shiftflag) { xdata[0] += shift[0]; xdata[1] += shift[1]; xdata[2] += shift[2]; } + // map atom into simulation box for periodic dimensions + domain->remap(xdata,imagedata); + + // determine if this proc owns the atom + if (triclinic) { domain->x2lamda(xdata,lamda); coord = lamda; @@ -1179,6 +1221,9 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, if (coord[0] >= sublo[0] && coord[0] < subhi[0] && coord[1] >= sublo[1] && coord[1] < subhi[1] && coord[2] >= sublo[2] && coord[2] < subhi[2]) { + + // atom-style specific method parses single line + avec->data_atom(xdata,imagedata,values,typestr); typestr = utils::utf8_subst(typestr); if (id_offset) tag[nlocal-1] += id_offset; @@ -1218,8 +1263,8 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, /* ---------------------------------------------------------------------- unpack N lines from Velocity section of data file check that atom IDs are > 0 and <= map_tag_max - call style-specific routine to parse line -------------------------------------------------------------------------- */ + call style-specific routine to parse line- +------------------------------------------------------------------------ */ void Atom::data_vels(int n, char *buf, tagint id_offset) { @@ -1238,7 +1283,8 @@ void Atom::data_vels(int n, char *buf, tagint id_offset) if (values.size() == 0) { // skip over empty or comment lines } else if ((int)values.size() != avec->size_data_vel) { - error->all(FLERR, "Incorrect velocity format in data file: {}", utils::trim(buf)); + error->all(FLERR, "Incorrect format in Velocities section of data file: {}{}", + utils::trim(buf), utils::errorurl(2)); } else { tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset; if (tagdata <= 0 || tagdata > map_tag_max) @@ -1282,7 +1328,9 @@ void Atom::data_bonds(int n, char *buf, int *count, tagint id_offset, // skip over empty or comment lines // Bonds line is: number(ignored), bond type, atomID 1, atomID 2 if (nwords > 0) { - if (nwords != 4) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); + if (nwords != 4) + error->all(FLERR, "Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); typestr = utils::utf8_subst(values[1]); atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp); @@ -1373,7 +1421,9 @@ void Atom::data_angles(int n, char *buf, int *count, tagint id_offset, // skip over empty or comment lines // Angles line is: number(ignored), angle type, atomID 1, atomID 2, atomID 3 if (nwords > 0) { - if (nwords != 5) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); + if (nwords != 5) + error->all(FLERR, "Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); typestr = utils::utf8_subst(values[1]); atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp); @@ -1480,7 +1530,9 @@ void Atom::data_dihedrals(int n, char *buf, int *count, tagint id_offset, // skip over empty or comment lines // Dihedrals line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4 if (nwords > 0) { - if (nwords != 6) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); + if (nwords != 6) + error->all(FLERR, "Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); typestr = utils::utf8_subst(values[1]); atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp); @@ -1606,7 +1658,9 @@ void Atom::data_impropers(int n, char *buf, int *count, tagint id_offset, // skip over empty or comment lines // Impropers line is: number(ignored), bond type, atomID 1, atomID 2, atomID 3, atomID 4 if (nwords > 0) { - if (nwords != 6) error->all(FLERR, "Incorrect format in {}: {}", location, utils::trim(buf)); + if (nwords != 6) + error->all(FLERR, "Incorrect format in {}: {}{}", location, + utils::trim(buf), utils::errorurl(2)); typestr = utils::utf8_subst(values[1]); atom1 = utils::tnumeric(FLERR, values[2], false, lmp); atom2 = utils::tnumeric(FLERR, values[3], false, lmp); @@ -1722,7 +1776,8 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus, tagint id_offset) if (values.size() == 0) { // skip over empty or comment lines } else if ((int)values.size() != avec_bonus->size_data_bonus) { - error->all(FLERR, "Incorrect bonus data format in data file: {}", utils::trim(buf)); + error->all(FLERR, "Incorrect format in Bonus section of data file: {}{}", + utils::trim(buf), utils::errorurl(2)); } else { tagint tagdata = utils::tnumeric(FLERR,values[0],false,lmp) + id_offset; if (tagdata <= 0 || tagdata > map_tag_max) @@ -2112,6 +2167,15 @@ std::vectorAtom::get_molecule_by_id(const std::string &id) void Atom::add_molecule_atom(Molecule *onemol, int iatom, int ilocal, tagint offset) { if (onemol->qflag && q_flag) q[ilocal] = onemol->q[iatom]; + if (onemol->muflag && mu_flag) { + double r[3], rotmat[3][3]; + MathExtra::quat_to_mat(onemol->quat_external, rotmat); + MathExtra::matvec(rotmat, onemol->mu[iatom], r); + mu[ilocal][0] = r[0]; + mu[ilocal][1] = r[1]; + mu[ilocal][2] = r[2]; + mu[ilocal][3] = sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); + } if (onemol->radiusflag && radius_flag) radius[ilocal] = onemol->radius[iatom]; if (onemol->rmassflag && rmass_flag) rmass[ilocal] = onemol->rmass[iatom]; else if (rmass_flag) @@ -2599,6 +2663,18 @@ void Atom::update_callback(int ifix) if (extra_border[i] > ifix) extra_border[i]--; } +/** \brief Find a custom per-atom property with given name +\verbatim embed:rst + +This function returns the list index of a custom per-atom property +with the name "name", also returning by reference its data type and +number of values per atom. +\endverbatim + * \param name Name of the property (w/o a "i_" or "d_" or "i2_" or "d2_" prefix) + * \param &flag Returns data type of property: 0 for int, 1 for double + * \param &cols Returns number of values: 0 for a single value, 1 or more for a vector of values + * \return index of property in the respective list of properties + */ /* ---------------------------------------------------------------------- find custom per-atom vector with name return index if found, -1 if not found @@ -2642,6 +2718,33 @@ int Atom::find_custom(const char *name, int &flag, int &cols) return -1; } +/** \brief Find a custom per-atom property with given name and retrieve ghost property +\verbatim embed:rst + +This function returns the list index of a custom per-atom property +with the name "name", also returning by reference its data type, +number of values per atom, and if it is communicated to ghost particles. +Classes rarely need to check on ghost communication and so `find_custom` +is typically preferred to this function. See :doc:`pair amoeba ` +for an example where checking ghost communication is necessary. +\endverbatim + * \param name Name of the property (w/o a "i_" or "d_" or "i2_" or "d2_" prefix) + * \param &flag Returns data type of property: 0 for int, 1 for double + * \param &cols Returns number of values: 0 for a single value, 1 or more for a vector of values + * \param &ghost Returns whether property is communicated to ghost atoms: 0 for no, 1 for yes + * \return index of property in the respective list of properties + */ +int Atom::find_custom_ghost(const char *name, int &flag, int &cols, int &ghost) +{ + int i = find_custom(name, flag, cols); + if (i == -1) return i; + if ((flag == 0) && (cols == 0)) ghost = ivghost[i]; + else if ((flag == 1) && (cols == 0)) ghost = dvghost[i]; + else if ((flag == 0) && (cols == 1)) ghost = iaghost[i]; + else if ((flag == 1) && (cols == 1)) ghost = daghost[i]; + return i; +} + /** \brief Add a custom per-atom property with the given name and type and size \verbatim embed:rst @@ -2652,9 +2755,10 @@ This function is called, e.g. from :doc:`fix property/atom `. * \param name Name of the property (w/o a "i_" or "d_" or "i2_" or "d2_" prefix) * \param flag Data type of property: 0 for int, 1 for double * \param cols Number of values: 0 for a single value, 1 or more for a vector of values + * \param ghost Whether property is communicated to ghost atoms: 0 for no, 1 for yes * \return index of property in the respective list of properties */ -int Atom::add_custom(const char *name, int flag, int cols) +int Atom::add_custom(const char *name, int flag, int cols, int ghost) { int index = -1; @@ -2663,6 +2767,8 @@ int Atom::add_custom(const char *name, int flag, int cols) nivector++; ivname = (char **) memory->srealloc(ivname,nivector*sizeof(char *),"atom:ivname"); ivname[index] = utils::strdup(name); + ivghost = (int *) memory->srealloc(ivghost,nivector*sizeof(int),"atom:ivghost"); + ivghost[index] = ghost; ivector = (int **) memory->srealloc(ivector,nivector*sizeof(int *),"atom:ivector"); memory->create(ivector[index],nmax,"atom:ivector"); @@ -2671,6 +2777,8 @@ int Atom::add_custom(const char *name, int flag, int cols) ndvector++; dvname = (char **) memory->srealloc(dvname,ndvector*sizeof(char *),"atom:dvname"); dvname[index] = utils::strdup(name); + dvghost = (int *) memory->srealloc(dvghost,ndvector*sizeof(int),"atom:dvghost"); + dvghost[index] = ghost; dvector = (double **) memory->srealloc(dvector,ndvector*sizeof(double *),"atom:dvector"); memory->create(dvector[index],nmax,"atom:dvector"); @@ -2679,6 +2787,8 @@ int Atom::add_custom(const char *name, int flag, int cols) niarray++; ianame = (char **) memory->srealloc(ianame,niarray*sizeof(char *),"atom:ianame"); ianame[index] = utils::strdup(name); + iaghost = (int *) memory->srealloc(iaghost,niarray*sizeof(int),"atom:iaghost"); + iaghost[index] = ghost; iarray = (int ***) memory->srealloc(iarray,niarray*sizeof(int **),"atom:iarray"); memory->create(iarray[index],nmax,cols,"atom:iarray"); icols = (int *) memory->srealloc(icols,niarray*sizeof(int),"atom:icols"); @@ -2689,6 +2799,8 @@ int Atom::add_custom(const char *name, int flag, int cols) ndarray++; daname = (char **) memory->srealloc(daname,ndarray*sizeof(char *),"atom:daname"); daname[index] = utils::strdup(name); + daghost = (int *) memory->srealloc(daghost,ndarray*sizeof(int),"atom:daghost"); + daghost[index] = ghost; darray = (double ***) memory->srealloc(darray,ndarray*sizeof(double **),"atom:darray"); memory->create(darray[index],nmax,cols,"atom:darray"); dcols = (int *) memory->srealloc(dcols,ndarray*sizeof(int),"atom:dcols"); @@ -2697,6 +2809,7 @@ int Atom::add_custom(const char *name, int flag, int cols) if (index < 0) error->all(FLERR,"Invalid call to Atom::add_custom()"); + return index; } diff --git a/src/atom.h b/src/atom.h index 548168ac599..86ec697dcea 100644 --- a/src/atom.h +++ b/src/atom.h @@ -180,7 +180,7 @@ class Atom : protected Pointers { // 1 if variable is used, 0 if not int labelmapflag, types_style; - int sphere_flag, ellipsoid_flag, line_flag, tri_flag, body_flag; + int ellipsoid_flag, line_flag, tri_flag, body_flag; int peri_flag, electron_flag; int wavepacket_flag, sph_flag; @@ -242,6 +242,7 @@ class Atom : protected Pointers { int *icols, *dcols; char **ivname, **dvname, **ianame, **daname; int nivector, ndvector, niarray, ndarray; + int *ivghost, *dvghost, *iaghost, *daghost; // molecule templates // each template can be a set of consecutive molecules @@ -328,7 +329,7 @@ class Atom : protected Pointers { void deallocate_topology(); - void data_atoms(int, char *, tagint, tagint, int, int, double *, int, int *); + void data_atoms(int, char *, tagint, tagint, int, int, double *, int, int *, int); void data_vels(int, char *, tagint); void data_bonds(int, char *, int *, tagint, int, int, int *); void data_angles(int, char *, int *, tagint, int, int, int *); @@ -363,7 +364,8 @@ class Atom : protected Pointers { void update_callback(int); int find_custom(const char *, int &, int &); - virtual int add_custom(const char *, int, int); + int find_custom_ghost(const char *, int &, int &, int &); + virtual int add_custom(const char *, int, int, int ghost = 0); virtual void remove_custom(int, int, int); void *extract(const char *); diff --git a/src/atom_map.cpp b/src/atom_map.cpp index c28b886335a..37b46182c14 100644 --- a/src/atom_map.cpp +++ b/src/atom_map.cpp @@ -22,7 +22,7 @@ using namespace LAMMPS_NS; -#define EXTRA 1000 +static constexpr int EXTRA = 1000; /* ---------------------------------------------------------------------- allocate and initialize array or hash table for global -> local map diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index bfda9518238..60526adcf2c 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -68,6 +68,9 @@ AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) image = nullptr; x = v = f = nullptr; + x_hold = nullptr; + v_hold = omega_hold = angmom_hold = nullptr; + threads = nullptr; } @@ -1684,7 +1687,7 @@ void AtomVec::data_atom(double *coord, imageint imagetmp, const std::vectortag_enable && (tag[nlocal] <= 0)) || (!atom->tag_enable && (tag[nlocal] != 0))) error->one(FLERR, "Invalid atom ID {} in line {} of Atoms section of data file", tag[nlocal], nlocal + 1); @@ -2221,6 +2224,130 @@ void AtomVec::write_improper(FILE *fp, int n, tagint **buf, int index) } } +/* ---------------------------------------------------------------------- + convert info input by read_data from general to restricted triclinic + atom coords are converted in Atom::data_atoms() + parent class operates on data from Velocities section of data file + child classes operate on all other data: Atoms, Ellipsoids, Lines, Triangles, etc +------------------------------------------------------------------------- */ + +void AtomVec::read_data_general_to_restricted(int nlocal_previous, int nlocal) +{ + int datatype, cols; + void *pdata; + + for (int n = 1; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + + // operate on v, omega, angmom + // no other read_data Velocities fields are Nx3 double arrays + + if (datatype == Atom::DOUBLE) { + if (cols == 3) { + double **array = *((double ***) pdata); + for (int i = nlocal_previous; i < nlocal; i++) + domain->general_to_restricted_vector(array[i]); + } + } + } +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + create "hold" copy of original restricted data to restore after data file is written + parent class only operates on x and data from Velocities section of data file + child classes operate on all other data: Atoms, Ellipsoids, Lines, Triangles, etc +------------------------------------------------------------------------- */ + +void AtomVec::write_data_restricted_to_general() +{ + int datatype, cols; + void *pdata; + + int nlocal = atom->nlocal; + + memory->create(x_hold,nlocal,3,"atomvec:x_hold"); + if (nlocal) memcpy(&x_hold[0][0],&x[0][0],3*nlocal*sizeof(double)); + for (int i = 0; i < nlocal; i++) + domain->restricted_to_general_coords(x[i]); + + double **omega = atom->omega; + double **angmom = atom->angmom; + + for (int n = 1; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + + // operate on v, omega, angmom + // no other write_data Velocities fields are Nx3 double arrays + + if (datatype == Atom::DOUBLE) { + if (cols == 3) { + double **array = *((double ***) pdata); + + if (array == v) { + memory->create(v_hold,nlocal,3,"atomvec:v_hold"); + if (nlocal) memcpy(&v_hold[0][0],&v[0][0],3*nlocal*sizeof(double)); + for (int i = 0; i < nlocal; i++) + domain->restricted_to_general_vector(v[i]); + } else if (array == omega) { + memory->create(omega_hold,nlocal,3,"atomvec:omega_hold"); + if (nlocal) memcpy(&omega_hold[0][0],&omega[0][0],3*nlocal*sizeof(double)); + for (int i = 0; i < nlocal; i++) + domain->restricted_to_general_vector(omega[i]); + } else if (array == angmom) { + memory->create(angmom_hold,nlocal,3,"atomvec:angmom_hold"); + if (nlocal) memcpy(&angmom_hold[0][0],&angmom[0][0],3*nlocal*sizeof(double)); + for (int i = 0; i < nlocal; i++) + domain->restricted_to_general_vector(angmom[i]); + } + } + } + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class only operates on x and data from Velocities section of data file + child classes operate on all other data: Atoms, Ellipsoids, Lines, Triangles, etc +------------------------------------------------------------------------- */ + +void AtomVec::write_data_restore_restricted() +{ + int nlocal = atom->nlocal; + + if (x_hold) { + memcpy(&x[0][0],&x_hold[0][0],3*nlocal*sizeof(double)); + memory->destroy(x_hold); + x_hold = nullptr; + } + + // operate on v, omega, angmom + // no other write_data Velocities fields are Nx3 double arrays + + if (v_hold) { + memcpy(&v[0][0],&v_hold[0][0],3*nlocal*sizeof(double)); + memory->destroy(v_hold); + v_hold = nullptr; + } + + if (omega_hold) { + memcpy(&atom->omega[0][0],&omega_hold[0][0],3*nlocal*sizeof(double)); + memory->destroy(omega_hold); + omega_hold = nullptr; + } + + if (angmom_hold) { + memcpy(&atom->angmom[0][0],&angmom_hold[0][0],3*nlocal*sizeof(double)); + memory->destroy(angmom_hold); + angmom_hold = nullptr; + } +} + /* ---------------------------------------------------------------------- return # of bytes of allocated memory ------------------------------------------------------------------------- */ diff --git a/src/atom_vec.h b/src/atom_vec.h index a4db0547529..23429647972 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -123,7 +123,8 @@ class AtomVec : protected Pointers { virtual void create_atom(int, double *); virtual void create_atom_post(int) {} - virtual void data_atom(double *, imageint, const std::vector &, std::string &); + virtual void data_atom(double *, imageint, const std::vector &, + std::string &); virtual void data_atom_post(int) {} virtual void data_atom_bonus(int, const std::vector &) {} virtual void data_body(int, int, int, int *, double *) {} @@ -151,6 +152,10 @@ class AtomVec : protected Pointers { virtual int pack_data_bonus(double *, int) { return 0; } virtual void write_data_bonus(FILE *, int, double *, int) {} + virtual void read_data_general_to_restricted(int, int); + virtual void write_data_restricted_to_general(); + virtual void write_data_restore_restricted(); + virtual int property_atom(const std::string &) { return -1; } virtual void pack_property_atom(int, double *, int, int) {} @@ -168,6 +173,11 @@ class AtomVec : protected Pointers { imageint *image; double **x, **v, **f; + // copies of original unrotated fields for write_data for general triclinic + + double **x_hold; + double **v_hold, **omega_hold, **angmom_hold; + // standard list of peratom fields always operated on by different methods // common to all styles, so not listed in field strings diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 538e9783df3..5ff84d6b1f3 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -16,8 +16,10 @@ #include "atom.h" #include "body.h" +#include "domain.h" #include "error.h" #include "fix.h" +#include "math_extra.h" #include "memory.h" #include "modify.h" #include "my_pool_chunk.h" @@ -595,6 +597,15 @@ void AtomVecBody::pack_data_pre(int ilocal) body[ilocal] = 1; } +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecBody::pack_data_post(int ilocal) +{ + body[ilocal] = body_flag; +} + /* ---------------------------------------------------------------------- pack bonus body info for writing to data file if buf is nullptr, just return buffer size @@ -629,12 +640,80 @@ void AtomVecBody::write_data_bonus(FILE *fp, int n, double *buf, int /*flag*/) } /* ---------------------------------------------------------------------- - unmodify values packed by AtomVec::pack_data() + convert read_data file info from general to restricted triclinic + parent class operates on data from Velocities section of data file + child class operates on body quaternion ------------------------------------------------------------------------- */ -void AtomVecBody::pack_data_post(int ilocal) +void AtomVecBody::read_data_general_to_restricted(int nlocal_previous, int nlocal) { - body[ilocal] = body_flag; + int j; + + AtomVec::read_data_general_to_restricted(nlocal_previous, nlocal); + + // quat_g2r = quat that rotates from general to restricted triclinic + // quat_new = body quat converted to restricted triclinic + + double quat_g2r[4],quat_new[4]; + MathExtra::mat_to_quat(domain->rotate_g2r,quat_g2r); + + for (int i = nlocal_previous; i < nlocal; i++) { + if (body[i] < 0) continue; + j = body[i]; + MathExtra::quatquat(quat_g2r,bonus[j].quat,quat_new); + bonus[j].quat[0] = quat_new[0]; + bonus[j].quat[1] = quat_new[1]; + bonus[j].quat[2] = quat_new[2]; + bonus[j].quat[3] = quat_new[3]; + } +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on body quaternion +------------------------------------------------------------------------- */ + +void AtomVecBody::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + memory->create(quat_hold,nlocal_bonus,4,"atomvec:quat_hold"); + + for (int i = 0; i < nlocal_bonus; i++) + memcpy(quat_hold[i],bonus[i].quat,4*sizeof(double)); + + // quat_r2g = quat that rotates from restricted to general triclinic + // quat_new = ellipsoid quat converted to general triclinic + + double quat_r2g[4],quat_new[4]; + MathExtra::mat_to_quat(domain->rotate_r2g,quat_r2g); + + for (int i = 0; i < nlocal_bonus; i++) { + MathExtra::quatquat(quat_r2g,bonus[i].quat,quat_new); + bonus[i].quat[0] = quat_new[0]; + bonus[i].quat[1] = quat_new[1]; + bonus[i].quat[2] = quat_new[2]; + bonus[i].quat[3] = quat_new[3]; + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on body quaternion +------------------------------------------------------------------------- */ + +void AtomVecBody::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + for (int i = 0; i < nlocal_bonus; i++) + memcpy(bonus[i].quat,quat_hold[i],4*sizeof(double)); + + memory->destroy(quat_hold); + quat_hold = nullptr; } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index e02fd3bbb0d..5c7ed73d212 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -66,6 +66,10 @@ class AtomVecBody : public AtomVec { int pack_data_bonus(double *, int) override; void write_data_bonus(FILE *, int, double *, int) override; + void read_data_general_to_restricted(int, int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; + // methods used by other classes to query/set body info double radius_body(int, int, int *, double *); @@ -77,6 +81,7 @@ class AtomVecBody : public AtomVec { int *body; double *rmass, *radius; double **angmom; + double **quat_hold; int nghost_bonus, nmax_bonus; int intdoubleratio; // sizeof(double) / sizeof(int) @@ -87,7 +92,6 @@ class AtomVecBody : public AtomVec { void grow_bonus(); void copy_bonus_all(int, int); - // check(int); }; } // namespace LAMMPS_NS diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 3eaa9273844..417c3cf5fab 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -18,6 +18,7 @@ #include "atom_vec_ellipsoid.h" #include "atom.h" +#include "domain.h" #include "error.h" #include "fix.h" #include "math_const.h" @@ -535,6 +536,83 @@ void AtomVecEllipsoid::write_data_bonus(FILE *fp, int n, double *buf, int /*flag } } +/* ---------------------------------------------------------------------- + convert read_data file info from general to restricted triclinic + parent class operates on data from Velocities section of data file + child class operates on ellipsoid quaternion +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid::read_data_general_to_restricted(int nlocal_previous, int nlocal) +{ + int j; + + AtomVec::read_data_general_to_restricted(nlocal_previous, nlocal); + + // quat_g2r = quat that rotates from general to restricted triclinic + // quat_new = ellipsoid quat converted to restricted triclinic + + double quat_g2r[4],quat_new[4]; + MathExtra::mat_to_quat(domain->rotate_g2r,quat_g2r); + + for (int i = nlocal_previous; i < nlocal; i++) { + if (ellipsoid[i] < 0) continue; + j = ellipsoid[i]; + MathExtra::quatquat(quat_g2r,bonus[j].quat,quat_new); + bonus[j].quat[0] = quat_new[0]; + bonus[j].quat[1] = quat_new[1]; + bonus[j].quat[2] = quat_new[2]; + bonus[j].quat[3] = quat_new[3]; + } +} + +/* ---------------------------------------------------------------------- + convert info output by write_data from restricted to general triclinic + parent class operates on x and data from Velocities section of data file + child class operates on ellipsoid quaternion +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid::write_data_restricted_to_general() +{ + AtomVec::write_data_restricted_to_general(); + + memory->create(quat_hold,nlocal_bonus,4,"atomvec:quat_hold"); + + for (int i = 0; i < nlocal_bonus; i++) + memcpy(quat_hold[i],bonus[i].quat,4*sizeof(double)); + + // quat_r2g = quat that rotates from restricted to general triclinic + // quat_new = ellipsoid quat converted to general triclinic + + double quat_r2g[4],quat_new[4]; + MathExtra::mat_to_quat(domain->rotate_r2g,quat_r2g); + + for (int i = 0; i < nlocal_bonus; i++) { + MathExtra::quatquat(quat_r2g,bonus[i].quat,quat_new); + bonus[i].quat[0] = quat_new[0]; + bonus[i].quat[1] = quat_new[1]; + bonus[i].quat[2] = quat_new[2]; + bonus[i].quat[3] = quat_new[3]; + } +} + +/* ---------------------------------------------------------------------- + restore info output by write_data to restricted triclinic + original data is in "hold" arrays + parent class operates on x and data from Velocities section of data file + child class operates on ellipsoid quaternion +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid::write_data_restore_restricted() +{ + AtomVec::write_data_restore_restricted(); + + for (int i = 0; i < nlocal_bonus; i++) + memcpy(bonus[i].quat,quat_hold[i],4*sizeof(double)); + + memory->destroy(quat_hold); + quat_hold = nullptr; +} + /* ---------------------------------------------------------------------- set shape values in bonus data for particle I oriented aligned with xyz axes diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index 6e06d773fcb..5b0d878c847 100644 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -59,6 +59,10 @@ class AtomVecEllipsoid : public AtomVec { int pack_data_bonus(double *, int) override; void write_data_bonus(FILE *, int, double *, int) override; + void read_data_general_to_restricted(int, int) override; + void write_data_restricted_to_general() override; + void write_data_restore_restricted() override; + // unique to AtomVecEllipsoid void set_shape(int, double, double, double); @@ -69,6 +73,7 @@ class AtomVecEllipsoid : public AtomVec { int *ellipsoid; double *rmass; double **angmom; + double **quat_hold; int nghost_bonus, nmax_bonus; int ellipsoid_flag; diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index ff09bed6d01..6ec4836770b 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -44,7 +44,6 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) atom->line_flag = 1; atom->molecule_flag = atom->rmass_flag = 1; atom->radius_flag = atom->omega_flag = atom->torque_flag = 1; - atom->sphere_flag = 1; nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = nullptr; @@ -352,6 +351,35 @@ void AtomVecLine::data_atom_bonus(int m, const std::vector &values) double y1 = utils::numeric(FLERR, values[ivalue++], true, lmp); double x2 = utils::numeric(FLERR, values[ivalue++], true, lmp); double y2 = utils::numeric(FLERR, values[ivalue++], true, lmp); + + // convert x1/y1 and x2/y2 from general to restricted triclniic + // x is already restricted triclinic + + double coords[3]; + + if (domain->triclinic_general) { + coords[0] = x1; coords[1] = y1; coords[2] = 0.0; + domain->general_to_restricted_coords(coords); + x1 = coords[0]; y1 = coords[1]; + coords[0] = x2; coords[1] = y2; coords[2] = 0.0; + domain->general_to_restricted_coords(coords); + x2 = coords[0]; y2 = coords[1]; + } + + // remap end points to be near x + // necessary if atom x was remapped into periodic box + + coords[0] = x1; coords[1] = y1; coords[2] = 0.0; + domain->remap_near(coords,x[m]); + x1 = coords[0]; y1 = coords[1]; + coords[0] = x2; coords[1] = y2; coords[2] = 0.0; + domain->remap_near(coords,x[m]); + x2 = coords[0]; y2 = coords[1]; + + // calculate length and theta + // error if segment center is not within EPSILON of atom x + // reset atom x to center point + double dx = x2 - x1; double dy = y2 - y1; double length = sqrt(dx * dx + dy * dy); @@ -478,8 +506,14 @@ int AtomVecLine::pack_data_bonus(double *buf, int /*flag*/) int i, j; double length, theta; double xc, yc, x1, x2, y1, y2; + double coords[3]; + + int triclinic_general = domain->triclinic_general; + + double **x_bonus; + if (triclinic_general) x_bonus = x_hold; + else x_bonus = x; - double **x = atom->x; tagint *tag = atom->tag; int nlocal = atom->nlocal; @@ -491,8 +525,9 @@ int AtomVecLine::pack_data_bonus(double *buf, int /*flag*/) j = line[i]; length = bonus[j].length; theta = bonus[j].theta; - xc = x[i][0]; - yc = x[i][1]; + + xc = x_bonus[i][0]; + yc = x_bonus[i][1]; x1 = xc - 0.5 * cos(theta) * length; y1 = yc - 0.5 * sin(theta) * length; x2 = xc + 0.5 * cos(theta) * length; @@ -501,6 +536,20 @@ int AtomVecLine::pack_data_bonus(double *buf, int /*flag*/) buf[m++] = y1; buf[m++] = x2; buf[m++] = y2; + + // if triclinic_general: + // rotate 4 buf values from restricted to general triclinic + // output by write_data_bonus() as x1/y1 and x2/y2 + + if (triclinic_general) { + coords[0] = buf[m-4]; coords[1] = buf[m-3]; coords[2] = 0.0; + domain->restricted_to_general_coords(coords); + buf[m-4] = coords[0]; buf[m-3] = coords[1]; + coords[0] = buf[m-2]; coords[1] = buf[m-1]; coords[2] = 0.0; + domain->restricted_to_general_coords(coords); + buf[m-2] = coords[0]; buf[m-1] = coords[1]; + } + } else m += size_data_bonus; } diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h index 740c541916f..0f5e5800f52 100644 --- a/src/atom_vec_line.h +++ b/src/atom_vec_line.h @@ -76,7 +76,6 @@ class AtomVecLine : public AtomVec { void grow_bonus(); void copy_bonus_all(int, int); - // void consistency_check(int, char *); }; } // namespace LAMMPS_NS diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 8769c316d99..3c7be5d3ee4 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -19,8 +19,6 @@ #include "math_const.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using namespace MathConst; @@ -32,7 +30,6 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) molecular = Atom::ATOMIC; radvary = 0; - 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 @@ -60,13 +57,10 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) void AtomVecSphere::process_args(int narg, char **arg) { - if (narg != 0 && narg != 1) error->all(FLERR, "Illegal atom_style sphere command"); + if (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"); - } + if (narg == 1) radvary = utils::logical(FLERR, arg[0], true, lmp); // dynamic particle radius and mass must be communicated every step diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index a46609b02c6..888ed954fc1 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -47,7 +47,6 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) atom->molecule_flag = atom->rmass_flag = 1; atom->radius_flag = atom->omega_flag = atom->angmom_flag = 1; atom->torque_flag = 1; - atom->sphere_flag = 1; nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = nullptr; @@ -508,7 +507,25 @@ void AtomVecTri::data_atom_bonus(int m, const std::vector &values) MathExtra::sub3(c3, c1, c3mc1); double size = MAX(MathExtra::len3(c2mc1), MathExtra::len3(c3mc1)); + // convert c1,c2,c3 from general to restricted triclniic + // x is already restricted triclinic + + if (domain->triclinic_general) { + domain->general_to_restricted_coords(c1); + domain->general_to_restricted_coords(c2); + domain->general_to_restricted_coords(c3); + } + + // remap corner points to be near x + // necessary if atom x was remapped into periodic box + + domain->remap_near(c1,x[m]); + domain->remap_near(c2,x[m]); + domain->remap_near(c3,x[m]); + // centroid = 1/3 of sum of vertices + // error if centroid is not within EPSILON of atom x + // reset atom x to centroid double centroid[3]; centroid[0] = (c1[0] + c2[0] + c3[0]) / 3.0; @@ -706,7 +723,12 @@ int AtomVecTri::pack_data_bonus(double *buf, int /*flag*/) double dc1[3], dc2[3], dc3[3]; double p[3][3]; - double **x = atom->x; + int triclinic_general = domain->triclinic_general; + + double **x_bonus; + if (triclinic_general) x_bonus = x_hold; + else x_bonus = x; + tagint *tag = atom->tag; int nlocal = atom->nlocal; @@ -720,9 +742,10 @@ int AtomVecTri::pack_data_bonus(double *buf, int /*flag*/) MathExtra::matvec(p, bonus[j].c1, dc1); MathExtra::matvec(p, bonus[j].c2, dc2); MathExtra::matvec(p, bonus[j].c3, dc3); - xc = x[i][0]; - yc = x[i][1]; - zc = x[i][2]; + + xc = x_bonus[i][0]; + yc = x_bonus[i][1]; + zc = x_bonus[i][2]; buf[m++] = xc + dc1[0]; buf[m++] = yc + dc1[1]; buf[m++] = zc + dc1[2]; @@ -732,6 +755,17 @@ int AtomVecTri::pack_data_bonus(double *buf, int /*flag*/) buf[m++] = xc + dc3[0]; buf[m++] = yc + dc3[1]; buf[m++] = zc + dc3[2]; + + // if triclinic_general: + // rotate 9 buf values from restricted to general triclinic + // output by write_data_bonus() as c1,c2,c3 + + if (triclinic_general) { + domain->restricted_to_general_coords(&buf[m-9]); + domain->restricted_to_general_coords(&buf[m-6]); + domain->restricted_to_general_coords(&buf[m-3]); + } + } else m += size_data_bonus; } diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index 4e477ab3a65..6e5ae8d5e7f 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; -#define EXTRA 1000 +static constexpr int EXTRA = 1000; /* ---------------------------------------------------------------------- */ @@ -305,7 +305,7 @@ void BondHybrid::coeff(int narg, char **arg) if (strcmp(arg[1], "none") == 0) none = 1; else - error->all(FLERR, "Bond coeff for hybrid has invalid style"); + error->all(FLERR, "Expected hybrid sub-style instead of {} in bond_coeff command", arg[1]); } // move 1st arg to 2nd arg diff --git a/src/comm.cpp b/src/comm.cpp index a6ac1c4bc81..02999fd541b 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -42,7 +42,7 @@ using namespace LAMMPS_NS; -#define BUFEXTRA 1024 +static constexpr int BUFEXTRA = 1024; enum{ONELEVEL,TWOLEVEL,NUMA,CUSTOM}; enum{CART,CARTREORDER,XYZ}; @@ -420,6 +420,7 @@ void Comm::set_processors(int narg, char **arg) error->all(FLERR,"Specified processors != physical processors"); int iarg = 3; + numa_nodes = 2; while (iarg < narg) { if (strcmp(arg[iarg],"grid") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal processors command"); @@ -514,6 +515,12 @@ void Comm::set_processors(int narg, char **arg) outfile = utils::strdup(arg[iarg+1]); iarg += 2; + } else if (strcmp(arg[iarg],"numa_nodes") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal processors command"); + numa_nodes = utils::inumeric(FLERR,arg[iarg+1],false,lmp); + if (numa_nodes < 1) numa_nodes = 2; + iarg += 2; + } else error->all(FLERR,"Illegal processors command"); } @@ -565,7 +572,7 @@ void Comm::set_proc_grid(int outflag) otherflag,other_style,other_procgrid,other_coregrid); } else if (gridflag == NUMA) { - pmap->numa_grid(nprocs,user_procgrid,procgrid,coregrid); + pmap->numa_grid(numa_nodes,nprocs,user_procgrid,procgrid,coregrid); } else if (gridflag == CUSTOM) { pmap->custom_grid(customfile,nprocs,user_procgrid,procgrid); diff --git a/src/comm.h b/src/comm.h index 5d803c1afac..fde4c3b81fe 100644 --- a/src/comm.h +++ b/src/comm.h @@ -146,6 +146,7 @@ class Comm : protected Pointers { char xyz[4]; // xyz mapping of procs to 3d grid char *customfile; // file with custom proc map char *outfile; // proc grid/map output file + int numa_nodes; // Number of numa domains per socket for 3d grid int otherflag; // 1 if this partition dependent on another int other_style; // style of dependency diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index 08d372187e7..cf38271029d 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -35,9 +35,9 @@ using namespace LAMMPS_NS; -#define BUFFACTOR 1.5 -#define BUFMIN 1024 -#define BIG 1.0e20 +static constexpr double BUFFACTOR = 1.5; +static constexpr int BUFMIN = 1024; +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index f2d91c07faf..b864e0523df 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -36,12 +36,10 @@ using namespace LAMMPS_NS; -#define BUFFACTOR 1.5 -#define BUFFACTOR 1.5 -#define BUFMIN 1024 -#define EPSILON 1.0e-6 - -#define DELTA_PROCS 16 +static constexpr double BUFFACTOR = 1.5; +static constexpr int BUFMIN = 1024; +static constexpr double EPSILON = 1.0e-6; +static constexpr int DELTA_PROCS = 16; /* ---------------------------------------------------------------------- */ @@ -49,14 +47,9 @@ CommTiled::CommTiled(LAMMPS *lmp) : Comm(lmp) { style = Comm::TILED; layout = Comm::LAYOUT_UNIFORM; - pbc_flag = nullptr; - buf_send = nullptr; - buf_recv = nullptr; - overlap = nullptr; - rcbinfo = nullptr; - cutghostmulti = nullptr; - cutghostmultiold = nullptr; - init_buffers(); + init_pointers(); + init_buffers_flag = 0; + maxswap = 0; } /* ---------------------------------------------------------------------- */ @@ -71,7 +64,9 @@ CommTiled::CommTiled(LAMMPS * /*lmp*/, Comm *oldcomm) : Comm(*oldcomm) style = Comm::TILED; layout = oldcomm->layout; Comm::copy_arrays(oldcomm); - init_buffers(); + init_pointers(); + init_buffers_flag = 0; + maxswap = 0; } /* ---------------------------------------------------------------------- */ @@ -88,23 +83,58 @@ CommTiled::~CommTiled() } /* ---------------------------------------------------------------------- - initialize comm buffers and other data structs local to CommTiled + initialize comm pointers to nullptr ------------------------------------------------------------------------- */ -void CommTiled::init_buffers() +void CommTiled::init_pointers() { buf_send = buf_recv = nullptr; - maxsend = maxrecv = BUFMIN; - grow_send(maxsend,2); - memory->create(buf_recv,maxrecv,"comm:buf_recv"); - - maxoverlap = 0; overlap = nullptr; rcbinfo = nullptr; cutghostmulti = nullptr; cutghostmultiold = nullptr; + + nsendproc = nullptr; + nrecvproc = nullptr; + sendother = nullptr; + recvother = nullptr; + sendself = nullptr; + sendproc = nullptr; + recvproc = nullptr; + sendnum = nullptr; + recvnum = nullptr; + size_forward_recv = nullptr; + firstrecv = nullptr; + size_reverse_send = nullptr; + size_reverse_recv = nullptr; + forward_recv_offset = nullptr; + reverse_recv_offset = nullptr; + pbc_flag = nullptr; + pbc = nullptr; + sendbox = nullptr; sendbox_multi = nullptr; sendbox_multiold = nullptr; + maxsendlist = nullptr; + sendlist = nullptr; + requests = nullptr; + nprocmax = nullptr; + nexchproc = nullptr; + nexchprocmax = nullptr; + exchproc = nullptr; + exchnum = nullptr; +} + +/* ---------------------------------------------------------------------- + initialize comm buffers and other data structs local to CommTiled +------------------------------------------------------------------------- */ + +void CommTiled::init_buffers() +{ + maxsend = maxrecv = BUFMIN; + grow_send(maxsend,2); + grow_recv(maxrecv,1); + + maxoverlap = 0; // Note this may skip growing multi arrays, will call again in init() maxswap = 6; @@ -115,6 +145,11 @@ void CommTiled::init_buffers() void CommTiled::init() { + if (!init_buffers_flag) { + init_buffers(); + init_buffers_flag = 1; + } + Comm::init(); // cannot set nswap in init_buffers() b/c @@ -2238,12 +2273,15 @@ void CommTiled::grow_send(int n, int flag) } /* ---------------------------------------------------------------------- - free/malloc the size of the recv buffer as needed with BUFFACTOR + free/malloc the size of the recv buffer as needed + flag = 0, realloc with BUFFACTOR + flag = 1, free/malloc w/out BUFFACTOR ------------------------------------------------------------------------- */ -void CommTiled::grow_recv(int n) +void CommTiled::grow_recv(int n, int flag) { - maxrecv = static_cast (BUFFACTOR * n); + if (flag) maxrecv = n; + else maxrecv = static_cast (BUFFACTOR * n); memory->destroy(buf_recv); memory->create(buf_recv,maxrecv,"comm:buf_recv"); } @@ -2430,8 +2468,10 @@ void CommTiled::deallocate_swap(int n) delete [] maxsendlist[i]; - for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); - delete [] sendlist[i]; + if (sendlist && sendlist[i]) { + for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); + delete [] sendlist[i]; + } } delete [] sendproc; diff --git a/src/comm_tiled.h b/src/comm_tiled.h index c9434e61641..857cddf0338 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -51,7 +51,7 @@ class CommTiled : public Comm { double memory_usage() override; - private: + protected: int nswap; // # of swaps to perform = 2*dim int maxswap; // largest nswap can be = 6 @@ -117,8 +117,9 @@ class CommTiled : public Comm { double *sublo, *subhi; int dimension; - // NOTE: init_buffers is called from a constructor and must not be made virtual + void init_pointers(); void init_buffers(); + int init_buffers_flag; // box drop and other functions @@ -145,11 +146,11 @@ class CommTiled : public Comm { int point_drop_tiled_recurse(double *, int, int); int closer_subbox_edge(int, double *); - void grow_send(int, int); // reallocate send buffer - void grow_recv(int); // free/allocate recv buffer - void grow_list(int, int, int); // reallocate sendlist for one swap/proc + virtual void grow_send(int, int); // reallocate send buffer + virtual void grow_recv(int, int flag = 0); // free/allocate recv buffer + virtual void grow_list(int, int, int); // reallocate sendlist for one swap/proc void allocate_swap(int); // allocate swap arrays - void grow_swap_send(int, int, int); // grow swap arrays for send and recv + virtual void grow_swap_send(int, int, int); // grow swap arrays for send and recv void grow_swap_send_multi(int, int); // grow multi swap arrays for send and recv void grow_swap_recv(int, int); void deallocate_swap(int); // deallocate swap arrays diff --git a/src/compute.cpp b/src/compute.cpp index 2bd1544fd75..a12373fd518 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -26,8 +26,7 @@ using namespace LAMMPS_NS; -#define DELTA 4 -#define BIG MAXTAGINT +static constexpr int DELTA = 4; // allocate space for static class instance variable and initialize it @@ -83,7 +82,7 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : extra_dof = domain->dimension; dynamic_user = 0; - fix_dof = 0; + fix_dof = 0.0; // setup list of timesteps diff --git a/src/compute.h b/src/compute.h index 8ae01a4469c..6956c3ae990 100644 --- a/src/compute.h +++ b/src/compute.h @@ -178,7 +178,7 @@ class Compute : protected Pointers { double natoms_temp; // # of atoms used for temperature calculation double extra_dof; // extra DOF for temperature computes - int fix_dof; // DOF due to fixes + double fix_dof; // DOF due to fixes int dynamic; // recount atoms for temperature computes int dynamic_user; // user request for temp compute to be dynamic diff --git a/src/compute_aggregate_atom.cpp b/src/compute_aggregate_atom.cpp index 5a489092b70..8c6f7165a2e 100644 --- a/src/compute_aggregate_atom.cpp +++ b/src/compute_aggregate_atom.cpp @@ -31,7 +31,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/compute_angle_local.cpp b/src/compute_angle_local.cpp index 3600562664e..3e8b15fd64b 100644 --- a/src/compute_angle_local.cpp +++ b/src/compute_angle_local.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 10000 +static constexpr int DELTA = 10000; enum{THETA,ENG,VARIABLE}; diff --git a/src/compute_bond_local.cpp b/src/compute_bond_local.cpp index f2603e8cdd3..9ed591f73fc 100644 --- a/src/compute_bond_local.cpp +++ b/src/compute_bond_local.cpp @@ -31,8 +31,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 -#define EPSILON 1.0e-12 +static constexpr int DELTA = 10000; enum{DIST,DX,DY,DZ,VELVIB,OMEGA,ENGTRANS,ENGVIB,ENGROT,ENGPOT,FORCE,FX,FY,FZ,VARIABLE,BN}; @@ -375,13 +374,6 @@ int ComputeBondLocal::compute_bonds(int flag) engrot = 0.5 * inertia * omegasq; - // sanity check: engtotal = engtrans + engvib + engrot - - //engtot = 0.5 * (mass1*MathExtra::lensq3(v[atom1]) + - // mass2*MathExtra::lensq3(v[atom2])); - //if (fabs(engtot-engtrans-engvib-engrot) > EPSILON) - // error->one(FLERR,"Sanity check on 3 energy components failed"); - // scale energies by units mvv2e = force->mvv2e; diff --git a/src/compute_centroid_stress_atom.cpp b/src/compute_centroid_stress_atom.cpp index 5226af19985..c6854737a8a 100644 --- a/src/compute_centroid_stress_atom.cpp +++ b/src/compute_centroid_stress_atom.cpp @@ -303,8 +303,8 @@ void ComputeCentroidStressAtom::compute_peratom() // add in per-atom contributions from relevant fixes // skip if vatom = nullptr // possible during setup phase if fix has not initialized its vatom yet - // e.g. fix ave/spatial defined before fix shake, - // and fix ave/spatial uses a per-atom stress from this compute as input + // e.g. fix ave/chunk defined before fix shake, + // and fix ave/chunk uses a per-atom stress from this compute as input // fix styles are CENTROID_SAME, CENTROID_AVAIL or CENTROID_NOTAVAIL if (fixflag) { diff --git a/src/compute_chunk_atom.cpp b/src/compute_chunk_atom.cpp index fc70a3246f3..a1d595a086c 100644 --- a/src/compute_chunk_atom.cpp +++ b/src/compute_chunk_atom.cpp @@ -46,7 +46,7 @@ enum { NODISCARD, MIXED, YESDISCARD }; enum { ONCE, NFREQ, EVERY }; // used in several files enum { LIMITMAX, LIMITEXACT }; -#define IDMAX (1024 * 1024) +static constexpr int IDMAX = (1024 * 1024); /* ---------------------------------------------------------------------- */ diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp index ba0f263747c..0021d32e2c8 100644 --- a/src/compute_cluster_atom.cpp +++ b/src/compute_cluster_atom.cpp @@ -25,7 +25,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/compute_cna_atom.cpp b/src/compute_cna_atom.cpp index a09a671c07c..b92dca8f862 100644 --- a/src/compute_cna_atom.cpp +++ b/src/compute_cna_atom.cpp @@ -29,7 +29,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/compute_count_type.cpp b/src/compute_count_type.cpp index 3d4815f9ffe..d430b23e11f 100644 --- a/src/compute_count_type.cpp +++ b/src/compute_count_type.cpp @@ -14,12 +14,12 @@ #include "compute_count_type.h" #include "atom.h" -#include "domain.h" #include "error.h" #include "force.h" -#include "group.h" #include "update.h" +#include + using namespace LAMMPS_NS; enum { ATOM, BOND, ANGLE, DIHEDRAL, IMPROPER }; diff --git a/src/compute_dihedral_local.cpp b/src/compute_dihedral_local.cpp index a6bcbccf00d..894d0e33e41 100644 --- a/src/compute_dihedral_local.cpp +++ b/src/compute_dihedral_local.cpp @@ -30,10 +30,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 10000 -#define SMALL 0.001 +static constexpr int DELTA = 10000; -enum{PHI,VARIABLE}; +enum { PHI, VARIABLE }; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_dipole_chunk.h b/src/compute_dipole_chunk.h index 603e6a43533..3ed875283f2 100644 --- a/src/compute_dipole_chunk.h +++ b/src/compute_dipole_chunk.h @@ -23,7 +23,6 @@ ComputeStyle(dipole/chunk,ComputeDipoleChunk); #include "compute_chunk.h" namespace LAMMPS_NS { -class Fix; class ComputeDipoleChunk : public ComputeChunk { public: @@ -43,8 +42,6 @@ class ComputeDipoleChunk : public ComputeChunk { void allocate() override; }; - } // namespace LAMMPS_NS - #endif #endif diff --git a/src/compute_erotate_sphere.cpp b/src/compute_erotate_sphere.cpp index b020fc4e0e0..cb92b737318 100644 --- a/src/compute_erotate_sphere.cpp +++ b/src/compute_erotate_sphere.cpp @@ -20,7 +20,7 @@ using namespace LAMMPS_NS; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +static constexpr double INERTIA = 0.4; // moment of inertia prefactor for sphere /* ---------------------------------------------------------------------- */ @@ -34,7 +34,7 @@ ComputeERotateSphere::ComputeERotateSphere(LAMMPS *lmp, int narg, char **arg) : // error check - if (!atom->sphere_flag) error->all(FLERR, "Compute erotate/sphere requires atom style sphere"); + if (!atom->omega_flag) error->all(FLERR, "Compute erotate/sphere requires atom attribute omega"); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_erotate_sphere_atom.cpp b/src/compute_erotate_sphere_atom.cpp index 3ec0f402a87..fa1ce8a180c 100644 --- a/src/compute_erotate_sphere_atom.cpp +++ b/src/compute_erotate_sphere_atom.cpp @@ -12,36 +12,35 @@ ------------------------------------------------------------------------- */ #include "compute_erotate_sphere_atom.h" -#include + #include "atom.h" -#include "update.h" -#include "modify.h" #include "comm.h" +#include "error.h" #include "force.h" #include "memory.h" -#include "error.h" +#include "modify.h" +#include "update.h" using namespace LAMMPS_NS; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +static constexpr double INERTIA = 0.4; // moment of inertia prefactor for sphere /* ---------------------------------------------------------------------- */ -ComputeErotateSphereAtom:: -ComputeErotateSphereAtom(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - erot(nullptr) +ComputeErotateSphereAtom::ComputeErotateSphereAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), erot(nullptr) { - if (narg != 3) - error->all(FLERR,"Illegal compute erotate/sphere//atom command"); + if (narg != 3) error->all(FLERR, "Illegal compute erotate/sphere//atom command"); peratom_flag = 1; size_peratom_cols = 0; // error check - if (!atom->sphere_flag) - error->all(FLERR,"Compute erotate/sphere/atom requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR, "Compute erotate/sphere/atom requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR, "Compute erotate/sphere/atom requires atom attribute radius"); nmax = 0; } @@ -74,7 +73,7 @@ void ComputeErotateSphereAtom::compute_peratom() if (atom->nmax > nmax) { memory->destroy(erot); nmax = atom->nmax; - memory->create(erot,nmax,"erotate/sphere/atom:erot"); + memory->create(erot, nmax, "erotate/sphere/atom:erot"); vector_atom = erot; } @@ -89,10 +88,12 @@ void ComputeErotateSphereAtom::compute_peratom() for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - erot[i] = (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] + - omega[i][2]*omega[i][2]) * radius[i]*radius[i]*rmass[i]; + erot[i] = + (omega[i][0] * omega[i][0] + omega[i][1] * omega[i][1] + omega[i][2] * omega[i][2]) * + radius[i] * radius[i] * rmass[i]; erot[i] *= pfactor; - } else erot[i] = 0.0; + } else + erot[i] = 0.0; } } @@ -102,6 +103,6 @@ void ComputeErotateSphereAtom::compute_peratom() double ComputeErotateSphereAtom::memory_usage() { - double bytes = (double)nmax * sizeof(double); + double bytes = (double) nmax * sizeof(double); return bytes; } diff --git a/src/compute_group_group.cpp b/src/compute_group_group.cpp index 31bbc815970..afc825ac3c9 100644 --- a/src/compute_group_group.cpp +++ b/src/compute_group_group.cpp @@ -37,7 +37,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define SMALL 0.00001 +static constexpr double SMALL = 0.00001; enum { OFF, INTER, INTRA }; diff --git a/src/compute_heat_flux.cpp b/src/compute_heat_flux.cpp index 55fa27cafed..64cc8e69f38 100644 --- a/src/compute_heat_flux.cpp +++ b/src/compute_heat_flux.cpp @@ -19,21 +19,20 @@ #include "compute_heat_flux.h" -#include #include "atom.h" -#include "update.h" -#include "modify.h" -#include "force.h" #include "error.h" +#include "force.h" +#include "modify.h" +#include "update.h" using namespace LAMMPS_NS; - /* ---------------------------------------------------------------------- */ ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - id_ke(nullptr), id_pe(nullptr), id_stress(nullptr) + id_ke(nullptr), id_pe(nullptr), id_stress(nullptr), + c_ke(nullptr), c_pe(nullptr), c_stress(nullptr) { if (narg != 6) error->all(FLERR,"Illegal compute heat/flux command"); @@ -45,22 +44,24 @@ ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) : // ensure they are valid for these computations id_ke = utils::strdup(arg[3]); + auto ike = modify->get_compute_by_id(id_ke); + if (!ike) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_ke); + if (!utils::strmatch(ike->style,"^ke/atom")) + error->all(FLERR,"Compute heat/flux compute ID {} does not compute ke/atom", id_ke); + id_pe = utils::strdup(arg[4]); - id_stress = utils::strdup(arg[5]); + auto ipe = modify->get_compute_by_id(id_pe); + if (!ipe) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_pe); + if (ipe->peatomflag == 0) + error->all(FLERR,"Compute heat/flux compute ID {} does not compute pe/atom", id_pe); - int ike = modify->find_compute(id_ke); - int ipe = modify->find_compute(id_pe); - int istress = modify->find_compute(id_stress); - if (ike < 0 || ipe < 0 || istress < 0) - error->all(FLERR,"Could not find compute heat/flux compute ID"); - if (strcmp(modify->compute[ike]->style,"ke/atom") != 0) - error->all(FLERR,"Compute heat/flux compute ID does not compute ke/atom"); - if (modify->compute[ipe]->peatomflag == 0) - error->all(FLERR,"Compute heat/flux compute ID does not compute pe/atom"); - if (modify->compute[istress]->pressatomflag != 1 - && modify->compute[istress]->pressatomflag != 2) + id_stress = utils::strdup(arg[5]); + auto istress = modify->get_compute_by_id(id_stress); + if (!istress) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_stress); + if ((istress->pressatomflag != 1) && (istress->pressatomflag != 2)) error->all(FLERR, - "Compute heat/flux compute ID does not compute stress/atom or centroid/stress/atom"); + "Compute heat/flux compute ID {} does not compute stress/atom or " + "centroid/stress/atom", id_stress); vector = new double[size_vector]; } @@ -69,10 +70,10 @@ ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) : ComputeHeatFlux::~ComputeHeatFlux() { - delete [] id_ke; - delete [] id_pe; - delete [] id_stress; - delete [] vector; + delete[] id_ke; + delete[] id_pe; + delete[] id_stress; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -81,15 +82,12 @@ void ComputeHeatFlux::init() { // error checks - int ike = modify->find_compute(id_ke); - int ipe = modify->find_compute(id_pe); - int istress = modify->find_compute(id_stress); - if (ike < 0 || ipe < 0 || istress < 0) - error->all(FLERR,"Could not find compute heat/flux compute ID"); - - c_ke = modify->compute[ike]; - c_pe = modify->compute[ipe]; - c_stress = modify->compute[istress]; + c_ke = modify->get_compute_by_id(id_ke); + if (!c_ke) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_ke); + c_pe = modify->get_compute_by_id(id_pe); + if (!c_pe) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_pe); + c_stress = modify->get_compute_by_id(id_stress); + if (!c_stress) error->all(FLERR,"Could not find compute heat/flux compute ID {}", id_stress); } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_improper_local.cpp b/src/compute_improper_local.cpp index 48070a4f7cc..a58f4f4d0d8 100644 --- a/src/compute_improper_local.cpp +++ b/src/compute_improper_local.cpp @@ -28,9 +28,9 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define DELTA 10000 +static constexpr int DELTA = 10000; -#define SMALL 0.001 +static constexpr double SMALL = 0.001; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_ke_atom.cpp b/src/compute_ke_atom.cpp index 9a329232b33..e8ab1b8b251 100644 --- a/src/compute_ke_atom.cpp +++ b/src/compute_ke_atom.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include "compute_ke_atom.h" + #include "atom.h" #include "comm.h" #include "error.h" @@ -19,7 +20,6 @@ #include "memory.h" #include "modify.h" #include "update.h" -#include using namespace LAMMPS_NS; diff --git a/src/compute_omega_chunk.cpp b/src/compute_omega_chunk.cpp index 3c345ab7a40..1a8852b1442 100644 --- a/src/compute_omega_chunk.cpp +++ b/src/compute_omega_chunk.cpp @@ -23,7 +23,7 @@ using namespace LAMMPS_NS; -#define EPSILON 1.0e-6 +static constexpr double EPSILON = 1.0e-6; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_pair.cpp b/src/compute_pair.cpp index e789adbc89d..1cb22a006f8 100644 --- a/src/compute_pair.cpp +++ b/src/compute_pair.cpp @@ -75,7 +75,7 @@ ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : pair = force->pair_match(pstyle, 1, nsub); } - if (!pair) error->all(FLERR, "Unrecognized pair style {} in compute pair command", pstyle); + if (!pair) error->all(FLERR, "Unused pair style {} in compute pair command", pstyle); npair = pair->nextra; if (npair) { diff --git a/src/compute_pair_local.cpp b/src/compute_pair_local.cpp index 5dad405bc36..88991f74819 100644 --- a/src/compute_pair_local.cpp +++ b/src/compute_pair_local.cpp @@ -28,7 +28,7 @@ using namespace LAMMPS_NS; -#define DELTA 10000 +static constexpr int DELTA = 10000; enum { DIST, ENG, FORCE, FX, FY, FZ, PN, DX, DY, DZ }; enum { TYPE, RADIUS }; diff --git a/src/compute_property_atom.cpp b/src/compute_property_atom.cpp index c3c101b995a..b95b7267dcb 100644 --- a/src/compute_property_atom.cpp +++ b/src/compute_property_atom.cpp @@ -205,6 +205,14 @@ ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) : if (!atom->omega_flag) error->all(FLERR,"Compute property/atom {} is not available", arg[iarg]); pack_choice[i] = &ComputePropertyAtom::pack_omegaz; + } else if (strcmp(arg[iarg],"temperature") == 0) { + if (!atom->temperature_flag) + error->all(FLERR,"Compute property/atom {} is not available", arg[iarg]); + pack_choice[i] = &ComputePropertyAtom::pack_temperature; + } else if (strcmp(arg[iarg],"heatflow") == 0) { + if (!atom->heatflow_flag) + error->all(FLERR,"Compute property/atom {} is not available", arg[iarg]); + pack_choice[i] = &ComputePropertyAtom::pack_heatflow; } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Compute property/atom {} is not available", arg[iarg]); @@ -1213,6 +1221,36 @@ void ComputePropertyAtom::pack_omegaz(int n) /* ---------------------------------------------------------------------- */ +void ComputePropertyAtom::pack_temperature(int n) +{ + double *temperature = atom->temperature; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = temperature[i]; + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePropertyAtom::pack_heatflow(int n) +{ + double *heatflow = atom->heatflow; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = heatflow[i]; + else buf[n] = 0.0; + n += nvalues; + } +} + +/* ---------------------------------------------------------------------- */ + void ComputePropertyAtom::pack_angmomx(int n) { double **angmom = atom->angmom; diff --git a/src/compute_property_atom.h b/src/compute_property_atom.h index 034b2901c29..d4f4db564fb 100644 --- a/src/compute_property_atom.h +++ b/src/compute_property_atom.h @@ -95,6 +95,8 @@ class ComputePropertyAtom : public Compute { void pack_omegax(int); void pack_omegay(int); void pack_omegaz(int); + void pack_temperature(int); + void pack_heatflow(int); void pack_angmomx(int); void pack_angmomy(int); void pack_angmomz(int); diff --git a/src/compute_property_grid.cpp b/src/compute_property_grid.cpp index 17f9689bf6a..7624a3b4a97 100644 --- a/src/compute_property_grid.cpp +++ b/src/compute_property_grid.cpp @@ -28,8 +28,6 @@ using namespace LAMMPS_NS; enum { LOW, CTR }; enum { UNSCALED, SCALED }; -#define DELTA 10000 - /* ---------------------------------------------------------------------- */ ComputePropertyGrid::ComputePropertyGrid(LAMMPS *lmp, int narg, char **arg) : diff --git a/src/compute_property_local.cpp b/src/compute_property_local.cpp index 87517a3e057..64f38591173 100644 --- a/src/compute_property_local.cpp +++ b/src/compute_property_local.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; enum { NONE, NEIGH, PAIR, BOND, ANGLE, DIHEDRAL, IMPROPER }; enum { TYPE, RADIUS }; -#define DELTA 10000 +static constexpr int DELTA = 10000; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp index 17fe450fe5e..89f3c91017d 100644 --- a/src/compute_rdf.cpp +++ b/src/compute_rdf.cpp @@ -46,7 +46,7 @@ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) : hist(nullptr), histall(nullptr), typecount(nullptr), icount(nullptr), jcount(nullptr), duplicates(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal compute rdf command"); + if (narg < 4) utils::missing_cmd_args(FLERR,"compute rdf", error); array_flag = 1; extarray = 0; @@ -67,12 +67,14 @@ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"cutoff") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal compute rdf command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"compute rdf cutoff", error); + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute rdf with custom cutoff requires neighbor style 'bin' or 'nsq'"); cutoff_user = utils::numeric(FLERR,arg[iarg+1],false,lmp); if (cutoff_user <= 0.0) cutflag = 0; else cutflag = 1; iarg += 2; - } else error->all(FLERR,"Illegal compute rdf command"); + } else error->all(FLERR,"Unknown compute rdf keyword {}", arg[iarg]); } // pairwise args @@ -94,7 +96,7 @@ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) : jlo = new int[npairs]; jhi = new int[npairs]; - if (nargpair == 0) { + if (!nargpair) { ilo[0] = 1; ihi[0] = ntypes; jlo[0] = 1; jhi[0] = ntypes; } else { @@ -139,17 +141,17 @@ ComputeRDF::~ComputeRDF() { memory->destroy(rdfpair); memory->destroy(nrdfpair); - delete [] ilo; - delete [] ihi; - delete [] jlo; - delete [] jhi; + delete[] ilo; + delete[] ihi; + delete[] jlo; + delete[] jhi; memory->destroy(hist); memory->destroy(histall); memory->destroy(array); - delete [] typecount; - delete [] icount; - delete [] jcount; - delete [] duplicates; + delete[] typecount; + delete[] icount; + delete[] jcount; + delete[] duplicates; } /* ---------------------------------------------------------------------- */ @@ -158,8 +160,7 @@ void ComputeRDF::init() { if (!force->pair && !cutflag) - error->all(FLERR,"Compute rdf requires a pair style be defined " - "or cutoff specified"); + error->all(FLERR,"Compute rdf requires a pair style or an explicit cutoff"); if (cutflag) { double skin = neighbor->skin; @@ -205,7 +206,11 @@ void ComputeRDF::init() // than cutoff_user apart, just like a normal neighbor list does auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); - if (cutflag) req->set_cutoff(mycutneigh); + if (cutflag) { + if ((neighbor->style == Neighbor::MULTI) || (neighbor->style == Neighbor::MULTI_OLD)) + error->all(FLERR, "Compute rdf with custom cutoff requires neighbor style 'bin' or 'nsq'"); + req->set_cutoff(mycutneigh); + } } /* ---------------------------------------------------------------------- */ @@ -254,7 +259,7 @@ void ComputeRDF::init_norm() for (i = 0; i < npairs; i++) jcount[i] = scratch[i]; MPI_Allreduce(duplicates,scratch,npairs,MPI_INT,MPI_SUM,world); for (i = 0; i < npairs; i++) duplicates[i] = scratch[i]; - delete [] scratch; + delete[] scratch; } /* ---------------------------------------------------------------------- */ diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index b2968042482..ee94c2d9a7a 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; //---------------------------------------------------------------- diff --git a/src/compute_reduce_chunk.cpp b/src/compute_reduce_chunk.cpp index 51781eac7b1..9ba0e30a8d3 100644 --- a/src/compute_reduce_chunk.cpp +++ b/src/compute_reduce_chunk.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; enum { SUM, MINN, MAXX }; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index 55824b1ce55..3560570163e 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -54,11 +54,11 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : id_temp = nullptr; else { id_temp = utils::strdup(arg[3]); - - int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all(FLERR, "Could not find compute stress/atom temperature ID"); - if (modify->compute[icompute]->tempflag == 0) - error->all(FLERR, "Compute stress/atom temperature ID does not compute temperature"); + auto icompute = modify->get_compute_by_id(id_temp); + if (!icompute) + error->all(FLERR, "Could not find compute stress/atom temperature compute {}", id_temp); + if (icompute->tempflag == 0) + error->all(FLERR, "Compute stress/atom compute {} does not compute temperature", id_temp); } // process optional args @@ -122,9 +122,9 @@ void ComputeStressAtom::init() // fixes could have changed or compute_modify could have changed it if (id_temp) { - int icompute = modify->find_compute(id_temp); - if (icompute < 0) error->all(FLERR, "Could not find compute stress/atom temperature ID"); - temperature = modify->compute[icompute]; + temperature = modify->get_compute_by_id(id_temp); + if (!temperature) + error->all(FLERR, "Could not find compute stress/atom temperature compute {}", id_temp); if (temperature->tempbias) biasflag = BIAS; else @@ -216,8 +216,8 @@ void ComputeStressAtom::compute_peratom() // add in per-atom contributions from relevant fixes // skip if vatom = nullptr // possible during setup phase if fix has not initialized its vatom yet - // e.g. fix ave/spatial defined before fix shake, - // and fix ave/spatial uses a per-atom stress from this compute as input + // e.g. fix ave/chunk defined before fix shake, + // and fix ave/chunk uses a per-atom stress from this compute as input if (fixflag) { for (auto &ifix : modify->get_fix_list()) diff --git a/src/compute_temp_sphere.cpp b/src/compute_temp_sphere.cpp index 0cfc9a93bad..2294177e6f8 100644 --- a/src/compute_temp_sphere.cpp +++ b/src/compute_temp_sphere.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -14,28 +13,28 @@ #include "compute_temp_sphere.h" -#include #include "atom.h" -#include "update.h" -#include "force.h" #include "domain.h" -#include "modify.h" -#include "group.h" #include "error.h" +#include "force.h" +#include "group.h" +#include "modify.h" +#include "update.h" + +#include using namespace LAMMPS_NS; -enum{ROTATE,ALL}; +enum { ROTATE, ALL }; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +static constexpr double INERTIA = 0.4; // moment of inertia prefactor for sphere /* ---------------------------------------------------------------------- */ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - id_bias(nullptr) + Compute(lmp, narg, arg), id_bias(nullptr) { - if (narg < 3) error->all(FLERR,"Illegal compute temp/sphere command"); + if (narg < 3) utils::missing_cmd_args(FLERR, "compute temp/sphere", error); scalar_flag = vector_flag = 1; size_vector = 6; @@ -48,20 +47,22 @@ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { - if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/sphere command"); + if (strcmp(arg[iarg], "bias") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "compute temp/sphere bias", error); tempbias = 1; - id_bias = utils::strdup(arg[iarg+1]); + id_bias = utils::strdup(arg[iarg + 1]); iarg += 2; - } else if (strcmp(arg[iarg],"dof") == 0) { - if (iarg+2 > narg) - error->all(FLERR,"Illegal compute temp/sphere command"); - if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE; - else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL; - else error->all(FLERR,"Illegal compute temp/sphere command"); + } else if (strcmp(arg[iarg], "dof") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "compute temp/sphere dof", error); + if (strcmp(arg[iarg + 1], "rotate") == 0) + mode = ROTATE; + else if (strcmp(arg[iarg + 1], "all") == 0) + mode = ALL; + else + error->all(FLERR, "Unknown compute temp/sphere dof keyword {}", arg[iarg + 1]); iarg += 2; - } else error->all(FLERR,"Illegal compute temp/sphere command"); + } else + error->all(FLERR, "Unknown compute temp/sphere keyword {}", arg[iarg]); } // when computing only the rotational temperature, @@ -73,16 +74,18 @@ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) : // error checks - if (!atom->sphere_flag) - error->all(FLERR,"Compute temp/sphere requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR,"Compute temp/sphere requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR,"Compute temp/sphere requires atom attribute radius"); } /* ---------------------------------------------------------------------- */ ComputeTempSphere::~ComputeTempSphere() { - delete [] id_bias; - delete [] vector; + delete[] id_bias; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -90,18 +93,16 @@ ComputeTempSphere::~ComputeTempSphere() void ComputeTempSphere::init() { if (tempbias) { - int i = modify->find_compute(id_bias); - if (i < 0) - error->all(FLERR,"Could not find compute ID for temperature bias"); - tbias = modify->compute[i]; - if (tbias->tempflag == 0) - error->all(FLERR,"Bias compute does not calculate temperature"); - if (tbias->tempbias == 0) - error->all(FLERR,"Bias compute does not calculate a velocity bias"); + tbias = modify->get_compute_by_id(id_bias); + if (!tbias) error->all(FLERR, "Could not find compute {} for temperature bias", id_bias); + if (tbias->tempflag == 0) error->all(FLERR, "Bias compute does not calculate temperature"); + if (tbias->tempbias == 0) error->all(FLERR, "Bias compute does not calculate a velocity bias"); if (tbias->igroup != igroup) - error->all(FLERR,"Bias compute group does not match compute group"); - if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2; - else tempbias = 1; + error->all(FLERR, "Bias compute group does not match compute group"); + if (strcmp(tbias->style, "temp/region") == 0) + tempbias = 2; + else + tempbias = 1; // init and setup bias compute because // this compute's setup()->dof_compute() may be called first @@ -124,7 +125,7 @@ void ComputeTempSphere::setup() void ComputeTempSphere::dof_compute() { - int count,count_all; + int count, count_all; adjust_dof_fix(); natoms_temp = group->count(igroup); @@ -146,8 +147,10 @@ void ComputeTempSphere::dof_compute() if (radius[i] == 0.0) { if (mode == ALL) count += 3; } else { - if (mode == ALL) count += 6; - else count += 3; + if (mode == ALL) + count += 6; + else + count += 3; } } } else { @@ -156,13 +159,15 @@ void ComputeTempSphere::dof_compute() if (radius[i] == 0.0) { if (mode == ALL) count += 2; } else { - if (mode == ALL) count += 3; - else count += 1; + if (mode == ALL) + count += 3; + else + count += 1; } } } - MPI_Allreduce(&count,&count_all,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&count, &count_all, 1, MPI_INT, MPI_SUM, world); dof = count_all; // additional adjustments to dof @@ -181,8 +186,10 @@ void ComputeTempSphere::dof_compute() if (radius[i] == 0.0) { if (mode == ALL) count += 3; } else { - if (mode == ALL) count += 6; - else count += 3; + if (mode == ALL) + count += 6; + else + count += 3; } } } @@ -193,20 +200,24 @@ void ComputeTempSphere::dof_compute() if (radius[i] == 0.0) { if (mode == ALL) count += 2; } else { - if (mode == ALL) count += 3; - else count += 1; + if (mode == ALL) + count += 3; + else + count += 1; } } } } - MPI_Allreduce(&count,&count_all,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&count, &count_all, 1, MPI_INT, MPI_SUM, world); dof -= count_all; } dof -= extra_dof + fix_dof; - if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); - else tfactor = 0.0; + if (dof > 0) + tfactor = force->mvv2e / (dof * force->boltz); + else + tfactor = 0.0; } /* ---------------------------------------------------------------------- */ @@ -231,6 +242,8 @@ double ComputeTempSphere::compute_scalar() double t = 0.0; + // clang-format off + if (mode == ALL) { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -244,13 +257,14 @@ double ComputeTempSphere::compute_scalar() t += (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] + omega[i][2]*omega[i][2]) * INERTIA*rmass[i]*radius[i]*radius[i]; } + // clang-format on if (tempbias) tbias->restore_bias_all(); - MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&t, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); if (dynamic || tempbias == 2) dof_compute(); if (dof < 0.0 && natoms_temp > 0.0) - error->all(FLERR,"Temperature compute degrees of freedom < 0"); + error->all(FLERR, "Temperature compute degrees of freedom < 0"); scalar *= tfactor; return scalar; } @@ -275,44 +289,44 @@ void ComputeTempSphere::compute_vector() // point particles will not contribute rotation due to radius = 0 - double massone,inertiaone,t[6]; + double massone, inertiaone, t[6]; for (auto &ti : t) ti = 0.0; if (mode == ALL) { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { massone = rmass[i]; - t[0] += massone * v[i][0]*v[i][0]; - t[1] += massone * v[i][1]*v[i][1]; - t[2] += massone * v[i][2]*v[i][2]; - t[3] += massone * v[i][0]*v[i][1]; - t[4] += massone * v[i][0]*v[i][2]; - t[5] += massone * v[i][1]*v[i][2]; - - inertiaone = INERTIA*rmass[i]*radius[i]*radius[i]; - t[0] += inertiaone * omega[i][0]*omega[i][0]; - t[1] += inertiaone * omega[i][1]*omega[i][1]; - t[2] += inertiaone * omega[i][2]*omega[i][2]; - t[3] += inertiaone * omega[i][0]*omega[i][1]; - t[4] += inertiaone * omega[i][0]*omega[i][2]; - t[5] += inertiaone * omega[i][1]*omega[i][2]; + t[0] += massone * v[i][0] * v[i][0]; + t[1] += massone * v[i][1] * v[i][1]; + t[2] += massone * v[i][2] * v[i][2]; + t[3] += massone * v[i][0] * v[i][1]; + t[4] += massone * v[i][0] * v[i][2]; + t[5] += massone * v[i][1] * v[i][2]; + + inertiaone = INERTIA * rmass[i] * radius[i] * radius[i]; + t[0] += inertiaone * omega[i][0] * omega[i][0]; + t[1] += inertiaone * omega[i][1] * omega[i][1]; + t[2] += inertiaone * omega[i][2] * omega[i][2]; + t[3] += inertiaone * omega[i][0] * omega[i][1]; + t[4] += inertiaone * omega[i][0] * omega[i][2]; + t[5] += inertiaone * omega[i][1] * omega[i][2]; } } else { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - inertiaone = INERTIA*rmass[i]*radius[i]*radius[i]; - t[0] += inertiaone * omega[i][0]*omega[i][0]; - t[1] += inertiaone * omega[i][1]*omega[i][1]; - t[2] += inertiaone * omega[i][2]*omega[i][2]; - t[3] += inertiaone * omega[i][0]*omega[i][1]; - t[4] += inertiaone * omega[i][0]*omega[i][2]; - t[5] += inertiaone * omega[i][1]*omega[i][2]; + inertiaone = INERTIA * rmass[i] * radius[i] * radius[i]; + t[0] += inertiaone * omega[i][0] * omega[i][0]; + t[1] += inertiaone * omega[i][1] * omega[i][1]; + t[2] += inertiaone * omega[i][2] * omega[i][2]; + t[3] += inertiaone * omega[i][0] * omega[i][1]; + t[4] += inertiaone * omega[i][0] * omega[i][2]; + t[5] += inertiaone * omega[i][1] * omega[i][2]; } } if (tempbias) tbias->restore_bias_all(); - MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(t, vector, 6, MPI_DOUBLE, MPI_SUM, world); for (int i = 0; i < 6; i++) vector[i] *= force->mvv2e; } @@ -322,7 +336,7 @@ void ComputeTempSphere::compute_vector() void ComputeTempSphere::remove_bias(int i, double *v) { - tbias->remove_bias(i,v); + tbias->remove_bias(i, v); } /* ---------------------------------------------------------------------- @@ -331,7 +345,7 @@ void ComputeTempSphere::remove_bias(int i, double *v) void ComputeTempSphere::remove_bias_thr(int i, double *v, double *b) { - tbias->remove_bias_thr(i,v,b); + tbias->remove_bias_thr(i, v, b); } /* ---------------------------------------------------------------------- @@ -341,7 +355,7 @@ void ComputeTempSphere::remove_bias_thr(int i, double *v, double *b) void ComputeTempSphere::restore_bias(int i, double *v) { - tbias->restore_bias(i,v); + tbias->restore_bias(i, v); } /* ---------------------------------------------------------------------- @@ -351,5 +365,5 @@ void ComputeTempSphere::restore_bias(int i, double *v) void ComputeTempSphere::restore_bias_thr(int i, double *v, double *b) { - tbias->restore_bias_thr(i,v,b); + tbias->restore_bias_thr(i, v, b); } diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 75c30bd0b87..fd1d535792e 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -54,6 +54,8 @@ static constexpr double INV_P_CONST = 0.7548777; static constexpr double INV_SQ_P_CONST = 0.5698403; static constexpr int DEFAULT_MAXTRY = 1000; +#define EPS_ZCOORD 1.0e-12 + enum { BOX, REGION, SINGLE, RANDOM, MESH }; enum { ATOM, MOLECULE }; enum { COUNT, INSERT, INSERT_SELECTED }; @@ -111,6 +113,8 @@ void CreateAtoms::command(int narg, char **arg) xone[0] = utils::numeric(FLERR, arg[2], false, lmp); xone[1] = utils::numeric(FLERR, arg[3], false, lmp); xone[2] = utils::numeric(FLERR, arg[4], false, lmp); + if (domain->dimension == 2 && xone[2] != 0.0) + error->all(FLERR,"Create_atoms single for 2d simulation requires z coord = 0.0"); iarg = 5; } else if (strcmp(arg[1], "random") == 0) { style = RANDOM; @@ -152,9 +156,10 @@ void CreateAtoms::command(int narg, char **arg) overlapflag = 0; maxtry = DEFAULT_MAXTRY; radscale = 1.0; - radthresh = domain->lattice->xlattice; mesh_style = BISECTION; + radthresh = 1.0; mesh_density = 1.0; + nbasis = domain->lattice->nbasis; basistype = new int[nbasis]; for (int i = 0; i < nbasis; i++) basistype[i] = ntype; @@ -179,7 +184,8 @@ void CreateAtoms::command(int narg, char **arg) if (imol == -1) error->all(FLERR, "Molecule template ID {} for create_atoms does not exist", arg[iarg + 1]); if ((atom->molecules[imol]->nset > 1) && (comm->me == 0)) - error->warning(FLERR, "Molecule template for create_atoms has multiple molecules"); + error->warning(FLERR, "Molecule template for create_atoms has multiple molecule sets. " + "Only the first set will be used."); mode = MOLECULE; onemol = atom->molecules[imol]; molseed = utils::inumeric(FLERR, arg[iarg + 2], false, lmp); @@ -300,6 +306,8 @@ void CreateAtoms::command(int narg, char **arg) error->all(FLERR, "Invalid atom type in create_atoms mol command"); if (onemol->tag_require && !atom->tag_enable) error->all(FLERR, "Create_atoms molecule has atom IDs, but system does not"); + if (atom->molecular == Atom::TEMPLATE && onemol != atom->avec->onemols[0]) + error->all(FLERR, "Create_atoms molecule template ID must be same as atom style template ID"); onemol->check_attributes(); @@ -352,19 +360,28 @@ void CreateAtoms::command(int narg, char **arg) } } - // demand non-none lattice be defined for BOX and REGION - // else setup scaling for SINGLE and RANDOM - // could use domain->lattice->lattice2box() to do conversion of - // lattice to box, but not consistent with other uses of units=lattice - // triclinic remapping occurs in add_single() + // require non-none lattice be defined for BOX or REGION styles if ((style == BOX) || (style == REGION)) { if (nbasis == 0) error->all(FLERR, "Cannot create atoms with undefined lattice"); - } else if (scaleflag == 1) { + } + + // apply scaling factor for styles that use distance-dependent factors + + if (scaleflag) { + if (style == SINGLE) { xone[0] *= domain->lattice->xlattice; xone[1] *= domain->lattice->ylattice; xone[2] *= domain->lattice->zlattice; - overlap *= domain->lattice->xlattice; + } else if (style == RANDOM) { + if (overlapflag) overlap *= domain->lattice->xlattice; + } else if (style == MESH) { + if (mesh_style == BISECTION) { + radthresh *= domain->lattice->xlattice; + } else if (mesh_style == QUASIRANDOM) { + mesh_density /= (domain->lattice->xlattice * domain->lattice->xlattice); + } + } } // set bounds for my proc in sublo[3] & subhi[3] @@ -450,7 +467,7 @@ void CreateAtoms::command(int narg, char **arg) atom->nghost = 0; atom->avec->clear_bonus(); - // add atoms/molecules in one of 3 ways + // add atoms/molecules with appropriate add() method bigint natoms_previous = atom->natoms; int nlocal_previous = atom->nlocal; @@ -504,7 +521,7 @@ void CreateAtoms::command(int narg, char **arg) // molcreate = # of molecules I created - tagint molcreate = (atom->nlocal - nlocal_previous) / onemol->natoms; + tagint molcreate = (atom->nlocal - nlocal_previous) / onemol->natoms * onemol->nmolecules; // increment total bonds,angles,etc @@ -708,7 +725,7 @@ void CreateAtoms::add_single() void CreateAtoms::add_random() { - double xlo, ylo, zlo, xhi, yhi, zhi, zmid; + double xlo, ylo, zlo, xhi, yhi, zhi; double delx, dely, delz, distsq, odistsq; double lamda[3], *coord; double *boxlo, *boxhi; @@ -727,7 +744,6 @@ void CreateAtoms::add_random() for (int ii = 0; ii < 30; ii++) random->uniform(); // bounding box for atom creation - // in real units, even if triclinic // only limit bbox by region if its bboxflag is set (interior region) if (triclinic == 0) { @@ -737,7 +753,6 @@ void CreateAtoms::add_random() yhi = domain->boxhi[1]; zlo = domain->boxlo[2]; zhi = domain->boxhi[2]; - zmid = zlo + 0.5 * (zhi - zlo); } else { xlo = domain->boxlo_bound[0]; xhi = domain->boxhi_bound[0]; @@ -745,7 +760,6 @@ void CreateAtoms::add_random() yhi = domain->boxhi_bound[1]; zlo = domain->boxlo_bound[2]; zhi = domain->boxhi_bound[2]; - zmid = zlo + 0.5 * (zhi - zlo); boxlo = domain->boxlo_lamda; boxhi = domain->boxhi_lamda; } @@ -781,7 +795,7 @@ void CreateAtoms::add_random() xone[0] = xlo + random->uniform() * (xhi - xlo); xone[1] = ylo + random->uniform() * (yhi - ylo); xone[2] = zlo + random->uniform() * (zhi - zlo); - if (domain->dimension == 2) xone[2] = zmid; + if (domain->dimension == 2) xone[2] = 0.0; if (region && (region->match(xone[0], xone[1], xone[2]) == 0)) continue; if (varflag && vartest(xone) == 0) continue; @@ -1165,6 +1179,14 @@ void CreateAtoms::add_mesh(const char *filename) void CreateAtoms::add_lattice() { + // add atoms on general triclinic lattice if Domain has setting for it + // verify lattice was defined with triclinic/general option + + if (!domain->triclinic_general && domain->lattice->is_general_triclinic()) + error->all(FLERR,"Create_atoms for non general triclinic box cannot use triclinic/general lattice"); + if (domain->triclinic_general && !domain->lattice->is_general_triclinic()) + error->all(FLERR,"Create_atoms for general triclinic box requires triclinic/general lattice"); + // convert 8 corners of my subdomain from box coords to lattice coords // for orthogonal, use corner pts of my subbox // for triclinic, use bounding box of my subbox @@ -1182,7 +1204,7 @@ void CreateAtoms::add_lattice() } else domain->bbox(domain->sublo_lamda, domain->subhi_lamda, bboxlo, bboxhi); - // narrow down the subbox by the bounding box of the given region, if available. + // narrow down the subbox by the bounding box of the given region, if available // for small regions in large boxes, this can result in a significant speedup if ((style == REGION) && region->bboxflag) { @@ -1206,16 +1228,55 @@ void CreateAtoms::add_lattice() xmin = ymin = zmin = BIG; xmax = ymax = zmax = -BIG; - // convert to lattice coordinates and set bounding box - - domain->lattice->bbox(1, bboxlo[0], bboxlo[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxhi[0], bboxlo[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxlo[0], bboxhi[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxhi[0], bboxhi[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxlo[0], bboxlo[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxhi[0], bboxlo[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxlo[0], bboxhi[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); - domain->lattice->bbox(1, bboxhi[0], bboxhi[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); + // convert 8 corner points of bounding box to lattice coordinates + // compute new bounding box (xyz min/max) in lattice coords + // for orthogonal or restricted triclinic, use 8 corner points of bbox lo/hi + + if (!domain->triclinic_general) { + domain->lattice->bbox(1, bboxlo[0], bboxlo[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxhi[0], bboxlo[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxlo[0], bboxhi[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxhi[0], bboxhi[1], bboxlo[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxlo[0], bboxlo[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxhi[0], bboxlo[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxlo[0], bboxhi[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); + domain->lattice->bbox(1, bboxhi[0], bboxhi[1], bboxhi[2], xmin, ymin, zmin, xmax, ymax, zmax); + + // for general triclinic, convert 8 corner points of bbox to general triclinic coords + // new set of 8 points is no longer an orthogonal bounding box + // instead invoke lattice->bbox() on each of 8 points + + } else if (domain->triclinic_general) { + double point[3]; + + point[0] = bboxlo[0]; point[1] = bboxlo[1]; point[2] = bboxlo[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + point[0] = bboxhi[0]; point[1] = bboxlo[1]; point[2] = bboxlo[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + + point[0] = bboxlo[0]; point[1] = bboxhi[1]; point[2] = bboxlo[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + point[0] = bboxhi[0]; point[1] = bboxhi[1]; point[2] = bboxlo[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + + point[0] = bboxlo[0]; point[1] = bboxlo[1]; point[2] = bboxhi[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + point[0] = bboxhi[0]; point[1] = bboxlo[1]; point[2] = bboxhi[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + + point[0] = bboxlo[0]; point[1] = bboxhi[1]; point[2] = bboxhi[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + point[0] = bboxhi[0]; point[1] = bboxhi[1]; point[2] = bboxhi[2]; + domain->restricted_to_general_coords(point); + domain->lattice->bbox(1, point[0], point[1], point[2], xmin, ymin, zmin, xmax, ymax, zmax); + } // ilo:ihi,jlo:jhi,klo:khi = loop bounds for lattice overlap of my subbox // overlap = any part of a unit cell (face,edge,pt) in common with my subbox @@ -1225,6 +1286,7 @@ void CreateAtoms::add_lattice() // decrement lo, increment hi to avoid round-off issues in lattice->bbox(), // which can lead to missing atoms in rare cases // extra decrement of lo if min < 0, since static_cast(-1.5) = -1 + // for 2d simulation, klo = khi = 0 so just one plane of atoms ilo = static_cast(xmin) - 1; jlo = static_cast(ymin) - 1; @@ -1237,6 +1299,8 @@ void CreateAtoms::add_lattice() if (ymin < 0.0) jlo--; if (zmin < 0.0) klo--; + if (domain->dimension == 2) klo = khi = 0; + // count lattice sites on each proc nlatt_overflow = 0; @@ -1302,6 +1366,8 @@ void CreateAtoms::loop_lattice(int action) { int i, j, k, m; + int dimension = domain->dimension; + int triclinic_general = domain->triclinic_general; const double *const *const basis = domain->lattice->basis; nlatt = 0; @@ -1321,6 +1387,19 @@ void CreateAtoms::loop_lattice(int action) domain->lattice->lattice2box(x[0], x[1], x[2]); + // convert from general to restricted triclinic coords + // for 2d simulation: + // check if z coord is within EPS_ZCOORD of zero and set to zero + + if (triclinic_general) { + domain->general_to_restricted_coords(x); + if (dimension == 2) { + if (fabs(x[2]) > EPS_ZCOORD) + error->all(FLERR,"Create_atoms atom z coord is non-zero for 2d simulation"); + x[2] = 0.0; + } + } + // if a region was specified, test if atom is in it if (style == REGION) diff --git a/src/create_box.cpp b/src/create_box.cpp index 02aa63acf0a..8a74ffd7bda 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -19,6 +19,7 @@ #include "domain.h" #include "error.h" #include "force.h" +#include "lattice.h" #include "region.h" #include "region_prism.h" #include "update.h" @@ -45,40 +46,117 @@ void CreateBox::command(int narg, char **arg) // region check - auto region = domain->get_region_by_id(arg[1]); - if (!region) error->all(FLERR, "Create_box region {} does not exist", arg[1]); - if (region->bboxflag == 0) error->all(FLERR, "Create_box region does not support a bounding box"); - - region->init(); - - // if region not prism: - // setup orthogonal domain - // set simulation domain from region extent - // if region is prism: - // seutp triclinic domain - // set simulation domain params from prism params - - if (strcmp(region->style, "prism") != 0) { - domain->triclinic = 0; - domain->boxlo[0] = region->extent_xlo; - domain->boxhi[0] = region->extent_xhi; - domain->boxlo[1] = region->extent_ylo; - domain->boxhi[1] = region->extent_yhi; - domain->boxlo[2] = region->extent_zlo; - domain->boxhi[2] = region->extent_zhi; - - } else { - domain->triclinic = 1; - auto prism = dynamic_cast(region); - domain->boxlo[0] = prism->xlo; - domain->boxhi[0] = prism->xhi; - domain->boxlo[1] = prism->ylo; - domain->boxhi[1] = prism->yhi; - domain->boxlo[2] = prism->zlo; - domain->boxhi[2] = prism->zhi; - domain->xy = prism->xy; - domain->xz = prism->xz; - domain->yz = prism->yz; + Region *region = nullptr; + int triclinic_general = 0; + + if (strcmp(arg[1],"NULL") == 0) triclinic_general = 1; + else { + region = domain->get_region_by_id(arg[1]); + if (!region) error->all(FLERR, "Create_box region {} does not exist", arg[1]); + if (region->bboxflag == 0) error->all(FLERR, "Create_box region does not support a bounding box"); + region->init(); + } + + // setup simulation box + // 3 options: orthogonal, restricted triclinic, general triclinic + + int iarg = 2; + + if (region) { + + // region is not prism + // setup orthogonal box + // set simulation domain from region extent + + if (strcmp(region->style, "prism") != 0) { + domain->triclinic = 0; + domain->boxlo[0] = region->extent_xlo; + domain->boxhi[0] = region->extent_xhi; + domain->boxlo[1] = region->extent_ylo; + domain->boxhi[1] = region->extent_yhi; + domain->boxlo[2] = region->extent_zlo; + domain->boxhi[2] = region->extent_zhi; + + // region is prism + // seutp restricted triclinic box + // set simulation domain from prism params + + } else { + domain->triclinic = 1; + auto prism = dynamic_cast(region); + domain->boxlo[0] = prism->xlo; + domain->boxhi[0] = prism->xhi; + domain->boxlo[1] = prism->ylo; + domain->boxhi[1] = prism->yhi; + domain->boxlo[2] = prism->zlo; + domain->boxhi[2] = prism->zhi; + domain->xy = prism->xy; + domain->xz = prism->xz; + domain->yz = prism->yz; + } + + if (domain->dimension == 2) { + if (domain->boxlo[2] >= 0.0 || domain->boxhi[2] <= 0.0) + error->all(FLERR,"Create_box region zlo/zhi for 2d simulation must straddle 0.0"); + } + + // setup general triclinic box (with no region) + // read next box extent arguments to create ABC edge vectors + origin + // define_general_triclinic() converts + // ABC edge vectors + origin to restricted triclinic + + } else if (triclinic_general) { + if (!domain->lattice->is_general_triclinic()) + error->all(FLERR,"Create_box for general triclinic requires triclnic/general lattice"); + + if (iarg + 6 > narg) utils::missing_cmd_args(FLERR, "create_box general triclinic", error); + + double alo = utils::numeric(FLERR, arg[iarg + 0], false, lmp); + double ahi = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + double blo = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + double bhi = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + double clo = utils::numeric(FLERR, arg[iarg + 4], false, lmp); + double chi = utils::numeric(FLERR, arg[iarg + 5], false, lmp); + iarg += 6; + + if (domain->dimension == 2) + if (clo != -0.5 || chi != 0.5) + error->all(FLERR,"Create_box for general triclinic requires clo = -0.5 and chi = 0.5"); + + // use lattice2box() to generate origin and ABC vectors + // origin = abc lo + // ABC vectors = hi in one dim - origin + + double avec[3],bvec[3],cvec[3],origin[3]; + double px,py,pz; + + px = alo; py = blo; pz = clo; + domain->lattice->lattice2box(px,py,pz); + origin[0] = px; + origin[1] = py; + origin[2] = pz; + + px = ahi; py = blo; pz = clo; + domain->lattice->lattice2box(px,py,pz); + avec[0] = px - origin[0]; + avec[1] = py - origin[1]; + avec[2] = pz - origin[2]; + + px = alo; py = bhi; pz = clo; + domain->lattice->lattice2box(px,py,pz); + bvec[0] = px - origin[0]; + bvec[1] = py - origin[1]; + bvec[2] = pz - origin[2]; + + px = alo; py = blo; pz = chi; + domain->lattice->lattice2box(px,py,pz); + cvec[0] = px - origin[0]; + cvec[1] = py - origin[1]; + cvec[2] = pz - origin[2]; + + // define general triclinic box within Domain class + + domain->define_general_triclinic(avec,bvec,cvec,origin); } // if molecular, zero out topology info @@ -104,7 +182,6 @@ void CreateBox::command(int narg, char **arg) // process optional args that can overwrite default settings - int iarg = 2; while (iarg < narg) { if (strcmp(arg[iarg], "bond/types") == 0) { if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "create_box bond/type", error); @@ -166,7 +243,7 @@ void CreateBox::command(int narg, char **arg) error->all(FLERR, "Unknown create_box keyword: {}", arg[iarg]); } - // problem setup using info from header + // setup the simulation box and initial system // deallocate/grow ensures any extra settings are used for topology arrays // necessary in case no create_atoms is performed diff --git a/src/dihedral_hybrid.cpp b/src/dihedral_hybrid.cpp index d38ccf5d52f..4ee0ffdad95 100644 --- a/src/dihedral_hybrid.cpp +++ b/src/dihedral_hybrid.cpp @@ -24,7 +24,7 @@ using namespace LAMMPS_NS; -#define EXTRA 1000 +static constexpr int EXTRA = 1000; /* ---------------------------------------------------------------------- */ @@ -277,7 +277,8 @@ void DihedralHybrid::coeff(int narg, char **arg) else if (strcmp(arg[1], "bb13") == 0) error->all(FLERR, "BondBond13 coeff for hybrid dihedral has invalid format"); else - error->all(FLERR, "Dihedral coeff for hybrid has invalid style"); + error->all(FLERR, "Expected hybrid sub-style instead of {} in dihedral_coeff command", + arg[1]); } // move 1st arg to 2nd arg diff --git a/src/dihedral_write.cpp b/src/dihedral_write.cpp index 3d87591bccd..dd1ca1de6a2 100644 --- a/src/dihedral_write.cpp +++ b/src/dihedral_write.cpp @@ -25,7 +25,6 @@ #include "error.h" #include "force.h" #include "input.h" -#include "lammps.h" #include "math_const.h" #include "update.h" @@ -35,7 +34,7 @@ using MathConst::DEG2RAD; using MathConst::RAD2DEG; static constexpr double epsilon = 6.5e-6; -#define MAXLINE 1024 +static constexpr int MAXLINE = 1024; /* ---------------------------------------------------------------------- */ void DihedralWrite::command(int narg, char **arg) @@ -148,7 +147,7 @@ void DihedralWrite::command(int narg, char **arg) writer->input->one("mass * 1.0"); writer->input->one(fmt::format("dihedral_style {}", force->dihedral_style)); FILE *coeffs; - char line[MAXLINE]; + char line[MAXLINE] = {'\0'}; coeffs = fopen(coeffs_file.c_str(), "r"); for (int i = 0; i < atom->ndihedraltypes; ++i) { fgets(line, MAXLINE, coeffs); diff --git a/src/displace_atoms.cpp b/src/displace_atoms.cpp index fa333f1bc23..5ecf5a2c9e8 100644 --- a/src/displace_atoms.cpp +++ b/src/displace_atoms.cpp @@ -160,7 +160,7 @@ void DisplaceAtoms::command(int narg, char **arg) int *mask = atom->mask; int nlocal = atom->nlocal; - double fraction,dramp; + double fraction, dramp; for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -255,11 +255,12 @@ void DisplaceAtoms::command(int narg, char **arg) int line_flag = atom->line_flag; int tri_flag = atom->tri_flag; int body_flag = atom->body_flag; + int quat_atom_flag = atom->quat_flag; int theta_flag = 0; int quat_flag = 0; if (line_flag) theta_flag = 1; - if (ellipsoid_flag || tri_flag || body_flag) quat_flag = 1; + if (ellipsoid_flag || tri_flag || body_flag || quat_atom_flag) quat_flag = 1; // AtomVec pointers to retrieve per-atom storage of extra quantities @@ -269,6 +270,7 @@ void DisplaceAtoms::command(int narg, char **arg) auto avec_body = dynamic_cast(atom->style_match("body")); double **x = atom->x; + double **quat_atom = atom->quat; int *ellipsoid = atom->ellipsoid; int *line = atom->line; int *tri = atom->tri; @@ -313,7 +315,7 @@ void DisplaceAtoms::command(int narg, char **arg) // quats for ellipsoids, tris, and bodies - if (quat_flag) { + if (quat_flag && !quat_atom_flag) { quat = nullptr; if (ellipsoid_flag && ellipsoid[i] >= 0) quat = avec_ellipsoid->bonus[ellipsoid[i]].quat; @@ -322,12 +324,18 @@ void DisplaceAtoms::command(int narg, char **arg) else if (body_flag && body[i] >= 0) quat = avec_body->bonus[body[i]].quat; if (quat) { - MathExtra::quatquat(qrotate,quat,qnew); + MathExtra::quatquat(qrotate, quat, qnew); quat[0] = qnew[0]; quat[1] = qnew[1]; quat[2] = qnew[2]; quat[3] = qnew[3]; } + } else if (quat_atom_flag) { + MathExtra::quatquat(qrotate, quat_atom[i], qnew); + quat_atom[i][0] = qnew[0]; + quat_atom[i][1] = qnew[1]; + quat_atom[i][2] = qnew[2]; + quat_atom[i][3] = qnew[3]; } } } diff --git a/src/domain.cpp b/src/domain.cpp index 3627af26cfe..db7533f21a1 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -28,6 +28,7 @@ #include "force.h" #include "kspace.h" #include "lattice.h" +#include "math_extra.h" #include "memory.h" #include "modify.h" #include "molecule.h" @@ -41,11 +42,11 @@ #include using namespace LAMMPS_NS; +using namespace MathExtra; -#define BIG 1.0e20 -#define SMALL 1.0e-4 -#define DELTAREGION 4 -#define BONDSTRETCH 1.1 +static constexpr double BIG = 1.0e20; +static constexpr double SMALL = 1.0e-4; +static constexpr double BONDSTRETCH = 1.1; /* ---------------------------------------------------------------------- one instance per region style in style_region.h @@ -81,7 +82,7 @@ Domain::Domain(LAMMPS *lmp) : Pointers(lmp) minylo = minyhi = 0.0; minzlo = minzhi = 0.0; - triclinic = 0; + triclinic = triclinic_general = 0; boxlo[0] = boxlo[1] = boxlo[2] = -0.5; boxhi[0] = boxhi[1] = boxhi[2] = 0.5; @@ -288,6 +289,30 @@ void Domain::set_global_box() boxhi_bound[1] = MAX(boxhi[1],boxhi[1]+yz); boxhi_bound[2] = boxhi[2]; } + + // update general triclinic box if defined + // reset general tri ABC edge vectors from restricted tri box + + if (triclinic_general) { + double aprime[3],bprime[3],cprime[3]; + + // A'B'C' = edge vectors of restricted triclinic box + + aprime[0] = boxhi[0] - boxlo[0]; + aprime[1] = aprime[2] = 0.0; + bprime[0] = xy; + bprime[1] = boxhi[1] - boxlo[1]; + bprime[2] = 0.0; + cprime[0] = xz; + cprime[1] = yz; + cprime[2] = boxhi[2] - boxlo[2]; + + // transform restricted A'B'C' to general triclinic ABC + + MathExtra::matvec(rotate_r2g,aprime,avec); + MathExtra::matvec(rotate_r2g,bprime,bvec); + MathExtra::matvec(rotate_r2g,cprime,cvec); + } } /* ---------------------------------------------------------------------- @@ -516,6 +541,220 @@ void Domain::reset_box() } } +/* ---------------------------------------------------------------------- + define and store a general triclinic simulation box + 3 edge vectors of box = avec/bvec/cvec caller + origin of edge vectors = origin_caller = lower left corner of box + create mapping to restricted triclinic box + set boxlo[3], boxhi[3] and 3 tilt factors + create rotation matrices for general <--> restricted transformations +------------------------------------------------------------------------- */ + +void Domain::define_general_triclinic(double *avec_caller, double *bvec_caller, + double *cvec_caller, double *origin_caller) +{ + if (triclinic || triclinic_general) + error->all(FLERR,"General triclinic box edge vectors are already set"); + + triclinic = triclinic_general = 1; + + avec[0] = avec_caller[0]; + avec[1] = avec_caller[1]; + avec[2] = avec_caller[2]; + + bvec[0] = bvec_caller[0]; + bvec[1] = bvec_caller[1]; + bvec[2] = bvec_caller[2]; + + cvec[0] = cvec_caller[0]; + cvec[1] = cvec_caller[1]; + cvec[2] = cvec_caller[2]; + + // error check on cvec for 2d systems + + if (dimension == 2 && (cvec[0] != 0.0 || cvec[1] != 0.0)) + error->all(FLERR,"General triclinic box edge vector C invalid for 2d system"); + + // rotate_g2r = rotation matrix from general to restricted triclnic + // rotate_r2g = rotation matrix from restricted to general triclnic + + double aprime[3],bprime[3],cprime[3]; + general_to_restricted_rotation(avec,bvec,cvec,rotate_g2r,aprime,bprime,cprime); + MathExtra::transpose3(rotate_g2r,rotate_r2g); + + // set restricted triclinic boxlo, boxhi, and tilt factors + + boxlo[0] = origin_caller[0]; + boxlo[1] = origin_caller[1]; + boxlo[2] = origin_caller[2]; + + boxhi[0] = boxlo[0] + aprime[0]; + boxhi[1] = boxlo[1] + bprime[1]; + boxhi[2] = boxlo[2] + cprime[2]; + + xy = bprime[0]; + xz = cprime[0]; + yz = cprime[1]; +} + +/* ---------------------------------------------------------------------- + compute rotation matrix to transform from general to restricted triclinic + ABC = 3 general triclinic edge vectors + rotmat = rotation matrix + A`B`C` = 3 restricited triclinic edge vectors +------------------------------------------------------------------------- */ + +void Domain::general_to_restricted_rotation(double *a, double *b, double *c, + double rotmat[3][3], + double *aprime, double *bprime, double *cprime) +{ + // error checks + // A,B,C cannot be co-planar + // A x B must point in C direction (right-handed) + + double abcross[3]; + MathExtra::cross3(a,b,abcross); + double dot = MathExtra::dot3(abcross,c); + if (dot == 0.0) + error->all(FLERR,"General triclinic edge vectors are co-planar"); + if (dot < 0.0) + error->all(FLERR,"General triclinic edge vectors must be right-handed"); + + // quat1 = convert A into A' along +x-axis + // rot1 = unit vector to rotate A around + // theta1 = angle of rotation calculated from + // A dot xunit = Ax = |A| cos(theta1) + + double rot1[3],quat1[4]; + double xaxis[3] = {1.0, 0.0, 0.0}; + + double alen = MathExtra::len3(a); + MathExtra::cross3(a,xaxis,rot1); + MathExtra::norm3(rot1); + double theta1 = acos(a[0]/alen); + MathExtra::axisangle_to_quat(rot1,theta1,quat1); + + // rotmat1 = rotation matrix associated with quat1 + + double rotmat1[3][3]; + MathExtra::quat_to_mat(quat1,rotmat1); + + // B1 = rotation of B by quat1 rotation matrix + + double b1[3]; + MathExtra::matvec(rotmat1,b,b1); + + // quat2 = rotation to convert B1 into B' in xy plane + // Byz1 = projection of B1 into yz plane + // +xaxis = unit vector to rotate B1 around + // theta2 = angle of rotation calculated from + // Byz1 dot yunit = B1y = |Byz1| cos(theta2) + // theta2 via acos() is positive (0 to PI) + // positive is valid if B1z < 0.0 else flip sign of theta2 + + double byzvec1[3],quat2[4]; + MathExtra::copy3(b1,byzvec1); + byzvec1[0] = 0.0; + double byzvec1_len = MathExtra::len3(byzvec1); + double theta2 = acos(b1[1]/byzvec1_len); + if (b1[2] > 0.0) theta2 = -theta2; + MathExtra::axisangle_to_quat(xaxis,theta2,quat2); + + // quat_single = rotation via single quat = quat2 * quat1 + // quat_r2g = rotation from restricted to general + // rotmat = general to restricted rotation matrix + + double quat_single[4]; + MathExtra::quatquat(quat2,quat1,quat_single); + MathExtra::quat_to_mat(quat_single,rotmat); + + // rotate general ABC to restricted triclinic A'B'C' + + MathExtra::matvec(rotmat,a,aprime); + MathExtra::matvec(rotmat,b,bprime); + MathExtra::matvec(rotmat,c,cprime); +} + +/* ---------------------------------------------------------------------- + transform atom coords from general triclinic to restricted triclinic +------------------------------------------------------------------------- */ + +void Domain::general_to_restricted_coords(double *x) +{ + double xshift[3],xnew[3]; + + xshift[0] = x[0] - boxlo[0]; + xshift[1] = x[1] - boxlo[1]; + xshift[2] = x[2] - boxlo[2]; + MathExtra::matvec(rotate_g2r,xshift,xnew); + x[0] = xnew[0] + boxlo[0]; + x[1] = xnew[1] + boxlo[1]; + x[2] = xnew[2] + boxlo[2]; +} + +/* ---------------------------------------------------------------------- + transform atom coords from restricted triclinic to general triclinic +------------------------------------------------------------------------- */ + +void Domain::restricted_to_general_coords(double *x) +{ + double xshift[3],xnew[3]; + + xshift[0] = x[0] - boxlo[0]; + xshift[1] = x[1] - boxlo[1]; + xshift[2] = x[2] - boxlo[2]; + MathExtra::matvec(rotate_r2g,xshift,xnew); + x[0] = xnew[0] + boxlo[0]; + x[1] = xnew[1] + boxlo[1]; + x[2] = xnew[2] + boxlo[2]; +} + +void Domain::restricted_to_general_coords(double *x, double *xnew) +{ + double xshift[3]; + + xshift[0] = x[0] - boxlo[0]; + xshift[1] = x[1] - boxlo[1]; + xshift[2] = x[2] - boxlo[2]; + MathExtra::matvec(rotate_r2g,xshift,xnew); + xnew[0] += boxlo[0]; + xnew[1] += boxlo[1]; + xnew[2] += boxlo[2]; +} + +/* ---------------------------------------------------------------------- + transform atom vector from general triclinic to restricted triclinic +------------------------------------------------------------------------- */ + +void Domain::general_to_restricted_vector(double *v) +{ + double vnew[3]; + + MathExtra::matvec(rotate_g2r,v,vnew); + v[0] = vnew[0]; + v[1] = vnew[1]; + v[2] = vnew[2]; +} + +/* ---------------------------------------------------------------------- + transform atom vector from restricted triclinic to general triclinic +------------------------------------------------------------------------- */ + +void Domain::restricted_to_general_vector(double *v) +{ + double vnew[3]; + + MathExtra::matvec(rotate_r2g,v,vnew); + v[0] = vnew[0]; + v[1] = vnew[1]; + v[2] = vnew[2]; +} + +void Domain::restricted_to_general_vector(double *v, double *vnew) +{ + MathExtra::matvec(rotate_r2g,v,vnew); +} + /* ---------------------------------------------------------------------- enforce PBC and modify box image flags for each atom called every reneighboring and by other commands that change atoms @@ -676,9 +915,7 @@ int Domain::inside(double* x) lamda[1] < lo[1] || lamda[1] >= hi[1] || lamda[2] < lo[2] || lamda[2] >= hi[2]) return 0; else return 1; - } - } /* ---------------------------------------------------------------------- @@ -713,7 +950,6 @@ int Domain::inside_nonperiodic(double* x) if (!zperiodic && (lamda[2] < lo[2] || lamda[2] >= hi[2])) return 0; return 1; } - } /* ---------------------------------------------------------------------- @@ -974,6 +1210,9 @@ void Domain::subbox_too_small_check(double thresh) changed "if" to "while" to enable distance to far-away ghost atom returned by atom->map() to be wrapped back into box could be problem for looking up atom IDs when cutoff > boxsize + should be used for most cases where the difference in the image count + is small (usually 0 or 1) + use minimum_image_big() when a large difference between image counts is expected ------------------------------------------------------------------------- */ static constexpr double MAXIMGCOUNT = 16; @@ -1046,6 +1285,72 @@ void Domain::minimum_image(double &dx, double &dy, double &dz) const } } +/* ---------------------------------------------------------------------- + minimum image convention in periodic dimensions + use 1/2 of box size as test + for triclinic, also add/subtract tilt factors in other dims as needed + allow multiple box lengths to enable distance to + far-away ghost atom returned by atom->map() to be wrapped back into box + could be problem for looking up atom IDs when cutoff > boxsize + this should be used when there is a large image count difference possible + this applies for example to fix rigid/small +------------------------------------------------------------------------- */ + +void Domain::minimum_image_big(double &dx, double &dy, double &dz) const +{ + if (triclinic == 0) { + if (xperiodic) { + double dfactor = dx/xprd + 0.5; + if (dx < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); + dx -= xprd * static_cast(dfactor); + } + if (yperiodic) { + double dfactor = dy/yprd + 0.5; + if (dy < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); + dy -= yprd * static_cast(dfactor); + } + if (zperiodic) { + double dfactor = dz/zprd + 0.5; + if (dz < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); + dz -= zprd * static_cast(dfactor); + } + + } else { + if (zperiodic) { + double dfactor = dz/zprd + 0.5; + if (dz < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dz); + int factor = static_cast(dfactor); + dz -= zprd * factor; + dy -= yz * factor; + dx -= xz * factor; + } + if (yperiodic) { + double dfactor = dy/yprd + 0.5; + if (dy < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dy); + int factor = static_cast(dfactor); + dy -= yprd * factor; + dx -= xy * factor; + } + if (xperiodic) { + double dfactor = dx/xprd + 0.5; + if (dx < 0) dfactor -= 1.0; + if (dfactor > MAXSMALLINT) + error->one(FLERR, "Atoms have moved too far apart ({}) for minimum image\n", dx); + dx -= xprd * static_cast(dfactor); + } + } +} + /* ---------------------------------------------------------------------- return local index of atom J or any of its images that is closest to atom I if J is not a valid index like -1, just return it @@ -1118,7 +1423,7 @@ int Domain::closest_image(const double * const pos, int j) /* ---------------------------------------------------------------------- find and return Xj image = periodic image of Xj that is closest to Xi for triclinic, add/subtract tilt factors in other dims as needed - called by ServerMD class and LammpsInterface in lib/atc. + called by ServerMD class and LammpsInterface in lib/atc ------------------------------------------------------------------------- */ void Domain::closest_image(const double * const xi, const double * const xj, double * const xjimage) diff --git a/src/domain.h b/src/domain.h index ab054f1b501..6479bd8d445 100644 --- a/src/domain.h +++ b/src/domain.h @@ -39,7 +39,8 @@ class Domain : protected Pointers { // 2 = shrink-wrap non-periodic // 3 = shrink-wrap non-per w/ min - int triclinic; // 0 = orthog box, 1 = triclinic + int triclinic; // 0 = orthog box, 1 = triclinic (restricted or general) + int triclinic_general; // 1 if general <-> restricted tri mapping is stored, 0 if not // orthogonal box @@ -48,8 +49,8 @@ class Domain : protected Pointers { double prd[3]; // array form of dimensions double prd_half[3]; // array form of half dimensions - // triclinic box - // xyzprd,xyzprd_half and prd,prd_half = same as if untilted + // restricted triclinic box + // xyz prd,xyz prd_half and prd,prd_half = same as if not tilted double prd_lamda[3]; // lamda box = (1,1,1) double prd_half_lamda[3]; // lamda half box = (0.5,0.5,0.5) @@ -58,14 +59,14 @@ class Domain : protected Pointers { double boxlo[3], boxhi[3]; - // triclinic box - // boxlo/hi = same as if untilted + // restricted triclinic box + // boxlo/hi = same as if not tilted double boxlo_lamda[3], boxhi_lamda[3]; // lamda box = (0,1) double boxlo_bound[3], boxhi_bound[3]; // bounding box of tilted domain double corners[8][3]; // 8 corner points - // orthogonal box & triclinic box + // orthogonal box & restricted triclinic box double minxlo, minxhi; // minimum size of global box double minylo, minyhi; // when shrink-wrapping @@ -75,18 +76,27 @@ class Domain : protected Pointers { double sublo[3], subhi[3]; // sub-box bounds on this proc - // triclinic box + // restricted triclinic box // sublo/hi = undefined double sublo_lamda[3], subhi_lamda[3]; // bounds of subbox in lamda - // triclinic box + // restricted triclinic box double xy, xz, yz; // 3 tilt factors double h[6], h_inv[6]; // shape matrix in Voigt ordering // Voigt = xx,yy,zz,yz,xz,xy double h_rate[6], h_ratelo[3]; // rate of box size/shape change + // general triclinic box + // boxlo = lower left corner + + double avec[3], bvec[3], cvec[3]; // ABC edge vectors of general triclinic box + double rotate_g2r[3][3]; // rotation matrix from general --> restricted tri + double rotate_r2g[3][3]; // rotation matrix from restricted --> general tri + + // box flags + int box_change; // 1 if any of next 3 flags are set, else 0 int box_change_size; // 1 if box size changes, 0 if not int box_change_shape; // 1 if box shape changes, 0 if not @@ -119,6 +129,8 @@ class Domain : protected Pointers { void subbox_too_small_check(double); void minimum_image(double &, double &, double &) const; void minimum_image(double *delta) const { minimum_image(delta[0], delta[1], delta[2]); } + void minimum_image_big(double &, double &, double &) const; + void minimum_image_big(double *delta) const { minimum_image_big(delta[0], delta[1], delta[2]); } int closest_image(int, int); int closest_image(const double *const, int); void closest_image(const double *const, const double *const, double *const); @@ -131,6 +143,17 @@ class Domain : protected Pointers { void image_flip(int, int, int); int ownatom(int, double *, imageint *, int); + void define_general_triclinic(double *, double *, double *, double *); + void general_to_restricted_rotation(double *, double *, double *, + double [3][3], + double *, double *, double *); + void general_to_restricted_coords(double *); + void restricted_to_general_coords(double *); + void restricted_to_general_coords(double *, double *); + void general_to_restricted_vector(double *); + void restricted_to_general_vector(double *); + void restricted_to_general_vector(double *, double *x); + void set_lattice(int, char **); void add_region(int, char **); void delete_region(Region *); diff --git a/src/dump.cpp b/src/dump.cpp index a231b367d56..c735a4a60d1 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -38,16 +37,16 @@ using namespace LAMMPS_NS; Dump *Dump::dumpptr; #endif -#define BIG 1.0e20 -#define EPSILON 1.0e-6 +static constexpr double BIG = 1.0e20; +static constexpr double EPSILON = 1.0e-6; enum { ASCEND, DESCEND }; /* ---------------------------------------------------------------------- */ Dump::Dump(LAMMPS *lmp, int /*narg*/, char **arg) : - Pointers(lmp), multiname(nullptr), refresh(nullptr), skipvar(nullptr), format(nullptr), - format_default(nullptr), format_line_user(nullptr), format_float_user(nullptr), + Pointers(lmp), multiname(nullptr), idrefresh(nullptr), irefresh(nullptr), skipvar(nullptr), + format(nullptr), format_default(nullptr), format_line_user(nullptr), format_float_user(nullptr), format_int_user(nullptr), format_bigint_user(nullptr), format_column_user(nullptr), fp(nullptr), nameslist(nullptr), buf(nullptr), sbuf(nullptr), ids(nullptr), bufsort(nullptr), idsort(nullptr), index(nullptr), proclist(nullptr), xpbc(nullptr), vpbc(nullptr), @@ -119,21 +118,21 @@ Dump::Dump(LAMMPS *lmp, int /*narg*/, char **arg) : fileproc = 0; char *ptr; - if ((ptr = strchr(filename,'%'))) { + if ((ptr = strchr(filename, '%'))) { multiproc = 1; nclusterprocs = 1; filewriter = 1; fileproc = me; - MPI_Comm_split(world,me,0,&clustercomm); + MPI_Comm_split(world, me, 0, &clustercomm); *ptr = '\0'; - multiname = utils::strdup(fmt::format("{}{}{}", filename, me, ptr+1)); + multiname = utils::strdup(fmt::format("{}{}{}", filename, me, ptr + 1)); *ptr = '%'; } - if (strchr(filename,'*')) multifile = 1; + if (strchr(filename, '*')) multifile = 1; - if (utils::strmatch(filename, "\\.bin$") - || utils::strmatch(filename, "\\.lammpsbin$")) binary = 1; + if (utils::strmatch(filename, "\\.bin$") || utils::strmatch(filename, "\\.lammpsbin$")) + binary = 1; if (platform::has_compress_extension(filename)) compressed = 1; } @@ -153,7 +152,7 @@ Dump::~Dump() delete[] format_int_user; delete[] format_bigint_user; - delete[] refresh; + delete[] idrefresh; delete[] skipvar; // format_column_user is deallocated by child classes that use it @@ -179,8 +178,7 @@ Dump::~Dump() // delete storage for caching file names if (maxfiles > 0) { - for (int idx=0; idx < numfiles; ++idx) - delete[] nameslist[idx]; + for (int idx = 0; idx < numfiles; ++idx) delete[] nameslist[idx]; delete[] nameslist; } @@ -196,6 +194,8 @@ Dump::~Dump() } } +// clang-format off + /* ---------------------------------------------------------------------- */ void Dump::init() @@ -216,21 +216,21 @@ void Dump::init() index = proclist = nullptr; irregular = nullptr; if ((has_id == 0) && (me == 0)) - error->warning(FLERR,"Dump {} includes no atom IDs and is not sorted by ID. This may complicate " - "post-processing tasks or visualization", id); + error->warning(FLERR,"Dump {} includes no atom IDs and is not sorted by ID. " + "This may complicate post-processing tasks or visualization", id); } if (sort_flag) { if (multiproc > 1) error->all(FLERR, - "Cannot sort dump when 'nfile' or 'fileper' keywords are set to non-default values"); + "Cannot sort dump when 'nfile' or 'fileper' keywords have non-default values"); if (sortcol == 0 && atom->tag_enable == 0) error->all(FLERR,"Cannot sort dump on atom IDs with no atom IDs defined"); if (sortcol && sortcol > size_one) - error->all(FLERR,"Dump sort column is invalid"); + error->all(FLERR,"Dump sort column index {} is invalid", sortcol); if ((sortcol != 0) && (has_id == 0) && (me == 0)) - error->warning(FLERR,"Dump {} includes no atom IDs and is not sorted by ID. This may complicate " - "post-processing tasks or visualization", id); + error->warning(FLERR,"Dump {} includes no atom IDs and is not sorted by ID. " + "This may complicate post-processing tasks or visualization", id); if (nprocs > 1 && irregular == nullptr) irregular = new Irregular(lmp); @@ -288,11 +288,8 @@ void Dump::init() // search for refresh compute specified by dump_modify refresh if (refreshflag) { - int icompute; - for (icompute = 0; icompute < modify->ncompute; icompute++) - if (strcmp(refresh,modify->compute[icompute]->id) == 0) break; - if (icompute < modify->ncompute) irefresh = icompute; - else error->all(FLERR,"Dump could not find refresh compute ID"); + irefresh = modify->get_compute_by_id(idrefresh); + if (!irefresh) error->all(FLERR,"Dump could not find refresh compute ID {}", idrefresh); } // if skipflag, check skip variable @@ -531,7 +528,7 @@ void Dump::write() // trigger post-dump refresh by specified compute // currently used for incremental dump files - if (refreshflag) modify->compute[irefresh]->refresh(); + if (refreshflag) irefresh->refresh(); if (filewriter && fp != nullptr) write_footer(); diff --git a/src/dump.h b/src/dump.h index bae7dbd8c87..43baf96ccff 100644 --- a/src/dump.h +++ b/src/dump.h @@ -19,6 +19,7 @@ #include namespace LAMMPS_NS { +class Compute; class Dump : protected Pointers { friend class Output; @@ -45,15 +46,9 @@ class Dump : protected Pointers { void init(); virtual void write(); - virtual int pack_forward_comm(int, int *, double *, int, int *) - { - return 0; - } + virtual int pack_forward_comm(int, int *, double *, int, int *) { return 0; } virtual void unpack_forward_comm(int, int, double *) {} - virtual int pack_reverse_comm(int, int, double *) - { - return 0; - } + virtual int pack_reverse_comm(int, int, double *) { return 0; } virtual void unpack_reverse_comm(int, int *, double *) {} void modify_params(int, char **); @@ -94,9 +89,9 @@ class Dump : protected Pointers { bigint delaystep; - int refreshflag; // 1 if dump_modify refresh specified - char *refresh; // compute ID to invoke refresh() on - int irefresh; // index of compute + int refreshflag; // 1 if dump_modify refresh specified + char *idrefresh; // compute ID to invoke refresh() on + Compute *irefresh; // index of compute int skipflag; // 1 if skip condition defined char *skipvar; // name of variable to check for skip condition @@ -158,17 +153,11 @@ class Dump : protected Pointers { virtual void init_style() = 0; virtual void openfile(); - virtual int modify_param(int, char **) - { - return 0; - } + virtual int modify_param(int, char **) { return 0; } virtual void write_header(bigint) = 0; virtual int count(); virtual void pack(tagint *) = 0; - virtual int convert_string(int, double *) - { - return 0; - } + virtual int convert_string(int, double *) { return 0; } virtual void write_data(int, double *) = 0; virtual void write_footer() {} diff --git a/src/dump_atom.cpp b/src/dump_atom.cpp index 2d047dc0a05..293ade62295 100644 --- a/src/dump_atom.cpp +++ b/src/dump_atom.cpp @@ -24,8 +24,8 @@ using namespace LAMMPS_NS; -#define ONELINE 256 -#define DELTA 1048576 +static constexpr int ONELINE = 256; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ @@ -36,6 +36,7 @@ DumpAtom::DumpAtom(LAMMPS *lmp, int narg, char **arg) : scale_flag = 1; image_flag = 0; + triclinic_general = 0; buffer_allow = 1; buffer_flag = 1; format_default = nullptr; @@ -92,25 +93,46 @@ void DumpAtom::init_style() if (binary && domain->triclinic == 0) header_choice = &DumpAtom::header_binary; + else if (binary && triclinic_general == 1) + header_choice = &DumpAtom::header_binary_triclinic_general; else if (binary && domain->triclinic == 1) header_choice = &DumpAtom::header_binary_triclinic; else if (!binary && domain->triclinic == 0) header_choice = &DumpAtom::header_item; + else if (!binary && triclinic_general == 1) + header_choice = &DumpAtom::header_item_triclinic_general; else if (!binary && domain->triclinic == 1) header_choice = &DumpAtom::header_item_triclinic; - if (scale_flag == 1 && image_flag == 0 && domain->triclinic == 0) - pack_choice = &DumpAtom::pack_scale_noimage; - else if (scale_flag == 1 && image_flag == 1 && domain->triclinic == 0) - pack_choice = &DumpAtom::pack_scale_image; - else if (scale_flag == 1 && image_flag == 0 && domain->triclinic == 1) - pack_choice = &DumpAtom::pack_scale_noimage_triclinic; - else if (scale_flag == 1 && image_flag == 1 && domain->triclinic == 1) - pack_choice = &DumpAtom::pack_scale_image_triclinic; - else if (scale_flag == 0 && image_flag == 0) - pack_choice = &DumpAtom::pack_noscale_noimage; - else if (scale_flag == 0 && image_flag == 1) - pack_choice = &DumpAtom::pack_noscale_image; + if (scale_flag == 0) { + if (image_flag == 0) { + if (triclinic_general == 1) { + pack_choice = &DumpAtom::pack_noscale_noimage_triclinic_general; + } else { + pack_choice = &DumpAtom::pack_noscale_noimage; + } + } else if (image_flag == 1) { + if (triclinic_general == 1) { + pack_choice = &DumpAtom::pack_noscale_image_triclinic_general; + } else { + pack_choice = &DumpAtom::pack_noscale_image; + } + } + } else if (scale_flag == 1) { + if (image_flag == 0) { + if (domain->triclinic == 0) { + pack_choice = &DumpAtom::pack_scale_noimage; + } else { + pack_choice = &DumpAtom::pack_scale_noimage_triclinic; + } + } else if (image_flag == 1) { + if (domain->triclinic == 0) { + pack_choice = &DumpAtom::pack_scale_image; + } else { + pack_choice = &DumpAtom::pack_scale_image_triclinic; + } + } + } if (image_flag == 0) convert_choice = &DumpAtom::convert_noimage; else convert_choice = &DumpAtom::convert_image; @@ -134,12 +156,23 @@ int DumpAtom::modify_param(int narg, char **arg) scale_flag = utils::logical(FLERR,arg[1],false,lmp); for (auto &item : keyword_user) item.clear(); return 2; - } else if (strcmp(arg[0],"image") == 0) { + } + + if (strcmp(arg[0],"image") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); image_flag = utils::logical(FLERR,arg[1],false,lmp); for (auto &item : keyword_user) item.clear(); return 2; } + + if (strcmp(arg[0],"triclinic/general") == 0) { + triclinic_general = 1; + if (triclinic_general && !domain->triclinic_general) + error->all(FLERR,"Dump_modify triclinic/general cannot be used " + "if simulation box is not general triclinic"); + return 1; + } + return 0; } @@ -306,6 +339,31 @@ void DumpAtom::header_binary_triclinic(bigint ndump) /* ---------------------------------------------------------------------- */ +void DumpAtom::header_binary_triclinic_general(bigint ndump) +{ + header_format_binary(); + + fwrite(&update->ntimestep,sizeof(bigint),1,fp); + fwrite(&ndump,sizeof(bigint),1,fp); + int triclinic_general_flag = 2; + fwrite(&triclinic_general_flag,sizeof(int),1,fp); + fwrite(&domain->boundary[0][0],6*sizeof(int),1,fp); + fwrite(domain->avec,3*sizeof(double),1,fp); + fwrite(domain->bvec,3*sizeof(double),1,fp); + fwrite(domain->cvec,3*sizeof(double),1,fp); + fwrite(domain->boxlo,3*sizeof(double),1,fp); + fwrite(&size_one,sizeof(int),1,fp); + + header_unit_style_binary(); + header_time_binary(); + header_columns_binary(); + + if (multiproc) fwrite(&nclusterprocs,sizeof(int),1,fp); + else fwrite(&nprocs,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- */ + void DumpAtom::header_item(bigint ndump) { if (unit_flag && !unit_count) { @@ -348,6 +406,30 @@ void DumpAtom::header_item_triclinic(bigint ndump) /* ---------------------------------------------------------------------- */ +void DumpAtom::header_item_triclinic_general(bigint ndump) +{ + if (unit_flag && !unit_count) { + ++unit_count; + fmt::print(fp,"ITEM: UNITS\n{}\n",update->unit_style); + } + if (time_flag) fmt::print(fp,"ITEM: TIME\n{:.16}\n",compute_time()); + + fmt::print(fp,"ITEM: TIMESTEP\n{}\nITEM: NUMBER OF ATOMS\n{}\n", update->ntimestep, ndump); + + fmt::print(fp,"ITEM: BOX BOUNDS abc origin {}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n", + boundstr, + domain->avec[0],domain->avec[1],domain->avec[2],domain->boxlo[0], + domain->bvec[0],domain->bvec[1],domain->bvec[2],domain->boxlo[1], + domain->cvec[0],domain->cvec[1],domain->cvec[2],domain->boxlo[2]); + + fmt::print(fp,"ITEM: ATOMS {}\n",columns); +} + +/* ---------------------------------------------------------------------- */ + void DumpAtom::pack_scale_image(tagint *ids) { int m,n; @@ -406,6 +488,59 @@ void DumpAtom::pack_scale_noimage(tagint *ids) } } +/* ---------------------------------------------------------------------- */ + +void DumpAtom::pack_noscale_image(tagint *ids) +{ + int m,n; + + tagint *tag = atom->tag; + int *type = atom->type; + imageint *image = atom->image; + int *mask = atom->mask; + double **x = atom->x; + int nlocal = atom->nlocal; + + m = n = 0; + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + buf[m++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = (image[i] & IMGMASK) - IMGMAX; + buf[m++] = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; + buf[m++] = (image[i] >> IMG2BITS) - IMGMAX; + if (ids) ids[n++] = tag[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpAtom::pack_noscale_noimage(tagint *ids) +{ + int m,n; + + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + double **x = atom->x; + int nlocal = atom->nlocal; + + m = n = 0; + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + buf[m++] = tag[i]; + buf[m++] = type[i]; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + if (ids) ids[n++] = tag[i]; + } +} + + /* ---------------------------------------------------------------------- */ void DumpAtom::pack_scale_image_triclinic(tagint *ids) @@ -466,7 +601,7 @@ void DumpAtom::pack_scale_noimage_triclinic(tagint *ids) /* ---------------------------------------------------------------------- */ -void DumpAtom::pack_noscale_image(tagint *ids) +void DumpAtom::pack_noscale_image_triclinic_general(tagint *ids) { int m,n; @@ -477,14 +612,17 @@ void DumpAtom::pack_noscale_image(tagint *ids) double **x = atom->x; int nlocal = atom->nlocal; + double xtri[3]; + m = n = 0; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { buf[m++] = tag[i]; buf[m++] = type[i]; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; + domain->restricted_to_general_coords(x[i],xtri); + buf[m++] = xtri[0]; + buf[m++] = xtri[1]; + buf[m++] = xtri[2]; buf[m++] = (image[i] & IMGMASK) - IMGMAX; buf[m++] = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; buf[m++] = (image[i] >> IMG2BITS) - IMGMAX; @@ -494,7 +632,7 @@ void DumpAtom::pack_noscale_image(tagint *ids) /* ---------------------------------------------------------------------- */ -void DumpAtom::pack_noscale_noimage(tagint *ids) +void DumpAtom::pack_noscale_noimage_triclinic_general(tagint *ids) { int m,n; @@ -504,14 +642,17 @@ void DumpAtom::pack_noscale_noimage(tagint *ids) double **x = atom->x; int nlocal = atom->nlocal; + double xtri[3]; + m = n = 0; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { buf[m++] = tag[i]; buf[m++] = type[i]; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; + domain->restricted_to_general_coords(x[i],xtri); + buf[m++] = xtri[0]; + buf[m++] = xtri[1]; + buf[m++] = xtri[2]; if (ids) ids[n++] = tag[i]; } } diff --git a/src/dump_atom.h b/src/dump_atom.h index e28b390520f..0b0d3a4f05a 100644 --- a/src/dump_atom.h +++ b/src/dump_atom.h @@ -33,8 +33,9 @@ class DumpAtom : public Dump { const int ENDIAN = 0x0001; protected: - int scale_flag; // 1 if atom coords are scaled, 0 if no - int image_flag; // 1 if append box count to atom coords, 0 if no + int scale_flag; // 1 if atom coords are scaled, 0 if no + int image_flag; // 1 if append box count to atom coords, 0 if no + int triclinic_general; // 1 if output box & coords for general triclinic, 0 if no std::string columns; // column labels @@ -57,8 +58,10 @@ class DumpAtom : public Dump { FnPtrHeader header_choice; // ptr to write header functions void header_binary(bigint); void header_binary_triclinic(bigint); + void header_binary_triclinic_general(bigint); void header_item(bigint); void header_item_triclinic(bigint); + void header_item_triclinic_general(bigint); typedef void (DumpAtom::*FnPtrPack)(tagint *); FnPtrPack pack_choice; // ptr to pack functions @@ -68,6 +71,8 @@ class DumpAtom : public Dump { void pack_noscale_noimage(tagint *); void pack_scale_image_triclinic(tagint *); void pack_scale_noimage_triclinic(tagint *); + void pack_noscale_image_triclinic_general(tagint *); + void pack_noscale_noimage_triclinic_general(tagint *); typedef int (DumpAtom::*FnPtrConvert)(int, double *); FnPtrConvert convert_choice; // ptr to convert data functions diff --git a/src/dump_cfg.cpp b/src/dump_cfg.cpp index a64507dc162..e5af83a3c62 100644 --- a/src/dump_cfg.cpp +++ b/src/dump_cfg.cpp @@ -29,9 +29,9 @@ using namespace LAMMPS_NS; -#define UNWRAPEXPAND 10.0 -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr double UNWRAPEXPAND = 10.0; +static constexpr int ONEFIELD = 32; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index 1e60295bbe2..fb07efd5612 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -34,21 +34,21 @@ using namespace LAMMPS_NS; // customize by adding keyword -// also customize compute_atom_property.cpp +// also customize compute_property_atom.cpp enum{ID,MOL,PROC,PROCP1,TYPE,ELEMENT,MASS, X,Y,Z,XS,YS,ZS,XSTRI,YSTRI,ZSTRI,XU,YU,ZU,XUTRI,YUTRI,ZUTRI, XSU,YSU,ZSU,XSUTRI,YSUTRI,ZSUTRI, IX,IY,IZ, VX,VY,VZ,FX,FY,FZ, - Q,MUX,MUY,MUZ,MU,RADIUS,DIAMETER,HEATFLOW,TEMPERATURE, + Q,MUX,MUY,MUZ,MU,RADIUS,DIAMETER, OMEGAX,OMEGAY,OMEGAZ,ANGMOMX,ANGMOMY,ANGMOMZ, TQX,TQY,TQZ, COMPUTE,FIX,VARIABLE,IVEC,DVEC,IARRAY,DARRAY}; enum{LT,LE,GT,GE,EQ,NEQ,XOR}; -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr int ONEFIELD = 32; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ @@ -88,6 +88,7 @@ DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) : buffer_allow = 1; buffer_flag = 1; + triclinic_general = 0; nthresh = 0; nthreshlast = 0; @@ -294,10 +295,14 @@ void DumpCustom::init_style() if (binary && domain->triclinic == 0) header_choice = &DumpCustom::header_binary; + else if (binary && triclinic_general == 1) + header_choice = &DumpCustom::header_binary_triclinic_general; else if (binary && domain->triclinic == 1) header_choice = &DumpCustom::header_binary_triclinic; else if (!binary && domain->triclinic == 0) header_choice = &DumpCustom::header_item; + else if (!binary && triclinic_general == 1) + header_choice = &DumpCustom::header_item_triclinic_general; else if (!binary && domain->triclinic == 1) header_choice = &DumpCustom::header_item_triclinic; @@ -489,6 +494,31 @@ void DumpCustom::header_binary_triclinic(bigint ndump) /* ---------------------------------------------------------------------- */ +void DumpCustom::header_binary_triclinic_general(bigint ndump) +{ + header_format_binary(); + + fwrite(&update->ntimestep,sizeof(bigint),1,fp); + fwrite(&ndump,sizeof(bigint),1,fp); + int triclinic_general_flag = 2; + fwrite(&triclinic_general_flag,sizeof(int),1,fp); + fwrite(&domain->boundary[0][0],6*sizeof(int),1,fp); + fwrite(domain->avec,3*sizeof(double),1,fp); + fwrite(domain->bvec,3*sizeof(double),1,fp); + fwrite(domain->cvec,3*sizeof(double),1,fp); + fwrite(domain->boxlo,3*sizeof(double),1,fp); + fwrite(&nfield,sizeof(int),1,fp); + + header_unit_style_binary(); + header_time_binary(); + header_columns_binary(); + + if (multiproc) fwrite(&nclusterprocs,sizeof(int),1,fp); + else fwrite(&nprocs,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::header_item(bigint ndump) { if (unit_flag && !unit_count) { @@ -535,6 +565,30 @@ void DumpCustom::header_item_triclinic(bigint ndump) /* ---------------------------------------------------------------------- */ +void DumpCustom::header_item_triclinic_general(bigint ndump) +{ + if (unit_flag && !unit_count) { + ++unit_count; + fmt::print(fp,"ITEM: UNITS\n{}\n",update->unit_style); + } + if (time_flag) fmt::print(fp,"ITEM: TIME\n{:.16}\n",compute_time()); + + fmt::print(fp,"ITEM: TIMESTEP\n{}\nITEM: NUMBER OF ATOMS\n{}\n", update->ntimestep, ndump); + + fmt::print(fp,"ITEM: BOX BOUNDS abc origin {}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n" + "{:>1.16e} {:>1.16e} {:>1.16e} {:>1.16e}\n", + boundstr, + domain->avec[0],domain->avec[1],domain->avec[2],domain->boxlo[0], + domain->bvec[0],domain->bvec[1],domain->bvec[2],domain->boxlo[1], + domain->cvec[0],domain->cvec[1],domain->cvec[2],domain->boxlo[2]); + + fmt::print(fp,"ITEM: ATOMS {}\n",columns); +} + +/* ---------------------------------------------------------------------- */ + int DumpCustom::count() { int i; @@ -929,18 +983,6 @@ int DumpCustom::count() for (i = 0; i < nlocal; i++) dchoose[i] = 2.0*radius[i]; ptr = dchoose; nstride = 1; - } else if (thresh_array[ithresh] == HEATFLOW) { - if (!atom->heatflow_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); - ptr = atom->heatflow; - nstride = 1; - } else if (thresh_array[ithresh] == TEMPERATURE) { - if (!atom->temperature_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); - ptr = atom->temperature; - nstride = 1; } else if (thresh_array[ithresh] == OMEGAX) { if (!atom->omega_flag) error->all(FLERR, @@ -1286,13 +1328,16 @@ int DumpCustom::parse_fields(int narg, char **arg) vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"x") == 0) { - pack_choice[iarg] = &DumpCustom::pack_x; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_x_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_x; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"y") == 0) { - pack_choice[iarg] = &DumpCustom::pack_y; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_y_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_y; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"z") == 0) { - pack_choice[iarg] = &DumpCustom::pack_z; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_z_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_z; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"xs") == 0) { if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_xs_triclinic; @@ -1307,15 +1352,18 @@ int DumpCustom::parse_fields(int narg, char **arg) else pack_choice[iarg] = &DumpCustom::pack_zs; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"xu") == 0) { - if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_xu_triclinic; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_xu_triclinic_general; + else if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_xu_triclinic; else pack_choice[iarg] = &DumpCustom::pack_xu; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"yu") == 0) { - if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_yu_triclinic; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_yu_triclinic_general; + else if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_yu_triclinic; else pack_choice[iarg] = &DumpCustom::pack_yu; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"zu") == 0) { - if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_zu_triclinic; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_zu_triclinic_general; + else if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_zu_triclinic; else pack_choice[iarg] = &DumpCustom::pack_zu; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"xsu") == 0) { @@ -1330,6 +1378,7 @@ int DumpCustom::parse_fields(int narg, char **arg) if (domain->triclinic) pack_choice[iarg] = &DumpCustom::pack_zsu_triclinic; else pack_choice[iarg] = &DumpCustom::pack_zsu; vtype[iarg] = Dump::DOUBLE; + } else if (strcmp(arg[iarg],"ix") == 0) { pack_choice[iarg] = &DumpCustom::pack_ix; vtype[iarg] = Dump::INT; @@ -1341,22 +1390,28 @@ int DumpCustom::parse_fields(int narg, char **arg) vtype[iarg] = Dump::INT; } else if (strcmp(arg[iarg],"vx") == 0) { - pack_choice[iarg] = &DumpCustom::pack_vx; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_vx_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_vx; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"vy") == 0) { - pack_choice[iarg] = &DumpCustom::pack_vy; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_vy_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_vy; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"vz") == 0) { - pack_choice[iarg] = &DumpCustom::pack_vz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_vz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_vz; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"fx") == 0) { - pack_choice[iarg] = &DumpCustom::pack_fx; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_fx_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_fx; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"fy") == 0) { - pack_choice[iarg] = &DumpCustom::pack_fy; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_fy_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_fy; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"fz") == 0) { - pack_choice[iarg] = &DumpCustom::pack_fz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_fz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_fz; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"q") == 0) { @@ -1364,20 +1419,24 @@ int DumpCustom::parse_fields(int narg, char **arg) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[iarg] = &DumpCustom::pack_q; vtype[iarg] = Dump::DOUBLE; + } else if (strcmp(arg[iarg],"mux") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_mux; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_mux_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_mux; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"muy") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_muy; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_muy_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_muy; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"muz") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_muz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_muz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_muz; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"mu") == 0) { if (!atom->mu_flag) @@ -1395,60 +1454,61 @@ int DumpCustom::parse_fields(int narg, char **arg) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[iarg] = &DumpCustom::pack_diameter; vtype[iarg] = Dump::DOUBLE; - } else if (strcmp(arg[iarg],"heatflow") == 0) { - if (!atom->heatflow_flag) - error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_heatflow; - vtype[iarg] = Dump::DOUBLE; - } else if (strcmp(arg[iarg],"temperature") == 0) { - if (!atom->temperature_flag) - error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_temperature; - vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"omegax") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_omegax; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_omegax_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_omegax; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"omegay") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_omegay; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_omegay_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_omegay; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"omegaz") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_omegaz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_omegaz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_omegaz; vtype[iarg] = Dump::DOUBLE; + } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_angmomx; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_angmomx_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_angmomx; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"angmomy") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_angmomy; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_angmomy_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_angmomy; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"angmomz") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_angmomz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_angmomz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_angmomz; vtype[iarg] = Dump::DOUBLE; + } else if (strcmp(arg[iarg],"tqx") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_tqx; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_tqx_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_tqx; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"tqy") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_tqy; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_tqy_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_tqy; vtype[iarg] = Dump::DOUBLE; } else if (strcmp(arg[iarg],"tqz") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); - pack_choice[iarg] = &DumpCustom::pack_tqz; + if (triclinic_general) pack_choice[iarg] = &DumpCustom::pack_tqz_triclinic_general; + else pack_choice[iarg] = &DumpCustom::pack_tqz; vtype[iarg] = Dump::DOUBLE; // compute or fix or variable or custom vector/array @@ -1702,6 +1762,14 @@ int DumpCustom::modify_param(int narg, char **arg) return 2; } + if (strcmp(arg[0],"triclinic/general") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + triclinic_general = utils::logical(FLERR,arg[1],false,lmp); + if (triclinic_general && !domain->triclinic_general) + error->all(FLERR,"Dump_modify triclinic/general invalid b/c simulation box is not"); + return 2; + } + if (strcmp(arg[0],"format") == 0) { if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify format", error); @@ -1768,7 +1836,7 @@ int DumpCustom::modify_param(int narg, char **arg) if (refreshflag) error->all(FLERR,"Dump_modify can only have one refresh"); refreshflag = 1; - refresh = argi.copy_name(); + idrefresh = argi.copy_name(); return 2; } @@ -1875,8 +1943,6 @@ int DumpCustom::modify_param(int narg, char **arg) else if (strcmp(arg[1],"radius") == 0) thresh_array[nthresh] = RADIUS; else if (strcmp(arg[1],"diameter") == 0) thresh_array[nthresh] = DIAMETER; - else if (strcmp(arg[1],"heatflow") == 0) thresh_array[nthresh] = HEATFLOW; - else if (strcmp(arg[1],"temperature") == 0) thresh_array[nthresh] = TEMPERATURE; else if (strcmp(arg[1],"omegax") == 0) thresh_array[nthresh] = OMEGAX; else if (strcmp(arg[1],"omegay") == 0) thresh_array[nthresh] = OMEGAY; else if (strcmp(arg[1],"omegaz") == 0) thresh_array[nthresh] = OMEGAZ; @@ -2283,6 +2349,48 @@ void DumpCustom::pack_z(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_x_triclinic_general(int n) +{ + double **x = atom->x; + double xtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_coords(x[clist[i]],xtri); + buf[n] = xtri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_y_triclinic_general(int n) +{ + double **x = atom->x; + double xtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_coords(x[clist[i]],xtri); + buf[n] = xtri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_z_triclinic_general(int n) +{ + double **x = atom->x; + double xtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_coords(x[clist[i]],xtri); + buf[n] = xtri[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_xs(int n) { double **x = atom->x; @@ -2489,6 +2597,84 @@ void DumpCustom::pack_zu_triclinic(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_xu_triclinic_general(int n) +{ + int j; + double **x = atom->x; + imageint *image = atom->image; + + double *h = domain->h; + double xu[3]; + int xbox,ybox,zbox; + + for (int i = 0; i < nchoose; i++) { + j = clist[i]; + xbox = (image[j] & IMGMASK) - IMGMAX; + ybox = (image[j] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (image[j] >> IMG2BITS) - IMGMAX; + xu[0] = x[j][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; + xu[1] = x[j][1] + h[1]*ybox + h[3]*zbox; + xu[2] = x[j][2] + h[2]*zbox; + domain->restricted_to_general_coords(xu); + buf[n] = xu[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_yu_triclinic_general(int n) +{ + int j; + double **x = atom->x; + imageint *image = atom->image; + + double *h = domain->h; + double xu[3]; + int xbox,ybox,zbox; + + for (int i = 0; i < nchoose; i++) { + j = clist[i]; + xbox = (image[j] & IMGMASK) - IMGMAX; + ybox = (image[j] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (image[j] >> IMG2BITS) - IMGMAX; + xu[0] = x[j][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; + xu[1] = x[j][1] + h[1]*ybox + h[3]*zbox; + xu[2] = x[j][2] + h[2]*zbox; + domain->restricted_to_general_coords(xu); + buf[n] = xu[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_zu_triclinic_general(int n) +{ + int j; + double **x = atom->x; + imageint *image = atom->image; + + double *h = domain->h; + double xu[3]; + int xbox,ybox,zbox; + + for (int i = 0; i < nchoose; i++) { + j = clist[i]; + xbox = (image[j] & IMGMASK) - IMGMAX; + ybox = (image[j] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (image[j] >> IMG2BITS) - IMGMAX; + xu[0] = x[j][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; + xu[1] = x[j][1] + h[1]*ybox + h[3]*zbox; + xu[2] = x[j][2] + h[2]*zbox; + domain->restricted_to_general_coords(xu); + buf[n] = xu[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_xsu(int n) { int j; @@ -2671,6 +2857,48 @@ void DumpCustom::pack_vz(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_vx_triclinic_general(int n) +{ + double **v = atom->v; + double vtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(v[clist[i]],vtri); + buf[n] = vtri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_vy_triclinic_general(int n) +{ + double **v = atom->v; + double vtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(v[clist[i]],vtri); + buf[n] = vtri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_vz_triclinic_general(int n) +{ + double **v = atom->v; + double vtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(v[clist[i]],vtri); + buf[n] = vtri[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_fx(int n) { double **f = atom->f; @@ -2707,6 +2935,48 @@ void DumpCustom::pack_fz(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_fx_triclinic_general(int n) +{ + double **f = atom->f; + double ftri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(f[clist[i]],ftri); + buf[n] = ftri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_fy_triclinic_general(int n) +{ + double **f = atom->f; + double ftri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(f[clist[i]],ftri); + buf[n] = ftri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_fz_triclinic_general(int n) +{ + double **f = atom->f; + double ftri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(f[clist[i]],ftri); + buf[n] = ftri[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_q(int n) { double *q = atom->q; @@ -2767,48 +3037,66 @@ void DumpCustom::pack_mu(int n) /* ---------------------------------------------------------------------- */ -void DumpCustom::pack_radius(int n) +void DumpCustom::pack_mux_triclinic_general(int n) { - double *radius = atom->radius; + double **mu = atom->mu; + double mutri[3]; for (int i = 0; i < nchoose; i++) { - buf[n] = radius[clist[i]]; + domain->restricted_to_general_vector(mu[clist[i]],mutri); + buf[n] = mutri[0]; n += size_one; } } /* ---------------------------------------------------------------------- */ -void DumpCustom::pack_diameter(int n) +void DumpCustom::pack_muy_triclinic_general(int n) { - double *radius = atom->radius; + double **mu = atom->mu; + double mutri[3]; for (int i = 0; i < nchoose; i++) { - buf[n] = 2.0*radius[clist[i]]; + domain->restricted_to_general_vector(mu[clist[i]],mutri); + buf[n] = mutri[1]; n += size_one; } } /* ---------------------------------------------------------------------- */ -void DumpCustom::pack_heatflow(int n) +void DumpCustom::pack_muz_triclinic_general(int n) { - double *heatflow = atom->heatflow; + double **mu = atom->mu; + double mutri[3]; for (int i = 0; i < nchoose; i++) { - buf[n] = heatflow[clist[i]]; + domain->restricted_to_general_vector(mu[clist[i]],mutri); + buf[n] = mutri[2]; n += size_one; } } /* ---------------------------------------------------------------------- */ -void DumpCustom::pack_temperature(int n) +void DumpCustom::pack_radius(int n) { - double *temperature = atom->temperature; + double *radius = atom->radius; for (int i = 0; i < nchoose; i++) { - buf[n] = temperature[clist[i]]; + buf[n] = radius[clist[i]]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_diameter(int n) +{ + double *radius = atom->radius; + + for (int i = 0; i < nchoose; i++) { + buf[n] = 2.0*radius[clist[i]]; n += size_one; } } @@ -2851,6 +3139,48 @@ void DumpCustom::pack_omegaz(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_omegax_triclinic_general(int n) +{ + double **omega = atom->omega; + double omegatri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(omega[clist[i]],omegatri); + buf[n] = omegatri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_omegay_triclinic_general(int n) +{ + double **omega = atom->omega; + double omegatri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(omega[clist[i]],omegatri); + buf[n] = omegatri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_omegaz_triclinic_general(int n) +{ + double **omega = atom->omega; + double omegatri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(omega[clist[i]],omegatri); + buf[n] = omegatri[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_angmomx(int n) { double **angmom = atom->angmom; @@ -2887,6 +3217,48 @@ void DumpCustom::pack_angmomz(int n) /* ---------------------------------------------------------------------- */ +void DumpCustom::pack_angmomx_triclinic_general(int n) +{ + double **angmom = atom->angmom; + double angmomtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(angmom[clist[i]],angmomtri); + buf[n] = angmomtri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_angmomy_triclinic_general(int n) +{ + double **angmom = atom->angmom; + double angmomtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(angmom[clist[i]],angmomtri); + buf[n] = angmomtri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_angmomz_triclinic_general(int n) +{ + double **angmom = atom->angmom; + double angmomtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(angmom[clist[i]],angmomtri); + buf[n] = angmomtri[2]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + void DumpCustom::pack_tqx(int n) { double **torque = atom->torque; @@ -2920,3 +3292,45 @@ void DumpCustom::pack_tqz(int n) n += size_one; } } + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_tqx_triclinic_general(int n) +{ + double **torque = atom->torque; + double tqtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(torque[clist[i]],tqtri); + buf[n] = tqtri[0]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_tqy_triclinic_general(int n) +{ + double **torque = atom->torque; + double tqtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(torque[clist[i]],tqtri); + buf[n] = tqtri[1]; + n += size_one; + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpCustom::pack_tqz_triclinic_general(int n) +{ + double **torque = atom->torque; + double tqtri[3]; + + for (int i = 0; i < nchoose; i++) { + domain->restricted_to_general_vector(torque[clist[i]],tqtri); + buf[n] = tqtri[2]; + n += size_one; + } +} diff --git a/src/dump_custom.h b/src/dump_custom.h index 2b04944ec32..6b4ca88b0b1 100644 --- a/src/dump_custom.h +++ b/src/dump_custom.h @@ -36,6 +36,7 @@ class DumpCustom : public Dump { protected: int nevery; // dump frequency for output char *idregion; // region ID, nullptr if no region + int triclinic_general; // 1 if output box & per-atom info for general triclinic int nthresh; // # of defined thresholds int nthreshlast; // # of defined thresholds with value = LAST @@ -124,8 +125,10 @@ class DumpCustom : public Dump { FnPtrHeader header_choice; // ptr to write header functions void header_binary(bigint); void header_binary_triclinic(bigint); + void header_binary_triclinic_general(bigint); void header_item(bigint); void header_item_triclinic(bigint); + void header_item_triclinic_general(bigint); typedef void (DumpCustom::*FnPtrWrite)(int, double *); FnPtrWrite write_choice; // ptr to write data functions @@ -153,24 +156,34 @@ class DumpCustom : public Dump { void pack_x(int); void pack_y(int); void pack_z(int); + void pack_x_triclinic_general(int); + void pack_y_triclinic_general(int); + void pack_z_triclinic_general(int); + void pack_xs(int); void pack_ys(int); void pack_zs(int); void pack_xs_triclinic(int); void pack_ys_triclinic(int); void pack_zs_triclinic(int); + void pack_xu(int); void pack_yu(int); void pack_zu(int); void pack_xu_triclinic(int); void pack_yu_triclinic(int); void pack_zu_triclinic(int); + void pack_xu_triclinic_general(int); + void pack_yu_triclinic_general(int); + void pack_zu_triclinic_general(int); + void pack_xsu(int); void pack_ysu(int); void pack_zsu(int); void pack_xsu_triclinic(int); void pack_ysu_triclinic(int); void pack_zsu_triclinic(int); + void pack_ix(int); void pack_iy(int); void pack_iz(int); @@ -178,28 +191,50 @@ class DumpCustom : public Dump { void pack_vx(int); void pack_vy(int); void pack_vz(int); + void pack_vx_triclinic_general(int); + void pack_vy_triclinic_general(int); + void pack_vz_triclinic_general(int); + void pack_fx(int); void pack_fy(int); void pack_fz(int); + void pack_fx_triclinic_general(int); + void pack_fy_triclinic_general(int); + void pack_fz_triclinic_general(int); + void pack_q(int); + void pack_mux(int); void pack_muy(int); void pack_muz(int); void pack_mu(int); + void pack_mux_triclinic_general(int); + void pack_muy_triclinic_general(int); + void pack_muz_triclinic_general(int); + void pack_radius(int); void pack_diameter(int); - void pack_heatflow(int); - void pack_temperature(int); void pack_omegax(int); void pack_omegay(int); void pack_omegaz(int); + void pack_omegax_triclinic_general(int); + void pack_omegay_triclinic_general(int); + void pack_omegaz_triclinic_general(int); + void pack_angmomx(int); void pack_angmomy(int); void pack_angmomz(int); + void pack_angmomx_triclinic_general(int); + void pack_angmomy_triclinic_general(int); + void pack_angmomz_triclinic_general(int); + void pack_tqx(int); void pack_tqy(int); void pack_tqz(int); + void pack_tqx_triclinic_general(int); + void pack_tqy_triclinic_general(int); + void pack_tqz_triclinic_general(int); }; } // namespace LAMMPS_NS diff --git a/src/dump_grid.cpp b/src/dump_grid.cpp index 8e3a2977cf2..ac42a85b01c 100644 --- a/src/dump_grid.cpp +++ b/src/dump_grid.cpp @@ -23,7 +23,6 @@ #include "grid3d.h" #include "memory.h" #include "modify.h" -#include "region.h" #include "update.h" #include @@ -35,8 +34,8 @@ using namespace LAMMPS_NS; enum {COMPUTE,FIX}; -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr int ONEFIELD = 32; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ diff --git a/src/dump_image.cpp b/src/dump_image.cpp index ba7e36eb0b8..ed4fc8dff4e 100644 --- a/src/dump_image.cpp +++ b/src/dump_image.cpp @@ -49,7 +49,7 @@ using namespace LAMMPS_NS; using MathConst::DEG2RAD; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; enum{NUMERIC,ATOM,TYPE,ELEMENT,ATTRIBUTE}; enum{SPHERE,LINE,TRI}; // also in some Body and Fix child classes diff --git a/src/dump_local.cpp b/src/dump_local.cpp index 9695e152b24..8d546634b6f 100644 --- a/src/dump_local.cpp +++ b/src/dump_local.cpp @@ -27,8 +27,8 @@ using namespace LAMMPS_NS; -#define ONEFIELD 32 -#define DELTA 1048576 +static constexpr int ONEFIELD = 32; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ diff --git a/src/dump_xyz.cpp b/src/dump_xyz.cpp index 241ec1c0591..f7ab77b2bf1 100644 --- a/src/dump_xyz.cpp +++ b/src/dump_xyz.cpp @@ -23,8 +23,8 @@ using namespace LAMMPS_NS; -#define ONELINE 128 -#define DELTA 1048576 +static constexpr int ONELINE = 128; +static constexpr int DELTA = 1048576; /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/ewald_const.h b/src/ewald_const.h similarity index 100% rename from src/KSPACE/ewald_const.h rename to src/ewald_const.h diff --git a/src/fix.h b/src/fix.h index 9b595f0c60e..ca0a1ef84bb 100644 --- a/src/fix.h +++ b/src/fix.h @@ -99,8 +99,8 @@ class Fix : protected Pointers { int size_local_cols; // 0 = vector, N = columns in local array int local_freq; // frequency local data is available at - int pergrid_flag; // 0/1 if per-grid data is stored - int pergrid_freq; // frequency per-grid data is available at + int pergrid_flag; // 0/1 if per-grid data is stored + int pergrid_freq; // frequency per-grid data is available at int extscalar; // 0/1 if global scalar is intensive/extensive int extvector; // 0/1/-1 if global vector is all int/ext/extlist @@ -129,11 +129,11 @@ class Fix : protected Pointers { // KOKKOS flags and variables - int kokkosable; // 1 if Kokkos fix - int forward_comm_device; // 1 if forward comm on Device - int exchange_comm_device; // 1 if exchange comm on Device - int fuse_integrate_flag; // 1 if can fuse initial integrate with final integrate - int sort_device; // 1 if sort on Device + int kokkosable; // 1 if Kokkos fix + int forward_comm_device; // 1 if forward comm on Device + int exchange_comm_device; // 1 if exchange comm on Device + int fuse_integrate_flag; // 1 if can fuse initial integrate with final integrate + int sort_device; // 1 if sort on Device ExecutionSpace execution_space; unsigned int datamask_read, datamask_modify; @@ -223,7 +223,7 @@ class Fix : protected Pointers { virtual void unpack_reverse_grid(int, void *, int, int *){}; virtual void pack_remap_grid(int, void *, int, int *){}; virtual void unpack_remap_grid(int, void *, int, int *){}; - virtual int unpack_read_grid(int, char *) {return 0;}; + virtual int unpack_read_grid(int, char *) { return 0; }; virtual void pack_write_grid(int, void *){}; virtual void unpack_write_grid(int, void *, int *){}; @@ -236,7 +236,7 @@ class Fix : protected Pointers { virtual double compute_vector(int) { return 0.0; } virtual double compute_array(int, int) { return 0.0; } - virtual int dof(int) { return 0; } + virtual bigint dof(int) { return 0; } virtual void deform(int) {} virtual void reset_target(double) {} virtual void reset_dt() {} diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 996597ab8ba..2a10b9d6035 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -270,7 +270,7 @@ void FixAdapt::post_constructor() if (diam_flag && atom->radius_flag) { id_fix_diam = utils::strdup(id + std::string("_FIX_STORE_DIAM")); fix_diam = dynamic_cast( - modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam,group->names[igroup]))); + modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam, group->names[igroup]))); if (fix_diam->restart_reset) fix_diam->restart_reset = 0; else { double *vec = fix_diam->vstore; @@ -288,7 +288,7 @@ void FixAdapt::post_constructor() if (chgflag && atom->q_flag) { id_fix_chg = utils::strdup(id + std::string("_FIX_STORE_CHG")); fix_chg = dynamic_cast( - modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1",id_fix_chg,group->names[igroup]))); + modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_chg, group->names[igroup]))); if (fix_chg->restart_reset) fix_chg->restart_reset = 0; else { double *vec = fix_chg->vstore; diff --git a/src/fix_ave_chunk.cpp b/src/fix_ave_chunk.cpp index 7c37bbaaffc..9382b6d38ea 100644 --- a/src/fix_ave_chunk.cpp +++ b/src/fix_ave_chunk.cpp @@ -193,10 +193,12 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : cdof = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; - } else if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk file", error); + } else if ((strcmp(arg[iarg],"file") == 0) || (strcmp(arg[iarg],"append") == 0)) { + if (iarg+2 > narg) + utils::missing_cmd_args(FLERR, std::string("fix ave/chunk ")+arg[iarg], error); if (comm->me == 0) { - fp = fopen(arg[iarg+1],"w"); + if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); + else fp = fopen(arg[iarg+1],"a"); if (fp == nullptr) error->one(FLERR, "Cannot open fix ave/chunk file {}: {}", arg[iarg+1], utils::getsyserror()); @@ -301,8 +303,7 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : if (fp && comm->me == 0) { clearerr(fp); if (title1) fprintf(fp,"%s\n",title1); - else fprintf(fp,"# Chunk-averaged data for fix %s and group %s\n", - id, group); + else fprintf(fp,"# Chunk-averaged data for fix %s and group %s\n", id, group); if (title2) fprintf(fp,"%s\n",title2); else fprintf(fp,"# Timestep Number-of-chunks Total-count\n"); if (title3) fprintf(fp,"%s\n",title3); @@ -485,7 +486,7 @@ void FixAveChunk::init() /* ---------------------------------------------------------------------- only does averaging if nvalid = current timestep - do not call setup_chunks(), even though fix ave/spatial called setup_bins() + do not call setup_chunks(), even though fix ave/chunk called setup_bins() b/c could cause nchunk to change if Nfreq epoch crosses 2 runs does mean that if change_box is used between runs to change box size, that nchunk may not track it diff --git a/src/fix_ave_correlate.cpp b/src/fix_ave_correlate.cpp index d506e177618..08cd6731224 100644 --- a/src/fix_ave_correlate.cpp +++ b/src/fix_ave_correlate.cpp @@ -97,7 +97,7 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS *lmp, int narg, char **arg) : while (iarg < nargnew) { if (strcmp(arg[iarg],"type") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate type", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate type", error); if (strcmp(arg[iarg+1],"auto") == 0) type = AUTO; else if (strcmp(arg[iarg+1],"upper") == 0) type = UPPER; else if (strcmp(arg[iarg+1],"lower") == 0) type = LOWER; @@ -107,21 +107,21 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS *lmp, int narg, char **arg) : else error->all(FLERR,"Unknown fix ave/correlate type: {}"); iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate ave", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate ave", error); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else error->all(FLERR,"Unknown fix ave/correlate ave mode: {}", arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate start", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate start", error); startstep = utils::inumeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"prefactor") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate prefactor", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate prefactor", error); prefactor = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate file", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate file", error); if (comm->me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == nullptr) @@ -133,17 +133,17 @@ FixAveCorrelate::FixAveCorrelate(LAMMPS *lmp, int narg, char **arg) : overwrite = 1; iarg += 1; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate title1", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate title1", error); delete[] title1; title1 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate title2", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate title2", error); delete[] title2; title2 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate title3", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate title3", error); delete[] title3; title3 = utils::strdup(arg[iarg+1]); iarg += 2; @@ -414,6 +414,8 @@ void FixAveCorrelate::end_of_step() scalar = val.val.f->compute_vector(val.argindex-1); // evaluate equal-style or vector-style variable + // if index exceeds vector length, use a zero value + // this can be useful if vector length is not known a priori } else if (val.which == ArgInfo::VARIABLE) { if (val.argindex == 0) @@ -422,7 +424,7 @@ void FixAveCorrelate::end_of_step() double *varvec; int nvec = input->variable->compute_vector(val.val.v,&varvec); int index = val.argindex; - if (nvec < index) scalar = 0.0; + if (index > nvec) scalar = 0.0; else scalar = varvec[index-1]; } } diff --git a/src/fix_ave_grid.cpp b/src/fix_ave_grid.cpp index 8b391a08b53..a1e545a3cfb 100644 --- a/src/fix_ave_grid.cpp +++ b/src/fix_ave_grid.cpp @@ -280,33 +280,32 @@ FixAveGrid::FixAveGrid(LAMMPS *lmp, int narg, char **arg) : if (modeatom) { for (int i = 0; i < nvalues; i++) { if (which[i] == ArgInfo::COMPUTE) { - int icompute = modify->find_compute(ids[i]); - if (icompute < 0) - error->all(FLERR,"Compute ID for fix ave/grid does not exist"); - if (modify->compute[icompute]->peratom_flag == 0) - error->all(FLERR, "Fix ave/atom compute does not calculate per-atom values"); - if (argindex[i] == 0 && - modify->compute[icompute]->size_peratom_cols != 0) - error->all(FLERR,"Fix ave/atom compute does not calculate a per-atom vector"); - if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) - error->all(FLERR,"Fix ave/atom compute does not calculate a per-atom array"); - if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) - error->all(FLERR,"Fix ave/atom compute array is accessed out-of-range"); + auto icompute = modify->get_compute_by_id(ids[i]); + if (!icompute) + error->all(FLERR,"Compute {} for fix ave/grid does not exist", ids[i]); + if (icompute->peratom_flag == 0) + error->all(FLERR, "Fix ave/atom compute {} does not calculate per-atom values", ids[i]); + if ((argindex[i] == 0) && (icompute->size_peratom_cols != 0)) + error->all(FLERR,"Fix ave/atom compute {} does not calculate a per-atom vector", ids[i]); + if (argindex[i] && (icompute->size_peratom_cols == 0)) + error->all(FLERR,"Fix ave/atom compute {} does not calculate a per-atom array", ids[i]); + if (argindex[i] && (argindex[i] > icompute->size_peratom_cols)) + error->all(FLERR,"Fix ave/atom compute {} array is accessed out-of-range", ids[i]); } else if (which[i] == ArgInfo::FIX) { - int ifix = modify->find_fix(ids[i]); - if (ifix < 0) - error->all(FLERR,"Fix ID for fix ave/atom does not exist"); - if (modify->fix[ifix]->peratom_flag == 0) - error->all(FLERR,"Fix ave/atom fix does not calculate per-atom values"); - if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) - error->all(FLERR, "Fix ave/atom fix does not calculate a per-atom vector"); - if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) - error->all(FLERR, "Fix ave/atom fix does not calculate a per-atom array"); - if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) - error->all(FLERR,"Fix ave/atom fix array is accessed out-of-range"); - if (nevery % modify->fix[ifix]->peratom_freq) - error->all(FLERR, "Fix for fix ave/atom not computed at compatible time"); + auto ifix = modify->get_fix_by_id(ids[i]); + if (!ifix) + error->all(FLERR,"Fix {} for fix ave/atom does not exist", ids[i]); + if (ifix->peratom_flag == 0) + error->all(FLERR,"Fix ave/atom fix {} does not calculate per-atom values", ids[i]); + if ((argindex[i] == 0) && (ifix->size_peratom_cols != 0)) + error->all(FLERR, "Fix ave/atom fix {} does not calculate a per-atom vector", ids[i]); + if (argindex[i] && (ifix->size_peratom_cols == 0)) + error->all(FLERR, "Fix ave/atom fix {} does not calculate a per-atom array", ids[i]); + if (argindex[i] && (argindex[i] > ifix->size_peratom_cols)) + error->all(FLERR,"Fix ave/atom fix {} array is accessed out-of-range", ids[i]); + if (nevery % ifix->peratom_freq) + error->all(FLERR, "Fix {} for fix ave/atom not computed at compatible time", ids[i]); } else if (which[i] == ArgInfo::VARIABLE) { int ivariable = input->variable->find(ids[i]); @@ -431,13 +430,13 @@ void FixAveGrid::init() if (which[m] == ArgInfo::COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) - error->all(FLERR,"Compute ID for fix ave/grid does not exist"); + error->all(FLERR,"Compute {} for fix ave/grid does not exist", ids[m]); value2index[m] = icompute; } else if (which[m] == ArgInfo::FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) - error->all(FLERR,"Fix ID for fix ave/grid does not exist"); + error->all(FLERR,"Fix {} for fix ave/grid does not exist", ids[m]); value2index[m] = ifix; } else if (which[m] == ArgInfo::VARIABLE) { @@ -462,10 +461,10 @@ void FixAveGrid::init() for (int m = 0; m < nvalues; m++) { if (dimension == 2) { if (which[m] == ArgInfo::COMPUTE) { - compute = modify->compute[value2index[m]]; + compute = modify->get_compute_by_index(value2index[m]); grid2d = (Grid2d *) compute->get_grid_by_index(value2grid[m]); } else { - fix = modify->fix[value2index[m]]; + fix = modify->get_fix_by_index(value2index[m]); grid2d = (Grid2d *) fix->get_grid_by_index(value2grid[m]); } grid2d->get_size(nxtmp,nytmp); @@ -474,10 +473,10 @@ void FixAveGrid::init() } else { if (which[m] == ArgInfo::COMPUTE) { - compute = modify->compute[value2index[m]]; + compute = modify->get_compute_by_index(value2index[m]); grid3d = (Grid3d *) compute->get_grid_by_index(value2grid[m]); } else { - fix = modify->fix[value2index[m]]; + fix = modify->get_fix_by_index(value2index[m]); grid3d = (Grid3d *) fix->get_grid_by_index(value2grid[m]); } grid3d->get_size(nxtmp,nytmp,nztmp); @@ -966,7 +965,7 @@ void FixAveGrid::atom2grid() double *ovector,**oarray; if (which[m] == ArgInfo::COMPUTE) { - Compute *compute = modify->compute[n]; + Compute *compute = modify->get_compute_by_index(n); if (!(compute->invoked_flag & Compute::INVOKED_PERATOM)) { compute->compute_peratom(); compute->invoked_flag |= Compute::INVOKED_PERATOM; @@ -975,7 +974,7 @@ void FixAveGrid::atom2grid() else oarray = compute->array_atom; } else if (which[m] == ArgInfo::FIX) { - Fix *fix = modify->fix[n]; + Fix *fix = modify->get_fix_by_index(n); if (j == 0) ovector = fix->vector_atom; else oarray = fix->array_atom; } else if (which[m] == ArgInfo::VARIABLE) { @@ -1075,12 +1074,12 @@ void FixAveGrid::grid2grid() Fix *fix; if (which[m] == ArgInfo::COMPUTE) { - compute = modify->compute[n]; + compute = modify->get_compute_by_index(n); if (!(compute->invoked_flag & Compute::INVOKED_PERGRID)) { compute->compute_pergrid(); compute->invoked_flag |= Compute::INVOKED_PERGRID; } - } else if (which[m] == ArgInfo::FIX) fix = modify->fix[n]; + } else if (which[m] == ArgInfo::FIX) fix = modify->get_fix_by_index(n); if (dimension == 2) { double **ovec2d,***oarray2d; diff --git a/src/fix_ave_histo.cpp b/src/fix_ave_histo.cpp index 4a5debe7991..9b384e60fa1 100644 --- a/src/fix_ave_histo.cpp +++ b/src/fix_ave_histo.cpp @@ -35,7 +35,7 @@ enum { SCALAR, VECTOR, WINDOW }; enum { DEFAULT, GLOBAL, PERATOM, LOCAL }; enum { IGNORE, END, EXTRA }; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : @@ -601,6 +601,8 @@ void FixAveHisto::end_of_step() } // evaluate equal-style or vector-style or atom-style variable + // if index exceeds vector length, use a zero value + // this can be useful if vector length is not known a priori } else if (val.which == ArgInfo::VARIABLE) { if (kind == GLOBAL && mode == SCALAR) { @@ -608,7 +610,7 @@ void FixAveHisto::end_of_step() else { double *varvec; int nvec = input->variable->compute_vector(val.val.v,&varvec); - if (nvec < j) bin_one(0.0); + if (j > nvec) bin_one(0.0); else bin_one(varvec[j-1]); } @@ -840,10 +842,12 @@ void FixAveHisto::options(int iarg, int narg, char **arg) auto mycmd = fmt::format("fix {}", style); while (iarg < narg) { - if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, mycmd + " file", error); + if ((strcmp(arg[iarg],"file") == 0) || (strcmp(arg[iarg],"append") == 0)) { + if (iarg+2 > narg) + utils::missing_cmd_args(FLERR, std::string("fix ave/histo ")+arg[iarg], error); if (comm->me == 0) { - fp = fopen(arg[iarg+1],"w"); + if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); + else fp = fopen(arg[iarg+1],"a"); if (fp == nullptr) error->one(FLERR, "Cannot open fix ave/histo file {}: {}", arg[iarg+1], utils::getsyserror()); diff --git a/src/fix_ave_histo_weight.cpp b/src/fix_ave_histo_weight.cpp index 181aa2a79d1..cccfc86d59c 100644 --- a/src/fix_ave_histo_weight.cpp +++ b/src/fix_ave_histo_weight.cpp @@ -38,7 +38,7 @@ enum { DEFAULT, GLOBAL, PERATOM, LOCAL }; enum { IGNORE, END, EXTRA }; enum { SINGLE, VALUE }; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ @@ -113,256 +113,256 @@ void FixAveHistoWeight::end_of_step() double weight = 0.0; double *weights = nullptr; int stride = 0; - auto &val = values[1]; - int j = val.argindex; + auto &val1 = values[1]; + int j = val1.argindex; // atom attributes - if (val.which == ArgInfo::X) { + if (val1.which == ArgInfo::X) { weights = &atom->x[0][j]; stride = 3; - } else if (val.which == ArgInfo::V) { + } else if (val1.which == ArgInfo::V) { weights = &atom->v[0][j]; stride = 3; bin_atoms(&atom->v[0][j],3); - } else if (val.which == ArgInfo::F) { + } else if (val1.which == ArgInfo::F) { weights = &atom->f[0][j]; stride = 3; } // invoke compute if not previously invoked - if (val.which == ArgInfo::COMPUTE) { + if (val1.which == ArgInfo::COMPUTE) { if (kind == GLOBAL && mode == SCALAR) { if (j == 0) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_SCALAR)) { - val.val.c->compute_scalar(); - val.val.c->invoked_flag |= Compute::INVOKED_SCALAR; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_SCALAR)) { + val1.val.c->compute_scalar(); + val1.val.c->invoked_flag |= Compute::INVOKED_SCALAR; } - weight = val.val.c->scalar; + weight = val1.val.c->scalar; } else { - if (!(val.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { - val.val.c->compute_vector(); - val.val.c->invoked_flag |= Compute::INVOKED_VECTOR; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { + val1.val.c->compute_vector(); + val1.val.c->invoked_flag |= Compute::INVOKED_VECTOR; } - weight = val.val.c->vector[j-1]; + weight = val1.val.c->vector[j-1]; } } else if (kind == GLOBAL && mode == VECTOR) { if (j == 0) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { - val.val.c->compute_vector(); - val.val.c->invoked_flag |= Compute::INVOKED_VECTOR; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { + val1.val.c->compute_vector(); + val1.val.c->invoked_flag |= Compute::INVOKED_VECTOR; } - weights = val.val.c->vector; + weights = val1.val.c->vector; stride = 1; } else { - if (!(val.val.c->invoked_flag & Compute::INVOKED_ARRAY)) { - val.val.c->compute_array(); - val.val.c->invoked_flag |= Compute::INVOKED_ARRAY; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_ARRAY)) { + val1.val.c->compute_array(); + val1.val.c->invoked_flag |= Compute::INVOKED_ARRAY; } - if (val.val.c->array) weights = &val.val.c->array[0][j-1]; - stride = val.val.c->size_array_cols; + if (val1.val.c->array) weights = &val1.val.c->array[0][j-1]; + stride = val1.val.c->size_array_cols; } } else if (kind == PERATOM) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { - val.val.c->compute_peratom(); - val.val.c->invoked_flag |= Compute::INVOKED_PERATOM; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { + val1.val.c->compute_peratom(); + val1.val.c->invoked_flag |= Compute::INVOKED_PERATOM; } if (j == 0) { - weights = val.val.c->vector_atom; + weights = val1.val.c->vector_atom; stride = 1; - } else if (val.val.c->array_atom) { - weights = &val.val.c->array_atom[0][j-1]; - stride = val.val.c->size_peratom_cols; + } else if (val1.val.c->array_atom) { + weights = &val1.val.c->array_atom[0][j-1]; + stride = val1.val.c->size_peratom_cols; } } else if (kind == LOCAL) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_LOCAL)) { - val.val.c->compute_local(); - val.val.c->invoked_flag |= Compute::INVOKED_LOCAL; + if (!(val1.val.c->invoked_flag & Compute::INVOKED_LOCAL)) { + val1.val.c->compute_local(); + val1.val.c->invoked_flag |= Compute::INVOKED_LOCAL; } if (j == 0) { - weights = val.val.c->vector_local; + weights = val1.val.c->vector_local; stride = 1; - } else if (val.val.c->array_local) { - weights = &val.val.c->array_local[0][j-1]; - stride = val.val.c->size_local_cols; + } else if (val1.val.c->array_local) { + weights = &val1.val.c->array_local[0][j-1]; + stride = val1.val.c->size_local_cols; } } // access fix fields, guaranteed to be ready - } else if (val.which == ArgInfo::FIX) { + } else if (val1.which == ArgInfo::FIX) { if (kind == GLOBAL && mode == SCALAR) { - if (j == 0) weight = val.val.f->compute_scalar(); - else weight = val.val.f->compute_vector(j-1); + if (j == 0) weight = val1.val.f->compute_scalar(); + else weight = val1.val.f->compute_vector(j-1); } else if (kind == GLOBAL && mode == VECTOR) { error->all(FLERR,"Fix ave/histo/weight option not yet supported"); // NOTE: need to allocate local storage if (j == 0) { - int n = val.val.f->size_vector; - for (int i = 0; i < n; i++) weights[n] = val.val.f->compute_vector(i); + int n = val1.val.f->size_vector; + for (int i = 0; i < n; i++) weights[n] = val1.val.f->compute_vector(i); } else { - int n = val.val.f->size_vector; - for (int i = 0; i < n; i++) weights[n] = val.val.f->compute_array(i,j-1); + int n = val1.val.f->size_vector; + for (int i = 0; i < n; i++) weights[n] = val1.val.f->compute_array(i,j-1); } } else if (kind == PERATOM) { if (j == 0) { - weights = val.val.f->vector_atom; + weights = val1.val.f->vector_atom; stride = 1; - } else if (val.val.f->array_atom) { - weights = &val.val.f->array_atom[0][j-1]; - stride = val.val.f->size_peratom_cols; + } else if (val1.val.f->array_atom) { + weights = &val1.val.f->array_atom[0][j-1]; + stride = val1.val.f->size_peratom_cols; } } else if (kind == LOCAL) { if (j == 0) { - weights = val.val.f->vector_local; + weights = val1.val.f->vector_local; stride = 1; - } else if (val.val.f->array_local) { - weights = &val.val.f->array_local[0][j-1]; - stride = val.val.f->size_local_cols; + } else if (val1.val.f->array_local) { + weights = &val1.val.f->array_local[0][j-1]; + stride = val1.val.f->size_local_cols; } } // evaluate equal-style variable - } else if (val.which == ArgInfo::VARIABLE && kind == GLOBAL) { - weight = input->variable->compute_equal(val.val.v); + } else if (val1.which == ArgInfo::VARIABLE && kind == GLOBAL) { + weight = input->variable->compute_equal(val1.val.v); - } else if (val.which == ArgInfo::VARIABLE && kind == PERATOM) { + } else if (val1.which == ArgInfo::VARIABLE && kind == PERATOM) { if (atom->nmax > maxatom) { memory->destroy(vector); maxatom = atom->nmax; memory->create(vector,maxatom,"ave/histo/weight:vector"); } - input->variable->compute_atom(val.val.v,igroup,vector,1,0); + input->variable->compute_atom(val1.val.v,igroup,vector,1,0); weights = vector; stride = 1; } // bin values using weights, values are 1st value (i = 0) - val = values[0]; - j = val.argindex; + auto &val0 = values[0]; + j = val0.argindex; // atom attributes - if (val.which == ArgInfo::X && weights != nullptr) + if (val0.which == ArgInfo::X && weights != nullptr) bin_atoms_weights(&atom->x[0][j],3,weights,stride); - else if (val.which == ArgInfo::V && weights != nullptr) + else if (val0.which == ArgInfo::V && weights != nullptr) bin_atoms_weights(&atom->v[0][j],3,weights,stride); - else if (val.which == ArgInfo::F && weights != nullptr) + else if (val0.which == ArgInfo::F && weights != nullptr) bin_atoms_weights(&atom->f[0][j],3,weights,stride); // invoke compute if not previously invoked - if (val.which == ArgInfo::COMPUTE) { + if (val0.which == ArgInfo::COMPUTE) { if (kind == GLOBAL && mode == SCALAR) { if (j == 0) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_SCALAR)) { - val.val.c->compute_scalar(); - val.val.c->invoked_flag |= Compute::INVOKED_SCALAR; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_SCALAR)) { + val0.val.c->compute_scalar(); + val0.val.c->invoked_flag |= Compute::INVOKED_SCALAR; } - bin_one_weights(val.val.c->scalar,weight); + bin_one_weights(val0.val.c->scalar,weight); } else { - if (!(val.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { - val.val.c->compute_vector(); - val.val.c->invoked_flag |= Compute::INVOKED_VECTOR; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { + val0.val.c->compute_vector(); + val0.val.c->invoked_flag |= Compute::INVOKED_VECTOR; } - bin_one_weights(val.val.c->vector[j-1],weight); + bin_one_weights(val0.val.c->vector[j-1],weight); } } else if (kind == GLOBAL && mode == VECTOR) { if (j == 0) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { - val.val.c->compute_vector(); - val.val.c->invoked_flag |= Compute::INVOKED_VECTOR; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_VECTOR)) { + val0.val.c->compute_vector(); + val0.val.c->invoked_flag |= Compute::INVOKED_VECTOR; } - bin_vector_weights(val.val.c->size_vector,val.val.c->vector,1, + bin_vector_weights(val0.val.c->size_vector,val0.val.c->vector,1, weights,stride); } else { - if (!(val.val.c->invoked_flag & Compute::INVOKED_ARRAY)) { - val.val.c->compute_array(); - val.val.c->invoked_flag |= Compute::INVOKED_ARRAY; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_ARRAY)) { + val0.val.c->compute_array(); + val0.val.c->invoked_flag |= Compute::INVOKED_ARRAY; } - if (val.val.c->array) - bin_vector_weights(val.val.c->size_array_rows,&val.val.c->array[0][j-1], - val.val.c->size_array_cols,weights,stride); + if (val0.val.c->array) + bin_vector_weights(val0.val.c->size_array_rows,&val0.val.c->array[0][j-1], + val0.val.c->size_array_cols,weights,stride); } } else if (kind == PERATOM) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { - val.val.c->compute_peratom(); - val.val.c->invoked_flag |= Compute::INVOKED_PERATOM; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { + val0.val.c->compute_peratom(); + val0.val.c->invoked_flag |= Compute::INVOKED_PERATOM; } if (j == 0) - bin_atoms_weights(val.val.c->vector_atom,1,weights, stride); - else if (val.val.c->array_atom) - bin_atoms_weights(&val.val.c->array_atom[0][j-1], - val.val.c->size_peratom_cols,weights,stride); + bin_atoms_weights(val0.val.c->vector_atom,1,weights, stride); + else if (val0.val.c->array_atom) + bin_atoms_weights(&val0.val.c->array_atom[0][j-1], + val0.val.c->size_peratom_cols,weights,stride); } else if (kind == LOCAL) { - if (!(val.val.c->invoked_flag & Compute::INVOKED_LOCAL)) { - val.val.c->compute_local(); - val.val.c->invoked_flag |= Compute::INVOKED_LOCAL; + if (!(val0.val.c->invoked_flag & Compute::INVOKED_LOCAL)) { + val0.val.c->compute_local(); + val0.val.c->invoked_flag |= Compute::INVOKED_LOCAL; } if (j == 0) - bin_vector_weights(val.val.c->size_local_rows, - val.val.c->vector_local,1,weights,stride); - else if (val.val.c->array_local) - bin_vector_weights(val.val.c->size_local_rows, - &val.val.c->array_local[0][j-1], - val.val.c->size_local_cols,weights,stride); + bin_vector_weights(val0.val.c->size_local_rows, + val0.val.c->vector_local,1,weights,stride); + else if (val0.val.c->array_local) + bin_vector_weights(val0.val.c->size_local_rows, + &val0.val.c->array_local[0][j-1], + val0.val.c->size_local_cols,weights,stride); } // access fix fields, guaranteed to be ready - } else if (val.which == ArgInfo::FIX) { + } else if (val0.which == ArgInfo::FIX) { if (kind == GLOBAL && mode == SCALAR) { - if (j == 0) bin_one_weights(val.val.f->compute_scalar(),weight); - else bin_one_weights(val.val.f->compute_vector(j-1),weight); + if (j == 0) bin_one_weights(val0.val.f->compute_scalar(),weight); + else bin_one_weights(val0.val.f->compute_vector(j-1),weight); } else if (kind == GLOBAL && mode == VECTOR) { if (j == 0) { - int n = val.val.f->size_vector; + int n = val0.val.f->size_vector; for (int i = 0; i < n; i++) - bin_one_weights(val.val.f->compute_vector(i),weights[i*stride]); + bin_one_weights(val0.val.f->compute_vector(i),weights[i*stride]); } else { - int n = val.val.f->size_vector; + int n = val0.val.f->size_vector; for (int i = 0; i < n; i++) - bin_one_weights(val.val.f->compute_array(i,j-1),weights[i*stride]); + bin_one_weights(val0.val.f->compute_array(i,j-1),weights[i*stride]); } } else if (kind == PERATOM) { if (j == 0) - bin_atoms_weights(val.val.f->vector_atom,1,weights,stride); - else if (val.val.f->array_atom) - bin_atoms_weights(&val.val.f->array_atom[0][j-1],val.val.f->size_peratom_cols, + bin_atoms_weights(val0.val.f->vector_atom,1,weights,stride); + else if (val0.val.f->array_atom) + bin_atoms_weights(&val0.val.f->array_atom[0][j-1],val0.val.f->size_peratom_cols, weights,stride); } else if (kind == LOCAL) { - if (j == 0) bin_vector_weights(val.val.f->size_local_rows,val.val.f->vector_local,1, + if (j == 0) bin_vector_weights(val0.val.f->size_local_rows,val0.val.f->vector_local,1, weights,stride); - else if (val.val.f->array_local) - bin_vector_weights(val.val.f->size_local_rows,&val.val.f->array_local[0][j-1], - val.val.f->size_local_cols,weights,stride); + else if (val0.val.f->array_local) + bin_vector_weights(val0.val.f->size_local_rows,&val0.val.f->array_local[0][j-1], + val0.val.f->size_local_cols,weights,stride); } // evaluate equal-style variable - } else if (val.which == ArgInfo::VARIABLE && kind == GLOBAL) { - bin_one_weights(input->variable->compute_equal(val.val.v),weight); + } else if (val0.which == ArgInfo::VARIABLE && kind == GLOBAL) { + bin_one_weights(input->variable->compute_equal(val0.val.v),weight); - } else if (val.which == ArgInfo::VARIABLE && kind == PERATOM) { + } else if (val0.which == ArgInfo::VARIABLE && kind == PERATOM) { if (atom->nmax > maxatom) { memory->destroy(vector); maxatom = atom->nmax; memory->create(vector,maxatom,"ave/histo/weight:vector"); } - input->variable->compute_atom(val.val.v,igroup,vector,1,0); + input->variable->compute_atom(val0.val.v,igroup,vector,1,0); bin_atoms_weights(vector,1,weights,stride); } diff --git a/src/fix_ave_time.cpp b/src/fix_ave_time.cpp index 833d5f42072..417e0fd97a9 100644 --- a/src/fix_ave_time.cpp +++ b/src/fix_ave_time.cpp @@ -178,7 +178,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : if (val.argindex && (val.val.f->array_flag == 0)) error->all(FLERR,"Fix ave/time fix {} does not calculate an array", val.id); if (val.argindex && (val.val.f->size_array_rows_variable)) - error->all(FLERR,"Fix ave/time fix {} array cannot be variable length", val.id); + error->all(FLERR,"Fix ave/time fix {} array cannot have variable row length", val.id); if (val.argindex && (val.argindex > val.val.f->size_array_cols)) error->all(FLERR,"Fix ave/time fix {} array is accessed out-of-range", val.id); if (nevery % val.val.f->global_freq) @@ -562,7 +562,8 @@ void FixAveTime::invoke_scalar(bigint ntimestep) scalar = val.val.f->compute_vector(val.argindex-1); // evaluate equal-style or vector-style variable - // ensure no out-of-range access to vector-style variable + // if index exceeds vector length, use a zero value + // this can be useful if vector length is not known a priori } else if (val.which == ArgInfo::VARIABLE) { if (val.argindex == 0) @@ -570,7 +571,7 @@ void FixAveTime::invoke_scalar(bigint ntimestep) else { double *varvec; int nvec = input->variable->compute_vector(val.val.v,&varvec); - if (nvec < val.argindex) scalar = 0.0; + if (val.argindex > nvec) scalar = 0.0; else scalar = varvec[val.argindex-1]; } } @@ -1033,41 +1034,44 @@ void FixAveTime::options(int iarg, int narg, char **arg) // optional args while (iarg < narg) { - if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if ((strcmp(arg[iarg],"file") == 0) || (strcmp(arg[iarg],"append") == 0)) { + if (iarg+2 > narg) + utils::missing_cmd_args(FLERR, std::string("fix ave/time ")+arg[iarg], error); yaml_flag = utils::strmatch(arg[iarg+1],"\\.[yY][aA]?[mM][lL]$"); if (comm->me == 0) { - fp = fopen(arg[iarg+1],"w"); + if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); + else fp = fopen(arg[iarg+1],"a"); if (fp == nullptr) error->one(FLERR,"Cannot open fix ave/time file {}: {}", arg[iarg+1], utils::getsyserror()); } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time ave", error); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; - else error->all(FLERR,"Illegal fix ave/time command"); + else error->all(FLERR,"Unknown fix ave/time ave keyword {}", arg[iarg+1]); if (ave == WINDOW) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "fix ave/time ave window", error); nwindow = utils::inumeric(FLERR,arg[iarg+2],false,lmp); - if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/time command"); + if (nwindow <= 0) + error->all(FLERR,"Illegal fix ave/time ave window argument {}; must be > 0", nwindow); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time start", error); startstep = utils::inumeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time mode", error); if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR; else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR; - else error->all(FLERR,"Illegal fix ave/time command"); + else error->all(FLERR,"Unknown fix ave/time mode {}", arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"off") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time off", error); memory->grow(offlist,noff+1,"ave/time:offlist"); offlist[noff++] = utils::inumeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; @@ -1075,27 +1079,27 @@ void FixAveTime::options(int iarg, int narg, char **arg) overwrite = 1; iarg += 1; } else if (strcmp(arg[iarg],"format") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time format", error); delete[] format_user; format_user = utils::strdup(arg[iarg+1]); format = format_user; iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time title1", error); delete[] title1; title1 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time title2", error); delete[] title2; title2 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/time title3", error); delete[] title3; title3 = utils::strdup(arg[iarg+1]); iarg += 2; - } else error->all(FLERR,"Unknown fix ave/time command option {}", arg[iarg]); + } else error->all(FLERR,"Unknown fix ave/time keyword {}", arg[iarg]); } } diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index 23a56c0a9d6..2a32e96106a 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -61,20 +61,36 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : if (nevery < 0) error->all(FLERR,"Illegal fix balance command"); thresh = utils::numeric(FLERR,arg[4],false,lmp); - if (strcmp(arg[5],"shift") == 0) lbstyle = SHIFT; - else if (strcmp(arg[5],"rcb") == 0) lbstyle = BISECTION; - else error->all(FLERR,"Illegal fix balance command"); + reportonly = 0; + if (strcmp(arg[5],"shift") == 0) { + lbstyle = SHIFT; + } else if (strcmp(arg[5],"rcb") == 0) { + lbstyle = BISECTION; + } else if (strcmp(arg[5],"report") == 0) { + lbstyle = SHIFT; + reportonly = 1; + } else error->all(FLERR,"Unknown fix balance style {}", arg[5]); int iarg = 5; if (lbstyle == SHIFT) { - if (iarg+4 > narg) utils::missing_cmd_args(FLERR, "fix balance shift", error); - bstr = arg[iarg+1]; - if (bstr.size() > Balance::BSTR_SIZE) error->all(FLERR,"Illegal fix balance shift command"); - nitermax = utils::inumeric(FLERR,arg[iarg+2],false,lmp); - if (nitermax <= 0) error->all(FLERR,"Illegal fix balance command"); - stopthresh = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (stopthresh < 1.0) error->all(FLERR,"Illegal fix balance command"); - iarg += 4; + if (reportonly) { + if (dimension == 2) + bstr = "xy"; + else + bstr = "xyz"; + nitermax = 5; + stopthresh = 1.1; + iarg++; + } else { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR, "fix balance shift", error); + bstr = arg[iarg+1]; + if (bstr.size() > Balance::BSTR_SIZE) error->all(FLERR,"Illegal fix balance shift command"); + nitermax = utils::inumeric(FLERR,arg[iarg+2],false,lmp); + if (nitermax <= 0) error->all(FLERR,"Illegal fix balance command"); + stopthresh = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (stopthresh < 1.0) error->all(FLERR,"Illegal fix balance command"); + iarg += 4; + } } else if (lbstyle == BISECTION) { iarg++; @@ -175,7 +191,7 @@ void FixBalance::setup(int /*vflag*/) void FixBalance::setup_pre_exchange() { // do not allow rebalancing twice on same timestep - // even if wanted to, can mess up elapsed time in ImbalanceTime + // even if you wanted to, it can mess up elapsed time in ImbalanceTime if (update->ntimestep == lastbalance) return; lastbalance = update->ntimestep; @@ -195,6 +211,7 @@ void FixBalance::setup_pre_exchange() balance->set_weights(); imbnow = balance->imbalance_factor(maxloadperproc); + if (imbnow > thresh) rebalance(); // next timestep to rebalance @@ -263,6 +280,13 @@ void FixBalance::pre_neighbor() void FixBalance::rebalance() { + // return immediately if only reporting of the imbalance is requested + + if (reportonly) { + imbprev = imbfinal = imbnow; + return; + } + imbprev = imbnow; // invoke balancer and reset comm->uniform flag diff --git a/src/fix_balance.h b/src/fix_balance.h index 964357a6348..a319710ac68 100644 --- a/src/fix_balance.h +++ b/src/fix_balance.h @@ -45,6 +45,7 @@ class FixBalance : public Fix { std::string bstr; int wtflag; // 1 for weighted balancing int sortflag; // 1 for sorting comm messages + int reportonly; // 1 if skipping rebalancing and only computing imbalance double imbnow; // current imbalance factor double imbprev; // imbalance factor before last rebalancing diff --git a/src/fix_bond_history.cpp b/src/fix_bond_history.cpp index cae9dc744d3..2d344e24fca 100644 --- a/src/fix_bond_history.cpp +++ b/src/fix_bond_history.cpp @@ -27,8 +27,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define LB_FACTOR 1.5 -#define DELTA 8192 +static constexpr double LB_FACTOR = 1.5; +static constexpr int DELTA = 8192; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_box_relax.cpp b/src/fix_box_relax.cpp index 1f715a1dd48..cf8df7cd028 100644 --- a/src/fix_box_relax.cpp +++ b/src/fix_box_relax.cpp @@ -35,10 +35,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -enum{NONE,XYZ,XY,YZ,XZ}; -enum{ISO,ANISO,TRICLINIC}; - -#define MAX_LIFO_DEPTH 2 // 3 box0 arrays in *.h dimensioned to this +enum { NONE, XYZ, XY, YZ, XZ }; +enum { ISO, ANISO, TRICLINIC }; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_box_relax.h b/src/fix_box_relax.h index 0870ed522d9..bf9379ceac1 100644 --- a/src/fix_box_relax.h +++ b/src/fix_box_relax.h @@ -52,11 +52,12 @@ class FixBoxRelax : public Fix { double vmax, pv2e, pflagsum; int kspace_flag; - int current_lifo; // LIFO stack pointer - double boxlo0[2][3]; // box bounds at start of line search - double boxhi0[2][3]; - double boxtilt0[2][3]; // xy,xz,yz tilts at start of line search - double ds[6]; // increment in scale matrix + static constexpr int MAX_LIFO_DEPTH = 2; + int current_lifo; // LIFO stack pointer + double boxlo0[MAX_LIFO_DEPTH][3]; // low box bounds at start of line search + double boxhi0[MAX_LIFO_DEPTH][3]; // high box bounds at start of line search + double boxtilt0[MAX_LIFO_DEPTH][3]; // xy,xz,yz tilts at start of line search + double ds[6]; // increment in scale matrix int scaleyz; // 1 if yz scaled with lz int scalexz; // 1 if xz scaled with lz diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 02aaae59409..bb27faeaa81 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -34,171 +34,204 @@ #include #include +#include +#include using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -enum{NONE=0,FINAL,DELTA,SCALE,VEL,ERATE,TRATE,VOLUME,WIGGLE,VARIABLE}; -enum{ONE_FROM_ONE,ONE_FROM_TWO,TWO_FROM_ONE}; - /* ---------------------------------------------------------------------- */ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), irregular(nullptr), set(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal fix deform command"); + const std::string thiscmd = fmt::format("fix {}", style); + if (narg < 4) utils::missing_cmd_args(FLERR, thiscmd, error); no_change_box = 1; restart_global = 1; pre_exchange_migrate = 1; - nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery <= 0) error->all(FLERR,"Illegal fix deform command"); + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery <= 0) error->all(FLERR, "Fix {} Nevery must be > 0", style); + + // arguments for child classes + + std::unordered_set child_parameters; + std::unordered_map child_styles; + int nskip; + if (utils::strmatch(style, "^deform/pressure")) { + child_parameters.insert("box"); + child_styles.insert({{"pressure", 4}, {"pressure/mean", 4}, {"volume", 2}}); + } // set defaults set = new Set[6]; - memset(set,0,6*sizeof(Set)); + memset(set, 0, 6 * sizeof(Set)); - // parse arguments + // parse all parameter/style arguments for this parent and also child classes + // for child classes, simply store them in leftover_iarg and skip over them triclinic = domain->triclinic; int index; int iarg = 4; + while (iarg < narg) { - if (strcmp(arg[iarg],"x") == 0 || - strcmp(arg[iarg],"y") == 0 || - strcmp(arg[iarg],"z") == 0) { + if ((strcmp(arg[iarg], "x") == 0) + || (strcmp(arg[iarg], "y") == 0) + || (strcmp(arg[iarg], "z") == 0)) { - if (strcmp(arg[iarg],"x") == 0) index = 0; - else if (strcmp(arg[iarg],"y") == 0) index = 1; - else if (strcmp(arg[iarg],"z") == 0) index = 2; + if (strcmp(arg[iarg], "x") == 0) index = 0; + else if (strcmp(arg[iarg], "y") == 0) index = 1; + else if (strcmp(arg[iarg], "z") == 0) index = 2; - if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); - if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, thiscmd, error); + if (strcmp(arg[iarg + 1], "final") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " final", error); set[index].style = FINAL; - set[index].flo = utils::numeric(FLERR,arg[iarg+2],false,lmp); - set[index].fhi = utils::numeric(FLERR,arg[iarg+3],false,lmp); + set[index].flo = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + set[index].fhi = utils::numeric(FLERR, arg[iarg + 3], false, lmp); iarg += 4; - } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "delta") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " delta", error); set[index].style = DELTA; - set[index].dlo = utils::numeric(FLERR,arg[iarg+2],false,lmp); - set[index].dhi = utils::numeric(FLERR,arg[iarg+3],false,lmp); + set[index].dlo = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + set[index].dhi = utils::numeric(FLERR, arg[iarg + 3], false, lmp); iarg += 4; - } else if (strcmp(arg[iarg+1],"scale") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "scale") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " scale", error); set[index].style = SCALE; - set[index].scale = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].scale = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"vel") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "vel") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " vel", error); set[index].style = VEL; - set[index].vel = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].vel = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"erate") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "erate") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " erate", error); set[index].style = ERATE; - set[index].rate = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].rate = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"trate") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "trate") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " trate", error); set[index].style = TRATE; - set[index].rate = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].rate = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"volume") == 0) { + } else if (strcmp(arg[iarg + 1], "volume") == 0) { set[index].style = VOLUME; iarg += 2; - } else if (strcmp(arg[iarg+1],"wiggle") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "wiggle") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " wiggle", error); set[index].style = WIGGLE; - set[index].amplitude = utils::numeric(FLERR,arg[iarg+2],false,lmp); - set[index].tperiod = utils::numeric(FLERR,arg[iarg+3],false,lmp); + set[index].amplitude = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + set[index].tperiod = utils::numeric(FLERR, arg[iarg + 3], false, lmp); if (set[index].tperiod <= 0.0) - error->all(FLERR,"Illegal fix deform command"); + error->all(FLERR, "Illegal fix {} wiggle period, must be positive", style); iarg += 4; - } else if (strcmp(arg[iarg+1],"variable") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "variable") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " variable", error); set[index].style = VARIABLE; - if (strstr(arg[iarg+2],"v_") != arg[iarg+2]) - error->all(FLERR,"Illegal fix deform command"); - if (strstr(arg[iarg+3],"v_") != arg[iarg+3]) - error->all(FLERR,"Illegal fix deform command"); + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) + error->all(FLERR, "Illegal fix {} variable name {}", style, arg[iarg + 2]); + if (strstr(arg[iarg + 3], "v_") != arg[iarg + 3]) + error->all(FLERR, "Illegal fix {} variable name {}", style, arg[iarg + 3]); delete[] set[index].hstr; delete[] set[index].hratestr; - set[index].hstr = utils::strdup(&arg[iarg+2][2]); - set[index].hratestr = utils::strdup(&arg[iarg+3][2]); + set[index].hstr = utils::strdup(&arg[iarg + 2][2]); + set[index].hratestr = utils::strdup(&arg[iarg + 3][2]); iarg += 4; - } else error->all(FLERR,"Illegal fix deform command"); - - } else if (strcmp(arg[iarg],"xy") == 0 || - strcmp(arg[iarg],"xz") == 0 || - strcmp(arg[iarg],"yz") == 0) { - - if (triclinic == 0) - error->all(FLERR,"Fix deform tilt factors require triclinic box"); - if (strcmp(arg[iarg],"xy") == 0) index = 5; - else if (strcmp(arg[iarg],"xz") == 0) index = 4; - else if (strcmp(arg[iarg],"yz") == 0) index = 3; - - if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); - if (strcmp(arg[iarg+1],"final") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (child_styles.find(arg[iarg + 1]) != child_styles.end()) { + nskip = child_styles[arg[iarg + 1]]; + if (iarg + nskip > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} {}", style, arg[iarg + 1]), error); + for (int i = 0; i < nskip; i++) leftover_iarg.push_back(iarg + i); + iarg += nskip; + } else error->all(FLERR, "Illegal fix {} command argument: {}", style, arg[iarg + 1]); + + } else if ((strcmp(arg[iarg], "xy") == 0) + || (strcmp(arg[iarg], "xz") == 0) + || (strcmp(arg[iarg], "yz") == 0)) { + + if (triclinic == 0) error->all(FLERR,"Fix {} tilt factors require triclinic box", style); + if (strcmp(arg[iarg], "xy") == 0) index = 5; + else if (strcmp(arg[iarg], "xz") == 0) index = 4; + else if (strcmp(arg[iarg], "yz") == 0) index = 3; + + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, thiscmd, error); + if (strcmp(arg[iarg + 1], "final") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " final", error); set[index].style = FINAL; - set[index].ftilt = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].ftilt = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"delta") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "delta") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " delta", error); set[index].style = DELTA; - set[index].dtilt = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].dtilt = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"vel") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "vel") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " vel", error); set[index].style = VEL; - set[index].vel = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].vel = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"erate") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "erate") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " erate", error); set[index].style = ERATE; - set[index].rate = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].rate = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"trate") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "trate") == 0) { + if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, thiscmd + " trate", error); set[index].style = TRATE; - set[index].rate = utils::numeric(FLERR,arg[iarg+2],false,lmp); + set[index].rate = utils::numeric(FLERR, arg[iarg + 2], false, lmp); iarg += 3; - } else if (strcmp(arg[iarg+1],"wiggle") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "wiggle") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " wiggle", error); set[index].style = WIGGLE; - set[index].amplitude = utils::numeric(FLERR,arg[iarg+2],false,lmp); - set[index].tperiod = utils::numeric(FLERR,arg[iarg+3],false,lmp); + set[index].amplitude = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + set[index].tperiod = utils::numeric(FLERR, arg[iarg + 3], false, lmp); if (set[index].tperiod <= 0.0) - error->all(FLERR,"Illegal fix deform command"); + error->all(FLERR, "Illegal fix {} wiggle period, must be positive", style); iarg += 4; - } else if (strcmp(arg[iarg+1],"variable") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg + 1], "variable") == 0) { + if (iarg + 4 > narg) utils::missing_cmd_args(FLERR, thiscmd + " variable", error); set[index].style = VARIABLE; - if (strstr(arg[iarg+2],"v_") != arg[iarg+2]) - error->all(FLERR,"Illegal fix deform command"); - if (strstr(arg[iarg+3],"v_") != arg[iarg+3]) - error->all(FLERR,"Illegal fix deform command"); + if (strstr(arg[iarg + 2], "v_") != arg[iarg + 2]) + error->all(FLERR, "Illegal fix {} variable name {}", style, arg[iarg + 2]); + if (strstr(arg[iarg + 3], "v_") != arg[iarg + 3]) + error->all(FLERR, "Illegal fix {} variable name {}", style, arg[iarg + 3]); delete[] set[index].hstr; delete[] set[index].hratestr; - set[index].hstr = utils::strdup(&arg[iarg+2][2]); - set[index].hratestr = utils::strdup(&arg[iarg+3][2]); + set[index].hstr = utils::strdup(&arg[iarg + 2][2]); + set[index].hratestr = utils::strdup(&arg[iarg + 3][2]); iarg += 4; - } else error->all(FLERR,"Illegal fix deform command"); - + } else if (child_styles.find(arg[iarg + 1]) != child_styles.end()) { + nskip = child_styles[arg[iarg + 1]]; + if (iarg + nskip > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} {}", style, arg[iarg + 1]), error); + for (int i = 0; i < nskip; i++) leftover_iarg.push_back(iarg + i); + iarg += nskip; + } else error->all(FLERR, "Illegal fix {} command argument: {}", style, arg[iarg + 1]); + } else if (child_parameters.find(arg[iarg]) != child_parameters.end()) { + if (child_styles.find(arg[iarg + 1]) != child_styles.end()) { + nskip = child_styles[arg[iarg + 1]]; + if (iarg + nskip > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} {}", style, arg[iarg + 1]), error); + for (int i = 0; i < nskip; i++) leftover_iarg.push_back(iarg + i); + iarg += nskip; + } else error->all(FLERR, "Illegal fix {} command argument: {}", style, arg[iarg + 1]); } else break; } // read options from end of input line + + iarg_options_start = iarg; + options(narg - iarg, &arg[iarg]); + // no x remap effectively moves atoms within box, so set restart_pbc - options(narg-iarg,&arg[iarg]); if (remapflag != Domain::X_REMAP) restart_pbc = 1; // setup dimflags used by other classes to check for volume-change conflicts @@ -217,28 +250,19 @@ irregular(nullptr), set(nullptr) // no tensile deformation on shrink-wrapped dims // b/c shrink wrap will change box-length - if (set[0].style && - (domain->boundary[0][0] >= 2 || domain->boundary[0][1] >= 2)) - error->all(FLERR,"Cannot use fix deform on a shrink-wrapped boundary"); - if (set[1].style && - (domain->boundary[1][0] >= 2 || domain->boundary[1][1] >= 2)) - error->all(FLERR,"Cannot use fix deform on a shrink-wrapped boundary"); - if (set[2].style && - (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) - error->all(FLERR,"Cannot use fix deform on a shrink-wrapped boundary"); + for (int i = 0; i < 3; i++) + if (set[i].style && (domain->boundary[i][0] >= 2 || domain->boundary[i][1] >= 2)) + error->all(FLERR, "Cannot use fix {} on a shrink-wrapped boundary", style); // no tilt deformation on shrink-wrapped 2nd dim // b/c shrink wrap will change tilt factor in domain::reset_box() - if (set[3].style && - (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) - error->all(FLERR,"Cannot use fix deform tilt on a shrink-wrapped 2nd dim"); - if (set[4].style && - (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) - error->all(FLERR,"Cannot use fix deform tilt on a shrink-wrapped 2nd dim"); - if (set[5].style && - (domain->boundary[1][0] >= 2 || domain->boundary[1][1] >= 2)) - error->all(FLERR,"Cannot use fix deform tilt on a shrink-wrapped 2nd dim"); + if (set[3].style && (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) + error->all(FLERR, "Cannot use fix {} tilt on a shrink-wrapped 2nd dim", style); + if (set[4].style && (domain->boundary[2][0] >= 2 || domain->boundary[2][1] >= 2)) + error->all(FLERR, "Cannot use fix {} tilt on a shrink-wrapped 2nd dim", style); + if (set[5].style && (domain->boundary[1][0] >= 2 || domain->boundary[1][1] >= 2)) + error->all(FLERR, "Cannot use fix {} tilt on a shrink-wrapped 2nd dim", style); // apply scaling to FINAL,DELTA,VEL,WIGGLE since they have dist/vel units @@ -247,7 +271,7 @@ irregular(nullptr), set(nullptr) if (set[i].style == FINAL || set[i].style == DELTA || set[i].style == VEL || set[i].style == WIGGLE) flag = 1; - double xscale,yscale,zscale; + double xscale, yscale, zscale; if (flag && scaleflag) { xscale = domain->lattice->xlattice; yscale = domain->lattice->ylattice; @@ -284,40 +308,40 @@ irregular(nullptr), set(nullptr) // for VOLUME, setup links to other dims // fixed, dynamic1, dynamic2 + // only check for parent, otherwise child will check - for (int i = 0; i < 3; i++) { - if (set[i].style != VOLUME) continue; - int other1 = (i+1) % 3; - int other2 = (i+2) % 3; - - if (set[other1].style == NONE) { - if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all(FLERR,"Fix deform volume setting is invalid"); - set[i].substyle = ONE_FROM_ONE; - set[i].fixed = other1; - set[i].dynamic1 = other2; - } else if (set[other2].style == NONE) { - if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all(FLERR,"Fix deform volume setting is invalid"); - set[i].substyle = ONE_FROM_ONE; - set[i].fixed = other2; - set[i].dynamic1 = other1; - } else if (set[other1].style == VOLUME) { - if (set[other2].style == NONE || set[other2].style == VOLUME) - error->all(FLERR,"Fix deform volume setting is invalid"); - set[i].substyle = TWO_FROM_ONE; - set[i].fixed = other1; - set[i].dynamic1 = other2; - } else if (set[other2].style == VOLUME) { + if (strcmp(style, "deform") == 0) { + for (int i = 0; i < 3; i++) { + if (set[i].style != VOLUME) continue; + int other1 = (i + 1) % 3; + int other2 = (i + 2) % 3; + + // Cannot use VOLUME option without at least one deformed dimension if (set[other1].style == NONE || set[other1].style == VOLUME) - error->all(FLERR,"Fix deform volume setting is invalid"); - set[i].substyle = TWO_FROM_ONE; - set[i].fixed = other2; - set[i].dynamic1 = other1; - } else { - set[i].substyle = ONE_FROM_TWO; - set[i].dynamic1 = other1; - set[i].dynamic2 = other2; + if (set[other2].style == NONE || set[other2].style == VOLUME) + error->all(FLERR, "Fix {} volume setting is invalid", style); + + if (set[other1].style == NONE) { + set[i].substyle = ONE_FROM_ONE; + set[i].fixed = other1; + set[i].dynamic1 = other2; + } else if (set[other2].style == NONE) { + set[i].substyle = ONE_FROM_ONE; + set[i].fixed = other2; + set[i].dynamic1 = other1; + } else if (set[other1].style == VOLUME) { + set[i].substyle = TWO_FROM_ONE; + set[i].fixed = other1; + set[i].dynamic1 = other2; + } else if (set[other2].style == VOLUME) { + set[i].substyle = TWO_FROM_ONE; + set[i].fixed = other2; + set[i].dynamic1 = other1; + } else { + set[i].substyle = ONE_FROM_TWO; + set[i].dynamic1 = other1; + set[i].dynamic2 = other2; + } } } @@ -348,8 +372,6 @@ irregular(nullptr), set(nullptr) if (force_reneighbor) irregular = new Irregular(lmp); else irregular = nullptr; - - TWOPI = 2.0*MY_PI; } /* ---------------------------------------------------------------------- */ @@ -394,7 +416,7 @@ void FixDeform::init() // domain, fix nvt/sllod, compute temp/deform only work on single h_rate if (modify->get_fix_by_style("deform").size() > 1) - error->all(FLERR,"More than one fix deform"); + error->all(FLERR, "More than one fix deform"); // Kspace setting @@ -411,14 +433,14 @@ void FixDeform::init() if (set[i].style != VARIABLE) continue; set[i].hvar = input->variable->find(set[i].hstr); if (set[i].hvar < 0) - error->all(FLERR,"Variable name for fix deform does not exist"); + error->all(FLERR, "Variable name {} for fix {} does not exist", set[i].hstr, style); if (!input->variable->equalstyle(set[i].hvar)) - error->all(FLERR,"Variable for fix deform is invalid style"); + error->all(FLERR, "Variable {} for fix {} is invalid style", set[i].hstr, style); set[i].hratevar = input->variable->find(set[i].hratestr); if (set[i].hratevar < 0) - error->all(FLERR,"Variable name for fix deform does not exist"); + error->all(FLERR, "Variable name {} for fix {} does not exist", set[i].hratestr, style); if (!input->variable->equalstyle(set[i].hratevar)) - error->all(FLERR,"Variable for fix deform is invalid style"); + error->all(FLERR, "Variable {} for fix {} is invalid style", set[i].hratestr, style); } // set start/stop values for box size and shape @@ -445,30 +467,26 @@ void FixDeform::init() set[i].lo_stop = set[i].lo_start + set[i].dlo; set[i].hi_stop = set[i].hi_start + set[i].dhi; } else if (set[i].style == SCALE) { - set[i].lo_stop = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*set[i].scale*(set[i].hi_start-set[i].lo_start); - set[i].hi_stop = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*set[i].scale*(set[i].hi_start-set[i].lo_start); + double shift = 0.5 * set[i].scale * (set[i].hi_start - set[i].lo_start); + set[i].lo_stop = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_stop = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; } else if (set[i].style == VEL) { - set[i].lo_stop = set[i].lo_start - 0.5*delt*set[i].vel; - set[i].hi_stop = set[i].hi_start + 0.5*delt*set[i].vel; + set[i].lo_stop = set[i].lo_start - 0.5 * delt * set[i].vel; + set[i].hi_stop = set[i].hi_start + 0.5 * delt * set[i].vel; } else if (set[i].style == ERATE) { - set[i].lo_stop = set[i].lo_start - - 0.5*delt*set[i].rate * (set[i].hi_start-set[i].lo_start); - set[i].hi_stop = set[i].hi_start + - 0.5*delt*set[i].rate * (set[i].hi_start-set[i].lo_start); + double shift = 0.5 * delt * set[i].rate * (set[i].hi_start - set[i].lo_start); + set[i].lo_stop = set[i].lo_start - shift; + set[i].hi_stop = set[i].hi_start + shift; if (set[i].hi_stop <= set[i].lo_stop) - error->all(FLERR,"Final box dimension due to fix deform is < 0.0"); + error->all(FLERR, "Final box dimension due to fix {} is < 0.0", style); } else if (set[i].style == TRATE) { - set[i].lo_stop = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt)); - set[i].hi_stop = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt)); + double shift = 0.5 * ((set[i].hi_start - set[i].lo_start) * exp(set[i].rate * delt)); + set[i].lo_stop = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_stop = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; } else if (set[i].style == WIGGLE) { - set[i].lo_stop = set[i].lo_start - - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - set[i].hi_stop = set[i].hi_start + - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); + double shift = 0.5 * set[i].amplitude * sin(MY_2PI * delt / set[i].tperiod); + set[i].lo_stop = set[i].lo_start - shift; + set[i].hi_stop = set[i].hi_start + shift; } } @@ -484,50 +502,46 @@ void FixDeform::init() } else if (set[i].style == DELTA) { set[i].tilt_stop = set[i].tilt_start + set[i].dtilt; } else if (set[i].style == VEL) { - set[i].tilt_stop = set[i].tilt_start + delt*set[i].vel; + set[i].tilt_stop = set[i].tilt_start + delt * set[i].vel; } else if (set[i].style == ERATE) { if (i == 3) set[i].tilt_stop = set[i].tilt_start + - delt*set[i].rate * (set[2].hi_start-set[2].lo_start); + delt * set[i].rate * (set[2].hi_start - set[2].lo_start); if (i == 4) set[i].tilt_stop = set[i].tilt_start + - delt*set[i].rate * (set[2].hi_start-set[2].lo_start); + delt * set[i].rate * (set[2].hi_start - set[2].lo_start); if (i == 5) set[i].tilt_stop = set[i].tilt_start + - delt*set[i].rate * (set[1].hi_start-set[1].lo_start); + delt * set[i].rate * (set[1].hi_start - set[1].lo_start); } else if (set[i].style == TRATE) { - set[i].tilt_stop = set[i].tilt_start * exp(set[i].rate*delt); + set[i].tilt_stop = set[i].tilt_start * exp(set[i].rate * delt); } else if (set[i].style == WIGGLE) { - set[i].tilt_stop = set[i].tilt_start + - set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); + double shift = set[i].amplitude * sin(MY_2PI * delt / set[i].tperiod); + set[i].tilt_stop = set[i].tilt_start + shift; // compute min/max for WIGGLE = extrema tilt factor will ever reach if (set[i].amplitude >= 0.0) { - if (delt < 0.25*set[i].tperiod) { + if (delt < 0.25 * set[i].tperiod) { set[i].tilt_min = set[i].tilt_start; - set[i].tilt_max = set[i].tilt_start + - set[i].amplitude*sin(TWOPI*delt/set[i].tperiod); - } else if (delt < 0.5*set[i].tperiod) { + set[i].tilt_max = set[i].tilt_start + shift; + } else if (delt < 0.5 * set[i].tperiod) { set[i].tilt_min = set[i].tilt_start; set[i].tilt_max = set[i].tilt_start + set[i].amplitude; - } else if (delt < 0.75*set[i].tperiod) { - set[i].tilt_min = set[i].tilt_start - - set[i].amplitude*sin(TWOPI*delt/set[i].tperiod); + } else if (delt < 0.75 * set[i].tperiod) { + set[i].tilt_min = set[i].tilt_start - shift; set[i].tilt_max = set[i].tilt_start + set[i].amplitude; } else { set[i].tilt_min = set[i].tilt_start - set[i].amplitude; set[i].tilt_max = set[i].tilt_start + set[i].amplitude; } } else { - if (delt < 0.25*set[i].tperiod) { - set[i].tilt_min = set[i].tilt_start - - set[i].amplitude*sin(TWOPI*delt/set[i].tperiod); + if (delt < 0.25 * set[i].tperiod) { + set[i].tilt_min = set[i].tilt_start - shift; set[i].tilt_max = set[i].tilt_start; - } else if (delt < 0.5*set[i].tperiod) { + } else if (delt < 0.5 * set[i].tperiod) { set[i].tilt_min = set[i].tilt_start - set[i].amplitude; set[i].tilt_max = set[i].tilt_start; - } else if (delt < 0.75*set[i].tperiod) { + } else if (delt < 0.75 * set[i].tperiod) { set[i].tilt_min = set[i].tilt_start - set[i].amplitude; - set[i].tilt_max = set[i].tilt_start + - set[i].amplitude*sin(TWOPI*delt/set[i].tperiod); + set[i].tilt_max = set[i].tilt_start + shift; } else { set[i].tilt_min = set[i].tilt_start - set[i].amplitude; set[i].tilt_max = set[i].tilt_start + set[i].amplitude; @@ -540,7 +554,7 @@ void FixDeform::init() for (int i = 3; i < 6; i++) if (set[i].style == TRATE && set[i].tilt_start == 0.0) - error->all(FLERR,"Cannot use fix deform trate on a box with zero tilt"); + error->all(FLERR, "Cannot use fix {} trate on a box with zero tilt", style); // if yz changes and will cause box flip, then xy cannot be changing // yz = [3], xy = [5] @@ -555,20 +569,20 @@ void FixDeform::init() int flag = 0; double lo,hi; if (flipflag && set[3].style == VARIABLE) - error->all(FLERR,"Fix deform cannot use yz variable with xy"); + error->all(FLERR, "Fix {} cannot use yz variable with xy", style); if (set[3].style == WIGGLE) { lo = set[3].tilt_min; hi = set[3].tilt_max; } else lo = hi = set[3].tilt_stop; if (flipflag) { - if (lo/(set[1].hi_start-set[1].lo_start) < -0.5 || - hi/(set[1].hi_start-set[1].lo_start) > 0.5) flag = 1; + if (lo / (set[1].hi_start - set[1].lo_start) < -0.5 || + hi / (set[1].hi_start - set[1].lo_start) > 0.5) flag = 1; if (set[1].style) { - if (lo/(set[1].hi_stop-set[1].lo_stop) < -0.5 || - hi/(set[1].hi_stop-set[1].lo_stop) > 0.5) flag = 1; + if (lo / (set[1].hi_stop - set[1].lo_stop) < -0.5 || + hi / (set[1].hi_stop - set[1].lo_stop) > 0.5) flag = 1; } if (flag) - error->all(FLERR,"Fix deform is changing yz too much with xy"); + error->all(FLERR, "Fix {} is changing yz too much with xy", style); } } @@ -584,7 +598,7 @@ void FixDeform::init() if (set[i].style == FINAL || set[i].style == DELTA || set[i].style == SCALE || set[i].style == VEL || set[i].style == ERATE) { - double dlo_dt,dhi_dt; + double dlo_dt, dhi_dt; if (delt != 0.0) { dlo_dt = (set[i].lo_stop - set[i].lo_start) / delt; dhi_dt = (set[i].hi_stop - set[i].hi_start) / delt; @@ -633,7 +647,7 @@ void FixDeform::pre_exchange() domain->set_global_box(); domain->set_local_box(); - domain->image_flip(flipxy,flipxz,flipyz); + domain->image_flip(flipxy, flipxz, flipyz); double **x = atom->x; imageint *image = atom->image; @@ -651,104 +665,72 @@ void FixDeform::pre_exchange() void FixDeform::end_of_step() { - int i; - - double delta = update->ntimestep - update->beginstep; - if (delta != 0.0) delta /= update->endstep - update->beginstep; - // wrap variable evaluations with clear/add if (varflag) modify->clearstep_compute(); - // set new box size + // set new box size for strain-based dims + + apply_strain(); + + // set new box size for VOLUME dims that are linked to other dims + // NOTE: still need to set h_rate for these dims + + apply_volume(); + + if (varflag) modify->addstep_compute(update->ntimestep + nevery); + + update_domain(); + + // redo KSpace coeffs since box has changed + + if (kspace_flag) force->kspace->setup(); +} + +/* ---------------------------------------------------------------------- + apply strain controls +------------------------------------------------------------------------- */ + +void FixDeform::apply_strain() +{ // for NONE, target is current box size // for TRATE, set target directly based on current time, also set h_rate // for WIGGLE, set target directly based on current time, also set h_rate // for VARIABLE, set target directly via variable eval, also set h_rate // for others except VOLUME, target is linear value between start and stop - for (i = 0; i < 3; i++) { + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + for (int i = 0; i < 3; i++) { if (set[i].style == NONE) { set[i].lo_target = domain->boxlo[i]; set[i].hi_target = domain->boxhi[i]; } else if (set[i].style == TRATE) { double delt = (update->ntimestep - update->beginstep) * update->dt; - set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt)); - set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt)); + double shift = 0.5 * ((set[i].hi_start - set[i].lo_start) * exp(set[i].rate * delt)); + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; h_rate[i] = set[i].rate * domain->h[i]; - h_ratelo[i] = -0.5*h_rate[i]; + h_ratelo[i] = -0.5 * h_rate[i]; } else if (set[i].style == WIGGLE) { double delt = (update->ntimestep - update->beginstep) * update->dt; - set[i].lo_target = set[i].lo_start - - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - set[i].hi_target = set[i].hi_start + - 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude * - cos(TWOPI*delt/set[i].tperiod); - h_ratelo[i] = -0.5*h_rate[i]; + double shift = 0.5 * set[i].amplitude * sin(MY_2PI * delt / set[i].tperiod); + set[i].lo_target = set[i].lo_start - shift; + set[i].hi_target = set[i].hi_start + shift; + h_rate[i] = MY_2PI / set[i].tperiod * set[i].amplitude * + cos(MY_2PI * delt / set[i].tperiod); + h_ratelo[i] = -0.5 * h_rate[i]; } else if (set[i].style == VARIABLE) { double del = input->variable->compute_equal(set[i].hvar); - set[i].lo_target = set[i].lo_start - 0.5*del; - set[i].hi_target = set[i].hi_start + 0.5*del; + set[i].lo_target = set[i].lo_start - 0.5 * del; + set[i].hi_target = set[i].hi_start + 0.5 * del; h_rate[i] = input->variable->compute_equal(set[i].hratevar); - h_ratelo[i] = -0.5*h_rate[i]; - } else if (set[i].style != VOLUME) { - set[i].lo_target = set[i].lo_start + - delta*(set[i].lo_stop - set[i].lo_start); - set[i].hi_target = set[i].hi_start + - delta*(set[i].hi_stop - set[i].hi_start); - } - } - - // set new box size for VOLUME dims that are linked to other dims - // NOTE: still need to set h_rate for these dims - - for (i = 0; i < 3; i++) { - if (set[i].style != VOLUME) continue; - - if (set[i].substyle == ONE_FROM_ONE) { - set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].fixed].hi_start-set[set[i].fixed].lo_start)); - set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].fixed].hi_start-set[set[i].fixed].lo_start)); - - } else if (set[i].substyle == ONE_FROM_TWO) { - set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].dynamic2].hi_target - - set[set[i].dynamic2].lo_target)); - set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].dynamic2].hi_target - - set[set[i].dynamic2].lo_target)); - - } else if (set[i].substyle == TWO_FROM_ONE) { - set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) - - 0.5*sqrt(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].fixed].hi_start - - set[set[i].fixed].lo_start) * - (set[i].hi_start - set[i].lo_start)); - set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) + - 0.5*sqrt(set[i].vol_start / - (set[set[i].dynamic1].hi_target - - set[set[i].dynamic1].lo_target) / - (set[set[i].fixed].hi_start - - set[set[i].fixed].lo_start) * - (set[i].hi_start - set[i].lo_start)); + h_ratelo[i] = -0.5 * h_rate[i]; + } else if (set[i].style == FINAL || set[i].style == DELTA || set[i].style == SCALE || + set[i].style == VEL || set[i].style == ERATE) { + set[i].lo_target = set[i].lo_start + delta * (set[i].lo_stop - set[i].lo_start); + set[i].hi_target = set[i].hi_start + delta * (set[i].hi_stop - set[i].hi_start); } } @@ -760,55 +742,97 @@ void FixDeform::end_of_step() // for other styles, target is linear value between start and stop values if (triclinic) { - double *h = domain->h; - - for (i = 3; i < 6; i++) { + for (int i = 3; i < 6; i++) { if (set[i].style == NONE) { if (i == 5) set[i].tilt_target = domain->xy; else if (i == 4) set[i].tilt_target = domain->xz; else if (i == 3) set[i].tilt_target = domain->yz; } else if (set[i].style == TRATE) { double delt = (update->ntimestep - update->beginstep) * update->dt; - set[i].tilt_target = set[i].tilt_start * exp(set[i].rate*delt); + set[i].tilt_target = set[i].tilt_start * exp(set[i].rate * delt); h_rate[i] = set[i].rate * domain->h[i]; } else if (set[i].style == WIGGLE) { double delt = (update->ntimestep - update->beginstep) * update->dt; set[i].tilt_target = set[i].tilt_start + - set[i].amplitude * sin(TWOPI*delt/set[i].tperiod); - h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude * - cos(TWOPI*delt/set[i].tperiod); + set[i].amplitude * sin(MY_2PI * delt / set[i].tperiod); + h_rate[i] = MY_2PI / set[i].tperiod * set[i].amplitude * + cos(MY_2PI * delt / set[i].tperiod); } else if (set[i].style == VARIABLE) { double delta_tilt = input->variable->compute_equal(set[i].hvar); set[i].tilt_target = set[i].tilt_start + delta_tilt; h_rate[i] = input->variable->compute_equal(set[i].hratevar); } else { - set[i].tilt_target = set[i].tilt_start + - delta*(set[i].tilt_stop - set[i].tilt_start); + set[i].tilt_target = set[i].tilt_start + delta * (set[i].tilt_stop - set[i].tilt_start); } + } + } +} + +/* ---------------------------------------------------------------------- + apply volume controls +------------------------------------------------------------------------- */ + +void FixDeform::apply_volume() +{ + for (int i = 0; i < 3; i++) { + if (set[i].style != VOLUME) continue; + + int dynamic1 = set[i].dynamic1; + int dynamic2 = set[i].dynamic2; + int fixed = set[i].fixed; + double v0 = set[i].vol_start; + double shift = 0.0; + + if (set[i].substyle == ONE_FROM_ONE) { + shift = 0.5 * (v0 / (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[fixed].hi_start - set[fixed].lo_start)); + } else if (set[i].substyle == ONE_FROM_TWO) { + shift = 0.5 * (v0 / (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[dynamic2].hi_target - set[dynamic2].lo_target)); + } else if (set[i].substyle == TWO_FROM_ONE) { + shift = 0.5 * sqrt(v0 * (set[i].hi_start - set[i].lo_start) / + (set[dynamic1].hi_target - set[dynamic1].lo_target) / + (set[fixed].hi_start - set[fixed].lo_start)); + } + + h_rate[i] = (2.0 * shift / (domain->boxhi[i] - domain->boxlo[i]) - 1.0) / update->dt; + h_ratelo[i] = -0.5 * h_rate[i]; + + set[i].lo_target = 0.5 * (set[i].lo_start + set[i].hi_start) - shift; + set[i].hi_target = 0.5 * (set[i].lo_start + set[i].hi_start) + shift; + } +} + +/* ---------------------------------------------------------------------- + Update box domain +------------------------------------------------------------------------- */ - // tilt_target can be large positive or large negative value - // add/subtract box lengths until tilt_target is closest to current value +void FixDeform::update_domain() +{ + // tilt_target can be large positive or large negative value + // add/subtract box lengths until tilt_target is closest to current value + if (triclinic) { + double *h = domain->h; + for (int i = 3; i < 6; i++) { int idenom = 0; if (i == 5) idenom = 0; else if (i == 4) idenom = 0; else if (i == 3) idenom = 1; double denom = set[idenom].hi_target - set[idenom].lo_target; - double current = h[i]/h[idenom]; + double current = h[i] / h[idenom]; - while (set[i].tilt_target/denom - current > 0.0) + while (set[i].tilt_target / denom - current > 0.0) set[i].tilt_target -= denom; - while (set[i].tilt_target/denom - current < 0.0) + while (set[i].tilt_target / denom - current < 0.0) set[i].tilt_target += denom; - if (fabs(set[i].tilt_target/denom - 1.0 - current) < - fabs(set[i].tilt_target/denom - current)) + if (fabs(set[i].tilt_target / denom - 1.0 - current) < + fabs(set[i].tilt_target / denom - current)) set[i].tilt_target -= denom; } } - if (varflag) modify->addstep_compute(update->ntimestep + nevery); - // if any tilt ratios exceed 0.5, set flip = 1 and compute new tilt values // do not flip in x or y if non-periodic (can tilt but not flip) // this is b/c the box length would be changed (dramatically) by flip @@ -823,12 +847,12 @@ void FixDeform::end_of_step() double yprd = set[1].hi_target - set[1].lo_target; double xprdinv = 1.0 / xprd; double yprdinv = 1.0 / yprd; - if (set[3].tilt_target*yprdinv < -0.5 || - set[3].tilt_target*yprdinv > 0.5 || - set[4].tilt_target*xprdinv < -0.5 || - set[4].tilt_target*xprdinv > 0.5 || - set[5].tilt_target*xprdinv < -0.5 || - set[5].tilt_target*xprdinv > 0.5) { + if (set[3].tilt_target * yprdinv < -0.5 || + set[3].tilt_target * yprdinv > 0.5 || + set[4].tilt_target * xprdinv < -0.5 || + set[4].tilt_target * xprdinv > 0.5 || + set[5].tilt_target * xprdinv < -0.5 || + set[5].tilt_target * xprdinv > 0.5) { set[3].tilt_flip = set[3].tilt_target; set[4].tilt_flip = set[4].tilt_target; set[5].tilt_flip = set[5].tilt_target; @@ -836,30 +860,30 @@ void FixDeform::end_of_step() flipxy = flipxz = flipyz = 0; if (domain->yperiodic) { - if (set[3].tilt_flip*yprdinv < -0.5) { + if (set[3].tilt_flip * yprdinv < -0.5) { set[3].tilt_flip += yprd; set[4].tilt_flip += set[5].tilt_flip; flipyz = 1; - } else if (set[3].tilt_flip*yprdinv > 0.5) { + } else if (set[3].tilt_flip * yprdinv > 0.5) { set[3].tilt_flip -= yprd; set[4].tilt_flip -= set[5].tilt_flip; flipyz = -1; } } if (domain->xperiodic) { - if (set[4].tilt_flip*xprdinv < -0.5) { + if (set[4].tilt_flip * xprdinv < -0.5) { set[4].tilt_flip += xprd; flipxz = 1; } - if (set[4].tilt_flip*xprdinv > 0.5) { + if (set[4].tilt_flip * xprdinv > 0.5) { set[4].tilt_flip -= xprd; flipxz = -1; } - if (set[5].tilt_flip*xprdinv < -0.5) { + if (set[5].tilt_flip * xprdinv < -0.5) { set[5].tilt_flip += xprd; flipxy = 1; } - if (set[5].tilt_flip*xprdinv > 0.5) { + if (set[5].tilt_flip * xprdinv > 0.5) { set[5].tilt_flip -= xprd; flipxy = -1; } @@ -878,9 +902,9 @@ void FixDeform::end_of_step() int *mask = atom->mask; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) + for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - domain->x2lamda(x[i],x[i]); + domain->x2lamda(x[i], x[i]); for (auto &ifix : rfix) ifix->deform(0); @@ -889,22 +913,22 @@ void FixDeform::end_of_step() // reset global and local box to new size/shape // only if deform fix is controlling the dimension - if (set[0].style) { + if (dimflag[0]) { domain->boxlo[0] = set[0].lo_target; domain->boxhi[0] = set[0].hi_target; } - if (set[1].style) { + if (dimflag[1]) { domain->boxlo[1] = set[1].lo_target; domain->boxhi[1] = set[1].hi_target; } - if (set[2].style) { + if (dimflag[2]) { domain->boxlo[2] = set[2].lo_target; domain->boxhi[2] = set[2].hi_target; } if (triclinic) { - if (set[3].style) domain->yz = set[3].tilt_target; - if (set[4].style) domain->xz = set[4].tilt_target; - if (set[5].style) domain->xy = set[5].tilt_target; + if (dimflag[3]) domain->yz = set[3].tilt_target; + if (dimflag[4]) domain->xz = set[4].tilt_target; + if (dimflag[5]) domain->xy = set[5].tilt_target; } domain->set_global_box(); @@ -917,17 +941,13 @@ void FixDeform::end_of_step() int *mask = atom->mask; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) + for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - domain->lamda2x(x[i],x[i]); + domain->lamda2x(x[i], x[i]); for (auto &ifix : rfix) ifix->deform(1); } - - // redo KSpace coeffs since box has changed - - if (kspace_flag) force->kspace->setup(); } /* ---------------------------------------------------------------------- @@ -937,9 +957,9 @@ void FixDeform::end_of_step() void FixDeform::write_restart(FILE *fp) { if (comm->me == 0) { - int size = 6*sizeof(Set); - fwrite(&size,sizeof(int),1,fp); - fwrite(set,sizeof(Set),6,fp); + int size = 6 * sizeof(Set); + fwrite(&size, sizeof(int), 1, fp); + fwrite(set, sizeof(Set), 6, fp); } } @@ -951,7 +971,7 @@ void FixDeform::restart(char *buf) { int samestyle = 1; Set *set_restart = (Set *) buf; - for (int i=0; i<6; ++i) { + for (int i = 0; i < 6; ++i) { // restore data from initial state set[i].lo_initial = set_restart[i].lo_initial; set[i].hi_initial = set_restart[i].hi_initial; @@ -964,39 +984,57 @@ void FixDeform::restart(char *buf) samestyle = 0; } if (!samestyle) - error->all(FLERR,"Fix deform settings not consistent with restart"); + error->all(FLERR, "Fix {} settings not consistent with restart", style); } /* ---------------------------------------------------------------------- */ void FixDeform::options(int narg, char **arg) { - if (narg < 0) error->all(FLERR,"Illegal fix deform command"); + const std::string thiscmd = fmt::format("fix {}", style); + if (narg < 0) utils::missing_cmd_args(FLERR, thiscmd, error); remapflag = Domain::X_REMAP; scaleflag = 1; flipflag = 1; + // arguments for child classes + + std::unordered_map child_options; + if (utils::strmatch(style, "^deform/pressure")) { + child_options.insert({{"couple", 2}, {"max/rate", 2}, {"normalize/pressure", 2}, + {"vol/balance/p", 2}}); + } + + // parse all optional arguments for this parent and also child classes + // for child classes, simply store them in leftover_iarg and skip over them + int iarg = 0; while (iarg < narg) { - if (strcmp(arg[iarg],"remap") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); - if (strcmp(arg[iarg+1],"x") == 0) remapflag = Domain::X_REMAP; - else if (strcmp(arg[iarg+1],"v") == 0) remapflag = Domain::V_REMAP; - else if (strcmp(arg[iarg+1],"none") == 0) remapflag = Domain::NO_REMAP; - else error->all(FLERR,"Illegal fix deform command"); + if (strcmp(arg[iarg], "remap") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, thiscmd + " remap", error); + if (strcmp(arg[iarg + 1], "x") == 0) remapflag = Domain::X_REMAP; + else if (strcmp(arg[iarg + 1], "v") == 0) remapflag = Domain::V_REMAP; + else if (strcmp(arg[iarg + 1], "none") == 0) remapflag = Domain::NO_REMAP; + else error->all(FLERR, "Illegal fix {} remap command: {}", style, arg[iarg + 1]); iarg += 2; - } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); - if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; - else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all(FLERR,"Illegal fix deform command"); + } else if (strcmp(arg[iarg], "units") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, thiscmd + " units", error); + if (strcmp(arg[iarg + 1], "box") == 0) scaleflag = 0; + else if (strcmp(arg[iarg + 1], "lattice") == 0) scaleflag = 1; + else error->all(FLERR, "Illegal fix {} units command: {}", style, arg[iarg + 1]); iarg += 2; - } else if (strcmp(arg[iarg],"flip") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix deform command"); - flipflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "flip") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, thiscmd + " flip", error); + flipflag = utils::logical(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else error->all(FLERR,"Illegal fix deform command"); + } else if (child_options.find(arg[iarg]) != child_options.end()) { + auto nskip = child_options[arg[iarg]]; + if (iarg + nskip > narg) + utils::missing_cmd_args(FLERR, fmt::format("fix {} {}", style, arg[iarg]), error); + for (int i = 0; i < nskip; i++) leftover_iarg.push_back(iarg + i); + iarg += nskip; + } else error->all(FLERR, "Unknown fix {} keyword: {}", style, arg[iarg]); } } diff --git a/src/fix_deform.h b/src/fix_deform.h index 20f6ac59014..b1337294448 100644 --- a/src/fix_deform.h +++ b/src/fix_deform.h @@ -29,14 +29,17 @@ class FixDeform : public Fix { int remapflag; // whether x,v are remapped across PBC int dimflag[6]; // which dims are deformed + enum { NONE, FINAL, DELTA, SCALE, VEL, ERATE, TRATE, VOLUME, WIGGLE, VARIABLE, PRESSURE, PMEAN }; + enum { ONE_FROM_ONE, ONE_FROM_TWO, TWO_FROM_ONE }; + FixDeform(class LAMMPS *, int, char **); ~FixDeform() override; int setmask() override; void init() override; void pre_exchange() override; void end_of_step() override; - void write_restart(FILE *) override; - void restart(char *buf) override; + void virtual write_restart(FILE *) override; + void virtual restart(char *buf) override; double memory_usage() override; protected: @@ -48,8 +51,6 @@ class FixDeform : public Fix { std::vector rfix; // pointers to rigid fixes class Irregular *irregular; // for migrating atoms after box flips - double TWOPI; - struct Set { int style, substyle; double flo, fhi, ftilt; @@ -67,7 +68,13 @@ class FixDeform : public Fix { }; Set *set; + std::vector leftover_iarg; + int iarg_options_start; + void options(int, char **); + void virtual apply_volume(); + void apply_strain(); + void update_domain(); }; } // namespace LAMMPS_NS diff --git a/src/fix_deposit.cpp b/src/fix_deposit.cpp index 4a9c5aa9da2..d8ea665149c 100644 --- a/src/fix_deposit.cpp +++ b/src/fix_deposit.cpp @@ -42,7 +42,7 @@ using namespace MathConst; enum{ATOM,MOLECULE}; enum{DIST_UNIFORM,DIST_GAUSSIAN}; -#define EPSILON 1.0e6 +static constexpr double EPSILON = 1.0e6; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_dt_reset.cpp b/src/fix_dt_reset.cpp index ba69d177183..ea364657c6a 100644 --- a/src/fix_dt_reset.cpp +++ b/src/fix_dt_reset.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e20 +static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp index c13e2147a3e..048f8de543c 100644 --- a/src/fix_enforce2d.cpp +++ b/src/fix_enforce2d.cpp @@ -17,7 +17,6 @@ #include "atom.h" #include "domain.h" #include "error.h" -#include "modify.h" #include "respa.h" #include "update.h" diff --git a/src/fix_indent.cpp b/src/fix_indent.cpp index 9adb337dd66..a8b14940f4b 100644 --- a/src/fix_indent.cpp +++ b/src/fix_indent.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -23,6 +22,7 @@ #include "error.h" #include "input.h" #include "lattice.h" +#include "math_extra.h" #include "modify.h" #include "respa.h" #include "update.h" @@ -34,14 +34,14 @@ using namespace LAMMPS_NS; using namespace FixConst; -enum{NONE,SPHERE,CYLINDER,PLANE}; -enum{INSIDE,OUTSIDE}; +enum { NONE, SPHERE, CYLINDER, PLANE, CONE }; +enum { INSIDE, OUTSIDE }; /* ---------------------------------------------------------------------- */ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), - xstr(nullptr), ystr(nullptr), zstr(nullptr), rstr(nullptr), pstr(nullptr) + Fix(lmp, narg, arg), xstr(nullptr), ystr(nullptr), zstr(nullptr), rstr(nullptr), pstr(nullptr), + rlostr(nullptr), rhistr(nullptr), lostr(nullptr), histr(nullptr) { if (narg < 4) utils::missing_cmd_args(FLERR, "fix indent", error); @@ -55,22 +55,20 @@ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : respa_level_support = 1; ilevel_respa = 0; - k = utils::numeric(FLERR,arg[3],false,lmp); - k3 = k/3.0; + k = utils::numeric(FLERR, arg[3], false, lmp); + if (k < 0.0) error->all(FLERR, "Illegal fix indent force constant: {}", k); + k3 = k / 3.0; - // read options from end of input line + // read geometry of indenter and optional args - options(narg-4,&arg[4]); + int iarg = geometry(narg - 4, &arg[4]) + 4; + options(narg - iarg, &arg[iarg]); // setup scaling - double xscale,yscale,zscale; - if (scaleflag) { - xscale = domain->lattice->xlattice; - yscale = domain->lattice->ylattice; - zscale = domain->lattice->zlattice; - } - else xscale = yscale = zscale = 1.0; + const double xscale{scaleflag ? domain->lattice->xlattice : 1.0}; + const double yscale{scaleflag ? domain->lattice->ylattice : 1.0}; + const double zscale{scaleflag ? domain->lattice->zlattice : 1.0}; // apply scaling factors to geometry @@ -79,14 +77,43 @@ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : if (!ystr) yvalue *= yscale; if (!zstr) zvalue *= zscale; if (!rstr) rvalue *= xscale; + + } else if (istyle == CONE) { + if (!xstr) xvalue *= xscale; + if (!ystr) yvalue *= yscale; + if (!zstr) zvalue *= zscale; + + double scaling_factor = 1.0; + switch (cdim) { + case 0: + scaling_factor = xscale; + break; + case 1: + scaling_factor = yscale; + break; + case 2: + scaling_factor = zscale; + break; + } + + if (!rlostr) rlovalue *= scaling_factor; + if (!rhistr) rhivalue *= scaling_factor; + if (!lostr) lovalue *= scaling_factor; + if (!histr) hivalue *= scaling_factor; + } else if (istyle == PLANE) { - if (cdim == 0 && !pstr) pvalue *= xscale; - else if (cdim == 1 && !pstr) pvalue *= yscale; - else if (cdim == 2 && !pstr) pvalue *= zscale; - } else error->all(FLERR,"Unknown fix indent keyword: {}", istyle); + if (cdim == 0 && !pstr) + pvalue *= xscale; + else if (cdim == 1 && !pstr) + pvalue *= yscale; + else if (cdim == 2 && !pstr) + pvalue *= zscale; + + } else + error->all(FLERR, "Unknown fix indent keyword: {}", istyle); varflag = 0; - if (xstr || ystr || zstr || rstr || pstr) varflag = 1; + if (xstr || ystr || zstr || rstr || pstr || rlostr || rhistr || lostr || histr) varflag = 1; indenter_flag = 0; indenter[0] = indenter[1] = indenter[2] = indenter[3] = 0.0; @@ -96,11 +123,15 @@ FixIndent::FixIndent(LAMMPS *lmp, int narg, char **arg) : FixIndent::~FixIndent() { - delete [] xstr; - delete [] ystr; - delete [] zstr; - delete [] rstr; - delete [] pstr; + delete[] xstr; + delete[] ystr; + delete[] zstr; + delete[] rstr; + delete[] pstr; + delete[] rlostr; + delete[] rhistr; + delete[] lostr; + delete[] histr; } /* ---------------------------------------------------------------------- */ @@ -120,43 +151,62 @@ void FixIndent::init() { if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) - error->all(FLERR,"Variable {} for fix indent does not exist", xstr); + if (xvar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", xstr); if (!input->variable->equalstyle(xvar)) - error->all(FLERR,"Variable {} for fix indent is invalid style", xstr); + error->all(FLERR, "Variable {} for fix indent is invalid style", xstr); } if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) - error->all(FLERR,"Variable {} for fix indent does not exist", ystr); + if (yvar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", ystr); if (!input->variable->equalstyle(yvar)) - error->all(FLERR,"Variable {} for fix indent is invalid style", ystr); + error->all(FLERR, "Variable {} for fix indent is invalid style", ystr); } if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) - error->all(FLERR,"Variable {} for fix indent does not exist", zstr); + if (zvar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", zstr); if (!input->variable->equalstyle(zvar)) - error->all(FLERR,"Variable {} for fix indent is invalid style", zstr); + error->all(FLERR, "Variable {} for fix indent is invalid style", zstr); } if (rstr) { rvar = input->variable->find(rstr); - if (rvar < 0) - error->all(FLERR,"Variable {} for fix indent does not exist", rstr); + if (rvar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", rstr); if (!input->variable->equalstyle(rvar)) - error->all(FLERR,"Variable {} for fix indent is invalid style", rstr); + error->all(FLERR, "Variable {} for fix indent is invalid style", rstr); } if (pstr) { pvar = input->variable->find(pstr); - if (pvar < 0) - error->all(FLERR,"Variable {} for fix indent does not exist", pstr); + if (pvar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", pstr); if (!input->variable->equalstyle(pvar)) - error->all(FLERR,"Variable {} for fix indent is invalid style", pstr); + error->all(FLERR, "Variable {} for fix indent is invalid style", pstr); + } + if (rlostr) { + rlovar = input->variable->find(rlostr); + if (rlovar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", rlostr); + if (!input->variable->equalstyle(rlovar)) + error->all(FLERR, "Variable {} for fix indent is invalid style", rlostr); + } + if (rhistr) { + rhivar = input->variable->find(rhistr); + if (rhivar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", rhistr); + if (!input->variable->equalstyle(rhivar)) + error->all(FLERR, "Variable {} for fix indent is invalid style", rhistr); + } + if (lostr) { + lovar = input->variable->find(lostr); + if (lovar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", lostr); + if (!input->variable->equalstyle(lovar)) + error->all(FLERR, "Variable {} for fix indent is invalid style", lostr); + } + if (histr) { + hivar = input->variable->find(histr); + if (hivar < 0) error->all(FLERR, "Variable {} for fix indent does not exist", histr); + if (!input->variable->equalstyle(hivar)) + error->all(FLERR, "Variable {} for fix indent is invalid style", histr); } - if (utils::strmatch(update->integrate_style,"^respa")) { - ilevel_respa = (dynamic_cast(update->integrate))->nlevels-1; - if (respa_level >= 0) ilevel_respa = MIN(respa_level,ilevel_respa); + if (utils::strmatch(update->integrate_style, "^respa")) { + ilevel_respa = (dynamic_cast(update->integrate))->nlevels - 1; + if (respa_level >= 0) ilevel_respa = MIN(respa_level, ilevel_respa); } } @@ -164,11 +214,11 @@ void FixIndent::init() void FixIndent::setup(int vflag) { - if (utils::strmatch(update->integrate_style,"^verlet")) + if (utils::strmatch(update->integrate_style, "^verlet")) post_force(vflag); else { (dynamic_cast(update->integrate))->copy_flevel_f(ilevel_respa); - post_force_respa(vflag,ilevel_respa,0); + post_force_respa(vflag, ilevel_respa, 0); (dynamic_cast(update->integrate))->copy_f_flevel(ilevel_respa); } } @@ -192,61 +242,59 @@ void FixIndent::post_force(int /*vflag*/) indenter_flag = 0; indenter[0] = indenter[1] = indenter[2] = indenter[3] = 0.0; + // ctr = current indenter centerz + + double ctr[3] = {xvalue, yvalue, zvalue}; + if (xstr) ctr[0] = input->variable->compute_equal(xvar); + if (ystr) ctr[1] = input->variable->compute_equal(yvar); + if (zstr) ctr[2] = input->variable->compute_equal(zvar); + + double **x = atom->x; + double **f = atom->f; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double delx, dely, delz, r, dr, fmag, fx, fy, fz; + // spherical indenter if (istyle == SPHERE) { - // ctr = current indenter center - // remap into periodic box + // remap indenter center into periodic box - double ctr[3]; - if (xstr) ctr[0] = input->variable->compute_equal(xvar); - else ctr[0] = xvalue; - if (ystr) ctr[1] = input->variable->compute_equal(yvar); - else ctr[1] = yvalue; - if (zstr) ctr[2] = input->variable->compute_equal(zvar); - else ctr[2] = zvalue; domain->remap(ctr); - double radius; - if (rstr) radius = input->variable->compute_equal(rvar); - else radius = rvalue; - - double **x = atom->x; - double **f = atom->f; - int *mask = atom->mask; - int nlocal = atom->nlocal; - - double delx,dely,delz,r,dr,fmag,fx,fy,fz; + double radius = rstr ? input->variable->compute_equal(rvar) : rvalue; + if (radius < 0.0) error->all(FLERR, "Illegal fix indent sphere radius: {}", radius); for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { delx = x[i][0] - ctr[0]; dely = x[i][1] - ctr[1]; delz = x[i][2] - ctr[2]; - domain->minimum_image(delx,dely,delz); - r = sqrt(delx*delx + dely*dely + delz*delz); + domain->minimum_image(delx, dely, delz); + r = sqrt(delx * delx + dely * dely + delz * delz); if (side == OUTSIDE) { dr = r - radius; - fmag = k*dr*dr; + fmag = k * dr * dr; } else { dr = radius - r; - fmag = -k*dr*dr; + fmag = -k * dr * dr; } if (dr >= 0.0) continue; - fx = delx*fmag/r; - fy = dely*fmag/r; - fz = delz*fmag/r; + fx = delx * fmag / r; + fy = dely * fmag / r; + fz = delz * fmag / r; f[i][0] += fx; f[i][1] += fy; f[i][2] += fz; - indenter[0] -= k3 * dr*dr*dr; + indenter[0] -= k3 * dr * dr * dr; indenter[1] -= fx; indenter[2] -= fy; indenter[3] -= fz; } - // cylindrical indenter + // cylindrical indenter } else if (istyle == CYLINDER) { @@ -254,101 +302,120 @@ void FixIndent::post_force(int /*vflag*/) // remap into periodic box // 3rd coord is just near box for remap(), since isn't used - double ctr[3]; - if (cdim == 0) { - ctr[0] = domain->boxlo[0]; - if (ystr) ctr[1] = input->variable->compute_equal(yvar); - else ctr[1] = yvalue; - if (zstr) ctr[2] = input->variable->compute_equal(zvar); - else ctr[2] = zvalue; - } else if (cdim == 1) { - if (xstr) ctr[0] = input->variable->compute_equal(xvar); - else ctr[0] = xvalue; - ctr[1] = domain->boxlo[1]; - if (zstr) ctr[2] = input->variable->compute_equal(zvar); - else ctr[2] = zvalue; - } else { - if (xstr) ctr[0] = input->variable->compute_equal(xvar); - else ctr[0] = xvalue; - if (ystr) ctr[1] = input->variable->compute_equal(yvar); - else ctr[1] = yvalue; - ctr[2] = domain->boxlo[2]; - } + ctr[cdim] = domain->boxlo[cdim]; domain->remap(ctr); - double radius; - if (rstr) radius = input->variable->compute_equal(rvar); - else radius = rvalue; - - double **x = atom->x; - double **f = atom->f; - int *mask = atom->mask; - int nlocal = atom->nlocal; - - double delx,dely,delz,r,dr,fmag,fx,fy,fz; + double radius{rstr ? input->variable->compute_equal(rvar) : rvalue}; + if (radius < 0.0) error->all(FLERR, "Illegal fix indent cylinder radius: {}", radius); for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - if (cdim == 0) { - delx = 0; - dely = x[i][1] - ctr[1]; - delz = x[i][2] - ctr[2]; - } else if (cdim == 1) { - delx = x[i][0] - ctr[0]; - dely = 0; - delz = x[i][2] - ctr[2]; - } else { - delx = x[i][0] - ctr[0]; - dely = x[i][1] - ctr[1]; - delz = 0; - } - domain->minimum_image(delx,dely,delz); - r = sqrt(delx*delx + dely*dely + delz*delz); + double del[3] = {x[i][0] - ctr[0], x[i][1] - ctr[1], x[i][2] - ctr[2]}; + del[cdim] = 0; + domain->minimum_image(del[0], del[1], del[2]); + r = sqrt(del[0] * del[0] + del[1] * del[1] + del[2] * del[2]); if (side == OUTSIDE) { dr = r - radius; - fmag = k*dr*dr; + fmag = k * dr * dr; } else { dr = radius - r; - fmag = -k*dr*dr; + fmag = -k * dr * dr; } if (dr >= 0.0) continue; - fx = delx*fmag/r; - fy = dely*fmag/r; - fz = delz*fmag/r; + fx = del[0] * fmag / r; + fy = del[1] * fmag / r; + fz = del[2] * fmag / r; f[i][0] += fx; f[i][1] += fy; f[i][2] += fz; - indenter[0] -= k3 * dr*dr*dr; + indenter[0] -= k3 * dr * dr * dr; indenter[1] -= fx; indenter[2] -= fy; indenter[3] -= fz; } - // planar indenter + // conical indenter - } else { + } else if (istyle == CONE) { - // plane = current plane position + double radiuslo{rlostr ? input->variable->compute_equal(rlovar) : rlovalue}; + if (radiuslo < 0.0) error->all(FLERR, "Illegal fix indent cone lower radius: {}", radiuslo); + double radiushi{rhistr ? input->variable->compute_equal(rhivar) : rhivalue}; + if (radiushi < 0.0) error->all(FLERR, "Illegal fix indent cone high radius: {}", radiushi); + + double initial_lo{lostr ? input->variable->compute_equal(lovar) : lovalue}; + double initial_hi{histr ? input->variable->compute_equal(hivar) : hivalue}; + + ctr[cdim] = 0.5 * (initial_hi + initial_lo); + + domain->remap(ctr); + + double hi = ctr[cdim] + 0.5 * (initial_hi - initial_lo); + double lo = ctr[cdim] - 0.5 * (initial_hi - initial_lo); + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + + delx = x[i][0] - ctr[0]; + dely = x[i][1] - ctr[1]; + delz = x[i][2] - ctr[2]; + domain->minimum_image(delx, dely, delz); + + double x0[3] = {delx + ctr[0], dely + ctr[1], delz + ctr[2]}; + r = sqrt(delx * delx + dely * dely + delz * delz); + + // check if particle is inside or outside the cone + + bool point_inside_cone = PointInsideCone(cdim, ctr, lo, hi, radiuslo, radiushi, x0); + + if (side == INSIDE && point_inside_cone) continue; + if (side == OUTSIDE && !point_inside_cone) continue; + + // find the distance between the point and the cone + + if (point_inside_cone) { + DistanceInteriorPoint(cdim, ctr, lo, hi, radiuslo, radiushi, x0[0], x0[1], x0[2]); + } else { + DistanceExteriorPoint(cdim, ctr, lo, hi, radiuslo, radiushi, x0[0], x0[1], x0[2]); + } - double plane; - if (pstr) plane = input->variable->compute_equal(pvar); - else plane = pvalue; + // compute the force from the center of the cone + // this is different from how it is done in fix wall/region - double **x = atom->x; - double **f = atom->f; - int *mask = atom->mask; - int nlocal = atom->nlocal; + dr = sqrt(x0[0] * x0[0] + x0[1] * x0[1] + x0[2] * x0[2]); - double dr,fatom; + int force_sign = {point_inside_cone ? 1 : -1}; + fmag = force_sign * k * dr * dr; + + fx = delx * fmag / r; + fy = dely * fmag / r; + fz = delz * fmag / r; + f[i][0] += fx; + f[i][1] += fy; + f[i][2] += fz; + indenter[0] -= k3 * dr * dr * dr; + indenter[1] -= fx; + indenter[2] -= fy; + indenter[3] -= fz; + } + } + + // planar indenter + + } else { + + // plane = current plane position + + double plane{pstr ? input->variable->compute_equal(pvar) : pvalue}; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { dr = planeside * (plane - x[i][cdim]); if (dr >= 0.0) continue; - fatom = -planeside * k*dr*dr; - f[i][cdim] += fatom; - indenter[0] -= k3 * dr*dr*dr; - indenter[cdim+1] -= fatom; + fmag = -planeside * k * dr * dr; + f[i][cdim] += fmag; + indenter[0] -= k3 * dr * dr * dr; + indenter[cdim + 1] -= fmag; } } @@ -378,7 +445,7 @@ double FixIndent::compute_scalar() // only sum across procs one time if (indenter_flag == 0) { - MPI_Allreduce(indenter,indenter_all,4,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(indenter, indenter_all, 4, MPI_DOUBLE, MPI_SUM, world); indenter_flag = 1; } return indenter_all[0]; @@ -393,113 +460,406 @@ double FixIndent::compute_vector(int n) // only sum across procs one time if (indenter_flag == 0) { - MPI_Allreduce(indenter,indenter_all,4,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(indenter, indenter_all, 4, MPI_DOUBLE, MPI_SUM, world); indenter_flag = 1; } - return indenter_all[n+1]; + return indenter_all[n + 1]; } /* ---------------------------------------------------------------------- - parse optional parameters at end of input line + parse input args for geometry of indenter ------------------------------------------------------------------------- */ -void FixIndent::options(int narg, char **arg) +int FixIndent::geometry(int narg, char **arg) { if (narg < 0) utils::missing_cmd_args(FLERR, "fix indent", error); istyle = NONE; xstr = ystr = zstr = rstr = pstr = nullptr; xvalue = yvalue = zvalue = rvalue = pvalue = 0.0; + + // sphere + + if (strcmp(arg[0], "sphere") == 0) { + if (istyle != NONE) error->all(FLERR, "Fix indent requires a single geometry keyword"); + if (5 > narg) utils::missing_cmd_args(FLERR, "fix indent sphere", error); + + if (utils::strmatch(arg[1], "^v_")) { + xstr = utils::strdup(arg[1] + 2); + } else + xvalue = utils::numeric(FLERR, arg[1], false, lmp); + if (utils::strmatch(arg[2], "^v_")) { + ystr = utils::strdup(arg[2] + 2); + } else + yvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + zstr = utils::strdup(arg[3] + 2); + } else + zvalue = utils::numeric(FLERR, arg[3], false, lmp); + if (utils::strmatch(arg[4], "^v_")) { + rstr = utils::strdup(arg[4] + 2); + } else + rvalue = utils::numeric(FLERR, arg[4], false, lmp); + + istyle = SPHERE; + return 5; + } + + // cylinder + + if (strcmp(arg[0], "cylinder") == 0) { + if (istyle != NONE) error->all(FLERR, "Fix indent requires a single geometry keyword"); + if (5 > narg) utils::missing_cmd_args(FLERR, "fix indent cylinder", error); + + if (strcmp(arg[1], "x") == 0) { + cdim = 0; + if (utils::strmatch(arg[2], "^v_")) { + ystr = utils::strdup(arg[2] + 2); + } else + yvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + zstr = utils::strdup(arg[3] + 2); + } else + zvalue = utils::numeric(FLERR, arg[3], false, lmp); + } else if (strcmp(arg[1], "y") == 0) { + cdim = 1; + if (utils::strmatch(arg[2], "^v_")) { + xstr = utils::strdup(arg[2] + 2); + } else + xvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + zstr = utils::strdup(arg[3] + 2); + } else + zvalue = utils::numeric(FLERR, arg[3], false, lmp); + } else if (strcmp(arg[1], "z") == 0) { + cdim = 2; + if (utils::strmatch(arg[2], "^v_")) { + xstr = utils::strdup(arg[2] + 2); + } else + xvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + ystr = utils::strdup(arg[3] + 2); + } else + yvalue = utils::numeric(FLERR, arg[3], false, lmp); + } else + error->all(FLERR, "Unknown fix indent cylinder argument: {}", arg[1]); + + if (utils::strmatch(arg[4], "^v_")) { + rstr = utils::strdup(arg[4] + 2); + } else + rvalue = utils::numeric(FLERR, arg[4], false, lmp); + + istyle = CYLINDER; + return 5; + } + + // cone + + if (strcmp(arg[0], "cone") == 0) { + if (istyle != NONE) error->all(FLERR, "Fix indent requires a single geometry keyword"); + if (8 > narg) utils::missing_cmd_args(FLERR, "fix indent cone", error); + + if (strcmp(arg[1], "x") == 0) { + cdim = 0; + if (utils::strmatch(arg[2], "^v_")) { + ystr = utils::strdup(arg[2] + 2); + } else + yvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + zstr = utils::strdup(arg[3] + 2); + } else + zvalue = utils::numeric(FLERR, arg[3], false, lmp); + + } else if (strcmp(arg[1], "y") == 0) { + cdim = 1; + if (utils::strmatch(arg[2], "^v_")) { + xstr = utils::strdup(arg[2] + 2); + } else + xvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + zstr = utils::strdup(arg[3] + 2); + } else + zvalue = utils::numeric(FLERR, arg[3], false, lmp); + + } else if (strcmp(arg[1], "z") == 0) { + cdim = 2; + if (utils::strmatch(arg[2], "^v_")) { + xstr = utils::strdup(arg[2] + 2); + } else + xvalue = utils::numeric(FLERR, arg[2], false, lmp); + if (utils::strmatch(arg[3], "^v_")) { + ystr = utils::strdup(arg[3] + 2); + } else + yvalue = utils::numeric(FLERR, arg[3], false, lmp); + + } else + error->all(FLERR, "Unknown fix indent cone argument: {}", arg[1]); + + if (utils::strmatch(arg[4], "^v_")) { + rlostr = utils::strdup(arg[4] + 2); + } else + rlovalue = utils::numeric(FLERR, arg[4], false, lmp); + if (utils::strmatch(arg[5], "^v_")) { + rhistr = utils::strdup(arg[5] + 2); + } else + rhivalue = utils::numeric(FLERR, arg[5], false, lmp); + if (utils::strmatch(arg[6], "^v_")) { + lostr = utils::strdup(arg[6] + 2); + } else + lovalue = utils::numeric(FLERR, arg[6], false, lmp); + if (utils::strmatch(arg[7], "^v_")) { + histr = utils::strdup(arg[7] + 2); + } else + hivalue = utils::numeric(FLERR, arg[7], false, lmp); + + istyle = CONE; + return 8; + } + + // plane + + if (strcmp(arg[0], "plane") == 0) { + if (istyle != NONE) error->all(FLERR, "Fix indent requires a single geometry keyword"); + if (4 > narg) utils::missing_cmd_args(FLERR, "fix indent plane", error); + if (strcmp(arg[1], "x") == 0) + cdim = 0; + else if (strcmp(arg[1], "y") == 0) + cdim = 1; + else if (strcmp(arg[1], "z") == 0) + cdim = 2; + else + error->all(FLERR, "Unknown fix indent plane argument: {}", arg[1]); + + if (utils::strmatch(arg[2], "^v_")) { + pstr = utils::strdup(arg[2] + 2); + } else + pvalue = utils::numeric(FLERR, arg[2], false, lmp); + + if (strcmp(arg[3], "lo") == 0) + planeside = -1; + else if (strcmp(arg[3], "hi") == 0) + planeside = 1; + else + error->all(FLERR, "Unknown fix indent plane argument: {}", arg[3]); + istyle = PLANE; + return 4; + } + + // invalid istyle arg + + error->all(FLERR, "Unknown fix indent argument: {}", arg[0]); + + return 0; +} + +/* ---------------------------------------------------------------------- + parse optional input args +------------------------------------------------------------------------- */ + +void FixIndent::options(int narg, char **arg) +{ scaleflag = 1; side = OUTSIDE; int iarg = 0; + while (iarg < narg) { - if (strcmp(arg[iarg],"sphere") == 0) { - if (iarg+5 > narg) utils::missing_cmd_args(FLERR, "fix indent sphere", error); - - if (utils::strmatch(arg[iarg+1],"^v_")) { - xstr = utils::strdup(arg[iarg+1]+2); - } else xvalue = utils::numeric(FLERR,arg[iarg+1],false,lmp); - if (utils::strmatch(arg[iarg+2],"^v_")) { - ystr = utils::strdup(arg[iarg+2]+2); - } else yvalue = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (utils::strmatch(arg[iarg+3],"^v_")) { - zstr = utils::strdup(arg[iarg+3]+2); - } else zvalue = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (utils::strmatch(arg[iarg+4],"^v_")) { - rstr = utils::strdup(arg[iarg+4]+2); - } else rvalue = utils::numeric(FLERR,arg[iarg+4],false,lmp); - - istyle = SPHERE; - iarg += 5; - - } else if (strcmp(arg[iarg],"cylinder") == 0) { - if (iarg+5 > narg) utils::missing_cmd_args(FLERR, "fix indent cylinder", error); - - if (strcmp(arg[iarg+1],"x") == 0) { - cdim = 0; - if (utils::strmatch(arg[iarg+2],"^v_")) { - ystr = utils::strdup(arg[iarg+2]+2); - } else yvalue = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (utils::strmatch(arg[iarg+3],"^v_")) { - zstr = utils::strdup(arg[iarg+3]+2); - } else zvalue = utils::numeric(FLERR,arg[iarg+3],false,lmp); - } else if (strcmp(arg[iarg+1],"y") == 0) { - cdim = 1; - if (utils::strmatch(arg[iarg+2],"^v_")) { - xstr = utils::strdup(arg[iarg+2]+2); - } else xvalue = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (utils::strmatch(arg[iarg+3],"^v_")) { - zstr = utils::strdup(arg[iarg+3]+2); - } else zvalue = utils::numeric(FLERR,arg[iarg+3],false,lmp); - } else if (strcmp(arg[iarg+1],"z") == 0) { - cdim = 2; - if (utils::strmatch(arg[iarg+2],"^v_")) { - xstr = utils::strdup(arg[iarg+2]+2); - } else xvalue = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (utils::strmatch(arg[iarg+3],"^v_")) { - ystr = utils::strdup(arg[iarg+3]+2); - } else yvalue = utils::numeric(FLERR,arg[iarg+3],false,lmp); - } else error->all(FLERR,"Unknown fix indent cylinder argument: {}", arg[iarg+1]); - - if (utils::strmatch(arg[iarg+4],"^v_")) { - rstr = utils::strdup(arg[iarg+4]+2); - } else rvalue = utils::numeric(FLERR,arg[iarg+4],false,lmp); - - istyle = CYLINDER; - iarg += 5; - - } else if (strcmp(arg[iarg],"plane") == 0) { - if (iarg+4 > narg) utils::missing_cmd_args(FLERR, "fix indent plane", error); - if (strcmp(arg[iarg+1],"x") == 0) cdim = 0; - else if (strcmp(arg[iarg+1],"y") == 0) cdim = 1; - else if (strcmp(arg[iarg+1],"z") == 0) cdim = 2; - else error->all(FLERR,"Unknown fix indent plane argument: {}", arg[iarg+1]); - - if (utils::strmatch(arg[iarg+2],"^v_")) { - pstr = utils::strdup(arg[iarg+2]+2); - } else pvalue = utils::numeric(FLERR,arg[iarg+2],false,lmp); - - if (strcmp(arg[iarg+3],"lo") == 0) planeside = -1; - else if (strcmp(arg[iarg+3],"hi") == 0) planeside = 1; - else error->all(FLERR,"Unknown fix indent plane argument: {}", arg[iarg+3]); - istyle = PLANE; - iarg += 4; - - } else if (strcmp(arg[iarg],"units") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix indent units", error); - if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; - else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; - else error->all(FLERR,"Unknown fix indent units argument: {}", arg[iarg+1]); + if (strcmp(arg[iarg], "units") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix indent units", error); + if (strcmp(arg[iarg + 1], "box") == 0) + scaleflag = 0; + else if (strcmp(arg[iarg + 1], "lattice") == 0) + scaleflag = 1; + else + error->all(FLERR, "Unknown fix indent units argument: {}", arg[iarg + 1]); iarg += 2; - } else if (strcmp(arg[iarg],"side") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix indent side", error); - if (strcmp(arg[iarg+1],"in") == 0) side = INSIDE; - else if (strcmp(arg[iarg+1],"out") == 0) side = OUTSIDE; - else error->all(FLERR,"Unknown fix indent side argument: {}", arg[iarg+1]); + } else if (strcmp(arg[iarg], "side") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix indent side", error); + if (strcmp(arg[iarg + 1], "in") == 0) + side = INSIDE; + else if (strcmp(arg[iarg + 1], "out") == 0) + side = OUTSIDE; + else + error->all(FLERR, "Unknown fix indent side argument: {}", arg[iarg + 1]); iarg += 2; - } else error->all(FLERR,"Unknown fix indent argument: {}", arg[iarg]); + + } else + error->all(FLERR, "Unknown fix indent argument: {}", arg[iarg]); } } + +/* ---------------------------------------------------------------------- + determines if a point is inside (true) or outside (false) of a cone +------------------------------------------------------------------------- */ + +bool FixIndent::PointInsideCone(int dir, double *center, double lo, double hi, double rlo, + double rhi, double *x) +{ + if ((x[dir] > hi) || (x[dir] < lo)) return false; + + double del[3] = {x[0] - center[0], x[1] - center[1], x[2] - center[2]}; + del[dir] = 0.0; + + double dist = sqrt(del[0] * del[0] + del[1] * del[1] + del[2] * del[2]); + double currentradius = rlo + (x[dir] - lo) * (rhi - rlo) / (hi - lo); + + if (dist > currentradius) return false; + + return true; +} + +/* ---------------------------------------------------------------------- + distance between an exterior point and a cone +------------------------------------------------------------------------- */ + +void FixIndent::DistanceExteriorPoint(int dir, double *center, double lo, double hi, double rlo, + double rhi, double &x, double &y, double &z) +{ + double xp[3], nearest[3], corner1[3], corner2[3]; + double point[3] = {x, y, z}; + double del[3] = {x - center[0], y - center[1], z - center[2]}; + + del[dir] = 0.0; + double r = sqrt(del[0] * del[0] + del[1] * del[1] + del[2] * del[2]); + + corner1[0] = center[0] + del[0] * rlo / r; + corner1[1] = center[1] + del[1] * rlo / r; + corner1[2] = center[2] + del[2] * rlo / r; + corner1[dir] = lo; + + corner2[0] = center[0] + del[0] * rhi / r; + corner2[1] = center[1] + del[1] * rhi / r; + corner2[2] = center[2] + del[2] * rhi / r; + corner2[dir] = hi; + + double corner3[3] = {center[0], center[1], center[2]}; + corner3[dir] = lo; + + double corner4[3] = {center[0], center[1], center[2]}; + corner4[dir] = hi; + + // initialize distance to a big number + + double distsq = 1.0e20; + + // check the first triangle + + point_on_line_segment(corner1, corner2, point, xp); + distsq = closest(point, xp, nearest, distsq); + + // check the second triangle + + point_on_line_segment(corner1, corner3, point, xp); + distsq = closest(point, xp, nearest, distsq); + + // check the third triangle + + point_on_line_segment(corner2, corner4, point, xp); + distsq = closest(point, xp, nearest, distsq); + + x -= nearest[0]; + y -= nearest[1]; + z -= nearest[2]; + + return; +} + +/* ---------------------------------------------------------------------- + distance between an interior point and a cone +------------------------------------------------------------------------- */ + +void FixIndent::DistanceInteriorPoint(int dir, double *center, double lo, double hi, double rlo, + double rhi, double &x, double &y, double &z) +{ + double r, dist_disk, dist_surf; + double surflo[3], surfhi[3], xs[3]; + double initial_point[3] = {x, y, z}; + double point[3] = {0.0, 0.0, 0.0}; + + // initial check with the two disks + + if ((initial_point[dir] - lo) < (hi - initial_point[dir])) { + dist_disk = (initial_point[dir] - lo) * (initial_point[dir] - lo); + point[dir] = initial_point[dir] - lo; + } else { + dist_disk = (hi - initial_point[dir]) * (hi - initial_point[dir]); + point[dir] = initial_point[dir] - hi; + } + + // check with the points in the conical surface + + double del[3] = {x - center[0], y - center[1], z - center[2]}; + del[dir] = 0.0; + r = sqrt(del[0] * del[0] + del[1] * del[1] + del[2] * del[2]); + + surflo[0] = center[0] + del[0] * rlo / r; + surflo[1] = center[1] + del[1] * rlo / r; + surflo[2] = center[2] + del[2] * rlo / r; + surflo[dir] = lo; + + surfhi[0] = center[0] + del[0] * rhi / r; + surfhi[1] = center[1] + del[1] * rhi / r; + surfhi[2] = center[2] + del[2] * rhi / r; + surfhi[dir] = hi; + + point_on_line_segment(surflo, surfhi, initial_point, xs); + + double dx[3] = {initial_point[0] - xs[0], initial_point[1] - xs[1], initial_point[2] - xs[2]}; + dist_surf = dx[0] * dx[0] + dx[1] * dx[1] + dx[2] * dx[2]; + if (dist_surf < dist_disk) { + x = dx[0]; + y = dx[1]; + z = dx[2]; + } else { + x = point[0]; + y = point[1]; + z = point[2]; + } + + return; +} + +/* ---------------------------------------------------------------------- + helper function extracted from region.cpp +------------------------------------------------------------------------- */ + +void FixIndent::point_on_line_segment(double *a, double *b, double *c, double *d) +{ + double ba[3], ca[3]; + + MathExtra::sub3(b, a, ba); + MathExtra::sub3(c, a, ca); + double t = MathExtra::dot3(ca, ba) / MathExtra::dot3(ba, ba); + if (t <= 0.0) { + d[0] = a[0]; + d[1] = a[1]; + d[2] = a[2]; + } else if (t >= 1.0) { + d[0] = b[0]; + d[1] = b[1]; + d[2] = b[2]; + } else { + d[0] = a[0] + t * ba[0]; + d[1] = a[1] + t * ba[1]; + d[2] = a[2] + t * ba[2]; + } +} + +/* ---------------------------------------------------------------------- + helper function extracted from region_cone.cpp +------------------------------------------------------------------------- */ + +double FixIndent::closest(double *x, double *near, double *nearest, double dsq) +{ + double dx = x[0] - near[0]; + double dy = x[1] - near[1]; + double dz = x[2] - near[2]; + double rsq = dx * dx + dy * dy + dz * dz; + if (rsq >= dsq) return dsq; + + nearest[0] = near[0]; + nearest[1] = near[1]; + nearest[2] = near[2]; + return rsq; +} diff --git a/src/fix_indent.h b/src/fix_indent.h index 527e9ec2772..37e1623df9d 100644 --- a/src/fix_indent.h +++ b/src/fix_indent.h @@ -49,7 +49,24 @@ class FixIndent : public Fix { int cdim, varflag; int ilevel_respa; + char *rlostr, *rhistr, *lostr, *histr; + int rlovar, rhivar, lovar, hivar; + double rlovalue, rhivalue, lovalue, hivalue; + + // methods for argument parsing + + int geometry(int, char **); void options(int, char **); + + // methods for conical indenter + + bool PointInsideCone(int, double *, double, double, double, double, double *); + void DistanceExteriorPoint(int, double *, double, double, double, double, + double &, double &, double &); + void DistanceInteriorPoint(int, double *, double, double, double, double, + double &, double &, double &); + void point_on_line_segment(double *, double *, double *, double *); + double closest(double *, double *, double *, double); }; } // namespace LAMMPS_NS diff --git a/src/fix_langevin.cpp b/src/fix_langevin.cpp index 35bffb24fa8..7339ddada16 100644 --- a/src/fix_langevin.cpp +++ b/src/fix_langevin.cpp @@ -46,8 +46,8 @@ using namespace FixConst; enum { NOBIAS, BIAS }; enum { CONSTANT, EQUAL, ATOM }; -#define SINERTIA 0.4 // moment of inertia prefactor for sphere -#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double SINERTIA = 0.4; // moment of inertia prefactor for sphere +static constexpr double EINERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ @@ -230,18 +230,19 @@ void FixLangevin::init() // warn if any integrate fix comes after this one int before = 1; int flag = 0; - for (int i = 0; i < modify->nfix; i++) { - auto ifix = modify->get_fix_by_index(i); + for (auto ifix : modify->get_fix_list()) { if (strcmp(id, ifix->id) == 0) before = 0; - else if ((modify->fmask[i] && utils::strmatch(ifix->style, "^nve")) && before) + else if ((modify->get_fix_mask(ifix) && utils::strmatch(ifix->style, "^nve")) && before) flag = 1; } if (flag) error->all(FLERR, "Fix langevin gjf should come before fix nve"); } - if (oflag && !atom->sphere_flag) - error->all(FLERR, "Fix langevin omega requires atom style sphere"); + if (oflag && !atom->omega_flag) + error->all(FLERR, "Fix langevin omega requires atom attribute omega"); + if (oflag && !atom->radius_flag) + error->all(FLERR, "Fix langevin omega requires atom attribute radius"); if (ascale && !atom->ellipsoid_flag) error->all(FLERR, "Fix langevin angmom requires atom style ellipsoid"); @@ -789,7 +790,7 @@ void FixLangevin::compute_target() if (tstyle == EQUAL) { t_target = input->variable->compute_equal(tvar); if (t_target < 0.0) - error->one(FLERR,"Fix langevin variable returned negative temperature"); + error->one(FLERR, "Fix langevin variable returned negative temperature"); tsqrt = sqrt(t_target); } else { if (atom->nmax > maxatom2) { @@ -801,8 +802,7 @@ void FixLangevin::compute_target() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (tforce[i] < 0.0) - error->one(FLERR, - "Fix langevin variable returned negative temperature"); + error->one(FLERR, "Fix langevin variable returned negative temperature"); } modify->addstep_compute(update->ntimestep + 1); } diff --git a/src/fix_move.cpp b/src/fix_move.cpp index 36bba410fcb..80e10c4d3d4 100644 --- a/src/fix_move.cpp +++ b/src/fix_move.cpp @@ -42,7 +42,7 @@ using namespace MathConst; enum { LINEAR, WIGGLE, ROTATE, VARIABLE, TRANSROT }; enum { EQUAL, ATOM }; -#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid +static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ellipsoid /* ---------------------------------------------------------------------- */ @@ -276,10 +276,11 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : line_flag = atom->line_flag; tri_flag = atom->tri_flag; body_flag = atom->body_flag; + quat_atom_flag = atom->quat_flag; theta_flag = quat_flag = 0; if (line_flag) theta_flag = 1; - if (ellipsoid_flag || tri_flag || body_flag) quat_flag = 1; + if (ellipsoid_flag || tri_flag || body_flag || quat_atom_flag) quat_flag = 1; extra_flag = 0; if (omega_flag || angmom_flag || theta_flag || quat_flag) extra_flag = 1; @@ -329,7 +330,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : } } - if (quat_flag) { + if (quat_flag && !quat_atom_flag) { double *quat; for (int i = 0; i < nlocal; i++) { quat = nullptr; @@ -349,6 +350,16 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : } else qoriginal[i][0] = qoriginal[i][1] = qoriginal[i][2] = qoriginal[i][3] = 0.0; } + } else if (quat_atom_flag) { + double **quat_atom = atom->quat; + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + qoriginal[i][0] = quat_atom[i][0]; + qoriginal[i][1] = quat_atom[i][1]; + qoriginal[i][2] = quat_atom[i][2]; + qoriginal[i][3] = quat_atom[i][3]; + } + } } // nrestart = size of per-atom restart data @@ -521,6 +532,7 @@ void FixMove::initial_integrate(int /*vflag*/) double *radius = atom->radius; double *rmass = atom->rmass; double *mass = atom->mass; + double **quat_atom = atom->quat; int *type = atom->type; int *ellipsoid = atom->ellipsoid; int *line = atom->line; @@ -749,9 +761,9 @@ void FixMove::initial_integrate(int /*vflag*/) avec_line->bonus[atom->line[i]].theta = theta_new; } - // quats for ellipsoids, tris, and bodies + // quats for ellipsoids, tris, bodies, and bpm/sphere - if (quat_flag) { + if (quat_flag && !quat_atom_flag) { quat = nullptr; if (ellipsoid_flag && ellipsoid[i] >= 0) quat = avec_ellipsoid->bonus[ellipsoid[i]].quat; @@ -760,6 +772,8 @@ void FixMove::initial_integrate(int /*vflag*/) else if (body_flag && body[i] >= 0) quat = avec_body->bonus[body[i]].quat; if (quat) MathExtra::quatquat(qrotate, qoriginal[i], quat); + } else if (quat_atom_flag) { + MathExtra::quatquat(qrotate, qoriginal[i], quat_atom[i]); } } @@ -880,9 +894,9 @@ void FixMove::initial_integrate(int /*vflag*/) avec_line->bonus[atom->line[i]].theta = theta_new; } - // quats for ellipsoids, tris, and bodies + // quats for ellipsoids, tris, bodies, and bpm/sphere - if (quat_flag) { + if (quat_flag && !quat_atom_flag) { quat = nullptr; if (ellipsoid_flag && ellipsoid[i] >= 0) quat = avec_ellipsoid->bonus[ellipsoid[i]].quat; @@ -891,6 +905,8 @@ void FixMove::initial_integrate(int /*vflag*/) else if (body_flag && body[i] >= 0) quat = avec_body->bonus[body[i]].quat; if (quat) MathExtra::quatquat(qrotate, qoriginal[i], quat); + } else if (quat_atom_flag) { + MathExtra::quatquat(qrotate, qoriginal[i], quat_atom[i]); } } @@ -1341,9 +1357,9 @@ void FixMove::set_arrays(int i) toriginal[i] = theta - 0.0; // NOTE: edit this line } - // quats for ellipsoids, tris, and bodies + // quats for ellipsoids, tris, bodies, and bpm/sphere - if (quat_flag) { + if (quat_flag & !quat_atom_flag) { quat = nullptr; if (ellipsoid_flag && ellipsoid[i] >= 0) quat = avec_ellipsoid->bonus[ellipsoid[i]].quat; @@ -1354,6 +1370,12 @@ void FixMove::set_arrays(int i) if (quat) { // qoriginal = f(quat,-delta); // NOTE: edit this line } + } else if (quat_atom_flag) { + // double **quat_atom = atom->quat; + // qoriginal[0] = quat_atom[i][0]; // NOTE: edit this line + // qoriginal[1] = quat_atom[i][1]; // NOTE: edit this line + // qoriginal[2] = quat_atom[i][2]; // NOTE: edit this line + // qoriginal[3] = quat_atom[i][3]; // NOTE: edit this line } } xoriginal[i][0] -= vx * delta; @@ -1400,7 +1422,7 @@ void FixMove::set_arrays(int i) // quats for ellipsoids, tris, and bodies - if (quat_flag) { + if (quat_flag && !quat_atom_flag) { quat = nullptr; if (ellipsoid_flag && ellipsoid[i] >= 0) quat = avec_ellipsoid->bonus[ellipsoid[i]].quat; @@ -1411,6 +1433,12 @@ void FixMove::set_arrays(int i) if (quat) { // qoriginal = f(quat,-delta); // NOTE: edit this line } + } else if (quat_atom_flag) { + // double **quat_atom = atom->quat; + // qoriginal[0] = quat_atom[i][0]; // NOTE: edit this line + // qoriginal[1] = quat_atom[i][1]; // NOTE: edit this line + // qoriginal[2] = quat_atom[i][2]; // NOTE: edit this line + // qoriginal[3] = quat_atom[i][3]; // NOTE: edit this line } } } diff --git a/src/fix_move.h b/src/fix_move.h index e3c018f54d7..244a9d704a7 100644 --- a/src/fix_move.h +++ b/src/fix_move.h @@ -61,7 +61,7 @@ class FixMove : public Fix { int xvar, yvar, zvar, vxvar, vyvar, vzvar; int xvarstyle, yvarstyle, zvarstyle, vxvarstyle, vyvarstyle, vzvarstyle; int extra_flag, omega_flag, angmom_flag; - int radius_flag, ellipsoid_flag, line_flag, tri_flag, body_flag; + int radius_flag, ellipsoid_flag, line_flag, tri_flag, body_flag, quat_atom_flag; int theta_flag, quat_flag; int nlevels_respa, nrestart; int time_origin; diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index 562ca51c293..a7536800cb3 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -40,9 +40,9 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 -#define EPSILON 1.0e-6 +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; +static constexpr double EPSILON = 1.0e-6; enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; @@ -442,10 +442,16 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR,"Invalid fix {} pressure settings", style); if (dipole_flag) { - if (!atom->sphere_flag) - error->all(FLERR,"Using update dipole flag requires atom style sphere"); - if (!atom->mu_flag) - error->all(FLERR,"Using update dipole flag requires atom attribute mu"); + if (strstr(style, "/sphere")) { + if (!atom->omega_flag) + error->all(FLERR,"Using update dipole flag requires atom attribute omega"); + if (!atom->radius_flag) + error->all(FLERR,"Using update dipole flag requires atom attribute radius"); + if (!atom->mu_flag) + error->all(FLERR,"Using update dipole flag requires atom attribute mu"); + } else { + error->all(FLERR, "Must use a '/sphere' Nose-Hoover fix style for updating dipoles"); + } } if ((tstat_flag && t_period <= 0.0) || diff --git a/src/fix_nh_sphere.cpp b/src/fix_nh_sphere.cpp index f39de6c6569..1835181606b 100644 --- a/src/fix_nh_sphere.cpp +++ b/src/fix_nh_sphere.cpp @@ -36,8 +36,10 @@ using namespace MathExtra; FixNHSphere::FixNHSphere(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { - if (!atom->sphere_flag) - error->all(FLERR,"Fix nvt/nph/npt sphere requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR,"Fix {} requires atom attribute omega", style); + if (!atom->radius_flag) + error->all(FLERR,"Fix {} requires atom attribute radius", style); // inertia = moment of inertia prefactor for sphere or disc @@ -48,8 +50,7 @@ FixNHSphere::FixNHSphere(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"disc") == 0) { inertia = 0.5; if (domain->dimension != 2) - error->all(FLERR, - "Fix nvt/nph/npt sphere disc option requires 2d simulation"); + error->all(FLERR, "Fix {} disc option requires 2d simulation", style); } iarg++; } diff --git a/src/fix_nve_sphere.cpp b/src/fix_nve_sphere.cpp index ea57028af46..21520d7a695 100644 --- a/src/fix_nve_sphere.cpp +++ b/src/fix_nve_sphere.cpp @@ -68,8 +68,8 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) : // error checks - if (!atom->sphere_flag) - error->all(FLERR,"Fix nve/sphere requires atom style sphere"); + if (!atom->omega_flag) + error->all(FLERR,"Fix nve/sphere requires atom attribute omega"); if (extra == DIPOLE && !atom->mu_flag) error->all(FLERR,"Fix nve/sphere update dipole requires atom attribute mu"); } diff --git a/src/fix_pair.cpp b/src/fix_pair.cpp index 66212684a88..da56b01f9e9 100644 --- a/src/fix_pair.cpp +++ b/src/fix_pair.cpp @@ -21,7 +21,8 @@ #include "memory.h" #include "pair.h" #include "update.h" -#include "fmt/format.h" + +#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_press_langevin.cpp b/src/fix_press_langevin.cpp index 752f826dfee..8116d66c0ae 100644 --- a/src/fix_press_langevin.cpp +++ b/src/fix_press_langevin.cpp @@ -24,7 +24,6 @@ #include "error.h" #include "fix_deform.h" #include "force.h" -#include "group.h" #include "irregular.h" #include "kspace.h" #include "modify.h" @@ -37,8 +36,8 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTAFLIP 0.1 -#define TILTMAX 1.5 +static constexpr double DELTAFLIP = 0.1; +static constexpr double TILTMAX = 1.5; enum { NONE, XYZ, XY, YZ, XZ }; enum { ISO, ANISO, TRICLINIC }; diff --git a/src/fix_print.cpp b/src/fix_print.cpp index 023b9355cdb..ccef03c3aea 100644 --- a/src/fix_print.cpp +++ b/src/fix_print.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -14,6 +13,7 @@ #include "fix_print.h" +#include "comm.h" #include "error.h" #include "input.h" #include "memory.h" @@ -29,24 +29,22 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixPrint::FixPrint(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), - fp(nullptr), text(nullptr), copy(nullptr), work(nullptr), var_print(nullptr) + Fix(lmp, narg, arg), fp(nullptr), text(nullptr), copy(nullptr), work(nullptr), + var_print(nullptr) { - if (narg < 5) error->all(FLERR,"Illegal fix print command"); - if (utils::strmatch(arg[3],"^v_")) { - var_print = utils::strdup(arg[3]+2); + if (narg < 5) utils::missing_cmd_args(FLERR, "fix print", error); + if (utils::strmatch(arg[3], "^v_")) { + var_print = utils::strdup(arg[3] + 2); nevery = 1; } else { - nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery <= 0) error->all(FLERR,"Illegal fix print command"); + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery <= 0) error->all(FLERR, "Illegal fix print nevery value {}; must be > 0", nevery); } - MPI_Comm_rank(world,&me); - text = utils::strdup(arg[4]); - int n = strlen(text)+1; - copy = (char *) memory->smalloc(n*sizeof(char),"fix/print:copy"); - work = (char *) memory->smalloc(n*sizeof(char),"fix/print:work"); + int n = strlen(text) + 1; + copy = (char *) memory->smalloc(n * sizeof(char), "fix/print:copy"); + work = (char *) memory->smalloc(n * sizeof(char), "fix/print:work"); maxcopy = maxwork = n; // parse optional args @@ -57,48 +55,54 @@ FixPrint::FixPrint(LAMMPS *lmp, int narg, char **arg) : int iarg = 5; while (iarg < narg) { - if (strcmp(arg[iarg],"file") == 0 || strcmp(arg[iarg],"append") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); - if (me == 0) { - if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); - else fp = fopen(arg[iarg+1],"a"); + if ((strcmp(arg[iarg], "file") == 0) || (strcmp(arg[iarg], "append") == 0)) { + if (iarg + 2 > narg) + utils::missing_cmd_args(FLERR, std::string("fix print ") + arg[iarg], error); + if (comm->me == 0) { + if (strcmp(arg[iarg], "file") == 0) + fp = fopen(arg[iarg + 1], "w"); + else + fp = fopen(arg[iarg + 1], "a"); if (fp == nullptr) - error->one(FLERR,"Cannot open fix print file {}: {}", - arg[iarg+1], utils::getsyserror()); + error->one(FLERR, "Cannot open fix print file {}: {}", arg[iarg + 1], + utils::getsyserror()); } iarg += 2; - } else if (strcmp(arg[iarg],"screen") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); - screenflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "screen") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix print screen", error); + screenflag = utils::logical(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"title") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix print command"); - delete [] title; - title = utils::strdup(arg[iarg+1]); + } else if (strcmp(arg[iarg], "title") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix print title", error); + delete[] title; + title = utils::strdup(arg[iarg + 1]); iarg += 2; - } else error->all(FLERR,"Illegal fix print command"); + } else + error->all(FLERR, "Unknown fix print keyword: {}", arg[iarg]); } // print file comment line - if (fp && me == 0) { - if (title) fprintf(fp,"%s\n",title); - else fprintf(fp,"# Fix print output for fix %s\n",id); + if (fp && (comm->me == 0)) { + if (title) + fprintf(fp, "%s\n", title); + else + fprintf(fp, "# Fix print output for fix %s\n", id); } - delete [] title; + delete[] title; } /* ---------------------------------------------------------------------- */ FixPrint::~FixPrint() { - delete [] text; - delete [] var_print; + delete[] text; + delete[] var_print; memory->sfree(copy); memory->sfree(work); - if (fp && me == 0) fclose(fp); + if (fp && (comm->me == 0)) fclose(fp); } /* ---------------------------------------------------------------------- */ @@ -117,16 +121,16 @@ void FixPrint::init() if (var_print) { ivar_print = input->variable->find(var_print); if (ivar_print < 0) - error->all(FLERR,"Variable name for fix print timestep does not exist"); + error->all(FLERR, "Variable {} for fix print timestep does not exist", var_print); if (!input->variable->equalstyle(ivar_print)) - error->all(FLERR,"Variable for fix print timestep is invalid style"); - next_print = static_cast - (input->variable->compute_equal(ivar_print)); + error->all(FLERR, "Variable {} for fix print timestep is invalid style", var_print); + next_print = static_cast(input->variable->compute_equal(ivar_print)); if (next_print <= update->ntimestep) - error->all(FLERR,"Fix print timestep variable returned a bad timestep"); + error->all(FLERR, "Fix print timestep variable {} returned a bad timestep: {}", var_print, + next_print); } else { if (update->ntimestep % nevery) - next_print = (update->ntimestep/nevery)*nevery + nevery; + next_print = (update->ntimestep / nevery) * nevery + nevery; else next_print = update->ntimestep; } @@ -158,24 +162,23 @@ void FixPrint::end_of_step() modify->clearstep_compute(); - strncpy(copy,text,maxcopy); - input->substitute(copy,work,maxcopy,maxwork,0); + strncpy(copy, text, maxcopy); + input->substitute(copy, work, maxcopy, maxwork, 0); if (var_print) { - next_print = static_cast - (input->variable->compute_equal(ivar_print)); + next_print = static_cast(input->variable->compute_equal(ivar_print)); if (next_print <= update->ntimestep) - error->all(FLERR,"Fix print timestep variable returned a bad timestep"); + error->all(FLERR, "Fix print timestep variable returned a bad timestep: {}", next_print); } else { - next_print = (update->ntimestep/nevery)*nevery + nevery; + next_print = (update->ntimestep / nevery) * nevery + nevery; } modify->addstep_compute(next_print); - if (me == 0) { - if (screenflag) utils::logmesg(lmp,std::string(copy) + "\n"); + if (comm->me == 0) { + if (screenflag) utils::logmesg(lmp, std::string(copy) + "\n"); if (fp) { - fmt::print(fp,"{}\n",copy); + fmt::print(fp, "{}\n", copy); fflush(fp); } } diff --git a/src/fix_print.h b/src/fix_print.h index 48eda897b56..9e699e22ba2 100644 --- a/src/fix_print.h +++ b/src/fix_print.h @@ -34,7 +34,7 @@ class FixPrint : public Fix { void end_of_step() override; private: - int me, screenflag; + int screenflag; FILE *fp; char *text, *copy, *work; int maxcopy, maxwork; diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index 9613523059d..2cbdb44ab03 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -51,6 +51,19 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : nvalue = 0; values_peratom = 0; + // check for ghost keyword to use as add_custom() arg + + border = 0; + while (iarg < narg) { + if (strcmp(arg[iarg], "ghost") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix property/atom command"); + border = utils::logical(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else iarg++; + } + + iarg = 3; + while (iarg < narg) { if (strcmp(arg[iarg], "mol") == 0) { if (atom->molecule_flag) @@ -112,7 +125,7 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : if (index[nvalue] >= 0) error->all(FLERR, "Fix property/atom vector name already exists"); if (ReadData::is_data_section(id)) error->all(FLERR, "Fix property/atom fix ID must not be a data file section name"); - index[nvalue] = atom->add_custom(&arg[iarg][2], 0, 0); + index[nvalue] = atom->add_custom(&arg[iarg][2], 0, 0, border); cols[nvalue] = 0; values_peratom++; nvalue++; @@ -125,7 +138,7 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : if (index[nvalue] >= 0) error->all(FLERR, "Fix property/atom vector name already exists"); if (ReadData::is_data_section(id)) error->all(FLERR, "Fix property/atom fix ID must not be a data file section name"); - index[nvalue] = atom->add_custom(&arg[iarg][2], 1, 0); + index[nvalue] = atom->add_custom(&arg[iarg][2], 1, 0, border); cols[nvalue] = 0; values_peratom++; nvalue++; @@ -154,7 +167,7 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : which = 1; styles[nvalue] = DARRAY; } - index[nvalue] = atom->add_custom(&arg[iarg][3], which, ncols); + index[nvalue] = atom->add_custom(&arg[iarg][3], which, ncols, border); cols[nvalue] = ncols; values_peratom += ncols; nvalue++; @@ -168,11 +181,8 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : // optional args - border = 0; while (iarg < narg) { - if (strcmp(arg[iarg], "ghost") == 0) { - if (iarg + 2 > narg) error->all(FLERR, "Illegal fix property/atom command"); - border = utils::logical(FLERR, arg[iarg + 1], false, lmp); + if (strcmp(arg[iarg], "ghost") == 0) { // skip here, since handled earlier iarg += 2; } else if (strcmp(arg[iarg], "writedata") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal fix property/atom command"); @@ -318,8 +328,9 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint try { ValueTokenizer values(buf); if ((int) values.count() != values_peratom + 1) - error->all(FLERR, "Incorrect format in {} section of data file: {} expected {} and got {}", - keyword, buf, values_peratom + 1, values.count()); + error->all(FLERR, "Incorrect format in {} section of data file: {}\n" + "expected {} parameters and got {}{}", keyword, utils::trim(buf), + values_peratom + 1, values.count(), utils::errorurl(2)); itag = values.next_tagint() + id_offset; if (itag <= 0 || itag > map_tag_max) diff --git a/src/fix_recenter.cpp b/src/fix_recenter.cpp index bee7f55823c..4da8c4787bd 100644 --- a/src/fix_recenter.cpp +++ b/src/fix_recenter.cpp @@ -125,13 +125,12 @@ void FixRecenter::init() int after = 0; int flag = 0; - for (int i = 0; i < modify->nfix; i++) { - if (strcmp(id,modify->fix[i]->id) == 0) after = 1; - else if ((modify->fmask[i] & INITIAL_INTEGRATE) && after) flag = 1; + for (const auto &ifix : modify->get_fix_list()) { + if (strcmp(id, ifix->id) == 0) after = 1; + else if ((modify->get_fix_mask(ifix) & INITIAL_INTEGRATE) && after) flag = 1; } if (flag && comm->me == 0) - error->warning(FLERR,"Fix recenter should come after all other " - "integration fixes"); + error->warning(FLERR,"Fix recenter should come after all other integration fixes"); masstotal = group->mass(igroup); diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index f252134aa98..cc95fc93f35 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -38,9 +38,9 @@ using MathConst::DEG2RAD; enum{BOND,LBOUND,ANGLE,DIHEDRAL}; -#define TOLERANCE 0.05 -#define SMALL 0.001 -#define DELTA 1 +static constexpr double TOLERANCE = 0.05; +static constexpr double SMALL = 0.001; +static constexpr int DELTA = 1; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_spring.cpp b/src/fix_spring.cpp index 3a14ec8de1e..93c1f7867d7 100644 --- a/src/fix_spring.cpp +++ b/src/fix_spring.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define SMALL 1.0e-10 +static constexpr double SMALL = 1.0e-10; enum{TETHER,COUPLE}; diff --git a/src/fix_spring_chunk.cpp b/src/fix_spring_chunk.cpp index 3deedcffacc..f42572b1907 100644 --- a/src/fix_spring_chunk.cpp +++ b/src/fix_spring_chunk.cpp @@ -30,7 +30,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define SMALL 1.0e-10 +static constexpr double SMALL = 1.0e-10; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_store_local.cpp b/src/fix_store_local.cpp index d32f0e81788..8deac03d795 100644 --- a/src/fix_store_local.cpp +++ b/src/fix_store_local.cpp @@ -21,7 +21,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTA 1024 +static constexpr int DELTA = 1024; /* ---------------------------------------------------------------------- */ diff --git a/src/fix_thermal_conductivity.cpp b/src/fix_thermal_conductivity.cpp index 5fcb59d276a..dd674a0506e 100644 --- a/src/fix_thermal_conductivity.cpp +++ b/src/fix_thermal_conductivity.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define BIG 1.0e10 +static constexpr double BIG = 1.0e10; /* ---------------------------------------------------------------------- */ @@ -108,15 +108,14 @@ int FixThermalConductivity::setmask() void FixThermalConductivity::init() { - // warn if any fix ave/spatial comes after this fix + // warn if any fix ave/chunk comes after this fix // can cause glitch in averaging since ave will happen after swap int foundme = 0; - for (int i = 0; i < modify->nfix; i++) { - if (modify->fix[i] == this) foundme = 1; - if (foundme && strcmp(modify->fix[i]->style,"ave/spatial") == 0 && me == 0) - error->warning(FLERR, - "Fix thermal/conductivity comes before fix ave/spatial"); + for (const auto &ifix : modify->get_fix_list()) { + if (ifix == this) foundme = 1; + if (foundme && utils::strmatch(ifix->style,"^ave/chunk") && (me == 0)) + error->warning(FLERR, "Fix thermal/conductivity comes before fix ave/chunk"); } // set bounds of 2 slabs in edim diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index e18b53f6159..7c75f93a3a2 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -22,6 +22,8 @@ #include "update.h" #include "variable.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_wall.cpp b/src/fix_wall.cpp index c4f32196225..50289d0f69a 100644 --- a/src/fix_wall.cpp +++ b/src/fix_wall.cpp @@ -28,7 +28,6 @@ using namespace LAMMPS_NS; using namespace FixConst; enum { XLO = 0, XHI = 1, YLO = 2, YHI = 3, ZLO = 4, ZHI = 5 }; -enum { NONE = 0, EDGE, CONSTANT, VARIABLE }; static const char *wallpos[] = {"xlo", "xhi", "ylo", "yhi", "zlo", "zhi"}; diff --git a/src/fix_wall.h b/src/fix_wall.h index 12ceb17b492..81abfab8ea3 100644 --- a/src/fix_wall.h +++ b/src/fix_wall.h @@ -27,6 +27,7 @@ class FixWall : public Fix { int xstyle[6]; int xindex[6]; char *xstr[6]; + enum { NONE = 0, EDGE, CONSTANT, VARIABLE }; FixWall(class LAMMPS *, int, char **); ~FixWall() override; diff --git a/src/fix_wall_lj126.cpp b/src/fix_wall_lj126.cpp index f0f7750edb3..d526390153e 100644 --- a/src/fix_wall_lj126.cpp +++ b/src/fix_wall_lj126.cpp @@ -17,8 +17,6 @@ #include "error.h" #include "math_special.h" -#include - using namespace LAMMPS_NS; using MathSpecial::powint; diff --git a/src/fix_wall_lj93.cpp b/src/fix_wall_lj93.cpp index c0c5e86ce3c..dda0298be16 100644 --- a/src/fix_wall_lj93.cpp +++ b/src/fix_wall_lj93.cpp @@ -17,8 +17,6 @@ #include "error.h" #include "math_special.h" -#include - using namespace LAMMPS_NS; using MathSpecial::powint; diff --git a/src/fix_wall_reflect.cpp b/src/fix_wall_reflect.cpp index 00ef9688281..0169644e4ac 100644 --- a/src/fix_wall_reflect.cpp +++ b/src/fix_wall_reflect.cpp @@ -32,8 +32,7 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), - nwall(0) + Fix(lmp, narg, arg), nwall(0), varflag(0) { if (narg < 4) utils::missing_cmd_args(FLERR, "fix wall/reflect", error); diff --git a/src/fix_wall_region.cpp b/src/fix_wall_region.cpp index da9ee757d98..d6fc63f55ce 100644 --- a/src/fix_wall_region.cpp +++ b/src/fix_wall_region.cpp @@ -38,7 +38,7 @@ enum { LJ93, LJ126, LJ1043, COLLOID, HARMONIC, MORSE }; FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), idregion(nullptr), region(nullptr) { - if (narg < 8) error->all(FLERR, "Illegal fix wall/region command"); + if (narg < 8) utils::missing_cmd_args(FLERR, "fix wall/region", error); scalar_flag = 1; vector_flag = 1; @@ -70,12 +70,12 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[4], "morse") == 0) style = MORSE; else - error->all(FLERR, "Illegal fix wall/region command"); + error->all(FLERR, "Unknown fix wall/region style {}", arg[4]); if (style != COLLOID) dynamic_group_allow = 1; if (style == MORSE) { - if (narg != 9) error->all(FLERR, "Illegal fix wall/region command"); + if (narg != 9) error->all(FLERR, "Illegal fix wall/region morse command"); epsilon = utils::numeric(FLERR, arg[5], false, lmp); alpha = utils::numeric(FLERR, arg[6], false, lmp); @@ -127,7 +127,7 @@ void FixWallRegion::init() // ensure all particles in group are extended particles if (style == COLLOID) { - if (!atom->sphere_flag) error->all(FLERR, "Fix wall/region colloid requires atom style sphere"); + if (!atom->radius_flag) error->all(FLERR, "Fix wall/region colloid requires atom attribute radius"); double *radius = atom->radius; int *mask = atom->mask; @@ -140,7 +140,7 @@ void FixWallRegion::init() int flagall; MPI_Allreduce(&flag, &flagall, 1, MPI_INT, MPI_SUM, world); - if (flagall) error->all(FLERR, "Fix wall/region colloid requires extended particles"); + if (flagall) error->all(FLERR, "Fix wall/region colloid requires only extended particles"); } // setup coefficients for each style diff --git a/src/fmt/args.h b/src/fmt/args.h index 2d684e7cc11..b77a2d06611 100644 --- a/src/fmt/args.h +++ b/src/fmt/args.h @@ -12,7 +12,7 @@ #include // std::unique_ptr #include -#include "core.h" +#include "format.h" // std_string_view FMT_BEGIN_NAMESPACE @@ -22,8 +22,9 @@ template struct is_reference_wrapper : std::false_type {}; template struct is_reference_wrapper> : std::true_type {}; -template const T& unwrap(const T& v) { return v; } -template const T& unwrap(const std::reference_wrapper& v) { +template auto unwrap(const T& v) -> const T& { return v; } +template +auto unwrap(const std::reference_wrapper& v) -> const T& { return static_cast(v); } @@ -50,7 +51,7 @@ class dynamic_arg_list { std::unique_ptr> head_; public: - template const T& push(const Arg& arg) { + template auto push(const Arg& arg) -> const T& { auto new_node = std::unique_ptr>(new typed_node(arg)); auto& value = new_node->value; new_node->next = std::move(head_); @@ -110,14 +111,14 @@ class dynamic_format_arg_store friend class basic_format_args; - unsigned long long get_types() const { + auto get_types() const -> unsigned long long { return detail::is_unpacked_bit | data_.size() | (named_info_.empty() ? 0ULL : static_cast(detail::has_named_args_bit)); } - const basic_format_arg* data() const { + auto data() const -> const basic_format_arg* { return named_info_.empty() ? data_.data() : data_.data() + 1; } diff --git a/src/fmt/chrono.h b/src/fmt/chrono.h index ff3e1445b96..9d54574e168 100644 --- a/src/fmt/chrono.h +++ b/src/fmt/chrono.h @@ -18,7 +18,7 @@ #include #include -#include "format.h" +#include "ostream.h" // formatbuf FMT_BEGIN_NAMESPACE @@ -72,7 +72,8 @@ template ::value && std::numeric_limits::is_signed == std::numeric_limits::is_signed)> -FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { +FMT_CONSTEXPR auto lossless_integral_conversion(const From from, int& ec) + -> To { ec = 0; using F = std::numeric_limits; using T = std::numeric_limits; @@ -101,7 +102,8 @@ template ::value && std::numeric_limits::is_signed != std::numeric_limits::is_signed)> -FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { +FMT_CONSTEXPR auto lossless_integral_conversion(const From from, int& ec) + -> To { ec = 0; using F = std::numeric_limits; using T = std::numeric_limits; @@ -133,7 +135,8 @@ FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { template ::value)> -FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { +FMT_CONSTEXPR auto lossless_integral_conversion(const From from, int& ec) + -> To { ec = 0; return from; } // function @@ -154,7 +157,7 @@ FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { // clang-format on template ::value)> -FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { +FMT_CONSTEXPR auto safe_float_conversion(const From from, int& ec) -> To { ec = 0; using T = std::numeric_limits; static_assert(std::is_floating_point::value, "From must be floating"); @@ -176,7 +179,7 @@ FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { template ::value)> -FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { +FMT_CONSTEXPR auto safe_float_conversion(const From from, int& ec) -> To { ec = 0; static_assert(std::is_floating_point::value, "From must be floating"); return from; @@ -188,8 +191,8 @@ FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { template ::value), FMT_ENABLE_IF(std::is_integral::value)> -To safe_duration_cast(std::chrono::duration from, - int& ec) { +auto safe_duration_cast(std::chrono::duration from, + int& ec) -> To { using From = std::chrono::duration; ec = 0; // the basic idea is that we need to convert from count() in the from type @@ -240,8 +243,8 @@ To safe_duration_cast(std::chrono::duration from, template ::value), FMT_ENABLE_IF(std::is_floating_point::value)> -To safe_duration_cast(std::chrono::duration from, - int& ec) { +auto safe_duration_cast(std::chrono::duration from, + int& ec) -> To { using From = std::chrono::duration; ec = 0; if (std::isnan(from.count())) { @@ -321,12 +324,12 @@ To safe_duration_cast(std::chrono::duration from, namespace detail { template struct null {}; -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<>(); } +inline auto localtime_r FMT_NOMACRO(...) -> null<> { return null<>(); } +inline auto localtime_s(...) -> null<> { return null<>(); } +inline auto gmtime_r(...) -> null<> { return null<>(); } +inline auto gmtime_s(...) -> null<> { return null<>(); } -inline const std::locale& get_classic_locale() { +inline auto get_classic_locale() -> const std::locale& { static const auto& locale = std::locale::classic(); return locale; } @@ -336,8 +339,6 @@ template struct codecvt_result { CodeUnit buf[max_size]; CodeUnit* end; }; -template -constexpr const size_t codecvt_result::max_size; template void write_codecvt(codecvt_result& out, string_view in_buf, @@ -408,8 +409,7 @@ inline void do_write(buffer& buf, const std::tm& time, auto&& format_buf = formatbuf>(buf); auto&& os = std::basic_ostream(&format_buf); os.imbue(loc); - using iterator = std::ostreambuf_iterator; - const auto& facet = std::use_facet>(loc); + const auto& facet = std::use_facet>(loc); auto end = facet.put(os, os, Char(' '), &time, format, modifier); if (end.failed()) FMT_THROW(format_error("failed to format time")); } @@ -432,6 +432,51 @@ auto write(OutputIt out, const std::tm& time, const std::locale& loc, return write_encoded_tm_str(out, string_view(buf.data(), buf.size()), loc); } +template +struct is_same_arithmetic_type + : public std::integral_constant::value && + std::is_integral::value) || + (std::is_floating_point::value && + std::is_floating_point::value)> { +}; + +template < + typename To, typename FromRep, typename FromPeriod, + FMT_ENABLE_IF(is_same_arithmetic_type::value)> +auto fmt_duration_cast(std::chrono::duration from) -> To { +#if FMT_SAFE_DURATION_CAST + // Throwing version of safe_duration_cast is only available for + // integer to integer or float to float casts. + int ec; + To to = safe_duration_cast::safe_duration_cast(from, ec); + if (ec) FMT_THROW(format_error("cannot format duration")); + return to; +#else + // Standard duration cast, may overflow. + return std::chrono::duration_cast(from); +#endif +} + +template < + typename To, typename FromRep, typename FromPeriod, + FMT_ENABLE_IF(!is_same_arithmetic_type::value)> +auto fmt_duration_cast(std::chrono::duration from) -> To { + // Mixed integer <-> float cast is not supported by safe_duration_cast. + return std::chrono::duration_cast(from); +} + +template +auto to_time_t( + std::chrono::time_point time_point) + -> std::time_t { + // Cannot use std::chrono::system_clock::to_time_t since this would first + // require a cast to std::chrono::system_clock::time_point, which could + // overflow. + return fmt_duration_cast>( + time_point.time_since_epoch()) + .count(); +} } // namespace detail FMT_BEGIN_EXPORT @@ -441,29 +486,29 @@ FMT_BEGIN_EXPORT expressed in local time. Unlike ``std::localtime``, this function is thread-safe on most platforms. */ -inline std::tm localtime(std::time_t time) { +inline auto localtime(std::time_t time) -> std::tm { struct dispatcher { std::time_t time_; std::tm tm_; dispatcher(std::time_t t) : time_(t) {} - bool run() { + auto run() -> bool { using namespace fmt::detail; return handle(localtime_r(&time_, &tm_)); } - bool handle(std::tm* tm) { return tm != nullptr; } + auto handle(std::tm* tm) -> bool { return tm != nullptr; } - bool handle(detail::null<>) { + auto handle(detail::null<>) -> bool { using namespace fmt::detail; return fallback(localtime_s(&tm_, &time_)); } - bool fallback(int res) { return res == 0; } + auto fallback(int res) -> bool { return res == 0; } #if !FMT_MSC_VERSION - bool fallback(detail::null<>) { + auto fallback(detail::null<>) -> bool { using namespace fmt::detail; std::tm* tm = std::localtime(&time_); if (tm) tm_ = *tm; @@ -480,8 +525,8 @@ inline std::tm localtime(std::time_t time) { #if FMT_USE_LOCAL_TIME template inline auto localtime(std::chrono::local_time time) -> std::tm { - return localtime(std::chrono::system_clock::to_time_t( - std::chrono::current_zone()->to_sys(time))); + return localtime( + detail::to_time_t(std::chrono::current_zone()->to_sys(time))); } #endif @@ -490,29 +535,29 @@ inline auto localtime(std::chrono::local_time time) -> std::tm { expressed in Coordinated Universal Time (UTC). Unlike ``std::gmtime``, this function is thread-safe on most platforms. */ -inline std::tm gmtime(std::time_t time) { +inline auto gmtime(std::time_t time) -> std::tm { struct dispatcher { std::time_t time_; std::tm tm_; dispatcher(std::time_t t) : time_(t) {} - bool run() { + auto run() -> bool { using namespace fmt::detail; return handle(gmtime_r(&time_, &tm_)); } - bool handle(std::tm* tm) { return tm != nullptr; } + auto handle(std::tm* tm) -> bool { return tm != nullptr; } - bool handle(detail::null<>) { + auto handle(detail::null<>) -> bool { using namespace fmt::detail; return fallback(gmtime_s(&tm_, &time_)); } - bool fallback(int res) { return res == 0; } + auto fallback(int res) -> bool { return res == 0; } #if !FMT_MSC_VERSION - bool fallback(detail::null<>) { + auto fallback(detail::null<>) -> bool { std::tm* tm = std::gmtime(&time_); if (tm) tm_ = *tm; return tm != nullptr; @@ -525,9 +570,11 @@ inline std::tm gmtime(std::time_t time) { return gt.tm_; } -inline std::tm gmtime( - std::chrono::time_point time_point) { - return gmtime(std::chrono::system_clock::to_time_t(time_point)); +template +inline auto gmtime( + std::chrono::time_point time_point) + -> std::tm { + return gmtime(detail::to_time_t(time_point)); } namespace detail { @@ -566,7 +613,8 @@ inline void write_digit2_separated(char* buf, unsigned a, unsigned b, } } -template FMT_CONSTEXPR inline const char* get_units() { +template +FMT_CONSTEXPR inline auto get_units() -> const char* { if (std::is_same::value) return "as"; if (std::is_same::value) return "fs"; if (std::is_same::value) return "ps"; @@ -584,8 +632,9 @@ template FMT_CONSTEXPR inline const char* get_units() { if (std::is_same::value) return "Ts"; if (std::is_same::value) return "Ps"; if (std::is_same::value) return "Es"; - if (std::is_same>::value) return "m"; + if (std::is_same>::value) return "min"; if (std::is_same>::value) return "h"; + if (std::is_same>::value) return "d"; return nullptr; } @@ -621,9 +670,8 @@ auto write_padding(OutputIt out, pad_type pad) -> OutputIt { // 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) { +FMT_CONSTEXPR auto parse_chrono_format(const Char* begin, const Char* end, + Handler&& handler) -> const Char* { if (begin == end || *begin == '}') return begin; if (*begin != '%') FMT_THROW(format_error("invalid format")); auto ptr = begin; @@ -954,25 +1002,25 @@ struct tm_format_checker : null_chrono_spec_handler { FMT_CONSTEXPR void on_tz_name() {} }; -inline const char* tm_wday_full_name(int wday) { +inline auto tm_wday_full_name(int wday) -> const char* { static constexpr const char* full_name_list[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; return wday >= 0 && wday <= 6 ? full_name_list[wday] : "?"; } -inline const char* tm_wday_short_name(int wday) { +inline auto tm_wday_short_name(int wday) -> const char* { static constexpr const char* short_name_list[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; return wday >= 0 && wday <= 6 ? short_name_list[wday] : "???"; } -inline const char* tm_mon_full_name(int mon) { +inline auto tm_mon_full_name(int mon) -> const char* { static constexpr const char* full_name_list[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; return mon >= 0 && mon <= 11 ? full_name_list[mon] : "?"; } -inline const char* tm_mon_short_name(int mon) { +inline auto tm_mon_short_name(int mon) -> const char* { static constexpr const char* short_name_list[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", @@ -1004,21 +1052,21 @@ inline void tzset_once() { // 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(std::is_unsigned::value || - (value >= 0 && to_unsigned(value) <= to_unsigned(upper)), - "invalid value"); - (void)upper; +inline auto to_nonnegative_int(T value, Int upper) -> Int { + if (!std::is_unsigned::value && + (value < 0 || to_unsigned(value) > to_unsigned(upper))) { + FMT_THROW(fmt::format_error("chrono value is out of range")); + } return static_cast(value); } template ::value)> -inline Int to_nonnegative_int(T value, Int upper) { +inline auto to_nonnegative_int(T value, Int upper) -> Int { if (value < 0 || value > static_cast(upper)) FMT_THROW(format_error("invalid value")); return static_cast(value); } -constexpr long long pow10(std::uint32_t n) { +constexpr auto pow10(std::uint32_t n) -> long long { return n == 0 ? 1 : 10 * pow10(n - 1); } @@ -1052,13 +1100,12 @@ void write_fractional_seconds(OutputIt& out, Duration d, int precision = -1) { std::chrono::seconds::rep>::type, std::ratio<1, detail::pow10(num_fractional_digits)>>; - const auto fractional = - d - std::chrono::duration_cast(d); + const auto fractional = d - fmt_duration_cast(d); const auto subseconds = std::chrono::treat_as_floating_point< typename subsecond_precision::rep>::value ? fractional.count() - : std::chrono::duration_cast(fractional).count(); + : fmt_duration_cast(fractional).count(); auto n = static_cast>(subseconds); const int num_digits = detail::count_digits(n); @@ -1109,11 +1156,11 @@ void write_floating_seconds(memory_buffer& buf, Duration duration, num_fractional_digits = 6; } - format_to(std::back_inserter(buf), FMT_STRING("{:.{}f}"), - std::fmod(val * static_cast(Duration::period::num) / - static_cast(Duration::period::den), - static_cast(60)), - num_fractional_digits); + fmt::format_to(std::back_inserter(buf), FMT_STRING("{:.{}f}"), + std::fmod(val * static_cast(Duration::period::num) / + static_cast(Duration::period::den), + static_cast(60)), + num_fractional_digits); } template (l); } - // Algorithm: - // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_the_week_number_from_a_month_and_day_of_the_month_or_ordinal_date + // Algorithm: https://en.wikipedia.org/wiki/ISO_week_date. auto iso_year_weeks(long long curr_year) const noexcept -> int { const auto prev_year = curr_year - 1; const auto curr_p = @@ -1315,7 +1361,7 @@ class tm_writer { subsecs_(subsecs), tm_(tm) {} - OutputIt out() const { return out_; } + auto out() const -> OutputIt { return out_; } FMT_CONSTEXPR void on_text(const Char* begin, const Char* end) { out_ = copy_str(begin, end, out_); @@ -1579,6 +1625,7 @@ struct chrono_format_checker : null_chrono_spec_handler { template FMT_CONSTEXPR void on_text(const Char*, const Char*) {} + FMT_CONSTEXPR void on_day_of_year() {} FMT_CONSTEXPR void on_24_hour(numeric_system, pad_type) {} FMT_CONSTEXPR void on_12_hour(numeric_system, pad_type) {} FMT_CONSTEXPR void on_minute(numeric_system, pad_type) {} @@ -1597,16 +1644,16 @@ struct chrono_format_checker : null_chrono_spec_handler { template ::value&& has_isfinite::value)> -inline bool isfinite(T) { +inline auto isfinite(T) -> bool { return true; } template ::value)> -inline T mod(T x, int y) { +inline auto mod(T x, int y) -> T { return x % static_cast(y); } template ::value)> -inline T mod(T x, int y) { +inline auto mod(T x, int y) -> T { return std::fmod(x, static_cast(y)); } @@ -1621,49 +1668,38 @@ 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) { +inline auto get_milliseconds(std::chrono::duration d) + -> std::chrono::duration { // 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_common = fmt_duration_cast(d); const auto d_as_whole_seconds = - fmt_safe_duration_cast(d_as_common); + fmt_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); + fmt_duration_cast>(diff); return ms; #else - auto s = std::chrono::duration_cast(d); - return std::chrono::duration_cast(d - s); + auto s = fmt_duration_cast(d); + return fmt_duration_cast(d - s); #endif } template ::value)> -OutputIt format_duration_value(OutputIt out, Rep val, int) { +auto format_duration_value(OutputIt out, Rep val, int) -> OutputIt { return write(out, val); } template ::value)> -OutputIt format_duration_value(OutputIt out, Rep val, int precision) { +auto format_duration_value(OutputIt out, Rep val, int precision) -> OutputIt { auto specs = format_specs(); specs.precision = precision; specs.type = precision >= 0 ? presentation_type::fixed_lower @@ -1672,12 +1708,12 @@ OutputIt format_duration_value(OutputIt out, Rep val, int precision) { } template -OutputIt copy_unit(string_view unit, OutputIt out, Char) { +auto copy_unit(string_view unit, OutputIt out, Char) -> OutputIt { return std::copy(unit.begin(), unit.end(), out); } template -OutputIt copy_unit(string_view unit, OutputIt out, wchar_t) { +auto copy_unit(string_view unit, OutputIt out, wchar_t) -> OutputIt { // This works when wchar_t is UTF-32 because units only contain characters // that have the same representation in UTF-16 and UTF-32. utf8_to_utf16 u(unit); @@ -1685,7 +1721,7 @@ OutputIt copy_unit(string_view unit, OutputIt out, wchar_t) { } template -OutputIt format_duration_unit(OutputIt out) { +auto format_duration_unit(OutputIt out) -> OutputIt { if (const char* unit = get_units()) return copy_unit(string_view(unit), out, Char()); *out++ = '['; @@ -1752,18 +1788,12 @@ struct chrono_formatter { // 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 + s = fmt_duration_cast(std::chrono::duration(val)); } // returns true if nan or inf, writes to out. - bool handle_nan_inf() { + auto handle_nan_inf() -> bool { if (isfinite(val)) { return false; } @@ -1780,17 +1810,22 @@ struct chrono_formatter { return true; } - Rep hour() const { return static_cast(mod((s.count() / 3600), 24)); } + auto days() const -> Rep { return static_cast(s.count() / 86400); } + auto hour() const -> Rep { + return static_cast(mod((s.count() / 3600), 24)); + } - Rep hour12() const { + auto hour12() const -> Rep { 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)); } + auto minute() const -> Rep { + return static_cast(mod((s.count() / 60), 60)); + } + auto second() const -> Rep { return static_cast(mod(s.count(), 60)); } - std::tm time() const { + auto time() const -> std::tm { auto time = std::tm(); time.tm_hour = to_nonnegative_int(hour(), 24); time.tm_min = to_nonnegative_int(minute(), 60); @@ -1858,10 +1893,14 @@ struct chrono_formatter { void on_dec0_week_of_year(numeric_system) {} void on_dec1_week_of_year(numeric_system) {} void on_iso_week_of_year(numeric_system) {} - void on_day_of_year() {} void on_day_of_month(numeric_system) {} void on_day_of_month_space(numeric_system) {} + void on_day_of_year() { + if (handle_nan_inf()) return; + write(days(), 0); + } + void on_24_hour(numeric_system ns, pad_type pad) { if (handle_nan_inf()) return; @@ -1968,7 +2007,7 @@ class weekday { weekday() = default; explicit constexpr weekday(unsigned wd) noexcept : value(static_cast(wd != 7 ? wd : 0)) {} - constexpr unsigned c_encoding() const noexcept { return value; } + constexpr auto c_encoding() const noexcept -> unsigned { return value; } }; class year_month_day {}; @@ -2083,25 +2122,22 @@ struct formatter, period::num != 1 || period::den != 1 || std::is_floating_point::value)) { const auto epoch = val.time_since_epoch(); - auto subsecs = std::chrono::duration_cast( - epoch - std::chrono::duration_cast(epoch)); + auto subsecs = detail::fmt_duration_cast( + epoch - detail::fmt_duration_cast(epoch)); if (subsecs.count() < 0) { auto second = - std::chrono::duration_cast(std::chrono::seconds(1)); + detail::fmt_duration_cast(std::chrono::seconds(1)); if (epoch.count() < ((Duration::min)() + second).count()) FMT_THROW(format_error("duration is too small")); subsecs += second; val -= second; } - return formatter::do_format( - gmtime(std::chrono::time_point_cast(val)), ctx, - &subsecs); + return formatter::do_format(gmtime(val), ctx, &subsecs); } - return formatter::format( - gmtime(std::chrono::time_point_cast(val)), ctx); + return formatter::format(gmtime(val), ctx); } }; @@ -2120,17 +2156,13 @@ struct formatter, Char> if (period::num != 1 || period::den != 1 || std::is_floating_point::value) { const auto epoch = val.time_since_epoch(); - const auto subsecs = std::chrono::duration_cast( - epoch - std::chrono::duration_cast(epoch)); + const auto subsecs = detail::fmt_duration_cast( + epoch - detail::fmt_duration_cast(epoch)); - return formatter::do_format( - localtime(std::chrono::time_point_cast(val)), - ctx, &subsecs); + return formatter::do_format(localtime(val), ctx, &subsecs); } - return formatter::format( - localtime(std::chrono::time_point_cast(val)), - ctx); + return formatter::format(localtime(val), ctx); } }; #endif diff --git a/src/fmt/color.h b/src/fmt/color.h index 8697e1ca0ba..464519e5820 100644 --- a/src/fmt/color.h +++ b/src/fmt/color.h @@ -233,7 +233,7 @@ class text_style { FMT_CONSTEXPR text_style(emphasis em = emphasis()) noexcept : set_foreground_color(), set_background_color(), ems(em) {} - FMT_CONSTEXPR text_style& operator|=(const text_style& rhs) { + FMT_CONSTEXPR auto operator|=(const text_style& rhs) -> text_style& { if (!set_foreground_color) { set_foreground_color = rhs.set_foreground_color; foreground_color = rhs.foreground_color; @@ -257,29 +257,29 @@ class text_style { return *this; } - friend FMT_CONSTEXPR text_style operator|(text_style lhs, - const text_style& rhs) { + friend FMT_CONSTEXPR auto operator|(text_style lhs, const text_style& rhs) + -> text_style { return lhs |= rhs; } - FMT_CONSTEXPR bool has_foreground() const noexcept { + FMT_CONSTEXPR auto has_foreground() const noexcept -> bool { return set_foreground_color; } - FMT_CONSTEXPR bool has_background() const noexcept { + FMT_CONSTEXPR auto has_background() const noexcept -> bool { return set_background_color; } - FMT_CONSTEXPR bool has_emphasis() const noexcept { + FMT_CONSTEXPR auto has_emphasis() const noexcept -> bool { return static_cast(ems) != 0; } - FMT_CONSTEXPR detail::color_type get_foreground() const noexcept { + FMT_CONSTEXPR auto get_foreground() const noexcept -> detail::color_type { FMT_ASSERT(has_foreground(), "no foreground specified for this style"); return foreground_color; } - FMT_CONSTEXPR detail::color_type get_background() const noexcept { + FMT_CONSTEXPR auto get_background() const noexcept -> detail::color_type { FMT_ASSERT(has_background(), "no background specified for this style"); return background_color; } - FMT_CONSTEXPR emphasis get_emphasis() const noexcept { + FMT_CONSTEXPR auto get_emphasis() const noexcept -> emphasis { FMT_ASSERT(has_emphasis(), "no emphasis specified for this style"); return ems; } @@ -297,9 +297,11 @@ class text_style { } } - friend FMT_CONSTEXPR text_style fg(detail::color_type foreground) noexcept; + friend FMT_CONSTEXPR auto fg(detail::color_type foreground) noexcept + -> text_style; - friend FMT_CONSTEXPR text_style bg(detail::color_type background) noexcept; + friend FMT_CONSTEXPR auto bg(detail::color_type background) noexcept + -> text_style; detail::color_type foreground_color; detail::color_type background_color; @@ -309,16 +311,19 @@ class text_style { }; /** Creates a text style from the foreground (text) color. */ -FMT_CONSTEXPR inline text_style fg(detail::color_type foreground) noexcept { +FMT_CONSTEXPR inline auto fg(detail::color_type foreground) noexcept + -> text_style { return text_style(true, foreground); } /** Creates a text style from the background color. */ -FMT_CONSTEXPR inline text_style bg(detail::color_type background) noexcept { +FMT_CONSTEXPR inline auto bg(detail::color_type background) noexcept + -> text_style { return text_style(false, background); } -FMT_CONSTEXPR inline text_style operator|(emphasis lhs, emphasis rhs) noexcept { +FMT_CONSTEXPR inline auto operator|(emphasis lhs, emphasis rhs) noexcept + -> text_style { return text_style(lhs) | rhs; } @@ -384,8 +389,8 @@ template struct ansi_color_escape { } FMT_CONSTEXPR operator const Char*() const noexcept { return buffer; } - FMT_CONSTEXPR const Char* begin() const noexcept { return buffer; } - FMT_CONSTEXPR_CHAR_TRAITS const Char* end() const noexcept { + FMT_CONSTEXPR auto begin() const noexcept -> const Char* { return buffer; } + FMT_CONSTEXPR20 auto end() const noexcept -> const Char* { return buffer + std::char_traits::length(buffer); } @@ -400,25 +405,27 @@ template struct ansi_color_escape { out[2] = static_cast('0' + c % 10); out[3] = static_cast(delimiter); } - static FMT_CONSTEXPR bool has_emphasis(emphasis em, emphasis mask) noexcept { + static FMT_CONSTEXPR auto has_emphasis(emphasis em, emphasis mask) noexcept + -> bool { return static_cast(em) & static_cast(mask); } }; template -FMT_CONSTEXPR ansi_color_escape make_foreground_color( - detail::color_type foreground) noexcept { +FMT_CONSTEXPR auto make_foreground_color(detail::color_type foreground) noexcept + -> ansi_color_escape { return ansi_color_escape(foreground, "\x1b[38;2;"); } template -FMT_CONSTEXPR ansi_color_escape make_background_color( - detail::color_type background) noexcept { +FMT_CONSTEXPR auto make_background_color(detail::color_type background) noexcept + -> ansi_color_escape { return ansi_color_escape(background, "\x1b[48;2;"); } template -FMT_CONSTEXPR ansi_color_escape make_emphasis(emphasis em) noexcept { +FMT_CONSTEXPR auto make_emphasis(emphasis em) noexcept + -> ansi_color_escape { return ansi_color_escape(em); } @@ -427,9 +434,10 @@ template inline void reset_color(buffer& buffer) { buffer.append(reset_color.begin(), reset_color.end()); } -template struct styled_arg { +template struct styled_arg : detail::view { const T& value; text_style style; + styled_arg(const T& v, text_style s) : value(v), style(s) {} }; template @@ -510,9 +518,10 @@ void print(const text_style& ts, const S& format_str, const Args&... args) { } template > -inline std::basic_string vformat( +inline auto vformat( const text_style& ts, const S& format_str, - basic_format_args>> args) { + basic_format_args>> args) + -> std::basic_string { basic_memory_buffer buf; detail::vformat_to(buf, ts, detail::to_string_view(format_str), args); return fmt::to_string(buf); @@ -531,8 +540,8 @@ inline std::basic_string vformat( \endrst */ template > -inline std::basic_string format(const text_style& ts, const S& format_str, - const Args&... args) { +inline auto format(const text_style& ts, const S& format_str, + const Args&... args) -> std::basic_string { return fmt::vformat(ts, detail::to_string_view(format_str), fmt::make_format_args>(args...)); } @@ -542,9 +551,10 @@ inline std::basic_string format(const text_style& ts, const S& format_str, */ template ::value)> -OutputIt vformat_to( - OutputIt out, const text_style& ts, basic_string_view format_str, - basic_format_args>> args) { +auto vformat_to(OutputIt out, const text_style& ts, + basic_string_view format_str, + basic_format_args>> args) + -> OutputIt { auto&& buf = detail::get_buffer(out); detail::vformat_to(buf, ts, format_str, args); return detail::get_iterator(buf, out); @@ -562,9 +572,10 @@ OutputIt vformat_to( fmt::emphasis::bold | fg(fmt::color::red), "{}", 42); \endrst */ -template >::value&& - detail::is_string::value> +template < + typename OutputIt, typename S, typename... Args, + bool enable = detail::is_output_iterator>::value && + detail::is_string::value> inline auto format_to(OutputIt out, const text_style& ts, const S& format_str, Args&&... args) -> typename std::enable_if::type { diff --git a/src/fmt/compile.h b/src/fmt/compile.h index af76507f07f..71fa69c67ec 100644 --- a/src/fmt/compile.h +++ b/src/fmt/compile.h @@ -14,8 +14,8 @@ FMT_BEGIN_NAMESPACE namespace detail { template -FMT_CONSTEXPR inline counting_iterator copy_str(InputIt begin, InputIt end, - counting_iterator it) { +FMT_CONSTEXPR inline auto copy_str(InputIt begin, InputIt end, + counting_iterator it) -> counting_iterator { return it + (end - begin); } @@ -57,7 +57,7 @@ struct udl_compiled_string : compiled_string { #endif template -const T& first(const T& value, const Tail&...) { +auto first(const T& value, const Tail&...) -> const T& { return value; } @@ -489,18 +489,19 @@ FMT_CONSTEXPR OutputIt format_to(OutputIt out, const S&, Args&&... args) { template ::value)> -format_to_n_result format_to_n(OutputIt out, size_t n, - const S& format_str, Args&&... args) { +auto format_to_n(OutputIt out, size_t n, const S& format_str, Args&&... args) + -> format_to_n_result { using traits = detail::fixed_buffer_traits; auto buf = detail::iterator_buffer(out, n); - format_to(std::back_inserter(buf), format_str, std::forward(args)...); + fmt::format_to(std::back_inserter(buf), format_str, + std::forward(args)...); return {buf.out(), buf.count()}; } template ::value)> -FMT_CONSTEXPR20 size_t formatted_size(const S& format_str, - const Args&... args) { +FMT_CONSTEXPR20 auto formatted_size(const S& format_str, const Args&... args) + -> size_t { return fmt::format_to(detail::counting_iterator(), format_str, args...) .count(); } diff --git a/src/fmt/core.h b/src/fmt/core.h index 9f7de781bb2..6a53b8c52c0 100644 --- a/src/fmt/core.h +++ b/src/fmt/core.h @@ -8,17 +8,15 @@ #ifndef FMT_CORE_H_ #define FMT_CORE_H_ -#include // std::byte -#include // std::FILE -#include // std::strlen -#include -#include -#include // std::addressof -#include -#include +#include // std::byte +#include // std::FILE +#include // std::strlen +#include // CHAR_BIT +#include // std::string +#include // std::enable_if // The fmt library version in the form major * 10000 + minor * 100 + patch. -#define FMT_VERSION 100100 +#define FMT_VERSION 100200 #if defined(__clang__) && !defined(__ibmxl__) # define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__) @@ -58,6 +56,12 @@ # define FMT_MSC_WARNING(...) #endif +#ifdef _GLIBCXX_RELEASE +# define FMT_GLIBCXX_RELEASE _GLIBCXX_RELEASE +#else +# define FMT_GLIBCXX_RELEASE 0 +#endif + #ifdef _MSVC_LANG # define FMT_CPLUSPLUS _MSVC_LANG #else @@ -88,6 +92,20 @@ #define FMT_HAS_CPP17_ATTRIBUTE(attribute) \ (FMT_CPLUSPLUS >= 201703L && FMT_HAS_CPP_ATTRIBUTE(attribute)) +#ifndef FMT_DEPRECATED +# if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VERSION >= 1900 +# define FMT_DEPRECATED [[deprecated]] +# else +# if (defined(__GNUC__) && !defined(__LCC__)) || defined(__clang__) +# define FMT_DEPRECATED __attribute__((deprecated)) +# elif FMT_MSC_VERSION +# define FMT_DEPRECATED __declspec(deprecated) +# else +# define FMT_DEPRECATED /* deprecated */ +# endif +# endif +#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 @@ -105,30 +123,17 @@ # define FMT_CONSTEXPR #endif -#if ((FMT_CPLUSPLUS >= 202002L) && \ - (!defined(_GLIBCXX_RELEASE) || _GLIBCXX_RELEASE > 9)) || \ - (FMT_CPLUSPLUS >= 201709L && FMT_GCC_VERSION >= 1002) +#if (FMT_CPLUSPLUS >= 202002L || \ + (FMT_CPLUSPLUS >= 201709L && FMT_GCC_VERSION >= 1002)) && \ + ((!FMT_GLIBCXX_RELEASE || FMT_GLIBCXX_RELEASE >= 10) && \ + (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION >= 10000) && \ + (!FMT_MSC_VERSION || FMT_MSC_VERSION >= 1928)) && \ + defined(__cpp_lib_is_constant_evaluated) # define FMT_CONSTEXPR20 constexpr #else # define FMT_CONSTEXPR20 #endif -// Check if constexpr std::char_traits<>::{compare,length} are supported. -#if defined(__GLIBCXX__) -# if FMT_CPLUSPLUS >= 201703L && defined(_GLIBCXX_RELEASE) && \ - _GLIBCXX_RELEASE >= 7 // GCC 7+ libstdc++ has _GLIBCXX_RELEASE. -# define FMT_CONSTEXPR_CHAR_TRAITS constexpr -# endif -#elif defined(_LIBCPP_VERSION) && FMT_CPLUSPLUS >= 201703L && \ - _LIBCPP_VERSION >= 4000 -# define FMT_CONSTEXPR_CHAR_TRAITS constexpr -#elif FMT_MSC_VERSION >= 1914 && FMT_CPLUSPLUS >= 201703L -# define FMT_CONSTEXPR_CHAR_TRAITS constexpr -#endif -#ifndef FMT_CONSTEXPR_CHAR_TRAITS -# define FMT_CONSTEXPR_CHAR_TRAITS -#endif - // Check if exceptions are disabled. #ifndef FMT_EXCEPTIONS # if (defined(__GNUC__) && !defined(__EXCEPTIONS)) || \ @@ -191,33 +196,25 @@ # define FMT_END_EXPORT #endif +#if FMT_GCC_VERSION || FMT_CLANG_VERSION +# define FMT_VISIBILITY(value) __attribute__((visibility(value))) +#else +# define FMT_VISIBILITY(value) +#endif + #if !defined(FMT_HEADER_ONLY) && defined(_WIN32) -# ifdef FMT_LIB_EXPORT +# if defined(FMT_LIB_EXPORT) # define FMT_API __declspec(dllexport) # elif defined(FMT_SHARED) # define FMT_API __declspec(dllimport) # endif -#else -# if defined(FMT_LIB_EXPORT) || defined(FMT_SHARED) -# if defined(__GNUC__) || defined(__clang__) -# define FMT_API __attribute__((visibility("default"))) -# endif -# endif +#elif defined(FMT_LIB_EXPORT) || defined(FMT_SHARED) +# define FMT_API FMT_VISIBILITY("default") #endif #ifndef FMT_API # define FMT_API #endif -// libc++ supports string_view in pre-c++17. -#if FMT_HAS_INCLUDE() && \ - (FMT_CPLUSPLUS >= 201703L || defined(_LIBCPP_VERSION)) -# include -# define FMT_USE_STRING_VIEW -#elif FMT_HAS_INCLUDE("experimental/string_view") && FMT_CPLUSPLUS >= 201402L -# include -# define FMT_USE_EXPERIMENTAL_STRING_VIEW -#endif - #ifndef FMT_UNICODE # define FMT_UNICODE !FMT_MSC_VERSION #endif @@ -228,8 +225,9 @@ __apple_build_version__ >= 14000029L) && \ FMT_CPLUSPLUS >= 202002L) || \ (defined(__cpp_consteval) && \ - (!FMT_MSC_VERSION || _MSC_FULL_VER >= 193030704)) -// consteval is broken in MSVC before VS2022 and Apple clang before 14. + (!FMT_MSC_VERSION || FMT_MSC_VERSION >= 1929)) +// consteval is broken in MSVC before VS2019 version 16.10 and Apple clang +// before 14. # define FMT_CONSTEVAL consteval # define FMT_HAS_CONSTEVAL # else @@ -248,6 +246,15 @@ # endif #endif +// GCC < 5 requires this-> in decltype. +#ifndef FMT_DECLTYPE_THIS +# if FMT_GCC_VERSION && FMT_GCC_VERSION < 500 +# define FMT_DECLTYPE_THIS this-> +# else +# define FMT_DECLTYPE_THIS +# endif +#endif + // Enable minimal optimizations for more compact code in debug mode. FMT_GCC_PRAGMA("GCC push_options") #if !defined(__OPTIMIZE__) && !defined(__NVCOMPILER) && !defined(__LCC__) && \ @@ -269,20 +276,57 @@ 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 struct type_identity { + using type = T; +}; template using type_identity_t = typename type_identity::type; template using underlying_t = typename std::underlying_type::type; -// Checks whether T is a container with contiguous storage. -template struct is_contiguous : std::false_type {}; -template -struct is_contiguous> : std::true_type {}; +#if FMT_GCC_VERSION && FMT_GCC_VERSION < 500 +// A workaround for gcc 4.8 to make void_t work in a SFINAE context. +template struct void_t_impl { + using type = void; +}; +template using void_t = typename void_t_impl::type; +#else +template using void_t = void; +#endif struct monostate { constexpr monostate() {} }; +// An implementation of back_insert_iterator to avoid dependency on . +template class back_insert_iterator { + private: + Container* container_; + + friend auto get_container(back_insert_iterator it) -> Container& { + return *it.container_; + } + + public: + using difference_type = ptrdiff_t; + FMT_UNCHECKED_ITERATOR(back_insert_iterator); + + explicit back_insert_iterator(Container& c) : container_(&c) {} + + auto operator=(const typename Container::value_type& value) + -> back_insert_iterator& { + container_->push_back(value); + return *this; + } + auto operator*() -> back_insert_iterator& { return *this; } + auto operator++() -> back_insert_iterator& { return *this; } + auto operator++(int) -> back_insert_iterator { return *this; } +}; + +template +auto back_inserter(Container& c) -> back_insert_iterator { + return {c}; +} + // 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). @@ -310,10 +354,9 @@ template FMT_CONSTEXPR void ignore_unused(const T&...) {} constexpr FMT_INLINE auto is_constant_evaluated( bool default_value = false) noexcept -> bool { // Workaround for incompatibility between libstdc++ consteval-based -// std::is_constant_evaluated() implementation and clang-14. -// https://github.com/fmtlib/fmt/issues/3247 -#if FMT_CPLUSPLUS >= 202002L && defined(_GLIBCXX_RELEASE) && \ - _GLIBCXX_RELEASE >= 12 && \ +// std::is_constant_evaluated() implementation and clang-14: +// https://github.com/fmtlib/fmt/issues/3247. +#if FMT_CPLUSPLUS >= 202002L && FMT_GLIBCXX_RELEASE >= 12 && \ (FMT_CLANG_VERSION >= 1400 && FMT_CLANG_VERSION < 1500) ignore_unused(default_value); return __builtin_is_constant_evaluated(); @@ -346,15 +389,6 @@ FMT_NORETURN FMT_API void assert_fail(const char* file, int line, # 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__) && !defined(__NVCC__) && \ @@ -386,6 +420,15 @@ FMT_CONSTEXPR auto to_unsigned(Int value) -> return static_cast::type>(value); } +template +struct is_string_like : std::false_type {}; + +// A heuristic to detect std::string and std::string_view. +template +struct is_string_like().find_first_of( + typename T::value_type(), 0))>> : std::true_type { +}; + FMT_CONSTEXPR inline auto is_utf8() -> bool { FMT_MSC_WARNING(suppress : 4566) constexpr unsigned char section[] = "\u00A7"; @@ -394,8 +437,33 @@ FMT_CONSTEXPR inline auto is_utf8() -> bool { return FMT_UNICODE || (sizeof(section) == 3 && uchar(section[0]) == 0xC2 && uchar(section[1]) == 0xA7); } + +template FMT_CONSTEXPR auto length(const Char* s) -> size_t { + size_t len = 0; + while (*s++) ++len; + return len; +} + +template +FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n) + -> int { + for (; n != 0; ++s1, ++s2, --n) { + if (*s1 < *s2) return -1; + if (*s1 > *s2) return 1; + } + return 0; +} } // namespace detail +template +using basic_string = + std::basic_string, std::allocator>; + +// Checks whether T is a container with contiguous storage. +template struct is_contiguous : std::false_type {}; +template +struct is_contiguous> : std::true_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 @@ -420,29 +488,25 @@ template class basic_string_view { : data_(s), size_(count) {} /** - \rst - Constructs a string reference object from a C string computing - the size with ``std::char_traits::length``. - \endrst + Constructs a string reference object from a C string. */ - FMT_CONSTEXPR_CHAR_TRAITS + FMT_CONSTEXPR20 FMT_INLINE basic_string_view(const Char* s) : data_(s), size_(detail::const_check(std::is_same::value && - !detail::is_constant_evaluated(true)) + !detail::is_constant_evaluated(false)) ? std::strlen(reinterpret_cast(s)) - : 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) noexcept - : data_(s.data()), size_(s.size()) {} + : detail::length(s)) {} - template >::value)> - FMT_CONSTEXPR basic_string_view(S s) noexcept + /** + Constructs a string reference from a ``std::basic_string`` or a + ``std::basic_string_view`` object. + */ + template ::value&& std::is_same< + typename S::value_type, Char>::value)> + FMT_CONSTEXPR basic_string_view(const S& s) noexcept : data_(s.data()), size_(s.size()) {} /** Returns a pointer to the string data. */ @@ -463,30 +527,28 @@ template class basic_string_view { size_ -= n; } - FMT_CONSTEXPR_CHAR_TRAITS bool starts_with( - basic_string_view sv) const noexcept { - return size_ >= sv.size_ && - std::char_traits::compare(data_, sv.data_, sv.size_) == 0; + FMT_CONSTEXPR auto starts_with(basic_string_view sv) const noexcept + -> bool { + return size_ >= sv.size_ && detail::compare(data_, sv.data_, sv.size_) == 0; } - FMT_CONSTEXPR_CHAR_TRAITS bool starts_with(Char c) const noexcept { - return size_ >= 1 && std::char_traits::eq(*data_, c); + FMT_CONSTEXPR auto starts_with(Char c) const noexcept -> bool { + return size_ >= 1 && *data_ == c; } - FMT_CONSTEXPR_CHAR_TRAITS bool starts_with(const Char* s) const { + FMT_CONSTEXPR auto starts_with(const Char* s) const -> bool { return starts_with(basic_string_view(s)); } // Lexicographically compare this string reference to other. - FMT_CONSTEXPR_CHAR_TRAITS auto compare(basic_string_view other) const -> int { + FMT_CONSTEXPR auto compare(basic_string_view other) const -> int { size_t str_size = size_ < other.size_ ? size_ : other.size_; - int result = std::char_traits::compare(data_, other.data_, str_size); + int result = detail::compare(data_, other.data_, str_size); if (result == 0) result = size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1); return result; } - FMT_CONSTEXPR_CHAR_TRAITS friend auto operator==(basic_string_view lhs, - basic_string_view rhs) - -> bool { + FMT_CONSTEXPR friend auto operator==(basic_string_view lhs, + basic_string_view rhs) -> bool { return lhs.compare(rhs) == 0; } friend auto operator!=(basic_string_view lhs, basic_string_view rhs) -> bool { @@ -526,21 +588,16 @@ template ::value)> FMT_INLINE auto to_string_view(const Char* s) -> basic_string_view { return s; } -template -inline auto to_string_view(const std::basic_string& s) - -> basic_string_view { - return s; +template ::value)> +inline auto to_string_view(const S& s) + -> basic_string_view { + return s; // std::basic_string[_view] } template constexpr auto to_string_view(basic_string_view s) -> basic_string_view { return s; } -template >::value)> -inline auto to_string_view(std_string_view s) -> basic_string_view { - return s; -} template ::value)> constexpr auto to_string_view(const S& s) -> basic_string_view { @@ -609,10 +666,10 @@ FMT_TYPE_CONSTANT(const Char*, cstring_type); FMT_TYPE_CONSTANT(basic_string_view, string_type); FMT_TYPE_CONSTANT(const void*, pointer_type); -constexpr bool is_integral_type(type t) { +constexpr auto is_integral_type(type t) -> bool { return t > type::none_type && t <= type::last_integer_type; } -constexpr bool is_arithmetic_type(type t) { +constexpr auto is_arithmetic_type(type t) -> bool { return t > type::none_type && t <= type::last_numeric_type; } @@ -635,21 +692,10 @@ enum { cstring_set = set(type::cstring_type), pointer_set = set(type::pointer_type) }; - -FMT_NORETURN FMT_API void throw_format_error(const char* message); - -struct error_handler { - constexpr error_handler() = default; - - // This function is intentionally not constexpr to give a compile-time error. - FMT_NORETURN void on_error(const char* message) { - throw_format_error(message); - } -}; } // namespace detail /** Throws ``format_error`` with a given message. */ -using detail::throw_format_error; +FMT_NORETURN FMT_API void throw_format_error(const char* message); /** String's character type. */ template using char_t = typename detail::char_t_impl::type; @@ -701,7 +747,7 @@ template class basic_format_parse_context { */ FMT_CONSTEXPR auto next_arg_id() -> int { if (next_arg_id_ < 0) { - detail::throw_format_error( + throw_format_error( "cannot switch from manual to automatic argument indexing"); return 0; } @@ -716,7 +762,7 @@ template class basic_format_parse_context { */ FMT_CONSTEXPR void check_arg_id(int id) { if (next_arg_id_ > 0) { - detail::throw_format_error( + throw_format_error( "cannot switch from automatic to manual argument indexing"); return; } @@ -769,35 +815,6 @@ class compile_parse_context : public basic_format_parse_context { } }; -// Extracts a reference to the container from back_insert_iterator. -template -inline auto get_container(std::back_insert_iterator it) - -> Container& { - using base = std::back_insert_iterator; - struct accessor : base { - accessor(base b) : base(b) {} - using base::container; - }; - return *accessor(it).container; -} - -template -FMT_CONSTEXPR auto copy_str(InputIt begin, InputIt end, OutputIt out) - -> OutputIt { - while (begin != end) *out++ = static_cast(*begin++); - return out; -} - -template , U>::value&& is_char::value)> -FMT_CONSTEXPR auto copy_str(T* begin, T* end, U* out) -> U* { - if (is_constant_evaluated()) return copy_str(begin, end, out); - auto size = to_unsigned(end - begin); - if (size > 0) memcpy(out, begin, size * sizeof(U)); - return out + size; -} - /** \rst A contiguous memory buffer with an optional growing ability. It is an internal @@ -810,13 +827,18 @@ template class buffer { size_t size_; size_t capacity_; + using grow_fun = void (*)(buffer& buf, size_t capacity); + grow_fun grow_; + protected: // Don't initialize ptr_ since it is not accessed to save a few cycles. FMT_MSC_WARNING(suppress : 26495) - buffer(size_t sz) noexcept : size_(sz), capacity_(sz) {} + FMT_CONSTEXPR buffer(grow_fun grow, size_t sz) noexcept + : size_(sz), capacity_(sz), grow_(grow) {} - FMT_CONSTEXPR20 buffer(T* p = nullptr, size_t sz = 0, size_t cap = 0) noexcept - : ptr_(p), size_(sz), capacity_(cap) {} + FMT_CONSTEXPR20 buffer(grow_fun grow, T* p = nullptr, size_t sz = 0, + size_t cap = 0) noexcept + : ptr_(p), size_(sz), capacity_(cap), grow_(grow) {} FMT_CONSTEXPR20 ~buffer() = default; buffer(buffer&&) = default; @@ -827,9 +849,6 @@ template class buffer { capacity_ = buf_capacity; } - /** Increases the buffer capacity to hold at least *capacity* elements. */ - virtual FMT_CONSTEXPR20 void grow(size_t capacity) = 0; - public: using value_type = T; using const_reference = const T&; @@ -868,7 +887,7 @@ template class buffer { // for at least one additional element either by increasing the capacity or by // flushing the buffer if it is full. FMT_CONSTEXPR20 void try_reserve(size_t new_capacity) { - if (new_capacity > capacity_) grow(new_capacity); + if (new_capacity > capacity_) grow_(*this, new_capacity); } FMT_CONSTEXPR20 void push_back(const T& value) { @@ -917,22 +936,25 @@ class iterator_buffer final : public Traits, public buffer { enum { buffer_size = 256 }; T data_[buffer_size]; - protected: - FMT_CONSTEXPR20 void grow(size_t) override { - if (this->size() == buffer_size) flush(); + static FMT_CONSTEXPR20 void grow(buffer& buf, size_t) { + if (buf.size() == buffer_size) static_cast(buf).flush(); } void flush() { auto size = this->size(); this->clear(); - out_ = copy_str(data_, data_ + this->limit(size), out_); + const T* begin = data_; + const T* end = begin + this->limit(size); + while (begin != end) *out_++ = *begin++; } public: explicit iterator_buffer(OutputIt out, size_t n = buffer_size) - : Traits(n), buffer(data_, 0, buffer_size), out_(out) {} + : Traits(n), buffer(grow, data_, 0, buffer_size), out_(out) {} iterator_buffer(iterator_buffer&& other) - : Traits(other), buffer(data_, 0, buffer_size), out_(other.out_) {} + : Traits(other), + buffer(grow, data_, 0, buffer_size), + out_(other.out_) {} ~iterator_buffer() { flush(); } auto out() -> OutputIt { @@ -951,9 +973,9 @@ class iterator_buffer final enum { buffer_size = 256 }; T data_[buffer_size]; - protected: - FMT_CONSTEXPR20 void grow(size_t) override { - if (this->size() == this->capacity()) flush(); + static FMT_CONSTEXPR20 void grow(buffer& buf, size_t) { + if (buf.size() == buf.capacity()) + static_cast(buf).flush(); } void flush() { @@ -967,10 +989,10 @@ class iterator_buffer final public: explicit iterator_buffer(T* out, size_t n = buffer_size) - : fixed_buffer_traits(n), buffer(out, 0, n), out_(out) {} + : fixed_buffer_traits(n), buffer(grow, out, 0, n), out_(out) {} iterator_buffer(iterator_buffer&& other) : fixed_buffer_traits(other), - buffer(std::move(other)), + buffer(static_cast(other)), out_(other.out_) { if (this->data() != out_) { this->set(data_, buffer_size); @@ -989,38 +1011,37 @@ class iterator_buffer final }; template class iterator_buffer final : public buffer { - protected: - FMT_CONSTEXPR20 void grow(size_t) override {} - public: - explicit iterator_buffer(T* out, size_t = 0) : buffer(out, 0, ~size_t()) {} + explicit iterator_buffer(T* out, size_t = 0) + : buffer([](buffer&, size_t) {}, out, 0, ~size_t()) {} auto out() -> T* { return &*this->end(); } }; // A buffer that writes to a container with the contiguous storage. template -class iterator_buffer, +class iterator_buffer, enable_if_t::value, typename Container::value_type>> final : public buffer { private: + using value_type = typename Container::value_type; Container& container_; - protected: - FMT_CONSTEXPR20 void grow(size_t capacity) override { - container_.resize(capacity); - this->set(&container_[0], capacity); + static FMT_CONSTEXPR20 void grow(buffer& buf, size_t capacity) { + auto& self = static_cast(buf); + self.container_.resize(capacity); + self.set(&self.container_[0], capacity); } public: explicit iterator_buffer(Container& c) - : buffer(c.size()), container_(c) {} - explicit iterator_buffer(std::back_insert_iterator out, size_t = 0) + : buffer(grow, c.size()), container_(c) {} + explicit iterator_buffer(back_insert_iterator out, size_t = 0) : iterator_buffer(get_container(out)) {} - auto out() -> std::back_insert_iterator { - return std::back_inserter(container_); + auto out() -> back_insert_iterator { + return fmt::back_inserter(container_); } }; @@ -1031,15 +1052,14 @@ template class counting_buffer final : public buffer { T data_[buffer_size]; size_t count_ = 0; - protected: - FMT_CONSTEXPR20 void grow(size_t) override { - if (this->size() != buffer_size) return; - count_ += this->size(); - this->clear(); + static FMT_CONSTEXPR20 void grow(buffer& buf, size_t) { + if (buf.size() != buffer_size) return; + static_cast(buf).count_ += buf.size(); + buf.clear(); } public: - counting_buffer() : buffer(data_, 0, buffer_size) {} + counting_buffer() : buffer(grow, data_, 0, buffer_size) {} auto count() -> size_t { return count_ + this->size(); } }; @@ -1053,7 +1073,7 @@ FMT_CONSTEXPR void basic_format_parse_context::do_check_arg_id(int id) { (!FMT_GCC_VERSION || FMT_GCC_VERSION >= 1200)) { using context = detail::compile_parse_context; if (id >= static_cast(this)->num_args()) - detail::throw_format_error("argument not found"); + throw_format_error("argument not found"); } } @@ -1085,18 +1105,29 @@ template using has_formatter = std::is_constructible>; -// An output iterator that appends to a buffer. -// It is used to reduce symbol sizes for the common case. -class appender : public std::back_insert_iterator> { - using base = std::back_insert_iterator>; +// An output iterator that appends to a buffer. It is used instead of +// back_insert_iterator to reduce symbol sizes for the common case. +class appender { + private: + detail::buffer* buffer_; + + friend auto get_container(appender app) -> detail::buffer& { + return *app.buffer_; + } public: - using std::back_insert_iterator>::back_insert_iterator; - appender(base it) noexcept : base(it) {} + using difference_type = ptrdiff_t; FMT_UNCHECKED_ITERATOR(appender); - auto operator++() noexcept -> appender& { return *this; } - auto operator++(int) noexcept -> appender { return *this; } + appender(detail::buffer& buf) : buffer_(&buf) {} + + auto operator=(char c) -> appender& { + buffer_->push_back(c); + return *this; + } + auto operator*() -> appender& { return *this; } + auto operator++() -> appender& { return *this; } + auto operator++(int) -> appender { return *this; } }; namespace detail { @@ -1119,7 +1150,7 @@ constexpr auto has_const_formatter() -> bool { template using buffer_appender = conditional_t::value, appender, - std::back_insert_iterator>>; + back_insert_iterator>>; // Maps an output iterator to a buffer. template @@ -1128,7 +1159,7 @@ auto get_buffer(OutputIt out) -> iterator_buffer { } template , Buf>::value)> -auto get_buffer(std::back_insert_iterator out) -> buffer& { +auto get_buffer(back_insert_iterator out) -> buffer& { return get_container(out); } @@ -1293,7 +1324,13 @@ template class value { template FMT_CONSTEXPR20 FMT_INLINE value(T& val) { using value_type = remove_const_t; - custom.value = const_cast(std::addressof(val)); + // T may overload operator& e.g. std::vector::reference in libc++. +#ifdef __cpp_if_constexpr + if constexpr (std::is_same::value) + custom.value = const_cast(&val); +#endif + if (!is_constant_evaluated()) + custom.value = const_cast(&reinterpret_cast(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`. @@ -1314,6 +1351,7 @@ template class value { parse_ctx.advance_to(f.parse(parse_ctx)); using qualified_type = conditional_t(), const T, T>; + // Calling format through a mutable reference is deprecated. ctx.advance_to(f.format(*static_cast(arg), ctx)); } }; @@ -1327,7 +1365,7 @@ using ulong_type = conditional_t; template struct format_as_result { template ::value || std::is_class::value)> - static auto map(U*) -> decltype(format_as(std::declval())); + static auto map(U*) -> remove_cvref_t()))>; static auto map(...) -> void; using type = decltype(map(static_cast(nullptr))); @@ -1444,7 +1482,8 @@ template struct arg_mapper { // Only map owning types because mapping views can be unsafe. template , FMT_ENABLE_IF(std::is_arithmetic::value)> - FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(this->map(U())) { + FMT_CONSTEXPR FMT_INLINE auto map(const T& val) + -> decltype(FMT_DECLTYPE_THIS map(U())) { return map(format_as(val)); } @@ -1468,13 +1507,14 @@ template struct arg_mapper { !is_string::value && !is_char::value && !is_named_arg::value && !std::is_arithmetic>::value)> - FMT_CONSTEXPR FMT_INLINE auto map(T& val) -> decltype(this->do_map(val)) { + FMT_CONSTEXPR FMT_INLINE auto map(T& val) + -> decltype(FMT_DECLTYPE_THIS do_map(val)) { return do_map(val); } template ::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& named_arg) - -> decltype(this->map(named_arg.value)) { + -> decltype(FMT_DECLTYPE_THIS map(named_arg.value)) { return map(named_arg.value); } @@ -1493,45 +1533,19 @@ enum { max_packed_args = 62 / packed_arg_bits }; enum : unsigned long long { is_unpacked_bit = 1ULL << 63 }; enum : unsigned long long { has_named_args_bit = 1ULL << 62 }; -template -auto copy_str(InputIt begin, InputIt end, appender out) -> appender { - get_container(out).append(begin, end); - return out; -} -template -auto copy_str(InputIt begin, InputIt end, - std::back_insert_iterator out) - -> std::back_insert_iterator { - get_container(out).append(begin, end); - return out; -} - -template -FMT_CONSTEXPR auto copy_str(R&& rng, OutputIt out) -> OutputIt { - return detail::copy_str(rng.begin(), rng.end(), out); -} - -#if FMT_GCC_VERSION && FMT_GCC_VERSION < 500 -// A workaround for gcc 4.8 to make void_t work in a SFINAE context. -template struct void_t_impl { using type = void; }; -template using void_t = typename void_t_impl::type; -#else -template using void_t = void; -#endif - template struct is_output_iterator : std::false_type {}; +template <> struct is_output_iterator : std::true_type {}; + template struct is_output_iterator< - It, T, - void_t::iterator_category, - decltype(*std::declval() = std::declval())>> + It, T, void_t()++ = std::declval())>> : std::true_type {}; template struct is_back_insert_iterator : std::false_type {}; template -struct is_back_insert_iterator> +struct is_back_insert_iterator> : std::true_type {}; // A type-erased reference to an std::locale to avoid a heavy include. @@ -1607,8 +1621,8 @@ FMT_CONSTEXPR inline auto make_arg(T& val) -> basic_format_arg { } // namespace detail FMT_BEGIN_EXPORT -// A formatting argument. It is a trivially copyable/constructible type to -// allow storage in basic_memory_buffer. +// A formatting argument. Context is a template parameter for the compiled API +// where output can be unbuffered. template class basic_format_arg { private: detail::value value_; @@ -1618,11 +1632,6 @@ template class basic_format_arg { friend FMT_CONSTEXPR auto detail::make_arg(T& value) -> basic_format_arg; - 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 dynamic_format_arg_store; @@ -1660,55 +1669,68 @@ template class basic_format_arg { auto is_arithmetic() const -> bool { return detail::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(Visitor&& vis) -> decltype(vis(0)) { + switch (type_) { + case detail::type::none_type: + break; + case detail::type::int_type: + return vis(value_.int_value); + case detail::type::uint_type: + return vis(value_.uint_value); + case detail::type::long_long_type: + return vis(value_.long_long_value); + case detail::type::ulong_long_type: + return vis(value_.ulong_long_value); + case detail::type::int128_type: + return vis(detail::convert_for_visit(value_.int128_value)); + case detail::type::uint128_type: + return vis(detail::convert_for_visit(value_.uint128_value)); + case detail::type::bool_type: + return vis(value_.bool_value); + case detail::type::char_type: + return vis(value_.char_value); + case detail::type::float_type: + return vis(value_.float_value); + case detail::type::double_type: + return vis(value_.double_value); + case detail::type::long_double_type: + return vis(value_.long_double_value); + case detail::type::cstring_type: + return vis(value_.string.data); + case detail::type::string_type: + using sv = basic_string_view; + return vis(sv(value_.string.data, value_.string.size)); + case detail::type::pointer_type: + return vis(value_.pointer); + case detail::type::custom_type: + return vis(typename basic_format_arg::handle(value_.custom)); + } + return vis(monostate()); + } + + FMT_INLINE auto format_custom(const char_type* parse_begin, + typename Context::parse_context_type& parse_ctx, + Context& ctx) -> bool { + if (type_ != detail::type::custom_type) return false; + parse_ctx.advance_to(parse_begin); + value_.custom.format(value_.custom.value, parse_ctx, ctx); + return true; + } }; -/** - \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 - */ -// DEPRECATED! template -FMT_CONSTEXPR FMT_INLINE auto visit_format_arg( +FMT_DEPRECATED FMT_CONSTEXPR FMT_INLINE auto visit_format_arg( Visitor&& vis, const basic_format_arg& arg) -> decltype(vis(0)) { - switch (arg.type_) { - case detail::type::none_type: - break; - case detail::type::int_type: - return vis(arg.value_.int_value); - case detail::type::uint_type: - return vis(arg.value_.uint_value); - case detail::type::long_long_type: - return vis(arg.value_.long_long_value); - case detail::type::ulong_long_type: - return vis(arg.value_.ulong_long_value); - case detail::type::int128_type: - return vis(detail::convert_for_visit(arg.value_.int128_value)); - case detail::type::uint128_type: - return vis(detail::convert_for_visit(arg.value_.uint128_value)); - case detail::type::bool_type: - return vis(arg.value_.bool_value); - case detail::type::char_type: - return vis(arg.value_.char_value); - case detail::type::float_type: - return vis(arg.value_.float_value); - case detail::type::double_type: - return vis(arg.value_.double_value); - case detail::type::long_double_type: - return vis(arg.value_.long_double_value); - case detail::type::cstring_type: - return vis(arg.value_.string.data); - case detail::type::string_type: - using sv = basic_string_view; - return vis(sv(arg.value_.string.data, arg.value_.string.size)); - case detail::type::pointer_type: - return vis(arg.value_.pointer); - case detail::type::custom_type: - return vis(typename basic_format_arg::handle(arg.value_.custom)); - } - return vis(monostate()); + return arg.visit(std::forward(vis)); } // Formatting context. @@ -1748,8 +1770,8 @@ template class basic_format_context { } auto args() const -> const format_args& { return args_; } - FMT_CONSTEXPR auto error_handler() -> detail::error_handler { return {}; } - void on_error(const char* message) { error_handler().on_error(message); } + // This function is intentionally not constexpr to give a compile-time error. + void on_error(const char* message) { throw_format_error(message); } // Returns an iterator to the beginning of the output range. FMT_CONSTEXPR auto out() -> iterator { return out_; } @@ -1831,7 +1853,7 @@ class format_arg_store // Arguments are taken by lvalue references to avoid some lifetime issues. template constexpr auto make_format_args(T&... args) - -> format_arg_store...> { + -> format_arg_store...> { return {args...}; } @@ -2107,11 +2129,8 @@ struct dynamic_format_specs : format_specs { }; // Converts a character to ASCII. Returns '\0' on conversion failure. -template ::value)> -constexpr auto to_ascii(Char c) -> char { - return c <= 0xff ? static_cast(c) : '\0'; -} -template ::value)> +template ::value || + std::is_enum::value)> constexpr auto to_ascii(Char c) -> char { return c <= 0xff ? static_cast(c) : '\0'; } @@ -2156,11 +2175,11 @@ FMT_CONSTEXPR auto parse_nonnegative_int(const Char*& begin, const Char* end, } while (p != end && '0' <= *p && *p <= '9'); auto num_digits = p - begin; begin = p; - if (num_digits <= std::numeric_limits::digits10) - return static_cast(value); + int digits10 = static_cast(sizeof(int) * CHAR_BIT * 3 / 10); + if (num_digits <= digits10) return static_cast(value); // Check for overflow. - const unsigned max = to_unsigned((std::numeric_limits::max)()); - return num_digits == std::numeric_limits::digits10 + 1 && + unsigned max = INT_MAX; + return num_digits == digits10 + 1 && prev * 10ull + unsigned(p[-1] - '0') <= max ? static_cast(value) : error_value; @@ -2188,9 +2207,8 @@ FMT_CONSTEXPR auto do_parse_arg_id(const Char* begin, const Char* end, Char c = *begin; if (c >= '0' && c <= '9') { int index = 0; - constexpr int max = (std::numeric_limits::max)(); if (c != '0') - index = parse_nonnegative_int(begin, end, max); + index = parse_nonnegative_int(begin, end, INT_MAX); else ++begin; if (begin == end || (*begin != '}' && *begin != ':')) @@ -2309,9 +2327,12 @@ FMT_CONSTEXPR FMT_INLINE auto parse_format_specs( dynamic_format_specs& specs; type arg_type; - FMT_CONSTEXPR auto operator()(pres type, int set) -> const Char* { - if (!in(arg_type, set)) throw_format_error("invalid format specifier"); - specs.type = type; + FMT_CONSTEXPR auto operator()(pres pres_type, int set) -> const Char* { + if (!in(arg_type, set)) { + if (arg_type == type::none_type) return begin; + throw_format_error("invalid format specifier"); + } + specs.type = pres_type; return begin + 1; } } parse_presentation_type{begin, specs, arg_type}; @@ -2328,6 +2349,7 @@ FMT_CONSTEXPR FMT_INLINE auto parse_format_specs( case '+': case '-': case ' ': + if (arg_type == type::none_type) return begin; enter_state(state::sign, in(arg_type, sint_set | float_set)); switch (c) { case '+': @@ -2343,14 +2365,17 @@ FMT_CONSTEXPR FMT_INLINE auto parse_format_specs( ++begin; break; case '#': + if (arg_type == type::none_type) return begin; enter_state(state::hash, is_arithmetic_type(arg_type)); specs.alt = true; ++begin; break; case '0': enter_state(state::zero); - if (!is_arithmetic_type(arg_type)) + if (!is_arithmetic_type(arg_type)) { + if (arg_type == type::none_type) return begin; throw_format_error("format specifier requires numeric argument"); + } if (specs.align == align::none) { // Ignore 0 if align is specified for compatibility with std::format. specs.align = align::numeric; @@ -2372,12 +2397,14 @@ FMT_CONSTEXPR FMT_INLINE auto parse_format_specs( begin = parse_dynamic_spec(begin, end, specs.width, specs.width_ref, ctx); break; case '.': + if (arg_type == type::none_type) return begin; enter_state(state::precision, in(arg_type, float_set | string_set | cstring_set)); begin = parse_precision(begin, end, specs.precision, specs.precision_ref, ctx); break; case 'L': + if (arg_type == type::none_type) return begin; enter_state(state::locale, is_arithmetic_type(arg_type)); specs.localized = true; ++begin; @@ -2411,6 +2438,8 @@ FMT_CONSTEXPR FMT_INLINE auto parse_format_specs( case 'G': return parse_presentation_type(pres::general_upper, float_set); case 'c': + if (arg_type == type::bool_type) + throw_format_error("invalid format specifier"); return parse_presentation_type(pres::chr, integral_set); case 's': return parse_presentation_type(pres::string, @@ -2550,9 +2579,9 @@ FMT_CONSTEXPR auto parse_format_specs(ParseContext& ctx) decltype(arg_mapper().map(std::declval())), typename strip_named_arg::type>; // LAMMPS customization. Fails to compile with (some) Intel compilers -#if defined(__cpp_if_constexpr) && 0 - if constexpr (std::is_default_constructible_v< - formatter>) { +#if defined(__cpp_if_constexpr) && 1 + if constexpr (std::is_default_constructible< + formatter>::value) { return formatter().parse(ctx); } else { type_is_unformattable_for _; @@ -2675,9 +2704,11 @@ void check_format_string(S format_str) { template struct vformat_args { using type = basic_format_args< - basic_format_context>, Char>>; + basic_format_context>, Char>>; +}; +template <> struct vformat_args { + using type = format_args; }; -template <> struct vformat_args { using type = format_args; }; // Use vformat_args and avoid type_identity to keep symbols short. template @@ -2779,7 +2810,7 @@ using format_string = basic_format_string...>; inline auto runtime(string_view s) -> runtime_format_string<> { return {{s}}; } #endif -FMT_API auto vformat(string_view fmt, format_args args) -> std::string; +FMT_API auto vformat(string_view fmt, format_args args) -> basic_string; /** \rst @@ -2794,7 +2825,7 @@ FMT_API auto vformat(string_view fmt, format_args args) -> std::string; */ template FMT_NODISCARD FMT_INLINE auto format(format_string fmt, T&&... args) - -> std::string { + -> basic_string { return vformat(fmt, fmt::make_format_args(args...)); } @@ -2816,7 +2847,7 @@ auto vformat_to(OutputIt out, string_view fmt, format_args args) -> OutputIt { **Example**:: auto out = std::vector(); - fmt::format_to(std::back_inserter(out), "{}", 42); + fmt::format_to(fmt::back_inserter(out), "{}", 42); \endrst */ template #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(FMT_WINDOWS_NO_WCHAR) # include // _isatty #endif @@ -36,10 +36,6 @@ FMT_FUNC void assert_fail(const char* file, int line, const char* message) { std::terminate(); } -FMT_FUNC void throw_format_error(const char* message) { - FMT_THROW(format_error(message)); -} - FMT_FUNC void format_error_code(detail::buffer& out, int error_code, string_view message) noexcept { // Report error code making sure that the output fits into @@ -58,8 +54,8 @@ FMT_FUNC void format_error_code(detail::buffer& out, int error_code, error_code_size += detail::to_unsigned(detail::count_digits(abs_value)); auto it = buffer_appender(out); if (message.size() <= inline_buffer_size - error_code_size) - format_to(it, FMT_STRING("{}{}"), message, SEP); - format_to(it, FMT_STRING("{}{}"), ERROR_STR, error_code); + fmt::format_to(it, FMT_STRING("{}{}"), message, SEP); + fmt::format_to(it, FMT_STRING("{}{}"), ERROR_STR, error_code); FMT_ASSERT(out.size() <= inline_buffer_size, ""); } @@ -73,9 +69,8 @@ FMT_FUNC void report_error(format_func func, int error_code, } // A wrapper around fwrite that throws on error. -inline void fwrite_fully(const void* ptr, size_t size, size_t count, - FILE* stream) { - size_t written = std::fwrite(ptr, size, count, stream); +inline void fwrite_fully(const void* ptr, size_t count, FILE* stream) { + size_t written = std::fwrite(ptr, 1, count, stream); if (written < count) FMT_THROW(system_error(errno, FMT_STRING("cannot write to file"))); } @@ -86,7 +81,7 @@ locale_ref::locale_ref(const Locale& loc) : locale_(&loc) { static_assert(std::is_same::value, ""); } -template Locale locale_ref::get() const { +template auto locale_ref::get() const -> Locale { static_assert(std::is_same::value, ""); return locale_ ? *static_cast(locale_) : std::locale(); } @@ -98,7 +93,8 @@ FMT_FUNC auto thousands_sep_impl(locale_ref loc) -> thousands_sep_result { auto thousands_sep = grouping.empty() ? Char() : facet.thousands_sep(); return {std::move(grouping), thousands_sep}; } -template FMT_FUNC Char decimal_point_impl(locale_ref loc) { +template +FMT_FUNC auto decimal_point_impl(locale_ref loc) -> Char { return std::use_facet>(loc.get()) .decimal_point(); } @@ -127,6 +123,10 @@ FMT_FUNC auto write_loc(appender out, loc_value value, } } // namespace detail +FMT_FUNC void throw_format_error(const char* message) { + FMT_THROW(format_error(message)); +} + template typename Locale::id format_facet::id; #ifndef FMT_STATIC_THOUSANDS_SEPARATOR @@ -144,24 +144,25 @@ FMT_API FMT_FUNC auto format_facet::do_put( } #endif -FMT_FUNC std::system_error vsystem_error(int error_code, string_view fmt, - format_args args) { +FMT_FUNC auto vsystem_error(int error_code, string_view fmt, format_args args) + -> std::system_error { auto ec = std::error_code(error_code, std::generic_category()); return std::system_error(ec, vformat(fmt, args)); } namespace detail { -template inline bool operator==(basic_fp x, basic_fp y) { +template +inline auto operator==(basic_fp x, basic_fp y) -> bool { return x.f == y.f && x.e == y.e; } // Compilers should be able to optimize this into the ror instruction. -FMT_CONSTEXPR inline uint32_t rotr(uint32_t n, uint32_t r) noexcept { +FMT_CONSTEXPR inline auto rotr(uint32_t n, uint32_t r) noexcept -> uint32_t { r &= 31; return (n >> r) | (n << (32 - r)); } -FMT_CONSTEXPR inline uint64_t rotr(uint64_t n, uint32_t r) noexcept { +FMT_CONSTEXPR inline auto rotr(uint64_t n, uint32_t r) noexcept -> uint64_t { r &= 63; return (n >> r) | (n << (64 - r)); } @@ -170,14 +171,14 @@ FMT_CONSTEXPR inline uint64_t rotr(uint64_t n, uint32_t r) noexcept { namespace dragonbox { // Computes upper 64 bits of multiplication of a 32-bit unsigned integer and a // 64-bit unsigned integer. -inline uint64_t umul96_upper64(uint32_t x, uint64_t y) noexcept { +inline auto umul96_upper64(uint32_t x, uint64_t y) noexcept -> uint64_t { return umul128_upper64(static_cast(x) << 32, y); } // Computes lower 128 bits of multiplication of a 64-bit unsigned integer and a // 128-bit unsigned integer. -inline uint128_fallback umul192_lower128(uint64_t x, - uint128_fallback y) noexcept { +inline auto umul192_lower128(uint64_t x, uint128_fallback y) noexcept + -> uint128_fallback { uint64_t high = x * y.high(); uint128_fallback high_low = umul128(x, y.low()); return {high + high_low.high(), high_low.low()}; @@ -185,12 +186,12 @@ inline uint128_fallback umul192_lower128(uint64_t x, // Computes lower 64 bits of multiplication of a 32-bit unsigned integer and a // 64-bit unsigned integer. -inline uint64_t umul96_lower64(uint32_t x, uint64_t y) noexcept { +inline auto umul96_lower64(uint32_t x, uint64_t y) noexcept -> uint64_t { return x * y; } // Various fast log computations. -inline int floor_log10_pow2_minus_log10_4_over_3(int e) noexcept { +inline auto floor_log10_pow2_minus_log10_4_over_3(int e) noexcept -> int { FMT_ASSERT(e <= 2936 && e >= -2985, "too large exponent"); return (e * 631305 - 261663) >> 21; } @@ -204,7 +205,7 @@ FMT_INLINE_VARIABLE constexpr struct { // divisible by pow(10, N). // Precondition: n <= pow(10, N + 1). template -bool check_divisibility_and_divide_by_pow10(uint32_t& n) noexcept { +auto check_divisibility_and_divide_by_pow10(uint32_t& n) noexcept -> bool { // The numbers below are chosen such that: // 1. floor(n/d) = floor(nm / 2^k) where d=10 or d=100, // 2. nm mod 2^k < m if and only if n is divisible by d, @@ -229,7 +230,7 @@ bool check_divisibility_and_divide_by_pow10(uint32_t& n) noexcept { // Computes floor(n / pow(10, N)) for small n and N. // Precondition: n <= pow(10, N + 1). -template uint32_t small_division_by_pow10(uint32_t n) noexcept { +template auto small_division_by_pow10(uint32_t n) noexcept -> uint32_t { constexpr auto info = div_small_pow10_infos[N - 1]; FMT_ASSERT(n <= info.divisor * 10, "n is too large"); constexpr uint32_t magic_number = @@ -238,12 +239,12 @@ template uint32_t small_division_by_pow10(uint32_t n) noexcept { } // Computes floor(n / 10^(kappa + 1)) (float) -inline uint32_t divide_by_10_to_kappa_plus_1(uint32_t n) noexcept { +inline auto divide_by_10_to_kappa_plus_1(uint32_t n) noexcept -> uint32_t { // 1374389535 = ceil(2^37/100) return static_cast((static_cast(n) * 1374389535) >> 37); } // Computes floor(n / 10^(kappa + 1)) (double) -inline uint64_t divide_by_10_to_kappa_plus_1(uint64_t n) noexcept { +inline auto divide_by_10_to_kappa_plus_1(uint64_t n) noexcept -> uint64_t { // 2361183241434822607 = ceil(2^(64+7)/1000) return umul128_upper64(n, 2361183241434822607ull) >> 7; } @@ -255,7 +256,7 @@ template <> struct cache_accessor { using carrier_uint = float_info::carrier_uint; using cache_entry_type = uint64_t; - static uint64_t get_cached_power(int k) noexcept { + static auto get_cached_power(int k) noexcept -> uint64_t { FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, "k is out of range"); static constexpr const uint64_t pow10_significands[] = { @@ -297,20 +298,23 @@ template <> struct cache_accessor { bool is_integer; }; - static compute_mul_result compute_mul( - carrier_uint u, const cache_entry_type& cache) noexcept { + static auto compute_mul(carrier_uint u, + const cache_entry_type& cache) noexcept + -> compute_mul_result { auto r = umul96_upper64(u, cache); return {static_cast(r >> 32), static_cast(r) == 0}; } - static uint32_t compute_delta(const cache_entry_type& cache, - int beta) noexcept { + static auto compute_delta(const cache_entry_type& cache, int beta) noexcept + -> uint32_t { return static_cast(cache >> (64 - 1 - beta)); } - static compute_mul_parity_result compute_mul_parity( - carrier_uint two_f, const cache_entry_type& cache, int beta) noexcept { + static auto compute_mul_parity(carrier_uint two_f, + const cache_entry_type& cache, + int beta) noexcept + -> compute_mul_parity_result { FMT_ASSERT(beta >= 1, ""); FMT_ASSERT(beta < 64, ""); @@ -319,22 +323,22 @@ template <> struct cache_accessor { static_cast(r >> (32 - beta)) == 0}; } - static carrier_uint compute_left_endpoint_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_left_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return static_cast( (cache - (cache >> (num_significand_bits() + 2))) >> (64 - num_significand_bits() - 1 - beta)); } - static carrier_uint compute_right_endpoint_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_right_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return static_cast( (cache + (cache >> (num_significand_bits() + 1))) >> (64 - num_significand_bits() - 1 - beta)); } - static carrier_uint compute_round_up_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_round_up_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return (static_cast( cache >> (64 - num_significand_bits() - 2 - beta)) + 1) / @@ -346,7 +350,7 @@ template <> struct cache_accessor { using carrier_uint = float_info::carrier_uint; using cache_entry_type = uint128_fallback; - static uint128_fallback get_cached_power(int k) noexcept { + static auto get_cached_power(int k) noexcept -> uint128_fallback { FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, "k is out of range"); @@ -985,8 +989,7 @@ template <> struct cache_accessor { {0xe0accfa875af45a7, 0x93eb1b80a33b8606}, {0x8c6c01c9498d8b88, 0xbc72f130660533c4}, {0xaf87023b9bf0ee6a, 0xeb8fad7c7f8680b5}, - { 0xdb68c2ca82ed2a05, - 0xa67398db9f6820e2 } + {0xdb68c2ca82ed2a05, 0xa67398db9f6820e2}, #else {0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7b}, {0xce5d73ff402d98e3, 0xfb0a3d212dc81290}, @@ -1071,19 +1074,22 @@ template <> struct cache_accessor { bool is_integer; }; - static compute_mul_result compute_mul( - carrier_uint u, const cache_entry_type& cache) noexcept { + static auto compute_mul(carrier_uint u, + const cache_entry_type& cache) noexcept + -> compute_mul_result { auto r = umul192_upper128(u, cache); return {r.high(), r.low() == 0}; } - static uint32_t compute_delta(cache_entry_type const& cache, - int beta) noexcept { + static auto compute_delta(cache_entry_type const& cache, int beta) noexcept + -> uint32_t { return static_cast(cache.high() >> (64 - 1 - beta)); } - static compute_mul_parity_result compute_mul_parity( - carrier_uint two_f, const cache_entry_type& cache, int beta) noexcept { + static auto compute_mul_parity(carrier_uint two_f, + const cache_entry_type& cache, + int beta) noexcept + -> compute_mul_parity_result { FMT_ASSERT(beta >= 1, ""); FMT_ASSERT(beta < 64, ""); @@ -1092,35 +1098,35 @@ template <> struct cache_accessor { ((r.high() << beta) | (r.low() >> (64 - beta))) == 0}; } - static carrier_uint compute_left_endpoint_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_left_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return (cache.high() - (cache.high() >> (num_significand_bits() + 2))) >> (64 - num_significand_bits() - 1 - beta); } - static carrier_uint compute_right_endpoint_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_right_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return (cache.high() + (cache.high() >> (num_significand_bits() + 1))) >> (64 - num_significand_bits() - 1 - beta); } - static carrier_uint compute_round_up_for_shorter_interval_case( - const cache_entry_type& cache, int beta) noexcept { + static auto compute_round_up_for_shorter_interval_case( + const cache_entry_type& cache, int beta) noexcept -> carrier_uint { return ((cache.high() >> (64 - num_significand_bits() - 2 - beta)) + 1) / 2; } }; -FMT_FUNC uint128_fallback get_cached_power(int k) noexcept { +FMT_FUNC auto get_cached_power(int k) noexcept -> uint128_fallback { return cache_accessor::get_cached_power(k); } // Various integer checks template -bool is_left_endpoint_integer_shorter_interval(int exponent) noexcept { +auto is_left_endpoint_integer_shorter_interval(int exponent) noexcept -> bool { const int case_shorter_interval_left_endpoint_lower_threshold = 2; const int case_shorter_interval_left_endpoint_upper_threshold = 3; return exponent >= case_shorter_interval_left_endpoint_lower_threshold && @@ -1132,7 +1138,7 @@ FMT_INLINE int remove_trailing_zeros(uint32_t& n, int s = 0) noexcept { FMT_ASSERT(n != 0, ""); // Modular inverse of 5 (mod 2^32): (mod_inv_5 * 5) mod 2^32 = 1. constexpr uint32_t mod_inv_5 = 0xcccccccd; - constexpr uint32_t mod_inv_25 = 0xc28f5c29; // = mod_inv_5 * mod_inv_5 + constexpr uint32_t mod_inv_25 = 0xc28f5c29; // = mod_inv_5 * mod_inv_5 while (true) { auto q = rotr(n * mod_inv_25, 2); @@ -1168,7 +1174,7 @@ FMT_INLINE int remove_trailing_zeros(uint64_t& n) noexcept { // If n is not divisible by 10^8, work with n itself. constexpr uint64_t mod_inv_5 = 0xcccccccccccccccd; - constexpr uint64_t mod_inv_25 = 0x8f5c28f5c28f5c29; // = mod_inv_5 * mod_inv_5 + constexpr uint64_t mod_inv_25 = 0x8f5c28f5c28f5c29; // mod_inv_5 * mod_inv_5 int s = 0; while (true) { @@ -1234,7 +1240,7 @@ FMT_INLINE decimal_fp shorter_interval_case(int exponent) noexcept { return ret_value; } -template decimal_fp to_decimal(T x) noexcept { +template auto to_decimal(T x) noexcept -> decimal_fp { // Step 1: integer promotion & Schubfach multiplier calculation. using carrier_uint = typename float_info::carrier_uint; @@ -1373,15 +1379,15 @@ template <> struct formatter { for (auto i = n.bigits_.size(); i > 0; --i) { auto value = n.bigits_[i - 1u]; if (first) { - out = format_to(out, FMT_STRING("{:x}"), value); + out = fmt::format_to(out, FMT_STRING("{:x}"), value); first = false; continue; } - out = format_to(out, FMT_STRING("{:08x}"), value); + out = fmt::format_to(out, FMT_STRING("{:08x}"), value); } if (n.exp_ > 0) - out = format_to(out, FMT_STRING("p{}"), - n.exp_ * detail::bigint::bigit_bits); + out = fmt::format_to(out, FMT_STRING("p{}"), + n.exp_ * detail::bigint::bigit_bits); return out; } }; @@ -1417,7 +1423,7 @@ FMT_FUNC void report_system_error(int error_code, report_error(format_system_error, error_code, message); } -FMT_FUNC std::string vformat(string_view fmt, format_args args) { +FMT_FUNC auto vformat(string_view fmt, format_args args) -> std::string { // Don't optimize the "{}" case to keep the binary size small and because it // can be better optimized in fmt::format anyway. auto buffer = memory_buffer(); @@ -1426,33 +1432,38 @@ FMT_FUNC std::string vformat(string_view fmt, format_args args) { } namespace detail { -#ifndef _WIN32 -FMT_FUNC bool write_console(std::FILE*, string_view) { return false; } +#if !defined(_WIN32) || defined(FMT_WINDOWS_NO_WCHAR) +FMT_FUNC auto write_console(int, string_view) -> bool { return false; } #else using dword = conditional_t; extern "C" __declspec(dllimport) int __stdcall WriteConsoleW( // void*, const void*, dword, dword*, void*); -FMT_FUNC bool write_console(std::FILE* f, string_view text) { - auto fd = _fileno(f); - if (!_isatty(fd)) return false; +FMT_FUNC bool write_console(int fd, string_view text) { auto u16 = utf8_to_utf16(text); - auto written = dword(); return WriteConsoleW(reinterpret_cast(_get_osfhandle(fd)), u16.c_str(), - static_cast(u16.size()), &written, nullptr) != 0; + static_cast(u16.size()), nullptr, nullptr) != 0; } +#endif +#ifdef _WIN32 // Print assuming legacy (non-Unicode) encoding. FMT_FUNC void vprint_mojibake(std::FILE* f, string_view fmt, format_args args) { auto buffer = memory_buffer(); - detail::vformat_to(buffer, fmt, - basic_format_args>(args)); - fwrite_fully(buffer.data(), 1, buffer.size(), f); + detail::vformat_to(buffer, fmt, args); + fwrite_fully(buffer.data(), buffer.size(), f); } #endif FMT_FUNC void print(std::FILE* f, string_view text) { - if (!write_console(f, text)) fwrite_fully(text.data(), 1, text.size(), f); +#ifdef _WIN32 + int fd = _fileno(f); + if (_isatty(fd)) { + std::fflush(f); + if (write_console(fd, text)) return; + } +#endif + fwrite_fully(text.data(), text.size(), f); } } // namespace detail diff --git a/src/fmt/format.h b/src/fmt/format.h index 87a34b972ce..8cdf95b7bdf 100644 --- a/src/fmt/format.h +++ b/src/fmt/format.h @@ -37,17 +37,28 @@ #include // uint32_t #include // std::memcpy #include // std::initializer_list -#include // std::numeric_limits -#include // std::uninitialized_copy -#include // std::runtime_error -#include // std::system_error +#include +#include // std::numeric_limits +#include // std::uninitialized_copy +#include // std::runtime_error +#include // std::system_error #ifdef __cpp_lib_bit_cast -# include // std::bitcast +# include // std::bit_cast #endif #include "core.h" +// libc++ supports string_view in pre-c++17. +#if FMT_HAS_INCLUDE() && \ + (FMT_CPLUSPLUS >= 201703L || defined(_LIBCPP_VERSION)) +# include +# define FMT_USE_STRING_VIEW +#elif FMT_HAS_INCLUDE("experimental/string_view") && FMT_CPLUSPLUS >= 201402L +# include +# define FMT_USE_EXPERIMENTAL_STRING_VIEW +#endif + #if defined __cpp_inline_variables && __cpp_inline_variables >= 201606L # define FMT_INLINE_VARIABLE inline #else @@ -65,25 +76,11 @@ # define FMT_FALLTHROUGH #endif -#ifndef FMT_DEPRECATED -# if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VERSION >= 1900 -# define FMT_DEPRECATED [[deprecated]] -# else -# if (defined(__GNUC__) && !defined(__LCC__)) || defined(__clang__) -# define FMT_DEPRECATED __attribute__((deprecated)) -# elif FMT_MSC_VERSION -# define FMT_DEPRECATED __declspec(deprecated) -# else -# define FMT_DEPRECATED /* deprecated */ -# endif -# endif -#endif - #ifndef FMT_NO_UNIQUE_ADDRESS # if FMT_CPLUSPLUS >= 202002L # if FMT_HAS_CPP_ATTRIBUTE(no_unique_address) # define FMT_NO_UNIQUE_ADDRESS [[no_unique_address]] -// VS2019 v16.10 and later except clang-cl (https://reviews.llvm.org/D110485) +// VS2019 v16.10 and later except clang-cl (https://reviews.llvm.org/D110485). # elif (FMT_MSC_VERSION >= 1929) && !FMT_CLANG_VERSION # define FMT_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] # endif @@ -93,10 +90,11 @@ # define FMT_NO_UNIQUE_ADDRESS #endif -#if FMT_GCC_VERSION || defined(__clang__) -# define FMT_VISIBILITY(value) __attribute__((visibility(value))) +// Visibility when compiled as a shared library/object. +#if defined(FMT_LIB_EXPORT) || defined(FMT_SHARED) +# define FMT_SO_VISIBILITY(value) FMT_VISIBILITY(value) #else -# define FMT_VISIBILITY(value) +# define FMT_SO_VISIBILITY(value) #endif #ifdef __has_builtin @@ -152,7 +150,10 @@ FMT_END_NAMESPACE #ifndef FMT_USE_USER_DEFINED_LITERALS // EDG based compilers (Intel, NVIDIA, Elbrus, etc), GCC and MSVC support UDLs. -# if (FMT_HAS_FEATURE(cxx_user_literals) || FMT_GCC_VERSION >= 407 || \ +// +// GCC before 4.9 requires a space in `operator"" _a` which is invalid in later +// compiler versions. +# if (FMT_HAS_FEATURE(cxx_user_literals) || FMT_GCC_VERSION >= 409 || \ FMT_MSC_VERSION >= 1900) && \ (!defined(__EDG_VERSION__) || __EDG_VERSION__ >= /* UDL feature */ 480) # define FMT_USE_USER_DEFINED_LITERALS 1 @@ -272,20 +273,19 @@ inline auto ctzll(uint64_t x) -> int { FMT_END_NAMESPACE #endif -FMT_BEGIN_NAMESPACE - -template struct disjunction : std::false_type {}; -template struct disjunction

: P {}; -template -struct disjunction - : conditional_t> {}; - -template struct conjunction : std::true_type {}; -template struct conjunction

: P {}; -template -struct conjunction - : conditional_t, P1> {}; +namespace std { +template <> struct iterator_traits { + using value_type = void; + using iterator_category = std::output_iterator_tag; +}; +template +struct iterator_traits> { + using value_type = void; + using iterator_category = std::output_iterator_tag; +}; +} // namespace std +FMT_BEGIN_NAMESPACE namespace detail { FMT_CONSTEXPR inline void abort_fuzzing_if(bool condition) { @@ -295,6 +295,15 @@ FMT_CONSTEXPR inline void abort_fuzzing_if(bool condition) { #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 + template struct string_literal { static constexpr CharT value[sizeof...(C)] = {C...}; constexpr operator basic_string_view() const { @@ -307,37 +316,6 @@ template constexpr CharT string_literal::value[sizeof...(C)]; #endif -template class formatbuf : public Streambuf { - private: - using char_type = typename Streambuf::char_type; - using streamsize = decltype(std::declval().sputn(nullptr, 0)); - using int_type = typename Streambuf::int_type; - using traits_type = typename Streambuf::traits_type; - - buffer& buffer_; - - public: - explicit formatbuf(buffer& buf) : buffer_(buf) {} - - protected: - // The put area is always empty. This makes the implementation simpler and has - // the advantage that the streambuf and the buffer are always in sync and - // sputc never writes into uninitialized memory. A disadvantage is that each - // call to sputc always results in a (virtual) call to overflow. There is no - // disadvantage here for sputn since this always results in a call to xsputn. - - auto overflow(int_type ch) -> int_type override { - if (!traits_type::eq_int_type(ch, traits_type::eof())) - buffer_.push_back(static_cast(ch)); - return ch; - } - - auto xsputn(const char_type* s, streamsize count) -> streamsize override { - buffer_.append(s, s + count); - return count; - } -}; - // Implementation of std::bit_cast for pre-C++20. template FMT_CONSTEXPR20 auto bit_cast(const From& from) -> To { @@ -373,8 +351,8 @@ class uint128_fallback { constexpr uint128_fallback(uint64_t hi, uint64_t lo) : lo_(lo), hi_(hi) {} constexpr uint128_fallback(uint64_t value = 0) : lo_(value), hi_(0) {} - constexpr uint64_t high() const noexcept { return hi_; } - constexpr uint64_t low() const noexcept { return lo_; } + constexpr auto high() const noexcept -> uint64_t { return hi_; } + constexpr auto low() const noexcept -> uint64_t { return lo_; } template ::value)> constexpr explicit operator T() const { @@ -450,7 +428,7 @@ class uint128_fallback { hi_ &= n.hi_; } - FMT_CONSTEXPR20 uint128_fallback& operator+=(uint64_t n) noexcept { + FMT_CONSTEXPR20 auto operator+=(uint64_t n) noexcept -> uint128_fallback& { if (is_constant_evaluated()) { lo_ += n; hi_ += (lo_ < n ? 1 : 0); @@ -546,6 +524,52 @@ FMT_INLINE void assume(bool condition) { #endif } +// Extracts a reference to the container from back_insert_iterator. +template +inline auto get_container(std::back_insert_iterator it) + -> Container& { + using base = std::back_insert_iterator; + struct accessor : base { + accessor(base b) : base(b) {} + using base::container; + }; + return *accessor(it).container; +} + +template +FMT_CONSTEXPR auto copy_str(InputIt begin, InputIt end, OutputIt out) + -> OutputIt { + while (begin != end) *out++ = static_cast(*begin++); + return out; +} + +template , U>::value&& is_char::value)> +FMT_CONSTEXPR auto copy_str(T* begin, T* end, U* out) -> U* { + if (is_constant_evaluated()) return copy_str(begin, end, out); + auto size = to_unsigned(end - begin); + if (size > 0) memcpy(out, begin, size * sizeof(U)); + return out + size; +} + +template +auto copy_str(InputIt begin, InputIt end, appender out) -> appender { + get_container(out).append(begin, end); + return out; +} +template +auto copy_str(InputIt begin, InputIt end, back_insert_iterator out) + -> back_insert_iterator { + get_container(out).append(begin, end); + return out; +} + +template +FMT_CONSTEXPR auto copy_str(R&& rng, OutputIt out) -> OutputIt { + return detail::copy_str(rng.begin(), rng.end(), out); +} + // An approximation of iterator_t for pre-C++20 systems. template using iterator_t = decltype(std::begin(std::declval())); @@ -740,7 +764,7 @@ inline auto compute_width(basic_string_view s) -> size_t { } // Computes approximate display width of a UTF-8 string. -FMT_CONSTEXPR inline size_t compute_width(string_view s) { +FMT_CONSTEXPR inline auto compute_width(string_view s) -> size_t { size_t num_code_points = 0; // It is not a lambda for compatibility with C++14. struct count_code_points { @@ -787,12 +811,17 @@ inline auto code_point_index(basic_string_view s, size_t n) -> size_t { // Calculates the index of the nth code point in a UTF-8 string. inline auto code_point_index(string_view s, size_t n) -> size_t { - 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 > n) return i; - } - return s.size(); + size_t result = s.size(); + const char* begin = s.begin(); + for_each_codepoint(s, [begin, &n, &result](uint32_t, string_view sv) { + if (n != 0) { + --n; + return true; + } + result = to_unsigned(sv.begin() - begin); + return false; + }); + return result; } inline auto code_point_index(basic_string_view s, size_t n) @@ -902,7 +931,7 @@ enum { inline_buffer_size = 500 }; **Example**:: auto out = fmt::memory_buffer(); - format_to(std::back_inserter(out), "The answer is {}.", 42); + fmt::format_to(std::back_inserter(out), "The answer is {}.", 42); This will append the following output to the ``out`` object: @@ -929,27 +958,29 @@ class basic_memory_buffer final : public detail::buffer { } protected: - FMT_CONSTEXPR20 void grow(size_t size) override { + static FMT_CONSTEXPR20 void grow(detail::buffer& buf, size_t size) { detail::abort_fuzzing_if(size > 5000); - const size_t max_size = std::allocator_traits::max_size(alloc_); - size_t old_capacity = this->capacity(); + auto& self = static_cast(buf); + const size_t max_size = + std::allocator_traits::max_size(self.alloc_); + size_t old_capacity = buf.capacity(); size_t new_capacity = old_capacity + old_capacity / 2; if (size > new_capacity) new_capacity = size; else if (new_capacity > max_size) new_capacity = size > max_size ? size : max_size; - T* old_data = this->data(); + T* old_data = buf.data(); T* new_data = - std::allocator_traits::allocate(alloc_, new_capacity); + std::allocator_traits::allocate(self.alloc_, new_capacity); // Suppress a bogus -Wstringop-overflow in gcc 13.1 (#3481). - detail::assume(this->size() <= new_capacity); + detail::assume(buf.size() <= new_capacity); // The following code doesn't throw, so the raw pointer above doesn't leak. - std::uninitialized_copy_n(old_data, this->size(), new_data); - this->set(new_data, new_capacity); + std::uninitialized_copy_n(old_data, buf.size(), new_data); + self.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_) alloc_.deallocate(old_data, old_capacity); + if (old_data != self.store_) self.alloc_.deallocate(old_data, old_capacity); } public: @@ -958,7 +989,7 @@ class basic_memory_buffer final : public detail::buffer { FMT_CONSTEXPR20 explicit basic_memory_buffer( const Allocator& alloc = Allocator()) - : alloc_(alloc) { + : detail::buffer(grow), alloc_(alloc) { this->set(store_, SIZE); if (detail::is_constant_evaluated()) detail::fill_n(store_, SIZE, T()); } @@ -990,7 +1021,8 @@ class basic_memory_buffer final : public detail::buffer { of the other object to it. \endrst */ - FMT_CONSTEXPR20 basic_memory_buffer(basic_memory_buffer&& other) noexcept { + FMT_CONSTEXPR20 basic_memory_buffer(basic_memory_buffer&& other) noexcept + : detail::buffer(grow) { move(other); } @@ -1018,7 +1050,6 @@ class basic_memory_buffer final : public detail::buffer { /** Increases the buffer capacity to *new_capacity*. */ void reserve(size_t new_capacity) { this->try_reserve(new_capacity); } - // Directly append data into the buffer using detail::buffer::append; template void append(const ContiguousRange& range) { @@ -1034,7 +1065,7 @@ struct is_contiguous> : std::true_type { FMT_END_EXPORT namespace detail { -FMT_API bool write_console(std::FILE* f, string_view text); +FMT_API auto write_console(int fd, string_view text) -> bool; FMT_API void print(std::FILE*, string_view); } // namespace detail @@ -1046,7 +1077,7 @@ FMT_BEGIN_EXPORT #endif /** An error reported from a formatting function. */ -class FMT_VISIBILITY("default") format_error : public std::runtime_error { +class FMT_SO_VISIBILITY("default") format_error : public std::runtime_error { public: using std::runtime_error::runtime_error; }; @@ -1089,7 +1120,7 @@ class loc_value { loc_value(T) {} template auto visit(Visitor&& vis) -> decltype(vis(0)) { - return visit_format_arg(vis, value_); + return value_.visit(vis); } }; @@ -1153,13 +1184,13 @@ using uint32_or_64_or_128_t = template using uint64_or_128_t = conditional_t() <= 64, uint64_t, uint128_t>; -#define FMT_POWERS_OF_10(factor) \ - factor * 10, (factor)*100, (factor)*1000, (factor)*10000, (factor)*100000, \ - (factor)*1000000, (factor)*10000000, (factor)*100000000, \ - (factor)*1000000000 +#define FMT_POWERS_OF_10(factor) \ + factor * 10, (factor) * 100, (factor) * 1000, (factor) * 10000, \ + (factor) * 100000, (factor) * 1000000, (factor) * 10000000, \ + (factor) * 100000000, (factor) * 1000000000 // Converts value in the range [0, 100) to a string. -constexpr const char* digits2(size_t value) { +constexpr auto digits2(size_t value) -> const char* { // GCC generates slightly better code when value is pointer-size. return &"0001020304050607080910111213141516171819" "2021222324252627282930313233343536373839" @@ -1169,7 +1200,7 @@ constexpr const char* digits2(size_t value) { } // Sign is a template parameter to workaround a bug in gcc 4.8. -template constexpr Char sign(Sign s) { +template constexpr auto sign(Sign s) -> Char { #if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 604 static_assert(std::is_same::value, ""); #endif @@ -1394,7 +1425,7 @@ FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits, return out; } // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1). - char buffer[num_bits() / BASE_BITS + 1]; + char buffer[num_bits() / BASE_BITS + 1] = {}; format_uint(buffer, value, num_digits, upper); return detail::copy_str_noinline(buffer, buffer + num_digits, out); } @@ -1430,22 +1461,23 @@ template class to_utf8 { : "invalid utf32")); } operator string_view() const { return string_view(&buffer_[0], size()); } - size_t size() const { return buffer_.size() - 1; } - const char* c_str() const { return &buffer_[0]; } - std::string str() const { return std::string(&buffer_[0], size()); } + auto size() const -> size_t { return buffer_.size() - 1; } + auto c_str() const -> const char* { return &buffer_[0]; } + auto str() const -> std::string { return std::string(&buffer_[0], size()); } // Performs conversion returning a bool instead of throwing exception on // conversion error. This method may still throw in case of memory allocation // error. - bool convert(basic_string_view s, - to_utf8_error_policy policy = to_utf8_error_policy::abort) { + auto convert(basic_string_view s, + to_utf8_error_policy policy = to_utf8_error_policy::abort) + -> bool { if (!convert(buffer_, s, policy)) return false; buffer_.push_back(0); return true; } - static bool convert( - Buffer& buf, basic_string_view s, - to_utf8_error_policy policy = to_utf8_error_policy::abort) { + static auto convert(Buffer& buf, basic_string_view s, + to_utf8_error_policy policy = to_utf8_error_policy::abort) + -> bool { for (auto p = s.begin(); p != s.end(); ++p) { uint32_t c = static_cast(*p); if (sizeof(WChar) == 2 && c >= 0xd800 && c <= 0xdfff) { @@ -1481,7 +1513,7 @@ template class to_utf8 { }; // Computes 128-bit result of multiplication of two 64-bit unsigned integers. -inline uint128_fallback umul128(uint64_t x, uint64_t y) noexcept { +inline auto umul128(uint64_t x, uint64_t y) noexcept -> uint128_fallback { #if FMT_USE_INT128 auto p = static_cast(x) * static_cast(y); return {static_cast(p >> 64), static_cast(p)}; @@ -1512,19 +1544,19 @@ inline uint128_fallback umul128(uint64_t x, uint64_t y) noexcept { namespace dragonbox { // Computes floor(log10(pow(2, e))) for e in [-2620, 2620] using the method from // https://fmt.dev/papers/Dragonbox.pdf#page=28, section 6.1. -inline int floor_log10_pow2(int e) noexcept { +inline auto floor_log10_pow2(int e) noexcept -> int { FMT_ASSERT(e <= 2620 && e >= -2620, "too large exponent"); static_assert((-1 >> 1) == -1, "right shift is not arithmetic"); return (e * 315653) >> 20; } -inline int floor_log2_pow10(int e) noexcept { +inline auto floor_log2_pow10(int e) noexcept -> int { FMT_ASSERT(e <= 1233 && e >= -1233, "too large exponent"); return (e * 1741647) >> 19; } // Computes upper 64 bits of multiplication of two 64-bit unsigned integers. -inline uint64_t umul128_upper64(uint64_t x, uint64_t y) noexcept { +inline auto umul128_upper64(uint64_t x, uint64_t y) noexcept -> uint64_t { #if FMT_USE_INT128 auto p = static_cast(x) * static_cast(y); return static_cast(p >> 64); @@ -1537,14 +1569,14 @@ inline uint64_t umul128_upper64(uint64_t x, uint64_t y) noexcept { // Computes upper 128 bits of multiplication of a 64-bit unsigned integer and a // 128-bit unsigned integer. -inline uint128_fallback umul192_upper128(uint64_t x, - uint128_fallback y) noexcept { +inline auto umul192_upper128(uint64_t x, uint128_fallback y) noexcept + -> uint128_fallback { uint128_fallback r = umul128(x, y.high()); r += umul128_upper64(x, y.low()); return r; } -FMT_API uint128_fallback get_cached_power(int k) noexcept; +FMT_API auto get_cached_power(int k) noexcept -> uint128_fallback; // Type-specific information that Dragonbox uses. template struct float_info; @@ -1598,14 +1630,14 @@ template FMT_API auto to_decimal(T x) noexcept -> decimal_fp; } // namespace dragonbox // Returns true iff Float has the implicit bit which is not stored. -template constexpr bool has_implicit_bit() { +template constexpr auto has_implicit_bit() -> bool { // An 80-bit FP number has a 64-bit significand an no implicit bit. return std::numeric_limits::digits != 64; } // Returns the number of significand bits stored in Float. The implicit bit is // not counted since it is not stored. -template constexpr int num_significand_bits() { +template constexpr auto num_significand_bits() -> int { // std::numeric_limits may not support __float128. return is_float128() ? 112 : (std::numeric_limits::digits - @@ -1698,7 +1730,7 @@ using fp = basic_fp; // Normalizes the value converted from double and multiplied by (1 << SHIFT). template -FMT_CONSTEXPR basic_fp normalize(basic_fp value) { +FMT_CONSTEXPR auto normalize(basic_fp value) -> basic_fp { // Handle subnormals. const auto implicit_bit = F(1) << num_significand_bits(); const auto shifted_implicit_bit = implicit_bit << SHIFT; @@ -1715,7 +1747,7 @@ FMT_CONSTEXPR basic_fp normalize(basic_fp value) { } // Computes lhs * rhs / pow(2, 64) rounded to nearest with half-up tie breaking. -FMT_CONSTEXPR inline uint64_t multiply(uint64_t lhs, uint64_t rhs) { +FMT_CONSTEXPR inline auto multiply(uint64_t lhs, uint64_t rhs) -> uint64_t { #if FMT_USE_INT128 auto product = static_cast<__uint128_t>(lhs) * rhs; auto f = static_cast(product >> 64); @@ -1732,33 +1764,10 @@ FMT_CONSTEXPR inline uint64_t multiply(uint64_t lhs, uint64_t rhs) { #endif } -FMT_CONSTEXPR inline fp operator*(fp x, fp y) { +FMT_CONSTEXPR inline auto operator*(fp x, fp y) -> fp { return {multiply(x.f, y.f), x.e + y.e + 64}; } -template struct basic_data { - // For checking rounding thresholds. - // The kth entry is chosen to be the smallest integer such that the - // upper 32-bits of 10^(k+1) times it is strictly bigger than 5 * 10^k. - static constexpr uint32_t fractional_part_rounding_thresholds[8] = { - 2576980378U, // ceil(2^31 + 2^32/10^1) - 2190433321U, // ceil(2^31 + 2^32/10^2) - 2151778616U, // ceil(2^31 + 2^32/10^3) - 2147913145U, // ceil(2^31 + 2^32/10^4) - 2147526598U, // ceil(2^31 + 2^32/10^5) - 2147487943U, // ceil(2^31 + 2^32/10^6) - 2147484078U, // ceil(2^31 + 2^32/10^7) - 2147483691U // ceil(2^31 + 2^32/10^8) - }; -}; -// This is a struct rather than an alias to avoid shadowing warnings in gcc. -struct data : basic_data<> {}; - -#if FMT_CPLUSPLUS < 201703L -template -constexpr uint32_t basic_data::fractional_part_rounding_thresholds[]; -#endif - template () == num_bits()> using convert_float_result = conditional_t::value || doublish, double, T>; @@ -1939,15 +1948,11 @@ auto write_escaped_cp(OutputIt out, const find_escape_result& escape) *out++ = static_cast('\\'); break; default: - if (escape.cp < 0x100) { - return write_codepoint<2, Char>(out, 'x', escape.cp); - } - if (escape.cp < 0x10000) { + if (escape.cp < 0x100) return write_codepoint<2, Char>(out, 'x', escape.cp); + if (escape.cp < 0x10000) return write_codepoint<4, Char>(out, 'u', escape.cp); - } - if (escape.cp < 0x110000) { + if (escape.cp < 0x110000) return write_codepoint<8, Char>(out, 'U', escape.cp); - } for (Char escape_char : basic_string_view( escape.begin, to_unsigned(escape.end - escape.begin))) { out = write_codepoint<2, Char>(out, 'x', @@ -1977,11 +1982,13 @@ auto write_escaped_string(OutputIt out, basic_string_view str) template auto write_escaped_char(OutputIt out, Char v) -> OutputIt { + Char v_array[1] = {v}; *out++ = static_cast('\''); if ((needs_escape(static_cast(v)) && v != static_cast('"')) || v == static_cast('\'')) { - out = write_escaped_cp( - out, find_escape_result{&v, &v + 1, static_cast(v)}); + out = write_escaped_cp(out, + find_escape_result{v_array, v_array + 1, + static_cast(v)}); } else { *out++ = v; } @@ -2070,10 +2077,10 @@ template class digit_grouping { std::string::const_iterator group; int pos; }; - next_state initial_state() const { return {grouping_.begin(), 0}; } + auto initial_state() const -> next_state { return {grouping_.begin(), 0}; } // Returns the next digit group separator position. - int next(next_state& state) const { + auto next(next_state& state) const -> int { if (thousands_sep_.empty()) return max_value(); if (state.group == grouping_.end()) return state.pos += grouping_.back(); if (*state.group <= 0 || *state.group == max_value()) @@ -2092,9 +2099,9 @@ template class digit_grouping { digit_grouping(std::string grouping, std::basic_string sep) : grouping_(std::move(grouping)), thousands_sep_(std::move(sep)) {} - bool has_separator() const { return !thousands_sep_.empty(); } + auto has_separator() const -> bool { return !thousands_sep_.empty(); } - int count_separators(int num_digits) const { + auto count_separators(int num_digits) const -> int { int count = 0; auto state = initial_state(); while (num_digits > next(state)) ++count; @@ -2103,7 +2110,7 @@ template class digit_grouping { // Applies grouping to digits and write the output to out. template - Out apply(Out out, basic_string_view digits) const { + auto apply(Out out, basic_string_view digits) const -> Out { auto num_digits = static_cast(digits.size()); auto separators = basic_memory_buffer(); separators.push_back(0); @@ -2126,24 +2133,66 @@ template class digit_grouping { } }; +FMT_CONSTEXPR inline void prefix_append(unsigned& prefix, unsigned value) { + prefix |= prefix != 0 ? value << 8 : value; + prefix += (1u + (value > 0xff ? 1 : 0)) << 24; +} + // Writes a decimal integer with digit grouping. template auto write_int(OutputIt out, UInt value, unsigned prefix, const format_specs& specs, const digit_grouping& grouping) -> OutputIt { static_assert(std::is_same, UInt>::value, ""); - int num_digits = count_digits(value); - char digits[40]; - format_decimal(digits, value, num_digits); - unsigned size = to_unsigned((prefix != 0 ? 1 : 0) + num_digits + - grouping.count_separators(num_digits)); + int num_digits = 0; + auto buffer = memory_buffer(); + switch (specs.type) { + case presentation_type::none: + case presentation_type::dec: { + num_digits = count_digits(value); + format_decimal(appender(buffer), value, num_digits); + break; + } + case presentation_type::hex_lower: + case presentation_type::hex_upper: { + bool upper = specs.type == presentation_type::hex_upper; + if (specs.alt) + prefix_append(prefix, unsigned(upper ? 'X' : 'x') << 8 | '0'); + num_digits = count_digits<4>(value); + format_uint<4, char>(appender(buffer), value, num_digits, upper); + break; + } + case presentation_type::bin_lower: + case presentation_type::bin_upper: { + bool upper = specs.type == presentation_type::bin_upper; + if (specs.alt) + prefix_append(prefix, unsigned(upper ? 'B' : 'b') << 8 | '0'); + num_digits = count_digits<1>(value); + format_uint<1, char>(appender(buffer), value, num_digits); + break; + } + case presentation_type::oct: { + num_digits = count_digits<3>(value); + // Octal prefix '0' is counted as a digit, so only add it if precision + // is not greater than the number of digits. + if (specs.alt && specs.precision <= num_digits && value != 0) + prefix_append(prefix, '0'); + format_uint<3, char>(appender(buffer), value, num_digits); + break; + } + case presentation_type::chr: + return write_char(out, static_cast(value), specs); + default: + throw_format_error("invalid format specifier"); + } + + unsigned size = (prefix != 0 ? prefix >> 24 : 0) + to_unsigned(num_digits) + + to_unsigned(grouping.count_separators(num_digits)); return write_padded( out, specs, size, size, [&](reserve_iterator it) { - if (prefix != 0) { - char sign = static_cast(prefix); - *it++ = static_cast(sign); - } - return grouping.apply(it, string_view(digits, to_unsigned(num_digits))); + for (unsigned p = prefix & 0xffffff; p != 0; p >>= 8) + *it++ = static_cast(p & 0xff); + return grouping.apply(it, string_view(buffer.data(), buffer.size())); }); } @@ -2156,11 +2205,6 @@ inline auto write_loc(OutputIt, loc_value, const format_specs&, return false; } -FMT_CONSTEXPR inline void prefix_append(unsigned& prefix, unsigned value) { - prefix |= prefix != 0 ? value << 8 : value; - prefix += (1u + (value > 0xff ? 1 : 0)) << 24; -} - template struct write_int_arg { UInt abs_value; unsigned prefix; @@ -2307,25 +2351,25 @@ class counting_iterator { FMT_CONSTEXPR counting_iterator() : count_(0) {} - FMT_CONSTEXPR size_t count() const { return count_; } + FMT_CONSTEXPR auto count() const -> size_t { return count_; } - FMT_CONSTEXPR counting_iterator& operator++() { + FMT_CONSTEXPR auto operator++() -> counting_iterator& { ++count_; return *this; } - FMT_CONSTEXPR counting_iterator operator++(int) { + FMT_CONSTEXPR auto operator++(int) -> counting_iterator { auto it = *this; ++*this; return it; } - FMT_CONSTEXPR friend counting_iterator operator+(counting_iterator it, - difference_type n) { + FMT_CONSTEXPR friend auto operator+(counting_iterator it, difference_type n) + -> counting_iterator { it.count_ += static_cast(n); return it; } - FMT_CONSTEXPR value_type operator*() const { return {}; } + FMT_CONSTEXPR auto operator*() const -> value_type { return {}; } }; template @@ -2360,9 +2404,10 @@ template FMT_CONSTEXPR auto write(OutputIt out, const Char* s, const format_specs& specs, locale_ref) -> OutputIt { - return specs.type != presentation_type::pointer - ? write(out, basic_string_view(s), specs, {}) - : write_ptr(out, bit_cast(s), &specs); + if (specs.type == presentation_type::pointer) + return write_ptr(out, bit_cast(s), &specs); + if (!s) throw_format_error("string pointer is null"); + return write(out, basic_string_view(s), specs, {}); } template -FMT_CONSTEXPR auto parse_float_type_spec(const format_specs& specs, - ErrorHandler&& eh = {}) +template +FMT_CONSTEXPR auto parse_float_type_spec(const format_specs& specs) -> float_specs { auto result = float_specs(); result.showpoint = specs.alt; @@ -2486,7 +2530,7 @@ FMT_CONSTEXPR auto parse_float_type_spec(const format_specs& specs, result.format = float_format::hex; break; default: - eh.on_error("invalid format specifier"); + throw_format_error("invalid format specifier"); break; } return result; @@ -2725,12 +2769,12 @@ template class fallback_digit_grouping { public: constexpr fallback_digit_grouping(locale_ref, bool) {} - constexpr bool has_separator() const { return false; } + constexpr auto has_separator() const -> bool { return false; } - constexpr int count_separators(int) const { return 0; } + constexpr auto count_separators(int) const -> int { return 0; } template - constexpr Out apply(Out out, basic_string_view) const { + constexpr auto apply(Out out, basic_string_view) const -> Out { return out; } }; @@ -2749,7 +2793,7 @@ FMT_CONSTEXPR20 auto write_float(OutputIt out, const DecimalFP& f, } } -template constexpr bool isnan(T value) { +template constexpr auto isnan(T value) -> bool { return !(value >= value); // std::isnan doesn't support __float128. } @@ -2762,14 +2806,14 @@ struct has_isfinite> template ::value&& has_isfinite::value)> -FMT_CONSTEXPR20 bool isfinite(T value) { +FMT_CONSTEXPR20 auto isfinite(T value) -> bool { constexpr T inf = T(std::numeric_limits::infinity()); if (is_constant_evaluated()) return !detail::isnan(value) && value < inf && value > -inf; return std::isfinite(value); } template ::value)> -FMT_CONSTEXPR bool isfinite(T value) { +FMT_CONSTEXPR auto isfinite(T value) -> bool { T inf = T(std::numeric_limits::infinity()); // std::isfinite doesn't support __float128. return !detail::isnan(value) && value < inf && value > -inf; @@ -2806,10 +2850,10 @@ class bigint { basic_memory_buffer bigits_; int exp_; - FMT_CONSTEXPR20 bigit operator[](int index) const { + FMT_CONSTEXPR20 auto operator[](int index) const -> bigit { return bigits_[to_unsigned(index)]; } - FMT_CONSTEXPR20 bigit& operator[](int index) { + FMT_CONSTEXPR20 auto operator[](int index) -> bigit& { return bigits_[to_unsigned(index)]; } @@ -2905,11 +2949,11 @@ class bigint { assign(uint64_or_128_t(n)); } - FMT_CONSTEXPR20 int num_bigits() const { + FMT_CONSTEXPR20 auto num_bigits() const -> int { return static_cast(bigits_.size()) + exp_; } - FMT_NOINLINE FMT_CONSTEXPR20 bigint& operator<<=(int shift) { + FMT_NOINLINE FMT_CONSTEXPR20 auto operator<<=(int shift) -> bigint& { FMT_ASSERT(shift >= 0, ""); exp_ += shift / bigit_bits; shift %= bigit_bits; @@ -2924,13 +2968,15 @@ class bigint { return *this; } - template FMT_CONSTEXPR20 bigint& operator*=(Int value) { + template + FMT_CONSTEXPR20 auto operator*=(Int value) -> bigint& { FMT_ASSERT(value > 0, ""); multiply(uint32_or_64_or_128_t(value)); return *this; } - friend FMT_CONSTEXPR20 int compare(const bigint& lhs, const bigint& rhs) { + friend FMT_CONSTEXPR20 auto compare(const bigint& lhs, const bigint& rhs) + -> int { 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; @@ -2947,8 +2993,9 @@ class bigint { } // Returns compare(lhs1 + lhs2, rhs). - friend FMT_CONSTEXPR20 int add_compare(const bigint& lhs1, const bigint& lhs2, - const bigint& rhs) { + friend FMT_CONSTEXPR20 auto add_compare(const bigint& lhs1, + const bigint& lhs2, const bigint& rhs) + -> int { auto minimum = [](int a, int b) { return a < b ? a : b; }; auto maximum = [](int a, int b) { return a > b ? a : b; }; int max_lhs_bigits = maximum(lhs1.num_bigits(), lhs2.num_bigits()); @@ -3029,13 +3076,13 @@ class bigint { 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); + std::uninitialized_fill_n(bigits_.data(), exp_difference, 0u); exp_ -= exp_difference; } // Divides this bignum by divisor, assigning the remainder to this and // returning the quotient. - FMT_CONSTEXPR20 int divmod_assign(const bigint& divisor) { + FMT_CONSTEXPR20 auto divmod_assign(const bigint& divisor) -> int { FMT_ASSERT(this != &divisor, ""); if (compare(*this, divisor) < 0) return 0; FMT_ASSERT(divisor.bigits_[divisor.bigits_.size() - 1u] != 0, ""); @@ -3178,8 +3225,10 @@ FMT_CONSTEXPR20 inline void format_dragon(basic_fp value, } if (buf[0] == overflow) { buf[0] = '1'; - if ((flags & dragon::fixed) != 0) buf.push_back('0'); - else ++exp10; + if ((flags & dragon::fixed) != 0) + buf.push_back('0'); + else + ++exp10; } return; } @@ -3276,6 +3325,17 @@ FMT_CONSTEXPR20 void format_hexfloat(Float value, int precision, format_hexfloat(static_cast(value), precision, specs, buf); } +constexpr auto fractional_part_rounding_thresholds(int index) -> uint32_t { + // For checking rounding thresholds. + // The kth entry is chosen to be the smallest integer such that the + // upper 32-bits of 10^(k+1) times it is strictly bigger than 5 * 10^k. + // It is equal to ceil(2^31 + 2^32/10^(k + 1)). + // These are stored in a string literal because we cannot have static arrays + // in constexpr functions and non-static ones are poorly optimized. + return U"\x9999999a\x828f5c29\x80418938\x80068db9\x8000a7c6\x800010c7" + U"\x800001ae\x8000002b"[index]; +} + template FMT_CONSTEXPR20 auto format_float(Float value, int precision, float_specs specs, buffer& buf) -> int { @@ -3480,12 +3540,12 @@ FMT_CONSTEXPR20 auto format_float(Float value, int precision, float_specs specs, // fractional part is strictly larger than 1/2. if (precision < 9) { uint32_t fractional_part = static_cast(prod); - should_round_up = fractional_part >= - data::fractional_part_rounding_thresholds - [8 - number_of_digits_to_print] || - ((fractional_part >> 31) & - ((digits & 1) | (second_third_subsegments != 0) | - has_more_segments)) != 0; + should_round_up = + fractional_part >= fractional_part_rounding_thresholds( + 8 - number_of_digits_to_print) || + ((fractional_part >> 31) & + ((digits & 1) | (second_third_subsegments != 0) | + has_more_segments)) != 0; } // Rounding at the subsegment boundary. // In this case, the fractional part is at least 1/2 if and only if @@ -3520,12 +3580,12 @@ FMT_CONSTEXPR20 auto format_float(Float value, int precision, float_specs specs, // of 19 digits, so in this case the third segment should be // consisting of a genuine digit from the input. uint32_t fractional_part = static_cast(prod); - should_round_up = fractional_part >= - data::fractional_part_rounding_thresholds - [8 - number_of_digits_to_print] || - ((fractional_part >> 31) & - ((digits & 1) | (third_subsegment != 0) | - has_more_segments)) != 0; + should_round_up = + fractional_part >= fractional_part_rounding_thresholds( + 8 - number_of_digits_to_print) || + ((fractional_part >> 31) & + ((digits & 1) | (third_subsegment != 0) | + has_more_segments)) != 0; } // Rounding at the subsegment boundary. else { @@ -3726,8 +3786,7 @@ FMT_CONSTEXPR auto write(OutputIt out, Char value) -> OutputIt { } template -FMT_CONSTEXPR_CHAR_TRAITS auto write(OutputIt out, const Char* value) - -> OutputIt { +FMT_CONSTEXPR20 auto write(OutputIt out, const Char* value) -> OutputIt { if (value) return write(out, basic_string_view(value)); throw_format_error("string pointer is null"); return out; @@ -3757,8 +3816,11 @@ template enable_if_t::value == type::custom_type, OutputIt> { + auto formatter = typename Context::template formatter_type(); + auto parse_ctx = typename Context::parse_context_type({}); + formatter.parse(parse_ctx); auto ctx = Context(out, {}, {}); - return typename Context::template formatter_type().format(value, ctx); + return formatter.format(value, ctx); } // An argument visitor that formats the argument and writes it via the output @@ -3801,62 +3863,39 @@ template struct arg_formatter { } }; -template struct custom_formatter { - basic_format_parse_context& parse_ctx; - buffer_context& ctx; - - void operator()( - typename basic_format_arg>::handle h) const { - h.format(parse_ctx, ctx); - } - template void operator()(T) const {} -}; - -template class width_checker { - public: - explicit FMT_CONSTEXPR width_checker(ErrorHandler& eh) : handler_(eh) {} - +struct width_checker { template ::value)> FMT_CONSTEXPR auto operator()(T value) -> unsigned long long { - if (is_negative(value)) handler_.on_error("negative width"); + if (is_negative(value)) throw_format_error("negative width"); return static_cast(value); } template ::value)> FMT_CONSTEXPR auto operator()(T) -> unsigned long long { - handler_.on_error("width is not integer"); + throw_format_error("width is not integer"); return 0; } - - private: - ErrorHandler& handler_; }; -template class precision_checker { - public: - explicit FMT_CONSTEXPR precision_checker(ErrorHandler& eh) : handler_(eh) {} - +struct precision_checker { template ::value)> FMT_CONSTEXPR auto operator()(T value) -> unsigned long long { - if (is_negative(value)) handler_.on_error("negative precision"); + if (is_negative(value)) throw_format_error("negative precision"); return static_cast(value); } template ::value)> FMT_CONSTEXPR auto operator()(T) -> unsigned long long { - handler_.on_error("precision is not integer"); + throw_format_error("precision is not integer"); return 0; } - - private: - ErrorHandler& handler_; }; -template